diff --git a/COPYRIGHT b/COPYRIGHT index 01b6e3601e..c320eccac0 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -1,7 +1,7 @@ PostgreSQL Database Management System (formerly known as Postgres, then as Postgres95) -Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group +Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group Portions Copyright (c) 1994, The Regents of the University of California diff --git a/HISTORY b/HISTORY index dcfd713c15..18d7b1b724 100644 --- a/HISTORY +++ b/HISTORY @@ -1,5 +1,5 @@ Release notes for all versions of PostgreSQL can be found on-line at -http://www.postgresql.org/docs/current/static/release.html +https://www.postgresql.org/docs/current/static/release.html Distribution file sets include release notes for their version and preceding versions. Visit the file doc/src/sgml/html/release.html in an HTML browser. diff --git a/Makefile b/Makefile index 72e9c83733..4c68950e90 100644 --- a/Makefile +++ b/Makefile @@ -29,6 +29,7 @@ all check install installdirs installcheck installcheck-parallel uninstall clean \ if [ x"$${GMAKE+set}" = xset ]; then \ echo "Using GNU make found at $${GMAKE}"; \ + unset MAKEFLAGS; unset MAKELEVEL; \ $${GMAKE} $@ ; \ else \ echo "You must use GNU make to build PostgreSQL." ; \ diff --git a/README b/README index 302028e992..12de3f1d73 100644 --- a/README +++ b/README @@ -11,7 +11,7 @@ and functions. This distribution also contains C language bindings. PostgreSQL has many language interfaces, many of which are listed here: - http://www.postgresql.org/download + https://www.postgresql.org/download See the file INSTALL for instructions on how to build and install PostgreSQL. That file also lists supported operating systems and @@ -23,5 +23,5 @@ distribution; it can be read as described in the installation instructions. The latest version of this software may be obtained at -http://www.postgresql.org/download/. For more information look at our -web site located at http://www.postgresql.org/. +https://www.postgresql.org/download/. For more information look at our +web site located at https://www.postgresql.org/. diff --git a/README.git b/README.git index 0bf2b56cb3..52cb7223df 100644 --- a/README.git +++ b/README.git @@ -6,7 +6,7 @@ git and so will not be present if you are using a git checkout. If you are using a git checkout, you can view the most recent installation instructions at: - http://www.postgresql.org/docs/devel/static/installation.html + https://www.postgresql.org/docs/devel/static/installation.html Users compiling from git will also need compatible versions of Bison, Flex, and Perl, as discussed in the install documentation. These programs are not diff --git a/config/perl.m4 b/config/perl.m4 index bed2eae57f..fbb13ed1c0 100644 --- a/config/perl.m4 +++ b/config/perl.m4 @@ -49,6 +49,33 @@ AC_DEFUN([PGAC_CHECK_PERL_CONFIGS], [m4_foreach([pgac_item], [$1], [PGAC_CHECK_PERL_CONFIG(pgac_item)])]) +# PGAC_CHECK_PERL_EMBED_CCFLAGS +# ----------------------------- +# We selectively extract stuff from $Config{ccflags}. We don't really need +# anything except -D switches, and other sorts of compiler switches can +# actively break things if Perl was compiled with a different compiler. +# Moreover, although Perl likes to put stuff like -D_LARGEFILE_SOURCE and +# -D_FILE_OFFSET_BITS=64 here, it would be fatal to try to compile PL/Perl +# to a different libc ABI than core Postgres uses. The available information +# says that all the symbols that affect Perl's own ABI begin with letters, +# so it should be sufficient to adopt -D switches for symbols not beginning +# with underscore. An exception is that we need to let through +# -D_USE_32BIT_TIME_T if it's present. (We probably could restrict that to +# only get through on Windows, but for the moment we let it through always.) +# For debugging purposes, let's have the configure output report the raw +# ccflags value as well as the set of flags we chose to adopt. +AC_DEFUN([PGAC_CHECK_PERL_EMBED_CCFLAGS], +[AC_REQUIRE([PGAC_PATH_PERL]) +AC_MSG_CHECKING([for CFLAGS recommended by Perl]) +perl_ccflags=`$PERL -MConfig -e ['print $Config{ccflags}']` +AC_MSG_RESULT([$perl_ccflags]) +AC_MSG_CHECKING([for CFLAGS to compile embedded Perl]) +perl_embed_ccflags=`$PERL -MConfig -e ['foreach $f (split(" ",$Config{ccflags})) {print $f, " " if ($f =~ /^-D[^_]/ || $f =~ /^-D_USE_32BIT_TIME_T/)}']` +AC_SUBST(perl_embed_ccflags)dnl +AC_MSG_RESULT([$perl_embed_ccflags]) +])# PGAC_CHECK_PERL_EMBED_CCFLAGS + + # PGAC_CHECK_PERL_EMBED_LDFLAGS # ----------------------------- # We are after Embed's ldopts, but without the subset mentioned in diff --git a/configure b/configure index 2c168f3ee8..2ed820f3ac 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for PostgreSQL 9.6.0. +# Generated by GNU Autoconf 2.69 for PostgreSQL 9.6.5. # # Report bugs to . # @@ -582,8 +582,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='PostgreSQL' PACKAGE_TARNAME='postgresql' -PACKAGE_VERSION='9.6.0' -PACKAGE_STRING='PostgreSQL 9.6.0' +PACKAGE_VERSION='9.6.5' +PACKAGE_STRING='PostgreSQL 9.6.5' PACKAGE_BUGREPORT='pgsql-bugs@postgresql.org' PACKAGE_URL='' @@ -670,6 +670,7 @@ python_version python_majorversion PYTHON perl_embed_ldflags +perl_embed_ccflags perl_useshrplib perl_privlibexp perl_archlibexp @@ -1398,7 +1399,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures PostgreSQL 9.6.0 to adapt to many kinds of systems. +\`configure' configures PostgreSQL 9.6.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1463,7 +1464,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of PostgreSQL 9.6.0:";; + short | recursive ) echo "Configuration of PostgreSQL 9.6.5:";; esac cat <<\_ACEOF @@ -1615,7 +1616,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -PostgreSQL configure 9.6.0 +PostgreSQL configure 9.6.5 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2326,7 +2327,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by PostgreSQL $as_me 9.6.0, which was +It was created by PostgreSQL $as_me 9.6.5, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -7094,7 +7095,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' # When Autoconf chooses install-sh as install program it tries to generate -# a relative path to it in each makefile where it subsitutes it. This clashes +# a relative path to it in each makefile where it substitutes it. This clashes # with our Makefile.global concept. This workaround helps. case $INSTALL in *install-sh*) install_bin='';; @@ -7238,7 +7239,7 @@ fi $as_echo "$MKDIR_P" >&6; } # When Autoconf chooses install-sh as mkdir -p program it tries to generate -# a relative path to it in each makefile where it subsitutes it. This clashes +# a relative path to it in each makefile where it substitutes it. This clashes # with our Makefile.global concept. This workaround helps. case $MKDIR_P in *install-sh*) MKDIR_P='\${SHELL} \${top_srcdir}/config/install-sh -c -d';; @@ -7511,6 +7512,18 @@ documentation for details. Use --without-perl to disable building PL/Perl." "$LINENO" 5 fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLAGS recommended by Perl" >&5 +$as_echo_n "checking for CFLAGS recommended by Perl... " >&6; } +perl_ccflags=`$PERL -MConfig -e 'print $Config{ccflags}'` +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $perl_ccflags" >&5 +$as_echo "$perl_ccflags" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLAGS to compile embedded Perl" >&5 +$as_echo_n "checking for CFLAGS to compile embedded Perl... " >&6; } +perl_embed_ccflags=`$PERL -MConfig -e 'foreach $f (split(" ",$Config{ccflags})) {print $f, " " if ($f =~ /^-D[^_]/ || $f =~ /^-D_USE_32BIT_TIME_T/)}'` +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $perl_embed_ccflags" >&5 +$as_echo "$perl_embed_ccflags" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for flags to link embedded Perl" >&5 $as_echo_n "checking for flags to link embedded Perl... " >&6; } if test "$PORTNAME" = "win32" ; then @@ -12504,7 +12517,7 @@ fi LIBS_including_readline="$LIBS" LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'` -for ac_func in cbrt dlopen fdatasync getifaddrs getpeerucred getrlimit mbstowcs_l memmove poll pstat pthread_is_threaded_np readlink setproctitle setsid shm_open symlink sync_file_range towlower utime utimes wcstombs wcstombs_l +for ac_func in cbrt dlopen fdatasync getifaddrs getpeerucred getrlimit mbstowcs_l memmove poll posix_fallocate pstat pthread_is_threaded_np readlink setproctitle setsid shm_open symlink sync_file_range towlower utime utimes wcstombs wcstombs_l do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -13713,24 +13726,6 @@ cat >>confdefs.h <<_ACEOF _ACEOF - -if test x"$HAVE_LONG_LONG_INT_64" = xyes ; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define INT64CONST(x) x##LL -long long int foo = INT64CONST(0x1234567890123456); - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HAVE_LL_CONSTANTS 1" >>confdefs.h - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - - # If we found "long int" is 64 bits, assume snprintf handles it. If # we found we need to use "long long int", better check. We cope with # snprintfs that use %lld, %qd, or %I64d as the format. If none of these @@ -16464,7 +16459,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by PostgreSQL $as_me 9.6.0, which was +This file was extended by PostgreSQL $as_me 9.6.5, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -16534,7 +16529,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -PostgreSQL config.status 9.6.0 +PostgreSQL config.status 9.6.5 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.in b/configure.in index 7907c94fcf..60a767ef5a 100644 --- a/configure.in +++ b/configure.in @@ -17,7 +17,7 @@ dnl Read the Autoconf manual for details. dnl m4_pattern_forbid(^PGAC_)dnl to catch undefined macros -AC_INIT([PostgreSQL], [9.6.0], [pgsql-bugs@postgresql.org]) +AC_INIT([PostgreSQL], [9.6.5], [pgsql-bugs@postgresql.org]) m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.69], [], [m4_fatal([Autoconf version 2.69 is required. Untested combinations of 'autoconf' and PostgreSQL versions are not @@ -894,7 +894,7 @@ fi AC_PROG_INSTALL # When Autoconf chooses install-sh as install program it tries to generate -# a relative path to it in each makefile where it subsitutes it. This clashes +# a relative path to it in each makefile where it substitutes it. This clashes # with our Makefile.global concept. This workaround helps. case $INSTALL in *install-sh*) install_bin='';; @@ -907,7 +907,7 @@ AC_PROG_LN_S AC_PROG_AWK AC_PROG_MKDIR_P # When Autoconf chooses install-sh as mkdir -p program it tries to generate -# a relative path to it in each makefile where it subsitutes it. This clashes +# a relative path to it in each makefile where it substitutes it. This clashes # with our Makefile.global concept. This workaround helps. case $MKDIR_P in *install-sh*) MKDIR_P='\${SHELL} \${top_srcdir}/config/install-sh -c -d';; @@ -928,6 +928,7 @@ You might have to rebuild your Perl installation. Refer to the documentation for details. Use --without-perl to disable building PL/Perl.]) fi + PGAC_CHECK_PERL_EMBED_CCFLAGS PGAC_CHECK_PERL_EMBED_LDFLAGS fi @@ -1456,7 +1457,7 @@ PGAC_FUNC_WCSTOMBS_L LIBS_including_readline="$LIBS" LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'` -AC_CHECK_FUNCS([cbrt dlopen fdatasync getifaddrs getpeerucred getrlimit mbstowcs_l memmove poll pstat pthread_is_threaded_np readlink setproctitle setsid shm_open symlink sync_file_range towlower utime utimes wcstombs wcstombs_l]) +AC_CHECK_FUNCS([cbrt dlopen fdatasync getifaddrs getpeerucred getrlimit mbstowcs_l memmove poll posix_fallocate pstat pthread_is_threaded_np readlink setproctitle setsid shm_open symlink sync_file_range towlower utime utimes wcstombs wcstombs_l]) AC_REPLACE_FUNCS(fseeko) case $host_os in @@ -1750,18 +1751,6 @@ fi AC_DEFINE_UNQUOTED(PG_INT64_TYPE, $pg_int64_type, [Define to the name of a signed 64-bit integer type.]) -dnl If we need to use "long long int", figure out whether nnnLL notation works. - -if test x"$HAVE_LONG_LONG_INT_64" = xyes ; then - AC_COMPILE_IFELSE([AC_LANG_SOURCE([ -#define INT64CONST(x) x##LL -long long int foo = INT64CONST(0x1234567890123456); -])], - [AC_DEFINE(HAVE_LL_CONSTANTS, 1, [Define to 1 if constants of type 'long long int' should have the suffix LL.])], - []) -fi - - # If we found "long int" is 64 bits, assume snprintf handles it. If # we found we need to use "long long int", better check. We cope with # snprintfs that use %lld, %qd, or %I64d as the format. If none of these diff --git a/contrib/adminpack/adminpack.c b/contrib/adminpack/adminpack.c index ea781a0a5a..67b4a47f4a 100644 --- a/contrib/adminpack/adminpack.c +++ b/contrib/adminpack/adminpack.c @@ -136,10 +136,10 @@ pg_file_write(PG_FUNCTION_ARGS) (ERRCODE_DUPLICATE_FILE, errmsg("file \"%s\" exists", filename))); - f = fopen(filename, "wb"); + f = AllocateFile(filename, "wb"); } else - f = fopen(filename, "ab"); + f = AllocateFile(filename, "ab"); if (!f) ereport(ERROR, @@ -147,16 +147,11 @@ pg_file_write(PG_FUNCTION_ARGS) errmsg("could not open file \"%s\" for writing: %m", filename))); - if (VARSIZE(data) != 0) - { - count = fwrite(VARDATA(data), 1, VARSIZE(data) - VARHDRSZ, f); - - if (count != VARSIZE(data) - VARHDRSZ) - ereport(ERROR, - (errcode_for_file_access(), - errmsg("could not write file \"%s\": %m", filename))); - } - fclose(f); + count = fwrite(VARDATA(data), 1, VARSIZE(data) - VARHDRSZ, f); + if (count != VARSIZE(data) - VARHDRSZ || FreeFile(f)) + ereport(ERROR, + (errcode_for_file_access(), + errmsg("could not write file \"%s\": %m", filename))); PG_RETURN_INT64(count); } diff --git a/contrib/bloom/blinsert.c b/contrib/bloom/blinsert.c index 0946aa29ec..a31149f044 100644 --- a/contrib/bloom/blinsert.c +++ b/contrib/bloom/blinsert.c @@ -164,13 +164,18 @@ blbuildempty(Relation index) metapage = (Page) palloc(BLCKSZ); BloomFillMetapage(index, metapage); - /* Write the page. If archiving/streaming, XLOG it. */ + /* + * Write the page and log it. It might seem that an immediate sync + * would be sufficient to guarantee that the file exists on disk, but + * recovery itself might remove it while replaying, for example, an + * XLOG_DBASE_CREATE or XLOG_TBLSPC_CREATE record. Therefore, we + * need this even when wal_level=minimal. + */ PageSetChecksumInplace(metapage, BLOOM_METAPAGE_BLKNO); smgrwrite(index->rd_smgr, INIT_FORKNUM, BLOOM_METAPAGE_BLKNO, (char *) metapage, true); - if (XLogIsNeeded()) - log_newpage(&index->rd_smgr->smgr_rnode.node, INIT_FORKNUM, - BLOOM_METAPAGE_BLKNO, metapage, false); + log_newpage(&index->rd_smgr->smgr_rnode.node, INIT_FORKNUM, + BLOOM_METAPAGE_BLKNO, metapage, false); /* * An immediate sync is required even if we xlog'd the page, because the diff --git a/contrib/bloom/blvacuum.c b/contrib/bloom/blvacuum.c index 482242f1c2..1ed4cb28b6 100644 --- a/contrib/bloom/blvacuum.c +++ b/contrib/bloom/blvacuum.c @@ -51,7 +51,7 @@ blbulkdelete(IndexVacuumInfo *info, IndexBulkDeleteResult *stats, initBloomState(&state, index); /* - * Interate over the pages. We don't care about concurrently added pages, + * Iterate over the pages. We don't care about concurrently added pages, * they can't contain tuples to delete. */ npages = RelationGetNumberOfBlocks(index); diff --git a/contrib/cube/expected/cube.out b/contrib/cube/expected/cube.out index e9e2c0f15b..9ac2a71295 100644 --- a/contrib/cube/expected/cube.out +++ b/contrib/cube/expected/cube.out @@ -1019,7 +1019,7 @@ SELECT cube_dim('(4,8,15,16,23),(4,8,15,16,23)'::cube); 5 (1 row) --- Test of cube_ll_coord function (retrieves LL coodinate values) +-- Test of cube_ll_coord function (retrieves LL coordinate values) -- SELECT cube_ll_coord('(-1,1),(2,-2)'::cube, 1); cube_ll_coord @@ -1075,7 +1075,7 @@ SELECT cube_ll_coord('(42,137)'::cube, 3); 0 (1 row) --- Test of cube_ur_coord function (retrieves UR coodinate values) +-- Test of cube_ur_coord function (retrieves UR coordinate values) -- SELECT cube_ur_coord('(-1,1),(2,-2)'::cube, 1); cube_ur_coord diff --git a/contrib/cube/expected/cube_1.out b/contrib/cube/expected/cube_1.out index c40fabcd46..194c3e693f 100644 --- a/contrib/cube/expected/cube_1.out +++ b/contrib/cube/expected/cube_1.out @@ -1019,7 +1019,7 @@ SELECT cube_dim('(4,8,15,16,23),(4,8,15,16,23)'::cube); 5 (1 row) --- Test of cube_ll_coord function (retrieves LL coodinate values) +-- Test of cube_ll_coord function (retrieves LL coordinate values) -- SELECT cube_ll_coord('(-1,1),(2,-2)'::cube, 1); cube_ll_coord @@ -1075,7 +1075,7 @@ SELECT cube_ll_coord('(42,137)'::cube, 3); 0 (1 row) --- Test of cube_ur_coord function (retrieves UR coodinate values) +-- Test of cube_ur_coord function (retrieves UR coordinate values) -- SELECT cube_ur_coord('(-1,1),(2,-2)'::cube, 1); cube_ur_coord diff --git a/contrib/cube/expected/cube_2.out b/contrib/cube/expected/cube_2.out index fef749c698..680a46b789 100644 --- a/contrib/cube/expected/cube_2.out +++ b/contrib/cube/expected/cube_2.out @@ -1019,7 +1019,7 @@ SELECT cube_dim('(4,8,15,16,23),(4,8,15,16,23)'::cube); 5 (1 row) --- Test of cube_ll_coord function (retrieves LL coodinate values) +-- Test of cube_ll_coord function (retrieves LL coordinate values) -- SELECT cube_ll_coord('(-1,1),(2,-2)'::cube, 1); cube_ll_coord @@ -1075,7 +1075,7 @@ SELECT cube_ll_coord('(42,137)'::cube, 3); 0 (1 row) --- Test of cube_ur_coord function (retrieves UR coodinate values) +-- Test of cube_ur_coord function (retrieves UR coordinate values) -- SELECT cube_ur_coord('(-1,1),(2,-2)'::cube, 1); cube_ur_coord diff --git a/contrib/cube/expected/cube_3.out b/contrib/cube/expected/cube_3.out index 31d2d1a64e..8ad92221ad 100644 --- a/contrib/cube/expected/cube_3.out +++ b/contrib/cube/expected/cube_3.out @@ -1019,7 +1019,7 @@ SELECT cube_dim('(4,8,15,16,23),(4,8,15,16,23)'::cube); 5 (1 row) --- Test of cube_ll_coord function (retrieves LL coodinate values) +-- Test of cube_ll_coord function (retrieves LL coordinate values) -- SELECT cube_ll_coord('(-1,1),(2,-2)'::cube, 1); cube_ll_coord @@ -1075,7 +1075,7 @@ SELECT cube_ll_coord('(42,137)'::cube, 3); 0 (1 row) --- Test of cube_ur_coord function (retrieves UR coodinate values) +-- Test of cube_ur_coord function (retrieves UR coordinate values) -- SELECT cube_ur_coord('(-1,1),(2,-2)'::cube, 1); cube_ur_coord diff --git a/contrib/cube/sql/cube.sql b/contrib/cube/sql/cube.sql index e225fb7da1..df5e1b286b 100644 --- a/contrib/cube/sql/cube.sql +++ b/contrib/cube/sql/cube.sql @@ -246,7 +246,7 @@ SELECT cube_dim('(0,0,0)'::cube); SELECT cube_dim('(42,42,42),(42,42,42)'::cube); SELECT cube_dim('(4,8,15,16,23),(4,8,15,16,23)'::cube); --- Test of cube_ll_coord function (retrieves LL coodinate values) +-- Test of cube_ll_coord function (retrieves LL coordinate values) -- SELECT cube_ll_coord('(-1,1),(2,-2)'::cube, 1); SELECT cube_ll_coord('(-1,1),(2,-2)'::cube, 2); @@ -258,7 +258,7 @@ SELECT cube_ll_coord('(42,137)'::cube, 1); SELECT cube_ll_coord('(42,137)'::cube, 2); SELECT cube_ll_coord('(42,137)'::cube, 3); --- Test of cube_ur_coord function (retrieves UR coodinate values) +-- Test of cube_ur_coord function (retrieves UR coordinate values) -- SELECT cube_ur_coord('(-1,1),(2,-2)'::cube, 1); SELECT cube_ur_coord('(-1,1),(2,-2)'::cube, 2); diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c index d4f9090f06..9528d33f48 100644 --- a/contrib/dblink/dblink.c +++ b/contrib/dblink/dblink.c @@ -40,6 +40,7 @@ #include "access/reloptions.h" #include "catalog/indexing.h" #include "catalog/namespace.h" +#include "catalog/pg_foreign_data_wrapper.h" #include "catalog/pg_foreign_server.h" #include "catalog/pg_type.h" #include "catalog/pg_user_mapping.h" @@ -112,7 +113,8 @@ static Relation get_rel_from_relname(text *relname_text, LOCKMODE lockmode, AclM static char *generate_relation_name(Relation rel); static void dblink_connstr_check(const char *connstr); static void dblink_security_check(PGconn *conn, remoteConn *rconn); -static void dblink_res_error(const char *conname, PGresult *res, const char *dblink_context_msg, bool fail); +static void dblink_res_error(PGconn *conn, const char *conname, PGresult *res, + const char *dblink_context_msg, bool fail); static char *get_connect_string(const char *servername); static char *escape_param_str(const char *from); static void validate_pkattnums(Relation rel, @@ -299,7 +301,11 @@ dblink_connect(PG_FUNCTION_ARGS) createNewConnection(connname, rconn); } else + { + if (pconn->conn) + PQfinish(pconn->conn); pconn->conn = conn; + } PG_RETURN_TEXT_P(cstring_to_text("OK")); } @@ -427,7 +433,7 @@ dblink_open(PG_FUNCTION_ARGS) res = PQexec(conn, buf.data); if (!res || PQresultStatus(res) != PGRES_COMMAND_OK) { - dblink_res_error(conname, res, "could not open cursor", fail); + dblink_res_error(conn, conname, res, "could not open cursor", fail); PG_RETURN_TEXT_P(cstring_to_text("ERROR")); } @@ -496,7 +502,7 @@ dblink_close(PG_FUNCTION_ARGS) res = PQexec(conn, buf.data); if (!res || PQresultStatus(res) != PGRES_COMMAND_OK) { - dblink_res_error(conname, res, "could not close cursor", fail); + dblink_res_error(conn, conname, res, "could not close cursor", fail); PG_RETURN_TEXT_P(cstring_to_text("ERROR")); } @@ -599,7 +605,8 @@ dblink_fetch(PG_FUNCTION_ARGS) (PQresultStatus(res) != PGRES_COMMAND_OK && PQresultStatus(res) != PGRES_TUPLES_OK)) { - dblink_res_error(conname, res, "could not fetch from cursor", fail); + dblink_res_error(conn, conname, res, + "could not fetch from cursor", fail); return (Datum) 0; } else if (PQresultStatus(res) == PGRES_COMMAND_OK) @@ -750,8 +757,8 @@ dblink_record_internal(FunctionCallInfo fcinfo, bool is_async) if (PQresultStatus(res) != PGRES_COMMAND_OK && PQresultStatus(res) != PGRES_TUPLES_OK) { - dblink_res_error(conname, res, "could not execute query", - fail); + dblink_res_error(conn, conname, res, + "could not execute query", fail); /* if fail isn't set, we'll return an empty query result */ } else @@ -996,7 +1003,8 @@ materializeQueryResult(FunctionCallInfo fcinfo, PGresult *res1 = res; res = NULL; - dblink_res_error(conname, res1, "could not execute query", fail); + dblink_res_error(conn, conname, res1, + "could not execute query", fail); /* if fail isn't set, we'll return an empty query result */ } else if (PQresultStatus(res) == PGRES_COMMAND_OK) @@ -1431,7 +1439,8 @@ dblink_exec(PG_FUNCTION_ARGS) (PQresultStatus(res) != PGRES_COMMAND_OK && PQresultStatus(res) != PGRES_TUPLES_OK)) { - dblink_res_error(conname, res, "could not execute command", fail); + dblink_res_error(conn, conname, res, + "could not execute command", fail); /* * and save a copy of the command status string to return as our @@ -2662,7 +2671,8 @@ dblink_connstr_check(const char *connstr) } static void -dblink_res_error(const char *conname, PGresult *res, const char *dblink_context_msg, bool fail) +dblink_res_error(PGconn *conn, const char *conname, PGresult *res, + const char *dblink_context_msg, bool fail) { int level; char *pg_diag_sqlstate = PQresultErrorField(res, PG_DIAG_SQLSTATE); @@ -2696,6 +2706,14 @@ dblink_res_error(const char *conname, PGresult *res, const char *dblink_context_ xpstrdup(message_hint, pg_diag_message_hint); xpstrdup(message_context, pg_diag_context); + /* + * If we don't get a message from the PGresult, try the PGconn. This + * is needed because for connection-level failures, PQexec may just + * return NULL, not a PGresult at all. + */ + if (message_primary == NULL) + message_primary = PQerrorMessage(conn); + if (res) PQclear(res); @@ -2705,7 +2723,7 @@ dblink_res_error(const char *conname, PGresult *res, const char *dblink_context_ ereport(level, (errcode(sqlstate), message_primary ? errmsg_internal("%s", message_primary) : - errmsg("unknown error"), + errmsg("could not obtain message string for remote error"), message_detail ? errdetail_internal("%s", message_detail) : 0, message_hint ? errhint("%s", message_hint) : 0, message_context ? errcontext("%s", message_context) : 0, @@ -2727,6 +2745,25 @@ get_connect_string(const char *servername) AclResult aclresult; char *srvname; + static const PQconninfoOption *options = NULL; + + /* + * Get list of valid libpq options. + * + * To avoid unnecessary work, we get the list once and use it throughout + * the lifetime of this backend process. We don't need to care about + * memory context issues, because PQconndefaults allocates with malloc. + */ + if (!options) + { + options = PQconndefaults(); + if (!options) /* assume reason for failure is OOM */ + ereport(ERROR, + (errcode(ERRCODE_FDW_OUT_OF_MEMORY), + errmsg("out of memory"), + errdetail("could not get libpq's default connection options"))); + } + /* first gather the server connstr options */ srvname = pstrdup(servername); truncate_identifier(srvname, strlen(srvname), false); @@ -2750,16 +2787,18 @@ get_connect_string(const char *servername) { DefElem *def = lfirst(cell); - appendStringInfo(buf, "%s='%s' ", def->defname, - escape_param_str(strVal(def->arg))); + if (is_valid_dblink_option(options, def->defname, ForeignDataWrapperRelationId)) + appendStringInfo(buf, "%s='%s' ", def->defname, + escape_param_str(strVal(def->arg))); } foreach(cell, foreign_server->options) { DefElem *def = lfirst(cell); - appendStringInfo(buf, "%s='%s' ", def->defname, - escape_param_str(strVal(def->arg))); + if (is_valid_dblink_option(options, def->defname, ForeignServerRelationId)) + appendStringInfo(buf, "%s='%s' ", def->defname, + escape_param_str(strVal(def->arg))); } foreach(cell, user_mapping->options) @@ -2767,8 +2806,9 @@ get_connect_string(const char *servername) DefElem *def = lfirst(cell); - appendStringInfo(buf, "%s='%s' ", def->defname, - escape_param_str(strVal(def->arg))); + if (is_valid_dblink_option(options, def->defname, UserMappingRelationId)) + appendStringInfo(buf, "%s='%s' ", def->defname, + escape_param_str(strVal(def->arg))); } return buf->data; diff --git a/contrib/earthdistance/earthdistance--1.1.sql b/contrib/earthdistance/earthdistance--1.1.sql index 657d328ebb..9136a54a7b 100644 --- a/contrib/earthdistance/earthdistance--1.1.sql +++ b/contrib/earthdistance/earthdistance--1.1.sql @@ -11,7 +11,7 @@ CREATE FUNCTION earth() RETURNS float8 LANGUAGE SQL IMMUTABLE PARALLEL SAFE AS 'SELECT ''6378168''::float8'; --- Astromers may want to change the earth function so that distances will be +-- Astronomers may want to change the earth function so that distances will be -- returned in degrees. To do this comment out the above definition and -- uncomment the one below. Note that doing this will break the regression -- tests. diff --git a/contrib/hstore_plperl/Makefile b/contrib/hstore_plperl/Makefile index b3b8654bc8..8fdca04bfb 100644 --- a/contrib/hstore_plperl/Makefile +++ b/contrib/hstore_plperl/Makefile @@ -43,4 +43,4 @@ endif # last, probably because it sometimes contains some header files with names # that clash with some of ours, or with some that we include, notably on # Windows. -override CPPFLAGS := $(CPPFLAGS) -I$(perl_archlibexp)/CORE +override CPPFLAGS := $(CPPFLAGS) $(perl_embed_ccflags) -I$(perl_archlibexp)/CORE diff --git a/contrib/hstore_plperl/expected/hstore_plperlu.out b/contrib/hstore_plperl/expected/hstore_plperlu.out index b09fb78af9..d719d29f72 100644 --- a/contrib/hstore_plperl/expected/hstore_plperlu.out +++ b/contrib/hstore_plperl/expected/hstore_plperlu.out @@ -20,15 +20,12 @@ TRANSFORM FOR TYPE hstore AS $$ use Data::Dumper; $Data::Dumper::Sortkeys = 1; +$Data::Dumper::Indent = 0; elog(INFO, Dumper($_[0])); return scalar(keys %{$_[0]}); $$; SELECT test1('aa=>bb, cc=>NULL'::hstore); -INFO: $VAR1 = { - 'aa' => 'bb', - 'cc' => undef - }; - +INFO: $VAR1 = {'aa' => 'bb','cc' => undef}; test1 ------- 2 @@ -39,12 +36,12 @@ LANGUAGE plperlu AS $$ use Data::Dumper; $Data::Dumper::Sortkeys = 1; +$Data::Dumper::Indent = 0; elog(INFO, Dumper($_[0])); return scalar(keys %{$_[0]}); $$; SELECT test1none('aa=>bb, cc=>NULL'::hstore); INFO: $VAR1 = '"aa"=>"bb", "cc"=>NULL'; - test1none ----------- 0 @@ -56,15 +53,12 @@ TRANSFORM FOR TYPE hstore AS $$ use Data::Dumper; $Data::Dumper::Sortkeys = 1; +$Data::Dumper::Indent = 0; elog(INFO, Dumper($_[0])); return scalar(keys %{$_[0]}); $$; SELECT test1list('aa=>bb, cc=>NULL'::hstore); -INFO: $VAR1 = { - 'aa' => 'bb', - 'cc' => undef - }; - +INFO: $VAR1 = {'aa' => 'bb','cc' => undef}; test1list ----------- 2 @@ -77,18 +71,12 @@ TRANSFORM FOR TYPE hstore AS $$ use Data::Dumper; $Data::Dumper::Sortkeys = 1; +$Data::Dumper::Indent = 0; elog(INFO, Dumper($_[0]->[0], $_[0]->[1])); return scalar(keys %{$_[0]}); $$; SELECT test1arr(array['aa=>bb, cc=>NULL'::hstore, 'dd=>ee']); -INFO: $VAR1 = { - 'aa' => 'bb', - 'cc' => undef - }; -$VAR2 = { - 'dd' => 'ee' - }; - +INFO: $VAR1 = {'aa' => 'bb','cc' => undef};$VAR2 = {'dd' => 'ee'}; test1arr ---------- 2 @@ -101,6 +89,7 @@ TRANSFORM FOR TYPE hstore AS $$ use Data::Dumper; $Data::Dumper::Sortkeys = 1; +$Data::Dumper::Indent = 0; $rv = spi_exec_query(q{SELECT 'aa=>bb, cc=>NULL'::hstore AS col1}); elog(INFO, Dumper($rv->{rows}[0]->{col1})); @@ -111,13 +100,8 @@ $rv = spi_exec_prepared($plan, {}, $val); elog(INFO, Dumper($rv->{rows}[0]->{col1})); $$; SELECT test3(); -INFO: $VAR1 = { - 'aa' => 'bb', - 'cc' => undef - }; - +INFO: $VAR1 = {'aa' => 'bb','cc' => undef}; INFO: $VAR1 = '"a"=>"1", "b"=>"boo", "c"=>NULL'; - test3 ------- @@ -138,6 +122,7 @@ TRANSFORM FOR TYPE hstore AS $$ use Data::Dumper; $Data::Dumper::Sortkeys = 1; +$Data::Dumper::Indent = 0; elog(INFO, Dumper($_TD->{new})); if ($_TD->{new}{a} == 1) { $_TD->{new}{b} = {a => 1, b => 'boo', c => undef}; @@ -147,14 +132,7 @@ return "MODIFY"; $$; CREATE TRIGGER test4 BEFORE UPDATE ON test1 FOR EACH ROW EXECUTE PROCEDURE test4(); UPDATE test1 SET a = a; -INFO: $VAR1 = { - 'a' => '1', - 'b' => { - 'aa' => 'bb', - 'cc' => undef - } - }; - +INFO: $VAR1 = {'a' => '1','b' => {'aa' => 'bb','cc' => undef}}; SELECT * FROM test1; a | b ---+--------------------------------- diff --git a/contrib/hstore_plperl/hstore_plperl.c b/contrib/hstore_plperl/hstore_plperl.c index d40a792730..e5303b3b92 100644 --- a/contrib/hstore_plperl/hstore_plperl.c +++ b/contrib/hstore_plperl/hstore_plperl.c @@ -13,6 +13,7 @@ PG_FUNCTION_INFO_V1(hstore_to_plperl); Datum hstore_to_plperl(PG_FUNCTION_ARGS) { + dTHX; HStore *in = PG_GETARG_HS(0); int i; int count = HS_COUNT(in); @@ -45,7 +46,8 @@ PG_FUNCTION_INFO_V1(plperl_to_hstore); Datum plperl_to_hstore(PG_FUNCTION_ARGS) { - HV *hv; + dTHX; + HV *hv = (HV *) SvRV((SV *) PG_GETARG_POINTER(0)); HE *he; int32 buflen; int32 i; @@ -53,8 +55,6 @@ plperl_to_hstore(PG_FUNCTION_ARGS) HStore *out; Pairs *pairs; - hv = (HV *) SvRV((SV *) PG_GETARG_POINTER(0)); - pcount = hv_iterinit(hv); pairs = palloc(pcount * sizeof(Pairs)); diff --git a/contrib/hstore_plperl/sql/hstore_plperlu.sql b/contrib/hstore_plperl/sql/hstore_plperlu.sql index 8d8508cf29..c714b35322 100644 --- a/contrib/hstore_plperl/sql/hstore_plperlu.sql +++ b/contrib/hstore_plperl/sql/hstore_plperlu.sql @@ -15,6 +15,7 @@ TRANSFORM FOR TYPE hstore AS $$ use Data::Dumper; $Data::Dumper::Sortkeys = 1; +$Data::Dumper::Indent = 0; elog(INFO, Dumper($_[0])); return scalar(keys %{$_[0]}); $$; @@ -26,6 +27,7 @@ LANGUAGE plperlu AS $$ use Data::Dumper; $Data::Dumper::Sortkeys = 1; +$Data::Dumper::Indent = 0; elog(INFO, Dumper($_[0])); return scalar(keys %{$_[0]}); $$; @@ -38,6 +40,7 @@ TRANSFORM FOR TYPE hstore AS $$ use Data::Dumper; $Data::Dumper::Sortkeys = 1; +$Data::Dumper::Indent = 0; elog(INFO, Dumper($_[0])); return scalar(keys %{$_[0]}); $$; @@ -52,6 +55,7 @@ TRANSFORM FOR TYPE hstore AS $$ use Data::Dumper; $Data::Dumper::Sortkeys = 1; +$Data::Dumper::Indent = 0; elog(INFO, Dumper($_[0]->[0], $_[0]->[1])); return scalar(keys %{$_[0]}); $$; @@ -66,6 +70,7 @@ TRANSFORM FOR TYPE hstore AS $$ use Data::Dumper; $Data::Dumper::Sortkeys = 1; +$Data::Dumper::Indent = 0; $rv = spi_exec_query(q{SELECT 'aa=>bb, cc=>NULL'::hstore AS col1}); elog(INFO, Dumper($rv->{rows}[0]->{col1})); @@ -90,6 +95,7 @@ TRANSFORM FOR TYPE hstore AS $$ use Data::Dumper; $Data::Dumper::Sortkeys = 1; +$Data::Dumper::Indent = 0; elog(INFO, Dumper($_TD->{new})); if ($_TD->{new}{a} == 1) { $_TD->{new}{b} = {a => 1, b => 'boo', c => undef}; diff --git a/contrib/isn/ISSN.h b/contrib/isn/ISSN.h index 082efcff7c..585f0e2674 100644 --- a/contrib/isn/ISSN.h +++ b/contrib/isn/ISSN.h @@ -23,7 +23,7 @@ * Product 9 + 21 + 7 + 3 + 1 + 12 + 4 + 24 + 7 + 15 + 0 + 0 = 103 * 103 / 10 = 10 remainder 3 * Check digit 10 - 3 = 7 - * => 977-1144875-00-7 ?? <- suplemental number (number of the week, month, etc.) + * => 977-1144875-00-7 ?? <- supplemental number (number of the week, month, etc.) * ^^ 00 for non-daily publications (01=Monday, 02=Tuesday, ...) * * The hyphenation is always in after the four digits of the ISSN code. diff --git a/contrib/isn/isn.c b/contrib/isn/isn.c index c622a4ef07..f9639fd376 100644 --- a/contrib/isn/isn.c +++ b/contrib/isn/isn.c @@ -160,7 +160,7 @@ dehyphenate(char *bufO, char *bufI) * into bufO using the given hyphenation range TABLE. * Assumes the input string to be used is of only digits. * - * Returns the number of characters acctually hyphenated. + * Returns the number of characters actually hyphenated. */ static unsigned hyphenate(char *bufO, char *bufI, const char *(*TABLE)[2], const unsigned TABLE_index[10][2]) @@ -748,7 +748,7 @@ string2ean(const char *str, bool errorOK, ean13 *result, } else if (*aux2 == '!' && *(aux2 + 1) == '\0') { - /* the invalid check digit sufix was found, set it */ + /* the invalid check digit suffix was found, set it */ if (!magic) valid = false; magic = true; diff --git a/contrib/ltree/expected/ltree.out b/contrib/ltree/expected/ltree.out index da6e39a785..7e51ce3e2b 100644 --- a/contrib/ltree/expected/ltree.out +++ b/contrib/ltree/expected/ltree.out @@ -1105,7 +1105,7 @@ SELECT '{a.b.c.d.e,B.df}'::ltree[] ? '{A.b.c.d.e,*.df}'; t (1 row) ---exractors +--extractors SELECT ('{3456,1.2.3.34}'::ltree[] ?@> '1.2.3.4') is null; ?column? ---------- diff --git a/contrib/ltree/ltxtquery_io.c b/contrib/ltree/ltxtquery_io.c index befda1344d..9ca1994249 100644 --- a/contrib/ltree/ltxtquery_io.c +++ b/contrib/ltree/ltxtquery_io.c @@ -96,7 +96,7 @@ gettoken_query(QPRS_STATE *state, int32 *val, int32 *lenval, char **strval, uint if (*flag) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("modificators syntax error"))); + errmsg("modifiers syntax error"))); *lenval += charlen; } else if (charlen == 1 && t_iseq(state->buf, '%')) @@ -197,7 +197,7 @@ pushval_asis(QPRS_STATE *state, int type, char *strval, int lenval, uint16 flag) #define STACKDEPTH 32 /* - * make polish notaion of query + * make polish notation of query */ static int32 makepol(QPRS_STATE *state) diff --git a/contrib/ltree/sql/ltree.sql b/contrib/ltree/sql/ltree.sql index 46cfa41a41..eb1beaef31 100644 --- a/contrib/ltree/sql/ltree.sql +++ b/contrib/ltree/sql/ltree.sql @@ -204,7 +204,7 @@ SELECT 'a.b.c.d.e'::ltree ? '{A.b.c.d.e, a.*}'; SELECT '{a.b.c.d.e,B.df}'::ltree[] ? '{A.b.c.d.e}'; SELECT '{a.b.c.d.e,B.df}'::ltree[] ? '{A.b.c.d.e,*.df}'; ---exractors +--extractors SELECT ('{3456,1.2.3.34}'::ltree[] ?@> '1.2.3.4') is null; SELECT '{3456,1.2.3}'::ltree[] ?@> '1.2.3.4'; SELECT '{3456,1.2.3.4}'::ltree[] ?<@ '1.2.3'; diff --git a/contrib/mmts/Cluster.pm b/contrib/mmts/Cluster.pm index 3dfa84b02a..c69de67a18 100644 --- a/contrib/mmts/Cluster.pm +++ b/contrib/mmts/Cluster.pm @@ -3,12 +3,35 @@ package Cluster; use strict; use warnings; -use Proc::ProcessTable; use PostgresNode; use TestLib; use Test::More; use Cwd; +use Socket; + +use IPC::Run; + +sub check_port +{ + my ($host, $port) = @_; + my $iaddr = inet_aton($host); + my $paddr = sockaddr_in($port, $iaddr); + my $proto = getprotobyname("tcp"); + my $available = 0; + + socket(SOCK, PF_INET, SOCK_STREAM, $proto) + or die "socket failed: $!"; + + if (bind(SOCK, $paddr) && listen(SOCK, SOMAXCONN)) + { + $available = 1; + } + + close(SOCK); + return $available; +} + my %allocated_ports = (); sub allocate_ports { @@ -19,8 +42,7 @@ sub allocate_ports { my $port = int(rand() * 16384) + 49152; next if $allocated_ports{$port}; - diag("checking for port $port\n"); - if (!TestLib::run_log(['pg_isready', '-h', $host, '-p', $port])) + if (check_port($host, $port)) { $allocated_ports{$port} = 1; push(@allocated_now, $port); @@ -44,6 +66,7 @@ sub new my $node = new PostgresNode("node$i", $host, $pgport); $node->{id} = $i; $node->{arbiter_port} = $arbiter_port; + $node->{mmconnstr} = "${ \$node->connstr('postgres') } arbiter_port=${ \$node->{arbiter_port} }"; push(@$nodes, $node); } @@ -67,13 +90,20 @@ sub init } } +sub all_connstrs +{ + my ($self) = @_; + my $nodes = $self->{nodes}; + return join(', ', map { "${ \$_->connstr('postgres') } arbiter_port=${ \$_->{arbiter_port} }" } @$nodes); +} + + sub configure { my ($self) = @_; my $nodes = $self->{nodes}; - my $nnodes = scalar @{ $nodes }; - my $connstr = join(', ', map { "${ \$_->connstr('postgres') } arbiter_port=${ \$_->{arbiter_port} }" } @$nodes); + my $connstr = $self->all_connstrs(); foreach my $node (@$nodes) { @@ -81,34 +111,33 @@ sub configure my $host = $node->host; my $pgport = $node->port; my $arbiter_port = $node->{arbiter_port}; + my $unix_sock_dir = $ENV{PGHOST}; $node->append_conf("postgresql.conf", qq( log_statement = none listen_addresses = '$host' - unix_socket_directories = '' + unix_socket_directories = '$unix_sock_dir' port = $pgport - max_prepared_transactions = 200 - max_connections = 200 + max_prepared_transactions = 10 + max_connections = 10 max_worker_processes = 100 wal_level = logical - fsync = off - max_wal_senders = 10 + max_wal_senders = 6 wal_sender_timeout = 0 default_transaction_isolation = 'repeatable read' - max_replication_slots = 10 + max_replication_slots = 6 shared_preload_libraries = 'multimaster' + shared_buffers = 16MB multimaster.arbiter_port = $arbiter_port - multimaster.workers = 10 - multimaster.queue_size = 10485760 # 10mb + multimaster.workers = 1 multimaster.node_id = $id multimaster.conn_strings = '$connstr' - multimaster.heartbeat_recv_timeout = 1000 + multimaster.heartbeat_recv_timeout = 1050 multimaster.heartbeat_send_timeout = 250 - multimaster.max_nodes = $nnodes - multimaster.ignore_tables_without_pk = true - multimaster.twopc_min_timeout = 50000 - multimaster.min_2pc_timeout = 50000 + multimaster.max_nodes = 6 + multimaster.ignore_tables_without_pk = false + multimaster.queue_size = 4194304 log_line_prefix = '%t: ' )); @@ -128,6 +157,7 @@ sub start foreach my $node (@$nodes) { $node->start(); + note( "Starting node with connstr 'dbname=postgres port=@{[ $node->port() ]} host=@{[ $node->host() ]}'"); } } @@ -137,7 +167,7 @@ sub stopnode return 1 unless defined $node->{_pid}; $mode = 'fast' unless defined $mode; my $name = $node->name; - diag("stopping $name ${mode}ly"); + note("stopping $name ${mode}ly"); if ($mode eq 'kill') { killtree($node->{_pid}); @@ -147,13 +177,13 @@ sub stopnode my $pgdata = $node->data_dir; my $ret = TestLib::system_log('pg_ctl', '-D', $pgdata, '-m', 'fast', 'stop'); my $pidfile = $node->data_dir . "/postmaster.pid"; - diag("unlink $pidfile"); + note("unlink $pidfile"); unlink $pidfile; $node->{_pid} = undef; $node->_update_pid; if ($ret != 0) { - diag("$name failed to stop ${mode}ly"); + note("$name failed to stop ${mode}ly"); return 0; } @@ -166,43 +196,22 @@ sub stopid return stopnode($self->{nodes}->[$idx]); } -sub killtree +sub dumplogs { - my $root = shift; - diag("killtree $root\n"); - - my $t = new Proc::ProcessTable; - - my %parent = (); - #my %cmd = (); - foreach my $p (@{$t->table}) { - $parent{$p->pid} = $p->ppid; - # $cmd{$p->pid} = $p->cmndline; - } + my ($self) = @_; + my $nodes = $self->{nodes}; - if (!defined $root) { - return; - } - my @queue = ($root); - my @killist = (); - - while (scalar @queue) { - my $victim = shift @queue; - while (my ($pid, $ppid) = each %parent) { - if ($ppid == $victim) { - push @queue, $pid; - } - } - diag("SIGSTOP to $victim"); - kill 'STOP', $victim; - unshift @killist, $victim; + note("Dumping logs:"); + foreach my $node (@$nodes) { + note("##################################################################"); + note($node->{_logfile}); + note("##################################################################"); + my $filename = $node->{_logfile}; + open my $fh, '<', $filename or die "error opening $filename: $!"; + my $data = do { local $/; <$fh> }; + note($data); + note("##################################################################\n\n"); } - - diag("SIGKILL to " . join(' ', @killist)); - kill 'KILL', @killist; - #foreach my $victim (@killist) { - # print("kill $victim " . $cmd{$victim} . "\n"); - #} } sub stop @@ -211,34 +220,32 @@ sub stop my $nodes = $self->{nodes}; $mode = 'fast' unless defined $mode; - diag("Dumping logs:"); - foreach my $node (@$nodes) { - diag("##################################################################"); - diag($node->{_logfile}); - diag("##################################################################"); - my $filename = $node->{_logfile}; - open my $fh, '<', $filename or die "error opening $filename: $!"; - my $data = do { local $/; <$fh> }; - diag($data); - diag("##################################################################\n\n"); - } - my $ok = 1; - diag("stopping cluster ${mode}ly"); + note("stopping cluster ${mode}ly"); foreach my $node (@$nodes) { if (!stopnode($node, $mode)) { $ok = 0; - if (!stopnode($node, 'kill')) { - my $name = $node->name; - BAIL_OUT("failed to kill $name"); - } + # if (!stopnode($node, 'kill')) { + # my $name = $node->name; + # BAIL_OUT("failed to kill $name"); + # } } } sleep(2); + + $self->dumplogs(); + return $ok; } +sub bail_out_with_logs +{ + my ($self, $msg) = @_; + $self->dumplogs(); + BAIL_OUT($msg); +} + sub teardown { my ($self) = @_; @@ -269,10 +276,127 @@ sub poll return 1; } my $tries_left = $tries - $i - 1; - diag("$poller poll for $pollee failed [$tries_left tries left]"); + note("$poller poll for $pollee failed [$tries_left tries left]"); sleep($delay); } return 0; } +sub pgbench() +{ + my ($self, $node, @args) = @_; + my $pgbench_handle = $self->pgbench_async($node, @args); + $self->pgbench_await($pgbench_handle); +} + +sub pgbench_async() +{ + my ($self, $node, @args) = @_; + + my ($in, $out, $err, $rc); + $in = ''; + $out = ''; + + my @pgbench_command = ( + 'pgbench', + @args, + -h => $self->{nodes}->[$node]->host(), + -p => $self->{nodes}->[$node]->port(), + 'postgres', + ); + note("running pgbench: " . join(" ", @pgbench_command)); + my $handle = IPC::Run::start(\@pgbench_command, $in, $out); + return $handle; +} + +sub pgbench_await() +{ + my ($self, $pgbench_handle) = @_; + IPC::Run::finish($pgbench_handle) || BAIL_OUT("pgbench exited with $?"); +} + +sub is_data_identic() +{ + my ($self, @nodenums) = @_; + my $checksum = ''; + + my $sql = "select md5('(' || string_agg(aid::text || ', ' || abalance::text , '),(') || ')') + from (select * from pgbench_accounts order by aid) t;"; + + foreach my $i (@nodenums) + { + my $current_hash = ''; + $self->{nodes}->[$i]->psql('postgres', $sql, stdout => \$current_hash); + if ($current_hash eq '') + { + note("got empty hash from node $i"); + return 0; + } + if ($checksum eq '') + { + $checksum = $current_hash; + } + elsif ($checksum ne $current_hash) + { + note("got different hashes: $checksum ang $current_hash"); + return 0; + } + } + + note($checksum); + return 1; +} + +sub add_node() +{ + my ($self, %params) = @_; + + my $pgport; + my $arbiter_port; + my $connstrs; + my $node_id; + + if (defined $params{node_id}) + { + $node_id = $params{node_id}; + $pgport = $params{port}; + $arbiter_port = $params{arbiter_port}; + $connstrs = $self->all_connstrs(); + } + else + { + $node_id = scalar(@{$self->{nodes}}) + 1; + $pgport = (allocate_ports('127.0.0.1', 1))[0]; + $arbiter_port = (allocate_ports('127.0.0.1', 1))[0]; + $connstrs = $self->all_connstrs() . ", dbname=postgres host=127.0.0.1 port=$pgport arbiter_port=$arbiter_port"; + } + + my $node = PostgresNode->get_new_node("node${node_id}x"); + + $self->{nodes}->[0]->backup("backup_for_$node_id"); + # do init from backup before setting host, since init_from_backup() checks + # it default value + $node->init_from_backup($self->{nodes}->[0], "backup_for_$node_id"); + + $node->{_host} = '127.0.0.1'; + $node->{_port} = $pgport; + $node->{port} = $pgport; + $node->{host} = '127.0.0.1'; + $node->{arbiter_port} = $arbiter_port; + $node->{mmconnstr} = "${ \$node->connstr('postgres') } arbiter_port=${ \$node->{arbiter_port} }"; + $node->append_conf("postgresql.conf", qq( + multimaster.arbiter_port = $arbiter_port + multimaster.conn_strings = '$connstrs' + multimaster.node_id = $node_id + port = $pgport + )); + $node->append_conf("pg_hba.conf", qq( + local replication all trust + host replication all 127.0.0.1/32 trust + host replication all ::1/128 trust + )); + + push(@{$self->{nodes}}, $node); +} + 1; diff --git a/contrib/mmts/Dockerfile b/contrib/mmts/Dockerfile index 0eb3db0f4e..872989c35e 100644 --- a/contrib/mmts/Dockerfile +++ b/contrib/mmts/Dockerfile @@ -1,4 +1,4 @@ -FROM kelvich/postgres_cluster +FROM pgproent RUN mkdir /pg/mmts COPY ./ /pg/mmts/ @@ -6,10 +6,12 @@ COPY ./ /pg/mmts/ RUN export USE_PGXS=1 && \ cd /pg/mmts && make clean && make install +RUN export USE_PGXS=1 && \ + cd /pg/src/contrib/referee && make clean && make install + # pg_regress client assumes such dir exists on server RUN cp /pg/src/src/test/regress/*.so /pg/install/lib/postgresql/ USER postgres -RUN mkdir /pg/src/src/test/regress/results ENV PGDATA /pg/data ENTRYPOINT ["/pg/mmts/tests2/docker-entrypoint.sh"] diff --git a/contrib/mmts/Makefile b/contrib/mmts/Makefile index 322310a192..9450b1fe65 100644 --- a/contrib/mmts/Makefile +++ b/contrib/mmts/Makefile @@ -1,15 +1,8 @@ -MODULE_big = multimaster -OBJS = multimaster.o arbiter.o bytebuf.o bgwpool.o pglogical_output.o pglogical_proto.o pglogical_receiver.o pglogical_apply.o pglogical_hooks.o pglogical_config.o pglogical_relid_map.o ddd.o bkb.o spill.o EXTENSION = multimaster DATA = multimaster--1.0.sql - -.PHONY: all - -all: multimaster.so - -tests/dtmbench: - make -C tests +OBJS = multimaster.o arbiter.o bytebuf.o bgwpool.o pglogical_output.o pglogical_proto.o pglogical_receiver.o pglogical_apply.o pglogical_hooks.o pglogical_config.o pglogical_relid_map.o ddd.o bkb.o spill.o referee.o state.o +MODULE_big = multimaster PG_CPPFLAGS = -I$(libpq_srcdir) SHLIB_LINK = $(libpq) @@ -19,12 +12,19 @@ PG_CONFIG = pg_config PGXS := $(shell $(PG_CONFIG) --pgxs) include $(PGXS) else -subdir = contrib/multimaster +subdir = contrib/mmts top_builddir = ../.. include $(top_builddir)/src/Makefile.global include $(top_srcdir)/contrib/contrib-global.mk endif +.PHONY: all + +EXTRA_INSTALL=contrib/mmts + +all: multimaster.so -check: - env DESTDIR='$(abs_top_builddir)'/tmp_install make install + + +check: temp-install $(prove_check) + diff --git a/contrib/mmts/README.md b/contrib/mmts/README.md index ee19096ffb..42f4a7c1ea 100644 --- a/contrib/mmts/README.md +++ b/contrib/mmts/README.md @@ -1,158 +1,72 @@ -# `Postgresql multi-master` +# `PostgreSQL multimaster` -Multi-master is an extension and set of patches to a Postegres database, that turns Postgres into a -synchronous shared-nothing cluster to provide OLTP scalability and high availability with automatic -disaster recovery. - -## Features +`multimaster` is a PostgreSQL extension with a set of patches that turns PostgreSQL into a synchronous shared-nothing cluster to provide Online Transaction Processing (OLTP) scalability and high availability with automatic disaster recovery. As compared to a standard PostgreSQL master-slave cluster, a cluster configured with the `multimaster` extension offers the following benefits: * Cluster-wide transaction isolation -* Synchronous logical replication -* DDL Replication -* Fault tolerance -* Automatic node recovery +* Synchronous logical replication +* DDL replication +* Working with temporary tables on each cluster node +* Fault tolerance and automatic node recovery +* PostgreSQL online upgrades ## Overview -Multi-master replicates same database to all nodes in cluster and allows writes to each node. Transaction -isolation is enforced cluster-wide, so in case of concurrent updates on different nodes database will use the -same conflict resolution rules (mvcc with repeatable read isolation level) as single node uses for concurrent -backends and always stays in consistent state. Any writing transaction will write to all nodes, hence increasing -commit latency for amount of time proportional to roundtrip between nodes nedded for synchronization. Read only -transactions and queries executed locally without measurable overhead. Replication mechanism itself based on -logical decoding and earlier version of pglogical extension provided for community by 2ndQuadrant team. - -Cluster consisting of N nodes can continue to work while majority of initial nodes are alive and reachable by -other nodes. This is done by using 3 phase commit protocol and heartbeats for failure discovery. Node that is -brought back to cluster can be fast-forwaded to actual state automatically in case when transactions log still -exists since the time when node was excluded from cluster (this depends on checkpoint configuration in postgres). - -Read more about internals on [architecture](/contrib/mmts/doc/architecture.md) page. - - - -## Installation - -Multi-master consist of patched version of postgres and extension mmts, that provides most of functionality, but -doesn't requiere changes to postgres core. To run multimaster one need to install postgres and several extensions -to all nodes in cluster. - -### Sources - -Ensure that following prerequisites are installed: - -for Debian based linux: - -```sh -apt-get install -y git make gcc libreadline-dev bison flex zlib1g-dev -``` - -for RedHat based linux: - -```sh -yum groupinstall 'Development Tools' -yum install git, automake, libtool, bison, flex readline-devel -``` - -After that everything is ready to install postgres along with extensions - -```sh -git clone https://github.com/postgrespro/postgres_cluster.git -cd postgres_cluster -./configure && make && make -j 4 install -cd ../../contrib/mmts && make install -``` - -### Docker - -Directory contrib/mmts also includes docker-compose.yml that is capable of building multi-master and starting 3 node cluster. - -```sh -cd contrib/mmts -docker-compose up -``` +The `multimaster` extension replicates the same database to all nodes of the cluster and allows write transactions on each node. To ensure data consistency in the case of concurrent updates, `multimaster` enforces transaction isolation cluster-wide, using multiversion concurrency control (MVCC) at the repeatable read isolation level. Any write transaction is synchronously replicated to all nodes, which increases commit latency for the time required for synchronization. Read-only transactions and queries are executed locally, without any measurable overhead. -### PgPro packages +To ensure high availability and fault tolerance of the cluster, `multimaster` uses three-phase commit protocol and heartbeats for failure discovery. A multi-master cluster of N nodes can continue working while the majority of the nodes are alive and reachable by other nodes. When the node is reconnected to the cluster, `multimaster` can automatically fast-forward the node to the actual state based on the transactions log (WAL). If WAL is no longer available for the time when the node was excluded from the cluster, you can restore the node using `pg_basebackup`. -After things go more stable we will release prebuilt packages for major platforms. +For details on the `multimaster` internals, see the [Architecture](/contrib/mmts/doc/architecture.md) page. -## Configuration +## Documentation -1. Add these required options to the `postgresql.conf` of each instance in the cluster. - ```sh - wal_level = logical # multimaster is build on top of - # logical replication and will not work otherwise - max_connections = 100 - max_prepared_transactions = 300 # all transactions are implicitly two-phase, so that's - # a good idea to set this equal to max_connections*N_nodes. - max_wal_senders = 10 # at least the number of nodes - max_replication_slots = 10 # at least the number of nodes - max_worker_processes = 250 # Each node has: - # N_nodes-1 receiver - # N_nodes-1 sender - # 1 mtm-sender - # 1 mtm-receiver - # Also transactions executed at neighbour nodes can cause spawn of - # background pool worker at our node. At max this will be equal to - # sum of max_connections on neighbour nodes. +1. [Administration](doc/administration.md) + 1. [Installation](doc/administration.md#installation) + 1. [Setting up a Multi-Master Cluster](doc/administration.md#setting-up-a-multi-master-cluster) + 1. [Tuning configuration params](doc/administration.md#tuning-configuration-parameters) + 1. [Monitoring Cluster Status](doc/administration.md#monitoring-cluster-status) + 1. [Adding New Nodes to the Cluster](doc/administration.md#adding-new-nodes-to-the-cluster) + 1. [Excluding Nodes from the Cluster](doc/administration.md#excluding-nodes-from-the-cluster) +1. [Architecture](doc/architecture.md) +1. [Configuration Variables](doc/configuration.md) +1. [Built-in Functions and Views](doc/functions.md) +## Tests - shared_preload_libraries = 'multimaster' - multimaster.max_nodes = 3 # cluster size - multimaster.node_id = 1 # the 1-based index of the node in the cluster - multimaster.conn_strings = 'dbname=mydb host=node1.mycluster, ...' - # comma-separated list of connection strings to neighbour nodes. -``` -2. Allow replication in `pg_hba.conf`. - -Read description of all configuration params at [configuration](/contrib/mmts/doc/configuration.md) - -## Management - -`create extension mmts;` to gain access to these functions: - -* `mtm.get_nodes_state()` -- show status of nodes on cluster -* `mtm.get_cluster_state()` -- show whole cluster status -* `mtm.get_cluster_info()` -- print some debug info -* `mtm.make_table_local(relation regclass)` -- stop replication for a given table - -Read description of all management functions at [functions](/contrib/mmts/doc/functions.md) - - +### Fault tolerance -## Tests +(Link to test/failure matrix) ### Performance (Show TPC-C here on 3 nodes) -### Fault tolerance -(Link to test/failure matrix) +## Limitations +* `multimaster` can only replicate one database per cluster. -## Limitations +* The replicated tables must have primary keys or replica identity. Otherwise, `multimaster` cannot perform logical replication. Unlogged tables are not replicated, as in the standard PostgreSQL. -* Commit latency. -Current implementation of logical replication sends data to subscriber nodes only after local commit, so in case of -heavy-write transaction user will wait for transaction processing two times: on local node and al other nodes -(simultaneosly). We have plans to address this issue in future. +* Sequence generation. +To avoid conflicts between unique identifiers on different nodes, `multimaster` modifies the default behavior of sequence generators. For each node, ID generation is started with the node number and is incremented by the number of nodes in each iteration. For example, in a three-node cluster, 1, 4, and 7 IDs are allocated to the objects written onto the first node, while 2, 5, and 8 IDs are reserved for the second node. * DDL replication. -While data is replicated on logical level, DDL replicated by statements performing distributed commit with the same -statement. Some complex DDL scenarious including stored procedures and temp temp tables aren't working properly. We -are working right now on proving full compatibility with ordinary postgres. Currently we are passing 141 of 164 -postgres regression tests. +While `multimaster` replicates data on the logical level, DDL is replicated on the statement level, which causes distributed commits of the same statement on different nodes. As a result, complex DDL scenarios, such as stored procedures and temporary tables, may work differently as compared to the standard PostgreSQL. + +* Commit latency. +The current implementation of logical replication sends data to subscriber nodes only after the local commit. In case of a heavy-write transaction, you have to wait for transaction processing twice: on the local node and on all the other nodes (simultaneously). * Isolation level. -Multimaster currently support only _repeatable_ _read_ isolation level. This is stricter than default _read_ _commited_, -but also increases probability of serialization failure during commit. _Serializable_ level isn't supported yet. +The `multimaster` extenstion currently supports only the _repeatable_ _read_ isolation level. This is stricter than the default _read_ _commited_ level, but also increases probability of serialization failure during commit. _Serializable_ level is not supported yet. -* One database per cluster. +## Compatibility +The `multimaster` extension currently passes 162 of 166 postgres regression tests. We are working right now on proving full compatibility with the standard PostgreSQL. +## Authors -## Credits and Licence +Postgres Professional, Moscow, Russia. -Multi-master developed by the PostgresPro team. +### Credits +The replication mechanism is based on logical decoding and an earlier version of the `pglogical` extension provided for community by the 2ndQuadrant team. diff --git a/contrib/mmts/TODO b/contrib/mmts/TODO deleted file mode 100644 index 3bd972a0fa..0000000000 --- a/contrib/mmts/TODO +++ /dev/null @@ -1,23 +0,0 @@ -TODO - -* Disallow or do not replicate tables without pkeys. -* Automate extension creation (?) -* Database itn't usable right after pg_ctl -w. There are still several second before db will switch to operational mode. -+ Statements without tx. -* Disallow user-created MTM-* gid's. -* Check configuration sanity for mm before actual startup: max_wal_senders, max_worker_processes, max_wal_senders, wal_level, max_replication_slots -* Handle SIGQUIT -* Move arbiter host/port to connstring - - - - - - - - - - - - - diff --git a/contrib/mmts/arbiter.c b/contrib/mmts/arbiter.c index ed2e4ef7a4..80bf2fd251 100644 --- a/contrib/mmts/arbiter.c +++ b/contrib/mmts/arbiter.c @@ -21,6 +21,7 @@ #include "postgres.h" #include "fmgr.h" #include "miscadmin.h" +#include "pg_socket.h" #include "postmaster/postmaster.h" #include "postmaster/bgworker.h" #include "storage/s_lock.h" @@ -56,6 +57,8 @@ #include "replication/slot.h" #include "port/atomics.h" #include "tcop/utility.h" +#include "libpq/ip.h" + #ifndef USE_EPOLL #ifdef __linux__ @@ -73,6 +76,7 @@ #include "multimaster.h" +#include "state.h" #define MAX_ROUTES 16 #define INIT_BUFFER_SIZE 1024 @@ -133,37 +137,12 @@ static BackgroundWorker MtmMonitorWorker = { void MtmArbiterInitialize(void) { - elog(LOG, "Register background workers"); + MTM_ELOG(LOG, "Register background workers"); RegisterBackgroundWorker(&MtmSenderWorker); RegisterBackgroundWorker(&MtmRecevierWorker); RegisterBackgroundWorker(&MtmMonitorWorker); } -static int -MtmResolveHostByName(const char *hostname, unsigned* addrs, unsigned* n_addrs) -{ - struct sockaddr_in sin; - struct hostent* hp; - unsigned i; - - sin.sin_addr.s_addr = inet_addr(hostname); - if (sin.sin_addr.s_addr != INADDR_NONE) { - memcpy(&addrs[0], &sin.sin_addr.s_addr, sizeof(sin.sin_addr.s_addr)); - *n_addrs = 1; - return 1; - } - - hp = gethostbyname(hostname); - if (hp == NULL || hp->h_addrtype != AF_INET) { - return 0; - } - for (i = 0; hp->h_addr_list[i] != NULL && i < *n_addrs; i++) { - memcpy(&addrs[i], hp->h_addr_list[i], sizeof(addrs[i])); - } - *n_addrs = i; - return 1; -} - static int stop = 0; static void SetStop(int sig) { @@ -184,7 +163,7 @@ static void MtmRegisterSocket(int fd, int node) ev.events = EPOLLIN; ev.data.u32 = node; if (epoll_ctl(epollfd, EPOLL_CTL_ADD, fd, &ev) < 0) { - elog(LOG, "Arbiter failed to add socket to epoll set: %d", errno); + MTM_ELOG(LOG, "Arbiter failed to add socket to epoll set: %s", strerror(errno)); } #else FD_SET(fd, &inset); @@ -198,7 +177,7 @@ static void MtmUnregisterSocket(int fd) { #if USE_EPOLL if (epoll_ctl(epollfd, EPOLL_CTL_DEL, fd, NULL) < 0) { - elog(LOG, "Arbiter failed to unregister socket from epoll set: %d", errno); + MTM_ELOG(LOG, "Arbiter failed to unregister socket from epoll set: %s", strerror(errno)); } #else FD_CLR(fd, &inset); @@ -209,23 +188,30 @@ static void MtmUnregisterSocket(int fd) static void MtmDisconnect(int node) { MtmUnregisterSocket(sockets[node]); - close(sockets[node]); + pg_closesocket(sockets[node], MtmUseRDMA); sockets[node] = -1; - MtmOnNodeDisconnect(node+1); } -static int MtmWaitSocket(int sd, bool forWrite, time_t timeoutMsec) +static int MtmWaitSocket(int sd, bool forWrite, timestamp_t timeoutMsec) { struct timeval tv; fd_set set; int rc; - tv.tv_sec = timeoutMsec/1000; - tv.tv_usec = timeoutMsec%1000*1000; - FD_ZERO(&set); - FD_SET(sd, &set); + timestamp_t deadline = MtmGetSystemTime() + MSEC_TO_USEC(timeoutMsec); + do { + timestamp_t now; MtmCheckHeartbeat(); - } while ((rc = select(sd+1, forWrite ? NULL : &set, forWrite ? &set : NULL, NULL, &tv)) < 0 && errno == EINTR); + now = MtmGetSystemTime(); + if (now > deadline) { + now = deadline; + } + FD_ZERO(&set); + FD_SET(sd, &set); + tv.tv_sec = (deadline - now)/USECS_PER_SEC; + tv.tv_usec = (deadline - now)%USECS_PER_SEC; + } while ((rc = pg_select(sd+1, forWrite ? NULL : &set, forWrite ? &set : NULL, NULL, &tv, MtmUseRDMA)) < 0 && errno == EINTR); + return rc; } @@ -235,8 +221,11 @@ static bool MtmWriteSocket(int sd, void const* buf, int size) while (size != 0) { int rc = MtmWaitSocket(sd, true, MtmHeartbeatSendTimeout); if (rc == 1) { - while ((rc = send(sd, src, size, 0)) < 0 && errno == EINTR); + while ((rc = pg_send(sd, src, size, 0, MtmUseRDMA)) < 0 && errno == EINTR); if (rc < 0) { + if (errno == EINPROGRESS) { + continue; + } return false; } size -= rc; @@ -251,11 +240,11 @@ static bool MtmWriteSocket(int sd, void const* buf, int size) static int MtmReadSocket(int sd, void* buf, int buf_size) { int rc; - while ((rc = recv(sd, buf, buf_size, 0)) < 0 && errno == EINTR); - if (rc < 0 && errno == EAGAIN) { + while ((rc = pg_recv(sd, buf, buf_size, 0, MtmUseRDMA)) < 0 && errno == EINTR); + if (rc <= 0 && (errno == EAGAIN || errno == EINPROGRESS)) { rc = MtmWaitSocket(sd, false, MtmHeartbeatSendTimeout); if (rc == 1) { - while ((rc = recv(sd, buf, buf_size, 0)) < 0 && errno == EINTR); + while ((rc = pg_recv(sd, buf, buf_size, 0, MtmUseRDMA)) < 0 && errno == EINTR); } } return rc; @@ -267,74 +256,86 @@ static void MtmSetSocketOptions(int sd) { #ifdef TCP_NODELAY int on = 1; - if (setsockopt(sd, IPPROTO_TCP, TCP_NODELAY, (char const*)&on, sizeof(on)) < 0) { - elog(WARNING, "Failed to set TCP_NODELAY: %m"); + if (pg_setsockopt(sd, IPPROTO_TCP, TCP_NODELAY, (char const*)&on, sizeof(on), MtmUseRDMA) < 0) { + MTM_ELOG(WARNING, "Failed to set TCP_NODELAY: %m"); } #endif - if (setsockopt(sd, SOL_SOCKET, SO_KEEPALIVE, (char const*)&on, sizeof(on)) < 0) { - elog(WARNING, "Failed to set SO_KEEPALIVE: %m"); + if (pg_setsockopt(sd, SOL_SOCKET, SO_KEEPALIVE, (char const*)&on, sizeof(on), MtmUseRDMA) < 0) { + MTM_ELOG(WARNING, "Failed to set SO_KEEPALIVE: %m"); } if (tcp_keepalives_idle) { #ifdef TCP_KEEPIDLE - if (setsockopt(sd, IPPROTO_TCP, TCP_KEEPIDLE, - (char *) &tcp_keepalives_idle, sizeof(tcp_keepalives_idle)) < 0) + if (pg_setsockopt(sd, IPPROTO_TCP, TCP_KEEPIDLE, + (char *) &tcp_keepalives_idle, sizeof(tcp_keepalives_idle), MtmUseRDMA) < 0) { - elog(WARNING, "Failed to set TCP_KEEPIDLE: %m"); + MTM_ELOG(WARNING, "Failed to set TCP_KEEPIDLE: %m"); } #else #ifdef TCP_KEEPALIVE - if (setsockopt(sd, IPPROTO_TCP, TCP_KEEPALIVE, - (char *) &tcp_keepalives_idle, sizeof(tcp_keepalives_idle)) < 0) + if (pg_setsockopt(sd, IPPROTO_TCP, TCP_KEEPALIVE, + (char *) &tcp_keepalives_idle, sizeof(tcp_keepalives_idle), MtmUseRDMA) < 0) { - elog(WARNING, "Failed to set TCP_KEEPALIVE: %m"); + MTM_ELOG(WARNING, "Failed to set TCP_KEEPALIVE: %m"); } #endif #endif } #ifdef TCP_KEEPINTVL if (tcp_keepalives_interval) { - if (setsockopt(sd, IPPROTO_TCP, TCP_KEEPINTVL, - (char *) &tcp_keepalives_interval, sizeof(tcp_keepalives_interval)) < 0) + if (pg_setsockopt(sd, IPPROTO_TCP, TCP_KEEPINTVL, + (char *) &tcp_keepalives_interval, sizeof(tcp_keepalives_interval), MtmUseRDMA) < 0) { - elog(WARNING, "Failed to set TCP_KEEPINTVL: %m"); + MTM_ELOG(WARNING, "Failed to set TCP_KEEPINTVL: %m"); } } #endif #ifdef TCP_KEEPCNT if (tcp_keepalives_count) { - if (setsockopt(sd, IPPROTO_TCP, TCP_KEEPCNT, - (char *) &tcp_keepalives_count, sizeof(tcp_keepalives_count)) < 0) + if (pg_setsockopt(sd, IPPROTO_TCP, TCP_KEEPCNT, + (char *) &tcp_keepalives_count, sizeof(tcp_keepalives_count), MtmUseRDMA) < 0) { - elog(WARNING, "Failed to set TCP_KEEPCNT: %m"); + MTM_ELOG(WARNING, "Failed to set TCP_KEEPCNT: %m"); } } #endif } +/* + * Check response message and update onde state + */ static void MtmCheckResponse(MtmArbiterMessage* resp) { - if (BIT_CHECK(resp->disabledNodeMask, MtmNodeId-1) - && !BIT_CHECK(Mtm->disabledNodeMask, resp->node-1) - && Mtm->status != MTM_RECOVERY - && Mtm->nodes[MtmNodeId-1].lastStatusChangeTime + MSEC_TO_USEC(MtmNodeDisableDelay) < MtmGetSystemTime()) - { - elog(WARNING, "Node %d thinks that I am dead, while I am %s (message %s)", resp->node, MtmNodeStatusMnem[Mtm->status], MtmMessageKindMnem[resp->code]); - BIT_SET(Mtm->disabledNodeMask, MtmNodeId-1); - MtmSwitchClusterMode(MTM_RECOVERY); - } else if (BIT_CHECK(Mtm->disabledNodeMask, resp->node-1) && sockets[resp->node-1] < 0) { - /* We receive heartbeat from dsiable node with + if (resp->lockReq) { + BIT_SET(Mtm->inducedLockNodeMask, resp->node-1); + } else { + BIT_CLEAR(Mtm->inducedLockNodeMask, resp->node-1); + } + if (resp->locked) { + BIT_SET(Mtm->currentLockNodeMask, resp->node-1); + } else { + BIT_CLEAR(Mtm->currentLockNodeMask, resp->node-1); + } + + // if (BIT_CHECK(resp->disabledNodeMask, MtmNodeId-1)) + // { + // MtmStateProcessEvent(MTM_REMOTE_DISABLE); + // } + + if (BIT_CHECK(Mtm->disabledNodeMask, resp->node-1) && + sockets[resp->node-1] < 0) + { + /* We've received heartbeat from disabled node. * Looks like it is restarted. * Try to reconnect to it. */ - elog(WARNING, "Receive heartbeat from disabled node %d", resp->node); + MTM_ELOG(WARNING, "Receive heartbeat from disabled node %d", resp->node); BIT_SET(Mtm->reconnectMask, resp->node-1); - } + } } static void MtmScheduleHeartbeat() { -// Assert(!last_sent_heartbeat || last_sent_heartbeat + MSEC_TO_USEC(MtmHeartbeatRecvTimeout) >= MtmGetSystemTime()); if (!stop) { enable_timeout_after(heartbeat_timer, MtmHeartbeatSendTimeout); send_heartbeat = true; @@ -347,52 +348,55 @@ static void MtmSendHeartbeat() int i; MtmArbiterMessage msg; timestamp_t now = MtmGetSystemTime(); - msg.code = MSG_HEARTBEAT; - msg.disabledNodeMask = Mtm->disabledNodeMask; - msg.connectivityMask = Mtm->connectivityMask; - msg.oldestSnapshot = Mtm->nodes[MtmNodeId-1].oldestSnapshot; + MtmInitMessage(&msg, MSG_HEARTBEAT); msg.node = MtmNodeId; msg.csn = now; if (last_sent_heartbeat != 0 && last_sent_heartbeat + MSEC_TO_USEC(MtmHeartbeatSendTimeout)*2 < now) { - MTM_LOG1("More than %ld microseconds since last heartbeat", now - last_sent_heartbeat); + MTM_LOG1("More than %lld microseconds since last heartbeat", now - last_sent_heartbeat); } last_sent_heartbeat = now; for (i = 0; i < Mtm->nAllNodes; i++) { if (i+1 != MtmNodeId) { - if (!BIT_CHECK(busy_mask, i) - && (Mtm->status != MTM_ONLINE - || sockets[i] >= 0 - || !BIT_CHECK(Mtm->disabledNodeMask, i) - || BIT_CHECK(Mtm->reconnectMask, i))) + if (!BIT_CHECK(busy_mask, i)) + /* + * Old behaviour here can cause subtle bugs, for example + * it can happened that none of mentioned conditiotions is + * true when disabled node connects to a major node which + * is online. So just send it allways. --sk + */ + // && (Mtm->status != MTM_ONLINE + // || sockets[i] >= 0 + // || !BIT_CHECK(Mtm->disabledNodeMask, i) + // || BIT_CHECK(Mtm->reconnectMask, i))) { - if (!MtmSendToNode(i, &msg, sizeof(msg))) { - elog(LOG, "Arbiter failed to send heartbeat to node %d", i+1); + if (!MtmSendToNode(i, &msg, sizeof(msg))) { + MTM_ELOG(LOG, "Arbiter failed to send heartbeat to node %d", i+1); } else { if (last_heartbeat_to_node[i] + MSEC_TO_USEC(MtmHeartbeatSendTimeout)*2 < now) { - MTM_LOG1("Last hearbeat to node %d was sent %ld microseconds ago", i+1, now - last_heartbeat_to_node[i]); + MTM_LOG1("Last heartbeat to node %d was sent %lld microseconds ago", i+1, now - last_heartbeat_to_node[i]); } last_heartbeat_to_node[i] = now; /* Connectivity mask can be cleared by MtmWatchdog: in this case sockets[i] >= 0 */ - if (BIT_CHECK(Mtm->connectivityMask, i)) { - close(sockets[i]); + if (BIT_CHECK(SELF_CONNECTIVITY_MASK, i)) { + MTM_LOG1("Force reconnect to node %d", i+1); + pg_closesocket(sockets[i], MtmUseRDMA); sockets[i] = -1; MtmReconnectNode(i+1); /* set reconnect mask to force node reconnent */ - //MtmOnNodeConnect(i+1); } - MTM_LOG4("Send heartbeat to node %d with timestamp %ld", i+1, now); + MTM_LOG4("Send heartbeat to node %d with timestamp %lld", i+1, now); } } else { - MTM_LOG2("Do not send heartbeat to node %d, busy mask %lld, status %s", i+1, (long long) busy_mask, MtmNodeStatusMnem[Mtm->status]); + MTM_LOG2("Do not send heartbeat to node %d, busy mask %lld, status %s", i+1, busy_mask, MtmNodeStatusMnem[Mtm->status]); } } } } -/* This function shoudl be called from all places where sender can be blocked. - * It checks send_heartbeat flag set by timer and if it is set hthen sends heartbeats to all alive nodes +/* This function should be called from all places where sender can be blocked. + * It checks send_heartbeat flag set by timer and if it is set then sends heartbeats to all alive nodes */ void MtmCheckHeartbeat() { @@ -404,108 +408,109 @@ void MtmCheckHeartbeat() } -static int MtmConnectSocket(int node, int port, int timeout) +static int MtmConnectSocket(int node, int port) { - struct sockaddr_in sock_inet; - unsigned addrs[MAX_ROUTES]; - unsigned i, n_addrs = sizeof(addrs) / sizeof(addrs[0]); + struct addrinfo *addrs = NULL; + struct addrinfo *addr; + struct addrinfo hint; + char portstr[MAXPGPATH]; MtmHandshakeMessage req; MtmArbiterMessage resp; - int sd; - timestamp_t start = MtmGetSystemTime(); + int sd = -1; + int rc; char const* host = Mtm->nodes[node].con.hostName; nodemask_t save_mask = busy_mask; - sock_inet.sin_family = AF_INET; - sock_inet.sin_port = htons(port); + /* Initialize hint structure */ + MemSet(&hint, 0, sizeof(hint)); + hint.ai_socktype = SOCK_STREAM; + hint.ai_family = AF_UNSPEC; - if (!MtmResolveHostByName(host, addrs, &n_addrs)) { - elog(LOG, "Arbiter failed to resolve host '%s' by name", host); + snprintf(portstr, sizeof(portstr), "%d", port); + + rc = pg_getaddrinfo_all(host, portstr, &hint, &addrs); + if (rc != 0) + { + MTM_ELOG(LOG, "Arbiter failed to resolve host '%s' by name: %s", host, gai_strerror(rc)); return -1; } BIT_SET(busy_mask, node); Retry: - while (1) { - int rc = -1; - - sd = socket(AF_INET, SOCK_STREAM, 0); - if (sd < 0) { - elog(LOG, "Arbiter failed to create socket: %d", errno); - busy_mask = save_mask; - return -1; - } - rc = fcntl(sd, F_SETFL, O_NONBLOCK); - if (rc < 0) { - elog(LOG, "Arbiter failed to switch socket to non-blocking mode: %d", errno); - busy_mask = save_mask; - return -1; - } - for (i = 0; i < n_addrs; ++i) { - memcpy(&sock_inet.sin_addr, &addrs[i], sizeof sock_inet.sin_addr); - do { - rc = connect(sd, (struct sockaddr*)&sock_inet, sizeof(sock_inet)); - } while (rc < 0 && errno == EINTR); - if (rc >= 0 || errno == EINPROGRESS) { - break; - } - } - if (rc == 0) { + sd = pg_socket(AF_INET, SOCK_STREAM, 0, MtmUseRDMA); + if (sd < 0) { + MTM_ELOG(LOG, "Arbiter failed to create socket: %s", strerror(errno)); + goto Error; + } + rc = pg_fcntl(sd, F_SETFL, O_NONBLOCK, MtmUseRDMA); + if (rc < 0) { + MTM_ELOG(LOG, "Arbiter failed to switch socket to non-blocking mode: %s", strerror(errno)); + goto Error; + } + for (addr = addrs; addr != NULL; addr = addr->ai_next) + { + do { + rc = pg_connect(sd, addr->ai_addr, addr->ai_addrlen, MtmUseRDMA); + } while (rc < 0 && errno == EINTR); + + if (rc >= 0 || errno == EINPROGRESS) { break; } - if (errno != EINPROGRESS || start + MSEC_TO_USEC(timeout) < MtmGetSystemTime()) { - elog(WARNING, "Arbiter failed to connect to %s:%d: error=%d", host, port, errno); - close(sd); - busy_mask = save_mask; - return -1; - } else { - rc = MtmWaitSocket(sd, true, MtmHeartbeatSendTimeout); - if (rc == 1) { - socklen_t optlen = sizeof(int); - if (getsockopt(sd, SOL_SOCKET, SO_ERROR, (void*)&rc, &optlen) < 0) { - elog(WARNING, "Arbiter failed to getsockopt for %s:%d: error=%d", host, port, errno); - close(sd); - busy_mask = save_mask; - return -1; - } - if (rc == 0) { - break; - } else { - elog(WARNING, "Arbiter trying to connect to %s:%d: rc=%d, error=%d", host, port, rc, errno); - } - } else { - elog(WARNING, "Arbiter waiting socket to %s:%d: rc=%d, error=%d", host, port, rc, errno); + } + + if (rc != 0 && errno == EINPROGRESS) { + rc = MtmWaitSocket(sd, true, MtmHeartbeatSendTimeout); + if (rc == 1) { + socklen_t optlen = sizeof(int); + int errcode; + + if (pg_getsockopt(sd, SOL_SOCKET, SO_ERROR, (void*)&errcode, &optlen, MtmUseRDMA) < 0) { + MTM_ELOG(WARNING, "Arbiter failed to getsockopt for %s:%d: %s", host, port, strerror(errcode)); + goto Error; } - close(sd); - MtmSleep(MSEC_TO_USEC(MtmHeartbeatSendTimeout)); + if (errcode != 0) { + MTM_ELOG(WARNING, "Arbiter trying to connect to %s:%d: %s", host, port, strerror(errcode)); + goto Error; + } + } else if (rc == 0) { + MTM_ELOG(WARNING, "Arbiter failed to connect to socket to %s:%d within specified timeout", host, port); + goto Error; + } else { + MTM_ELOG(WARNING, "Arbiter failed to wait socket to %s:%d: %s", host, port, strerror(errno)); + goto Error; } } + else if (rc != 0) { + MTM_ELOG(WARNING, "Arbiter failed to connect to %s:%d: (%d) %s", host, port, rc, strerror(errno)); + goto Error; + } + MtmSetSocketOptions(sd); - req.hdr.code = MSG_HANDSHAKE; + MtmInitMessage(&req.hdr, MSG_HANDSHAKE); req.hdr.node = MtmNodeId; req.hdr.dxid = HANDSHAKE_MAGIC; req.hdr.sxid = ShmemVariableCache->nextXid; req.hdr.csn = MtmGetCurrentTime(); - req.hdr.disabledNodeMask = Mtm->disabledNodeMask; - req.hdr.connectivityMask = Mtm->connectivityMask; strcpy(req.connStr, Mtm->nodes[MtmNodeId-1].con.connStr); if (!MtmWriteSocket(sd, &req, sizeof req)) { - elog(WARNING, "Arbiter failed to send handshake message to %s:%d: %d", host, port, errno); - close(sd); + MTM_ELOG(WARNING, "Arbiter failed to send handshake message to %s:%d: %s", host, port, strerror(errno)); + pg_closesocket(sd, MtmUseRDMA); goto Retry; } if (MtmReadSocket(sd, &resp, sizeof resp) != sizeof(resp)) { - elog(WARNING, "Arbiter failed to receive response for handshake message from %s:%d: errno=%d", host, port, errno); - close(sd); + MTM_ELOG(WARNING, "Arbiter failed to receive response for handshake message from %s:%d: %s", host, port, strerror(errno)); + pg_closesocket(sd, MtmUseRDMA); goto Retry; } if (resp.code != MSG_STATUS || resp.dxid != HANDSHAKE_MAGIC) { - elog(WARNING, "Arbiter get unexpected response %d for handshake message from %s:%d", resp.code, host, port); - close(sd); + MTM_ELOG(WARNING, "Arbiter get unexpected response %d for handshake message from %s:%d", resp.code, host, port); + pg_closesocket(sd, MtmUseRDMA); goto Retry; } - + if (addrs) + pg_freeaddrinfo_all(hint.ai_family, addrs); + MtmLock(LW_EXCLUSIVE); MtmCheckResponse(&resp); MtmUnlock(); @@ -513,8 +518,18 @@ static int MtmConnectSocket(int node, int port, int timeout) MtmOnNodeConnect(node+1); busy_mask = save_mask; - + return sd; + +Error: + busy_mask = save_mask; + if (sd >= 0) { + pg_closesocket(sd, MtmUseRDMA); + } + if (addrs) { + pg_freeaddrinfo_all(hint.ai_family, addrs); + } + return -1; } @@ -530,18 +545,10 @@ static void MtmOpenConnections() } for (i = 0; i < nNodes; i++) { if (i+1 != MtmNodeId && i < Mtm->nAllNodes) { - sockets[i] = MtmConnectSocket(i, Mtm->nodes[i].con.arbiterPort, MtmConnectTimeout); - if (sockets[i] < 0) { - MtmOnNodeDisconnect(i+1); - } + sockets[i] = MtmConnectSocket(i, Mtm->nodes[i].con.arbiterPort); } } - if (Mtm->nLiveNodes < Mtm->nAllNodes/2+1) { /* no quorum */ - elog(WARNING, "Node is out of quorum: only %d nodes of %d are accessible", Mtm->nLiveNodes, Mtm->nAllNodes); - MtmSwitchClusterMode(MTM_IN_MINORITY); - } else if (Mtm->status == MTM_INITIALIZATION) { - MtmSwitchClusterMode(MTM_CONNECTED); - } + MtmStateProcessEvent(MTM_ARBITER_RECEIVER_START); } @@ -552,12 +559,12 @@ static bool MtmSendToNode(int node, void const* buf, int size) BIT_SET(busy_mask, node); while (true) { #if 0 - /* Original intention was to reestablish connectect when reconnet mask is set to avoid hanged-up connection. - * But reconnectMask is set not only when connection is broken, so breaking connection in all this cases cause avalunch of connection failures. + /* Original intention was to reestablish connection when reconnect mask is set to avoid hanged-up connection. + * But reconnectMask is set not only when connection is broken, so breaking connection in all this cases cause avalanche of connection failures. */ if (sockets[node] >= 0 && BIT_CHECK(Mtm->reconnectMask, node)) { - elog(WARNING, "Arbiter is forced to reconnect to node %d", node+1); - close(sockets[node]); + MTM_ELOG(WARNING, "Arbiter is forced to reconnect to node %d", node+1); + pg_closesocket(sockets[node], MtmUseRDMA); sockets[node] = -1; } #endif @@ -568,13 +575,12 @@ static bool MtmSendToNode(int node, void const* buf, int size) } if (sockets[node] < 0 || !MtmWriteSocket(sockets[node], buf, size)) { if (sockets[node] >= 0) { - elog(WARNING, "Arbiter fail to write to node %d: %d", node+1, errno); - close(sockets[node]); + MTM_ELOG(WARNING, "Arbiter fail to write to node %d: %s", node+1, strerror(errno)); + pg_closesocket(sockets[node], MtmUseRDMA); sockets[node] = -1; } - sockets[node] = MtmConnectSocket(node, Mtm->nodes[node].con.arbiterPort, MtmReconnectTimeout); + sockets[node] = MtmConnectSocket(node, Mtm->nodes[node].con.arbiterPort); if (sockets[node] < 0) { - MtmOnNodeDisconnect(node+1); result = false; break; } @@ -592,7 +598,7 @@ static int MtmReadFromNode(int node, void* buf, int buf_size) { int rc = MtmReadSocket(sockets[node], buf, buf_size); if (rc <= 0) { - elog(WARNING, "Arbiter failed to read from node=%d, rc=%d, errno=%d", node+1, rc, errno); + MTM_ELOG(WARNING, "Arbiter failed to read from node=%d: %s", node+1, strerror(errno)); MtmDisconnect(node); } return rc; @@ -600,22 +606,23 @@ static int MtmReadFromNode(int node, void* buf, int buf_size) static void MtmAcceptOneConnection() { - int fd = accept(gateway, NULL, NULL); + int fd = pg_accept(gateway, NULL, NULL, MtmUseRDMA); if (fd < 0) { - elog(WARNING, "Arbiter failed to accept socket: %d", errno); + MTM_ELOG(WARNING, "Arbiter failed to accept socket: %s", strerror(errno)); } else { MtmHandshakeMessage req; MtmArbiterMessage resp; - int rc = fcntl(fd, F_SETFL, O_NONBLOCK); + int rc = pg_fcntl(fd, F_SETFL, O_NONBLOCK, MtmUseRDMA); if (rc < 0) { - elog(ERROR, "Arbiter failed to switch socket to non-blocking mode: %d", errno); + MTM_ELOG(ERROR, "Arbiter failed to switch socket to non-blocking mode: %s", strerror(errno)); } rc = MtmReadSocket(fd, &req, sizeof req); if (rc < sizeof(req)) { - elog(WARNING, "Arbiter failed to handshake socket: %d, errno=%d", rc, errno); + MTM_ELOG(WARNING, "Arbiter failed to handshake socket: %s", strerror(errno)); + pg_closesocket(fd, MtmUseRDMA); } else if (req.hdr.code != MSG_HANDSHAKE && req.hdr.dxid != HANDSHAKE_MAGIC) { - elog(WARNING, "Arbiter get unexpected handshake message %d", req.hdr.code); - close(fd); + MTM_ELOG(WARNING, "Arbiter failed to handshake socket: %s", strerror(errno)); + pg_closesocket(fd, MtmUseRDMA); } else { int node = req.hdr.node-1; Assert(node >= 0 && node < Mtm->nAllNodes && node+1 != MtmNodeId); @@ -624,17 +631,15 @@ static void MtmAcceptOneConnection() MtmCheckResponse(&req.hdr); MtmUnlock(); - resp.code = MSG_STATUS; - resp.disabledNodeMask = Mtm->disabledNodeMask; - resp.connectivityMask = Mtm->connectivityMask; + MtmInitMessage(&resp, MSG_STATUS); resp.dxid = HANDSHAKE_MAGIC; resp.sxid = ShmemVariableCache->nextXid; resp.csn = MtmGetCurrentTime(); resp.node = MtmNodeId; MtmUpdateNodeConnectionInfo(&Mtm->nodes[node].con, req.connStr); if (!MtmWriteSocket(fd, &resp, sizeof resp)) { - elog(WARNING, "Arbiter failed to write response for handshake message to node %d", node+1); - close(fd); + MTM_ELOG(WARNING, "Arbiter failed to write response for handshake message to node %d", node+1); + pg_closesocket(fd, MtmUseRDMA); } else { MTM_LOG1("Arbiter established connection with node %d", node+1); if (sockets[node] >= 0) { @@ -664,17 +669,19 @@ static void MtmAcceptIncomingConnections() sock_inet.sin_addr.s_addr = htonl(INADDR_ANY); sock_inet.sin_port = htons(MtmArbiterPort); - gateway = socket(sock_inet.sin_family, SOCK_STREAM, 0); + gateway = pg_socket(sock_inet.sin_family, SOCK_STREAM, 0, MtmUseRDMA); if (gateway < 0) { - elog(ERROR, "Arbiter failed to create socket: %d", errno); + MTM_ELOG(ERROR, "Arbiter failed to create socket: %s", strerror(errno)); } - setsockopt(gateway, SOL_SOCKET, SO_REUSEADDR, (char*)&on, sizeof on); + if (pg_setsockopt(gateway, SOL_SOCKET, SO_REUSEADDR, (char*)&on, sizeof on, MtmUseRDMA) < 0) { + MTM_ELOG(ERROR, "Arbiter failed to set options for socket: %s", strerror(errno)); + } - if (bind(gateway, (struct sockaddr*)&sock_inet, sizeof(sock_inet)) < 0) { - elog(ERROR, "Arbiter failed to bind socket: %d", errno); + if (pg_bind(gateway, (struct sockaddr*)&sock_inet, sizeof(sock_inet), MtmUseRDMA) < 0) { + MTM_ELOG(ERROR, "Arbiter failed to bind socket: %s", strerror(errno)); } - if (listen(gateway, nNodes) < 0) { - elog(ERROR, "Arbiter failed to listen socket: %d", errno); + if (pg_listen(gateway, nNodes, MtmUseRDMA) < 0) { + MTM_ELOG(ERROR, "Arbiter failed to listen socket: %s", strerror(errno)); } sockets[MtmNodeId-1] = gateway; @@ -701,19 +708,20 @@ static void MtmAppendBuffer(MtmBuffer* txBuffer, MtmArbiterMessage* msg) static void MtmSender(Datum arg) { - sigset_t sset; int nNodes = MtmMaxNodes; int i; + MtmBuffer* txBuffer; + + MtmBackgroundWorker = true; - MtmBuffer* txBuffer = (MtmBuffer*)palloc0(sizeof(MtmBuffer)*nNodes); - elog(LOG, "Start arbiter sender %d", MyProcPid); + txBuffer = (MtmBuffer*)palloc0(sizeof(MtmBuffer)*nNodes); + MTM_ELOG(LOG, "Start arbiter sender %d", MyProcPid); InitializeTimeouts(); - signal(SIGINT, SetStop); - signal(SIGQUIT, SetStop); - signal(SIGTERM, SetStop); - sigfillset(&sset); - sigprocmask(SIG_UNBLOCK, &sset, NULL); + pqsignal(SIGINT, SetStop); + pqsignal(SIGQUIT, SetStop); + pqsignal(SIGTERM, SetStop); + pqsignal(SIGHUP, PostgresSigHupHandler); /* We're now ready to receive signals */ BackgroundWorkerUnblockSignals(); @@ -732,6 +740,12 @@ static void MtmSender(Datum arg) PGSemaphoreLock(&Mtm->sendSemaphore); CHECK_FOR_INTERRUPTS(); + if (ConfigReloadPending) + { + ConfigReloadPending = false; + ProcessConfigFile(PGC_SIGHUP); + } + MtmCheckHeartbeat(); /* * Use shared lock to improve locality, @@ -756,8 +770,9 @@ static void MtmSender(Datum arg) } } CHECK_FOR_INTERRUPTS(); + MtmCheckHeartbeat(); } - elog(LOG, "Stop arbiter sender %d", MyProcPid); + MTM_ELOG(LOG, "Stop arbiter sender %d", MyProcPid); proc_exit(1); /* force restart of this bgwroker */ } @@ -776,8 +791,8 @@ static bool MtmRecovery() fd_set tryset; FD_ZERO(&tryset); FD_SET(sd, &tryset); - if (select(sd+1, &tryset, NULL, NULL, &tm) < 0) { - elog(WARNING, "Arbiter lost connection with node %d", i+1); + if (pg_select(sd+1, &tryset, NULL, NULL, &tm, MtmUseRDMA) < 0) { + MTM_ELOG(WARNING, "Arbiter lost connection with node %d", i+1); MtmDisconnect(i); recovered = true; } @@ -789,14 +804,13 @@ static bool MtmRecovery() static void MtmMonitor(Datum arg) { - sigset_t sset; - - signal(SIGINT, SetStop); - signal(SIGQUIT, SetStop); - signal(SIGTERM, SetStop); - sigfillset(&sset); - sigprocmask(SIG_UNBLOCK, &sset, NULL); + pqsignal(SIGINT, SetStop); + pqsignal(SIGQUIT, SetStop); + pqsignal(SIGTERM, SetStop); + pqsignal(SIGHUP, PostgresSigHupHandler); + MtmBackgroundWorker = true; + /* We're now ready to receive signals */ BackgroundWorkerUnblockSignals(); @@ -808,19 +822,26 @@ static void MtmMonitor(Datum arg) if (rc & WL_POSTMASTER_DEATH) { break; } - MtmRefreshClusterStatus(true); + + if (ConfigReloadPending) + { + ConfigReloadPending = false; + ProcessConfigFile(PGC_SIGHUP); + } + + MtmRefreshClusterStatus(); } } static void MtmReceiver(Datum arg) { - sigset_t sset; int nNodes = MtmMaxNodes; int nResponses; int i, j, n, rc; MtmBuffer* rxBuffer = (MtmBuffer*)palloc0(sizeof(MtmBuffer)*nNodes); timestamp_t lastHeartbeatCheck = MtmGetSystemTime(); timestamp_t now; + timestamp_t selectTimeout = MtmHeartbeatRecvTimeout; #if USE_EPOLL struct epoll_event* events = (struct epoll_event*)palloc(sizeof(struct epoll_event)*nNodes); @@ -830,12 +851,13 @@ static void MtmReceiver(Datum arg) max_fd = 0; #endif - signal(SIGINT, SetStop); - signal(SIGQUIT, SetStop); - signal(SIGTERM, SetStop); - sigfillset(&sset); - sigprocmask(SIG_UNBLOCK, &sset, NULL); - + pqsignal(SIGINT, SetStop); + pqsignal(SIGQUIT, SetStop); + pqsignal(SIGTERM, SetStop); + pqsignal(SIGHUP, PostgresSigHupHandler); + + MtmBackgroundWorker = true; + /* We're now ready to receive signals */ BackgroundWorkerUnblockSignals(); @@ -851,36 +873,43 @@ static void MtmReceiver(Datum arg) while (!stop) { #if USE_EPOLL - n = epoll_wait(epollfd, events, nNodes, MtmHeartbeatRecvTimeout); + n = epoll_wait(epollfd, events, nNodes, selectTimeout); if (n < 0) { if (errno == EINTR) { continue; } - elog(ERROR, "Arbiter failed to poll sockets: %d", errno); + MTM_ELOG(ERROR, "Arbiter failed to poll sockets: %s", strerror(errno)); } for (j = 0; j < n; j++) { i = events[j].data.u32; if (events[j].events & EPOLLERR) { - elog(WARNING, "Arbiter lost connection with node %d", i+1); + MTM_ELOG(WARNING, "Arbiter lost connection with node %d", i+1); MtmDisconnect(i); } } for (j = 0; j < n; j++) { if (events[j].events & EPOLLIN) #else - fd_set events; + fd_set events; + + if (ConfigReloadPending) + { + ConfigReloadPending = false; + ProcessConfigFile(PGC_SIGHUP); + } + do { struct timeval tv; events = inset; - tv.tv_sec = MtmHeartbeatRecvTimeout/1000; - tv.tv_usec = MtmHeartbeatRecvTimeout%1000*1000; + tv.tv_sec = selectTimeout/1000; + tv.tv_usec = selectTimeout%1000*1000; do { - n = select(max_fd+1, &events, NULL, NULL, &tv); + n = pg_select(max_fd+1, &events, NULL, NULL, &tv, MtmUseRDMA); } while (n < 0 && errno == EINTR); } while (n < 0 && MtmRecovery()); if (n < 0) { - elog(ERROR, "Arbiter failed to select sockets: %d", errno); + MTM_ELOG(ERROR, "Arbiter failed to select sockets: %s", strerror(errno)); } for (i = 0; i < nNodes; i++) { if (sockets[i] >= 0 && FD_ISSET(sockets[i], &events)) @@ -913,7 +942,7 @@ static void MtmReceiver(Datum arg) Assert(node > 0 && node <= nNodes && node != MtmNodeId); if (Mtm->nodes[node-1].connectivityMask != msg->connectivityMask) { - elog(LOG, "Node %d changes it connectivity mask from %llx to %llx", node, (long long)Mtm->nodes[node-1].connectivityMask, (long long)msg->connectivityMask); + MTM_ELOG(LOG, "Node %d changes it connectivity mask from %llx to %llx", node, Mtm->nodes[node-1].connectivityMask, msg->connectivityMask); } Mtm->nodes[node-1].oldestSnapshot = msg->oldestSnapshot; @@ -922,44 +951,43 @@ static void MtmReceiver(Datum arg) Mtm->nodes[node-1].lastHeartbeat = MtmGetSystemTime(); MtmCheckResponse(msg); - MTM_LOG2("Receive response %s for transaction %s from node %d", MtmMessageKindMnem[msg->code], msg->gid, msg->node); + MTM_LOG2("Receive response %s for transaction %s from node %d", MtmMessageKindMnem[msg->code], msg->gid, node); switch (msg->code) { case MSG_HEARTBEAT: - MTM_LOG4("Receive HEARTBEAT from node %d with timestamp %ld delay %ld", + MTM_LOG4("Receive HEARTBEAT from node %d with timestamp %lld delay %lld", node, msg->csn, USEC_TO_MSEC(MtmGetSystemTime() - msg->csn)); - continue; + Mtm->nodes[node-1].nHeartbeats += 1; + continue; case MSG_POLL_REQUEST: Assert(*msg->gid); tm = (MtmTransMap*)hash_search(MtmGid2State, msg->gid, HASH_FIND, NULL); if (tm == NULL || tm->state == NULL) { - elog(WARNING, "Request for unexisted transaction %s from node %d", msg->gid, node); + MTM_ELOG(WARNING, "Request for unexisted transaction %s from node %d", msg->gid, node); msg->status = TRANSACTION_STATUS_ABORTED; } else { msg->status = tm->state->status; msg->csn = tm->state->csn; - MTM_LOG1("Send response %s for transaction %s to node %d", MtmTxnStatusMnem[msg->status], msg->gid, msg->node); + MTM_LOG1("Send response %s for transaction %s to node %d", MtmTxnStatusMnem[msg->status], msg->gid, node); } - msg->disabledNodeMask = Mtm->disabledNodeMask; - msg->connectivityMask = Mtm->connectivityMask; - msg->oldestSnapshot = Mtm->nodes[MtmNodeId-1].oldestSnapshot; - msg->code = MSG_POLL_STATUS; + MtmInitMessage(msg, MSG_POLL_STATUS); MtmSendMessage(msg); continue; case MSG_POLL_STATUS: Assert(*msg->gid); tm = (MtmTransMap*)hash_search(MtmGid2State, msg->gid, HASH_FIND, NULL); if (tm == NULL || tm->state == NULL) { - elog(WARNING, "Response for unexisted transaction %s from node %d", msg->gid, node); + MTM_ELOG(WARNING, "Response for non-existing transaction %s from node %d", msg->gid, node); } else { ts = tm->state; BIT_SET(ts->votedMask, node-1); if (ts->status == TRANSACTION_STATUS_UNKNOWN || ts->status == TRANSACTION_STATUS_IN_PROGRESS) { if (msg->status == TRANSACTION_STATUS_IN_PROGRESS || msg->status == TRANSACTION_STATUS_ABORTED) { - elog(LOG, "Abort prepared transaction %s because it is in state %s at node %d", + MTM_ELOG(LOG, "Abort prepared transaction %s because it is in state %s at node %d", msg->gid, MtmTxnStatusMnem[msg->status], node); replorigin_session_origin = DoNotReplicateId; + TXFINISH("%s ABORT, MSG_POLL_STATUS", msg->gid); MtmFinishPreparedTransaction(ts, false); replorigin_session_origin = InvalidRepOriginId; } @@ -970,46 +998,47 @@ static void MtmReceiver(Datum arg) MtmSyncClock(ts->csn); } if ((ts->participantsMask & ~Mtm->disabledNodeMask & ~ts->votedMask) == 0) { - elog(LOG, "Commit transaction %s because it is prepared at all live nodes", msg->gid); + MTM_ELOG(LOG, "Commit transaction %s because it is prepared at all live nodes", msg->gid); replorigin_session_origin = DoNotReplicateId; + TXFINISH("%s COMMIT, MSG_POLL_STATUS", msg->gid); MtmFinishPreparedTransaction(ts, true); replorigin_session_origin = InvalidRepOriginId; } else { MTM_LOG1("Receive response for transaction %s -> %s, participants=%llx, voted=%llx", - msg->gid, MtmTxnStatusMnem[msg->status], (long long)ts->participantsMask, (long long)ts->votedMask); + msg->gid, MtmTxnStatusMnem[msg->status], ts->participantsMask, ts->votedMask); } } else { - elog(LOG, "Receive response %s for transaction %s for node %d, votedMask %llx, participantsMask %llx", - MtmTxnStatusMnem[msg->status], msg->gid, node, (long long)ts->votedMask, (long long)(ts->participantsMask & ~Mtm->disabledNodeMask)); + MTM_ELOG(LOG, "Receive response %s for transaction %s for node %d, votedMask %llx, participantsMask %llx", + MtmTxnStatusMnem[msg->status], msg->gid, node, ts->votedMask, ts->participantsMask & ~Mtm->disabledNodeMask); continue; } } else if (ts->status == TRANSACTION_STATUS_ABORTED && msg->status == TRANSACTION_STATUS_COMMITTED) { - elog(WARNING, "Transaction %s is aborted at node %d but committed at node %d", msg->gid, MtmNodeId, node); + MTM_ELOG(WARNING, "Transaction %s is aborted at node %d but committed at node %d", msg->gid, MtmNodeId, node); } else if (msg->status == TRANSACTION_STATUS_ABORTED && ts->status == TRANSACTION_STATUS_COMMITTED) { - elog(WARNING, "Transaction %s is committed at node %d but aborted at node %d", msg->gid, MtmNodeId, node); + MTM_ELOG(WARNING, "Transaction %s is committed at node %d but aborted at node %d", msg->gid, MtmNodeId, node); } else { - elog(LOG, "Receive response %s for transaction %s status %s for node %d, votedMask %llx, participantsMask %llx", - MtmTxnStatusMnem[msg->status], msg->gid, MtmTxnStatusMnem[ts->status], node, (long long)ts->votedMask, (long long)(ts->participantsMask & ~Mtm->disabledNodeMask) ); + MTM_ELOG(LOG, "Receive response %s for transaction %s status %s for node %d, votedMask %llx, participantsMask %llx", + MtmTxnStatusMnem[msg->status], msg->gid, MtmTxnStatusMnem[ts->status], node, ts->votedMask, ts->participantsMask & ~Mtm->disabledNodeMask); } } continue; default: break; } - if (BIT_CHECK(msg->disabledNodeMask, node-1)) { - elog(WARNING, "Ignore message from dead node %d\n", node); + if (BIT_CHECK(msg->disabledNodeMask, node-1) || BIT_CHECK(Mtm->disabledNodeMask, node-1)) { + MTM_ELOG(WARNING, "Ignore message from dead node %d\n", node); continue; } ts = (MtmTransState*)hash_search(MtmXid2State, &msg->dxid, HASH_FIND, NULL); if (ts == NULL) { - elog(WARNING, "Ignore response for unexisted transaction %d from node %d", msg->dxid, node); + MTM_ELOG(WARNING, "Ignore response for non-existing transaction %llu from node %d", (long64)msg->dxid, node); continue; } Assert(msg->code == MSG_ABORTED || strcmp(msg->gid, ts->gid) == 0); if (BIT_CHECK(ts->votedMask, node-1)) { - elog(WARNING, "Receive deteriorated %s response for transaction %d (%s) from node %d", - MtmMessageKindMnem[msg->code], ts->xid, ts->gid, node); + MTM_ELOG(WARNING, "Receive deteriorated %s response for transaction %s (%llu) from node %d", + MtmMessageKindMnem[msg->code], ts->gid, (long64)ts->xid, node); continue; } BIT_SET(ts->votedMask, node-1); @@ -1019,40 +1048,39 @@ static void MtmReceiver(Datum arg) case MSG_PREPARED: MTM_TXTRACE(ts, "MtmTransReceiver got MSG_PREPARED"); if (ts->status == TRANSACTION_STATUS_COMMITTED) { - elog(WARNING, "Receive PREPARED response for already committed transaction %d from node %d", - ts->xid, node); + MTM_ELOG(WARNING, "Receive PREPARED response for already committed transaction %llu from node %d", + (long64)ts->xid, node); continue; } Mtm->nodes[node-1].transDelay += MtmGetCurrentTime() - ts->csn; ts->xids[node-1] = msg->sxid; +#if 0 + /* This code seems to be deteriorated because now checking that distributed transaction involves all live nodes is done at replica while applying PREPARE */ if ((~msg->disabledNodeMask & Mtm->disabledNodeMask) != 0) { /* Coordinator's disabled mask is wider than of this node: so reject such transaction to avoid commit on smaller subset of nodes */ - elog(WARNING, "Coordinator of distributed transaction see less nodes than node %d: %llx instead of %llx", - node, (long long) Mtm->disabledNodeMask, (long long) msg->disabledNodeMask); + MTM_ELOG(WARNING, "Coordinator of distributed transaction %s (%llu) see less nodes than node %d: %llx instead of %llx", + ts->gid, (long64)ts->xid, node, Mtm->disabledNodeMask, msg->disabledNodeMask); MtmAbortTransaction(ts); } +#endif if ((ts->participantsMask & ~Mtm->disabledNodeMask & ~ts->votedMask) == 0) { /* All nodes are finished their transactions */ if (ts->status == TRANSACTION_STATUS_ABORTED) { MtmWakeUpBackend(ts); } else { Assert(ts->status == TRANSACTION_STATUS_IN_PROGRESS); - MTM_LOG2("Transaction %s is prepared (status=%s participants=%lx disabled=%lx, voted=%lx)", + MTM_LOG2("Transaction %s is prepared (status=%s participants=%llx disabled=%llx, voted=%llx)", ts->gid, MtmTxnStatusMnem[ts->status], ts->participantsMask, Mtm->disabledNodeMask, ts->votedMask); ts->isPrepared = true; if (ts->isTwoPhase) { MtmWakeUpBackend(ts); } else if (MtmUseDtm) { - ts->votedMask = 0; MTM_TXTRACE(ts, "MtmTransReceiver send MSG_PRECOMMIT"); - //MtmSend2PCMessage(ts, MSG_PRECOMMIT); Assert(replorigin_session_origin == InvalidRepOriginId); - MTM_LOG2("SetPreparedTransactionState for %s", ts->gid); - MtmUnlock(); - SetPreparedTransactionState(ts->gid, MULTIMASTER_PRECOMMITTED); - MtmLock(LW_EXCLUSIVE); + ts->isPrepared = false; + SetLatch(&ProcGlobal->allProcs[ts->procno].procLatch); } else { ts->status = TRANSACTION_STATUS_UNKNOWN; MtmWakeUpBackend(ts); @@ -1062,12 +1090,14 @@ static void MtmReceiver(Datum arg) break; case MSG_ABORTED: if (ts->status == TRANSACTION_STATUS_COMMITTED) { - elog(WARNING, "Receive ABORTED response for already committed transaction %d from node %d", - ts->xid, node); + MTM_ELOG(WARNING, "Receive ABORTED response for already committed transaction %s (%llu) from node %d", + ts->gid, (long64)ts->xid, node); continue; } if (ts->status != TRANSACTION_STATUS_ABORTED) { + MTM_LOG1("Arbiter receive abort message for transaction %s (%llu) from node %d", ts->gid, (long64)ts->xid, node); Assert(ts->status == TRANSACTION_STATUS_IN_PROGRESS); + ts->abortedByNode = node; MtmAbortTransaction(ts); } if ((ts->participantsMask & ~Mtm->disabledNodeMask & ~ts->votedMask) == 0) { @@ -1076,8 +1106,12 @@ static void MtmReceiver(Datum arg) break; case MSG_PRECOMMITTED: MTM_TXTRACE(ts, "MtmTransReceiver got MSG_PRECOMMITTED"); - if (ts->status != TRANSACTION_STATUS_ABORTED) { - Assert(ts->status == TRANSACTION_STATUS_IN_PROGRESS); + if (ts->status == TRANSACTION_STATUS_COMMITTED) { + MTM_ELOG(WARNING, "Receive PRECOMMITTED response for already committed transaction %s (%llu) from node %d", + ts->gid, (long64)ts->xid, node); + continue; + } + if (ts->status == TRANSACTION_STATUS_IN_PROGRESS) { if (msg->csn > ts->csn) { ts->csn = msg->csn; MtmSyncClock(ts->csn); @@ -1088,7 +1122,9 @@ static void MtmReceiver(Datum arg) MtmWakeUpBackend(ts); } } else { - elog(WARNING, "Receive PRECOMMITTED response for aborted transaction"); // How it can happen? SHould we use assert here? + Assert(ts->status == TRANSACTION_STATUS_ABORTED); + MTM_ELOG(WARNING, "Receive PRECOMMITTED response for aborted transaction %s (%llu) from node %d", + ts->gid, (long64)ts->xid, node); if ((ts->participantsMask & ~Mtm->disabledNodeMask & ~ts->votedMask) == 0) { MtmWakeUpBackend(ts); } @@ -1098,23 +1134,7 @@ static void MtmReceiver(Datum arg) Assert(false); } } else { - switch (msg->code) { - case MSG_PRECOMMIT: - Assert(false); // Now sent through pglogical - if (ts->status == TRANSACTION_STATUS_IN_PROGRESS) { - ts->status = TRANSACTION_STATUS_UNKNOWN; - ts->csn = MtmAssignCSN(); - MtmAdjustSubtransactions(ts); - MtmSend2PCMessage(ts, MSG_PRECOMMITTED); - } else if (ts->status == TRANSACTION_STATUS_ABORTED) { - MtmSend2PCMessage(ts, MSG_ABORTED); - } else { - elog(WARNING, "Transaction %s is already %s", ts->gid, MtmTxnStatusMnem[ts->status]); - } - break; - default: - Assert(false); - } + Assert(false); /* All broadcasts are now sent through pglogical */ } } MtmUnlock(); @@ -1127,22 +1147,30 @@ static void MtmReceiver(Datum arg) } if (Mtm->status == MTM_ONLINE) { now = MtmGetSystemTime(); - if (now > lastHeartbeatCheck + MSEC_TO_USEC(MtmHeartbeatRecvTimeout)) { - if (!MtmWatchdog(now)) { - for (i = 0; i < nNodes; i++) { - if (Mtm->nodes[i].lastHeartbeat != 0 && sockets[i] >= 0) { - MTM_LOG1("Last heartbeat from node %d received %ld microseconds ago", i+1, now - Mtm->nodes[i].lastHeartbeat); + /* Check for heartbeats only in case of timeout expiration: it means that we do not have non-processed events. + * It helps to avoid false node failure detection because of blocking receiver. + */ + if (n == 0) { + selectTimeout = MtmHeartbeatRecvTimeout; /* restore select timeout */ + if (now > lastHeartbeatCheck + MSEC_TO_USEC(MtmHeartbeatRecvTimeout)) { + if (!MtmWatchdog(now)) { + for (i = 0; i < nNodes; i++) { + if (Mtm->nodes[i].lastHeartbeat != 0 && sockets[i] >= 0) { + MTM_LOG1("Last heartbeat from node %d received %lld microseconds ago", i+1, now - Mtm->nodes[i].lastHeartbeat); + } } } + lastHeartbeatCheck = now; + } + } else { + if (now > lastHeartbeatCheck + MSEC_TO_USEC(MtmHeartbeatRecvTimeout)) { + /* Switch to non-blocking mode to proceed all pending requests before doing watchdog check */ + selectTimeout = 0; } - lastHeartbeatCheck = now; - } - if (n == 0 && Mtm->disabledNodeMask != 0) { - /* If timeout is expired and there are disabled nodes, then recheck cluster's state */ - MtmRefreshClusterStatus(false); } + } else if (n == 0) { + selectTimeout = MtmHeartbeatRecvTimeout; /* restore select timeout */ } } proc_exit(1); /* force restart of this bgwroker */ } - diff --git a/contrib/mmts/bgwpool.c b/contrib/mmts/bgwpool.c index 861deb00b8..f7508bbbdf 100644 --- a/contrib/mmts/bgwpool.c +++ b/contrib/mmts/bgwpool.c @@ -13,6 +13,8 @@ #include "tcop/pquery.h" #include "bgwpool.h" +#include "multimaster.h" +#include "utils/guc.h" bool MtmIsLogicalReceiver; int MtmMaxWorkers; @@ -21,6 +23,7 @@ static BgwPool* MtmPool; static void BgwShutdownWorker(int sig) { + MTM_LOG1("Background worker %d receive shutdown request", MyProcPid); if (MtmPool) { BgwPoolStop(MtmPool); } @@ -31,17 +34,17 @@ static void BgwPoolMainLoop(BgwPool* pool) int size; void* work; static PortalData fakePortal; - sigset_t sset; + MTM_ELOG(LOG, "Start background worker %d, shutdown=%d", MyProcPid, pool->shutdown); + + MtmBackgroundWorker = true; MtmIsLogicalReceiver = true; MtmPool = pool; - signal(SIGINT, BgwShutdownWorker); - signal(SIGQUIT, BgwShutdownWorker); - signal(SIGTERM, BgwShutdownWorker); - - sigfillset(&sset); - sigprocmask(SIG_UNBLOCK, &sset, NULL); + pqsignal(SIGINT, BgwShutdownWorker); + pqsignal(SIGQUIT, BgwShutdownWorker); + pqsignal(SIGTERM, BgwShutdownWorker); + pqsignal(SIGHUP, PostgresSigHupHandler); BackgroundWorkerUnblockSignals(); BackgroundWorkerInitializeConnection(pool->dbname, pool->dbuser); @@ -49,15 +52,22 @@ static void BgwPoolMainLoop(BgwPool* pool) ActivePortal->status = PORTAL_ACTIVE; ActivePortal->sourceText = ""; - while (true) { + while (true) { + if (ConfigReloadPending) + { + ConfigReloadPending = false; + ProcessConfigFile(PGC_SIGHUP); + } + PGSemaphoreLock(&pool->available); SpinLockAcquire(&pool->lock); - if (pool->shutdown) { + if (pool->shutdown) { + PGSemaphoreUnlock(&pool->available); break; } size = *(int*)&pool->queue[pool->head]; Assert(size < pool->size); - work = malloc(size); + work = palloc(size); pool->pending -= 1; pool->active += 1; if (pool->lastPeakTime == 0 && pool->active == pool->nWorkers && pool->pending != 0) { @@ -80,19 +90,23 @@ static void BgwPoolMainLoop(BgwPool* pool) } SpinLockRelease(&pool->lock); pool->executor(work, size); - free(work); + pfree(work); SpinLockAcquire(&pool->lock); pool->active -= 1; pool->lastPeakTime = 0; SpinLockRelease(&pool->lock); } SpinLockRelease(&pool->lock); + MTM_ELOG(LOG, "Shutdown background worker %d", MyProcPid); } void BgwPoolInit(BgwPool* pool, BgwPoolExecutor executor, char const* dbname, char const* dbuser, size_t queueSize, size_t nWorkers) { MtmPool = pool; pool->queue = (char*)ShmemAlloc(queueSize); + if (pool->queue == NULL) { + elog(PANIC, "Failed to allocate memory for background workers pool: %lld bytes requested", (long64)queueSize); + } pool->executor = executor; PGSemaphoreCreate(&pool->available); PGSemaphoreCreate(&pool->overflow); @@ -205,7 +219,7 @@ void BgwPoolExecute(BgwPool* pool, void* work, size_t size) SpinLockAcquire(&pool->lock); } else { pool->pending += 1; - if (pool->active == pool->nWorkers) { + if (pool->active + pool->pending > pool->nWorkers) { BgwStartExtraWorker(pool); } if (pool->lastPeakTime == 0 && pool->active == pool->nWorkers && pool->pending != 0) { diff --git a/contrib/mmts/bgwpool.h b/contrib/mmts/bgwpool.h index 061d3a090a..68fcffde38 100644 --- a/contrib/mmts/bgwpool.h +++ b/contrib/mmts/bgwpool.h @@ -4,14 +4,16 @@ #include "storage/s_lock.h" #include "storage/spin.h" #include "storage/pg_sema.h" +#include "bkb.h" typedef void(*BgwPoolExecutor)(void* work, size_t size); -typedef uint64 timestamp_t; +typedef ulong64 timestamp_t; + #define MAX_DBNAME_LEN 30 #define MAX_DBUSER_LEN 30 -#define MULTIMASTER_BGW_RESTART_TIMEOUT 1 /* seconds */ +#define MULTIMASTER_BGW_RESTART_TIMEOUT BGW_NEVER_RESTART /* seconds */ extern timestamp_t MtmGetSystemTime(void); /* non-adjusted current system time */ extern timestamp_t MtmGetCurrentTime(void); /* adjusted current system time */ diff --git a/contrib/mmts/bkb.h b/contrib/mmts/bkb.h index e0440209c7..cc826ce5b9 100644 --- a/contrib/mmts/bkb.h +++ b/contrib/mmts/bkb.h @@ -6,10 +6,15 @@ #define MAX_NODES 64 -typedef uint64_t nodemask_t; +typedef long long long64; /* we are not using int64 here because we want to use %lld format for this type */ +typedef unsigned long long ulong64; /* we are not using uint64 here because we want to use %lld format for this type */ + +typedef ulong64 nodemask_t; + #define BIT_CHECK(mask, bit) (((mask) & ((nodemask_t)1 << (bit))) != 0) #define BIT_CLEAR(mask, bit) (mask &= ~((nodemask_t)1 << (bit))) #define BIT_SET(mask, bit) (mask |= ((nodemask_t)1 << (bit))) +#define ALL_BITS ((nodemask_t)~0) extern nodemask_t MtmFindMaxClique(nodemask_t* matrix, int n_modes, int* clique_size); diff --git a/contrib/mmts/bkbtest.c b/contrib/mmts/bkbtest.c index b30c7cfaca..822a41f9e9 100644 --- a/contrib/mmts/bkbtest.c +++ b/contrib/mmts/bkbtest.c @@ -11,7 +11,7 @@ int main() { matrix[2] = 1; matrix[4] = 3; clique = MtmFindMaxClique(matrix, 64, &clique_size); - printf("Clique=%lx\n", clique); + printf("Clique=%llx\n", clique); return 0; } diff --git a/contrib/mmts/decoder_raw.c b/contrib/mmts/decoder_raw.c deleted file mode 100644 index 9c668cd311..0000000000 --- a/contrib/mmts/decoder_raw.c +++ /dev/null @@ -1,552 +0,0 @@ -/*------------------------------------------------------------------------- - * - * decoder_raw.c - * Logical decoding output plugin generating SQL queries based - * on things decoded. - * - * Copyright (c) 1996-2015, PostgreSQL Global Development Group - * - * IDENTIFICATION - * decoder_raw/decoder_raw.c - * - *------------------------------------------------------------------------- - */ - -#include "postgres.h" - -#include "access/genam.h" -#include "access/sysattr.h" -#include "catalog/pg_class.h" -#include "catalog/pg_type.h" -#include "nodes/parsenodes.h" -#include "replication/output_plugin.h" -#include "replication/logical.h" -#include "utils/builtins.h" -#include "utils/lsyscache.h" -#include "utils/memutils.h" -#include "utils/rel.h" -#include "utils/relcache.h" -#include "utils/syscache.h" -#include "utils/typcache.h" -#include "multimaster.h" - -/* These must be available to pg_dlsym() */ -extern void _PG_output_plugin_init(OutputPluginCallbacks *cb); - -/* - * Structure storing the plugin specifications and options. - */ -typedef struct -{ - MemoryContext context; - bool isLocal; -} DecoderRawData; - -static void decoder_raw_startup(LogicalDecodingContext *ctx, - OutputPluginOptions *opt, - bool is_init); -static void decoder_raw_shutdown(LogicalDecodingContext *ctx); -static void decoder_raw_begin_txn(LogicalDecodingContext *ctx, - ReorderBufferTXN *txn); -static void decoder_raw_commit_txn(LogicalDecodingContext *ctx, - ReorderBufferTXN *txn, - XLogRecPtr commit_lsn); -static void decoder_raw_change(LogicalDecodingContext *ctx, - ReorderBufferTXN *txn, Relation rel, - ReorderBufferChange *change); - -/* specify output plugin callbacks */ -void -_PG_output_plugin_init(OutputPluginCallbacks *cb) -{ - AssertVariableIsOfType(&_PG_output_plugin_init, LogicalOutputPluginInit); - - cb->startup_cb = decoder_raw_startup; - cb->begin_cb = decoder_raw_begin_txn; - cb->change_cb = decoder_raw_change; - cb->commit_cb = decoder_raw_commit_txn; - cb->shutdown_cb = decoder_raw_shutdown; -} - - -/* initialize this plugin */ -static void -decoder_raw_startup(LogicalDecodingContext *ctx, OutputPluginOptions *opt, - bool is_init) -{ - DecoderRawData *data; - - data = (DecoderRawData*)palloc(sizeof(DecoderRawData)); - data->context = AllocSetContextCreate(ctx->context, - "Raw decoder context", - ALLOCSET_DEFAULT_MINSIZE, - ALLOCSET_DEFAULT_INITSIZE, - ALLOCSET_DEFAULT_MAXSIZE); - data->isLocal = false; - ctx->output_plugin_private = data; - - opt->output_type = OUTPUT_PLUGIN_TEXTUAL_OUTPUT; -} - -/* cleanup this plugin's resources */ -static void -decoder_raw_shutdown(LogicalDecodingContext *ctx) -{ - DecoderRawData *data = ctx->output_plugin_private; - - /* cleanup our own resources via memory context reset */ - MemoryContextDelete(data->context); -} - -/* BEGIN callback */ -static TransactionId lastXid; - -static void -decoder_raw_begin_txn(LogicalDecodingContext *ctx, ReorderBufferTXN *txn) -{ - DecoderRawData *data = ctx->output_plugin_private; - Assert(lastXid != txn->xid); - lastXid = txn->xid; - if (MMIsLocalTransaction(txn->xid)) { - MTM_LOG3("Skip local transaction %u", txn->xid); - data->isLocal = true; - } else { - OutputPluginPrepareWrite(ctx, true); - MTM_LOG3("Send transaction %u to replica", txn->xid); - appendStringInfo(ctx->out, "BEGIN %u;", txn->xid); - OutputPluginWrite(ctx, true); - data->isLocal = false; - } -} - -/* COMMIT callback */ -static void -decoder_raw_commit_txn(LogicalDecodingContext *ctx, ReorderBufferTXN *txn, - XLogRecPtr commit_lsn) -{ - DecoderRawData *data = ctx->output_plugin_private; - if (!data->isLocal) { - MTM_LOG3("Send commit of transaction %u to replica", txn->xid); - OutputPluginPrepareWrite(ctx, true); - appendStringInfoString(ctx->out, "COMMIT;"); - OutputPluginWrite(ctx, true); - } else { - MTM_LOG3("Skip commit of transaction %u", txn->xid); - } -} - -/* - * Print literal `outputstr' already represented as string of type `typid' - * into stringbuf `s'. - * - * Some builtin types aren't quoted, the rest is quoted. Escaping is done as - * if standard_conforming_strings were enabled. - */ -static void -print_literal(StringInfo s, Oid typid, char *outputstr) -{ - const char *valptr; - - switch (typid) - { - case BOOLOID: - if (outputstr[0] == 't') - appendStringInfoString(s, "true"); - else - appendStringInfoString(s, "false"); - break; - - case INT2OID: - case INT4OID: - case INT8OID: - case OIDOID: - case FLOAT4OID: - case FLOAT8OID: - case NUMERICOID: - /* NB: We don't care about Inf, NaN et al. */ - appendStringInfoString(s, outputstr); - break; - - case BITOID: - case VARBITOID: - appendStringInfo(s, "B'%s'", outputstr); - break; - - default: - appendStringInfoChar(s, '\''); - for (valptr = outputstr; *valptr; valptr++) - { - char ch = *valptr; - - if (SQL_STR_DOUBLE(ch, false)) - appendStringInfoChar(s, ch); - appendStringInfoChar(s, ch); - } - appendStringInfoChar(s, '\''); - break; - } -} - -/* - * Print a relation name into the StringInfo provided by caller. - */ -static void -print_relname(StringInfo s, Relation rel) -{ - Form_pg_class class_form = RelationGetForm(rel); - - appendStringInfoString(s, - quote_qualified_identifier( - get_namespace_name( - get_rel_namespace(RelationGetRelid(rel))), - NameStr(class_form->relname))); -} - -/* - * Print a value into the StringInfo provided by caller. - */ -static void -print_value(StringInfo s, Datum origval, Oid typid, bool isnull) -{ - Oid typoutput; - bool typisvarlena; - - /* Query output function */ - getTypeOutputInfo(typid, - &typoutput, &typisvarlena); - - /* Print value */ - if (isnull) - appendStringInfoString(s, "null"); - else if (typisvarlena && VARATT_IS_EXTERNAL_ONDISK(origval)) - appendStringInfoString(s, "unchanged-toast-datum"); - else if (!typisvarlena) - print_literal(s, typid, - OidOutputFunctionCall(typoutput, origval)); - else - { - /* Definitely detoasted Datum */ - Datum val; - val = PointerGetDatum(PG_DETOAST_DATUM(origval)); - print_literal(s, typid, OidOutputFunctionCall(typoutput, val)); - } -} - -/* - * Print a WHERE clause item - */ -static void -print_where_clause_item(StringInfo s, - Relation relation, - HeapTuple tuple, - int natt, - bool *first_column) -{ - Form_pg_attribute attr; - Datum origval; - bool isnull; - TupleDesc tupdesc = RelationGetDescr(relation); - - attr = tupdesc->attrs[natt - 1]; - - /* Skip dropped columns and system columns */ - if (attr->attisdropped || attr->attnum < 0) - return; - - /* Skip comma for first colums */ - if (!*first_column) - appendStringInfoString(s, " AND "); - else - *first_column = false; - - /* Print attribute name */ - appendStringInfo(s, "%s = ", quote_identifier(NameStr(attr->attname))); - - /* Get Datum from tuple */ - origval = heap_getattr(tuple, natt, tupdesc, &isnull); - - /* Get output function */ - print_value(s, origval, attr->atttypid, isnull); -} - -/* - * Generate a WHERE clause for UPDATE or DELETE. - */ -static void -print_where_clause(StringInfo s, - Relation relation, - HeapTuple oldtuple, - HeapTuple newtuple) -{ - TupleDesc tupdesc = RelationGetDescr(relation); - int natt; - bool first_column = true; - - Assert(relation->rd_rel->relreplident == REPLICA_IDENTITY_DEFAULT || - relation->rd_rel->relreplident == REPLICA_IDENTITY_FULL || - relation->rd_rel->relreplident == REPLICA_IDENTITY_INDEX); - - /* Build the WHERE clause */ - appendStringInfoString(s, " WHERE "); - - RelationGetIndexList(relation); - /* Generate WHERE clause using new values of REPLICA IDENTITY */ - if (OidIsValid(relation->rd_replidindex)) - { - Relation indexRel; - int key; - - /* Use all the values associated with the index */ - indexRel = index_open(relation->rd_replidindex, AccessShareLock); - for (key = 0; key < indexRel->rd_index->indnatts; key++) - { - int relattr = indexRel->rd_index->indkey.values[key]; - - /* - * For a relation having REPLICA IDENTITY set at DEFAULT - * or INDEX, if one of the columns used for tuple selectivity - * is changed, the old tuple data is not NULL and need to - * be used for tuple selectivity. If no such columns are - * updated, old tuple data is NULL. - */ - print_where_clause_item(s, relation, - oldtuple ? oldtuple : newtuple, - relattr, &first_column); - } - index_close(indexRel, NoLock); - return; - } - - /* We need absolutely some values for tuple selectivity now */ - Assert(oldtuple != NULL && - relation->rd_rel->relreplident == REPLICA_IDENTITY_FULL); - - /* - * Fallback to default case, use of old values and print WHERE clause - * using all the columns. This is actually the code path for FULL. - */ - for (natt = 0; natt < tupdesc->natts; natt++) - print_where_clause_item(s, relation, oldtuple, - natt + 1, &first_column); -} - -/* - * Decode an INSERT entry - */ -static void -decoder_raw_insert(StringInfo s, - Relation relation, - HeapTuple tuple) -{ - TupleDesc tupdesc = RelationGetDescr(relation); - int natt; - bool first_column = true; - StringInfo values = makeStringInfo(); - - /* Initialize string info for values */ - initStringInfo(values); - - /* Query header */ - appendStringInfo(s, "INSERT INTO "); - print_relname(s, relation); - appendStringInfo(s, " ("); - - /* Build column names and values */ - for (natt = 0; natt < tupdesc->natts; natt++) - { - Form_pg_attribute attr; - Datum origval; - bool isnull; - - attr = tupdesc->attrs[natt]; - - /* Skip dropped columns and system columns */ - if (attr->attisdropped || attr->attnum < 0) - continue; - - /* Skip comma for first colums */ - if (!first_column) - { - appendStringInfoString(s, ", "); - appendStringInfoString(values, ", "); - } - else - first_column = false; - - /* Print attribute name */ - appendStringInfo(s, "%s", quote_identifier(NameStr(attr->attname))); - - /* Get Datum from tuple */ - origval = heap_getattr(tuple, natt + 1, tupdesc, &isnull); - - /* Get output function */ - print_value(values, origval, attr->atttypid, isnull); - } - - /* Append values */ - appendStringInfo(s, ") VALUES (%s);", values->data); - - /* Clean up */ - resetStringInfo(values); -} - -/* - * Decode a DELETE entry - */ -static void -decoder_raw_delete(StringInfo s, - Relation relation, - HeapTuple tuple) -{ - appendStringInfo(s, "DELETE FROM "); - print_relname(s, relation); - - /* - * Here the same tuple is used as old and new values, selectivity will - * be properly reduced by relation uses DEFAULT or INDEX as REPLICA - * IDENTITY. - */ - print_where_clause(s, relation, tuple, tuple); - appendStringInfoString(s, ";"); -} - - -/* - * Decode an UPDATE entry - */ -static void -decoder_raw_update(StringInfo s, - Relation relation, - HeapTuple oldtuple, - HeapTuple newtuple) -{ - TupleDesc tupdesc = RelationGetDescr(relation); - int natt; - bool first_column = true; - - /* If there are no new values, simply leave as there is nothing to do */ - if (newtuple == NULL) - return; - - appendStringInfo(s, "UPDATE "); - print_relname(s, relation); - - /* Build the SET clause with the new values */ - appendStringInfo(s, " SET "); - for (natt = 0; natt < tupdesc->natts; natt++) - { - Form_pg_attribute attr; - Datum origval; - bool isnull; - - attr = tupdesc->attrs[natt]; - - /* Skip dropped columns and system columns */ - if (attr->attisdropped || attr->attnum < 0) - continue; - - /* Skip comma for first colums */ - if (!first_column) - { - appendStringInfoString(s, ", "); - } - else - first_column = false; - - /* Print attribute name */ - appendStringInfo(s, "%s = ", quote_identifier(NameStr(attr->attname))); - - /* Get Datum from tuple */ - origval = heap_getattr(newtuple, natt + 1, tupdesc, &isnull); - - /* Get output function */ - print_value(s, origval, attr->atttypid, isnull); - } - - /* Print WHERE clause */ - print_where_clause(s, relation, oldtuple, newtuple); - - appendStringInfoString(s, ";"); -} - -/* - * Callback for individual changed tuples - */ -static void -decoder_raw_change(LogicalDecodingContext *ctx, ReorderBufferTXN *txn, - Relation relation, ReorderBufferChange *change) -{ - DecoderRawData *data; - MemoryContext old; - char replident = relation->rd_rel->relreplident; - bool is_rel_non_selective; - - data = ctx->output_plugin_private; - if (data->isLocal) { - MTM_LOG3("Skip action %d in transaction %u", change->action, txn->xid); - return; - } - MTM_LOG3("Send action %d in transaction %u to replica", change->action, txn->xid); - - /* Avoid leaking memory by using and resetting our own context */ - old = MemoryContextSwitchTo(data->context); - - /* - * Determine if relation is selective enough for WHERE clause generation - * in UPDATE and DELETE cases. A non-selective relation uses REPLICA - * IDENTITY set as NOTHING, or DEFAULT without an available replica - * identity index. - */ - RelationGetIndexList(relation); - is_rel_non_selective = (replident == REPLICA_IDENTITY_NOTHING || - (replident == REPLICA_IDENTITY_DEFAULT && - !OidIsValid(relation->rd_replidindex))); - - /* Decode entry depending on its type */ - switch (change->action) - { - case REORDER_BUFFER_CHANGE_INSERT: - if (change->data.tp.newtuple != NULL) - { - OutputPluginPrepareWrite(ctx, true); - decoder_raw_insert(ctx->out, - relation, - &change->data.tp.newtuple->tuple); - OutputPluginWrite(ctx, true); - } - break; - case REORDER_BUFFER_CHANGE_UPDATE: - if (!is_rel_non_selective) - { - HeapTuple oldtuple = change->data.tp.oldtuple != NULL ? - &change->data.tp.oldtuple->tuple : NULL; - HeapTuple newtuple = change->data.tp.newtuple != NULL ? - &change->data.tp.newtuple->tuple : NULL; - - OutputPluginPrepareWrite(ctx, true); - decoder_raw_update(ctx->out, - relation, - oldtuple, - newtuple); - OutputPluginWrite(ctx, true); - } - break; - case REORDER_BUFFER_CHANGE_DELETE: - if (!is_rel_non_selective) - { - OutputPluginPrepareWrite(ctx, true); - decoder_raw_delete(ctx->out, - relation, - &change->data.tp.oldtuple->tuple); - OutputPluginWrite(ctx, true); - } - break; - default: - /* Should not come here */ - Assert(0); - break; - } - - MemoryContextSwitchTo(old); - MemoryContextReset(data->context); -} diff --git a/contrib/mmts/doc/administration.md b/contrib/mmts/doc/administration.md new file mode 100644 index 0000000000..118cb8b34b --- /dev/null +++ b/contrib/mmts/doc/administration.md @@ -0,0 +1,261 @@ +# `Administration` + +1. [Installation](#installation) +1. [Setting up a Multi-Master Cluster](#setting-up-a-multi-master-cluster) +1. [Tuning Configuration Parameters](#tuning-configuration-parameters) +1. [Monitoring Cluster Status](#monitoring-cluster-status) +1. [Adding New Nodes to the Cluster](#adding-new-nodes-to-the-cluster) +1. [Excluding Nodes from the Cluster](#excluding-nodes-from-the-cluster) + + + +## Installation + +Multi-master consists of a patched version of PostgreSQL and the `mmts` extension that provide most of the functionality, but depend on several modifications to PostgreSQL core. + + +### Building multimaster from Source Code + +1. Depending on your operating system, ensure that the following prerequisites are installed. + +For Debian based Linux: + +``` +apt-get install -y git make gcc libreadline-dev bison flex zlib1g-dev +``` + +For Red Hat based Linux: + +``` +yum groupinstall 'Development Tools' +yum install git, automake, libtool, bison, flex readline-devel +``` + +For macOS systems: +Make sure you have XCode command-line tools installed. + +2. Install PostgreSQL with the multimaster extension: + +``` +git clone https://github.com/postgrespro/postgres_cluster.git +cd postgres_cluster +./configure --prefix=/path/to/install && make -j 4 install +cd contrib/mmts && make install +``` + +In this command, ```./configure``` is a standard PostgreSQL autotools script, so you can specify [any options](https://www.postgresql.org/docs/9.6/static/install-procedure.html) available in PostgreSQL. Make sure that /path/to/install/bin is specified in the ```PATH``` environment variable for the current user: + +``` + export PATH=$PATH:/path/to/install/bin +``` + + +### Docker + +The contrib/mmts directory also includes docker-compose.yml that is capable of building `multimaster` and starting a three-node cluster. + +First of all we need to build PGPro EE docker image (We will remove this step when we'll merge _MULTIMASTER branch and start building packages). In the repo root, run: +``` +docker build -t pgproent +``` + +Then following command will start a cluster of 3 docker nodes listening on ports 15432, 15433 and 15434 (edit docker-compose.yml to change start params): +``` +cd contrib/mmts +docker-compose up +``` + +### PgPro packages + +To use `multimaster`, you need to install Postgres Pro Enterprise on all nodes of your cluster. Postgres Pro Enterprise includes all the required dependencies and extensions. + + +## Setting up a Multi-Master Cluster + +You must have superuser rights to set up a multi-master cluster. + +After installing Postgres Pro Enterprise on all nodes, you need to configure the cluster with `multimaster`. Suppose you are setting up a cluster of three nodes, with ```node1```, ```node2```, and ```node3``` domain names. +To configure your cluster with `multimaster`, complete these steps on each cluster node: + +1. Set up the database to be replicated with `multimaster`: + * If you are starting from scratch, initialize a cluster, create an empty database `mydb` and a new user `myuser`, as usual: + ``` + initdb -D ./datadir + pg_ctl -D ./datadir -l ./pg.log start + createdb myuser -h localhost + createdb mydb -O myuser -h localhost + pg_ctl -D ./datadir -l ./pg.log stop + ``` + * If you already have a database `mydb` running on the `node1` server, initialize new nodes from the working node using `pg_basebackup`. On each cluster node you are going to add, run: + ``` + pg_basebackup -D ./datadir -h node1 mydb + ``` + For details, see [pg_basebackup](https://www.postgresql.org/docs/9.6/static/app-pgbasebackup.html). + +2. Modify the ```postgresql.conf``` configuration file, as follows: + * Change the isolation level for transactions to `repeatable read`: + ``` + default_transaction_isolation = "repeatable read" + ``` + `multimaster` supports only the `repeatable read` isolation level. You cannot set up `multimaster` with the default `read committed` level. + * Set up PostgreSQL parameters related to replication. + ``` + wal_level = logical + max_connections = 100 + max_prepared_transactions = 300 + max_wal_senders = 10 # at least the number of nodes + max_replication_slots = 10 # at least the number of nodes + ``` + You must change the replication level to `logical` as `multimaster` relies on logical replication. For a cluster of N nodes, enable at least N WAL sender processes and replication slots. Since `multimaster` implicitly adds a `PREPARE` phase to each `COMMIT` transaction, make sure to set the number of prepared transactions to N*max_connections. Otherwise, prepared transactions may be queued. + * Make sure you have enough background workers allocated for each node: + ``` + max_worker_processes = 250 + ``` + For example, for a three-node cluster with `max_connections` = 100, `multimaster` may need up to 206 background workers at peak times: 200 workers for connections from the neighbor nodes, two workers for walsender processes, two workers for walreceiver processes, and two workers for the arbiter sender and receiver processes. When setting this parameter, remember that other modules may also use background workers at the same time. + * Add `multimaster`-specific options: + ```postgres + multimaster.max_nodes = 3 # cluster size + multimaster.node_id = 1 # the 1-based index of the node in the cluster + multimaster.conn_strings = 'dbname=mydb user=myuser host=node1, dbname=mydb user=myuser host=node2, dbname=mydb user=myuser host=node3' + # comma-separated list of connection strings to neighbor nodes + ``` + > **Important:** The `node_id` variable takes natural numbers starting from 1, without any gaps in numbering. For example, for a cluster of five nodes, set node IDs to 1, 2, 3, 4, and 5. In the `conn_strings` variable, make sure to list the nodes in the order of their IDs. The `conn_strings` variable must be the same on all nodes. + Depending on your network environment and usage patterns, you may want to tune other `multimaster` parameters. For details on all configuration parameters available, see [Tuning Configuration Parameters](#tuning-configuration-parameters). + +3. Allow replication in `pg_hba.conf`: + ``` + host myuser all node1 trust + host myuser all node2 trust + host myuser all node3 trust + host replication all node1 trust + host replication all node2 trust + host replication all node3 trust + ``` + +4. Start PostgreSQL: + + ``` + pg_ctl -D ./datadir -l ./pg.log start + ``` + +When PostgreSQL is started on all nodes, connect to any node and create the `multimaster` extension: + ``` + psql -h node1 + > CREATE EXTENSION multimaster; + ``` + The `CREATE EXTENSION` query is replicated to all the cluster nodes. + +To ensure that `multimaster` is enabled, check the ```mtm.get_cluster_state()``` view: +``` +> select * from mtm.get_cluster_state(); +``` +If `liveNodes` is equal to `allNodes`, you cluster is successfully configured and ready to use. +See Also +[Tuning Configuration Parameters](#tuning-configuration-parameters) + +## Tuning Configuration Parameters +While you can use `multimaster` with the default configuration, you may want to tune several parameters for faster failure detection or more reliable automatic recovery. + +### Setting Timeout for Failure Detection +To check availability of neighbor nodes, `multimaster` periodically sends heartbeat packets to all nodes: + +* The ```multimaster.heartbeat_send_timeout``` variable defines the time interval between sending the heartbeats. By default, this variable is set to 1000ms. +* The ```multimaster.heartbeat_recv_timeout``` variable sets the timeout after which If no heartbeats were received during this time, the node is assumed to be disconnected and is excluded from the cluster. By default, this variable is set to 10000 ms. + +It's good idea to set ```multimaster.heartbeat_send_timeout``` based on typical ping latencies between you nodes. Small recv/send ratio decreases the time of failure detection, but increases the probability of false-positive failure detection. When setting this parameter, take into account the typical packet loss ratio between your cluster nodes. + +### Configuring Automatic Recovery Parameters + +If one of your node fails, `multimaster` can automatically restore the node based on the WAL logs collected on other cluster nodes. To control the recovery, use the following variables: + +* ```multimaster.max_recovery_lag``` - sets the maximum size of WAL logs. Upon reaching the ```multimaster.max_recovery_lag``` threshold, WAL logs for the disconnected node are deleted. At this point, automatic recovery is no longer possible. If you need to restore the disconnected node, you have to clone it manually from one of the alive nodes using ```pg_basebackup```. +* ```multimaster.min_recovery_lag``` - sets the difference between the acceptor and donor nodes. When the disconnected node is fast-forwarded up to the ```multimaster.min_recovery_lag``` threshold, `multimaster` stops all new commits to the alive nodes to allow the node to fully catch up with the rest of the cluster. When the data is fully synchronized, the disconnected node is promoted to the online state, and the cluster resumes its work. + +By default, ```multimaster.max_recovery_lag``` is set to 1GB. Setting ```multimaster.max_recovery_lag``` to a larger value increases the timeframe for automatic recovery, but requires more disk space for WAL collection. + +## Monitoring Cluster Status + +`multimaster` provides several views to check the current cluster state. + + +To check node-specific information, use the ```mtm.get_nodes_state()```: + + ```sql + select * from mtm.get_nodes_state(); + ``` + +To check the status of the whole cluster, use the ```mtm.get_cluster_state()``` view: + + ```sql + select * from mtm.get_cluster_state(); + ``` + +For details on all the returned information, see [functions](doc/functions.md) + + +## Adding New Nodes to the Cluster + +With multimaster, you can add or drop cluster nodes without restart. To add a new node, you need to change cluster configuration on alive nodes, load data to the new node using ```pg_basebackup```, and start the node. + +Suppose we have a working cluster of three nodes, with ```node1```, ```node2```, and ```node3``` domain names. To add ```node4```, follow these steps: + +1. Figure out the required connection string that will be used to access the new node. For example, for the database `mydb`, user `myuser`, and the new node `node4`, the connection string is "dbname=mydb user=myuser host=node4". + +1. In `psql` connected to any live node, run: + + ```sql + select * from mtm.add_node('dbname=mydb user=myuser host=node4'); + ``` + + This command changes the cluster configuration on all nodes and starts replication slots for a new node. + +1. Copy all data from one of the alive nodes to the new node: + + ``` + node4> pg_basebackup -D ./datadir -h node1 -x + ``` + + ```pg_basebackup``` copies the entire data directory from ```node1```, together with configuration settings. + +1. Update ```postgresql.conf``` settings on ```node4```: + + ``` + multimaster.max_nodes = 4 + multimaster.node_id = 4 + multimaster.conn_strings = 'dbname=mydb user=myuser host=node1, dbname=mydb user=myuser host=node2, dbname=mydb user=myuser host=node3, dbname=mydb user=myuser host=node4' + ``` + +1. Start PostgreSQL on the new node: + + ``` + node4> pg_ctl -D ./datadir -l ./pg.log start + ``` + + When switched on, the node recovers the recent transaction and changes its state to `online`. Now the cluster is using the new node. + +1. Update configuration settings on all cluster nodes to ensure that the right configuration is loaded in case of PostgreSQL restart: +* Change ```multimaster.conn_strings``` and ```multimaster.max_nodes``` on old nodes +* Make sure the `pg_hba.conf` files allows replication to the new node. + +**See Also** + +[Setting up a Multi-Master Cluster](#setting-up-a-multi-master-cluster) + +[Monitoring Cluster Status](#monitoring-cluster-status) + + +## Excluding Nodes from the Cluster + +To exclude a node from the cluster, use the `mtm.stop_node()` function. For example, to exclude node 3, run the following command on any other node: + + ``` + select mtm.stop_node(3); + ``` + +This disables node 3 on all cluster nodes and stops replication to this node. + +In general, if you simply shutdown a node, it will be excluded from the cluster as well. However, all transactions in the cluster will be frozen until other nodes detect the node offline status. This timeframe is defined by the ```multimaster.heartbeat_recv_timeout``` parameter. + + + + diff --git a/contrib/mmts/doc/architecture.md b/contrib/mmts/doc/architecture.md index e69de29bb2..9a6df43a84 100644 --- a/contrib/mmts/doc/architecture.md +++ b/contrib/mmts/doc/architecture.md @@ -0,0 +1,66 @@ +# `Multi-master architecture` + +## Intro + +Multi-master consists of two major subsystems: synchronous logical replication and an arbiter process that performs health checks and enables cluster recovery automation. + +## Replication + +Since each server can accept writes, any server can abort a transaction because of a concurrent update - in the same way as it happens on a single server between different backends. To ensure high availability and data consistency on all cluster nodes, `multimaster` uses [[logical replication|logrep doc link]] and three-phase E3PC commit protocol [1][2]. + +When PostgeSQL loads the `multimaster` shared library, `multimaster` sets up a logical replication producer and consumer for each node, and hooks into the transaction commit pipeline. The typical data replication workflow consists of the following phases: + +1. `PREPARE` phase: `multimaster` captures and implicitly transforms each `COMMIT` statement to a `PREPARE` statement. All the nodes that get the transaction via the replication protocol (*the cohort nodes*) send their vote for approving or declining the transaction to the arbiter process on the initiating node. This ensures that all the cohort can accept the transaction, and no write conflicts occur. For details on `PREPARE` transactions support in PostgreSQL, see the [PREPARE TRANSACTION](https://postgrespro.com/docs/postgresproee/9.6/sql-prepare-transaction) topic. +2. `PRECOMMIT` phase: If all the cohort approves the transaction, the arbiter process sends a `PRECOMMIT` message to all the cohort nodes to express an intention to commit the transaction. The cohort nodes respond to the arbiter with the `PRECOMMITTED` message. In case of a failure, all the nodes can use this information to complete the transaction using a quorum-based voting procedure. +3. `COMMIT` phase: If `PRECOMMIT` is successful, the arbiter commits the transaction to all nodes. + +If a node crashes or gets disconnected from the cluster between the `PREPARE` and `COMMIT` phases, the `PRECOMMIT` phase ensures that the survived nodes have enough information to complete the prepared transaction. The `PRECOMMITTED` messages help you avoid the situation when the crashed node have already committed or aborted the transaction, but have not notified other nodes about the transaction status. In a two-phase commit (2PC), such a transaction would block resources (hold locks) until the recovery of the crashed node. Otherwise, you could get data inconsistencies in the database when the failed node is recovered. For example, if the failed node committed the transaction but the survived node aborted it. + +To complete the transaction, the arbiter must receive a response from the majority of the nodes. For example, for a cluster of 2N + 1 nodes, at least N+1 responses are required to complete the transaction. Thus, `multimaster` ensures that your cluster is available for reads and writes while the majority of the nodes are connected, and no data inconsistencies occur in case of a node or connection failure. +For details on the failure detection mechanism, see [Failure Detection and Recovery](#failure-detection-and-recovery). + +This replication process is illustrated in the following diagram: + +![](https://cdn.rawgit.com/postgrespro/postgres_cluster/fac1e9fa/contrib/mmts/doc/mmts_commit.svg) + +1. When a user connected to a backend (**BE**) decides to commit a transaction, `multimaster` hooks the `COMMIT` and changes the `COMMIT` statement to a `PREPARE` statement. +2. During the transaction execution, the `walsender` process (**WS**) starts to decode the transaction to "reorder buffer". By the time the `PREPARE` statement happens, **WS** starts sending the transaction to all the cohort nodes. +3. The cohort nodes apply the transaction in the walreceiver process (**WR**). After success, votes for prepared transaction are sent to the initiating node by the arbiter process (**Arb**) - a custom background worker implemented in `multimaster`. +4. The arbiter process on the initiating node waits for all the cohort nodes to send their votes for transaction. After that, the arbiter sends `PRECOMMIT` messages and waits until all the nodes respond with the `PRECOMMITTED` message. +5. When all participating nodes answered with the `PRECOMMITTED` message, the arbiter signals the backend to stop waiting and commit the prepared transaction. +6. The `walsender`/`walreceiver` connections transmit the commit WAL records to the cohort nodes. + +[1] Idit Keidar, Danny Dolev. Increasing the Resilience of Distributed and Replicated Database Systems. http://dx.doi.org/10.1006/jcss.1998.1566 + +[2] Tim Kempster, Colin Stirling, Peter Thanisch. A more committed quorum-based three phase commit protocol. http://dx.doi.org/10.1007/BFb0056487 + + + + +## Failure Detection and Recovery + +Since `multimaster` allows writes to each node, it has to wait for responses about transaction acknowledgement from all the other nodes. Without special actions in case of a node failure, each commit would have to wait until the failed node recovery. To deal with such situations, `multimaster` periodically sends heartbeats to check the node status and connectivity between nodes. When several heartbeats to the node are lost in a row, this node is kicked out of the cluster to allow writes to the remaining alive nodes. You can configure the heartbeat frequency and the response timeout in the ```multimaster.heartbeat_send_timeout``` and ```multimaster.heartbeat_recv_timeout``` parameters, respectively. + +For alive nodes, there is no way to distinguish between a failed node that stopped serving requests and a network-partitioned node that can be accessed by database users, but is unreachable for other nodes. To avoid conflicting writes to nodes in different network partitions, `multimaster` only allows writes to the nodes that see the majority of other nodes. + +For example, suppose a five-node multi-master cluster experienced a network failure that split the network into two isolated subnets, with two and three cluster nodes. Based on heartbeats propagation information, `multimaster` will continue to accept writes at each node in the bigger partition, and deny all writes in the smaller one. Thus, a cluster consisting of 2N+1 nodes can tolerate N node failures and stay alive if any N+1 nodes are alive and connected to each other. + +In case of a partial network split when different nodes have different connectivity, `multimaster` finds a fully connected subset of nodes and switches off other nodes. For example, in a three-node cluster, if node A can access both B and C, but node B cannot access node C, `multimaster` isolates node C to ensure data consistency on nodes A and B. + +Each node maintains a data structure that keeps the status of all nodes in relation to this node. You can get this status in the ```mtm.get_nodes_state()``` system view. + +When a failed node connects back to the cluster, `multimaster` starts the automatic recovery process: + +1. The reconnected node selects a random cluster node and starts catching up with the current state of the cluster based on the Write-Ahead Log (WAL). +2. When the node gets synchronized up to the minimum recovery lag, all cluster nodes get locked for writes to allow the recovery process to finish. By default, the minimum recovery lag is 100kB. You can change this value in the ```multimaster.min_recovery_lag``` variable. +3. When the recovery is complete, `multimaster` promotes the reconnected node to the online status and includes it into the replication scheme. + +Automatic recovery is only possible if the failed node WAL lag behind the working ones does not exceed the ```multimaster.max_recovery_lag``` value. When the WAL lag is bigger than ```multimaster.max_recovery_lag```, you can manually restore the node from one of the working nodes using `pg_basebackup`. diff --git a/contrib/mmts/doc/configuration.md b/contrib/mmts/doc/configuration.md index e69de29bb2..666b2e5db3 100644 --- a/contrib/mmts/doc/configuration.md +++ b/contrib/mmts/doc/configuration.md @@ -0,0 +1,63 @@ +# `GUC Variables` + +```multimaster.node_id``` Node ID - a unique natural number identifying the node of a multi-master cluster. You must start node numbering from 1 and cannot have any gaps in numbering. For example, for a cluster of five nodes, set node IDs to 1, 2, 3, 4, and 5. + +```multimaster.conn_strings``` Connection strings for each node of a multi-master cluster, separated by commas. Each connection string must include the name of the database to replicate and the cluster node domain name. For example, 'dbname=mydb host=node1, dbname=mydb host=node2, dbname=mydb host=node3'. Connection strings must appear in the order of the node IDs specified in the ```multimaster.node_id``` variable. Connection string for the i-th node must be on the i-th position. This parameter must be identical on all nodes. You can specify a custom port for all connection strings using the `multimaster.arbiter_port` variable. + +```multimaster.arbiter_port``` Port for the arbiter process to listen on. +Default: 5433 + +```multimaster.heartbeat_send_timeout``` Time interval between heartbeat messages, in milliseconds. An arbiter process broadcasts heartbeat messages to all nodes to detect connection problems. Default: 1000. + +```multimaster.heartbeat_recv_timeout``` Timeout, in milliseconds. If no heartbeat message is received from the node within this timeframe, the node is excluded from the cluster. +Default: 10000 + + +```multimaster.min_recovery_lag``` Minimal WAL lag between the current cluster state and the node to be restored, in bytes. When this threshold is reached during node recovery, the cluster is locked for write transactions until the recovery is complete. +Default: 100000 + +```multimaster.max_recovery_lag``` Maximal WAL lag size, in bytes. When a node is disconnected from the cluster, other nodes copy WALs for all new trasactions into the replication slot of this node. Upon reaching the `multimaster.max_recovery_lag` value, the replication slot for the disconnected node is deleted to avoid overflow. At this point, automatic recovery of the node is no longer possible. In this case, you can restore the node manually by cloning the data from one of the alive nodes using `pg_basebackup` or a similar tool. If you set this variable to zero, replication slot will not be deleted. +Default: 10000000 + +```multimaster.ignore_tables_without_pk``` Boolean. This variable enables/disables replication of tables without primary keys. By default, replication of tables without primary keys is disabled because of the logical replication restrictions. To enable replication, you can set this variable to false. However, take into account that `multimaster` does not allow update operations on such tables. Default: true + +```multimaster.cluster_name``` Name of the cluster. If you set this variable, `multimaster` checks that the cluster name is the same for all the cluster nodes. + +```multimaster.queue_size``` Multimaster queue size. default = 256*1024*1024 + +```multimaster.trans_spill_threshold``` Maximal size (Mb) of transaction after which transaction is written to the disk. Default = 100, /* 100Mb */ + + + +## Questionable + +(probably we will delete that variables, most of them are useful only for development purposes --stas) + +```multimaster.min_2pc_timeout``` Minimal timeout between receiving PREPARED message from nodes participated in transaction to coordinator (milliseconds). Default = 2000, /* 2 seconds */. + +```multimaster.max_2pc_ratio``` Maximal ratio (in percents) between prepare time at different nodes: if T is time of preparing transaction at some node, then transaction can be aborted if prepared responce was not received in T*MtmMax2PCRatio/100. default = 200, /* 2 times */ + +```multimaster.vacuum_delay``` Minimal age of records which can be vacuumed (seconds). default = 1. + +```multimaster.worker``` Number of multimaster executor workers. Default = 8. (use dynamic workers with some timeout to die?) + +```multimaster.max_worker``` Maximal number of multimaster dynamic executor workers. (set this to max_conn?) Default = 100. + +```multimaster.gc_period``` Number of distributed transactions after which garbage collection is started. Multimaster is building xid->csn hash map which has to be cleaned to avoid hash overflow. This parameter specifies interval of invoking garbage collector for this map. default = MTM_HASH_SIZE/10 + +```multimaster.node_disable_delay``` Minimal amount of time (msec) between node status change. This delay is used to avoid false detection of node failure and to prevent blinking of node status node. default = 2000. (We can just increase heartbeat_recv_timeout) + +```multimaster.connect_timeout``` Multimaster nodes connect timeout. Interval in milliseconds for establishing connection with cluster node. default = 10000, /* 10 seconds */ + +```multimaster.reconnect_timeout``` Multimaster nodes reconnect timeout. Interval in milliseconds for establishing connection with cluster node. default = 5000, /* 5 seconds */ + +```multimaster.use_dtm``` Use distributed transaction manager. + +```multimaster.preserve_commit_order``` Transactions from one node will be committed in same order al all nodes. + +```multimaster.volkswagen_mode``` Pretend to be normal postgres. This means skip some NOTICE's and use local sequences. Default false. + + + + + diff --git a/contrib/mmts/doc/functions.md b/contrib/mmts/doc/functions.md index e69de29bb2..5c1bf3fb38 100644 --- a/contrib/mmts/doc/functions.md +++ b/contrib/mmts/doc/functions.md @@ -0,0 +1,83 @@ +# `Built-in functions and views` + +## Cluster information functions + +* `mtm.get_nodes_state()` — Shows the status of nodes in the cluster. Returns a tuple of the following values: + * id, integer - Node ID. + * enabled, bool - Shows whether the node is excluded from the cluster. The node can only be disabled if responses to heartbeats are not received within the `heartbeat_recv_timeout` time interval. When the node starts responding to heartbeats, `multimaster` can automatically restore the node and switch it back to the enabled state. Automatic recovery is only possible if the replication slot is still active. Otherwise, you can restore the node manually. + * connected, bool - Shows whether the node is connected to the WAL sender. + * slot_active, bool - Shows whether the node has an active replication slot. For a disabled node, the slot remains active until the `max_recovery_lag` value is reached. + * stopped, bool - Shows whether replication to this node was stopped by the `mtm.stop_node()` function. A stopped node acts as a disabled one, but cannot be automatically recovered. Call `mtm.recover_node()` to re-enable such a node. + * catchUp - During the node recovery, shows whether the data is recovered up to the `min_recovery_lag` value. + * slotLag - Size of the WAL data that the replication slot holds for a disabled/stopped node. The slot is dropped when `slotLag` reaches the `max_recovery_lag` value. + * avgTransDelay - An average commit delay caused by this node, in microseconds. + * lastStatusChange - Last time when the node changed its status (enabled/disabled). + * oldestSnapshot - The oldest global snapshot existing on this node. + * SenderPid - Process ID of the WAL sender. + * SenderStartTime - WAL sender start time. + * ReceiverPid - Process ID of the WAL receiver. + * ReceiverStartTime - WAL receiver start time. + * connStr - Connection string to this node. + * connectivityMask - Bitmask representing connectivity to neighbor nodes. Each bit represents a connection to node. + * nHeartbeats - Number of heartbeat responses received from this node. + +* `mtm.collect_cluster_state()` - Collects the data returned by the `mtm.get_cluster_state()` function from all available nodes. For this function to work, in addition to replication connections, pg_hba.conf must allow ordinary connections to the node with the specified connection string. + +* `mtm.get_cluster_state()` - Shows the status of the multimaster extension. Returns a tuple of the following values: + * status - Node status. Possible values are: "Initialization", "Offline", "Connected", "Online", "Recovery", "Recovered", "InMinor", "OutOfService". The inMinor status indicates that the corresponding node got disconnected from the majority of the cluster nodes. Even though the node is active, it will not accept write transactions until it is reconnected to the cluster. + * disabledNodeMask - Bitmask of disabled nodes. + * disconnectedNodeMask - Bitmask of disconnected nodes. + * catchUpNodeMask - Bitmask of nodes that completed the recovery. + * liveNodes - Number of enabled nodes. + * allNodes - Number of nodes in the cluster. The majority of alive nodes is calculated based on this parameter. + * nActiveQueries - Number of queries being currently processed on this node. + * nPendingQueries - Number of queries waiting for execution on this node. + * queueSize - Size of the pending query queue, in bytes. + * transCount - The total number of replicated transactions processed by this node. + * timeShift - Global snapshot shift caused by unsynchronized clocks on nodes, in microseconds. + * recoverySlot - The node from which a failed node gets data updates during automatic recovery. + * xidHashSize - Size of xid2state hash. + * gidHashSize - Size of gid2state hash. + * oldestXid - The oldest transaction ID on this node. + * configChanges - Number of state changes (enabled/disabled) since the last reboot. + * stalledNodeMask - Bitmask of nodes for which replication slots were dropped. + * stoppedNodeMask - Bitmask of nodes that were stopped by `mtm.stop_node()`. + * lastStatusChange - Timestamp of the last state change. + + +## Node management functions + +* `mtm.add_node(conn_str text)` -- Adds a new node to the cluster. + * `conn_str` - Connection string for the new node. For example, for the database `mydb`, user `myuser`, and the new node `node4`, the connection string is `"dbname=mydb user=myuser host=node4"`. Type: `text` + + +* `mtm.stop_node(node integer, drop_slot bool default false)` -- Excludes a node from the cluster. + * `node` - ID of the node to be dropped that you specified in the `multimaster.node_id` variable. Type: `integer` + * `drop_slot` - Optional. Defines whether the replication slot should be dropped together with the node. Set this option to true if you do not plan to restore the node in the future. Type: `boolean` Default: `false` + + +* `mtm.recover_node(node integer)` -- Creates a replication slot for the node that was previously dropped together with its slot. + * `node` - ID of the node to be restored. + + +* `mtm.poll_node(nodeId integer, noWait boolean default FALSE)` -- Waits for the node to become online. + + +## Data management functions + +* `mtm.make_table_local(relation regclass)` -- Stops replication for the specified table. + * `relation` - The table you would like to exclude from the replication scheme. Type: `regclass` + +## Debug functions + +* `mtm.get_cluster_info()` -- print some debug info +* `mtm.inject_2pc_error` +* `mtm.check_deadlock` +* `mtm.start_replication` +* `mtm.stop_replication` +* `mtm.get_snapshot` +* `mtm.get_csn` +* `mtm.get_trans_by_gid` +* `mtm.get_trans_by_xid` +* `mtm.get_last_csn` +* `mtm.dump_lock_graph` diff --git a/contrib/mmts/doc/mmts_commit.svg b/contrib/mmts/doc/mmts_commit.svg new file mode 100644 index 0000000000..c43c48af97 --- /dev/null +++ b/contrib/mmts/doc/mmts_commit.svg @@ -0,0 +1,2 @@ + +
WS
[Not supported by viewer]
Arb
[Not supported by viewer]
BE
[Not supported by viewer]
"Commit"
[Not supported by viewer]
WR
[Not supported by viewer]
Arb
[Not supported by viewer]
Committed

[Not supported by viewer]
Our node
[Not supported by viewer]
Cohort
[Not supported by viewer]
Prepare
[Not supported by viewer]
Prepared
[Not supported by viewer]
Precommitted
[Not supported by viewer]
Precommit
[Not supported by viewer]
Commit
[Not supported by viewer]
\ No newline at end of file diff --git a/contrib/mmts/multimaster--1.0.sql b/contrib/mmts/multimaster--1.0.sql index 7d891e27aa..3c08d09bc7 100644 --- a/contrib/mmts/multimaster--1.0.sql +++ b/contrib/mmts/multimaster--1.0.sql @@ -1,6 +1,15 @@ -- complain if script is sourced in psql, rather than via CREATE EXTENSION \echo Use "CREATE EXTENSION multimaster" to load this file. \quit +-- check that multimaster shared library is really loaded +DO $$ +BEGIN + IF strpos(current_setting('shared_preload_libraries'), 'multimaster') = 0 THEN + RAISE EXCEPTION 'Multimaster must be loaded via shared_preload_libraries. Refusing to proceed.'; + END IF; +END +$$; + CREATE FUNCTION mtm.start_replication() RETURNS void AS 'MODULE_PATHNAME','mtm_start_replication' LANGUAGE C; @@ -9,25 +18,34 @@ CREATE FUNCTION mtm.stop_replication() RETURNS void AS 'MODULE_PATHNAME','mtm_stop_replication' LANGUAGE C; -CREATE FUNCTION mtm.drop_node(node integer, drop_slot bool default false) RETURNS void -AS 'MODULE_PATHNAME','mtm_drop_node' +-- Stop replication to the node. Node is didsabled, If drop_slot is true, then replication slot is dropped and node can be recovered using basebackup and recover_node function. +-- If drop_slot is false and limit for maximal slot gap was not reached, then node can be restarted using resume_node function. +CREATE FUNCTION mtm.stop_node(node integer, drop_slot bool default false) RETURNS void +AS 'MODULE_PATHNAME','mtm_stop_node' LANGUAGE C; +-- Add new node to the cluster. Number of nodes should not exeed maximal number of nodes in the cluster. CREATE FUNCTION mtm.add_node(conn_str text) RETURNS void AS 'MODULE_PATHNAME','mtm_add_node' LANGUAGE C; --- Create replication slot for the node which was previously dropped together with it's slot +-- Create replication slot for the node which was previously stalled (its replicatoin slot was deleted) CREATE FUNCTION mtm.recover_node(node integer) RETURNS void AS 'MODULE_PATHNAME','mtm_recover_node' LANGUAGE C; +-- Resume previously stopped node with live replication slot. If node was not stopped, this function has no effect. +-- It doesn't create slot and returns error if node is stalled (slot eas dropped) +CREATE FUNCTION mtm.resume_node(node integer) RETURNS void +AS 'MODULE_PATHNAME','mtm_resume_node' +LANGUAGE C; + CREATE FUNCTION mtm.get_snapshot() RETURNS bigint AS 'MODULE_PATHNAME','mtm_get_snapshot' LANGUAGE C; -CREATE FUNCTION mtm.get_csn(tid xid) RETURNS bigint +CREATE FUNCTION mtm.get_csn(xid bigint) RETURNS bigint AS 'MODULE_PATHNAME','mtm_get_csn' LANGUAGE C; @@ -35,28 +53,45 @@ CREATE FUNCTION mtm.get_last_csn() RETURNS bigint AS 'MODULE_PATHNAME','mtm_get_last_csn' LANGUAGE C; - -CREATE TYPE mtm.node_state AS ("id" integer, "disabled" bool, "disconnected" bool, "catchUp" bool, "slotLag" bigint, "avgTransDelay" bigint, "lastStatusChange" timestamp, "oldestSnapshot" bigint, "SenderPid" integer, "SenderStartTime" timestamp, "ReceiverPid" integer, "ReceiverStartTime" timestamp, "connStr" text); +CREATE TYPE mtm.node_state AS ("id" integer, "enabled" bool, "connected" bool, "slot_active" bool, "stopped" bool, "catchUp" bool, "slotLag" bigint, "avgTransDelay" bigint, "lastStatusChange" timestamp, "oldestSnapshot" bigint, "SenderPid" integer, "SenderStartTime" timestamp, "ReceiverPid" integer, "ReceiverStartTime" timestamp, "connStr" text, "connectivityMask" bigint, "nHeartbeats" bigint); CREATE FUNCTION mtm.get_nodes_state() RETURNS SETOF mtm.node_state AS 'MODULE_PATHNAME','mtm_get_nodes_state' LANGUAGE C; -CREATE TYPE mtm.cluster_state AS ("status" text, "disabledNodeMask" bigint, "disconnectedNodeMask" bigint, "catchUpNodeMask" bigint, "liveNodes" integer, "allNodes" integer, "nActiveQueries" integer, "nPendingQueries" integer, "queueSize" bigint, "transCount" bigint, "timeShift" bigint, "recoverySlot" integer, -"xidHashSize" bigint, "gidHashSize" bigint, "oldestXid" integer, "configChanges" integer); +CREATE TYPE mtm.cluster_state AS ("id" integer, "status" text, "disabledNodeMask" bigint, "disconnectedNodeMask" bigint, "catchUpNodeMask" bigint, "liveNodes" integer, "allNodes" integer, "nActiveQueries" integer, "nPendingQueries" integer, "queueSize" bigint, "transCount" bigint, "timeShift" bigint, "recoverySlot" integer, +"xidHashSize" bigint, "gidHashSize" bigint, "oldestXid" bigint, "configChanges" integer, "stalledNodeMask" bigint, "stoppedNodeMask" bigint, "deadNodeMask" bigint, "lastStatusChange" timestamp); -CREATE FUNCTION mtm.get_cluster_state() RETURNS mtm.cluster_state +CREATE TYPE mtm.trans_state AS ("status" text, "gid" text, "xid" bigint, "coordinator" integer, "gxid" bigint, "csn" timestamp, "snapshot" timestamp, "local" boolean, "prepared" boolean, "active" boolean, "twophase" boolean, "votingCompleted" boolean, "participants" bigint, "voted" bigint, "configChanges" integer); + +CREATE FUNCTION mtm.get_trans_by_gid(git text) RETURNS mtm.trans_state +AS 'MODULE_PATHNAME','mtm_get_trans_by_gid' +LANGUAGE C; + +CREATE FUNCTION mtm.get_trans_by_xid(xid bigint) RETURNS mtm.trans_state +AS 'MODULE_PATHNAME','mtm_get_trans_by_xid' +LANGUAGE C; + +CREATE FUNCTION mtm.get_cluster_state() RETURNS mtm.cluster_state AS 'MODULE_PATHNAME','mtm_get_cluster_state' LANGUAGE C; -CREATE FUNCTION mtm.get_cluster_info() RETURNS SETOF mtm.cluster_state -AS 'MODULE_PATHNAME','mtm_get_cluster_info' +CREATE FUNCTION mtm.collect_cluster_info() RETURNS SETOF mtm.cluster_state +AS 'MODULE_PATHNAME','mtm_collect_cluster_info' LANGUAGE C; CREATE FUNCTION mtm.make_table_local(relation regclass) RETURNS void AS 'MODULE_PATHNAME','mtm_make_table_local' LANGUAGE C; +CREATE FUNCTION mtm.broadcast_table(srcTable regclass, dstNodesMask bigint) RETURNS void +AS 'MODULE_PATHNAME','mtm_broadcast_table' +LANGUAGE C; + +CREATE FUNCTION mtm.copy_table(srcTable regclass, dstNode integer) RETURNS void +AS 'MODULE_PATHNAME','mtm_copy_table' +LANGUAGE C; + CREATE FUNCTION mtm.dump_lock_graph() RETURNS text AS 'MODULE_PATHNAME','mtm_dump_lock_graph' LANGUAGE C; @@ -69,11 +104,50 @@ CREATE FUNCTION mtm.inject_2pc_error(stage integer) RETURNS void AS 'MODULE_PATHNAME','mtm_inject_2pc_error' LANGUAGE C; -CREATE FUNCTION mtm.check_deadlock(xid integer) RETURNS boolean +CREATE FUNCTION mtm.check_deadlock(xid bigint) RETURNS boolean AS 'MODULE_PATHNAME','mtm_check_deadlock' LANGUAGE C; --- CREATE TABLE IF NOT EXISTS public.ddl_log (issued timestamp with time zone not null, query text); - --- CREATE TABLE IF NOT EXISTS mtm.local_tables(rel_schema text, rel_name text, primary key(rel_schema, rel_name)); - +CREATE FUNCTION mtm.referee_poll(xid bigint) RETURNS bigint +AS 'MODULE_PATHNAME','mtm_referee_poll' +LANGUAGE C; + +CREATE TABLE IF NOT EXISTS mtm.local_tables(rel_schema name, rel_name name, primary key(rel_schema, rel_name)); + +CREATE OR REPLACE FUNCTION mtm.alter_sequences() RETURNS boolean AS +$$ +DECLARE + seq_class record; + seq_tuple record; + node_id int; + max_nodes int; + new_start bigint; + altered boolean := false; +BEGIN + select current_setting('multimaster.max_nodes') into max_nodes; + select id, "allNodes" into node_id from mtm.get_cluster_state(); + FOR seq_class IN + SELECT '"' || ns.nspname || '"."' || seq.relname || '"' as seqname FROM pg_namespace ns,pg_class seq WHERE seq.relkind = 'S' and seq.relnamespace=ns.oid + LOOP + EXECUTE 'select * from ' || seq_class.seqname INTO seq_tuple; + IF seq_tuple.increment_by != max_nodes THEN + altered := true; + RAISE NOTICE 'Altering step for sequence % to %.', seq_tuple.sequence_name, max_nodes; + EXECUTE 'ALTER SEQUENCE ' || seq_class.seqname || ' INCREMENT BY ' || max_nodes || ';'; + END IF; + IF (seq_tuple.last_value % max_nodes) != node_id THEN + altered := true; + new_start := (seq_tuple.last_value / max_nodes + 1)*max_nodes + node_id; + RAISE NOTICE 'Altering start for sequence % to %.', seq_tuple.sequence_name, new_start; + EXECUTE 'ALTER SEQUENCE ' || seq_class.seqname || ' RESTART WITH ' || new_start || ';'; + END IF; + END LOOP; + IF altered = false THEN + RAISE NOTICE 'All found sequnces have proper params.'; + END IF; + RETURN true; +END +$$ +LANGUAGE plpgsql; + +-- select mtm.alter_sequences(); diff --git a/contrib/mmts/multimaster.c b/contrib/mmts/multimaster.c index 75d9286aaa..460b4012d7 100644 --- a/contrib/mmts/multimaster.c +++ b/contrib/mmts/multimaster.c @@ -13,6 +13,7 @@ #include "funcapi.h" #include "fmgr.h" #include "miscadmin.h" +#include "pg_socket.h" #include "libpq-fe.h" #include "lib/stringinfo.h" @@ -46,6 +47,8 @@ #include "utils/builtins.h" #include "utils/memutils.h" #include "commands/dbcommands.h" +#include "commands/extension.h" +#include "commands/sequence.h" #include "postmaster/autovacuum.h" #include "storage/pmsignal.h" #include "storage/proc.h" @@ -61,10 +64,13 @@ #include "access/htup_details.h" #include "catalog/indexing.h" #include "catalog/namespace.h" +#include "catalog/pg_constraint_fn.h" +#include "catalog/pg_proc.h" #include "pglogical_output/hooks.h" #include "parser/analyze.h" #include "parser/parse_relation.h" #include "parser/parse_type.h" +#include "parser/parse_func.h" #include "catalog/pg_class.h" #include "catalog/pg_type.h" #include "tcop/pquery.h" @@ -72,24 +78,26 @@ #include "multimaster.h" #include "ddd.h" +#include "state.h" -typedef struct { - TransactionId xid; /* local transaction ID */ +typedef struct { + TransactionId xid; /* local transaction ID */ GlobalTransactionId gtid; /* global transaction ID assigned by coordinator of transaction */ - bool isTwoPhase; /* user level 2PC */ - bool isReplicated; /* transaction on replica */ + bool isTwoPhase; /* user level 2PC */ + bool isReplicated; /* transaction on replica */ bool isDistributed; /* transaction performed INSERT/UPDATE/DELETE and has to be replicated to other nodes */ - bool isPrepared; /* transaction is perpared at first stage of 2PC */ - bool isSuspended; /* prepared transaction is suspended because coordinator node is switch to offline */ - bool isTransactionBlock; /* is transaction block */ - bool containsDML; /* transaction contains DML statements */ - XidStatus status; /* transaction status */ - csn_t snapshot; /* transaction snaphsot */ - csn_t csn; /* CSN */ - pgid_t gid; /* global transaction identifier (used by 2pc) */ + bool isPrepared; /* transaction is prepared at first stage of 2PC */ + bool isSuspended; /* prepared transaction is suspended because coordinator node is switch to offline */ + bool isTransactionBlock; /* is transaction block */ + bool containsDML; /* transaction contains DML statements */ + bool isActive; /* transaction is active (nActiveTransaction counter is incremented) */ + XidStatus status; /* transaction status */ + csn_t snapshot; /* transaction snapshot */ + csn_t csn; /* CSN */ + pgid_t gid; /* global transaction identifier (used by 2pc) */ } MtmCurrentTrans; -typedef enum +typedef enum { MTM_STATE_LOCK_ID } MtmLockIds; @@ -99,7 +107,7 @@ typedef enum #define MTM_MAP_SIZE MTM_HASH_SIZE #define MIN_WAIT_TIMEOUT 1000 #define MAX_WAIT_TIMEOUT 100000 -#define MAX_WAIT_LOOPS 10000 // 1000000 +#define MAX_WAIT_LOOPS 10000 // 1000000 #define STATUS_POLL_DELAY USECS_PER_SEC void _PG_init(void); @@ -109,20 +117,26 @@ PG_MODULE_MAGIC; PG_FUNCTION_INFO_V1(mtm_start_replication); PG_FUNCTION_INFO_V1(mtm_stop_replication); -PG_FUNCTION_INFO_V1(mtm_drop_node); +PG_FUNCTION_INFO_V1(mtm_stop_node); PG_FUNCTION_INFO_V1(mtm_add_node); PG_FUNCTION_INFO_V1(mtm_poll_node); PG_FUNCTION_INFO_V1(mtm_recover_node); +PG_FUNCTION_INFO_V1(mtm_resume_node); PG_FUNCTION_INFO_V1(mtm_get_snapshot); PG_FUNCTION_INFO_V1(mtm_get_csn); +PG_FUNCTION_INFO_V1(mtm_get_trans_by_gid); +PG_FUNCTION_INFO_V1(mtm_get_trans_by_xid); PG_FUNCTION_INFO_V1(mtm_get_last_csn); PG_FUNCTION_INFO_V1(mtm_get_nodes_state); PG_FUNCTION_INFO_V1(mtm_get_cluster_state); -PG_FUNCTION_INFO_V1(mtm_get_cluster_info); +PG_FUNCTION_INFO_V1(mtm_collect_cluster_info); PG_FUNCTION_INFO_V1(mtm_make_table_local); PG_FUNCTION_INFO_V1(mtm_dump_lock_graph); PG_FUNCTION_INFO_V1(mtm_inject_2pc_error); PG_FUNCTION_INFO_V1(mtm_check_deadlock); +PG_FUNCTION_INFO_V1(mtm_referee_poll); +PG_FUNCTION_INFO_V1(mtm_broadcast_table); +PG_FUNCTION_INFO_V1(mtm_copy_table); static Snapshot MtmGetSnapshot(Snapshot snapshot); static void MtmInitialize(void); @@ -131,7 +145,7 @@ static void MtmBeginTransaction(MtmCurrentTrans* x); static void MtmPrePrepareTransaction(MtmCurrentTrans* x); static void MtmPostPrepareTransaction(MtmCurrentTrans* x); static void MtmAbortPreparedTransaction(MtmCurrentTrans* x); -static void MtmCommitPreparedTransaction(MtmCurrentTrans* x); +static void MtmPreCommitPreparedTransaction(MtmCurrentTrans* x); static void MtmEndTransaction(MtmCurrentTrans* x, bool commit); static bool MtmTwoPhaseCommit(MtmCurrentTrans* x); static TransactionId MtmGetOldestXmin(Relation rel, bool ignoreVacuum); @@ -141,9 +155,13 @@ static bool MtmDetectGlobalDeadLock(PGPROC* proc); static void MtmAddSubtransactions(MtmTransState* ts, TransactionId* subxids, int nSubxids); static char const* MtmGetName(void); static size_t MtmGetTransactionStateSize(void); -static void MtmSerializeTransactionState(void* ctx); -static void MtmDeserializeTransactionState(void* ctx); -static void MtmInitializeSequence(int64* start, int64* step); +static void MtmSerializeTransactionState(void* ctx); +static void MtmDeserializeTransactionState(void* ctx); +static void MtmInitializeSequence(int64* start, int64* step); +static void* MtmCreateSavepointContext(void); +static void MtmRestoreSavepointContext(void* ctx); +static void MtmReleaseSavepointContext(void* ctx); +static void MtmSetRemoteFunction(char const* list, void* extra); static void MtmCheckClusterLock(void); static void MtmCheckSlots(void); @@ -153,59 +171,64 @@ static void MtmShmemStartup(void); static BgwPool* MtmPoolConstructor(void); static bool MtmRunUtilityStmt(PGconn* conn, char const* sql, char **errmsg); -static void MtmBroadcastUtilityStmt(char const* sql, bool ignoreError); -static bool MtmProcessDDLCommand(char const* queryString, bool transactional, bool contextFree); +static void MtmBroadcastUtilityStmt(char const* sql, bool ignoreError, int forceOnNode); +static void MtmProcessDDLCommand(char const* queryString, bool transactional); + +static void MtmLockCluster(void); +static void MtmUnlockCluster(void); MtmState* Mtm; VacuumStmt* MtmVacuumStmt; -IndexStmt* MtmIndexStmt; -DropStmt* MtmDropStmt; +IndexStmt* MtmIndexStmt; +DropStmt* MtmDropStmt; +void* MtmTablespaceStmt; /* CREATE/DELETE tablespace */ MemoryContext MtmApplyContext; +MtmConnectionInfo* MtmConnections; HTAB* MtmXid2State; HTAB* MtmGid2State; +static HTAB* MtmRemoteFunctions; static HTAB* MtmLocalTables; static bool MtmIsRecoverySession; -static MtmConnectionInfo* MtmConnections; static MtmCurrentTrans MtmTx; - static dlist_head MtmLsnMapping = DLIST_STATIC_INIT(MtmLsnMapping); -static TransactionManager MtmTM = { - PgTransactionIdGetStatus, +static TransactionManager MtmTM = +{ + PgTransactionIdGetStatus, PgTransactionIdSetTreeStatus, - MtmGetSnapshot, - PgGetNewTransactionId, - MtmGetOldestXmin, - PgTransactionIdIsInProgress, - PgGetGlobalTransactionId, - MtmXidInMVCCSnapshot, - MtmDetectGlobalDeadLock, + MtmGetSnapshot, + PgGetNewTransactionId, + MtmGetOldestXmin, + PgTransactionIdIsInProgress, + PgGetGlobalTransactionId, + MtmXidInMVCCSnapshot, + MtmDetectGlobalDeadLock, MtmGetName, MtmGetTransactionStateSize, MtmSerializeTransactionState, MtmDeserializeTransactionState, - MtmInitializeSequence + MtmInitializeSequence, + MtmCreateSavepointContext, + MtmRestoreSavepointContext, + MtmReleaseSavepointContext }; -char const* const MtmNodeStatusMnem[] = -{ - "Initialization", - "Offline", - "Connected", - "Online", +char const* const MtmNodeStatusMnem[] = +{ + "Disabled", "Recovery", - "InMinor", - "OutOfService" + "Recovered", + "Online" }; -char const* const MtmTxnStatusMnem[] = -{ - "InProgress", - "Committed", +char const* const MtmTxnStatusMnem[] = +{ + "InProgress", + "Committed", "Aborted", "Unknown" }; @@ -213,81 +236,176 @@ char const* const MtmTxnStatusMnem[] = bool MtmDoReplication; char* MtmDatabaseName; char* MtmDatabaseUser; - -int MtmNodes; -int MtmNodeId; -int MtmReplicationNodeId; -int MtmArbiterPort; -int MtmConnectTimeout; -int MtmReconnectTimeout; -int MtmNodeDisableDelay; -int MtmTransSpillThreshold; -int MtmMaxNodes; -int MtmHeartbeatSendTimeout; -int MtmHeartbeatRecvTimeout; -int MtmMin2PCTimeout; -int MtmMax2PCRatio; +Oid MtmDatabaseId; +bool MtmBackgroundWorker; + +int MtmNodes; +int MtmNodeId; +int MtmReplicationNodeId; +int MtmArbiterPort; +int MtmNodeDisableDelay; +int MtmTransSpillThreshold; +int MtmMaxNodes; +int MtmHeartbeatSendTimeout; +int MtmHeartbeatRecvTimeout; +int MtmMin2PCTimeout; +int MtmMax2PCRatio; bool MtmUseDtm; +bool MtmUseRDMA; bool MtmPreserveCommitOrder; -bool MtmVolksWagenMode; - -TransactionId MtmUtilityProcessedInXid; +bool MtmVolksWagenMode; /* Pretend to be normal postgres. This means skip some NOTICE's and use local sequences */ +bool MtmMajorNode; +char* MtmRefereeConnStr; static char* MtmConnStrs; +static char* MtmRemoteFunctionsList; static char* MtmClusterName; -static int MtmQueueSize; -static int MtmWorkers; -static int MtmVacuumDelay; -static int MtmMinRecoveryLag; -static int MtmMaxRecoveryLag; -static int MtmGcPeriod; -static bool MtmIgnoreTablesWithoutPk; -static int MtmLockCount; -static int MtmSenderStarted; +static int MtmQueueSize; +static int MtmWorkers; +static int MtmVacuumDelay; +static int MtmMinRecoveryLag; +static int MtmMaxRecoveryLag; +static int MtmGcPeriod; +static bool MtmIgnoreTablesWithoutPk; +static int MtmLockCount; +static bool MtmBreakConnection; +static bool MtmBypass; +static bool MtmClusterLocked; +static bool MtmInsideTransaction; +static bool MtmReferee; +static bool MtmMonotonicSequences; +static void const* MtmDDLStatement; static ExecutorStart_hook_type PreviousExecutorStartHook; static ExecutorFinish_hook_type PreviousExecutorFinishHook; static ProcessUtility_hook_type PreviousProcessUtilityHook; static shmem_startup_hook_type PreviousShmemStartupHook; - -static nodemask_t lastKnownMatrix[MAX_NODES]; +static seq_nextval_hook_t PreviousSeqNextvalHook; static void MtmExecutorStart(QueryDesc *queryDesc, int eflags); static void MtmExecutorFinish(QueryDesc *queryDesc); static void MtmProcessUtility(Node *parsetree, const char *queryString, ProcessUtilityContext context, ParamListInfo params, DestReceiver *dest, char *completionTag); +static void MtmSeqNextvalHook(Oid seqid, int64 next); + +static bool MtmAtExitHookRegistered = false; + +/* + * Release multimaster main lock if been hold. + * This function is called when backend is terminated because of critical error or when error is catched + * by FINALLY block + */ +void MtmReleaseLocks(void) +{ + MtmResetTransaction(); + if (MtmInsideTransaction) + { + MtmLock(LW_EXCLUSIVE); + Assert(Mtm->nRunningTransactions > 0); + Mtm->nRunningTransactions -= 1; + MtmInsideTransaction = false; + MtmUnlock(); + } + if (MtmClusterLocked) { + MtmUnlockCluster(); + } +} /* * ------------------------------------------- * Synchronize access to MTM structures. - * Using LWLock seems to be more efficient (at our benchmarks) + * Using LWLock seems to be more efficient (at our benchmarks) + * Multimaster uses trash of 2N+1 lwlocks, where N is number of nodes. + * locks[0] is used to synchronize access to multimaster state, + * locks[1..N] are used to provide exclusive access to replication session for each node + * locks[N+1..2*N] are used to synchronize access to distributed lock graph at each node * ------------------------------------------- */ + +// #define DEBUG_MTM_LOCK 1 + +#if DEBUG_MTM_LOCK +static timestamp_t MtmLockLastReportTime; +static timestamp_t MtmLockElapsedWaitTime; +static timestamp_t MtmLockMaxWaitTime; +static size_t MtmLockHitCount; +#endif + void MtmLock(LWLockMode mode) { - timestamp_t start, stop; - if (mode == LW_EXCLUSIVE || MtmLockCount != 0) { - if (MtmLockCount++ != 0) { + if (!MtmAtExitHookRegistered) { + atexit(MtmReleaseLocks); + MtmAtExitHookRegistered = true; + } + if (MtmLockCount != 0 && Mtm->lastLockHolder == MyProcPid) { + MtmLockCount += 1; + } + else + { +#if DEBUG_MTM_LOCK + timestamp_t start, stop; + start = MtmGetSystemTime(); +#endif + if (MyProc == NULL) { /* Can not wait if have no PGPROC. It can happen at process exit. TODO: without lock we can get race condition and corrupt Mtm state */ return; } + LWLockAcquire((LWLockId)&Mtm->locks[MTM_STATE_LOCK_ID], mode); +#if DEBUG_MTM_LOCK + stop = MtmGetSystemTime(); + MtmLockElapsedWaitTime += stop - start; + if (stop - start > MtmLockMaxWaitTime) { + MtmLockMaxWaitTime = stop - start; + } + MtmLockHitCount += 1; + if (stop - MtmLockLastReportTime > USECS_PER_SEC) { + MTM_LOG1("%d: average lock wait time %lld usec, maximal lock wait time: %lld usec", + MyProcPid, MtmLockElapsedWaitTime/MtmLockHitCount, MtmLockMaxWaitTime); + MtmLockLastReportTime = stop; + MtmLockMaxWaitTime = 0; + MtmLockElapsedWaitTime = 0; + MtmLockHitCount = 0; + } +#endif + if (mode == LW_EXCLUSIVE) { + Assert(MtmLockCount == 0); + Assert(MyProcPid != 0); + Mtm->lastLockHolder = MyProcPid; + Assert(MyProcPid); + MtmLockCount = 1; + } else { + MtmLockCount = 0; + } } - start = MtmGetSystemTime(); - LWLockAcquire((LWLockId)&Mtm->locks[MTM_STATE_LOCK_ID], mode); - stop = MtmGetSystemTime(); - if (stop > start + MSEC_TO_USEC(MtmHeartbeatSendTimeout)) { - MTM_LOG1("%d: obtaining %s lock takes %ld microseconds", MyProcPid, (mode == LW_EXCLUSIVE ? "exclusive" : "shared"), stop - start); - } - Mtm->lastLockHolder = MyProcPid; } void MtmUnlock(void) { - if (MtmLockCount != 0 && --MtmLockCount != 0) { + if (MtmLockCount != 0 && --MtmLockCount != 0) { + Assert(Mtm->lastLockHolder == MyProcPid); return; } - LWLockRelease((LWLockId)&Mtm->locks[MTM_STATE_LOCK_ID]); + + Mtm->lastLockHolder = 0; + + /* If we have no PGPROC, then lock was not obtained. */ + if (MyProc != NULL) + LWLockRelease((LWLockId)&Mtm->locks[MTM_STATE_LOCK_ID]); +} + +void MtmDeepUnlock(void) +{ + if (MtmLockCount == 0) + return; + + Assert(Mtm->lastLockHolder == MyProcPid); + + MtmLockCount = 0; Mtm->lastLockHolder = 0; + + /* If we have no PGPROC, then lock was not obtained. */ + if (MyProc != NULL) + LWLockRelease((LWLockId)&Mtm->locks[MTM_STATE_LOCK_ID]); } void MtmLockNode(int nodeId, LWLockMode mode) @@ -296,10 +414,15 @@ void MtmLockNode(int nodeId, LWLockMode mode) LWLockAcquire((LWLockId)&Mtm->locks[nodeId], mode); } +bool MtmTryLockNode(int nodeId, LWLockMode mode) +{ + return LWLockConditionalAcquire((LWLockId)&Mtm->locks[nodeId], mode); +} + void MtmUnlockNode(int nodeId) { Assert(nodeId > 0 && nodeId <= MtmMaxNodes*2); - LWLockRelease((LWLockId)&Mtm->locks[nodeId]); + LWLockRelease((LWLockId)&Mtm->locks[nodeId]); } /* @@ -311,64 +434,68 @@ void MtmUnlockNode(int nodeId) timestamp_t MtmGetSystemTime(void) { - struct timeval tv; - gettimeofday(&tv, NULL); - return (timestamp_t)tv.tv_sec*USECS_PER_SEC + tv.tv_usec; + struct timeval tv; + gettimeofday(&tv, NULL); + return (timestamp_t)tv.tv_sec*USECS_PER_SEC + tv.tv_usec; } +/* + * Get adjusted system time: taking in account time shift + */ timestamp_t MtmGetCurrentTime(void) { - return MtmGetSystemTime() + Mtm->timeShift; + return MtmGetSystemTime() + Mtm->timeShift; } void MtmSleep(timestamp_t interval) { - struct timespec ts; - struct timespec rem; - ts.tv_sec = interval/USECS_PER_SEC; - ts.tv_nsec = interval%USECS_PER_SEC*1000; + struct timespec ts; + struct timespec rem; + ts.tv_sec = interval/USECS_PER_SEC; + ts.tv_nsec = interval%USECS_PER_SEC*1000; - while (nanosleep(&ts, &rem) < 0) { - Assert(errno == EINTR); - ts = rem; - } + while (nanosleep(&ts, &rem) < 0) { + Assert(errno == EINTR); + CHECK_FOR_INTERRUPTS(); + ts = rem; + } } - -/** + +/** * Return ascending unique timestamp which is used as CSN */ csn_t MtmAssignCSN() { - csn_t csn = MtmGetCurrentTime(); - if (csn <= Mtm->csn) { - csn = ++Mtm->csn; - } else { - Mtm->csn = csn; - } - return csn; + csn_t csn = MtmGetCurrentTime(); + if (csn <= Mtm->csn) { + csn = ++Mtm->csn; + } else { + Mtm->csn = csn; + } + return csn; } /** - * "Adjust" system clock if we receive message from future + * "Adjust" system clock if we receive message from future */ csn_t MtmSyncClock(csn_t global_csn) { - csn_t local_csn; - while ((local_csn = MtmAssignCSN()) < global_csn) { - Mtm->timeShift += global_csn - local_csn; - } - return local_csn; + csn_t local_csn; + while ((local_csn = MtmAssignCSN()) < global_csn) { + Mtm->timeShift += global_csn - local_csn; + } + return local_csn; } /* * Distribute transaction manager functions - */ + */ static char const* MtmGetName(void) { return MULTIMASTER_NAME; } -static size_t +static size_t MtmGetTransactionStateSize(void) { return sizeof(MtmTx); @@ -402,6 +529,20 @@ MtmInitializeSequence(int64* start, int64* step) } } +static void* MtmCreateSavepointContext(void) +{ + return (void*)(size_t)MtmTx.containsDML; +} + +static void MtmRestoreSavepointContext(void* ctx) +{ + MtmTx.containsDML = ctx != NULL; +} + +static void MtmReleaseSavepointContext(void* ctx) +{ +} + /* * ------------------------------------------- @@ -409,35 +550,64 @@ MtmInitializeSequence(int64* start, int64* step) * ------------------------------------------- */ -csn_t MtmTransactionSnapshot(TransactionId xid) +/* + * Get snapshot of transaction proceed by WAL sender pglogical plugin. + * If it is local transaction or replication node is not in participant mask, then return INVALID_CSN. + * Transaction should be skipped by WAL sender in the following cases: + * 1. Transaction was replicated from some other node and it is not a recovery process. + * 2. State of transaction is unknown + * 3. Replication node is not participated in transaction + */ +csn_t MtmDistributedTransactionSnapshot(TransactionId xid, int nodeId, nodemask_t* participantsMask) { csn_t snapshot = INVALID_CSN; - + *participantsMask = 0; MtmLock(LW_SHARED); if (Mtm->status == MTM_ONLINE) { MtmTransState* ts = (MtmTransState*)hash_search(MtmXid2State, &xid, HASH_FIND, NULL); - if (ts != NULL && !ts->isLocal) { - snapshot = ts->snapshot; - Assert(ts->gtid.node == MtmNodeId || MtmIsRecoverySession); + if (ts != NULL) { + *participantsMask = ts->participantsMask; + /* If node is disables, then we are in a process of recovery of this node */ + if (!ts->isLocal && BIT_CHECK(ts->participantsMask|Mtm->disabledNodeMask, nodeId-1)) { + snapshot = ts->snapshot; + Assert(ts->gtid.node == MtmNodeId || MtmIsRecoverySession); + } else { + MTM_LOG1("Do not send transaction %s (%llu) to node %d participants mask %llx", + ts->gid, (long64)ts->xid, nodeId, ts->participantsMask); + } } } MtmUnlock(); - return snapshot; + return snapshot; +} + +void MtmSetSnapshot(csn_t globalSnapshot) +{ + MtmLock(LW_EXCLUSIVE); + MtmSyncClock(globalSnapshot); + MtmTx.snapshot = globalSnapshot; + MtmUnlock(); } Snapshot MtmGetSnapshot(Snapshot snapshot) { - snapshot = PgGetSnapshotData(snapshot); + snapshot = PgGetSnapshotData(snapshot); + if (XactIsoLevel == XACT_READ_COMMITTED && MtmTx.snapshot != INVALID_CSN) { + MtmTx.snapshot = MtmGetCurrentTime(); + if (TransactionIdIsValid(GetCurrentTransactionIdIfAny())) { + LogLogicalMessage("S", (char*)&MtmTx.snapshot, sizeof(MtmTx.snapshot), true); + } + } RecentGlobalDataXmin = RecentGlobalXmin = Mtm->oldestXid; - return snapshot; + return snapshot; } TransactionId MtmGetOldestXmin(Relation rel, bool ignoreVacuum) { - TransactionId xmin = PgGetOldestXmin(NULL, false); /* consider all backends */ - if (TransactionIdIsValid(xmin)) { + TransactionId xmin = PgGetOldestXmin(NULL, false); /* consider all backends */ + if (TransactionIdIsValid(xmin)) { MtmLock(LW_EXCLUSIVE); xmin = MtmAdjustOldestXid(xmin); MtmUnlock(); @@ -446,180 +616,208 @@ TransactionId MtmGetOldestXmin(Relation rel, bool ignoreVacuum) } bool MtmXidInMVCCSnapshot(TransactionId xid, Snapshot snapshot) -{ +{ #if TRACE_SLEEP_TIME - static timestamp_t firstReportTime; - static timestamp_t prevReportTime; - static timestamp_t totalSleepTime; - static timestamp_t maxSleepTime; + static timestamp_t firstReportTime; + static timestamp_t prevReportTime; + static timestamp_t totalSleepTime; + static timestamp_t maxSleepTime; #endif - timestamp_t start = MtmGetSystemTime(); - timestamp_t delay = MIN_WAIT_TIMEOUT; + timestamp_t delay = MIN_WAIT_TIMEOUT; int i; - Assert(xid != InvalidTransactionId); - - if (!MtmUseDtm) { +#if DEBUG_LEVEL > 1 + timestamp_t start = MtmGetSystemTime(); +#endif + + Assert(xid != InvalidTransactionId); + + if (!MtmUseDtm || TransactionIdPrecedes(xid, Mtm->oldestXid)) { return PgXidInMVCCSnapshot(xid, snapshot); } MtmLock(LW_SHARED); #if TRACE_SLEEP_TIME - if (firstReportTime == 0) { - firstReportTime = MtmGetCurrentTime(); - } + if (firstReportTime == 0) { + firstReportTime = MtmGetCurrentTime(); + } #endif - + for (i = 0; i < MAX_WAIT_LOOPS; i++) - { - MtmTransState* ts = (MtmTransState*)hash_search(MtmXid2State, &xid, HASH_FIND, NULL); - if (ts != NULL /*&& ts->status != TRANSACTION_STATUS_IN_PROGRESS*/) - { - if (ts->csn > MtmTx.snapshot) { - MTM_LOG4("%d: tuple with xid=%d(csn=%ld) is invisibile in snapshot %ld", - MyProcPid, xid, ts->csn, MtmTx.snapshot); - if (MtmGetSystemTime() - start > USECS_PER_SEC) { - elog(WARNING, "Backend %d waits for transaction %u status %ld usecs", MyProcPid, xid, MtmGetSystemTime() - start); + { + MtmTransState* ts = (MtmTransState*)hash_search(MtmXid2State, &xid, HASH_FIND, NULL); + if (ts != NULL /*&& ts->status != TRANSACTION_STATUS_IN_PROGRESS*/) + { + if (ts->csn > MtmTx.snapshot) { + MTM_LOG4("%d: tuple with xid=%lld(csn=%lld) is invisible in snapshot %lld", + MyProcPid, (long64)xid, ts->csn, MtmTx.snapshot); +#if DEBUG_LEVEL > 1 + if (MtmGetSystemTime() - start > USECS_PER_SEC) { + MTM_ELOG(WARNING, "Backend %d waits for transaction %s (%llu) status %lld usecs", MyProcPid, ts->gid, (long64)xid, MtmGetSystemTime() - start); } +#endif + MtmUnlock(); + return true; + } + if (ts->status == TRANSACTION_STATUS_UNKNOWN) + { + MTM_LOG3("%d: wait for in-doubt transaction %u in snapshot %llu", MyProcPid, xid, MtmTx.snapshot); MtmUnlock(); - return true; - } - if (ts->status == TRANSACTION_STATUS_UNKNOWN) - { - MTM_LOG3("%d: wait for in-doubt transaction %u in snapshot %lu", MyProcPid, xid, MtmTx.snapshot); - MtmUnlock(); #if TRACE_SLEEP_TIME - { - timestamp_t delta, now = MtmGetCurrentTime(); + { + timestamp_t delta, now = MtmGetCurrentTime(); #endif - MtmSleep(delay); + MtmSleep(delay); #if TRACE_SLEEP_TIME - delta = MtmGetCurrentTime() - now; - totalSleepTime += delta; - if (delta > maxSleepTime) { - maxSleepTime = delta; - } - if (now > prevReportTime + USECS_PER_SEC*10) { - prevReportTime = now; - if (firstReportTime == 0) { - firstReportTime = now; - } else { - MTM_LOG3("Snapshot sleep %lu of %lu usec (%f%%), maximum=%lu", totalSleepTime, now - firstReportTime, totalSleepTime*100.0/(now - firstReportTime), maxSleepTime); - } - } - } + delta = MtmGetCurrentTime() - now; + totalSleepTime += delta; + if (delta > maxSleepTime) { + maxSleepTime = delta; + } + if (now > prevReportTime + USECS_PER_SEC*10) { + prevReportTime = now; + if (firstReportTime == 0) { + firstReportTime = now; + } else { + MTM_LOG3("Snapshot sleep %llu of %llu usec (%f%%), maximum=%llu", totalSleepTime, now - firstReportTime, totalSleepTime*100.0/(now - firstReportTime), maxSleepTime); + } + } + } #endif - if (delay*2 <= MAX_WAIT_TIMEOUT) { - delay *= 2; - } + if (delay*2 <= MAX_WAIT_TIMEOUT) { + delay *= 2; + } MtmLock(LW_SHARED); - } - else - { - bool invisible = ts->status != TRANSACTION_STATUS_COMMITTED; - MTM_LOG4("%d: tuple with xid=%d(csn= %ld) is %s in snapshot %ld", - MyProcPid, xid, ts->csn, invisible ? "rollbacked" : "committed", MtmTx.snapshot); - MtmUnlock(); - if (MtmGetSystemTime() - start > USECS_PER_SEC) { - elog(WARNING, "Backend %d waits for %s transaction %u %ld usecs", MyProcPid, invisible ? "rollbacked" : "committed", xid, MtmGetSystemTime() - start); + } + else + { + bool invisible = ts->status != TRANSACTION_STATUS_COMMITTED; + MTM_LOG4("%d: tuple with xid=%lld(csn= %lld) is %s in snapshot %lld", + MyProcPid, (long64)xid, ts->csn, invisible ? "rollbacked" : "committed", MtmTx.snapshot); + MtmUnlock(); +#if DEBUG_LEVEL > 1 + if (MtmGetSystemTime() - start > USECS_PER_SEC) { + MTM_ELOG(WARNING, "Backend %d waits for %s transaction %s (%llu) %lld usecs", MyProcPid, invisible ? "rollbacked" : "committed", + ts->gid, (long64)xid, MtmGetSystemTime() - start); } - return invisible; - } - } - else - { - MTM_LOG4("%d: visibility check is skept for transaction %u in snapshot %lu", MyProcPid, xid, MtmTx.snapshot); +#endif + return invisible; + } + } + else + { + MTM_LOG4("%d: visibility check is skipped for transaction %llu in snapshot %llu", MyProcPid, (long64)xid, MtmTx.snapshot); MtmUnlock(); return PgXidInMVCCSnapshot(xid, snapshot); - } - } + } + } MtmUnlock(); - elog(ERROR, "Failed to get status of XID %d in %ld usec", xid, MtmGetSystemTime() - start); +#if DEBUG_LEVEL > 1 + MTM_ELOG(ERROR, "Failed to get status of XID %llu in %lld usec", (long64)xid, MtmGetSystemTime() - start); +#else + MTM_ELOG(ERROR, "Failed to get status of XID %llu", (long64)xid); +#endif return true; -} +} /* * There can be different oldest XIDs at different cluster node. - * We collest oldest CSNs from all nodes and choose minimum from them. + * We collect oldest CSNs from all nodes and choose minimum from them. * If no such XID can be located, then return previously observed oldest XID */ -static TransactionId +static TransactionId MtmAdjustOldestXid(TransactionId xid) { - int i; + int i; csn_t oldestSnapshot = INVALID_CSN; MtmTransState *prev = NULL; MtmTransState *ts = (MtmTransState*)hash_search(MtmXid2State, &xid, HASH_FIND, NULL); - MTM_LOG2("%d: MtmAdjustOldestXid(%d): snapshot=%ld, csn=%ld, status=%d", MyProcPid, xid, ts != NULL ? ts->snapshot : 0, ts != NULL ? ts->csn : 0, ts != NULL ? ts->status : -1); + MTM_LOG2("%d: MtmAdjustOldestXid(%d): snapshot=%lld, csn=%lld, status=%d", MyProcPid, xid, ts != NULL ? ts->snapshot : 0, ts != NULL ? ts->csn : 0, ts != NULL ? ts->status : -1); Mtm->gcCount = 0; - if (ts != NULL) { + if (ts != NULL) { oldestSnapshot = ts->snapshot; Assert(oldestSnapshot != INVALID_CSN); - if (Mtm->nodes[MtmNodeId-1].oldestSnapshot < oldestSnapshot) { + if (Mtm->nodes[MtmNodeId-1].oldestSnapshot < oldestSnapshot) { Mtm->nodes[MtmNodeId-1].oldestSnapshot = oldestSnapshot; } else { oldestSnapshot = Mtm->nodes[MtmNodeId-1].oldestSnapshot; } - for (i = 0; i < Mtm->nAllNodes; i++) { + for (i = 0; i < Mtm->nAllNodes; i++) { if (!BIT_CHECK(Mtm->disabledNodeMask, i) - && Mtm->nodes[i].oldestSnapshot < oldestSnapshot) - { + && Mtm->nodes[i].oldestSnapshot < oldestSnapshot) + { oldestSnapshot = Mtm->nodes[i].oldestSnapshot; } } - if (oldestSnapshot > MtmVacuumDelay*USECS_PER_SEC) { + if (oldestSnapshot > MtmVacuumDelay*USECS_PER_SEC) { oldestSnapshot -= MtmVacuumDelay*USECS_PER_SEC; - } else { + } else { oldestSnapshot = 0; } - - for (ts = Mtm->transListHead; - ts != NULL - && (ts->status == TRANSACTION_STATUS_ABORTED || ts->status == TRANSACTION_STATUS_COMMITTED) + + for (ts = Mtm->transListHead; + ts != NULL + && (ts->status == TRANSACTION_STATUS_ABORTED || ts->status == TRANSACTION_STATUS_COMMITTED) && ts->csn < oldestSnapshot && !ts->isPinned && TransactionIdPrecedes(ts->xid, xid); - prev = ts, ts = ts->next) - { - if (prev != NULL) { + prev = ts, ts = ts->next) + { + Assert(!ts->isActive); + if (prev != NULL) { /* Remove information about too old transactions */ hash_search(MtmXid2State, &prev->xid, HASH_REMOVE, NULL); hash_search(MtmGid2State, &prev->gid, HASH_REMOVE, NULL); } } - } + if (ts != NULL) { + MTM_LOG2("Adjust(%lld) stop at snashot %lld, xid %lld, pinned=%d, oldestSnaphsot=%lld\n", + (long64)xid, ts->csn, (long64)ts->xid, ts->isPinned, oldestSnapshot); + } + } - if (MtmUseDtm && !MtmVolksWagenMode) - { - if (prev != NULL) { - MTM_LOG2("%d: MtmAdjustOldestXid: oldestXid=%d, prev->xid=%d, prev->status=%s, prev->snapshot=%ld, ts->xid=%d, ts->status=%d, ts->snapshot=%ld, oldestSnapshot=%ld", + if (MtmUseDtm && !MtmVolksWagenMode) + { + if (prev != NULL) { + MTM_LOG2("%d: MtmAdjustOldestXid: oldestXid=%d, prev->xid=%d, prev->status=%s, prev->snapshot=%lld, ts->xid=%d, ts->status=%d, ts->snapshot=%lld, oldestSnapshot=%lld", MyProcPid, xid, prev->xid, MtmTxnStatusMnem[prev->status], prev->snapshot, (ts ? ts->xid : 0), (ts ? ts->status : -1), (ts ? ts->snapshot : -1), oldestSnapshot); Mtm->transListHead = prev; - Mtm->oldestXid = xid = prev->xid; - } else if (TransactionIdPrecedes(Mtm->oldestXid, xid)) { + Mtm->oldestXid = xid = prev->xid; + } else if (TransactionIdPrecedes(Mtm->oldestXid, xid)) { xid = Mtm->oldestXid; } - } else { - if (prev != NULL) { - MTM_LOG2("%d: MtmAdjustOldestXid: oldestXid=%d, prev->xid=%d, prev->status=%s, prev->snapshot=%ld, ts->xid=%d, ts->status=%d, ts->snapshot=%ld, oldestSnapshot=%ld", + } else { + if (prev != NULL) { + MTM_LOG2("%d: MtmAdjustOldestXid: oldestXid=%d, prev->xid=%d, prev->status=%s, prev->snapshot=%lld, ts->xid=%d, ts->status=%d, ts->snapshot=%lld, oldestSnapshot=%lld", MyProcPid, xid, prev->xid, MtmTxnStatusMnem[prev->status], prev->snapshot, (ts ? ts->xid : 0), (ts ? ts->status : -1), (ts ? ts->snapshot : -1), oldestSnapshot); Mtm->transListHead = prev; } } - return xid; + + if (!MyReplicationSlot) { + MtmCheckSlots(); + } + + return xid; } + + + + /* * ------------------------------------------- - * Transaction list manipulation + * Transaction list manipulation. + * All distributed transactions are linked in L1-list ordered by transaction start time. + * This list is inspected by MtmAdjustOldestXid and transactions which are not used in any snapshot at any node + * are removed from the list and from the hash. * ------------------------------------------- */ - static void MtmTransactionListAppend(MtmTransState* ts) { - if (!ts->isEnqueued) { + if (!ts->isEnqueued) { ts->isEnqueued = true; ts->next = NULL; ts->nSubxids = 0; @@ -630,31 +828,31 @@ static void MtmTransactionListAppend(MtmTransState* ts) static void MtmTransactionListInsertAfter(MtmTransState* after, MtmTransState* ts) { - ts->next = after->next; - after->next = ts; + ts->next = after->next; + after->next = ts; ts->isEnqueued = true; - if (Mtm->transListTail == &after->next) { - Mtm->transListTail = &ts->next; - } + if (Mtm->transListTail == &after->next) { + Mtm->transListTail = &ts->next; + } } static void MtmAddSubtransactions(MtmTransState* ts, TransactionId* subxids, int nSubxids) { - int i; + int i; ts->nSubxids = nSubxids; - for (i = 0; i < nSubxids; i++) { - bool found; + for (i = 0; i < nSubxids; i++) { + bool found; MtmTransState* sts; Assert(TransactionIdIsValid(subxids[i])); - sts = (MtmTransState*)hash_search(MtmXid2State, &subxids[i], HASH_ENTER, &found); - Assert(!found); + sts = (MtmTransState*)hash_search(MtmXid2State, &subxids[i], HASH_ENTER, &found); + Assert(!found); sts->isActive = false; sts->isPinned = false; - sts->status = ts->status; - sts->csn = ts->csn; + sts->status = ts->status; + sts->csn = ts->csn; sts->votingCompleted = true; - MtmTransactionListInsertAfter(ts, sts); - } + MtmTransactionListInsertAfter(ts, sts); + } } void MtmAdjustSubtransactions(MtmTransState* ts) @@ -663,7 +861,7 @@ void MtmAdjustSubtransactions(MtmTransState* ts) int nSubxids = ts->nSubxids; MtmTransState* sts = ts; - for (i = 0; i < nSubxids; i++) { + for (i = 0; i < nSubxids; i++) { sts = sts->next; sts->status = ts->status; sts->csn = ts->csn; @@ -680,11 +878,11 @@ void MtmAdjustSubtransactions(MtmTransState* ts) static void MtmXactCallback(XactEvent event, void *arg) { - switch (event) - { + switch (event) + { case XACT_EVENT_START: - MtmBeginTransaction(&MtmTx); - break; + MtmBeginTransaction(&MtmTx); + break; case XACT_EVENT_PRE_PREPARE: MtmPrePrepareTransaction(&MtmTx); break; @@ -694,26 +892,26 @@ MtmXactCallback(XactEvent event, void *arg) case XACT_EVENT_ABORT_PREPARED: MtmAbortPreparedTransaction(&MtmTx); break; - case XACT_EVENT_COMMIT_PREPARED: - MtmCommitPreparedTransaction(&MtmTx); + case XACT_EVENT_PRE_COMMIT_PREPARED: + MtmPreCommitPreparedTransaction(&MtmTx); break; case XACT_EVENT_COMMIT: MtmEndTransaction(&MtmTx, true); break; - case XACT_EVENT_ABORT: + case XACT_EVENT_ABORT: MtmEndTransaction(&MtmTx, false); break; case XACT_EVENT_COMMIT_COMMAND: - if (!MtmTx.isTransactionBlock) { + if (!MtmTx.isTransactionBlock && !IsSubTransaction()) { MtmTwoPhaseCommit(&MtmTx); } break; default: - break; + break; } } -/* +/* * Check if this is "normal" user transaction which should be distributed to other nodes */ static bool @@ -723,11 +921,11 @@ MtmIsUserTransaction() IsNormalProcessingMode() && MtmDoReplication && !am_walsender && - !IsBackgroundWorker && + !MtmBackgroundWorker && !IsAutoVacuumWorkerProcess(); } -void +void MtmResetTransaction() { MtmCurrentTrans* x = &MtmTx; @@ -737,71 +935,94 @@ MtmResetTransaction() x->isDistributed = false; x->isPrepared = false; x->isSuspended = false; + x->isActive = false; x->isTwoPhase = false; x->csn = INVALID_CSN; x->status = TRANSACTION_STATUS_UNKNOWN; x->gid[0] = '\0'; + MtmDDLStatement = NULL; } - -static const char* const isoLevelStr[] = +#if 0 +static const char* const isoLevelStr[] = { - "read uncommitted", - "read committed", - "repeatable read", + "read uncommitted", + "read committed", + "repeatable read", "serializable" }; +#endif + +bool MtmTransIsActive(void) +{ + return MtmTx.isActive; +} + -static void +static void MtmBeginTransaction(MtmCurrentTrans* x) { - if (x->snapshot == INVALID_CSN) { + if (x->snapshot == INVALID_CSN) { TransactionId xmin = (Mtm->gcCount >= MtmGcPeriod) ? PgGetOldestXmin(NULL, false) : InvalidTransactionId; /* Get oldest xmin outside critical section */ - MtmLock(LW_EXCLUSIVE); + Assert(!x->isActive); + MtmLock(LW_EXCLUSIVE); if (TransactionIdIsValid(xmin) && Mtm->gcCount >= MtmGcPeriod) { MtmAdjustOldestXid(xmin); } x->xid = GetCurrentTransactionIdIfAny(); - x->isReplicated = MtmIsLogicalReceiver; - x->isDistributed = MtmIsUserTransaction(); + x->isReplicated = MtmIsLogicalReceiver; + x->isDistributed = MtmIsUserTransaction(); x->isPrepared = false; x->isSuspended = false; x->isTwoPhase = false; x->isTransactionBlock = IsTransactionBlock(); - /* Application name can be changed usnig PGAPPNAME environment variable */ - if (x->isDistributed && Mtm->status != MTM_ONLINE && strcmp(application_name, MULTIMASTER_ADMIN) != 0) { - /* Reject all user's transactions at offline cluster. + /* Application name can be changed using PGAPPNAME environment variable */ + if (x->isDistributed && Mtm->status != MTM_ONLINE && strcmp(application_name, MULTIMASTER_ADMIN) != 0 + && strcmp(application_name, MULTIMASTER_BROADCAST_SERVICE) != 0 + && !MtmBypass) { + /* Reject all user's transactions at offline cluster. * Allow execution of transaction by bg-workers to make it possible to perform recovery. */ - MtmUnlock(); - elog(ERROR, "Multimaster node is not online: current status %s", MtmNodeStatusMnem[Mtm->status]); + MtmUnlock(); + MTM_ELOG(MtmBreakConnection ? FATAL : ERROR, "Multimaster node is not online: current status %s", MtmNodeStatusMnem[Mtm->status]); } x->containsDML = false; - x->snapshot = MtmAssignCSN(); x->gtid.xid = InvalidTransactionId; x->gid[0] = '\0'; x->status = TRANSACTION_STATUS_IN_PROGRESS; /* - * Check if there is global multimaster lock preventing new transaction from commit to make a chance to wal-senders to catch-up. - * Only "own" transactions are blocked. Transactions replicated from other nodes (including recovered transaction) should be proceeded - * and should not cause cluster status change. + * Check if there is global multimaster lock preventing new transaction from commit to make a chance to wal-senders to caught-up. + * Allow applying of replicated transactions to avoid deadlock (to caught-up we need active transaction counter to become zero). + * Also allow user to complete explicit 2PC transactions. */ - if (x->isDistributed && x->isReplicated) { + if (x->isDistributed + && !MtmClusterLocked /* do not lock myself */ + && strcmp(application_name, MULTIMASTER_ADMIN) != 0 + && !MtmBypass) + { MtmCheckClusterLock(); } + MtmInsideTransaction = true; + MtmDDLStatement = NULL; + Mtm->nRunningTransactions += 1; + + x->snapshot = MtmAssignCSN(); + MTM_LOG2("Start transaction %lld with snapshot %lld", (long64)x->xid, x->snapshot); MtmUnlock(); - MTM_LOG3("%d: MtmLocalTransaction: %s transaction %u uses local snapshot %lu", + MTM_LOG3("%d: MtmLocalTransaction: %s transaction %u uses local snapshot %llu", MyProcPid, x->isDistributed ? "distributed" : "local", x->xid, x->snapshot); - } + } else { + Assert(MtmInsideTransaction); + } } -static MtmTransState* +static MtmTransState* MtmCreateTransState(MtmCurrentTrans* x) { bool found; @@ -813,89 +1034,127 @@ MtmCreateTransState(MtmCurrentTrans* x) ts->isTwoPhase = x->isTwoPhase; ts->isPinned = false; ts->votingCompleted = false; + ts->abortedByNode = 0; if (!found) { ts->isEnqueued = false; ts->isActive = false; } - if (TransactionIdIsValid(x->gtid.xid)) { + if (TransactionIdIsValid(x->gtid.xid)) { Assert(x->gtid.node != MtmNodeId); ts->gtid = x->gtid; - } else { + } else { /* I am coordinator of transaction */ ts->gtid.xid = x->xid; ts->gtid.node = MtmNodeId; } strcpy(ts->gid, x->gid); + x->isActive = true; return ts; } - - -/* +static void MtmActivateTransaction(MtmTransState* ts) +{ + if (!ts->isActive) { + ts->activeList.next = Mtm->activeTransList.next; + ts->activeList.prev = &Mtm->activeTransList; + Mtm->activeTransList.next = Mtm->activeTransList.next->prev = &ts->activeList; + ts->isActive = true; + Mtm->nActiveTransactions += 1; + } +} + +static void MtmDeactivateTransaction(MtmTransState* ts) +{ + if (ts->isActive) { + ts->activeList.prev->next = ts->activeList.next; + ts->activeList.next->prev = ts->activeList.prev; + ts->isActive = false; + Assert(Mtm->nActiveTransactions != 0); + Mtm->nActiveTransactions -= 1; + } +} + +MtmTransState* MtmGetActiveTransaction(MtmL2List* list) +{ + return (MtmTransState*)((char*)list - offsetof(MtmTransState, activeList)); +} + +/* * Prepare transaction for two-phase commit. * This code is executed by PRE_PREPARE hook before PREPARE message is sent to replicas by logical replication */ static void MtmPrePrepareTransaction(MtmCurrentTrans* x) -{ +{ MtmTransState* ts; MtmTransMap* tm; TransactionId* subxids; + bool found; MTM_TXTRACE(x, "PrePrepareTransaction Start"); + if (!MtmDatabaseId) + MtmDatabaseId = get_database_oid(MtmDatabaseName, false); + + if (MtmDatabaseId != MyDatabaseId) + MTM_ELOG(ERROR, "Refusing to work. Multimaster configured to work with database '%s'", MtmDatabaseName); + if (!x->isDistributed) { return; } - if (Mtm->inject2PCError == 1) { + if (Mtm->inject2PCError == 1) { Mtm->inject2PCError = 0; - elog(ERROR, "ERROR INJECTION for transaction %d (%s)", x->xid, x->gid); + MTM_ELOG(ERROR, "ERROR INJECTION for transaction %s (%llu)", x->gid, (long64)x->xid); } x->xid = GetCurrentTransactionId(); Assert(TransactionIdIsValid(x->xid)); - if (!IsBackgroundWorker && Mtm->status != MTM_ONLINE) { + if (!IsBackgroundWorker && Mtm->status != MTM_ONLINE) { /* Do not take in account bg-workers which are performing recovery */ - elog(ERROR, "Abort current transaction because this cluster node is in %s status", MtmNodeStatusMnem[Mtm->status]); + MTM_ELOG(ERROR, "Abort transaction %s (%llu) because this cluster node is in %s status", x->gid, (long64)x->xid, MtmNodeStatusMnem[Mtm->status]); } if (TransactionIdIsValid(x->gtid.xid) && BIT_CHECK(Mtm->disabledNodeMask, x->gtid.node-1)) { /* Coordinator of transaction is disabled: just abort transaction without any further steps */ - elog(ERROR, "Abort transaction %d because it's coordinator %d was disabled", x->xid, x->gtid.node); + MTM_ELOG(ERROR, "Abort transaction %s (%llu) because it's coordinator %d was disabled", x->gid, (long64)x->xid, x->gtid.node); } MtmLock(LW_EXCLUSIVE); + Assert(*x->gid != '\0'); + tm = (MtmTransMap*)hash_search(MtmGid2State, x->gid, HASH_ENTER, &found); + if (found && tm->status != TRANSACTION_STATUS_IN_PROGRESS) { + Assert(tm->status == TRANSACTION_STATUS_ABORTED); + MtmUnlock(); + MTM_ELOG(ERROR, "Skip already aborted transaction %s (%llu) from node %d", x->gid, (long64)x->xid, x->gtid.node); + } + ts = MtmCreateTransState(x); - /* - * Invalid CSN prevent replication of transaction by logical replication - */ - ts->isLocal = x->isReplicated || !x->containsDML; + /* + * Invalid CSN prevent replication of transaction by logical replication + */ ts->snapshot = x->snapshot; - ts->csn = MtmAssignCSN(); + ts->csn = MtmAssignCSN(); ts->procno = MyProc->pgprocno; ts->votingCompleted = false; ts->participantsMask = (((nodemask_t)1 << Mtm->nAllNodes) - 1) & ~Mtm->disabledNodeMask & ~((nodemask_t)1 << (MtmNodeId-1)); + ts->isLocal = x->isReplicated || !x->containsDML || (ts->participantsMask == 0); + ts->nConfigChanges = Mtm->nConfigChanges; ts->votedMask = 0; ts->nSubxids = xactGetCommittedChildren(&subxids); - if (!ts->isActive) { - ts->isActive = true; - Mtm->nActiveTransactions += 1; - } + MtmActivateTransaction(ts); x->isPrepared = true; x->csn = ts->csn; - - Assert(*x->gid != '\0'); - tm = (MtmTransMap*)hash_search(MtmGid2State, x->gid, HASH_ENTER, NULL); + tm->state = ts; tm->status = TRANSACTION_STATUS_IN_PROGRESS; MTM_LOG2("Prepare transaction %s", x->gid); - + Mtm->transCount += 1; Mtm->gcCount += 1; MtmTransactionListAppend(ts); MtmAddSubtransactions(ts, subxids, ts->nSubxids); - MTM_LOG3("%d: MtmPrePrepareTransaction prepare commit of %d (gtid.xid=%d, gtid.node=%d, CSN=%ld)", + MTM_LOG3("%d: MtmPrePrepareTransaction prepare commit of %d (gtid.xid=%d, gtid.node=%d, CSN=%lld)", MyProcPid, x->xid, ts->gtid.xid, ts->gtid.node, ts->csn); MtmUnlock(); MTM_TXTRACE(x, "PrePrepareTransaction Finish"); @@ -908,14 +1167,14 @@ bool MtmWatchdog(timestamp_t now) { int i, n = Mtm->nAllNodes; bool allAlive = true; - for (i = 0; i < n; i++) { + for (i = 0; i < n; i++) { if (i+1 != MtmNodeId && !BIT_CHECK(Mtm->disabledNodeMask, i)) { if (Mtm->nodes[i].lastHeartbeat != 0 - && now > Mtm->nodes[i].lastHeartbeat + MSEC_TO_USEC(MtmHeartbeatRecvTimeout)) - { - elog(WARNING, "Heartbeat is not received from node %d during %d msec", + && now > Mtm->nodes[i].lastHeartbeat + MSEC_TO_USEC(MtmHeartbeatRecvTimeout)) + { + MTM_LOG1("[STATE] Node %i: Disconnect due to heartbeat timeout (%d msec)", i+1, (int)USEC_TO_MSEC(now - Mtm->nodes[i].lastHeartbeat)); - MtmOnNodeDisconnect(i+1); + MtmOnNodeDisconnect(i+1); allAlive = false; } } @@ -923,7 +1182,7 @@ bool MtmWatchdog(timestamp_t now) return allAlive; } -/* +/* * Mark transaction as precommitted */ void MtmPrecommitTransaction(char const* gid) @@ -933,48 +1192,74 @@ void MtmPrecommitTransaction(char const* gid) MtmTransMap* tm = (MtmTransMap*)hash_search(MtmGid2State, gid, HASH_FIND, NULL); if (tm == NULL) { MtmUnlock(); - elog(WARNING, "MtmPrecommitTransaction: transaction '%s' is not found", gid); - } else { + MTM_ELOG(WARNING, "MtmPrecommitTransaction: transaction '%s' is not found", gid); + } else { MtmTransState* ts = tm->state; - Assert(ts != NULL); - if (ts->status == TRANSACTION_STATUS_IN_PROGRESS) { + // Assert(ts != NULL); + if (ts == NULL) { + MTM_ELOG(WARNING, "MtmPrecommitTransaction: transaction '%s' is not yet prepared, status %s", gid, MtmTxnStatusMnem[tm->status]); + MtmUnlock(); + } else if (ts->status == TRANSACTION_STATUS_IN_PROGRESS) { ts->status = TRANSACTION_STATUS_UNKNOWN; ts->csn = MtmAssignCSN(); MtmAdjustSubtransactions(ts); - if (Mtm->status != MTM_RECOVERY) { - MtmSend2PCMessage(ts, MSG_PRECOMMITTED); - } MtmUnlock(); Assert(replorigin_session_origin != InvalidRepOriginId); - SetPreparedTransactionState(ts->gid, MULTIMASTER_PRECOMMITTED); + if (!IsTransactionState()) { + MtmResetTransaction(); + StartTransactionCommand(); + SetPreparedTransactionState(ts->gid, MULTIMASTER_PRECOMMITTED); + CommitTransactionCommand(); + } else { + SetPreparedTransactionState(ts->gid, MULTIMASTER_PRECOMMITTED); + } + /* + * We should send MSG_PRECOMMITTED only after SetPreparedTransactionState() + */ + if (Mtm->status != MTM_RECOVERY) + MtmSend2PCMessage(ts, MSG_PRECOMMITTED); } else { - elog(WARNING, "MtmPrecommitTransaction: transaction '%s' is already in %s state", gid, MtmTxnStatusMnem[ts->status]); + MTM_ELOG(WARNING, "MtmPrecommitTransaction: transaction '%s' is already in %s state", gid, MtmTxnStatusMnem[ts->status]); MtmUnlock(); } } } } - - - -static bool + + + +static bool MtmVotingCompleted(MtmTransState* ts) { - if (ts->votingCompleted) { + nodemask_t liveNodesMask = (((nodemask_t)1 << Mtm->nAllNodes) - 1) & ~Mtm->disabledNodeMask & ~((nodemask_t)1 << (MtmNodeId-1)); + + if (!ts->isPrepared) { /* We can not just abort precommitted transactions */ + if (ts->nConfigChanges != Mtm->nConfigChanges) + { + MTM_ELOG(WARNING, "Abort transaction %s (%llu) because cluster configuration is changed from %d to %d (old mask %llx, new mask %llx) since transaction start", + ts->gid, (long64)ts->xid, ts->nConfigChanges, Mtm->nConfigChanges, ts->participantsMask, liveNodesMask); + MtmAbortTransaction(ts); + return true; + } + /* If cluster configuration was not changed, then node mask should not changed as well */ + Assert(ts->participantsMask == liveNodesMask); + } + + if (ts->votingCompleted) { return true; } if (ts->status == TRANSACTION_STATUS_IN_PROGRESS && (ts->participantsMask & ~Mtm->disabledNodeMask & ~ts->votedMask) == 0) /* all live participants voted */ { - if (ts->isPrepared) { + if (ts->isPrepared) { ts->csn = MtmAssignCSN(); ts->votingCompleted = true; ts->status = TRANSACTION_STATUS_UNKNOWN; return true; } else { - MTM_LOG1("Transaction %s is considered as prepared (status=%s participants=%lx disabled=%lx, voted=%lx)", + MTM_LOG2("Transaction %s is considered as prepared (status=%s participants=%llx disabled=%llx, voted=%llx)", ts->gid, MtmTxnStatusMnem[ts->status], ts->participantsMask, Mtm->disabledNodeMask, ts->votedMask); ts->isPrepared = true; if (ts->isTwoPhase) { @@ -984,9 +1269,8 @@ MtmVotingCompleted(MtmTransState* ts) ts->votedMask = 0; Assert(replorigin_session_origin == InvalidRepOriginId); MtmUnlock(); - SetPreparedTransactionState(ts->gid, MULTIMASTER_PRECOMMITTED); + SetPreparedTransactionState(ts->gid, MULTIMASTER_PRECOMMITTED); MtmLock(LW_EXCLUSIVE); - //MtmSend2PCMessage(ts, MSG_PRECOMMIT); return false; } else { ts->status = TRANSACTION_STATUS_UNKNOWN; @@ -1003,67 +1287,78 @@ static void Mtm2PCVoting(MtmCurrentTrans* x, MtmTransState* ts) { int result = 0; - int nConfigChanges = Mtm->nConfigChanges; timestamp_t prepareTime = ts->csn - ts->snapshot; timestamp_t timeout = Max(prepareTime + MSEC_TO_USEC(MtmMin2PCTimeout), prepareTime*MtmMax2PCRatio/100); timestamp_t start = MtmGetSystemTime(); timestamp_t deadline = start + timeout; timestamp_t now; - + uint32 SaveCancelHoldoffCount = QueryCancelHoldoffCount; + Assert(ts->csn > ts->snapshot); + QueryCancelHoldoffCount = 0; + /* Wait votes from all nodes until: */ - while (!MtmVotingCompleted(ts) - && (ts->isPrepared || nConfigChanges == Mtm->nConfigChanges)) - { + while (!MtmVotingCompleted(ts)) + { MtmUnlock(); MTM_TXTRACE(x, "PostPrepareTransaction WaitLatch Start"); result = WaitLatch(&MyProc->procLatch, WL_LATCH_SET | WL_TIMEOUT | WL_POSTMASTER_DEATH, MtmHeartbeatRecvTimeout); MTM_TXTRACE(x, "PostPrepareTransaction WaitLatch Finish"); /* Emergency bailout if postmaster has died */ - if (result & WL_POSTMASTER_DEATH) { + if (result & WL_POSTMASTER_DEATH) { proc_exit(1); } - if (result & WL_LATCH_SET) { - ResetLatch(&MyProc->procLatch); + if (result & WL_LATCH_SET) { + ResetLatch(&MyProc->procLatch); } + CHECK_FOR_INTERRUPTS(); now = MtmGetSystemTime(); MtmLock(LW_EXCLUSIVE); - if (now > deadline) { - if (ts->isPrepared) { - /* resend precommit message */ - // MtmSend2PCMessage(ts, MSG_PRECOMMIT); - elog(LOG, "Distributed transaction is not committed in %ld msec", USEC_TO_MSEC(now - start)); + if (MtmMin2PCTimeout != 0 && now > deadline) { + if (ts->isPrepared) { + MTM_ELOG(LOG, "Distributed transaction %s (%llu) is not committed in %lld msec", ts->gid, (long64)ts->xid, USEC_TO_MSEC(now - start)); } else { - elog(WARNING, "Commit of distributed transaction %s (%d) is canceled because of %ld msec timeout expiration", - ts->gid, ts->xid, USEC_TO_MSEC(timeout)); + MTM_ELOG(WARNING, "Commit of distributed transaction %s (%llu) is canceled because of %lld msec timeout expiration", + ts->gid, (long64)ts->xid, USEC_TO_MSEC(timeout)); MtmAbortTransaction(ts); break; } } } - if (ts->status != TRANSACTION_STATUS_ABORTED && !ts->votingCompleted) { - if (ts->isPrepared) { - // GetNewTransactionId(false); /* force increment of transaction counter */ - // elog(ERROR, "Commit of distributed transaction %s is suspended because node is switched to %s mode", ts->gid, MtmNodeStatusMnem[Mtm->status]); - elog(WARNING, "Commit of distributed transaction %s is suspended because node is switched to %s mode", ts->gid, MtmNodeStatusMnem[Mtm->status]); + QueryCancelHoldoffCount = SaveCancelHoldoffCount; + + if (ts->status != TRANSACTION_STATUS_ABORTED && !ts->votingCompleted) { + if (ts->isPrepared) { + MTM_ELOG(WARNING, "Commit of distributed transaction %s is suspended because node is switched to %s mode", ts->gid, MtmNodeStatusMnem[Mtm->status]); x->isSuspended = true; - } else { - if (Mtm->status != MTM_ONLINE) { - elog(WARNING, "Commit of distributed transaction is canceled because node is switched to %s mode", MtmNodeStatusMnem[Mtm->status]); - } else { - elog(WARNING, "Commit of distributed transaction is canceled because cluster configuration was changed"); - } + } else { + if (Mtm->status != MTM_ONLINE) { + MTM_ELOG(WARNING, "Commit of distributed transaction %s (%llu) is canceled because node is switched to %s mode", + ts->gid, (long64)ts->xid, MtmNodeStatusMnem[Mtm->status]); + } else { + MTM_ELOG(WARNING, "Commit of distributed transaction %s (%llu) is canceled because cluster configuration was changed", + ts->gid, (long64)ts->xid); + } MtmAbortTransaction(ts); } } x->status = ts->status; MTM_LOG3("%d: Result of vote: %d", MyProcPid, MtmTxnStatusMnem[ts->status]); } - + +static void MtmStopTransaction(void) +{ + if (MtmInsideTransaction) { + Assert(Mtm->nRunningTransactions > 0); + Mtm->nRunningTransactions -= 1; + MtmInsideTransaction = false; + } +} + static void MtmPostPrepareTransaction(MtmCurrentTrans* x) -{ +{ MtmTransState* ts; MTM_TXTRACE(x, "PostPrepareTransaction Start"); @@ -1072,189 +1367,212 @@ MtmPostPrepareTransaction(MtmCurrentTrans* x) return; } - if (Mtm->inject2PCError == 2) { + if (Mtm->inject2PCError == 2) { Mtm->inject2PCError = 0; - elog(ERROR, "ERROR INJECTION for transaction %d (%s)", x->xid, x->gid); + MTM_ELOG(ERROR, "ERROR INJECTION for transaction %s (%llu)", x->gid, (long64)x->xid); } MtmLock(LW_EXCLUSIVE); ts = (MtmTransState*)hash_search(MtmXid2State, &x->xid, HASH_FIND, NULL); Assert(ts != NULL); - //if (x->gid[0]) MTM_LOG1("Preparing transaction %d (%s) at %ld", x->xid, x->gid, MtmGetCurrentTime()); if (!MtmIsCoordinator(ts) || Mtm->status == MTM_RECOVERY) { - MTM_TXTRACE(x, "recovery?"); - MTM_LOG3("Preparing transaction %d (%s) at %ld", x->xid, x->gid, MtmGetCurrentTime()); + MTM_LOG3("Preparing transaction %d (%s) at %lld", x->xid, x->gid, MtmGetCurrentTime()); Assert(x->gid[0]); ts->votingCompleted = true; - MTM_TXTRACE(x, "recovery? 1"); if (Mtm->status != MTM_RECOVERY/* || Mtm->recoverySlot != MtmReplicationNodeId*/) { - MTM_TXTRACE(x, "recovery? 2"); MtmSend2PCMessage(ts, MSG_PREPARED); /* send notification to coordinator */ - if (!MtmUseDtm) { + if (!MtmUseDtm) { ts->status = TRANSACTION_STATUS_UNKNOWN; } } else { - MTM_TXTRACE(x, "recovery? 3"); ts->status = TRANSACTION_STATUS_UNKNOWN; } - MTM_TXTRACE(x, "recovery? 4"); MtmUnlock(); - MTM_TXTRACE(x, "recovery? 5"); MtmResetTransaction(); - MTM_TXTRACE(x, "recovery? 6"); - } else { - MTM_TXTRACE(x, "not recovery?"); - Mtm2PCVoting(x, ts); - MtmUnlock(); - if (x->isTwoPhase) { + } else { + if (!ts->isLocal) { + Mtm2PCVoting(x, ts); + } else { + ts->status = TRANSACTION_STATUS_UNKNOWN; + ts->votingCompleted = true; + } + if (x->isTwoPhase) { + if (x->status == TRANSACTION_STATUS_ABORTED) { + MTM_ELOG(WARNING, "Prepare of user's 2PC transaction %s (%llu) is aborted by DTM", x->gid, (long64)x->xid); + } + MtmStopTransaction(); MtmResetTransaction(); } + MtmUnlock(); } - MTM_TXTRACE(x, "recovery? 7"); - //if (x->gid[0]) MTM_LOG1("Prepared transaction %d (%s) csn=%ld at %ld: %d", x->xid, x->gid, ts->csn, MtmGetCurrentTime(), ts->status); - if (Mtm->inject2PCError == 3) { + if (Mtm->inject2PCError == 3) { Mtm->inject2PCError = 0; - elog(ERROR, "ERROR INJECTION for transaction %d (%s)", x->xid, x->gid); + MTM_ELOG(ERROR, "ERROR INJECTION for transaction %s (%llu)", x->gid, (long64)x->xid); } MTM_TXTRACE(x, "PostPrepareTransaction Finish"); } -static void -MtmCommitPreparedTransaction(MtmCurrentTrans* x) +static void +MtmPreCommitPreparedTransaction(MtmCurrentTrans* x) { - MtmTransMap* tm; + MtmTransMap* tm; MtmTransState* ts; - if (Mtm->status == MTM_RECOVERY || x->isReplicated || x->isPrepared) { /* Ignore auto-2PC originated by multimaster */ - return; - } + MTM_TXTRACE(x, "MtmPreCommitPreparedTransaction Start"); + + if (Mtm->status == MTM_RECOVERY || x->isReplicated || x->isPrepared) { /* Ignore auto-2PC originated by multimaster */ + return; + } MtmLock(LW_EXCLUSIVE); tm = (MtmTransMap*)hash_search(MtmGid2State, x->gid, HASH_FIND, NULL); if (tm == NULL) { - elog(WARNING, "Global transaciton ID '%s' is not found", x->gid); + MTM_ELOG(WARNING, "Global transaction ID '%s' is not found", x->gid); } else { - Assert(tm->state != NULL); + Assert(tm->state != NULL); MTM_LOG3("Commit prepared transaction %d with gid='%s'", x->xid, x->gid); ts = tm->state; Assert(MtmIsCoordinator(ts)); + if (!ts->isLocal) { + ts->votingCompleted = false; + ts->votedMask = 0; + ts->procno = MyProc->pgprocno; + MTM_LOG2("Coordinator of transaction %s sends MSG_PRECOMMIT", ts->gid); + Assert(replorigin_session_origin == InvalidRepOriginId); + MtmUnlock(); + SetPreparedTransactionState(ts->gid, MULTIMASTER_PRECOMMITTED); + MtmLock(LW_EXCLUSIVE); - ts->votingCompleted = false; - ts->votedMask = 0; - ts->procno = MyProc->pgprocno; - MTM_LOG2("Coordinator of transaction %s sends MSG_PRECOMMIT", ts->gid); - Assert(replorigin_session_origin == InvalidRepOriginId); - MtmUnlock(); - SetPreparedTransactionState(ts->gid, MULTIMASTER_PRECOMMITTED); - //MtmSend2PCMessage(ts, MSG_PRECOMMIT); - MtmLock(LW_EXCLUSIVE); - - Mtm2PCVoting(x, ts); + Mtm2PCVoting(x, ts); + } else { + ts->status = TRANSACTION_STATUS_UNKNOWN; + } x->xid = ts->xid; + x->csn = ts->csn; x->isPrepared = true; } MtmUnlock(); + + MTM_TXTRACE(x, "MtmPreCommitPreparedTransaction Finish"); } -static void +static void MtmAbortPreparedTransaction(MtmCurrentTrans* x) { MtmTransMap* tm; -#if 0 - if (Mtm->status == MTM_RECOVERY) { - return; - } -#endif - if (x->status != TRANSACTION_STATUS_ABORTED) { + + MTM_TXTRACE(x, "MtmAbortPreparedTransaction Start"); + + if (x->status != TRANSACTION_STATUS_ABORTED) { MtmLock(LW_EXCLUSIVE); - //tm = (MtmTransMap*)hash_search(MtmGid2State, x->gid, HASH_FIND, NULL); - tm = (MtmTransMap*)hash_search(MtmGid2State, x->gid, HASH_REMOVE, NULL); - if (tm == NULL) { - elog(WARNING, "Global transaciton ID '%s' is not found", x->gid); - } else { - Assert(tm->state != NULL); - MTM_LOG1("Abort prepared transaction %d with gid='%s'", x->xid, x->gid); - MtmAbortTransaction(tm->state); + tm = (MtmTransMap*)hash_search(MtmGid2State, x->gid, HASH_FIND, NULL); + if (tm == NULL) { + MTM_ELOG(WARNING, "Global transaction ID '%s' is not found", x->gid); + } else { + MtmTransState* ts = tm->state; + Assert(ts != NULL); + MTM_LOG1("Abort prepared transaction %s (%llu)", x->gid, (long64)x->xid); + MtmAbortTransaction(ts); + if (ts->isTwoPhase) { + MtmDeactivateTransaction(ts); + } } MtmUnlock(); x->status = TRANSACTION_STATUS_ABORTED; - } else { - MTM_LOG1("Transaction %d with gid='%s' is already aborted", x->xid, x->gid); + } else { + MTM_LOG1("Transaction %s (%llu) is already aborted", x->gid, (long64)x->xid); } + + MTM_TXTRACE(x, "MtmAbortPreparedTransaction Finish"); } -static void +static void MtmLogAbortLogicalMessage(int nodeId, char const* gid) { MtmAbortLogicalMessage msg; + lsn_t lsn; strcpy(msg.gid, gid); msg.origin_node = nodeId; msg.origin_lsn = replorigin_session_origin_lsn; - MTM_LOG2("[TRACE] MtmLogAbortLogicalMessage(%d, %s)", nodeId, gid); - XLogFlush(LogLogicalMessage("A", (char*)&msg, sizeof msg, false)); + lsn = LogLogicalMessage("A", (char*)&msg, sizeof msg, false); + XLogFlush(lsn); + MTM_LOG1("MtmLogAbortLogicalMessage node=%d transaction=%s lsn=%llx", nodeId, gid, lsn); } -static void + +static void MtmEndTransaction(MtmCurrentTrans* x, bool commit) { - MTM_LOG2("%d: End transaction %d, prepared=%d, replicated=%d, distributed=%d, 2pc=%d, gid=%s -> %s", - MyProcPid, x->xid, x->isPrepared, x->isReplicated, x->isDistributed, x->isTwoPhase, x->gid, commit ? "commit" : "abort"); - if (x->status != TRANSACTION_STATUS_ABORTED && x->isDistributed && (x->isPrepared || x->isReplicated) && !x->isTwoPhase) { + MTM_LOG3("%d: End transaction %lld, prepared=%d, replicated=%d, distributed=%d, 2pc=%d, gid=%s -> %s, LSN %lld", + MyProcPid, (long64)x->xid, x->isPrepared, x->isReplicated, x->isDistributed, x->isTwoPhase, x->gid, commit ? "commit" : "abort", (long64)GetXLogInsertRecPtr()); + commit &= (x->status != TRANSACTION_STATUS_ABORTED); + + MTM_TXTRACE(x, "MtmEndTransaction Start (c=%d)", commit); + + MtmLock(LW_EXCLUSIVE); + + MtmStopTransaction(); + + if (x->isDistributed && (x->isPrepared || x->isReplicated) && !x->isTwoPhase) { MtmTransState* ts = NULL; - MtmLock(LW_EXCLUSIVE); - if (x->isPrepared) { + if (x->isPrepared) { ts = (MtmTransState*)hash_search(MtmXid2State, &x->xid, HASH_FIND, NULL); Assert(ts != NULL); Assert(strcmp(x->gid, ts->gid) == 0); - } else if (x->gid[0]) { + } else if (x->gid[0]) { MtmTransMap* tm = (MtmTransMap*)hash_search(MtmGid2State, x->gid, HASH_FIND, NULL); if (tm != NULL) { ts = tm->state; - } else { + } else { MTM_LOG1("%d: GID %s not found", MyProcPid, x->gid); } } - if (ts != NULL) { - if (*ts->gid) - MTM_LOG2("TRANSLOG: %s transaction gid=%s xid=%d node=%d dxid=%d status %s", + if (ts != NULL) { + if (*ts->gid) + MTM_LOG2("TRANSLOG: %s transaction gid=%s xid=%d node=%d dxid=%d status %s", (commit ? "commit" : "rollback"), ts->gid, ts->xid, ts->gtid.node, ts->gtid.xid, MtmTxnStatusMnem[ts->status]); if (commit) { - if (!(ts->status == TRANSACTION_STATUS_UNKNOWN - || (ts->status == TRANSACTION_STATUS_IN_PROGRESS && Mtm->status == MTM_RECOVERY))) + if (!(ts->status == TRANSACTION_STATUS_UNKNOWN + || (ts->status == TRANSACTION_STATUS_IN_PROGRESS && Mtm->status <= MTM_RECOVERY))) { - elog(ERROR, "Attempt to commit %s transaction %d (%s)", - MtmTxnStatusMnem[ts->status], ts->xid, ts->gid); + MtmUnlock(); + MTM_ELOG(ERROR, "Attempt to commit %s transaction %s (%llu)", + MtmTxnStatusMnem[ts->status], ts->gid, (long64)ts->xid); } if (x->csn > ts->csn || Mtm->status == MTM_RECOVERY) { Assert(x->csn != INVALID_CSN); ts->csn = x->csn; MtmSyncClock(ts->csn); } + if (ts->isLocal && !x->isReplicated) + { + ts->csn = MtmAssignCSN(); + } Mtm->lastCsn = ts->csn; ts->status = TRANSACTION_STATUS_COMMITTED; - Assert(ts->isActive); - ts->isActive = false; - Assert(Mtm->nActiveTransactions != 0); - Mtm->nActiveTransactions -= 1; MtmAdjustSubtransactions(ts); - } else { - MTM_LOG1("%d: abort transaction %d gid='%s' is called from MtmEndTransaction", MyProcPid, x->xid, x->gid); + } else { + MTM_LOG1("%d: abort transaction %s (%llu) is called from MtmEndTransaction", MyProcPid, x->gid, (long64)x->xid); MtmAbortTransaction(ts); } + MtmDeactivateTransaction(ts); } - if (!commit && x->isReplicated && TransactionIdIsValid(x->gtid.xid)) { + x->isActive = false; + + if (!commit && x->isReplicated && TransactionIdIsValid(x->gtid.xid)) { Assert(Mtm->status != MTM_RECOVERY || Mtm->recoverySlot != MtmNodeId); - /* - * Send notification only if ABORT happens during transaction processing at replicas, - * do not send notification if ABORT is received from master + /* + * Send notification only if ABORT happens during transaction processing at replicas, + * do not send notification if ABORT is received from master */ - MTM_LOG1("%d: send ABORT notification for transaction %d to coordinator %d", MyProcPid, x->gtid.xid, x->gtid.node); - if (ts == NULL) { + MTM_LOG1("%d: send ABORT notification for transaction %s (%llu) local xid=%llu to coordinator %d", + MyProcPid, x->gid, (long64)x->gtid.xid, (long64)x->xid, x->gtid.node); + if (ts == NULL) { bool found; Assert(TransactionIdIsValid(x->xid)); ts = (MtmTransState*)hash_search(MtmXid2State, &x->xid, HASH_ENTER, &found); - if (!found) { + if (!found) { ts->isEnqueued = false; ts->isActive = false; } @@ -1264,36 +1582,56 @@ MtmEndTransaction(MtmCurrentTrans* x, bool commit) ts->isPinned = false; ts->snapshot = x->snapshot; ts->isTwoPhase = x->isTwoPhase; - ts->csn = MtmAssignCSN(); + ts->csn = MtmAssignCSN(); ts->gtid = x->gtid; ts->nSubxids = 0; ts->votingCompleted = true; strcpy(ts->gid, x->gid); - if (ts->isActive) { - ts->isActive = false; - Assert(Mtm->nActiveTransactions != 0); - Mtm->nActiveTransactions -= 1; - } MtmTransactionListAppend(ts); - if (*x->gid) { - replorigin_session_origin_lsn = InvalidXLogRecPtr; + if (*x->gid) { + replorigin_session_origin_lsn = INVALID_LSN; MTM_TXTRACE(x, "MtmEndTransaction/MtmLogAbortLogicalMessage"); MtmLogAbortLogicalMessage(MtmNodeId, x->gid); } + MtmDeactivateTransaction(ts); + x->isActive = false; } MtmSend2PCMessage(ts, MSG_ABORTED); /* send notification to coordinator */ +#if 0 } else if (x->status == TRANSACTION_STATUS_ABORTED && x->isReplicated && !x->isPrepared) { hash_search(MtmXid2State, &x->xid, HASH_REMOVE, NULL); +#endif } - MtmUnlock(); + Assert(!x->isActive); } + MtmUnlock(); + + MTM_TXTRACE(x, "MtmEndTransaction Finish"); + MtmResetTransaction(); - if (!MyReplicationSlot) { - MtmCheckSlots(); + if (MtmClusterLocked) { + MtmUnlockCluster(); } } -void MtmSendMessage(MtmArbiterMessage* msg) +/* + * Initialize message + */ +void MtmInitMessage(MtmArbiterMessage* msg, MtmMessageCode code) +{ + msg->code = code; + msg->disabledNodeMask = Mtm->disabledNodeMask; + msg->connectivityMask = SELF_CONNECTIVITY_MASK; + msg->oldestSnapshot = Mtm->nodes[MtmNodeId-1].oldestSnapshot; + msg->lockReq = Mtm->originLockNodeMask != 0; + msg->locked = (Mtm->originLockNodeMask|Mtm->inducedLockNodeMask) != 0; +} + + +/* + * Send arbiter's message + */ +void MtmSendMessage(MtmArbiterMessage* msg) { SpinLockAcquire(&Mtm->queueSpinlock); { @@ -1301,66 +1639,74 @@ void MtmSendMessage(MtmArbiterMessage* msg) MtmMessageQueue* sendQueue = Mtm->sendQueue; if (mq == NULL) { mq = (MtmMessageQueue*)ShmemAlloc(sizeof(MtmMessageQueue)); - } else { + if (mq == NULL) { + elog(PANIC, "Failed to allocate shared memory for message queue"); + } + } else { Mtm->freeQueue = mq->next; } mq->msg = *msg; mq->next = sendQueue; Mtm->sendQueue = mq; - if (sendQueue == NULL) { - /* singal semaphore only once for the whole list */ + if (sendQueue == NULL) { + /* signal semaphore only once for the whole list */ PGSemaphoreUnlock(&Mtm->sendSemaphore); } } SpinLockRelease(&Mtm->queueSpinlock); } +/* + * Send arbiter's 2PC message. Right now only responses to coordinates are + * sent through arbiter. Broadcasts from coordinator to noes are done + * using logical decoding. + */ void MtmSend2PCMessage(MtmTransState* ts, MtmMessageCode cmd) { MtmArbiterMessage msg; - msg.code = cmd; + MtmInitMessage(&msg, cmd); msg.sxid = ts->xid; - msg.csn = ts->csn; - msg.disabledNodeMask = Mtm->disabledNodeMask; - msg.connectivityMask = Mtm->connectivityMask; - msg.oldestSnapshot = Mtm->nodes[MtmNodeId-1].oldestSnapshot; + msg.csn = ts->csn; memcpy(msg.gid, ts->gid, MULTIMASTER_MAX_GID_SIZE); - if (MtmIsCoordinator(ts)) { - int i; - Assert(false); // All broadcasts are now done through logical decoding - for (i = 0; i < Mtm->nAllNodes; i++) - { - if (BIT_CHECK(ts->participantsMask & ~Mtm->disabledNodeMask & ~ts->votedMask, i)) - { - Assert(TransactionIdIsValid(ts->xids[i])); - msg.node = i+1; - msg.dxid = ts->xids[i]; - MtmSendMessage(&msg); - } - } - } else if (!BIT_CHECK(Mtm->disabledNodeMask, ts->gtid.node-1)) { - MTM_LOG2("Send %s message to node %d xid=%d gid=%s", MtmMessageKindMnem[cmd], ts->gtid.node, ts->gtid.xid, ts->gid); + Assert(!MtmIsCoordinator(ts)); /* All broadcasts are now done through logical decoding */ + if (!BIT_CHECK(Mtm->disabledNodeMask, ts->gtid.node-1)) + { + MTM_TXTRACE(ts, "MtmSend2PCMessage sending %s message to node %d", MtmMessageKindMnem[cmd], ts->gtid.node); msg.node = ts->gtid.node; msg.dxid = ts->gtid.xid; MtmSendMessage(&msg); } } +/* + * Broadcast poll state message to all nodes. + * This function is used to gather information about state of prepared transaction + * at node startup or after crash of some node. + */ static void MtmBroadcastPollMessage(MtmTransState* ts) { int i; + int nparts; MtmArbiterMessage msg; - msg.code = MSG_POLL_REQUEST; - msg.disabledNodeMask = Mtm->disabledNodeMask; - msg.connectivityMask = Mtm->connectivityMask; - msg.oldestSnapshot = Mtm->nodes[MtmNodeId-1].oldestSnapshot; + + nparts = Mtm->nAllNodes - countZeroBits(ts->participantsMask, Mtm->nAllNodes); + MTM_LOG1("MtmBroadcastPollMessage: %s %lld %d", ts->gid, ts->participantsMask, nparts); + + if (nparts == 1) + { + /* we were in major mode and there nobody to ask about status */ + MtmFinishPreparedTransaction(ts, true); + return; + } + + MtmInitMessage(&msg, MSG_POLL_REQUEST); memcpy(msg.gid, ts->gid, MULTIMASTER_MAX_GID_SIZE); ts->votedMask = 0; for (i = 0; i < Mtm->nAllNodes; i++) { - if (BIT_CHECK(ts->participantsMask & ~Mtm->disabledNodeMask, i)) + if (BIT_CHECK(ts->participantsMask, i)) { msg.node = i+1; MTM_LOG3("Send request for transaction %s to node %d", msg.gid, msg.node); @@ -1370,7 +1716,9 @@ static void MtmBroadcastPollMessage(MtmTransState* ts) } /* - * Restore state of recovered prepared transaction in memory + * Restore state of recovered prepared transaction in memory. + * This function is called at system startup to make it possible to + * handle this prepared transactions in normal way. */ static void MtmLoadPreparedTransactions(void) { @@ -1378,19 +1726,19 @@ static void MtmLoadPreparedTransactions(void) int n = GetPreparedTransactions(&pxacts); int i; - for (i = 0; i < n; i++) { + for (i = 0; i < n; i++) { bool found; char const* gid = pxacts[i].gid; MtmTransMap* tm = (MtmTransMap*)hash_search(MtmGid2State, gid, HASH_ENTER, &found); - if (!found) { + if (!found || tm->state == NULL) { TransactionId xid = GetNewTransactionId(false); MtmTransState* ts = (MtmTransState*)hash_search(MtmXid2State, &xid, HASH_ENTER, &found); - MTM_LOG1("Recover prepared transaction %s xid=%d state=%s", gid, xid, pxacts[i].state_3pc); + MTM_LOG1("Recover prepared transaction %s (%llu) state=%s", gid, (long64)xid, pxacts[i].state_3pc); MyPgXact->xid = InvalidTransactionId; /* dirty hack:((( */ Assert(!found); - Mtm->nActiveTransactions += 1; ts->isEnqueued = false; - ts->isActive = true; + ts->isActive = false; + MtmActivateTransaction(ts); ts->status = strcmp(pxacts[i].state_3pc, MULTIMASTER_PRECOMMITTED) == 0 ? TRANSACTION_STATUS_UNKNOWN : TRANSACTION_STATUS_IN_PROGRESS; ts->isLocal = true; ts->isPrepared = true; @@ -1402,32 +1750,46 @@ static void MtmLoadPreparedTransactions(void) ts->gtid.xid = xid; ts->nSubxids = 0; ts->votingCompleted = true; - ts->participantsMask = (((nodemask_t)1 << Mtm->nAllNodes) - 1) & ~Mtm->disabledNodeMask & ~((nodemask_t)1 << (MtmNodeId-1)); + ts->participantsMask = (((nodemask_t)1 << Mtm->nAllNodes) - 1) & ~((nodemask_t)1 << (MtmNodeId-1)); + ts->nConfigChanges = Mtm->nConfigChanges; ts->votedMask = 0; strcpy(ts->gid, gid); - MtmTransactionListAppend(ts); + MtmTransactionListAppend(ts); tm->status = ts->status; tm->state = ts; MtmBroadcastPollMessage(ts); } } MTM_LOG1("Recover %d prepared transactions", n); - if (pxacts) { + if (pxacts) { pfree(pxacts); } } -static void MtmStartRecovery() +static void MtmDropSlot(int nodeId) { + if (MtmTryLockNode(nodeId, LW_EXCLUSIVE)) + { + MTM_ELOG(INFO, "Drop replication slot for node %d", nodeId); + ReplicationSlotDrop(psprintf(MULTIMASTER_SLOT_PATTERN, nodeId)); + MtmUnlockNode(nodeId); + } else { + MTM_ELOG(WARNING, "Failed to drop replication slot for node %d", nodeId); + } MtmLock(LW_EXCLUSIVE); - BIT_SET(Mtm->disabledNodeMask, MtmNodeId-1); - MtmSwitchClusterMode(MTM_RECOVERY); - Mtm->recoveredLSN = InvalidXLogRecPtr; + BIT_SET(Mtm->stalledNodeMask, nodeId-1); + BIT_SET(Mtm->stoppedNodeMask, nodeId-1); /* stalled node can not be automatically recovered */ MtmUnlock(); } -void MtmJoinTransaction(GlobalTransactionId* gtid, csn_t globalSnapshot) +/* + * Prepare context for applying transaction at replica. + * It also checks that coordinator of transaction is not disabled and all live nodes are participated in this transaction. + */ +void MtmJoinTransaction(GlobalTransactionId* gtid, csn_t globalSnapshot, nodemask_t participantsMask) { + nodemask_t liveMask; + MtmTx.gtid = *gtid; MtmTx.xid = GetCurrentTransactionId(); MtmTx.isReplicated = true; @@ -1436,29 +1798,37 @@ void MtmJoinTransaction(GlobalTransactionId* gtid, csn_t globalSnapshot) if (globalSnapshot != INVALID_CSN) { MtmLock(LW_EXCLUSIVE); - MtmSyncClock(globalSnapshot); - MtmTx.snapshot = globalSnapshot; - if (Mtm->status != MTM_RECOVERY) { + + liveMask = (((nodemask_t)1 << Mtm->nAllNodes) - 1) & ~Mtm->disabledNodeMask; + BIT_SET(participantsMask, gtid->node-1); + if (liveMask & ~participantsMask) { + MtmUnlock(); + MTM_ELOG(ERROR, "Ignore transaction %llu from node %d because some of live nodes (%llx) are not participated in it (%llx)", + (long64)gtid->xid, gtid->node, liveMask, participantsMask); + } + + MtmSyncClock(globalSnapshot); + MtmTx.snapshot = globalSnapshot; + if (Mtm->status != MTM_RECOVERY) { MtmTransState* ts = MtmCreateTransState(&MtmTx); /* we need local->remote xid mapping for deadlock detection */ - if (!ts->isActive) { - ts->isActive = true; - Mtm->nActiveTransactions += 1; - } + MtmActivateTransaction(ts); } MtmUnlock(); - } else { + } else { globalSnapshot = MtmTx.snapshot; } - if (!TransactionIdIsValid(gtid->xid)) { - /* In case of recovery InvalidTransactionId is passed */ - if (Mtm->status != MTM_RECOVERY) { - elog(WARNING, "Node %d tries to recover node %d which is in %s mode", gtid->node, MtmNodeId, MtmNodeStatusMnem[Mtm->status]); - MtmStartRecovery(); - } - } else if (Mtm->status == MTM_RECOVERY) { - /* When recovery is completed we get normal transaction ID and switch to normal mode */ - MtmRecoveryCompleted(); - } + + + // if (!TransactionIdIsValid(gtid->xid) && Mtm->status != MTM_RECOVERY) + // { + // /* In case of recovery InvalidTransactionId is passed */ + // MtmStateProcessEvent(MTM_RECOVERY_START1); + // } + // else if (Mtm->status == MTM_RECOVERY) + // { + // /* When recovery is completed we get normal transaction ID and switch to normal mode */ + // MtmStateProcessEvent(MTM_RECOVERY_FINISH1); + // } } void MtmSetCurrentTransactionGID(char const* gid) @@ -1479,6 +1849,13 @@ XidStatus MtmGetCurrentTransactionStatus(void) return MtmTx.status; } +/* + * Perform atomic exchange of global transaction status. + * The problem is that because of concurrent applying transactions at replica by multiple + * threads we can proceed ABORT request before PREPARE - when transaction is not yet + * applied at this node and there is MtmTransState associated with this transactions. + * We remember information about status of this transaction in MtmTransMap. + */ XidStatus MtmExchangeGlobalTransactionStatus(char const* gid, XidStatus new_status) { MtmTransMap* tm; @@ -1490,14 +1867,18 @@ XidStatus MtmExchangeGlobalTransactionStatus(char const* gid, XidStatus new_stat tm = (MtmTransMap*)hash_search(MtmGid2State, gid, HASH_ENTER, &found); if (found) { old_status = tm->status; - if (old_status != TRANSACTION_STATUS_ABORTED) { + if (old_status != TRANSACTION_STATUS_ABORTED) { tm->status = new_status; } - if (tm->state != NULL && old_status == TRANSACTION_STATUS_IN_PROGRESS) { + if (tm->state != NULL && old_status == TRANSACTION_STATUS_IN_PROGRESS) { /* Return UNKNOWN to mark that transaction was prepared */ + if (new_status != TRANSACTION_STATUS_UNKNOWN) { + MTM_LOG1("Change status of in-progress transaction %s to %s", gid, MtmTxnStatusMnem[new_status]); + } old_status = TRANSACTION_STATUS_UNKNOWN; } - } else { + } else { + MTM_LOG2("Set status of unknown transaction %s to %s", gid, MtmTxnStatusMnem[new_status]); tm->state = NULL; tm->status = new_status; } @@ -1507,7 +1888,7 @@ XidStatus MtmExchangeGlobalTransactionStatus(char const* gid, XidStatus new_stat void MtmSetCurrentTransactionCSN(csn_t csn) { - MTM_LOG3("Set current transaction CSN %ld", csn); + MTM_LOG3("Set current transaction CSN %lld", csn); MtmTx.csn = csn; MtmTx.isDistributed = true; MtmTx.isReplicated = true; @@ -1520,37 +1901,38 @@ csn_t MtmGetTransactionCSN(TransactionId xid) csn_t csn; MtmLock(LW_SHARED); ts = (MtmTransState*)hash_search(MtmXid2State, &xid, HASH_FIND, NULL); - Assert(ts != NULL); - csn = ts->csn; + csn = ts ? ts->csn : INVALID_CSN; MtmUnlock(); return csn; } - + +/* + * Wakeup coordinator's backend when voting is completed + */ void MtmWakeUpBackend(MtmTransState* ts) { if (!ts->votingCompleted) { MTM_TXTRACE(ts, "MtmWakeUpBackend"); MTM_LOG3("Wakeup backed procno=%d, pid=%d", ts->procno, ProcGlobal->allProcs[ts->procno].pid); ts->votingCompleted = true; - SetLatch(&ProcGlobal->allProcs[ts->procno].procLatch); + SetLatch(&ProcGlobal->allProcs[ts->procno].procLatch); } } + +/* + * Abort the transaction if it is not yet aborted + */ void MtmAbortTransaction(MtmTransState* ts) -{ - Assert(MtmLockCount != 0); /* should be invoked with exclsuive lock */ - if (ts->status != TRANSACTION_STATUS_ABORTED) { - if (ts->status == TRANSACTION_STATUS_COMMITTED) { - elog(LOG, "Attempt to rollback already committed transaction %d (%s)", ts->xid, ts->gid); - } else { - MTM_LOG1("Rollback active transaction %d:%d (local xid %d) status %s", ts->gtid.node, ts->gtid.xid, ts->xid, MtmTxnStatusMnem[ts->status]); +{ + Assert(MtmLockCount != 0); /* should be invoked with exclusive lock */ + if (ts->status != TRANSACTION_STATUS_ABORTED) { + if (ts->status == TRANSACTION_STATUS_COMMITTED) { + MTM_ELOG(LOG, "Attempt to rollback already committed transaction %s (%llu)", ts->gid, (long64)ts->xid); + } else { + MTM_LOG1("Rollback active transaction %s (%llu) %d:%llu status %s", ts->gid, (long64)ts->xid, ts->gtid.node, (long64)ts->gtid.xid, MtmTxnStatusMnem[ts->status]); ts->status = TRANSACTION_STATUS_ABORTED; MtmAdjustSubtransactions(ts); - if (ts->isActive) { - ts->isActive = false; - Assert(Mtm->nActiveTransactions != 0); - Mtm->nActiveTransactions -= 1; - } } } } @@ -1561,145 +1943,137 @@ void MtmAbortTransaction(MtmTransState* ts) * ------------------------------------------- */ +/* + * Handle critical errors while applying transaction at replica. + * Such errors should cause shutdown of this cluster node to allow other nodes to continue serving client requests. + * Other error will be just reported and ignored + */ void MtmHandleApplyError(void) { ErrorData *edata = CopyErrorData(); - switch (edata->sqlerrcode) { + MtmLockCount = 0; /* LWLocks will be released by AbortTransaction, we just need to clear owr MtmLockCount */ + switch (edata->sqlerrcode) { case ERRCODE_DISK_FULL: case ERRCODE_INSUFFICIENT_RESOURCES: case ERRCODE_IO_ERROR: case ERRCODE_DATA_CORRUPTED: case ERRCODE_INDEX_CORRUPTED: + /* Should we really treate this errors as fatal? case ERRCODE_SYSTEM_ERROR: case ERRCODE_INTERNAL_ERROR: case ERRCODE_OUT_OF_MEMORY: - elog(WARNING, "Node is excluded from cluster because of non-recoverable error %d, %s, pid=%u", - edata->sqlerrcode, edata->message, getpid()); - // MtmSwitchClusterMode(MTM_OUT_OF_SERVICE); - // kill(PostmasterPid, SIGQUIT); - break; + */ + MtmStateProcessEvent(MTM_NONRECOVERABLE_ERROR); } FreeErrorData(edata); } /** * Check status of all prepared transactions with coordinator at disabled node. - * Actually, if node is precommitted (state == UNKNOWN) at any of nodes, then is is prepared at all nodes and so can be committed. + * Actually, if node is precommitted (state == UNKNOWN) at any of nodes, then is is prepared at all nodes and so can be committed. * But if coordinator of transaction is crashed, we made a decision about transaction commit only if transaction is precommitted at ALL live nodes. * The reason is that we want to avoid extra polling to obtain maximum CSN from all nodes to assign it to committed transaction. - * Called only from MtmDisableNode in critical section. + * Called only from MtmDisableNode and in major mode. + * + * commitPrecommited is used when nnodes=2 and we are switching to major/referee mode. */ -static void MtmPollStatusOfPreparedTransactions(int disabledNodeId) +void MtmPollStatusOfPreparedTransactionsForDisabledNode(int disabledNodeId, bool commitPrecommited) { MtmTransState *ts; - for (ts = Mtm->transListHead; ts != NULL; ts = ts->next) { - if (TransactionIdIsValid(ts->gtid.xid) - && ts->gtid.node == disabledNodeId + for (ts = Mtm->transListHead; ts != NULL; ts = ts->next) { + if (TransactionIdIsValid(ts->gtid.xid) + && ts->gtid.node == disabledNodeId && ts->votingCompleted - && (ts->status == TRANSACTION_STATUS_UNKNOWN || ts->status == TRANSACTION_STATUS_IN_PROGRESS)) + && (ts->status == TRANSACTION_STATUS_UNKNOWN || ts->status == TRANSACTION_STATUS_IN_PROGRESS)) { Assert(ts->gid[0]); - if (ts->status == TRANSACTION_STATUS_IN_PROGRESS) { - elog(LOG, "Abort transaction %s because its coordinator is disabled and it is not prepared at node %d", ts->gid, MtmNodeId); + if (ts->status == TRANSACTION_STATUS_IN_PROGRESS) { + MTM_ELOG(LOG, "Abort transaction %s because its coordinator is disabled and it is not prepared at node %d", ts->gid, MtmNodeId); + TXFINISH("%s ABORT, PollStatusOfPrepared", ts->gid); MtmFinishPreparedTransaction(ts, false); } else { - MTM_LOG1("Poll state of transaction %d (%s)", ts->xid, ts->gid); - MtmBroadcastPollMessage(ts); + if (commitPrecommited) + { + TXFINISH("%s COMMIT, PollStatusOfPrepared", ts->gid); + MtmFinishPreparedTransaction(ts, true); + } + else + { + MTM_LOG1("Poll state of transaction %s (%llu)", ts->gid, (long64)ts->xid); + MtmBroadcastPollMessage(ts); + } } } else { - MTM_LOG2("Skip transaction %d (%s) with status %s gtid.node=%d gtid.xid=%d votedMask=%lx", - ts->xid, ts->gid, MtmTxnStatusMnem[ts->status], ts->gtid.node, ts->gtid.xid, ts->votedMask); + MTM_LOG2("Skip transaction %s (%llu) with status %s gtid.node=%d gtid.xid=%llu votedMask=%llx", + ts->gid, (long64)ts->xid, MtmTxnStatusMnem[ts->status], ts->gtid.node, (long64)ts->gtid.xid, ts->votedMask); } } } -static void MtmDisableNode(int nodeId) +/* + * Poll status of all active prepared transaction. + * This function is called before start of recovery to prevent blocking of recovery process by some + * prepared transaction which is not recovered + */ +static void MtmPollStatusOfPreparedTransactions() { - timestamp_t now = MtmGetSystemTime(); - elog(WARNING, "Disable node %d at xlog position %lx, last status change time %d msec ago", nodeId, GetXLogInsertRecPtr(), - (int)USEC_TO_MSEC(now - Mtm->nodes[nodeId-1].lastStatusChangeTime)); - BIT_SET(Mtm->disabledNodeMask, nodeId-1); - Mtm->nodes[nodeId-1].timeline += 1; - Mtm->nodes[nodeId-1].lastStatusChangeTime = now; - Mtm->nodes[nodeId-1].lastHeartbeat = 0; /* defuse watchdog until first heartbeat is received */ - if (nodeId != MtmNodeId) { - Mtm->nLiveNodes -= 1; - } - if (Mtm->nLiveNodes >= Mtm->nAllNodes/2+1) { - /* Make decision about prepared transaction status only in quorum */ - MtmPollStatusOfPreparedTransactions(nodeId); - } -} - -static void MtmEnableNode(int nodeId) -{ - BIT_CLEAR(Mtm->disabledNodeMask, nodeId-1); - BIT_CLEAR(Mtm->reconnectMask, nodeId-1); - Mtm->nodes[nodeId-1].lastStatusChangeTime = MtmGetSystemTime(); - Mtm->nodes[nodeId-1].lastHeartbeat = 0; /* defuse watchdog until first heartbeat is received */ - if (nodeId != MtmNodeId) { - Mtm->nLiveNodes += 1; + MtmTransState *ts; + for (ts = Mtm->transListHead; ts != NULL; ts = ts->next) { + if (TransactionIdIsValid(ts->gtid.xid) + && ts->votingCompleted /* If voting is not yet completed, then there is some backend coordinating this transaction */ + && (ts->status == TRANSACTION_STATUS_UNKNOWN || ts->status == TRANSACTION_STATUS_IN_PROGRESS)) + { + Assert(ts->gid[0]); + MTM_LOG1("Poll state of transaction %s (%llu) from node %d", ts->gid, (long64)ts->xid, ts->gtid.node); + MtmBroadcastPollMessage(ts); + } else { + MTM_LOG2("Skip prepared transaction %s (%d) with status %s gtid.node=%d gtid.xid=%llu votedMask=%llx", + ts->gid, (long64)ts->xid, MtmTxnStatusMnem[ts->status], ts->gtid.node, (long64)ts->gtid.xid, ts->votedMask); + } } - elog(WARNING, "Enable node %d at xlog position %lx", nodeId, GetXLogInsertRecPtr()); -} - -void MtmRecoveryCompleted(void) -{ - int i; - MTM_LOG1("Recovery of node %d is completed, disabled mask=%llx, connectivity mask=%llx, endLSN=%lx, live nodes=%d", - MtmNodeId, (long long) Mtm->disabledNodeMask, (long long) Mtm->connectivityMask, GetXLogInsertRecPtr(), Mtm->nLiveNodes); - MtmLock(LW_EXCLUSIVE); - Mtm->recoverySlot = 0; - Mtm->recoveredLSN = GetXLogInsertRecPtr(); - BIT_CLEAR(Mtm->disabledNodeMask, MtmNodeId-1); - Mtm->reconnectMask |= Mtm->connectivityMask; /* try to reestablish all connections */ - Mtm->nodes[MtmNodeId-1].lastStatusChangeTime = MtmGetSystemTime(); - for (i = 0; i < Mtm->nAllNodes; i++) { - Mtm->nodes[i].lastHeartbeat = 0; /* defuse watchdog until first heartbeat is received */ - } - /* Mode will be changed to online once all logical receiver are connected */ - elog(LOG, "Recovery completed with %d active receivers and %d started senders from %d", Mtm->nReceivers, Mtm->nSenders, Mtm->nLiveNodes-1); - MtmSwitchClusterMode(Mtm->nReceivers == Mtm->nLiveNodes-1 && Mtm->nSenders == Mtm->nLiveNodes-1 ? MTM_ONLINE : MTM_CONNECTED); - MtmUnlock(); } /** - * Check state of replication slots. If some of them are too much lag behind wal, then drop this slots to avoid + * Check state of replication slots. If some of them are too much lag behind wal, then drop this slots to avoid * WAL overflow */ -static void +static void MtmCheckSlots() { - if (MtmMaxRecoveryLag != 0 && Mtm->disabledNodeMask != 0) + if (MtmMaxRecoveryLag != 0 && Mtm->disabledNodeMask != 0) { int i; - for (i = 0; i < max_replication_slots; i++) { + for (i = 0; i < max_replication_slots; i++) { ReplicationSlot* slot = &ReplicationSlotCtl->replication_slots[i]; int nodeId; - if (slot->in_use + if (slot->in_use && sscanf(slot->data.name.data, MULTIMASTER_SLOT_PATTERN, &nodeId) == 1 && BIT_CHECK(Mtm->disabledNodeMask, nodeId-1) - && slot->data.confirmed_flush + MtmMaxRecoveryLag < GetXLogInsertRecPtr()) + && slot->data.confirmed_flush + (long64) MtmMaxRecoveryLag * 1024 < GetXLogInsertRecPtr() + && slot->data.confirmed_flush != 0) { - elog(WARNING, "Drop slot for node %d which lag %ld is larger than threshold %d", - nodeId, - GetXLogInsertRecPtr() - slot->data.restart_lsn, - MtmMaxRecoveryLag); - ReplicationSlotDrop(slot->data.name.data); + MTM_ELOG(WARNING, "Drop slot for node %d which lag %lld B is larger than threshold %d kB", + nodeId, + (long64)(GetXLogInsertRecPtr() - slot->data.restart_lsn), + MtmMaxRecoveryLag); + MtmDropSlot(nodeId); } } } } +/* + * Get lag between replication slot position (dsata proceeded by WAL sender) and current position in WAL + */ static int64 MtmGetSlotLag(int nodeId) { int i; - for (i = 0; i < max_replication_slots; i++) { + for (i = 0; i < max_replication_slots; i++) { ReplicationSlot* slot = &ReplicationSlotCtl->replication_slots[i]; int node; - if (slot->in_use + if (slot->in_use && sscanf(slot->data.name.data, MULTIMASTER_SLOT_PATTERN, &node) == 1 && node == nodeId) { @@ -1712,319 +2086,157 @@ static int64 MtmGetSlotLag(int nodeId) /* * This function is called by WAL sender when start sending new transaction. - * It returns true if specified node is in recovery mode. In this case we should send all transactions from WAL, + * It returns true if specified node is in recovery mode. In this case we should send to it all transactions from WAL, * not only coordinated by self node as in normal mode. */ bool MtmIsRecoveredNode(int nodeId) { - if (BIT_CHECK(Mtm->disabledNodeMask, nodeId-1)) { - if (!MtmIsRecoverySession) { - elog(ERROR, "Node %d is marked as disabled but is not in recovery mode", nodeId); + if (BIT_CHECK(Mtm->disabledNodeMask, nodeId-1)) { + if (!MtmIsRecoverySession) { + MtmDeepUnlock(); + MTM_ELOG(ERROR, "Node %d is marked as disabled but is not in recovery mode", nodeId); } return true; - } else { - MtmIsRecoverySession = false; /* recovery is completed */ + } else { return false; } } - -bool MtmRecoveryCaughtUp(int nodeId, XLogRecPtr slotLSN) +/* + * Check if wal sender replayed all transactions from WAL log. + * It can never happen if there are many active transactions. + * In this case we wait until gap between sent and current position in the + * WAL becomes smaller than threshold value MtmMinRecoveryLag and + * after it prohibit start of new transactions until WAL is completely replayed. + */ +void MtmCheckRecoveryCaughtUp(int nodeId, lsn_t slotLSN) { - bool caughtUp = false; MtmLock(LW_EXCLUSIVE); - if (MtmIsRecoveredNode(nodeId)) { - XLogRecPtr walLSN = GetXLogInsertRecPtr(); - if (slotLSN == walLSN && Mtm->nActiveTransactions == 0) { - if (BIT_CHECK(Mtm->nodeLockerMask, nodeId-1)) { - MTM_LOG1("Node %d is caught-up", nodeId); - BIT_CLEAR(Mtm->walSenderLockerMask, MyWalSnd - WalSndCtl->walsnds); - BIT_CLEAR(Mtm->nodeLockerMask, nodeId-1); - Mtm->nLockers -= 1; - } else { - MTM_LOG1("%d: node %d is caught-up without locking cluster", MyProcPid, nodeId); - /* We are lucky: caught-up without locking cluster! */ - } - MtmEnableNode(nodeId); - Mtm->nConfigChanges += 1; - caughtUp = true; - } else if (!BIT_CHECK(Mtm->nodeLockerMask, nodeId-1) - && slotLSN + MtmMinRecoveryLag > walLSN) - { + if (MtmIsRecoveredNode(nodeId)) { + lsn_t walLSN = GetXLogInsertRecPtr(); + if (!BIT_CHECK(Mtm->originLockNodeMask, nodeId-1) + && slotLSN + (long64) MtmMinRecoveryLag * 1024 > walLSN) + { /* - * Wal sender almost catched up. + * Wal sender almost caught up. * Lock cluster preventing new transaction to start until wal is completely replayed. - * We have to maintain two bitmasks: one is marking wal sender, another - correspondent nodes. + * We have to maintain two bitmasks: one is marking wal sender, another - correspondent nodes. * Is there some better way to establish mapping between nodes ad WAL-seconder? */ - MTM_LOG1("Node %d is almost caught-up: slot position %lx, WAL position %lx, active transactions %d", + MTM_LOG1("Node %d is almost caught-up: slot position %llx, WAL position %llx, active transactions %d", nodeId, slotLSN, walLSN, Mtm->nActiveTransactions); - Assert(MyWalSnd != NULL); /* This function is called by WAL-sender, so it should not be NULL */ - BIT_SET(Mtm->nodeLockerMask, nodeId-1); - BIT_SET(Mtm->walSenderLockerMask, MyWalSnd - WalSndCtl->walsnds); - Mtm->nLockers += 1; - } else { - MTM_LOG2("Continue recovery of node %d, slot position %lx, WAL position %lx," - " WAL sender position %lx, lockers %d, active transactions %d", nodeId, slotLSN, - walLSN, MyWalSnd->sentPtr, Mtm->nLockers, Mtm->nActiveTransactions); + + MTM_LOG1("[LOCK] set lock on MtmCheckRecoveryCaughtUp"); + BIT_SET(Mtm->originLockNodeMask, nodeId-1); // XXXX: log that + } else { + MTM_LOG2("Continue recovery of node %d, slot position %llx, WAL position %llx," + " WAL sender position %llx, lockers %llx, active transactions %d", nodeId, slotLSN, + walLSN, MyWalSnd->sentPtr, Mtm->orinLockNodeMask, Mtm->nActiveTransactions); } } MtmUnlock(); - return caughtUp; } -void MtmSwitchClusterMode(MtmNodeStatus mode) +/* + * Notification about node recovery completion. + * If recovery is in progress and WAL sender replays all records in WAL, + * then enable recovered node and send notification to it about end of recovery. + */ +bool MtmRecoveryCaughtUp(int nodeId, lsn_t walEndPtr) { - Mtm->status = mode; - Mtm->nodes[MtmNodeId-1].lastStatusChangeTime = MtmGetSystemTime(); - MTM_LOG1("Switch to %s mode", MtmNodeStatusMnem[mode]); - /* ??? Something else to do here? */ + bool caughtUp = false; + MtmLock(LW_EXCLUSIVE); + if (MtmIsRecoveredNode(nodeId) && Mtm->nActiveTransactions == 0) { + MtmStateProcessNeighborEvent(nodeId, MTM_NEIGHBOR_RECOVERY_CAUGHTUP); + caughtUp = true; + MtmIsRecoverySession = false; + } + MtmUnlock(); + return caughtUp; } - /* - * If there are recovering nodes which are catching-up WAL, check the status and prevent new transaction from commit to give - * WAL-sender a chance to catch-up WAL, completely synchronize replica and switch it to normal mode. - * This function is called before transaction prepare with multimaster lock set. + * Prevent start of any new transactions at this node */ -static void -MtmCheckClusterLock() -{ +static void +MtmLockCluster(void) +{ timestamp_t delay = MIN_WAIT_TIMEOUT; - while (true) + if (MtmClusterLocked) { + MtmUnlockCluster(); + } + MtmLock(LW_EXCLUSIVE); + if (BIT_CHECK(Mtm->originLockNodeMask, MtmNodeId-1)) { + MtmUnlock(); + elog(ERROR, "There is already pending exclusive lock"); + } + BIT_SET(Mtm->originLockNodeMask, MtmNodeId-1); + MtmClusterLocked = true; + MTM_LOG1("Transaction %lld tries to lock cluster at %lld, running transactions=%lld", + (long64)MtmTx.xid, MtmGetCurrentTime(), (long64)Mtm->nRunningTransactions); + /* Wait until everything is locked */ + while (Mtm->nRunningTransactions != 1 /* I am one */ + || ((((nodemask_t)1 << Mtm->nAllNodes)-1) & ~(Mtm->currentLockNodeMask|Mtm->originLockNodeMask) & ~Mtm->disabledNodeMask) != 0) { - nodemask_t mask = Mtm->walSenderLockerMask; - if (mask != 0) { - if (Mtm->nActiveTransactions == 0) { - XLogRecPtr currLogPos = GetXLogInsertRecPtr(); - int i; - for (i = 0; mask != 0; i++, mask >>= 1) { - if (mask & 1) { - if (WalSndCtl->walsnds[i].sentPtr != currLogPos) { - /* recovery is in progress */ - break; - } else { - /* recovered replica catched up with master */ - MTM_LOG1("WAL-sender %d complete recovery", i); - BIT_CLEAR(Mtm->walSenderLockerMask, i); - } - } - } - } - if (mask != 0) { - /* some "almost catch-up" wal-senders are still working. */ - /* Do not start new transactions until them are completed. */ - MtmUnlock(); - MtmSleep(delay); - if (delay*2 <= MAX_WAIT_TIMEOUT) { - delay *= 2; - } - MtmLock(LW_EXCLUSIVE); - continue; - } else { - /* All lockers are synchronized their logs */ - /* Remove lock and mark them as recovered */ - MTM_LOG1("Complete recovery of %d nodes (node mask %lx)", Mtm->nLockers, (long) Mtm->nodeLockerMask); - Assert(Mtm->walSenderLockerMask == 0); - Assert((Mtm->nodeLockerMask & Mtm->disabledNodeMask) == Mtm->nodeLockerMask); - Mtm->disabledNodeMask &= ~Mtm->nodeLockerMask; - Mtm->nLiveNodes += Mtm->nLockers; - Mtm->nLockers = 0; - Mtm->nodeLockerMask = 0; - MtmCheckQuorum(); - } + MtmUnlock(); + MtmSleep(delay); + if (delay*2 <= MAX_WAIT_TIMEOUT) { + delay *= 2; } - break; + MtmLock(LW_EXCLUSIVE); } -} + MTM_LOG1("Transaction %lld locked cluster at %lld, LSN %lld, active transactions=%lld", + (long64)MtmTx.xid, MtmGetCurrentTime(), (long64)GetXLogInsertRecPtr(), (long64)Mtm->nRunningTransactions); + MtmUnlock(); +} -/** - * Build internode connectivity mask. 1 - means that node is disconnected. +/* + * Remove global cluster lock set by MtmLockCluster */ -static bool -MtmBuildConnectivityMatrix(nodemask_t* matrix, bool nowait) +static void +MtmUnlockCluster(void) { - int i, j, n = Mtm->nAllNodes; - bool changed = false; - - for (i = 0; i < n; i++) { - if (i+1 != MtmNodeId) { - void *data = &Mtm->nodes[i].connectivityMask; - if (data == NULL) { - return false; - } - matrix[i] = *(nodemask_t*)data; - } else { - matrix[i] = Mtm->connectivityMask; - } - - if (lastKnownMatrix[i] != matrix[i]) - { - changed = true; - lastKnownMatrix[i] = matrix[i]; - } - } - - /* Print matrix if changed */ - if (changed) - { - fprintf(stderr, "Connectivity matrix:\n"); - for (i = 0; i < n; i++) - { - for (j = 0; j < n; j++) - putc(BIT_CHECK(matrix[i], j) ? 'X' : '+', stderr); - putc('\n', stderr); - } - fputs("-----------------------\n", stderr); - } - - /* make matrix symetric: required for Bron–Kerbosch algorithm */ - for (i = 0; i < n; i++) { - for (j = 0; j < i; j++) { - matrix[i] |= ((matrix[j] >> i) & 1) << j; - matrix[j] |= ((matrix[i] >> j) & 1) << i; - } - matrix[i] &= ~((nodemask_t)1 << i); - } - - return true; + MtmLock(LW_EXCLUSIVE); + MTM_LOG1("Transaction %lld unlock cluster at %lld status %s LSN %lld", (long64)MtmTx.xid, MtmGetCurrentTime(), MtmTxnStatusMnem[MtmTx.status], (long64)GetXLogInsertRecPtr()); + BIT_CLEAR(Mtm->originLockNodeMask, MtmNodeId-1); + MtmClusterLocked = false; + MtmUnlock(); } - -/** - * Build connectivity graph, find clique in it and extend disabledNodeMask by nodes not included in clique. - * This function returns false if current node is excluded from cluster, true otherwise +/* + * If there are recovering nodes which are catching-up WAL, check the status and prevent new transaction from commit to give + * WAL-sender a chance to catch-up WAL, completely synchronize replica and switch it to normal mode. + * This function is called before transaction prepare with multimaster lock set. */ -bool MtmRefreshClusterStatus(bool nowait) +static void +MtmCheckClusterLock() { - nodemask_t mask, clique, disabled; - nodemask_t matrix[MAX_NODES]; - int clique_size; - int i; - - if (!MtmBuildConnectivityMatrix(matrix, nowait)) { - return false; - } - - clique = MtmFindMaxClique(matrix, Mtm->nAllNodes, &clique_size); - - if ( clique == (~Mtm->disabledNodeMask & (((nodemask_t)1 << Mtm->nAllNodes)-1)) ) - /* Nothing is changed */ - return false; - - if (clique_size >= Mtm->nAllNodes/2+1) { /* have quorum */ - fprintf(stderr, "Old mask: "); - for (i = 0; i < Mtm->nAllNodes; i++) { - putc(BIT_CHECK(Mtm->disabledNodeMask, i) ? '-' : '+', stderr); - } - putc('\n', stderr); - fprintf(stderr, "New mask: "); - for (i = 0; i < Mtm->nAllNodes; i++) { - putc(BIT_CHECK(clique, i) ? '+' : '-', stderr); - } - putc('\n', stderr); - - MTM_LOG1("Find clique %lx, disabledNodeMask %lx", (long) clique, (long) Mtm->disabledNodeMask); - MtmLock(LW_EXCLUSIVE); - disabled = ~clique & (((nodemask_t)1 << Mtm->nAllNodes)-1) & ~Mtm->disabledNodeMask; /* new disabled nodes mask */ - - if (disabled) { - timestamp_t now = MtmGetSystemTime(); - for (i = 0, mask = disabled; mask != 0; i++, mask >>= 1) { - if (mask & 1) { - if (Mtm->nodes[i].lastStatusChangeTime + MSEC_TO_USEC(MtmNodeDisableDelay) < now) { - MtmDisableNode(i+1); - } - } - } - MtmCheckQuorum(); - } -#if 0 - if (disabled) { - MtmTransState *ts; - /* Interrupt voting for active transaction and abort them */ - for (ts = Mtm->transListHead; ts != NULL; ts = ts->next) { - MTM_LOG3("Active transaction gid='%s', coordinator=%d, xid=%d, status=%s, gtid.xid=%d", - ts->gid, ts->gtid.node, ts->xid, MtmTxnStatusMnen[ts->status], ts->gtid.xid); - if (MtmIsCoordinator(ts) && !ts->votingCompleted && ts->status != TRANSACTION_STATUS_ABORTED) { - MtmAbortTransaction(ts); - MtmWakeUpBackend(ts); - } - } - } -#endif + timestamp_t delay = MIN_WAIT_TIMEOUT; + while (Mtm->originLockNodeMask | Mtm->inducedLockNodeMask) { + /* some "almost cautch-up" wal-senders are still working. */ + /* Do not start new transactions until them are completed. */ MtmUnlock(); - if (BIT_CHECK(Mtm->disabledNodeMask, MtmNodeId-1)) { - if (Mtm->status == MTM_ONLINE) { - /* I was excluded from cluster:( */ - MtmSwitchClusterMode(MTM_OFFLINE); - } - } else if (Mtm->status == MTM_OFFLINE) { - /* Should we somehow restart logical receivers? */ - MtmStartRecovery(); + MtmSleep(delay); + if (delay*2 <= MAX_WAIT_TIMEOUT) { + delay *= 2; } - } else { - MTM_LOG1("Clique %lx has no quorum", (long) clique); - MtmSwitchClusterMode(MTM_IN_MINORITY); + MtmLock(LW_EXCLUSIVE); } - return true; } -void MtmCheckQuorum(void) +int MtmGetNumberOfVotingNodes() { - Mtm->nConfigChanges += 1; - if (Mtm->nLiveNodes < Mtm->nAllNodes/2+1) { - if (Mtm->status == MTM_ONLINE) { /* out of quorum */ - elog(WARNING, "Node is in minority: disabled mask %lx", (long) Mtm->disabledNodeMask); - MtmSwitchClusterMode(MTM_IN_MINORITY); - } - } else { - if (Mtm->status == MTM_IN_MINORITY) { - MTM_LOG1("Node is in majority: disabled mask %lx", (long) Mtm->disabledNodeMask); - MtmSwitchClusterMode(MTM_ONLINE); + int i; + int nVotingNodes = Mtm->nAllNodes; + nodemask_t deadNodeMask = Mtm->deadNodeMask; + for (i = 0; deadNodeMask != 0; i++) { + if (BIT_CHECK(deadNodeMask, i)) { + nVotingNodes -= 1; + BIT_CLEAR(deadNodeMask, i); } } + return nVotingNodes; } - -void MtmOnNodeDisconnect(int nodeId) -{ - if (BIT_CHECK(Mtm->disabledNodeMask, nodeId-1)) - { - /* Node is already disabled */ - return; - } - if (Mtm->nodes[nodeId-1].lastStatusChangeTime + MSEC_TO_USEC(MtmNodeDisableDelay) > MtmGetSystemTime()) - { - /* Avoid false detection of node failure and prevent node status blinking */ - return; - } - MtmLock(LW_EXCLUSIVE); - BIT_SET(Mtm->connectivityMask, nodeId-1); - BIT_SET(Mtm->reconnectMask, nodeId-1); - elog(LOG, "Disconnect node %d connectivity mask %llx", nodeId, (long long) Mtm->connectivityMask); - MtmUnlock(); - - MtmSleep(MSEC_TO_USEC(MtmHeartbeatSendTimeout)); - MtmRefreshClusterStatus(false); -} - -void MtmOnNodeConnect(int nodeId) -{ - MtmLock(LW_EXCLUSIVE); - elog(LOG, "Connect node %d connectivity mask %llx", nodeId, (long long) Mtm->connectivityMask); - BIT_CLEAR(Mtm->connectivityMask, nodeId-1); - BIT_SET(Mtm->reconnectMask, nodeId-1); /* force sender to reestablish connection and send heartbeat */ - MtmUnlock(); -} - -void MtmReconnectNode(int nodeId) -{ - MtmLock(LW_EXCLUSIVE); - BIT_SET(Mtm->reconnectMask, nodeId-1); - MtmUnlock(); -} - - /* * ------------------------------------------- @@ -2032,8 +2244,12 @@ void MtmReconnectNode(int nodeId) * ------------------------------------------- */ - -static HTAB* +/* + * Initialize Xid2State hash table to obtain status of transaction by its local XID. + * Size of this hash table should be limited by MtmAdjustOldestXid function which performs cleanup + * of transaction list and from the list and from the hash table transactions which XIDs are not used in any snapshot at any node + */ +static HTAB* MtmCreateXidMap(void) { HASHCTL info; @@ -2051,7 +2267,12 @@ MtmCreateXidMap(void) return htab; } -static HTAB* +/* + * Initialize Gid2State hash table to obtain status of transaction by GID. + * Size of this hash table should be limited by MtmAdjustOldestXid function which performs cleanup + * of transaction list and from the list and from the hash table transactions which XIDs are not used in any snapshot at any node + */ +static HTAB* MtmCreateGidMap(void) { HASHCTL info; @@ -2063,46 +2284,49 @@ MtmCreateGidMap(void) "MtmGid2State", MTM_MAP_SIZE, MTM_MAP_SIZE, &info, - HASH_ELEM + HASH_ELEM ); return htab; } -static HTAB* +/* + * Initialize hash table used to mark local (not distributed) tables + */ +static HTAB* MtmCreateLocalTableMap(void) { HASHCTL info; HTAB* htab; memset(&info, 0, sizeof(info)); - info.keysize = sizeof(Oid); + info.entrysize = info.keysize = sizeof(Oid); htab = ShmemInitHash( "MtmLocalTables", MULTIMASTER_MAX_LOCAL_TABLES, MULTIMASTER_MAX_LOCAL_TABLES, &info, - 0 + HASH_ELEM | HASH_BLOBS ); return htab; } static void MtmMakeRelationLocal(Oid relid) { - if (OidIsValid(relid)) { - MtmLock(LW_EXCLUSIVE); + if (OidIsValid(relid)) { + MtmLock(LW_EXCLUSIVE); hash_search(MtmLocalTables, &relid, HASH_ENTER, NULL); - MtmUnlock(); + MtmUnlock(); } -} +} -void MtmMakeTableLocal(char* schema, char* name) +void MtmMakeTableLocal(char const* schema, char const* name) { - RangeVar* rv = makeRangeVar(schema, name, -1); + RangeVar* rv = makeRangeVar((char*)schema, (char*)name, -1); Oid relid = RangeVarGetRelid(rv, NoLock, true); MtmMakeRelationLocal(relid); } -typedef struct { +typedef struct { NameData schema; NameData name; } MtmLocalTablesTuple; @@ -2118,9 +2342,9 @@ static void MtmLoadLocalTables(void) rv = makeRangeVar(MULTIMASTER_SCHEMA_NAME, MULTIMASTER_LOCAL_TABLES_TABLE, -1); rel = heap_openrv_extended(rv, RowExclusiveLock, true); - if (rel != NULL) { + if (rel != NULL) { scan = systable_beginscan(rel, 0, true, NULL, 0, NULL); - + while (HeapTupleIsValid(tuple = systable_getnext(scan))) { MtmLocalTablesTuple *t = (MtmLocalTablesTuple*) GETSTRUCT(tuple); @@ -2132,6 +2356,13 @@ static void MtmLoadLocalTables(void) } } +/* + * Multimaster control file is used to prevent erroneous inclusion of node in the cluster. + * It contains cluster name (any user defined identifier) and node id. + * In case of creating new cluster node using pg_basebackup this file is copied together will + * all other PostgreSQL files and so new node will know ID of the cluster node from which it + * is cloned. It is necessary to complete synchronization of new node with the rest of the cluster. + */ static void MtmCheckControlFile(void) { char controlFilePath[MAXPGPATH]; @@ -2142,23 +2373,23 @@ static void MtmCheckControlFile(void) if (f != NULL && fgets(buf, sizeof buf, f)) { char* sep = strchr(buf, ':'); if (sep == NULL) { - elog(FATAL, "File mmts_control doesn't contain cluster name"); + MTM_ELOG(FATAL, "File mmts_control doesn't contain cluster name"); } *sep = '\0'; - if (strcmp(buf, MtmClusterName) != 0) { - elog(FATAL, "Database belongs to some other cluster %s rather than %s", buf, MtmClusterName); + if (strcmp(buf, MtmClusterName) != 0) { + MTM_ELOG(FATAL, "Database belongs to some other cluster %s rather than %s", buf, MtmClusterName); } - if (sscanf(sep+1, "%d", &Mtm->donorNodeId) != 1) { - elog(FATAL, "File mmts_control doesn't contain node id"); + if (sscanf(sep+1, "%d", &Mtm->donorNodeId) != 1) { + MTM_ELOG(FATAL, "File mmts_control doesn't contain node id"); } fclose(f); - } else { - if (f != NULL) { + } else { + if (f != NULL) { fclose(f); } f = fopen(controlFilePath, "w"); - if (f == NULL) { - elog(FATAL, "Failed to create mmts_control file: %m"); + if (f == NULL) { + MTM_ELOG(FATAL, "Failed to create mmts_control file: %m"); } Mtm->donorNodeId = MtmNodeId; fprintf(f, "%s:%d\n", MtmClusterName, Mtm->donorNodeId); @@ -2166,7 +2397,10 @@ static void MtmCheckControlFile(void) } } - +/* + * Perform initialization of multimaster state. + * This function is called from shared memory startup hook (after completion of initialization of shared memory) + */ static void MtmInitialize() { bool found; @@ -2176,29 +2410,39 @@ static void MtmInitialize() Mtm = (MtmState*)ShmemInitStruct(MULTIMASTER_NAME, sizeof(MtmState) + sizeof(MtmNodeInfo)*(MtmMaxNodes-1), &found); if (!found) { - Mtm->status = MTM_INITIALIZATION; + MemSet(Mtm, 0, sizeof(MtmState) + sizeof(MtmNodeInfo)*(MtmMaxNodes-1)); + Mtm->status = MTM_DISABLED; //MTM_INITIALIZATION; Mtm->recoverySlot = 0; Mtm->locks = GetNamedLWLockTranche(MULTIMASTER_NAME); Mtm->csn = MtmGetCurrentTime(); Mtm->lastCsn = INVALID_CSN; Mtm->oldestXid = FirstNormalTransactionId; - Mtm->nLiveNodes = MtmNodes; - Mtm->nAllNodes = MtmNodes; - Mtm->disabledNodeMask = 0; - Mtm->connectivityMask = 0; - Mtm->pglogicalNodeMask = 0; - Mtm->walSenderLockerMask = 0; - Mtm->nodeLockerMask = 0; + Mtm->nLiveNodes = 0; //MtmNodes; + Mtm->nAllNodes = MtmNodes; + Mtm->disabledNodeMask = (((nodemask_t)1 << MtmNodes) - 1); + Mtm->clique = 0; + Mtm->refereeGrant = false; + Mtm->refereeWinnerId = 0; + Mtm->stalledNodeMask = 0; + Mtm->stoppedNodeMask = 0; + Mtm->deadNodeMask = 0; + Mtm->recoveredNodeMask = 0; + Mtm->pglogicalReceiverMask = 0; + Mtm->pglogicalSenderMask = 0; + Mtm->inducedLockNodeMask = 0; + Mtm->currentLockNodeMask = 0; + Mtm->originLockNodeMask = 0; Mtm->reconnectMask = 0; - Mtm->recoveredLSN = InvalidXLogRecPtr; - Mtm->nLockers = 0; + Mtm->recoveredLSN = INVALID_LSN; Mtm->nActiveTransactions = 0; + Mtm->nRunningTransactions = 0; Mtm->votingTransactions = NULL; - Mtm->transListHead = NULL; - Mtm->transListTail = &Mtm->transListHead; - Mtm->nReceivers = 0; - Mtm->nSenders = 0; - Mtm->timeShift = 0; + Mtm->transListHead = NULL; + Mtm->transListTail = &Mtm->transListHead; + Mtm->activeTransList.next = Mtm->activeTransList.prev = &Mtm->activeTransList; + Mtm->nReceivers = 0; + Mtm->nSenders = 0; + Mtm->timeShift = 0; Mtm->transCount = 0; Mtm->gcCount = 0; Mtm->nConfigChanges = 0; @@ -2211,7 +2455,7 @@ static void MtmInitialize() for (i = 0; i < MtmNodes; i++) { Mtm->nodes[i].oldestSnapshot = 0; Mtm->nodes[i].disabledNodeMask = 0; - Mtm->nodes[i].connectivityMask = 0; + Mtm->nodes[i].connectivityMask = (((nodemask_t)1 << MtmNodes) - 1); Mtm->nodes[i].lockGraphUsed = 0; Mtm->nodes[i].lockGraphAllocated = 0; Mtm->nodes[i].lockGraphData = NULL; @@ -2220,32 +2464,35 @@ static void MtmInitialize() Mtm->nodes[i].con = MtmConnections[i]; Mtm->nodes[i].flushPos = 0; Mtm->nodes[i].lastHeartbeat = 0; - Mtm->nodes[i].restartLSN = InvalidXLogRecPtr; + Mtm->nodes[i].restartLSN = INVALID_LSN; Mtm->nodes[i].originId = InvalidRepOriginId; Mtm->nodes[i].timeline = 0; + Mtm->nodes[i].nHeartbeats = 0; + Mtm->nodes[i].manualRecovery = false; + Mtm->nodes[i].slotDeleted = false; } Mtm->nodes[MtmNodeId-1].originId = DoNotReplicateId; /* All transaction originated from the current node should be ignored during recovery */ - Mtm->nodes[MtmNodeId-1].restartLSN = (XLogRecPtr)PG_UINT64_MAX; + Mtm->nodes[MtmNodeId-1].restartLSN = (lsn_t)PG_UINT64_MAX; PGSemaphoreCreate(&Mtm->sendSemaphore); PGSemaphoreReset(&Mtm->sendSemaphore); SpinLockInit(&Mtm->queueSpinlock); BgwPoolInit(&Mtm->pool, MtmExecutor, MtmDatabaseName, MtmDatabaseUser, MtmQueueSize, MtmWorkers); RegisterXactCallback(MtmXactCallback, NULL); MtmTx.snapshot = INVALID_CSN; - MtmTx.xid = InvalidTransactionId; + MtmTx.xid = InvalidTransactionId; } MtmXid2State = MtmCreateXidMap(); MtmGid2State = MtmCreateGidMap(); MtmLocalTables = MtmCreateLocalTableMap(); - MtmDoReplication = true; + MtmDoReplication = true; TM = &MtmTM; LWLockRelease(AddinShmemInitLock); MtmCheckControlFile(); } -static void +static void MtmShmemStartup(void) { if (PreviousShmemStartupHook) { @@ -2254,29 +2501,79 @@ MtmShmemStartup(void) MtmInitialize(); } +static void MtmSetRemoteFunction(char const* list, void* extra) +{ + if (MtmRemoteFunctions) { + hash_destroy(MtmRemoteFunctions); + MtmRemoteFunctions = NULL; + } +} + +static void MtmInitializeRemoteFunctionsMap() +{ + HASHCTL info; + char* p, *q; + int n_funcs = 1; + FuncCandidateList clist; + + for (p = MtmRemoteFunctionsList; (q = strchr(p, ',')) != NULL; p = q + 1, n_funcs++); + + Assert(MtmRemoteFunctions == NULL); + + memset(&info, 0, sizeof(info)); + info.entrysize = info.keysize = sizeof(Oid); + info.hcxt = TopMemoryContext; + MtmRemoteFunctions = hash_create("MtmRemoteFunctions", n_funcs, &info, + HASH_ELEM | HASH_BLOBS | HASH_CONTEXT); + + p = pstrdup(MtmRemoteFunctionsList); + do { + q = strchr(p, ','); + if (q != NULL) { + *q++ = '\0'; + } + clist = FuncnameGetCandidates(stringToQualifiedNameList(p), -1, NIL, false, false, true); + if (clist == NULL) { + MTM_ELOG(ERROR, "Failed to lookup function %s", p); + } else if (clist->next != NULL) { + MTM_ELOG(ERROR, "Ambigious function %s", p); + } + hash_search(MtmRemoteFunctions, &clist->oid, HASH_ENTER, NULL); + p = q; + } while (p != NULL); +} + +/* + * Parse node connection string. + * This function is called at cluster startup and while adding new cluster node + */ void MtmUpdateNodeConnectionInfo(MtmConnectionInfo* conn, char const* connStr) { char const* host; char const* end; - int hostLen; - char* port; - int connStrLen = (int)strlen(connStr); + int hostLen; + char const* port; + int connStrLen = (int)strlen(connStr); if (connStrLen >= MULTIMASTER_MAX_CONN_STR_SIZE) { - elog(ERROR, "Too long (%d) connection string '%s': limit is %d", + MTM_ELOG(ERROR, "Too long (%d) connection string '%s': limit is %d", connStrLen, connStr, MULTIMASTER_MAX_CONN_STR_SIZE-1); } + + while(isspace(*connStr)) + connStr++; + strcpy(conn->connStr, connStr); host = strstr(connStr, "host="); if (host == NULL) { - elog(ERROR, "Host not specified in connection string: '%s'", connStr); + MTM_ELOG(ERROR, "Host not specified in connection string: '%s'", connStr); } host += 5; for (end = host; *end != ' ' && *end != '\0'; end++); hostLen = end - host; if (hostLen >= MULTIMASTER_MAX_HOST_NAME_SIZE) { - elog(ERROR, "Too long (%d) host name '%.*s': limit is %d", + MTM_ELOG(ERROR, "Too long (%d) host name '%.*s': limit is %d", hostLen, hostLen, host, MULTIMASTER_MAX_HOST_NAME_SIZE-1); } memcpy(conn->hostName, host, hostLen); @@ -2285,15 +2582,30 @@ void MtmUpdateNodeConnectionInfo(MtmConnectionInfo* conn, char const* connStr) port = strstr(connStr, "arbiter_port="); if (port != NULL) { if (sscanf(port+13, "%d", &conn->arbiterPort) != 1) { - elog(ERROR, "Invalid arbiter port: %s", port+13); + MTM_ELOG(ERROR, "Invalid arbiter port: %s", port+13); } - } else { + } else { conn->arbiterPort = MULTIMASTER_DEFAULT_ARBITER_PORT; } + MTM_ELOG(INFO, "Using arbiter port: %d", conn->arbiterPort); - elog(WARNING, "Using arbiter port: %d", conn->arbiterPort); + port = strstr(connStr, " port="); + if (port == NULL && strncmp(connStr, "port=", 5) == 0) { + port = connStr-1; + } + if (port != NULL) { + if (sscanf(port+6, "%d", &conn->postmasterPort) != 1) { + MTM_ELOG(ERROR, "Invalid postmaster port: %s", port+6); + } + } else { + conn->postmasterPort = DEF_PGPORT; + } } +/* + * Parse "multimaster.conn_strings" configuration parameter and + * set connection string for each node using MtmUpdateNodeConnectionInfo + */ static void MtmSplitConnStrs(void) { int i; @@ -2301,141 +2613,150 @@ static void MtmSplitConnStrs(void) char buf[MULTIMASTER_MAX_CTL_STR_SIZE]; MemoryContext old_context = MemoryContextSwitchTo(TopMemoryContext); - if (*MtmConnStrs == '@') { + if (*MtmConnStrs == '@') { f = fopen(MtmConnStrs+1, "r"); for (i = 0; fgets(buf, sizeof buf, f) != NULL; i++) { if (strlen(buf) <= 1) { - elog(ERROR, "Empty lines are not allowed in %s file", MtmConnStrs+1); + MTM_ELOG(ERROR, "Empty lines are not allowed in %s file", MtmConnStrs+1); } } - } else { + } else { char* p = MtmConnStrs; - for (i = 0; *p != '\0'; p++, i++) { - if ((p = strchr(p, ',')) == NULL) { + for (i = 0; *p != '\0'; p++, i++) { + if ((p = strchr(p, ',')) == NULL) { i += 1; break; } } } - - if (i > MAX_NODES) { - elog(ERROR, "Multimaster with more than %d nodes is not currently supported", MAX_NODES); + + if (i > MAX_NODES) { + MTM_ELOG(ERROR, "Multimaster with more than %d nodes is not currently supported", MAX_NODES); + } + if (i < 2) { + MTM_ELOG(ERROR, "Multimaster should have at least two nodes"); } - if (i < 2) { - elog(ERROR, "Multimaster should have at least two nodes"); - } if (MtmMaxNodes == 0) { MtmMaxNodes = i; - } else if (MtmMaxNodes < i) { - elog(ERROR, "More than %d nodes are specified", MtmMaxNodes); - } + } else if (MtmMaxNodes < i) { + MTM_ELOG(ERROR, "More than %d nodes are specified", MtmMaxNodes); + } MtmNodes = i; MtmConnections = (MtmConnectionInfo*)palloc(MtmMaxNodes*sizeof(MtmConnectionInfo)); - if (f != NULL) { + if (f != NULL) { fseek(f, SEEK_SET, 0); for (i = 0; fgets(buf, sizeof buf, f) != NULL; i++) { size_t len = strlen(buf); - if (buf[len-1] == '\n') { + if (buf[len-1] == '\n') { buf[len-1] = '\0'; - } + } MtmUpdateNodeConnectionInfo(&MtmConnections[i], buf); } fclose(f); - } else { + } else { char* copy = pstrdup(MtmConnStrs); char* connStr = copy; char* connStrEnd = connStr + strlen(connStr); - for (i = 0; connStr < connStrEnd; i++) { + for (i = 0; connStr < connStrEnd; i++) { char* p = strchr(connStr, ','); - if (p == NULL) { + if (p == NULL) { p = connStrEnd; } - *p = '\0'; + *p = '\0'; MtmUpdateNodeConnectionInfo(&MtmConnections[i], connStr); connStr = p + 1; } pfree(copy); } - if (MtmNodeId == INT_MAX) { - if (gethostname(buf, sizeof buf) != 0) { - elog(ERROR, "Failed to get host name: %m"); - } - for (i = 0; i < MtmNodes; i++) { - if (strcmp(MtmConnections[i].hostName, buf) == 0) { - if (MtmNodeId == INT_MAX) { - MtmNodeId = i+1; - } else { - elog(ERROR, "multimaster.node_id is not explicitly specified and more than one nodes are configured for host %s", buf); + + if (MtmNodeId == INT_MAX) { + if (gethostname(buf, sizeof buf) != 0) { + MTM_ELOG(ERROR, "Failed to get host name: %m"); + } + for (i = 0; i < MtmNodes; i++) { + MTM_LOG3("Node %d, host %s, port=%d, my port %d", i, MtmConnections[i].hostName, MtmConnections[i].postmasterPort, PostPortNumber); + if ((strcmp(MtmConnections[i].hostName, buf) == 0 || strcmp(MtmConnections[i].hostName, "localhost") == 0 || strcmp(MtmConnections[i].hostName, "127.0.0.1") == 0) + && MtmConnections[i].postmasterPort == PostPortNumber) + { + if (MtmNodeId == INT_MAX) { + MtmNodeId = i+1; + } else { + MTM_ELOG(ERROR, "multimaster.node_id is not explicitly specified and more than one nodes are configured for host %s port %d", buf, PostPortNumber); + } } } + if (MtmNodeId == INT_MAX) { + MTM_ELOG(ERROR, "multimaster.node_id is not specified and host name %s can not be located in connection strings list", buf); + } + } else if (MtmNodeId > i) { + MTM_ELOG(ERROR, "Multimaster node id %d is out of range [%d..%d]", MtmNodeId, 1, MtmNodes); } - if (MtmNodeId == INT_MAX) { - elog(ERROR, "multimaster.node_id and host name %s can not be located in connection strings list", buf); - } - } else if (MtmNodeId > i) { - elog(ERROR, "Multimaster node id %d is out of range [%d..%d]", MtmNodeId, 1, MtmNodes); - } - { - char* connStr = MtmConnections[MtmNodeId-1].connStr; - char* dbName = strstr(connStr, "dbname="); // XXX: shoud we care about string 'itisnotdbname=xxx'? - char* dbUser = strstr(connStr, "user="); - char* end; - size_t len; - - if (dbName == NULL) - elog(ERROR, "Database is not specified in connection string: '%s'", connStr); - - if (dbUser == NULL) { - char *errstr; - const char *username = get_user_name(&errstr); - if (!username) - elog(FATAL, "Database user is not specified in connection string '%s', fallback failed: %s", connStr, errstr); + char* connStr = MtmConnections[MtmNodeId-1].connStr; + char* dbName = strstr(connStr, "dbname="); // XXX: shoud we care about string 'itisnotdbname=xxx'? + char* dbUser = strstr(connStr, "user="); + char* end; + size_t len; + + if (dbName == NULL) + MTM_ELOG(ERROR, "Database is not specified in connection string: '%s'", connStr); + + if (dbUser == NULL) + { + char *errstr; + const char *username = get_user_name(&errstr); + if (!username) + MTM_ELOG(FATAL, "Database user is not specified in connection string '%s', fallback failed: %s", connStr, errstr); + else + MTM_ELOG(WARNING, "Database user is not specified in connection string '%s', fallback to '%s'", connStr, username); + MtmDatabaseUser = pstrdup(username); + } else - elog(WARNING, "Database user is not specified in connection string '%s', fallback to '%s'", connStr, username); - MtmDatabaseUser = pstrdup(username); - } - else - { - dbUser += 5; - end = strchr(dbUser, ' '); - if (!end) end = strchr(dbUser, '\0'); + { + dbUser += 5; + end = strchr(dbUser, ' '); + if (!end) end = strchr(dbUser, '\0'); + Assert(end != NULL); + len = end - dbUser; + MtmDatabaseUser = pnstrdup(dbUser, len); + } + + dbName += 7; + end = strchr(dbName, ' '); + if (!end) end = strchr(dbName, '\0'); Assert(end != NULL); - len = end - dbUser; - MtmDatabaseUser = pnstrdup(dbUser, len); + len = end - dbName; + MtmDatabaseName = pnstrdup(dbName, len); } - - dbName += 7; - end = strchr(dbName, ' '); - if (!end) end = strchr(dbName, '\0'); - Assert(end != NULL); - len = end - dbName; - MtmDatabaseName = pnstrdup(dbName, len); - } MemoryContextSwitchTo(old_context); } +/* + * Check correctness of multimaster configuration + */ static bool ConfigIsSane(void) { bool ok = true; +#if 0 if (DefaultXactIsoLevel != XACT_REPEATABLE_READ) { - elog(WARNING, "multimaster requires default_transaction_isolation = 'repeatable read'"); + MTM_ELOG(WARNING, "multimaster requires default_transaction_isolation = 'repeatable read'"); ok = false; } +#endif if (MtmMaxNodes < 1) { - elog(WARNING, "multimaster requires multimaster.max_nodes > 0"); + MTM_ELOG(WARNING, "multimaster requires multimaster.max_nodes > 0"); ok = false; } if (max_prepared_xacts < 1) { - elog(WARNING, + MTM_ELOG(WARNING, "multimaster requires max_prepared_transactions > 0, " "because all transactions are implicitly two-phase"); ok = false; @@ -2445,7 +2766,7 @@ static bool ConfigIsSane(void) int workers_required = 2 * MtmMaxNodes + MtmWorkers + 1; if (max_worker_processes < workers_required) { - elog(WARNING, + MTM_ELOG(WARNING, "multimaster requires max_worker_processes >= %d", workers_required); ok = false; @@ -2454,7 +2775,7 @@ static bool ConfigIsSane(void) if (wal_level != WAL_LEVEL_LOGICAL) { - elog(WARNING, + MTM_ELOG(WARNING, "multimaster requires wal_level = 'logical', " "because it is build on top of logical replication"); ok = false; @@ -2462,7 +2783,7 @@ static bool ConfigIsSane(void) if (max_wal_senders < MtmMaxNodes) { - elog(WARNING, + MTM_ELOG(WARNING, "multimaster requires max_wal_senders >= %d (multimaster.max_nodes), ", MtmMaxNodes); ok = false; @@ -2470,7 +2791,7 @@ static bool ConfigIsSane(void) if (max_replication_slots < MtmMaxNodes) { - elog(WARNING, + MTM_ELOG(WARNING, "multimaster requires max_replication_slots >= %d (multimaster.max_nodes), ", MtmMaxNodes); ok = false; @@ -2485,20 +2806,20 @@ _PG_init(void) /* * In order to create our shared memory area, we have to be loaded via * shared_preload_libraries. If not, fall out without hooking into any of - * the main system. (We don't throw error here because it seems useful to + * the main system. (We don't throw error here because it seems useful to * allow the cs_* functions to be created even when the - * module isn't active. The functions must protect themselves against + * module isn't active. The functions must protect themselves against * being called then, however.) */ if (!process_shared_preload_libraries_in_progress) return; DefineCustomIntVariable( - "multimaster.heartbeat_send_timeout", + "multimaster.heartbeat_send_timeout", "Timeout in milliseconds of sending heartbeat messages", "Period of broadcasting heartbeat messages by arbiter to all nodes", &MtmHeartbeatSendTimeout, - 1000, + 200, 1, INT_MAX, PGC_BACKEND, @@ -2509,11 +2830,11 @@ _PG_init(void) ); DefineCustomIntVariable( - "multimaster.heartbeat_recv_timeout", + "multimaster.heartbeat_recv_timeout", "Timeout in milliseconds of receiving heartbeat messages", "If no heartbeat message is received from node within this period, it assumed to be dead", &MtmHeartbeatRecvTimeout, - 10000, + 1000, 1, INT_MAX, PGC_BACKEND, @@ -2530,9 +2851,9 @@ _PG_init(void) &MtmGcPeriod, MTM_HASH_SIZE/10, 1, - INT_MAX, + INT_MAX, PGC_BACKEND, - 0, + GUC_NO_SHOW_ALL, NULL, NULL, NULL @@ -2554,14 +2875,14 @@ _PG_init(void) ); DefineCustomIntVariable( "multimaster.trans_spill_threshold", - "Maximal size (Mb) of transaction after which transaction is written to the disk", + "Maximal size of transaction after which transaction is written to the disk", NULL, &MtmTransSpillThreshold, - 1000, /* 1Gb */ + 100 * 1024, /* 100Mb */ 0, - INT_MAX, - PGC_BACKEND, - 0,\ + MaxAllocSize/GUC_UNIT_KB, + PGC_SIGHUP, + GUC_UNIT_KB, NULL, NULL, NULL @@ -2576,37 +2897,89 @@ _PG_init(void) 1, INT_MAX, PGC_BACKEND, + GUC_NO_SHOW_ALL, + NULL, + NULL, + NULL + ); + + DefineCustomIntVariable( + "multimaster.min_recovery_lag", + "Minimal lag of WAL-sender performing recovery after which cluster is locked until recovery is completed", + "When wal-sender almost catch-up WAL current position we need to stop 'Achilles tortile competition' and " + "temporary stop commit of new transactions until node will be completely repared", + &MtmMinRecoveryLag, + 10 * 1024, /* 10 MB */ + 0, + INT_MAX, + PGC_SIGHUP, + GUC_UNIT_KB, + NULL, + NULL, + NULL + ); + + DefineCustomIntVariable( + "multimaster.max_recovery_lag", + "Maximal lag of replication slot of failed node after which this slot is dropped to avoid transaction log overflow", + "Dropping slot makes it not possible to recover node using logical replication mechanism, it will be ncessary to completely copy content of some other nodes " + "using basebackup or similar tool. Zero value of parameter disable dropping slot.", + &MtmMaxRecoveryLag, + 1 * 1024 * 1024, /* 1 GB */ + 0, + INT_MAX, + PGC_SIGHUP, + GUC_UNIT_KB, + NULL, + NULL, + NULL + ); + + DefineCustomBoolVariable( + "multimaster.break_connection", + "Break connection with client when node is no online", + NULL, + &MtmBreakConnection, + false, + PGC_BACKEND, + 0, + NULL, + NULL, + NULL + ); + + DefineCustomBoolVariable( + "multimaster.bypass", + "Allow access to offline multimaster node", + NULL, + &MtmBypass, + false, + PGC_USERSET, /* context */ 0, NULL, NULL, NULL ); - DefineCustomIntVariable( - "multimaster.min_recovery_lag", - "Minimal lag of WAL-sender performing recovery after which cluster is locked until recovery is completed", - "When wal-sender almost catch-up WAL current position we need to stop 'Achilles tortile competition' and " - "temporary stop commit of new transactions until node will be completely repared", - &MtmMinRecoveryLag, - 100000, - 1, - INT_MAX, - PGC_BACKEND, + DefineCustomBoolVariable( + "multimaster.major_node", + "Node which forms a majority in case of partitioning in cliques with equal number of nodes", + NULL, + &MtmMajorNode, + false, + PGC_SUSET, 0, NULL, NULL, NULL ); - DefineCustomIntVariable( - "multimaster.max_recovery_lag", - "Maximal lag of replication slot of failed node after which this slot is dropped to avoid transaction log overflow", - "Dropping slot makes it not possible to recover node using logical replication mechanism, it will be ncessary to completely copy content of some other nodes " - "using basebackup or similar tool. Zero value of parameter disable dropping slot.", - &MtmMaxRecoveryLag, - 100000000, - 0, - INT_MAX, + DefineCustomBoolVariable( + "multimaster.monotonic_sequences", + "Enforce monotinic behaviour of sequence values obtained from different nodes", + NULL, + &MtmMonotonicSequences, + false, PGC_BACKEND, 0, NULL, @@ -2616,7 +2989,7 @@ _PG_init(void) DefineCustomBoolVariable( "multimaster.ignore_tables_without_pk", - "Do not replicate tables withpout primary key", + "Do not replicate tables without primary key", NULL, &MtmIgnoreTablesWithoutPk, false, @@ -2634,6 +3007,45 @@ _PG_init(void) &MtmUseDtm, true, PGC_BACKEND, + GUC_NO_SHOW_ALL, + NULL, + NULL, + NULL + ); + + DefineCustomBoolVariable( + "multimaster.referee", + "This instance of Postgres contains no data and peforms role of referee for other nodes", + NULL, + &MtmReferee, + false, + PGC_POSTMASTER, + 0, + NULL, + NULL, + NULL + ); + + DefineCustomStringVariable( + "multimaster.referee_connstring", + "Referee connection string", + NULL, + &MtmRefereeConnStr, + "", + PGC_POSTMASTER, + 0, + NULL, + NULL, + NULL + ); + + DefineCustomBoolVariable( + "multimaster.use_rdma", + "Use RDMA sockets", + NULL, + &MtmUseRDMA, + false, + PGC_POSTMASTER, 0, NULL, NULL, @@ -2642,12 +3054,12 @@ _PG_init(void) DefineCustomBoolVariable( "multimaster.preserve_commit_order", - "Transactions from one node will be committed in same order al all nodes", + "Transactions from one node will be committed in same order on all nodes", NULL, &MtmPreserveCommitOrder, true, PGC_BACKEND, - 0, + GUC_NO_SHOW_ALL, NULL, NULL, NULL @@ -2660,7 +3072,7 @@ _PG_init(void) &MtmVolksWagenMode, false, PGC_BACKEND, - 0, + GUC_NO_SHOW_ALL, NULL, NULL, NULL @@ -2675,7 +3087,7 @@ _PG_init(void) 1, INT_MAX, PGC_BACKEND, - 0, + GUC_NO_SHOW_ALL, NULL, NULL, NULL @@ -2705,7 +3117,7 @@ _PG_init(void) 1, INT_MAX, PGC_BACKEND, - 0, + GUC_NO_SHOW_ALL, NULL, NULL, NULL @@ -2716,11 +3128,11 @@ _PG_init(void) "Minimal timeout between receiving PREPARED message from nodes participated in transaction to coordinator (milliseconds)", NULL, &MtmMin2PCTimeout, - 2000, /* 2 seconds */ - 1, + 0, /* disabled */ + 0, INT_MAX, PGC_BACKEND, - 0, + GUC_NO_SHOW_ALL, NULL, NULL, NULL @@ -2729,14 +3141,14 @@ _PG_init(void) DefineCustomIntVariable( "multimaster.max_2pc_ratio", "Maximal ratio (in percents) between prepare time at different nodes: if T is time of preparing transaction at some node," - " then transaction can be aborted if prepared responce was not received in T*MtmMax2PCRatio/100", + " then transaction can be aborted if prepared response was not received in T*MtmMax2PCRatio/100", NULL, &MtmMax2PCRatio, 200, /* 2 times */ 1, INT_MAX, PGC_BACKEND, - 0, + GUC_NO_SHOW_ALL, NULL, NULL, NULL @@ -2748,10 +3160,10 @@ _PG_init(void) NULL, &MtmQueueSize, 256*1024*1024, - 1024*1024, + 1024*1024, INT_MAX, PGC_BACKEND, - 0, + GUC_NO_SHOW_ALL, NULL, NULL, NULL @@ -2763,7 +3175,7 @@ _PG_init(void) NULL, &MtmArbiterPort, MULTIMASTER_DEFAULT_ARBITER_PORT, - 0, + 0, INT_MAX, PGC_BACKEND, 0, @@ -2779,12 +3191,25 @@ _PG_init(void) &MtmConnStrs, "", PGC_BACKEND, /* context */ - 0, /* flags */ - NULL, /* GucStringCheckHook check_hook */ - NULL, /* GucStringAssignHook assign_hook */ - NULL /* GucShowHook show_hook */ + 0, /* flags */ + NULL, /* GucStringCheckHook check_hook */ + NULL, /* GucStringAssignHook assign_hook */ + NULL /* GucShowHook show_hook */ ); - + + DefineCustomStringVariable( + "multimaster.remote_functions", + "List of fnuction names which should be executed remotely at all multimaster nodes instead of executing them at master and replicating result of their work", + NULL, + &MtmRemoteFunctionsList, + "lo_create,lo_unlink", + PGC_USERSET, /* context */ + GUC_LIST_INPUT | GUC_LIST_QUOTE, /* flags */ + NULL, /* GucStringCheckHook check_hook */ + MtmSetRemoteFunction, /* GucStringAssignHook assign_hook */ + NULL /* GucShowHook show_hook */ + ); + DefineCustomStringVariable( "multimaster.cluster_name", "Name of the cluster", @@ -2792,12 +3217,12 @@ _PG_init(void) &MtmClusterName, "mmts", PGC_BACKEND, /* context */ - 0, /* flags */ - NULL, /* GucStringCheckHook check_hook */ - NULL, /* GucStringAssignHook assign_hook */ - NULL /* GucShowHook show_hook */ + 0, /* flags */ + NULL, /* GucStringCheckHook check_hook */ + NULL, /* GucStringAssignHook assign_hook */ + NULL /* GucShowHook show_hook */ ); - + DefineCustomIntVariable( "multimaster.node_id", "Multimaster node ID", @@ -2813,54 +3238,29 @@ _PG_init(void) NULL ); - DefineCustomIntVariable( - "multimaster.connect_timeout", - "Multimaster nodes connect timeout", - "Interval in milliseconds for establishing connection with cluster node", - &MtmConnectTimeout, - 10000, /* 10 seconds */ - 1, - INT_MAX, - PGC_BACKEND, - 0, - NULL, - NULL, - NULL - ); - - DefineCustomIntVariable( - "multimaster.reconnect_timeout", - "Multimaster nodes reconnect timeout", - "Interval in milliseconds for establishing connection with cluster node", - &MtmReconnectTimeout, - 5000, /* 5 seconds */ - 1, - INT_MAX, - PGC_BACKEND, - 0, - NULL, - NULL, - NULL - ); + if (MtmReferee) + { + return; + } if (!ConfigIsSane()) { - elog(ERROR, "Multimaster config is insane, refusing to work"); + MTM_ELOG(ERROR, "Multimaster config is insane, refusing to work"); } /* This will also perform some checks on connection strings */ MtmSplitConnStrs(); - MtmStartReceivers(); + MtmStartReceivers(); /* - * Request additional shared resources. (These are no-ops if we're not in - * the postmaster process.) We'll allocate or attach to the shared + * Request additional shared resources. (These are no-ops if we're not in + * the postmaster process.) We'll allocate or attach to the shared * resources in mtm_shmem_startup(). */ RequestAddinShmemSpace(MTM_SHMEM_SIZE + MtmQueueSize); RequestNamedLWLockTranche(MULTIMASTER_NAME, 1 + MtmMaxNodes*2); - BgwPoolStart(MtmWorkers, MtmPoolConstructor); + BgwPoolStart(MtmWorkers, MtmPoolConstructor); MtmArbiterInitialize(); @@ -2878,6 +3278,9 @@ _PG_init(void) PreviousProcessUtilityHook = ProcessUtility_hook; ProcessUtility_hook = MtmProcessUtility; + + PreviousSeqNextvalHook = SeqNextvalHook; + SeqNextvalHook = MtmSeqNextvalHook; } /* @@ -2888,63 +3291,58 @@ _PG_fini(void) { shmem_startup_hook = PreviousShmemStartupHook; ExecutorFinish_hook = PreviousExecutorFinishHook; - ProcessUtility_hook = PreviousProcessUtilityHook; + ProcessUtility_hook = PreviousProcessUtilityHook; + SeqNextvalHook = PreviousSeqNextvalHook; } /* - * This functions is called by pglogical receiver main function when receiver background worker is started. - * We switch to ONLINE mode when all receviers are connected. - * As far as background worker can be restarted multiple times, use node bitmask. + * Recovery slot is node ID from which new or crash node is performing recovery. + * This function is called in case of logical receiver error to make it possible to try to perform + * recovery from some other node */ -void MtmReceiverStarted(int nodeId) -{ - MtmLock(LW_EXCLUSIVE); - if (!BIT_CHECK(Mtm->pglogicalNodeMask, nodeId-1)) { - BIT_SET(Mtm->pglogicalNodeMask, nodeId-1); - if (BIT_CHECK(Mtm->disabledNodeMask, nodeId-1)) { - MtmEnableNode(nodeId); - MtmCheckQuorum(); - } - elog(LOG, "Start %d receivers and %d senders from %d cluster status %s", Mtm->nReceivers+1, Mtm->nSenders, Mtm->nLiveNodes-1, MtmNodeStatusMnem[Mtm->status]); - if (++Mtm->nReceivers == Mtm->nLiveNodes-1 && Mtm->nSenders == Mtm->nLiveNodes-1 && Mtm->status == MTM_CONNECTED) { - MtmSwitchClusterMode(MTM_ONLINE); - } - } - MtmUnlock(); -} - void MtmReleaseRecoverySlot(int nodeId) { - if (Mtm->recoverySlot == nodeId) { + if (Mtm->recoverySlot == nodeId) { Mtm->recoverySlot = 0; } -} +} +/* + * Rollback transaction originated from the specified node. + * This function is called either for commit logical message with AbortPrepared flag either for abort prepared logical message. + */ void MtmRollbackPreparedTransaction(int nodeId, char const* gid) { + char state3pc[MAX_3PC_STATE_SIZE]; XidStatus status = MtmExchangeGlobalTransactionStatus(gid, TRANSACTION_STATUS_ABORTED); - MTM_LOG1("Abort prepared transaction %s status %s", gid, MtmTxnStatusMnem[status]); - if (status == TRANSACTION_STATUS_UNKNOWN) { - MTM_LOG2("PGLOGICAL_ABORT_PREPARED commit: gid=%s #2", gid); + MTM_LOG1("Abort prepared transaction %s status %s from node %d originId=%d", gid, MtmTxnStatusMnem[status], nodeId, Mtm->nodes[nodeId-1].originId); + if (status == TRANSACTION_STATUS_UNKNOWN || (status == TRANSACTION_STATUS_IN_PROGRESS && GetPreparedTransactionState(gid, state3pc))) + { + MTM_LOG1("PGLOGICAL_ABORT_PREPARED commit: gid=%s #2", gid); MtmResetTransaction(); StartTransactionCommand(); MtmBeginSession(nodeId); MtmSetCurrentTransactionGID(gid); + TXFINISH("%s ABORT, MtmRollbackPrepared", gid); FinishPreparedTransaction(gid, false); + MtmTx.isActive = true; CommitTransactionCommand(); + Assert(!MtmTx.isActive); MtmEndSession(nodeId, true); } else if (status == TRANSACTION_STATUS_IN_PROGRESS) { MtmBeginSession(nodeId); MtmLogAbortLogicalMessage(nodeId, gid); MtmEndSession(nodeId, true); } -} +} /* - * This function is call with MTM mutex locked. - * It shoudl unlock mutex before calling FinishPreparedTransaction to avoid deadlocks. - * ts object is pinned to prevent deallocation while lock is released. + * Wrapper around FinishPreparedTransaction function. + * A proper context is required for invocation of this function. + * This function is called with MTM mutex locked. + * It should unlock mutex before calling FinishPreparedTransaction to avoid deadlocks. + * `ts` object is pinned to prevent deallocation while lock is released. */ void MtmFinishPreparedTransaction(MtmTransState* ts, bool commit) { @@ -2956,34 +3354,36 @@ void MtmFinishPreparedTransaction(MtmTransState* ts, bool commit) MtmUnlock(); MtmResetTransaction(); - - if (!insideTransaction) { + + if (!insideTransaction) { StartTransactionCommand(); } MtmSetCurrentTransactionCSN(ts->csn); MtmSetCurrentTransactionGID(ts->gid); + MtmTx.isActive = true; FinishPreparedTransaction(ts->gid, commit); - - if (!insideTransaction) { + if (commit) { + MTM_LOG2("Distributed transaction %s (%lld) is committed at %lld with LSN=%lld", ts->gid, (long64)ts->xid, MtmGetCurrentTime(), (long64)GetXLogInsertRecPtr()); + } + if (!insideTransaction) { CommitTransactionCommand(); + Assert(!MtmTx.isActive); Assert(ts->status == commit ? TRANSACTION_STATUS_COMMITTED : TRANSACTION_STATUS_ABORTED); } - MtmLock(LW_EXCLUSIVE); + MtmLock(LW_EXCLUSIVE); ts->isPinned = false; } -/* +/* * Determine when and how we should open replication slot. - * Druing recovery we need to open only one replication slot from which node should receive all transactions. - * Slots at other nodes should be removed + * During recovery we need to open only one replication slot from which node should receive all transactions. + * Slots at other nodes should be removed. */ MtmReplicationMode MtmGetReplicationMode(int nodeId, sig_atomic_t volatile* shutdown) { - MtmReplicationMode mode = REPLMODE_OPEN_EXISTED; - MtmLock(LW_EXCLUSIVE); - + if (!Mtm->preparedTransactionsLoaded) { /* We must restore state of prepared (but no committed or aborted) transaction before start of recovery. */ @@ -2991,212 +3391,261 @@ MtmReplicationMode MtmGetReplicationMode(int nodeId, sig_atomic_t volatile* shut Mtm->preparedTransactionsLoaded = true; } - while ((Mtm->status != MTM_CONNECTED && Mtm->status != MTM_ONLINE) || BIT_CHECK(Mtm->disabledNodeMask, nodeId-1)) - { - if (*shutdown) - { - MtmUnlock(); - return REPLMODE_EXIT; - } - /* We are not interested in receiving any deteriorated logical messages from recovered node, do recreate slot */ - if (BIT_CHECK(Mtm->disabledNodeMask, nodeId-1)) { - mode = REPLMODE_CREATE_NEW; - } - MTM_LOG2("%d: receiver slot mode %s", MyProcPid, MtmNodeStatusMnem[Mtm->status]); - if (Mtm->status == MTM_RECOVERY) { - mode = REPLMODE_RECOVERED; - if ((Mtm->recoverySlot == 0 && (Mtm->donorNodeId == MtmNodeId || Mtm->donorNodeId == nodeId)) - || Mtm->recoverySlot == nodeId) - { - /* Choose for recovery first available slot or slot of donor node (if any) */ - elog(WARNING, "Process %d starts recovery from node %d", MyProcPid, nodeId); - Mtm->recoverySlot = nodeId; - Mtm->nReceivers = 0; - Mtm->nSenders = 0; - Mtm->recoveryCount += 1; - Mtm->pglogicalNodeMask = 0; - MtmUnlock(); - return REPLMODE_RECOVERY; - } - } + /* Await until node is connected and both receiver and sender are in clique */ + while (BIT_CHECK(EFFECTIVE_CONNECTIVITY_MASK, nodeId - 1) || + BIT_CHECK(EFFECTIVE_CONNECTIVITY_MASK, MtmNodeId - 1)) + { MtmUnlock(); - /* delay opening of other slots until recovery is completed */ + if (*shutdown) + return REPLMODE_EXIT; MtmSleep(STATUS_POLL_DELAY); MtmLock(LW_EXCLUSIVE); } - if (mode == REPLMODE_RECOVERED) { - MTM_LOG1("%d: Restart replication from node %d after end of recovery", MyProcPid, nodeId); - } else if (mode == REPLMODE_CREATE_NEW) { - MTM_LOG1("%d: Start replication from recovered node %d", MyProcPid, nodeId); - } else { - MTM_LOG1("%d: Continue replication from node %d", MyProcPid, nodeId); + + if (BIT_CHECK(Mtm->disabledNodeMask, MtmNodeId - 1)) + { + /* Ok, then start recovery by luckiest walreceiver (if there is no donor node). + * If this node was populated using basebackup, then donorNodeId is not zero and we should choose this node for recovery */ + if ((Mtm->recoverySlot == 0 || Mtm->recoverySlot == nodeId) + && (Mtm->donorNodeId == MtmNodeId || Mtm->donorNodeId == nodeId)) + { + /* Lock on us */ + Mtm->recoverySlot = nodeId; + MtmPollStatusOfPreparedTransactions(); + MtmUnlock(); + return REPLMODE_RECOVERY; + } + + /* And force less lucky walreceivers wait until recovery is completed */ + while (BIT_CHECK(Mtm->disabledNodeMask, MtmNodeId - 1)) + { + MtmUnlock(); + if (*shutdown) + return REPLMODE_EXIT; + MtmSleep(STATUS_POLL_DELAY); + MtmLock(LW_EXCLUSIVE); + } } - BIT_SET(Mtm->reconnectMask, nodeId-1); /* arbiter should try to reestblish connection with this node */ + MtmUnlock(); - return mode; + return REPLMODE_RECOVERED; } - -static bool MtmIsBroadcast() + +static bool MtmIsBroadcast() { return application_name != NULL && strcmp(application_name, MULTIMASTER_BROADCAST_SERVICE) == 0; } +/* + * Recover node is needed to return stopped and newly added node to the cluster. + * This function creates logical replication slot for the node which will collect + * all changes which should be sent to this node from this moment. + */ void MtmRecoverNode(int nodeId) { - if (nodeId <= 0 || nodeId > Mtm->nLiveNodes) - { - elog(ERROR, "NodeID %d is out of range [1,%d]", nodeId, Mtm->nLiveNodes); + if (nodeId <= 0 || nodeId > Mtm->nAllNodes) + { + MTM_ELOG(ERROR, "NodeID %d is out of range [1,%d]", nodeId, Mtm->nAllNodes); } - if (!BIT_CHECK(Mtm->disabledNodeMask, nodeId-1)) { - elog(ERROR, "Node %d was not disabled", nodeId); + MtmLock(LW_EXCLUSIVE); + Mtm->nodes[nodeId-1].manualRecovery = true; + if (BIT_CHECK(Mtm->stoppedNodeMask, nodeId-1)) + { + Assert(BIT_CHECK(Mtm->disabledNodeMask, nodeId-1)); + BIT_CLEAR(Mtm->stoppedNodeMask, nodeId-1); + BIT_CLEAR(Mtm->stalledNodeMask, nodeId-1); } + MtmUnlock(); + if (!MtmIsBroadcast()) { - MtmBroadcastUtilityStmt(psprintf("select pg_create_logical_replication_slot('" MULTIMASTER_SLOT_PATTERN "', '" MULTIMASTER_NAME "')", nodeId), true); + MtmBroadcastUtilityStmt(psprintf("select pg_create_logical_replication_slot('" MULTIMASTER_SLOT_PATTERN "', '" MULTIMASTER_NAME "')", nodeId), true, 0); + MtmBroadcastUtilityStmt(psprintf("select mtm.recover_node(%d)", nodeId), true, 0); } } - - -void MtmDropNode(int nodeId, bool dropSlot) + +/* + * Resume previosly stopped node. + * This function creates logical replication slot for the node which will collect + * all changes which should be sent to this node from this moment. + */ +void MtmResumeNode(int nodeId) { + if (nodeId <= 0 || nodeId > Mtm->nAllNodes) + { + MTM_ELOG(ERROR, "NodeID %d is out of range [1,%d]", nodeId, Mtm->nAllNodes); + } MtmLock(LW_EXCLUSIVE); + if (BIT_CHECK(Mtm->stalledNodeMask, nodeId-1)) + { + MtmUnlock(); + MTM_ELOG(ERROR, "Node %d can not be resumed because it's replication slot is dropped", nodeId); + } + if (BIT_CHECK(Mtm->stoppedNodeMask, nodeId-1)) + { + Assert(BIT_CHECK(Mtm->disabledNodeMask, nodeId-1)); + BIT_CLEAR(Mtm->stoppedNodeMask, nodeId-1); + } + MtmUnlock(); + + if (!MtmIsBroadcast()) + { + MtmBroadcastUtilityStmt(psprintf("select mtm.resume_node(%d)", nodeId), true, nodeId); + } +} + +/* + * Permanently exclude node from the cluster. Node will not participate in voting and can not be automatically recovered + * until MtmRecoverNode is invoked. + */ +void MtmStopNode(int nodeId, bool dropSlot) +{ + if (nodeId <= 0 || nodeId > Mtm->nAllNodes) + { + MTM_ELOG(ERROR, "NodeID %d is out of range [1,%d]", nodeId, Mtm->nAllNodes); + } + + if (!MtmIsBroadcast()) + { + MtmBroadcastUtilityStmt(psprintf("select mtm.stop_node(%d,%s)", nodeId, dropSlot ? "true" : "false"), true, nodeId); + } + MtmLock(LW_EXCLUSIVE); + BIT_SET(Mtm->stoppedNodeMask, nodeId-1); if (!BIT_CHECK(Mtm->disabledNodeMask, nodeId-1)) { - if (nodeId <= 0 || nodeId > Mtm->nLiveNodes) - { - MtmUnlock(); - elog(ERROR, "NodeID %d is out of range [1,%d]", nodeId, Mtm->nLiveNodes); - } MtmDisableNode(nodeId); - MtmCheckQuorum(); - if (!MtmIsBroadcast()) - { - MtmBroadcastUtilityStmt(psprintf("select mtm.drop_node(%d,%s)", nodeId, dropSlot ? "true" : "false"), true); - } - if (dropSlot) - { - ReplicationSlotDrop(psprintf(MULTIMASTER_SLOT_PATTERN, nodeId)); - } } - MtmUnlock(); + + if (dropSlot) + { + MtmDropSlot(nodeId); + } } static void MtmOnProcExit(int code, Datum arg) { - if (MtmReplicationNodeId > 0) { + if (MtmReplicationNodeId > 0) { Mtm->nodes[MtmReplicationNodeId-1].senderPid = -1; - MTM_LOG1("WAL-sender to %d is terminated", MtmReplicationNodeId); + MTM_LOG1("WAL-sender to %d is terminated", MtmReplicationNodeId); /* MtmOnNodeDisconnect(MtmReplicationNodeId); */ } } -static void +static void MtmReplicationStartupHook(struct PGLogicalStartupHookArgs* args) { ListCell *param; bool recoveryCompleted = false; - XLogRecPtr recoveryStartPos = InvalidXLogRecPtr; + ulong64 recoveryStartPos = INVALID_LSN; MtmIsRecoverySession = false; Mtm->nodes[MtmReplicationNodeId-1].senderPid = MyProcPid; Mtm->nodes[MtmReplicationNodeId-1].senderStartTime = MtmGetSystemTime(); foreach(param, args->in_params) { - DefElem *elem = lfirst(param); - if (strcmp("mtm_replication_mode", elem->defname) == 0) { - if (elem->arg != NULL && strVal(elem->arg) != NULL) { - if (strcmp(strVal(elem->arg), "recovery") == 0) { + DefElem *elem = lfirst(param); + if (strcmp("mtm_replication_mode", elem->defname) == 0) { + if (elem->arg != NULL && strVal(elem->arg) != NULL) { + if (strcmp(strVal(elem->arg), "recovery") == 0) { MtmIsRecoverySession = true; - } else if (strcmp(strVal(elem->arg), "recovered") == 0) { + } else if (strcmp(strVal(elem->arg), "recovered") == 0) { recoveryCompleted = true; - } else if (strcmp(strVal(elem->arg), "open_existed") != 0 && strcmp(strVal(elem->arg), "create_new") != 0) { - elog(ERROR, "Illegal recovery mode %s", strVal(elem->arg)); + } else if (strcmp(strVal(elem->arg), "open_existed") != 0 && strcmp(strVal(elem->arg), "create_new") != 0) { + MTM_ELOG(ERROR, "Illegal recovery mode %s", strVal(elem->arg)); } - } else { - elog(ERROR, "Replication mode is not specified"); - } - } else if (strcmp("mtm_restart_pos", elem->defname) == 0) { + } else { + MTM_ELOG(ERROR, "Replication mode is not specified"); + } + } else if (strcmp("mtm_restart_pos", elem->defname) == 0) { if (elem->arg != NULL && strVal(elem->arg) != NULL) { - sscanf(strVal(elem->arg), "%lx", &recoveryStartPos); - } else { - elog(ERROR, "Restart position is not specified"); + sscanf(strVal(elem->arg), "%llx", &recoveryStartPos); + } else { + MTM_ELOG(ERROR, "Restart position is not specified"); } - } else if (strcmp("mtm_recovered_pos", elem->defname) == 0) { + } else if (strcmp("mtm_recovered_pos", elem->defname) == 0) { if (elem->arg != NULL && strVal(elem->arg) != NULL) { - XLogRecPtr recoveredLSN; - sscanf(strVal(elem->arg), "%lx", &recoveredLSN); - MTM_LOG1("Recovered position of node %d is %lx", MtmReplicationNodeId, recoveredLSN); - if (Mtm->nodes[MtmReplicationNodeId-1].restartLSN < recoveredLSN) { - MTM_LOG2("[restartlsn] node %d: %lx -> %lx (MtmReplicationStartupHook)", MtmReplicationNodeId, Mtm->nodes[MtmReplicationNodeId-1].restartLSN, recoveredLSN); + ulong64 recoveredLSN; + sscanf(strVal(elem->arg), "%llx", &recoveredLSN); + MTM_LOG1("Recovered position of node %d is %llx", MtmReplicationNodeId, recoveredLSN); + if (Mtm->nodes[MtmReplicationNodeId-1].restartLSN < recoveredLSN) { + MTM_LOG1("Advance restartLSN for node %d from %llx to %llx (MtmReplicationStartupHook)", + MtmReplicationNodeId, Mtm->nodes[MtmReplicationNodeId-1].restartLSN, recoveredLSN); + // Assert(Mtm->nodes[MtmReplicationNodeId-1].restartLSN == INVALID_LSN + // || recoveredLSN < Mtm->nodes[MtmReplicationNodeId-1].restartLSN + MtmMaxRecoveryLag); Mtm->nodes[MtmReplicationNodeId-1].restartLSN = recoveredLSN; } - } else { - elog(ERROR, "Recovered position is not specified"); + } else { + MTM_ELOG(ERROR, "Recovered position is not specified"); } } } + MTM_LOG1("Startup of logical replication to node %d", MtmReplicationNodeId); MtmLock(LW_EXCLUSIVE); - if (MtmIsRecoverySession) { - MTM_LOG1("%d: Node %d start recovery of node %d at position %lx", MyProcPid, MtmNodeId, MtmReplicationNodeId, recoveryStartPos); + + if (BIT_CHECK(Mtm->stalledNodeMask, MtmReplicationNodeId-1)) { + MtmUnlock(); + MTM_ELOG(ERROR, "Stalled node %d tries to initiate recovery", MtmReplicationNodeId); + } + + if (BIT_CHECK(Mtm->stoppedNodeMask, MtmReplicationNodeId-1)) { + MtmUnlock(); + MTM_ELOG(ERROR, "Stopped node %d tries to connect", MtmReplicationNodeId); + } + + if (MtmIsRecoverySession) { + MTM_LOG1("%d: Node %d start recovery of node %d at position %llx", MyProcPid, MtmNodeId, MtmReplicationNodeId, recoveryStartPos); Assert(MyReplicationSlot != NULL); - if (recoveryStartPos < MyReplicationSlot->data.restart_lsn) { - elog(WARNING, "Specified recovery start position %lx is beyond restart lsn %lx", recoveryStartPos, MyReplicationSlot->data.restart_lsn); - } - if (!BIT_CHECK(Mtm->disabledNodeMask, MtmReplicationNodeId-1)) { - MtmDisableNode(MtmReplicationNodeId); - MtmCheckQuorum(); + if (recoveryStartPos < MyReplicationSlot->data.restart_lsn) { + MTM_ELOG(WARNING, "Specified recovery start position %llx is beyond restart lsn %llx", recoveryStartPos, (long64)MyReplicationSlot->data.restart_lsn); } - } else if (BIT_CHECK(Mtm->disabledNodeMask, MtmReplicationNodeId-1)) { - if (recoveryCompleted) { - MTM_LOG1("Node %d consider that recovery of node %d is completed: start normal replication", MtmNodeId, MtmReplicationNodeId); - MtmEnableNode(MtmReplicationNodeId); - MtmCheckQuorum(); + MtmStateProcessNeighborEvent(MtmReplicationNodeId, MTM_NEIGHBOR_WAL_SENDER_START_RECOVERY); + } else { //if (BIT_CHECK(Mtm->disabledNodeMask, MtmReplicationNodeId-1)) { + if (recoveryCompleted) { + MTM_LOG1("Node %d consider that recovery of node %d is completed: start normal replication", MtmNodeId, MtmReplicationNodeId); + MtmStateProcessNeighborEvent(MtmReplicationNodeId, MTM_NEIGHBOR_WAL_SENDER_START_RECOVERED); } else { - /* Force arbiter to reestablish connection with this nodem send heartbeat to inform this node that it was disabled and should perform recovery */ + /* Force arbiter to reestablish connection with this node, send heartbeat to inform this node that it was disabled and should perform recovery */ BIT_SET(Mtm->reconnectMask, MtmReplicationNodeId-1); MtmUnlock(); - elog(ERROR, "Disabled node %d tries to reconnect without recovery", MtmReplicationNodeId); + MTM_ELOG(ERROR, "Disabled node %d tries to reconnect without recovery", MtmReplicationNodeId); } - } else { - MTM_LOG1("Node %d start logical replication to node %d in normal mode", MtmNodeId, MtmReplicationNodeId); - } - elog(LOG, "Start %d senders and %d receivers from %d cluster status %s", Mtm->nSenders+1, Mtm->nReceivers, Mtm->nLiveNodes-1, MtmNodeStatusMnem[Mtm->status]); - MtmSenderStarted = 1; - if (++Mtm->nSenders == Mtm->nLiveNodes-1 && Mtm->nReceivers == Mtm->nLiveNodes-1 && Mtm->status == MTM_CONNECTED) { - /* All logical replication connections from and to this node are established, so we can switch cluster to online mode */ - MtmSwitchClusterMode(MTM_ONLINE); } + // else { + // // MTM_LOG1("Node %d start logical replication to node %d in normal mode", MtmNodeId, MtmReplicationNodeId); + // MtmStateProcessNeighborEvent(MtmReplicationNodeId, MTM_NEIGHBOR_WAL_SENDER_START_NORMAL); + // } + BIT_SET(Mtm->reconnectMask, MtmReplicationNodeId-1); /* arbiter should try to reestablish connection with this node */ MtmUnlock(); on_shmem_exit(MtmOnProcExit, 0); } -XLogRecPtr MtmGetFlushPosition(int nodeId) +lsn_t MtmGetFlushPosition(int nodeId) { return Mtm->nodes[nodeId-1].flushPos; } /** * Keep track of progress of WAL writer. - * We need to notify WAL senders at other nodes which logical records + * We need to notify WAL senders at other nodes which logical records * are flushed to the disk and so can survive failure. In asynchronous commit mode - * WAL is flushed by WAL writer. Current flish position can be obtained by GetFlushRecPtr(). + * WAL is flushed by WAL writer. Current flush position can be obtained by GetFlushRecPtr(). * So on applying new logical record we insert it in the MtmLsnMapping and compare * their poistions in local WAL log with current flush position. * The records which are flushed to the disk by WAL writer are removed from the list * and mapping ing mtm->nodes[].flushPos is updated for this node. */ -void MtmUpdateLsnMapping(int node_id, XLogRecPtr end_lsn) +void MtmUpdateLsnMapping(int node_id, lsn_t end_lsn) { dlist_mutable_iter iter; MtmFlushPosition* flushpos; - XLogRecPtr local_flush = GetFlushRecPtr(); + lsn_t local_flush = GetFlushRecPtr(); MemoryContext old_context = MemoryContextSwitchTo(TopMemoryContext); - if (end_lsn != InvalidXLogRecPtr) { + if (end_lsn != INVALID_LSN) { /* Track commit lsn */ flushpos = (MtmFlushPosition *) palloc(sizeof(MtmFlushPosition)); flushpos->node_id = node_id; @@ -3210,12 +3659,12 @@ void MtmUpdateLsnMapping(int node_id, XLogRecPtr end_lsn) flushpos = dlist_container(MtmFlushPosition, node, iter.cur); if (flushpos->local_end <= local_flush) { - if (Mtm->nodes[node_id-1].flushPos < flushpos->remote_end) { + if (Mtm->nodes[node_id-1].flushPos < flushpos->remote_end) { Mtm->nodes[node_id-1].flushPos = flushpos->remote_end; } dlist_delete(iter.cur); pfree(flushpos); - } else { + } else { break; } } @@ -3224,38 +3673,39 @@ void MtmUpdateLsnMapping(int node_id, XLogRecPtr end_lsn) } -static void +static void MtmReplicationShutdownHook(struct PGLogicalShutdownHookArgs* args) { - if (MtmReplicationNodeId >= 0) { - MtmLock(LW_EXCLUSIVE); - Mtm->nSenders -= MtmSenderStarted; - MtmUnlock(); - MTM_LOG1("Logical replication to node %d is stopped", MtmReplicationNodeId); + MtmLock(LW_EXCLUSIVE); + if (MtmReplicationNodeId >= 0 && BIT_CHECK(Mtm->pglogicalSenderMask, MtmReplicationNodeId-1)) { + BIT_CLEAR(Mtm->pglogicalSenderMask, MtmReplicationNodeId-1); + Mtm->nSenders -= 1; + MTM_LOG1("Logical replication to node %d is stopped", MtmReplicationNodeId); /* MtmOnNodeDisconnect(MtmReplicationNodeId); */ - MtmReplicationNodeId = -1; /* defuse on_proc_exit hook */ + MtmReplicationNodeId = -1; /* defuse MtmOnProcExit hook */ } + MtmUnlock(); } -/* +/* * Filter transactions which should be replicated to other nodes. * This filter is applied at sender side (WAL sender). * Final filtering is also done at destination side by MtmFilterTransaction function. */ -static bool +static bool MtmReplicationTxnFilterHook(struct PGLogicalTxnFilterArgs* args) { /* Do not replicate any transactions in recovery mode (because we should apply * changes sent to us rather than send our own pending changes) - * and transactions received from other nodes + * and transactions received from other nodes * (originId should be non-zero in this case) - * unless we are performing recovery of disabled node + * unless we are performing recovery of disabled node * (in this case all transactions should be sent) */ bool res = Mtm->status != MTM_RECOVERY - && (args->origin_id == InvalidRepOriginId + && (args->origin_id == InvalidRepOriginId || MtmIsRecoveredNode(MtmReplicationNodeId)); - if (!res) { + if (!res) { MTM_LOG2("Filter transaction with origin_id=%d", args->origin_id); } return res; @@ -3264,15 +3714,15 @@ MtmReplicationTxnFilterHook(struct PGLogicalTxnFilterArgs* args) /** * Filter record corresponding to local (non-distributed) tables */ -static bool +static bool MtmReplicationRowFilterHook(struct PGLogicalRowFilterArgs* args) { bool isDistributed; MtmLock(LW_SHARED); - if (!Mtm->localTablesHashLoaded) { + if (!Mtm->localTablesHashLoaded) { MtmUnlock(); MtmLock(LW_EXCLUSIVE); - if (!Mtm->localTablesHashLoaded) { + if (!Mtm->localTablesHashLoaded) { MtmLoadLocalTables(); Mtm->localTablesHashLoaded = true; } @@ -3284,49 +3734,53 @@ MtmReplicationRowFilterHook(struct PGLogicalRowFilterArgs* args) /* * Filter received transactions at destination side. - * This function is executed by receiver, - * so there are no race conditions and it is possible to update nodes[i].restartLSN without lock. - * It is more efficient to filter records at senders size (done by MtmReplicationTxnFilterHook) to avoid sending useless data through network. But asynchronous nature of - * logical replications makes it not possible to guarantee (at least I failed to do it) + * This function is executed by receiver, + * so there are no race conditions and it is possible to update nodes[i].restartLSN without lock. + * It is more efficient to filter records at senders size (done by MtmReplicationTxnFilterHook) to avoid sending useless data through network. + * But asynchronous nature of logical replications makes it not possible to guarantee (at least I failed to do it) * that replica do not receive deteriorated data. */ bool MtmFilterTransaction(char* record, int size) { StringInfoData s; - uint8 flags; - XLogRecPtr origin_lsn; - XLogRecPtr end_lsn; - XLogRecPtr restart_lsn; - int replication_node; - int origin_node; + uint8 event; + lsn_t origin_lsn; + lsn_t end_lsn; + lsn_t restart_lsn; + int replication_node; + int origin_node; char const* gid = ""; - char msgtype PG_USED_FOR_ASSERTS_ONLY; - bool duplicate = false; + char msgtype PG_USED_FOR_ASSERTS_ONLY; + bool duplicate = false; - s.data = record; - s.len = size; - s.maxlen = -1; + s.data = record; + s.len = size; + s.maxlen = -1; s.cursor = 0; msgtype = pq_getmsgbyte(&s); Assert(msgtype == 'C'); - flags = pq_getmsgbyte(&s); /* flags */ + event = pq_getmsgbyte(&s); /* event */ replication_node = pq_getmsgbyte(&s); /* read fields */ pq_getmsgint64(&s); /* commit_lsn */ end_lsn = pq_getmsgint64(&s); /* end_lsn */ pq_getmsgint64(&s); /* commit_time */ - + origin_node = pq_getmsgbyte(&s); origin_lsn = pq_getmsgint64(&s); - Assert(replication_node == MtmReplicationNodeId && - origin_node != 0 && - (Mtm->status == MTM_RECOVERY || origin_node == replication_node)); + Assert(replication_node == MtmReplicationNodeId); + if (!(origin_node != 0 && + (Mtm->status == MTM_RECOVERY || origin_node == replication_node))) + { + MTM_ELOG(WARNING, "Receive redirected commit event %d from node %d origin node %d origin LSN %llx in %s mode", + event, replication_node, origin_node, origin_lsn, MtmNodeStatusMnem[Mtm->status]); + } - switch (PGLOGICAL_XACT_EVENT(flags)) - { + switch (event) + { case PGLOGICAL_PREPARE: case PGLOGICAL_PRECOMMIT_PREPARED: case PGLOGICAL_ABORT_PREPARED: @@ -3340,19 +3794,22 @@ bool MtmFilterTransaction(char* record, int size) break; } restart_lsn = origin_node == MtmReplicationNodeId ? end_lsn : origin_lsn; - if (Mtm->nodes[origin_node-1].restartLSN < restart_lsn) { - MTM_LOG2("[restartlsn] node %d: %lx -> %lx (MtmFilterTransaction)", MtmReplicationNodeId, Mtm->nodes[MtmReplicationNodeId-1].restartLSN, restart_lsn); - Mtm->nodes[origin_node-1].restartLSN = restart_lsn; - } else { + if (Mtm->nodes[origin_node-1].restartLSN < restart_lsn) { + MTM_LOG2("[restartlsn] node %d: %llx -> %llx (MtmFilterTransaction)", MtmReplicationNodeId, Mtm->nodes[MtmReplicationNodeId-1].restartLSN, restart_lsn); + if (event != PGLOGICAL_PREPARE) { + /* Transactions can be prepared in different order, so to avoid loosing transactions we should not update restartLsn for them */ + Mtm->nodes[origin_node-1].restartLSN = restart_lsn; + } + } else { duplicate = true; } if (duplicate) { - MTM_LOG1("Ignore transaction %s from node %d flags=%x because our LSN position %lx for origin node %d is greater or equal than LSN %lx of this transaction (end_lsn=%lx, origin_lsn=%lx)", - gid, replication_node, flags, Mtm->nodes[origin_node-1].restartLSN, origin_node, restart_lsn, end_lsn, origin_lsn); + MTM_LOG1("Ignore transaction %s from node %d event=%x because our LSN position %llx for origin node %d is greater or equal than LSN %llx of this transaction (end_lsn=%llx, origin_lsn=%llx) mode %s", + gid, replication_node, event, Mtm->nodes[origin_node-1].restartLSN, origin_node, restart_lsn, end_lsn, origin_lsn, MtmNodeStatusMnem[Mtm->status]); } else { - MTM_LOG2("Apply transaction %s from node %d lsn %lx, flags=%x, origin node %d, original lsn=%lx, current lsn=%lx", - gid, replication_node, end_lsn, flags, origin_node, origin_lsn, restart_lsn); + MTM_LOG2("Apply transaction %s from node %d lsn %llx, event=%x, origin node %d, original lsn=%llx, current lsn=%llx", + gid, replication_node, end_lsn, event, origin_node, origin_lsn, restart_lsn); } return duplicate; @@ -3367,13 +3824,13 @@ void MtmSetupReplicationHooks(struct PGLogicalHooks* hooks) } /* - * Setup replication session origin to include origin location in WAL and + * Setup replication session origin to include origin location in WAL and * update slot position. * Sessions are not reetrant so we have to use exclusive lock here. */ void MtmBeginSession(int nodeId) { - MtmLockNode(nodeId, LW_EXCLUSIVE); + // MtmLockNode(nodeId, LW_EXCLUSIVE); Assert(replorigin_session_origin == InvalidRepOriginId); replorigin_session_origin = Mtm->nodes[nodeId-1].originId; Assert(replorigin_session_origin != InvalidRepOriginId); @@ -3382,24 +3839,24 @@ void MtmBeginSession(int nodeId) MTM_LOG3("%d: End setup replorigin session: %d", MyProcPid, replorigin_session_origin); } -/* +/* * Release replication session */ void MtmEndSession(int nodeId, bool unlock) { - if (replorigin_session_origin != InvalidRepOriginId) { - MTM_LOG2("%d: Begin reset replorigin session for node %d: %d, progress %lx", MyProcPid, nodeId, replorigin_session_origin, replorigin_session_get_progress(false)); + if (replorigin_session_origin != InvalidRepOriginId) { + MTM_LOG2("%d: Begin reset replorigin session for node %d: %d, progress %llx", MyProcPid, nodeId, replorigin_session_origin, replorigin_session_get_progress(false)); replorigin_session_origin = InvalidRepOriginId; - replorigin_session_origin_lsn = InvalidXLogRecPtr; + replorigin_session_origin_lsn = INVALID_LSN; replorigin_session_origin_timestamp = 0; replorigin_session_reset(); - if (unlock) { - MtmUnlockNode(nodeId); - } + // if (unlock) { + // MtmUnlockNode(nodeId); + // } MTM_LOG3("%d: End reset replorigin session: %d", MyProcPid, replorigin_session_origin); } } - + /* * ------------------------------------------- @@ -3411,25 +3868,25 @@ void MtmEndSession(int nodeId, bool unlock) Datum mtm_start_replication(PG_FUNCTION_ARGS) { - MtmDoReplication = true; - PG_RETURN_VOID(); + MtmDoReplication = true; + PG_RETURN_VOID(); } Datum mtm_stop_replication(PG_FUNCTION_ARGS) { - MtmDoReplication = false; - MtmTx.isDistributed = false; - PG_RETURN_VOID(); + MtmDoReplication = false; + MtmTx.isDistributed = false; + PG_RETURN_VOID(); } Datum -mtm_drop_node(PG_FUNCTION_ARGS) +mtm_stop_node(PG_FUNCTION_ARGS) { int nodeId = PG_GETARG_INT32(0); bool dropSlot = PG_GETARG_BOOL(1); - MtmDropNode(nodeId, dropSlot); - PG_RETURN_VOID(); + MtmStopNode(nodeId, dropSlot); + PG_RETURN_VOID(); } Datum @@ -3437,19 +3894,20 @@ mtm_add_node(PG_FUNCTION_ARGS) { char *connStr = text_to_cstring(PG_GETARG_TEXT_PP(0)); - if (Mtm->nAllNodes == MtmMaxNodes) { - elog(ERROR, "Maximal number of nodes %d is reached", MtmMaxNodes); + if (Mtm->nAllNodes == MtmMaxNodes) { + MTM_ELOG(ERROR, "Maximal number of nodes %d is reached", MtmMaxNodes); } if (!MtmIsBroadcast()) { - MtmBroadcastUtilityStmt(psprintf("select mtm.add_node('%s')", connStr), true); - } - else - { + MtmBroadcastUtilityStmt(psprintf("select pg_create_logical_replication_slot('" MULTIMASTER_SLOT_PATTERN "', '" MULTIMASTER_NAME "')", Mtm->nAllNodes+1), true, 0); + MtmBroadcastUtilityStmt(psprintf("select mtm.add_node('%s')", connStr), true, 0); + } + else + { int nodeId; - MtmLock(LW_EXCLUSIVE); + MtmLock(LW_EXCLUSIVE); nodeId = Mtm->nAllNodes; - elog(NOTICE, "Add node %d: '%s'", nodeId+1, connStr); + MTM_ELOG(NOTICE, "Add node %d: '%s'", nodeId+1, connStr); MtmUpdateNodeConnectionInfo(&Mtm->nodes[nodeId].con, connStr); @@ -3465,14 +3923,15 @@ mtm_add_node(PG_FUNCTION_ARGS) Mtm->nodes[nodeId].oldestSnapshot = 0; BIT_SET(Mtm->disabledNodeMask, nodeId); + Mtm->nConfigChanges += 1; Mtm->nAllNodes += 1; MtmUnlock(); MtmStartReceiver(nodeId+1, true); } - PG_RETURN_VOID(); + PG_RETURN_VOID(); } - + Datum mtm_poll_node(PG_FUNCTION_ARGS) { @@ -3480,30 +3939,38 @@ mtm_poll_node(PG_FUNCTION_ARGS) bool nowait = PG_GETARG_BOOL(1); bool online = true; while ((nodeId == MtmNodeId && Mtm->status != MTM_ONLINE) - || (nodeId != MtmNodeId && BIT_CHECK(Mtm->disabledNodeMask, nodeId-1))) - { - if (nowait) { + || (nodeId != MtmNodeId && BIT_CHECK(Mtm->disabledNodeMask, nodeId-1))) + { + if (nowait) { online = false; break; - } else { + } else { MtmSleep(STATUS_POLL_DELAY); } } - if (!nowait) { + if (!nowait) { /* Just wait some time until logical repication channels will be reestablished */ MtmSleep(MSEC_TO_USEC(MtmNodeDisableDelay)); } - PG_RETURN_BOOL(online); + PG_RETURN_BOOL(online); } - + Datum mtm_recover_node(PG_FUNCTION_ARGS) { int nodeId = PG_GETARG_INT32(0); MtmRecoverNode(nodeId); - PG_RETURN_VOID(); + PG_RETURN_VOID(); +} + +Datum +mtm_resume_node(PG_FUNCTION_ARGS) +{ + int nodeId = PG_GETARG_INT32(0); + MtmResumeNode(nodeId); + PG_RETURN_VOID(); } - + Datum mtm_get_snapshot(PG_FUNCTION_ARGS) { @@ -3520,97 +3987,201 @@ mtm_get_last_csn(PG_FUNCTION_ARGS) Datum mtm_get_csn(PG_FUNCTION_ARGS) { - TransactionId xid = PG_GETARG_INT32(0); + TransactionId xid = PG_GETARG_INT64(0); MtmTransState* ts; csn_t csn = INVALID_CSN; MtmLock(LW_SHARED); - ts = (MtmTransState*)hash_search(MtmXid2State, &xid, HASH_FIND, NULL); - if (ts != NULL) { + ts = (MtmTransState*)hash_search(MtmXid2State, &xid, HASH_FIND, NULL); + if (ts != NULL) { csn = ts->csn; } MtmUnlock(); - return csn; + return csn; } typedef struct { - int nodeId; + int nodeId; TupleDesc desc; - Datum values[Natts_mtm_nodes_state]; - bool nulls[Natts_mtm_nodes_state]; + Datum values[Natts_mtm_nodes_state]; + bool nulls[Natts_mtm_nodes_state]; } MtmGetNodeStateCtx; Datum mtm_get_nodes_state(PG_FUNCTION_ARGS) { - FuncCallContext* funcctx; + FuncCallContext* funcctx; MtmGetNodeStateCtx* usrfctx; MemoryContext oldcontext; int64 lag; - bool is_first_call = SRF_IS_FIRSTCALL(); + bool is_first_call = SRF_IS_FIRSTCALL(); - if (is_first_call) { + if (is_first_call) { funcctx = SRF_FIRSTCALL_INIT(); - oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx); + oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx); usrfctx = (MtmGetNodeStateCtx*)palloc(sizeof(MtmGetNodeStateCtx)); get_call_result_type(fcinfo, NULL, &usrfctx->desc); usrfctx->nodeId = 1; memset(usrfctx->nulls, false, sizeof(usrfctx->nulls)); funcctx->user_fctx = usrfctx; - MemoryContextSwitchTo(oldcontext); - } - funcctx = SRF_PERCALL_SETUP(); + MemoryContextSwitchTo(oldcontext); + } + funcctx = SRF_PERCALL_SETUP(); usrfctx = (MtmGetNodeStateCtx*)funcctx->user_fctx; if (usrfctx->nodeId > Mtm->nAllNodes) { - SRF_RETURN_DONE(funcctx); + SRF_RETURN_DONE(funcctx); } usrfctx->values[0] = Int32GetDatum(usrfctx->nodeId); - usrfctx->values[1] = BoolGetDatum(BIT_CHECK(Mtm->disabledNodeMask, usrfctx->nodeId-1)); - usrfctx->values[2] = BoolGetDatum(BIT_CHECK(Mtm->connectivityMask, usrfctx->nodeId-1)); - usrfctx->values[3] = BoolGetDatum(BIT_CHECK(Mtm->nodeLockerMask, usrfctx->nodeId-1)); + usrfctx->values[1] = BoolGetDatum(!BIT_CHECK(Mtm->disabledNodeMask, usrfctx->nodeId-1)); + usrfctx->values[2] = BoolGetDatum(!BIT_CHECK(SELF_CONNECTIVITY_MASK, usrfctx->nodeId-1)); + usrfctx->values[3] = BoolGetDatum(BIT_CHECK(Mtm->stalledNodeMask, usrfctx->nodeId-1)); + usrfctx->values[4] = BoolGetDatum(BIT_CHECK(Mtm->stoppedNodeMask, usrfctx->nodeId-1)); + + usrfctx->values[5] = BoolGetDatum(BIT_CHECK(Mtm->originLockNodeMask, usrfctx->nodeId-1)); lag = MtmGetSlotLag(usrfctx->nodeId); - usrfctx->values[4] = Int64GetDatum(lag); - usrfctx->nulls[4] = lag < 0; - usrfctx->values[5] = Int64GetDatum(Mtm->transCount ? Mtm->nodes[usrfctx->nodeId-1].transDelay/Mtm->transCount : 0); - usrfctx->values[6] = TimestampTzGetDatum(time_t_to_timestamptz(Mtm->nodes[usrfctx->nodeId-1].lastStatusChangeTime/USECS_PER_SEC)); - usrfctx->values[7] = Int64GetDatum(Mtm->nodes[usrfctx->nodeId-1].oldestSnapshot); - usrfctx->values[8] = Int32GetDatum(Mtm->nodes[usrfctx->nodeId-1].senderPid); - usrfctx->values[9] = TimestampTzGetDatum(time_t_to_timestamptz(Mtm->nodes[usrfctx->nodeId-1].senderStartTime/USECS_PER_SEC)); - usrfctx->values[10] = Int32GetDatum(Mtm->nodes[usrfctx->nodeId-1].receiverPid); - usrfctx->values[11] = TimestampTzGetDatum(time_t_to_timestamptz(Mtm->nodes[usrfctx->nodeId-1].receiverStartTime/USECS_PER_SEC)); - usrfctx->values[12] = CStringGetTextDatum(Mtm->nodes[usrfctx->nodeId-1].con.connStr); + usrfctx->values[6] = Int64GetDatum(lag); + usrfctx->nulls[6] = lag < 0; + + usrfctx->values[7] = Int64GetDatum(Mtm->transCount ? Mtm->nodes[usrfctx->nodeId-1].transDelay/Mtm->transCount : 0); + usrfctx->values[8] = TimestampTzGetDatum(time_t_to_timestamptz(Mtm->nodes[usrfctx->nodeId-1].lastStatusChangeTime/USECS_PER_SEC)); + usrfctx->values[9] = Int64GetDatum(Mtm->nodes[usrfctx->nodeId-1].oldestSnapshot); + + usrfctx->values[10] = Int32GetDatum(Mtm->nodes[usrfctx->nodeId-1].senderPid); + usrfctx->values[11] = TimestampTzGetDatum(time_t_to_timestamptz(Mtm->nodes[usrfctx->nodeId-1].senderStartTime/USECS_PER_SEC)); + usrfctx->values[12] = Int32GetDatum(Mtm->nodes[usrfctx->nodeId-1].receiverPid); + usrfctx->values[13] = TimestampTzGetDatum(time_t_to_timestamptz(Mtm->nodes[usrfctx->nodeId-1].receiverStartTime/USECS_PER_SEC)); + + if (usrfctx->nodeId == MtmNodeId) + { + usrfctx->nulls[10] = true; + usrfctx->nulls[11] = true; + usrfctx->nulls[12] = true; + usrfctx->nulls[13] = true; + } + + usrfctx->values[14] = CStringGetTextDatum(Mtm->nodes[usrfctx->nodeId-1].con.connStr); + usrfctx->values[15] = Int64GetDatum(Mtm->nodes[usrfctx->nodeId-1].connectivityMask); + usrfctx->values[16] = Int64GetDatum(Mtm->nodes[usrfctx->nodeId-1].nHeartbeats); usrfctx->nodeId += 1; SRF_RETURN_NEXT(funcctx, HeapTupleGetDatum(heap_form_tuple(usrfctx->desc, usrfctx->values, usrfctx->nulls))); } +Datum +mtm_get_trans_by_gid(PG_FUNCTION_ARGS) +{ + TupleDesc desc; + Datum values[Natts_mtm_trans_state]; + bool nulls[Natts_mtm_trans_state] = {false}; + MtmTransState* ts; + MtmTransMap* tm; + char *gid = text_to_cstring(PG_GETARG_TEXT_PP(0)); + int i; + + MtmLock(LW_SHARED); + tm = (MtmTransMap*)hash_search(MtmGid2State, gid, HASH_FIND, NULL); + if (tm == NULL) { + MtmUnlock(); + PG_RETURN_NULL(); + } + + values[1] = CStringGetTextDatum(gid); + + ts = tm->state; + if (ts == NULL) { + values[0] = CStringGetTextDatum(MtmTxnStatusMnem[tm->status]); + for (i = 2; i < Natts_mtm_trans_state; i++) { + nulls[i] = true; + } + } else { + values[0] = CStringGetTextDatum(MtmTxnStatusMnem[ts->status]); + values[2] = Int64GetDatum(ts->xid); + values[3] = Int32GetDatum(ts->gtid.node); + values[4] = Int64GetDatum(ts->gtid.xid); + values[5] = TimestampTzGetDatum(time_t_to_timestamptz(ts->csn/USECS_PER_SEC)); + values[6] = TimestampTzGetDatum(time_t_to_timestamptz(ts->snapshot/USECS_PER_SEC)); + values[7] = BoolGetDatum(ts->isLocal); + values[8] = BoolGetDatum(ts->isPrepared); + values[9] = BoolGetDatum(ts->isActive); + values[10] = BoolGetDatum(ts->isTwoPhase); + values[11] = BoolGetDatum(ts->votingCompleted); + values[12] = Int64GetDatum(ts->participantsMask); + values[13] = Int64GetDatum(ts->votedMask); + values[14] = Int32GetDatum(ts->nConfigChanges); + } + MtmUnlock(); + + get_call_result_type(fcinfo, NULL, &desc); + PG_RETURN_DATUM(HeapTupleGetDatum(heap_form_tuple(desc, values, nulls))); +} + +Datum +mtm_get_trans_by_xid(PG_FUNCTION_ARGS) +{ + TupleDesc desc; + Datum values[Natts_mtm_trans_state]; + bool nulls[Natts_mtm_trans_state] = {false}; + TransactionId xid = PG_GETARG_INT64(0); + MtmTransState* ts; + + MtmLock(LW_SHARED); + ts = (MtmTransState*)hash_search(MtmXid2State, &xid, HASH_FIND, NULL); + if (ts == NULL) { + MtmUnlock(); + PG_RETURN_NULL(); + } + + values[0] = CStringGetTextDatum(MtmTxnStatusMnem[ts->status]); + values[1] = CStringGetTextDatum(ts->gid); + values[2] = Int64GetDatum(ts->xid); + values[3] = Int32GetDatum(ts->gtid.node); + values[4] = Int64GetDatum(ts->gtid.xid); + values[5] = TimestampTzGetDatum(time_t_to_timestamptz(ts->csn/USECS_PER_SEC)); + values[6] = TimestampTzGetDatum(time_t_to_timestamptz(ts->snapshot/USECS_PER_SEC)); + values[7] = BoolGetDatum(ts->isLocal); + values[8] = BoolGetDatum(ts->isPrepared); + values[9] = BoolGetDatum(ts->isActive); + values[10] = BoolGetDatum(ts->isTwoPhase); + values[11] = BoolGetDatum(ts->votingCompleted); + values[12] = Int64GetDatum(ts->participantsMask); + values[13] = Int64GetDatum(ts->votedMask); + MtmUnlock(); + + get_call_result_type(fcinfo, NULL, &desc); + PG_RETURN_DATUM(HeapTupleGetDatum(heap_form_tuple(desc, values, nulls))); +} Datum mtm_get_cluster_state(PG_FUNCTION_ARGS) { TupleDesc desc; - Datum values[Natts_mtm_cluster_state]; - bool nulls[Natts_mtm_cluster_state] = {false}; + Datum values[Natts_mtm_cluster_state]; + bool nulls[Natts_mtm_cluster_state] = {false}; get_call_result_type(fcinfo, NULL, &desc); - values[0] = CStringGetTextDatum(MtmNodeStatusMnem[Mtm->status]); - values[1] = Int64GetDatum(Mtm->disabledNodeMask); - values[2] = Int64GetDatum(Mtm->connectivityMask); - values[3] = Int64GetDatum(Mtm->nodeLockerMask); - values[4] = Int32GetDatum(Mtm->nLiveNodes); - values[5] = Int32GetDatum(Mtm->nAllNodes); - values[6] = Int32GetDatum((int)Mtm->pool.active); - values[7] = Int32GetDatum((int)Mtm->pool.pending); - values[8] = Int64GetDatum(BgwPoolGetQueueSize(&Mtm->pool)); - values[9] = Int64GetDatum(Mtm->transCount); - values[10] = Int64GetDatum(Mtm->timeShift); - values[11] = Int32GetDatum(Mtm->recoverySlot); - values[12] = Int64GetDatum(hash_get_num_entries(MtmXid2State)); - values[13] = Int64GetDatum(hash_get_num_entries(MtmGid2State)); - values[14] = Int32GetDatum(Mtm->oldestXid); - values[15] = Int32GetDatum(Mtm->nConfigChanges); + values[0] = Int32GetDatum(MtmNodeId); + values[1] = CStringGetTextDatum(MtmNodeStatusMnem[Mtm->status]); + values[2] = Int64GetDatum(Mtm->disabledNodeMask); + values[3] = Int64GetDatum(SELF_CONNECTIVITY_MASK); + values[4] = Int64GetDatum(Mtm->originLockNodeMask); + values[5] = Int32GetDatum(Mtm->nLiveNodes); + values[6] = Int32GetDatum(Mtm->nAllNodes); + values[7] = Int32GetDatum((int)Mtm->pool.active); + values[8] = Int32GetDatum((int)Mtm->pool.pending); + values[9] = Int64GetDatum(BgwPoolGetQueueSize(&Mtm->pool)); + values[10] = Int64GetDatum(Mtm->transCount); + values[11] = Int64GetDatum(Mtm->timeShift); + values[12] = Int32GetDatum(Mtm->recoverySlot); + values[13] = Int64GetDatum(hash_get_num_entries(MtmXid2State)); + values[14] = Int64GetDatum(hash_get_num_entries(MtmGid2State)); + values[15] = Int64GetDatum(Mtm->oldestXid); + values[16] = Int32GetDatum(Mtm->nConfigChanges); + values[17] = Int64GetDatum(Mtm->stalledNodeMask); + values[18] = Int64GetDatum(Mtm->stoppedNodeMask); + values[19] = Int64GetDatum(Mtm->deadNodeMask); + values[20] = TimestampTzGetDatum(time_t_to_timestamptz(Mtm->nodes[MtmNodeId-1].lastStatusChangeTime/USECS_PER_SEC)); PG_RETURN_DATUM(HeapTupleGetDatum(heap_form_tuple(desc, values, nulls))); } @@ -3618,7 +4189,7 @@ mtm_get_cluster_state(PG_FUNCTION_ARGS) typedef struct { - int nodeId; + int nodeId; } MtmGetClusterInfoCtx; static void erase_option_from_connstr(const char *option, char *connstr) @@ -3635,72 +4206,129 @@ static void erase_option_from_connstr(const char *option, char *connstr) pfree(needle); } -PGconn *PQconnectdb_safe(const char *conninfo) +PGconn * +PQconnectdb_safe(const char *conninfo, int timeout) { PGconn *conn; + struct timeval tv = { timeout, 0 }; char *safe_connstr = pstrdup(conninfo); - erase_option_from_connstr("arbiter_port", safe_connstr); - conn = PQconnectdb(safe_connstr); + /* XXXX add timeout to connstring if set */ + erase_option_from_connstr("arbiter_port", safe_connstr); + conn = PQconnectdb(safe_connstr); pfree(safe_connstr); + + if (PQstatus(conn) != CONNECTION_OK) + { + MTM_ELOG(WARNING, "Could not connect to '%s': %s", + safe_connstr, PQerrorMessage(conn)); + return conn; + } + + if (timeout != 0) + { + int socket_fd = PQsocket(conn); + + if (socket_fd < 0) + { + MTM_ELOG(WARNING, "Referee socket is invalid"); + return conn; + } + + if (pg_setsockopt(socket_fd, SOL_SOCKET, SO_RCVTIMEO, + (char *)&tv, sizeof(tv), MtmUseRDMA) < 0) + { + MTM_ELOG(WARNING, "Could not set referee socket timeout: %s", + strerror(errno)); + return conn; + } + } + return conn; } Datum -mtm_get_cluster_info(PG_FUNCTION_ARGS) +mtm_collect_cluster_info(PG_FUNCTION_ARGS) { - FuncCallContext* funcctx; + FuncCallContext* funcctx; MtmGetClusterInfoCtx* usrfctx; MemoryContext oldcontext; TupleDesc desc; - bool is_first_call = SRF_IS_FIRSTCALL(); + bool is_first_call = SRF_IS_FIRSTCALL(); int i; PGconn* conn; PGresult *result; char* values[Natts_mtm_cluster_state]; HeapTuple tuple; - if (is_first_call) { + if (is_first_call) { funcctx = SRF_FIRSTCALL_INIT(); - oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx); + oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx); usrfctx = (MtmGetClusterInfoCtx*)palloc(sizeof(MtmGetNodeStateCtx)); get_call_result_type(fcinfo, NULL, &desc); funcctx->attinmeta = TupleDescGetAttInMetadata(desc); usrfctx->nodeId = 0; funcctx->user_fctx = usrfctx; - MemoryContextSwitchTo(oldcontext); - } - funcctx = SRF_PERCALL_SETUP(); + MemoryContextSwitchTo(oldcontext); + } + funcctx = SRF_PERCALL_SETUP(); usrfctx = (MtmGetClusterInfoCtx*)funcctx->user_fctx; while (++usrfctx->nodeId <= Mtm->nAllNodes && BIT_CHECK(Mtm->disabledNodeMask, usrfctx->nodeId-1)); if (usrfctx->nodeId > Mtm->nAllNodes) { - SRF_RETURN_DONE(funcctx); - } - conn = PQconnectdb_safe(Mtm->nodes[usrfctx->nodeId-1].con.connStr); - if (PQstatus(conn) != CONNECTION_OK) { - elog(ERROR, "Failed to establish connection '%s' to node %d: error = %s", Mtm->nodes[usrfctx->nodeId-1].con.connStr, usrfctx->nodeId, PQerrorMessage(conn)); + SRF_RETURN_DONE(funcctx); } - result = PQexec(conn, "select * from mtm.get_cluster_state()"); - if (PQresultStatus(result) != PGRES_TUPLES_OK || PQntuples(result) != 1) { - elog(ERROR, "Failed to receive data from %d", usrfctx->nodeId); + conn = PQconnectdb_safe(Mtm->nodes[usrfctx->nodeId-1].con.connStr, 0); + if (PQstatus(conn) != CONNECTION_OK) + { + MTM_ELOG(WARNING, "Failed to establish connection '%s' to node %d: error = %s", Mtm->nodes[usrfctx->nodeId-1].con.connStr, usrfctx->nodeId, PQerrorMessage(conn)); + PQfinish(conn); + SRF_RETURN_NEXT_NULL(funcctx); } + else + { + result = PQexec(conn, "select * from mtm.get_cluster_state()"); - for (i = 0; i < Natts_mtm_cluster_state; i++) { - values[i] = PQgetvalue(result, 0, i); + if (PQresultStatus(result) != PGRES_TUPLES_OK || PQntuples(result) != 1) { + MTM_ELOG(ERROR, "Failed to receive data from %d", usrfctx->nodeId); + } + + for (i = 0; i < Natts_mtm_cluster_state; i++) { + values[i] = PQgetvalue(result, 0, i); + } + tuple = BuildTupleFromCStrings(funcctx->attinmeta, values); + PQclear(result); + PQfinish(conn); + SRF_RETURN_NEXT(funcctx, HeapTupleGetDatum(tuple)); } - tuple = BuildTupleFromCStrings(funcctx->attinmeta, values); - PQclear(result); - PQfinish(conn); - SRF_RETURN_NEXT(funcctx, HeapTupleGetDatum(tuple)); +} + +Datum mtm_broadcast_table(PG_FUNCTION_ARGS) +{ + MtmCopyRequest copy; + copy.sourceTable = PG_GETARG_OID(0); + copy.targetNodes = PG_GETARG_INT64(1); + LogLogicalMessage("B", (char*)©, sizeof(copy), true); + MtmTx.containsDML = true; + PG_RETURN_VOID(); +} + +Datum mtm_copy_table(PG_FUNCTION_ARGS) +{ + MtmCopyRequest copy; + copy.sourceTable = PG_GETARG_OID(0); + copy.targetNodes = (nodemask_t)1 << (PG_GETARG_INT32(1) - 1); + LogLogicalMessage("B", (char*)©, sizeof(copy), true); + MtmTx.containsDML = true; + PG_RETURN_VOID(); } Datum mtm_make_table_local(PG_FUNCTION_ARGS) { - Oid reloid = PG_GETARG_OID(1); + Oid reloid = PG_GETARG_OID(0); RangeVar *rv; Relation rel; TupleDesc tupDesc; @@ -3709,30 +4337,30 @@ Datum mtm_make_table_local(PG_FUNCTION_ARGS) bool nulls[Natts_mtm_local_tables]; MtmMakeRelationLocal(reloid); - + rv = makeRangeVar(MULTIMASTER_SCHEMA_NAME, MULTIMASTER_LOCAL_TABLES_TABLE, -1); rel = heap_openrv(rv, RowExclusiveLock); if (rel != NULL) { char* tableName = get_rel_name(reloid); - Oid schemaid = get_rel_namespace(reloid); + Oid schemaid = get_rel_namespace(reloid); char* schemaName = get_namespace_name(schemaid); tupDesc = RelationGetDescr(rel); /* Form a tuple. */ memset(nulls, false, sizeof(nulls)); - - values[Anum_mtm_local_tables_rel_schema - 1] = CStringGetTextDatum(schemaName); - values[Anum_mtm_local_tables_rel_name - 1] = CStringGetTextDatum(tableName); + + values[Anum_mtm_local_tables_rel_schema - 1] = CStringGetDatum(schemaName); + values[Anum_mtm_local_tables_rel_name - 1] = CStringGetDatum(tableName); tup = heap_form_tuple(tupDesc, values, nulls); - + /* Insert the tuple to the catalog. */ simple_heap_insert(rel, tup); - + /* Update the indexes. */ CatalogUpdateIndexes(rel, tup); - + /* Cleanup. */ heap_freetuple(tup); heap_close(rel, RowExclusiveLock); @@ -3760,12 +4388,12 @@ Datum mtm_dump_lock_graph(PG_FUNCTION_ARGS) GlobalTransactionId *gtid = (GlobalTransactionId *) lockGraphData; GlobalTransactionId *last = (GlobalTransactionId *) (lockGraphData + lockGraphSize); appendStringInfo(s, "node-%d lock graph: ", i+1); - while (gtid != last) { + while (gtid != last) { GlobalTransactionId *src = gtid++; - appendStringInfo(s, "%d:%d -> ", src->node, src->xid); + appendStringInfo(s, "%d:%llu -> ", src->node, (long64)src->xid); while (gtid->node != 0) { GlobalTransactionId *dst = gtid++; - appendStringInfo(s, "%d:%d, ", dst->node, dst->xid); + appendStringInfo(s, "%d:%llu, ", dst->node, (long64)dst->xid); } gtid += 1; } @@ -3778,7 +4406,7 @@ Datum mtm_dump_lock_graph(PG_FUNCTION_ARGS) Datum mtm_inject_2pc_error(PG_FUNCTION_ARGS) { Mtm->inject2PCError = PG_GETARG_INT32(0); - PG_RETURN_VOID(); + PG_RETURN_VOID(); } /* @@ -3800,7 +4428,7 @@ static bool MtmRunUtilityStmt(PGconn* conn, char const* sql, char **errmsg) if (!ret) { char *errstr = PQresultErrorMessage(result); int errlen = strlen(errstr); - if (errlen > 9) { + if (errlen > 9) { *errmsg = palloc0(errlen); /* Strip "ERROR: " from beginning and "\n" from end of error string */ @@ -3812,7 +4440,7 @@ static bool MtmRunUtilityStmt(PGconn* conn, char const* sql, char **errmsg) return ret; } -static void +static void MtmNoticeReceiver(void *i, const PGresult *res) { char *notice = PQresultErrorMessage(res); @@ -3823,31 +4451,31 @@ MtmNoticeReceiver(void *i, const PGresult *res) if ( (*(int *)i) != MtmNodeId - 1) return; - stripped_notice = palloc0(len); + stripped_notice = palloc0(len + 1); if (*notice == 'N') { /* Strip "NOTICE: " from beginning and "\n" from end of error string */ strncpy(stripped_notice, notice + 9, len - 1 - 9); - elog(NOTICE, "%s", stripped_notice); + MTM_ELOG(NOTICE, "%s", stripped_notice); } else if (*notice == 'W') { - /* Strip "WARNING: " from beginning and "\n" from end of error string */ + /* Strip "WARNING: " from beginning and "\n" from end of error string */ strncpy(stripped_notice, notice + 10, len - 1 - 10); - elog(WARNING, "%s", stripped_notice); + MTM_ELOG(WARNING, "%s", stripped_notice); } else { - stripped_notice = notice; - elog(WARNING, "%s", stripped_notice); + strncpy(stripped_notice, notice, len + 1); + MTM_ELOG(WARNING, "%s", stripped_notice); } MTM_LOG1("%s", stripped_notice); pfree(stripped_notice); } -static void MtmBroadcastUtilityStmt(char const* sql, bool ignoreError) +static void MtmBroadcastUtilityStmt(char const* sql, bool ignoreError, int forceOnNode) { int i = 0; nodemask_t disabledNodeMask = Mtm->disabledNodeMask; @@ -3857,48 +4485,48 @@ static void MtmBroadcastUtilityStmt(char const* sql, bool ignoreError) char* utility_errmsg; int nNodes = Mtm->nAllNodes; - for (i = 0; i < nNodes; i++) - { - if (!BIT_CHECK(disabledNodeMask, i)) + for (i = 0; i < nNodes; i++) + { + if (!BIT_CHECK(disabledNodeMask, i) || (i + 1 == forceOnNode)) { - conns[i] = PQconnectdb_safe(psprintf("%s application_name=%s", Mtm->nodes[i].con.connStr, MULTIMASTER_BROADCAST_SERVICE)); + conns[i] = PQconnectdb_safe(psprintf("%s application_name=%s", Mtm->nodes[i].con.connStr, MULTIMASTER_BROADCAST_SERVICE), 0); if (PQstatus(conns[i]) != CONNECTION_OK) { - if (ignoreError) - { + if (ignoreError) + { PQfinish(conns[i]); conns[i] = NULL; - } else { + } else { failedNode = i; - do { + do { PQfinish(conns[i]); - } while (--i >= 0); - elog(ERROR, "Failed to establish connection '%s' to node %d, error = %s", Mtm->nodes[failedNode].con.connStr, failedNode+1, PQerrorMessage(conns[i])); + } while (--i >= 0); + MTM_ELOG(ERROR, "Failed to establish connection '%s' to node %d, error = %s", Mtm->nodes[failedNode].con.connStr, failedNode+1, PQerrorMessage(conns[i])); } } PQsetNoticeReceiver(conns[i], MtmNoticeReceiver, &i); } } Assert(i == nNodes); - - for (i = 0; i < nNodes; i++) - { - if (conns[i]) + + for (i = 0; i < nNodes; i++) + { + if (conns[i]) { if (!MtmRunUtilityStmt(conns[i], "BEGIN TRANSACTION", &utility_errmsg) && !ignoreError) { - errorMsg = "Failed to start transaction at node %d"; + errorMsg = MTM_TAG "Failed to start transaction at node %d"; failedNode = i; break; } if (!MtmRunUtilityStmt(conns[i], sql, &utility_errmsg) && !ignoreError) { if (i + 1 == MtmNodeId) - errorMsg = utility_errmsg; + errorMsg = psprintf(MTM_TAG "%s", utility_errmsg); else { - elog(ERROR, "%s", utility_errmsg); - errorMsg = "Failed to run command at node %d"; + MTM_ELOG(ERROR, "%s", utility_errmsg); + errorMsg = MTM_TAG "Failed to run command at node %d"; } failedNode = i; @@ -3906,34 +4534,34 @@ static void MtmBroadcastUtilityStmt(char const* sql, bool ignoreError) } } } - if (failedNode >= 0 && !ignoreError) + if (failedNode >= 0 && !ignoreError) { - for (i = 0; i < nNodes; i++) - { + for (i = 0; i < nNodes; i++) + { if (conns[i]) { MtmRunUtilityStmt(conns[i], "ROLLBACK TRANSACTION", &utility_errmsg); } } - } else { - for (i = 0; i < nNodes; i++) - { - if (conns[i] && !MtmRunUtilityStmt(conns[i], "COMMIT TRANSACTION", &utility_errmsg) && !ignoreError) - { - errorMsg = "Commit failed at node %d"; + } else { + for (i = 0; i < nNodes; i++) + { + if (conns[i] && !MtmRunUtilityStmt(conns[i], "COMMIT TRANSACTION", &utility_errmsg) && !ignoreError) + { + errorMsg = MTM_TAG "Commit failed at node %d"; failedNode = i; } } - } - for (i = 0; i < nNodes; i++) - { + } + for (i = 0; i < nNodes; i++) + { if (conns[i]) { PQfinish(conns[i]); } } - if (!ignoreError && failedNode >= 0) - { + if (!ignoreError && failedNode >= 0) + { elog(ERROR, errorMsg, failedNode+1); } } @@ -3949,45 +4577,45 @@ MtmGenerateGid(char* gid) sprintf(gid, "MTM-%d-%d-%d", MtmNodeId, MyProcPid, ++localCount); } +/* + * Replace normal commit with two-phase commit. + * It is called either for commit of standalone command either for commit of transaction block. + */ static bool MtmTwoPhaseCommit(MtmCurrentTrans* x) { - // if (MyXactAccessedTempRel) - // { - // /* - // * XXX: this tx anyway goes to subscribers later, but without - // * surrounding begin/commit. Now it will be filtered out on receiver side. - // * Probably there is more clever way to do that. - // */ - // x->isDistributed = false; - // if (!MtmVolksWagenMode) - // elog(NOTICE, "MTM: Transaction was not replicated as it accesed temporary relation"); - // return false; - // } + MTM_TXTRACE(x, "MtmTwoPhaseCommit Start"); if (!x->isReplicated && x->isDistributed && x->containsDML) { MtmGenerateGid(x->gid); - if (!x->isTransactionBlock) { - BeginTransactionBlock(); + if (!x->isTransactionBlock) { + BeginTransactionBlock(false); x->isTransactionBlock = true; CommitTransactionCommand(); StartTransactionCommand(); } if (!PrepareTransactionBlock(x->gid)) { - if (!MtmVolksWagenMode) - elog(WARNING, "Failed to prepare transaction %s", x->gid); - /* ??? Should we do explicit rollback */ - } else { + MTM_ELOG(WARNING, "Failed to prepare transaction %s (%llu)", x->gid, (long64)x->xid); + } else { CommitTransactionCommand(); - if (x->isSuspended) { - elog(WARNING, "Transaction %s is left in prepared state because coordinator node is not online", x->gid); - } else { - StartTransactionCommand(); - if (x->status == TRANSACTION_STATUS_ABORTED) { + StartTransactionCommand(); + if (x->isSuspended) { + MTM_ELOG(WARNING, "Transaction %s (%llu) is left in prepared state because coordinator node is not online", x->gid, (long64)x->xid); + } else { + Assert(x->isActive); + if (x->status == TRANSACTION_STATUS_ABORTED) { + MtmTransState* ts; + ts = (MtmTransState*) hash_search(MtmXid2State, &(x->xid), HASH_FIND, NULL); + Assert(ts); + + TXFINISH("%s ABORT, MtmTwoPhase", x->gid); FinishPreparedTransaction(x->gid, false); - elog(ERROR, "Transaction aborted by DTM"); + MTM_ELOG(ERROR, "Transaction %s (%llu) is aborted on node %d. Check its log to see error details.", x->gid, (long64)x->xid, ts->abortedByNode); } else { + TXFINISH("%s COMMIT, MtmTwoPhase", x->gid); FinishPreparedTransaction(x->gid, true); + MTM_TXTRACE(x, "MtmTwoPhaseCommit Committed"); + MTM_LOG2("Distributed transaction %s (%lld) is committed at %lld with LSN=%lld", x->gid, (long64)x->xid, MtmGetCurrentTime(), (long64)GetXLogInsertRecPtr()); } } } @@ -4016,10 +4644,13 @@ typedef struct MtmGucEntry static HTAB *MtmGucHash = NULL; static dlist_head MtmGucList = DLIST_STATIC_INIT(MtmGucList); +static inline void MtmGucUpdate(const char *key, char *value); static void MtmGucInit(void) { HASHCTL hash_ctl; + char *current_role; + MemoryContext oldcontext; MemSet(&hash_ctl, 0, sizeof(hash_ctl)); hash_ctl.keysize = GUC_KEY_MAXLEN; @@ -4029,6 +4660,16 @@ static void MtmGucInit(void) MTM_GUC_HASHSIZE, &hash_ctl, HASH_ELEM | HASH_CONTEXT); + + /* + * If current role is not equal to MtmDatabaseUser, than set it bofore + * any other GUC vars. + */ + oldcontext = MemoryContextSwitchTo(TopMemoryContext); + current_role = GetConfigOptionByName("session_authorization", NULL, false); + if (current_role && *current_role && strcmp(MtmDatabaseUser, current_role) != 0) + MtmGucUpdate("session_authorization", current_role); + MemoryContextSwitchTo(oldcontext); } static void MtmGucDiscard() @@ -4046,7 +4687,7 @@ static void MtmGucDiscard() dlist_init(&MtmGucList); hash_destroy(MtmGucHash); - MtmGucInit(); + MtmGucHash = NULL; } static inline void MtmGucUpdate(const char *key, char *value) @@ -4054,6 +4695,9 @@ static inline void MtmGucUpdate(const char *key, char *value) MtmGucEntry *hentry; bool found; + if (!MtmGucHash) + MtmGucInit(); + hentry = (MtmGucEntry*)hash_search(MtmGucHash, key, HASH_ENTER, &found); if (found) { @@ -4069,6 +4713,9 @@ static inline void MtmGucRemove(const char *key) MtmGucEntry *hentry; bool found; + if (!MtmGucHash) + MtmGucInit(); + hentry = (MtmGucEntry*)hash_search(MtmGucHash, key, HASH_FIND, &found); if (found) { @@ -4116,25 +4763,30 @@ static void MtmGucSet(VariableSetStmt *stmt, const char *queryStr) MemoryContextSwitchTo(oldcontext); } -static char * MtmGucSerialize(void) +char* MtmGucSerialize(void) { StringInfo serialized_gucs; dlist_iter iter; - int nvars = 0; + const char *search_path; + + if (!MtmGucHash) + MtmGucInit(); serialized_gucs = makeStringInfo(); - appendStringInfoString(serialized_gucs, "RESET SESSION AUTHORIZATION; reset all; "); dlist_foreach(iter, &MtmGucList) { MtmGucEntry *cur_entry = dlist_container(MtmGucEntry, list_node, iter.cur); + if (strcmp(cur_entry->key, "search_path") == 0) + continue; + appendStringInfoString(serialized_gucs, "SET "); appendStringInfoString(serialized_gucs, cur_entry->key); appendStringInfoString(serialized_gucs, " TO "); /* quite a crutch */ - if (strstr(cur_entry->key, "_mem") != NULL) + if (strstr(cur_entry->key, "_mem") != NULL || *(cur_entry->value) == '\0') { appendStringInfoString(serialized_gucs, "'"); appendStringInfoString(serialized_gucs, cur_entry->value); @@ -4145,9 +4797,15 @@ static char * MtmGucSerialize(void) appendStringInfoString(serialized_gucs, cur_entry->value); } appendStringInfoString(serialized_gucs, "; "); - nvars++; } + /* + * Crutch for scheduler. It sets search_path through SetConfigOption() + * so our callback do not react on that. + */ + search_path = GetConfigOption("search_path", false, true); + appendStringInfo(serialized_gucs, "SET search_path TO %s; ", search_path); + return serialized_gucs->data; } @@ -4157,32 +4815,27 @@ static char * MtmGucSerialize(void) * ------------------------------------------- */ -static bool MtmProcessDDLCommand(char const* queryString, bool transactional, bool contextFree) +static void MtmProcessDDLCommand(char const* queryString, bool transactional) { - char *queryWithContext = (char *) queryString; - char *gucContext; + if (MtmTx.isReplicated) + return; - if (!contextFree) { - /* Append global GUC to utility stmt. */ - gucContext = MtmGucSerialize(); - if (gucContext) - { - queryWithContext = palloc(strlen(gucContext) + strlen(queryString) + 1); - strcpy(queryWithContext, gucContext); - strcat(queryWithContext, queryString); - } - } + if (transactional) + { + char *gucCtx = MtmGucSerialize(); + queryString = psprintf("RESET SESSION AUTHORIZATION; reset all; %s %s", gucCtx, queryString); - MTM_LOG3("Sending utility: %s", queryWithContext); - if (transactional) { - /* DDL */ - LogLogicalMessage("D", queryWithContext, strlen(queryWithContext) + 1, true); + /* Transactional DDL */ + MTM_LOG3("Sending DDL: %s", queryString); + LogLogicalMessage("D", queryString, strlen(queryString) + 1, true); MtmTx.containsDML = true; - } else { - /* CONCURRENT DDL */ - XLogFlush(LogLogicalMessage("C", queryWithContext, strlen(queryWithContext) + 1, false)); } - return false; + else + { + /* Concurrent DDL */ + MTM_LOG1("Sending concurrent DDL: %s", queryString); + XLogFlush(LogLogicalMessage("C", queryString, strlen(queryString) + 1, false)); + } } static void MtmFinishDDLCommand() @@ -4195,9 +4848,13 @@ void MtmUpdateLockGraph(int nodeId, void const* messageBody, int messageSize) int allocated; MtmLockNode(nodeId + MtmMaxNodes, LW_EXCLUSIVE); allocated = Mtm->nodes[nodeId-1].lockGraphAllocated; - if (messageSize > allocated) { + if (messageSize > allocated) { allocated = Max(Max(MULTIMASTER_LOCK_BUF_INIT_SIZE, allocated*2), messageSize); Mtm->nodes[nodeId-1].lockGraphData = ShmemAlloc(allocated); + if (Mtm->nodes[nodeId-1].lockGraphData == NULL) { + elog(PANIC, "Failed to allocate shared memory for lock graph: %d bytes requested", + allocated); + } Mtm->nodes[nodeId-1].lockGraphAllocated = allocated; } memcpy(Mtm->nodes[nodeId-1].lockGraphData, messageBody, messageSize); @@ -4206,39 +4863,87 @@ void MtmUpdateLockGraph(int nodeId, void const* messageBody, int messageSize) MTM_LOG1("Update deadlock graph for node %d size %d", nodeId, messageSize); } +static bool MtmIsTempType(TypeName* typeName) +{ + bool isTemp = false; + + if (typeName != NULL) + { + Type typeTuple = LookupTypeName(NULL, typeName, NULL, false); + if (typeTuple != NULL) + { + Form_pg_type typeStruct = (Form_pg_type) GETSTRUCT(typeTuple); + Oid relid = typeStruct->typrelid; + ReleaseSysCache(typeTuple); + + if (relid != InvalidOid) + { + HeapTuple classTuple = SearchSysCache1(RELOID, relid); + Form_pg_class classStruct = (Form_pg_class) GETSTRUCT(classTuple); + if (classStruct->relpersistence == 't') + isTemp = true; + ReleaseSysCache(classTuple); + } + } + } + return isTemp; +} + +static bool MtmFunctionProfileDependsOnTempTable(CreateFunctionStmt* func) +{ + ListCell* elem; + + if (MtmIsTempType(func->returnType)) + { + return true; + } + foreach (elem, func->parameters) + { + FunctionParameter* param = (FunctionParameter*) lfirst(elem); + if (MtmIsTempType(param->argType)) + { + return true; + } + } + return false; +} + + + static void MtmProcessUtility(Node *parsetree, const char *queryString, ProcessUtilityContext context, ParamListInfo params, DestReceiver *dest, char *completionTag) { bool skipCommand = false; bool executed = false; + bool prevMyXactAccessedTempRel; - MTM_LOG3("%d: Process utility statement %s", MyProcPid, queryString); + MTM_LOG2("%d: Process utility statement tag=%d, context=%d, issubtrans=%d, creating_extension=%d, query=%s", + MyProcPid, nodeTag(parsetree), context, IsSubTransaction(), creating_extension, queryString); switch (nodeTag(parsetree)) { case T_TransactionStmt: { TransactionStmt *stmt = (TransactionStmt *) parsetree; switch (stmt->kind) - { + { case TRANS_STMT_BEGIN: case TRANS_STMT_START: - MtmTx.isTransactionBlock = true; - break; + MtmTx.isTransactionBlock = true; + break; case TRANS_STMT_COMMIT: - if (MtmTwoPhaseCommit(&MtmTx)) { + if (MtmTwoPhaseCommit(&MtmTx)) { return; } break; case TRANS_STMT_PREPARE: - MtmTx.isTwoPhase = true; - strcpy(MtmTx.gid, stmt->gid); + MtmTx.isTwoPhase = true; + strcpy(MtmTx.gid, stmt->gid); break; - /* nobreak */ case TRANS_STMT_COMMIT_PREPARED: case TRANS_STMT_ROLLBACK_PREPARED: - Assert(!MtmTx.isTwoPhase); - strcpy(MtmTx.gid, stmt->gid); + Assert(!MtmTx.isTwoPhase); + strcpy(MtmTx.gid, stmt->gid); break; default: break; @@ -4249,8 +4954,6 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString, case T_ClosePortalStmt: case T_FetchStmt: case T_DoStmt: - case T_CreateTableSpaceStmt: - case T_AlterTableSpaceOptionsStmt: case T_CommentStmt: case T_PrepareStmt: case T_ExecuteStmt: @@ -4262,26 +4965,57 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString, case T_ClusterStmt: case T_VariableShowStmt: case T_ReassignOwnedStmt: - case T_LockStmt: + case T_LockStmt: // XXX: check whether we should replicate that case T_CheckPointStmt: case T_ReindexStmt: + case T_ExplainStmt: + case T_AlterSystemStmt: skipCommand = true; break; - case T_VacuumStmt: - skipCommand = true; - // if (context == PROCESS_UTILITY_TOPLEVEL) { - // MtmProcessDDLCommand(queryString, false, true); - // MtmTx.isDistributed = false; - // } else if (MtmApplyContext != NULL) { - // MemoryContext oldContext = MemoryContextSwitchTo(MtmApplyContext); - // Assert(oldContext != MtmApplyContext); - // MtmVacuumStmt = (VacuumStmt*)copyObject(parsetree); - // MemoryContextSwitchTo(oldContext); - // return; - // } - break; + case T_CreatedbStmt: + case T_DropdbStmt: + elog(ERROR, "Multimaster doesn't support creating and dropping databases"); + break; + + case T_CreateTableSpaceStmt: + case T_DropTableSpaceStmt: + { + if (MtmApplyContext != NULL) + { + MemoryContext oldContext = MemoryContextSwitchTo(MtmApplyContext); + Assert(oldContext != MtmApplyContext); + MtmTablespaceStmt = copyObject(parsetree); + MemoryContextSwitchTo(oldContext); + return; + } + else + { + skipCommand = true; + MtmProcessDDLCommand(queryString, false); + } + } + break; + case T_VacuumStmt: + { + VacuumStmt* vacuum = (VacuumStmt*)parsetree; + skipCommand = true; + if ((vacuum->options & VACOPT_LOCAL) == 0 && !MtmVolksWagenMode) + { + if (context == PROCESS_UTILITY_TOPLEVEL) { + MtmProcessDDLCommand(queryString, false); + MtmTx.isDistributed = false; + } else if (MtmApplyContext != NULL) { + MemoryContext oldContext = MemoryContextSwitchTo(MtmApplyContext); + Assert(oldContext != MtmApplyContext); + MtmVacuumStmt = (VacuumStmt*)copyObject(parsetree); + MemoryContextSwitchTo(oldContext); + return; + } + } + break; + } case T_CreateDomainStmt: /* Detect temp tables access */ { @@ -4320,25 +5054,25 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString, } break; - case T_ExplainStmt: - /* - * EXPLAIN ANALYZE can create side-effects. - * Better to catch that by some general mechanism of detecting - * catalog and heap writes. - */ - { - ExplainStmt *stmt = (ExplainStmt *) parsetree; - ListCell *lc; - - skipCommand = true; - foreach(lc, stmt->options) - { - DefElem *opt = (DefElem *) lfirst(lc); - if (strcmp(opt->defname, "analyze") == 0) - skipCommand = false; - } - } - break; + // case T_ExplainStmt: + // /* + // * EXPLAIN ANALYZE can create side-effects. + // * Better to catch that by some general mechanism of detecting + // * catalog and heap writes. + // */ + // { + // ExplainStmt *stmt = (ExplainStmt *) parsetree; + // ListCell *lc; + + // skipCommand = true; + // foreach(lc, stmt->options) + // { + // DefElem *opt = (DefElem *) lfirst(lc); + // if (strcmp(opt->defname, "analyze") == 0) + // skipCommand = false; + // } + // } + // break; /* Save GUC context for consequent DDL execution */ case T_DiscardStmt: @@ -4371,20 +5105,20 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString, case T_IndexStmt: { IndexStmt *indexStmt = (IndexStmt *) parsetree; - if (indexStmt->concurrent) + if (indexStmt->concurrent) { if (context == PROCESS_UTILITY_TOPLEVEL) { - // MtmProcessDDLCommand(queryString, false, true); + MtmProcessDDLCommand(queryString, false); MtmTx.isDistributed = false; skipCommand = true; - /* - * Index is created at replicas completely asynchronously, so to prevent unintended interleaving with subsequent + /* + * Index is created at replicas completely asynchronously, so to prevent unintended interleaving with subsequent * commands in this session, just wait here for a while. * It will help to pass regression tests but will not be enough for construction of real large indexes * where difference between completion of this operation at different nodes is unlimited */ MtmSleep(USECS_PER_SEC); - } else if (MtmApplyContext != NULL) { + } else if (MtmApplyContext != NULL) { MemoryContext oldContext = MemoryContextSwitchTo(MtmApplyContext); Assert(oldContext != MtmApplyContext); MtmIndexStmt = (IndexStmt*)copyObject(indexStmt); @@ -4395,13 +5129,18 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString, } break; + case T_TruncateStmt: + skipCommand = false; + MtmLockCluster(); + break; + case T_DropStmt: { DropStmt *stmt = (DropStmt *) parsetree; if (stmt->removeType == OBJECT_INDEX && stmt->concurrent) { if (context == PROCESS_UTILITY_TOPLEVEL) { - // MtmProcessDDLCommand(queryString, false, true); + MtmProcessDDLCommand(queryString, false); MtmTx.isDistributed = false; skipCommand = true; } else if (MtmApplyContext != NULL) { @@ -4412,17 +5151,23 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString, return; } } + else if (stmt->removeType == OBJECT_FUNCTION && MtmTx.isReplicated) + { + /* Make it possible to drop functions which were not replicated */ + stmt->missing_ok = true; + } } break; /* Copy need some special care */ - case T_CopyStmt: + case T_CopyStmt: { CopyStmt *copyStatement = (CopyStmt *) parsetree; skipCommand = true; - if (copyStatement->is_from) { + if (copyStatement->is_from) { + ListCell *opt; RangeVar *relation = copyStatement->relation; - + if (relation != NULL) { Oid relid = RangeVarGetRelid(relation, NoLock, true); @@ -4431,33 +5176,48 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString, Relation rel = heap_open(relid, ShareLock); if (RelationNeedsWAL(rel)) { MtmTx.containsDML = true; - } + } heap_close(rel, ShareLock); } } + + foreach(opt, copyStatement->options) + { + DefElem *elem = lfirst(opt); + if (strcmp("local", elem->defname) == 0) { + MtmTx.isDistributed = false; /* Skip */ + MtmTx.snapshot = INVALID_CSN; + MtmTx.containsDML = false; + break; + } + } + } + case T_CreateFunctionStmt: + { + if (MtmTx.isReplicated) + { + // disable functiob body cehck at replica + check_function_bodies = false; + } } break; } - default: + default: skipCommand = false; break; } - /* XXX: dirty. Clear on new tx */ - if (!skipCommand && (context == PROCESS_UTILITY_TOPLEVEL || MtmUtilityProcessedInXid != GetCurrentTransactionId())) - MtmUtilityProcessedInXid = InvalidTransactionId; - - if (!skipCommand && !MtmTx.isReplicated && (MtmUtilityProcessedInXid == InvalidTransactionId)) { - MtmUtilityProcessedInXid = GetCurrentTransactionId(); - - if (context == PROCESS_UTILITY_TOPLEVEL) - MtmProcessDDLCommand(queryString, true, false); - else - MtmProcessDDLCommand(ActivePortal->sourceText, true, false); - + if (!skipCommand && !MtmTx.isReplicated && !MtmDDLStatement) + { + MTM_LOG3("Process DDL statement '%s', MtmTx.isReplicated=%d, MtmIsLogicalReceiver=%d", queryString, MtmTx.isReplicated, MtmIsLogicalReceiver); + MtmProcessDDLCommand(queryString, true); executed = true; + MtmDDLStatement = queryString; } + else MTM_LOG3("Skip utility statement '%s': skip=%d, insideDDL=%d", queryString, skipCommand, MtmDDLStatement != NULL); + + prevMyXactAccessedTempRel = MyXactAccessedTempRel; if (PreviousProcessUtilityHook != NULL) { @@ -4469,13 +5229,27 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString, standard_ProcessUtility(parsetree, queryString, context, params, dest, completionTag); } - if (!MtmVolksWagenMode && MtmTx.isDistributed && XactIsoLevel != XACT_REPEATABLE_READ) { - elog(ERROR, "Isolation level %s is not supported by multimaster", isoLevelStr[XactIsoLevel]); +#if 0 + if (!MtmVolksWagenMode && MtmTx.isDistributed && XactIsoLevel != XACT_REPEATABLE_READ) { + MTM_ELOG(ERROR, "Isolation level %s is not supported by multimaster", isoLevelStr[XactIsoLevel]); + } +#endif + /* Allow replication of functions operating on temporary tables. + * Even through temporary table doesn't exist at replica, diasabling functoin body check makes it possible to create such function at replica. + * And it can be accessed later at replica if correspondent temporary table will be created. + * But disable replication of functions returning temporary tables: such functions can not be created at replica in any case. + */ + if (IsA(parsetree, CreateFunctionStmt)) + { + if (MtmFunctionProfileDependsOnTempTable((CreateFunctionStmt*)parsetree)) + { + prevMyXactAccessedTempRel = true; + } + MyXactAccessedTempRel = prevMyXactAccessedTempRel; } - if (MyXactAccessedTempRel) { - MTM_LOG1("Xact accessed temp table, stopping replication"); + MTM_LOG1("Xact accessed temp table, stopping replication of statement '%s'", queryString); MtmTx.isDistributed = false; /* Skip */ MtmTx.snapshot = INVALID_CSN; } @@ -4483,35 +5257,72 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString, if (executed) { MtmFinishDDLCommand(); + MtmDDLStatement = NULL; + } + if (IsA(parsetree, CreateStmt)) + { + CreateStmt* create = (CreateStmt*)parsetree; + Oid relid = RangeVarGetRelid(create->relation, NoLock, true); + if (relid != InvalidOid) { + Oid constraint_oid; + Bitmapset* pk = get_primary_key_attnos(relid, true, &constraint_oid); + if (pk == NULL && !MtmVolksWagenMode) { + elog(WARNING, + MtmIgnoreTablesWithoutPk + ? "Table %s.%s without primary will not be replicated" + : "Updates and deletes of table %s.%s without primary will not be replicated", + create->relation->schemaname ? create->relation->schemaname : "public", + create->relation->relname); + } + } } } static void MtmExecutorStart(QueryDesc *queryDesc, int eflags) { - bool ddl_generating_call = false; - ListCell *tlist; - - foreach(tlist, queryDesc->plannedstmt->planTree->targetlist) + if (!MtmTx.isReplicated && !MtmDDLStatement) { - TargetEntry *tle = (TargetEntry *) lfirst(tlist); + ListCell *tlist; - if (tle->resname && strcmp(tle->resname, "lo_create") == 0) + if (!MtmRemoteFunctions) { - ddl_generating_call = true; - break; + MtmInitializeRemoteFunctionsMap(); } - if (tle->resname && strcmp(tle->resname, "lo_unlink") == 0) + foreach(tlist, queryDesc->plannedstmt->planTree->targetlist) { - ddl_generating_call = true; - break; + TargetEntry *tle = (TargetEntry *) lfirst(tlist); + if (tle->expr && IsA(tle->expr, FuncExpr)) + { + Oid func_oid = ((FuncExpr*)tle->expr)->funcid; + if (!hash_search(MtmRemoteFunctions, &func_oid, HASH_FIND, NULL)) + { + Form_pg_proc funcform; + bool is_sec_def; + HeapTuple func_tuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(func_oid)); + if (!HeapTupleIsValid(func_tuple)) + elog(ERROR, "cache lookup failed for function %u", func_oid); + funcform = (Form_pg_proc) GETSTRUCT(func_tuple); + is_sec_def = funcform->prosecdef; + ReleaseSysCache(func_tuple); + if (!is_sec_def) + { + continue; + } + } + /* + * Execute security defined functions or functions marked as remote at replicated nodes. + * Them are executed as DDL statements. + * All data modifications done inside this function are not replicated. + * As a result generated content can vary at different nodes. + */ + MtmProcessDDLCommand(queryDesc->sourceText, true); + MtmDDLStatement = queryDesc; + break; + } } } - - if (ddl_generating_call && !MtmTx.isReplicated) - MtmProcessDDLCommand(ActivePortal->sourceText, true, false); - if (PreviousExecutorStartHook != NULL) PreviousExecutorStartHook(queryDesc, eflags); else @@ -4524,19 +5335,19 @@ MtmExecutorFinish(QueryDesc *queryDesc) /* * If tx didn't wrote to XLOG then there is nothing to commit on other nodes. */ - if (MtmDoReplication) { - CmdType operation = queryDesc->operation; - EState *estate = queryDesc->estate; - if (estate->es_processed != 0 && (operation == CMD_INSERT || operation == CMD_UPDATE || operation == CMD_DELETE)) { + if (MtmDoReplication) { + CmdType operation = queryDesc->operation; + EState *estate = queryDesc->estate; + if (estate->es_processed != 0 && (operation == CMD_INSERT || operation == CMD_UPDATE || operation == CMD_DELETE)) { int i; - for (i = 0; i < estate->es_num_result_relations; i++) { + for (i = 0; i < estate->es_num_result_relations; i++) { Relation rel = estate->es_result_relations[i].ri_RelationDesc; if (RelationNeedsWAL(rel)) { if (MtmIgnoreTablesWithoutPk) { if (!rel->rd_indexvalid) { RelationGetIndexList(rel); } - if (rel->rd_replidindex == InvalidOid) { + if (rel->rd_replidindex == InvalidOid) { MtmMakeRelationLocal(RelationGetRelid(rel)); continue; } @@ -4546,18 +5357,35 @@ MtmExecutorFinish(QueryDesc *queryDesc) break; } } - } - } - - if (PreviousExecutorFinishHook != NULL) - { - PreviousExecutorFinishHook(queryDesc); - } - else - { - standard_ExecutorFinish(queryDesc); - } -} + } + } + + if (PreviousExecutorFinishHook != NULL) + { + PreviousExecutorFinishHook(queryDesc); + } + else + { + standard_ExecutorFinish(queryDesc); + } + + if (MtmDDLStatement == queryDesc) + { + MtmFinishDDLCommand(); + MtmDDLStatement = NULL; + } +} + +static void MtmSeqNextvalHook(Oid seqid, int64 next) +{ + if (MtmMonotonicSequences) + { + MtmSeqPosition pos; + pos.seqid = seqid; + pos.next = next; + LogLogicalMessage("N", (char*)&pos, sizeof(pos), true); + } +} /* * ------------------------------------------- @@ -4567,18 +5395,18 @@ MtmExecutorFinish(QueryDesc *queryDesc) void MtmExecute(void* work, int size) { - if (Mtm->status == MTM_RECOVERY) { + if (Mtm->status == MTM_RECOVERY) { /* During recovery apply changes sequentially to preserve commit order */ MtmExecutor(work, size); - } else { + } else { BgwPoolExecute(&Mtm->pool, work, size); } } - -static BgwPool* + +static BgwPool* MtmPoolConstructor(void) { - return &Mtm->pool; + return &Mtm->pool; } /* @@ -4594,9 +5422,9 @@ MtmGetGtid(TransactionId xid, GlobalTransactionId* gtid) MtmLock(LW_SHARED); ts = (MtmTransState*)hash_search(MtmXid2State, &xid, HASH_FIND, NULL); - if (ts != NULL) { + if (ts != NULL) { *gtid = ts->gtid; - } else { + } else { gtid->node = MtmNodeId; gtid->xid = xid; } @@ -4604,80 +5432,78 @@ MtmGetGtid(TransactionId xid, GlobalTransactionId* gtid) } -static void +static void MtmSerializeLock(PROCLOCK* proclock, void* arg) { - ByteBuffer* buf = (ByteBuffer*)arg; - LOCK* lock = proclock->tag.myLock; - PGPROC* proc = proclock->tag.myProc; + ByteBuffer* buf = (ByteBuffer*)arg; + LOCK* lock = proclock->tag.myLock; + PGPROC* proc = proclock->tag.myProc; GlobalTransactionId gtid; - if (lock != NULL) { - PGXACT* srcPgXact = &ProcGlobal->allPgXact[proc->pgprocno]; - - if (TransactionIdIsValid(srcPgXact->xid) && proc->waitLock == lock) { - LockMethod lockMethodTable = GetLocksMethodTable(lock); - int numLockModes = lockMethodTable->numLockModes; - int conflictMask = lockMethodTable->conflictTab[proc->waitLockMode]; - SHM_QUEUE *procLocks = &(lock->procLocks); - int lm; - - MtmGetGtid(srcPgXact->xid, >id); /* waiting transaction */ - - ByteBufferAppendInt32(buf, gtid.node); - ByteBufferAppendInt32(buf, gtid.xid); - - proclock = (PROCLOCK *) SHMQueueNext(procLocks, procLocks, - offsetof(PROCLOCK, lockLink)); - while (proclock) - { - if (proc != proclock->tag.myProc) { - PGXACT* dstPgXact = &ProcGlobal->allPgXact[proclock->tag.myProc->pgprocno]; - if (TransactionIdIsValid(dstPgXact->xid)) { - Assert(srcPgXact->xid != dstPgXact->xid); - for (lm = 1; lm <= numLockModes; lm++) - { - if ((proclock->holdMask & LOCKBIT_ON(lm)) && (conflictMask & LOCKBIT_ON(lm))) - { - MTM_LOG3("%d: %u(%u) waits for %u(%u)", MyProcPid, srcPgXact->xid, proc->pid, dstPgXact->xid, proclock->tag.myProc->pid); - MtmGetGtid(dstPgXact->xid, >id); /* transaction holding lock */ - ByteBufferAppendInt32(buf, gtid.node); - ByteBufferAppendInt32(buf, gtid.xid); - break; - } - } - } - } - proclock = (PROCLOCK *) SHMQueueNext(procLocks, &proclock->lockLink, - offsetof(PROCLOCK, lockLink)); - } - ByteBufferAppendInt32(buf, 0); /* end of lock owners list */ - ByteBufferAppendInt32(buf, 0); /* end of lock owners list */ - } - } -} - -static bool + if (lock != NULL) { + PGXACT* srcPgXact = &ProcGlobal->allPgXact[proc->pgprocno]; + + if (TransactionIdIsValid(srcPgXact->xid) && proc->waitLock == lock) { + LockMethod lockMethodTable = GetLocksMethodTable(lock); + int numLockModes = lockMethodTable->numLockModes; + int conflictMask = lockMethodTable->conflictTab[proc->waitLockMode]; + SHM_QUEUE *procLocks = &(lock->procLocks); + int lm; + + MtmGetGtid(srcPgXact->xid, >id); /* waiting transaction */ + + ByteBufferAppend(buf, >id, sizeof(gtid)); + + proclock = (PROCLOCK *) SHMQueueNext(procLocks, procLocks, + offsetof(PROCLOCK, lockLink)); + while (proclock) + { + if (proc != proclock->tag.myProc) { + PGXACT* dstPgXact = &ProcGlobal->allPgXact[proclock->tag.myProc->pgprocno]; + if (TransactionIdIsValid(dstPgXact->xid)) { + Assert(srcPgXact->xid != dstPgXact->xid); + for (lm = 1; lm <= numLockModes; lm++) + { + if ((proclock->holdMask & LOCKBIT_ON(lm)) && (conflictMask & LOCKBIT_ON(lm))) + { + MTM_LOG3("%d: %u(%u) waits for %u(%u)", MyProcPid, srcPgXact->xid, proc->pid, dstPgXact->xid, proclock->tag.myProc->pid); + MtmGetGtid(dstPgXact->xid, >id); /* transaction holding lock */ + ByteBufferAppend(buf, >id, sizeof(gtid)); + break; + } + } + } + } + proclock = (PROCLOCK *) SHMQueueNext(procLocks, &proclock->lockLink, + offsetof(PROCLOCK, lockLink)); + } + gtid.node = 0; + gtid.xid = 0; + ByteBufferAppend(buf, >id, sizeof(gtid)); /* end of lock owners list */ + } + } +} + +static bool MtmDetectGlobalDeadLockForXid(TransactionId xid) { bool hasDeadlock = false; - if (TransactionIdIsValid(xid)) { + if (TransactionIdIsValid(xid)) { ByteBuffer buf; MtmGraph graph; - GlobalTransactionId gtid; + GlobalTransactionId gtid; int i; - - ByteBufferAlloc(&buf); - EnumerateLocks(MtmSerializeLock, &buf); + + ByteBufferAlloc(&buf); + EnumerateLocks(MtmSerializeLock, &buf); Assert(replorigin_session_origin == InvalidRepOriginId); XLogFlush(LogLogicalMessage("L", buf.data, buf.used, false)); - MtmSleep(MSEC_TO_USEC(DeadlockTimeout)); MtmGraphInit(&graph); MtmGraphAdd(&graph, (GlobalTransactionId*)buf.data, buf.used/sizeof(GlobalTransactionId)); - ByteBufferFree(&buf); - for (i = 0; i < Mtm->nAllNodes; i++) { - if (i+1 != MtmNodeId && !BIT_CHECK(Mtm->disabledNodeMask, i)) { + ByteBufferFree(&buf); + for (i = 0; i < Mtm->nAllNodes; i++) { + if (i+1 != MtmNodeId && !BIT_CHECK(Mtm->disabledNodeMask, i)) { size_t lockGraphSize; void* lockGraphData; MtmLockNode(i + 1 + MtmMaxNodes, LW_SHARED); @@ -4688,45 +5514,60 @@ MtmDetectGlobalDeadLockForXid(TransactionId xid) if (lockGraphData == NULL) { return true; - } else { + } else { MtmGraphAdd(&graph, (GlobalTransactionId*)lockGraphData, lockGraphSize/sizeof(GlobalTransactionId)); } } } MtmGetGtid(xid, >id); hasDeadlock = MtmGraphFindLoop(&graph, >id); - elog(LOG, "Distributed deadlock check by backend %d for %u:%u = %d", MyProcPid, gtid.node, gtid.xid, hasDeadlock); - if (!hasDeadlock) { + MTM_ELOG(LOG, "Distributed deadlock check by backend %d for %u:%llu = %d", MyProcPid, gtid.node, (long64)gtid.xid, hasDeadlock); + if (!hasDeadlock) { /* There is no deadlock loop in graph, but deadlock can be caused by lack of apply workers: if all of them are busy, then some transactions - * can not be appied just because there are no vacant workers and it cause additional dependency between transactions which is not - * refelected in lock graph + * can not be appied just because there are no vacant workers and it cause additional dependency between transactions which is not + * refelected in lock graph */ timestamp_t lastPeekTime = BgwGetLastPeekTime(&Mtm->pool); - if (lastPeekTime != 0 && MtmGetSystemTime() - lastPeekTime >= MSEC_TO_USEC(DeadlockTimeout)) { + if (lastPeekTime != 0 && MtmGetSystemTime() - lastPeekTime >= MSEC_TO_USEC(DeadlockTimeout)) { hasDeadlock = true; - elog(WARNING, "Apply workers were blocked more than %d msec", + MTM_ELOG(WARNING, "Apply workers were blocked more than %d msec", (int)USEC_TO_MSEC(MtmGetSystemTime() - lastPeekTime)); - } else { - MTM_LOG1("Enable deadlock timeout in backend %d for transaction %d", MyProcPid, xid); + } else { + MTM_LOG1("Enable deadlock timeout in backend %d for transaction %llu", MyProcPid, (long64)xid); enable_timeout_after(DEADLOCK_TIMEOUT, DeadlockTimeout); } } } - return hasDeadlock; + return hasDeadlock; } -static bool +static bool MtmDetectGlobalDeadLock(PGPROC* proc) { - PGXACT* pgxact = &ProcGlobal->allPgXact[proc->pgprocno]; + PGXACT* pgxact = &ProcGlobal->allPgXact[proc->pgprocno]; - MTM_LOG1("Detect global deadlock for %d by backend %d", pgxact->xid, MyProcPid); + MTM_LOG1("Detect global deadlock for %llu by backend %d", (long64)pgxact->xid, MyProcPid); - return MtmDetectGlobalDeadLockForXid(pgxact->xid); + return MtmDetectGlobalDeadLockForXid(pgxact->xid); } Datum mtm_check_deadlock(PG_FUNCTION_ARGS) { - TransactionId xid = PG_GETARG_INT32(0); - PG_RETURN_BOOL(MtmDetectGlobalDeadLockForXid(xid)); + TransactionId xid = PG_GETARG_INT64(0); + PG_RETURN_BOOL(MtmDetectGlobalDeadLockForXid(xid)); +} + +Datum mtm_referee_poll(PG_FUNCTION_ARGS) +{ + nodemask_t recoveredNodeMask; + + MtmLock(LW_EXCLUSIVE); + recoveredNodeMask = Mtm->recoveredNodeMask; + Mtm->deadNodeMask = PG_GETARG_INT64(0); + Mtm->recoveredNodeMask &= ~Mtm->deadNodeMask; + // XXXX: FIXME: put some event here + // MtmCheckQuorum(); + MtmUnlock(); + + PG_RETURN_INT64(recoveredNodeMask); } diff --git a/contrib/mmts/multimaster.h b/contrib/mmts/multimaster.h index e614ddc525..0ebbbf5301 100644 --- a/contrib/mmts/multimaster.h +++ b/contrib/mmts/multimaster.h @@ -11,63 +11,73 @@ #include "libpq-fe.h" #ifndef DEBUG_LEVEL -#define DEBUG_LEVEL 0 +#define DEBUG_LEVEL 0 #endif -#ifndef MTM_TRACE -#define MTM_TRACE 0 -#endif + +#define MTM_TAG "[MTM] " +#define MTM_ELOG(level,fmt,...) elog(level, MTM_TAG fmt, ## __VA_ARGS__) +#define MTM_ERRMSG(fmt,...) errmsg(MTM_TAG fmt, ## __VA_ARGS__) #if DEBUG_LEVEL == 0 -#define MTM_LOG1(fmt, ...) elog(LOG, fmt, ## __VA_ARGS__) -#define MTM_LOG2(fmt, ...) -#define MTM_LOG3(fmt, ...) -#define MTM_LOG4(fmt, ...) +#define MTM_LOG1(fmt, ...) elog(LOG, "[MTM] " fmt, ## __VA_ARGS__) +#define MTM_LOG2(fmt, ...) +#define MTM_LOG3(fmt, ...) +#define MTM_LOG4(fmt, ...) #elif DEBUG_LEVEL == 1 -#define MTM_LOG1(fmt, ...) fprintf(stderr, fmt "\n", ## __VA_ARGS__) -#define MTM_LOG2(fmt, ...) fprintf(stderr, fmt "\n", ## __VA_ARGS__) -#define MTM_LOG3(fmt, ...) -#define MTM_LOG4(fmt, ...) +#define MTM_LOG1(fmt, ...) fprintf(stderr, fmt "\n", ## __VA_ARGS__) +#define MTM_LOG2(fmt, ...) fprintf(stderr, fmt "\n", ## __VA_ARGS__) +#define MTM_LOG3(fmt, ...) +#define MTM_LOG4(fmt, ...) #elif DEBUG_LEVEL == 2 -#define MTM_LOG1(fmt, ...) fprintf(stderr, fmt "\n", ## __VA_ARGS__) -#define MTM_LOG2(fmt, ...) fprintf(stderr, fmt "\n", ## __VA_ARGS__) -#define MTM_LOG3(fmt, ...) fprintf(stderr, fmt "\n", ## __VA_ARGS__) -#define MTM_LOG4(fmt, ...) +#define MTM_LOG1(fmt, ...) fprintf(stderr, fmt "\n", ## __VA_ARGS__) +#define MTM_LOG2(fmt, ...) fprintf(stderr, fmt "\n", ## __VA_ARGS__) +#define MTM_LOG3(fmt, ...) fprintf(stderr, fmt "\n", ## __VA_ARGS__) +#define MTM_LOG4(fmt, ...) #elif DEBUG_LEVEL >= 3 -#define MTM_LOG1(fmt, ...) fprintf(stderr, fmt "\n", ## __VA_ARGS__) -#define MTM_LOG2(fmt, ...) fprintf(stderr, fmt "\n", ## __VA_ARGS__) -#define MTM_LOG3(fmt, ...) fprintf(stderr, fmt "\n", ## __VA_ARGS__) -#define MTM_LOG4(fmt, ...) fprintf(stderr, fmt "\n", ## __VA_ARGS__) +#define MTM_LOG1(fmt, ...) fprintf(stderr, fmt "\n", ## __VA_ARGS__) +#define MTM_LOG2(fmt, ...) fprintf(stderr, fmt "\n", ## __VA_ARGS__) +#define MTM_LOG3(fmt, ...) fprintf(stderr, fmt "\n", ## __VA_ARGS__) +#define MTM_LOG4(fmt, ...) fprintf(stderr, fmt "\n", ## __VA_ARGS__) #endif -#if MTM_TRACE == 0 -#define MTM_TXTRACE(tx, event) +// #define MTM_TXFINISH 1 + +#ifndef MTM_TXFINISH +#define TXFINISH(fmt, ...) #else -#define MTM_TXTRACE(tx, event) \ - fprintf(stderr, "[MTM_TXTRACE], %s, %lld, %s, %d\n", tx->gid, (long long)MtmGetSystemTime(), event, MyProcPid) +#define TXFINISH(fmt, ...) elog(LOG, MTM_TAG "[TXFINISH] " fmt, ## __VA_ARGS__) #endif -#define MULTIMASTER_NAME "multimaster" -#define MULTIMASTER_SCHEMA_NAME "mtm" -#define MULTIMASTER_DDL_TABLE "ddl_log" -#define MULTIMASTER_LOCAL_TABLES_TABLE "local_tables" -#define MULTIMASTER_SLOT_PATTERN "mtm_slot_%d" -#define MULTIMASTER_MIN_PROTO_VERSION 1 -#define MULTIMASTER_MAX_PROTO_VERSION 1 -#define MULTIMASTER_MAX_GID_SIZE 32 -#define MULTIMASTER_MAX_SLOT_NAME_SIZE 16 -#define MULTIMASTER_MAX_CONN_STR_SIZE 128 -#define MULTIMASTER_MAX_HOST_NAME_SIZE 64 -#define MULTIMASTER_MAX_LOCAL_TABLES 256 -#define MULTIMASTER_MAX_CTL_STR_SIZE 256 -#define MULTIMASTER_LOCK_BUF_INIT_SIZE 4096 -#define MULTIMASTER_BROADCAST_SERVICE "mtm_broadcast" -#define MULTIMASTER_ADMIN "mtm_admin" -#define MULTIMASTER_PRECOMMITTED "precommitted" +// #define MTM_TRACE 1 + +#ifndef MTM_TRACE +#define MTM_TXTRACE(tx, event, ...) +#else +#define MTM_TXTRACE(tx, event, ...) \ + elog(LOG, MTM_TAG "%s, %lld, %u " event "\n", tx->gid, (long long)MtmGetSystemTime(), MyProcPid, ## __VA_ARGS__) +#endif + +#define MULTIMASTER_NAME "multimaster" +#define MULTIMASTER_SCHEMA_NAME "mtm" +#define MULTIMASTER_LOCAL_TABLES_TABLE "local_tables" +#define MULTIMASTER_SLOT_PATTERN "mtm_slot_%d" +#define MULTIMASTER_MIN_PROTO_VERSION 1 +#define MULTIMASTER_MAX_PROTO_VERSION 1 +#define MULTIMASTER_MAX_GID_SIZE 32 +#define MULTIMASTER_MAX_SLOT_NAME_SIZE 16 +#define MULTIMASTER_MAX_CONN_STR_SIZE 128 +#define MULTIMASTER_MAX_HOST_NAME_SIZE 64 +#define MULTIMASTER_MAX_LOCAL_TABLES 256 +#define MULTIMASTER_MAX_CTL_STR_SIZE 256 +#define MULTIMASTER_LOCK_BUF_INIT_SIZE 4096 +#define MULTIMASTER_BROADCAST_SERVICE "mtm_broadcast" +#define MULTIMASTER_ADMIN "mtm_admin" +#define MULTIMASTER_PRECOMMITTED "precommitted" #define MULTIMASTER_DEFAULT_ARBITER_PORT 5433 -#define MB (1024*1024L) +#define MB ((size_t)1024*1024) #define USEC_TO_MSEC(t) ((t)/1000) #define MSEC_TO_USEC(t) ((timestamp_t)(t)*1000) @@ -80,17 +90,23 @@ #define Anum_mtm_local_tables_rel_schema 1 #define Anum_mtm_local_tables_rel_name 2 -#define Natts_mtm_cluster_state 16 -#define Natts_mtm_nodes_state 13 +#define Natts_mtm_trans_state 15 +#define Natts_mtm_nodes_state 17 +#define Natts_mtm_cluster_state 21 -typedef uint64 csn_t; /* commit serial number */ +typedef ulong64 csn_t; /* commit serial number */ #define INVALID_CSN ((csn_t)-1) +typedef ulong64 lsn_t; +#define INVALID_LSN InvalidXLogRecPtr typedef char pgid_t[MULTIMASTER_MAX_GID_SIZE]; +#define SELF_CONNECTIVITY_MASK (Mtm->nodes[MtmNodeId-1].connectivityMask) +#define EFFECTIVE_CONNECTIVITY_MASK ( SELF_CONNECTIVITY_MASK | Mtm->stoppedNodeMask | ~Mtm->clique ) + typedef enum -{ +{ PGLOGICAL_COMMIT, PGLOGICAL_PREPARE, PGLOGICAL_COMMIT_PREPARED, @@ -98,22 +114,17 @@ typedef enum PGLOGICAL_PRECOMMIT_PREPARED } PGLOGICAL_EVENT; -#define PGLOGICAL_XACT_EVENT(flags) (flags & 0x07) - -#define PGLOGICAL_CAUGHT_UP 0x08 - - /* Identifier of global transaction */ -typedef struct +typedef struct { - int node; /* Zero based index of node initiating transaction */ + int node; /* One based id of node initiating transaction */ TransactionId xid; /* Transaction ID at this node */ } GlobalTransactionId; #define EQUAL_GTID(x,y) ((x).node == (y).node && (x).xid == (y).xid) typedef enum -{ +{ MSG_INVALID, MSG_HANDSHAKE, MSG_PREPARED, @@ -128,35 +139,36 @@ typedef enum typedef enum { - MTM_INITIALIZATION, /* Initial status */ - MTM_OFFLINE, /* Node is excluded from cluster */ - MTM_CONNECTED, /* Arbiter is established connections with other nodes */ - MTM_ONLINE, /* Ready to receive client's queries */ + MTM_DISABLED, /* Node disabled */ MTM_RECOVERY, /* Node is in recovery process */ - MTM_IN_MINORITY, /* Node is out of quorum */ - MTM_OUT_OF_SERVICE /* Node is not avaiable to to critical, non-recoverable error */ + MTM_RECOVERED, /* Node is recovered by is not yet switched to ONLINE because + * not all sender/receivers are restarted + */ + MTM_ONLINE /* Ready to receive client's queries */ } MtmNodeStatus; typedef enum { REPLMODE_EXIT, /* receiver should exit */ REPLMODE_RECOVERED, /* recovery of receiver node is completed so drop old slot and restart replication from the current position in WAL */ - REPLMODE_RECOVERY, /* perform recorvery of the node by applying all data from the slot from specified point */ + REPLMODE_RECOVERY, /* perform recovery of the node by applying all data from the slot from specified point */ REPLMODE_CREATE_NEW, /* destination node is recovered: drop old slot and restart from roveredLsn position */ - REPLMODE_OPEN_EXISTED /* normal mode: use existed slot or create new one and start receiving data from it from the rememered position */ + REPLMODE_OPEN_EXISTED /* normal mode: use existed slot or create new one and start receiving data from it from the remembered position */ } MtmReplicationMode; typedef struct { MtmMessageCode code; /* Message code: MSG_PREPARE, MSG_PRECOMMIT, MSG_COMMIT, MSG_ABORT,... */ - int node; /* Sender node ID */ + int node; /* Sender node ID */ + bool lockReq;/* Whether sender node needs to lock cluster to let wal-sender caught-up and complete recovery */ + bool locked; /* Whether sender node is locked */ TransactionId dxid; /* Transaction ID at destination node */ - TransactionId sxid; /* Transaction ID at sender node */ - XidStatus status; /* Transaction status */ + TransactionId sxid; /* Transaction ID at sender node */ + XidStatus status; /* Transaction status */ csn_t csn; /* Local CSN in case of sending data from replica to master, global CSN master->replica */ csn_t oldestSnapshot; /* Oldest snapshot used by active transactions at this node */ nodemask_t disabledNodeMask; /* Bitmask of disabled nodes at the sender of message */ - nodemask_t connectivityMask; /* Connectivity bittmask at the sender of message */ + nodemask_t connectivityMask; /* Connectivity bitmask at the sender of message */ pgid_t gid; /* Global transaction identifier */ } MtmArbiterMessage; @@ -168,9 +180,9 @@ typedef struct */ typedef struct MtmAbortLogicalMessage { - pgid_t gid; - int origin_node; - XLogRecPtr origin_lsn; + pgid_t gid; + int origin_node; + lsn_t origin_lsn; } MtmAbortLogicalMessage; typedef struct MtmMessageQueue @@ -179,13 +191,13 @@ typedef struct MtmMessageQueue struct MtmMessageQueue* next; } MtmMessageQueue; -typedef struct +typedef struct { MtmArbiterMessage hdr; char connStr[MULTIMASTER_MAX_CONN_STR_SIZE]; } MtmHandshakeMessage; -typedef struct +typedef struct { int used; int size; @@ -197,9 +209,17 @@ typedef struct char hostName[MULTIMASTER_MAX_HOST_NAME_SIZE]; char connStr[MULTIMASTER_MAX_CONN_STR_SIZE]; int arbiterPort; + int postmasterPort; } MtmConnectionInfo; +typedef struct +{ + Oid sourceTable; + nodemask_t targetNodes; +} MtmCopyRequest; + + typedef struct { MtmConnectionInfo con; @@ -212,37 +232,51 @@ typedef struct nodemask_t connectivityMask; /* Connectivity mask at this node */ int senderPid; int receiverPid; - XLogRecPtr flushPos; - csn_t oldestSnapshot; /* Oldest snapshot used by active transactions at this node */ - XLogRecPtr restartLSN; + lsn_t flushPos; + csn_t oldestSnapshot; /* Oldest snapshot used by active transactions at this node */ + lsn_t restartLSN; RepOriginId originId; int timeline; void* lockGraphData; int lockGraphAllocated; int lockGraphUsed; + uint64 nHeartbeats; + bool manualRecovery; + bool slotDeleted; /* Signalizes that node is already deleted our slot and + * recovery from that node isn't possible. + */ } MtmNodeInfo; +typedef struct MtmL2List +{ + struct MtmL2List* next; + struct MtmL2List* prev; +} MtmL2List; + typedef struct MtmTransState { TransactionId xid; - XidStatus status; + XidStatus status; pgid_t gid; /* Global transaction ID (used for 2PC) */ GlobalTransactionId gtid; /* Transaction id at coordinator */ csn_t csn; /* commit serial number */ csn_t snapshot; /* transaction snapshot, or INVALID_CSN for local transactions */ - int procno; /* pgprocno of transaction coordinator waiting for responses from replicas, + int procno; /* pgprocno of transaction coordinator waiting for responses from replicas, used to notify coordinator by arbiter */ int nSubxids; /* Number of subtransanctions */ struct MtmTransState* next; /* Next element in L1 list of all finished transaction present in xid2state hash */ + MtmL2List activeList; /* L2-list of active transactions */ bool votingCompleted; /* 2PC voting is completed */ - bool isLocal; /* Transaction is either replicated, either doesn't contain DML statements, so it shoudl be ignored by pglogical replication */ + bool isLocal; /* Transaction is either replicated, either doesn't contain DML statements, so it should be ignored by pglogical replication */ bool isEnqueued; /* Transaction is inserted in queue */ bool isPrepared; /* Transaction is prepared: now it is safe to commit transaction */ bool isActive; /* Transaction is active */ bool isTwoPhase; /* User level 2PC */ - bool isPinned; /* Transaction oid potected from GC */ + bool isPinned; /* Transaction oid protected from GC */ + int nConfigChanges; /* Number of cluster configuration changes at moment of transaction start */ nodemask_t participantsMask; /* Mask of nodes involved in transaction */ nodemask_t votedMask; /* Mask of voted nodes */ + int abortedByNode; /* Store info about node on which this tx was aborted */ TransactionId xids[1]; /* [Mtm->nAllNodes]: transaction ID at replicas */ } MtmTransState; @@ -261,52 +295,68 @@ typedef struct PGSemaphoreData sendSemaphore; /* semaphore used to notify mtm-sender about new responses to coordinator */ LWLockPadded *locks; /* multimaster lock tranche */ TransactionId oldestXid; /* XID of oldest transaction visible by any active transaction (local or global) */ - nodemask_t disabledNodeMask; /* bitmask of disabled nodes */ - nodemask_t connectivityMask; /* bitmask of disconnected nodes */ - nodemask_t pglogicalNodeMask; /* bitmask of started pglogic receivers */ - nodemask_t walSenderLockerMask; /* Mask of WAL-senders IDs locking the cluster */ - nodemask_t nodeLockerMask; /* Mask of node IDs which WAL-senders are locking the cluster */ + nodemask_t disabledNodeMask; /* Bitmask of disabled nodes */ + nodemask_t clique; /* Bitmask of nodes that are connected and we allowed to connect/send wal/receive wal with them */ + bool refereeGrant; /* Referee allowed us to work with half of the nodes */ + int refereeWinnerId; /* Node that won referee contest */ + nodemask_t deadNodeMask; /* Bitmask of nodes considered as dead by referee */ + nodemask_t recoveredNodeMask; /* Bitmask of nodes recoverd after been reported as dead by referee */ + nodemask_t stalledNodeMask; /* Bitmask of stalled nodes (node with dropped replication slot which makes it not possible automatic recovery of such node) */ + nodemask_t stoppedNodeMask; /* Bitmask of stopped (permanently disabled nodes) */ + nodemask_t pglogicalReceiverMask; /* bitmask of started pglogic receivers */ + nodemask_t pglogicalSenderMask; /* bitmask of started pglogic senders */ + nodemask_t currentLockNodeMask; /* Mask of nodes IDs which are locking the cluster */ + nodemask_t inducedLockNodeMask; /* Mask of node IDs which requested cluster-wide lock */ + nodemask_t originLockNodeMask; /* Mask of node IDs which WAL-senders are locking the cluster. + * MtmNodeId bit is used by recovered node to complete recovery and by MtmLockCluster method */ nodemask_t reconnectMask; /* Mask of nodes connection to which has to be reestablished by sender */ - int lastLockHolder; /* PID of process last obtaning the node lock */ + int lastLockHolder; /* PID of process last obtaining the node lock */ bool localTablesHashLoaded; /* Whether data from local_tables table is loaded in shared memory hash table */ bool preparedTransactionsLoaded; /* GIDs of prepared transactions are loaded at startup */ int inject2PCError; /* Simulate error during 2PC commit at this node */ int nLiveNodes; /* Number of active nodes */ - int nAllNodes; /* Total numbber of nodes */ - int nReceivers; /* Number of initialized logical receivers (used to determine moment when intialization/recovery is completed) */ + int nAllNodes; /* Total number of nodes */ + int nReceivers; /* Number of initialized logical receivers (used to determine moment when initialization/recovery is completed) */ int nSenders; /* Number of started WAL senders (used to determine moment when recovery) */ - int nLockers; /* Number of lockers */ - int nActiveTransactions; /* Nunmber of active 2PC transactions */ + int nActiveTransactions; /* Number of active 2PC transactions */ + int nRunningTransactions; /* Number of all running transactions */ int nConfigChanges; /* Number of cluster configuration changes */ int recoveryCount; /* Number of completed recoveries */ - int donorNodeId; /* Cluster node from which this node was populated */ + int donorNodeId; /* Cluster node from which this node was populated */ int64 timeShift; /* Local time correction */ - csn_t csn; /* Last obtained timestamp: used to provide unique acending CSNs based on system time */ + csn_t csn; /* Last obtained timestamp: used to provide unique ascending CSNs based on system time */ csn_t lastCsn; /* CSN of last committed transaction */ - MtmTransState* votingTransactions; /* L1-list of replicated transactions sendings notifications to coordinator. + MtmTransState* votingTransactions; /* L1-list of replicated transactions notifications to coordinator. This list is used to pass information to mtm-sender BGW */ MtmTransState* transListHead; /* L1 list of all finished transactions present in xid2state hash. It is cleanup by MtmGetOldestXmin */ - MtmTransState** transListTail; /* Tail of L1 list of all finished transactionds, used to append new elements. + MtmTransState** transListTail; /* Tail of L1 list of all finished transactions, used to append new elements. This list is expected to be in CSN ascending order, by strict order may be violated */ - uint64 transCount; /* Counter of transactions perfromed by this node */ - uint64 gcCount; /* Number of global transactions performed since last GC */ + MtmL2List activeTransList; /* List of active transactions */ + ulong64 transCount; /* Counter of transactions performed by this node */ + ulong64 gcCount; /* Number of global transactions performed since last GC */ MtmMessageQueue* sendQueue; /* Messages to be sent by arbiter sender */ MtmMessageQueue* freeQueue; /* Free messages */ - XLogRecPtr recoveredLSN; /* LSN at the moment of recovery completion */ + lsn_t recoveredLSN; /* LSN at the moment of recovery completion */ BgwPool pool; /* Pool of background workers for applying logical replication patches */ - MtmNodeInfo nodes[1]; /* [Mtm->nAllNodes]: per-node data */ + MtmNodeInfo nodes[1]; /* [Mtm->nAllNodes]: per-node data */ } MtmState; typedef struct MtmFlushPosition { dlist_node node; int node_id; - XLogRecPtr local_end; - XLogRecPtr remote_end; + lsn_t local_end; + lsn_t remote_end; } MtmFlushPosition; +typedef struct MtmSeqPosition +{ + Oid seqid; + int64 next; +} MtmSeqPosition; + #define MtmIsCoordinator(ts) (ts->gtid.node == MtmNodeId) extern char const* const MtmNodeStatusMnem[]; @@ -322,12 +372,11 @@ extern int MtmNodes; extern int MtmArbiterPort; extern char* MtmDatabaseName; extern char* MtmDatabaseUser; -extern int MtmConnectTimeout; -extern int MtmReconnectTimeout; extern int MtmNodeDisableDelay; extern int MtmTransSpillThreshold; extern int MtmHeartbeatSendTimeout; extern int MtmHeartbeatRecvTimeout; +extern bool MtmUseRDMA; extern bool MtmUseDtm; extern bool MtmPreserveCommitOrder; extern HTAB* MtmXid2State; @@ -335,18 +384,23 @@ extern HTAB* MtmGid2State; extern VacuumStmt* MtmVacuumStmt; extern IndexStmt* MtmIndexStmt; extern DropStmt* MtmDropStmt; +extern void* MtmTablespaceStmt; /* CREATE/DELETE tablespace */ extern MemoryContext MtmApplyContext; -extern XLogRecPtr MtmSenderWalEnd; +extern lsn_t MtmSenderWalEnd; +extern timestamp_t MtmRefreshClusterStatusSchedule; +extern MtmConnectionInfo* MtmConnections; +extern bool MtmMajorNode; +extern bool MtmBackgroundWorker; +extern char* MtmRefereeConnStr; extern void MtmArbiterInitialize(void); extern void MtmStartReceivers(void); extern void MtmStartReceiver(int nodeId, bool dynamic); -extern csn_t MtmTransactionSnapshot(TransactionId xid); +extern csn_t MtmDistributedTransactionSnapshot(TransactionId xid, int nodeId, nodemask_t* participantsMask); extern csn_t MtmAssignCSN(void); extern csn_t MtmSyncClock(csn_t csn); -extern void MtmJoinTransaction(GlobalTransactionId* gtid, csn_t snapshot); -extern void MtmReceiverStarted(int nodeId); +extern void MtmJoinTransaction(GlobalTransactionId* gtid, csn_t snapshot, nodemask_t participantsMask); extern MtmReplicationMode MtmGetReplicationMode(int nodeId, sig_atomic_t volatile* shutdown); extern void MtmExecute(void* work, int size); extern void MtmExecutor(void* work, size_t size); @@ -355,15 +409,15 @@ extern void MtmSendMessage(MtmArbiterMessage* msg); extern void MtmAdjustSubtransactions(MtmTransState* ts); extern void MtmLock(LWLockMode mode); extern void MtmUnlock(void); +extern void MtmDeepUnlock(void); extern void MtmLockNode(int nodeId, LWLockMode mode); +extern bool MtmTryLockNode(int nodeId, LWLockMode mode); extern void MtmUnlockNode(int nodeId); -extern void MtmDropNode(int nodeId, bool dropSlot); -extern void MtmReconnectNode(int nodeId); +extern void MtmStopNode(int nodeId, bool dropSlot); extern void MtmRecoverNode(int nodeId); -extern void MtmOnNodeDisconnect(int nodeId); -extern void MtmOnNodeConnect(int nodeId); +extern void MtmResumeNode(int nodeId); extern void MtmWakeUpBackend(MtmTransState* ts); -extern void MtmSleep(timestamp_t interval); +extern void MtmSleep(timestamp_t interval); extern void MtmAbortTransaction(MtmTransState* ts); extern void MtmSetCurrentTransactionGID(char const* gid); extern csn_t MtmGetTransactionCSN(TransactionId xid); @@ -372,28 +426,34 @@ extern TransactionId MtmGetCurrentTransactionId(void); extern XidStatus MtmGetCurrentTransactionStatus(void); extern XidStatus MtmExchangeGlobalTransactionStatus(char const* gid, XidStatus status); extern bool MtmIsRecoveredNode(int nodeId); -extern bool MtmRefreshClusterStatus(bool nowait); -extern void MtmSwitchClusterMode(MtmNodeStatus mode); extern void MtmUpdateNodeConnectionInfo(MtmConnectionInfo* conn, char const* connStr); extern void MtmSetupReplicationHooks(struct PGLogicalHooks* hooks); -extern void MtmCheckQuorum(void); -extern bool MtmRecoveryCaughtUp(int nodeId, XLogRecPtr slotLSN); -extern void MtmRecoveryCompleted(void); -extern void MtmMakeTableLocal(char* schema, char* name); +extern bool MtmRecoveryCaughtUp(int nodeId, lsn_t walEndPtr); +extern void MtmCheckRecoveryCaughtUp(int nodeId, lsn_t slotLSN); +extern void MtmMakeTableLocal(char const* schema, char const* name); extern void MtmHandleApplyError(void); -extern void MtmUpdateLsnMapping(int nodeId, XLogRecPtr endLsn); -extern XLogRecPtr MtmGetFlushPosition(int nodeId); +extern void MtmUpdateLsnMapping(int nodeId, lsn_t endLsn); +extern lsn_t MtmGetFlushPosition(int nodeId); extern bool MtmWatchdog(timestamp_t now); extern void MtmCheckHeartbeat(void); extern void MtmResetTransaction(void); extern void MtmUpdateLockGraph(int nodeId, void const* messageBody, int messageSize); extern void MtmReleaseRecoverySlot(int nodeId); -extern PGconn *PQconnectdb_safe(const char *conninfo); +extern PGconn *PQconnectdb_safe(const char *conninfo, int timeout); extern void MtmBeginSession(int nodeId); extern void MtmEndSession(int nodeId, bool unlock); extern void MtmFinishPreparedTransaction(MtmTransState* ts, bool commit); extern void MtmRollbackPreparedTransaction(int nodeId, char const* gid); extern bool MtmFilterTransaction(char* record, int size); extern void MtmPrecommitTransaction(char const* gid); +extern char* MtmGucSerialize(void); +extern bool MtmTransIsActive(void); +extern MtmTransState* MtmGetActiveTransaction(MtmL2List* list); +extern void MtmReleaseLocks(void); +extern void MtmInitMessage(MtmArbiterMessage* msg, MtmMessageCode code); +extern void MtmSetSnapshot(csn_t snapshot); +extern void MtmRefereeInitialize(void); +extern void MtmPollStatusOfPreparedTransactionsForDisabledNode(int disabledNodeId, bool commitPrecommited); +extern int MtmGetNumberOfVotingNodes(void); #endif diff --git a/contrib/mmts/pg_hba.conf.template b/contrib/mmts/pg_hba.conf.template new file mode 100644 index 0000000000..050e996b09 --- /dev/null +++ b/contrib/mmts/pg_hba.conf.template @@ -0,0 +1,93 @@ +# PostgreSQL Client Authentication Configuration File +# =================================================== +# +# Refer to the "Client Authentication" section in the PostgreSQL +# documentation for a complete description of this file. A short +# synopsis follows. +# +# This file controls: which hosts are allowed to connect, how clients +# are authenticated, which PostgreSQL user names they can use, which +# databases they can access. Records take one of these forms: +# +# local DATABASE USER METHOD [OPTIONS] +# host DATABASE USER ADDRESS METHOD [OPTIONS] +# hostssl DATABASE USER ADDRESS METHOD [OPTIONS] +# hostnossl DATABASE USER ADDRESS METHOD [OPTIONS] +# +# (The uppercase items must be replaced by actual values.) +# +# The first field is the connection type: "local" is a Unix-domain +# socket, "host" is either a plain or SSL-encrypted TCP/IP socket, +# "hostssl" is an SSL-encrypted TCP/IP socket, and "hostnossl" is a +# plain TCP/IP socket. +# +# DATABASE can be "all", "sameuser", "samerole", "replication", a +# database name, or a comma-separated list thereof. The "all" +# keyword does not match "replication". Access to replication +# must be enabled in a separate record (see example below). +# +# USER can be "all", a user name, a group name prefixed with "+", or a +# comma-separated list thereof. In both the DATABASE and USER fields +# you can also write a file name prefixed with "@" to include names +# from a separate file. +# +# ADDRESS specifies the set of hosts the record matches. It can be a +# host name, or it is made up of an IP address and a CIDR mask that is +# an integer (between 0 and 32 (IPv4) or 128 (IPv6) inclusive) that +# specifies the number of significant bits in the mask. A host name +# that starts with a dot (.) matches a suffix of the actual host name. +# Alternatively, you can write an IP address and netmask in separate +# columns to specify the set of hosts. Instead of a CIDR-address, you +# can write "samehost" to match any of the server's own IP addresses, +# or "samenet" to match any address in any subnet that the server is +# directly connected to. +# +# METHOD can be "trust", "reject", "md5", "password", "gss", "sspi", +# "ident", "peer", "pam", "ldap", "radius" or "cert". Note that +# "password" sends passwords in clear text; "md5" is preferred since +# it sends encrypted passwords. +# +# OPTIONS are a set of options for the authentication in the format +# NAME=VALUE. The available options depend on the different +# authentication methods -- refer to the "Client Authentication" +# section in the documentation for a list of which options are +# available for which authentication methods. +# +# Database and user names containing spaces, commas, quotes and other +# special characters must be quoted. Quoting one of the keywords +# "all", "sameuser", "samerole" or "replication" makes the name lose +# its special character, and just match a database or username with +# that name. +# +# This file is read on server startup and when the postmaster receives +# a SIGHUP signal. If you edit the file on a running system, you have +# to SIGHUP the postmaster for the changes to take effect. You can +# use "pg_ctl reload" to do that. + +# Put your actual configuration here +# ---------------------------------- +# +# If you want to allow non-local connections, you need to add more +# "host" records. In that case you will also need to make PostgreSQL +# listen on a non-local interface via the listen_addresses +# configuration parameter, or via the -i or -h command line switches. + +# CAUTION: Configuring the system for local "trust" authentication +# allows any local user to connect as any PostgreSQL user, including +# the database superuser. If you do not trust all your local users, +# use another authentication method. + + +# TYPE DATABASE USER ADDRESS METHOD + +# "local" is for Unix domain socket connections only +local all all trust +# IPv4 all connections: +host all all 0.0.0.0/0 trust +# IPv6 all connections: +host all all ::0/0 trust +# Allow replication connections from localhost, by a user with the +# replication privilege. +local replication all trust +host replication all 0.0.0.0/0 trust +host replication all ::0/0 trust diff --git a/contrib/mmts/pglogical_apply.c b/contrib/mmts/pglogical_apply.c index 59976a829f..5d46a20bf6 100644 --- a/contrib/mmts/pglogical_apply.c +++ b/contrib/mmts/pglogical_apply.c @@ -14,12 +14,15 @@ #include "catalog/catversion.h" #include "catalog/dependency.h" #include "catalog/index.h" +#include "catalog/heap.h" #include "catalog/namespace.h" #include "catalog/pg_type.h" #include "executor/spi.h" #include "commands/vacuum.h" +#include "commands/tablespace.h" #include "commands/defrem.h" +#include "commands/sequence.h" #include "parser/parse_utilcmd.h" #include "libpq/pqformat.h" @@ -54,6 +57,7 @@ #include "multimaster.h" #include "pglogical_relid_map.h" #include "spill.h" +#include "state.h" typedef struct TupleData { @@ -62,6 +66,7 @@ typedef struct TupleData bool changed[MaxTupleAttributeNumber]; } TupleData; + static Relation read_rel(StringInfo s, LOCKMODE mode); static void read_tuple_parts(StringInfo s, Relation rel, TupleData *tup); static EState* create_rel_estate(Relation rel); @@ -79,7 +84,7 @@ static void process_remote_insert(StringInfo s, Relation rel); static void process_remote_update(StringInfo s, Relation rel); static void process_remote_delete(StringInfo s, Relation rel); -static MemoryContext TopContext; +static bool GucAltered; /* transaction is setting some GUC variables */ /* * Search the index 'idxrel' for a tuple identified by 'skey' in 'rel'. @@ -100,13 +105,13 @@ find_pkey_tuple(ScanKey skey, Relation rel, Relation idxrel, InitDirtySnapshot(snap); scan = index_beginscan(rel, idxrel, &snap, - RelationGetNumberOfAttributes(idxrel), + IndexRelationGetNumberOfKeyAttributes(idxrel), 0); retry: found = false; - index_rescan(scan, skey, RelationGetNumberOfAttributes(idxrel), NULL, 0); + index_rescan(scan, skey, IndexRelationGetNumberOfKeyAttributes(idxrel), NULL, 0); if ((scantuple = index_getnext(scan, ForwardScanDirection)) != NULL) { @@ -153,10 +158,10 @@ find_pkey_tuple(ScanKey skey, Relation rel, Relation idxrel, /* XXX: Improve handling here */ ereport(LOG, (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), - errmsg("concurrent update, retrying"))); + MTM_ERRMSG("concurrent update, retrying"))); goto retry; default: - elog(ERROR, "unexpected HTSU_Result after locking: %u", res); + MTM_ELOG(ERROR, "unexpected HTSU_Result after locking: %u", res); break; } } @@ -235,7 +240,7 @@ build_index_scan_key(ScanKey skey, Relation rel, Relation idxrel, TupleData *tup indkey = (int2vector *) DatumGetPointer(indkeyDatum); - for (attoff = 0; attoff < RelationGetNumberOfAttributes(idxrel); attoff++) + for (attoff = 0; attoff < IndexRelationGetNumberOfKeyAttributes(idxrel); attoff++) { Oid operator; Oid opfamily; @@ -252,7 +257,7 @@ build_index_scan_key(ScanKey skey, Relation rel, Relation idxrel, TupleData *tup BTEqualStrategyNumber); if (!OidIsValid(operator)) - elog(ERROR, + MTM_ELOG(ERROR, "could not lookup equality operator for type %u, optype %u in opfamily %u", atttype, optype, opfamily); @@ -304,7 +309,7 @@ UserTableUpdateOpenIndexes(EState *estate, TupleTableSlot *slot) if (recheckIndexes != NIL) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("bdr doesn't support index rechecks"))); + MTM_ERRMSG("bdr doesn't support index rechecks"))); } /* FIXME: recheck the indexes */ @@ -336,24 +341,31 @@ process_remote_begin(StringInfo s) { GlobalTransactionId gtid; csn_t snapshot; + nodemask_t participantsMask; + int rc; gtid.node = pq_getmsgint(s, 4); - gtid.xid = pq_getmsgint(s, 4); + gtid.xid = pq_getmsgint64(s); snapshot = pq_getmsgint64(s); - + participantsMask = pq_getmsgint64(s); Assert(gtid.node > 0); - MTM_LOG2("REMOTE begin node=%d xid=%d snapshot=%ld", gtid.node, gtid.xid, snapshot); + MTM_LOG2("REMOTE begin node=%d xid=%llu snapshot=%lld participantsMask=%llx", gtid.node, (long64)gtid.xid, snapshot, participantsMask); MtmResetTransaction(); -#if 1 - if (BIT_CHECK(Mtm->disabledNodeMask, gtid.node-1)) { - elog(WARNING, "Ignore transaction %d from disabled node %d", gtid.xid, gtid.node); - return false; - } -#endif + SetCurrentStatementStartTimestamp(); StartTransactionCommand(); - MtmJoinTransaction(>id, snapshot); + MtmJoinTransaction(>id, snapshot, participantsMask); + + if (GucAltered) { + SPI_connect(); + GucAltered = false; + rc = SPI_execute("RESET SESSION AUTHORIZATION; reset all;", false, 0); + SPI_finish(); + if (rc < 0) { + MTM_ELOG(ERROR, "Failed to set reset context: %d", rc); + } + } return true; } @@ -372,6 +384,7 @@ process_remote_message(StringInfo s) { MTM_LOG1("%d: Executing non-tx utility statement %s", MyProcPid, messageBody); SetCurrentStatementStartTimestamp(); + MtmResetTransaction(); StartTransactionCommand(); standalone = true; /* intentional falldown to the next case */ @@ -379,33 +392,33 @@ process_remote_message(StringInfo s) case 'D': { int rc; + GucAltered = true; MTM_LOG1("%d: Executing utility statement %s", MyProcPid, messageBody); SPI_connect(); ActivePortal->sourceText = messageBody; MtmVacuumStmt = NULL; MtmIndexStmt = NULL; MtmDropStmt = NULL; + MtmTablespaceStmt = NULL; + rc = SPI_execute(messageBody, false, 0); SPI_finish(); if (rc < 0) { - elog(ERROR, "Failed to execute utility statement %s", messageBody); + MTM_ELOG(ERROR, "Failed to execute utility statement %s", messageBody); } else { + MemoryContextSwitchTo(MtmApplyContext); PushActiveSnapshot(GetTransactionSnapshot()); if (MtmVacuumStmt != NULL) { ExecVacuum(MtmVacuumStmt, 1); } else if (MtmIndexStmt != NULL) { - MemoryContext oldContext = MemoryContextSwitchTo(MtmApplyContext); Oid relid = RangeVarGetRelidExtended(MtmIndexStmt->relation, ShareUpdateExclusiveLock, false, false, NULL, NULL); - /* Run parse analysis ... */ MtmIndexStmt = transformIndexStmt(relid, MtmIndexStmt, messageBody); - MemoryContextSwitchTo(oldContext); - DefineIndex(relid, /* OID of heap relation */ MtmIndexStmt, InvalidOid, /* no predefined OID */ @@ -414,9 +427,25 @@ process_remote_message(StringInfo s) false, /* skip_build */ false); /* quiet */ - } else if (MtmDropStmt != NULL) { + } + else if (MtmDropStmt != NULL) + { RemoveObjects(MtmDropStmt); } + else if (MtmTablespaceStmt != NULL) + { + switch (nodeTag(MtmTablespaceStmt)) + { + case T_CreateTableSpaceStmt: + CreateTableSpace((CreateTableSpaceStmt *) MtmTablespaceStmt); + break; + case T_DropTableSpaceStmt: + DropTableSpace((DropTableSpaceStmt *) MtmTablespaceStmt); + break; + default: + Assert(false); + } + } if (ActiveSnapshotSet()) PopActiveSnapshot(); } @@ -434,17 +463,17 @@ process_remote_message(StringInfo s) * restartLSN without locks */ if (origin_node == MtmReplicationNodeId) { - Assert(msg->origin_lsn == InvalidXLogRecPtr); + Assert(msg->origin_lsn == INVALID_LSN); msg->origin_lsn = MtmSenderWalEnd; } if (Mtm->nodes[origin_node-1].restartLSN < msg->origin_lsn) { - MTM_LOG2("[restartlsn] node %d: %lx -> %lx (MtmFilterTransaction)", origin_node, Mtm->nodes[origin_node-1].restartLSN, msg->origin_lsn); + MTM_LOG1("Receive logical abort message for transaction %s from node %d: %llx < %llx", msg->gid, origin_node, Mtm->nodes[origin_node-1].restartLSN, msg->origin_lsn); Mtm->nodes[origin_node-1].restartLSN = msg->origin_lsn; - replorigin_session_origin_lsn = msg->origin_lsn; + replorigin_session_origin_lsn = msg->origin_lsn; MtmRollbackPreparedTransaction(origin_node, msg->gid); } else { - if (msg->origin_lsn != InvalidXLogRecPtr) { - MTM_LOG1("Ignore rollback of transaction %s from node %d because it's LSN %lx <= %lx", + if (msg->origin_lsn != INVALID_LSN) { + MTM_LOG1("Ignore rollback of transaction %s from node %d because it's LSN %llx <= %llx", msg->gid, origin_node, msg->origin_lsn, Mtm->nodes[origin_node-1].restartLSN); } } @@ -453,13 +482,20 @@ process_remote_message(StringInfo s) } case 'L': { - MTM_LOG3("%ld: Process deadlock message with size %d from %d", MtmGetSystemTime(), messageSize, MtmReplicationNodeId); + MTM_LOG3("%lld: Process deadlock message with size %d from %d", MtmGetSystemTime(), messageSize, MtmReplicationNodeId); MtmUpdateLockGraph(MtmReplicationNodeId, messageBody, messageSize); standalone = true; break; } - - } + case 'S': + { + Assert(messageSize == sizeof(csn_t)); + MtmSetSnapshot(*(csn_t*)messageBody); + break; + } + default: + Assert(false); + } return standalone; } @@ -474,7 +510,7 @@ read_tuple_parts(StringInfo s, Relation rel, TupleData *tup) action = pq_getmsgbyte(s); if (action != 'T') - elog(ERROR, "expected TUPLE, got %c", action); + MTM_ELOG(ERROR, "expected TUPLE, got %c", action); memset(tup->isnull, 1, sizeof(tup->isnull)); memset(tup->changed, 1, sizeof(tup->changed)); @@ -482,7 +518,7 @@ read_tuple_parts(StringInfo s, Relation rel, TupleData *tup) rnatts = pq_getmsgint(s, 2); if (desc->natts < rnatts) - elog(ERROR, "tuple natts mismatch, %u vs %u", desc->natts, rnatts); + MTM_ELOG(ERROR, "tuple natts mismatch, %u vs %u", desc->natts, rnatts); /* FIXME: unaligned data accesses */ @@ -546,7 +582,7 @@ read_tuple_parts(StringInfo s, Relation rel, TupleData *tup) if (buf.len != buf.cursor) ereport(ERROR, (errcode(ERRCODE_INVALID_BINARY_REPRESENTATION), - errmsg("incorrect binary data format"))); + MTM_ERRMSG("incorrect binary data format"))); break; } case 't': /* text format */ @@ -565,14 +601,23 @@ read_tuple_parts(StringInfo s, Relation rel, TupleData *tup) } break; default: - elog(ERROR, "unknown column type '%c'", kind); + MTM_ELOG(ERROR, "unknown column type '%c'", kind); } if (att->attisdropped && !tup->isnull[i]) - elog(ERROR, "data for dropped column"); + MTM_ELOG(ERROR, "data for dropped column"); } } +static void +close_rel(Relation rel) +{ + if (rel != NULL) + { + heap_close(rel, NoLock); + } +} + static Relation read_rel(StringInfo s, LOCKMODE mode) { @@ -581,6 +626,7 @@ read_rel(StringInfo s, LOCKMODE mode) RangeVar* rv; Oid remote_relid = pq_getmsgint(s, 4); Oid local_relid; + MemoryContext old_context; local_relid = pglogical_relid_map_get(remote_relid); if (local_relid == InvalidOid) { @@ -593,7 +639,9 @@ read_rel(StringInfo s, LOCKMODE mode) rv->relname = (char *) pq_getmsgbytes(s, relnamelen); local_relid = RangeVarGetRelidExtended(rv, mode, false, false, NULL, NULL); + old_context = MemoryContextSwitchTo(TopMemoryContext); pglogical_relid_map_put(remote_relid, local_relid); + MemoryContextSwitchTo(old_context); } else { nspnamelen = pq_getmsgbyte(s); s->cursor += nspnamelen; @@ -606,18 +654,22 @@ read_rel(StringInfo s, LOCKMODE mode) static void process_remote_commit(StringInfo in) { - uint8 flags; + uint8 event; csn_t csn; - const char *gid = NULL; - XLogRecPtr end_lsn; - XLogRecPtr origin_lsn; + lsn_t end_lsn; + lsn_t origin_lsn; + lsn_t commit_lsn; int origin_node; - /* read flags */ - flags = pq_getmsgbyte(in); + char gid[MULTIMASTER_MAX_GID_SIZE]; + + gid[0] = '\0'; + + /* read event */ + event = pq_getmsgbyte(in); MtmReplicationNodeId = pq_getmsgbyte(in); /* read fields */ - pq_getmsgint64(in); /* commit_lsn */ + commit_lsn = pq_getmsgint64(in); /* commit_lsn */ end_lsn = pq_getmsgint64(in); /* end_lsn */ replorigin_session_origin_timestamp = pq_getmsgint64(in); /* commit_time */ @@ -627,13 +679,13 @@ process_remote_commit(StringInfo in) replorigin_session_origin_lsn = origin_node == MtmReplicationNodeId ? end_lsn : origin_lsn; Assert(replorigin_session_origin == InvalidRepOriginId); - switch (PGLOGICAL_XACT_EVENT(flags)) + switch (event) { case PGLOGICAL_PRECOMMIT_PREPARED: { Assert(!TransactionIdIsValid(MtmGetCurrentTransactionId())); - gid = pq_getmsgstring(in); - MTM_LOG2("%d: PGLOGICAL_PRECOMMIT_PREPARED %s", MyProcPid, gid); + strncpy(gid, pq_getmsgstring(in), sizeof gid); + MTM_LOG2("%d: PGLOGICAL_PRECOMMIT_PREPARED %s, (%llx,%llx,%llx)", MyProcPid, gid, commit_lsn, end_lsn, origin_lsn); MtmBeginSession(origin_node); MtmPrecommitTransaction(gid); MtmEndSession(origin_node, true); @@ -641,7 +693,7 @@ process_remote_commit(StringInfo in) } case PGLOGICAL_COMMIT: { - MTM_LOG2("%d: PGLOGICAL_COMMIT commit", MyProcPid); + MTM_LOG1("%d: PGLOGICAL_COMMIT %s, (%llx,%llx,%llx)", MyProcPid, gid, commit_lsn, end_lsn, origin_lsn); if (IsTransactionState()) { Assert(TransactionIdIsValid(MtmGetCurrentTransactionId())); MtmBeginSession(origin_node); @@ -653,14 +705,14 @@ process_remote_commit(StringInfo in) case PGLOGICAL_PREPARE: { Assert(IsTransactionState() && TransactionIdIsValid(MtmGetCurrentTransactionId())); - gid = pq_getmsgstring(in); + strncpy(gid, pq_getmsgstring(in), sizeof gid); + MTM_LOG2("%d: PGLOGICAL_PREPARE %s, (%llx,%llx,%llx)", MyProcPid, gid, commit_lsn, end_lsn, origin_lsn); if (MtmExchangeGlobalTransactionStatus(gid, TRANSACTION_STATUS_IN_PROGRESS) == TRANSACTION_STATUS_ABORTED) { MTM_LOG1("Avoid prepare of previously aborted global transaction %s", gid); AbortCurrentTransaction(); } else { /* prepare TBLOCK_INPROGRESS state for PrepareTransactionBlock() */ - MTM_LOG2("PGLOGICAL_PREPARE commit: gid=%s", gid); - BeginTransactionBlock(); + BeginTransactionBlock(false); CommitTransactionCommand(); StartTransactionCommand(); @@ -674,8 +726,10 @@ process_remote_commit(StringInfo in) MTM_LOG1("Perform delayed rollback of prepared global transaction %s", gid); StartTransactionCommand(); MtmSetCurrentTransactionGID(gid); + TXFINISH("%s ABORT, PGLOGICAL_PREPARE", gid); FinishPreparedTransaction(gid, false); CommitTransactionCommand(); + Assert(!MtmTransIsActive()); } MtmEndSession(origin_node, true); } @@ -684,24 +738,38 @@ process_remote_commit(StringInfo in) case PGLOGICAL_COMMIT_PREPARED: { Assert(!TransactionIdIsValid(MtmGetCurrentTransactionId())); - csn = pq_getmsgint64(in); - gid = pq_getmsgstring(in); - MTM_LOG2("PGLOGICAL_COMMIT_PREPARED commit: csn=%ld, gid=%s, lsn=%lx", csn, gid, end_lsn); + csn = pq_getmsgint64(in); + /* + * Since our recovery method allows undershoot of lsn, we can receive + * some already committed transactions. And in case of donor node reboot + * xid<->csn mapping for them will be lost. However we must filter such + * transactions in walreceiver before this code. --sk + */ + Assert(csn); + strncpy(gid, pq_getmsgstring(in), sizeof gid); + MTM_LOG2("%d: PGLOGICAL_COMMIT_PREPARED %s, (%llx,%llx,%llx)", MyProcPid, gid, commit_lsn, end_lsn, origin_lsn); MtmResetTransaction(); StartTransactionCommand(); MtmBeginSession(origin_node); - MtmSetCurrentTransactionCSN(csn); + if (csn == INVALID_CSN && Mtm->status == MTM_RECOVERY) + MtmSetCurrentTransactionCSN(MtmAssignCSN()); + else + MtmSetCurrentTransactionCSN(csn); MtmSetCurrentTransactionGID(gid); + TXFINISH("%s COMMIT, PGLOGICAL_COMMIT_PREPARED csn=%lld", gid, csn); FinishPreparedTransaction(gid, true); + MTM_LOG2("Distributed transaction %s is committed", gid); CommitTransactionCommand(); + Assert(!MtmTransIsActive()); MtmEndSession(origin_node, true); break; } case PGLOGICAL_ABORT_PREPARED: { Assert(!TransactionIdIsValid(MtmGetCurrentTransactionId())); - gid = pq_getmsgstring(in); + strncpy(gid, pq_getmsgstring(in), sizeof gid); /* MtmRollbackPreparedTransaction will set origin session itself */ + MTM_LOG1("Receive ABORT_PREPARED logical message for transaction %s from node %d", gid, origin_node); MtmRollbackPreparedTransaction(origin_node, gid); break; } @@ -709,12 +777,9 @@ process_remote_commit(StringInfo in) Assert(false); } if (Mtm->status == MTM_RECOVERY) { - MTM_LOG1("Recover transaction %s flags=%d", gid, flags); + MTM_LOG1("Recover transaction %s event=%d", gid, event); } MtmUpdateLsnMapping(MtmReplicationNodeId, end_lsn); - if (flags & PGLOGICAL_CAUGHT_UP) { - MtmRecoveryCompleted(); - } } static void @@ -745,7 +810,7 @@ process_remote_insert(StringInfo s, Relation rel) } // if (rel->rd_rel->relkind != RELKIND_RELATION) // RELKIND_MATVIEW - // elog(ERROR, "unexpected relkind '%c' rel \"%s\"", + // MTM_ELOG(ERROR, "unexpected relkind '%c' rel \"%s\"", // rel->rd_rel->relkind, RelationGetRelationName(rel)); /* debug output */ @@ -794,7 +859,7 @@ process_remote_insert(StringInfo s, Relation rel) /* TODO: Report tuple identity in log */ ereport(ERROR, (errcode(ERRCODE_UNIQUE_VIOLATION), - errmsg("Unique constraints violated by remotely INSERTed tuple"), + MTM_ERRMSG("Unique constraints violated by remotely INSERTed tuple"), errdetail("Cannot apply transaction because remotely INSERTed tuple conflicts with a local tuple on UNIQUE constraint and/or PRIMARY KEY"))); } CHECK_FOR_INTERRUPTS(); @@ -808,10 +873,15 @@ process_remote_insert(StringInfo s, Relation rel) if (ActiveSnapshotSet()) PopActiveSnapshot(); - heap_close(rel, NoLock); + if (strcmp(RelationGetRelationName(rel), MULTIMASTER_LOCAL_TABLES_TABLE) == 0 && + strcmp(get_namespace_name(RelationGetNamespace(rel)), MULTIMASTER_SCHEMA_NAME) == 0) + { + MtmMakeTableLocal((char*)DatumGetPointer(new_tuple.values[0]), (char*)DatumGetPointer(new_tuple.values[1])); + } + ExecResetTupleTable(estate->es_tupleTable, true); FreeExecutorState(estate); - + CommandCounterIncrement(); } @@ -835,7 +905,7 @@ process_remote_update(StringInfo s, Relation rel) /* old key present, identifying key changed */ if (action != 'K' && action != 'N') - elog(ERROR, "expected action 'N' or 'K', got %c", + MTM_ELOG(ERROR, "expected action 'N' or 'K', got %c", action); estate = create_rel_estate(rel); @@ -855,11 +925,11 @@ process_remote_update(StringInfo s, Relation rel) /* check for new tuple */ if (action != 'N') - elog(ERROR, "expected action 'N', got %c", + MTM_ELOG(ERROR, "expected action 'N', got %c", action); if (rel->rd_rel->relkind != RELKIND_RELATION) - elog(ERROR, "unexpected relkind '%c' rel \"%s\"", + MTM_ELOG(ERROR, "unexpected relkind '%c' rel \"%s\"", rel->rd_rel->relkind, RelationGetRelationName(rel)); /* read new tuple */ @@ -871,7 +941,7 @@ process_remote_update(StringInfo s, Relation rel) idxoid = rel->rd_replidindex; if (!OidIsValid(idxoid)) { - elog(ERROR, "could not find primary key for table with oid %u", + MTM_ELOG(ERROR, "could not find primary key for table with oid %u", RelationGetRelid(rel)); return; } @@ -905,10 +975,10 @@ process_remote_update(StringInfo s, Relation rel) { StringInfoData o; initStringInfo(&o); - tuple_to_stringinfo(&o, RelationGetDescr(rel), oldslot->tts_tuple); + tuple_to_stringinfo(&o, RelationGetDescr(rel), oldslot->tts_tuple, false); appendStringInfo(&o, " to"); - tuple_to_stringinfo(&o, RelationGetDescr(rel), remote_tuple); - MTM_LOG1(DEBUG1, "UPDATE:%s", o.data); + tuple_to_stringinfo(&o, RelationGetDescr(rel), remote_tuple, false); + MTM_LOG1("%lu: UPDATE: %s", GetCurrentTransactionId(), o.data); resetStringInfo(&o); } #endif @@ -920,7 +990,7 @@ process_remote_update(StringInfo s, Relation rel) { ereport(ERROR, (errcode(ERRCODE_NO_DATA_FOUND), - errmsg("Record with specified key can not be located at this node"), + MTM_ERRMSG("Record with specified key can not be located at this node"), errdetail("Most likely we have DELETE-UPDATE conflict"))); } @@ -929,7 +999,6 @@ process_remote_update(StringInfo s, Relation rel) /* release locks upon commit */ index_close(idxrel, NoLock); - heap_close(rel, NoLock); ExecResetTupleTable(estate->es_tupleTable, true); FreeExecutorState(estate); @@ -960,7 +1029,7 @@ process_remote_delete(StringInfo s, Relation rel) idxoid = rel->rd_replidindex; if (!OidIsValid(idxoid)) { - elog(ERROR, "could not find primary key for table with oid %u", + MTM_ELOG(ERROR, "could not find primary key for table with oid %u", RelationGetRelid(rel)); return; } @@ -969,7 +1038,7 @@ process_remote_delete(StringInfo s, Relation rel) idxrel = index_open(idxoid, RowExclusiveLock); if (rel->rd_rel->relkind != RELKIND_RELATION) - elog(ERROR, "unexpected relkind '%c' rel \"%s\"", + MTM_ELOG(ERROR, "unexpected relkind '%c' rel \"%s\"", rel->rd_rel->relkind, RelationGetRelationName(rel)); #ifdef VERBOSE_DELETE @@ -997,14 +1066,13 @@ process_remote_delete(StringInfo s, Relation rel) { ereport(ERROR, (errcode(ERRCODE_NO_DATA_FOUND), - errmsg("Record with specified key can not be located at this node"), + MTM_ERRMSG("Record with specified key can not be located at this node"), errdetail("Most likely we have DELETE-DELETE conflict"))); } PopActiveSnapshot(); index_close(idxrel, NoLock); - heap_close(rel, NoLock); ExecResetTupleTable(estate->es_tupleTable, true); FreeExecutorState(estate); @@ -1019,11 +1087,14 @@ void MtmExecutor(void* work, size_t size) int spill_file = -1; int save_cursor = 0; int save_len = 0; + MemoryContext old_context; + MemoryContext top_context; + s.data = work; s.len = size; s.maxlen = -1; s.cursor = 0; - + if (MtmApplyContext == NULL) { MtmApplyContext = AllocSetContextCreate(TopMemoryContext, "ApplyContext", @@ -1031,12 +1102,15 @@ void MtmExecutor(void* work, size_t size) ALLOCSET_DEFAULT_INITSIZE, ALLOCSET_DEFAULT_MAXSIZE); } - TopContext = MemoryContextSwitchTo(MtmApplyContext); + top_context = MemoryContextSwitchTo(MtmApplyContext); replorigin_session_origin = InvalidRepOriginId; PG_TRY(); { - while (true) { + bool inside_transaction = true; + do { char action = pq_getmsgbyte(&s); + old_context = MemoryContextSwitchTo(MtmApplyContext); + MTM_LOG2("%d: REMOTE process action %c", MyProcPid, action); #if 0 if (Mtm->status == MTM_RECOVERY) { @@ -1047,48 +1121,48 @@ void MtmExecutor(void* work, size_t size) switch (action) { /* BEGIN */ case 'B': - if (process_remote_begin(&s)) { - continue; - } else { - break; - } + inside_transaction = process_remote_begin(&s); + break; /* COMMIT */ case 'C': + close_rel(rel); process_remote_commit(&s); + inside_transaction = false; break; /* INSERT */ case 'I': - process_remote_insert(&s, rel); - continue; + process_remote_insert(&s, rel); + break; /* UPDATE */ case 'U': process_remote_update(&s, rel); - continue; + break; /* DELETE */ case 'D': process_remote_delete(&s, rel); - continue; + break; case 'R': + close_rel(rel); rel = read_rel(&s, RowExclusiveLock); - continue; + break; case 'F': { int node_id = pq_getmsgint(&s, 4); int file_id = pq_getmsgint(&s, 4); Assert(spill_file < 0); spill_file = MtmOpenSpillFile(node_id, file_id); - continue; + break; } case '(': { - int64 size = pq_getmsgint(&s, 4); - s.data = palloc(size); + size_t size = pq_getmsgint(&s, 4); + s.data = MemoryContextAlloc(TopMemoryContext, size); save_cursor = s.cursor; save_len = s.len; s.cursor = 0; s.len = size; MtmReadSpillFile(spill_file, s.data, size); - continue; + break; } case ')': { @@ -1096,37 +1170,68 @@ void MtmExecutor(void* work, size_t size) s.data = work; s.cursor = save_cursor; s.len = save_len; - continue; + break; } + case 'N': + { + int64 next; + Oid relid; + Assert(rel != NULL); + relid = RelationGetRelid(rel); + close_rel(rel); + rel = NULL; + next = pq_getmsgint64(&s); + AdjustSequence(relid, next); + break; + } + case '0': + Assert(rel != NULL); + heap_truncate_one_rel(rel); + break; case 'M': { - if (process_remote_message(&s)) { - break; - } - continue; + close_rel(rel); + rel = NULL; + inside_transaction = !process_remote_message(&s); + break; + } + case 'Z': + { + MtmStateProcessEvent(MTM_RECOVERY_FINISH2); + inside_transaction = false; + break; } default: - elog(ERROR, "unknown action of type %c", action); + MTM_ELOG(ERROR, "unknown action of type %c", action); } - break; - } + MemoryContextSwitchTo(old_context); + MemoryContextResetAndDeleteChildren(MtmApplyContext); + } while (inside_transaction); } PG_CATCH(); { - MemoryContext oldcontext = MemoryContextSwitchTo(MtmApplyContext); + old_context = MemoryContextSwitchTo(MtmApplyContext); MtmHandleApplyError(); - MemoryContextSwitchTo(oldcontext); + MemoryContextSwitchTo(old_context); EmitErrorReport(); FlushErrorState(); - MTM_LOG1("%d: REMOTE begin abort transaction %d", MyProcPid, MtmGetCurrentTransactionId()); + MTM_LOG1("%d: REMOTE begin abort transaction %llu", MyProcPid, (long64)MtmGetCurrentTransactionId()); MtmEndSession(MtmReplicationNodeId, false); AbortCurrentTransaction(); - MTM_LOG2("%d: REMOTE end abort transaction %d", MyProcPid, MtmGetCurrentTransactionId()); + Assert(!MtmTransIsActive()); + MTM_LOG2("%d: REMOTE end abort transaction %llu", MyProcPid, (long64)MtmGetCurrentTransactionId()); } PG_END_TRY(); + if (s.data != work) { + pfree(s.data); + } +#if 0 /* spill file is expecrted to be closed by tranaction commit or rollback */ if (spill_file >= 0) { MtmCloseSpillFile(spill_file); } +#endif + MemoryContextSwitchTo(top_context); MemoryContextResetAndDeleteChildren(MtmApplyContext); + MtmReleaseLocks(); } diff --git a/contrib/mmts/pglogical_config.c b/contrib/mmts/pglogical_config.c index cc22700a09..f9e37de476 100644 --- a/contrib/mmts/pglogical_config.c +++ b/contrib/mmts/pglogical_config.c @@ -32,6 +32,8 @@ #include "utils/syscache.h" #include "utils/typcache.h" +#include "multimaster.h" + typedef enum PGLogicalOutputParamType { OUTPUT_PARAM_TYPE_BOOL, @@ -253,7 +255,7 @@ process_parameters_v1(List *options, PGLogicalOutputData *data) case PARAM_UNRECOGNISED: ereport(DEBUG1, - (errmsg("Unrecognised pglogical parameter %s ignored", elem->defname))); + (MTM_ERRMSG("Unrecognised pglogical parameter %s ignored", elem->defname))); break; } } @@ -298,7 +300,7 @@ get_param_value(DefElem *elem, bool null_ok, PGLogicalOutputParamType type) else ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("parameter \"%s\" cannot be NULL", elem->defname))); + MTM_ERRMSG("parameter \"%s\" cannot be NULL", elem->defname))); } switch (type) @@ -348,7 +350,7 @@ get_param(List *options, const char *name, bool missing_ok, bool null_ok, if (!missing_ok) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("missing required parameter \"%s\"", name))); + MTM_ERRMSG("missing required parameter \"%s\"", name))); return (Datum) 0; } @@ -361,7 +363,7 @@ parse_param_bool(DefElem *elem) if (!parse_bool(strVal(elem->arg), &res)) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("could not parse boolean value \"%s\" for parameter \"%s\"", + MTM_ERRMSG("could not parse boolean value \"%s\" for parameter \"%s\"", strVal(elem->arg), elem->defname))); return res; @@ -375,13 +377,13 @@ parse_param_uint32(DefElem *elem) if (!scanint8(strVal(elem->arg), true, &res)) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("could not parse integer value \"%s\" for parameter \"%s\"", + MTM_ERRMSG("could not parse integer value \"%s\" for parameter \"%s\"", strVal(elem->arg), elem->defname))); if (res > PG_UINT32_MAX || res < 0) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("value \"%s\" out of range for parameter \"%s\"", + MTM_ERRMSG("value \"%s\" out of range for parameter \"%s\"", strVal(elem->arg), elem->defname))); return (uint32) res; diff --git a/contrib/mmts/pglogical_hooks.c b/contrib/mmts/pglogical_hooks.c index 2163d788e3..009bb97076 100644 --- a/contrib/mmts/pglogical_hooks.c +++ b/contrib/mmts/pglogical_hooks.c @@ -17,6 +17,8 @@ #include "pglogical_hooks.h" #include "pglogical_output.h" +#include "multimaster.h" + /* * Returns Oid of the hooks function specified in funcname. * @@ -39,7 +41,7 @@ get_hooks_function_oid(List *funcname) { ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), - errmsg("function %s must return void", + MTM_ERRMSG("function %s must return void", NameListToString(funcname)))); } @@ -47,7 +49,7 @@ get_hooks_function_oid(List *funcname) { ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), - errmsg("function %s must not be VOLATILE", + MTM_ERRMSG("function %s must not be VOLATILE", NameListToString(funcname)))); } @@ -61,7 +63,7 @@ get_hooks_function_oid(List *funcname) #endif ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), - errmsg("current user %s does not have permission to call function %s", + MTM_ERRMSG("current user %s does not have permission to call function %s", username, NameListToString(funcname)))); } diff --git a/contrib/mmts/pglogical_output.c b/contrib/mmts/pglogical_output.c index aaa9fad60a..8fb3f40e02 100644 --- a/contrib/mmts/pglogical_output.c +++ b/contrib/mmts/pglogical_output.c @@ -49,6 +49,8 @@ #include "utils/typcache.h" #include "miscadmin.h" +#include "multimaster.h" + extern void _PG_output_plugin_init(OutputPluginCallbacks *cb); /* These must be available to pg_dlsym() */ @@ -70,12 +72,33 @@ static void pg_decode_message(LogicalDecodingContext *ctx, ReorderBufferTXN *txn, XLogRecPtr message_lsn, bool transactional, const char *prefix, Size sz, const char *message); +static void pg_decode_caughtup(LogicalDecodingContext *ctx); static void send_startup_message(LogicalDecodingContext *ctx, PGLogicalOutputData *data, bool last_message); static bool startup_message_sent = false; +#define OUTPUT_BUFFER_SIZE (16*1024*1024) + +void MtmOutputPluginWrite(LogicalDecodingContext *ctx, bool last_write, bool flush) +{ + if (flush) { + OutputPluginWrite(ctx, last_write); + } +} + +void MtmOutputPluginPrepareWrite(LogicalDecodingContext *ctx, bool last_write, bool flush) +{ + if (!ctx->prepared_write) { + OutputPluginPrepareWrite(ctx, last_write); + } else if (flush || ctx->out->len > OUTPUT_BUFFER_SIZE) { + OutputPluginWrite(ctx, false); + OutputPluginPrepareWrite(ctx, last_write); + } +} + + /* specify output plugin callbacks */ void _PG_output_plugin_init(OutputPluginCallbacks *cb) @@ -89,6 +112,7 @@ _PG_output_plugin_init(OutputPluginCallbacks *cb) cb->filter_by_origin_cb = pg_decode_origin_filter; cb->shutdown_cb = pg_decode_shutdown; cb->message_cb = pg_decode_message; + cb->caughtup_cb = pg_decode_caughtup; } static bool @@ -163,8 +187,8 @@ pg_decode_startup(LogicalDecodingContext * ctx, OutputPluginOptions *opt, ALLOCSET_DEFAULT_MINSIZE, ALLOCSET_DEFAULT_INITSIZE, ALLOCSET_DEFAULT_MAXSIZE); - data->allow_internal_basetypes = false; - data->allow_binary_basetypes = false; + data->allow_internal_basetypes = true; + data->allow_binary_basetypes = true; ctx->output_plugin_private = data; @@ -209,19 +233,19 @@ pg_decode_startup(LogicalDecodingContext * ctx, OutputPluginOptions *opt, if (params_format != 1) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("client sent startup parameters in format %d but we only support format 1", + MTM_ERRMSG("client sent startup parameters in format %d but we only support format 1", params_format))); if (data->client_min_proto_version > PG_LOGICAL_PROTO_VERSION_NUM) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("client sent min_proto_version=%d but we only support protocol %d or lower", + MTM_ERRMSG("client sent min_proto_version=%d but we only support protocol %d or lower", data->client_min_proto_version, PG_LOGICAL_PROTO_VERSION_NUM))); if (data->client_max_proto_version < PG_LOGICAL_PROTO_MIN_VERSION_NUM) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("client sent max_proto_version=%d but we only support protocol %d or higher", + MTM_ERRMSG("client sent max_proto_version=%d but we only support protocol %d or higher", data->client_max_proto_version, PG_LOGICAL_PROTO_MIN_VERSION_NUM))); /* @@ -253,7 +277,7 @@ pg_decode_startup(LogicalDecodingContext * ctx, OutputPluginOptions *opt, { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("client requested protocol %s but only \"json\" or \"native\" are supported", + MTM_ERRMSG("client requested protocol %s but only \"json\" or \"native\" are supported", data->client_protocol_format))); } @@ -266,7 +290,7 @@ pg_decode_startup(LogicalDecodingContext * ctx, OutputPluginOptions *opt, if (wanted_encoding == -1) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("unrecognised encoding name %s passed to expected_encoding", + MTM_ERRMSG("unrecognised encoding name %s passed to expected_encoding", data->client_expected_encoding))); if (opt->output_type == OUTPUT_PLUGIN_TEXTUAL_OUTPUT) @@ -279,7 +303,7 @@ pg_decode_startup(LogicalDecodingContext * ctx, OutputPluginOptions *opt, if (wanted_encoding != pg_get_client_encoding()) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("expected_encoding must be unset or match client_encoding in text protocols"))); + MTM_ERRMSG("expected_encoding must be unset or match client_encoding in text protocols"))); } else { @@ -291,7 +315,7 @@ pg_decode_startup(LogicalDecodingContext * ctx, OutputPluginOptions *opt, if (wanted_encoding != GetDatabaseEncoding()) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("encoding conversion for binary datum not supported yet"), + MTM_ERRMSG("encoding conversion for binary datum not supported yet"), errdetail("expected_encoding %s must be unset or match server_encoding %s", data->client_expected_encoding, GetDatabaseEncodingName()))); } @@ -336,7 +360,7 @@ pg_decode_startup(LogicalDecodingContext * ctx, OutputPluginOptions *opt, { ereport(DEBUG1, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("Cannot disable changeset forwarding on PostgreSQL 9.4"))); + MTM_ERRMSG("Cannot disable changeset forwarding on PostgreSQL 9.4"))); } } else if (data->client_forward_changesets_set @@ -384,7 +408,7 @@ pg_decode_begin_txn(LogicalDecodingContext *ctx, ReorderBufferTXN *txn) send_replication_origin &= txn->origin_id != InvalidRepOriginId; if (data->api) { - OutputPluginPrepareWrite(ctx, !send_replication_origin); + MtmOutputPluginPrepareWrite(ctx, !send_replication_origin, true); data->api->write_begin(ctx->out, data, txn); if (send_replication_origin) @@ -392,8 +416,8 @@ pg_decode_begin_txn(LogicalDecodingContext *ctx, ReorderBufferTXN *txn) char *origin; /* Message boundary */ - OutputPluginWrite(ctx, false); - OutputPluginPrepareWrite(ctx, true); + MtmOutputPluginWrite(ctx, false, false); + MtmOutputPluginPrepareWrite(ctx, true, false); /* * XXX: which behaviour we want here? @@ -408,10 +432,23 @@ pg_decode_begin_txn(LogicalDecodingContext *ctx, ReorderBufferTXN *txn) replorigin_by_oid(txn->origin_id, true, &origin)) data->api->write_origin(ctx->out, origin, txn->origin_lsn); } - OutputPluginWrite(ctx, true); + MtmOutputPluginWrite(ctx, true, false); } } +void +pg_decode_caughtup(LogicalDecodingContext *ctx) +{ + PGLogicalOutputData* data = (PGLogicalOutputData*)ctx->output_plugin_private; + + if (data->api) { + MtmOutputPluginPrepareWrite(ctx, true, true); + data->api->write_caughtup(ctx->out, data, ctx->reader->EndRecPtr); + MtmOutputPluginWrite(ctx, true, true); + } +} + + /* * COMMIT callback */ @@ -422,9 +459,9 @@ pg_decode_commit_txn(LogicalDecodingContext *ctx, ReorderBufferTXN *txn, PGLogicalOutputData* data = (PGLogicalOutputData*)ctx->output_plugin_private; if (data->api) { - OutputPluginPrepareWrite(ctx, true); + MtmOutputPluginPrepareWrite(ctx, true, true); data->api->write_commit(ctx->out, data, txn, commit_lsn); - OutputPluginWrite(ctx, true); + MtmOutputPluginWrite(ctx, true, true); } } @@ -445,38 +482,38 @@ pg_decode_change(LogicalDecodingContext *ctx, ReorderBufferTXN *txn, /* TODO: add caching (send only if changed) */ if (data->api->write_rel) { - OutputPluginPrepareWrite(ctx, false); + MtmOutputPluginPrepareWrite(ctx, false, false); data->api->write_rel(ctx->out, data, relation); - OutputPluginWrite(ctx, false); + MtmOutputPluginWrite(ctx, false, false); } /* Send the data */ switch (change->action) { case REORDER_BUFFER_CHANGE_INSERT: - OutputPluginPrepareWrite(ctx, true); + MtmOutputPluginPrepareWrite(ctx, true, false); data->api->write_insert(ctx->out, data, relation, &change->data.tp.newtuple->tuple); - OutputPluginWrite(ctx, true); + MtmOutputPluginWrite(ctx, true, false); break; case REORDER_BUFFER_CHANGE_UPDATE: { HeapTuple oldtuple = change->data.tp.oldtuple ? &change->data.tp.oldtuple->tuple : NULL; - OutputPluginPrepareWrite(ctx, true); + MtmOutputPluginPrepareWrite(ctx, true, false); data->api->write_update(ctx->out, data, relation, oldtuple, &change->data.tp.newtuple->tuple); - OutputPluginWrite(ctx, true); + MtmOutputPluginWrite(ctx, true, false); break; } case REORDER_BUFFER_CHANGE_DELETE: if (change->data.tp.oldtuple) { - OutputPluginPrepareWrite(ctx, true); + MtmOutputPluginPrepareWrite(ctx, true, false); data->api->write_delete(ctx->out, data, relation, &change->data.tp.oldtuple->tuple); - OutputPluginWrite(ctx, true); + MtmOutputPluginWrite(ctx, true, false); } else elog(DEBUG1, "didn't send DELETE change because of missing oldtuple"); @@ -519,9 +556,9 @@ pg_decode_message(LogicalDecodingContext *ctx, { PGLogicalOutputData* data = (PGLogicalOutputData*)ctx->output_plugin_private; - OutputPluginPrepareWrite(ctx, true); - data->api->write_message(ctx->out, prefix, sz, message); - OutputPluginWrite(ctx, true); + MtmOutputPluginPrepareWrite(ctx, true, !transactional); + data->api->write_message(ctx->out, ctx, prefix, sz, message); + MtmOutputPluginWrite(ctx, true, !transactional); } static void @@ -542,9 +579,9 @@ send_startup_message(LogicalDecodingContext *ctx, */ if (data->api) { - OutputPluginPrepareWrite(ctx, last_message); + MtmOutputPluginPrepareWrite(ctx, last_message, true); data->api->write_startup_message(ctx->out, msg); - OutputPluginWrite(ctx, last_message); + MtmOutputPluginWrite(ctx, last_message, true); } pfree(msg); diff --git a/contrib/mmts/pglogical_output.h b/contrib/mmts/pglogical_output.h index a874c40843..10cb424b45 100644 --- a/contrib/mmts/pglogical_output.h +++ b/contrib/mmts/pglogical_output.h @@ -102,4 +102,7 @@ typedef struct PGLogicalTupleData bool changed[MaxTupleAttributeNumber]; } PGLogicalTupleData; +extern void MtmOutputPluginWrite(LogicalDecodingContext *ctx, bool last_write, bool flush); +extern void MtmOutputPluginPrepareWrite(LogicalDecodingContext *ctx, bool last_write, bool flush); + #endif /* PG_LOGICAL_OUTPUT_H */ diff --git a/contrib/mmts/pglogical_proto.c b/contrib/mmts/pglogical_proto.c index abf986ee4d..d6ed754f55 100644 --- a/contrib/mmts/pglogical_proto.c +++ b/contrib/mmts/pglogical_proto.c @@ -34,6 +34,7 @@ #include "utils/syscache.h" #include "utils/timestamp.h" #include "utils/typcache.h" +#include "utils/snapmgr.h" #include "multimaster.h" #include "pglogical_relid_map.h" @@ -42,6 +43,8 @@ static int MtmTransactionRecords; static bool MtmIsFilteredTxn; static TransactionId MtmCurrentXid; static bool DDLInProgress = false; +static Oid MtmSenderTID; /* transaction identifier for WAL sender */ +static Oid MtmLastRelId; /* last relation ID sent to the receiver in this transaction */ static void pglogical_write_rel(StringInfo out, PGLogicalOutputData *data, Relation rel); @@ -59,12 +62,16 @@ static void pglogical_write_delete(StringInfo out, PGLogicalOutputData *data, Relation rel, HeapTuple oldtuple); static void pglogical_write_tuple(StringInfo out, PGLogicalOutputData *data, - Relation rel, HeapTuple tuple); + Relation rel, HeapTuple tuple); static char decide_datum_transfer(Form_pg_attribute att, Form_pg_type typclass, bool allow_internal_basetypes, bool allow_binary_basetypes); +static void pglogical_write_caughtup(StringInfo out, PGLogicalOutputData *data, + XLogRecPtr wal_end_ptr); + + /* * Write relation description to the output stream. */ @@ -76,6 +83,7 @@ pglogical_write_rel(StringInfo out, PGLogicalOutputData *data, Relation rel) const char *relname; uint8 relnamelen; Oid relid; + Oid tid; if (MtmIsFilteredTxn) { MTM_LOG2("%d: pglogical_write_message filtered", MyProcPid); @@ -88,23 +96,37 @@ pglogical_write_rel(StringInfo out, PGLogicalOutputData *data, Relation rel) } relid = RelationGetRelid(rel); + + if (relid == MtmLastRelId) { + return; + } + MtmLastRelId = relid; + pq_sendbyte(out, 'R'); /* sending RELATION */ pq_sendint(out, relid, sizeof relid); /* use Oid as relation identifier */ - nspname = get_namespace_name(rel->rd_rel->relnamespace); - if (nspname == NULL) - elog(ERROR, "cache lookup failed for namespace %u", + Assert(MtmSenderTID != InvalidOid); + tid = pglogical_relid_map_get(relid); + if (tid == MtmSenderTID) { /* this relation was already sent in this transaction */ + pq_sendbyte(out, 0); /* do not need to send relation namespace and name in this case */ + pq_sendbyte(out, 0); + } else { + pglogical_relid_map_put(relid, MtmSenderTID); + nspname = get_namespace_name(rel->rd_rel->relnamespace); + if (nspname == NULL) + elog(ERROR, "cache lookup failed for namespace %u", rel->rd_rel->relnamespace); - nspnamelen = strlen(nspname) + 1; - - relname = NameStr(rel->rd_rel->relname); - relnamelen = strlen(relname) + 1; - - pq_sendbyte(out, nspnamelen); /* schema name length */ - pq_sendbytes(out, nspname, nspnamelen); - - pq_sendbyte(out, relnamelen); /* table name length */ - pq_sendbytes(out, relname, relnamelen); + nspnamelen = strlen(nspname) + 1; + + relname = NameStr(rel->rd_rel->relname); + relnamelen = strlen(relname) + 1; + + pq_sendbyte(out, nspnamelen); /* schema name length */ + pq_sendbytes(out, nspname, nspnamelen); + + pq_sendbyte(out, relnamelen); /* table name length */ + pq_sendbytes(out, relname, relnamelen); + } } /* @@ -115,30 +137,79 @@ pglogical_write_begin(StringInfo out, PGLogicalOutputData *data, ReorderBufferTXN *txn) { bool isRecovery = MtmIsRecoveredNode(MtmReplicationNodeId); - csn_t csn = MtmTransactionSnapshot(txn->xid); + nodemask_t participantsMask; + csn_t csn = MtmDistributedTransactionSnapshot(txn->xid, MtmReplicationNodeId, &participantsMask); + + Assert(isRecovery || txn->origin_id == InvalidRepOriginId); if (!isRecovery && csn == INVALID_CSN) { MtmIsFilteredTxn = true; - MTM_LOG3("%d: pglogical_write_begin XID=%d filtered", MyProcPid, txn->xid); + MTM_LOG2("%d: pglogical_write_begin XID=%lld filtered", MyProcPid, (long64)txn->xid); } else { + if (++MtmSenderTID == InvalidOid) { + pglogical_relid_map_reset(); + MtmSenderTID += 1; /* skip InvalidOid */ + } + MtmLastRelId = InvalidOid; MtmCurrentXid = txn->xid; MtmIsFilteredTxn = false; - MTM_LOG3("%d: pglogical_write_begin XID=%d node=%d CSN=%ld recovery=%d restart_decoding_lsn=%lx first_lsn=%lx end_lsn=%lx confirmed_flush=%lx", - MyProcPid, txn->xid, MtmReplicationNodeId, csn, isRecovery, txn->restart_decoding_lsn, txn->first_lsn, txn->end_lsn, MyReplicationSlot->data.confirmed_flush); + MTM_LOG3("%d: pglogical_write_begin XID=%d node=%d CSN=%lld recovery=%d restart_decoding_lsn=%llx first_lsn=%llx end_lsn=%llx confirmed_flush=%llx", + MyProcPid, txn->xid, MtmReplicationNodeId, csn, isRecovery, + (long64)txn->restart_decoding_lsn, (long64)txn->first_lsn, (long64)txn->end_lsn, (long64)MyReplicationSlot->data.confirmed_flush); - MTM_LOG3("%d: pglogical_write_begin XID=%d sent", MyProcPid, txn->xid); + MTM_LOG2("%d: pglogical_write_begin XID=%lld sent", MyProcPid, (long64)txn->xid); pq_sendbyte(out, 'B'); /* BEGIN */ pq_sendint(out, MtmNodeId, 4); - pq_sendint(out, isRecovery ? InvalidTransactionId : txn->xid, 4); + pq_sendint64(out, isRecovery ? InvalidTransactionId : txn->xid); pq_sendint64(out, csn); + pq_sendint64(out, participantsMask); + MtmTransactionRecords = 0; } } + +static void pglogical_seq_nextval(StringInfo out, LogicalDecodingContext *ctx, MtmSeqPosition* pos) +{ + Relation rel = heap_open(pos->seqid, NoLock); + pglogical_write_rel(out, ctx->output_plugin_private, rel); + heap_close(rel, NoLock); + pq_sendbyte(out, 'N'); + pq_sendint64(out, pos->next); +} + + +static void pglogical_broadcast_table(StringInfo out, LogicalDecodingContext *ctx, MtmCopyRequest* copy) +{ + if (BIT_CHECK(copy->targetNodes, MtmReplicationNodeId-1)) { + HeapScanDesc scandesc; + HeapTuple tuple; + Relation rel; + + rel = heap_open(copy->sourceTable, ShareLock); + + pglogical_write_rel(out, ctx->output_plugin_private, rel); + + pq_sendbyte(out, '0'); + + scandesc = heap_beginscan(rel, GetTransactionSnapshot(), 0, NULL); + while ((tuple = heap_getnext(scandesc, ForwardScanDirection)) != NULL) + { + MtmOutputPluginPrepareWrite(ctx, false, false); + pq_sendbyte(out, 'I'); /* action INSERT */ + pglogical_write_tuple(out, ctx->output_plugin_private, rel, tuple); + MtmOutputPluginWrite(ctx, false, false); + } + heap_endscan(scandesc); + heap_close(rel, ShareLock); + } +} + static void -pglogical_write_message(StringInfo out, +pglogical_write_message(StringInfo out, LogicalDecodingContext *ctx, const char *prefix, Size sz, const char *message) { + MtmLastRelId = InvalidOid; switch (*prefix) { case 'L': if (MtmIsRecoveredNode(MtmReplicationNodeId)) { @@ -147,6 +218,11 @@ pglogical_write_message(StringInfo out, MTM_LOG1("Send deadlock message to node %d", MtmReplicationNodeId); } break; + case 'S': + if (MtmIsFilteredTxn) { + return; + } + break; case 'D': if (MtmIsFilteredTxn) { MTM_LOG2("%d: pglogical_write_message filtered", MyProcPid); @@ -161,6 +237,12 @@ pglogical_write_message(StringInfo out, * so no need to send that to replicas. */ return; + case 'B': + pglogical_broadcast_table(out, ctx, (MtmCopyRequest*)message); + return; + case 'N': + pglogical_seq_nextval(out, ctx, (MtmSeqPosition*)message); + return; } pq_sendbyte(out, 'M'); pq_sendbyte(out, *prefix); @@ -175,65 +257,66 @@ static void pglogical_write_commit(StringInfo out, PGLogicalOutputData *data, ReorderBufferTXN *txn, XLogRecPtr commit_lsn) { - uint8 flags = 0; + uint8 event = 0; - MTM_LOG3("%d: pglogical_write_commit XID=%d node=%d restart_decoding_lsn=%lx first_lsn=%lx end_lsn=%lx confirmed_flush=%lx", - MyProcPid, txn->xid, MtmReplicationNodeId, txn->restart_decoding_lsn, txn->first_lsn, txn->end_lsn, MyReplicationSlot->data.confirmed_flush); + MTM_LOG2("%d: pglogical_write_commit XID=%lld node=%d restart_decoding_lsn=%llx first_lsn=%llx end_lsn=%llx confirmed_flush=%llx", + MyProcPid, (long64)txn->xid, MtmReplicationNodeId, txn->restart_decoding_lsn, txn->first_lsn, txn->end_lsn, MyReplicationSlot->data.confirmed_flush); if (txn->xact_action == XLOG_XACT_COMMIT) - flags = PGLOGICAL_COMMIT; + event = PGLOGICAL_COMMIT; else if (txn->xact_action == XLOG_XACT_PREPARE) - flags = *txn->state_3pc ? PGLOGICAL_PRECOMMIT_PREPARED : PGLOGICAL_PREPARE; + event = *txn->state_3pc ? PGLOGICAL_PRECOMMIT_PREPARED : PGLOGICAL_PREPARE; else if (txn->xact_action == XLOG_XACT_COMMIT_PREPARED) - flags = PGLOGICAL_COMMIT_PREPARED; + event = PGLOGICAL_COMMIT_PREPARED; else if (txn->xact_action == XLOG_XACT_ABORT_PREPARED) - flags = PGLOGICAL_ABORT_PREPARED; + event = PGLOGICAL_ABORT_PREPARED; else Assert(false); - if (flags == PGLOGICAL_COMMIT || flags == PGLOGICAL_PREPARE) { + if (event == PGLOGICAL_COMMIT || event == PGLOGICAL_PREPARE) { /* COMMIT and PREPARE are preceded by BEGIN, which set MtmIsFilteredTxn flag */ if (MtmIsFilteredTxn) { Assert(MtmTransactionRecords == 0); return; } } else { - csn_t csn = MtmTransactionSnapshot(txn->xid); + nodemask_t partisipantsMask; bool isRecovery = MtmIsRecoveredNode(MtmReplicationNodeId); + csn_t csn = MtmDistributedTransactionSnapshot(txn->xid, MtmReplicationNodeId, &partisipantsMask); + + Assert(isRecovery || txn->origin_id == InvalidRepOriginId); - if (!isRecovery && csn == INVALID_CSN && (flags != PGLOGICAL_ABORT_PREPARED || txn->origin_id != InvalidRepOriginId)) + if (!isRecovery && csn == INVALID_CSN) { - if (flags == PGLOGICAL_ABORT_PREPARED) { - MTM_LOG1("Skip ABORT_PREPARED for transaction %s to node %d", txn->gid, MtmReplicationNodeId); + if (event == PGLOGICAL_ABORT_PREPARED) { + MTM_LOG1("Skip ABORT_PREPARED for transaction %s to node %d origin %d", txn->gid, MtmReplicationNodeId, txn->origin_id); } Assert(MtmTransactionRecords == 0); return; } if (isRecovery) { - MTM_LOG1("PGLOGICAL_SEND recover transaction: event=%d, gid=%s, xid=%d, commit_lsn=%lx, txn->end_lsn=%lx, xlog=%lx", - flags, txn->gid, txn->xid, commit_lsn, txn->end_lsn, GetXLogInsertRecPtr()); - } - if (flags == PGLOGICAL_ABORT_PREPARED) { - MTM_LOG1("Send ABORT_PREPARED for transaction %d (%s) end_lsn=%lx to node %d, isRecovery=%d, txn->origin_id=%d, csn=%ld", - txn->xid, txn->gid, txn->end_lsn, MtmReplicationNodeId, isRecovery, txn->origin_id, csn); + MTM_LOG2("PGLOGICAL_SEND recover transaction: event=%d, gid=%s, xid=%d, commit_lsn=%llx, txn->end_lsn=%llx, xlog=%llx", + event, txn->gid, txn->xid, commit_lsn, txn->end_lsn, GetXLogInsertRecPtr()); } - if (flags == PGLOGICAL_PRECOMMIT_PREPARED) { - MTM_LOG2("Send PGLOGICAL_PRECOMMIT_PREPARED for transaction %d (%s) end_lsn=%lx to node %d, isRecovery=%d, txn->origin_id=%d, csn=%ld", - txn->xid, txn->gid, txn->end_lsn, MtmReplicationNodeId, isRecovery, txn->origin_id, csn); + if (event == PGLOGICAL_ABORT_PREPARED) { + MTM_LOG1("Send ABORT_PREPARED for transaction %s (%llu) end_lsn=%llx to node %d, isRecovery=%d, txn->origin_id=%d, csn=%lld", + txn->gid, (long64)txn->xid, (long64)txn->end_lsn, MtmReplicationNodeId, isRecovery, txn->origin_id, csn); } - if (MtmRecoveryCaughtUp(MtmReplicationNodeId, txn->end_lsn)) { - MTM_LOG1("wal-sender complete recovery of node %d at LSN(commit %lx, end %lx, log %lx) in transaction %s event %d", MtmReplicationNodeId, commit_lsn, txn->end_lsn, GetXLogInsertRecPtr(), txn->gid, flags); - flags |= PGLOGICAL_CAUGHT_UP; + if (event == PGLOGICAL_PRECOMMIT_PREPARED) { + MTM_LOG2("Send PGLOGICAL_PRECOMMIT_PREPARED for transaction %s (%llu) end_lsn=%llx to node %d, isRecovery=%d, txn->origin_id=%d, csn=%lld", + txn->gid, (long64)txn->xid, (long64)txn->end_lsn, MtmReplicationNodeId, isRecovery, txn->origin_id, csn); } + MtmCheckRecoveryCaughtUp(MtmReplicationNodeId, txn->end_lsn); } pq_sendbyte(out, 'C'); /* sending COMMIT */ - MTM_LOG2("PGLOGICAL_SEND commit: event=%d, gid=%s, commit_lsn=%lx, txn->end_lsn=%lx, xlog=%lx", flags, txn->gid, commit_lsn, txn->end_lsn, GetXLogInsertRecPtr()); + MTM_LOG2("PGLOGICAL_SEND commit: event=%d, gid=%s, commit_lsn=%llx, txn->end_lsn=%llx, xlog=%llx", + event, txn->gid, (long64)commit_lsn, (long64)txn->end_lsn, (long64)GetXLogInsertRecPtr()); - /* send the flags field */ - pq_sendbyte(out, flags); + /* send the event field */ + pq_sendbyte(out, event); pq_sendbyte(out, MtmNodeId); /* send fixed fields */ @@ -268,6 +351,17 @@ pglogical_write_commit(StringInfo out, PGLogicalOutputData *data, MTM_TXTRACE(txn, "pglogical_write_commit Finish"); } +/* + * WAL sender caught up + */ +void pglogical_write_caughtup(StringInfo out, PGLogicalOutputData *data, + XLogRecPtr wal_end_ptr) +{ + if (MtmRecoveryCaughtUp(MtmReplicationNodeId, wal_end_ptr)) { + pq_sendbyte(out, 'Z'); /* sending CAUGHT-UP */ + } +} + /* * Write INSERT to the output stream. */ @@ -310,7 +404,7 @@ pglogical_write_update(StringInfo out, PGLogicalOutputData *data, MtmTransactionRecords += 1; - MTM_LOG3("%d: pglogical_write_update confirmed_flush=%lx", MyProcPid, MyReplicationSlot->data.confirmed_flush); + MTM_LOG3("%d: pglogical_write_update confirmed_flush=%llx", MyProcPid, (long64)MyReplicationSlot->data.confirmed_flush); pq_sendbyte(out, 'U'); /* action UPDATE */ /* FIXME support whole tuple (O tuple type) */ @@ -431,6 +525,7 @@ pglogical_write_tuple(StringInfo out, PGLogicalOutputData *data, transfer_type = decide_datum_transfer(att, typclass, data->allow_internal_basetypes, data->allow_binary_basetypes); + pq_sendbyte(out, transfer_type); switch (transfer_type) { @@ -561,6 +656,7 @@ pglogical_init_api(PGLogicalProtoType typ) res->write_insert = pglogical_write_insert; res->write_update = pglogical_write_update; res->write_delete = pglogical_write_delete; + res->write_caughtup = pglogical_write_caughtup; res->setup_hooks = MtmSetupReplicationHooks; res->write_startup_message = write_startup_message; return res; diff --git a/contrib/mmts/pglogical_proto.h b/contrib/mmts/pglogical_proto.h index a63a465f87..9e7d053162 100644 --- a/contrib/mmts/pglogical_proto.h +++ b/contrib/mmts/pglogical_proto.h @@ -21,7 +21,7 @@ typedef void (*pglogical_write_rel_fn)(StringInfo out, struct PGLogicalOutputDat typedef void (*pglogical_write_begin_fn)(StringInfo out, struct PGLogicalOutputData *data, ReorderBufferTXN *txn); -typedef void (*pglogical_write_message_fn)(StringInfo out, +typedef void (*pglogical_write_message_fn)(StringInfo out, LogicalDecodingContext *ctx, const char *prefix, Size sz, const char *message); typedef void (*pglogical_write_commit_fn)(StringInfo out, struct PGLogicalOutputData *data, ReorderBufferTXN *txn, XLogRecPtr commit_lsn); @@ -37,6 +37,9 @@ typedef void (*pglogical_write_update_fn)(StringInfo out, struct PGLogicalOutput typedef void (*pglogical_write_delete_fn)(StringInfo out, struct PGLogicalOutputData *data, Relation rel, HeapTuple oldtuple); +typedef void (*pglogical_write_caughtup_fn)(StringInfo out, struct PGLogicalOutputData *data, + XLogRecPtr wal_end_ptr); + typedef void (*write_startup_message_fn)(StringInfo out, List *msg); typedef void (*pglogical_setup_hooks_fn)(struct PGLogicalHooks* hooks); @@ -51,6 +54,7 @@ typedef struct PGLogicalProtoAPI pglogical_write_insert_fn write_insert; pglogical_write_update_fn write_update; pglogical_write_delete_fn write_delete; + pglogical_write_caughtup_fn write_caughtup; pglogical_setup_hooks_fn setup_hooks; write_startup_message_fn write_startup_message; } PGLogicalProtoAPI; diff --git a/contrib/mmts/pglogical_receiver.c b/contrib/mmts/pglogical_receiver.c index 58b565029e..61d0d9e973 100644 --- a/contrib/mmts/pglogical_receiver.c +++ b/contrib/mmts/pglogical_receiver.c @@ -14,11 +14,12 @@ */ /* Some general headers for custom bgworker facility */ + #include #include "postgres.h" #include "fmgr.h" #include "miscadmin.h" -#include "libpq-fe.h" +#include "pg_socket.h" #include "pqexpbuffer.h" #include "access/xact.h" #include "access/clog.h" @@ -37,9 +38,11 @@ #include "replication/origin.h" #include "utils/portal.h" #include "tcop/pquery.h" +#include "libpq-int.h" #include "multimaster.h" #include "spill.h" +#include "state.h" #define ERRCODE_DUPLICATE_OBJECT_STR "42710" #define RECEIVER_SUSPEND_TIMEOUT (1*USECS_PER_SEC) @@ -56,8 +59,8 @@ static bool receiver_sync_mode = true; /* We need sync mode to have up-to-date v static char worker_proc[BGW_MAXLEN]; /* Lastly written positions */ -static XLogRecPtr output_written_lsn = InvalidXLogRecPtr; -XLogRecPtr MtmSenderWalEnd; +static lsn_t output_written_lsn = INVALID_LSN; +lsn_t MtmSenderWalEnd; /* Stream functions */ static void fe_sendint64(int64 i, char *buf); @@ -91,18 +94,18 @@ sendFeedback(PGconn *conn, int64 now, int node_id) { char replybuf[1 + 8 + 8 + 8 + 8 + 1]; int len = 0; - XLogRecPtr output_applied_lsn = output_written_lsn; - XLogRecPtr output_flushed_lsn = MtmGetFlushPosition(node_id); + lsn_t output_applied_lsn = output_written_lsn; + lsn_t output_flushed_lsn = MtmGetFlushPosition(node_id); replybuf[len] = 'r'; len += 1; - fe_sendint64(output_written_lsn, &replybuf[len]); /* write */ + fe_sendint64(output_written_lsn, &replybuf[len]); /* write */ len += 8; fe_sendint64(output_flushed_lsn, &replybuf[len]); /* flush */ len += 8; fe_sendint64(output_applied_lsn, &replybuf[len]); /* apply */ len += 8; - fe_sendint64(now, &replybuf[len]); /* sendTime */ + fe_sendint64(now, &replybuf[len]); /* sendTime */ len += 8; /* No reply requested from server */ @@ -111,7 +114,7 @@ sendFeedback(PGconn *conn, int64 now, int node_id) if (PQputCopyData(conn, replybuf, len) <= 0 || PQflush(conn)) { - ereport(LOG, (errmsg("%s: could not send feedback packet: %s", + ereport(LOG, (MTM_ERRMSG("%s: could not send feedback packet: %s", worker_proc, PQerrorMessage(conn)))); return false; } @@ -194,11 +197,11 @@ feTimestampDifference(int64 start_time, int64 stop_time, } } -static char const* const MtmReplicationModeName[] = +static char const* const MtmReplicationModeName[] = { "exit", "recovered", /* recovery of node is completed so drop old slot and restart replication from the current position in WAL */ - "recovery", /* perform recorvery of the node by applying all data from theslot from specified point */ + "recovery", /* perform recorvery of the node by applying all data from theslot from specified point */ "create_new", /* destination node is recovered: drop old slot and restart from roveredLsn position */ "open_existed" /* normal mode: use existed slot or create new one and start receiving data from it from the rememered position */ }; @@ -214,8 +217,6 @@ pglogical_receiver_main(Datum main_arg) MtmReplicationMode mode; ByteBuffer buf; - RepOriginId originId; - char* originName; /* Buffer for COPY data */ char *copybuf = NULL; int spill_file = -1; @@ -223,6 +224,9 @@ pglogical_receiver_main(Datum main_arg) char *slotName; char* connString = psprintf("replication=database %s", Mtm->nodes[nodeId-1].con.connStr); static PortalData fakePortal; + int i; + + MtmBackgroundWorker = true; ByteBufferAlloc(&buf); @@ -242,7 +246,7 @@ pglogical_receiver_main(Datum main_arg) Mtm->nodes[nodeId-1].receiverStartTime = MtmGetSystemTime(); MtmReplicationNodeId = nodeId; - sprintf(worker_proc, "mtm_pglogical_receiver_%d_%d", MtmNodeId, nodeId); + sprintf(worker_proc, "mtm_pglogical_receiver_%d_%d", MtmNodeId, nodeId); /* We're now ready to receive signals */ BackgroundWorkerUnblockSignals(); @@ -253,67 +257,80 @@ pglogical_receiver_main(Datum main_arg) ActivePortal->status = PORTAL_ACTIVE; ActivePortal->sourceText = ""; - /* Create originid */ - StartTransactionCommand(); - originName = psprintf(MULTIMASTER_SLOT_PATTERN, nodeId); - originId = replorigin_by_name(originName, true); - if (originId == InvalidRepOriginId) { - originId = replorigin_create(originName); + /* + * Set proper restartLsn for all origins + */ + MtmLock(LW_EXCLUSIVE); + for (i = 0; i < Mtm->nAllNodes; i++) + { + char *originName; + RepOriginId originId; + + StartTransactionCommand(); + originName = psprintf(MULTIMASTER_SLOT_PATTERN, i + 1); + originId = replorigin_by_name(originName, true); + if (originId == InvalidRepOriginId) { + originId = replorigin_create(originName); + } + CommitTransactionCommand(); + if (Mtm->nodes[i].restartLSN == INVALID_LSN) + Mtm->nodes[i].restartLSN = replorigin_get_progress(originId, true); + Mtm->nodes[i].originId = originId; } - CommitTransactionCommand(); - Mtm->nodes[nodeId-1].originId = originId; - Mtm->nodes[nodeId-1].restartLSN = InvalidXLogRecPtr; + MtmUnlock(); /* This is main loop of logical replication. * In case of errors we will try to reestablish connection. * Also reconnet is forced when node is switch to recovery mode */ while (!got_sigterm) - { - int count; + { + int count; ConnStatusType status; - XLogRecPtr originStartPos = Mtm->nodes[nodeId-1].restartLSN; + lsn_t originStartPos; int timeline; - /* + /* * Determine when and how we should open replication slot. * Druing recovery we need to open only one replication slot from which node should receive all transactions. - * Slots at other nodes should be removed + * Slots at other nodes should be removed */ - mode = MtmGetReplicationMode(nodeId, &got_sigterm); - if (mode == REPLMODE_EXIT) - { + mode = MtmGetReplicationMode(nodeId, &got_sigterm); + MTM_LOG1("[STATE] Node %i: wal_receiver starts in %s mode", nodeId, MtmReplicationModeName[mode]); + + if (mode == REPLMODE_RECOVERY) + synchronous_twophase = false; + else + synchronous_twophase = true; + + if (mode == REPLMODE_EXIT) + { break; } timeline = Mtm->nodes[nodeId-1].timeline; count = Mtm->recoveryCount; - + /* Establish connection to remote server */ - conn = PQconnectdb_safe(connString); + conn = PQconnectdb_safe(connString, 0); status = PQstatus(conn); if (status != CONNECTION_OK) { - ereport(WARNING, (errmsg("%s: Could not establish connection to remote server (%s), status = %d, error = %s", + ereport(WARNING, (MTM_ERRMSG("%s: Could not establish connection to remote server (%s), status = %d, error = %s", worker_proc, connString, status, PQerrorMessage(conn)))); goto OnError; } - + query = createPQExpBuffer(); - if ((mode == REPLMODE_OPEN_EXISTED && timeline != Mtm->nodes[nodeId-1].timeline) - || mode == REPLMODE_CREATE_NEW) - { /* recreate slot */ - elog(LOG, "Recreate replication slot %s", slotName); - appendPQExpBuffer(query, "DROP_REPLICATION_SLOT \"%s\"", slotName); - res = PQexec(conn, query->data); - PQclear(res); - resetPQExpBuffer(query); - timeline = Mtm->nodes[nodeId-1].timeline; - } - /* My original assumption was that we can perfrom recovery only from existed slot, - * but unfortunately looks like slots can "disapear" together with WAL-sender. - * So let's try to recreate slot always. */ - /* if (mode != REPLMODE_REPLICATION) */ - { + + /* Start logical replication at specified position */ + originStartPos = replorigin_get_progress(Mtm->nodes[nodeId-1].originId, false); + if (originStartPos == INVALID_LSN || Mtm->nodes[nodeId-1].manualRecovery) { + /* + * We are just creating new replication slot. + * It is assumed that state of local and remote nodes is the same at this moment. + * They are either empty, either new node is synchronized using base_backup. + * So we assume that LSNs are the same for local and remote node + */ appendPQExpBuffer(query, "CREATE_REPLICATION_SLOT \"%s\" LOGICAL \"%s\"", slotName, MULTIMASTER_NAME); res = PQexec(conn, query->data); if (PQresultStatus(res) != PGRES_TUPLES_OK) @@ -322,41 +339,26 @@ pglogical_receiver_main(Datum main_arg) if (!sqlstate || strcmp(sqlstate, ERRCODE_DUPLICATE_OBJECT_STR) != 0) { PQclear(res); - ereport(ERROR, (errmsg("%s: Could not create logical slot", - worker_proc))); - + ereport(ERROR, (MTM_ERRMSG("%s: Could not create logical slot", worker_proc))); + goto OnError; } } PQclear(res); resetPQExpBuffer(query); - } - - /* Start logical replication at specified position */ - if (originStartPos == InvalidXLogRecPtr) { - originStartPos = replorigin_get_progress(originId, false); - if (originStartPos == InvalidXLogRecPtr) { - /* - * We are just creating new replication slot. - * It is assumed that state of local and remote nodes is the same at this moment. - * Them are either empty, either new node is synchronized using base_backup. - * So we assume that LSNs are the same for local and remote node - */ - originStartPos = Mtm->status == MTM_RECOVERY && Mtm->donorNodeId == nodeId ? GetXLogInsertRecPtr() : InvalidXLogRecPtr; - MTM_LOG1("Start logical receiver at position %lx from node %d", originStartPos, nodeId); - } else { - if (Mtm->nodes[nodeId-1].restartLSN < originStartPos) { - MTM_LOG2("[restartlsn] node %d: %lx -> %lx (pglogical_receiver_mains)", nodeId, Mtm->nodes[nodeId-1].restartLSN, originStartPos); - Mtm->nodes[nodeId-1].restartLSN = originStartPos; - } - MTM_LOG1("Restart logical receiver at position %lx with origin=%d from node %d", originStartPos, originId, nodeId); + Mtm->nodes[nodeId-1].manualRecovery = false; + } else { + if (Mtm->nodes[nodeId-1].restartLSN < originStartPos) { + MTM_LOG1("Advance restartLSN for node %d: from %llx to %llx (pglogical_receiver_main)", nodeId, Mtm->nodes[nodeId-1].restartLSN, originStartPos); + Mtm->nodes[nodeId-1].restartLSN = originStartPos; } - } - - MTM_LOG1("Start replication on slot %s from node %d at position %lx, mode %s, recovered lsn %lx", + MTM_LOG1("Restart logical receiver at position %llx from node %d", originStartPos, nodeId); + } + + MTM_LOG1("Start replication on slot %s from node %d at position %llx, mode %s, recovered lsn %llx", slotName, nodeId, originStartPos, MtmReplicationModeName[mode], Mtm->recoveredLSN); - appendPQExpBuffer(query, "START_REPLICATION SLOT \"%s\" LOGICAL %x/%x (\"startup_params_format\" '1', \"max_proto_version\" '%d', \"min_proto_version\" '%d', \"forward_changesets\" '1', \"mtm_replication_mode\" '%s', \"mtm_restart_pos\" '%lx', \"mtm_recovered_pos\" '%lx')", + appendPQExpBuffer(query, "START_REPLICATION SLOT \"%s\" LOGICAL %x/%x (\"startup_params_format\" '1', \"max_proto_version\" '%d', \"min_proto_version\" '%d', \"forward_changesets\" '1', \"mtm_replication_mode\" '%s', \"mtm_restart_pos\" '%llx', \"mtm_recovered_pos\" '%llx')", slotName, (uint32) (originStartPos >> 32), (uint32) originStartPos, @@ -369,16 +371,27 @@ pglogical_receiver_main(Datum main_arg) res = PQexec(conn, query->data); if (PQresultStatus(res) != PGRES_COPY_BOTH) { - PQclear(res); - ereport(WARNING, (errmsg("%s: Could not start logical replication", - worker_proc))); + // int i, n_deleted_slots = 0; + + elog(WARNING, "Can't find slot on node%d. Shutting down receiver. %s", nodeId, PQresultErrorMessage(res)); goto OnError; + // Mtm->nodes[nodeId-1].slotDeleted = true; + // for (i = 0; i < Mtm->nAllNodes; i++) + // { + // if (Mtm->nodes[i].slotDeleted) + // n_deleted_slots++; + // } + // if (n_deleted_slots == Mtm->nAllNodes - 1) + // { + // elog(FATAL, "All neighbour nopes have no replication slot for us. Exiting."); + // } + // proc_exit(1); } PQclear(res); resetPQExpBuffer(query); - - MtmReceiverStarted(nodeId); - + + MtmStateProcessNeighborEvent(nodeId, MTM_NEIGHBOR_WAL_RECEIVER_START); + while (!got_sigterm) { int rc, hdr_len; @@ -393,55 +406,55 @@ pglogical_receiver_main(Datum main_arg) /* Process config file */ ProcessConfigFile(PGC_SIGHUP); got_sighup = false; - ereport(LOG, (errmsg("%s: processed SIGHUP", worker_proc))); + ereport(LOG, (MTM_ERRMSG("%s: processed SIGHUP", worker_proc))); } - + if (got_sigterm) { /* Simply exit */ - ereport(LOG, (errmsg("%s: processed SIGTERM", worker_proc))); + ereport(LOG, (MTM_ERRMSG("%s: processed SIGTERM", worker_proc))); proc_exit(0); } - + /* Emergency bailout if postmaster has died */ if (rc & WL_POSTMASTER_DEATH) proc_exit(1); - - if (Mtm->status == MTM_OFFLINE || (Mtm->status == MTM_RECOVERY && Mtm->recoverySlot != nodeId)) + + if (Mtm->status == MTM_DISABLED || (Mtm->status == MTM_RECOVERY && Mtm->recoverySlot != nodeId)) { - ereport(LOG, (errmsg("%s: restart WAL receiver because node was switched to %s mode", worker_proc, MtmNodeStatusMnem[Mtm->status]))); + ereport(LOG, (MTM_ERRMSG("%s: restart WAL receiver because node was switched to %s mode", worker_proc, MtmNodeStatusMnem[Mtm->status]))); break; } - if (count != Mtm->recoveryCount) { - ereport(LOG, (errmsg("%s: restart WAL receiver because node was recovered", worker_proc))); + if (count != Mtm->recoveryCount) { + ereport(LOG, (MTM_ERRMSG("%s: restart WAL receiver because node was recovered", worker_proc))); break; } - + if (timeline != Mtm->nodes[nodeId-1].timeline) { - ereport(LOG, (errmsg("%s: restart WAL receiver because node %d timeline is changed", worker_proc, nodeId))); - break; - } - + ereport(LOG, (MTM_ERRMSG("%s: restart WAL receiver because node %d timeline is changed", worker_proc, nodeId))); + break; + } + /* * Receive data. */ while (true) { - XLogRecPtr walEnd; + lsn_t walEnd; char* stmt; - + /* Some cleanup */ if (copybuf != NULL) { PQfreemem(copybuf); copybuf = NULL; } - + rc = PQgetCopyData(conn, ©buf, 1); if (rc <= 0) { break; } - + /* * Check message received from server: * - 'k', keepalive message @@ -451,7 +464,7 @@ pglogical_receiver_main(Datum main_arg) { int pos; bool replyRequested; - + /* * Parse the keepalive message, enclosed in the CopyData message. * We just check if the server requested a reply, and ignore the @@ -468,7 +481,7 @@ pglogical_receiver_main(Datum main_arg) pos += 8; /* skip sendTime */ if (rc < pos + 1) { - ereport(LOG, (errmsg("%s: streaming header too small: %d", + ereport(LOG, (MTM_ERRMSG("%s: streaming header too small: %d", worker_proc, rc))); goto OnError; } @@ -488,8 +501,8 @@ pglogical_receiver_main(Datum main_arg) { int64 now = feGetCurrentTimestamp(); - /* Leave is feedback is not sent properly */ MtmUpdateLsnMapping(nodeId, walEnd); + /* Leave if feedback is not sent properly */ if (!sendFeedback(conn, now, nodeId)) { goto OnError; } @@ -498,7 +511,7 @@ pglogical_receiver_main(Datum main_arg) } else if (copybuf[0] != 'w') { - ereport(LOG, (errmsg("%s: Incorrect streaming header", + ereport(LOG, (MTM_ERRMSG("%s: Incorrect streaming header", worker_proc))); goto OnError; } @@ -514,22 +527,16 @@ pglogical_receiver_main(Datum main_arg) /* WAL position of the end of this message at WAL sender */ MtmSenderWalEnd = walEnd; - /*ereport(LOG, (errmsg("%s: receive message %c length %d", worker_proc, copybuf[hdr_len], rc - hdr_len)));*/ + /*ereport(LOG, (MTM_ERRMSG("%s: receive message %c length %d", worker_proc, copybuf[hdr_len], rc - hdr_len)));*/ Assert(rc >= hdr_len); if (rc > hdr_len) { + int msg_len = rc - hdr_len; stmt = copybuf + hdr_len; - if (mode == REPLMODE_RECOVERED) { - if (stmt[0] != 'B') { - output_written_lsn = Max(walEnd, output_written_lsn); - continue; - } - mode = REPLMODE_OPEN_EXISTED; - } - MTM_LOG3("%ld: Receive message %c from node %d", MtmGetSystemTime(), stmt[0], nodeId); - if (buf.used >= MtmTransSpillThreshold*MB) { + MTM_LOG3("Receive message %c from node %d", stmt[0], nodeId); + if (buf.used + msg_len + 1 >= MtmTransSpillThreshold*MB) { if (spill_file < 0) { int file_id; spill_file = MtmCreateSpillFile(nodeId, &file_id); @@ -543,15 +550,20 @@ pglogical_receiver_main(Datum main_arg) MtmSpillToFile(spill_file, buf.data, buf.used); ByteBufferReset(&buf); } - if (stmt[0] == 'M' && (stmt[1] == 'L' || stmt[1] == 'A')) { + if (stmt[0] == 'Z' || (stmt[0] == 'M' && (stmt[1] == 'L' || stmt[1] == 'A' || stmt[1] == 'C'))) { MTM_LOG3("Process '%c' message from %d", stmt[1], nodeId); - MtmExecutor(stmt, rc - hdr_len); - } else { - ByteBufferAppend(&buf, stmt, rc - hdr_len); + if (stmt[0] == 'M' && stmt[1] == 'C') { /* concurrent DDL should be executed by parallel workers */ + MtmExecute(stmt, msg_len); + } else { + MtmExecutor(stmt, msg_len); /* all other messages can be processed by receiver itself */ + } + } else { + ByteBufferAppend(&buf, stmt, msg_len); if (stmt[0] == 'C') /* commit */ { - if (!MtmFilterTransaction(stmt, rc - hdr_len)) { - if (spill_file >= 0) { + if (!MtmFilterTransaction(stmt, msg_len)) + { + if (spill_file >= 0) { ByteBufferAppend(&buf, ")", 1); pq_sendbyte(&spill_info, '('); pq_sendint(&spill_info, buf.used, 4); @@ -560,21 +572,24 @@ pglogical_receiver_main(Datum main_arg) MtmExecute(spill_info.data, spill_info.len); spill_file = -1; resetStringInfo(&spill_info); - } else { - if (MtmPreserveCommitOrder && buf.used == rc - hdr_len) { + } else { + if (MtmPreserveCommitOrder && buf.used == msg_len) { /* Perform commit-prepared and rollback-prepared requested directly in receiver */ timestamp_t stop, start = MtmGetSystemTime(); MtmExecutor(buf.data, buf.used); stop = MtmGetSystemTime(); - if (stop - start > USECS_PER_SEC) { - elog(WARNING, "Commit of prepared transaction takes %ld usec, flags=%x", stop - start, stmt[1]); + if (stop - start > USECS_PER_SEC) { + elog(WARNING, "Commit of prepared transaction takes %lld usec, flags=%x", stop - start, stmt[1]); } } else { + /* all other commits should be applied in place */ + // Assert(stmt[1] == PGLOGICAL_PREPARE || stmt[1] == PGLOGICAL_COMMIT || stmt[1] == PGLOGICAL_PRECOMMIT_PREPARED); MtmExecute(buf.data, buf.used); } } - } else if (spill_file >= 0) { + } else if (spill_file >= 0) { MtmCloseSpillFile(spill_file); + resetStringInfo(&spill_info); spill_file = -1; } ByteBufferReset(&buf); @@ -624,13 +639,12 @@ pglogical_receiver_main(Datum main_arg) timeout.tv_usec = usecs; timeoutptr = &timeout; - r = select(PQsocket(conn) + 1, &input_mask, NULL, NULL, timeoutptr); + r = pg_select(PQsocket(conn) + 1, &input_mask, NULL, NULL, timeoutptr, conn->isRsocket); if (r == 0) { int64 now = feGetCurrentTimestamp(); - - /* Leave is feedback is not sent properly */ - MtmUpdateLsnMapping(nodeId, InvalidXLogRecPtr); + + MtmUpdateLsnMapping(nodeId, INVALID_LSN); sendFeedback(conn, now, nodeId); } else if (r < 0 && errno == EINTR) @@ -644,16 +658,16 @@ pglogical_receiver_main(Datum main_arg) } else if (r < 0) { - ereport(LOG, (errmsg("%s: Incorrect status received.", + ereport(LOG, (MTM_ERRMSG("%s: Incorrect status received.", worker_proc))); - + goto OnError; } /* Else there is actually data on the socket */ if (PQconsumeInput(conn) == 0) { - ereport(LOG, (errmsg("%s: Data remaining on the socket.", + ereport(LOG, (MTM_ERRMSG("%s: Data remaining on the socket.", worker_proc))); goto OnError; } @@ -663,7 +677,7 @@ pglogical_receiver_main(Datum main_arg) /* End of copy stream */ if (rc == -1) { - ereport(LOG, (errmsg("%s: COPY Stream has abruptly ended...", + ereport(LOG, (MTM_ERRMSG("%s: COPY Stream has abruptly ended...", worker_proc))); goto OnError; } @@ -671,7 +685,7 @@ pglogical_receiver_main(Datum main_arg) /* Failure when reading copy stream, leave */ if (rc == -2) { - ereport(LOG, (errmsg("%s: Failure while receiving changes...", + ereport(LOG, (MTM_ERRMSG("%s: Failure while receiving changes...", worker_proc))); goto OnError; } @@ -682,9 +696,9 @@ pglogical_receiver_main(Datum main_arg) OnError: PQfinish(conn); MtmReleaseRecoverySlot(nodeId); - MtmSleep(RECEIVER_SUSPEND_TIMEOUT); + MtmSleep(RECEIVER_SUSPEND_TIMEOUT); } - ByteBufferFree(&buf); + ByteBufferFree(&buf); /* Restart this bgworker */ proc_exit(1); } @@ -695,18 +709,20 @@ void MtmStartReceiver(int nodeId, bool dynamic) MemoryContext oldContext = MemoryContextSwitchTo(TopMemoryContext); MemSet(&worker, 0, sizeof(BackgroundWorker)); - worker.bgw_flags = BGWORKER_SHMEM_ACCESS | BGWORKER_BACKEND_DATABASE_CONNECTION; + worker.bgw_flags = BGWORKER_SHMEM_ACCESS | BGWORKER_BACKEND_DATABASE_CONNECTION; worker.bgw_start_time = BgWorkerStart_ConsistentState; - worker.bgw_main = pglogical_receiver_main; + worker.bgw_main = pglogical_receiver_main; worker.bgw_restart_time = MULTIMASTER_BGW_RESTART_TIMEOUT; - + /* Worker parameter and registration */ snprintf(worker.bgw_name, BGW_MAXLEN, "mtm_pglogical_receiver_%d_%d", MtmNodeId, nodeId); - + worker.bgw_main_arg = Int32GetDatum(nodeId); - if (dynamic) { + if (dynamic) { BackgroundWorkerHandle *handle; - RegisterDynamicBackgroundWorker(&worker, &handle); + if (!RegisterDynamicBackgroundWorker(&worker, &handle)) { + elog(WARNING, "Failed to start background worker, please increase max_worker_processes configuration parameter (current value is %d)", max_worker_processes); + } } else { RegisterBackgroundWorker(&worker); } @@ -716,11 +732,10 @@ void MtmStartReceiver(int nodeId, bool dynamic) void MtmStartReceivers(void) { - int i; + int i; for (i = 0; i < MtmNodes; i++) { - if (i+1 != MtmNodeId) { + if (i+1 != MtmNodeId) { MtmStartReceiver(i+1, false); - } - } + } + } } - diff --git a/contrib/mmts/pglogical_relid_map.c b/contrib/mmts/pglogical_relid_map.c index a492649b29..fe61ae1726 100644 --- a/contrib/mmts/pglogical_relid_map.c +++ b/contrib/mmts/pglogical_relid_map.c @@ -20,29 +20,19 @@ static void pglogical_relid_map_init(void) { HASHCTL ctl; - int hash_flags = HASH_ELEM; - Assert(relid_map == NULL); MemSet(&ctl, 0, sizeof(ctl)); ctl.keysize = sizeof(Oid); ctl.entrysize = sizeof(PGLRelidMapEntry); - -#if PG_VERSION_NUM >= 90500 - hash_flags |= HASH_BLOBS; -#else - ctl.hash = tag_hash; - hash_flags |= HASH_FUNCTION; -#endif - - relid_map = hash_create("pglogical_relid_map", PGL_INIT_RELID_MAP_SIZE, &ctl, hash_flags); + relid_map = hash_create("pglogical_relid_map", PGL_INIT_RELID_MAP_SIZE, &ctl, HASH_ELEM | HASH_BLOBS); Assert(relid_map != NULL); } Oid pglogical_relid_map_get(Oid relid) { - if (relid_map != NULL) { + if (relid_map != NULL) { PGLRelidMapEntry* entry = (PGLRelidMapEntry*)hash_search(relid_map, &relid, HASH_FIND, NULL); return entry ? entry->local_relid : InvalidOid; } @@ -51,16 +41,24 @@ Oid pglogical_relid_map_get(Oid relid) bool pglogical_relid_map_put(Oid remote_relid, Oid local_relid) { - bool found; + bool found; PGLRelidMapEntry* entry; - if (relid_map == NULL) { + if (relid_map == NULL) { pglogical_relid_map_init(); } entry = hash_search(relid_map, &remote_relid, HASH_ENTER, &found); if (found) { - Assert(entry->local_relid == local_relid); - return false; + entry->local_relid = local_relid; + return false; } entry->local_relid = local_relid; return true; } + +void pglogical_relid_map_reset(void) +{ + if (relid_map != NULL) { + hash_destroy(relid_map); + relid_map = NULL; + } +} diff --git a/contrib/mmts/pglogical_relid_map.h b/contrib/mmts/pglogical_relid_map.h index d8f267c96e..4ccb92f6b7 100644 --- a/contrib/mmts/pglogical_relid_map.h +++ b/contrib/mmts/pglogical_relid_map.h @@ -10,5 +10,5 @@ typedef struct PGLRelidMapEntry { extern Oid pglogical_relid_map_get(Oid relid); extern bool pglogical_relid_map_put(Oid remote_relid, Oid local_relid); - +extern void pglogical_relid_map_reset(void); #endif diff --git a/contrib/mmts/postgresql.conf.template b/contrib/mmts/postgresql.conf.template new file mode 100644 index 0000000000..3c527872a5 --- /dev/null +++ b/contrib/mmts/postgresql.conf.template @@ -0,0 +1,674 @@ +# ----------------------------- +# PostgreSQL configuration file +# ----------------------------- +# +# This file consists of lines of the form: +# +# name = value +# +# (The "=" is optional.) Whitespace may be used. Comments are introduced with +# "#" anywhere on a line. The complete list of parameter names and allowed +# values can be found in the PostgreSQL documentation. +# +# The commented-out settings shown in this file represent the default values. +# Re-commenting a setting is NOT sufficient to revert it to the default value; +# you need to reload the server. +# +# This file is read on server startup and when the server receives a SIGHUP +# signal. If you edit the file on a running system, you have to SIGHUP the +# server for the changes to take effect, run "pg_ctl reload", or execute +# "SELECT pg_reload_conf()". Some parameters, which are marked below, +# require a server shutdown and restart to take effect. +# +# Any parameter can also be given as a command-line option to the server, e.g., +# "postgres -c log_connections=on". Some parameters can be changed at run time +# with the "SET" SQL command. +# +# Memory units: kB = kilobytes Time units: ms = milliseconds +# MB = megabytes s = seconds +# GB = gigabytes min = minutes +# TB = terabytes h = hours +# d = days + + +#------------------------------------------------------------------------------ +# FILE LOCATIONS +#------------------------------------------------------------------------------ + +# The default values of these variables are driven from the -D command-line +# option or PGDATA environment variable, represented here as ConfigDir. + +#data_directory = 'ConfigDir' # use data in another directory + # (change requires restart) +#hba_file = 'ConfigDir/pg_hba.conf' # host-based authentication file + # (change requires restart) +#ident_file = 'ConfigDir/pg_ident.conf' # ident configuration file + # (change requires restart) + +# If external_pid_file is not explicitly set, no extra PID file is written. +#external_pid_file = '' # write an extra PID file + # (change requires restart) + + +#------------------------------------------------------------------------------ +# CONNECTIONS AND AUTHENTICATION +#------------------------------------------------------------------------------ + +# - Connection Settings - + +#listen_addresses = 'localhost' # what IP address(es) to listen on; + # comma-separated list of addresses; + # defaults to 'localhost'; use '*' for all + # (change requires restart) +#port = 5432 # (change requires restart) +max_connections = 100 # (change requires restart) +#superuser_reserved_connections = 3 # (change requires restart) +#unix_socket_directories = '/tmp' # comma-separated list of directories + # (change requires restart) +#unix_socket_group = '' # (change requires restart) +#unix_socket_permissions = 0777 # begin with 0 to use octal notation + # (change requires restart) +#bonjour = off # advertise server via Bonjour + # (change requires restart) +#bonjour_name = '' # defaults to the computer name + # (change requires restart) + +# - Security and Authentication - + +#authentication_timeout = 1min # 1s-600s +#ssl = off +#ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers +#ssl_prefer_server_ciphers = on +#ssl_ecdh_curve = 'prime256v1' +#ssl_cert_file = 'server.crt' +#ssl_key_file = 'server.key' +#ssl_ca_file = '' +#ssl_crl_file = '' +#password_encryption = md5 # md5 or plain +#db_user_namespace = off +#row_security = on + +# GSSAPI using Kerberos +#krb_server_keyfile = '' +#krb_caseins_users = off + +# - TCP Keepalives - +# see "man 7 tcp" for details + +#tcp_keepalives_idle = 0 # TCP_KEEPIDLE, in seconds; + # 0 selects the system default +#tcp_keepalives_interval = 0 # TCP_KEEPINTVL, in seconds; + # 0 selects the system default +#tcp_keepalives_count = 0 # TCP_KEEPCNT; + # 0 selects the system default + + +#------------------------------------------------------------------------------ +# RESOURCE USAGE (except WAL) +#------------------------------------------------------------------------------ + +# - Memory - + +shared_buffers = 128MB # min 128kB + # (change requires restart) +#huge_pages = try # on, off, or try + # (change requires restart) +#temp_buffers = 8MB # min 800kB +#max_prepared_transactions = 0 # zero disables the feature + # (change requires restart) +# Caution: it is not advisable to set max_prepared_transactions nonzero unless +# you actively intend to use prepared transactions. +#work_mem = 4MB # min 64kB +#maintenance_work_mem = 64MB # min 1MB +#replacement_sort_tuples = 150000 # limits use of replacement selection sort +#autovacuum_work_mem = -1 # min 1MB, or -1 to use maintenance_work_mem +#max_stack_depth = 2MB # min 100kB +dynamic_shared_memory_type = posix # the default is the first option + # supported by the operating system: + # posix + # sysv + # windows + # mmap + # use none to disable dynamic shared memory + +# - Disk - + +#temp_file_limit = -1 # limits per-process temp file space + # in kB, or -1 for no limit + +# - Kernel Resource Usage - + +#max_files_per_process = 1000 # min 25 + # (change requires restart) +#shared_preload_libraries = '' # (change requires restart) + +# - Cost-Based Vacuum Delay - + +#vacuum_cost_delay = 0 # 0-100 milliseconds +#vacuum_cost_page_hit = 1 # 0-10000 credits +#vacuum_cost_page_miss = 10 # 0-10000 credits +#vacuum_cost_page_dirty = 20 # 0-10000 credits +#vacuum_cost_limit = 200 # 1-10000 credits + +# - Background Writer - + +#bgwriter_delay = 200ms # 10-10000ms between rounds +#bgwriter_lru_maxpages = 100 # 0-1000 max buffers written/round +#bgwriter_lru_multiplier = 2.0 # 0-10.0 multiplier on buffers scanned/round +#bgwriter_flush_after = 512kB # measured in pages, 0 disables + +# - Asynchronous Behavior - + +#effective_io_concurrency = 1 # 1-1000; 0 disables prefetching +#max_worker_processes = 8 # (change requires restart) +#max_parallel_workers_per_gather = 2 # taken from max_worker_processes +#max_parallel_workers = 8 # total maximum number of worker_processes +#max_logical_replication_workers = 4 # taken from max_worker_processes +#old_snapshot_threshold = -1 # 1min-60d; -1 disables; 0 is immediate + # (change requires restart) +#backend_flush_after = 0 # measured in pages, 0 disables + + +#------------------------------------------------------------------------------ +# WRITE AHEAD LOG +#------------------------------------------------------------------------------ + +# - Settings - + +#wal_level = replica # minimal, replica, or logical + # (change requires restart) +#fsync = on # flush data to disk for crash safety + # (turning this off can cause + # unrecoverable data corruption) +#synchronous_commit = on # synchronization level; + # off, local, remote_write, remote_apply, or on +#wal_sync_method = fsync # the default is the first option + # supported by the operating system: + # open_datasync + # fdatasync (default on Linux) + # fsync + # fsync_writethrough + # open_sync +#full_page_writes = on # recover from partial page writes +#wal_compression = off # enable compression of full-page writes +#wal_log_hints = off # also do full page writes of non-critical updates + # (change requires restart) +#wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers + # (change requires restart) +#wal_writer_delay = 200ms # 1-10000 milliseconds +#wal_writer_flush_after = 1MB # measured in pages, 0 disables + +#commit_delay = 0 # range 0-100000, in microseconds +#commit_siblings = 5 # range 1-1000 + +# - Checkpoints - + +#checkpoint_timeout = 5min # range 30s-1d +#max_wal_size = 1GB +#min_wal_size = 80MB +#checkpoint_completion_target = 0.5 # checkpoint target duration, 0.0 - 1.0 +#checkpoint_flush_after = 256kB # measured in pages, 0 disables +#checkpoint_warning = 30s # 0 disables + +# - Archiving - + +#archive_mode = off # enables archiving; off, on, or always + # (change requires restart) +#archive_command = '' # command to use to archive a logfile segment + # placeholders: %p = path of file to archive + # %f = file name only + # e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f' +#archive_timeout = 0 # force a logfile segment switch after this + # number of seconds; 0 disables + + +#------------------------------------------------------------------------------ +# REPLICATION +#------------------------------------------------------------------------------ + +# - Sending Server(s) - + +# Set these on the master and on any standby that will send replication data. + +#max_wal_senders = 10 # max number of walsender processes + # (change requires restart) +#wal_keep_segments = 0 # in logfile segments, 16MB each; 0 disables +#wal_sender_timeout = 60s # in milliseconds; 0 disables + +#max_replication_slots = 10 # max number of replication slots + # (change requires restart) +#track_commit_timestamp = off # collect timestamp of transaction commit + # (change requires restart) + +# - Master Server - + +# These settings are ignored on a standby server. + +#synchronous_standby_names = '' # standby servers that provide sync rep + # method to choose sync standbys, number of sync standbys + # and comma-separated list of application_name + # from standby(s); '*' = all +#vacuum_defer_cleanup_age = 0 # number of xacts by which cleanup is delayed + +# - Standby Servers - + +# These settings are ignored on a master server. + +#hot_standby = off # "on" allows queries during recovery + # (change requires restart) +#max_standby_archive_delay = 30s # max delay before canceling queries + # when reading WAL from archive; + # -1 allows indefinite delay +#max_standby_streaming_delay = 30s # max delay before canceling queries + # when reading streaming WAL; + # -1 allows indefinite delay +#wal_receiver_status_interval = 10s # send replies at least this often + # 0 disables +#hot_standby_feedback = off # send info from standby to prevent + # query conflicts +#wal_receiver_timeout = 60s # time that receiver waits for + # communication from master + # in milliseconds; 0 disables +#wal_retrieve_retry_interval = 5s # time to wait before retrying to + # retrieve WAL after a failed attempt + + +#------------------------------------------------------------------------------ +# QUERY TUNING +#------------------------------------------------------------------------------ + +# - Planner Method Configuration - + +#enable_bitmapscan = on +#enable_hashagg = on +#enable_hashjoin = on +#enable_indexscan = on +#enable_indexonlyscan = on +#enable_material = on +#enable_mergejoin = on +#enable_nestloop = on +#enable_seqscan = on +#enable_sort = on +#enable_tidscan = on + +# - Planner Cost Constants - + +#seq_page_cost = 1.0 # measured on an arbitrary scale +#random_page_cost = 4.0 # same scale as above +#cpu_tuple_cost = 0.01 # same scale as above +#cpu_index_tuple_cost = 0.005 # same scale as above +#cpu_operator_cost = 0.0025 # same scale as above +#parallel_tuple_cost = 0.1 # same scale as above +#parallel_setup_cost = 1000.0 # same scale as above +#min_parallel_relation_size = 8MB +#effective_cache_size = 4GB + +# - Genetic Query Optimizer - + +#geqo = on +#geqo_threshold = 12 +#geqo_effort = 5 # range 1-10 +#geqo_pool_size = 0 # selects default based on effort +#geqo_generations = 0 # selects default based on effort +#geqo_selection_bias = 2.0 # range 1.5-2.0 +#geqo_seed = 0.0 # range 0.0-1.0 + +# - Other Planner Options - + +#default_statistics_target = 100 # range 1-10000 +#constraint_exclusion = partition # on, off, or partition +#cursor_tuple_fraction = 0.1 # range 0.0-1.0 +#from_collapse_limit = 8 +#join_collapse_limit = 8 # 1 disables collapsing of explicit + # JOIN clauses +#force_parallel_mode = off + + +#------------------------------------------------------------------------------ +# ERROR REPORTING AND LOGGING +#------------------------------------------------------------------------------ + +# - Where to Log - + +#log_destination = 'stderr' # Valid values are combinations of + # stderr, csvlog, syslog, and eventlog, + # depending on platform. csvlog + # requires logging_collector to be on. + +# This is used when logging to stderr: +#logging_collector = off # Enable capturing of stderr and csvlog + # into log files. Required to be on for + # csvlogs. + # (change requires restart) + +# These are only used if logging_collector is on: +#log_directory = 'pg_log' # directory where log files are written, + # can be absolute or relative to PGDATA +#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern, + # can include strftime() escapes +#log_file_mode = 0600 # creation mode for log files, + # begin with 0 to use octal notation +#log_truncate_on_rotation = off # If on, an existing log file with the + # same name as the new log file will be + # truncated rather than appended to. + # But such truncation only occurs on + # time-driven rotation, not on restarts + # or size-driven rotation. Default is + # off, meaning append to existing files + # in all cases. +#log_rotation_age = 1d # Automatic rotation of logfiles will + # happen after that time. 0 disables. +#log_rotation_size = 10MB # Automatic rotation of logfiles will + # happen after that much log output. + # 0 disables. + +# These are relevant when logging to syslog: +#syslog_facility = 'LOCAL0' +#syslog_ident = 'postgres' +#syslog_sequence_numbers = on +#syslog_split_messages = on + +# This is only relevant when logging to eventlog (win32): +#event_source = 'PostgreSQL' + +# - When to Log - + +#client_min_messages = notice # values in order of decreasing detail: + # debug5 + # debug4 + # debug3 + # debug2 + # debug1 + # log + # notice + # warning + # error + +#log_min_messages = warning # values in order of decreasing detail: + # debug5 + # debug4 + # debug3 + # debug2 + # debug1 + # info + # notice + # warning + # error + # log + # fatal + # panic + +#log_min_error_statement = error # values in order of decreasing detail: + # debug5 + # debug4 + # debug3 + # debug2 + # debug1 + # info + # notice + # warning + # error + # log + # fatal + # panic (effectively off) + +#log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements + # and their durations, > 0 logs only + # statements running at least this number + # of milliseconds + + +# - What to Log - + +#debug_print_parse = off +#debug_print_rewritten = off +#debug_print_plan = off +#debug_pretty_print = on +#log_checkpoints = off +#log_connections = off +#log_disconnections = off +#log_duration = off +#log_error_verbosity = default # terse, default, or verbose messages +#log_hostname = off +#log_line_prefix = '%m [%p] ' # special values: + # %a = application name + # %u = user name + # %d = database name + # %r = remote host and port + # %h = remote host + # %p = process ID + # %t = timestamp without milliseconds + # %m = timestamp with milliseconds + # %n = timestamp with milliseconds (as a Unix epoch) + # %i = command tag + # %e = SQL state + # %c = session ID + # %l = session line number + # %s = session start timestamp + # %v = virtual transaction ID + # %x = transaction ID (0 if none) + # %q = stop here in non-session + # processes + # %% = '%' + # e.g. '<%u%%%d> ' +#log_lock_waits = off # log lock waits >= deadlock_timeout +#log_statement = 'none' # none, ddl, mod, all +#log_replication_commands = off +#log_temp_files = -1 # log temporary files equal or larger + # than the specified size in kilobytes; + # -1 disables, 0 logs all temp files +log_timezone = 'W-SU' + + +# - Process Title - + +#cluster_name = '' # added to process titles if nonempty + # (change requires restart) +#update_process_title = on + + +#------------------------------------------------------------------------------ +# RUNTIME STATISTICS +#------------------------------------------------------------------------------ + +# - Query/Index Statistics Collector - + +#track_activities = on +#track_counts = on +#track_io_timing = off +#track_functions = none # none, pl, all +#track_activity_query_size = 1024 # (change requires restart) +#stats_temp_directory = 'pg_stat_tmp' + + +# - Statistics Monitoring - + +#log_parser_stats = off +#log_planner_stats = off +#log_executor_stats = off +#log_statement_stats = off + + +#------------------------------------------------------------------------------ +# AUTOVACUUM PARAMETERS +#------------------------------------------------------------------------------ + +#autovacuum = on # Enable autovacuum subprocess? 'on' + # requires track_counts to also be on. +#log_autovacuum_min_duration = -1 # -1 disables, 0 logs all actions and + # their durations, > 0 logs only + # actions running at least this number + # of milliseconds. +#autovacuum_max_workers = 3 # max number of autovacuum subprocesses + # (change requires restart) +#autovacuum_naptime = 1min # time between autovacuum runs +#autovacuum_vacuum_threshold = 50 # min number of row updates before + # vacuum +#autovacuum_analyze_threshold = 50 # min number of row updates before + # analyze +#autovacuum_vacuum_scale_factor = 0.2 # fraction of table size before vacuum +#autovacuum_analyze_scale_factor = 0.1 # fraction of table size before analyze +#autovacuum_freeze_max_age = 200000000 # maximum XID age before forced vacuum + # (change requires restart) +#autovacuum_multixact_freeze_max_age = 400000000 # maximum multixact age + # before forced vacuum + # (change requires restart) +#autovacuum_vacuum_cost_delay = 20ms # default vacuum cost delay for + # autovacuum, in milliseconds; + # -1 means use vacuum_cost_delay +#autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for + # autovacuum, -1 means use + # vacuum_cost_limit + + +#------------------------------------------------------------------------------ +# CLIENT CONNECTION DEFAULTS +#------------------------------------------------------------------------------ + +# - Statement Behavior - + +#search_path = '"$user", public' # schema names +#default_tablespace = '' # a tablespace name, '' uses the default +#temp_tablespaces = '' # a list of tablespace names, '' uses + # only default tablespace +#check_function_bodies = on +#default_transaction_isolation = 'read committed' +#default_transaction_read_only = off +#default_transaction_deferrable = off +#session_replication_role = 'origin' +#statement_timeout = 0 # in milliseconds, 0 is disabled +#lock_timeout = 0 # in milliseconds, 0 is disabled +#idle_in_transaction_session_timeout = 0 # in milliseconds, 0 is disabled +#vacuum_freeze_min_age = 50000000 +#vacuum_freeze_table_age = 150000000 +#vacuum_multixact_freeze_min_age = 5000000 +#vacuum_multixact_freeze_table_age = 150000000 +#bytea_output = 'hex' # hex, escape +#xmlbinary = 'base64' +#xmloption = 'content' +#gin_fuzzy_search_limit = 0 +#gin_pending_list_limit = 4MB + +# - Locale and Formatting - + +datestyle = 'iso, mdy' +#intervalstyle = 'postgres' +timezone = 'W-SU' +#timezone_abbreviations = 'Default' # Select the set of available time zone + # abbreviations. Currently, there are + # Default + # Australia (historical usage) + # India + # You can create your own file in + # share/timezonesets/. +#extra_float_digits = 0 # min -15, max 3 +#client_encoding = sql_ascii # actually, defaults to database + # encoding + +# These settings are initialized by initdb, but they can be changed. +lc_messages = 'C' # locale for system error message + # strings +lc_monetary = 'C' # locale for monetary formatting +lc_numeric = 'C' # locale for number formatting +lc_time = 'C' # locale for time formatting + +# default configuration for text search +default_text_search_config = 'pg_catalog.english' + +# - Other Defaults - + +#dynamic_library_path = '$libdir' +#local_preload_libraries = '' +#session_preload_libraries = '' + + +#------------------------------------------------------------------------------ +# LOCK MANAGEMENT +#------------------------------------------------------------------------------ + +#deadlock_timeout = 1s +#max_locks_per_transaction = 64 # min 10 + # (change requires restart) +#max_pred_locks_per_transaction = 64 # min 10 + # (change requires restart) + + +#------------------------------------------------------------------------------ +# VERSION/PLATFORM COMPATIBILITY +#------------------------------------------------------------------------------ + +# - Previous PostgreSQL Versions - + +#array_nulls = on +#backslash_quote = safe_encoding # on, off, or safe_encoding +#default_with_oids = off +#escape_string_warning = on +#lo_compat_privileges = off +#operator_precedence_warning = off +#quote_all_identifiers = off +#standard_conforming_strings = on +#synchronize_seqscans = on + +# - Other Platforms and Clients - + +#transform_null_equals = off + + +#------------------------------------------------------------------------------ +# ERROR HANDLING +#------------------------------------------------------------------------------ + +#exit_on_error = off # terminate session on any error? +#restart_after_crash = on # reinitialize after backend crash? + + +#------------------------------------------------------------------------------ +# CONFIG FILE INCLUDES +#------------------------------------------------------------------------------ + +# These options allow settings to be loaded from files other than the +# default postgresql.conf. + +#include_dir = 'conf.d' # include files ending in '.conf' from + # directory 'conf.d' +#include_if_exists = 'exists.conf' # include file only if it exists +#include = 'special.conf' # include file + + +#------------------------------------------------------------------------------ +# CUSTOMIZED OPTIONS +#------------------------------------------------------------------------------ + +#Override standard Postgres default parameters +wal_level = logical +max_worker_processes = 100 +max_connections = 200 +listen_addresses = '*' +synchronous_commit = off +shared_buffers = 1GB +max_prepared_transactions = 200 +shared_preload_libraries = 'multimaster' +max_wal_senders = 10 +max_replication_slots = 10 +log_line_prefix = '%t: ' +default_transaction_isolation = 'repeatable read' + +#Multimaster options +multimaster.workers = 5 # number of apply workers (additonal dynamic workers may be spawned on demand) +multimaster.max_nodes = 5 # maximal number of cluster nodes +multimaster.conn_strings = '@nodes.lst' # multimaster node connection strings separated by commas (be default taken from nodes.lst file) +#multimaster.ignore_tables_without_pk = 0 # whether tables without PK should be replicated +#multimaster.major_node = 0 # set to 1 to let node continue to server clients without quorum in 2-ondes cluster +#multimaster.max_recovery_lag = 100000000 # maximal lag of replication slot of failed node after which this slot is dropped to avoid transaction log overflow" +#multimaster.min_recovery_lag = 100000 # minimal lag of WAL-sender performing recovery after which cluster is locked until recovery is completed +#multimaster.break_connection = 0 # break connection with client when node is no online +#multimaster.preserve_commit_order = 1 # transactions from one node will be committed in same order on all nodes +#multimaster.cluster_name = 'mmtm' # name of the cluster +#multimaster.connect_timeout = 10000 # interval in milliseconds for establishing connection with cluster node +#multimaster.reconnect_timeout = 5000 # interval in milliseconds for reestablishing connection with cluster node +#multimaster.node_disable_delay = 2000 # minimal amount of time (msec) between node status change +#multimaster.trans_spill_threshold = 100 # maximal size (Mb) of transaction after which transaction is written to the disk +#multimaster.heartbeat_send_timeout = 1000 # timeout in milliseconds of sending heartbeat messages +#multimaster.heartbeat_recv_timeout = 10000 # timeout in milliseconds of receiving heartbeat messages: if message is not received during this interval, node is disabled +#multimaster.queue_size = 134217728 # size of executors queue + diff --git a/contrib/mmts/referee.c b/contrib/mmts/referee.c new file mode 100644 index 0000000000..dd4e6a4a74 --- /dev/null +++ b/contrib/mmts/referee.c @@ -0,0 +1,178 @@ +/* + * arbitraror.c + * + * Referee for multimaster (make it possible to work out of quorum) + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "postgres.h" +#include "fmgr.h" +#include "miscadmin.h" +#include "libpq-fe.h" +#include "postmaster/bgworker.h" +#include "storage/latch.h" +#include "storage/proc.h" +#include "storage/ipc.h" + +#include "multimaster.h" + +#define REFEREE_RECONNECT_TIMEOUT 10 + +static bool MtmRefereeStop; + +static void MtmShutdownReferee(int sig) +{ + MtmRefereeStop = true; +} + +static void MtmRefereeLoop(char const** connections, int nConns) +{ + PGconn* conns[MAX_NODES]; + int i; + PGresult *res; + ConnStatusType status; + nodemask_t disabledMask = 0; + nodemask_t newEnabledMask = 0; + nodemask_t oldEnabledMask = 0; + int result; + + for (i = 0; i < nConns; i++) { + conns[i] = PQconnectdb_safe(connections[i], 0); + status = PQstatus(conns[i]); + if (status != CONNECTION_OK) + { + MTM_ELOG(LOG, "Could not establish connection to node %d, error = %s", + i+1, PQerrorMessage(conns[i])); + PQfinish(conns[i]); + conns[i] = NULL; + sleep(REFEREE_RECONNECT_TIMEOUT); + i -= 1; + } else { + PQsetnonblocking(conns[i], 1); + } + } + + while (!MtmRefereeStop) { + char sql[128]; + sprintf(sql, "select mtm.referee_poll(%lld)", disabledMask); + + /* Initiate queries to all live nodes */ + for (i = 0; i < nConns; i++) { + /* Some of live node reestablished connection with dead node, so referee should also try to connect to this node */ + if (conns[i] == NULL) { + if (BIT_CHECK(newEnabledMask, i)) { + conns[i] = PQconnectdb_safe(connections[i], 0); + status = PQstatus(conns[i]); + if (status == CONNECTION_OK) { + BIT_CLEAR(disabledMask, i); + MTM_ELOG(LOG, "Reestablish connection with node %d", i+1); + PQsetnonblocking(conns[i], 1); + } else { + PQfinish(conns[i]); + conns[i] = NULL; + } + } + } else { + if (!PQsendQuery(conns[i], sql)) { + MTM_ELOG(LOG, "Failed to send query to node %d, error = %s", + i+1, PQerrorMessage(conns[i])); + PQfinish(conns[i]); + conns[i] = NULL; + BIT_SET(disabledMask, i); + } + } + } + /* Wait some time */ + result = WaitLatch(&MyProc->procLatch, WL_TIMEOUT | WL_POSTMASTER_DEATH, MtmHeartbeatRecvTimeout); + if (result & WL_POSTMASTER_DEATH) { + proc_exit(1); + } + + oldEnabledMask = newEnabledMask; + newEnabledMask = ALL_BITS; + for (i = 0; i < nConns; i++) { + if (conns[i] != NULL) { + if (!PQconsumeInput(conns[i]) || PQisBusy(conns[i])) { + MTM_ELOG(LOG, "Doesn't receive response from node %d within %d milleseconds", i+1, MtmHeartbeatRecvTimeout); + } else { + res = PQgetResult(conns[i]); + if (PQresultStatus(res) == PGRES_TUPLES_OK) + { + char* mask = PQgetvalue(res, 0, 0); + newEnabledMask &= atol(mask); + PQclear(res); + PQgetResult(conns[i]); + continue; + } + MTM_ELOG(LOG, "Failed to retrieve result from node %d: %s", i+1, PQresultErrorMessage(res)); + PQclear(res); + } + PQfinish(conns[i]); + conns[i] = NULL; + BIT_SET(disabledMask, i); + } + } + if (newEnabledMask == ALL_BITS) { + if (oldEnabledMask != ALL_BITS) { + MTM_ELOG(LOG, "There are no more live nodes"); + } + /* No live nodes: referee should not alter quorum in this case */ + disabledMask = 0; + } else { + if (newEnabledMask != oldEnabledMask) { + for (i = 0; i < nConns; i++) { + if (BIT_CHECK(newEnabledMask ^ oldEnabledMask, i)) { + MTM_ELOG(LOG, "Node %d is %s\n", i+1, BIT_CHECK(newEnabledMask, i) ? "enabled" : "disabled"); + } + } + } + } + } +} + +static void MtmRefereeMain(Datum arg) +{ + char const* connections[MAX_NODES]; + int i; + + pqsignal(SIGINT, MtmShutdownReferee); + pqsignal(SIGQUIT, MtmShutdownReferee); + pqsignal(SIGTERM, MtmShutdownReferee); + + /* We're now ready to receive signals */ + BackgroundWorkerUnblockSignals(); + + for (i = 0; i < MtmNodes; i++) { + connections[i] = psprintf("%s application_name=%s", MtmConnections[i].connStr, MULTIMASTER_ADMIN); + } + MtmRefereeLoop(connections, MtmNodes); +} + + +static BackgroundWorker MtmRefereeWorker = { + "mtm-referee", + 0, + BgWorkerStart_ConsistentState, + REFEREE_RECONNECT_TIMEOUT, + MtmRefereeMain +}; + + +void MtmRefereeInitialize(void) +{ + RegisterBackgroundWorker(&MtmRefereeWorker); +} + diff --git a/contrib/mmts/referee/makefile b/contrib/mmts/referee/makefile new file mode 100644 index 0000000000..fd8a9c798c --- /dev/null +++ b/contrib/mmts/referee/makefile @@ -0,0 +1,10 @@ +CC=gcc +CFLAGS=-g -Wall -O0 -pthread + +all: referee + +referee: referee.c + $(CC) $(CFLAGS) -o referee referee.c -lpq + +clean: + rm -f referee diff --git a/contrib/mmts/referee/referee.c b/contrib/mmts/referee/referee.c new file mode 100644 index 0000000000..6785105537 --- /dev/null +++ b/contrib/mmts/referee/referee.c @@ -0,0 +1,153 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +typedef unsigned long long ulong64; /* we are not using uint64 here because we want to use %lld format for this type */ + +typedef ulong64 nodemask_t; + +/* +#define referee_message(msg, ...) elog(LOG, msg, ## __VA_ARGS__) +*/ +#define referee_message(msg, ...) fprintf(stderr, msg "\n", ## __VA_ARGS__) + +#define BIT_CHECK(mask, bit) (((mask) & ((nodemask_t)1 << (bit))) != 0) +#define BIT_CLEAR(mask, bit) (mask &= ~((nodemask_t)1 << (bit))) +#define BIT_SET(mask, bit) (mask |= ((nodemask_t)1 << (bit))) +#define ALL_BITS ((nodemask_t)~0) +#define MAX_NODES 64 + +int referee_loop(char const** connections, int nConns, time_t timeout) +{ + PGconn* conns[MAX_NODES]; + int i; + PGresult *res; + ConnStatusType status; + nodemask_t disabledMask = 0; + nodemask_t newEnabledMask = 0; + nodemask_t oldEnabledMask = 0; + + + for (i = 0; i < nConns; i++) { + conns[i] = PQconnectdb(connections[i]); + status = PQstatus(conns[i]); + if (status != CONNECTION_OK) + { + referee_message("Could not establish connection to node %d, error = %s", + i+1, PQerrorMessage(conns[i])); + return 1; + } + PQsetnonblocking(conns[i], 1); + } + + while (1) { + char sql[128]; + sprintf(sql, "select mtm.referee_poll(%lld)", disabledMask); + + /* Initiate queries to all live nodes */ + for (i = 0; i < nConns; i++) { + /* Some of live node reestablished connection with dead node, so referee should also try to connect to this node */ + if (conns[i] == NULL) { + if (BIT_CHECK(newEnabledMask, i)) { + conns[i] = PQconnectdb(connections[i]); + status = PQstatus(conns[i]); + if (status == CONNECTION_OK) { + BIT_CLEAR(disabledMask, i); + referee_message("Reestablish connection with node %d", i+1); + PQsetnonblocking(conns[i], 1); + } else { + PQfinish(conns[i]); + conns[i] = NULL; + } + } + } else { + if (!PQsendQuery(conns[i], sql)) { + referee_message("Failed to send query to node %d, error = %s", + i+1, PQerrorMessage(conns[i])); + PQfinish(conns[i]); + conns[i] = NULL; + BIT_SET(disabledMask, i); + } + } + } + /* Wait some time */ + usleep(timeout); + oldEnabledMask = newEnabledMask; + newEnabledMask = ALL_BITS; + for (i = 0; i < nConns; i++) { + if (conns[i] != NULL) { + if (!PQconsumeInput(conns[i]) || PQisBusy(conns[i])) { + referee_message("Doesn't receive response from node %d within %ld microseconds", i+1, timeout); + } else { + res = PQgetResult(conns[i]); + if (PQresultStatus(res) == PGRES_TUPLES_OK) + { + char* mask = PQgetvalue(res, 0, 0); + newEnabledMask &= atol(mask); + PQclear(res); + PQgetResult(conns[i]); + continue; + } + referee_message("Failed to retrieve result from node %d: %s", i+1, PQresultErrorMessage(res)); + PQclear(res); + } + PQfinish(conns[i]); + conns[i] = NULL; + BIT_SET(disabledMask, i); + } + } + if (newEnabledMask == ALL_BITS) { + if (oldEnabledMask != ALL_BITS) { + referee_message("There are no more live nodes"); + } + /* No live nodes: referee should not alter quorum in this case */ + disabledMask = 0; + } else { + if (newEnabledMask != oldEnabledMask) { + for (i = 0; i < nConns; i++) { + if (BIT_CHECK(newEnabledMask ^ oldEnabledMask, i)) { + referee_message("Node %d is %s\n", i+1, BIT_CHECK(newEnabledMask, i) ? "enabled" : "disabled"); + } + } + } + } + } +} + +int main (int argc, char* argv[]) +{ + char const* connections[MAX_NODES]; + time_t timeout = 1000000; + int nConns = 0; + int i; + + if (argc == 1) { + fprintf(stderr, "Use -h to show usage options\n"); + return 1; + } + + for (i = 1; i < argc; i++) { + if (argv[i][0] == '-') { + switch (argv[i][1]) { + case 't': + timeout = atol(argv[++i]); + continue; + case 'c': + connections[nConns++] = argv[++i]; + continue; + } + } + printf("Options:\n" + "\t-t TIMEOUT\ttimeout in microseconds of waiting database connection string (default: 1 second)\n" + "\t-c STR\tdatabase connection string\n"); + return 1; + } + return referee_loop(connections, nConns, timeout); +} + diff --git a/contrib/mmts/referee/referee.sh b/contrib/mmts/referee/referee.sh new file mode 100755 index 0000000000..fcf6b23423 --- /dev/null +++ b/contrib/mmts/referee/referee.sh @@ -0,0 +1 @@ +knizhnik@knizhnik:~/postgrespro.mtm/contrib/mmts/arbitrator$ ./arbitrator -c "dbname=regression user=knizhnik host=localhost port=5432 sslmode=disable application_name=mtm_admin" -c "dbname=regression user=knizhnik host=localhost port=5433 sslmode=disable application_name=mtm_admin" -c "dbname=regression user=knizhnik host=localhost port=5434 sslmode=disable application_name=mtm_admin" diff --git a/contrib/mmts/setup-local.sh b/contrib/mmts/setup-local.sh new file mode 100755 index 0000000000..7845176592 --- /dev/null +++ b/contrib/mmts/setup-local.sh @@ -0,0 +1,71 @@ +#!/bin/bash + +DBNAME=postgres +DBUSER=$USER +N_HOSTS=3 +PORT=5432 +ARBITER_PORT=4321 + +while getopts ":d:u:n:a:p:" opt; do + case $opt in + p) PORT="$OPTARG" + ;; + a) ARBITER_PORT="$OPTARG" + ;; + d) DBNAME="$OPTARG" + ;; + u) DBUSER="$OPTARG" + ;; + n) N_HOSTS="$OPTARG" + ;; + \?) echo "Invalid option -$OPTARG" >&2 + echo "Supported options:" + echo " -p PORT postgres server port ($PORT)" + echo " -a PORT multimaster arbiter port ($ARBITER_PORT)" + echo " -d DBNAME postgres database name ($DBNAME)" + echo " -u DBUSER postgres database user ($USER)" + echo " -n NODES number of cluster nodes ($N_HOSTS)" + exit 1 + ;; + esac +done + +echo "Setup multimaster dbname=$DBNAME user=$DBUSER hosts=$HOSTS port=$PORT arbiter_port=$ARBITER_PORT" + +#perform cleanup +rm -fr node? node*.log nodes.lst + +for ((i=1;i<=N_HOSTS;i++)) +do + pg_port=$((PORT+i-1)) + mm_port=$((ARBITER_PORT+i-1)) + echo "dbname=$DBNAME user=$DBUSER host=localhost port=$pg_port arbiter_port=$mm_port sslmode=disable" >> nodes.lst +done + +for ((i=1;i<=N_HOSTS;i++)) +do + pg_port=$((PORT+i-1)) + mm_port=$((ARBITER_PORT+i-1)) + echo "Setup database node$i" + initdb node$i + if [ "$DBNAME" != "postgres" ] + then + pg_ctl -w -D node$i -l node$i.log start + createdb $DBNAME + pg_ctl -w -D node$i -l node$i.log stop + fi + cp pg_hba.conf.template node$i/pg_hba.conf + cp nodes.lst node$i + cp postgresql.conf.template node$i/postgresql.conf + echo port=$pg_port >> node$i/postgresql.conf + echo multimaster.arbiter_port=$mm_port >> node$i/postgresql.conf +done + +for ((i=1;i<=N_HOSTS;i++)) +do + pg_ctl -D node$i -l node$i.log start +done + +sleep 5 + +echo Done diff --git a/contrib/mmts/setup.sh b/contrib/mmts/setup.sh new file mode 100755 index 0000000000..f85cdcca74 --- /dev/null +++ b/contrib/mmts/setup.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +DBNAME=postgres +DBUSER=$USER +HOSTS=hosts.lst +PORT=5432 +ARBITER_PORT=4321 + +while getopts ":d:u:l:a:p:" opt; do + case $opt in + p) PORT="$OPTARG" + ;; + a) ARBITER_PORT="$OPTARG" + ;; + d) DBNAME="$OPTARG" + ;; + u) DBUSER="$OPTARG" + ;; + h) HOSTS="$OPTARG" + ;; + \?) echo "Invalid option -$OPTARG" >&2 + echo "Supported options:" + echo " -p PORT postgres server port ($PORT)" + echo " -a PORT multimaster arbiter port ($ARBITER_PORT)" + echo " -d DBNAME postgres database name ($DBNAME)" + echo " -u DBUSER postgres database user ($USER)" + echo " -h FILE file with list of hosts ($HOSTS)" + exit 1 + ;; + esac +done + +echo "Setup multimaster dbname=$DBNAME user=$DBUSER hosts=$HOSTS port=$PORT arbiter_port=$ARBITER_PORT" + +rm -f nodes.lst # nodes.lst will be contructed from + +for host in $HOSTS +do + echo "dbname=$DBNAME user=$DBUSER host=$host port=$PORT arbiter_port=$ARBITER_PORT sslmode=disable" >> nodes.lst +done + +i=1 +for host in $HOSTS +do + echo "Setup database at node $host" + ssh $host "rm -fr node$i node$i.log ; initdb node$i" + if [ "$DBNAME" != "postgres" ] + then + ssh $host "pg_ctl -w -D node$i -l node$i.log start; createdb $DBNAME; pg_ctl -w -D node$i -l node$i.log stop" + fi + scp pg_hba.conf.template $host:node$i/pg_hba.conf + scp nodes.lst n$host:node$i + scp postgresql.conf.template $host:node$i/postgresql.conf + ssh $host "echo port=$PORT >> node$i/postgresql.conf" + ssh $host "echo multimaster.arbiter_port=$ARBITER_PORT >> node$i/postgresql.conf" + ((i++)) +done + +i=1 +for host in $HOSTS +do + ssh $host "pg_ctl -D node$i -l node$i.log start" + ((i++)) +done + +sleep 5 + +echo Done diff --git a/contrib/mmts/spill.c b/contrib/mmts/spill.c index 09d022bf03..b63f977f78 100644 --- a/contrib/mmts/spill.c +++ b/contrib/mmts/spill.c @@ -6,6 +6,8 @@ #include "spill.h" #include "pgstat.h" +#include "multimaster.h" + void MtmSpillToFile(int fd, char const* data, size_t size) { Assert(fd >= 0); @@ -15,7 +17,7 @@ void MtmSpillToFile(int fd, char const* data, size_t size) CloseTransientFile(fd); ereport(ERROR, (errcode_for_file_access(), - errmsg("pglogical_recevier failed to spill transaction to file: %m"))); + MTM_ERRMSG("pglogical_recevier failed to spill transaction to file: %m"))); } data += written; size -= written; @@ -33,7 +35,12 @@ void MtmCreateSpillDirectory(int node_id) mkdir(path, S_IRWXU); spill_dir = AllocateDir(path); - + if (spill_dir == NULL) { + ereport(PANIC, + (errcode_for_file_access(), + MTM_ERRMSG("pglogical_receiver failed to create spill directory \"%s\": %m", + path))); + } while ((spill_de = ReadDir(spill_dir, path)) != NULL) { if (strncmp(spill_de->d_name, "txn", 3) == 0) @@ -43,7 +50,7 @@ void MtmCreateSpillDirectory(int node_id) if (unlink(path) != 0) ereport(PANIC, (errcode_for_file_access(), - errmsg("pglogical_receiver could not remove spill file \"%s\": %m", + MTM_ERRMSG("pglogical_receiver could not remove spill file \"%s\": %m", path))); } } @@ -65,7 +72,7 @@ int MtmCreateSpillFile(int node_id, int* file_id) if (fd < 0) { ereport(PANIC, (errcode_for_file_access(), - errmsg("pglogical_receiver could not create spill file \"%s\": %m", + MTM_ERRMSG("pglogical_receiver could not create spill file \"%s\": %m", path))); } *file_id = spill_file_id; @@ -85,10 +92,14 @@ int MtmOpenSpillFile(int node_id, int file_id) if (fd < 0) { ereport(PANIC, (errcode_for_file_access(), - errmsg("pglogical_apply could not open spill file \"%s\": %m", + MTM_ERRMSG("pglogical_apply could not open spill file \"%s\": %m", path))); } - unlink(path); /* Should remove file on close */ + if (unlink(path) < 0) { /* Should remove file on close */ + ereport(LOG, + (errcode_for_file_access(), + MTM_ERRMSG("pglogical_apply failed to unlink spill file: %m"))); + } return fd; } @@ -101,7 +112,7 @@ void MtmReadSpillFile(int fd, char* data, size_t size) CloseTransientFile(fd); ereport(ERROR, (errcode_for_file_access(), - errmsg("pglogical_apply failed to read spill file: %m"))); + MTM_ERRMSG("pglogical_apply failed to read spill file: %m"))); } data += rc; size -= rc; diff --git a/contrib/mmts/sql/multimaster.sql b/contrib/mmts/sql/multimaster.sql new file mode 100644 index 0000000000..786cd50519 --- /dev/null +++ b/contrib/mmts/sql/multimaster.sql @@ -0,0 +1,11 @@ +create user user1; +create schema user1; +alter schema user1 owner to user1; + +\c "user=user1 dbname=regression" +create table user1.test(i int primary key); +create table user1.test2(i int primary key); + +\c "user=user1 dbname=regression port=5433" +select * from test; + diff --git a/contrib/mmts/state.c b/contrib/mmts/state.c new file mode 100644 index 0000000000..e98cd2865c --- /dev/null +++ b/contrib/mmts/state.c @@ -0,0 +1,624 @@ +#include "postgres.h" +#include "miscadmin.h" /* PostmasterPid */ +#include "multimaster.h" +#include "state.h" + +char const* const MtmNeighborEventMnem[] = +{ + "MTM_NEIGHBOR_CLIQUE_DISABLE", + "MTM_NEIGHBOR_WAL_RECEIVER_START", + "MTM_NEIGHBOR_WAL_SENDER_START_RECOVERY", + "MTM_NEIGHBOR_WAL_SENDER_START_RECOVERED", + "MTM_NEIGHBOR_RECOVERY_CAUGHTUP" +}; + +char const* const MtmEventMnem[] = +{ + "MTM_REMOTE_DISABLE", + "MTM_CLIQUE_DISABLE", + "MTM_CLIQUE_MINORITY", + "MTM_ARBITER_RECEIVER_START", + "MTM_RECOVERY_START1", + "MTM_RECOVERY_START2", + "MTM_RECOVERY_FINISH1", + "MTM_RECOVERY_FINISH2", + "MTM_NONRECOVERABLE_ERROR" +}; + +static int MtmRefereeGetWinner(void); +static bool MtmRefereeClearWinner(void); + +// XXXX: allocate in context and clean it +static char * +maskToString(nodemask_t mask, int nNodes) +{ + char *strMask = palloc0(nNodes + 1); + int i; + + for (i = 0; i < nNodes; i++) + strMask[i] = BIT_CHECK(mask, i) ? '1' : '0'; + + return strMask; +} + +int +countZeroBits(nodemask_t mask, int nNodes) +{ + int i, count = 0; + for (i = 0; i < nNodes; i++) + { + if (!BIT_CHECK(mask, i)) + count++; + } + return count; +} + +static void +MtmSetClusterStatus(MtmNodeStatus status) +{ + if (Mtm->status == status) + return; + + Mtm->nConfigChanges += 1; /* this will restart backends */ + + MTM_LOG1("[STATE] Switching status from %s to %s status", + MtmNodeStatusMnem[Mtm->status], MtmNodeStatusMnem[status]); + + /* + * Do some actions on specific status transitions. + * This will be executed only once because of preceeding if stmt. + */ + if (status == MTM_DISABLED) + { + Mtm->recoverySlot = 0; + Mtm->pglogicalReceiverMask = 0; + Mtm->pglogicalSenderMask = 0; + Mtm->recoveryCount++; /* this will restart replication connection */ + } + + Mtm->status = status; +} + +static void +MtmCheckState(void) +{ + // int nVotingNodes = MtmGetNumberOfVotingNodes(); + bool isEnabledState; + int nEnabled = countZeroBits(Mtm->disabledNodeMask, Mtm->nAllNodes); + int nConnected = countZeroBits(SELF_CONNECTIVITY_MASK, Mtm->nAllNodes); + int nReceivers = Mtm->nAllNodes - countZeroBits(Mtm->pglogicalReceiverMask, Mtm->nAllNodes); + int nSenders = Mtm->nAllNodes - countZeroBits(Mtm->pglogicalSenderMask, Mtm->nAllNodes); + + MTM_LOG1("[STATE] Status = (disabled=%s, unaccessible=%s, clique=%s, receivers=%s, senders=%s, total=%i, major=%d, stopped=%s)", + maskToString(Mtm->disabledNodeMask, Mtm->nAllNodes), + maskToString(SELF_CONNECTIVITY_MASK, Mtm->nAllNodes), + maskToString(Mtm->clique, Mtm->nAllNodes), + maskToString(Mtm->pglogicalReceiverMask, Mtm->nAllNodes), + maskToString(Mtm->pglogicalSenderMask, Mtm->nAllNodes), + Mtm->nAllNodes, + (MtmMajorNode || Mtm->refereeGrant), + maskToString(Mtm->stoppedNodeMask, Mtm->nAllNodes)); + + isEnabledState = + ( (nConnected >= Mtm->nAllNodes/2+1) /* majority */ + // XXXX: should we restrict major with two nodes setup? + || (nConnected == Mtm->nAllNodes/2 && MtmMajorNode) /* or half + major node */ + || (nConnected == Mtm->nAllNodes/2 && Mtm->refereeGrant) ) /* or half + referee */ + && (BIT_CHECK(Mtm->clique, MtmNodeId-1) || Mtm->refereeGrant) /* in clique when non-major */ + && !BIT_CHECK(Mtm->stoppedNodeMask, MtmNodeId-1); /* is not stopped */ + + /* ANY -> MTM_DISABLED */ + if (!isEnabledState) + { + // BIT_SET(Mtm->disabledNodeMask, MtmNodeId-1); + MtmSetClusterStatus(MTM_DISABLED); + MtmDisableNode(MtmNodeId); + return; + } + + switch (Mtm->status) + { + case MTM_DISABLED: + if (isEnabledState) + { + MtmSetClusterStatus(MTM_RECOVERY); + return; + } + break; + + case MTM_RECOVERY: + if (!BIT_CHECK(Mtm->disabledNodeMask, MtmNodeId-1)) + { + MTM_LOG1("[LOCK] set lock on MTM_RECOVERY switch"); + BIT_SET(Mtm->originLockNodeMask, MtmNodeId-1); // kk trick, XXXX: log that + MtmSetClusterStatus(MTM_RECOVERED); + return; + } + break; + + /* + * Switching from MTM_RECOVERY to MTM_ONLINE requires two state + * re-checks. If by the time of MTM_RECOVERY -> MTM_RECOVERED all + * senders/receiveirs already atarted we can stuck in MTM_RECOVERED + * state. Hence call MtmCheckState() from periodic status check while + * in MTM_RECOVERED state. + */ + case MTM_RECOVERED: + if (nReceivers == nEnabled-1 && nSenders == nEnabled-1 && nEnabled == nConnected) + { + /* + * It should be already cleaned by RECOVERY_CAUGHTUP, but + * in major mode or with referee we can be working alone + * so nobody will clean it. + */ + MTM_LOG1("[LOCK] release lock on MTM_RECOVERED switch"); + BIT_CLEAR(Mtm->originLockNodeMask, MtmNodeId-1); + MtmSetClusterStatus(MTM_ONLINE); + return; + } + break; + + case MTM_ONLINE: + break; + } + +} + + +void +MtmStateProcessNeighborEvent(int node_id, MtmNeighborEvent ev) // XXXX camelcase node_id +{ + MTM_LOG1("[STATE] Node %i: %s", node_id, MtmNeighborEventMnem[ev]); + + Assert(node_id != MtmNodeId); + + MtmLock(LW_EXCLUSIVE); + switch(ev) + { + case MTM_NEIGHBOR_CLIQUE_DISABLE: + MtmDisableNode(node_id); + break; + + case MTM_NEIGHBOR_WAL_RECEIVER_START: + BIT_SET(Mtm->pglogicalReceiverMask, node_id - 1); + MTM_LOG1("[LOCK] release lock on MTM_NEIGHBOR_WAL_RECEIVER_START event"); + BIT_CLEAR(Mtm->originLockNodeMask, MtmNodeId-1); + break; + + case MTM_NEIGHBOR_WAL_SENDER_START_RECOVERY: + // BIT_SET(Mtm->pglogicalSenderMask, node_id - 1); + break; + + case MTM_NEIGHBOR_WAL_SENDER_START_RECOVERED: + BIT_SET(Mtm->pglogicalSenderMask, node_id - 1); + MtmEnableNode(node_id); /// XXXX ? + break; + + case MTM_NEIGHBOR_RECOVERY_CAUGHTUP: + MTM_LOG1("[LOCK] release lock on MTM_NEIGHBOR_RECOVERY_CAUGHTUP event"); + BIT_CLEAR(Mtm->originLockNodeMask, node_id - 1); + MtmEnableNode(node_id); + break; + + } + MtmCheckState(); + MtmUnlock(); +} + + +void +MtmStateProcessEvent(MtmEvent ev) +{ + MTM_LOG1("[STATE] %s", MtmEventMnem[ev]); + + MtmLock(LW_EXCLUSIVE); + switch (ev) + { + case MTM_CLIQUE_DISABLE: + BIT_SET(Mtm->disabledNodeMask, MtmNodeId-1); + Mtm->recoveryCount++; /* this will restart replication connection */ + break; + + case MTM_REMOTE_DISABLE: + case MTM_CLIQUE_MINORITY: + break; + + case MTM_ARBITER_RECEIVER_START: + MtmOnNodeConnect(MtmNodeId); + break; + + case MTM_RECOVERY_START1: + case MTM_RECOVERY_START2: + break; + + case MTM_RECOVERY_FINISH1: + case MTM_RECOVERY_FINISH2: + { + int i; + + MtmEnableNode(MtmNodeId); + + Mtm->recoveryCount++; /* this will restart replication connection */ + + Mtm->recoverySlot = 0; + Mtm->recoveredLSN = GetXLogInsertRecPtr(); + Mtm->nConfigChanges += 1; + for (i = 0; i < Mtm->nAllNodes; i++) + Mtm->nodes[i].lastHeartbeat = 0; /* defuse watchdog until first heartbeat is received */ + } + break; + + case MTM_NONRECOVERABLE_ERROR: + // kill(PostmasterPid, SIGQUIT); + break; + } + + MtmCheckState(); + MtmUnlock(); + +} + +/* + * Node is disabled if it is not part of clique built using connectivity masks of all nodes. + * There is no warranty that all nodes will make the same decision about clique, but as far as we want to avoid + * some global coordinator (which will be SPOF), we have to rely on Bron–Kerbosch algorithm locating maximum clique in graph + */ +void MtmDisableNode(int nodeId) +{ + MTM_LOG1("[STATE] Node %i: disabled", nodeId); + + BIT_SET(Mtm->disabledNodeMask, nodeId-1); + Mtm->nConfigChanges += 1; + Mtm->nodes[nodeId-1].timeline += 1; + Mtm->nodes[nodeId-1].lastStatusChangeTime = MtmGetSystemTime(); + Mtm->nodes[nodeId-1].lastHeartbeat = 0; /* defuse watchdog until first heartbeat is received */ + + if (Mtm->status == MTM_ONLINE) { + /* Make decision about prepared transaction status only in quorum */ + MtmLock(LW_EXCLUSIVE); + MtmPollStatusOfPreparedTransactionsForDisabledNode(nodeId, false); + MtmUnlock(); + } +} + + +/* + * Node is enabled when it's recovery is completed. + * This why node is mostly marked as recovered when logical sender/receiver to this node is (re)started. + */ +void MtmEnableNode(int nodeId) +{ + MTM_LOG1("[STATE] Node %i: enabled", nodeId); + + if (BIT_CHECK(Mtm->disabledNodeMask, nodeId-1)) { + BIT_CLEAR(Mtm->disabledNodeMask, nodeId-1); + BIT_CLEAR(Mtm->reconnectMask, nodeId-1); + BIT_SET(Mtm->recoveredNodeMask, nodeId-1); + Mtm->nConfigChanges += 1; + Mtm->nodes[nodeId-1].lastStatusChangeTime = MtmGetSystemTime(); + Mtm->nodes[nodeId-1].lastHeartbeat = 0; /* defuse watchdog until first heartbeat is received */ + if (nodeId != MtmNodeId) { + Mtm->nLiveNodes += 1; + } + } +} + +/* + * + */ + +void MtmOnNodeDisconnect(int nodeId) +{ + if (BIT_CHECK(SELF_CONNECTIVITY_MASK, nodeId-1)) + return; + + MTM_LOG1("[STATE] Node %i: disconnected", nodeId); + + /* + * We should disable it, as clique detector will not necessarily + * do that. For example it will anyway find clique with one node. + */ + + MtmLock(LW_EXCLUSIVE); + MtmDisableNode(nodeId); + BIT_SET(SELF_CONNECTIVITY_MASK, nodeId-1); + BIT_SET(Mtm->reconnectMask, nodeId-1); + Mtm->nConfigChanges += 1; + MtmCheckState(); + MtmUnlock(); + + // MtmRefreshClusterStatus(); +} + +// XXXX: make that event too +void MtmOnNodeConnect(int nodeId) +{ + // if (!BIT_CHECK(SELF_CONNECTIVITY_MASK, nodeId-1)) + // return; + + MTM_LOG1("[STATE] Node %i: connected", nodeId); + + MtmLock(LW_EXCLUSIVE); + BIT_CLEAR(SELF_CONNECTIVITY_MASK, nodeId-1); + BIT_SET(Mtm->reconnectMask, nodeId-1); + + MtmCheckState(); + MtmUnlock(); + + // MtmRefreshClusterStatus(); +} + +void MtmReconnectNode(int nodeId) // XXXX evict that +{ + // MTM_LOG1("[STATE] ReconnectNode for node %u", nodeId); + MtmLock(LW_EXCLUSIVE); + BIT_SET(Mtm->reconnectMask, nodeId-1); + MtmUnlock(); +} + + +/** + * Build internode connectivity mask. 1 - means that node is disconnected. + */ +static void +MtmBuildConnectivityMatrix(nodemask_t* matrix) +{ + int i, j, n = Mtm->nAllNodes; + + for (i = 0; i < n; i++) + matrix[i] = Mtm->nodes[i].connectivityMask | Mtm->deadNodeMask; + + /* make matrix symmetric: required for Bron–Kerbosch algorithm */ + for (i = 0; i < n; i++) { + for (j = 0; j < i; j++) { + matrix[i] |= ((matrix[j] >> i) & 1) << j; + matrix[j] |= ((matrix[i] >> j) & 1) << i; + } + matrix[i] &= ~((nodemask_t)1 << i); + } +} + + + +/** + * Build connectivity graph, find clique in it and extend disabledNodeMask by nodes not included in clique. + * This function is called by arbiter monitor process with period MtmHeartbeatSendTimeout + */ +void +MtmRefreshClusterStatus() +{ + nodemask_t newClique, oldClique; + nodemask_t matrix[MAX_NODES]; + nodemask_t trivialClique = ~SELF_CONNECTIVITY_MASK & (((nodemask_t)1 << Mtm->nAllNodes)-1); + int cliqueSize; + int i; + + /* + * Periodical check that we are still in RECOVERED state. + * See comment to MTM_RECOVERED -> MTM_ONLINE transition in MtmCheckState() + */ + MtmLock(LW_EXCLUSIVE); + MtmCheckState(); + MtmUnlock(); + + /* + * Check for referee decision when only half of nodes are visible. + * Do not hold lock here, but recheck later wheter mask changed. + */ + if (MtmRefereeConnStr && *MtmRefereeConnStr && !Mtm->refereeWinnerId && + countZeroBits(SELF_CONNECTIVITY_MASK, Mtm->nAllNodes) == Mtm->nAllNodes/2) + { + int winner_node_id = MtmRefereeGetWinner(); + + if (winner_node_id > 0) + { + Mtm->refereeWinnerId = winner_node_id; + if (!BIT_CHECK(SELF_CONNECTIVITY_MASK, winner_node_id - 1)) + { + /* + * By the time we enter this block we can already see other nodes. + * So recheck old conditions under lock. + */ + MtmLock(LW_EXCLUSIVE); + if (countZeroBits(SELF_CONNECTIVITY_MASK, Mtm->nAllNodes) == Mtm->nAllNodes/2 && + !BIT_CHECK(SELF_CONNECTIVITY_MASK, winner_node_id - 1)) + { + MTM_LOG1("[STATE] Referee allowed to proceed with half of the nodes (winner_id = %d)", + winner_node_id); + Mtm->refereeGrant = true; + if (countZeroBits(SELF_CONNECTIVITY_MASK, Mtm->nAllNodes) == 1) + { + // XXXX: that is valid for two nodes. Better idea is to parametrize MtmPollStatus* + // functions. + int neighbor_node_id = MtmNodeId == 1 ? 2 : 1; + MtmPollStatusOfPreparedTransactionsForDisabledNode(neighbor_node_id, true); + } + MtmEnableNode(MtmNodeId); + MtmCheckState(); + } + MtmUnlock(); + } + } + } + + /* + * Clear winner if we again have all nodes recovered. + * We should clean old value based on disabledNodeMask instead of SELF_CONNECTIVITY_MASK + * because we can clean old value before failed node starts it recovery and that node + * can get refereeGrant before start of walsender, so it start in recovered mode. + */ + if (MtmRefereeConnStr && *MtmRefereeConnStr && Mtm->refereeWinnerId && + countZeroBits(Mtm->disabledNodeMask, Mtm->nAllNodes) == Mtm->nAllNodes) + { + if (MtmRefereeClearWinner()) + { + Mtm->refereeWinnerId = 0; + Mtm->refereeGrant = false; + MTM_LOG1("[STATE] Cleaning old referee decision"); + } + } + + /* + * Check for clique. + */ + MtmBuildConnectivityMatrix(matrix); + newClique = MtmFindMaxClique(matrix, Mtm->nAllNodes, &cliqueSize); + + if (newClique == Mtm->clique) + return; + + MTM_LOG1("[STATE] Old clique: %s", maskToString(Mtm->clique, Mtm->nAllNodes)); + + /* + * Otherwise make sure that all nodes have a chance to replicate their connectivity + * mask and we have the "consistent" picture. Obviously we can not get true consistent + * snapshot, but at least try to wait heartbeat send timeout is expired and + * connectivity graph is stabilized. + */ + do { + oldClique = newClique; + /* + * Double timeout to consider the worst case when heartbeat receive interval is added + * with refresh cluster status interval. + */ + MtmSleep(MSEC_TO_USEC(MtmHeartbeatRecvTimeout)*2); + MtmBuildConnectivityMatrix(matrix); + newClique = MtmFindMaxClique(matrix, Mtm->nAllNodes, &cliqueSize); + } while (newClique != oldClique); + + MTM_LOG1("[STATE] New clique: %s", maskToString(oldClique, Mtm->nAllNodes)); + + if (newClique != trivialClique) + { + MTM_LOG1("[STATE] NONTRIVIAL CLIQUE! (trivial: %s)", maskToString(trivialClique, Mtm->nAllNodes)); // XXXX some false-positives, fixme + } + + /* + * We are using clique only to disable nodes. + * So find out what node should be disabled and disable them. + */ + MtmLock(LW_EXCLUSIVE); + + Mtm->clique = newClique; + + /* + * Do not perform any action based on clique with referee grant, + * because we can disable ourself. + * But we also need to maintain actual clique not disable ourselves + * when neighbour node will come back and we erase refereeGrant. + */ + if (Mtm->refereeGrant) + { + MtmUnlock(); + return; + } + + for (i = 0; i < Mtm->nAllNodes; i++) + { + bool old_status = BIT_CHECK(Mtm->disabledNodeMask, i); + bool new_status = BIT_CHECK(~newClique, i); + + if (new_status && new_status != old_status) + { + if ( i+1 == MtmNodeId ) + MtmStateProcessEvent(MTM_CLIQUE_DISABLE); + else + MtmStateProcessNeighborEvent(i+1, MTM_NEIGHBOR_CLIQUE_DISABLE); + } + } + + MtmCheckState(); + MtmUnlock(); +} + +static int +MtmRefereeGetWinner(void) +{ + PGconn* conn; + PGresult *res; + char sql[128]; + int winner_node_id; + + conn = PQconnectdb_safe(MtmRefereeConnStr, 5); + if (PQstatus(conn) != CONNECTION_OK) + { + MTM_ELOG(WARNING, "Could not connect to referee"); + PQfinish(conn); + return -1; + } + + sprintf(sql, "select referee.get_winner(%d)", MtmNodeId); + res = PQexec(conn, sql); + if (PQresultStatus(res) != PGRES_TUPLES_OK || + PQntuples(res) != 1 || + PQnfields(res) != 1) + { + MTM_ELOG(WARNING, "Refusing unexpected result (r=%d, n=%d, w=%d, k=%s) from referee.get_winner()", + PQresultStatus(res), PQntuples(res), PQnfields(res), PQgetvalue(res, 0, 0)); + PQclear(res); + PQfinish(conn); + return -1; + } + + winner_node_id = atoi(PQgetvalue(res, 0, 0)); + + if (winner_node_id < 1 || winner_node_id > Mtm->nAllNodes) + { + MTM_ELOG(WARNING, + "Referee responded with node_id=%d, it's out of our node range", + winner_node_id); + PQclear(res); + PQfinish(conn); + return -1; + } + + /* Ok, we finally got it! */ + PQclear(res); + PQfinish(conn); + MTM_LOG1("Got referee response, winner node_id=%d.", winner_node_id); + return winner_node_id; +} + +static bool +MtmRefereeClearWinner(void) +{ + PGconn* conn; + PGresult *res; + char *response; + + conn = PQconnectdb_safe(MtmRefereeConnStr, 5); + if (PQstatus(conn) != CONNECTION_OK) + { + MTM_ELOG(WARNING, "Could not connect to referee"); + PQfinish(conn); + return false; + } + + res = PQexec(conn, "select referee.clean()"); + if (PQresultStatus(res) != PGRES_TUPLES_OK || + PQntuples(res) != 1 || + PQnfields(res) != 1) + { + MTM_ELOG(WARNING, "Refusing unexpected result (r=%d, n=%d, w=%d, k=%s) from referee.clean().", + PQresultStatus(res), PQntuples(res), PQnfields(res), PQgetvalue(res, 0, 0)); + PQclear(res); + PQfinish(conn); + return false; + } + + response = PQgetvalue(res, 0, 0); + + if (strncmp(response, "t", 1) != 0) + { + MTM_ELOG(WARNING, "Wrong response from referee.clean(): '%s'", response); + PQclear(res); + PQfinish(conn); + return false; + } + + /* Ok, we finally got it! */ + MTM_LOG1("Got referee clear response '%s'", response); + PQclear(res); + PQfinish(conn); + return true; +} diff --git a/contrib/mmts/state.h b/contrib/mmts/state.h new file mode 100644 index 0000000000..1cab8096c0 --- /dev/null +++ b/contrib/mmts/state.h @@ -0,0 +1,35 @@ + +typedef enum +{ + MTM_NEIGHBOR_CLIQUE_DISABLE, + MTM_NEIGHBOR_WAL_RECEIVER_START, + MTM_NEIGHBOR_WAL_SENDER_START_RECOVERY, + MTM_NEIGHBOR_WAL_SENDER_START_RECOVERED, + MTM_NEIGHBOR_RECOVERY_CAUGHTUP +} MtmNeighborEvent; + +typedef enum +{ + MTM_REMOTE_DISABLE, + MTM_CLIQUE_DISABLE, + MTM_CLIQUE_MINORITY, + MTM_ARBITER_RECEIVER_START, + MTM_RECOVERY_START1, + MTM_RECOVERY_START2, + MTM_RECOVERY_FINISH1, + MTM_RECOVERY_FINISH2, + MTM_NONRECOVERABLE_ERROR +} MtmEvent; + +extern void MtmStateProcessNeighborEvent(int node_id, MtmNeighborEvent ev); +extern void MtmStateProcessEvent(MtmEvent ev); +extern void MtmDisableNode(int nodeId); +extern void MtmEnableNode(int nodeId); + +extern void MtmOnNodeDisconnect(int nodeId); +extern void MtmOnNodeConnect(int nodeId); +extern void MtmReconnectNode(int nodeId); + +extern void MtmRefreshClusterStatus(void); + +extern int countZeroBits(nodemask_t mask, int nNodes); diff --git a/contrib/mmts/t/000_deadlock.pl b/contrib/mmts/t/000_deadlock._pl similarity index 100% rename from contrib/mmts/t/000_deadlock.pl rename to contrib/mmts/t/000_deadlock._pl diff --git a/contrib/mmts/t/000_truncate.pl b/contrib/mmts/t/000_truncate.pl new file mode 100644 index 0000000000..dfcba79195 --- /dev/null +++ b/contrib/mmts/t/000_truncate.pl @@ -0,0 +1,61 @@ +use strict; +use warnings; + +use Cluster; +use TestLib; +use Test::More tests => 1; +use IPC::Run qw(start finish); +use Cwd; + +my $nnodes = 2; +my $cluster = new Cluster($nnodes); + +$cluster->init(); +$cluster->configure(); +$cluster->start(); +note("sleeping 10"); +sleep(10); + +my ($in, $out, $err, $rc); +my $seconds = 30; +$in = ''; +$out = ''; + +my @init_argv = ( + 'pgbench', + '-i', + -h => $cluster->{nodes}->[0]->host(), + -p => $cluster->{nodes}->[0]->port(), + 'postgres', +); +note("running pgbench init"); +my $init_run = start(\@init_argv, $in, $out); +finish($init_run) || BAIL_OUT("pgbench exited with $?"); + +my @bench_argv = ( + 'pgbench', + "-T $seconds", + '-N', + '-c 8', + -h => $cluster->{nodes}->[0]->host(), + -p => $cluster->{nodes}->[0]->port(), + 'postgres', +); +note("running pgbench: " . join(' ', @bench_argv)); +my $bench_run = start(\@bench_argv, $in, $out); +sleep(2); + +my $started = time(); +while (time() - $started < $seconds) +{ + ($rc, $out, $err) = $cluster->psql(1, 'postgres', "truncate pgbench_history;"); + ($rc, $out, $err) = $cluster->psql(1, 'postgres', "vacuum full"); + ($rc, $out, $err) = $cluster->psql(0, 'postgres', "truncate pgbench_history;"); + ($rc, $out, $err) = $cluster->psql(0, 'postgres', "vacuum full"); + sleep(0.5); +} + +finish($bench_run) || $cluster->bail_out_with_logs("pgbench exited with $?"); +sleep(1); +ok($cluster->stop('fast'), "cluster stops"); +1; diff --git a/contrib/mmts/t/001_basic_recovery.pl b/contrib/mmts/t/001_basic_recovery.pl index 8d0972341d..971cdabbee 100644 --- a/contrib/mmts/t/001_basic_recovery.pl +++ b/contrib/mmts/t/001_basic_recovery.pl @@ -13,6 +13,7 @@ # Wait until nodes are up ############################################################################### +my $ret; my $psql_out; # XXX: create extension on start and poll_untill status is Online sleep(10); @@ -38,81 +39,79 @@ # Work after node stop ############################################################################### -diag("stopping node 2"); -if ($cluster->stopid(2, 'immediate')) { - pass("node 2 stops"); +note("stopping node 2"); +if ($cluster->stopid(2, 'fast')) { + pass("node 2 stops in fast mode"); } else { - fail("node 2 stops"); - if (!$cluster->stopid(2, 'kill')) { - my $name = $cluster->{nodes}->[2]->name; - BAIL_OUT("failed to kill $name"); - } + my $name = $cluster->{nodes}->[2]->name; + $cluster->bail_out_with_logs("failed to stop $name in fast mode"); } sleep(5); # Wait until failure of node will be detected -diag("inserting 2 on node 0"); -my $ret = $cluster->psql(0, 'postgres', "insert into t values(2, 20);"); # this transaciton may fail -diag "tx1 status = $ret"; +note("inserting 2 on node 0"); +$ret = $cluster->psql(0, 'postgres', "insert into t values(2, 20);"); # this transaciton may fail +note("tx1 status = $ret"); + -diag("inserting 3 on node 1"); -my $ret = $cluster->psql(1, 'postgres', "insert into t values(3, 30);"); # this transaciton may fail -diag "tx2 status = $ret"; +note("inserting 3 on node 1"); +$ret = $cluster->psql(1, 'postgres', "insert into t values(3, 30);"); # this transaciton may fail +note("tx2 status = $ret"); -diag("inserting 4 on node 0 (can fail)"); -my $ret = $cluster->psql(0, 'postgres', "insert into t values(4, 40);"); -diag "tx1 status = $ret"; +note("inserting 4 on node 0 (can fail)"); +$ret = $cluster->psql(0, 'postgres', "insert into t values(4, 40);"); +note("tx1 status = $ret"); -diag("inserting 5 on node 1 (can fail)"); -my $ret = $cluster->psql(1, 'postgres', "insert into t values(5, 50);"); -diag "tx2 status = $ret"; +note("inserting 5 on node 1 (can fail)"); +$ret = $cluster->psql(1, 'postgres', "insert into t values(5, 50);"); +note("tx2 status = $ret"); -diag("selecting"); +note("selecting"); $cluster->psql(1, 'postgres', "select v from t where k=4;", stdout => \$psql_out); -diag("selected"); +note("selected"); is($psql_out, '40', "Check replication after node failure."); ############################################################################### # Work after node start ############################################################################### -diag("starting node 2"); +note("starting node 2"); $cluster->{nodes}->[2]->start; sleep(5); # Wait until node is started -diag("inserting 6 on node 0 (can fail)"); +note("inserting 6 on node 0 (can fail)"); $cluster->psql(0, 'postgres', "insert into t values(6, 60);"); -diag("inserting 7 on node 1 (can fail)"); +note("inserting 7 on node 1 (can fail)"); $cluster->psql(1, 'postgres', "insert into t values(7, 70);"); -diag("polling node 2"); +note("polling node 2"); for (my $poller = 0; $poller < 3; $poller++) { my $pollee = 2; ok($cluster->poll($poller, 'postgres', $pollee, 10, 1), "node $pollee is online according to node $poller"); } -diag("getting cluster state"); +note("getting cluster state"); $cluster->psql(0, 'postgres', "select * from mtm.get_cluster_state();", stdout => \$psql_out); -diag("Node 1 status: $psql_out"); +note("Node 1 status: $psql_out"); $cluster->psql(1, 'postgres', "select * from mtm.get_cluster_state();", stdout => \$psql_out); -diag("Node 2 status: $psql_out"); +note("Node 2 status: $psql_out"); $cluster->psql(2, 'postgres', "select * from mtm.get_cluster_state();", stdout => \$psql_out); -diag("Node 3 status: $psql_out"); +note("Node 3 status: $psql_out"); -diag("inserting 8 on node 0"); +note("inserting 8 on node 0"); $cluster->psql(0, 'postgres', "insert into t values(8, 80);"); -diag("inserting 9 on node 1"); +note("inserting 9 on node 1"); $cluster->psql(1, 'postgres', "insert into t values(9, 90);"); -diag("selecting from node 2"); +note("selecting from node 2"); $cluster->psql(2, 'postgres', "select v from t where k=8;", stdout => \$psql_out); -diag("selected"); +note("selected"); is($psql_out, '80', "Check replication after failed node recovery."); $cluster->psql(2, 'postgres', "select v from t where k=9;", stdout => \$psql_out); -diag("selected"); +note("selected"); is($psql_out, '90', "Check replication after failed node recovery."); diff --git a/contrib/mmts/t/002_cross.pl b/contrib/mmts/t/002_cross.pl index c69dc98c58..013bf13e6b 100644 --- a/contrib/mmts/t/002_cross.pl +++ b/contrib/mmts/t/002_cross.pl @@ -8,7 +8,7 @@ use Cwd; my $nnodes = 2; -my $nclients = 10; +my $nclients = 2; my $nkeys = $nnodes * $nclients; my $cluster = new Cluster($nnodes); @@ -18,18 +18,18 @@ my ($rc, $in, $out, $err); -diag("sleeping 10"); +note("sleeping 10"); sleep(10); -diag("preparing the tables"); +note("preparing the tables"); if ($cluster->psql(0, 'postgres', "create table t (k int primary key, v int)")) { - BAIL_OUT('failed to create t'); + $cluster->bail_out_with_logs('failed to create t'); } if ($cluster->psql(0, 'postgres', "insert into t (select generate_series(0, $nkeys - 1), 0)")) { - BAIL_OUT('failed to fill t'); + $cluster->bail_out_with_logs('failed to fill t'); } sub appender @@ -50,7 +50,7 @@ sub appender 'postgres', ); - diag("running[" . getcwd() . "]: " . join(' ', @argv)); + note("running[" . getcwd() . "]: " . join(' ', @argv)); return start(\@argv, $inref, $outref); } @@ -59,12 +59,12 @@ sub state_dump { my $state = shift; - diag("<<<<<"); + note("<<<<<"); while (my ($key, $value) = each(%{$state})) { - diag("$key -> $value"); + note("$key -> $value"); } - diag(">>>>>"); + note(">>>>>"); } sub state_leq @@ -75,13 +75,13 @@ sub state_leq { if (!exists($b->{$key})) { - diag("b has no key $key\n"); + note("b has no key $key\n"); return 0; } if ($b->{$key} < $value) { - diag($b->{$key} . " < $value\n"); + note($b->{$key} . " < $value\n"); return 0; } } @@ -102,8 +102,8 @@ sub parse_state return $state; } -diag("starting appenders"); -diag("starting benches"); +note("starting appenders"); +note("starting benches"); $in = ''; $out = ''; my @appenders = (); @@ -136,16 +136,20 @@ sub parse_state { if (!state_leq($state_a, $state_b) && !state_leq($state_a, $state_b)) { - diag("cross anomaly detected:\n===a\n$out_a\n+++b\n$out_b\n---\n"); + note("cross anomaly detected:\n===a\n$out_a\n+++b\n$out_b\n---\n"); $anomalies++; } } } -diag("finishing benches"); +note("finishing benches"); foreach my $appender (@appenders) { - finish($appender) || BAIL_OUT("pgbench exited with $?"); + if (!finish($appender)) + { + $cluster->dumplogs(); + $cluster->bail_out_with_logs("pgbench exited with $?"); + } } is($anomalies, 0, "no cross anomalies after $selects selects"); diff --git a/contrib/mmts/t/003_pgbench.pl b/contrib/mmts/t/003_pgbench.pl index 1847d5c786..abd4b3cb97 100644 --- a/contrib/mmts/t/003_pgbench.pl +++ b/contrib/mmts/t/003_pgbench.pl @@ -16,23 +16,23 @@ my ($rc, $in, $out, $err); -diag("sleeping 10"); +note("sleeping 10"); sleep(10); -diag("preparing the tables"); +note("preparing the tables"); if ($cluster->psql(0, 'postgres', "create table t (k int primary key, v int)")) { - BAIL_OUT('failed to create t'); + $cluster->bail_out_with_logs('failed to create t'); } if ($cluster->psql(0, 'postgres', "insert into t (select generate_series(0, 999), 0)")) { - BAIL_OUT('failed to fill t'); + $cluster->bail_out_with_logs('failed to fill t'); } if ($cluster->psql(0, 'postgres', "create table reader_log (v int)")) { - BAIL_OUT('failed to create reader_log'); + $cluster->bail_out_with_logs('failed to create reader_log'); } sub reader @@ -56,7 +56,7 @@ sub reader 'postgres', ); - diag("running[" . getcwd() . "]: " . join(' ', @argv)); + note("running[" . getcwd() . "]: " . join(' ', @argv)); return start(\@argv, $inref, $outref); } @@ -65,8 +65,8 @@ sub writer { my ($node, $inref, $outref) = @_; - my $clients = 10; - my $jobs = 10; + my $clients = 5; + my $jobs = 1; my $seconds = 30; my @argv = ( 'pgbench', @@ -80,12 +80,12 @@ sub writer 'postgres', ); - diag("running[" . getcwd() . "]: " . join(' ', @argv)); + note("running[" . getcwd() . "]: " . join(' ', @argv)); return start(\@argv, $inref, $outref); } -diag("starting benches"); +note("starting benches"); $in = ''; $out = ''; my @benches = (); @@ -95,14 +95,14 @@ sub writer push(@benches, reader($node, \$in, \$out)); } -diag("finishing benches"); +note("finishing benches"); foreach my $bench (@benches) { - finish($bench) || BAIL_OUT("pgbench exited with $?"); + finish($bench) || $cluster->bail_out_with_logs("pgbench exited with $?"); } -diag($out); +note($out); -diag("checking readers' logs"); +note("checking readers' logs"); ($rc, $out, $err) = $cluster->psql(0, 'postgres', "select count(*) from reader_log where v != 0;"); is($out, 0, "there is nothing except zeros in reader_log"); diff --git a/contrib/mmts/t/004_recovery.pl b/contrib/mmts/t/004_recovery.pl new file mode 100644 index 0000000000..a2ccd32d72 --- /dev/null +++ b/contrib/mmts/t/004_recovery.pl @@ -0,0 +1,128 @@ +use strict; +use warnings; +use Cluster; +use TestLib; +use Test::More tests => 4; + + +my $cluster = new Cluster(3); +$cluster->init(); +$cluster->configure(); +$cluster->start(); +sleep(10); + +######################################################## +# Check data integrity before and after recovery +######################################################## + +$cluster->pgbench(1, ('-i', -s => '10') ); +$cluster->pgbench(0, ('-n','-N', -T => '4') ); +$cluster->pgbench(1, ('-n','-N', -T => '4') ); +$cluster->pgbench(2, ('-n','-N', -T => '4') ); + + +my $hash0; my $hash1; my $hash2; my $oldhash; +my $hash_query = " +select + md5('(' || string_agg(aid::text || ', ' || abalance::text , '),(') || ')') +from + (select * from pgbench_accounts order by aid) t;"; + +$cluster->{nodes}->[2]->stop('fast'); +sleep(3); + +$cluster->pgbench(0, ('-n','-N', -T => '4') ); +$cluster->pgbench(1, ('-n','-N', -T => '4') ); + +$cluster->psql(0, 'postgres', $hash_query, stdout => \$hash0); +$cluster->psql(1, 'postgres', $hash_query, stdout => \$hash1); +# $cluster->psql(2, 'postgres', $hash_query, stdout => \$hash2); + +is( ($hash0 == $hash1) , 1, "Check that hash is the same before recovery"); +$oldhash = $hash0; + +$cluster->{nodes}->[2]->start; +sleep(10); + +$cluster->psql(0, 'postgres', $hash_query, stdout => \$hash0); +$cluster->psql(1, 'postgres', $hash_query, stdout => \$hash1); +$cluster->psql(2, 'postgres', $hash_query, stdout => \$hash2); + +note("$oldhash, $hash0, $hash1, $hash2"); +is( (($hash0 == $hash1) and ($hash1 == $hash2) and ($oldhash == $hash0)) , 1, "Check that hash is the same after recovery"); + +######################################################## +# Check start after all nodes were disconnected +######################################################## + +$cluster->psql(0, 'postgres', "create extension multimaster; + create table if not exists t(k int primary key, v int);"); + +$cluster->psql(0, 'postgres', "insert into t values(1, 10);"); +$cluster->psql(1, 'postgres', "insert into t values(2, 20);"); +$cluster->psql(2, 'postgres', "insert into t values(3, 30);"); +sleep(2); + +my $sum0; my $sum1; my $sum2; + +$cluster->{nodes}->[1]->stop('fast'); +$cluster->{nodes}->[2]->stop('fast'); + +sleep(5); +$cluster->{nodes}->[1]->start; +# try to start node3 right here? +sleep(5); +$cluster->{nodes}->[2]->start; +sleep(5); + +$cluster->psql(0, 'postgres', "select sum(v) from t;", stdout => \$sum0); +$cluster->psql(1, 'postgres', "select sum(v) from t;", stdout => \$sum1); +$cluster->psql(2, 'postgres', "select sum(v) from t;", stdout => \$sum2); +is( (($sum0 == 60) and ($sum1 == $sum0) and ($sum2 == $sum0)) , 1, "Check that nodes are working and sync"); + +######################################################## +# Check recovery during some load +######################################################## + +$cluster->pgbench(0, ('-i', -s => '10') ); +$cluster->pgbench(0, ('-N', -T => '1') ); +$cluster->pgbench(1, ('-N', -T => '1') ); +$cluster->pgbench(2, ('-N', -T => '1') ); + +# kill node while neighbour is under load +my $pgb_handle = $cluster->pgbench_async(1, ('-N', -T => '10') ); +sleep(5); +$cluster->{nodes}->[2]->stop('fast'); +$cluster->pgbench_await($pgb_handle); + +# start node while neighbour is under load +$pgb_handle = $cluster->pgbench_async(0, ('-N', -T => '50') ); +sleep(10); +$cluster->{nodes}->[2]->start; +$cluster->pgbench_await($pgb_handle); + +# give it extra 10s to recover +sleep(10); + +# check data identity +$cluster->psql(0, 'postgres', $hash_query, stdout => \$hash0); +$cluster->psql(1, 'postgres', $hash_query, stdout => \$hash1); +$cluster->psql(2, 'postgres', $hash_query, stdout => \$hash2); +note("$hash0, $hash1, $hash2"); +is( (($hash0 == $hash1) and ($hash1 == $hash2)) , 1, "Check that hash is the same"); + +# $cluster->psql(0, 'postgres', "select sum(abalance) from pgbench_accounts;", stdout => \$sum0); +# $cluster->psql(1, 'postgres', "select sum(abalance) from pgbench_accounts;", stdout => \$sum1); +# $cluster->psql(2, 'postgres', "select sum(abalance) from pgbench_accounts;", stdout => \$sum2); + +# note("Sums: $sum0, $sum1, $sum2"); +# is($sum2, $sum0, "Check that sum_2 == sum_0"); +# is($sum2, $sum1, "Check that sum_2 == sum_1"); + +if ($sum2 == '') { + sleep(3600); +} + +$cluster->{nodes}->[0]->stop('fast'); +$cluster->{nodes}->[1]->stop('fast'); +$cluster->{nodes}->[2]->stop('fast'); diff --git a/contrib/mmts/t/005_add_stop_node.pl b/contrib/mmts/t/005_add_stop_node.pl new file mode 100644 index 0000000000..0c8e930582 --- /dev/null +++ b/contrib/mmts/t/005_add_stop_node.pl @@ -0,0 +1,112 @@ +use strict; +use warnings; +use PostgresNode; +use Cluster; +use TestLib; +use Test::More tests => 7; + +my $cluster = new Cluster(3); +$cluster->init(); +$cluster->configure(); +$cluster->start(); + +# XXXX: delete all '-n' ? + +# await online status +$cluster->{nodes}->[0]->poll_query_until('postgres', "select 't'"); + +# init +$cluster->pgbench(0, ('-i', -s => '10') ); +$cluster->pgbench(0, ('-N', '-n', -T => '1') ); +$cluster->pgbench(1, ('-N', '-n', -T => '1') ); +$cluster->pgbench(2, ('-N', '-n', -T => '1') ); +$cluster->psql(0, 'postgres', "create extension multimaster"); + + +# ################################################################################ +# # auto recovery +# ################################################################################ +$cluster->{nodes}->[2]->stop('fast'); +$cluster->pgbench(0, ('-N', '-n', -T => '1') ); +$cluster->{nodes}->[2]->start; +$cluster->{nodes}->[2]->poll_query_until('postgres', "select 't'"); +is($cluster->is_data_identic( (0,1,2) ), 1, "check auto recovery"); + +# ################################################################################ +# # auto recovery with dead slots +# ################################################################################ + +# ## TBD + +# ################################################################################ +# # basebackup and add node +# ################################################################################ + +my $new_connstr; + +$cluster->add_node(); +$new_connstr = $cluster->{nodes}->[3]->{mmconnstr}; +$cluster->psql(0, 'postgres', "SELECT mtm.add_node('$new_connstr')"); +# await for comletion? +$cluster->{nodes}->[3]->start; +$cluster->{nodes}->[3]->poll_query_until('postgres', "select 't'"); +$cluster->pgbench(0, ('-N', '-n', -T => '1') ); +$cluster->pgbench(3, ('-N', '-n', -T => '1') ); +is($cluster->is_data_identic( (0,1,2,3) ), 1, "basebackup and add node"); + +# ################################################################################ +# # soft stop / resume +# ################################################################################ + +my ($stopped_out, $stopped_err); + +$cluster->psql(0, 'postgres', "select mtm.stop_node(3,'f')"); +# await for comletion? +$cluster->pgbench(0, ('-N', '-n', -T => '1') ); +$cluster->pgbench(1, ('-N', '-n', -T => '1') ); +$cluster->pgbench(3, ('-N', '-n', -T => '1') ); +$cluster->{nodes}->[2]->psql('postgres', "select 't'", + stdout => \$stopped_out, stderr => \$stopped_err); +is($cluster->is_data_identic( (0,1,3) ), 1, "soft stop / resume"); +print("::$stopped_out ::$stopped_err\n"); +is($stopped_out eq '' && $stopped_err ne '', 1, "soft stop / resume"); + +$cluster->psql(0, 'postgres', "select mtm.resume_node(3)"); +$cluster->{nodes}->[2]->poll_query_until('postgres', "select 't'"); +$cluster->pgbench(2, ('-N', '-n', -T => '1') ); +is($cluster->is_data_identic( (0,1,2,3) ), 1, "soft stop / resume"); + +################################################################################ +# hard stop / basebackup / recover +################################################################################ + +note('Stopping node with slot drop'); +$cluster->psql(0, 'postgres', "select mtm.stop_node(3,'t')"); +# await for comletion? +$cluster->{nodes}->[2]->stop('fast'); + +$cluster->pgbench(0, ('-N', '-n', -T => '1') ); +$cluster->pgbench(1, ('-N', '-n', -T => '1') ); +$cluster->pgbench(3, ('-N', '-n', -T => '1') ); +is($cluster->is_data_identic( (0,1,3) ), 1, "hard stop / resume"); + +TODO: { +todo_skip "Not working correcly yet",1; +$cluster->psql(0, 'postgres', "select mtm.recover_node(3)"); + +# now we need to perform backup from live node +$cluster->add_node(port => $cluster->{nodes}->[2]->{_port}, + arbiter_port => $cluster->{nodes}->[2]->{arbiter_port}, + node_id => 3); + +my $dd = $cluster->{nodes}->[4]->data_dir; +note("preparing to start $dd"); + +$cluster->{nodes}->[4]->start; +$cluster->{nodes}->[4]->poll_query_until('postgres', "select 't'"); +$cluster->pgbench(0, ('-N', '-n', -T => '1') ); +$cluster->pgbench(1, ('-N', '-n', -T => '1') ); +$cluster->pgbench(3, ('-N', '-n', -T => '1') ); +$cluster->pgbench(4, ('-N', '-n', -T => '1') ); +is($cluster->is_data_identic( (0,1,3,4) ), 1, "hard stop / resume"); +} diff --git a/contrib/mmts/tests/dtmbench.cpp b/contrib/mmts/tests/dtmbench.cpp index e92f1a5798..b57f64e938 100644 --- a/contrib/mmts/tests/dtmbench.cpp +++ b/contrib/mmts/tests/dtmbench.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include @@ -11,6 +12,7 @@ #include #include +#include #include #include @@ -21,7 +23,7 @@ template class my_unique_ptr { T* ptr; - + public: my_unique_ptr(T* p = NULL) : ptr(p) {} ~my_unique_ptr() { delete ptr; } @@ -31,7 +33,7 @@ class my_unique_ptr void operator=(my_unique_ptr& other) { ptr = other.ptr; other.ptr = NULL; - } + } }; typedef void* (*thread_proc_t)(void*); @@ -46,7 +48,7 @@ struct thread size_t aborts; int id; - void start(int tid, thread_proc_t proc) { + void start(int tid, thread_proc_t proc) { id = tid; updates = 0; selects = 0; @@ -55,7 +57,7 @@ struct thread pthread_create(&t, NULL, proc, this); } - void wait() { + void wait() { pthread_join(t, NULL); } }; @@ -69,6 +71,8 @@ struct config int updatePercent; vector connections; bool scatter; + bool avoidDeadlocks; + bool subtransactions; config() { nReaders = 1; @@ -77,6 +81,8 @@ struct config nAccounts = 100000; updatePercent = 100; scatter = false; + avoidDeadlocks = false; + subtransactions = false; } }; @@ -113,7 +119,7 @@ T execQuery( transaction_base& txn, char const* sql, ...) va_end(args); result r = txn.exec(buf); return r[0][0].as(T()); -} +} void* reader(void* arg) { @@ -129,7 +135,7 @@ void* reader(void* arg) result r = txn.exec("select sum(v) from t"); int64_t sum = r[0][0].as(int64_t()); if (sum != prevSum) { - r = txn.exec("select mtm.get_snapshot()"); + r = txn.exec("select mtm.get_snapshot()"); printf("Total=%ld, snapshot=%ld\n", sum, r[0][0].as(int64_t())); prevSum = sum; } @@ -139,7 +145,7 @@ void* reader(void* arg) } return NULL; } - + void* writer(void* arg) { thread& t = *(thread*)arg; @@ -148,32 +154,65 @@ void* writer(void* arg) conns[i] = new connection(cfg.connections[i]); } for (int i = 0; i < cfg.nIterations; i++) - { - //work + { + //work //transaction txn(*conns[random() % conns.size()]); transaction txn(*conns[random() % conns.size()]); int srcAcc = random() % cfg.nAccounts; int dstAcc = random() % cfg.nAccounts; - if (cfg.scatter) { + if (cfg.scatter) { srcAcc = srcAcc/cfg.nWriters*cfg.nWriters + t.id; dstAcc = dstAcc/cfg.nWriters*cfg.nWriters + t.id; + } else if (cfg.subtransactions) { + if (dstAcc < srcAcc) { + int tmp = srcAcc; + srcAcc = dstAcc; + dstAcc = tmp; + } + while (true) { + try { + subtransaction subtxn(txn, "withdraw"); + exec(subtxn, "update t set v = v - 1 where u=%d", srcAcc); + break; + } catch (pqxx_exception const& x) { + t.aborts += 1; + } + } + while (true) { + try { + subtransaction subtxn(txn, "deposit"); + exec(subtxn, "update t set v = v + 1 where u=%d", dstAcc); + break; + } catch (pqxx_exception const& x) { + t.aborts += 1; + } + } + txn.commit(); + t.transactions += 1; + continue; + } else if (cfg.avoidDeadlocks) { + if (dstAcc < srcAcc) { + int tmp = srcAcc; + srcAcc = dstAcc; + dstAcc = tmp; + } } - try { - if (random() % 100 < cfg.updatePercent) { + try { + if (random() % 100 < cfg.updatePercent) { exec(txn, "update t set v = v - 1 where u=%d", srcAcc); exec(txn, "update t set v = v + 1 where u=%d", dstAcc); t.updates += 2; - } else { + } else { int64_t sum = execQuery(txn, "select v from t where u=%d", srcAcc) + execQuery(txn, "select v from t where u=%d", dstAcc); - if (sum > cfg.nIterations*cfg.nWriters || sum < -cfg.nIterations*cfg.nWriters) { + if (sum > cfg.nIterations*cfg.nWriters || sum < -cfg.nIterations*cfg.nWriters) { printf("Wrong sum=%ld\n", sum); } t.selects += 2; } - txn.commit(); + txn.commit(); t.transactions += 1; - } catch (pqxx_exception const& x) { + } catch (pqxx_exception const& x) { txn.abort(); t.aborts += 1; i -= 1; @@ -182,7 +221,24 @@ void* writer(void* arg) } return NULL; } - + +void* monitor(void* arg) +{ + vector& writers = *(vector*)arg; + time_t start = time(NULL); + size_t elapsed = 0; + while (running) { + sleep(1); + long total = 0; + for (int i = 0; i < cfg.nWriters; i++) { + total += writers[i].transactions; + } + printf("%d: %5ld TPS\n", int(time(NULL) - start), long(total - elapsed)); + elapsed = total; + } + return NULL; +} + void initializeDatabase() { connection conn(cfg.connections[0]); @@ -190,8 +246,8 @@ void initializeDatabase() printf("Creating database schema...\n"); { nontransaction txn(conn); - exec(txn, "drop extension if exists multimaster"); - exec(txn, "create extension multimaster"); + //exec(txn, "drop extension if exists multimaster"); + //exec(txn, "create extension multimaster"); exec(txn, "drop table if exists t"); exec(txn, "create table t(u int primary key, v int)"); } @@ -213,15 +269,15 @@ int main (int argc, char* argv[]) return 1; } - for (int i = 1; i < argc; i++) { - if (argv[i][0] == '-') { - switch (argv[i][1]) { + for (int i = 1; i < argc; i++) { + if (argv[i][0] == '-') { + switch (argv[i][1]) { case 'r': cfg.nReaders = atoi(argv[++i]); continue; case 'w': cfg.nWriters = atoi(argv[++i]); - continue; + continue; case 'a': cfg.nAccounts = atoi(argv[++i]); continue; @@ -240,6 +296,12 @@ int main (int argc, char* argv[]) case 'i': initialize = true; continue; + case 'd': + cfg.avoidDeadlocks = true; + continue; + case 'x': + cfg.subtransactions = true; + continue; } } printf("Options:\n" @@ -249,11 +311,14 @@ int main (int argc, char* argv[]) "\t-n N\tnumber of iterations (1000)\n" "\t-p N\tupdate percent (100)\n" "\t-c STR\tdatabase connection string\n" + "\t-s\tscatter ids to avoid conflicts\n" + "\t-x\tuse subtransactions\n" + "\t-d\tavoid deadlocks\n" "\t-i\tinitialize database\n"); return 1; } - if (initialize) { + if (initialize) { initializeDatabase(); printf("%d accounts inserted\n", cfg.nAccounts); return 0; @@ -264,34 +329,38 @@ int main (int argc, char* argv[]) vector readers(cfg.nReaders); vector writers(cfg.nWriters); + pthread_t logger; + size_t nAborts = 0; size_t nUpdates = 0; size_t nSelects = 0; size_t nTransactions = 0; - for (int i = 0; i < cfg.nReaders; i++) { + for (int i = 0; i < cfg.nReaders; i++) { readers[i].start(i, reader); } - for (int i = 0; i < cfg.nWriters; i++) { + for (int i = 0; i < cfg.nWriters; i++) { writers[i].start(i, writer); } - - for (int i = 0; i < cfg.nWriters; i++) { + pthread_create(&logger, NULL, monitor, &writers); + + for (int i = 0; i < cfg.nWriters; i++) { writers[i].wait(); nUpdates += writers[i].updates; nSelects += writers[i].selects; nAborts += writers[i].aborts; nTransactions += writers[i].transactions; } - + running = false; - for (int i = 0; i < cfg.nReaders; i++) { + for (int i = 0; i < cfg.nReaders; i++) { readers[i].wait(); nSelects += readers[i].selects; nTransactions += writers[i].transactions; } - + pthread_join(logger, NULL); + time_t elapsed = getCurrentTime() - start; printf( @@ -300,10 +369,10 @@ int main (int argc, char* argv[]) " \"readers\":%d, \"writers\":%d, \"update_percent\":%d, \"accounts\":%d, \"iterations\":%d, \"hosts\":%ld}\n", (double)(nTransactions*USEC)/elapsed, nTransactions, - nSelects, + nSelects, nUpdates, nAborts, - (int)(nAborts*100/nTransactions), + (int)(nAborts*100/nTransactions), cfg.nReaders, cfg.nWriters, cfg.updatePercent, diff --git a/contrib/mmts/tests/regress.sql b/contrib/mmts/tests/regress.sql new file mode 100644 index 0000000000..8257d6fc4e --- /dev/null +++ b/contrib/mmts/tests/regress.sql @@ -0,0 +1,6 @@ +--create extension multimaster; +ALTER DATABASE "postgres" SET lc_messages TO 'C'; +ALTER DATABASE "postgres" SET lc_monetary TO 'C'; +ALTER DATABASE "postgres" SET lc_numeric TO 'C'; +ALTER DATABASE "postgres" SET lc_time TO 'C'; +ALTER DATABASE "postgres" SET timezone_abbreviations TO 'Default'; diff --git a/contrib/mmts/tests/reinit-mm.sh b/contrib/mmts/tests/reinit-mm.sh index 809247e40d..8b36c88de1 100755 --- a/contrib/mmts/tests/reinit-mm.sh +++ b/contrib/mmts/tests/reinit-mm.sh @@ -1,30 +1,33 @@ +CURPATH=`pwd` +BASEDIR=$CURPATH/../../.. +export PATH=$BASEDIR/tmp_install/usr/local/pgsql/bin/:$PATH +export DESTDIR=$BASEDIR/tmp_install + n_nodes=3 -export PATH=~/code/postgres_cluster/install/bin/:$PATH ulimit -c unlimited pkill -9 postgres -pkill -9 arbiter -cd ~/code/postgres_cluster/contrib/mmts/ -make clean && make install -cd ~/code/postgres_cluster/contrib/raftable/ +cd $BASEDIR +make install + +cd $BASEDIR/contrib/mmts make clean && make install -cd ~/code/postgres_cluster/contrib/mmts/tests +cd $BASEDIR/contrib/mmts/tests -rm -fr node? *.log dtm +rm -fr node? *.log conn_str="" sep="" for ((i=1;i<=n_nodes;i++)) do port=$((5431 + i)) - raft_port=$((6665 + i)) arbiter_port=$((7000 + i)) - conn_str="$conn_str${sep}dbname=regression user=stas host=127.0.0.1 port=$port arbiterport=$arbiter_port sslmode=disable" - raft_conn_str="$raft_conn_str${sep}${i}:localhost:$raft_port" + conn_str="$conn_str${sep}dbname=regression user=stas host=127.0.0.1 port=$port arbiter_port=$arbiter_port sslmode=disable" sep="," initdb node$i pg_ctl -w -D node$i -l node$i.log start createdb regression + # psql regression -c "create table t(id int primary key, v int); insert into t values($i,$i);" pg_ctl -w -D node$i -l node$i.log stop done @@ -46,30 +49,26 @@ do max_worker_processes = 15 max_replication_slots = 10 max_wal_senders = 10 - shared_preload_libraries = 'raftable,multimaster' + shared_preload_libraries = 'multimaster' default_transaction_isolation = 'repeatable read' multimaster.workers = 1 - multimaster.use_raftable = false - multimaster.queue_size=52857600 - multimaster.ignore_tables_without_pk = 1 multimaster.heartbeat_recv_timeout = 2000 multimaster.heartbeat_send_timeout = 250 - multimaster.twopc_min_timeout = 40000000 - multimaster.min_2pc_timeout = 40000000 - multimaster.volkswagen_mode = 1 + #multimaster.volkswagen_mode = 1 multimaster.conn_strings = '$conn_str' multimaster.node_id = $i - multimaster.max_nodes = 3 + multimaster.max_nodes = 4 multimaster.arbiter_port = $arbiter_port - raftable.id = $i - raftable.peers = '$raft_conn_str' + multimaster.min_2pc_timeout = 10000000 + multimaster.trans_spill_threshold = 100 + multimaster.monotonic_sequences = true SQL cp pg_hba.conf node$i pg_ctl -w -D node$i -l node$i.log start done sleep 10 -psql regression < ../../../regress.sql +psql regression < regress.sql -echo Done \ No newline at end of file +echo Done diff --git a/contrib/mmts/tests2/docker-compose.yml b/contrib/mmts/tests2/docker-compose.yml index 68c28f9c18..e31e0c1736 100644 --- a/contrib/mmts/tests2/docker-compose.yml +++ b/contrib/mmts/tests2/docker-compose.yml @@ -12,10 +12,6 @@ services: POSTGRES_USER: 'pg' POSTGRES_DB: 'regression' NODE_ID: 1 - # CONNSTRS: >- - # dbname=regression user=pg host=node1, - # dbname=regression user=pg host=toxi port=12000 arbiterport=12001, - # dbname=regression user=pg host=toxi port=13000 arbiterport=13001 CONNSTRS: >- dbname=regression user=pg host=node1, dbname=regression user=pg host=node2, @@ -33,10 +29,6 @@ services: POSTGRES_USER: 'pg' POSTGRES_DB: 'regression' NODE_ID: 2 - # CONNSTRS: >- - # dbname=regression user=pg host=toxi port=21000 arbiterport=21001, - # dbname=regression user=pg host=node2, - # dbname=regression user=pg host=toxi port=23000 arbiterport=23001 CONNSTRS: >- dbname=regression user=pg host=node1, dbname=regression user=pg host=node2, @@ -54,10 +46,6 @@ services: POSTGRES_USER: 'pg' POSTGRES_DB: 'regression' NODE_ID: 3 - # CONNSTRS: >- - # dbname=regression user=pg host=toxi port=31000 arbiterport=31001, - # dbname=regression user=pg host=toxi port=32000 arbiterport=32001, - # dbname=regression user=pg host=node3 CONNSTRS: >- dbname=regression user=pg host=node1, dbname=regression user=pg host=node2, diff --git a/contrib/mmts/tests2/docker-entrypoint.sh b/contrib/mmts/tests2/docker-entrypoint.sh index ceacd70ec7..5bc82547ef 100755 --- a/contrib/mmts/tests2/docker-entrypoint.sh +++ b/contrib/mmts/tests2/docker-entrypoint.sh @@ -2,6 +2,7 @@ if [ "$1" = 'postgres' ]; then mkdir -p "$PGDATA" + mkdir -p /pg/src/src/test/regress/testtablespace # look specifically for PG_VERSION, as it is expected in the DB dir if [ ! -s "$PGDATA/PG_VERSION" ]; then @@ -45,31 +46,50 @@ if [ "$1" = 'postgres' ]; then # dbname=$POSTGRES_DB user=$POSTGRES_USER host=node2, \ # dbname=$POSTGRES_DB user=$POSTGRES_USER host=node3" + cat <<-EOF >> $PGDATA/postgresql.conf listen_addresses='*' max_prepared_transactions = 100 synchronous_commit = on - fsync = off + fsync = on wal_level = logical max_worker_processes = 30 max_replication_slots = 10 max_wal_senders = 10 shared_preload_libraries = 'multimaster' default_transaction_isolation = 'repeatable read' - log_line_prefix = '%t: ' + log_line_prefix = '%m: ' + wal_writer_delay = 1ms + # log_statement = all - multimaster.workers = 4 multimaster.max_nodes = 3 - multimaster.volkswagen_mode = 1 - multimaster.queue_size=52857600 - multimaster.ignore_tables_without_pk = 1 - multimaster.node_id = $NODE_ID - multimaster.conn_strings = '$CONNSTRS' multimaster.heartbeat_recv_timeout = 1100 multimaster.heartbeat_send_timeout = 250 - multimaster.min_2pc_timeout = 2000 + multimaster.max_recovery_lag = 1GB + multimaster.min_recovery_lag = 10kB + multimaster.preserve_commit_order = off EOF + if [ -n "$NODE_ID" ]; then + echo "multimaster.node_id = $NODE_ID" >> $PGDATA/postgresql.conf + fi + + if [ -n "$CONNSTRS" ]; then + echo "multimaster.conn_strings = '$CONNSTRS'" >> $PGDATA/postgresql.conf + fi + + if [ -n "$MAJOR" ]; then + echo 'multimaster.major_node = on' >> $PGDATA/postgresql.conf + fi + + if [ -n "$REFEREE" ]; then + echo 'multimaster.referee = on' >> $PGDATA/postgresql.conf + fi + + if [ -n "$REFEREE_CONNSTR" ]; then + echo "multimaster.referee_connstring = '$REFEREE_CONNSTR'" >> $PGDATA/postgresql.conf + fi + cat $PGDATA/postgresql.conf pg_ctl -D "$PGDATA" -m fast -w stop diff --git a/contrib/mmts/tests2/lib/bank_client.py b/contrib/mmts/tests2/lib/bank_client.py index fa435d8683..0e39ab68af 100755 --- a/contrib/mmts/tests2/lib/bank_client.py +++ b/contrib/mmts/tests2/lib/bank_client.py @@ -11,6 +11,7 @@ import aioprocessing import multiprocessing import logging +import re class MtmTxAggregate(object): @@ -26,16 +27,19 @@ def clear_values(self): def start_tx(self): self.start_time = datetime.datetime.now() - def finish_tx(self, name): + def finish_tx(self, status): latency = (datetime.datetime.now() - self.start_time).total_seconds() + if "is aborted on node" in status: + status = re.sub(r'MTM-.+\)', '', status) + if latency > self.max_latency: self.max_latency = latency - if name not in self.finish: - self.finish[name] = 1 + if status not in self.finish: + self.finish[status] = 1 else: - self.finish[name] += 1 + self.finish[status] += 1 def as_dict(self): return { @@ -62,6 +66,7 @@ def __init__(self, dsns, n_accounts=100000): # logging.basicConfig(level=logging.DEBUG) self.n_accounts = n_accounts self.dsns = dsns + self.total = 0 self.aggregates = {} keep_trying(40, 1, self.initdb, 'self.initdb') self.running = True @@ -109,20 +114,62 @@ def initdb(self): cur.close() conn.close() + def execute(self, node_id, statements): + con = psycopg2.connect(self.dsns[node_id]) + con.autocommit = True + cur = con.cursor() + for statement in statements: + cur.execute(statement) + cur.close() + con.close() + + def is_data_identic(self): + hashes = set() + + for dsn in self.dsns: + con = psycopg2.connect(dsn) + cur = con.cursor() + cur.execute(""" + select + md5('(' || string_agg(uid::text || ', ' || amount::text , '),(') || ')') + from + (select * from bank_test order by uid) t;""") + hashes.add(cur.fetchone()[0]) + cur.close() + con.close() + + print(hashes) + return (len(hashes) == 1) + + def no_prepared_tx(self): + n_prepared = 0 + + for dsn in self.dsns: + con = psycopg2.connect(dsn) + cur = con.cursor() + cur.execute("select count(*) from pg_prepared_xacts;") + n_prepared += int(cur.fetchone()[0]) + cur.close() + con.close() + + print("n_prepared = %d" % (n_prepared)) + return (n_prepared) + @asyncio.coroutine def status(self): while self.running: msg = yield from self.child_pipe.coro_recv() - if msg == 'status': + if msg == 'status' or msg == 'status_noclean': serialized_aggs = [] for conn_id, conn_aggs in self.aggregates.items(): serialized_aggs.append({}) for aggname, agg in conn_aggs.items(): serialized_aggs[conn_id][aggname] = agg.as_dict() - agg.clear_values() + if msg == 'status': + agg.clear_values() - self.child_pipe.send(serialized_aggs) + yield from self.child_pipe.coro_send(serialized_aggs) else: print('evloop: unknown message') @@ -144,11 +191,15 @@ def exec_tx(self, tx_block, aggname_prefix, conn_i): # enable_hstore tries to perform select from database # which in case of select's failure will lead to exception # and stale connection to the database - conn = yield from aiopg.connect(dsn, enable_hstore=False) - print("reconnected") + conn = yield from aiopg.connect(dsn, enable_hstore=False, timeout=1) + print('Connected %s, %d' % (aggname_prefix, conn_i + 1) ) if (not cur) or cur.closed: - cur = yield from conn.cursor() + # big timeout here is important because on timeout + # expiration psycopg tries to call PQcancel() which + # tries to create blocking connection to postgres and + # blocks evloop + cur = yield from conn.cursor(timeout=3600) # ROLLBACK tx after previous exception. # Doing this here instead of except handler to stay inside try @@ -157,27 +208,31 @@ def exec_tx(self, tx_block, aggname_prefix, conn_i): if status != TRANSACTION_STATUS_IDLE: yield from cur.execute('rollback') - yield from tx_block(conn, cur, agg) + yield from tx_block(conn, cur, agg, conn_i) agg.finish_tx('commit') except psycopg2.Error as e: - agg.finish_tx(str(e).strip()) + msg = str(e).strip() + agg.finish_tx(msg) # Give evloop some free time. # In case of continuous excetions we can loop here without returning # back to event loop and block it - yield from asyncio.sleep(0.01) + yield from asyncio.sleep(0.5) + except BaseException as e: - agg.finish_tx(str(e).strip()) - print('Catch exception ', e) + msg = str(e).strip() + agg.finish_tx(msg) + print('Caught exception %s, %s, %d, %s' % (type(e), aggname_prefix, conn_i + 1, msg) ) + # Give evloop some free time. # In case of continuous excetions we can loop here without returning # back to event loop and block it - yield from asyncio.sleep(0.01) + yield from asyncio.sleep(0.5) print("We've count to infinity!") @asyncio.coroutine - def transfer_tx(self, conn, cur, agg): + def transfer_tx(self, conn, cur, agg, conn_i): amount = 1 # to avoid deadlocks: from_uid = random.randint(1, self.n_accounts - 2) @@ -196,13 +251,14 @@ def transfer_tx(self, conn, cur, agg): yield from cur.execute('commit') @asyncio.coroutine - def total_tx(self, conn, cur, agg): - yield from cur.execute('select sum(amount) from bank_test') + def total_tx(self, conn, cur, agg, conn_i): + yield from cur.execute("select sum(amount), count(*), count(uid), current_setting('multimaster.node_id') from bank_test") total = yield from cur.fetchone() - if total[0] != 0: + if total[0] != self.total: agg.isolation += 1 + print(datetime.datetime.utcnow(), 'Isolation error, total ', self.total, ' -> ', total[0], ', node ', conn_i+1) + self.total = total[0] print(self.oops) - print('Isolation error, total = ', total[0]) # yield from cur.execute('select * from mtm.get_nodes_state()') # nodes_state = yield from cur.fetchall() # for i, col in enumerate(self.nodes_state_fields): @@ -229,9 +285,14 @@ def bgrun(self): self.evloop_process = multiprocessing.Process(target=self.run, args=()) self.evloop_process.start() - def get_aggregates(self, _print=True): - self.parent_pipe.send('status') + def get_aggregates(self, _print=True, clean=True): + if clean: + self.parent_pipe.send('status') + else: + self.parent_pipe.send('status_noclean') + resp = self.parent_pipe.recv() + if _print: MtmClient.print_aggregates(resp) return resp @@ -243,6 +304,7 @@ def clean_aggregates(self): def stop(self): self.running = False self.evloop_process.terminate() + time.sleep(3) @classmethod def print_aggregates(cls, aggs): diff --git a/contrib/mmts/tests2/lib/failure_injector.py b/contrib/mmts/tests2/lib/failure_injector.py index 934b85790a..c6427b81b2 100644 --- a/contrib/mmts/tests2/lib/failure_injector.py +++ b/contrib/mmts/tests2/lib/failure_injector.py @@ -3,11 +3,11 @@ class FailureInjector(object): def __init__(self): - self.docker_api = docker.Client() + self.docker_api = docker.from_env() def container_exec(self, node, command): - exec_id = self.docker_api.exec_create(node, command, user='root') - output = self.docker_api.exec_start(exec_id) + docker_node = self.docker_api.containers.get(node) + docker_node.exec_run(command, user='root') class NoFailure(FailureInjector): @@ -57,10 +57,10 @@ def __init__(self, node): # XXX: Is it really a good idea to call cli.stop inside method called start? def start(self): - self.docker_api.stop(self.node) + self.docker_api.containers.get(self.node).stop() def stop(self): - self.docker_api.start(self.node) + self.docker_api.containers.get(self.node).start() class CrashRecoverNode(FailureInjector): @@ -70,10 +70,10 @@ def __init__(self, node): super().__init__() def start(self): - self.docker_api.kill(self.node) + self.docker_api.containers.get(self.node).kill() def stop(self): - self.docker_api.start(self.node) + self.docker_api.containers.get(self.node).start() class SkewTime(FailureInjector): @@ -81,3 +81,30 @@ class SkewTime(FailureInjector): def __init__(self, node): self.node = node super().__init__() + +class StopNode(FailureInjector): + + def __init__(self, node): + self.node = node + super().__init__() + + # XXX: Is it really a good idea to call cli.stop inside method called start? + def start(self): + self.docker_api.containers.get(self.node).stop() + + def stop(self): + return + + +class StartNode(FailureInjector): + + def __init__(self, node): + self.node = node + super().__init__() + + # XXX: Is it really a good idea to call cli.stop inside method called start? + def start(self): + return + + def stop(self): + self.docker_api.containers.get(self.node).start() diff --git a/contrib/mmts/tests2/lib/test_helper.py b/contrib/mmts/tests2/lib/test_helper.py new file mode 100644 index 0000000000..7dc92b2c6a --- /dev/null +++ b/contrib/mmts/tests2/lib/test_helper.py @@ -0,0 +1,90 @@ +import unittest +import time +import datetime +import psycopg2 + +TEST_WARMING_TIME = 5 +TEST_DURATION = 10 +TEST_MAX_RECOVERY_TIME = 300 +TEST_RECOVERY_TIME = 30 +TEST_SETUP_TIME = 20 +TEST_STOP_DELAY = 5 + +class TestHelper(object): + + def assertIsolation(self, aggs): + isolated = True + for conn_id, agg in enumerate(aggs): + isolated = isolated and agg['sumtotal']['isolation'] == 0 + if not isolated: + raise AssertionError('Isolation failure') + + def assertCommits(self, aggs): + commits = True + for conn_id, agg in enumerate(aggs): + commits = commits and 'commit' in agg['transfer']['finish'] + if not commits: + print('No commits during aggregation interval') + # time.sleep(100000) + raise AssertionError('No commits during aggregation interval') + + def assertNoCommits(self, aggs): + commits = True + for conn_id, agg in enumerate(aggs): + commits = commits and 'commit' in agg['transfer']['finish'] + if commits: + raise AssertionError('There are commits during aggregation interval') + + def awaitCommit(self, node_id): + total_sleep = 0 + + while total_sleep <= TEST_MAX_RECOVERY_TIME: + aggs = self.client.get_aggregates(clean=False, _print=False) + # print('=== ',aggs[node_id]['transfer']['finish']) + if ('commit' in aggs[node_id]['transfer']['finish'] and + aggs[node_id]['transfer']['finish']['commit'] > 10): + break + time.sleep(5) + total_sleep += 5 + + + def performFailure(self, failure, wait=0, node_wait_for_commit=-1): + + time.sleep(TEST_WARMING_TIME) + + print('Simulate failure at ',datetime.datetime.utcnow()) + + failure.start() + + self.client.clean_aggregates() + print('Started failure at ',datetime.datetime.utcnow()) + + time.sleep(TEST_DURATION) + + print('Getting aggs at ',datetime.datetime.utcnow()) + aggs_failure = self.client.get_aggregates() + + + time.sleep(wait) + failure.stop() + + print('Eliminate failure at ',datetime.datetime.utcnow()) + + self.client.clean_aggregates() + + if node_wait_for_commit >= 0: + self.awaitCommit(node_wait_for_commit) + else: + time.sleep(TEST_RECOVERY_TIME) + + aggs = self.client.get_aggregates() + return (aggs_failure, aggs) + + def nodeExecute(dsn, statements): + con = psycopg2.connect(dsn) + con.autocommit = True + cur = con.cursor() + for statement in statements: + cur.execute(statement) + cur.close() + con.close() diff --git a/contrib/mmts/tests2/requirements.txt b/contrib/mmts/tests2/requirements.txt index eb123b54c9..c8a4f3ecf2 100644 --- a/contrib/mmts/tests2/requirements.txt +++ b/contrib/mmts/tests2/requirements.txt @@ -1,18 +1,15 @@ -aiopg==0.12.0 -aioprocessing==0.0.1 -astroid==1.4.8 -docker-py==1.10.6 +aiopg==0.13.1 +aioprocessing==1.0.0 +cached-property==1.3.1 +docker==2.5.1 +docker-compose==1.16.1 docker-pycreds==0.2.1 -isort==4.2.5 -lazy-object-proxy==1.2.2 -mccabe==0.5.2 -pdb==0.1 -pi==0.1.2 -psycopg2==2.6.2 -pylint==1.6.4 -python-gnupg==0.3.9 +dockerpty==0.4.1 +docopt==0.6.2 +jsonschema==2.6.0 +psycopg2==2.7.3.1 PyYAML==3.12 -requests==2.12.1 -six==1.10.0 -websocket-client==0.37.0 -wrapt==1.10.8 +requests==2.11.1 +six==1.11.0 +texttable==0.9.1 +websocket-client==0.44.0 diff --git a/contrib/mmts/tests2/support/docker-regress.sh b/contrib/mmts/tests2/support/docker-regress.sh index 4a25b41abd..4e21f494e4 100755 --- a/contrib/mmts/tests2/support/docker-regress.sh +++ b/contrib/mmts/tests2/support/docker-regress.sh @@ -11,7 +11,7 @@ psql -U postgres regression <<-SQL SQL ./pg_regress --use-existing \ - --schedule=parallel_schedule \ + --schedule=serial_schedule \ --host=node1 \ --user=postgres diff --git a/contrib/mmts/tests2/support/two_nodes.yml b/contrib/mmts/tests2/support/two_nodes.yml new file mode 100644 index 0000000000..5c7bd4ed19 --- /dev/null +++ b/contrib/mmts/tests2/support/two_nodes.yml @@ -0,0 +1,51 @@ +version: '2' + +services: + + node1: + container_name: node1 + build: ../.. + privileged: true + ulimits: + core: 14294967296 + environment: + POSTGRES_USER: 'pg' + POSTGRES_DB: 'regression' + NODE_ID: 1 + CONNSTRS: >- + dbname=regression user=pg host=node1, + dbname=regression user=pg host=node2 + REFEREE_CONNSTR: 'dbname=regression user=pg host=referee' + ports: + - "15432:5432" + + node2: + container_name: node2 + build: ../.. + privileged: true + ulimits: + core: 14294967296 + environment: + POSTGRES_USER: 'pg' + POSTGRES_DB: 'regression' + NODE_ID: 2 + CONNSTRS: >- + dbname=regression user=pg host=node1, + dbname=regression user=pg host=node2 + REFEREE_CONNSTR: 'dbname=regression user=pg host=referee' + ports: + - "15433:5432" + + referee: + container_name: referee + build: ../.. + privileged: true + ulimits: + core: 14294967296 + environment: + POSTGRES_USER: 'pg' + POSTGRES_DB: 'regression' + NODE_ID: 1 + REFEREE: 'on' + ports: + - "15435:5432" \ No newline at end of file diff --git a/contrib/mmts/tests2/test_major.py b/contrib/mmts/tests2/test_major.py new file mode 100644 index 0000000000..36dde22e63 --- /dev/null +++ b/contrib/mmts/tests2/test_major.py @@ -0,0 +1,88 @@ +# +# Based on Aphyr's test for CockroachDB. +# + +import unittest +import time +import subprocess +import datetime +import docker +import warnings + +from lib.bank_client import MtmClient +from lib.failure_injector import * +from lib.test_helper import * + + +class MajorTest(unittest.TestCase, TestHelper): + + @classmethod + def setUpClass(cls): + subprocess.check_call(['docker-compose', + '-f', 'support/two_nodes.yml', + 'up', + '--force-recreate', + '--build', + '-d']) + + # XXX: add normal wait here + time.sleep(TEST_SETUP_TIME) + + cls.client = MtmClient([ + "dbname=regression user=postgres host=127.0.0.1 port=15432", + "dbname=regression user=postgres host=127.0.0.1 port=15433" + ], n_accounts=1000) + cls.client.bgrun() + + # create extension on referee + cls.nodeExecute("dbname=regression user=postgres host=127.0.0.1 port=15435", ['create extension multimaster']) + + @classmethod + def tearDownClass(cls): + print('tearDown') + cls.client.stop() + + time.sleep(TEST_STOP_DELAY) + + if not cls.client.is_data_identic(): + raise AssertionError('Different data on nodes') + + if cls.client.no_prepared_tx() != 0: + raise AssertionError('There are some uncommitted tx') + + # XXX: check nodes data identity here + # subprocess.check_call(['docker-compose','down']) + + def setUp(self): + warnings.simplefilter("ignore", ResourceWarning) + time.sleep(20) + print('Start new test at ',datetime.datetime.utcnow()) + + def tearDown(self): + print('Finish test at ',datetime.datetime.utcnow()) + + def test_partition_major(self): + print('### test_partition_major ###') + + MajorTest.client.execute(0, [ + 'alter system set multimaster.major_node to true', + 'select pg_reload_conf()' + ]) + + aggs_failure, aggs = self.performFailure(SingleNodePartition('node2')) + + self.assertCommits(aggs_failure[:1]) + self.assertNoCommits(aggs_failure[1:]) + self.assertIsolation(aggs_failure) + + self.assertCommits(aggs) + self.assertIsolation(aggs) + + MajorTest.client.execute(0, [ + 'alter system set multimaster.major_node to false', + 'select pg_reload_conf()' + ]) + +if __name__ == '__main__': + unittest.main() + diff --git a/contrib/mmts/tests2/test_recovery.py b/contrib/mmts/tests2/test_recovery.py index 4e9717aefa..4a3f600ac2 100644 --- a/contrib/mmts/tests2/test_recovery.py +++ b/contrib/mmts/tests2/test_recovery.py @@ -12,8 +12,11 @@ from lib.bank_client import MtmClient from lib.failure_injector import * +TEST_WARMING_TIME = 5 TEST_DURATION = 10 -TEST_RECOVERY_TIME = 20 +TEST_RECOVERY_TIME = 30 +TEST_SETUP_TIME = 20 +TEST_STOP_DELAY = 5 class TestHelper(object): @@ -29,6 +32,8 @@ def assertCommits(self, aggs): for conn_id, agg in enumerate(aggs): commits = commits and 'commit' in agg['transfer']['finish'] if not commits: + print('No commits during aggregation interval') + # time.sleep(100000) raise AssertionError('No commits during aggregation interval') def assertNoCommits(self, aggs): @@ -39,6 +44,11 @@ def assertNoCommits(self, aggs): raise AssertionError('There are commits during aggregation interval') def performFailure(self, failure): + + time.sleep(TEST_WARMING_TIME) + + print('Simulate failure at ',datetime.datetime.utcnow()) + failure.start() self.client.clean_aggregates() @@ -47,6 +57,8 @@ def performFailure(self, failure): failure.stop() + print('Eliminate failure at ',datetime.datetime.utcnow()) + self.client.clean_aggregates() time.sleep(TEST_RECOVERY_TIME) aggs = self.client.get_aggregates() @@ -57,30 +69,45 @@ def performFailure(self, failure): class RecoveryTest(unittest.TestCase, TestHelper): @classmethod - def setUpClass(self): + def setUpClass(cls): subprocess.check_call(['docker-compose','up', '--force-recreate', + '--build', '-d']) # XXX: add normal wait here - time.sleep(20) - print('started') - self.client = MtmClient([ + time.sleep(TEST_SETUP_TIME) + + cls.client = MtmClient([ "dbname=regression user=postgres host=127.0.0.1 port=15432", "dbname=regression user=postgres host=127.0.0.1 port=15433", "dbname=regression user=postgres host=127.0.0.1 port=15434" ], n_accounts=1000) - self.client.bgrun() + cls.client.bgrun() @classmethod - def tearDownClass(self): + def tearDownClass(cls): print('tearDown') - self.client.stop() + cls.client.stop() + + time.sleep(TEST_STOP_DELAY) + + if not cls.client.is_data_identic(): + raise AssertionError('Different data on nodes') + + if cls.client.no_prepared_tx() != 0: + raise AssertionError('There are some uncommitted tx') + # XXX: check nodes data identity here - subprocess.check_call(['docker-compose','down']) + # subprocess.check_call(['docker-compose','down']) def setUp(self): warnings.simplefilter("ignore", ResourceWarning) + time.sleep(20) + print('Start new test at ',datetime.datetime.utcnow()) + + def tearDown(self): + print('Finish test at ',datetime.datetime.utcnow()) def test_normal_operations(self): print('### test_normal_operations ###') @@ -106,7 +133,6 @@ def test_node_partition(self): self.assertCommits(aggs) self.assertIsolation(aggs) - def test_edge_partition(self): print('### test_edge_partition ###') @@ -122,8 +148,6 @@ def test_edge_partition(self): def test_node_restart(self): print('### test_node_restart ###') - time.sleep(3) - aggs_failure, aggs = self.performFailure(RestartNode('node3')) self.assertCommits(aggs_failure[:2]) @@ -145,6 +169,27 @@ def test_node_crash(self): self.assertCommits(aggs) self.assertIsolation(aggs) + def test_node_bicrash(self): + print('### test_node_bicrash ###') + + aggs_failure, aggs = self.performFailure(CrashRecoverNode('node3')) + + self.assertCommits(aggs_failure[:2]) + self.assertNoCommits(aggs_failure[2:]) + self.assertIsolation(aggs_failure) + + self.assertCommits(aggs) + self.assertIsolation(aggs) + + aggs_failure, aggs = self.performFailure(CrashRecoverNode('node3')) + + self.assertCommits(aggs_failure[:2]) + self.assertNoCommits(aggs_failure[2:]) + self.assertIsolation(aggs_failure) + + self.assertCommits(aggs) + self.assertIsolation(aggs) + if __name__ == '__main__': unittest.main() diff --git a/contrib/mmts/tests2/test_recovery_up.py b/contrib/mmts/tests2/test_recovery_up.py deleted file mode 100644 index 9054a3b694..0000000000 --- a/contrib/mmts/tests2/test_recovery_up.py +++ /dev/null @@ -1,142 +0,0 @@ -# -# Based on Aphyr's test for CockroachDB. -# - -import unittest -import time -import subprocess -import datetime -import docker -import warnings - -from lib.bank_client import MtmClient -from lib.failure_injector import * - -TEST_DURATION = 10 -TEST_RECOVERY_TIME = 30 - -class TestHelper(object): - - def assertIsolation(self, aggs): - isolated = True - for conn_id, agg in enumerate(aggs): - isolated = isolated and agg['sumtotal']['isolation'] == 0 - if not isolated: - raise AssertionError('Isolation failure') - - def assertCommits(self, aggs): - commits = True - for conn_id, agg in enumerate(aggs): - commits = commits and 'commit' in agg['transfer']['finish'] - if not commits: - raise AssertionError('No commits during aggregation interval') - - def assertNoCommits(self, aggs): - commits = True - for conn_id, agg in enumerate(aggs): - commits = commits and 'commit' in agg['transfer']['finish'] - if commits: - raise AssertionError('There are commits during aggregation interval') - - def performFailure(self, failure): - failure.start() - - self.client.clean_aggregates() - time.sleep(TEST_DURATION) - aggs_failure = self.client.get_aggregates() - - failure.stop() - - self.client.clean_aggregates() - time.sleep(TEST_RECOVERY_TIME) - aggs = self.client.get_aggregates() - - return (aggs_failure, aggs) - - -class RecoveryTest(unittest.TestCase, TestHelper): - - def setUp(self): - time.sleep(20) - print('Start new test') - warnings.simplefilter("ignore", ResourceWarning) - self.client = MtmClient([ - "dbname=regression user=postgres host=127.0.0.1 port=15432", - "dbname=regression user=postgres host=127.0.0.1 port=15433", - "dbname=regression user=postgres host=127.0.0.1 port=15434" - ], n_accounts=1000) - self.client.bgrun() - - def tearDown(self): - print('tearDown') - self.client.stop() - - - def test_normal_operations(self): - print('### test_normal_operations ###') - - aggs_failure, aggs = self.performFailure(NoFailure()) - - self.assertCommits(aggs_failure) - self.assertIsolation(aggs_failure) - - self.assertCommits(aggs) - self.assertIsolation(aggs) - - - def test_node_partition(self): - print('### test_node_partition ###') - - aggs_failure, aggs = self.performFailure(SingleNodePartition('node3')) - - self.assertCommits(aggs_failure[:2]) - self.assertNoCommits(aggs_failure[2:]) - self.assertIsolation(aggs_failure) - - self.assertCommits(aggs) - self.assertIsolation(aggs) - - - def test_edge_partition(self): - print('### test_edge_partition ###') - - aggs_failure, aggs = self.performFailure(EdgePartition('node2', 'node3')) - - self.assertTrue( ('commit' in aggs_failure[1]['transfer']['finish']) or ('commit' in aggs_failure[2]['transfer']['finish']) ) - self.assertCommits(aggs_failure[0:1]) # first node - self.assertIsolation(aggs_failure) - - self.assertCommits(aggs) - self.assertIsolation(aggs) - - def test_node_restart(self): - print('### test_node_restart ###') - - time.sleep(5) - - aggs_failure, aggs = self.performFailure(RestartNode('node3')) - - self.assertCommits(aggs_failure[:2]) - self.assertNoCommits(aggs_failure[2:]) - self.assertIsolation(aggs_failure) - - self.assertCommits(aggs) - self.assertIsolation(aggs) - - def test_node_crash(self): - print('### test_node_crash ###') - - time.sleep(5) - - aggs_failure, aggs = self.performFailure(CrashRecoverNode('node3')) - - self.assertCommits(aggs_failure[:2]) - self.assertNoCommits(aggs_failure[2:]) - self.assertIsolation(aggs_failure) - - self.assertCommits(aggs) - self.assertIsolation(aggs) - -if __name__ == '__main__': - unittest.main() - diff --git a/contrib/mmts/tests2/test_referee.py b/contrib/mmts/tests2/test_referee.py new file mode 100644 index 0000000000..ab8c86409e --- /dev/null +++ b/contrib/mmts/tests2/test_referee.py @@ -0,0 +1,136 @@ +# +# Based on Aphyr's test for CockroachDB. +# + +import unittest +import time +import subprocess +import datetime +import docker +import warnings + +from lib.bank_client import MtmClient +from lib.failure_injector import * +from lib.test_helper import * + + +class RefereeTest(unittest.TestCase, TestHelper): + + @classmethod + def setUpClass(cls): + subprocess.check_call(['docker-compose', + '-f', 'support/two_nodes.yml', + 'up', + '--force-recreate', + '--build', + '-d']) + + cls.client = MtmClient([ + "dbname=regression user=postgres host=127.0.0.1 port=15432", + "dbname=regression user=postgres host=127.0.0.1 port=15433" + ], n_accounts=1000) + cls.client.bgrun() + + # create extension on referee + cls.nodeExecute("dbname=regression user=postgres host=127.0.0.1 port=15435", ['create extension referee']) + + @classmethod + def tearDownClass(cls): + print('tearDown') + cls.client.stop() + + if not cls.client.is_data_identic(): + raise AssertionError('Different data on nodes') + + if cls.client.no_prepared_tx() != 0: + raise AssertionError('There are some uncommitted tx') + + # XXX: check nodes data identity here + # subprocess.check_call(['docker-compose','down']) + + def setUp(self): + warnings.simplefilter("ignore", ResourceWarning) + + print('Start new test at ',datetime.datetime.utcnow()) + + def tearDown(self): + print('Finish test at ',datetime.datetime.utcnow()) + + def test_node_crash(self): + print('### test_node_crash ###') + + aggs_failure, aggs = self.performFailure(CrashRecoverNode('node2'), node_wait_for_commit=1) + + self.assertCommits(aggs_failure[:1]) + self.assertNoCommits(aggs_failure[1:]) + self.assertIsolation(aggs_failure) + + self.assertCommits(aggs) + self.assertIsolation(aggs) + + + def test_partition_referee(self): + print('### test_partition_referee ###') + + aggs_failure, aggs = self.performFailure(SingleNodePartition('node2'), node_wait_for_commit=1) + + self.assertCommits(aggs_failure[:1]) + self.assertNoCommits(aggs_failure[1:]) + self.assertIsolation(aggs_failure) + + self.assertCommits(aggs) + self.assertIsolation(aggs) + + def test_double_failure_referee(self): + print('### test_double_failure_referee ###') + + aggs_failure, aggs = self.performFailure(SingleNodePartition('node2'), node_wait_for_commit=1) + + self.assertCommits(aggs_failure[:1]) + self.assertNoCommits(aggs_failure[1:]) + self.assertIsolation(aggs_failure) + + self.assertCommits(aggs) + self.assertIsolation(aggs) + + aggs_failure, aggs = self.performFailure(SingleNodePartition('node1'), node_wait_for_commit=0) + + self.assertNoCommits(aggs_failure[:1]) + self.assertCommits(aggs_failure[1:]) + self.assertIsolation(aggs_failure) + + self.assertCommits(aggs) + self.assertIsolation(aggs) + + + def test_winner_restart(self): + print('### test_winner_restart ###') + + aggs_failure, aggs = self.performFailure(StopNode('node1')) + + self.assertNoCommits(aggs_failure[:1]) + self.assertCommits(aggs_failure[1:]) + self.assertIsolation(aggs_failure) + + self.assertNoCommits(aggs[:1]) + self.assertCommits(aggs[1:]) + self.assertIsolation(aggs) + + aggs_failure, aggs = self.performFailure(RestartNode('node2'), node_wait_for_commit=1) + + self.assertNoCommits(aggs_failure) + self.assertIsolation(aggs_failure) + + self.assertNoCommits(aggs[:1]) + self.assertCommits(aggs[1:]) + self.assertIsolation(aggs) + + # need to start node1 to perform consequent tests + docker_api = docker.from_env() + docker_api.containers.get('node1').start() + self.awaitCommit(0) + + +if __name__ == '__main__': + unittest.main() + diff --git a/contrib/mmts/tests2/test_regression.py b/contrib/mmts/tests2/test_regression.py index ec8bbf9980..4bf57bdb32 100644 --- a/contrib/mmts/tests2/test_regression.py +++ b/contrib/mmts/tests2/test_regression.py @@ -6,14 +6,16 @@ class RecoveryTest(unittest.TestCase): @classmethod def setUpClass(self): + print('setUp') subprocess.check_call(['docker-compose','up', - '--force-recreate', - '--build', - '-d']) + '--force-recreate', + '--build', + '-d']) @classmethod def tearDownClass(self): - subprocess.check_call(['docker-compose','down']) + print('tearDown') +# subprocess.check_call(['docker-compose','down']) def test_regression(self): # XXX: make smth clever here diff --git a/contrib/pageinspect/ginfuncs.c b/contrib/pageinspect/ginfuncs.c index a2f119b02e..55285893f7 100644 --- a/contrib/pageinspect/ginfuncs.c +++ b/contrib/pageinspect/ginfuncs.c @@ -28,11 +28,31 @@ PG_FUNCTION_INFO_V1(gin_metapage_info); PG_FUNCTION_INFO_V1(gin_page_opaque_info); PG_FUNCTION_INFO_V1(gin_leafpage_items); + +static Page +get_page_from_raw(bytea *raw_page) +{ + int raw_page_size; + Page page; + + raw_page_size = VARSIZE(raw_page) - VARHDRSZ; + if (raw_page_size < BLCKSZ) + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("input page too small (%d bytes)", raw_page_size))); + + /* make a copy so that the page is properly aligned for struct access */ + page = palloc(raw_page_size); + memcpy(page, VARDATA(raw_page), raw_page_size); + + return page; +} + + Datum gin_metapage_info(PG_FUNCTION_ARGS) { bytea *raw_page = PG_GETARG_BYTEA_P(0); - int raw_page_size; TupleDesc tupdesc; Page page; GinPageOpaque opaq; @@ -46,12 +66,7 @@ gin_metapage_info(PG_FUNCTION_ARGS) (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), (errmsg("must be superuser to use raw page functions")))); - raw_page_size = VARSIZE(raw_page) - VARHDRSZ; - if (raw_page_size < BLCKSZ) - ereport(ERROR, - (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("input page too small (%d bytes)", raw_page_size))); - page = VARDATA(raw_page); + page = get_page_from_raw(raw_page); opaq = (GinPageOpaque) PageGetSpecialPointer(page); if (opaq->flags != GIN_META) @@ -94,13 +109,12 @@ Datum gin_page_opaque_info(PG_FUNCTION_ARGS) { bytea *raw_page = PG_GETARG_BYTEA_P(0); - int raw_page_size; TupleDesc tupdesc; Page page; GinPageOpaque opaq; HeapTuple resultTuple; Datum values[3]; - bool nulls[10]; + bool nulls[3]; Datum flags[16]; int nflags = 0; uint16 flagbits; @@ -110,12 +124,7 @@ gin_page_opaque_info(PG_FUNCTION_ARGS) (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), (errmsg("must be superuser to use raw page functions")))); - raw_page_size = VARSIZE(raw_page) - VARHDRSZ; - if (raw_page_size < BLCKSZ) - ereport(ERROR, - (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("input page too small (%d bytes)", raw_page_size))); - page = VARDATA(raw_page); + page = get_page_from_raw(raw_page); opaq = (GinPageOpaque) PageGetSpecialPointer(page); @@ -152,9 +161,9 @@ gin_page_opaque_info(PG_FUNCTION_ARGS) memset(nulls, 0, sizeof(nulls)); values[0] = Int64GetDatum(opaq->rightlink); - values[1] = Int64GetDatum(opaq->maxoff); - values[2] = PointerGetDatum( - construct_array(flags, nflags, TEXTOID, -1, false, 'i')); + values[1] = Int32GetDatum(opaq->maxoff); + values[2] = PointerGetDatum(construct_array(flags, nflags, + TEXTOID, -1, false, 'i')); /* Build and return the result tuple. */ resultTuple = heap_form_tuple(tupdesc, values, nulls); @@ -173,7 +182,6 @@ Datum gin_leafpage_items(PG_FUNCTION_ARGS) { bytea *raw_page = PG_GETARG_BYTEA_P(0); - int raw_page_size; FuncCallContext *fctx; gin_leafpage_items_state *inter_call_data; @@ -182,8 +190,6 @@ gin_leafpage_items(PG_FUNCTION_ARGS) (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), (errmsg("must be superuser to use raw page functions")))); - raw_page_size = VARSIZE(raw_page) - VARHDRSZ; - if (SRF_IS_FIRSTCALL()) { TupleDesc tupdesc; @@ -191,11 +197,10 @@ gin_leafpage_items(PG_FUNCTION_ARGS) Page page; GinPageOpaque opaq; - if (raw_page_size < BLCKSZ) - ereport(ERROR, - (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("input page too small (%d bytes)", raw_page_size))); - page = VARDATA(raw_page); + fctx = SRF_FIRSTCALL_INIT(); + mctx = MemoryContextSwitchTo(fctx->multi_call_memory_ctx); + + page = get_page_from_raw(raw_page); if (PageGetSpecialSize(page) != MAXALIGN(sizeof(GinPageOpaqueData))) ereport(ERROR, @@ -214,9 +219,6 @@ gin_leafpage_items(PG_FUNCTION_ARGS) opaq->flags, (GIN_DATA | GIN_LEAF | GIN_COMPRESSED)))); - fctx = SRF_FIRSTCALL_INIT(); - mctx = MemoryContextSwitchTo(fctx->multi_call_memory_ctx); - inter_call_data = palloc(sizeof(gin_leafpage_items_state)); /* Build a tuple descriptor for our result type */ diff --git a/contrib/pageinspect/heapfuncs.c b/contrib/pageinspect/heapfuncs.c index 904eaef2da..f8ac343cc1 100644 --- a/contrib/pageinspect/heapfuncs.c +++ b/contrib/pageinspect/heapfuncs.c @@ -279,7 +279,7 @@ heap_page_items(PG_FUNCTION_ARGS) * * Split raw tuple data taken directly from a page into an array of bytea * elements. This routine does a lookup on NULL values and creates array - * elements accordindly. This is a reimplementation of nocachegetattr() + * elements accordingly. This is a reimplementation of nocachegetattr() * in heaptuple.c simplified for educational purposes. */ static Datum diff --git a/contrib/pg_standby/pg_standby.c b/contrib/pg_standby/pg_standby.c index 5eac2b1e49..481e728547 100644 --- a/contrib/pg_standby/pg_standby.c +++ b/contrib/pg_standby/pg_standby.c @@ -57,7 +57,7 @@ char *xlogFilePath; /* where we are going to restore to */ char *nextWALFileName; /* the file we need to get from archive */ char *restartWALFileName; /* the file from which we can restart restore */ char *priorWALFileName; /* the file we need to get from archive */ -char WALFilePath[MAXPGPATH]; /* the file path including archive */ +char WALFilePath[MAXPGPATH * 2]; /* the file path including archive */ char restoreCommand[MAXPGPATH]; /* run this to restore */ char exclusiveCleanupFileName[MAXFNAMELEN]; /* the file we need to * get from archive */ @@ -259,9 +259,9 @@ CustomizableCleanupPriorWALFiles(void) strcmp(xlde->d_name + 8, exclusiveCleanupFileName + 8) < 0) { #ifdef WIN32 - snprintf(WALFilePath, MAXPGPATH, "%s\\%s", archiveLocation, xlde->d_name); + snprintf(WALFilePath, sizeof(WALFilePath), "%s\\%s", archiveLocation, xlde->d_name); #else - snprintf(WALFilePath, MAXPGPATH, "%s/%s", archiveLocation, xlde->d_name); + snprintf(WALFilePath, sizeof(WALFilePath), "%s/%s", archiveLocation, xlde->d_name); #endif if (debug) @@ -779,7 +779,7 @@ main(int argc, char **argv) { /* * Once we have restored this file successfully we can remove some - * prior WAL files. If this restore fails we musn't remove any + * prior WAL files. If this restore fails we mustn't remove any * file because some of them will be requested again immediately * after the failed restore, or when we restart recovery. */ diff --git a/contrib/pg_stat_statements/pg_stat_statements.c b/contrib/pg_stat_statements/pg_stat_statements.c index 3d9b8e45d9..78a435c100 100644 --- a/contrib/pg_stat_statements/pg_stat_statements.c +++ b/contrib/pg_stat_statements/pg_stat_statements.c @@ -138,7 +138,7 @@ typedef struct Counters { int64 calls; /* # of times executed */ double total_time; /* total execution time, in msec */ - double min_time; /* minimim execution time in msec */ + double min_time; /* minimum execution time in msec */ double max_time; /* maximum execution time in msec */ double mean_time; /* mean execution time in msec */ double sum_var_time; /* sum of variances in execution time in msec */ diff --git a/contrib/pg_trgm/expected/pg_trgm.out b/contrib/pg_trgm/expected/pg_trgm.out index 9bc55f1d0d..4e37a7ee10 100644 --- a/contrib/pg_trgm/expected/pg_trgm.out +++ b/contrib/pg_trgm/expected/pg_trgm.out @@ -1194,6 +1194,12 @@ select t <-> 'q0987wertyu0988', t from test_trgm order by t <-> 'q0987wertyu0988 0.5 | qwertyu0987 (2 rows) +select count(*) from test_trgm where t ~ '[qwerty]{2}-?[qwerty]{2}'; + count +------- + 1000 +(1 row) + create index trgm_idx on test_trgm using gist (t gist_trgm_ops); set enable_seqscan=off; select t,similarity(t,'qwertyu0988') as sml from test_trgm where t % 'qwertyu0988' order by sml desc, t; @@ -2338,6 +2344,12 @@ select t <-> 'q0987wertyu0988', t from test_trgm order by t <-> 'q0987wertyu0988 0.5 | qwertyu0987 (2 rows) +select count(*) from test_trgm where t ~ '[qwerty]{2}-?[qwerty]{2}'; + count +------- + 1000 +(1 row) + drop index trgm_idx; create index trgm_idx on test_trgm using gin (t gin_trgm_ops); set enable_seqscan=off; @@ -3467,10 +3479,17 @@ select t,similarity(t,'gwertyu1988') as sml from test_trgm where t % 'gwertyu198 qwertyu0988 | 0.333333 (1 row) +select count(*) from test_trgm where t ~ '[qwerty]{2}-?[qwerty]{2}'; + count +------- + 1000 +(1 row) + create table test2(t text COLLATE "C"); insert into test2 values ('abcdef'); insert into test2 values ('quark'); insert into test2 values (' z foo bar'); +insert into test2 values ('/123/-45/'); create index test2_idx_gin on test2 using gin (t gin_trgm_ops); set enable_seqscan=off; explain (costs off) @@ -3572,7 +3591,8 @@ select * from test2 where t ~ '(abc)*$'; abcdef quark z foo bar -(3 rows) + /123/-45/ +(4 rows) select * from test2 where t ~* 'DEF'; t @@ -3658,6 +3678,18 @@ select * from test2 where t ~ ' z foo'; z foo bar (1 row) +select * from test2 where t ~ 'qua(?!foo)'; + t +------- + quark +(1 row) + +select * from test2 where t ~ '/\d+/-\d'; + t +----------- + /123/-45/ +(1 row) + drop index test2_idx_gin; create index test2_idx_gist on test2 using gist (t gist_trgm_ops); set enable_seqscan=off; @@ -3752,7 +3784,8 @@ select * from test2 where t ~ '(abc)*$'; abcdef quark z foo bar -(3 rows) + /123/-45/ +(4 rows) select * from test2 where t ~* 'DEF'; t @@ -3838,6 +3871,18 @@ select * from test2 where t ~ ' z foo'; z foo bar (1 row) +select * from test2 where t ~ 'qua(?!foo)'; + t +------- + quark +(1 row) + +select * from test2 where t ~ '/\d+/-\d'; + t +----------- + /123/-45/ +(1 row) + -- Check similarity threshold (bug #14202) CREATE TEMP TABLE restaurants (city text); INSERT INTO restaurants SELECT 'Warsaw' FROM generate_series(1, 10000); diff --git a/contrib/pg_trgm/sql/pg_trgm.sql b/contrib/pg_trgm/sql/pg_trgm.sql index 244946bb8d..389114a63e 100644 --- a/contrib/pg_trgm/sql/pg_trgm.sql +++ b/contrib/pg_trgm/sql/pg_trgm.sql @@ -21,6 +21,7 @@ select t,similarity(t,'qwertyu0988') as sml from test_trgm where t % 'qwertyu098 select t,similarity(t,'gwertyu0988') as sml from test_trgm where t % 'gwertyu0988' order by sml desc, t; select t,similarity(t,'gwertyu1988') as sml from test_trgm where t % 'gwertyu1988' order by sml desc, t; select t <-> 'q0987wertyu0988', t from test_trgm order by t <-> 'q0987wertyu0988' limit 2; +select count(*) from test_trgm where t ~ '[qwerty]{2}-?[qwerty]{2}'; create index trgm_idx on test_trgm using gist (t gist_trgm_ops); set enable_seqscan=off; @@ -31,6 +32,7 @@ select t,similarity(t,'gwertyu1988') as sml from test_trgm where t % 'gwertyu198 explain (costs off) select t <-> 'q0987wertyu0988', t from test_trgm order by t <-> 'q0987wertyu0988' limit 2; select t <-> 'q0987wertyu0988', t from test_trgm order by t <-> 'q0987wertyu0988' limit 2; +select count(*) from test_trgm where t ~ '[qwerty]{2}-?[qwerty]{2}'; drop index trgm_idx; create index trgm_idx on test_trgm using gin (t gin_trgm_ops); @@ -39,11 +41,13 @@ set enable_seqscan=off; select t,similarity(t,'qwertyu0988') as sml from test_trgm where t % 'qwertyu0988' order by sml desc, t; select t,similarity(t,'gwertyu0988') as sml from test_trgm where t % 'gwertyu0988' order by sml desc, t; select t,similarity(t,'gwertyu1988') as sml from test_trgm where t % 'gwertyu1988' order by sml desc, t; +select count(*) from test_trgm where t ~ '[qwerty]{2}-?[qwerty]{2}'; create table test2(t text COLLATE "C"); insert into test2 values ('abcdef'); insert into test2 values ('quark'); insert into test2 values (' z foo bar'); +insert into test2 values ('/123/-45/'); create index test2_idx_gin on test2 using gin (t gin_trgm_ops); set enable_seqscan=off; explain (costs off) @@ -78,7 +82,10 @@ select * from test2 where t ~ 'z foo bar'; select * from test2 where t ~ ' z foo bar'; select * from test2 where t ~ ' z foo bar'; select * from test2 where t ~ ' z foo'; +select * from test2 where t ~ 'qua(?!foo)'; +select * from test2 where t ~ '/\d+/-\d'; drop index test2_idx_gin; + create index test2_idx_gist on test2 using gist (t gist_trgm_ops); set enable_seqscan=off; explain (costs off) @@ -113,6 +120,8 @@ select * from test2 where t ~ 'z foo bar'; select * from test2 where t ~ ' z foo bar'; select * from test2 where t ~ ' z foo bar'; select * from test2 where t ~ ' z foo'; +select * from test2 where t ~ 'qua(?!foo)'; +select * from test2 where t ~ '/\d+/-\d'; -- Check similarity threshold (bug #14202) diff --git a/contrib/pg_trgm/trgm_op.c b/contrib/pg_trgm/trgm_op.c index dd0f492cfa..368e7c8941 100644 --- a/contrib/pg_trgm/trgm_op.c +++ b/contrib/pg_trgm/trgm_op.c @@ -413,7 +413,7 @@ comp_ptrgm(const void *v1, const void *v2) * ulen1: count of unique trigrams of array "trg1". * len2: length of array "trg2" and array "trg2indexes". * len: length of the array "found". - * check_only: if true then only check existaince of similar search pattern in + * check_only: if true then only check existence of similar search pattern in * text. * * Returns word similarity. @@ -456,7 +456,7 @@ iterate_word_similarity(int *trg2indexes, lastpos[trgindex] = i; } - /* Adjust lower bound if this trigram is present in required substing */ + /* Adjust lower bound if this trigram is present in required substring */ if (found[trgindex]) { int prev_lower, @@ -547,7 +547,7 @@ iterate_word_similarity(int *trg2indexes, * * str1: search pattern string, of length slen1 bytes. * str2: text in which we are looking for a word, of length slen2 bytes. - * check_only: if true then only check existaince of similar search pattern in + * check_only: if true then only check existence of similar search pattern in * text. * * Returns word similarity. diff --git a/contrib/pg_trgm/trgm_regexp.c b/contrib/pg_trgm/trgm_regexp.c index 005701fcd9..1ef91b3519 100644 --- a/contrib/pg_trgm/trgm_regexp.c +++ b/contrib/pg_trgm/trgm_regexp.c @@ -200,9 +200,10 @@ /* - * Uncomment to print intermediate stages, for exploring and debugging the - * algorithm implementation. This produces three graph files in /tmp, - * in Graphviz .dot format. + * Uncomment (or use -DTRGM_REGEXP_DEBUG) to print debug info, + * for exploring and debugging the algorithm implementation. + * This produces three graph files in /tmp, in Graphviz .dot format. + * Some progress information is also printed to postmaster stderr. */ /* #define TRGM_REGEXP_DEBUG */ @@ -226,7 +227,7 @@ * Penalty multipliers for trigram counts depending on whitespace contents. * Numbers based on analysis of real-life texts. */ -const float4 penalties[8] = { +static const float4 penalties[8] = { 1.0f, /* "aaa" */ 3.5f, /* "aa " */ 0.0f, /* "a a" (impossible) */ @@ -318,22 +319,27 @@ typedef struct * arcs - outgoing arcs of this state (List of TrgmArc) * enterKeys - enter keys reachable from this state without reading any * predictable trigram (List of TrgmStateKey) - * fin - flag indicating this state is final - * init - flag indicating this state is initial + * flags - flag bits + * snumber - number of this state (initially assigned as -1, -2, etc, + * for debugging purposes only; then at the packaging stage, + * surviving states are renumbered with positive numbers) * parent - parent state, if this state has been merged into another - * children - child states (states that have been merged into this one) - * number - number of this state (used at the packaging stage) + * tentFlags - flags this state would acquire via planned merges + * tentParent - planned parent state, if considering a merge */ +#define TSTATE_INIT 0x01 /* flag indicating this state is initial */ +#define TSTATE_FIN 0x02 /* flag indicating this state is final */ + typedef struct TrgmState { TrgmStateKey stateKey; /* hashtable key: must be first field */ List *arcs; List *enterKeys; - bool fin; - bool init; + int flags; + int snumber; struct TrgmState *parent; - List *children; - int number; + int tentFlags; + struct TrgmState *tentParent; } TrgmState; /* @@ -360,7 +366,7 @@ typedef struct * Information about color trigram (used in stage 3) * * ctrgm - trigram itself - * number - number of this trigram (used in the packaging stage) + * cnumber - number of this trigram (used in the packaging stage) * count - number of simple trigrams created from this color trigram * expanded - indicates this color trigram is expanded into simple trigrams * arcs - list of all arcs labeled with this color trigram. @@ -368,7 +374,7 @@ typedef struct typedef struct { ColorTrgm ctrgm; - int number; + int cnumber; int count; float4 penalty; bool expanded; @@ -402,6 +408,7 @@ typedef struct /* Expanded graph (stage 2) */ HTAB *states; TrgmState *initState; + int nstates; /* Workspace for stage 2 */ List *queue; @@ -599,7 +606,7 @@ createTrgmNFAInternal(regex_t *regex, TrgmPackedGraph **graph, * get from the initial state to the final state without reading any * predictable trigram. */ - if (trgmNFA.initState->fin) + if (trgmNFA.initState->flags & TSTATE_FIN) return NULL; /* @@ -917,6 +924,7 @@ transformGraph(TrgmNFA *trgmNFA) 1024, &hashCtl, HASH_ELEM | HASH_BLOBS | HASH_CONTEXT); + trgmNFA->nstates = 0; /* Create initial state: ambiguous prefix, NFA's initial state */ MemSet(&initkey, 0, sizeof(initkey)); @@ -925,7 +933,7 @@ transformGraph(TrgmNFA *trgmNFA) initkey.nstate = pg_reg_getinitialstate(trgmNFA->regex); initstate = getState(trgmNFA, &initkey); - initstate->init = true; + initstate->flags |= TSTATE_INIT; trgmNFA->initState = initstate; /* @@ -943,7 +951,7 @@ transformGraph(TrgmNFA *trgmNFA) * actual processing. */ if (trgmNFA->overflowed) - state->fin = true; + state->flags |= TSTATE_FIN; else processState(trgmNFA, state); @@ -968,7 +976,7 @@ processState(TrgmNFA *trgmNFA, TrgmState *state) * queue is empty. But we can quit if the state gets marked final. */ addKey(trgmNFA, state, &state->stateKey); - while (trgmNFA->keysQueue != NIL && !state->fin) + while (trgmNFA->keysQueue != NIL && !(state->flags & TSTATE_FIN)) { TrgmStateKey *key = (TrgmStateKey *) linitial(trgmNFA->keysQueue); @@ -980,7 +988,7 @@ processState(TrgmNFA *trgmNFA, TrgmState *state) * Add outgoing arcs only if state isn't final (we have no interest in * outgoing arcs if we already match) */ - if (!state->fin) + if (!(state->flags & TSTATE_FIN)) addArcs(trgmNFA, state); } @@ -989,7 +997,7 @@ processState(TrgmNFA *trgmNFA, TrgmState *state) * whether this should result in any further enter keys being added. * If so, add those keys to keysQueue so that processState will handle them. * - * If the enter key is for the NFA's final state, set state->fin = TRUE. + * If the enter key is for the NFA's final state, mark state as TSTATE_FIN. * This situation means that we can reach the final state from this expanded * state without reading any predictable trigram, so we must consider this * state as an accepting one. @@ -1059,7 +1067,7 @@ addKey(TrgmNFA *trgmNFA, TrgmState *state, TrgmStateKey *key) /* If state is now known final, mark it and we're done */ if (key->nstate == pg_reg_getfinalstate(trgmNFA->regex)) { - state->fin = true; + state->flags |= TSTATE_FIN; return; } @@ -1385,11 +1393,12 @@ getState(TrgmNFA *trgmNFA, TrgmStateKey *key) /* New state: initialize and queue it */ state->arcs = NIL; state->enterKeys = NIL; - state->init = false; - state->fin = false; + state->flags = 0; + /* states are initially given negative numbers */ + state->snumber = -(++trgmNFA->nstates); state->parent = NULL; - state->children = NIL; - state->number = -1; + state->tentFlags = 0; + state->tentParent = NULL; trgmNFA->queue = lappend(trgmNFA->queue, state); } @@ -1454,10 +1463,10 @@ selectColorTrigrams(TrgmNFA *trgmNFA) ColorTrgmInfo *colorTrgms; int64 totalTrgmCount; float4 totalTrgmPenalty; - int number; + int cnumber; /* Collect color trigrams from all arcs */ - colorTrgms = (ColorTrgmInfo *) palloc(sizeof(ColorTrgmInfo) * arcsCount); + colorTrgms = (ColorTrgmInfo *) palloc0(sizeof(ColorTrgmInfo) * arcsCount); trgmNFA->colorTrgms = colorTrgms; i = 0; @@ -1470,12 +1479,15 @@ selectColorTrigrams(TrgmNFA *trgmNFA) { TrgmArc *arc = (TrgmArc *) lfirst(cell); TrgmArcInfo *arcInfo = (TrgmArcInfo *) palloc(sizeof(TrgmArcInfo)); + ColorTrgmInfo *trgmInfo = &colorTrgms[i]; arcInfo->source = state; arcInfo->target = arc->target; - colorTrgms[i].arcs = list_make1(arcInfo); - colorTrgms[i].expanded = true; - colorTrgms[i].ctrgm = arc->ctrgm; + trgmInfo->ctrgm = arc->ctrgm; + trgmInfo->cnumber = -1; + /* count and penalty will be set below */ + trgmInfo->expanded = true; + trgmInfo->arcs = list_make1(arcInfo); i++; } } @@ -1573,6 +1585,15 @@ selectColorTrigrams(TrgmNFA *trgmNFA) if (totalTrgmPenalty <= WISH_TRGM_PENALTY) break; +#ifdef TRGM_REGEXP_DEBUG + fprintf(stderr, "considering ctrgm %d %d %d, penalty %f, %d arcs\n", + trgmInfo->ctrgm.colors[0], + trgmInfo->ctrgm.colors[1], + trgmInfo->ctrgm.colors[2], + trgmInfo->penalty, + list_length(trgmInfo->arcs)); +#endif + /* * Does any arc of this color trigram connect initial and final * states? If so we can't remove it. @@ -1582,6 +1603,14 @@ selectColorTrigrams(TrgmNFA *trgmNFA) TrgmArcInfo *arcInfo = (TrgmArcInfo *) lfirst(cell); TrgmState *source = arcInfo->source, *target = arcInfo->target; + int source_flags, + target_flags; + +#ifdef TRGM_REGEXP_DEBUG + fprintf(stderr, "examining arc to s%d (%x) from s%d (%x)\n", + -target->snumber, target->flags, + -source->snumber, source->flags); +#endif /* examine parent states, if any merging has already happened */ while (source->parent) @@ -1589,15 +1618,98 @@ selectColorTrigrams(TrgmNFA *trgmNFA) while (target->parent) target = target->parent; - if ((source->init || target->init) && - (source->fin || target->fin)) +#ifdef TRGM_REGEXP_DEBUG + fprintf(stderr, " ... after completed merges: to s%d (%x) from s%d (%x)\n", + -target->snumber, target->flags, + -source->snumber, source->flags); +#endif + + /* we must also consider merges we are planning right now */ + source_flags = source->flags | source->tentFlags; + while (source->tentParent) + { + source = source->tentParent; + source_flags |= source->flags | source->tentFlags; + } + target_flags = target->flags | target->tentFlags; + while (target->tentParent) + { + target = target->tentParent; + target_flags |= target->flags | target->tentFlags; + } + +#ifdef TRGM_REGEXP_DEBUG + fprintf(stderr, " ... after tentative merges: to s%d (%x) from s%d (%x)\n", + -target->snumber, target_flags, + -source->snumber, source_flags); +#endif + + /* would fully-merged state have both INIT and FIN set? */ + if (((source_flags | target_flags) & (TSTATE_INIT | TSTATE_FIN)) == + (TSTATE_INIT | TSTATE_FIN)) { canRemove = false; break; } + + /* ok so far, so remember planned merge */ + if (source != target) + { +#ifdef TRGM_REGEXP_DEBUG + fprintf(stderr, " ... tentatively merging s%d into s%d\n", + -target->snumber, -source->snumber); +#endif + target->tentParent = source; + source->tentFlags |= target_flags; + } + } + + /* + * We must reset all the tentFlags/tentParent fields before + * continuing. tentFlags could only have become set in states that + * are the source or parent or tentative parent of one of the current + * arcs; likewise tentParent could only have become set in states that + * are the target or parent or tentative parent of one of the current + * arcs. There might be some overlap between those sets, but if we + * clear tentFlags in target states as well as source states, we + * should be okay even if we visit a state as target before visiting + * it as a source. + */ + foreach(cell, trgmInfo->arcs) + { + TrgmArcInfo *arcInfo = (TrgmArcInfo *) lfirst(cell); + TrgmState *source = arcInfo->source, + *target = arcInfo->target; + TrgmState *ttarget; + + /* no need to touch previously-merged states */ + while (source->parent) + source = source->parent; + while (target->parent) + target = target->parent; + + while (source) + { + source->tentFlags = 0; + source = source->tentParent; + } + + while ((ttarget = target->tentParent) != NULL) + { + target->tentParent = NULL; + target->tentFlags = 0; /* in case it was also a source */ + target = ttarget; + } } + + /* Now, move on if we can't drop this trigram */ if (!canRemove) + { +#ifdef TRGM_REGEXP_DEBUG + fprintf(stderr, " ... not ok to merge\n"); +#endif continue; + } /* OK, merge states linked by each arc labeled by the trigram */ foreach(cell, trgmInfo->arcs) @@ -1611,7 +1723,16 @@ selectColorTrigrams(TrgmNFA *trgmNFA) while (target->parent) target = target->parent; if (source != target) + { +#ifdef TRGM_REGEXP_DEBUG + fprintf(stderr, "merging s%d into s%d\n", + -target->snumber, -source->snumber); +#endif mergeStates(source, target); + /* Assert we didn't merge initial and final states */ + Assert((source->flags & (TSTATE_INIT | TSTATE_FIN)) != + (TSTATE_INIT | TSTATE_FIN)); + } } /* Mark trigram unexpanded, and update totals */ @@ -1630,15 +1751,15 @@ selectColorTrigrams(TrgmNFA *trgmNFA) * Sort color trigrams by colors (will be useful for bsearch in packGraph) * and enumerate the color trigrams that are expanded. */ - number = 0; + cnumber = 0; qsort(colorTrgms, trgmNFA->colorTrgmsCount, sizeof(ColorTrgmInfo), colorTrgmInfoCmp); for (i = 0; i < trgmNFA->colorTrgmsCount; i++) { if (colorTrgms[i].expanded) { - colorTrgms[i].number = number; - number++; + colorTrgms[i].cnumber = cnumber; + cnumber++; } } @@ -1754,27 +1875,15 @@ fillTrgm(trgm *ptrgm, trgm_mb_char s[3]) static void mergeStates(TrgmState *state1, TrgmState *state2) { - ListCell *cell; - Assert(state1 != state2); Assert(!state1->parent); Assert(!state2->parent); - /* state1 absorbs state2's init/fin flags */ - state1->init |= state2->init; - state1->fin |= state2->fin; + /* state1 absorbs state2's flags */ + state1->flags |= state2->flags; - /* state2, and all its children, become children of state1 */ - foreach(cell, state2->children) - { - TrgmState *state = (TrgmState *) lfirst(cell); - - state->parent = state1; - } + /* state2, and indirectly all its children, become children of state1 */ state2->parent = state1; - state1->children = list_concat(state1->children, state2->children); - state1->children = lappend(state1->children, state2); - state2->children = NIL; } /* @@ -1821,7 +1930,7 @@ colorTrgmInfoPenaltyCmp(const void *p1, const void *p2) static TrgmPackedGraph * packGraph(TrgmNFA *trgmNFA, MemoryContext rcontext) { - int number = 2, + int snumber = 2, arcIndex, arcsCount; HASH_SEQ_STATUS scan_status; @@ -1841,16 +1950,16 @@ packGraph(TrgmNFA *trgmNFA, MemoryContext rcontext) while (state->parent) state = state->parent; - if (state->number < 0) + if (state->snumber < 0) { - if (state->init) - state->number = 0; - else if (state->fin) - state->number = 1; + if (state->flags & TSTATE_INIT) + state->snumber = 0; + else if (state->flags & TSTATE_FIN) + state->snumber = 1; else { - state->number = number; - number++; + state->snumber = snumber; + snumber++; } } } @@ -1876,7 +1985,7 @@ packGraph(TrgmNFA *trgmNFA, MemoryContext rcontext) while (target->parent) target = target->parent; - if (source->number != target->number) + if (source->snumber != target->snumber) { ColorTrgmInfo *ctrgm; @@ -1888,9 +1997,9 @@ packGraph(TrgmNFA *trgmNFA, MemoryContext rcontext) Assert(ctrgm != NULL); Assert(ctrgm->expanded); - arcs[arcIndex].sourceState = source->number; - arcs[arcIndex].targetState = target->number; - arcs[arcIndex].colorTrgm = ctrgm->number; + arcs[arcIndex].sourceState = source->snumber; + arcs[arcIndex].targetState = target->snumber; + arcs[arcIndex].colorTrgm = ctrgm->cnumber; arcIndex++; } } @@ -1936,13 +2045,13 @@ packGraph(TrgmNFA *trgmNFA, MemoryContext rcontext) } /* Pack states and arcs information */ - result->statesCount = number; + result->statesCount = snumber; result->states = (TrgmPackedState *) - MemoryContextAlloc(rcontext, number * sizeof(TrgmPackedState)); + MemoryContextAlloc(rcontext, snumber * sizeof(TrgmPackedState)); packedArcs = (TrgmPackedArc *) MemoryContextAlloc(rcontext, arcsCount * sizeof(TrgmPackedArc)); j = 0; - for (i = 0; i < number; i++) + for (i = 0; i < snumber; i++) { int cnt = 0; @@ -2108,10 +2217,10 @@ printTrgmNFA(TrgmNFA *trgmNFA) { ListCell *cell; - appendStringInfo(&buf, "s%p", (void *) state); - if (state->fin) + appendStringInfo(&buf, "s%d", -state->snumber); + if (state->flags & TSTATE_FIN) appendStringInfoString(&buf, " [shape = doublecircle]"); - if (state->init) + if (state->flags & TSTATE_INIT) initstate = state; appendStringInfo(&buf, " [label = \"%d\"]", state->stateKey.nstate); appendStringInfoString(&buf, ";\n"); @@ -2120,8 +2229,8 @@ printTrgmNFA(TrgmNFA *trgmNFA) { TrgmArc *arc = (TrgmArc *) lfirst(cell); - appendStringInfo(&buf, " s%p -> s%p [label = \"", - (void *) state, (void *) arc->target); + appendStringInfo(&buf, " s%d -> s%d [label = \"", + -state->snumber, -arc->target->snumber); printTrgmColor(&buf, arc->ctrgm.colors[0]); appendStringInfoChar(&buf, ' '); printTrgmColor(&buf, arc->ctrgm.colors[1]); @@ -2134,7 +2243,7 @@ printTrgmNFA(TrgmNFA *trgmNFA) if (initstate) { appendStringInfoString(&buf, " node [shape = point ]; initial;\n"); - appendStringInfo(&buf, " initial -> s%p;\n", (void *) initstate); + appendStringInfo(&buf, " initial -> s%d;\n", -initstate->snumber); } appendStringInfoString(&buf, "}\n"); diff --git a/contrib/pgcrypto/mbuf.c b/contrib/pgcrypto/mbuf.c index 44d9adcd2a..73dbfbd08f 100644 --- a/contrib/pgcrypto/mbuf.c +++ b/contrib/pgcrypto/mbuf.c @@ -311,7 +311,7 @@ pullf_read_max(PullFilter *pf, int len, uint8 **data_p, uint8 *tmpbuf) } /* - * caller wants exatly len bytes and dont bother with references + * caller wants exactly len bytes and don't bother with references */ int pullf_read_fixed(PullFilter *src, int len, uint8 *dst) diff --git a/contrib/pgcrypto/pgp-mpi-internal.c b/contrib/pgcrypto/pgp-mpi-internal.c index be95f2d092..daf4594eb7 100644 --- a/contrib/pgcrypto/pgp-mpi-internal.c +++ b/contrib/pgcrypto/pgp-mpi-internal.c @@ -139,7 +139,7 @@ bn_to_mpi(mpz_t *bn) } /* - * Decide the number of bits in the random componont k + * Decide the number of bits in the random component k * * It should be in the same range as p for signing (which * is deprecated), but can be much smaller for encrypting. @@ -147,8 +147,8 @@ bn_to_mpi(mpz_t *bn) * Until I research it further, I just mimic gpg behaviour. * It has a special mapping table, for values <= 5120, * above that it uses 'arbitrary high number'. Following - * algorihm hovers 10-70 bits above gpg values. And for - * larger p, it uses gpg's algorihm. + * algorithm hovers 10-70 bits above gpg values. And for + * larger p, it uses gpg's algorithm. * * The point is - if k gets large, encryption will be * really slow. It does not matter for decryption. diff --git a/contrib/pgcrypto/pgp-mpi-openssl.c b/contrib/pgcrypto/pgp-mpi-openssl.c index 24484a6c54..afece26918 100644 --- a/contrib/pgcrypto/pgp-mpi-openssl.c +++ b/contrib/pgcrypto/pgp-mpi-openssl.c @@ -74,7 +74,7 @@ bn_to_mpi(BIGNUM *bn) } /* - * Decide the number of bits in the random componont k + * Decide the number of bits in the random component k * * It should be in the same range as p for signing (which * is deprecated), but can be much smaller for encrypting. @@ -82,8 +82,8 @@ bn_to_mpi(BIGNUM *bn) * Until I research it further, I just mimic gpg behaviour. * It has a special mapping table, for values <= 5120, * above that it uses 'arbitrary high number'. Following - * algorihm hovers 10-70 bits above gpg values. And for - * larger p, it uses gpg's algorihm. + * algorithm hovers 10-70 bits above gpg values. And for + * larger p, it uses gpg's algorithm. * * The point is - if k gets large, encryption will be * really slow. It does not matter for decryption. diff --git a/contrib/postgres_fdw/connection.c b/contrib/postgres_fdw/connection.c index c145d1fec3..849590c1fd 100644 --- a/contrib/postgres_fdw/connection.c +++ b/contrib/postgres_fdw/connection.c @@ -14,6 +14,8 @@ #include "postgres_fdw.h" +#include "access/htup_details.h" +#include "catalog/pg_user_mapping.h" #include "access/xact.h" #include "access/xtm.h" #include "access/transam.h" @@ -21,7 +23,9 @@ #include "miscadmin.h" #include "storage/latch.h" #include "utils/hsearch.h" +#include "utils/inval.h" #include "utils/memutils.h" +#include "utils/syscache.h" /* @@ -46,10 +50,15 @@ typedef struct ConnCacheEntry { ConnCacheKey key; /* hash key (must be first) */ PGconn *conn; /* connection to foreign server, or NULL */ + /* Remaining fields are invalid when conn is NULL: */ int xact_depth; /* 0 = no xact open, 1 = main xact open, 2 = * one level of subxact open, etc */ bool have_prep_stmt; /* have we prepared any stmts in this xact? */ bool have_error; /* have any subxacts aborted in this xact? */ + bool changing_xact_state; /* xact state change in process */ + bool invalidated; /* true if reconnect is pending */ + uint32 server_hashvalue; /* hash value of foreign server OID */ + uint32 mapping_hashvalue; /* hash value of user mapping OID */ } ConnCacheEntry; /* @@ -67,9 +76,12 @@ static bool xact_got_connection = false; typedef long long csn_t; static csn_t currentGlobalTransactionId = 0; static int currentLocalTransactionId = 0; +static PGconn* currentConnection = NULL; + /* prototypes of private functions */ static PGconn *connect_pg_server(ForeignServer *server, UserMapping *user); +static void disconnect_pg_server(ConnCacheEntry *entry); static void check_conn_params(const char **keywords, const char **values); static void configure_remote_session(PGconn *conn); static void do_sql_command(PGconn *conn, const char *sql); @@ -81,6 +93,13 @@ static void pgfdw_subxact_callback(SubXactEvent event, SubTransactionId mySubid, SubTransactionId parentSubid, void *arg); +static void pgfdw_inval_callback(Datum arg, int cacheid, uint32 hashvalue); +static void pgfdw_reject_incomplete_xact_state_change(ConnCacheEntry *entry); +static bool pgfdw_cancel_query(PGconn *conn); +static bool pgfdw_exec_cleanup_query(PGconn *conn, const char *query, + bool ignore_errors); +static bool pgfdw_get_cleanup_result(PGconn *conn, TimestampTz endtime, + PGresult **result); /* @@ -92,13 +111,6 @@ static void pgfdw_subxact_callback(SubXactEvent event, * will_prep_stmt must be true if caller intends to create any prepared * statements. Since those don't go away automatically at transaction end * (not even on error), we need this flag to cue manual cleanup. - * - * XXX Note that caching connections theoretically requires a mechanism to - * detect change of FDW objects to invalidate already established connections. - * We could manage that by watching for invalidation events on the relevant - * syscaches. For the moment, though, it's not clear that this would really - * be useful and not mere pedantry. We could not flush any active connections - * mid-transaction anyway. */ PGconn * GetConnection(UserMapping *user, bool will_prep_stmt) @@ -127,6 +139,10 @@ GetConnection(UserMapping *user, bool will_prep_stmt) */ RegisterXactCallback(pgfdw_xact_callback, NULL); RegisterSubXactCallback(pgfdw_subxact_callback, NULL); + CacheRegisterSyscacheCallback(FOREIGNSERVEROID, + pgfdw_inval_callback, (Datum) 0); + CacheRegisterSyscacheCallback(USERMAPPINGOID, + pgfdw_inval_callback, (Datum) 0); } /* Set flag that we did GetConnection during the current transaction */ @@ -141,11 +157,25 @@ GetConnection(UserMapping *user, bool will_prep_stmt) entry = hash_search(ConnectionHash, &key, HASH_ENTER, &found); if (!found) { - /* initialize new hashtable entry (key is already filled in) */ + /* + * We need only clear "conn" here; remaining fields will be filled + * later when "conn" is set. + */ entry->conn = NULL; - entry->xact_depth = 0; - entry->have_prep_stmt = false; - entry->have_error = false; + } + + /* Reject further use of connections which failed abort cleanup. */ + pgfdw_reject_incomplete_xact_state_change(entry); + + /* + * If the connection needs to be remade due to invalidation, disconnect as + * soon as we're out of all transactions. + */ + if (entry->conn != NULL && entry->invalidated && entry->xact_depth == 0) + { + elog(DEBUG3, "closing connection %p for option changes to take effect", + entry->conn); + disconnect_pg_server(entry); } /* @@ -157,15 +187,26 @@ GetConnection(UserMapping *user, bool will_prep_stmt) /* * If cache entry doesn't have a connection, we have to establish a new * connection. (If connect_pg_server throws an error, the cache entry - * will be left in a valid empty state.) + * will remain in a valid empty state, ie conn == NULL.) */ if (entry->conn == NULL) { ForeignServer *server = GetForeignServer(user->serverid); - entry->xact_depth = 0; /* just to be sure */ + /* Reset all transient state fields, to be sure all are clean */ + entry->xact_depth = 0; entry->have_prep_stmt = false; entry->have_error = false; + entry->changing_xact_state = false; + entry->invalidated = false; + entry->server_hashvalue = + GetSysCacheHashValue1(FOREIGNSERVEROID, + ObjectIdGetDatum(server->serverid)); + entry->mapping_hashvalue = + GetSysCacheHashValue1(USERMAPPINGOID, + ObjectIdGetDatum(user->umid)); + + /* Now try to make the connection */ entry->conn = connect_pg_server(server, user); elog(DEBUG3, "new postgres_fdw connection %p for server \"%s\" (user mapping oid %u, userid %u)", @@ -279,6 +320,19 @@ connect_pg_server(ForeignServer *server, UserMapping *user) return conn; } +/* + * Disconnect any open connection for a connection cache entry. + */ +static void +disconnect_pg_server(ConnCacheEntry *entry) +{ + if (entry->conn != NULL) + { + PQfinish(entry->conn); + entry->conn = NULL; + } +} + /* * For non-superusers, insist that the connstr specify a password. This * prevents a password from being picked up from .pgpass, a service file, @@ -360,7 +414,9 @@ do_sql_command(PGconn *conn, const char *sql) { PGresult *res; - res = PQexec(conn, sql); + if (!PQsendQuery(conn, sql)) + pgfdw_report_error(ERROR, NULL, conn, false, sql); + res = pgfdw_get_result(conn, sql); if (PQresultStatus(res) != PGRES_COMMAND_OK) pgfdw_report_error(ERROR, res, conn, true, sql); PQclear(res); @@ -406,6 +462,8 @@ static void begin_remote_xact(ConnCacheEntry *entry) { int curlevel = GetCurrentTransactionNestLevel(); + PGresult *res; + /* Start main transaction if we haven't yet */ if (entry->xact_depth <= 0) @@ -419,8 +477,6 @@ begin_remote_xact(ConnCacheEntry *entry) if (TransactionIdIsValid(gxid)) { char stmt[64]; - PGresult *res; - snprintf(stmt, sizeof(stmt), "select public.dtm_join_transaction(%d)", gxid); res = PQexec(entry->conn, stmt); PQclear(res); @@ -430,30 +486,37 @@ begin_remote_xact(ConnCacheEntry *entry) sql = "START TRANSACTION ISOLATION LEVEL SERIALIZABLE"; else sql = "START TRANSACTION ISOLATION LEVEL REPEATABLE READ"; + entry->changing_xact_state = true; do_sql_command(entry->conn, sql); entry->xact_depth = 1; + entry->changing_xact_state = false; + if (UseTsDtmTransactions) { - if (!currentGlobalTransactionId) + if (currentConnection == NULL) { - PGresult *res = PQexec(entry->conn, psprintf("SELECT public.dtm_extend('%d.%d')", - MyProcPid, ++currentLocalTransactionId)); - char *resp; - - if (PQresultStatus(res) != PGRES_TUPLES_OK) - { - pgfdw_report_error(ERROR, res, entry->conn, true, sql); - } - resp = PQgetvalue(res, 0, 0); - if (resp == NULL || (*resp) == '\0' || sscanf(resp, "%lld", ¤tGlobalTransactionId) != 1) - { - pgfdw_report_error(ERROR, res, entry->conn, true, sql); - } - PQclear(res); - } - else + currentConnection = entry->conn; + } + else if (entry->conn != currentConnection) { - PGresult *res = PQexec(entry->conn, psprintf("SELECT public.dtm_access(%llu, '%d.%d')", currentGlobalTransactionId, MyProcPid, currentLocalTransactionId)); + if (!currentGlobalTransactionId) + { + char *resp; + res = PQexec(currentConnection, psprintf("SELECT public.dtm_extend('%d.%d')", + MyProcPid, ++currentLocalTransactionId)); + + if (PQresultStatus(res) != PGRES_TUPLES_OK) + { + pgfdw_report_error(ERROR, res, currentConnection, true, sql); + } + resp = PQgetvalue(res, 0, 0); + if (resp == NULL || (*resp) == '\0' || sscanf(resp, "%lld", ¤tGlobalTransactionId) != 1) + { + pgfdw_report_error(ERROR, res, currentConnection, true, sql); + } + PQclear(res); + } + res = PQexec(entry->conn, psprintf("SELECT public.dtm_access(%llu, '%d.%d')", currentGlobalTransactionId, MyProcPid, currentLocalTransactionId)); if (PQresultStatus(res) != PGRES_TUPLES_OK) { @@ -474,8 +537,10 @@ begin_remote_xact(ConnCacheEntry *entry) char sql[64]; snprintf(sql, sizeof(sql), "SAVEPOINT s%d", entry->xact_depth + 1); + entry->changing_xact_state = true; do_sql_command(entry->conn, sql); entry->xact_depth++; + entry->changing_xact_state = false; } } @@ -549,7 +614,7 @@ pgfdw_exec_query(PGconn *conn, const char *query) * * This function offers quick responsiveness by checking for any interruptions. * - * This function emulates the PQexec()'s behavior of returning the last result + * This function emulates PQexec()'s behavior of returning the last result * when there are many. * * Caller is responsible for the error handling on the result. @@ -557,40 +622,50 @@ pgfdw_exec_query(PGconn *conn, const char *query) PGresult * pgfdw_get_result(PGconn *conn, const char *query) { - PGresult *last_res = NULL; + PGresult *volatile last_res = NULL; - for (;;) + /* In what follows, do not leak any PGresults on an error. */ + PG_TRY(); { - PGresult *res; - - while (PQisBusy(conn)) + for (;;) { - int wc; + PGresult *res; + + while (PQisBusy(conn)) + { + int wc; - /* Sleep until there's something to do */ - wc = WaitLatchOrSocket(MyLatch, - WL_LATCH_SET | WL_SOCKET_READABLE, - PQsocket(conn), - -1L); - ResetLatch(MyLatch); + /* Sleep until there's something to do */ + wc = WaitLatchOrSocket(MyLatch, + WL_LATCH_SET | WL_SOCKET_READABLE, + PQsocket(conn), + -1L); + ResetLatch(MyLatch); - CHECK_FOR_INTERRUPTS(); + CHECK_FOR_INTERRUPTS(); - /* Data available in socket */ - if (wc & WL_SOCKET_READABLE) - { - if (!PQconsumeInput(conn)) - pgfdw_report_error(ERROR, NULL, conn, false, query); + /* Data available in socket? */ + if (wc & WL_SOCKET_READABLE) + { + if (!PQconsumeInput(conn)) + pgfdw_report_error(ERROR, NULL, conn, false, query); + } } - } - res = PQgetResult(conn); - if (res == NULL) - break; /* query is complete */ + res = PQgetResult(conn); + if (res == NULL) + break; /* query is complete */ + PQclear(last_res); + last_res = res; + } + } + PG_CATCH(); + { PQclear(last_res); - last_res = res; + PG_RE_THROW(); } + PG_END_TRY(); return last_res; } @@ -642,7 +717,7 @@ pgfdw_report_error(int elevel, PGresult *res, PGconn *conn, ereport(elevel, (errcode(sqlstate), message_primary ? errmsg_internal("%s", message_primary) : - errmsg("unknown error"), + errmsg("could not obtain message string for remote error"), message_detail ? errdetail_internal("%s", message_detail) : 0, message_hint ? errhint("%s", message_hint) : 0, message_context ? errcontext("%s", message_context) : 0, @@ -740,6 +815,20 @@ pgfdw_xact_callback(XactEvent event, void *arg) HASH_SEQ_STATUS scan; ConnCacheEntry *entry; + /* Do nothing for this events */ + switch (event) + { + case XACT_EVENT_START: + case XACT_EVENT_POST_PREPARE: + case XACT_EVENT_COMMIT_PREPARED: + case XACT_EVENT_PRE_COMMIT_PREPARED: + case XACT_EVENT_ABORT_PREPARED: + case XACT_EVENT_COMMIT_COMMAND: + return; + default: + break; + } + /* Quick exit if no connections were touched in this transaction. */ if (!xact_got_connection) return; @@ -794,13 +883,22 @@ pgfdw_xact_callback(XactEvent event, void *arg) /* If it has an open remote transaction, try to close it */ if (entry->xact_depth > 0) { - elog(DEBUG3, "closing remote transaction on connection %p event %d", - entry->conn, event); + bool abort_cleanup_failure = false; + + elog(DEBUG3, "closing remote transaction on connection %p", + entry->conn); switch (event) { case XACT_EVENT_PARALLEL_PRE_COMMIT: case XACT_EVENT_PRE_COMMIT: + + /* + * If abort cleanup previously failed for this connection, + * we can't issue any more commands against it. + */ + pgfdw_reject_incomplete_xact_state_change(entry); + /* Commit all remote transactions during pre-commit */ do_sql_send_command(entry->conn, "COMMIT TRANSACTION"); continue; @@ -826,9 +924,10 @@ pgfdw_xact_callback(XactEvent event, void *arg) case XACT_EVENT_PREPARE: if (!currentGlobalTransactionId) { - do_sql_wait_command(entry->conn, "COMMIT TRANSACTION"); + entry->changing_xact_state = true; + do_sql_command(entry->conn, "COMMIT TRANSACTION"); + entry->changing_xact_state = false; } - /* * If there were any errors in subtransactions, and we * made prepared statements, do a DEALLOCATE ALL to make @@ -855,6 +954,27 @@ pgfdw_xact_callback(XactEvent event, void *arg) case XACT_EVENT_PARALLEL_ABORT: case XACT_EVENT_ABORT: + + /* + * Don't try to clean up the connection if we're already + * in error recursion trouble. + */ + if (in_error_recursion_trouble()) + entry->changing_xact_state = true; + + /* + * If connection is already unsalvageable, don't touch it + * further. + */ + if (entry->changing_xact_state) + break; + + /* + * Mark this connection as in the process of changing + * transaction state. + */ + entry->changing_xact_state = true; + /* Assume we might have lost track of prepared statements */ entry->have_error = true; @@ -865,45 +985,43 @@ pgfdw_xact_callback(XactEvent event, void *arg) * command is still being processed by the remote server, * and if so, request cancellation of the command. */ - if (PQtransactionStatus(entry->conn) == PQTRANS_ACTIVE) + if (PQtransactionStatus(entry->conn) == PQTRANS_ACTIVE && + !pgfdw_cancel_query(entry->conn)) { - PGcancel *cancel; - char errbuf[256]; - - if ((cancel = PQgetCancel(entry->conn))) - { - if (!PQcancel(cancel, errbuf, sizeof(errbuf))) - ereport(WARNING, - (errcode(ERRCODE_CONNECTION_FAILURE), - errmsg("could not send cancel request: %s", - errbuf))); - PQfreeCancel(cancel); - } + /* Unable to cancel running query. */ + abort_cleanup_failure = true; + } + else if (!pgfdw_exec_cleanup_query(entry->conn, + "ABORT TRANSACTION", + false)) + { + /* Unable to abort remote transaction. */ + abort_cleanup_failure = true; + } + else if (entry->have_prep_stmt && entry->have_error && + !pgfdw_exec_cleanup_query(entry->conn, + "DEALLOCATE ALL", + true)) + { + /* Trouble clearing prepared statements. */ + abort_cleanup_failure = true; } - - /* If we're aborting, abort all remote transactions too */ - res = PQexec(entry->conn, "ABORT TRANSACTION"); - /* Note: can't throw ERROR, it would be infinite loop */ - if (PQresultStatus(res) != PGRES_COMMAND_OK) - pgfdw_report_error(WARNING, res, entry->conn, true, - "ABORT TRANSACTION"); else { - PQclear(res); - /* As above, make sure to clear any prepared stmts */ - if (entry->have_prep_stmt && entry->have_error) - { - res = PQexec(entry->conn, "DEALLOCATE ALL"); - PQclear(res); - } entry->have_prep_stmt = false; entry->have_error = false; } + + /* Disarm changing_xact_state if it all worked. */ + entry->changing_xact_state = abort_cleanup_failure; break; case XACT_EVENT_START: - case XACT_EVENT_ABORT_PREPARED: + case XACT_EVENT_POST_PREPARE: case XACT_EVENT_COMMIT_PREPARED: + case XACT_EVENT_PRE_COMMIT_PREPARED: + case XACT_EVENT_ABORT_PREPARED: + case XACT_EVENT_COMMIT_COMMAND: break; } } @@ -916,11 +1034,11 @@ pgfdw_xact_callback(XactEvent event, void *arg) * recover. Next GetConnection will open a new connection. */ if (PQstatus(entry->conn) != CONNECTION_OK || - PQtransactionStatus(entry->conn) != PQTRANS_IDLE) + PQtransactionStatus(entry->conn) != PQTRANS_IDLE || + entry->changing_xact_state) { - elog(WARNING, "discarding connection %p, conn status=%d, trans status=%d", entry->conn, PQstatus(entry->conn), PQtransactionStatus(entry->conn)); - PQfinish(entry->conn); - entry->conn = NULL; + elog(DEBUG3, "discarding connection %p", entry->conn); + disconnect_pg_server(entry); } } if (event != XACT_EVENT_PARALLEL_PRE_COMMIT && event != XACT_EVENT_PRE_COMMIT) @@ -937,6 +1055,7 @@ pgfdw_xact_callback(XactEvent event, void *arg) cursor_number = 0; currentGlobalTransactionId = 0; + currentConnection = NULL; } } @@ -968,7 +1087,6 @@ pgfdw_subxact_callback(SubXactEvent event, SubTransactionId mySubid, hash_seq_init(&scan, ConnectionHash); while ((entry = (ConnCacheEntry *) hash_seq_search(&scan))) { - PGresult *res; char sql[100]; /* @@ -984,12 +1102,33 @@ pgfdw_subxact_callback(SubXactEvent event, SubTransactionId mySubid, if (event == SUBXACT_EVENT_PRE_COMMIT_SUB) { + /* + * If abort cleanup previously failed for this connection, we + * can't issue any more commands against it. + */ + pgfdw_reject_incomplete_xact_state_change(entry); + /* Commit all remote subtransactions during pre-commit */ snprintf(sql, sizeof(sql), "RELEASE SAVEPOINT s%d", curlevel); + entry->changing_xact_state = true; do_sql_command(entry->conn, sql); + entry->changing_xact_state = false; } - else + else if (in_error_recursion_trouble()) { + /* + * Don't try to clean up the connection if we're already in error + * recursion trouble. + */ + entry->changing_xact_state = true; + } + else if (!entry->changing_xact_state) + { + bool abort_cleanup_failure = false; + + /* Remember that abort cleanup is in progress. */ + entry->changing_xact_state = true; + /* Assume we might have lost track of prepared statements */ entry->have_error = true; @@ -1000,34 +1139,286 @@ pgfdw_subxact_callback(SubXactEvent event, SubTransactionId mySubid, * processed by the remote server, and if so, request cancellation * of the command. */ - if (PQtransactionStatus(entry->conn) == PQTRANS_ACTIVE) + if (PQtransactionStatus(entry->conn) == PQTRANS_ACTIVE && + !pgfdw_cancel_query(entry->conn)) + abort_cleanup_failure = true; + else { - PGcancel *cancel; - char errbuf[256]; - - if ((cancel = PQgetCancel(entry->conn))) - { - if (!PQcancel(cancel, errbuf, sizeof(errbuf))) - ereport(WARNING, - (errcode(ERRCODE_CONNECTION_FAILURE), - errmsg("could not send cancel request: %s", - errbuf))); - PQfreeCancel(cancel); - } + /* Rollback all remote subtransactions during abort */ + snprintf(sql, sizeof(sql), + "ROLLBACK TO SAVEPOINT s%d; RELEASE SAVEPOINT s%d", + curlevel, curlevel); + if (!pgfdw_exec_cleanup_query(entry->conn, sql, false)) + abort_cleanup_failure = true; } - /* Rollback all remote subtransactions during abort */ - snprintf(sql, sizeof(sql), - "ROLLBACK TO SAVEPOINT s%d; RELEASE SAVEPOINT s%d", - curlevel, curlevel); - res = PQexec(entry->conn, sql); - if (PQresultStatus(res) != PGRES_COMMAND_OK) - pgfdw_report_error(WARNING, res, entry->conn, true, sql); - else - PQclear(res); + /* Disarm changing_xact_state if it all worked. */ + entry->changing_xact_state = abort_cleanup_failure; } /* OK, we're outta that level of subtransaction */ entry->xact_depth--; } } + +/* + * Connection invalidation callback function + * + * After a change to a pg_foreign_server or pg_user_mapping catalog entry, + * mark connections depending on that entry as needing to be remade. + * We can't immediately destroy them, since they might be in the midst of + * a transaction, but we'll remake them at the next opportunity. + * + * Although most cache invalidation callbacks blow away all the related stuff + * regardless of the given hashvalue, connections are expensive enough that + * it's worth trying to avoid that. + * + * NB: We could avoid unnecessary disconnection more strictly by examining + * individual option values, but it seems too much effort for the gain. + */ +static void +pgfdw_inval_callback(Datum arg, int cacheid, uint32 hashvalue) +{ + HASH_SEQ_STATUS scan; + ConnCacheEntry *entry; + + Assert(cacheid == FOREIGNSERVEROID || cacheid == USERMAPPINGOID); + + /* ConnectionHash must exist already, if we're registered */ + hash_seq_init(&scan, ConnectionHash); + while ((entry = (ConnCacheEntry *) hash_seq_search(&scan))) + { + /* Ignore invalid entries */ + if (entry->conn == NULL) + continue; + + /* hashvalue == 0 means a cache reset, must clear all state */ + if (hashvalue == 0 || + (cacheid == FOREIGNSERVEROID && + entry->server_hashvalue == hashvalue) || + (cacheid == USERMAPPINGOID && + entry->mapping_hashvalue == hashvalue)) + entry->invalidated = true; + } +} + +/* + * Raise an error if the given connection cache entry is marked as being + * in the middle of an xact state change. This should be called at which no + * such change is expected to be in progress; if one is found to be in + * progress, it means that we aborted in the middle of a previous state change + * and now don't know what the remote transaction state actually is. + * Such connections can't safely be further used. Re-establishing the + * connection would change the snapshot and roll back any writes already + * performed, so that's not an option, either. Thus, we must abort. + */ +static void +pgfdw_reject_incomplete_xact_state_change(ConnCacheEntry *entry) +{ + HeapTuple tup; + Form_pg_user_mapping umform; + ForeignServer *server; + + /* nothing to do for inactive entries and entries of sane state */ + if (entry->conn == NULL || !entry->changing_xact_state) + return; + + /* make sure this entry is inactive */ + disconnect_pg_server(entry); + + /* find server name to be shown in the message below */ + tup = SearchSysCache1(USERMAPPINGOID, + ObjectIdGetDatum(entry->key)); + if (!HeapTupleIsValid(tup)) + elog(ERROR, "cache lookup failed for user mapping %u", entry->key); + umform = (Form_pg_user_mapping) GETSTRUCT(tup); + server = GetForeignServer(umform->umserver); + ReleaseSysCache(tup); + + ereport(ERROR, + (errcode(ERRCODE_CONNECTION_EXCEPTION), + errmsg("connection to server \"%s\" was lost", + server->servername))); +} + +/* + * Cancel the currently-in-progress query (whose query text we do not have) + * and ignore the result. Returns true if we successfully cancel the query + * and discard any pending result, and false if not. + */ +static bool +pgfdw_cancel_query(PGconn *conn) +{ + PGcancel *cancel; + char errbuf[256]; + PGresult *result = NULL; + TimestampTz endtime; + + /* + * If it takes too long to cancel the query and discard the result, assume + * the connection is dead. + */ + endtime = TimestampTzPlusMilliseconds(GetCurrentTimestamp(), 30000); + + /* + * Issue cancel request. Unfortunately, there's no good way to limit the + * amount of time that we might block inside PQgetCancel(). + */ + if ((cancel = PQgetCancel(conn))) + { + if (!PQcancel(cancel, errbuf, sizeof(errbuf))) + { + ereport(WARNING, + (errcode(ERRCODE_CONNECTION_FAILURE), + errmsg("could not send cancel request: %s", + errbuf))); + PQfreeCancel(cancel); + return false; + } + PQfreeCancel(cancel); + } + + /* Get and discard the result of the query. */ + if (pgfdw_get_cleanup_result(conn, endtime, &result)) + return false; + PQclear(result); + + return true; +} + +/* + * Submit a query during (sub)abort cleanup and wait up to 30 seconds for the + * result. If the query is executed without error, the return value is true. + * If the query is executed successfully but returns an error, the return + * value is true if and only if ignore_errors is set. If the query can't be + * sent or times out, the return value is false. + */ +static bool +pgfdw_exec_cleanup_query(PGconn *conn, const char *query, bool ignore_errors) +{ + PGresult *result = NULL; + TimestampTz endtime; + + /* + * If it takes too long to execute a cleanup query, assume the connection + * is dead. It's fairly likely that this is why we aborted in the first + * place (e.g. statement timeout, user cancel), so the timeout shouldn't + * be too long. + */ + endtime = TimestampTzPlusMilliseconds(GetCurrentTimestamp(), 30000); + + /* + * Submit a query. Since we don't use non-blocking mode, this also can + * block. But its risk is relatively small, so we ignore that for now. + */ + if (!PQsendQuery(conn, query)) + { + pgfdw_report_error(WARNING, NULL, conn, false, query); + return false; + } + + /* Get the result of the query. */ + if (pgfdw_get_cleanup_result(conn, endtime, &result)) + return false; + + /* Issue a warning if not successful. */ + if (PQresultStatus(result) != PGRES_COMMAND_OK) + { + pgfdw_report_error(WARNING, result, conn, true, query); + return ignore_errors; + } + PQclear(result); + + return true; +} + +/* + * Get, during abort cleanup, the result of a query that is in progress. This + * might be a query that is being interrupted by transaction abort, or it might + * be a query that was initiated as part of transaction abort to get the remote + * side back to the appropriate state. + * + * It's not a huge problem if we throw an ERROR here, but if we get into error + * recursion trouble, we'll end up slamming the connection shut, which will + * necessitate failing the entire toplevel transaction even if subtransactions + * were used. Try to use WARNING where we can. + * + * endtime is the time at which we should give up and assume the remote + * side is dead. Returns true if the timeout expired, otherwise false. + * Sets *result except in case of a timeout. + */ +static bool +pgfdw_get_cleanup_result(PGconn *conn, TimestampTz endtime, PGresult **result) +{ + volatile bool timed_out = false; + PGresult *volatile last_res = NULL; + + /* In what follows, do not leak any PGresults on an error. */ + PG_TRY(); + { + for (;;) + { + PGresult *res; + + while (PQisBusy(conn)) + { + int wc; + TimestampTz now = GetCurrentTimestamp(); + long secs; + int microsecs; + long cur_timeout; + + /* If timeout has expired, give up, else get sleep time. */ + if (now >= endtime) + { + timed_out = true; + goto exit; + } + TimestampDifference(now, endtime, &secs, µsecs); + + /* To protect against clock skew, limit sleep to one minute. */ + cur_timeout = Min(60000, secs * USECS_PER_SEC + microsecs); + + /* Sleep until there's something to do */ + wc = WaitLatchOrSocket(MyLatch, + WL_LATCH_SET | WL_SOCKET_READABLE | WL_TIMEOUT, + PQsocket(conn), + cur_timeout); + ResetLatch(MyLatch); + + CHECK_FOR_INTERRUPTS(); + + /* Data available in socket? */ + if (wc & WL_SOCKET_READABLE) + { + if (!PQconsumeInput(conn)) + { + /* connection trouble; treat the same as a timeout */ + timed_out = true; + goto exit; + } + } + } + + res = PQgetResult(conn); + if (res == NULL) + break; /* query is complete */ + + PQclear(last_res); + last_res = res; + } +exit: ; + } + PG_CATCH(); + { + PQclear(last_res); + PG_RE_THROW(); + } + PG_END_TRY(); + + if (timed_out) + PQclear(last_res); + else + *result = last_res; + return timed_out; +} diff --git a/contrib/postgres_fdw/expected/postgres_fdw.out b/contrib/postgres_fdw/expected/postgres_fdw.out index d7747cc665..20ea7c0308 100644 --- a/contrib/postgres_fdw/expected/postgres_fdw.out +++ b/contrib/postgres_fdw/expected/postgres_fdw.out @@ -183,6 +183,44 @@ ALTER FOREIGN TABLE ft2 ALTER COLUMN c1 OPTIONS (column_name 'C 1'); public | ft6 | loopback2 | (schema_name 'S 1', table_name 'T 4') | (5 rows) +-- Test that alteration of server options causes reconnection +-- Remote's errors might be non-English, so hide them to ensure stable results +\set VERBOSITY terse +SELECT c3, c4 FROM ft1 ORDER BY c3, c1 LIMIT 1; -- should work + c3 | c4 +-------+------------------------------ + 00001 | Fri Jan 02 00:00:00 1970 PST +(1 row) + +ALTER SERVER loopback OPTIONS (SET dbname 'no such database'); +SELECT c3, c4 FROM ft1 ORDER BY c3, c1 LIMIT 1; -- should fail +ERROR: could not connect to server "loopback" +DO $d$ + BEGIN + EXECUTE $$ALTER SERVER loopback + OPTIONS (SET dbname '$$||current_database()||$$')$$; + END; +$d$; +SELECT c3, c4 FROM ft1 ORDER BY c3, c1 LIMIT 1; -- should work again + c3 | c4 +-------+------------------------------ + 00001 | Fri Jan 02 00:00:00 1970 PST +(1 row) + +-- Test that alteration of user mapping options causes reconnection +ALTER USER MAPPING FOR CURRENT_USER SERVER loopback + OPTIONS (ADD user 'no such user'); +SELECT c3, c4 FROM ft1 ORDER BY c3, c1 LIMIT 1; -- should fail +ERROR: could not connect to server "loopback" +ALTER USER MAPPING FOR CURRENT_USER SERVER loopback + OPTIONS (DROP user); +SELECT c3, c4 FROM ft1 ORDER BY c3, c1 LIMIT 1; -- should work again + c3 | c4 +-------+------------------------------ + 00001 | Fri Jan 02 00:00:00 1970 PST +(1 row) + +\set VERBOSITY default -- Now we should be able to run ANALYZE. -- To exercise multiple code paths, we use local stats on ft1 -- and remote-estimate mode on ft2. @@ -1501,6 +1539,35 @@ SELECT t1.c1, t2.c1 FROM ft4 t1 FULL JOIN ft5 t2 ON (t1.c1 = t2.c1) WHERE (t1.c1 | 21 (10 rows) +-- full outer join + WHERE clause with shippable extensions set +EXPLAIN (VERBOSE, COSTS OFF) +SELECT t1.c1, t2.c2, t1.c3 FROM ft1 t1 FULL JOIN ft2 t2 ON (t1.c1 = t2.c1) WHERE postgres_fdw_abs(t1.c1) > 0 OFFSET 10 LIMIT 10; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Limit + Output: t1.c1, t2.c2, t1.c3 + -> Foreign Scan + Output: t1.c1, t2.c2, t1.c3 + Relations: (public.ft1 t1) FULL JOIN (public.ft2 t2) + Remote SQL: SELECT r1."C 1", r1.c3, r2.c2 FROM ("S 1"."T 1" r1 FULL JOIN "S 1"."T 1" r2 ON (((r1."C 1" = r2."C 1")))) WHERE ((public.postgres_fdw_abs(r1."C 1") > 0)) +(6 rows) + +ALTER SERVER loopback OPTIONS (DROP extensions); +-- full outer join + WHERE clause with shippable extensions not set +EXPLAIN (VERBOSE, COSTS OFF) +SELECT t1.c1, t2.c2, t1.c3 FROM ft1 t1 FULL JOIN ft2 t2 ON (t1.c1 = t2.c1) WHERE postgres_fdw_abs(t1.c1) > 0 OFFSET 10 LIMIT 10; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------- + Limit + Output: t1.c1, t2.c2, t1.c3 + -> Foreign Scan + Output: t1.c1, t2.c2, t1.c3 + Filter: (postgres_fdw_abs(t1.c1) > 0) + Relations: (public.ft1 t1) FULL JOIN (public.ft2 t2) + Remote SQL: SELECT r1."C 1", r1.c3, r2.c2 FROM ("S 1"."T 1" r1 FULL JOIN "S 1"."T 1" r2 ON (((r1."C 1" = r2."C 1")))) +(7 rows) + +ALTER SERVER loopback OPTIONS (ADD extensions 'postgres_fdw'); -- join two tables with FOR UPDATE clause -- tests whole-row reference for row marks EXPLAIN (VERBOSE, COSTS OFF) @@ -2053,7 +2120,7 @@ SELECT t1."C 1" FROM "S 1"."T 1" t1, LATERAL (SELECT DISTINCT t2.c1, t3.c1 FROM 1 (10 rows) --- non-Var items in targelist of the nullable rel of a join preventing +-- non-Var items in targetlist of the nullable rel of a join preventing -- push-down in some cases -- unable to push {ft1, ft2} EXPLAIN (VERBOSE, COSTS OFF) @@ -2479,12 +2546,100 @@ EXECUTE st5('foo', 1); 1 | 1 | 00001 | Fri Jan 02 00:00:00 1970 PST | Fri Jan 02 00:00:00 1970 | 1 | 1 | foo (1 row) +-- altering FDW options requires replanning +PREPARE st6 AS SELECT * FROM ft1 t1 WHERE t1.c1 = t1.c2; +EXPLAIN (VERBOSE, COSTS OFF) EXECUTE st6; + QUERY PLAN +---------------------------------------------------------------------------------------------- + Foreign Scan on public.ft1 t1 + Output: c1, c2, c3, c4, c5, c6, c7, c8 + Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 1" WHERE (("C 1" = c2)) +(3 rows) + +PREPARE st7 AS INSERT INTO ft1 (c1,c2,c3) VALUES (1001,101,'foo'); +EXPLAIN (VERBOSE, COSTS OFF) EXECUTE st7; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Insert on public.ft1 + Remote SQL: INSERT INTO "S 1"."T 1"("C 1", c2, c3, c4, c5, c6, c7, c8) VALUES ($1, $2, $3, $4, $5, $6, $7, $8) + -> Result + Output: NULL::integer, 1001, 101, 'foo'::text, NULL::timestamp with time zone, NULL::timestamp without time zone, NULL::character varying, 'ft1 '::character(10), NULL::user_enum +(4 rows) + +ALTER TABLE "S 1"."T 1" RENAME TO "T 0"; +ALTER FOREIGN TABLE ft1 OPTIONS (SET table_name 'T 0'); +EXPLAIN (VERBOSE, COSTS OFF) EXECUTE st6; + QUERY PLAN +---------------------------------------------------------------------------------------------- + Foreign Scan on public.ft1 t1 + Output: c1, c2, c3, c4, c5, c6, c7, c8 + Remote SQL: SELECT "C 1", c2, c3, c4, c5, c6, c7, c8 FROM "S 1"."T 0" WHERE (("C 1" = c2)) +(3 rows) + +EXECUTE st6; + c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 +----+----+-------+------------------------------+--------------------------+----+------------+----- + 1 | 1 | 00001 | Fri Jan 02 00:00:00 1970 PST | Fri Jan 02 00:00:00 1970 | 1 | 1 | foo + 2 | 2 | 00002 | Sat Jan 03 00:00:00 1970 PST | Sat Jan 03 00:00:00 1970 | 2 | 2 | foo + 3 | 3 | 00003 | Sun Jan 04 00:00:00 1970 PST | Sun Jan 04 00:00:00 1970 | 3 | 3 | foo + 4 | 4 | 00004 | Mon Jan 05 00:00:00 1970 PST | Mon Jan 05 00:00:00 1970 | 4 | 4 | foo + 5 | 5 | 00005 | Tue Jan 06 00:00:00 1970 PST | Tue Jan 06 00:00:00 1970 | 5 | 5 | foo + 6 | 6 | 00006 | Wed Jan 07 00:00:00 1970 PST | Wed Jan 07 00:00:00 1970 | 6 | 6 | foo + 7 | 7 | 00007 | Thu Jan 08 00:00:00 1970 PST | Thu Jan 08 00:00:00 1970 | 7 | 7 | foo + 8 | 8 | 00008 | Fri Jan 09 00:00:00 1970 PST | Fri Jan 09 00:00:00 1970 | 8 | 8 | foo + 9 | 9 | 00009 | Sat Jan 10 00:00:00 1970 PST | Sat Jan 10 00:00:00 1970 | 9 | 9 | foo +(9 rows) + +EXPLAIN (VERBOSE, COSTS OFF) EXECUTE st7; + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Insert on public.ft1 + Remote SQL: INSERT INTO "S 1"."T 0"("C 1", c2, c3, c4, c5, c6, c7, c8) VALUES ($1, $2, $3, $4, $5, $6, $7, $8) + -> Result + Output: NULL::integer, 1001, 101, 'foo'::text, NULL::timestamp with time zone, NULL::timestamp without time zone, NULL::character varying, 'ft1 '::character(10), NULL::user_enum +(4 rows) + +ALTER TABLE "S 1"."T 0" RENAME TO "T 1"; +ALTER FOREIGN TABLE ft1 OPTIONS (SET table_name 'T 1'); +PREPARE st8 AS SELECT count(c3) FROM ft1 t1 WHERE t1.c1 === t1.c2; +EXPLAIN (VERBOSE, COSTS OFF) EXECUTE st8; + QUERY PLAN +---------------------------------------------------------------------------------------- + Aggregate + Output: count(c3) + -> Foreign Scan on public.ft1 t1 + Output: c3 + Remote SQL: SELECT c3 FROM "S 1"."T 1" WHERE (("C 1" OPERATOR(public.===) c2)) +(5 rows) + +ALTER SERVER loopback OPTIONS (DROP extensions); +EXPLAIN (VERBOSE, COSTS OFF) EXECUTE st8; + QUERY PLAN +----------------------------------------------------------- + Aggregate + Output: count(c3) + -> Foreign Scan on public.ft1 t1 + Output: c3 + Filter: (t1.c1 === t1.c2) + Remote SQL: SELECT "C 1", c2, c3 FROM "S 1"."T 1" +(6 rows) + +EXECUTE st8; + count +------- + 9 +(1 row) + +ALTER SERVER loopback OPTIONS (ADD extensions 'postgres_fdw'); -- cleanup DEALLOCATE st1; DEALLOCATE st2; DEALLOCATE st3; DEALLOCATE st4; DEALLOCATE st5; +DEALLOCATE st6; +DEALLOCATE st7; +DEALLOCATE st8; -- System columns, except ctid, should not be sent to remote EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM ft1 t1 WHERE t1.tableoid = 'pg_class'::regclass LIMIT 1; @@ -4498,6 +4653,66 @@ INSERT INTO ft1(c1, c2) VALUES(1111, 2); UPDATE ft1 SET c2 = c2 + 1 WHERE c1 = 1; ALTER FOREIGN TABLE ft1 DROP CONSTRAINT ft1_c2negative; -- =================================================================== +-- test WITH CHECK OPTION constraints +-- =================================================================== +CREATE TABLE base_tbl (a int, b int); +CREATE FOREIGN TABLE foreign_tbl (a int, b int) + SERVER loopback OPTIONS(table_name 'base_tbl'); +CREATE VIEW rw_view AS SELECT * FROM foreign_tbl + WHERE a < b WITH CHECK OPTION; +\d+ rw_view + View "public.rw_view" + Column | Type | Modifiers | Storage | Description +--------+---------+-----------+---------+------------- + a | integer | | plain | + b | integer | | plain | +View definition: + SELECT foreign_tbl.a, + foreign_tbl.b + FROM foreign_tbl + WHERE foreign_tbl.a < foreign_tbl.b; +Options: check_option=cascaded + +INSERT INTO rw_view VALUES (0, 10); -- ok +INSERT INTO rw_view VALUES (10, 0); -- should fail +ERROR: new row violates check option for view "rw_view" +DETAIL: Failing row contains (10, 0). +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE rw_view SET b = 20 WHERE a = 0; -- not pushed down + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Update on public.foreign_tbl + Remote SQL: UPDATE public.base_tbl SET b = $2 WHERE ctid = $1 + -> Foreign Scan on public.foreign_tbl + Output: foreign_tbl.a, 20, foreign_tbl.ctid + Remote SQL: SELECT a, ctid FROM public.base_tbl WHERE ((a < b)) AND ((a = 0)) FOR UPDATE +(5 rows) + +UPDATE rw_view SET b = 20 WHERE a = 0; -- ok +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE rw_view SET b = -20 WHERE a = 0; -- not pushed down + QUERY PLAN +-------------------------------------------------------------------------------------------------- + Update on public.foreign_tbl + Remote SQL: UPDATE public.base_tbl SET b = $2 WHERE ctid = $1 + -> Foreign Scan on public.foreign_tbl + Output: foreign_tbl.a, '-20'::integer, foreign_tbl.ctid + Remote SQL: SELECT a, ctid FROM public.base_tbl WHERE ((a < b)) AND ((a = 0)) FOR UPDATE +(5 rows) + +UPDATE rw_view SET b = -20 WHERE a = 0; -- should fail +ERROR: new row violates check option for view "rw_view" +DETAIL: Failing row contains (0, -20). +SELECT * FROM foreign_tbl; + a | b +---+---- + 0 | 20 +(1 row) + +DROP FOREIGN TABLE foreign_tbl CASCADE; +NOTICE: drop cascades to view rw_view +DROP TABLE base_tbl; +-- =================================================================== -- test serial columns (ie, sequence-based defaults) -- =================================================================== create table loc1 (f1 serial, f2 text); diff --git a/contrib/postgres_fdw/postgres_fdw.c b/contrib/postgres_fdw/postgres_fdw.c index c51d775b57..9f846c366b 100644 --- a/contrib/postgres_fdw/postgres_fdw.c +++ b/contrib/postgres_fdw/postgres_fdw.c @@ -3179,22 +3179,29 @@ execute_dml_stmt(ForeignScanState *node) /* * Construct array of query parameter values in text format. */ - if (numParams > 0) + if (numParams > 0) + { process_query_params(econtext, dmstate->param_flinfo, dmstate->param_exprs, values); - - /* - * Notice that we pass NULL for paramTypes, thus forcing the remote server - * to infer types for all parameters. Since we explicitly cast every - * parameter (see deparse.c), the "inference" is trivial and will produce - * the desired result. This allows us to avoid assuming that the remote - * server has the same OIDs we do for the parameters' types. - */ - if (!PQsendQueryParams(dmstate->conn, dmstate->query, numParams, - NULL, values, NULL, NULL, 0)) - pgfdw_report_error(ERROR, NULL, dmstate->conn, false, dmstate->query); + + /* + * Notice that we pass NULL for paramTypes, thus forcing the remote server + * to infer types for all parameters. Since we explicitly cast every + * parameter (see deparse.c), the "inference" is trivial and will produce + * the desired result. This allows us to avoid assuming that the remote + * server has the same OIDs we do for the parameters' types. + */ + if (!PQsendQueryParams(dmstate->conn, dmstate->query, numParams, + NULL, values, NULL, NULL, 0)) + pgfdw_report_error(ERROR, NULL, dmstate->conn, false, dmstate->query); + } + else + { + if (!PQsendQuery(dmstate->conn, dmstate->query)) + pgfdw_report_error(ERROR, NULL, dmstate->conn, false, dmstate->query); + } /* * Get the result, and check for success. @@ -3994,6 +4001,15 @@ foreign_join_ok(PlannerInfo *root, RelOptInfo *joinrel, JoinType jointype, joinclauses = NIL; } + /* Get foreign server */ + fpinfo->server = fpinfo_o->server; + + /* + * Copy shippable_extensions before checking whether the foreign join is + * OK, so that we know which quals can be evaluated on the foreign server. + */ + fpinfo->shippable_extensions = fpinfo_o->shippable_extensions; + /* Join quals must be safe to push down. */ foreach(lc, joinclauses) { @@ -4137,9 +4153,6 @@ foreign_join_ok(PlannerInfo *root, RelOptInfo *joinrel, JoinType jointype, else fpinfo->user = NULL; - /* Get foreign server */ - fpinfo->server = fpinfo_o->server; - /* * Since both the joining relations come from the same server, the server * level options should have same value for both the relations. Pick from @@ -4259,7 +4272,6 @@ postgresGetForeignJoinPaths(PlannerInfo *root, * the path list of the joinrel, if one exists. We must be careful to * call it before adding any ForeignPath, since the ForeignPath might * dominate the only suitable local path available. We also do it before - * reconstruct the row for EvalPlanQual(). Find an alternative local path * calling foreign_join_ok(), since that function updates fpinfo and marks * it as pushable if the join is found to be pushable. */ diff --git a/contrib/postgres_fdw/sql/postgres_fdw.sql b/contrib/postgres_fdw/sql/postgres_fdw.sql index 6f684a1b0c..525da8c95f 100644 --- a/contrib/postgres_fdw/sql/postgres_fdw.sql +++ b/contrib/postgres_fdw/sql/postgres_fdw.sql @@ -187,6 +187,29 @@ ALTER FOREIGN TABLE ft1 ALTER COLUMN c1 OPTIONS (column_name 'C 1'); ALTER FOREIGN TABLE ft2 ALTER COLUMN c1 OPTIONS (column_name 'C 1'); \det+ +-- Test that alteration of server options causes reconnection +-- Remote's errors might be non-English, so hide them to ensure stable results +\set VERBOSITY terse +SELECT c3, c4 FROM ft1 ORDER BY c3, c1 LIMIT 1; -- should work +ALTER SERVER loopback OPTIONS (SET dbname 'no such database'); +SELECT c3, c4 FROM ft1 ORDER BY c3, c1 LIMIT 1; -- should fail +DO $d$ + BEGIN + EXECUTE $$ALTER SERVER loopback + OPTIONS (SET dbname '$$||current_database()||$$')$$; + END; +$d$; +SELECT c3, c4 FROM ft1 ORDER BY c3, c1 LIMIT 1; -- should work again + +-- Test that alteration of user mapping options causes reconnection +ALTER USER MAPPING FOR CURRENT_USER SERVER loopback + OPTIONS (ADD user 'no such user'); +SELECT c3, c4 FROM ft1 ORDER BY c3, c1 LIMIT 1; -- should fail +ALTER USER MAPPING FOR CURRENT_USER SERVER loopback + OPTIONS (DROP user); +SELECT c3, c4 FROM ft1 ORDER BY c3, c1 LIMIT 1; -- should work again +\set VERBOSITY default + -- Now we should be able to run ANALYZE. -- To exercise multiple code paths, we use local stats on ft1 -- and remote-estimate mode on ft2. @@ -422,6 +445,14 @@ SELECT t1.c1, t2.c2, t3.c3 FROM ft2 t1 LEFT JOIN ft2 t2 ON (t1.c1 = t2.c1) RIGHT EXPLAIN (VERBOSE, COSTS OFF) SELECT t1.c1, t2.c1 FROM ft4 t1 FULL JOIN ft5 t2 ON (t1.c1 = t2.c1) WHERE (t1.c1 = t2.c1 OR t1.c1 IS NULL) ORDER BY t1.c1, t2.c1 OFFSET 10 LIMIT 10; SELECT t1.c1, t2.c1 FROM ft4 t1 FULL JOIN ft5 t2 ON (t1.c1 = t2.c1) WHERE (t1.c1 = t2.c1 OR t1.c1 IS NULL) ORDER BY t1.c1, t2.c1 OFFSET 10 LIMIT 10; +-- full outer join + WHERE clause with shippable extensions set +EXPLAIN (VERBOSE, COSTS OFF) +SELECT t1.c1, t2.c2, t1.c3 FROM ft1 t1 FULL JOIN ft2 t2 ON (t1.c1 = t2.c1) WHERE postgres_fdw_abs(t1.c1) > 0 OFFSET 10 LIMIT 10; +ALTER SERVER loopback OPTIONS (DROP extensions); +-- full outer join + WHERE clause with shippable extensions not set +EXPLAIN (VERBOSE, COSTS OFF) +SELECT t1.c1, t2.c2, t1.c3 FROM ft1 t1 FULL JOIN ft2 t2 ON (t1.c1 = t2.c1) WHERE postgres_fdw_abs(t1.c1) > 0 OFFSET 10 LIMIT 10; +ALTER SERVER loopback OPTIONS (ADD extensions 'postgres_fdw'); -- join two tables with FOR UPDATE clause -- tests whole-row reference for row marks EXPLAIN (VERBOSE, COSTS OFF) @@ -485,7 +516,7 @@ EXPLAIN (VERBOSE, COSTS OFF) SELECT t1."C 1" FROM "S 1"."T 1" t1, LATERAL (SELECT DISTINCT t2.c1, t3.c1 FROM ft1 t2, ft2 t3 WHERE t2.c1 = t3.c1 AND t2.c2 = t1.c2) q ORDER BY t1."C 1" OFFSET 10 LIMIT 10; SELECT t1."C 1" FROM "S 1"."T 1" t1, LATERAL (SELECT DISTINCT t2.c1, t3.c1 FROM ft1 t2, ft2 t3 WHERE t2.c1 = t3.c1 AND t2.c2 = t1.c2) q ORDER BY t1."C 1" OFFSET 10 LIMIT 10; --- non-Var items in targelist of the nullable rel of a join preventing +-- non-Var items in targetlist of the nullable rel of a join preventing -- push-down in some cases -- unable to push {ft1, ft2} EXPLAIN (VERBOSE, COSTS OFF) @@ -570,12 +601,35 @@ EXPLAIN (VERBOSE, COSTS OFF) EXECUTE st5('foo', 1); EXPLAIN (VERBOSE, COSTS OFF) EXECUTE st5('foo', 1); EXECUTE st5('foo', 1); +-- altering FDW options requires replanning +PREPARE st6 AS SELECT * FROM ft1 t1 WHERE t1.c1 = t1.c2; +EXPLAIN (VERBOSE, COSTS OFF) EXECUTE st6; +PREPARE st7 AS INSERT INTO ft1 (c1,c2,c3) VALUES (1001,101,'foo'); +EXPLAIN (VERBOSE, COSTS OFF) EXECUTE st7; +ALTER TABLE "S 1"."T 1" RENAME TO "T 0"; +ALTER FOREIGN TABLE ft1 OPTIONS (SET table_name 'T 0'); +EXPLAIN (VERBOSE, COSTS OFF) EXECUTE st6; +EXECUTE st6; +EXPLAIN (VERBOSE, COSTS OFF) EXECUTE st7; +ALTER TABLE "S 1"."T 0" RENAME TO "T 1"; +ALTER FOREIGN TABLE ft1 OPTIONS (SET table_name 'T 1'); + +PREPARE st8 AS SELECT count(c3) FROM ft1 t1 WHERE t1.c1 === t1.c2; +EXPLAIN (VERBOSE, COSTS OFF) EXECUTE st8; +ALTER SERVER loopback OPTIONS (DROP extensions); +EXPLAIN (VERBOSE, COSTS OFF) EXECUTE st8; +EXECUTE st8; +ALTER SERVER loopback OPTIONS (ADD extensions 'postgres_fdw'); + -- cleanup DEALLOCATE st1; DEALLOCATE st2; DEALLOCATE st3; DEALLOCATE st4; DEALLOCATE st5; +DEALLOCATE st6; +DEALLOCATE st7; +DEALLOCATE st8; -- System columns, except ctid, should not be sent to remote EXPLAIN (VERBOSE, COSTS OFF) @@ -788,6 +842,30 @@ INSERT INTO ft1(c1, c2) VALUES(1111, 2); UPDATE ft1 SET c2 = c2 + 1 WHERE c1 = 1; ALTER FOREIGN TABLE ft1 DROP CONSTRAINT ft1_c2negative; +-- =================================================================== +-- test WITH CHECK OPTION constraints +-- =================================================================== + +CREATE TABLE base_tbl (a int, b int); +CREATE FOREIGN TABLE foreign_tbl (a int, b int) + SERVER loopback OPTIONS(table_name 'base_tbl'); +CREATE VIEW rw_view AS SELECT * FROM foreign_tbl + WHERE a < b WITH CHECK OPTION; +\d+ rw_view + +INSERT INTO rw_view VALUES (0, 10); -- ok +INSERT INTO rw_view VALUES (10, 0); -- should fail +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE rw_view SET b = 20 WHERE a = 0; -- not pushed down +UPDATE rw_view SET b = 20 WHERE a = 0; -- ok +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE rw_view SET b = -20 WHERE a = 0; -- not pushed down +UPDATE rw_view SET b = -20 WHERE a = 0; -- should fail +SELECT * FROM foreign_tbl; + +DROP FOREIGN TABLE foreign_tbl CASCADE; +DROP TABLE base_tbl; + -- =================================================================== -- test serial columns (ie, sequence-based defaults) -- =================================================================== diff --git a/contrib/postgres_fdw/tests/dtmbench.cpp b/contrib/postgres_fdw/tests/dtmbench.cpp index c8e7d72107..1919e9a307 100644 --- a/contrib/postgres_fdw/tests/dtmbench.cpp +++ b/contrib/postgres_fdw/tests/dtmbench.cpp @@ -52,6 +52,9 @@ struct config int updatePercent; int nShards; string connection; + bool prepared; + bool local; + bool pathman_sharding; config() { nShards = 1; @@ -60,6 +63,9 @@ struct config nIterations = 1000; nAccounts = 10000; updatePercent = 100; + prepared = false; + local = false; + pathman_sharding = false; } }; @@ -76,14 +82,14 @@ static time_t getCurrentTime() } -void exec(transaction_base& txn, char const* sql, ...) +int exec(transaction_base& txn, char const* sql, ...) { va_list args; va_start(args, sql); char buf[1024]; vsprintf(buf, sql, args); va_end(args); - txn.exec(buf); + return txn.exec(buf).affected_rows(); } template @@ -123,15 +129,31 @@ void* writer(void* arg) { thread& t = *(thread*)arg; connection conn(cfg.connection); + + if (cfg.prepared) { + conn.prepare("transfer", "update t set v = v + $1 where u=$2"); + } + for (int i = 0; i < cfg.nIterations; i++) { work txn(conn); int srcAcc = random() % cfg.nAccounts; - int dstAcc = random() % cfg.nAccounts; + int dstAcc = (cfg.local ? srcAcc /*+ 1*/ : random()) % cfg.nAccounts; + try { - if (random() % 100 < cfg.updatePercent) { - exec(txn, "update t set v = v - 1 where u=%d", srcAcc); - exec(txn, "update t set v = v + 1 where u=%d", dstAcc); + if (random() % 100 < cfg.updatePercent) { + int rc = cfg.prepared + ? txn.prepared("transfer")(-1)(srcAcc).exec().affected_rows() + : exec(txn, "update t set v = v - 1 where u=%d", srcAcc); + if (rc != 1) { + printf("Failed to withdraw from account %d\n", srcAcc); + } + rc = cfg.prepared + ? txn.prepared("transfer")(1)(dstAcc).exec().affected_rows() + : exec(txn, "update t set v = v + 1 where u=%d", dstAcc); + if (rc != 1) { + printf("Failed to deposit to account %d\n", dstAcc); + } t.updates += 2; } else { int64_t sum = execQuery(txn, "select v from t where u=%d", srcAcc) @@ -156,13 +178,28 @@ void* writer(void* arg) void initializeDatabase() { connection conn(cfg.connection); - int accountsPerShard = (cfg.nAccounts + cfg.nShards - 1)/cfg.nShards; - for (int i = 0; i < cfg.nShards; i++) - { + if (cfg.nShards == 0) { work txn(conn); - exec(txn, "alter table t_fdw%i add check (u between %d and %d)", i+1, accountsPerShard*i, accountsPerShard*(i+1)-1); - exec(txn, "insert into t_fdw%i (select generate_series(%d,%d), %d)", i+1, accountsPerShard*i, accountsPerShard*(i+1)-1, 0); + exec(txn, "insert into t (select generate_series(0,%d), 0)", cfg.nAccounts-1); txn.commit(); + } else { + int accountsPerShard = (cfg.nAccounts + cfg.nShards - 1)/cfg.nShards; + for (int i = 0; i < cfg.nShards; i++) + { + work txn(conn); + + if (!cfg.pathman_sharding) { + exec(txn, "alter table t_fdw%i add check (u between %d and %d)", i+1, accountsPerShard*i, accountsPerShard*(i+1)-1); + } else { + //exec(txn, "SELECT add_range_partition('t', %d::int, %d, 't_fdw%i')", + exec(txn, "SELECT add_foreign_range_partition('t', %d::int, %d, 't_fdw%i', 'shard%i')", + accountsPerShard*i, accountsPerShard*(i+1), i+1, i % 3 + 1); + } + + exec(txn, "insert into t_fdw%i (select generate_series(%d,%d), %d)", i+1, accountsPerShard*i, accountsPerShard*(i+1)-1, 0); + + txn.commit(); + } } } @@ -200,6 +237,15 @@ int main (int argc, char* argv[]) initialize = true; cfg.nShards = atoi(argv[++i]); continue; + case 'l': + cfg.local = true; + continue; + case 'P': + cfg.prepared = true; + continue; + case 'S': + cfg.pathman_sharding = true; + continue; } } printf("Options:\n" @@ -209,7 +255,10 @@ int main (int argc, char* argv[]) "\t-n N\tnumber of iterations (1000)\n" "\t-p N\tupdate percent (100)\n" "\t-c STR\tdatabase connection string\n" - "\t-i N\tinitialize N shards\n"); + "\t-i N\tinitialize N shards\n" + "\t-l\ttlocal tranfers\n" + "\t-P\tuse prepared statements\n" + "\t-S\tuse pathman_sharding\n"); return 1; } @@ -257,7 +306,8 @@ int main (int argc, char* argv[]) printf( "{\"tps\":%f, \"transactions\":%ld," " \"selects\":%ld, \"updates\":%ld, \"aborts\":%ld, \"abort_percent\": %d," - " \"readers\":%d, \"writers\":%d, \"update_percent\":%d, \"accounts\":%d, \"iterations\":%d ,\"shards\":%d}\n", + " \"readers\":%d, \"writers\":%d, \"update_percent\":%d, \"accounts\":%d," + " \"iterations\":%d ,\"shards\":%d, \"prepared\":%d, \"pathman_sharding\":%d, \"local\":%d}\n", (double)(nTransactions*USEC)/elapsed, nTransactions, nSelects, @@ -269,7 +319,10 @@ int main (int argc, char* argv[]) cfg.updatePercent, cfg.nAccounts, cfg.nIterations, - cfg.nShards); + cfg.nShards, + cfg.prepared, + cfg.pathman_sharding, + cfg.local); return 0; } diff --git a/contrib/postgres_fdw/tests/init.sh b/contrib/postgres_fdw/tests/init.sh new file mode 100755 index 0000000000..113e33bb48 --- /dev/null +++ b/contrib/postgres_fdw/tests/init.sh @@ -0,0 +1 @@ +./dtmbench -c "dbname=postgres host=localhost port=5432 sslmode=disable" $* -i 3 diff --git a/contrib/postgres_fdw/tests/postgresql.conf.fdw b/contrib/postgres_fdw/tests/postgresql.conf.fdw new file mode 100644 index 0000000000..18ce7046ff --- /dev/null +++ b/contrib/postgres_fdw/tests/postgresql.conf.fdw @@ -0,0 +1,629 @@ +# ----------------------------- +# PostgreSQL configuration file +# ----------------------------- +# +# This file consists of lines of the form: +# +# name = value +# +# (The "=" is optional.) Whitespace may be used. Comments are introduced with +# "#" anywhere on a line. The complete list of parameter names and allowed +# values can be found in the PostgreSQL documentation. +# +# The commented-out settings shown in this file represent the default values. +# Re-commenting a setting is NOT sufficient to revert it to the default value; +# you need to reload the server. +# +# This file is read on server startup and when the server receives a SIGHUP +# signal. If you edit the file on a running system, you have to SIGHUP the +# server for the changes to take effect, or use "pg_ctl reload". Some +# parameters, which are marked below, require a server shutdown and restart to +# take effect. +# +# Any parameter can also be given as a command-line option to the server, e.g., +# "postgres -c log_connections=on". Some parameters can be changed at run time +# with the "SET" SQL command. +# +# Memory units: kB = kilobytes Time units: ms = milliseconds +# MB = megabytes s = seconds +# GB = gigabytes min = minutes +# TB = terabytes h = hours +# d = days + + +#------------------------------------------------------------------------------ +# FILE LOCATIONS +#------------------------------------------------------------------------------ + +# The default values of these variables are driven from the -D command-line +# option or PGDATA environment variable, represented here as ConfigDir. + +#data_directory = 'ConfigDir' # use data in another directory + # (change requires restart) +#hba_file = 'ConfigDir/pg_hba.conf' # host-based authentication file + # (change requires restart) +#ident_file = 'ConfigDir/pg_ident.conf' # ident configuration file + # (change requires restart) + +# If external_pid_file is not explicitly set, no extra PID file is written. +#external_pid_file = '' # write an extra PID file + # (change requires restart) + + +#------------------------------------------------------------------------------ +# CONNECTIONS AND AUTHENTICATION +#------------------------------------------------------------------------------ + +# - Connection Settings - + +#listen_addresses = 'localhost' # what IP address(es) to listen on; + # comma-separated list of addresses; + # defaults to 'localhost'; use '*' for all + # (change requires restart) +port = 5432 # (change requires restart) +max_connections = 200 # (change requires restart) +# Note: Increasing max_connections costs ~400 bytes of shared memory per +# connection slot, plus lock space (see max_locks_per_transaction). +#superuser_reserved_connections = 3 # (change requires restart) +#unix_socket_directories = '/tmp' # comma-separated list of directories + # (change requires restart) +#unix_socket_group = '' # (change requires restart) +#unix_socket_permissions = 0777 # begin with 0 to use octal notation + # (change requires restart) +#bonjour = off # advertise server via Bonjour + # (change requires restart) +#bonjour_name = '' # defaults to the computer name + # (change requires restart) + +# - Security and Authentication - + +#authentication_timeout = 1min # 1s-600s +#ssl = off # (change requires restart) +#ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers + # (change requires restart) +#ssl_prefer_server_ciphers = on # (change requires restart) +#ssl_ecdh_curve = 'prime256v1' # (change requires restart) +#ssl_cert_file = 'server.crt' # (change requires restart) +#ssl_key_file = 'server.key' # (change requires restart) +#ssl_ca_file = '' # (change requires restart) +#ssl_crl_file = '' # (change requires restart) +#password_encryption = on +#db_user_namespace = off +#row_security = on + +# GSSAPI using Kerberos +#krb_server_keyfile = '' +#krb_caseins_users = off + +# - TCP Keepalives - +# see "man 7 tcp" for details + +#tcp_keepalives_idle = 0 # TCP_KEEPIDLE, in seconds; + # 0 selects the system default +#tcp_keepalives_interval = 0 # TCP_KEEPINTVL, in seconds; + # 0 selects the system default +#tcp_keepalives_count = 0 # TCP_KEEPCNT; + # 0 selects the system default + + +#------------------------------------------------------------------------------ +# RESOURCE USAGE (except WAL) +#------------------------------------------------------------------------------ + +# - Memory - + +shared_buffers = 1GB # min 128kB + # (change requires restart) +#huge_pages = try # on, off, or try + # (change requires restart) +#temp_buffers = 8MB # min 800kB +max_prepared_transactions = 200 # zero disables the feature + # (change requires restart) +# Note: Increasing max_prepared_transactions costs ~600 bytes of shared memory +# per transaction slot, plus lock space (see max_locks_per_transaction). +# It is not advisable to set max_prepared_transactions nonzero unless you +# actively intend to use prepared transactions. +#work_mem = 4MB # min 64kB +#maintenance_work_mem = 64MB # min 1MB +#autovacuum_work_mem = -1 # min 1MB, or -1 to use maintenance_work_mem +#max_stack_depth = 2MB # min 100kB +dynamic_shared_memory_type = posix # the default is the first option + # supported by the operating system: + # posix + # sysv + # windows + # mmap + # use none to disable dynamic shared memory + +# - Disk - + +#temp_file_limit = -1 # limits per-session temp file space + # in kB, or -1 for no limit + +# - Kernel Resource Usage - + +#max_files_per_process = 1000 # min 25 + # (change requires restart) +#shared_preload_libraries = '' # (change requires restart) + +# - Cost-Based Vacuum Delay - + +#vacuum_cost_delay = 0 # 0-100 milliseconds +#vacuum_cost_page_hit = 1 # 0-10000 credits +#vacuum_cost_page_miss = 10 # 0-10000 credits +#vacuum_cost_page_dirty = 20 # 0-10000 credits +#vacuum_cost_limit = 200 # 1-10000 credits + +# - Background Writer - + +#bgwriter_delay = 200ms # 10-10000ms between rounds +#bgwriter_lru_maxpages = 100 # 0-1000 max buffers written/round +#bgwriter_lru_multiplier = 2.0 # 0-10.0 multipler on buffers scanned/round + +# - Asynchronous Behavior - + +#effective_io_concurrency = 1 # 1-1000; 0 disables prefetching +max_worker_processes = 100 + + +#------------------------------------------------------------------------------ +# WRITE AHEAD LOG +#------------------------------------------------------------------------------ + +# - Settings - + +wal_level = minimal # minimal, archive, hot_standby, or logical + # (change requires restart) +fsync = off # turns forced synchronization on or off +#synchronous_commit = on # synchronization level; + # off, local, remote_write, or on +#wal_sync_method = fsync # the default is the first option + # supported by the operating system: + # open_datasync + # fdatasync (default on Linux) + # fsync + # fsync_writethrough + # open_sync +#full_page_writes = on # recover from partial page writes +#wal_compression = off # enable compression of full-page writes +#wal_log_hints = off # also do full page writes of non-critical updates + # (change requires restart) +#wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers + # (change requires restart) +#wal_writer_delay = 200ms # 1-10000 milliseconds + +#commit_delay = 0 # range 0-100000, in microseconds +#commit_siblings = 5 # range 1-1000 + +# - Checkpoints - + +checkpoint_timeout = 50min # range 30s-1h +#max_wal_size = 100GB +#min_wal_size = 1GB +#checkpoint_completion_target = 0.5 # checkpoint target duration, 0.0 - 1.0 +#checkpoint_warning = 30s # 0 disables + +# - Archiving - + +#archive_mode = off # enables archiving; off, on, or always + # (change requires restart) +#archive_command = '' # command to use to archive a logfile segment + # placeholders: %p = path of file to archive + # %f = file name only + # e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f' +#archive_timeout = 0 # force a logfile segment switch after this + # number of seconds; 0 disables + + +#------------------------------------------------------------------------------ +# REPLICATION +#------------------------------------------------------------------------------ + +# - Sending Server(s) - + +# Set these on the master and on any standby that will send replication data. + +#max_wal_senders = 10 # max number of walsender processes + # (change requires restart) +#wal_keep_segments = 0 # in logfile segments, 16MB each; 0 disables +#wal_sender_timeout = 0 # in milliseconds; 0 disables + +#max_replication_slots = 10 # max number of replication slots + # (change requires restart) +#track_commit_timestamp = off # collect timestamp of transaction commit + # (change requires restart) + +# - Master Server - + +# These settings are ignored on a standby server. + +#synchronous_standby_names = '' # standby servers that provide sync rep + # comma-separated list of application_name + # from standby(s); '*' = all +#vacuum_defer_cleanup_age = 0 # number of xacts by which cleanup is delayed + +# - Standby Servers - + +# These settings are ignored on a master server. + +#hot_standby = off # "on" allows queries during recovery + # (change requires restart) +#max_standby_archive_delay = 30s # max delay before canceling queries + # when reading WAL from archive; + # -1 allows indefinite delay +#max_standby_streaming_delay = 30s # max delay before canceling queries + # when reading streaming WAL; + # -1 allows indefinite delay +#wal_receiver_status_interval = 10s # send replies at least this often + # 0 disables +#hot_standby_feedback = off # send info from standby to prevent + # query conflicts +#wal_receiver_timeout = 60s # time that receiver waits for + # communication from master + # in milliseconds; 0 disables +#wal_retrieve_retry_interval = 5s # time to wait before retrying to + # retrieve WAL after a failed attempt + + +#------------------------------------------------------------------------------ +# QUERY TUNING +#------------------------------------------------------------------------------ + +# - Planner Method Configuration - + +#enable_bitmapscan = on +#enable_hashagg = on +#enable_hashjoin = on +#enable_indexscan = on +#enable_indexonlyscan = on +#enable_material = on +#enable_mergejoin = on +#enable_nestloop = on +#enable_seqscan = on +#enable_sort = on +#enable_tidscan = on + +# - Planner Cost Constants - + +#seq_page_cost = 1.0 # measured on an arbitrary scale +#random_page_cost = 4.0 # same scale as above +#cpu_tuple_cost = 0.01 # same scale as above +#cpu_index_tuple_cost = 0.005 # same scale as above +#cpu_operator_cost = 0.0025 # same scale as above +#effective_cache_size = 4GB + +# - Genetic Query Optimizer - + +#geqo = on +#geqo_threshold = 12 +#geqo_effort = 5 # range 1-10 +#geqo_pool_size = 0 # selects default based on effort +#geqo_generations = 0 # selects default based on effort +#geqo_selection_bias = 2.0 # range 1.5-2.0 +#geqo_seed = 0.0 # range 0.0-1.0 + +# - Other Planner Options - + +#default_statistics_target = 100 # range 1-10000 +#constraint_exclusion = partition # on, off, or partition +#cursor_tuple_fraction = 0.1 # range 0.0-1.0 +#from_collapse_limit = 8 +#join_collapse_limit = 8 # 1 disables collapsing of explicit + # JOIN clauses + + +#------------------------------------------------------------------------------ +# ERROR REPORTING AND LOGGING +#------------------------------------------------------------------------------ + +# - Where to Log - + +#log_destination = 'stderr' # Valid values are combinations of + # stderr, csvlog, syslog, and eventlog, + # depending on platform. csvlog + # requires logging_collector to be on. + +# This is used when logging to stderr: +#logging_collector = off # Enable capturing of stderr and csvlog + # into log files. Required to be on for + # csvlogs. + # (change requires restart) + +# These are only used if logging_collector is on: +#log_directory = 'pg_log' # directory where log files are written, + # can be absolute or relative to PGDATA +#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern, + # can include strftime() escapes +#log_file_mode = 0600 # creation mode for log files, + # begin with 0 to use octal notation +#log_truncate_on_rotation = off # If on, an existing log file with the + # same name as the new log file will be + # truncated rather than appended to. + # But such truncation only occurs on + # time-driven rotation, not on restarts + # or size-driven rotation. Default is + # off, meaning append to existing files + # in all cases. +#log_rotation_age = 1d # Automatic rotation of logfiles will + # happen after that time. 0 disables. +#log_rotation_size = 10MB # Automatic rotation of logfiles will + # happen after that much log output. + # 0 disables. + +# These are relevant when logging to syslog: +#syslog_facility = 'LOCAL0' +#syslog_ident = 'postgres' + +# This is only relevant when logging to eventlog (win32): +#event_source = 'PostgreSQL' + +# - When to Log - + +#client_min_messages = notice # values in order of decreasing detail: + # debug5 + # debug4 + # debug3 + # debug2 + # debug1 + # log + # notice + # warning + # error + +#log_min_messages = warning # values in order of decreasing detail: + # debug5 + # debug4 + # debug3 + # debug2 + # debug1 + # info + # notice + # warning + # error + # log + # fatal + # panic + +#log_min_error_statement = error # values in order of decreasing detail: + # debug5 + # debug4 + # debug3 + # debug2 + # debug1 + # info + # notice + # warning + # error + # log + # fatal + # panic (effectively off) + +#log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements + # and their durations, > 0 logs only + # statements running at least this number + # of milliseconds + + +# - What to Log - + +#debug_print_parse = off +#debug_print_rewritten = off +#debug_print_plan = off +#debug_pretty_print = on +#log_checkpoints = off +#log_connections = off +#log_disconnections = off +#log_duration = off +#log_error_verbosity = default # terse, default, or verbose messages +#log_hostname = off +#log_line_prefix = '' # special values: + # %a = application name + # %u = user name + # %d = database name + # %r = remote host and port + # %h = remote host + # %p = process ID + # %t = timestamp without milliseconds + # %m = timestamp with milliseconds + # %i = command tag + # %e = SQL state + # %c = session ID + # %l = session line number + # %s = session start timestamp + # %v = virtual transaction ID + # %x = transaction ID (0 if none) + # %q = stop here in non-session + # processes + # %% = '%' + # e.g. '<%u%%%d> ' +#log_lock_waits = off # log lock waits >= deadlock_timeout +#log_statement = 'none' # none, ddl, mod, all +#log_replication_commands = off +#log_temp_files = -1 # log temporary files equal or larger + # than the specified size in kilobytes; + # -1 disables, 0 logs all temp files +log_timezone = 'W-SU' +#cluster_name = '' # added to process titles if nonempty + # (change requires restart) + + +#------------------------------------------------------------------------------ +# RUNTIME STATISTICS +#------------------------------------------------------------------------------ + +# - Query/Index Statistics Collector - + +#track_activities = on +#track_counts = on +#track_io_timing = off +#track_functions = none # none, pl, all +#track_activity_query_size = 1024 # (change requires restart) +#update_process_title = on +#stats_temp_directory = 'pg_stat_tmp' + + +# - Statistics Monitoring - + +#log_parser_stats = off +#log_planner_stats = off +#log_executor_stats = off +#log_statement_stats = off + + +#------------------------------------------------------------------------------ +# AUTOVACUUM PARAMETERS +#------------------------------------------------------------------------------ + +autovacuum = on # Enable autovacuum subprocess? 'on' + # requires track_counts to also be on. +#log_autovacuum_min_duration = -1 # -1 disables, 0 logs all actions and + # their durations, > 0 logs only + # actions running at least this number + # of milliseconds. +#autovacuum_max_workers = 3 # max number of autovacuum subprocesses + # (change requires restart) +#autovacuum_naptime = 1min # time between autovacuum runs +#autovacuum_vacuum_threshold = 50 # min number of row updates before + # vacuum +#autovacuum_analyze_threshold = 50 # min number of row updates before + # analyze +#autovacuum_vacuum_scale_factor = 0.2 # fraction of table size before vacuum +#autovacuum_analyze_scale_factor = 0.1 # fraction of table size before analyze +#autovacuum_freeze_max_age = 200000000 # maximum XID age before forced vacuum + # (change requires restart) +#autovacuum_multixact_freeze_max_age = 400000000 # maximum multixact age + # before forced vacuum + # (change requires restart) +#autovacuum_vacuum_cost_delay = 20ms # default vacuum cost delay for + # autovacuum, in milliseconds; + # -1 means use vacuum_cost_delay +#autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for + # autovacuum, -1 means use + # vacuum_cost_limit + + +#------------------------------------------------------------------------------ +# CLIENT CONNECTION DEFAULTS +#------------------------------------------------------------------------------ + +# - Statement Behavior - + +#search_path = '"$user", public' # schema names +#default_tablespace = '' # a tablespace name, '' uses the default +#temp_tablespaces = '' # a list of tablespace names, '' uses + # only default tablespace +#check_function_bodies = on +#default_transaction_isolation = 'read committed' +#default_transaction_read_only = off +#default_transaction_deferrable = off +#session_replication_role = 'origin' +#statement_timeout = 0 # in milliseconds, 0 is disabled +#lock_timeout = 0 # in milliseconds, 0 is disabled +#vacuum_freeze_min_age = 50000000 +#vacuum_freeze_table_age = 150000000 +#vacuum_multixact_freeze_min_age = 5000000 +#vacuum_multixact_freeze_table_age = 150000000 +#bytea_output = 'hex' # hex, escape +#xmlbinary = 'base64' +#xmloption = 'content' +#gin_pending_list_limit = 4MB + +# - Locale and Formatting - + +datestyle = 'iso, dmy' +#intervalstyle = 'postgres' +timezone = 'W-SU' +#timezone_abbreviations = 'Default' # Select the set of available time zone + # abbreviations. Currently, there are + # Default + # Australia (historical usage) + # India + # You can create your own file in + # share/timezonesets/. +#extra_float_digits = 0 # min -15, max 3 +#client_encoding = sql_ascii # actually, defaults to database + # encoding + +# These settings are initialized by initdb, but they can be changed. +lc_messages = 'en_US.UTF-8' # locale for system error message + # strings +lc_monetary = 'en_US.UTF-8' # locale for monetary formatting +lc_numeric = 'en_US.UTF-8' # locale for number formatting +lc_time = 'en_US.UTF-8' # locale for time formatting + +# default configuration for text search +default_text_search_config = 'pg_catalog.english' + +# - Other Defaults - + +#dynamic_library_path = '$libdir' +#local_preload_libraries = '' +#session_preload_libraries = '' + + +#------------------------------------------------------------------------------ +# LOCK MANAGEMENT +#------------------------------------------------------------------------------ + +#deadlock_timeout = 1s +#max_locks_per_transaction = 64 # min 10 + # (change requires restart) +# Note: Each lock table slot uses ~270 bytes of shared memory, and there are +# max_locks_per_transaction * (max_connections + max_prepared_transactions) +# lock table slots. +#max_pred_locks_per_transaction = 64 # min 10 + # (change requires restart) + + +#------------------------------------------------------------------------------ +# VERSION/PLATFORM COMPATIBILITY +#------------------------------------------------------------------------------ + +# - Previous PostgreSQL Versions - + +#array_nulls = on +#backslash_quote = safe_encoding # on, off, or safe_encoding +#default_with_oids = off +#escape_string_warning = on +#lo_compat_privileges = off +#operator_precedence_warning = off +#quote_all_identifiers = off +#sql_inheritance = on +#standard_conforming_strings = on +#synchronize_seqscans = on + +# - Other Platforms and Clients - + +#transform_null_equals = off + + +#------------------------------------------------------------------------------ +# ERROR HANDLING +#------------------------------------------------------------------------------ + +#exit_on_error = off # terminate session on any error? +#restart_after_crash = on # reinitialize after backend crash? + + +#------------------------------------------------------------------------------ +# CONFIG FILE INCLUDES +#------------------------------------------------------------------------------ + +# These options allow settings to be loaded from files other than the +# default postgresql.conf. + +#include_dir = 'conf.d' # include files ending in '.conf' from + # directory 'conf.d' +#include_if_exists = 'exists.conf' # include file only if it exists +#include = 'special.conf' # include file + + +#------------------------------------------------------------------------------ +# CUSTOMIZED OPTIONS +#------------------------------------------------------------------------------ + +# Add settings for extensions here +postgres_fdw.use_tsdtm = 1 + + + diff --git a/contrib/postgres_fdw/tests/reinit-fdw.sh b/contrib/postgres_fdw/tests/reinit-fdw.sh new file mode 100755 index 0000000000..ef2227e753 --- /dev/null +++ b/contrib/postgres_fdw/tests/reinit-fdw.sh @@ -0,0 +1,45 @@ +n_shards=3 +export PATH=~/postgres_cluster/dist/bin/:$PATH +ulimit -c unlimited +pkill -9 postgres +sleep 2 +rm -fr master shard? *.log pg_worker_list.conf +for ((i=1;i<=n_shards;i++)) +do + port=$((5432+i)) + echo "localhost $port" >> pg_worker_list.conf + initdb shard$i +done +initdb master +cp pg_worker_list.conf master + +echo Start shards + +for ((i=1;i<=n_shards;i++)) +do + port=$((5432+i)) + sed "s/5432/$port/g" < postgresql.conf.fdw > shard$i/postgresql.conf + echo "shared_preload_libraries = 'pg_tsdtm'" >> shard$i/postgresql.conf + pg_ctl -D shard$i -l shard$i.log start +done + +echo Start master +cp postgresql.conf.fdw master/postgresql.conf +pg_ctl -D master -l master.log start + +sleep 5 + +user=`whoami` +psql postgres -c "CREATE EXTENSION postgres_fdw" +psql postgres -c "CREATE TABLE t(u integer primary key, v integer)" + +for ((i=1;i<=n_shards;i++)) +do + port=$((5432+i)) + psql -p $port postgres -c "CREATE EXTENSION pg_tsdtm" + psql -p $port postgres -c "CREATE TABLE t(u integer primary key, v integer)" + + psql postgres -c "CREATE SERVER shard$i FOREIGN DATA WRAPPER postgres_fdw options(dbname 'postgres', host 'localhost', port '$port')" + psql postgres -c "CREATE FOREIGN TABLE t_fdw$i() inherits (t) server shard$i options(table_name 't')" + psql postgres -c "CREATE USER MAPPING for $user SERVER shard$i options (user '$user')" +done diff --git a/contrib/postgres_fdw/tests/reinit-pathman.sh b/contrib/postgres_fdw/tests/reinit-pathman.sh new file mode 100755 index 0000000000..0efdd45a02 --- /dev/null +++ b/contrib/postgres_fdw/tests/reinit-pathman.sh @@ -0,0 +1,48 @@ +n_shards=3 +export PATH=~/postgres_cluster/dist/bin/:$PATH +ulimit -c unlimited +pkill -9 postgres +sleep 2 +rm -fr master shard? *.log pg_worker_list.conf +for ((i=1;i<=n_shards;i++)) +do + port=$((5432+i)) + echo "localhost $port" >> pg_worker_list.conf + initdb shard$i +done +initdb master +cp pg_worker_list.conf master + +echo Start shards + +for ((i=1;i<=n_shards;i++)) +do + port=$((5432+i)) + sed "s/5432/$port/g" < postgresql.conf.fdw > shard$i/postgresql.conf + echo "shared_preload_libraries = 'pg_tsdtm'" >> shard$i/postgresql.conf + pg_ctl -D shard$i -l shard$i.log start +done + +echo Start master +cp postgresql.conf.fdw master/postgresql.conf +echo "shared_preload_libraries = 'pg_pathman'" >> master/postgresql.conf +pg_ctl -D master -l master.log start + +sleep 5 + +user=`whoami` +psql postgres -c "CREATE EXTENSION postgres_fdw" +psql postgres -c "CREATE EXTENSION pg_pathman" +psql postgres -c "CREATE TABLE t(u integer primary key, v integer)" + +for ((i=1;i<=n_shards;i++)) +do + port=$((5432+i)) + psql -p $port postgres -c "CREATE EXTENSION pg_tsdtm" + psql -p $port postgres -c "CREATE TABLE t(u integer primary key, v integer)" + + psql postgres -c "CREATE SERVER shard$i TYPE 'shardman' FOREIGN DATA WRAPPER postgres_fdw options(dbname 'postgres', host 'localhost', port '$port')" + psql postgres -c "CREATE USER MAPPING for $user SERVER shard$i options (user '$user')" +done + +psql postgres -c "select create_shards('t', 'u', 10, 'shardman')" diff --git a/contrib/postgres_fdw/tests/run.sh b/contrib/postgres_fdw/tests/run.sh new file mode 100755 index 0000000000..a976735ef0 --- /dev/null +++ b/contrib/postgres_fdw/tests/run.sh @@ -0,0 +1 @@ +./dtmbench -c "dbname=postgres host=localhost port=5432 sslmode=disable" $* diff --git a/contrib/seg/seg.c b/contrib/seg/seg.c index c6c082b8ea..895d879498 100644 --- a/contrib/seg/seg.c +++ b/contrib/seg/seg.c @@ -888,7 +888,7 @@ restore(char *result, float val, int n) if (Abs(exp) <= 4) { /* - * remove the decimal point from the mantyssa and write the digits + * remove the decimal point from the mantissa and write the digits * to the buf array */ for (p = result + sign, i = 10, dp = 0; *p != 'e'; p++, i++) diff --git a/contrib/sepgsql/expected/label.out b/contrib/sepgsql/expected/label.out index 7af51897da..638e138f0b 100644 --- a/contrib/sepgsql/expected/label.out +++ b/contrib/sepgsql/expected/label.out @@ -438,7 +438,7 @@ SELECT sepgsql_getcon(); unconfined_u:unconfined_r:sepgsql_regtest_pool_t:s0 (1 row) --- the pooler cannot touch these tables directry +-- the pooler cannot touch these tables directly SELECT * FROM foo_tbl; -- failed ERROR: SELinux: security policy violation SELECT * FROM var_tbl; -- failed diff --git a/contrib/sepgsql/label.c b/contrib/sepgsql/label.c index e12a0e8cb6..ba6f5cdcef 100644 --- a/contrib/sepgsql/label.c +++ b/contrib/sepgsql/label.c @@ -10,6 +10,16 @@ */ #include "postgres.h" +#include + +/* + * includes , which creates an incompatible + * #define for bool. Get rid of that so we can use our own typedef. + * (We don't care if redefines "true"/"false"; those are close + * enough.) + */ +#undef bool + #include "access/heapam.h" #include "access/htup_details.h" #include "access/genam.h" @@ -37,8 +47,6 @@ #include "sepgsql.h" -#include - /* * Saved hook entries (if stacked) */ diff --git a/contrib/sepgsql/selinux.c b/contrib/sepgsql/selinux.c index b0b9fadede..4696318dd5 100644 --- a/contrib/sepgsql/selinux.c +++ b/contrib/sepgsql/selinux.c @@ -23,7 +23,7 @@ * When we ask SELinux whether the required privileges are allowed or not, * we use security_compute_av(3). It needs us to represent object classes * and access vectors using 'external' codes defined in the security policy. - * It is determinded in the runtime, not build time. So, it needs an internal + * It is determined in the runtime, not build time. So, it needs an internal * service to translate object class/access vectors which we want to check * into the code which kernel want to be given. */ diff --git a/contrib/sepgsql/sql/label.sql b/contrib/sepgsql/sql/label.sql index 04085e57a4..49780b2697 100644 --- a/contrib/sepgsql/sql/label.sql +++ b/contrib/sepgsql/sql/label.sql @@ -206,7 +206,7 @@ SELECT * FROM auth_tbl; -- failed SELECT sepgsql_setcon(NULL); -- end of session SELECT sepgsql_getcon(); --- the pooler cannot touch these tables directry +-- the pooler cannot touch these tables directly SELECT * FROM foo_tbl; -- failed SELECT * FROM var_tbl; -- failed diff --git a/contrib/spi/refint.c b/contrib/spi/refint.c index 01dd717522..646c5cf078 100644 --- a/contrib/spi/refint.c +++ b/contrib/spi/refint.c @@ -89,7 +89,7 @@ check_primary_key(PG_FUNCTION_ARGS) /* internal error */ elog(ERROR, "check_primary_key: cannot process DELETE events"); - /* If UPDATion the must check new Tuple, not old one */ + /* If UPDATE, then must check new Tuple, not old one */ else tuple = trigdata->tg_newtuple; diff --git a/contrib/start-scripts/osx/PostgreSQL b/contrib/start-scripts/osx/PostgreSQL index 24872b0944..c6a19d2e00 100755 --- a/contrib/start-scripts/osx/PostgreSQL +++ b/contrib/start-scripts/osx/PostgreSQL @@ -29,7 +29,7 @@ # modified by Ray Aspeitia 12-03-2003 : # added log rotation script to db startup # modified StartupParameters.plist "Provides" parameter to make it easier to -# start and stop with the SystemStarter utitlity +# start and stop with the SystemStarter utility # use the below command in order to correctly start/stop/restart PG with log rotation script: # SystemStarter [start|stop|restart] PostgreSQL diff --git a/contrib/test_decoding/expected/ondisk_startup.out b/contrib/test_decoding/expected/ondisk_startup.out index 65115c830a..c7b1f45b46 100644 --- a/contrib/test_decoding/expected/ondisk_startup.out +++ b/contrib/test_decoding/expected/ondisk_startup.out @@ -1,21 +1,30 @@ Parsed test spec with 3 sessions -starting permutation: s2txid s1init s3txid s2alter s2c s1insert s1checkpoint s1start s1insert s1alter s1insert s1start -step s2txid: BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT txid_current() IS NULL; +starting permutation: s2b s2txid s1init s3b s3txid s2alter s2c s2b s2txid s3c s2c s1insert s1checkpoint s1start s1insert s1alter s1insert s1start +step s2b: BEGIN; +step s2txid: SELECT txid_current() IS NULL; ?column? f step s1init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -step s3txid: BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT txid_current() IS NULL; +step s3b: BEGIN; +step s3txid: SELECT txid_current() IS NULL; ?column? f step s2alter: ALTER TABLE do_write ADD COLUMN addedbys2 int; step s2c: COMMIT; +step s2b: BEGIN; +step s2txid: SELECT txid_current() IS NULL; +?column? + +f +step s3c: COMMIT; step s1init: <... completed> ?column? init +step s2c: COMMIT; step s1insert: INSERT INTO do_write DEFAULT VALUES; step s1checkpoint: CHECKPOINT; step s1start: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', 'false'); diff --git a/contrib/test_decoding/expected/spill.out b/contrib/test_decoding/expected/spill.out index 363e9a3d17..10734bdb6a 100644 --- a/contrib/test_decoding/expected/spill.out +++ b/contrib/test_decoding/expected/spill.out @@ -164,7 +164,7 @@ SAVEPOINT s2; INSERT INTO spill_test SELECT 'serialize-subsmall-subbig--2:'||g.i FROM generate_series(2, 5001) g(i); RELEASE SAVEPOINT s2; COMMIT; -SELECT (regexp_split_to_array(data, ':'))[4], COUNT(*), (array_agg(data))[1], (array_agg(data))[count(*)] +SELECT (regexp_split_to_array(data, ':'))[4] COLLATE "C", COUNT(*), (array_agg(data))[1], (array_agg(data))[count(*)] FROM pg_logical_slot_get_changes('regression_slot', NULL,NULL) WHERE data ~ 'INSERT' GROUP BY 1 ORDER BY 1; regexp_split_to_array | count | array_agg | array_agg @@ -182,7 +182,7 @@ INSERT INTO spill_test SELECT 'serialize-nested-subbig-subbig--2:'||g.i FROM gen RELEASE SAVEPOINT s2; RELEASE SAVEPOINT s1; COMMIT; -SELECT (regexp_split_to_array(data, ':'))[4], COUNT(*), (array_agg(data))[1], (array_agg(data))[count(*)] +SELECT (regexp_split_to_array(data, ':'))[4] COLLATE "C", COUNT(*), (array_agg(data))[1], (array_agg(data))[count(*)] FROM pg_logical_slot_get_changes('regression_slot', NULL,NULL) WHERE data ~ 'INSERT' GROUP BY 1 ORDER BY 1; regexp_split_to_array | count | array_agg | array_agg @@ -200,7 +200,7 @@ INSERT INTO spill_test SELECT 'serialize-nested-subbig-subsmall--2:'||g.i FROM g RELEASE SAVEPOINT s2; RELEASE SAVEPOINT s1; COMMIT; -SELECT (regexp_split_to_array(data, ':'))[4], COUNT(*), (array_agg(data))[1], (array_agg(data))[count(*)] +SELECT (regexp_split_to_array(data, ':'))[4] COLLATE "C", COUNT(*), (array_agg(data))[1], (array_agg(data))[count(*)] FROM pg_logical_slot_get_changes('regression_slot', NULL,NULL) WHERE data ~ 'INSERT' GROUP BY 1 ORDER BY 1; regexp_split_to_array | count | array_agg | array_agg @@ -218,7 +218,7 @@ INSERT INTO spill_test SELECT 'serialize-nested-subsmall-subbig--2:'||g.i FROM g RELEASE SAVEPOINT s2; RELEASE SAVEPOINT s1; COMMIT; -SELECT (regexp_split_to_array(data, ':'))[4], COUNT(*), (array_agg(data))[1], (array_agg(data))[count(*)] +SELECT (regexp_split_to_array(data, ':'))[4] COLLATE "C", COUNT(*), (array_agg(data))[1], (array_agg(data))[count(*)] FROM pg_logical_slot_get_changes('regression_slot', NULL,NULL) WHERE data ~ 'INSERT' GROUP BY 1 ORDER BY 1; regexp_split_to_array | count | array_agg | array_agg @@ -238,7 +238,7 @@ SAVEPOINT s3; INSERT INTO spill_test SELECT 'serialize-nested-subbig-subbigabort-subbig-3:'||g.i FROM generate_series(5001, 10000) g(i); RELEASE SAVEPOINT s1; COMMIT; -SELECT (regexp_split_to_array(data, ':'))[4], COUNT(*), (array_agg(data))[1], (array_agg(data))[count(*)] +SELECT (regexp_split_to_array(data, ':'))[4] COLLATE "C", COUNT(*), (array_agg(data))[1], (array_agg(data))[count(*)] FROM pg_logical_slot_get_changes('regression_slot', NULL,NULL) WHERE data ~ 'INSERT' GROUP BY 1 ORDER BY 1; regexp_split_to_array | count | array_agg | array_agg diff --git a/contrib/test_decoding/expected/toast.out b/contrib/test_decoding/expected/toast.out index 389748ff8c..91a9a1e86d 100644 --- a/contrib/test_decoding/expected/toast.out +++ b/contrib/test_decoding/expected/toast.out @@ -305,7 +305,13 @@ ALTER TABLE toasted_several REPLICA IDENTITY FULL; ALTER TABLE toasted_several ALTER COLUMN toasted_key SET STORAGE EXTERNAL; ALTER TABLE toasted_several ALTER COLUMN toasted_col1 SET STORAGE EXTERNAL; ALTER TABLE toasted_several ALTER COLUMN toasted_col2 SET STORAGE EXTERNAL; -INSERT INTO toasted_several(toasted_key) VALUES(repeat('9876543210', 2000)); +INSERT INTO toasted_several(toasted_key) VALUES(repeat('9876543210', 10000)); +SELECT pg_column_size(toasted_key) > 2^16 FROM toasted_several; + ?column? +---------- + t +(1 row) + SELECT regexp_replace(data, '^(.{100}).*(.{100})$', '\1..\2') FROM pg_logical_slot_peek_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); regexp_replace ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ diff --git a/contrib/test_decoding/specs/ondisk_startup.spec b/contrib/test_decoding/specs/ondisk_startup.spec index 8223705639..12c57a813d 100644 --- a/contrib/test_decoding/specs/ondisk_startup.spec +++ b/contrib/test_decoding/specs/ondisk_startup.spec @@ -24,7 +24,8 @@ step "s1alter" { ALTER TABLE do_write ADD COLUMN addedbys1 int; } session "s2" setup { SET synchronous_commit=on; } -step "s2txid" { BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT txid_current() IS NULL; } +step "s2b" { BEGIN; } +step "s2txid" { SELECT txid_current() IS NULL; } step "s2alter" { ALTER TABLE do_write ADD COLUMN addedbys2 int; } step "s2c" { COMMIT; } @@ -32,7 +33,8 @@ step "s2c" { COMMIT; } session "s3" setup { SET synchronous_commit=on; } -step "s3txid" { BEGIN ISOLATION LEVEL REPEATABLE READ; SELECT txid_current() IS NULL; } +step "s3b" { BEGIN; } +step "s3txid" { SELECT txid_current() IS NULL; } step "s3c" { COMMIT; } # Force usage of ondisk snapshot by starting and not finishing a @@ -40,4 +42,4 @@ step "s3c" { COMMIT; } # reached. In combination with a checkpoint forcing a snapshot to be # written and a new restart point computed that'll lead to the usage # of the snapshot. -permutation "s2txid" "s1init" "s3txid" "s2alter" "s2c" "s1insert" "s1checkpoint" "s1start" "s1insert" "s1alter" "s1insert" "s1start" +permutation "s2b" "s2txid" "s1init" "s3b" "s3txid" "s2alter" "s2c" "s2b" "s2txid" "s3c" "s2c" "s1insert" "s1checkpoint" "s1start" "s1insert" "s1alter" "s1insert" "s1start" diff --git a/contrib/test_decoding/sql/spill.sql b/contrib/test_decoding/sql/spill.sql index 358af0bfcd..e638cacd3f 100644 --- a/contrib/test_decoding/sql/spill.sql +++ b/contrib/test_decoding/sql/spill.sql @@ -116,7 +116,7 @@ SAVEPOINT s2; INSERT INTO spill_test SELECT 'serialize-subsmall-subbig--2:'||g.i FROM generate_series(2, 5001) g(i); RELEASE SAVEPOINT s2; COMMIT; -SELECT (regexp_split_to_array(data, ':'))[4], COUNT(*), (array_agg(data))[1], (array_agg(data))[count(*)] +SELECT (regexp_split_to_array(data, ':'))[4] COLLATE "C", COUNT(*), (array_agg(data))[1], (array_agg(data))[count(*)] FROM pg_logical_slot_get_changes('regression_slot', NULL,NULL) WHERE data ~ 'INSERT' GROUP BY 1 ORDER BY 1; @@ -129,7 +129,7 @@ INSERT INTO spill_test SELECT 'serialize-nested-subbig-subbig--2:'||g.i FROM gen RELEASE SAVEPOINT s2; RELEASE SAVEPOINT s1; COMMIT; -SELECT (regexp_split_to_array(data, ':'))[4], COUNT(*), (array_agg(data))[1], (array_agg(data))[count(*)] +SELECT (regexp_split_to_array(data, ':'))[4] COLLATE "C", COUNT(*), (array_agg(data))[1], (array_agg(data))[count(*)] FROM pg_logical_slot_get_changes('regression_slot', NULL,NULL) WHERE data ~ 'INSERT' GROUP BY 1 ORDER BY 1; @@ -142,7 +142,7 @@ INSERT INTO spill_test SELECT 'serialize-nested-subbig-subsmall--2:'||g.i FROM g RELEASE SAVEPOINT s2; RELEASE SAVEPOINT s1; COMMIT; -SELECT (regexp_split_to_array(data, ':'))[4], COUNT(*), (array_agg(data))[1], (array_agg(data))[count(*)] +SELECT (regexp_split_to_array(data, ':'))[4] COLLATE "C", COUNT(*), (array_agg(data))[1], (array_agg(data))[count(*)] FROM pg_logical_slot_get_changes('regression_slot', NULL,NULL) WHERE data ~ 'INSERT' GROUP BY 1 ORDER BY 1; @@ -155,7 +155,7 @@ INSERT INTO spill_test SELECT 'serialize-nested-subsmall-subbig--2:'||g.i FROM g RELEASE SAVEPOINT s2; RELEASE SAVEPOINT s1; COMMIT; -SELECT (regexp_split_to_array(data, ':'))[4], COUNT(*), (array_agg(data))[1], (array_agg(data))[count(*)] +SELECT (regexp_split_to_array(data, ':'))[4] COLLATE "C", COUNT(*), (array_agg(data))[1], (array_agg(data))[count(*)] FROM pg_logical_slot_get_changes('regression_slot', NULL,NULL) WHERE data ~ 'INSERT' GROUP BY 1 ORDER BY 1; @@ -170,7 +170,7 @@ SAVEPOINT s3; INSERT INTO spill_test SELECT 'serialize-nested-subbig-subbigabort-subbig-3:'||g.i FROM generate_series(5001, 10000) g(i); RELEASE SAVEPOINT s1; COMMIT; -SELECT (regexp_split_to_array(data, ':'))[4], COUNT(*), (array_agg(data))[1], (array_agg(data))[count(*)] +SELECT (regexp_split_to_array(data, ':'))[4] COLLATE "C", COUNT(*), (array_agg(data))[1], (array_agg(data))[count(*)] FROM pg_logical_slot_get_changes('regression_slot', NULL,NULL) WHERE data ~ 'INSERT' GROUP BY 1 ORDER BY 1; diff --git a/contrib/test_decoding/sql/toast.sql b/contrib/test_decoding/sql/toast.sql index dcb74e38c7..ef11d2bfff 100644 --- a/contrib/test_decoding/sql/toast.sql +++ b/contrib/test_decoding/sql/toast.sql @@ -279,7 +279,8 @@ ALTER TABLE toasted_several ALTER COLUMN toasted_key SET STORAGE EXTERNAL; ALTER TABLE toasted_several ALTER COLUMN toasted_col1 SET STORAGE EXTERNAL; ALTER TABLE toasted_several ALTER COLUMN toasted_col2 SET STORAGE EXTERNAL; -INSERT INTO toasted_several(toasted_key) VALUES(repeat('9876543210', 2000)); +INSERT INTO toasted_several(toasted_key) VALUES(repeat('9876543210', 10000)); +SELECT pg_column_size(toasted_key) > 2^16 FROM toasted_several; SELECT regexp_replace(data, '^(.{100}).*(.{100})$', '\1..\2') FROM pg_logical_slot_peek_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); diff --git a/contrib/tsearch2/tsearch2--1.0.sql b/contrib/tsearch2/tsearch2--1.0.sql index a32c5fe85b..68bb43fd7c 100644 --- a/contrib/tsearch2/tsearch2--1.0.sql +++ b/contrib/tsearch2/tsearch2--1.0.sql @@ -414,7 +414,7 @@ CREATE FUNCTION stat(text,text) LANGUAGE INTERNAL RETURNS NULL ON NULL INPUT; ---reset - just for debuging +--reset - just for debugging CREATE FUNCTION reset_tsearch() RETURNS void as 'MODULE_PATHNAME', 'tsa_reset_tsearch' diff --git a/contrib/uuid-ossp/uuid-ossp.c b/contrib/uuid-ossp/uuid-ossp.c index 3e12bc4e96..fca39d7937 100644 --- a/contrib/uuid-ossp/uuid-ossp.c +++ b/contrib/uuid-ossp/uuid-ossp.c @@ -17,6 +17,10 @@ #include "utils/builtins.h" #include "utils/uuid.h" +/* for ntohl/htonl */ +#include +#include + /* * It's possible that there's more than one uuid.h header file present. * We expect configure to set the HAVE_ symbol for only the one we want. @@ -26,14 +30,14 @@ */ #define uuid_hash bsd_uuid_hash -#ifdef HAVE_UUID_H +#if defined(HAVE_UUID_H) #include -#endif -#ifdef HAVE_OSSP_UUID_H +#elif defined(HAVE_OSSP_UUID_H) #include -#endif -#ifdef HAVE_UUID_UUID_H +#elif defined(HAVE_UUID_UUID_H) #include +#else +#error "please use configure's --with-uuid switch to select a UUID library" #endif #undef uuid_hash diff --git a/contrib/xml2/xpath.c b/contrib/xml2/xpath.c index ac28996867..73b74c875e 100644 --- a/contrib/xml2/xpath.c +++ b/contrib/xml2/xpath.c @@ -610,7 +610,7 @@ xpath_table(PG_FUNCTION_ARGS) /* * At the moment we assume that the returned attributes make sense for the - * XPath specififed (i.e. we trust the caller). It's not fatal if they get + * XPath specified (i.e. we trust the caller). It's not fatal if they get * it wrong - the input function for the column type will raise an error * if the path result can't be converted into the correct binary * representation. diff --git a/doc/TODO b/doc/TODO index 4b7b3da476..d9d0c0cc52 100644 --- a/doc/TODO +++ b/doc/TODO @@ -1,3 +1,3 @@ The TODO list is now maintained at: - http://wiki.postgresql.org/wiki/Todo + https://wiki.postgresql.org/wiki/Todo diff --git a/doc/bug.template b/doc/bug.template index bdaf6840a7..8dca218e99 100644 --- a/doc/bug.template +++ b/doc/bug.template @@ -9,7 +9,7 @@ If you not only found the problem but solved it and generated a patch then e-mail it to pgsql-hackers@postgresql.org instead. Please use the command "diff -c" to generate the patch. -You may also enter a bug report at http://www.postgresql.org/ instead of +You may also enter a bug report at https://www.postgresql.org/ instead of e-mailing this form. ============================================================================ @@ -27,7 +27,7 @@ System Configuration: Operating System (example: Linux 2.4.18) : - PostgreSQL version (example: PostgreSQL 9.6.0): PostgreSQL 9.6.0 + PostgreSQL version (example: PostgreSQL 9.6.5): PostgreSQL 9.6.5 Compiler used (example: gcc 3.3.5) : diff --git a/doc/src/sgml/acronyms.sgml b/doc/src/sgml/acronyms.sgml index 38f111ef9d..8bde44e5af 100644 --- a/doc/src/sgml/acronyms.sgml +++ b/doc/src/sgml/acronyms.sgml @@ -300,7 +300,7 @@ Heap-Only + url="https://git.postgresql.org/gitweb?p=postgresql.git;a=blob;f=src/backend/access/heap/README.HOT;hb=HEAD">Heap-Only Tuples diff --git a/doc/src/sgml/advanced.sgml b/doc/src/sgml/advanced.sgml index 1e45511cc6..55ab445b04 100644 --- a/doc/src/sgml/advanced.sgml +++ b/doc/src/sgml/advanced.sgml @@ -712,7 +712,7 @@ SELECT name, altitude If you feel you need more introductory material, please visit the PostgreSQL - web site + web site for links to more resources. diff --git a/doc/src/sgml/backup.sgml b/doc/src/sgml/backup.sgml index 0f09d82d65..fd696c38db 100644 --- a/doc/src/sgml/backup.sgml +++ b/doc/src/sgml/backup.sgml @@ -862,7 +862,8 @@ SELECT pg_start_backup('label', false, false); ). This is usually what you want, because it minimizes the impact on query processing. If you want to start the backup as soon as - possible, change the second parameter to true. + possible, change the second parameter to true, which will + issue an immediate checkpoint using as much I/O as available. @@ -877,7 +878,7 @@ SELECT pg_start_backup('label', false, false); pg_dump or pg_dumpall). It is neither necessary nor desirable to stop normal operation of the database - while you do this. See section + while you do this. See for things to consider during this backup. @@ -888,8 +889,11 @@ SELECT pg_start_backup('label', false, false); SELECT * FROM pg_stop_backup(false); - This terminates the backup mode and performs an automatic switch to - the next WAL segment. The reason for the switch is to arrange for + This terminates backup mode. On a primary, it also performs an automatic + switch to the next WAL segment. On a standby, it is not possible to + automatically switch WAL segments, so you may wish to run + pg_switch_xlog on the primary to perform a manual + switch. The reason for the switch is to arrange for the last WAL segment file written during the backup interval to be ready to archive. @@ -907,7 +911,7 @@ SELECT * FROM pg_stop_backup(false); Once the WAL segment files active during the backup are archived, you are done. The file identified by pg_stop_backup's first return value is the last segment that is required to form a complete set of - backup files. If archive_mode is enabled, + backup files. On a primary, if archive_mode is enabled, pg_stop_backup does not return until the last segment has been archived. Archiving of these files happens automatically since you have @@ -923,6 +927,13 @@ SELECT * FROM pg_stop_backup(false); pg_stop_backup terminates because of this your backup may not be valid. + + + Note that on a standby pg_stop_backup does not wait for + WAL segments to be archived so the backup process must ensure that all WAL + segments required for the backup are successfully archived. + + @@ -931,9 +942,9 @@ SELECT * FROM pg_stop_backup(false); Making an exclusive low level backup The process for an exclusive backup is mostly the same as for a - non-exclusive one, but it differs in a few key steps. It does not allow - more than one concurrent backup to run, and there can be some issues on - the server if it crashes during the backup. Prior to PostgreSQL 9.6, this + non-exclusive one, but it differs in a few key steps. This type of backup + can only be taken on a primary and does not allow concurrent backups. + Prior to PostgreSQL 9.6, this was the only low-level method available, but it is now recommended that all users upgrade their scripts to use non-exclusive backups if possible. @@ -987,10 +998,15 @@ SELECT pg_start_backup('label', true); pg_dump or pg_dumpall). It is neither necessary nor desirable to stop normal operation of the database - while you do this. See section + while you do this. See for things to consider during this backup. + + Note that if the server crashes during the backup it may not be + possible to restart until the backup_label file has been + manually deleted from the PGDATA directory. + diff --git a/doc/src/sgml/biblio.sgml b/doc/src/sgml/biblio.sgml index e2cd69d278..0da3a83fae 100644 --- a/doc/src/sgml/biblio.sgml +++ b/doc/src/sgml/biblio.sgml @@ -295,7 +295,7 @@ ssimkovi@ag.or.at April, 1990 University of California -
Berkely, California
+
Berkeley, California
diff --git a/doc/src/sgml/catalogs.sgml b/doc/src/sgml/catalogs.sgml index 29738b07cb..d0518dc8a4 100644 --- a/doc/src/sgml/catalogs.sgml +++ b/doc/src/sgml/catalogs.sgml @@ -566,7 +566,7 @@ amhandler - oid + regproc pg_proc.oid OID of a handler function that is responsible for supplying information @@ -1280,10 +1280,8 @@ rolreplication bool - Role is a replication role. That is, this role can initiate streaming - replication (see ) and set/unset - the system backup mode using pg_start_backup and - pg_stop_backup + Role is a replication role. A replication role can initiate replication + connections and create and drop replication slots. @@ -8906,10 +8904,8 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx bool - Role is a replication role. That is, this role can initiate streaming - replication (see ) and set/unset - the system backup mode using pg_start_backup and - pg_stop_backup + Role is a replication role. A replication role can initiate replication + connections and create and drop replication slots. @@ -10050,14 +10046,37 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx text[] - User mapping specific options, as keyword=value - strings, if the current user is the owner of the foreign - server, else null + User mapping specific options, as keyword=value strings + + + To protect password information stored as a user mapping option, + the umoptions column will read as null + unless one of the following applies: + + + + current user is the user being mapped, and owns the server or + holds USAGE privilege on it + + + + + current user is the server owner and mapping is for PUBLIC + + + + + current user is a superuser + + + + + diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 8c25b45c7d..ce5a05a779 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -532,10 +532,10 @@ include_dir 'conf.d' - Specifies the configuration file for - user name mapping + Specifies the configuration file for user name mapping (customarily called pg_ident.conf). This parameter can only be set at server start. + See also . @@ -856,8 +856,8 @@ include_dir 'conf.d' Specifies the number of seconds of inactivity after which TCP should send a keepalive message to the client. A value of 0 uses the system default. - This parameter is supported only on systems that support the - TCP_KEEPIDLE or TCP_KEEPALIVE symbols, and on + This parameter is supported only on systems that support + TCP_KEEPIDLE or an equivalent socket option, and on Windows; on other systems, it must be zero. In sessions connected via a Unix-domain socket, this parameter is ignored and always reads as zero. @@ -882,9 +882,9 @@ include_dir 'conf.d' Specifies the number of seconds after which a TCP keepalive message that is not acknowledged by the client should be retransmitted. A value of 0 uses the system default. - This parameter is supported only on systems that support the - TCP_KEEPINTVL symbol, and on Windows; on other systems, it - must be zero. + This parameter is supported only on systems that support + TCP_KEEPINTVL or an equivalent socket option, and on + Windows; on other systems, it must be zero. In sessions connected via a Unix-domain socket, this parameter is ignored and always reads as zero.
@@ -906,10 +906,11 @@ include_dir 'conf.d' Specifies the number of TCP keepalives that can be lost before - the server's connection to the client is considered dead. A value of 0 - uses the system default. This parameter is - supported only on systems that support the TCP_KEEPCNT - symbol; on other systems, it must be zero. + the server's connection to the client is considered dead. + A value of 0 uses the system default. + This parameter is supported only on systems that support + TCP_KEEPCNT or an equivalent socket option; + on other systems, it must be zero. In sessions connected via a Unix-domain socket, this parameter is ignored and always reads as zero. @@ -1048,7 +1049,8 @@ include_dir 'conf.d' in the OpenSSL package for the syntax of this setting and a list of supported values. The default value is HIGH:MEDIUM:+3DES:!aNULL. It is usually reasonable, - unless you have specific security requirements. + unless you have specific security requirements. This parameter can only + be set at server start. @@ -1120,7 +1122,8 @@ include_dir 'conf.d' Specifies whether to use the server's SSL cipher preferences, rather - than the client's. The default is true. + than the client's. The default is true. This parameter can only be + set at server start. @@ -1144,7 +1147,8 @@ include_dir 'conf.d' Specifies the name of the curve to use in ECDH key exchange. It needs to be supported by all clients that connect. It does not need to be same curve as used by server's Elliptic - Curve key. The default is prime256v1. + Curve key. The default is prime256v1. This parameter + can only be set at server start. @@ -1902,10 +1906,10 @@ include_dir 'conf.d' , but smaller than the OS's page cache, where performance might degrade. This setting may have no effect on some platforms. The valid range is between - 0, which disables controlled writeback, and + 0, which disables forced writeback, and 2MB. The default is 512kB on Linux, - 0 elsewhere. (Non-default values of - BLCKSZ change the default and maximum.) + 0 elsewhere. (If BLCKSZ is not 8kB, + the default and maximum values scale proportionally to it.) This parameter can only be set in the postgresql.conf file or on the server command line. @@ -2054,10 +2058,10 @@ include_dir 'conf.d' that are bigger than , but smaller than the OS's page cache, where performance might degrade. This setting may have no effect on some platforms. The valid range is - between 0, which disables controlled writeback, - and 2MB. The default is 0 (i.e. no - flush control). (Non-default values of BLCKSZ - change the maximum.) + between 0, which disables forced writeback, + and 2MB. The default is 0, i.e., no + forced writeback. (If BLCKSZ is not 8kB, + the maximum value scales proportionally to it.) @@ -2517,10 +2521,11 @@ include_dir 'conf.d' Specifies how often the WAL writer flushes WAL. After flushing WAL it sleeps for wal_writer_delay milliseconds, unless woken up - by an asynchronously committing transaction. In case the last flush + by an asynchronously committing transaction. If the last flush happened less than wal_writer_delay milliseconds ago and less than wal_writer_flush_after bytes of WAL have been - produced since, WAL is only written to the OS, not flushed to disk. + produced since, then WAL is only written to the operating system, not + flushed to disk. The default value is 200 milliseconds (200ms). Note that on many systems, the effective resolution of sleep delays is 10 milliseconds; setting wal_writer_delay to a value that is @@ -2539,12 +2544,12 @@ include_dir 'conf.d' - Specifies how often the WAL writer flushes WAL. In case the last flush + Specifies how often the WAL writer flushes WAL. If the last flush happened less than wal_writer_delay milliseconds ago and less than wal_writer_flush_after bytes of WAL have been - produced since, WAL is only written to the OS, not flushed to disk. - If wal_writer_flush_after is set to 0 WAL is - flushed every time the WAL writer has written WAL. The default is + produced since, then WAL is only written to the operating system, not + flushed to disk. If wal_writer_flush_after is set + to 0 then WAL data is flushed immediately. The default is 1MB. This parameter can only be set in the postgresql.conf file or on the server command line. @@ -2664,10 +2669,10 @@ include_dir 'conf.d' that are bigger than , but smaller than the OS's page cache, where performance might degrade. This setting may have no effect on some platforms. The valid range is - between 0, which disables controlled writeback, + between 0, which disables forced writeback, and 2MB. The default is 256kB on - Linux, 0 elsewhere. (Non-default values of - BLCKSZ change the default and maximum.) + Linux, 0 elsewhere. (If BLCKSZ is not + 8kB, the default and maximum values scale proportionally to it.) This parameter can only be set in the postgresql.conf file or on the server command line. @@ -5156,6 +5161,7 @@ FROM pg_stat_activity; longer than to acquire a lock. This is useful in determining if lock waits are causing poor performance. The default is off. + Only superusers can change this setting.
diff --git a/doc/src/sgml/contacts.sgml b/doc/src/sgml/contacts.sgml index a981625027..308eb418a5 100644 --- a/doc/src/sgml/contacts.sgml +++ b/doc/src/sgml/contacts.sgml @@ -16,7 +16,7 @@ and the mailing lists themselves. Refer to the introduction in this manual or to the PostgreSQL -web page +web page for subscription information to the no-cost mailing lists. diff --git a/doc/src/sgml/datatype.sgml b/doc/src/sgml/datatype.sgml index 67d0c349e0..39bbd87e67 100644 --- a/doc/src/sgml/datatype.sgml +++ b/doc/src/sgml/datatype.sgml @@ -977,6 +977,11 @@ SELECT '52093.89'::money::numeric::float8; + Division of a money value by an integer value is performed + with truncation of the fractional part towards zero. To get a rounded + result, divide by a floating-point value, or cast the money + value to numeric before dividing and back to money + afterwards. (The latter is preferable to avoid risking precision loss.) When a money value is divided by another money value, the result is double precision (i.e., a pure number, not money); the currency units cancel each other out in the division. @@ -3959,15 +3964,7 @@ SELECT 'fat & rat & ! cat'::tsquery; tsquery ------------------------ 'fat' & 'rat' & !'cat' - -SELECT '(fat | rat) <-> cat'::tsquery; - tsquery ------------------------------------ - 'fat' <-> 'cat' | 'rat' <-> 'cat' - - The last example demonstrates that tsquery sometimes - rearranges nested operators into a logically equivalent formulation. diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml index f43352c2a9..157512c7ab 100644 --- a/doc/src/sgml/ddl.sgml +++ b/doc/src/sgml/ddl.sgml @@ -2559,7 +2559,8 @@ VALUES ('Albany', NULL, NULL, 'NY'); All check constraints and not-null constraints on a parent table are - automatically inherited by its children. Other types of constraints + automatically inherited by its children, unless explicitly specified + otherwise with NO INHERIT clauses. Other types of constraints (unique, primary key, and foreign key constraints) are not inherited. @@ -2570,10 +2571,12 @@ VALUES ('Albany', NULL, NULL, 'NY'); same column name appears in multiple parent tables, or in both a parent table and the child's definition, then these columns are merged so that there is only one such column in the child table. To be merged, - columns must have the same data types, else an error is raised. The - merged column will have copies of all the check constraints coming from - any one of the column definitions it came from, and will be marked not-null - if any of them are. + columns must have the same data types, else an error is raised. + Inheritable check constraints and not-null constraints are merged in a + similar fashion. Thus, for example, a merged column will be marked + not-null if any one of the column definitions it came from is marked + not-null. Check constraints are merged if they have the same name, + and the merge will fail if their conditions are different. @@ -2625,12 +2628,19 @@ VALUES ('Albany', NULL, NULL, 'NY'); - Note how table access permissions are handled. Querying a parent - table can automatically access data in child tables without further - access privilege checking. This preserves the appearance that the - data is (also) in the parent table. Accessing the child tables - directly is, however, not automatically allowed and would require - further privileges to be granted. + Inherited queries perform access permission checks on the parent table + only. Thus, for example, granting UPDATE permission on + the cities table implies permission to update rows in + the capitals table as well, when they are + accessed through cities. This preserves the appearance + that the data is (also) in the parent table. But + the capitals table could not be updated directly + without an additional grant. In a similar way, the parent table's row + security policies (see ) are applied to + rows coming from child tables during an inherited query. A child table's + policies, if any, are applied only when it is the table explicitly named + in the query; and in that case, any policies attached to its parent(s) are + ignored. diff --git a/doc/src/sgml/dfunc.sgml b/doc/src/sgml/dfunc.sgml index 5a368f6df0..ebc85bf54b 100644 --- a/doc/src/sgml/dfunc.sgml +++ b/doc/src/sgml/dfunc.sgml @@ -63,10 +63,10 @@ The compiler flag to create PIC is - . To create shared libraries the compiler + . To create shared libraries the compiler flag is . -gcc -fpic -c foo.c +gcc -fPIC -c foo.c gcc -shared -o foo.so foo.o This is applicable as of version 3.0 of @@ -84,14 +84,14 @@ gcc -shared -o foo.so foo.o The compiler flag of the system compiler to create PIC is . When using - GCC it's . The + GCC it's . The linker flag for shared libraries is . So: cc +z -c foo.c or: -gcc -fpic -c foo.c +gcc -fPIC -c foo.c and then: @@ -112,13 +112,11 @@ ld -b -o foo.sl foo.o The compiler flag to create PIC is - . On some platforms in some situations - must be used if - does not work. Refer to the GCC manual for more information. + . The compiler flag to create a shared library is . A complete example looks like this: -cc -fpic -c foo.c +cc -fPIC -c foo.c cc -shared -o foo.so foo.o @@ -149,12 +147,12 @@ cc -bundle -flat_namespace -undefined suppress -o foo.so foo.o The compiler flag to create PIC is - . For ELF systems, the + . For ELF systems, the compiler with the flag is used to link shared libraries. On the older non-ELF systems, ld -Bshareable is used. -gcc -fpic -c foo.c +gcc -fPIC -c foo.c gcc -shared -o foo.so foo.o @@ -169,10 +167,10 @@ gcc -shared -o foo.so foo.o The compiler flag to create PIC is - . ld -Bshareable is + . ld -Bshareable is used to link shared libraries. -gcc -fpic -c foo.c +gcc -fPIC -c foo.c ld -Bshareable -o foo.so foo.o @@ -188,7 +186,7 @@ ld -Bshareable -o foo.so foo.o The compiler flag to create PIC is with the Sun compiler and - with GCC. To + with GCC. To link shared libraries, the compiler option is with either compiler or alternatively with GCC. @@ -198,7 +196,7 @@ cc -G -o foo.so foo.o or -gcc -fpic -c foo.c +gcc -fPIC -c foo.c gcc -G -o foo.so foo.o diff --git a/doc/src/sgml/dml.sgml b/doc/src/sgml/dml.sgml index cd36a73811..0c65578b59 100644 --- a/doc/src/sgml/dml.sgml +++ b/doc/src/sgml/dml.sgml @@ -102,6 +102,18 @@ INSERT INTO products (product_no, name, price) VALUES + + It is also possible to insert the result of a query (which might be no + rows, one row, or many rows): + +INSERT INTO products (product_no, name, price) + SELECT product_no, name, price FROM new_products + WHERE release_date = 'today'; + + This provides the full power of the SQL query mechanism () for computing the rows to be inserted. + + When inserting a lot of data at the same time, considering using @@ -252,4 +264,91 @@ DELETE FROM products; then all rows in the table will be deleted! Caveat programmer. + + + Returning Data From Modified Rows + + + RETURNING + + + + INSERT + RETURNING + + + + UPDATE + RETURNING + + + + DELETE + RETURNING + + + + Sometimes it is useful to obtain data from modified rows while they are + being manipulated. The INSERT, UPDATE, + and DELETE commands all have an + optional RETURNING clause that supports this. Use + of RETURNING avoids performing an extra database query to + collect the data, and is especially valuable when it would otherwise be + difficult to identify the modified rows reliably. + + + + The allowed contents of a RETURNING clause are the same as + a SELECT command's output list + (see ). It can contain column + names of the command's target table, or value expressions using those + columns. A common shorthand is RETURNING *, which selects + all columns of the target table in order. + + + + In an INSERT, the data available to RETURNING is + the row as it was inserted. This is not so useful in trivial inserts, + since it would just repeat the data provided by the client. But it can + be very handy when relying on computed default values. For example, + when using a serial + column to provide unique identifiers, RETURNING can return + the ID assigned to a new row: + +CREATE TABLE users (firstname text, lastname text, id serial primary key); + +INSERT INTO users (firstname, lastname) VALUES ('Joe', 'Cool') RETURNING id; + + The RETURNING clause is also very useful + with INSERT ... SELECT. + + + + In an UPDATE, the data available to RETURNING is + the new content of the modified row. For example: + +UPDATE products SET price = price * 1.10 + WHERE price <= 99.99 + RETURNING name, price AS new_price; + + + + + In a DELETE, the data available to RETURNING is + the content of the deleted row. For example: + +DELETE FROM products + WHERE obsoletion_date = 'today' + RETURNING *; + + + + + If there are triggers () on the target table, + the data available to RETURNING is the row as modified by + the triggers. Thus, inspecting columns computed by triggers is another + common use-case for RETURNING. + + + diff --git a/doc/src/sgml/docguide.sgml b/doc/src/sgml/docguide.sgml index 6f896b565f..f8389c74c1 100644 --- a/doc/src/sgml/docguide.sgml +++ b/doc/src/sgml/docguide.sgml @@ -585,7 +585,7 @@ checking for osx... osx To produce HTML documentation with the stylesheet used on postgresql.org instead of the + url="https://www.postgresql.org/docs/current">postgresql.org instead of the default simple style use: doc/src/sgml$ make STYLE=website html diff --git a/doc/src/sgml/ecpg.sgml b/doc/src/sgml/ecpg.sgml index a30e25cfa0..8cdc852a04 100644 --- a/doc/src/sgml/ecpg.sgml +++ b/doc/src/sgml/ecpg.sgml @@ -240,8 +240,7 @@ EXEC SQL AT connection-name SELECT ...; If your application uses multiple threads of execution, they cannot share a connection concurrently. You must either explicitly control access to the connection - (using mutexes) or use a connection for each thread. If each thread uses its own connection, - you will need to use the AT clause to specify which connection the thread will use. + (using mutexes) or use a connection for each thread. @@ -251,7 +250,7 @@ EXEC SQL AT connection-name SELECT ...; EXEC SQL SET CONNECTION connection-name; This option is particularly convenient if many statements are to be - executed on the same connection. It is not thread-aware. + executed on the same connection. @@ -1162,7 +1161,7 @@ EXEC SQL END DECLARE SECTION; There are two use cases for arrays as host variables. The first is a way to store some text string in char[] or VARCHAR[], as - explained . The second use case is to + explained in . The second use case is to retrieve multiple rows from a query result without using a cursor. Without an array, to process a query result consisting of multiple rows, it is required to use a cursor and diff --git a/doc/src/sgml/event-trigger.sgml b/doc/src/sgml/event-trigger.sgml index 3ed14f08c0..c7b880d7c9 100644 --- a/doc/src/sgml/event-trigger.sgml +++ b/doc/src/sgml/event-trigger.sgml @@ -565,6 +565,7 @@ X - - + CREATE USER MAPPING diff --git a/doc/src/sgml/external-projects.sgml b/doc/src/sgml/external-projects.sgml index 88094c19ea..c9c9fc0307 100644 --- a/doc/src/sgml/external-projects.sgml +++ b/doc/src/sgml/external-projects.sgml @@ -70,9 +70,9 @@ JDBC - JDBC + Java Type 4 JDBC driver - + @@ -82,6 +82,13 @@ + + node-postgres + JavaScript + Node.js driver + + + Npgsql .NET @@ -89,6 +96,13 @@ + + pgtcl + Tcl + + + + pgtclng Tcl @@ -96,6 +110,13 @@ + + pq + Go + Pure Go driver for Go's database/sql + + + psqlODBC ODBC @@ -190,7 +211,7 @@ PL/R R - + diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index 960342973c..63dfab2009 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -996,7 +996,7 @@ scale(numeric) - numeric + integer scale of the argument (the number of decimal digits in the fractional part) scale(8.41) 2 @@ -1534,11 +1534,12 @@ text - Remove the longest string containing only the + Remove the longest string containing only characters from characters (a space by default) from the - start/end/both ends of the string + start, end, or both ends (both is the default) + of string - trim(both 'x' from 'xTomxx') + trim(both 'xyz' from 'yxTomxx') Tom @@ -1547,14 +1548,14 @@ trim(leading | trailing | both from string - , characters + , characters ) text - Non-standard version of trim() + Non-standard syntax for trim() - trim(both from 'xTomxx', 'x') + trim(both from 'yxTomxx', 'xyz') Tom @@ -1626,7 +1627,7 @@ in characters (a space by default) from the start and end of string - btrim('xyxtrimyyx', 'xy') + btrim('xyxtrimyyx', 'xyz') trim @@ -1895,8 +1896,8 @@ characters (a space by default) from the start of string - ltrim('zzzytrim', 'xyz') - trim + ltrim('zzzytest', 'xyz') + test @@ -2201,8 +2202,8 @@ characters (a space by default) from the end of string - rtrim('trimxxxx', 'x') - trim + rtrim('testxxzx', 'xyz') + test @@ -3467,11 +3468,11 @@ SELECT format('Testing %3$s, %2$s, %s', 'one', 'two', 'three'); bytea - Remove the longest string containing only the bytes in + Remove the longest string containing only bytes appearing in bytes from the start and end of string - trim(E'\\000'::bytea from E'\\000Tom\\000'::bytea) + trim(E'\\000\\001'::bytea from E'\\000Tom\\001'::bytea) Tom @@ -3510,11 +3511,11 @@ SELECT format('Testing %3$s, %2$s, %s', 'one', 'two', 'three'); bytea - Remove the longest string consisting only of bytes - in bytes from the start and end of + Remove the longest string containing only bytes appearing in + bytes from the start and end of string - btrim(E'\\000trim\\000'::bytea, E'\\000'::bytea) + btrim(E'\\000trim\\001'::bytea, E'\\000\\001'::bytea) trim @@ -5987,15 +5988,18 @@ SELECT regexp_matches('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); TZ - upper case time-zone name + upper case time-zone abbreviation + (only supported in to_char) tz - lower case time-zone name + lower case time-zone abbreviation + (only supported in to_char) OF - time-zone offset + time-zone offset from UTC + (only supported in to_char) @@ -6229,7 +6233,7 @@ SELECT regexp_matches('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); Here is a more complex example: - to_timestamp('15:12:02.020.001230', 'HH:MI:SS.MS.US') + to_timestamp('15:12:02.020.001230', 'HH24:MI:SS.MS.US') is 15 hours, 12 minutes, and 2 seconds + 20 milliseconds + 1230 microseconds = 2.021230 seconds. @@ -6273,11 +6277,11 @@ SELECT regexp_matches('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); 9 - value with the specified number of digits + digit position (can be dropped if insignificant) 0 - value with leading zeros + digit position (will not be dropped, even if insignificant) . (period) @@ -6285,7 +6289,7 @@ SELECT regexp_matches('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); , (comma) - group (thousand) separator + group (thousands) separator PR @@ -6343,6 +6347,39 @@ SELECT regexp_matches('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); Usage notes for numeric formatting: + + + 0 specifies a digit position that will always be printed, + even if it contains a leading/trailing zero. 9 also + specifies a digit position, but if it is a leading zero then it will + be replaced by a space, while if it is a trailing zero and fill mode + is specified then it will be deleted. (For to_number(), + these two pattern characters are equivalent.) + + + + + + The pattern characters S, L, D, + and G represent the sign, currency symbol, decimal point, + and thousands separator characters defined by the current locale + (see + and ). The pattern characters period + and comma represent those exact characters, with the meanings of + decimal point and thousands separator, regardless of locale. + + + + + + If no explicit provision is made for a sign + in to_char()'s pattern, one column will be reserved for + the sign, and it will be anchored to (appear just left of) the + number. If S appears just left of some 9's, + it will likewise be anchored to the number. + + + A sign formatted using SG, PL, or @@ -6350,18 +6387,10 @@ SELECT regexp_matches('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); the number; for example, to_char(-12, 'MI9999') produces '-  12' but to_char(-12, 'S9999') produces '  -12'. - The Oracle implementation does not allow the use of + (The Oracle implementation does not allow the use of MI before 9, but rather requires that 9 precede - MI. - - - - - - 9 results in a value with the same number of - digits as there are 9s. If a digit is - not available it outputs a space. + MI.) @@ -6408,8 +6437,8 @@ SELECT regexp_matches('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); Certain modifiers can be applied to any template pattern to alter its - behavior. For example, FM9999 - is the 9999 pattern with the + behavior. For example, FM99.99 + is the 99.99 pattern with the FM modifier. shows the modifier patterns for numeric formatting. @@ -6428,8 +6457,8 @@ SELECT regexp_matches('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); FM prefix - fill mode (suppress leading zeroes and padding blanks) - FM9999 + fill mode (suppress trailing zeroes and padding blanks) + FM99.99 TH suffix @@ -6476,6 +6505,10 @@ SELECT regexp_matches('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); to_char(-0.1, 'FM9.99') '-.1' + + to_char(-0.1, 'FM90.99') + '-0.1' + to_char(0.1, '0.9') ' 0.1' @@ -9540,7 +9573,7 @@ CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple tsquery make query that searches for query1 followed by - query2 at maximum distance distance + query2 at distance distance tsquery_phrase(to_tsquery('fat'), to_tsquery('cat'), 10) 'fat' <10> 'cat' @@ -13699,9 +13732,6 @@ SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab; percentile continuous - - median - percentile_cont(fraction) WITHIN GROUP (ORDER BY sort_expression) @@ -15305,6 +15335,12 @@ SELECT * FROM pg_ls_dir('.') WITH ORDINALITY AS t(ls,n); by the client (might contain more than one statement) + + current_role + name + equivalent to current_user + + current_schema[()] name @@ -15428,8 +15464,11 @@ SELECT * FROM pg_ls_dir('.') WITH ORDINALITY AS t(ls,n); - current_catalog, current_schema, - current_user, session_user, + current_catalog, + current_role, + current_schema, + current_user, + session_user, and user have special syntactic status in SQL: they must be called without trailing parentheses. (In PostgreSQL, parentheses can optionally be used with @@ -15449,6 +15488,10 @@ SELECT * FROM pg_ls_dir('.') WITH ORDINALITY AS t(ls,n); current_query + + current_role + + current_schema @@ -15500,6 +15543,11 @@ SELECT * FROM pg_ls_dir('.') WITH ORDINALITY AS t(ls,n); functions with the attribute SECURITY DEFINER. In Unix parlance, the session user is the real user and the current user is the effective user. + current_role and user are + synonyms for current_user. (The SQL standard draws + a distinction between current_role + and current_user, but PostgreSQL + does not, since it unifies users and roles into a single kind of entity.) @@ -18022,11 +18070,22 @@ postgres=# select pg_start_backup('label_goes_here'); pg_start_backup. In a non-exclusive backup, the contents of the backup_label and tablespace_map are returned in the result of the function, and should be written to files in the - backup (and not in the data directory). + backup (and not in the data directory). When executed on a primary + pg_stop_backup will wait for WAL to be archived, provided that + archiving is enabled. + + + + On a standby pg_stop_backup will return immediately without + waiting, so it's important to verify that all required WAL segments have + been archived. If write activity on the primary is low, it may be useful + to run pg_switch_xlog on the primary in order to trigger a + segment switch. - The function also creates a backup history file in the transaction log + When executed on a primary, the function also creates a backup history file + in the write-ahead log archive area. The history file includes the label given to pg_start_backup, the starting and ending transaction log locations for the backup, and the starting and ending times of the backup. The return diff --git a/doc/src/sgml/high-availability.sgml b/doc/src/sgml/high-availability.sgml index 06f49dba5d..774d2b4bce 100644 --- a/doc/src/sgml/high-availability.sgml +++ b/doc/src/sgml/high-availability.sgml @@ -76,9 +76,7 @@ The remainder of this section outlines various failover, replication, - and load balancing solutions. A glossary is - also available. + and load balancing solutions. @@ -209,7 +207,7 @@ protocol to make nodes agree on a serializable transactional order. middleware. Care must also be taken that all transactions either commit or abort on all servers, perhaps using two-phase commit ( - and . + and ). Pgpool-II and Continuent Tungsten are examples of this type of replication. @@ -1785,7 +1783,7 @@ if (!triggered) In normal operation, read-only transactions are allowed to - update sequences and to use LISTEN, UNLISTEN, and + use LISTEN, UNLISTEN, and NOTIFY, so Hot Standby sessions operate under slightly tighter restrictions than ordinary read-only sessions. It is possible that some of these restrictions might be loosened in a future release. diff --git a/doc/src/sgml/info.sgml b/doc/src/sgml/info.sgml index a59d0c8a43..233ba0e668 100644 --- a/doc/src/sgml/info.sgml +++ b/doc/src/sgml/info.sgml @@ -14,10 +14,10 @@ The PostgreSQL wiki contains the project's FAQ + url="https://wiki.postgresql.org">wiki contains the project's FAQ (Frequently Asked Questions) list, TODO list, and + url="https://wiki.postgresql.org/wiki/Todo">TODO list, and detailed information about many more topics. @@ -28,7 +28,7 @@ The PostgreSQL - web site + web site carries details on the latest release and other information to make your work or play with PostgreSQL more productive. diff --git a/doc/src/sgml/install-windows.sgml b/doc/src/sgml/install-windows.sgml index 8cd189c8e1..1f7ad7a648 100644 --- a/doc/src/sgml/install-windows.sgml +++ b/doc/src/sgml/install-windows.sgml @@ -19,10 +19,10 @@ There are several different ways of building PostgreSQL on Windows. The simplest way to build with - Microsoft tools is to install Visual Studio Express 2015 + Microsoft tools is to install Visual Studio Express 2017 for Windows Desktop and use the included compiler. It is also possible to build with the full - Microsoft Visual C++ 2005 to 2015. + Microsoft Visual C++ 2005 to 2017. In some cases that requires the installation of the Windows SDK in addition to the compiler. @@ -77,19 +77,19 @@ Visual Studio Express or some versions of the Microsoft Windows SDK. If you do not already have a Visual Studio environment set up, the easiest - ways are to use the compilers from Visual Studio Express 2015 + ways are to use the compilers from Visual Studio Express 2017 for Windows Desktop or those in the Windows SDK - 7.1, which are both free downloads from Microsoft. + 8.1, which are both free downloads from Microsoft. Both 32-bit and 64-bit builds are possible with the Microsoft Compiler suite. 32-bit PostgreSQL builds are possible with Visual Studio 2005 to - Visual Studio 2015 (including Express editions), - as well as standalone Windows SDK releases 6.0 to 7.1. + Visual Studio 2017 (including Express editions), + as well as standalone Windows SDK releases 6.0 to 8.1. 64-bit PostgreSQL builds are supported with - Microsoft Windows SDK version 6.0a to 7.1 or + Microsoft Windows SDK version 6.0a to 8.1 or Visual Studio 2008 and above. Compilation is supported down to Windows XP and Windows Server 2003 when building with @@ -97,6 +97,8 @@ Visual Studio 2013. Building with Visual Studio 2015 is supported down to Windows Vista and Windows Server 2008. + Building with Visual Studio 2017 is supported + down to Windows 7 SP1 and Windows Server 2008 R2 SP1. @@ -161,7 +163,7 @@ $ENV{PATH}=$ENV{PATH} . ';c:\some\where\bison\bin'; Microsoft Windows SDK it is recommended that you upgrade to the latest version (currently version 7.1), available for download from - . + . You must always include the @@ -180,7 +182,8 @@ $ENV{PATH}=$ENV{PATH} . ';c:\some\where\bison\bin'; ActiveState Perl is required to run the build generation scripts. MinGW or Cygwin Perl will not work. It must also be present in the PATH. Binaries can be downloaded from - (Note: version 5.8 or later is required, + + (Note: version 5.8.3 or later is required, the free Standard Distribution is sufficient). diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml index 7a77dfe6f8..d3088a3101 100644 --- a/doc/src/sgml/installation.sgml +++ b/doc/src/sgml/installation.sgml @@ -163,6 +163,7 @@ su - postgres PL/Perl you need a full Perl installation, including the libperl library and the header files. + The minimum required version is Perl 5.8.3. Since PL/Perl will be a shared library, the libperl libperl library must be a shared library @@ -306,7 +307,7 @@ su - postgres perl - Perl 5.8 or later is needed to build from a Git checkout, + Perl 5.8.3 or later is needed to build from a Git checkout, or if you changed the input files for any of the build steps that use Perl scripts. If building on Windows you will need Perl in any case. Perl is @@ -343,7 +344,7 @@ su - postgres The PostgreSQL &version; sources can be obtained from the download section of our - website: . You + website: . You should get a file named postgresql-&version;.tar.gz or postgresql-&version;.tar.bz2. After you have obtained the file, unpack it: @@ -1422,7 +1423,7 @@ su - postgres PERL - Full path to the Perl interpreter. This will be used to + Full path name of the Perl interpreter. This will be used to determine the dependencies for building PL/Perl. @@ -1432,7 +1433,7 @@ su - postgres PYTHON - Full path to the Python interpreter. This will be used to + Full path name of the Python interpreter. This will be used to determine the dependencies for building PL/Python. Also, whether Python 2 or 3 is specified here (or otherwise implicitly chosen) determines which variant of the PL/Python @@ -1449,7 +1450,7 @@ su - postgres TCLSH - Full path to the Tcl interpreter. This will be used to + Full path name of the Tcl interpreter. This will be used to determine the dependencies for building PL/Tcl, and it will be substituted into Tcl scripts. @@ -1468,6 +1469,26 @@ su - postgres + + Sometimes it is useful to add compiler flags after-the-fact to the set + that were chosen by configure. An important example is + that gcc's + When developing code inside the server, it is recommended to @@ -1488,6 +1509,14 @@ su - postgres + + + The COPT and PROFILE environment variables are + actually handled identically by the PostgreSQL + makefiles. Which to use is a matter of preference, but a common habit + among developers is to use PROFILE for one-time flag + adjustments, while COPT might be kept set all the time. + @@ -1983,7 +2012,7 @@ kill `cat /usr/local/pgsql/data/postmaster.pid` it has recently been verified to build and pass its regression tests on that platform. Currently, most testing of platform compatibility is done automatically by test machines in the - PostgreSQL Build Farm. + PostgreSQL Build Farm. If you are interested in using PostgreSQL on a platform that is not represented in the build farm, but on which the code works or can be made to work, you are strongly encouraged to set up a build @@ -2159,7 +2188,7 @@ kill `cat /usr/local/pgsql/data/postmaster.pid` should take care of it. - + One user reports: @@ -2221,7 +2250,7 @@ hosts=local4,bind4 Memory Management - + AIX can be somewhat peculiar with regards to the way it does diff --git a/doc/src/sgml/legal.sgml b/doc/src/sgml/legal.sgml index 84bc7beb5a..67ef88b2ff 100644 --- a/doc/src/sgml/legal.sgml +++ b/doc/src/sgml/legal.sgml @@ -1,9 +1,9 @@ -2016 +2017 - 1996-2016 + 1996-2017 The PostgreSQL Global Development Group @@ -11,7 +11,7 @@ Legal Notice - PostgreSQL is Copyright © 1996-2016 + PostgreSQL is Copyright © 1996-2017 by the PostgreSQL Global Development Group. diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml index 2f9350b10e..7a90cb09a9 100644 --- a/doc/src/sgml/libpq.sgml +++ b/doc/src/sgml/libpq.sgml @@ -1073,10 +1073,10 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname Controls the number of seconds of inactivity after which TCP should send a keepalive message to the server. A value of zero uses the system default. This parameter is ignored for connections made via a - Unix-domain socket, or if keepalives are disabled. It is only supported - on systems where the TCP_KEEPIDLE or TCP_KEEPALIVE - socket option is available, and on Windows; on other systems, it has no - effect. + Unix-domain socket, or if keepalives are disabled. + It is only supported on systems where TCP_KEEPIDLE or + an equivalent socket option is available, and on Windows; on other + systems, it has no effect. @@ -1089,9 +1089,9 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname that is not acknowledged by the server should be retransmitted. A value of zero uses the system default. This parameter is ignored for connections made via a Unix-domain socket, or if keepalives are disabled. - It is only supported on systems where the TCP_KEEPINTVL - socket option is available, and on Windows; on other systems, it has no - effect. + It is only supported on systems where TCP_KEEPINTVL or + an equivalent socket option is available, and on Windows; on other + systems, it has no effect. @@ -1104,8 +1104,9 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname client's connection to the server is considered dead. A value of zero uses the system default. This parameter is ignored for connections made via a Unix-domain socket, or if keepalives are disabled. - It is only supported on systems where the TCP_KEEPCNT - socket option is available; on other systems, it has no effect. + It is only supported on systems where TCP_KEEPCNT or + an equivalent socket option is available; on other systems, it has no + effect. @@ -3060,9 +3061,10 @@ void PQclear(PGresult *res); - Returns the number of rows (tuples) in the query result. Because - it returns an integer result, large result sets might overflow the - return value on 32-bit operating systems. + Returns the number of rows (tuples) in the query result. + (Note that PGresult objects are limited to no more + than INT_MAX rows, so an int result is + sufficient.) int PQntuples(const PGresult *res); @@ -6891,22 +6893,6 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) - - - - PGREALM - - PGREALM sets the Kerberos realm to use with - PostgreSQL, if it is different from the - local realm. If PGREALM is set, - libpq applications will attempt - authentication with servers for this realm and use separate ticket - files to avoid conflicts with local ticket files. This - environment variable is only used if GSSAPI authentication is - selected by the server. - - - @@ -6944,6 +6930,9 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) PGREQUIRESSL behaves the same as the connection parameter. + This environment variable is deprecated in favor of the + PGSSLMODE variable; setting both variables suppresses the + effect of this one. diff --git a/doc/src/sgml/logicaldecoding.sgml b/doc/src/sgml/logicaldecoding.sgml index 484915d042..9bf9abf29b 100644 --- a/doc/src/sgml/logicaldecoding.sgml +++ b/doc/src/sgml/logicaldecoding.sgml @@ -338,7 +338,7 @@ $ pg_recvlogical -d postgres --slot test --drop-slot The pg_replication_slots view and the - pg_stat_replication + pg_stat_replication view provide information about the current state of replication slots and streaming replication connections respectively. These views apply to both physical and logical replication. @@ -380,7 +380,7 @@ typedef struct OutputPluginCallbacks LogicalDecodeShutdownCB shutdown_cb; } OutputPluginCallbacks; -typedef void (*LogicalOutputPluginInit)(struct OutputPluginCallbacks *cb); +typedef void (*LogicalOutputPluginInit) (struct OutputPluginCallbacks *cb); The begin_cb, change_cb and commit_cb callbacks are required, @@ -419,7 +419,7 @@ CREATE TABLE another_catalog_table(data text) WITH (user_catalog_table = true); data in a data type that can contain arbitrary data (e.g., bytea) is cumbersome. If the output plugin only outputs textual data in the server's encoding, it can declare that by - setting OutputPluginOptions.output_mode + setting OutputPluginOptions.output_type to OUTPUT_PLUGIN_TEXTUAL_OUTPUT instead of OUTPUT_PLUGIN_BINARY_OUTPUT in the startup @@ -465,11 +465,9 @@ CREATE TABLE another_catalog_table(data text) WITH (user_catalog_table = true); a replication slot is created or asked to stream changes, independent of the number of changes that are ready to be put out. -typedef void (*LogicalDecodeStartupCB) ( - struct LogicalDecodingContext *ctx, - OutputPluginOptions *options, - bool is_init -); +typedef void (*LogicalDecodeStartupCB) (struct LogicalDecodingContext *ctx, + OutputPluginOptions *options, + bool is_init); The is_init parameter will be true when the replication slot is being created and false @@ -504,9 +502,7 @@ typedef struct OutputPluginOptions be used to deallocate resources private to the output plugin. The slot isn't necessarily being dropped, streaming is just being stopped. -typedef void (*LogicalDecodeShutdownCB) ( - struct LogicalDecodingContext *ctx -); +typedef void (*LogicalDecodeShutdownCB) (struct LogicalDecodingContext *ctx); @@ -519,10 +515,8 @@ typedef void (*LogicalDecodeShutdownCB) ( start of a committed transaction has been decoded. Aborted transactions and their contents never get decoded. -typedef void (*LogicalDecodeBeginCB) ( - struct LogicalDecodingContext *, - ReorderBufferTXN *txn -); +typedef void (*LogicalDecodeBeginCB) (struct LogicalDecodingContext *ctx, + ReorderBufferTXN *txn); The txn parameter contains meta information about the transaction, like the time stamp at which it has been committed and @@ -540,10 +534,9 @@ typedef void (*LogicalDecodeBeginCB) ( rows will have been called before this, if there have been any modified rows. -typedef void (*LogicalDecodeCommitCB) ( - struct LogicalDecodingContext *, - ReorderBufferTXN *txn -); +typedef void (*LogicalDecodeCommitCB) (struct LogicalDecodingContext *ctx, + ReorderBufferTXN *txn, + XLogRecPtr commit_lsn); @@ -559,12 +552,10 @@ typedef void (*LogicalDecodeCommitCB) ( several rows at once the callback will be called individually for each row. -typedef void (*LogicalDecodeChangeCB) ( - struct LogicalDecodingContext *ctx, - ReorderBufferTXN *txn, - Relation relation, - ReorderBufferChange *change -); +typedef void (*LogicalDecodeChangeCB) (struct LogicalDecodingContext *ctx, + ReorderBufferTXN *txn, + Relation relation, + ReorderBufferChange *change); The ctx and txn parameters have the same contents as for the begin_cb @@ -594,10 +585,8 @@ typedef void (*LogicalDecodeChangeCB) ( from origin_id is of interest to the output plugin. -typedef bool (*LogicalDecodeFilterByOriginCB) ( - struct LogicalDecodingContext *ctx, - RepNodeId origin_id -); +typedef bool (*LogicalDecodeFilterByOriginCB) (struct LogicalDecodingContext *ctx, + RepOriginId origin_id); The ctx parameter has the same contents as for the other callbacks. No information but the origin is @@ -623,15 +612,13 @@ typedef bool (*LogicalDecodeFilterByOriginCB) ( The optional message_cb callback is called whenever a logical decoding message has been decoded. -typedef void (*LogicalDecodeMessageCB) ( - struct LogicalDecodingContext *, - ReorderBufferTXN *txn, - XLogRecPtr message_lsn, - bool transactional, - const char *prefix, - Size message_size, - const char *message -); +typedef void (*LogicalDecodeMessageCB) (struct LogicalDecodingContext *ctx, + ReorderBufferTXN *txn, + XLogRecPtr message_lsn, + bool transactional, + const char *prefix, + Size message_size, + const char *message); The txn parameter contains meta information about the transaction, like the time stamp at which it has been committed and diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml index 077642878e..dc82465105 100644 --- a/doc/src/sgml/monitoring.sgml +++ b/doc/src/sgml/monitoring.sgml @@ -316,6 +316,14 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser + + pg_stat_progress_vacuumpg_stat_progress_vacuum + One row for each backend (including autovacuum worker processes) running + VACUUM, showing current progress. + See . + + + @@ -507,12 +515,6 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser yet included in pg_stat_user_functions). - - pg_stat_progress_vacuumpg_stat_progress_vacuum - One row for each backend (including autovacuum worker processes) running - VACUUM, showing current progress. - See . - diff --git a/doc/src/sgml/parallel.sgml b/doc/src/sgml/parallel.sgml index c80d42dbef..8ec5e05c9e 100644 --- a/doc/src/sgml/parallel.sgml +++ b/doc/src/sgml/parallel.sgml @@ -189,7 +189,7 @@ EXPLAIN SELECT * FROM pgbench_accounts WHERE filler LIKE '%x%'; Even when parallel query plan is generated for a particular query, there are several circumstances under which it will be impossible to execute that plan in parallel at execution time. If this occurs, the leader - will execute the portion of the plan between below the Gather + will execute the portion of the plan below the Gather node entirely by itself, almost as if the Gather node were not present. This will happen if any of the following conditions are met: @@ -218,6 +218,15 @@ EXPLAIN SELECT * FROM pgbench_accounts WHERE filler LIKE '%x%'; + + + A prepared statement is executed using a CREATE TABLE .. AS + EXECUTE .. statement. This construct converts what otherwise + would have been a read-only operation into a read-write operation, + making it ineligible for parallel query. + + + The transaction isolation level is serializable. This situation @@ -240,8 +249,8 @@ EXPLAIN SELECT * FROM pgbench_accounts WHERE filler LIKE '%x%'; copy of the output result set, so the query would not run any faster than normal but would produce incorrect results. Instead, the parallel portion of the plan must be what is known internally to the query - optimizer as a partial plan; that is, it must constructed - so that each process will which executes the plan will generate only a + optimizer as a partial plan; that is, it must be constructed + so that each process which executes the plan will generate only a subset of the output rows in such a way that each required output row is guaranteed to be generated by exactly one of the cooperating processes. @@ -266,44 +275,41 @@ EXPLAIN SELECT * FROM pgbench_accounts WHERE filler LIKE '%x%'; The driving table may be joined to one or more other tables using nested - loops or hash joins. The outer side of the join may be any kind of + loops or hash joins. The inner side of the join may be any kind of non-parallel plan that is otherwise supported by the planner provided that it is safe to run within a parallel worker. For example, it may be an - index scan which looks up a value based on a column taken from the inner - table. Each worker will execute the outer side of the plan in full, which - is why merge joins are not supported here. The outer side of a merge join - will often involve sorting the entire inner table; even if it involves an - index, it is unlikely to be productive to have multiple processes each - conduct a full index scan of the inner table. + index scan which looks up a value taken from the outer side of the join. + Each worker will execute the inner side of the join in full, which for + hash join means that an identical hash table is built in each worker + process. Parallel Aggregation - It is not possible to perform the aggregation portion of a query entirely - in parallel. For example, if a query involves selecting - COUNT(*), each worker could compute a total, but those totals - would need to combined in order to produce a final answer. If the query - involved a GROUP BY clause, a separate total would need to - be computed for each group. Even though aggregation can't be done entirely - in parallel, queries involving aggregation are often excellent candidates - for parallel query, because they typically read many rows but return only - a few rows to the client. Queries that return many rows to the client - are often limited by the speed at which the client can read the data, - in which case parallel query cannot help very much. - - - - PostgreSQL supports parallel aggregation by aggregating - twice. First, each process participating in the parallel portion of the - query performs an aggregation step, producing a partial result for each - group of which that process is aware. This is reflected in the plan as - a PartialAggregate node. Second, the partial results are + PostgreSQL supports parallel aggregation by aggregating in + two stages. First, each process participating in the parallel portion of + the query performs an aggregation step, producing a partial result for + each group of which that process is aware. This is reflected in the plan + as a Partial Aggregate node. Second, the partial results are transferred to the leader via the Gather node. Finally, the leader re-aggregates the results across all workers in order to produce the final result. This is reflected in the plan as a - FinalizeAggregate node. + Finalize Aggregate node. + + + + Because the Finalize Aggregate node runs on the leader + process, queries which produce a relatively large number of groups in + comparison to the number of input rows will appear less favorable to the + query planner. For example, in the worst-case scenario the number of + groups seen by the Finalize Aggregate node could be as many as + the number of input rows which were seen by all worker processes in the + Partial Aggregate stage. For such cases, there is clearly + going to be no performance benefit to using parallel aggregation. The + query planner takes this into account during the planning process and is + unlikely to choose parallel aggregate in this scenario. @@ -312,10 +318,11 @@ EXPLAIN SELECT * FROM pgbench_accounts WHERE filler LIKE '%x%'; have a combine function. If the aggregate has a transition state of type internal, it must have serialization and deserialization functions. See for more details. - Parallel aggregation is not supported for ordered set aggregates or when - the query involves GROUPING SETS. It can only be used when - all joins involved in the query are also part of the parallel portion - of the plan. + Parallel aggregation is not supported if any aggregate function call + contains DISTINCT or ORDER BY clause and is also + not supported for ordered set aggregates or when the query involves + GROUPING SETS. It can only be used when all joins involved in + the query are also part of the parallel portion of the plan. @@ -339,7 +346,7 @@ EXPLAIN SELECT * FROM pgbench_accounts WHERE filler LIKE '%x%'; When executing a parallel plan, you can use EXPLAIN (ANALYZE, - VERBOSE) will display per-worker statistics for each plan node. + VERBOSE) to display per-worker statistics for each plan node. This may be useful in determining whether the work is being evenly distributed between all plan nodes and more generally in understanding the performance characteristics of the plan. diff --git a/doc/src/sgml/perform.sgml b/doc/src/sgml/perform.sgml index 7bcbfa7611..a99abdda0c 100644 --- a/doc/src/sgml/perform.sgml +++ b/doc/src/sgml/perform.sgml @@ -1610,7 +1610,7 @@ SELECT * FROM x, y, a, b, c WHERE something AND somethingelse; Increase and ; this reduces the frequency + linkend="guc-checkpoint-timeout">; this reduces the frequency of checkpoints, but increases the storage requirements of /pg_xlog. diff --git a/doc/src/sgml/pgstattuple.sgml b/doc/src/sgml/pgstattuple.sgml index 61340bedbc..4a220992ce 100644 --- a/doc/src/sgml/pgstattuple.sgml +++ b/doc/src/sgml/pgstattuple.sgml @@ -109,6 +109,16 @@ free_percent | 1.95 + + + The table_len will always be greater than the sum + of the tuple_len, dead_tuple_len + and free_space. The difference is accounted for by + fixed page overhead, the per-page table of pointers to tuples, and + padding to ensure that tuples are correctly aligned. + + + pgstattuple acquires only a read lock on the relation. So the results do not reflect an instantaneous snapshot; diff --git a/doc/src/sgml/planstats.sgml b/doc/src/sgml/planstats.sgml index 1a482d37f4..c667899e28 100644 --- a/doc/src/sgml/planstats.sgml +++ b/doc/src/sgml/planstats.sgml @@ -448,4 +448,64 @@ rows = (outer_cardinality * inner_cardinality) * selectivity + + Planner Statistics and Security + + + Access to the table pg_statistic is restricted to + superusers, so that ordinary users cannot learn about the contents of the + tables of other users from it. Some selectivity estimation functions will + use a user-provided operator (either the operator appearing in the query or + a related operator) to analyze the stored statistics. For example, in order + to determine whether a stored most common value is applicable, the + selectivity estimator will have to run the appropriate = + operator to compare the constant in the query to the stored value. + Thus the data in pg_statistic is potentially + passed to user-defined operators. An appropriately crafted operator can + intentionally leak the passed operands (for example, by logging them + or writing them to a different table), or accidentally leak them by showing + their values in error messages, in either case possibly exposing data from + pg_statistic to a user who should not be able to + see it. + + + + In order to prevent this, the following applies to all built-in selectivity + estimation functions. When planning a query, in order to be able to use + stored statistics, the current user must either + have SELECT privilege on the table or the involved + columns, or the operator used must be LEAKPROOF (more + accurately, the function that the operator is based on). If not, then the + selectivity estimator will behave as if no statistics are available, and + the planner will proceed with default or fall-back assumptions. + + + + If a user does not have the required privilege on the table or columns, + then in many cases the query will ultimately receive a permission-denied + error, in which case this mechanism is invisible in practice. But if the + user is reading from a security-barrier view, then the planner might wish + to check the statistics of an underlying table that is otherwise + inaccessible to the user. In that case, the operator should be leak-proof + or the statistics will not be used. There is no direct feedback about + that, except that the plan might be suboptimal. If one suspects that this + is the case, one could try running the query as a more privileged user, + to see if a different plan results. + + + + This restriction applies only to cases where the planner would need to + execute a user-defined operator on one or more values + from pg_statistic. Thus the planner is permitted + to use generic statistical information, such as the fraction of null values + or the number of distinct values in a column, regardless of access + privileges. + + + + Selectivity estimation functions contained in third-party extensions that + potentially operate on statistics with user-defined operators should follow + the same security rules. Consult the PostgreSQL source code for guidance. + + diff --git a/doc/src/sgml/plpgsql.sgml b/doc/src/sgml/plpgsql.sgml index d3272e1209..eb1e786200 100644 --- a/doc/src/sgml/plpgsql.sgml +++ b/doc/src/sgml/plpgsql.sgml @@ -179,9 +179,27 @@ Structure of <application>PL/pgSQL</application> + + Functions written in PL/pgSQL are defined + to the server by executing commands. + Such a command would normally look like, say, + +CREATE FUNCTION somefunc(integer, text) RETURNS integer +AS 'function body text' +LANGUAGE plpgsql; + + The function body is simply a string literal so far as CREATE + FUNCTION is concerned. It is often helpful to use dollar quoting + (see ) to write the function + body, rather than the normal single quote syntax. Without dollar quoting, + any single quotes or backslashes in the function body must be escaped by + doubling them. Almost all the examples in this chapter use dollar-quoted + literals for their function bodies. + + PL/pgSQL is a block-structured language. - The complete text of a function definition must be a + The complete text of a function body must be a block. A block is defined as: diff --git a/doc/src/sgml/pltcl.sgml b/doc/src/sgml/pltcl.sgml index 805cc89dc9..52fc44940c 100644 --- a/doc/src/sgml/pltcl.sgml +++ b/doc/src/sgml/pltcl.sgml @@ -296,20 +296,22 @@ $$ LANGUAGE pltcl; If the command is a SELECT statement, the values of the result columns are placed into Tcl variables named after the columns. If the -array option is given, the column values are - instead stored into the named associative array, with the - column names used as array indexes. + instead stored into elements of the named associative array, with the + column names used as array indexes. In addition, the current row + number within the result (counting from zero) is stored into the array + element named .tupno, unless that name is + in use as a column name in the result. If the command is a SELECT statement and no loop-body script is given, then only the first row of results are stored into - Tcl variables; remaining rows, if any, are ignored. No storing occurs - if the - query returns no rows. (This case can be detected by checking the - result of spi_exec.) For example: + Tcl variables or array elements; remaining rows, if any, are ignored. + No storing occurs if the query returns no rows. (This case can be + detected by checking the result of spi_exec.) + For example: spi_exec "SELECT count(*) AS cnt FROM pg_proc" - will set the Tcl variable $cnt to the number of rows in the pg_proc system catalog. @@ -317,15 +319,15 @@ spi_exec "SELECT count(*) AS cnt FROM pg_proc" If the optional loop-body argument is given, it is a piece of Tcl script that is executed once for each row in the query result. (loop-body is ignored if the given - command is not a SELECT.) The values of the current row's columns - are stored into Tcl variables before each iteration. For example: - + command is not a SELECT.) + The values of the current row's columns + are stored into Tcl variables or array elements before each iteration. + For example: spi_exec -array C "SELECT * FROM pg_class" { elog DEBUG "have table $C(relname)" } - will print a log message for every row of pg_class. This feature works similarly to other Tcl looping constructs; in particular continue and break work in the @@ -667,21 +669,35 @@ SELECT 'doesn''t' AS ret The return value from a trigger procedure can be one of the strings - OK or SKIP, or a list as returned by the - array get Tcl command. If the return value is OK, - the operation (INSERT/UPDATE/DELETE) that fired the trigger will proceed + OK or SKIP, or a list of column name/value pairs. + If the return value is OK, + the operation (INSERT/UPDATE/DELETE) + that fired the trigger will proceed normally. SKIP tells the trigger manager to silently suppress the operation for this row. If a list is returned, it tells PL/Tcl to - return a modified row to the trigger manager. This is only meaningful + return a modified row to the trigger manager; the contents of the + modified row are specified by the column names and values in the list. + Any columns not mentioned in the list are set to null. + Returning a modified row is only meaningful for row-level BEFORE INSERT or UPDATE - triggers for which the modified row will be inserted instead of the one + triggers, for which the modified row will be inserted instead of the one given in $NEW; or for row-level INSTEAD OF INSERT or UPDATE triggers where the returned row - is used to support INSERT RETURNING and - UPDATE RETURNING commands. The return value is ignored for - other types of triggers. + is used as the source data for INSERT RETURNING or + UPDATE RETURNING clauses. + In row-level BEFORE DELETE or INSTEAD + OF DELETE triggers, returning a modified row has the same + effect as returning OK, that is the operation proceeds. + The trigger return value is ignored for all other types of triggers. + + + The result list can be made from an array representation of the + modified tuple with the array get Tcl command. + + + Here's a little example trigger procedure that forces an integer value in a table to keep track of the number of updates that are performed on the diff --git a/doc/src/sgml/postgres-fdw.sgml b/doc/src/sgml/postgres-fdw.sgml index b31f3731e4..a6c56d1f63 100644 --- a/doc/src/sgml/postgres-fdw.sgml +++ b/doc/src/sgml/postgres-fdw.sgml @@ -488,8 +488,10 @@ postgres_fdw attempts to optimize the query execution by sending the whole query to the remote server if there are no query WHERE clauses that cannot be sent to the remote server, - no local joins for the query, and no row-level local BEFORE or - AFTER triggers on the target table. In UPDATE, + no local joins for the query, no row-level local BEFORE or + AFTER triggers on the target table, and no + CHECK OPTION constraints from parent views. + In UPDATE, expressions to assign to target columns must use only built-in data types, IMMUTABLE operators, or IMMUTABLE functions, to reduce the risk of misexecution of the query. diff --git a/doc/src/sgml/problems.sgml b/doc/src/sgml/problems.sgml index 3f79c6ef90..6bf74bb399 100644 --- a/doc/src/sgml/problems.sgml +++ b/doc/src/sgml/problems.sgml @@ -304,7 +304,7 @@ Another method is to fill in the bug report web-form available at the project's - web site. + web site. Entering a bug report this way causes it to be mailed to the pgsql-bugs@postgresql.org mailing list. diff --git a/doc/src/sgml/queries.sgml b/doc/src/sgml/queries.sgml index 718262f1aa..b851d134b7 100644 --- a/doc/src/sgml/queries.sgml +++ b/doc/src/sgml/queries.sgml @@ -393,8 +393,8 @@ FROM table_reference , table_r consisting of all column names that appear in both input tables. As with USING, these columns appear only once in the output table. If there are no common - column names, NATURAL behaves like - CROSS JOIN. + column names, NATURAL JOIN behaves like + JOIN ... ON TRUE, producing a cross-product join. @@ -1457,7 +1457,8 @@ SELECT tbl1.a, tbl2.a, tbl1.b FROM ... SELECT tbl1.*, tbl2.a FROM ... - (See also .) + See for more about + the table_name.* notation. @@ -2262,7 +2263,8 @@ SELECT * FROM moved_rows; Data-modifying statements in WITH usually have - RETURNING clauses, as seen in the example above. + RETURNING clauses (see ), + as shown in the example above. It is the output of the RETURNING clause, not the target table of the data-modifying statement, that forms the temporary table that can be referred to by the rest of the query. If a diff --git a/doc/src/sgml/ref/alter_materialized_view.sgml b/doc/src/sgml/ref/alter_materialized_view.sgml index b5c44bfabf..b88f5ac00f 100644 --- a/doc/src/sgml/ref/alter_materialized_view.sgml +++ b/doc/src/sgml/ref/alter_materialized_view.sgml @@ -45,7 +45,6 @@ ALTER MATERIALIZED VIEW ALL IN TABLESPACE namestorage_parameter = value [, ... ] ) RESET ( storage_parameter [, ... ] ) OWNER TO { new_owner | CURRENT_USER | SESSION_USER } - SET TABLESPACE new_tablespace diff --git a/doc/src/sgml/ref/alter_role.sgml b/doc/src/sgml/ref/alter_role.sgml index da36ad9696..ec83c4a18a 100644 --- a/doc/src/sgml/ref/alter_role.sgml +++ b/doc/src/sgml/ref/alter_role.sgml @@ -45,7 +45,7 @@ ALTER ROLE { role_specification | A where role_specification can be: - [ GROUP ] role_name + role_name | CURRENT_USER | SESSION_USER diff --git a/doc/src/sgml/ref/alter_table.sgml b/doc/src/sgml/ref/alter_table.sgml index 6f51cbc896..595ae32f40 100644 --- a/doc/src/sgml/ref/alter_table.sgml +++ b/doc/src/sgml/ref/alter_table.sgml @@ -708,10 +708,10 @@ ALTER TABLE ALL IN TABLESPACE name - All the actions except RENAME, - SET TABLESPACE and SET SCHEMA - can be combined into - a list of multiple alterations to apply in parallel. For example, it + All the forms of ALTER TABLE that act on a single table, except + RENAME, and SET SCHEMA + can be combined into a list of multiple alterations to applied together. + For example, it is possible to add several columns and/or alter the type of several columns in a single command. This is particularly useful with large tables, since only one pass over the table need be made. diff --git a/doc/src/sgml/ref/alter_tablespace.sgml b/doc/src/sgml/ref/alter_tablespace.sgml index d9b2a133b1..2f41105001 100644 --- a/doc/src/sgml/ref/alter_tablespace.sgml +++ b/doc/src/sgml/ref/alter_tablespace.sgml @@ -83,14 +83,15 @@ ALTER TABLESPACE name RESET ( , - ). This may be useful if one - tablespace is located on a disk which is faster or slower than the + available parameters are seq_page_cost, + random_page_cost and effective_io_concurrency. + Setting either value for a particular tablespace will override the + planner's usual estimate of the cost of reading pages from tables in + that tablespace, as established by the configuration parameters of the + same name (see , + , + ). This may be useful if + one tablespace is located on a disk which is faster or slower than the remainder of the I/O subsystem. diff --git a/doc/src/sgml/ref/alter_user.sgml b/doc/src/sgml/ref/alter_user.sgml index 5962a8e166..70155131cb 100644 --- a/doc/src/sgml/ref/alter_user.sgml +++ b/doc/src/sgml/ref/alter_user.sgml @@ -38,14 +38,14 @@ ALTER USER role_specification [ WIT ALTER USER name RENAME TO new_name -ALTER USER role_specification SET configuration_parameter { TO | = } { value | DEFAULT } -ALTER USER role_specification SET configuration_parameter FROM CURRENT -ALTER USER role_specification RESET configuration_parameter -ALTER USER role_specification RESET ALL +ALTER USER { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter { TO | = } { value | DEFAULT } +ALTER USER { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter FROM CURRENT +ALTER USER { role_specification | ALL } [ IN DATABASE database_name ] RESET configuration_parameter +ALTER USER { role_specification | ALL } [ IN DATABASE database_name ] RESET ALL where role_specification can be: - [ GROUP ] role_name + role_name | CURRENT_USER | SESSION_USER diff --git a/doc/src/sgml/ref/copy.sgml b/doc/src/sgml/ref/copy.sgml index 07e2f45196..8ad547272f 100644 --- a/doc/src/sgml/ref/copy.sgml +++ b/doc/src/sgml/ref/copy.sgml @@ -418,6 +418,15 @@ COPY count to have column privileges on the column(s) listed in the command. + + If row-level security is enabled for the table, the relevant + SELECT policies will apply to COPY + table TO statements. + Currently, COPY FROM is not supported for tables + with row-level security. Use equivalent INSERT + statements instead. + + Files named in a COPY command are read or written directly by the server, not by the client application. Therefore, diff --git a/doc/src/sgml/ref/create_database.sgml b/doc/src/sgml/ref/create_database.sgml index cf33746c1e..cf0d53b301 100644 --- a/doc/src/sgml/ref/create_database.sgml +++ b/doc/src/sgml/ref/create_database.sgml @@ -258,7 +258,8 @@ CREATE DATABASE name The CONNECTION LIMIT option is only enforced approximately; if two new sessions start at about the same time when just one connection slot remains for the database, it is possible that - both will fail. Also, the limit is not enforced against superusers. + both will fail. Also, the limit is not enforced against superusers or + background worker processes. diff --git a/doc/src/sgml/ref/create_role.sgml b/doc/src/sgml/ref/create_role.sgml index 38cd4c8369..64209d714a 100644 --- a/doc/src/sgml/ref/create_role.sgml +++ b/doc/src/sgml/ref/create_role.sgml @@ -167,8 +167,11 @@ CREATE ROLE name [ [ WITH ] NOREPLICATION - These clauses determine whether a role is allowed to initiate - streaming replication or put the system in and out of backup mode. + These clauses determine whether a role is a replication role. A role + must have this attribute (or be a superuser) in order to be able to + connect to the server in replication mode (physical or logical + replication) and in order to be able to create or drop replication + slots. A role having the REPLICATION attribute is a very highly privileged role, and should only be used on roles actually used for replication. If not specified, @@ -198,7 +201,10 @@ CREATE ROLE name [ [ WITH ] If role can log in, this specifies how many concurrent connections - the role can make. -1 (the default) means no limit. + the role can make. -1 (the default) means no limit. Note that only + normal connections are counted towards this limit. Neither prepared + transactions nor background worker connections are counted towards + this limit. @@ -235,12 +241,6 @@ CREATE ROLE name [ [ WITH ] - - - Note that older clients might lack support for the MD5 - authentication mechanism that is needed to work with passwords - that are stored encrypted. - diff --git a/doc/src/sgml/ref/create_schema.sgml b/doc/src/sgml/ref/create_schema.sgml index 554a4483c5..5d29cd768a 100644 --- a/doc/src/sgml/ref/create_schema.sgml +++ b/doc/src/sgml/ref/create_schema.sgml @@ -28,7 +28,7 @@ CREATE SCHEMA IF NOT EXISTS AUTHORIZATION role_sp where role_specification can be: - [ GROUP ] user_name + user_name | CURRENT_USER | SESSION_USER diff --git a/doc/src/sgml/ref/ecpg-ref.sgml b/doc/src/sgml/ref/ecpg-ref.sgml index 029bd4a4d2..8bfb47c4d7 100644 --- a/doc/src/sgml/ref/ecpg-ref.sgml +++ b/doc/src/sgml/ref/ecpg-ref.sgml @@ -42,11 +42,9 @@ PostgreSQL documentation ecpg will convert each input file given on the command line to the corresponding C output file. Input files - preferably have the extension .pgc, in which - case the extension will be replaced by .c to - determine the output file name. If the extension of the input file - is not .pgc, then the output file name is - computed by appending .c to the full file name. + preferably have the extension .pgc. + The extension will be replaced by .c to + determine the output file name. The output file name can also be overridden using the option. diff --git a/doc/src/sgml/ref/pg_basebackup.sgml b/doc/src/sgml/ref/pg_basebackup.sgml index 03615da480..134b298236 100644 --- a/doc/src/sgml/ref/pg_basebackup.sgml +++ b/doc/src/sgml/ref/pg_basebackup.sgml @@ -88,7 +88,7 @@ PostgreSQL documentation There is no guarantee that all WAL files required for the backup are archived at the end of backup. If you are planning to use the backup for an archive recovery and want to ensure that all required files are available at that moment, - you need to include them into the backup by using -x option. + you need to include them into the backup by using the -x option. @@ -382,7 +382,7 @@ PostgreSQL documentation - Sets checkpoint mode to fast or spread (default) (see ). + Sets checkpoint mode to fast (immediate) or spread (default) (see ). @@ -589,6 +589,14 @@ PostgreSQL documentation Notes + + At the beginning of the backup, a checkpoint needs to be written on the + server the backup is taken from. Especially if the option + --checkpoint=fast is not used, this can take some time + during which pg_basebackup will be appear + to be idle. + + The backup will include all files in the data directory and tablespaces, including the configuration files and any additional files placed in the diff --git a/doc/src/sgml/ref/pg_dump.sgml b/doc/src/sgml/ref/pg_dump.sgml index be1b684082..038a376f4a 100644 --- a/doc/src/sgml/ref/pg_dump.sgml +++ b/doc/src/sgml/ref/pg_dump.sgml @@ -138,8 +138,11 @@ PostgreSQL documentation Include large objects in the dump. This is the default behavior except when @@ -699,6 +702,11 @@ PostgreSQL documentation to dump the parts of the contents of the table that they have access to. + + Note that if you use this option currently, you probably also want + the dump be in INSERT format, as the + COPY FROM during restore does not support row security. + diff --git a/doc/src/sgml/ref/pg_resetxlog.sgml b/doc/src/sgml/ref/pg_resetxlog.sgml index fd9d0be6f4..9758fa652a 100644 --- a/doc/src/sgml/ref/pg_resetxlog.sgml +++ b/doc/src/sgml/ref/pg_resetxlog.sgml @@ -281,6 +281,11 @@ PostgreSQL documentation pg_resetxlog to run. But before you do so, make doubly certain that there is no server process still alive. + + + pg_resetxlog works only with servers of the same + major version. + diff --git a/doc/src/sgml/ref/pg_restore.sgml b/doc/src/sgml/ref/pg_restore.sgml index c9069193af..ef5bab40d1 100644 --- a/doc/src/sgml/ref/pg_restore.sgml +++ b/doc/src/sgml/ref/pg_restore.sgml @@ -527,7 +527,7 @@ Note that this option currently also requires the dump be in INSERT - format, as COPY TO does not support row security. + format, as COPY FROM does not support row security. diff --git a/doc/src/sgml/ref/pg_xlogdump.sgml b/doc/src/sgml/ref/pg_xlogdump.sgml index 177caab00d..16ca443423 100644 --- a/doc/src/sgml/ref/pg_xlogdump.sgml +++ b/doc/src/sgml/ref/pg_xlogdump.sgml @@ -117,9 +117,12 @@ PostgreSQL documentation - Directory in which to find log segment files. The default is to search - for them in the pg_xlog subdirectory of the current - directory. + Specifies a directory to search for log segment files or a + directory with a pg_xlog subdirectory that + contains such files. The default is to search in the current + directory, the pg_xlog subdirectory of the + current directory, and the pg_xlog subdirectory + of PGDATA. diff --git a/doc/src/sgml/ref/pgbench.sgml b/doc/src/sgml/ref/pgbench.sgml index 285608d508..2c9f483932 100644 --- a/doc/src/sgml/ref/pgbench.sgml +++ b/doc/src/sgml/ref/pgbench.sgml @@ -1037,7 +1037,7 @@ f(x) = exp(-parameter * (x - min) / (max - min + 1)) / (1 - exp(-parameter)) Then value i between min and max inclusive is drawn with probability: - f(x) - f(x + 1). + f(i) - f(i + 1). diff --git a/doc/src/sgml/ref/pgupgrade.sgml b/doc/src/sgml/ref/pgupgrade.sgml index 96851933cc..6d5b76abd9 100644 --- a/doc/src/sgml/ref/pgupgrade.sgml +++ b/doc/src/sgml/ref/pgupgrade.sgml @@ -123,7 +123,7 @@ use hard links instead of copying files to the new - cluster (use junction points on Windows) + cluster @@ -273,7 +273,8 @@ make prefix=/usr/local/pgsql.new install into the new cluster, e.g. pgcrypto.so, whether they are from contrib or some other source. Do not install the schema definitions, e.g. - pgcrypto.sql, because these will be upgraded from the old cluster. + CREATE EXTENSION pgcrypto, because these will be upgraded + from the old cluster. Also, any custom full text search files (dictionary, synonym, thesaurus, stop words) must also be copied to the new cluster. @@ -316,15 +317,18 @@ NET STOP postgresql-9.0 - Verify standby servers + Prepare for standby server upgrades - If you are upgrading Streaming Replication and Log-Shipping standby - servers, verify that the old standby servers are caught up by running - pg_controldata against the old primary and standby - clusters. Verify that the Latest checkpoint location - values match in all clusters. (There will be a mismatch if old - standby servers were shut down before the old primary.) + If you are upgrading standby servers using methods outlined in section , verify that the old standby + servers are caught up by running pg_controldata + against the old primary and standby clusters. Verify that the + Latest checkpoint location values match in all clusters. + (There will be a mismatch if old standby servers were shut down + before the old primary.) Also, change wal_level to + replica in the postgresql.conf file on the + new primary cluster. @@ -409,16 +413,24 @@ pg_upgrade.exe - + Upgrade Streaming Replication and Log-Shipping standby servers - If you have Streaming Replication (see ) or Log-Shipping (see ) standby servers, follow these steps to - upgrade them. You will not be running pg_upgrade - on the standby servers, but rather rsync. Do not - start any servers yet. + linkend="warm-standby">) standby servers, you can follow these steps to + quickly upgrade them. You will not be running pg_upgrade on + the standby servers, but rather rsync on the primary. + Do not start any servers yet. + + + + If you did not use link mode, do not have or do not + want to use rsync, or want an easier solution, skip + the instructions in this section and simply recreate the standby + servers once pg_upgrade completes and the new primary + is running. @@ -438,7 +450,7 @@ pg_upgrade.exe Make sure the new standby data directories do not exist or are empty. If initdb was run, delete - the standby server data directories. + the standby servers' new data directories. @@ -447,7 +459,7 @@ pg_upgrade.exe Install the same custom shared object files on the new standbys - that you installed in the new master cluster. + that you installed in the new primary cluster. @@ -464,19 +476,10 @@ pg_upgrade.exe Save configuration files - Save any configuration files from the standbys you need to keep, - e.g. postgresql.conf, recovery.conf, - as these will be overwritten or removed in the next step. - - - - - Start and stop the new master cluster - - - In the new master cluster, change wal_level to - replica in the postgresql.conf file - and then start and stop the cluster. + Save any configuration files from the old standbys' data + directories you need to keep, e.g. postgresql.conf, + recovery.conf, because these will be overwritten or + removed in the next step. @@ -484,32 +487,62 @@ pg_upgrade.exe Run <application>rsync</> - From a directory that is above the old and new database cluster - directories, run this for each slave: + When using link mode, standby servers can be quickly upgraded using + rsync. To accomplish this, from a directory on + the primary server that is above the old and new database cluster + directories, run this on the primary for each standby + server: -rsync --archive --delete --hard-links --size-only old_pgdata new_pgdata remote_dir +rsync --archive --delete --hard-links --size-only --no-inc-recursive old_pgdata new_pgdata remote_dir where + + + What this does is to record the links created by + pg_upgrade's link mode that connect files in the + old and new clusters on the primary server. It then finds matching + files in the standby's old cluster and creates links for them in the + standby's new cluster. Files that were not linked on the primary + are copied from the primary to the standby. (They are usually + small.) This provides rapid standby upgrades. Unfortunately, + rsync needlessly copies files associated with + temporary and unlogged tables because these files don't normally + exist on standby servers. If you have tablespaces, you will need to run a similar - rsync command for each tablespace directory. If you - have relocated pg_xlog outside the data directories, - rsync must be run on those directories too. + rsync command for each tablespace directory, e.g.: + + +rsync --archive --delete --hard-links --size-only --no-inc-recursive /vol1/pg_tblsp/PG_9.5_201510051 \ + /vol1/pg_tblsp/PG_9.6_201608131 standby.example.com:/vol1/pg_tblsp + + + If you have relocated pg_xlog outside the data + directories, rsync must be run on those directories + too. @@ -519,8 +552,8 @@ rsync --archive --delete --hard-links --size-only old_pgdata new_pgdata remote_d Configure the servers for log shipping. (You do not need to run pg_start_backup() and pg_stop_backup() - or take a file system backup as the slaves are still synchronized - with the master.) + or take a file system backup as the standbys are still synchronized + with the primary.) diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml index 8a66ce7983..d74d025bee 100644 --- a/doc/src/sgml/ref/psql-ref.sgml +++ b/doc/src/sgml/ref/psql-ref.sgml @@ -1071,7 +1071,8 @@ testdb=> - For each relation (table, view, index, sequence, or foreign table) + For each relation (table, view, materialized view, index, sequence, + or foreign table) or composite type matching the pattern, show all columns, their types, the tablespace (if not the default) and any @@ -1086,8 +1087,8 @@ testdb=> For some types of relation, \d shows additional information - for each column: column values for sequences, indexed expression for - indexes and foreign data wrapper options for foreign tables. + for each column: column values for sequences, indexed expressions for + indexes, and foreign data wrapper options for foreign tables. @@ -1109,8 +1110,9 @@ testdb=> If \d is used without a pattern argument, it is - equivalent to \dtvsE which will show a list of - all visible tables, views, sequences and foreign tables. + equivalent to \dtvmsE which will show a list of + all visible tables, views, materialized views, sequences and + foreign tables. This is purely a convenience measure. @@ -3798,8 +3800,9 @@ $endif If the query results do not fit on the screen, they are piped through this command. Typical values are more or less. The default - is platform-dependent. The use of the pager can be disabled by - using the \pset command. + is platform-dependent. Use of the pager can be disabled by setting + PAGER to empty, or by using pager-related options of + the \pset command. @@ -4170,7 +4173,7 @@ second | four with the \crosstabview command: testdb=> SELECT first, second, first > 2 AS gt2 FROM my_table; - first | second | ge2 + first | second | gt2 -------+--------+----- 1 | one | f 2 | two | f diff --git a/doc/src/sgml/ref/select.sgml b/doc/src/sgml/ref/select.sgml index 211e4c320c..57f11e66fb 100644 --- a/doc/src/sgml/ref/select.sgml +++ b/doc/src/sgml/ref/select.sgml @@ -603,9 +603,12 @@ TABLE [ ONLY ] table_name [ * ] NATURAL - NATURAL is shorthand for a + + NATURAL is shorthand for a USING list that mentions all columns in the two - tables that have the same names. + tables that have matching names. If there are no common + column names, NATURAL is equivalent + to ON TRUE. diff --git a/doc/src/sgml/ref/update.sgml b/doc/src/sgml/ref/update.sgml index c50434f85f..e80cf9cb78 100644 --- a/doc/src/sgml/ref/update.sgml +++ b/doc/src/sgml/ref/update.sgml @@ -422,9 +422,9 @@ UPDATE films SET kind = 'Dramatic' WHERE CURRENT OF c_films; According to the standard, the source value for a parenthesized sub-list of column names can be any row-valued expression yielding the correct number of columns. PostgreSQL only allows the source - value to be a parenthesized list of expressions (a row constructor) or a + value to be a parenthesized list of expressions or a sub-SELECT. An individual column's updated value can be - specified as DEFAULT in the row-constructor case, but not + specified as DEFAULT in the list-of-expressions case, but not inside a sub-SELECT. diff --git a/doc/src/sgml/ref/vacuum.sgml b/doc/src/sgml/ref/vacuum.sgml index dee1c5bad3..9831099817 100644 --- a/doc/src/sgml/ref/vacuum.sgml +++ b/doc/src/sgml/ref/vacuum.sgml @@ -244,39 +244,11 @@ VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ Examples - The following is an example from running VACUUM on a - table in the regression database: + To clean a single table onek, analyze it for + the optimizer and print a detailed vacuum activity report: -regression=# VACUUM (VERBOSE, ANALYZE) onek; -INFO: vacuuming "public.onek" -INFO: index "onek_unique1" now contains 1000 tuples in 14 pages -DETAIL: 3000 index tuples were removed. -0 index pages have been deleted, 0 are currently reusable. -CPU 0.01s/0.08u sec elapsed 0.18 sec. -INFO: index "onek_unique2" now contains 1000 tuples in 16 pages -DETAIL: 3000 index tuples were removed. -0 index pages have been deleted, 0 are currently reusable. -CPU 0.00s/0.07u sec elapsed 0.23 sec. -INFO: index "onek_hundred" now contains 1000 tuples in 13 pages -DETAIL: 3000 index tuples were removed. -0 index pages have been deleted, 0 are currently reusable. -CPU 0.01s/0.08u sec elapsed 0.17 sec. -INFO: index "onek_stringu1" now contains 1000 tuples in 48 pages -DETAIL: 3000 index tuples were removed. -0 index pages have been deleted, 0 are currently reusable. -CPU 0.01s/0.09u sec elapsed 0.59 sec. -INFO: "onek": removed 3000 tuples in 108 pages -DETAIL: CPU 0.01s/0.06u sec elapsed 0.07 sec. -INFO: "onek": found 3000 removable, 1000 nonremovable tuples in 143 pages -DETAIL: 0 dead tuples cannot be removed yet. -There were 0 unused item pointers. -Skipped 0 pages due to buffer pins. -0 pages are entirely empty. -CPU 0.07s/0.39u sec elapsed 1.56 sec. -INFO: analyzing "public.onek" -INFO: "onek": 36 pages, 1000 rows sampled, 1000 estimated total rows -VACUUM +VACUUM (VERBOSE, ANALYZE) onek; diff --git a/doc/src/sgml/release-7.4.sgml b/doc/src/sgml/release-7.4.sgml index 5a4c52d4c2..1b5796c958 100644 --- a/doc/src/sgml/release-7.4.sgml +++ b/doc/src/sgml/release-7.4.sgml @@ -4,10 +4,10 @@ Release 7.4.30 - - Release Date - 2010-10-04 - + + Release date: + 2010-10-04 + This release contains a variety of fixes from 7.4.29. @@ -138,10 +138,10 @@ Release 7.4.29 - - Release Date - 2010-05-17 - + + Release date: + 2010-05-17 + This release contains a variety of fixes from 7.4.28. @@ -282,10 +282,10 @@ Release 7.4.28 - - Release Date - 2010-03-15 - + + Release date: + 2010-03-15 + This release contains a variety of fixes from 7.4.27. @@ -401,10 +401,10 @@ Release 7.4.27 - - Release Date - 2009-12-14 - + + Release date: + 2009-12-14 + This release contains a variety of fixes from 7.4.26. @@ -521,10 +521,10 @@ Release 7.4.26 - - Release Date - 2009-09-09 - + + Release date: + 2009-09-09 + This release contains a variety of fixes from 7.4.25. @@ -651,10 +651,10 @@ Release 7.4.25 - - Release Date - 2009-03-16 - + + Release date: + 2009-03-16 + This release contains a variety of fixes from 7.4.24. @@ -731,10 +731,10 @@ Release 7.4.24 - - Release Date - 2009-02-02 - + + Release date: + 2009-02-02 + This release contains a variety of fixes from 7.4.23. @@ -817,10 +817,10 @@ Release 7.4.23 - - Release Date - 2008-11-03 - + + Release date: + 2008-11-03 + This release contains a variety of fixes from 7.4.22. @@ -901,10 +901,10 @@ Release 7.4.22 - - Release Date - 2008-09-22 - + + Release date: + 2008-09-22 + This release contains a variety of fixes from 7.4.21. @@ -977,10 +977,10 @@ Release 7.4.21 - - Release Date - 2008-06-12 - + + Release date: + 2008-06-12 + This release contains one serious bug fix over 7.4.20. @@ -1031,10 +1031,10 @@ Release 7.4.20 - - Release Date - never released - + + Release date: + never released + This release contains a variety of fixes from 7.4.19. @@ -1176,10 +1176,10 @@ Release 7.4.19 - - Release Date - 2008-01-07 - + + Release date: + 2008-01-07 + This release contains a variety of fixes from 7.4.18, @@ -1330,10 +1330,10 @@ Release 7.4.18 - - Release Date - 2007-09-17 - + + Release date: + 2007-09-17 + This release contains fixes from 7.4.17. @@ -1406,10 +1406,10 @@ Release 7.4.17 - - Release Date - 2007-04-23 - + + Release date: + 2007-04-23 + This release contains fixes from 7.4.16, @@ -1477,10 +1477,10 @@ Release 7.4.16 - - Release Date - 2007-02-05 - + + Release date: + 2007-02-05 + This release contains a variety of fixes from 7.4.15, including @@ -1548,10 +1548,10 @@ Release 7.4.15 - - Release Date - 2007-01-08 - + + Release date: + 2007-01-08 + This release contains a variety of fixes from 7.4.14. @@ -1637,10 +1637,10 @@ Release 7.4.14 - - Release Date - 2006-10-16 - + + Release date: + 2006-10-16 + This release contains a variety of fixes from 7.4.13. @@ -1684,10 +1684,10 @@ ANYARRAY Release 7.4.13 - - Release Date - 2006-05-23 - + + Release date: + 2006-05-23 + This release contains a variety of fixes from 7.4.12, @@ -1791,10 +1791,10 @@ Fuhr) Release 7.4.12 - - Release Date - 2006-02-14 - + + Release date: + 2006-02-14 + This release contains a variety of fixes from 7.4.11. @@ -1854,10 +1854,10 @@ and isinf during configure (Tom) Release 7.4.11 - - Release Date - 2006-01-09 - + + Release date: + 2006-01-09 + This release contains a variety of fixes from 7.4.10. @@ -1921,10 +1921,10 @@ what's actually returned by the query (Joe) Release 7.4.10 - - Release Date - 2005-12-12 - + + Release date: + 2005-12-12 + This release contains a variety of fixes from 7.4.9. @@ -1974,10 +1974,10 @@ table has been dropped Release 7.4.9 - - Release Date - 2005-10-04 - + + Release date: + 2005-10-04 + This release contains a variety of fixes from 7.4.8. @@ -2043,10 +2043,10 @@ code Release 7.4.8 - - Release Date - 2005-05-09 - + + Release date: + 2005-05-09 + This release contains a variety of fixes from 7.4.7, including several @@ -2227,10 +2227,10 @@ holder of the lock released it within a very narrow window. Release 7.4.7 - - Release Date - 2005-01-31 - + + Release date: + 2005-01-31 + This release contains a variety of fixes from 7.4.6, including several @@ -2287,10 +2287,10 @@ GMT Release 7.4.6 - - Release Date - 2004-10-22 - + + Release date: + 2004-10-22 + This release contains a variety of fixes from 7.4.5. @@ -2359,10 +2359,10 @@ ECPG prepare statement Release 7.4.5 - - Release Date - 2004-08-18 - + + Release date: + 2004-08-18 + This release contains one serious bug fix over 7.4.4. @@ -2397,10 +2397,10 @@ still worth a re-release. The bug does not exist in pre-7.4 releases. Release 7.4.4 - - Release Date - 2004-08-16 - + + Release date: + 2004-08-16 + This release contains a variety of fixes from 7.4.3. @@ -2449,10 +2449,10 @@ aggregate plan Release 7.4.3 - - Release Date - 2004-06-14 - + + Release date: + 2004-06-14 + This release contains a variety of fixes from 7.4.2. @@ -2507,10 +2507,10 @@ names from outer query levels. Release 7.4.2 - - Release Date - 2004-03-08 - + + Release date: + 2004-03-08 + This release contains a variety of fixes from 7.4.1. @@ -2650,10 +2650,10 @@ inconveniences associated with the i/I problem. Release 7.4.1 - - Release Date - 2003-12-22 - + + Release date: + 2003-12-22 + This release contains a variety of fixes from 7.4. @@ -2764,10 +2764,10 @@ DROP SCHEMA information_schema CASCADE; Release 7.4 - - Release Date - 2003-11-17 - + + Release date: + 2003-11-17 + Overview diff --git a/doc/src/sgml/release-8.0.sgml b/doc/src/sgml/release-8.0.sgml index 299c34e0f0..4f04024d2e 100644 --- a/doc/src/sgml/release-8.0.sgml +++ b/doc/src/sgml/release-8.0.sgml @@ -4,10 +4,10 @@ Release 8.0.26 - - Release Date - 2010-10-04 - + + Release date: + 2010-10-04 + This release contains a variety of fixes from 8.0.25. @@ -208,10 +208,10 @@ Release 8.0.25 - - Release Date - 2010-05-17 - + + Release date: + 2010-05-17 + This release contains a variety of fixes from 8.0.24. @@ -368,10 +368,10 @@ Release 8.0.24 - - Release Date - 2010-03-15 - + + Release date: + 2010-03-15 + This release contains a variety of fixes from 8.0.23. @@ -545,10 +545,10 @@ Release 8.0.23 - - Release Date - 2009-12-14 - + + Release date: + 2009-12-14 + This release contains a variety of fixes from 8.0.22. @@ -700,10 +700,10 @@ Release 8.0.22 - - Release Date - 2009-09-09 - + + Release date: + 2009-09-09 + This release contains a variety of fixes from 8.0.21. @@ -864,10 +864,10 @@ Release 8.0.21 - - Release Date - 2009-03-16 - + + Release date: + 2009-03-16 + This release contains a variety of fixes from 8.0.20. @@ -944,10 +944,10 @@ Release 8.0.20 - - Release Date - 2009-02-02 - + + Release date: + 2009-02-02 + This release contains a variety of fixes from 8.0.19. @@ -1030,10 +1030,10 @@ Release 8.0.19 - - Release Date - 2008-11-03 - + + Release date: + 2008-11-03 + This release contains a variety of fixes from 8.0.18. @@ -1141,10 +1141,10 @@ Release 8.0.18 - - Release Date - 2008-09-22 - + + Release date: + 2008-09-22 + This release contains a variety of fixes from 8.0.17. @@ -1275,10 +1275,10 @@ Release 8.0.17 - - Release Date - 2008-06-12 - + + Release date: + 2008-06-12 + This release contains one serious bug fix over 8.0.16. @@ -1329,10 +1329,10 @@ Release 8.0.16 - - Release Date - never released - + + Release date: + never released + This release contains a variety of fixes from 8.0.15. @@ -1566,10 +1566,10 @@ Release 8.0.15 - - Release Date - 2008-01-07 - + + Release date: + 2008-01-07 + This release contains a variety of fixes from 8.0.14, @@ -1782,10 +1782,10 @@ Release 8.0.14 - - Release Date - 2007-09-17 - + + Release date: + 2007-09-17 + This release contains a variety of fixes from 8.0.13. @@ -1890,10 +1890,10 @@ Release 8.0.13 - - Release Date - 2007-04-23 - + + Release date: + 2007-04-23 + This release contains a variety of fixes from 8.0.12, @@ -1967,10 +1967,10 @@ Release 8.0.12 - - Release Date - 2007-02-07 - + + Release date: + 2007-02-07 + This release contains one fix from 8.0.11. @@ -2009,10 +2009,10 @@ Release 8.0.11 - - Release Date - 2007-02-05 - + + Release date: + 2007-02-05 + This release contains a variety of fixes from 8.0.10, including @@ -2080,10 +2080,10 @@ Release 8.0.10 - - Release Date - 2007-01-08 - + + Release date: + 2007-01-08 + This release contains a variety of fixes from 8.0.9. @@ -2199,10 +2199,10 @@ Release 8.0.9 - - Release Date - 2006-10-16 - + + Release date: + 2006-10-16 + This release contains a variety of fixes from 8.0.8. @@ -2255,10 +2255,10 @@ Wieland) Release 8.0.8 - - Release Date - 2006-05-23 - + + Release date: + 2006-05-23 + This release contains a variety of fixes from 8.0.7, @@ -2369,10 +2369,10 @@ Fuhr) Release 8.0.7 - - Release Date - 2006-02-14 - + + Release date: + 2006-02-14 + This release contains a variety of fixes from 8.0.6. @@ -2468,10 +2468,10 @@ and isinf during configure (Tom) Release 8.0.6 - - Release Date - 2006-01-09 - + + Release date: + 2006-01-09 + This release contains a variety of fixes from 8.0.5. @@ -2553,10 +2553,10 @@ what's actually returned by the query (Joe) Release 8.0.5 - - Release Date - 2005-12-12 - + + Release date: + 2005-12-12 + This release contains a variety of fixes from 8.0.4. @@ -2635,10 +2635,10 @@ to subquery results Release 8.0.4 - - Release Date - 2005-10-04 - + + Release date: + 2005-10-04 + This release contains a variety of fixes from 8.0.3. @@ -2732,10 +2732,10 @@ code Release 8.0.3 - - Release Date - 2005-05-09 - + + Release date: + 2005-05-09 + This release contains a variety of fixes from 8.0.2, including several @@ -2852,10 +2852,10 @@ data types Release 8.0.2 - - Release Date - 2005-04-07 - + + Release date: + 2005-04-07 + This release contains a variety of fixes from 8.0.1. @@ -3009,10 +3009,10 @@ addresses in INET data types (Tom) Release 8.0.1 - - Release Date - 2005-01-31 - + + Release date: + 2005-01-31 + This release contains a variety of fixes from 8.0.0, including several @@ -3078,10 +3078,10 @@ typedefs (Michael) Release 8.0 - - Release Date - 2005-01-19 - + + Release date: + 2005-01-19 + Overview diff --git a/doc/src/sgml/release-8.1.sgml b/doc/src/sgml/release-8.1.sgml index 0cb5587e9b..0db2d91547 100644 --- a/doc/src/sgml/release-8.1.sgml +++ b/doc/src/sgml/release-8.1.sgml @@ -4,10 +4,10 @@ Release 8.1.23 - - Release Date - 2010-12-16 - + + Release date: + 2010-12-16 + This release contains a variety of fixes from 8.1.22. @@ -223,10 +223,10 @@ Release 8.1.22 - - Release Date - 2010-10-04 - + + Release date: + 2010-10-04 + This release contains a variety of fixes from 8.1.21. @@ -441,10 +441,10 @@ Release 8.1.21 - - Release Date - 2010-05-17 - + + Release date: + 2010-05-17 + This release contains a variety of fixes from 8.1.20. @@ -595,10 +595,10 @@ Release 8.1.20 - - Release Date - 2010-03-15 - + + Release date: + 2010-03-15 + This release contains a variety of fixes from 8.1.19. @@ -785,10 +785,10 @@ Release 8.1.19 - - Release Date - 2009-12-14 - + + Release date: + 2009-12-14 + This release contains a variety of fixes from 8.1.18. @@ -966,10 +966,10 @@ Release 8.1.18 - - Release Date - 2009-09-09 - + + Release date: + 2009-09-09 + This release contains a variety of fixes from 8.1.17. @@ -1130,10 +1130,10 @@ Release 8.1.17 - - Release Date - 2009-03-16 - + + Release date: + 2009-03-16 + This release contains a variety of fixes from 8.1.16. @@ -1253,10 +1253,10 @@ Release 8.1.16 - - Release Date - 2009-02-02 - + + Release date: + 2009-02-02 + This release contains a variety of fixes from 8.1.15. @@ -1373,10 +1373,10 @@ Release 8.1.15 - - Release Date - 2008-11-03 - + + Release date: + 2008-11-03 + This release contains a variety of fixes from 8.1.14. @@ -1525,10 +1525,10 @@ Release 8.1.14 - - Release Date - 2008-09-22 - + + Release date: + 2008-09-22 + This release contains a variety of fixes from 8.1.13. @@ -1701,10 +1701,10 @@ Release 8.1.13 - - Release Date - 2008-06-12 - + + Release date: + 2008-06-12 + This release contains one serious and one minor bug fix over 8.1.12. @@ -1768,10 +1768,10 @@ Release 8.1.12 - - Release Date - never released - + + Release date: + never released + This release contains a variety of fixes from 8.1.11. @@ -2018,10 +2018,10 @@ Release 8.1.11 - - Release Date - 2008-01-07 - + + Release date: + 2008-01-07 + This release contains a variety of fixes from 8.1.10, @@ -2270,10 +2270,10 @@ Release 8.1.10 - - Release Date - 2007-09-17 - + + Release date: + 2007-09-17 + This release contains a variety of fixes from 8.1.9. @@ -2391,10 +2391,10 @@ Release 8.1.9 - - Release Date - 2007-04-23 - + + Release date: + 2007-04-23 + This release contains a variety of fixes from 8.1.8, @@ -2482,10 +2482,10 @@ Release 8.1.8 - - Release Date - 2007-02-07 - + + Release date: + 2007-02-07 + This release contains one fix from 8.1.7. @@ -2524,10 +2524,10 @@ Release 8.1.7 - - Release Date - 2007-02-05 - + + Release date: + 2007-02-05 + This release contains a variety of fixes from 8.1.6, including @@ -2626,10 +2626,10 @@ Release 8.1.6 - - Release Date - 2007-01-08 - + + Release date: + 2007-01-08 + This release contains a variety of fixes from 8.1.5. @@ -2776,10 +2776,10 @@ Release 8.1.5 - - Release Date - 2006-10-16 - + + Release date: + 2006-10-16 + This release contains a variety of fixes from 8.1.4. @@ -2853,10 +2853,10 @@ compilers (Hiroshi Saito) Release 8.1.4 - - Release Date - 2006-05-23 - + + Release date: + 2006-05-23 + This release contains a variety of fixes from 8.1.3, @@ -3007,10 +3007,10 @@ documented (Tom) Release 8.1.3 - - Release Date - 2006-02-14 - + + Release date: + 2006-02-14 + This release contains a variety of fixes from 8.1.2, @@ -3129,10 +3129,10 @@ creation (Tom) Release 8.1.2 - - Release Date - 2006-01-09 - + + Release date: + 2006-01-09 + This release contains a variety of fixes from 8.1.1. @@ -3232,10 +3232,10 @@ what's actually returned by the query (Joe) Release 8.1.1 - - Release Date - 2005-12-12 - + + Release date: + 2005-12-12 + This release contains a variety of fixes from 8.1.0. @@ -3324,10 +3324,10 @@ DISTINCT query Release 8.1 - - Release Date - 2005-11-08 - + + Release date: + 2005-11-08 + Overview diff --git a/doc/src/sgml/release-8.2.sgml b/doc/src/sgml/release-8.2.sgml index 7f6a74bac9..8a67cf22cc 100644 --- a/doc/src/sgml/release-8.2.sgml +++ b/doc/src/sgml/release-8.2.sgml @@ -4,10 +4,10 @@ Release 8.2.23 - - Release Date - 2011-12-05 - + + Release date: + 2011-12-05 + This release contains a variety of fixes from 8.2.22. @@ -232,10 +232,10 @@ Release 8.2.22 - - Release Date - 2011-09-26 - + + Release date: + 2011-09-26 + This release contains a variety of fixes from 8.2.21. @@ -539,10 +539,10 @@ Release 8.2.21 - - Release Date - 2011-04-18 - + + Release date: + 2011-04-18 + This release contains a variety of fixes from 8.2.20. @@ -671,10 +671,10 @@ Release 8.2.20 - - Release Date - 2011-01-31 - + + Release date: + 2011-01-31 + This release contains a variety of fixes from 8.2.19. @@ -803,10 +803,10 @@ Release 8.2.19 - - Release Date - 2010-12-16 - + + Release date: + 2010-12-16 + This release contains a variety of fixes from 8.2.18. @@ -1047,10 +1047,10 @@ Release 8.2.18 - - Release Date - 2010-10-04 - + + Release date: + 2010-10-04 + This release contains a variety of fixes from 8.2.17. @@ -1333,10 +1333,10 @@ Release 8.2.17 - - Release Date - 2010-05-17 - + + Release date: + 2010-05-17 + This release contains a variety of fixes from 8.2.16. @@ -1534,10 +1534,10 @@ Release 8.2.16 - - Release Date - 2010-03-15 - + + Release date: + 2010-03-15 + This release contains a variety of fixes from 8.2.15. @@ -1805,10 +1805,10 @@ Release 8.2.15 - - Release Date - 2009-12-14 - + + Release date: + 2009-12-14 + This release contains a variety of fixes from 8.2.14. @@ -2049,10 +2049,10 @@ Release 8.2.14 - - Release Date - 2009-09-09 - + + Release date: + 2009-09-09 + This release contains a variety of fixes from 8.2.13. @@ -2279,10 +2279,10 @@ Release 8.2.13 - - Release Date - 2009-03-16 - + + Release date: + 2009-03-16 + This release contains a variety of fixes from 8.2.12. @@ -2445,10 +2445,10 @@ Release 8.2.12 - - Release Date - 2009-02-02 - + + Release date: + 2009-02-02 + This release contains a variety of fixes from 8.2.11. @@ -2624,10 +2624,10 @@ Release 8.2.11 - - Release Date - 2008-11-03 - + + Release date: + 2008-11-03 + This release contains a variety of fixes from 8.2.10. @@ -2808,10 +2808,10 @@ Release 8.2.10 - - Release Date - 2008-09-22 - + + Release date: + 2008-09-22 + This release contains a variety of fixes from 8.2.9. @@ -3040,10 +3040,10 @@ Release 8.2.9 - - Release Date - 2008-06-12 - + + Release date: + 2008-06-12 + This release contains one serious and one minor bug fix over 8.2.8. @@ -3107,10 +3107,10 @@ Release 8.2.8 - - Release Date - never released - + + Release date: + never released + This release contains a variety of fixes from 8.2.7. @@ -3302,10 +3302,10 @@ Release 8.2.7 - - Release Date - 2008-03-17 - + + Release date: + 2008-03-17 + This release contains a variety of fixes from 8.2.6. @@ -3571,10 +3571,10 @@ Release 8.2.6 - - Release Date - 2008-01-07 - + + Release date: + 2008-01-07 + This release contains a variety of fixes from 8.2.5, @@ -3862,10 +3862,10 @@ Release 8.2.5 - - Release Date - 2007-09-17 - + + Release date: + 2007-09-17 + This release contains a variety of fixes from 8.2.4. @@ -4039,10 +4039,10 @@ Release 8.2.4 - - Release Date - 2007-04-23 - + + Release date: + 2007-04-23 + This release contains a variety of fixes from 8.2.3, @@ -4183,10 +4183,10 @@ Release 8.2.3 - - Release Date - 2007-02-07 - + + Release date: + 2007-02-07 + This release contains two fixes from 8.2.2. @@ -4229,10 +4229,10 @@ Release 8.2.2 - - Release Date - 2007-02-05 - + + Release date: + 2007-02-05 + This release contains a variety of fixes from 8.2.1, including @@ -4387,10 +4387,10 @@ Release 8.2.1 - - Release Date - 2007-01-08 - + + Release date: + 2007-01-08 + This release contains a variety of fixes from 8.2. @@ -4522,10 +4522,10 @@ Release 8.2 - - Release Date - 2006-12-05 - + + Release date: + 2006-12-05 + Overview diff --git a/doc/src/sgml/release-8.3.sgml b/doc/src/sgml/release-8.3.sgml index b56edb0102..693d725557 100644 --- a/doc/src/sgml/release-8.3.sgml +++ b/doc/src/sgml/release-8.3.sgml @@ -4,10 +4,10 @@ Release 8.3.23 - - Release Date - 2013-02-07 - + + Release date: + 2013-02-07 + This release contains a variety of fixes from 8.3.22. @@ -173,10 +173,10 @@ Release 8.3.22 - - Release Date - 2012-12-06 - + + Release date: + 2012-12-06 + This release contains a variety of fixes from 8.3.21. @@ -469,10 +469,10 @@ Release 8.3.21 - - Release Date - 2012-09-24 - + + Release date: + 2012-09-24 + This release contains a variety of fixes from 8.3.20. @@ -579,10 +579,10 @@ Release 8.3.20 - - Release Date - 2012-08-17 - + + Release date: + 2012-08-17 + This release contains a variety of fixes from 8.3.19. @@ -802,10 +802,10 @@ Release 8.3.19 - - Release Date - 2012-06-04 - + + Release date: + 2012-06-04 + This release contains a variety of fixes from 8.3.18. @@ -1031,10 +1031,10 @@ Release 8.3.18 - - Release Date - 2012-02-27 - + + Release date: + 2012-02-27 + This release contains a variety of fixes from 8.3.17. @@ -1319,10 +1319,10 @@ Release 8.3.17 - - Release Date - 2011-12-05 - + + Release date: + 2011-12-05 + This release contains a variety of fixes from 8.3.16. @@ -1586,10 +1586,10 @@ Release 8.3.16 - - Release Date - 2011-09-26 - + + Release date: + 2011-09-26 + This release contains a variety of fixes from 8.3.15. @@ -1957,10 +1957,10 @@ Release 8.3.15 - - Release Date - 2011-04-18 - + + Release date: + 2011-04-18 + This release contains a variety of fixes from 8.3.14. @@ -2120,10 +2120,10 @@ Release 8.3.14 - - Release Date - 2011-01-31 - + + Release date: + 2011-01-31 + This release contains a variety of fixes from 8.3.13. @@ -2252,10 +2252,10 @@ Release 8.3.13 - - Release Date - 2010-12-16 - + + Release date: + 2010-12-16 + This release contains a variety of fixes from 8.3.12. @@ -2530,10 +2530,10 @@ Release 8.3.12 - - Release Date - 2010-10-04 - + + Release date: + 2010-10-04 + This release contains a variety of fixes from 8.3.11. @@ -2893,10 +2893,10 @@ Release 8.3.11 - - Release Date - 2010-05-17 - + + Release date: + 2010-05-17 + This release contains a variety of fixes from 8.3.10. @@ -3122,10 +3122,10 @@ Release 8.3.10 - - Release Date - 2010-03-15 - + + Release date: + 2010-03-15 + This release contains a variety of fixes from 8.3.9. @@ -3449,10 +3449,10 @@ Release 8.3.9 - - Release Date - 2009-12-14 - + + Release date: + 2009-12-14 + This release contains a variety of fixes from 8.3.8. @@ -3782,10 +3782,10 @@ Release 8.3.8 - - Release Date - 2009-09-09 - + + Release date: + 2009-09-09 + This release contains a variety of fixes from 8.3.7. @@ -4072,10 +4072,10 @@ Release 8.3.7 - - Release Date - 2009-03-16 - + + Release date: + 2009-03-16 + This release contains a variety of fixes from 8.3.6. @@ -4295,10 +4295,10 @@ Release 8.3.6 - - Release Date - 2009-02-02 - + + Release date: + 2009-02-02 + This release contains a variety of fixes from 8.3.5. @@ -4589,10 +4589,10 @@ Release 8.3.5 - - Release Date - 2008-11-03 - + + Release date: + 2008-11-03 + This release contains a variety of fixes from 8.3.4. @@ -4844,10 +4844,10 @@ Release 8.3.4 - - Release Date - 2008-09-22 - + + Release date: + 2008-09-22 + This release contains a variety of fixes from 8.3.3. @@ -5198,10 +5198,10 @@ Release 8.3.3 - - Release Date - 2008-06-12 - + + Release date: + 2008-06-12 + This release contains one serious and one minor bug fix over 8.3.2. @@ -5265,10 +5265,10 @@ Release 8.3.2 - - Release Date - never released - + + Release date: + never released + This release contains a variety of fixes from 8.3.1. @@ -5630,10 +5630,10 @@ Release 8.3.1 - - Release Date - 2008-03-17 - + + Release date: + 2008-03-17 + This release contains a variety of fixes from 8.3.0. @@ -5943,10 +5943,10 @@ Release 8.3 - - Release Date - 2008-02-04 - + + Release date: + 2008-02-04 + Overview diff --git a/doc/src/sgml/release-8.4.sgml b/doc/src/sgml/release-8.4.sgml index 8b16c9e9d3..ac5a92f5a7 100644 --- a/doc/src/sgml/release-8.4.sgml +++ b/doc/src/sgml/release-8.4.sgml @@ -4,10 +4,10 @@ Release 8.4.22 - - Release Date - 2014-07-24 - + + Release date: + 2014-07-24 + This release contains a variety of fixes from 8.4.21. @@ -323,10 +323,10 @@ Release 8.4.21 - - Release Date - 2014-03-20 - + + Release date: + 2014-03-20 + This release contains a variety of fixes from 8.4.20. @@ -381,7 +381,7 @@ This prevents scenarios wherein a pathological regular expression - could lock up a server process uninterruptably for a long time. + could lock up a server process uninterruptibly for a long time. @@ -442,10 +442,10 @@ Release 8.4.20 - - Release Date - 2014-02-20 - + + Release date: + 2014-02-20 + This release contains a variety of fixes from 8.4.19. @@ -901,10 +901,10 @@ Release 8.4.19 - - Release Date - 2013-12-05 - + + Release date: + 2013-12-05 + This release contains a variety of fixes from 8.4.18. @@ -1102,10 +1102,10 @@ Release 8.4.18 - - Release Date - 2013-10-10 - + + Release date: + 2013-10-10 + This release contains a variety of fixes from 8.4.17. @@ -1302,10 +1302,10 @@ Release 8.4.17 - - Release Date - 2013-04-04 - + + Release date: + 2013-04-04 + This release contains a variety of fixes from 8.4.16. @@ -1531,10 +1531,10 @@ Release 8.4.16 - - Release Date - 2013-02-07 - + + Release date: + 2013-02-07 + This release contains a variety of fixes from 8.4.15. @@ -1741,10 +1741,10 @@ Release 8.4.15 - - Release Date - 2012-12-06 - + + Release date: + 2012-12-06 + This release contains a variety of fixes from 8.4.14. @@ -2043,10 +2043,10 @@ Release 8.4.14 - - Release Date - 2012-09-24 - + + Release date: + 2012-09-24 + This release contains a variety of fixes from 8.4.13. @@ -2159,10 +2159,10 @@ Release 8.4.13 - - Release Date - 2012-08-17 - + + Release date: + 2012-08-17 + This release contains a variety of fixes from 8.4.12. @@ -2393,10 +2393,10 @@ Release 8.4.12 - - Release Date - 2012-06-04 - + + Release date: + 2012-06-04 + This release contains a variety of fixes from 8.4.11. @@ -2678,10 +2678,10 @@ Release 8.4.11 - - Release Date - 2012-02-27 - + + Release date: + 2012-02-27 + This release contains a variety of fixes from 8.4.10. @@ -3040,10 +3040,10 @@ Release 8.4.10 - - Release Date - 2011-12-05 - + + Release date: + 2011-12-05 + This release contains a variety of fixes from 8.4.9. @@ -3355,10 +3355,10 @@ Release 8.4.9 - - Release Date - 2011-09-26 - + + Release date: + 2011-09-26 + This release contains a variety of fixes from 8.4.8. @@ -3880,10 +3880,10 @@ Release 8.4.8 - - Release Date - 2011-04-18 - + + Release date: + 2011-04-18 + This release contains a variety of fixes from 8.4.7. @@ -4125,10 +4125,10 @@ Release 8.4.7 - - Release Date - 2011-01-31 - + + Release date: + 2011-01-31 + This release contains a variety of fixes from 8.4.6. @@ -4257,10 +4257,10 @@ Release 8.4.6 - - Release Date - 2010-12-16 - + + Release date: + 2010-12-16 + This release contains a variety of fixes from 8.4.5. @@ -4568,10 +4568,10 @@ Release 8.4.5 - - Release Date - 2010-10-04 - + + Release date: + 2010-10-04 + This release contains a variety of fixes from 8.4.4. @@ -5090,10 +5090,10 @@ Release 8.4.4 - - Release Date - 2010-05-17 - + + Release date: + 2010-05-17 + This release contains a variety of fixes from 8.4.3. @@ -5381,10 +5381,10 @@ Release 8.4.3 - - Release Date - 2010-03-15 - + + Release date: + 2010-03-15 + This release contains a variety of fixes from 8.4.2. @@ -5848,10 +5848,10 @@ Release 8.4.2 - - Release Date - 2009-12-14 - + + Release date: + 2009-12-14 + This release contains a variety of fixes from 8.4.1. @@ -6379,10 +6379,10 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE Release 8.4.1 - - Release Date - 2009-09-09 - + + Release date: + 2009-09-09 + This release contains a variety of fixes from 8.4. @@ -6678,10 +6678,10 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE Release 8.4 - - Release Date - 2009-07-01 - + + Release date: + 2009-07-01 + Overview diff --git a/doc/src/sgml/release-9.0.sgml b/doc/src/sgml/release-9.0.sgml index 61dce9fd78..c50203a5c8 100644 --- a/doc/src/sgml/release-9.0.sgml +++ b/doc/src/sgml/release-9.0.sgml @@ -4,10 +4,10 @@ Release 9.0.23 - - Release Date - 2015-10-08 - + + Release date: + 2015-10-08 + This release contains a variety of fixes from 9.0.22. @@ -501,10 +501,10 @@ Release 9.0.22 - - Release Date - 2015-06-12 - + + Release date: + 2015-06-12 + This release contains a small number of fixes from 9.0.21. @@ -575,10 +575,10 @@ Release 9.0.21 - - Release Date - 2015-06-04 - + + Release date: + 2015-06-04 + This release contains a small number of fixes from 9.0.20. @@ -669,10 +669,10 @@ Release 9.0.20 - - Release Date - 2015-05-22 - + + Release date: + 2015-05-22 + This release contains a variety of fixes from 9.0.19. @@ -1113,10 +1113,10 @@ Release 9.0.19 - - Release Date - 2015-02-05 - + + Release date: + 2015-02-05 + This release contains a variety of fixes from 9.0.18. @@ -1839,10 +1839,10 @@ Release 9.0.18 - - Release Date - 2014-07-24 - + + Release date: + 2014-07-24 + This release contains a variety of fixes from 9.0.17. @@ -2185,10 +2185,10 @@ Release 9.0.17 - - Release Date - 2014-03-20 - + + Release date: + 2014-03-20 + This release contains a variety of fixes from 9.0.16. @@ -2250,7 +2250,7 @@ This prevents scenarios wherein a pathological regular expression - could lock up a server process uninterruptably for a long time. + could lock up a server process uninterruptibly for a long time. @@ -2338,10 +2338,10 @@ Release 9.0.16 - - Release Date - 2014-02-20 - + + Release date: + 2014-02-20 + This release contains a variety of fixes from 9.0.15. @@ -2839,10 +2839,10 @@ Release 9.0.15 - - Release Date - 2013-12-05 - + + Release date: + 2013-12-05 + This release contains a variety of fixes from 9.0.14. @@ -3077,10 +3077,10 @@ Release 9.0.14 - - Release Date - 2013-10-10 - + + Release date: + 2013-10-10 + This release contains a variety of fixes from 9.0.13. @@ -3343,10 +3343,10 @@ Release 9.0.13 - - Release Date - 2013-04-04 - + + Release date: + 2013-04-04 + This release contains a variety of fixes from 9.0.12. @@ -3640,10 +3640,10 @@ Release 9.0.12 - - Release Date - 2013-02-07 - + + Release date: + 2013-02-07 + This release contains a variety of fixes from 9.0.11. @@ -3902,10 +3902,10 @@ Release 9.0.11 - - Release Date - 2012-12-06 - + + Release date: + 2012-12-06 + This release contains a variety of fixes from 9.0.10. @@ -4280,10 +4280,10 @@ Release 9.0.10 - - Release Date - 2012-09-24 - + + Release date: + 2012-09-24 + This release contains a variety of fixes from 9.0.9. @@ -4422,10 +4422,10 @@ Release 9.0.9 - - Release Date - 2012-08-17 - + + Release date: + 2012-08-17 + This release contains a variety of fixes from 9.0.8. @@ -4728,10 +4728,10 @@ Release 9.0.8 - - Release Date - 2012-06-04 - + + Release date: + 2012-06-04 + This release contains a variety of fixes from 9.0.7. @@ -5048,10 +5048,10 @@ Release 9.0.7 - - Release Date - 2012-02-27 - + + Release date: + 2012-02-27 + This release contains a variety of fixes from 9.0.6. @@ -5564,10 +5564,10 @@ Release 9.0.6 - - Release Date - 2011-12-05 - + + Release date: + 2011-12-05 + This release contains a variety of fixes from 9.0.5. @@ -5948,10 +5948,10 @@ Release 9.0.5 - - Release Date - 2011-09-26 - + + Release date: + 2011-09-26 + This release contains a variety of fixes from 9.0.4. @@ -6598,10 +6598,10 @@ Release 9.0.4 - - Release Date - 2011-04-18 - + + Release date: + 2011-04-18 + This release contains a variety of fixes from 9.0.3. @@ -6939,10 +6939,10 @@ Release 9.0.3 - - Release Date - 2011-01-31 - + + Release date: + 2011-01-31 + This release contains a variety of fixes from 9.0.2. @@ -7115,10 +7115,10 @@ Release 9.0.2 - - Release Date - 2010-12-16 - + + Release date: + 2010-12-16 + This release contains a variety of fixes from 9.0.1. @@ -7562,10 +7562,10 @@ Release 9.0.1 - - Release Date - 2010-10-04 - + + Release date: + 2010-10-04 + This release contains a variety of fixes from 9.0.0. @@ -7704,10 +7704,10 @@ Release 9.0 - - Release Date - 2010-09-20 - + + Release date: + 2010-09-20 + Overview diff --git a/doc/src/sgml/release-9.1.sgml b/doc/src/sgml/release-9.1.sgml index a66ca0d5b3..e1b1f3aab2 100644 --- a/doc/src/sgml/release-9.1.sgml +++ b/doc/src/sgml/release-9.1.sgml @@ -1,13 +1,223 @@ + + Release 9.1.24 + + + Release date: + 2016-10-27 + + + + This release contains a variety of fixes from 9.1.23. + For information about new features in the 9.1 major release, see + . + + + + This is expected to be the last PostgreSQL release + in the 9.1.X series. Users are encouraged to update to a newer + release branch soon. + + + + Migration to Version 9.1.24 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you are upgrading from a version earlier than 9.1.16, + see . + + + + + + Changes + + + + + + Fix EvalPlanQual rechecks involving CTE scans (Tom Lane) + + + + The recheck would always see the CTE as returning no rows, typically + leading to failure to update rows that were recently updated. + + + + + + Fix improper repetition of previous results from hashed aggregation in + a subquery (Andrew Gierth) + + + + The test to see if we can reuse a previously-computed hash table of + the aggregate state values neglected the possibility of an outer query + reference appearing in an aggregate argument expression. A change in + the value of such a reference should lead to recalculating the hash + table, but did not. + + + + + + Fix timeout length when VACUUM is waiting for exclusive + table lock so that it can truncate the table (Simon Riggs) + + + + The timeout was meant to be 50 milliseconds, but it was actually only + 50 microseconds, causing VACUUM to give up on truncation + much more easily than intended. Set it to the intended value. + + + + + + Remove artificial restrictions on the values accepted + by numeric_in() and numeric_recv() + (Tom Lane) + + + + We allow numeric values up to the limit of the storage format (more + than 1e100000), so it seems fairly pointless + that numeric_in() rejected scientific-notation exponents + above 1000. Likewise, it was silly for numeric_recv() to + reject more than 1000 digits in an input value. + + + + + + Avoid very-low-probability data corruption due to testing tuple + visibility without holding buffer lock (Thomas Munro, Peter Geoghegan, + Tom Lane) + + + + + + Fix file descriptor leakage when truncating a temporary relation of + more than 1GB (Andres Freund) + + + + + + Disallow starting a standalone backend with standby_mode + turned on (Michael Paquier) + + + + This can't do anything useful, since there will be no WAL receiver + process to fetch more WAL data; and it could result in misbehavior + in code that wasn't designed with this situation in mind. + + + + + + Don't try to share SSL contexts across multiple connections + in libpq (Heikki Linnakangas) + + + + This led to assorted corner-case bugs, particularly when trying to use + different SSL parameters for different connections. + + + + + + Avoid corner-case memory leak in libpq (Tom Lane) + + + + The reported problem involved leaking an error report + during PQreset(), but there might be related cases. + + + + + + Make ecpg's + + + + + Fix contrib/intarray/bench/bench.pl to print the results + of the EXPLAIN it does when given the + + + + + Prevent failure of obsolete dynamic time zone abbreviations (Tom Lane) + + + + If a dynamic time zone abbreviation does not match any entry in the + referenced time zone, treat it as equivalent to the time zone name. + This avoids unexpected failures when IANA removes abbreviations from + their time zone database, as they did in tzdata + release 2016f and seem likely to do again in the future. The + consequences were not limited to not recognizing the individual + abbreviation; any mismatch caused + the pg_timezone_abbrevs view to fail altogether. + + + + + + Update time zone data files to tzdata release 2016h + for DST law changes in Palestine and Turkey, plus historical + corrections for Turkey and some regions of Russia. + Switch to numeric abbreviations for some time zones in Antarctica, + the former Soviet Union, and Sri Lanka. + + + + The IANA time zone database previously provided textual abbreviations + for all time zones, sometimes making up abbreviations that have little + or no currency among the local population. They are in process of + reversing that policy in favor of using numeric UTC offsets in zones + where there is no evidence of real-world use of an English + abbreviation. At least for the time being, PostgreSQL + will continue to accept such removed abbreviations for timestamp input. + But they will not be shown in the pg_timezone_names + view nor used for output. + + + + In this update, AMT is no longer shown as being in use to + mean Armenia Time. Therefore, we have changed the Default + abbreviation set to interpret it as Amazon Time, thus UTC-4 not UTC+4. + + + + + + + + Release 9.1.23 - - Release Date - 2016-08-11 - + + Release date: + 2016-08-11 + This release contains a variety of fixes from 9.1.22. @@ -346,10 +556,10 @@ Branch: REL9_1_STABLE [354b3a3ac] 2016-06-19 14:01:17 -0400 Release 9.1.22 - - Release Date - 2016-05-12 - + + Release date: + 2016-05-12 + This release contains a variety of fixes from 9.1.21. @@ -511,10 +721,10 @@ Branch: REL9_1_STABLE [354b3a3ac] 2016-06-19 14:01:17 -0400 Release 9.1.21 - - Release Date - 2016-03-31 - + + Release date: + 2016-03-31 + This release contains a variety of fixes from 9.1.20. @@ -599,7 +809,7 @@ Branch: REL9_1_STABLE [354b3a3ac] 2016-06-19 14:01:17 -0400 This dodges a portability problem on FreeBSD-derived platforms - (including OS X). + (including macOS). @@ -717,10 +927,10 @@ Branch: REL9_1_STABLE [354b3a3ac] 2016-06-19 14:01:17 -0400 Release 9.1.20 - - Release Date - 2016-02-11 - + + Release date: + 2016-02-11 + This release contains a variety of fixes from 9.1.19. @@ -1230,10 +1440,10 @@ Branch: REL9_1_STABLE [354b3a3ac] 2016-06-19 14:01:17 -0400 Release 9.1.19 - - Release Date - 2015-10-08 - + + Release date: + 2015-10-08 + This release contains a variety of fixes from 9.1.18. @@ -1791,10 +2001,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 Release 9.1.18 - - Release Date - 2015-06-12 - + + Release date: + 2015-06-12 + This release contains a small number of fixes from 9.1.17. @@ -1859,10 +2069,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 Release 9.1.17 - - Release Date - 2015-06-04 - + + Release date: + 2015-06-04 + This release contains a small number of fixes from 9.1.16. @@ -1947,10 +2157,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 Release 9.1.16 - - Release Date - 2015-05-22 - + + Release date: + 2015-05-22 + This release contains a variety of fixes from 9.1.15. @@ -2473,10 +2683,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 Release 9.1.15 - - Release Date - 2015-02-05 - + + Release date: + 2015-02-05 + This release contains a variety of fixes from 9.1.14. @@ -2937,7 +3147,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - Warn if OS X's setlocale() starts an unwanted extra + Warn if macOS's setlocale() starts an unwanted extra thread inside the postmaster (Noah Misch) @@ -3283,10 +3493,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 Release 9.1.14 - - Release Date - 2014-07-24 - + + Release date: + 2014-07-24 + This release contains a variety of fixes from 9.1.13. @@ -3574,7 +3784,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - Fix linking of libpython on OS X (Tom Lane) + Fix linking of libpython on macOS (Tom Lane) @@ -3666,10 +3876,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 Release 9.1.13 - - Release Date - 2014-03-20 - + + Release date: + 2014-03-20 + This release contains a variety of fixes from 9.1.12. @@ -3731,7 +3941,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 This prevents scenarios wherein a pathological regular expression - could lock up a server process uninterruptably for a long time. + could lock up a server process uninterruptibly for a long time. @@ -3833,10 +4043,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 Release 9.1.12 - - Release Date - 2014-02-20 - + + Release date: + 2014-02-20 + This release contains a variety of fixes from 9.1.11. @@ -4383,10 +4593,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 Release 9.1.11 - - Release Date - 2013-12-05 - + + Release date: + 2013-12-05 + This release contains a variety of fixes from 9.1.10. @@ -4640,10 +4850,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 Release 9.1.10 - - Release Date - 2013-10-10 - + + Release date: + 2013-10-10 + This release contains a variety of fixes from 9.1.9. @@ -4975,10 +5185,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 Release 9.1.9 - - Release Date - 2013-04-04 - + + Release date: + 2013-04-04 + This release contains a variety of fixes from 9.1.8. @@ -5309,10 +5519,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 Release 9.1.8 - - Release Date - 2013-02-07 - + + Release date: + 2013-02-07 + This release contains a variety of fixes from 9.1.7. @@ -5631,10 +5841,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 Release 9.1.7 - - Release Date - 2012-12-06 - + + Release date: + 2012-12-06 + This release contains a variety of fixes from 9.1.6. @@ -6094,10 +6304,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 Release 9.1.6 - - Release Date - 2012-09-24 - + + Release date: + 2012-09-24 + This release contains a variety of fixes from 9.1.5. @@ -6346,10 +6556,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 Release 9.1.5 - - Release Date - 2012-08-17 - + + Release date: + 2012-08-17 + This release contains a variety of fixes from 9.1.4. @@ -6733,10 +6943,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 Release 9.1.4 - - Release Date - 2012-06-04 - + + Release date: + 2012-06-04 + This release contains a variety of fixes from 9.1.3. @@ -7223,10 +7433,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 Release 9.1.3 - - Release Date - 2012-02-27 - + + Release date: + 2012-02-27 + This release contains a variety of fixes from 9.1.2. @@ -7860,10 +8070,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 Release 9.1.2 - - Release Date - 2011-12-05 - + + Release date: + 2011-12-05 + This release contains a variety of fixes from 9.1.1. @@ -8443,7 +8653,7 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 - Fix incorrect quoting of log file name in Mac OS X start script + Fix incorrect quoting of log file name in macOS start script (Sidar Lopez) @@ -8507,10 +8717,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 Release 9.1.1 - - Release Date - 2011-09-26 - + + Release date: + 2011-09-26 + This release contains a small number of fixes from 9.1.0. @@ -8575,10 +8785,10 @@ Branch: REL9_0_STABLE [9d6af7367] 2015-08-15 11:02:34 -0400 Release 9.1 - - Release Date - 2011-09-12 - + + Release date: + 2011-09-12 + Overview diff --git a/doc/src/sgml/release-9.2.sgml b/doc/src/sgml/release-9.2.sgml index c801f98c3f..8118649554 100644 --- a/doc/src/sgml/release-9.2.sgml +++ b/doc/src/sgml/release-9.2.sgml @@ -1,13 +1,1676 @@ + + Release 9.2.23 + + + Release date: + 2017-08-31 + + + + This release contains a small number of fixes from 9.2.22. + For information about new features in the 9.2 major release, see + . + + + + The PostgreSQL community will stop releasing updates + for the 9.2.X release series in September 2017. + Users are encouraged to update to a newer release branch soon. + + + + Migration to Version 9.2.23 + + + A dump/restore is not required for those running 9.2.X. + + + + However, if you are upgrading from a version earlier than 9.2.22, + see . + + + + + + Changes + + + + + + Show foreign tables + in information_schema.table_privileges + view (Peter Eisentraut) + + + + All other relevant information_schema views include + foreign tables, but this one ignored them. + + + + Since this view definition is installed by initdb, + merely upgrading will not fix the problem. If you need to fix this + in an existing installation, you can, as a superuser, do this + in psql: + +BEGIN; +DROP SCHEMA information_schema CASCADE; +\i SHAREDIR/information_schema.sql +COMMIT; + + (Run pg_config --sharedir if you're uncertain + where SHAREDIR is.) This must be repeated in each + database to be fixed. + + + + + + Clean up handling of a fatal exit (e.g., due to receipt + of SIGTERM) that occurs while trying to execute + a ROLLBACK of a failed transaction (Tom Lane) + + + + This situation could result in an assertion failure. In production + builds, the exit would still occur, but it would log an unexpected + message about cannot drop active portal. + + + + + + Remove assertion that could trigger during a fatal exit (Tom Lane) + + + + + + Correctly identify columns that are of a range type or domain type over + a composite type or domain type being searched for (Tom Lane) + + + + Certain ALTER commands that change the definition of a + composite type or domain type are supposed to fail if there are any + stored values of that type in the database, because they lack the + infrastructure needed to update or check such values. Previously, + these checks could miss relevant values that are wrapped inside range + types or sub-domains, possibly allowing the database to become + inconsistent. + + + + + + Change ecpg's parser to allow RETURNING + clauses without attached C variables (Michael Meskes) + + + + This allows ecpg programs to contain SQL constructs + that use RETURNING internally (for example, inside a CTE) + rather than using it to define values to be returned to the client. + + + + + + Improve selection of compiler flags for PL/Perl on Windows (Tom Lane) + + + + This fix avoids possible crashes of PL/Perl due to inconsistent + assumptions about the width of time_t values. + A side-effect that may be visible to extension developers is + that _USE_32BIT_TIME_T is no longer defined globally + in PostgreSQL Windows builds. This is not expected + to cause problems, because type time_t is not used + in any PostgreSQL API definitions. + + + + + + + + + + Release 9.2.22 + + + Release date: + 2017-08-10 + + + + This release contains a variety of fixes from 9.2.21. + For information about new features in the 9.2 major release, see + . + + + + The PostgreSQL community will stop releasing updates + for the 9.2.X release series in September 2017. + Users are encouraged to update to a newer release branch soon. + + + + Migration to Version 9.2.22 + + + A dump/restore is not required for those running 9.2.X. + + + + However, if you use foreign data servers that make use of user + passwords for authentication, see the first changelog entry below. + + + + Also, if you are upgrading from a version earlier than 9.2.20, + see . + + + + + + Changes + + + + + + Further restrict visibility + of pg_user_mappings.umoptions, to + protect passwords stored as user mapping options + (Noah Misch) + + + + The fix for CVE-2017-7486 was incorrect: it allowed a user + to see the options in her own user mapping, even if she did not + have USAGE permission on the associated foreign server. + Such options might include a password that had been provided by the + server owner rather than the user herself. + Since information_schema.user_mapping_options does not + show the options in such cases, pg_user_mappings + should not either. + (CVE-2017-7547) + + + + By itself, this patch will only fix the behavior in newly initdb'd + databases. If you wish to apply this change in an existing database, + you will need to do the following: + + + + + + Restart the postmaster after adding allow_system_table_mods + = true to postgresql.conf. (In versions + supporting ALTER SYSTEM, you can use that to make the + configuration change, but you'll still need a restart.) + + + + + + In each database of the cluster, + run the following commands as superuser: + +SET search_path = pg_catalog; +CREATE OR REPLACE VIEW pg_user_mappings AS + SELECT + U.oid AS umid, + S.oid AS srvid, + S.srvname AS srvname, + U.umuser AS umuser, + CASE WHEN U.umuser = 0 THEN + 'public' + ELSE + A.rolname + END AS usename, + CASE WHEN (U.umuser <> 0 AND A.rolname = current_user + AND (pg_has_role(S.srvowner, 'USAGE') + OR has_server_privilege(S.oid, 'USAGE'))) + OR (U.umuser = 0 AND pg_has_role(S.srvowner, 'USAGE')) + OR (SELECT rolsuper FROM pg_authid WHERE rolname = current_user) + THEN U.umoptions + ELSE NULL END AS umoptions + FROM pg_user_mapping U + LEFT JOIN pg_authid A ON (A.oid = U.umuser) JOIN + pg_foreign_server S ON (U.umserver = S.oid); + + + + + + + Do not forget to include the template0 + and template1 databases, or the vulnerability will still + exist in databases you create later. To fix template0, + you'll need to temporarily make it accept connections. + In PostgreSQL 9.5 and later, you can use + +ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true; + + and then after fixing template0, undo that with + +ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false; + + In prior versions, instead use + +UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; +UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; + + + + + + + Finally, remove the allow_system_table_mods configuration + setting, and again restart the postmaster. + + + + + + + + Disallow empty passwords in all password-based authentication methods + (Heikki Linnakangas) + + + + libpq ignores empty password specifications, and does + not transmit them to the server. So, if a user's password has been + set to the empty string, it's impossible to log in with that password + via psql or other libpq-based + clients. An administrator might therefore believe that setting the + password to empty is equivalent to disabling password login. + However, with a modified or non-libpq-based client, + logging in could be possible, depending on which authentication + method is configured. In particular the most common + method, md5, accepted empty passwords. + Change the server to reject empty passwords in all cases. + (CVE-2017-7546) + + + + + + On Windows, retry process creation if we fail to reserve the address + range for our shared memory in the new process (Tom Lane, Amit + Kapila) + + + + This is expected to fix infrequent child-process-launch failures that + are probably due to interference from antivirus products. + + + + + + Fix low-probability corruption of shared predicate-lock hash table + in Windows builds (Thomas Munro, Tom Lane) + + + + + + Avoid logging clean closure of an SSL connection as though + it were a connection reset (Michael Paquier) + + + + + + Prevent sending SSL session tickets to clients (Tom Lane) + + + + This fix prevents reconnection failures with ticket-aware client-side + SSL code. + + + + + + Fix code for setting on + Solaris (Tom Lane) + + + + + + Fix statistics collector to honor inquiry messages issued just after + a postmaster shutdown and immediate restart (Tom Lane) + + + + Statistics inquiries issued within half a second of the previous + postmaster shutdown were effectively ignored. + + + + + + Ensure that the statistics collector's receive buffer size is at + least 100KB (Tom Lane) + + + + This reduces the risk of dropped statistics data on older platforms + whose default receive buffer size is less than that. + + + + + + Fix possible creation of an invalid WAL segment when a standby is + promoted just after it processes an XLOG_SWITCH WAL + record (Andres Freund) + + + + + + Fix SIGHUP and SIGUSR1 handling in + walsender processes (Petr Jelinek, Andres Freund) + + + + + + Fix unnecessarily slow restarts of walreceiver + processes due to race condition in postmaster (Tom Lane) + + + + + + Fix cases where an INSERT or UPDATE assigns + to more than one element of a column that is of domain-over-array + type (Tom Lane) + + + + + + Move autogenerated array types out of the way during + ALTER ... RENAME (Vik Fearing) + + + + Previously, we would rename a conflicting autogenerated array type + out of the way during CREATE; this fix extends that + behavior to renaming operations. + + + + + + Ensure that ALTER USER ... SET accepts all the syntax + variants that ALTER ROLE ... SET does (Peter Eisentraut) + + + + + + Properly update dependency info when changing a datatype I/O + function's argument or return type from opaque to the + correct type (Heikki Linnakangas) + + + + CREATE TYPE updates I/O functions declared in this + long-obsolete style, but it forgot to record a dependency on the + type, allowing a subsequent DROP TYPE to leave broken + function definitions behind. + + + + + + Reduce memory usage when ANALYZE processes + a tsvector column (Heikki Linnakangas) + + + + + + Fix unnecessary precision loss and sloppy rounding when multiplying + or dividing money values by integers or floats (Tom Lane) + + + + + + Tighten checks for whitespace in functions that parse identifiers, + such as regprocedurein() (Tom Lane) + + + + Depending on the prevailing locale, these functions could + misinterpret fragments of multibyte characters as whitespace. + + + + + + Use relevant #define symbols from Perl while + compiling PL/Perl (Ashutosh Sharma, Tom Lane) + + + + This avoids portability problems, typically manifesting as + a handshake mismatch during library load, when working with + recent Perl versions. + + + + + + In psql, fix failure when COPY FROM STDIN + is ended with a keyboard EOF signal and then another COPY + FROM STDIN is attempted (Thomas Munro) + + + + This misbehavior was observed on BSD-derived platforms (including + macOS), but not on most others. + + + + + + Fix pg_dump to not emit invalid SQL for an empty + operator class (Daniel Gustafsson) + + + + + + Fix pg_dump output to stdout on Windows (Kuntal Ghosh) + + + + A compressed plain-text dump written to stdout would contain corrupt + data due to failure to put the file descriptor into binary mode. + + + + + + Fix pg_get_ruledef() to print correct output for + the ON SELECT rule of a view whose columns have been + renamed (Tom Lane) + + + + In some corner cases, pg_dump relies + on pg_get_ruledef() to dump views, so that this error + could result in dump/reload failures. + + + + + + Fix dumping of function expressions in the FROM clause in + cases where the expression does not deparse into something that looks + like a function call (Tom Lane) + + + + + + Fix pg_basebackup output to stdout on Windows + (Haribabu Kommi) + + + + A backup written to stdout would contain corrupt data due to failure + to put the file descriptor into binary mode. + + + + + + Fix pg_upgrade to ensure that the ending WAL record + does not have = minimum + (Bruce Momjian) + + + + This condition could prevent upgraded standby servers from + reconnecting. + + + + + + Always use + + + This supports larger extension libraries on platforms where it makes + a difference. + + + + + + Fix unescaped-braces issue in our build scripts for Microsoft MSVC, + to avoid a warning or error from recent Perl versions (Andrew + Dunstan) + + + + + + In MSVC builds, handle the case where the openssl + library is not within a VC subdirectory (Andrew Dunstan) + + + + + + In MSVC builds, add proper include path for libxml2 + header files (Andrew Dunstan) + + + + This fixes a former need to move things around in standard Windows + installations of libxml2. + + + + + + In MSVC builds, recognize a Tcl library that is + named tcl86.lib (Noah Misch) + + + + + + + + + + Release 9.2.21 + + + Release date: + 2017-05-11 + + + + This release contains a variety of fixes from 9.2.20. + For information about new features in the 9.2 major release, see + . + + + + The PostgreSQL community will stop releasing updates + for the 9.2.X release series in September 2017. + Users are encouraged to update to a newer release branch soon. + + + + Migration to Version 9.2.21 + + + A dump/restore is not required for those running 9.2.X. + + + + However, if you use foreign data servers that make use of user + passwords for authentication, see the first changelog entry below. + + + + Also, if you are upgrading from a version earlier than 9.2.20, + see . + + + + + + Changes + + + + + + Restrict visibility + of pg_user_mappings.umoptions, to + protect passwords stored as user mapping options + (Michael Paquier, Feike Steenbergen) + + + + The previous coding allowed the owner of a foreign server object, + or anyone he has granted server USAGE permission to, + to see the options for all user mappings associated with that server. + This might well include passwords for other users. + Adjust the view definition to match the behavior of + information_schema.user_mapping_options, namely that + these options are visible to the user being mapped, or if the mapping + is for PUBLIC and the current user is the server + owner, or if the current user is a superuser. + (CVE-2017-7486) + + + + By itself, this patch will only fix the behavior in newly initdb'd + databases. If you wish to apply this change in an existing database, + follow the corrected procedure shown in the changelog entry for + CVE-2017-7547, in . + + + + + + Prevent exposure of statistical information via leaky operators + (Peter Eisentraut) + + + + Some selectivity estimation functions in the planner will apply + user-defined operators to values obtained + from pg_statistic, such as most common values and + histogram entries. This occurs before table permissions are checked, + so a nefarious user could exploit the behavior to obtain these values + for table columns he does not have permission to read. To fix, + fall back to a default estimate if the operator's implementation + function is not certified leak-proof and the calling user does not have + permission to read the table column whose statistics are needed. + At least one of these criteria is satisfied in most cases in practice. + (CVE-2017-7484) + + + + + + Fix possible corruption of init forks of unlogged indexes + (Robert Haas, Michael Paquier) + + + + This could result in an unlogged index being set to an invalid state + after a crash and restart. Such a problem would persist until the + index was dropped and rebuilt. + + + + + + Fix incorrect reconstruction of pg_subtrans entries + when a standby server replays a prepared but uncommitted two-phase + transaction (Tom Lane) + + + + In most cases this turned out to have no visible ill effects, but in + corner cases it could result in circular references + in pg_subtrans, potentially causing infinite loops + in queries that examine rows modified by the two-phase transaction. + + + + + + Ensure parsing of queries in extension scripts sees the results of + immediately-preceding DDL (Julien Rouhaud, Tom Lane) + + + + Due to lack of a cache flush step between commands in an extension + script file, non-utility queries might not see the effects of an + immediately preceding catalog change, such as ALTER TABLE + ... RENAME. + + + + + + Skip tablespace privilege checks when ALTER TABLE ... ALTER + COLUMN TYPE rebuilds an existing index (Noah Misch) + + + + The command failed if the calling user did not currently have + CREATE privilege for the tablespace containing the index. + That behavior seems unhelpful, so skip the check, allowing the + index to be rebuilt where it is. + + + + + + Fix ALTER TABLE ... VALIDATE CONSTRAINT to not recurse + to child tables when the constraint is marked NO INHERIT + (Amit Langote) + + + + This fix prevents unwanted constraint does not exist failures + when no matching constraint is present in the child tables. + + + + + + Fix VACUUM to account properly for pages that could not + be scanned due to conflicting page pins (Andrew Gierth) + + + + This tended to lead to underestimation of the number of tuples in + the table. In the worst case of a small heavily-contended + table, VACUUM could incorrectly report that the table + contained no tuples, leading to very bad planning choices. + + + + + + Ensure that bulk-tuple-transfer loops within a hash join are + interruptible by query cancel requests (Tom Lane, Thomas Munro) + + + + + + Fix cursor_to_xml() to produce valid output + with tableforest = false + (Thomas Munro, Peter Eisentraut) + + + + Previously it failed to produce a wrapping <table> + element. + + + + + + Improve performance of pg_timezone_names view + (Tom Lane, David Rowley) + + + + + + Fix sloppy handling of corner-case errors from lseek() + and close() (Tom Lane) + + + + Neither of these system calls are likely to fail in typical situations, + but if they did, fd.c could get quite confused. + + + + + + Fix incorrect check for whether postmaster is running as a Windows + service (Michael Paquier) + + + + This could result in attempting to write to the event log when that + isn't accessible, so that no logging happens at all. + + + + + + Fix ecpg to support COMMIT PREPARED + and ROLLBACK PREPARED (Masahiko Sawada) + + + + + + Fix a double-free error when processing dollar-quoted string literals + in ecpg (Michael Meskes) + + + + + + In pg_dump, fix incorrect schema and owner marking for + comments and security labels of some types of database objects + (Giuseppe Broccolo, Tom Lane) + + + + In simple cases this caused no ill effects; but for example, a + schema-selective restore might omit comments it should include, because + they were not marked as belonging to the schema of their associated + object. + + + + + + Avoid emitting an invalid list file in pg_restore -l + when SQL object names contain newlines (Tom Lane) + + + + Replace newlines by spaces, which is sufficient to make the output + valid for pg_restore -L's purposes. + + + + + + Fix pg_upgrade to transfer comments and security labels + attached to large objects (blobs) (Stephen Frost) + + + + Previously, blobs were correctly transferred to the new database, but + any comments or security labels attached to them were lost. + + + + + + Improve error handling + in contrib/adminpack's pg_file_write() + function (Noah Misch) + + + + Notably, it failed to detect errors reported + by fclose(). + + + + + + In contrib/dblink, avoid leaking the previous unnamed + connection when establishing a new unnamed connection (Joe Conway) + + + + + + Support OpenSSL 1.1.0 (Heikki Linnakangas, Andreas Karlsson, Tom Lane) + + + + This is a back-patch of work previously done in newer branches; + it's needed since many platforms are adopting newer OpenSSL versions. + + + + + + Support Tcl 8.6 in MSVC builds (Álvaro Herrera) + + + + + + Sync our copy of the timezone library with IANA release tzcode2017b + (Tom Lane) + + + + This fixes a bug affecting some DST transitions in January 2038. + + + + + + Update time zone data files to tzdata release 2017b + for DST law changes in Chile, Haiti, and Mongolia, plus historical + corrections for Ecuador, Kazakhstan, Liberia, and Spain. + Switch to numeric abbreviations for numerous time zones in South + America, the Pacific and Indian oceans, and some Asian and Middle + Eastern countries. + + + + The IANA time zone database previously provided textual abbreviations + for all time zones, sometimes making up abbreviations that have little + or no currency among the local population. They are in process of + reversing that policy in favor of using numeric UTC offsets in zones + where there is no evidence of real-world use of an English + abbreviation. At least for the time being, PostgreSQL + will continue to accept such removed abbreviations for timestamp input. + But they will not be shown in the pg_timezone_names + view nor used for output. + + + + + + Use correct daylight-savings rules for POSIX-style time zone names + in MSVC builds (David Rowley) + + + + The Microsoft MSVC build scripts neglected to install + the posixrules file in the timezone directory tree. + This resulted in the timezone code falling back to its built-in + rule about what DST behavior to assume for a POSIX-style time zone + name. For historical reasons that still corresponds to the DST rules + the USA was using before 2007 (i.e., change on first Sunday in April + and last Sunday in October). With this fix, a POSIX-style zone name + will use the current and historical DST transition dates of + the US/Eastern zone. If you don't want that, remove + the posixrules file, or replace it with a copy of some + other zone file (see ). Note that + due to caching, you may need to restart the server to get such changes + to take effect. + + + + + + + + + + Release 9.2.20 + + + Release date: + 2017-02-09 + + + + This release contains a variety of fixes from 9.2.19. + For information about new features in the 9.2 major release, see + . + + + + Migration to Version 9.2.20 + + + A dump/restore is not required for those running 9.2.X. + + + + However, if your installation has been affected by the bug described in + the first changelog entry below, then after updating you may need + to take action to repair corrupted indexes. + + + + Also, if you are upgrading from a version earlier than 9.2.11, + see . + + + + + + Changes + + + + + + Fix a race condition that could cause indexes built + with CREATE INDEX CONCURRENTLY to be corrupt + (Pavan Deolasee, Tom Lane) + + + + If CREATE INDEX CONCURRENTLY was used to build an index + that depends on a column not previously indexed, then rows + updated by transactions that ran concurrently with + the CREATE INDEX command could have received incorrect + index entries. If you suspect this may have happened, the most + reliable solution is to rebuild affected indexes after installing + this update. + + + + + + Unconditionally WAL-log creation of the init fork for an + unlogged table (Michael Paquier) + + + + Previously, this was skipped when + = minimal, but actually it's necessary even in that case + to ensure that the unlogged table is properly reset to empty after a + crash. + + + + + + + Fix WAL page header validation when re-reading segments (Takayuki + Tsunakawa, Amit Kapila) + + + + In corner cases, a spurious out-of-sequence TLI error + could be reported during recovery. + + + + + + If the stats collector dies during hot standby, restart it (Takayuki + Tsunakawa) + + + + + + Check for interrupts while hot standby is waiting for a conflicting + query (Simon Riggs) + + + + + + Avoid constantly respawning the autovacuum launcher in a corner case + (Amit Khandekar) + + + + This fix avoids problems when autovacuum is nominally off and there + are some tables that require freezing, but all such tables are + already being processed by autovacuum workers. + + + + + + Fix check for when an extension member object can be dropped (Tom Lane) + + + + Extension upgrade scripts should be able to drop member objects, + but this was disallowed for serial-column sequences, and possibly + other cases. + + + + + + Make sure ALTER TABLE preserves index tablespace + assignments when rebuilding indexes (Tom Lane, Michael Paquier) + + + + Previously, non-default settings + of could result in broken + indexes. + + + + + + Prevent dropping a foreign-key constraint if there are pending + trigger events for the referenced relation (Tom Lane) + + + + This avoids could not find trigger NNN + or relation NNN has no triggers errors. + + + + + + Fix processing of OID column when a table with OIDs is associated to + a parent with OIDs via ALTER TABLE ... INHERIT (Amit + Langote) + + + + The OID column should be treated the same as regular user columns in + this case, but it wasn't, leading to odd behavior in later + inheritance changes. + + + + + + Check for serializability conflicts before reporting + constraint-violation failures (Thomas Munro) + + + + When using serializable transaction isolation, it is desirable + that any error due to concurrent transactions should manifest + as a serialization failure, thereby cueing the application that + a retry might succeed. Unfortunately, this does not reliably + happen for duplicate-key failures caused by concurrent insertions. + This change ensures that such an error will be reported as a + serialization error if the application explicitly checked for + the presence of a conflicting key (and did not find it) earlier + in the transaction. + + + + + + Ensure that column typmods are determined accurately for + multi-row VALUES constructs (Tom Lane) + + + + This fixes problems occurring when the first value in a column has a + determinable typmod (e.g., length for a varchar value) but + later values don't share the same limit. + + + + + + Throw error for an unfinished Unicode surrogate pair at the end of a + Unicode string (Tom Lane) + + + + Normally, a Unicode surrogate leading character must be followed by a + Unicode surrogate trailing character, but the check for this was + missed if the leading character was the last character in a Unicode + string literal (U&'...') or Unicode identifier + (U&"..."). + + + + + + Ensure that a purely negative text search query, such + as !foo, matches empty tsvectors (Tom Dunstan) + + + + Such matches were found by GIN index searches, but not by sequential + scans or GiST index searches. + + + + + + Prevent crash when ts_rewrite() replaces a non-top-level + subtree with an empty query (Artur Zakirov) + + + + + + Fix performance problems in ts_rewrite() (Tom Lane) + + + + + + Fix ts_rewrite()'s handling of nested NOT operators + (Tom Lane) + + + + + + Fix array_fill() to handle empty arrays properly (Tom Lane) + + + + + + Fix one-byte buffer overrun in quote_literal_cstr() + (Heikki Linnakangas) + + + + The overrun occurred only if the input consisted entirely of single + quotes and/or backslashes. + + + + + + Prevent multiple calls of pg_start_backup() + and pg_stop_backup() from running concurrently (Michael + Paquier) + + + + This avoids an assertion failure, and possibly worse things, if + someone tries to run these functions in parallel. + + + + + + Avoid discarding interval-to-interval casts + that aren't really no-ops (Tom Lane) + + + + In some cases, a cast that should result in zeroing out + low-order interval fields was mistakenly deemed to be a + no-op and discarded. An example is that casting from INTERVAL + MONTH to INTERVAL YEAR failed to clear the months field. + + + + + + Fix pg_dump to dump user-defined casts and transforms + that use built-in functions (Stephen Frost) + + + + + + Fix possible pg_basebackup failure on standby + server when including WAL files (Amit Kapila, Robert Haas) + + + + + + Ensure that the Python exception objects we create for PL/Python are + properly reference-counted (Rafa de la Torre, Tom Lane) + + + + This avoids failures if the objects are used after a Python garbage + collection cycle has occurred. + + + + + + Fix PL/Tcl to support triggers on tables that have .tupno + as a column name (Tom Lane) + + + + This matches the (previously undocumented) behavior of + PL/Tcl's spi_exec and spi_execp commands, + namely that a magic .tupno column is inserted only if + there isn't a real column named that. + + + + + + Allow DOS-style line endings in ~/.pgpass files, + even on Unix (Vik Fearing) + + + + This change simplifies use of the same password file across Unix and + Windows machines. + + + + + + Fix one-byte buffer overrun if ecpg is given a file + name that ends with a dot (Takayuki Tsunakawa) + + + + + + Fix psql's tab completion for ALTER DEFAULT + PRIVILEGES (Gilles Darold, Stephen Frost) + + + + + + In psql, treat an empty or all-blank setting of + the PAGER environment variable as meaning no + pager (Tom Lane) + + + + Previously, such a setting caused output intended for the pager to + vanish entirely. + + + + + + Improve contrib/dblink's reporting of + low-level libpq errors, such as out-of-memory + (Joe Conway) + + + + + + On Windows, ensure that environment variable changes are propagated + to DLLs built with debug options (Christian Ullrich) + + + + + + Sync our copy of the timezone library with IANA release tzcode2016j + (Tom Lane) + + + + This fixes various issues, most notably that timezone data + installation failed if the target directory didn't support hard + links. + + + + + + Update time zone data files to tzdata release 2016j + for DST law changes in northern Cyprus (adding a new zone + Asia/Famagusta), Russia (adding a new zone Europe/Saratov), Tonga, + and Antarctica/Casey. + Historical corrections for Italy, Kazakhstan, Malta, and Palestine. + Switch to preferring numeric zone abbreviations for Tonga. + + + + + + + + + + Release 9.2.19 + + + Release date: + 2016-10-27 + + + + This release contains a variety of fixes from 9.2.18. + For information about new features in the 9.2 major release, see + . + + + + Migration to Version 9.2.19 + + + A dump/restore is not required for those running 9.2.X. + + + + However, if you are upgrading from a version earlier than 9.2.11, + see . + + + + + + Changes + + + + + + Fix EvalPlanQual rechecks involving CTE scans (Tom Lane) + + + + The recheck would always see the CTE as returning no rows, typically + leading to failure to update rows that were recently updated. + + + + + + Fix improper repetition of previous results from hashed aggregation in + a subquery (Andrew Gierth) + + + + The test to see if we can reuse a previously-computed hash table of + the aggregate state values neglected the possibility of an outer query + reference appearing in an aggregate argument expression. A change in + the value of such a reference should lead to recalculating the hash + table, but did not. + + + + + + Fix EXPLAIN to emit valid XML when + is on (Markus Winand) + + + + Previously the XML output-format option produced syntactically invalid + tags such as <I/O-Read-Time>. That is now + rendered as <I-O-Read-Time>. + + + + + + Suppress printing of zeroes for unmeasured times + in EXPLAIN (Maksim Milyutin) + + + + Certain option combinations resulted in printing zero values for times + that actually aren't ever measured in that combination. Our general + policy in EXPLAIN is not to print such fields at all, so + do that consistently in all cases. + + + + + + Fix timeout length when VACUUM is waiting for exclusive + table lock so that it can truncate the table (Simon Riggs) + + + + The timeout was meant to be 50 milliseconds, but it was actually only + 50 microseconds, causing VACUUM to give up on truncation + much more easily than intended. Set it to the intended value. + + + + + + Fix bugs in merging inherited CHECK constraints while + creating or altering a table (Tom Lane, Amit Langote) + + + + Allow identical CHECK constraints to be added to a parent + and child table in either order. Prevent merging of a valid + constraint from the parent table with a NOT VALID + constraint on the child. Likewise, prevent merging of a NO + INHERIT child constraint with an inherited constraint. + + + + + + Remove artificial restrictions on the values accepted + by numeric_in() and numeric_recv() + (Tom Lane) + + + + We allow numeric values up to the limit of the storage format (more + than 1e100000), so it seems fairly pointless + that numeric_in() rejected scientific-notation exponents + above 1000. Likewise, it was silly for numeric_recv() to + reject more than 1000 digits in an input value. + + + + + + Avoid very-low-probability data corruption due to testing tuple + visibility without holding buffer lock (Thomas Munro, Peter Geoghegan, + Tom Lane) + + + + + + Fix file descriptor leakage when truncating a temporary relation of + more than 1GB (Andres Freund) + + + + + + Disallow starting a standalone backend with standby_mode + turned on (Michael Paquier) + + + + This can't do anything useful, since there will be no WAL receiver + process to fetch more WAL data; and it could result in misbehavior + in code that wasn't designed with this situation in mind. + + + + + + Don't try to share SSL contexts across multiple connections + in libpq (Heikki Linnakangas) + + + + This led to assorted corner-case bugs, particularly when trying to use + different SSL parameters for different connections. + + + + + + Avoid corner-case memory leak in libpq (Tom Lane) + + + + The reported problem involved leaking an error report + during PQreset(), but there might be related cases. + + + + + + Make ecpg's + + + + + In pg_dump, never dump range constructor functions + (Tom Lane) + + + + This oversight led to pg_upgrade failures with + extensions containing range types, due to duplicate creation of the + constructor functions. + + + + + + Fix contrib/intarray/bench/bench.pl to print the results + of the EXPLAIN it does when given the + + + + + Update Windows time zone mapping to recognize some time zone names + added in recent Windows versions (Michael Paquier) + + + + + + Prevent failure of obsolete dynamic time zone abbreviations (Tom Lane) + + + + If a dynamic time zone abbreviation does not match any entry in the + referenced time zone, treat it as equivalent to the time zone name. + This avoids unexpected failures when IANA removes abbreviations from + their time zone database, as they did in tzdata + release 2016f and seem likely to do again in the future. The + consequences were not limited to not recognizing the individual + abbreviation; any mismatch caused + the pg_timezone_abbrevs view to fail altogether. + + + + + + Update time zone data files to tzdata release 2016h + for DST law changes in Palestine and Turkey, plus historical + corrections for Turkey and some regions of Russia. + Switch to numeric abbreviations for some time zones in Antarctica, + the former Soviet Union, and Sri Lanka. + + + + The IANA time zone database previously provided textual abbreviations + for all time zones, sometimes making up abbreviations that have little + or no currency among the local population. They are in process of + reversing that policy in favor of using numeric UTC offsets in zones + where there is no evidence of real-world use of an English + abbreviation. At least for the time being, PostgreSQL + will continue to accept such removed abbreviations for timestamp input. + But they will not be shown in the pg_timezone_names + view nor used for output. + + + + In this update, AMT is no longer shown as being in use to + mean Armenia Time. Therefore, we have changed the Default + abbreviation set to interpret it as Amazon Time, thus UTC-4 not UTC+4. + + + + + + + + Release 9.2.18 - - Release Date - 2016-08-11 - + + Release date: + 2016-08-11 + This release contains a variety of fixes from 9.2.17. @@ -345,10 +2008,10 @@ Release 9.2.17 - - Release Date - 2016-05-12 - + + Release date: + 2016-05-12 + This release contains a variety of fixes from 9.2.16. @@ -541,10 +2204,10 @@ Release 9.2.16 - - Release Date - 2016-03-31 - + + Release date: + 2016-03-31 + This release contains a variety of fixes from 9.2.15. @@ -629,7 +2292,7 @@ This dodges a portability problem on FreeBSD-derived platforms - (including OS X). + (including macOS). @@ -747,10 +2410,10 @@ Release 9.2.15 - - Release Date - 2016-02-11 - + + Release date: + 2016-02-11 + This release contains a variety of fixes from 9.2.14. @@ -1291,10 +2954,10 @@ Release 9.2.14 - - Release Date - 2015-10-08 - + + Release date: + 2015-10-08 + This release contains a variety of fixes from 9.2.13. @@ -1888,10 +3551,10 @@ Branch: REL9_2_STABLE [e90a629e1] 2015-09-22 14:58:38 -0700 Release 9.2.13 - - Release Date - 2015-06-12 - + + Release date: + 2015-06-12 + This release contains a small number of fixes from 9.2.12. @@ -1956,10 +3619,10 @@ Branch: REL9_2_STABLE [e90a629e1] 2015-09-22 14:58:38 -0700 Release 9.2.12 - - Release Date - 2015-06-04 - + + Release date: + 2015-06-04 + This release contains a small number of fixes from 9.2.11. @@ -2051,10 +3714,10 @@ Branch: REL9_2_STABLE [e90a629e1] 2015-09-22 14:58:38 -0700 Release 9.2.11 - - Release Date - 2015-05-22 - + + Release date: + 2015-05-22 + This release contains a variety of fixes from 9.2.10. @@ -2633,10 +4296,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 Release 9.2.10 - - Release Date - 2015-02-05 - + + Release date: + 2015-02-05 + This release contains a variety of fixes from 9.2.9. @@ -3190,7 +4853,7 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - Warn if OS X's setlocale() starts an unwanted extra + Warn if macOS's setlocale() starts an unwanted extra thread inside the postmaster (Noah Misch) @@ -3550,10 +5213,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 Release 9.2.9 - - Release Date - 2014-07-24 - + + Release date: + 2014-07-24 + This release contains a variety of fixes from 9.2.8. @@ -3899,7 +5562,7 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 - Fix linking of libpython on OS X (Tom Lane) + Fix linking of libpython on macOS (Tom Lane) @@ -4031,10 +5694,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 Release 9.2.8 - - Release Date - 2014-03-20 - + + Release date: + 2014-03-20 + This release contains a variety of fixes from 9.2.7. @@ -4096,7 +5759,7 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 This prevents scenarios wherein a pathological regular expression - could lock up a server process uninterruptably for a long time. + could lock up a server process uninterruptibly for a long time. @@ -4220,10 +5883,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 Release 9.2.7 - - Release Date - 2014-02-20 - + + Release date: + 2014-02-20 + This release contains a variety of fixes from 9.2.6. @@ -4827,10 +6490,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 Release 9.2.6 - - Release Date - 2013-12-05 - + + Release date: + 2013-12-05 + This release contains a variety of fixes from 9.2.5. @@ -5164,10 +6827,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 Release 9.2.5 - - Release Date - 2013-10-10 - + + Release date: + 2013-10-10 + This release contains a variety of fixes from 9.2.4. @@ -5583,10 +7246,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 Release 9.2.4 - - Release Date - 2013-04-04 - + + Release date: + 2013-04-04 + This release contains a variety of fixes from 9.2.3. @@ -5990,10 +7653,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 Release 9.2.3 - - Release Date - 2013-02-07 - + + Release date: + 2013-02-07 + This release contains a variety of fixes from 9.2.2. @@ -6441,10 +8104,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 Release 9.2.2 - - Release Date - 2012-12-06 - + + Release date: + 2012-12-06 + This release contains a variety of fixes from 9.2.1. @@ -7165,10 +8828,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 Release 9.2.1 - - Release Date - 2012-09-24 - + + Release date: + 2012-09-24 + This release contains a variety of fixes from 9.2.0. @@ -7333,10 +8996,10 @@ Branch: REL9_2_STABLE [6b700301c] 2015-02-17 16:03:00 +0100 Release 9.2 - - Release Date - 2012-09-10 - + + Release date: + 2012-09-10 + Overview diff --git a/doc/src/sgml/release-9.3.sgml b/doc/src/sgml/release-9.3.sgml index c75f1109e1..9eaf5d54db 100644 --- a/doc/src/sgml/release-9.3.sgml +++ b/doc/src/sgml/release-9.3.sgml @@ -1,13 +1,1909 @@ + + Release 9.3.19 + + + Release date: + 2017-08-31 + + + + This release contains a small number of fixes from 9.3.18. + For information about new features in the 9.3 major release, see + . + + + + Migration to Version 9.3.19 + + + A dump/restore is not required for those running 9.3.X. + + + + However, if you are upgrading from a version earlier than 9.3.18, + see . + + + + + + Changes + + + + + + Show foreign tables + in information_schema.table_privileges + view (Peter Eisentraut) + + + + All other relevant information_schema views include + foreign tables, but this one ignored them. + + + + Since this view definition is installed by initdb, + merely upgrading will not fix the problem. If you need to fix this + in an existing installation, you can, as a superuser, do this + in psql: + +BEGIN; +DROP SCHEMA information_schema CASCADE; +\i SHAREDIR/information_schema.sql +COMMIT; + + (Run pg_config --sharedir if you're uncertain + where SHAREDIR is.) This must be repeated in each + database to be fixed. + + + + + + Clean up handling of a fatal exit (e.g., due to receipt + of SIGTERM) that occurs while trying to execute + a ROLLBACK of a failed transaction (Tom Lane) + + + + This situation could result in an assertion failure. In production + builds, the exit would still occur, but it would log an unexpected + message about cannot drop active portal. + + + + + + Remove assertion that could trigger during a fatal exit (Tom Lane) + + + + + + Correctly identify columns that are of a range type or domain type over + a composite type or domain type being searched for (Tom Lane) + + + + Certain ALTER commands that change the definition of a + composite type or domain type are supposed to fail if there are any + stored values of that type in the database, because they lack the + infrastructure needed to update or check such values. Previously, + these checks could miss relevant values that are wrapped inside range + types or sub-domains, possibly allowing the database to become + inconsistent. + + + + + + Fix crash in pg_restore when using parallel mode and + using a list file to select a subset of items to restore + (Fabrízio de Royes Mello) + + + + + + Change ecpg's parser to allow RETURNING + clauses without attached C variables (Michael Meskes) + + + + This allows ecpg programs to contain SQL constructs + that use RETURNING internally (for example, inside a CTE) + rather than using it to define values to be returned to the client. + + + + + + Improve selection of compiler flags for PL/Perl on Windows (Tom Lane) + + + + This fix avoids possible crashes of PL/Perl due to inconsistent + assumptions about the width of time_t values. + A side-effect that may be visible to extension developers is + that _USE_32BIT_TIME_T is no longer defined globally + in PostgreSQL Windows builds. This is not expected + to cause problems, because type time_t is not used + in any PostgreSQL API definitions. + + + + + + + + + + Release 9.3.18 + + + Release date: + 2017-08-10 + + + + This release contains a variety of fixes from 9.3.17. + For information about new features in the 9.3 major release, see + . + + + + Migration to Version 9.3.18 + + + A dump/restore is not required for those running 9.3.X. + + + + However, if you use foreign data servers that make use of user + passwords for authentication, see the first changelog entry below. + + + + Also, if you are upgrading from a version earlier than 9.3.16, + see . + + + + + + Changes + + + + + + Further restrict visibility + of pg_user_mappings.umoptions, to + protect passwords stored as user mapping options + (Noah Misch) + + + + The fix for CVE-2017-7486 was incorrect: it allowed a user + to see the options in her own user mapping, even if she did not + have USAGE permission on the associated foreign server. + Such options might include a password that had been provided by the + server owner rather than the user herself. + Since information_schema.user_mapping_options does not + show the options in such cases, pg_user_mappings + should not either. + (CVE-2017-7547) + + + + By itself, this patch will only fix the behavior in newly initdb'd + databases. If you wish to apply this change in an existing database, + you will need to do the following: + + + + + + Restart the postmaster after adding allow_system_table_mods + = true to postgresql.conf. (In versions + supporting ALTER SYSTEM, you can use that to make the + configuration change, but you'll still need a restart.) + + + + + + In each database of the cluster, + run the following commands as superuser: + +SET search_path = pg_catalog; +CREATE OR REPLACE VIEW pg_user_mappings AS + SELECT + U.oid AS umid, + S.oid AS srvid, + S.srvname AS srvname, + U.umuser AS umuser, + CASE WHEN U.umuser = 0 THEN + 'public' + ELSE + A.rolname + END AS usename, + CASE WHEN (U.umuser <> 0 AND A.rolname = current_user + AND (pg_has_role(S.srvowner, 'USAGE') + OR has_server_privilege(S.oid, 'USAGE'))) + OR (U.umuser = 0 AND pg_has_role(S.srvowner, 'USAGE')) + OR (SELECT rolsuper FROM pg_authid WHERE rolname = current_user) + THEN U.umoptions + ELSE NULL END AS umoptions + FROM pg_user_mapping U + LEFT JOIN pg_authid A ON (A.oid = U.umuser) JOIN + pg_foreign_server S ON (U.umserver = S.oid); + + + + + + + Do not forget to include the template0 + and template1 databases, or the vulnerability will still + exist in databases you create later. To fix template0, + you'll need to temporarily make it accept connections. + In PostgreSQL 9.5 and later, you can use + +ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true; + + and then after fixing template0, undo that with + +ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false; + + In prior versions, instead use + +UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; +UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; + + + + + + + Finally, remove the allow_system_table_mods configuration + setting, and again restart the postmaster. + + + + + + + + Disallow empty passwords in all password-based authentication methods + (Heikki Linnakangas) + + + + libpq ignores empty password specifications, and does + not transmit them to the server. So, if a user's password has been + set to the empty string, it's impossible to log in with that password + via psql or other libpq-based + clients. An administrator might therefore believe that setting the + password to empty is equivalent to disabling password login. + However, with a modified or non-libpq-based client, + logging in could be possible, depending on which authentication + method is configured. In particular the most common + method, md5, accepted empty passwords. + Change the server to reject empty passwords in all cases. + (CVE-2017-7546) + + + + + + Fix concurrent locking of tuple update chains (Álvaro Herrera) + + + + If several sessions concurrently lock a tuple update chain with + nonconflicting lock modes using an old snapshot, and they all + succeed, it was possible for some of them to nonetheless fail (and + conclude there is no live tuple version) due to a race condition. + This had consequences such as foreign-key checks failing to see a + tuple that definitely exists but is being updated concurrently. + + + + + + Fix potential data corruption when freezing a tuple whose XMAX is a + multixact with exactly one still-interesting member (Teodor Sigaev) + + + + + + On Windows, retry process creation if we fail to reserve the address + range for our shared memory in the new process (Tom Lane, Amit + Kapila) + + + + This is expected to fix infrequent child-process-launch failures that + are probably due to interference from antivirus products. + + + + + + Fix low-probability corruption of shared predicate-lock hash table + in Windows builds (Thomas Munro, Tom Lane) + + + + + + Avoid logging clean closure of an SSL connection as though + it were a connection reset (Michael Paquier) + + + + + + Prevent sending SSL session tickets to clients (Tom Lane) + + + + This fix prevents reconnection failures with ticket-aware client-side + SSL code. + + + + + + Fix code for setting on + Solaris (Tom Lane) + + + + + + Fix statistics collector to honor inquiry messages issued just after + a postmaster shutdown and immediate restart (Tom Lane) + + + + Statistics inquiries issued within half a second of the previous + postmaster shutdown were effectively ignored. + + + + + + Ensure that the statistics collector's receive buffer size is at + least 100KB (Tom Lane) + + + + This reduces the risk of dropped statistics data on older platforms + whose default receive buffer size is less than that. + + + + + + Fix possible creation of an invalid WAL segment when a standby is + promoted just after it processes an XLOG_SWITCH WAL + record (Andres Freund) + + + + + + Fix SIGHUP and SIGUSR1 handling in + walsender processes (Petr Jelinek, Andres Freund) + + + + + + Fix unnecessarily slow restarts of walreceiver + processes due to race condition in postmaster (Tom Lane) + + + + + + Fix cases where an INSERT or UPDATE assigns + to more than one element of a column that is of domain-over-array + type (Tom Lane) + + + + + + Allow window functions to be used in sub-SELECTs that + are within the arguments of an aggregate function (Tom Lane) + + + + + + Move autogenerated array types out of the way during + ALTER ... RENAME (Vik Fearing) + + + + Previously, we would rename a conflicting autogenerated array type + out of the way during CREATE; this fix extends that + behavior to renaming operations. + + + + + + Ensure that ALTER USER ... SET accepts all the syntax + variants that ALTER ROLE ... SET does (Peter Eisentraut) + + + + + + Properly update dependency info when changing a datatype I/O + function's argument or return type from opaque to the + correct type (Heikki Linnakangas) + + + + CREATE TYPE updates I/O functions declared in this + long-obsolete style, but it forgot to record a dependency on the + type, allowing a subsequent DROP TYPE to leave broken + function definitions behind. + + + + + + Reduce memory usage when ANALYZE processes + a tsvector column (Heikki Linnakangas) + + + + + + Fix unnecessary precision loss and sloppy rounding when multiplying + or dividing money values by integers or floats (Tom Lane) + + + + + + Tighten checks for whitespace in functions that parse identifiers, + such as regprocedurein() (Tom Lane) + + + + Depending on the prevailing locale, these functions could + misinterpret fragments of multibyte characters as whitespace. + + + + + + Use relevant #define symbols from Perl while + compiling PL/Perl (Ashutosh Sharma, Tom Lane) + + + + This avoids portability problems, typically manifesting as + a handshake mismatch during library load, when working with + recent Perl versions. + + + + + + In libpq, reset GSS/SASL and SSPI authentication + state properly after a failed connection attempt (Michael Paquier) + + + + Failure to do this meant that when falling back from SSL to non-SSL + connections, a GSS/SASL failure in the SSL attempt would always cause + the non-SSL attempt to fail. SSPI did not fail, but it leaked memory. + + + + + + In psql, fix failure when COPY FROM STDIN + is ended with a keyboard EOF signal and then another COPY + FROM STDIN is attempted (Thomas Munro) + + + + This misbehavior was observed on BSD-derived platforms (including + macOS), but not on most others. + + + + + + Fix pg_dump and pg_restore to + emit REFRESH MATERIALIZED VIEW commands last (Tom Lane) + + + + This prevents errors during dump/restore when a materialized view + refers to tables owned by a different user. + + + + + + Fix pg_dump with the + + + It also now correctly assigns ownership of event triggers; before, + they were restored as being owned by the superuser running the + restore script. + + + + + + Fix pg_dump to not emit invalid SQL for an empty + operator class (Daniel Gustafsson) + + + + + + Fix pg_dump output to stdout on Windows (Kuntal Ghosh) + + + + A compressed plain-text dump written to stdout would contain corrupt + data due to failure to put the file descriptor into binary mode. + + + + + + Fix pg_get_ruledef() to print correct output for + the ON SELECT rule of a view whose columns have been + renamed (Tom Lane) + + + + In some corner cases, pg_dump relies + on pg_get_ruledef() to dump views, so that this error + could result in dump/reload failures. + + + + + + Fix dumping of outer joins with empty constraints, such as the result + of a NATURAL LEFT JOIN with no common columns (Tom Lane) + + + + + + Fix dumping of function expressions in the FROM clause in + cases where the expression does not deparse into something that looks + like a function call (Tom Lane) + + + + + + Fix pg_basebackup output to stdout on Windows + (Haribabu Kommi) + + + + A backup written to stdout would contain corrupt data due to failure + to put the file descriptor into binary mode. + + + + + + Fix pg_upgrade to ensure that the ending WAL record + does not have = minimum + (Bruce Momjian) + + + + This condition could prevent upgraded standby servers from + reconnecting. + + + + + + In postgres_fdw, re-establish connections to remote + servers after ALTER SERVER or ALTER USER + MAPPING commands (Kyotaro Horiguchi) + + + + This ensures that option changes affecting connection parameters will + be applied promptly. + + + + + + In postgres_fdw, allow cancellation of remote + transaction control commands (Robert Haas, Rafia Sabih) + + + + This change allows us to quickly escape a wait for an unresponsive + remote server in many more cases than previously. + + + + + + Always use + + + This supports larger extension libraries on platforms where it makes + a difference. + + + + + + Fix unescaped-braces issue in our build scripts for Microsoft MSVC, + to avoid a warning or error from recent Perl versions (Andrew + Dunstan) + + + + + + In MSVC builds, handle the case where the openssl + library is not within a VC subdirectory (Andrew Dunstan) + + + + + + In MSVC builds, add proper include path for libxml2 + header files (Andrew Dunstan) + + + + This fixes a former need to move things around in standard Windows + installations of libxml2. + + + + + + In MSVC builds, recognize a Tcl library that is + named tcl86.lib (Noah Misch) + + + + + + + + + + Release 9.3.17 + + + Release date: + 2017-05-11 + + + + This release contains a variety of fixes from 9.3.16. + For information about new features in the 9.3 major release, see + . + + + + Migration to Version 9.3.17 + + + A dump/restore is not required for those running 9.3.X. + + + + However, if you use foreign data servers that make use of user + passwords for authentication, see the first changelog entry below. + + + + Also, if you are upgrading from a version earlier than 9.3.16, + see . + + + + + + Changes + + + + + + Restrict visibility + of pg_user_mappings.umoptions, to + protect passwords stored as user mapping options + (Michael Paquier, Feike Steenbergen) + + + + The previous coding allowed the owner of a foreign server object, + or anyone he has granted server USAGE permission to, + to see the options for all user mappings associated with that server. + This might well include passwords for other users. + Adjust the view definition to match the behavior of + information_schema.user_mapping_options, namely that + these options are visible to the user being mapped, or if the mapping + is for PUBLIC and the current user is the server + owner, or if the current user is a superuser. + (CVE-2017-7486) + + + + By itself, this patch will only fix the behavior in newly initdb'd + databases. If you wish to apply this change in an existing database, + follow the corrected procedure shown in the changelog entry for + CVE-2017-7547, in . + + + + + + Prevent exposure of statistical information via leaky operators + (Peter Eisentraut) + + + + Some selectivity estimation functions in the planner will apply + user-defined operators to values obtained + from pg_statistic, such as most common values and + histogram entries. This occurs before table permissions are checked, + so a nefarious user could exploit the behavior to obtain these values + for table columns he does not have permission to read. To fix, + fall back to a default estimate if the operator's implementation + function is not certified leak-proof and the calling user does not have + permission to read the table column whose statistics are needed. + At least one of these criteria is satisfied in most cases in practice. + (CVE-2017-7484) + + + + + + Restore libpq's recognition of + the PGREQUIRESSL environment variable (Daniel Gustafsson) + + + + Processing of this environment variable was unintentionally dropped + in PostgreSQL 9.3, but its documentation remained. + This creates a security hazard, since users might be relying on the + environment variable to force SSL-encrypted connections, but that + would no longer be guaranteed. Restore handling of the variable, + but give it lower priority than PGSSLMODE, to avoid + breaking configurations that work correctly with post-9.3 code. + (CVE-2017-7485) + + + + + + Fix possible corruption of init forks of unlogged indexes + (Robert Haas, Michael Paquier) + + + + This could result in an unlogged index being set to an invalid state + after a crash and restart. Such a problem would persist until the + index was dropped and rebuilt. + + + + + + Fix incorrect reconstruction of pg_subtrans entries + when a standby server replays a prepared but uncommitted two-phase + transaction (Tom Lane) + + + + In most cases this turned out to have no visible ill effects, but in + corner cases it could result in circular references + in pg_subtrans, potentially causing infinite loops + in queries that examine rows modified by the two-phase transaction. + + + + + + Ensure parsing of queries in extension scripts sees the results of + immediately-preceding DDL (Julien Rouhaud, Tom Lane) + + + + Due to lack of a cache flush step between commands in an extension + script file, non-utility queries might not see the effects of an + immediately preceding catalog change, such as ALTER TABLE + ... RENAME. + + + + + + Skip tablespace privilege checks when ALTER TABLE ... ALTER + COLUMN TYPE rebuilds an existing index (Noah Misch) + + + + The command failed if the calling user did not currently have + CREATE privilege for the tablespace containing the index. + That behavior seems unhelpful, so skip the check, allowing the + index to be rebuilt where it is. + + + + + + Fix ALTER TABLE ... VALIDATE CONSTRAINT to not recurse + to child tables when the constraint is marked NO INHERIT + (Amit Langote) + + + + This fix prevents unwanted constraint does not exist failures + when no matching constraint is present in the child tables. + + + + + + Fix VACUUM to account properly for pages that could not + be scanned due to conflicting page pins (Andrew Gierth) + + + + This tended to lead to underestimation of the number of tuples in + the table. In the worst case of a small heavily-contended + table, VACUUM could incorrectly report that the table + contained no tuples, leading to very bad planning choices. + + + + + + Ensure that bulk-tuple-transfer loops within a hash join are + interruptible by query cancel requests (Tom Lane, Thomas Munro) + + + + + + Fix cursor_to_xml() to produce valid output + with tableforest = false + (Thomas Munro, Peter Eisentraut) + + + + Previously it failed to produce a wrapping <table> + element. + + + + + + Improve performance of pg_timezone_names view + (Tom Lane, David Rowley) + + + + + + Fix sloppy handling of corner-case errors from lseek() + and close() (Tom Lane) + + + + Neither of these system calls are likely to fail in typical situations, + but if they did, fd.c could get quite confused. + + + + + + Fix incorrect check for whether postmaster is running as a Windows + service (Michael Paquier) + + + + This could result in attempting to write to the event log when that + isn't accessible, so that no logging happens at all. + + + + + + Fix ecpg to support COMMIT PREPARED + and ROLLBACK PREPARED (Masahiko Sawada) + + + + + + Fix a double-free error when processing dollar-quoted string literals + in ecpg (Michael Meskes) + + + + + + In pg_dump, fix incorrect schema and owner marking for + comments and security labels of some types of database objects + (Giuseppe Broccolo, Tom Lane) + + + + In simple cases this caused no ill effects; but for example, a + schema-selective restore might omit comments it should include, because + they were not marked as belonging to the schema of their associated + object. + + + + + + Avoid emitting an invalid list file in pg_restore -l + when SQL object names contain newlines (Tom Lane) + + + + Replace newlines by spaces, which is sufficient to make the output + valid for pg_restore -L's purposes. + + + + + + Fix pg_upgrade to transfer comments and security labels + attached to large objects (blobs) (Stephen Frost) + + + + Previously, blobs were correctly transferred to the new database, but + any comments or security labels attached to them were lost. + + + + + + Improve error handling + in contrib/adminpack's pg_file_write() + function (Noah Misch) + + + + Notably, it failed to detect errors reported + by fclose(). + + + + + + In contrib/dblink, avoid leaking the previous unnamed + connection when establishing a new unnamed connection (Joe Conway) + + + + + + Fix contrib/pg_trgm's extraction of trigrams from regular + expressions (Tom Lane) + + + + In some cases it would produce a broken data structure that could never + match anything, leading to GIN or GiST indexscans that use a trigram + index not finding any matches to the regular expression. + + + + + + In contrib/postgres_fdw, + transmit query cancellation requests to the remote server + (Michael Paquier, Etsuro Fujita) + + + + Previously, a local query cancellation request did not cause an + already-sent remote query to terminate early. This is a back-patch + of work originally done for 9.6. + + + + + + Support OpenSSL 1.1.0 (Heikki Linnakangas, Andreas Karlsson, Tom Lane) + + + + This is a back-patch of work previously done in newer branches; + it's needed since many platforms are adopting newer OpenSSL versions. + + + + + + Support Tcl 8.6 in MSVC builds (Álvaro Herrera) + + + + + + Sync our copy of the timezone library with IANA release tzcode2017b + (Tom Lane) + + + + This fixes a bug affecting some DST transitions in January 2038. + + + + + + Update time zone data files to tzdata release 2017b + for DST law changes in Chile, Haiti, and Mongolia, plus historical + corrections for Ecuador, Kazakhstan, Liberia, and Spain. + Switch to numeric abbreviations for numerous time zones in South + America, the Pacific and Indian oceans, and some Asian and Middle + Eastern countries. + + + + The IANA time zone database previously provided textual abbreviations + for all time zones, sometimes making up abbreviations that have little + or no currency among the local population. They are in process of + reversing that policy in favor of using numeric UTC offsets in zones + where there is no evidence of real-world use of an English + abbreviation. At least for the time being, PostgreSQL + will continue to accept such removed abbreviations for timestamp input. + But they will not be shown in the pg_timezone_names + view nor used for output. + + + + + + Use correct daylight-savings rules for POSIX-style time zone names + in MSVC builds (David Rowley) + + + + The Microsoft MSVC build scripts neglected to install + the posixrules file in the timezone directory tree. + This resulted in the timezone code falling back to its built-in + rule about what DST behavior to assume for a POSIX-style time zone + name. For historical reasons that still corresponds to the DST rules + the USA was using before 2007 (i.e., change on first Sunday in April + and last Sunday in October). With this fix, a POSIX-style zone name + will use the current and historical DST transition dates of + the US/Eastern zone. If you don't want that, remove + the posixrules file, or replace it with a copy of some + other zone file (see ). Note that + due to caching, you may need to restart the server to get such changes + to take effect. + + + + + + + + + + Release 9.3.16 + + + Release date: + 2017-02-09 + + + + This release contains a variety of fixes from 9.3.15. + For information about new features in the 9.3 major release, see + . + + + + Migration to Version 9.3.16 + + + A dump/restore is not required for those running 9.3.X. + + + + However, if your installation has been affected by the bug described in + the first changelog entry below, then after updating you may need + to take action to repair corrupted indexes. + + + + Also, if you are upgrading from a version earlier than 9.3.15, + see . + + + + + + Changes + + + + + + Fix a race condition that could cause indexes built + with CREATE INDEX CONCURRENTLY to be corrupt + (Pavan Deolasee, Tom Lane) + + + + If CREATE INDEX CONCURRENTLY was used to build an index + that depends on a column not previously indexed, then rows + updated by transactions that ran concurrently with + the CREATE INDEX command could have received incorrect + index entries. If you suspect this may have happened, the most + reliable solution is to rebuild affected indexes after installing + this update. + + + + + + Unconditionally WAL-log creation of the init fork for an + unlogged table (Michael Paquier) + + + + Previously, this was skipped when + = minimal, but actually it's necessary even in that case + to ensure that the unlogged table is properly reset to empty after a + crash. + + + + + + If the stats collector dies during hot standby, restart it (Takayuki + Tsunakawa) + + + + + + Ensure that hot standby feedback works correctly when it's enabled at + standby server start (Ants Aasma, Craig Ringer) + + + + + + Check for interrupts while hot standby is waiting for a conflicting + query (Simon Riggs) + + + + + + Avoid constantly respawning the autovacuum launcher in a corner case + (Amit Khandekar) + + + + This fix avoids problems when autovacuum is nominally off and there + are some tables that require freezing, but all such tables are + already being processed by autovacuum workers. + + + + + + Fix check for when an extension member object can be dropped (Tom Lane) + + + + Extension upgrade scripts should be able to drop member objects, + but this was disallowed for serial-column sequences, and possibly + other cases. + + + + + + Make sure ALTER TABLE preserves index tablespace + assignments when rebuilding indexes (Tom Lane, Michael Paquier) + + + + Previously, non-default settings + of could result in broken + indexes. + + + + + + Prevent dropping a foreign-key constraint if there are pending + trigger events for the referenced relation (Tom Lane) + + + + This avoids could not find trigger NNN + or relation NNN has no triggers errors. + + + + + + Fix processing of OID column when a table with OIDs is associated to + a parent with OIDs via ALTER TABLE ... INHERIT (Amit + Langote) + + + + The OID column should be treated the same as regular user columns in + this case, but it wasn't, leading to odd behavior in later + inheritance changes. + + + + + + Report correct object identity during ALTER TEXT SEARCH + CONFIGURATION (Artur Zakirov) + + + + The wrong catalog OID was reported to extensions such as logical + decoding. + + + + + + Check for serializability conflicts before reporting + constraint-violation failures (Thomas Munro) + + + + When using serializable transaction isolation, it is desirable + that any error due to concurrent transactions should manifest + as a serialization failure, thereby cueing the application that + a retry might succeed. Unfortunately, this does not reliably + happen for duplicate-key failures caused by concurrent insertions. + This change ensures that such an error will be reported as a + serialization error if the application explicitly checked for + the presence of a conflicting key (and did not find it) earlier + in the transaction. + + + + + + Prevent multicolumn expansion of foo.* in + an UPDATE source expression (Tom Lane) + + + + This led to UPDATE target count mismatch --- internal + error. Now the syntax is understood as a whole-row variable, + as it would be in other contexts. + + + + + + Ensure that column typmods are determined accurately for + multi-row VALUES constructs (Tom Lane) + + + + This fixes problems occurring when the first value in a column has a + determinable typmod (e.g., length for a varchar value) but + later values don't share the same limit. + + + + + + Throw error for an unfinished Unicode surrogate pair at the end of a + Unicode string (Tom Lane) + + + + Normally, a Unicode surrogate leading character must be followed by a + Unicode surrogate trailing character, but the check for this was + missed if the leading character was the last character in a Unicode + string literal (U&'...') or Unicode identifier + (U&"..."). + + + + + + Ensure that a purely negative text search query, such + as !foo, matches empty tsvectors (Tom Dunstan) + + + + Such matches were found by GIN index searches, but not by sequential + scans or GiST index searches. + + + + + + Prevent crash when ts_rewrite() replaces a non-top-level + subtree with an empty query (Artur Zakirov) + + + + + + Fix performance problems in ts_rewrite() (Tom Lane) + + + + + + Fix ts_rewrite()'s handling of nested NOT operators + (Tom Lane) + + + + + + Fix array_fill() to handle empty arrays properly (Tom Lane) + + + + + + Fix one-byte buffer overrun in quote_literal_cstr() + (Heikki Linnakangas) + + + + The overrun occurred only if the input consisted entirely of single + quotes and/or backslashes. + + + + + + Prevent multiple calls of pg_start_backup() + and pg_stop_backup() from running concurrently (Michael + Paquier) + + + + This avoids an assertion failure, and possibly worse things, if + someone tries to run these functions in parallel. + + + + + + Avoid discarding interval-to-interval casts + that aren't really no-ops (Tom Lane) + + + + In some cases, a cast that should result in zeroing out + low-order interval fields was mistakenly deemed to be a + no-op and discarded. An example is that casting from INTERVAL + MONTH to INTERVAL YEAR failed to clear the months field. + + + + + + Ensure that cached plans are invalidated by changes in foreign-table + options (Amit Langote, Etsuro Fujita, Ashutosh Bapat) + + + + + + Fix pg_dump to dump user-defined casts and transforms + that use built-in functions (Stephen Frost) + + + + + + Fix possible pg_basebackup failure on standby + server when including WAL files (Amit Kapila, Robert Haas) + + + + + + Ensure that the Python exception objects we create for PL/Python are + properly reference-counted (Rafa de la Torre, Tom Lane) + + + + This avoids failures if the objects are used after a Python garbage + collection cycle has occurred. + + + + + + Fix PL/Tcl to support triggers on tables that have .tupno + as a column name (Tom Lane) + + + + This matches the (previously undocumented) behavior of + PL/Tcl's spi_exec and spi_execp commands, + namely that a magic .tupno column is inserted only if + there isn't a real column named that. + + + + + + Allow DOS-style line endings in ~/.pgpass files, + even on Unix (Vik Fearing) + + + + This change simplifies use of the same password file across Unix and + Windows machines. + + + + + + Fix one-byte buffer overrun if ecpg is given a file + name that ends with a dot (Takayuki Tsunakawa) + + + + + + Fix psql's tab completion for ALTER DEFAULT + PRIVILEGES (Gilles Darold, Stephen Frost) + + + + + + In psql, treat an empty or all-blank setting of + the PAGER environment variable as meaning no + pager (Tom Lane) + + + + Previously, such a setting caused output intended for the pager to + vanish entirely. + + + + + + Improve contrib/dblink's reporting of + low-level libpq errors, such as out-of-memory + (Joe Conway) + + + + + + Teach contrib/dblink to ignore irrelevant server options + when it uses a contrib/postgres_fdw foreign server as + the source of connection options (Corey Huinker) + + + + Previously, if the foreign server object had options that were not + also libpq connection options, an error occurred. + + + + + + On Windows, ensure that environment variable changes are propagated + to DLLs built with debug options (Christian Ullrich) + + + + + + Sync our copy of the timezone library with IANA release tzcode2016j + (Tom Lane) + + + + This fixes various issues, most notably that timezone data + installation failed if the target directory didn't support hard + links. + + + + + + Update time zone data files to tzdata release 2016j + for DST law changes in northern Cyprus (adding a new zone + Asia/Famagusta), Russia (adding a new zone Europe/Saratov), Tonga, + and Antarctica/Casey. + Historical corrections for Italy, Kazakhstan, Malta, and Palestine. + Switch to preferring numeric zone abbreviations for Tonga. + + + + + + + + + + Release 9.3.15 + + + Release date: + 2016-10-27 + + + + This release contains a variety of fixes from 9.3.14. + For information about new features in the 9.3 major release, see + . + + + + Migration to Version 9.3.15 + + + A dump/restore is not required for those running 9.3.X. + + + + However, if your installation has been affected by the bug described in + the first changelog entry below, then after updating you may need + to take action to repair corrupted free space maps. + + + + Also, if you are upgrading from a version earlier than 9.3.9, + see . + + + + + + Changes + + + + + + Fix WAL-logging of truncation of relation free space maps and + visibility maps (Pavan Deolasee, Heikki Linnakangas) + + + + It was possible for these files to not be correctly restored during + crash recovery, or to be written incorrectly on a standby server. + Bogus entries in a free space map could lead to attempts to access + pages that have been truncated away from the relation itself, typically + producing errors like could not read block XXX: + read only 0 of 8192 bytes. Checksum failures in the + visibility map are also possible, if checksumming is enabled. + + + + Procedures for determining whether there is a problem and repairing it + if so are discussed at + . + + + + + + Fix SELECT FOR UPDATE/SHARE to correctly lock tuples that + have been updated by a subsequently-aborted transaction + (Álvaro Herrera) + + + + In 9.5 and later, the SELECT would sometimes fail to + return such tuples at all. A failure has not been proven to occur in + earlier releases, but might be possible with concurrent updates. + + + + + + Fix EvalPlanQual rechecks involving CTE scans (Tom Lane) + + + + The recheck would always see the CTE as returning no rows, typically + leading to failure to update rows that were recently updated. + + + + + + Fix improper repetition of previous results from hashed aggregation in + a subquery (Andrew Gierth) + + + + The test to see if we can reuse a previously-computed hash table of + the aggregate state values neglected the possibility of an outer query + reference appearing in an aggregate argument expression. A change in + the value of such a reference should lead to recalculating the hash + table, but did not. + + + + + + Fix EXPLAIN to emit valid XML when + is on (Markus Winand) + + + + Previously the XML output-format option produced syntactically invalid + tags such as <I/O-Read-Time>. That is now + rendered as <I-O-Read-Time>. + + + + + + Suppress printing of zeroes for unmeasured times + in EXPLAIN (Maksim Milyutin) + + + + Certain option combinations resulted in printing zero values for times + that actually aren't ever measured in that combination. Our general + policy in EXPLAIN is not to print such fields at all, so + do that consistently in all cases. + + + + + + Fix timeout length when VACUUM is waiting for exclusive + table lock so that it can truncate the table (Simon Riggs) + + + + The timeout was meant to be 50 milliseconds, but it was actually only + 50 microseconds, causing VACUUM to give up on truncation + much more easily than intended. Set it to the intended value. + + + + + + Fix bugs in merging inherited CHECK constraints while + creating or altering a table (Tom Lane, Amit Langote) + + + + Allow identical CHECK constraints to be added to a parent + and child table in either order. Prevent merging of a valid + constraint from the parent table with a NOT VALID + constraint on the child. Likewise, prevent merging of a NO + INHERIT child constraint with an inherited constraint. + + + + + + Remove artificial restrictions on the values accepted + by numeric_in() and numeric_recv() + (Tom Lane) + + + + We allow numeric values up to the limit of the storage format (more + than 1e100000), so it seems fairly pointless + that numeric_in() rejected scientific-notation exponents + above 1000. Likewise, it was silly for numeric_recv() to + reject more than 1000 digits in an input value. + + + + + + Avoid very-low-probability data corruption due to testing tuple + visibility without holding buffer lock (Thomas Munro, Peter Geoghegan, + Tom Lane) + + + + + + Fix file descriptor leakage when truncating a temporary relation of + more than 1GB (Andres Freund) + + + + + + Disallow starting a standalone backend with standby_mode + turned on (Michael Paquier) + + + + This can't do anything useful, since there will be no WAL receiver + process to fetch more WAL data; and it could result in misbehavior + in code that wasn't designed with this situation in mind. + + + + + + Don't try to share SSL contexts across multiple connections + in libpq (Heikki Linnakangas) + + + + This led to assorted corner-case bugs, particularly when trying to use + different SSL parameters for different connections. + + + + + + Avoid corner-case memory leak in libpq (Tom Lane) + + + + The reported problem involved leaking an error report + during PQreset(), but there might be related cases. + + + + + + Make ecpg's + + + + + In pg_dump, never dump range constructor functions + (Tom Lane) + + + + This oversight led to pg_upgrade failures with + extensions containing range types, due to duplicate creation of the + constructor functions. + + + + + + In pg_xlogdump, retry opening new WAL segments when + using + + + This allows for a possible delay in the server's creation of the next + segment. + + + + + + Fix pg_xlogdump to cope with a WAL file that begins + with a continuation record spanning more than one page (Pavan + Deolasee) + + + + + + Fix contrib/intarray/bench/bench.pl to print the results + of the EXPLAIN it does when given the + + + + + Update Windows time zone mapping to recognize some time zone names + added in recent Windows versions (Michael Paquier) + + + + + + Prevent failure of obsolete dynamic time zone abbreviations (Tom Lane) + + + + If a dynamic time zone abbreviation does not match any entry in the + referenced time zone, treat it as equivalent to the time zone name. + This avoids unexpected failures when IANA removes abbreviations from + their time zone database, as they did in tzdata + release 2016f and seem likely to do again in the future. The + consequences were not limited to not recognizing the individual + abbreviation; any mismatch caused + the pg_timezone_abbrevs view to fail altogether. + + + + + + Update time zone data files to tzdata release 2016h + for DST law changes in Palestine and Turkey, plus historical + corrections for Turkey and some regions of Russia. + Switch to numeric abbreviations for some time zones in Antarctica, + the former Soviet Union, and Sri Lanka. + + + + The IANA time zone database previously provided textual abbreviations + for all time zones, sometimes making up abbreviations that have little + or no currency among the local population. They are in process of + reversing that policy in favor of using numeric UTC offsets in zones + where there is no evidence of real-world use of an English + abbreviation. At least for the time being, PostgreSQL + will continue to accept such removed abbreviations for timestamp input. + But they will not be shown in the pg_timezone_names + view nor used for output. + + + + In this update, AMT is no longer shown as being in use to + mean Armenia Time. Therefore, we have changed the Default + abbreviation set to interpret it as Amazon Time, thus UTC-4 not UTC+4. + + + + + + + + Release 9.3.14 - - Release Date - 2016-08-11 - + + Release date: + 2016-08-11 + This release contains a variety of fixes from 9.3.13. @@ -494,10 +2390,10 @@ Release 9.3.13 - - Release Date - 2016-05-12 - + + Release date: + 2016-05-12 + This release contains a variety of fixes from 9.3.12. @@ -724,10 +2620,10 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 Release 9.3.12 - - Release Date - 2016-03-31 - + + Release date: + 2016-03-31 + This release contains a variety of fixes from 9.3.11. @@ -812,7 +2708,7 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 This dodges a portability problem on FreeBSD-derived platforms - (including OS X). + (including macOS). @@ -943,10 +2839,10 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 Release 9.3.11 - - Release Date - 2016-02-11 - + + Release date: + 2016-02-11 + This release contains a variety of fixes from 9.3.10. @@ -1566,10 +3462,10 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 Release 9.3.10 - - Release Date - 2015-10-08 - + + Release date: + 2015-10-08 + This release contains a variety of fixes from 9.3.9. @@ -2195,10 +4091,10 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 Release 9.3.9 - - Release Date - 2015-06-12 - + + Release date: + 2015-06-12 + This release contains a small number of fixes from 9.3.8. @@ -2344,10 +4240,10 @@ Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400 Release 9.3.8 - - Release Date - 2015-06-04 - + + Release date: + 2015-06-04 + This release contains a small number of fixes from 9.3.7. @@ -2452,10 +4348,10 @@ Branch: REL9_0_STABLE [4dddf8552] 2015-05-21 20:41:55 -0400 Release 9.3.7 - - Release Date - 2015-05-22 - + + Release date: + 2015-05-22 + This release contains a variety of fixes from 9.3.6. @@ -3021,7 +4917,7 @@ Branch: REL9_0_STABLE [4dddf8552] 2015-05-21 20:41:55 -0400 - Silence some build warnings on OS X (Tom Lane) + Silence some build warnings on macOS (Tom Lane) @@ -3042,10 +4938,10 @@ Branch: REL9_0_STABLE [4dddf8552] 2015-05-21 20:41:55 -0400 Release 9.3.6 - - Release Date - 2015-02-05 - + + Release date: + 2015-02-05 + This release contains a variety of fixes from 9.3.5. @@ -4092,7 +5988,7 @@ Branch: REL9_0_STABLE [2e4946169] 2015-01-07 22:46:20 -0500 - Warn if OS X's setlocale() starts an unwanted extra + Warn if macOS's setlocale() starts an unwanted extra thread inside the postmaster (Noah Misch) @@ -4927,10 +6823,10 @@ Branch: REL9_0_STABLE [b6391f587] 2014-10-04 14:18:43 -0400 Release 9.3.5 - - Release Date - 2014-07-24 - + + Release date: + 2014-07-24 + This release contains a variety of fixes from 9.3.4. @@ -5743,7 +7639,7 @@ Branch: REL8_4_STABLE [ae41bb4be] 2014-05-30 18:18:32 -0400 - Fix linking of libpython on OS X (Tom Lane) + Fix linking of libpython on macOS (Tom Lane) @@ -6047,10 +7943,10 @@ Branch: REL8_4_STABLE [c51da696b] 2014-07-19 15:01:45 -0400 Release 9.3.4 - - Release Date - 2014-03-20 - + + Release date: + 2014-03-20 + This release contains a variety of fixes from 9.3.3. @@ -6191,7 +8087,7 @@ Branch: REL8_4_STABLE [b6e143458] 2014-03-01 15:21:13 -0500 This prevents scenarios wherein a pathological regular expression - could lock up a server process uninterruptably for a long time. + could lock up a server process uninterruptibly for a long time. @@ -6509,10 +8405,10 @@ Branch: REL8_4_STABLE [6e6c2c2e1] 2014-03-15 13:36:57 -0400 Release 9.3.3 - - Release Date - 2014-02-20 - + + Release date: + 2014-02-20 + This release contains a variety of fixes from 9.3.2. @@ -7971,10 +9867,10 @@ Branch: REL8_4_STABLE [c0c2d62ac] 2014-02-14 21:59:56 -0500 Release 9.3.2 - - Release Date - 2013-12-05 - + + Release date: + 2013-12-05 + This release contains a variety of fixes from 9.3.1. @@ -8450,10 +10346,10 @@ SELECT ... FROM tab1 x CROSS JOIN (tab2 x CROSS JOIN tab3 y) z Release 9.3.1 - - Release Date - 2013-10-10 - + + Release date: + 2013-10-10 + This release contains a variety of fixes from 9.3.0. @@ -8553,10 +10449,10 @@ ALTER EXTENSION hstore UPDATE; Release 9.3 - - Release Date - 2013-09-09 - + + Release date: + 2013-09-09 + Overview @@ -10710,7 +12606,7 @@ ALTER EXTENSION hstore UPDATE; Add instructions for setting - up the documentation tool chain on Mac OS X + up the documentation tool chain on macOS (Peter Eisentraut) diff --git a/doc/src/sgml/release-9.4.sgml b/doc/src/sgml/release-9.4.sgml index 443c772846..1c5c25d2b3 100644 --- a/doc/src/sgml/release-9.4.sgml +++ b/doc/src/sgml/release-9.4.sgml @@ -1,13 +1,2350 @@ + + Release 9.4.14 + + + Release date: + 2017-08-31 + + + + This release contains a small number of fixes from 9.4.13. + For information about new features in the 9.4 major release, see + . + + + + Migration to Version 9.4.14 + + + A dump/restore is not required for those running 9.4.X. + + + + However, if you are upgrading from a version earlier than 9.4.13, + see . + + + + + Changes + + + + + + + Fix failure of walsender processes to respond to shutdown signals + (Marco Nenciarini) + + + + A missed flag update resulted in walsenders continuing to run as long + as they had a standby server connected, preventing primary-server + shutdown unless immediate shutdown mode is used. + + + + + + Show foreign tables + in information_schema.table_privileges + view (Peter Eisentraut) + + + + All other relevant information_schema views include + foreign tables, but this one ignored them. + + + + Since this view definition is installed by initdb, + merely upgrading will not fix the problem. If you need to fix this + in an existing installation, you can, as a superuser, do this + in psql: + +BEGIN; +DROP SCHEMA information_schema CASCADE; +\i SHAREDIR/information_schema.sql +COMMIT; + + (Run pg_config --sharedir if you're uncertain + where SHAREDIR is.) This must be repeated in each + database to be fixed. + + + + + + Clean up handling of a fatal exit (e.g., due to receipt + of SIGTERM) that occurs while trying to execute + a ROLLBACK of a failed transaction (Tom Lane) + + + + This situation could result in an assertion failure. In production + builds, the exit would still occur, but it would log an unexpected + message about cannot drop active portal. + + + + + + Remove assertion that could trigger during a fatal exit (Tom Lane) + + + + + + Correctly identify columns that are of a range type or domain type over + a composite type or domain type being searched for (Tom Lane) + + + + Certain ALTER commands that change the definition of a + composite type or domain type are supposed to fail if there are any + stored values of that type in the database, because they lack the + infrastructure needed to update or check such values. Previously, + these checks could miss relevant values that are wrapped inside range + types or sub-domains, possibly allowing the database to become + inconsistent. + + + + + + Fix crash in pg_restore when using parallel mode and + using a list file to select a subset of items to restore + (Fabrízio de Royes Mello) + + + + + + Change ecpg's parser to allow RETURNING + clauses without attached C variables (Michael Meskes) + + + + This allows ecpg programs to contain SQL constructs + that use RETURNING internally (for example, inside a CTE) + rather than using it to define values to be returned to the client. + + + + + + Improve selection of compiler flags for PL/Perl on Windows (Tom Lane) + + + + This fix avoids possible crashes of PL/Perl due to inconsistent + assumptions about the width of time_t values. + A side-effect that may be visible to extension developers is + that _USE_32BIT_TIME_T is no longer defined globally + in PostgreSQL Windows builds. This is not expected + to cause problems, because type time_t is not used + in any PostgreSQL API definitions. + + + + + + + + + + Release 9.4.13 + + + Release date: + 2017-08-10 + + + + This release contains a variety of fixes from 9.4.12. + For information about new features in the 9.4 major release, see + . + + + + Migration to Version 9.4.13 + + + A dump/restore is not required for those running 9.4.X. + + + + However, if you use foreign data servers that make use of user + passwords for authentication, see the first changelog entry below. + + + + Also, if you are upgrading from a version earlier than 9.4.12, + see . + + + + + Changes + + + + + + Further restrict visibility + of pg_user_mappings.umoptions, to + protect passwords stored as user mapping options + (Noah Misch) + + + + The fix for CVE-2017-7486 was incorrect: it allowed a user + to see the options in her own user mapping, even if she did not + have USAGE permission on the associated foreign server. + Such options might include a password that had been provided by the + server owner rather than the user herself. + Since information_schema.user_mapping_options does not + show the options in such cases, pg_user_mappings + should not either. + (CVE-2017-7547) + + + + By itself, this patch will only fix the behavior in newly initdb'd + databases. If you wish to apply this change in an existing database, + you will need to do the following: + + + + + + Restart the postmaster after adding allow_system_table_mods + = true to postgresql.conf. (In versions + supporting ALTER SYSTEM, you can use that to make the + configuration change, but you'll still need a restart.) + + + + + + In each database of the cluster, + run the following commands as superuser: + +SET search_path = pg_catalog; +CREATE OR REPLACE VIEW pg_user_mappings AS + SELECT + U.oid AS umid, + S.oid AS srvid, + S.srvname AS srvname, + U.umuser AS umuser, + CASE WHEN U.umuser = 0 THEN + 'public' + ELSE + A.rolname + END AS usename, + CASE WHEN (U.umuser <> 0 AND A.rolname = current_user + AND (pg_has_role(S.srvowner, 'USAGE') + OR has_server_privilege(S.oid, 'USAGE'))) + OR (U.umuser = 0 AND pg_has_role(S.srvowner, 'USAGE')) + OR (SELECT rolsuper FROM pg_authid WHERE rolname = current_user) + THEN U.umoptions + ELSE NULL END AS umoptions + FROM pg_user_mapping U + LEFT JOIN pg_authid A ON (A.oid = U.umuser) JOIN + pg_foreign_server S ON (U.umserver = S.oid); + + + + + + + Do not forget to include the template0 + and template1 databases, or the vulnerability will still + exist in databases you create later. To fix template0, + you'll need to temporarily make it accept connections. + In PostgreSQL 9.5 and later, you can use + +ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true; + + and then after fixing template0, undo that with + +ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false; + + In prior versions, instead use + +UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; +UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; + + + + + + + Finally, remove the allow_system_table_mods configuration + setting, and again restart the postmaster. + + + + + + + + Disallow empty passwords in all password-based authentication methods + (Heikki Linnakangas) + + + + libpq ignores empty password specifications, and does + not transmit them to the server. So, if a user's password has been + set to the empty string, it's impossible to log in with that password + via psql or other libpq-based + clients. An administrator might therefore believe that setting the + password to empty is equivalent to disabling password login. + However, with a modified or non-libpq-based client, + logging in could be possible, depending on which authentication + method is configured. In particular the most common + method, md5, accepted empty passwords. + Change the server to reject empty passwords in all cases. + (CVE-2017-7546) + + + + + + Make lo_put() check for UPDATE privilege on + the target large object (Tom Lane, Michael Paquier) + + + + lo_put() should surely require the same permissions + as lowrite(), but the check was missing, allowing any + user to change the data in a large object. + (CVE-2017-7548) + + + + + + Fix concurrent locking of tuple update chains (Álvaro Herrera) + + + + If several sessions concurrently lock a tuple update chain with + nonconflicting lock modes using an old snapshot, and they all + succeed, it was possible for some of them to nonetheless fail (and + conclude there is no live tuple version) due to a race condition. + This had consequences such as foreign-key checks failing to see a + tuple that definitely exists but is being updated concurrently. + + + + + + Fix potential data corruption when freezing a tuple whose XMAX is a + multixact with exactly one still-interesting member (Teodor Sigaev) + + + + + + Avoid integer overflow and ensuing crash when sorting more than one + billion tuples in-memory (Sergey Koposov) + + + + + + On Windows, retry process creation if we fail to reserve the address + range for our shared memory in the new process (Tom Lane, Amit + Kapila) + + + + This is expected to fix infrequent child-process-launch failures that + are probably due to interference from antivirus products. + + + + + + Fix low-probability corruption of shared predicate-lock hash table + in Windows builds (Thomas Munro, Tom Lane) + + + + + + Avoid logging clean closure of an SSL connection as though + it were a connection reset (Michael Paquier) + + + + + + Prevent sending SSL session tickets to clients (Tom Lane) + + + + This fix prevents reconnection failures with ticket-aware client-side + SSL code. + + + + + + Fix code for setting on + Solaris (Tom Lane) + + + + + + Fix statistics collector to honor inquiry messages issued just after + a postmaster shutdown and immediate restart (Tom Lane) + + + + Statistics inquiries issued within half a second of the previous + postmaster shutdown were effectively ignored. + + + + + + Ensure that the statistics collector's receive buffer size is at + least 100KB (Tom Lane) + + + + This reduces the risk of dropped statistics data on older platforms + whose default receive buffer size is less than that. + + + + + + Fix possible creation of an invalid WAL segment when a standby is + promoted just after it processes an XLOG_SWITCH WAL + record (Andres Freund) + + + + + + Fix walsender to exit promptly when client requests + shutdown (Tom Lane) + + + + + + Fix SIGHUP and SIGUSR1 handling in + walsender processes (Petr Jelinek, Andres Freund) + + + + + + Prevent walsender-triggered panics during shutdown checkpoints + (Andres Freund, Michael Paquier) + + + + + + Fix unnecessarily slow restarts of walreceiver + processes due to race condition in postmaster (Tom Lane) + + + + + + + Fix logical decoding failure with very wide tuples (Andres Freund) + + + + Logical decoding crashed on tuples that are wider than 64KB (after + compression, but with all data in-line). The case arises only + when REPLICA IDENTITY FULL is enabled for a table + containing such tuples. + + + + + + Fix leakage of small subtransactions spilled to disk during logical + decoding (Andres Freund) + + + + This resulted in temporary files consuming excessive disk space. + + + + + + Reduce the work needed to build snapshots during creation of + logical-decoding slots (Andres Freund, Petr Jelinek) + + + + The previous algorithm was infeasibly expensive on a server with a + lot of open transactions. + + + + + + Fix race condition that could indefinitely delay creation of + logical-decoding slots (Andres Freund, Petr Jelinek) + + + + + + Reduce overhead in processing syscache invalidation events (Tom Lane) + + + + This is particularly helpful for logical decoding, which triggers + frequent cache invalidation. + + + + + + Fix cases where an INSERT or UPDATE assigns + to more than one element of a column that is of domain-over-array + type (Tom Lane) + + + + + + Allow window functions to be used in sub-SELECTs that + are within the arguments of an aggregate function (Tom Lane) + + + + + + Move autogenerated array types out of the way during + ALTER ... RENAME (Vik Fearing) + + + + Previously, we would rename a conflicting autogenerated array type + out of the way during CREATE; this fix extends that + behavior to renaming operations. + + + + + + Ensure that ALTER USER ... SET accepts all the syntax + variants that ALTER ROLE ... SET does (Peter Eisentraut) + + + + + + Properly update dependency info when changing a datatype I/O + function's argument or return type from opaque to the + correct type (Heikki Linnakangas) + + + + CREATE TYPE updates I/O functions declared in this + long-obsolete style, but it forgot to record a dependency on the + type, allowing a subsequent DROP TYPE to leave broken + function definitions behind. + + + + + + Reduce memory usage when ANALYZE processes + a tsvector column (Heikki Linnakangas) + + + + + + Fix unnecessary precision loss and sloppy rounding when multiplying + or dividing money values by integers or floats (Tom Lane) + + + + + + Tighten checks for whitespace in functions that parse identifiers, + such as regprocedurein() (Tom Lane) + + + + Depending on the prevailing locale, these functions could + misinterpret fragments of multibyte characters as whitespace. + + + + + + Use relevant #define symbols from Perl while + compiling PL/Perl (Ashutosh Sharma, Tom Lane) + + + + This avoids portability problems, typically manifesting as + a handshake mismatch during library load, when working with + recent Perl versions. + + + + + + In libpq, reset GSS/SASL and SSPI authentication + state properly after a failed connection attempt (Michael Paquier) + + + + Failure to do this meant that when falling back from SSL to non-SSL + connections, a GSS/SASL failure in the SSL attempt would always cause + the non-SSL attempt to fail. SSPI did not fail, but it leaked memory. + + + + + + In psql, fix failure when COPY FROM STDIN + is ended with a keyboard EOF signal and then another COPY + FROM STDIN is attempted (Thomas Munro) + + + + This misbehavior was observed on BSD-derived platforms (including + macOS), but not on most others. + + + + + + Fix pg_dump and pg_restore to + emit REFRESH MATERIALIZED VIEW commands last (Tom Lane) + + + + This prevents errors during dump/restore when a materialized view + refers to tables owned by a different user. + + + + + + Improve pg_dump/pg_restore's + reporting of error conditions originating in zlib + (Vladimir Kunschikov, Álvaro Herrera) + + + + + + Fix pg_dump with the + + + It also now correctly assigns ownership of event triggers; before, + they were restored as being owned by the superuser running the + restore script. + + + + + + Fix pg_dump to not emit invalid SQL for an empty + operator class (Daniel Gustafsson) + + + + + + Fix pg_dump output to stdout on Windows (Kuntal Ghosh) + + + + A compressed plain-text dump written to stdout would contain corrupt + data due to failure to put the file descriptor into binary mode. + + + + + + Fix pg_get_ruledef() to print correct output for + the ON SELECT rule of a view whose columns have been + renamed (Tom Lane) + + + + In some corner cases, pg_dump relies + on pg_get_ruledef() to dump views, so that this error + could result in dump/reload failures. + + + + + + Fix dumping of outer joins with empty constraints, such as the result + of a NATURAL LEFT JOIN with no common columns (Tom Lane) + + + + + + Fix dumping of function expressions in the FROM clause in + cases where the expression does not deparse into something that looks + like a function call (Tom Lane) + + + + + + Fix pg_basebackup output to stdout on Windows + (Haribabu Kommi) + + + + A backup written to stdout would contain corrupt data due to failure + to put the file descriptor into binary mode. + + + + + + Fix pg_upgrade to ensure that the ending WAL record + does not have = minimum + (Bruce Momjian) + + + + This condition could prevent upgraded standby servers from + reconnecting. + + + + + + In postgres_fdw, re-establish connections to remote + servers after ALTER SERVER or ALTER USER + MAPPING commands (Kyotaro Horiguchi) + + + + This ensures that option changes affecting connection parameters will + be applied promptly. + + + + + + In postgres_fdw, allow cancellation of remote + transaction control commands (Robert Haas, Rafia Sabih) + + + + This change allows us to quickly escape a wait for an unresponsive + remote server in many more cases than previously. + + + + + + Increase MAX_SYSCACHE_CALLBACKS to provide more room for + extensions (Tom Lane) + + + + + + Always use + + + This supports larger extension libraries on platforms where it makes + a difference. + + + + + + Fix unescaped-braces issue in our build scripts for Microsoft MSVC, + to avoid a warning or error from recent Perl versions (Andrew + Dunstan) + + + + + + In MSVC builds, handle the case where the openssl + library is not within a VC subdirectory (Andrew Dunstan) + + + + + + In MSVC builds, add proper include path for libxml2 + header files (Andrew Dunstan) + + + + This fixes a former need to move things around in standard Windows + installations of libxml2. + + + + + + In MSVC builds, recognize a Tcl library that is + named tcl86.lib (Noah Misch) + + + + + + In MSVC builds, honor PROVE_FLAGS settings + on vcregress.pl's command line (Andrew Dunstan) + + + + + + + + + + Release 9.4.12 + + + Release date: + 2017-05-11 + + + + This release contains a variety of fixes from 9.4.11. + For information about new features in the 9.4 major release, see + . + + + + Migration to Version 9.4.12 + + + A dump/restore is not required for those running 9.4.X. + + + + However, if you use foreign data servers that make use of user + passwords for authentication, see the first changelog entry below. + + + + Also, if you are using third-party replication tools that depend + on logical decoding, see the fourth changelog entry below. + + + + Also, if you are upgrading from a version earlier than 9.4.11, + see . + + + + + Changes + + + + + + Restrict visibility + of pg_user_mappings.umoptions, to + protect passwords stored as user mapping options + (Michael Paquier, Feike Steenbergen) + + + + The previous coding allowed the owner of a foreign server object, + or anyone he has granted server USAGE permission to, + to see the options for all user mappings associated with that server. + This might well include passwords for other users. + Adjust the view definition to match the behavior of + information_schema.user_mapping_options, namely that + these options are visible to the user being mapped, or if the mapping + is for PUBLIC and the current user is the server + owner, or if the current user is a superuser. + (CVE-2017-7486) + + + + By itself, this patch will only fix the behavior in newly initdb'd + databases. If you wish to apply this change in an existing database, + follow the corrected procedure shown in the changelog entry for + CVE-2017-7547, in . + + + + + + Prevent exposure of statistical information via leaky operators + (Peter Eisentraut) + + + + Some selectivity estimation functions in the planner will apply + user-defined operators to values obtained + from pg_statistic, such as most common values and + histogram entries. This occurs before table permissions are checked, + so a nefarious user could exploit the behavior to obtain these values + for table columns he does not have permission to read. To fix, + fall back to a default estimate if the operator's implementation + function is not certified leak-proof and the calling user does not have + permission to read the table column whose statistics are needed. + At least one of these criteria is satisfied in most cases in practice. + (CVE-2017-7484) + + + + + + Restore libpq's recognition of + the PGREQUIRESSL environment variable (Daniel Gustafsson) + + + + Processing of this environment variable was unintentionally dropped + in PostgreSQL 9.3, but its documentation remained. + This creates a security hazard, since users might be relying on the + environment variable to force SSL-encrypted connections, but that + would no longer be guaranteed. Restore handling of the variable, + but give it lower priority than PGSSLMODE, to avoid + breaking configurations that work correctly with post-9.3 code. + (CVE-2017-7485) + + + + + + Fix possibly-invalid initial snapshot during logical decoding + (Petr Jelinek, Andres Freund) + + + + The initial snapshot created for a logical decoding replication slot + was potentially incorrect. This could cause third-party tools that + use logical decoding to copy incomplete/inconsistent initial data. + This was more likely to happen if the source server was busy at the + time of slot creation, or if another logical slot already existed. + + + + If you are using a replication tool that depends on logical decoding, + and it should have copied a nonempty data set at the start of + replication, it is advisable to recreate the replica after + installing this update, or to verify its contents against the source + server. + + + + + + Fix possible corruption of init forks of unlogged indexes + (Robert Haas, Michael Paquier) + + + + This could result in an unlogged index being set to an invalid state + after a crash and restart. Such a problem would persist until the + index was dropped and rebuilt. + + + + + + Fix incorrect reconstruction of pg_subtrans entries + when a standby server replays a prepared but uncommitted two-phase + transaction (Tom Lane) + + + + In most cases this turned out to have no visible ill effects, but in + corner cases it could result in circular references + in pg_subtrans, potentially causing infinite loops + in queries that examine rows modified by the two-phase transaction. + + + + + + Avoid possible crash in walsender due to failure + to initialize a string buffer (Stas Kelvich, Fujii Masao) + + + + + + Fix postmaster's handling of fork() failure for a + background worker process (Tom Lane) + + + + Previously, the postmaster updated portions of its state as though + the process had been launched successfully, resulting in subsequent + confusion. + + + + + + Ensure parsing of queries in extension scripts sees the results of + immediately-preceding DDL (Julien Rouhaud, Tom Lane) + + + + Due to lack of a cache flush step between commands in an extension + script file, non-utility queries might not see the effects of an + immediately preceding catalog change, such as ALTER TABLE + ... RENAME. + + + + + + Skip tablespace privilege checks when ALTER TABLE ... ALTER + COLUMN TYPE rebuilds an existing index (Noah Misch) + + + + The command failed if the calling user did not currently have + CREATE privilege for the tablespace containing the index. + That behavior seems unhelpful, so skip the check, allowing the + index to be rebuilt where it is. + + + + + + Fix ALTER TABLE ... VALIDATE CONSTRAINT to not recurse + to child tables when the constraint is marked NO INHERIT + (Amit Langote) + + + + This fix prevents unwanted constraint does not exist failures + when no matching constraint is present in the child tables. + + + + + + Fix VACUUM to account properly for pages that could not + be scanned due to conflicting page pins (Andrew Gierth) + + + + This tended to lead to underestimation of the number of tuples in + the table. In the worst case of a small heavily-contended + table, VACUUM could incorrectly report that the table + contained no tuples, leading to very bad planning choices. + + + + + + Ensure that bulk-tuple-transfer loops within a hash join are + interruptible by query cancel requests (Tom Lane, Thomas Munro) + + + + + + Fix integer-overflow problems in interval comparison (Kyotaro + Horiguchi, Tom Lane) + + + + The comparison operators for type interval could yield wrong + answers for intervals larger than about 296000 years. Indexes on + columns containing such large values should be reindexed, since they + may be corrupt. + + + + + + Fix cursor_to_xml() to produce valid output + with tableforest = false + (Thomas Munro, Peter Eisentraut) + + + + Previously it failed to produce a wrapping <table> + element. + + + + + + Fix roundoff problems in float8_timestamptz() + and make_interval() (Tom Lane) + + + + These functions truncated, rather than rounded, when converting a + floating-point value to integer microseconds; that could cause + unexpectedly off-by-one results. + + + + + + Improve performance of pg_timezone_names view + (Tom Lane, David Rowley) + + + + + + Reduce memory management overhead for contexts containing many large + blocks (Tom Lane) + + + + + + Fix sloppy handling of corner-case errors from lseek() + and close() (Tom Lane) + + + + Neither of these system calls are likely to fail in typical situations, + but if they did, fd.c could get quite confused. + + + + + + Fix incorrect check for whether postmaster is running as a Windows + service (Michael Paquier) + + + + This could result in attempting to write to the event log when that + isn't accessible, so that no logging happens at all. + + + + + + Fix ecpg to support COMMIT PREPARED + and ROLLBACK PREPARED (Masahiko Sawada) + + + + + + Fix a double-free error when processing dollar-quoted string literals + in ecpg (Michael Meskes) + + + + + + In pg_dump, fix incorrect schema and owner marking for + comments and security labels of some types of database objects + (Giuseppe Broccolo, Tom Lane) + + + + In simple cases this caused no ill effects; but for example, a + schema-selective restore might omit comments it should include, because + they were not marked as belonging to the schema of their associated + object. + + + + + + Avoid emitting an invalid list file in pg_restore -l + when SQL object names contain newlines (Tom Lane) + + + + Replace newlines by spaces, which is sufficient to make the output + valid for pg_restore -L's purposes. + + + + + + Fix pg_upgrade to transfer comments and security labels + attached to large objects (blobs) (Stephen Frost) + + + + Previously, blobs were correctly transferred to the new database, but + any comments or security labels attached to them were lost. + + + + + + Improve error handling + in contrib/adminpack's pg_file_write() + function (Noah Misch) + + + + Notably, it failed to detect errors reported + by fclose(). + + + + + + In contrib/dblink, avoid leaking the previous unnamed + connection when establishing a new unnamed connection (Joe Conway) + + + + + + Fix contrib/pg_trgm's extraction of trigrams from regular + expressions (Tom Lane) + + + + In some cases it would produce a broken data structure that could never + match anything, leading to GIN or GiST indexscans that use a trigram + index not finding any matches to the regular expression. + + + + + + In contrib/postgres_fdw, + transmit query cancellation requests to the remote server + (Michael Paquier, Etsuro Fujita) + + + + Previously, a local query cancellation request did not cause an + already-sent remote query to terminate early. This is a back-patch + of work originally done for 9.6. + + + + + + + Support OpenSSL 1.1.0 (Heikki Linnakangas, Andreas Karlsson, Tom Lane) + + + + This is a back-patch of work previously done in newer branches; + it's needed since many platforms are adopting newer OpenSSL versions. + + + + + + Support Tcl 8.6 in MSVC builds (Álvaro Herrera) + + + + + + Sync our copy of the timezone library with IANA release tzcode2017b + (Tom Lane) + + + + This fixes a bug affecting some DST transitions in January 2038. + + + + + + Update time zone data files to tzdata release 2017b + for DST law changes in Chile, Haiti, and Mongolia, plus historical + corrections for Ecuador, Kazakhstan, Liberia, and Spain. + Switch to numeric abbreviations for numerous time zones in South + America, the Pacific and Indian oceans, and some Asian and Middle + Eastern countries. + + + + The IANA time zone database previously provided textual abbreviations + for all time zones, sometimes making up abbreviations that have little + or no currency among the local population. They are in process of + reversing that policy in favor of using numeric UTC offsets in zones + where there is no evidence of real-world use of an English + abbreviation. At least for the time being, PostgreSQL + will continue to accept such removed abbreviations for timestamp input. + But they will not be shown in the pg_timezone_names + view nor used for output. + + + + + + Use correct daylight-savings rules for POSIX-style time zone names + in MSVC builds (David Rowley) + + + + The Microsoft MSVC build scripts neglected to install + the posixrules file in the timezone directory tree. + This resulted in the timezone code falling back to its built-in + rule about what DST behavior to assume for a POSIX-style time zone + name. For historical reasons that still corresponds to the DST rules + the USA was using before 2007 (i.e., change on first Sunday in April + and last Sunday in October). With this fix, a POSIX-style zone name + will use the current and historical DST transition dates of + the US/Eastern zone. If you don't want that, remove + the posixrules file, or replace it with a copy of some + other zone file (see ). Note that + due to caching, you may need to restart the server to get such changes + to take effect. + + + + + + + + + + Release 9.4.11 + + + Release date: + 2017-02-09 + + + + This release contains a variety of fixes from 9.4.10. + For information about new features in the 9.4 major release, see + . + + + + Migration to Version 9.4.11 + + + A dump/restore is not required for those running 9.4.X. + + + + However, if your installation has been affected by the bug described in + the first changelog entry below, then after updating you may need + to take action to repair corrupted indexes. + + + + Also, if you are upgrading from a version earlier than 9.4.10, + see . + + + + + Changes + + + + + + Fix a race condition that could cause indexes built + with CREATE INDEX CONCURRENTLY to be corrupt + (Pavan Deolasee, Tom Lane) + + + + If CREATE INDEX CONCURRENTLY was used to build an index + that depends on a column not previously indexed, then rows + updated by transactions that ran concurrently with + the CREATE INDEX command could have received incorrect + index entries. If you suspect this may have happened, the most + reliable solution is to rebuild affected indexes after installing + this update. + + + + + + Ensure that the special snapshot used for catalog scans is not + invalidated by premature data pruning (Tom Lane) + + + + Backends failed to account for this snapshot when advertising their + oldest xmin, potentially allowing concurrent vacuuming operations to + remove data that was still needed. This led to transient failures + along the lines of cache lookup failed for relation 1255. + + + + + + Unconditionally WAL-log creation of the init fork for an + unlogged table (Michael Paquier) + + + + Previously, this was skipped when + = minimal, but actually it's necessary even in that case + to ensure that the unlogged table is properly reset to empty after a + crash. + + + + + + Reduce interlocking on standby servers during the replay of btree + index vacuuming operations (Simon Riggs) + + + + This change avoids substantial replication delays that sometimes + occurred while replaying such operations. + + + + + + If the stats collector dies during hot standby, restart it (Takayuki + Tsunakawa) + + + + + + Ensure that hot standby feedback works correctly when it's enabled at + standby server start (Ants Aasma, Craig Ringer) + + + + + + Check for interrupts while hot standby is waiting for a conflicting + query (Simon Riggs) + + + + + + Avoid constantly respawning the autovacuum launcher in a corner case + (Amit Khandekar) + + + + This fix avoids problems when autovacuum is nominally off and there + are some tables that require freezing, but all such tables are + already being processed by autovacuum workers. + + + + + + Fix check for when an extension member object can be dropped (Tom Lane) + + + + Extension upgrade scripts should be able to drop member objects, + but this was disallowed for serial-column sequences, and possibly + other cases. + + + + + + Make sure ALTER TABLE preserves index tablespace + assignments when rebuilding indexes (Tom Lane, Michael Paquier) + + + + Previously, non-default settings + of could result in broken + indexes. + + + + + + Fix incorrect updating of trigger function properties when changing a + foreign-key constraint's deferrability properties with ALTER + TABLE ... ALTER CONSTRAINT (Tom Lane) + + + + This led to odd failures during subsequent exercise of the foreign + key, as the triggers were fired at the wrong times. + + + + + + Prevent dropping a foreign-key constraint if there are pending + trigger events for the referenced relation (Tom Lane) + + + + This avoids could not find trigger NNN + or relation NNN has no triggers errors. + + + + + + Fix processing of OID column when a table with OIDs is associated to + a parent with OIDs via ALTER TABLE ... INHERIT (Amit + Langote) + + + + The OID column should be treated the same as regular user columns in + this case, but it wasn't, leading to odd behavior in later + inheritance changes. + + + + + + Fix CREATE OR REPLACE VIEW to update the view query + before attempting to apply the new view options (Dean Rasheed) + + + + Previously the command would fail if the new options were + inconsistent with the old view definition. + + + + + + Report correct object identity during ALTER TEXT SEARCH + CONFIGURATION (Artur Zakirov) + + + + The wrong catalog OID was reported to extensions such as logical + decoding. + + + + + + Check for serializability conflicts before reporting + constraint-violation failures (Thomas Munro) + + + + When using serializable transaction isolation, it is desirable + that any error due to concurrent transactions should manifest + as a serialization failure, thereby cueing the application that + a retry might succeed. Unfortunately, this does not reliably + happen for duplicate-key failures caused by concurrent insertions. + This change ensures that such an error will be reported as a + serialization error if the application explicitly checked for + the presence of a conflicting key (and did not find it) earlier + in the transaction. + + + + + + Prevent multicolumn expansion of foo.* in + an UPDATE source expression (Tom Lane) + + + + This led to UPDATE target count mismatch --- internal + error. Now the syntax is understood as a whole-row variable, + as it would be in other contexts. + + + + + + Ensure that column typmods are determined accurately for + multi-row VALUES constructs (Tom Lane) + + + + This fixes problems occurring when the first value in a column has a + determinable typmod (e.g., length for a varchar value) but + later values don't share the same limit. + + + + + + Throw error for an unfinished Unicode surrogate pair at the end of a + Unicode string (Tom Lane) + + + + Normally, a Unicode surrogate leading character must be followed by a + Unicode surrogate trailing character, but the check for this was + missed if the leading character was the last character in a Unicode + string literal (U&'...') or Unicode identifier + (U&"..."). + + + + + + Ensure that a purely negative text search query, such + as !foo, matches empty tsvectors (Tom Dunstan) + + + + Such matches were found by GIN index searches, but not by sequential + scans or GiST index searches. + + + + + + Prevent crash when ts_rewrite() replaces a non-top-level + subtree with an empty query (Artur Zakirov) + + + + + + Fix performance problems in ts_rewrite() (Tom Lane) + + + + + + Fix ts_rewrite()'s handling of nested NOT operators + (Tom Lane) + + + + + + Fix array_fill() to handle empty arrays properly (Tom Lane) + + + + + + Fix one-byte buffer overrun in quote_literal_cstr() + (Heikki Linnakangas) + + + + The overrun occurred only if the input consisted entirely of single + quotes and/or backslashes. + + + + + + Prevent multiple calls of pg_start_backup() + and pg_stop_backup() from running concurrently (Michael + Paquier) + + + + This avoids an assertion failure, and possibly worse things, if + someone tries to run these functions in parallel. + + + + + + Avoid discarding interval-to-interval casts + that aren't really no-ops (Tom Lane) + + + + In some cases, a cast that should result in zeroing out + low-order interval fields was mistakenly deemed to be a + no-op and discarded. An example is that casting from INTERVAL + MONTH to INTERVAL YEAR failed to clear the months field. + + + + + + Ensure that cached plans are invalidated by changes in foreign-table + options (Amit Langote, Etsuro Fujita, Ashutosh Bapat) + + + + + + Fix pg_dump to dump user-defined casts and transforms + that use built-in functions (Stephen Frost) + + + + + + Fix pg_restore with + + + This doesn't fix any live bug, but it may improve the behavior in + future if pg_restore is used with an archive + generated by a later pg_dump version. + + + + + + Fix pg_basebackup's rate limiting in the presence of + slow I/O (Antonin Houska) + + + + If disk I/O was transiently much slower than the specified rate + limit, the calculation overflowed, effectively disabling the rate + limit for the rest of the run. + + + + + + Fix pg_basebackup's handling of + symlinked pg_stat_tmp and pg_replslot + subdirectories (Magnus Hagander, Michael Paquier) + + + + + + Fix possible pg_basebackup failure on standby + server when including WAL files (Amit Kapila, Robert Haas) + + + + + + Ensure that the Python exception objects we create for PL/Python are + properly reference-counted (Rafa de la Torre, Tom Lane) + + + + This avoids failures if the objects are used after a Python garbage + collection cycle has occurred. + + + + + + Fix PL/Tcl to support triggers on tables that have .tupno + as a column name (Tom Lane) + + + + This matches the (previously undocumented) behavior of + PL/Tcl's spi_exec and spi_execp commands, + namely that a magic .tupno column is inserted only if + there isn't a real column named that. + + + + + + Allow DOS-style line endings in ~/.pgpass files, + even on Unix (Vik Fearing) + + + + This change simplifies use of the same password file across Unix and + Windows machines. + + + + + + Fix one-byte buffer overrun if ecpg is given a file + name that ends with a dot (Takayuki Tsunakawa) + + + + + + Fix psql's tab completion for ALTER DEFAULT + PRIVILEGES (Gilles Darold, Stephen Frost) + + + + + + In psql, treat an empty or all-blank setting of + the PAGER environment variable as meaning no + pager (Tom Lane) + + + + Previously, such a setting caused output intended for the pager to + vanish entirely. + + + + + + Improve contrib/dblink's reporting of + low-level libpq errors, such as out-of-memory + (Joe Conway) + + + + + + Teach contrib/dblink to ignore irrelevant server options + when it uses a contrib/postgres_fdw foreign server as + the source of connection options (Corey Huinker) + + + + Previously, if the foreign server object had options that were not + also libpq connection options, an error occurred. + + + + + + On Windows, ensure that environment variable changes are propagated + to DLLs built with debug options (Christian Ullrich) + + + + + + Sync our copy of the timezone library with IANA release tzcode2016j + (Tom Lane) + + + + This fixes various issues, most notably that timezone data + installation failed if the target directory didn't support hard + links. + + + + + + Update time zone data files to tzdata release 2016j + for DST law changes in northern Cyprus (adding a new zone + Asia/Famagusta), Russia (adding a new zone Europe/Saratov), Tonga, + and Antarctica/Casey. + Historical corrections for Italy, Kazakhstan, Malta, and Palestine. + Switch to preferring numeric zone abbreviations for Tonga. + + + + + + + + + + Release 9.4.10 + + + Release date: + 2016-10-27 + + + + This release contains a variety of fixes from 9.4.9. + For information about new features in the 9.4 major release, see + . + + + + Migration to Version 9.4.10 + + + A dump/restore is not required for those running 9.4.X. + + + + However, if your installation has been affected by the bug described in + the first changelog entry below, then after updating you may need + to take action to repair corrupted free space maps. + + + + Also, if you are upgrading from a version earlier than 9.4.6, + see . + + + + + Changes + + + + + + Fix WAL-logging of truncation of relation free space maps and + visibility maps (Pavan Deolasee, Heikki Linnakangas) + + + + It was possible for these files to not be correctly restored during + crash recovery, or to be written incorrectly on a standby server. + Bogus entries in a free space map could lead to attempts to access + pages that have been truncated away from the relation itself, typically + producing errors like could not read block XXX: + read only 0 of 8192 bytes. Checksum failures in the + visibility map are also possible, if checksumming is enabled. + + + + Procedures for determining whether there is a problem and repairing it + if so are discussed at + . + + + + + + Fix incorrect creation of GIN index WAL records on big-endian machines + (Tom Lane) + + + + The typical symptom was unexpected GIN leaf action errors + during WAL replay. + + + + + + Fix SELECT FOR UPDATE/SHARE to correctly lock tuples that + have been updated by a subsequently-aborted transaction + (Álvaro Herrera) + + + + In 9.5 and later, the SELECT would sometimes fail to + return such tuples at all. A failure has not been proven to occur in + earlier releases, but might be possible with concurrent updates. + + + + + + Fix EvalPlanQual rechecks involving CTE scans (Tom Lane) + + + + The recheck would always see the CTE as returning no rows, typically + leading to failure to update rows that were recently updated. + + + + + + Fix improper repetition of previous results from hashed aggregation in + a subquery (Andrew Gierth) + + + + The test to see if we can reuse a previously-computed hash table of + the aggregate state values neglected the possibility of an outer query + reference appearing in an aggregate argument expression. A change in + the value of such a reference should lead to recalculating the hash + table, but did not. + + + + + + Fix query-lifespan memory leak in a bulk UPDATE on a table + with a PRIMARY KEY or REPLICA IDENTITY index + (Tom Lane) + + + + + + Fix EXPLAIN to emit valid XML when + is on (Markus Winand) + + + + Previously the XML output-format option produced syntactically invalid + tags such as <I/O-Read-Time>. That is now + rendered as <I-O-Read-Time>. + + + + + + Suppress printing of zeroes for unmeasured times + in EXPLAIN (Maksim Milyutin) + + + + Certain option combinations resulted in printing zero values for times + that actually aren't ever measured in that combination. Our general + policy in EXPLAIN is not to print such fields at all, so + do that consistently in all cases. + + + + + + Fix timeout length when VACUUM is waiting for exclusive + table lock so that it can truncate the table (Simon Riggs) + + + + The timeout was meant to be 50 milliseconds, but it was actually only + 50 microseconds, causing VACUUM to give up on truncation + much more easily than intended. Set it to the intended value. + + + + + + Fix bugs in merging inherited CHECK constraints while + creating or altering a table (Tom Lane, Amit Langote) + + + + Allow identical CHECK constraints to be added to a parent + and child table in either order. Prevent merging of a valid + constraint from the parent table with a NOT VALID + constraint on the child. Likewise, prevent merging of a NO + INHERIT child constraint with an inherited constraint. + + + + + + Remove artificial restrictions on the values accepted + by numeric_in() and numeric_recv() + (Tom Lane) + + + + We allow numeric values up to the limit of the storage format (more + than 1e100000), so it seems fairly pointless + that numeric_in() rejected scientific-notation exponents + above 1000. Likewise, it was silly for numeric_recv() to + reject more than 1000 digits in an input value. + + + + + + Avoid very-low-probability data corruption due to testing tuple + visibility without holding buffer lock (Thomas Munro, Peter Geoghegan, + Tom Lane) + + + + + + Fix logical WAL decoding to work properly when a subtransaction's WAL + output is large enough to spill to disk (Andres Freund) + + + + + + + Fix buffer overread in logical WAL decoding (Tom Lane) + + + + Logical decoding of a tuple update record read 23 bytes too many, + which was usually harmless but with very bad luck could result in a + crash. + + + + + + Fix file descriptor leakage when truncating a temporary relation of + more than 1GB (Andres Freund) + + + + + + Disallow starting a standalone backend with standby_mode + turned on (Michael Paquier) + + + + This can't do anything useful, since there will be no WAL receiver + process to fetch more WAL data; and it could result in misbehavior + in code that wasn't designed with this situation in mind. + + + + + + Properly initialize replication slot state when recycling a + previously-used slot (Michael Paquier) + + + + This failure to reset all of the fields of the slot could + prevent VACUUM from removing dead tuples. + + + + + + Round shared-memory allocation request to a multiple of the actual + huge page size when attempting to use huge pages on Linux (Tom Lane) + + + + This avoids possible failures during munmap() on systems + with atypical default huge page sizes. Except in crash-recovery + cases, there were no ill effects other than a log message. + + + + + + Use a more random value for the dynamic shared memory control + segment's ID (Robert Haas, Tom Lane) + + + + Previously, the same value would be chosen every time, because it was + derived from random() but srandom() had not + yet been called. While relatively harmless, this was not the intended + behavior. + + + + + + On Windows, retry creation of the dynamic shared memory control + segment after an access-denied error (Kyotaro Horiguchi, Amit Kapila) + + + + Windows sometimes returns ERROR_ACCESS_DENIED rather + than ERROR_ALREADY_EXISTS when there is an existing + segment. This led to postmaster startup failure due to believing that + the former was an unrecoverable error. + + + + + + Don't try to share SSL contexts across multiple connections + in libpq (Heikki Linnakangas) + + + + This led to assorted corner-case bugs, particularly when trying to use + different SSL parameters for different connections. + + + + + + Avoid corner-case memory leak in libpq (Tom Lane) + + + + The reported problem involved leaking an error report + during PQreset(), but there might be related cases. + + + + + + Make ecpg's + + + + + Fix pgbench's calculation of average latency + (Fabien Coelho) + + + + The calculation was incorrect when there were \sleep + commands in the script, or when the test duration was specified in + number of transactions rather than total time. + + + + + + In pg_dump, never dump range constructor functions + (Tom Lane) + + + + This oversight led to pg_upgrade failures with + extensions containing range types, due to duplicate creation of the + constructor functions. + + + + + + In pg_xlogdump, retry opening new WAL segments when + using + + + This allows for a possible delay in the server's creation of the next + segment. + + + + + + Fix pg_xlogdump to cope with a WAL file that begins + with a continuation record spanning more than one page (Pavan + Deolasee) + + + + + + Fix contrib/pg_buffercache to work + when shared_buffers exceeds 256GB (KaiGai Kohei) + + + + + + Fix contrib/intarray/bench/bench.pl to print the results + of the EXPLAIN it does when given the + + + + + Install TAP test infrastructure so that it's available for extension + testing (Craig Ringer) + + + + When PostgreSQL has been configured + with + + + + + In MSVC builds, include pg_recvlogical in a + client-only installation (MauMau) + + + + + + Update Windows time zone mapping to recognize some time zone names + added in recent Windows versions (Michael Paquier) + + + + + + Prevent failure of obsolete dynamic time zone abbreviations (Tom Lane) + + + + If a dynamic time zone abbreviation does not match any entry in the + referenced time zone, treat it as equivalent to the time zone name. + This avoids unexpected failures when IANA removes abbreviations from + their time zone database, as they did in tzdata + release 2016f and seem likely to do again in the future. The + consequences were not limited to not recognizing the individual + abbreviation; any mismatch caused + the pg_timezone_abbrevs view to fail altogether. + + + + + + Update time zone data files to tzdata release 2016h + for DST law changes in Palestine and Turkey, plus historical + corrections for Turkey and some regions of Russia. + Switch to numeric abbreviations for some time zones in Antarctica, + the former Soviet Union, and Sri Lanka. + + + + The IANA time zone database previously provided textual abbreviations + for all time zones, sometimes making up abbreviations that have little + or no currency among the local population. They are in process of + reversing that policy in favor of using numeric UTC offsets in zones + where there is no evidence of real-world use of an English + abbreviation. At least for the time being, PostgreSQL + will continue to accept such removed abbreviations for timestamp input. + But they will not be shown in the pg_timezone_names + view nor used for output. + + + + In this update, AMT is no longer shown as being in use to + mean Armenia Time. Therefore, we have changed the Default + abbreviation set to interpret it as Amazon Time, thus UTC-4 not UTC+4. + + + + + + + + Release 9.4.9 - - Release Date - 2016-08-11 - + + Release date: + 2016-08-11 + This release contains a variety of fixes from 9.4.8. @@ -526,10 +2863,10 @@ Branch: REL9_1_STABLE [de887cc8a] 2016-05-25 19:39:49 -0400 Release 9.4.8 - - Release Date - 2016-05-12 - + + Release date: + 2016-05-12 + This release contains a variety of fixes from 9.4.7. @@ -789,10 +3126,10 @@ Branch: REL9_1_STABLE [de887cc8a] 2016-05-25 19:39:49 -0400 Release 9.4.7 - - Release Date - 2016-03-31 - + + Release date: + 2016-03-31 + This release contains a variety of fixes from 9.4.6. @@ -929,7 +3266,7 @@ Branch: REL9_1_STABLE [de887cc8a] 2016-05-25 19:39:49 -0400 This dodges a portability problem on FreeBSD-derived platforms - (including OS X). + (including macOS). @@ -1060,10 +3397,10 @@ Branch: REL9_1_STABLE [de887cc8a] 2016-05-25 19:39:49 -0400 Release 9.4.6 - - Release Date - 2016-02-11 - + + Release date: + 2016-02-11 + This release contains a variety of fixes from 9.4.5. @@ -2157,10 +4494,10 @@ Branch: REL9_1_STABLE [386dcd539] 2015-12-11 19:08:40 -0500 Release 9.4.5 - - Release Date - 2015-10-08 - + + Release date: + 2015-10-08 + This release contains a variety of fixes from 9.4.4. @@ -3680,10 +6017,10 @@ Branch: REL9_0_STABLE [47ac95f37] 2015-10-02 19:16:37 -0400 Release 9.4.4 - - Release Date - 2015-06-12 - + + Release date: + 2015-06-12 + This release contains a small number of fixes from 9.4.3. @@ -3861,10 +6198,10 @@ Branch: REL9_3_STABLE [d3fdec6ae] 2015-06-03 11:58:47 -0400 Release 9.4.3 - - Release Date - 2015-06-04 - + + Release date: + 2015-06-04 + This release contains a small number of fixes from 9.4.2. @@ -4004,10 +6341,10 @@ Branch: REL9_0_STABLE [b06649b7f] 2015-05-26 22:15:00 -0400 Release 9.4.2 - - Release Date - 2015-05-22 - + + Release date: + 2015-05-22 + This release contains a variety of fixes from 9.4.1. @@ -5254,7 +7591,7 @@ Branch: REL9_3_STABLE [6347bdb31] 2015-04-05 13:01:55 -0400 - Silence some build warnings on OS X (Tom Lane) + Silence some build warnings on macOS (Tom Lane) @@ -5285,10 +7622,10 @@ Branch: REL9_0_STABLE [3c3749a3b] 2015-05-15 19:36:20 -0400 Release 9.4.1 - - Release Date - 2015-02-05 - + + Release date: + 2015-02-05 + This release contains a variety of fixes from 9.4.0. @@ -5813,7 +8150,7 @@ Branch: REL9_0_STABLE [2e4946169] 2015-01-07 22:46:20 -0500 - Warn if OS X's setlocale() starts an unwanted extra + Warn if macOS's setlocale() starts an unwanted extra thread inside the postmaster (Noah Misch) @@ -6098,10 +8435,10 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 Release 9.4 - - Release Date - 2014-12-18 - + + Release date: + 2014-12-18 + Overview @@ -7829,7 +10166,7 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 - Add ability to retrieve the current PL/PgSQL call stack + Add ability to retrieve the current PL/pgSQL call stack using GET DIAGNOSTICS (Pavel Stehule, Stephen Frost) @@ -7900,7 +10237,7 @@ Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500 Add option diff --git a/doc/src/sgml/release-9.5.sgml b/doc/src/sgml/release-9.5.sgml index fa3537de10..b7f522deb9 100644 --- a/doc/src/sgml/release-9.5.sgml +++ b/doc/src/sgml/release-9.5.sgml @@ -1,13 +1,2922 @@ + + Release 9.5.9 + + + Release date: + 2017-08-31 + + + + This release contains a small number of fixes from 9.5.8. + For information about new features in the 9.5 major release, see + . + + + + Migration to Version 9.5.9 + + + A dump/restore is not required for those running 9.5.X. + + + + However, if you are upgrading from a version earlier than 9.5.8, + see . + + + + + Changes + + + + + + Show foreign tables + in information_schema.table_privileges + view (Peter Eisentraut) + + + + All other relevant information_schema views include + foreign tables, but this one ignored them. + + + + Since this view definition is installed by initdb, + merely upgrading will not fix the problem. If you need to fix this + in an existing installation, you can, as a superuser, do this + in psql: + +BEGIN; +DROP SCHEMA information_schema CASCADE; +\i SHAREDIR/information_schema.sql +COMMIT; + + (Run pg_config --sharedir if you're uncertain + where SHAREDIR is.) This must be repeated in each + database to be fixed. + + + + + + Clean up handling of a fatal exit (e.g., due to receipt + of SIGTERM) that occurs while trying to execute + a ROLLBACK of a failed transaction (Tom Lane) + + + + This situation could result in an assertion failure. In production + builds, the exit would still occur, but it would log an unexpected + message about cannot drop active portal. + + + + + + Remove assertion that could trigger during a fatal exit (Tom Lane) + + + + + + Correctly identify columns that are of a range type or domain type over + a composite type or domain type being searched for (Tom Lane) + + + + Certain ALTER commands that change the definition of a + composite type or domain type are supposed to fail if there are any + stored values of that type in the database, because they lack the + infrastructure needed to update or check such values. Previously, + these checks could miss relevant values that are wrapped inside range + types or sub-domains, possibly allowing the database to become + inconsistent. + + + + + + Fix crash in pg_restore when using parallel mode and + using a list file to select a subset of items to restore + (Fabrízio de Royes Mello) + + + + + + Change ecpg's parser to allow RETURNING + clauses without attached C variables (Michael Meskes) + + + + This allows ecpg programs to contain SQL constructs + that use RETURNING internally (for example, inside a CTE) + rather than using it to define values to be returned to the client. + + + + + + Improve selection of compiler flags for PL/Perl on Windows (Tom Lane) + + + + This fix avoids possible crashes of PL/Perl due to inconsistent + assumptions about the width of time_t values. + A side-effect that may be visible to extension developers is + that _USE_32BIT_TIME_T is no longer defined globally + in PostgreSQL Windows builds. This is not expected + to cause problems, because type time_t is not used + in any PostgreSQL API definitions. + + + + + + Fix make check to behave correctly when invoked via a + non-GNU make program (Thomas Munro) + + + + + + + + + + Release 9.5.8 + + + Release date: + 2017-08-10 + + + + This release contains a variety of fixes from 9.5.7. + For information about new features in the 9.5 major release, see + . + + + + Migration to Version 9.5.8 + + + A dump/restore is not required for those running 9.5.X. + + + + However, if you use foreign data servers that make use of user + passwords for authentication, see the first changelog entry below. + + + + Also, if you are upgrading from a version earlier than 9.5.7, + see . + + + + + Changes + + + + + + Further restrict visibility + of pg_user_mappings.umoptions, to + protect passwords stored as user mapping options + (Noah Misch) + + + + The fix for CVE-2017-7486 was incorrect: it allowed a user + to see the options in her own user mapping, even if she did not + have USAGE permission on the associated foreign server. + Such options might include a password that had been provided by the + server owner rather than the user herself. + Since information_schema.user_mapping_options does not + show the options in such cases, pg_user_mappings + should not either. + (CVE-2017-7547) + + + + By itself, this patch will only fix the behavior in newly initdb'd + databases. If you wish to apply this change in an existing database, + you will need to do the following: + + + + + + Restart the postmaster after adding allow_system_table_mods + = true to postgresql.conf. (In versions + supporting ALTER SYSTEM, you can use that to make the + configuration change, but you'll still need a restart.) + + + + + + In each database of the cluster, + run the following commands as superuser: + +SET search_path = pg_catalog; +CREATE OR REPLACE VIEW pg_user_mappings AS + SELECT + U.oid AS umid, + S.oid AS srvid, + S.srvname AS srvname, + U.umuser AS umuser, + CASE WHEN U.umuser = 0 THEN + 'public' + ELSE + A.rolname + END AS usename, + CASE WHEN (U.umuser <> 0 AND A.rolname = current_user + AND (pg_has_role(S.srvowner, 'USAGE') + OR has_server_privilege(S.oid, 'USAGE'))) + OR (U.umuser = 0 AND pg_has_role(S.srvowner, 'USAGE')) + OR (SELECT rolsuper FROM pg_authid WHERE rolname = current_user) + THEN U.umoptions + ELSE NULL END AS umoptions + FROM pg_user_mapping U + LEFT JOIN pg_authid A ON (A.oid = U.umuser) JOIN + pg_foreign_server S ON (U.umserver = S.oid); + + + + + + + Do not forget to include the template0 + and template1 databases, or the vulnerability will still + exist in databases you create later. To fix template0, + you'll need to temporarily make it accept connections. + In PostgreSQL 9.5 and later, you can use + +ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true; + + and then after fixing template0, undo that with + +ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false; + + In prior versions, instead use + +UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; +UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; + + + + + + + Finally, remove the allow_system_table_mods configuration + setting, and again restart the postmaster. + + + + + + + + Disallow empty passwords in all password-based authentication methods + (Heikki Linnakangas) + + + + libpq ignores empty password specifications, and does + not transmit them to the server. So, if a user's password has been + set to the empty string, it's impossible to log in with that password + via psql or other libpq-based + clients. An administrator might therefore believe that setting the + password to empty is equivalent to disabling password login. + However, with a modified or non-libpq-based client, + logging in could be possible, depending on which authentication + method is configured. In particular the most common + method, md5, accepted empty passwords. + Change the server to reject empty passwords in all cases. + (CVE-2017-7546) + + + + + + Make lo_put() check for UPDATE privilege on + the target large object (Tom Lane, Michael Paquier) + + + + lo_put() should surely require the same permissions + as lowrite(), but the check was missing, allowing any + user to change the data in a large object. + (CVE-2017-7548) + + + + + + Correct the documentation about the process for upgrading standby + servers with pg_upgrade (Bruce Momjian) + + + + The previous documentation instructed users to start/stop the primary + server after running pg_upgrade but before syncing + the standby servers. This sequence is unsafe. + + + + + + Fix concurrent locking of tuple update chains (Álvaro Herrera) + + + + If several sessions concurrently lock a tuple update chain with + nonconflicting lock modes using an old snapshot, and they all + succeed, it was possible for some of them to nonetheless fail (and + conclude there is no live tuple version) due to a race condition. + This had consequences such as foreign-key checks failing to see a + tuple that definitely exists but is being updated concurrently. + + + + + + Fix potential data corruption when freezing a tuple whose XMAX is a + multixact with exactly one still-interesting member (Teodor Sigaev) + + + + + + Avoid integer overflow and ensuing crash when sorting more than one + billion tuples in-memory (Sergey Koposov) + + + + + + On Windows, retry process creation if we fail to reserve the address + range for our shared memory in the new process (Tom Lane, Amit + Kapila) + + + + This is expected to fix infrequent child-process-launch failures that + are probably due to interference from antivirus products. + + + + + + Fix low-probability corruption of shared predicate-lock hash table + in Windows builds (Thomas Munro, Tom Lane) + + + + + + Avoid logging clean closure of an SSL connection as though + it were a connection reset (Michael Paquier) + + + + + + Prevent sending SSL session tickets to clients (Tom Lane) + + + + This fix prevents reconnection failures with ticket-aware client-side + SSL code. + + + + + + Fix code for setting on + Solaris (Tom Lane) + + + + + + Fix statistics collector to honor inquiry messages issued just after + a postmaster shutdown and immediate restart (Tom Lane) + + + + Statistics inquiries issued within half a second of the previous + postmaster shutdown were effectively ignored. + + + + + + Ensure that the statistics collector's receive buffer size is at + least 100KB (Tom Lane) + + + + This reduces the risk of dropped statistics data on older platforms + whose default receive buffer size is less than that. + + + + + + Fix possible creation of an invalid WAL segment when a standby is + promoted just after it processes an XLOG_SWITCH WAL + record (Andres Freund) + + + + + + Fix walsender to exit promptly when client requests + shutdown (Tom Lane) + + + + + + Fix SIGHUP and SIGUSR1 handling in + walsender processes (Petr Jelinek, Andres Freund) + + + + + + Prevent walsender-triggered panics during shutdown checkpoints + (Andres Freund, Michael Paquier) + + + + + + Fix unnecessarily slow restarts of walreceiver + processes due to race condition in postmaster (Tom Lane) + + + + + + Fix leakage of small subtransactions spilled to disk during logical + decoding (Andres Freund) + + + + This resulted in temporary files consuming excessive disk space. + + + + + + Reduce the work needed to build snapshots during creation of + logical-decoding slots (Andres Freund, Petr Jelinek) + + + + The previous algorithm was infeasibly expensive on a server with a + lot of open transactions. + + + + + + Fix race condition that could indefinitely delay creation of + logical-decoding slots (Andres Freund, Petr Jelinek) + + + + + + Reduce overhead in processing syscache invalidation events (Tom Lane) + + + + This is particularly helpful for logical decoding, which triggers + frequent cache invalidation. + + + + + + Fix cases where an INSERT or UPDATE assigns + to more than one element of a column that is of domain-over-array + type (Tom Lane) + + + + + + Allow window functions to be used in sub-SELECTs that + are within the arguments of an aggregate function (Tom Lane) + + + + + + Move autogenerated array types out of the way during + ALTER ... RENAME (Vik Fearing) + + + + Previously, we would rename a conflicting autogenerated array type + out of the way during CREATE; this fix extends that + behavior to renaming operations. + + + + + + Fix dangling pointer in ALTER TABLE when there is a + comment on a constraint belonging to the table (David Rowley) + + + + Re-applying the comment to the reconstructed constraint could fail + with a weird error message, or even crash. + + + + + + Ensure that ALTER USER ... SET accepts all the syntax + variants that ALTER ROLE ... SET does (Peter Eisentraut) + + + + + + Properly update dependency info when changing a datatype I/O + function's argument or return type from opaque to the + correct type (Heikki Linnakangas) + + + + CREATE TYPE updates I/O functions declared in this + long-obsolete style, but it forgot to record a dependency on the + type, allowing a subsequent DROP TYPE to leave broken + function definitions behind. + + + + + + Reduce memory usage when ANALYZE processes + a tsvector column (Heikki Linnakangas) + + + + + + Fix unnecessary precision loss and sloppy rounding when multiplying + or dividing money values by integers or floats (Tom Lane) + + + + + + Tighten checks for whitespace in functions that parse identifiers, + such as regprocedurein() (Tom Lane) + + + + Depending on the prevailing locale, these functions could + misinterpret fragments of multibyte characters as whitespace. + + + + + + Use relevant #define symbols from Perl while + compiling PL/Perl (Ashutosh Sharma, Tom Lane) + + + + This avoids portability problems, typically manifesting as + a handshake mismatch during library load, when working with + recent Perl versions. + + + + + + In libpq, reset GSS/SASL and SSPI authentication + state properly after a failed connection attempt (Michael Paquier) + + + + Failure to do this meant that when falling back from SSL to non-SSL + connections, a GSS/SASL failure in the SSL attempt would always cause + the non-SSL attempt to fail. SSPI did not fail, but it leaked memory. + + + + + + In psql, fix failure when COPY FROM STDIN + is ended with a keyboard EOF signal and then another COPY + FROM STDIN is attempted (Thomas Munro) + + + + This misbehavior was observed on BSD-derived platforms (including + macOS), but not on most others. + + + + + + Fix pg_dump and pg_restore to + emit REFRESH MATERIALIZED VIEW commands last (Tom Lane) + + + + This prevents errors during dump/restore when a materialized view + refers to tables owned by a different user. + + + + + + Improve pg_dump/pg_restore's + reporting of error conditions originating in zlib + (Vladimir Kunschikov, Álvaro Herrera) + + + + + + Fix pg_dump with the + + + It also now correctly assigns ownership of event triggers; before, + they were restored as being owned by the superuser running the + restore script. + + + + + + Fix pg_dump to not emit invalid SQL for an empty + operator class (Daniel Gustafsson) + + + + + + Fix pg_dump output to stdout on Windows (Kuntal Ghosh) + + + + A compressed plain-text dump written to stdout would contain corrupt + data due to failure to put the file descriptor into binary mode. + + + + + + Fix pg_get_ruledef() to print correct output for + the ON SELECT rule of a view whose columns have been + renamed (Tom Lane) + + + + In some corner cases, pg_dump relies + on pg_get_ruledef() to dump views, so that this error + could result in dump/reload failures. + + + + + + Fix dumping of outer joins with empty constraints, such as the result + of a NATURAL LEFT JOIN with no common columns (Tom Lane) + + + + + + Fix dumping of function expressions in the FROM clause in + cases where the expression does not deparse into something that looks + like a function call (Tom Lane) + + + + + + Fix pg_basebackup output to stdout on Windows + (Haribabu Kommi) + + + + A backup written to stdout would contain corrupt data due to failure + to put the file descriptor into binary mode. + + + + + + Fix pg_rewind to correctly handle files exceeding 2GB + (Kuntal Ghosh, Michael Paquier) + + + + Ordinarily such files won't appear in PostgreSQL data + directories, but they could be present in some cases. + + + + + + Fix pg_upgrade to ensure that the ending WAL record + does not have = minimum + (Bruce Momjian) + + + + This condition could prevent upgraded standby servers from + reconnecting. + + + + + + Fix pg_xlogdump's computation of WAL record length + (Andres Freund) + + + + + + In postgres_fdw, re-establish connections to remote + servers after ALTER SERVER or ALTER USER + MAPPING commands (Kyotaro Horiguchi) + + + + This ensures that option changes affecting connection parameters will + be applied promptly. + + + + + + In postgres_fdw, allow cancellation of remote + transaction control commands (Robert Haas, Rafia Sabih) + + + + This change allows us to quickly escape a wait for an unresponsive + remote server in many more cases than previously. + + + + + + Increase MAX_SYSCACHE_CALLBACKS to provide more room for + extensions (Tom Lane) + + + + + + Always use + + + This supports larger extension libraries on platforms where it makes + a difference. + + + + + + + Fix unescaped-braces issue in our build scripts for Microsoft MSVC, + to avoid a warning or error from recent Perl versions (Andrew + Dunstan) + + + + + + In MSVC builds, handle the case where the openssl + library is not within a VC subdirectory (Andrew Dunstan) + + + + + + In MSVC builds, add proper include path for libxml2 + header files (Andrew Dunstan) + + + + This fixes a former need to move things around in standard Windows + installations of libxml2. + + + + + + In MSVC builds, recognize a Tcl library that is + named tcl86.lib (Noah Misch) + + + + + + In MSVC builds, honor PROVE_FLAGS settings + on vcregress.pl's command line (Andrew Dunstan) + + + + + + + + + + Release 9.5.7 + + + Release date: + 2017-05-11 + + + + This release contains a variety of fixes from 9.5.6. + For information about new features in the 9.5 major release, see + . + + + + Migration to Version 9.5.7 + + + A dump/restore is not required for those running 9.5.X. + + + + However, if you use foreign data servers that make use of user + passwords for authentication, see the first changelog entry below. + + + + Also, if you are using third-party replication tools that depend + on logical decoding, see the fourth changelog entry below. + + + + Also, if you are upgrading from a version earlier than 9.5.6, + see . + + + + + Changes + + + + + + Restrict visibility + of pg_user_mappings.umoptions, to + protect passwords stored as user mapping options + (Michael Paquier, Feike Steenbergen) + + + + The previous coding allowed the owner of a foreign server object, + or anyone he has granted server USAGE permission to, + to see the options for all user mappings associated with that server. + This might well include passwords for other users. + Adjust the view definition to match the behavior of + information_schema.user_mapping_options, namely that + these options are visible to the user being mapped, or if the mapping + is for PUBLIC and the current user is the server + owner, or if the current user is a superuser. + (CVE-2017-7486) + + + + By itself, this patch will only fix the behavior in newly initdb'd + databases. If you wish to apply this change in an existing database, + follow the corrected procedure shown in the changelog entry for + CVE-2017-7547, in . + + + + + + Prevent exposure of statistical information via leaky operators + (Peter Eisentraut) + + + + Some selectivity estimation functions in the planner will apply + user-defined operators to values obtained + from pg_statistic, such as most common values and + histogram entries. This occurs before table permissions are checked, + so a nefarious user could exploit the behavior to obtain these values + for table columns he does not have permission to read. To fix, + fall back to a default estimate if the operator's implementation + function is not certified leak-proof and the calling user does not have + permission to read the table column whose statistics are needed. + At least one of these criteria is satisfied in most cases in practice. + (CVE-2017-7484) + + + + + + Restore libpq's recognition of + the PGREQUIRESSL environment variable (Daniel Gustafsson) + + + + Processing of this environment variable was unintentionally dropped + in PostgreSQL 9.3, but its documentation remained. + This creates a security hazard, since users might be relying on the + environment variable to force SSL-encrypted connections, but that + would no longer be guaranteed. Restore handling of the variable, + but give it lower priority than PGSSLMODE, to avoid + breaking configurations that work correctly with post-9.3 code. + (CVE-2017-7485) + + + + + + Fix possibly-invalid initial snapshot during logical decoding + (Petr Jelinek, Andres Freund) + + + + The initial snapshot created for a logical decoding replication slot + was potentially incorrect. This could cause third-party tools that + use logical decoding to copy incomplete/inconsistent initial data. + This was more likely to happen if the source server was busy at the + time of slot creation, or if another logical slot already existed. + + + + If you are using a replication tool that depends on logical decoding, + and it should have copied a nonempty data set at the start of + replication, it is advisable to recreate the replica after + installing this update, or to verify its contents against the source + server. + + + + + + Fix possible corruption of init forks of unlogged indexes + (Robert Haas, Michael Paquier) + + + + This could result in an unlogged index being set to an invalid state + after a crash and restart. Such a problem would persist until the + index was dropped and rebuilt. + + + + + + Fix incorrect reconstruction of pg_subtrans entries + when a standby server replays a prepared but uncommitted two-phase + transaction (Tom Lane) + + + + In most cases this turned out to have no visible ill effects, but in + corner cases it could result in circular references + in pg_subtrans, potentially causing infinite loops + in queries that examine rows modified by the two-phase transaction. + + + + + + Avoid possible crash in walsender due to failure + to initialize a string buffer (Stas Kelvich, Fujii Masao) + + + + + + Fix possible crash when rescanning a nearest-neighbor index-only scan + on a GiST index (Tom Lane) + + + + + + Fix postmaster's handling of fork() failure for a + background worker process (Tom Lane) + + + + Previously, the postmaster updated portions of its state as though + the process had been launched successfully, resulting in subsequent + confusion. + + + + + + + Fix crash or wrong answers when a GROUPING SETS column's + data type is hashable but not sortable (Pavan Deolasee) + + + + + + Avoid applying physical targetlist optimization to custom + scans (Dmitry Ivanov, Tom Lane) + + + + This optimization supposed that retrieving all columns of a tuple + is inexpensive, which is true for ordinary Postgres tuples; but it + might not be the case for a custom scan provider. + + + + + + Use the correct sub-expression when applying a FOR ALL + row-level-security policy (Stephen Frost) + + + + In some cases the WITH CHECK restriction would be applied + when the USING restriction is more appropriate. + + + + + + Ensure parsing of queries in extension scripts sees the results of + immediately-preceding DDL (Julien Rouhaud, Tom Lane) + + + + Due to lack of a cache flush step between commands in an extension + script file, non-utility queries might not see the effects of an + immediately preceding catalog change, such as ALTER TABLE + ... RENAME. + + + + + + Skip tablespace privilege checks when ALTER TABLE ... ALTER + COLUMN TYPE rebuilds an existing index (Noah Misch) + + + + The command failed if the calling user did not currently have + CREATE privilege for the tablespace containing the index. + That behavior seems unhelpful, so skip the check, allowing the + index to be rebuilt where it is. + + + + + + Fix ALTER TABLE ... VALIDATE CONSTRAINT to not recurse + to child tables when the constraint is marked NO INHERIT + (Amit Langote) + + + + This fix prevents unwanted constraint does not exist failures + when no matching constraint is present in the child tables. + + + + + + Avoid dangling pointer in COPY ... TO when row-level + security is active for the source table (Tom Lane) + + + + Usually this had no ill effects, but sometimes it would cause + unexpected errors or crashes. + + + + + + Avoid accessing an already-closed relcache entry in CLUSTER + and VACUUM FULL (Tom Lane) + + + + With some bad luck, this could lead to indexes on the target + relation getting rebuilt with the wrong persistence setting. + + + + + + Fix VACUUM to account properly for pages that could not + be scanned due to conflicting page pins (Andrew Gierth) + + + + This tended to lead to underestimation of the number of tuples in + the table. In the worst case of a small heavily-contended + table, VACUUM could incorrectly report that the table + contained no tuples, leading to very bad planning choices. + + + + + + Ensure that bulk-tuple-transfer loops within a hash join are + interruptible by query cancel requests (Tom Lane, Thomas Munro) + + + + + + Fix integer-overflow problems in interval comparison (Kyotaro + Horiguchi, Tom Lane) + + + + The comparison operators for type interval could yield wrong + answers for intervals larger than about 296000 years. Indexes on + columns containing such large values should be reindexed, since they + may be corrupt. + + + + + + Fix cursor_to_xml() to produce valid output + with tableforest = false + (Thomas Munro, Peter Eisentraut) + + + + Previously it failed to produce a wrapping <table> + element. + + + + + + Fix roundoff problems in float8_timestamptz() + and make_interval() (Tom Lane) + + + + These functions truncated, rather than rounded, when converting a + floating-point value to integer microseconds; that could cause + unexpectedly off-by-one results. + + + + + + Fix pg_get_object_address() to handle members of operator + families correctly (Álvaro Herrera) + + + + + + Improve performance of pg_timezone_names view + (Tom Lane, David Rowley) + + + + + + Reduce memory management overhead for contexts containing many large + blocks (Tom Lane) + + + + + + Fix sloppy handling of corner-case errors from lseek() + and close() (Tom Lane) + + + + Neither of these system calls are likely to fail in typical situations, + but if they did, fd.c could get quite confused. + + + + + + Fix incorrect check for whether postmaster is running as a Windows + service (Michael Paquier) + + + + This could result in attempting to write to the event log when that + isn't accessible, so that no logging happens at all. + + + + + + Fix ecpg to support COMMIT PREPARED + and ROLLBACK PREPARED (Masahiko Sawada) + + + + + + Fix a double-free error when processing dollar-quoted string literals + in ecpg (Michael Meskes) + + + + + + In pg_dump, fix incorrect schema and owner marking for + comments and security labels of some types of database objects + (Giuseppe Broccolo, Tom Lane) + + + + In simple cases this caused no ill effects; but for example, a + schema-selective restore might omit comments it should include, because + they were not marked as belonging to the schema of their associated + object. + + + + + + Avoid emitting an invalid list file in pg_restore -l + when SQL object names contain newlines (Tom Lane) + + + + Replace newlines by spaces, which is sufficient to make the output + valid for pg_restore -L's purposes. + + + + + + Fix pg_upgrade to transfer comments and security labels + attached to large objects (blobs) (Stephen Frost) + + + + Previously, blobs were correctly transferred to the new database, but + any comments or security labels attached to them were lost. + + + + + + Improve error handling + in contrib/adminpack's pg_file_write() + function (Noah Misch) + + + + Notably, it failed to detect errors reported + by fclose(). + + + + + + In contrib/dblink, avoid leaking the previous unnamed + connection when establishing a new unnamed connection (Joe Conway) + + + + + + Fix contrib/pg_trgm's extraction of trigrams from regular + expressions (Tom Lane) + + + + In some cases it would produce a broken data structure that could never + match anything, leading to GIN or GiST indexscans that use a trigram + index not finding any matches to the regular expression. + + + + + + + In contrib/postgres_fdw, + transmit query cancellation requests to the remote server + (Michael Paquier, Etsuro Fujita) + + + + Previously, a local query cancellation request did not cause an + already-sent remote query to terminate early. This is a back-patch + of work originally done for 9.6. + + + + + + Support Tcl 8.6 in MSVC builds (Álvaro Herrera) + + + + + + Sync our copy of the timezone library with IANA release tzcode2017b + (Tom Lane) + + + + This fixes a bug affecting some DST transitions in January 2038. + + + + + + Update time zone data files to tzdata release 2017b + for DST law changes in Chile, Haiti, and Mongolia, plus historical + corrections for Ecuador, Kazakhstan, Liberia, and Spain. + Switch to numeric abbreviations for numerous time zones in South + America, the Pacific and Indian oceans, and some Asian and Middle + Eastern countries. + + + + The IANA time zone database previously provided textual abbreviations + for all time zones, sometimes making up abbreviations that have little + or no currency among the local population. They are in process of + reversing that policy in favor of using numeric UTC offsets in zones + where there is no evidence of real-world use of an English + abbreviation. At least for the time being, PostgreSQL + will continue to accept such removed abbreviations for timestamp input. + But they will not be shown in the pg_timezone_names + view nor used for output. + + + + + + Use correct daylight-savings rules for POSIX-style time zone names + in MSVC builds (David Rowley) + + + + The Microsoft MSVC build scripts neglected to install + the posixrules file in the timezone directory tree. + This resulted in the timezone code falling back to its built-in + rule about what DST behavior to assume for a POSIX-style time zone + name. For historical reasons that still corresponds to the DST rules + the USA was using before 2007 (i.e., change on first Sunday in April + and last Sunday in October). With this fix, a POSIX-style zone name + will use the current and historical DST transition dates of + the US/Eastern zone. If you don't want that, remove + the posixrules file, or replace it with a copy of some + other zone file (see ). Note that + due to caching, you may need to restart the server to get such changes + to take effect. + + + + + + + + + + Release 9.5.6 + + + Release date: + 2017-02-09 + + + + This release contains a variety of fixes from 9.5.5. + For information about new features in the 9.5 major release, see + . + + + + Migration to Version 9.5.6 + + + A dump/restore is not required for those running 9.5.X. + + + + However, if your installation has been affected by the bug described in + the first changelog entry below, then after updating you may need + to take action to repair corrupted indexes. + + + + Also, if you are upgrading from a version earlier than 9.5.5, + see . + + + + + Changes + + + + + + Fix a race condition that could cause indexes built + with CREATE INDEX CONCURRENTLY to be corrupt + (Pavan Deolasee, Tom Lane) + + + + If CREATE INDEX CONCURRENTLY was used to build an index + that depends on a column not previously indexed, then rows + updated by transactions that ran concurrently with + the CREATE INDEX command could have received incorrect + index entries. If you suspect this may have happened, the most + reliable solution is to rebuild affected indexes after installing + this update. + + + + + + Ensure that the special snapshot used for catalog scans is not + invalidated by premature data pruning (Tom Lane) + + + + Backends failed to account for this snapshot when advertising their + oldest xmin, potentially allowing concurrent vacuuming operations to + remove data that was still needed. This led to transient failures + along the lines of cache lookup failed for relation 1255. + + + + + + Fix incorrect WAL logging for BRIN indexes (Kuntal Ghosh) + + + + The WAL record emitted for a BRIN revmap page when moving an + index tuple to a different page was incorrect. Replay would make the + related portion of the index useless, forcing it to be recomputed. + + + + + + Unconditionally WAL-log creation of the init fork for an + unlogged table (Michael Paquier) + + + + Previously, this was skipped when + = minimal, but actually it's necessary even in that case + to ensure that the unlogged table is properly reset to empty after a + crash. + + + + + + + Reduce interlocking on standby servers during the replay of btree + index vacuuming operations (Simon Riggs) + + + + This change avoids substantial replication delays that sometimes + occurred while replaying such operations. + + + + + + If the stats collector dies during hot standby, restart it (Takayuki + Tsunakawa) + + + + + + Ensure that hot standby feedback works correctly when it's enabled at + standby server start (Ants Aasma, Craig Ringer) + + + + + + Check for interrupts while hot standby is waiting for a conflicting + query (Simon Riggs) + + + + + + Avoid constantly respawning the autovacuum launcher in a corner case + (Amit Khandekar) + + + + This fix avoids problems when autovacuum is nominally off and there + are some tables that require freezing, but all such tables are + already being processed by autovacuum workers. + + + + + + Fix check for when an extension member object can be dropped (Tom Lane) + + + + Extension upgrade scripts should be able to drop member objects, + but this was disallowed for serial-column sequences, and possibly + other cases. + + + + + + Make sure ALTER TABLE preserves index tablespace + assignments when rebuilding indexes (Tom Lane, Michael Paquier) + + + + Previously, non-default settings + of could result in broken + indexes. + + + + + + Fix incorrect updating of trigger function properties when changing a + foreign-key constraint's deferrability properties with ALTER + TABLE ... ALTER CONSTRAINT (Tom Lane) + + + + This led to odd failures during subsequent exercise of the foreign + key, as the triggers were fired at the wrong times. + + + + + + Prevent dropping a foreign-key constraint if there are pending + trigger events for the referenced relation (Tom Lane) + + + + This avoids could not find trigger NNN + or relation NNN has no triggers errors. + + + + + + Fix ALTER TABLE ... SET DATA TYPE ... USING when child + table has different column ordering than the parent + (Álvaro Herrera) + + + + Failure to adjust the column numbering in the USING + expression led to errors, + typically attribute N has wrong type. + + + + + + Fix processing of OID column when a table with OIDs is associated to + a parent with OIDs via ALTER TABLE ... INHERIT (Amit + Langote) + + + + The OID column should be treated the same as regular user columns in + this case, but it wasn't, leading to odd behavior in later + inheritance changes. + + + + + + Fix CREATE OR REPLACE VIEW to update the view query + before attempting to apply the new view options (Dean Rasheed) + + + + Previously the command would fail if the new options were + inconsistent with the old view definition. + + + + + + Report correct object identity during ALTER TEXT SEARCH + CONFIGURATION (Artur Zakirov) + + + + The wrong catalog OID was reported to extensions such as logical + decoding. + + + + + + Fix commit timestamp mechanism to not fail when queried about + the special XIDs FrozenTransactionId + and BootstrapTransactionId (Craig Ringer) + + + + + + + Check for serializability conflicts before reporting + constraint-violation failures (Thomas Munro) + + + + When using serializable transaction isolation, it is desirable + that any error due to concurrent transactions should manifest + as a serialization failure, thereby cueing the application that + a retry might succeed. Unfortunately, this does not reliably + happen for duplicate-key failures caused by concurrent insertions. + This change ensures that such an error will be reported as a + serialization error if the application explicitly checked for + the presence of a conflicting key (and did not find it) earlier + in the transaction. + + + + + + Fix incorrect use of view reloptions as regular table reloptions (Tom + Lane) + + + + The symptom was spurious ON CONFLICT is not supported on table + ... used as a catalog table errors when the target + of INSERT ... ON CONFLICT is a view with cascade option. + + + + + + Fix incorrect target lists can have at most N + entries complaint when using ON CONFLICT with + wide tables (Tom Lane) + + + + + + Prevent multicolumn expansion of foo.* in + an UPDATE source expression (Tom Lane) + + + + This led to UPDATE target count mismatch --- internal + error. Now the syntax is understood as a whole-row variable, + as it would be in other contexts. + + + + + + Ensure that column typmods are determined accurately for + multi-row VALUES constructs (Tom Lane) + + + + This fixes problems occurring when the first value in a column has a + determinable typmod (e.g., length for a varchar value) but + later values don't share the same limit. + + + + + + Throw error for an unfinished Unicode surrogate pair at the end of a + Unicode string (Tom Lane) + + + + Normally, a Unicode surrogate leading character must be followed by a + Unicode surrogate trailing character, but the check for this was + missed if the leading character was the last character in a Unicode + string literal (U&'...') or Unicode identifier + (U&"..."). + + + + + + Ensure that a purely negative text search query, such + as !foo, matches empty tsvectors (Tom Dunstan) + + + + Such matches were found by GIN index searches, but not by sequential + scans or GiST index searches. + + + + + + Prevent crash when ts_rewrite() replaces a non-top-level + subtree with an empty query (Artur Zakirov) + + + + + + Fix performance problems in ts_rewrite() (Tom Lane) + + + + + + Fix ts_rewrite()'s handling of nested NOT operators + (Tom Lane) + + + + + + Improve speed of user-defined aggregates that + use array_append() as transition function (Tom Lane) + + + + + + Fix array_fill() to handle empty arrays properly (Tom Lane) + + + + + + Fix possible crash in array_position() + or array_positions() when processing arrays of records + (Junseok Yang) + + + + + + Fix one-byte buffer overrun in quote_literal_cstr() + (Heikki Linnakangas) + + + + The overrun occurred only if the input consisted entirely of single + quotes and/or backslashes. + + + + + + Prevent multiple calls of pg_start_backup() + and pg_stop_backup() from running concurrently (Michael + Paquier) + + + + This avoids an assertion failure, and possibly worse things, if + someone tries to run these functions in parallel. + + + + + + Disable transform that attempted to remove no-op AT TIME + ZONE conversions (Tom Lane) + + + + This resulted in wrong answers when the simplified expression was + used in an index condition. + + + + + + Avoid discarding interval-to-interval casts + that aren't really no-ops (Tom Lane) + + + + In some cases, a cast that should result in zeroing out + low-order interval fields was mistakenly deemed to be a + no-op and discarded. An example is that casting from INTERVAL + MONTH to INTERVAL YEAR failed to clear the months field. + + + + + + Fix bugs in transmitting GUC parameter values to parallel workers + (Michael Paquier, Tom Lane) + + + + + + Ensure that cached plans are invalidated by changes in foreign-table + options (Amit Langote, Etsuro Fujita, Ashutosh Bapat) + + + + + + Fix pg_dump to dump user-defined casts and transforms + that use built-in functions (Stephen Frost) + + + + + + Fix pg_restore with + + + This doesn't fix any live bug, but it may improve the behavior in + future if pg_restore is used with an archive + generated by a later pg_dump version. + + + + + + Fix pg_basebackup's rate limiting in the presence of + slow I/O (Antonin Houska) + + + + If disk I/O was transiently much slower than the specified rate + limit, the calculation overflowed, effectively disabling the rate + limit for the rest of the run. + + + + + + Fix pg_basebackup's handling of + symlinked pg_stat_tmp and pg_replslot + subdirectories (Magnus Hagander, Michael Paquier) + + + + + + Fix possible pg_basebackup failure on standby + server when including WAL files (Amit Kapila, Robert Haas) + + + + + + Fix possible mishandling of expanded arrays in domain check + constraints and CASE execution (Tom Lane) + + + + It was possible for a PL/pgSQL function invoked in these contexts to + modify or even delete an array value that needs to be preserved for + additional operations. + + + + + + Fix nested uses of PL/pgSQL functions in contexts such as domain + check constraints evaluated during assignment to a PL/pgSQL variable + (Tom Lane) + + + + + + Ensure that the Python exception objects we create for PL/Python are + properly reference-counted (Rafa de la Torre, Tom Lane) + + + + This avoids failures if the objects are used after a Python garbage + collection cycle has occurred. + + + + + + Fix PL/Tcl to support triggers on tables that have .tupno + as a column name (Tom Lane) + + + + This matches the (previously undocumented) behavior of + PL/Tcl's spi_exec and spi_execp commands, + namely that a magic .tupno column is inserted only if + there isn't a real column named that. + + + + + + Allow DOS-style line endings in ~/.pgpass files, + even on Unix (Vik Fearing) + + + + This change simplifies use of the same password file across Unix and + Windows machines. + + + + + + Fix one-byte buffer overrun if ecpg is given a file + name that ends with a dot (Takayuki Tsunakawa) + + + + + + Fix psql's tab completion for ALTER DEFAULT + PRIVILEGES (Gilles Darold, Stephen Frost) + + + + + + In psql, treat an empty or all-blank setting of + the PAGER environment variable as meaning no + pager (Tom Lane) + + + + Previously, such a setting caused output intended for the pager to + vanish entirely. + + + + + + Improve contrib/dblink's reporting of + low-level libpq errors, such as out-of-memory + (Joe Conway) + + + + + + Teach contrib/dblink to ignore irrelevant server options + when it uses a contrib/postgres_fdw foreign server as + the source of connection options (Corey Huinker) + + + + Previously, if the foreign server object had options that were not + also libpq connection options, an error occurred. + + + + + + Fix portability problems in contrib/pageinspect's + functions for GIN indexes (Peter Eisentraut, Tom Lane) + + + + + + On Windows, ensure that environment variable changes are propagated + to DLLs built with debug options (Christian Ullrich) + + + + + + Sync our copy of the timezone library with IANA release tzcode2016j + (Tom Lane) + + + + This fixes various issues, most notably that timezone data + installation failed if the target directory didn't support hard + links. + + + + + + Update time zone data files to tzdata release 2016j + for DST law changes in northern Cyprus (adding a new zone + Asia/Famagusta), Russia (adding a new zone Europe/Saratov), Tonga, + and Antarctica/Casey. + Historical corrections for Italy, Kazakhstan, Malta, and Palestine. + Switch to preferring numeric zone abbreviations for Tonga. + + + + + + + + + + Release 9.5.5 + + + Release date: + 2016-10-27 + + + + This release contains a variety of fixes from 9.5.4. + For information about new features in the 9.5 major release, see + . + + + + Migration to Version 9.5.5 + + + A dump/restore is not required for those running 9.5.X. + + + + However, if your installation has been affected by the bug described in + the first changelog entry below, then after updating you may need + to take action to repair corrupted free space maps. + + + + Also, if you are upgrading from a version earlier than 9.5.2, + see . + + + + + Changes + + + + + + Fix WAL-logging of truncation of relation free space maps and + visibility maps (Pavan Deolasee, Heikki Linnakangas) + + + + It was possible for these files to not be correctly restored during + crash recovery, or to be written incorrectly on a standby server. + Bogus entries in a free space map could lead to attempts to access + pages that have been truncated away from the relation itself, typically + producing errors like could not read block XXX: + read only 0 of 8192 bytes. Checksum failures in the + visibility map are also possible, if checksumming is enabled. + + + + Procedures for determining whether there is a problem and repairing it + if so are discussed at + . + + + + + + + Fix incorrect creation of GIN index WAL records on big-endian machines + (Tom Lane) + + + + The typical symptom was unexpected GIN leaf action errors + during WAL replay. + + + + + + + Fix SELECT FOR UPDATE/SHARE to correctly lock tuples that + have been updated by a subsequently-aborted transaction + (Álvaro Herrera) + + + + In 9.5 and later, the SELECT would sometimes fail to + return such tuples at all. A failure has not been proven to occur in + earlier releases, but might be possible with concurrent updates. + + + + + + + Fix EvalPlanQual rechecks involving CTE scans (Tom Lane) + + + + The recheck would always see the CTE as returning no rows, typically + leading to failure to update rows that were recently updated. + + + + + + + Fix deletion of speculatively inserted TOAST tuples when backing out + of INSERT ... ON CONFLICT (Oskari Saarenmaa) + + + + In the race condition where two transactions try to insert conflicting + tuples at about the same time, the loser would fail with + an attempted to delete invisible tuple error if its + insertion included any TOAST'ed fields. + + + + + + Don't throw serialization errors for self-conflicting insertions + in INSERT ... ON CONFLICT (Thomas Munro, Peter Geoghegan) + + + + + + + Fix improper repetition of previous results from hashed aggregation in + a subquery (Andrew Gierth) + + + + The test to see if we can reuse a previously-computed hash table of + the aggregate state values neglected the possibility of an outer query + reference appearing in an aggregate argument expression. A change in + the value of such a reference should lead to recalculating the hash + table, but did not. + + + + + + + Fix query-lifespan memory leak in a bulk UPDATE on a table + with a PRIMARY KEY or REPLICA IDENTITY index + (Tom Lane) + + + + + + Fix COPY with a column name list from a table that has + row-level security enabled (Adam Brightwell) + + + + + + Fix EXPLAIN to emit valid XML when + is on (Markus Winand) + + + + Previously the XML output-format option produced syntactically invalid + tags such as <I/O-Read-Time>. That is now + rendered as <I-O-Read-Time>. + + + + + + + Suppress printing of zeroes for unmeasured times + in EXPLAIN (Maksim Milyutin) + + + + Certain option combinations resulted in printing zero values for times + that actually aren't ever measured in that combination. Our general + policy in EXPLAIN is not to print such fields at all, so + do that consistently in all cases. + + + + + + Fix statistics update for TRUNCATE in a prepared + transaction (Stas Kelvich) + + + + + + + Fix timeout length when VACUUM is waiting for exclusive + table lock so that it can truncate the table (Simon Riggs) + + + + The timeout was meant to be 50 milliseconds, but it was actually only + 50 microseconds, causing VACUUM to give up on truncation + much more easily than intended. Set it to the intended value. + + + + + + Fix bugs in merging inherited CHECK constraints while + creating or altering a table (Tom Lane, Amit Langote) + + + + Allow identical CHECK constraints to be added to a parent + and child table in either order. Prevent merging of a valid + constraint from the parent table with a NOT VALID + constraint on the child. Likewise, prevent merging of a NO + INHERIT child constraint with an inherited constraint. + + + + + + Show a sensible value + in pg_settings.unit + for min_wal_size and max_wal_size (Tom Lane) + + + + + + + Remove artificial restrictions on the values accepted + by numeric_in() and numeric_recv() + (Tom Lane) + + + + We allow numeric values up to the limit of the storage format (more + than 1e100000), so it seems fairly pointless + that numeric_in() rejected scientific-notation exponents + above 1000. Likewise, it was silly for numeric_recv() to + reject more than 1000 digits in an input value. + + + + + + Avoid very-low-probability data corruption due to testing tuple + visibility without holding buffer lock (Thomas Munro, Peter Geoghegan, + Tom Lane) + + + + + + Preserve commit timestamps across server restart + (Julien Rouhaud, Craig Ringer) + + + + With turned on, old + commit timestamps became inaccessible after a clean server restart. + + + + + + Fix logical WAL decoding to work properly when a subtransaction's WAL + output is large enough to spill to disk (Andres Freund) + + + + + + + Fix possible sorting error when aborting use of abbreviated keys + (Peter Geoghegan) + + + + In the worst case, this could result in a corrupt btree index, which + would need to be rebuilt using REINDEX. However, the + situation is believed to be rare. + + + + + + + Fix file descriptor leakage when truncating a temporary relation of + more than 1GB (Andres Freund) + + + + + + + Disallow starting a standalone backend with standby_mode + turned on (Michael Paquier) + + + + This can't do anything useful, since there will be no WAL receiver + process to fetch more WAL data; and it could result in misbehavior + in code that wasn't designed with this situation in mind. + + + + + + + Properly initialize replication slot state when recycling a + previously-used slot (Michael Paquier) + + + + This failure to reset all of the fields of the slot could + prevent VACUUM from removing dead tuples. + + + + + + Round shared-memory allocation request to a multiple of the actual + huge page size when attempting to use huge pages on Linux (Tom Lane) + + + + This avoids possible failures during munmap() on systems + with atypical default huge page sizes. Except in crash-recovery + cases, there were no ill effects other than a log message. + + + + + + + Use a more random value for the dynamic shared memory control + segment's ID (Robert Haas, Tom Lane) + + + + Previously, the same value would be chosen every time, because it was + derived from random() but srandom() had not + yet been called. While relatively harmless, this was not the intended + behavior. + + + + + + + On Windows, retry creation of the dynamic shared memory control + segment after an access-denied error (Kyotaro Horiguchi, Amit Kapila) + + + + Windows sometimes returns ERROR_ACCESS_DENIED rather + than ERROR_ALREADY_EXISTS when there is an existing + segment. This led to postmaster startup failure due to believing that + the former was an unrecoverable error. + + + + + + + Fix PL/pgSQL to not misbehave with parameters and + local variables of type int2vector or oidvector + (Tom Lane) + + + + + + Don't try to share SSL contexts across multiple connections + in libpq (Heikki Linnakangas) + + + + This led to assorted corner-case bugs, particularly when trying to use + different SSL parameters for different connections. + + + + + + Avoid corner-case memory leak in libpq (Tom Lane) + + + + The reported problem involved leaking an error report + during PQreset(), but there might be related cases. + + + + + + + Make ecpg's + + + + + + Fix pgbench's calculation of average latency + (Fabien Coelho) + + + + The calculation was incorrect when there were \sleep + commands in the script, or when the test duration was specified in + number of transactions rather than total time. + + + + + + In pg_upgrade, check library loadability in name order + (Tom Lane) + + + + This is a workaround to deal with cross-extension dependencies from + language transform modules to their base language and data type + modules. + + + + + + + In pg_dump, never dump range constructor functions + (Tom Lane) + + + + This oversight led to pg_upgrade failures with + extensions containing range types, due to duplicate creation of the + constructor functions. + + + + + + + In pg_dump with + + + + + + Make pg_receivexlog work correctly + with + + + + + Disallow specifying both + + + + + Make pg_rewind turn off synchronous_commit + in its session on the source server (Michael Banck, Michael Paquier) + + + + This allows pg_rewind to work even when the source + server is using synchronous replication that is not working for some + reason. + + + + + + In pg_xlogdump, retry opening new WAL segments when + using + + + This allows for a possible delay in the server's creation of the next + segment. + + + + + + + Fix pg_xlogdump to cope with a WAL file that begins + with a continuation record spanning more than one page (Pavan + Deolasee) + + + + + + + Fix contrib/pg_buffercache to work + when shared_buffers exceeds 256GB (KaiGai Kohei) + + + + + + + Fix contrib/intarray/bench/bench.pl to print the results + of the EXPLAIN it does when given the + + + + + + Support OpenSSL 1.1.0 (Heikki Linnakangas) + + + + + + + Install TAP test infrastructure so that it's available for extension + testing (Craig Ringer) + + + + When PostgreSQL has been configured + with + + + + + + In MSVC builds, include pg_recvlogical in a + client-only installation (MauMau) + + + + + + + Update Windows time zone mapping to recognize some time zone names + added in recent Windows versions (Michael Paquier) + + + + + + + Prevent failure of obsolete dynamic time zone abbreviations (Tom Lane) + + + + If a dynamic time zone abbreviation does not match any entry in the + referenced time zone, treat it as equivalent to the time zone name. + This avoids unexpected failures when IANA removes abbreviations from + their time zone database, as they did in tzdata + release 2016f and seem likely to do again in the future. The + consequences were not limited to not recognizing the individual + abbreviation; any mismatch caused + the pg_timezone_abbrevs view to fail altogether. + + + + + + Update time zone data files to tzdata release 2016h + for DST law changes in Palestine and Turkey, plus historical + corrections for Turkey and some regions of Russia. + Switch to numeric abbreviations for some time zones in Antarctica, + the former Soviet Union, and Sri Lanka. + + + + The IANA time zone database previously provided textual abbreviations + for all time zones, sometimes making up abbreviations that have little + or no currency among the local population. They are in process of + reversing that policy in favor of using numeric UTC offsets in zones + where there is no evidence of real-world use of an English + abbreviation. At least for the time being, PostgreSQL + will continue to accept such removed abbreviations for timestamp input. + But they will not be shown in the pg_timezone_names + view nor used for output. + + + + In this update, AMT is no longer shown as being in use to + mean Armenia Time. Therefore, we have changed the Default + abbreviation set to interpret it as Amazon Time, thus UTC-4 not UTC+4. + + + + + + + + Release 9.5.4 - - Release Date - 2016-08-11 - + + Release date: + 2016-08-11 + This release contains a variety of fixes from 9.5.3. @@ -1077,10 +3986,10 @@ Branch: REL9_1_STABLE [a44388ffe] 2016-08-05 12:59:02 -0400 Release 9.5.3 - - Release Date - 2016-05-12 - + + Release date: + 2016-05-12 + This release contains a variety of fixes from 9.5.2. @@ -1578,10 +4487,10 @@ Branch: REL9_1_STABLE [bfc39da64] 2016-05-05 20:09:32 -0400 Release 9.5.2 - - Release Date - 2016-03-31 - + + Release date: + 2016-03-31 + This release contains a variety of fixes from 9.5.1. @@ -2023,7 +4932,7 @@ Branch: REL9_1_STABLE [e56acbe2a] 2016-02-10 19:30:12 -0500 This dodges a portability problem on FreeBSD-derived platforms - (including OS X). + (including macOS). @@ -2289,10 +5198,10 @@ Branch: REL9_1_STABLE [e5fd35cc5] 2016-03-25 19:03:54 -0400 Release 9.5.1 - - Release Date - 2016-02-11 - + + Release date: + 2016-02-11 + This release contains a variety of fixes from 9.5.0. @@ -2737,10 +5646,10 @@ Branch: REL9_1_STABLE [6887d72d0] 2016-02-05 10:59:39 -0500 Release 9.5 - - Release Date - 2016-01-07 - + + Release date: + 2016-01-07 + Overview diff --git a/doc/src/sgml/release-9.6.sgml b/doc/src/sgml/release-9.6.sgml index 5c40910c72..f5e4869fec 100644 --- a/doc/src/sgml/release-9.6.sgml +++ b/doc/src/sgml/release-9.6.sgml @@ -1,13 +1,4607 @@ + + Release 9.6.5 + + + Release date: + 2017-08-31 + + + + This release contains a small number of fixes from 9.6.4. + For information about new features in the 9.6 major release, see + . + + + + Migration to Version 9.6.5 + + + A dump/restore is not required for those running 9.6.X. + + + + However, if you are upgrading from a version earlier than 9.6.4, + see . + + + + + Changes + + + + + + + Show foreign tables + in information_schema.table_privileges + view (Peter Eisentraut) + + + + All other relevant information_schema views include + foreign tables, but this one ignored them. + + + + Since this view definition is installed by initdb, + merely upgrading will not fix the problem. If you need to fix this + in an existing installation, you can, as a superuser, do this + in psql: + +BEGIN; +DROP SCHEMA information_schema CASCADE; +\i SHAREDIR/information_schema.sql +COMMIT; + + (Run pg_config --sharedir if you're uncertain + where SHAREDIR is.) This must be repeated in each + database to be fixed. + + + + + + + Clean up handling of a fatal exit (e.g., due to receipt + of SIGTERM) that occurs while trying to execute + a ROLLBACK of a failed transaction (Tom Lane) + + + + This situation could result in an assertion failure. In production + builds, the exit would still occur, but it would log an unexpected + message about cannot drop active portal. + + + + + + + Remove assertion that could trigger during a fatal exit (Tom Lane) + + + + + + + Correctly identify columns that are of a range type or domain type over + a composite type or domain type being searched for (Tom Lane) + + + + Certain ALTER commands that change the definition of a + composite type or domain type are supposed to fail if there are any + stored values of that type in the database, because they lack the + infrastructure needed to update or check such values. Previously, + these checks could miss relevant values that are wrapped inside range + types or sub-domains, possibly allowing the database to become + inconsistent. + + + + + + + Prevent crash when passing fixed-length pass-by-reference data types + to parallel worker processes (Tom Lane) + + + + + + + Fix crash in pg_restore when using parallel mode and + using a list file to select a subset of items to restore + (Fabrízio de Royes Mello) + + + + + + + Change ecpg's parser to allow RETURNING + clauses without attached C variables (Michael Meskes) + + + + This allows ecpg programs to contain SQL constructs + that use RETURNING internally (for example, inside a CTE) + rather than using it to define values to be returned to the client. + + + + + + + Change ecpg's parser to recognize backslash + continuation of C preprocessor command lines (Michael Meskes) + + + + + + + Improve selection of compiler flags for PL/Perl on Windows (Tom Lane) + + + + This fix avoids possible crashes of PL/Perl due to inconsistent + assumptions about the width of time_t values. + A side-effect that may be visible to extension developers is + that _USE_32BIT_TIME_T is no longer defined globally + in PostgreSQL Windows builds. This is not expected + to cause problems, because type time_t is not used + in any PostgreSQL API definitions. + + + + + + + Fix make check to behave correctly when invoked via a + non-GNU make program (Thomas Munro) + + + + + + + + + + Release 9.6.4 + + + Release date: + 2017-08-10 + + + + This release contains a variety of fixes from 9.6.3. + For information about new features in the 9.6 major release, see + . + + + + Migration to Version 9.6.4 + + + A dump/restore is not required for those running 9.6.X. + + + + However, if you use foreign data servers that make use of user + passwords for authentication, see the first changelog entry below. + + + + Also, if you are upgrading from a version earlier than 9.6.3, + see . + + + + + Changes + + + + + + + Further restrict visibility + of pg_user_mappings.umoptions, to + protect passwords stored as user mapping options + (Noah Misch) + + + + The fix for CVE-2017-7486 was incorrect: it allowed a user + to see the options in her own user mapping, even if she did not + have USAGE permission on the associated foreign server. + Such options might include a password that had been provided by the + server owner rather than the user herself. + Since information_schema.user_mapping_options does not + show the options in such cases, pg_user_mappings + should not either. + (CVE-2017-7547) + + + + By itself, this patch will only fix the behavior in newly initdb'd + databases. If you wish to apply this change in an existing database, + you will need to do the following: + + + + + + Restart the postmaster after adding allow_system_table_mods + = true to postgresql.conf. (In versions + supporting ALTER SYSTEM, you can use that to make the + configuration change, but you'll still need a restart.) + + + + + + In each database of the cluster, + run the following commands as superuser: + +SET search_path = pg_catalog; +CREATE OR REPLACE VIEW pg_user_mappings AS + SELECT + U.oid AS umid, + S.oid AS srvid, + S.srvname AS srvname, + U.umuser AS umuser, + CASE WHEN U.umuser = 0 THEN + 'public' + ELSE + A.rolname + END AS usename, + CASE WHEN (U.umuser <> 0 AND A.rolname = current_user + AND (pg_has_role(S.srvowner, 'USAGE') + OR has_server_privilege(S.oid, 'USAGE'))) + OR (U.umuser = 0 AND pg_has_role(S.srvowner, 'USAGE')) + OR (SELECT rolsuper FROM pg_authid WHERE rolname = current_user) + THEN U.umoptions + ELSE NULL END AS umoptions + FROM pg_user_mapping U + LEFT JOIN pg_authid A ON (A.oid = U.umuser) JOIN + pg_foreign_server S ON (U.umserver = S.oid); + + + + + + + Do not forget to include the template0 + and template1 databases, or the vulnerability will still + exist in databases you create later. To fix template0, + you'll need to temporarily make it accept connections. + In PostgreSQL 9.5 and later, you can use + +ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true; + + and then after fixing template0, undo that with + +ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false; + + In prior versions, instead use + +UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; +UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; + + + + + + + Finally, remove the allow_system_table_mods configuration + setting, and again restart the postmaster. + + + + + + + + + Disallow empty passwords in all password-based authentication methods + (Heikki Linnakangas) + + + + libpq ignores empty password specifications, and does + not transmit them to the server. So, if a user's password has been + set to the empty string, it's impossible to log in with that password + via psql or other libpq-based + clients. An administrator might therefore believe that setting the + password to empty is equivalent to disabling password login. + However, with a modified or non-libpq-based client, + logging in could be possible, depending on which authentication + method is configured. In particular the most common + method, md5, accepted empty passwords. + Change the server to reject empty passwords in all cases. + (CVE-2017-7546) + + + + + + + Make lo_put() check for UPDATE privilege on + the target large object (Tom Lane, Michael Paquier) + + + + lo_put() should surely require the same permissions + as lowrite(), but the check was missing, allowing any + user to change the data in a large object. + (CVE-2017-7548) + + + + + + + Correct the documentation about the process for upgrading standby + servers with pg_upgrade (Bruce Momjian) + + + + The previous documentation instructed users to start/stop the primary + server after running pg_upgrade but before syncing + the standby servers. This sequence is unsafe. + + + + + + + Fix concurrent locking of tuple update chains (Álvaro Herrera) + + + + If several sessions concurrently lock a tuple update chain with + nonconflicting lock modes using an old snapshot, and they all + succeed, it was possible for some of them to nonetheless fail (and + conclude there is no live tuple version) due to a race condition. + This had consequences such as foreign-key checks failing to see a + tuple that definitely exists but is being updated concurrently. + + + + + + + Fix potential data corruption when freezing a tuple whose XMAX is a + multixact with exactly one still-interesting member (Teodor Sigaev) + + + + + + + Avoid integer overflow and ensuing crash when sorting more than one + billion tuples in-memory (Sergey Koposov) + + + + + + + On Windows, retry process creation if we fail to reserve the address + range for our shared memory in the new process (Tom Lane, Amit + Kapila) + + + + This is expected to fix infrequent child-process-launch failures that + are probably due to interference from antivirus products. + + + + + + + Fix low-probability corruption of shared predicate-lock hash table + in Windows builds (Thomas Munro, Tom Lane) + + + + + + + Avoid logging clean closure of an SSL connection as though + it were a connection reset (Michael Paquier) + + + + + + + Prevent sending SSL session tickets to clients (Tom Lane) + + + + This fix prevents reconnection failures with ticket-aware client-side + SSL code. + + + + + + + Fix code for setting on + Solaris (Tom Lane) + + + + + + + Fix statistics collector to honor inquiry messages issued just after + a postmaster shutdown and immediate restart (Tom Lane) + + + + Statistics inquiries issued within half a second of the previous + postmaster shutdown were effectively ignored. + + + + + + + Ensure that the statistics collector's receive buffer size is at + least 100KB (Tom Lane) + + + + This reduces the risk of dropped statistics data on older platforms + whose default receive buffer size is less than that. + + + + + + + Fix possible creation of an invalid WAL segment when a standby is + promoted just after it processes an XLOG_SWITCH WAL + record (Andres Freund) + + + + + + + Fix walsender to exit promptly when client requests + shutdown (Tom Lane) + + + + + + + Fix SIGHUP and SIGUSR1 handling in + walsender processes (Petr Jelinek, Andres Freund) + + + + + + + Prevent walsender-triggered panics during shutdown checkpoints + (Andres Freund, Michael Paquier) + + + + + + + Fix unnecessarily slow restarts of walreceiver + processes due to race condition in postmaster (Tom Lane) + + + + + + + Fix leakage of small subtransactions spilled to disk during logical + decoding (Andres Freund) + + + + This resulted in temporary files consuming excessive disk space. + + + + + + + Reduce the work needed to build snapshots during creation of + logical-decoding slots (Andres Freund, Petr Jelinek) + + + + The previous algorithm was infeasibly expensive on a server with a + lot of open transactions. + + + + + + + Fix race condition that could indefinitely delay creation of + logical-decoding slots (Andres Freund, Petr Jelinek) + + + + + + + Reduce overhead in processing syscache invalidation events (Tom Lane) + + + + This is particularly helpful for logical decoding, which triggers + frequent cache invalidation. + + + + + + + Remove incorrect heuristic used in some cases to estimate join + selectivity based on the presence of foreign-key constraints + (David Rowley) + + + + In some cases where a multi-column foreign key constraint existed but + did not exactly match a query's join structure, the planner used an + estimation heuristic that turns out not to work well at all. Revert + such cases to the way they were estimated before 9.6. + + + + + + + Fix cases where an INSERT or UPDATE assigns + to more than one element of a column that is of domain-over-array + type (Tom Lane) + + + + + + + Allow window functions to be used in sub-SELECTs that + are within the arguments of an aggregate function (Tom Lane) + + + + + + + Ensure that a view's CHECK OPTIONS clause is enforced + properly when the underlying table is a foreign table (Etsuro Fujita) + + + + Previously, the update might get pushed entirely to the foreign + server, but the need to verify the view conditions was missed if so. + + + + + + + Move autogenerated array types out of the way during + ALTER ... RENAME (Vik Fearing) + + + + Previously, we would rename a conflicting autogenerated array type + out of the way during CREATE; this fix extends that + behavior to renaming operations. + + + + + + + Fix dangling pointer in ALTER TABLE when there is a + comment on a constraint belonging to the table (David Rowley) + + + + Re-applying the comment to the reconstructed constraint could fail + with a weird error message, or even crash. + + + + + + + Ensure that ALTER USER ... SET accepts all the syntax + variants that ALTER ROLE ... SET does (Peter Eisentraut) + + + + + + + Allow a foreign table's CHECK constraints to be + initially NOT VALID (Amit Langote) + + + + CREATE TABLE silently drops NOT VALID + specifiers for CHECK constraints, reasoning that the + table must be empty so the constraint can be validated immediately. + But this is wrong for CREATE FOREIGN TABLE, where there's + no reason to suppose that the underlying table is empty, and even if + it is it's no business of ours to decide that the constraint can be + treated as valid going forward. Skip this optimization for + foreign tables. + + + + + + + Properly update dependency info when changing a datatype I/O + function's argument or return type from opaque to the + correct type (Heikki Linnakangas) + + + + CREATE TYPE updates I/O functions declared in this + long-obsolete style, but it forgot to record a dependency on the + type, allowing a subsequent DROP TYPE to leave broken + function definitions behind. + + + + + + + Allow parallelism in the query plan when COPY copies from + a query's result (Andres Freund) + + + + + + + Reduce memory usage when ANALYZE processes + a tsvector column (Heikki Linnakangas) + + + + + + + Fix unnecessary precision loss and sloppy rounding when multiplying + or dividing money values by integers or floats (Tom Lane) + + + + + + + Tighten checks for whitespace in functions that parse identifiers, + such as regprocedurein() (Tom Lane) + + + + Depending on the prevailing locale, these functions could + misinterpret fragments of multibyte characters as whitespace. + + + + + + + Use relevant #define symbols from Perl while + compiling PL/Perl (Ashutosh Sharma, Tom Lane) + + + + This avoids portability problems, typically manifesting as + a handshake mismatch during library load, when working with + recent Perl versions. + + + + + + + In libpq, reset GSS/SASL and SSPI authentication + state properly after a failed connection attempt (Michael Paquier) + + + + Failure to do this meant that when falling back from SSL to non-SSL + connections, a GSS/SASL failure in the SSL attempt would always cause + the non-SSL attempt to fail. SSPI did not fail, but it leaked memory. + + + + + + + In psql, fix failure when COPY FROM STDIN + is ended with a keyboard EOF signal and then another COPY + FROM STDIN is attempted (Thomas Munro) + + + + This misbehavior was observed on BSD-derived platforms (including + macOS), but not on most others. + + + + + + + Fix pg_dump and pg_restore to + emit REFRESH MATERIALIZED VIEW commands last (Tom Lane) + + + + This prevents errors during dump/restore when a materialized view + refers to tables owned by a different user. + + + + + + + Improve pg_dump/pg_restore's + reporting of error conditions originating in zlib + (Vladimir Kunschikov, Álvaro Herrera) + + + + + + + Fix pg_dump with the + + + It also now correctly assigns ownership of event triggers; before, + they were restored as being owned by the superuser running the + restore script. + + + + + + + Fix pg_dump with the + + + + + + Fix pg_dump to not emit invalid SQL for an empty + operator class (Daniel Gustafsson) + + + + + + + Fix pg_dump output to stdout on Windows (Kuntal Ghosh) + + + + A compressed plain-text dump written to stdout would contain corrupt + data due to failure to put the file descriptor into binary mode. + + + + + + + Fix pg_get_ruledef() to print correct output for + the ON SELECT rule of a view whose columns have been + renamed (Tom Lane) + + + + In some corner cases, pg_dump relies + on pg_get_ruledef() to dump views, so that this error + could result in dump/reload failures. + + + + + + + Fix dumping of outer joins with empty constraints, such as the result + of a NATURAL LEFT JOIN with no common columns (Tom Lane) + + + + + + + Fix dumping of function expressions in the FROM clause in + cases where the expression does not deparse into something that looks + like a function call (Tom Lane) + + + + + + + Fix pg_basebackup output to stdout on Windows + (Haribabu Kommi) + + + + A backup written to stdout would contain corrupt data due to failure + to put the file descriptor into binary mode. + + + + + + + Fix pg_rewind to correctly handle files exceeding 2GB + (Kuntal Ghosh, Michael Paquier) + + + + Ordinarily such files won't appear in PostgreSQL data + directories, but they could be present in some cases. + + + + + + + Fix pg_upgrade to ensure that the ending WAL record + does not have = minimum + (Bruce Momjian) + + + + This condition could prevent upgraded standby servers from + reconnecting. + + + + + + + Fix pg_xlogdump's computation of WAL record length + (Andres Freund) + + + + + + + In postgres_fdw, re-establish connections to remote + servers after ALTER SERVER or ALTER USER + MAPPING commands (Kyotaro Horiguchi) + + + + This ensures that option changes affecting connection parameters will + be applied promptly. + + + + + + + In postgres_fdw, allow cancellation of remote + transaction control commands (Robert Haas, Rafia Sabih) + + + + This change allows us to quickly escape a wait for an unresponsive + remote server in many more cases than previously. + + + + + + + Increase MAX_SYSCACHE_CALLBACKS to provide more room for + extensions (Tom Lane) + + + + + + + Always use + + + This supports larger extension libraries on platforms where it makes + a difference. + + + + + + + In MSVC builds, handle the case where the openssl + library is not within a VC subdirectory (Andrew Dunstan) + + + + + + + In MSVC builds, add proper include path for libxml2 + header files (Andrew Dunstan) + + + + This fixes a former need to move things around in standard Windows + installations of libxml2. + + + + + + + In MSVC builds, recognize a Tcl library that is + named tcl86.lib (Noah Misch) + + + + + + + In MSVC builds, honor PROVE_FLAGS settings + on vcregress.pl's command line (Andrew Dunstan) + + + + + + + + + + Release 9.6.3 + + + Release date: + 2017-05-11 + + + + This release contains a variety of fixes from 9.6.2. + For information about new features in the 9.6 major release, see + . + + + + Migration to Version 9.6.3 + + + A dump/restore is not required for those running 9.6.X. + + + + However, if you use foreign data servers that make use of user + passwords for authentication, see the first changelog entry below. + + + + Also, if you are using third-party replication tools that depend + on logical decoding, see the fourth changelog entry below. + + + + Also, if you are upgrading from a version earlier than 9.6.2, + see . + + + + + Changes + + + + + + + Restrict visibility + of pg_user_mappings.umoptions, to + protect passwords stored as user mapping options + (Michael Paquier, Feike Steenbergen) + + + + The previous coding allowed the owner of a foreign server object, + or anyone he has granted server USAGE permission to, + to see the options for all user mappings associated with that server. + This might well include passwords for other users. + Adjust the view definition to match the behavior of + information_schema.user_mapping_options, namely that + these options are visible to the user being mapped, or if the mapping + is for PUBLIC and the current user is the server + owner, or if the current user is a superuser. + (CVE-2017-7486) + + + + By itself, this patch will only fix the behavior in newly initdb'd + databases. If you wish to apply this change in an existing database, + follow the corrected procedure shown in the changelog entry for + CVE-2017-7547, in . + + + + + + + Prevent exposure of statistical information via leaky operators + (Peter Eisentraut) + + + + Some selectivity estimation functions in the planner will apply + user-defined operators to values obtained + from pg_statistic, such as most common values and + histogram entries. This occurs before table permissions are checked, + so a nefarious user could exploit the behavior to obtain these values + for table columns he does not have permission to read. To fix, + fall back to a default estimate if the operator's implementation + function is not certified leak-proof and the calling user does not have + permission to read the table column whose statistics are needed. + At least one of these criteria is satisfied in most cases in practice. + (CVE-2017-7484) + + + + + + + Restore libpq's recognition of + the PGREQUIRESSL environment variable (Daniel Gustafsson) + + + + Processing of this environment variable was unintentionally dropped + in PostgreSQL 9.3, but its documentation remained. + This creates a security hazard, since users might be relying on the + environment variable to force SSL-encrypted connections, but that + would no longer be guaranteed. Restore handling of the variable, + but give it lower priority than PGSSLMODE, to avoid + breaking configurations that work correctly with post-9.3 code. + (CVE-2017-7485) + + + + + + + Fix possibly-invalid initial snapshot during logical decoding + (Petr Jelinek, Andres Freund) + + + + The initial snapshot created for a logical decoding replication slot + was potentially incorrect. This could cause third-party tools that + use logical decoding to copy incomplete/inconsistent initial data. + This was more likely to happen if the source server was busy at the + time of slot creation, or if another logical slot already existed. + + + + If you are using a replication tool that depends on logical decoding, + and it should have copied a nonempty data set at the start of + replication, it is advisable to recreate the replica after + installing this update, or to verify its contents against the source + server. + + + + + + + Fix possible corruption of init forks of unlogged indexes + (Robert Haas, Michael Paquier) + + + + This could result in an unlogged index being set to an invalid state + after a crash and restart. Such a problem would persist until the + index was dropped and rebuilt. + + + + + + + Fix incorrect reconstruction of pg_subtrans entries + when a standby server replays a prepared but uncommitted two-phase + transaction (Tom Lane) + + + + In most cases this turned out to have no visible ill effects, but in + corner cases it could result in circular references + in pg_subtrans, potentially causing infinite loops + in queries that examine rows modified by the two-phase transaction. + + + + + + + Avoid possible crash in walsender due to failure + to initialize a string buffer (Stas Kelvich, Fujii Masao) + + + + + + + Fix possible crash when rescanning a nearest-neighbor index-only scan + on a GiST index (Tom Lane) + + + + + + + Prevent delays in postmaster's launching of multiple parallel worker + processes (Tom Lane) + + + + There could be a significant delay (up to tens of seconds) before + satisfying a query's request for more than one worker process, or when + multiple queries requested workers simultaneously. On most platforms + this required unlucky timing, but on some it was the typical case. + + + + + + + Fix postmaster's handling of fork() failure for a + background worker process (Tom Lane) + + + + Previously, the postmaster updated portions of its state as though + the process had been launched successfully, resulting in subsequent + confusion. + + + + + + + Fix possible no relation entry for relid 0 error when + planning nested set operations (Tom Lane) + + + + + + + Fix assorted minor issues in planning of parallel queries (Robert Haas) + + + + + + + Avoid applying physical targetlist optimization to custom + scans (Dmitry Ivanov, Tom Lane) + + + + This optimization supposed that retrieving all columns of a tuple + is inexpensive, which is true for ordinary Postgres tuples; but it + might not be the case for a custom scan provider. + + + + + + + Use the correct sub-expression when applying a FOR ALL + row-level-security policy (Stephen Frost) + + + + In some cases the WITH CHECK restriction would be applied + when the USING restriction is more appropriate. + + + + + + + Ensure parsing of queries in extension scripts sees the results of + immediately-preceding DDL (Julien Rouhaud, Tom Lane) + + + + Due to lack of a cache flush step between commands in an extension + script file, non-utility queries might not see the effects of an + immediately preceding catalog change, such as ALTER TABLE + ... RENAME. + + + + + + + Skip tablespace privilege checks when ALTER TABLE ... ALTER + COLUMN TYPE rebuilds an existing index (Noah Misch) + + + + The command failed if the calling user did not currently have + CREATE privilege for the tablespace containing the index. + That behavior seems unhelpful, so skip the check, allowing the + index to be rebuilt where it is. + + + + + + + Fix ALTER TABLE ... VALIDATE CONSTRAINT to not recurse + to child tables when the constraint is marked NO INHERIT + (Amit Langote) + + + + This fix prevents unwanted constraint does not exist failures + when no matching constraint is present in the child tables. + + + + + + + Avoid dangling pointer in COPY ... TO when row-level + security is active for the source table (Tom Lane) + + + + Usually this had no ill effects, but sometimes it would cause + unexpected errors or crashes. + + + + + + + Avoid accessing an already-closed relcache entry in CLUSTER + and VACUUM FULL (Tom Lane) + + + + With some bad luck, this could lead to indexes on the target + relation getting rebuilt with the wrong persistence setting. + + + + + + + Fix VACUUM to account properly for pages that could not + be scanned due to conflicting page pins (Andrew Gierth) + + + + This tended to lead to underestimation of the number of tuples in + the table. In the worst case of a small heavily-contended + table, VACUUM could incorrectly report that the table + contained no tuples, leading to very bad planning choices. + + + + + + + Ensure that bulk-tuple-transfer loops within a hash join are + interruptible by query cancel requests (Tom Lane, Thomas Munro) + + + + + + + Fix incorrect support for certain box operators in SP-GiST + (Nikita Glukhov) + + + + SP-GiST index scans using the operators &< + &> &<| and |&> + would yield incorrect answers. + + + + + + + Fix integer-overflow problems in interval comparison (Kyotaro + Horiguchi, Tom Lane) + + + + The comparison operators for type interval could yield wrong + answers for intervals larger than about 296000 years. Indexes on + columns containing such large values should be reindexed, since they + may be corrupt. + + + + + + + Fix cursor_to_xml() to produce valid output + with tableforest = false + (Thomas Munro, Peter Eisentraut) + + + + Previously it failed to produce a wrapping <table> + element. + + + + + + + Fix roundoff problems in float8_timestamptz() + and make_interval() (Tom Lane) + + + + These functions truncated, rather than rounded, when converting a + floating-point value to integer microseconds; that could cause + unexpectedly off-by-one results. + + + + + + + Fix pg_get_object_address() to handle members of operator + families correctly (Álvaro Herrera) + + + + + + + Fix cancelling of pg_stop_backup() when attempting to stop + a non-exclusive backup (Michael Paquier, David Steele) + + + + If pg_stop_backup() was cancelled while waiting for a + non-exclusive backup to end, related state was left inconsistent; + a new exclusive backup could not be started, and there were other minor + problems. + + + + + + + Improve performance of pg_timezone_names view + (Tom Lane, David Rowley) + + + + + + + Reduce memory management overhead for contexts containing many large + blocks (Tom Lane) + + + + + + + Fix sloppy handling of corner-case errors from lseek() + and close() (Tom Lane) + + + + Neither of these system calls are likely to fail in typical situations, + but if they did, fd.c could get quite confused. + + + + + + + Fix incorrect check for whether postmaster is running as a Windows + service (Michael Paquier) + + + + This could result in attempting to write to the event log when that + isn't accessible, so that no logging happens at all. + + + + + + + Fix ecpg to support COMMIT PREPARED + and ROLLBACK PREPARED (Masahiko Sawada) + + + + + + + Fix a double-free error when processing dollar-quoted string literals + in ecpg (Michael Meskes) + + + + + + + Fix pgbench to handle the combination + of + + + + + + Fix pgbench to honor the long-form option + spelling + + + + + + Fix pg_dump/pg_restore to correctly + handle privileges for the public schema when + using + + + Other schemas start out with no privileges granted, + but public does not; this requires special-case treatment + when it is dropped and restored due to the + + + + + + In pg_dump, fix incorrect schema and owner marking for + comments and security labels of some types of database objects + (Giuseppe Broccolo, Tom Lane) + + + + In simple cases this caused no ill effects; but for example, a + schema-selective restore might omit comments it should include, because + they were not marked as belonging to the schema of their associated + object. + + + + + + + Fix typo in pg_dump's query for initial privileges + of a procedural language (Peter Eisentraut) + + + + This resulted in pg_dump always believing that the + language had no initial privileges. Since that's true for most + procedural languages, ill effects from this bug are probably rare. + + + + + + + Avoid emitting an invalid list file in pg_restore -l + when SQL object names contain newlines (Tom Lane) + + + + Replace newlines by spaces, which is sufficient to make the output + valid for pg_restore -L's purposes. + + + + + + + Fix pg_upgrade to transfer comments and security labels + attached to large objects (blobs) (Stephen Frost) + + + + Previously, blobs were correctly transferred to the new database, but + any comments or security labels attached to them were lost. + + + + + + + Improve error handling + in contrib/adminpack's pg_file_write() + function (Noah Misch) + + + + Notably, it failed to detect errors reported + by fclose(). + + + + + + + In contrib/dblink, avoid leaking the previous unnamed + connection when establishing a new unnamed connection (Joe Conway) + + + + + + + Fix contrib/pg_trgm's extraction of trigrams from regular + expressions (Tom Lane) + + + + In some cases it would produce a broken data structure that could never + match anything, leading to GIN or GiST indexscans that use a trigram + index not finding any matches to the regular expression. + + + + + + + In contrib/postgres_fdw, allow join conditions that + contain shippable extension-provided functions to be pushed to the + remote server (David Rowley, Ashutosh Bapat) + + + + + + + Support Tcl 8.6 in MSVC builds (Álvaro Herrera) + + + + + + + Sync our copy of the timezone library with IANA release tzcode2017b + (Tom Lane) + + + + This fixes a bug affecting some DST transitions in January 2038. + + + + + + + Update time zone data files to tzdata release 2017b + for DST law changes in Chile, Haiti, and Mongolia, plus historical + corrections for Ecuador, Kazakhstan, Liberia, and Spain. + Switch to numeric abbreviations for numerous time zones in South + America, the Pacific and Indian oceans, and some Asian and Middle + Eastern countries. + + + + The IANA time zone database previously provided textual abbreviations + for all time zones, sometimes making up abbreviations that have little + or no currency among the local population. They are in process of + reversing that policy in favor of using numeric UTC offsets in zones + where there is no evidence of real-world use of an English + abbreviation. At least for the time being, PostgreSQL + will continue to accept such removed abbreviations for timestamp input. + But they will not be shown in the pg_timezone_names + view nor used for output. + + + + + + + Use correct daylight-savings rules for POSIX-style time zone names + in MSVC builds (David Rowley) + + + + The Microsoft MSVC build scripts neglected to install + the posixrules file in the timezone directory tree. + This resulted in the timezone code falling back to its built-in + rule about what DST behavior to assume for a POSIX-style time zone + name. For historical reasons that still corresponds to the DST rules + the USA was using before 2007 (i.e., change on first Sunday in April + and last Sunday in October). With this fix, a POSIX-style zone name + will use the current and historical DST transition dates of + the US/Eastern zone. If you don't want that, remove + the posixrules file, or replace it with a copy of some + other zone file (see ). Note that + due to caching, you may need to restart the server to get such changes + to take effect. + + + + + + + + + + Release 9.6.2 + + + Release date: + 2017-02-09 + + + + This release contains a variety of fixes from 9.6.1. + For information about new features in the 9.6 major release, see + . + + + + Migration to Version 9.6.2 + + + A dump/restore is not required for those running 9.6.X. + + + + However, if your installation has been affected by the bug described in + the first changelog entry below, then after updating you may need + to take action to repair corrupted indexes. + + + + Also, if you are upgrading from a version earlier than 9.6.1, + see . + + + + + Changes + + + + + + + Fix a race condition that could cause indexes built + with CREATE INDEX CONCURRENTLY to be corrupt + (Pavan Deolasee, Tom Lane) + + + + If CREATE INDEX CONCURRENTLY was used to build an index + that depends on a column not previously indexed, then rows + updated by transactions that ran concurrently with + the CREATE INDEX command could have received incorrect + index entries. If you suspect this may have happened, the most + reliable solution is to rebuild affected indexes after installing + this update. + + + + + + + Ensure that the special snapshot used for catalog scans is not + invalidated by premature data pruning (Tom Lane) + + + + Backends failed to account for this snapshot when advertising their + oldest xmin, potentially allowing concurrent vacuuming operations to + remove data that was still needed. This led to transient failures + along the lines of cache lookup failed for relation 1255. + + + + + + + Fix incorrect WAL logging for BRIN indexes (Kuntal Ghosh) + + + + The WAL record emitted for a BRIN revmap page when moving an + index tuple to a different page was incorrect. Replay would make the + related portion of the index useless, forcing it to be recomputed. + + + + + + + Unconditionally WAL-log creation of the init fork for an + unlogged table (Michael Paquier) + + + + Previously, this was skipped when + = minimal, but actually it's necessary even in that case + to ensure that the unlogged table is properly reset to empty after a + crash. + + + + + + + If the stats collector dies during hot standby, restart it (Takayuki + Tsunakawa) + + + + + + + Ensure that hot standby feedback works correctly when it's enabled at + standby server start (Ants Aasma, Craig Ringer) + + + + + + + Check for interrupts while hot standby is waiting for a conflicting + query (Simon Riggs) + + + + + + + Avoid constantly respawning the autovacuum launcher in a corner case + (Amit Khandekar) + + + + This fix avoids problems when autovacuum is nominally off and there + are some tables that require freezing, but all such tables are + already being processed by autovacuum workers. + + + + + + + Disallow setting the num_sync field to zero in + (Fujii Masao) + + + + The correct way to disable synchronous standby is to set the whole + value to an empty string. + + + + + + + Don't count background worker processes against a user's connection + limit (David Rowley) + + + + + + + Fix check for when an extension member object can be dropped (Tom Lane) + + + + Extension upgrade scripts should be able to drop member objects, + but this was disallowed for serial-column sequences, and possibly + other cases. + + + + + + + Fix tracking of initial privileges for extension member objects so + that it works correctly with ALTER EXTENSION ... ADD/DROP + (Stephen Frost) + + + + An object's current privileges at the time it is added to the + extension will now be considered its default privileges; only + later changes in its privileges will be dumped by + subsequent pg_dump runs. + + + + + + + Make sure ALTER TABLE preserves index tablespace + assignments when rebuilding indexes (Tom Lane, Michael Paquier) + + + + Previously, non-default settings + of could result in broken + indexes. + + + + + + + Fix incorrect updating of trigger function properties when changing a + foreign-key constraint's deferrability properties with ALTER + TABLE ... ALTER CONSTRAINT (Tom Lane) + + + + This led to odd failures during subsequent exercise of the foreign + key, as the triggers were fired at the wrong times. + + + + + + + Prevent dropping a foreign-key constraint if there are pending + trigger events for the referenced relation (Tom Lane) + + + + This avoids could not find trigger NNN + or relation NNN has no triggers errors. + + + + + + + Fix ALTER TABLE ... SET DATA TYPE ... USING when child + table has different column ordering than the parent + (Álvaro Herrera) + + + + Failure to adjust the column numbering in the USING + expression led to errors, + typically attribute N has wrong type. + + + + + + + Fix processing of OID column when a table with OIDs is associated to + a parent with OIDs via ALTER TABLE ... INHERIT (Amit + Langote) + + + + The OID column should be treated the same as regular user columns in + this case, but it wasn't, leading to odd behavior in later + inheritance changes. + + + + + + + Ensure that CREATE TABLE ... LIKE ... WITH OIDS creates + a table with OIDs, whether or not the LIKE-referenced + table(s) have OIDs (Tom Lane) + + + + + + + Fix CREATE OR REPLACE VIEW to update the view query + before attempting to apply the new view options (Dean Rasheed) + + + + Previously the command would fail if the new options were + inconsistent with the old view definition. + + + + + + + Report correct object identity during ALTER TEXT SEARCH + CONFIGURATION (Artur Zakirov) + + + + The wrong catalog OID was reported to extensions such as logical + decoding. + + + + + + + Fix commit timestamp mechanism to not fail when queried about + the special XIDs FrozenTransactionId + and BootstrapTransactionId (Craig Ringer) + + + + + + + Fix incorrect use of view reloptions as regular table reloptions (Tom + Lane) + + + + The symptom was spurious ON CONFLICT is not supported on table + ... used as a catalog table errors when the target + of INSERT ... ON CONFLICT is a view with cascade option. + + + + + + + Fix incorrect target lists can have at most N + entries complaint when using ON CONFLICT with + wide tables (Tom Lane) + + + + + + + Fix spurious query provides a value for a dropped column + errors during INSERT or UPDATE on a table + with a dropped column (Tom Lane) + + + + + + + Prevent multicolumn expansion of foo.* in + an UPDATE source expression (Tom Lane) + + + + This led to UPDATE target count mismatch --- internal + error. Now the syntax is understood as a whole-row variable, + as it would be in other contexts. + + + + + + + Ensure that column typmods are determined accurately for + multi-row VALUES constructs (Tom Lane) + + + + This fixes problems occurring when the first value in a column has a + determinable typmod (e.g., length for a varchar value) but + later values don't share the same limit. + + + + + + + Throw error for an unfinished Unicode surrogate pair at the end of a + Unicode string (Tom Lane) + + + + Normally, a Unicode surrogate leading character must be followed by a + Unicode surrogate trailing character, but the check for this was + missed if the leading character was the last character in a Unicode + string literal (U&'...') or Unicode identifier + (U&"..."). + + + + + + + Fix execution of DISTINCT and ordered aggregates when + multiple such aggregates are able to share the same transition state + (Heikki Linnakangas) + + + + + + + Fix implementation of phrase search operators in tsquery + (Tom Lane) + + + + Remove incorrect, and inconsistently-applied, rewrite rules that + tried to transform away AND/OR/NOT operators appearing below a PHRASE + operator; instead upgrade the execution engine to handle such cases + correctly. This fixes assorted strange behavior and possible crashes + for text search queries containing such combinations. Also fix + nested PHRASE operators to work sanely in combinations other than + simple left-deep trees, correct the behavior when removing stopwords + from a phrase search clause, and make sure that index searches behave + consistently with simple sequential-scan application of such queries. + + + + + + + Ensure that a purely negative text search query, such + as !foo, matches empty tsvectors (Tom Dunstan) + + + + Such matches were found by GIN index searches, but not by sequential + scans or GiST index searches. + + + + + + + Prevent crash when ts_rewrite() replaces a non-top-level + subtree with an empty query (Artur Zakirov) + + + + + + + Fix performance problems in ts_rewrite() (Tom Lane) + + + + + + + Fix ts_rewrite()'s handling of nested NOT operators + (Tom Lane) + + + + + + + Improve speed of user-defined aggregates that + use array_append() as transition function (Tom Lane) + + + + + + + Fix array_fill() to handle empty arrays properly (Tom Lane) + + + + + + + Fix possible crash in array_position() + or array_positions() when processing arrays of records + (Junseok Yang) + + + + + + + Fix one-byte buffer overrun in quote_literal_cstr() + (Heikki Linnakangas) + + + + The overrun occurred only if the input consisted entirely of single + quotes and/or backslashes. + + + + + + + Prevent multiple calls of pg_start_backup() + and pg_stop_backup() from running concurrently (Michael + Paquier) + + + + This avoids an assertion failure, and possibly worse things, if + someone tries to run these functions in parallel. + + + + + + + Disable transform that attempted to remove no-op AT TIME + ZONE conversions (Tom Lane) + + + + This resulted in wrong answers when the simplified expression was + used in an index condition. + + + + + + + Avoid discarding interval-to-interval casts + that aren't really no-ops (Tom Lane) + + + + In some cases, a cast that should result in zeroing out + low-order interval fields was mistakenly deemed to be a + no-op and discarded. An example is that casting from INTERVAL + MONTH to INTERVAL YEAR failed to clear the months field. + + + + + + + Fix crash if the number of workers available to a parallel query + decreases during a rescan (Andreas Seltenreich) + + + + + + + Fix bugs in transmitting GUC parameter values to parallel workers + (Michael Paquier, Tom Lane) + + + + + + + Allow statements prepared with PREPARE to be given + parallel plans (Amit Kapila, Tobias Bussmann) + + + + + + + Fix incorrect generation of parallel plans for semi-joins (Tom Lane) + + + + + + + Fix planner's cardinality estimates for parallel joins (Robert Haas) + + + + Ensure that these estimates reflect the number of rows predicted to + be seen by each worker, rather than the total. + + + + + + + Fix planner to avoid trying to parallelize plan nodes containing + initplans or subplans (Tom Lane, Amit Kapila) + + + + + + + Ensure that cached plans are invalidated by changes in foreign-table + options (Amit Langote, Etsuro Fujita, Ashutosh Bapat) + + + + + + + Fix the plan generated for sorted partial aggregation with a constant + GROUP BY clause (Tom Lane) + + + + + + + Fix could not find plan for CTE planner error when dealing + with a UNION ALL containing CTE references (Tom Lane) + + + + + + + Fix mishandling of initplans when forcibly adding a Material node to + a subplan (Tom Lane) + + + + The typical consequence of this mistake was a plan should not + reference subplan's variable error. + + + + + + + Fix foreign-key-based join selectivity estimation for semi-joins and + anti-joins, as well as inheritance cases (Tom Lane) + + + + The new code for taking the existence of a foreign key relationship + into account did the wrong thing in these cases, making the estimates + worse not better than the pre-9.6 code. + + + + + + + Fix pg_dump to emit the data of a sequence that is + marked as an extension configuration table (Michael Paquier) + + + + + + + Fix mishandling of ALTER DEFAULT PRIVILEGES ... REVOKE + in pg_dump (Stephen Frost) + + + + pg_dump missed issuing the + required REVOKE commands in cases where ALTER + DEFAULT PRIVILEGES had been used to reduce privileges to less than + they would normally be. + + + + + + + Fix pg_dump to dump user-defined casts and transforms + that use built-in functions (Stephen Frost) + + + + + + + Fix pg_restore with + + + This doesn't fix any live bug, but it may improve the behavior in + future if pg_restore is used with an archive + generated by a later pg_dump version. + + + + + + + Fix pg_basebackup's rate limiting in the presence of + slow I/O (Antonin Houska) + + + + If disk I/O was transiently much slower than the specified rate + limit, the calculation overflowed, effectively disabling the rate + limit for the rest of the run. + + + + + + + Fix pg_basebackup's handling of + symlinked pg_stat_tmp and pg_replslot + subdirectories (Magnus Hagander, Michael Paquier) + + + + + + + Fix possible pg_basebackup failure on standby + server when including WAL files (Amit Kapila, Robert Haas) + + + + + + + Improve initdb to insert the correct + platform-specific default values for + the xxx_flush_after parameters + into postgresql.conf (Fabien Coelho, Tom Lane) + + + + This is a cleaner way of documenting the default values than was used + previously. + + + + + + + Fix possible mishandling of expanded arrays in domain check + constraints and CASE execution (Tom Lane) + + + + It was possible for a PL/pgSQL function invoked in these contexts to + modify or even delete an array value that needs to be preserved for + additional operations. + + + + + + + Fix nested uses of PL/pgSQL functions in contexts such as domain + check constraints evaluated during assignment to a PL/pgSQL variable + (Tom Lane) + + + + + + + Ensure that the Python exception objects we create for PL/Python are + properly reference-counted (Rafa de la Torre, Tom Lane) + + + + This avoids failures if the objects are used after a Python garbage + collection cycle has occurred. + + + + + + + Fix PL/Tcl to support triggers on tables that have .tupno + as a column name (Tom Lane) + + + + This matches the (previously undocumented) behavior of + PL/Tcl's spi_exec and spi_execp commands, + namely that a magic .tupno column is inserted only if + there isn't a real column named that. + + + + + + + Allow DOS-style line endings in ~/.pgpass files, + even on Unix (Vik Fearing) + + + + This change simplifies use of the same password file across Unix and + Windows machines. + + + + + + + Fix one-byte buffer overrun if ecpg is given a file + name that ends with a dot (Takayuki Tsunakawa) + + + + + + + Fix incorrect error reporting for duplicate data + in psql's \crosstabview (Tom Lane) + + + + psql sometimes quoted the wrong row and/or column + values when complaining about multiple entries for the same crosstab + cell. + + + + + + + Fix psql's tab completion for ALTER DEFAULT + PRIVILEGES (Gilles Darold, Stephen Frost) + + + + + + + Fix psql's tab completion for ALTER TABLE t + ALTER c DROP ... (Kyotaro Horiguchi) + + + + + + + In psql, treat an empty or all-blank setting of + the PAGER environment variable as meaning no + pager (Tom Lane) + + + + Previously, such a setting caused output intended for the pager to + vanish entirely. + + + + + + + Improve contrib/dblink's reporting of + low-level libpq errors, such as out-of-memory + (Joe Conway) + + + + + + + Teach contrib/dblink to ignore irrelevant server options + when it uses a contrib/postgres_fdw foreign server as + the source of connection options (Corey Huinker) + + + + Previously, if the foreign server object had options that were not + also libpq connection options, an error occurred. + + + + + + + Fix portability problems in contrib/pageinspect's + functions for GIN indexes (Peter Eisentraut, Tom Lane) + + + + + + + Fix possible miss of socket read events while waiting on Windows + (Amit Kapila) + + + + This error was harmless for most uses, but it is known to cause hangs + when trying to use the pldebugger extension. + + + + + + + On Windows, ensure that environment variable changes are propagated + to DLLs built with debug options (Christian Ullrich) + + + + + + + Sync our copy of the timezone library with IANA release tzcode2016j + (Tom Lane) + + + + This fixes various issues, most notably that timezone data + installation failed if the target directory didn't support hard + links. + + + + + + + Update time zone data files to tzdata release 2016j + for DST law changes in northern Cyprus (adding a new zone + Asia/Famagusta), Russia (adding a new zone Europe/Saratov), Tonga, + and Antarctica/Casey. + Historical corrections for Italy, Kazakhstan, Malta, and Palestine. + Switch to preferring numeric zone abbreviations for Tonga. + + + + + + + + + + Release 9.6.1 + + + Release date: + 2016-10-27 + + + + This release contains a variety of fixes from 9.6.0. + For information about new features in the 9.6 major release, see + . + + + + Migration to Version 9.6.1 + + + A dump/restore is not required for those running 9.6.X. + + + + However, if your installation has been affected by the bugs described in + the first two changelog entries below, then after updating you may need + to take action to repair corrupted free space maps and/or visibility + maps. + + + + + Changes + + + + + + + Fix WAL-logging of truncation of relation free space maps and + visibility maps (Pavan Deolasee, Heikki Linnakangas) + + + + It was possible for these files to not be correctly restored during + crash recovery, or to be written incorrectly on a standby server. + Bogus entries in a free space map could lead to attempts to access + pages that have been truncated away from the relation itself, typically + producing errors like could not read block XXX: + read only 0 of 8192 bytes. Checksum failures in the + visibility map are also possible, if checksumming is enabled. + + + + Procedures for determining whether there is a problem and repairing it + if so are discussed at + . + + + + + + + Fix possible data corruption when pg_upgrade rewrites + a relation visibility map into 9.6 format (Tom Lane) + + + + On big-endian machines, bytes of the new visibility map were written + in the wrong order, leading to a completely incorrect map. On + Windows, the old map was read using text mode, leading to incorrect + results if the map happened to contain consecutive bytes that matched + a carriage return/line feed sequence. The latter error would almost + always lead to a pg_upgrade failure due to the map + file appearing to be the wrong length. + + + + If you are using a big-endian machine (many non-Intel architectures + are big-endian) and have used pg_upgrade to upgrade + from a pre-9.6 release, you should assume that all visibility maps are + incorrect and need to be regenerated. It is sufficient to truncate + each relation's visibility map + with contrib/pg_visibility's + pg_truncate_visibility_map() function. + For more information see + . + + + + + + + Don't throw serialization errors for self-conflicting insertions + in INSERT ... ON CONFLICT (Thomas Munro, Peter Geoghegan) + + + + + + + Fix use-after-free hazard in execution of aggregate functions + using DISTINCT (Peter Geoghegan) + + + + This could lead to a crash or incorrect query results. + + + + + + + Fix incorrect handling of polymorphic aggregates used as window + functions (Tom Lane) + + + + The aggregate's transition function was told that its first argument + and result were of the aggregate's output type, rather than the + state type. This led to errors or crashes with + polymorphic transition functions. + + + + + + + Fix COPY with a column name list from a table that has + row-level security enabled (Adam Brightwell) + + + + + + + Fix EXPLAIN to emit valid XML when + is on (Markus Winand) + + + + Previously the XML output-format option produced syntactically invalid + tags such as <I/O-Read-Time>. That is now + rendered as <I-O-Read-Time>. + + + + + + + Fix statistics update for TRUNCATE in a prepared + transaction (Stas Kelvich) + + + + + + + Fix bugs in merging inherited CHECK constraints while + creating or altering a table (Tom Lane, Amit Langote) + + + + Allow identical CHECK constraints to be added to a parent + and child table in either order. Prevent merging of a valid + constraint from the parent table with a NOT VALID + constraint on the child. Likewise, prevent merging of a NO + INHERIT child constraint with an inherited constraint. + + + + + + + Show a sensible value + in pg_settings.unit + for min_wal_size and max_wal_size (Tom Lane) + + + + + + + Fix replacement of array elements in jsonb_set() + (Tom Lane) + + + + If the target is an existing JSON array element, it got deleted + instead of being replaced with a new value. + + + + + + + Avoid very-low-probability data corruption due to testing tuple + visibility without holding buffer lock (Thomas Munro, Peter Geoghegan, + Tom Lane) + + + + + + + Preserve commit timestamps across server restart + (Julien Rouhaud, Craig Ringer) + + + + With turned on, old + commit timestamps became inaccessible after a clean server restart. + + + + + + + Fix logical WAL decoding to work properly when a subtransaction's WAL + output is large enough to spill to disk (Andres Freund) + + + + + + + Fix dangling-pointer problem in logical WAL decoding (Stas Kelvich) + + + + + + + Round shared-memory allocation request to a multiple of the actual + huge page size when attempting to use huge pages on Linux (Tom Lane) + + + + This avoids possible failures during munmap() on systems + with atypical default huge page sizes. Except in crash-recovery + cases, there were no ill effects other than a log message. + + + + + + + Don't try to share SSL contexts across multiple connections + in libpq (Heikki Linnakangas) + + + + This led to assorted corner-case bugs, particularly when trying to use + different SSL parameters for different connections. + + + + + + + Avoid corner-case memory leak in libpq (Tom Lane) + + + + The reported problem involved leaking an error report + during PQreset(), but there might be related cases. + + + + + + + In pg_upgrade, check library loadability in name order + (Tom Lane) + + + + This is a workaround to deal with cross-extension dependencies from + language transform modules to their base language and data type + modules. + + + + + + + Fix pg_upgrade to work correctly for extensions + containing index access methods (Tom Lane) + + + + To allow this, the server has been extended to support ALTER + EXTENSION ADD/DROP ACCESS METHOD. That functionality should have + been included in the original patch to support dynamic creation of + access methods, but it was overlooked. + + + + + + + Improve error reporting in pg_upgrade's file + copying/linking/rewriting steps (Tom Lane, Álvaro Herrera) + + + + + + + Fix pg_dump to work against pre-7.4 servers + (Amit Langote, Tom Lane) + + + + + + + Disallow specifying both + + + + + + Make pg_rewind turn off synchronous_commit + in its session on the source server (Michael Banck, Michael Paquier) + + + + This allows pg_rewind to work even when the source + server is using synchronous replication that is not working for some + reason. + + + + + + + In pg_xlogdump, retry opening new WAL segments when + using + + + This allows for a possible delay in the server's creation of the next + segment. + + + + + + + Fix contrib/pg_visibility to report the correct TID for + a corrupt tuple that has been the subject of a rolled-back update + (Tom Lane) + + + + + + + Fix makefile dependencies so that parallel make + of PL/Python by itself will succeed reliably + (Pavel Raiskup) + + + + + + + Update time zone data files to tzdata release 2016h + for DST law changes in Palestine and Turkey, plus historical + corrections for Turkey and some regions of Russia. + Switch to numeric abbreviations for some time zones in Antarctica, + the former Soviet Union, and Sri Lanka. + + + + The IANA time zone database previously provided textual abbreviations + for all time zones, sometimes making up abbreviations that have little + or no currency among the local population. They are in process of + reversing that policy in favor of using numeric UTC offsets in zones + where there is no evidence of real-world use of an English + abbreviation. At least for the time being, PostgreSQL + will continue to accept such removed abbreviations for timestamp input. + But they will not be shown in the pg_timezone_names + view nor used for output. + + + + In this update, AMT is no longer shown as being in use to + mean Armenia Time. Therefore, we have changed the Default + abbreviation set to interpret it as Amazon Time, thus UTC-4 not UTC+4. + + + + + + + + Release 9.6 - - Release Date - 2016-09-29 - + + Release date: + 2016-09-29 + Overview @@ -1104,7 +5698,7 @@ and many others in the same vein This view exposes the same information available from - the pg_config comand-line utility, + the pg_config command-line utility, namely assorted compile-time configuration information for PostgreSQL. @@ -2992,7 +7586,7 @@ This commit is also listed under libpq and PL/pgSQL --> Allow the number of client connections ( @@ -3753,7 +8347,7 @@ This commit is also listed under libpq and PL/pgSQL --> Transmit query cancellation requests to the remote server - (Michael Paquier) + (Michael Paquier, Etsuro Fujita) diff --git a/doc/src/sgml/release-old.sgml b/doc/src/sgml/release-old.sgml index ec8e43f6ea..d56a5f65b4 100644 --- a/doc/src/sgml/release-old.sgml +++ b/doc/src/sgml/release-old.sgml @@ -4,10 +4,10 @@ Release 7.3.21 - - Release Date - 2008-01-07 - + + Release date: + 2008-01-07 + This release contains a variety of fixes from 7.3.20, @@ -116,10 +116,10 @@ Release 7.3.20 - - Release Date - 2007-09-17 - + + Release date: + 2007-09-17 + This release contains fixes from 7.3.19. @@ -177,10 +177,10 @@ Release 7.3.19 - - Release Date - 2007-04-23 - + + Release date: + 2007-04-23 + This release contains fixes from 7.3.18, @@ -233,10 +233,10 @@ Release 7.3.18 - - Release Date - 2007-02-05 - + + Release date: + 2007-02-05 + This release contains a variety of fixes from 7.3.17, including @@ -295,10 +295,10 @@ Release 7.3.17 - - Release Date - 2007-01-08 - + + Release date: + 2007-01-08 + This release contains a variety of fixes from 7.3.16. @@ -351,10 +351,10 @@ Release 7.3.16 - - Release Date - 2006-10-16 - + + Release date: + 2006-10-16 + This release contains a variety of fixes from 7.3.15. @@ -393,10 +393,10 @@ Release 7.3.15 - - Release Date - 2006-05-23 - + + Release date: + 2006-05-23 + This release contains a variety of fixes from 7.3.14, @@ -485,10 +485,10 @@ Fuhr) Release 7.3.14 - - Release Date - 2006-02-14 - + + Release date: + 2006-02-14 + This release contains a variety of fixes from 7.3.13. @@ -542,10 +542,10 @@ and isinf during configure (Tom) Release 7.3.13 - - Release Date - 2006-01-09 - + + Release date: + 2006-01-09 + This release contains a variety of fixes from 7.3.12. @@ -604,10 +604,10 @@ what's actually returned by the query (Joe) Release 7.3.12 - - Release Date - 2005-12-12 - + + Release date: + 2005-12-12 + This release contains a variety of fixes from 7.3.11. @@ -651,10 +651,10 @@ table has been dropped Release 7.3.11 - - Release Date - 2005-10-04 - + + Release date: + 2005-10-04 + This release contains a variety of fixes from 7.3.10. @@ -702,10 +702,10 @@ the variable is of pass-by-reference type Release 7.3.10 - - Release Date - 2005-05-09 - + + Release date: + 2005-05-09 + This release contains a variety of fixes from 7.3.9, including several @@ -828,10 +828,10 @@ month-related formats Release 7.3.9 - - Release Date - 2005-01-31 - + + Release date: + 2005-01-31 + This release contains a variety of fixes from 7.3.8, including several @@ -884,10 +884,10 @@ datestyles Release 7.3.8 - - Release Date - 2004-10-22 - + + Release date: + 2004-10-22 + This release contains a variety of fixes from 7.3.7. @@ -934,10 +934,10 @@ concern since there is no reason for non-developers to use this script anyway. Release 7.3.7 - - Release Date - 2004-08-16 - + + Release date: + 2004-08-16 + This release contains one critical fix over 7.3.6, and some minor items. @@ -974,10 +974,10 @@ since PostgreSQL 7.1. Release 7.3.6 - - Release Date - 2004-03-02 - + + Release date: + 2004-03-02 + This release contains a variety of fixes from 7.3.5. @@ -1039,10 +1039,10 @@ operations on bytea columns (Joe) Release 7.3.5 - - Release Date - 2003-12-03 - + + Release date: + 2003-12-03 + This has a variety of fixes from 7.3.4. @@ -1090,10 +1090,10 @@ operations on bytea columns (Joe) Release 7.3.4 - - Release Date - 2003-07-24 - + + Release date: + 2003-07-24 + This has a variety of fixes from 7.3.3. @@ -1130,10 +1130,10 @@ operations on bytea columns (Joe) Release 7.3.3 - - Release Date - 2003-05-22 - + + Release date: + 2003-05-22 + This release contains a variety of fixes for version 7.3.2. @@ -1240,10 +1240,10 @@ operations on bytea columns (Joe) Release 7.3.2 - - Release Date - 2003-02-04 - + + Release date: + 2003-02-04 + This release contains a variety of fixes for version 7.3.1. @@ -1301,10 +1301,10 @@ operations on bytea columns (Joe) Release 7.3.1 - - Release Date - 2002-12-18 - + + Release date: + 2002-12-18 + This release contains a variety of fixes for version 7.3. @@ -1351,10 +1351,10 @@ operations on bytea columns (Joe) Release 7.3 - - Release Date - 2002-11-27 - + + Release date: + 2002-11-27 + Overview @@ -1987,10 +1987,10 @@ operations on bytea columns (Joe) Release 7.2.8 - - Release Date - 2005-05-09 - + + Release date: + 2005-05-09 + This release contains a variety of fixes from 7.2.7, including one @@ -2038,10 +2038,10 @@ month-related formats Release 7.2.7 - - Release Date - 2005-01-31 - + + Release date: + 2005-01-31 + This release contains a variety of fixes from 7.2.6, including several @@ -2086,10 +2086,10 @@ datestyles Release 7.2.6 - - Release Date - 2004-10-22 - + + Release date: + 2004-10-22 + This release contains a variety of fixes from 7.2.5. @@ -2137,10 +2137,10 @@ concern since there is no reason for non-developers to use this script anyway. Release 7.2.5 - - Release Date - 2004-08-16 - + + Release date: + 2004-08-16 + This release contains a variety of fixes from 7.2.4. @@ -2180,10 +2180,10 @@ since PostgreSQL 7.1. Release 7.2.4 - - Release Date - 2003-01-30 - + + Release date: + 2003-01-30 + This release contains a variety of fixes for version 7.2.3, @@ -2219,10 +2219,10 @@ since PostgreSQL 7.1. Release 7.2.3 - - Release Date - 2002-10-01 - + + Release date: + 2002-10-01 + This release contains a variety of fixes for version 7.2.2, @@ -2256,10 +2256,10 @@ since PostgreSQL 7.1. Release 7.2.2 - - Release Date - 2002-08-23 - + + Release date: + 2002-08-23 + This release contains a variety of fixes for version 7.2.1. @@ -2299,10 +2299,10 @@ since PostgreSQL 7.1. Release 7.2.1 - - Release Date - 2002-03-21 - + + Release date: + 2002-03-21 + This release contains a variety of fixes for version 7.2. @@ -2345,10 +2345,10 @@ since PostgreSQL 7.1. Release 7.2 - - Release Date - 2002-02-04 - + + Release date: + 2002-02-04 + Overview @@ -2901,10 +2901,10 @@ since PostgreSQL 7.1. Release 7.1.3 - - Release Date - 2001-08-15 - + + Release date: + 2001-08-15 + Migration to Version 7.1.3 @@ -2939,10 +2939,10 @@ Cygwin build (Jason Tishler) Release 7.1.2 - - Release Date - 2001-05-11 - + + Release date: + 2001-05-11 + This has one fix from 7.1.1. @@ -2977,10 +2977,10 @@ pg_dump cleanups Release 7.1.1 - - Release Date - 2001-05-05 - + + Release date: + 2001-05-05 + This has a variety of fixes from 7.1. @@ -3024,10 +3024,10 @@ Python fixes (Darcy) Release 7.1 - - Release Date - 2001-04-13 - + + Release date: + 2001-04-13 + This release focuses on removing limitations that have existed in the @@ -3322,10 +3322,10 @@ New FreeBSD tools ipc_check, start-scripts/freebsd Release 7.0.3 - - Release Date - 2000-11-11 - + + Release date: + 2000-11-11 + This has a variety of fixes from 7.0.2. @@ -3394,10 +3394,10 @@ Fix for crash of backend, on abort (Tom) Release 7.0.2 - - Release Date - 2000-06-05 - + + Release date: + 2000-06-05 + This is a repackaging of 7.0.1 with added documentation. @@ -3428,10 +3428,10 @@ Added documentation to tarball. Release 7.0.1 - - Release Date - 2000-06-01 - + + Release date: + 2000-06-01 + This is a cleanup release for 7.0. @@ -3483,10 +3483,10 @@ ecpg changes (Michael) Release 7.0 - - Release Date - 2000-05-08 - + + Release date: + 2000-05-08 + This release contains improvements in many areas, demonstrating @@ -3952,10 +3952,10 @@ New multibyte encodings Release 6.5.3 - - Release Date - 1999-10-13 - + + Release date: + 1999-10-13 + This is basically a cleanup release for 6.5.2. We have added a new @@ -3988,10 +3988,10 @@ Fix dumping rules on inherited tables Release 6.5.2 - - Release Date - 1999-09-15 - + + Release date: + 1999-09-15 + This is basically a cleanup release for 6.5.1. We have fixed a variety of @@ -4045,10 +4045,10 @@ Updated version of pgaccess 0.98 Release 6.5.1 - - Release Date - 1999-07-15 - + + Release date: + 1999-07-15 + This is basically a cleanup release for 6.5. We have fixed a variety of @@ -4100,10 +4100,10 @@ Add Win1250 (Czech) support (Pavel Behal) Release 6.5 - - Release Date - 1999-06-09 - + + Release date: + 1999-06-09 + This release marks a major step in the development team's mastery of the source @@ -4500,10 +4500,10 @@ New install commands for plpgsql(Jan) Release 6.4.2 - - Release Date - 1998-12-20 - + + Release date: + 1998-12-20 + The 6.4.1 release was improperly packaged. This also has one additional @@ -4535,10 +4535,10 @@ Fix for datetime constant problem on some platforms(Thomas) Release 6.4.1 - - Release Date - 1998-12-18 - + + Release date: + 1998-12-18 + This is basically a cleanup release for 6.4. We have fixed a variety of @@ -4599,10 +4599,10 @@ Upgrade to PyGreSQL 2.2(D'Arcy) Release 6.4 - - Release Date - 1998-10-30 - + + Release date: + 1998-10-30 + There are many new features and improvements in this release. @@ -4896,10 +4896,10 @@ new Makefile.shlib for shared library configuration(Tom) Release 6.3.2 - - Release Date - 1998-04-07 - + + Release date: + 1998-04-07 + This is a bug-fix release for 6.3.x. @@ -4966,10 +4966,10 @@ ASSERT fixes(Bruce) Release 6.3.1 - - Release Date - 1998-03-23 - + + Release date: + 1998-03-23 + Summary: @@ -5052,10 +5052,10 @@ Better identify tcl and tk libs and includes(Bruce) Release 6.3 - - Release Date - 1998-03-01 - + + Release date: + 1998-03-01 + There are many new features and improvements in this release. @@ -5364,10 +5364,10 @@ Remove un-needed malloc() calls and replace with palloc()(Bruce) Release 6.2.1 - - Release Date - 1997-10-17 - + + Release date: + 1997-10-17 + 6.2.1 is a bug-fix and usability release on 6.2. @@ -5446,10 +5446,10 @@ Trigger function for inserting user names for INSERT/UPDATE(Brook Milligan) Release 6.2 - - Release Date - 1997-10-02 - + + Release date: + 1997-10-02 + A dump/restore is required for those wishing to migrate data from @@ -5599,10 +5599,10 @@ SPI and Trigger programming guides (Vadim & D'Arcy) Release 6.1.1 - - Release Date - 1997-07-22 - + + Release date: + 1997-07-22 + Migration from version 6.1 to version 6.1.1 @@ -5644,10 +5644,10 @@ pg_dumpall now returns proper status, portability fix(Bruce) Release 6.1 - - Release Date - 1997-06-08 - + + Release date: + 1997-06-08 + The regression tests have been adapted and extensively modified for the @@ -5737,8 +5737,8 @@ fix rtree for use in inner scan (Vadim) fix gist for use in inner scan, cleanups (Vadim, Andrea) avoid unnecessary local buffers allocation (Vadim, Massimo) fix local buffers leak in transaction aborts (Vadim) -fix file manager memmory leaks, cleanups (Vadim, Massimo) -fix storage manager memmory leaks (Vadim) +fix file manager memory leaks, cleanups (Vadim, Massimo) +fix storage manager memory leaks (Vadim) fix btree duplicates handling (Vadim) fix deleted rows reincarnation caused by vacuum (Vadim) fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce) @@ -5816,10 +5816,10 @@ DG/UX, Ultrix, IRIX, AIX portability fixes Release 6.0 - - Release Date - 1997-01-29 - + + Release date: + 1997-01-29 + A dump/restore is required for those wishing to migrate data from @@ -5904,7 +5904,7 @@ European date format now set when postmaster is started Execute lowercase function names if not found with exact case Fixes for aggregate/GROUP processing, allow 'select sum(func(x),sum(x+y) from z' Gist now included in the distribution(Marc) -Idend authentication of local users(Bryan) +Ident authentication of local users(Bryan) Implement BETWEEN qualifier(Bruce) Implement IN qualifier(Bruce) libpq has PQgetisnull()(Bruce) @@ -5960,10 +5960,10 @@ Unused/uninitialized variables corrected Release 1.09 - - Release Date - 1996-11-04 - + + Release date: + 1996-11-04 + Sorry, we didn't keep track of changes from 1.02 to 1.09. Some of @@ -5975,10 +5975,10 @@ releases. Release 1.02 - - Release Date - 1996-08-01 - + + Release date: + 1996-08-01 + Migration from version 1.02 to version 1.02.1 @@ -6124,10 +6124,10 @@ Contributors (apologies to any missed) Release 1.01 - - Release Date - 1996-02-23 - + + Release date: + 1996-02-23 + @@ -6316,10 +6316,10 @@ Bug fixes: Release 1.0 - - Release Date - 1995-09-05 - + + Release date: + 1995-09-05 + Changes @@ -6373,10 +6373,10 @@ Bug fixes: <productname>Postgres95</productname> Release 0.03 - - Release Date - 1995-07-21 - + + Release date: + 1995-07-21 + Changes @@ -6495,10 +6495,10 @@ New documentation: <productname>Postgres95</productname> Release 0.02 - - Release Date - 1995-05-25 - + + Release date: + 1995-05-25 + Changes @@ -6546,10 +6546,10 @@ The following bugs have been fixed in postgres95-beta-0.02: <productname>Postgres95</productname> Release 0.01 - - Release Date - 1995-05-01 - + + Release date: + 1995-05-01 + Initial release. diff --git a/doc/src/sgml/release.sgml b/doc/src/sgml/release.sgml index 472c1f6f12..1f8cd8ef17 100644 --- a/doc/src/sgml/release.sgml +++ b/doc/src/sgml/release.sgml @@ -55,9 +55,9 @@ For new features, add links to the documentation sections. A complete list of changes for each release can be obtained by viewing the Git logs for each release. The pgsql-committers + url="https://archives.postgresql.org/pgsql-committers/">pgsql-committers email list records all source code changes as well. There is also - a web + a web interface that shows changes to specific files. diff --git a/doc/src/sgml/rowtypes.sgml b/doc/src/sgml/rowtypes.sgml index 605dc71dab..9d6768e006 100644 --- a/doc/src/sgml/rowtypes.sgml +++ b/doc/src/sgml/rowtypes.sgml @@ -19,7 +19,7 @@ column of a table can be declared to be of a composite type. - + Declaration of Composite Types @@ -90,7 +90,7 @@ CREATE TABLE inventory_item ( - Composite Value Input + Constructing Composite Values composite type @@ -101,8 +101,9 @@ CREATE TABLE inventory_item ( To write a composite value as a literal constant, enclose the field values within parentheses and separate them by commas. You can put double quotes around any field value, and must do so if it contains commas or - parentheses. (More details appear below.) Thus, the general format of a - composite constant is the following: + parentheses. (More details appear below.) Thus, the general format of + a composite constant is the following: '( val1 , val2 , ... )' @@ -129,7 +130,8 @@ CREATE TABLE inventory_item ( the generic type constants discussed in . The constant is initially treated as a string and passed to the composite-type input conversion - routine. An explicit type specification might be necessary.) + routine. An explicit type specification might be necessary to tell + which type to convert the constant to.) @@ -143,7 +145,7 @@ ROW('fuzzy dice', 42, 1.99) ROW('', 42, NULL) The ROW keyword is actually optional as long as you have more than one - field in the expression, so these can simplify to: + field in the expression, so these can be simplified to: ('fuzzy dice', 42, 1.99) ('', 42, NULL) @@ -153,7 +155,7 @@ ROW('', 42, NULL) - + Accessing Composite Types @@ -198,6 +200,11 @@ SELECT (my_func(...)).field FROM ... Without the extra parentheses, this will generate a syntax error. + + + The special field name * means all fields, as + further explained in . + @@ -243,6 +250,199 @@ INSERT INTO mytab (complex_col.r, complex_col.i) VALUES(1.1, 2.2); + + Using Composite Types in Queries + + + There are various special syntax rules and behaviors associated with + composite types in queries. These rules provide useful shortcuts, + but can be confusing if you don't know the logic behind them. + + + + In PostgreSQL, a reference to a table name (or alias) + in a query is effectively a reference to the composite value of the + table's current row. For example, if we had a table + inventory_item as shown + above, we could write: + +SELECT c FROM inventory_item c; + + This query produces a single composite-valued column, so we might get + output like: + + c +------------------------ + ("fuzzy dice",42,1.99) +(1 row) + + Note however that simple names are matched to column names before table + names, so this example works only because there is no column + named c in the query's tables. + + + + The ordinary qualified-column-name + syntax table_name.column_name + can be understood as applying field + selection to the composite value of the table's current row. + (For efficiency reasons, it's not actually implemented that way.) + + + + When we write + +SELECT c.* FROM inventory_item c; + + then, according to the SQL standard, we should get the contents of the + table expanded into separate columns: + + name | supplier_id | price +------------+-------------+------- + fuzzy dice | 42 | 1.99 +(1 row) + + as if the query were + +SELECT c.name, c.supplier_id, c.price FROM inventory_item c; + + PostgreSQL will apply this expansion behavior to + any composite-valued expression, although as shown above, you need to write parentheses + around the value that .* is applied to whenever it's not a + simple table name. For example, if myfunc() is a function + returning a composite type with columns a, + b, and c, then these two queries have the + same result: + +SELECT (myfunc(x)).* FROM some_table; +SELECT (myfunc(x)).a, (myfunc(x)).b, (myfunc(x)).c FROM some_table; + + + + + + PostgreSQL handles column expansion by + actually transforming the first form into the second. So, in this + example, myfunc() would get invoked three times per row + with either syntax. If it's an expensive function you may wish to + avoid that, which you can do with a query like: + +SELECT (m).* FROM (SELECT myfunc(x) AS m FROM some_table OFFSET 0) ss; + + The OFFSET 0 clause keeps the optimizer + from flattening the sub-select to arrive at the form with + multiple calls of myfunc(). + + + + + The composite_value.* syntax results in + column expansion of this kind when it appears at the top level of + a SELECT output + list, a RETURNING + list in INSERT/UPDATE/DELETE, + a VALUES clause, or + a row constructor. + In all other contexts (including when nested inside one of those + constructs), attaching .* to a composite value does not + change the value, since it means all columns and so the + same composite value is produced again. For example, + if somefunc() accepts a composite-valued argument, + these queries are the same: + + +SELECT somefunc(c.*) FROM inventory_item c; +SELECT somefunc(c) FROM inventory_item c; + + + In both cases, the current row of inventory_item is + passed to the function as a single composite-valued argument. + Even though .* does nothing in such cases, using it is good + style, since it makes clear that a composite value is intended. In + particular, the parser will consider c in c.* to + refer to a table name or alias, not to a column name, so that there is + no ambiguity; whereas without .*, it is not clear + whether c means a table name or a column name, and in fact + the column-name interpretation will be preferred if there is a column + named c. + + + + Another example demonstrating these concepts is that all these queries + mean the same thing: + +SELECT * FROM inventory_item c ORDER BY c; +SELECT * FROM inventory_item c ORDER BY c.*; +SELECT * FROM inventory_item c ORDER BY ROW(c.*); + + All of these ORDER BY clauses specify the row's composite + value, resulting in sorting the rows according to the rules described + in . However, + if inventory_item contained a column + named c, the first case would be different from the + others, as it would mean to sort by that column only. Given the column + names previously shown, these queries are also equivalent to those above: + +SELECT * FROM inventory_item c ORDER BY ROW(c.name, c.supplier_id, c.price); +SELECT * FROM inventory_item c ORDER BY (c.name, c.supplier_id, c.price); + + (The last case uses a row constructor with the key word ROW + omitted.) + + + + Another special syntactical behavior associated with composite values is + that we can use functional notation for extracting a field + of a composite value. The simple way to explain this is that + the notations field(table) + and table.field + are interchangeable. For example, these queries are equivalent: + + +SELECT c.name FROM inventory_item c WHERE c.price > 1000; +SELECT name(c) FROM inventory_item c WHERE price(c) > 1000; + + + Moreover, if we have a function that accepts a single argument of a + composite type, we can call it with either notation. These queries are + all equivalent: + + +SELECT somefunc(c) FROM inventory_item c; +SELECT somefunc(c.*) FROM inventory_item c; +SELECT c.somefunc FROM inventory_item c; + + + + + This equivalence between functional notation and field notation + makes it possible to use functions on composite types to implement + computed fields. + + computed field + + + field + computed + + An application using the last query above wouldn't need to be directly + aware that somefunc isn't a real column of the table. + + + + + Because of this behavior, it's unwise to give a function that takes a + single composite-type argument the same name as any of the fields of + that composite type. If there is ambiguity, the field-name + interpretation will be preferred, so that such a function could not be + called without tricks. One way to force the function interpretation is + to schema-qualify the function name, that is, write + schema.func(compositevalue). + + + + Composite Type Input and Output Syntax diff --git a/doc/src/sgml/rules.sgml b/doc/src/sgml/rules.sgml index ca1b767d69..bcbc170335 100644 --- a/doc/src/sgml/rules.sgml +++ b/doc/src/sgml/rules.sgml @@ -862,7 +862,7 @@ SELECT t1.a, t2.b, t1.ctid FROM t1, t2 WHERE t1.a = t2.a; UPDATE, and DELETE commands on a view. These rules will rewrite the command, typically into a command that updates one or more tables, rather than views. That is the topic - of the next section. + of . diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml index 4f73c043ac..dec98187cb 100644 --- a/doc/src/sgml/runtime.sgml +++ b/doc/src/sgml/runtime.sgml @@ -1422,53 +1422,67 @@ export PG_OOM_ADJUST_VALUE=0 - Linux huge pages + Linux Huge Pages Using huge pages reduces overhead when using large contiguous chunks of - memory, like PostgreSQL does. To enable this + memory, as PostgreSQL does, particularly when + using large values of . To use this feature in PostgreSQL you need a kernel with CONFIG_HUGETLBFS=y and - CONFIG_HUGETLB_PAGE=y. You also have to tune the system - setting vm.nr_hugepages. To estimate the number of - necessary huge pages start PostgreSQL without - huge pages enabled and check the VmPeak value from the - proc file system: + CONFIG_HUGETLB_PAGE=y. You will also have to adjust + the kernel setting vm.nr_hugepages. To estimate the + number of huge pages needed, start PostgreSQL + without huge pages enabled and check the + postmaster's VmPeak value, as well as the system's + huge page size, using the /proc file system. This might + look like: -$ head -1 /path/to/data/directory/postmaster.pid +$ head -1 $PGDATA/postmaster.pid 4170 $ grep ^VmPeak /proc/4170/status VmPeak: 6490428 kB +$ grep ^Hugepagesize /proc/meminfo +Hugepagesize: 2048 kB - 6490428 / 2048 - (PAGE_SIZE is 2MB in this case) are - roughly 3169.154 huge pages, so you will need at - least 3170 huge pages: + 6490428 / 2048 gives approximately + 3169.154, so in this example we need at + least 3170 huge pages, which we can set with: $ sysctl -w vm.nr_hugepages=3170 + A larger setting would be appropriate if other programs on the machine + also need huge pages. Don't forget to add this setting + to /etc/sysctl.conf so that it will be reapplied + after reboots. + + + Sometimes the kernel is not able to allocate the desired number of huge - pages, so it might be necessary to repeat that command or to reboot. Don't - forget to add an entry to /etc/sysctl.conf to persist - this setting through reboots. + pages immediately, so it might be necessary to repeat the command or to + reboot. (Immediately after a reboot, most of the machine's memory + should be available to convert into huge pages.) To verify the huge + page allocation situation, use: + +$ grep Huge /proc/meminfo + - It is also necessary to give the database server operating system + It may also be necessary to give the database server's operating system user permission to use huge pages by setting - vm.hugetlb_shm_group via sysctl, and - permission to lock memory with ulimit -l. + vm.hugetlb_shm_group via sysctl, and/or + give permission to lock memory with ulimit -l. The default behavior for huge pages in PostgreSQL is to use them when possible and - to fallback to normal pages when failing. To enforce the use of huge - pages, you can set - huge_pages - to on. Note that in this case - PostgreSQL will fail to start if not enough huge - pages are available. + to fall back to normal pages when failing. To enforce the use of huge + pages, you can set + to on in postgresql.conf. + Note that with this setting PostgreSQL will fail to + start if not enough huge pages are available. diff --git a/doc/src/sgml/sepgsql.sgml b/doc/src/sgml/sepgsql.sgml index 6f80933abd..0b611eeeca 100644 --- a/doc/src/sgml/sepgsql.sgml +++ b/doc/src/sgml/sepgsql.sgml @@ -753,7 +753,7 @@ ERROR: SELinux: security policy violation External Resources - SE-PostgreSQL Introduction + SE-PostgreSQL Introduction This wiki page provides a brief overview, security design, architecture, diff --git a/doc/src/sgml/sourcerepo.sgml b/doc/src/sgml/sourcerepo.sgml index d82706b40b..dd9da5a7b0 100644 --- a/doc/src/sgml/sourcerepo.sgml +++ b/doc/src/sgml/sourcerepo.sgml @@ -12,7 +12,7 @@ Our wiki, , + url="https://wiki.postgresql.org/wiki/Working_with_Git">, has some discussion on working with Git. @@ -20,9 +20,9 @@ Note that building PostgreSQL from the source repository requires reasonably up-to-date versions of bison, flex, and Perl. These tools are not needed - to build from a distribution tarball since the files they are used to build - are included in the tarball. Other tool requirements are the same as shown - in . + to build from a distribution tarball, because the files that these tools + are used to build are included in the tarball. Other tool requirements + are the same as shown in . @@ -64,10 +64,10 @@ git clone git://git.postgresql.org/git/postgresql.git The Git mirror can also be reached via the HTTP protocol, if for example a firewall is blocking access to the Git protocol. Just change the URL - prefix to http, as in: + prefix to https, as in: -git clone http://git.postgresql.org/git/postgresql.git +git clone https://git.postgresql.org/git/postgresql.git The HTTP protocol is less efficient than the Git protocol, so it will be diff --git a/doc/src/sgml/sources.sgml b/doc/src/sgml/sources.sgml index d132ee4a2e..877fcedbb3 100644 --- a/doc/src/sgml/sources.sgml +++ b/doc/src/sgml/sources.sgml @@ -898,7 +898,7 @@ BETTER: unrecognized node type: 42 expressions of various types need to be passed to the macro. - When the definition an inline function references symbols + When the definition of an inline function references symbols (i.e. variables, functions) that are only available as part of the backend, the function may not be visible when included from frontend code. diff --git a/doc/src/sgml/storage.sgml b/doc/src/sgml/storage.sgml index 1b812bd0a9..75a87a504a 100644 --- a/doc/src/sgml/storage.sgml +++ b/doc/src/sgml/storage.sgml @@ -624,7 +624,7 @@ can be used to examine the information stored in free space maps. Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain -only unfrozen tuples. It's stored +only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a _vm suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called diff --git a/doc/src/sgml/stylesheet.xsl b/doc/src/sgml/stylesheet.xsl index 7967b361dd..8fd870a2e2 100644 --- a/doc/src/sgml/stylesheet.xsl +++ b/doc/src/sgml/stylesheet.xsl @@ -24,7 +24,7 @@ stylesheet.css - http://www.postgresql.org/media/css/docs.css + https://www.postgresql.org/media/css/docs.css diff --git a/doc/src/sgml/syntax.sgml b/doc/src/sgml/syntax.sgml index 36df6c6b1b..40f722c18d 100644 --- a/doc/src/sgml/syntax.sgml +++ b/doc/src/sgml/syntax.sgml @@ -1449,12 +1449,13 @@ $1.somecolumn - In a select list (see ), you - can ask for all fields of a composite value by + You can ask for all fields of a composite value by writing .*: (compositecol).* + This notation behaves differently depending on context; + see for details. @@ -1531,7 +1532,7 @@ sqrt(2) interchangeable. This behavior is not SQL-standard but is provided in PostgreSQL because it allows use of functions to emulate computed fields. For more information see - . + . @@ -1693,11 +1694,18 @@ SELECT string_agg(a ORDER BY a, ',') FROM table; -- incorrect case, write just () not (*). (PostgreSQL will actually accept either spelling, but only the first way conforms to the SQL standard.) + + + + + median + percentile + An example of an ordered-set aggregate call is: -SELECT percentile_disc(0.5) WITHIN GROUP (ORDER BY income) FROM households; - percentile_disc +SELECT percentile_cont(0.5) WITHIN GROUP (ORDER BY income) FROM households; + percentile_cont ----------------- 50489 @@ -2291,7 +2299,8 @@ SELECT ROW(1,2.5,'this is a test'); rowvalue.*, which will be expanded to a list of the elements of the row value, just as occurs when the .* syntax is used at the top level - of a SELECT list. For example, if table t has + of a SELECT list (see ). + For example, if table t has columns f1 and f2, these are the same: SELECT ROW(t.*, 42) FROM t; @@ -2302,9 +2311,9 @@ SELECT ROW(t.f1, t.f2, 42) FROM t; Before PostgreSQL 8.2, the - .* syntax was not expanded, so that writing - ROW(t.*, 42) created a two-field row whose first field - was another row value. The new behavior is usually more useful. + .* syntax was not expanded in row constructors, so + that writing ROW(t.*, 42) created a two-field row whose first + field was another row value. The new behavior is usually more useful. If you need the old behavior of nested row values, write the inner row value without .*, for instance ROW(t, 42). diff --git a/doc/src/sgml/textsearch.sgml b/doc/src/sgml/textsearch.sgml index 5a70d7db80..67e4901c92 100644 --- a/doc/src/sgml/textsearch.sgml +++ b/doc/src/sgml/textsearch.sgml @@ -264,7 +264,7 @@ SELECT 'fat & cow'::tsquery @@ 'a fat cat sat on a mat and ate a fat rat'::t text, any more than a tsvector is. A tsquery contains search terms, which must be already-normalized lexemes, and may combine multiple terms using AND, OR, NOT, and FOLLOWED BY operators. - (For details see .) There are + (For syntax details see .) There are functions to_tsquery, plainto_tsquery, and phraseto_tsquery that are helpful in converting user-written text into a proper @@ -323,6 +323,8 @@ text @@ text at least one of its arguments must appear, while the ! (NOT) operator specifies that its argument must not appear in order to have a match. + For example, the query fat & ! rat matches documents that + contain fat but not rat. @@ -377,6 +379,28 @@ SELECT phraseto_tsquery('the cats ate the rats'); then &, then <->, and ! most tightly. + + + It's worth noticing that the AND/OR/NOT operators mean something subtly + different when they are within the arguments of a FOLLOWED BY operator + than when they are not, because within FOLLOWED BY the exact position of + the match is significant. For example, normally !x matches + only documents that do not contain x anywhere. + But !x <-> y matches y if it is not + immediately after an x; an occurrence of x + elsewhere in the document does not prevent a match. Another example is + that x & y normally only requires that x + and y both appear somewhere in the document, but + (x & y) <-> z requires x + and y to match at the same place, immediately before + a z. Thus this query behaves differently from + x <-> z & y <-> z, which will match a + document containing two separate sequences x z and + y z. (This specific query is useless as written, + since x and y could not match at the same place; + but with more complex situations such as prefix-match patterns, a query + of this form could be useful.) + @@ -1290,19 +1314,7 @@ query.', ts_headline uses the original document, not a tsvector summary, so it can be slow and should be used with - care. A typical mistake is to call ts_headline for - every matching document when only ten documents are - to be shown. SQL subqueries can help; here is an - example: - - -SELECT id, ts_headline(body, q), rank -FROM (SELECT id, body, q, ts_rank_cd(ti, q) AS rank - FROM apod, to_tsquery('stars') q - WHERE ti @@ q - ORDER BY rank DESC - LIMIT 10) AS foo; - + care. diff --git a/doc/src/sgml/wal.sgml b/doc/src/sgml/wal.sgml index 503ea8a2a7..b2b1a43670 100644 --- a/doc/src/sgml/wal.sgml +++ b/doc/src/sgml/wal.sgml @@ -569,7 +569,7 @@ removes the rest. The estimate is based on a moving average of the number of WAL files used in previous checkpoint cycles. The moving average is increased immediately if the actual usage exceeds the estimate, so it - accommodates peak usage rather average usage to some extent. + accommodates peak usage rather than average usage to some extent. min_wal_size puts a minimum on the amount of WAL files recycled for future usage; that much WAL is always recycled for future use, even if the system is idle and the WAL usage estimate suggests that little diff --git a/doc/src/sgml/xaggr.sgml b/doc/src/sgml/xaggr.sgml index fa98572ed6..79a9f288b2 100644 --- a/doc/src/sgml/xaggr.sgml +++ b/doc/src/sgml/xaggr.sgml @@ -626,7 +626,7 @@ if (AggCheckCallContext(fcinfo, NULL)) function, the first input must be a temporary state value and can therefore safely be modified in-place rather than allocating a new copy. - See int8inc() for an example. + See int8inc() for an example. (This is the only case where it is safe for a function to modify a pass-by-reference input. In particular, final functions for normal aggregates must not @@ -634,6 +634,20 @@ if (AggCheckCallContext(fcinfo, NULL)) re-executed on the same final state value.) + + The second argument of AggCheckCallContext can be used to + retrieve the memory context in which aggregate state values are being kept. + This is useful for transition functions that wish to use expanded + objects (see ) as their state values. + On first call, the transition function should return an expanded object + whose memory context is a child of the aggregate state context, and then + keep returning the same expanded object on subsequent calls. See + array_append() for an example. (array_append() + is not the transition function of any built-in aggregate, but it is written + to behave efficiently when used as transition function of a custom + aggregate.) + + Another support routine available to aggregate functions written in C is AggGetAggref, which returns the Aggref diff --git a/doc/src/sgml/xfunc.sgml b/doc/src/sgml/xfunc.sgml index de6a466efc..f2f379870f 100644 --- a/doc/src/sgml/xfunc.sgml +++ b/doc/src/sgml/xfunc.sgml @@ -394,8 +394,8 @@ SELECT name, double_salary(emp.*) AS dream Notice the use of the syntax $1.salary to select one field of the argument row value. Also notice - how the calling SELECT command uses * - to select + how the calling SELECT command + uses table_name.* to select the entire current row of a table as a composite value. The table row can alternatively be referenced using just the table name, like this: @@ -405,6 +405,8 @@ SELECT name, double_salary(emp) AS dream WHERE emp.cubicle ~= point '(2,1)'; but this usage is deprecated since it's easy to get confused. + (See for details about these + two notations for the composite value of a table row.) @@ -479,7 +481,8 @@ $$ LANGUAGE SQL; - We could call this function directly in either of two ways: + We could call this function directly either by using it in + a value expression: SELECT new_emp(); @@ -487,7 +490,11 @@ SELECT new_emp(); new_emp -------------------------- (None,1000.0,25,"(2,2)") + + + or by calling it as a table function: + SELECT * FROM new_emp(); name | salary | age | cubicle @@ -524,12 +531,7 @@ LINE 1: SELECT new_emp().name; - Another option is to use - functional notation for extracting an attribute. The simple way - to explain this is that we can use the - notations attribute(table) - and table.attribute - interchangeably. + Another option is to use functional notation for extracting an attribute: SELECT name(new_emp()); @@ -539,50 +541,10 @@ SELECT name(new_emp()); None - --- This is the same as: --- SELECT emp.name AS youngster FROM emp WHERE emp.age < 30; - -SELECT name(emp) AS youngster FROM emp WHERE age(emp) < 30; - - youngster ------------ - Sam - Andy - + As explained in , the field notation and + functional notation are equivalent. - - - The equivalence between functional notation and attribute notation - makes it possible to use functions on composite types to emulate - computed fields. - - computed field - - - field - computed - - For example, using the previous definition - for double_salary(emp), we can write - - -SELECT emp.name, emp.double_salary FROM emp; - - - An application using this wouldn't need to be directly aware that - double_salary isn't a real column of the table. - (You can also emulate computed fields with views.) - - - - Because of this behavior, it's unwise to give a function that takes - a single composite-type argument the same name as any of the fields of - that composite type. - - - Another way to use a function returning a composite type is to pass the result to another function that accepts the correct row type as input: @@ -599,12 +561,6 @@ SELECT getname(new_emp()); (1 row) - - - Still another way to use a function that returns a composite type is to - call it as a table function, as described in . - @@ -2870,7 +2826,7 @@ HeapTupleGetDatum(HeapTuple tuple) is used to hold a pointer to FuncCallContext across calls. -typedef struct +typedef struct FuncCallContext { /* * Number of times we've been called before @@ -2878,7 +2834,7 @@ typedef struct * call_cntr is initialized to 0 for you by SRF_FIRSTCALL_INIT(), and * incremented for you every time SRF_RETURN_NEXT() is called. */ - uint32 call_cntr; + uint64 call_cntr; /* * OPTIONAL maximum number of calls @@ -2887,7 +2843,7 @@ typedef struct * If not set, you must provide alternative means to know when the * function is done. */ - uint32 max_calls; + uint64 max_calls; /* * OPTIONAL pointer to result slot diff --git a/src/Makefile.global.in b/src/Makefile.global.in index e1e2c0adaf..cb939b5855 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -298,6 +298,7 @@ else endif perl_archlibexp = @perl_archlibexp@ perl_privlibexp = @perl_privlibexp@ +perl_embed_ccflags = @perl_embed_ccflags@ perl_embed_ldflags = @perl_embed_ldflags@ # Miscellaneous @@ -335,7 +336,8 @@ PROVE = @PROVE@ # There are common routines in src/test/perl, and some test suites have # extra perl modules in their own directory. PG_PROVE_FLAGS = -I $(top_srcdir)/src/test/perl/ -I $(srcdir) -PROVE_FLAGS = --verbose +# User-supplied prove flags such as --verbose can be provided in PROVE_FLAGS. +PROVE_FLAGS = # prepend to path if already set, else just set it define add_to_path @@ -582,6 +584,11 @@ ifneq ($(CUSTOM_COPT),) COPT= $(CUSTOM_COPT) endif +# +# These variables are meant to be set in the environment of "make" +# to add flags to whatever configure picked. Unlike the ones above, +# they are documented. +# ifdef COPT CFLAGS += $(COPT) LDFLAGS += $(COPT) diff --git a/src/Makefile.shlib b/src/Makefile.shlib index 5b6d77d40a..f50b0398c9 100644 --- a/src/Makefile.shlib +++ b/src/Makefile.shlib @@ -401,7 +401,7 @@ $(shlib): $(OBJS) $(DLL_DEFFILE) | $(SHLIB_PREREQS) $(CC) $(CFLAGS) -shared -static-libgcc -o $@ $(OBJS) $(DLL_DEFFILE) $(LDFLAGS) $(LDFLAGS_SL) $(SHLIB_LINK) $(LIBS) -Wl,--out-implib=$(stlib) endif -endif # PORTNAME == cgywin +endif # PORTNAME == cygwin endif # PORTNAME == cygwin || PORTNAME == win32 diff --git a/src/backend/access/brin/brin_pageops.c b/src/backend/access/brin/brin_pageops.c index 6ebfedd6a9..987e6005cb 100644 --- a/src/backend/access/brin/brin_pageops.c +++ b/src/backend/access/brin/brin_pageops.c @@ -73,10 +73,8 @@ brin_doupdate(Relation idxrel, BlockNumber pagesPerRange, { ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), - errmsg("index row size %lu exceeds maximum %lu for index \"%s\"", - (unsigned long) newsz, - (unsigned long) BrinMaxItemSize, - RelationGetRelationName(idxrel)))); + errmsg("index row size %zu exceeds maximum %zu for index \"%s\"", + newsz, BrinMaxItemSize, RelationGetRelationName(idxrel)))); return false; /* keep compiler quiet */ } @@ -289,7 +287,7 @@ brin_doupdate(Relation idxrel, BlockNumber pagesPerRange, XLogRegisterBufData(0, (char *) newtup, newsz); /* revmap page */ - XLogRegisterBuffer(1, revmapbuf, REGBUF_STANDARD); + XLogRegisterBuffer(1, revmapbuf, 0); /* old page */ XLogRegisterBuffer(2, oldbuf, REGBUF_STANDARD); @@ -359,10 +357,8 @@ brin_doinsert(Relation idxrel, BlockNumber pagesPerRange, { ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), - errmsg("index row size %lu exceeds maximum %lu for index \"%s\"", - (unsigned long) itemsz, - (unsigned long) BrinMaxItemSize, - RelationGetRelationName(idxrel)))); + errmsg("index row size %zu exceeds maximum %zu for index \"%s\"", + itemsz, BrinMaxItemSize, RelationGetRelationName(idxrel)))); return InvalidOffsetNumber; /* keep compiler quiet */ } @@ -669,7 +665,7 @@ brin_getinsertbuffer(Relation irel, Buffer oldbuf, Size itemsz, BlockNumber oldblk; BlockNumber newblk; Page page; - int freespace; + Size freespace; /* callers must have checked */ Assert(itemsz <= BrinMaxItemSize); @@ -825,10 +821,8 @@ brin_getinsertbuffer(Relation irel, Buffer oldbuf, Size itemsz, ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), - errmsg("index row size %lu exceeds maximum %lu for index \"%s\"", - (unsigned long) itemsz, - (unsigned long) freespace, - RelationGetRelationName(irel)))); + errmsg("index row size %zu exceeds maximum %zu for index \"%s\"", + itemsz, freespace, RelationGetRelationName(irel)))); return InvalidBuffer; /* keep compiler quiet */ } diff --git a/src/backend/access/brin/brin_validate.c b/src/backend/access/brin/brin_validate.c index 1f1011e0ac..083fcbebed 100644 --- a/src/backend/access/brin/brin_validate.c +++ b/src/backend/access/brin/brin_validate.c @@ -112,8 +112,8 @@ brinvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("brin operator family \"%s\" contains function %s with invalid support number %d", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains function %s with invalid support number %d", + opfamilyname, "brin", format_procedure(procform->amproc), procform->amprocnum))); result = false; @@ -128,8 +128,8 @@ brinvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("brin operator family \"%s\" contains function %s with wrong signature for support number %d", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains function %s with wrong signature for support number %d", + opfamilyname, "brin", format_procedure(procform->amproc), procform->amprocnum))); result = false; @@ -150,8 +150,8 @@ brinvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("brin operator family \"%s\" contains operator %s with invalid strategy number %d", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains operator %s with invalid strategy number %d", + opfamilyname, "brin", format_operator(oprform->amopopr), oprform->amopstrategy))); result = false; @@ -179,8 +179,8 @@ brinvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("brin operator family \"%s\" contains invalid ORDER BY specification for operator %s", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains invalid ORDER BY specification for operator %s", + opfamilyname, "brin", format_operator(oprform->amopopr)))); result = false; } @@ -192,8 +192,8 @@ brinvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("brin operator family \"%s\" contains operator %s with wrong signature", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains operator %s with wrong signature", + opfamilyname, "brin", format_operator(oprform->amopopr)))); result = false; } @@ -230,8 +230,8 @@ brinvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("brin operator family \"%s\" is missing operator(s) for types %s and %s", - opfamilyname, + errmsg("operator family \"%s\" of access method %s is missing operator(s) for types %s and %s", + opfamilyname, "brin", format_type_be(thisgroup->lefttype), format_type_be(thisgroup->righttype)))); result = false; @@ -240,8 +240,8 @@ brinvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("brin operator family \"%s\" is missing support function(s) for types %s and %s", - opfamilyname, + errmsg("operator family \"%s\" of access method %s is missing support function(s) for types %s and %s", + opfamilyname, "brin", format_type_be(thisgroup->lefttype), format_type_be(thisgroup->righttype)))); result = false; @@ -253,8 +253,8 @@ brinvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("brin operator class \"%s\" is missing operator(s)", - opclassname))); + errmsg("operator class \"%s\" of access method %s is missing operator(s)", + opclassname, "brin"))); result = false; } for (i = 1; i <= BRIN_MANDATORY_NPROCS; i++) @@ -264,8 +264,8 @@ brinvalidate(Oid opclassoid) continue; /* got it */ ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("brin operator class \"%s\" is missing support function %d", - opclassname, i))); + errmsg("operator class \"%s\" of access method %s is missing support function %d", + opclassname, "brin", i))); result = false; } diff --git a/src/backend/access/common/tupconvert.c b/src/backend/access/common/tupconvert.c index 4787d4ca98..b2546f9bbc 100644 --- a/src/backend/access/common/tupconvert.c +++ b/src/backend/access/common/tupconvert.c @@ -206,55 +206,12 @@ convert_tuples_by_name(TupleDesc indesc, { TupleConversionMap *map; AttrNumber *attrMap; - int n; + int n = outdesc->natts; int i; bool same; /* Verify compatibility and prepare attribute-number map */ - n = outdesc->natts; - attrMap = (AttrNumber *) palloc0(n * sizeof(AttrNumber)); - for (i = 0; i < n; i++) - { - Form_pg_attribute att = outdesc->attrs[i]; - char *attname; - Oid atttypid; - int32 atttypmod; - int j; - - if (att->attisdropped) - continue; /* attrMap[i] is already 0 */ - attname = NameStr(att->attname); - atttypid = att->atttypid; - atttypmod = att->atttypmod; - for (j = 0; j < indesc->natts; j++) - { - att = indesc->attrs[j]; - if (att->attisdropped) - continue; - if (strcmp(attname, NameStr(att->attname)) == 0) - { - /* Found it, check type */ - if (atttypid != att->atttypid || atttypmod != att->atttypmod) - ereport(ERROR, - (errcode(ERRCODE_DATATYPE_MISMATCH), - errmsg_internal("%s", _(msg)), - errdetail("Attribute \"%s\" of type %s does not match corresponding attribute of type %s.", - attname, - format_type_be(outdesc->tdtypeid), - format_type_be(indesc->tdtypeid)))); - attrMap[i] = (AttrNumber) (j + 1); - break; - } - } - if (attrMap[i] == 0) - ereport(ERROR, - (errcode(ERRCODE_DATATYPE_MISMATCH), - errmsg_internal("%s", _(msg)), - errdetail("Attribute \"%s\" of type %s does not exist in type %s.", - attname, - format_type_be(outdesc->tdtypeid), - format_type_be(indesc->tdtypeid)))); - } + attrMap = convert_tuples_by_name_map(indesc, outdesc, msg); /* * Check to see if the map is one-to-one and the tuple types are the same. @@ -312,6 +269,69 @@ convert_tuples_by_name(TupleDesc indesc, return map; } +/* + * Return a palloc'd bare attribute map for tuple conversion, matching input + * and output columns by name. (Dropped columns are ignored in both input and + * output.) This is normally a subroutine for convert_tuples_by_name, but can + * be used standalone. + */ +AttrNumber * +convert_tuples_by_name_map(TupleDesc indesc, + TupleDesc outdesc, + const char *msg) +{ + AttrNumber *attrMap; + int n; + int i; + + n = outdesc->natts; + attrMap = (AttrNumber *) palloc0(n * sizeof(AttrNumber)); + for (i = 0; i < n; i++) + { + Form_pg_attribute att = outdesc->attrs[i]; + char *attname; + Oid atttypid; + int32 atttypmod; + int j; + + if (att->attisdropped) + continue; /* attrMap[i] is already 0 */ + attname = NameStr(att->attname); + atttypid = att->atttypid; + atttypmod = att->atttypmod; + for (j = 0; j < indesc->natts; j++) + { + att = indesc->attrs[j]; + if (att->attisdropped) + continue; + if (strcmp(attname, NameStr(att->attname)) == 0) + { + /* Found it, check type */ + if (atttypid != att->atttypid || atttypmod != att->atttypmod) + ereport(ERROR, + (errcode(ERRCODE_DATATYPE_MISMATCH), + errmsg_internal("%s", _(msg)), + errdetail("Attribute \"%s\" of type %s does not match corresponding attribute of type %s.", + attname, + format_type_be(outdesc->tdtypeid), + format_type_be(indesc->tdtypeid)))); + attrMap[i] = (AttrNumber) (j + 1); + break; + } + } + if (attrMap[i] == 0) + ereport(ERROR, + (errcode(ERRCODE_DATATYPE_MISMATCH), + errmsg_internal("%s", _(msg)), + errdetail("Attribute \"%s\" of type %s does not exist in type %s.", + attname, + format_type_be(outdesc->tdtypeid), + format_type_be(indesc->tdtypeid)))); + } + + return attrMap; +} + /* * Perform conversion of a tuple according to the map. */ diff --git a/src/backend/access/gin/ginvalidate.c b/src/backend/access/gin/ginvalidate.c index 032508387d..3451809ac2 100644 --- a/src/backend/access/gin/ginvalidate.c +++ b/src/backend/access/gin/ginvalidate.c @@ -89,8 +89,8 @@ ginvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("gin operator family \"%s\" contains support procedure %s with cross-type registration", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains support procedure %s with different left and right input types", + opfamilyname, "gin", format_procedure(procform->amproc)))); result = false; } @@ -145,8 +145,8 @@ ginvalidate(Oid opclassoid) default: ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("gin operator family \"%s\" contains function %s with invalid support number %d", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains function %s with invalid support number %d", + opfamilyname, "gin", format_procedure(procform->amproc), procform->amprocnum))); result = false; @@ -157,8 +157,8 @@ ginvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("gin operator family \"%s\" contains function %s with wrong signature for support number %d", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains function %s with wrong signature for support number %d", + opfamilyname, "gin", format_procedure(procform->amproc), procform->amprocnum))); result = false; @@ -176,8 +176,8 @@ ginvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("gin operator family \"%s\" contains operator %s with invalid strategy number %d", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains operator %s with invalid strategy number %d", + opfamilyname, "gin", format_operator(oprform->amopopr), oprform->amopstrategy))); result = false; @@ -189,8 +189,8 @@ ginvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("gin operator family \"%s\" contains invalid ORDER BY specification for operator %s", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains invalid ORDER BY specification for operator %s", + opfamilyname, "gin", format_operator(oprform->amopopr)))); result = false; } @@ -202,8 +202,8 @@ ginvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("gin operator family \"%s\" contains operator %s with wrong signature", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains operator %s with wrong signature", + opfamilyname, "gin", format_operator(oprform->amopopr)))); result = false; } @@ -243,8 +243,8 @@ ginvalidate(Oid opclassoid) continue; /* don't need both, see check below loop */ ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("gin operator class \"%s\" is missing support function %d", - opclassname, i))); + errmsg("operator class \"%s\" of access method %s is missing support function %d", + opclassname, "gin", i))); result = false; } if (!opclassgroup || @@ -253,8 +253,8 @@ ginvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("gin operator class \"%s\" is missing support function %d or %d", - opclassname, + errmsg("operator class \"%s\" of access method %s is missing support function %d or %d", + opclassname, "gin", GIN_CONSISTENT_PROC, GIN_TRICONSISTENT_PROC))); result = false; } diff --git a/src/backend/access/gist/README b/src/backend/access/gist/README index dd4c9fa70a..02228662b8 100644 --- a/src/backend/access/gist/README +++ b/src/backend/access/gist/README @@ -28,7 +28,7 @@ The current implementation of GiST supports: The support for concurrency implemented in PostgreSQL was developed based on the paper "Access Methods for Next-Generation Database Systems" by -Marcel Kornaker: +Marcel Kornacker: http://www.sai.msu.su/~megera/postgres/gist/papers/concurrency/access-methods-for-next-generation.pdf.gz diff --git a/src/backend/access/gist/gistget.c b/src/backend/access/gist/gistget.c index 5ba7d0a793..c1b05d66d2 100644 --- a/src/backend/access/gist/gistget.c +++ b/src/backend/access/gist/gistget.c @@ -375,6 +375,7 @@ gistScanPage(IndexScanDesc scan, GISTSearchItem *pageItem, double *myDistances, } so->nPageData = so->curPageData = 0; + scan->xs_itup = NULL; /* might point into pageDataCxt */ if (so->pageDataCxt) MemoryContextReset(so->pageDataCxt); @@ -641,6 +642,7 @@ gistgettuple(IndexScanDesc scan, ScanDirection dir) so->firstCall = false; so->curPageData = so->nPageData = 0; + scan->xs_itup = NULL; if (so->pageDataCxt) MemoryContextReset(so->pageDataCxt); @@ -765,6 +767,7 @@ gistgetbitmap(IndexScanDesc scan, TIDBitmap *tbm) /* Begin the scan by processing the root page */ so->curPageData = so->nPageData = 0; + scan->xs_itup = NULL; if (so->pageDataCxt) MemoryContextReset(so->pageDataCxt); diff --git a/src/backend/access/gist/gistscan.c b/src/backend/access/gist/gistscan.c index 2526a3965c..12c74b982c 100644 --- a/src/backend/access/gist/gistscan.c +++ b/src/backend/access/gist/gistscan.c @@ -312,6 +312,9 @@ gistrescan(IndexScanDesc scan, ScanKey key, int nkeys, if (!first_time) pfree(fn_extras); } + + /* any previous xs_itup will have been pfree'd in context resets above */ + scan->xs_itup = NULL; } void diff --git a/src/backend/access/gist/gistvalidate.c b/src/backend/access/gist/gistvalidate.c index ffd7fd631b..a8b49cd4ba 100644 --- a/src/backend/access/gist/gistvalidate.c +++ b/src/backend/access/gist/gistvalidate.c @@ -89,8 +89,8 @@ gistvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("gist operator family \"%s\" contains support procedure %s with cross-type registration", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains support procedure %s with different left and right input types", + opfamilyname, "gist", format_procedure(procform->amproc)))); result = false; } @@ -142,8 +142,8 @@ gistvalidate(Oid opclassoid) default: ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("gist operator family \"%s\" contains function %s with invalid support number %d", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains function %s with invalid support number %d", + opfamilyname, "gist", format_procedure(procform->amproc), procform->amprocnum))); result = false; @@ -154,8 +154,8 @@ gistvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("gist operator family \"%s\" contains function %s with wrong signature for support number %d", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains function %s with wrong signature for support number %d", + opfamilyname, "gist", format_procedure(procform->amproc), procform->amprocnum))); result = false; @@ -174,8 +174,8 @@ gistvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("gist operator family \"%s\" contains operator %s with invalid strategy number %d", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains operator %s with invalid strategy number %d", + opfamilyname, "gist", format_operator(oprform->amopopr), oprform->amopstrategy))); result = false; @@ -192,8 +192,8 @@ gistvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("gist operator family \"%s\" contains unsupported ORDER BY specification for operator %s", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains unsupported ORDER BY specification for operator %s", + opfamilyname, "gist", format_operator(oprform->amopopr)))); result = false; } @@ -203,8 +203,8 @@ gistvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("gist operator family \"%s\" contains incorrect ORDER BY opfamily specification for operator %s", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains incorrect ORDER BY opfamily specification for operator %s", + opfamilyname, "gist", format_operator(oprform->amopopr)))); result = false; } @@ -222,8 +222,8 @@ gistvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("gist operator family \"%s\" contains operator %s with wrong signature", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains operator %s with wrong signature", + opfamilyname, "gist", format_operator(oprform->amopopr)))); result = false; } @@ -261,8 +261,8 @@ gistvalidate(Oid opclassoid) continue; /* optional methods */ ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("gist operator class \"%s\" is missing support function %d", - opclassname, i))); + errmsg("operator class \"%s\" of access method %s is missing support function %d", + opclassname, "gist", i))); result = false; } diff --git a/src/backend/access/hash/hashfunc.c b/src/backend/access/hash/hashfunc.c index 614f4ff2f5..89c2712b4c 100644 --- a/src/backend/access/hash/hashfunc.c +++ b/src/backend/access/hash/hashfunc.c @@ -142,11 +142,8 @@ Datum hashname(PG_FUNCTION_ARGS) { char *key = NameStr(*PG_GETARG_NAME(0)); - int keylen = strlen(key); - Assert(keylen < NAMEDATALEN); /* else it's not truncated correctly */ - - return hash_any((unsigned char *) key, keylen); + return hash_any((unsigned char *) key, strlen(key)); } Datum diff --git a/src/backend/access/hash/hashinsert.c b/src/backend/access/hash/hashinsert.c index acd2e64763..4144060cec 100644 --- a/src/backend/access/hash/hashinsert.c +++ b/src/backend/access/hash/hashinsert.c @@ -34,6 +34,7 @@ _hash_doinsert(Relation rel, IndexTuple itup) BlockNumber blkno; BlockNumber oldblkno = InvalidBlockNumber; bool retry = false; + Page metapage; Page page; HashPageOpaque pageopaque; Size itemsz; @@ -53,7 +54,8 @@ _hash_doinsert(Relation rel, IndexTuple itup) /* Read the metapage */ metabuf = _hash_getbuf(rel, HASH_METAPAGE, HASH_READ, LH_META_PAGE); - metap = HashPageGetMeta(BufferGetPage(metabuf)); + metapage = BufferGetPage(metabuf); + metap = HashPageGetMeta(metapage); /* * Check whether the item can fit on a hash page at all. (Eventually, we @@ -62,11 +64,11 @@ _hash_doinsert(Relation rel, IndexTuple itup) * * XXX this is useless code if we are only storing hash keys. */ - if (itemsz > HashMaxItemSize((Page) metap)) + if (itemsz > HashMaxItemSize(metapage)) ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), errmsg("index row size %zu exceeds hash maximum %zu", - itemsz, HashMaxItemSize((Page) metap)), + itemsz, HashMaxItemSize(metapage)), errhint("Values larger than a buffer page cannot be indexed."))); /* diff --git a/src/backend/access/hash/hashvalidate.c b/src/backend/access/hash/hashvalidate.c index d8c5ed4d98..e05284befd 100644 --- a/src/backend/access/hash/hashvalidate.c +++ b/src/backend/access/hash/hashvalidate.c @@ -95,8 +95,8 @@ hashvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("hash operator family \"%s\" contains support procedure %s with cross-type registration", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains support procedure %s with different left and right input types", + opfamilyname, "hash", format_procedure(procform->amproc)))); result = false; } @@ -110,8 +110,8 @@ hashvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("hash operator family \"%s\" contains function %s with wrong signature for support number %d", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains function %s with wrong signature for support number %d", + opfamilyname, "hash", format_procedure(procform->amproc), procform->amprocnum))); result = false; @@ -127,8 +127,8 @@ hashvalidate(Oid opclassoid) default: ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("hash operator family \"%s\" contains function %s with invalid support number %d", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains function %s with invalid support number %d", + opfamilyname, "hash", format_procedure(procform->amproc), procform->amprocnum))); result = false; @@ -148,8 +148,8 @@ hashvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("hash operator family \"%s\" contains operator %s with invalid strategy number %d", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains operator %s with invalid strategy number %d", + opfamilyname, "hash", format_operator(oprform->amopopr), oprform->amopstrategy))); result = false; @@ -161,8 +161,8 @@ hashvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("hash operator family \"%s\" contains invalid ORDER BY specification for operator %s", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains invalid ORDER BY specification for operator %s", + opfamilyname, "hash", format_operator(oprform->amopopr)))); result = false; } @@ -174,8 +174,8 @@ hashvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("hash operator family \"%s\" contains operator %s with wrong signature", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains operator %s with wrong signature", + opfamilyname, "hash", format_operator(oprform->amopopr)))); result = false; } @@ -186,8 +186,8 @@ hashvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("hash operator family \"%s\" lacks support function for operator %s", - opfamilyname, + errmsg("operator family \"%s\" of access method %s lacks support function for operator %s", + opfamilyname, "hash", format_operator(oprform->amopopr)))); result = false; } @@ -214,8 +214,8 @@ hashvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("hash operator family \"%s\" is missing operator(s) for types %s and %s", - opfamilyname, + errmsg("operator family \"%s\" of access method %s is missing operator(s) for types %s and %s", + opfamilyname, "hash", format_type_be(thisgroup->lefttype), format_type_be(thisgroup->righttype)))); result = false; @@ -228,8 +228,8 @@ hashvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("hash operator class \"%s\" is missing operator(s)", - opclassname))); + errmsg("operator class \"%s\" of access method %s is missing operator(s)", + opclassname, "hash"))); result = false; } @@ -244,8 +244,8 @@ hashvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("hash operator family \"%s\" is missing cross-type operator(s)", - opfamilyname))); + errmsg("operator family \"%s\" of access method %s is missing cross-type operator(s)", + opfamilyname, "hash"))); result = false; } diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index b019bc1a0d..4327be8610 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -3930,7 +3930,7 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup, /* * To prevent concurrent sessions from updating the tuple, we have to - * temporarily mark it locked, while we release the lock. + * temporarily mark it locked, while we release the page-level lock. * * To satisfy the rule that any xid potentially appearing in a buffer * written out to disk, we unfortunately have to WAL log this @@ -3942,8 +3942,9 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup, /* * Compute xmax / infomask appropriate for locking the tuple. This has - * to be done separately from the lock, because the potentially - * created multixact would otherwise be wrong. + * to be done separately from the combo that's going to be used for + * updating, because the potentially created multixact would otherwise + * be wrong. */ compute_new_xmax_infomask(HeapTupleHeaderGetRawXmax(oldtup.t_data), oldtup.t_data->t_infomask, @@ -5550,8 +5551,10 @@ compute_new_xmax_infomask(TransactionId xmax, uint16 old_infomask, * with the given xid, does the current transaction need to wait, fail, or can * it continue if it wanted to acquire a lock of the given mode? "needwait" * is set to true if waiting is necessary; if it can continue, then - * HeapTupleMayBeUpdated is returned. In case of a conflict, a different - * HeapTupleSatisfiesUpdate return code is returned. + * HeapTupleMayBeUpdated is returned. If the lock is already held by the + * current transaction, return HeapTupleSelfUpdated. In case of a conflict + * with another transaction, a different HeapTupleSatisfiesUpdate return code + * is returned. * * The held status is said to be hypothetical because it might correspond to a * lock held by a single Xid, i.e. not a real MultiXactId; we express it this @@ -5574,8 +5577,9 @@ test_lockmode_for_conflict(MultiXactStatus status, TransactionId xid, if (TransactionIdIsCurrentTransactionId(xid)) { /* - * Updated by our own transaction? Just return failure. This - * shouldn't normally happen. + * The tuple has already been locked by our own transaction. This is + * very rare but can happen if multiple transactions are trying to + * lock an ancient version of the same tuple. */ return HeapTupleSelfUpdated; } @@ -5774,6 +5778,22 @@ heap_lock_updated_tuple_rec(Relation rel, ItemPointer tid, TransactionId xid, members[i].xid, mode, &needwait); + /* + * If the tuple was already locked by ourselves in a + * previous iteration of this (say heap_lock_tuple was + * forced to restart the locking loop because of a change + * in xmax), then we hold the lock already on this tuple + * version and we don't need to do anything; and this is + * not an error condition either. We just need to skip + * this tuple and continue locking the next version in the + * update chain. + */ + if (result == HeapTupleSelfUpdated) + { + pfree(members); + goto next; + } + if (needwait) { LockBuffer(buf, BUFFER_LOCK_UNLOCK); @@ -5834,6 +5854,19 @@ heap_lock_updated_tuple_rec(Relation rel, ItemPointer tid, TransactionId xid, result = test_lockmode_for_conflict(status, rawxmax, mode, &needwait); + + /* + * If the tuple was already locked by ourselves in a previous + * iteration of this (say heap_lock_tuple was forced to + * restart the locking loop because of a change in xmax), then + * we hold the lock already on this tuple version and we don't + * need to do anything; and this is not an error condition + * either. We just need to skip this tuple and continue + * locking the next version in the update chain. + */ + if (result == HeapTupleSelfUpdated) + goto next; + if (needwait) { LockBuffer(buf, BUFFER_LOCK_UNLOCK); @@ -5894,6 +5927,7 @@ heap_lock_updated_tuple_rec(Relation rel, ItemPointer tid, TransactionId xid, END_CRIT_SECTION(); +next: /* if we find the end of update chain, we're done. */ if (mytup.t_data->t_infomask & HEAP_XMAX_INVALID || ItemPointerEquals(&mytup.t_self, &mytup.t_data->t_ctid) || @@ -6653,7 +6687,7 @@ heap_prepare_freeze_tuple(HeapTupleHeader tuple, TransactionId cutoff_xid, frz->t_infomask &= ~HEAP_XMAX_BITS; frz->xmax = newxmax; if (flags & FRM_MARK_COMMITTED) - frz->t_infomask &= HEAP_XMAX_COMMITTED; + frz->t_infomask |= HEAP_XMAX_COMMITTED; changed = true; totally_frozen = false; } diff --git a/src/backend/access/heap/rewriteheap.c b/src/backend/access/heap/rewriteheap.c index 17584ba3ed..674b1bd2e6 100644 --- a/src/backend/access/heap/rewriteheap.c +++ b/src/backend/access/heap/rewriteheap.c @@ -209,7 +209,7 @@ typedef struct RewriteMappingFile } RewriteMappingFile; /* - * A single In-Memeory logical rewrite mapping, hanging of + * A single In-Memory logical rewrite mapping, hanging off * RewriteMappingFile->mappings. */ typedef struct RewriteMappingDataEntry @@ -1194,7 +1194,7 @@ CheckPointLogicalRewriteHeap(void) XLogRecPtr redo; DIR *mappings_dir; struct dirent *mapping_de; - char path[MAXPGPATH]; + char path[MAXPGPATH + 20]; /* * We start of with a minimum of the last redo pointer. No new decoding @@ -1225,7 +1225,7 @@ CheckPointLogicalRewriteHeap(void) strcmp(mapping_de->d_name, "..") == 0) continue; - snprintf(path, MAXPGPATH, "pg_logical/mappings/%s", mapping_de->d_name); + snprintf(path, sizeof(path), "pg_logical/mappings/%s", mapping_de->d_name); if (lstat(path, &statbuf) == 0 && !S_ISREG(statbuf.st_mode)) continue; diff --git a/src/backend/access/heap/visibilitymap.c b/src/backend/access/heap/visibilitymap.c index 3ad4a9f587..f020737f80 100644 --- a/src/backend/access/heap/visibilitymap.c +++ b/src/backend/access/heap/visibilitymap.c @@ -508,6 +508,9 @@ visibilitymap_truncate(Relation rel, BlockNumber nheapblocks) LockBuffer(mapBuffer, BUFFER_LOCK_EXCLUSIVE); + /* NO EREPORT(ERROR) from here till changes are logged */ + START_CRIT_SECTION(); + /* Clear out the unwanted bytes. */ MemSet(&map[truncByte + 1], 0, MAPSIZE - (truncByte + 1)); @@ -523,7 +526,20 @@ visibilitymap_truncate(Relation rel, BlockNumber nheapblocks) */ map[truncByte] &= (1 << truncOffset) - 1; + /* + * Truncation of a relation is WAL-logged at a higher-level, and we + * will be called at WAL replay. But if checksums are enabled, we need + * to still write a WAL record to protect against a torn page, if the + * page is flushed to disk before the truncation WAL record. We cannot + * use MarkBufferDirtyHint here, because that will not dirty the page + * during recovery. + */ MarkBufferDirty(mapBuffer); + if (!InRecovery && RelationNeedsWAL(rel) && XLogHintBitIsNeeded()) + log_newpage_buffer(mapBuffer, false); + + END_CRIT_SECTION(); + UnlockReleaseBuffer(mapBuffer); } else diff --git a/src/backend/access/nbtree/README b/src/backend/access/nbtree/README index 067d15c803..a3f11da8d5 100644 --- a/src/backend/access/nbtree/README +++ b/src/backend/access/nbtree/README @@ -521,11 +521,12 @@ because it allows running applications to continue while the standby changes state into a normally running server. The interlocking required to avoid returning incorrect results from -MVCC scans is not required on standby nodes. That is because +non-MVCC scans is not required on standby nodes. That is because HeapTupleSatisfiesUpdate(), HeapTupleSatisfiesSelf(), HeapTupleSatisfiesDirty() and HeapTupleSatisfiesVacuum() are only ever used during write transactions, which cannot exist on the standby. -This leaves HeapTupleSatisfiesMVCC() and HeapTupleSatisfiesToast(). +MVCC scans are already protected by definition, so HeapTupleSatisfiesMVCC() +is not a problem. That leaves concern only for HeapTupleSatisfiesToast(). HeapTupleSatisfiesToast() doesn't use MVCC semantics, though that's because it doesn't need to - if the main heap row is visible then the toast rows will also be visible. So as long as we follow a toast diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c index 128744c5b7..a264b92c13 100644 --- a/src/backend/access/nbtree/nbtree.c +++ b/src/backend/access/nbtree/nbtree.c @@ -242,13 +242,18 @@ btbuildempty(Relation index) metapage = (Page) palloc(BLCKSZ); _bt_initmetapage(metapage, P_NONE, 0); - /* Write the page. If archiving/streaming, XLOG it. */ + /* + * Write the page and log it. It might seem that an immediate sync + * would be sufficient to guarantee that the file exists on disk, but + * recovery itself might remove it while replaying, for example, an + * XLOG_DBASE_CREATE or XLOG_TBLSPC_CREATE record. Therefore, we + * need this even when wal_level=minimal. + */ PageSetChecksumInplace(metapage, BTREE_METAPAGE); smgrwrite(index->rd_smgr, INIT_FORKNUM, BTREE_METAPAGE, (char *) metapage, true); - if (XLogIsNeeded()) - log_newpage(&index->rd_smgr->smgr_rnode.node, INIT_FORKNUM, - BTREE_METAPAGE, metapage, false); + log_newpage(&index->rd_smgr->smgr_rnode.node, INIT_FORKNUM, + BTREE_METAPAGE, metapage, false); /* * An immediate sync is required even if we xlog'd the page, because the diff --git a/src/backend/access/nbtree/nbtvalidate.c b/src/backend/access/nbtree/nbtvalidate.c index 7d0bdabc1d..5c7192fbbd 100644 --- a/src/backend/access/nbtree/nbtvalidate.c +++ b/src/backend/access/nbtree/nbtvalidate.c @@ -97,8 +97,8 @@ btvalidate(Oid opclassoid) default: ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("btree operator family \"%s\" contains function %s with invalid support number %d", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains function %s with invalid support number %d", + opfamilyname, "btree", format_procedure(procform->amproc), procform->amprocnum))); result = false; @@ -109,8 +109,8 @@ btvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("btree operator family \"%s\" contains function %s with wrong signature for support number %d", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains function %s with wrong signature for support number %d", + opfamilyname, "btree", format_procedure(procform->amproc), procform->amprocnum))); result = false; @@ -129,8 +129,8 @@ btvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("btree operator family \"%s\" contains operator %s with invalid strategy number %d", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains operator %s with invalid strategy number %d", + opfamilyname, "btree", format_operator(oprform->amopopr), oprform->amopstrategy))); result = false; @@ -142,8 +142,8 @@ btvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("btree operator family \"%s\" contains invalid ORDER BY specification for operator %s", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains invalid ORDER BY specification for operator %s", + opfamilyname, "btree", format_operator(oprform->amopopr)))); result = false; } @@ -155,8 +155,8 @@ btvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("btree operator family \"%s\" contains operator %s with wrong signature", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains operator %s with wrong signature", + opfamilyname, "btree", format_operator(oprform->amopopr)))); result = false; } @@ -197,8 +197,8 @@ btvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("btree operator family \"%s\" is missing operator(s) for types %s and %s", - opfamilyname, + errmsg("operator family \"%s\" of access method %s is missing operator(s) for types %s and %s", + opfamilyname, "btree", format_type_be(thisgroup->lefttype), format_type_be(thisgroup->righttype)))); result = false; @@ -207,8 +207,8 @@ btvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("btree operator family \"%s\" is missing support function for types %s and %s", - opfamilyname, + errmsg("operator family \"%s\" of access method %s is missing support function for types %s and %s", + opfamilyname, "btree", format_type_be(thisgroup->lefttype), format_type_be(thisgroup->righttype)))); result = false; @@ -221,8 +221,8 @@ btvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("btree operator class \"%s\" is missing operator(s)", - opclassname))); + errmsg("operator class \"%s\" of access method %s is missing operator(s)", + opclassname, "btree"))); result = false; } @@ -238,8 +238,8 @@ btvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("btree operator family \"%s\" is missing cross-type operator(s)", - opfamilyname))); + errmsg("operator family \"%s\" of access method %s is missing cross-type operator(s)", + opfamilyname, "btree"))); result = false; } diff --git a/src/backend/access/rmgrdesc/gindesc.c b/src/backend/access/rmgrdesc/gindesc.c index db832a5f78..b058d493f7 100644 --- a/src/backend/access/rmgrdesc/gindesc.c +++ b/src/backend/access/rmgrdesc/gindesc.c @@ -87,13 +87,13 @@ gin_desc(StringInfo buf, XLogReaderState *record) case XLOG_GIN_INSERT: { ginxlogInsert *xlrec = (ginxlogInsert *) rec; - char *payload = rec + sizeof(ginxlogInsert); appendStringInfo(buf, "isdata: %c isleaf: %c", (xlrec->flags & GIN_INSERT_ISDATA) ? 'T' : 'F', (xlrec->flags & GIN_INSERT_ISLEAF) ? 'T' : 'F'); if (!(xlrec->flags & GIN_INSERT_ISLEAF)) { + char *payload = rec + sizeof(ginxlogInsert); BlockNumber leftChildBlkno; BlockNumber rightChildBlkno; @@ -104,27 +104,27 @@ gin_desc(StringInfo buf, XLogReaderState *record) appendStringInfo(buf, " children: %u/%u", leftChildBlkno, rightChildBlkno); } - if (!(xlrec->flags & GIN_INSERT_ISDATA)) - appendStringInfo(buf, " isdelete: %c", - (((ginxlogInsertEntry *) payload)->isDelete) ? 'T' : 'F'); - else if (xlrec->flags & GIN_INSERT_ISLEAF) - { - ginxlogRecompressDataLeaf *insertData = - (ginxlogRecompressDataLeaf *) payload; - - if (XLogRecHasBlockImage(record, 0)) - appendStringInfoString(buf, " (full page image)"); - else - desc_recompress_leaf(buf, insertData); - } + if (XLogRecHasBlockImage(record, 0)) + appendStringInfoString(buf, " (full page image)"); else { - ginxlogInsertDataInternal *insertData = (ginxlogInsertDataInternal *) payload; + char *payload = XLogRecGetBlockData(record, 0, NULL); - appendStringInfo(buf, " pitem: %u-%u/%u", - PostingItemGetBlockNumber(&insertData->newitem), - ItemPointerGetBlockNumber(&insertData->newitem.key), - ItemPointerGetOffsetNumber(&insertData->newitem.key)); + if (!(xlrec->flags & GIN_INSERT_ISDATA)) + appendStringInfo(buf, " isdelete: %c", + (((ginxlogInsertEntry *) payload)->isDelete) ? 'T' : 'F'); + else if (xlrec->flags & GIN_INSERT_ISLEAF) + desc_recompress_leaf(buf, (ginxlogRecompressDataLeaf *) payload); + else + { + ginxlogInsertDataInternal *insertData = + (ginxlogInsertDataInternal *) payload; + + appendStringInfo(buf, " pitem: %u-%u/%u", + PostingItemGetBlockNumber(&insertData->newitem), + ItemPointerGetBlockNumber(&insertData->newitem.key), + ItemPointerGetOffsetNumber(&insertData->newitem.key)); + } } } break; @@ -144,12 +144,15 @@ gin_desc(StringInfo buf, XLogReaderState *record) break; case XLOG_GIN_VACUUM_DATA_LEAF_PAGE: { - ginxlogVacuumDataLeafPage *xlrec = (ginxlogVacuumDataLeafPage *) rec; - if (XLogRecHasBlockImage(record, 0)) appendStringInfoString(buf, " (full page image)"); else + { + ginxlogVacuumDataLeafPage *xlrec = + (ginxlogVacuumDataLeafPage *) XLogRecGetBlockData(record, 0, NULL); + desc_recompress_leaf(buf, &xlrec->data); + } } break; case XLOG_GIN_DELETE_PAGE: diff --git a/src/backend/access/rmgrdesc/xactdesc.c b/src/backend/access/rmgrdesc/xactdesc.c index 679f457242..f87dfa0854 100644 --- a/src/backend/access/rmgrdesc/xactdesc.c +++ b/src/backend/access/rmgrdesc/xactdesc.c @@ -185,6 +185,19 @@ ParseAbortRecord(uint8 info, xl_xact_abort *xlrec, xl_xact_parsed_abort *parsed) strcpy(parsed->twophase_gid, data); data += gidlen; } + + if (parsed->xinfo & XACT_XINFO_HAS_ORIGIN) + { + xl_xact_origin xl_origin; + + /* we're only guaranteed 4 byte alignment, so copy onto stack */ + memcpy(&xl_origin, data, sizeof(xl_origin)); + + parsed->origin_lsn = xl_origin.origin_lsn; + parsed->origin_timestamp = xl_origin.origin_timestamp; + + data += sizeof(xl_xact_origin); + } } static void @@ -239,7 +252,7 @@ xact_desc_commit(StringInfo buf, uint8 info, xl_xact_commit *xlrec, RepOriginId } static void -xact_desc_abort(StringInfo buf, uint8 info, xl_xact_abort *xlrec) +xact_desc_abort(StringInfo buf, uint8 info, xl_xact_abort *xlrec, RepOriginId origin_id) { xl_xact_parsed_abort parsed; int i; @@ -269,6 +282,14 @@ xact_desc_abort(StringInfo buf, uint8 info, xl_xact_abort *xlrec) for (i = 0; i < parsed.nsubxacts; i++) appendStringInfo(buf, " %u", parsed.subxacts[i]); } + if (parsed.xinfo & XACT_XINFO_HAS_ORIGIN) + { + appendStringInfo(buf, "; origin: node %u, lsn %X/%X, at %s", + origin_id, + (uint32) (parsed.origin_lsn >> 32), + (uint32) parsed.origin_lsn, + timestamptz_to_str(parsed.origin_timestamp)); + } } static void @@ -299,7 +320,8 @@ xact_desc(StringInfo buf, XLogReaderState *record) { xl_xact_abort *xlrec = (xl_xact_abort *) rec; - xact_desc_abort(buf, XLogRecGetInfo(record), xlrec); + xact_desc_abort(buf, XLogRecGetInfo(record), xlrec, + XLogRecGetOrigin(record)); } else if (info == XLOG_XACT_ASSIGNMENT) { diff --git a/src/backend/access/spgist/spginsert.c b/src/backend/access/spgist/spginsert.c index 01c8d213f5..3eaa649eff 100644 --- a/src/backend/access/spgist/spginsert.c +++ b/src/backend/access/spgist/spginsert.c @@ -161,13 +161,18 @@ spgbuildempty(Relation index) page = (Page) palloc(BLCKSZ); SpGistInitMetapage(page); - /* Write the page. If archiving/streaming, XLOG it. */ + /* + * Write the page and log it unconditionally. This is important + * particularly for indexes created on tablespaces and databases + * whose creation happened after the last redo pointer as recovery + * removes any of their existing content when the corresponding + * create records are replayed. + */ PageSetChecksumInplace(page, SPGIST_METAPAGE_BLKNO); smgrwrite(index->rd_smgr, INIT_FORKNUM, SPGIST_METAPAGE_BLKNO, (char *) page, true); - if (XLogIsNeeded()) - log_newpage(&index->rd_smgr->smgr_rnode.node, INIT_FORKNUM, - SPGIST_METAPAGE_BLKNO, page, false); + log_newpage(&index->rd_smgr->smgr_rnode.node, INIT_FORKNUM, + SPGIST_METAPAGE_BLKNO, page, false); /* Likewise for the root page. */ SpGistInitPage(page, SPGIST_LEAF); @@ -175,9 +180,8 @@ spgbuildempty(Relation index) PageSetChecksumInplace(page, SPGIST_ROOT_BLKNO); smgrwrite(index->rd_smgr, INIT_FORKNUM, SPGIST_ROOT_BLKNO, (char *) page, true); - if (XLogIsNeeded()) - log_newpage(&index->rd_smgr->smgr_rnode.node, INIT_FORKNUM, - SPGIST_ROOT_BLKNO, page, true); + log_newpage(&index->rd_smgr->smgr_rnode.node, INIT_FORKNUM, + SPGIST_ROOT_BLKNO, page, true); /* Likewise for the null-tuples root page. */ SpGistInitPage(page, SPGIST_LEAF | SPGIST_NULLS); @@ -185,9 +189,8 @@ spgbuildempty(Relation index) PageSetChecksumInplace(page, SPGIST_NULL_BLKNO); smgrwrite(index->rd_smgr, INIT_FORKNUM, SPGIST_NULL_BLKNO, (char *) page, true); - if (XLogIsNeeded()) - log_newpage(&index->rd_smgr->smgr_rnode.node, INIT_FORKNUM, - SPGIST_NULL_BLKNO, page, true); + log_newpage(&index->rd_smgr->smgr_rnode.node, INIT_FORKNUM, + SPGIST_NULL_BLKNO, page, true); /* * An immediate sync is required even if we xlog'd the pages, because the diff --git a/src/backend/access/spgist/spgvalidate.c b/src/backend/access/spgist/spgvalidate.c index 6297111a7c..9cee2f27c9 100644 --- a/src/backend/access/spgist/spgvalidate.c +++ b/src/backend/access/spgist/spgvalidate.c @@ -89,8 +89,8 @@ spgvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("spgist operator family \"%s\" contains support procedure %s with cross-type registration", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains support procedure %s with different left and right input types", + opfamilyname, "spgist", format_procedure(procform->amproc)))); result = false; } @@ -112,8 +112,8 @@ spgvalidate(Oid opclassoid) default: ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("spgist operator family \"%s\" contains function %s with invalid support number %d", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains function %s with invalid support number %d", + opfamilyname, "spgist", format_procedure(procform->amproc), procform->amprocnum))); result = false; @@ -124,8 +124,8 @@ spgvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("spgist operator family \"%s\" contains function %s with wrong signature for support number %d", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains function %s with wrong signature for support number %d", + opfamilyname, "spgist", format_procedure(procform->amproc), procform->amprocnum))); result = false; @@ -143,8 +143,8 @@ spgvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("spgist operator family \"%s\" contains operator %s with invalid strategy number %d", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains operator %s with invalid strategy number %d", + opfamilyname, "spgist", format_operator(oprform->amopopr), oprform->amopstrategy))); result = false; @@ -156,8 +156,8 @@ spgvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("spgist operator family \"%s\" contains invalid ORDER BY specification for operator %s", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains invalid ORDER BY specification for operator %s", + opfamilyname, "spgist", format_operator(oprform->amopopr)))); result = false; } @@ -169,8 +169,8 @@ spgvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("spgist operator family \"%s\" contains operator %s with wrong signature", - opfamilyname, + errmsg("operator family \"%s\" of access method %s contains operator %s with wrong signature", + opfamilyname, "spgist", format_operator(oprform->amopopr)))); result = false; } @@ -197,8 +197,8 @@ spgvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("spgist operator family \"%s\" is missing operator(s) for types %s and %s", - opfamilyname, + errmsg("operator family \"%s\" of access method %s is missing operator(s) for types %s and %s", + opfamilyname, "spgist", format_type_be(thisgroup->lefttype), format_type_be(thisgroup->righttype)))); result = false; @@ -217,8 +217,8 @@ spgvalidate(Oid opclassoid) continue; /* got it */ ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("spgist operator family \"%s\" is missing support function %d for type %s", - opfamilyname, i, + errmsg("operator family \"%s\" of access method %s is missing support function %d for type %s", + opfamilyname, "spgist", i, format_type_be(thisgroup->lefttype)))); result = false; } @@ -230,8 +230,8 @@ spgvalidate(Oid opclassoid) { ereport(INFO, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("spgist operator class \"%s\" is missing operator(s)", - opclassname))); + errmsg("operator class \"%s\" of access method %s is missing operator(s)", + opclassname, "spgist"))); result = false; } diff --git a/src/backend/access/transam/README.parallel b/src/backend/access/transam/README.parallel index db9ac3d504..61d54dc550 100644 --- a/src/backend/access/transam/README.parallel +++ b/src/backend/access/transam/README.parallel @@ -198,7 +198,7 @@ pattern looks like this: EnterParallelMode(); /* prohibit unsafe state changes */ - pcxt = CreateParallelContext(entrypoint, nworkers); + pcxt = CreateParallelContextForExternalFunction("library_name", "function_name", nworkers); /* Allow space for application-specific data here. */ shm_toc_estimate_chunk(&pcxt->estimator, size); diff --git a/src/backend/access/transam/commit_ts.c b/src/backend/access/transam/commit_ts.c index e330105217..11424c2257 100644 --- a/src/backend/access/transam/commit_ts.c +++ b/src/backend/access/transam/commit_ts.c @@ -288,11 +288,18 @@ TransactionIdGetCommitTsData(TransactionId xid, TimestampTz *ts, TransactionId oldestCommitTsXid; TransactionId newestCommitTsXid; - /* error if the given Xid doesn't normally commit */ - if (!TransactionIdIsNormal(xid)) + if (!TransactionIdIsValid(xid)) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("cannot retrieve commit timestamp for transaction %u", xid))); + else if (!TransactionIdIsNormal(xid)) + { + /* frozen and bootstrap xids are always committed far in the past */ + *ts = 0; + if (nodeid) + *nodeid = 0; + return false; + } LWLockAcquire(CommitTsLock, LW_SHARED); @@ -607,7 +614,7 @@ CommitTsParameterChange(bool newvalue, bool oldvalue) /* * Activate this module whenever necessary. - * This must happen during postmaster or standalong-backend startup, + * This must happen during postmaster or standalone-backend startup, * or during WAL replay anytime the track_commit_timestamp setting is * changed in the master. * @@ -843,6 +850,8 @@ SetCommitTsLimit(TransactionId oldestXact, TransactionId newestXact) else { Assert(ShmemVariableCache->newestCommitTsXid == InvalidTransactionId); + ShmemVariableCache->oldestCommitTsXid = oldestXact; + ShmemVariableCache->newestCommitTsXid = newestXact; } LWLockRelease(CommitTsLock); } diff --git a/src/backend/access/transam/parallel.c b/src/backend/access/transam/parallel.c index cde0ed300f..867ccf855d 100644 --- a/src/backend/access/transam/parallel.c +++ b/src/backend/access/transam/parallel.c @@ -19,6 +19,7 @@ #include "access/xlog.h" #include "catalog/namespace.h" #include "commands/async.h" +#include "executor/execParallel.h" #include "libpq/libpq.h" #include "libpq/pqformat.h" #include "libpq/pqmq.h" @@ -60,7 +61,7 @@ #define PARALLEL_KEY_TRANSACTION_SNAPSHOT UINT64CONST(0xFFFFFFFFFFFF0006) #define PARALLEL_KEY_ACTIVE_SNAPSHOT UINT64CONST(0xFFFFFFFFFFFF0007) #define PARALLEL_KEY_TRANSACTION_STATE UINT64CONST(0xFFFFFFFFFFFF0008) -#define PARALLEL_KEY_EXTENSION_TRAMPOLINE UINT64CONST(0xFFFFFFFFFFFF0009) +#define PARALLEL_KEY_ENTRYPOINT UINT64CONST(0xFFFFFFFFFFFF0009) /* Fixed-size parallel state. */ typedef struct FixedParallelState @@ -76,7 +77,7 @@ typedef struct FixedParallelState pid_t parallel_master_pid; BackendId parallel_master_backend_id; - /* Entrypoint for parallel workers. */ + /* Entrypoint for parallel workers (deprecated)! */ parallel_worker_main_type entrypoint; /* Mutex protects remaining fields. */ @@ -106,17 +107,36 @@ static FixedParallelState *MyFixedParallelState; /* List of active parallel contexts. */ static dlist_head pcxt_list = DLIST_STATIC_INIT(pcxt_list); +/* + * List of internal parallel worker entry points. We need this for + * reasons explained in LookupParallelWorkerFunction(), below. + */ +static const struct +{ + const char *fn_name; + parallel_worker_main_type fn_addr; +} InternalParallelWorkers[] = + +{ + { + "ParallelQueryMain", ParallelQueryMain + } +}; + /* Private functions. */ static void HandleParallelMessage(ParallelContext *pcxt, int i, StringInfo msg); -static void ParallelExtensionTrampoline(dsm_segment *seg, shm_toc *toc); -static void ParallelWorkerMain(Datum main_arg); static void WaitForParallelWorkersToExit(ParallelContext *pcxt); +static parallel_worker_main_type LookupParallelWorkerFunction(char *libraryname, char *funcname); /* * Establish a new parallel context. This should be done after entering * parallel mode, and (unless there is an error) the context should be * destroyed before exiting the current subtransaction. + * + * NB: specifying the entrypoint as a function address is unportable. + * This will go away in Postgres 10, in favor of the API provided by + * CreateParallelContextForExternalFunction; in the meantime use that. */ ParallelContext * CreateParallelContext(parallel_worker_main_type entrypoint, int nworkers) @@ -164,9 +184,9 @@ CreateParallelContext(parallel_worker_main_type entrypoint, int nworkers) } /* - * Establish a new parallel context that calls a function provided by an - * extension. This works around the fact that the library might get mapped - * at a different address in each backend. + * Establish a new parallel context that calls a function specified by name. + * Unlike CreateParallelContext, this is robust against possible differences + * in address space layout between different processes. */ ParallelContext * CreateParallelContextForExternalFunction(char *library_name, @@ -180,7 +200,7 @@ CreateParallelContextForExternalFunction(char *library_name, oldcontext = MemoryContextSwitchTo(TopTransactionContext); /* Create the context. */ - pcxt = CreateParallelContext(ParallelExtensionTrampoline, nworkers); + pcxt = CreateParallelContext(NULL, nworkers); pcxt->library_name = pstrdup(library_name); pcxt->function_name = pstrdup(function_name); @@ -249,10 +269,9 @@ InitializeParallelDSM(ParallelContext *pcxt) pcxt->nworkers)); shm_toc_estimate_keys(&pcxt->estimator, 1); - /* Estimate how much we'll need for extension entrypoint info. */ + /* Estimate how much we'll need for entrypoint info. */ if (pcxt->library_name != NULL) { - Assert(pcxt->entrypoint == ParallelExtensionTrampoline); Assert(pcxt->function_name != NULL); shm_toc_estimate_chunk(&pcxt->estimator, strlen(pcxt->library_name) + strlen(pcxt->function_name) + 2); @@ -368,7 +387,7 @@ InitializeParallelDSM(ParallelContext *pcxt) } shm_toc_insert(pcxt->toc, PARALLEL_KEY_ERROR_QUEUE, error_queue_space); - /* Serialize extension entrypoint information. */ + /* Serialize entrypoint information. */ if (pcxt->library_name != NULL) { Size lnamelen = strlen(pcxt->library_name); @@ -378,7 +397,7 @@ InitializeParallelDSM(ParallelContext *pcxt) + strlen(pcxt->function_name) + 2); strcpy(extensionstate, pcxt->library_name); strcpy(extensionstate + lnamelen + 1, pcxt->function_name); - shm_toc_insert(pcxt->toc, PARALLEL_KEY_EXTENSION_TRAMPOLINE, + shm_toc_insert(pcxt->toc, PARALLEL_KEY_ENTRYPOINT, extensionstate); } } @@ -456,7 +475,9 @@ LaunchParallelWorkers(ParallelContext *pcxt) BGWORKER_SHMEM_ACCESS | BGWORKER_BACKEND_DATABASE_CONNECTION; worker.bgw_start_time = BgWorkerStart_ConsistentState; worker.bgw_restart_time = BGW_NEVER_RESTART; - worker.bgw_main = ParallelWorkerMain; + worker.bgw_main = NULL; + sprintf(worker.bgw_library_name, "postgres"); + sprintf(worker.bgw_function_name, "ParallelWorkerMain"); worker.bgw_main_arg = UInt32GetDatum(dsm_segment_handle(pcxt->seg)); worker.bgw_notify_pid = MyProcPid; memset(&worker.bgw_extra, 0, BGW_EXTRALEN); @@ -668,6 +689,10 @@ DestroyParallelContext(ParallelContext *pcxt) } /* Free memory. */ + if (pcxt->library_name) + pfree(pcxt->library_name); + if (pcxt->function_name) + pfree(pcxt->function_name); pfree(pcxt); } @@ -928,7 +953,7 @@ AtEOXact_Parallel(bool isCommit) /* * Main entrypoint for parallel workers. */ -static void +void ParallelWorkerMain(Datum main_arg) { dsm_segment *seg; @@ -938,6 +963,8 @@ ParallelWorkerMain(Datum main_arg) shm_mq *mq; shm_mq_handle *mqh; char *libraryspace; + char *entrypointstate; + parallel_worker_main_type entrypt; char *gucspace; char *combocidspace; char *tsnapspace; @@ -1037,6 +1064,25 @@ ParallelWorkerMain(Datum main_arg) Assert(libraryspace != NULL); RestoreLibraryState(libraryspace); + /* + * Identify the entry point to be called. In theory this could result in + * loading an additional library, though most likely the entry point is in + * the core backend or in a library we just loaded. + */ + entrypointstate = shm_toc_lookup(toc, PARALLEL_KEY_ENTRYPOINT); + if (entrypointstate != NULL) + { + char *library_name; + char *function_name; + + library_name = entrypointstate; + function_name = entrypointstate + strlen(library_name) + 1; + + entrypt = LookupParallelWorkerFunction(library_name, function_name); + } + else + entrypt = fps->entrypoint; + /* Restore database connection. */ BackgroundWorkerInitializeConnectionByOid(fps->database_id, fps->authenticated_user_id); @@ -1100,10 +1146,11 @@ ParallelWorkerMain(Datum main_arg) /* * Time to do the real work: invoke the caller-supplied code. * - * If you get a crash at this line, see the comments for - * ParallelExtensionTrampoline. + * If you get a crash at this line, try using + * CreateParallelContextForExternalFunction instead of + * CreateParallelContext. */ - fps->entrypoint(seg, toc); + entrypt(seg, toc); /* Must exit parallel mode to pop active snapshot. */ ExitParallelMode(); @@ -1118,33 +1165,6 @@ ParallelWorkerMain(Datum main_arg) pq_putmessage('X', NULL, 0); } -/* - * It's unsafe for the entrypoint invoked by ParallelWorkerMain to be a - * function living in a dynamically loaded module, because the module might - * not be loaded in every process, or might be loaded but not at the same - * address. To work around that problem, CreateParallelContextForExtension() - * arranges to call this function rather than calling the extension-provided - * function directly; and this function then looks up the real entrypoint and - * calls it. - */ -static void -ParallelExtensionTrampoline(dsm_segment *seg, shm_toc *toc) -{ - char *extensionstate; - char *library_name; - char *function_name; - parallel_worker_main_type entrypt; - - extensionstate = shm_toc_lookup(toc, PARALLEL_KEY_EXTENSION_TRAMPOLINE); - Assert(extensionstate != NULL); - library_name = extensionstate; - function_name = extensionstate + strlen(library_name) + 1; - - entrypt = (parallel_worker_main_type) - load_external_function(library_name, function_name, true, NULL); - entrypt(seg, toc); -} - /* * Update shared memory with the ending location of the last WAL record we * wrote, if it's greater than the value already stored there. @@ -1160,3 +1180,47 @@ ParallelWorkerReportLastRecEnd(XLogRecPtr last_xlog_end) fps->last_xlog_end = last_xlog_end; SpinLockRelease(&fps->mutex); } + +/* + * Look up (and possibly load) a parallel worker entry point function. + * + * For functions contained in the core code, we use library name "postgres" + * and consult the InternalParallelWorkers array. External functions are + * looked up, and loaded if necessary, using load_external_function(). + * + * The point of this is to pass function names as strings across process + * boundaries. We can't pass actual function addresses because of the + * possibility that the function has been loaded at a different address + * in a different process. This is obviously a hazard for functions in + * loadable libraries, but it can happen even for functions in the core code + * on platforms using EXEC_BACKEND (e.g., Windows). + * + * At some point it might be worthwhile to get rid of InternalParallelWorkers[] + * in favor of applying load_external_function() for core functions too; + * but that raises portability issues that are not worth addressing now. + */ +static parallel_worker_main_type +LookupParallelWorkerFunction(char *libraryname, char *funcname) +{ + /* + * If the function is to be loaded from postgres itself, search the + * InternalParallelWorkers array. + */ + if (strcmp(libraryname, "postgres") == 0) + { + int i; + + for (i = 0; i < lengthof(InternalParallelWorkers); i++) + { + if (strcmp(InternalParallelWorkers[i].fn_name, funcname) == 0) + return InternalParallelWorkers[i].fn_addr; + } + + /* We can only reach this by programming error. */ + elog(ERROR, "internal function \"%s\" not found", funcname); + } + + /* Otherwise load from external library. */ + return (parallel_worker_main_type) + load_external_function(libraryname, funcname, true, NULL); +} diff --git a/src/backend/access/transam/slru.c b/src/backend/access/transam/slru.c index bbae5847f2..ee111ca539 100644 --- a/src/backend/access/transam/slru.c +++ b/src/backend/access/transam/slru.c @@ -204,15 +204,16 @@ SimpleLruInit(SlruCtl ctl, const char *name, int nslots, int nlsns, shared->page_lru_count = (int *) (ptr + offset); offset += MAXALIGN(nslots * sizeof(int)); + /* Initialize LWLocks */ + shared->buffer_locks = (LWLockPadded *) (ptr + offset); + offset += MAXALIGN(nslots * sizeof(LWLockPadded)); + if (nlsns > 0) { shared->group_lsn = (XLogRecPtr *) (ptr + offset); offset += MAXALIGN(nslots * nlsns * sizeof(XLogRecPtr)); } - /* Initialize LWLocks */ - shared->buffer_locks = (LWLockPadded *) ShmemAlloc(sizeof(LWLockPadded) * nslots); - Assert(strlen(name) + 1 < SLRU_MAX_NAME_LENGTH); strlcpy(shared->lwlock_tranche_name, name, SLRU_MAX_NAME_LENGTH); shared->lwlock_tranche_id = tranche_id; @@ -232,6 +233,9 @@ SimpleLruInit(SlruCtl ctl, const char *name, int nslots, int nlsns, shared->page_lru_count[slotno] = 0; ptr += BLCKSZ; } + + /* Should fit to estimated shmem size */ + Assert(ptr - (char *) shared <= SimpleLruShmemSize(nslots, nlsns)); } else Assert(found); diff --git a/src/backend/access/transam/subtrans.c b/src/backend/access/transam/subtrans.c index 908fe2d533..baf48b8c93 100644 --- a/src/backend/access/transam/subtrans.c +++ b/src/backend/access/transam/subtrans.c @@ -112,7 +112,7 @@ SubTransGetParent(TransactionId xid) TransactionId parent; /* Can't ask about stuff that might not be around anymore */ - Assert(TransactionIdFollowsOrEquals(xid, TransactionXmin)); + //Assert(TransactionIdFollowsOrEquals(xid, TransactionXmin)); /* Bootstrap and frozen XIDs have no parent */ if (!TransactionIdIsNormal(xid)) @@ -150,7 +150,10 @@ SubTransGetTopmostTransaction(TransactionId xid) previousXid = xid; /* Can't ask about stuff that might not be around anymore */ - Assert(TransactionIdFollowsOrEquals(xid, TransactionXmin)); + if (!TransactionIdFollowsOrEquals(xid, TransactionXmin)) + { + return xid; + } while (TransactionIdIsValid(parentXid)) { diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/transam/twophase.c index a5cb32cd81..f7de5f2ce5 100644 --- a/src/backend/access/transam/twophase.c +++ b/src/backend/access/transam/twophase.c @@ -475,6 +475,7 @@ MarkAsPreparing(TransactionId xid, const char *gid, { if (strcmp(gxact->gid, gid) == 0) { + LWLockRelease(TwoPhaseStateLock); ereport(ERROR, (errcode(ERRCODE_DUPLICATE_OBJECT), errmsg("transaction identifier \"%s\" is already in use", @@ -484,11 +485,14 @@ MarkAsPreparing(TransactionId xid, const char *gid, /* Get a free gxact from the freelist */ if (TwoPhaseState->freeGXacts == NULL) + { + LWLockRelease(TwoPhaseStateLock); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("maximum number of prepared transactions reached"), errhint("Increase max_prepared_transactions (currently %d).", max_prepared_xacts))); + } gxact = TwoPhaseState->freeGXacts; TwoPhaseState->freeGXacts = gxact->next; @@ -521,6 +525,7 @@ MarkAsPreparing(TransactionId xid, const char *gid, proc->backendId = InvalidBackendId; proc->databaseId = databaseid; proc->roleId = owner; + proc->isBackgroundWorker = false; proc->lwWaiting = false; proc->lwWaitMode = 0; proc->waitLock = NULL; @@ -789,6 +794,28 @@ GetPreparedTransactionList(GlobalTransaction *gxacts) return num; } +bool GetPreparedTransactionState(char const* gid, char* state) +{ + int i; + GlobalTransaction gxact; + bool result = false; + + LWLockAcquire(TwoPhaseStateLock, LW_SHARED); + i = string_hash(gid, 0) % max_prepared_xacts; + for (gxact = TwoPhaseState->hashTable[i]; gxact != NULL; gxact = gxact->next) + { + if (strcmp(gxact->gid, gid) == 0) + { + strcpy(state, gxact->state_3pc); + result = true; + break; + } + } + LWLockRelease(TwoPhaseStateLock); + return result; +} + + /* * SetPrepareTransactionState * Alter 3PC state of prepared transaction @@ -825,6 +852,9 @@ void SetPreparedTransactionState(char const* gid, char const* state) START_CRIT_SECTION(); MyPgXact->delayChkpt = true; + hdr->xl_origin.origin_lsn = replorigin_session_origin_lsn; + hdr->xl_origin.origin_timestamp = replorigin_session_origin_timestamp; + XLogBeginInsert(); XLogRegisterData(buf, hdr->total_len - sizeof(pg_crc32c)); XLogIncludeOrigin(); @@ -1535,6 +1565,12 @@ FinishPreparedTransaction(const char *gid, bool isCommit) SharedInvalidationMessage *invalmsgs; int i; + + if (isCommit) + { + CallXactCallbacks(XACT_EVENT_PRE_COMMIT_PREPARED); + } + /* * Validate the GID, and lock the GXACT to ensure that two backends do not * try to commit the same GID at once. @@ -2096,7 +2132,7 @@ StandbyRecoverPreparedTransactions(bool overwriteOK) TransactionId subxid = subxids[i]; Assert(TransactionIdFollows(subxid, xid)); - SubTransSetParent(xid, subxid, overwriteOK); + SubTransSetParent(subxid, xid, overwriteOK); } pfree(buf); diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index 2b3cb82663..0950c09f2f 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -2121,9 +2121,6 @@ CommitTransaction(void) */ smgrDoPendingDeletes(true); - /* Check we've released all catcache entries */ - AtEOXact_CatCache(true); - AtCommit_Notify(); AtEOXact_GUC(true, 1); AtEOXact_SPI(true); @@ -2393,9 +2390,6 @@ PrepareTransaction(void) */ PostPrepare_Twophase(); - /* Check we've released all catcache entries */ - AtEOXact_CatCache(true); - /* PREPARE acts the same as COMMIT as far as GUC is concerned */ AtEOXact_GUC(true, 1); AtEOXact_SPI(true); @@ -2597,7 +2591,6 @@ AbortTransaction(void) RESOURCE_RELEASE_AFTER_LOCKS, false, true); smgrDoPendingDeletes(false); - AtEOXact_CatCache(false); AtEOXact_GUC(false, 1); AtEOXact_SPI(false); @@ -2745,14 +2738,14 @@ CommitTransactionCommand(void) TransactionState s = CurrentTransactionState; CallXactCallbacks(XACT_EVENT_COMMIT_COMMAND); - Assert(s->blockState != TBLOCK_DEFAULT); + switch (s->blockState) { /* * These shouldn't happen. TBLOCK_DEFAULT means the previous * StartTransactionCommand didn't set the STARTED state * appropriately, while TBLOCK_PARALLEL_INPROGRESS should be ended - * by EndParallelWorkerTranaction(), not this function. + * by EndParallelWorkerTransaction(), not this function. */ case TBLOCK_DEFAULT: case TBLOCK_PARALLEL_INPROGRESS: @@ -4221,6 +4214,9 @@ AbortOutOfAnyTransaction(void) { TransactionState s = CurrentTransactionState; + /* Ensure we're not running in a doomed memory context */ + AtAbort_Memory(); + /* * Get out of any transaction or nested transaction */ @@ -4262,7 +4258,14 @@ AbortOutOfAnyTransaction(void) break; case TBLOCK_ABORT: case TBLOCK_ABORT_END: - /* AbortTransaction already done, still need Cleanup */ + + /* + * AbortTransaction is already done, still need Cleanup. + * However, if we failed partway through running ROLLBACK, + * there will be an active portal running that command, which + * we need to shut down before doing CleanupTransaction. + */ + AtAbort_Portals(); CleanupTransaction(); s->blockState = TBLOCK_DEFAULT; break; @@ -4285,6 +4288,14 @@ AbortOutOfAnyTransaction(void) case TBLOCK_SUBABORT_END: case TBLOCK_SUBABORT_RESTART: /* As above, but AbortSubTransaction already done */ + if (s->curTransactionOwner) + { + /* As in TBLOCK_ABORT, might have a live portal to zap */ + AtSubAbort_Portals(s->subTransactionId, + s->parent->subTransactionId, + s->curTransactionOwner, + s->parent->curTransactionOwner); + } CleanupSubTransaction(); s = CurrentTransactionState; /* changed by pop */ break; @@ -4293,6 +4304,9 @@ AbortOutOfAnyTransaction(void) /* Should be out of all subxacts now */ Assert(s->parent == NULL); + + /* If we didn't actually have anything to do, revert to TopMemoryContext */ + AtCleanup_Memory(); } /* @@ -5268,6 +5282,7 @@ XactLogAbortRecord(TimestampTz abort_time, xl_xact_relfilenodes xl_relfilenodes; xl_xact_twophase xl_twophase; xl_xact_dbinfo xl_dbinfo; + xl_xact_origin xl_origin; uint8 info; @@ -5312,6 +5327,14 @@ XactLogAbortRecord(TimestampTz abort_time, xl_dbinfo.tsId = MyDatabaseTableSpace; } + /* dump transaction origin information */ + if (replorigin_session_origin != InvalidRepOriginId) + { + xl_xinfo.xinfo |= XACT_XINFO_HAS_ORIGIN; + xl_origin.origin_lsn = replorigin_session_origin_lsn; + xl_origin.origin_timestamp = replorigin_session_origin_timestamp; + } + if (xl_xinfo.xinfo != 0) info |= XLOG_XACT_HAS_INFO; @@ -5349,8 +5372,10 @@ XactLogAbortRecord(TimestampTz abort_time, XLogRegisterData((char *) twophase_gid, xl_twophase.gidlen); } - if (xl_xinfo.xinfo & XACT_XINFO_HAS_DBINFO) - XLogRegisterData((char *) (&xl_dbinfo), sizeof(xl_dbinfo)); + if (xl_xinfo.xinfo & XACT_XINFO_HAS_ORIGIN) + XLogRegisterData((char *) (&xl_origin), sizeof(xl_xact_origin)); + + XLogIncludeOrigin(); return XLogInsert(RM_XACT_ID, info); } @@ -5530,7 +5555,10 @@ xact_redo_commit(xl_xact_parsed_commit *parsed, * because subtransaction commit is never WAL logged. */ static void -xact_redo_abort(xl_xact_parsed_abort *parsed, TransactionId xid) +xact_redo_abort(xl_xact_parsed_abort *parsed, + TransactionId xid, + XLogRecPtr lsn, + RepOriginId origin_id) { int i; TransactionId max_xid; @@ -5593,6 +5621,13 @@ xact_redo_abort(xl_xact_parsed_abort *parsed, TransactionId xid) StandbyReleaseLockTree(xid, parsed->nsubxacts, parsed->subxacts); } + if (parsed->xinfo & XACT_XINFO_HAS_ORIGIN) + { + /* recover apply progress */ + replorigin_advance(origin_id, parsed->origin_lsn, lsn, + false /* backward */ , false /* WAL */ ); + } + /* Make sure files supposed to be dropped are dropped */ for (i = 0; i < parsed->nrels; i++) { @@ -5647,12 +5682,14 @@ xact_redo(XLogReaderState *record) if (info == XLOG_XACT_ABORT) { Assert(!TransactionIdIsValid(parsed.twophase_xid)); - xact_redo_abort(&parsed, XLogRecGetXid(record)); + xact_redo_abort(&parsed, XLogRecGetXid(record), + record->EndRecPtr, XLogRecGetOrigin(record)); } else { Assert(TransactionIdIsValid(parsed.twophase_xid)); - xact_redo_abort(&parsed, parsed.twophase_xid); + xact_redo_abort(&parsed, parsed.twophase_xid, + record->EndRecPtr, XLogRecGetOrigin(record)); RemoveTwoPhaseFile(parsed.twophase_xid, false); } } diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 0b991bb91d..68109e2541 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -459,6 +459,35 @@ typedef union WALInsertLockPadded char pad[PG_CACHE_LINE_SIZE]; } WALInsertLockPadded; +/* + * State of an exclusive backup, necessary to control concurrent activities + * across sessions when working on exclusive backups. + * + * EXCLUSIVE_BACKUP_NONE means that there is no exclusive backup actually + * running, to be more precise pg_start_backup() is not being executed for + * an exclusive backup and there is no exclusive backup in progress. + * EXCLUSIVE_BACKUP_STARTING means that pg_start_backup() is starting an + * exclusive backup. + * EXCLUSIVE_BACKUP_IN_PROGRESS means that pg_start_backup() has finished + * running and an exclusive backup is in progress. pg_stop_backup() is + * needed to finish it. + * EXCLUSIVE_BACKUP_STOPPING means that pg_stop_backup() is stopping an + * exclusive backup. + */ +typedef enum ExclusiveBackupState +{ + EXCLUSIVE_BACKUP_NONE = 0, + EXCLUSIVE_BACKUP_STARTING, + EXCLUSIVE_BACKUP_IN_PROGRESS, + EXCLUSIVE_BACKUP_STOPPING +} ExclusiveBackupState; + +/* + * Session status of running backup, used for sanity checks in SQL-callable + * functions to start and stop backups. + */ +static SessionBackupState sessionBackupState = SESSION_BACKUP_NONE; + /* * Shared state data for WAL insertion. */ @@ -500,13 +529,15 @@ typedef struct XLogCtlInsert bool fullPageWrites; /* - * exclusiveBackup is true if a backup started with pg_start_backup() is - * in progress, and nonExclusiveBackups is a counter indicating the number - * of streaming base backups currently in progress. forcePageWrites is set - * to true when either of these is non-zero. lastBackupStart is the latest - * checkpoint redo location used as a starting point for an online backup. + * exclusiveBackupState indicates the state of an exclusive backup + * (see comments of ExclusiveBackupState for more details). + * nonExclusiveBackups is a counter indicating the number of streaming + * base backups currently in progress. forcePageWrites is set to true + * when either of these is non-zero. lastBackupStart is the latest + * checkpoint redo location used as a starting point for an online + * backup. */ - bool exclusiveBackup; + ExclusiveBackupState exclusiveBackupState; int nonExclusiveBackups; XLogRecPtr lastBackupStart; @@ -612,11 +643,14 @@ typedef struct XLogCtlData /* * During recovery, we keep a copy of the latest checkpoint record here. - * Used by the background writer when it wants to create a restartpoint. + * lastCheckPointRecPtr points to start of checkpoint record and + * lastCheckPointEndPtr points to end+1 of checkpoint record. Used by the + * background writer when it wants to create a restartpoint. * * Protected by info_lck. */ XLogRecPtr lastCheckPointRecPtr; + XLogRecPtr lastCheckPointEndPtr; CheckPoint lastCheckPoint; /* @@ -810,7 +844,7 @@ static bool InstallXLogFileSegment(XLogSegNo *segno, char *tmppath, bool find_free, XLogSegNo max_segno, bool use_lock); static int XLogFileRead(XLogSegNo segno, int emode, TimeLineID tli, - int source, bool notexistOk); + int source, bool notfoundOk); static int XLogFileReadAnyTLI(XLogSegNo segno, int emode, int source); static int XLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr, int reqLen, XLogRecPtr targetRecPtr, char *readBuf, @@ -842,6 +876,7 @@ static void xlog_outrec(StringInfo buf, XLogReaderState *record); #endif static void xlog_outdesc(StringInfo buf, XLogReaderState *record); static void pg_start_backup_callback(int code, Datum arg); +static void pg_stop_backup_callback(int code, Datum arg); static bool read_backup_label(XLogRecPtr *checkPointLoc, bool *backupEndRequired, bool *backupFromStandby); static bool read_tablespace_map(List **tablespaces); @@ -2752,7 +2787,7 @@ XLogFlush(XLogRecPtr record) * This routine is invoked periodically by the background walwriter process. * * Returns TRUE if there was any work to do, even if we skipped flushing due - * to wal_writer_delay/wal_flush_after. + * to wal_writer_delay/wal_writer_flush_after. */ bool XLogBackgroundFlush(void) @@ -3776,7 +3811,7 @@ RemoveXlogFile(const char *segname, XLogRecPtr PriorRedoPtr, XLogRecPtr endptr) /* * Initialize info about where to try to recycle to. */ - XLByteToPrevSeg(endptr, endlogSegNo); + XLByteToSeg(endptr, endlogSegNo); if (PriorRedoPtr == InvalidXLogRecPtr) recycleSegNo = endlogSegNo + 10; else @@ -3906,7 +3941,7 @@ CleanupBackupHistory(void) { DIR *xldir; struct dirent *xlde; - char path[MAXPGPATH]; + char path[MAXPGPATH + sizeof(XLOGDIR)]; xldir = AllocateDir(XLOGDIR); if (xldir == NULL) @@ -3924,7 +3959,7 @@ CleanupBackupHistory(void) ereport(DEBUG2, (errmsg("removing transaction log backup history file \"%s\"", xlde->d_name))); - snprintf(path, MAXPGPATH, XLOGDIR "/%s", xlde->d_name); + snprintf(path, sizeof(path), XLOGDIR "/%s", xlde->d_name); unlink(path); XLogArchiveCleanup(xlde->d_name); } @@ -3937,7 +3972,7 @@ CleanupBackupHistory(void) /* * Attempt to read an XLOG record. * - * If RecPtr is not NULL, try to read a record at that position. Otherwise + * If RecPtr is valid, try to read a record at that position. Otherwise * try to read a record just after the last one previously read. * * If no valid record is available, returns NULL, or fails if emode is PANIC. @@ -4843,7 +4878,7 @@ BootStrapXLOG(void) record->xl_rmid = RM_XLOG_ID; recptr += SizeOfXLogRecord; /* fill the XLogRecordDataHeaderShort struct */ - *(recptr++) = XLR_BLOCK_ID_DATA_SHORT; + *(recptr++) = (char) XLR_BLOCK_ID_DATA_SHORT; *(recptr++) = sizeof(checkPoint); memcpy(recptr, &checkPoint, sizeof(checkPoint)); recptr += sizeof(checkPoint); @@ -7971,6 +8006,17 @@ ShutdownXLOG(int code, Datum arg) ereport(IsPostmasterEnvironment ? LOG : NOTICE, (errmsg("shutting down"))); + /* + * Signal walsenders to move to stopping state. + */ + WalSndInitStopping(); + + /* + * Wait for WAL senders to be in stopping state. This prevents commands + * from writing new WAL. + */ + WalSndWaitStopping(); + if (RecoveryInProgress()) CreateRestartPoint(CHECKPOINT_IS_SHUTDOWN | CHECKPOINT_IMMEDIATE); else @@ -8691,6 +8737,7 @@ RecoveryRestartPoint(const CheckPoint *checkPoint) */ SpinLockAcquire(&XLogCtl->info_lck); XLogCtl->lastCheckPointRecPtr = ReadRecPtr; + XLogCtl->lastCheckPointEndPtr = EndRecPtr; XLogCtl->lastCheckPoint = *checkPoint; SpinLockRelease(&XLogCtl->info_lck); } @@ -8710,6 +8757,7 @@ bool CreateRestartPoint(int flags) { XLogRecPtr lastCheckPointRecPtr; + XLogRecPtr lastCheckPointEndPtr; CheckPoint lastCheckPoint; XLogRecPtr PriorRedoPtr; TimestampTz xtime; @@ -8723,6 +8771,7 @@ CreateRestartPoint(int flags) /* Get a local copy of the last safe checkpoint record. */ SpinLockAcquire(&XLogCtl->info_lck); lastCheckPointRecPtr = XLogCtl->lastCheckPointRecPtr; + lastCheckPointEndPtr = XLogCtl->lastCheckPointEndPtr; lastCheckPoint = XLogCtl->lastCheckPoint; SpinLockRelease(&XLogCtl->info_lck); @@ -8826,6 +8875,27 @@ CreateRestartPoint(int flags) ControlFile->checkPoint = lastCheckPointRecPtr; ControlFile->checkPointCopy = lastCheckPoint; ControlFile->time = (pg_time_t) time(NULL); + + /* + * Ensure minRecoveryPoint is past the checkpoint record. Normally, + * this will have happened already while writing out dirty buffers, + * but not necessarily - e.g. because no buffers were dirtied. We do + * this because a non-exclusive base backup uses minRecoveryPoint to + * determine which WAL files must be included in the backup, and the + * file (or files) containing the checkpoint record must be included, + * at a minimum. Note that for an ordinary restart of recovery there's + * no value in having the minimum recovery point any earlier than this + * anyway, because redo will begin just after the checkpoint record. + */ + if (ControlFile->minRecoveryPoint < lastCheckPointEndPtr) + { + ControlFile->minRecoveryPoint = lastCheckPointEndPtr; + ControlFile->minRecoveryPointTLI = lastCheckPoint.ThisTimeLineID; + + /* update local copy */ + minRecoveryPoint = ControlFile->minRecoveryPoint; + minRecoveryPointTLI = ControlFile->minRecoveryPointTLI; + } if (flags & CHECKPOINT_IS_SHUTDOWN) ControlFile->state = DB_SHUTDOWNED_IN_RECOVERY; UpdateControlFile(); @@ -8959,7 +9029,7 @@ KeepLogSeg(XLogRecPtr recptr, XLogSegNo *logSegNo) /* then check whether slots limit removal further */ if (max_replication_slots > 0 && keep != InvalidXLogRecPtr) { - XLogRecPtr slotSegNo; + XLogSegNo slotSegNo; XLByteToSeg(keep, slotSegNo); @@ -9845,7 +9915,12 @@ do_pg_start_backup(const char *backupidstr, bool fast, TimeLineID *starttli_p, WALInsertLockAcquireExclusive(); if (exclusive) { - if (XLogCtl->Insert.exclusiveBackup) + /* + * At first, mark that we're now starting an exclusive backup, + * to ensure that there are no other sessions currently running + * pg_start_backup() or pg_stop_backup(). + */ + if (XLogCtl->Insert.exclusiveBackupState != EXCLUSIVE_BACKUP_NONE) { WALInsertLockRelease(); ereport(ERROR, @@ -9853,7 +9928,7 @@ do_pg_start_backup(const char *backupidstr, bool fast, TimeLineID *starttli_p, errmsg("a backup is already in progress"), errhint("Run pg_stop_backup() and try again."))); } - XLogCtl->Insert.exclusiveBackup = true; + XLogCtl->Insert.exclusiveBackupState = EXCLUSIVE_BACKUP_STARTING; } else XLogCtl->Insert.nonExclusiveBackups++; @@ -9997,7 +10072,7 @@ do_pg_start_backup(const char *backupidstr, bool fast, TimeLineID *starttli_p, /* Collect information about all tablespaces */ while ((de = ReadDir(tblspcdir, "pg_tblspc")) != NULL) { - char fullpath[MAXPGPATH]; + char fullpath[MAXPGPATH + 10]; char linkpath[MAXPGPATH]; char *relpath = NULL; int rllen; @@ -10108,7 +10183,7 @@ do_pg_start_backup(const char *backupidstr, bool fast, TimeLineID *starttli_p, { /* * Check for existing backup label --- implies a backup is already - * running. (XXX given that we checked exclusiveBackup above, + * running. (XXX given that we checked exclusiveBackupState above, * maybe it would be OK to just unlink any such label file?) */ if (stat(BACKUP_LABEL_FILE, &stat_buf) != 0) @@ -10189,6 +10264,20 @@ do_pg_start_backup(const char *backupidstr, bool fast, TimeLineID *starttli_p, } PG_END_ENSURE_ERROR_CLEANUP(pg_start_backup_callback, (Datum) BoolGetDatum(exclusive)); + /* + * Mark that start phase has correctly finished for an exclusive backup. + * Session-level locks are updated as well to reflect that state. + */ + if (exclusive) + { + WALInsertLockAcquireExclusive(); + XLogCtl->Insert.exclusiveBackupState = EXCLUSIVE_BACKUP_IN_PROGRESS; + WALInsertLockRelease(); + sessionBackupState = SESSION_BACKUP_EXCLUSIVE; + } + else + sessionBackupState = SESSION_BACKUP_NON_EXCLUSIVE; + /* * We're done. As a convenience, return the starting WAL location. */ @@ -10207,8 +10296,8 @@ pg_start_backup_callback(int code, Datum arg) WALInsertLockAcquireExclusive(); if (exclusive) { - Assert(XLogCtl->Insert.exclusiveBackup); - XLogCtl->Insert.exclusiveBackup = false; + Assert(XLogCtl->Insert.exclusiveBackupState == EXCLUSIVE_BACKUP_STARTING); + XLogCtl->Insert.exclusiveBackupState = EXCLUSIVE_BACKUP_NONE; } else { @@ -10216,7 +10305,7 @@ pg_start_backup_callback(int code, Datum arg) XLogCtl->Insert.nonExclusiveBackups--; } - if (!XLogCtl->Insert.exclusiveBackup && + if (XLogCtl->Insert.exclusiveBackupState == EXCLUSIVE_BACKUP_NONE && XLogCtl->Insert.nonExclusiveBackups == 0) { XLogCtl->Insert.forcePageWrites = false; @@ -10224,6 +10313,33 @@ pg_start_backup_callback(int code, Datum arg) WALInsertLockRelease(); } +/* + * Error cleanup callback for pg_stop_backup + */ +static void +pg_stop_backup_callback(int code, Datum arg) +{ + bool exclusive = DatumGetBool(arg); + + /* Update backup status on failure */ + WALInsertLockAcquireExclusive(); + if (exclusive) + { + Assert(XLogCtl->Insert.exclusiveBackupState == EXCLUSIVE_BACKUP_STOPPING); + XLogCtl->Insert.exclusiveBackupState = EXCLUSIVE_BACKUP_IN_PROGRESS; + } + WALInsertLockRelease(); +} + +/* + * Utility routine to fetch the session-level status of a backup running. + */ +SessionBackupState +get_backup_status(void) +{ + return sessionBackupState; +} + /* * do_pg_stop_backup is the workhorse of the user-visible pg_stop_backup() * function. @@ -10286,20 +10402,91 @@ do_pg_stop_backup(char *labelfile, bool waitforarchive, TimeLineID *stoptli_p) errmsg("WAL level not sufficient for making an online backup"), errhint("wal_level must be set to \"replica\" or \"logical\" at server start."))); - /* - * OK to update backup counters and forcePageWrites - */ - WALInsertLockAcquireExclusive(); if (exclusive) { - if (!XLogCtl->Insert.exclusiveBackup) + /* + * At first, mark that we're now stopping an exclusive backup, + * to ensure that there are no other sessions currently running + * pg_start_backup() or pg_stop_backup(). + */ + WALInsertLockAcquireExclusive(); + if (XLogCtl->Insert.exclusiveBackupState != EXCLUSIVE_BACKUP_IN_PROGRESS) { WALInsertLockRelease(); ereport(ERROR, (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), errmsg("exclusive backup not in progress"))); } - XLogCtl->Insert.exclusiveBackup = false; + XLogCtl->Insert.exclusiveBackupState = EXCLUSIVE_BACKUP_STOPPING; + WALInsertLockRelease(); + + /* + * Remove backup_label. In case of failure, the state for an exclusive + * backup is switched back to in-progress. + */ + PG_ENSURE_ERROR_CLEANUP(pg_stop_backup_callback, (Datum) BoolGetDatum(exclusive)); + { + /* + * Read the existing label file into memory. + */ + struct stat statbuf; + int r; + + if (stat(BACKUP_LABEL_FILE, &statbuf)) + { + /* should not happen per the upper checks */ + if (errno != ENOENT) + ereport(ERROR, + (errcode_for_file_access(), + errmsg("could not stat file \"%s\": %m", + BACKUP_LABEL_FILE))); + ereport(ERROR, + (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), + errmsg("a backup is not in progress"))); + } + + lfp = AllocateFile(BACKUP_LABEL_FILE, "r"); + if (!lfp) + { + ereport(ERROR, + (errcode_for_file_access(), + errmsg("could not read file \"%s\": %m", + BACKUP_LABEL_FILE))); + } + labelfile = palloc(statbuf.st_size + 1); + r = fread(labelfile, statbuf.st_size, 1, lfp); + labelfile[statbuf.st_size] = '\0'; + + /* + * Close and remove the backup label file + */ + if (r != 1 || ferror(lfp) || FreeFile(lfp)) + ereport(ERROR, + (errcode_for_file_access(), + errmsg("could not read file \"%s\": %m", + BACKUP_LABEL_FILE))); + if (unlink(BACKUP_LABEL_FILE) != 0) + ereport(ERROR, + (errcode_for_file_access(), + errmsg("could not remove file \"%s\": %m", + BACKUP_LABEL_FILE))); + + /* + * Remove tablespace_map file if present, it is created only if there + * are tablespaces. + */ + unlink(TABLESPACE_MAP); + } + PG_END_ENSURE_ERROR_CLEANUP(pg_stop_backup_callback, (Datum) BoolGetDatum(exclusive)); + } + + /* + * OK to update backup counters and forcePageWrites + */ + WALInsertLockAcquireExclusive(); + if (exclusive) + { + XLogCtl->Insert.exclusiveBackupState = EXCLUSIVE_BACKUP_NONE; } else { @@ -10313,65 +10500,15 @@ do_pg_stop_backup(char *labelfile, bool waitforarchive, TimeLineID *stoptli_p) XLogCtl->Insert.nonExclusiveBackups--; } - if (!XLogCtl->Insert.exclusiveBackup && + if (XLogCtl->Insert.exclusiveBackupState == EXCLUSIVE_BACKUP_NONE && XLogCtl->Insert.nonExclusiveBackups == 0) { XLogCtl->Insert.forcePageWrites = false; } WALInsertLockRelease(); - if (exclusive) - { - /* - * Read the existing label file into memory. - */ - struct stat statbuf; - int r; - - if (stat(BACKUP_LABEL_FILE, &statbuf)) - { - if (errno != ENOENT) - ereport(ERROR, - (errcode_for_file_access(), - errmsg("could not stat file \"%s\": %m", - BACKUP_LABEL_FILE))); - ereport(ERROR, - (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), - errmsg("a backup is not in progress"))); - } - - lfp = AllocateFile(BACKUP_LABEL_FILE, "r"); - if (!lfp) - { - ereport(ERROR, - (errcode_for_file_access(), - errmsg("could not read file \"%s\": %m", - BACKUP_LABEL_FILE))); - } - labelfile = palloc(statbuf.st_size + 1); - r = fread(labelfile, statbuf.st_size, 1, lfp); - labelfile[statbuf.st_size] = '\0'; - - /* - * Close and remove the backup label file - */ - if (r != 1 || ferror(lfp) || FreeFile(lfp)) - ereport(ERROR, - (errcode_for_file_access(), - errmsg("could not read file \"%s\": %m", - BACKUP_LABEL_FILE))); - if (unlink(BACKUP_LABEL_FILE) != 0) - ereport(ERROR, - (errcode_for_file_access(), - errmsg("could not remove file \"%s\": %m", - BACKUP_LABEL_FILE))); - - /* - * Remove tablespace_map file if present, it is created only if there - * are tablespaces. - */ - unlink(TABLESPACE_MAP); - } + /* Clean up session-level lock */ + sessionBackupState = SESSION_BACKUP_NONE; /* * Read and parse the START WAL LOCATION line (this code is pretty crude, @@ -10609,7 +10746,7 @@ do_pg_abort_backup(void) Assert(XLogCtl->Insert.nonExclusiveBackups > 0); XLogCtl->Insert.nonExclusiveBackups--; - if (!XLogCtl->Insert.exclusiveBackup && + if (XLogCtl->Insert.exclusiveBackupState == EXCLUSIVE_BACKUP_NONE && XLogCtl->Insert.nonExclusiveBackups == 0) { XLogCtl->Insert.forcePageWrites = false; diff --git a/src/backend/access/transam/xlogfuncs.c b/src/backend/access/transam/xlogfuncs.c index 33383b4dcc..9e07ad7e8a 100644 --- a/src/backend/access/transam/xlogfuncs.c +++ b/src/backend/access/transam/xlogfuncs.c @@ -43,8 +43,6 @@ */ static StringInfo label_file; static StringInfo tblspc_map_file; -static bool exclusive_backup_running = false; -static bool nonexclusive_backup_running = false; /* * Called when the backend exits with a running non-exclusive base backup, @@ -79,10 +77,11 @@ pg_start_backup(PG_FUNCTION_ARGS) char *backupidstr; XLogRecPtr startpoint; DIR *dir; + SessionBackupState status = get_backup_status(); backupidstr = text_to_cstring(backupid); - if (exclusive_backup_running || nonexclusive_backup_running) + if (status == SESSION_BACKUP_NON_EXCLUSIVE) ereport(ERROR, (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), errmsg("a backup is already in progress in this session"))); @@ -97,7 +96,6 @@ pg_start_backup(PG_FUNCTION_ARGS) { startpoint = do_pg_start_backup(backupidstr, fast, NULL, NULL, dir, NULL, NULL, false, true); - exclusive_backup_running = true; } else { @@ -114,7 +112,6 @@ pg_start_backup(PG_FUNCTION_ARGS) startpoint = do_pg_start_backup(backupidstr, fast, NULL, label_file, dir, NULL, tblspc_map_file, false, true); - nonexclusive_backup_running = true; before_shmem_exit(nonexclusive_base_backup_cleanup, (Datum) 0); } @@ -148,8 +145,9 @@ Datum pg_stop_backup(PG_FUNCTION_ARGS) { XLogRecPtr stoppoint; + SessionBackupState status = get_backup_status(); - if (nonexclusive_backup_running) + if (status == SESSION_BACKUP_NON_EXCLUSIVE) ereport(ERROR, (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), errmsg("non-exclusive backup in progress"), @@ -157,14 +155,12 @@ pg_stop_backup(PG_FUNCTION_ARGS) /* * Exclusive backups were typically started in a different connection, so - * don't try to verify that exclusive_backup_running is set in this one. - * Actual verification that an exclusive backup is in fact running is - * handled inside do_pg_stop_backup. + * don't try to verify that status of backup is set to + * SESSION_BACKUP_EXCLUSIVE in this function. Actual verification that an + * exclusive backup is in fact running is handled inside do_pg_stop_backup. */ stoppoint = do_pg_stop_backup(NULL, true, NULL); - exclusive_backup_running = false; - PG_RETURN_LSN(stoppoint); } @@ -192,6 +188,7 @@ pg_stop_backup_v2(PG_FUNCTION_ARGS) bool exclusive = PG_GETARG_BOOL(0); XLogRecPtr stoppoint; + SessionBackupState status = get_backup_status(); /* check to see if caller supports us returning a tuplestore */ if (rsinfo == NULL || !IsA(rsinfo, ReturnSetInfo)) @@ -223,7 +220,7 @@ pg_stop_backup_v2(PG_FUNCTION_ARGS) if (exclusive) { - if (nonexclusive_backup_running) + if (status == SESSION_BACKUP_NON_EXCLUSIVE) ereport(ERROR, (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), errmsg("non-exclusive backup in progress"), @@ -234,14 +231,13 @@ pg_stop_backup_v2(PG_FUNCTION_ARGS) * return NULL for both backup_label and tablespace_map. */ stoppoint = do_pg_stop_backup(NULL, true, NULL); - exclusive_backup_running = false; nulls[1] = true; nulls[2] = true; } else { - if (!nonexclusive_backup_running) + if (status != SESSION_BACKUP_NON_EXCLUSIVE) ereport(ERROR, (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), errmsg("non-exclusive backup is not in progress"), @@ -252,7 +248,6 @@ pg_stop_backup_v2(PG_FUNCTION_ARGS) * and tablespace map so they can be written to disk by the caller. */ stoppoint = do_pg_stop_backup(label_file->data, true, NULL); - nonexclusive_backup_running = false; cancel_before_shmem_exit(nonexclusive_base_backup_cleanup, (Datum) 0); values[1] = CStringGetTextDatum(label_file->data); diff --git a/src/backend/access/transam/xloginsert.c b/src/backend/access/transam/xloginsert.c index 3cd273b19f..a92534e225 100644 --- a/src/backend/access/transam/xloginsert.c +++ b/src/backend/access/transam/xloginsert.c @@ -703,7 +703,7 @@ XLogRecordAssemble(RmgrId rmid, uint8 info, /* followed by the record's origin, if any */ if (include_origin && replorigin_session_origin != InvalidRepOriginId) { - *(scratch++) = XLR_BLOCK_ID_ORIGIN; + *(scratch++) = (char) XLR_BLOCK_ID_ORIGIN; memcpy(scratch, &replorigin_session_origin, sizeof(replorigin_session_origin)); scratch += sizeof(replorigin_session_origin); } @@ -713,13 +713,13 @@ XLogRecordAssemble(RmgrId rmid, uint8 info, { if (mainrdata_len > 255) { - *(scratch++) = XLR_BLOCK_ID_DATA_LONG; + *(scratch++) = (char) XLR_BLOCK_ID_DATA_LONG; memcpy(scratch, &mainrdata_len, sizeof(uint32)); scratch += sizeof(uint32); } else { - *(scratch++) = XLR_BLOCK_ID_DATA_SHORT; + *(scratch++) = (char) XLR_BLOCK_ID_DATA_SHORT; *(scratch++) = (uint8) mainrdata_len; } rdt_datas_last->next = mainrdata_head; diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c index a585c3ad19..066b7fdb74 100644 --- a/src/backend/catalog/aclchk.c +++ b/src/backend/catalog/aclchk.c @@ -27,7 +27,10 @@ #include "catalog/dependency.h" #include "catalog/indexing.h" #include "catalog/objectaccess.h" +#include "catalog/pg_aggregate.h" +#include "catalog/pg_am.h" #include "catalog/pg_authid.h" +#include "catalog/pg_cast.h" #include "catalog/pg_collation.h" #include "catalog/pg_conversion.h" #include "catalog/pg_database.h" @@ -49,6 +52,9 @@ #include "catalog/pg_type.h" #include "catalog/pg_ts_config.h" #include "catalog/pg_ts_dict.h" +#include "catalog/pg_ts_parser.h" +#include "catalog/pg_ts_template.h" +#include "catalog/pg_transform.h" #include "commands/dbcommands.h" #include "commands/event_trigger.h" #include "commands/extension.h" @@ -130,6 +136,8 @@ static AclMode pg_aclmask(AclObjectKind objkind, Oid table_oid, AttrNumber attnu Oid roleid, AclMode mask, AclMaskHow how); static void recordExtensionInitPriv(Oid objoid, Oid classoid, int objsubid, Acl *new_acl); +static void recordExtensionInitPrivWorker(Oid objoid, Oid classoid, int objsubid, + Acl *new_acl); #ifdef ACLDEBUG @@ -5222,10 +5230,367 @@ get_user_default_acl(GrantObjectType objtype, Oid ownerId, Oid nsp_oid) } /* - * Record initial ACL for an extension object + * Record initial privileges for the top-level object passed in. * - * This will perform a wholesale replacement of the entire ACL for the object - * passed in, therefore be sure to pass in the complete new ACL to use. + * For the object passed in, this will record its ACL (if any) and the ACLs of + * any sub-objects (eg: columns) into pg_init_privs. + * + * Any new kinds of objects which have ACLs associated with them and can be + * added to an extension should be added to the if-else tree below. + */ +void +recordExtObjInitPriv(Oid objoid, Oid classoid) +{ + /* + * pg_class / pg_attribute + * + * If this is a relation then we need to see if there are any sub-objects + * (eg: columns) for it and, if so, be sure to call + * recordExtensionInitPrivWorker() for each one. + */ + if (classoid == RelationRelationId) + { + Form_pg_class pg_class_tuple; + Datum aclDatum; + bool isNull; + HeapTuple tuple; + + tuple = SearchSysCache1(RELOID, ObjectIdGetDatum(objoid)); + if (!HeapTupleIsValid(tuple)) + elog(ERROR, "cache lookup failed for relation %u", objoid); + pg_class_tuple = (Form_pg_class) GETSTRUCT(tuple); + + /* Indexes don't have permissions */ + if (pg_class_tuple->relkind == RELKIND_INDEX) + return; + + /* Composite types don't have permissions either */ + if (pg_class_tuple->relkind == RELKIND_COMPOSITE_TYPE) + return; + + /* + * If this isn't a sequence, index, or composite type then it's + * possibly going to have columns associated with it that might have + * ACLs. + */ + if (pg_class_tuple->relkind != RELKIND_SEQUENCE) + { + AttrNumber curr_att; + AttrNumber nattrs = pg_class_tuple->relnatts; + + for (curr_att = 1; curr_att <= nattrs; curr_att++) + { + HeapTuple attTuple; + Datum attaclDatum; + + attTuple = SearchSysCache2(ATTNUM, + ObjectIdGetDatum(objoid), + Int16GetDatum(curr_att)); + + if (!HeapTupleIsValid(attTuple)) + continue; + + /* ignore dropped columns */ + if (((Form_pg_attribute) GETSTRUCT(attTuple))->attisdropped) + { + ReleaseSysCache(attTuple); + continue; + } + + attaclDatum = SysCacheGetAttr(ATTNUM, attTuple, + Anum_pg_attribute_attacl, + &isNull); + + /* no need to do anything for a NULL ACL */ + if (isNull) + { + ReleaseSysCache(attTuple); + continue; + } + + recordExtensionInitPrivWorker(objoid, classoid, curr_att, + DatumGetAclP(attaclDatum)); + + ReleaseSysCache(attTuple); + } + } + + aclDatum = SysCacheGetAttr(RELOID, tuple, Anum_pg_class_relacl, + &isNull); + + /* Add the record, if any, for the top-level object */ + if (!isNull) + recordExtensionInitPrivWorker(objoid, classoid, 0, + DatumGetAclP(aclDatum)); + + ReleaseSysCache(tuple); + } + /* pg_foreign_data_wrapper */ + else if (classoid == ForeignDataWrapperRelationId) + { + Datum aclDatum; + bool isNull; + HeapTuple tuple; + + tuple = SearchSysCache1(FOREIGNDATAWRAPPEROID, + ObjectIdGetDatum(objoid)); + if (!HeapTupleIsValid(tuple)) + elog(ERROR, "cache lookup failed for foreign data wrapper %u", + objoid); + + aclDatum = SysCacheGetAttr(FOREIGNDATAWRAPPEROID, tuple, + Anum_pg_foreign_data_wrapper_fdwacl, + &isNull); + + /* Add the record, if any, for the top-level object */ + if (!isNull) + recordExtensionInitPrivWorker(objoid, classoid, 0, + DatumGetAclP(aclDatum)); + + ReleaseSysCache(tuple); + } + /* pg_foreign_server */ + else if (classoid == ForeignServerRelationId) + { + Datum aclDatum; + bool isNull; + HeapTuple tuple; + + tuple = SearchSysCache1(FOREIGNSERVEROID, ObjectIdGetDatum(objoid)); + if (!HeapTupleIsValid(tuple)) + elog(ERROR, "cache lookup failed for foreign data wrapper %u", + objoid); + + aclDatum = SysCacheGetAttr(FOREIGNSERVEROID, tuple, + Anum_pg_foreign_server_srvacl, + &isNull); + + /* Add the record, if any, for the top-level object */ + if (!isNull) + recordExtensionInitPrivWorker(objoid, classoid, 0, + DatumGetAclP(aclDatum)); + + ReleaseSysCache(tuple); + } + /* pg_language */ + else if (classoid == LanguageRelationId) + { + Datum aclDatum; + bool isNull; + HeapTuple tuple; + + tuple = SearchSysCache1(LANGOID, ObjectIdGetDatum(objoid)); + if (!HeapTupleIsValid(tuple)) + elog(ERROR, "cache lookup failed for language %u", objoid); + + aclDatum = SysCacheGetAttr(LANGOID, tuple, Anum_pg_language_lanacl, + &isNull); + + /* Add the record, if any, for the top-level object */ + if (!isNull) + recordExtensionInitPrivWorker(objoid, classoid, 0, + DatumGetAclP(aclDatum)); + + ReleaseSysCache(tuple); + } + /* pg_largeobject_metadata */ + else if (classoid == LargeObjectMetadataRelationId) + { + Datum aclDatum; + bool isNull; + HeapTuple tuple; + ScanKeyData entry[1]; + SysScanDesc scan; + Relation relation; + + relation = heap_open(LargeObjectMetadataRelationId, RowExclusiveLock); + + /* There's no syscache for pg_largeobject_metadata */ + ScanKeyInit(&entry[0], + ObjectIdAttributeNumber, + BTEqualStrategyNumber, F_OIDEQ, + ObjectIdGetDatum(objoid)); + + scan = systable_beginscan(relation, + LargeObjectMetadataOidIndexId, true, + NULL, 1, entry); + + tuple = systable_getnext(scan); + if (!HeapTupleIsValid(tuple)) + elog(ERROR, "cache lookup failed for large object %u", objoid); + + aclDatum = heap_getattr(tuple, + Anum_pg_largeobject_metadata_lomacl, + RelationGetDescr(relation), &isNull); + + /* Add the record, if any, for the top-level object */ + if (!isNull) + recordExtensionInitPrivWorker(objoid, classoid, 0, + DatumGetAclP(aclDatum)); + + systable_endscan(scan); + } + /* pg_namespace */ + else if (classoid == NamespaceRelationId) + { + Datum aclDatum; + bool isNull; + HeapTuple tuple; + + tuple = SearchSysCache1(NAMESPACEOID, ObjectIdGetDatum(objoid)); + if (!HeapTupleIsValid(tuple)) + elog(ERROR, "cache lookup failed for function %u", objoid); + + aclDatum = SysCacheGetAttr(NAMESPACEOID, tuple, + Anum_pg_namespace_nspacl, &isNull); + + /* Add the record, if any, for the top-level object */ + if (!isNull) + recordExtensionInitPrivWorker(objoid, classoid, 0, + DatumGetAclP(aclDatum)); + + ReleaseSysCache(tuple); + } + /* pg_proc */ + else if (classoid == ProcedureRelationId) + { + Datum aclDatum; + bool isNull; + HeapTuple tuple; + + tuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(objoid)); + if (!HeapTupleIsValid(tuple)) + elog(ERROR, "cache lookup failed for function %u", objoid); + + aclDatum = SysCacheGetAttr(PROCOID, tuple, Anum_pg_proc_proacl, + &isNull); + + /* Add the record, if any, for the top-level object */ + if (!isNull) + recordExtensionInitPrivWorker(objoid, classoid, 0, + DatumGetAclP(aclDatum)); + + ReleaseSysCache(tuple); + } + /* pg_type */ + else if (classoid == TypeRelationId) + { + Datum aclDatum; + bool isNull; + HeapTuple tuple; + + tuple = SearchSysCache1(TYPEOID, ObjectIdGetDatum(objoid)); + if (!HeapTupleIsValid(tuple)) + elog(ERROR, "cache lookup failed for function %u", objoid); + + aclDatum = SysCacheGetAttr(TYPEOID, tuple, Anum_pg_type_typacl, + &isNull); + + /* Add the record, if any, for the top-level object */ + if (!isNull) + recordExtensionInitPrivWorker(objoid, classoid, 0, + DatumGetAclP(aclDatum)); + + ReleaseSysCache(tuple); + } + else if (classoid == AccessMethodRelationId || + classoid == AggregateRelationId || + classoid == CastRelationId || + classoid == CollationRelationId || + classoid == ConversionRelationId || + classoid == EventTriggerRelationId || + classoid == OperatorRelationId || + classoid == OperatorClassRelationId || + classoid == OperatorFamilyRelationId || + classoid == NamespaceRelationId || + classoid == TSConfigRelationId || + classoid == TSDictionaryRelationId || + classoid == TSParserRelationId || + classoid == TSTemplateRelationId || + classoid == TransformRelationId + ) + { + /* no ACL for these object types, so do nothing. */ + } + + /* + * complain if we are given a class OID for a class that extensions don't + * support or that we don't recognize. + */ + else + { + elog(ERROR, "unrecognized or unsupported class OID: %u", classoid); + } +} + +/* + * For the object passed in, remove its ACL and the ACLs of any object subIds + * from pg_init_privs (via recordExtensionInitPrivWorker()). + */ +void +removeExtObjInitPriv(Oid objoid, Oid classoid) +{ + /* + * If this is a relation then we need to see if there are any sub-objects + * (eg: columns) for it and, if so, be sure to call + * recordExtensionInitPrivWorker() for each one. + */ + if (classoid == RelationRelationId) + { + Form_pg_class pg_class_tuple; + HeapTuple tuple; + + tuple = SearchSysCache1(RELOID, ObjectIdGetDatum(objoid)); + if (!HeapTupleIsValid(tuple)) + elog(ERROR, "cache lookup failed for relation %u", objoid); + pg_class_tuple = (Form_pg_class) GETSTRUCT(tuple); + + /* Indexes don't have permissions */ + if (pg_class_tuple->relkind == RELKIND_INDEX) + return; + + /* Composite types don't have permissions either */ + if (pg_class_tuple->relkind == RELKIND_COMPOSITE_TYPE) + return; + + /* + * If this isn't a sequence, index, or composite type then it's + * possibly going to have columns associated with it that might have + * ACLs. + */ + if (pg_class_tuple->relkind != RELKIND_SEQUENCE) + { + AttrNumber curr_att; + AttrNumber nattrs = pg_class_tuple->relnatts; + + for (curr_att = 1; curr_att <= nattrs; curr_att++) + { + HeapTuple attTuple; + + attTuple = SearchSysCache2(ATTNUM, + ObjectIdGetDatum(objoid), + Int16GetDatum(curr_att)); + + if (!HeapTupleIsValid(attTuple)) + continue; + + /* when removing, remove all entires, even dropped columns */ + + recordExtensionInitPrivWorker(objoid, classoid, curr_att, NULL); + + ReleaseSysCache(attTuple); + } + } + + ReleaseSysCache(tuple); + } + + /* Remove the record, if any, for the top-level object */ + recordExtensionInitPrivWorker(objoid, classoid, 0, NULL); +} + +/* + * Record initial ACL for an extension object * * Can be called at any time, we check if 'creating_extension' is set and, if * not, exit immediately. @@ -5244,12 +5609,6 @@ get_user_default_acl(GrantObjectType objtype, Oid ownerId, Oid nsp_oid) static void recordExtensionInitPriv(Oid objoid, Oid classoid, int objsubid, Acl *new_acl) { - Relation relation; - ScanKeyData key[3]; - SysScanDesc scan; - HeapTuple tuple; - HeapTuple oldtuple; - /* * Generally, we only record the initial privileges when an extension is * being created, but because we don't actually use CREATE EXTENSION @@ -5261,6 +5620,30 @@ recordExtensionInitPriv(Oid objoid, Oid classoid, int objsubid, Acl *new_acl) if (!creating_extension && !binary_upgrade_record_init_privs) return; + recordExtensionInitPrivWorker(objoid, classoid, objsubid, new_acl); +} + +/* + * Record initial ACL for an extension object, worker. + * + * This will perform a wholesale replacement of the entire ACL for the object + * passed in, therefore be sure to pass in the complete new ACL to use. + * + * Generally speaking, do *not* use this function directly but instead use + * recordExtensionInitPriv(), which checks if 'creating_extension' is set. + * This function does *not* check if 'creating_extension' is set as it is also + * used when an object is added to or removed from an extension via ALTER + * EXTENSION ... ADD/DROP. + */ +static void +recordExtensionInitPrivWorker(Oid objoid, Oid classoid, int objsubid, Acl *new_acl) +{ + Relation relation; + ScanKeyData key[3]; + SysScanDesc scan; + HeapTuple tuple; + HeapTuple oldtuple; + relation = heap_open(InitPrivsRelationId, RowExclusiveLock); ScanKeyInit(&key[0], @@ -5313,28 +5696,37 @@ recordExtensionInitPriv(Oid objoid, Oid classoid, int objsubid, Acl *new_acl) } else { - /* No entry found, so add it. */ Datum values[Natts_pg_init_privs]; bool nulls[Natts_pg_init_privs]; - MemSet(nulls, false, sizeof(nulls)); + /* + * Only add a new entry if the new ACL is non-NULL. + * + * If we are passed in a NULL ACL and no entry exists, we can just + * fall through and do nothing. + */ + if (new_acl) + { + /* No entry found, so add it. */ + MemSet(nulls, false, sizeof(nulls)); - values[Anum_pg_init_privs_objoid - 1] = ObjectIdGetDatum(objoid); - values[Anum_pg_init_privs_classoid - 1] = ObjectIdGetDatum(classoid); - values[Anum_pg_init_privs_objsubid - 1] = Int32GetDatum(objsubid); + values[Anum_pg_init_privs_objoid - 1] = ObjectIdGetDatum(objoid); + values[Anum_pg_init_privs_classoid - 1] = ObjectIdGetDatum(classoid); + values[Anum_pg_init_privs_objsubid - 1] = Int32GetDatum(objsubid); - /* This function only handles initial privileges of extensions */ - values[Anum_pg_init_privs_privtype - 1] = - CharGetDatum(INITPRIVS_EXTENSION); + /* This function only handles initial privileges of extensions */ + values[Anum_pg_init_privs_privtype - 1] = + CharGetDatum(INITPRIVS_EXTENSION); - values[Anum_pg_init_privs_privs - 1] = PointerGetDatum(new_acl); + values[Anum_pg_init_privs_privs - 1] = PointerGetDatum(new_acl); - tuple = heap_form_tuple(RelationGetDescr(relation), values, nulls); + tuple = heap_form_tuple(RelationGetDescr(relation), values, nulls); - simple_heap_insert(relation, tuple); + simple_heap_insert(relation, tuple); - /* keep the catalog indexes up to date */ - CatalogUpdateIndexes(relation, tuple); + /* keep the catalog indexes up to date */ + CatalogUpdateIndexes(relation, tuple); + } } systable_endscan(scan); diff --git a/src/backend/catalog/catalog.c b/src/backend/catalog/catalog.c index 1baaa0bb89..809524819d 100644 --- a/src/backend/catalog/catalog.c +++ b/src/backend/catalog/catalog.c @@ -37,6 +37,7 @@ #include "catalog/pg_shdescription.h" #include "catalog/pg_shseclabel.h" #include "catalog/pg_tablespace.h" +#include "catalog/pg_type.h" #include "catalog/toasting.h" #include "miscadmin.h" #include "storage/fd.h" @@ -336,6 +337,14 @@ GetNewOidWithIndex(Relation relation, Oid indexId, AttrNumber oidcolumn) ScanKeyData key; bool collides; + /* + * We should never be asked to generate a new pg_type OID during + * pg_upgrade; doing so would risk collisions with the OIDs it wants to + * assign. Hitting this assert means there's some path where we failed to + * ensure that a type OID is determined by commands in the dump script. + */ + Assert(!IsBinaryUpgrade || RelationGetRelid(relation) != TypeRelationId); + InitDirtySnapshot(SnapshotDirty); /* Generate new OIDs until we find one not in the table */ @@ -387,6 +396,13 @@ GetNewRelFileNode(Oid reltablespace, Relation pg_class, char relpersistence) bool collides; BackendId backend; + /* + * If we ever get here during pg_upgrade, there's something wrong; all + * relfilenode assignments during a binary-upgrade run should be + * determined by commands in the dump script. + */ + Assert(!IsBinaryUpgrade); + switch (relpersistence) { case RELPERSISTENCE_TEMP: diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c index 04d7840290..f71d80fc1a 100644 --- a/src/backend/catalog/dependency.c +++ b/src/backend/catalog/dependency.c @@ -594,29 +594,43 @@ findDependentObjects(const ObjectAddress *object, case DEPENDENCY_AUTO_EXTENSION: /* no problem */ break; - case DEPENDENCY_INTERNAL: + case DEPENDENCY_EXTENSION: + /* + * If the other object is the extension currently being + * created/altered, ignore this dependency and continue with + * the deletion. This allows dropping of an extension's + * objects within the extension's scripts, as well as corner + * cases such as dropping a transient object created within + * such a script. + */ + if (creating_extension && + otherObject.classId == ExtensionRelationId && + otherObject.objectId == CurrentExtensionObject) + break; + + /* Otherwise, treat this like an internal dependency */ + /* FALL THRU */ + + case DEPENDENCY_INTERNAL: + /* * This object is part of the internal implementation of * another object, or is part of the extension that is the * other object. We have three cases: * - * 1. At the outermost recursion level, we normally disallow - * the DROP. (We just ereport here, rather than proceeding, - * since no other dependencies are likely to be interesting.) - * However, there are exceptions. + * 1. At the outermost recursion level, disallow the DROP. (We + * just ereport here, rather than proceeding, since no other + * dependencies are likely to be interesting.) However, if + * the owning object is listed in pendingObjects, just release + * the caller's lock and return; we'll eventually complete the + * DROP when we reach that entry in the pending list. */ if (stack == NULL) { char *otherObjDesc; - /* - * Exception 1a: if the owning object is listed in - * pendingObjects, just release the caller's lock and - * return. We'll eventually complete the DROP when we - * reach that entry in the pending list. - */ if (pendingObjects && object_address_present(&otherObject, pendingObjects)) { @@ -625,21 +639,6 @@ findDependentObjects(const ObjectAddress *object, ReleaseDeletionLock(object); return; } - - /* - * Exception 1b: if the owning object is the extension - * currently being created/altered, it's okay to continue - * with the deletion. This allows dropping of an - * extension's objects within the extension's scripts, as - * well as corner cases such as dropping a transient - * object created within such a script. - */ - if (creating_extension && - otherObject.classId == ExtensionRelationId && - otherObject.objectId == CurrentExtensionObject) - break; - - /* No exception applies, so throw the error */ otherObjDesc = getObjectDescription(&otherObject); ereport(ERROR, (errcode(ERRCODE_DEPENDENT_OBJECTS_STILL_EXIST), diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c index 53e8144052..68e504ced8 100644 --- a/src/backend/catalog/heap.c +++ b/src/backend/catalog/heap.c @@ -1370,18 +1370,19 @@ heap_create_with_catalog(const char *relname, /* * Set up an init fork for an unlogged table so that it can be correctly - * reinitialized on restart. Since we're going to do an immediate sync, we - * only need to xlog this if archiving or streaming is enabled. And the - * immediate sync is required, because otherwise there's no guarantee that - * this will hit the disk before the next checkpoint moves the redo pointer. + * reinitialized on restart. An immediate sync is required even if the + * page has been logged, because the write did not go through + * shared_buffers and therefore a concurrent checkpoint may have moved + * the redo pointer past our xlog record. Recovery may as well remove it + * while replaying, for example, XLOG_DBASE_CREATE or XLOG_TBLSPC_CREATE + * record. Therefore, logging is necessary even if wal_level=minimal. */ void heap_create_init_fork(Relation rel) { RelationOpenSmgr(rel); smgrcreate(rel->rd_smgr, INIT_FORKNUM, false); - if (XLogIsNeeded()) - log_smgrcreate(&rel->rd_smgr->smgr_rnode.node, INIT_FORKNUM); + log_smgrcreate(&rel->rd_smgr->smgr_rnode.node, INIT_FORKNUM); smgrimmedsync(rel->rd_smgr, INIT_FORKNUM); } @@ -2462,6 +2463,17 @@ MergeWithExistingConstraint(Relation rel, char *ccname, Node *expr, errmsg("constraint \"%s\" conflicts with non-inherited constraint on relation \"%s\"", ccname, RelationGetRelationName(rel)))); + /* + * Must not change an existing inherited constraint to "no + * inherit" status. That's because inherited constraints should + * be able to propagate to lower-level children. + */ + if (con->coninhcount > 0 && is_no_inherit) + ereport(ERROR, + (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), + errmsg("constraint \"%s\" conflicts with inherited constraint on relation \"%s\"", + ccname, RelationGetRelationName(rel)))); + /* * If the child constraint is "not valid" then cannot merge with a * valid parent constraint diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index b0b43cf02d..6aae1ab6fd 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -3453,7 +3453,7 @@ reindex_index(Oid indexId, bool skip_constraint_checks, char persistence, ereport(INFO, (errmsg("index \"%s\" was reindexed", get_rel_name(indexId)), - errdetail("%s.", + errdetail_internal("%s", pg_rusage_show(&ru0)))); /* Close rels, but keep locks */ diff --git a/src/backend/catalog/information_schema.sql b/src/backend/catalog/information_schema.sql index 18be08fead..3c46ff1f3f 100644 --- a/src/backend/catalog/information_schema.sql +++ b/src/backend/catalog/information_schema.sql @@ -1853,7 +1853,7 @@ CREATE VIEW table_privileges AS ) AS grantee (oid, rolname) WHERE c.relnamespace = nc.oid - AND c.relkind IN ('r', 'v') + AND c.relkind IN ('r', 'v', 'f') AND c.grantee = grantee.oid AND c.grantor = u_grantor.oid AND c.prtype IN ('INSERT', 'SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'REFERENCES', 'TRIGGER') diff --git a/src/backend/catalog/namespace.c b/src/backend/catalog/namespace.c index df97e9ec8a..7594f3cb08 100644 --- a/src/backend/catalog/namespace.c +++ b/src/backend/catalog/namespace.c @@ -3698,7 +3698,7 @@ InitTempTableNamespace(void) if (IsParallelWorker()) ereport(ERROR, (errcode(ERRCODE_READ_ONLY_SQL_TRANSACTION), - errmsg("cannot create temporary tables in parallel mode"))); + errmsg("cannot create temporary tables during a parallel operation"))); snprintf(namespaceName, sizeof(namespaceName), "pg_temp_%d", MyBackendId); diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c index d531d17cdb..68ba35248c 100644 --- a/src/backend/catalog/objectaddress.c +++ b/src/backend/catalog/objectaddress.c @@ -727,7 +727,7 @@ static void getRelationIdentity(StringInfo buffer, Oid relid, List **objname); * * Note: If the object is not found, we don't give any indication of the * reason. (It might have been a missing schema if the name was qualified, or - * an inexistant type name in case of a cast, function or operator; etc). + * a nonexistent type name in case of a cast, function or operator; etc). * Currently there is only one caller that might be interested in such info, so * we don't spend much effort here. If more callers start to care, it might be * better to add some support for that in this function. @@ -1578,8 +1578,8 @@ get_object_address_opf_member(ObjectType objtype, ObjectAddress address; ListCell *cell; List *copy; - char *typenames[2]; - Oid typeoids[2]; + TypeName *typenames[2] = { NULL, NULL }; + Oid typeoids[2] = { InvalidOid, InvalidOid }; int membernum; int i; @@ -1600,7 +1600,7 @@ get_object_address_opf_member(ObjectType objtype, { ObjectAddress typaddr; - typenames[i] = strVal(lfirst(cell)); + typenames[i] = (TypeName *) lfirst(cell); typaddr = get_object_address_type(OBJECT_TYPE, cell, missing_ok); typeoids[i] = typaddr.objectId; if (++i >= 2) @@ -1627,7 +1627,9 @@ get_object_address_opf_member(ObjectType objtype, ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("operator %d (%s, %s) of %s does not exist", - membernum, typenames[0], typenames[1], + membernum, + TypeNameToString(typenames[0]), + TypeNameToString(typenames[1]), getObjectDescription(&famaddr)))); } else @@ -1656,7 +1658,9 @@ get_object_address_opf_member(ObjectType objtype, ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("function %d (%s, %s) of %s does not exist", - membernum, typenames[0], typenames[1], + membernum, + TypeNameToString(typenames[0]), + TypeNameToString(typenames[1]), getObjectDescription(&famaddr)))); } else @@ -1993,7 +1997,7 @@ pg_get_object_address(PG_FUNCTION_ARGS) } /* - * get_object_name is pretty sensitive to the length its input lists; + * get_object_address is pretty sensitive to the length its input lists; * check that they're what it wants. */ switch (type) diff --git a/src/backend/catalog/pg_aggregate.c b/src/backend/catalog/pg_aggregate.c index 959d3845df..ada6e6171b 100644 --- a/src/backend/catalog/pg_aggregate.c +++ b/src/backend/catalog/pg_aggregate.c @@ -433,7 +433,7 @@ AggregateCreate(const char *aggName, if (aggTransType == INTERNALOID && func_strict(combinefn)) ereport(ERROR, (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION), - errmsg("combine function with \"%s\" transition type must not be declared STRICT", + errmsg("combine function with transition type %s must not be declared STRICT", format_type_be(aggTransType)))); } diff --git a/src/backend/catalog/pg_type.c b/src/backend/catalog/pg_type.c index 4b2d281f2c..525273ef3e 100644 --- a/src/backend/catalog/pg_type.c +++ b/src/backend/catalog/pg_type.c @@ -700,6 +700,7 @@ RenameTypeInternal(Oid typeOid, const char *newTypeName, Oid typeNamespace) HeapTuple tuple; Form_pg_type typ; Oid arrayOid; + Oid oldTypeOid; pg_type_desc = heap_open(TypeRelationId, RowExclusiveLock); @@ -713,13 +714,28 @@ RenameTypeInternal(Oid typeOid, const char *newTypeName, Oid typeNamespace) arrayOid = typ->typarray; - /* Just to give a more friendly error than unique-index violation */ - if (SearchSysCacheExists2(TYPENAMENSP, - CStringGetDatum(newTypeName), - ObjectIdGetDatum(typeNamespace))) - ereport(ERROR, - (errcode(ERRCODE_DUPLICATE_OBJECT), - errmsg("type \"%s\" already exists", newTypeName))); + /* Check for a conflicting type name. */ + oldTypeOid = GetSysCacheOid2(TYPENAMENSP, + CStringGetDatum(newTypeName), + ObjectIdGetDatum(typeNamespace)); + + /* + * If there is one, see if it's an autogenerated array type, and if so + * rename it out of the way. (But we must skip that for a shell type + * because moveArrayTypeName will do the wrong thing in that case.) + * Otherwise, we can at least give a more friendly error than unique-index + * violation. + */ + if (OidIsValid(oldTypeOid)) + { + if (get_typisdefined(oldTypeOid) && + moveArrayTypeName(oldTypeOid, newTypeName, typeNamespace)) + /* successfully dodged the problem */ ; + else + ereport(ERROR, + (errcode(ERRCODE_DUPLICATE_OBJECT), + errmsg("type \"%s\" already exists", newTypeName))); + } /* OK, do the rename --- tuple is a copy, so OK to scribble on it */ namestrcpy(&(typ->typname), newTypeName); @@ -734,8 +750,12 @@ RenameTypeInternal(Oid typeOid, const char *newTypeName, Oid typeNamespace) heap_freetuple(tuple); heap_close(pg_type_desc, RowExclusiveLock); - /* If the type has an array type, recurse to handle that */ - if (OidIsValid(arrayOid)) + /* + * If the type has an array type, recurse to handle that. But we don't + * need to do anything more if we already renamed that array type above + * (which would happen when, eg, renaming "foo" to "_foo"). + */ + if (OidIsValid(arrayOid) && arrayOid != oldTypeOid) { char *arrname = makeArrayTypeName(newTypeName, typeNamespace); diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql index 4fc5d5a065..819a77f035 100644 --- a/src/backend/catalog/system_views.sql +++ b/src/backend/catalog/system_views.sql @@ -246,7 +246,7 @@ CREATE VIEW pg_available_extension_versions AS CREATE VIEW pg_prepared_xacts AS SELECT P.transaction, P.gid, P.prepared, - U.rolname AS owner, D.datname AS database + U.rolname AS owner, D.datname AS database, P.state3pc AS state3pc FROM pg_prepared_xact() AS P LEFT JOIN pg_authid U ON P.ownerid = U.oid LEFT JOIN pg_database D ON P.dbid = D.oid; @@ -826,11 +826,13 @@ CREATE VIEW pg_user_mappings AS ELSE A.rolname END AS usename, - CASE WHEN pg_has_role(S.srvowner, 'USAGE') OR has_server_privilege(S.oid, 'USAGE') THEN - U.umoptions - ELSE - NULL - END AS umoptions + CASE WHEN (U.umuser <> 0 AND A.rolname = current_user + AND (pg_has_role(S.srvowner, 'USAGE') + OR has_server_privilege(S.oid, 'USAGE'))) + OR (U.umuser = 0 AND pg_has_role(S.srvowner, 'USAGE')) + OR (SELECT rolsuper FROM pg_authid WHERE rolname = current_user) + THEN U.umoptions + ELSE NULL END AS umoptions FROM pg_user_mapping U LEFT JOIN pg_authid A ON (A.oid = U.umuser) JOIN pg_foreign_server S ON (U.umserver = S.oid); diff --git a/src/backend/commands/amcmds.c b/src/backend/commands/amcmds.c index 9ac930ea8b..0464da054f 100644 --- a/src/backend/commands/amcmds.c +++ b/src/backend/commands/amcmds.c @@ -34,7 +34,7 @@ static const char *get_am_type_string(char amtype); /* - * CreateAcessMethod + * CreateAccessMethod * Registers a new access method. */ ObjectAddress diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c index c617abb223..c58f3096e6 100644 --- a/src/backend/commands/analyze.c +++ b/src/backend/commands/analyze.c @@ -356,10 +356,14 @@ do_analyze_rel(Relation onerel, int options, VacuumParams *params, /* * Determine which columns to analyze * - * Note that system attributes are never analyzed. + * Note that system attributes are never analyzed, so we just reject them + * at the lookup stage. We also reject duplicate column mentions. (We + * could alternatively ignore duplicates, but analyzing a column twice + * won't work; we'd end up making a conflicting update in pg_statistic.) */ if (va_cols != NIL) { + Bitmapset *unique_cols = NULL; ListCell *le; vacattrstats = (VacAttrStats **) palloc(list_length(va_cols) * @@ -375,6 +379,13 @@ do_analyze_rel(Relation onerel, int options, VacuumParams *params, (errcode(ERRCODE_UNDEFINED_COLUMN), errmsg("column \"%s\" of relation \"%s\" does not exist", col, RelationGetRelationName(onerel)))); + if (bms_is_member(i, unique_cols)) + ereport(ERROR, + (errcode(ERRCODE_DUPLICATE_COLUMN), + errmsg("column \"%s\" of relation \"%s\" is specified twice", + col, RelationGetRelationName(onerel)))); + unique_cols = bms_add_member(unique_cols, i); + vacattrstats[tcnt] = examine_attribute(onerel, i, NULL); if (vacattrstats[tcnt] != NULL) tcnt++; diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c index dc1f79f594..4053b5105d 100644 --- a/src/backend/commands/cluster.c +++ b/src/backend/commands/cluster.c @@ -559,6 +559,7 @@ rebuild_relation(Relation OldHeap, Oid indexOid, bool verbose) Oid tableOid = RelationGetRelid(OldHeap); Oid tableSpace = OldHeap->rd_rel->reltablespace; Oid OIDNewHeap; + char relpersistence; bool is_system_catalog; bool swap_toast_by_content; TransactionId frozenXid; @@ -568,7 +569,8 @@ rebuild_relation(Relation OldHeap, Oid indexOid, bool verbose) if (OidIsValid(indexOid)) mark_index_clustered(OldHeap, indexOid, true); - /* Remember if it's a system catalog */ + /* Remember info about rel before closing OldHeap */ + relpersistence = OldHeap->rd_rel->relpersistence; is_system_catalog = IsSystemRelation(OldHeap); /* Close relcache entry, but keep lock until transaction commit */ @@ -576,7 +578,7 @@ rebuild_relation(Relation OldHeap, Oid indexOid, bool verbose) /* Create the transient table that will receive the re-ordered data */ OIDNewHeap = make_new_heap(tableOid, tableSpace, - OldHeap->rd_rel->relpersistence, + relpersistence, AccessExclusiveLock); /* Copy the heap data into the new table in the desired order */ @@ -590,7 +592,7 @@ rebuild_relation(Relation OldHeap, Oid indexOid, bool verbose) finish_heap_swap(tableOid, OIDNewHeap, is_system_catalog, swap_toast_by_content, false, true, frozenXid, cutoffMulti, - OldHeap->rd_rel->relpersistence); + relpersistence); } diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c index 5e38edfb70..feab7aa6e2 100644 --- a/src/backend/commands/copy.c +++ b/src/backend/commands/copy.c @@ -938,7 +938,8 @@ DoCopy(const CopyStmt *stmt, const char *queryString, uint64 *processed) * relation which we have opened and locked. */ from = makeRangeVar(get_namespace_name(RelationGetNamespace(rel)), - RelationGetRelationName(rel), -1); + pstrdup(RelationGetRelationName(rel)), + -1); /* Build query */ select = makeNode(SelectStmt); @@ -1490,7 +1491,7 @@ BeginCopy(bool is_from, } /* plan the query */ - plan = pg_plan_query(query, 0, NULL); + plan = pg_plan_query(query, CURSOR_OPT_PARALLEL_OK, NULL); /* * With row level security and a user using "COPY relation TO", we @@ -1801,7 +1802,16 @@ BeginCopyTo(Relation rel, errmsg("relative path not allowed for COPY to file"))); oumask = umask(S_IWGRP | S_IWOTH); - cstate->copy_file = AllocateFile(cstate->filename, PG_BINARY_W); + PG_TRY(); + { + cstate->copy_file = AllocateFile(cstate->filename, PG_BINARY_W); + } + PG_CATCH(); + { + umask(oumask); + PG_RE_THROW(); + } + PG_END_TRY(); umask(oumask); if (cstate->copy_file == NULL) ereport(ERROR, diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c index c1c0223770..f47a13d184 100644 --- a/src/backend/commands/dbcommands.c +++ b/src/backend/commands/dbcommands.c @@ -674,7 +674,7 @@ createdb(const CreatedbStmt *stmt) /* * Force synchronous commit, thus minimizing the window between - * creation of the database files and commital of the transaction. If + * creation of the database files and committal of the transaction. If * we crash before committing, we'll have a DB that's taking up disk * space but is not in pg_database, which is not good. */ @@ -928,7 +928,7 @@ dropdb(const char *dbname, bool missing_ok) /* * Force synchronous commit, thus minimizing the window between removal of - * the database files and commital of the transaction. If we crash before + * the database files and committal of the transaction. If we crash before * committing, we'll have a DB that's gone on disk but still there * according to pg_database, which is not good. */ @@ -1286,7 +1286,7 @@ movedb(const char *dbname, const char *tblspcname) /* * Force synchronous commit, thus minimizing the window between - * copying the database files and commital of the transaction. If we + * copying the database files and committal of the transaction. If we * crash before committing, we'll leave an orphaned set of files on * disk, which is not fatal but not good either. */ diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 82ba58ef71..cb2852207f 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -3310,13 +3310,15 @@ ExplainSeparatePlans(ExplainState *es) * Optionally, OR in X_NOWHITESPACE to suppress the whitespace we'd normally * add. * - * XML tag names can't contain white space, so we replace any spaces in - * "tagname" with dashes. + * XML restricts tag names more than our other output formats, eg they can't + * contain white space or slashes. Replace invalid characters with dashes, + * so that for example "I/O Read Time" becomes "I-O-Read-Time". */ static void ExplainXMLTag(const char *tagname, int flags, ExplainState *es) { const char *s; + const char *valid = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_."; if ((flags & X_NOWHITESPACE) == 0) appendStringInfoSpaces(es->str, 2 * es->indent); @@ -3324,7 +3326,7 @@ ExplainXMLTag(const char *tagname, int flags, ExplainState *es) if ((flags & X_CLOSING) != 0) appendStringInfoCharMacro(es->str, '/'); for (s = tagname; *s; s++) - appendStringInfoCharMacro(es->str, (*s == ' ') ? '-' : *s); + appendStringInfoChar(es->str, strchr(valid, *s) ? *s : '-'); if ((flags & X_CLOSE_IMMEDIATE) != 0) appendStringInfoString(es->str, " /"); appendStringInfoCharMacro(es->str, '>'); @@ -3375,7 +3377,7 @@ ExplainYAMLLineStarting(ExplainState *es) } /* - * YAML is a superset of JSON; unfortuantely, the YAML quoting rules are + * YAML is a superset of JSON; unfortunately, the YAML quoting rules are * ridiculously complicated -- as documented in sections 5.3 and 7.3.3 of * http://yaml.org/spec/1.2/spec.html -- so we chose to just quote everything. * Empty strings, strings with leading or trailing whitespace, and strings diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c index 518fefcf09..4b923c205e 100644 --- a/src/backend/commands/extension.c +++ b/src/backend/commands/extension.c @@ -52,6 +52,7 @@ #include "nodes/makefuncs.h" #include "storage/fd.h" #include "tcop/utility.h" +#include "utils/acl.h" #include "utils/builtins.h" #include "utils/fmgroids.h" #include "utils/lsyscache.h" @@ -705,6 +706,9 @@ execute_sql_string(const char *sql, const char *filename) List *stmt_list; ListCell *lc2; + /* Be sure parser can see any DDL done so far */ + CommandCounterIncrement(); + stmt_list = pg_analyze_and_rewrite(parsetree, sql, NULL, @@ -3046,6 +3050,16 @@ ExecAlterExtensionContentsStmt(AlterExtensionContentsStmt *stmt, * OK, add the dependency. */ recordDependencyOn(&object, &extension, DEPENDENCY_EXTENSION); + + /* + * Also record the initial ACL on the object, if any. + * + * Note that this will handle the object's ACLs, as well as any ACLs + * on object subIds. (In other words, when the object is a table, + * this will record the table's ACL and the ACLs for the columns on + * the table, if any). + */ + recordExtObjInitPriv(object.objectId, object.classId); } else { @@ -3073,6 +3087,16 @@ ExecAlterExtensionContentsStmt(AlterExtensionContentsStmt *stmt, */ if (object.classId == RelationRelationId) extension_config_remove(extension.objectId, object.objectId); + + /* + * Remove all the initial ACLs, if any. + * + * Note that this will remove the object's ACLs, as well as any ACLs + * on object subIds. (In other words, when the object is a table, + * this will remove the table's ACL and the ACLs for the columns on + * the table, if any). + */ + removeExtObjInitPriv(object.objectId, object.classId); } InvokeObjectPostAlterHook(ExtensionRelationId, extension.objectId, 0); diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c index 8dda503781..837d76b557 100644 --- a/src/backend/commands/functioncmds.c +++ b/src/backend/commands/functioncmds.c @@ -1041,7 +1041,7 @@ CreateFunction(CreateFunctionStmt *stmt, const char *queryString) } else { - /* store SQL NULL instead of emtpy array */ + /* store SQL NULL instead of empty array */ trftypes = NULL; } @@ -1334,6 +1334,8 @@ SetFunctionReturnType(Oid funcOid, Oid newRetType) Relation pg_proc_rel; HeapTuple tup; Form_pg_proc procForm; + ObjectAddress func_address; + ObjectAddress type_address; pg_proc_rel = heap_open(ProcedureRelationId, RowExclusiveLock); @@ -1354,6 +1356,14 @@ SetFunctionReturnType(Oid funcOid, Oid newRetType) CatalogUpdateIndexes(pg_proc_rel, tup); heap_close(pg_proc_rel, RowExclusiveLock); + + /* + * Also update the dependency to the new type. Opaque is a pinned type, so + * there is no old dependency record for it that we would need to remove. + */ + ObjectAddressSet(type_address, TypeRelationId, newRetType); + ObjectAddressSet(func_address, ProcedureRelationId, funcOid); + recordDependencyOn(&func_address, &type_address, DEPENDENCY_NORMAL); } @@ -1368,6 +1378,8 @@ SetFunctionArgType(Oid funcOid, int argIndex, Oid newArgType) Relation pg_proc_rel; HeapTuple tup; Form_pg_proc procForm; + ObjectAddress func_address; + ObjectAddress type_address; pg_proc_rel = heap_open(ProcedureRelationId, RowExclusiveLock); @@ -1389,6 +1401,14 @@ SetFunctionArgType(Oid funcOid, int argIndex, Oid newArgType) CatalogUpdateIndexes(pg_proc_rel, tup); heap_close(pg_proc_rel, RowExclusiveLock); + + /* + * Also update the dependency to the new type. Opaque is a pinned type, so + * there is no old dependency record for it that we would need to remove. + */ + ObjectAddressSet(type_address, TypeRelationId, newArgType); + ObjectAddressSet(func_address, ProcedureRelationId, funcOid); + recordDependencyOn(&func_address, &type_address, DEPENDENCY_NORMAL); } @@ -1462,7 +1482,7 @@ CreateCast(CreateCastStmt *stmt) (errcode(ERRCODE_WRONG_OBJECT_TYPE), errmsg("cast will be ignored because the target data type is a domain"))); - /* Detemine the cast method */ + /* Determine the cast method */ if (stmt->func != NULL) castmethod = COERCION_METHOD_FUNCTION; else if (stmt->inout) diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c index 85817c6530..299512b5d4 100644 --- a/src/backend/commands/indexcmds.c +++ b/src/backend/commands/indexcmds.c @@ -100,7 +100,7 @@ static void RangeVarCallbackForReindexIndex(const RangeVar *relation, * Errors arising from the attribute list still apply. * * Most column type changes that can skip a table rewrite do not invalidate - * indexes. We ackowledge this when all operator classes, collations and + * indexes. We acknowledge this when all operator classes, collations and * exclusion operators match. Though we could further permit intra-opfamily * changes for btree and hash indexes, that adds subtle complexity with no * concrete benefit for core types. @@ -292,8 +292,8 @@ CheckIndexCompatible(Oid oldId, * 'indexRelationId': normally InvalidOid, but during bootstrap can be * nonzero to specify a preselected OID for the index. * 'is_alter_table': this is due to an ALTER rather than a CREATE operation. - * 'check_rights': check for CREATE rights in the namespace. (This should - * be true except when ALTER is deleting/recreating an index.) + * 'check_rights': check for CREATE rights in namespace and tablespace. (This + * should be true except when ALTER is deleting/recreating an index.) * 'skip_build': make the catalog entries but leave the index file empty; * it will be filled later. * 'quiet': suppress the NOTICE chatter ordinarily provided for constraints. @@ -429,8 +429,9 @@ DefineIndex(Oid relationId, /* note InvalidOid is OK in this case */ } - /* Check permissions except when using database's default */ - if (OidIsValid(tablespaceId) && tablespaceId != MyDatabaseTableSpace) + /* Check tablespace permissions */ + if (check_rights && + OidIsValid(tablespaceId) && tablespaceId != MyDatabaseTableSpace) { AclResult aclresult; @@ -961,7 +962,7 @@ CheckMutability(Expr *expr) * indxpath.c could do something with. However, that seems overly * restrictive. One useful application of partial indexes is to apply * a UNIQUE constraint across a subset of a table, and in that scenario - * any evaluatable predicate will work. So accept any predicate here + * any evaluable predicate will work. So accept any predicate here * (except ones requiring a plan), and let indxpath.c fend for itself. */ static void diff --git a/src/backend/commands/prepare.c b/src/backend/commands/prepare.c index cec37ce040..b01051df9d 100644 --- a/src/backend/commands/prepare.c +++ b/src/backend/commands/prepare.c @@ -159,7 +159,7 @@ PrepareQuery(PrepareStmt *stmt, const char *queryString) nargs, NULL, NULL, - 0, /* default cursor options */ + CURSOR_OPT_PARALLEL_OK, /* allow parallel mode */ true); /* fixed result */ /* diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 0828711691..13d1102340 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -20,6 +20,7 @@ #include "access/reloptions.h" #include "access/relscan.h" #include "access/sysattr.h" +#include "access/tupconvert.h" #include "access/xact.h" #include "access/xlog.h" #include "catalog/catalog.h" @@ -4472,13 +4473,18 @@ ATTypedTableRecursion(List **wqueue, Relation rel, AlterTableCmd *cmd, /* * find_composite_type_dependencies * - * Check to see if a composite type is being used as a column in some - * other table (possibly nested several levels deep in composite types!). + * Check to see if the type "typeOid" is being used as a column in some table + * (possibly nested several levels deep in composite types, arrays, etc!). * Eventually, we'd like to propagate the check or rewrite operation - * into other such tables, but for now, just error out if we find any. + * into such tables, but for now, just error out if we find any. * - * Caller should provide either a table name or a type name (not both) to - * report in the error message, if any. + * Caller should provide either the associated relation of a rowtype, + * or a type name (not both) for use in the error message, if any. + * + * Note that "typeOid" is not necessarily a composite type; it could also be + * another container type such as an array or range, or a domain over one of + * these things. The name of this function is therefore somewhat historical, + * but it's not worth changing. * * We assume that functions and views depending on the type are not reasons * to reject the ALTER. (How safe is this really?) @@ -4491,11 +4497,13 @@ find_composite_type_dependencies(Oid typeOid, Relation origRelation, ScanKeyData key[2]; SysScanDesc depScan; HeapTuple depTup; - Oid arrayOid; + + /* since this function recurses, it could be driven to stack overflow */ + check_stack_depth(); /* - * We scan pg_depend to find those things that depend on the rowtype. (We - * assume we can ignore refobjsubid for a rowtype.) + * We scan pg_depend to find those things that depend on the given type. + * (We assume we can ignore refobjsubid for a type.) */ depRel = heap_open(DependRelationId, AccessShareLock); @@ -4517,8 +4525,22 @@ find_composite_type_dependencies(Oid typeOid, Relation origRelation, Relation rel; Form_pg_attribute att; - /* Ignore dependees that aren't user columns of relations */ - /* (we assume system columns are never of rowtypes) */ + /* Check for directly dependent types */ + if (pg_depend->classid == TypeRelationId) + { + /* + * This must be an array, domain, or range containing the given + * type, so recursively check for uses of this type. Note that + * any error message will mention the original type not the + * container; this is intentional. + */ + find_composite_type_dependencies(pg_depend->objid, + origRelation, origTypeName); + continue; + } + + /* Else, ignore dependees that aren't user columns of relations */ + /* (we assume system columns are never of interesting types) */ if (pg_depend->classid != RelationRelationId || pg_depend->objsubid <= 0) continue; @@ -4574,14 +4596,6 @@ find_composite_type_dependencies(Oid typeOid, Relation origRelation, systable_endscan(depScan); relation_close(depRel, AccessShareLock); - - /* - * If there's an array type for the rowtype, must check for uses of it, - * too. - */ - arrayOid = get_array_type(typeOid); - if (OidIsValid(arrayOid)) - find_composite_type_dependencies(arrayOid, origRelation, origTypeName); } @@ -6193,7 +6207,7 @@ ATAddCheckConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel, /* * Check if ONLY was specified with ALTER TABLE. If so, allow the - * contraint creation only if there are no children currently. Error out + * constraint creation only if there are no children currently. Error out * otherwise. */ if (!recurse && children != NIL) @@ -6740,16 +6754,34 @@ ATExecAlterConstraint(Relation rel, AlterTableCmd *cmd, while (HeapTupleIsValid(tgtuple = systable_getnext(tgscan))) { + Form_pg_trigger tgform = (Form_pg_trigger) GETSTRUCT(tgtuple); Form_pg_trigger copy_tg; + /* + * Remember OIDs of other relation(s) involved in FK constraint. + * (Note: it's likely that we could skip forcing a relcache inval + * for other rels that don't have a trigger whose properties + * change, but let's be conservative.) + */ + if (tgform->tgrelid != RelationGetRelid(rel)) + otherrelids = list_append_unique_oid(otherrelids, + tgform->tgrelid); + + /* + * Update deferrability of RI_FKey_noaction_del, + * RI_FKey_noaction_upd, RI_FKey_check_ins and RI_FKey_check_upd + * triggers, but not others; see createForeignKeyTriggers and + * CreateFKCheckTrigger. + */ + if (tgform->tgfoid != F_RI_FKEY_NOACTION_DEL && + tgform->tgfoid != F_RI_FKEY_NOACTION_UPD && + tgform->tgfoid != F_RI_FKEY_CHECK_INS && + tgform->tgfoid != F_RI_FKEY_CHECK_UPD) + continue; + copyTuple = heap_copytuple(tgtuple); copy_tg = (Form_pg_trigger) GETSTRUCT(copyTuple); - /* Remember OIDs of other relation(s) involved in FK constraint */ - if (copy_tg->tgrelid != RelationGetRelid(rel)) - otherrelids = list_append_unique_oid(otherrelids, - copy_tg->tgrelid); - copy_tg->tgdeferrable = cmdcon->deferrable; copy_tg->tginitdeferred = cmdcon->initdeferred; simple_heap_update(tgrel, ©Tuple->t_self, copyTuple); @@ -6884,9 +6916,10 @@ ATExecValidateConstraint(Relation rel, char *constrName, bool recurse, /* * If we're recursing, the parent has already done this, so skip - * it. + * it. Also, if the constraint is a NO INHERIT constraint, we + * shouldn't try to look for it in the children. */ - if (!recursing) + if (!recursing && !con->connoinherit) children = find_all_inheritors(RelationGetRelid(rel), lockmode, NULL); @@ -7511,6 +7544,9 @@ CreateFKCheckTrigger(Oid myRelOid, Oid refRelOid, Constraint *fkconstraint, /* * Create the triggers that implement an FK constraint. + * + * NB: if you change any trigger properties here, see also + * ATExecAlterConstraint. */ static void createForeignKeyTriggers(Relation rel, Oid refRelOid, Constraint *fkconstraint, @@ -7697,6 +7733,24 @@ ATExecDropConstraint(Relation rel, const char *constrName, is_no_inherit_constraint = con->connoinherit; + /* + * If it's a foreign-key constraint, we'd better lock the referenced + * table and check that that's not in use, just as we've already done + * for the constrained table (else we might, eg, be dropping a trigger + * that has unfired events). But we can/must skip that in the + * self-referential case. + */ + if (con->contype == CONSTRAINT_FOREIGN && + con->confrelid != RelationGetRelid(rel)) + { + Relation frel; + + /* Must match lock taken by RemoveTriggerById: */ + frel = heap_open(con->confrelid, AccessExclusiveLock); + CheckTableNotInUse(frel, "ALTER TABLE"); + heap_close(frel, NoLock); + } + /* * Perform the actual constraint deletion */ @@ -7990,12 +8044,69 @@ ATPrepAlterColumnType(List **wqueue, ReleaseSysCache(tuple); /* - * The recursion case is handled by ATSimpleRecursion. However, if we are - * told not to recurse, there had better not be any child tables; else the - * alter would put them out of step. + * Recurse manually by queueing a new command for each child, if + * necessary. We cannot apply ATSimpleRecursion here because we need to + * remap attribute numbers in the USING expression, if any. + * + * If we are told not to recurse, there had better not be any child + * tables; else the alter would put them out of step. */ if (recurse) - ATSimpleRecursion(wqueue, rel, cmd, recurse, lockmode); + { + Oid relid = RelationGetRelid(rel); + ListCell *child; + List *children; + + children = find_all_inheritors(relid, lockmode, NULL); + + /* + * find_all_inheritors does the recursive search of the inheritance + * hierarchy, so all we have to do is process all of the relids in the + * list that it returns. + */ + foreach(child, children) + { + Oid childrelid = lfirst_oid(child); + Relation childrel; + + if (childrelid == relid) + continue; + + /* find_all_inheritors already got lock */ + childrel = relation_open(childrelid, NoLock); + CheckTableNotInUse(childrel, "ALTER TABLE"); + + /* + * Remap the attribute numbers. If no USING expression was + * specified, there is no need for this step. + */ + if (def->cooked_default) + { + AttrNumber *attmap; + bool found_whole_row; + + /* create a copy to scribble on */ + cmd = copyObject(cmd); + + attmap = convert_tuples_by_name_map(RelationGetDescr(childrel), + RelationGetDescr(rel), + gettext_noop("could not convert row type")); + ((ColumnDef *) cmd->def)->cooked_default = + map_variable_attnos(def->cooked_default, + 1, 0, + attmap, RelationGetDescr(rel)->natts, + &found_whole_row); + if (found_whole_row) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot convert whole-row table reference"), + errdetail("USING expression contains a whole-row table reference."))); + pfree(attmap); + } + ATPrepCmd(wqueue, childrel, cmd, false, true, lockmode); + relation_close(childrel, NoLock); + } + } else if (!recursing && find_inheritance_children(RelationGetRelid(rel), NoLock) != NIL) ereport(ERROR, @@ -8819,8 +8930,8 @@ RebuildConstraintComment(AlteredTableInfo *tab, int pass, Oid objid, cmd->objtype = OBJECT_TABCONSTRAINT; cmd->objname = list_make3( makeString(get_namespace_name(RelationGetNamespace(rel))), - makeString(RelationGetRelationName(rel)), - makeString(conname)); + makeString(pstrdup(RelationGetRelationName(rel))), + makeString(pstrdup(conname))); cmd->objargs = NIL; cmd->comment = comment_str; @@ -10290,6 +10401,39 @@ MergeAttributesIntoExisting(Relation child_rel, Relation parent_rel) } } + /* + * If the parent has an OID column, so must the child, and we'd better + * update the child's attinhcount and attislocal the same as for normal + * columns. We needn't check data type or not-nullness though. + */ + if (tupleDesc->tdhasoid) + { + /* + * Here we match by column number not name; the match *must* be the + * system column, not some random column named "oid". + */ + tuple = SearchSysCacheCopy2(ATTNUM, + ObjectIdGetDatum(RelationGetRelid(child_rel)), + Int16GetDatum(ObjectIdAttributeNumber)); + if (HeapTupleIsValid(tuple)) + { + Form_pg_attribute childatt = (Form_pg_attribute) GETSTRUCT(tuple); + + /* See comments above; these changes should be the same */ + childatt->attinhcount++; + simple_heap_update(attrrel, &tuple->t_self, tuple); + CatalogUpdateIndexes(attrrel, tuple); + heap_freetuple(tuple); + } + else + { + ereport(ERROR, + (errcode(ERRCODE_DATATYPE_MISMATCH), + errmsg("child table is missing column \"%s\"", + "oid"))); + } + } + heap_close(attrrel, RowExclusiveLock); } @@ -11241,6 +11385,12 @@ ATExecGenericOptions(Relation rel, List *options) simple_heap_update(ftrel, &tuple->t_self, tuple); CatalogUpdateIndexes(ftrel, tuple); + /* + * Invalidate relcache so that all sessions will refresh any cached plans + * that might depend on the old options. + */ + CacheInvalidateRelcache(rel); + InvokeObjectPostAlterHook(ForeignTableRelationId, RelationGetRelid(rel), 0); diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index 9de22a13d7..e660c10d8a 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -3433,14 +3433,12 @@ static void afterTriggerFreeEventList(AfterTriggerEventList *events) { AfterTriggerEventChunk *chunk; - AfterTriggerEventChunk *next_chunk; - for (chunk = events->head; chunk != NULL; chunk = next_chunk) + while ((chunk = events->head) != NULL) { - next_chunk = chunk->next; + events->head = chunk->next; pfree(chunk); } - events->head = NULL; events->tail = NULL; events->tailfree = NULL; } @@ -3484,6 +3482,23 @@ afterTriggerRestoreEventList(AfterTriggerEventList *events, } } +/* ---------- + * afterTriggerDeleteHeadEventChunk() + * + * Remove the first chunk of events from the given event list. + * ---------- + */ +static void +afterTriggerDeleteHeadEventChunk(AfterTriggerEventList *events) +{ + AfterTriggerEventChunk *target = events->head; + + Assert(target && target->next); + + events->head = target->next; + pfree(target); +} + /* ---------- * AfterTriggerExecute() @@ -3853,7 +3868,7 @@ afterTriggerInvokeEvents(AfterTriggerEventList *events, /* * If it's last chunk, must sync event list's tailfree too. Note * that delete_ok must NOT be passed as true if there could be - * stacked AfterTriggerEventList values pointing at this event + * additional AfterTriggerEventList values pointing at this event * list, since we'd fail to fix their copies of tailfree. */ if (chunk == events->tail) @@ -3985,23 +4000,45 @@ AfterTriggerEndQuery(EState *estate) * will instead fire any triggers in a dedicated query level. Foreign key * enforcement triggers do add to the current query level, thanks to their * passing fire_triggers = false to SPI_execute_snapshot(). Other - * C-language triggers might do likewise. Be careful here: firing a - * trigger could result in query_stack being repalloc'd, so we can't save - * its address across afterTriggerInvokeEvents calls. + * C-language triggers might do likewise. * * If we find no firable events, we don't have to increment * firing_counter. */ + events = &afterTriggers.query_stack[afterTriggers.query_depth]; + for (;;) { - events = &afterTriggers.query_stack[afterTriggers.query_depth]; if (afterTriggerMarkEvents(events, &afterTriggers.events, true)) { CommandId firing_id = afterTriggers.firing_counter++; + AfterTriggerEventChunk *oldtail = events->tail; - /* OK to delete the immediate events after processing them */ - if (afterTriggerInvokeEvents(events, firing_id, estate, true)) + if (afterTriggerInvokeEvents(events, firing_id, estate, false)) break; /* all fired */ + + /* + * Firing a trigger could result in query_stack being repalloc'd, + * so we must recalculate ptr after each afterTriggerInvokeEvents + * call. Furthermore, it's unsafe to pass delete_ok = true here, + * because that could cause afterTriggerInvokeEvents to try to + * access *events after the stack has been repalloc'd. + */ + events = &afterTriggers.query_stack[afterTriggers.query_depth]; + + /* + * We'll need to scan the events list again. To reduce the cost + * of doing so, get rid of completely-fired chunks. We know that + * all events were marked IN_PROGRESS or DONE at the conclusion of + * afterTriggerMarkEvents, so any still-interesting events must + * have been added after that, and so must be in the chunk that + * was then the tail chunk, or in later chunks. So, zap all + * chunks before oldtail. This is approximately the same set of + * events we would have gotten rid of by passing delete_ok = true. + */ + Assert(oldtail != NULL); + while (events->head != oldtail) + afterTriggerDeleteHeadEventChunk(events); } else break; diff --git a/src/backend/commands/tsearchcmds.c b/src/backend/commands/tsearchcmds.c index 69c038c52b..6bf249bdea 100644 --- a/src/backend/commands/tsearchcmds.c +++ b/src/backend/commands/tsearchcmds.c @@ -1215,10 +1215,10 @@ AlterTSConfiguration(AlterTSConfigurationStmt *stmt) /* Update dependencies */ makeConfigurationDependencies(tup, true, relMap); - InvokeObjectPostAlterHook(TSConfigMapRelationId, + InvokeObjectPostAlterHook(TSConfigRelationId, HeapTupleGetOid(tup), 0); - ObjectAddressSet(address, TSConfigMapRelationId, cfgId); + ObjectAddressSet(address, TSConfigRelationId, cfgId); heap_close(relMap, RowExclusiveLock); diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c index 8e7be78f65..13eb8c95fe 100644 --- a/src/backend/commands/typecmds.c +++ b/src/backend/commands/typecmds.c @@ -2779,10 +2779,9 @@ validateDomainConstraint(Oid domainoid, char *ccbin) * risk by using the weakest suitable lock (ShareLock for most callers). * * XXX the API for this is not sufficient to support checking domain values - * that are inside composite types or arrays. Currently we just error out - * if a composite type containing the target domain is stored anywhere. - * There are not currently arrays of domains; if there were, we could take - * the same approach, but it'd be nicer to fix it properly. + * that are inside container types, such as composite types, arrays, or + * ranges. Currently we just error out if a container type containing the + * target domain is stored anywhere. * * Generally used for retrieving a list of tests when adding * new constraints to a domain. @@ -2791,6 +2790,7 @@ static List * get_rels_with_domain(Oid domainOid, LOCKMODE lockmode) { List *result = NIL; + char *domainTypeName = format_type_be(domainOid); Relation depRel; ScanKeyData key[2]; SysScanDesc depScan; @@ -2798,6 +2798,9 @@ get_rels_with_domain(Oid domainOid, LOCKMODE lockmode) Assert(lockmode != NoLock); + /* since this function recurses, it could be driven to stack overflow */ + check_stack_depth(); + /* * We scan pg_depend to find those things that depend on the domain. (We * assume we can ignore refobjsubid for a domain.) @@ -2824,20 +2827,32 @@ get_rels_with_domain(Oid domainOid, LOCKMODE lockmode) Form_pg_attribute pg_att; int ptr; - /* Check for directly dependent types --- must be domains */ + /* Check for directly dependent types */ if (pg_depend->classid == TypeRelationId) { - Assert(get_typtype(pg_depend->objid) == TYPTYPE_DOMAIN); - - /* - * Recursively add dependent columns to the output list. This is - * a bit inefficient since we may fail to combine RelToCheck - * entries when attributes of the same rel have different derived - * domain types, but it's probably not worth improving. - */ - result = list_concat(result, - get_rels_with_domain(pg_depend->objid, - lockmode)); + if (get_typtype(pg_depend->objid) == TYPTYPE_DOMAIN) + { + /* + * This is a sub-domain, so recursively add dependent columns + * to the output list. This is a bit inefficient since we may + * fail to combine RelToCheck entries when attributes of the + * same rel have different derived domain types, but it's + * probably not worth improving. + */ + result = list_concat(result, + get_rels_with_domain(pg_depend->objid, + lockmode)); + } + else + { + /* + * Otherwise, it is some container type using the domain, so + * fail if there are any columns of this type. + */ + find_composite_type_dependencies(pg_depend->objid, + NULL, + domainTypeName); + } continue; } @@ -2874,7 +2889,7 @@ get_rels_with_domain(Oid domainOid, LOCKMODE lockmode) if (OidIsValid(rel->rd_rel->reltype)) find_composite_type_dependencies(rel->rd_rel->reltype, NULL, - format_type_be(domainOid)); + domainTypeName); /* * Otherwise, we can ignore relations except those with both diff --git a/src/backend/commands/vacuumlazy.c b/src/backend/commands/vacuumlazy.c index b5fb325007..8f59732442 100644 --- a/src/backend/commands/vacuumlazy.c +++ b/src/backend/commands/vacuumlazy.c @@ -108,7 +108,8 @@ typedef struct LVRelStats BlockNumber scanned_pages; /* number of pages we examined */ BlockNumber pinskipped_pages; /* # of pages we skipped due to a pin */ BlockNumber frozenskipped_pages; /* # of frozen pages we skipped */ - double scanned_tuples; /* counts only tuples on scanned pages */ + BlockNumber tupcount_pages; /* pages whose tuples we counted */ + double scanned_tuples; /* counts only tuples on tupcount_pages */ double old_rel_tuples; /* previous value of pg_class.reltuples */ double new_rel_tuples; /* new estimated total # of tuples */ double new_dead_tuples; /* new estimated total # of dead tuples */ @@ -293,6 +294,10 @@ lazy_vacuum_rel(Relation onerel, int options, VacuumParams *params, * density") with nonzero relpages and reltuples=0 (which means "zero * tuple density") unless there's some actual evidence for the latter. * + * It's important that we use tupcount_pages and not scanned_pages for the + * check described above; scanned_pages counts pages where we could not + * get cleanup lock, and which were processed only for frozenxid purposes. + * * We do update relallvisible even in the corner case, since if the table * is all-visible we'd definitely like to know that. But clamp the value * to be not more than what we're setting relpages to. @@ -302,7 +307,7 @@ lazy_vacuum_rel(Relation onerel, int options, VacuumParams *params, */ new_rel_pages = vacrelstats->rel_pages; new_rel_tuples = vacrelstats->new_rel_tuples; - if (vacrelstats->scanned_pages == 0 && new_rel_pages > 0) + if (vacrelstats->tupcount_pages == 0 && new_rel_pages > 0) { new_rel_pages = vacrelstats->old_rel_pages; new_rel_tuples = vacrelstats->old_rel_tuples; @@ -489,6 +494,7 @@ lazy_scan_heap(Relation onerel, int options, LVRelStats *vacrelstats, nblocks = RelationGetNumberOfBlocks(onerel); vacrelstats->rel_pages = nblocks; vacrelstats->scanned_pages = 0; + vacrelstats->tupcount_pages = 0; vacrelstats->nonempty_pages = 0; vacrelstats->latestRemovedXid = InvalidTransactionId; @@ -517,7 +523,7 @@ lazy_scan_heap(Relation onerel, int options, LVRelStats *vacrelstats, * safely set for relfrozenxid or relminmxid. * * Before entering the main loop, establish the invariant that - * next_unskippable_block is the next block number >= blkno that's not we + * next_unskippable_block is the next block number >= blkno that we * can't skip based on the visibility map, either all-visible for a * regular scan or all-frozen for an aggressive scan. We set it to * nblocks if there's no such block. We also set up the skipping_blocks @@ -627,8 +633,7 @@ lazy_scan_heap(Relation onerel, int options, LVRelStats *vacrelstats, /* * We know we can't skip the current block. But set up - * skipping_all_visible_blocks to do the right thing at the - * following blocks. + * skipping_blocks to do the right thing at the following blocks. */ if (next_unskippable_block - blkno > SKIP_PAGES_THRESHOLD) skipping_blocks = true; @@ -811,6 +816,7 @@ lazy_scan_heap(Relation onerel, int options, LVRelStats *vacrelstats, } vacrelstats->scanned_pages++; + vacrelstats->tupcount_pages++; page = BufferGetPage(buf); @@ -1254,7 +1260,7 @@ lazy_scan_heap(Relation onerel, int options, LVRelStats *vacrelstats, /* now we can compute the new value for pg_class.reltuples */ vacrelstats->new_rel_tuples = vac_estimate_reltuples(onerel, false, nblocks, - vacrelstats->scanned_pages, + vacrelstats->tupcount_pages, num_tuples); /* @@ -1335,8 +1341,7 @@ lazy_scan_heap(Relation onerel, int options, LVRelStats *vacrelstats, "%u pages are entirely empty.\n", empty_pages), empty_pages); - appendStringInfo(&buf, _("%s."), - pg_rusage_show(&ru0)); + appendStringInfo(&buf, _("%s."), pg_rusage_show(&ru0)); ereport(elevel, (errmsg("\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u pages", @@ -1411,8 +1416,7 @@ lazy_vacuum_heap(Relation onerel, LVRelStats *vacrelstats) (errmsg("\"%s\": removed %d row versions in %d pages", RelationGetRelationName(onerel), tupindex, npages), - errdetail("%s.", - pg_rusage_show(&ru0)))); + errdetail_internal("%s", pg_rusage_show(&ru0)))); } /* @@ -1600,7 +1604,7 @@ lazy_vacuum_index(Relation indrel, (errmsg("scanned index \"%s\" to remove %d row versions", RelationGetRelationName(indrel), vacrelstats->num_dead_tuples), - errdetail("%s.", pg_rusage_show(&ru0)))); + errdetail_internal("%s", pg_rusage_show(&ru0)))); } /* @@ -1618,7 +1622,7 @@ lazy_cleanup_index(Relation indrel, ivinfo.index = indrel; ivinfo.analyze_only = false; - ivinfo.estimated_count = (vacrelstats->scanned_pages < vacrelstats->rel_pages); + ivinfo.estimated_count = (vacrelstats->tupcount_pages < vacrelstats->rel_pages); ivinfo.message_level = elevel; ivinfo.num_heap_tuples = vacrelstats->new_rel_tuples; ivinfo.strategy = vac_strategy; @@ -1810,7 +1814,7 @@ lazy_truncate_heap(Relation onerel, LVRelStats *vacrelstats) (errmsg("\"%s\": truncated %u to %u pages", RelationGetRelationName(onerel), old_rel_pages, new_rel_pages), - errdetail("%s.", + errdetail_internal("%s", pg_rusage_show(&ru0)))); old_rel_pages = new_rel_pages; } while (new_rel_pages > vacrelstats->nonempty_pages && diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c index defafa54b2..1f72d7bee9 100644 --- a/src/backend/commands/variable.c +++ b/src/backend/commands/variable.c @@ -776,7 +776,7 @@ assign_client_encoding(const char *newval, void *extra) */ ereport(ERROR, (errcode(ERRCODE_INVALID_TRANSACTION_STATE), - errmsg("cannot change client_encoding in a parallel worker"))); + errmsg("cannot change client_encoding during a parallel operation"))); } /* We do not expect an error if PrepareClientEncoding succeeded */ diff --git a/src/backend/commands/view.c b/src/backend/commands/view.c index 085bf32320..d582ecd792 100644 --- a/src/backend/commands/view.c +++ b/src/backend/commands/view.c @@ -59,15 +59,13 @@ validateWithCheckOption(char *value) /*--------------------------------------------------------------------- * DefineVirtualRelation * - * Create the "view" relation. `DefineRelation' does all the work, - * we just provide the correct arguments ... at least when we're - * creating a view. If we're updating an existing view, we have to - * work harder. + * Create a view relation and use the rules system to store the query + * for the view. *--------------------------------------------------------------------- */ static ObjectAddress DefineVirtualRelation(RangeVar *relation, List *tlist, bool replace, - List *options) + List *options, Query *viewParse) { Oid viewOid; LOCKMODE lockmode; @@ -161,19 +159,14 @@ DefineVirtualRelation(RangeVar *relation, List *tlist, bool replace, descriptor = BuildDescForRelation(attrList); checkViewTupleDesc(descriptor, rel->rd_att); - /* - * The new options list replaces the existing options list, even if - * it's empty. - */ - atcmd = makeNode(AlterTableCmd); - atcmd->subtype = AT_ReplaceRelOptions; - atcmd->def = (Node *) options; - atcmds = lappend(atcmds, atcmd); - /* * If new attributes have been added, we must add pg_attribute entries * for them. It is convenient (although overkill) to use the ALTER * TABLE ADD COLUMN infrastructure for this. + * + * Note that we must do this before updating the query for the view, + * since the rules system requires that the correct view columns be in + * place when defining the new rules. */ if (list_length(attrList) > rel->rd_att->natts) { @@ -192,9 +185,38 @@ DefineVirtualRelation(RangeVar *relation, List *tlist, bool replace, atcmd->def = (Node *) lfirst(c); atcmds = lappend(atcmds, atcmd); } + + AlterTableInternal(viewOid, atcmds, true); + + /* Make the new view columns visible */ + CommandCounterIncrement(); } - /* OK, let's do it. */ + /* + * Update the query for the view. + * + * Note that we must do this before updating the view options, because + * the new options may not be compatible with the old view query (for + * example if we attempt to add the WITH CHECK OPTION, we require that + * the new view be automatically updatable, but the old view may not + * have been). + */ + StoreViewQuery(viewOid, viewParse, replace); + + /* Make the new view query visible */ + CommandCounterIncrement(); + + /* + * Finally update the view options. + * + * The new options list replaces the existing options list, even if + * it's empty. + */ + atcmd = makeNode(AlterTableCmd); + atcmd->subtype = AT_ReplaceRelOptions; + atcmd->def = (Node *) options; + atcmds = list_make1(atcmd); + AlterTableInternal(viewOid, atcmds, true); ObjectAddressSet(address, RelationRelationId, viewOid); @@ -211,7 +233,7 @@ DefineVirtualRelation(RangeVar *relation, List *tlist, bool replace, ObjectAddress address; /* - * now set the parameters for keys/inheritance etc. All of these are + * Set the parameters for keys/inheritance etc. All of these are * uninteresting for views... */ createStmt->relation = relation; @@ -224,12 +246,19 @@ DefineVirtualRelation(RangeVar *relation, List *tlist, bool replace, createStmt->if_not_exists = false; /* - * finally create the relation (this will error out if there's an - * existing view, so we don't need more code to complain if "replace" - * is false). + * Create the relation (this will error out if there's an existing + * view, so we don't need more code to complain if "replace" is + * false). */ address = DefineRelation(createStmt, RELKIND_VIEW, InvalidOid, NULL); Assert(address.objectId != InvalidOid); + + /* Make the new view relation visible */ + CommandCounterIncrement(); + + /* Store the query for the view */ + StoreViewQuery(address.objectId, viewParse, replace); + return address; } } @@ -529,16 +558,7 @@ DefineView(ViewStmt *stmt, const char *queryString) * aborted. */ address = DefineVirtualRelation(view, viewParse->targetList, - stmt->replace, stmt->options); - - /* - * The relation we have just created is not visible to any other commands - * running with the same transaction & command id. So, increment the - * command id counter (but do NOT pfree any memory!!!!) - */ - CommandCounterIncrement(); - - StoreViewQuery(address.objectId, viewParse, stmt->replace); + stmt->replace, stmt->options, viewParse); return address; } diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index 32bb3f9205..9bc255ea0c 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -1541,9 +1541,11 @@ ExecutePlan(EState *estate, /* * If a tuple count was supplied, we must force the plan to run without - * parallelism, because we might exit early. + * parallelism, because we might exit early. Also disable parallelism + * when writing into a relation, because no database changes are allowed + * in parallel mode. */ - if (numberTuples) + if (numberTuples || dest->mydest == DestIntoRel) use_parallel_mode = false; /* @@ -1826,8 +1828,8 @@ ExecWithCheckOptions(WCOKind kind, ResultRelInfo *resultRelInfo, * the permissions on the relation (that is, if the user * could view it directly anyway). For RLS violations, we * don't include the data since we don't know if the user - * should be able to view the tuple as as that depends on - * the USING policy. + * should be able to view the tuple as that depends on the + * USING policy. */ case WCO_VIEW_CHECK: insertedCols = GetInsertedColumns(resultRelInfo, estate); diff --git a/src/backend/executor/execParallel.c b/src/backend/executor/execParallel.c index 5aa6f023bf..4741aec46d 100644 --- a/src/backend/executor/execParallel.c +++ b/src/backend/executor/execParallel.c @@ -105,8 +105,7 @@ static shm_mq_handle **ExecParallelSetupTupleQueues(ParallelContext *pcxt, static bool ExecParallelRetrieveInstrumentation(PlanState *planstate, SharedExecutorInstrumentation *instrumentation); -/* Helper functions that run in the parallel worker. */ -static void ParallelQueryMain(dsm_segment *seg, shm_toc *toc); +/* Helper function that runs in the parallel worker. */ static DestReceiver *ExecParallelGetReceiver(dsm_segment *seg, shm_toc *toc); /* @@ -355,7 +354,7 @@ ExecInitParallelPlan(PlanState *planstate, EState *estate, int nworkers) pstmt_data = ExecSerializePlan(planstate->plan, estate); /* Create a parallel context. */ - pcxt = CreateParallelContext(ParallelQueryMain, nworkers); + pcxt = CreateParallelContextForExternalFunction("postgres", "ParallelQueryMain", nworkers); pei->pcxt = pcxt; /* @@ -502,7 +501,7 @@ ExecParallelRetrieveInstrumentation(PlanState *planstate, int plan_node_id = planstate->plan->plan_node_id; MemoryContext oldcontext; - /* Find the instumentation for this node. */ + /* Find the instrumentation for this node. */ for (i = 0; i < instrumentation->num_plan_nodes; ++i) if (instrumentation->plan_node_id[i] == plan_node_id) break; @@ -563,7 +562,7 @@ ExecParallelFinish(ParallelExecutorInfo *pei) } /* - * Clean up whatever ParallelExecutreInfo resources still exist after + * Clean up whatever ParallelExecutorInfo resources still exist after * ExecParallelFinish. We separate these routines because someone might * want to examine the contents of the DSM after ExecParallelFinish and * before calling this routine. @@ -720,7 +719,7 @@ ExecParallelInitializeWorker(PlanState *planstate, shm_toc *toc) * to do this are also stored in the dsm_segment and can be accessed through * the shm_toc. */ -static void +void ParallelQueryMain(dsm_segment *seg, shm_toc *toc) { BufferUsage *buffer_usage; diff --git a/src/backend/executor/execQual.c b/src/backend/executor/execQual.c index cbb76d1f1c..df5abd23c0 100644 --- a/src/backend/executor/execQual.c +++ b/src/backend/executor/execQual.c @@ -2987,12 +2987,18 @@ ExecEvalCase(CaseExprState *caseExpr, ExprContext *econtext, if (caseExpr->arg) { + Datum arg_value; bool arg_isNull; - econtext->caseValue_datum = ExecEvalExpr(caseExpr->arg, - econtext, - &arg_isNull, - NULL); + arg_value = ExecEvalExpr(caseExpr->arg, + econtext, + &arg_isNull, + NULL); + /* Since caseValue_datum may be read multiple times, force to R/O */ + econtext->caseValue_datum = + MakeExpandedObjectReadOnly(arg_value, + arg_isNull, + caseExpr->argtyplen); econtext->caseValue_isNull = arg_isNull; } @@ -4053,11 +4059,18 @@ ExecEvalCoerceToDomain(CoerceToDomainState *cstate, ExprContext *econtext, * nodes. We must save and restore prior setting of * econtext's domainValue fields, in case this node is * itself within a check expression for another domain. + * + * Also, if we are working with a read-write expanded + * datum, be sure that what we pass to CHECK expressions + * is a read-only pointer; else called functions might + * modify or even delete the expanded object. */ save_datum = econtext->domainValue_datum; save_isNull = econtext->domainValue_isNull; - econtext->domainValue_datum = result; + econtext->domainValue_datum = + MakeExpandedObjectReadOnly(result, *isNull, + cstate->constraint_ref->tcache->typlen); econtext->domainValue_isNull = *isNull; conResult = ExecEvalExpr(con->check_expr, @@ -4865,6 +4878,8 @@ ExecInitExpr(Expr *node, PlanState *parent) } cstate->args = outlist; cstate->defresult = ExecInitExpr(caseexpr->defresult, parent); + if (caseexpr->arg) + cstate->argtyplen = get_typlen(exprType((Node *) caseexpr->arg)); state = (ExprState *) cstate; } break; diff --git a/src/backend/executor/functions.c b/src/backend/executor/functions.c index 470db5bb4a..40a26cb956 100644 --- a/src/backend/executor/functions.c +++ b/src/backend/executor/functions.c @@ -500,7 +500,16 @@ init_execution_state(List *queryTree_list, fcache->readonly_func ? CURSOR_OPT_PARALLEL_OK : 0, NULL); - /* Precheck all commands for validity in a function */ + /* + * Precheck all commands for validity in a function. This should + * generally match the restrictions spi.c applies. + */ + if (IsA(stmt, CopyStmt) && + ((CopyStmt *) stmt)->filename == NULL) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot COPY to/from client in a SQL function"))); + if (IsA(stmt, TransactionStmt)) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), diff --git a/src/backend/executor/nodeAgg.c b/src/backend/executor/nodeAgg.c index ce2fc281a4..8c6aa9a13e 100644 --- a/src/backend/executor/nodeAgg.c +++ b/src/backend/executor/nodeAgg.c @@ -91,10 +91,13 @@ * transition value or a previous function result, and in either case its * value need not be preserved. See int8inc() for an example. Notice that * advance_transition_function() is coded to avoid a data copy step when - * the previous transition value pointer is returned. Also, some - * transition functions want to store working state in addition to the - * nominal transition value; they can use the memory context returned by - * AggCheckCallContext() to do that. + * the previous transition value pointer is returned. It is also possible + * to avoid repeated data copying when the transition value is an expanded + * object: to do that, the transition function must take care to return + * an expanded object that is in a child context of the memory context + * returned by AggCheckCallContext(). Also, some transition functions want + * to store working state in addition to the nominal transition value; they + * can use the memory context returned by AggCheckCallContext() to do that. * * Note: AggCheckCallContext() is available as of PostgreSQL 9.0. The * AggState is available as context in earlier releases (back to 8.1), @@ -494,7 +497,7 @@ static void agg_fill_hash_table(AggState *aggstate); static TupleTableSlot *agg_retrieve_hash_table(AggState *aggstate); static Datum GetAggInitVal(Datum textInitVal, Oid transtype); static void build_pertrans_for_aggref(AggStatePerTrans pertrans, - AggState *aggsate, EState *estate, + AggState *aggstate, EState *estate, Aggref *aggref, Oid aggtransfn, Oid aggtranstype, Oid aggserialfn, Oid aggdeserialfn, Datum initValue, bool initValueIsNull, @@ -805,8 +808,10 @@ advance_transition_function(AggState *aggstate, /* * If pass-by-ref datatype, must copy the new value into aggcontext and - * pfree the prior transValue. But if transfn returned a pointer to its - * first input, we don't need to do anything. + * free the prior transValue. But if transfn returned a pointer to its + * first input, we don't need to do anything. Also, if transfn returned a + * pointer to a R/W expanded object that is already a child of the + * aggcontext, assume we can adopt that value without copying it. */ if (!pertrans->transtypeByVal && DatumGetPointer(newVal) != DatumGetPointer(pergroupstate->transValue)) @@ -814,12 +819,25 @@ advance_transition_function(AggState *aggstate, if (!fcinfo->isnull) { MemoryContextSwitchTo(aggstate->aggcontexts[aggstate->current_set]->ecxt_per_tuple_memory); - newVal = datumCopy(newVal, - pertrans->transtypeByVal, - pertrans->transtypeLen); + if (DatumIsReadWriteExpandedObject(newVal, + false, + pertrans->transtypeLen) && + MemoryContextGetParent(DatumGetEOHP(newVal)->eoh_context) == CurrentMemoryContext) + /* do nothing */ ; + else + newVal = datumCopy(newVal, + pertrans->transtypeByVal, + pertrans->transtypeLen); } if (!pergroupstate->transValueIsNull) - pfree(DatumGetPointer(pergroupstate->transValue)); + { + if (DatumIsReadWriteExpandedObject(pergroupstate->transValue, + false, + pertrans->transtypeLen)) + DeleteExpandedObject(pergroupstate->transValue); + else + pfree(DatumGetPointer(pergroupstate->transValue)); + } } pergroupstate->transValue = newVal; @@ -1067,8 +1085,11 @@ advance_combine_function(AggState *aggstate, /* * If pass-by-ref datatype, must copy the new value into aggcontext and - * pfree the prior transValue. But if the combine function returned a - * pointer to its first input, we don't need to do anything. + * free the prior transValue. But if the combine function returned a + * pointer to its first input, we don't need to do anything. Also, if the + * combine function returned a pointer to a R/W expanded object that is + * already a child of the aggcontext, assume we can adopt that value + * without copying it. */ if (!pertrans->transtypeByVal && DatumGetPointer(newVal) != DatumGetPointer(pergroupstate->transValue)) @@ -1076,12 +1097,25 @@ advance_combine_function(AggState *aggstate, if (!fcinfo->isnull) { MemoryContextSwitchTo(aggstate->aggcontexts[aggstate->current_set]->ecxt_per_tuple_memory); - newVal = datumCopy(newVal, - pertrans->transtypeByVal, - pertrans->transtypeLen); + if (DatumIsReadWriteExpandedObject(newVal, + false, + pertrans->transtypeLen) && + MemoryContextGetParent(DatumGetEOHP(newVal)->eoh_context) == CurrentMemoryContext) + /* do nothing */ ; + else + newVal = datumCopy(newVal, + pertrans->transtypeByVal, + pertrans->transtypeLen); } if (!pergroupstate->transValueIsNull) - pfree(DatumGetPointer(pergroupstate->transValue)); + { + if (DatumIsReadWriteExpandedObject(pergroupstate->transValue, + false, + pertrans->transtypeLen)) + DeleteExpandedObject(pergroupstate->transValue); + else + pfree(DatumGetPointer(pergroupstate->transValue)); + } } pergroupstate->transValue = newVal; @@ -1347,7 +1381,9 @@ finalize_aggregate(AggState *aggstate, (void *) aggstate, NULL); /* Fill in the transition state value */ - fcinfo.arg[0] = pergroupstate->transValue; + fcinfo.arg[0] = MakeExpandedObjectReadOnly(pergroupstate->transValue, + pergroupstate->transValueIsNull, + pertrans->transtypeLen); fcinfo.argnull[0] = pergroupstate->transValueIsNull; anynull |= pergroupstate->transValueIsNull; @@ -1374,6 +1410,7 @@ finalize_aggregate(AggState *aggstate, } else { + /* Don't need MakeExpandedObjectReadOnly; datumCopy will copy it */ *resultVal = pergroupstate->transValue; *resultIsNull = pergroupstate->transValueIsNull; } @@ -1424,7 +1461,9 @@ finalize_partialaggregate(AggState *aggstate, { FunctionCallInfo fcinfo = &pertrans->serialfn_fcinfo; - fcinfo->arg[0] = pergroupstate->transValue; + fcinfo->arg[0] = MakeExpandedObjectReadOnly(pergroupstate->transValue, + pergroupstate->transValueIsNull, + pertrans->transtypeLen); fcinfo->argnull[0] = pergroupstate->transValueIsNull; *resultVal = FunctionCallInvoke(fcinfo); @@ -1433,6 +1472,7 @@ finalize_partialaggregate(AggState *aggstate, } else { + /* Don't need MakeExpandedObjectReadOnly; datumCopy will copy it */ *resultVal = pergroupstate->transValue; *resultIsNull = pergroupstate->transValueIsNull; } @@ -1525,16 +1565,19 @@ finalize_aggregates(AggState *aggstate, Datum *aggvalues = econtext->ecxt_aggvalues; bool *aggnulls = econtext->ecxt_aggnulls; int aggno; + int transno; Assert(currentSet == 0 || ((Agg *) aggstate->ss.ps.plan)->aggstrategy != AGG_HASHED); aggstate->current_set = currentSet; - for (aggno = 0; aggno < aggstate->numaggs; aggno++) + /* + * If there were any DISTINCT and/or ORDER BY aggregates, sort their + * inputs and run the transition functions. + */ + for (transno = 0; transno < aggstate->numtrans; transno++) { - AggStatePerAgg peragg = &peraggs[aggno]; - int transno = peragg->transno; AggStatePerTrans pertrans = &aggstate->pertrans[transno]; AggStatePerGroup pergroupstate; @@ -1553,6 +1596,18 @@ finalize_aggregates(AggState *aggstate, pertrans, pergroupstate); } + } + + /* + * Run the final functions. + */ + for (aggno = 0; aggno < aggstate->numaggs; aggno++) + { + AggStatePerAgg peragg = &peraggs[aggno]; + int transno = peragg->transno; + AggStatePerGroup pergroupstate; + + pergroupstate = &pergroup[transno + (currentSet * (aggstate->numtrans))]; if (DO_AGGSPLIT_SKIPFINAL(aggstate->aggsplit)) finalize_partialaggregate(aggstate, peragg, pergroupstate, diff --git a/src/backend/executor/nodeGather.c b/src/backend/executor/nodeGather.c index 438d1b24fc..7342aadfbb 100644 --- a/src/backend/executor/nodeGather.c +++ b/src/backend/executor/nodeGather.c @@ -172,6 +172,7 @@ ExecGather(GatherState *node) if (pcxt->nworkers_launched > 0) { node->nreaders = 0; + node->nextreader = 0; node->reader = palloc(pcxt->nworkers_launched * sizeof(TupleQueueReader *)); @@ -334,6 +335,7 @@ gather_readnext(GatherState *gatherstate) CHECK_FOR_INTERRUPTS(); /* Attempt to read a tuple, but don't block if none is available. */ + Assert(gatherstate->nextreader < gatherstate->nreaders); reader = gatherstate->reader[gatherstate->nextreader]; tup = TupleQueueReaderNext(reader, true, &readerdone); diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c index 6375d9bfda..ebfe9278b6 100644 --- a/src/backend/executor/nodeHash.c +++ b/src/backend/executor/nodeHash.c @@ -720,6 +720,9 @@ ExecHashIncreaseNumBatches(HashJoinTable hashtable) /* next tuple in this chunk */ idx += MAXALIGN(hashTupleSize); + + /* allow this loop to be cancellable */ + CHECK_FOR_INTERRUPTS(); } /* we're done with this chunk - free it and proceed to the next one */ @@ -1599,6 +1602,9 @@ ExecHashRemoveNextSkewBucket(HashJoinTable hashtable) } hashTuple = nextHashTuple; + + /* allow this loop to be cancellable */ + CHECK_FOR_INTERRUPTS(); } /* diff --git a/src/backend/executor/nodeHashjoin.c b/src/backend/executor/nodeHashjoin.c index 369e666f88..c4d4c60031 100644 --- a/src/backend/executor/nodeHashjoin.c +++ b/src/backend/executor/nodeHashjoin.c @@ -911,6 +911,13 @@ ExecHashJoinGetSavedTuple(HashJoinState *hjstate, size_t nread; MinimalTuple tuple; + /* + * We check for interrupts here because this is typically taken as an + * alternative code path to an ExecProcNode() call, which would include + * such a check. + */ + CHECK_FOR_INTERRUPTS(); + /* * Since both the hash value and the MinimalTuple length word are uint32, * we can read them both in one BufFileRead() call without any type diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c index 861c60e33b..599d379a87 100644 --- a/src/backend/executor/nodeModifyTable.c +++ b/src/backend/executor/nodeModifyTable.c @@ -194,10 +194,25 @@ ExecCheckHeapTupleVisible(EState *estate, if (!IsolationUsesXactSnapshot()) return; + /* + * We need buffer pin and lock to call HeapTupleSatisfiesVisibility. + * Caller should be holding pin, but not lock. + */ + LockBuffer(buffer, BUFFER_LOCK_SHARE); if (!HeapTupleSatisfiesVisibility(tuple, estate->es_snapshot, buffer)) - ereport(ERROR, - (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), + { + /* + * We should not raise a serialization failure if the conflict is + * against a tuple inserted by our own transaction, even if it's not + * visible to our snapshot. (This would happen, for example, if + * conflicting keys are proposed for insertion in a single command.) + */ + if (!TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetXmin(tuple->t_data))) + ereport(ERROR, + (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), errmsg("could not serialize access due to concurrent update"))); + } + LockBuffer(buffer, BUFFER_LOCK_UNLOCK); } /* diff --git a/src/backend/executor/nodeWindowAgg.c b/src/backend/executor/nodeWindowAgg.c index 96c8527eb3..a8cb99d84d 100644 --- a/src/backend/executor/nodeWindowAgg.c +++ b/src/backend/executor/nodeWindowAgg.c @@ -354,7 +354,7 @@ advance_windowaggregate(WindowAggState *winstate, /* * We must track the number of rows included in transValue, since to - * remove the last input, advance_windowaggregate_base() musn't call the + * remove the last input, advance_windowaggregate_base() mustn't call the * inverse transition function, but simply reset transValue back to its * initial value. */ @@ -362,8 +362,10 @@ advance_windowaggregate(WindowAggState *winstate, /* * If pass-by-ref datatype, must copy the new value into aggcontext and - * pfree the prior transValue. But if transfn returned a pointer to its - * first input, we don't need to do anything. + * free the prior transValue. But if transfn returned a pointer to its + * first input, we don't need to do anything. Also, if transfn returned a + * pointer to a R/W expanded object that is already a child of the + * aggcontext, assume we can adopt that value without copying it. */ if (!peraggstate->transtypeByVal && DatumGetPointer(newVal) != DatumGetPointer(peraggstate->transValue)) @@ -371,12 +373,25 @@ advance_windowaggregate(WindowAggState *winstate, if (!fcinfo->isnull) { MemoryContextSwitchTo(peraggstate->aggcontext); - newVal = datumCopy(newVal, - peraggstate->transtypeByVal, - peraggstate->transtypeLen); + if (DatumIsReadWriteExpandedObject(newVal, + false, + peraggstate->transtypeLen) && + MemoryContextGetParent(DatumGetEOHP(newVal)->eoh_context) == CurrentMemoryContext) + /* do nothing */ ; + else + newVal = datumCopy(newVal, + peraggstate->transtypeByVal, + peraggstate->transtypeLen); } if (!peraggstate->transValueIsNull) - pfree(DatumGetPointer(peraggstate->transValue)); + { + if (DatumIsReadWriteExpandedObject(peraggstate->transValue, + false, + peraggstate->transtypeLen)) + DeleteExpandedObject(peraggstate->transValue); + else + pfree(DatumGetPointer(peraggstate->transValue)); + } } MemoryContextSwitchTo(oldContext); @@ -513,8 +528,10 @@ advance_windowaggregate_base(WindowAggState *winstate, /* * If pass-by-ref datatype, must copy the new value into aggcontext and - * pfree the prior transValue. But if invtransfn returned a pointer to - * its first input, we don't need to do anything. + * free the prior transValue. But if invtransfn returned a pointer to its + * first input, we don't need to do anything. Also, if invtransfn + * returned a pointer to a R/W expanded object that is already a child of + * the aggcontext, assume we can adopt that value without copying it. * * Note: the checks for null values here will never fire, but it seems * best to have this stanza look just like advance_windowaggregate. @@ -525,12 +542,25 @@ advance_windowaggregate_base(WindowAggState *winstate, if (!fcinfo->isnull) { MemoryContextSwitchTo(peraggstate->aggcontext); - newVal = datumCopy(newVal, - peraggstate->transtypeByVal, - peraggstate->transtypeLen); + if (DatumIsReadWriteExpandedObject(newVal, + false, + peraggstate->transtypeLen) && + MemoryContextGetParent(DatumGetEOHP(newVal)->eoh_context) == CurrentMemoryContext) + /* do nothing */ ; + else + newVal = datumCopy(newVal, + peraggstate->transtypeByVal, + peraggstate->transtypeLen); } if (!peraggstate->transValueIsNull) - pfree(DatumGetPointer(peraggstate->transValue)); + { + if (DatumIsReadWriteExpandedObject(peraggstate->transValue, + false, + peraggstate->transtypeLen)) + DeleteExpandedObject(peraggstate->transValue); + else + pfree(DatumGetPointer(peraggstate->transValue)); + } } MemoryContextSwitchTo(oldContext); @@ -568,7 +598,9 @@ finalize_windowaggregate(WindowAggState *winstate, numFinalArgs, perfuncstate->winCollation, (void *) winstate, NULL); - fcinfo.arg[0] = peraggstate->transValue; + fcinfo.arg[0] = MakeExpandedObjectReadOnly(peraggstate->transValue, + peraggstate->transValueIsNull, + peraggstate->transtypeLen); fcinfo.argnull[0] = peraggstate->transValueIsNull; anynull = peraggstate->transValueIsNull; @@ -596,6 +628,7 @@ finalize_windowaggregate(WindowAggState *winstate, } else { + /* Don't need MakeExpandedObjectReadOnly; datumCopy will copy it */ *result = peraggstate->transValue; *isnull = peraggstate->transValueIsNull; } diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c index 127c6cf45e..ba64bcf913 100644 --- a/src/backend/libpq/auth.c +++ b/src/backend/libpq/auth.c @@ -697,6 +697,20 @@ recv_password_packet(Port *port) (errcode(ERRCODE_PROTOCOL_VIOLATION), errmsg("invalid password packet size"))); + /* + * Don't allow an empty password. Libpq treats an empty password the same + * as no password at all, and won't even try to authenticate. But other + * clients might, so allowing it would be confusing. + * + * Note that this only catches an empty password sent by the client in + * plaintext. There's another check in md5_crypt_verify to prevent an + * empty password from being used with MD5 authentication. + */ + if (buf.data[0] == '\0') + ereport(ERROR, + (errcode(ERRCODE_INVALID_PASSWORD), + errmsg("empty password returned by client"))); + /* Do not echo password to logs, for security. */ elog(DEBUG5, "received password packet"); @@ -1820,12 +1834,6 @@ pam_passwd_conv_proc(int num_msg, const struct pam_message ** msg, */ goto fail; } - if (strlen(passwd) == 0) - { - ereport(LOG, - (errmsg("empty password returned by client"))); - goto fail; - } } if ((reply[i].resp = strdup(passwd)) == NULL) goto fail; @@ -2146,16 +2154,11 @@ CheckLDAPAuth(Port *port) if (passwd == NULL) return STATUS_EOF; /* client wouldn't send password */ - if (strlen(passwd) == 0) - { - ereport(LOG, - (errmsg("empty password returned by client"))); - return STATUS_ERROR; - } - if (InitializeLDAPConnection(port, &ldap) == STATUS_ERROR) + { /* Error message already sent */ return STATUS_ERROR; + } if (port->hba->ldapbasedn) { @@ -2355,14 +2358,16 @@ CheckCertAuth(Port *port) */ /* - * RADIUS authentication is described in RFC2865 (and several - * others). + * RADIUS authentication is described in RFC2865 (and several others). */ #define RADIUS_VECTOR_LENGTH 16 #define RADIUS_HEADER_LENGTH 20 #define RADIUS_MAX_PASSWORD_LENGTH 128 +/* Maximum size of a RADIUS packet we will create or accept */ +#define RADIUS_BUFFER_SIZE 1024 + typedef struct { uint8 attribute; @@ -2376,6 +2381,8 @@ typedef struct uint8 id; uint16 length; uint8 vector[RADIUS_VECTOR_LENGTH]; + /* this is a bit longer than strictly necessary: */ + char pad[RADIUS_BUFFER_SIZE - RADIUS_VECTOR_LENGTH]; } radius_packet; /* RADIUS packet types */ @@ -2392,9 +2399,6 @@ typedef struct /* RADIUS service types */ #define RADIUS_AUTHENTICATE_ONLY 8 -/* Maximum size of a RADIUS packet we will create or accept */ -#define RADIUS_BUFFER_SIZE 1024 - /* Seconds to wait - XXX: should be in a config variable! */ #define RADIUS_TIMEOUT 3 @@ -2429,10 +2433,12 @@ CheckRADIUSAuth(Port *port) { char *passwd; char *identifier = "postgresql"; - char radius_buffer[RADIUS_BUFFER_SIZE]; - char receive_buffer[RADIUS_BUFFER_SIZE]; - radius_packet *packet = (radius_packet *) radius_buffer; - radius_packet *receivepacket = (radius_packet *) receive_buffer; + radius_packet radius_send_pack; + radius_packet radius_recv_pack; + radius_packet *packet = &radius_send_pack; + radius_packet *receivepacket = &radius_recv_pack; + char *radius_buffer = (char *) &radius_send_pack; + char *receive_buffer = (char *) &radius_recv_pack; int32 service = htonl(RADIUS_AUTHENTICATE_ONLY); uint8 *cryptvector; int encryptedpasswordlen; @@ -2506,13 +2512,6 @@ CheckRADIUSAuth(Port *port) if (passwd == NULL) return STATUS_EOF; /* client wouldn't send password */ - if (strlen(passwd) == 0) - { - ereport(LOG, - (errmsg("empty password returned by client"))); - return STATUS_ERROR; - } - if (strlen(passwd) > RADIUS_MAX_PASSWORD_LENGTH) { ereport(LOG, diff --git a/src/backend/libpq/be-fsstubs.c b/src/backend/libpq/be-fsstubs.c index 764f602aaa..0112428e7d 100644 --- a/src/backend/libpq/be-fsstubs.c +++ b/src/backend/libpq/be-fsstubs.c @@ -538,8 +538,17 @@ lo_export(PG_FUNCTION_ARGS) */ text_to_cstring_buffer(filename, fnamebuf, sizeof(fnamebuf)); oumask = umask(S_IWGRP | S_IWOTH); - fd = OpenTransientFile(fnamebuf, O_CREAT | O_WRONLY | O_TRUNC | PG_BINARY, - S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); + PG_TRY(); + { + fd = OpenTransientFile(fnamebuf, O_CREAT | O_WRONLY | O_TRUNC | PG_BINARY, + S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); + } + PG_CATCH(); + { + umask(oumask); + PG_RE_THROW(); + } + PG_END_TRY(); umask(oumask); if (fd < 0) ereport(ERROR, @@ -896,6 +905,18 @@ lo_put(PG_FUNCTION_ARGS) CreateFSContext(); loDesc = inv_open(loOid, INV_WRITE, fscxt); + + /* Permission check */ + if (!lo_compat_privileges && + pg_largeobject_aclcheck_snapshot(loDesc->id, + GetUserId(), + ACL_UPDATE, + loDesc->snapshot) != ACLCHECK_OK) + ereport(ERROR, + (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), + errmsg("permission denied for large object %u", + loDesc->id))); + inv_seek(loDesc, offset, SEEK_SET); written = inv_write(loDesc, VARDATA_ANY(str), VARSIZE_ANY_EXHDR(str)); Assert(written == VARSIZE_ANY_EXHDR(str)); diff --git a/src/backend/libpq/be-secure-openssl.c b/src/backend/libpq/be-secure-openssl.c index 3a39cb7dc6..5a174bbe84 100644 --- a/src/backend/libpq/be-secure-openssl.c +++ b/src/backend/libpq/be-secure-openssl.c @@ -270,6 +270,14 @@ be_tls_init(void) SSL_OP_SINGLE_DH_USE | SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3); + /* disallow SSL session tickets */ +#ifdef SSL_OP_NO_TICKET /* added in openssl 0.9.8f */ + SSL_CTX_set_options(SSL_context, SSL_OP_NO_TICKET); +#endif + + /* disallow SSL session caching, too */ + SSL_CTX_set_session_cache_mode(SSL_context, SSL_SESS_CACHE_OFF); + /* set up ephemeral ECDH keys */ initialize_ecdh(); @@ -582,11 +590,13 @@ be_tls_read(Port *port, void *ptr, size_t len, int *waitfor) ereport(COMMERROR, (errcode(ERRCODE_PROTOCOL_VIOLATION), errmsg("SSL error: %s", SSLerrmessage(ecode)))); - /* fall through */ - case SSL_ERROR_ZERO_RETURN: errno = ECONNRESET; n = -1; break; + case SSL_ERROR_ZERO_RETURN: + /* connection was cleanly shut down by peer */ + n = 0; + break; default: ereport(COMMERROR, (errcode(ERRCODE_PROTOCOL_VIOLATION), @@ -642,8 +652,14 @@ be_tls_write(Port *port, void *ptr, size_t len, int *waitfor) ereport(COMMERROR, (errcode(ERRCODE_PROTOCOL_VIOLATION), errmsg("SSL error: %s", SSLerrmessage(ecode)))); - /* fall through */ + errno = ECONNRESET; + n = -1; + break; case SSL_ERROR_ZERO_RETURN: + /* + * the SSL connnection was closed, leave it to the caller + * to ereport it + */ errno = ECONNRESET; n = -1; break; diff --git a/src/backend/libpq/crypt.c b/src/backend/libpq/crypt.c index d79f5a2496..9cd7f787cc 100644 --- a/src/backend/libpq/crypt.c +++ b/src/backend/libpq/crypt.c @@ -74,12 +74,37 @@ md5_crypt_verify(const Port *port, const char *role, char *client_pass, ReleaseSysCache(roleTup); + /* + * Don't allow an empty password. Libpq treats an empty password the same + * as no password at all, and won't even try to authenticate. But other + * clients might, so allowing it would be confusing. + * + * For a plaintext password, we can simply check that it's not an empty + * string. For an encrypted password, check that it does not match the MD5 + * hash of an empty string. + */ if (*shadow_pass == '\0') { *logdetail = psprintf(_("User \"%s\" has an empty password."), role); return STATUS_ERROR; /* empty password */ } + if (isMD5(shadow_pass)) + { + char crypt_empty[MD5_PASSWD_LEN + 1]; + + if (!pg_md5_encrypt("", + port->user_name, + strlen(port->user_name), + crypt_empty)) + return STATUS_ERROR; + if (strcmp(shadow_pass, crypt_empty) == 0) + { + *logdetail = psprintf(_("User \"%s\" has an empty password."), + role); + return STATUS_ERROR; /* empty password */ + } + } /* * Compare with the encrypted or plain password depending on the diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c index d612c11159..8a987f8f1b 100644 --- a/src/backend/libpq/hba.c +++ b/src/backend/libpq/hba.c @@ -87,7 +87,7 @@ static MemoryContext parsed_hba_context = NULL; * * NOTE: the IdentLine structs can contain pre-compiled regular expressions * that live outside the memory context. Before destroying or resetting the - * memory context, they need to be expliticly free'd. + * memory context, they need to be explicitly free'd. */ static List *parsed_ident_lines = NIL; static MemoryContext parsed_ident_context = NULL; diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c index ba42753c06..6a870b8973 100644 --- a/src/backend/libpq/pqcomm.c +++ b/src/backend/libpq/pqcomm.c @@ -96,6 +96,25 @@ #include "utils/guc.h" #include "utils/memutils.h" +/* + * Cope with the various platform-specific ways to spell TCP keepalive socket + * options. This doesn't cover Windows, which as usual does its own thing. + */ +#if defined(TCP_KEEPIDLE) +/* TCP_KEEPIDLE is the name of this option on Linux and *BSD */ +#define PG_TCP_KEEPALIVE_IDLE TCP_KEEPIDLE +#define PG_TCP_KEEPALIVE_IDLE_STR "TCP_KEEPIDLE" +#elif defined(TCP_KEEPALIVE_THRESHOLD) +/* TCP_KEEPALIVE_THRESHOLD is the name of this option on Solaris >= 11 */ +#define PG_TCP_KEEPALIVE_IDLE TCP_KEEPALIVE_THRESHOLD +#define PG_TCP_KEEPALIVE_IDLE_STR "TCP_KEEPALIVE_THRESHOLD" +#elif defined(TCP_KEEPALIVE) && defined(__darwin__) +/* TCP_KEEPALIVE is the name of this option on macOS */ +/* Caution: Solaris has this symbol but it means something different */ +#define PG_TCP_KEEPALIVE_IDLE TCP_KEEPALIVE +#define PG_TCP_KEEPALIVE_IDLE_STR "TCP_KEEPALIVE" +#endif + /* * Configuration options */ @@ -719,7 +738,7 @@ StreamConnection(pgsocket server_fd, Port *port) if (setsockopt(port->sock, IPPROTO_TCP, TCP_NODELAY, (char *) &on, sizeof(on)) < 0) { - elog(LOG, "setsockopt(TCP_NODELAY) failed: %m"); + elog(LOG, "setsockopt(%s) failed: %m", "TCP_NODELAY"); return STATUS_ERROR; } #endif @@ -727,7 +746,7 @@ StreamConnection(pgsocket server_fd, Port *port) if (setsockopt(port->sock, SOL_SOCKET, SO_KEEPALIVE, (char *) &on, sizeof(on)) < 0) { - elog(LOG, "setsockopt(SO_KEEPALIVE) failed: %m"); + elog(LOG, "setsockopt(%s) failed: %m", "SO_KEEPALIVE"); return STATUS_ERROR; } @@ -758,7 +777,7 @@ StreamConnection(pgsocket server_fd, Port *port) if (getsockopt(port->sock, SOL_SOCKET, SO_SNDBUF, (char *) &oldopt, &optlen) < 0) { - elog(LOG, "getsockopt(SO_SNDBUF) failed: %m"); + elog(LOG, "getsockopt(%s) failed: %m", "SO_SNDBUF"); return STATUS_ERROR; } newopt = PQ_SEND_BUFFER_SIZE * 4; @@ -767,7 +786,7 @@ StreamConnection(pgsocket server_fd, Port *port) if (setsockopt(port->sock, SOL_SOCKET, SO_SNDBUF, (char *) &newopt, sizeof(newopt)) < 0) { - elog(LOG, "setsockopt(SO_SNDBUF) failed: %m"); + elog(LOG, "setsockopt(%s) failed: %m", "SO_SNDBUF"); return STATUS_ERROR; } } @@ -1653,7 +1672,7 @@ pq_setkeepaliveswin32(Port *port, int idle, int interval) int pq_getkeepalivesidle(Port *port) { -#if defined(TCP_KEEPIDLE) || defined(TCP_KEEPALIVE) || defined(WIN32) +#if defined(PG_TCP_KEEPALIVE_IDLE) || defined(SIO_KEEPALIVE_VALS) if (port == NULL || IS_AF_UNIX(port->laddr.addr.ss_family)) return 0; @@ -1665,23 +1684,13 @@ pq_getkeepalivesidle(Port *port) #ifndef WIN32 ACCEPT_TYPE_ARG3 size = sizeof(port->default_keepalives_idle); -#ifdef TCP_KEEPIDLE - if (getsockopt(port->sock, IPPROTO_TCP, TCP_KEEPIDLE, - (char *) &port->default_keepalives_idle, - &size) < 0) - { - elog(LOG, "getsockopt(TCP_KEEPIDLE) failed: %m"); - port->default_keepalives_idle = -1; /* don't know */ - } -#else - if (getsockopt(port->sock, IPPROTO_TCP, TCP_KEEPALIVE, + if (getsockopt(port->sock, IPPROTO_TCP, PG_TCP_KEEPALIVE_IDLE, (char *) &port->default_keepalives_idle, &size) < 0) { - elog(LOG, "getsockopt(TCP_KEEPALIVE) failed: %m"); + elog(LOG, "getsockopt(%s) failed: %m", PG_TCP_KEEPALIVE_IDLE_STR); port->default_keepalives_idle = -1; /* don't know */ } -#endif /* TCP_KEEPIDLE */ #else /* WIN32 */ /* We can't get the defaults on Windows, so return "don't know" */ port->default_keepalives_idle = -1; @@ -1700,7 +1709,8 @@ pq_setkeepalivesidle(int idle, Port *port) if (port == NULL || IS_AF_UNIX(port->laddr.addr.ss_family)) return STATUS_OK; -#if defined(TCP_KEEPIDLE) || defined(TCP_KEEPALIVE) || defined(SIO_KEEPALIVE_VALS) +/* check SIO_KEEPALIVE_VALS here, not just WIN32, as some toolchains lack it */ +#if defined(PG_TCP_KEEPALIVE_IDLE) || defined(SIO_KEEPALIVE_VALS) if (idle == port->keepalives_idle) return STATUS_OK; @@ -1719,33 +1729,25 @@ pq_setkeepalivesidle(int idle, Port *port) if (idle == 0) idle = port->default_keepalives_idle; -#ifdef TCP_KEEPIDLE - if (setsockopt(port->sock, IPPROTO_TCP, TCP_KEEPIDLE, + if (setsockopt(port->sock, IPPROTO_TCP, PG_TCP_KEEPALIVE_IDLE, (char *) &idle, sizeof(idle)) < 0) { - elog(LOG, "setsockopt(TCP_KEEPIDLE) failed: %m"); + elog(LOG, "setsockopt(%s) failed: %m", PG_TCP_KEEPALIVE_IDLE_STR); return STATUS_ERROR; } -#else - if (setsockopt(port->sock, IPPROTO_TCP, TCP_KEEPALIVE, - (char *) &idle, sizeof(idle)) < 0) - { - elog(LOG, "setsockopt(TCP_KEEPALIVE) failed: %m"); - return STATUS_ERROR; - } -#endif port->keepalives_idle = idle; #else /* WIN32 */ return pq_setkeepaliveswin32(port, idle, port->keepalives_interval); #endif -#else /* TCP_KEEPIDLE || SIO_KEEPALIVE_VALS */ +#else if (idle != 0) { elog(LOG, "setting the keepalive idle time is not supported"); return STATUS_ERROR; } #endif + return STATUS_OK; } @@ -1768,7 +1770,7 @@ pq_getkeepalivesinterval(Port *port) (char *) &port->default_keepalives_interval, &size) < 0) { - elog(LOG, "getsockopt(TCP_KEEPINTVL) failed: %m"); + elog(LOG, "getsockopt(%s) failed: %m", "TCP_KEEPINTVL"); port->default_keepalives_interval = -1; /* don't know */ } #else @@ -1789,7 +1791,7 @@ pq_setkeepalivesinterval(int interval, Port *port) if (port == NULL || IS_AF_UNIX(port->laddr.addr.ss_family)) return STATUS_OK; -#if defined(TCP_KEEPINTVL) || defined (SIO_KEEPALIVE_VALS) +#if defined(TCP_KEEPINTVL) || defined(SIO_KEEPALIVE_VALS) if (interval == port->keepalives_interval) return STATUS_OK; @@ -1811,7 +1813,7 @@ pq_setkeepalivesinterval(int interval, Port *port) if (setsockopt(port->sock, IPPROTO_TCP, TCP_KEEPINTVL, (char *) &interval, sizeof(interval)) < 0) { - elog(LOG, "setsockopt(TCP_KEEPINTVL) failed: %m"); + elog(LOG, "setsockopt(%s) failed: %m", "TCP_KEEPINTVL"); return STATUS_ERROR; } @@ -1822,7 +1824,7 @@ pq_setkeepalivesinterval(int interval, Port *port) #else if (interval != 0) { - elog(LOG, "setsockopt(TCP_KEEPINTVL) not supported"); + elog(LOG, "setsockopt(%s) not supported", "TCP_KEEPINTVL"); return STATUS_ERROR; } #endif @@ -1848,7 +1850,7 @@ pq_getkeepalivescount(Port *port) (char *) &port->default_keepalives_count, &size) < 0) { - elog(LOG, "getsockopt(TCP_KEEPCNT) failed: %m"); + elog(LOG, "getsockopt(%s) failed: %m", "TCP_KEEPCNT"); port->default_keepalives_count = -1; /* don't know */ } } @@ -1886,7 +1888,7 @@ pq_setkeepalivescount(int count, Port *port) if (setsockopt(port->sock, IPPROTO_TCP, TCP_KEEPCNT, (char *) &count, sizeof(count)) < 0) { - elog(LOG, "setsockopt(TCP_KEEPCNT) failed: %m"); + elog(LOG, "setsockopt(%s) failed: %m", "TCP_KEEPCNT"); return STATUS_ERROR; } @@ -1894,7 +1896,7 @@ pq_setkeepalivescount(int count, Port *port) #else if (count != 0) { - elog(LOG, "setsockopt(TCP_KEEPCNT) not supported"); + elog(LOG, "setsockopt(%s) not supported", "TCP_KEEPCNT"); return STATUS_ERROR; } #endif diff --git a/src/backend/nls.mk b/src/backend/nls.mk index c021ab87da..627492df17 100644 --- a/src/backend/nls.mk +++ b/src/backend/nls.mk @@ -1,6 +1,6 @@ # src/backend/nls.mk CATALOG_NAME = postgres -AVAIL_LANGUAGES = de es fr id it ja pl pt_BR ru zh_CN +AVAIL_LANGUAGES = de es fr id it ja ko pl pt_BR ru zh_CN GETTEXT_FILES = + gettext-files GETTEXT_TRIGGERS = $(BACKEND_COMMON_GETTEXT_TRIGGERS) \ GUC_check_errmsg GUC_check_errdetail GUC_check_errhint \ diff --git a/src/backend/nodes/nodeFuncs.c b/src/backend/nodes/nodeFuncs.c index cd39167351..4fbc8b7f0c 100644 --- a/src/backend/nodes/nodeFuncs.c +++ b/src/backend/nodes/nodeFuncs.c @@ -3609,6 +3609,454 @@ raw_expression_tree_walker(Node *node, return false; } +/* + * raw_expression_tree_mutator --- transform raw parse tree. + * + * This function is implementing slightly different approach for tree update than expression_tree_mutator(). + * Callback is given pointer to pointer to the current node and can update this field instead of returning reference to new node. + * It makes it possible to remember changes and easily revert them without extra traversal of the tree. + * + * This function do not need QTW_DONT_COPY_QUERY flag: it never implicitly copy tree nodes, doing in-place update. + * + * Like raw_expression_tree_walker, there is no special rule about query + * boundaries: we descend to everything that's possibly interesting. + * + * Currently, the node type coverage here extends only to DML statements + * (SELECT/INSERT/UPDATE/DELETE) and nodes that can appear in them, because + * this is used mainly during analysis of CTEs, and only DML statements can + * appear in CTEs. If some other node is visited, iteration is immediately stopped and true is returned. + */ +bool +raw_expression_tree_mutator(Node *node, + bool (*mutator) (), + void *context) +{ + ListCell *temp; + + /* + * The walker has already visited the current node, and so we need only + * recurse into any sub-nodes it has. + */ + if (node == NULL) + return false; + + /* Guard against stack overflow due to overly complex expressions */ + check_stack_depth(); + + switch (nodeTag(node)) + { + case T_SetToDefault: + case T_CurrentOfExpr: + case T_Integer: + case T_Float: + case T_String: + case T_BitString: + case T_Null: + case T_ParamRef: + case T_A_Const: + case T_A_Star: + /* primitive node types with no subnodes */ + break; + case T_Alias: + /* we assume the colnames list isn't interesting */ + break; + case T_RangeVar: + return mutator(&((RangeVar *) node)->alias, context); + case T_GroupingFunc: + return mutator(&((GroupingFunc *) node)->args, context); + case T_SubLink: + { + SubLink *sublink = (SubLink *) node; + + if (mutator(&sublink->testexpr, context)) + return true; + /* we assume the operName is not interesting */ + if (mutator(&sublink->subselect, context)) + return true; + } + break; + case T_CaseExpr: + { + CaseExpr *caseexpr = (CaseExpr *) node; + + if (mutator(&caseexpr->arg, context)) + return true; + /* we assume mutator(& doesn't care about CaseWhens, either */ + foreach(temp, caseexpr->args) + { + CaseWhen *when = (CaseWhen *) lfirst(temp); + + Assert(IsA(when, CaseWhen)); + if (mutator(&when->expr, context)) + return true; + if (mutator(&when->result, context)) + return true; + } + if (mutator(&caseexpr->defresult, context)) + return true; + } + break; + case T_RowExpr: + /* Assume colnames isn't interesting */ + return mutator(&((RowExpr *) node)->args, context); + case T_CoalesceExpr: + return mutator(&((CoalesceExpr *) node)->args, context); + case T_MinMaxExpr: + return mutator(&((MinMaxExpr *) node)->args, context); + case T_XmlExpr: + { + XmlExpr *xexpr = (XmlExpr *) node; + + if (mutator(&xexpr->named_args, context)) + return true; + /* we assume mutator(& doesn't care about arg_names */ + if (mutator(&xexpr->args, context)) + return true; + } + break; + case T_NullTest: + return mutator(&((NullTest *) node)->arg, context); + case T_BooleanTest: + return mutator(&((BooleanTest *) node)->arg, context); + case T_JoinExpr: + { + JoinExpr *join = (JoinExpr *) node; + + if (mutator(&join->larg, context)) + return true; + if (mutator(&join->rarg, context)) + return true; + if (mutator(&join->quals, context)) + return true; + if (mutator(&join->alias, context)) + return true; + /* using list is deemed uninteresting */ + } + break; + case T_IntoClause: + { + IntoClause *into = (IntoClause *) node; + + if (mutator(&into->rel, context)) + return true; + /* colNames, options are deemed uninteresting */ + /* viewQuery should be null in raw parsetree, but check it */ + if (mutator(&into->viewQuery, context)) + return true; + } + break; + case T_List: + foreach(temp, (List *) node) + { + if (mutator(&lfirst(temp), context)) + return true; + } + break; + case T_InsertStmt: + { + InsertStmt *stmt = (InsertStmt *) node; + + if (mutator(&stmt->relation, context)) + return true; + if (mutator(&stmt->cols, context)) + return true; + if (mutator(&stmt->selectStmt, context)) + return true; + if (mutator(&stmt->onConflictClause, context)) + return true; + if (mutator(&stmt->returningList, context)) + return true; + if (mutator(&stmt->withClause, context)) + return true; + } + break; + case T_DeleteStmt: + { + DeleteStmt *stmt = (DeleteStmt *) node; + + if (mutator(&stmt->relation, context)) + return true; + if (mutator(&stmt->usingClause, context)) + return true; + if (mutator(&stmt->whereClause, context)) + return true; + if (mutator(&stmt->returningList, context)) + return true; + if (mutator(&stmt->withClause, context)) + return true; + } + break; + case T_UpdateStmt: + { + UpdateStmt *stmt = (UpdateStmt *) node; + + if (mutator(&stmt->relation, context)) + return true; + if (mutator(&stmt->targetList, context)) + return true; + if (mutator(&stmt->whereClause, context)) + return true; + if (mutator(&stmt->fromClause, context)) + return true; + if (mutator(&stmt->returningList, context)) + return true; + if (mutator(&stmt->withClause, context)) + return true; + } + break; + case T_SelectStmt: + { + SelectStmt *stmt = (SelectStmt *) node; + + if (mutator(&stmt->distinctClause, context)) + return true; + if (mutator(&stmt->intoClause, context)) + return true; + if (mutator(&stmt->targetList, context)) + return true; + if (mutator(&stmt->fromClause, context)) + return true; + if (mutator(&stmt->whereClause, context)) + return true; + if (mutator(&stmt->groupClause, context)) + return true; + if (mutator(&stmt->havingClause, context)) + return true; + if (mutator(&stmt->windowClause, context)) + return true; + if (mutator(&stmt->valuesLists, context)) + return true; + if (mutator(&stmt->sortClause, context)) + return true; + if (mutator(&stmt->limitOffset, context)) + return true; + if (mutator(&stmt->limitCount, context)) + return true; + if (mutator(&stmt->lockingClause, context)) + return true; + if (mutator(&stmt->withClause, context)) + return true; + if (mutator(&stmt->larg, context)) + return true; + if (mutator(&stmt->rarg, context)) + return true; + } + break; + case T_A_Expr: + { + A_Expr *expr = (A_Expr *) node; + + if (mutator(&expr->lexpr, context)) + return true; + if (mutator(&expr->rexpr, context)) + return true; + /* operator name is deemed uninteresting */ + } + break; + case T_BoolExpr: + { + BoolExpr *expr = (BoolExpr *) node; + + if (mutator(&expr->args, context)) + return true; + } + break; + case T_ColumnRef: + /* we assume the fields contain nothing interesting */ + break; + case T_FuncCall: + { + FuncCall *fcall = (FuncCall *) node; + + if (mutator(&fcall->args, context)) + return true; + if (mutator(&fcall->agg_order, context)) + return true; + if (mutator(&fcall->agg_filter, context)) + return true; + if (mutator(&fcall->over, context)) + return true; + /* function name is deemed uninteresting */ + } + break; + case T_NamedArgExpr: + return mutator(&((NamedArgExpr *) node)->arg, context); + case T_A_Indices: + { + A_Indices *indices = (A_Indices *) node; + + if (mutator(&indices->lidx, context)) + return true; + if (mutator(&indices->uidx, context)) + return true; + } + break; + case T_A_Indirection: + { + A_Indirection *indir = (A_Indirection *) node; + + if (mutator(&indir->arg, context)) + return true; + if (mutator(&indir->indirection, context)) + return true; + } + break; + case T_A_ArrayExpr: + return mutator(&((A_ArrayExpr *) node)->elements, context); + case T_ResTarget: + { + ResTarget *rt = (ResTarget *) node; + + if (mutator(&rt->indirection, context)) + return true; + if (mutator(&rt->val, context)) + return true; + } + break; + case T_MultiAssignRef: + return mutator(&((MultiAssignRef *) node)->source, context); + case T_TypeCast: + { + TypeCast *tc = (TypeCast *) node; + + if (mutator(&tc->arg, context)) + return true; + if (mutator(&tc->typeName, context)) + return true; + } + break; + case T_CollateClause: + return mutator(&((CollateClause *) node)->arg, context); + case T_SortBy: + return mutator(&((SortBy *) node)->node, context); + case T_WindowDef: + { + WindowDef *wd = (WindowDef *) node; + + if (mutator(&wd->partitionClause, context)) + return true; + if (mutator(&wd->orderClause, context)) + return true; + if (mutator(&wd->startOffset, context)) + return true; + if (mutator(&wd->endOffset, context)) + return true; + } + break; + case T_RangeSubselect: + { + RangeSubselect *rs = (RangeSubselect *) node; + + if (mutator(&rs->subquery, context)) + return true; + if (mutator(&rs->alias, context)) + return true; + } + break; + case T_RangeFunction: + { + RangeFunction *rf = (RangeFunction *) node; + + if (mutator(&rf->functions, context)) + return true; + if (mutator(&rf->alias, context)) + return true; + if (mutator(&rf->coldeflist, context)) + return true; + } + break; + case T_RangeTableSample: + { + RangeTableSample *rts = (RangeTableSample *) node; + + if (mutator(&rts->relation, context)) + return true; + /* method name is deemed uninteresting */ + if (mutator(&rts->args, context)) + return true; + if (mutator(&rts->repeatable, context)) + return true; + } + break; + case T_TypeName: + { + TypeName *tn = (TypeName *) node; + + if (mutator(&tn->typmods, context)) + return true; + if (mutator(&tn->arrayBounds, context)) + return true; + /* type name itself is deemed uninteresting */ + } + break; + case T_ColumnDef: + { + ColumnDef *coldef = (ColumnDef *) node; + + if (mutator(&coldef->typeName, context)) + return true; + if (mutator(&coldef->raw_default, context)) + return true; + if (mutator(&coldef->collClause, context)) + return true; + /* for now, constraints are ignored */ + } + break; + case T_IndexElem: + { + IndexElem *indelem = (IndexElem *) node; + + if (mutator(&indelem->expr, context)) + return true; + /* collation and opclass names are deemed uninteresting */ + } + break; + case T_GroupingSet: + return mutator(&((GroupingSet *) node)->content, context); + case T_LockingClause: + return mutator(&((LockingClause *) node)->lockedRels, context); + case T_XmlSerialize: + { + XmlSerialize *xs = (XmlSerialize *) node; + + if (mutator(&xs->expr, context)) + return true; + if (mutator(&xs->typeName, context)) + return true; + } + break; + case T_WithClause: + return mutator(&((WithClause *) node)->ctes, context); + case T_InferClause: + { + InferClause *stmt = (InferClause *) node; + + if (mutator(&stmt->indexElems, context)) + return true; + if (mutator(&stmt->whereClause, context)) + return true; + } + break; + case T_OnConflictClause: + { + OnConflictClause *stmt = (OnConflictClause *) node; + + if (mutator(&stmt->infer, context)) + return true; + if (mutator(&stmt->targetList, context)) + return true; + if (mutator(&stmt->whereClause, context)) + return true; + } + break; + case T_CommonTableExpr: + return mutator(&((CommonTableExpr *) node)->ctequery, context); + default: + return true; + } + return false; +} + /* * planstate_tree_walker --- walk plan state trees * diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index 0ccd75b74a..05bce204f3 100644 --- a/src/backend/nodes/outfuncs.c +++ b/src/backend/nodes/outfuncs.c @@ -1795,6 +1795,7 @@ _outGatherPath(StringInfo str, const GatherPath *node) WRITE_NODE_FIELD(subpath); WRITE_BOOL_FIELD(single_copy); + WRITE_INT_FIELD(num_workers); } static void @@ -2504,6 +2505,44 @@ _outSelectStmt(StringInfo str, const SelectStmt *node) WRITE_NODE_FIELD(rarg); } +static void +_outInsertStmt(StringInfo str, const InsertStmt *node) +{ + WRITE_NODE_TYPE("INSERT"); + + WRITE_NODE_FIELD(relation); + WRITE_NODE_FIELD(cols); + WRITE_NODE_FIELD(selectStmt); + WRITE_NODE_FIELD(onConflictClause); + WRITE_NODE_FIELD(returningList); + WRITE_NODE_FIELD(withClause); +} + +static void +_outDeleteStmt(StringInfo str, const DeleteStmt *node) +{ + WRITE_NODE_TYPE("DELETE"); + + WRITE_NODE_FIELD(relation); + WRITE_NODE_FIELD(usingClause); + WRITE_NODE_FIELD(whereClause); + WRITE_NODE_FIELD(returningList); + WRITE_NODE_FIELD(withClause); +} + +static void +_outUpdateStmt(StringInfo str, const UpdateStmt *node) +{ + WRITE_NODE_TYPE("UPDATE"); + + WRITE_NODE_FIELD(relation); + WRITE_NODE_FIELD(targetList); + WRITE_NODE_FIELD(whereClause); + WRITE_NODE_FIELD(fromClause); + WRITE_NODE_FIELD(returningList); + WRITE_NODE_FIELD(withClause); +} + static void _outFuncCall(StringInfo str, const FuncCall *node) { @@ -3732,6 +3771,15 @@ outNode(StringInfo str, const void *obj) case T_SelectStmt: _outSelectStmt(str, obj); break; + case T_UpdateStmt: + _outUpdateStmt(str, obj); + break; + case T_DeleteStmt: + _outDeleteStmt(str, obj); + break; + case T_InsertStmt: + _outInsertStmt(str, obj); + break; case T_ColumnDef: _outColumnDef(str, obj); break; diff --git a/src/backend/optimizer/geqo/geqo_erx.c b/src/backend/optimizer/geqo/geqo_erx.c index 1a43ab7288..133fe32348 100644 --- a/src/backend/optimizer/geqo/geqo_erx.c +++ b/src/backend/optimizer/geqo/geqo_erx.c @@ -111,7 +111,7 @@ gimme_edge_table(PlannerInfo *root, Gene *tour1, Gene *tour2, for (index1 = 0; index1 < num_gene; index1++) { /* - * presume the tour is circular, i.e. 1->2, 2->3, 3->1 this operaton + * presume the tour is circular, i.e. 1->2, 2->3, 3->1 this operation * maps n back to 1 */ @@ -314,7 +314,7 @@ gimme_gene(PlannerInfo *root, Edge edge, Edge *edge_table) /* * give priority to candidates with fewest remaining unused edges; * find out what the minimum number of unused edges is - * (minimum_edges); if there is more than one cadidate with the + * (minimum_edges); if there is more than one candidate with the * minimum number of unused edges keep count of this number * (minimum_count); */ @@ -458,7 +458,7 @@ edge_failure(PlannerInfo *root, Gene *gene, int index, Edge *edge_table, int num if (edge_table[i].unused_edges >= 0) return (Gene) i; - elog(LOG, "no edge found via looking for the last ununsed point"); + elog(LOG, "no edge found via looking for the last unused point"); } diff --git a/src/backend/optimizer/path/allpaths.c b/src/backend/optimizer/path/allpaths.c index cceb27ee76..05f003ca6d 100644 --- a/src/backend/optimizer/path/allpaths.c +++ b/src/backend/optimizer/path/allpaths.c @@ -537,7 +537,7 @@ set_rel_consider_parallel(PlannerInfo *root, RelOptInfo *rel, */ if (rte->tablesample != NULL) { - Oid proparallel = func_parallel(rte->tablesample->tsmhandler); + char proparallel = func_parallel(rte->tablesample->tsmhandler); if (proparallel != PROPARALLEL_SAFE) return; diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c index 4ad1782bbf..fa9b322610 100644 --- a/src/backend/optimizer/path/costsize.c +++ b/src/backend/optimizer/path/costsize.c @@ -161,6 +161,7 @@ static Selectivity get_foreign_key_join_selectivity(PlannerInfo *root, static void set_rel_width(PlannerInfo *root, RelOptInfo *rel); static double relation_byte_size(double tuples, int width); static double page_size(double tuples, int width); +static double get_parallel_divisor(Path *path); /* @@ -238,32 +239,7 @@ cost_seqscan(Path *path, PlannerInfo *root, /* Adjust costing for parallelism, if used. */ if (path->parallel_workers > 0) { - double parallel_divisor = path->parallel_workers; - double leader_contribution; - - /* - * Early experience with parallel query suggests that when there is - * only one worker, the leader often makes a very substantial - * contribution to executing the parallel portion of the plan, but as - * more workers are added, it does less and less, because it's busy - * reading tuples from the workers and doing whatever non-parallel - * post-processing is needed. By the time we reach 4 workers, the - * leader no longer makes a meaningful contribution. Thus, for now, - * estimate that the leader spends 30% of its time servicing each - * worker, and the remainder executing the parallel plan. - */ - leader_contribution = 1.0 - (0.3 * path->parallel_workers); - if (leader_contribution > 0) - parallel_divisor += leader_contribution; - - /* - * In the case of a parallel plan, the row count needs to represent - * the number of tuples processed per worker. Otherwise, higher-level - * plan nodes that appear below the gather will be costed incorrectly, - * because they'll anticipate receiving more rows than any given copy - * will actually get. - */ - path->rows = clamp_row_est(path->rows / parallel_divisor); + double parallel_divisor = get_parallel_divisor(path); /* The CPU cost is divided among all the workers. */ cpu_run_cost /= parallel_divisor; @@ -274,6 +250,12 @@ cost_seqscan(Path *path, PlannerInfo *root, * prefetching. For now, we assume that the disk run cost can't be * amortized at all. */ + + /* + * In the case of a parallel plan, the row count needs to represent + * the number of tuples processed per worker. + */ + path->rows = clamp_row_est(path->rows / parallel_divisor); } path->startup_cost = startup_cost; @@ -2014,6 +1996,15 @@ final_cost_nestloop(PlannerInfo *root, NestPath *path, else path->path.rows = path->path.parent->rows; + /* For partial paths, scale row estimate. */ + if (path->path.parallel_workers > 0) + { + double parallel_divisor = get_parallel_divisor(&path->path); + + path->path.rows = + clamp_row_est(path->path.rows / parallel_divisor); + } + /* * We could include disable_cost in the preliminary estimate, but that * would amount to optimizing for the case where the join method is @@ -2432,6 +2423,15 @@ final_cost_mergejoin(PlannerInfo *root, MergePath *path, else path->jpath.path.rows = path->jpath.path.parent->rows; + /* For partial paths, scale row estimate. */ + if (path->jpath.path.parallel_workers > 0) + { + double parallel_divisor = get_parallel_divisor(&path->jpath.path); + + path->jpath.path.rows = + clamp_row_est(path->jpath.path.rows / parallel_divisor); + } + /* * We could include disable_cost in the preliminary estimate, but that * would amount to optimizing for the case where the join method is @@ -2811,6 +2811,15 @@ final_cost_hashjoin(PlannerInfo *root, HashPath *path, else path->jpath.path.rows = path->jpath.path.parent->rows; + /* For partial paths, scale row estimate. */ + if (path->jpath.path.parallel_workers > 0) + { + double parallel_divisor = get_parallel_divisor(&path->jpath.path); + + path->jpath.path.rows = + clamp_row_est(path->jpath.path.rows / parallel_divisor); + } + /* * We could include disable_cost in the preliminary estimate, but that * would amount to optimizing for the case where the join method is @@ -4104,6 +4113,22 @@ get_foreign_key_join_selectivity(PlannerInfo *root, else continue; + /* + * If we're dealing with a semi/anti join, and the FK's referenced + * relation is on the outside, then knowledge of the FK doesn't help + * us figure out what we need to know (which is the fraction of outer + * rows that have matches). On the other hand, if the referenced rel + * is on the inside, then all outer rows must have matches in the + * referenced table (ignoring nulls). But any restriction or join + * clauses that filter that table will reduce the fraction of matches. + * We can account for restriction clauses, but it's too hard to guess + * how many table rows would get through a join that's inside the RHS. + * Hence, if either case applies, punt and ignore the FK. + */ + if ((jointype == JOIN_SEMI || jointype == JOIN_ANTI) && + (ref_is_outer || bms_membership(inner_relids) != BMS_SINGLETON)) + continue; + /* * Modify the restrictlist by removing clauses that match the FK (and * putting them into removedlist instead). It seems unsafe to modify @@ -4204,11 +4229,8 @@ get_foreign_key_join_selectivity(PlannerInfo *root, * However (1) if there are any strict restriction clauses for the * referencing column(s) elsewhere in the query, derating here would * be double-counting the null fraction, and (2) it's not very clear - * how to combine null fractions for multiple referencing columns. - * - * In the first branch of the logic below, null derating is done - * implicitly by relying on clause_selectivity(); in the other two - * paths, we do nothing for now about correcting for nulls. + * how to combine null fractions for multiple referencing columns. So + * we do nothing for now about correcting for nulls. * * XXX another point here is that if either side of an FK constraint * is an inheritance parent, we estimate as though the constraint @@ -4220,39 +4242,23 @@ get_foreign_key_join_selectivity(PlannerInfo *root, * work, it is uncommon in practice to have an FK referencing a parent * table. So, at least for now, disregard inheritance here. */ - if (ref_is_outer && jointype != JOIN_INNER) + if (jointype == JOIN_SEMI || jointype == JOIN_ANTI) { /* - * When the referenced table is on the outer side of a non-inner - * join, knowing that each inner row has exactly one match is not - * as useful as one could wish, since we really need to know the - * fraction of outer rows with a match. Still, we can avoid the - * folly of multiplying the per-column estimates together. Take - * the smallest per-column selectivity, instead. (This should - * correspond to the FK column with the most nulls.) + * For JOIN_SEMI and JOIN_ANTI, we only get here when the FK's + * referenced table is exactly the inside of the join. The join + * selectivity is defined as the fraction of LHS rows that have + * matches. The FK implies that every LHS row has a match *in the + * referenced table*; but any restriction clauses on it will + * reduce the number of matches. Hence we take the join + * selectivity as equal to the selectivity of the table's + * restriction clauses, which is rows / tuples; but we must guard + * against tuples == 0. */ - Selectivity thisfksel = 1.0; - - foreach(cell, removedlist) - { - RestrictInfo *rinfo = (RestrictInfo *) lfirst(cell); - Selectivity csel; + RelOptInfo *ref_rel = find_base_rel(root, fkinfo->ref_relid); + double ref_tuples = Max(ref_rel->tuples, 1.0); - csel = clause_selectivity(root, (Node *) rinfo, - 0, jointype, sjinfo); - thisfksel = Min(thisfksel, csel); - } - fkselec *= thisfksel; - } - else if (jointype == JOIN_SEMI || jointype == JOIN_ANTI) - { - /* - * For JOIN_SEMI and JOIN_ANTI, the selectivity is defined as the - * fraction of LHS rows that have matches. If the referenced - * table is on the inner side, that means the selectivity is 1.0 - * (modulo nulls, which we're ignoring for now). We already - * covered the other case, so no work here. - */ + fkselec *= ref_rel->rows / ref_tuples; } else { @@ -4765,3 +4771,31 @@ page_size(double tuples, int width) { return ceil(relation_byte_size(tuples, width) / BLCKSZ); } + +/* + * Estimate the fraction of the work that each worker will do given the + * number of workers budgeted for the path. + */ +static double +get_parallel_divisor(Path *path) +{ + double parallel_divisor = path->parallel_workers; + double leader_contribution; + + /* + * Early experience with parallel query suggests that when there is only + * one worker, the leader often makes a very substantial contribution to + * executing the parallel portion of the plan, but as more workers are + * added, it does less and less, because it's busy reading tuples from the + * workers and doing whatever non-parallel post-processing is needed. By + * the time we reach 4 workers, the leader no longer makes a meaningful + * contribution. Thus, for now, estimate that the leader spends 30% of + * its time servicing each worker, and the remainder executing the + * parallel plan. + */ + leader_contribution = 1.0 - (0.3 * path->parallel_workers); + if (leader_contribution > 0) + parallel_divisor += leader_contribution; + + return parallel_divisor; +} diff --git a/src/backend/optimizer/path/joinpath.c b/src/backend/optimizer/path/joinpath.c index cc7384f7e5..1d1a3f1fe7 100644 --- a/src/backend/optimizer/path/joinpath.c +++ b/src/backend/optimizer/path/joinpath.c @@ -1217,8 +1217,12 @@ consider_parallel_nestloop(PlannerInfo *root, JoinType jointype, JoinPathExtraData *extra) { + JoinType save_jointype = jointype; ListCell *lc1; + if (jointype == JOIN_UNIQUE_INNER) + jointype = JOIN_INNER; + foreach(lc1, outerrel->partial_pathlist) { Path *outerpath = (Path *) lfirst(lc1); @@ -1244,18 +1248,19 @@ consider_parallel_nestloop(PlannerInfo *root, continue; /* - * Like match_unsorted_outer, we only consider a single nestloop - * path when the jointype is JOIN_UNIQUE_INNER. But we have to - * scan cheapest_parameterized_paths to find the one we want to - * consider, because cheapest_total_path might not be - * parallel-safe. + * If we're doing JOIN_UNIQUE_INNER, we can only use the inner's + * cheapest_total_path, and we have to unique-ify it. (We might + * be able to relax this to allow other safe, unparameterized + * inner paths, but right now create_unique_path is not on board + * with that.) */ - if (jointype == JOIN_UNIQUE_INNER) + if (save_jointype == JOIN_UNIQUE_INNER) { - if (!bms_is_empty(PATH_REQ_OUTER(innerpath))) + if (innerpath != innerrel->cheapest_total_path) continue; innerpath = (Path *) create_unique_path(root, innerrel, - innerpath, extra->sjinfo); + innerpath, + extra->sjinfo); Assert(innerpath); } @@ -1284,6 +1289,7 @@ hash_inner_and_outer(PlannerInfo *root, JoinType jointype, JoinPathExtraData *extra) { + JoinType save_jointype = jointype; bool isouterjoin = IS_OUTER_JOIN(jointype); List *hashclauses; ListCell *l; @@ -1450,9 +1456,9 @@ hash_inner_and_outer(PlannerInfo *root, * extended rows. Also, the resulting path must not be parameterized. */ if (joinrel->consider_parallel && - jointype != JOIN_UNIQUE_OUTER && - jointype != JOIN_FULL && - jointype != JOIN_RIGHT && + save_jointype != JOIN_UNIQUE_OUTER && + save_jointype != JOIN_FULL && + save_jointype != JOIN_RIGHT && outerrel->partial_pathlist != NIL && bms_is_empty(joinrel->lateral_relids)) { @@ -1466,11 +1472,12 @@ hash_inner_and_outer(PlannerInfo *root, * Normally, given that the joinrel is parallel-safe, the cheapest * total inner path will also be parallel-safe, but if not, we'll * have to search cheapest_parameterized_paths for the cheapest - * unparameterized inner path. + * safe, unparameterized inner path. If doing JOIN_UNIQUE_INNER, + * we can't use any alternative inner path. */ if (cheapest_total_inner->parallel_safe) cheapest_safe_inner = cheapest_total_inner; - else + else if (save_jointype != JOIN_UNIQUE_INNER) { ListCell *lc; @@ -1572,7 +1579,7 @@ select_mergejoin_clauses(PlannerInfo *root, /* * Insist that each side have a non-redundant eclass. This * restriction is needed because various bits of the planner expect - * that each clause in a merge be associatable with some pathkey in a + * that each clause in a merge be associable with some pathkey in a * canonical pathkey list, but redundant eclasses can't appear in * canonical sort orderings. (XXX it might be worth relaxing this, * but not enough time to address it for 8.3.) diff --git a/src/backend/optimizer/plan/analyzejoins.c b/src/backend/optimizer/plan/analyzejoins.c index e28a8dc533..614fd293ed 100644 --- a/src/backend/optimizer/plan/analyzejoins.c +++ b/src/backend/optimizer/plan/analyzejoins.c @@ -617,6 +617,14 @@ rel_is_distinct_for(PlannerInfo *root, RelOptInfo *rel, List *clause_list) else var = (Var *) get_leftop(rinfo->clause); + /* + * We may ignore any RelabelType node above the operand. (There + * won't be more than one, since eval_const_expressions() has been + * applied already.) + */ + if (var && IsA(var, RelabelType)) + var = (Var *) ((RelabelType *) var)->arg; + /* * If inner side isn't a Var referencing a subquery output column, * this clause doesn't help us. diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c index 47158f6468..e230329a45 100644 --- a/src/backend/optimizer/plan/createplan.c +++ b/src/backend/optimizer/plan/createplan.c @@ -761,6 +761,15 @@ use_physical_tlist(PlannerInfo *root, Path *path, int flags) if (rel->reloptkind != RELOPT_BASEREL) return false; + /* + * Also, don't do it to a CustomPath; the premise that we're extracting + * columns from a simple physical tuple is unlikely to hold for those. + * (When it does make sense, the custom path creator can set up the path's + * pathtarget that way.) + */ + if (IsA(path, CustomPath)) + return false; + /* * Can't do it if any system columns or whole-row Vars are requested. * (This could possibly be fixed but would take some fragile assumptions @@ -1395,7 +1404,7 @@ create_gather_plan(PlannerInfo *root, GatherPath *best_path) gather_plan = make_gather(tlist, NIL, - best_path->path.parallel_workers, + best_path->num_workers, best_path->single_copy, subplan); @@ -5629,6 +5638,16 @@ materialize_finished_plan(Plan *subplan) matplan = (Plan *) make_material(subplan); + /* + * XXX horrid kluge: if there are any initPlans attached to the subplan, + * move them up to the Material node, which is now effectively the top + * plan node in its query level. This prevents failure in + * SS_finalize_plan(), which see for comments. We don't bother adjusting + * the subplan's cost estimate for this. + */ + matplan->initPlan = subplan->initPlan; + subplan->initPlan = NIL; + /* Set cost data */ cost_material(&matpath, subplan->startup_cost, @@ -6126,8 +6145,10 @@ make_modifytable(PlannerInfo *root, } /* - * If the target foreign table has any row-level triggers, we can't - * modify the foreign table directly. + * Try to modify the foreign table directly if (1) the FDW provides + * callback functions needed for that, (2) there are no row-level + * triggers on the foreign table, and (3) there are no WITH CHECK + * OPTIONs from parent views. */ direct_modify = false; if (fdwroutine != NULL && @@ -6135,6 +6156,7 @@ make_modifytable(PlannerInfo *root, fdwroutine->BeginDirectModify != NULL && fdwroutine->IterateDirectModify != NULL && fdwroutine->EndDirectModify != NULL && + withCheckOptionLists == NIL && !has_row_triggers(root, rti, operation)) direct_modify = fdwroutine->PlanDirectModify(root, node, rti, i); if (direct_modify) diff --git a/src/backend/optimizer/plan/planagg.c b/src/backend/optimizer/plan/planagg.c index 805aae7ee7..4216fc4a6e 100644 --- a/src/backend/optimizer/plan/planagg.c +++ b/src/backend/optimizer/plan/planagg.c @@ -103,6 +103,14 @@ preprocess_minmax_aggregates(PlannerInfo *root, List *tlist) parse->hasWindowFuncs) return; + /* + * Reject if query contains any CTEs; there's no way to build an indexscan + * on one so we couldn't succeed here. (If the CTEs are unreferenced, + * that's not true, but it doesn't seem worth expending cycles to check.) + */ + if (parse->cteList) + return; + /* * We also restrict the query to reference exactly one table, since join * conditions can't be handled reasonably. (We could perhaps handle a @@ -360,7 +368,6 @@ build_minmax_path(PlannerInfo *root, MinMaxAggInfo *mminfo, subroot->plan_params = NIL; subroot->outer_params = NULL; subroot->init_plans = NIL; - subroot->cte_plan_ids = NIL; subroot->parse = parse = (Query *) copyObject(root->parse); IncrementVarSublevelsUp((Node *) parse, 1, 1); diff --git a/src/backend/optimizer/plan/planmain.c b/src/backend/optimizer/plan/planmain.c index 27234ffa22..6680935b31 100644 --- a/src/backend/optimizer/plan/planmain.c +++ b/src/backend/optimizer/plan/planmain.c @@ -196,7 +196,7 @@ query_planner(PlannerInfo *root, List *tlist, /* * Now distribute "placeholders" to base rels as needed. This has to be * done after join removal because removal could change whether a - * placeholder is evaluatable at a base rel. + * placeholder is evaluable at a base rel. */ add_placeholders_to_base_rels(root); diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index b265628325..23a9e7ba46 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -305,33 +305,16 @@ standard_planner(Query *parse, int cursorOptions, ParamListInfo boundParams) if (cursorOptions & CURSOR_OPT_SCROLL) { if (!ExecSupportsBackwardScan(top_plan)) - { - Plan *sub_plan = top_plan; - - top_plan = materialize_finished_plan(sub_plan); - - /* - * XXX horrid kluge: if there are any initPlans attached to the - * formerly-top plan node, move them up to the Material node. This - * prevents failure in SS_finalize_plan, which see for comments. - * We don't bother adjusting the sub_plan's cost estimate for - * this. - */ - top_plan->initPlan = sub_plan->initPlan; - sub_plan->initPlan = NIL; - } + top_plan = materialize_finished_plan(top_plan); } /* * Optionally add a Gather node for testing purposes, provided this is * actually a safe thing to do. (Note: we assume adding a Material node * above did not change the parallel safety of the plan, so we can still - * rely on best_path->parallel_safe. However, that flag doesn't account - * for initPlans, which render the plan parallel-unsafe.) + * rely on best_path->parallel_safe.) */ - if (force_parallel_mode != FORCE_PARALLEL_OFF && - best_path->parallel_safe && - top_plan->initPlan == NIL) + if (force_parallel_mode != FORCE_PARALLEL_OFF && best_path->parallel_safe) { Gather *gather = makeNode(Gather); @@ -782,10 +765,10 @@ subquery_planner(PlannerGlobal *glob, Query *parse, SS_identify_outer_params(root); /* - * If any initPlans were created in this query level, increment the - * surviving Paths' costs to account for them. They won't actually get - * attached to the plan tree till create_plan() runs, but we want to be - * sure their costs are included now. + * If any initPlans were created in this query level, adjust the surviving + * Paths' costs and parallel-safety flags to account for them. The + * initPlans won't actually get attached to the plan tree till + * create_plan() runs, but we must include their effects now. */ final_rel = fetch_upper_rel(root, UPPERREL_FINAL, NULL); SS_charge_for_initplans(root, final_rel); @@ -3714,11 +3697,11 @@ create_grouping_paths(PlannerInfo *root, &total_groups); /* - * Gather is always unsorted, so we'll need to sort, unless - * there's no GROUP BY clause, in which case there will only be a - * single group. + * Since Gather's output is always unsorted, we'll need to sort, + * unless there's no GROUP BY clause or a degenerate (constant) + * one, in which case there will only be a single group. */ - if (parse->groupClause) + if (root->group_pathkeys) path = (Path *) create_sort_path(root, grouped_rel, path, diff --git a/src/backend/optimizer/plan/setrefs.c b/src/backend/optimizer/plan/setrefs.c index d10a98396c..d91bc3b30d 100644 --- a/src/backend/optimizer/plan/setrefs.c +++ b/src/backend/optimizer/plan/setrefs.c @@ -1823,6 +1823,19 @@ set_dummy_tlist_references(Plan *plan, int rtoffset) Var *oldvar = (Var *) tle->expr; Var *newvar; + /* + * As in search_indexed_tlist_for_non_var(), we prefer to keep Consts + * as Consts, not Vars referencing Consts. Here, there's no speed + * advantage to be had, but it makes EXPLAIN output look cleaner, and + * again it avoids confusing the executor. + */ + if (IsA(oldvar, Const)) + { + /* just reuse the existing TLE node */ + output_targetlist = lappend(output_targetlist, tle); + continue; + } + newvar = makeVar(OUTER_VAR, tle->resno, exprType((Node *) oldvar), @@ -2010,6 +2023,16 @@ search_indexed_tlist_for_non_var(Node *node, { TargetEntry *tle; + /* + * If it's a simple Const, replacing it with a Var is silly, even if there + * happens to be an identical Const below; a Var is more expensive to + * execute than a Const. What's more, replacing it could confuse some + * places in the executor that expect to see simple Consts for, eg, + * dropped columns. + */ + if (IsA(node, Const)) + return NULL; + tle = tlist_member(node, itlist->tlist); if (tle) { diff --git a/src/backend/optimizer/plan/subselect.c b/src/backend/optimizer/plan/subselect.c index 6edefb1138..f196db1429 100644 --- a/src/backend/optimizer/plan/subselect.c +++ b/src/backend/optimizer/plan/subselect.c @@ -2134,11 +2134,13 @@ SS_identify_outer_params(PlannerInfo *root) } /* - * SS_charge_for_initplans - account for cost of initplans in Path costs + * SS_charge_for_initplans - account for initplans in Path costs & parallelism * * If any initPlans have been created in the current query level, they will * get attached to the Plan tree created from whichever Path we select from - * the given rel; so increment all the rel's Paths' costs to account for them. + * the given rel. Increment all that rel's Paths' costs to account for them, + * and make sure the paths get marked as parallel-unsafe, since we can't + * currently transmit initPlans to parallel workers. * * This is separate from SS_attach_initplans because we might conditionally * create more initPlans during create_plan(), depending on which Path we @@ -2170,7 +2172,7 @@ SS_charge_for_initplans(PlannerInfo *root, RelOptInfo *final_rel) } /* - * Now adjust the costs. + * Now adjust the costs and parallel_safe flags. */ foreach(lc, final_rel->pathlist) { @@ -2178,6 +2180,7 @@ SS_charge_for_initplans(PlannerInfo *root, RelOptInfo *final_rel) path->startup_cost += initplan_cost; path->total_cost += initplan_cost; + path->parallel_safe = false; } /* We needn't do set_cheapest() here, caller will do it */ diff --git a/src/backend/optimizer/prep/prepunion.c b/src/backend/optimizer/prep/prepunion.c index b7147832e0..7d0279ec3e 100644 --- a/src/backend/optimizer/prep/prepunion.c +++ b/src/backend/optimizer/prep/prepunion.c @@ -338,6 +338,16 @@ recurse_set_operations(Node *setOp, PlannerInfo *root, * Estimate number of groups if caller wants it. If the subquery used * grouping or aggregation, its output is probably mostly unique * anyway; otherwise do statistical estimation. + * + * XXX you don't really want to know about this: we do the estimation + * using the subquery's original targetlist expressions, not the + * subroot->processed_tlist which might seem more appropriate. The + * reason is that if the subquery is itself a setop, it may return a + * processed_tlist containing "varno 0" Vars generated by + * generate_append_tlist, and those would confuse estimate_num_groups + * mightily. We ought to get rid of the "varno 0" hack, but that + * requires a redesign of the parsetree representation of setops, so + * that there can be an RTE corresponding to each setop's output. */ if (pNumGroups) { @@ -347,7 +357,7 @@ recurse_set_operations(Node *setOp, PlannerInfo *root, *pNumGroups = subpath->rows; else *pNumGroups = estimate_num_groups(subroot, - get_tlist_exprs(subroot->processed_tlist, false), + get_tlist_exprs(subquery->targetList, false), subpath->rows, NULL); } diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c index b284012a77..8cdee705d1 100644 --- a/src/backend/optimizer/util/clauses.c +++ b/src/backend/optimizer/util/clauses.c @@ -646,6 +646,16 @@ get_agg_clause_costs_walker(Node *node, get_agg_clause_costs_context *context) /* Use average width if aggregate definition gave one */ if (aggtransspace > 0) avgwidth = aggtransspace; + else if (aggtransfn == F_ARRAY_APPEND) + { + /* + * If the transition function is array_append(), it'll use an + * expanded array as transvalue, which will occupy at least + * ALLOCSET_SMALL_INITSIZE and possibly more. Use that as the + * estimate for lack of a better idea. + */ + avgwidth = ALLOCSET_SMALL_INITSIZE; + } else { /* diff --git a/src/backend/optimizer/util/joininfo.c b/src/backend/optimizer/util/joininfo.c index 97d5fba391..7059c0a5f7 100644 --- a/src/backend/optimizer/util/joininfo.c +++ b/src/backend/optimizer/util/joininfo.c @@ -24,7 +24,7 @@ * Detect whether there is a joinclause that involves * the two given relations. * - * Note: the joinclause does not have to be evaluatable with only these two + * Note: the joinclause does not have to be evaluable with only these two * relations. This is intentional. For example consider * SELECT * FROM a, b, c WHERE a.x = (b.y + c.z) * If a is much larger than the other tables, it may be worthwhile to diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c index ce7ad545a9..fc22951e68 100644 --- a/src/backend/optimizer/util/pathnode.c +++ b/src/backend/optimizer/util/pathnode.c @@ -1681,16 +1681,17 @@ create_gather_path(PlannerInfo *root, RelOptInfo *rel, Path *subpath, required_outer); pathnode->path.parallel_aware = false; pathnode->path.parallel_safe = false; - pathnode->path.parallel_workers = subpath->parallel_workers; + pathnode->path.parallel_workers = 0; pathnode->path.pathkeys = NIL; /* Gather has unordered result */ pathnode->subpath = subpath; + pathnode->num_workers = subpath->parallel_workers; pathnode->single_copy = false; - if (pathnode->path.parallel_workers == 0) + if (pathnode->num_workers == 0) { - pathnode->path.parallel_workers = 1; pathnode->path.pathkeys = subpath->pathkeys; + pathnode->num_workers = 1; pathnode->single_copy = true; } diff --git a/src/backend/optimizer/util/plancat.c b/src/backend/optimizer/util/plancat.c index 5d18206b91..bb16c59028 100644 --- a/src/backend/optimizer/util/plancat.c +++ b/src/backend/optimizer/util/plancat.c @@ -53,7 +53,7 @@ get_relation_info_hook_type get_relation_info_hook = NULL; static void get_relation_foreign_keys(PlannerInfo *root, RelOptInfo *rel, - Relation relation); + Relation relation, bool inhparent); static bool infer_collation_opclass_match(InferenceElem *elem, Relation idxRel, List *idxExprs); static int32 get_rel_data_width(Relation rel, int32 *attr_widths); @@ -78,6 +78,7 @@ static List *build_index_tlist(PlannerInfo *root, IndexOptInfo *index, * fdwroutine if it's a foreign table, the FDW function pointers * pages number of pages * tuples number of tuples + * rel_parallel_workers user-defined number of parallel workers * * Also, add information about the relation's foreign keys to root->fkey_list. * @@ -408,7 +409,7 @@ get_relation_info(PlannerInfo *root, Oid relationObjectId, bool inhparent, } /* Collect info about relation's foreign keys, if relevant */ - get_relation_foreign_keys(root, rel, relation); + get_relation_foreign_keys(root, rel, relation, inhparent); heap_close(relation, NoLock); @@ -433,7 +434,7 @@ get_relation_info(PlannerInfo *root, Oid relationObjectId, bool inhparent, */ static void get_relation_foreign_keys(PlannerInfo *root, RelOptInfo *rel, - Relation relation) + Relation relation, bool inhparent) { List *rtable = root->parse->rtable; List *cachedfkeys; @@ -448,6 +449,15 @@ get_relation_foreign_keys(PlannerInfo *root, RelOptInfo *rel, list_length(rtable) < 2) return; + /* + * If it's the parent of an inheritance tree, ignore its FKs. We could + * make useful FK-based deductions if we found that all members of the + * inheritance tree have equivalent FK constraints, but detecting that + * would require code that hasn't been written. + */ + if (inhparent) + return; + /* * Extract data about relation's FKs from the relcache. Note that this * list belongs to the relcache and might disappear in a cache flush, so @@ -488,6 +498,9 @@ get_relation_foreign_keys(PlannerInfo *root, RelOptInfo *rel, if (rte->rtekind != RTE_RELATION || rte->relid != cachedfk->confrelid) continue; + /* Ignore if it's an inheritance parent; doesn't really match */ + if (rte->inh) + continue; /* Ignore self-referential FKs; we only care about joins */ if (rti == rel->relid) continue; diff --git a/src/backend/optimizer/util/relnode.c b/src/backend/optimizer/util/relnode.c index 806600ed10..23615f22e3 100644 --- a/src/backend/optimizer/util/relnode.c +++ b/src/backend/optimizer/util/relnode.c @@ -126,7 +126,7 @@ build_simple_rel(PlannerInfo *root, int relid, RelOptKind reloptkind) rel->allvisfrac = 0; rel->subroot = NULL; rel->subplan_params = NIL; - rel->rel_parallel_workers = -1; /* set up in GetRelationInfo */ + rel->rel_parallel_workers = -1; /* set up in get_relation_info */ rel->serverid = InvalidOid; rel->userid = rte->checkAsUser; rel->useridiscurrent = false; diff --git a/src/backend/optimizer/util/restrictinfo.c b/src/backend/optimizer/util/restrictinfo.c index 7fc81e7aa3..87dc3431eb 100644 --- a/src/backend/optimizer/util/restrictinfo.c +++ b/src/backend/optimizer/util/restrictinfo.c @@ -550,7 +550,7 @@ join_clause_is_movable_into(RestrictInfo *rinfo, Relids currentrelids, Relids current_and_outer) { - /* Clause must be evaluatable given available context */ + /* Clause must be evaluable given available context */ if (!bms_is_subset(rinfo->clause_relids, current_and_outer)) return false; diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c index eac86cce3e..b46fadc27d 100644 --- a/src/backend/parser/analyze.c +++ b/src/backend/parser/analyze.c @@ -986,11 +986,10 @@ transformOnConflictClause(ParseState *pstate, exclRelIndex = list_length(pstate->p_rtable); /* - * Build a targetlist for the EXCLUDED pseudo relation. Have to be - * careful to use resnos that correspond to attnos of the underlying - * relation. + * Build a targetlist representing the columns of the EXCLUDED pseudo + * relation. Have to be careful to use resnos that correspond to + * attnos of the underlying relation. */ - Assert(pstate->p_next_resno == 1); for (attno = 0; attno < targetrel->rd_rel->relnatts; attno++) { Form_pg_attribute attr = targetrel->rd_att->attrs[attno]; @@ -1011,14 +1010,11 @@ transformOnConflictClause(ParseState *pstate, attr->atttypid, attr->atttypmod, attr->attcollation, 0); - var->location = -1; - - name = NameStr(attr->attname); + name = pstrdup(NameStr(attr->attname)); } - Assert(pstate->p_next_resno == attno + 1); te = makeTargetEntry((Expr *) var, - pstate->p_next_resno++, + attno + 1, name, false); @@ -1027,15 +1023,16 @@ transformOnConflictClause(ParseState *pstate, } /* - * Additionally add a whole row tlist entry for EXCLUDED. That's - * really only needed for ruleutils' benefit, which expects to find - * corresponding entries in child tlists. Alternatively we could do - * this only when required, but that doesn't seem worth the trouble. + * Add a whole-row-Var entry to support references to "EXCLUDED.*". + * Like the other entries in exclRelTlist, its resno must match the + * Var's varattno, else the wrong things happen while resolving + * references in setrefs.c. This is against normal conventions for + * targetlists, but it's okay since we don't use this as a real tlist. */ var = makeVar(exclRelIndex, InvalidAttrNumber, - RelationGetRelid(targetrel), + targetrel->rd_rel->reltype, -1, InvalidOid, 0); - te = makeTargetEntry((Expr *) var, 0, NULL, true); + te = makeTargetEntry((Expr *) var, InvalidAttrNumber, NULL, true); exclRelTlist = lappend(exclRelTlist, te); /* diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index 6f43b85eda..9e170f7536 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -1111,12 +1111,20 @@ AlterUserStmt: AlterUserSetStmt: - ALTER USER RoleSpec SetResetClause + ALTER USER RoleSpec opt_in_database SetResetClause { AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); n->role = $3; - n->database = NULL; - n->setstmt = $4; + n->database = $4; + n->setstmt = $5; + $$ = (Node *)n; + } + | ALTER USER ALL opt_in_database SetResetClause + { + AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); + n->role = NULL; + n->database = $4; + n->setstmt = $5; $$ = (Node *)n; } ; @@ -3688,6 +3696,7 @@ opt_by: BY {} NumericOnly: FCONST { $$ = makeFloat($1); } + | '+' FCONST { $$ = makeFloat($2); } | '-' FCONST { $$ = makeFloat($2); @@ -10682,7 +10691,7 @@ table_ref: relation_expr opt_alias_clause n->lateral = true; n->subquery = $2; n->alias = $3; - /* same coment as above */ + /* same comment as above */ if ($3 == NULL) { if (IsA($2, SelectStmt) && @@ -12096,7 +12105,10 @@ c_expr: columnref { $$ = $1; } * AEXPR_PAREN nodes wrapping all explicitly * parenthesized subexpressions; this prevents bogus * warnings from being issued when the ordering has - * been forced by parentheses. + * been forced by parentheses. Take care that an + * AEXPR_PAREN node has the same exprLocation as its + * child, so as not to cause surprising changes in + * error cursor positioning. * * In principle we should not be relying on a GUC to * decide whether to insert AEXPR_PAREN nodes. @@ -12105,7 +12117,8 @@ c_expr: columnref { $$ = $1; } * we'd just as soon not waste cycles on dummy parse * nodes if we don't have to. */ - $$ = (Node *) makeA_Expr(AEXPR_PAREN, NIL, $2, NULL, @1); + $$ = (Node *) makeA_Expr(AEXPR_PAREN, NIL, $2, NULL, + exprLocation($2)); } else $$ = $2; diff --git a/src/backend/parser/parse_agg.c b/src/backend/parser/parse_agg.c index 481a4ddc48..f7975abe09 100644 --- a/src/backend/parser/parse_agg.c +++ b/src/backend/parser/parse_agg.c @@ -700,7 +700,7 @@ check_agg_arguments_walker(Node *node, /* Continue and descend into subtree */ } /* We can throw error on sight for a window function */ - if (IsA(node, WindowFunc)) + if (IsA(node, WindowFunc) && context->sublevels_up == 0) ereport(ERROR, (errcode(ERRCODE_GROUPING_ERROR), errmsg("aggregate function calls cannot contain window function calls"), diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c index 1e3ecbc51e..c51fd81b63 100644 --- a/src/backend/parser/parse_relation.c +++ b/src/backend/parser/parse_relation.c @@ -52,6 +52,7 @@ static void expandTupleDesc(TupleDesc tupdesc, Alias *eref, int rtindex, int sublevels_up, int location, bool include_dropped, List **colnames, List **colvars); +static int32 *getValuesTypmods(RangeTblEntry *rte); static int specialAttNum(const char *attname); static bool isQueryUsingTempRelation_walker(Node *node, void *context); @@ -2157,9 +2158,22 @@ expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up, { /* Values RTE */ ListCell *aliasp_item = list_head(rte->eref->colnames); + int32 *coltypmods; ListCell *lcv; ListCell *lcc; + /* + * It's okay to extract column types from the expressions in + * the first row, since all rows will have been coerced to the + * same types. Their typmods might not be the same though, so + * we potentially need to examine all rows to compute those. + * Column collations are pre-computed in values_collations. + */ + if (colvars) + coltypmods = getValuesTypmods(rte); + else + coltypmods = NULL; + varattno = 0; forboth(lcv, (List *) linitial(rte->values_lists), lcc, rte->values_collations) @@ -2184,13 +2198,15 @@ expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up, varnode = makeVar(rtindex, varattno, exprType(col), - exprTypmod(col), + coltypmods[varattno - 1], colcollation, sublevels_up); varnode->location = location; *colvars = lappend(*colvars, varnode); } } + if (coltypmods) + pfree(coltypmods); } break; case RTE_JOIN: @@ -2296,6 +2312,8 @@ expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up, varnode = makeVar(rtindex, varattno, coltype, coltypmod, colcoll, sublevels_up); + varnode->location = location; + *colvars = lappend(*colvars, varnode); } } @@ -2412,6 +2430,74 @@ expandTupleDesc(TupleDesc tupdesc, Alias *eref, int count, int offset, } } +/* + * getValuesTypmods -- expandRTE subroutine + * + * Identify per-column typmods for the given VALUES RTE. Returns a + * palloc'd array. + */ +static int32 * +getValuesTypmods(RangeTblEntry *rte) +{ + int32 *coltypmods; + List *firstrow; + int ncolumns, + nvalid, + i; + ListCell *lc; + + Assert(rte->values_lists != NIL); + firstrow = (List *) linitial(rte->values_lists); + ncolumns = list_length(firstrow); + coltypmods = (int32 *) palloc(ncolumns * sizeof(int32)); + nvalid = 0; + + /* Collect the typmods from the first VALUES row */ + i = 0; + foreach(lc, firstrow) + { + Node *col = (Node *) lfirst(lc); + + coltypmods[i] = exprTypmod(col); + if (coltypmods[i] >= 0) + nvalid++; + i++; + } + + /* + * Scan remaining rows; as soon as we have a non-matching typmod for a + * column, reset that typmod to -1. We can bail out early if all typmods + * become -1. + */ + if (nvalid > 0) + { + for_each_cell(lc, lnext(list_head(rte->values_lists))) + { + List *thisrow = (List *) lfirst(lc); + ListCell *lc2; + + Assert(list_length(thisrow) == ncolumns); + i = 0; + foreach(lc2, thisrow) + { + Node *col = (Node *) lfirst(lc2); + + if (coltypmods[i] >= 0 && coltypmods[i] != exprTypmod(col)) + { + coltypmods[i] = -1; + nvalid--; + } + i++; + } + + if (nvalid <= 0) + break; + } + } + + return coltypmods; +} + /* * expandRelAttrs - * Workhorse for "*" expansion: produce a list of targetentries @@ -2656,18 +2742,25 @@ get_rte_attribute_type(RangeTblEntry *rte, AttrNumber attnum, break; case RTE_VALUES: { - /* Values RTE --- get type info from first sublist */ - /* collation is stored separately, though */ + /* + * Values RTE --- we can get type info from first sublist, but + * typmod may require scanning all sublists, and collation is + * stored separately. Using getValuesTypmods() is overkill, + * but this path is taken so seldom for VALUES that it's not + * worth writing extra code. + */ List *collist = (List *) linitial(rte->values_lists); Node *col; + int32 *coltypmods = getValuesTypmods(rte); if (attnum < 1 || attnum > list_length(collist)) elog(ERROR, "values list %s does not have attribute %d", rte->eref->aliasname, attnum); col = (Node *) list_nth(collist, attnum - 1); *vartype = exprType(col); - *vartypmod = exprTypmod(col); + *vartypmod = coltypmods[attnum - 1]; *varcollid = list_nth_oid(rte->values_collations, attnum - 1); + pfree(coltypmods); } break; case RTE_JOIN: diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c index fc93063ed0..6ccc14af5e 100644 --- a/src/backend/parser/parse_target.c +++ b/src/backend/parser/parse_target.c @@ -122,11 +122,15 @@ transformTargetList(ParseState *pstate, List *targetlist, ParseExprKind exprKind) { List *p_target = NIL; + bool expand_star; ListCell *o_target; /* Shouldn't have any leftover multiassign items at start */ Assert(pstate->p_multiassign_exprs == NIL); + /* Expand "something.*" in SELECT and RETURNING, but not UPDATE */ + expand_star = (exprKind != EXPR_KIND_UPDATE_SOURCE); + foreach(o_target, targetlist) { ResTarget *res = (ResTarget *) lfirst(o_target); @@ -136,35 +140,42 @@ transformTargetList(ParseState *pstate, List *targetlist, * "something", the star could appear as the last field in ColumnRef, * or as the last indirection item in A_Indirection. */ - if (IsA(res->val, ColumnRef)) + if (expand_star) { - ColumnRef *cref = (ColumnRef *) res->val; - - if (IsA(llast(cref->fields), A_Star)) + if (IsA(res->val, ColumnRef)) { - /* It is something.*, expand into multiple items */ - p_target = list_concat(p_target, - ExpandColumnRefStar(pstate, cref, - true)); - continue; - } - } - else if (IsA(res->val, A_Indirection)) - { - A_Indirection *ind = (A_Indirection *) res->val; + ColumnRef *cref = (ColumnRef *) res->val; - if (IsA(llast(ind->indirection), A_Star)) + if (IsA(llast(cref->fields), A_Star)) + { + /* It is something.*, expand into multiple items */ + p_target = list_concat(p_target, + ExpandColumnRefStar(pstate, + cref, + true)); + continue; + } + } + else if (IsA(res->val, A_Indirection)) { - /* It is something.*, expand into multiple items */ - p_target = list_concat(p_target, - ExpandIndirectionStar(pstate, ind, - true, exprKind)); - continue; + A_Indirection *ind = (A_Indirection *) res->val; + + if (IsA(llast(ind->indirection), A_Star)) + { + /* It is something.*, expand into multiple items */ + p_target = list_concat(p_target, + ExpandIndirectionStar(pstate, + ind, + true, + exprKind)); + continue; + } } } /* - * Not "something.*", so transform as a single expression + * Not "something.*", or we want to treat that as a plain whole-row + * variable, so transform as a single expression */ p_target = lappend(p_target, transformTargetEntry(pstate, diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c index e98fad051e..e4dc508682 100644 --- a/src/backend/parser/parse_utilcmd.c +++ b/src/backend/parser/parse_utilcmd.c @@ -59,7 +59,6 @@ #include "rewrite/rewriteManip.h" #include "utils/acl.h" #include "utils/builtins.h" -#include "utils/guc.h" #include "utils/lsyscache.h" #include "utils/rel.h" #include "utils/syscache.h" @@ -157,6 +156,7 @@ transformCreateStmt(CreateStmt *stmt, const char *queryString) Oid existing_relid; ParseCallbackState pcbstate; bool like_found = false; + bool is_foreign_table = IsA(stmt, CreateForeignTableStmt); /* * We must not scribble on the passed-in CreateStmt, so copy it. (This is @@ -249,10 +249,7 @@ transformCreateStmt(CreateStmt *stmt, const char *queryString) /* * Run through each primary element in the table creation clause. Separate - * column defs from constraints, and do preliminary analysis. We have to - * process column-defining clauses first because it can control the - * presence of columns which are referenced by columns referenced by - * constraints. + * column defs from constraints, and do preliminary analysis. */ foreach(elements, stmt->tableElts) { @@ -264,17 +261,13 @@ transformCreateStmt(CreateStmt *stmt, const char *queryString) transformColumnDefinition(&cxt, (ColumnDef *) element); break; - case T_TableLikeClause: - if (!like_found) - { - cxt.hasoids = false; - like_found = true; - } - transformTableLikeClause(&cxt, (TableLikeClause *) element); + case T_Constraint: + transformTableConstraint(&cxt, (Constraint *) element); break; - case T_Constraint: - /* process later */ + case T_TableLikeClause: + like_found = true; + transformTableLikeClause(&cxt, (TableLikeClause *) element); break; default: @@ -284,26 +277,19 @@ transformCreateStmt(CreateStmt *stmt, const char *queryString) } } - if (like_found) - { - /* - * To match INHERITS, the existence of any LIKE table with OIDs causes - * the new table to have oids. For the same reason, WITH/WITHOUT OIDs - * is also ignored with LIKE. We prepend because the first oid option - * list entry is honored. Our prepended WITHOUT OIDS clause will be - * overridden if an inherited table has oids. - */ + /* + * If we had any LIKE tables, they may require creation of an OID column + * even though the command's own WITH clause didn't ask for one (or, + * perhaps, even specifically rejected having one). Insert a WITH option + * to ensure that happens. We prepend to the list because the first oid + * option will be honored, and we want to override anything already there. + * (But note that DefineRelation will override this again to add an OID + * column if one appears in an inheritance parent table.) + */ + if (like_found && cxt.hasoids) stmt->options = lcons(makeDefElem("oids", - (Node *) makeInteger(cxt.hasoids)), stmt->options); - } - - foreach(elements, stmt->tableElts) - { - Node *element = lfirst(elements); - - if (nodeTag(element) == T_Constraint) - transformTableConstraint(&cxt, (Constraint *) element); - } + (Node *) makeInteger(true)), + stmt->options); /* * transformIndexConstraints wants cxt.alist to contain only index @@ -327,7 +313,7 @@ transformCreateStmt(CreateStmt *stmt, const char *queryString) /* * Postprocess check constraints. */ - transformCheckConstraints(&cxt, true); + transformCheckConstraints(&cxt, !is_foreign_table ? true : false); /* * Output results. @@ -902,7 +888,7 @@ transformTableLikeClause(CreateStmtContext *cxt, TableLikeClause *table_like_cla } /* We use oids if at least one LIKE'ed table has oids. */ - cxt->hasoids = cxt->hasoids || relation->rd_rel->relhasoids; + cxt->hasoids |= relation->rd_rel->relhasoids; /* * Copy CHECK constraints if requested, being careful to adjust attribute @@ -1950,9 +1936,9 @@ transformCheckConstraints(CreateStmtContext *cxt, bool skipValidation) return; /* - * If creating a new table, we can safely skip validation of check - * constraints, and nonetheless mark them valid. (This will override any - * user-supplied NOT VALID flag.) + * If creating a new table (but not a foreign table), we can safely skip + * validation of check constraints, and nonetheless mark them valid. + * (This will override any user-supplied NOT VALID flag.) */ if (skipValidation) { diff --git a/src/backend/parser/scan.l b/src/backend/parser/scan.l index 998349d742..acd9269805 100644 --- a/src/backend/parser/scan.l +++ b/src/backend/parser/scan.l @@ -1435,6 +1435,13 @@ litbuf_udeescape(unsigned char escape, core_yyscan_t yyscanner) } } + /* unfinished surrogate pair? */ + if (pair_first) + { + ADVANCE_YYLLOC(in - litbuf + 3); /* 3 for U&" */ + yyerror("invalid Unicode surrogate pair"); + } + *out = '\0'; /* diff --git a/src/backend/po/de.po b/src/backend/po/de.po index 599f793c7c..ebaf875c91 100644 --- a/src/backend/po/de.po +++ b/src/backend/po/de.po @@ -1,5 +1,5 @@ # German message translation file for PostgreSQL server -# Peter Eisentraut , 2001 - 2016. +# Peter Eisentraut , 2001 - 2017. # # Use these quotes: »%s« # @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-23 18:08+0000\n" -"PO-Revision-Date: 2016-09-20 11:52-0400\n" +"POT-Creation-Date: 2017-08-23 18:48+0000\n" +"PO-Revision-Date: 2017-08-27 11:58-0400\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" "Language: de\n" @@ -25,8 +25,8 @@ msgstr "" msgid "not recorded" msgstr "nicht aufgezeichnet" -#: ../common/controldata_utils.c:52 commands/copy.c:2794 -#: commands/extension.c:3120 utils/adt/genfile.c:134 +#: ../common/controldata_utils.c:52 commands/copy.c:2834 +#: commands/extension.c:3144 utils/adt/genfile.c:134 #, c-format msgid "could not open file \"%s\" for reading: %m" msgstr "konnte Datei »%s« nicht zum Lesen öffnen: %m" @@ -37,13 +37,13 @@ msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: konnte Datei »%s« nicht zum Lesen öffnen: %s\n" #: ../common/controldata_utils.c:66 access/transam/timeline.c:346 -#: access/transam/xlog.c:3191 access/transam/xlog.c:10348 -#: access/transam/xlog.c:10361 access/transam/xlog.c:10724 -#: access/transam/xlog.c:10767 access/transam/xlog.c:10806 -#: access/transam/xlog.c:10849 access/transam/xlogfuncs.c:665 -#: access/transam/xlogfuncs.c:684 commands/extension.c:3130 -#: replication/logical/origin.c:665 replication/logical/origin.c:695 -#: replication/logical/reorderbuffer.c:3093 replication/walsender.c:499 +#: access/transam/xlog.c:3226 access/transam/xlog.c:10453 +#: access/transam/xlog.c:10466 access/transam/xlog.c:10861 +#: access/transam/xlog.c:10904 access/transam/xlog.c:10943 +#: access/transam/xlog.c:10986 access/transam/xlogfuncs.c:660 +#: access/transam/xlogfuncs.c:679 commands/extension.c:3154 +#: replication/logical/origin.c:668 replication/logical/origin.c:698 +#: replication/logical/reorderbuffer.c:3100 replication/walsender.c:504 #: storage/file/copydir.c:176 utils/adt/genfile.c:151 #, c-format msgid "could not read file \"%s\": %m" @@ -153,27 +153,28 @@ msgid "could not close directory \"%s\": %s\n" msgstr "konnte Verzeichnis »%s« nicht schließen: %s\n" #: ../common/psprintf.c:179 ../port/path.c:630 ../port/path.c:668 -#: ../port/path.c:685 access/transam/twophase.c:1261 -#: access/transam/xlog.c:6079 lib/stringinfo.c:258 libpq/auth.c:847 -#: libpq/auth.c:1210 libpq/auth.c:1278 libpq/auth.c:1794 -#: postmaster/bgworker.c:289 postmaster/bgworker.c:797 -#: postmaster/postmaster.c:2334 postmaster/postmaster.c:2365 -#: postmaster/postmaster.c:3898 postmaster/postmaster.c:4588 -#: postmaster/postmaster.c:4656 postmaster/postmaster.c:5359 -#: postmaster/postmaster.c:5623 +#: ../port/path.c:685 access/transam/twophase.c:1262 +#: access/transam/xlog.c:6114 lib/stringinfo.c:258 libpq/auth.c:864 +#: libpq/auth.c:1227 libpq/auth.c:1295 libpq/auth.c:1811 +#: postmaster/bgworker.c:310 postmaster/bgworker.c:813 +#: postmaster/postmaster.c:2357 postmaster/postmaster.c:2388 +#: postmaster/postmaster.c:3922 postmaster/postmaster.c:4620 +#: postmaster/postmaster.c:4695 postmaster/postmaster.c:5368 +#: postmaster/postmaster.c:5690 #: replication/libpqwalreceiver/libpqwalreceiver.c:143 -#: replication/logical/logical.c:168 storage/buffer/localbuf.c:436 -#: storage/file/fd.c:729 storage/file/fd.c:1126 storage/file/fd.c:1244 -#: storage/file/fd.c:1916 storage/ipc/procarray.c:1060 -#: storage/ipc/procarray.c:1546 storage/ipc/procarray.c:1553 -#: storage/ipc/procarray.c:1967 storage/ipc/procarray.c:2570 +#: replication/logical/logical.c:169 storage/buffer/localbuf.c:436 +#: storage/file/fd.c:736 storage/file/fd.c:1164 storage/file/fd.c:1282 +#: storage/file/fd.c:1993 storage/ipc/procarray.c:1062 +#: storage/ipc/procarray.c:1548 storage/ipc/procarray.c:1555 +#: storage/ipc/procarray.c:1969 storage/ipc/procarray.c:2580 #: utils/adt/formatting.c:1522 utils/adt/formatting.c:1642 -#: utils/adt/formatting.c:1763 utils/adt/regexp.c:219 utils/adt/varlena.c:4440 +#: utils/adt/formatting.c:1763 utils/adt/pg_locale.c:463 +#: utils/adt/pg_locale.c:647 utils/adt/regexp.c:219 utils/adt/varlena.c:4440 #: utils/adt/varlena.c:4461 utils/fmgr/dfmgr.c:216 utils/hash/dynahash.c:429 -#: utils/hash/dynahash.c:535 utils/hash/dynahash.c:1047 utils/mb/mbutils.c:376 -#: utils/mb/mbutils.c:709 utils/misc/guc.c:3890 utils/misc/guc.c:3906 -#: utils/misc/guc.c:3919 utils/misc/guc.c:6865 utils/misc/tzparser.c:468 -#: utils/mmgr/aset.c:509 utils/mmgr/mcxt.c:767 utils/mmgr/mcxt.c:802 +#: utils/hash/dynahash.c:535 utils/hash/dynahash.c:1046 utils/mb/mbutils.c:376 +#: utils/mb/mbutils.c:709 utils/misc/guc.c:3888 utils/misc/guc.c:3904 +#: utils/misc/guc.c:3917 utils/misc/guc.c:6863 utils/misc/tzparser.c:468 +#: utils/mmgr/aset.c:510 utils/mmgr/mcxt.c:767 utils/mmgr/mcxt.c:802 #: utils/mmgr/mcxt.c:839 utils/mmgr/mcxt.c:876 utils/mmgr/mcxt.c:910 #: utils/mmgr/mcxt.c:939 utils/mmgr/mcxt.c:973 utils/mmgr/mcxt.c:1055 #: utils/mmgr/mcxt.c:1089 utils/mmgr/mcxt.c:1138 @@ -241,7 +242,7 @@ msgstr "konnte Datei oder Verzeichnis »%s« nicht entfernen: %s\n" msgid "could not look up effective user ID %ld: %s" msgstr "konnte effektive Benutzer-ID %ld nicht nachschlagen: %s" -#: ../common/username.c:47 libpq/auth.c:1741 +#: ../common/username.c:47 libpq/auth.c:1758 msgid "user does not exist" msgstr "Benutzer existiert nicht" @@ -291,7 +292,7 @@ msgid "could not determine encoding for codeset \"%s\"" msgstr "konnte Kodierung für Codeset »%s« nicht bestimmen" #: ../port/chklocale.c:294 ../port/chklocale.c:423 -#: postmaster/postmaster.c:4888 +#: postmaster/postmaster.c:4899 #, c-format msgid "Please report this to ." msgstr "Bitte berichten Sie das an ." @@ -379,61 +380,76 @@ msgstr "»%s« ist kein BRIN-Index" msgid "could not open parent table of index %s" msgstr "konnte Basistabelle von Index %s nicht öffnen" -#: access/brin/brin_pageops.c:76 access/brin/brin_pageops.c:362 -#: access/brin/brin_pageops.c:828 +#: access/brin/brin_pageops.c:76 access/brin/brin_pageops.c:360 +#: access/brin/brin_pageops.c:824 access/gin/ginentrypage.c:109 +#: access/gist/gist.c:1337 access/nbtree/nbtinsert.c:576 +#: access/nbtree/nbtsort.c:488 access/spgist/spgdoinsert.c:1907 #, c-format -msgid "index row size %lu exceeds maximum %lu for index \"%s\"" -msgstr "Größe %lu der Indexzeile überschreitet Maximum %lu für Index »%s«" +msgid "index row size %zu exceeds maximum %zu for index \"%s\"" +msgstr "Größe %zu der Indexzeile überschreitet Maximum %zu für Index »%s«" #: access/brin/brin_revmap.c:459 #, c-format msgid "unexpected page type 0x%04X in BRIN index \"%s\" block %u" msgstr "unerwarteter Seitentyp 0x%04X in BRIN-Index »%s« Block %u" -#: access/brin/brin_validate.c:115 +#: access/brin/brin_validate.c:115 access/gin/ginvalidate.c:148 +#: access/gist/gistvalidate.c:145 access/hash/hashvalidate.c:130 +#: access/nbtree/nbtvalidate.c:100 access/spgist/spgvalidate.c:115 #, c-format -msgid "brin operator family \"%s\" contains function %s with invalid support number %d" -msgstr "BRIN-Operatorfamilie »%s« enthält Funktion %s mit ungültiger Support-Nummer %d" +msgid "operator family \"%s\" of access method %s contains function %s with invalid support number %d" +msgstr "Operatorfamilie »%s« für Zugriffsmethode %s enthält Funktion %s mit ungültiger Support-Nummer %d" -#: access/brin/brin_validate.c:131 +#: access/brin/brin_validate.c:131 access/gin/ginvalidate.c:160 +#: access/gist/gistvalidate.c:157 access/hash/hashvalidate.c:113 +#: access/nbtree/nbtvalidate.c:112 access/spgist/spgvalidate.c:127 #, c-format -msgid "brin operator family \"%s\" contains function %s with wrong signature for support number %d" -msgstr "BRIN-Operatorfamilie »%s« enthält Funktion %s mit falscher Signatur für Support-Nummer %d" +msgid "operator family \"%s\" of access method %s contains function %s with wrong signature for support number %d" +msgstr "Operatorfamilie »%s« für Zugriffsmethode %s enthält Funktion %s mit falscher Signatur für Support-Nummer %d" -#: access/brin/brin_validate.c:153 +#: access/brin/brin_validate.c:153 access/gin/ginvalidate.c:179 +#: access/gist/gistvalidate.c:177 access/hash/hashvalidate.c:151 +#: access/nbtree/nbtvalidate.c:132 access/spgist/spgvalidate.c:146 #, c-format -msgid "brin operator family \"%s\" contains operator %s with invalid strategy number %d" -msgstr "BRIN-Operatorfamilie »%s« enthält Operator %s mit ungültiger Strategienummer %d" +msgid "operator family \"%s\" of access method %s contains operator %s with invalid strategy number %d" +msgstr "Operatorfamilie »%s« für Zugriffsmethode %s enthält Operator %s mit ungültiger Strategienummer %d" -#: access/brin/brin_validate.c:182 +#: access/brin/brin_validate.c:182 access/gin/ginvalidate.c:192 +#: access/hash/hashvalidate.c:164 access/nbtree/nbtvalidate.c:145 +#: access/spgist/spgvalidate.c:159 #, c-format -msgid "brin operator family \"%s\" contains invalid ORDER BY specification for operator %s" -msgstr "BRIN-Operatorfamilie »%s« enthält ungültige ORDER-BY-Angabe für Operator %s" +msgid "operator family \"%s\" of access method %s contains invalid ORDER BY specification for operator %s" +msgstr "Operatorfamilie »%s« für Zugriffsmethode %s enthält ungültige ORDER-BY-Angabe für Operator %s" -#: access/brin/brin_validate.c:195 +#: access/brin/brin_validate.c:195 access/gin/ginvalidate.c:205 +#: access/gist/gistvalidate.c:225 access/hash/hashvalidate.c:177 +#: access/nbtree/nbtvalidate.c:158 access/spgist/spgvalidate.c:172 #, c-format -msgid "brin operator family \"%s\" contains operator %s with wrong signature" -msgstr "BRIN-Operatorfamilie »%s« enthält Operator %s mit falscher Signatur" +msgid "operator family \"%s\" of access method %s contains operator %s with wrong signature" +msgstr "Operatorfamilie »%s« für Zugriffsmethode %s enthält Operator %s mit falscher Signatur" -#: access/brin/brin_validate.c:233 +#: access/brin/brin_validate.c:233 access/hash/hashvalidate.c:217 +#: access/nbtree/nbtvalidate.c:200 access/spgist/spgvalidate.c:200 #, c-format -msgid "brin operator family \"%s\" is missing operator(s) for types %s and %s" -msgstr "in BRIN-Operatorfamilie »%s« fehlen Operatoren für Typen %s und %s" +msgid "operator family \"%s\" of access method %s is missing operator(s) for types %s and %s" +msgstr "in Operatorfamilie »%s« für Zugriffsmethode %s fehlen Operatoren für Typen %s und %s" #: access/brin/brin_validate.c:243 #, c-format -msgid "brin operator family \"%s\" is missing support function(s) for types %s and %s" -msgstr "in BRIN-Operatorfamilie »%s« fehlen Support-Funktionen für Typen %s und %s" +msgid "operator family \"%s\" of access method %s is missing support function(s) for types %s and %s" +msgstr "in Operatorfamilie »%s« für Zugriffsmethode %s fehlen Support-Funktionen für Typen %s und %s" -#: access/brin/brin_validate.c:256 +#: access/brin/brin_validate.c:256 access/hash/hashvalidate.c:231 +#: access/nbtree/nbtvalidate.c:224 access/spgist/spgvalidate.c:233 #, c-format -msgid "brin operator class \"%s\" is missing operator(s)" -msgstr "in BRIN-Operatorklasse »%s« fehlen Operatoren" +msgid "operator class \"%s\" of access method %s is missing operator(s)" +msgstr "in Operatorklasse »%s« für Zugriffsmethode %s fehlen Operatoren" -#: access/brin/brin_validate.c:267 +#: access/brin/brin_validate.c:267 access/gin/ginvalidate.c:246 +#: access/gist/gistvalidate.c:264 #, c-format -msgid "brin operator class \"%s\" is missing support function %d" -msgstr "in BRIN-Operatorklasse »%s« fehlt Support-Funktion %d" +msgid "operator class \"%s\" of access method %s is missing support function %d" +msgstr "in Operatorklasse »%s« für Zugriffsmethode %s fehlt Support-Funktion %d" #: access/common/heaptuple.c:708 access/common/heaptuple.c:1339 #, c-format @@ -450,8 +466,8 @@ msgstr "Anzahl der Indexspalten (%d) überschreitet Maximum (%d)" msgid "index row requires %zu bytes, maximum size is %zu" msgstr "Indexzeile benötigt %zu Bytes, Maximalgröße ist %zu" -#: access/common/printtup.c:292 tcop/fastpath.c:182 tcop/fastpath.c:544 -#: tcop/postgres.c:1719 +#: access/common/printtup.c:292 tcop/fastpath.c:182 tcop/fastpath.c:532 +#: tcop/postgres.c:1711 #, c-format msgid "unsupported format code: %d" msgstr "nicht unterstützter Formatcode: %d" @@ -521,17 +537,17 @@ msgstr "Zurückgegebener Typ %1$s stimmt in Spalte %3$d nicht mit erwartetem Typ msgid "Number of returned columns (%d) does not match expected column count (%d)." msgstr "Anzahl der zurückgegebenen Spalten (%d) entspricht nicht der erwarteten Spaltenanzahl (%d)." -#: access/common/tupconvert.c:241 +#: access/common/tupconvert.c:314 #, c-format msgid "Attribute \"%s\" of type %s does not match corresponding attribute of type %s." msgstr "Attribut »%s« von Typ %s stimmt nicht mit dem entsprechenden Attribut von Typ %s überein." -#: access/common/tupconvert.c:253 +#: access/common/tupconvert.c:326 #, c-format msgid "Attribute \"%s\" of type %s does not exist in type %s." msgstr "Attribut »%s« von Typ %s existiert nicht in Typ %s." -#: access/common/tupdesc.c:635 parser/parse_relation.c:1517 +#: access/common/tupdesc.c:635 parser/parse_relation.c:1518 #, c-format msgid "column \"%s\" cannot be declared SETOF" msgstr "Spalte »%s« kann nicht als SETOF deklariert werden" @@ -546,18 +562,11 @@ msgstr "Posting-Liste ist zu lang" msgid "Reduce maintenance_work_mem." msgstr "Reduzieren Sie maintenance_work_mem." -#: access/gin/ginentrypage.c:109 access/gist/gist.c:1337 -#: access/nbtree/nbtinsert.c:576 access/nbtree/nbtsort.c:488 -#: access/spgist/spgdoinsert.c:1907 -#, c-format -msgid "index row size %zu exceeds maximum %zu for index \"%s\"" -msgstr "Größe %zu der Indexzeile überschreitet Maximum %zu für Index »%s«" - -#: access/gin/ginfast.c:989 access/transam/xlog.c:9805 -#: access/transam/xlog.c:10276 access/transam/xlogfuncs.c:293 -#: access/transam/xlogfuncs.c:320 access/transam/xlogfuncs.c:359 -#: access/transam/xlogfuncs.c:380 access/transam/xlogfuncs.c:401 -#: access/transam/xlogfuncs.c:471 access/transam/xlogfuncs.c:527 +#: access/gin/ginfast.c:989 access/transam/xlog.c:9875 +#: access/transam/xlog.c:10392 access/transam/xlogfuncs.c:288 +#: access/transam/xlogfuncs.c:315 access/transam/xlogfuncs.c:354 +#: access/transam/xlogfuncs.c:375 access/transam/xlogfuncs.c:396 +#: access/transam/xlogfuncs.c:466 access/transam/xlogfuncs.c:522 #, c-format msgid "recovery is in progress" msgstr "Wiederherstellung läuft" @@ -587,45 +596,16 @@ msgstr "alte GIN-Indexe unterstützen keine Scans des ganzen Index oder Suchen n msgid "To fix this, do REINDEX INDEX \"%s\"." msgstr "Um das zu reparieren, führen Sie REINDEX INDEX \"%s\" aus." -#: access/gin/ginvalidate.c:92 -#, c-format -msgid "gin operator family \"%s\" contains support procedure %s with cross-type registration" -msgstr "GIN-Operatorfamilie »%s« enthält Support-Prozedur %s mit typübergreifender Registrierung" - -#: access/gin/ginvalidate.c:148 -#, c-format -msgid "gin operator family \"%s\" contains function %s with invalid support number %d" -msgstr "GIN-Operatorfamilie »%s« enthält Funktion %s mit ungültiger Support-Nummer %d" - -#: access/gin/ginvalidate.c:160 -#, c-format -msgid "gin operator family \"%s\" contains function %s with wrong signature for support number %d" -msgstr "GIN-Operatorfamilie »%s« enthält Funktion %s mit falscher Signatur für Support-Nummer %d" - -#: access/gin/ginvalidate.c:179 +#: access/gin/ginvalidate.c:92 access/gist/gistvalidate.c:92 +#: access/hash/hashvalidate.c:98 access/spgist/spgvalidate.c:92 #, c-format -msgid "gin operator family \"%s\" contains operator %s with invalid strategy number %d" -msgstr "GIN-Operatorfamilie »%s« enthält Operator %s mit ungültiger Strategienummer %d" - -#: access/gin/ginvalidate.c:192 -#, c-format -msgid "gin operator family \"%s\" contains invalid ORDER BY specification for operator %s" -msgstr "GIN-Operatorfamilie »%s« enthält ungültige ORDER-BY-Angabe für Operator %s" - -#: access/gin/ginvalidate.c:205 -#, c-format -msgid "gin operator family \"%s\" contains operator %s with wrong signature" -msgstr "GIN-Operatorfamilie »%s« enthält Operator %s mit falscher Signatur" - -#: access/gin/ginvalidate.c:246 -#, c-format -msgid "gin operator class \"%s\" is missing support function %d" -msgstr "in GIN-Operatorklasse »%s« fehlt Support-Funktion %d" +msgid "operator family \"%s\" of access method %s contains support procedure %s with different left and right input types" +msgstr "Operatorfamilie »%s« für Zugriffsmethode %s enthält Support-Prozedur %s mit unterschiedlichen linken und rechten Eingabetypen" #: access/gin/ginvalidate.c:256 #, c-format -msgid "gin operator class \"%s\" is missing support function %d or %d" -msgstr "in GIN-Operatorklasse »%s« fehlt Support-Funktion %d oder %d" +msgid "operator class \"%s\" of access method %s is missing support function %d or %d" +msgstr "in Operatorklasse »%s« für Zugriffsmethode %s fehlt Support-Funktion %d oder %d" #: access/gist/gist.c:680 access/gist/gistvacuum.c:258 #, c-format @@ -683,52 +663,22 @@ msgstr "Index »%s« enthält unerwartete Nullseite bei Block %u" msgid "index \"%s\" contains corrupted page at block %u" msgstr "Index »%s« enthält korrupte Seite bei Block %u" -#: access/gist/gistvalidate.c:92 -#, c-format -msgid "gist operator family \"%s\" contains support procedure %s with cross-type registration" -msgstr "GiST-Operatorfamilie »%s« enthält Support-Prozedur %s mit typübergreifender Registrierung" - -#: access/gist/gistvalidate.c:145 -#, c-format -msgid "gist operator family \"%s\" contains function %s with invalid support number %d" -msgstr "GiST-Operatorfamilie »%s« enthält Funktion %s mit ungültiger Support-Nummer %d" - -#: access/gist/gistvalidate.c:157 -#, c-format -msgid "gist operator family \"%s\" contains function %s with wrong signature for support number %d" -msgstr "GiST-Operatorfamilie »%s« enthält Funktion %s mit falscher Signatur für Support-Nummer %d" - -#: access/gist/gistvalidate.c:177 -#, c-format -msgid "gist operator family \"%s\" contains operator %s with invalid strategy number %d" -msgstr "GiST-Operatorfamilie »%s« enthält Operator %s mit ungültiger Strategienummer %d" - #: access/gist/gistvalidate.c:195 #, c-format -msgid "gist operator family \"%s\" contains unsupported ORDER BY specification for operator %s" -msgstr "GiST-Operatorfamilie »%s« enthält nicht unterstützte ORDER-BY-Angabe für Operator %s" +msgid "operator family \"%s\" of access method %s contains unsupported ORDER BY specification for operator %s" +msgstr "Operatorfamilie »%s« für Zugriffsmethode %s enthält nicht unterstützte ORDER-BY-Angabe für Operator %s" #: access/gist/gistvalidate.c:206 #, c-format -msgid "gist operator family \"%s\" contains incorrect ORDER BY opfamily specification for operator %s" -msgstr "GiST-Operatorfamilie »%s« enthält ungültige ORDER-BY-Operatorfamilienangabe für Operator %s" - -#: access/gist/gistvalidate.c:225 -#, c-format -msgid "gist operator family \"%s\" contains operator %s with wrong signature" -msgstr "GiST-Operatorfamilie »%s« enthält Operator %s mit falscher Signatur" - -#: access/gist/gistvalidate.c:264 -#, c-format -msgid "gist operator class \"%s\" is missing support function %d" -msgstr "in GiST-Operatorklasse »%s« fehlt Support-Funktion %d" +msgid "operator family \"%s\" of access method %s contains incorrect ORDER BY opfamily specification for operator %s" +msgstr "Operatorfamilie »%s« für Zugriffsmethode %s enthält ungültige ORDER-BY-Operatorfamilienangabe für Operator %s" -#: access/hash/hashinsert.c:68 +#: access/hash/hashinsert.c:70 #, c-format msgid "index row size %zu exceeds hash maximum %zu" msgstr "Größe der Indexzeile %zu überschreitet Maximum für Hash-Index %zu" -#: access/hash/hashinsert.c:70 access/spgist/spgdoinsert.c:1911 +#: access/hash/hashinsert.c:72 access/spgist/spgdoinsert.c:1911 #: access/spgist/spgutils.c:703 #, c-format msgid "Values larger than a buffer page cannot be indexed." @@ -754,65 +704,25 @@ msgstr "Index »%s« ist kein Hash-Index" msgid "index \"%s\" has wrong hash version" msgstr "Index »%s« hat falsche Hash-Version" -#: access/hash/hashvalidate.c:98 -#, c-format -msgid "hash operator family \"%s\" contains support procedure %s with cross-type registration" -msgstr "Hash-Operatorfamilie »%s« enthält Support-Prozedur %s mit typübergreifender Registrierung" - -#: access/hash/hashvalidate.c:113 -#, c-format -msgid "hash operator family \"%s\" contains function %s with wrong signature for support number %d" -msgstr "Hash-Operatorfamilie »%s« enthält Funktion %s mit falscher Signatur für Support-Nummer %d" - -#: access/hash/hashvalidate.c:130 -#, c-format -msgid "hash operator family \"%s\" contains function %s with invalid support number %d" -msgstr "Hash-Operatorfamilie »%s« enthält Funktion %s mit ungültiger Support-Nummer %d" - -#: access/hash/hashvalidate.c:151 -#, c-format -msgid "hash operator family \"%s\" contains operator %s with invalid strategy number %d" -msgstr "Hash-Operatorfamilie »%s« enthält Operator %s mit ungültiger Strategienummer %d" - -#: access/hash/hashvalidate.c:164 -#, c-format -msgid "hash operator family \"%s\" contains invalid ORDER BY specification for operator %s" -msgstr "Hash-Operatorfamilie »%s« enthält ungültige ORDER-BY-Angabe für Operator %s" - -#: access/hash/hashvalidate.c:177 -#, c-format -msgid "hash operator family \"%s\" contains operator %s with wrong signature" -msgstr "Hash-Operatorfamilie »%s« enthält Operator %s mit falscher Signatur" - #: access/hash/hashvalidate.c:189 #, c-format -msgid "hash operator family \"%s\" lacks support function for operator %s" -msgstr "in Hash-Operatorfamilie »%s« fehlt Support-Funktion für Operator %s" - -#: access/hash/hashvalidate.c:217 -#, c-format -msgid "hash operator family \"%s\" is missing operator(s) for types %s and %s" -msgstr "in Hash-Operatorfamilie »%s« fehlen Operatoren für Typen %s und %s" - -#: access/hash/hashvalidate.c:231 -#, c-format -msgid "hash operator class \"%s\" is missing operator(s)" -msgstr "in Hash-Operatorklasse »%s« fehlen Operatoren" +msgid "operator family \"%s\" of access method %s lacks support function for operator %s" +msgstr "in Operatorfamilie »%s« für Zugriffsmethode %s fehlt Support-Funktion für Operator %s" -#: access/hash/hashvalidate.c:247 +#: access/hash/hashvalidate.c:247 access/nbtree/nbtvalidate.c:241 #, c-format -msgid "hash operator family \"%s\" is missing cross-type operator(s)" -msgstr "in Hash-Operatorfamilie »%s« fehlen typübergreifende Operatoren" +msgid "operator family \"%s\" of access method %s is missing cross-type operator(s)" +msgstr "in Operatorfamilie »%s« für Zugriffsmethode %s fehlen typübergreifende Operatoren" #: access/heap/heapam.c:1295 access/heap/heapam.c:1323 -#: access/heap/heapam.c:1355 catalog/aclchk.c:1748 +#: access/heap/heapam.c:1355 catalog/aclchk.c:1756 #, c-format msgid "\"%s\" is an index" msgstr "»%s« ist ein Index" #: access/heap/heapam.c:1300 access/heap/heapam.c:1328 -#: access/heap/heapam.c:1360 catalog/aclchk.c:1755 commands/tablecmds.c:8984 -#: commands/tablecmds.c:12042 +#: access/heap/heapam.c:1360 catalog/aclchk.c:1763 commands/tablecmds.c:9095 +#: commands/tablecmds.c:12203 #, c-format msgid "\"%s\" is a composite type" msgstr "»%s« ist ein zusammengesetzter Typ" @@ -832,7 +742,7 @@ msgstr "während einer parallelen Operation können keine Tupel gelöscht werden msgid "attempted to delete invisible tuple" msgstr "Versuch ein unsichtbares Tupel zu löschen" -#: access/heap/heapam.c:3489 access/heap/heapam.c:6240 +#: access/heap/heapam.c:3489 access/heap/heapam.c:6274 #, c-format msgid "cannot update tuples during a parallel operation" msgstr "während einer parallelen Operation können keine Tupel aktualisiert werden" @@ -842,8 +752,8 @@ msgstr "während einer parallelen Operation können keine Tupel aktualisiert wer msgid "attempted to update invisible tuple" msgstr "Versuch ein unsichtbares Tupel zu aktualisieren" -#: access/heap/heapam.c:4963 access/heap/heapam.c:5001 -#: access/heap/heapam.c:5253 executor/execMain.c:2312 +#: access/heap/heapam.c:4964 access/heap/heapam.c:5002 +#: access/heap/heapam.c:5254 executor/execMain.c:2314 #, c-format msgid "could not obtain lock on row in relation \"%s\"" msgstr "konnte Sperre für Zeile in Relation »%s« nicht setzen" @@ -860,22 +770,22 @@ msgstr "konnte nicht in Datei »%s« schreiben, %d von %d geschrieben: %m" #: access/heap/rewriteheap.c:963 access/heap/rewriteheap.c:1175 #: access/heap/rewriteheap.c:1272 access/transam/timeline.c:407 -#: access/transam/timeline.c:483 access/transam/xlog.c:3058 -#: access/transam/xlog.c:3220 replication/logical/snapbuild.c:1605 -#: replication/slot.c:1088 replication/slot.c:1173 storage/file/fd.c:624 -#: storage/file/fd.c:3052 storage/smgr/md.c:1041 storage/smgr/md.c:1274 -#: storage/smgr/md.c:1447 utils/misc/guc.c:6887 +#: access/transam/timeline.c:483 access/transam/xlog.c:3093 +#: access/transam/xlog.c:3255 replication/logical/snapbuild.c:1605 +#: replication/slot.c:1105 replication/slot.c:1190 storage/file/fd.c:631 +#: storage/file/fd.c:3129 storage/smgr/md.c:1041 storage/smgr/md.c:1274 +#: storage/smgr/md.c:1447 utils/misc/guc.c:6885 #, c-format msgid "could not fsync file \"%s\": %m" msgstr "konnte Datei »%s« nicht fsyncen: %m" #: access/heap/rewriteheap.c:1018 access/heap/rewriteheap.c:1138 #: access/transam/timeline.c:315 access/transam/timeline.c:461 -#: access/transam/xlog.c:3014 access/transam/xlog.c:3163 -#: access/transam/xlog.c:10134 access/transam/xlog.c:10172 -#: access/transam/xlog.c:10499 postmaster/postmaster.c:4363 -#: replication/logical/origin.c:542 replication/slot.c:1045 -#: storage/file/copydir.c:162 storage/smgr/md.c:327 utils/time/snapmgr.c:1223 +#: access/transam/xlog.c:3049 access/transam/xlog.c:3198 +#: access/transam/xlog.c:10209 access/transam/xlog.c:10247 +#: access/transam/xlog.c:10636 postmaster/postmaster.c:4387 +#: replication/logical/origin.c:542 replication/slot.c:1062 +#: storage/file/copydir.c:162 storage/smgr/md.c:327 utils/time/snapmgr.c:1275 #, c-format msgid "could not create file \"%s\": %m" msgstr "konnte Datei »%s« nicht erstellen: %m" @@ -885,7 +795,7 @@ msgstr "konnte Datei »%s« nicht erstellen: %m" msgid "could not truncate file \"%s\" to %u: %m" msgstr "konnte Datei »%s« nicht auf %u kürzen: %m" -#: access/heap/rewriteheap.c:1154 replication/walsender.c:481 +#: access/heap/rewriteheap.c:1154 replication/walsender.c:486 #: storage/smgr/md.c:1899 #, c-format msgid "could not seek to end of file \"%s\": %m" @@ -893,25 +803,25 @@ msgstr "konnte Positionszeiger nicht ans Ende der Datei »%s« setzen: %m" #: access/heap/rewriteheap.c:1165 access/transam/timeline.c:367 #: access/transam/timeline.c:401 access/transam/timeline.c:477 -#: access/transam/xlog.c:3049 access/transam/xlog.c:3213 -#: postmaster/postmaster.c:4373 postmaster/postmaster.c:4383 -#: replication/logical/origin.c:551 replication/logical/origin.c:587 -#: replication/logical/origin.c:603 replication/logical/snapbuild.c:1589 -#: replication/slot.c:1074 storage/file/copydir.c:187 +#: access/transam/xlog.c:3084 access/transam/xlog.c:3248 +#: postmaster/postmaster.c:4397 postmaster/postmaster.c:4407 +#: replication/logical/origin.c:551 replication/logical/origin.c:590 +#: replication/logical/origin.c:606 replication/logical/snapbuild.c:1589 +#: replication/slot.c:1091 storage/file/copydir.c:187 #: utils/init/miscinit.c:1228 utils/init/miscinit.c:1237 -#: utils/init/miscinit.c:1244 utils/misc/guc.c:6848 utils/misc/guc.c:6879 -#: utils/misc/guc.c:8721 utils/misc/guc.c:8735 utils/time/snapmgr.c:1228 -#: utils/time/snapmgr.c:1235 +#: utils/init/miscinit.c:1244 utils/misc/guc.c:6846 utils/misc/guc.c:6877 +#: utils/misc/guc.c:8727 utils/misc/guc.c:8741 utils/time/snapmgr.c:1280 +#: utils/time/snapmgr.c:1287 #, c-format msgid "could not write to file \"%s\": %m" msgstr "konnte nicht in Datei »%s« schreiben: %m" -#: access/heap/rewriteheap.c:1248 access/transam/xlog.c:10366 +#: access/heap/rewriteheap.c:1248 access/transam/xlog.c:10471 #: access/transam/xlogarchive.c:114 access/transam/xlogarchive.c:468 -#: replication/logical/origin.c:529 replication/logical/reorderbuffer.c:2626 -#: replication/logical/reorderbuffer.c:2683 -#: replication/logical/snapbuild.c:1533 replication/logical/snapbuild.c:1908 -#: replication/slot.c:1147 storage/ipc/dsm.c:326 storage/smgr/md.c:427 +#: replication/logical/origin.c:529 replication/logical/reorderbuffer.c:2633 +#: replication/logical/reorderbuffer.c:2690 +#: replication/logical/snapbuild.c:1538 replication/logical/snapbuild.c:1901 +#: replication/slot.c:1164 storage/ipc/dsm.c:326 storage/smgr/md.c:427 #: storage/smgr/md.c:476 storage/smgr/md.c:1394 #, c-format msgid "could not remove file \"%s\": %m" @@ -919,20 +829,20 @@ msgstr "konnte Datei »%s« nicht löschen: %m" #: access/heap/rewriteheap.c:1262 access/transam/timeline.c:111 #: access/transam/timeline.c:236 access/transam/timeline.c:334 -#: access/transam/xlog.c:2990 access/transam/xlog.c:3107 -#: access/transam/xlog.c:3148 access/transam/xlog.c:3421 -#: access/transam/xlog.c:3499 access/transam/xlogutils.c:701 -#: replication/basebackup.c:401 replication/basebackup.c:1162 -#: replication/logical/origin.c:658 replication/logical/reorderbuffer.c:2153 -#: replication/logical/reorderbuffer.c:2396 -#: replication/logical/reorderbuffer.c:3075 +#: access/transam/xlog.c:3025 access/transam/xlog.c:3142 +#: access/transam/xlog.c:3183 access/transam/xlog.c:3456 +#: access/transam/xlog.c:3534 access/transam/xlogutils.c:701 +#: replication/basebackup.c:403 replication/basebackup.c:1150 +#: replication/logical/origin.c:661 replication/logical/reorderbuffer.c:2156 +#: replication/logical/reorderbuffer.c:2403 +#: replication/logical/reorderbuffer.c:3082 #: replication/logical/snapbuild.c:1582 replication/logical/snapbuild.c:1666 -#: replication/slot.c:1162 replication/walsender.c:474 -#: replication/walsender.c:2102 storage/file/copydir.c:155 -#: storage/file/fd.c:607 storage/file/fd.c:2964 storage/file/fd.c:3031 +#: replication/slot.c:1179 replication/walsender.c:479 +#: replication/walsender.c:2144 storage/file/copydir.c:155 +#: storage/file/fd.c:614 storage/file/fd.c:3041 storage/file/fd.c:3108 #: storage/smgr/md.c:609 utils/error/elog.c:1879 utils/init/miscinit.c:1163 -#: utils/init/miscinit.c:1284 utils/init/miscinit.c:1362 utils/misc/guc.c:7107 -#: utils/misc/guc.c:7140 +#: utils/init/miscinit.c:1284 utils/init/miscinit.c:1362 utils/misc/guc.c:7105 +#: utils/misc/guc.c:7138 #, c-format msgid "could not open file \"%s\": %m" msgstr "konnte Datei »%s« nicht öffnen: %m" @@ -948,8 +858,8 @@ msgid "index access method \"%s\" does not have a handler" msgstr "Indexzugriffsmethode »%s« hat keinen Handler" #: access/index/indexam.c:155 catalog/objectaddress.c:1196 -#: commands/indexcmds.c:1799 commands/tablecmds.c:241 -#: commands/tablecmds.c:12033 +#: commands/indexcmds.c:1800 commands/tablecmds.c:242 +#: commands/tablecmds.c:12194 #, c-format msgid "\"%s\" is not an index" msgstr "»%s« ist kein Index" @@ -984,7 +894,7 @@ msgstr "" "Erstellen Sie eventuell einen Funktionsindex auf einen MD5-Hash oder verwenden Sie Volltextindizierung." #: access/nbtree/nbtpage.c:168 access/nbtree/nbtpage.c:371 -#: access/nbtree/nbtpage.c:458 parser/parse_utilcmd.c:1717 +#: access/nbtree/nbtpage.c:458 parser/parse_utilcmd.c:1703 #, c-format msgid "index \"%s\" is not a btree" msgstr "Index »%s« ist kein B-Tree" @@ -1005,122 +915,42 @@ msgstr "Index »%s« enthält eine halbtote interne Seite" msgid "This can be caused by an interrupted VACUUM in version 9.3 or older, before upgrade. Please REINDEX it." msgstr "Die Ursache kann ein unterbrochenes VACUUM in Version 9.3 oder älter vor dem Upgrade sein. Bitte REINDEX durchführen." -#: access/nbtree/nbtvalidate.c:100 -#, c-format -msgid "btree operator family \"%s\" contains function %s with invalid support number %d" -msgstr "B-Tree-Operatorfamilie »%s« enthält Funktion %s mit ungültiger Support-Nummer %d" - -#: access/nbtree/nbtvalidate.c:112 -#, c-format -msgid "btree operator family \"%s\" contains function %s with wrong signature for support number %d" -msgstr "B-Tree-Operatorfamilie »%s« enthält Funktion %s mit falscher Signatur für Support-Nummer %d" - -#: access/nbtree/nbtvalidate.c:132 -#, c-format -msgid "btree operator family \"%s\" contains operator %s with invalid strategy number %d" -msgstr "B-Tree-Operatorfamilie »%s« enthält Operator %s mit ungültiger Strategienummer %d" - -#: access/nbtree/nbtvalidate.c:145 -#, c-format -msgid "btree operator family \"%s\" contains invalid ORDER BY specification for operator %s" -msgstr "B-Tree-Operatorfamilie »%s« enthält ungültige ORDER-BY-Angabe für Operator %s" - -#: access/nbtree/nbtvalidate.c:158 -#, c-format -msgid "btree operator family \"%s\" contains operator %s with wrong signature" -msgstr "B-Tree-Operatorfamilie »%s« enthält Operator %s mit falscher Signatur" - -#: access/nbtree/nbtvalidate.c:200 -#, c-format -msgid "btree operator family \"%s\" is missing operator(s) for types %s and %s" -msgstr "in B-Tree-Operatorfamilie »%s« fehlen Operatoren für Typen %s und %s" - #: access/nbtree/nbtvalidate.c:210 #, c-format -msgid "btree operator family \"%s\" is missing support function for types %s and %s" -msgstr "in B-Tree-Operatorfamilie »%s« fehlen Support-Funktionen für Typen %s und %s" - -#: access/nbtree/nbtvalidate.c:224 -#, c-format -msgid "btree operator class \"%s\" is missing operator(s)" -msgstr "in B-Tree-Operatorklasse »%s« fehlen Operatoren" - -#: access/nbtree/nbtvalidate.c:241 -#, c-format -msgid "btree operator family \"%s\" is missing cross-type operator(s)" -msgstr "in B-Tree-Operatorfamilie »%s« fehlen typübergreifende Operatoren" +msgid "operator family \"%s\" of access method %s is missing support function for types %s and %s" +msgstr "in Operatorfamilie »%s« für Zugriffsmethode %s fehlt Support-Funktion für Typen %s und %s" #: access/spgist/spgutils.c:700 #, c-format msgid "SP-GiST inner tuple size %zu exceeds maximum %zu" msgstr "innere Tupelgröße %zu überschreitet SP-GiST-Maximum %zu" -#: access/spgist/spgvalidate.c:92 -#, c-format -msgid "spgist operator family \"%s\" contains support procedure %s with cross-type registration" -msgstr "SPGiST-Operatorfamilie »%s« enthält Support-Prozedur %s mit typübergreifender Registrierung" - -#: access/spgist/spgvalidate.c:115 -#, c-format -msgid "spgist operator family \"%s\" contains function %s with invalid support number %d" -msgstr "SPGiST-Operatorfamilie »%s« enthält Funktion %s mit ungültiger Support-Nummer %d" - -#: access/spgist/spgvalidate.c:127 -#, c-format -msgid "spgist operator family \"%s\" contains function %s with wrong signature for support number %d" -msgstr "SPGiST-Operatorfamilie »%s« enthält Funktion %s mit falscher Signatur für Support-Nummer %d" - -#: access/spgist/spgvalidate.c:146 -#, c-format -msgid "spgist operator family \"%s\" contains operator %s with invalid strategy number %d" -msgstr "SPGiST-Operatorfamilie »%s« enthält Operator %s mit ungültiger Strategienummer %d" - -#: access/spgist/spgvalidate.c:159 -#, c-format -msgid "spgist operator family \"%s\" contains invalid ORDER BY specification for operator %s" -msgstr "SPGiST-Operatorfamilie »%s« enthält ungültige ORDER-BY-Angabe für Operator %s" - -#: access/spgist/spgvalidate.c:172 -#, c-format -msgid "spgist operator family \"%s\" contains operator %s with wrong signature" -msgstr "SPGiST-Operatorfamilie »%s« enthält Operator %s mit falscher Signatur" - -#: access/spgist/spgvalidate.c:200 -#, c-format -msgid "spgist operator family \"%s\" is missing operator(s) for types %s and %s" -msgstr "in SPGiST-Operatorfamilie »%s« fehlen Operatoren für Typen %s und %s" - #: access/spgist/spgvalidate.c:220 #, c-format -msgid "spgist operator family \"%s\" is missing support function %d for type %s" -msgstr "in SPGiST-Operatorfamilie »%s« fehlt Support-Funktion %d für Typ %s" - -#: access/spgist/spgvalidate.c:233 -#, c-format -msgid "spgist operator class \"%s\" is missing operator(s)" -msgstr "in SPGiST-Operatorklasse »%s« fehlen Operatoren" +msgid "operator family \"%s\" of access method %s is missing support function %d for type %s" +msgstr "in Operatorfamilie »%s« für Zugriffsmethode %s fehlt Support-Funktion %d für Typ %s" #: access/tablesample/bernoulli.c:152 access/tablesample/system.c:156 #, c-format msgid "sample percentage must be between 0 and 100" msgstr "Stichprobenprozentsatz muss zwischen 0 und 100 sein" -#: access/transam/commit_ts.c:295 +#: access/transam/commit_ts.c:294 #, c-format msgid "cannot retrieve commit timestamp for transaction %u" msgstr "Commit-Timestamp von Transaktion %u kann nicht abgefragt werden" -#: access/transam/commit_ts.c:385 +#: access/transam/commit_ts.c:392 #, c-format msgid "could not get commit timestamp data" msgstr "konnte Commit-Timestamp-Daten nicht auslesen" -#: access/transam/commit_ts.c:387 +#: access/transam/commit_ts.c:394 #, c-format msgid "Make sure the configuration parameter \"%s\" is set on the master server." msgstr "Stellen Sie sicher, dass der Konfigurationsparameter »%s« auf dem Masterserver gesetzt ist." -#: access/transam/commit_ts.c:389 libpq/hba.c:1439 +#: access/transam/commit_ts.c:396 libpq/hba.c:1439 #, c-format msgid "Make sure the configuration parameter \"%s\" is set." msgstr "Stellen Sie sicher, dass der Konfigurationsparameter »%s« gesetzt ist." @@ -1249,78 +1079,78 @@ msgstr "kann nicht bis MultiXact %u trunkieren, weil sie nicht auf der Festplatt msgid "invalid MultiXactId: %u" msgstr "ungültige MultiXactId: %u" -#: access/transam/parallel.c:589 +#: access/transam/parallel.c:610 #, c-format msgid "postmaster exited during a parallel transaction" msgstr "Postmaster beendete während einer parallelen Transaktion" -#: access/transam/parallel.c:774 +#: access/transam/parallel.c:799 #, c-format msgid "lost connection to parallel worker" msgstr "Verbindung mit parallelem Arbeitsprozess verloren" -#: access/transam/parallel.c:833 access/transam/parallel.c:835 +#: access/transam/parallel.c:858 access/transam/parallel.c:860 msgid "parallel worker" msgstr "paralleler Arbeitsprozess" -#: access/transam/parallel.c:974 +#: access/transam/parallel.c:1001 #, c-format msgid "could not map dynamic shared memory segment" msgstr "konnte dynamisches Shared-Memory-Segment nicht mappen" -#: access/transam/parallel.c:979 +#: access/transam/parallel.c:1006 #, c-format msgid "invalid magic number in dynamic shared memory segment" msgstr "ungültige magische Zahl in dynamischem Shared-Memory-Segment" -#: access/transam/slru.c:665 +#: access/transam/slru.c:669 #, c-format msgid "file \"%s\" doesn't exist, reading as zeroes" msgstr "Datei »%s« existiert nicht, wird als Nullen eingelesen" -#: access/transam/slru.c:895 access/transam/slru.c:901 -#: access/transam/slru.c:908 access/transam/slru.c:915 -#: access/transam/slru.c:922 access/transam/slru.c:929 +#: access/transam/slru.c:899 access/transam/slru.c:905 +#: access/transam/slru.c:912 access/transam/slru.c:919 +#: access/transam/slru.c:926 access/transam/slru.c:933 #, c-format msgid "could not access status of transaction %u" msgstr "konnte auf den Status von Transaktion %u nicht zugreifen" -#: access/transam/slru.c:896 +#: access/transam/slru.c:900 #, c-format msgid "Could not open file \"%s\": %m." msgstr "Konnte Datei »%s« nicht öffnen: %m." -#: access/transam/slru.c:902 +#: access/transam/slru.c:906 #, c-format msgid "Could not seek in file \"%s\" to offset %u: %m." msgstr "Konnte Positionszeiger in Datei »%s« nicht auf %u setzen: %m." -#: access/transam/slru.c:909 +#: access/transam/slru.c:913 #, c-format msgid "Could not read from file \"%s\" at offset %u: %m." msgstr "Konnte nicht aus Datei »%s« bei Position %u lesen: %m." -#: access/transam/slru.c:916 +#: access/transam/slru.c:920 #, c-format msgid "Could not write to file \"%s\" at offset %u: %m." msgstr "Konnte nicht in Datei »%s« bei Position %u schreiben: %m." -#: access/transam/slru.c:923 +#: access/transam/slru.c:927 #, c-format msgid "Could not fsync file \"%s\": %m." msgstr "Konnte Datei »%s« nicht fsyncen: %m." -#: access/transam/slru.c:930 +#: access/transam/slru.c:934 #, c-format msgid "Could not close file \"%s\": %m." msgstr "Konnte Datei »%s« nicht schließen: %m." -#: access/transam/slru.c:1185 +#: access/transam/slru.c:1189 #, c-format msgid "could not truncate directory \"%s\": apparent wraparound" msgstr "konnte Verzeichnis »%s« nicht leeren: anscheinender Überlauf" -#: access/transam/slru.c:1240 access/transam/slru.c:1296 +#: access/transam/slru.c:1244 access/transam/slru.c:1300 #, c-format msgid "removing file \"%s\"" msgstr "entferne Datei »%s«" @@ -1361,8 +1191,8 @@ msgid "Timeline IDs must be less than child timeline's ID." msgstr "Zeitleisten-IDs müssen kleiner als die Zeitleisten-ID des Kindes sein." #: access/transam/timeline.c:412 access/transam/timeline.c:488 -#: access/transam/xlog.c:3064 access/transam/xlog.c:3225 -#: access/transam/xlogfuncs.c:690 commands/copy.c:1669 +#: access/transam/xlog.c:3099 access/transam/xlog.c:3260 +#: access/transam/xlogfuncs.c:685 commands/copy.c:1709 #: storage/file/copydir.c:201 #, c-format msgid "could not close file \"%s\": %m" @@ -1403,121 +1233,121 @@ msgstr "maximale Anzahl vorbereiteter Transaktionen erreicht" msgid "Increase max_prepared_transactions (currently %d)." msgstr "Erhöhen Sie max_prepared_transactions (aktuell %d)." -#: access/transam/twophase.c:539 +#: access/transam/twophase.c:540 #, c-format msgid "prepared transaction with identifier \"%s\" is busy" msgstr "vorbereitete Transaktion mit Bezeichner »%s« ist beschäftigt" -#: access/transam/twophase.c:545 +#: access/transam/twophase.c:546 #, c-format msgid "permission denied to finish prepared transaction" msgstr "keine Berechtigung, um vorbereitete Transaktion abzuschließen" -#: access/transam/twophase.c:546 +#: access/transam/twophase.c:547 #, c-format msgid "Must be superuser or the user that prepared the transaction." msgstr "Sie müssen Superuser oder der Benutzer sein, der die Transaktion vorbereitet hat." -#: access/transam/twophase.c:557 +#: access/transam/twophase.c:558 #, c-format msgid "prepared transaction belongs to another database" msgstr "vorbereitete Transaktion gehört zu einer anderen Datenbank" -#: access/transam/twophase.c:558 +#: access/transam/twophase.c:559 #, c-format msgid "Connect to the database where the transaction was prepared to finish it." msgstr "Verbinden Sie sich mit der Datenbank, wo die Transaktion vorbereitet wurde, um sie zu beenden." -#: access/transam/twophase.c:573 +#: access/transam/twophase.c:574 #, c-format msgid "prepared transaction with identifier \"%s\" does not exist" msgstr "vorbereitete Transaktion mit Bezeichner »%s« existiert nicht" -#: access/transam/twophase.c:1042 +#: access/transam/twophase.c:1043 #, c-format msgid "two-phase state file maximum length exceeded" msgstr "maximale Länge der Zweiphasen-Statusdatei überschritten" -#: access/transam/twophase.c:1160 +#: access/transam/twophase.c:1161 #, c-format msgid "could not open two-phase state file \"%s\": %m" msgstr "konnte Zweiphasen-Statusdatei »%s« nicht öffnen: %m" -#: access/transam/twophase.c:1177 +#: access/transam/twophase.c:1178 #, c-format msgid "could not stat two-phase state file \"%s\": %m" msgstr "konnte »stat« für Zweiphasen-Statusdatei »%s« nicht ausführen: %m" -#: access/transam/twophase.c:1209 +#: access/transam/twophase.c:1210 #, c-format msgid "could not read two-phase state file \"%s\": %m" msgstr "konnte Zweiphasen-Statusdatei »%s« nicht lesen: %m" -#: access/transam/twophase.c:1262 access/transam/xlog.c:6080 +#: access/transam/twophase.c:1263 access/transam/xlog.c:6115 #, c-format msgid "Failed while allocating an XLog reading processor." msgstr "Fehlgeschlagen beim Anlegen eines XLog-Leseprozessors." -#: access/transam/twophase.c:1268 +#: access/transam/twophase.c:1269 #, c-format msgid "could not read two-phase state from xlog at %X/%X" msgstr "konnte Zweiphasen-Status nicht aus dem Xlog bei %X/%X lesen" -#: access/transam/twophase.c:1276 +#: access/transam/twophase.c:1277 #, c-format msgid "expected two-phase state data is not present in xlog at %X/%X" msgstr "erwartete Zweiphasen-Status-Daten sind nicht im Xlog bei %X/%X vorhanden" -#: access/transam/twophase.c:1511 +#: access/transam/twophase.c:1512 #, c-format msgid "could not remove two-phase state file \"%s\": %m" msgstr "konnte Zweiphasen-Statusdatei »%s« nicht löschen: %m" -#: access/transam/twophase.c:1541 +#: access/transam/twophase.c:1542 #, c-format msgid "could not recreate two-phase state file \"%s\": %m" msgstr "konnte Zweiphasen-Statusdatei »%s« nicht wieder erstellen: %m" -#: access/transam/twophase.c:1550 access/transam/twophase.c:1557 +#: access/transam/twophase.c:1551 access/transam/twophase.c:1558 #, c-format msgid "could not write two-phase state file: %m" msgstr "konnte Zweiphasen-Statusdatei nicht schreiben: %m" -#: access/transam/twophase.c:1569 +#: access/transam/twophase.c:1570 #, c-format msgid "could not fsync two-phase state file: %m" msgstr "konnte Zweiphasen-Statusdatei nicht fsyncen: %m" -#: access/transam/twophase.c:1575 +#: access/transam/twophase.c:1576 #, c-format msgid "could not close two-phase state file: %m" msgstr "konnte Zweiphasen-Statusdatei nicht schließen: %m" -#: access/transam/twophase.c:1648 +#: access/transam/twophase.c:1649 #, c-format msgid "%u two-phase state file was written for long-running prepared transactions" msgid_plural "%u two-phase state files were written for long-running prepared transactions" msgstr[0] "%u Zweiphasen-Statusdatei wurde für lange laufende vorbereitete Transaktionen geschrieben" msgstr[1] "%u Zweiphasen-Statusdateien wurden für lange laufende vorbereitete Transaktionen geschrieben" -#: access/transam/twophase.c:1712 +#: access/transam/twophase.c:1713 #, c-format msgid "removing future two-phase state file \"%s\"" msgstr "entferne Zweiphasen-Statusdatei aus der Zukunft »%s«" -#: access/transam/twophase.c:1728 access/transam/twophase.c:1739 -#: access/transam/twophase.c:1859 access/transam/twophase.c:1870 -#: access/transam/twophase.c:1947 +#: access/transam/twophase.c:1729 access/transam/twophase.c:1740 +#: access/transam/twophase.c:1860 access/transam/twophase.c:1871 +#: access/transam/twophase.c:1948 #, c-format msgid "removing corrupt two-phase state file \"%s\"" msgstr "entferne verfälschte Zweiphasen-Statusdatei »%s«" -#: access/transam/twophase.c:1848 access/transam/twophase.c:1936 +#: access/transam/twophase.c:1849 access/transam/twophase.c:1937 #, c-format msgid "removing stale two-phase state file \"%s\"" msgstr "entferne abgelaufene Zweiphasen-Statusdatei »%s«" -#: access/transam/twophase.c:1954 +#: access/transam/twophase.c:1955 #, c-format msgid "recovering prepared transaction %u" msgstr "Wiederherstellung der vorbereiteten Transaktion %u" @@ -1566,1124 +1396,1124 @@ msgstr "kann nicht mehr als 2^32-2 Befehle in einer Transaktion ausführen" msgid "maximum number of committed subtransactions (%d) exceeded" msgstr "maximale Anzahl committeter Subtransaktionen (%d) überschritten" -#: access/transam/xact.c:2263 +#: access/transam/xact.c:2260 #, c-format msgid "cannot PREPARE a transaction that has operated on temporary tables" msgstr "PREPARE kann nicht für eine Transaktion ausgeführt werden, die temporäre Tabellen bearbeitet hat" -#: access/transam/xact.c:2273 +#: access/transam/xact.c:2270 #, c-format msgid "cannot PREPARE a transaction that has exported snapshots" msgstr "PREPARE kann nicht für eine Transaktion ausgeführt werden, die Snapshots exportiert hat" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3155 +#: access/transam/xact.c:3148 #, c-format msgid "%s cannot run inside a transaction block" msgstr "%s kann nicht in einem Transaktionsblock laufen" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3165 +#: access/transam/xact.c:3158 #, c-format msgid "%s cannot run inside a subtransaction" msgstr "%s kann nicht in einer Subtransaktion laufen" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3175 +#: access/transam/xact.c:3168 #, c-format msgid "%s cannot be executed from a function or multi-command string" msgstr "%s kann nicht aus einer Funktion oder einer mehrbefehligen Zeichenkette heraus ausgeführt werden" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3246 +#: access/transam/xact.c:3239 #, c-format msgid "%s can only be used in transaction blocks" msgstr "%s kann nur in Transaktionsblöcken verwendet werden" -#: access/transam/xact.c:3430 +#: access/transam/xact.c:3423 #, c-format msgid "there is already a transaction in progress" msgstr "eine Transaktion ist bereits begonnen" -#: access/transam/xact.c:3598 access/transam/xact.c:3701 +#: access/transam/xact.c:3591 access/transam/xact.c:3694 #, c-format msgid "there is no transaction in progress" msgstr "keine Transaktion offen" -#: access/transam/xact.c:3609 +#: access/transam/xact.c:3602 #, c-format msgid "cannot commit during a parallel operation" msgstr "während einer parallelen Operation kann nicht committet werden" -#: access/transam/xact.c:3712 +#: access/transam/xact.c:3705 #, c-format msgid "cannot abort during a parallel operation" msgstr "während einer parallelen Operation kann nicht abgebrochen werden" -#: access/transam/xact.c:3754 +#: access/transam/xact.c:3747 #, c-format msgid "cannot define savepoints during a parallel operation" msgstr "während einer parallelen Operation können keine Sicherungspunkte definiert werden" -#: access/transam/xact.c:3821 +#: access/transam/xact.c:3814 #, c-format msgid "cannot release savepoints during a parallel operation" msgstr "während einer parallelen Operation können keine Sicherungspunkte freigegeben werden" -#: access/transam/xact.c:3832 access/transam/xact.c:3884 -#: access/transam/xact.c:3890 access/transam/xact.c:3946 -#: access/transam/xact.c:3996 access/transam/xact.c:4002 +#: access/transam/xact.c:3825 access/transam/xact.c:3877 +#: access/transam/xact.c:3883 access/transam/xact.c:3939 +#: access/transam/xact.c:3989 access/transam/xact.c:3995 #, c-format msgid "no such savepoint" msgstr "Sicherungspunkt existiert nicht" -#: access/transam/xact.c:3934 +#: access/transam/xact.c:3927 #, c-format msgid "cannot rollback to savepoints during a parallel operation" msgstr "während einer parallelen Operation kann nicht auf einen Sicherungspunkt zurückgerollt werden" -#: access/transam/xact.c:4062 +#: access/transam/xact.c:4055 #, c-format msgid "cannot start subtransactions during a parallel operation" msgstr "während einer parallelen Operation können keine Subtransaktionen gestartet werden" -#: access/transam/xact.c:4129 +#: access/transam/xact.c:4122 #, c-format msgid "cannot commit subtransactions during a parallel operation" msgstr "während einer parallelen Operation können keine Subtransaktionen committet werden" -#: access/transam/xact.c:4737 +#: access/transam/xact.c:4751 #, c-format msgid "cannot have more than 2^32-1 subtransactions in a transaction" msgstr "kann nicht mehr als 2^32-1 Subtransaktionen in einer Transaktion haben" -#: access/transam/xlog.c:2270 +#: access/transam/xlog.c:2305 #, c-format msgid "could not seek in log file %s to offset %u: %m" msgstr "konnte Positionszeiger in Logdatei %s nicht auf %u setzen: %m" -#: access/transam/xlog.c:2290 +#: access/transam/xlog.c:2325 #, c-format msgid "could not write to log file %s at offset %u, length %zu: %m" msgstr "konnte nicht in Logdatei %s bei Position %u, Länge %zu schreiben: %m" -#: access/transam/xlog.c:2553 +#: access/transam/xlog.c:2588 #, c-format msgid "updated min recovery point to %X/%X on timeline %u" msgstr "minimaler Recovery-Punkt auf %X/%X auf Zeitleiste %u aktualisiert" -#: access/transam/xlog.c:3195 +#: access/transam/xlog.c:3230 #, c-format msgid "not enough data in file \"%s\"" msgstr "nicht genug Daten in Datei »%s«" -#: access/transam/xlog.c:3336 +#: access/transam/xlog.c:3371 #, c-format msgid "could not open transaction log file \"%s\": %m" msgstr "konnte Transaktionslogdatei »%s« nicht öffnen: %m" -#: access/transam/xlog.c:3525 access/transam/xlog.c:5310 +#: access/transam/xlog.c:3560 access/transam/xlog.c:5345 #, c-format msgid "could not close log file %s: %m" msgstr "konnte Logdatei %s nicht schließen: %m" -#: access/transam/xlog.c:3582 access/transam/xlogutils.c:696 -#: replication/walsender.c:2097 +#: access/transam/xlog.c:3617 access/transam/xlogutils.c:696 +#: replication/walsender.c:2139 #, c-format msgid "requested WAL segment %s has already been removed" msgstr "das angeforderte WAL-Segment %s wurde schon entfernt" -#: access/transam/xlog.c:3642 access/transam/xlog.c:3717 -#: access/transam/xlog.c:3915 +#: access/transam/xlog.c:3677 access/transam/xlog.c:3752 +#: access/transam/xlog.c:3950 #, c-format msgid "could not open transaction log directory \"%s\": %m" msgstr "konnte Transaktionslog-Verzeichnis »%s« nicht öffnen: %m" -#: access/transam/xlog.c:3798 +#: access/transam/xlog.c:3833 #, c-format msgid "recycled transaction log file \"%s\"" msgstr "Transaktionslogdatei »%s« wird wiederverwendet" -#: access/transam/xlog.c:3810 +#: access/transam/xlog.c:3845 #, c-format msgid "removing transaction log file \"%s\"" msgstr "entferne Transaktionslogdatei »%s«" -#: access/transam/xlog.c:3830 +#: access/transam/xlog.c:3865 #, c-format msgid "could not rename old transaction log file \"%s\": %m" msgstr "konnte alte Transaktionslogdatei »%s« nicht umbenennen: %m" -#: access/transam/xlog.c:3842 +#: access/transam/xlog.c:3877 #, c-format msgid "could not remove old transaction log file \"%s\": %m" msgstr "konnte alte Transaktionslogdatei »%s« nicht löschen: %m" -#: access/transam/xlog.c:3875 access/transam/xlog.c:3885 +#: access/transam/xlog.c:3910 access/transam/xlog.c:3920 #, c-format msgid "required WAL directory \"%s\" does not exist" msgstr "benötigtes WAL-Verzeichnis »%s« existiert nicht" -#: access/transam/xlog.c:3891 +#: access/transam/xlog.c:3926 #, c-format msgid "creating missing WAL directory \"%s\"" msgstr "erzeuge fehlendes WAL-Verzeichnis »%s«" -#: access/transam/xlog.c:3894 +#: access/transam/xlog.c:3929 #, c-format msgid "could not create missing directory \"%s\": %m" msgstr "konnte fehlendes Verzeichnis »%s« nicht erzeugen: %m" -#: access/transam/xlog.c:3925 +#: access/transam/xlog.c:3960 #, c-format msgid "removing transaction log backup history file \"%s\"" msgstr "entferne Transaktionslog-Backup-History-Datei »%s«" -#: access/transam/xlog.c:4006 +#: access/transam/xlog.c:4041 #, c-format msgid "unexpected timeline ID %u in log segment %s, offset %u" msgstr "unerwartete Zeitleisten-ID %u in Logsegment %s, Offset %u" -#: access/transam/xlog.c:4128 +#: access/transam/xlog.c:4163 #, c-format msgid "new timeline %u is not a child of database system timeline %u" msgstr "neue Zeitleiste %u ist kein Kind der Datenbanksystemzeitleiste %u" -#: access/transam/xlog.c:4142 +#: access/transam/xlog.c:4177 #, c-format msgid "new timeline %u forked off current database system timeline %u before current recovery point %X/%X" msgstr "neue Zeitleiste %u zweigte von der aktuellen Datenbanksystemzeitleiste %u vor dem aktuellen Wiederherstellungspunkt %X/%X ab" -#: access/transam/xlog.c:4161 +#: access/transam/xlog.c:4196 #, c-format msgid "new target timeline is %u" msgstr "neue Zielzeitleiste ist %u" -#: access/transam/xlog.c:4241 +#: access/transam/xlog.c:4276 #, c-format msgid "could not create control file \"%s\": %m" msgstr "konnte Kontrolldatei »%s« nicht erzeugen: %m" -#: access/transam/xlog.c:4252 access/transam/xlog.c:4488 +#: access/transam/xlog.c:4287 access/transam/xlog.c:4523 #, c-format msgid "could not write to control file: %m" msgstr "konnte nicht in Kontrolldatei schreiben: %m" -#: access/transam/xlog.c:4258 access/transam/xlog.c:4494 +#: access/transam/xlog.c:4293 access/transam/xlog.c:4529 #, c-format msgid "could not fsync control file: %m" msgstr "konnte Kontrolldatei nicht fsyncen: %m" -#: access/transam/xlog.c:4263 access/transam/xlog.c:4499 +#: access/transam/xlog.c:4298 access/transam/xlog.c:4534 #, c-format msgid "could not close control file: %m" msgstr "konnte Kontrolldatei nicht schließen: %m" -#: access/transam/xlog.c:4281 access/transam/xlog.c:4477 +#: access/transam/xlog.c:4316 access/transam/xlog.c:4512 #, c-format msgid "could not open control file \"%s\": %m" msgstr "konnte Kontrolldatei »%s« nicht öffnen: %m" -#: access/transam/xlog.c:4287 +#: access/transam/xlog.c:4322 #, c-format msgid "could not read from control file: %m" msgstr "konnte nicht aus Kontrolldatei lesen: %m" -#: access/transam/xlog.c:4300 access/transam/xlog.c:4309 -#: access/transam/xlog.c:4333 access/transam/xlog.c:4340 -#: access/transam/xlog.c:4347 access/transam/xlog.c:4352 -#: access/transam/xlog.c:4359 access/transam/xlog.c:4366 -#: access/transam/xlog.c:4373 access/transam/xlog.c:4380 -#: access/transam/xlog.c:4387 access/transam/xlog.c:4394 -#: access/transam/xlog.c:4401 access/transam/xlog.c:4410 -#: access/transam/xlog.c:4417 access/transam/xlog.c:4426 -#: access/transam/xlog.c:4433 access/transam/xlog.c:4442 -#: access/transam/xlog.c:4449 utils/init/miscinit.c:1380 +#: access/transam/xlog.c:4335 access/transam/xlog.c:4344 +#: access/transam/xlog.c:4368 access/transam/xlog.c:4375 +#: access/transam/xlog.c:4382 access/transam/xlog.c:4387 +#: access/transam/xlog.c:4394 access/transam/xlog.c:4401 +#: access/transam/xlog.c:4408 access/transam/xlog.c:4415 +#: access/transam/xlog.c:4422 access/transam/xlog.c:4429 +#: access/transam/xlog.c:4436 access/transam/xlog.c:4445 +#: access/transam/xlog.c:4452 access/transam/xlog.c:4461 +#: access/transam/xlog.c:4468 access/transam/xlog.c:4477 +#: access/transam/xlog.c:4484 utils/init/miscinit.c:1380 #, c-format msgid "database files are incompatible with server" msgstr "Datenbankdateien sind inkompatibel mit Server" -#: access/transam/xlog.c:4301 +#: access/transam/xlog.c:4336 #, c-format msgid "The database cluster was initialized with PG_CONTROL_VERSION %d (0x%08x), but the server was compiled with PG_CONTROL_VERSION %d (0x%08x)." msgstr "Der Datenbank-Cluster wurde mit PG_CONTROL_VERSION %d (0x%08x) initialisiert, aber der Server wurde mit PG_CONTROL_VERSION %d (0x%08x) kompiliert." -#: access/transam/xlog.c:4305 +#: access/transam/xlog.c:4340 #, c-format msgid "This could be a problem of mismatched byte ordering. It looks like you need to initdb." msgstr "Das Problem könnte eine falsche Byte-Reihenfolge sein. Es sieht so aus, dass Sie initdb ausführen müssen." -#: access/transam/xlog.c:4310 +#: access/transam/xlog.c:4345 #, c-format msgid "The database cluster was initialized with PG_CONTROL_VERSION %d, but the server was compiled with PG_CONTROL_VERSION %d." msgstr "Der Datenbank-Cluster wurde mit PG_CONTROL_VERSION %d initialisiert, aber der Server wurde mit PG_CONTROL_VERSION %d kompiliert." -#: access/transam/xlog.c:4313 access/transam/xlog.c:4337 -#: access/transam/xlog.c:4344 access/transam/xlog.c:4349 +#: access/transam/xlog.c:4348 access/transam/xlog.c:4372 +#: access/transam/xlog.c:4379 access/transam/xlog.c:4384 #, c-format msgid "It looks like you need to initdb." msgstr "Es sieht so aus, dass Sie initdb ausführen müssen." -#: access/transam/xlog.c:4324 +#: access/transam/xlog.c:4359 #, c-format msgid "incorrect checksum in control file" msgstr "falsche Prüfsumme in Kontrolldatei" -#: access/transam/xlog.c:4334 +#: access/transam/xlog.c:4369 #, c-format msgid "The database cluster was initialized with CATALOG_VERSION_NO %d, but the server was compiled with CATALOG_VERSION_NO %d." msgstr "Der Datenbank-Cluster wurde mit CATALOG_VERSION_NO %d initialisiert, aber der Server wurde mit CATALOG_VERSION_NO %d kompiliert." -#: access/transam/xlog.c:4341 +#: access/transam/xlog.c:4376 #, c-format msgid "The database cluster was initialized with MAXALIGN %d, but the server was compiled with MAXALIGN %d." msgstr "Der Datenbank-Cluster wurde mit MAXALIGN %d initialisiert, aber der Server wurde mit MAXALIGN %d kompiliert." -#: access/transam/xlog.c:4348 +#: access/transam/xlog.c:4383 #, c-format msgid "The database cluster appears to use a different floating-point number format than the server executable." msgstr "Der Datenbank-Cluster verwendet anscheinend ein anderes Fließkommazahlenformat als das Serverprogramm." -#: access/transam/xlog.c:4353 +#: access/transam/xlog.c:4388 #, c-format msgid "The database cluster was initialized with BLCKSZ %d, but the server was compiled with BLCKSZ %d." msgstr "Der Datenbank-Cluster wurde mit BLCKSZ %d initialisiert, aber der Server wurde mit BLCKSZ %d kompiliert." -#: access/transam/xlog.c:4356 access/transam/xlog.c:4363 -#: access/transam/xlog.c:4370 access/transam/xlog.c:4377 -#: access/transam/xlog.c:4384 access/transam/xlog.c:4391 -#: access/transam/xlog.c:4398 access/transam/xlog.c:4405 -#: access/transam/xlog.c:4413 access/transam/xlog.c:4420 -#: access/transam/xlog.c:4429 access/transam/xlog.c:4436 -#: access/transam/xlog.c:4445 access/transam/xlog.c:4452 +#: access/transam/xlog.c:4391 access/transam/xlog.c:4398 +#: access/transam/xlog.c:4405 access/transam/xlog.c:4412 +#: access/transam/xlog.c:4419 access/transam/xlog.c:4426 +#: access/transam/xlog.c:4433 access/transam/xlog.c:4440 +#: access/transam/xlog.c:4448 access/transam/xlog.c:4455 +#: access/transam/xlog.c:4464 access/transam/xlog.c:4471 +#: access/transam/xlog.c:4480 access/transam/xlog.c:4487 #, c-format msgid "It looks like you need to recompile or initdb." msgstr "Es sieht so aus, dass Sie neu kompilieren oder initdb ausführen müssen." -#: access/transam/xlog.c:4360 +#: access/transam/xlog.c:4395 #, c-format msgid "The database cluster was initialized with RELSEG_SIZE %d, but the server was compiled with RELSEG_SIZE %d." msgstr "Der Datenbank-Cluster wurde mit RELSEG_SIZE %d initialisiert, aber der Server wurde mit RELSEGSIZE %d kompiliert." -#: access/transam/xlog.c:4367 +#: access/transam/xlog.c:4402 #, c-format msgid "The database cluster was initialized with XLOG_BLCKSZ %d, but the server was compiled with XLOG_BLCKSZ %d." msgstr "Der Datenbank-Cluster wurde mit XLOG_BLCKSZ %d initialisiert, aber der Server wurde mit XLOG_BLCKSZ %d kompiliert." -#: access/transam/xlog.c:4374 +#: access/transam/xlog.c:4409 #, c-format msgid "The database cluster was initialized with XLOG_SEG_SIZE %d, but the server was compiled with XLOG_SEG_SIZE %d." msgstr "Der Datenbank-Cluster wurde mit XLOG_SEG_SIZE %d initialisiert, aber der Server wurde mit XLOG_SEG_SIZE %d kompiliert." -#: access/transam/xlog.c:4381 +#: access/transam/xlog.c:4416 #, c-format msgid "The database cluster was initialized with NAMEDATALEN %d, but the server was compiled with NAMEDATALEN %d." msgstr "Der Datenbank-Cluster wurde mit NAMEDATALEN %d initialisiert, aber der Server wurde mit NAMEDATALEN %d kompiliert." -#: access/transam/xlog.c:4388 +#: access/transam/xlog.c:4423 #, c-format msgid "The database cluster was initialized with INDEX_MAX_KEYS %d, but the server was compiled with INDEX_MAX_KEYS %d." msgstr "Der Datenbank-Cluster wurde mit INDEX_MAX_KEYS %d initialisiert, aber der Server wurde mit INDEX_MAX_KEYS %d kompiliert." -#: access/transam/xlog.c:4395 +#: access/transam/xlog.c:4430 #, c-format msgid "The database cluster was initialized with TOAST_MAX_CHUNK_SIZE %d, but the server was compiled with TOAST_MAX_CHUNK_SIZE %d." msgstr "Der Datenbank-Cluster wurde mit TOAST_MAX_CHUNK_SIZE %d initialisiert, aber der Server wurde mit TOAST_MAX_CHUNK_SIZE %d kompiliert." -#: access/transam/xlog.c:4402 +#: access/transam/xlog.c:4437 #, c-format msgid "The database cluster was initialized with LOBLKSIZE %d, but the server was compiled with LOBLKSIZE %d." msgstr "Der Datenbank-Cluster wurde mit LOBLKSIZE %d initialisiert, aber der Server wurde mit LOBLKSIZE %d kompiliert." -#: access/transam/xlog.c:4411 +#: access/transam/xlog.c:4446 #, c-format msgid "The database cluster was initialized without HAVE_INT64_TIMESTAMP but the server was compiled with HAVE_INT64_TIMESTAMP." msgstr "Der Datenbank-Cluster wurde ohne HAVE_INT64_TIMESTAMP initialisiert, aber der Server wurde mit HAE_INT64_TIMESTAMP kompiliert." -#: access/transam/xlog.c:4418 +#: access/transam/xlog.c:4453 #, c-format msgid "The database cluster was initialized with HAVE_INT64_TIMESTAMP but the server was compiled without HAVE_INT64_TIMESTAMP." msgstr "Der Datenbank-Cluster wurde mit HAVE_INT64_TIMESTAMP initialisiert, aber der Server wurde ohne HAE_INT64_TIMESTAMP kompiliert." -#: access/transam/xlog.c:4427 +#: access/transam/xlog.c:4462 #, c-format msgid "The database cluster was initialized without USE_FLOAT4_BYVAL but the server was compiled with USE_FLOAT4_BYVAL." msgstr "Der Datenbank-Cluster wurde ohne USE_FLOAT4_BYVAL initialisiert, aber der Server wurde mit USE_FLOAT4_BYVAL kompiliert." -#: access/transam/xlog.c:4434 +#: access/transam/xlog.c:4469 #, c-format msgid "The database cluster was initialized with USE_FLOAT4_BYVAL but the server was compiled without USE_FLOAT4_BYVAL." msgstr "Der Datenbank-Cluster wurde mit USE_FLOAT4_BYVAL initialisiert, aber der Server wurde ohne USE_FLOAT4_BYVAL kompiliert." -#: access/transam/xlog.c:4443 +#: access/transam/xlog.c:4478 #, c-format msgid "The database cluster was initialized without USE_FLOAT8_BYVAL but the server was compiled with USE_FLOAT8_BYVAL." msgstr "Der Datenbank-Cluster wurde ohne USE_FLOAT8_BYVAL initialisiert, aber der Server wurde mit USE_FLOAT8_BYVAL kompiliert." -#: access/transam/xlog.c:4450 +#: access/transam/xlog.c:4485 #, c-format msgid "The database cluster was initialized with USE_FLOAT8_BYVAL but the server was compiled without USE_FLOAT8_BYVAL." msgstr "Der Datenbank-Cluster wurde mit USE_FLOAT8_BYVAL initialisiert, aber der Server wurde ohne USE_FLOAT8_BYVAL kompiliert." -#: access/transam/xlog.c:4871 +#: access/transam/xlog.c:4906 #, c-format msgid "could not write bootstrap transaction log file: %m" msgstr "konnte Bootstrap-Transaktionslogdatei nicht schreiben: %m" -#: access/transam/xlog.c:4877 +#: access/transam/xlog.c:4912 #, c-format msgid "could not fsync bootstrap transaction log file: %m" msgstr "konnte Bootstrap-Transaktionslogdatei nicht fsyncen: %m" -#: access/transam/xlog.c:4882 +#: access/transam/xlog.c:4917 #, c-format msgid "could not close bootstrap transaction log file: %m" msgstr "konnte Bootstrap-Transaktionslogdatei nicht schließen: %m" -#: access/transam/xlog.c:4957 +#: access/transam/xlog.c:4992 #, c-format msgid "could not open recovery command file \"%s\": %m" msgstr "konnte Recovery-Kommandodatei »%s« nicht öffnen: %m" -#: access/transam/xlog.c:5003 access/transam/xlog.c:5088 +#: access/transam/xlog.c:5038 access/transam/xlog.c:5123 #, c-format msgid "invalid value for recovery parameter \"%s\": \"%s\"" msgstr "ungültiger Wert für Recovery-Parameter »%s«: »%s«" -#: access/transam/xlog.c:5006 +#: access/transam/xlog.c:5041 #, c-format msgid "Valid values are \"pause\", \"promote\", and \"shutdown\"." msgstr "Gültige Werte sind »pause«, »promote« und »shutdown«." -#: access/transam/xlog.c:5026 +#: access/transam/xlog.c:5061 #, c-format msgid "recovery_target_timeline is not a valid number: \"%s\"" msgstr "recovery_target_timeline ist keine gültige Zahl: »%s«" -#: access/transam/xlog.c:5043 +#: access/transam/xlog.c:5078 #, c-format msgid "recovery_target_xid is not a valid number: \"%s\"" msgstr "recovery_target_xid ist keine gültige Zahl: »%s«" -#: access/transam/xlog.c:5074 +#: access/transam/xlog.c:5109 #, c-format msgid "recovery_target_name is too long (maximum %d characters)" msgstr "recovery_target_name ist zu lang (maximal %d Zeichen)" -#: access/transam/xlog.c:5091 +#: access/transam/xlog.c:5126 #, c-format msgid "The only allowed value is \"immediate\"." msgstr "Der einzige erlaubte Wert ist »immediate«." -#: access/transam/xlog.c:5104 access/transam/xlog.c:5115 -#: commands/extension.c:533 commands/extension.c:541 utils/misc/guc.c:5642 +#: access/transam/xlog.c:5139 access/transam/xlog.c:5150 +#: commands/extension.c:534 commands/extension.c:542 utils/misc/guc.c:5640 #, c-format msgid "parameter \"%s\" requires a Boolean value" msgstr "Parameter »%s« erfordert einen Boole’schen Wert" -#: access/transam/xlog.c:5150 +#: access/transam/xlog.c:5185 #, c-format msgid "parameter \"%s\" requires a temporal value" msgstr "Parameter »%s« erfordert einen Zeitwert" -#: access/transam/xlog.c:5152 catalog/dependency.c:991 -#: catalog/dependency.c:992 catalog/dependency.c:998 catalog/dependency.c:999 -#: catalog/dependency.c:1010 catalog/dependency.c:1011 -#: catalog/objectaddress.c:1100 commands/tablecmds.c:795 -#: commands/tablecmds.c:9445 commands/user.c:1045 commands/view.c:470 -#: libpq/auth.c:304 replication/syncrep.c:919 storage/lmgr/deadlock.c:1139 -#: storage/lmgr/proc.c:1276 utils/adt/acl.c:5281 utils/misc/guc.c:5664 -#: utils/misc/guc.c:5757 utils/misc/guc.c:9692 utils/misc/guc.c:9726 -#: utils/misc/guc.c:9760 utils/misc/guc.c:9794 utils/misc/guc.c:9829 +#: access/transam/xlog.c:5187 catalog/dependency.c:990 +#: catalog/dependency.c:991 catalog/dependency.c:997 catalog/dependency.c:998 +#: catalog/dependency.c:1009 catalog/dependency.c:1010 +#: catalog/objectaddress.c:1100 commands/tablecmds.c:796 +#: commands/tablecmds.c:9556 commands/user.c:1045 commands/view.c:499 +#: libpq/auth.c:307 replication/syncrep.c:929 storage/lmgr/deadlock.c:1139 +#: storage/lmgr/proc.c:1278 utils/adt/acl.c:5281 utils/misc/guc.c:5662 +#: utils/misc/guc.c:5755 utils/misc/guc.c:9708 utils/misc/guc.c:9742 +#: utils/misc/guc.c:9776 utils/misc/guc.c:9810 utils/misc/guc.c:9845 #, c-format msgid "%s" msgstr "%s" -#: access/transam/xlog.c:5159 +#: access/transam/xlog.c:5194 #, c-format msgid "unrecognized recovery parameter \"%s\"" msgstr "unbekannter Recovery-Parameter »%s«" -#: access/transam/xlog.c:5170 +#: access/transam/xlog.c:5205 #, c-format msgid "recovery command file \"%s\" specified neither primary_conninfo nor restore_command" msgstr "Recovery-Kommandodatei »%s« hat weder primary_conninfo noch restore_command angegeben" -#: access/transam/xlog.c:5172 +#: access/transam/xlog.c:5207 #, c-format msgid "The database server will regularly poll the pg_xlog subdirectory to check for files placed there." msgstr "Der Datenbankserver prüft das Unterverzeichnis pg_xlog regelmäßig auf dort abgelegte Dateien." -#: access/transam/xlog.c:5179 +#: access/transam/xlog.c:5214 #, c-format msgid "recovery command file \"%s\" must specify restore_command when standby mode is not enabled" msgstr "Recovery-Kommandodatei »%s« muss restore_command angeben, wenn der Standby-Modus nicht eingeschaltet ist" -#: access/transam/xlog.c:5200 +#: access/transam/xlog.c:5235 #, c-format msgid "standby mode is not supported by single-user servers" msgstr "Standby-Modus wird von Servern im Einzelbenutzermodus nicht unterstützt" -#: access/transam/xlog.c:5219 +#: access/transam/xlog.c:5254 #, c-format msgid "recovery target timeline %u does not exist" msgstr "recovery_target_timeline %u existiert nicht" -#: access/transam/xlog.c:5340 +#: access/transam/xlog.c:5375 #, c-format msgid "archive recovery complete" msgstr "Wiederherstellung aus Archiv abgeschlossen" -#: access/transam/xlog.c:5399 access/transam/xlog.c:5627 +#: access/transam/xlog.c:5434 access/transam/xlog.c:5662 #, c-format msgid "recovery stopping after reaching consistency" msgstr "Wiederherstellung beendet nachdem Konsistenz erreicht wurde" -#: access/transam/xlog.c:5487 +#: access/transam/xlog.c:5522 #, c-format msgid "recovery stopping before commit of transaction %u, time %s" msgstr "Wiederherstellung beendet vor Commit der Transaktion %u, Zeit %s" -#: access/transam/xlog.c:5494 +#: access/transam/xlog.c:5529 #, c-format msgid "recovery stopping before abort of transaction %u, time %s" msgstr "Wiederherstellung beendet vor Abbruch der Transaktion %u, Zeit %s" -#: access/transam/xlog.c:5539 +#: access/transam/xlog.c:5574 #, c-format msgid "recovery stopping at restore point \"%s\", time %s" msgstr "Wiederherstellung beendet bei Restore-Punkt »%s«, Zeit %s" -#: access/transam/xlog.c:5607 +#: access/transam/xlog.c:5642 #, c-format msgid "recovery stopping after commit of transaction %u, time %s" msgstr "Wiederherstellung beendet nach Commit der Transaktion %u, Zeit %s" -#: access/transam/xlog.c:5615 +#: access/transam/xlog.c:5650 #, c-format msgid "recovery stopping after abort of transaction %u, time %s" msgstr "Wiederherstellung beendet nach Abbruch der Transaktion %u, Zeit %s" -#: access/transam/xlog.c:5654 +#: access/transam/xlog.c:5689 #, c-format msgid "recovery has paused" msgstr "Wiederherstellung wurde pausiert" -#: access/transam/xlog.c:5655 +#: access/transam/xlog.c:5690 #, c-format msgid "Execute pg_xlog_replay_resume() to continue." msgstr "Führen Sie pg_xlog_replay_resume() aus um fortzusetzen." -#: access/transam/xlog.c:5862 +#: access/transam/xlog.c:5897 #, c-format msgid "hot standby is not possible because %s = %d is a lower setting than on the master server (its value was %d)" msgstr "Hot Standby ist nicht möglich, weil %s = %d eine niedrigere Einstellung als auf dem Masterserver ist (Wert dort war %d)" -#: access/transam/xlog.c:5888 +#: access/transam/xlog.c:5923 #, c-format msgid "WAL was generated with wal_level=minimal, data may be missing" msgstr "WAL wurde mit wal_level=minimal erzeugt, eventuell fehlen Daten" -#: access/transam/xlog.c:5889 +#: access/transam/xlog.c:5924 #, c-format msgid "This happens if you temporarily set wal_level=minimal without taking a new base backup." msgstr "Das passiert, wenn vorübergehend wal_level=minimal gesetzt wurde, ohne ein neues Base-Backup zu erzeugen." -#: access/transam/xlog.c:5900 +#: access/transam/xlog.c:5935 #, c-format msgid "hot standby is not possible because wal_level was not set to \"replica\" or higher on the master server" msgstr "Hot Standby ist nicht möglich, weil wal_level auf dem Masterserver nicht auf »replica« oder höher gesetzt wurde" -#: access/transam/xlog.c:5901 +#: access/transam/xlog.c:5936 #, c-format msgid "Either set wal_level to \"replica\" on the master, or turn off hot_standby here." msgstr "Setzen Sie entweder wal_level auf »replica« auf dem Master oder schalten Sie hot_standby hier aus." -#: access/transam/xlog.c:5958 +#: access/transam/xlog.c:5993 #, c-format msgid "control file contains invalid data" msgstr "Kontrolldatei enthält ungültige Daten" -#: access/transam/xlog.c:5964 +#: access/transam/xlog.c:5999 #, c-format msgid "database system was shut down at %s" msgstr "Datenbanksystem wurde am %s heruntergefahren" -#: access/transam/xlog.c:5969 +#: access/transam/xlog.c:6004 #, c-format msgid "database system was shut down in recovery at %s" msgstr "Datenbanksystem wurde während der Wiederherstellung am %s heruntergefahren" -#: access/transam/xlog.c:5973 +#: access/transam/xlog.c:6008 #, c-format msgid "database system shutdown was interrupted; last known up at %s" msgstr "Datenbanksystem wurde beim Herunterfahren unterbrochen; letzte bekannte Aktion am %s" -#: access/transam/xlog.c:5977 +#: access/transam/xlog.c:6012 #, c-format msgid "database system was interrupted while in recovery at %s" msgstr "Datenbanksystem wurde während der Wiederherstellung am %s unterbrochen" -#: access/transam/xlog.c:5979 +#: access/transam/xlog.c:6014 #, c-format msgid "This probably means that some data is corrupted and you will have to use the last backup for recovery." msgstr "Das bedeutet wahrscheinlich, dass einige Daten verfälscht sind und Sie die letzte Datensicherung zur Wiederherstellung verwenden müssen." -#: access/transam/xlog.c:5983 +#: access/transam/xlog.c:6018 #, c-format msgid "database system was interrupted while in recovery at log time %s" msgstr "Datenbanksystem wurde während der Wiederherstellung bei Logzeit %s unterbrochen" -#: access/transam/xlog.c:5985 +#: access/transam/xlog.c:6020 #, c-format msgid "If this has occurred more than once some data might be corrupted and you might need to choose an earlier recovery target." msgstr "Wenn dies mehr als einmal vorgekommen ist, dann sind einige Daten möglicherweise verfälscht und Sie müssen ein früheres Wiederherstellungsziel wählen." -#: access/transam/xlog.c:5989 +#: access/transam/xlog.c:6024 #, c-format msgid "database system was interrupted; last known up at %s" msgstr "Datenbanksystem wurde unterbrochen; letzte bekannte Aktion am %s" -#: access/transam/xlog.c:6045 +#: access/transam/xlog.c:6080 #, c-format msgid "entering standby mode" msgstr "Standby-Modus eingeschaltet" -#: access/transam/xlog.c:6048 +#: access/transam/xlog.c:6083 #, c-format msgid "starting point-in-time recovery to XID %u" msgstr "starte Point-in-Time-Recovery bis XID %u" -#: access/transam/xlog.c:6052 +#: access/transam/xlog.c:6087 #, c-format msgid "starting point-in-time recovery to %s" msgstr "starte Point-in-Time-Recovery bis %s" -#: access/transam/xlog.c:6056 +#: access/transam/xlog.c:6091 #, c-format msgid "starting point-in-time recovery to \"%s\"" msgstr "starte Point-in-Time-Recovery bis »%s«" -#: access/transam/xlog.c:6060 +#: access/transam/xlog.c:6095 #, c-format msgid "starting point-in-time recovery to earliest consistent point" msgstr "starte Point-in-Time-Recovery bis zum frühesten konsistenten Punkt" -#: access/transam/xlog.c:6063 +#: access/transam/xlog.c:6098 #, c-format msgid "starting archive recovery" msgstr "starte Wiederherstellung aus Archiv" -#: access/transam/xlog.c:6107 access/transam/xlog.c:6235 +#: access/transam/xlog.c:6142 access/transam/xlog.c:6270 #, c-format msgid "checkpoint record is at %X/%X" msgstr "Checkpoint-Eintrag ist bei %X/%X" -#: access/transam/xlog.c:6121 +#: access/transam/xlog.c:6156 #, c-format msgid "could not find redo location referenced by checkpoint record" msgstr "konnte die vom Checkpoint-Datensatz referenzierte Redo-Position nicht finden" -#: access/transam/xlog.c:6122 access/transam/xlog.c:6129 +#: access/transam/xlog.c:6157 access/transam/xlog.c:6164 #, c-format msgid "If you are not restoring from a backup, try removing the file \"%s/backup_label\"." msgstr "Wenn Sie gerade keine Sicherung wiederherstellen, versuchen Sie, die Datei »%s/backup_label« zu löschen." -#: access/transam/xlog.c:6128 +#: access/transam/xlog.c:6163 #, c-format msgid "could not locate required checkpoint record" msgstr "konnte den nötigen Checkpoint-Datensatz nicht finden" -#: access/transam/xlog.c:6154 commands/tablespace.c:641 +#: access/transam/xlog.c:6189 commands/tablespace.c:641 #, c-format msgid "could not create symbolic link \"%s\": %m" msgstr "konnte symbolische Verknüpfung »%s« nicht erstellen: %m" -#: access/transam/xlog.c:6186 access/transam/xlog.c:6192 +#: access/transam/xlog.c:6221 access/transam/xlog.c:6227 #, c-format msgid "ignoring file \"%s\" because no file \"%s\" exists" msgstr "ignoriere Datei »%s«, weil keine Datei »%s« existiert" -#: access/transam/xlog.c:6188 access/transam/xlog.c:10928 +#: access/transam/xlog.c:6223 access/transam/xlog.c:11065 #, c-format msgid "File \"%s\" was renamed to \"%s\"." msgstr "Datei »%s« wurde in »%s« umbenannt." -#: access/transam/xlog.c:6194 +#: access/transam/xlog.c:6229 #, c-format msgid "Could not rename file \"%s\" to \"%s\": %m." msgstr "Konnte Datei »%s« nicht in »%s« umbenennen: %m." -#: access/transam/xlog.c:6245 access/transam/xlog.c:6260 +#: access/transam/xlog.c:6280 access/transam/xlog.c:6295 #, c-format msgid "could not locate a valid checkpoint record" msgstr "konnte keinen gültigen Checkpoint-Datensatz finden" -#: access/transam/xlog.c:6254 +#: access/transam/xlog.c:6289 #, c-format msgid "using previous checkpoint record at %X/%X" msgstr "verwende vorherigen Checkpoint-Eintrag bei %X/%X" -#: access/transam/xlog.c:6298 +#: access/transam/xlog.c:6333 #, c-format msgid "requested timeline %u is not a child of this server's history" msgstr "angeforderte Zeitleiste %u ist kein Kind der History dieses Servers" -#: access/transam/xlog.c:6300 +#: access/transam/xlog.c:6335 #, c-format msgid "Latest checkpoint is at %X/%X on timeline %u, but in the history of the requested timeline, the server forked off from that timeline at %X/%X." msgstr "Neuester Checkpoint ist bei %X/%X auf Zeitleiste %u, aber in der History der angeforderten Zeitleiste zweigte der Server von dieser Zeitleiste bei %X/%X ab." -#: access/transam/xlog.c:6316 +#: access/transam/xlog.c:6351 #, c-format msgid "requested timeline %u does not contain minimum recovery point %X/%X on timeline %u" msgstr "angeforderte Zeitleiste %u enthält nicht den minimalen Wiederherstellungspunkt %X/%X auf Zeitleiste %u" -#: access/transam/xlog.c:6347 +#: access/transam/xlog.c:6382 #, c-format msgid "invalid next transaction ID" msgstr "ungültige nächste Transaktions-ID" -#: access/transam/xlog.c:6430 +#: access/transam/xlog.c:6465 #, c-format msgid "invalid redo in checkpoint record" msgstr "ungültiges Redo im Checkpoint-Datensatz" -#: access/transam/xlog.c:6441 +#: access/transam/xlog.c:6476 #, c-format msgid "invalid redo record in shutdown checkpoint" msgstr "ungültiger Redo-Datensatz im Shutdown-Checkpoint" -#: access/transam/xlog.c:6469 +#: access/transam/xlog.c:6504 #, c-format msgid "database system was not properly shut down; automatic recovery in progress" msgstr "Datenbanksystem wurde nicht richtig heruntergefahren; automatische Wiederherstellung läuft" -#: access/transam/xlog.c:6473 +#: access/transam/xlog.c:6508 #, c-format msgid "crash recovery starts in timeline %u and has target timeline %u" msgstr "Wiederherstellung nach Absturz beginnt in Zeitleiste %u und hat Zielzeitleiste %u" -#: access/transam/xlog.c:6517 +#: access/transam/xlog.c:6552 #, c-format msgid "backup_label contains data inconsistent with control file" msgstr "Daten in backup_label stimmen nicht mit Kontrolldatei überein" -#: access/transam/xlog.c:6518 +#: access/transam/xlog.c:6553 #, c-format msgid "This means that the backup is corrupted and you will have to use another backup for recovery." msgstr "Das bedeutet, dass die Datensicherung verfälscht ist und Sie eine andere Datensicherung zur Wiederherstellung verwenden werden müssen." -#: access/transam/xlog.c:6592 +#: access/transam/xlog.c:6627 #, c-format msgid "initializing for hot standby" msgstr "initialisiere für Hot Standby" -#: access/transam/xlog.c:6724 +#: access/transam/xlog.c:6759 #, c-format msgid "redo starts at %X/%X" msgstr "Redo beginnt bei %X/%X" -#: access/transam/xlog.c:6949 +#: access/transam/xlog.c:6984 #, c-format msgid "requested recovery stop point is before consistent recovery point" msgstr "angeforderter Recovery-Endpunkt ist vor konsistentem Recovery-Punkt" -#: access/transam/xlog.c:6987 +#: access/transam/xlog.c:7022 #, c-format msgid "redo done at %X/%X" msgstr "Redo fertig bei %X/%X" -#: access/transam/xlog.c:6992 access/transam/xlog.c:8916 +#: access/transam/xlog.c:7027 access/transam/xlog.c:8986 #, c-format msgid "last completed transaction was at log time %s" msgstr "letzte vollständige Transaktion war bei Logzeit %s" -#: access/transam/xlog.c:7001 +#: access/transam/xlog.c:7036 #, c-format msgid "redo is not required" msgstr "Redo nicht nötig" -#: access/transam/xlog.c:7076 access/transam/xlog.c:7080 +#: access/transam/xlog.c:7111 access/transam/xlog.c:7115 #, c-format msgid "WAL ends before end of online backup" msgstr "WAL endet vor dem Ende der Online-Sicherung" -#: access/transam/xlog.c:7077 +#: access/transam/xlog.c:7112 #, c-format msgid "All WAL generated while online backup was taken must be available at recovery." msgstr "Der komplette WAL, der während der Online-Sicherung erzeugt wurde, muss bei der Wiederherstellung verfügbar sein." -#: access/transam/xlog.c:7081 +#: access/transam/xlog.c:7116 #, c-format msgid "Online backup started with pg_start_backup() must be ended with pg_stop_backup(), and all WAL up to that point must be available at recovery." msgstr "Die mit pg_start_backup() begonnene Online-Sicherung muss mit pg_stop_backup() beendet werden und der ganze WAL bis zu diesem Punkt muss bei der Wiederherstellung verfügbar sein." -#: access/transam/xlog.c:7084 +#: access/transam/xlog.c:7119 #, c-format msgid "WAL ends before consistent recovery point" msgstr "WAL endet vor einem konsistenten Wiederherstellungspunkt" -#: access/transam/xlog.c:7111 +#: access/transam/xlog.c:7146 #, c-format msgid "selected new timeline ID: %u" msgstr "gewählte neue Zeitleisten-ID: %u" -#: access/transam/xlog.c:7522 +#: access/transam/xlog.c:7557 #, c-format msgid "consistent recovery state reached at %X/%X" msgstr "konsistenter Wiederherstellungszustand erreicht bei %X/%X" -#: access/transam/xlog.c:7713 +#: access/transam/xlog.c:7748 #, c-format msgid "invalid primary checkpoint link in control file" msgstr "ungültige primäre Checkpoint-Verknüpfung in Kontrolldatei" -#: access/transam/xlog.c:7717 +#: access/transam/xlog.c:7752 #, c-format msgid "invalid secondary checkpoint link in control file" msgstr "ungültige sekundäre Checkpoint-Verknüpfung in Kontrolldatei" -#: access/transam/xlog.c:7721 +#: access/transam/xlog.c:7756 #, c-format msgid "invalid checkpoint link in backup_label file" msgstr "ungültige Checkpoint-Verknüpfung in backup_label-Datei" -#: access/transam/xlog.c:7738 +#: access/transam/xlog.c:7773 #, c-format msgid "invalid primary checkpoint record" msgstr "ungültiger primärer Checkpoint-Datensatz" -#: access/transam/xlog.c:7742 +#: access/transam/xlog.c:7777 #, c-format msgid "invalid secondary checkpoint record" msgstr "ungültiger sekundärer Checkpoint-Datensatz" -#: access/transam/xlog.c:7746 +#: access/transam/xlog.c:7781 #, c-format msgid "invalid checkpoint record" msgstr "ungültiger Checkpoint-Datensatz" -#: access/transam/xlog.c:7757 +#: access/transam/xlog.c:7792 #, c-format msgid "invalid resource manager ID in primary checkpoint record" msgstr "ungültige Resource-Manager-ID im primären Checkpoint-Datensatz" -#: access/transam/xlog.c:7761 +#: access/transam/xlog.c:7796 #, c-format msgid "invalid resource manager ID in secondary checkpoint record" msgstr "ungültige Resource-Manager-ID im sekundären Checkpoint-Datensatz" -#: access/transam/xlog.c:7765 +#: access/transam/xlog.c:7800 #, c-format msgid "invalid resource manager ID in checkpoint record" msgstr "ungültige Resource-Manager-ID im Checkpoint-Datensatz" -#: access/transam/xlog.c:7777 +#: access/transam/xlog.c:7812 #, c-format msgid "invalid xl_info in primary checkpoint record" msgstr "ungültige xl_info im primären Checkpoint-Datensatz" -#: access/transam/xlog.c:7781 +#: access/transam/xlog.c:7816 #, c-format msgid "invalid xl_info in secondary checkpoint record" msgstr "ungültige xl_info im sekundären Checkpoint-Datensatz" -#: access/transam/xlog.c:7785 +#: access/transam/xlog.c:7820 #, c-format msgid "invalid xl_info in checkpoint record" msgstr "ungültige xl_info im Checkpoint-Datensatz" -#: access/transam/xlog.c:7796 +#: access/transam/xlog.c:7831 #, c-format msgid "invalid length of primary checkpoint record" msgstr "ungültige Länge des primären Checkpoint-Datensatzes" -#: access/transam/xlog.c:7800 +#: access/transam/xlog.c:7835 #, c-format msgid "invalid length of secondary checkpoint record" msgstr "ungültige Länge des sekundären Checkpoint-Datensatzes" -#: access/transam/xlog.c:7804 +#: access/transam/xlog.c:7839 #, c-format msgid "invalid length of checkpoint record" msgstr "ungültige Länge des Checkpoint-Datensatzes" -#: access/transam/xlog.c:7972 +#: access/transam/xlog.c:8007 #, c-format msgid "shutting down" msgstr "fahre herunter" -#: access/transam/xlog.c:8485 +#: access/transam/xlog.c:8531 #, c-format msgid "concurrent transaction log activity while database system is shutting down" msgstr "gleichzeitige Transaktionslog-Aktivität während das Datenbanksystem herunterfährt" -#: access/transam/xlog.c:8736 +#: access/transam/xlog.c:8785 #, c-format msgid "skipping restartpoint, recovery has already ended" msgstr "Restart-Punkt übersprungen, Wiederherstellung ist bereits beendet" -#: access/transam/xlog.c:8759 +#: access/transam/xlog.c:8808 #, c-format msgid "skipping restartpoint, already performed at %X/%X" msgstr "Restart-Punkt wird übersprungen, schon bei %X/%X erledigt" -#: access/transam/xlog.c:8914 +#: access/transam/xlog.c:8984 #, c-format msgid "recovery restart point at %X/%X" msgstr "Recovery-Restart-Punkt bei %X/%X" -#: access/transam/xlog.c:9047 +#: access/transam/xlog.c:9117 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "Restore-Punkt »%s« erzeugt bei %X/%X" -#: access/transam/xlog.c:9177 +#: access/transam/xlog.c:9247 #, c-format msgid "unexpected previous timeline ID %u (current timeline ID %u) in checkpoint record" msgstr "unerwartete vorherige Zeitleisten-ID %u (aktuelle Zeitleisten-ID %u) im Checkpoint-Datensatz" -#: access/transam/xlog.c:9186 +#: access/transam/xlog.c:9256 #, c-format msgid "unexpected timeline ID %u (after %u) in checkpoint record" msgstr "unerwartete Zeitleisten-ID %u (nach %u) im Checkpoint-Datensatz" -#: access/transam/xlog.c:9202 +#: access/transam/xlog.c:9272 #, c-format msgid "unexpected timeline ID %u in checkpoint record, before reaching minimum recovery point %X/%X on timeline %u" msgstr "unerwartete Zeitleisten-ID %u in Checkpoint-Datensatz, bevor der minimale Wiederherstellungspunkt %X/%X auf Zeitleiste %u erreicht wurde" -#: access/transam/xlog.c:9273 +#: access/transam/xlog.c:9343 #, c-format msgid "online backup was canceled, recovery cannot continue" msgstr "Online-Sicherung wurde storniert, Wiederherstellung kann nicht fortgesetzt werden" -#: access/transam/xlog.c:9329 access/transam/xlog.c:9376 -#: access/transam/xlog.c:9399 +#: access/transam/xlog.c:9399 access/transam/xlog.c:9446 +#: access/transam/xlog.c:9469 #, c-format msgid "unexpected timeline ID %u (should be %u) in checkpoint record" msgstr "unerwartete Zeitleisten-ID %u (sollte %u sein) im Checkpoint-Datensatz" -#: access/transam/xlog.c:9674 +#: access/transam/xlog.c:9744 #, c-format msgid "could not fsync log segment %s: %m" msgstr "konnte Logsegment %s nicht fsyncen: %m" -#: access/transam/xlog.c:9698 +#: access/transam/xlog.c:9768 #, c-format msgid "could not fsync log file %s: %m" msgstr "konnte Logdatei %s nicht fsyncen: %m" -#: access/transam/xlog.c:9706 +#: access/transam/xlog.c:9776 #, c-format msgid "could not fsync write-through log file %s: %m" msgstr "konnte Write-Through-Logdatei %s nicht fsyncen: %m" -#: access/transam/xlog.c:9715 +#: access/transam/xlog.c:9785 #, c-format msgid "could not fdatasync log file %s: %m" msgstr "konnte Logdatei %s nicht fdatasyncen: %m" -#: access/transam/xlog.c:9806 access/transam/xlog.c:10277 -#: access/transam/xlogfuncs.c:294 access/transam/xlogfuncs.c:321 -#: access/transam/xlogfuncs.c:360 access/transam/xlogfuncs.c:381 -#: access/transam/xlogfuncs.c:402 +#: access/transam/xlog.c:9876 access/transam/xlog.c:10393 +#: access/transam/xlogfuncs.c:289 access/transam/xlogfuncs.c:316 +#: access/transam/xlogfuncs.c:355 access/transam/xlogfuncs.c:376 +#: access/transam/xlogfuncs.c:397 #, c-format msgid "WAL control functions cannot be executed during recovery." msgstr "Während der Wiederherstellung können keine WAL-Kontrollfunktionen ausgeführt werden." -#: access/transam/xlog.c:9815 access/transam/xlog.c:10286 +#: access/transam/xlog.c:9885 access/transam/xlog.c:10402 #, c-format msgid "WAL level not sufficient for making an online backup" msgstr "WAL-Level nicht ausreichend, um Online-Sicherung durchzuführen" -#: access/transam/xlog.c:9816 access/transam/xlog.c:10287 -#: access/transam/xlogfuncs.c:327 +#: access/transam/xlog.c:9886 access/transam/xlog.c:10403 +#: access/transam/xlogfuncs.c:322 #, c-format msgid "wal_level must be set to \"replica\" or \"logical\" at server start." msgstr "wal_level muss beim Serverstart auf »replica« oder »logical« gesetzt werden." -#: access/transam/xlog.c:9821 +#: access/transam/xlog.c:9891 #, c-format msgid "backup label too long (max %d bytes)" msgstr "Backup-Label zu lang (maximal %d Bytes)" -#: access/transam/xlog.c:9853 access/transam/xlog.c:10125 -#: access/transam/xlog.c:10163 +#: access/transam/xlog.c:9928 access/transam/xlog.c:10200 +#: access/transam/xlog.c:10238 #, c-format msgid "a backup is already in progress" msgstr "ein Backup läuft bereits" -#: access/transam/xlog.c:9854 +#: access/transam/xlog.c:9929 #, c-format msgid "Run pg_stop_backup() and try again." msgstr "Führen Sie pg_stop_backup() aus und versuchen Sie es nochmal." -#: access/transam/xlog.c:9949 +#: access/transam/xlog.c:10024 #, c-format msgid "WAL generated with full_page_writes=off was replayed since last restartpoint" msgstr "mit full_page_writes=off erzeugtes WAL wurde seit dem letzten Restart-Punkt zurückgespielt" -#: access/transam/xlog.c:9951 access/transam/xlog.c:10450 +#: access/transam/xlog.c:10026 access/transam/xlog.c:10587 #, c-format msgid "This means that the backup being taken on the standby is corrupt and should not be used. Enable full_page_writes and run CHECKPOINT on the master, and then try an online backup again." msgstr "Das bedeutet, dass die aktuelle Datensicherung auf dem Standby-Server verfälscht ist und nicht verwendet werden sollte. Schalten Sie full_page_writes ein, führen Sie CHECKPOINT aus und versuchen Sie dann die Online-Sicherung erneut." -#: access/transam/xlog.c:10018 replication/basebackup.c:1038 +#: access/transam/xlog.c:10093 replication/basebackup.c:1026 #: utils/adt/misc.c:498 #, c-format msgid "could not read symbolic link \"%s\": %m" msgstr "konnte symbolische Verknüpfung »%s« nicht lesen: %m" -#: access/transam/xlog.c:10025 replication/basebackup.c:1043 +#: access/transam/xlog.c:10100 replication/basebackup.c:1031 #: utils/adt/misc.c:503 #, c-format msgid "symbolic link \"%s\" target is too long" msgstr "Ziel für symbolische Verknüpfung »%s« ist zu lang" -#: access/transam/xlog.c:10078 commands/tablespace.c:391 -#: commands/tablespace.c:553 replication/basebackup.c:1059 +#: access/transam/xlog.c:10153 commands/tablespace.c:391 +#: commands/tablespace.c:553 replication/basebackup.c:1047 #: utils/adt/misc.c:511 #, c-format msgid "tablespaces are not supported on this platform" msgstr "Tablespaces werden auf dieser Plattform nicht unterstützt" -#: access/transam/xlog.c:10119 access/transam/xlog.c:10157 -#: access/transam/xlog.c:10336 access/transam/xlogarchive.c:106 -#: access/transam/xlogarchive.c:265 commands/copy.c:1776 commands/copy.c:2800 -#: commands/extension.c:3109 commands/tablespace.c:782 -#: commands/tablespace.c:873 guc-file.l:1001 replication/basebackup.c:407 -#: replication/basebackup.c:475 replication/logical/snapbuild.c:1491 -#: storage/file/copydir.c:72 storage/file/copydir.c:115 storage/file/fd.c:2826 -#: storage/file/fd.c:2918 utils/adt/dbsize.c:70 utils/adt/dbsize.c:220 +#: access/transam/xlog.c:10194 access/transam/xlog.c:10232 +#: access/transam/xlog.c:10441 access/transam/xlogarchive.c:106 +#: access/transam/xlogarchive.c:265 commands/copy.c:1816 commands/copy.c:2840 +#: commands/extension.c:3133 commands/tablespace.c:782 +#: commands/tablespace.c:873 guc-file.l:1001 replication/basebackup.c:409 +#: replication/basebackup.c:477 replication/logical/snapbuild.c:1496 +#: storage/file/copydir.c:72 storage/file/copydir.c:115 storage/file/fd.c:2903 +#: storage/file/fd.c:2995 utils/adt/dbsize.c:70 utils/adt/dbsize.c:220 #: utils/adt/dbsize.c:300 utils/adt/genfile.c:114 utils/adt/genfile.c:333 #, c-format msgid "could not stat file \"%s\": %m" msgstr "konnte »stat« für Datei »%s« nicht ausführen: %m" -#: access/transam/xlog.c:10126 access/transam/xlog.c:10164 +#: access/transam/xlog.c:10201 access/transam/xlog.c:10239 #, c-format msgid "If you're sure there is no backup in progress, remove file \"%s\" and try again." msgstr "Wenn Sie sicher sind, dass noch kein Backup läuft, entfernen Sie die Datei »%s« und versuchen Sie es noch einmal." -#: access/transam/xlog.c:10143 access/transam/xlog.c:10181 -#: access/transam/xlog.c:10511 +#: access/transam/xlog.c:10218 access/transam/xlog.c:10256 +#: access/transam/xlog.c:10648 #, c-format msgid "could not write file \"%s\": %m" msgstr "konnte Datei »%s« nicht schreiben: %m" -#: access/transam/xlog.c:10300 +#: access/transam/xlog.c:10418 #, c-format msgid "exclusive backup not in progress" msgstr "es läuft kein exklusives Backup" -#: access/transam/xlog.c:10340 +#: access/transam/xlog.c:10445 #, c-format msgid "a backup is not in progress" msgstr "es läuft kein Backup" -#: access/transam/xlog.c:10385 access/transam/xlog.c:10398 -#: access/transam/xlog.c:10738 access/transam/xlog.c:10744 -#: access/transam/xlog.c:10828 access/transam/xlogfuncs.c:695 +#: access/transam/xlog.c:10522 access/transam/xlog.c:10535 +#: access/transam/xlog.c:10875 access/transam/xlog.c:10881 +#: access/transam/xlog.c:10965 access/transam/xlogfuncs.c:690 #, c-format msgid "invalid data in file \"%s\"" msgstr "ungültige Daten in Datei »%s«" -#: access/transam/xlog.c:10402 replication/basebackup.c:936 +#: access/transam/xlog.c:10539 replication/basebackup.c:938 #, c-format msgid "the standby was promoted during online backup" msgstr "der Standby-Server wurde während der Online-Sicherung zum Primärserver befördert" -#: access/transam/xlog.c:10403 replication/basebackup.c:937 +#: access/transam/xlog.c:10540 replication/basebackup.c:939 #, c-format msgid "This means that the backup being taken is corrupt and should not be used. Try taking another online backup." msgstr "Das bedeutet, dass die aktuelle Online-Sicherung verfälscht ist und nicht verwendet werden sollte. Versuchen Sie, eine neue Online-Sicherung durchzuführen." -#: access/transam/xlog.c:10448 +#: access/transam/xlog.c:10585 #, c-format msgid "WAL generated with full_page_writes=off was replayed during online backup" msgstr "mit full_page_writes=off erzeugtes WAL wurde während der Online-Sicherung zurückgespielt" -#: access/transam/xlog.c:10560 +#: access/transam/xlog.c:10697 #, c-format msgid "pg_stop_backup cleanup done, waiting for required WAL segments to be archived" msgstr "Aufräumen nach pg_stop_backup beendet, warte bis die benötigten WAL-Segmente archiviert sind" -#: access/transam/xlog.c:10570 +#: access/transam/xlog.c:10707 #, c-format msgid "pg_stop_backup still waiting for all required WAL segments to be archived (%d seconds elapsed)" msgstr "pg_stop_backup wartet immer noch, bis alle benötigten WAL-Segmente archiviert sind (%d Sekunden abgelaufen)" -#: access/transam/xlog.c:10572 +#: access/transam/xlog.c:10709 #, c-format msgid "Check that your archive_command is executing properly. pg_stop_backup can be canceled safely, but the database backup will not be usable without all the WAL segments." msgstr "Prüfen Sie, ob das archive_command korrekt ausgeführt wird. pg_stop_backup kann gefahrlos abgebrochen werden, aber die Datenbanksicherung wird ohne die fehlenden WAL-Segmente nicht benutzbar sein." -#: access/transam/xlog.c:10579 +#: access/transam/xlog.c:10716 #, c-format msgid "pg_stop_backup complete, all required WAL segments have been archived" msgstr "pg_stop_backup abgeschlossen, alle benötigten WAL-Segmente wurden archiviert" -#: access/transam/xlog.c:10583 +#: access/transam/xlog.c:10720 #, c-format msgid "WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup" msgstr "WAL-Archivierung ist nicht eingeschaltet; Sie müssen dafür sorgen, dass alle benötigten WAL-Segmente auf andere Art kopiert werden, um die Sicherung abzuschließen" #. translator: %s is an XLog record description -#: access/transam/xlog.c:10868 +#: access/transam/xlog.c:11005 #, c-format msgid "xlog redo at %X/%X for %s" msgstr "xlog redo bei %X/%X für %s" -#: access/transam/xlog.c:10917 +#: access/transam/xlog.c:11054 #, c-format msgid "online backup mode was not canceled" msgstr "Online-Sicherungsmodus wurde nicht storniert" -#: access/transam/xlog.c:10918 +#: access/transam/xlog.c:11055 #, c-format msgid "File \"%s\" could not be renamed to \"%s\": %m." msgstr "Konnte Datei »%s« nicht in »%s« umbenennen: %m." -#: access/transam/xlog.c:10927 access/transam/xlog.c:10939 -#: access/transam/xlog.c:10949 +#: access/transam/xlog.c:11064 access/transam/xlog.c:11076 +#: access/transam/xlog.c:11086 #, c-format msgid "online backup mode canceled" msgstr "Online-Sicherungsmodus storniert" -#: access/transam/xlog.c:10940 +#: access/transam/xlog.c:11077 #, c-format msgid "Files \"%s\" and \"%s\" were renamed to \"%s\" and \"%s\", respectively." msgstr "Dateien »%s« und »%s« wurden in »%s« und »%s« umbenannt." -#: access/transam/xlog.c:10950 +#: access/transam/xlog.c:11087 #, c-format msgid "File \"%s\" was renamed to \"%s\", but file \"%s\" could not be renamed to \"%s\": %m." msgstr "Datei »%s« wurde in »%s« umbenannt, aber Datei »%s« konnte nicht in »%s« umbenannt werden: %m." -#: access/transam/xlog.c:11072 access/transam/xlogutils.c:718 -#: replication/walreceiver.c:994 replication/walsender.c:2114 +#: access/transam/xlog.c:11209 access/transam/xlogutils.c:718 +#: replication/walreceiver.c:994 replication/walsender.c:2156 #, c-format msgid "could not seek in log segment %s to offset %u: %m" msgstr "konnte Positionszeiger von Logsegment %s nicht auf %u setzen: %m" -#: access/transam/xlog.c:11084 +#: access/transam/xlog.c:11221 #, c-format msgid "could not read from log segment %s, offset %u: %m" msgstr "konnte nicht aus Logsegment %s, Position %u lesen: %m" -#: access/transam/xlog.c:11558 +#: access/transam/xlog.c:11695 #, c-format msgid "received promote request" msgstr "Anforderung zum Befördern empfangen" -#: access/transam/xlog.c:11571 +#: access/transam/xlog.c:11708 #, c-format msgid "trigger file found: %s" msgstr "Triggerdatei gefunden: %s" -#: access/transam/xlog.c:11580 +#: access/transam/xlog.c:11717 #, c-format msgid "could not stat trigger file \"%s\": %m" msgstr "konnte »stat« für Trigger-Datei »%s« nicht ausführen: %m" @@ -2712,8 +2542,8 @@ msgid "%s \"%s\": %s" msgstr "%s »%s«: %s" #: access/transam/xlogarchive.c:458 replication/logical/snapbuild.c:1619 -#: replication/slot.c:480 replication/slot.c:992 replication/slot.c:1100 -#: storage/file/fd.c:635 storage/file/fd.c:693 utils/time/snapmgr.c:1246 +#: replication/slot.c:496 replication/slot.c:1009 replication/slot.c:1117 +#: storage/file/fd.c:642 storage/file/fd.c:700 utils/time/snapmgr.c:1298 #, c-format msgid "could not rename file \"%s\" to \"%s\": %m" msgstr "konnte Datei »%s« nicht in »%s« umbenennen: %m" @@ -2728,102 +2558,102 @@ msgstr "konnte Archivstatusdatei »%s« nicht erstellen: %m" msgid "could not write archive status file \"%s\": %m" msgstr "konnte Archivstatusdatei »%s« nicht schreiben: %m" -#: access/transam/xlogfuncs.c:58 +#: access/transam/xlogfuncs.c:56 #, c-format msgid "aborting backup due to backend exiting before pg_stop_backup was called" msgstr "Backup wird abgebrochen, weil Backend-Prozess beendete, bevor pg_stop_backup aufgerufen wurde" -#: access/transam/xlogfuncs.c:88 +#: access/transam/xlogfuncs.c:87 #, c-format msgid "a backup is already in progress in this session" msgstr "ein Backup läuft bereits in dieser Sitzung" -#: access/transam/xlogfuncs.c:94 commands/tablespace.c:705 -#: commands/tablespace.c:715 postmaster/postmaster.c:1406 -#: replication/basebackup.c:295 replication/basebackup.c:635 -#: storage/file/copydir.c:53 storage/file/copydir.c:96 storage/file/fd.c:2292 -#: storage/file/fd.c:2891 storage/ipc/dsm.c:300 utils/adt/genfile.c:439 +#: access/transam/xlogfuncs.c:93 commands/tablespace.c:705 +#: commands/tablespace.c:715 postmaster/postmaster.c:1424 +#: replication/basebackup.c:297 replication/basebackup.c:637 +#: storage/file/copydir.c:53 storage/file/copydir.c:96 storage/file/fd.c:2369 +#: storage/file/fd.c:2968 storage/ipc/dsm.c:300 utils/adt/genfile.c:439 #: utils/adt/misc.c:411 utils/misc/tzparser.c:339 #, c-format msgid "could not open directory \"%s\": %m" msgstr "konnte Verzeichnis »%s« nicht öffnen: %m" -#: access/transam/xlogfuncs.c:155 access/transam/xlogfuncs.c:229 +#: access/transam/xlogfuncs.c:153 access/transam/xlogfuncs.c:226 #, c-format msgid "non-exclusive backup in progress" msgstr "es läuft ein nicht-exklusives Backup" -#: access/transam/xlogfuncs.c:156 access/transam/xlogfuncs.c:230 +#: access/transam/xlogfuncs.c:154 access/transam/xlogfuncs.c:227 #, c-format msgid "Did you mean to use pg_stop_backup('f')?" msgstr "Meinten Sie pg_stop_backup('f')?" -#: access/transam/xlogfuncs.c:200 commands/event_trigger.c:1445 -#: commands/event_trigger.c:1996 commands/extension.c:1728 -#: commands/extension.c:1837 commands/extension.c:2030 commands/prepare.c:702 +#: access/transam/xlogfuncs.c:197 commands/event_trigger.c:1445 +#: commands/event_trigger.c:1996 commands/extension.c:1732 +#: commands/extension.c:1841 commands/extension.c:2034 commands/prepare.c:702 #: executor/execQual.c:1757 executor/execQual.c:1782 executor/execQual.c:2157 -#: executor/execQual.c:5423 executor/functions.c:1022 foreign/foreign.c:492 -#: replication/logical/logicalfuncs.c:175 replication/logical/origin.c:1391 -#: replication/slotfuncs.c:189 replication/walsender.c:2763 +#: executor/execQual.c:5438 executor/functions.c:1031 foreign/foreign.c:492 +#: replication/logical/logicalfuncs.c:175 replication/logical/origin.c:1394 +#: replication/slotfuncs.c:189 replication/walsender.c:2882 #: utils/adt/jsonfuncs.c:1483 utils/adt/jsonfuncs.c:1613 #: utils/adt/jsonfuncs.c:1801 utils/adt/jsonfuncs.c:1928 #: utils/adt/jsonfuncs.c:2694 utils/adt/pgstatfuncs.c:554 -#: utils/adt/pgstatfuncs.c:655 utils/fmgr/funcapi.c:61 utils/misc/guc.c:8430 -#: utils/mmgr/portalmem.c:1074 +#: utils/adt/pgstatfuncs.c:655 utils/fmgr/funcapi.c:61 utils/misc/guc.c:8436 +#: utils/mmgr/portalmem.c:1088 #, c-format msgid "set-valued function called in context that cannot accept a set" msgstr "Funktion mit Mengenergebnis in einem Zusammenhang aufgerufen, der keine Mengenergebnisse verarbeiten kann" -#: access/transam/xlogfuncs.c:204 commands/event_trigger.c:1449 -#: commands/event_trigger.c:2000 commands/extension.c:1732 -#: commands/extension.c:1841 commands/extension.c:2034 commands/prepare.c:706 +#: access/transam/xlogfuncs.c:201 commands/event_trigger.c:1449 +#: commands/event_trigger.c:2000 commands/extension.c:1736 +#: commands/extension.c:1845 commands/extension.c:2038 commands/prepare.c:706 #: foreign/foreign.c:497 replication/logical/logicalfuncs.c:179 -#: replication/logical/origin.c:1395 replication/slotfuncs.c:193 -#: replication/walsender.c:2767 utils/adt/pgstatfuncs.c:558 -#: utils/adt/pgstatfuncs.c:659 utils/misc/guc.c:8434 utils/misc/pg_config.c:44 -#: utils/mmgr/portalmem.c:1078 +#: replication/logical/origin.c:1398 replication/slotfuncs.c:193 +#: replication/walsender.c:2886 utils/adt/pgstatfuncs.c:558 +#: utils/adt/pgstatfuncs.c:659 utils/misc/guc.c:8440 utils/misc/pg_config.c:44 +#: utils/mmgr/portalmem.c:1092 #, c-format msgid "materialize mode required, but it is not allowed in this context" msgstr "Materialisierungsmodus wird benötigt, ist aber in diesem Zusammenhang nicht erlaubt" -#: access/transam/xlogfuncs.c:247 +#: access/transam/xlogfuncs.c:243 #, c-format msgid "non-exclusive backup is not in progress" msgstr "es läuft kein nicht-exklusives Backup" -#: access/transam/xlogfuncs.c:248 +#: access/transam/xlogfuncs.c:244 #, c-format msgid "Did you mean to use pg_stop_backup('t')?" msgstr "Meinten Sie pg_stop_backup('t')?" -#: access/transam/xlogfuncs.c:326 +#: access/transam/xlogfuncs.c:321 #, c-format msgid "WAL level not sufficient for creating a restore point" msgstr "WAL-Level nicht ausreichend, um Restore-Punkt anzulegen" -#: access/transam/xlogfuncs.c:334 +#: access/transam/xlogfuncs.c:329 #, c-format msgid "value too long for restore point (maximum %d characters)" msgstr "Wert zu lang für Restore-Punkt (maximal %d Zeichen)" -#: access/transam/xlogfuncs.c:472 +#: access/transam/xlogfuncs.c:467 #, c-format msgid "pg_xlogfile_name_offset() cannot be executed during recovery." msgstr "pg_xlogfile_name_offset() kann nicht während der Wiederherstellung ausgeführt werden." -#: access/transam/xlogfuncs.c:528 +#: access/transam/xlogfuncs.c:523 #, c-format msgid "pg_xlogfile_name() cannot be executed during recovery." msgstr "pg_xlogfile_name() kann nicht während der Wiederherstellung ausgeführt werden." -#: access/transam/xlogfuncs.c:548 access/transam/xlogfuncs.c:568 -#: access/transam/xlogfuncs.c:585 +#: access/transam/xlogfuncs.c:543 access/transam/xlogfuncs.c:563 +#: access/transam/xlogfuncs.c:580 #, c-format msgid "recovery is not in progress" msgstr "Wiederherstellung läuft nicht" -#: access/transam/xlogfuncs.c:549 access/transam/xlogfuncs.c:569 -#: access/transam/xlogfuncs.c:586 +#: access/transam/xlogfuncs.c:544 access/transam/xlogfuncs.c:564 +#: access/transam/xlogfuncs.c:581 #, c-format msgid "Recovery control functions can only be executed during recovery." msgstr "Wiederherstellungskontrollfunktionen können nur während der Wiederherstellung ausgeführt werden." @@ -2963,23 +2793,23 @@ msgstr "Datensatz mit ungültiger Länge bei %X/%X" msgid "invalid compressed image at %X/%X, block %d" msgstr "ungültiges komprimiertes Abbild bei %X/%X, Block %d" -#: access/transam/xlogutils.c:739 replication/walsender.c:2131 +#: access/transam/xlogutils.c:739 replication/walsender.c:2173 #, c-format msgid "could not read from log segment %s, offset %u, length %lu: %m" msgstr "konnte nicht aus Logsegment %s bei Position %u, Länge %lu lesen: %m" -#: bootstrap/bootstrap.c:269 postmaster/postmaster.c:793 tcop/postgres.c:3501 +#: bootstrap/bootstrap.c:269 postmaster/postmaster.c:811 tcop/postgres.c:3499 #, c-format msgid "--%s requires a value" msgstr "--%s benötigt einen Wert" -#: bootstrap/bootstrap.c:274 postmaster/postmaster.c:798 tcop/postgres.c:3506 +#: bootstrap/bootstrap.c:274 postmaster/postmaster.c:816 tcop/postgres.c:3504 #, c-format msgid "-c %s requires a value" msgstr "-c %s benötigt einen Wert" -#: bootstrap/bootstrap.c:285 postmaster/postmaster.c:810 -#: postmaster/postmaster.c:823 +#: bootstrap/bootstrap.c:285 postmaster/postmaster.c:828 +#: postmaster/postmaster.c:841 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Versuchen Sie »%s --help« für weitere Informationen.\n" @@ -2989,142 +2819,142 @@ msgstr "Versuchen Sie »%s --help« für weitere Informationen.\n" msgid "%s: invalid command-line arguments\n" msgstr "%s: ungültige Kommandozeilenargumente\n" -#: catalog/aclchk.c:193 +#: catalog/aclchk.c:201 #, c-format msgid "grant options can only be granted to roles" msgstr "Grant-Optionen können nur Rollen gewährt werden" -#: catalog/aclchk.c:316 +#: catalog/aclchk.c:324 #, c-format msgid "no privileges were granted for column \"%s\" of relation \"%s\"" msgstr "es wurden keine Privilegien für Spalte »%s« von Relation »%s« gewährt" -#: catalog/aclchk.c:321 +#: catalog/aclchk.c:329 #, c-format msgid "no privileges were granted for \"%s\"" msgstr "es wurden keine Privilegien für »%s« gewährt" -#: catalog/aclchk.c:329 +#: catalog/aclchk.c:337 #, c-format msgid "not all privileges were granted for column \"%s\" of relation \"%s\"" msgstr "es wurden nicht alle Priviligien für Spalte »%s« von Relation »%s« gewährt" -#: catalog/aclchk.c:334 +#: catalog/aclchk.c:342 #, c-format msgid "not all privileges were granted for \"%s\"" msgstr "es wurden nicht alle Priviligien für »%s« gewährt" -#: catalog/aclchk.c:345 +#: catalog/aclchk.c:353 #, c-format msgid "no privileges could be revoked for column \"%s\" of relation \"%s\"" msgstr "es konnten keine Privilegien für Spalte »%s« von Relation »%s« entzogen werden" -#: catalog/aclchk.c:350 +#: catalog/aclchk.c:358 #, c-format msgid "no privileges could be revoked for \"%s\"" msgstr "es konnten keine Privilegien für »%s« entzogen werden" -#: catalog/aclchk.c:358 +#: catalog/aclchk.c:366 #, c-format msgid "not all privileges could be revoked for column \"%s\" of relation \"%s\"" msgstr "es konnten nicht alle Privilegien für Spalte »%s« von Relation »%s« entzogen werden" -#: catalog/aclchk.c:363 +#: catalog/aclchk.c:371 #, c-format msgid "not all privileges could be revoked for \"%s\"" msgstr "es konnten nicht alle Privilegien für »%s« entzogen werden" -#: catalog/aclchk.c:445 catalog/aclchk.c:935 +#: catalog/aclchk.c:453 catalog/aclchk.c:943 #, c-format msgid "invalid privilege type %s for relation" msgstr "ungültiger Privilegtyp %s für Relation" -#: catalog/aclchk.c:449 catalog/aclchk.c:939 +#: catalog/aclchk.c:457 catalog/aclchk.c:947 #, c-format msgid "invalid privilege type %s for sequence" msgstr "ungültiger Privilegtyp %s für Sequenz" -#: catalog/aclchk.c:453 +#: catalog/aclchk.c:461 #, c-format msgid "invalid privilege type %s for database" msgstr "ungültiger Privilegtyp %s für Datenbank" -#: catalog/aclchk.c:457 +#: catalog/aclchk.c:465 #, c-format msgid "invalid privilege type %s for domain" msgstr "ungültiger Privilegtyp %s für Domäne" -#: catalog/aclchk.c:461 catalog/aclchk.c:943 +#: catalog/aclchk.c:469 catalog/aclchk.c:951 #, c-format msgid "invalid privilege type %s for function" msgstr "ungültiger Privilegtyp %s für Funktion" -#: catalog/aclchk.c:465 +#: catalog/aclchk.c:473 #, c-format msgid "invalid privilege type %s for language" msgstr "ungültiger Privilegtyp %s für Sprache" -#: catalog/aclchk.c:469 +#: catalog/aclchk.c:477 #, c-format msgid "invalid privilege type %s for large object" msgstr "ungültiger Privilegtyp %s für Large Object" -#: catalog/aclchk.c:473 +#: catalog/aclchk.c:481 #, c-format msgid "invalid privilege type %s for schema" msgstr "ungültiger Privilegtyp %s für Schema" -#: catalog/aclchk.c:477 +#: catalog/aclchk.c:485 #, c-format msgid "invalid privilege type %s for tablespace" msgstr "ungültiger Privilegtyp %s für Tablespace" -#: catalog/aclchk.c:481 catalog/aclchk.c:947 +#: catalog/aclchk.c:489 catalog/aclchk.c:955 #, c-format msgid "invalid privilege type %s for type" msgstr "ungültiger Privilegtyp %s für Typ" -#: catalog/aclchk.c:485 +#: catalog/aclchk.c:493 #, c-format msgid "invalid privilege type %s for foreign-data wrapper" msgstr "ungültiger Privilegtyp %s für Fremddaten-Wrapper" -#: catalog/aclchk.c:489 +#: catalog/aclchk.c:497 #, c-format msgid "invalid privilege type %s for foreign server" msgstr "ungültiger Privilegtyp %s für Fremdserver" -#: catalog/aclchk.c:528 +#: catalog/aclchk.c:536 #, c-format msgid "column privileges are only valid for relations" msgstr "Spaltenprivilegien sind nur für Relation gültig" -#: catalog/aclchk.c:687 catalog/aclchk.c:3915 catalog/aclchk.c:4697 +#: catalog/aclchk.c:695 catalog/aclchk.c:3923 catalog/aclchk.c:4705 #: catalog/objectaddress.c:873 catalog/pg_largeobject.c:113 #: storage/large_object/inv_api.c:291 #, c-format msgid "large object %u does not exist" msgstr "Large Object %u existiert nicht" -#: catalog/aclchk.c:874 catalog/aclchk.c:882 commands/collationcmds.c:92 -#: commands/copy.c:1008 commands/copy.c:1026 commands/copy.c:1034 -#: commands/copy.c:1042 commands/copy.c:1050 commands/copy.c:1058 -#: commands/copy.c:1066 commands/copy.c:1074 commands/copy.c:1082 -#: commands/copy.c:1098 commands/copy.c:1112 commands/copy.c:1131 -#: commands/copy.c:1146 commands/dbcommands.c:155 commands/dbcommands.c:163 +#: catalog/aclchk.c:882 catalog/aclchk.c:890 commands/collationcmds.c:92 +#: commands/copy.c:1048 commands/copy.c:1066 commands/copy.c:1074 +#: commands/copy.c:1082 commands/copy.c:1090 commands/copy.c:1098 +#: commands/copy.c:1106 commands/copy.c:1114 commands/copy.c:1122 +#: commands/copy.c:1138 commands/copy.c:1152 commands/copy.c:1171 +#: commands/copy.c:1186 commands/dbcommands.c:155 commands/dbcommands.c:163 #: commands/dbcommands.c:171 commands/dbcommands.c:179 #: commands/dbcommands.c:187 commands/dbcommands.c:195 #: commands/dbcommands.c:203 commands/dbcommands.c:211 #: commands/dbcommands.c:219 commands/dbcommands.c:1397 #: commands/dbcommands.c:1405 commands/dbcommands.c:1413 -#: commands/dbcommands.c:1421 commands/extension.c:1218 -#: commands/extension.c:1226 commands/extension.c:1234 -#: commands/extension.c:1242 commands/extension.c:2760 +#: commands/dbcommands.c:1421 commands/extension.c:1222 +#: commands/extension.c:1230 commands/extension.c:1238 +#: commands/extension.c:1246 commands/extension.c:2764 #: commands/foreigncmds.c:539 commands/foreigncmds.c:548 #: commands/functioncmds.c:533 commands/functioncmds.c:649 #: commands/functioncmds.c:657 commands/functioncmds.c:665 -#: commands/functioncmds.c:673 commands/functioncmds.c:2085 -#: commands/functioncmds.c:2093 commands/sequence.c:1189 +#: commands/functioncmds.c:673 commands/functioncmds.c:2105 +#: commands/functioncmds.c:2113 commands/sequence.c:1189 #: commands/sequence.c:1197 commands/sequence.c:1205 commands/sequence.c:1213 #: commands/sequence.c:1221 commands/sequence.c:1229 commands/sequence.c:1237 #: commands/sequence.c:1245 commands/typecmds.c:295 commands/typecmds.c:1382 @@ -3142,420 +2972,420 @@ msgstr "Large Object %u existiert nicht" msgid "conflicting or redundant options" msgstr "widersprüchliche oder überflüssige Optionen" -#: catalog/aclchk.c:980 +#: catalog/aclchk.c:988 #, c-format msgid "default privileges cannot be set for columns" msgstr "Vorgabeprivilegien können nicht für Spalten gesetzt werden" -#: catalog/aclchk.c:1494 catalog/objectaddress.c:1390 commands/analyze.c:376 -#: commands/copy.c:4419 commands/sequence.c:1491 commands/tablecmds.c:5197 -#: commands/tablecmds.c:5303 commands/tablecmds.c:5363 -#: commands/tablecmds.c:5476 commands/tablecmds.c:5533 -#: commands/tablecmds.c:5627 commands/tablecmds.c:5723 -#: commands/tablecmds.c:7875 commands/tablecmds.c:8080 -#: commands/tablecmds.c:8500 commands/trigger.c:642 parser/analyze.c:2231 -#: parser/parse_relation.c:2542 parser/parse_relation.c:2604 -#: parser/parse_target.c:940 parser/parse_type.c:127 utils/adt/acl.c:2840 -#: utils/adt/ruleutils.c:1981 +#: catalog/aclchk.c:1502 catalog/objectaddress.c:1390 commands/analyze.c:376 +#: commands/copy.c:4459 commands/sequence.c:1491 commands/tablecmds.c:5211 +#: commands/tablecmds.c:5317 commands/tablecmds.c:5377 +#: commands/tablecmds.c:5490 commands/tablecmds.c:5547 +#: commands/tablecmds.c:5641 commands/tablecmds.c:5737 +#: commands/tablecmds.c:7929 commands/tablecmds.c:8191 +#: commands/tablecmds.c:8611 commands/trigger.c:642 parser/analyze.c:2228 +#: parser/parse_relation.c:2628 parser/parse_relation.c:2690 +#: parser/parse_target.c:951 parser/parse_type.c:127 utils/adt/acl.c:2840 +#: utils/adt/ruleutils.c:1987 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist" msgstr "Spalte »%s« von Relation »%s« existiert nicht" -#: catalog/aclchk.c:1763 catalog/objectaddress.c:1203 commands/sequence.c:1078 -#: commands/tablecmds.c:223 commands/tablecmds.c:12007 utils/adt/acl.c:2076 +#: catalog/aclchk.c:1771 catalog/objectaddress.c:1203 commands/sequence.c:1078 +#: commands/tablecmds.c:224 commands/tablecmds.c:12168 utils/adt/acl.c:2076 #: utils/adt/acl.c:2106 utils/adt/acl.c:2138 utils/adt/acl.c:2170 #: utils/adt/acl.c:2198 utils/adt/acl.c:2228 #, c-format msgid "\"%s\" is not a sequence" msgstr "»%s« ist keine Sequenz" -#: catalog/aclchk.c:1801 +#: catalog/aclchk.c:1809 #, c-format msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" msgstr "Sequenz »%s« unterstützt nur die Privilegien USAGE, SELECT und UPDATE" -#: catalog/aclchk.c:1818 +#: catalog/aclchk.c:1826 #, c-format msgid "invalid privilege type USAGE for table" msgstr "ungültiger Privilegtyp USAGE für Tabelle" -#: catalog/aclchk.c:1986 +#: catalog/aclchk.c:1994 #, c-format msgid "invalid privilege type %s for column" msgstr "ungültiger Privilegtyp %s für Spalte" -#: catalog/aclchk.c:1999 +#: catalog/aclchk.c:2007 #, c-format msgid "sequence \"%s\" only supports SELECT column privileges" msgstr "Sequenz »%s« unterstützt nur den Spaltenprivilegientyp SELECT" -#: catalog/aclchk.c:2593 +#: catalog/aclchk.c:2601 #, c-format msgid "language \"%s\" is not trusted" msgstr "Sprache »%s« ist nicht »trusted«" -#: catalog/aclchk.c:2595 +#: catalog/aclchk.c:2603 #, c-format msgid "GRANT and REVOKE are not allowed on untrusted languages, because only superusers can use untrusted languages." msgstr "GRANT und REVOKE sind für nicht vertrauenswürdige Sprachen nicht erlaubt, weil nur Superuser nicht vertrauenswürdige Sprachen verwenden können." -#: catalog/aclchk.c:3121 +#: catalog/aclchk.c:3129 #, c-format msgid "cannot set privileges of array types" msgstr "für Array-Typen können keine Privilegien gesetzt werden" -#: catalog/aclchk.c:3122 +#: catalog/aclchk.c:3130 #, c-format msgid "Set the privileges of the element type instead." msgstr "Setzen Sie stattdessen die Privilegien des Elementtyps." -#: catalog/aclchk.c:3129 catalog/objectaddress.c:1523 commands/typecmds.c:3146 +#: catalog/aclchk.c:3137 catalog/objectaddress.c:1523 commands/typecmds.c:3161 #, c-format msgid "\"%s\" is not a domain" msgstr "»%s« ist keine Domäne" -#: catalog/aclchk.c:3252 +#: catalog/aclchk.c:3260 #, c-format msgid "unrecognized privilege type \"%s\"" msgstr "unbekannter Privilegtyp »%s«" -#: catalog/aclchk.c:3301 +#: catalog/aclchk.c:3309 #, c-format msgid "permission denied for column %s" msgstr "keine Berechtigung für Spalte %s" -#: catalog/aclchk.c:3303 +#: catalog/aclchk.c:3311 #, c-format msgid "permission denied for relation %s" msgstr "keine Berechtigung für Relation %s" -#: catalog/aclchk.c:3305 commands/sequence.c:561 commands/sequence.c:786 +#: catalog/aclchk.c:3313 commands/sequence.c:561 commands/sequence.c:786 #: commands/sequence.c:828 commands/sequence.c:865 commands/sequence.c:1543 #, c-format msgid "permission denied for sequence %s" msgstr "keine Berechtigung für Sequenz %s" -#: catalog/aclchk.c:3307 +#: catalog/aclchk.c:3315 #, c-format msgid "permission denied for database %s" msgstr "keine Berechtigung für Datenbank %s" -#: catalog/aclchk.c:3309 +#: catalog/aclchk.c:3317 #, c-format msgid "permission denied for function %s" msgstr "keine Berechtigung für Funktion %s" -#: catalog/aclchk.c:3311 +#: catalog/aclchk.c:3319 #, c-format msgid "permission denied for operator %s" msgstr "keine Berechtigung für Operator %s" -#: catalog/aclchk.c:3313 +#: catalog/aclchk.c:3321 #, c-format msgid "permission denied for type %s" msgstr "keine Berechtigung für Typ %s" -#: catalog/aclchk.c:3315 +#: catalog/aclchk.c:3323 #, c-format msgid "permission denied for language %s" msgstr "keine Berechtigung für Sprache %s" -#: catalog/aclchk.c:3317 +#: catalog/aclchk.c:3325 #, c-format msgid "permission denied for large object %s" msgstr "keine Berechtigung für Large Object %s" -#: catalog/aclchk.c:3319 +#: catalog/aclchk.c:3327 #, c-format msgid "permission denied for schema %s" msgstr "keine Berechtigung für Schema %s" -#: catalog/aclchk.c:3321 +#: catalog/aclchk.c:3329 #, c-format msgid "permission denied for operator class %s" msgstr "keine Berechtigung für Operatorklasse %s" -#: catalog/aclchk.c:3323 +#: catalog/aclchk.c:3331 #, c-format msgid "permission denied for operator family %s" msgstr "keine Berechtigung für Operatorfamilie %s" -#: catalog/aclchk.c:3325 +#: catalog/aclchk.c:3333 #, c-format msgid "permission denied for collation %s" msgstr "keine Berechtigung für Sortierfolge %s" -#: catalog/aclchk.c:3327 +#: catalog/aclchk.c:3335 #, c-format msgid "permission denied for conversion %s" msgstr "keine Berechtigung für Konversion %s" -#: catalog/aclchk.c:3329 +#: catalog/aclchk.c:3337 #, c-format msgid "permission denied for tablespace %s" msgstr "keine Berechtigung für Tablespace %s" -#: catalog/aclchk.c:3331 +#: catalog/aclchk.c:3339 #, c-format msgid "permission denied for text search dictionary %s" msgstr "keine Berechtigung für Textsuchewörterbuch %s" -#: catalog/aclchk.c:3333 +#: catalog/aclchk.c:3341 #, c-format msgid "permission denied for text search configuration %s" msgstr "keine Berechtigung für Textsuchekonfiguration %s" -#: catalog/aclchk.c:3335 +#: catalog/aclchk.c:3343 #, c-format msgid "permission denied for foreign-data wrapper %s" msgstr "keine Berechtigung für Fremddaten-Wrapper %s" -#: catalog/aclchk.c:3337 +#: catalog/aclchk.c:3345 #, c-format msgid "permission denied for foreign server %s" msgstr "keine Berechtigung für Fremdserver %s" -#: catalog/aclchk.c:3339 +#: catalog/aclchk.c:3347 #, c-format msgid "permission denied for event trigger %s" msgstr "keine Berechtigung für Ereignistrigger %s" -#: catalog/aclchk.c:3341 +#: catalog/aclchk.c:3349 #, c-format msgid "permission denied for extension %s" msgstr "keine Berechtigung für Erweiterung %s" -#: catalog/aclchk.c:3347 catalog/aclchk.c:3349 +#: catalog/aclchk.c:3355 catalog/aclchk.c:3357 #, c-format msgid "must be owner of relation %s" msgstr "Berechtigung nur für Eigentümer der Relation %s" -#: catalog/aclchk.c:3351 +#: catalog/aclchk.c:3359 #, c-format msgid "must be owner of sequence %s" msgstr "Berechtigung nur für Eigentümer der Sequenz %s" -#: catalog/aclchk.c:3353 +#: catalog/aclchk.c:3361 #, c-format msgid "must be owner of database %s" msgstr "Berechtigung nur für Eigentümer der Datenbank %s" -#: catalog/aclchk.c:3355 +#: catalog/aclchk.c:3363 #, c-format msgid "must be owner of function %s" msgstr "Berechtigung nur für Eigentümer der Funktion %s" -#: catalog/aclchk.c:3357 +#: catalog/aclchk.c:3365 #, c-format msgid "must be owner of operator %s" msgstr "Berechtigung nur für Eigentümer des Operators %s" -#: catalog/aclchk.c:3359 +#: catalog/aclchk.c:3367 #, c-format msgid "must be owner of type %s" msgstr "Berechtigung nur für Eigentümer des Typs %s" -#: catalog/aclchk.c:3361 +#: catalog/aclchk.c:3369 #, c-format msgid "must be owner of language %s" msgstr "Berechtigung nur für Eigentümer der Sprache %s" -#: catalog/aclchk.c:3363 +#: catalog/aclchk.c:3371 #, c-format msgid "must be owner of large object %s" msgstr "Berechtigung nur für Eigentümer des Large Object %s" -#: catalog/aclchk.c:3365 +#: catalog/aclchk.c:3373 #, c-format msgid "must be owner of schema %s" msgstr "Berechtigung nur für Eigentümer des Schemas %s" -#: catalog/aclchk.c:3367 +#: catalog/aclchk.c:3375 #, c-format msgid "must be owner of operator class %s" msgstr "Berechtigung nur für Eigentümer der Operatorklasse %s" -#: catalog/aclchk.c:3369 +#: catalog/aclchk.c:3377 #, c-format msgid "must be owner of operator family %s" msgstr "Berechtigung nur für Eigentümer der Operatorfamilie %s" -#: catalog/aclchk.c:3371 +#: catalog/aclchk.c:3379 #, c-format msgid "must be owner of collation %s" msgstr "Berechtigung nur für Eigentümer der Sortierfolge %s" -#: catalog/aclchk.c:3373 +#: catalog/aclchk.c:3381 #, c-format msgid "must be owner of conversion %s" msgstr "Berechtigung nur für Eigentümer der Konversion %s" -#: catalog/aclchk.c:3375 +#: catalog/aclchk.c:3383 #, c-format msgid "must be owner of tablespace %s" msgstr "Berechtigung nur für Eigentümer des Tablespace %s" -#: catalog/aclchk.c:3377 +#: catalog/aclchk.c:3385 #, c-format msgid "must be owner of text search dictionary %s" msgstr "Berechtigung nur für Eigentümer des Textsuchewörterbuches %s" -#: catalog/aclchk.c:3379 +#: catalog/aclchk.c:3387 #, c-format msgid "must be owner of text search configuration %s" msgstr "Berechtigung nur für Eigentümer der Textsuchekonfiguration %s" -#: catalog/aclchk.c:3381 +#: catalog/aclchk.c:3389 #, c-format msgid "must be owner of foreign-data wrapper %s" msgstr "Berechtigung nur für Eigentümer des Fremddaten-Wrappers %s" -#: catalog/aclchk.c:3383 +#: catalog/aclchk.c:3391 #, c-format msgid "must be owner of foreign server %s" msgstr "Berechtigung nur für Eigentümer des Fremdservers %s" -#: catalog/aclchk.c:3385 +#: catalog/aclchk.c:3393 #, c-format msgid "must be owner of event trigger %s" msgstr "Berechtigung nur für Eigentümer des Ereignistriggers %s" -#: catalog/aclchk.c:3387 +#: catalog/aclchk.c:3395 #, c-format msgid "must be owner of extension %s" msgstr "Berechtigung nur für Eigentümer der Erweiterung %s" -#: catalog/aclchk.c:3429 +#: catalog/aclchk.c:3437 #, c-format msgid "permission denied for column \"%s\" of relation \"%s\"" msgstr "keine Berechtigung für Spalte »%s« von Relation »%s«" -#: catalog/aclchk.c:3548 catalog/aclchk.c:3556 +#: catalog/aclchk.c:3556 catalog/aclchk.c:3564 #, c-format msgid "attribute %d of relation with OID %u does not exist" msgstr "Attribut %d der Relation mit OID %u existiert nicht" -#: catalog/aclchk.c:3629 catalog/aclchk.c:4548 +#: catalog/aclchk.c:3637 catalog/aclchk.c:4556 #, c-format msgid "relation with OID %u does not exist" msgstr "Relation mit OID %u existiert nicht" -#: catalog/aclchk.c:3728 catalog/aclchk.c:4966 +#: catalog/aclchk.c:3736 catalog/aclchk.c:4974 #, c-format msgid "database with OID %u does not exist" msgstr "Datenbank mit OID %u existiert nicht" -#: catalog/aclchk.c:3782 catalog/aclchk.c:4626 tcop/fastpath.c:223 +#: catalog/aclchk.c:3790 catalog/aclchk.c:4634 tcop/fastpath.c:223 #, c-format msgid "function with OID %u does not exist" msgstr "Funktion mit OID %u existiert nicht" -#: catalog/aclchk.c:3836 catalog/aclchk.c:4652 +#: catalog/aclchk.c:3844 catalog/aclchk.c:4660 #, c-format msgid "language with OID %u does not exist" msgstr "Sprache mit OID %u existiert nicht" -#: catalog/aclchk.c:4000 catalog/aclchk.c:4724 +#: catalog/aclchk.c:4008 catalog/aclchk.c:4732 #, c-format msgid "schema with OID %u does not exist" msgstr "Schema mit OID %u existiert nicht" -#: catalog/aclchk.c:4054 catalog/aclchk.c:4751 +#: catalog/aclchk.c:4062 catalog/aclchk.c:4759 #, c-format msgid "tablespace with OID %u does not exist" msgstr "Tablespace mit OID %u existiert nicht" -#: catalog/aclchk.c:4113 catalog/aclchk.c:4885 commands/foreigncmds.c:325 +#: catalog/aclchk.c:4121 catalog/aclchk.c:4893 commands/foreigncmds.c:325 #, c-format msgid "foreign-data wrapper with OID %u does not exist" msgstr "Fremddaten-Wrapper mit OID %u existiert nicht" -#: catalog/aclchk.c:4175 catalog/aclchk.c:4912 commands/foreigncmds.c:461 +#: catalog/aclchk.c:4183 catalog/aclchk.c:4920 commands/foreigncmds.c:461 #, c-format msgid "foreign server with OID %u does not exist" msgstr "Fremdserver mit OID %u existiert nicht" -#: catalog/aclchk.c:4235 catalog/aclchk.c:4574 +#: catalog/aclchk.c:4243 catalog/aclchk.c:4582 #, c-format msgid "type with OID %u does not exist" msgstr "Typ mit OID %u existiert nicht" -#: catalog/aclchk.c:4600 +#: catalog/aclchk.c:4608 #, c-format msgid "operator with OID %u does not exist" msgstr "Operator mit OID %u existiert nicht" -#: catalog/aclchk.c:4777 +#: catalog/aclchk.c:4785 #, c-format msgid "operator class with OID %u does not exist" msgstr "Operatorklasse mit OID %u existiert nicht" -#: catalog/aclchk.c:4804 +#: catalog/aclchk.c:4812 #, c-format msgid "operator family with OID %u does not exist" msgstr "Operatorfamilie mit OID %u existiert nicht" -#: catalog/aclchk.c:4831 +#: catalog/aclchk.c:4839 #, c-format msgid "text search dictionary with OID %u does not exist" msgstr "Textsuchewörterbuch mit OID %u existiert nicht" -#: catalog/aclchk.c:4858 +#: catalog/aclchk.c:4866 #, c-format msgid "text search configuration with OID %u does not exist" msgstr "Textsuchekonfiguration mit OID %u existiert nicht" -#: catalog/aclchk.c:4939 commands/event_trigger.c:587 +#: catalog/aclchk.c:4947 commands/event_trigger.c:587 #, c-format msgid "event trigger with OID %u does not exist" msgstr "Ereignistrigger mit OID %u existiert nicht" -#: catalog/aclchk.c:4992 +#: catalog/aclchk.c:5000 #, c-format msgid "collation with OID %u does not exist" msgstr "Sortierfolge mit OID %u existiert nicht" -#: catalog/aclchk.c:5018 +#: catalog/aclchk.c:5026 #, c-format msgid "conversion with OID %u does not exist" msgstr "Konversion mit OID %u existiert nicht" -#: catalog/aclchk.c:5059 +#: catalog/aclchk.c:5067 #, c-format msgid "extension with OID %u does not exist" msgstr "Erweiterung mit OID %u existiert nicht" -#: catalog/dependency.c:646 +#: catalog/dependency.c:645 #, c-format msgid "cannot drop %s because %s requires it" msgstr "kann %s nicht löschen, wird von %s benötigt" -#: catalog/dependency.c:649 +#: catalog/dependency.c:648 #, c-format msgid "You can drop %s instead." msgstr "Sie können stattdessen %s löschen." -#: catalog/dependency.c:811 catalog/pg_shdepend.c:576 +#: catalog/dependency.c:810 catalog/pg_shdepend.c:576 #, c-format msgid "cannot drop %s because it is required by the database system" msgstr "kann %s nicht löschen, wird vom Datenbanksystem benötigt" -#: catalog/dependency.c:927 +#: catalog/dependency.c:926 #, c-format msgid "drop auto-cascades to %s" msgstr "Löschvorgang löscht automatisch %s" -#: catalog/dependency.c:939 catalog/dependency.c:948 +#: catalog/dependency.c:938 catalog/dependency.c:947 #, c-format msgid "%s depends on %s" msgstr "%s hängt von %s ab" -#: catalog/dependency.c:960 catalog/dependency.c:969 +#: catalog/dependency.c:959 catalog/dependency.c:968 #, c-format msgid "drop cascades to %s" msgstr "Löschvorgang löscht ebenfalls %s" -#: catalog/dependency.c:977 catalog/pg_shdepend.c:687 +#: catalog/dependency.c:976 catalog/pg_shdepend.c:687 #, c-format msgid "" "\n" @@ -3570,191 +3400,201 @@ msgstr[1] "" "\n" "und %d weitere Objekte (Liste im Serverlog)" -#: catalog/dependency.c:989 +#: catalog/dependency.c:988 #, c-format msgid "cannot drop %s because other objects depend on it" msgstr "kann %s nicht löschen, weil andere Objekte davon abhängen" -#: catalog/dependency.c:993 catalog/dependency.c:1000 +#: catalog/dependency.c:992 catalog/dependency.c:999 #, c-format msgid "Use DROP ... CASCADE to drop the dependent objects too." msgstr "Verwenden Sie DROP ... CASCADE, um die abhängigen Objekte ebenfalls zu löschen." -#: catalog/dependency.c:997 +#: catalog/dependency.c:996 #, c-format msgid "cannot drop desired object(s) because other objects depend on them" msgstr "kann gewünschte Objekte nicht löschen, weil andere Objekte davon abhängen" #. translator: %d always has a value larger than 1 -#: catalog/dependency.c:1006 +#: catalog/dependency.c:1005 #, c-format msgid "drop cascades to %d other object" msgid_plural "drop cascades to %d other objects" msgstr[0] "Löschvorgang löscht ebenfalls %d weiteres Objekt" msgstr[1] "Löschvorgang löscht ebenfalls %d weitere Objekte" -#: catalog/dependency.c:1634 +#: catalog/dependency.c:1633 #, c-format msgid "constant of the type \"regrole\" cannot be used here" msgstr "Konstante vom Typ »regrole« kann hier nicht verwendet werden" -#: catalog/heap.c:277 +#: catalog/heap.c:278 #, c-format msgid "permission denied to create \"%s.%s\"" msgstr "keine Berechtigung, um »%s.%s« zu erzeugen" -#: catalog/heap.c:279 +#: catalog/heap.c:280 #, c-format msgid "System catalog modifications are currently disallowed." msgstr "Änderungen an Systemkatalogen sind gegenwärtig nicht erlaubt." -#: catalog/heap.c:414 commands/tablecmds.c:1438 commands/tablecmds.c:1895 -#: commands/tablecmds.c:4819 +#: catalog/heap.c:415 commands/tablecmds.c:1439 commands/tablecmds.c:1896 +#: commands/tablecmds.c:4833 #, c-format msgid "tables can have at most %d columns" msgstr "Tabellen können höchstens %d Spalten haben" -#: catalog/heap.c:431 commands/tablecmds.c:5080 +#: catalog/heap.c:432 commands/tablecmds.c:5094 #, c-format msgid "column name \"%s\" conflicts with a system column name" msgstr "Spaltenname »%s« steht im Konflikt mit dem Namen einer Systemspalte" -#: catalog/heap.c:447 +#: catalog/heap.c:448 #, c-format msgid "column name \"%s\" specified more than once" msgstr "Spaltenname »%s« mehrmals angegeben" -#: catalog/heap.c:497 +#: catalog/heap.c:498 #, c-format msgid "column \"%s\" has type \"unknown\"" msgstr "Spalte »%s« hat Typ »unknown«" -#: catalog/heap.c:498 +#: catalog/heap.c:499 #, c-format msgid "Proceeding with relation creation anyway." msgstr "Relation wird trotzdem erzeugt." -#: catalog/heap.c:511 +#: catalog/heap.c:512 #, c-format msgid "column \"%s\" has pseudo-type %s" msgstr "Spalte »%s« hat Pseudotyp %s" -#: catalog/heap.c:541 +#: catalog/heap.c:542 #, c-format msgid "composite type %s cannot be made a member of itself" msgstr "zusammengesetzter Typ %s kann nicht Teil von sich selbst werden" -#: catalog/heap.c:583 commands/createas.c:201 commands/createas.c:498 +#: catalog/heap.c:584 commands/createas.c:201 commands/createas.c:498 #, c-format msgid "no collation was derived for column \"%s\" with collatable type %s" msgstr "für Spalte »%s« mit sortierbarem Typ %s wurde keine Sortierfolge abgeleitet" -#: catalog/heap.c:585 commands/createas.c:204 commands/createas.c:501 -#: commands/indexcmds.c:1132 commands/view.c:105 regex/regc_pg_locale.c:262 +#: catalog/heap.c:586 commands/createas.c:204 commands/createas.c:501 +#: commands/indexcmds.c:1133 commands/view.c:103 regex/regc_pg_locale.c:262 #: utils/adt/formatting.c:1513 utils/adt/formatting.c:1565 #: utils/adt/formatting.c:1633 utils/adt/formatting.c:1685 #: utils/adt/formatting.c:1754 utils/adt/formatting.c:1818 -#: utils/adt/like.c:213 utils/adt/selfuncs.c:5334 utils/adt/varlena.c:1421 +#: utils/adt/like.c:213 utils/adt/selfuncs.c:5434 utils/adt/varlena.c:1421 #: utils/adt/varlena.c:1826 #, c-format msgid "Use the COLLATE clause to set the collation explicitly." msgstr "Verwenden Sie die COLLATE-Klausel, um die Sortierfolge explizit zu setzen." -#: catalog/heap.c:1066 catalog/index.c:792 commands/tablecmds.c:2622 +#: catalog/heap.c:1067 catalog/index.c:792 commands/tablecmds.c:2623 #, c-format msgid "relation \"%s\" already exists" msgstr "Relation »%s« existiert bereits" -#: catalog/heap.c:1082 catalog/pg_type.c:412 catalog/pg_type.c:722 +#: catalog/heap.c:1083 catalog/pg_type.c:412 catalog/pg_type.c:737 #: commands/typecmds.c:237 commands/typecmds.c:784 commands/typecmds.c:1135 #: commands/typecmds.c:1357 commands/typecmds.c:2113 #, c-format msgid "type \"%s\" already exists" msgstr "Typ »%s« existiert bereits" -#: catalog/heap.c:1083 +#: catalog/heap.c:1084 #, c-format msgid "A relation has an associated type of the same name, so you must use a name that doesn't conflict with any existing type." msgstr "Eine Relation hat einen zugehörigen Typ mit dem selben Namen, daher müssen Sie einen Namen wählen, der nicht mit einem bestehenden Typ kollidiert." -#: catalog/heap.c:1111 +#: catalog/heap.c:1112 #, c-format msgid "pg_class heap OID value not set when in binary upgrade mode" msgstr "Heap-OID-Wert für pg_class ist im Binary-Upgrade-Modus nicht gesetzt" -#: catalog/heap.c:2289 +#: catalog/heap.c:2291 #, c-format msgid "check constraint \"%s\" already exists" msgstr "Check-Constraint »%s« existiert bereits" -#: catalog/heap.c:2442 catalog/pg_constraint.c:654 commands/tablecmds.c:6068 +#: catalog/heap.c:2456 catalog/pg_constraint.c:654 commands/tablecmds.c:6082 #, c-format msgid "constraint \"%s\" for relation \"%s\" already exists" msgstr "Constraint »%s« existiert bereits für Relation »%s«" -#: catalog/heap.c:2452 +#: catalog/heap.c:2463 #, c-format msgid "constraint \"%s\" conflicts with non-inherited constraint on relation \"%s\"" msgstr "Constraint »%s« kollidiert mit nicht vererbtem Constraint für Relation »%s«" -#: catalog/heap.c:2466 +#: catalog/heap.c:2474 +#, c-format +msgid "constraint \"%s\" conflicts with inherited constraint on relation \"%s\"" +msgstr "Constraint »%s« kollidiert mit vererbtem Constraint für Relation »%s«" + +#: catalog/heap.c:2484 +#, c-format +msgid "constraint \"%s\" conflicts with NOT VALID constraint on relation \"%s\"" +msgstr "Constraint »%s« kollidiert mit NOT-VALID-Constraint für Relation »%s«" + +#: catalog/heap.c:2489 #, c-format msgid "merging constraint \"%s\" with inherited definition" msgstr "Constraint »%s« wird mit geerbter Definition zusammengeführt" -#: catalog/heap.c:2559 +#: catalog/heap.c:2595 #, c-format msgid "cannot use column references in default expression" msgstr "Spaltenverweise können nicht in Vorgabeausdrücken verwendet werden" -#: catalog/heap.c:2570 +#: catalog/heap.c:2606 #, c-format msgid "default expression must not return a set" msgstr "Vorgabeausdruck kann keine Ergebnismenge zurückgeben" -#: catalog/heap.c:2589 rewrite/rewriteHandler.c:1084 +#: catalog/heap.c:2625 rewrite/rewriteHandler.c:1115 #, c-format msgid "column \"%s\" is of type %s but default expression is of type %s" msgstr "Spalte »%s« hat Typ %s, aber der Vorgabeausdruck hat Typ %s" -#: catalog/heap.c:2594 commands/prepare.c:374 parser/parse_node.c:428 -#: parser/parse_target.c:528 parser/parse_target.c:778 -#: parser/parse_target.c:788 rewrite/rewriteHandler.c:1089 +#: catalog/heap.c:2630 commands/prepare.c:374 parser/parse_node.c:428 +#: parser/parse_target.c:539 parser/parse_target.c:789 +#: parser/parse_target.c:799 rewrite/rewriteHandler.c:1120 #, c-format msgid "You will need to rewrite or cast the expression." msgstr "Sie müssen den Ausdruck umschreiben oder eine Typumwandlung vornehmen." -#: catalog/heap.c:2641 +#: catalog/heap.c:2677 #, c-format msgid "only table \"%s\" can be referenced in check constraint" msgstr "nur Verweise auf Tabelle »%s« sind im Check-Constraint zugelassen" -#: catalog/heap.c:2881 +#: catalog/heap.c:2917 #, c-format msgid "unsupported ON COMMIT and foreign key combination" msgstr "nicht unterstützte Kombination aus ON COMMIT und Fremdschlüssel" -#: catalog/heap.c:2882 +#: catalog/heap.c:2918 #, c-format msgid "Table \"%s\" references \"%s\", but they do not have the same ON COMMIT setting." msgstr "Tabelle »%s« verweist auf »%s«, aber sie haben nicht die gleiche ON-COMMIT-Einstellung." -#: catalog/heap.c:2887 +#: catalog/heap.c:2923 #, c-format msgid "cannot truncate a table referenced in a foreign key constraint" msgstr "kann eine Tabelle, die in einen Fremdschlüssel-Constraint eingebunden ist, nicht leeren" -#: catalog/heap.c:2888 +#: catalog/heap.c:2924 #, c-format msgid "Table \"%s\" references \"%s\"." msgstr "Tabelle »%s« verweist auf »%s«." -#: catalog/heap.c:2890 +#: catalog/heap.c:2926 #, c-format msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." msgstr "Leeren Sie die Tabelle »%s« gleichzeitig oder verwenden Sie TRUNCATE ... CASCADE." -#: catalog/index.c:210 parser/parse_utilcmd.c:1488 parser/parse_utilcmd.c:1574 +#: catalog/index.c:210 parser/parse_utilcmd.c:1474 parser/parse_utilcmd.c:1560 #, c-format msgid "multiple primary keys for table \"%s\" are not allowed" msgstr "mehrere Primärschlüssel für Tabelle »%s« nicht erlaubt" @@ -3810,12 +3650,6 @@ msgstr "kann temporäre Tabellen anderer Sitzungen nicht reindizieren" msgid "index \"%s\" was reindexed" msgstr "Index »%s« wurde neu indiziert" -#: catalog/index.c:3456 commands/vacuumlazy.c:1338 commands/vacuumlazy.c:1414 -#: commands/vacuumlazy.c:1603 commands/vacuumlazy.c:1813 -#, c-format -msgid "%s." -msgstr "%s." - #: catalog/namespace.c:249 catalog/namespace.c:447 catalog/namespace.c:541 #: commands/trigger.c:4523 #, c-format @@ -3837,19 +3671,19 @@ msgstr "konnte Sperre für Relation »%s.%s« nicht setzen" msgid "could not obtain lock on relation \"%s\"" msgstr "konnte Sperre für Relation »%s« nicht setzen" -#: catalog/namespace.c:414 parser/parse_relation.c:1137 +#: catalog/namespace.c:414 parser/parse_relation.c:1138 #, c-format msgid "relation \"%s.%s\" does not exist" msgstr "Relation »%s.%s« existiert nicht" -#: catalog/namespace.c:419 parser/parse_relation.c:1150 -#: parser/parse_relation.c:1158 utils/adt/regproc.c:1034 +#: catalog/namespace.c:419 parser/parse_relation.c:1151 +#: parser/parse_relation.c:1159 utils/adt/regproc.c:1035 #, c-format msgid "relation \"%s\" does not exist" msgstr "Relation »%s« existiert nicht" -#: catalog/namespace.c:487 catalog/namespace.c:2841 commands/extension.c:1382 -#: commands/extension.c:1388 +#: catalog/namespace.c:487 catalog/namespace.c:2841 commands/extension.c:1386 +#: commands/extension.c:1392 #, c-format msgid "no schema has been selected to create in" msgstr "kein Schema für die Objekterzeugung ausgewählt" @@ -3890,13 +3724,13 @@ msgstr "Textsuchevorlage »%s« existiert nicht" msgid "text search configuration \"%s\" does not exist" msgstr "Textsuchekonfiguration »%s« existiert nicht" -#: catalog/namespace.c:2646 parser/parse_expr.c:792 parser/parse_target.c:1130 +#: catalog/namespace.c:2646 parser/parse_expr.c:792 parser/parse_target.c:1141 #, c-format msgid "cross-database references are not implemented: %s" msgstr "Verweise auf andere Datenbanken sind nicht implementiert: %s" -#: catalog/namespace.c:2652 gram.y:13441 gram.y:14810 parser/parse_expr.c:799 -#: parser/parse_target.c:1137 +#: catalog/namespace.c:2652 gram.y:13463 gram.y:14832 parser/parse_expr.c:799 +#: parser/parse_target.c:1148 #, c-format msgid "improper qualified name (too many dotted names): %s" msgstr "falscher qualifizierter Name (zu viele Namensteile): %s" @@ -3912,7 +3746,7 @@ msgid "cannot move objects into or out of TOAST schema" msgstr "Objekte können nicht in oder aus TOAST-Schemas verschoben werden" #: catalog/namespace.c:2862 commands/schemacmds.c:238 -#: commands/schemacmds.c:317 commands/tablecmds.c:740 +#: commands/schemacmds.c:317 commands/tablecmds.c:741 #, c-format msgid "schema \"%s\" does not exist" msgstr "Schema »%s« existiert nicht" @@ -3944,11 +3778,11 @@ msgstr "während der Wiederherstellung können keine temporären Tabellen erzeug #: catalog/namespace.c:3688 #, c-format -msgid "cannot create temporary tables in parallel mode" -msgstr "im Parallelmodus können keine temporären Tabellen erzeugt werden" +msgid "cannot create temporary tables during a parallel operation" +msgstr "während einer parallelen Operation können keine temporären Tabellen erzeugt werden" #: catalog/namespace.c:3932 commands/tablespace.c:1173 commands/variable.c:63 -#: utils/misc/guc.c:9859 +#: utils/misc/guc.c:9875 #, c-format msgid "List syntax is invalid." msgstr "Die Listensyntax ist ungültig." @@ -3961,7 +3795,7 @@ msgstr "Zugriffsmethodenname kann nicht qualifiziert werden" msgid "database name cannot be qualified" msgstr "Datenbankname kann nicht qualifiziert werden" -#: catalog/objectaddress.c:1071 commands/extension.c:2506 +#: catalog/objectaddress.c:1071 commands/extension.c:2510 #, c-format msgid "extension name cannot be qualified" msgstr "Erweiterungsname kann nicht qualifiziert werden" @@ -3995,27 +3829,27 @@ msgid "event trigger name cannot be qualified" msgstr "Ereignistriggername kann nicht qualifiziert werden" #: catalog/objectaddress.c:1210 commands/lockcmds.c:94 commands/policy.c:94 -#: commands/policy.c:382 commands/policy.c:471 commands/tablecmds.c:217 -#: commands/tablecmds.c:1299 commands/tablecmds.c:4346 -#: commands/tablecmds.c:7977 +#: commands/policy.c:382 commands/policy.c:471 commands/tablecmds.c:218 +#: commands/tablecmds.c:1300 commands/tablecmds.c:4347 +#: commands/tablecmds.c:8031 #, c-format msgid "\"%s\" is not a table" msgstr "»%s« ist keine Tabelle" -#: catalog/objectaddress.c:1217 commands/tablecmds.c:229 -#: commands/tablecmds.c:4376 commands/tablecmds.c:12012 commands/view.c:143 +#: catalog/objectaddress.c:1217 commands/tablecmds.c:230 +#: commands/tablecmds.c:4377 commands/tablecmds.c:12173 commands/view.c:141 #, c-format msgid "\"%s\" is not a view" msgstr "»%s« ist keine Sicht" #: catalog/objectaddress.c:1224 commands/matview.c:174 -#: commands/tablecmds.c:235 commands/tablecmds.c:12017 +#: commands/tablecmds.c:236 commands/tablecmds.c:12178 #, c-format msgid "\"%s\" is not a materialized view" msgstr "»%s« ist keine materialisierte Sicht" -#: catalog/objectaddress.c:1231 commands/tablecmds.c:253 -#: commands/tablecmds.c:4379 commands/tablecmds.c:12022 +#: catalog/objectaddress.c:1231 commands/tablecmds.c:254 +#: commands/tablecmds.c:4380 commands/tablecmds.c:12183 #, c-format msgid "\"%s\" is not a foreign table" msgstr "»%s« ist keine Fremdtabelle" @@ -4031,9 +3865,9 @@ msgid "default value for column \"%s\" of relation \"%s\" does not exist" msgstr "Vorgabewert für Spalte »%s« von Relation »%s« existiert nicht" #: catalog/objectaddress.c:1512 commands/functioncmds.c:128 -#: commands/tablecmds.c:245 commands/typecmds.c:3214 parser/parse_type.c:226 +#: commands/tablecmds.c:246 commands/typecmds.c:3229 parser/parse_type.c:226 #: parser/parse_type.c:255 parser/parse_type.c:795 utils/adt/acl.c:4374 -#: utils/adt/regproc.c:1225 +#: utils/adt/regproc.c:1226 #, c-format msgid "type \"%s\" does not exist" msgstr "Typ »%s« existiert nicht" @@ -4043,161 +3877,161 @@ msgstr "Typ »%s« existiert nicht" msgid "operator %d (%s, %s) of %s does not exist" msgstr "Operator %d (%s, %s) von %s existiert nicht" -#: catalog/objectaddress.c:1658 +#: catalog/objectaddress.c:1660 #, c-format msgid "function %d (%s, %s) of %s does not exist" msgstr "Funktion %d (%s, %s) von %s existiert nicht" -#: catalog/objectaddress.c:1707 catalog/objectaddress.c:1733 +#: catalog/objectaddress.c:1711 catalog/objectaddress.c:1737 #, c-format msgid "user mapping for user \"%s\" on server \"%s\" does not exist" msgstr "Benutzerabbildung für Benutzer »%s« auf Server »%s« existiert nicht" -#: catalog/objectaddress.c:1722 commands/foreigncmds.c:430 +#: catalog/objectaddress.c:1726 commands/foreigncmds.c:430 #: commands/foreigncmds.c:997 commands/foreigncmds.c:1359 #: foreign/foreign.c:692 #, c-format msgid "server \"%s\" does not exist" msgstr "Server »%s« existiert nicht" -#: catalog/objectaddress.c:1794 +#: catalog/objectaddress.c:1798 #, c-format msgid "unrecognized default ACL object type %c" msgstr "unbekannter Standard-ACL-Objekttyp %c" -#: catalog/objectaddress.c:1795 +#: catalog/objectaddress.c:1799 #, c-format msgid "Valid object types are \"r\", \"S\", \"f\", and \"T\"." msgstr "Gültige Objekttypen sind »r«, »S«, »f« und »T«." -#: catalog/objectaddress.c:1841 +#: catalog/objectaddress.c:1845 #, c-format msgid "default ACL for user \"%s\" in schema \"%s\" on %s does not exist" msgstr "Standard-ACL für Benutzer »%s« in Schema »%s« für %s existiert nicht" -#: catalog/objectaddress.c:1846 +#: catalog/objectaddress.c:1850 #, c-format msgid "default ACL for user \"%s\" on %s does not exist" msgstr "Standard-ACL für Benutzer »%s« für %s existiert nicht" -#: catalog/objectaddress.c:1873 catalog/objectaddress.c:1929 -#: catalog/objectaddress.c:1984 +#: catalog/objectaddress.c:1877 catalog/objectaddress.c:1933 +#: catalog/objectaddress.c:1988 #, c-format msgid "name or argument lists may not contain nulls" msgstr "Namens- oder Argumentlisten dürfen keine NULL-Werte enthalten" -#: catalog/objectaddress.c:1905 +#: catalog/objectaddress.c:1909 #, c-format msgid "unsupported object type \"%s\"" msgstr "nicht unterstützter Objekttyp »%s«" -#: catalog/objectaddress.c:1925 catalog/objectaddress.c:1943 +#: catalog/objectaddress.c:1929 catalog/objectaddress.c:1947 #, c-format msgid "name list length must be exactly %d" msgstr "Länge der Namensliste muss genau %d sein" -#: catalog/objectaddress.c:1947 +#: catalog/objectaddress.c:1951 #, c-format msgid "large object OID may not be null" msgstr "Large-Object-OID darf nicht NULL sein" -#: catalog/objectaddress.c:1956 catalog/objectaddress.c:2016 -#: catalog/objectaddress.c:2023 +#: catalog/objectaddress.c:1960 catalog/objectaddress.c:2020 +#: catalog/objectaddress.c:2027 #, c-format msgid "name list length must be at least %d" msgstr "Länge der Namensliste muss mindestens %d sein" -#: catalog/objectaddress.c:2009 catalog/objectaddress.c:2029 +#: catalog/objectaddress.c:2013 catalog/objectaddress.c:2033 #, c-format msgid "argument list length must be exactly %d" msgstr "Länge der Argumentliste muss genau %d sein" -#: catalog/objectaddress.c:2165 libpq/be-fsstubs.c:350 +#: catalog/objectaddress.c:2169 libpq/be-fsstubs.c:350 #, c-format msgid "must be owner of large object %u" msgstr "Berechtigung nur für Eigentümer des Large Object %u" -#: catalog/objectaddress.c:2180 commands/functioncmds.c:1426 +#: catalog/objectaddress.c:2184 commands/functioncmds.c:1446 #, c-format msgid "must be owner of type %s or type %s" msgstr "Berechtigung nur für Eigentümer des Typs %s oder des Typs %s" -#: catalog/objectaddress.c:2220 catalog/objectaddress.c:2237 +#: catalog/objectaddress.c:2224 catalog/objectaddress.c:2241 #, c-format msgid "must be superuser" msgstr "Berechtigung nur für Superuser" -#: catalog/objectaddress.c:2227 +#: catalog/objectaddress.c:2231 #, c-format msgid "must have CREATEROLE privilege" msgstr "Berechtigung nur mit CREATEROLE-Privileg" -#: catalog/objectaddress.c:2307 +#: catalog/objectaddress.c:2306 #, c-format msgid "unrecognized object type \"%s\"" msgstr "unbekannter Objekttyp »%s«" -#: catalog/objectaddress.c:2502 +#: catalog/objectaddress.c:2501 #, c-format msgid " column %s" msgstr " Spalte %s" -#: catalog/objectaddress.c:2508 +#: catalog/objectaddress.c:2507 #, c-format msgid "function %s" msgstr "Funktion %s" -#: catalog/objectaddress.c:2513 +#: catalog/objectaddress.c:2512 #, c-format msgid "type %s" msgstr "Typ %s" -#: catalog/objectaddress.c:2543 +#: catalog/objectaddress.c:2542 #, c-format msgid "cast from %s to %s" msgstr "Typumwandlung von %s in %s" -#: catalog/objectaddress.c:2563 +#: catalog/objectaddress.c:2562 #, c-format msgid "collation %s" msgstr "Sortierfolge %s" -#: catalog/objectaddress.c:2587 +#: catalog/objectaddress.c:2586 #, c-format msgid "constraint %s on %s" msgstr "Constraint %s für %s" -#: catalog/objectaddress.c:2593 +#: catalog/objectaddress.c:2592 #, c-format msgid "constraint %s" msgstr "Constraint %s" -#: catalog/objectaddress.c:2610 +#: catalog/objectaddress.c:2609 #, c-format msgid "conversion %s" msgstr "Konversion %s" -#: catalog/objectaddress.c:2647 +#: catalog/objectaddress.c:2646 #, c-format msgid "default for %s" msgstr "Vorgabewert für %s" -#: catalog/objectaddress.c:2656 +#: catalog/objectaddress.c:2655 #, c-format msgid "language %s" msgstr "Sprache %s" -#: catalog/objectaddress.c:2661 +#: catalog/objectaddress.c:2660 #, c-format msgid "large object %u" msgstr "Large Object %u" -#: catalog/objectaddress.c:2666 +#: catalog/objectaddress.c:2665 #, c-format msgid "operator %s" msgstr "Operator %s" -#: catalog/objectaddress.c:2698 +#: catalog/objectaddress.c:2697 #, c-format msgid "operator class %s for access method %s" msgstr "Operatorklasse %s für Zugriffsmethode %s" @@ -4206,7 +4040,7 @@ msgstr "Operatorklasse %s für Zugriffsmethode %s" #. first two %s's are data type names, the third %s is the #. description of the operator family, and the last %s is the #. textual form of the operator with arguments. -#: catalog/objectaddress.c:2748 +#: catalog/objectaddress.c:2747 #, c-format msgid "operator %d (%s, %s) of %s: %s" msgstr "Operator %d (%s, %s) von %s: %s" @@ -4215,177 +4049,177 @@ msgstr "Operator %d (%s, %s) von %s: %s" #. are data type names, the third %s is the description of the #. operator family, and the last %s is the textual form of the #. function with arguments. -#: catalog/objectaddress.c:2798 +#: catalog/objectaddress.c:2797 #, c-format msgid "function %d (%s, %s) of %s: %s" msgstr "Funktion %d (%s, %s) von %s: %s" -#: catalog/objectaddress.c:2838 +#: catalog/objectaddress.c:2837 #, c-format msgid "rule %s on " msgstr "Regel %s für " -#: catalog/objectaddress.c:2860 +#: catalog/objectaddress.c:2859 #, c-format msgid "transform for %s language %s" msgstr "Transformation %s für Sprache %s" -#: catalog/objectaddress.c:2894 +#: catalog/objectaddress.c:2893 #, c-format msgid "trigger %s on " msgstr "Trigger %s für " -#: catalog/objectaddress.c:2911 +#: catalog/objectaddress.c:2910 #, c-format msgid "schema %s" msgstr "Schema %s" -#: catalog/objectaddress.c:2924 +#: catalog/objectaddress.c:2923 #, c-format msgid "text search parser %s" msgstr "Textsucheparser %s" -#: catalog/objectaddress.c:2939 +#: catalog/objectaddress.c:2938 #, c-format msgid "text search dictionary %s" msgstr "Textsuchewörterbuch %s" -#: catalog/objectaddress.c:2954 +#: catalog/objectaddress.c:2953 #, c-format msgid "text search template %s" msgstr "Textsuchevorlage %s" -#: catalog/objectaddress.c:2969 +#: catalog/objectaddress.c:2968 #, c-format msgid "text search configuration %s" msgstr "Textsuchekonfiguration %s" -#: catalog/objectaddress.c:2977 +#: catalog/objectaddress.c:2976 #, c-format msgid "role %s" msgstr "Rolle %s" -#: catalog/objectaddress.c:2990 +#: catalog/objectaddress.c:2989 #, c-format msgid "database %s" msgstr "Datenbank %s" -#: catalog/objectaddress.c:3002 +#: catalog/objectaddress.c:3001 #, c-format msgid "tablespace %s" msgstr "Tablespace %s" -#: catalog/objectaddress.c:3011 +#: catalog/objectaddress.c:3010 #, c-format msgid "foreign-data wrapper %s" msgstr "Fremddaten-Wrapper %s" -#: catalog/objectaddress.c:3020 +#: catalog/objectaddress.c:3019 #, c-format msgid "server %s" msgstr "Server %s" -#: catalog/objectaddress.c:3048 +#: catalog/objectaddress.c:3047 #, c-format msgid "user mapping for %s on server %s" msgstr "Benutzerabbildung für %s auf Server %s" -#: catalog/objectaddress.c:3083 +#: catalog/objectaddress.c:3082 #, c-format msgid "default privileges on new relations belonging to role %s" msgstr "Vorgabeprivilegien für neue Relationen von Rolle %s" -#: catalog/objectaddress.c:3088 +#: catalog/objectaddress.c:3087 #, c-format msgid "default privileges on new sequences belonging to role %s" msgstr "Vorgabeprivilegien für neue Sequenzen von Rolle %s" -#: catalog/objectaddress.c:3093 +#: catalog/objectaddress.c:3092 #, c-format msgid "default privileges on new functions belonging to role %s" msgstr "Vorgabeprivilegien für neue Funktionen von Rolle %s" -#: catalog/objectaddress.c:3098 +#: catalog/objectaddress.c:3097 #, c-format msgid "default privileges on new types belonging to role %s" msgstr "Vorgabeprivilegien für neue Typen von Rolle %s" -#: catalog/objectaddress.c:3104 +#: catalog/objectaddress.c:3103 #, c-format msgid "default privileges belonging to role %s" msgstr "Vorgabeprivilegien von Rolle %s" -#: catalog/objectaddress.c:3112 +#: catalog/objectaddress.c:3111 #, c-format msgid " in schema %s" msgstr " in Schema %s" -#: catalog/objectaddress.c:3129 +#: catalog/objectaddress.c:3128 #, c-format msgid "extension %s" msgstr "Erweiterung %s" -#: catalog/objectaddress.c:3142 +#: catalog/objectaddress.c:3141 #, c-format msgid "event trigger %s" msgstr "Ereignistrigger %s" -#: catalog/objectaddress.c:3174 +#: catalog/objectaddress.c:3173 #, c-format msgid "policy %s on " msgstr "Policy %s für " -#: catalog/objectaddress.c:3192 +#: catalog/objectaddress.c:3191 #, c-format msgid "access method %s" msgstr "Zugriffsmethode %s" -#: catalog/objectaddress.c:3252 +#: catalog/objectaddress.c:3251 #, c-format msgid "table %s" msgstr "Tabelle %s" -#: catalog/objectaddress.c:3256 +#: catalog/objectaddress.c:3255 #, c-format msgid "index %s" msgstr "Index %s" -#: catalog/objectaddress.c:3260 +#: catalog/objectaddress.c:3259 #, c-format msgid "sequence %s" msgstr "Sequenz %s" -#: catalog/objectaddress.c:3264 +#: catalog/objectaddress.c:3263 #, c-format msgid "toast table %s" msgstr "TOAST-Tabelle %s" -#: catalog/objectaddress.c:3268 +#: catalog/objectaddress.c:3267 #, c-format msgid "view %s" msgstr "Sicht %s" -#: catalog/objectaddress.c:3272 +#: catalog/objectaddress.c:3271 #, c-format msgid "materialized view %s" msgstr "materialisierte Sicht %s" -#: catalog/objectaddress.c:3276 +#: catalog/objectaddress.c:3275 #, c-format msgid "composite type %s" msgstr "zusammengesetzter Typ %s" -#: catalog/objectaddress.c:3280 +#: catalog/objectaddress.c:3279 #, c-format msgid "foreign table %s" msgstr "Fremdtabelle %s" -#: catalog/objectaddress.c:3285 +#: catalog/objectaddress.c:3284 #, c-format msgid "relation %s" msgstr "Relation %s" -#: catalog/objectaddress.c:3322 +#: catalog/objectaddress.c:3321 #, c-format msgid "operator family %s for access method %s" msgstr "Operatorfamilie %s für Zugriffsmethode %s" @@ -4432,7 +4266,7 @@ msgstr "Anfangswert darf nicht ausgelassen werden, wenn Übergangsfunktion strik msgid "return type of inverse transition function %s is not %s" msgstr "Rückgabetyp der inversen Übergangsfunktion %s ist nicht %s" -#: catalog/pg_aggregate.c:351 executor/nodeWindowAgg.c:2301 +#: catalog/pg_aggregate.c:351 executor/nodeWindowAgg.c:2334 #, c-format msgid "strictness of aggregate's forward and inverse transition functions must match" msgstr "Striktheit der vorwärtigen und inversen Übergangsfunktionen einer Aggregatfunktion müssen übereinstimmen" @@ -4449,8 +4283,8 @@ msgstr "Rückgabetyp der Kombinierfunktion %s ist nicht %s" #: catalog/pg_aggregate.c:436 #, c-format -msgid "combine function with \"%s\" transition type must not be declared STRICT" -msgstr "Kombinierfunktion mit Übergangstyp »%s« darf nicht als STRICT deklariert sein" +msgid "combine function with transition type %s must not be declared STRICT" +msgstr "Kombinierfunktion mit Übergangstyp %s darf nicht als STRICT deklariert sein" #: catalog/pg_aggregate.c:455 #, c-format @@ -4562,7 +4396,7 @@ msgstr "Konversion »%s« existiert bereits" msgid "default conversion for %s to %s already exists" msgstr "Standardumwandlung von %s nach %s existiert bereits" -#: catalog/pg_depend.c:165 commands/extension.c:3028 +#: catalog/pg_depend.c:165 commands/extension.c:3032 #, c-format msgid "%s is already a member of extension \"%s\"" msgstr "%s ist schon Mitglied der Erweiterung »%s«" @@ -4765,7 +4599,7 @@ msgstr "SQL-Funktionen können keinen Rückgabetyp »%s« haben" msgid "SQL functions cannot have arguments of type %s" msgstr "SQL-Funktionen können keine Argumente vom Typ »%s« haben" -#: catalog/pg_proc.c:973 executor/functions.c:1422 +#: catalog/pg_proc.c:973 executor/functions.c:1431 #, c-format msgid "SQL function \"%s\"" msgstr "SQL-Funktion »%s«" @@ -4864,13 +4698,13 @@ msgstr "Ausrichtung »%c« ist ungültig für Typen variabler Länge" msgid "fixed-size types must have storage PLAIN" msgstr "Typen mit fester Größe müssen Storage-Typ PLAIN haben" -#: catalog/pg_type.c:789 +#: catalog/pg_type.c:809 #, c-format msgid "could not form array type name for type \"%s\"" msgstr "konnte keinen Arraytypnamen für Datentyp »%s« erzeugen" -#: catalog/toasting.c:105 commands/indexcmds.c:389 commands/tablecmds.c:4358 -#: commands/tablecmds.c:11900 +#: catalog/toasting.c:105 commands/indexcmds.c:389 commands/tablecmds.c:4359 +#: commands/tablecmds.c:12061 #, c-format msgid "\"%s\" is not a table or materialized view" msgstr "»%s« ist keine Tabelle oder materialisierte Sicht" @@ -5040,7 +4874,7 @@ msgstr "Zugriffsmethode »%s« existiert bereits" msgid "must be superuser to drop access methods" msgstr "nur Superuser können Zugriffsmethoden löschen" -#: commands/amcmds.c:175 commands/indexcmds.c:164 commands/indexcmds.c:495 +#: commands/amcmds.c:175 commands/indexcmds.c:164 commands/indexcmds.c:496 #: commands/opclasscmds.c:365 commands/opclasscmds.c:790 #, c-format msgid "access method \"%s\" does not exist" @@ -5118,7 +4952,7 @@ msgstr "überspringe Analysieren des Vererbungsbaums »%s.%s« --- dieser Vererb msgid "skipping analyze of \"%s.%s\" inheritance tree --- this inheritance tree contains no analyzable child tables" msgstr "überspringe Analysieren des Vererbungsbaums »%s.%s« --- dieser Vererbungsbaum enthält keine analysierbaren abgeleiteten Tabellen" -#: commands/analyze.c:1420 executor/execQual.c:2927 +#: commands/analyze.c:1420 commands/tablecmds.c:8093 executor/execQual.c:2927 msgid "could not convert row type" msgstr "konnte Zeilentyp nicht umwandeln" @@ -5172,7 +5006,7 @@ msgstr "kann temporäre Tabellen anderer Sitzungen nicht clustern" msgid "there is no previously clustered index for table \"%s\"" msgstr "es gibt keinen bereits geclusterten Index für Tabelle »%s«" -#: commands/cluster.c:173 commands/tablecmds.c:9286 commands/tablecmds.c:11002 +#: commands/cluster.c:173 commands/tablecmds.c:9397 commands/tablecmds.c:11157 #, c-format msgid "index \"%s\" for table \"%s\" does not exist" msgstr "Index »%s« für Tabelle »%s« existiert nicht" @@ -5187,7 +5021,7 @@ msgstr "globaler Katalog kann nicht geclustert werden" msgid "cannot vacuum temporary tables of other sessions" msgstr "temporäre Tabellen anderer Sitzungen können nicht gevacuumt werden" -#: commands/cluster.c:431 commands/tablecmds.c:11012 +#: commands/cluster.c:431 commands/tablecmds.c:11167 #, c-format msgid "\"%s\" is not an index for table \"%s\"" msgstr "»%s« ist kein Index für Tabelle »%s«" @@ -5207,27 +5041,27 @@ msgstr "kann nicht anhand des partiellen Index »%s« clustern" msgid "cannot cluster on invalid index \"%s\"" msgstr "kann nicht anhand des ungültigen Index »%s« clustern" -#: commands/cluster.c:918 +#: commands/cluster.c:920 #, c-format msgid "clustering \"%s.%s\" using index scan on \"%s\"" msgstr "clustere »%s.%s« durch Index-Scan von »%s«" -#: commands/cluster.c:924 +#: commands/cluster.c:926 #, c-format msgid "clustering \"%s.%s\" using sequential scan and sort" msgstr "clustere »%s.%s« durch sequenziellen Scan und Sortieren" -#: commands/cluster.c:929 commands/vacuumlazy.c:479 +#: commands/cluster.c:931 commands/vacuumlazy.c:484 #, c-format msgid "vacuuming \"%s.%s\"" msgstr "vacuume »%s.%s«" -#: commands/cluster.c:1088 +#: commands/cluster.c:1090 #, c-format msgid "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages" msgstr "»%s«: %.0f entfernbare, %.0f nicht entfernbare Zeilenversionen in %u Seiten gefunden" -#: commands/cluster.c:1092 +#: commands/cluster.c:1094 #, c-format msgid "" "%.0f dead row versions cannot be removed yet.\n" @@ -5270,17 +5104,17 @@ msgstr "Sortierfolge »%s« existiert bereits in Schema »%s«" msgid "database \"%s\" does not exist" msgstr "Datenbank »%s« existiert nicht" -#: commands/comment.c:101 commands/seclabel.c:116 parser/parse_utilcmd.c:768 +#: commands/comment.c:101 commands/seclabel.c:116 parser/parse_utilcmd.c:754 #, c-format msgid "\"%s\" is not a table, view, materialized view, composite type, or foreign table" msgstr "»%s« ist weder Tabelle, Sicht, materialisierte Sicht, zusammengesetzter Typ noch Fremdtabelle" -#: commands/constraint.c:60 utils/adt/ri_triggers.c:2717 +#: commands/constraint.c:60 utils/adt/ri_triggers.c:2715 #, c-format msgid "function \"%s\" was not called by trigger manager" msgstr "Funktion »%s« wurde nicht von Triggermanager aufgerufen" -#: commands/constraint.c:67 utils/adt/ri_triggers.c:2726 +#: commands/constraint.c:67 utils/adt/ri_triggers.c:2724 #, c-format msgid "function \"%s\" must be fired AFTER ROW" msgstr "Funktion »%s« muss AFTER ROW ausgelöst werden" @@ -5332,7 +5166,7 @@ msgid "could not read from COPY file: %m" msgstr "konnte nicht aus COPY-Datei lesen: %m" #: commands/copy.c:595 commands/copy.c:616 commands/copy.c:620 -#: tcop/postgres.c:341 tcop/postgres.c:377 tcop/postgres.c:404 +#: tcop/postgres.c:333 tcop/postgres.c:369 tcop/postgres.c:396 #, c-format msgid "unexpected EOF on client connection with an open transaction" msgstr "unerwartetes EOF auf Client-Verbindung mit einer offenen Transaktion" @@ -5362,456 +5196,456 @@ msgstr "Jeder kann COPY mit STDOUT oder STDIN verwenden. Der Befehl \\copy in ps msgid "must be superuser to COPY to or from a file" msgstr "nur Superuser können COPY mit Dateien verwenden" -#: commands/copy.c:878 +#: commands/copy.c:879 #, c-format msgid "COPY FROM not supported with row-level security" msgstr "COPY FROM wird nicht unterstützt mit Sicherheit auf Zeilenebene" -#: commands/copy.c:879 +#: commands/copy.c:880 #, c-format msgid "Use INSERT statements instead." msgstr "Verwenden Sie stattdessen INSERT-Anweisungen." -#: commands/copy.c:1019 +#: commands/copy.c:1059 #, c-format msgid "COPY format \"%s\" not recognized" msgstr "COPY-Format »%s« nicht erkannt" -#: commands/copy.c:1090 commands/copy.c:1104 commands/copy.c:1118 -#: commands/copy.c:1138 +#: commands/copy.c:1130 commands/copy.c:1144 commands/copy.c:1158 +#: commands/copy.c:1178 #, c-format msgid "argument to option \"%s\" must be a list of column names" msgstr "Argument von Option »%s« muss eine Liste aus Spaltennamen sein" -#: commands/copy.c:1151 +#: commands/copy.c:1191 #, c-format msgid "argument to option \"%s\" must be a valid encoding name" msgstr "Argument von Option »%s« muss ein gültiger Kodierungsname sein" -#: commands/copy.c:1157 commands/dbcommands.c:232 commands/dbcommands.c:1427 +#: commands/copy.c:1197 commands/dbcommands.c:232 commands/dbcommands.c:1427 #, c-format msgid "option \"%s\" not recognized" msgstr "Option »%s« nicht erkannt" -#: commands/copy.c:1168 +#: commands/copy.c:1208 #, c-format msgid "cannot specify DELIMITER in BINARY mode" msgstr "DELIMITER kann nicht im BINARY-Modus angegeben werden" -#: commands/copy.c:1173 +#: commands/copy.c:1213 #, c-format msgid "cannot specify NULL in BINARY mode" msgstr "NULL kann nicht im BINARY-Modus angegeben werden" -#: commands/copy.c:1195 +#: commands/copy.c:1235 #, c-format msgid "COPY delimiter must be a single one-byte character" msgstr "DELIMITER für COPY muss ein einzelnes Ein-Byte-Zeichen sein" -#: commands/copy.c:1202 +#: commands/copy.c:1242 #, c-format msgid "COPY delimiter cannot be newline or carriage return" msgstr "COPY-Trennzeichen kann nicht Newline oder Carriage Return sein" -#: commands/copy.c:1208 +#: commands/copy.c:1248 #, c-format msgid "COPY null representation cannot use newline or carriage return" msgstr "COPY NULL-Darstellung kann nicht Newline oder Carriage Return enthalten" -#: commands/copy.c:1225 +#: commands/copy.c:1265 #, c-format msgid "COPY delimiter cannot be \"%s\"" msgstr "DELIMITER für COPY darf nicht »%s« sein" -#: commands/copy.c:1231 +#: commands/copy.c:1271 #, c-format msgid "COPY HEADER available only in CSV mode" msgstr "COPY HEADER ist nur im CSV-Modus verfügbar" -#: commands/copy.c:1237 +#: commands/copy.c:1277 #, c-format msgid "COPY quote available only in CSV mode" msgstr "Quote-Zeichen für COPY ist nur im CSV-Modus verfügbar" -#: commands/copy.c:1242 +#: commands/copy.c:1282 #, c-format msgid "COPY quote must be a single one-byte character" msgstr "Quote-Zeichen für COPY muss ein einzelnes Ein-Byte-Zeichen sein" -#: commands/copy.c:1247 +#: commands/copy.c:1287 #, c-format msgid "COPY delimiter and quote must be different" msgstr "DELIMITER und QUOTE für COPY müssen verschieden sein" -#: commands/copy.c:1253 +#: commands/copy.c:1293 #, c-format msgid "COPY escape available only in CSV mode" msgstr "Escape-Zeichen für COPY ist nur im CSV-Modus verfügbar" -#: commands/copy.c:1258 +#: commands/copy.c:1298 #, c-format msgid "COPY escape must be a single one-byte character" msgstr "Escape-Zeichen für COPY muss ein einzelnes Ein-Byte-Zeichen sein" -#: commands/copy.c:1264 +#: commands/copy.c:1304 #, c-format msgid "COPY force quote available only in CSV mode" msgstr "FORCE_QUOTE für COPY ist nur im CSV-Modus verfügbar" -#: commands/copy.c:1268 +#: commands/copy.c:1308 #, c-format msgid "COPY force quote only available using COPY TO" msgstr "FORCE_QUOTE ist nur bei COPY TO verfügbar" -#: commands/copy.c:1274 +#: commands/copy.c:1314 #, c-format msgid "COPY force not null available only in CSV mode" msgstr "FORCE_NOT_NULL für COPY ist nur im CSV-Modus verfügbar" -#: commands/copy.c:1278 +#: commands/copy.c:1318 #, c-format msgid "COPY force not null only available using COPY FROM" msgstr "FORCE_NOT_NULL ist nur bei COPY FROM verfügbar" -#: commands/copy.c:1284 +#: commands/copy.c:1324 #, c-format msgid "COPY force null available only in CSV mode" msgstr "FORCE_NULL für COPY ist nur im CSV-Modus verfügbar" -#: commands/copy.c:1289 +#: commands/copy.c:1329 #, c-format msgid "COPY force null only available using COPY FROM" msgstr "FORCE_NULL ist nur bei COPY FROM verfügbar" -#: commands/copy.c:1295 +#: commands/copy.c:1335 #, c-format msgid "COPY delimiter must not appear in the NULL specification" msgstr "Trennzeichen für COPY darf nicht in der NULL-Darstellung erscheinen" -#: commands/copy.c:1302 +#: commands/copy.c:1342 #, c-format msgid "CSV quote character must not appear in the NULL specification" msgstr "CSV-Quote-Zeichen darf nicht in der NULL-Darstellung erscheinen" -#: commands/copy.c:1363 +#: commands/copy.c:1403 #, c-format msgid "table \"%s\" does not have OIDs" msgstr "Tabelle »%s« hat keine OIDs" -#: commands/copy.c:1380 +#: commands/copy.c:1420 #, c-format msgid "COPY (query) WITH OIDS is not supported" msgstr "COPY (Anfrage) WITH OIDS wird nicht unterstützt" -#: commands/copy.c:1400 +#: commands/copy.c:1440 #, c-format msgid "DO INSTEAD NOTHING rules are not supported for COPY" msgstr "DO INSTEAD NOTHING-Regeln werden für COPY nicht unterstützt" -#: commands/copy.c:1414 +#: commands/copy.c:1454 #, c-format msgid "conditional DO INSTEAD rules are not supported for COPY" msgstr "Do INSTEAD-Regeln mit Bedingung werden für COPY nicht unterstützt" -#: commands/copy.c:1418 +#: commands/copy.c:1458 #, c-format msgid "DO ALSO rules are not supported for the COPY" msgstr "DO ALSO-Regeln werden für COPY nicht unterstützt" -#: commands/copy.c:1423 +#: commands/copy.c:1463 #, c-format msgid "multi-statement DO INSTEAD rules are not supported for COPY" msgstr "DO INSTEAD-Regeln mit mehreren Anweisungen werden für COPY nicht unterstützt" -#: commands/copy.c:1433 +#: commands/copy.c:1473 #, c-format msgid "COPY (SELECT INTO) is not supported" msgstr "COPY (SELECT INTO) wird nicht unterstützt" -#: commands/copy.c:1450 +#: commands/copy.c:1490 #, c-format msgid "COPY query must have a RETURNING clause" msgstr "COPY-Anfrage muss eine RETURNING-Klausel haben" -#: commands/copy.c:1478 +#: commands/copy.c:1518 #, c-format msgid "relation referenced by COPY statement has changed" msgstr "die von der COPY-Anweisung verwendete Relation hat sich geändert" -#: commands/copy.c:1536 +#: commands/copy.c:1576 #, c-format msgid "FORCE_QUOTE column \"%s\" not referenced by COPY" msgstr "FORCE_QUOTE-Spalte »%s« wird von COPY nicht verwendet" -#: commands/copy.c:1558 +#: commands/copy.c:1598 #, c-format msgid "FORCE_NOT_NULL column \"%s\" not referenced by COPY" msgstr "Spalte »%s« mit FORCE_NOT_NULL wird von COPY nicht verwendet" -#: commands/copy.c:1580 +#: commands/copy.c:1620 #, c-format msgid "FORCE_NULL column \"%s\" not referenced by COPY" msgstr "Spalte »%s« mit FORCE_NULL wird von COPY nicht verwendet" -#: commands/copy.c:1645 +#: commands/copy.c:1685 #, c-format msgid "could not close pipe to external command: %m" msgstr "konnte Pipe zu externem Programm nicht schließen: %m" -#: commands/copy.c:1649 +#: commands/copy.c:1689 #, c-format msgid "program \"%s\" failed" msgstr "Programm »%s« fehlgeschlagen" -#: commands/copy.c:1699 +#: commands/copy.c:1739 #, c-format msgid "cannot copy from view \"%s\"" msgstr "kann nicht aus Sicht »%s« kopieren" -#: commands/copy.c:1701 commands/copy.c:1707 commands/copy.c:1713 +#: commands/copy.c:1741 commands/copy.c:1747 commands/copy.c:1753 #, c-format msgid "Try the COPY (SELECT ...) TO variant." msgstr "Versuchen Sie die Variante COPY (SELECT ...) TO." -#: commands/copy.c:1705 +#: commands/copy.c:1745 #, c-format msgid "cannot copy from materialized view \"%s\"" msgstr "kann nicht aus materialisierter Sicht »%s« kopieren" -#: commands/copy.c:1711 +#: commands/copy.c:1751 #, c-format msgid "cannot copy from foreign table \"%s\"" msgstr "kann nicht aus Fremdtabelle »%s« kopieren" -#: commands/copy.c:1717 +#: commands/copy.c:1757 #, c-format msgid "cannot copy from sequence \"%s\"" msgstr "kann nicht aus Sequenz »%s« kopieren" -#: commands/copy.c:1722 +#: commands/copy.c:1762 #, c-format msgid "cannot copy from non-table relation \"%s\"" msgstr "kann nicht aus Relation »%s«, die keine Tabelle ist, kopieren" -#: commands/copy.c:1747 commands/copy.c:2783 +#: commands/copy.c:1787 commands/copy.c:2823 #, c-format msgid "could not execute command \"%s\": %m" msgstr "konnte Befehl »%s« nicht ausführen: %m" -#: commands/copy.c:1762 +#: commands/copy.c:1802 #, c-format msgid "relative path not allowed for COPY to file" msgstr "relativer Pfad bei COPY in Datei nicht erlaubt" -#: commands/copy.c:1770 +#: commands/copy.c:1810 #, c-format msgid "could not open file \"%s\" for writing: %m" msgstr "konnte Datei »%s« nicht zum Schreiben öffnen: %m" -#: commands/copy.c:1782 commands/copy.c:2806 +#: commands/copy.c:1822 commands/copy.c:2846 #, c-format msgid "\"%s\" is a directory" msgstr "»%s« ist ein Verzeichnis" -#: commands/copy.c:2105 +#: commands/copy.c:2145 #, c-format msgid "COPY %s, line %d, column %s" msgstr "COPY %s, Zeile %d, Spalte %s" -#: commands/copy.c:2109 commands/copy.c:2156 +#: commands/copy.c:2149 commands/copy.c:2196 #, c-format msgid "COPY %s, line %d" msgstr "COPY %s, Zeile %d" -#: commands/copy.c:2120 +#: commands/copy.c:2160 #, c-format msgid "COPY %s, line %d, column %s: \"%s\"" msgstr "COPY %s, Zeile %d, Spalte %s: »%s«" -#: commands/copy.c:2128 +#: commands/copy.c:2168 #, c-format msgid "COPY %s, line %d, column %s: null input" msgstr "COPY %s, Zeile %d, Spalte %s: NULL Eingabe" -#: commands/copy.c:2150 +#: commands/copy.c:2190 #, c-format msgid "COPY %s, line %d: \"%s\"" msgstr "COPY %s, Zeile %d: »%s«" -#: commands/copy.c:2234 +#: commands/copy.c:2274 #, c-format msgid "cannot copy to view \"%s\"" msgstr "kann nicht in Sicht »%s« kopieren" -#: commands/copy.c:2239 +#: commands/copy.c:2279 #, c-format msgid "cannot copy to materialized view \"%s\"" msgstr "kann nicht in materialisierte Sicht »%s« kopieren" -#: commands/copy.c:2244 +#: commands/copy.c:2284 #, c-format msgid "cannot copy to foreign table \"%s\"" msgstr "kann nicht in Fremdtabelle »%s« kopieren" -#: commands/copy.c:2249 +#: commands/copy.c:2289 #, c-format msgid "cannot copy to sequence \"%s\"" msgstr "kann nicht in Sequenz »%s« kopieren" -#: commands/copy.c:2254 +#: commands/copy.c:2294 #, c-format msgid "cannot copy to non-table relation \"%s\"" msgstr "kann nicht in Relation »%s« kopieren, die keine Tabelle ist" -#: commands/copy.c:2317 +#: commands/copy.c:2357 #, c-format msgid "cannot perform FREEZE because of prior transaction activity" msgstr "FREEZE kann nicht durchgeführt werden wegen vorheriger Aktivität in dieser Transaktion" -#: commands/copy.c:2323 +#: commands/copy.c:2363 #, c-format msgid "cannot perform FREEZE because the table was not created or truncated in the current subtransaction" msgstr "FREEZE kann nicht durchgeführt werden, weil die Tabelle nicht in der aktuellen Transaktion erzeugt oder geleert wurde" -#: commands/copy.c:2826 +#: commands/copy.c:2866 #, c-format msgid "COPY file signature not recognized" msgstr "COPY-Datei-Signatur nicht erkannt" -#: commands/copy.c:2831 +#: commands/copy.c:2871 #, c-format msgid "invalid COPY file header (missing flags)" msgstr "ungültiger COPY-Dateikopf (Flags fehlen)" -#: commands/copy.c:2837 +#: commands/copy.c:2877 #, c-format msgid "unrecognized critical flags in COPY file header" msgstr "unbekannte kritische Flags im COPY-Dateikopf" -#: commands/copy.c:2843 +#: commands/copy.c:2883 #, c-format msgid "invalid COPY file header (missing length)" msgstr "ungültiger COPY-Dateikopf (Länge fehlt)" -#: commands/copy.c:2850 +#: commands/copy.c:2890 #, c-format msgid "invalid COPY file header (wrong length)" msgstr "ungültiger COPY-Dateikopf (falsche Länge)" -#: commands/copy.c:2983 commands/copy.c:3690 commands/copy.c:3920 +#: commands/copy.c:3023 commands/copy.c:3730 commands/copy.c:3960 #, c-format msgid "extra data after last expected column" msgstr "zusätzliche Daten nach letzter erwarteter Spalte" -#: commands/copy.c:2993 +#: commands/copy.c:3033 #, c-format msgid "missing data for OID column" msgstr "fehlende Daten für OID-Spalte" -#: commands/copy.c:2999 +#: commands/copy.c:3039 #, c-format msgid "null OID in COPY data" msgstr "OID ist NULL in COPY-Daten" -#: commands/copy.c:3009 commands/copy.c:3132 +#: commands/copy.c:3049 commands/copy.c:3172 #, c-format msgid "invalid OID in COPY data" msgstr "ungültige OID in COPY-Daten" -#: commands/copy.c:3024 +#: commands/copy.c:3064 #, c-format msgid "missing data for column \"%s\"" msgstr "fehlende Daten für Spalte »%s«" -#: commands/copy.c:3107 +#: commands/copy.c:3147 #, c-format msgid "received copy data after EOF marker" msgstr "COPY-Daten nach EOF-Markierung empfangen" -#: commands/copy.c:3114 +#: commands/copy.c:3154 #, c-format msgid "row field count is %d, expected %d" msgstr "Feldanzahl in Zeile ist %d, erwartet wurden %d" -#: commands/copy.c:3454 commands/copy.c:3471 +#: commands/copy.c:3494 commands/copy.c:3511 #, c-format msgid "literal carriage return found in data" msgstr "Carriage-Return-Zeichen in Daten gefunden" -#: commands/copy.c:3455 commands/copy.c:3472 +#: commands/copy.c:3495 commands/copy.c:3512 #, c-format msgid "unquoted carriage return found in data" msgstr "ungequotetes Carriage-Return-Zeichen in Daten gefunden" -#: commands/copy.c:3457 commands/copy.c:3474 +#: commands/copy.c:3497 commands/copy.c:3514 #, c-format msgid "Use \"\\r\" to represent carriage return." msgstr "Verwenden Sie »\\r«, um ein Carriage-Return-Zeichen darzustellen." -#: commands/copy.c:3458 commands/copy.c:3475 +#: commands/copy.c:3498 commands/copy.c:3515 #, c-format msgid "Use quoted CSV field to represent carriage return." msgstr "Verwenden Sie ein gequotetes CSV-Feld, um ein Carriage-Return-Zeichen darzustellen." -#: commands/copy.c:3487 +#: commands/copy.c:3527 #, c-format msgid "literal newline found in data" msgstr "Newline-Zeichen in Daten gefunden" -#: commands/copy.c:3488 +#: commands/copy.c:3528 #, c-format msgid "unquoted newline found in data" msgstr "ungequotetes Newline-Zeichen in Daten gefunden" -#: commands/copy.c:3490 +#: commands/copy.c:3530 #, c-format msgid "Use \"\\n\" to represent newline." msgstr "Verwenden Sie »\\n«, um ein Newline-Zeichen darzustellen." -#: commands/copy.c:3491 +#: commands/copy.c:3531 #, c-format msgid "Use quoted CSV field to represent newline." msgstr "Verwenden Sie ein gequotetes CSV-Feld, um ein Newline-Zeichen darzustellen." -#: commands/copy.c:3537 commands/copy.c:3573 +#: commands/copy.c:3577 commands/copy.c:3613 #, c-format msgid "end-of-copy marker does not match previous newline style" msgstr "COPY-Ende-Markierung stimmt nicht mit vorherigem Newline-Stil überein" -#: commands/copy.c:3546 commands/copy.c:3562 +#: commands/copy.c:3586 commands/copy.c:3602 #, c-format msgid "end-of-copy marker corrupt" msgstr "COPY-Ende-Markierung verfälscht" -#: commands/copy.c:4004 +#: commands/copy.c:4044 #, c-format msgid "unterminated CSV quoted field" msgstr "Quotes in CSV-Feld nicht abgeschlossen" -#: commands/copy.c:4081 commands/copy.c:4100 +#: commands/copy.c:4121 commands/copy.c:4140 #, c-format msgid "unexpected EOF in COPY data" msgstr "unerwartetes EOF in COPY-Daten" -#: commands/copy.c:4090 +#: commands/copy.c:4130 #, c-format msgid "invalid field size" msgstr "ungültige Feldgröße" -#: commands/copy.c:4113 +#: commands/copy.c:4153 #, c-format msgid "incorrect binary data format" msgstr "falsches Binärdatenformat" -#: commands/copy.c:4424 commands/indexcmds.c:1053 commands/tablecmds.c:1463 -#: commands/tablecmds.c:2290 parser/parse_relation.c:3084 -#: parser/parse_relation.c:3104 utils/adt/tsvector_op.c:2307 +#: commands/copy.c:4464 commands/indexcmds.c:1054 commands/tablecmds.c:1464 +#: commands/tablecmds.c:2291 parser/parse_relation.c:3177 +#: parser/parse_relation.c:3197 utils/adt/tsvector_op.c:2559 #, c-format msgid "column \"%s\" does not exist" msgstr "Spalte »%s« existiert nicht" -#: commands/copy.c:4431 commands/tablecmds.c:1489 commands/trigger.c:651 -#: parser/parse_target.c:956 parser/parse_target.c:967 +#: commands/copy.c:4471 commands/tablecmds.c:1490 commands/trigger.c:651 +#: parser/parse_target.c:967 parser/parse_target.c:978 #, c-format msgid "column \"%s\" specified more than once" msgstr "Spalte »%s« mehrmals angegeben" @@ -6084,7 +5918,7 @@ msgid "invalid argument for %s: \"%s\"" msgstr "ungültiges Argument für %s: »%s«" #: commands/dropcmds.c:112 commands/functioncmds.c:1203 -#: utils/adt/ruleutils.c:2077 +#: utils/adt/ruleutils.c:2083 #, c-format msgid "\"%s\" is an aggregate function" msgstr "»%s« ist eine Aggregatfunktion" @@ -6094,19 +5928,19 @@ msgstr "»%s« ist eine Aggregatfunktion" msgid "Use DROP AGGREGATE to drop aggregate functions." msgstr "Verwenden Sie DROP AGGREGATE, um Aggregatfunktionen zu löschen." -#: commands/dropcmds.c:165 commands/sequence.c:424 commands/tablecmds.c:2377 -#: commands/tablecmds.c:2528 commands/tablecmds.c:2570 -#: commands/tablecmds.c:11377 tcop/utility.c:1119 +#: commands/dropcmds.c:165 commands/sequence.c:424 commands/tablecmds.c:2378 +#: commands/tablecmds.c:2529 commands/tablecmds.c:2571 +#: commands/tablecmds.c:11538 tcop/utility.c:1119 #, c-format msgid "relation \"%s\" does not exist, skipping" msgstr "Relation »%s« existiert nicht, wird übersprungen" -#: commands/dropcmds.c:195 commands/dropcmds.c:296 commands/tablecmds.c:745 +#: commands/dropcmds.c:195 commands/dropcmds.c:296 commands/tablecmds.c:746 #, c-format msgid "schema \"%s\" does not exist, skipping" msgstr "Schema »%s« existiert nicht, wird übersprungen" -#: commands/dropcmds.c:237 commands/dropcmds.c:276 commands/tablecmds.c:246 +#: commands/dropcmds.c:237 commands/dropcmds.c:276 commands/tablecmds.c:247 #, c-format msgid "type \"%s\" does not exist, skipping" msgstr "Typ »%s« existiert nicht, wird übersprungen" @@ -6308,229 +6142,229 @@ msgstr "EXPLAIN-Option BUFFERS erfordert ANALYZE" msgid "EXPLAIN option TIMING requires ANALYZE" msgstr "EXPLAIN-Option TIMING erfordert ANALYZE" -#: commands/extension.c:154 commands/extension.c:2718 +#: commands/extension.c:155 commands/extension.c:2722 #, c-format msgid "extension \"%s\" does not exist" msgstr "Erweiterung »%s« existiert nicht" -#: commands/extension.c:253 commands/extension.c:262 commands/extension.c:274 -#: commands/extension.c:284 +#: commands/extension.c:254 commands/extension.c:263 commands/extension.c:275 +#: commands/extension.c:285 #, c-format msgid "invalid extension name: \"%s\"" msgstr "ungültiger Erweiterungsname: »%s«" -#: commands/extension.c:254 +#: commands/extension.c:255 #, c-format msgid "Extension names must not be empty." msgstr "Erweiterungsnamen dürfen nicht leer sein." -#: commands/extension.c:263 +#: commands/extension.c:264 #, c-format msgid "Extension names must not contain \"--\"." msgstr "Erweiterungsnamen dürfen nicht »--« enthalten." -#: commands/extension.c:275 +#: commands/extension.c:276 #, c-format msgid "Extension names must not begin or end with \"-\"." msgstr "Erweiterungsnamen dürfen nicht mit »-« anfangen oder aufhören." -#: commands/extension.c:285 +#: commands/extension.c:286 #, c-format msgid "Extension names must not contain directory separator characters." msgstr "Erweiterungsnamen dürfen keine Verzeichnistrennzeichen enthalten." -#: commands/extension.c:300 commands/extension.c:309 commands/extension.c:318 -#: commands/extension.c:328 +#: commands/extension.c:301 commands/extension.c:310 commands/extension.c:319 +#: commands/extension.c:329 #, c-format msgid "invalid extension version name: \"%s\"" msgstr "ungültiger Erweiterungsversionsname: »%s«" -#: commands/extension.c:301 +#: commands/extension.c:302 #, c-format msgid "Version names must not be empty." msgstr "Versionsnamen dürfen nicht leer sein." -#: commands/extension.c:310 +#: commands/extension.c:311 #, c-format msgid "Version names must not contain \"--\"." msgstr "Versionsnamen dürfen nicht »--« enthalten." -#: commands/extension.c:319 +#: commands/extension.c:320 #, c-format msgid "Version names must not begin or end with \"-\"." msgstr "Versionsnamen dürfen nicht mit »-« anfangen oder aufhören." -#: commands/extension.c:329 +#: commands/extension.c:330 #, c-format msgid "Version names must not contain directory separator characters." msgstr "Versionsnamen dürfen keine Verzeichnistrennzeichen enthalten." -#: commands/extension.c:479 +#: commands/extension.c:480 #, c-format msgid "could not open extension control file \"%s\": %m" msgstr "konnte Erweiterungskontrolldatei »%s« nicht öffnen: %m" -#: commands/extension.c:501 commands/extension.c:511 +#: commands/extension.c:502 commands/extension.c:512 #, c-format msgid "parameter \"%s\" cannot be set in a secondary extension control file" msgstr "Parameter »%s« kann nicht in einer sekundären Erweitungskontrolldatei gesetzt werden" -#: commands/extension.c:550 +#: commands/extension.c:551 #, c-format msgid "\"%s\" is not a valid encoding name" msgstr "»%s« ist kein gültiger Kodierungsname" -#: commands/extension.c:564 +#: commands/extension.c:565 #, c-format msgid "parameter \"%s\" must be a list of extension names" msgstr "Parameter »%s« muss eine Liste von Erweiterungsnamen sein" -#: commands/extension.c:571 +#: commands/extension.c:572 #, c-format msgid "unrecognized parameter \"%s\" in file \"%s\"" msgstr "unbekannter Parameter »%s« in Datei »%s«" -#: commands/extension.c:580 +#: commands/extension.c:581 #, c-format msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true" msgstr "Parameter »schema« kann nicht angegeben werden, wenn »relocatable« an ist" -#: commands/extension.c:721 +#: commands/extension.c:725 #, c-format msgid "transaction control statements are not allowed within an extension script" msgstr "Transaktionskontrollanweisungen sind nicht in einem Erweiterungsskript erlaubt" -#: commands/extension.c:789 +#: commands/extension.c:793 #, c-format msgid "permission denied to create extension \"%s\"" msgstr "keine Berechtigung, um Erweiterung »%s« zu erzeugen" -#: commands/extension.c:791 +#: commands/extension.c:795 #, c-format msgid "Must be superuser to create this extension." msgstr "Nur Superuser können diese Erweiterung anlegen." -#: commands/extension.c:795 +#: commands/extension.c:799 #, c-format msgid "permission denied to update extension \"%s\"" msgstr "keine Berechtigung, um Erweiterung »%s« zu aktualisieren" -#: commands/extension.c:797 +#: commands/extension.c:801 #, c-format msgid "Must be superuser to update this extension." msgstr "Nur Superuser können diese Erweiterung aktualisieren." -#: commands/extension.c:1079 +#: commands/extension.c:1083 #, c-format msgid "extension \"%s\" has no update path from version \"%s\" to version \"%s\"" msgstr "Erweiterung »%s« hat keinen Aktualisierungspfad von Version »%s« auf Version »%s«" -#: commands/extension.c:1261 commands/extension.c:2778 +#: commands/extension.c:1265 commands/extension.c:2782 #, c-format msgid "version to install must be specified" msgstr "die zu installierende Version muss angegeben werden" -#: commands/extension.c:1278 +#: commands/extension.c:1282 #, c-format msgid "FROM version must be different from installation target version \"%s\"" msgstr "FROM-Version muss verschieden von der zu installierenden Version »%s« sein" -#: commands/extension.c:1343 +#: commands/extension.c:1347 #, c-format msgid "extension \"%s\" must be installed in schema \"%s\"" msgstr "Erweiterung »%s« muss in Schema »%s« installiert werden" -#: commands/extension.c:1435 +#: commands/extension.c:1439 #, c-format msgid "cyclic dependency detected between extensions \"%s\" and \"%s\"" msgstr "zyklische Abhängigkeit zwischen Erweiterungen »%s« und »%s« entdeckt" -#: commands/extension.c:1440 +#: commands/extension.c:1444 #, c-format msgid "installing required extension \"%s\"" msgstr "installiere benötigte Erweiterung »%s«" -#: commands/extension.c:1468 commands/extension.c:2923 +#: commands/extension.c:1472 commands/extension.c:2927 #, c-format msgid "required extension \"%s\" is not installed" msgstr "benötigte Erweiterung »%s« ist nicht installiert" -#: commands/extension.c:1470 +#: commands/extension.c:1474 #, c-format msgid "Use CREATE EXTENSION ... CASCADE to install required extensions too." msgstr "Verwenden Sie CREATE EXTENSION ... CASCADE, um die benötigten Erweiterungen ebenfalls zu installieren." -#: commands/extension.c:1534 +#: commands/extension.c:1538 #, c-format msgid "extension \"%s\" already exists, skipping" msgstr "Erweiterung »%s« existiert bereits, wird übersprungen" -#: commands/extension.c:1541 +#: commands/extension.c:1545 #, c-format msgid "extension \"%s\" already exists" msgstr "Erweiterung »%s« existiert bereits" -#: commands/extension.c:1552 +#: commands/extension.c:1556 #, c-format msgid "nested CREATE EXTENSION is not supported" msgstr "geschachteltes CREATE EXTENSION wird nicht unterstützt" -#: commands/extension.c:1680 +#: commands/extension.c:1684 #, c-format msgid "cannot drop extension \"%s\" because it is being modified" msgstr "Erweiterung »%s« kann nicht gelöscht werden, weil sie gerade geändert wird" -#: commands/extension.c:2151 +#: commands/extension.c:2155 #, c-format msgid "pg_extension_config_dump() can only be called from an SQL script executed by CREATE EXTENSION" msgstr "pg_extension_config_dump() kann nur von einem SQL-Skript aufgerufen werden, das von CREATE EXTENSION ausgeführt wird" -#: commands/extension.c:2163 +#: commands/extension.c:2167 #, c-format msgid "OID %u does not refer to a table" msgstr "OID %u bezieht sich nicht auf eine Tabelle" -#: commands/extension.c:2168 +#: commands/extension.c:2172 #, c-format msgid "table \"%s\" is not a member of the extension being created" msgstr "Tabelle »%s« ist kein Mitglied der anzulegenden Erweiterung" -#: commands/extension.c:2533 +#: commands/extension.c:2537 #, c-format msgid "cannot move extension \"%s\" into schema \"%s\" because the extension contains the schema" msgstr "kann Erweiterung »%s« nicht in Schema »%s« verschieben, weil die Erweiterung das Schema enthält" -#: commands/extension.c:2573 commands/extension.c:2636 +#: commands/extension.c:2577 commands/extension.c:2640 #, c-format msgid "extension \"%s\" does not support SET SCHEMA" msgstr "Erweiterung »%s« unterstützt SET SCHEMA nicht" -#: commands/extension.c:2638 +#: commands/extension.c:2642 #, c-format msgid "%s is not in the extension's schema \"%s\"" msgstr "%s ist nicht im Schema der Erweiterung (»%s«)" -#: commands/extension.c:2698 +#: commands/extension.c:2702 #, c-format msgid "nested ALTER EXTENSION is not supported" msgstr "geschachteltes ALTER EXTENSION wird nicht unterstützt" -#: commands/extension.c:2789 +#: commands/extension.c:2793 #, c-format msgid "version \"%s\" of extension \"%s\" is already installed" msgstr "Version »%s« von Erweiterung »%s« ist bereits installiert" -#: commands/extension.c:3040 +#: commands/extension.c:3044 #, c-format msgid "cannot add schema \"%s\" to extension \"%s\" because the schema contains the extension" msgstr "kann Schema »%s« nicht zu Erweiterung »%s« hinzufügen, weil das Schema die Erweiterung enthält" -#: commands/extension.c:3058 +#: commands/extension.c:3072 #, c-format msgid "%s is not a member of extension \"%s\"" msgstr "%s ist kein Mitglied der Erweiterung »%s«" -#: commands/extension.c:3114 +#: commands/extension.c:3138 #, c-format msgid "file \"%s\" is too large" msgstr "Datei »%s« ist zu groß" @@ -6745,13 +6579,13 @@ msgstr "unbekanntes Funktionsattribut »%s« ignoriert" msgid "only one AS item needed for language \"%s\"" msgstr "nur ein AS-Element benötigt für Sprache »%s«" -#: commands/functioncmds.c:929 commands/functioncmds.c:2119 +#: commands/functioncmds.c:929 commands/functioncmds.c:2139 #: commands/proclang.c:563 #, c-format msgid "language \"%s\" does not exist" msgstr "Sprache »%s« existiert nicht" -#: commands/functioncmds.c:931 commands/functioncmds.c:2121 +#: commands/functioncmds.c:931 commands/functioncmds.c:2141 #, c-format msgid "Use CREATE LANGUAGE to load the language into the database." msgstr "Sie müssen CREATE LANGUAGE verwenden, um die Sprache in die Datenbank zu laden." @@ -6776,187 +6610,187 @@ msgstr "Ergebnistyp der Funktion muss angegeben werden" msgid "ROWS is not applicable when function does not return a set" msgstr "ROWS ist nicht anwendbar, wenn die Funktion keine Ergebnismenge zurückgibt" -#: commands/functioncmds.c:1412 +#: commands/functioncmds.c:1432 #, c-format msgid "source data type %s is a pseudo-type" msgstr "Quelldatentyp %s ist ein Pseudotyp" -#: commands/functioncmds.c:1418 +#: commands/functioncmds.c:1438 #, c-format msgid "target data type %s is a pseudo-type" msgstr "Zieldatentyp %s ist ein Pseudotyp" -#: commands/functioncmds.c:1442 +#: commands/functioncmds.c:1462 #, c-format msgid "cast will be ignored because the source data type is a domain" msgstr "Typumwandlung wird ignoriert werden, weil der Quelldatentyp eine Domäne ist" -#: commands/functioncmds.c:1447 +#: commands/functioncmds.c:1467 #, c-format msgid "cast will be ignored because the target data type is a domain" msgstr "Typumwandlung wird ignoriert werden, weil der Zieldatentyp eine Domäne ist" -#: commands/functioncmds.c:1474 +#: commands/functioncmds.c:1494 #, c-format msgid "cast function must take one to three arguments" msgstr "Typumwandlungsfunktion muss ein bis drei Argumente haben" -#: commands/functioncmds.c:1478 +#: commands/functioncmds.c:1498 #, c-format msgid "argument of cast function must match or be binary-coercible from source data type" msgstr "Argument der Typumwandlungsfunktion muss mit Quelldatentyp übereinstimmen oder in ihn binär-umwandelbar sein" -#: commands/functioncmds.c:1482 +#: commands/functioncmds.c:1502 #, c-format msgid "second argument of cast function must be type integer" msgstr "zweites Argument der Typumwandlungsfunktion muss Typ integer haben" -#: commands/functioncmds.c:1486 +#: commands/functioncmds.c:1506 #, c-format msgid "third argument of cast function must be type boolean" msgstr "drittes Argument der Typumwandlungsfunktion muss Typ boolean haben" -#: commands/functioncmds.c:1490 +#: commands/functioncmds.c:1510 #, c-format msgid "return data type of cast function must match or be binary-coercible to target data type" msgstr "Rückgabetyp der Typumwandlungsfunktion muss mit Zieldatentyp übereinstimmen oder in ihn binär-umwandelbar sein" -#: commands/functioncmds.c:1501 +#: commands/functioncmds.c:1521 #, c-format msgid "cast function must not be volatile" msgstr "Typumwandlungsfunktion darf nicht VOLATILE sein" -#: commands/functioncmds.c:1506 +#: commands/functioncmds.c:1526 #, c-format msgid "cast function must not be an aggregate function" msgstr "Typumwandlungsfunktion darf keine Aggregatfunktion sein" -#: commands/functioncmds.c:1510 +#: commands/functioncmds.c:1530 #, c-format msgid "cast function must not be a window function" msgstr "Typumwandlungsfunktion darf keine Fensterfunktion sein" -#: commands/functioncmds.c:1514 +#: commands/functioncmds.c:1534 #, c-format msgid "cast function must not return a set" msgstr "Typumwandlungsfunktion darf keine Ergebnismenge zurückgeben" -#: commands/functioncmds.c:1540 +#: commands/functioncmds.c:1560 #, c-format msgid "must be superuser to create a cast WITHOUT FUNCTION" msgstr "nur Superuser können Typumwandlungen mit WITHOUT FUNCTION erzeugen" -#: commands/functioncmds.c:1555 +#: commands/functioncmds.c:1575 #, c-format msgid "source and target data types are not physically compatible" msgstr "Quelldatentyp und Zieldatentyp sind nicht physikalisch kompatibel" -#: commands/functioncmds.c:1570 +#: commands/functioncmds.c:1590 #, c-format msgid "composite data types are not binary-compatible" msgstr "zusammengesetzte Datentypen sind nicht binärkompatibel" -#: commands/functioncmds.c:1576 +#: commands/functioncmds.c:1596 #, c-format msgid "enum data types are not binary-compatible" msgstr "Enum-Datentypen sind nicht binärkompatibel" -#: commands/functioncmds.c:1582 +#: commands/functioncmds.c:1602 #, c-format msgid "array data types are not binary-compatible" msgstr "Array-Datentypen sind nicht binärkompatibel" -#: commands/functioncmds.c:1599 +#: commands/functioncmds.c:1619 #, c-format msgid "domain data types must not be marked binary-compatible" msgstr "Domänendatentypen dürfen nicht als binärkompatibel markiert werden" -#: commands/functioncmds.c:1609 +#: commands/functioncmds.c:1629 #, c-format msgid "source data type and target data type are the same" msgstr "Quelldatentyp und Zieldatentyp sind der selbe" -#: commands/functioncmds.c:1642 +#: commands/functioncmds.c:1662 #, c-format msgid "cast from type %s to type %s already exists" msgstr "Typumwandlung von Typ %s in Typ %s existiert bereits" -#: commands/functioncmds.c:1717 +#: commands/functioncmds.c:1737 #, c-format msgid "cast from type %s to type %s does not exist" msgstr "Typumwandlung von Typ %s in Typ %s existiert nicht" -#: commands/functioncmds.c:1756 +#: commands/functioncmds.c:1776 #, c-format msgid "transform function must not be volatile" msgstr "Transformationsfunktion darf nicht VOLATILE sein" -#: commands/functioncmds.c:1760 +#: commands/functioncmds.c:1780 #, c-format msgid "transform function must not be an aggregate function" msgstr "Transformationsfunktion darf keine Aggregatfunktion sein" -#: commands/functioncmds.c:1764 +#: commands/functioncmds.c:1784 #, c-format msgid "transform function must not be a window function" msgstr "Transformationsfunktion darf keine Fensterfunktion sein" -#: commands/functioncmds.c:1768 +#: commands/functioncmds.c:1788 #, c-format msgid "transform function must not return a set" msgstr "Transformationsfunktion darf keine Ergebnismenge zurückgeben" -#: commands/functioncmds.c:1772 +#: commands/functioncmds.c:1792 #, c-format msgid "transform function must take one argument" msgstr "Transformationsfunktion muss ein Argument haben" -#: commands/functioncmds.c:1776 +#: commands/functioncmds.c:1796 #, c-format msgid "first argument of transform function must be type \"internal\"" msgstr "erstes Argument der Transformationsfunktion muss Typ »internal« haben" -#: commands/functioncmds.c:1813 +#: commands/functioncmds.c:1833 #, c-format msgid "data type %s is a pseudo-type" msgstr "Datentyp %s ist ein Pseudotyp" -#: commands/functioncmds.c:1819 +#: commands/functioncmds.c:1839 #, c-format msgid "data type %s is a domain" msgstr "Datentyp %s ist eine Domäne" -#: commands/functioncmds.c:1859 +#: commands/functioncmds.c:1879 #, c-format msgid "return data type of FROM SQL function must be \"internal\"" msgstr "Rückgabetyp der FROM-SQL-Funktion muss »internal« sein" -#: commands/functioncmds.c:1884 +#: commands/functioncmds.c:1904 #, c-format msgid "return data type of TO SQL function must be the transform data type" msgstr "Rückgabetyp der TO-SQL-Funktion muss der zu transformierende Datentyp sein" -#: commands/functioncmds.c:1911 +#: commands/functioncmds.c:1931 #, c-format msgid "transform for type %s language \"%s\" already exists" msgstr "Transformation für Typ %s Sprache »%s« existiert bereits" -#: commands/functioncmds.c:2002 +#: commands/functioncmds.c:2022 #, c-format msgid "transform for type %s language \"%s\" does not exist" msgstr "Transformation für Typ %s Sprache »%s« existiert nicht" -#: commands/functioncmds.c:2053 +#: commands/functioncmds.c:2073 #, c-format msgid "function %s already exists in schema \"%s\"" msgstr "Funktion %s existiert bereits in Schema »%s«" -#: commands/functioncmds.c:2106 +#: commands/functioncmds.c:2126 #, c-format msgid "no inline code specified" msgstr "kein Inline-Code angegeben" -#: commands/functioncmds.c:2151 +#: commands/functioncmds.c:2171 #, c-format msgid "language \"%s\" does not support inline code execution" msgstr "Sprache »%s« unterstützt das Ausführen von Inline-Code nicht" @@ -6981,139 +6815,139 @@ msgstr "kann keinen Index für Fremdtabelle »%s« erzeugen" msgid "cannot create indexes on temporary tables of other sessions" msgstr "kann keine Indexe für temporäre Tabellen anderer Sitzungen erzeugen" -#: commands/indexcmds.c:454 commands/tablecmds.c:545 commands/tablecmds.c:9597 +#: commands/indexcmds.c:455 commands/tablecmds.c:546 commands/tablecmds.c:9708 #, c-format msgid "only shared relations can be placed in pg_global tablespace" msgstr "nur geteilte Relationen können in den Tablespace »pg_global« gelegt werden" -#: commands/indexcmds.c:487 +#: commands/indexcmds.c:488 #, c-format msgid "substituting access method \"gist\" for obsolete method \"rtree\"" msgstr "ersetze Zugriffsmethode »gist« für obsolete Methode »rtree«" -#: commands/indexcmds.c:505 +#: commands/indexcmds.c:506 #, c-format msgid "hash indexes are not WAL-logged and their use is discouraged" msgstr "Hash-Indexe werden nicht im WAL geloggt und von ihrer Verwendung wird abgeraten." -#: commands/indexcmds.c:510 +#: commands/indexcmds.c:511 #, c-format msgid "access method \"%s\" does not support unique indexes" msgstr "Zugriffsmethode »%s« unterstützt keine Unique Indexe" -#: commands/indexcmds.c:515 +#: commands/indexcmds.c:516 #, c-format msgid "access method \"%s\" does not support multicolumn indexes" msgstr "Zugriffsmethode »%s« unterstützt keine mehrspaltigen Indexe" -#: commands/indexcmds.c:520 +#: commands/indexcmds.c:521 #, c-format msgid "access method \"%s\" does not support exclusion constraints" msgstr "Zugriffsmethode »%s« unterstützt keine Exclusion-Constraints" -#: commands/indexcmds.c:590 commands/indexcmds.c:610 +#: commands/indexcmds.c:591 commands/indexcmds.c:611 #, c-format msgid "index creation on system columns is not supported" msgstr "Indexerzeugung für Systemspalten wird nicht unterstützt" -#: commands/indexcmds.c:635 +#: commands/indexcmds.c:636 #, c-format msgid "%s %s will create implicit index \"%s\" for table \"%s\"" msgstr "%s %s erstellt implizit einen Index »%s« für Tabelle »%s«" -#: commands/indexcmds.c:982 +#: commands/indexcmds.c:983 #, c-format msgid "functions in index predicate must be marked IMMUTABLE" msgstr "Funktionen im Indexprädikat müssen als IMMUTABLE markiert sein" -#: commands/indexcmds.c:1048 parser/parse_utilcmd.c:1896 +#: commands/indexcmds.c:1049 parser/parse_utilcmd.c:1882 #, c-format msgid "column \"%s\" named in key does not exist" msgstr "Spalte »%s«, die im Schlüssel verwendet wird, existiert nicht" -#: commands/indexcmds.c:1108 +#: commands/indexcmds.c:1109 #, c-format msgid "functions in index expression must be marked IMMUTABLE" msgstr "Funktionen im Indexausdruck müssen als IMMUTABLE markiert sein" -#: commands/indexcmds.c:1131 +#: commands/indexcmds.c:1132 #, c-format msgid "could not determine which collation to use for index expression" msgstr "konnte die für den Indexausdruck zu verwendende Sortierfolge nicht bestimmen" -#: commands/indexcmds.c:1139 commands/typecmds.c:827 parser/parse_expr.c:2608 -#: parser/parse_type.c:550 parser/parse_utilcmd.c:2822 utils/adt/misc.c:666 +#: commands/indexcmds.c:1140 commands/typecmds.c:827 parser/parse_expr.c:2608 +#: parser/parse_type.c:550 parser/parse_utilcmd.c:2808 utils/adt/misc.c:666 #, c-format msgid "collations are not supported by type %s" msgstr "Sortierfolgen werden von Typ %s nicht unterstützt" -#: commands/indexcmds.c:1177 +#: commands/indexcmds.c:1178 #, c-format msgid "operator %s is not commutative" msgstr "Operator %s ist nicht kommutativ" -#: commands/indexcmds.c:1179 +#: commands/indexcmds.c:1180 #, c-format msgid "Only commutative operators can be used in exclusion constraints." msgstr "In Exclusion-Constraints können nur kommutative Operatoren verwendet werden." -#: commands/indexcmds.c:1205 +#: commands/indexcmds.c:1206 #, c-format msgid "operator %s is not a member of operator family \"%s\"" msgstr "Operator %s ist kein Mitglied der Operatorfamilie »%s«" -#: commands/indexcmds.c:1208 +#: commands/indexcmds.c:1209 #, c-format msgid "The exclusion operator must be related to the index operator class for the constraint." msgstr "Der Exklusionsoperator muss in Beziehung zur Indexoperatorklasse des Constraints stehen." -#: commands/indexcmds.c:1243 +#: commands/indexcmds.c:1244 #, c-format msgid "access method \"%s\" does not support ASC/DESC options" msgstr "Zugriffsmethode »%s« unterstützt die Optionen ASC/DESC nicht" -#: commands/indexcmds.c:1248 +#: commands/indexcmds.c:1249 #, c-format msgid "access method \"%s\" does not support NULLS FIRST/LAST options" msgstr "Zugriffsmethode »%s« unterstützt die Optionen NULLS FIRST/LAST nicht" -#: commands/indexcmds.c:1304 commands/typecmds.c:1935 +#: commands/indexcmds.c:1305 commands/typecmds.c:1935 #, c-format msgid "data type %s has no default operator class for access method \"%s\"" msgstr "Datentyp %s hat keine Standardoperatorklasse für Zugriffsmethode »%s«" -#: commands/indexcmds.c:1306 +#: commands/indexcmds.c:1307 #, c-format msgid "You must specify an operator class for the index or define a default operator class for the data type." msgstr "Sie müssen für den Index eine Operatorklasse angeben oder eine Standardoperatorklasse für den Datentyp definieren." -#: commands/indexcmds.c:1335 commands/indexcmds.c:1343 +#: commands/indexcmds.c:1336 commands/indexcmds.c:1344 #: commands/opclasscmds.c:205 #, c-format msgid "operator class \"%s\" does not exist for access method \"%s\"" msgstr "Operatorklasse »%s« existiert nicht für Zugriffsmethode »%s«" -#: commands/indexcmds.c:1356 commands/typecmds.c:1923 +#: commands/indexcmds.c:1357 commands/typecmds.c:1923 #, c-format msgid "operator class \"%s\" does not accept data type %s" msgstr "Operatorklasse »%s« akzeptiert Datentyp %s nicht" -#: commands/indexcmds.c:1446 +#: commands/indexcmds.c:1447 #, c-format msgid "there are multiple default operator classes for data type %s" msgstr "es gibt mehrere Standardoperatorklassen für Datentyp %s" -#: commands/indexcmds.c:1837 +#: commands/indexcmds.c:1838 #, c-format msgid "table \"%s\" has no indexes" msgstr "Tabelle »%s« hat keine Indexe" -#: commands/indexcmds.c:1892 +#: commands/indexcmds.c:1893 #, c-format msgid "can only reindex the currently open database" msgstr "aktuell geöffnete Datenbank kann nicht reindiziert werden" -#: commands/indexcmds.c:1992 +#: commands/indexcmds.c:1993 #, c-format msgid "table \"%s.%s\" was reindexed" msgstr "Tabelle »%s.%s« wurde neu indiziert" @@ -7351,10 +7185,10 @@ msgid "operator attribute \"%s\" cannot be changed" msgstr "Operator-Attribut »%s« kann nicht geändert werden" #: commands/policy.c:87 commands/policy.c:388 commands/policy.c:477 -#: commands/tablecmds.c:970 commands/tablecmds.c:1312 -#: commands/tablecmds.c:2184 commands/tablecmds.c:4328 -#: commands/tablecmds.c:6279 commands/tablecmds.c:11933 -#: commands/tablecmds.c:11968 commands/trigger.c:241 commands/trigger.c:1125 +#: commands/tablecmds.c:971 commands/tablecmds.c:1313 +#: commands/tablecmds.c:2185 commands/tablecmds.c:4329 +#: commands/tablecmds.c:6293 commands/tablecmds.c:12094 +#: commands/tablecmds.c:12129 commands/trigger.c:241 commands/trigger.c:1125 #: commands/trigger.c:1233 rewrite/rewriteDefine.c:273 #: rewrite/rewriteDefine.c:917 #, c-format @@ -7408,7 +7242,7 @@ msgid "invalid cursor name: must not be empty" msgstr "ungültiger Cursorname: darf nicht leer sein" #: commands/portalcmds.c:168 commands/portalcmds.c:222 -#: executor/execCurrent.c:67 utils/adt/xml.c:2389 utils/adt/xml.c:2556 +#: executor/execCurrent.c:67 utils/adt/xml.c:2399 utils/adt/xml.c:2569 #, c-format msgid "cursor \"%s\" does not exist" msgstr "Cursor »%s« existiert nicht" @@ -7418,7 +7252,7 @@ msgstr "Cursor »%s« existiert nicht" msgid "invalid statement name: must not be empty" msgstr "ungültiger Anweisungsname: darf nicht leer sein" -#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1343 +#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1335 #, c-format msgid "could not determine data type of parameter $%d" msgstr "konnte Datentyp von Parameter $%d nicht ermitteln" @@ -7608,162 +7442,162 @@ msgstr "Sequenz muss selben Eigentümer wie die verknüpfte Tabelle haben" msgid "sequence must be in same schema as table it is linked to" msgstr "Sequenz muss im selben Schema wie die verknüpfte Tabelle sein" -#: commands/tablecmds.c:215 +#: commands/tablecmds.c:216 #, c-format msgid "table \"%s\" does not exist" msgstr "Tabelle »%s« existiert nicht" -#: commands/tablecmds.c:216 +#: commands/tablecmds.c:217 #, c-format msgid "table \"%s\" does not exist, skipping" msgstr "Tabelle »%s« existiert nicht, wird übersprungen" -#: commands/tablecmds.c:218 +#: commands/tablecmds.c:219 msgid "Use DROP TABLE to remove a table." msgstr "Verwenden Sie DROP TABLE, um eine Tabelle zu löschen." -#: commands/tablecmds.c:221 +#: commands/tablecmds.c:222 #, c-format msgid "sequence \"%s\" does not exist" msgstr "Sequenz »%s« existiert nicht" -#: commands/tablecmds.c:222 +#: commands/tablecmds.c:223 #, c-format msgid "sequence \"%s\" does not exist, skipping" msgstr "Sequenz »%s« existiert nicht, wird übersprungen" -#: commands/tablecmds.c:224 +#: commands/tablecmds.c:225 msgid "Use DROP SEQUENCE to remove a sequence." msgstr "Verwenden Sie DROP SEQUENCE, um eine Sequenz zu löschen." -#: commands/tablecmds.c:227 +#: commands/tablecmds.c:228 #, c-format msgid "view \"%s\" does not exist" msgstr "Sicht »%s« existiert nicht" -#: commands/tablecmds.c:228 +#: commands/tablecmds.c:229 #, c-format msgid "view \"%s\" does not exist, skipping" msgstr "Sicht »%s« existiert nicht, wird übersprungen" -#: commands/tablecmds.c:230 +#: commands/tablecmds.c:231 msgid "Use DROP VIEW to remove a view." msgstr "Verwenden Sie DROP VIEW, um eine Sicht zu löschen." -#: commands/tablecmds.c:233 +#: commands/tablecmds.c:234 #, c-format msgid "materialized view \"%s\" does not exist" msgstr "materialisierte Sicht »%s« existiert nicht" -#: commands/tablecmds.c:234 +#: commands/tablecmds.c:235 #, c-format msgid "materialized view \"%s\" does not exist, skipping" msgstr "materialisierte Sicht »%s« existiert nicht, wird übersprungen" -#: commands/tablecmds.c:236 +#: commands/tablecmds.c:237 msgid "Use DROP MATERIALIZED VIEW to remove a materialized view." msgstr "Verwenden Sie DROP MATERIALIZED VIEW, um eine materialisierte Sicht zu löschen." -#: commands/tablecmds.c:239 parser/parse_utilcmd.c:1645 +#: commands/tablecmds.c:240 parser/parse_utilcmd.c:1631 #, c-format msgid "index \"%s\" does not exist" msgstr "Index »%s« existiert nicht" -#: commands/tablecmds.c:240 +#: commands/tablecmds.c:241 #, c-format msgid "index \"%s\" does not exist, skipping" msgstr "Index »%s« existiert nicht, wird übersprungen" -#: commands/tablecmds.c:242 +#: commands/tablecmds.c:243 msgid "Use DROP INDEX to remove an index." msgstr "Verwenden Sie DROP INDEX, um einen Index zu löschen." -#: commands/tablecmds.c:247 +#: commands/tablecmds.c:248 #, c-format msgid "\"%s\" is not a type" msgstr "»%s« ist kein Typ" -#: commands/tablecmds.c:248 +#: commands/tablecmds.c:249 msgid "Use DROP TYPE to remove a type." msgstr "Verwenden Sie DROP TYPE, um einen Typen zu löschen." -#: commands/tablecmds.c:251 commands/tablecmds.c:8486 -#: commands/tablecmds.c:11194 +#: commands/tablecmds.c:252 commands/tablecmds.c:8597 +#: commands/tablecmds.c:11349 #, c-format msgid "foreign table \"%s\" does not exist" msgstr "Fremdtabelle »%s« existiert nicht" -#: commands/tablecmds.c:252 +#: commands/tablecmds.c:253 #, c-format msgid "foreign table \"%s\" does not exist, skipping" msgstr "Fremdtabelle »%s« existiert nicht, wird übersprungen" -#: commands/tablecmds.c:254 +#: commands/tablecmds.c:255 msgid "Use DROP FOREIGN TABLE to remove a foreign table." msgstr "Verwenden Sie DROP FOREIGN TABLE, um eine Fremdtabelle zu löschen." -#: commands/tablecmds.c:493 +#: commands/tablecmds.c:494 #, c-format msgid "ON COMMIT can only be used on temporary tables" msgstr "ON COMMIT kann nur mit temporären Tabellen verwendet werden" -#: commands/tablecmds.c:513 +#: commands/tablecmds.c:514 #, c-format msgid "cannot create temporary table within security-restricted operation" msgstr "kann temporäre Tabelle nicht in einer sicherheitsbeschränkten Operation erzeugen" -#: commands/tablecmds.c:821 +#: commands/tablecmds.c:822 #, c-format msgid "DROP INDEX CONCURRENTLY does not support dropping multiple objects" msgstr "DROP INDEX CONCURRENTLY unterstützt das Löschen von mehreren Objekten nicht" -#: commands/tablecmds.c:825 +#: commands/tablecmds.c:826 #, c-format msgid "DROP INDEX CONCURRENTLY does not support CASCADE" msgstr "DROP INDEX CONCURRENTLY unterstützt kein CASCADE" -#: commands/tablecmds.c:1084 +#: commands/tablecmds.c:1085 #, c-format msgid "truncate cascades to table \"%s\"" msgstr "Truncate-Vorgang leert ebenfalls Tabelle »%s«" -#: commands/tablecmds.c:1322 +#: commands/tablecmds.c:1323 #, c-format msgid "cannot truncate temporary tables of other sessions" msgstr "kann temporäre Tabellen anderer Sitzungen nicht leeren" -#: commands/tablecmds.c:1528 parser/parse_utilcmd.c:1859 +#: commands/tablecmds.c:1529 parser/parse_utilcmd.c:1845 #, c-format msgid "inherited relation \"%s\" is not a table or foreign table" msgstr "geerbte Relation »%s« ist keine Tabelle oder Fremdtabelle" -#: commands/tablecmds.c:1535 commands/tablecmds.c:10053 +#: commands/tablecmds.c:1536 commands/tablecmds.c:10164 #, c-format msgid "cannot inherit from temporary relation \"%s\"" msgstr "von temporärer Relation »%s« kann nicht geerbt werden" -#: commands/tablecmds.c:1543 commands/tablecmds.c:10061 +#: commands/tablecmds.c:1544 commands/tablecmds.c:10172 #, c-format msgid "cannot inherit from temporary relation of another session" msgstr "von temporärer Relation einer anderen Sitzung kann nicht geerbt werden" -#: commands/tablecmds.c:1559 commands/tablecmds.c:10095 +#: commands/tablecmds.c:1560 commands/tablecmds.c:10206 #, c-format msgid "relation \"%s\" would be inherited from more than once" msgstr "von der Relation »%s« würde mehrmals geerbt werden" -#: commands/tablecmds.c:1607 +#: commands/tablecmds.c:1608 #, c-format msgid "merging multiple inherited definitions of column \"%s\"" msgstr "geerbte Definitionen von Spalte »%s« werden zusammengeführt" -#: commands/tablecmds.c:1615 +#: commands/tablecmds.c:1616 #, c-format msgid "inherited column \"%s\" has a type conflict" msgstr "geerbte Spalte »%s« hat Typkonflikt" -#: commands/tablecmds.c:1617 commands/tablecmds.c:1640 -#: commands/tablecmds.c:1838 commands/tablecmds.c:1862 +#: commands/tablecmds.c:1618 commands/tablecmds.c:1641 +#: commands/tablecmds.c:1839 commands/tablecmds.c:1863 #: parser/parse_coerce.c:1630 parser/parse_coerce.c:1650 #: parser/parse_coerce.c:1670 parser/parse_coerce.c:1715 #: parser/parse_coerce.c:1752 parser/parse_param.c:218 @@ -7771,755 +7605,766 @@ msgstr "geerbte Spalte »%s« hat Typkonflikt" msgid "%s versus %s" msgstr "%s gegen %s" -#: commands/tablecmds.c:1626 +#: commands/tablecmds.c:1627 #, c-format msgid "inherited column \"%s\" has a collation conflict" msgstr "geerbte Spalte »%s« hat Sortierfolgenkonflikt" -#: commands/tablecmds.c:1628 commands/tablecmds.c:1850 -#: commands/tablecmds.c:4766 +#: commands/tablecmds.c:1629 commands/tablecmds.c:1851 +#: commands/tablecmds.c:4780 #, c-format msgid "\"%s\" versus \"%s\"" msgstr "»%s« gegen »%s«" -#: commands/tablecmds.c:1638 +#: commands/tablecmds.c:1639 #, c-format msgid "inherited column \"%s\" has a storage parameter conflict" msgstr "geerbte Spalte »%s« hat einen Konflikt bei einem Storage-Parameter" -#: commands/tablecmds.c:1751 parser/parse_utilcmd.c:938 -#: parser/parse_utilcmd.c:1289 parser/parse_utilcmd.c:1365 +#: commands/tablecmds.c:1752 commands/tablecmds.c:8102 +#: parser/parse_utilcmd.c:924 parser/parse_utilcmd.c:1275 +#: parser/parse_utilcmd.c:1351 #, c-format msgid "cannot convert whole-row table reference" msgstr "kann Verweis auf ganze Zeile der Tabelle nicht umwandeln" -#: commands/tablecmds.c:1752 parser/parse_utilcmd.c:939 +#: commands/tablecmds.c:1753 parser/parse_utilcmd.c:925 #, c-format msgid "Constraint \"%s\" contains a whole-row reference to table \"%s\"." msgstr "Constraint »%s« enthält einen Verweis auf die ganze Zeile der Tabelle »%s«." -#: commands/tablecmds.c:1824 +#: commands/tablecmds.c:1825 #, c-format msgid "merging column \"%s\" with inherited definition" msgstr "Spalte »%s« wird mit geerbter Definition zusammengeführt" -#: commands/tablecmds.c:1828 +#: commands/tablecmds.c:1829 #, c-format msgid "moving and merging column \"%s\" with inherited definition" msgstr "Spalte »%s« wird verschoben und mit geerbter Definition zusammengeführt" -#: commands/tablecmds.c:1829 +#: commands/tablecmds.c:1830 #, c-format msgid "User-specified column moved to the position of the inherited column." msgstr "Benutzerdefinierte Spalte wurde auf die Position der geerbten Spalte verschoben." -#: commands/tablecmds.c:1836 +#: commands/tablecmds.c:1837 #, c-format msgid "column \"%s\" has a type conflict" msgstr "für Spalte »%s« besteht ein Typkonflikt" -#: commands/tablecmds.c:1848 +#: commands/tablecmds.c:1849 #, c-format msgid "column \"%s\" has a collation conflict" msgstr "für Spalte »%s« besteht ein Sortierfolgenkonflikt" -#: commands/tablecmds.c:1860 +#: commands/tablecmds.c:1861 #, c-format msgid "column \"%s\" has a storage parameter conflict" msgstr "für Spalte »%s« besteht ein Konflikt bei einem Storage-Parameter" -#: commands/tablecmds.c:1912 +#: commands/tablecmds.c:1913 #, c-format msgid "column \"%s\" inherits conflicting default values" msgstr "Spalte »%s« erbt widersprüchliche Vorgabewerte" -#: commands/tablecmds.c:1914 +#: commands/tablecmds.c:1915 #, c-format msgid "To resolve the conflict, specify a default explicitly." msgstr "Um den Konflikt zu lösen, geben Sie einen Vorgabewert ausdrücklich an." -#: commands/tablecmds.c:1961 +#: commands/tablecmds.c:1962 #, c-format msgid "check constraint name \"%s\" appears multiple times but with different expressions" msgstr "Check-Constraint-Name »%s« erscheint mehrmals, aber mit unterschiedlichen Ausdrücken" -#: commands/tablecmds.c:2155 +#: commands/tablecmds.c:2156 #, c-format msgid "cannot rename column of typed table" msgstr "Spalte einer getypten Tabelle kann nicht umbenannt werden" -#: commands/tablecmds.c:2172 +#: commands/tablecmds.c:2173 #, c-format msgid "\"%s\" is not a table, view, materialized view, composite type, index, or foreign table" msgstr "»%s« ist weder Tabelle, Sicht, materialisierte Sicht, zusammengesetzter Typ, Index noch Fremdtabelle" -#: commands/tablecmds.c:2266 +#: commands/tablecmds.c:2267 #, c-format msgid "inherited column \"%s\" must be renamed in child tables too" msgstr "vererbte Spalte »%s« muss ebenso in den abgeleiteten Tabellen umbenannt werden" -#: commands/tablecmds.c:2298 +#: commands/tablecmds.c:2299 #, c-format msgid "cannot rename system column \"%s\"" msgstr "Systemspalte »%s« kann nicht umbenannt werden" -#: commands/tablecmds.c:2313 +#: commands/tablecmds.c:2314 #, c-format msgid "cannot rename inherited column \"%s\"" msgstr "kann vererbte Spalte »%s« nicht umbenennen" -#: commands/tablecmds.c:2468 +#: commands/tablecmds.c:2469 #, c-format msgid "inherited constraint \"%s\" must be renamed in child tables too" msgstr "vererbter Constraint »%s« muss ebenso in den abgeleiteten Tabellen umbenannt werden" -#: commands/tablecmds.c:2475 +#: commands/tablecmds.c:2476 #, c-format msgid "cannot rename inherited constraint \"%s\"" msgstr "kann vererbten Constraint »%s« nicht umbenennen" #. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2701 +#: commands/tablecmds.c:2702 #, c-format msgid "cannot %s \"%s\" because it is being used by active queries in this session" msgstr "%s mit Relation »%s« nicht möglich, weil sie von aktiven Anfragen in dieser Sitzung verwendet wird" #. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2710 +#: commands/tablecmds.c:2711 #, c-format msgid "cannot %s \"%s\" because it has pending trigger events" msgstr "%s mit Relation »%s« nicht möglich, weil es anstehende Trigger-Ereignisse dafür gibt" -#: commands/tablecmds.c:3784 +#: commands/tablecmds.c:3785 #, c-format msgid "cannot rewrite system relation \"%s\"" msgstr "Systemrelation »%s« kann nicht neu geschrieben werden" -#: commands/tablecmds.c:3790 +#: commands/tablecmds.c:3791 #, c-format msgid "cannot rewrite table \"%s\" used as a catalog table" msgstr "Tabelle »%s«, die als Katalogtabelle verwendet wird, kann nicht neu geschrieben werden" -#: commands/tablecmds.c:3800 +#: commands/tablecmds.c:3801 #, c-format msgid "cannot rewrite temporary tables of other sessions" msgstr "kann temporäre Tabellen anderer Sitzungen nicht neu schreiben" -#: commands/tablecmds.c:4068 +#: commands/tablecmds.c:4069 #, c-format msgid "rewriting table \"%s\"" msgstr "schreibe Tabelle »%s« neu" -#: commands/tablecmds.c:4072 +#: commands/tablecmds.c:4073 #, c-format msgid "verifying table \"%s\"" msgstr "überprüfe Tabelle »%s«" -#: commands/tablecmds.c:4186 +#: commands/tablecmds.c:4187 #, c-format msgid "column \"%s\" contains null values" msgstr "Spalte »%s« enthält NULL-Werte" -#: commands/tablecmds.c:4201 commands/tablecmds.c:7366 +#: commands/tablecmds.c:4202 commands/tablecmds.c:7399 #, c-format msgid "check constraint \"%s\" is violated by some row" msgstr "Check-Constraint »%s« wird von irgendeiner Zeile verletzt" -#: commands/tablecmds.c:4349 commands/trigger.c:235 +#: commands/tablecmds.c:4350 commands/trigger.c:235 #: rewrite/rewriteDefine.c:267 rewrite/rewriteDefine.c:912 #, c-format msgid "\"%s\" is not a table or view" msgstr "»%s« ist keine Tabelle oder Sicht" -#: commands/tablecmds.c:4352 commands/trigger.c:1119 commands/trigger.c:1224 +#: commands/tablecmds.c:4353 commands/trigger.c:1119 commands/trigger.c:1224 #, c-format msgid "\"%s\" is not a table, view, or foreign table" msgstr "»%s« ist keine Tabelle, Sicht oder Fremdtabelle" -#: commands/tablecmds.c:4355 +#: commands/tablecmds.c:4356 #, c-format msgid "\"%s\" is not a table, view, materialized view, or index" msgstr "»%s« ist weder Tabelle, Sicht, materialisierte Sicht noch Index" -#: commands/tablecmds.c:4361 +#: commands/tablecmds.c:4362 #, c-format msgid "\"%s\" is not a table, materialized view, or index" msgstr "»%s« ist weder Tabelle, materialisierte Sicht noch Index" -#: commands/tablecmds.c:4364 +#: commands/tablecmds.c:4365 #, c-format msgid "\"%s\" is not a table, materialized view, or foreign table" msgstr "»%s« ist weder Tabelle, materialisierte Sicht noch Fremdtabelle" -#: commands/tablecmds.c:4367 +#: commands/tablecmds.c:4368 #, c-format msgid "\"%s\" is not a table or foreign table" msgstr "»%s« ist keine Tabelle oder Fremdtabelle" -#: commands/tablecmds.c:4370 +#: commands/tablecmds.c:4371 #, c-format msgid "\"%s\" is not a table, composite type, or foreign table" msgstr "»%s« ist weder Tabelle, Sicht, zusammengesetzter Typ noch Fremdtabelle" -#: commands/tablecmds.c:4373 commands/tablecmds.c:5425 +#: commands/tablecmds.c:4374 commands/tablecmds.c:5439 #, c-format msgid "\"%s\" is not a table, materialized view, index, or foreign table" msgstr "»%s« ist weder Tabelle, materialisierte Sicht, Index noch Fremdtabelle" -#: commands/tablecmds.c:4383 +#: commands/tablecmds.c:4384 #, c-format msgid "\"%s\" is of the wrong type" msgstr "»%s« hat den falschen Typ" -#: commands/tablecmds.c:4535 commands/tablecmds.c:4542 +#: commands/tablecmds.c:4557 commands/tablecmds.c:4564 #, c-format msgid "cannot alter type \"%s\" because column \"%s.%s\" uses it" msgstr "kann Typ »%s« nicht ändern, weil Spalte »%s.%s« ihn verwendet" -#: commands/tablecmds.c:4549 +#: commands/tablecmds.c:4571 #, c-format msgid "cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type" msgstr "kann Fremdtabelle »%s« nicht ändern, weil Spalte »%s.%s« ihren Zeilentyp verwendet" -#: commands/tablecmds.c:4556 +#: commands/tablecmds.c:4578 #, c-format msgid "cannot alter table \"%s\" because column \"%s.%s\" uses its row type" msgstr "kann Tabelle »%s« nicht ändern, weil Spalte »%s.%s« ihren Zeilentyp verwendet" -#: commands/tablecmds.c:4618 +#: commands/tablecmds.c:4632 #, c-format msgid "cannot alter type \"%s\" because it is the type of a typed table" msgstr "kann Typ »%s« nicht ändern, weil er der Typ einer getypten Tabelle ist" -#: commands/tablecmds.c:4620 +#: commands/tablecmds.c:4634 #, c-format msgid "Use ALTER ... CASCADE to alter the typed tables too." msgstr "Verwenden Sie ALTER ... CASCADE, um die getypten Tabellen ebenfalls zu ändern." -#: commands/tablecmds.c:4664 +#: commands/tablecmds.c:4678 #, c-format msgid "type %s is not a composite type" msgstr "Typ %s ist kein zusammengesetzter Typ" -#: commands/tablecmds.c:4690 +#: commands/tablecmds.c:4704 #, c-format msgid "cannot add column to typed table" msgstr "zu einer getypten Tabelle kann keine Spalte hinzugefügt werden" -#: commands/tablecmds.c:4758 commands/tablecmds.c:10254 +#: commands/tablecmds.c:4772 commands/tablecmds.c:10365 #, c-format msgid "child table \"%s\" has different type for column \"%s\"" msgstr "abgeleitete Tabelle »%s« hat unterschiedlichen Typ für Spalte »%s«" -#: commands/tablecmds.c:4764 commands/tablecmds.c:10261 +#: commands/tablecmds.c:4778 commands/tablecmds.c:10372 #, c-format msgid "child table \"%s\" has different collation for column \"%s\"" msgstr "abgeleitete Tabelle »%s« hat unterschiedliche Sortierfolge für Spalte »%s«" -#: commands/tablecmds.c:4774 +#: commands/tablecmds.c:4788 #, c-format msgid "child table \"%s\" has a conflicting \"%s\" column" msgstr "abgeleitete Tabelle »%s« hat eine widersprüchliche Spalte »%s«" -#: commands/tablecmds.c:4786 +#: commands/tablecmds.c:4800 #, c-format msgid "merging definition of column \"%s\" for child \"%s\"" msgstr "Definition von Spalte »%s« für abgeleitete Tabelle »%s« wird zusammengeführt" -#: commands/tablecmds.c:5013 +#: commands/tablecmds.c:5027 #, c-format msgid "column must be added to child tables too" msgstr "Spalte muss ebenso in den abgeleiteten Tabellen hinzugefügt werden" -#: commands/tablecmds.c:5088 +#: commands/tablecmds.c:5102 #, c-format msgid "column \"%s\" of relation \"%s\" already exists, skipping" msgstr "Spalte »%s« von Relation »%s« existiert bereits, wird übersprungen" -#: commands/tablecmds.c:5095 +#: commands/tablecmds.c:5109 #, c-format msgid "column \"%s\" of relation \"%s\" already exists" msgstr "Spalte »%s« von Relation »%s« existiert bereits" -#: commands/tablecmds.c:5206 commands/tablecmds.c:5312 -#: commands/tablecmds.c:5370 commands/tablecmds.c:5484 -#: commands/tablecmds.c:5541 commands/tablecmds.c:5635 -#: commands/tablecmds.c:7884 commands/tablecmds.c:8509 +#: commands/tablecmds.c:5220 commands/tablecmds.c:5326 +#: commands/tablecmds.c:5384 commands/tablecmds.c:5498 +#: commands/tablecmds.c:5555 commands/tablecmds.c:5649 +#: commands/tablecmds.c:7938 commands/tablecmds.c:8620 #, c-format msgid "cannot alter system column \"%s\"" msgstr "Systemspalte »%s« kann nicht geändert werden" -#: commands/tablecmds.c:5242 +#: commands/tablecmds.c:5256 #, c-format msgid "column \"%s\" is in a primary key" msgstr "Spalte »%s« ist in einem Primärschlüssel" -#: commands/tablecmds.c:5457 +#: commands/tablecmds.c:5471 #, c-format msgid "statistics target %d is too low" msgstr "Statistikziel %d ist zu niedrig" -#: commands/tablecmds.c:5465 +#: commands/tablecmds.c:5479 #, c-format msgid "lowering statistics target to %d" msgstr "setze Statistikziel auf %d herab" -#: commands/tablecmds.c:5615 +#: commands/tablecmds.c:5629 #, c-format msgid "invalid storage type \"%s\"" msgstr "ungültiger Storage-Typ »%s«" -#: commands/tablecmds.c:5647 +#: commands/tablecmds.c:5661 #, c-format msgid "column data type %s can only have storage PLAIN" msgstr "Spaltendatentyp %s kann nur Storage-Typ PLAIN" -#: commands/tablecmds.c:5685 +#: commands/tablecmds.c:5699 #, c-format msgid "cannot drop column from typed table" msgstr "aus einer getypten Tabelle können keine Spalten gelöscht werden" -#: commands/tablecmds.c:5729 +#: commands/tablecmds.c:5743 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist, skipping" msgstr "Spalte »%s« von Relation »%s« existiert nicht, wird übersprungen" -#: commands/tablecmds.c:5742 +#: commands/tablecmds.c:5756 #, c-format msgid "cannot drop system column \"%s\"" msgstr "Systemspalte »%s« kann nicht gelöscht werden" -#: commands/tablecmds.c:5749 +#: commands/tablecmds.c:5763 #, c-format msgid "cannot drop inherited column \"%s\"" msgstr "geerbte Spalte »%s« kann nicht gelöscht werden" -#: commands/tablecmds.c:5989 +#: commands/tablecmds.c:6003 #, c-format msgid "ALTER TABLE / ADD CONSTRAINT USING INDEX will rename index \"%s\" to \"%s\"" msgstr "ALTER TABLE / ADD CONSTRAINT USING INDEX benennt Index »%s« um in »%s«" -#: commands/tablecmds.c:6202 +#: commands/tablecmds.c:6216 #, c-format msgid "constraint must be added to child tables too" msgstr "Constraint muss ebenso in den abgeleiteten Tabellen hinzugefügt werden" -#: commands/tablecmds.c:6273 +#: commands/tablecmds.c:6287 #, c-format msgid "referenced relation \"%s\" is not a table" msgstr "Relation »%s«, auf die verwiesen wird, ist keine Tabelle" -#: commands/tablecmds.c:6296 +#: commands/tablecmds.c:6310 #, c-format msgid "constraints on permanent tables may reference only permanent tables" msgstr "Constraints für permanente Tabellen dürfen nur auf permanente Tabellen verweisen" -#: commands/tablecmds.c:6303 +#: commands/tablecmds.c:6317 #, c-format msgid "constraints on unlogged tables may reference only permanent or unlogged tables" msgstr "Constraints für ungeloggte Tabellen dürfen nur auf permanente oder ungeloggte Tabellen verweisen" -#: commands/tablecmds.c:6309 +#: commands/tablecmds.c:6323 #, c-format msgid "constraints on temporary tables may reference only temporary tables" msgstr "Constraints für temporäre Tabellen dürfen nur auf temporäre Tabellen verweisen" -#: commands/tablecmds.c:6313 +#: commands/tablecmds.c:6327 #, c-format msgid "constraints on temporary tables must involve temporary tables of this session" msgstr "Constraints für temporäre Tabellen müssen temporäre Tabellen dieser Sitzung beinhalten" -#: commands/tablecmds.c:6374 +#: commands/tablecmds.c:6388 #, c-format msgid "number of referencing and referenced columns for foreign key disagree" msgstr "Anzahl der Quell- und Zielspalten im Fremdschlüssel stimmt nicht überein" -#: commands/tablecmds.c:6481 +#: commands/tablecmds.c:6495 #, c-format msgid "foreign key constraint \"%s\" cannot be implemented" msgstr "Fremdschlüssel-Constraint »%s« kann nicht implementiert werden" -#: commands/tablecmds.c:6484 +#: commands/tablecmds.c:6498 #, c-format msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s." msgstr "Schlüsselspalten »%s« und »%s« haben inkompatible Typen: %s und %s." -#: commands/tablecmds.c:6691 commands/tablecmds.c:6841 -#: commands/tablecmds.c:7723 commands/tablecmds.c:7779 +#: commands/tablecmds.c:6705 commands/tablecmds.c:6873 +#: commands/tablecmds.c:7777 commands/tablecmds.c:7833 #, c-format msgid "constraint \"%s\" of relation \"%s\" does not exist" msgstr "Constraint »%s« von Relation »%s« existiert nicht" -#: commands/tablecmds.c:6697 +#: commands/tablecmds.c:6711 #, c-format msgid "constraint \"%s\" of relation \"%s\" is not a foreign key constraint" msgstr "Constraint »%s« von Relation »%s« ist kein Fremdschlüssel-Constraint" -#: commands/tablecmds.c:6848 +#: commands/tablecmds.c:6880 #, c-format msgid "constraint \"%s\" of relation \"%s\" is not a foreign key or check constraint" msgstr "Constraint »%s« von Relation »%s« ist kein Fremdschlüssel- oder Check-Constraint" -#: commands/tablecmds.c:6916 +#: commands/tablecmds.c:6949 #, c-format msgid "constraint must be validated on child tables too" msgstr "Constraint muss ebenso in den abgeleiteten Tabellen validiert werden" -#: commands/tablecmds.c:6985 +#: commands/tablecmds.c:7018 #, c-format msgid "column \"%s\" referenced in foreign key constraint does not exist" msgstr "Spalte »%s«, die im Fremdschlüssel verwendet wird, existiert nicht" -#: commands/tablecmds.c:6990 +#: commands/tablecmds.c:7023 #, c-format msgid "cannot have more than %d keys in a foreign key" msgstr "Fremdschlüssel kann nicht mehr als %d Schlüssel haben" -#: commands/tablecmds.c:7055 +#: commands/tablecmds.c:7088 #, c-format msgid "cannot use a deferrable primary key for referenced table \"%s\"" msgstr "aufschiebbarer Primärschlüssel kann nicht für Tabelle »%s«, auf die verwiesen wird, verwendet werden" -#: commands/tablecmds.c:7072 +#: commands/tablecmds.c:7105 #, c-format msgid "there is no primary key for referenced table \"%s\"" msgstr "in Tabelle »%s«, auf die verwiesen wird, gibt es keinen Primärschlüssel" -#: commands/tablecmds.c:7137 +#: commands/tablecmds.c:7170 #, c-format msgid "foreign key referenced-columns list must not contain duplicates" msgstr "die Liste der Spalten, auf die ein Fremdschlüssel verweist, darf keine doppelten Einträge enthalten" -#: commands/tablecmds.c:7231 +#: commands/tablecmds.c:7264 #, c-format msgid "cannot use a deferrable unique constraint for referenced table \"%s\"" msgstr "aufschiebbarer Unique-Constraint kann nicht für Tabelle »%s«, auf die verwiesen wird, verwendet werden" -#: commands/tablecmds.c:7236 +#: commands/tablecmds.c:7269 #, c-format msgid "there is no unique constraint matching given keys for referenced table \"%s\"" msgstr "in Tabelle »%s«, auf die verwiesen wird, gibt es keinen Unique-Constraint, der auf die angegebenen Schlüssel passt" -#: commands/tablecmds.c:7399 +#: commands/tablecmds.c:7432 #, c-format msgid "validating foreign key constraint \"%s\"" msgstr "validiere Fremdschlüssel-Constraint »%s«" -#: commands/tablecmds.c:7695 +#: commands/tablecmds.c:7731 #, c-format msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" msgstr "geerbter Constraint »%s« von Relation »%s« kann nicht gelöscht werden" -#: commands/tablecmds.c:7729 +#: commands/tablecmds.c:7783 #, c-format msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" msgstr "Constraint »%s« von Relation »%s« existiert nicht, wird übersprungen" -#: commands/tablecmds.c:7868 +#: commands/tablecmds.c:7922 #, c-format msgid "cannot alter column type of typed table" msgstr "Spaltentyp einer getypten Tabelle kann nicht geändert werden" -#: commands/tablecmds.c:7891 +#: commands/tablecmds.c:7945 #, c-format msgid "cannot alter inherited column \"%s\"" msgstr "kann vererbte Spalte »%s« nicht ändern" -#: commands/tablecmds.c:7940 +#: commands/tablecmds.c:7994 #, c-format msgid "result of USING clause for column \"%s\" cannot be cast automatically to type %s" msgstr "Ergebnis der USING-Klausel für Spalte »%s« kann nicht automatisch in Typ %s umgewandelt werden" -#: commands/tablecmds.c:7943 +#: commands/tablecmds.c:7997 #, c-format msgid "You might need to add an explicit cast." msgstr "Sie müssen möglicherweise eine ausdrückliche Typumwandlung hinzufügen." -#: commands/tablecmds.c:7947 +#: commands/tablecmds.c:8001 #, c-format msgid "column \"%s\" cannot be cast automatically to type %s" msgstr "Spalte »%s« kann nicht automatisch in Typ %s umgewandelt werden" #. translator: USING is SQL, don't translate it -#: commands/tablecmds.c:7950 +#: commands/tablecmds.c:8004 #, c-format msgid "You might need to specify \"USING %s::%s\"." msgstr "Sie müssen möglicherweise »USING %s::%s« angeben." -#: commands/tablecmds.c:8003 +#: commands/tablecmds.c:8103 +#, c-format +msgid "USING expression contains a whole-row table reference." +msgstr "USING-Ausdruck enthält einen Verweis auf die ganze Zeile der Tabelle." + +#: commands/tablecmds.c:8114 #, c-format msgid "type of inherited column \"%s\" must be changed in child tables too" msgstr "Typ der vererbten Spalte »%s« muss ebenso in den abgeleiteten Tabellen geändert werden" -#: commands/tablecmds.c:8090 +#: commands/tablecmds.c:8201 #, c-format msgid "cannot alter type of column \"%s\" twice" msgstr "Typ der Spalte »%s« kann nicht zweimal geändert werden" -#: commands/tablecmds.c:8126 +#: commands/tablecmds.c:8237 #, c-format msgid "default for column \"%s\" cannot be cast automatically to type %s" msgstr "Vorgabewert der Spalte »%s« kann nicht automatisch in Typ %s umgewandelt werden" -#: commands/tablecmds.c:8252 +#: commands/tablecmds.c:8363 #, c-format msgid "cannot alter type of a column used by a view or rule" msgstr "Typ einer Spalte, die von einer Sicht oder Regel verwendet wird, kann nicht geändert werden" -#: commands/tablecmds.c:8253 commands/tablecmds.c:8272 -#: commands/tablecmds.c:8290 +#: commands/tablecmds.c:8364 commands/tablecmds.c:8383 +#: commands/tablecmds.c:8401 #, c-format msgid "%s depends on column \"%s\"" msgstr "%s hängt von Spalte »%s« ab" -#: commands/tablecmds.c:8271 +#: commands/tablecmds.c:8382 #, c-format msgid "cannot alter type of a column used in a trigger definition" msgstr "Typ einer Spalte, die in einer Trigger-Definition verwendet wird, kann nicht geändert werden" -#: commands/tablecmds.c:8289 +#: commands/tablecmds.c:8400 #, c-format msgid "cannot alter type of a column used in a policy definition" msgstr "Typ einer Spalte, die in einer Policy-Definition verwendet wird, kann nicht geändert werden" -#: commands/tablecmds.c:8954 +#: commands/tablecmds.c:9065 #, c-format msgid "cannot change owner of index \"%s\"" msgstr "kann Eigentümer des Index »%s« nicht ändern" -#: commands/tablecmds.c:8956 +#: commands/tablecmds.c:9067 #, c-format msgid "Change the ownership of the index's table, instead." msgstr "Ändern Sie stattdessen den Eigentümer der Tabelle des Index." -#: commands/tablecmds.c:8972 +#: commands/tablecmds.c:9083 #, c-format msgid "cannot change owner of sequence \"%s\"" msgstr "kann Eigentümer der Sequenz »%s« nicht ändern" -#: commands/tablecmds.c:8974 commands/tablecmds.c:11396 +#: commands/tablecmds.c:9085 commands/tablecmds.c:11557 #, c-format msgid "Sequence \"%s\" is linked to table \"%s\"." msgstr "Sequenz »%s« ist mit Tabelle »%s« verknüpft." -#: commands/tablecmds.c:8986 commands/tablecmds.c:12043 +#: commands/tablecmds.c:9097 commands/tablecmds.c:12204 #, c-format msgid "Use ALTER TYPE instead." msgstr "Verwenden Sie stattdessen ALTER TYPE." -#: commands/tablecmds.c:8995 +#: commands/tablecmds.c:9106 #, c-format msgid "\"%s\" is not a table, view, sequence, or foreign table" msgstr "»%s« ist keine Tabelle, Sicht, Sequenz oder Fremdtabelle" -#: commands/tablecmds.c:9338 +#: commands/tablecmds.c:9449 #, c-format msgid "cannot have multiple SET TABLESPACE subcommands" msgstr "mehrere SET TABLESPACE Unterbefehle sind ungültig" -#: commands/tablecmds.c:9411 +#: commands/tablecmds.c:9522 #, c-format msgid "\"%s\" is not a table, view, materialized view, index, or TOAST table" msgstr "»%s« ist weder Tabelle, Sicht, materialisierte Sicht, Index noch TOAST-Tabelle" -#: commands/tablecmds.c:9444 commands/view.c:469 +#: commands/tablecmds.c:9555 commands/view.c:498 #, c-format msgid "WITH CHECK OPTION is supported only on automatically updatable views" msgstr "WITH CHECK OPTION wird nur für automatisch aktualisierbare Sichten unterstützt" -#: commands/tablecmds.c:9590 +#: commands/tablecmds.c:9701 #, c-format msgid "cannot move system relation \"%s\"" msgstr "Systemrelation »%s« kann nicht verschoben werden" -#: commands/tablecmds.c:9606 +#: commands/tablecmds.c:9717 #, c-format msgid "cannot move temporary tables of other sessions" msgstr "temporäre Tabellen anderer Sitzungen können nicht verschoben werden" -#: commands/tablecmds.c:9743 +#: commands/tablecmds.c:9854 #, c-format msgid "only tables, indexes, and materialized views exist in tablespaces" msgstr "nur Tabellen, Indexe und materialisierte Sichten existieren in Tablespaces" -#: commands/tablecmds.c:9755 +#: commands/tablecmds.c:9866 #, c-format msgid "cannot move relations in to or out of pg_global tablespace" msgstr "Relationen können nicht in den oder aus dem Tablespace »pg_global« verschoben werden" -#: commands/tablecmds.c:9846 +#: commands/tablecmds.c:9957 #, c-format msgid "aborting because lock on relation \"%s.%s\" is not available" msgstr "Abbruch weil Sperre für Relation »%s.%s« nicht verfügbar ist" -#: commands/tablecmds.c:9862 +#: commands/tablecmds.c:9973 #, c-format msgid "no matching relations in tablespace \"%s\" found" msgstr "keine passenden Relationen in Tablespace »%s« gefunden" -#: commands/tablecmds.c:9936 storage/buffer/bufmgr.c:915 +#: commands/tablecmds.c:10047 storage/buffer/bufmgr.c:915 #, c-format msgid "invalid page in block %u of relation %s" msgstr "ungültige Seite in Block %u von Relation %s" -#: commands/tablecmds.c:10018 +#: commands/tablecmds.c:10129 #, c-format msgid "cannot change inheritance of typed table" msgstr "Vererbung einer getypten Tabelle kann nicht geändert werden" -#: commands/tablecmds.c:10068 +#: commands/tablecmds.c:10179 #, c-format msgid "cannot inherit to temporary relation of another session" msgstr "an temporäre Relation einer anderen Sitzung kann nicht vererbt werden" -#: commands/tablecmds.c:10122 +#: commands/tablecmds.c:10233 #, c-format msgid "circular inheritance not allowed" msgstr "zirkuläre Vererbung ist nicht erlaubt" -#: commands/tablecmds.c:10123 +#: commands/tablecmds.c:10234 #, c-format msgid "\"%s\" is already a child of \"%s\"." msgstr "»%s« ist schon von »%s« abgeleitet." -#: commands/tablecmds.c:10131 +#: commands/tablecmds.c:10242 #, c-format msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs" msgstr "Tabelle »%s« ohne OIDs kann nicht von Tabelle »%s« mit OIDs erben" -#: commands/tablecmds.c:10272 +#: commands/tablecmds.c:10383 #, c-format msgid "column \"%s\" in child table must be marked NOT NULL" msgstr "Spalte »%s« in abgeleiteter Tabelle muss als NOT NULL markiert sein" -#: commands/tablecmds.c:10288 +#: commands/tablecmds.c:10399 commands/tablecmds.c:10432 #, c-format msgid "child table is missing column \"%s\"" msgstr "Spalte »%s« fehlt in abgeleiteter Tabelle" -#: commands/tablecmds.c:10371 +#: commands/tablecmds.c:10515 #, c-format msgid "child table \"%s\" has different definition for check constraint \"%s\"" msgstr "abgeleitete Tabelle »%s« hat unterschiedliche Definition für Check-Constraint »%s«" -#: commands/tablecmds.c:10379 +#: commands/tablecmds.c:10523 #, c-format msgid "constraint \"%s\" conflicts with non-inherited constraint on child table \"%s\"" msgstr "Constraint »%s« kollidiert mit nicht vererbtem Constraint für abgeleitete Tabelle »%s«" -#: commands/tablecmds.c:10403 +#: commands/tablecmds.c:10534 +#, c-format +msgid "constraint \"%s\" conflicts with NOT VALID constraint on child table \"%s\"" +msgstr "Constraint »%s« kollidiert mit NOT-VALID-Constraint für abgeleitete Tabelle »%s«" + +#: commands/tablecmds.c:10558 #, c-format msgid "child table is missing constraint \"%s\"" msgstr "Constraint »%s« fehlt in abgeleiteter Tabelle" -#: commands/tablecmds.c:10487 +#: commands/tablecmds.c:10642 #, c-format msgid "relation \"%s\" is not a parent of relation \"%s\"" msgstr "Relation »%s« ist keine Basisrelation von Relation »%s«" -#: commands/tablecmds.c:10721 +#: commands/tablecmds.c:10876 #, c-format msgid "typed tables cannot inherit" msgstr "getypte Tabellen können nicht erben" -#: commands/tablecmds.c:10752 +#: commands/tablecmds.c:10907 #, c-format msgid "table is missing column \"%s\"" msgstr "Spalte »%s« fehlt in Tabelle" -#: commands/tablecmds.c:10762 +#: commands/tablecmds.c:10917 #, c-format msgid "table has column \"%s\" where type requires \"%s\"" msgstr "Tabelle hat Spalte »%s«, aber Typ benötigt »%s«" -#: commands/tablecmds.c:10771 +#: commands/tablecmds.c:10926 #, c-format msgid "table \"%s\" has different type for column \"%s\"" msgstr "Tabelle »%s« hat unterschiedlichen Typ für Spalte »%s«" -#: commands/tablecmds.c:10784 +#: commands/tablecmds.c:10939 #, c-format msgid "table has extra column \"%s\"" msgstr "Tabelle hat zusätzliche Spalte »%s«" -#: commands/tablecmds.c:10836 +#: commands/tablecmds.c:10991 #, c-format msgid "\"%s\" is not a typed table" msgstr "»%s« ist keine getypte Tabelle" -#: commands/tablecmds.c:11020 +#: commands/tablecmds.c:11175 #, c-format msgid "cannot use non-unique index \"%s\" as replica identity" msgstr "nicht eindeutiger Index »%s« kann nicht als Replik-Identität verwendet werden" -#: commands/tablecmds.c:11026 +#: commands/tablecmds.c:11181 #, c-format msgid "cannot use non-immediate index \"%s\" as replica identity" msgstr "Index »%s« kann nicht als Replik-Identität verwendet werden, weil er nicht IMMEDIATE ist" -#: commands/tablecmds.c:11032 +#: commands/tablecmds.c:11187 #, c-format msgid "cannot use expression index \"%s\" as replica identity" msgstr "Ausdrucksindex »%s« kann nicht als Replik-Identität verwendet werden" -#: commands/tablecmds.c:11038 +#: commands/tablecmds.c:11193 #, c-format msgid "cannot use partial index \"%s\" as replica identity" msgstr "partieller Index »%s« kann nicht als Replik-Identität verwendet werden" -#: commands/tablecmds.c:11044 +#: commands/tablecmds.c:11199 #, c-format msgid "cannot use invalid index \"%s\" as replica identity" msgstr "ungültiger Index »%s« kann nicht als Replik-Identität verwendet werden" -#: commands/tablecmds.c:11065 +#: commands/tablecmds.c:11220 #, c-format msgid "index \"%s\" cannot be used as replica identity because column %d is a system column" msgstr "Index »%s« kann nicht als Replik-Identität verwendet werden, weil Spalte %d eine Systemspalte ist" -#: commands/tablecmds.c:11072 +#: commands/tablecmds.c:11227 #, c-format msgid "index \"%s\" cannot be used as replica identity because column \"%s\" is nullable" msgstr "Index »%s« kann nicht als Replik-Identität verwendet werden, weil Spalte »%s« NULL-Werte akzeptiert" -#: commands/tablecmds.c:11269 +#: commands/tablecmds.c:11430 #, c-format msgid "cannot change logged status of table \"%s\" because it is temporary" msgstr "kann den geloggten Status der Tabelle »%s« nicht ändern, weil sie temporär ist" -#: commands/tablecmds.c:11328 +#: commands/tablecmds.c:11489 #, c-format msgid "could not change table \"%s\" to logged because it references unlogged table \"%s\"" msgstr "konnte Tabelle »%s« nicht in geloggt ändern, weil sie auf die ungeloggte Tabelle »%s« verweist" -#: commands/tablecmds.c:11338 +#: commands/tablecmds.c:11499 #, c-format msgid "could not change table \"%s\" to unlogged because it references logged table \"%s\"" msgstr "konnte Tabelle »%s« nicht in ungeloggt ändern, weil sie auf die geloggte Tabelle »%s« verweist" -#: commands/tablecmds.c:11395 +#: commands/tablecmds.c:11556 #, c-format msgid "cannot move an owned sequence into another schema" msgstr "einer Tabelle zugeordnete Sequenz kann nicht in ein anderes Schema verschoben werden" -#: commands/tablecmds.c:11500 +#: commands/tablecmds.c:11661 #, c-format msgid "relation \"%s\" already exists in schema \"%s\"" msgstr "Relation »%s« existiert bereits in Schema »%s«" -#: commands/tablecmds.c:12027 +#: commands/tablecmds.c:12188 #, c-format msgid "\"%s\" is not a composite type" msgstr "»%s« ist kein zusammengesetzter Typ" -#: commands/tablecmds.c:12057 +#: commands/tablecmds.c:12218 #, c-format msgid "\"%s\" is not a table, view, materialized view, sequence, or foreign table" msgstr "»%s« ist weder Tabelle, Sicht, materialisierte Sicht, Sequenz noch Fremdtabelle" #: commands/tablespace.c:162 commands/tablespace.c:179 #: commands/tablespace.c:190 commands/tablespace.c:198 -#: commands/tablespace.c:625 replication/slot.c:980 storage/file/copydir.c:47 +#: commands/tablespace.c:625 replication/slot.c:997 storage/file/copydir.c:47 #, c-format msgid "could not create directory \"%s\": %m" msgstr "konnte Verzeichnis »%s« nicht erzeugen: %m" @@ -8785,22 +8630,22 @@ msgstr "Triggerfunktion %u gab NULL-Wert zurück" msgid "BEFORE STATEMENT trigger cannot return a value" msgstr "Trigger für BEFORE STATEMENT kann keinen Wert zurückgeben" -#: commands/trigger.c:2726 executor/nodeModifyTable.c:664 -#: executor/nodeModifyTable.c:957 +#: commands/trigger.c:2726 executor/nodeModifyTable.c:679 +#: executor/nodeModifyTable.c:972 #, c-format msgid "tuple to be updated was already modified by an operation triggered by the current command" msgstr "das zu aktualisierende Tupel wurde schon durch eine vom aktuellen Befehl ausgelöste Operation verändert" -#: commands/trigger.c:2727 executor/nodeModifyTable.c:665 -#: executor/nodeModifyTable.c:958 +#: commands/trigger.c:2727 executor/nodeModifyTable.c:680 +#: executor/nodeModifyTable.c:973 #, c-format msgid "Consider using an AFTER trigger instead of a BEFORE trigger to propagate changes to other rows." msgstr "Verwenden Sie einen AFTER-Trigger anstelle eines BEFORE-Triggers, um Änderungen an andere Zeilen zu propagieren." -#: commands/trigger.c:2741 executor/execMain.c:2377 -#: executor/nodeLockRows.c:216 executor/nodeModifyTable.c:200 -#: executor/nodeModifyTable.c:677 executor/nodeModifyTable.c:970 -#: executor/nodeModifyTable.c:1136 +#: commands/trigger.c:2741 executor/execMain.c:2379 +#: executor/nodeLockRows.c:216 executor/nodeModifyTable.c:213 +#: executor/nodeModifyTable.c:692 executor/nodeModifyTable.c:985 +#: executor/nodeModifyTable.c:1151 #, c-format msgid "could not serialize access due to concurrent update" msgstr "kann Zugriff nicht serialisieren wegen gleichzeitiger Aktualisierung" @@ -9155,42 +9000,42 @@ msgstr "Constraint »%s« von Domäne »%s« ist kein Check-Constraint" msgid "column \"%s\" of table \"%s\" contains values that violate the new constraint" msgstr "Spalte »%s« von Tabelle »%s« enthält Werte, die den neuen Constraint verletzen" -#: commands/typecmds.c:2971 commands/typecmds.c:3228 commands/typecmds.c:3417 +#: commands/typecmds.c:2986 commands/typecmds.c:3243 commands/typecmds.c:3432 #, c-format msgid "%s is not a domain" msgstr "%s ist keine Domäne" -#: commands/typecmds.c:3005 +#: commands/typecmds.c:3020 #, c-format msgid "constraint \"%s\" for domain \"%s\" already exists" msgstr "Constraint »%s« für Domäne »%s« existiert bereits" -#: commands/typecmds.c:3055 +#: commands/typecmds.c:3070 #, c-format msgid "cannot use table references in domain check constraint" msgstr "Tabellenverweise können in Domänen-Check-Constraints nicht verwendet werden" -#: commands/typecmds.c:3158 commands/typecmds.c:3240 commands/typecmds.c:3534 +#: commands/typecmds.c:3173 commands/typecmds.c:3255 commands/typecmds.c:3549 #, c-format msgid "%s is a table's row type" msgstr "%s ist der Zeilentyp einer Tabelle" -#: commands/typecmds.c:3160 commands/typecmds.c:3242 commands/typecmds.c:3536 +#: commands/typecmds.c:3175 commands/typecmds.c:3257 commands/typecmds.c:3551 #, c-format msgid "Use ALTER TABLE instead." msgstr "Verwenden Sie stattdessen ALTER TABLE." -#: commands/typecmds.c:3167 commands/typecmds.c:3249 commands/typecmds.c:3449 +#: commands/typecmds.c:3182 commands/typecmds.c:3264 commands/typecmds.c:3464 #, c-format msgid "cannot alter array type %s" msgstr "Array-Typ %s kann nicht verändert werden" -#: commands/typecmds.c:3169 commands/typecmds.c:3251 commands/typecmds.c:3451 +#: commands/typecmds.c:3184 commands/typecmds.c:3266 commands/typecmds.c:3466 #, c-format msgid "You can alter type %s, which will alter the array type as well." msgstr "Sie können den Typ %s ändern, wodurch der Array-Typ ebenfalls geändert wird." -#: commands/typecmds.c:3519 +#: commands/typecmds.c:3534 #, c-format msgid "type \"%s\" already exists in schema \"%s\"" msgstr "Typ %s existiert bereits in Schema »%s«" @@ -9220,8 +9065,8 @@ msgstr "nur Superuser können das Attribut »bypassrls« ändern" msgid "permission denied to create role" msgstr "keine Berechtigung, um Rolle zu erzeugen" -#: commands/user.c:322 commands/user.c:1176 commands/user.c:1183 gram.y:13606 -#: gram.y:13641 utils/adt/acl.c:5279 utils/adt/acl.c:5285 +#: commands/user.c:322 commands/user.c:1176 commands/user.c:1183 gram.y:13628 +#: gram.y:13663 utils/adt/acl.c:5279 utils/adt/acl.c:5285 #, c-format msgid "role name \"%s\" is reserved" msgstr "Rollenname »%s« ist reserviert" @@ -9434,91 +9279,96 @@ msgstr "überspringe »%s« --- nur Eigentümer der Tabelle oder der Datenbank k msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables" msgstr "überspringe »%s« --- kann Nicht-Tabellen oder besondere Systemtabellen nicht vacuumen" -#: commands/vacuumlazy.c:366 +#: commands/vacuumlazy.c:371 #, c-format msgid "automatic vacuum of table \"%s.%s.%s\": index scans: %d\n" msgstr "automatisches Vacuum der Tabelle »%s.%s.%s«: Index-Scans: %d\n" -#: commands/vacuumlazy.c:371 +#: commands/vacuumlazy.c:376 #, c-format msgid "pages: %u removed, %u remain, %u skipped due to pins, %u skipped frozen\n" msgstr "Seiten: %u entfernt, %u verbleiben, %u übersprungen wegen Pins, %u übersprungen weil eingefroren\n" -#: commands/vacuumlazy.c:377 +#: commands/vacuumlazy.c:382 #, c-format msgid "tuples: %.0f removed, %.0f remain, %.0f are dead but not yet removable\n" msgstr "Tupel: %.0f entfernt, %.0f verbleiben, %.0f sind tot aber noch nicht entfernbar\n" -#: commands/vacuumlazy.c:382 +#: commands/vacuumlazy.c:387 #, c-format msgid "buffer usage: %d hits, %d misses, %d dirtied\n" msgstr "Puffer-Verwendung: %d Treffer, %d Verfehlen, %d geändert\n" -#: commands/vacuumlazy.c:386 +#: commands/vacuumlazy.c:391 #, c-format msgid "avg read rate: %.3f MB/s, avg write rate: %.3f MB/s\n" msgstr "durchschn. Leserate: %.3f MB/s, durchschn. Schreibrate: %.3f MB/s\n" -#: commands/vacuumlazy.c:388 +#: commands/vacuumlazy.c:393 #, c-format msgid "system usage: %s" msgstr "Systembenutzung: %s" -#: commands/vacuumlazy.c:846 +#: commands/vacuumlazy.c:852 #, c-format msgid "relation \"%s\" page %u is uninitialized --- fixing" msgstr "Seite %2$u in Relation »%1$s« ist nicht initialisiert --- wird repariert" -#: commands/vacuumlazy.c:1316 +#: commands/vacuumlazy.c:1322 #, c-format msgid "\"%s\": removed %.0f row versions in %u pages" msgstr "»%s«: %.0f Zeilenversionen in %u Seiten entfernt" -#: commands/vacuumlazy.c:1326 +#: commands/vacuumlazy.c:1332 #, c-format msgid "%.0f dead row versions cannot be removed yet.\n" msgstr "%.0f tote Zeilenversionen können noch nicht entfernt werden.\n" -#: commands/vacuumlazy.c:1328 +#: commands/vacuumlazy.c:1334 #, c-format msgid "There were %.0f unused item pointers.\n" msgstr "Es gab %.0f unbenutzte Itemzeiger.\n" -#: commands/vacuumlazy.c:1330 +#: commands/vacuumlazy.c:1336 #, c-format msgid "Skipped %u page due to buffer pins.\n" msgid_plural "Skipped %u pages due to buffer pins.\n" msgstr[0] "%u Seite wegen Buffer-Pins übersprungen.\n" msgstr[1] "%u Seiten wegen Buffer-Pins übersprungen.\n" -#: commands/vacuumlazy.c:1334 +#: commands/vacuumlazy.c:1340 #, c-format msgid "%u page is entirely empty.\n" msgid_plural "%u pages are entirely empty.\n" msgstr[0] "%u Seite ist vollkommen leer.\n" msgstr[1] "%u Seiten sind vollkommen leer.\n" -#: commands/vacuumlazy.c:1342 +#: commands/vacuumlazy.c:1344 +#, c-format +msgid "%s." +msgstr "%s." + +#: commands/vacuumlazy.c:1347 #, c-format msgid "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u pages" msgstr "»%s«: %.0f entfernbare, %.0f nicht entfernbare Zeilenversionen in %u von %u Seiten gefunden" -#: commands/vacuumlazy.c:1411 +#: commands/vacuumlazy.c:1416 #, c-format msgid "\"%s\": removed %d row versions in %d pages" msgstr "»%s«: %d Zeilenversionen in %d Seiten entfernt" -#: commands/vacuumlazy.c:1600 +#: commands/vacuumlazy.c:1604 #, c-format msgid "scanned index \"%s\" to remove %d row versions" msgstr "Index »%s« gelesen und %d Zeilenversionen entfernt" -#: commands/vacuumlazy.c:1646 +#: commands/vacuumlazy.c:1650 #, c-format msgid "index \"%s\" now contains %.0f row versions in %u pages" msgstr "Index »%s« enthält %.0f Zeilenversionen in %u Seiten" -#: commands/vacuumlazy.c:1650 +#: commands/vacuumlazy.c:1654 #, c-format msgid "" "%.0f index row versions were removed.\n" @@ -9529,22 +9379,22 @@ msgstr "" "%u Indexseiten wurden gelöscht, %u sind gegenwärtig wiederverwendbar.\n" "%s." -#: commands/vacuumlazy.c:1745 +#: commands/vacuumlazy.c:1749 #, c-format msgid "\"%s\": stopping truncate due to conflicting lock request" msgstr "»%s«: Truncate wird gestoppt wegen Sperrkonflikt" -#: commands/vacuumlazy.c:1810 +#: commands/vacuumlazy.c:1814 #, c-format msgid "\"%s\": truncated %u to %u pages" msgstr "»%s«: von %u auf %u Seiten verkürzt" -#: commands/vacuumlazy.c:1866 +#: commands/vacuumlazy.c:1870 #, c-format msgid "\"%s\": suspending truncate due to conflicting lock request" msgstr "»%s«: Truncate wird ausgesetzt wegen Sperrkonflikt" -#: commands/variable.c:164 utils/misc/guc.c:9883 +#: commands/variable.c:164 utils/misc/guc.c:9899 #, c-format msgid "Unrecognized key word: \"%s\"." msgstr "Unbekanntes Schlüsselwort: »%s«." @@ -9604,7 +9454,7 @@ msgstr "SET TRANSACTION ISOLATION LEVEL muss vor allen Anfragen aufgerufen werde msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction" msgstr "SET TRANSACTION ISOLATION LEVEL kann nicht in einer Subtransaktion aufgerufen werden" -#: commands/variable.c:574 storage/lmgr/predicate.c:1587 +#: commands/variable.c:574 storage/lmgr/predicate.c:1602 #, c-format msgid "cannot use serializable mode in a hot standby" msgstr "kann serialisierbaren Modus nicht in einem Hot Standby verwenden" @@ -9636,8 +9486,8 @@ msgstr "»client_encoding« kann jetzt nicht geändert werden." #: commands/variable.c:779 #, c-format -msgid "cannot change client_encoding in a parallel worker" -msgstr "client_encoding kann nicht in einem parallelen Arbeitsprozess geändert werden" +msgid "cannot change client_encoding during a parallel operation" +msgstr "client_encoding kann nicht während einer parallelen Operation geändert werden" #: commands/variable.c:915 #, c-format @@ -9654,52 +9504,52 @@ msgstr "ungültiger Wert für Option »check_option«" msgid "Valid values are \"local\" and \"cascaded\"." msgstr "Gültige Werte sind »local« und »cascaded«." -#: commands/view.c:103 +#: commands/view.c:101 #, c-format msgid "could not determine which collation to use for view column \"%s\"" msgstr "konnte die für die Sichtspalte »%s« zu verwendende Sortierfolge nicht bestimmen" -#: commands/view.c:117 +#: commands/view.c:115 #, c-format msgid "view must have at least one column" msgstr "Sicht muss mindestens eine Spalte haben" -#: commands/view.c:251 commands/view.c:263 +#: commands/view.c:280 commands/view.c:292 #, c-format msgid "cannot drop columns from view" msgstr "aus einer Sicht können keine Spalten gelöscht werden" -#: commands/view.c:268 +#: commands/view.c:297 #, c-format msgid "cannot change name of view column \"%s\" to \"%s\"" msgstr "kann Namen der Sichtspalte »%s« nicht in »%s« ändern" -#: commands/view.c:276 +#: commands/view.c:305 #, c-format msgid "cannot change data type of view column \"%s\" from %s to %s" msgstr "kann Datentyp der Sichtspalte »%s« nicht von %s in %s ändern" -#: commands/view.c:415 +#: commands/view.c:444 #, c-format msgid "views must not contain SELECT INTO" msgstr "Sichten dürfen kein SELECT INTO enthalten" -#: commands/view.c:428 +#: commands/view.c:457 #, c-format msgid "views must not contain data-modifying statements in WITH" msgstr "Sichten dürfen keine datenmodifizierenden Anweisungen in WITH enthalten" -#: commands/view.c:499 +#: commands/view.c:528 #, c-format msgid "CREATE VIEW specifies more column names than columns" msgstr "CREATE VIEW gibt mehr Spaltennamen als Spalten an" -#: commands/view.c:507 +#: commands/view.c:536 #, c-format msgid "views cannot be unlogged because they do not have storage" msgstr "Sichten können nicht ungeloggt sein, weil sie keinen Speicherplatz verwenden" -#: commands/view.c:521 +#: commands/view.c:550 #, c-format msgid "view \"%s\" will be a temporary view" msgstr "Sicht »%s« wird eine temporäre Sicht" @@ -9789,32 +9639,32 @@ msgstr "kann Sequenz »%s« nicht ändern" msgid "cannot change TOAST relation \"%s\"" msgstr "kann TOAST-Relation »%s« nicht ändern" -#: executor/execMain.c:1051 rewrite/rewriteHandler.c:2648 +#: executor/execMain.c:1051 rewrite/rewriteHandler.c:2679 #, c-format msgid "cannot insert into view \"%s\"" msgstr "kann nicht in Sicht »%s« einfügen" -#: executor/execMain.c:1053 rewrite/rewriteHandler.c:2651 +#: executor/execMain.c:1053 rewrite/rewriteHandler.c:2682 #, c-format msgid "To enable inserting into the view, provide an INSTEAD OF INSERT trigger or an unconditional ON INSERT DO INSTEAD rule." msgstr "Um Einfügen in die Sicht zu ermöglichen, richten Sie einen INSTEAD OF INSERT Trigger oder eine ON INSERT DO INSTEAD Regel ohne Bedingung ein." -#: executor/execMain.c:1059 rewrite/rewriteHandler.c:2656 +#: executor/execMain.c:1059 rewrite/rewriteHandler.c:2687 #, c-format msgid "cannot update view \"%s\"" msgstr "kann Sicht »%s« nicht aktualisieren" -#: executor/execMain.c:1061 rewrite/rewriteHandler.c:2659 +#: executor/execMain.c:1061 rewrite/rewriteHandler.c:2690 #, c-format msgid "To enable updating the view, provide an INSTEAD OF UPDATE trigger or an unconditional ON UPDATE DO INSTEAD rule." msgstr "Um Aktualisieren der Sicht zu ermöglichen, richten Sie einen INSTEAD OF UPDATE Trigger oder eine ON UPDATE DO INSTEAD Regel ohne Bedingung ein." -#: executor/execMain.c:1067 rewrite/rewriteHandler.c:2664 +#: executor/execMain.c:1067 rewrite/rewriteHandler.c:2695 #, c-format msgid "cannot delete from view \"%s\"" msgstr "kann nicht aus Sicht »%s« löschen" -#: executor/execMain.c:1069 rewrite/rewriteHandler.c:2667 +#: executor/execMain.c:1069 rewrite/rewriteHandler.c:2698 #, c-format msgid "To enable deleting from the view, provide an INSTEAD OF DELETE trigger or an unconditional ON DELETE DO INSTEAD rule." msgstr "Um Löschen aus der Sicht zu ermöglichen, richten Sie einen INSTEAD OF DELETE Trigger oder eine ON DELETE DO INSTEAD Regel ohne Bedingung ein." @@ -9879,7 +9729,7 @@ msgstr "kann Zeilen in Sicht »%s« nicht sperren" msgid "cannot lock rows in materialized view \"%s\"" msgstr "kann Zeilen in materialisierter Sicht »%s« nicht sperren" -#: executor/execMain.c:1192 executor/execMain.c:2611 +#: executor/execMain.c:1192 executor/execMain.c:2613 #: executor/nodeLockRows.c:132 #, c-format msgid "cannot lock rows in foreign table \"%s\"" @@ -9890,51 +9740,51 @@ msgstr "kann Zeilen in Fremdtabelle »%s« nicht sperren" msgid "cannot lock rows in relation \"%s\"" msgstr "kann Zeilen in Relation »%s« nicht sperren" -#: executor/execMain.c:1729 +#: executor/execMain.c:1731 #, c-format msgid "null value in column \"%s\" violates not-null constraint" msgstr "NULL-Wert in Spalte »%s« verletzt Not-Null-Constraint" -#: executor/execMain.c:1731 executor/execMain.c:1757 executor/execMain.c:1846 +#: executor/execMain.c:1733 executor/execMain.c:1759 executor/execMain.c:1848 #, c-format msgid "Failing row contains %s." msgstr "Fehlgeschlagene Zeile enthält %s." -#: executor/execMain.c:1755 +#: executor/execMain.c:1757 #, c-format msgid "new row for relation \"%s\" violates check constraint \"%s\"" msgstr "neue Zeile für Relation »%s« verletzt Check-Constraint »%s«" -#: executor/execMain.c:1844 +#: executor/execMain.c:1846 #, c-format msgid "new row violates check option for view \"%s\"" msgstr "neue Zeile verletzt Check-Option für Sicht »%s«" -#: executor/execMain.c:1854 +#: executor/execMain.c:1856 #, c-format msgid "new row violates row-level security policy \"%s\" for table \"%s\"" msgstr "neue Zeile verletzt Policy für Sicherheit auf Zeilenebene »%s« für Tabelle »%s«" -#: executor/execMain.c:1859 +#: executor/execMain.c:1861 #, c-format msgid "new row violates row-level security policy for table \"%s\"" msgstr "neue Zeile verletzt Policy für Sicherheit auf Zeilenebene für Tabelle »%s«" -#: executor/execMain.c:1866 +#: executor/execMain.c:1868 #, c-format msgid "new row violates row-level security policy \"%s\" (USING expression) for table \"%s\"" msgstr "neue Zeile verletzt Policy für Sicherheit auf Zeilenebene »%s« (USING-Ausdruck) für Tabelle »%s«" -#: executor/execMain.c:1871 +#: executor/execMain.c:1873 #, c-format msgid "new row violates row-level security policy (USING expression) for table \"%s\"" msgstr "neue Zeile verletzt Policy für Sicherheit auf Zeilenebene (USING-Ausdruck) für Tabelle »%s«" -#: executor/execQual.c:302 executor/execQual.c:339 executor/execQual.c:3230 -#: utils/adt/array_userfuncs.c:472 utils/adt/arrayfuncs.c:260 +#: executor/execQual.c:302 executor/execQual.c:339 executor/execQual.c:3236 +#: utils/adt/array_userfuncs.c:484 utils/adt/arrayfuncs.c:260 #: utils/adt/arrayfuncs.c:558 utils/adt/arrayfuncs.c:1288 #: utils/adt/arrayfuncs.c:3361 utils/adt/arrayfuncs.c:5241 -#: utils/adt/arrayfuncs.c:5764 +#: utils/adt/arrayfuncs.c:5758 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" msgstr "Anzahl der Arraydimensionen (%d) überschreitet erlaubtes Maximum (%d)" @@ -9944,12 +9794,12 @@ msgstr "Anzahl der Arraydimensionen (%d) überschreitet erlaubtes Maximum (%d)" msgid "array subscript in assignment must not be null" msgstr "Arrayindex in Zuweisung darf nicht NULL sein" -#: executor/execQual.c:657 executor/execQual.c:4170 +#: executor/execQual.c:657 executor/execQual.c:4183 #, c-format msgid "attribute %d has wrong type" msgstr "Attribut %d hat falschen Typ" -#: executor/execQual.c:658 executor/execQual.c:4171 +#: executor/execQual.c:658 executor/execQual.c:4184 #, c-format msgid "Table has type %s, but query expects %s." msgstr "Tabelle hat Typ %s, aber Anfrage erwartet %s." @@ -10038,58 +9888,58 @@ msgstr "IS DISTINCT FROM unterstützt keine Mengenargumente" msgid "op ANY/ALL (array) does not support set arguments" msgstr "op ANY/ALL (array) unterstützt keine Mengenargumente" -#: executor/execQual.c:3208 +#: executor/execQual.c:3214 #, c-format msgid "cannot merge incompatible arrays" msgstr "kann inkompatible Arrays nicht verschmelzen" -#: executor/execQual.c:3209 +#: executor/execQual.c:3215 #, c-format msgid "Array with element type %s cannot be included in ARRAY construct with element type %s." msgstr "Arrayelement mit Typ %s kann nicht in ARRAY-Konstrukt mit Elementtyp %s verwendet werden." -#: executor/execQual.c:3250 executor/execQual.c:3277 +#: executor/execQual.c:3256 executor/execQual.c:3283 #, c-format msgid "multidimensional arrays must have array expressions with matching dimensions" msgstr "mehrdimensionale Arrays müssen Arraysausdrücke mit gleicher Anzahl Dimensionen haben" -#: executor/execQual.c:3792 +#: executor/execQual.c:3798 #, c-format msgid "NULLIF does not support set arguments" msgstr "NULLIF unterstützt keine Mengenargumente" -#: executor/execQual.c:4040 utils/adt/domains.c:136 +#: executor/execQual.c:4046 utils/adt/domains.c:137 #, c-format msgid "domain %s does not allow null values" msgstr "Domäne %s erlaubt keine NULL-Werte" -#: executor/execQual.c:4070 utils/adt/domains.c:173 +#: executor/execQual.c:4083 utils/adt/domains.c:179 #, c-format msgid "value for domain %s violates check constraint \"%s\"" msgstr "Wert für Domäne %s verletzt Check-Constraint »%s«" -#: executor/execQual.c:4425 +#: executor/execQual.c:4438 #, c-format msgid "WHERE CURRENT OF is not supported for this table type" msgstr "WHERE CURRENT OF wird für diesen Tabellentyp nicht unterstützt" -#: executor/execQual.c:4614 parser/parse_agg.c:758 +#: executor/execQual.c:4627 parser/parse_agg.c:758 #, c-format msgid "window function calls cannot be nested" msgstr "Aufrufe von Fensterfunktionen können nicht geschachtelt werden" -#: executor/execQual.c:4826 +#: executor/execQual.c:4839 #, c-format msgid "target type is not an array" msgstr "Zieltyp ist kein Array" -#: executor/execQual.c:4941 +#: executor/execQual.c:4956 #, c-format msgid "ROW() column has type %s instead of type %s" msgstr "ROW()-Spalte hat Typ %s statt Typ %s" -#: executor/execQual.c:5076 utils/adt/arrayfuncs.c:3803 -#: utils/adt/arrayfuncs.c:6337 utils/adt/rowtypes.c:927 +#: executor/execQual.c:5091 utils/adt/arrayfuncs.c:3803 +#: utils/adt/arrayfuncs.c:6325 utils/adt/rowtypes.c:927 #, c-format msgid "could not identify a comparison function for type %s" msgstr "konnte keine Vergleichsfunktion für Typ %s ermitteln" @@ -10109,86 +9959,91 @@ msgstr "Verwenden Sie den Befehl REFRESH MATERIALIZED VIEW." msgid "could not determine actual type of argument declared %s" msgstr "konnte tatsächlichen Typ von Argument mit deklarierten Typ %s nicht bestimmen" +#: executor/functions.c:511 +#, c-format +msgid "cannot COPY to/from client in a SQL function" +msgstr "COPY vom/zum Client funktioniert in einer SQL-Funktion nicht" + #. translator: %s is a SQL statement name -#: executor/functions.c:508 +#: executor/functions.c:517 #, c-format msgid "%s is not allowed in a SQL function" msgstr "%s ist in SQL-Funktionen nicht erlaubt" #. translator: %s is a SQL statement name -#: executor/functions.c:515 executor/spi.c:1364 executor/spi.c:2154 +#: executor/functions.c:524 executor/spi.c:1364 executor/spi.c:2154 #, c-format msgid "%s is not allowed in a non-volatile function" msgstr "%s ist in als nicht »volatile« markierten Funktionen nicht erlaubt" -#: executor/functions.c:641 +#: executor/functions.c:650 #, c-format msgid "could not determine actual result type for function declared to return type %s" msgstr "konnte tatsächlichen Ergebnistyp von Funktion mit deklarierten Rückgabetyp %s nicht bestimmen" -#: executor/functions.c:1406 +#: executor/functions.c:1415 #, c-format msgid "SQL function \"%s\" statement %d" msgstr "SQL-Funktion »%s« Anweisung %d" -#: executor/functions.c:1432 +#: executor/functions.c:1441 #, c-format msgid "SQL function \"%s\" during startup" msgstr "SQL-Funktion »%s« beim Start" -#: executor/functions.c:1591 executor/functions.c:1628 -#: executor/functions.c:1640 executor/functions.c:1753 -#: executor/functions.c:1786 executor/functions.c:1816 +#: executor/functions.c:1600 executor/functions.c:1637 +#: executor/functions.c:1649 executor/functions.c:1762 +#: executor/functions.c:1795 executor/functions.c:1825 #, c-format msgid "return type mismatch in function declared to return %s" msgstr "Rückgabetyp von Funktion stimmt nicht überein; deklariert als %s" -#: executor/functions.c:1593 +#: executor/functions.c:1602 #, c-format msgid "Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING." msgstr "Die letzte Anweisung der Funktion muss ein SELECT oder INSERT/UPDATE/DELETE RETURNING sein." -#: executor/functions.c:1630 +#: executor/functions.c:1639 #, c-format msgid "Final statement must return exactly one column." msgstr "Die letzte Anweisung muss genau eine Spalte zurückgeben." -#: executor/functions.c:1642 +#: executor/functions.c:1651 #, c-format msgid "Actual return type is %s." msgstr "Eigentlicher Rückgabetyp ist %s." -#: executor/functions.c:1755 +#: executor/functions.c:1764 #, c-format msgid "Final statement returns too many columns." msgstr "Die letzte Anweisung gibt zu viele Spalten zurück." -#: executor/functions.c:1788 +#: executor/functions.c:1797 #, c-format msgid "Final statement returns %s instead of %s at column %d." msgstr "Die letzte Anweisung ergibt %s statt %s in Spalte %d." -#: executor/functions.c:1818 +#: executor/functions.c:1827 #, c-format msgid "Final statement returns too few columns." msgstr "Die letzte Anweisung gibt zu wenige Spalten zurück." -#: executor/functions.c:1867 +#: executor/functions.c:1876 #, c-format msgid "return type %s is not supported for SQL functions" msgstr "Rückgabetyp %s wird von SQL-Funktionen nicht unterstützt" -#: executor/nodeAgg.c:2983 +#: executor/nodeAgg.c:3038 #, c-format msgid "combine function for aggregate %u must be declared as STRICT" msgstr "Kombinierfunktion für Aggregatfunktion %u muss als STRICT deklariert sein" -#: executor/nodeAgg.c:3028 executor/nodeWindowAgg.c:2285 +#: executor/nodeAgg.c:3083 executor/nodeWindowAgg.c:2318 #, c-format msgid "aggregate %u needs to have compatible input type and transition type" msgstr "Aggregatfunktion %u muss kompatiblen Eingabe- und Übergangstyp haben" -#: executor/nodeAgg.c:3094 parser/parse_agg.c:612 parser/parse_agg.c:642 +#: executor/nodeAgg.c:3149 parser/parse_agg.c:612 parser/parse_agg.c:642 #, c-format msgid "aggregate function calls cannot be nested" msgstr "Aufrufe von Aggregatfunktionen können nicht geschachtelt werden" @@ -10208,7 +10063,7 @@ msgstr "konnte Position in temporärer Datei für Hash-Verbund nicht auf Anfang msgid "could not write to hash-join temporary file: %m" msgstr "konnte nicht in temporäre Datei für Hash-Verbund schreiben: %m" -#: executor/nodeHashjoin.c:928 executor/nodeHashjoin.c:938 +#: executor/nodeHashjoin.c:935 executor/nodeHashjoin.c:945 #, c-format msgid "could not read from hash-join temporary file: %m" msgstr "konnte nicht aus temporärer Datei für Hash-Verbund lesen: %m" @@ -10253,12 +10108,12 @@ msgstr "Anfrage liefert einen Wert für eine gelöschte Spalte auf Position %d." msgid "Query has too few columns." msgstr "Anfrage hat zu wenige Spalten." -#: executor/nodeModifyTable.c:1117 +#: executor/nodeModifyTable.c:1132 #, c-format msgid "ON CONFLICT DO UPDATE command cannot affect row a second time" msgstr "Befehl in ON CONFLICT DO UPDATE kann eine Zeile nicht ein zweites Mal ändern" -#: executor/nodeModifyTable.c:1118 +#: executor/nodeModifyTable.c:1133 #, c-format msgid "Ensure that no rows proposed for insertion within the same command have duplicate constrained values." msgstr "Stellen Sie sicher, dass keine im selben Befehl fürs Einfügen vorgesehene Zeilen doppelte Werte haben, die einen Constraint verletzen würden." @@ -10284,22 +10139,22 @@ msgstr "als Ausdruck verwendete Unteranfrage ergab mehr als eine Zeile" msgid "moving-aggregate transition function must not return null" msgstr "Moving-Aggregat-Übergangsfunktion darf nicht NULL zurückgeben" -#: executor/nodeWindowAgg.c:1609 +#: executor/nodeWindowAgg.c:1642 #, c-format msgid "frame starting offset must not be null" msgstr "Frame-Start-Offset darf nicht NULL sein" -#: executor/nodeWindowAgg.c:1622 +#: executor/nodeWindowAgg.c:1655 #, c-format msgid "frame starting offset must not be negative" msgstr "Frame-Start-Offset darf nicht negativ sein" -#: executor/nodeWindowAgg.c:1635 +#: executor/nodeWindowAgg.c:1668 #, c-format msgid "frame ending offset must not be null" msgstr "Frame-Ende-Offset darf nicht NULL sein" -#: executor/nodeWindowAgg.c:1648 +#: executor/nodeWindowAgg.c:1681 #, c-format msgid "frame ending offset must not be negative" msgstr "Frame-Ende-Offset darf nicht negativ sein" @@ -10335,7 +10190,7 @@ msgstr "%s kann nicht als Cursor geöffnet werden" msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE wird nicht unterstützt" -#: executor/spi.c:1339 parser/analyze.c:2363 +#: executor/spi.c:1339 parser/analyze.c:2360 #, c-format msgid "Scrollable cursors must be READ ONLY." msgstr "Scrollbare Cursor müssen READ ONLY sein." @@ -10370,285 +10225,285 @@ msgstr "Gültige Optionen in diesem Zusammenhang sind: %s" msgid "unrecognized role option \"%s\"" msgstr "unbekannte Rollenoption »%s«" -#: gram.y:1278 gram.y:1293 +#: gram.y:1286 gram.y:1301 #, c-format msgid "CREATE SCHEMA IF NOT EXISTS cannot include schema elements" msgstr "CREATE SCHEMA IF NOT EXISTS kann keine Schemaelemente enthalten" -#: gram.y:1438 +#: gram.y:1446 #, c-format msgid "current database cannot be changed" msgstr "aktuelle Datenbank kann nicht geändert werden" -#: gram.y:1562 +#: gram.y:1570 #, c-format msgid "time zone interval must be HOUR or HOUR TO MINUTE" msgstr "Zeitzonenintervall muss HOUR oder HOUR TO MINUTE sein" -#: gram.y:2600 gram.y:2629 +#: gram.y:2608 gram.y:2637 #, c-format msgid "STDIN/STDOUT not allowed with PROGRAM" msgstr "STDIN/STDOUT sind nicht mit PROGRAM erlaubt" -#: gram.y:2895 gram.y:2902 gram.y:10286 gram.y:10294 +#: gram.y:2903 gram.y:2910 gram.y:10304 gram.y:10312 #, c-format msgid "GLOBAL is deprecated in temporary table creation" msgstr "die Verwendung von GLOBAL beim Erzeugen einer temporären Tabelle ist veraltet" -#: gram.y:3343 utils/adt/ri_triggers.c:316 utils/adt/ri_triggers.c:373 -#: utils/adt/ri_triggers.c:792 utils/adt/ri_triggers.c:1015 -#: utils/adt/ri_triggers.c:1171 utils/adt/ri_triggers.c:1352 -#: utils/adt/ri_triggers.c:1517 utils/adt/ri_triggers.c:1693 -#: utils/adt/ri_triggers.c:1873 utils/adt/ri_triggers.c:2064 -#: utils/adt/ri_triggers.c:2122 utils/adt/ri_triggers.c:2227 -#: utils/adt/ri_triggers.c:2404 +#: gram.y:3351 utils/adt/ri_triggers.c:314 utils/adt/ri_triggers.c:371 +#: utils/adt/ri_triggers.c:790 utils/adt/ri_triggers.c:1013 +#: utils/adt/ri_triggers.c:1169 utils/adt/ri_triggers.c:1350 +#: utils/adt/ri_triggers.c:1515 utils/adt/ri_triggers.c:1691 +#: utils/adt/ri_triggers.c:1871 utils/adt/ri_triggers.c:2062 +#: utils/adt/ri_triggers.c:2120 utils/adt/ri_triggers.c:2225 +#: utils/adt/ri_triggers.c:2402 #, c-format msgid "MATCH PARTIAL not yet implemented" msgstr "MATCH PARTIAL ist noch nicht implementiert" -#: gram.y:4800 +#: gram.y:4818 msgid "duplicate trigger events specified" msgstr "mehrere Trigger-Ereignisse angegeben" -#: gram.y:4893 parser/parse_utilcmd.c:2743 parser/parse_utilcmd.c:2769 +#: gram.y:4911 parser/parse_utilcmd.c:2729 parser/parse_utilcmd.c:2755 #, c-format msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" msgstr "Constraint, der als INITIALLY DEFERRED deklariert wurde, muss DEFERRABLE sein" -#: gram.y:4900 +#: gram.y:4918 #, c-format msgid "conflicting constraint properties" msgstr "widersprüchliche Constraint-Eigentschaften" -#: gram.y:5032 +#: gram.y:5050 #, c-format msgid "CREATE ASSERTION is not yet implemented" msgstr "CREATE ASSERTION ist noch nicht implementiert" -#: gram.y:5048 +#: gram.y:5066 #, c-format msgid "DROP ASSERTION is not yet implemented" msgstr "DROP ASSERTION ist noch nicht implementiert" -#: gram.y:5394 +#: gram.y:5412 #, c-format msgid "RECHECK is no longer required" msgstr "RECHECK wird nicht mehr benötigt" -#: gram.y:5395 +#: gram.y:5413 #, c-format msgid "Update your data type." msgstr "Aktualisieren Sie Ihren Datentyp." -#: gram.y:6974 +#: gram.y:6992 #, c-format msgid "aggregates cannot have output arguments" msgstr "Aggregatfunktionen können keine OUT-Argumente haben" -#: gram.y:7293 utils/adt/regproc.c:774 utils/adt/regproc.c:815 +#: gram.y:7311 utils/adt/regproc.c:775 utils/adt/regproc.c:816 #, c-format msgid "missing argument" msgstr "Argument fehlt" -#: gram.y:7294 utils/adt/regproc.c:775 utils/adt/regproc.c:816 +#: gram.y:7312 utils/adt/regproc.c:776 utils/adt/regproc.c:817 #, c-format msgid "Use NONE to denote the missing argument of a unary operator." msgstr "Verwenden Sie NONE, um das fehlende Argument eines unären Operators anzugeben." -#: gram.y:8844 gram.y:8862 +#: gram.y:8862 gram.y:8880 #, c-format msgid "WITH CHECK OPTION not supported on recursive views" msgstr "WITH CHECK OPTION wird für rekursive Sichten nicht unterstützt" -#: gram.y:9380 +#: gram.y:9398 #, c-format msgid "unrecognized VACUUM option \"%s\"" msgstr "unbekannte VACUUM-Option »%s«" -#: gram.y:9878 parser/parse_expr.c:1501 +#: gram.y:9896 parser/parse_expr.c:1501 #, c-format msgid "number of columns does not match number of values" msgstr "Anzahl der Spalten stimmt nicht mit der Anzahl der Werte überein" -#: gram.y:10394 +#: gram.y:10412 #, c-format msgid "LIMIT #,# syntax is not supported" msgstr "Syntax LIMIT x,y wird nicht unterstützt" -#: gram.y:10395 +#: gram.y:10413 #, c-format msgid "Use separate LIMIT and OFFSET clauses." msgstr "Verwenden Sie die getrennten Klauseln LIMIT und OFFSET." -#: gram.y:10658 gram.y:10683 +#: gram.y:10676 gram.y:10701 #, c-format msgid "VALUES in FROM must have an alias" msgstr "VALUES in FROM muss Aliasnamen erhalten" -#: gram.y:10659 gram.y:10684 +#: gram.y:10677 gram.y:10702 #, c-format msgid "For example, FROM (VALUES ...) [AS] foo." msgstr "Zum Beispiel FROM (VALUES ...) [AS] xyz." -#: gram.y:10664 gram.y:10689 +#: gram.y:10682 gram.y:10707 #, c-format msgid "subquery in FROM must have an alias" msgstr "Unteranfrage in FROM muss Aliasnamen erhalten" -#: gram.y:10665 gram.y:10690 +#: gram.y:10683 gram.y:10708 #, c-format msgid "For example, FROM (SELECT ...) [AS] foo." msgstr "Zum Beispiel FROM (SELECT ...) [AS] xyz." -#: gram.y:11264 +#: gram.y:11282 #, c-format msgid "precision for type float must be at least 1 bit" msgstr "Präzision von Typ float muss mindestens 1 Bit sein" -#: gram.y:11273 +#: gram.y:11291 #, c-format msgid "precision for type float must be less than 54 bits" msgstr "Präzision von Typ float muss weniger als 54 Bits sein" -#: gram.y:11777 +#: gram.y:11795 #, c-format msgid "wrong number of parameters on left side of OVERLAPS expression" msgstr "falsche Anzahl Parameter auf linker Seite von OVERLAPS-Ausdruck" -#: gram.y:11782 +#: gram.y:11800 #, c-format msgid "wrong number of parameters on right side of OVERLAPS expression" msgstr "falsche Anzahl Parameter auf rechter Seite von OVERLAPS-Ausdruck" -#: gram.y:11957 +#: gram.y:11975 #, c-format msgid "UNIQUE predicate is not yet implemented" msgstr "UNIQUE-Prädikat ist noch nicht implementiert" -#: gram.y:12287 +#: gram.y:12309 #, c-format msgid "cannot use multiple ORDER BY clauses with WITHIN GROUP" msgstr "in WITHIN GROUP können nicht mehrere ORDER-BY-Klauseln verwendet werden" -#: gram.y:12292 +#: gram.y:12314 #, c-format msgid "cannot use DISTINCT with WITHIN GROUP" msgstr "DISTINCT kann nicht mit WITHIN GROUP verwendet werden" -#: gram.y:12297 +#: gram.y:12319 #, c-format msgid "cannot use VARIADIC with WITHIN GROUP" msgstr "VARIADIC kann nicht mit WITHIN GROUP verwendet werden" -#: gram.y:12803 +#: gram.y:12825 #, c-format msgid "RANGE PRECEDING is only supported with UNBOUNDED" msgstr "RANGE PRECEDING wird nur mit UNBOUNDED unterstützt" -#: gram.y:12809 +#: gram.y:12831 #, c-format msgid "RANGE FOLLOWING is only supported with UNBOUNDED" msgstr "RANGE FOLLOWING wird nur mit UNBOUNDED unterstützt" -#: gram.y:12836 gram.y:12859 +#: gram.y:12858 gram.y:12881 #, c-format msgid "frame start cannot be UNBOUNDED FOLLOWING" msgstr "Frame-Beginn kann nicht UNBOUNDED FOLLOWING sein" -#: gram.y:12841 +#: gram.y:12863 #, c-format msgid "frame starting from following row cannot end with current row" msgstr "Frame der in der folgenden Zeile beginnt kann nicht in der aktuellen Zeile enden" -#: gram.y:12864 +#: gram.y:12886 #, c-format msgid "frame end cannot be UNBOUNDED PRECEDING" msgstr "Frame-Ende kann nicht UNBOUNDED PRECEDING sein" -#: gram.y:12870 +#: gram.y:12892 #, c-format msgid "frame starting from current row cannot have preceding rows" msgstr "Frame der in der aktuellen Zeile beginnt kann keine vorhergehenden Zeilen haben" -#: gram.y:12877 +#: gram.y:12899 #, c-format msgid "frame starting from following row cannot have preceding rows" msgstr "Frame der in der folgenden Zeile beginnt kann keine vorhergehenden Zeilen haben" -#: gram.y:13542 +#: gram.y:13564 #, c-format msgid "type modifier cannot have parameter name" msgstr "Typmodifikator kann keinen Parameternamen haben" -#: gram.y:13548 +#: gram.y:13570 #, c-format msgid "type modifier cannot have ORDER BY" msgstr "Typmodifikator kann kein ORDER BY haben" -#: gram.y:13612 gram.y:13618 +#: gram.y:13634 gram.y:13640 #, c-format msgid "%s cannot be used as a role name here" msgstr "%s kann hier nicht als Rollenname verwendet werden" -#: gram.y:14240 gram.y:14429 +#: gram.y:14262 gram.y:14451 msgid "improper use of \"*\"" msgstr "unzulässige Verwendung von »*«" -#: gram.y:14392 gram.y:14409 tsearch/spell.c:954 tsearch/spell.c:971 +#: gram.y:14414 gram.y:14431 tsearch/spell.c:954 tsearch/spell.c:971 #: tsearch/spell.c:988 tsearch/spell.c:1005 tsearch/spell.c:1070 #, c-format msgid "syntax error" msgstr "Syntaxfehler" -#: gram.y:14493 +#: gram.y:14515 #, c-format msgid "an ordered-set aggregate with a VARIADIC direct argument must have one VARIADIC aggregated argument of the same data type" msgstr "eine Ordered-Set-Aggregatfunktion mit einem direkten VARIADIC-Argument muss ein aggregiertes VARIADIC-Argument des selben Datentyps haben" -#: gram.y:14530 +#: gram.y:14552 #, c-format msgid "multiple ORDER BY clauses not allowed" msgstr "mehrere ORDER-BY-Klauseln sind nicht erlaubt" -#: gram.y:14541 +#: gram.y:14563 #, c-format msgid "multiple OFFSET clauses not allowed" msgstr "mehrere OFFSET-Klauseln sind nicht erlaubt" -#: gram.y:14550 +#: gram.y:14572 #, c-format msgid "multiple LIMIT clauses not allowed" msgstr "mehrere LIMIT-Klauseln sind nicht erlaubt" -#: gram.y:14559 +#: gram.y:14581 #, c-format msgid "multiple WITH clauses not allowed" msgstr "mehrere WITH-Klauseln sind nicht erlaubt" -#: gram.y:14751 +#: gram.y:14773 #, c-format msgid "OUT and INOUT arguments aren't allowed in TABLE functions" msgstr "OUT- und INOUT-Argumente sind in TABLE-Funktionen nicht erlaubt" -#: gram.y:14852 +#: gram.y:14874 #, c-format msgid "multiple COLLATE clauses not allowed" msgstr "mehrere COLLATE-Klauseln sind nicht erlaubt" #. translator: %s is CHECK, UNIQUE, or similar -#: gram.y:14890 gram.y:14903 +#: gram.y:14912 gram.y:14925 #, c-format msgid "%s constraints cannot be marked DEFERRABLE" msgstr "%s-Constraints können nicht als DEFERRABLE markiert werden" #. translator: %s is CHECK, UNIQUE, or similar -#: gram.y:14916 +#: gram.y:14938 #, c-format msgid "%s constraints cannot be marked NOT VALID" msgstr "%s-Constraints können nicht als NOT VALID markiert werden" #. translator: %s is CHECK, UNIQUE, or similar -#: gram.y:14929 +#: gram.y:14951 #, c-format msgid "%s constraints cannot be marked NO INHERIT" msgstr "%s-Constraints können nicht als NO INHERIT markiert werden" @@ -10658,9 +10513,9 @@ msgstr "%s-Constraints können nicht als NO INHERIT markiert werden" msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %u" msgstr "unbekannter Konfigurationsparameter »%s« in Datei »%s« Zeile %u" -#: guc-file.l:350 utils/misc/guc.c:5898 utils/misc/guc.c:6091 -#: utils/misc/guc.c:6181 utils/misc/guc.c:6271 utils/misc/guc.c:6379 -#: utils/misc/guc.c:6474 +#: guc-file.l:350 utils/misc/guc.c:5896 utils/misc/guc.c:6089 +#: utils/misc/guc.c:6179 utils/misc/guc.c:6269 utils/misc/guc.c:6377 +#: utils/misc/guc.c:6472 #, c-format msgid "parameter \"%s\" cannot be changed without restarting the server" msgstr "Parameter »%s« kann nicht geändert werden, ohne den Server neu zu starten" @@ -10730,502 +10585,502 @@ msgstr "konnte Konfigurationsverzeichnis »%s« nicht öffnen: %m" msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes." msgstr "Kann Zeichenkettenpuffer mit %d Bytes nicht um %d Bytes vergrößern." -#: libpq/auth.c:251 +#: libpq/auth.c:254 #, c-format msgid "authentication failed for user \"%s\": host rejected" msgstr "Authentifizierung für Benutzer »%s« fehlgeschlagen: Host abgelehnt" -#: libpq/auth.c:254 +#: libpq/auth.c:257 #, c-format msgid "\"trust\" authentication failed for user \"%s\"" msgstr "»trust«-Authentifizierung für Benutzer »%s« fehlgeschlagen" -#: libpq/auth.c:257 +#: libpq/auth.c:260 #, c-format msgid "Ident authentication failed for user \"%s\"" msgstr "Ident-Authentifizierung für Benutzer »%s« fehlgeschlagen" -#: libpq/auth.c:260 +#: libpq/auth.c:263 #, c-format msgid "Peer authentication failed for user \"%s\"" msgstr "Peer-Authentifizierung für Benutzer »%s« fehlgeschlagen" -#: libpq/auth.c:264 +#: libpq/auth.c:267 #, c-format msgid "password authentication failed for user \"%s\"" msgstr "Passwort-Authentifizierung für Benutzer »%s« fehlgeschlagen" -#: libpq/auth.c:269 +#: libpq/auth.c:272 #, c-format msgid "GSSAPI authentication failed for user \"%s\"" msgstr "GSSAPI-Authentifizierung für Benutzer »%s« fehlgeschlagen" -#: libpq/auth.c:272 +#: libpq/auth.c:275 #, c-format msgid "SSPI authentication failed for user \"%s\"" msgstr "SSPI-Authentifizierung für Benutzer »%s« fehlgeschlagen" -#: libpq/auth.c:275 +#: libpq/auth.c:278 #, c-format msgid "PAM authentication failed for user \"%s\"" msgstr "PAM-Authentifizierung für Benutzer »%s« fehlgeschlagen" -#: libpq/auth.c:278 +#: libpq/auth.c:281 #, c-format msgid "BSD authentication failed for user \"%s\"" msgstr "BSD-Authentifizierung für Benutzer »%s« fehlgeschlagen" -#: libpq/auth.c:281 +#: libpq/auth.c:284 #, c-format msgid "LDAP authentication failed for user \"%s\"" msgstr "LDAP-Authentifizierung für Benutzer »%s« fehlgeschlagen" -#: libpq/auth.c:284 +#: libpq/auth.c:287 #, c-format msgid "certificate authentication failed for user \"%s\"" msgstr "Zertifikatauthentifizierung für Benutzer »%s« fehlgeschlagen" -#: libpq/auth.c:287 +#: libpq/auth.c:290 #, c-format msgid "RADIUS authentication failed for user \"%s\"" msgstr "RADIUS-Authentifizierung für Benutzer »%s« fehlgeschlagen" -#: libpq/auth.c:290 +#: libpq/auth.c:293 #, c-format msgid "authentication failed for user \"%s\": invalid authentication method" msgstr "Authentifizierung für Benutzer »%s« fehlgeschlagen: ungültige Authentifizierungsmethode" -#: libpq/auth.c:294 +#: libpq/auth.c:297 #, c-format msgid "Connection matched pg_hba.conf line %d: \"%s\"" msgstr "Verbindung stimmte mit pg_hba.conf-Zeile %d überein: »%s«" -#: libpq/auth.c:349 +#: libpq/auth.c:352 #, c-format msgid "connection requires a valid client certificate" msgstr "Verbindung erfordert ein gültiges Client-Zertifikat" -#: libpq/auth.c:391 +#: libpq/auth.c:394 #, c-format msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s" msgstr "pg_hba.conf lehnt Replikationsverbindung ab für Host »%s«, Benutzer »%s«, %s" -#: libpq/auth.c:393 libpq/auth.c:409 libpq/auth.c:467 libpq/auth.c:485 +#: libpq/auth.c:396 libpq/auth.c:412 libpq/auth.c:470 libpq/auth.c:488 msgid "SSL off" msgstr "SSL aus" -#: libpq/auth.c:393 libpq/auth.c:409 libpq/auth.c:467 libpq/auth.c:485 +#: libpq/auth.c:396 libpq/auth.c:412 libpq/auth.c:470 libpq/auth.c:488 msgid "SSL on" msgstr "SSL an" -#: libpq/auth.c:397 +#: libpq/auth.c:400 #, c-format msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\"" msgstr "pg_hba.conf lehnt Replikationsverbindung ab für Host »%s«, Benutzer »%s«" -#: libpq/auth.c:406 +#: libpq/auth.c:409 #, c-format msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\", %s" msgstr "pg_hba.conf lehnt Verbindung ab für Host »%s«, Benutzer »%s«, Datenbank »%s«, %s" -#: libpq/auth.c:413 +#: libpq/auth.c:416 #, c-format msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\"" msgstr "pg_hba.conf lehnt Verbindung ab für Host »%s«, Benutzer »%s«, Datenbank »%s«" -#: libpq/auth.c:442 +#: libpq/auth.c:445 #, c-format msgid "Client IP address resolved to \"%s\", forward lookup matches." msgstr "Auflösung der Client-IP-Adresse ergab »%s«, Vorwärtsauflösung stimmt überein." -#: libpq/auth.c:445 +#: libpq/auth.c:448 #, c-format msgid "Client IP address resolved to \"%s\", forward lookup not checked." msgstr "Auflösung der Client-IP-Adresse ergab »%s«, Vorwärtsauflösung nicht geprüft." -#: libpq/auth.c:448 +#: libpq/auth.c:451 #, c-format msgid "Client IP address resolved to \"%s\", forward lookup does not match." msgstr "Auflösung der Client-IP-Adresse ergab »%s«, Vorwärtsauflösung stimmt nicht überein." -#: libpq/auth.c:451 +#: libpq/auth.c:454 #, c-format msgid "Could not translate client host name \"%s\" to IP address: %s." msgstr "Konnte Client-Hostnamen »%s« nicht in IP-Adresse übersetzen: %s." -#: libpq/auth.c:456 +#: libpq/auth.c:459 #, c-format msgid "Could not resolve client IP address to a host name: %s." msgstr "Konnte Client-IP-Adresse nicht in einen Hostnamen auflösen: %s." -#: libpq/auth.c:465 +#: libpq/auth.c:468 #, c-format msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\", %s" msgstr "kein pg_hba.conf-Eintrag für Replikationsverbindung von Host »%s«, Benutzer »%s«, %s" -#: libpq/auth.c:472 +#: libpq/auth.c:475 #, c-format msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\"" msgstr "kein pg_hba.conf-Eintrag für Replikationsverbindung von Host »%s«, Benutzer »%s«" -#: libpq/auth.c:482 +#: libpq/auth.c:485 #, c-format msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s" msgstr "kein pg_hba.conf-Eintrag für Host »%s«, Benutzer »%s«, Datenbank »%s«, %s" -#: libpq/auth.c:490 +#: libpq/auth.c:493 #, c-format msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\"" msgstr "kein pg_hba.conf-Eintrag für Host »%s«, Benutzer »%s«, Datenbank »%s«" -#: libpq/auth.c:533 libpq/hba.c:1178 +#: libpq/auth.c:536 libpq/hba.c:1178 #, c-format msgid "MD5 authentication is not supported when \"db_user_namespace\" is enabled" msgstr "MD5-Authentifizierung wird nicht unterstützt, wenn »db_user_namespace« angeschaltet ist" -#: libpq/auth.c:667 +#: libpq/auth.c:670 #, c-format msgid "expected password response, got message type %d" msgstr "Passwort-Antwort erwartet, Message-Typ %d empfangen" -#: libpq/auth.c:695 +#: libpq/auth.c:698 #, c-format msgid "invalid password packet size" msgstr "ungültige Größe des Passwortpakets" -#: libpq/auth.c:825 +#: libpq/auth.c:712 +#, c-format +msgid "empty password returned by client" +msgstr "Client gab leeres Passwort zurück" + +#: libpq/auth.c:842 #, c-format msgid "GSSAPI is not supported in protocol version 2" msgstr "GSSAPI wird in Protokollversion 2 nicht unterstützt" -#: libpq/auth.c:885 +#: libpq/auth.c:902 #, c-format msgid "expected GSS response, got message type %d" msgstr "GSS-Antwort erwartet, Message-Typ %d empfangen" -#: libpq/auth.c:946 +#: libpq/auth.c:963 msgid "accepting GSS security context failed" msgstr "Annahme des GSS-Sicherheitskontexts fehlgeschlagen" -#: libpq/auth.c:972 +#: libpq/auth.c:989 msgid "retrieving GSS user name failed" msgstr "Abfrage des GSS-Benutzernamens fehlgeschlagen" -#: libpq/auth.c:1091 +#: libpq/auth.c:1108 #, c-format msgid "SSPI is not supported in protocol version 2" msgstr "SSL wird in Protokollversion 2 nicht unterstützt" -#: libpq/auth.c:1106 +#: libpq/auth.c:1123 msgid "could not acquire SSPI credentials" msgstr "konnte SSPI-Credentials nicht erhalten" -#: libpq/auth.c:1124 +#: libpq/auth.c:1141 #, c-format msgid "expected SSPI response, got message type %d" msgstr "SSPI-Antwort erwartet, Message-Typ %d empfangen" -#: libpq/auth.c:1196 +#: libpq/auth.c:1213 msgid "could not accept SSPI security context" msgstr "konnte SSPI-Sicherheitskontext nicht akzeptieren" -#: libpq/auth.c:1258 +#: libpq/auth.c:1275 msgid "could not get token from SSPI security context" msgstr "konnte kein Token vom SSPI-Sicherheitskontext erhalten" -#: libpq/auth.c:1377 libpq/auth.c:1396 +#: libpq/auth.c:1394 libpq/auth.c:1413 #, c-format msgid "could not translate name" msgstr "konnte Namen nicht umwandeln" -#: libpq/auth.c:1409 +#: libpq/auth.c:1426 #, c-format msgid "realm name too long" msgstr "Realm-Name zu lang" -#: libpq/auth.c:1424 +#: libpq/auth.c:1441 #, c-format msgid "translated account name too long" msgstr "umgewandelter Account-Name zu lang" -#: libpq/auth.c:1610 +#: libpq/auth.c:1627 #, c-format msgid "could not create socket for Ident connection: %m" msgstr "konnte Socket für Ident-Verbindung nicht erzeugen: %m" -#: libpq/auth.c:1625 +#: libpq/auth.c:1642 #, c-format msgid "could not bind to local address \"%s\": %m" msgstr "konnte nicht mit lokaler Adresse »%s« verbinden: %m" -#: libpq/auth.c:1637 +#: libpq/auth.c:1654 #, c-format msgid "could not connect to Ident server at address \"%s\", port %s: %m" msgstr "konnte nicht mit Ident-Server auf Adresse »%s«, Port %s verbinden: %m" -#: libpq/auth.c:1659 +#: libpq/auth.c:1676 #, c-format msgid "could not send query to Ident server at address \"%s\", port %s: %m" msgstr "konnte Anfrage an Ident-Server auf Adresse »%s«, Port %s nicht senden: %m" -#: libpq/auth.c:1676 +#: libpq/auth.c:1693 #, c-format msgid "could not receive response from Ident server at address \"%s\", port %s: %m" msgstr "konnte Antwort von Ident-Server auf Adresse »%s«, Port %s nicht empfangen: %m" -#: libpq/auth.c:1686 +#: libpq/auth.c:1703 #, c-format msgid "invalidly formatted response from Ident server: \"%s\"" msgstr "ungültig formatierte Antwort vom Ident-Server: »%s«" -#: libpq/auth.c:1726 +#: libpq/auth.c:1743 #, c-format msgid "peer authentication is not supported on this platform" msgstr "Peer-Authentifizierung wird auf dieser Plattform nicht unterstützt" -#: libpq/auth.c:1730 +#: libpq/auth.c:1747 #, c-format msgid "could not get peer credentials: %m" msgstr "konnte Credentials von Gegenstelle nicht ermitteln: %m" -#: libpq/auth.c:1739 +#: libpq/auth.c:1756 #, c-format msgid "could not look up local user ID %ld: %s" msgstr "konnte lokale Benutzer-ID %ld nicht nachschlagen: %s" -#: libpq/auth.c:1823 libpq/auth.c:2149 libpq/auth.c:2509 -#, c-format -msgid "empty password returned by client" -msgstr "Client gab leeres Passwort zurück" - -#: libpq/auth.c:1833 +#: libpq/auth.c:1844 #, c-format msgid "error from underlying PAM layer: %s" msgstr "Fehler von der unteren PAM-Ebene: %s" -#: libpq/auth.c:1914 +#: libpq/auth.c:1925 #, c-format msgid "could not create PAM authenticator: %s" msgstr "konnte PAM-Authenticator nicht erzeugen: %s" -#: libpq/auth.c:1925 +#: libpq/auth.c:1936 #, c-format msgid "pam_set_item(PAM_USER) failed: %s" msgstr "pam_set_item(PAM_USER) fehlgeschlagen: %s" -#: libpq/auth.c:1936 +#: libpq/auth.c:1947 #, c-format msgid "pam_set_item(PAM_RHOST) failed: %s" msgstr "pam_set_item(PAM_RHOST) fehlgeschlagen: %s" -#: libpq/auth.c:1947 +#: libpq/auth.c:1958 #, c-format msgid "pam_set_item(PAM_CONV) failed: %s" msgstr "pam_set_item(PAM_CONV) fehlgeschlagen: %s" -#: libpq/auth.c:1958 +#: libpq/auth.c:1969 #, c-format msgid "pam_authenticate failed: %s" msgstr "pam_authenticate fehlgeschlagen: %s" -#: libpq/auth.c:1969 +#: libpq/auth.c:1980 #, c-format msgid "pam_acct_mgmt failed: %s" msgstr "pam_acct_mgmt fehlgeschlagen: %s" -#: libpq/auth.c:1980 +#: libpq/auth.c:1991 #, c-format msgid "could not release PAM authenticator: %s" msgstr "konnte PAM-Authenticator nicht freigeben: %s" -#: libpq/auth.c:2045 +#: libpq/auth.c:2056 #, c-format msgid "could not initialize LDAP: %m" msgstr "konnte LDAP nicht initialisieren: %m" -#: libpq/auth.c:2048 +#: libpq/auth.c:2059 #, c-format msgid "could not initialize LDAP: error code %d" msgstr "konnte LDAP nicht initialisieren: Fehlercode %d" -#: libpq/auth.c:2058 +#: libpq/auth.c:2069 #, c-format msgid "could not set LDAP protocol version: %s" msgstr "konnte LDAP-Protokollversion nicht setzen: %s" -#: libpq/auth.c:2087 +#: libpq/auth.c:2098 #, c-format msgid "could not load wldap32.dll" msgstr "konnte wldap32.dll nicht laden" -#: libpq/auth.c:2095 +#: libpq/auth.c:2106 #, c-format msgid "could not load function _ldap_start_tls_sA in wldap32.dll" msgstr "konnte Funktion _ldap_start_tls_sA in wldap32.dll nicht laden" -#: libpq/auth.c:2096 +#: libpq/auth.c:2107 #, c-format msgid "LDAP over SSL is not supported on this platform." msgstr "LDAP über SSL wird auf dieser Plattform nicht unterstützt." -#: libpq/auth.c:2111 +#: libpq/auth.c:2122 #, c-format msgid "could not start LDAP TLS session: %s" msgstr "konnte LDAP-TLS-Sitzung nicht starten: %s" -#: libpq/auth.c:2133 +#: libpq/auth.c:2144 #, c-format msgid "LDAP server not specified" msgstr "LDAP-Server nicht angegeben" -#: libpq/auth.c:2186 +#: libpq/auth.c:2192 #, c-format msgid "invalid character in user name for LDAP authentication" msgstr "ungültiges Zeichen im Benutzernamen für LDAP-Authentifizierung" -#: libpq/auth.c:2201 +#: libpq/auth.c:2207 #, c-format msgid "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": %s" msgstr "erstes LDAP-Binden für ldapbinddn »%s« auf Server »%s« fehlgeschlagen: %s" -#: libpq/auth.c:2225 +#: libpq/auth.c:2231 #, c-format msgid "could not search LDAP for filter \"%s\" on server \"%s\": %s" msgstr "konnte LDAP nicht mit Filter »%s« auf Server »%s« durchsuchen: %s" -#: libpq/auth.c:2236 +#: libpq/auth.c:2242 #, c-format msgid "LDAP user \"%s\" does not exist" msgstr "LDAP-Benutzer »%s« existiert nicht" -#: libpq/auth.c:2237 +#: libpq/auth.c:2243 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned no entries." msgstr "LDAP-Suche nach Filter »%s« auf Server »%s« gab keine Einträge zurück." -#: libpq/auth.c:2241 +#: libpq/auth.c:2247 #, c-format msgid "LDAP user \"%s\" is not unique" msgstr "LDAP-Benutzer »%s« ist nicht eindeutig" -#: libpq/auth.c:2242 +#: libpq/auth.c:2248 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned %d entry." msgid_plural "LDAP search for filter \"%s\" on server \"%s\" returned %d entries." msgstr[0] "LDAP-Suche nach Filter »%s« auf Server »%s« gab %d Eintrag zurück." msgstr[1] "LDAP-Suche nach Filter »%s« auf Server »%s« gab %d Einträge zurück." -#: libpq/auth.c:2260 +#: libpq/auth.c:2266 #, c-format msgid "could not get dn for the first entry matching \"%s\" on server \"%s\": %s" msgstr "konnte DN fÅ©r den ersten Treffer für »%s« auf Server »%s« nicht lesen: %s" -#: libpq/auth.c:2280 +#: libpq/auth.c:2286 #, c-format msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s" msgstr "Losbinden fehlgeschlagen nach Suche nach Benutzer »%s« auf Server »%s«: %s" -#: libpq/auth.c:2310 +#: libpq/auth.c:2316 #, c-format msgid "LDAP login failed for user \"%s\" on server \"%s\": %s" msgstr "LDAP-Login fehlgeschlagen für Benutzer »%s« auf Server »%s«: %s" -#: libpq/auth.c:2338 +#: libpq/auth.c:2344 #, c-format msgid "certificate authentication failed for user \"%s\": client certificate contains no user name" msgstr "Zertifikatauthentifizierung für Benutzer »%s« fehlgeschlagen: Client-Zertifikat enthält keinen Benutzernamen" -#: libpq/auth.c:2465 +#: libpq/auth.c:2474 #, c-format msgid "RADIUS server not specified" msgstr "RADIUS-Server nicht angegeben" -#: libpq/auth.c:2472 +#: libpq/auth.c:2481 #, c-format msgid "RADIUS secret not specified" msgstr "RADIUS-Geheimnis nicht angegeben" -#: libpq/auth.c:2488 libpq/hba.c:1632 +#: libpq/auth.c:2497 libpq/hba.c:1632 #, c-format msgid "could not translate RADIUS server name \"%s\" to address: %s" msgstr "konnte RADIUS-Servername »%s« nicht in Adresse übersetzen: %s" -#: libpq/auth.c:2516 +#: libpq/auth.c:2518 #, c-format msgid "RADIUS authentication does not support passwords longer than %d characters" msgstr "RADIUS-Authentifizierung unterstützt keine Passwörter länger als %d Zeichen" -#: libpq/auth.c:2528 +#: libpq/auth.c:2530 #, c-format msgid "could not generate random encryption vector" msgstr "konnte zufälligen Verschlüsselungsvektor nicht erzeugen" -#: libpq/auth.c:2566 +#: libpq/auth.c:2568 #, c-format msgid "could not perform MD5 encryption of password" msgstr "konnte MD5-Verschlüsselung des Passworts nicht durchführen" -#: libpq/auth.c:2591 +#: libpq/auth.c:2593 #, c-format msgid "could not create RADIUS socket: %m" msgstr "konnte RADIUS-Socket nicht erstellen: %m" -#: libpq/auth.c:2612 +#: libpq/auth.c:2614 #, c-format msgid "could not bind local RADIUS socket: %m" msgstr "konnte lokales RADIUS-Socket nicht binden: %m" -#: libpq/auth.c:2622 +#: libpq/auth.c:2624 #, c-format msgid "could not send RADIUS packet: %m" msgstr "konnte RADIUS-Paket nicht senden: %m" -#: libpq/auth.c:2655 libpq/auth.c:2680 +#: libpq/auth.c:2657 libpq/auth.c:2682 #, c-format msgid "timeout waiting for RADIUS response" msgstr "Zeitüberschreitung beim Warten auf RADIUS-Antwort" -#: libpq/auth.c:2673 +#: libpq/auth.c:2675 #, c-format msgid "could not check status on RADIUS socket: %m" msgstr "konnte Status des RADIUS-Sockets nicht prüfen: %m" -#: libpq/auth.c:2702 +#: libpq/auth.c:2704 #, c-format msgid "could not read RADIUS response: %m" msgstr "konnte RADIUS-Antwort nicht lesen: %m" -#: libpq/auth.c:2714 libpq/auth.c:2718 +#: libpq/auth.c:2716 libpq/auth.c:2720 #, c-format msgid "RADIUS response was sent from incorrect port: %d" msgstr "RADIUS-Antwort wurde von falschem Port gesendet: %d" -#: libpq/auth.c:2727 +#: libpq/auth.c:2729 #, c-format msgid "RADIUS response too short: %d" msgstr "RADIUS-Antwort zu kurz: %d" -#: libpq/auth.c:2734 +#: libpq/auth.c:2736 #, c-format msgid "RADIUS response has corrupt length: %d (actual length %d)" msgstr "RADIUS-Antwort hat verfälschte Länge: %d (tatsächliche Länge %d)" -#: libpq/auth.c:2742 +#: libpq/auth.c:2744 #, c-format msgid "RADIUS response is to a different request: %d (should be %d)" msgstr "RADIUS-Antwort unterscheidet sich von Anfrage: %d (sollte %d sein)" -#: libpq/auth.c:2767 +#: libpq/auth.c:2769 #, c-format msgid "could not perform MD5 encryption of received packet" msgstr "konnte MD5-Verschlüsselung des empfangenen Pakets nicht durchführen" -#: libpq/auth.c:2776 +#: libpq/auth.c:2778 #, c-format msgid "RADIUS response has incorrect MD5 signature" msgstr "RADIUS-Antwort hat falsche MD5-Signatur" -#: libpq/auth.c:2793 +#: libpq/auth.c:2795 #, c-format msgid "RADIUS response has invalid code (%d) for user \"%s\"" msgstr "RADIUS-Antwort hat ungültigen Code (%d) für Benutzer »%s«" @@ -11238,7 +11093,7 @@ msgid "invalid large-object descriptor: %d" msgstr "ungültiger Large-Object-Deskriptor: %d" #: libpq/be-fsstubs.c:178 libpq/be-fsstubs.c:216 libpq/be-fsstubs.c:600 -#: libpq/be-fsstubs.c:788 +#: libpq/be-fsstubs.c:788 libpq/be-fsstubs.c:908 #, c-format msgid "permission denied for large object %u" msgstr "keine Berechtigung für Large Object %u" @@ -11353,87 +11208,87 @@ msgstr "konnte private Schlüsseldatei »%s« nicht laden: %s" msgid "check of private key failed: %s" msgstr "Überprüfung des privaten Schlüssels fehlgeschlagen: %s" -#: libpq/be-secure-openssl.c:292 +#: libpq/be-secure-openssl.c:300 #, c-format msgid "could not load root certificate file \"%s\": %s" msgstr "konnte Root-Zertifikat-Datei »%s« nicht laden: %s" -#: libpq/be-secure-openssl.c:316 +#: libpq/be-secure-openssl.c:324 #, c-format msgid "SSL certificate revocation list file \"%s\" ignored" msgstr "SSL-Certificate-Revocation-List-Datei »%s« ignoriert" -#: libpq/be-secure-openssl.c:318 +#: libpq/be-secure-openssl.c:326 #, c-format msgid "SSL library does not support certificate revocation lists." msgstr "SSL-Bibliothek unterstützt keine Certificate-Revocation-Lists." -#: libpq/be-secure-openssl.c:323 +#: libpq/be-secure-openssl.c:331 #, c-format msgid "could not load SSL certificate revocation list file \"%s\": %s" msgstr "konnte SSL-Certificate-Revocation-List-Datei »%s« nicht laden: %s" -#: libpq/be-secure-openssl.c:370 +#: libpq/be-secure-openssl.c:378 #, c-format msgid "could not initialize SSL connection: %s" msgstr "konnte SSL-Verbindung nicht initialisieren: %s" -#: libpq/be-secure-openssl.c:378 +#: libpq/be-secure-openssl.c:386 #, c-format msgid "could not set SSL socket: %s" msgstr "konnte SSL-Socket nicht setzen: %s" -#: libpq/be-secure-openssl.c:432 +#: libpq/be-secure-openssl.c:440 #, c-format msgid "could not accept SSL connection: %m" msgstr "konnte SSL-Verbindung nicht annehmen: %m" -#: libpq/be-secure-openssl.c:436 libpq/be-secure-openssl.c:447 +#: libpq/be-secure-openssl.c:444 libpq/be-secure-openssl.c:455 #, c-format msgid "could not accept SSL connection: EOF detected" msgstr "konnte SSL-Verbindung nicht annehmen: EOF entdeckt" -#: libpq/be-secure-openssl.c:441 +#: libpq/be-secure-openssl.c:449 #, c-format msgid "could not accept SSL connection: %s" msgstr "konnte SSL-Verbindung nicht annehmen: %s" -#: libpq/be-secure-openssl.c:452 libpq/be-secure-openssl.c:593 -#: libpq/be-secure-openssl.c:653 +#: libpq/be-secure-openssl.c:460 libpq/be-secure-openssl.c:603 +#: libpq/be-secure-openssl.c:669 #, c-format msgid "unrecognized SSL error code: %d" msgstr "unbekannter SSL-Fehlercode: %d" -#: libpq/be-secure-openssl.c:496 +#: libpq/be-secure-openssl.c:504 #, c-format msgid "SSL certificate's common name contains embedded null" msgstr "Common-Name im SSL-Zertifikat enthält Null-Byte" -#: libpq/be-secure-openssl.c:507 +#: libpq/be-secure-openssl.c:515 #, c-format msgid "SSL connection from \"%s\"" msgstr "SSL-Verbindung von »%s«" -#: libpq/be-secure-openssl.c:584 libpq/be-secure-openssl.c:644 +#: libpq/be-secure-openssl.c:592 libpq/be-secure-openssl.c:654 #, c-format msgid "SSL error: %s" msgstr "SSL-Fehler: %s" -#: libpq/be-secure-openssl.c:1055 +#: libpq/be-secure-openssl.c:1071 #, c-format msgid "ECDH: unrecognized curve name: %s" msgstr "ECDH: unbekannter Kurvenname: %s" -#: libpq/be-secure-openssl.c:1060 +#: libpq/be-secure-openssl.c:1076 #, c-format msgid "ECDH: could not create key" msgstr "ECDH: konnte Schlüssel nicht erzeugen" -#: libpq/be-secure-openssl.c:1084 +#: libpq/be-secure-openssl.c:1100 msgid "no SSL error reported" msgstr "kein SSL-Fehler berichtet" -#: libpq/be-secure-openssl.c:1088 +#: libpq/be-secure-openssl.c:1104 #, c-format msgid "SSL error code %lu" msgstr "SSL-Fehlercode %lu" @@ -11453,17 +11308,17 @@ msgstr "Rolle »%s« existiert nicht." msgid "User \"%s\" has no password assigned." msgstr "Benutzer »%s« hat kein Passwort zugewiesen." -#: libpq/crypt.c:79 +#: libpq/crypt.c:88 libpq/crypt.c:103 #, c-format msgid "User \"%s\" has an empty password." msgstr "Benutzer »%s« hat ein leeres Passwort." -#: libpq/crypt.c:159 +#: libpq/crypt.c:184 #, c-format msgid "User \"%s\" has an expired password." msgstr "Benutzer »%s« hat ein abgelaufenes Passwort." -#: libpq/crypt.c:167 +#: libpq/crypt.c:192 #, c-format msgid "Password does not match for user \"%s\"." msgstr "Passwort stimmt nicht überein für Benutzer »%s«." @@ -11775,137 +11630,137 @@ msgstr "kein passender Eintrag in Usermap »%s« für Benutzer »%s«, authentif msgid "could not open usermap file \"%s\": %m" msgstr "konnte Usermap-Datei »%s« nicht öffnen: %m" -#: libpq/pqcomm.c:202 +#: libpq/pqcomm.c:221 #, c-format msgid "could not set socket to nonblocking mode: %m" msgstr "konnte Socket nicht auf nicht-blockierenden Modus umstellen: %m" -#: libpq/pqcomm.c:354 +#: libpq/pqcomm.c:373 #, c-format msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)" msgstr "Unix-Domain-Socket-Pfad »%s« ist zu lang (maximal %d Bytes)" -#: libpq/pqcomm.c:375 +#: libpq/pqcomm.c:394 #, c-format msgid "could not translate host name \"%s\", service \"%s\" to address: %s" msgstr "konnte Hostname »%s«, Dienst »%s« nicht in Adresse übersetzen: %s" -#: libpq/pqcomm.c:379 +#: libpq/pqcomm.c:398 #, c-format msgid "could not translate service \"%s\" to address: %s" msgstr "konnte Dienst »%s« nicht in Adresse übersetzen: %s" -#: libpq/pqcomm.c:406 +#: libpq/pqcomm.c:425 #, c-format msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded" msgstr "konnte nicht an alle verlangten Adressen binden: MAXLISTEN (%d) überschritten" -#: libpq/pqcomm.c:415 +#: libpq/pqcomm.c:434 msgid "IPv4" msgstr "IPv4" -#: libpq/pqcomm.c:419 +#: libpq/pqcomm.c:438 msgid "IPv6" msgstr "IPv6" -#: libpq/pqcomm.c:424 +#: libpq/pqcomm.c:443 msgid "Unix" msgstr "Unix" -#: libpq/pqcomm.c:429 +#: libpq/pqcomm.c:448 #, c-format msgid "unrecognized address family %d" msgstr "unbekannte Adressfamilie %d" #. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:440 +#: libpq/pqcomm.c:459 #, c-format msgid "could not create %s socket: %m" msgstr "konnte %s-Socket nicht erstellen: %m" -#: libpq/pqcomm.c:465 +#: libpq/pqcomm.c:484 #, c-format msgid "setsockopt(SO_REUSEADDR) failed: %m" msgstr "setsockopt(SO_REUSEADDR) fehlgeschlagen: %m" -#: libpq/pqcomm.c:480 +#: libpq/pqcomm.c:499 #, c-format msgid "setsockopt(IPV6_V6ONLY) failed: %m" msgstr "setsockopt(IPV6_V6ONLY) fehlgeschlagen: %m" #. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:499 +#: libpq/pqcomm.c:518 #, c-format msgid "could not bind %s socket: %m" msgstr "konnte %s-Socket nicht binden: %m" -#: libpq/pqcomm.c:502 +#: libpq/pqcomm.c:521 #, c-format msgid "Is another postmaster already running on port %d? If not, remove socket file \"%s\" and retry." msgstr "Läuft bereits ein anderer Postmaster auf Port %d? Wenn nicht, entfernen Sie die Socketdatei »%s« und versuchen Sie erneut." -#: libpq/pqcomm.c:505 +#: libpq/pqcomm.c:524 #, c-format msgid "Is another postmaster already running on port %d? If not, wait a few seconds and retry." msgstr "Läuft bereits ein anderer Postmaster auf Port %d? Wenn nicht, warten Sie einige Sekunden und versuchen Sie erneut." #. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:538 +#: libpq/pqcomm.c:557 #, c-format msgid "could not listen on %s socket: %m" msgstr "konnte nicht auf %s-Socket hören: %m" -#: libpq/pqcomm.c:623 +#: libpq/pqcomm.c:642 #, c-format msgid "group \"%s\" does not exist" msgstr "Gruppe »%s« existiert nicht" -#: libpq/pqcomm.c:633 +#: libpq/pqcomm.c:652 #, c-format msgid "could not set group of file \"%s\": %m" msgstr "konnte Gruppe von Datei »%s« nicht setzen: %m" -#: libpq/pqcomm.c:644 +#: libpq/pqcomm.c:663 #, c-format msgid "could not set permissions of file \"%s\": %m" msgstr "konnte Zugriffsrechte von Datei »%s« nicht setzen: %m" -#: libpq/pqcomm.c:674 +#: libpq/pqcomm.c:693 #, c-format msgid "could not accept new connection: %m" msgstr "konnte neue Verbindung nicht akzeptieren: %m" -#: libpq/pqcomm.c:885 +#: libpq/pqcomm.c:904 #, c-format msgid "there is no client connection" msgstr "es besteht keine Client-Verbindung" -#: libpq/pqcomm.c:936 libpq/pqcomm.c:1032 +#: libpq/pqcomm.c:955 libpq/pqcomm.c:1051 #, c-format msgid "could not receive data from client: %m" msgstr "konnte Daten vom Client nicht empfangen: %m" -#: libpq/pqcomm.c:1177 tcop/postgres.c:3917 +#: libpq/pqcomm.c:1196 tcop/postgres.c:3915 #, c-format msgid "terminating connection because protocol synchronization was lost" msgstr "Verbindung wird abgebrochen, weil Protokollsynchronisierung verloren wurde" -#: libpq/pqcomm.c:1243 +#: libpq/pqcomm.c:1262 #, c-format msgid "unexpected EOF within message length word" msgstr "unerwartetes EOF im Message-Längenwort" -#: libpq/pqcomm.c:1254 +#: libpq/pqcomm.c:1273 #, c-format msgid "invalid message length" msgstr "ungültige Message-Länge" -#: libpq/pqcomm.c:1276 libpq/pqcomm.c:1289 +#: libpq/pqcomm.c:1295 libpq/pqcomm.c:1308 #, c-format msgid "incomplete message from client" msgstr "unvollständige Message vom Client" -#: libpq/pqcomm.c:1422 +#: libpq/pqcomm.c:1441 #, c-format msgid "could not send data to client: %m" msgstr "konnte Daten nicht an den Client senden: %m" @@ -12265,44 +12120,44 @@ msgid "%s cannot be applied to the nullable side of an outer join" msgstr "%s kann nicht auf die nullbare Seite eines äußeren Verbundes angewendet werden" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: optimizer/plan/planner.c:1497 parser/analyze.c:1552 parser/analyze.c:1750 -#: parser/analyze.c:2531 +#: optimizer/plan/planner.c:1480 parser/analyze.c:1549 parser/analyze.c:1747 +#: parser/analyze.c:2528 #, c-format msgid "%s is not allowed with UNION/INTERSECT/EXCEPT" msgstr "%s ist nicht in UNION/INTERSECT/EXCEPT erlaubt" -#: optimizer/plan/planner.c:3826 +#: optimizer/plan/planner.c:3809 #, c-format msgid "could not implement GROUP BY" msgstr "konnte GROUP BY nicht implementieren" -#: optimizer/plan/planner.c:3827 optimizer/plan/planner.c:4220 -#: optimizer/prep/prepunion.c:929 +#: optimizer/plan/planner.c:3810 optimizer/plan/planner.c:4203 +#: optimizer/prep/prepunion.c:939 #, c-format msgid "Some of the datatypes only support hashing, while others only support sorting." msgstr "Einige Datentypen unterstützen nur Hashing, während andere nur Sortieren unterstützen." -#: optimizer/plan/planner.c:4219 +#: optimizer/plan/planner.c:4202 #, c-format msgid "could not implement DISTINCT" msgstr "konnte DISTINCT nicht implementieren" -#: optimizer/plan/planner.c:4849 +#: optimizer/plan/planner.c:4832 #, c-format msgid "could not implement window PARTITION BY" msgstr "konnte PARTITION BY für Fenster nicht implementieren" -#: optimizer/plan/planner.c:4850 +#: optimizer/plan/planner.c:4833 #, c-format msgid "Window partitioning columns must be of sortable datatypes." msgstr "Fensterpartitionierungsspalten müssen sortierbare Datentypen haben." -#: optimizer/plan/planner.c:4854 +#: optimizer/plan/planner.c:4837 #, c-format msgid "could not implement window ORDER BY" msgstr "konnte ORDER BY für Fenster nicht implementieren" -#: optimizer/plan/planner.c:4855 +#: optimizer/plan/planner.c:4838 #, c-format msgid "Window ordering columns must be of sortable datatypes." msgstr "Fenstersortierspalten müssen sortierbare Datentypen haben." @@ -12312,53 +12167,53 @@ msgstr "Fenstersortierspalten müssen sortierbare Datentypen haben." msgid "too many range table entries" msgstr "zu viele Range-Table-Einträge" -#: optimizer/prep/prepunion.c:484 +#: optimizer/prep/prepunion.c:494 #, c-format msgid "could not implement recursive UNION" msgstr "konnte rekursive UNION nicht implementieren" -#: optimizer/prep/prepunion.c:485 +#: optimizer/prep/prepunion.c:495 #, c-format msgid "All column datatypes must be hashable." msgstr "Alle Spaltendatentypen müssen hashbar sein." #. translator: %s is UNION, INTERSECT, or EXCEPT -#: optimizer/prep/prepunion.c:928 +#: optimizer/prep/prepunion.c:938 #, c-format msgid "could not implement %s" msgstr "konnte %s nicht implementieren" -#: optimizer/util/clauses.c:4624 +#: optimizer/util/clauses.c:4634 #, c-format msgid "SQL function \"%s\" during inlining" msgstr "SQL-Funktion »%s« beim Inlining" -#: optimizer/util/plancat.c:113 +#: optimizer/util/plancat.c:114 #, c-format msgid "cannot access temporary or unlogged relations during recovery" msgstr "während der Wiederherstellung kann nicht auf temporäre oder ungeloggte Tabellen zugegriffen werden" -#: optimizer/util/plancat.c:598 +#: optimizer/util/plancat.c:611 #, c-format msgid "whole row unique index inference specifications are not supported" msgstr "Inferenzangaben mit Unique-Index über die gesamte Zeile werden nicht unterstützt" -#: optimizer/util/plancat.c:615 +#: optimizer/util/plancat.c:628 #, c-format msgid "constraint in ON CONFLICT clause has no associated index" msgstr "Constraint in der ON-CONFLICT-Klausel hat keinen zugehörigen Index" -#: optimizer/util/plancat.c:666 +#: optimizer/util/plancat.c:679 #, c-format msgid "ON CONFLICT DO UPDATE not supported with exclusion constraints" msgstr "ON CONFLICT DO UDPATE nicht unterstützt mit Exclusion-Constraints" -#: optimizer/util/plancat.c:771 +#: optimizer/util/plancat.c:784 #, c-format msgid "there is no unique or exclusion constraint matching the ON CONFLICT specification" msgstr "es gibt keinen Unique-Constraint oder Exclusion-Constraint, der auf die ON-CONFLICT-Angabe passt" -#: parser/analyze.c:663 parser/analyze.c:1324 +#: parser/analyze.c:663 parser/analyze.c:1321 #, c-format msgid "VALUES lists must all be the same length" msgstr "VALUES-Listen müssen alle die gleiche Länge haben" @@ -12378,177 +12233,177 @@ msgstr "INSERT hat mehr Zielspalten als Ausdrücke" msgid "The insertion source is a row expression containing the same number of columns expected by the INSERT. Did you accidentally use extra parentheses?" msgstr "Der einzufügende Wert ist ein Zeilenausdruck mit der gleichen Anzahl Spalten wie von INSERT erwartet. Haben Sie versehentlich zu viele Klammern gesetzt?" -#: parser/analyze.c:1145 parser/analyze.c:1525 +#: parser/analyze.c:1142 parser/analyze.c:1522 #, c-format msgid "SELECT ... INTO is not allowed here" msgstr "SELECT ... INTO ist hier nicht erlaubt" -#: parser/analyze.c:1338 +#: parser/analyze.c:1335 #, c-format msgid "DEFAULT can only appear in a VALUES list within INSERT" msgstr "DEFAULT kann nur in VALUES-Liste innerhalb von INSERT auftreten" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:1457 parser/analyze.c:2701 +#: parser/analyze.c:1454 parser/analyze.c:2698 #, c-format msgid "%s cannot be applied to VALUES" msgstr "%s kann nicht auf VALUES angewendet werden" -#: parser/analyze.c:1678 +#: parser/analyze.c:1675 #, c-format msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" msgstr "ungültige ORDER-BY-Klausel mit UNION/INTERSECT/EXCEPT" -#: parser/analyze.c:1679 +#: parser/analyze.c:1676 #, c-format msgid "Only result column names can be used, not expressions or functions." msgstr "Es können nur Ergebnisspaltennamen verwendet werden, keine Ausdrücke oder Funktionen." -#: parser/analyze.c:1680 +#: parser/analyze.c:1677 #, c-format msgid "Add the expression/function to every SELECT, or move the UNION into a FROM clause." msgstr "Fügen Sie den Ausdrück/die Funktion jedem SELECT hinzu oder verlegen Sie die UNION in eine FROM-Klausel." -#: parser/analyze.c:1740 +#: parser/analyze.c:1737 #, c-format msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT" msgstr "INTO ist nur im ersten SELECT von UNION/INTERSECT/EXCEPT erlaubt" -#: parser/analyze.c:1804 +#: parser/analyze.c:1801 #, c-format msgid "UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of same query level" msgstr "Teilanweisung von UNION/INTERSECT/EXCEPT kann nicht auf andere Relationen auf der selben Anfrageebene verweisen" -#: parser/analyze.c:1893 +#: parser/analyze.c:1890 #, c-format msgid "each %s query must have the same number of columns" msgstr "jede %s-Anfrage muss die gleiche Anzahl Spalten haben" -#: parser/analyze.c:2286 +#: parser/analyze.c:2283 #, c-format msgid "RETURNING must have at least one column" msgstr "RETURNING muss mindestens eine Spalte haben" -#: parser/analyze.c:2323 +#: parser/analyze.c:2320 #, c-format msgid "cannot specify both SCROLL and NO SCROLL" msgstr "SCROLL und NO SCROLL können nicht beide angegeben werden" -#: parser/analyze.c:2341 +#: parser/analyze.c:2338 #, c-format msgid "DECLARE CURSOR must not contain data-modifying statements in WITH" msgstr "DECLARE CURSOR darf keine datenmodifizierenden Anweisungen in WITH enthalten" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2349 +#: parser/analyze.c:2346 #, c-format msgid "DECLARE CURSOR WITH HOLD ... %s is not supported" msgstr "DECLARE CURSOR WITH HOLD ... %s wird nicht unterstützt" -#: parser/analyze.c:2352 +#: parser/analyze.c:2349 #, c-format msgid "Holdable cursors must be READ ONLY." msgstr "Haltbare Cursor müssen READ ONLY sein." #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2360 +#: parser/analyze.c:2357 #, c-format msgid "DECLARE SCROLL CURSOR ... %s is not supported" msgstr "DECLARE SCROLL CURSOR ... %s wird nicht unterstützt" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2371 +#: parser/analyze.c:2368 #, c-format msgid "DECLARE INSENSITIVE CURSOR ... %s is not supported" msgstr "DECLARE INSENSITIVE CURSOR ... %s wird nicht unterstützt" -#: parser/analyze.c:2374 +#: parser/analyze.c:2371 #, c-format msgid "Insensitive cursors must be READ ONLY." msgstr "Insensitive Cursor müssen READ ONLY sein." -#: parser/analyze.c:2440 +#: parser/analyze.c:2437 #, c-format msgid "materialized views must not use data-modifying statements in WITH" msgstr "materialisierte Sichten dürfen keine datenmodifizierenden Anweisungen in WITH verwenden" -#: parser/analyze.c:2450 +#: parser/analyze.c:2447 #, c-format msgid "materialized views must not use temporary tables or views" msgstr "materialisierte Sichten dürfen keine temporären Tabellen oder Sichten verwenden" -#: parser/analyze.c:2460 +#: parser/analyze.c:2457 #, c-format msgid "materialized views may not be defined using bound parameters" msgstr "materialisierte Sichten können nicht unter Verwendung von gebundenen Parametern definiert werden" -#: parser/analyze.c:2472 +#: parser/analyze.c:2469 #, c-format msgid "materialized views cannot be UNLOGGED" msgstr "materialisierte Sichten können nicht UNLOGGED sein" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2538 +#: parser/analyze.c:2535 #, c-format msgid "%s is not allowed with DISTINCT clause" msgstr "%s ist nicht mit DISTINCT-Klausel erlaubt" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2545 +#: parser/analyze.c:2542 #, c-format msgid "%s is not allowed with GROUP BY clause" msgstr "%s ist nicht mit GROUP-BY-Klausel erlaubt" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2552 +#: parser/analyze.c:2549 #, c-format msgid "%s is not allowed with HAVING clause" msgstr "%s ist nicht mit HAVING-Klausel erlaubt" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2559 +#: parser/analyze.c:2556 #, c-format msgid "%s is not allowed with aggregate functions" msgstr "%s ist nicht mit Aggregatfunktionen erlaubt" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2566 +#: parser/analyze.c:2563 #, c-format msgid "%s is not allowed with window functions" msgstr "%s ist nicht mit Fensterfunktionen erlaubt" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2573 +#: parser/analyze.c:2570 #, c-format msgid "%s is not allowed with set-returning functions in the target list" msgstr "%s ist nicht mit Funktionen mit Ergebnismenge in der Targetliste erlaubt" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2652 +#: parser/analyze.c:2649 #, c-format msgid "%s must specify unqualified relation names" msgstr "%s muss unqualifizierte Relationsnamen angeben" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2683 +#: parser/analyze.c:2680 #, c-format msgid "%s cannot be applied to a join" msgstr "%s kann nicht auf einen Verbund angewendet werden" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2692 +#: parser/analyze.c:2689 #, c-format msgid "%s cannot be applied to a function" msgstr "%s kann nicht auf eine Funktion angewendet werden" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2710 +#: parser/analyze.c:2707 #, c-format msgid "%s cannot be applied to a WITH query" msgstr "%s kann nicht auf eine WITH-Anfrage angewendet werden" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2727 +#: parser/analyze.c:2724 #, c-format msgid "relation \"%s\" in %s clause not found in FROM clause" msgstr "Relation »%s« in %s nicht in der FROM-Klausel gefunden" @@ -12987,7 +12842,7 @@ msgstr "Sortieroperatoren müssen die Mitglieder »<« oder »>« einer »btree #: parser/parse_coerce.c:971 parser/parse_coerce.c:1001 #: parser/parse_coerce.c:1019 parser/parse_coerce.c:1034 -#: parser/parse_expr.c:2053 parser/parse_expr.c:2577 parser/parse_target.c:874 +#: parser/parse_expr.c:2053 parser/parse_expr.c:2577 parser/parse_target.c:885 #, c-format msgid "cannot cast type %s to %s" msgstr "kann Typ %s nicht in Typ %s umwandeln" @@ -13211,8 +13066,8 @@ msgstr "FOR UPDATE/SHARE in einer rekursiven Anfrage ist nicht implementiert" msgid "recursive reference to query \"%s\" must not appear more than once" msgstr "rekursiver Verweis auf Anfrage »%s« darf nicht mehrmals erscheinen" -#: parser/parse_expr.c:390 parser/parse_relation.c:3083 -#: parser/parse_relation.c:3103 +#: parser/parse_expr.c:390 parser/parse_relation.c:3176 +#: parser/parse_relation.c:3196 #, c-format msgid "column %s.%s does not exist" msgstr "Spalte %s.%s existiert nicht" @@ -13232,13 +13087,13 @@ msgstr "konnte Spalte »%s« im Record-Datentyp nicht identifizieren" msgid "column notation .%s applied to type %s, which is not a composite type" msgstr "Spaltenschreibweise .%s mit Typ %s verwendet, der kein zusammengesetzter Typ ist" -#: parser/parse_expr.c:444 parser/parse_target.c:660 +#: parser/parse_expr.c:444 parser/parse_target.c:671 #, c-format msgid "row expansion via \"*\" is not supported here" msgstr "Zeilenexpansion mit »*« wird hier nicht unterstützt" -#: parser/parse_expr.c:770 parser/parse_relation.c:667 -#: parser/parse_relation.c:767 parser/parse_target.c:1109 +#: parser/parse_expr.c:770 parser/parse_relation.c:668 +#: parser/parse_relation.c:768 parser/parse_target.c:1120 #, c-format msgid "column reference \"%s\" is ambiguous" msgstr "Spaltenverweis »%s« ist nicht eindeutig" @@ -13552,8 +13407,8 @@ msgstr "Arrayindex muss Typ integer haben" msgid "array assignment requires type %s but expression is of type %s" msgstr "Arrayzuweisung erfordert Typ %s, aber Ausdruck hat Typ %s" -#: parser/parse_oper.c:125 parser/parse_oper.c:722 utils/adt/regproc.c:583 -#: utils/adt/regproc.c:603 utils/adt/regproc.c:787 +#: parser/parse_oper.c:125 parser/parse_oper.c:722 utils/adt/regproc.c:584 +#: utils/adt/regproc.c:604 utils/adt/regproc.c:788 #, c-format msgid "operator does not exist: %s" msgstr "Operator existiert nicht: %s" @@ -13563,9 +13418,9 @@ msgstr "Operator existiert nicht: %s" msgid "Use an explicit ordering operator or modify the query." msgstr "Verwenden Sie einen ausdrücklichen Sortieroperator oder ändern Sie die Anfrage." -#: parser/parse_oper.c:226 utils/adt/array_userfuncs.c:782 -#: utils/adt/array_userfuncs.c:920 utils/adt/arrayfuncs.c:3639 -#: utils/adt/arrayfuncs.c:4077 utils/adt/arrayfuncs.c:6051 +#: parser/parse_oper.c:226 utils/adt/array_userfuncs.c:794 +#: utils/adt/array_userfuncs.c:933 utils/adt/arrayfuncs.c:3639 +#: utils/adt/arrayfuncs.c:4077 utils/adt/arrayfuncs.c:6039 #: utils/adt/rowtypes.c:1167 #, c-format msgid "could not identify an equality operator for type %s" @@ -13616,158 +13471,158 @@ msgstr "op ANY/ALL (array) erfordert, dass Operator keine Ergebnismenge zurückg msgid "inconsistent types deduced for parameter $%d" msgstr "inkonsistente Typen für Parameter $%d ermittelt" -#: parser/parse_relation.c:174 +#: parser/parse_relation.c:175 #, c-format msgid "table reference \"%s\" is ambiguous" msgstr "Tabellenbezug »%s« ist nicht eindeutig" -#: parser/parse_relation.c:218 +#: parser/parse_relation.c:219 #, c-format msgid "table reference %u is ambiguous" msgstr "Tabellenbezug %u ist nicht eindeutig" -#: parser/parse_relation.c:397 +#: parser/parse_relation.c:398 #, c-format msgid "table name \"%s\" specified more than once" msgstr "Tabellenname »%s« mehrmals angegeben" -#: parser/parse_relation.c:424 parser/parse_relation.c:3023 +#: parser/parse_relation.c:425 parser/parse_relation.c:3116 #, c-format msgid "invalid reference to FROM-clause entry for table \"%s\"" msgstr "ungültiger Verweis auf FROM-Klausel-Eintrag für Tabelle »%s«" -#: parser/parse_relation.c:427 parser/parse_relation.c:3028 +#: parser/parse_relation.c:428 parser/parse_relation.c:3121 #, c-format msgid "There is an entry for table \"%s\", but it cannot be referenced from this part of the query." msgstr "Es gibt einen Eintrag für Tabelle »%s«, aber auf ihn kann aus diesem Teil der Anfrage nicht verwiesen werden." -#: parser/parse_relation.c:429 +#: parser/parse_relation.c:430 #, c-format msgid "The combining JOIN type must be INNER or LEFT for a LATERAL reference." msgstr "Der JOIN-Typ für LATERAL muss INNER oder LEFT sein." -#: parser/parse_relation.c:705 +#: parser/parse_relation.c:706 #, c-format msgid "system column \"%s\" reference in check constraint is invalid" msgstr "Verweis auf Systemspalte »%s« im Check-Constraint ist ungültig" -#: parser/parse_relation.c:1065 parser/parse_relation.c:1345 -#: parser/parse_relation.c:1847 +#: parser/parse_relation.c:1066 parser/parse_relation.c:1346 +#: parser/parse_relation.c:1848 #, c-format msgid "table \"%s\" has %d columns available but %d columns specified" msgstr "Tabelle »%s« hat %d Spalten, aber %d Spalten wurden angegeben" -#: parser/parse_relation.c:1152 +#: parser/parse_relation.c:1153 #, c-format msgid "There is a WITH item named \"%s\", but it cannot be referenced from this part of the query." msgstr "Es gibt ein WITH-Element namens »%s«, aber darauf kann aus diesem Teil der Anfrage kein Bezug genommen werden." -#: parser/parse_relation.c:1154 +#: parser/parse_relation.c:1155 #, c-format msgid "Use WITH RECURSIVE, or re-order the WITH items to remove forward references." msgstr "Verwenden Sie WITH RECURSIVE oder sortieren Sie die WITH-Ausdrücke um, um Vorwärtsreferenzen zu entfernen." -#: parser/parse_relation.c:1465 +#: parser/parse_relation.c:1466 #, c-format msgid "a column definition list is only allowed for functions returning \"record\"" msgstr "eine Spaltendefinitionsliste ist nur erlaubt bei Funktionen, die »record« zurückgeben" -#: parser/parse_relation.c:1474 +#: parser/parse_relation.c:1475 #, c-format msgid "a column definition list is required for functions returning \"record\"" msgstr "eine Spaltendefinitionsliste ist erforderlich bei Funktionen, die »record« zurückgeben" -#: parser/parse_relation.c:1553 +#: parser/parse_relation.c:1554 #, c-format msgid "function \"%s\" in FROM has unsupported return type %s" msgstr "Funktion »%s« in FROM hat nicht unterstützten Rückgabetyp %s" -#: parser/parse_relation.c:1675 +#: parser/parse_relation.c:1676 #, c-format msgid "VALUES lists \"%s\" have %d columns available but %d columns specified" msgstr "VALUES-Liste »%s« hat %d Spalten verfügbar, aber %d Spalten wurden angegeben" -#: parser/parse_relation.c:1730 +#: parser/parse_relation.c:1731 #, c-format msgid "joins can have at most %d columns" msgstr "Verbunde können höchstens %d Spalten haben" -#: parser/parse_relation.c:1820 +#: parser/parse_relation.c:1821 #, c-format msgid "WITH query \"%s\" does not have a RETURNING clause" msgstr "WITH-Anfrage »%s« hat keine RETURNING-Klausel" -#: parser/parse_relation.c:2652 parser/parse_relation.c:2807 +#: parser/parse_relation.c:2738 parser/parse_relation.c:2900 #, c-format msgid "column %d of relation \"%s\" does not exist" msgstr "Spalte %d von Relation »%s« existiert nicht" -#: parser/parse_relation.c:3026 +#: parser/parse_relation.c:3119 #, c-format msgid "Perhaps you meant to reference the table alias \"%s\"." msgstr "Vielleicht wurde beabsichtigt, auf den Tabellenalias »%s« zu verweisen." -#: parser/parse_relation.c:3034 +#: parser/parse_relation.c:3127 #, c-format msgid "missing FROM-clause entry for table \"%s\"" msgstr "fehlender Eintrag in FROM-Klausel für Tabelle »%s«" -#: parser/parse_relation.c:3086 +#: parser/parse_relation.c:3179 #, c-format msgid "Perhaps you meant to reference the column \"%s.%s\"." msgstr "Vielleicht wurde beabsichtigt, auf die Spalte »%s.%s« zu verweisen." -#: parser/parse_relation.c:3088 +#: parser/parse_relation.c:3181 #, c-format msgid "There is a column named \"%s\" in table \"%s\", but it cannot be referenced from this part of the query." msgstr "Es gibt eine Spalte namens »%s« in Tabelle »%s«, aber auf sie kann aus diesem Teil der Anfrage nicht verwiesen werden." -#: parser/parse_relation.c:3105 +#: parser/parse_relation.c:3198 #, c-format msgid "Perhaps you meant to reference the column \"%s.%s\" or the column \"%s.%s\"." msgstr "Vielleicht wurde beabsichtigt, auf die Spalte »%s.%s« oder die Spalte »%s.%s« zu verweisen." -#: parser/parse_target.c:421 parser/parse_target.c:713 +#: parser/parse_target.c:432 parser/parse_target.c:724 #, c-format msgid "cannot assign to system column \"%s\"" msgstr "kann Systemspalte »%s« keinen Wert zuweisen" -#: parser/parse_target.c:449 +#: parser/parse_target.c:460 #, c-format msgid "cannot set an array element to DEFAULT" msgstr "kann Arrayelement nicht auf DEFAULT setzen" -#: parser/parse_target.c:454 +#: parser/parse_target.c:465 #, c-format msgid "cannot set a subfield to DEFAULT" msgstr "kann Subfeld nicht auf DEFAULT setzen" -#: parser/parse_target.c:523 +#: parser/parse_target.c:534 #, c-format msgid "column \"%s\" is of type %s but expression is of type %s" msgstr "Spalte »%s« hat Typ %s, aber der Ausdruck hat Typ %s" -#: parser/parse_target.c:697 +#: parser/parse_target.c:708 #, c-format msgid "cannot assign to field \"%s\" of column \"%s\" because its type %s is not a composite type" msgstr "kann Feld »%s« in Spalte »%s« nicht setzen, weil ihr Typ %s kein zusammengesetzter Typ ist" -#: parser/parse_target.c:706 +#: parser/parse_target.c:717 #, c-format msgid "cannot assign to field \"%s\" of column \"%s\" because there is no such column in data type %s" msgstr "kann Feld »%s« in Spalte »%s« nicht setzen, weil es keine solche Spalte in Datentyp %s gibt" -#: parser/parse_target.c:773 +#: parser/parse_target.c:784 #, c-format msgid "array assignment to \"%s\" requires type %s but expression is of type %s" msgstr "Wertzuweisung für »%s« erfordert Typ %s, aber Ausdruck hat Typ %s" -#: parser/parse_target.c:783 +#: parser/parse_target.c:794 #, c-format msgid "subfield \"%s\" is of type %s but expression is of type %s" msgstr "Subfeld »%s« hat Typ %s, aber der Ausdruck hat Typ %s" -#: parser/parse_target.c:1199 +#: parser/parse_target.c:1210 #, c-format msgid "SELECT * with no tables specified is not valid" msgstr "SELECT * ist nicht gültig, wenn keine Tabellen angegeben sind" @@ -13807,219 +13662,219 @@ msgstr "Typmodifikatoren müssen einfache Konstanten oder Bezeichner sein" msgid "invalid type name \"%s\"" msgstr "ungültiger Typname: »%s«" -#: parser/parse_utilcmd.c:399 +#: parser/parse_utilcmd.c:385 #, c-format msgid "array of serial is not implemented" msgstr "Array aus Typ serial ist nicht implementiert" -#: parser/parse_utilcmd.c:447 +#: parser/parse_utilcmd.c:433 #, c-format msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\"" msgstr "%s erstellt implizit eine Sequenz »%s« für die »serial«-Spalte »%s.%s«" -#: parser/parse_utilcmd.c:541 parser/parse_utilcmd.c:553 +#: parser/parse_utilcmd.c:527 parser/parse_utilcmd.c:539 #, c-format msgid "conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\"" msgstr "widersprüchliche NULL/NOT NULL-Deklarationen für Spalte »%s« von Tabelle »%s«" -#: parser/parse_utilcmd.c:565 +#: parser/parse_utilcmd.c:551 #, c-format msgid "multiple default values specified for column \"%s\" of table \"%s\"" msgstr "mehrere Vorgabewerte angegeben für Spalte »%s« von Tabelle »%s«" -#: parser/parse_utilcmd.c:582 parser/parse_utilcmd.c:673 +#: parser/parse_utilcmd.c:568 parser/parse_utilcmd.c:659 #, c-format msgid "primary key constraints are not supported on foreign tables" msgstr "Primärschlüssel für Fremdtabellen werden nicht unterstützt" -#: parser/parse_utilcmd.c:591 parser/parse_utilcmd.c:683 +#: parser/parse_utilcmd.c:577 parser/parse_utilcmd.c:669 #, c-format msgid "unique constraints are not supported on foreign tables" msgstr "Unique-Constraints auf Fremdtabellen werden nicht unterstützt" -#: parser/parse_utilcmd.c:608 parser/parse_utilcmd.c:707 +#: parser/parse_utilcmd.c:594 parser/parse_utilcmd.c:693 #, c-format msgid "foreign key constraints are not supported on foreign tables" msgstr "Fremdschlüssel-Constraints auf Fremdtabellen werden nicht unterstützt" -#: parser/parse_utilcmd.c:693 +#: parser/parse_utilcmd.c:679 #, c-format msgid "exclusion constraints are not supported on foreign tables" msgstr "Exclusion-Constraints auf Fremdtabellen werden nicht unterstützt" -#: parser/parse_utilcmd.c:757 +#: parser/parse_utilcmd.c:743 #, c-format msgid "LIKE is not supported for creating foreign tables" msgstr "LIKE wird für das Erzeugen von Fremdtabellen nicht unterstützt" -#: parser/parse_utilcmd.c:1290 parser/parse_utilcmd.c:1366 +#: parser/parse_utilcmd.c:1276 parser/parse_utilcmd.c:1352 #, c-format msgid "Index \"%s\" contains a whole-row table reference." msgstr "Index »%s« enthält einen Verweis auf die ganze Zeile der Tabelle." -#: parser/parse_utilcmd.c:1636 +#: parser/parse_utilcmd.c:1622 #, c-format msgid "cannot use an existing index in CREATE TABLE" msgstr "bestehender Index kann nicht in CREATE TABLE verwendet werden" -#: parser/parse_utilcmd.c:1656 +#: parser/parse_utilcmd.c:1642 #, c-format msgid "index \"%s\" is already associated with a constraint" msgstr "Index »%s« gehört bereits zu einem Constraint" -#: parser/parse_utilcmd.c:1664 +#: parser/parse_utilcmd.c:1650 #, c-format msgid "index \"%s\" does not belong to table \"%s\"" msgstr "Index »%s« gehört nicht zu Tabelle »%s«" -#: parser/parse_utilcmd.c:1671 +#: parser/parse_utilcmd.c:1657 #, c-format msgid "index \"%s\" is not valid" msgstr "Index »%s« ist nicht gültig" -#: parser/parse_utilcmd.c:1677 +#: parser/parse_utilcmd.c:1663 #, c-format msgid "\"%s\" is not a unique index" msgstr "»%s« ist kein Unique Index" -#: parser/parse_utilcmd.c:1678 parser/parse_utilcmd.c:1685 -#: parser/parse_utilcmd.c:1692 parser/parse_utilcmd.c:1762 +#: parser/parse_utilcmd.c:1664 parser/parse_utilcmd.c:1671 +#: parser/parse_utilcmd.c:1678 parser/parse_utilcmd.c:1748 #, c-format msgid "Cannot create a primary key or unique constraint using such an index." msgstr "Ein Primärschlüssel oder Unique-Constraint kann nicht mit einem solchen Index erzeugt werden." -#: parser/parse_utilcmd.c:1684 +#: parser/parse_utilcmd.c:1670 #, c-format msgid "index \"%s\" contains expressions" msgstr "Index »%s« enthält Ausdrücke" -#: parser/parse_utilcmd.c:1691 +#: parser/parse_utilcmd.c:1677 #, c-format msgid "\"%s\" is a partial index" msgstr "»%s« ist ein partieller Index" -#: parser/parse_utilcmd.c:1703 +#: parser/parse_utilcmd.c:1689 #, c-format msgid "\"%s\" is a deferrable index" msgstr "»%s« ist ein aufschiebbarer Index" -#: parser/parse_utilcmd.c:1704 +#: parser/parse_utilcmd.c:1690 #, c-format msgid "Cannot create a non-deferrable constraint using a deferrable index." msgstr "Ein nicht aufschiebbarer Constraint kann nicht mit einem aufschiebbaren Index erzeugt werden." -#: parser/parse_utilcmd.c:1761 +#: parser/parse_utilcmd.c:1747 #, c-format msgid "index \"%s\" does not have default sorting behavior" msgstr "Index »%s« hat nicht das Standardsortierverhalten" -#: parser/parse_utilcmd.c:1908 +#: parser/parse_utilcmd.c:1894 #, c-format msgid "column \"%s\" appears twice in primary key constraint" msgstr "Spalte »%s« erscheint zweimal im Primärschlüssel-Constraint" -#: parser/parse_utilcmd.c:1914 +#: parser/parse_utilcmd.c:1900 #, c-format msgid "column \"%s\" appears twice in unique constraint" msgstr "Spalte »%s« erscheint zweimal im Unique-Constraint" -#: parser/parse_utilcmd.c:2118 +#: parser/parse_utilcmd.c:2104 #, c-format msgid "index expression cannot return a set" msgstr "Indexausdruck kann keine Ergebnismenge zurückgeben" -#: parser/parse_utilcmd.c:2129 +#: parser/parse_utilcmd.c:2115 #, c-format msgid "index expressions and predicates can refer only to the table being indexed" msgstr "Indexausdrücke und -prädikate können nur auf die zu indizierende Tabelle verweisen" -#: parser/parse_utilcmd.c:2175 +#: parser/parse_utilcmd.c:2161 #, c-format msgid "rules on materialized views are not supported" msgstr "Regeln für materialisierte Sichten werden nicht unterstützt" -#: parser/parse_utilcmd.c:2236 +#: parser/parse_utilcmd.c:2222 #, c-format msgid "rule WHERE condition cannot contain references to other relations" msgstr "WHERE-Bedingung einer Regel kann keine Verweise auf andere Relationen enthalten" -#: parser/parse_utilcmd.c:2308 +#: parser/parse_utilcmd.c:2294 #, c-format msgid "rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE actions" msgstr "Regeln mit WHERE-Bedingungen können als Aktion nur SELECT, INSERT, UPDATE oder DELETE haben" -#: parser/parse_utilcmd.c:2326 parser/parse_utilcmd.c:2425 +#: parser/parse_utilcmd.c:2312 parser/parse_utilcmd.c:2411 #: rewrite/rewriteHandler.c:485 rewrite/rewriteManip.c:1015 #, c-format msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" msgstr "UNION/INTERSECTION/EXCEPT mit Bedingung sind nicht implementiert" -#: parser/parse_utilcmd.c:2344 +#: parser/parse_utilcmd.c:2330 #, c-format msgid "ON SELECT rule cannot use OLD" msgstr "ON-SELECT-Regel kann nicht OLD verwenden" -#: parser/parse_utilcmd.c:2348 +#: parser/parse_utilcmd.c:2334 #, c-format msgid "ON SELECT rule cannot use NEW" msgstr "ON-SELECT-Regel kann nicht NEW verwenden" -#: parser/parse_utilcmd.c:2357 +#: parser/parse_utilcmd.c:2343 #, c-format msgid "ON INSERT rule cannot use OLD" msgstr "ON-INSERT-Regel kann nicht OLD verwenden" -#: parser/parse_utilcmd.c:2363 +#: parser/parse_utilcmd.c:2349 #, c-format msgid "ON DELETE rule cannot use NEW" msgstr "ON-DELETE-Regel kann nicht NEW verwenden" -#: parser/parse_utilcmd.c:2391 +#: parser/parse_utilcmd.c:2377 #, c-format msgid "cannot refer to OLD within WITH query" msgstr "in WITH-Anfrage kann nicht auf OLD verweisen werden" -#: parser/parse_utilcmd.c:2398 +#: parser/parse_utilcmd.c:2384 #, c-format msgid "cannot refer to NEW within WITH query" msgstr "in WITH-Anfrage kann nicht auf NEW verwiesen werden" -#: parser/parse_utilcmd.c:2601 +#: parser/parse_utilcmd.c:2587 #, c-format msgid "transform expression must not return a set" msgstr "Umwandlungsausdruck kann keine Ergebnismenge zurückgeben" -#: parser/parse_utilcmd.c:2715 +#: parser/parse_utilcmd.c:2701 #, c-format msgid "misplaced DEFERRABLE clause" msgstr "falsch platzierte DEFERRABLE-Klausel" -#: parser/parse_utilcmd.c:2720 parser/parse_utilcmd.c:2735 +#: parser/parse_utilcmd.c:2706 parser/parse_utilcmd.c:2721 #, c-format msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" msgstr "mehrere DEFERRABLE/NOT DEFERRABLE-Klauseln sind nicht erlaubt" -#: parser/parse_utilcmd.c:2730 +#: parser/parse_utilcmd.c:2716 #, c-format msgid "misplaced NOT DEFERRABLE clause" msgstr "falsch platzierte NOT DEFERRABLE-Klausel" -#: parser/parse_utilcmd.c:2751 +#: parser/parse_utilcmd.c:2737 #, c-format msgid "misplaced INITIALLY DEFERRED clause" msgstr "falsch platzierte INITIALLY DEFERRED-Klausel" -#: parser/parse_utilcmd.c:2756 parser/parse_utilcmd.c:2782 +#: parser/parse_utilcmd.c:2742 parser/parse_utilcmd.c:2768 #, c-format msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" msgstr "mehrere INITIALLY IMMEDIATE/DEFERRED-Klauseln sind nicht erlaubt" -#: parser/parse_utilcmd.c:2777 +#: parser/parse_utilcmd.c:2763 #, c-format msgid "misplaced INITIALLY IMMEDIATE clause" msgstr "falsch platzierte INITIALLY IMMEDIATE-Klausel" -#: parser/parse_utilcmd.c:2968 +#: parser/parse_utilcmd.c:2954 #, c-format msgid "CREATE specifies a schema (%s) different from the one being created (%s)" msgstr "CREATE gibt ein Schema an (%s) welches nicht gleich dem zu erzeugenden Schema ist (%s)" @@ -14053,17 +13908,17 @@ msgstr "" msgid "You possibly need to raise your kernel's SEMVMX value to be at least %d. Look into the PostgreSQL documentation for details." msgstr "Sie müssen möglicherweise den Kernelparameter SEMVMX auf mindestens %d erhöhen. Weitere Informationen finden Sie in der PostgreSQL-Dokumentation." -#: port/pg_shmem.c:141 port/sysv_shmem.c:141 +#: port/pg_shmem.c:195 port/sysv_shmem.c:195 #, c-format msgid "could not create shared memory segment: %m" msgstr "konnte Shared-Memory-Segment nicht erzeugen: %m" -#: port/pg_shmem.c:142 port/sysv_shmem.c:142 +#: port/pg_shmem.c:196 port/sysv_shmem.c:196 #, c-format msgid "Failed system call was shmget(key=%lu, size=%zu, 0%o)." msgstr "Fehlgeschlagener Systemaufruf war shmget(Key=%lu, Größe=%zu, 0%o)." -#: port/pg_shmem.c:146 port/sysv_shmem.c:146 +#: port/pg_shmem.c:200 port/sysv_shmem.c:200 #, c-format msgid "" "This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter, or possibly that it is less than your kernel's SHMMIN parameter.\n" @@ -14072,7 +13927,7 @@ msgstr "" "Dieser Fehler bedeutet gewöhnlich, dass das von PostgreSQL angeforderte Shared-Memory-Segment den Kernel-Parameter SHMMAX überschreitet, oder eventuell, dass es kleiner als der Kernel-Parameter SHMMIN ist.\n" "Die PostgreSQL-Dokumentation enthält weitere Informationen über die Konfiguration von Shared Memory." -#: port/pg_shmem.c:153 port/sysv_shmem.c:153 +#: port/pg_shmem.c:207 port/sysv_shmem.c:207 #, c-format msgid "" "This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMALL parameter. You might need to reconfigure the kernel with larger SHMALL.\n" @@ -14081,7 +13936,7 @@ msgstr "" "Dieser Fehler bedeutet gewöhnlich, dass das von PostgreSQL angeforderte Shared-Memory-Segment den Kernel-Parameter SHMALL überschreitet. Sie müssen eventuell den Kernel mit einem größeren SHMALL neu konfigurieren.\n" "Die PostgreSQL-Dokumentation enthält weitere Informationen über die Konfiguration von Shared Memory." -#: port/pg_shmem.c:159 port/sysv_shmem.c:159 +#: port/pg_shmem.c:213 port/sysv_shmem.c:213 #, c-format msgid "" "This error does *not* mean that you have run out of disk space. It occurs either if all available shared memory IDs have been taken, in which case you need to raise the SHMMNI parameter in your kernel, or because the system's overall limit for shared memory has been reached.\n" @@ -14090,29 +13945,24 @@ msgstr "" "Dieser Fehler bedeutet *nicht*, dass kein Platz mehr auf der Festplatte ist. Er tritt auf, wenn entweder alle verfügbaren Shared-Memory-IDs aufgebraucht sind, dann müssen den Kernelparameter SHMMNI erhöhen, oder weil die Systemhöchstgrenze für Shared Memory insgesamt erreicht wurde.\n" "Die PostgreSQL-Dokumentation enthält weitere Informationen über die Konfiguration von Shared Memory." -#: port/pg_shmem.c:340 port/sysv_shmem.c:340 -#, c-format -msgid "huge TLB pages not supported on this platform" -msgstr "Huge TLB-Pages werden auf dieser Plattform nicht unterstützt" - -#: port/pg_shmem.c:390 port/sysv_shmem.c:390 +#: port/pg_shmem.c:504 port/sysv_shmem.c:504 #, c-format msgid "could not map anonymous shared memory: %m" msgstr "konnte anonymes Shared Memory nicht mappen: %m" -#: port/pg_shmem.c:392 port/sysv_shmem.c:392 +#: port/pg_shmem.c:506 port/sysv_shmem.c:506 #, c-format msgid "This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory, swap space, or huge pages. To reduce the request size (currently %zu bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections." msgstr "" "Dieser Fehler bedeutet gewöhnlich, dass das von PostgreSQL angeforderte Shared-Memory-Segment den verfügbaren Speicher, Swap-Space oder Huge Pages überschreitet. Um die benötigte Shared-Memory-Größe zu reduzieren (aktuell %zu Bytes), reduzieren Sie den Shared-Memory-Verbrauch von PostgreSQL, beispielsweise indem Sie »shared_buffers« oder »max_connections« reduzieren.\n" "Die PostgreSQL-Dokumentation enthält weitere Informationen über die Konfiguration von Shared Memory." -#: port/pg_shmem.c:439 port/sysv_shmem.c:439 port/win32_shmem.c:134 +#: port/pg_shmem.c:572 port/sysv_shmem.c:572 port/win32_shmem.c:134 #, c-format msgid "huge pages not supported on this platform" msgstr "Huge Pages werden auf dieser Plattform nicht unterstützt" -#: port/pg_shmem.c:553 port/sysv_shmem.c:553 +#: port/pg_shmem.c:667 port/sysv_shmem.c:667 #, c-format msgid "could not stat data directory \"%s\": %m" msgstr "konnte »stat« für Datenverzeichnis »%s« nicht ausführen: %m" @@ -14232,89 +14082,89 @@ msgstr "konnte Autovacuum-Worker-Prozess nicht starten (fork-Fehler): %m" msgid "autovacuum: processing database \"%s\"" msgstr "Autovacuum: bearbeite Datenbank »%s«" -#: postmaster/autovacuum.c:2050 +#: postmaster/autovacuum.c:2052 #, c-format msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\"" msgstr "Autovacuum: lösche verwaiste temporäre Tabelle »%s.%s« in Datenbank »%s«" -#: postmaster/autovacuum.c:2062 +#: postmaster/autovacuum.c:2064 #, c-format msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\"" msgstr "Autovacuum: verwaiste temporäre Tabelle »%s.%s« in Datenbank »%s« gefunden" -#: postmaster/autovacuum.c:2344 +#: postmaster/autovacuum.c:2347 #, c-format msgid "automatic vacuum of table \"%s.%s.%s\"" msgstr "automatisches Vacuum der Tabelle »%s.%s.%s«" -#: postmaster/autovacuum.c:2347 +#: postmaster/autovacuum.c:2350 #, c-format msgid "automatic analyze of table \"%s.%s.%s\"" msgstr "automatisches Analysieren der Tabelle »%s.%s.%s«" -#: postmaster/autovacuum.c:2877 +#: postmaster/autovacuum.c:2899 #, c-format msgid "autovacuum not started because of misconfiguration" msgstr "Autovacuum wegen Fehlkonfiguration nicht gestartet" -#: postmaster/autovacuum.c:2878 +#: postmaster/autovacuum.c:2900 #, c-format msgid "Enable the \"track_counts\" option." msgstr "Schalten Sie die Option »track_counts« ein." -#: postmaster/bgworker.c:346 postmaster/bgworker.c:746 +#: postmaster/bgworker.c:367 postmaster/bgworker.c:762 #, c-format msgid "registering background worker \"%s\"" msgstr "registriere Background-Worker »%s«" -#: postmaster/bgworker.c:375 +#: postmaster/bgworker.c:396 #, c-format msgid "unregistering background worker \"%s\"" msgstr "deregistriere Background-Worker »%s«" -#: postmaster/bgworker.c:484 +#: postmaster/bgworker.c:505 #, c-format msgid "background worker \"%s\": must attach to shared memory in order to request a database connection" msgstr "Background-Worker »%s«: muss mit Shared Memory verbinden, um eine Datenbankverbindung anzufordern" -#: postmaster/bgworker.c:493 +#: postmaster/bgworker.c:514 #, c-format msgid "background worker \"%s\": cannot request database access if starting at postmaster start" msgstr "Background-Worker »%s«: kann kein Datenbankzugriff anfordern, wenn er nach Postmaster-Start gestartet hat" -#: postmaster/bgworker.c:507 +#: postmaster/bgworker.c:528 #, c-format msgid "background worker \"%s\": invalid restart interval" msgstr "Background-Worker »%s«: ungültiges Neustart-Intervall" -#: postmaster/bgworker.c:552 +#: postmaster/bgworker.c:573 #, c-format msgid "terminating background worker \"%s\" due to administrator command" msgstr "Background-Worker »%s« wird abgebrochen aufgrund von Anweisung des Administrators" -#: postmaster/bgworker.c:753 +#: postmaster/bgworker.c:769 #, c-format msgid "background worker \"%s\": must be registered in shared_preload_libraries" msgstr "Background-Worker »%s«: muss in shared_preload_libraries registriert sein" -#: postmaster/bgworker.c:765 +#: postmaster/bgworker.c:781 #, c-format msgid "background worker \"%s\": only dynamic background workers can request notification" msgstr "Background-Worker »%s«: nur dynamische Background-Worker können Benachrichtigung verlangen" -#: postmaster/bgworker.c:780 +#: postmaster/bgworker.c:796 #, c-format msgid "too many background workers" msgstr "zu viele Background-Worker" -#: postmaster/bgworker.c:781 +#: postmaster/bgworker.c:797 #, c-format msgid "Up to %d background worker can be registered with the current settings." msgid_plural "Up to %d background workers can be registered with the current settings." msgstr[0] "Mit den aktuellen Einstellungen können bis zu %d Background-Worker registriert werden." msgstr[1] "Mit den aktuellen Einstellungen können bis zu %d Background-Worker registriert werden." -#: postmaster/bgworker.c:785 +#: postmaster/bgworker.c:801 #, c-format msgid "Consider increasing the configuration parameter \"max_worker_processes\"." msgstr "Erhöhen Sie eventuell den Konfigurationsparameter »max_worker_processes«." @@ -14382,7 +14232,7 @@ msgstr "Der fehlgeschlagene Archivbefehl war: %s" msgid "archive command was terminated by exception 0x%X" msgstr "Archivbefehl wurde durch Ausnahme 0x%X beendet" -#: postmaster/pgarch.c:598 postmaster/postmaster.c:3490 +#: postmaster/pgarch.c:598 postmaster/postmaster.c:3514 #, c-format msgid "See C include file \"ntstatus.h\" for a description of the hexadecimal value." msgstr "Sehen Sie die Beschreibung des Hexadezimalwerts in der C-Include-Datei »ntstatus.h« nach." @@ -14412,293 +14262,293 @@ msgstr "archivierte Transaktionslogdatei »%s«" msgid "could not open archive status directory \"%s\": %m" msgstr "konnte Archivstatusverzeichnis »%s« nicht öffnen: %m" -#: postmaster/pgstat.c:352 +#: postmaster/pgstat.c:358 #, c-format msgid "could not resolve \"localhost\": %s" msgstr "konnte »localhost« nicht auflösen: %s" -#: postmaster/pgstat.c:375 +#: postmaster/pgstat.c:381 #, c-format msgid "trying another address for the statistics collector" msgstr "andere Adresse für Statistiksammelprozess wird versucht" -#: postmaster/pgstat.c:384 +#: postmaster/pgstat.c:390 #, c-format msgid "could not create socket for statistics collector: %m" msgstr "konnte Socket für Statistiksammelprozess nicht erzeugen: %m" -#: postmaster/pgstat.c:396 +#: postmaster/pgstat.c:402 #, c-format msgid "could not bind socket for statistics collector: %m" msgstr "konnte Socket für Statistiksammelprozess nicht binden: %m" -#: postmaster/pgstat.c:407 +#: postmaster/pgstat.c:413 #, c-format msgid "could not get address of socket for statistics collector: %m" msgstr "konnte Adresse für Socket für Statistiksammelprozess nicht ermitteln: %m" -#: postmaster/pgstat.c:423 +#: postmaster/pgstat.c:429 #, c-format msgid "could not connect socket for statistics collector: %m" msgstr "konnte nicht mit Socket für Statistiksammelprozess verbinden: %m" -#: postmaster/pgstat.c:444 +#: postmaster/pgstat.c:450 #, c-format msgid "could not send test message on socket for statistics collector: %m" msgstr "konnte Testnachricht auf Socket für Statistiksammelprozess nicht senden: %m" -#: postmaster/pgstat.c:470 +#: postmaster/pgstat.c:476 #, c-format msgid "select() failed in statistics collector: %m" msgstr "select() im Statistiksammelprozess fehlgeschlagen: %m" -#: postmaster/pgstat.c:485 +#: postmaster/pgstat.c:491 #, c-format msgid "test message did not get through on socket for statistics collector" msgstr "Testnachricht auf Socket für Statistiksammelprozess kam nicht durch" -#: postmaster/pgstat.c:500 +#: postmaster/pgstat.c:506 #, c-format msgid "could not receive test message on socket for statistics collector: %m" msgstr "konnte Testnachricht auf Socket für Statistiksammelprozess nicht empfangen: %m" -#: postmaster/pgstat.c:510 +#: postmaster/pgstat.c:516 #, c-format msgid "incorrect test message transmission on socket for statistics collector" msgstr "fehlerhafte Übertragung der Testnachricht auf Socket für Statistiksammelprozess" -#: postmaster/pgstat.c:533 +#: postmaster/pgstat.c:539 #, c-format msgid "could not set statistics collector socket to nonblocking mode: %m" msgstr "konnte Socket von Statistiksammelprozess nicht auf nicht blockierenden Modus setzen: %m" -#: postmaster/pgstat.c:543 +#: postmaster/pgstat.c:578 #, c-format msgid "disabling statistics collector for lack of working socket" msgstr "Statistiksammelprozess abgeschaltet wegen nicht funkionierender Socket" -#: postmaster/pgstat.c:690 +#: postmaster/pgstat.c:725 #, c-format msgid "could not fork statistics collector: %m" msgstr "konnte Statistiksammelprozess nicht starten (fork-Fehler): %m" -#: postmaster/pgstat.c:1258 +#: postmaster/pgstat.c:1293 #, c-format msgid "unrecognized reset target: \"%s\"" msgstr "unbekanntes Reset-Ziel: »%s«" -#: postmaster/pgstat.c:1259 +#: postmaster/pgstat.c:1294 #, c-format msgid "Target must be \"archiver\" or \"bgwriter\"." msgstr "Das Reset-Ziel muss »archiver« oder »bgwriter« sein." -#: postmaster/pgstat.c:3579 +#: postmaster/pgstat.c:3619 #, c-format msgid "could not read statistics message: %m" msgstr "konnte Statistiknachricht nicht lesen: %m" -#: postmaster/pgstat.c:3910 postmaster/pgstat.c:4067 +#: postmaster/pgstat.c:3950 postmaster/pgstat.c:4107 #, c-format msgid "could not open temporary statistics file \"%s\": %m" msgstr "konnte temporäre Statistikdatei »%s« nicht öffnen: %m" -#: postmaster/pgstat.c:3977 postmaster/pgstat.c:4112 +#: postmaster/pgstat.c:4017 postmaster/pgstat.c:4152 #, c-format msgid "could not write temporary statistics file \"%s\": %m" msgstr "konnte temporäre Statistikdatei »%s« nicht schreiben: %m" -#: postmaster/pgstat.c:3986 postmaster/pgstat.c:4121 +#: postmaster/pgstat.c:4026 postmaster/pgstat.c:4161 #, c-format msgid "could not close temporary statistics file \"%s\": %m" msgstr "konnte temporäre Statistikdatei »%s« nicht schließen: %m" -#: postmaster/pgstat.c:3994 postmaster/pgstat.c:4129 +#: postmaster/pgstat.c:4034 postmaster/pgstat.c:4169 #, c-format msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m" msgstr "konnte temporäre Statistikdatei »%s« nicht in »%s« umbenennen: %m" -#: postmaster/pgstat.c:4218 postmaster/pgstat.c:4403 postmaster/pgstat.c:4556 +#: postmaster/pgstat.c:4258 postmaster/pgstat.c:4464 postmaster/pgstat.c:4617 #, c-format msgid "could not open statistics file \"%s\": %m" msgstr "konnte Statistikdatei »%s« nicht öffnen: %m" -#: postmaster/pgstat.c:4230 postmaster/pgstat.c:4240 postmaster/pgstat.c:4250 -#: postmaster/pgstat.c:4271 postmaster/pgstat.c:4286 postmaster/pgstat.c:4340 -#: postmaster/pgstat.c:4415 postmaster/pgstat.c:4435 postmaster/pgstat.c:4453 -#: postmaster/pgstat.c:4469 postmaster/pgstat.c:4487 postmaster/pgstat.c:4503 -#: postmaster/pgstat.c:4568 postmaster/pgstat.c:4580 postmaster/pgstat.c:4592 -#: postmaster/pgstat.c:4617 postmaster/pgstat.c:4639 +#: postmaster/pgstat.c:4270 postmaster/pgstat.c:4280 postmaster/pgstat.c:4301 +#: postmaster/pgstat.c:4323 postmaster/pgstat.c:4338 postmaster/pgstat.c:4401 +#: postmaster/pgstat.c:4476 postmaster/pgstat.c:4496 postmaster/pgstat.c:4514 +#: postmaster/pgstat.c:4530 postmaster/pgstat.c:4548 postmaster/pgstat.c:4564 +#: postmaster/pgstat.c:4629 postmaster/pgstat.c:4641 postmaster/pgstat.c:4653 +#: postmaster/pgstat.c:4678 postmaster/pgstat.c:4700 #, c-format msgid "corrupted statistics file \"%s\"" msgstr "verfälschte Statistikdatei »%s«" -#: postmaster/pgstat.c:4768 +#: postmaster/pgstat.c:4829 #, c-format msgid "using stale statistics instead of current ones because stats collector is not responding" msgstr "verwende veraltete Statistiken anstatt aktueller, weil der Statistiksammelprozess nicht antwortet" -#: postmaster/pgstat.c:5095 +#: postmaster/pgstat.c:5156 #, c-format msgid "database hash table corrupted during cleanup --- abort" msgstr "Datenbank-Hash-Tabelle beim Aufräumen verfälscht --- Abbruch" -#: postmaster/postmaster.c:684 +#: postmaster/postmaster.c:702 #, c-format msgid "%s: invalid argument for option -f: \"%s\"\n" msgstr "%s: ungültiges Argument für Option -f: »%s«\n" -#: postmaster/postmaster.c:770 +#: postmaster/postmaster.c:788 #, c-format msgid "%s: invalid argument for option -t: \"%s\"\n" msgstr "%s: ungültiges Argument für Option -t: »%s«\n" -#: postmaster/postmaster.c:821 +#: postmaster/postmaster.c:839 #, c-format msgid "%s: invalid argument: \"%s\"\n" msgstr "%s: ungültiges Argument: »%s«\n" -#: postmaster/postmaster.c:860 +#: postmaster/postmaster.c:878 #, c-format msgid "%s: superuser_reserved_connections must be less than max_connections\n" msgstr "%s: superuser_reserved_connections muss kleiner als max_connections sein\n" -#: postmaster/postmaster.c:865 +#: postmaster/postmaster.c:883 #, c-format msgid "%s: max_wal_senders must be less than max_connections\n" msgstr "%s: max_wal_senders muss kleiner als max_connections sein\n" -#: postmaster/postmaster.c:870 +#: postmaster/postmaster.c:888 #, c-format msgid "WAL archival cannot be enabled when wal_level is \"minimal\"" msgstr "WAL-Archivierung kann nicht eingeschaltet werden, wenn wal_level »minimal« ist" -#: postmaster/postmaster.c:873 +#: postmaster/postmaster.c:891 #, c-format msgid "WAL streaming (max_wal_senders > 0) requires wal_level \"replica\" or \"logical\"" msgstr "WAL-Streaming (max_wal_senders > 0) benötigt wal_level »replica« oder »logical«" -#: postmaster/postmaster.c:881 +#: postmaster/postmaster.c:899 #, c-format msgid "%s: invalid datetoken tables, please fix\n" msgstr "%s: ungültige datetoken-Tabellen, bitte reparieren\n" -#: postmaster/postmaster.c:973 postmaster/postmaster.c:1071 +#: postmaster/postmaster.c:991 postmaster/postmaster.c:1089 #: utils/init/miscinit.c:1429 #, c-format msgid "invalid list syntax in parameter \"%s\"" msgstr "ungültige Listensyntax für Parameter »%s«" -#: postmaster/postmaster.c:1004 +#: postmaster/postmaster.c:1022 #, c-format msgid "could not create listen socket for \"%s\"" msgstr "konnte Listen-Socket für »%s« nicht erzeugen" -#: postmaster/postmaster.c:1010 +#: postmaster/postmaster.c:1028 #, c-format msgid "could not create any TCP/IP sockets" msgstr "konnte keine TCP/IP-Sockets erstellen" -#: postmaster/postmaster.c:1093 +#: postmaster/postmaster.c:1111 #, c-format msgid "could not create Unix-domain socket in directory \"%s\"" msgstr "konnte Unix-Domain-Socket in Verzeichnis »%s« nicht erzeugen" -#: postmaster/postmaster.c:1099 +#: postmaster/postmaster.c:1117 #, c-format msgid "could not create any Unix-domain sockets" msgstr "konnte keine Unix-Domain-Sockets erzeugen" -#: postmaster/postmaster.c:1111 +#: postmaster/postmaster.c:1129 #, c-format msgid "no socket created for listening" msgstr "keine Listen-Socket erzeugt" -#: postmaster/postmaster.c:1151 +#: postmaster/postmaster.c:1169 #, c-format msgid "could not create I/O completion port for child queue" msgstr "konnte Ein-/Ausgabe-Completion-Port für Child-Queue nicht erzeugen" -#: postmaster/postmaster.c:1180 +#: postmaster/postmaster.c:1198 #, c-format msgid "%s: could not change permissions of external PID file \"%s\": %s\n" msgstr "%s: konnte Rechte der externen PID-Datei »%s« nicht ändern: %s\n" -#: postmaster/postmaster.c:1184 +#: postmaster/postmaster.c:1202 #, c-format msgid "%s: could not write external PID file \"%s\": %s\n" msgstr "%s: konnte externe PID-Datei »%s« nicht schreiben: %s\n" -#: postmaster/postmaster.c:1234 +#: postmaster/postmaster.c:1252 #, c-format msgid "ending log output to stderr" msgstr "Logausgabe nach stderr endet" -#: postmaster/postmaster.c:1235 +#: postmaster/postmaster.c:1253 #, c-format msgid "Future log output will go to log destination \"%s\"." msgstr "Die weitere Logausgabe geht an Logziel »%s«." -#: postmaster/postmaster.c:1261 utils/init/postinit.c:213 +#: postmaster/postmaster.c:1279 utils/init/postinit.c:213 #, c-format msgid "could not load pg_hba.conf" msgstr "konnte pg_hba.conf nicht laden" -#: postmaster/postmaster.c:1287 +#: postmaster/postmaster.c:1305 #, c-format msgid "postmaster became multithreaded during startup" msgstr "Postmaster ist während des Starts multithreaded geworden" -#: postmaster/postmaster.c:1288 +#: postmaster/postmaster.c:1306 #, c-format msgid "Set the LC_ALL environment variable to a valid locale." msgstr "Setzen Sie die Umgebungsvariable LC_ALL auf eine gültige Locale." -#: postmaster/postmaster.c:1385 +#: postmaster/postmaster.c:1403 #, c-format msgid "%s: could not locate matching postgres executable" msgstr "%s: konnte kein passendes Programm »postgres« finden" -#: postmaster/postmaster.c:1408 utils/misc/tzparser.c:341 +#: postmaster/postmaster.c:1426 utils/misc/tzparser.c:341 #, c-format msgid "This may indicate an incomplete PostgreSQL installation, or that the file \"%s\" has been moved away from its proper location." msgstr "Dies kann auf eine unvollständige PostgreSQL-Installation hindeuten, oder darauf, dass die Datei »%s« von ihrer richtigen Stelle verschoben worden ist." -#: postmaster/postmaster.c:1436 +#: postmaster/postmaster.c:1454 #, c-format msgid "data directory \"%s\" does not exist" msgstr "Datenverzeichnis »%s« existiert nicht" -#: postmaster/postmaster.c:1441 +#: postmaster/postmaster.c:1459 #, c-format msgid "could not read permissions of directory \"%s\": %m" msgstr "konnte Zugriffsrechte von Verzeichnis »%s« nicht lesen: %m" -#: postmaster/postmaster.c:1449 +#: postmaster/postmaster.c:1467 #, c-format msgid "specified data directory \"%s\" is not a directory" msgstr "angegebenes Datenverzeichnis »%s« ist kein Verzeichnis" -#: postmaster/postmaster.c:1465 +#: postmaster/postmaster.c:1483 #, c-format msgid "data directory \"%s\" has wrong ownership" msgstr "Datenverzeichnis »%s« hat falschen Eigentümer" -#: postmaster/postmaster.c:1467 +#: postmaster/postmaster.c:1485 #, c-format msgid "The server must be started by the user that owns the data directory." msgstr "Der Server muss von dem Benutzer gestartet werden, dem das Datenverzeichnis gehört." -#: postmaster/postmaster.c:1487 +#: postmaster/postmaster.c:1505 #, c-format msgid "data directory \"%s\" has group or world access" msgstr "Datenverzeichnis »%s« erlaubt Zugriff von Gruppe oder Welt" -#: postmaster/postmaster.c:1489 +#: postmaster/postmaster.c:1507 #, c-format msgid "Permissions should be u=rwx (0700)." msgstr "Rechte sollten u=rwx (0700) sein." -#: postmaster/postmaster.c:1500 +#: postmaster/postmaster.c:1518 #, c-format msgid "" "%s: could not find the database system\n" @@ -14709,365 +14559,375 @@ msgstr "" "Es wurde im Verzeichnis »%s« erwartet,\n" "aber die Datei »%s« konnte nicht geöffnet werden: %s\n" -#: postmaster/postmaster.c:1677 +#: postmaster/postmaster.c:1695 #, c-format msgid "select() failed in postmaster: %m" msgstr "select() fehlgeschlagen im Postmaster: %m" -#: postmaster/postmaster.c:1827 +#: postmaster/postmaster.c:1850 #, c-format msgid "performing immediate shutdown because data directory lock file is invalid" msgstr "führe sofortiges Herunterfahren durch, weil Sperrdatei im Datenverzeichnis ungültig ist" -#: postmaster/postmaster.c:1905 postmaster/postmaster.c:1936 +#: postmaster/postmaster.c:1928 postmaster/postmaster.c:1959 #, c-format msgid "incomplete startup packet" msgstr "unvollständiges Startpaket" -#: postmaster/postmaster.c:1917 +#: postmaster/postmaster.c:1940 #, c-format msgid "invalid length of startup packet" msgstr "ungültige Länge des Startpakets" -#: postmaster/postmaster.c:1975 +#: postmaster/postmaster.c:1998 #, c-format msgid "failed to send SSL negotiation response: %m" msgstr "konnte SSL-Verhandlungsantwort nicht senden: %m" -#: postmaster/postmaster.c:2004 +#: postmaster/postmaster.c:2027 #, c-format msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u" msgstr "nicht unterstütztes Frontend-Protokoll %u.%u: Server unterstützt %u.0 bis %u.%u" -#: postmaster/postmaster.c:2067 utils/misc/guc.c:5662 utils/misc/guc.c:5755 -#: utils/misc/guc.c:7053 utils/misc/guc.c:9789 utils/misc/guc.c:9823 +#: postmaster/postmaster.c:2090 utils/misc/guc.c:5660 utils/misc/guc.c:5753 +#: utils/misc/guc.c:7051 utils/misc/guc.c:9805 utils/misc/guc.c:9839 #, c-format msgid "invalid value for parameter \"%s\": \"%s\"" msgstr "ungültiger Wert für Parameter »%s«: »%s«" -#: postmaster/postmaster.c:2070 +#: postmaster/postmaster.c:2093 #, c-format msgid "Valid values are: \"false\", 0, \"true\", 1, \"database\"." msgstr "Gültige Werte sind: »false«, 0, »true«, 1, »database«." -#: postmaster/postmaster.c:2090 +#: postmaster/postmaster.c:2113 #, c-format msgid "invalid startup packet layout: expected terminator as last byte" msgstr "ungültiges Layout des Startpakets: Abschluss als letztes Byte erwartet" -#: postmaster/postmaster.c:2118 +#: postmaster/postmaster.c:2141 #, c-format msgid "no PostgreSQL user name specified in startup packet" msgstr "kein PostgreSQL-Benutzername im Startpaket angegeben" -#: postmaster/postmaster.c:2177 +#: postmaster/postmaster.c:2200 #, c-format msgid "the database system is starting up" msgstr "das Datenbanksystem startet" -#: postmaster/postmaster.c:2182 +#: postmaster/postmaster.c:2205 #, c-format msgid "the database system is shutting down" msgstr "das Datenbanksystem fährt herunter" -#: postmaster/postmaster.c:2187 +#: postmaster/postmaster.c:2210 #, c-format msgid "the database system is in recovery mode" msgstr "das Datenbanksystem ist im Wiederherstellungsmodus" -#: postmaster/postmaster.c:2192 storage/ipc/procarray.c:297 +#: postmaster/postmaster.c:2215 storage/ipc/procarray.c:298 #: storage/ipc/sinvaladt.c:298 storage/lmgr/proc.c:340 #, c-format msgid "sorry, too many clients already" msgstr "tut mir leid, schon zu viele Verbindungen" -#: postmaster/postmaster.c:2254 +#: postmaster/postmaster.c:2277 #, c-format msgid "wrong key in cancel request for process %d" msgstr "falscher Schlüssel in Stornierungsanfrage für Prozess %d" -#: postmaster/postmaster.c:2262 +#: postmaster/postmaster.c:2285 #, c-format msgid "PID %d in cancel request did not match any process" msgstr "PID %d in Stornierungsanfrage stimmte mit keinem Prozess überein" -#: postmaster/postmaster.c:2482 +#: postmaster/postmaster.c:2505 #, c-format msgid "received SIGHUP, reloading configuration files" msgstr "SIGHUP empfangen, Konfigurationsdateien werden neu geladen" -#: postmaster/postmaster.c:2507 +#: postmaster/postmaster.c:2530 #, c-format msgid "pg_hba.conf not reloaded" msgstr "pg_hba.conf nicht neu geladen" -#: postmaster/postmaster.c:2511 +#: postmaster/postmaster.c:2534 #, c-format msgid "pg_ident.conf not reloaded" msgstr "pg_ident.conf nicht neu geladen" -#: postmaster/postmaster.c:2552 +#: postmaster/postmaster.c:2575 #, c-format msgid "received smart shutdown request" msgstr "intelligentes Herunterfahren verlangt" -#: postmaster/postmaster.c:2607 +#: postmaster/postmaster.c:2630 #, c-format msgid "received fast shutdown request" msgstr "schnelles Herunterfahren verlangt" -#: postmaster/postmaster.c:2637 +#: postmaster/postmaster.c:2660 #, c-format msgid "aborting any active transactions" msgstr "etwaige aktive Transaktionen werden abgebrochen" -#: postmaster/postmaster.c:2671 +#: postmaster/postmaster.c:2694 #, c-format msgid "received immediate shutdown request" msgstr "sofortiges Herunterfahren verlangt" -#: postmaster/postmaster.c:2735 +#: postmaster/postmaster.c:2758 #, c-format msgid "shutdown at recovery target" msgstr "Herunterfahren beim Wiederherstellungsziel" -#: postmaster/postmaster.c:2751 postmaster/postmaster.c:2774 +#: postmaster/postmaster.c:2774 postmaster/postmaster.c:2797 msgid "startup process" msgstr "Startprozess" -#: postmaster/postmaster.c:2754 +#: postmaster/postmaster.c:2777 #, c-format msgid "aborting startup due to startup process failure" msgstr "Serverstart abgebrochen wegen Startprozessfehler" -#: postmaster/postmaster.c:2815 +#: postmaster/postmaster.c:2838 #, c-format msgid "database system is ready to accept connections" msgstr "Datenbanksystem ist bereit, um Verbindungen anzunehmen" -#: postmaster/postmaster.c:2834 +#: postmaster/postmaster.c:2857 msgid "background writer process" msgstr "Background-Writer-Prozess" -#: postmaster/postmaster.c:2888 +#: postmaster/postmaster.c:2911 msgid "checkpointer process" msgstr "Checkpointer-Prozess" -#: postmaster/postmaster.c:2904 +#: postmaster/postmaster.c:2927 msgid "WAL writer process" msgstr "WAL-Schreibprozess" -#: postmaster/postmaster.c:2918 +#: postmaster/postmaster.c:2942 msgid "WAL receiver process" msgstr "WAL-Receiver-Prozess" -#: postmaster/postmaster.c:2933 +#: postmaster/postmaster.c:2957 msgid "autovacuum launcher process" msgstr "Autovacuum-Launcher-Prozess" -#: postmaster/postmaster.c:2948 +#: postmaster/postmaster.c:2972 msgid "archiver process" msgstr "Archivierprozess" -#: postmaster/postmaster.c:2964 +#: postmaster/postmaster.c:2988 msgid "statistics collector process" msgstr "Statistiksammelprozess" -#: postmaster/postmaster.c:2978 +#: postmaster/postmaster.c:3002 msgid "system logger process" msgstr "Systemlogger-Prozess" -#: postmaster/postmaster.c:3040 +#: postmaster/postmaster.c:3064 msgid "worker process" msgstr "Worker-Prozess" -#: postmaster/postmaster.c:3123 postmaster/postmaster.c:3143 -#: postmaster/postmaster.c:3150 postmaster/postmaster.c:3168 +#: postmaster/postmaster.c:3147 postmaster/postmaster.c:3167 +#: postmaster/postmaster.c:3174 postmaster/postmaster.c:3192 msgid "server process" msgstr "Serverprozess" -#: postmaster/postmaster.c:3222 +#: postmaster/postmaster.c:3246 #, c-format msgid "terminating any other active server processes" msgstr "aktive Serverprozesse werden abgebrochen" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3478 +#: postmaster/postmaster.c:3502 #, c-format msgid "%s (PID %d) exited with exit code %d" msgstr "%s (PID %d) beendete mit Status %d" -#: postmaster/postmaster.c:3480 postmaster/postmaster.c:3491 -#: postmaster/postmaster.c:3502 postmaster/postmaster.c:3511 -#: postmaster/postmaster.c:3521 +#: postmaster/postmaster.c:3504 postmaster/postmaster.c:3515 +#: postmaster/postmaster.c:3526 postmaster/postmaster.c:3535 +#: postmaster/postmaster.c:3545 #, c-format msgid "Failed process was running: %s" msgstr "Der fehlgeschlagene Prozess führte aus: %s" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3488 +#: postmaster/postmaster.c:3512 #, c-format msgid "%s (PID %d) was terminated by exception 0x%X" msgstr "%s (PID %d) wurde durch Ausnahme 0x%X beendet" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3498 +#: postmaster/postmaster.c:3522 #, c-format msgid "%s (PID %d) was terminated by signal %d: %s" msgstr "%s (PID %d) wurde von Signal %d beendet: %s" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3509 +#: postmaster/postmaster.c:3533 #, c-format msgid "%s (PID %d) was terminated by signal %d" msgstr "%s (PID %d) wurde von Signal %d beendet" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3519 +#: postmaster/postmaster.c:3543 #, c-format msgid "%s (PID %d) exited with unrecognized status %d" msgstr "%s (PID %d) beendete mit unbekanntem Status %d" -#: postmaster/postmaster.c:3706 +#: postmaster/postmaster.c:3730 #, c-format msgid "abnormal database system shutdown" msgstr "abnormales Herunterfahren des Datenbanksystems" -#: postmaster/postmaster.c:3746 +#: postmaster/postmaster.c:3770 #, c-format msgid "all server processes terminated; reinitializing" msgstr "alle Serverprozesse beendet; initialisiere neu" -#: postmaster/postmaster.c:3958 +#: postmaster/postmaster.c:3982 #, c-format msgid "could not fork new process for connection: %m" msgstr "konnte neuen Prozess für Verbindung nicht starten (fork-Fehler): %m" -#: postmaster/postmaster.c:4000 +#: postmaster/postmaster.c:4024 msgid "could not fork new process for connection: " msgstr "konnte neuen Prozess für Verbindung nicht starten (fork-Fehler): " -#: postmaster/postmaster.c:4114 +#: postmaster/postmaster.c:4138 #, c-format msgid "connection received: host=%s port=%s" msgstr "Verbindung empfangen: Host=%s Port=%s" -#: postmaster/postmaster.c:4119 +#: postmaster/postmaster.c:4143 #, c-format msgid "connection received: host=%s" msgstr "Verbindung empfangen: Host=%s" -#: postmaster/postmaster.c:4402 +#: postmaster/postmaster.c:4426 #, c-format msgid "could not execute server process \"%s\": %m" msgstr "konnte Serverprozess »%s« nicht ausführen: %m" -#: postmaster/postmaster.c:4967 +#: postmaster/postmaster.c:4579 +#, c-format +msgid "giving up after too many tries to reserve shared memory" +msgstr "Aufgabe nach zu vielen Versuchen, Shared Memory zu reservieren" + +#: postmaster/postmaster.c:4580 +#, c-format +msgid "This might be caused by ASLR or antivirus software." +msgstr "Dies kann durch ASLR oder Antivirus-Software verursacht werden." + +#: postmaster/postmaster.c:4978 #, c-format msgid "database system is ready to accept read only connections" msgstr "Datenbanksystem ist bereit, um lesende Verbindungen anzunehmen" -#: postmaster/postmaster.c:5258 +#: postmaster/postmaster.c:5267 #, c-format msgid "could not fork startup process: %m" msgstr "konnte Startprozess nicht starten (fork-Fehler): %m" -#: postmaster/postmaster.c:5262 +#: postmaster/postmaster.c:5271 #, c-format msgid "could not fork background writer process: %m" msgstr "konnte Background-Writer-Prozess nicht starten (fork-Fehler): %m" -#: postmaster/postmaster.c:5266 +#: postmaster/postmaster.c:5275 #, c-format msgid "could not fork checkpointer process: %m" msgstr "konnte Checkpointer-Prozess nicht starten (fork-Fehler): %m" -#: postmaster/postmaster.c:5270 +#: postmaster/postmaster.c:5279 #, c-format msgid "could not fork WAL writer process: %m" msgstr "konnte WAL-Writer-Prozess nicht starten (fork-Fehler): %m" -#: postmaster/postmaster.c:5274 +#: postmaster/postmaster.c:5283 #, c-format msgid "could not fork WAL receiver process: %m" msgstr "konnte WAL-Receiver-Prozess nicht starten (fork-Fehler): %m" -#: postmaster/postmaster.c:5278 +#: postmaster/postmaster.c:5287 #, c-format msgid "could not fork process: %m" msgstr "konnte Prozess nicht starten (fork-Fehler): %m" -#: postmaster/postmaster.c:5440 postmaster/postmaster.c:5463 +#: postmaster/postmaster.c:5467 postmaster/postmaster.c:5490 #, c-format msgid "database connection requirement not indicated during registration" msgstr "die Notwendigkeit, Datenbankverbindungen zu erzeugen, wurde bei der Registrierung nicht angezeigt" -#: postmaster/postmaster.c:5447 postmaster/postmaster.c:5470 +#: postmaster/postmaster.c:5474 postmaster/postmaster.c:5497 #, c-format msgid "invalid processing mode in background worker" msgstr "ungültiger Verarbeitungsmodus in Background-Worker" -#: postmaster/postmaster.c:5522 +#: postmaster/postmaster.c:5569 #, c-format msgid "starting background worker process \"%s\"" msgstr "starte Background-Worker-Prozess »%s«" -#: postmaster/postmaster.c:5533 +#: postmaster/postmaster.c:5581 #, c-format msgid "could not fork worker process: %m" msgstr "konnte Worker-Prozess nicht starten (fork-Fehler): %m" -#: postmaster/postmaster.c:5921 +#: postmaster/postmaster.c:5998 #, c-format msgid "could not duplicate socket %d for use in backend: error code %d" msgstr "konnte Socket %d nicht für Verwendung in Backend duplizieren: Fehlercode %d" -#: postmaster/postmaster.c:5953 +#: postmaster/postmaster.c:6030 #, c-format msgid "could not create inherited socket: error code %d\n" msgstr "konnte geerbtes Socket nicht erzeugen: Fehlercode %d\n" -#: postmaster/postmaster.c:5982 +#: postmaster/postmaster.c:6059 #, c-format msgid "could not open backend variables file \"%s\": %s\n" msgstr "konnte Servervariablendatei »%s« nicht öffnen: %s\n" -#: postmaster/postmaster.c:5989 +#: postmaster/postmaster.c:6066 #, c-format msgid "could not read from backend variables file \"%s\": %s\n" msgstr "konnte nicht aus Servervariablendatei »%s« lesen: %s\n" -#: postmaster/postmaster.c:5998 +#: postmaster/postmaster.c:6075 #, c-format msgid "could not remove file \"%s\": %s\n" msgstr "konnte Datei »%s« nicht löschen: %s\n" -#: postmaster/postmaster.c:6015 +#: postmaster/postmaster.c:6092 #, c-format msgid "could not map view of backend variables: error code %lu\n" msgstr "konnte Sicht der Backend-Variablen nicht mappen: Fehlercode %lu\n" -#: postmaster/postmaster.c:6024 +#: postmaster/postmaster.c:6101 #, c-format msgid "could not unmap view of backend variables: error code %lu\n" msgstr "konnte Sicht der Backend-Variablen nicht unmappen: Fehlercode %lu\n" -#: postmaster/postmaster.c:6031 +#: postmaster/postmaster.c:6108 #, c-format msgid "could not close handle to backend parameter variables: error code %lu\n" msgstr "konnte Handle für Backend-Parametervariablen nicht schließen: Fehlercode %lu\n" -#: postmaster/postmaster.c:6192 +#: postmaster/postmaster.c:6269 #, c-format msgid "could not read exit code for process\n" msgstr "konnte Exitcode des Prozesses nicht lesen\n" -#: postmaster/postmaster.c:6197 +#: postmaster/postmaster.c:6274 #, c-format msgid "could not post child completion status\n" msgstr "konnte Child-Completion-Status nicht versenden\n" @@ -15150,61 +15010,61 @@ msgstr "Zeichenkette in Anführungszeichen nicht abgeschlossen" msgid "syntax error: unexpected character \"%s\"" msgstr "Syntaxfehler: unerwartetes Zeichen »%s«" -#: replication/basebackup.c:230 +#: replication/basebackup.c:232 #, c-format msgid "could not stat control file \"%s\": %m" msgstr "konnte »stat« für Kontrolldatei »%s« nicht ausführen: %m" -#: replication/basebackup.c:339 +#: replication/basebackup.c:341 #, c-format msgid "could not find any WAL files" msgstr "konnte keine WAL-Dateien finden" -#: replication/basebackup.c:352 replication/basebackup.c:366 -#: replication/basebackup.c:375 +#: replication/basebackup.c:354 replication/basebackup.c:368 +#: replication/basebackup.c:377 #, c-format msgid "could not find WAL file \"%s\"" msgstr "konnte WAL-Datei »%s« nicht finden" -#: replication/basebackup.c:414 replication/basebackup.c:440 +#: replication/basebackup.c:416 replication/basebackup.c:442 #, c-format msgid "unexpected WAL file size \"%s\"" msgstr "unerwartete WAL-Dateigröße »%s«" -#: replication/basebackup.c:426 replication/basebackup.c:1172 +#: replication/basebackup.c:428 replication/basebackup.c:1160 #, c-format msgid "base backup could not send data, aborting backup" msgstr "Basissicherung konnte keine Daten senden, Sicherung abgebrochen" -#: replication/basebackup.c:528 replication/basebackup.c:537 -#: replication/basebackup.c:546 replication/basebackup.c:555 -#: replication/basebackup.c:564 replication/basebackup.c:575 -#: replication/basebackup.c:592 +#: replication/basebackup.c:530 replication/basebackup.c:539 +#: replication/basebackup.c:548 replication/basebackup.c:557 +#: replication/basebackup.c:566 replication/basebackup.c:577 +#: replication/basebackup.c:594 #, c-format msgid "duplicate option \"%s\"" msgstr "doppelte Option »%s«" -#: replication/basebackup.c:581 utils/misc/guc.c:5672 +#: replication/basebackup.c:583 utils/misc/guc.c:5670 #, c-format msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)" msgstr "%d ist außerhalb des gültigen Bereichs für Parameter »%s« (%d ... %d)" -#: replication/basebackup.c:855 replication/basebackup.c:957 +#: replication/basebackup.c:857 replication/basebackup.c:959 #, c-format msgid "could not stat file or directory \"%s\": %m" msgstr "konnte »stat« für Datei oder Verzeichnis »%s« nicht ausführen: %m" -#: replication/basebackup.c:1124 +#: replication/basebackup.c:1112 #, c-format msgid "skipping special file \"%s\"" msgstr "überspringe besondere Datei »%s«" -#: replication/basebackup.c:1235 +#: replication/basebackup.c:1223 #, c-format msgid "file name too long for tar format: \"%s\"" msgstr "Dateiname zu lang für Tar-Format: »%s«" -#: replication/basebackup.c:1240 +#: replication/basebackup.c:1228 #, c-format msgid "symbolic link target too long for tar format: file name \"%s\", target \"%s\"" msgstr "Ziel der symbolischen Verknüpfung zu lang für Tar-Format: Dateiname »%s«, Ziel »%s«" @@ -15286,19 +15146,19 @@ msgid "invalid socket: %s" msgstr "ungültiges Socket: %s" #: replication/libpqwalreceiver/libpqwalreceiver.c:426 -#: storage/ipc/latch.c:1277 +#: storage/ipc/latch.c:1343 #, c-format msgid "select() failed: %m" msgstr "select() fehlgeschlagen: %m" -#: replication/libpqwalreceiver/libpqwalreceiver.c:549 -#: replication/libpqwalreceiver/libpqwalreceiver.c:576 +#: replication/libpqwalreceiver/libpqwalreceiver.c:555 #: replication/libpqwalreceiver/libpqwalreceiver.c:582 +#: replication/libpqwalreceiver/libpqwalreceiver.c:588 #, c-format msgid "could not receive data from WAL stream: %s" msgstr "konnte keine Daten vom WAL-Stream empfangen: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:601 +#: replication/libpqwalreceiver/libpqwalreceiver.c:607 #, c-format msgid "could not send data to WAL stream: %s" msgstr "konnte keine Daten an den WAL-Stream senden: %s" @@ -15318,37 +15178,37 @@ msgstr "logische Dekodierung benötigt eine Datenbankverbindung" msgid "logical decoding cannot be used while in recovery" msgstr "logische Dekodierung kann nicht während der Wiederherstellung verwendet werden" -#: replication/logical/logical.c:236 replication/logical/logical.c:348 +#: replication/logical/logical.c:239 replication/logical/logical.c:360 #, c-format msgid "cannot use physical replication slot for logical decoding" msgstr "physischer Replikations-Slot kann nicht für logisches Dekodieren verwendet werden" -#: replication/logical/logical.c:241 replication/logical/logical.c:353 +#: replication/logical/logical.c:244 replication/logical/logical.c:365 #, c-format msgid "replication slot \"%s\" was not created in this database" msgstr "Replikations-Slot »%s« wurde nicht in dieser Datenbank erzeugt" -#: replication/logical/logical.c:248 +#: replication/logical/logical.c:251 #, c-format msgid "cannot create logical replication slot in transaction that has performed writes" msgstr "logischer Replikations-Slot kann nicht in einer Transaktion erzeugt werden, die Schreibvorgänge ausgeführt hat" -#: replication/logical/logical.c:390 +#: replication/logical/logical.c:402 #, c-format msgid "starting logical decoding for slot \"%s\"" msgstr "starte logisches Dekodieren für Slot »%s«" -#: replication/logical/logical.c:392 +#: replication/logical/logical.c:404 #, c-format msgid "streaming transactions committing after %X/%X, reading WAL from %X/%X" msgstr "Streaming beginnt bei Transaktionen, die nach %X/%X committen; lese WAL ab %X/%X" -#: replication/logical/logical.c:527 +#: replication/logical/logical.c:539 #, c-format msgid "slot \"%s\", output plugin \"%s\", in the %s callback, associated LSN %X/%X" msgstr "Slot »%s«, Ausgabe-Plugin »%s«, im Callback %s, zugehörige LSN %X/%X" -#: replication/logical/logical.c:534 +#: replication/logical/logical.c:546 #, c-format msgid "slot \"%s\", output plugin \"%s\", in the %s callback" msgstr "Slot »%s«, Ausgabe-Plugin »%s«, im Callback %s" @@ -15414,117 +15274,120 @@ msgstr "konnte keine freie Replication-Origin-OID finden" msgid "could not drop replication origin with OID %d, in use by PID %d" msgstr "konnte Replication-Origin mit OID %d nicht löschen, wird von PID %d verwendet" -#: replication/logical/origin.c:671 +#: replication/logical/origin.c:674 #, c-format msgid "replication checkpoint has wrong magic %u instead of %u" msgstr "Replikations-Checkpoint hat falsche magische Zahl %u statt %u" -#: replication/logical/origin.c:703 +#: replication/logical/origin.c:706 #, c-format msgid "could not read file \"%s\": read %d of %zu" msgstr "konnte Datei »%s« nicht lesen: %d von %zu gelesen" -#: replication/logical/origin.c:712 +#: replication/logical/origin.c:715 #, c-format msgid "could not find free replication state, increase max_replication_slots" msgstr "konnte keinen freien Replication-State finden, erhöhen Sie max_replication_slots" -#: replication/logical/origin.c:730 +#: replication/logical/origin.c:733 #, c-format msgid "replication slot checkpoint has wrong checksum %u, expected %u" msgstr "Replikations-Slot-Checkpoint hat falsche Prüfsumme %u, erwartet wurde %u" -#: replication/logical/origin.c:854 +#: replication/logical/origin.c:857 #, c-format msgid "replication origin with OID %d is already active for PID %d" msgstr "Replication-Origin mit OID %d ist bereits aktiv für PID %d" -#: replication/logical/origin.c:865 replication/logical/origin.c:1045 +#: replication/logical/origin.c:868 replication/logical/origin.c:1048 #, c-format msgid "could not find free replication state slot for replication origin with OID %u" msgstr "konnte keinen freien Replication-State-Slot für Replication-Origin mit OID %u finden" -#: replication/logical/origin.c:867 replication/logical/origin.c:1047 -#: replication/slot.c:1299 +#: replication/logical/origin.c:870 replication/logical/origin.c:1050 +#: replication/slot.c:1316 #, c-format msgid "Increase max_replication_slots and try again." msgstr "Erhöhen Sie max_replication_slots und versuchen Sie es erneut." -#: replication/logical/origin.c:1004 +#: replication/logical/origin.c:1007 #, c-format msgid "cannot setup replication origin when one is already setup" msgstr "kann Replication-Origin nicht einrichten, wenn schon einer eingerichtet ist" -#: replication/logical/origin.c:1033 +#: replication/logical/origin.c:1036 #, c-format msgid "replication identifier %d is already active for PID %d" msgstr "Replikationsidentifikator %d ist bereits aktiv für PID %d" -#: replication/logical/origin.c:1079 replication/logical/origin.c:1274 -#: replication/logical/origin.c:1294 +#: replication/logical/origin.c:1082 replication/logical/origin.c:1277 +#: replication/logical/origin.c:1297 #, c-format msgid "no replication origin is configured" msgstr "kein Replication-Origin konfiguriert" -#: replication/logical/reorderbuffer.c:2324 +#: replication/logical/reorderbuffer.c:2331 #, c-format msgid "could not write to data file for XID %u: %m" msgstr "konnte nicht in Datendatei für XID %u schreiben: %m" -#: replication/logical/reorderbuffer.c:2420 -#: replication/logical/reorderbuffer.c:2440 +#: replication/logical/reorderbuffer.c:2427 +#: replication/logical/reorderbuffer.c:2447 #, c-format msgid "could not read from reorderbuffer spill file: %m" msgstr "konnte nicht aus Reorder-Buffer-Spill-Datei lesen: %m" -#: replication/logical/reorderbuffer.c:2424 -#: replication/logical/reorderbuffer.c:2444 +#: replication/logical/reorderbuffer.c:2431 +#: replication/logical/reorderbuffer.c:2451 #, c-format msgid "could not read from reorderbuffer spill file: read %d instead of %u bytes" msgstr "konnte nicht aus Reorder-Buffer-Spill-Datei lesen: %d statt %u Bytes gelesen" -#: replication/logical/reorderbuffer.c:3100 +#: replication/logical/reorderbuffer.c:3107 #, c-format msgid "could not read from file \"%s\": read %d instead of %d bytes" msgstr "konnte nicht aus Datei »%s« lesen: %d statt %d Bytes gelesen" -#: replication/logical/snapbuild.c:598 +#: replication/logical/snapbuild.c:646 #, c-format msgid "exported logical decoding snapshot: \"%s\" with %u transaction ID" msgid_plural "exported logical decoding snapshot: \"%s\" with %u transaction IDs" msgstr[0] "logischer Dekodierungs-Snapshot exportiert: »%s« mit %u Transaktions-ID" msgstr[1] "logischer Dekodierungs-Snapshot exportiert: »%s« mit %u Transaktions-IDs" -#: replication/logical/snapbuild.c:917 replication/logical/snapbuild.c:1282 -#: replication/logical/snapbuild.c:1813 +#: replication/logical/snapbuild.c:1243 replication/logical/snapbuild.c:1333 +#: replication/logical/snapbuild.c:1808 #, c-format msgid "logical decoding found consistent point at %X/%X" msgstr "logisches Dekodieren fand konsistenten Punkt bei %X/%X" -#: replication/logical/snapbuild.c:919 -#, c-format -msgid "Transaction ID %u finished; no more running transactions." -msgstr "Transaktions-ID %u beendet; keine laufenden Transaktionen mehr." - -#: replication/logical/snapbuild.c:1284 +#: replication/logical/snapbuild.c:1245 #, c-format msgid "There are no running transactions." msgstr "Keine laufenden Transaktionen." -#: replication/logical/snapbuild.c:1346 +#: replication/logical/snapbuild.c:1286 #, c-format msgid "logical decoding found initial starting point at %X/%X" msgstr "logisches Dekodieren fand initialen Startpunkt bei %X/%X" -#: replication/logical/snapbuild.c:1348 +#: replication/logical/snapbuild.c:1288 replication/logical/snapbuild.c:1311 +#, c-format +msgid "Waiting for transactions (approximately %d) older than %u to end." +msgstr "Warten auf Abschluss der Transaktionen (ungefähr %d), die älter als %u sind." + +#: replication/logical/snapbuild.c:1309 +#, c-format +msgid "logical decoding found initial consistent point at %X/%X" +msgstr "logisches Dekodieren fand initialen konsistenten Punkt bei %X/%X" + +#: replication/logical/snapbuild.c:1335 #, c-format -msgid "%u transaction needs to finish." -msgid_plural "%u transactions need to finish." -msgstr[0] "%u Transaktion muss noch abschließen." -msgstr[1] "%u Transaktionen müssen noch abschließen." +msgid "There are no old transactions anymore." +msgstr "Es laufen keine alten Transaktionen mehr." #: replication/logical/snapbuild.c:1687 replication/logical/snapbuild.c:1713 -#: replication/logical/snapbuild.c:1727 replication/logical/snapbuild.c:1741 +#: replication/logical/snapbuild.c:1728 replication/logical/snapbuild.c:1742 #, c-format msgid "could not read file \"%s\", read %d of %d: %m" msgstr "konnte Datei »%s« nicht lesen, %d von %d gelesen: %m" @@ -15539,17 +15402,17 @@ msgstr "Scanbuild-State-Datei »%s« hat falsche magische Zahl %u statt %u" msgid "snapbuild state file \"%s\" has unsupported version: %u instead of %u" msgstr "Snapbuild-State-Datei »%s« hat nicht unterstützte Version: %u statt %u" -#: replication/logical/snapbuild.c:1754 +#: replication/logical/snapbuild.c:1755 #, c-format msgid "checksum mismatch for snapbuild state file \"%s\": is %u, should be %u" msgstr "Prüfsummenfehler bei Snapbuild-State-Datei »%s«: ist %u, sollte %u sein" -#: replication/logical/snapbuild.c:1815 +#: replication/logical/snapbuild.c:1810 #, c-format msgid "Logical decoding will begin using saved snapshot." msgstr "Logische Dekodierung beginnt mit gespeichertem Snapshot." -#: replication/logical/snapbuild.c:1888 +#: replication/logical/snapbuild.c:1881 #, c-format msgid "could not parse file name \"%s\"" msgstr "konnte Dateinamen »%s« nicht parsen" @@ -15599,47 +15462,47 @@ msgstr "Replikations-Slot »%s« existiert nicht" msgid "replication slot \"%s\" is active for PID %d" msgstr "Replikations-Slot »%s« ist aktiv für PID %d" -#: replication/slot.c:511 replication/slot.c:923 replication/slot.c:1260 +#: replication/slot.c:527 replication/slot.c:940 replication/slot.c:1277 #, c-format msgid "could not remove directory \"%s\"" msgstr "konnte Verzeichnis »%s« nicht löschen" -#: replication/slot.c:772 +#: replication/slot.c:789 #, c-format msgid "replication slots can only be used if max_replication_slots > 0" msgstr "Replikations-Slots können nur verwendet werden, wenn max_replication_slots > 0" -#: replication/slot.c:777 +#: replication/slot.c:794 #, c-format msgid "replication slots can only be used if wal_level >= replica" msgstr "Replikations-Slots können nur verwendet werden, wenn wal_level >= replica" -#: replication/slot.c:1192 replication/slot.c:1230 +#: replication/slot.c:1209 replication/slot.c:1247 #, c-format msgid "could not read file \"%s\", read %d of %u: %m" msgstr "konnte Datei »%s« nicht lesen, %d von %u gelesen: %m" -#: replication/slot.c:1201 +#: replication/slot.c:1218 #, c-format msgid "replication slot file \"%s\" has wrong magic number: %u instead of %u" msgstr "Replikations-Slot-Datei »%s« hat falsche magische Zahl: %u statt %u" -#: replication/slot.c:1208 +#: replication/slot.c:1225 #, c-format msgid "replication slot file \"%s\" has unsupported version %u" msgstr "Replikations-Slot-Datei »%s« hat nicht unterstützte Version %u" -#: replication/slot.c:1215 +#: replication/slot.c:1232 #, c-format msgid "replication slot file \"%s\" has corrupted length %u" msgstr "Replikations-Slot-Datei »%s« hat falsche Länge %u" -#: replication/slot.c:1245 +#: replication/slot.c:1262 #, c-format msgid "checksum mismatch for replication slot file \"%s\": is %u, should be %u" msgstr "Prüfsummenfehler bei Replikations-Slot-Datei »%s«: ist %u, sollte %u sein" -#: replication/slot.c:1298 +#: replication/slot.c:1315 #, c-format msgid "too many replication slots active before shutdown" msgstr "zu viele aktive Replikations-Slots vor dem Herunterfahren" @@ -15659,21 +15522,26 @@ msgstr "Die Transaktion wurde lokal bereits committet, aber möglicherweise noch msgid "canceling wait for synchronous replication due to user request" msgstr "storniere Warten auf synchrone Replikation wegen Benutzeraufforderung" -#: replication/syncrep.c:368 +#: replication/syncrep.c:371 #, c-format msgid "standby \"%s\" now has synchronous standby priority %u" msgstr "Standby »%s« hat jetzt synchrone Standby-Priorität %u" -#: replication/syncrep.c:428 +#: replication/syncrep.c:431 #, c-format msgid "standby \"%s\" is now a synchronous standby with priority %u" msgstr "Standby »%s« ist jetzt ein synchroner Standby mit Priorität %u" -#: replication/syncrep.c:921 +#: replication/syncrep.c:931 #, c-format msgid "synchronous_standby_names parser failed" msgstr "Parser für synchronous_standby_names fehlgeschlagen" +#: replication/syncrep.c:937 +#, c-format +msgid "number of synchronous standbys (%d) must be greater than zero" +msgstr "Anzahl synchroner Standbys (%d) muss größer als null sein" + #: replication/walreceiver.c:173 #, c-format msgid "terminating walreceiver process due to administrator command" @@ -15734,72 +15602,77 @@ msgstr "hole Zeitleisten-History-Datei für Zeitleiste %u vom Primärserver" msgid "could not write to log segment %s at offset %u, length %lu: %m" msgstr "konnte nicht in Logsegment %s bei Position %u, Länge %lu schreiben: %m" -#: replication/walsender.c:485 +#: replication/walsender.c:490 #, c-format msgid "could not seek to beginning of file \"%s\": %m" msgstr "konnte Positionszeiger nicht den Anfang der Datei »%s« setzen: %m" -#: replication/walsender.c:536 +#: replication/walsender.c:541 #, c-format msgid "cannot use a logical replication slot for physical replication" msgstr "logischer Replikations-Slot kann nicht für physische Replikation verwendet werden" -#: replication/walsender.c:599 +#: replication/walsender.c:604 #, c-format msgid "requested starting point %X/%X on timeline %u is not in this server's history" msgstr "angeforderter Startpunkt %X/%X auf Zeitleiste %u ist nicht in der History dieses Servers" -#: replication/walsender.c:603 +#: replication/walsender.c:608 #, c-format msgid "This server's history forked from timeline %u at %X/%X." msgstr "Die History dieses Servers zweigte von Zeitleiste %u bei %X/%X ab." -#: replication/walsender.c:648 +#: replication/walsender.c:653 #, c-format msgid "requested starting point %X/%X is ahead of the WAL flush position of this server %X/%X" msgstr "angeforderter Startpunkt %X/%X ist vor der WAL-Flush-Position dieses Servers %X/%X" -#: replication/walsender.c:974 +#: replication/walsender.c:977 #, c-format msgid "terminating walsender process after promotion" msgstr "WAL-Sender-Prozess wird nach Beförderung abgebrochen" -#: replication/walsender.c:1300 +#: replication/walsender.c:1333 +#, c-format +msgid "cannot execute new commands while WAL sender is in stopping mode" +msgstr "während der WAL-Sender im Stoppmodus ist können keine neuen Befehle ausgeführt werden" + +#: replication/walsender.c:1341 #, c-format msgid "received replication command: %s" msgstr "Replikationsbefehl empfangen: %s" -#: replication/walsender.c:1391 replication/walsender.c:1407 +#: replication/walsender.c:1440 replication/walsender.c:1456 #, c-format msgid "unexpected EOF on standby connection" msgstr "unerwartetes EOF auf Standby-Verbindung" -#: replication/walsender.c:1421 +#: replication/walsender.c:1470 #, c-format msgid "unexpected standby message type \"%c\", after receiving CopyDone" msgstr "unerwarteter Standby-Message-Typ »%c«, nach Empfang von CopyDone" -#: replication/walsender.c:1459 +#: replication/walsender.c:1508 #, c-format msgid "invalid standby message type \"%c\"" msgstr "ungültiger Standby-Message-Typ »%c«" -#: replication/walsender.c:1500 +#: replication/walsender.c:1549 #, c-format msgid "unexpected message type \"%c\"" msgstr "unerwarteter Message-Typ »%c«" -#: replication/walsender.c:1784 +#: replication/walsender.c:1833 #, c-format msgid "terminating walsender process due to replication timeout" msgstr "WAL-Sender-Prozess wird abgebrochen wegen Zeitüberschreitung bei der Replikation" -#: replication/walsender.c:1877 +#: replication/walsender.c:1919 #, c-format msgid "standby \"%s\" has now caught up with primary" msgstr "Standby-Server »%s« hat jetzt den Primärserver eingeholt" -#: replication/walsender.c:1980 +#: replication/walsender.c:2022 #, c-format msgid "number of requested standby connections exceeds max_wal_senders (currently %d)" msgstr "Anzahl angeforderter Standby-Verbindungen überschreitet max_wal_senders (aktuell %d)" @@ -16010,152 +15883,152 @@ msgstr "WITH-Anfragename »%s« erscheint sowohl in der Regelaktion als auch in msgid "cannot have RETURNING lists in multiple rules" msgstr "RETURNING-Listen können nicht in mehreren Regeln auftreten" -#: rewrite/rewriteHandler.c:928 rewrite/rewriteHandler.c:946 +#: rewrite/rewriteHandler.c:949 rewrite/rewriteHandler.c:967 #, c-format msgid "multiple assignments to same column \"%s\"" msgstr "mehrere Zuweisungen zur selben Spalte »%s«" -#: rewrite/rewriteHandler.c:1721 rewrite/rewriteHandler.c:3331 +#: rewrite/rewriteHandler.c:1752 rewrite/rewriteHandler.c:3362 #, c-format msgid "infinite recursion detected in rules for relation \"%s\"" msgstr "unendliche Rekursion entdeckt in Regeln für Relation »%s«" -#: rewrite/rewriteHandler.c:1806 +#: rewrite/rewriteHandler.c:1837 #, c-format msgid "infinite recursion detected in policy for relation \"%s\"" msgstr "unendliche Rekursion entdeckt in Policys für Relation »%s«" -#: rewrite/rewriteHandler.c:2123 +#: rewrite/rewriteHandler.c:2154 msgid "Junk view columns are not updatable." msgstr "Junk-Sichtspalten sind nicht aktualisierbar." -#: rewrite/rewriteHandler.c:2128 +#: rewrite/rewriteHandler.c:2159 msgid "View columns that are not columns of their base relation are not updatable." msgstr "Sichtspalten, die nicht Spalten ihrer Basisrelation sind, sind nicht aktualisierbar." -#: rewrite/rewriteHandler.c:2131 +#: rewrite/rewriteHandler.c:2162 msgid "View columns that refer to system columns are not updatable." msgstr "Sichtspalten, die auf Systemspalten verweisen, sind nicht aktualisierbar." -#: rewrite/rewriteHandler.c:2134 +#: rewrite/rewriteHandler.c:2165 msgid "View columns that return whole-row references are not updatable." msgstr "Sichtspalten, die Verweise auf ganze Zeilen zurückgeben, sind nicht aktualisierbar." -#: rewrite/rewriteHandler.c:2192 +#: rewrite/rewriteHandler.c:2223 msgid "Views containing DISTINCT are not automatically updatable." msgstr "Sichten, die DISTINCT enthalten, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2195 +#: rewrite/rewriteHandler.c:2226 msgid "Views containing GROUP BY are not automatically updatable." msgstr "Sichten, die GROUP BY enthalten, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2198 +#: rewrite/rewriteHandler.c:2229 msgid "Views containing HAVING are not automatically updatable." msgstr "Sichten, die HAVING enthalten, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2201 +#: rewrite/rewriteHandler.c:2232 msgid "Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable." msgstr "Sichten, die UNION, INTERSECT oder EXCEPT enthalten, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2204 +#: rewrite/rewriteHandler.c:2235 msgid "Views containing WITH are not automatically updatable." msgstr "Sichten, die WITH enthalten, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2207 +#: rewrite/rewriteHandler.c:2238 msgid "Views containing LIMIT or OFFSET are not automatically updatable." msgstr "Sichten, die LIMIT oder OFFSET enthalten, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2219 +#: rewrite/rewriteHandler.c:2250 msgid "Views that return aggregate functions are not automatically updatable." msgstr "Sichten, die Aggregatfunktionen zurückgeben, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2222 +#: rewrite/rewriteHandler.c:2253 msgid "Views that return window functions are not automatically updatable." msgstr "Sichten, die Fensterfunktionen zurückgeben, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2225 +#: rewrite/rewriteHandler.c:2256 msgid "Views that return set-returning functions are not automatically updatable." msgstr "Sichten, die Funktionen mit Ergebnismenge zurückgeben, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2232 rewrite/rewriteHandler.c:2236 -#: rewrite/rewriteHandler.c:2243 +#: rewrite/rewriteHandler.c:2263 rewrite/rewriteHandler.c:2267 +#: rewrite/rewriteHandler.c:2274 msgid "Views that do not select from a single table or view are not automatically updatable." msgstr "Sichten, die nicht aus einer einzigen Tabelle oder Sicht lesen, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2246 +#: rewrite/rewriteHandler.c:2277 msgid "Views containing TABLESAMPLE are not automatically updatable." msgstr "Sichten, die TABLESAMPLE enthalten, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2270 +#: rewrite/rewriteHandler.c:2301 msgid "Views that have no updatable columns are not automatically updatable." msgstr "Sichten, die keine aktualisierbaren Spalten haben, sind nicht automatisch aktualisierbar." -#: rewrite/rewriteHandler.c:2724 +#: rewrite/rewriteHandler.c:2755 #, c-format msgid "cannot insert into column \"%s\" of view \"%s\"" msgstr "kann nicht in Spalte »%s« von Sicht »%s« einfügen" -#: rewrite/rewriteHandler.c:2732 +#: rewrite/rewriteHandler.c:2763 #, c-format msgid "cannot update column \"%s\" of view \"%s\"" msgstr "kann Spalte »%s« von Sicht »%s« nicht aktualisieren" -#: rewrite/rewriteHandler.c:3130 +#: rewrite/rewriteHandler.c:3161 #, c-format msgid "DO INSTEAD NOTHING rules are not supported for data-modifying statements in WITH" msgstr "DO INSTEAD NOTHING-Regeln werden für datenmodifizierende Anweisungen in WITH nicht unterstützt" -#: rewrite/rewriteHandler.c:3144 +#: rewrite/rewriteHandler.c:3175 #, c-format msgid "conditional DO INSTEAD rules are not supported for data-modifying statements in WITH" msgstr "Do INSTEAD-Regeln mit Bedingung werden für datenmodifizierende Anweisungen in WITH nicht unterstützt" -#: rewrite/rewriteHandler.c:3148 +#: rewrite/rewriteHandler.c:3179 #, c-format msgid "DO ALSO rules are not supported for data-modifying statements in WITH" msgstr "DO ALSO-Regeln werden für datenmodifizierende Anweisungen in WITH nicht unterstützt" -#: rewrite/rewriteHandler.c:3153 +#: rewrite/rewriteHandler.c:3184 #, c-format msgid "multi-statement DO INSTEAD rules are not supported for data-modifying statements in WITH" msgstr "DO INSTEAD-Regeln mit mehreren Anweisungen werden für datenmodifizierende Anweisungen in WITH nicht unterstützt" -#: rewrite/rewriteHandler.c:3368 +#: rewrite/rewriteHandler.c:3399 #, c-format msgid "cannot perform INSERT RETURNING on relation \"%s\"" msgstr "INSERT RETURNING kann in Relation »%s« nicht ausgeführt werden" -#: rewrite/rewriteHandler.c:3370 +#: rewrite/rewriteHandler.c:3401 #, c-format msgid "You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." msgstr "Sie benötigen eine ON INSERT DO INSTEAD Regel ohne Bedingung, mit RETURNING-Klausel." -#: rewrite/rewriteHandler.c:3375 +#: rewrite/rewriteHandler.c:3406 #, c-format msgid "cannot perform UPDATE RETURNING on relation \"%s\"" msgstr "UPDATE RETURNING kann in Relation »%s« nicht ausgeführt werden" -#: rewrite/rewriteHandler.c:3377 +#: rewrite/rewriteHandler.c:3408 #, c-format msgid "You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause." msgstr "Sie benötigen eine ON UPDATE DO INSTEAD Regel ohne Bedingung, mit RETURNING-Klausel." -#: rewrite/rewriteHandler.c:3382 +#: rewrite/rewriteHandler.c:3413 #, c-format msgid "cannot perform DELETE RETURNING on relation \"%s\"" msgstr "DELETE RETURNING kann in Relation »%s« nicht ausgeführt werden" -#: rewrite/rewriteHandler.c:3384 +#: rewrite/rewriteHandler.c:3415 #, c-format msgid "You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause." msgstr "Sie benötigen eine ON DELETE DO INSTEAD Regel ohne Bedingung, mit RETURNING-Klausel." -#: rewrite/rewriteHandler.c:3402 +#: rewrite/rewriteHandler.c:3433 #, c-format msgid "INSERT with ON CONFLICT clause cannot be used with table that has INSERT or UPDATE rules" msgstr "INSERT mit ON-CONFLICT-Klausel kann nicht mit Tabelle verwendet werden, die INSERT- oder UPDATE-Regeln hat" -#: rewrite/rewriteHandler.c:3459 +#: rewrite/rewriteHandler.c:3490 #, c-format msgid "WITH cannot be used in a query that is rewritten by rules into multiple queries" msgstr "WITH kann nicht in einer Anfrage verwendet werden, die durch Regeln in mehrere Anfragen umgeschrieben wird" @@ -16217,7 +16090,7 @@ msgid "invalid Unicode escape character" msgstr "ungültiges Unicode-Escape-Zeichen" #: scan.l:605 scan.l:613 scan.l:621 scan.l:622 scan.l:623 scan.l:1337 -#: scan.l:1364 scan.l:1368 scan.l:1406 scan.l:1410 scan.l:1432 +#: scan.l:1364 scan.l:1368 scan.l:1406 scan.l:1410 scan.l:1432 scan.l:1442 msgid "invalid Unicode surrogate pair" msgstr "ungültiges Unicode-Surrogatpaar" @@ -16277,32 +16150,32 @@ msgstr "Unicode-Escape-Werte können nicht für Code-Punkt-Werte über 007F verw msgid "invalid Unicode escape value" msgstr "ungültiger Unicode-Escape-Wert" -#: scan.l:1481 +#: scan.l:1488 #, c-format msgid "nonstandard use of \\' in a string literal" msgstr "nicht standardkonforme Verwendung von \\' in Zeichenkettenkonstante" -#: scan.l:1482 +#: scan.l:1489 #, c-format msgid "Use '' to write quotes in strings, or use the escape string syntax (E'...')." msgstr "Verwenden Sie '', um Quotes in Zeichenketten zu schreiben, oder verwenden Sie die Syntax für Escape-Zeichenketten (E'...')." -#: scan.l:1491 +#: scan.l:1498 #, c-format msgid "nonstandard use of \\\\ in a string literal" msgstr "nicht standardkonforme Verwendung von \\\\ in Zeichenkettenkonstante" -#: scan.l:1492 +#: scan.l:1499 #, c-format msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'." msgstr "Verwenden Sie die Syntax für Escape-Zeichenketten für Backslashes, z.B. E'\\\\'." -#: scan.l:1506 +#: scan.l:1513 #, c-format msgid "nonstandard use of escape in a string literal" msgstr "nicht standardkonforme Verwendung von Escape in Zeichenkettenkonstante" -#: scan.l:1507 +#: scan.l:1514 #, c-format msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'." msgstr "Verwenden Sie die Syntax für Escape-Zeichenketten, z.B. E'\\r\\n'." @@ -16353,22 +16226,22 @@ msgstr "Das scheint mit fehlerhaften Kernels vorzukommen; Sie sollten eine Syste msgid "invalid page in block %u of relation %s; zeroing out page" msgstr "ungültige Seite in Block %u von Relation %s; fülle Seite mit Nullen" -#: storage/buffer/bufmgr.c:3952 +#: storage/buffer/bufmgr.c:3969 #, c-format msgid "could not write block %u of %s" msgstr "konnte Block %u von %s nicht schreiben" -#: storage/buffer/bufmgr.c:3954 +#: storage/buffer/bufmgr.c:3971 #, c-format msgid "Multiple failures --- write error might be permanent." msgstr "Mehrere Fehlschläge --- Schreibfehler ist möglicherweise dauerhaft." -#: storage/buffer/bufmgr.c:3975 storage/buffer/bufmgr.c:3994 +#: storage/buffer/bufmgr.c:3992 storage/buffer/bufmgr.c:4011 #, c-format msgid "writing block %u of relation %s" msgstr "schreibe Block %u von Relation %s" -#: storage/buffer/bufmgr.c:4295 +#: storage/buffer/bufmgr.c:4312 #, c-format msgid "snapshot too old" msgstr "Snapshot zu alt" @@ -16383,73 +16256,73 @@ msgstr "kein leerer lokaler Puffer verfügbar" msgid "cannot access temporary tables during a parallel operation" msgstr "während einer parallelen Operation kann nicht auf temporäre Tabellen zugegriffen werden" -#: storage/file/fd.c:436 storage/file/fd.c:508 storage/file/fd.c:544 +#: storage/file/fd.c:443 storage/file/fd.c:515 storage/file/fd.c:551 #, c-format msgid "could not flush dirty data: %m" msgstr "konnte schmutzige Daten nicht flushen: %m" -#: storage/file/fd.c:466 +#: storage/file/fd.c:473 #, c-format msgid "could not determine dirty data size: %m" msgstr "konnte Größe der schmutzigen Daten nicht bestimmen: %m" -#: storage/file/fd.c:518 +#: storage/file/fd.c:525 #, c-format msgid "could not munmap() while flushing data: %m" msgstr "munmap() fehlgeschlagen beim Flushen von Daten: %m" -#: storage/file/fd.c:682 +#: storage/file/fd.c:689 #, c-format msgid "could not link file \"%s\" to \"%s\": %m" msgstr "konnte Datei »%s« nicht nach »%s« linken: %m" -#: storage/file/fd.c:776 +#: storage/file/fd.c:783 #, c-format msgid "getrlimit failed: %m" msgstr "getrlimit fehlgeschlagen: %m" -#: storage/file/fd.c:866 +#: storage/file/fd.c:873 #, c-format msgid "insufficient file descriptors available to start server process" msgstr "nicht genug Dateideskriptoren verfügbar, um Serverprozess zu starten" -#: storage/file/fd.c:867 +#: storage/file/fd.c:874 #, c-format msgid "System allows %d, we need at least %d." msgstr "System erlaubt %d, wir benötigen mindestens %d." -#: storage/file/fd.c:908 storage/file/fd.c:2001 storage/file/fd.c:2094 -#: storage/file/fd.c:2242 +#: storage/file/fd.c:915 storage/file/fd.c:2078 storage/file/fd.c:2171 +#: storage/file/fd.c:2319 #, c-format msgid "out of file descriptors: %m; release and retry" msgstr "keine Dateideskriptoren mehr: %m; freigeben und nochmal versuchen" -#: storage/file/fd.c:1482 +#: storage/file/fd.c:1520 #, c-format msgid "temporary file: path \"%s\", size %lu" msgstr "temporäre Datei: Pfad »%s«, Größe %lu" -#: storage/file/fd.c:1656 +#: storage/file/fd.c:1717 #, c-format msgid "temporary file size exceeds temp_file_limit (%dkB)" msgstr "Größe der temporären Datei überschreitet temp_file_limit (%dkB)" -#: storage/file/fd.c:1977 storage/file/fd.c:2027 +#: storage/file/fd.c:2054 storage/file/fd.c:2104 #, c-format msgid "exceeded maxAllocatedDescs (%d) while trying to open file \"%s\"" msgstr "maxAllocatedDescs (%d) überschritten beim Versuch, die Datei »%s« zu öffnen" -#: storage/file/fd.c:2067 +#: storage/file/fd.c:2144 #, c-format msgid "exceeded maxAllocatedDescs (%d) while trying to execute command \"%s\"" msgstr "maxAllocatedDescs (%d) überschritten beim Versuch, den Befehl »%s« auszuführen" -#: storage/file/fd.c:2218 +#: storage/file/fd.c:2295 #, c-format msgid "exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\"" msgstr "maxAllocatedDescs (%d) überschritten beim Versuch, das Verzeichnis »%s« zu öffnen" -#: storage/file/fd.c:2304 +#: storage/file/fd.c:2381 #, c-format msgid "could not read directory \"%s\": %m" msgstr "konnte Verzeichnis »%s« nicht lesen: %m" @@ -16531,17 +16404,17 @@ msgstr "konnte Shared-Memory-Segment »%s« nicht erzeugen: %m" msgid "could not duplicate handle for \"%s\": %m" msgstr "konnte Handle für »%s« nicht duplizieren: %m" -#: storage/ipc/latch.c:775 +#: storage/ipc/latch.c:841 #, c-format msgid "epoll_ctl() failed: %m" msgstr "epoll_ctl() fehlgeschlagen: %m" -#: storage/ipc/latch.c:999 +#: storage/ipc/latch.c:1065 #, c-format msgid "epoll_wait() failed: %m" msgstr "epoll_wait() fehlgeschlagen: %m" -#: storage/ipc/latch.c:1119 +#: storage/ipc/latch.c:1185 #, c-format msgid "poll() failed: %m" msgstr "poll() fehlgeschlagen: %m" @@ -16549,9 +16422,9 @@ msgstr "poll() fehlgeschlagen: %m" #: storage/ipc/shm_toc.c:108 storage/ipc/shm_toc.c:189 storage/ipc/shmem.c:212 #: storage/lmgr/lock.c:883 storage/lmgr/lock.c:917 storage/lmgr/lock.c:2682 #: storage/lmgr/lock.c:4007 storage/lmgr/lock.c:4072 storage/lmgr/lock.c:4364 -#: storage/lmgr/predicate.c:2329 storage/lmgr/predicate.c:2344 -#: storage/lmgr/predicate.c:3736 storage/lmgr/predicate.c:4879 -#: storage/lmgr/proc.c:203 utils/hash/dynahash.c:1043 +#: storage/lmgr/predicate.c:2344 storage/lmgr/predicate.c:2359 +#: storage/lmgr/predicate.c:3751 storage/lmgr/predicate.c:4894 +#: storage/lmgr/proc.c:203 utils/hash/dynahash.c:1042 #, c-format msgid "out of shared memory" msgstr "Shared Memory aufgebraucht" @@ -16576,12 +16449,12 @@ msgstr "ShmemIndex-Eintraggröße ist falsch für Datenstruktur »%s«: erwartet msgid "requested shared memory size overflows size_t" msgstr "angeforderte Shared-Memory-Größe übersteigt Kapazität von size_t" -#: storage/ipc/standby.c:528 tcop/postgres.c:2976 +#: storage/ipc/standby.c:530 tcop/postgres.c:2974 #, c-format msgid "canceling statement due to conflict with recovery" msgstr "storniere Anfrage wegen Konflikt mit der Wiederherstellung" -#: storage/ipc/standby.c:529 tcop/postgres.c:2263 +#: storage/ipc/standby.c:531 tcop/postgres.c:2255 #, c-format msgid "User transaction caused buffer deadlock with recovery." msgstr "Benutzertransaktion hat Verklemmung (Deadlock) mit Wiederherstellung verursacht." @@ -16742,127 +16615,127 @@ msgstr "Sie müssen möglicherweise max_locks_per_transaction erhöhen." msgid "cannot PREPARE while holding both session-level and transaction-level locks on the same object" msgstr "PREPARE kann nicht ausgeführt werden, wenn für das selbe Objekt Sperren auf Sitzungsebene und auf Transaktionsebene gehalten werden" -#: storage/lmgr/predicate.c:675 +#: storage/lmgr/predicate.c:677 #, c-format msgid "not enough elements in RWConflictPool to record a read/write conflict" msgstr "nicht genügend Elemente in RWConflictPool, um einen Lese-/Schreibkonflikt aufzuzeichnen" -#: storage/lmgr/predicate.c:676 storage/lmgr/predicate.c:704 +#: storage/lmgr/predicate.c:678 storage/lmgr/predicate.c:706 #, c-format msgid "You might need to run fewer transactions at a time or increase max_connections." msgstr "Sie müssten entweder weniger Transaktionen auf einmal ausführen oder max_connections erhöhen." -#: storage/lmgr/predicate.c:703 +#: storage/lmgr/predicate.c:705 #, c-format msgid "not enough elements in RWConflictPool to record a potential read/write conflict" msgstr "nicht genügend Elemente in RWConflictPool, um einen möglichen Lese-/Schreibkonflikt aufzuzeichnen" -#: storage/lmgr/predicate.c:909 +#: storage/lmgr/predicate.c:912 #, c-format msgid "memory for serializable conflict tracking is nearly exhausted" msgstr "Speicher für die Verfolgung von Serialisierungskonflikten ist fast aufgebraucht" -#: storage/lmgr/predicate.c:910 +#: storage/lmgr/predicate.c:913 #, c-format msgid "There might be an idle transaction or a forgotten prepared transaction causing this." msgstr "Möglicherweise gibt es eine stillliegende Transaktion oder eine vergessene vorbereitete Transaktion, die der Grund dafür ist." -#: storage/lmgr/predicate.c:1190 storage/lmgr/predicate.c:1261 +#: storage/lmgr/predicate.c:1207 storage/lmgr/predicate.c:1279 #, c-format msgid "not enough shared memory for elements of data structure \"%s\" (%zu bytes requested)" msgstr "nicht genug Shared-Memory für Elemente der Datenstruktur »%s« (%zu Bytes angefordert)" -#: storage/lmgr/predicate.c:1549 +#: storage/lmgr/predicate.c:1564 #, c-format msgid "deferrable snapshot was unsafe; trying a new one" msgstr "aufschiebbarer Snapshot war unsicher; versuche einen neuen" -#: storage/lmgr/predicate.c:1588 +#: storage/lmgr/predicate.c:1603 #, c-format msgid "\"default_transaction_isolation\" is set to \"serializable\"." msgstr "»default_transaction_isolation« ist auf »serializable« gesetzt." -#: storage/lmgr/predicate.c:1589 +#: storage/lmgr/predicate.c:1604 #, c-format msgid "You can use \"SET default_transaction_isolation = 'repeatable read'\" to change the default." msgstr "Mit »SET default_transaction_isolation = 'repeatable read'« können Sie die Voreinstellung ändern." -#: storage/lmgr/predicate.c:1628 +#: storage/lmgr/predicate.c:1643 #, c-format msgid "a snapshot-importing transaction must not be READ ONLY DEFERRABLE" msgstr "eine Transaktion, die einen Snapshot importiert, must READ ONLY DEFERRABLE sein" -#: storage/lmgr/predicate.c:1706 utils/time/snapmgr.c:576 -#: utils/time/snapmgr.c:582 +#: storage/lmgr/predicate.c:1721 utils/time/snapmgr.c:617 +#: utils/time/snapmgr.c:623 #, c-format msgid "could not import the requested snapshot" msgstr "konnte den angeforderten Snapshot nicht importieren" -#: storage/lmgr/predicate.c:1707 utils/time/snapmgr.c:583 +#: storage/lmgr/predicate.c:1722 utils/time/snapmgr.c:624 #, c-format msgid "The source transaction %u is not running anymore." msgstr "Die Quelltransaktion %u läuft nicht mehr." -#: storage/lmgr/predicate.c:2330 storage/lmgr/predicate.c:2345 -#: storage/lmgr/predicate.c:3737 +#: storage/lmgr/predicate.c:2345 storage/lmgr/predicate.c:2360 +#: storage/lmgr/predicate.c:3752 #, c-format msgid "You might need to increase max_pred_locks_per_transaction." msgstr "Sie müssen möglicherweise max_pred_locks_per_transaction erhöhen." -#: storage/lmgr/predicate.c:3891 storage/lmgr/predicate.c:3980 -#: storage/lmgr/predicate.c:3988 storage/lmgr/predicate.c:4027 -#: storage/lmgr/predicate.c:4266 storage/lmgr/predicate.c:4603 -#: storage/lmgr/predicate.c:4615 storage/lmgr/predicate.c:4657 -#: storage/lmgr/predicate.c:4695 +#: storage/lmgr/predicate.c:3906 storage/lmgr/predicate.c:3995 +#: storage/lmgr/predicate.c:4003 storage/lmgr/predicate.c:4042 +#: storage/lmgr/predicate.c:4281 storage/lmgr/predicate.c:4618 +#: storage/lmgr/predicate.c:4630 storage/lmgr/predicate.c:4672 +#: storage/lmgr/predicate.c:4710 #, c-format msgid "could not serialize access due to read/write dependencies among transactions" msgstr "konnte Zugriff nicht serialisieren wegen Lese-/Schreib-Abhängigkeiten zwischen Transaktionen" -#: storage/lmgr/predicate.c:3893 storage/lmgr/predicate.c:3982 -#: storage/lmgr/predicate.c:3990 storage/lmgr/predicate.c:4029 -#: storage/lmgr/predicate.c:4268 storage/lmgr/predicate.c:4605 -#: storage/lmgr/predicate.c:4617 storage/lmgr/predicate.c:4659 -#: storage/lmgr/predicate.c:4697 +#: storage/lmgr/predicate.c:3908 storage/lmgr/predicate.c:3997 +#: storage/lmgr/predicate.c:4005 storage/lmgr/predicate.c:4044 +#: storage/lmgr/predicate.c:4283 storage/lmgr/predicate.c:4620 +#: storage/lmgr/predicate.c:4632 storage/lmgr/predicate.c:4674 +#: storage/lmgr/predicate.c:4712 #, c-format msgid "The transaction might succeed if retried." msgstr "Die Transaktion könnte erfolgreich sein, wenn sie erneut versucht würde." -#: storage/lmgr/proc.c:1263 +#: storage/lmgr/proc.c:1265 #, c-format msgid "Process %d waits for %s on %s." msgstr "Prozess %d wartet auf %s-Sperre auf %s." -#: storage/lmgr/proc.c:1274 +#: storage/lmgr/proc.c:1276 #, c-format msgid "sending cancel to blocking autovacuum PID %d" msgstr "sende Stornierung an blockierende Autovacuum-PID %d" -#: storage/lmgr/proc.c:1292 utils/adt/misc.c:270 +#: storage/lmgr/proc.c:1294 utils/adt/misc.c:270 #, c-format msgid "could not send signal to process %d: %m" msgstr "konnte Signal nicht an Prozess %d senden: %m" -#: storage/lmgr/proc.c:1394 +#: storage/lmgr/proc.c:1396 #, c-format msgid "process %d avoided deadlock for %s on %s by rearranging queue order after %ld.%03d ms" msgstr "Prozess %d vermied Verklemmung wegen %s-Sperre auf %s durch Umordnen der Queue nach %ld,%03d ms" -#: storage/lmgr/proc.c:1409 +#: storage/lmgr/proc.c:1411 #, c-format msgid "process %d detected deadlock while waiting for %s on %s after %ld.%03d ms" msgstr "Prozess %d hat Verklemmung festgestellt beim Warten auf %s-Sperre auf %s nach %ld,%03d ms" -#: storage/lmgr/proc.c:1418 +#: storage/lmgr/proc.c:1420 #, c-format msgid "process %d still waiting for %s on %s after %ld.%03d ms" msgstr "Prozess %d wartet immer noch auf %s-Sperre auf %s nach %ld,%03d ms" -#: storage/lmgr/proc.c:1425 +#: storage/lmgr/proc.c:1427 #, c-format msgid "process %d acquired %s on %s after %ld.%03d ms" msgstr "Prozess %d erlangte %s-Sperre auf %s nach %ld,%03d ms" -#: storage/lmgr/proc.c:1441 +#: storage/lmgr/proc.c:1443 #, c-format msgid "process %d failed to acquire %s on %s after %ld.%03d ms" msgstr "Prozess %d konnte %s-Sperre auf %s nach %ld,%03d ms nicht erlangen" @@ -16890,12 +16763,12 @@ msgstr "verfälschter Item-Zeiger: %u" msgid "corrupted item lengths: total %u, available space %u" msgstr "verfälschte Item-Längen: gesamt %u, verfügbarer Platz %u" -#: storage/page/bufpage.c:756 storage/page/bufpage.c:892 +#: storage/page/bufpage.c:756 #, c-format msgid "corrupted item pointer: offset = %u, size = %u" msgstr "verfälschter Item-Zeiger: offset = %u, size = %u" -#: storage/page/bufpage.c:997 +#: storage/page/bufpage.c:892 storage/page/bufpage.c:997 #, c-format msgid "corrupted item pointer: offset = %u, length = %u" msgstr "verfälschter Item-Zeiger: offset = %u, length = %u" @@ -16981,314 +16854,314 @@ msgstr "konnte Datei »%s« nicht öffnen (Zielblock %u): vorhergehendes Segment msgid "could not open file \"%s\" (target block %u): %m" msgstr "konnte Datei »%s« nicht öffnen (Zielblock %u): %m" -#: tcop/fastpath.c:111 tcop/fastpath.c:475 tcop/fastpath.c:605 +#: tcop/fastpath.c:111 tcop/fastpath.c:463 tcop/fastpath.c:593 #, c-format msgid "invalid argument size %d in function call message" msgstr "ungültige Argumentgröße %d in Funktionsaufruf-Message" -#: tcop/fastpath.c:291 tcop/postgres.c:992 tcop/postgres.c:1301 -#: tcop/postgres.c:1559 tcop/postgres.c:1964 tcop/postgres.c:2331 -#: tcop/postgres.c:2406 +#: tcop/fastpath.c:281 tcop/postgres.c:984 tcop/postgres.c:1293 +#: tcop/postgres.c:1551 tcop/postgres.c:1956 tcop/postgres.c:2323 +#: tcop/postgres.c:2398 #, c-format msgid "current transaction is aborted, commands ignored until end of transaction block" msgstr "aktuelle Transaktion wurde abgebrochen, Befehle werden bis zum Ende der Transaktion ignoriert" -#: tcop/fastpath.c:319 +#: tcop/fastpath.c:309 #, c-format msgid "fastpath function call: \"%s\" (OID %u)" msgstr "Fastpath-Funktionsaufruf: »%s« (OID %u)" -#: tcop/fastpath.c:401 tcop/postgres.c:1163 tcop/postgres.c:1426 -#: tcop/postgres.c:1805 tcop/postgres.c:2022 +#: tcop/fastpath.c:391 tcop/postgres.c:1155 tcop/postgres.c:1418 +#: tcop/postgres.c:1797 tcop/postgres.c:2014 #, c-format msgid "duration: %s ms" msgstr "Dauer: %s ms" -#: tcop/fastpath.c:405 +#: tcop/fastpath.c:395 #, c-format msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" msgstr "Dauer: %s ms Fastpath-Funktionsaufruf: »%s« (OID %u)" -#: tcop/fastpath.c:443 tcop/fastpath.c:570 +#: tcop/fastpath.c:431 tcop/fastpath.c:558 #, c-format msgid "function call message contains %d arguments but function requires %d" msgstr "Funktionsaufruf-Message enthält %d Argumente, aber Funktion benötigt %d" -#: tcop/fastpath.c:451 +#: tcop/fastpath.c:439 #, c-format msgid "function call message contains %d argument formats but %d arguments" msgstr "Funktionsaufruf-Message enthält %d Argumentformate aber %d Argumente" -#: tcop/fastpath.c:538 tcop/fastpath.c:621 +#: tcop/fastpath.c:526 tcop/fastpath.c:609 #, c-format msgid "incorrect binary data format in function argument %d" msgstr "falsches Binärdatenformat in Funktionsargument %d" -#: tcop/postgres.c:352 tcop/postgres.c:388 tcop/postgres.c:415 +#: tcop/postgres.c:344 tcop/postgres.c:380 tcop/postgres.c:407 #, c-format msgid "unexpected EOF on client connection" msgstr "unerwartetes EOF auf Client-Verbindung" -#: tcop/postgres.c:438 tcop/postgres.c:450 tcop/postgres.c:461 -#: tcop/postgres.c:473 tcop/postgres.c:4308 +#: tcop/postgres.c:430 tcop/postgres.c:442 tcop/postgres.c:453 +#: tcop/postgres.c:465 tcop/postgres.c:4300 #, c-format msgid "invalid frontend message type %d" msgstr "ungültiger Frontend-Message-Typ %d" -#: tcop/postgres.c:933 +#: tcop/postgres.c:925 #, c-format msgid "statement: %s" msgstr "Anweisung: %s" -#: tcop/postgres.c:1168 +#: tcop/postgres.c:1160 #, c-format msgid "duration: %s ms statement: %s" msgstr "Dauer: %s ms Anweisung: %s" -#: tcop/postgres.c:1218 +#: tcop/postgres.c:1210 #, c-format msgid "parse %s: %s" msgstr "Parsen %s: %s" -#: tcop/postgres.c:1274 +#: tcop/postgres.c:1266 #, c-format msgid "cannot insert multiple commands into a prepared statement" msgstr "kann nicht mehrere Befehle in vorbereitete Anweisung einfügen" -#: tcop/postgres.c:1431 +#: tcop/postgres.c:1423 #, c-format msgid "duration: %s ms parse %s: %s" msgstr "Dauer: %s ms Parsen %s: %s" -#: tcop/postgres.c:1476 +#: tcop/postgres.c:1468 #, c-format msgid "bind %s to %s" msgstr "Binden %s an %s" -#: tcop/postgres.c:1495 tcop/postgres.c:2312 +#: tcop/postgres.c:1487 tcop/postgres.c:2304 #, c-format msgid "unnamed prepared statement does not exist" msgstr "unbenannte vorbereitete Anweisung existiert nicht" -#: tcop/postgres.c:1537 +#: tcop/postgres.c:1529 #, c-format msgid "bind message has %d parameter formats but %d parameters" msgstr "Binden-Nachricht hat %d Parameterformate aber %d Parameter" -#: tcop/postgres.c:1543 +#: tcop/postgres.c:1535 #, c-format msgid "bind message supplies %d parameters, but prepared statement \"%s\" requires %d" msgstr "Binden-Nachricht enthält %d Parameter, aber vorbereitete Anweisung »%s« erfordert %d" -#: tcop/postgres.c:1712 +#: tcop/postgres.c:1704 #, c-format msgid "incorrect binary data format in bind parameter %d" msgstr "falsches Binärdatenformat in Binden-Parameter %d" -#: tcop/postgres.c:1810 +#: tcop/postgres.c:1802 #, c-format msgid "duration: %s ms bind %s%s%s: %s" msgstr "Dauer: %s ms Binden %s%s%s: %s" -#: tcop/postgres.c:1858 tcop/postgres.c:2392 +#: tcop/postgres.c:1850 tcop/postgres.c:2384 #, c-format msgid "portal \"%s\" does not exist" msgstr "Portal »%s« existiert nicht" -#: tcop/postgres.c:1943 +#: tcop/postgres.c:1935 #, c-format msgid "%s %s%s%s: %s" msgstr "%s %s%s%s: %s" -#: tcop/postgres.c:1945 tcop/postgres.c:2030 +#: tcop/postgres.c:1937 tcop/postgres.c:2022 msgid "execute fetch from" msgstr "Ausführen Fetch von" -#: tcop/postgres.c:1946 tcop/postgres.c:2031 +#: tcop/postgres.c:1938 tcop/postgres.c:2023 msgid "execute" msgstr "Ausführen" -#: tcop/postgres.c:2027 +#: tcop/postgres.c:2019 #, c-format msgid "duration: %s ms %s %s%s%s: %s" msgstr "Dauer: %s ms %s %s%s%s: %s" -#: tcop/postgres.c:2153 +#: tcop/postgres.c:2145 #, c-format msgid "prepare: %s" msgstr "Vorbereiten: %s" -#: tcop/postgres.c:2216 +#: tcop/postgres.c:2208 #, c-format msgid "parameters: %s" msgstr "Parameter: %s" -#: tcop/postgres.c:2235 +#: tcop/postgres.c:2227 #, c-format msgid "abort reason: recovery conflict" msgstr "Abbruchgrund: Konflikt bei Wiederherstellung" -#: tcop/postgres.c:2251 +#: tcop/postgres.c:2243 #, c-format msgid "User was holding shared buffer pin for too long." msgstr "Benutzer hat Shared-Buffer-Pin zu lange gehalten." -#: tcop/postgres.c:2254 +#: tcop/postgres.c:2246 #, c-format msgid "User was holding a relation lock for too long." msgstr "Benutzer hat Relationssperre zu lange gehalten." -#: tcop/postgres.c:2257 +#: tcop/postgres.c:2249 #, c-format msgid "User was or might have been using tablespace that must be dropped." msgstr "Benutzer hat (möglicherweise) einen Tablespace verwendet, der gelöscht werden muss." -#: tcop/postgres.c:2260 +#: tcop/postgres.c:2252 #, c-format msgid "User query might have needed to see row versions that must be removed." msgstr "Benutzeranfrage hat möglicherweise Zeilenversionen sehen müssen, die entfernt werden müssen." -#: tcop/postgres.c:2266 +#: tcop/postgres.c:2258 #, c-format msgid "User was connected to a database that must be dropped." msgstr "Benutzer war mit einer Datenbank verbunden, die gelöscht werden muss." -#: tcop/postgres.c:2595 +#: tcop/postgres.c:2587 #, c-format msgid "terminating connection because of crash of another server process" msgstr "Verbindung wird abgebrochen wegen Absturz eines anderen Serverprozesses" -#: tcop/postgres.c:2596 +#: tcop/postgres.c:2588 #, c-format msgid "The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory." msgstr "Der Postmaster hat diesen Serverprozess angewiesen, die aktuelle Transaktion zurückzurollen und die Sitzung zu beenden, weil ein anderer Serverprozess abnormal beendet wurde und möglicherweise das Shared Memory verfälscht hat." -#: tcop/postgres.c:2600 tcop/postgres.c:2904 +#: tcop/postgres.c:2592 tcop/postgres.c:2902 #, c-format msgid "In a moment you should be able to reconnect to the database and repeat your command." msgstr "In einem Moment sollten Sie wieder mit der Datenbank verbinden und Ihren Befehl wiederholen können." -#: tcop/postgres.c:2686 +#: tcop/postgres.c:2678 #, c-format msgid "floating-point exception" msgstr "Fließkommafehler" -#: tcop/postgres.c:2687 +#: tcop/postgres.c:2679 #, c-format msgid "An invalid floating-point operation was signaled. This probably means an out-of-range result or an invalid operation, such as division by zero." msgstr "Eine ungültige Fließkommaoperation wurde signalisiert. Das bedeutet wahrscheinlich ein Ergebnis außerhalb des gültigen Bereichs oder eine ungültige Operation, zum Beispiel Division durch null." -#: tcop/postgres.c:2849 +#: tcop/postgres.c:2847 #, c-format msgid "canceling authentication due to timeout" msgstr "storniere Authentifizierung wegen Zeitüberschreitung" -#: tcop/postgres.c:2853 +#: tcop/postgres.c:2851 #, c-format msgid "terminating autovacuum process due to administrator command" msgstr "Autovacuum-Prozess wird abgebrochen aufgrund von Anweisung des Administrators" -#: tcop/postgres.c:2859 tcop/postgres.c:2869 tcop/postgres.c:2902 +#: tcop/postgres.c:2857 tcop/postgres.c:2867 tcop/postgres.c:2900 #, c-format msgid "terminating connection due to conflict with recovery" msgstr "Verbindung wird abgebrochen wegen Konflikt mit der Wiederherstellung" -#: tcop/postgres.c:2875 +#: tcop/postgres.c:2873 #, c-format msgid "terminating connection due to administrator command" msgstr "Verbindung wird abgebrochen aufgrund von Anweisung des Administrators" -#: tcop/postgres.c:2885 +#: tcop/postgres.c:2883 #, c-format msgid "connection to client lost" msgstr "Verbindung zum Client wurde verloren" -#: tcop/postgres.c:2953 +#: tcop/postgres.c:2951 #, c-format msgid "canceling statement due to lock timeout" msgstr "storniere Anfrage wegen Zeitüberschreitung einer Sperre" -#: tcop/postgres.c:2960 +#: tcop/postgres.c:2958 #, c-format msgid "canceling statement due to statement timeout" msgstr "storniere Anfrage wegen Zeitüberschreitung der Anfrage" -#: tcop/postgres.c:2967 +#: tcop/postgres.c:2965 #, c-format msgid "canceling autovacuum task" msgstr "storniere Autovacuum-Aufgabe" -#: tcop/postgres.c:2990 +#: tcop/postgres.c:2988 #, c-format msgid "canceling statement due to user request" msgstr "storniere Anfrage wegen Benutzeraufforderung" -#: tcop/postgres.c:3000 +#: tcop/postgres.c:2998 #, c-format msgid "terminating connection due to idle-in-transaction timeout" msgstr "Verbindung wird abgebrochen wegen Zeitüberschreitung in inaktiver Transaktion" -#: tcop/postgres.c:3114 +#: tcop/postgres.c:3112 #, c-format msgid "stack depth limit exceeded" msgstr "Grenze für Stacktiefe überschritten" -#: tcop/postgres.c:3115 +#: tcop/postgres.c:3113 #, c-format msgid "Increase the configuration parameter \"max_stack_depth\" (currently %dkB), after ensuring the platform's stack depth limit is adequate." msgstr "Erhöhen Sie den Konfigurationsparameter »max_stack_depth« (aktuell %dkB), nachdem Sie sichergestellt haben, dass die Stacktiefenbegrenzung Ihrer Plattform ausreichend ist." -#: tcop/postgres.c:3178 +#: tcop/postgres.c:3176 #, c-format msgid "\"max_stack_depth\" must not exceed %ldkB." msgstr "»max_stack_depth« darf %ldkB nicht überschreiten." -#: tcop/postgres.c:3180 +#: tcop/postgres.c:3178 #, c-format msgid "Increase the platform's stack depth limit via \"ulimit -s\" or local equivalent." msgstr "Erhöhen Sie die Stacktiefenbegrenzung Ihrer Plattform mit »ulimit -s« oder der lokalen Entsprechung." -#: tcop/postgres.c:3540 +#: tcop/postgres.c:3538 #, c-format msgid "invalid command-line argument for server process: %s" msgstr "ungültiges Kommandozeilenargument für Serverprozess: %s" -#: tcop/postgres.c:3541 tcop/postgres.c:3547 +#: tcop/postgres.c:3539 tcop/postgres.c:3545 #, c-format msgid "Try \"%s --help\" for more information." msgstr "Versuchen Sie »%s --help« für weitere Informationen." -#: tcop/postgres.c:3545 +#: tcop/postgres.c:3543 #, c-format msgid "%s: invalid command-line argument: %s" msgstr "%s: ungültiges Kommandozeilenargument: %s" -#: tcop/postgres.c:3607 +#: tcop/postgres.c:3605 #, c-format msgid "%s: no database nor user name specified" msgstr "%s: weder Datenbankname noch Benutzername angegeben" -#: tcop/postgres.c:4216 +#: tcop/postgres.c:4208 #, c-format msgid "invalid CLOSE message subtype %d" msgstr "ungültiger Subtyp %d von CLOSE-Message" -#: tcop/postgres.c:4251 +#: tcop/postgres.c:4243 #, c-format msgid "invalid DESCRIBE message subtype %d" msgstr "ungültiger Subtyp %d von DESCRIBE-Message" -#: tcop/postgres.c:4329 +#: tcop/postgres.c:4321 #, c-format msgid "fastpath function calls not supported in a replication connection" msgstr "Fastpath-Funktionsaufrufe werden auf einer Replikationsverbindung nicht unterstützt" -#: tcop/postgres.c:4333 +#: tcop/postgres.c:4325 #, c-format msgid "extended query protocol not supported in a replication connection" msgstr "erweitertes Anfrageprotokoll wird nicht auf einer Replikationsverbindung unterstützt" -#: tcop/postgres.c:4503 +#: tcop/postgres.c:4495 #, c-format msgid "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%s" msgstr "Verbindungsende: Sitzungszeit: %d:%02d:%02d.%03d Benutzer=%s Datenbank=%s Host=%s%s%s" @@ -17514,7 +17387,7 @@ msgid "affix file contains both old-style and new-style commands" msgstr "Affixdatei enthält Befehle im alten und im neuen Stil" #: tsearch/to_tsany.c:170 utils/adt/tsvector.c:270 -#: utils/adt/tsvector_op.c:1132 +#: utils/adt/tsvector_op.c:1133 #, c-format msgid "string is too long for tsvector (%d bytes, max %d bytes)" msgstr "Zeichenkette ist zu lang für tsvector (%d Bytes, maximal %d Bytes)" @@ -17681,8 +17554,8 @@ msgstr "aclremove wird nicht mehr unterstützt" msgid "unrecognized privilege type: \"%s\"" msgstr "unbekannter Privilegtyp: »%s«" -#: utils/adt/acl.c:3427 utils/adt/regproc.c:123 utils/adt/regproc.c:144 -#: utils/adt/regproc.c:319 +#: utils/adt/acl.c:3427 utils/adt/regproc.c:124 utils/adt/regproc.c:145 +#: utils/adt/regproc.c:320 #, c-format msgid "function \"%s\" does not exist" msgstr "Funktion »%s« existiert nicht" @@ -17694,27 +17567,27 @@ msgstr "Berechtigung nur für Mitglied von Rolle »%s«" #: utils/adt/array_expanded.c:274 utils/adt/arrayfuncs.c:931 #: utils/adt/arrayfuncs.c:1519 utils/adt/arrayfuncs.c:3251 -#: utils/adt/arrayfuncs.c:3389 utils/adt/arrayfuncs.c:5860 -#: utils/adt/arrayfuncs.c:6171 utils/adt/arrayutils.c:93 +#: utils/adt/arrayfuncs.c:3389 utils/adt/arrayfuncs.c:5848 +#: utils/adt/arrayfuncs.c:6159 utils/adt/arrayutils.c:93 #: utils/adt/arrayutils.c:102 utils/adt/arrayutils.c:109 #, c-format msgid "array size exceeds the maximum allowed (%d)" msgstr "Arraygröße überschreitet erlaubtes Maximum (%d)" -#: utils/adt/array_userfuncs.c:67 utils/adt/array_userfuncs.c:529 -#: utils/adt/array_userfuncs.c:609 utils/adt/json.c:1759 utils/adt/json.c:1854 +#: utils/adt/array_userfuncs.c:79 utils/adt/array_userfuncs.c:541 +#: utils/adt/array_userfuncs.c:621 utils/adt/json.c:1759 utils/adt/json.c:1854 #: utils/adt/json.c:1892 utils/adt/jsonb.c:1126 utils/adt/jsonb.c:1155 #: utils/adt/jsonb.c:1591 utils/adt/jsonb.c:1755 utils/adt/jsonb.c:1765 #, c-format msgid "could not determine input data type" msgstr "konnte Eingabedatentypen nicht bestimmen" -#: utils/adt/array_userfuncs.c:72 +#: utils/adt/array_userfuncs.c:84 #, c-format msgid "input data type is not an array" msgstr "Eingabedatentyp ist kein Array" -#: utils/adt/array_userfuncs.c:120 utils/adt/array_userfuncs.c:174 +#: utils/adt/array_userfuncs.c:132 utils/adt/array_userfuncs.c:186 #: utils/adt/arrayfuncs.c:1322 utils/adt/float.c:1228 utils/adt/float.c:1287 #: utils/adt/float.c:3556 utils/adt/float.c:3572 utils/adt/int.c:623 #: utils/adt/int.c:652 utils/adt/int.c:673 utils/adt/int.c:704 @@ -17722,56 +17595,56 @@ msgstr "Eingabedatentyp ist kein Array" #: utils/adt/int.c:928 utils/adt/int.c:955 utils/adt/int.c:995 #: utils/adt/int.c:1016 utils/adt/int.c:1043 utils/adt/int.c:1076 #: utils/adt/int.c:1159 utils/adt/int8.c:1298 utils/adt/numeric.c:2903 -#: utils/adt/numeric.c:2912 utils/adt/varbit.c:1173 utils/adt/varbit.c:1565 +#: utils/adt/numeric.c:2912 utils/adt/varbit.c:1173 utils/adt/varbit.c:1575 #: utils/adt/varlena.c:1055 utils/adt/varlena.c:2807 #, c-format msgid "integer out of range" msgstr "integer ist außerhalb des gültigen Bereichs" -#: utils/adt/array_userfuncs.c:127 utils/adt/array_userfuncs.c:184 +#: utils/adt/array_userfuncs.c:139 utils/adt/array_userfuncs.c:196 #, c-format msgid "argument must be empty or one-dimensional array" msgstr "Argument muss entweder leer oder ein eindimensionales Array sein" -#: utils/adt/array_userfuncs.c:266 utils/adt/array_userfuncs.c:305 -#: utils/adt/array_userfuncs.c:342 utils/adt/array_userfuncs.c:371 -#: utils/adt/array_userfuncs.c:399 +#: utils/adt/array_userfuncs.c:278 utils/adt/array_userfuncs.c:317 +#: utils/adt/array_userfuncs.c:354 utils/adt/array_userfuncs.c:383 +#: utils/adt/array_userfuncs.c:411 #, c-format msgid "cannot concatenate incompatible arrays" msgstr "inkompatible Arrays können nicht aneinandergehängt werden" -#: utils/adt/array_userfuncs.c:267 +#: utils/adt/array_userfuncs.c:279 #, c-format msgid "Arrays with element types %s and %s are not compatible for concatenation." msgstr "Arrays mit Elementtypen %s und %s sind nicht kompatibel für Aneinanderhängen." -#: utils/adt/array_userfuncs.c:306 +#: utils/adt/array_userfuncs.c:318 #, c-format msgid "Arrays of %d and %d dimensions are not compatible for concatenation." msgstr "Arrays mit %d und %d Dimensionen sind nicht kompatibel für Aneinanderhängen." -#: utils/adt/array_userfuncs.c:343 +#: utils/adt/array_userfuncs.c:355 #, c-format msgid "Arrays with differing element dimensions are not compatible for concatenation." msgstr "Arrays mit unterschiedlichen Elementdimensionen sind nicht kompatibel für Aneinanderhängen." -#: utils/adt/array_userfuncs.c:372 utils/adt/array_userfuncs.c:400 +#: utils/adt/array_userfuncs.c:384 utils/adt/array_userfuncs.c:412 #, c-format msgid "Arrays with differing dimensions are not compatible for concatenation." msgstr "Arrays mit unterschiedlichen Dimensionen sind nicht kompatibel für Aneinanderhängen." -#: utils/adt/array_userfuncs.c:468 utils/adt/arrayfuncs.c:1284 -#: utils/adt/arrayfuncs.c:3357 utils/adt/arrayfuncs.c:5760 +#: utils/adt/array_userfuncs.c:480 utils/adt/arrayfuncs.c:1284 +#: utils/adt/arrayfuncs.c:3357 utils/adt/arrayfuncs.c:5754 #, c-format msgid "invalid number of dimensions: %d" msgstr "ungültige Anzahl Dimensionen: %d" -#: utils/adt/array_userfuncs.c:725 utils/adt/array_userfuncs.c:876 +#: utils/adt/array_userfuncs.c:737 utils/adt/array_userfuncs.c:889 #, c-format msgid "searching for elements in multidimensional arrays is not supported" msgstr "Suche nach Elementen in mehrdimensionalen Arrays wird nicht unterstützt" -#: utils/adt/array_userfuncs.c:749 +#: utils/adt/array_userfuncs.c:761 #, c-format msgid "initial position must not be null" msgstr "Startposition darf nicht NULL sein" @@ -17896,7 +17769,7 @@ msgstr "Auswählen von Stücken aus Arrays mit fester Länge ist nicht implement #: utils/adt/arrayfuncs.c:2230 utils/adt/arrayfuncs.c:2252 #: utils/adt/arrayfuncs.c:2301 utils/adt/arrayfuncs.c:2537 #: utils/adt/arrayfuncs.c:2848 utils/adt/arrayfuncs.c:5740 -#: utils/adt/arrayfuncs.c:5772 utils/adt/arrayfuncs.c:5789 +#: utils/adt/arrayfuncs.c:5766 utils/adt/arrayfuncs.c:5777 #: utils/adt/json.c:2290 utils/adt/json.c:2365 utils/adt/jsonb.c:1369 #: utils/adt/jsonb.c:1455 utils/adt/jsonfuncs.c:3529 #: utils/adt/jsonfuncs.c:3574 utils/adt/jsonfuncs.c:3621 @@ -17976,42 +17849,32 @@ msgstr "Arrays unterschiedlicher Dimensionalität können nicht akkumuliert werd msgid "dimension array or low bound array cannot be null" msgstr "Dimensions-Array oder Untergrenzen-Array darf nicht NULL sein" -#: utils/adt/arrayfuncs.c:5741 utils/adt/arrayfuncs.c:5773 +#: utils/adt/arrayfuncs.c:5741 utils/adt/arrayfuncs.c:5767 #, c-format msgid "Dimension array must be one dimensional." msgstr "Dimensions-Array muss eindimensional sein." -#: utils/adt/arrayfuncs.c:5746 utils/adt/arrayfuncs.c:5778 -#, c-format -msgid "wrong range of array subscripts" -msgstr "falscher Bereich der Arrayindizes" - -#: utils/adt/arrayfuncs.c:5747 utils/adt/arrayfuncs.c:5779 -#, c-format -msgid "Lower bound of dimension array must be one." -msgstr "Untergrenze des Dimensions-Arrays muss eins sein." - -#: utils/adt/arrayfuncs.c:5752 utils/adt/arrayfuncs.c:5784 +#: utils/adt/arrayfuncs.c:5746 utils/adt/arrayfuncs.c:5772 #, c-format msgid "dimension values cannot be null" msgstr "Dimensionswerte dürfen nicht NULL sein" -#: utils/adt/arrayfuncs.c:5790 +#: utils/adt/arrayfuncs.c:5778 #, c-format msgid "Low bound array has different size than dimensions array." msgstr "Untergrenzen-Array hat andere Größe als Dimensions-Array." -#: utils/adt/arrayfuncs.c:6036 +#: utils/adt/arrayfuncs.c:6024 #, c-format msgid "removing elements from multidimensional arrays is not supported" msgstr "Entfernen von Elementen aus mehrdimensionalen Arrays wird nicht unterstützt" -#: utils/adt/arrayfuncs.c:6313 +#: utils/adt/arrayfuncs.c:6301 #, c-format msgid "thresholds must be one-dimensional array" msgstr "Parameter »thresholds« muss ein eindimensionales Array sein" -#: utils/adt/arrayfuncs.c:6318 +#: utils/adt/arrayfuncs.c:6306 #, c-format msgid "thresholds array must not contain NULLs" msgstr "»thresholds«-Array darf keine NULL-Werte enthalten" @@ -18055,7 +17918,7 @@ msgstr "ungültige Eingabesyntax für Typ money: »%s«" #: utils/adt/int8.c:657 utils/adt/int8.c:897 utils/adt/int8.c:1005 #: utils/adt/int8.c:1094 utils/adt/int8.c:1202 utils/adt/numeric.c:6818 #: utils/adt/numeric.c:7107 utils/adt/numeric.c:8120 -#: utils/adt/timestamp.c:3446 +#: utils/adt/timestamp.c:3542 #, c-format msgid "division by zero" msgstr "Division durch Null" @@ -18065,7 +17928,7 @@ msgstr "Division durch Null" msgid "\"char\" out of range" msgstr "\"char\" ist außerhalb des gültigen Bereichs" -#: utils/adt/date.c:67 utils/adt/timestamp.c:94 utils/adt/varbit.c:52 +#: utils/adt/date.c:67 utils/adt/timestamp.c:95 utils/adt/varbit.c:52 #: utils/adt/varchar.c:45 #, c-format msgid "invalid type modifier" @@ -18093,17 +17956,17 @@ msgid "date out of range: \"%s\"" msgstr "date ist außerhalb des gültigen Bereichs: »%s«" #: utils/adt/date.c:222 utils/adt/date.c:456 utils/adt/date.c:480 -#: utils/adt/xml.c:2027 +#: utils/adt/xml.c:2031 #, c-format msgid "date out of range" msgstr "date ist außerhalb des gültigen Bereichs" -#: utils/adt/date.c:264 utils/adt/timestamp.c:593 +#: utils/adt/date.c:264 utils/adt/timestamp.c:594 #, c-format msgid "date field value out of range: %d-%02d-%02d" msgstr "Datum-Feldwert ist außerhalb des gültigen Bereichs: %d-%02d-%02d" -#: utils/adt/date.c:271 utils/adt/date.c:280 utils/adt/timestamp.c:599 +#: utils/adt/date.c:271 utils/adt/date.c:280 utils/adt/timestamp.c:600 #, c-format msgid "date out of range: %d-%02d-%02d" msgstr "date ist außerhalb des gültigen Bereichs: %d-%02d-%02d" @@ -18125,28 +17988,28 @@ msgstr "Datum ist außerhalb des gültigen Bereichs für Typ »timestamp«" #: utils/adt/formatting.c:3436 utils/adt/formatting.c:3504 #: utils/adt/json.c:1534 utils/adt/json.c:1556 utils/adt/jsonb.c:823 #: utils/adt/jsonb.c:847 utils/adt/nabstime.c:455 utils/adt/nabstime.c:498 -#: utils/adt/nabstime.c:528 utils/adt/nabstime.c:571 utils/adt/timestamp.c:224 -#: utils/adt/timestamp.c:268 utils/adt/timestamp.c:726 -#: utils/adt/timestamp.c:735 utils/adt/timestamp.c:820 -#: utils/adt/timestamp.c:860 utils/adt/timestamp.c:3021 -#: utils/adt/timestamp.c:3042 utils/adt/timestamp.c:3055 -#: utils/adt/timestamp.c:3064 utils/adt/timestamp.c:3072 -#: utils/adt/timestamp.c:3127 utils/adt/timestamp.c:3150 -#: utils/adt/timestamp.c:3163 utils/adt/timestamp.c:3174 -#: utils/adt/timestamp.c:3182 utils/adt/timestamp.c:3756 -#: utils/adt/timestamp.c:3885 utils/adt/timestamp.c:3926 -#: utils/adt/timestamp.c:4014 utils/adt/timestamp.c:4060 -#: utils/adt/timestamp.c:4171 utils/adt/timestamp.c:4578 -#: utils/adt/timestamp.c:4694 utils/adt/timestamp.c:4704 -#: utils/adt/timestamp.c:4800 utils/adt/timestamp.c:4919 -#: utils/adt/timestamp.c:4929 utils/adt/timestamp.c:5250 -#: utils/adt/timestamp.c:5264 utils/adt/timestamp.c:5269 -#: utils/adt/timestamp.c:5283 utils/adt/timestamp.c:5366 -#: utils/adt/timestamp.c:5398 utils/adt/timestamp.c:5405 -#: utils/adt/timestamp.c:5431 utils/adt/timestamp.c:5435 -#: utils/adt/timestamp.c:5504 utils/adt/timestamp.c:5508 -#: utils/adt/timestamp.c:5522 utils/adt/timestamp.c:5560 utils/adt/xml.c:2049 -#: utils/adt/xml.c:2056 utils/adt/xml.c:2076 utils/adt/xml.c:2083 +#: utils/adt/nabstime.c:528 utils/adt/nabstime.c:571 utils/adt/timestamp.c:225 +#: utils/adt/timestamp.c:269 utils/adt/timestamp.c:727 +#: utils/adt/timestamp.c:736 utils/adt/timestamp.c:818 +#: utils/adt/timestamp.c:858 utils/adt/timestamp.c:3117 +#: utils/adt/timestamp.c:3138 utils/adt/timestamp.c:3151 +#: utils/adt/timestamp.c:3160 utils/adt/timestamp.c:3168 +#: utils/adt/timestamp.c:3223 utils/adt/timestamp.c:3246 +#: utils/adt/timestamp.c:3259 utils/adt/timestamp.c:3270 +#: utils/adt/timestamp.c:3278 utils/adt/timestamp.c:3852 +#: utils/adt/timestamp.c:3981 utils/adt/timestamp.c:4022 +#: utils/adt/timestamp.c:4110 utils/adt/timestamp.c:4156 +#: utils/adt/timestamp.c:4267 utils/adt/timestamp.c:4674 +#: utils/adt/timestamp.c:4790 utils/adt/timestamp.c:4800 +#: utils/adt/timestamp.c:4896 utils/adt/timestamp.c:5015 +#: utils/adt/timestamp.c:5025 utils/adt/timestamp.c:5277 +#: utils/adt/timestamp.c:5291 utils/adt/timestamp.c:5296 +#: utils/adt/timestamp.c:5310 utils/adt/timestamp.c:5359 +#: utils/adt/timestamp.c:5391 utils/adt/timestamp.c:5398 +#: utils/adt/timestamp.c:5424 utils/adt/timestamp.c:5428 +#: utils/adt/timestamp.c:5497 utils/adt/timestamp.c:5501 +#: utils/adt/timestamp.c:5515 utils/adt/timestamp.c:5553 utils/adt/xml.c:2053 +#: utils/adt/xml.c:2060 utils/adt/xml.c:2080 utils/adt/xml.c:2087 #, c-format msgid "timestamp out of range" msgstr "timestamp ist außerhalb des gültigen Bereichs" @@ -18167,7 +18030,7 @@ msgstr "abstime ist außerhalb des gültigen Bereichs für Typ »date«" msgid "time out of range" msgstr "time ist außerhalb des gültigen Bereichs" -#: utils/adt/date.c:1326 utils/adt/timestamp.c:618 +#: utils/adt/date.c:1326 utils/adt/timestamp.c:619 #, c-format msgid "time field value out of range: %d:%02d:%02g" msgstr "Zeit-Feldwert ist außerhalb des gültigen Bereichs: %d:%02d:%02g" @@ -18188,14 +18051,14 @@ msgid "\"time with time zone\" units \"%s\" not recognized" msgstr "»time with time zone«-Einheit »%s« nicht erkannt" #: utils/adt/date.c:2830 utils/adt/datetime.c:995 utils/adt/datetime.c:1917 -#: utils/adt/datetime.c:4743 utils/adt/timestamp.c:532 -#: utils/adt/timestamp.c:559 utils/adt/timestamp.c:5275 -#: utils/adt/timestamp.c:5514 +#: utils/adt/datetime.c:4743 utils/adt/timestamp.c:533 +#: utils/adt/timestamp.c:560 utils/adt/timestamp.c:5302 +#: utils/adt/timestamp.c:5507 #, c-format msgid "time zone \"%s\" not recognized" msgstr "Zeitzone »%s« nicht erkannt" -#: utils/adt/date.c:2870 utils/adt/timestamp.c:5351 utils/adt/timestamp.c:5545 +#: utils/adt/date.c:2870 utils/adt/timestamp.c:5344 utils/adt/timestamp.c:5538 #, c-format msgid "interval time zone \"%s\" must not include months or days" msgstr "Intervall-Zeitzone »%s« darf keine Monate oder Tage enthalten" @@ -18262,7 +18125,7 @@ msgstr "Ungültige Größeneinheit: »%s«." msgid "Valid units are \"bytes\", \"kB\", \"MB\", \"GB\", and \"TB\"." msgstr "Gültige Einheiten sind »kB«, »MB«, »GB« und »TB«." -#: utils/adt/domains.c:85 +#: utils/adt/domains.c:86 #, c-format msgid "type %s is not a domain" msgstr "Typ %s ist keine Domäne" @@ -18766,7 +18629,7 @@ msgid "oidvector has too many elements" msgstr "oidvector-Wert hat zu viele Elemente" #: utils/adt/int.c:1362 utils/adt/int8.c:1460 utils/adt/numeric.c:1351 -#: utils/adt/timestamp.c:5611 utils/adt/timestamp.c:5692 +#: utils/adt/timestamp.c:5604 utils/adt/timestamp.c:5685 #, c-format msgid "step size cannot equal zero" msgstr "Schrittgröße kann nicht gleich null sein" @@ -18791,7 +18654,7 @@ msgstr "Wert »%s« ist außerhalb des gültigen Bereichs für Typ bigint" #: utils/adt/int8.c:1052 utils/adt/int8.c:1079 utils/adt/int8.c:1112 #: utils/adt/int8.c:1140 utils/adt/int8.c:1161 utils/adt/int8.c:1188 #: utils/adt/int8.c:1361 utils/adt/int8.c:1400 utils/adt/numeric.c:2955 -#: utils/adt/varbit.c:1645 +#: utils/adt/varbit.c:1655 #, c-format msgid "bigint out of range" msgstr "bigint ist außerhalb des gültigen Bereichs" @@ -18913,15 +18776,12 @@ msgstr "JSON-Daten, Zeile %d: %s%s%s" msgid "key value must be scalar, not array, composite, or json" msgstr "Schlüsselwert muss skalar sein, nicht Array, zusammengesetzt oder json" -#: utils/adt/json.c:2006 +#: utils/adt/json.c:2006 utils/adt/json.c:2016 utils/adt/json.c:2142 +#: utils/adt/json.c:2163 utils/adt/json.c:2222 utils/adt/jsonb.c:1214 +#: utils/adt/jsonb.c:1237 utils/adt/jsonb.c:1297 #, c-format -msgid "could not determine data type for argument 1" -msgstr "konnte Datentyp von Argument 1 nicht ermitteln" - -#: utils/adt/json.c:2016 -#, c-format -msgid "could not determine data type for argument 2" -msgstr "konnte Datentyp von Argument 2 nicht ermitteln" +msgid "could not determine data type for argument %d" +msgstr "konnte Datentyp von Argument %d nicht ermitteln" #: utils/adt/json.c:2040 utils/adt/jsonb.c:1781 #, c-format @@ -18938,11 +18798,6 @@ msgstr "Argumentliste muss gerade Anzahl Elemente haben" msgid "The arguments of json_build_object() must consist of alternating keys and values." msgstr "Die Argumente von json_build_object() müssen abwechselnd Schlüssel und Werte sein." -#: utils/adt/json.c:2142 utils/adt/json.c:2163 utils/adt/json.c:2222 -#, c-format -msgid "could not determine data type for argument %d" -msgstr "konnte Datentyp von Argument %d nicht ermitteln" - #: utils/adt/json.c:2148 #, c-format msgid "argument %d cannot be null" @@ -18989,11 +18844,6 @@ msgstr "ungültige Anzahl Argumente: Objekt muss aus Schlüssel-Wert-Paaren best msgid "argument %d: key must not be null" msgstr "Argument %d: Schlüssel darf nicht NULL sein" -#: utils/adt/jsonb.c:1214 utils/adt/jsonb.c:1237 utils/adt/jsonb.c:1297 -#, c-format -msgid "argument %d: could not determine data type" -msgstr "Argument %d: konnte Datentypen nicht bestimmen" - #: utils/adt/jsonb.c:1834 #, c-format msgid "object keys must be strings" @@ -19149,7 +18999,7 @@ msgstr "Pfadelement auf Position %d ist keine ganze Zahl: »%s«" msgid "levenshtein argument exceeds maximum length of %d characters" msgstr "Levenshtein-Argument überschreitet die maximale Länge von %d Zeichen" -#: utils/adt/like.c:212 utils/adt/selfuncs.c:5333 +#: utils/adt/like.c:212 utils/adt/selfuncs.c:5433 #, c-format msgid "could not determine which collation to use for ILIKE" msgstr "konnte die für ILIKE zu verwendende Sortierfolge nicht bestimmen" @@ -19514,37 +19364,37 @@ msgstr "Null-Zeichen ist nicht erlaubt" msgid "percentile value %g is not between 0 and 1" msgstr "Perzentilwert %g ist nicht zwischen 0 und 1" -#: utils/adt/pg_locale.c:917 +#: utils/adt/pg_locale.c:1029 #, c-format msgid "Apply system library package updates." msgstr "Aktualisieren Sie die Systembibliotheken." -#: utils/adt/pg_locale.c:1122 +#: utils/adt/pg_locale.c:1234 #, c-format msgid "could not create locale \"%s\": %m" msgstr "konnte Locale »%s« nicht erzeugen: %m" -#: utils/adt/pg_locale.c:1125 +#: utils/adt/pg_locale.c:1237 #, c-format msgid "The operating system could not find any locale data for the locale name \"%s\"." msgstr "Das Betriebssystem konnte keine Locale-Daten für den Locale-Namen »%s« finden." -#: utils/adt/pg_locale.c:1212 +#: utils/adt/pg_locale.c:1324 #, c-format msgid "collations with different collate and ctype values are not supported on this platform" msgstr "Sortierfolgen mit unterschiedlichen »collate«- und »ctype«-Werten werden auf dieser Plattform nicht unterstützt" -#: utils/adt/pg_locale.c:1227 +#: utils/adt/pg_locale.c:1339 #, c-format msgid "nondefault collations are not supported on this platform" msgstr "Sortierfolgen außer der Standardsortierfolge werden auf dieser Plattform nicht unterstützt" -#: utils/adt/pg_locale.c:1398 +#: utils/adt/pg_locale.c:1510 #, c-format msgid "invalid multibyte character for locale" msgstr "ungültiges Mehrbytezeichen für Locale" -#: utils/adt/pg_locale.c:1399 +#: utils/adt/pg_locale.c:1511 #, c-format msgid "The server's LC_CTYPE locale is probably incompatible with the database encoding." msgstr "Die LC_CTYPE-Locale des Servers ist wahrscheinlich mit der Kodierung der Datenbank inkompatibel." @@ -19790,121 +19640,121 @@ msgstr "ungültige Option für regulären Ausdruck: »%c«" msgid "regexp_split does not support the global option" msgstr "regexp_split unterstützt die »Global«-Option nicht" -#: utils/adt/regproc.c:128 utils/adt/regproc.c:148 +#: utils/adt/regproc.c:129 utils/adt/regproc.c:149 #, c-format msgid "more than one function named \"%s\"" msgstr "es gibt mehrere Funktionen namens »%s«" -#: utils/adt/regproc.c:587 utils/adt/regproc.c:607 +#: utils/adt/regproc.c:588 utils/adt/regproc.c:608 #, c-format msgid "more than one operator named %s" msgstr "es gibt mehrere Operatoren namens %s" -#: utils/adt/regproc.c:779 utils/adt/regproc.c:820 utils/adt/regproc.c:2006 -#: utils/adt/ruleutils.c:8364 utils/adt/ruleutils.c:8533 +#: utils/adt/regproc.c:780 utils/adt/regproc.c:821 utils/adt/regproc.c:2007 +#: utils/adt/ruleutils.c:8453 utils/adt/ruleutils.c:8622 #, c-format msgid "too many arguments" msgstr "zu viele Argumente" -#: utils/adt/regproc.c:780 utils/adt/regproc.c:821 +#: utils/adt/regproc.c:781 utils/adt/regproc.c:822 #, c-format msgid "Provide two argument types for operator." msgstr "Geben Sie zwei Argumente für den Operator an." -#: utils/adt/regproc.c:1594 utils/adt/regproc.c:1618 utils/adt/regproc.c:1715 -#: utils/adt/regproc.c:1739 utils/adt/regproc.c:1841 utils/adt/regproc.c:1846 +#: utils/adt/regproc.c:1595 utils/adt/regproc.c:1619 utils/adt/regproc.c:1716 +#: utils/adt/regproc.c:1740 utils/adt/regproc.c:1842 utils/adt/regproc.c:1847 #: utils/adt/varlena.c:3084 utils/adt/varlena.c:3089 #, c-format msgid "invalid name syntax" msgstr "ungültige Namenssyntax" -#: utils/adt/regproc.c:1904 +#: utils/adt/regproc.c:1905 #, c-format msgid "expected a left parenthesis" msgstr "linke Klammer erwartet" -#: utils/adt/regproc.c:1920 +#: utils/adt/regproc.c:1921 #, c-format msgid "expected a right parenthesis" msgstr "rechte Klammer erwartet" -#: utils/adt/regproc.c:1939 +#: utils/adt/regproc.c:1940 #, c-format msgid "expected a type name" msgstr "Typname erwartet" -#: utils/adt/regproc.c:1971 +#: utils/adt/regproc.c:1972 #, c-format msgid "improper type name" msgstr "falscher Typname" -#: utils/adt/ri_triggers.c:345 utils/adt/ri_triggers.c:2492 -#: utils/adt/ri_triggers.c:3317 +#: utils/adt/ri_triggers.c:343 utils/adt/ri_triggers.c:2490 +#: utils/adt/ri_triggers.c:3315 #, c-format msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\"" msgstr "Einfügen oder Aktualisieren in Tabelle »%s« verletzt Fremdschlüssel-Constraint »%s«" -#: utils/adt/ri_triggers.c:348 utils/adt/ri_triggers.c:2495 +#: utils/adt/ri_triggers.c:346 utils/adt/ri_triggers.c:2493 #, c-format msgid "MATCH FULL does not allow mixing of null and nonnull key values." msgstr "MATCH FULL erlaubt das Mischen von Schlüsseln, die NULL und nicht NULL sind, nicht." -#: utils/adt/ri_triggers.c:2734 +#: utils/adt/ri_triggers.c:2732 #, c-format msgid "function \"%s\" must be fired for INSERT" msgstr "Funktion »%s« muss von INSERT ausgelöst werden" -#: utils/adt/ri_triggers.c:2740 +#: utils/adt/ri_triggers.c:2738 #, c-format msgid "function \"%s\" must be fired for UPDATE" msgstr "Funktion »%s« muss von UPDATE ausgelöst werden" -#: utils/adt/ri_triggers.c:2746 +#: utils/adt/ri_triggers.c:2744 #, c-format msgid "function \"%s\" must be fired for DELETE" msgstr "Funktion »%s« muss von DELETE ausgelöst werden" -#: utils/adt/ri_triggers.c:2769 +#: utils/adt/ri_triggers.c:2767 #, c-format msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\"" msgstr "kein »pg_constraint«-Eintrag für Trigger »%s« für Tabelle »%s«" -#: utils/adt/ri_triggers.c:2771 +#: utils/adt/ri_triggers.c:2769 #, c-format msgid "Remove this referential integrity trigger and its mates, then do ALTER TABLE ADD CONSTRAINT." msgstr "Entfernen Sie diesen Referentielle-Integritäts-Trigger und seine Partner und führen Sie dann ALTER TABLE ADD CONSTRAINT aus." -#: utils/adt/ri_triggers.c:3227 +#: utils/adt/ri_triggers.c:3225 #, c-format msgid "referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave unexpected result" msgstr "RI-Anfrage in Tabelle »%s« für Constraint »%s« von Tabelle »%s« ergab unerwartetes Ergebnis" -#: utils/adt/ri_triggers.c:3231 +#: utils/adt/ri_triggers.c:3229 #, c-format msgid "This is most likely due to a rule having rewritten the query." msgstr "Das liegt höchstwahrscheinlich daran, dass eine Regel die Anfrage umgeschrieben hat." -#: utils/adt/ri_triggers.c:3321 +#: utils/adt/ri_triggers.c:3319 #, c-format msgid "Key (%s)=(%s) is not present in table \"%s\"." msgstr "Schlüssel (%s)=(%s) ist nicht in Tabelle »%s« vorhanden." -#: utils/adt/ri_triggers.c:3324 +#: utils/adt/ri_triggers.c:3322 #, c-format msgid "Key is not present in table \"%s\"." msgstr "Der Schlüssel ist nicht in Tabelle »%s« vorhanden." -#: utils/adt/ri_triggers.c:3330 +#: utils/adt/ri_triggers.c:3328 #, c-format msgid "update or delete on table \"%s\" violates foreign key constraint \"%s\" on table \"%s\"" msgstr "Aktualisieren oder Löschen in Tabelle »%s« verletzt Fremdschlüssel-Constraint »%s« von Tabelle »%s«" -#: utils/adt/ri_triggers.c:3335 +#: utils/adt/ri_triggers.c:3333 #, c-format msgid "Key (%s)=(%s) is still referenced from table \"%s\"." msgstr "Auf Schlüssel (%s)=(%s) wird noch aus Tabelle »%s« verwiesen." -#: utils/adt/ri_triggers.c:3338 +#: utils/adt/ri_triggers.c:3336 #, c-format msgid "Key is still referenced from table \"%s\"." msgstr "Auf den Schlüssel wird noch aus Tabelle »%s« verwiesen." @@ -19967,17 +19817,17 @@ msgstr "kann unterschiedliche Spaltentyp %s und %s in Record-Spalte %d nicht ver msgid "cannot compare record types with different numbers of columns" msgstr "kann Record-Typen mit unterschiedlicher Anzahl Spalten nicht vergleichen" -#: utils/adt/ruleutils.c:4286 +#: utils/adt/ruleutils.c:4297 #, c-format msgid "rule \"%s\" has unsupported event type %d" msgstr "Regel »%s« hat nicht unterstützten Ereignistyp %d" -#: utils/adt/selfuncs.c:5318 +#: utils/adt/selfuncs.c:5418 #, c-format msgid "case insensitive matching not supported on type bytea" msgstr "Mustersuche ohne Rücksicht auf Groß-/Kleinschreibung wird für Typ bytea nicht unterstützt" -#: utils/adt/selfuncs.c:5421 +#: utils/adt/selfuncs.c:5521 #, c-format msgid "regular-expression matching not supported on type bytea" msgstr "Mustersuche mit regulären Ausdrücken wird für Typ bytea nicht unterstützt" @@ -19987,137 +19837,136 @@ msgstr "Mustersuche mit regulären Ausdrücken wird für Typ bytea nicht unterst msgid "invalid input syntax for type tid: \"%s\"" msgstr "ungültige Eingabesyntax für Typ tid: »%s«" -#: utils/adt/timestamp.c:99 +#: utils/adt/timestamp.c:100 #, c-format msgid "TIMESTAMP(%d)%s precision must not be negative" msgstr "Präzision von TIMESTAMP(%d)%s darf nicht negativ sein" -#: utils/adt/timestamp.c:105 +#: utils/adt/timestamp.c:106 #, c-format msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d" msgstr "Präzision von TIMESTAMP(%d)%s auf erlaubten Höchstwert %d reduziert" -#: utils/adt/timestamp.c:170 utils/adt/timestamp.c:445 +#: utils/adt/timestamp.c:171 utils/adt/timestamp.c:446 #, c-format msgid "timestamp out of range: \"%s\"" msgstr "timestamp ist außerhalb des gültigen Bereichs: »%s«" -#: utils/adt/timestamp.c:188 utils/adt/timestamp.c:463 -#: utils/adt/timestamp.c:993 +#: utils/adt/timestamp.c:189 utils/adt/timestamp.c:464 +#: utils/adt/timestamp.c:991 #, c-format msgid "date/time value \"%s\" is no longer supported" msgstr "Datum/Zeit-Wert »%s« wird nicht mehr unterstützt" -#: utils/adt/timestamp.c:258 utils/adt/timestamp.c:754 +#: utils/adt/timestamp.c:259 utils/adt/timestamp.c:755 #, c-format msgid "timestamp cannot be NaN" msgstr "timestamp kann nicht NaN sein" -#: utils/adt/timestamp.c:380 +#: utils/adt/timestamp.c:381 #, c-format msgid "timestamp(%d) precision must be between %d and %d" msgstr "Präzision von timestamp(%d) muss zwischen %d und %d sein" -#: utils/adt/timestamp.c:513 +#: utils/adt/timestamp.c:514 #, c-format msgid "invalid input syntax for numeric time zone: \"%s\"" msgstr "ungültige Eingabesyntax für numerische Zeitzone: »%s«" -#: utils/adt/timestamp.c:515 +#: utils/adt/timestamp.c:516 #, c-format msgid "Numeric time zones must have \"-\" or \"+\" as first character." msgstr "Numerische Zeitzonen müssen »-« oder »+« als erstes Zeichen haben." -#: utils/adt/timestamp.c:528 +#: utils/adt/timestamp.c:529 #, c-format msgid "numeric time zone \"%s\" out of range" msgstr "numerische Zeitzone »%s« ist außerhalb des gültigen Bereichs" -#: utils/adt/timestamp.c:631 utils/adt/timestamp.c:641 -#: utils/adt/timestamp.c:653 +#: utils/adt/timestamp.c:632 utils/adt/timestamp.c:642 +#: utils/adt/timestamp.c:654 #, c-format msgid "timestamp out of range: %d-%02d-%02d %d:%02d:%02g" msgstr "timestamp ist außerhalb des gültigen Bereichs: %d-%02d-%02d %d:%02d:%02g" -#: utils/adt/timestamp.c:770 utils/adt/timestamp.c:776 -#: utils/adt/timestamp.c:791 +#: utils/adt/timestamp.c:773 utils/adt/timestamp.c:789 #, c-format msgid "timestamp out of range: \"%g\"" msgstr "timestamp ist außerhalb des gültigen Bereichs: »%g«" -#: utils/adt/timestamp.c:987 utils/adt/timestamp.c:1558 -#: utils/adt/timestamp.c:2068 utils/adt/timestamp.c:3220 -#: utils/adt/timestamp.c:3225 utils/adt/timestamp.c:3230 -#: utils/adt/timestamp.c:3280 utils/adt/timestamp.c:3287 -#: utils/adt/timestamp.c:3294 utils/adt/timestamp.c:3314 -#: utils/adt/timestamp.c:3321 utils/adt/timestamp.c:3328 -#: utils/adt/timestamp.c:3358 utils/adt/timestamp.c:3366 -#: utils/adt/timestamp.c:3411 utils/adt/timestamp.c:3751 -#: utils/adt/timestamp.c:3880 utils/adt/timestamp.c:4271 +#: utils/adt/timestamp.c:985 utils/adt/timestamp.c:1609 +#: utils/adt/timestamp.c:2122 utils/adt/timestamp.c:3316 +#: utils/adt/timestamp.c:3321 utils/adt/timestamp.c:3326 +#: utils/adt/timestamp.c:3376 utils/adt/timestamp.c:3383 +#: utils/adt/timestamp.c:3390 utils/adt/timestamp.c:3410 +#: utils/adt/timestamp.c:3417 utils/adt/timestamp.c:3424 +#: utils/adt/timestamp.c:3454 utils/adt/timestamp.c:3462 +#: utils/adt/timestamp.c:3507 utils/adt/timestamp.c:3847 +#: utils/adt/timestamp.c:3976 utils/adt/timestamp.c:4367 #, c-format msgid "interval out of range" msgstr "interval-Wert ist außerhalb des gültigen Bereichs" -#: utils/adt/timestamp.c:1128 utils/adt/timestamp.c:1161 +#: utils/adt/timestamp.c:1126 utils/adt/timestamp.c:1159 #, c-format msgid "invalid INTERVAL type modifier" msgstr "ungültiger Modifikator für Typ INTERVAL" -#: utils/adt/timestamp.c:1144 +#: utils/adt/timestamp.c:1142 #, c-format msgid "INTERVAL(%d) precision must not be negative" msgstr "INTERVAL(%d)-Präzision darf nicht negativ sein" -#: utils/adt/timestamp.c:1150 +#: utils/adt/timestamp.c:1148 #, c-format msgid "INTERVAL(%d) precision reduced to maximum allowed, %d" msgstr "INTERVAL(%d)-Präzision auf erlaubtes Maximum %d reduziert" -#: utils/adt/timestamp.c:1502 +#: utils/adt/timestamp.c:1553 #, c-format msgid "interval(%d) precision must be between %d and %d" msgstr "Präzision von interval(%d) muss zwischen %d und %d sein" -#: utils/adt/timestamp.c:2797 +#: utils/adt/timestamp.c:2893 #, c-format msgid "cannot subtract infinite timestamps" msgstr "kann unendliche timestamp-Werte nicht subtrahieren" -#: utils/adt/timestamp.c:4006 utils/adt/timestamp.c:4531 -#: utils/adt/timestamp.c:4715 utils/adt/timestamp.c:4740 +#: utils/adt/timestamp.c:4102 utils/adt/timestamp.c:4627 +#: utils/adt/timestamp.c:4811 utils/adt/timestamp.c:4836 #, c-format msgid "timestamp units \"%s\" not supported" msgstr "»timestamp«-Einheit »%s« nicht unterstützt" -#: utils/adt/timestamp.c:4020 utils/adt/timestamp.c:4485 -#: utils/adt/timestamp.c:4750 +#: utils/adt/timestamp.c:4116 utils/adt/timestamp.c:4581 +#: utils/adt/timestamp.c:4846 #, c-format msgid "timestamp units \"%s\" not recognized" msgstr "»timestamp«-Einheit »%s« nicht erkannt" -#: utils/adt/timestamp.c:4160 utils/adt/timestamp.c:4526 -#: utils/adt/timestamp.c:4937 utils/adt/timestamp.c:4963 +#: utils/adt/timestamp.c:4256 utils/adt/timestamp.c:4622 +#: utils/adt/timestamp.c:5033 utils/adt/timestamp.c:5059 #, c-format msgid "timestamp with time zone units \"%s\" not supported" msgstr "»timestamp with time zone«-Einheit »%s« nicht unterstützt" -#: utils/adt/timestamp.c:4177 utils/adt/timestamp.c:4480 -#: utils/adt/timestamp.c:4972 +#: utils/adt/timestamp.c:4273 utils/adt/timestamp.c:4576 +#: utils/adt/timestamp.c:5068 #, c-format msgid "timestamp with time zone units \"%s\" not recognized" msgstr "»timestamp with time zone«-Einheit »%s« nicht erkannt" -#: utils/adt/timestamp.c:4258 +#: utils/adt/timestamp.c:4354 #, c-format msgid "interval units \"%s\" not supported because months usually have fractional weeks" msgstr "»interval«-Einheit »%s« wird nicht unterstützt, weil Monate gewöhnlich partielle Wochen haben" -#: utils/adt/timestamp.c:4264 utils/adt/timestamp.c:5078 +#: utils/adt/timestamp.c:4360 utils/adt/timestamp.c:5174 #, c-format msgid "interval units \"%s\" not supported" msgstr "»interval«-Einheit »%s« nicht unterstützt" -#: utils/adt/timestamp.c:4280 utils/adt/timestamp.c:5105 +#: utils/adt/timestamp.c:4376 utils/adt/timestamp.c:5201 #, c-format msgid "interval units \"%s\" not recognized" msgstr "»interval«-Einheit »%s« nicht erkannt" @@ -20178,17 +20027,17 @@ msgstr "Operator ist zu lang in tsquery: »%s«" msgid "word is too long in tsquery: \"%s\"" msgstr "Wort ist zu lang in tsquery: »%s«" -#: utils/adt/tsquery.c:643 +#: utils/adt/tsquery.c:642 #, c-format msgid "text-search query doesn't contain lexemes: \"%s\"" msgstr "Textsucheanfrage enthält keine Lexeme: »%s«" -#: utils/adt/tsquery.c:654 utils/adt/tsquery_util.c:347 +#: utils/adt/tsquery.c:653 utils/adt/tsquery_util.c:375 #, c-format msgid "tsquery is too large" msgstr "tsquery ist zu groß" -#: utils/adt/tsquery_cleanup.c:601 +#: utils/adt/tsquery_cleanup.c:407 #, c-format msgid "text-search query contains only stop words or doesn't contain lexemes, ignored" msgstr "Textsucheanfrage enthält nur Stoppwörter oder enthält keine Lexeme, ignoriert" @@ -20198,7 +20047,7 @@ msgstr "Textsucheanfrage enthält nur Stoppwörter oder enthält keine Lexeme, i msgid "distance in phrase operator should be non-negative and less than %d" msgstr "Abstand im Phrasenoperator sollte nicht negativ und kleiner als %d sein" -#: utils/adt/tsquery_rewrite.c:292 +#: utils/adt/tsquery_rewrite.c:321 #, c-format msgid "ts_rewrite query must return two tsquery columns" msgstr "ts_rewrite-Anfrage muss zwei tsquery-Spalten zurückgeben" @@ -20233,58 +20082,58 @@ msgstr "Wort ist zu lang (%ld Bytes, maximal %ld Bytes)" msgid "string is too long for tsvector (%ld bytes, max %ld bytes)" msgstr "Zeichenkette ist zu lang für tsvector (%ld Bytes, maximal %ld Bytes)" -#: utils/adt/tsvector_op.c:321 utils/adt/tsvector_op.c:608 -#: utils/adt/tsvector_op.c:776 +#: utils/adt/tsvector_op.c:322 utils/adt/tsvector_op.c:609 +#: utils/adt/tsvector_op.c:777 #, c-format msgid "lexeme array may not contain nulls" msgstr "Lexem-Array darf keine NULL-Werte enthalten" -#: utils/adt/tsvector_op.c:851 +#: utils/adt/tsvector_op.c:852 #, c-format msgid "weight array may not contain nulls" msgstr "Gewichtungs-Array darf keine NULL-Werte enthalten" -#: utils/adt/tsvector_op.c:875 +#: utils/adt/tsvector_op.c:876 #, c-format msgid "unrecognized weight: \"%c\"" msgstr "unbekannte Gewichtung: »%c«" -#: utils/adt/tsvector_op.c:2061 +#: utils/adt/tsvector_op.c:2313 #, c-format msgid "ts_stat query must return one tsvector column" msgstr "ts_stat-Anfrage muss eine tsvector-Spalte zurückgeben" -#: utils/adt/tsvector_op.c:2243 +#: utils/adt/tsvector_op.c:2495 #, c-format msgid "tsvector column \"%s\" does not exist" msgstr "tsvector-Spalte »%s« existiert nicht" -#: utils/adt/tsvector_op.c:2249 +#: utils/adt/tsvector_op.c:2501 #, c-format msgid "column \"%s\" is not of tsvector type" msgstr "Spalte »%s« hat nicht Typ tsvector" -#: utils/adt/tsvector_op.c:2261 +#: utils/adt/tsvector_op.c:2513 #, c-format msgid "configuration column \"%s\" does not exist" msgstr "Konfigurationsspalte »%s« existiert nicht" -#: utils/adt/tsvector_op.c:2267 +#: utils/adt/tsvector_op.c:2519 #, c-format msgid "column \"%s\" is not of regconfig type" msgstr "Spalte »%s« hat nicht Typ regconfig" -#: utils/adt/tsvector_op.c:2274 +#: utils/adt/tsvector_op.c:2526 #, c-format msgid "configuration column \"%s\" must not be null" msgstr "Konfigurationsspalte »%s« darf nicht NULL sein" -#: utils/adt/tsvector_op.c:2287 +#: utils/adt/tsvector_op.c:2539 #, c-format msgid "text search configuration name \"%s\" must be schema-qualified" msgstr "Textsuchekonfigurationsname »%s« muss Schemaqualifikation haben" -#: utils/adt/tsvector_op.c:2312 +#: utils/adt/tsvector_op.c:2564 #, c-format msgid "column \"%s\" is not of a character type" msgstr "Spalte »%s« hat keinen Zeichentyp" @@ -20381,12 +20230,12 @@ msgstr "binäres »Oder« nicht mit Bitketten unterschiedlicher Länge möglich" msgid "cannot XOR bit strings of different sizes" msgstr "binäres »Exklusiv-Oder« nicht mit Bitketten unterschiedlicher Länge möglich" -#: utils/adt/varbit.c:1793 utils/adt/varbit.c:1851 +#: utils/adt/varbit.c:1803 utils/adt/varbit.c:1861 #, c-format msgid "bit index %d out of valid range (0..%d)" msgstr "Bitindex %d ist außerhalb des gültigen Bereichs (0..%d)" -#: utils/adt/varbit.c:1802 utils/adt/varlena.c:3002 +#: utils/adt/varbit.c:1812 utils/adt/varlena.c:3002 #, c-format msgid "new bit must be 0 or 1" msgstr "neues Bit muss 0 oder 1 sein" @@ -20477,141 +20326,141 @@ msgstr "Argument von ntile muss größer als null sein" msgid "argument of nth_value must be greater than zero" msgstr "Argument von nth_value muss größer als null sein" -#: utils/adt/xml.c:171 +#: utils/adt/xml.c:175 #, c-format msgid "unsupported XML feature" msgstr "nicht unterstützte XML-Funktionalität" -#: utils/adt/xml.c:172 +#: utils/adt/xml.c:176 #, c-format msgid "This functionality requires the server to be built with libxml support." msgstr "Diese Funktionalität verlangt, dass der Server mit Libxml-Unterstützung gebaut wird." -#: utils/adt/xml.c:173 +#: utils/adt/xml.c:177 #, c-format msgid "You need to rebuild PostgreSQL using --with-libxml." msgstr "Sie müssen PostgreSQL mit --with-libxml neu bauen." -#: utils/adt/xml.c:192 utils/mb/mbutils.c:523 +#: utils/adt/xml.c:196 utils/mb/mbutils.c:523 #, c-format msgid "invalid encoding name \"%s\"" msgstr "ungültiger Kodierungsname »%s«" -#: utils/adt/xml.c:435 utils/adt/xml.c:440 +#: utils/adt/xml.c:439 utils/adt/xml.c:444 #, c-format msgid "invalid XML comment" msgstr "ungültiger XML-Kommentar" -#: utils/adt/xml.c:569 +#: utils/adt/xml.c:573 #, c-format msgid "not an XML document" msgstr "kein XML-Dokument" -#: utils/adt/xml.c:728 utils/adt/xml.c:751 +#: utils/adt/xml.c:732 utils/adt/xml.c:755 #, c-format msgid "invalid XML processing instruction" msgstr "ungültige XML-Verarbeitungsanweisung" -#: utils/adt/xml.c:729 +#: utils/adt/xml.c:733 #, c-format msgid "XML processing instruction target name cannot be \"%s\"." msgstr "Die Zielangabe der XML-Verarbeitungsanweisung darf nicht »%s« sein." -#: utils/adt/xml.c:752 +#: utils/adt/xml.c:756 #, c-format msgid "XML processing instruction cannot contain \"?>\"." msgstr "XML-Verarbeitungsanweisung darf nicht »?>« enthalten." -#: utils/adt/xml.c:831 +#: utils/adt/xml.c:835 #, c-format msgid "xmlvalidate is not implemented" msgstr "xmlvalidate ist nicht implementiert" -#: utils/adt/xml.c:910 +#: utils/adt/xml.c:914 #, c-format msgid "could not initialize XML library" msgstr "konnte XML-Bibliothek nicht initialisieren" -#: utils/adt/xml.c:911 +#: utils/adt/xml.c:915 #, c-format msgid "libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u." msgstr "libxml2 hat inkompatiblen char-Typ: sizeof(char)=%u, sizeof(xmlChar)=%u." -#: utils/adt/xml.c:997 +#: utils/adt/xml.c:1001 #, c-format msgid "could not set up XML error handler" msgstr "konnte XML-Fehlerbehandlung nicht einrichten" -#: utils/adt/xml.c:998 +#: utils/adt/xml.c:1002 #, c-format msgid "This probably indicates that the version of libxml2 being used is not compatible with the libxml2 header files that PostgreSQL was built with." msgstr "Das deutet wahrscheinlich darauf hin, dass die verwendete Version von libxml2 nicht mit den Header-Dateien der Version, mit der PostgreSQL gebaut wurde, kompatibel ist." -#: utils/adt/xml.c:1735 +#: utils/adt/xml.c:1739 msgid "Invalid character value." msgstr "Ungültiger Zeichenwert." -#: utils/adt/xml.c:1738 +#: utils/adt/xml.c:1742 msgid "Space required." msgstr "Leerzeichen benötigt." -#: utils/adt/xml.c:1741 +#: utils/adt/xml.c:1745 msgid "standalone accepts only 'yes' or 'no'." msgstr "standalone akzeptiert nur »yes« oder »no«." -#: utils/adt/xml.c:1744 +#: utils/adt/xml.c:1748 msgid "Malformed declaration: missing version." msgstr "Fehlerhafte Deklaration: Version fehlt." -#: utils/adt/xml.c:1747 +#: utils/adt/xml.c:1751 msgid "Missing encoding in text declaration." msgstr "Fehlende Kodierung in Textdeklaration." -#: utils/adt/xml.c:1750 +#: utils/adt/xml.c:1754 msgid "Parsing XML declaration: '?>' expected." msgstr "Beim Parsen der XML-Deklaration: »?>« erwartet." -#: utils/adt/xml.c:1753 +#: utils/adt/xml.c:1757 #, c-format msgid "Unrecognized libxml error code: %d." msgstr "Unbekannter Libxml-Fehlercode: %d." -#: utils/adt/xml.c:2028 +#: utils/adt/xml.c:2032 #, c-format msgid "XML does not support infinite date values." msgstr "XML unterstützt keine unendlichen Datumswerte." -#: utils/adt/xml.c:2050 utils/adt/xml.c:2077 +#: utils/adt/xml.c:2054 utils/adt/xml.c:2081 #, c-format msgid "XML does not support infinite timestamp values." msgstr "XML unterstützt keine unendlichen timestamp-Werte." -#: utils/adt/xml.c:2468 +#: utils/adt/xml.c:2481 #, c-format msgid "invalid query" msgstr "ungültige Anfrage" -#: utils/adt/xml.c:3793 +#: utils/adt/xml.c:3806 #, c-format msgid "invalid array for XML namespace mapping" msgstr "ungültiges Array for XML-Namensraumabbildung" -#: utils/adt/xml.c:3794 +#: utils/adt/xml.c:3807 #, c-format msgid "The array must be two-dimensional with length of the second axis equal to 2." msgstr "Das Array muss zweidimensional sein und die Länge der zweiten Achse muss gleich 2 sein." -#: utils/adt/xml.c:3818 +#: utils/adt/xml.c:3831 #, c-format msgid "empty XPath expression" msgstr "leerer XPath-Ausdruck" -#: utils/adt/xml.c:3867 +#: utils/adt/xml.c:3880 #, c-format msgid "neither namespace name nor URI may be null" msgstr "weder Namensraumname noch URI dürfen NULL sein" -#: utils/adt/xml.c:3874 +#: utils/adt/xml.c:3887 #, c-format msgid "could not register XML namespace with name \"%s\" and URI \"%s\"" msgstr "konnte XML-Namensraum mit Namen »%s« und URI »%s« nicht registrieren" @@ -20632,22 +20481,22 @@ msgstr "keine Eingabefunktion verfügbar für Typ %s" msgid "no output function available for type %s" msgstr "keine Ausgabefunktion verfügbar für Typ %s" -#: utils/cache/plancache.c:716 +#: utils/cache/plancache.c:718 #, c-format msgid "cached plan must not change result type" msgstr "gecachter Plan darf den Ergebnistyp nicht ändern" -#: utils/cache/relcache.c:5199 +#: utils/cache/relcache.c:5226 #, c-format msgid "could not create relation-cache initialization file \"%s\": %m" msgstr "konnte Initialisierungsdatei für Relationscache »%s« nicht erzeugen: %m" -#: utils/cache/relcache.c:5201 +#: utils/cache/relcache.c:5228 #, c-format msgid "Continuing anyway, but there's something wrong." msgstr "Setze trotzdem fort, aber irgendwas stimmt nicht." -#: utils/cache/relcache.c:5475 +#: utils/cache/relcache.c:5502 #, c-format msgid "could not remove cache file \"%s\": %m" msgstr "konnte Cache-Datei »%s« nicht löschen: %m" @@ -20731,82 +20580,82 @@ msgstr "konnte Datei »%s« nicht als stdou neu öffnen: %m" msgid "[unknown]" msgstr "[unbekannt]" -#: utils/error/elog.c:2881 utils/error/elog.c:3184 utils/error/elog.c:3292 +#: utils/error/elog.c:2882 utils/error/elog.c:3185 utils/error/elog.c:3293 msgid "missing error text" msgstr "fehlender Fehlertext" -#: utils/error/elog.c:2884 utils/error/elog.c:2887 utils/error/elog.c:3295 -#: utils/error/elog.c:3298 +#: utils/error/elog.c:2885 utils/error/elog.c:2888 utils/error/elog.c:3296 +#: utils/error/elog.c:3299 #, c-format msgid " at character %d" msgstr " bei Zeichen %d" -#: utils/error/elog.c:2897 utils/error/elog.c:2904 +#: utils/error/elog.c:2898 utils/error/elog.c:2905 msgid "DETAIL: " msgstr "DETAIL: " -#: utils/error/elog.c:2911 +#: utils/error/elog.c:2912 msgid "HINT: " msgstr "TIPP: " -#: utils/error/elog.c:2918 +#: utils/error/elog.c:2919 msgid "QUERY: " msgstr "ANFRAGE: " -#: utils/error/elog.c:2925 +#: utils/error/elog.c:2926 msgid "CONTEXT: " msgstr "ZUSAMMENHANG: " -#: utils/error/elog.c:2935 +#: utils/error/elog.c:2936 #, c-format msgid "LOCATION: %s, %s:%d\n" msgstr "ORT: %s, %s:%d\n" -#: utils/error/elog.c:2942 +#: utils/error/elog.c:2943 #, c-format msgid "LOCATION: %s:%d\n" msgstr "ORT: %s:%d\n" -#: utils/error/elog.c:2956 +#: utils/error/elog.c:2957 msgid "STATEMENT: " msgstr "ANWEISUNG: " #. translator: This string will be truncated at 47 #. characters expanded. -#: utils/error/elog.c:3413 +#: utils/error/elog.c:3414 #, c-format msgid "operating system error %d" msgstr "Betriebssystemfehler %d" -#: utils/error/elog.c:3611 +#: utils/error/elog.c:3612 msgid "DEBUG" msgstr "DEBUG" -#: utils/error/elog.c:3615 +#: utils/error/elog.c:3616 msgid "LOG" msgstr "LOG" -#: utils/error/elog.c:3618 +#: utils/error/elog.c:3619 msgid "INFO" msgstr "INFO" -#: utils/error/elog.c:3621 +#: utils/error/elog.c:3622 msgid "NOTICE" msgstr "HINWEIS" -#: utils/error/elog.c:3624 +#: utils/error/elog.c:3625 msgid "WARNING" msgstr "WARNUNG" -#: utils/error/elog.c:3627 +#: utils/error/elog.c:3628 msgid "ERROR" msgstr "FEHLER" -#: utils/error/elog.c:3630 +#: utils/error/elog.c:3631 msgid "FATAL" msgstr "FATAL" -#: utils/error/elog.c:3633 +#: utils/error/elog.c:3634 msgid "PANIC" msgstr "PANIK" @@ -20944,7 +20793,7 @@ msgstr "konnte Zeilenbeschreibung für Funktion, die »record« zurückgibt, nic msgid "could not change directory to \"%s\": %m" msgstr "konnte nicht in Verzeichnis »%s« wechseln: %m" -#: utils/init/miscinit.c:449 utils/misc/guc.c:6018 +#: utils/init/miscinit.c:449 utils/misc/guc.c:6016 #, c-format msgid "cannot set parameter \"%s\" within security-restricted operation" msgstr "kann Parameter »%s« nicht in einer sicherheitsbeschränkten Operation setzen" @@ -21055,7 +20904,7 @@ msgstr "Die Datei ist anscheinend aus Versehen übrig geblieben, konnte aber nic msgid "could not write lock file \"%s\": %m" msgstr "konnte Sperrdatei »%s« nicht schreiben: %m" -#: utils/init/miscinit.c:1172 utils/init/miscinit.c:1301 utils/misc/guc.c:8812 +#: utils/init/miscinit.c:1172 utils/init/miscinit.c:1301 utils/misc/guc.c:8818 #, c-format msgid "could not read from file \"%s\": %m" msgstr "konnte nicht aus Datei »%s« lesen: %m" @@ -22172,634 +22021,634 @@ msgstr "Schreibt eine Logmeldung, wenn Checkpoint-Segmente häufiger als dieser msgid "Write a message to the server log if checkpoints caused by the filling of checkpoint segment files happens more frequently than this number of seconds. Zero turns off the warning." msgstr "Schreibe Meldung in den Serverlog, wenn Checkpoints, die durch Füllen der Checkpoint-Segmente ausgelöst werden, häufiger als dieser Wert in Sekunden passieren. Null schaltet die Warnung ab." -#: utils/misc/guc.c:2273 utils/misc/guc.c:2431 utils/misc/guc.c:2459 +#: utils/misc/guc.c:2273 utils/misc/guc.c:2430 utils/misc/guc.c:2457 msgid "Number of pages after which previously performed writes are flushed to disk." msgstr "Anzahl der Seiten, nach denen getätigte Schreibvorgänge auf die Festplatte zurückgeschrieben werden." -#: utils/misc/guc.c:2285 +#: utils/misc/guc.c:2284 msgid "Sets the number of disk-page buffers in shared memory for WAL." msgstr "Setzt die Anzahl Diskseitenpuffer für WAL im Shared Memory." -#: utils/misc/guc.c:2296 +#: utils/misc/guc.c:2295 msgid "Time between WAL flushes performed in the WAL writer." msgstr "Zeit zwischen WAL-Flush-Operationen im WAL-Writer." -#: utils/misc/guc.c:2307 -msgid "Amount of WAL written out by WAL writer triggering a flush." +#: utils/misc/guc.c:2306 +msgid "Amount of WAL written out by WAL writer that triggers a flush." msgstr "Ein Flush wird ausgelöst, wenn diese Menge WAL vom WAL-Writer geschrieben worden ist." -#: utils/misc/guc.c:2319 +#: utils/misc/guc.c:2318 msgid "Sets the maximum number of simultaneously running WAL sender processes." msgstr "Setzt die maximale Anzahl gleichzeitig laufender WAL-Sender-Prozesse." -#: utils/misc/guc.c:2330 +#: utils/misc/guc.c:2329 msgid "Sets the maximum number of simultaneously defined replication slots." msgstr "Setzt die maximale Anzahl von gleichzeitig definierten Replikations-Slots." -#: utils/misc/guc.c:2340 +#: utils/misc/guc.c:2339 msgid "Sets the maximum time to wait for WAL replication." msgstr "Setzt die maximale Zeit, um auf WAL-Replikation zu warten." -#: utils/misc/guc.c:2351 +#: utils/misc/guc.c:2350 msgid "Sets the delay in microseconds between transaction commit and flushing WAL to disk." msgstr "Setzt die Verzögerung in Millisekunden zwischen Transaktionsabschluss und dem Schreiben von WAL auf die Festplatte." -#: utils/misc/guc.c:2363 +#: utils/misc/guc.c:2362 msgid "Sets the minimum concurrent open transactions before performing commit_delay." msgstr "Setzt die minimale Anzahl gleichzeitig offener Transaktionen bevor »commit_delay« angewendet wird." -#: utils/misc/guc.c:2374 +#: utils/misc/guc.c:2373 msgid "Sets the number of digits displayed for floating-point values." msgstr "Setzt die Anzahl ausgegebener Ziffern für Fließkommawerte." -#: utils/misc/guc.c:2375 +#: utils/misc/guc.c:2374 msgid "This affects real, double precision, and geometric data types. The parameter value is added to the standard number of digits (FLT_DIG or DBL_DIG as appropriate)." msgstr "Diese Einstellung betrifft real, double precision und geometrische Datentypen. Der Parameterwert wird zur Standardziffernanzahl (FLT_DIG bzw. DBL_DIG) hinzuaddiert." -#: utils/misc/guc.c:2386 +#: utils/misc/guc.c:2385 msgid "Sets the minimum execution time above which statements will be logged." msgstr "Setzt die minimale Ausführungszeit, über der Anweisungen geloggt werden." -#: utils/misc/guc.c:2388 +#: utils/misc/guc.c:2387 msgid "Zero prints all queries. -1 turns this feature off." msgstr "Null zeigt alle Anfragen. -1 schaltet dieses Feature aus." -#: utils/misc/guc.c:2398 +#: utils/misc/guc.c:2397 msgid "Sets the minimum execution time above which autovacuum actions will be logged." msgstr "Setzt die minimale Ausführungszeit, über der Autovacuum-Aktionen geloggt werden." -#: utils/misc/guc.c:2400 +#: utils/misc/guc.c:2399 msgid "Zero prints all actions. -1 turns autovacuum logging off." msgstr "Null gibt alls Aktionen aus. -1 schaltet die Log-Aufzeichnung über Autovacuum aus." -#: utils/misc/guc.c:2410 +#: utils/misc/guc.c:2409 msgid "Background writer sleep time between rounds." msgstr "Schlafzeit zwischen Durchläufen des Background-Writers." -#: utils/misc/guc.c:2421 +#: utils/misc/guc.c:2420 msgid "Background writer maximum number of LRU pages to flush per round." msgstr "Maximale Anzahl der vom Background-Writer pro Durchlauf zu flushenden LRU-Seiten." -#: utils/misc/guc.c:2445 +#: utils/misc/guc.c:2443 msgid "Number of simultaneous requests that can be handled efficiently by the disk subsystem." msgstr "Anzahl simultaner Anfragen, die das Festplattensubsystem effizient bearbeiten kann." -#: utils/misc/guc.c:2446 +#: utils/misc/guc.c:2444 msgid "For RAID arrays, this should be approximately the number of drive spindles in the array." msgstr "Für RAID-Arrays sollte dies ungefähr die Anzahl Spindeln im Array sein." -#: utils/misc/guc.c:2472 +#: utils/misc/guc.c:2470 msgid "Maximum number of concurrent worker processes." msgstr "Maximale Anzahl gleichzeitiger Worker-Prozesse." -#: utils/misc/guc.c:2482 +#: utils/misc/guc.c:2480 msgid "Automatic log file rotation will occur after N minutes." msgstr "Automatische Rotation der Logdateien geschieht nach N Minuten." -#: utils/misc/guc.c:2493 +#: utils/misc/guc.c:2491 msgid "Automatic log file rotation will occur after N kilobytes." msgstr "Automatische Rotation der Logdateien geschieht nach N Kilobytes." -#: utils/misc/guc.c:2504 +#: utils/misc/guc.c:2502 msgid "Shows the maximum number of function arguments." msgstr "Setzt die maximale Anzahl von Funktionsargumenten." -#: utils/misc/guc.c:2515 +#: utils/misc/guc.c:2513 msgid "Shows the maximum number of index keys." msgstr "Zeigt die maximale Anzahl von Indexschlüsseln." -#: utils/misc/guc.c:2526 +#: utils/misc/guc.c:2524 msgid "Shows the maximum identifier length." msgstr "Zeigt die maximale Länge von Bezeichnern." -#: utils/misc/guc.c:2537 +#: utils/misc/guc.c:2535 msgid "Shows the size of a disk block." msgstr "Zeigt die Größe eines Diskblocks." -#: utils/misc/guc.c:2548 +#: utils/misc/guc.c:2546 msgid "Shows the number of pages per disk file." msgstr "Zeigt die Anzahl Seiten pro Diskdatei." -#: utils/misc/guc.c:2559 +#: utils/misc/guc.c:2557 msgid "Shows the block size in the write ahead log." msgstr "Zeigt die Blockgröße im Write-Ahead-Log." -#: utils/misc/guc.c:2570 +#: utils/misc/guc.c:2568 msgid "Sets the time to wait before retrying to retrieve WAL after a failed attempt." msgstr "Setzt die Zeit, die gewartet wird, bevor nach einem fehlgeschlagenen Versuch neue WAL-Daten angefordert werden." -#: utils/misc/guc.c:2582 +#: utils/misc/guc.c:2580 msgid "Shows the number of pages per write ahead log segment." msgstr "Zeit die Anzahl Seiten pro Write-Ahead-Log-Segment." -#: utils/misc/guc.c:2595 +#: utils/misc/guc.c:2593 msgid "Time to sleep between autovacuum runs." msgstr "Wartezeit zwischen Autovacuum-Durchläufen." -#: utils/misc/guc.c:2605 +#: utils/misc/guc.c:2603 msgid "Minimum number of tuple updates or deletes prior to vacuum." msgstr "Mindestanzahl an geänderten oder gelöschten Tupeln vor einem Vacuum." -#: utils/misc/guc.c:2614 +#: utils/misc/guc.c:2612 msgid "Minimum number of tuple inserts, updates, or deletes prior to analyze." msgstr "Mindestanzahl an Einfüge-, Änderungs- oder Löschoperationen von einem Analyze." -#: utils/misc/guc.c:2624 +#: utils/misc/guc.c:2622 msgid "Age at which to autovacuum a table to prevent transaction ID wraparound." msgstr "Alter, nach dem eine Tabelle automatisch gevacuumt wird, um Transaktionsnummernüberlauf zu verhindern." -#: utils/misc/guc.c:2635 +#: utils/misc/guc.c:2633 msgid "Multixact age at which to autovacuum a table to prevent multixact wraparound." msgstr "Multixact-Alter, nach dem eine Tabelle automatisch gevacuumt wird, um Transaktionsnummernüberlauf zu verhindern." -#: utils/misc/guc.c:2645 +#: utils/misc/guc.c:2643 msgid "Sets the maximum number of simultaneously running autovacuum worker processes." msgstr "Setzt die maximale Anzahl gleichzeitig laufender Autovacuum-Worker-Prozesse." -#: utils/misc/guc.c:2655 +#: utils/misc/guc.c:2653 msgid "Sets the maximum number of parallel processes per executor node." msgstr "Setzt die maximale Anzahl paralleler Prozesse pro Executor-Knoten." -#: utils/misc/guc.c:2665 +#: utils/misc/guc.c:2663 msgid "Sets the maximum memory to be used by each autovacuum worker process." msgstr "Setzt die maximale Speichergröße für jeden Autovacuum-Worker-Prozess." -#: utils/misc/guc.c:2676 +#: utils/misc/guc.c:2674 msgid "Time before a snapshot is too old to read pages changed after the snapshot was taken." msgstr "Zeit bevor ein Snapshot zu alt ist, um Seiten zu lesen, die geändert wurden, nachdem der Snapshot gemacht wurde." -#: utils/misc/guc.c:2677 +#: utils/misc/guc.c:2675 msgid "A value of -1 disables this feature." msgstr "Der Wert -1 schaltet dieses Feature aus." -#: utils/misc/guc.c:2687 +#: utils/misc/guc.c:2685 msgid "Time between issuing TCP keepalives." msgstr "Zeit zwischen TCP-Keepalive-Sendungen." -#: utils/misc/guc.c:2688 utils/misc/guc.c:2699 +#: utils/misc/guc.c:2686 utils/misc/guc.c:2697 msgid "A value of 0 uses the system default." msgstr "Der Wert 0 verwendet die Systemvoreinstellung." -#: utils/misc/guc.c:2698 +#: utils/misc/guc.c:2696 msgid "Time between TCP keepalive retransmits." msgstr "Zeit zwischen TCP-Keepalive-Neuübertragungen." -#: utils/misc/guc.c:2709 +#: utils/misc/guc.c:2707 msgid "SSL renegotiation is no longer supported; this can only be 0." msgstr "SSL-Renegotiation wird nicht mehr unterstützt; kann nur auf 0 gesetzt werden." -#: utils/misc/guc.c:2720 +#: utils/misc/guc.c:2718 msgid "Maximum number of TCP keepalive retransmits." msgstr "Maximale Anzahl an TCP-Keepalive-Neuübertragungen." -#: utils/misc/guc.c:2721 +#: utils/misc/guc.c:2719 msgid "This controls the number of consecutive keepalive retransmits that can be lost before a connection is considered dead. A value of 0 uses the system default." msgstr "Dies bestimmt die Anzahl von aufeinanderfolgenden Keepalive-Neuübertragungen, die verloren gehen dürfen, bis die Verbindung als tot betrachtet wird. Der Wert 0 verwendet die Betriebssystemvoreinstellung." -#: utils/misc/guc.c:2732 +#: utils/misc/guc.c:2730 msgid "Sets the maximum allowed result for exact search by GIN." msgstr "Setzt die maximal erlaubte Anzahl Ergebnisse für eine genaue Suche mit GIN." -#: utils/misc/guc.c:2743 +#: utils/misc/guc.c:2741 msgid "Sets the planner's assumption about the size of the disk cache." msgstr "Setzt die Annahme des Planers über die Größe des Festplatten-Caches." -#: utils/misc/guc.c:2744 +#: utils/misc/guc.c:2742 msgid "That is, the portion of the kernel's disk cache that will be used for PostgreSQL data files. This is measured in disk pages, which are normally 8 kB each." msgstr "Setzt die Annahme des Planers über die effektive Größe des Diskcaches (das heißt des Teils des Diskcaches vom Kernel, der für die Datendateien von PostgreSQL verwendet wird). Das wird in Diskseiten gemessen, welche normalerweise 8 kB groß sind." -#: utils/misc/guc.c:2756 +#: utils/misc/guc.c:2754 msgid "Sets the minimum size of relations to be considered for parallel scan." msgstr "Setzt die minimale Größe einer Relation, um für einen parallelen Scan in Betracht gezogen werden zu können." -#: utils/misc/guc.c:2768 +#: utils/misc/guc.c:2766 msgid "Shows the server version as an integer." msgstr "Zeigt die Serverversion als Zahl." -#: utils/misc/guc.c:2779 +#: utils/misc/guc.c:2777 msgid "Log the use of temporary files larger than this number of kilobytes." msgstr "Schreibt Meldungen über die Verwendung von temporären Dateien in den Log, wenn sie größer als diese Anzahl an Kilobytes sind." -#: utils/misc/guc.c:2780 +#: utils/misc/guc.c:2778 msgid "Zero logs all files. The default is -1 (turning this feature off)." msgstr "Null loggt alle Dateien. Die Standardeinstellung ist -1 (wodurch dieses Feature ausgeschaltet wird)." -#: utils/misc/guc.c:2790 +#: utils/misc/guc.c:2788 msgid "Sets the size reserved for pg_stat_activity.query, in bytes." msgstr "Setzt die für pg_stat_activity.query reservierte Größe, in Bytes." -#: utils/misc/guc.c:2805 +#: utils/misc/guc.c:2803 msgid "Sets the maximum size of the pending list for GIN index." msgstr "Setzt die maximale Größe der Pending-Liste eines GIN-Index." -#: utils/misc/guc.c:2825 +#: utils/misc/guc.c:2823 msgid "Sets the planner's estimate of the cost of a sequentially fetched disk page." msgstr "Setzt den vom Planer geschätzten Aufwand, um eine sequenzielle Diskseite zu lesen." -#: utils/misc/guc.c:2835 +#: utils/misc/guc.c:2833 msgid "Sets the planner's estimate of the cost of a nonsequentially fetched disk page." msgstr "Setzt den vom Planer geschätzten Aufwand, um eine nichtsequenzielle Diskseite zu lesen." -#: utils/misc/guc.c:2845 +#: utils/misc/guc.c:2843 msgid "Sets the planner's estimate of the cost of processing each tuple (row)." msgstr "Setzt den vom Planer geschätzten Aufwand für die Verarbeitung einer Zeile." -#: utils/misc/guc.c:2855 +#: utils/misc/guc.c:2853 msgid "Sets the planner's estimate of the cost of processing each index entry during an index scan." msgstr "Setzt den vom Planer geschätzten Aufwand für die Verarbeitung eines Indexeintrags während eines Index-Scans." -#: utils/misc/guc.c:2865 +#: utils/misc/guc.c:2863 msgid "Sets the planner's estimate of the cost of processing each operator or function call." msgstr "Setzt den vom Planer geschätzten Aufwand für die Verarbeitung eines Operators oder Funktionsaufrufs." -#: utils/misc/guc.c:2875 +#: utils/misc/guc.c:2873 msgid "Sets the planner's estimate of the cost of passing each tuple (row) from worker to master backend." msgstr "Setzt den vom Planer geschätzten Aufwand, um eine Zeile vom Arbeitsprozess and das Master-Backend zu senden." -#: utils/misc/guc.c:2885 +#: utils/misc/guc.c:2883 msgid "Sets the planner's estimate of the cost of starting up worker processes for parallel query." msgstr "Setzt den vom Planer geschätzten Aufwand für das Starten von Arbeitsprozessen für parallele Anfragen." -#: utils/misc/guc.c:2896 +#: utils/misc/guc.c:2894 msgid "Sets the planner's estimate of the fraction of a cursor's rows that will be retrieved." msgstr "Setzt den vom Planer geschätzten Anteil der Cursor-Zeilen, die ausgelesen werden werden." -#: utils/misc/guc.c:2907 +#: utils/misc/guc.c:2905 msgid "GEQO: selective pressure within the population." msgstr "GEQO: selektiver Auswahldruck in der Bevölkerung." -#: utils/misc/guc.c:2917 +#: utils/misc/guc.c:2915 msgid "GEQO: seed for random path selection." msgstr "GEQO: Ausgangswert für die zufällige Pfadauswahl." -#: utils/misc/guc.c:2927 +#: utils/misc/guc.c:2925 msgid "Multiple of the average buffer usage to free per round." msgstr "Vielfaches der durchschnittlichen freizugebenden Pufferverwendung pro Runde." -#: utils/misc/guc.c:2937 +#: utils/misc/guc.c:2935 msgid "Sets the seed for random-number generation." msgstr "Setzt den Ausgangswert für die Zufallszahlenerzeugung." -#: utils/misc/guc.c:2948 +#: utils/misc/guc.c:2946 msgid "Number of tuple updates or deletes prior to vacuum as a fraction of reltuples." msgstr "Anzahl geänderter oder gelöschter Tupel vor einem Vacuum, relativ zu reltuples." -#: utils/misc/guc.c:2957 +#: utils/misc/guc.c:2955 msgid "Number of tuple inserts, updates, or deletes prior to analyze as a fraction of reltuples." msgstr "Anzahl eingefügter, geänderter oder gelöschter Tupel vor einem Analyze, relativ zu reltuples." -#: utils/misc/guc.c:2967 +#: utils/misc/guc.c:2965 msgid "Time spent flushing dirty buffers during checkpoint, as fraction of checkpoint interval." msgstr "Zeit, die damit verbracht wird, modifizierte Puffer während eines Checkpoints zurückzuschreiben, als Bruchteil des Checkpoint-Intervalls." -#: utils/misc/guc.c:2986 +#: utils/misc/guc.c:2984 msgid "Sets the shell command that will be called to archive a WAL file." msgstr "Setzt den Shell-Befehl, der aufgerufen wird, um eine WAL-Datei zu archivieren." -#: utils/misc/guc.c:2996 +#: utils/misc/guc.c:2994 msgid "Sets the client's character set encoding." msgstr "Setzt die Zeichensatzkodierung des Clients." -#: utils/misc/guc.c:3007 +#: utils/misc/guc.c:3005 msgid "Controls information prefixed to each log line." msgstr "Bestimmt die Informationen, die vor jede Logzeile geschrieben werden." -#: utils/misc/guc.c:3008 +#: utils/misc/guc.c:3006 msgid "If blank, no prefix is used." msgstr "Wenn leer, dann wird kein Präfix verwendet." -#: utils/misc/guc.c:3017 +#: utils/misc/guc.c:3015 msgid "Sets the time zone to use in log messages." msgstr "Setzt die in Logmeldungen verwendete Zeitzone." -#: utils/misc/guc.c:3027 +#: utils/misc/guc.c:3025 msgid "Sets the display format for date and time values." msgstr "Setzt das Ausgabeformat für Datums- und Zeitwerte." -#: utils/misc/guc.c:3028 +#: utils/misc/guc.c:3026 msgid "Also controls interpretation of ambiguous date inputs." msgstr "Kontrolliert auch die Interpretation von zweideutigen Datumseingaben." -#: utils/misc/guc.c:3039 +#: utils/misc/guc.c:3037 msgid "Sets the default tablespace to create tables and indexes in." msgstr "Setzt den Standard-Tablespace für Tabellen und Indexe." -#: utils/misc/guc.c:3040 +#: utils/misc/guc.c:3038 msgid "An empty string selects the database's default tablespace." msgstr "Eine leere Zeichenkette wählt den Standard-Tablespace der Datenbank." -#: utils/misc/guc.c:3050 +#: utils/misc/guc.c:3048 msgid "Sets the tablespace(s) to use for temporary tables and sort files." msgstr "Setzt den oder die Tablespaces für temporäre Tabellen und Sortierdateien." -#: utils/misc/guc.c:3061 +#: utils/misc/guc.c:3059 msgid "Sets the path for dynamically loadable modules." msgstr "Setzt den Pfad für ladbare dynamische Bibliotheken." -#: utils/misc/guc.c:3062 +#: utils/misc/guc.c:3060 msgid "If a dynamically loadable module needs to be opened and the specified name does not have a directory component (i.e., the name does not contain a slash), the system will search this path for the specified file." msgstr "Wenn ein dynamisch ladbares Modul geöffnet werden muss und der angegebene Name keine Verzeichniskomponente hat (das heißt er enthält keinen Schrägstrich), dann sucht das System in diesem Pfad nach der angegebenen Datei." -#: utils/misc/guc.c:3075 +#: utils/misc/guc.c:3073 msgid "Sets the location of the Kerberos server key file." msgstr "Setzt den Ort der Kerberos-Server-Schlüsseldatei." -#: utils/misc/guc.c:3086 +#: utils/misc/guc.c:3084 msgid "Sets the Bonjour service name." msgstr "Setzt den Bonjour-Servicenamen." -#: utils/misc/guc.c:3098 +#: utils/misc/guc.c:3096 msgid "Shows the collation order locale." msgstr "Zeigt die Locale für die Sortierreihenfolge." -#: utils/misc/guc.c:3109 +#: utils/misc/guc.c:3107 msgid "Shows the character classification and case conversion locale." msgstr "Zeigt die Locale für Zeichenklassifizierung und Groß-/Kleinschreibung." -#: utils/misc/guc.c:3120 +#: utils/misc/guc.c:3118 msgid "Sets the language in which messages are displayed." msgstr "Setzt die Sprache, in der Mitteilungen ausgegeben werden." -#: utils/misc/guc.c:3130 +#: utils/misc/guc.c:3128 msgid "Sets the locale for formatting monetary amounts." msgstr "Setzt die Locale für die Formatierung von Geldbeträgen." -#: utils/misc/guc.c:3140 +#: utils/misc/guc.c:3138 msgid "Sets the locale for formatting numbers." msgstr "Setzt die Locale für die Formatierung von Zahlen." -#: utils/misc/guc.c:3150 +#: utils/misc/guc.c:3148 msgid "Sets the locale for formatting date and time values." msgstr "Setzt die Locale für die Formatierung von Datums- und Zeitwerten." -#: utils/misc/guc.c:3160 +#: utils/misc/guc.c:3158 msgid "Lists shared libraries to preload into each backend." msgstr "Listet dynamische Bibliotheken, die vorab in jeden Serverprozess geladen werden." -#: utils/misc/guc.c:3171 +#: utils/misc/guc.c:3169 msgid "Lists shared libraries to preload into server." msgstr "Listet dynamische Bibliotheken, die vorab in den Server geladen werden." -#: utils/misc/guc.c:3182 +#: utils/misc/guc.c:3180 msgid "Lists unprivileged shared libraries to preload into each backend." msgstr "Listet unprivilegierte dynamische Bibliotheken, die vorab in jeden Serverprozess geladen werden." -#: utils/misc/guc.c:3193 +#: utils/misc/guc.c:3191 msgid "Sets the schema search order for names that are not schema-qualified." msgstr "Setzt die Schemasuchreihenfolge für Namen ohne Schemaqualifikation." -#: utils/misc/guc.c:3205 +#: utils/misc/guc.c:3203 msgid "Sets the server (database) character set encoding." msgstr "Setzt die Zeichensatzkodierung des Servers (der Datenbank)." -#: utils/misc/guc.c:3217 +#: utils/misc/guc.c:3215 msgid "Shows the server version." msgstr "Zeigt die Serverversion." -#: utils/misc/guc.c:3229 +#: utils/misc/guc.c:3227 msgid "Sets the current role." msgstr "Setzt die aktuelle Rolle." -#: utils/misc/guc.c:3241 +#: utils/misc/guc.c:3239 msgid "Sets the session user name." msgstr "Setzt den Sitzungsbenutzernamen." -#: utils/misc/guc.c:3252 +#: utils/misc/guc.c:3250 msgid "Sets the destination for server log output." msgstr "Setzt das Ziel für die Serverlogausgabe." -#: utils/misc/guc.c:3253 +#: utils/misc/guc.c:3251 msgid "Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and \"eventlog\", depending on the platform." msgstr "Gültige Werte sind Kombinationen von »stderr«, »syslog«, »csvlog« und »eventlog«, je nach Plattform." -#: utils/misc/guc.c:3264 +#: utils/misc/guc.c:3262 msgid "Sets the destination directory for log files." msgstr "Bestimmt das Zielverzeichnis für Logdateien." -#: utils/misc/guc.c:3265 +#: utils/misc/guc.c:3263 msgid "Can be specified as relative to the data directory or as absolute path." msgstr "Kann relativ zum Datenverzeichnis oder als absoluter Pfad angegeben werden." -#: utils/misc/guc.c:3275 +#: utils/misc/guc.c:3273 msgid "Sets the file name pattern for log files." msgstr "Bestimmt das Dateinamenmuster für Logdateien." -#: utils/misc/guc.c:3286 +#: utils/misc/guc.c:3284 msgid "Sets the program name used to identify PostgreSQL messages in syslog." msgstr "Setzt den Programmnamen, mit dem PostgreSQL-Meldungen im Syslog identifiziert werden." -#: utils/misc/guc.c:3297 +#: utils/misc/guc.c:3295 msgid "Sets the application name used to identify PostgreSQL messages in the event log." msgstr "Setzt den Programmnamen, mit dem PostgreSQL-Meldungen im Ereignisprotokoll identifiziert werden." -#: utils/misc/guc.c:3308 +#: utils/misc/guc.c:3306 msgid "Sets the time zone for displaying and interpreting time stamps." msgstr "Setzt die Zeitzone, in der Zeitangaben interpretiert und ausgegeben werden." -#: utils/misc/guc.c:3318 +#: utils/misc/guc.c:3316 msgid "Selects a file of time zone abbreviations." msgstr "Wählt eine Datei mit Zeitzonenabkürzungen." -#: utils/misc/guc.c:3328 +#: utils/misc/guc.c:3326 msgid "Sets the current transaction's isolation level." msgstr "Zeigt den Isolationsgrad der aktuellen Transaktion." -#: utils/misc/guc.c:3339 +#: utils/misc/guc.c:3337 msgid "Sets the owning group of the Unix-domain socket." msgstr "Setzt die Eigentümergruppe der Unix-Domain-Socket." -#: utils/misc/guc.c:3340 +#: utils/misc/guc.c:3338 msgid "The owning user of the socket is always the user that starts the server." msgstr "Der Eigentümer ist immer der Benutzer, der den Server startet." -#: utils/misc/guc.c:3350 +#: utils/misc/guc.c:3348 msgid "Sets the directories where Unix-domain sockets will be created." msgstr "Setzt die Verzeichnisse, in denen Unix-Domain-Sockets erzeugt werden sollen." -#: utils/misc/guc.c:3365 +#: utils/misc/guc.c:3363 msgid "Sets the host name or IP address(es) to listen to." msgstr "Setzt den Hostnamen oder die IP-Adresse(n), auf der auf Verbindungen gewartet wird." -#: utils/misc/guc.c:3380 +#: utils/misc/guc.c:3378 msgid "Sets the server's data directory." msgstr "Setzt das Datenverzeichnis des Servers." -#: utils/misc/guc.c:3391 +#: utils/misc/guc.c:3389 msgid "Sets the server's main configuration file." msgstr "Setzt die Hauptkonfigurationsdatei des Servers." -#: utils/misc/guc.c:3402 +#: utils/misc/guc.c:3400 msgid "Sets the server's \"hba\" configuration file." msgstr "Setzt die »hba«-Konfigurationsdatei des Servers." -#: utils/misc/guc.c:3413 +#: utils/misc/guc.c:3411 msgid "Sets the server's \"ident\" configuration file." msgstr "Setzt die »ident«-Konfigurationsdatei des Servers." -#: utils/misc/guc.c:3424 +#: utils/misc/guc.c:3422 msgid "Writes the postmaster PID to the specified file." msgstr "Schreibt die Postmaster-PID in die angegebene Datei." -#: utils/misc/guc.c:3435 +#: utils/misc/guc.c:3433 msgid "Location of the SSL server certificate file." msgstr "Ort der SSL-Serverzertifikatsdatei." -#: utils/misc/guc.c:3445 +#: utils/misc/guc.c:3443 msgid "Location of the SSL server private key file." msgstr "Setzt den Ort der Datei mit dem privaten SSL-Server-Schlüssel." -#: utils/misc/guc.c:3455 +#: utils/misc/guc.c:3453 msgid "Location of the SSL certificate authority file." msgstr "Ort der SSL-Certificate-Authority-Datei." -#: utils/misc/guc.c:3465 +#: utils/misc/guc.c:3463 msgid "Location of the SSL certificate revocation list file." msgstr "Ort der SSL-Certificate-Revocation-List-Datei." -#: utils/misc/guc.c:3475 +#: utils/misc/guc.c:3473 msgid "Writes temporary statistics files to the specified directory." msgstr "Schreibt temporäre Statistikdateien in das angegebene Verzeichnis." -#: utils/misc/guc.c:3486 +#: utils/misc/guc.c:3484 msgid "Number of synchronous standbys and list of names of potential synchronous ones." msgstr "Anzahl synchroner Standbys und Liste der Namen der möglichen synchronen Standbys." -#: utils/misc/guc.c:3497 +#: utils/misc/guc.c:3495 msgid "Sets default text search configuration." msgstr "Setzt die vorgegebene Textsuchekonfiguration." -#: utils/misc/guc.c:3507 +#: utils/misc/guc.c:3505 msgid "Sets the list of allowed SSL ciphers." msgstr "Setzt die Liste der erlaubten SSL-Verschlüsselungsalgorithmen." -#: utils/misc/guc.c:3522 +#: utils/misc/guc.c:3520 msgid "Sets the curve to use for ECDH." msgstr "Setzt die für ECDH zu verwendende Kurve." -#: utils/misc/guc.c:3537 +#: utils/misc/guc.c:3535 msgid "Sets the application name to be reported in statistics and logs." msgstr "Setzt den Anwendungsnamen, der in Statistiken und Logs verzeichnet wird." -#: utils/misc/guc.c:3548 +#: utils/misc/guc.c:3546 msgid "Sets the name of the cluster, which is included in the process title." msgstr "Setzt den Namen des Clusters, welcher im Prozesstitel angezeigt wird." -#: utils/misc/guc.c:3568 +#: utils/misc/guc.c:3566 msgid "Sets whether \"\\'\" is allowed in string literals." msgstr "Bestimmt, ob »\\'« in Zeichenkettenkonstanten erlaubt ist." -#: utils/misc/guc.c:3578 +#: utils/misc/guc.c:3576 msgid "Sets the output format for bytea." msgstr "Setzt das Ausgabeformat für bytea." -#: utils/misc/guc.c:3588 +#: utils/misc/guc.c:3586 msgid "Sets the message levels that are sent to the client." msgstr "Setzt die Meldungstypen, die an den Client gesendet werden." -#: utils/misc/guc.c:3589 utils/misc/guc.c:3642 utils/misc/guc.c:3653 -#: utils/misc/guc.c:3719 +#: utils/misc/guc.c:3587 utils/misc/guc.c:3640 utils/misc/guc.c:3651 +#: utils/misc/guc.c:3717 msgid "Each level includes all the levels that follow it. The later the level, the fewer messages are sent." msgstr "Jeder Wert schließt alle ihm folgenden Werte mit ein. Je weiter hinten der Wert steht, desto weniger Meldungen werden gesendet werden." -#: utils/misc/guc.c:3599 +#: utils/misc/guc.c:3597 msgid "Enables the planner to use constraints to optimize queries." msgstr "Ermöglicht dem Planer die Verwendung von Constraints, um Anfragen zu optimieren." -#: utils/misc/guc.c:3600 +#: utils/misc/guc.c:3598 msgid "Table scans will be skipped if their constraints guarantee that no rows match the query." msgstr "Tabellen-Scans werden übersprungen, wenn deren Constraints garantieren, dass keine Zeile mit der Abfrage übereinstimmt." -#: utils/misc/guc.c:3610 +#: utils/misc/guc.c:3608 msgid "Sets the transaction isolation level of each new transaction." msgstr "Setzt den Transaktionsisolationsgrad neuer Transaktionen." -#: utils/misc/guc.c:3620 +#: utils/misc/guc.c:3618 msgid "Sets the display format for interval values." msgstr "Setzt das Ausgabeformat für Intervallwerte." -#: utils/misc/guc.c:3631 +#: utils/misc/guc.c:3629 msgid "Sets the verbosity of logged messages." msgstr "Setzt den Detailgrad von geloggten Meldungen." -#: utils/misc/guc.c:3641 +#: utils/misc/guc.c:3639 msgid "Sets the message levels that are logged." msgstr "Setzt die Meldungstypen, die geloggt werden." -#: utils/misc/guc.c:3652 +#: utils/misc/guc.c:3650 msgid "Causes all statements generating error at or above this level to be logged." msgstr "Schreibt alle Anweisungen, die einen Fehler auf dieser Stufe oder höher verursachen, in den Log." -#: utils/misc/guc.c:3663 +#: utils/misc/guc.c:3661 msgid "Sets the type of statements logged." msgstr "Setzt die Anweisungsarten, die geloggt werden." -#: utils/misc/guc.c:3673 +#: utils/misc/guc.c:3671 msgid "Sets the syslog \"facility\" to be used when syslog enabled." msgstr "Setzt die zu verwendende Syslog-»Facility«, wenn Syslog angeschaltet ist." -#: utils/misc/guc.c:3688 +#: utils/misc/guc.c:3686 msgid "Sets the session's behavior for triggers and rewrite rules." msgstr "Setzt das Sitzungsverhalten für Trigger und Regeln." -#: utils/misc/guc.c:3698 +#: utils/misc/guc.c:3696 msgid "Sets the current transaction's synchronization level." msgstr "Setzt den Synchronisationsgrad der aktuellen Transaktion." -#: utils/misc/guc.c:3708 +#: utils/misc/guc.c:3706 msgid "Allows archiving of WAL files using archive_command." msgstr "Erlaubt die Archivierung von WAL-Dateien mittels archive_command." -#: utils/misc/guc.c:3718 +#: utils/misc/guc.c:3716 msgid "Enables logging of recovery-related debugging information." msgstr "Ermöglicht das Loggen von Debug-Informationen über die Wiederherstellung." -#: utils/misc/guc.c:3734 +#: utils/misc/guc.c:3732 msgid "Collects function-level statistics on database activity." msgstr "Sammelt Statistiken auf Funktionsebene über Datenbankaktivität." -#: utils/misc/guc.c:3744 +#: utils/misc/guc.c:3742 msgid "Set the level of information written to the WAL." msgstr "Setzt den Umfang der in den WAL geschriebenen Informationen." -#: utils/misc/guc.c:3754 +#: utils/misc/guc.c:3752 msgid "Selects the dynamic shared memory implementation used." msgstr "Wählt die zu verwendende Implementierung von dynamischem Shared Memory." -#: utils/misc/guc.c:3764 +#: utils/misc/guc.c:3762 msgid "Selects the method used for forcing WAL updates to disk." msgstr "Wählt die Methode, um das Schreiben von WAL-Änderungen auf die Festplatte zu erzwingen." -#: utils/misc/guc.c:3774 +#: utils/misc/guc.c:3772 msgid "Sets how binary values are to be encoded in XML." msgstr "Setzt, wie binäre Werte in XML kodiert werden." -#: utils/misc/guc.c:3784 +#: utils/misc/guc.c:3782 msgid "Sets whether XML data in implicit parsing and serialization operations is to be considered as documents or content fragments." msgstr "Setzt, ob XML-Daten in impliziten Parse- und Serialisierungsoperationen als Dokument oder Fragment betrachtet werden sollen." -#: utils/misc/guc.c:3795 +#: utils/misc/guc.c:3793 msgid "Use of huge pages on Linux." msgstr "Huge Pages auf Linux verwenden." -#: utils/misc/guc.c:3805 +#: utils/misc/guc.c:3803 msgid "Forces use of parallel query facilities." msgstr "Verwendung der Einrichtungen für parallele Anfragen erzwingen." -#: utils/misc/guc.c:3806 +#: utils/misc/guc.c:3804 msgid "If possible, run query using a parallel worker and with parallel restrictions." msgstr "Wenn möglich werden Anfragen in einem parallelen Arbeitsprozess und mit parallelen Beschränkungen ausgeführt." -#: utils/misc/guc.c:4606 +#: utils/misc/guc.c:4604 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: konnte nicht auf Verzeichnis »%s« zugreifen: %s\n" -#: utils/misc/guc.c:4611 +#: utils/misc/guc.c:4609 #, c-format msgid "Run initdb or pg_basebackup to initialize a PostgreSQL data directory.\n" msgstr "Führen Sie initdb oder pg_basebackup aus, um ein PostgreSQL-Datenverzeichnis zu initialisieren.\n" -#: utils/misc/guc.c:4631 +#: utils/misc/guc.c:4629 #, c-format msgid "" "%s does not know where to find the server configuration file.\n" @@ -22809,12 +22658,12 @@ msgstr "" "Sie müssen die Kommandozeilenoption --config-file oder -D angegeben oder\n" "die Umgebungsvariable PGDATA setzen.\n" -#: utils/misc/guc.c:4650 +#: utils/misc/guc.c:4648 #, c-format msgid "%s: could not access the server configuration file \"%s\": %s\n" msgstr "%s: konnte nicht auf die Serverkonfigurationsdatei »%s« zugreifen: %s\n" -#: utils/misc/guc.c:4676 +#: utils/misc/guc.c:4674 #, c-format msgid "" "%s does not know where to find the database system data.\n" @@ -22824,7 +22673,7 @@ msgstr "" "zu finden sind. Sie können dies mit »data_directory« in »%s«, mit der\n" "Kommandozeilenoption -D oder der Umgebungsvariable PGDATA angeben.\n" -#: utils/misc/guc.c:4724 +#: utils/misc/guc.c:4722 #, c-format msgid "" "%s does not know where to find the \"hba\" configuration file.\n" @@ -22834,7 +22683,7 @@ msgstr "" "Sie können dies mit »hba_file« in »%s«, mit der\n" "Kommandozeilenoption -D oder der Umgebungsvariable PGDATA angeben.\n" -#: utils/misc/guc.c:4747 +#: utils/misc/guc.c:4745 #, c-format msgid "" "%s does not know where to find the \"ident\" configuration file.\n" @@ -22844,138 +22693,138 @@ msgstr "" "Sie können dies mit »ident_file« in »%s«, mit der\n" "Kommandozeilenoption -D oder der Umgebungsvariable PGDATA angeben.\n" -#: utils/misc/guc.c:5421 utils/misc/guc.c:5468 +#: utils/misc/guc.c:5419 utils/misc/guc.c:5466 msgid "Value exceeds integer range." msgstr "Wert überschreitet Bereich für ganze Zahlen." -#: utils/misc/guc.c:5691 +#: utils/misc/guc.c:5689 #, c-format msgid "parameter \"%s\" requires a numeric value" msgstr "Parameter »%s« erfordert einen numerischen Wert" -#: utils/misc/guc.c:5700 +#: utils/misc/guc.c:5698 #, c-format msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)" msgstr "%g ist außerhalb des gültigen Bereichs für Parameter »%s« (%g ... %g)" -#: utils/misc/guc.c:5853 utils/misc/guc.c:7196 +#: utils/misc/guc.c:5851 utils/misc/guc.c:7194 #, c-format msgid "cannot set parameters during a parallel operation" msgstr "während einer parallelen Operation können keine Parameter gesetzt werden" -#: utils/misc/guc.c:5860 utils/misc/guc.c:6611 utils/misc/guc.c:6663 -#: utils/misc/guc.c:7024 utils/misc/guc.c:7784 utils/misc/guc.c:7952 -#: utils/misc/guc.c:9609 +#: utils/misc/guc.c:5858 utils/misc/guc.c:6609 utils/misc/guc.c:6661 +#: utils/misc/guc.c:7022 utils/misc/guc.c:7782 utils/misc/guc.c:7950 +#: utils/misc/guc.c:9625 #, c-format msgid "unrecognized configuration parameter \"%s\"" msgstr "unbekannter Konfigurationsparameter »%s«" -#: utils/misc/guc.c:5875 utils/misc/guc.c:7036 +#: utils/misc/guc.c:5873 utils/misc/guc.c:7034 #, c-format msgid "parameter \"%s\" cannot be changed" msgstr "Parameter »%s« kann nicht geändert werden" -#: utils/misc/guc.c:5908 +#: utils/misc/guc.c:5906 #, c-format msgid "parameter \"%s\" cannot be changed now" msgstr "Parameter »%s« kann jetzt nicht geändert werden" -#: utils/misc/guc.c:5926 utils/misc/guc.c:5972 utils/misc/guc.c:9625 +#: utils/misc/guc.c:5924 utils/misc/guc.c:5970 utils/misc/guc.c:9641 #, c-format msgid "permission denied to set parameter \"%s\"" msgstr "keine Berechtigung, um Parameter »%s« zu setzen" -#: utils/misc/guc.c:5962 +#: utils/misc/guc.c:5960 #, c-format msgid "parameter \"%s\" cannot be set after connection start" msgstr "Parameter »%s« kann nach Start der Verbindung nicht geändert werden" -#: utils/misc/guc.c:6010 +#: utils/misc/guc.c:6008 #, c-format msgid "cannot set parameter \"%s\" within security-definer function" msgstr "Parameter »%s« kann nicht in einer Security-Definer-Funktion gesetzt werden" -#: utils/misc/guc.c:6619 utils/misc/guc.c:6667 utils/misc/guc.c:7958 +#: utils/misc/guc.c:6617 utils/misc/guc.c:6665 utils/misc/guc.c:7956 #, c-format msgid "must be superuser to examine \"%s\"" msgstr "nur Superuser können »%s« ansehen" -#: utils/misc/guc.c:6733 +#: utils/misc/guc.c:6731 #, c-format msgid "SET %s takes only one argument" msgstr "SET %s darf nur ein Argument haben" -#: utils/misc/guc.c:6984 +#: utils/misc/guc.c:6982 #, c-format msgid "must be superuser to execute ALTER SYSTEM command" msgstr "nur Superuser können den Befehl ALTER SYSTEM ausführen" -#: utils/misc/guc.c:7069 +#: utils/misc/guc.c:7067 #, c-format msgid "parameter value for ALTER SYSTEM must not contain a newline" msgstr "Parameterwert für ALTER SYSTEM darf keine Newline enthalten" -#: utils/misc/guc.c:7114 +#: utils/misc/guc.c:7112 #, c-format msgid "could not parse contents of file \"%s\"" msgstr "konnte Inhalt der Datei »%s« nicht parsen" -#: utils/misc/guc.c:7272 +#: utils/misc/guc.c:7270 #, c-format msgid "SET LOCAL TRANSACTION SNAPSHOT is not implemented" msgstr "SET LOCAL TRANSACTION SNAPSHOT ist nicht implementiert" -#: utils/misc/guc.c:7357 +#: utils/misc/guc.c:7355 #, c-format msgid "SET requires parameter name" msgstr "SET benötigt Parameternamen" -#: utils/misc/guc.c:7481 +#: utils/misc/guc.c:7479 #, c-format msgid "attempt to redefine parameter \"%s\"" msgstr "Versuch, den Parameter »%s« zu redefinieren" -#: utils/misc/guc.c:9242 +#: utils/misc/guc.c:9258 #, c-format msgid "parameter \"%s\" could not be set" msgstr "Parameter »%s« kann nicht gesetzt werden" -#: utils/misc/guc.c:9329 +#: utils/misc/guc.c:9345 #, c-format msgid "could not parse setting for parameter \"%s\"" msgstr "konnte Wert von Parameter »%s« nicht lesen" -#: utils/misc/guc.c:9687 utils/misc/guc.c:9721 +#: utils/misc/guc.c:9703 utils/misc/guc.c:9737 #, c-format msgid "invalid value for parameter \"%s\": %d" msgstr "ungültiger Wert für Parameter »%s«: %d" -#: utils/misc/guc.c:9755 +#: utils/misc/guc.c:9771 #, c-format msgid "invalid value for parameter \"%s\": %g" msgstr "ungültiger Wert für Parameter »%s«: %g" -#: utils/misc/guc.c:9945 +#: utils/misc/guc.c:9961 #, c-format msgid "\"temp_buffers\" cannot be changed after any temporary tables have been accessed in the session." msgstr "»temp_buffers« kann nicht geändert werden, nachdem in der Sitzung auf temporäre Tabellen zugriffen wurde." -#: utils/misc/guc.c:9957 +#: utils/misc/guc.c:9973 #, c-format msgid "Bonjour is not supported by this build" msgstr "Bonjour wird von dieser Installation nicht unterstützt" -#: utils/misc/guc.c:9970 +#: utils/misc/guc.c:9986 #, c-format msgid "SSL is not supported by this build" msgstr "SSL wird von dieser Installation nicht unterstützt" -#: utils/misc/guc.c:9982 +#: utils/misc/guc.c:9998 #, c-format msgid "Cannot enable parameter when \"log_statement_stats\" is true." msgstr "Kann Parameter nicht einschalten, wenn »log_statement_stats« an ist." -#: utils/misc/guc.c:9994 +#: utils/misc/guc.c:10010 #, c-format msgid "Cannot enable \"log_statement_stats\" when \"log_parser_stats\", \"log_planner_stats\", or \"log_executor_stats\" is true." msgstr "Kann »log_statement_stats« nicht einschalten, wenn »log_parser_stats«, »log_planner_stats« oder »log_executor_stats« an ist." @@ -22990,6 +22839,12 @@ msgstr "interner Fehler: unbekannter Parametertyp\n" msgid "query-specified return tuple and function return type are not compatible" msgstr "in der Anfrage angegebenes Rückgabetupel und Rückgabetyp der Funktion sind nicht kompatibel" +#. translator: %d.%02ds is system CPU time, %d.%02du is user CPU time +#: utils/misc/pg_rusage.c:66 +#, c-format +msgid "CPU %d.%02ds/%d.%02du sec elapsed %d.%02d sec" +msgstr "CPU %d.%02ds/%d.%02du sek abgelaufen %d.%02d sek" + #: utils/misc/rls.c:127 #, c-format msgid "query would be affected by row-level security policy for table \"%s\"" @@ -23070,7 +22925,7 @@ msgstr "Zeile ist zu lang in Zeitzonendatei »%s«, Zeile %d" msgid "@INCLUDE without file name in time zone file \"%s\", line %d" msgstr "@INCLUDE ohne Dateiname in Zeitzonendatei »%s«, Zeile %d" -#: utils/mmgr/aset.c:510 +#: utils/mmgr/aset.c:511 #, c-format msgid "Failed while creating memory context \"%s\"." msgstr "Fehler während der Erzeugung des Speicherkontexts »%s«." @@ -23113,22 +22968,22 @@ msgstr "PREPARE kann nicht in einer Transaktion ausgeführt werden, die einen Cu msgid "could not read block %ld of temporary file: %m" msgstr "konnte Block %ld von temporärer Datei nicht lesen: %m" -#: utils/sort/tuplesort.c:3393 +#: utils/sort/tuplesort.c:3402 #, c-format msgid "cannot have more than %d runs for an external sort" msgstr "ein externer Sortiervorgang kann nicht mehr als %d Durchgänge haben" -#: utils/sort/tuplesort.c:4465 +#: utils/sort/tuplesort.c:4479 #, c-format msgid "could not create unique index \"%s\"" msgstr "konnte Unique Index »%s« nicht erstellen" -#: utils/sort/tuplesort.c:4467 +#: utils/sort/tuplesort.c:4481 #, c-format msgid "Key %s is duplicated." msgstr "Schlüssel %s ist doppelt vorhanden." -#: utils/sort/tuplesort.c:4468 +#: utils/sort/tuplesort.c:4482 #, c-format msgid "Duplicate keys exist." msgstr "Es existieren doppelte Schlüssel." @@ -23154,51 +23009,51 @@ msgstr "konnte nicht aus temporärer Datei für Tuplestore lesen: %m" msgid "could not write to tuplestore temporary file: %m" msgstr "konnte nicht in temporäre Datei für Tuplestore schreiben: %m" -#: utils/time/snapmgr.c:577 +#: utils/time/snapmgr.c:618 #, c-format msgid "The source transaction is not running anymore." msgstr "Die Quelltransaktion läuft nicht mehr." -#: utils/time/snapmgr.c:1138 +#: utils/time/snapmgr.c:1190 #, c-format msgid "cannot export a snapshot from a subtransaction" msgstr "aus einer Subtransaktion kann kein Snapshot exportiert werden" -#: utils/time/snapmgr.c:1287 utils/time/snapmgr.c:1292 -#: utils/time/snapmgr.c:1297 utils/time/snapmgr.c:1312 -#: utils/time/snapmgr.c:1317 utils/time/snapmgr.c:1322 -#: utils/time/snapmgr.c:1421 utils/time/snapmgr.c:1437 -#: utils/time/snapmgr.c:1462 +#: utils/time/snapmgr.c:1339 utils/time/snapmgr.c:1344 +#: utils/time/snapmgr.c:1349 utils/time/snapmgr.c:1364 +#: utils/time/snapmgr.c:1369 utils/time/snapmgr.c:1374 +#: utils/time/snapmgr.c:1473 utils/time/snapmgr.c:1489 +#: utils/time/snapmgr.c:1514 #, c-format msgid "invalid snapshot data in file \"%s\"" msgstr "ungültige Snapshot-Daten in Datei »%s«" -#: utils/time/snapmgr.c:1359 +#: utils/time/snapmgr.c:1411 #, c-format msgid "SET TRANSACTION SNAPSHOT must be called before any query" msgstr "SET TRANSACTION SNAPSHOT muss vor allen Anfragen aufgerufen werden" -#: utils/time/snapmgr.c:1368 +#: utils/time/snapmgr.c:1420 #, c-format msgid "a snapshot-importing transaction must have isolation level SERIALIZABLE or REPEATABLE READ" msgstr "eine Snapshot-importierende Transaktion muss Isolationsgrad SERIALIZABLE oder REPEATABLE READ haben" -#: utils/time/snapmgr.c:1377 utils/time/snapmgr.c:1386 +#: utils/time/snapmgr.c:1429 utils/time/snapmgr.c:1438 #, c-format msgid "invalid snapshot identifier: \"%s\"" msgstr "ungültiger Snapshot-Bezeichner: »%s«" -#: utils/time/snapmgr.c:1475 +#: utils/time/snapmgr.c:1527 #, c-format msgid "a serializable transaction cannot import a snapshot from a non-serializable transaction" msgstr "eine serialisierbare Transaktion kann keinen Snapshot aus einer nicht-serialisierbaren Transaktion importieren" -#: utils/time/snapmgr.c:1479 +#: utils/time/snapmgr.c:1531 #, c-format msgid "a non-read-only serializable transaction cannot import a snapshot from a read-only transaction" msgstr "eine serialisierbare Transaktion, die nicht im Read-Only-Modus ist, kann keinen Snapshot aus einer Read-Only-Transaktion importieren" -#: utils/time/snapmgr.c:1494 +#: utils/time/snapmgr.c:1546 #, c-format msgid "cannot import a snapshot from a different database" msgstr "kann keinen Snapshot aus einer anderen Datenbank importieren" diff --git a/src/backend/po/es.po b/src/backend/po/es.po index 8426549271..3121705f70 100644 --- a/src/backend/po/es.po +++ b/src/backend/po/es.po @@ -11,19 +11,21 @@ # Glosario: # # character carácter +# checkpoint checkpoint # checksum suma de verificación # cluster (de la orden cluster) reordenar # command orden # to defer postergar # floating point coma flotante # foreign-data wrapper conector de datos externos +# to flush sincronizar (flush) # to fsync sincronizar (fsync) # to grant otorgar # lexeme lexema # locale configuración regional # to lock bloquear -# lock (sustantivo) candado -# to obtain a lock bloquear un candado +# lock (sustantivo) lock +# to obtain a lock obtener un lock # mapping mapeo # operator class clase de operadores # to overflow desbordar @@ -37,6 +39,7 @@ # row type tipo de registro # rule regla de reescritura # schema esquema +# signature signatura # to skip ignorar # trigger disparador # window function función de ventana deslizante @@ -58,8 +61,8 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL server 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-23 19:08+0000\n" -"PO-Revision-Date: 2016-09-23 15:37-0400\n" +"POT-Creation-Date: 2017-08-27 21:47+0000\n" +"PO-Revision-Date: 2017-08-28 11:37+0200\n" "Last-Translator: Ãlvaro Herrera \n" "Language-Team: PgSQL Español \n" "Language: es\n" @@ -73,13 +76,11 @@ msgstr "" #: ../common/config_info.c:163 ../common/config_info.c:171 #: ../common/config_info.c:179 ../common/config_info.c:187 #: ../common/config_info.c:195 -#, fuzzy -#| msgid "not recorded\n" msgid "not recorded" -msgstr "no registrado\n" +msgstr "no registrado" -#: ../common/controldata_utils.c:52 commands/copy.c:2794 -#: commands/extension.c:3120 utils/adt/genfile.c:134 +#: ../common/controldata_utils.c:52 commands/copy.c:2834 +#: commands/extension.c:3144 utils/adt/genfile.c:134 #, c-format msgid "could not open file \"%s\" for reading: %m" msgstr "no se pudo abrir archivo «%s» para lectura: %m" @@ -90,13 +91,13 @@ msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: no se pudo abrir el archivo «%s» para lectura: %s\n" #: ../common/controldata_utils.c:66 access/transam/timeline.c:346 -#: access/transam/xlog.c:3191 access/transam/xlog.c:10348 -#: access/transam/xlog.c:10361 access/transam/xlog.c:10724 -#: access/transam/xlog.c:10767 access/transam/xlog.c:10806 -#: access/transam/xlog.c:10849 access/transam/xlogfuncs.c:665 -#: access/transam/xlogfuncs.c:684 commands/extension.c:3130 -#: replication/logical/origin.c:665 replication/logical/origin.c:695 -#: replication/logical/reorderbuffer.c:3093 replication/walsender.c:499 +#: access/transam/xlog.c:3226 access/transam/xlog.c:10453 +#: access/transam/xlog.c:10466 access/transam/xlog.c:10861 +#: access/transam/xlog.c:10904 access/transam/xlog.c:10943 +#: access/transam/xlog.c:10986 access/transam/xlogfuncs.c:660 +#: access/transam/xlogfuncs.c:679 commands/extension.c:3154 +#: replication/logical/origin.c:668 replication/logical/origin.c:698 +#: replication/logical/reorderbuffer.c:3100 replication/walsender.c:504 #: storage/file/copydir.c:176 utils/adt/genfile.c:151 #, c-format msgid "could not read file \"%s\": %m" @@ -126,10 +127,8 @@ msgstr "" "\n" #: ../common/controldata_utils.c:97 -#, fuzzy -#| msgid "%s: encoding mismatch\n" msgid "byte ordering mismatch" -msgstr "%s: codificaciones no coinciden\n" +msgstr "discordancia en orden de bytes" #: ../common/controldata_utils.c:99 #, c-format @@ -208,27 +207,27 @@ msgid "could not close directory \"%s\": %s\n" msgstr "no se pudo cerrar el directorio «%s»: %s\n" #: ../common/psprintf.c:179 ../port/path.c:630 ../port/path.c:668 -#: ../port/path.c:685 access/transam/twophase.c:1261 -#: access/transam/xlog.c:6079 lib/stringinfo.c:258 libpq/auth.c:847 -#: libpq/auth.c:1210 libpq/auth.c:1278 libpq/auth.c:1794 -#: postmaster/bgworker.c:289 postmaster/bgworker.c:797 -#: postmaster/postmaster.c:2334 postmaster/postmaster.c:2365 -#: postmaster/postmaster.c:3898 postmaster/postmaster.c:4588 -#: postmaster/postmaster.c:4656 postmaster/postmaster.c:5359 -#: postmaster/postmaster.c:5623 +#: ../port/path.c:685 access/transam/twophase.c:1262 access/transam/xlog.c:6114 +#: lib/stringinfo.c:258 libpq/auth.c:864 libpq/auth.c:1227 libpq/auth.c:1295 +#: libpq/auth.c:1811 postmaster/bgworker.c:310 postmaster/bgworker.c:813 +#: postmaster/postmaster.c:2357 postmaster/postmaster.c:2388 +#: postmaster/postmaster.c:3922 postmaster/postmaster.c:4620 +#: postmaster/postmaster.c:4695 postmaster/postmaster.c:5368 +#: postmaster/postmaster.c:5690 #: replication/libpqwalreceiver/libpqwalreceiver.c:143 -#: replication/logical/logical.c:168 storage/buffer/localbuf.c:436 -#: storage/file/fd.c:729 storage/file/fd.c:1126 storage/file/fd.c:1244 -#: storage/file/fd.c:1916 storage/ipc/procarray.c:1060 -#: storage/ipc/procarray.c:1546 storage/ipc/procarray.c:1553 -#: storage/ipc/procarray.c:1967 storage/ipc/procarray.c:2570 +#: replication/logical/logical.c:169 storage/buffer/localbuf.c:436 +#: storage/file/fd.c:736 storage/file/fd.c:1164 storage/file/fd.c:1282 +#: storage/file/fd.c:1993 storage/ipc/procarray.c:1062 +#: storage/ipc/procarray.c:1548 storage/ipc/procarray.c:1555 +#: storage/ipc/procarray.c:1969 storage/ipc/procarray.c:2580 #: utils/adt/formatting.c:1522 utils/adt/formatting.c:1642 -#: utils/adt/formatting.c:1763 utils/adt/regexp.c:219 utils/adt/varlena.c:4440 +#: utils/adt/formatting.c:1763 utils/adt/pg_locale.c:463 +#: utils/adt/pg_locale.c:647 utils/adt/regexp.c:219 utils/adt/varlena.c:4440 #: utils/adt/varlena.c:4461 utils/fmgr/dfmgr.c:216 utils/hash/dynahash.c:429 -#: utils/hash/dynahash.c:535 utils/hash/dynahash.c:1047 utils/mb/mbutils.c:376 -#: utils/mb/mbutils.c:709 utils/misc/guc.c:3890 utils/misc/guc.c:3906 -#: utils/misc/guc.c:3919 utils/misc/guc.c:6865 utils/misc/tzparser.c:468 -#: utils/mmgr/aset.c:509 utils/mmgr/mcxt.c:767 utils/mmgr/mcxt.c:802 +#: utils/hash/dynahash.c:535 utils/hash/dynahash.c:1046 utils/mb/mbutils.c:376 +#: utils/mb/mbutils.c:709 utils/misc/guc.c:3888 utils/misc/guc.c:3904 +#: utils/misc/guc.c:3917 utils/misc/guc.c:6863 utils/misc/tzparser.c:468 +#: utils/mmgr/aset.c:510 utils/mmgr/mcxt.c:767 utils/mmgr/mcxt.c:802 #: utils/mmgr/mcxt.c:839 utils/mmgr/mcxt.c:876 utils/mmgr/mcxt.c:910 #: utils/mmgr/mcxt.c:939 utils/mmgr/mcxt.c:973 utils/mmgr/mcxt.c:1055 #: utils/mmgr/mcxt.c:1089 utils/mmgr/mcxt.c:1138 @@ -296,7 +295,7 @@ msgstr "no se pudo eliminar el directorio «%s»: %s\n" msgid "could not look up effective user ID %ld: %s" msgstr "no se pudo encontrar el ID de usuario efectivo %ld: %s" -#: ../common/username.c:47 libpq/auth.c:1741 +#: ../common/username.c:47 libpq/auth.c:1758 msgid "user does not exist" msgstr "usuario no existe" @@ -345,8 +344,7 @@ msgstr "el proceso hijo terminó con código no reconocido %d" msgid "could not determine encoding for codeset \"%s\"" msgstr "no se pudo determinar la codificación para el codeset «%s»" -#: ../port/chklocale.c:294 ../port/chklocale.c:423 -#: postmaster/postmaster.c:4888 +#: ../port/chklocale.c:294 ../port/chklocale.c:423 postmaster/postmaster.c:4899 #, c-format msgid "Please report this to ." msgstr "Por favor reporte esto a ." @@ -425,76 +423,85 @@ msgid "could not get SID for PowerUsers group: error code %lu\n" msgstr "no se pudo obtener el SID del grupo PowerUsers: código de error %lu\n" #: access/brin/brin.c:810 -#, fuzzy, c-format -#| msgid "\"%s\" is not an index" +#, c-format msgid "\"%s\" is not a BRIN index" -msgstr "«%s» no es un índice" +msgstr "«%s» no es un índice BRIN" #: access/brin/brin.c:826 -#, fuzzy, c-format -#| msgid "could not open two-phase state file \"%s\": %m" +#, c-format msgid "could not open parent table of index %s" -msgstr "no se pudo abrir el archivo de estado de COMMIT en dos fases «%s»: %m" +msgstr "no se pudo abrir la tabla padre del índice %s" -#: access/brin/brin_pageops.c:76 access/brin/brin_pageops.c:362 -#: access/brin/brin_pageops.c:828 -#, fuzzy, c-format -msgid "index row size %lu exceeds maximum %lu for index \"%s\"" +#: access/brin/brin_pageops.c:76 access/brin/brin_pageops.c:360 +#: access/brin/brin_pageops.c:824 access/gin/ginentrypage.c:109 +#: access/gist/gist.c:1337 access/nbtree/nbtinsert.c:576 +#: access/nbtree/nbtsort.c:488 access/spgist/spgdoinsert.c:1907 +#, c-format +msgid "index row size %zu exceeds maximum %zu for index \"%s\"" msgstr "el tamaño de fila de índice %zu excede el máximo %zu para el índice «%s»" #: access/brin/brin_revmap.c:459 #, c-format msgid "unexpected page type 0x%04X in BRIN index \"%s\" block %u" -msgstr "" +msgstr "tipo de página 0x%04X inesperado en el índice BRIN «%s» bloque %u" -#: access/brin/brin_validate.c:115 +#: access/brin/brin_validate.c:115 access/gin/ginvalidate.c:148 +#: access/gist/gistvalidate.c:145 access/hash/hashvalidate.c:130 +#: access/nbtree/nbtvalidate.c:100 access/spgist/spgvalidate.c:115 #, c-format -msgid "brin operator family \"%s\" contains function %s with invalid support number %d" -msgstr "" +msgid "operator family \"%s\" of access method %s contains function %s with invalid support number %d" +msgstr "familia de operadores «%s» de método de acceso %s contiene la función %s con número de soporte %d no válido" -#: access/brin/brin_validate.c:131 +#: access/brin/brin_validate.c:131 access/gin/ginvalidate.c:160 +#: access/gist/gistvalidate.c:157 access/hash/hashvalidate.c:113 +#: access/nbtree/nbtvalidate.c:112 access/spgist/spgvalidate.c:127 #, c-format -msgid "brin operator family \"%s\" contains function %s with wrong signature for support number %d" -msgstr "" +msgid "operator family \"%s\" of access method %s contains function %s with wrong signature for support number %d" +msgstr "familia de operadores «%s» del método de acceso %s contiene la función %s con signatura incorrecta para el número de soporte %d" -#: access/brin/brin_validate.c:153 +#: access/brin/brin_validate.c:153 access/gin/ginvalidate.c:179 +#: access/gist/gistvalidate.c:177 access/hash/hashvalidate.c:151 +#: access/nbtree/nbtvalidate.c:132 access/spgist/spgvalidate.c:146 #, c-format -msgid "brin operator family \"%s\" contains operator %s with invalid strategy number %d" -msgstr "" +msgid "operator family \"%s\" of access method %s contains operator %s with invalid strategy number %d" +msgstr "familia de operadores «%s» del método de acceso %s contiene el operador %s con número de estrategia %d no válido" -#: access/brin/brin_validate.c:182 +#: access/brin/brin_validate.c:182 access/gin/ginvalidate.c:192 +#: access/hash/hashvalidate.c:164 access/nbtree/nbtvalidate.c:145 +#: access/spgist/spgvalidate.c:159 #, c-format -msgid "brin operator family \"%s\" contains invalid ORDER BY specification for operator %s" -msgstr "" +msgid "operator family \"%s\" of access method %s contains invalid ORDER BY specification for operator %s" +msgstr "familia de operadores «%s» del método de acceso %s contiene especificación ORDER BY no válida para el operador %s" -#: access/brin/brin_validate.c:195 +#: access/brin/brin_validate.c:195 access/gin/ginvalidate.c:205 +#: access/gist/gistvalidate.c:225 access/hash/hashvalidate.c:177 +#: access/nbtree/nbtvalidate.c:158 access/spgist/spgvalidate.c:172 #, c-format -msgid "brin operator family \"%s\" contains operator %s with wrong signature" -msgstr "" +msgid "operator family \"%s\" of access method %s contains operator %s with wrong signature" +msgstr "familia de operadores «%s» del método de acceso %s contiene el operador %s con signatura incorrecta" -#: access/brin/brin_validate.c:233 -#, fuzzy, c-format -#| msgid "operator family \"%s\" does not exist for access method \"%s\"" -msgid "brin operator family \"%s\" is missing operator(s) for types %s and %s" -msgstr "no existe la familia de operadores «%s» para el método de acceso «%s»" +#: access/brin/brin_validate.c:233 access/hash/hashvalidate.c:217 +#: access/nbtree/nbtvalidate.c:200 access/spgist/spgvalidate.c:200 +#, c-format +msgid "operator family \"%s\" of access method %s is missing operator(s) for types %s and %s" +msgstr "el/los operador(es) para los tipos %3$s y %4$s faltan de la familia de operadores «%1$s» del método de acceso %2$s" #: access/brin/brin_validate.c:243 -#, fuzzy, c-format -#| msgid "return type %s is not supported for SQL functions" -msgid "brin operator family \"%s\" is missing support function(s) for types %s and %s" -msgstr "el tipo de retorno %s no es soportado en funciones SQL" +#, c-format +msgid "operator family \"%s\" of access method %s is missing support function(s) for types %s and %s" +msgstr "la(s) función/funciones de soporte para los tipos %3$s y %4$s faltan de la familia de operadores «%1$s» del método de acceso %2$s" -#: access/brin/brin_validate.c:256 -#, fuzzy, c-format -#| msgid "return type %s is not supported for SQL functions" -msgid "brin operator class \"%s\" is missing operator(s)" -msgstr "el tipo de retorno %s no es soportado en funciones SQL" +#: access/brin/brin_validate.c:256 access/hash/hashvalidate.c:231 +#: access/nbtree/nbtvalidate.c:224 access/spgist/spgvalidate.c:233 +#, c-format +msgid "operator class \"%s\" of access method %s is missing operator(s)" +msgstr "faltan operadores de la clase de operadores «%s» del método de acceso %s" -#: access/brin/brin_validate.c:267 -#, fuzzy, c-format -#| msgid "return type %s is not supported for SQL functions" -msgid "brin operator class \"%s\" is missing support function %d" -msgstr "el tipo de retorno %s no es soportado en funciones SQL" +#: access/brin/brin_validate.c:267 access/gin/ginvalidate.c:246 +#: access/gist/gistvalidate.c:264 +#, c-format +msgid "operator class \"%s\" of access method %s is missing support function %d" +msgstr "falta la función de soporte %3$d de la clase de operadores «%1$s» del método de acceso %2$s" #: access/common/heaptuple.c:708 access/common/heaptuple.c:1339 #, c-format @@ -511,8 +518,8 @@ msgstr "el número de columnas del índice (%d) excede el límite (%d)" msgid "index row requires %zu bytes, maximum size is %zu" msgstr "fila de índice requiere %zu bytes, tamaño máximo es %zu" -#: access/common/printtup.c:292 tcop/fastpath.c:182 tcop/fastpath.c:544 -#: tcop/postgres.c:1719 +#: access/common/printtup.c:292 tcop/fastpath.c:182 tcop/fastpath.c:532 +#: tcop/postgres.c:1711 #, c-format msgid "unsupported format code: %d" msgstr "código de formato no soportado: %d" @@ -582,65 +589,54 @@ msgstr "El tipo retornado %s no coincide con el tipo de registro esperado %s en msgid "Number of returned columns (%d) does not match expected column count (%d)." msgstr "La cantidad de columnas retornadas (%d) no coincide con la cantidad esperada de columnas (%d)." -#: access/common/tupconvert.c:241 +#: access/common/tupconvert.c:314 #, c-format msgid "Attribute \"%s\" of type %s does not match corresponding attribute of type %s." msgstr "El atributo «%s» de tipo %s no coincide el atributo correspondiente de tipo %s." -#: access/common/tupconvert.c:253 +#: access/common/tupconvert.c:326 #, c-format msgid "Attribute \"%s\" of type %s does not exist in type %s." msgstr "El atributo «%s» de tipo %s no existe en el tipo %s." -#: access/common/tupdesc.c:635 parser/parse_relation.c:1517 +#: access/common/tupdesc.c:635 parser/parse_relation.c:1518 #, c-format msgid "column \"%s\" cannot be declared SETOF" msgstr "la columna «%s» no puede ser declarada SETOF" #: access/gin/ginbulk.c:44 -#, fuzzy, c-format -#| msgid "payload string too long" +#, c-format msgid "posting list is too long" -msgstr "la cadena de carga es demasiado larga" +msgstr "la «posting list» es demasiado larga" #: access/gin/ginbulk.c:45 #, c-format msgid "Reduce maintenance_work_mem." -msgstr "" - -#: access/gin/ginentrypage.c:109 access/gist/gist.c:1337 -#: access/nbtree/nbtinsert.c:576 access/nbtree/nbtsort.c:488 -#: access/spgist/spgdoinsert.c:1907 -#, c-format -msgid "index row size %zu exceeds maximum %zu for index \"%s\"" -msgstr "el tamaño de fila de índice %zu excede el máximo %zu para el índice «%s»" +msgstr "Reduzca maintenance_work_mem." -#: access/gin/ginfast.c:989 access/transam/xlog.c:9805 -#: access/transam/xlog.c:10276 access/transam/xlogfuncs.c:293 -#: access/transam/xlogfuncs.c:320 access/transam/xlogfuncs.c:359 -#: access/transam/xlogfuncs.c:380 access/transam/xlogfuncs.c:401 -#: access/transam/xlogfuncs.c:471 access/transam/xlogfuncs.c:527 +#: access/gin/ginfast.c:989 access/transam/xlog.c:9875 +#: access/transam/xlog.c:10392 access/transam/xlogfuncs.c:288 +#: access/transam/xlogfuncs.c:315 access/transam/xlogfuncs.c:354 +#: access/transam/xlogfuncs.c:375 access/transam/xlogfuncs.c:396 +#: access/transam/xlogfuncs.c:466 access/transam/xlogfuncs.c:522 #, c-format msgid "recovery is in progress" -msgstr "la recuperación está en proceso" +msgstr "la recuperación está en curso" #: access/gin/ginfast.c:990 -#, fuzzy, c-format -#| msgid "WAL control functions cannot be executed during recovery." +#, c-format msgid "GIN pending list cannot be cleaned up during recovery." -msgstr "Las funciones de control de WAL no pueden ejecutarse durante la recuperación." +msgstr "La lista de pendientes GIN no puede limpiarse durante la recuperación." #: access/gin/ginfast.c:997 -#, fuzzy, c-format -#| msgid "\"%s\" is not an index" +#, c-format msgid "\"%s\" is not a GIN index" -msgstr "«%s» no es un índice" +msgstr "«%s» no es un índice GIN" #: access/gin/ginfast.c:1008 -#, fuzzy, c-format -#| msgid "cannot access temporary tables of other sessions" +#, c-format msgid "cannot access temporary indexes of other sessions" -msgstr "no se pueden acceder tablas temporales de otras sesiones" +msgstr "no se pueden acceder índices temporales de otras sesiones" #: access/gin/ginscan.c:405 #, c-format @@ -652,47 +648,16 @@ msgstr "los índices GIN antiguos no soportan recorridos del índice completo ni msgid "To fix this, do REINDEX INDEX \"%s\"." msgstr "Para corregir esto, ejecute REINDEX INDEX \"%s\"." -#: access/gin/ginvalidate.c:92 -#, c-format -msgid "gin operator family \"%s\" contains support procedure %s with cross-type registration" -msgstr "" - -#: access/gin/ginvalidate.c:148 -#, c-format -msgid "gin operator family \"%s\" contains function %s with invalid support number %d" -msgstr "" - -#: access/gin/ginvalidate.c:160 -#, c-format -msgid "gin operator family \"%s\" contains function %s with wrong signature for support number %d" -msgstr "" - -#: access/gin/ginvalidate.c:179 -#, c-format -msgid "gin operator family \"%s\" contains operator %s with invalid strategy number %d" -msgstr "" - -#: access/gin/ginvalidate.c:192 -#, c-format -msgid "gin operator family \"%s\" contains invalid ORDER BY specification for operator %s" -msgstr "" - -#: access/gin/ginvalidate.c:205 +#: access/gin/ginvalidate.c:92 access/gist/gistvalidate.c:92 +#: access/hash/hashvalidate.c:98 access/spgist/spgvalidate.c:92 #, c-format -msgid "gin operator family \"%s\" contains operator %s with wrong signature" -msgstr "" - -#: access/gin/ginvalidate.c:246 -#, fuzzy, c-format -#| msgid "return type %s is not supported for SQL functions" -msgid "gin operator class \"%s\" is missing support function %d" -msgstr "el tipo de retorno %s no es soportado en funciones SQL" +msgid "operator family \"%s\" of access method %s contains support procedure %s with different left and right input types" +msgstr "la familia de operadores «%s» del método de acceso «%s» contiene el procedimiento de soporte %s con tipos izquierdo y derecho distintos" #: access/gin/ginvalidate.c:256 -#, fuzzy, c-format -#| msgid "return type %s is not supported for SQL functions" -msgid "gin operator class \"%s\" is missing support function %d or %d" -msgstr "el tipo de retorno %s no es soportado en funciones SQL" +#, c-format +msgid "operator class \"%s\" of access method %s is missing support function %d or %d" +msgstr "falta la función de soporte %3$d o %4$d de la clase de operadores «%1$s» del método de acceso «%2$s»" #: access/gist/gist.c:680 access/gist/gistvacuum.c:258 #, c-format @@ -704,11 +669,11 @@ msgstr "el índice «%s» contiene una tupla interna marcada como no válida" msgid "This is caused by an incomplete page split at crash recovery before upgrading to PostgreSQL 9.1." msgstr "Esto es causado por una división de página incompleta durante una recuperación antes de actualizar a PostgreSQL 9.1." -#: access/gist/gist.c:683 access/gist/gistutil.c:738 -#: access/gist/gistutil.c:749 access/gist/gistvacuum.c:261 -#: access/hash/hashutil.c:172 access/hash/hashutil.c:183 -#: access/hash/hashutil.c:195 access/hash/hashutil.c:216 -#: access/nbtree/nbtpage.c:518 access/nbtree/nbtpage.c:529 +#: access/gist/gist.c:683 access/gist/gistutil.c:738 access/gist/gistutil.c:749 +#: access/gist/gistvacuum.c:261 access/hash/hashutil.c:172 +#: access/hash/hashutil.c:183 access/hash/hashutil.c:195 +#: access/hash/hashutil.c:216 access/nbtree/nbtpage.c:518 +#: access/nbtree/nbtpage.c:529 #, c-format msgid "Please REINDEX it." msgstr "Por favor aplíquele REINDEX." @@ -750,53 +715,22 @@ msgstr "índice «%s» contiene páginas vacías no esperadas en el bloque %u" msgid "index \"%s\" contains corrupted page at block %u" msgstr "el índice «%s» contiene una página corrupta en el bloque %u" -#: access/gist/gistvalidate.c:92 -#, c-format -msgid "gist operator family \"%s\" contains support procedure %s with cross-type registration" -msgstr "" - -#: access/gist/gistvalidate.c:145 -#, c-format -msgid "gist operator family \"%s\" contains function %s with invalid support number %d" -msgstr "" - -#: access/gist/gistvalidate.c:157 -#, c-format -msgid "gist operator family \"%s\" contains function %s with wrong signature for support number %d" -msgstr "" - -#: access/gist/gistvalidate.c:177 -#, c-format -msgid "gist operator family \"%s\" contains operator %s with invalid strategy number %d" -msgstr "" - #: access/gist/gistvalidate.c:195 #, c-format -msgid "gist operator family \"%s\" contains unsupported ORDER BY specification for operator %s" -msgstr "" +msgid "operator family \"%s\" of access method %s contains unsupported ORDER BY specification for operator %s" +msgstr "la familia de operadores «%s» del método de acceso %s contiene una especificación ORDER BY no soportada para el operador %s" #: access/gist/gistvalidate.c:206 #, c-format -msgid "gist operator family \"%s\" contains incorrect ORDER BY opfamily specification for operator %s" -msgstr "" - -#: access/gist/gistvalidate.c:225 -#, c-format -msgid "gist operator family \"%s\" contains operator %s with wrong signature" -msgstr "" +msgid "operator family \"%s\" of access method %s contains incorrect ORDER BY opfamily specification for operator %s" +msgstr "la familia de operadores «%s» del método de acceso %s contiene una especificación de familia en ORDER BY incorrecta para el operador %s" -#: access/gist/gistvalidate.c:264 -#, fuzzy, c-format -#| msgid "return type %s is not supported for SQL functions" -msgid "gist operator class \"%s\" is missing support function %d" -msgstr "el tipo de retorno %s no es soportado en funciones SQL" - -#: access/hash/hashinsert.c:68 +#: access/hash/hashinsert.c:70 #, c-format msgid "index row size %zu exceeds hash maximum %zu" msgstr "el tamaño de fila de índice %zu excede el máximo para hash %zu" -#: access/hash/hashinsert.c:70 access/spgist/spgdoinsert.c:1911 +#: access/hash/hashinsert.c:72 access/spgist/spgdoinsert.c:1911 #: access/spgist/spgutils.c:703 #, c-format msgid "Values larger than a buffer page cannot be indexed." @@ -822,102 +756,59 @@ msgstr "el índice «%s» no es un índice hash" msgid "index \"%s\" has wrong hash version" msgstr "el índice «%s» tiene una versión de hash incorrecta" -#: access/hash/hashvalidate.c:98 -#, c-format -msgid "hash operator family \"%s\" contains support procedure %s with cross-type registration" -msgstr "" - -#: access/hash/hashvalidate.c:113 -#, c-format -msgid "hash operator family \"%s\" contains function %s with wrong signature for support number %d" -msgstr "" - -#: access/hash/hashvalidate.c:130 -#, c-format -msgid "hash operator family \"%s\" contains function %s with invalid support number %d" -msgstr "" - -#: access/hash/hashvalidate.c:151 -#, c-format -msgid "hash operator family \"%s\" contains operator %s with invalid strategy number %d" -msgstr "" - -#: access/hash/hashvalidate.c:164 -#, c-format -msgid "hash operator family \"%s\" contains invalid ORDER BY specification for operator %s" -msgstr "" - -#: access/hash/hashvalidate.c:177 -#, c-format -msgid "hash operator family \"%s\" contains operator %s with wrong signature" -msgstr "" - #: access/hash/hashvalidate.c:189 -#, fuzzy, c-format -#| msgid "operator family \"%s\" does not exist for access method \"%s\"" -msgid "hash operator family \"%s\" lacks support function for operator %s" -msgstr "no existe la familia de operadores «%s» para el método de acceso «%s»" - -#: access/hash/hashvalidate.c:217 -#, fuzzy, c-format -#| msgid "operator family \"%s\" does not exist for access method \"%s\"" -msgid "hash operator family \"%s\" is missing operator(s) for types %s and %s" -msgstr "no existe la familia de operadores «%s» para el método de acceso «%s»" - -#: access/hash/hashvalidate.c:231 -#, fuzzy, c-format -#| msgid "operator %s is not a valid ordering operator" -msgid "hash operator class \"%s\" is missing operator(s)" -msgstr "el operador «%s» no es un operador válido de ordenamiento" +#, c-format +msgid "operator family \"%s\" of access method %s lacks support function for operator %s" +msgstr "la familia de operadores «%s» del método de acceso %s no tiene función de soporte para el operador %s" -#: access/hash/hashvalidate.c:247 +#: access/hash/hashvalidate.c:247 access/nbtree/nbtvalidate.c:241 #, c-format -msgid "hash operator family \"%s\" is missing cross-type operator(s)" -msgstr "" +msgid "operator family \"%s\" of access method %s is missing cross-type operator(s)" +msgstr "faltan operadores entre tipos en la familia de operadores «%s» del método de acceso %s" #: access/heap/heapam.c:1295 access/heap/heapam.c:1323 -#: access/heap/heapam.c:1355 catalog/aclchk.c:1748 +#: access/heap/heapam.c:1355 catalog/aclchk.c:1756 #, c-format msgid "\"%s\" is an index" msgstr "«%s» es un índice" #: access/heap/heapam.c:1300 access/heap/heapam.c:1328 -#: access/heap/heapam.c:1360 catalog/aclchk.c:1755 commands/tablecmds.c:8984 -#: commands/tablecmds.c:12042 +#: access/heap/heapam.c:1360 catalog/aclchk.c:1763 commands/tablecmds.c:9095 +#: commands/tablecmds.c:12203 #, c-format msgid "\"%s\" is a composite type" msgstr "«%s» es un tipo compuesto" #: access/heap/heapam.c:2567 -#, fuzzy, c-format +#, c-format msgid "cannot insert tuples during a parallel operation" -msgstr "no se pueden insertar múltiples órdenes en una sentencia preparada" +msgstr "no se pueden insertar tuplas durante una operación paralela" #: access/heap/heapam.c:3017 -#, fuzzy, c-format +#, c-format msgid "cannot delete tuples during a parallel operation" -msgstr "no se puede ejecutar %s durante la recuperación" +msgstr "no se pueden eliminar tuplas durante una operación paralela" #: access/heap/heapam.c:3063 #, c-format msgid "attempted to delete invisible tuple" -msgstr "" +msgstr "se intentó eliminar una tupla invisible" -#: access/heap/heapam.c:3489 access/heap/heapam.c:6240 -#, fuzzy, c-format +#: access/heap/heapam.c:3489 access/heap/heapam.c:6274 +#, c-format msgid "cannot update tuples during a parallel operation" -msgstr "no se puede ejecutar %s durante la recuperación" +msgstr "no se pueden actualizar tuplas durante una operación paralela" #: access/heap/heapam.c:3611 #, c-format msgid "attempted to update invisible tuple" -msgstr "" +msgstr "se intentó actualizar una tupla invisible" -#: access/heap/heapam.c:4963 access/heap/heapam.c:5001 -#: access/heap/heapam.c:5253 executor/execMain.c:2312 +#: access/heap/heapam.c:4964 access/heap/heapam.c:5002 +#: access/heap/heapam.c:5254 executor/execMain.c:2314 #, c-format msgid "could not obtain lock on row in relation \"%s\"" -msgstr "no se pudo bloquear un candado en la fila de la relación «%s»" +msgstr "no se pudo obtener un lock en la fila de la relación «%s»" #: access/heap/hio.c:322 access/heap/rewriteheap.c:664 #, c-format @@ -931,22 +822,22 @@ msgstr "no se pudo escribir al archivo «%s», se escribió %d de %d: %m" #: access/heap/rewriteheap.c:963 access/heap/rewriteheap.c:1175 #: access/heap/rewriteheap.c:1272 access/transam/timeline.c:407 -#: access/transam/timeline.c:483 access/transam/xlog.c:3058 -#: access/transam/xlog.c:3220 replication/logical/snapbuild.c:1605 -#: replication/slot.c:1088 replication/slot.c:1173 storage/file/fd.c:624 -#: storage/file/fd.c:3052 storage/smgr/md.c:1041 storage/smgr/md.c:1274 -#: storage/smgr/md.c:1447 utils/misc/guc.c:6887 +#: access/transam/timeline.c:483 access/transam/xlog.c:3093 +#: access/transam/xlog.c:3255 replication/logical/snapbuild.c:1605 +#: replication/slot.c:1105 replication/slot.c:1190 storage/file/fd.c:631 +#: storage/file/fd.c:3129 storage/smgr/md.c:1041 storage/smgr/md.c:1274 +#: storage/smgr/md.c:1447 utils/misc/guc.c:6885 #, c-format msgid "could not fsync file \"%s\": %m" msgstr "no se pudo sincronizar (fsync) archivo «%s»: %m" #: access/heap/rewriteheap.c:1018 access/heap/rewriteheap.c:1138 #: access/transam/timeline.c:315 access/transam/timeline.c:461 -#: access/transam/xlog.c:3014 access/transam/xlog.c:3163 -#: access/transam/xlog.c:10134 access/transam/xlog.c:10172 -#: access/transam/xlog.c:10499 postmaster/postmaster.c:4363 -#: replication/logical/origin.c:542 replication/slot.c:1045 -#: storage/file/copydir.c:162 storage/smgr/md.c:327 utils/time/snapmgr.c:1223 +#: access/transam/xlog.c:3049 access/transam/xlog.c:3198 +#: access/transam/xlog.c:10209 access/transam/xlog.c:10247 +#: access/transam/xlog.c:10636 postmaster/postmaster.c:4387 +#: replication/logical/origin.c:542 replication/slot.c:1062 +#: storage/file/copydir.c:162 storage/smgr/md.c:327 utils/time/snapmgr.c:1275 #, c-format msgid "could not create file \"%s\": %m" msgstr "no se pudo crear archivo «%s»: %m" @@ -956,7 +847,7 @@ msgstr "no se pudo crear archivo «%s»: %m" msgid "could not truncate file \"%s\" to %u: %m" msgstr "no se pudo truncar el archivo «%s» a %u: %m" -#: access/heap/rewriteheap.c:1154 replication/walsender.c:481 +#: access/heap/rewriteheap.c:1154 replication/walsender.c:486 #: storage/smgr/md.c:1899 #, c-format msgid "could not seek to end of file \"%s\": %m" @@ -964,25 +855,25 @@ msgstr "no se pudo posicionar (seek) al fin del archivo «%s»: %m" #: access/heap/rewriteheap.c:1165 access/transam/timeline.c:367 #: access/transam/timeline.c:401 access/transam/timeline.c:477 -#: access/transam/xlog.c:3049 access/transam/xlog.c:3213 -#: postmaster/postmaster.c:4373 postmaster/postmaster.c:4383 -#: replication/logical/origin.c:551 replication/logical/origin.c:587 -#: replication/logical/origin.c:603 replication/logical/snapbuild.c:1589 -#: replication/slot.c:1074 storage/file/copydir.c:187 +#: access/transam/xlog.c:3084 access/transam/xlog.c:3248 +#: postmaster/postmaster.c:4397 postmaster/postmaster.c:4407 +#: replication/logical/origin.c:551 replication/logical/origin.c:590 +#: replication/logical/origin.c:606 replication/logical/snapbuild.c:1589 +#: replication/slot.c:1091 storage/file/copydir.c:187 #: utils/init/miscinit.c:1228 utils/init/miscinit.c:1237 -#: utils/init/miscinit.c:1244 utils/misc/guc.c:6848 utils/misc/guc.c:6879 -#: utils/misc/guc.c:8721 utils/misc/guc.c:8735 utils/time/snapmgr.c:1228 -#: utils/time/snapmgr.c:1235 +#: utils/init/miscinit.c:1244 utils/misc/guc.c:6846 utils/misc/guc.c:6877 +#: utils/misc/guc.c:8727 utils/misc/guc.c:8741 utils/time/snapmgr.c:1280 +#: utils/time/snapmgr.c:1287 #, c-format msgid "could not write to file \"%s\": %m" msgstr "no se pudo escribir a archivo «%s»: %m" -#: access/heap/rewriteheap.c:1248 access/transam/xlog.c:10366 +#: access/heap/rewriteheap.c:1248 access/transam/xlog.c:10471 #: access/transam/xlogarchive.c:114 access/transam/xlogarchive.c:468 -#: replication/logical/origin.c:529 replication/logical/reorderbuffer.c:2626 -#: replication/logical/reorderbuffer.c:2683 -#: replication/logical/snapbuild.c:1533 replication/logical/snapbuild.c:1908 -#: replication/slot.c:1147 storage/ipc/dsm.c:326 storage/smgr/md.c:427 +#: replication/logical/origin.c:529 replication/logical/reorderbuffer.c:2633 +#: replication/logical/reorderbuffer.c:2690 +#: replication/logical/snapbuild.c:1538 replication/logical/snapbuild.c:1901 +#: replication/slot.c:1164 storage/ipc/dsm.c:326 storage/smgr/md.c:427 #: storage/smgr/md.c:476 storage/smgr/md.c:1394 #, c-format msgid "could not remove file \"%s\": %m" @@ -990,39 +881,37 @@ msgstr "no se pudo eliminar el archivo «%s»: %m" #: access/heap/rewriteheap.c:1262 access/transam/timeline.c:111 #: access/transam/timeline.c:236 access/transam/timeline.c:334 -#: access/transam/xlog.c:2990 access/transam/xlog.c:3107 -#: access/transam/xlog.c:3148 access/transam/xlog.c:3421 -#: access/transam/xlog.c:3499 access/transam/xlogutils.c:701 -#: replication/basebackup.c:401 replication/basebackup.c:1162 -#: replication/logical/origin.c:658 replication/logical/reorderbuffer.c:2153 -#: replication/logical/reorderbuffer.c:2396 -#: replication/logical/reorderbuffer.c:3075 +#: access/transam/xlog.c:3025 access/transam/xlog.c:3142 +#: access/transam/xlog.c:3183 access/transam/xlog.c:3456 +#: access/transam/xlog.c:3534 access/transam/xlogutils.c:701 +#: replication/basebackup.c:403 replication/basebackup.c:1150 +#: replication/logical/origin.c:661 replication/logical/reorderbuffer.c:2156 +#: replication/logical/reorderbuffer.c:2403 +#: replication/logical/reorderbuffer.c:3082 #: replication/logical/snapbuild.c:1582 replication/logical/snapbuild.c:1666 -#: replication/slot.c:1162 replication/walsender.c:474 -#: replication/walsender.c:2102 storage/file/copydir.c:155 -#: storage/file/fd.c:607 storage/file/fd.c:2964 storage/file/fd.c:3031 +#: replication/slot.c:1179 replication/walsender.c:479 +#: replication/walsender.c:2144 storage/file/copydir.c:155 +#: storage/file/fd.c:614 storage/file/fd.c:3041 storage/file/fd.c:3108 #: storage/smgr/md.c:609 utils/error/elog.c:1879 utils/init/miscinit.c:1163 -#: utils/init/miscinit.c:1284 utils/init/miscinit.c:1362 utils/misc/guc.c:7107 -#: utils/misc/guc.c:7140 +#: utils/init/miscinit.c:1284 utils/init/miscinit.c:1362 utils/misc/guc.c:7105 +#: utils/misc/guc.c:7138 #, c-format msgid "could not open file \"%s\": %m" msgstr "no se pudo abrir el archivo «%s»: %m" #: access/index/amapi.c:82 commands/amcmds.c:164 -#, fuzzy, c-format -#| msgid "access method \"%s\" does not exist" +#, c-format msgid "access method \"%s\" is not of type %s" -msgstr "no existe el método de acceso «%s»" +msgstr "el método de acceso «%s» no es de tipo %s" #: access/index/amapi.c:98 -#, fuzzy, c-format -#| msgid "access method \"%s\" does not exist" +#, c-format msgid "index access method \"%s\" does not have a handler" -msgstr "no existe el método de acceso «%s»" +msgstr "el método de acceso «%s» no tiene manejador" #: access/index/indexam.c:155 catalog/objectaddress.c:1196 -#: commands/indexcmds.c:1799 commands/tablecmds.c:241 -#: commands/tablecmds.c:12033 +#: commands/indexcmds.c:1800 commands/tablecmds.c:242 +#: commands/tablecmds.c:12194 #, c-format msgid "\"%s\" is not an index" msgstr "«%s» no es un índice" @@ -1057,7 +946,7 @@ msgstr "" "Considere un índice sobre una función que genere un hash MD5 del valor, o utilice un esquema de indexación de texto completo." #: access/nbtree/nbtpage.c:168 access/nbtree/nbtpage.c:371 -#: access/nbtree/nbtpage.c:458 parser/parse_utilcmd.c:1717 +#: access/nbtree/nbtpage.c:458 parser/parse_utilcmd.c:1703 #, c-format msgid "index \"%s\" is not a btree" msgstr "el índice «%s» no es un btree" @@ -1078,131 +967,45 @@ msgstr "el índice «%s» contiene una página interna parcialmente muerta" msgid "This can be caused by an interrupted VACUUM in version 9.3 or older, before upgrade. Please REINDEX it." msgstr "Esto puede ser causado por la interrupción de un VACUUM en la versión 9.3 o anteriores, antes de actualizar. Ejecute REINDEX por favor." -#: access/nbtree/nbtvalidate.c:100 -#, c-format -msgid "btree operator family \"%s\" contains function %s with invalid support number %d" -msgstr "" - -#: access/nbtree/nbtvalidate.c:112 -#, c-format -msgid "btree operator family \"%s\" contains function %s with wrong signature for support number %d" -msgstr "" - -#: access/nbtree/nbtvalidate.c:132 -#, c-format -msgid "btree operator family \"%s\" contains operator %s with invalid strategy number %d" -msgstr "" - -#: access/nbtree/nbtvalidate.c:145 -#, c-format -msgid "btree operator family \"%s\" contains invalid ORDER BY specification for operator %s" -msgstr "" - -#: access/nbtree/nbtvalidate.c:158 -#, c-format -msgid "btree operator family \"%s\" contains operator %s with wrong signature" -msgstr "" - -#: access/nbtree/nbtvalidate.c:200 -#, fuzzy, c-format -#| msgid "operator family \"%s\" does not exist for access method \"%s\"" -msgid "btree operator family \"%s\" is missing operator(s) for types %s and %s" -msgstr "no existe la familia de operadores «%s» para el método de acceso «%s»" - #: access/nbtree/nbtvalidate.c:210 -#, fuzzy, c-format -#| msgid "return type %s is not supported for SQL functions" -msgid "btree operator family \"%s\" is missing support function for types %s and %s" -msgstr "el tipo de retorno %s no es soportado en funciones SQL" - -#: access/nbtree/nbtvalidate.c:224 -#, fuzzy, c-format -#| msgid "return type %s is not supported for SQL functions" -msgid "btree operator class \"%s\" is missing operator(s)" -msgstr "el tipo de retorno %s no es soportado en funciones SQL" - -#: access/nbtree/nbtvalidate.c:241 #, c-format -msgid "btree operator family \"%s\" is missing cross-type operator(s)" -msgstr "" +msgid "operator family \"%s\" of access method %s is missing support function for types %s and %s" +msgstr "faltan funciones de soporte para los tipos %3$s y %4$s en la familia de operadores «%1$s» del método de acceso %2$s" #: access/spgist/spgutils.c:700 #, c-format msgid "SP-GiST inner tuple size %zu exceeds maximum %zu" msgstr "el tamaño de tupla interna SP-GiST %zu excede el máximo %zu" -#: access/spgist/spgvalidate.c:92 -#, c-format -msgid "spgist operator family \"%s\" contains support procedure %s with cross-type registration" -msgstr "" - -#: access/spgist/spgvalidate.c:115 -#, c-format -msgid "spgist operator family \"%s\" contains function %s with invalid support number %d" -msgstr "" - -#: access/spgist/spgvalidate.c:127 -#, c-format -msgid "spgist operator family \"%s\" contains function %s with wrong signature for support number %d" -msgstr "" - -#: access/spgist/spgvalidate.c:146 -#, c-format -msgid "spgist operator family \"%s\" contains operator %s with invalid strategy number %d" -msgstr "" - -#: access/spgist/spgvalidate.c:159 -#, c-format -msgid "spgist operator family \"%s\" contains invalid ORDER BY specification for operator %s" -msgstr "" - -#: access/spgist/spgvalidate.c:172 -#, c-format -msgid "spgist operator family \"%s\" contains operator %s with wrong signature" -msgstr "" - -#: access/spgist/spgvalidate.c:200 -#, fuzzy, c-format -#| msgid "operator family \"%s\" does not exist for access method \"%s\"" -msgid "spgist operator family \"%s\" is missing operator(s) for types %s and %s" -msgstr "no existe la familia de operadores «%s» para el método de acceso «%s»" - #: access/spgist/spgvalidate.c:220 -#, fuzzy, c-format -#| msgid "return type %s is not supported for SQL functions" -msgid "spgist operator family \"%s\" is missing support function %d for type %s" -msgstr "el tipo de retorno %s no es soportado en funciones SQL" - -#: access/spgist/spgvalidate.c:233 -#, fuzzy, c-format -#| msgid "operator %s is not a valid ordering operator" -msgid "spgist operator class \"%s\" is missing operator(s)" -msgstr "el operador «%s» no es un operador válido de ordenamiento" +#, c-format +msgid "operator family \"%s\" of access method %s is missing support function %d for type %s" +msgstr "falta la función de soporte %3$d para el tipo %4$s de la clase de operadores «%1$s» del método de acceso %2$s" #: access/tablesample/bernoulli.c:152 access/tablesample/system.c:156 -#, fuzzy, c-format +#, c-format msgid "sample percentage must be between 0 and 100" -msgstr "la precisión de timestamp(%d) debe estar entre %d y %d" +msgstr "el porcentaje de muestreo debe estar entre 0 y 100" -#: access/transam/commit_ts.c:295 -#, fuzzy, c-format +#: access/transam/commit_ts.c:294 +#, c-format msgid "cannot retrieve commit timestamp for transaction %u" -msgstr "no se puede heredar de la tabla temporal «%s»" +msgstr "no se puede obtener el timestamp de compromiso de la transacción %u" -#: access/transam/commit_ts.c:385 -#, fuzzy, c-format +#: access/transam/commit_ts.c:392 +#, c-format msgid "could not get commit timestamp data" -msgstr "no se pudo determinar el tipo de dato de entrada" +msgstr "no se pudo obtener datos de compromiso de transacción" -#: access/transam/commit_ts.c:387 -#, fuzzy, c-format +#: access/transam/commit_ts.c:394 +#, c-format msgid "Make sure the configuration parameter \"%s\" is set on the master server." -msgstr "Asegúrese que el parámetro de configuración «ssl_ca_file» esté definido." +msgstr "Asegúrese que el parámetro de configuración «%s» esté definido en el servidor maestro." -#: access/transam/commit_ts.c:389 libpq/hba.c:1439 -#, fuzzy, c-format +#: access/transam/commit_ts.c:396 libpq/hba.c:1439 +#, c-format msgid "Make sure the configuration parameter \"%s\" is set." -msgstr "Asegúrese que el parámetro de configuración «ssl_ca_file» esté definido." +msgstr "Asegúrese que el parámetro de configuración «%s» esté definido." #: access/transam/multixact.c:1000 #, c-format @@ -1247,8 +1050,8 @@ msgstr "límite de miembros de multixact alcanzado" #, c-format msgid "This command would create a multixact with %u members, but the remaining space is only enough for %u member." msgid_plural "This command would create a multixact with %u members, but the remaining space is only enough for %u members." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Esta orden crearía un multixact con %u miembros, pero el espacio remanente sólo es suficiente para %u miembro." +msgstr[1] "Esta orden crearía un multixact con %u miembros, pero el espacio remanente sólo es suficiente para %u miemnbros." #: access/transam/multixact.c:1104 #, c-format @@ -1256,11 +1059,10 @@ msgid "Execute a database-wide VACUUM in database with OID %u with reduced vacuu msgstr "Ejecute un VACUUM de la base completa en la base de datos con OID %u con vacuum_multixact_freeze_min_age y vacuum_multixact_freeze_table_age reducidos." #: access/transam/multixact.c:1135 -#, fuzzy, c-format -#| msgid "database with OID %u must be vacuumed before %d more multixact members are used" +#, c-format msgid "database with OID %u must be vacuumed before %d more multixact member is used" msgid_plural "database with OID %u must be vacuumed before %d more multixact members are used" -msgstr[0] "base de datos con OID %u debe ser limpiada antes de que %d más miembros de multixact sean usados" +msgstr[0] "base de datos con OID %u debe ser limpiada antes de que %d miembro más de multixact sea usado" msgstr[1] "base de datos con OID %u debe ser limpiada antes de que %d más miembros de multixact sean usados" #: access/transam/multixact.c:1140 @@ -1317,92 +1119,90 @@ msgstr "el límite de detención de miembros de multixact es ahora %u basado en #: access/transam/multixact.c:3006 #, c-format msgid "oldest MultiXact %u not found, earliest MultiXact %u, skipping truncation" -msgstr "multixact más antiguo %u no encontrado, multixact más antiguo es %u, saltando el truncado" +msgstr "multixact más antiguo %u no encontrado, multixact más antiguo es %u, omitiendo el truncado" #: access/transam/multixact.c:3024 #, c-format msgid "cannot truncate up to MultiXact %u because it does not exist on disk, skipping truncation" -msgstr "" +msgstr "no se puede truncar hasta el MultiXact %u porque no existe en disco, omitiendo el truncado" #: access/transam/multixact.c:3350 #, c-format msgid "invalid MultiXactId: %u" msgstr "el MultiXactId no es válido: %u" -#: access/transam/parallel.c:589 -#, fuzzy, c-format +#: access/transam/parallel.c:610 +#, c-format msgid "postmaster exited during a parallel transaction" -msgstr "no se puede ejecutar %s en una transacción de sólo lectura" +msgstr "postmaster terminó durante una transacción paralela" -#: access/transam/parallel.c:774 -#, fuzzy, c-format +#: access/transam/parallel.c:799 +#, c-format msgid "lost connection to parallel worker" -msgstr "se ha perdido la conexión al cliente" +msgstr "se ha perdido la conexión al proceso trabajador paralelo" -#: access/transam/parallel.c:833 access/transam/parallel.c:835 -#, fuzzy -#| msgid "parallel archiver" +#: access/transam/parallel.c:858 access/transam/parallel.c:860 msgid "parallel worker" -msgstr "parallel archiver" +msgstr "proceso trabajador paralelo" -#: access/transam/parallel.c:974 -#, fuzzy, c-format +#: access/transam/parallel.c:1001 +#, c-format msgid "could not map dynamic shared memory segment" -msgstr "demasiados segmentos de memoria compartida dinámica" +msgstr "no se pudo mapear el segmento de memoria compartida dinámica" -#: access/transam/parallel.c:979 -#, fuzzy, c-format +#: access/transam/parallel.c:1006 +#, c-format msgid "invalid magic number in dynamic shared memory segment" -msgstr "demasiados segmentos de memoria compartida dinámica" +msgstr "número mágico no válido en segmento de memoria compartida dinámica" -#: access/transam/slru.c:665 +#: access/transam/slru.c:669 #, c-format msgid "file \"%s\" doesn't exist, reading as zeroes" msgstr "el archivo «%s» no existe, leyendo como ceros" -#: access/transam/slru.c:895 access/transam/slru.c:901 -#: access/transam/slru.c:908 access/transam/slru.c:915 -#: access/transam/slru.c:922 access/transam/slru.c:929 +#: access/transam/slru.c:899 access/transam/slru.c:905 +#: access/transam/slru.c:912 access/transam/slru.c:919 +#: access/transam/slru.c:926 access/transam/slru.c:933 #, c-format msgid "could not access status of transaction %u" msgstr "no se pudo encontrar el estado de la transacción %u" -#: access/transam/slru.c:896 +#: access/transam/slru.c:900 #, c-format msgid "Could not open file \"%s\": %m." msgstr "No se pudo abrir el archivo «%s»: %m." -#: access/transam/slru.c:902 +#: access/transam/slru.c:906 #, c-format msgid "Could not seek in file \"%s\" to offset %u: %m." msgstr "No se pudo posicionar (seek) en el archivo «%s» a la posición %u: %m." -#: access/transam/slru.c:909 +#: access/transam/slru.c:913 #, c-format msgid "Could not read from file \"%s\" at offset %u: %m." msgstr "No se pudo leer desde el archivo «%s» en la posición %u: %m." -#: access/transam/slru.c:916 +#: access/transam/slru.c:920 #, c-format msgid "Could not write to file \"%s\" at offset %u: %m." msgstr "No se pudo escribir al archivo «%s» en la posición %u: %m." -#: access/transam/slru.c:923 +#: access/transam/slru.c:927 #, c-format msgid "Could not fsync file \"%s\": %m." msgstr "No se pudo sincronizar (fsync) archivo «%s»: %m." -#: access/transam/slru.c:930 +#: access/transam/slru.c:934 #, c-format msgid "Could not close file \"%s\": %m." msgstr "No se pudo cerrar el archivo «%s»: %m." -#: access/transam/slru.c:1185 +#: access/transam/slru.c:1189 #, c-format msgid "could not truncate directory \"%s\": apparent wraparound" msgstr "no se pudo truncar el directorio «%s»: aparente problema por reciclaje de transacciones" -#: access/transam/slru.c:1240 access/transam/slru.c:1296 +#: access/transam/slru.c:1244 access/transam/slru.c:1300 #, c-format msgid "removing file \"%s\"" msgstr "eliminando el archivo «%s»" @@ -1443,8 +1243,8 @@ msgid "Timeline IDs must be less than child timeline's ID." msgstr "IDs de timeline deben ser menores que el ID de timeline del hijo." #: access/transam/timeline.c:412 access/transam/timeline.c:488 -#: access/transam/xlog.c:3064 access/transam/xlog.c:3225 -#: access/transam/xlogfuncs.c:690 commands/copy.c:1669 +#: access/transam/xlog.c:3099 access/transam/xlog.c:3260 +#: access/transam/xlogfuncs.c:685 commands/copy.c:1709 #: storage/file/copydir.c:201 #, c-format msgid "could not close file \"%s\": %m" @@ -1485,122 +1285,121 @@ msgstr "se alcanzó el número máximo de transacciones preparadas" msgid "Increase max_prepared_transactions (currently %d)." msgstr "Incremente max_prepared_transactions (actualmente es %d)." -#: access/transam/twophase.c:539 +#: access/transam/twophase.c:540 #, c-format msgid "prepared transaction with identifier \"%s\" is busy" msgstr "transacción preparada con identificador «%s» está ocupada" -#: access/transam/twophase.c:545 +#: access/transam/twophase.c:546 #, c-format msgid "permission denied to finish prepared transaction" msgstr "permiso denegado para finalizar la transacción preparada" -#: access/transam/twophase.c:546 +#: access/transam/twophase.c:547 #, c-format msgid "Must be superuser or the user that prepared the transaction." msgstr "Debe ser superusuario o el usuario que preparó la transacción." -#: access/transam/twophase.c:557 +#: access/transam/twophase.c:558 #, c-format msgid "prepared transaction belongs to another database" msgstr "la transacción preparada pertenece a otra base de datos" -#: access/transam/twophase.c:558 +#: access/transam/twophase.c:559 #, c-format msgid "Connect to the database where the transaction was prepared to finish it." msgstr "Conéctese a la base de datos donde la transacción fue preparada para terminarla." -#: access/transam/twophase.c:573 +#: access/transam/twophase.c:574 #, c-format msgid "prepared transaction with identifier \"%s\" does not exist" msgstr "transacción preparada con identificador «%s» no existe" -#: access/transam/twophase.c:1042 +#: access/transam/twophase.c:1043 #, c-format msgid "two-phase state file maximum length exceeded" msgstr "el largo máximo del archivo de estado de COMMIT en dos fases fue excedido" -#: access/transam/twophase.c:1160 +#: access/transam/twophase.c:1161 #, c-format msgid "could not open two-phase state file \"%s\": %m" msgstr "no se pudo abrir el archivo de estado de COMMIT en dos fases «%s»: %m" -#: access/transam/twophase.c:1177 +#: access/transam/twophase.c:1178 #, c-format msgid "could not stat two-phase state file \"%s\": %m" msgstr "no se pudo hacer stat al archivo de estado de COMMIT en dos fases «%s»: %m" -#: access/transam/twophase.c:1209 +#: access/transam/twophase.c:1210 #, c-format msgid "could not read two-phase state file \"%s\": %m" msgstr "no se pudo leer el archivo de estado de COMMIT en dos fases «%s»: %m" -#: access/transam/twophase.c:1262 access/transam/xlog.c:6080 +#: access/transam/twophase.c:1263 access/transam/xlog.c:6115 #, c-format msgid "Failed while allocating an XLog reading processor." msgstr "Falló mientras se emplazaba un procesador de lectura de XLog." -#: access/transam/twophase.c:1268 -#, fuzzy, c-format -#| msgid "could not read two-phase state file \"%s\": %m" +#: access/transam/twophase.c:1269 +#, c-format msgid "could not read two-phase state from xlog at %X/%X" -msgstr "no se pudo leer el archivo de estado de COMMIT en dos fases «%s»: %m" +msgstr "no se pudo leer el archivo de estado de COMMIT en dos fases desde xlog en %X/%X" -#: access/transam/twophase.c:1276 +#: access/transam/twophase.c:1277 #, c-format msgid "expected two-phase state data is not present in xlog at %X/%X" -msgstr "" +msgstr "los datos esperados de COMMIT en dos fases no están presentes en xlog en %X/%X" -#: access/transam/twophase.c:1511 +#: access/transam/twophase.c:1512 #, c-format msgid "could not remove two-phase state file \"%s\": %m" msgstr "no se pudo eliminar el archivo de estado de COMMIT en dos fases «%s»: %m" -#: access/transam/twophase.c:1541 +#: access/transam/twophase.c:1542 #, c-format msgid "could not recreate two-phase state file \"%s\": %m" msgstr "no se pudo recrear el archivo de estado de COMMIT en dos fases «%s»: %m" -#: access/transam/twophase.c:1550 access/transam/twophase.c:1557 +#: access/transam/twophase.c:1551 access/transam/twophase.c:1558 #, c-format msgid "could not write two-phase state file: %m" msgstr "no se pudo escribir el archivo de estado de COMMIT en dos fases: %m" -#: access/transam/twophase.c:1569 +#: access/transam/twophase.c:1570 #, c-format msgid "could not fsync two-phase state file: %m" msgstr "no se pudo sincronizar (fsync) el archivo de estado de COMMIT en dos fases: %m" -#: access/transam/twophase.c:1575 +#: access/transam/twophase.c:1576 #, c-format msgid "could not close two-phase state file: %m" msgstr "no se pudo cerrar el archivo de estado de COMMIT en dos fases: %m" -#: access/transam/twophase.c:1648 +#: access/transam/twophase.c:1649 #, c-format msgid "%u two-phase state file was written for long-running prepared transactions" msgid_plural "%u two-phase state files were written for long-running prepared transactions" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%u archivo de estado de COMMIT en dos fases fue escrito para una transacción preparada de larga duración" +msgstr[1] "%u archivos de estado de COMMIT en dos fases fueron escritos para transacciones preparadas de larga duración" -#: access/transam/twophase.c:1712 +#: access/transam/twophase.c:1713 #, c-format msgid "removing future two-phase state file \"%s\"" msgstr "eliminando archivo futuro de estado de COMMIT en dos fases «%s»" -#: access/transam/twophase.c:1728 access/transam/twophase.c:1739 -#: access/transam/twophase.c:1859 access/transam/twophase.c:1870 -#: access/transam/twophase.c:1947 +#: access/transam/twophase.c:1729 access/transam/twophase.c:1740 +#: access/transam/twophase.c:1860 access/transam/twophase.c:1871 +#: access/transam/twophase.c:1948 #, c-format msgid "removing corrupt two-phase state file \"%s\"" msgstr "eliminando archivo dañado de estado de COMMIT en dos fases «%s»" -#: access/transam/twophase.c:1848 access/transam/twophase.c:1936 +#: access/transam/twophase.c:1849 access/transam/twophase.c:1937 #, c-format msgid "removing stale two-phase state file \"%s\"" msgstr "eliminando archivo obsoleto de estado de COMMIT en dos fases «%s»" -#: access/transam/twophase.c:1954 +#: access/transam/twophase.c:1955 #, c-format msgid "recovering prepared transaction %u" msgstr "recuperando transacción preparada %u" @@ -1616,7 +1415,8 @@ msgid "" "Stop the postmaster and vacuum that database in single-user mode.\n" "You might also need to commit or roll back old prepared transactions." msgstr "" -"Detenga el proceso postmaster y utilice una conexión aislada (standalone) para limpiar (vacuum) esa base de datos.\n" +"Detenga el proceso postmaster y utilice una sesión en modo mono-usuario\n" +"para ejecutar vacuum en esa base de datos.\n" "Puede que además necesite comprometer o abortar transacciones preparadas antiguas." #: access/transam/varsup.c:131 @@ -1649,1137 +1449,1126 @@ msgstr "no se pueden tener más de 2^32-2 órdenes en una transacción" msgid "maximum number of committed subtransactions (%d) exceeded" msgstr "se superó el número máximo de subtransacciones comprometidas (%d)" -#: access/transam/xact.c:2263 +#: access/transam/xact.c:2260 #, c-format msgid "cannot PREPARE a transaction that has operated on temporary tables" msgstr "no se puede hacer PREPARE de una transacción que ha operado en tablas temporales" -#: access/transam/xact.c:2273 +#: access/transam/xact.c:2270 #, c-format msgid "cannot PREPARE a transaction that has exported snapshots" msgstr "no se puede hacer PREPARE de una transacción que ha exportado snapshots" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3155 +#: access/transam/xact.c:3148 #, c-format msgid "%s cannot run inside a transaction block" msgstr "%s no puede ser ejecutado dentro de un bloque de transacción" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3165 +#: access/transam/xact.c:3158 #, c-format msgid "%s cannot run inside a subtransaction" msgstr "%s no puede ser ejecutado dentro de una subtransacción" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3175 +#: access/transam/xact.c:3168 #, c-format msgid "%s cannot be executed from a function or multi-command string" msgstr "la orden %s no puede ser ejecutada desde una función o una línea con múltiples órdenes" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3246 +#: access/transam/xact.c:3239 #, c-format msgid "%s can only be used in transaction blocks" msgstr "la orden %s sólo puede ser usada en bloques de transacción" -#: access/transam/xact.c:3430 +#: access/transam/xact.c:3423 #, c-format msgid "there is already a transaction in progress" msgstr "ya hay una transacción en curso" -#: access/transam/xact.c:3598 access/transam/xact.c:3701 +#: access/transam/xact.c:3591 access/transam/xact.c:3694 #, c-format msgid "there is no transaction in progress" msgstr "no hay una transacción en curso" -#: access/transam/xact.c:3609 +#: access/transam/xact.c:3602 #, c-format msgid "cannot commit during a parallel operation" -msgstr "" +msgstr "no se puede comprometer una transacción durante una operación paralela" -#: access/transam/xact.c:3712 +#: access/transam/xact.c:3705 #, c-format msgid "cannot abort during a parallel operation" -msgstr "" +msgstr "no se puede abortar durante una operación paralela" -#: access/transam/xact.c:3754 +#: access/transam/xact.c:3747 #, c-format msgid "cannot define savepoints during a parallel operation" -msgstr "" +msgstr "no se pueden definir savepoints durante una operación paralela" -#: access/transam/xact.c:3821 -#, fuzzy, c-format +#: access/transam/xact.c:3814 +#, c-format msgid "cannot release savepoints during a parallel operation" -msgstr "no se pueden crear tablas temporales durante la recuperación" +msgstr "no se pueden liberar savepoints durante una operación paralela" -#: access/transam/xact.c:3832 access/transam/xact.c:3884 -#: access/transam/xact.c:3890 access/transam/xact.c:3946 -#: access/transam/xact.c:3996 access/transam/xact.c:4002 +#: access/transam/xact.c:3825 access/transam/xact.c:3877 +#: access/transam/xact.c:3883 access/transam/xact.c:3939 +#: access/transam/xact.c:3989 access/transam/xact.c:3995 #, c-format msgid "no such savepoint" msgstr "no hay un savepoint con ese nombre" -#: access/transam/xact.c:3934 +#: access/transam/xact.c:3927 #, c-format msgid "cannot rollback to savepoints during a parallel operation" -msgstr "" +msgstr "no se puede hacer rollback a un savepoint durante una operación paralela" -#: access/transam/xact.c:4062 -#, fuzzy, c-format +#: access/transam/xact.c:4055 +#, c-format msgid "cannot start subtransactions during a parallel operation" -msgstr "no se pueden tener más de 2^32-1 subtransacciones en una transacción" +msgstr "no se pueden iniciar subtransacciones durante una operación paralela" -#: access/transam/xact.c:4129 -#, fuzzy, c-format +#: access/transam/xact.c:4122 +#, c-format msgid "cannot commit subtransactions during a parallel operation" -msgstr "no se pueden tener más de 2^32-1 subtransacciones en una transacción" +msgstr "no se pueden comprometer subtransacciones durante una operación paralela" -#: access/transam/xact.c:4737 +#: access/transam/xact.c:4751 #, c-format msgid "cannot have more than 2^32-1 subtransactions in a transaction" msgstr "no se pueden tener más de 2^32-1 subtransacciones en una transacción" -#: access/transam/xlog.c:2270 +#: access/transam/xlog.c:2305 #, c-format msgid "could not seek in log file %s to offset %u: %m" msgstr "no se pudo posicionar (seek) en el archivo «%s» a la posición %u: %m" -#: access/transam/xlog.c:2290 +#: access/transam/xlog.c:2325 #, c-format msgid "could not write to log file %s at offset %u, length %zu: %m" msgstr "no se pudo escribir archivo de registro %s en la posición %u, largo %zu: %m" -#: access/transam/xlog.c:2553 +#: access/transam/xlog.c:2588 #, c-format msgid "updated min recovery point to %X/%X on timeline %u" msgstr "el punto mínimo de recuperación fue actualizado a %X/%X en el timeline %u" -#: access/transam/xlog.c:3195 +#: access/transam/xlog.c:3230 #, c-format msgid "not enough data in file \"%s\"" msgstr "los datos del archivo «%s» son insuficientes" -#: access/transam/xlog.c:3336 +#: access/transam/xlog.c:3371 #, c-format msgid "could not open transaction log file \"%s\": %m" msgstr "no se pudo abrir el archivo de registro de transacciones «%s»: %m" -#: access/transam/xlog.c:3525 access/transam/xlog.c:5310 +#: access/transam/xlog.c:3560 access/transam/xlog.c:5345 #, c-format msgid "could not close log file %s: %m" msgstr "no se pudo cerrar el archivo de registro %s: %m" -#: access/transam/xlog.c:3582 access/transam/xlogutils.c:696 -#: replication/walsender.c:2097 +#: access/transam/xlog.c:3617 access/transam/xlogutils.c:696 +#: replication/walsender.c:2139 #, c-format msgid "requested WAL segment %s has already been removed" msgstr "el segmento de WAL solicitado %s ya ha sido eliminado" -#: access/transam/xlog.c:3642 access/transam/xlog.c:3717 -#: access/transam/xlog.c:3915 +#: access/transam/xlog.c:3677 access/transam/xlog.c:3752 +#: access/transam/xlog.c:3950 #, c-format msgid "could not open transaction log directory \"%s\": %m" msgstr "no se pudo abrir directorio de registro de transacciones «%s»: %m" -#: access/transam/xlog.c:3798 +#: access/transam/xlog.c:3833 #, c-format msgid "recycled transaction log file \"%s\"" msgstr "el archivo de registro de transacciones «%s» ha sido reciclado" -#: access/transam/xlog.c:3810 +#: access/transam/xlog.c:3845 #, c-format msgid "removing transaction log file \"%s\"" msgstr "eliminando archivo de registro de transacciones «%s»" -#: access/transam/xlog.c:3830 +#: access/transam/xlog.c:3865 #, c-format msgid "could not rename old transaction log file \"%s\": %m" msgstr "no se pudo cambiar el nombre del archivo antiguo de registro de transacciones «%s»: %m" -#: access/transam/xlog.c:3842 +#: access/transam/xlog.c:3877 #, c-format msgid "could not remove old transaction log file \"%s\": %m" msgstr "no se pudo eliminar el archivo antiguo de registro de transacciones «%s»: %m" -#: access/transam/xlog.c:3875 access/transam/xlog.c:3885 +#: access/transam/xlog.c:3910 access/transam/xlog.c:3920 #, c-format msgid "required WAL directory \"%s\" does not exist" msgstr "no existe el directorio WAL «%s»" -#: access/transam/xlog.c:3891 +#: access/transam/xlog.c:3926 #, c-format msgid "creating missing WAL directory \"%s\"" msgstr "creando el directorio WAL faltante «%s»" -#: access/transam/xlog.c:3894 +#: access/transam/xlog.c:3929 #, c-format msgid "could not create missing directory \"%s\": %m" msgstr "no se pudo crear el directorio faltante «%s»: %m" -#: access/transam/xlog.c:3925 +#: access/transam/xlog.c:3960 #, c-format msgid "removing transaction log backup history file \"%s\"" msgstr "eliminando el archivo de historia del respaldo de registro de transacciones «%s»" -#: access/transam/xlog.c:4006 +#: access/transam/xlog.c:4041 #, c-format msgid "unexpected timeline ID %u in log segment %s, offset %u" msgstr "ID de timeline %u inesperado en archivo %s, posición %u" -#: access/transam/xlog.c:4128 +#: access/transam/xlog.c:4163 #, c-format msgid "new timeline %u is not a child of database system timeline %u" msgstr "el nuevo timeline %u especificado no es hijo del timeline de sistema %u" -#: access/transam/xlog.c:4142 +#: access/transam/xlog.c:4177 #, c-format msgid "new timeline %u forked off current database system timeline %u before current recovery point %X/%X" msgstr "el nuevo timeline %u bifurcó del timeline del sistema actual %u antes del punto re recuperación actual %X/%X" -#: access/transam/xlog.c:4161 +#: access/transam/xlog.c:4196 #, c-format msgid "new target timeline is %u" msgstr "el nuevo timeline destino es %u" -#: access/transam/xlog.c:4241 +#: access/transam/xlog.c:4276 #, c-format msgid "could not create control file \"%s\": %m" msgstr "no se pudo crear archivo de control «%s»: %m" -#: access/transam/xlog.c:4252 access/transam/xlog.c:4488 +#: access/transam/xlog.c:4287 access/transam/xlog.c:4523 #, c-format msgid "could not write to control file: %m" msgstr "no se pudo escribir en el archivo de control: %m" -#: access/transam/xlog.c:4258 access/transam/xlog.c:4494 +#: access/transam/xlog.c:4293 access/transam/xlog.c:4529 #, c-format msgid "could not fsync control file: %m" msgstr "no se pudo sincronizar (fsync) el archivo de control: %m" -#: access/transam/xlog.c:4263 access/transam/xlog.c:4499 +#: access/transam/xlog.c:4298 access/transam/xlog.c:4534 #, c-format msgid "could not close control file: %m" msgstr "no se pudo cerrar el archivo de control: %m" -#: access/transam/xlog.c:4281 access/transam/xlog.c:4477 +#: access/transam/xlog.c:4316 access/transam/xlog.c:4512 #, c-format msgid "could not open control file \"%s\": %m" msgstr "no se pudo abrir el archivo de control «%s»: %m" -#: access/transam/xlog.c:4287 +#: access/transam/xlog.c:4322 #, c-format msgid "could not read from control file: %m" msgstr "no se pudo leer desde el archivo de control: %m" -#: access/transam/xlog.c:4300 access/transam/xlog.c:4309 -#: access/transam/xlog.c:4333 access/transam/xlog.c:4340 -#: access/transam/xlog.c:4347 access/transam/xlog.c:4352 -#: access/transam/xlog.c:4359 access/transam/xlog.c:4366 -#: access/transam/xlog.c:4373 access/transam/xlog.c:4380 -#: access/transam/xlog.c:4387 access/transam/xlog.c:4394 -#: access/transam/xlog.c:4401 access/transam/xlog.c:4410 -#: access/transam/xlog.c:4417 access/transam/xlog.c:4426 -#: access/transam/xlog.c:4433 access/transam/xlog.c:4442 -#: access/transam/xlog.c:4449 utils/init/miscinit.c:1380 +#: access/transam/xlog.c:4335 access/transam/xlog.c:4344 +#: access/transam/xlog.c:4368 access/transam/xlog.c:4375 +#: access/transam/xlog.c:4382 access/transam/xlog.c:4387 +#: access/transam/xlog.c:4394 access/transam/xlog.c:4401 +#: access/transam/xlog.c:4408 access/transam/xlog.c:4415 +#: access/transam/xlog.c:4422 access/transam/xlog.c:4429 +#: access/transam/xlog.c:4436 access/transam/xlog.c:4445 +#: access/transam/xlog.c:4452 access/transam/xlog.c:4461 +#: access/transam/xlog.c:4468 access/transam/xlog.c:4477 +#: access/transam/xlog.c:4484 utils/init/miscinit.c:1380 #, c-format msgid "database files are incompatible with server" msgstr "los archivos de base de datos son incompatibles con el servidor" -#: access/transam/xlog.c:4301 +#: access/transam/xlog.c:4336 #, c-format msgid "The database cluster was initialized with PG_CONTROL_VERSION %d (0x%08x), but the server was compiled with PG_CONTROL_VERSION %d (0x%08x)." msgstr "Los archivos de base de datos fueron inicializados con PG_CONTROL_VERSION %d (0x%08x), pero el servidor fue compilado con PG_CONTROL_VERSION %d (0x%08x)." -#: access/transam/xlog.c:4305 +#: access/transam/xlog.c:4340 #, c-format msgid "This could be a problem of mismatched byte ordering. It looks like you need to initdb." msgstr "Este puede ser un problema de discordancia en el orden de bytes. Parece que necesitará ejecutar initdb." -#: access/transam/xlog.c:4310 +#: access/transam/xlog.c:4345 #, c-format msgid "The database cluster was initialized with PG_CONTROL_VERSION %d, but the server was compiled with PG_CONTROL_VERSION %d." msgstr "Los archivos de base de datos fueron inicializados con PG_CONTROL_VERSION %d, pero el servidor fue compilado con PG_CONTROL_VERSION %d." -#: access/transam/xlog.c:4313 access/transam/xlog.c:4337 -#: access/transam/xlog.c:4344 access/transam/xlog.c:4349 +#: access/transam/xlog.c:4348 access/transam/xlog.c:4372 +#: access/transam/xlog.c:4379 access/transam/xlog.c:4384 #, c-format msgid "It looks like you need to initdb." msgstr "Parece que necesita ejecutar initdb." -#: access/transam/xlog.c:4324 +#: access/transam/xlog.c:4359 #, c-format msgid "incorrect checksum in control file" msgstr "la suma de verificación es incorrecta en el archivo de control" -#: access/transam/xlog.c:4334 +#: access/transam/xlog.c:4369 #, c-format msgid "The database cluster was initialized with CATALOG_VERSION_NO %d, but the server was compiled with CATALOG_VERSION_NO %d." msgstr "Los archivos de base de datos fueron inicializados con CATALOG_VERSION_NO %d, pero el servidor fue compilado con CATALOG_VERSION_NO %d." -#: access/transam/xlog.c:4341 +#: access/transam/xlog.c:4376 #, c-format msgid "The database cluster was initialized with MAXALIGN %d, but the server was compiled with MAXALIGN %d." msgstr "Los archivos de la base de datos fueron inicializados con MAXALIGN %d, pero el servidor fue compilado con MAXALIGN %d." -#: access/transam/xlog.c:4348 +#: access/transam/xlog.c:4383 #, c-format msgid "The database cluster appears to use a different floating-point number format than the server executable." msgstr "Los archivos de la base de datos parecen usar un formato de número de coma flotante distinto al del ejecutable del servidor." -#: access/transam/xlog.c:4353 +#: access/transam/xlog.c:4388 #, c-format msgid "The database cluster was initialized with BLCKSZ %d, but the server was compiled with BLCKSZ %d." msgstr "Los archivos de base de datos fueron inicializados con BLCKSZ %d, pero el servidor fue compilado con BLCKSZ %d." -#: access/transam/xlog.c:4356 access/transam/xlog.c:4363 -#: access/transam/xlog.c:4370 access/transam/xlog.c:4377 -#: access/transam/xlog.c:4384 access/transam/xlog.c:4391 -#: access/transam/xlog.c:4398 access/transam/xlog.c:4405 -#: access/transam/xlog.c:4413 access/transam/xlog.c:4420 -#: access/transam/xlog.c:4429 access/transam/xlog.c:4436 -#: access/transam/xlog.c:4445 access/transam/xlog.c:4452 +#: access/transam/xlog.c:4391 access/transam/xlog.c:4398 +#: access/transam/xlog.c:4405 access/transam/xlog.c:4412 +#: access/transam/xlog.c:4419 access/transam/xlog.c:4426 +#: access/transam/xlog.c:4433 access/transam/xlog.c:4440 +#: access/transam/xlog.c:4448 access/transam/xlog.c:4455 +#: access/transam/xlog.c:4464 access/transam/xlog.c:4471 +#: access/transam/xlog.c:4480 access/transam/xlog.c:4487 #, c-format msgid "It looks like you need to recompile or initdb." msgstr "Parece que necesita recompilar o ejecutar initdb." -#: access/transam/xlog.c:4360 +#: access/transam/xlog.c:4395 #, c-format msgid "The database cluster was initialized with RELSEG_SIZE %d, but the server was compiled with RELSEG_SIZE %d." msgstr "Los archivos de la base de datos fueron inicializados con RELSEG_SIZE %d, pero el servidor fue compilado con RELSEG_SIZE %d." -#: access/transam/xlog.c:4367 +#: access/transam/xlog.c:4402 #, c-format msgid "The database cluster was initialized with XLOG_BLCKSZ %d, but the server was compiled with XLOG_BLCKSZ %d." msgstr "Los archivos de base de datos fueron inicializados con XLOG_BLCKSZ %d, pero el servidor fue compilado con XLOG_BLCKSZ %d." -#: access/transam/xlog.c:4374 +#: access/transam/xlog.c:4409 #, c-format msgid "The database cluster was initialized with XLOG_SEG_SIZE %d, but the server was compiled with XLOG_SEG_SIZE %d." msgstr "Los archivos de la base de datos fueron inicializados con XLOG_SEG_SIZE %d, pero el servidor fue compilado con XLOG_SEG_SIZE %d." -#: access/transam/xlog.c:4381 +#: access/transam/xlog.c:4416 #, c-format msgid "The database cluster was initialized with NAMEDATALEN %d, but the server was compiled with NAMEDATALEN %d." msgstr "Los archivos de la base de datos fueron inicializados con NAMEDATALEN %d, pero el servidor fue compilado con NAMEDATALEN %d." -#: access/transam/xlog.c:4388 +#: access/transam/xlog.c:4423 #, c-format msgid "The database cluster was initialized with INDEX_MAX_KEYS %d, but the server was compiled with INDEX_MAX_KEYS %d." msgstr "Los archivos de la base de datos fueron inicializados con INDEX_MAX_KEYS %d, pero el servidor fue compilado con INDEX_MAX_KEYS %d." -#: access/transam/xlog.c:4395 +#: access/transam/xlog.c:4430 #, c-format msgid "The database cluster was initialized with TOAST_MAX_CHUNK_SIZE %d, but the server was compiled with TOAST_MAX_CHUNK_SIZE %d." msgstr "Los archivos de la base de datos fueron inicializados con TOAST_MAX_CHUNK_SIZE %d, pero el servidor fue compilado con TOAST_MAX_CHUNK_SIZE %d." -#: access/transam/xlog.c:4402 +#: access/transam/xlog.c:4437 #, c-format msgid "The database cluster was initialized with LOBLKSIZE %d, but the server was compiled with LOBLKSIZE %d." msgstr "Los archivos de base de datos fueron inicializados con LOBLKSIZE %d, pero el servidor fue compilado con LOBLKSIZE %d." -#: access/transam/xlog.c:4411 +#: access/transam/xlog.c:4446 #, c-format msgid "The database cluster was initialized without HAVE_INT64_TIMESTAMP but the server was compiled with HAVE_INT64_TIMESTAMP." msgstr "Los archivos de la base de datos fueron inicializados sin HAVE_INT64_TIMESTAMP, pero el servidor fue compilado con HAVE_INT64_TIMESTAMP." -#: access/transam/xlog.c:4418 +#: access/transam/xlog.c:4453 #, c-format msgid "The database cluster was initialized with HAVE_INT64_TIMESTAMP but the server was compiled without HAVE_INT64_TIMESTAMP." msgstr "Los archivos de la base de datos fueron inicializados con HAVE_INT64_TIMESTAMP, pero el servidor fue compilado sin HAVE_INT64_TIMESTAMP." -#: access/transam/xlog.c:4427 +#: access/transam/xlog.c:4462 #, c-format msgid "The database cluster was initialized without USE_FLOAT4_BYVAL but the server was compiled with USE_FLOAT4_BYVAL." msgstr "Los archivos de base de datos fueron inicializados sin USE_FLOAT4_BYVAL, pero el servidor fue compilado con USE_FLOAT4_BYVAL." -#: access/transam/xlog.c:4434 +#: access/transam/xlog.c:4469 #, c-format msgid "The database cluster was initialized with USE_FLOAT4_BYVAL but the server was compiled without USE_FLOAT4_BYVAL." msgstr "Los archivos de base de datos fueron inicializados con USE_FLOAT4_BYVAL, pero el servidor fue compilado sin USE_FLOAT4_BYVAL." -#: access/transam/xlog.c:4443 +#: access/transam/xlog.c:4478 #, c-format msgid "The database cluster was initialized without USE_FLOAT8_BYVAL but the server was compiled with USE_FLOAT8_BYVAL." msgstr "Los archivos de base de datos fueron inicializados sin USE_FLOAT8_BYVAL, pero el servidor fue compilado con USE_FLOAT8_BYVAL." -#: access/transam/xlog.c:4450 +#: access/transam/xlog.c:4485 #, c-format msgid "The database cluster was initialized with USE_FLOAT8_BYVAL but the server was compiled without USE_FLOAT8_BYVAL." msgstr "Los archivos de base de datos fueron inicializados con USE_FLOAT8_BYVAL, pero el servidor fue compilado sin USE_FLOAT8_BYVAL." -#: access/transam/xlog.c:4871 +#: access/transam/xlog.c:4906 #, c-format msgid "could not write bootstrap transaction log file: %m" msgstr "no se pudo escribir al archivo de registro de transacciones de inicio (bootstrap): %m" -#: access/transam/xlog.c:4877 +#: access/transam/xlog.c:4912 #, c-format msgid "could not fsync bootstrap transaction log file: %m" msgstr "no se pudo sincronizar (fsync) el archivo de registro de transacciones de inicio (bootstrap): %m" -#: access/transam/xlog.c:4882 +#: access/transam/xlog.c:4917 #, c-format msgid "could not close bootstrap transaction log file: %m" msgstr "no se pudo cerrar el archivo de registro de transacciones de inicio (bootstrap): %m" -#: access/transam/xlog.c:4957 +#: access/transam/xlog.c:4992 #, c-format msgid "could not open recovery command file \"%s\": %m" msgstr "no se pudo abrir el archivo de recuperación «%s»: %m" -#: access/transam/xlog.c:5003 access/transam/xlog.c:5088 -#, fuzzy, c-format +#: access/transam/xlog.c:5038 access/transam/xlog.c:5123 +#, c-format msgid "invalid value for recovery parameter \"%s\": \"%s\"" -msgstr "valor no válido para el parámetro «%s»: %d" +msgstr "valor no válido para el parámetro de recuperación «%s»: «%s»" -#: access/transam/xlog.c:5006 -#, fuzzy, c-format +#: access/transam/xlog.c:5041 +#, c-format msgid "Valid values are \"pause\", \"promote\", and \"shutdown\"." -msgstr "Los valores aceptables son «on», «off» y «auto»." +msgstr "Los valores aceptables son «pause», «promote» y «shutdown»." -#: access/transam/xlog.c:5026 +#: access/transam/xlog.c:5061 #, c-format msgid "recovery_target_timeline is not a valid number: \"%s\"" msgstr "recovery_target_timeline no es un número válido: «%s»" -#: access/transam/xlog.c:5043 +#: access/transam/xlog.c:5078 #, c-format msgid "recovery_target_xid is not a valid number: \"%s\"" msgstr "recovery_target_xid no es un número válido: «%s»" -#: access/transam/xlog.c:5074 +#: access/transam/xlog.c:5109 #, c-format msgid "recovery_target_name is too long (maximum %d characters)" msgstr "recovery_target_name es demasiado largo (máximo %d caracteres)" -#: access/transam/xlog.c:5091 +#: access/transam/xlog.c:5126 #, c-format msgid "The only allowed value is \"immediate\"." msgstr "El único valor permitido es «immediate»" -#: access/transam/xlog.c:5104 access/transam/xlog.c:5115 -#: commands/extension.c:533 commands/extension.c:541 utils/misc/guc.c:5642 +#: access/transam/xlog.c:5139 access/transam/xlog.c:5150 +#: commands/extension.c:534 commands/extension.c:542 utils/misc/guc.c:5640 #, c-format msgid "parameter \"%s\" requires a Boolean value" msgstr "el parámetro «%s» requiere un valor lógico (booleano)" -#: access/transam/xlog.c:5150 +#: access/transam/xlog.c:5185 #, c-format msgid "parameter \"%s\" requires a temporal value" msgstr "el parámetro «%s» requiere un valor de tiempo" -#: access/transam/xlog.c:5152 catalog/dependency.c:991 -#: catalog/dependency.c:992 catalog/dependency.c:998 catalog/dependency.c:999 -#: catalog/dependency.c:1010 catalog/dependency.c:1011 -#: catalog/objectaddress.c:1100 commands/tablecmds.c:795 -#: commands/tablecmds.c:9445 commands/user.c:1045 commands/view.c:470 -#: libpq/auth.c:304 replication/syncrep.c:919 storage/lmgr/deadlock.c:1139 -#: storage/lmgr/proc.c:1276 utils/adt/acl.c:5281 utils/misc/guc.c:5664 -#: utils/misc/guc.c:5757 utils/misc/guc.c:9692 utils/misc/guc.c:9726 -#: utils/misc/guc.c:9760 utils/misc/guc.c:9794 utils/misc/guc.c:9829 +#: access/transam/xlog.c:5187 catalog/dependency.c:990 catalog/dependency.c:991 +#: catalog/dependency.c:997 catalog/dependency.c:998 catalog/dependency.c:1009 +#: catalog/dependency.c:1010 catalog/objectaddress.c:1100 +#: commands/tablecmds.c:796 commands/tablecmds.c:9556 commands/user.c:1045 +#: commands/view.c:499 libpq/auth.c:307 replication/syncrep.c:929 +#: storage/lmgr/deadlock.c:1139 storage/lmgr/proc.c:1278 utils/adt/acl.c:5281 +#: utils/misc/guc.c:5662 utils/misc/guc.c:5755 utils/misc/guc.c:9708 +#: utils/misc/guc.c:9742 utils/misc/guc.c:9776 utils/misc/guc.c:9810 +#: utils/misc/guc.c:9845 #, c-format msgid "%s" msgstr "%s" -#: access/transam/xlog.c:5159 +#: access/transam/xlog.c:5194 #, c-format msgid "unrecognized recovery parameter \"%s\"" msgstr "parámetro de recuperación no reconocido: «%s»" -#: access/transam/xlog.c:5170 +#: access/transam/xlog.c:5205 #, c-format msgid "recovery command file \"%s\" specified neither primary_conninfo nor restore_command" msgstr "el archivo de recuperación «%s» no especifica primary_conninfo ni restore_command" -#: access/transam/xlog.c:5172 +#: access/transam/xlog.c:5207 #, c-format msgid "The database server will regularly poll the pg_xlog subdirectory to check for files placed there." msgstr "El servidor de bases de datos monitoreará el subdirectorio pg_xlog con regularidad en búsqueda de archivos almacenados ahí." -#: access/transam/xlog.c:5179 +#: access/transam/xlog.c:5214 #, c-format msgid "recovery command file \"%s\" must specify restore_command when standby mode is not enabled" msgstr "el archivo de recuperación «%s» debe especificar restore_command cuando el modo standby no está activo" -#: access/transam/xlog.c:5200 -#, fuzzy, c-format -#| msgid "" -#| "\n" -#| "%s: -w option is not supported when starting a pre-9.1 server\n" +#: access/transam/xlog.c:5235 +#, c-format msgid "standby mode is not supported by single-user servers" -msgstr "" -"\n" -"%s: la opción -w no está soportada cuando se inicia un servidor anterior a 9.1\n" +msgstr "el modo standby no está soportado en el modo mono-usuario" -#: access/transam/xlog.c:5219 +#: access/transam/xlog.c:5254 #, c-format msgid "recovery target timeline %u does not exist" msgstr "no existe el timeline %u especificado como destino de recuperación" -#: access/transam/xlog.c:5340 +#: access/transam/xlog.c:5375 #, c-format msgid "archive recovery complete" msgstr "recuperación completa" -#: access/transam/xlog.c:5399 access/transam/xlog.c:5627 +#: access/transam/xlog.c:5434 access/transam/xlog.c:5662 #, c-format msgid "recovery stopping after reaching consistency" msgstr "deteniendo recuperación al alcanzar un estado consistente" -#: access/transam/xlog.c:5487 +#: access/transam/xlog.c:5522 #, c-format msgid "recovery stopping before commit of transaction %u, time %s" msgstr "deteniendo recuperación antes de comprometer la transacción %u, hora %s" -#: access/transam/xlog.c:5494 +#: access/transam/xlog.c:5529 #, c-format msgid "recovery stopping before abort of transaction %u, time %s" msgstr "deteniendo recuperación antes de abortar la transacción %u, hora %s" -#: access/transam/xlog.c:5539 +#: access/transam/xlog.c:5574 #, c-format msgid "recovery stopping at restore point \"%s\", time %s" msgstr "deteniendo recuperación en el punto de recuperación «%s», hora %s" -#: access/transam/xlog.c:5607 +#: access/transam/xlog.c:5642 #, c-format msgid "recovery stopping after commit of transaction %u, time %s" msgstr "deteniendo recuperación de comprometer la transacción %u, hora %s" -#: access/transam/xlog.c:5615 +#: access/transam/xlog.c:5650 #, c-format msgid "recovery stopping after abort of transaction %u, time %s" msgstr "deteniendo recuperación después de abortar la transacción %u, hora %s" -#: access/transam/xlog.c:5654 +#: access/transam/xlog.c:5689 #, c-format msgid "recovery has paused" msgstr "la recuperación está en pausa" -#: access/transam/xlog.c:5655 +#: access/transam/xlog.c:5690 #, c-format msgid "Execute pg_xlog_replay_resume() to continue." msgstr "Ejecute pg_xlog_replay_resume() para continuar." -#: access/transam/xlog.c:5862 +#: access/transam/xlog.c:5897 #, c-format msgid "hot standby is not possible because %s = %d is a lower setting than on the master server (its value was %d)" msgstr "hot standby no es posible puesto que %s = %d es una configuración menor que en el servidor maestro (su valor era %d)" -#: access/transam/xlog.c:5888 +#: access/transam/xlog.c:5923 #, c-format msgid "WAL was generated with wal_level=minimal, data may be missing" msgstr "WAL fue generado con wal_level=minimal, puede haber datos faltantes" -#: access/transam/xlog.c:5889 +#: access/transam/xlog.c:5924 #, c-format msgid "This happens if you temporarily set wal_level=minimal without taking a new base backup." msgstr "Esto sucede si temporalmente define wal_level=minimal sin tomar un nuevo respaldo base." -#: access/transam/xlog.c:5900 -#, fuzzy, c-format -#| msgid "hot standby is not possible because wal_level was not set to \"hot_standby\" or higher on the master server" +#: access/transam/xlog.c:5935 +#, c-format msgid "hot standby is not possible because wal_level was not set to \"replica\" or higher on the master server" -msgstr "hot standby no es posible porque wal_level no estaba configurado como «hot_standby» o superior en el servidor maestro" +msgstr "hot standby no es posible porque wal_level no estaba configurado como «replica» o superior en el servidor maestro" -#: access/transam/xlog.c:5901 -#, fuzzy, c-format -#| msgid "Either set wal_level to \"hot_standby\" on the master, or turn off hot_standby here." +#: access/transam/xlog.c:5936 +#, c-format msgid "Either set wal_level to \"replica\" on the master, or turn off hot_standby here." -msgstr "Defina wal_level a «hot_standby» en el maestro, o bien desactive hot_standby en este servidor." +msgstr "Defina wal_level a «replica» en el maestro, o bien desactive hot_standby en este servidor." -#: access/transam/xlog.c:5958 +#: access/transam/xlog.c:5993 #, c-format msgid "control file contains invalid data" msgstr "el archivo de control contiene datos no válidos" -#: access/transam/xlog.c:5964 +#: access/transam/xlog.c:5999 #, c-format msgid "database system was shut down at %s" msgstr "el sistema de bases de datos fue apagado en %s" -#: access/transam/xlog.c:5969 +#: access/transam/xlog.c:6004 #, c-format msgid "database system was shut down in recovery at %s" msgstr "el sistema de bases de datos fue apagado durante la recuperación en %s" -#: access/transam/xlog.c:5973 +#: access/transam/xlog.c:6008 #, c-format msgid "database system shutdown was interrupted; last known up at %s" msgstr "el apagado del sistema de datos fue interrumpido; última vez registrada en funcionamiento en %s" -#: access/transam/xlog.c:5977 +#: access/transam/xlog.c:6012 #, c-format msgid "database system was interrupted while in recovery at %s" msgstr "el sistema de bases de datos fue interrumpido durante la recuperación en %s" -#: access/transam/xlog.c:5979 +#: access/transam/xlog.c:6014 #, c-format msgid "This probably means that some data is corrupted and you will have to use the last backup for recovery." msgstr "Esto probablemente significa que algunos datos están corruptos y tendrá que usar el respaldo más reciente para la recuperación." -#: access/transam/xlog.c:5983 +#: access/transam/xlog.c:6018 #, c-format msgid "database system was interrupted while in recovery at log time %s" msgstr "el sistema de bases de datos fue interrumpido durante la recuperación en el instante de registro %s" -#: access/transam/xlog.c:5985 +#: access/transam/xlog.c:6020 #, c-format msgid "If this has occurred more than once some data might be corrupted and you might need to choose an earlier recovery target." -msgstr "Si esto ha ocurrido más de una vez, algunos datos podrían estar corruptos y podría ser necesario escoger un punto de recuperación anterior." +msgstr "Si esto ha ocurrido más de una vez, algunos datos podrían estar corruptos y podría ser necesario escoger un destino de recuperación anterior." -#: access/transam/xlog.c:5989 +#: access/transam/xlog.c:6024 #, c-format msgid "database system was interrupted; last known up at %s" msgstr "el sistema de bases de datos fue interrumpido; última vez en funcionamiento en %s" -#: access/transam/xlog.c:6045 +#: access/transam/xlog.c:6080 #, c-format msgid "entering standby mode" msgstr "entrando al modo standby" -#: access/transam/xlog.c:6048 +#: access/transam/xlog.c:6083 #, c-format msgid "starting point-in-time recovery to XID %u" msgstr "comenzando el proceso de recuperación hasta el XID %u" -#: access/transam/xlog.c:6052 +#: access/transam/xlog.c:6087 #, c-format msgid "starting point-in-time recovery to %s" msgstr "comenzando el proceso de recuperación hasta %s" -#: access/transam/xlog.c:6056 +#: access/transam/xlog.c:6091 #, c-format msgid "starting point-in-time recovery to \"%s\"" msgstr "comenzando el proceso de recuperación hasta «%s»" -#: access/transam/xlog.c:6060 +#: access/transam/xlog.c:6095 #, c-format msgid "starting point-in-time recovery to earliest consistent point" msgstr "comenzando recuperación a un punto en el tiempo hasta alcanzar un estado consistente" -#: access/transam/xlog.c:6063 +#: access/transam/xlog.c:6098 #, c-format msgid "starting archive recovery" msgstr "comenzando proceso de recuperación" -#: access/transam/xlog.c:6107 access/transam/xlog.c:6235 +#: access/transam/xlog.c:6142 access/transam/xlog.c:6270 #, c-format msgid "checkpoint record is at %X/%X" -msgstr "el registro del punto de control está en %X/%X" +msgstr "el registro de checkpoint está en %X/%X" -#: access/transam/xlog.c:6121 +#: access/transam/xlog.c:6156 #, c-format msgid "could not find redo location referenced by checkpoint record" msgstr "no se pudo localizar la ubicación de redo referida por el registro de checkpoint" -#: access/transam/xlog.c:6122 access/transam/xlog.c:6129 +#: access/transam/xlog.c:6157 access/transam/xlog.c:6164 #, c-format msgid "If you are not restoring from a backup, try removing the file \"%s/backup_label\"." msgstr "Si no está restaurando un respaldo, intente eliminando «%s/backup_label»." -#: access/transam/xlog.c:6128 +#: access/transam/xlog.c:6163 #, c-format msgid "could not locate required checkpoint record" -msgstr "no se pudo localizar el registro del punto de control requerido" +msgstr "no se pudo localizar el registro del checkpoint requerido" -#: access/transam/xlog.c:6154 commands/tablespace.c:641 +#: access/transam/xlog.c:6189 commands/tablespace.c:641 #, c-format msgid "could not create symbolic link \"%s\": %m" msgstr "no se pudo crear el enlace simbólico «%s»: %m" -#: access/transam/xlog.c:6186 access/transam/xlog.c:6192 -#, fuzzy, c-format +#: access/transam/xlog.c:6221 access/transam/xlog.c:6227 +#, c-format msgid "ignoring file \"%s\" because no file \"%s\" exists" -msgstr "la restricción «%s» para la relación «%s» ya existe" +msgstr "ignorando el archivo «%s» porque no existe un archivo «%s»" -#: access/transam/xlog.c:6188 access/transam/xlog.c:10928 -#, fuzzy, c-format +#: access/transam/xlog.c:6223 access/transam/xlog.c:11065 +#, c-format msgid "File \"%s\" was renamed to \"%s\"." -msgstr "«%s» fue renombrado a «%s»." +msgstr "El archivo «%s» fue renombrado a «%s»." -#: access/transam/xlog.c:6194 -#, fuzzy, c-format -#| msgid "could not rename file \"%s\" to \"%s\": %m" +#: access/transam/xlog.c:6229 +#, c-format msgid "Could not rename file \"%s\" to \"%s\": %m." -msgstr "no se pudo renombrar el archivo de «%s» a «%s»: %m" +msgstr "No se pudo renombrar el archivo de «%s» a «%s»: %m." -#: access/transam/xlog.c:6245 access/transam/xlog.c:6260 +#: access/transam/xlog.c:6280 access/transam/xlog.c:6295 #, c-format msgid "could not locate a valid checkpoint record" -msgstr "no se pudo localizar un registro de punto de control válido" +msgstr "no se pudo localizar un registro de checkpoint válido" -#: access/transam/xlog.c:6254 +#: access/transam/xlog.c:6289 #, c-format msgid "using previous checkpoint record at %X/%X" msgstr "usando el registro del punto de control anterior en %X/%X" -#: access/transam/xlog.c:6298 +#: access/transam/xlog.c:6333 #, c-format msgid "requested timeline %u is not a child of this server's history" msgstr "el timeline solicitado %u no es un hijo de la historia de este servidor" -#: access/transam/xlog.c:6300 +#: access/transam/xlog.c:6335 #, c-format msgid "Latest checkpoint is at %X/%X on timeline %u, but in the history of the requested timeline, the server forked off from that timeline at %X/%X." -msgstr "El punto de control más reciente está en %X/%X en el timeline %u, pero en la historia del timeline solicitado, el servidor se desvió desde ese timeline en %X/%X." +msgstr "El checkpoint más reciente está en %X/%X en el timeline %u, pero en la historia del timeline solicitado, el servidor se desvió desde ese timeline en %X/%X." -#: access/transam/xlog.c:6316 +#: access/transam/xlog.c:6351 #, c-format msgid "requested timeline %u does not contain minimum recovery point %X/%X on timeline %u" msgstr "el timeline solicitado %u no contiene el punto mínimo de recuperación %X/%X en el timeline %u" -#: access/transam/xlog.c:6347 +#: access/transam/xlog.c:6382 #, c-format msgid "invalid next transaction ID" msgstr "el siguiente ID de transacción no es válido" -#: access/transam/xlog.c:6430 +#: access/transam/xlog.c:6465 #, c-format msgid "invalid redo in checkpoint record" -msgstr "redo no es válido en el registro de punto de control" +msgstr "redo no es válido en el registro de checkpoint" -#: access/transam/xlog.c:6441 +#: access/transam/xlog.c:6476 #, c-format msgid "invalid redo record in shutdown checkpoint" -msgstr "registro redo no es válido en el punto de control de apagado" +msgstr "registro redo no es válido en el checkpoint de apagado" -#: access/transam/xlog.c:6469 +#: access/transam/xlog.c:6504 #, c-format msgid "database system was not properly shut down; automatic recovery in progress" -msgstr "el sistema de bases de datos no fue apagado apropiadamente; se está efectuando la recuperación automática" +msgstr "el sistema de bases de datos no fue apagado apropiadamente; la recuperación automática está en curso" -#: access/transam/xlog.c:6473 +#: access/transam/xlog.c:6508 #, c-format msgid "crash recovery starts in timeline %u and has target timeline %u" msgstr "la recuperación comienza en el timeline %u y tiene un timeline de destino %u" -#: access/transam/xlog.c:6517 +#: access/transam/xlog.c:6552 #, c-format msgid "backup_label contains data inconsistent with control file" msgstr "backup_label contiene datos inconsistentes con el archivo de control" -#: access/transam/xlog.c:6518 +#: access/transam/xlog.c:6553 #, c-format msgid "This means that the backup is corrupted and you will have to use another backup for recovery." msgstr "Esto significa que el respaldo está corrupto y deberá usar otro respaldo para la recuperación." -#: access/transam/xlog.c:6592 +#: access/transam/xlog.c:6627 #, c-format msgid "initializing for hot standby" msgstr "inicializando para hot standby" -#: access/transam/xlog.c:6724 +#: access/transam/xlog.c:6759 #, c-format msgid "redo starts at %X/%X" msgstr "redo comienza en %X/%X" -#: access/transam/xlog.c:6949 +#: access/transam/xlog.c:6984 #, c-format msgid "requested recovery stop point is before consistent recovery point" msgstr "el punto de detención de recuperación pedido es antes del punto de recuperación consistente" -#: access/transam/xlog.c:6987 +#: access/transam/xlog.c:7022 #, c-format msgid "redo done at %X/%X" msgstr "redo listo en %X/%X" -#: access/transam/xlog.c:6992 access/transam/xlog.c:8916 +#: access/transam/xlog.c:7027 access/transam/xlog.c:8986 #, c-format msgid "last completed transaction was at log time %s" msgstr "última transacción completada al tiempo de registro %s" -#: access/transam/xlog.c:7001 +#: access/transam/xlog.c:7036 #, c-format msgid "redo is not required" msgstr "no se requiere redo" -#: access/transam/xlog.c:7076 access/transam/xlog.c:7080 +#: access/transam/xlog.c:7111 access/transam/xlog.c:7115 #, c-format msgid "WAL ends before end of online backup" msgstr "WAL termina antes del fin del respaldo en línea" -#: access/transam/xlog.c:7077 +#: access/transam/xlog.c:7112 #, c-format msgid "All WAL generated while online backup was taken must be available at recovery." msgstr "Todo el WAL generado durante el respaldo en línea debe estar disponible durante la recuperación." -#: access/transam/xlog.c:7081 +#: access/transam/xlog.c:7116 #, c-format msgid "Online backup started with pg_start_backup() must be ended with pg_stop_backup(), and all WAL up to that point must be available at recovery." msgstr "Un respaldo en línea iniciado con pg_start_backup() debe ser terminado con pg_stop_backup(), y todos los archivos WAL hasta ese punto deben estar disponibles durante la recuperación." -#: access/transam/xlog.c:7084 +#: access/transam/xlog.c:7119 #, c-format msgid "WAL ends before consistent recovery point" msgstr "WAL termina antes del punto de recuperación consistente" -#: access/transam/xlog.c:7111 +#: access/transam/xlog.c:7146 #, c-format msgid "selected new timeline ID: %u" msgstr "seleccionado nuevo ID de timeline: %u" -#: access/transam/xlog.c:7522 +#: access/transam/xlog.c:7557 #, c-format msgid "consistent recovery state reached at %X/%X" msgstr "el estado de recuperación consistente fue alcanzado en %X/%X" -#: access/transam/xlog.c:7713 +#: access/transam/xlog.c:7748 #, c-format msgid "invalid primary checkpoint link in control file" -msgstr "el enlace de punto de control primario en archivo de control no es válido" +msgstr "el enlace de checkpoint primario en archivo de control no es válido" -#: access/transam/xlog.c:7717 +#: access/transam/xlog.c:7752 #, c-format msgid "invalid secondary checkpoint link in control file" -msgstr "el enlace del punto de control secundario en archivo de control no es válido" +msgstr "el enlace de checkpoint secundario en archivo de control no es válido" -#: access/transam/xlog.c:7721 +#: access/transam/xlog.c:7756 #, c-format msgid "invalid checkpoint link in backup_label file" -msgstr "el enlace del punto de control en backup_label no es válido" +msgstr "el enlace de checkpoint en backup_label no es válido" -#: access/transam/xlog.c:7738 +#: access/transam/xlog.c:7773 #, c-format msgid "invalid primary checkpoint record" -msgstr "el registro del punto de control primario no es válido" +msgstr "el registro de checkpoint primario no es válido" -#: access/transam/xlog.c:7742 +#: access/transam/xlog.c:7777 #, c-format msgid "invalid secondary checkpoint record" -msgstr "el registro del punto de control secundario no es válido" +msgstr "el registro de checkpoint secundario no es válido" -#: access/transam/xlog.c:7746 +#: access/transam/xlog.c:7781 #, c-format msgid "invalid checkpoint record" -msgstr "el registro del punto de control no es válido" +msgstr "el registro de checkpoint no es válido" -#: access/transam/xlog.c:7757 +#: access/transam/xlog.c:7792 #, c-format msgid "invalid resource manager ID in primary checkpoint record" -msgstr "el ID de gestor de recursos en el registro del punto de control primario no es válido" +msgstr "ID de gestor de recursos no válido en el registro de checkpoint primario" -#: access/transam/xlog.c:7761 +#: access/transam/xlog.c:7796 #, c-format msgid "invalid resource manager ID in secondary checkpoint record" -msgstr "el ID de gestor de recursos en el registro del punto de control secundario no es válido" +msgstr "ID de gestor de recursos no válido en el registro de checkpoint secundario" -#: access/transam/xlog.c:7765 +#: access/transam/xlog.c:7800 #, c-format msgid "invalid resource manager ID in checkpoint record" -msgstr "el ID de gestor de recursos en el registro del punto de control no es válido" +msgstr "ID de gestor de recursos no válido en el registro de checkpoint" -#: access/transam/xlog.c:7777 +#: access/transam/xlog.c:7812 #, c-format msgid "invalid xl_info in primary checkpoint record" -msgstr "xl_info en el registro del punto de control primario no es válido" +msgstr "xl_info no válido en el registro de checkpoint primario" -#: access/transam/xlog.c:7781 +#: access/transam/xlog.c:7816 #, c-format msgid "invalid xl_info in secondary checkpoint record" -msgstr "xl_info en el registro del punto de control secundario no es válido" +msgstr "xl_info no válido en el registro de checkpoint secundario" -#: access/transam/xlog.c:7785 +#: access/transam/xlog.c:7820 #, c-format msgid "invalid xl_info in checkpoint record" -msgstr "xl_info en el registro del punto de control no es válido" +msgstr "xl_info no válido en el registro de checkpoint" -#: access/transam/xlog.c:7796 +#: access/transam/xlog.c:7831 #, c-format msgid "invalid length of primary checkpoint record" -msgstr "la longitud del registro del punto de control primario no es válida" +msgstr "longitud del registro de checkpoint primario no válida" -#: access/transam/xlog.c:7800 +#: access/transam/xlog.c:7835 #, c-format msgid "invalid length of secondary checkpoint record" -msgstr "la longitud del registro del punto de control secundario no es válida" +msgstr "longitud del registro de checkpoint secundario no válida" -#: access/transam/xlog.c:7804 +#: access/transam/xlog.c:7839 #, c-format msgid "invalid length of checkpoint record" -msgstr "la longitud del registro de punto de control no es válida" +msgstr "longitud del registro de checkpoint no válida" -#: access/transam/xlog.c:7972 +#: access/transam/xlog.c:8007 #, c-format msgid "shutting down" msgstr "apagando" -#: access/transam/xlog.c:8485 +#: access/transam/xlog.c:8531 #, c-format msgid "concurrent transaction log activity while database system is shutting down" msgstr "hay actividad en el registro de transacción mientras el sistema se está apagando" -#: access/transam/xlog.c:8736 +#: access/transam/xlog.c:8785 #, c-format msgid "skipping restartpoint, recovery has already ended" msgstr "saltando el punto-de-reinicio; la recuperación ya ha terminado" -#: access/transam/xlog.c:8759 +#: access/transam/xlog.c:8808 #, c-format msgid "skipping restartpoint, already performed at %X/%X" msgstr "saltando el punto-de-reinicio; ya fue llevado a cabo en %X/%X" -#: access/transam/xlog.c:8914 +#: access/transam/xlog.c:8984 #, c-format msgid "recovery restart point at %X/%X" msgstr "punto-de-reinicio de recuperación en %X/%X" -#: access/transam/xlog.c:9047 +#: access/transam/xlog.c:9117 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "punto de recuperación «%s» creado en %X/%X" -#: access/transam/xlog.c:9177 +#: access/transam/xlog.c:9247 #, c-format msgid "unexpected previous timeline ID %u (current timeline ID %u) in checkpoint record" -msgstr "ID de timeline previo %u inesperado (timeline actual %u) en el registro de punto de control" +msgstr "ID de timeline previo %u inesperado (timeline actual %u) en el registro de checkpoint" -#: access/transam/xlog.c:9186 +#: access/transam/xlog.c:9256 #, c-format msgid "unexpected timeline ID %u (after %u) in checkpoint record" -msgstr "ID de timeline %u inesperado (después de %u) en el registro de punto de control" +msgstr "ID de timeline %u inesperado (después de %u) en el registro de checkpoint" -#: access/transam/xlog.c:9202 +#: access/transam/xlog.c:9272 #, c-format msgid "unexpected timeline ID %u in checkpoint record, before reaching minimum recovery point %X/%X on timeline %u" msgstr "timeline ID %u inesperado en registro de checkpoint, antes de alcanzar el punto mínimo de recuperación %X/%X en el timeline %u" -#: access/transam/xlog.c:9273 +#: access/transam/xlog.c:9343 #, c-format msgid "online backup was canceled, recovery cannot continue" msgstr "el respaldo en línea fue cancelado, la recuperación no puede continuar" -#: access/transam/xlog.c:9329 access/transam/xlog.c:9376 -#: access/transam/xlog.c:9399 +#: access/transam/xlog.c:9399 access/transam/xlog.c:9446 +#: access/transam/xlog.c:9469 #, c-format msgid "unexpected timeline ID %u (should be %u) in checkpoint record" -msgstr "ID de timeline %u inesperado (debería ser %u) en el registro de punto de control" +msgstr "ID de timeline %u inesperado (debería ser %u) en el registro de checkpoint" -#: access/transam/xlog.c:9674 +#: access/transam/xlog.c:9744 #, c-format msgid "could not fsync log segment %s: %m" msgstr "no se pudo sincronizar (fsync) el archivo de registro %s: %m" -#: access/transam/xlog.c:9698 +#: access/transam/xlog.c:9768 #, c-format msgid "could not fsync log file %s: %m" msgstr "no se pudo sincronizar (fsync) archivo de registro «%s»: %m" -#: access/transam/xlog.c:9706 +#: access/transam/xlog.c:9776 #, c-format msgid "could not fsync write-through log file %s: %m" msgstr "no se pudo sincronizar (fsync write-through) el archivo de registro %s: %m" -#: access/transam/xlog.c:9715 +#: access/transam/xlog.c:9785 #, c-format msgid "could not fdatasync log file %s: %m" msgstr "no se pudo sincronizar (fdatasync) el archivo de registro %s: %m" -#: access/transam/xlog.c:9806 access/transam/xlog.c:10277 -#: access/transam/xlogfuncs.c:294 access/transam/xlogfuncs.c:321 -#: access/transam/xlogfuncs.c:360 access/transam/xlogfuncs.c:381 -#: access/transam/xlogfuncs.c:402 +#: access/transam/xlog.c:9876 access/transam/xlog.c:10393 +#: access/transam/xlogfuncs.c:289 access/transam/xlogfuncs.c:316 +#: access/transam/xlogfuncs.c:355 access/transam/xlogfuncs.c:376 +#: access/transam/xlogfuncs.c:397 #, c-format msgid "WAL control functions cannot be executed during recovery." msgstr "Las funciones de control de WAL no pueden ejecutarse durante la recuperación." -#: access/transam/xlog.c:9815 access/transam/xlog.c:10286 +#: access/transam/xlog.c:9885 access/transam/xlog.c:10402 #, c-format msgid "WAL level not sufficient for making an online backup" msgstr "el nivel de WAL no es suficiente para hacer un respaldo en línea" -#: access/transam/xlog.c:9816 access/transam/xlog.c:10287 -#: access/transam/xlogfuncs.c:327 -#, fuzzy, c-format -#| msgid "wal_level must be set to \"archive\", \"hot_standby\", or \"logical\" at server start." +#: access/transam/xlog.c:9886 access/transam/xlog.c:10403 +#: access/transam/xlogfuncs.c:322 +#, c-format msgid "wal_level must be set to \"replica\" or \"logical\" at server start." -msgstr "wal_level debe ser definido a «archive», «hot_standby» o «logical» al inicio del servidor." +msgstr "wal_level debe ser definido a «replica» o «logical» al inicio del servidor." -#: access/transam/xlog.c:9821 +#: access/transam/xlog.c:9891 #, c-format msgid "backup label too long (max %d bytes)" msgstr "la etiqueta de respaldo es demasiado larga (máximo %d bytes)" -#: access/transam/xlog.c:9853 access/transam/xlog.c:10125 -#: access/transam/xlog.c:10163 +#: access/transam/xlog.c:9928 access/transam/xlog.c:10200 +#: access/transam/xlog.c:10238 #, c-format msgid "a backup is already in progress" msgstr "ya hay un respaldo en curso" -#: access/transam/xlog.c:9854 +#: access/transam/xlog.c:9929 #, c-format msgid "Run pg_stop_backup() and try again." msgstr "Ejecute pg_stop_backup() e intente nuevamente." -#: access/transam/xlog.c:9949 +#: access/transam/xlog.c:10024 #, c-format msgid "WAL generated with full_page_writes=off was replayed since last restartpoint" msgstr "el WAL generado con full_page_writes=off fue restaurado desde el último punto-de-reinicio" -#: access/transam/xlog.c:9951 access/transam/xlog.c:10450 +#: access/transam/xlog.c:10026 access/transam/xlog.c:10587 #, c-format msgid "This means that the backup being taken on the standby is corrupt and should not be used. Enable full_page_writes and run CHECKPOINT on the master, and then try an online backup again." msgstr "Esto significa que el respaldo que estaba siendo tomado en el standby está corrupto y no debería usarse. Active full_page_writes y ejecute CHECKPOINT en el maestro, luego trate de ejecutar un respaldo en línea nuevamente." -#: access/transam/xlog.c:10018 replication/basebackup.c:1038 +#: access/transam/xlog.c:10093 replication/basebackup.c:1026 #: utils/adt/misc.c:498 #, c-format msgid "could not read symbolic link \"%s\": %m" msgstr "no se pudo leer el enlace simbólico «%s»: %m" -#: access/transam/xlog.c:10025 replication/basebackup.c:1043 +#: access/transam/xlog.c:10100 replication/basebackup.c:1031 #: utils/adt/misc.c:503 #, c-format msgid "symbolic link \"%s\" target is too long" msgstr "la ruta «%s» del enlace simbólico es demasiado larga" -#: access/transam/xlog.c:10078 commands/tablespace.c:391 -#: commands/tablespace.c:553 replication/basebackup.c:1059 -#: utils/adt/misc.c:511 +#: access/transam/xlog.c:10153 commands/tablespace.c:391 +#: commands/tablespace.c:553 replication/basebackup.c:1047 utils/adt/misc.c:511 #, c-format msgid "tablespaces are not supported on this platform" msgstr "tablespaces no están soportados en esta plataforma" -#: access/transam/xlog.c:10119 access/transam/xlog.c:10157 -#: access/transam/xlog.c:10336 access/transam/xlogarchive.c:106 -#: access/transam/xlogarchive.c:265 commands/copy.c:1776 commands/copy.c:2800 -#: commands/extension.c:3109 commands/tablespace.c:782 -#: commands/tablespace.c:873 guc-file.l:1001 replication/basebackup.c:407 -#: replication/basebackup.c:475 replication/logical/snapbuild.c:1491 -#: storage/file/copydir.c:72 storage/file/copydir.c:115 storage/file/fd.c:2826 -#: storage/file/fd.c:2918 utils/adt/dbsize.c:70 utils/adt/dbsize.c:220 +#: access/transam/xlog.c:10194 access/transam/xlog.c:10232 +#: access/transam/xlog.c:10441 access/transam/xlogarchive.c:106 +#: access/transam/xlogarchive.c:265 commands/copy.c:1816 commands/copy.c:2840 +#: commands/extension.c:3133 commands/tablespace.c:782 +#: commands/tablespace.c:873 replication/basebackup.c:409 +#: replication/basebackup.c:477 replication/logical/snapbuild.c:1496 +#: storage/file/copydir.c:72 storage/file/copydir.c:115 storage/file/fd.c:2903 +#: storage/file/fd.c:2995 utils/adt/dbsize.c:70 utils/adt/dbsize.c:220 #: utils/adt/dbsize.c:300 utils/adt/genfile.c:114 utils/adt/genfile.c:333 +#: guc-file.l:1001 #, c-format msgid "could not stat file \"%s\": %m" msgstr "no se pudo hacer stat al archivo «%s»: %m" -#: access/transam/xlog.c:10126 access/transam/xlog.c:10164 +#: access/transam/xlog.c:10201 access/transam/xlog.c:10239 #, c-format msgid "If you're sure there is no backup in progress, remove file \"%s\" and try again." msgstr "Si está seguro que no hay un respaldo en curso, elimine el archivo «%s» e intente nuevamente." -#: access/transam/xlog.c:10143 access/transam/xlog.c:10181 -#: access/transam/xlog.c:10511 +#: access/transam/xlog.c:10218 access/transam/xlog.c:10256 +#: access/transam/xlog.c:10648 #, c-format msgid "could not write file \"%s\": %m" msgstr "no se pudo escribir el archivo «%s»: %m" -#: access/transam/xlog.c:10300 -#, fuzzy, c-format -#| msgid "a backup is not in progress" +#: access/transam/xlog.c:10418 +#, c-format msgid "exclusive backup not in progress" -msgstr "no hay un respaldo en curso" +msgstr "no hay un respaldo exclusivo en curso" -#: access/transam/xlog.c:10340 +#: access/transam/xlog.c:10445 #, c-format msgid "a backup is not in progress" msgstr "no hay un respaldo en curso" -#: access/transam/xlog.c:10385 access/transam/xlog.c:10398 -#: access/transam/xlog.c:10738 access/transam/xlog.c:10744 -#: access/transam/xlog.c:10828 access/transam/xlogfuncs.c:695 +#: access/transam/xlog.c:10522 access/transam/xlog.c:10535 +#: access/transam/xlog.c:10875 access/transam/xlog.c:10881 +#: access/transam/xlog.c:10965 access/transam/xlogfuncs.c:690 #, c-format msgid "invalid data in file \"%s\"" msgstr "datos no válidos en archivo «%s»" -#: access/transam/xlog.c:10402 replication/basebackup.c:936 +#: access/transam/xlog.c:10539 replication/basebackup.c:938 #, c-format msgid "the standby was promoted during online backup" msgstr "el standby fue promovido durante el respaldo en línea" -#: access/transam/xlog.c:10403 replication/basebackup.c:937 +#: access/transam/xlog.c:10540 replication/basebackup.c:939 #, c-format msgid "This means that the backup being taken is corrupt and should not be used. Try taking another online backup." msgstr "Esto significa que el respaldo que se estaba tomando está corrupto y no debería ser usado. Trate de ejecutar un nuevo respaldo en línea." -#: access/transam/xlog.c:10448 +#: access/transam/xlog.c:10585 #, c-format msgid "WAL generated with full_page_writes=off was replayed during online backup" msgstr "el WAL generado con full_page_writes=off fue restaurado durante el respaldo en línea" -#: access/transam/xlog.c:10560 +#: access/transam/xlog.c:10697 #, c-format msgid "pg_stop_backup cleanup done, waiting for required WAL segments to be archived" msgstr "finalización de pg_stop_backup completa, esperando que se archiven los segmentos WAL requeridos" -#: access/transam/xlog.c:10570 +#: access/transam/xlog.c:10707 #, c-format msgid "pg_stop_backup still waiting for all required WAL segments to be archived (%d seconds elapsed)" msgstr "pg_stop_backup todavía espera que todos los segmentos WAL requeridos sean archivados (han pasado %d segundos)" -#: access/transam/xlog.c:10572 +#: access/transam/xlog.c:10709 #, c-format msgid "Check that your archive_command is executing properly. pg_stop_backup can be canceled safely, but the database backup will not be usable without all the WAL segments." msgstr "Verifique que su archive_command se esté ejecutando con normalidad. pg_stop_backup puede ser abortado confiablemente, pero el respaldo de la base de datos no será utilizable a menos que disponga de todos los segmentos de WAL." -#: access/transam/xlog.c:10579 +#: access/transam/xlog.c:10716 #, c-format msgid "pg_stop_backup complete, all required WAL segments have been archived" msgstr "pg_stop_backup completado, todos los segmentos de WAL requeridos han sido archivados" -#: access/transam/xlog.c:10583 +#: access/transam/xlog.c:10720 #, c-format msgid "WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup" msgstr "el archivado de WAL no está activo; debe asegurarse que todos los segmentos WAL requeridos se copian por algún otro mecanismo para completar el respaldo" #. translator: %s is an XLog record description -#: access/transam/xlog.c:10868 -#, fuzzy, c-format -#| msgid "xlog redo %s" +#: access/transam/xlog.c:11005 +#, c-format msgid "xlog redo at %X/%X for %s" -msgstr "xlog redo %s" +msgstr "xlog redo en %X/%X para %s" -#: access/transam/xlog.c:10917 +#: access/transam/xlog.c:11054 #, c-format msgid "online backup mode was not canceled" msgstr "el modo de respaldo en línea no fue cancelado" -#: access/transam/xlog.c:10918 -#, fuzzy, c-format +#: access/transam/xlog.c:11055 +#, c-format msgid "File \"%s\" could not be renamed to \"%s\": %m." -msgstr "No se pudo renombrar «%s» a «%s»: %m." +msgstr "El archivo «%s» no se pudo renombrar a «%s»: %m." -#: access/transam/xlog.c:10927 access/transam/xlog.c:10939 -#: access/transam/xlog.c:10949 +#: access/transam/xlog.c:11064 access/transam/xlog.c:11076 +#: access/transam/xlog.c:11086 #, c-format msgid "online backup mode canceled" msgstr "el modo de respaldo en línea fue cancelado" -#: access/transam/xlog.c:10940 +#: access/transam/xlog.c:11077 #, c-format msgid "Files \"%s\" and \"%s\" were renamed to \"%s\" and \"%s\", respectively." -msgstr "" +msgstr "Los archivos «%s» y «%s» fueron renombrados a «%s» y «%s», respectivamente." -#: access/transam/xlog.c:10950 +#: access/transam/xlog.c:11087 #, c-format msgid "File \"%s\" was renamed to \"%s\", but file \"%s\" could not be renamed to \"%s\": %m." -msgstr "" +msgstr "El archivo «%s» fue renombrado a «%s», pero el archivo «%s» no pudo ser renombrado a «%s»: %m." # XXX why talk about "log segment" instead of "file"? -#: access/transam/xlog.c:11072 access/transam/xlogutils.c:718 -#: replication/walreceiver.c:994 replication/walsender.c:2114 +#: access/transam/xlog.c:11209 access/transam/xlogutils.c:718 +#: replication/walreceiver.c:994 replication/walsender.c:2156 #, c-format msgid "could not seek in log segment %s to offset %u: %m" msgstr "no se pudo posicionar (seek) en segmento %s a la posición %u: %m" # XXX why talk about "log segment" instead of "file"? -#: access/transam/xlog.c:11084 +#: access/transam/xlog.c:11221 #, c-format msgid "could not read from log segment %s, offset %u: %m" msgstr "no se pudo leer del archivo de segmento %s, posición %u: %m" -#: access/transam/xlog.c:11558 +#: access/transam/xlog.c:11695 #, c-format msgid "received promote request" msgstr "se recibió petición de promoción" -#: access/transam/xlog.c:11571 +#: access/transam/xlog.c:11708 #, c-format msgid "trigger file found: %s" msgstr "se encontró el archivo disparador: %s" -#: access/transam/xlog.c:11580 +#: access/transam/xlog.c:11717 #, c-format msgid "could not stat trigger file \"%s\": %m" msgstr "no se pudo hacer stat al archivo disparador «%s»: %m" @@ -2808,8 +2597,8 @@ msgid "%s \"%s\": %s" msgstr "%s «%s»: %s" #: access/transam/xlogarchive.c:458 replication/logical/snapbuild.c:1619 -#: replication/slot.c:480 replication/slot.c:992 replication/slot.c:1100 -#: storage/file/fd.c:635 storage/file/fd.c:693 utils/time/snapmgr.c:1246 +#: replication/slot.c:496 replication/slot.c:1009 replication/slot.c:1117 +#: storage/file/fd.c:642 storage/file/fd.c:700 utils/time/snapmgr.c:1298 #, c-format msgid "could not rename file \"%s\" to \"%s\": %m" msgstr "no se pudo renombrar el archivo de «%s» a «%s»: %m" @@ -2824,105 +2613,102 @@ msgstr "no se pudo crear el archivo de estado «%s»: %m" msgid "could not write archive status file \"%s\": %m" msgstr "no se pudo escribir el archivo de estado «%s»: %m" -#: access/transam/xlogfuncs.c:58 +#: access/transam/xlogfuncs.c:56 #, c-format msgid "aborting backup due to backend exiting before pg_stop_backup was called" -msgstr "" +msgstr "abortando el backup porque el proceso servidor terminó antes de que pg_stop_backup fuera invocada" -#: access/transam/xlogfuncs.c:88 -#, fuzzy, c-format -#| msgid "a backup is already in progress" +#: access/transam/xlogfuncs.c:87 +#, c-format msgid "a backup is already in progress in this session" -msgstr "ya hay un respaldo en curso" +msgstr "ya hay un respaldo en curso en esta sesión" -#: access/transam/xlogfuncs.c:94 commands/tablespace.c:705 -#: commands/tablespace.c:715 postmaster/postmaster.c:1406 -#: replication/basebackup.c:295 replication/basebackup.c:635 -#: storage/file/copydir.c:53 storage/file/copydir.c:96 storage/file/fd.c:2292 -#: storage/file/fd.c:2891 storage/ipc/dsm.c:300 utils/adt/genfile.c:439 +#: access/transam/xlogfuncs.c:93 commands/tablespace.c:705 +#: commands/tablespace.c:715 postmaster/postmaster.c:1424 +#: replication/basebackup.c:297 replication/basebackup.c:637 +#: storage/file/copydir.c:53 storage/file/copydir.c:96 storage/file/fd.c:2369 +#: storage/file/fd.c:2968 storage/ipc/dsm.c:300 utils/adt/genfile.c:439 #: utils/adt/misc.c:411 utils/misc/tzparser.c:339 #, c-format msgid "could not open directory \"%s\": %m" msgstr "no se pudo abrir el directorio «%s»: %m" -#: access/transam/xlogfuncs.c:155 access/transam/xlogfuncs.c:229 -#, fuzzy, c-format -#| msgid "a backup is not in progress" +#: access/transam/xlogfuncs.c:153 access/transam/xlogfuncs.c:226 +#, c-format msgid "non-exclusive backup in progress" -msgstr "no hay un respaldo en curso" +msgstr "respaldo no-exclusivo en curso" -#: access/transam/xlogfuncs.c:156 access/transam/xlogfuncs.c:230 +#: access/transam/xlogfuncs.c:154 access/transam/xlogfuncs.c:227 #, c-format msgid "Did you mean to use pg_stop_backup('f')?" -msgstr "" +msgstr "¿Quiso usar pg_stop_backup('f')?" -#: access/transam/xlogfuncs.c:200 commands/event_trigger.c:1445 -#: commands/event_trigger.c:1996 commands/extension.c:1728 -#: commands/extension.c:1837 commands/extension.c:2030 commands/prepare.c:702 +#: access/transam/xlogfuncs.c:197 commands/event_trigger.c:1445 +#: commands/event_trigger.c:1996 commands/extension.c:1732 +#: commands/extension.c:1841 commands/extension.c:2034 commands/prepare.c:702 #: executor/execQual.c:1757 executor/execQual.c:1782 executor/execQual.c:2157 -#: executor/execQual.c:5423 executor/functions.c:1022 foreign/foreign.c:492 -#: replication/logical/logicalfuncs.c:175 replication/logical/origin.c:1391 -#: replication/slotfuncs.c:189 replication/walsender.c:2763 +#: executor/execQual.c:5438 executor/functions.c:1031 foreign/foreign.c:492 +#: replication/logical/logicalfuncs.c:175 replication/logical/origin.c:1394 +#: replication/slotfuncs.c:189 replication/walsender.c:2882 #: utils/adt/jsonfuncs.c:1483 utils/adt/jsonfuncs.c:1613 #: utils/adt/jsonfuncs.c:1801 utils/adt/jsonfuncs.c:1928 #: utils/adt/jsonfuncs.c:2694 utils/adt/pgstatfuncs.c:554 -#: utils/adt/pgstatfuncs.c:655 utils/fmgr/funcapi.c:61 utils/misc/guc.c:8430 -#: utils/mmgr/portalmem.c:1074 +#: utils/adt/pgstatfuncs.c:655 utils/fmgr/funcapi.c:61 utils/misc/guc.c:8436 +#: utils/mmgr/portalmem.c:1088 #, c-format msgid "set-valued function called in context that cannot accept a set" msgstr "se llamó una función que retorna un conjunto en un contexto que no puede aceptarlo" -#: access/transam/xlogfuncs.c:204 commands/event_trigger.c:1449 -#: commands/event_trigger.c:2000 commands/extension.c:1732 -#: commands/extension.c:1841 commands/extension.c:2034 commands/prepare.c:706 +#: access/transam/xlogfuncs.c:201 commands/event_trigger.c:1449 +#: commands/event_trigger.c:2000 commands/extension.c:1736 +#: commands/extension.c:1845 commands/extension.c:2038 commands/prepare.c:706 #: foreign/foreign.c:497 replication/logical/logicalfuncs.c:179 -#: replication/logical/origin.c:1395 replication/slotfuncs.c:193 -#: replication/walsender.c:2767 utils/adt/pgstatfuncs.c:558 -#: utils/adt/pgstatfuncs.c:659 utils/misc/guc.c:8434 utils/misc/pg_config.c:44 -#: utils/mmgr/portalmem.c:1078 +#: replication/logical/origin.c:1398 replication/slotfuncs.c:193 +#: replication/walsender.c:2886 utils/adt/pgstatfuncs.c:558 +#: utils/adt/pgstatfuncs.c:659 utils/misc/guc.c:8440 utils/misc/pg_config.c:44 +#: utils/mmgr/portalmem.c:1092 #, c-format msgid "materialize mode required, but it is not allowed in this context" msgstr "se requiere un nodo «materialize», pero no está permitido en este contexto" -#: access/transam/xlogfuncs.c:247 -#, fuzzy, c-format -#| msgid "a backup is not in progress" +#: access/transam/xlogfuncs.c:243 +#, c-format msgid "non-exclusive backup is not in progress" -msgstr "no hay un respaldo en curso" +msgstr "no hay un respaldo no-exclusivo en progreso" -#: access/transam/xlogfuncs.c:248 +#: access/transam/xlogfuncs.c:244 #, c-format msgid "Did you mean to use pg_stop_backup('t')?" -msgstr "" +msgstr "¿Quiso usar pg_stop_backup('t')?" -#: access/transam/xlogfuncs.c:326 +#: access/transam/xlogfuncs.c:321 #, c-format msgid "WAL level not sufficient for creating a restore point" msgstr "el nivel de WAL no es suficiente para crear un punto de recuperación" -#: access/transam/xlogfuncs.c:334 +#: access/transam/xlogfuncs.c:329 #, c-format msgid "value too long for restore point (maximum %d characters)" msgstr "el valor es demasiado largo para un punto de recuperación (máximo %d caracteres)" -#: access/transam/xlogfuncs.c:472 +#: access/transam/xlogfuncs.c:467 #, c-format msgid "pg_xlogfile_name_offset() cannot be executed during recovery." msgstr "pg_xlogfile_name_offset() no puede ejecutarse durante la recuperación." -#: access/transam/xlogfuncs.c:528 +#: access/transam/xlogfuncs.c:523 #, c-format msgid "pg_xlogfile_name() cannot be executed during recovery." msgstr "pg_xlogfile_name() no puede ejecutarse durante la recuperación." -#: access/transam/xlogfuncs.c:548 access/transam/xlogfuncs.c:568 -#: access/transam/xlogfuncs.c:585 +#: access/transam/xlogfuncs.c:543 access/transam/xlogfuncs.c:563 +#: access/transam/xlogfuncs.c:580 #, c-format msgid "recovery is not in progress" -msgstr "la recuperación no está en proceso" +msgstr "la recuperación no está en curso" -#: access/transam/xlogfuncs.c:549 access/transam/xlogfuncs.c:569 -#: access/transam/xlogfuncs.c:586 +#: access/transam/xlogfuncs.c:544 access/transam/xlogfuncs.c:564 +#: access/transam/xlogfuncs.c:581 #, c-format msgid "Recovery control functions can only be executed during recovery." msgstr "Las funciones de control de recuperación sólo pueden ejecutarse durante la recuperación." @@ -2938,10 +2724,9 @@ msgid "contrecord is requested by %X/%X" msgstr "contrecord solicitado por %X/%X" #: access/transam/xlogreader.c:325 access/transam/xlogreader.c:624 -#, fuzzy, c-format -#| msgid "invalid record length at %X/%X" +#, c-format msgid "invalid record length at %X/%X: wanted %u, got %u" -msgstr "largo de registro no válido en %X/%X" +msgstr "largo de registro no válido en %X/%X: se esperaba %u, se obtuvo %u" #: access/transam/xlogreader.c:340 #, c-format @@ -2951,7 +2736,7 @@ msgstr "largo de registro %u en %X/%X demasiado largo" #: access/transam/xlogreader.c:381 #, c-format msgid "there is no contrecord flag at %X/%X" -msgstr "no hay bandera de contrecord en %X/%X" +msgstr "no hay marca de contrecord en %X/%X" #: access/transam/xlogreader.c:394 #, c-format @@ -3049,37 +2834,37 @@ msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" msgstr "BKPBLOCK_SAME_REL está definido, pero no hay «rel» anterior en %X/%X " #: access/transam/xlogreader.c:1217 -#, fuzzy, c-format +#, c-format msgid "invalid block_id %u at %X/%X" -msgstr "block_id %u fuera de orden en %X/%X" +msgstr "block_id %u no válido en %X/%X" #: access/transam/xlogreader.c:1282 -#, fuzzy, c-format +#, c-format msgid "record with invalid length at %X/%X" -msgstr "registro con largo cero en %X/%X" +msgstr "registro con largo no válido en %X/%X" #: access/transam/xlogreader.c:1371 -#, fuzzy, c-format +#, c-format msgid "invalid compressed image at %X/%X, block %d" -msgstr "ID de gestor de recursos %u no válido en %X/%X" +msgstr "imagen comprimida no válida en %X/%X, bloque %d" -#: access/transam/xlogutils.c:739 replication/walsender.c:2131 +#: access/transam/xlogutils.c:739 replication/walsender.c:2173 #, c-format msgid "could not read from log segment %s, offset %u, length %lu: %m" msgstr "no se pudo leer desde el segmento %s, posición %u, largo %lu: %m" -#: bootstrap/bootstrap.c:269 postmaster/postmaster.c:793 tcop/postgres.c:3501 +#: bootstrap/bootstrap.c:269 postmaster/postmaster.c:811 tcop/postgres.c:3499 #, c-format msgid "--%s requires a value" msgstr "--%s requiere un valor" -#: bootstrap/bootstrap.c:274 postmaster/postmaster.c:798 tcop/postgres.c:3506 +#: bootstrap/bootstrap.c:274 postmaster/postmaster.c:816 tcop/postgres.c:3504 #, c-format msgid "-c %s requires a value" msgstr "-c %s requiere un valor" -#: bootstrap/bootstrap.c:285 postmaster/postmaster.c:810 -#: postmaster/postmaster.c:823 +#: bootstrap/bootstrap.c:285 postmaster/postmaster.c:828 +#: postmaster/postmaster.c:841 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Pruebe «%s --help» para mayor información.\n" @@ -3089,142 +2874,142 @@ msgstr "Pruebe «%s --help» para mayor información.\n" msgid "%s: invalid command-line arguments\n" msgstr "%s: argumentos de línea de órdenes no válidos\n" -#: catalog/aclchk.c:193 +#: catalog/aclchk.c:201 #, c-format msgid "grant options can only be granted to roles" msgstr "la opción de grant sólo puede ser otorgada a roles" -#: catalog/aclchk.c:316 +#: catalog/aclchk.c:324 #, c-format msgid "no privileges were granted for column \"%s\" of relation \"%s\"" msgstr "no se otorgaron privilegios para la columna «%s» de la relación «%s»" -#: catalog/aclchk.c:321 +#: catalog/aclchk.c:329 #, c-format msgid "no privileges were granted for \"%s\"" msgstr "no se otorgaron privilegios para «%s»" -#: catalog/aclchk.c:329 +#: catalog/aclchk.c:337 #, c-format msgid "not all privileges were granted for column \"%s\" of relation \"%s\"" msgstr "no todos los privilegios fueron otorgados para la columna «%s» de la relación «%s»" -#: catalog/aclchk.c:334 +#: catalog/aclchk.c:342 #, c-format msgid "not all privileges were granted for \"%s\"" msgstr "no todos los privilegios fueron otorgados para «%s»" -#: catalog/aclchk.c:345 +#: catalog/aclchk.c:353 #, c-format msgid "no privileges could be revoked for column \"%s\" of relation \"%s\"" msgstr "ningún privilegio pudo ser revocado para la columna «%s» de la relación «%s»" -#: catalog/aclchk.c:350 +#: catalog/aclchk.c:358 #, c-format msgid "no privileges could be revoked for \"%s\"" msgstr "ningún privilegio pudo ser revocado para «%s»" -#: catalog/aclchk.c:358 +#: catalog/aclchk.c:366 #, c-format msgid "not all privileges could be revoked for column \"%s\" of relation \"%s\"" msgstr "no todos los privilegios pudieron ser revocados para la columna «%s» de la relación «%s»" -#: catalog/aclchk.c:363 +#: catalog/aclchk.c:371 #, c-format msgid "not all privileges could be revoked for \"%s\"" msgstr "no todos los privilegios pudieron ser revocados para «%s»" -#: catalog/aclchk.c:445 catalog/aclchk.c:935 +#: catalog/aclchk.c:453 catalog/aclchk.c:943 #, c-format msgid "invalid privilege type %s for relation" msgstr "el tipo de privilegio %s no es válido para una relación" -#: catalog/aclchk.c:449 catalog/aclchk.c:939 +#: catalog/aclchk.c:457 catalog/aclchk.c:947 #, c-format msgid "invalid privilege type %s for sequence" msgstr "el tipo de privilegio %s no es válido para una secuencia" -#: catalog/aclchk.c:453 +#: catalog/aclchk.c:461 #, c-format msgid "invalid privilege type %s for database" msgstr "el tipo de privilegio %s no es válido para una base de datos" -#: catalog/aclchk.c:457 +#: catalog/aclchk.c:465 #, c-format msgid "invalid privilege type %s for domain" msgstr "el tipo de privilegio %s no es válido para un dominio" -#: catalog/aclchk.c:461 catalog/aclchk.c:943 +#: catalog/aclchk.c:469 catalog/aclchk.c:951 #, c-format msgid "invalid privilege type %s for function" msgstr "el tipo de privilegio %s no es válido para una función" -#: catalog/aclchk.c:465 +#: catalog/aclchk.c:473 #, c-format msgid "invalid privilege type %s for language" msgstr "el tipo de privilegio %s no es válido para un lenguaje" -#: catalog/aclchk.c:469 +#: catalog/aclchk.c:477 #, c-format msgid "invalid privilege type %s for large object" msgstr "el tipo de privilegio %s no es válido para un objeto grande" -#: catalog/aclchk.c:473 +#: catalog/aclchk.c:481 #, c-format msgid "invalid privilege type %s for schema" msgstr "el tipo de privilegio %s no es válido para un esquema" -#: catalog/aclchk.c:477 +#: catalog/aclchk.c:485 #, c-format msgid "invalid privilege type %s for tablespace" msgstr "el tipo de privilegio %s no es válido para un tablespace" -#: catalog/aclchk.c:481 catalog/aclchk.c:947 +#: catalog/aclchk.c:489 catalog/aclchk.c:955 #, c-format msgid "invalid privilege type %s for type" msgstr "el tipo de privilegio %s no es válido para un tipo" -#: catalog/aclchk.c:485 +#: catalog/aclchk.c:493 #, c-format msgid "invalid privilege type %s for foreign-data wrapper" msgstr "el tipo de privilegio %s no es válido para un conector de datos externos" -#: catalog/aclchk.c:489 +#: catalog/aclchk.c:497 #, c-format msgid "invalid privilege type %s for foreign server" msgstr "el tipo de privilegio %s no es válido para un servidor foráneo" -#: catalog/aclchk.c:528 +#: catalog/aclchk.c:536 #, c-format msgid "column privileges are only valid for relations" msgstr "los privilegios de columna son sólo válidos para relaciones" -#: catalog/aclchk.c:687 catalog/aclchk.c:3915 catalog/aclchk.c:4697 +#: catalog/aclchk.c:695 catalog/aclchk.c:3923 catalog/aclchk.c:4705 #: catalog/objectaddress.c:873 catalog/pg_largeobject.c:113 #: storage/large_object/inv_api.c:291 #, c-format msgid "large object %u does not exist" msgstr "no existe el objeto grande %u" -#: catalog/aclchk.c:874 catalog/aclchk.c:882 commands/collationcmds.c:92 -#: commands/copy.c:1008 commands/copy.c:1026 commands/copy.c:1034 -#: commands/copy.c:1042 commands/copy.c:1050 commands/copy.c:1058 -#: commands/copy.c:1066 commands/copy.c:1074 commands/copy.c:1082 -#: commands/copy.c:1098 commands/copy.c:1112 commands/copy.c:1131 -#: commands/copy.c:1146 commands/dbcommands.c:155 commands/dbcommands.c:163 +#: catalog/aclchk.c:882 catalog/aclchk.c:890 commands/collationcmds.c:92 +#: commands/copy.c:1048 commands/copy.c:1066 commands/copy.c:1074 +#: commands/copy.c:1082 commands/copy.c:1090 commands/copy.c:1098 +#: commands/copy.c:1106 commands/copy.c:1114 commands/copy.c:1122 +#: commands/copy.c:1138 commands/copy.c:1152 commands/copy.c:1171 +#: commands/copy.c:1186 commands/dbcommands.c:155 commands/dbcommands.c:163 #: commands/dbcommands.c:171 commands/dbcommands.c:179 #: commands/dbcommands.c:187 commands/dbcommands.c:195 #: commands/dbcommands.c:203 commands/dbcommands.c:211 #: commands/dbcommands.c:219 commands/dbcommands.c:1397 #: commands/dbcommands.c:1405 commands/dbcommands.c:1413 -#: commands/dbcommands.c:1421 commands/extension.c:1218 -#: commands/extension.c:1226 commands/extension.c:1234 -#: commands/extension.c:1242 commands/extension.c:2760 +#: commands/dbcommands.c:1421 commands/extension.c:1222 +#: commands/extension.c:1230 commands/extension.c:1238 +#: commands/extension.c:1246 commands/extension.c:2764 #: commands/foreigncmds.c:539 commands/foreigncmds.c:548 #: commands/functioncmds.c:533 commands/functioncmds.c:649 #: commands/functioncmds.c:657 commands/functioncmds.c:665 -#: commands/functioncmds.c:673 commands/functioncmds.c:2085 -#: commands/functioncmds.c:2093 commands/sequence.c:1189 +#: commands/functioncmds.c:673 commands/functioncmds.c:2105 +#: commands/functioncmds.c:2113 commands/sequence.c:1189 #: commands/sequence.c:1197 commands/sequence.c:1205 commands/sequence.c:1213 #: commands/sequence.c:1221 commands/sequence.c:1229 commands/sequence.c:1237 #: commands/sequence.c:1245 commands/typecmds.c:295 commands/typecmds.c:1382 @@ -3242,420 +3027,420 @@ msgstr "no existe el objeto grande %u" msgid "conflicting or redundant options" msgstr "opciones contradictorias o redundantes" -#: catalog/aclchk.c:980 +#: catalog/aclchk.c:988 #, c-format msgid "default privileges cannot be set for columns" msgstr "los privilegios por omisión no pueden definirse para columnas" -#: catalog/aclchk.c:1494 catalog/objectaddress.c:1390 commands/analyze.c:376 -#: commands/copy.c:4419 commands/sequence.c:1491 commands/tablecmds.c:5197 -#: commands/tablecmds.c:5303 commands/tablecmds.c:5363 -#: commands/tablecmds.c:5476 commands/tablecmds.c:5533 -#: commands/tablecmds.c:5627 commands/tablecmds.c:5723 -#: commands/tablecmds.c:7875 commands/tablecmds.c:8080 -#: commands/tablecmds.c:8500 commands/trigger.c:642 parser/analyze.c:2231 -#: parser/parse_relation.c:2542 parser/parse_relation.c:2604 -#: parser/parse_target.c:940 parser/parse_type.c:127 utils/adt/acl.c:2840 -#: utils/adt/ruleutils.c:1981 +#: catalog/aclchk.c:1502 catalog/objectaddress.c:1390 commands/analyze.c:376 +#: commands/copy.c:4459 commands/sequence.c:1491 commands/tablecmds.c:5211 +#: commands/tablecmds.c:5317 commands/tablecmds.c:5377 +#: commands/tablecmds.c:5490 commands/tablecmds.c:5547 +#: commands/tablecmds.c:5641 commands/tablecmds.c:5737 +#: commands/tablecmds.c:7929 commands/tablecmds.c:8191 +#: commands/tablecmds.c:8611 commands/trigger.c:642 parser/analyze.c:2228 +#: parser/parse_relation.c:2628 parser/parse_relation.c:2690 +#: parser/parse_target.c:951 parser/parse_type.c:127 utils/adt/acl.c:2840 +#: utils/adt/ruleutils.c:1987 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist" msgstr "no existe la columna «%s» en la relación «%s»" -#: catalog/aclchk.c:1763 catalog/objectaddress.c:1203 commands/sequence.c:1078 -#: commands/tablecmds.c:223 commands/tablecmds.c:12007 utils/adt/acl.c:2076 +#: catalog/aclchk.c:1771 catalog/objectaddress.c:1203 commands/sequence.c:1078 +#: commands/tablecmds.c:224 commands/tablecmds.c:12168 utils/adt/acl.c:2076 #: utils/adt/acl.c:2106 utils/adt/acl.c:2138 utils/adt/acl.c:2170 #: utils/adt/acl.c:2198 utils/adt/acl.c:2228 #, c-format msgid "\"%s\" is not a sequence" msgstr "«%s» no es una secuencia" -#: catalog/aclchk.c:1801 +#: catalog/aclchk.c:1809 #, c-format msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" msgstr "la secuencia «%s» sólo soporta los privilegios USAGE, SELECT, y UPDATE" -#: catalog/aclchk.c:1818 +#: catalog/aclchk.c:1826 #, c-format msgid "invalid privilege type USAGE for table" msgstr "el tipo de privilegio USAGE no es válido para tablas" -#: catalog/aclchk.c:1986 +#: catalog/aclchk.c:1994 #, c-format msgid "invalid privilege type %s for column" msgstr "el tipo de privilegio %s no es válido para una columna" -#: catalog/aclchk.c:1999 +#: catalog/aclchk.c:2007 #, c-format msgid "sequence \"%s\" only supports SELECT column privileges" msgstr "la secuencia «%s» sólo soporta el privilegio SELECT" -#: catalog/aclchk.c:2593 +#: catalog/aclchk.c:2601 #, c-format msgid "language \"%s\" is not trusted" msgstr "el lenguaje «%s» no es confiable (trusted)" -#: catalog/aclchk.c:2595 +#: catalog/aclchk.c:2603 #, c-format msgid "GRANT and REVOKE are not allowed on untrusted languages, because only superusers can use untrusted languages." -msgstr "" +msgstr "GRANT y REVOKE no están permitidos en lenguajes no confiables, porque sólo los superusuarios pueden usar lenguajes no confiables." -#: catalog/aclchk.c:3121 +#: catalog/aclchk.c:3129 #, c-format msgid "cannot set privileges of array types" msgstr "no se puede definir privilegios para tipos de array" -#: catalog/aclchk.c:3122 +#: catalog/aclchk.c:3130 #, c-format msgid "Set the privileges of the element type instead." msgstr "Defina los privilegios del tipo elemento en su lugar." -#: catalog/aclchk.c:3129 catalog/objectaddress.c:1523 commands/typecmds.c:3146 +#: catalog/aclchk.c:3137 catalog/objectaddress.c:1523 commands/typecmds.c:3161 #, c-format msgid "\"%s\" is not a domain" msgstr "«%s» no es un dominio" -#: catalog/aclchk.c:3252 +#: catalog/aclchk.c:3260 #, c-format msgid "unrecognized privilege type \"%s\"" msgstr "tipo de privilegio no reconocido: «%s»" -#: catalog/aclchk.c:3301 +#: catalog/aclchk.c:3309 #, c-format msgid "permission denied for column %s" msgstr "permiso denegado a la columna %s" -#: catalog/aclchk.c:3303 +#: catalog/aclchk.c:3311 #, c-format msgid "permission denied for relation %s" msgstr "permiso denegado a la relación %s" -#: catalog/aclchk.c:3305 commands/sequence.c:561 commands/sequence.c:786 +#: catalog/aclchk.c:3313 commands/sequence.c:561 commands/sequence.c:786 #: commands/sequence.c:828 commands/sequence.c:865 commands/sequence.c:1543 #, c-format msgid "permission denied for sequence %s" msgstr "permiso denegado a la secuencia %s" -#: catalog/aclchk.c:3307 +#: catalog/aclchk.c:3315 #, c-format msgid "permission denied for database %s" msgstr "permiso denegado a la base de datos %s" -#: catalog/aclchk.c:3309 +#: catalog/aclchk.c:3317 #, c-format msgid "permission denied for function %s" msgstr "permiso denegado a la función %s" -#: catalog/aclchk.c:3311 +#: catalog/aclchk.c:3319 #, c-format msgid "permission denied for operator %s" msgstr "permiso denegado al operador %s" -#: catalog/aclchk.c:3313 +#: catalog/aclchk.c:3321 #, c-format msgid "permission denied for type %s" msgstr "permiso denegado al tipo %s" -#: catalog/aclchk.c:3315 +#: catalog/aclchk.c:3323 #, c-format msgid "permission denied for language %s" msgstr "permiso denegado al lenguaje %s" -#: catalog/aclchk.c:3317 +#: catalog/aclchk.c:3325 #, c-format msgid "permission denied for large object %s" msgstr "permiso denegado al objeto grande %s" -#: catalog/aclchk.c:3319 +#: catalog/aclchk.c:3327 #, c-format msgid "permission denied for schema %s" msgstr "permiso denegado al esquema %s" -#: catalog/aclchk.c:3321 +#: catalog/aclchk.c:3329 #, c-format msgid "permission denied for operator class %s" msgstr "permiso denegado a la clase de operadores %s" -#: catalog/aclchk.c:3323 +#: catalog/aclchk.c:3331 #, c-format msgid "permission denied for operator family %s" msgstr "permiso denegado a la familia de operadores %s" -#: catalog/aclchk.c:3325 +#: catalog/aclchk.c:3333 #, c-format msgid "permission denied for collation %s" msgstr "permiso denegado al ordenamiento (collation) %s" -#: catalog/aclchk.c:3327 +#: catalog/aclchk.c:3335 #, c-format msgid "permission denied for conversion %s" msgstr "permiso denegado a la conversión %s" -#: catalog/aclchk.c:3329 +#: catalog/aclchk.c:3337 #, c-format msgid "permission denied for tablespace %s" msgstr "permiso denegado al tablespace %s" -#: catalog/aclchk.c:3331 +#: catalog/aclchk.c:3339 #, c-format msgid "permission denied for text search dictionary %s" msgstr "permiso denegado a la configuración de búsqueda en texto %s" -#: catalog/aclchk.c:3333 +#: catalog/aclchk.c:3341 #, c-format msgid "permission denied for text search configuration %s" msgstr "permiso denegado a la configuración de búsqueda en texto %s" -#: catalog/aclchk.c:3335 +#: catalog/aclchk.c:3343 #, c-format msgid "permission denied for foreign-data wrapper %s" msgstr "permiso denegado al conector de datos externos %s" -#: catalog/aclchk.c:3337 +#: catalog/aclchk.c:3345 #, c-format msgid "permission denied for foreign server %s" msgstr "permiso denegado al servidor foráneo %s" -#: catalog/aclchk.c:3339 +#: catalog/aclchk.c:3347 #, c-format msgid "permission denied for event trigger %s" msgstr "permiso denegado al disparador por eventos %s" -#: catalog/aclchk.c:3341 +#: catalog/aclchk.c:3349 #, c-format msgid "permission denied for extension %s" msgstr "permiso denegado a la extensión %s" -#: catalog/aclchk.c:3347 catalog/aclchk.c:3349 +#: catalog/aclchk.c:3355 catalog/aclchk.c:3357 #, c-format msgid "must be owner of relation %s" msgstr "debe ser dueño de la relación %s" -#: catalog/aclchk.c:3351 +#: catalog/aclchk.c:3359 #, c-format msgid "must be owner of sequence %s" msgstr "debe ser dueño de la secuencia %s" -#: catalog/aclchk.c:3353 +#: catalog/aclchk.c:3361 #, c-format msgid "must be owner of database %s" msgstr "debe ser dueño de la base de datos %s" -#: catalog/aclchk.c:3355 +#: catalog/aclchk.c:3363 #, c-format msgid "must be owner of function %s" msgstr "debe ser dueño de la función %s" -#: catalog/aclchk.c:3357 +#: catalog/aclchk.c:3365 #, c-format msgid "must be owner of operator %s" msgstr "debe ser dueño del operador %s" -#: catalog/aclchk.c:3359 +#: catalog/aclchk.c:3367 #, c-format msgid "must be owner of type %s" msgstr "debe ser dueño del tipo %s" -#: catalog/aclchk.c:3361 +#: catalog/aclchk.c:3369 #, c-format msgid "must be owner of language %s" msgstr "debe ser dueño del lenguaje %s" -#: catalog/aclchk.c:3363 +#: catalog/aclchk.c:3371 #, c-format msgid "must be owner of large object %s" msgstr "debe ser dueño del objeto grande %s" -#: catalog/aclchk.c:3365 +#: catalog/aclchk.c:3373 #, c-format msgid "must be owner of schema %s" msgstr "debe ser dueño del esquema %s" -#: catalog/aclchk.c:3367 +#: catalog/aclchk.c:3375 #, c-format msgid "must be owner of operator class %s" msgstr "debe ser dueño de la clase de operadores %s" -#: catalog/aclchk.c:3369 +#: catalog/aclchk.c:3377 #, c-format msgid "must be owner of operator family %s" msgstr "debe ser dueño de la familia de operadores %s" -#: catalog/aclchk.c:3371 +#: catalog/aclchk.c:3379 #, c-format msgid "must be owner of collation %s" msgstr "debe ser dueño del ordenamiento (collation) %s" -#: catalog/aclchk.c:3373 +#: catalog/aclchk.c:3381 #, c-format msgid "must be owner of conversion %s" msgstr "debe ser dueño de la conversión %s" -#: catalog/aclchk.c:3375 +#: catalog/aclchk.c:3383 #, c-format msgid "must be owner of tablespace %s" msgstr "debe ser dueño del tablespace %s" -#: catalog/aclchk.c:3377 +#: catalog/aclchk.c:3385 #, c-format msgid "must be owner of text search dictionary %s" msgstr "debe ser dueño del diccionario de búsqueda en texto %s" -#: catalog/aclchk.c:3379 +#: catalog/aclchk.c:3387 #, c-format msgid "must be owner of text search configuration %s" msgstr "debe ser dueño de la configuración de búsqueda en texto %s" -#: catalog/aclchk.c:3381 +#: catalog/aclchk.c:3389 #, c-format msgid "must be owner of foreign-data wrapper %s" msgstr "debe ser dueño del conector de datos externos %s" -#: catalog/aclchk.c:3383 +#: catalog/aclchk.c:3391 #, c-format msgid "must be owner of foreign server %s" msgstr "debe ser dueño del servidor foráneo %s" -#: catalog/aclchk.c:3385 +#: catalog/aclchk.c:3393 #, c-format msgid "must be owner of event trigger %s" msgstr "debe ser dueño del disparador por eventos %s" -#: catalog/aclchk.c:3387 +#: catalog/aclchk.c:3395 #, c-format msgid "must be owner of extension %s" msgstr "debe ser dueño de la extensión %s" -#: catalog/aclchk.c:3429 +#: catalog/aclchk.c:3437 #, c-format msgid "permission denied for column \"%s\" of relation \"%s\"" msgstr "permiso denegado a la columna «%s» de la relación «%s»" -#: catalog/aclchk.c:3548 catalog/aclchk.c:3556 +#: catalog/aclchk.c:3556 catalog/aclchk.c:3564 #, c-format msgid "attribute %d of relation with OID %u does not exist" msgstr "no existe el atributo %d de la relación con OID %u" -#: catalog/aclchk.c:3629 catalog/aclchk.c:4548 +#: catalog/aclchk.c:3637 catalog/aclchk.c:4556 #, c-format msgid "relation with OID %u does not exist" msgstr "no existe la relación con OID %u" -#: catalog/aclchk.c:3728 catalog/aclchk.c:4966 +#: catalog/aclchk.c:3736 catalog/aclchk.c:4974 #, c-format msgid "database with OID %u does not exist" msgstr "no existe la base de datos con OID %u" -#: catalog/aclchk.c:3782 catalog/aclchk.c:4626 tcop/fastpath.c:223 +#: catalog/aclchk.c:3790 catalog/aclchk.c:4634 tcop/fastpath.c:223 #, c-format msgid "function with OID %u does not exist" msgstr "no existe la función con OID %u" -#: catalog/aclchk.c:3836 catalog/aclchk.c:4652 +#: catalog/aclchk.c:3844 catalog/aclchk.c:4660 #, c-format msgid "language with OID %u does not exist" msgstr "no existe el lenguaje con OID %u" -#: catalog/aclchk.c:4000 catalog/aclchk.c:4724 +#: catalog/aclchk.c:4008 catalog/aclchk.c:4732 #, c-format msgid "schema with OID %u does not exist" msgstr "no existe el esquema con OID %u" -#: catalog/aclchk.c:4054 catalog/aclchk.c:4751 +#: catalog/aclchk.c:4062 catalog/aclchk.c:4759 #, c-format msgid "tablespace with OID %u does not exist" msgstr "no existe el tablespace con OID %u" -#: catalog/aclchk.c:4113 catalog/aclchk.c:4885 commands/foreigncmds.c:325 +#: catalog/aclchk.c:4121 catalog/aclchk.c:4893 commands/foreigncmds.c:325 #, c-format msgid "foreign-data wrapper with OID %u does not exist" msgstr "no existe el conector de datos externos con OID %u" -#: catalog/aclchk.c:4175 catalog/aclchk.c:4912 commands/foreigncmds.c:461 +#: catalog/aclchk.c:4183 catalog/aclchk.c:4920 commands/foreigncmds.c:461 #, c-format msgid "foreign server with OID %u does not exist" msgstr "no existe el servidor foráneo con OID %u" -#: catalog/aclchk.c:4235 catalog/aclchk.c:4574 +#: catalog/aclchk.c:4243 catalog/aclchk.c:4582 #, c-format msgid "type with OID %u does not exist" msgstr "no existe el tipo con OID %u" -#: catalog/aclchk.c:4600 +#: catalog/aclchk.c:4608 #, c-format msgid "operator with OID %u does not exist" msgstr "no existe el operador con OID %u" -#: catalog/aclchk.c:4777 +#: catalog/aclchk.c:4785 #, c-format msgid "operator class with OID %u does not exist" msgstr "no existe la clase de operadores con OID %u" -#: catalog/aclchk.c:4804 +#: catalog/aclchk.c:4812 #, c-format msgid "operator family with OID %u does not exist" msgstr "no existe la familia de operadores con OID %u" -#: catalog/aclchk.c:4831 +#: catalog/aclchk.c:4839 #, c-format msgid "text search dictionary with OID %u does not exist" msgstr "no existe el diccionario de búsqueda en texto con OID %u" -#: catalog/aclchk.c:4858 +#: catalog/aclchk.c:4866 #, c-format msgid "text search configuration with OID %u does not exist" msgstr "no existe la configuración de búsqueda en texto con OID %u" -#: catalog/aclchk.c:4939 commands/event_trigger.c:587 +#: catalog/aclchk.c:4947 commands/event_trigger.c:587 #, c-format msgid "event trigger with OID %u does not exist" msgstr "no existe el disparador por eventos con OID %u" -#: catalog/aclchk.c:4992 +#: catalog/aclchk.c:5000 #, c-format msgid "collation with OID %u does not exist" msgstr "no existe el ordenamiento (collation) con OID %u" -#: catalog/aclchk.c:5018 +#: catalog/aclchk.c:5026 #, c-format msgid "conversion with OID %u does not exist" msgstr "no existe la conversión con OID %u" -#: catalog/aclchk.c:5059 +#: catalog/aclchk.c:5067 #, c-format msgid "extension with OID %u does not exist" msgstr "no existe la extensión con OID %u" -#: catalog/dependency.c:646 +#: catalog/dependency.c:645 #, c-format msgid "cannot drop %s because %s requires it" msgstr "no se puede eliminar %s porque %s lo requiere" -#: catalog/dependency.c:649 +#: catalog/dependency.c:648 #, c-format msgid "You can drop %s instead." msgstr "Puede eliminar %s en su lugar." -#: catalog/dependency.c:811 catalog/pg_shdepend.c:576 +#: catalog/dependency.c:810 catalog/pg_shdepend.c:576 #, c-format msgid "cannot drop %s because it is required by the database system" msgstr "no se puede eliminar %s porque es requerido por el sistema" -#: catalog/dependency.c:927 +#: catalog/dependency.c:926 #, c-format msgid "drop auto-cascades to %s" msgstr "eliminando automáticamente %s" -#: catalog/dependency.c:939 catalog/dependency.c:948 +#: catalog/dependency.c:938 catalog/dependency.c:947 #, c-format msgid "%s depends on %s" msgstr "%s depende de %s" -#: catalog/dependency.c:960 catalog/dependency.c:969 +#: catalog/dependency.c:959 catalog/dependency.c:968 #, c-format msgid "drop cascades to %s" msgstr "eliminando además %s" -#: catalog/dependency.c:977 catalog/pg_shdepend.c:687 +#: catalog/dependency.c:976 catalog/pg_shdepend.c:687 #, c-format msgid "" "\n" @@ -3670,191 +3455,200 @@ msgstr[1] "" "\n" "y otros %d objetos (vea el registro del servidor para obtener la lista)" -#: catalog/dependency.c:989 +#: catalog/dependency.c:988 #, c-format msgid "cannot drop %s because other objects depend on it" msgstr "no se puede eliminar %s porque otros objetos dependen de él" -#: catalog/dependency.c:993 catalog/dependency.c:1000 +#: catalog/dependency.c:992 catalog/dependency.c:999 #, c-format msgid "Use DROP ... CASCADE to drop the dependent objects too." msgstr "Use DROP ... CASCADE para eliminar además los objetos dependientes." -#: catalog/dependency.c:997 +#: catalog/dependency.c:996 #, c-format msgid "cannot drop desired object(s) because other objects depend on them" msgstr "no se puede eliminar el o los objetos deseados porque otros objetos dependen de ellos" #. translator: %d always has a value larger than 1 -#: catalog/dependency.c:1006 +#: catalog/dependency.c:1005 #, c-format msgid "drop cascades to %d other object" msgid_plural "drop cascades to %d other objects" msgstr[0] "eliminando además %d objeto más" msgstr[1] "eliminando además %d objetos más" -#: catalog/dependency.c:1634 +#: catalog/dependency.c:1633 #, c-format msgid "constant of the type \"regrole\" cannot be used here" -msgstr "" +msgstr "no se puede usar una constante de tipo «regrole» aquí" -#: catalog/heap.c:277 +#: catalog/heap.c:278 #, c-format msgid "permission denied to create \"%s.%s\"" msgstr "se ha denegado el permiso para crear «%s.%s»" -#: catalog/heap.c:279 +#: catalog/heap.c:280 #, c-format msgid "System catalog modifications are currently disallowed." msgstr "Las modificaciones al catálogo del sistema están actualmente deshabilitadas." -#: catalog/heap.c:414 commands/tablecmds.c:1438 commands/tablecmds.c:1895 -#: commands/tablecmds.c:4819 +#: catalog/heap.c:415 commands/tablecmds.c:1439 commands/tablecmds.c:1896 +#: commands/tablecmds.c:4833 #, c-format msgid "tables can have at most %d columns" msgstr "las tablas pueden tener a lo más %d columnas" -#: catalog/heap.c:431 commands/tablecmds.c:5080 +#: catalog/heap.c:432 commands/tablecmds.c:5094 #, c-format msgid "column name \"%s\" conflicts with a system column name" msgstr "el nombre de columna «%s» colisiona con nombre de una columna de sistema" -#: catalog/heap.c:447 +#: catalog/heap.c:448 #, c-format msgid "column name \"%s\" specified more than once" msgstr "el nombre de columna «%s» fue especificado más de una vez" -#: catalog/heap.c:497 +#: catalog/heap.c:498 #, c-format msgid "column \"%s\" has type \"unknown\"" msgstr "la columna «%s» tiene tipo «unknown» (desconocido)" -#: catalog/heap.c:498 +#: catalog/heap.c:499 #, c-format msgid "Proceeding with relation creation anyway." msgstr "Continuando con la creación de la relación de todas maneras." -#: catalog/heap.c:511 +#: catalog/heap.c:512 #, c-format msgid "column \"%s\" has pseudo-type %s" -msgstr "la columna «%s» tiene pseudotipo %s" +msgstr "la columna «%s» tiene pseudo-tipo %s" -#: catalog/heap.c:541 +#: catalog/heap.c:542 #, c-format msgid "composite type %s cannot be made a member of itself" msgstr "un tipo compuesto %s no puede ser hecho miembro de sí mismo" -#: catalog/heap.c:583 commands/createas.c:201 commands/createas.c:498 +#: catalog/heap.c:584 commands/createas.c:201 commands/createas.c:498 #, c-format msgid "no collation was derived for column \"%s\" with collatable type %s" msgstr "no se derivó ningún ordenamiento (collate) para la columna «%s» con tipo ordenable %s" -#: catalog/heap.c:585 commands/createas.c:204 commands/createas.c:501 -#: commands/indexcmds.c:1132 commands/view.c:105 regex/regc_pg_locale.c:262 +#: catalog/heap.c:586 commands/createas.c:204 commands/createas.c:501 +#: commands/indexcmds.c:1133 commands/view.c:103 regex/regc_pg_locale.c:262 #: utils/adt/formatting.c:1513 utils/adt/formatting.c:1565 #: utils/adt/formatting.c:1633 utils/adt/formatting.c:1685 -#: utils/adt/formatting.c:1754 utils/adt/formatting.c:1818 -#: utils/adt/like.c:213 utils/adt/selfuncs.c:5334 utils/adt/varlena.c:1421 -#: utils/adt/varlena.c:1826 +#: utils/adt/formatting.c:1754 utils/adt/formatting.c:1818 utils/adt/like.c:213 +#: utils/adt/selfuncs.c:5434 utils/adt/varlena.c:1421 utils/adt/varlena.c:1826 #, c-format msgid "Use the COLLATE clause to set the collation explicitly." msgstr "Use la cláusula COLLATE para establecer el ordenamiento explícitamente." -#: catalog/heap.c:1066 catalog/index.c:792 commands/tablecmds.c:2622 +#: catalog/heap.c:1067 catalog/index.c:792 commands/tablecmds.c:2623 #, c-format msgid "relation \"%s\" already exists" msgstr "la relación «%s» ya existe" -#: catalog/heap.c:1082 catalog/pg_type.c:412 catalog/pg_type.c:722 +#: catalog/heap.c:1083 catalog/pg_type.c:412 catalog/pg_type.c:737 #: commands/typecmds.c:237 commands/typecmds.c:784 commands/typecmds.c:1135 #: commands/typecmds.c:1357 commands/typecmds.c:2113 #, c-format msgid "type \"%s\" already exists" -msgstr "ya existe un tipo «%s»" +msgstr "el tipo «%s» ya existe" -#: catalog/heap.c:1083 +#: catalog/heap.c:1084 #, c-format msgid "A relation has an associated type of the same name, so you must use a name that doesn't conflict with any existing type." msgstr "Una relación tiene un tipo asociado del mismo nombre, de modo que debe usar un nombre que no entre en conflicto con un tipo existente." -#: catalog/heap.c:1111 -#, fuzzy, c-format +#: catalog/heap.c:1112 +#, c-format msgid "pg_class heap OID value not set when in binary upgrade mode" -msgstr "debe ser superusuario para conectarse en modo de actualización binaria" +msgstr "el valor de OID de heap de pg_class no se definió en modo de actualización binaria" -#: catalog/heap.c:2289 +#: catalog/heap.c:2291 #, c-format msgid "check constraint \"%s\" already exists" msgstr "la restricción «check» «%s» ya existe" -#: catalog/heap.c:2442 catalog/pg_constraint.c:654 commands/tablecmds.c:6068 +#: catalog/heap.c:2456 catalog/pg_constraint.c:654 commands/tablecmds.c:6082 #, c-format msgid "constraint \"%s\" for relation \"%s\" already exists" msgstr "la restricción «%s» para la relación «%s» ya existe" -#: catalog/heap.c:2452 +#: catalog/heap.c:2463 #, c-format msgid "constraint \"%s\" conflicts with non-inherited constraint on relation \"%s\"" msgstr "la restricción «%s» está en conflicto con la restricción no heredada de la relación «%s»" -#: catalog/heap.c:2466 +#: catalog/heap.c:2474 +#, c-format +msgid "constraint \"%s\" conflicts with inherited constraint on relation \"%s\"" +msgstr "la restricción «%s» está en conflicto con la restricción heredada de la relación «%s»" + +#: catalog/heap.c:2484 +#, c-format +msgid "constraint \"%s\" conflicts with NOT VALID constraint on relation \"%s\"" +msgstr "la restricción «%s» está en conflicto con la restricción NOT VALID de la relación «%s»" + +#: catalog/heap.c:2489 #, c-format msgid "merging constraint \"%s\" with inherited definition" msgstr "mezclando la restricción «%s» con la definición heredada" -#: catalog/heap.c:2559 +#: catalog/heap.c:2595 #, c-format msgid "cannot use column references in default expression" msgstr "no se pueden usar referencias a columnas en una cláusula default" -#: catalog/heap.c:2570 +#: catalog/heap.c:2606 #, c-format msgid "default expression must not return a set" msgstr "expresiones default no pueden retornar conjuntos" -#: catalog/heap.c:2589 rewrite/rewriteHandler.c:1084 +#: catalog/heap.c:2625 rewrite/rewriteHandler.c:1115 #, c-format msgid "column \"%s\" is of type %s but default expression is of type %s" msgstr "la columna «%s» es de tipo %s pero la expresión default es de tipo %s" -#: catalog/heap.c:2594 commands/prepare.c:374 parser/parse_node.c:428 -#: parser/parse_target.c:528 parser/parse_target.c:778 -#: parser/parse_target.c:788 rewrite/rewriteHandler.c:1089 +#: catalog/heap.c:2630 commands/prepare.c:374 parser/parse_node.c:428 +#: parser/parse_target.c:539 parser/parse_target.c:789 +#: parser/parse_target.c:799 rewrite/rewriteHandler.c:1120 #, c-format msgid "You will need to rewrite or cast the expression." msgstr "Necesitará reescribir la expresión o aplicarle una conversión de tipo." -#: catalog/heap.c:2641 +#: catalog/heap.c:2677 #, c-format msgid "only table \"%s\" can be referenced in check constraint" msgstr "sólo la tabla «%s» puede ser referenciada en una restricción «check»" -#: catalog/heap.c:2881 +#: catalog/heap.c:2917 #, c-format msgid "unsupported ON COMMIT and foreign key combination" msgstr "combinación de ON COMMIT y llaves foráneas no soportada" -#: catalog/heap.c:2882 +#: catalog/heap.c:2918 #, c-format msgid "Table \"%s\" references \"%s\", but they do not have the same ON COMMIT setting." msgstr "La tabla «%s» se refiere a «%s», pero no tienen la misma expresión para ON COMMIT." -#: catalog/heap.c:2887 +#: catalog/heap.c:2923 #, c-format msgid "cannot truncate a table referenced in a foreign key constraint" msgstr "no se puede truncar una tabla referida en una llave foránea" -#: catalog/heap.c:2888 +#: catalog/heap.c:2924 #, c-format msgid "Table \"%s\" references \"%s\"." msgstr "La tabla «%s» hace referencia a «%s»." -#: catalog/heap.c:2890 +#: catalog/heap.c:2926 #, c-format msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." msgstr "Trunque la tabla «%s» al mismo tiempo, o utilice TRUNCATE ... CASCADE." -#: catalog/index.c:210 parser/parse_utilcmd.c:1488 parser/parse_utilcmd.c:1574 +#: catalog/index.c:210 parser/parse_utilcmd.c:1474 parser/parse_utilcmd.c:1560 #, c-format msgid "multiple primary keys for table \"%s\" are not allowed" msgstr "no se permiten múltiples llaves primarias para la tabla «%s»" @@ -3886,9 +3680,9 @@ msgid "relation \"%s\" already exists, skipping" msgstr "la relación «%s» ya existe, ignorando" #: catalog/index.c:820 -#, fuzzy, c-format +#, c-format msgid "pg_class index OID value not set when in binary upgrade mode" -msgstr "debe ser superusuario para conectarse en modo de actualización binaria" +msgstr "el valor de OID de índice de pg_class no se definió en modo de actualización binaria" #: catalog/index.c:1422 #, c-format @@ -3906,15 +3700,9 @@ msgid "cannot reindex temporary tables of other sessions" msgstr "no se puede hacer reindex de tablas temporales de otras sesiones" #: catalog/index.c:3454 -#, fuzzy, c-format -msgid "index \"%s\" was reindexed" -msgstr "la tabla «%s.%s» fue reindexada" - -#: catalog/index.c:3456 commands/vacuumlazy.c:1338 commands/vacuumlazy.c:1414 -#: commands/vacuumlazy.c:1603 commands/vacuumlazy.c:1813 #, c-format -msgid "%s." -msgstr "%s." +msgid "index \"%s\" was reindexed" +msgstr "el índice «%s» fue reindexado" #: catalog/namespace.c:249 catalog/namespace.c:447 catalog/namespace.c:541 #: commands/trigger.c:4523 @@ -3930,26 +3718,26 @@ msgstr "las tablas temporales no pueden especificar un nombre de esquema" #: catalog/namespace.c:385 #, c-format msgid "could not obtain lock on relation \"%s.%s\"" -msgstr "no se pudo bloquear un candado en la relación «%s.%s»" +msgstr "no se pudo obtener un lock en la relación «%s.%s»" #: catalog/namespace.c:390 commands/lockcmds.c:146 #, c-format msgid "could not obtain lock on relation \"%s\"" -msgstr "no se pudo bloquear un candado en la relación «%s»" +msgstr "no se pudo obtener un lock en la relación «%s»" -#: catalog/namespace.c:414 parser/parse_relation.c:1137 +#: catalog/namespace.c:414 parser/parse_relation.c:1138 #, c-format msgid "relation \"%s.%s\" does not exist" msgstr "no existe la relación «%s.%s»" -#: catalog/namespace.c:419 parser/parse_relation.c:1150 -#: parser/parse_relation.c:1158 utils/adt/regproc.c:1034 +#: catalog/namespace.c:419 parser/parse_relation.c:1151 +#: parser/parse_relation.c:1159 utils/adt/regproc.c:1035 #, c-format msgid "relation \"%s\" does not exist" msgstr "no existe la relación «%s»" -#: catalog/namespace.c:487 catalog/namespace.c:2841 commands/extension.c:1382 -#: commands/extension.c:1388 +#: catalog/namespace.c:487 catalog/namespace.c:2841 commands/extension.c:1386 +#: commands/extension.c:1392 #, c-format msgid "no schema has been selected to create in" msgstr "no se ha seleccionado ningún esquema dentro del cual crear" @@ -3990,13 +3778,13 @@ msgstr "no existe la plantilla de búsqueda en texto «%s»" msgid "text search configuration \"%s\" does not exist" msgstr "no existe la configuración de búsqueda en texto «%s»" -#: catalog/namespace.c:2646 parser/parse_expr.c:792 parser/parse_target.c:1130 +#: catalog/namespace.c:2646 parser/parse_expr.c:792 parser/parse_target.c:1141 #, c-format msgid "cross-database references are not implemented: %s" msgstr "no están implementadas las referencias entre bases de datos: %s" -#: catalog/namespace.c:2652 gram.y:13441 gram.y:14810 parser/parse_expr.c:799 -#: parser/parse_target.c:1137 +#: catalog/namespace.c:2652 parser/parse_expr.c:799 parser/parse_target.c:1148 +#: gram.y:13463 gram.y:14832 #, c-format msgid "improper qualified name (too many dotted names): %s" msgstr "el nombre no es válido (demasiados puntos): %s" @@ -4011,8 +3799,8 @@ msgstr "no se puede mover objetos hacia o desde esquemas temporales" msgid "cannot move objects into or out of TOAST schema" msgstr "no se puede mover objetos hacia o desde el esquema TOAST" -#: catalog/namespace.c:2862 commands/schemacmds.c:238 -#: commands/schemacmds.c:317 commands/tablecmds.c:740 +#: catalog/namespace.c:2862 commands/schemacmds.c:238 commands/schemacmds.c:317 +#: commands/tablecmds.c:741 #, c-format msgid "schema \"%s\" does not exist" msgstr "no existe el esquema «%s»" @@ -4043,27 +3831,25 @@ msgid "cannot create temporary tables during recovery" msgstr "no se pueden crear tablas temporales durante la recuperación" #: catalog/namespace.c:3688 -#, fuzzy, c-format -msgid "cannot create temporary tables in parallel mode" -msgstr "no se pueden crear tablas temporales durante la recuperación" +#, c-format +msgid "cannot create temporary tables during a parallel operation" +msgstr "no se pueden acceder tablas temporales durante una operación paralela" #: catalog/namespace.c:3932 commands/tablespace.c:1173 commands/variable.c:63 -#: utils/misc/guc.c:9859 +#: utils/misc/guc.c:9875 #, c-format msgid "List syntax is invalid." msgstr "La sintaxis de lista no es válida." #: catalog/objectaddress.c:1065 -#, fuzzy -#| msgid "schema name cannot be qualified" msgid "access method name cannot be qualified" -msgstr "un nombre de esquema no puede ser calificado" +msgstr "un nombre de método de acceso no puede ser calificado" #: catalog/objectaddress.c:1068 msgid "database name cannot be qualified" msgstr "un nombre de base de datos no puede ser calificado" -#: catalog/objectaddress.c:1071 commands/extension.c:2506 +#: catalog/objectaddress.c:1071 commands/extension.c:2510 #, c-format msgid "extension name cannot be qualified" msgstr "un nombre de extensión no puede ser calificado" @@ -4097,27 +3883,27 @@ msgid "event trigger name cannot be qualified" msgstr "un nombre de disparador por eventos no puede ser calificado" #: catalog/objectaddress.c:1210 commands/lockcmds.c:94 commands/policy.c:94 -#: commands/policy.c:382 commands/policy.c:471 commands/tablecmds.c:217 -#: commands/tablecmds.c:1299 commands/tablecmds.c:4346 -#: commands/tablecmds.c:7977 +#: commands/policy.c:382 commands/policy.c:471 commands/tablecmds.c:218 +#: commands/tablecmds.c:1300 commands/tablecmds.c:4347 +#: commands/tablecmds.c:8031 #, c-format msgid "\"%s\" is not a table" msgstr "«%s» no es una tabla" -#: catalog/objectaddress.c:1217 commands/tablecmds.c:229 -#: commands/tablecmds.c:4376 commands/tablecmds.c:12012 commands/view.c:143 +#: catalog/objectaddress.c:1217 commands/tablecmds.c:230 +#: commands/tablecmds.c:4377 commands/tablecmds.c:12173 commands/view.c:141 #, c-format msgid "\"%s\" is not a view" msgstr "«%s» no es una vista" -#: catalog/objectaddress.c:1224 commands/matview.c:174 -#: commands/tablecmds.c:235 commands/tablecmds.c:12017 +#: catalog/objectaddress.c:1224 commands/matview.c:174 commands/tablecmds.c:236 +#: commands/tablecmds.c:12178 #, c-format msgid "\"%s\" is not a materialized view" msgstr "«%s» no es una vista materializada" -#: catalog/objectaddress.c:1231 commands/tablecmds.c:253 -#: commands/tablecmds.c:4379 commands/tablecmds.c:12022 +#: catalog/objectaddress.c:1231 commands/tablecmds.c:254 +#: commands/tablecmds.c:4380 commands/tablecmds.c:12183 #, c-format msgid "\"%s\" is not a foreign table" msgstr "«%s» no es una tabla foránea" @@ -4128,179 +3914,177 @@ msgid "column name must be qualified" msgstr "el nombre de columna debe ser calificado" #: catalog/objectaddress.c:1472 -#, fuzzy, c-format +#, c-format msgid "default value for column \"%s\" of relation \"%s\" does not exist" -msgstr "no existe la columna «%s» en la relación «%s»" +msgstr "no existe el valor por omisión para la columna «%s» de la relación «%s»" #: catalog/objectaddress.c:1512 commands/functioncmds.c:128 -#: commands/tablecmds.c:245 commands/typecmds.c:3214 parser/parse_type.c:226 +#: commands/tablecmds.c:246 commands/typecmds.c:3229 parser/parse_type.c:226 #: parser/parse_type.c:255 parser/parse_type.c:795 utils/adt/acl.c:4374 -#: utils/adt/regproc.c:1225 +#: utils/adt/regproc.c:1226 #, c-format msgid "type \"%s\" does not exist" msgstr "no existe el tipo «%s»" #: catalog/objectaddress.c:1629 -#, fuzzy, c-format +#, c-format msgid "operator %d (%s, %s) of %s does not exist" -msgstr "operador %d (%s, %s) de %s: %s" +msgstr "no existe el operador %d (%s, %s) de %s" -#: catalog/objectaddress.c:1658 -#, fuzzy, c-format +#: catalog/objectaddress.c:1660 +#, c-format msgid "function %d (%s, %s) of %s does not exist" -msgstr "función %d (%s, %s) de %s: %s" +msgstr "no existe la función %d (%s, %s) de %s" -#: catalog/objectaddress.c:1707 catalog/objectaddress.c:1733 -#, fuzzy, c-format +#: catalog/objectaddress.c:1711 catalog/objectaddress.c:1737 +#, c-format msgid "user mapping for user \"%s\" on server \"%s\" does not exist" -msgstr "no existe un mapeo para el tipo de elemento «%s»" +msgstr "no existe el mapeo para el usuario «%s» en el servidor «%s»" -#: catalog/objectaddress.c:1722 commands/foreigncmds.c:430 -#: commands/foreigncmds.c:997 commands/foreigncmds.c:1359 -#: foreign/foreign.c:692 +#: catalog/objectaddress.c:1726 commands/foreigncmds.c:430 +#: commands/foreigncmds.c:997 commands/foreigncmds.c:1359 foreign/foreign.c:692 #, c-format msgid "server \"%s\" does not exist" msgstr "no existe el servidor «%s»" -#: catalog/objectaddress.c:1794 -#, fuzzy, c-format +#: catalog/objectaddress.c:1798 +#, c-format msgid "unrecognized default ACL object type %c" -msgstr "tipo de locktag %d no reconocido" +msgstr "tipo de objeto %c para ACL por omisión no reconocido" -#: catalog/objectaddress.c:1795 -#, fuzzy, c-format -#| msgid "Valid values are \"[]\", \"[)\", \"(]\", and \"()\"." +#: catalog/objectaddress.c:1799 +#, c-format msgid "Valid object types are \"r\", \"S\", \"f\", and \"T\"." -msgstr "Los valores aceptables son «[]», «[)», «(]» y «()»." +msgstr "Tipos válidos de objeto son «t», «S», «f» y «T»." -#: catalog/objectaddress.c:1841 -#, fuzzy, c-format +#: catalog/objectaddress.c:1845 +#, c-format msgid "default ACL for user \"%s\" in schema \"%s\" on %s does not exist" -msgstr "no existe el procedimiento por omisión de conversión desde la codificación «%s» a «%s»" +msgstr "no existe el ACL por omisión para el usuario «%s» en el esquema «%s» en %s" -#: catalog/objectaddress.c:1846 -#, fuzzy, c-format +#: catalog/objectaddress.c:1850 +#, c-format msgid "default ACL for user \"%s\" on %s does not exist" -msgstr "no existe el usuario LDAP «%s»" +msgstr "no existe el ACL por omisión para el usuario «%s» en %s" -#: catalog/objectaddress.c:1873 catalog/objectaddress.c:1929 -#: catalog/objectaddress.c:1984 -#, fuzzy, c-format +#: catalog/objectaddress.c:1877 catalog/objectaddress.c:1933 +#: catalog/objectaddress.c:1988 +#, c-format msgid "name or argument lists may not contain nulls" -msgstr "el array no debe contener nulls" +msgstr "las listas de nombres o argumentos no pueden contener nulls" -#: catalog/objectaddress.c:1905 -#, fuzzy, c-format +#: catalog/objectaddress.c:1909 +#, c-format msgid "unsupported object type \"%s\"" -msgstr "lenguaje no soportado: «%s»" +msgstr "tipo de objeto «%s» no soportado" -#: catalog/objectaddress.c:1925 catalog/objectaddress.c:1943 +#: catalog/objectaddress.c:1929 catalog/objectaddress.c:1947 #, c-format msgid "name list length must be exactly %d" -msgstr "" +msgstr "el largo de la lista de nombres debe ser exactamente %d" -#: catalog/objectaddress.c:1947 -#, fuzzy, c-format +#: catalog/objectaddress.c:1951 +#, c-format msgid "large object OID may not be null" -msgstr "el argumento %d no puede ser null" +msgstr "el OID de objeto grande no puede ser null" -#: catalog/objectaddress.c:1956 catalog/objectaddress.c:2016 -#: catalog/objectaddress.c:2023 -#, fuzzy, c-format +#: catalog/objectaddress.c:1960 catalog/objectaddress.c:2020 +#: catalog/objectaddress.c:2027 +#, c-format msgid "name list length must be at least %d" -msgstr "el largo para el tipo %s debe ser al menos 1" +msgstr "el largo de la lista de nombres debe ser al menos %d" -#: catalog/objectaddress.c:2009 catalog/objectaddress.c:2029 -#, fuzzy, c-format +#: catalog/objectaddress.c:2013 catalog/objectaddress.c:2033 +#, c-format msgid "argument list length must be exactly %d" -msgstr "el argumento de %s debe ser un nombre de tipo" +msgstr "el largo de la lista de argumentos debe ser exactamente %d" -#: catalog/objectaddress.c:2165 libpq/be-fsstubs.c:350 +#: catalog/objectaddress.c:2169 libpq/be-fsstubs.c:350 #, c-format msgid "must be owner of large object %u" msgstr "debe ser dueño del objeto grande %u" -#: catalog/objectaddress.c:2180 commands/functioncmds.c:1426 +#: catalog/objectaddress.c:2184 commands/functioncmds.c:1446 #, c-format msgid "must be owner of type %s or type %s" msgstr "debe ser dueño del tipo %s o el tipo %s" -#: catalog/objectaddress.c:2220 catalog/objectaddress.c:2237 +#: catalog/objectaddress.c:2224 catalog/objectaddress.c:2241 #, c-format msgid "must be superuser" msgstr "debe ser superusuario" -#: catalog/objectaddress.c:2227 +#: catalog/objectaddress.c:2231 #, c-format msgid "must have CREATEROLE privilege" msgstr "debe tener privilegio CREATEROLE" -#: catalog/objectaddress.c:2307 -#, fuzzy, c-format +#: catalog/objectaddress.c:2306 +#, c-format msgid "unrecognized object type \"%s\"" -msgstr "tipo de locktag %d no reconocido" +msgstr "tipo de objeto «%s» no reconocido" -#: catalog/objectaddress.c:2502 +#: catalog/objectaddress.c:2501 #, c-format msgid " column %s" msgstr " columna %s" -#: catalog/objectaddress.c:2508 +#: catalog/objectaddress.c:2507 #, c-format msgid "function %s" msgstr "función %s" -#: catalog/objectaddress.c:2513 +#: catalog/objectaddress.c:2512 #, c-format msgid "type %s" msgstr "tipo %s" -#: catalog/objectaddress.c:2543 +#: catalog/objectaddress.c:2542 #, c-format msgid "cast from %s to %s" msgstr "conversión de %s a %s" -#: catalog/objectaddress.c:2563 +#: catalog/objectaddress.c:2562 #, c-format msgid "collation %s" msgstr "ordenamiento (collation) %s" -#: catalog/objectaddress.c:2587 +#: catalog/objectaddress.c:2586 #, c-format msgid "constraint %s on %s" msgstr "restricción «%s» en %s" -#: catalog/objectaddress.c:2593 +#: catalog/objectaddress.c:2592 #, c-format msgid "constraint %s" msgstr "restricción %s" -#: catalog/objectaddress.c:2610 +#: catalog/objectaddress.c:2609 #, c-format msgid "conversion %s" msgstr "conversión %s" -#: catalog/objectaddress.c:2647 +#: catalog/objectaddress.c:2646 #, c-format msgid "default for %s" msgstr "valor por omisión para %s" -#: catalog/objectaddress.c:2656 +#: catalog/objectaddress.c:2655 #, c-format msgid "language %s" msgstr "lenguaje %s" -#: catalog/objectaddress.c:2661 +#: catalog/objectaddress.c:2660 #, c-format msgid "large object %u" msgstr "objeto grande %u" -#: catalog/objectaddress.c:2666 +#: catalog/objectaddress.c:2665 #, c-format msgid "operator %s" msgstr "operador %s" -#: catalog/objectaddress.c:2698 +#: catalog/objectaddress.c:2697 #, c-format msgid "operator class %s for access method %s" msgstr "clase de operadores «%s» para el método de acceso «%s»" @@ -4309,7 +4093,7 @@ msgstr "clase de operadores «%s» para el método de acceso «%s»" #. first two %s's are data type names, the third %s is the #. description of the operator family, and the last %s is the #. textual form of the operator with arguments. -#: catalog/objectaddress.c:2748 +#: catalog/objectaddress.c:2747 #, c-format msgid "operator %d (%s, %s) of %s: %s" msgstr "operador %d (%s, %s) de %s: %s" @@ -4318,178 +4102,177 @@ msgstr "operador %d (%s, %s) de %s: %s" #. are data type names, the third %s is the description of the #. operator family, and the last %s is the textual form of the #. function with arguments. -#: catalog/objectaddress.c:2798 +#: catalog/objectaddress.c:2797 #, c-format msgid "function %d (%s, %s) of %s: %s" msgstr "función %d (%s, %s) de %s: %s" -#: catalog/objectaddress.c:2838 +#: catalog/objectaddress.c:2837 #, c-format msgid "rule %s on " msgstr "regla «%s» en " -#: catalog/objectaddress.c:2860 -#, fuzzy, c-format +#: catalog/objectaddress.c:2859 +#, c-format msgid "transform for %s language %s" -msgstr "permiso denegado al lenguaje %s" +msgstr "transformación para %s lenguaje %s" -#: catalog/objectaddress.c:2894 +#: catalog/objectaddress.c:2893 #, c-format msgid "trigger %s on " msgstr "disparador %s en " -#: catalog/objectaddress.c:2911 +#: catalog/objectaddress.c:2910 #, c-format msgid "schema %s" msgstr "esquema %s" -#: catalog/objectaddress.c:2924 +#: catalog/objectaddress.c:2923 #, c-format msgid "text search parser %s" msgstr "analizador de búsqueda en texto %s" -#: catalog/objectaddress.c:2939 +#: catalog/objectaddress.c:2938 #, c-format msgid "text search dictionary %s" msgstr "diccionario de búsqueda en texto %s" -#: catalog/objectaddress.c:2954 +#: catalog/objectaddress.c:2953 #, c-format msgid "text search template %s" msgstr "plantilla de búsqueda en texto %s" -#: catalog/objectaddress.c:2969 +#: catalog/objectaddress.c:2968 #, c-format msgid "text search configuration %s" msgstr "configuración de búsqueda en texto %s" -#: catalog/objectaddress.c:2977 +#: catalog/objectaddress.c:2976 #, c-format msgid "role %s" msgstr "rol %s" -#: catalog/objectaddress.c:2990 +#: catalog/objectaddress.c:2989 #, c-format msgid "database %s" msgstr "base de datos %s" -#: catalog/objectaddress.c:3002 +#: catalog/objectaddress.c:3001 #, c-format msgid "tablespace %s" msgstr "tablespace %s" -#: catalog/objectaddress.c:3011 +#: catalog/objectaddress.c:3010 #, c-format msgid "foreign-data wrapper %s" msgstr "conector de datos externos %s" -#: catalog/objectaddress.c:3020 +#: catalog/objectaddress.c:3019 #, c-format msgid "server %s" msgstr "servidor %s" -#: catalog/objectaddress.c:3048 +#: catalog/objectaddress.c:3047 #, c-format msgid "user mapping for %s on server %s" msgstr "mapeo para el usuario %s en el servidor %s" -#: catalog/objectaddress.c:3083 +#: catalog/objectaddress.c:3082 #, c-format msgid "default privileges on new relations belonging to role %s" msgstr "privilegios por omisión en nuevas relaciones pertenecientes al rol %s" -#: catalog/objectaddress.c:3088 +#: catalog/objectaddress.c:3087 #, c-format msgid "default privileges on new sequences belonging to role %s" msgstr "privilegios por omisión en nuevas secuencias pertenecientes al rol %s" -#: catalog/objectaddress.c:3093 +#: catalog/objectaddress.c:3092 #, c-format msgid "default privileges on new functions belonging to role %s" msgstr "privilegios por omisión en nuevas funciones pertenecientes al rol %s" -#: catalog/objectaddress.c:3098 +#: catalog/objectaddress.c:3097 #, c-format msgid "default privileges on new types belonging to role %s" msgstr "privilegios por omisión en nuevos tipos pertenecientes al rol %s" -#: catalog/objectaddress.c:3104 +#: catalog/objectaddress.c:3103 #, c-format msgid "default privileges belonging to role %s" msgstr "privilegios por omisión pertenecientes al rol %s" -#: catalog/objectaddress.c:3112 +#: catalog/objectaddress.c:3111 #, c-format msgid " in schema %s" msgstr " en esquema %s" -#: catalog/objectaddress.c:3129 +#: catalog/objectaddress.c:3128 #, c-format msgid "extension %s" msgstr "extensión %s" -#: catalog/objectaddress.c:3142 +#: catalog/objectaddress.c:3141 #, c-format msgid "event trigger %s" msgstr "disparador por eventos %s" -#: catalog/objectaddress.c:3174 -#, fuzzy, c-format +#: catalog/objectaddress.c:3173 +#, c-format msgid "policy %s on " -msgstr "regla «%s» en " +msgstr "política «%s» en " -#: catalog/objectaddress.c:3192 -#, fuzzy, c-format -#| msgid "access method \"%s\" does not exist" +#: catalog/objectaddress.c:3191 +#, c-format msgid "access method %s" -msgstr "no existe el método de acceso «%s»" +msgstr "método de acceso %s" -#: catalog/objectaddress.c:3252 +#: catalog/objectaddress.c:3251 #, c-format msgid "table %s" msgstr "tabla %s" -#: catalog/objectaddress.c:3256 +#: catalog/objectaddress.c:3255 #, c-format msgid "index %s" msgstr "índice %s" -#: catalog/objectaddress.c:3260 +#: catalog/objectaddress.c:3259 #, c-format msgid "sequence %s" msgstr "secuencia %s" -#: catalog/objectaddress.c:3264 +#: catalog/objectaddress.c:3263 #, c-format msgid "toast table %s" msgstr "tabla toast %s" -#: catalog/objectaddress.c:3268 +#: catalog/objectaddress.c:3267 #, c-format msgid "view %s" msgstr "vista %s" -#: catalog/objectaddress.c:3272 +#: catalog/objectaddress.c:3271 #, c-format msgid "materialized view %s" msgstr "vista materializada %s" -#: catalog/objectaddress.c:3276 +#: catalog/objectaddress.c:3275 #, c-format msgid "composite type %s" msgstr "tipo compuesto %s" -#: catalog/objectaddress.c:3280 +#: catalog/objectaddress.c:3279 #, c-format msgid "foreign table %s" msgstr "tabla foránea %s" -#: catalog/objectaddress.c:3285 +#: catalog/objectaddress.c:3284 #, c-format msgid "relation %s" msgstr "relación %s" -#: catalog/objectaddress.c:3322 +#: catalog/objectaddress.c:3321 #, c-format msgid "operator family %s for access method %s" msgstr "familia de operadores %s para el método de acceso %s" @@ -4536,7 +4319,7 @@ msgstr "no se puede omitir el valor inicial cuando la función de transición es msgid "return type of inverse transition function %s is not %s" msgstr "el tipo de retorno de la función inversa de transición %s no es %s" -#: catalog/pg_aggregate.c:351 executor/nodeWindowAgg.c:2301 +#: catalog/pg_aggregate.c:351 executor/nodeWindowAgg.c:2334 #, c-format msgid "strictness of aggregate's forward and inverse transition functions must match" msgstr "la opción «strict» de las funciones de transición directa e inversa deben coincidir exactamente en la función de agregación" @@ -4547,28 +4330,24 @@ msgid "final function with extra arguments must not be declared STRICT" msgstr "la función final con argumentos extra no debe declararse STRICT" #: catalog/pg_aggregate.c:425 -#, fuzzy, c-format -#| msgid "return type of transition function %s is not %s" +#, c-format msgid "return type of combine function %s is not %s" -msgstr "el tipo de retorno de la función de transición %s no es %s" +msgstr "el tipo de retorno de la función «combine» %s no es %s" #: catalog/pg_aggregate.c:436 -#, fuzzy, c-format -#| msgid "final function with extra arguments must not be declared STRICT" -msgid "combine function with \"%s\" transition type must not be declared STRICT" -msgstr "la función final con argumentos extra no debe declararse STRICT" +#, c-format +msgid "combine function with transition type %s must not be declared STRICT" +msgstr "la función «combine» con tipo de transición %s no debe declararse STRICT" #: catalog/pg_aggregate.c:455 -#, fuzzy, c-format -#| msgid "return type of transition function %s is not %s" +#, c-format msgid "return type of serialization function %s is not %s" -msgstr "el tipo de retorno de la función de transición %s no es %s" +msgstr "el tipo de retorno de la función de serialización %s no es %s" #: catalog/pg_aggregate.c:475 -#, fuzzy, c-format -#| msgid "return type of transition function %s is not %s" +#, c-format msgid "return type of deserialization function %s is not %s" -msgstr "el tipo de retorno de la función de transición %s no es %s" +msgstr "el tipo de retorno de la función de deserialización %s no es %s" #: catalog/pg_aggregate.c:491 catalog/pg_proc.c:246 catalog/pg_proc.c:253 #, c-format @@ -4583,7 +4362,7 @@ msgstr "Una función de agregación que retorne un tipo de datos polimórfico de #: catalog/pg_aggregate.c:504 catalog/pg_proc.c:259 #, c-format msgid "unsafe use of pseudo-type \"internal\"" -msgstr "uso inseguro de pseudotipo «internal»" +msgstr "uso inseguro de pseudo-tipo «internal»" #: catalog/pg_aggregate.c:505 catalog/pg_proc.c:260 #, c-format @@ -4600,12 +4379,12 @@ msgstr "la implementación de la función de agregación en modo «moving» devu msgid "sort operator can only be specified for single-argument aggregates" msgstr "el operador de ordenamiento sólo puede ser especificado para funciones de agregación de un solo argumento" -#: catalog/pg_aggregate.c:812 commands/typecmds.c:1705 -#: commands/typecmds.c:1756 commands/typecmds.c:1787 commands/typecmds.c:1810 -#: commands/typecmds.c:1831 commands/typecmds.c:1858 commands/typecmds.c:1885 -#: commands/typecmds.c:1962 commands/typecmds.c:2004 parser/parse_func.c:364 -#: parser/parse_func.c:393 parser/parse_func.c:418 parser/parse_func.c:432 -#: parser/parse_func.c:507 parser/parse_func.c:518 parser/parse_func.c:1923 +#: catalog/pg_aggregate.c:812 commands/typecmds.c:1705 commands/typecmds.c:1756 +#: commands/typecmds.c:1787 commands/typecmds.c:1810 commands/typecmds.c:1831 +#: commands/typecmds.c:1858 commands/typecmds.c:1885 commands/typecmds.c:1962 +#: commands/typecmds.c:2004 parser/parse_func.c:364 parser/parse_func.c:393 +#: parser/parse_func.c:418 parser/parse_func.c:432 parser/parse_func.c:507 +#: parser/parse_func.c:518 parser/parse_func.c:1923 #, c-format msgid "function %s does not exist" msgstr "no existe la función %s" @@ -4628,7 +4407,7 @@ msgstr "la función %s requiere conversión de tipos en tiempo de ejecución" #: catalog/pg_collation.c:77 #, c-format msgid "collation \"%s\" for encoding \"%s\" already exists" -msgstr "la codificación «%2$s» ya tiene un ordenamiento llamado «%1$s»" +msgstr "el ordenamiento «%s» para la codificación «%s» ya existe" #: catalog/pg_collation.c:91 #, c-format @@ -4638,7 +4417,7 @@ msgstr "el ordenamiento «%s» ya existe" #: catalog/pg_constraint.c:663 #, c-format msgid "constraint \"%s\" for domain %s already exists" -msgstr "el dominio %2$s ya contiene una restricción llamada «%1$s»" +msgstr "la restricción «%s» para el dominio %s ya existe" #: catalog/pg_constraint.c:797 #, c-format @@ -4663,14 +4442,14 @@ msgstr "no existe la restricción «%s» para el dominio «%s»" #: catalog/pg_conversion.c:66 #, c-format msgid "conversion \"%s\" already exists" -msgstr "ya existe la conversión «%s»" +msgstr "la conversión «%s» ya existe" #: catalog/pg_conversion.c:79 #, c-format msgid "default conversion for %s to %s already exists" -msgstr "ya existe una conversión por omisión desde %s a %s" +msgstr "una conversión por omisión desde %s a %s ya existe" -#: catalog/pg_depend.c:165 commands/extension.c:3028 +#: catalog/pg_depend.c:165 commands/extension.c:3032 #, c-format msgid "%s is already a member of extension \"%s\"" msgstr "«%s» ya es un miembro de la extensión «%s»" @@ -4706,9 +4485,9 @@ msgid "\"%s\" is not an existing enum label" msgstr "«%s» no es una etiqueta de enum existente" #: catalog/pg_enum.c:349 -#, fuzzy, c-format +#, c-format msgid "pg_enum OID value not set when in binary upgrade mode" -msgstr "debe ser superusuario para conectarse en modo de actualización binaria" +msgstr "el valor de OID de pg_enum no se definió en modo de actualización binaria" #: catalog/pg_enum.c:359 #, c-format @@ -4718,7 +4497,7 @@ msgstr "ALTER TYPE ADD BEFORE/AFTER es incompatible con la actualización binari #: catalog/pg_namespace.c:61 commands/schemacmds.c:246 #, c-format msgid "schema \"%s\" already exists" -msgstr "ya existe el esquema «%s»" +msgstr "el esquema «%s» ya existe" #: catalog/pg_operator.c:219 catalog/pg_operator.c:360 #, c-format @@ -4773,7 +4552,7 @@ msgstr "sólo los operadores booleanos pueden ser usados en hash" #: catalog/pg_operator.c:420 #, c-format msgid "operator %s already exists" -msgstr "ya existe un operador %s" +msgstr "el operador %s ya existe" #: catalog/pg_operator.c:617 #, c-format @@ -4805,7 +4584,7 @@ msgstr "«%s» ya es un atributo de tipo %s" #: catalog/pg_proc.c:403 #, c-format msgid "function \"%s\" already exists with same argument types" -msgstr "ya existe una función «%s» con los mismos argumentos" +msgstr "la función «%s» ya existe con los mismos argumentos" #: catalog/pg_proc.c:417 catalog/pg_proc.c:440 #, c-format @@ -4873,7 +4652,7 @@ msgstr "las funciones SQL no pueden retornar el tipo %s" msgid "SQL functions cannot have arguments of type %s" msgstr "las funciones SQL no pueden tener argumentos de tipo %s" -#: catalog/pg_proc.c:973 executor/functions.c:1422 +#: catalog/pg_proc.c:973 executor/functions.c:1431 #, c-format msgid "SQL function \"%s\"" msgstr "función SQL «%s»" @@ -4919,9 +4698,9 @@ msgid "privileges for %s" msgstr "privilegios para %s" #: catalog/pg_shdepend.c:1089 -#, fuzzy, c-format +#, c-format msgid "target of %s" -msgstr "dueño de %s" +msgstr "destino de %s" #. translator: %s will always be "database %s" #: catalog/pg_shdepend.c:1097 @@ -4942,9 +4721,9 @@ msgid "cannot reassign ownership of objects owned by %s because they are require msgstr "no se puede reasignar la propiedad de objetos de %s porque son requeridos por el sistema" #: catalog/pg_type.c:136 catalog/pg_type.c:454 -#, fuzzy, c-format +#, c-format msgid "pg_type OID value not set when in binary upgrade mode" -msgstr "debe ser superusuario para conectarse en modo de actualización binaria" +msgstr "el valor de OID de pg_type no se definió en modo de actualización binaria" #: catalog/pg_type.c:253 #, c-format @@ -4972,13 +4751,13 @@ msgstr "el alineamiento «%c» no es válido para un tipo de largo variable" msgid "fixed-size types must have storage PLAIN" msgstr "los tipos de tamaño fijo deben tener almacenamiento PLAIN" -#: catalog/pg_type.c:789 +#: catalog/pg_type.c:809 #, c-format msgid "could not form array type name for type \"%s\"" msgstr "no se pudo formar un nombre de tipo de array para el tipo «%s»" -#: catalog/toasting.c:105 commands/indexcmds.c:389 commands/tablecmds.c:4358 -#: commands/tablecmds.c:11900 +#: catalog/toasting.c:105 commands/indexcmds.c:389 commands/tablecmds.c:4359 +#: commands/tablecmds.c:12061 #, c-format msgid "\"%s\" is not a table or materialized view" msgstr "«%s» no es una tabla o vista materializada" @@ -5059,20 +4838,19 @@ msgid "aggregate transition data type cannot be %s" msgstr "el tipo de transición de la función de agregación no puede ser %s" #: commands/aggregatecmds.c:340 -#, fuzzy, c-format -#| msgid "aggregate minvfunc must be specified when mstype is specified" +#, c-format msgid "serialization functions may be specified only when the aggregate transition data type is %s" -msgstr "debe especificarse la función de transición minvfunc cuando se especifica mstype" +msgstr "las funciones de serialización pueden especificarse sólo cuando el tipo de transición de la función de agregación es %s" #: commands/aggregatecmds.c:350 #, c-format msgid "must specify both or neither of serialization and deserialization functions" -msgstr "" +msgstr "debe especificar ambas o ninguna de las funciones de serialización y deserialización" #: commands/aggregatecmds.c:415 commands/functioncmds.c:570 #, c-format msgid "parameter \"parallel\" must be SAFE, RESTRICTED, or UNSAFE" -msgstr "" +msgstr "el parámetro «parallel» debe ser SAFE, RESTRICTED o UNSAFE" #: commands/alter.c:80 commands/event_trigger.c:231 #, c-format @@ -5092,12 +4870,12 @@ msgstr "el servidor «%s» ya existe" #: commands/alter.c:89 commands/proclang.c:366 #, c-format msgid "language \"%s\" already exists" -msgstr "ya existe el lenguaje «%s»" +msgstr "el lenguaje «%s» ya existe" #: commands/alter.c:112 #, c-format msgid "conversion \"%s\" already exists in schema \"%s\"" -msgstr "ya existe una conversión llamada «%s» en el esquema «%s»" +msgstr "la conversión «%s» ya existe en el esquema «%s»" #: commands/alter.c:116 #, c-format @@ -5130,53 +4908,47 @@ msgid "must be superuser to set schema of %s" msgstr "debe ser superusuario para definir el esquema de %s" #: commands/amcmds.c:58 -#, fuzzy, c-format -#| msgid "permission denied to create tablespace \"%s\"" +#, c-format msgid "permission denied to create access method \"%s\"" -msgstr "se ha denegado el permiso para crear el tablespace «%s»" +msgstr "se ha denegado el permiso para crear el método de acceso «%s»" #: commands/amcmds.c:60 -#, fuzzy, c-format -#| msgid "Must be superuser to create a tablespace." +#, c-format msgid "Must be superuser to create an access method." -msgstr "Debe ser superusuario para crear tablespaces." +msgstr "Debe ser superusuario para crear un método de acceso." #: commands/amcmds.c:68 -#, fuzzy, c-format -#| msgid "access method \"%s\" does not exist" +#, c-format msgid "access method \"%s\" already exists" -msgstr "no existe el método de acceso «%s»" +msgstr "el método de acceso «%s» ya existe" #: commands/amcmds.c:124 -#, fuzzy, c-format -#| msgid "must be superuser to drop superusers" +#, c-format msgid "must be superuser to drop access methods" -msgstr "debe ser superusuario para eliminar superusuarios" +msgstr "debe ser superusuario para eliminar métodos de acceso" -#: commands/amcmds.c:175 commands/indexcmds.c:164 commands/indexcmds.c:495 +#: commands/amcmds.c:175 commands/indexcmds.c:164 commands/indexcmds.c:496 #: commands/opclasscmds.c:365 commands/opclasscmds.c:790 #, c-format msgid "access method \"%s\" does not exist" msgstr "no existe el método de acceso «%s»" #: commands/amcmds.c:251 -#, fuzzy, c-format -#| msgid "no function body specified" +#, c-format msgid "handler function is not specified" -msgstr "no se ha especificado un cuerpo para la función" +msgstr "no se ha especificado una función manejadora" #: commands/amcmds.c:263 commands/event_trigger.c:240 #: commands/foreigncmds.c:489 commands/proclang.c:117 commands/proclang.c:288 #: commands/trigger.c:441 parser/parse_clause.c:761 -#, fuzzy, c-format -#| msgid "function %s should return type %s" +#, c-format msgid "function %s must return type %s" -msgstr "la función %s debería retornar el tipo %s" +msgstr "la función %s debe retornar el tipo %s" #: commands/analyze.c:145 #, c-format msgid "skipping analyze of \"%s\" --- lock not available" -msgstr "omitiendo analyze de «%s»: el candado no está disponible" +msgstr "omitiendo analyze de «%s»: el lock no está disponible" #: commands/analyze.c:162 #, c-format @@ -5226,14 +4998,14 @@ msgstr "«%s»: se procesaron %d de %u páginas, que contenían %.0f filas vigen #: commands/analyze.c:1283 #, c-format msgid "skipping analyze of \"%s.%s\" inheritance tree --- this inheritance tree contains no child tables" -msgstr "" +msgstr "saltando el análisis del árbol de herencia «%s.%s» --- este árbol no contiene tablas hijas" #: commands/analyze.c:1372 #, c-format msgid "skipping analyze of \"%s.%s\" inheritance tree --- this inheritance tree contains no analyzable child tables" -msgstr "" +msgstr "saltando el análisis del árbol de herencia «%s.%s» --- este árbol no contiene tablas hijas analizables" -#: commands/analyze.c:1420 executor/execQual.c:2927 +#: commands/analyze.c:1420 commands/tablecmds.c:8093 executor/execQual.c:2927 msgid "could not convert row type" msgstr "no se pudo convertir el tipo de registro" @@ -5287,7 +5059,7 @@ msgstr "no se pueden reordenar tablas temporales de otras sesiones" msgid "there is no previously clustered index for table \"%s\"" msgstr "no hay un índice de ordenamiento definido para la tabla «%s»" -#: commands/cluster.c:173 commands/tablecmds.c:9286 commands/tablecmds.c:11002 +#: commands/cluster.c:173 commands/tablecmds.c:9397 commands/tablecmds.c:11157 #, c-format msgid "index \"%s\" for table \"%s\" does not exist" msgstr "no existe el índice «%s» en la tabla «%s»" @@ -5302,7 +5074,7 @@ msgstr "no se puede reordenar un catálogo compartido" msgid "cannot vacuum temporary tables of other sessions" msgstr "no se puede hacer vacuum a tablas temporales de otras sesiones" -#: commands/cluster.c:431 commands/tablecmds.c:11012 +#: commands/cluster.c:431 commands/tablecmds.c:11167 #, c-format msgid "\"%s\" is not an index for table \"%s\"" msgstr "«%s» no es un índice de la tabla «%s»" @@ -5322,27 +5094,27 @@ msgstr "no se puede reordenar en índice parcial «%s»" msgid "cannot cluster on invalid index \"%s\"" msgstr "no se puede reordenar en el índice no válido «%s»" -#: commands/cluster.c:918 +#: commands/cluster.c:920 #, c-format msgid "clustering \"%s.%s\" using index scan on \"%s\"" msgstr "reordenando «%s.%s» usando un recorrido de índice en «%s»" -#: commands/cluster.c:924 +#: commands/cluster.c:926 #, c-format msgid "clustering \"%s.%s\" using sequential scan and sort" msgstr "reordenando «%s.%s» usando un recorrido secuencial y ordenamiento" -#: commands/cluster.c:929 commands/vacuumlazy.c:479 +#: commands/cluster.c:931 commands/vacuumlazy.c:484 #, c-format msgid "vacuuming \"%s.%s\"" msgstr "haciendo vacuum a «%s.%s»" -#: commands/cluster.c:1088 +#: commands/cluster.c:1090 #, c-format msgid "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages" msgstr "«%s»: se encontraron %.0f versiones eliminables de filas y %.0f no eliminables en %u páginas" -#: commands/cluster.c:1092 +#: commands/cluster.c:1094 #, c-format msgid "" "%.0f dead row versions cannot be removed yet.\n" @@ -5369,7 +5141,7 @@ msgstr "debe especificarse el parámetro «lc_ctype»" #: commands/collationcmds.c:166 #, c-format msgid "collation \"%s\" for encoding \"%s\" already exists in schema \"%s\"" -msgstr "ya existe un ordenamiento (collation) llamado «%s» para la codificación «%s» en el esquema «%s»" +msgstr "ya existe un ordenamiento «%s» para la codificación «%s» en el esquema «%s»" #: commands/collationcmds.c:177 #, c-format @@ -5385,17 +5157,17 @@ msgstr "ya existe un ordenamiento llamado «%s» en el esquema «%s»" msgid "database \"%s\" does not exist" msgstr "no existe la base de datos «%s»" -#: commands/comment.c:101 commands/seclabel.c:116 parser/parse_utilcmd.c:768 +#: commands/comment.c:101 commands/seclabel.c:116 parser/parse_utilcmd.c:754 #, c-format msgid "\"%s\" is not a table, view, materialized view, composite type, or foreign table" msgstr "«%s» no es una tabla, vista, vista materializada, tipo compuesto, o tabla foránea" -#: commands/constraint.c:60 utils/adt/ri_triggers.c:2717 +#: commands/constraint.c:60 utils/adt/ri_triggers.c:2715 #, c-format msgid "function \"%s\" was not called by trigger manager" msgstr "la función «%s» no fue ejecutada por el manejador de triggers" -#: commands/constraint.c:67 utils/adt/ri_triggers.c:2726 +#: commands/constraint.c:67 utils/adt/ri_triggers.c:2724 #, c-format msgid "function \"%s\" must be fired AFTER ROW" msgstr "la función «%s» debe ser ejecutada AFTER ROW" @@ -5416,10 +5188,9 @@ msgid "destination encoding \"%s\" does not exist" msgstr "no existe la codificación de destino «%s»" #: commands/conversioncmds.c:88 -#, fuzzy, c-format -#| msgid "encoding conversion function %s must return type \"void\"" +#, c-format msgid "encoding conversion function %s must return type %s" -msgstr "la función de conversión de codificación %s debe retornar tipo «void»" +msgstr "la función de conversión de codificación %s debe retornar tipo %s" #: commands/copy.c:362 commands/copy.c:374 commands/copy.c:408 #: commands/copy.c:420 @@ -5448,7 +5219,7 @@ msgid "could not read from COPY file: %m" msgstr "no se pudo leer desde archivo COPY: %m" #: commands/copy.c:595 commands/copy.c:616 commands/copy.c:620 -#: tcop/postgres.c:341 tcop/postgres.c:377 tcop/postgres.c:404 +#: tcop/postgres.c:333 tcop/postgres.c:369 tcop/postgres.c:396 #, c-format msgid "unexpected EOF on client connection with an open transaction" msgstr "se encontró fin de archivo inesperado en una conexión con una transacción abierta" @@ -5478,466 +5249,456 @@ msgstr "Cualquier usuario puede usar COPY hacia la salida estándar o desde la e msgid "must be superuser to COPY to or from a file" msgstr "debe ser superusuario para usar COPY desde o hacia un archivo" -#: commands/copy.c:878 +#: commands/copy.c:879 #, c-format msgid "COPY FROM not supported with row-level security" -msgstr "" +msgstr "COPY FROM no está soportado con seguridad a nivel de registros" -#: commands/copy.c:879 -#, fuzzy, c-format -#| msgid "Use triggers instead." +#: commands/copy.c:880 +#, c-format msgid "Use INSERT statements instead." -msgstr "Use triggers en su lugar." +msgstr "Use sentencias INSERT en su lugar." -#: commands/copy.c:1019 +#: commands/copy.c:1059 #, c-format msgid "COPY format \"%s\" not recognized" msgstr "el formato de COPY «%s» no es reconocido" -#: commands/copy.c:1090 commands/copy.c:1104 commands/copy.c:1118 -#: commands/copy.c:1138 +#: commands/copy.c:1130 commands/copy.c:1144 commands/copy.c:1158 +#: commands/copy.c:1178 #, c-format msgid "argument to option \"%s\" must be a list of column names" msgstr "el argumento de la opción «%s» debe ser una lista de nombres de columna" -#: commands/copy.c:1151 +#: commands/copy.c:1191 #, c-format msgid "argument to option \"%s\" must be a valid encoding name" msgstr "el argumento de la opción «%s» debe ser un nombre válido de codificación" -#: commands/copy.c:1157 commands/dbcommands.c:232 commands/dbcommands.c:1427 +#: commands/copy.c:1197 commands/dbcommands.c:232 commands/dbcommands.c:1427 #, c-format msgid "option \"%s\" not recognized" msgstr "no se reconoce la opción «%s»" -#: commands/copy.c:1168 +#: commands/copy.c:1208 #, c-format msgid "cannot specify DELIMITER in BINARY mode" msgstr "no se puede especificar DELIMITER en modo BINARY" -#: commands/copy.c:1173 +#: commands/copy.c:1213 #, c-format msgid "cannot specify NULL in BINARY mode" msgstr "no se puede especificar NULL en modo BINARY" -#: commands/copy.c:1195 +#: commands/copy.c:1235 #, c-format msgid "COPY delimiter must be a single one-byte character" msgstr "el delimitador de COPY debe ser un solo carácter de un byte" -#: commands/copy.c:1202 +#: commands/copy.c:1242 #, c-format msgid "COPY delimiter cannot be newline or carriage return" msgstr "el delimitador de COPY no puede ser el carácter de nueva línea ni el de retorno de carro" -#: commands/copy.c:1208 +#: commands/copy.c:1248 #, c-format msgid "COPY null representation cannot use newline or carriage return" msgstr "la representación de null de COPY no puede usar el carácter de nueva línea ni el de retorno de carro" -#: commands/copy.c:1225 +#: commands/copy.c:1265 #, c-format msgid "COPY delimiter cannot be \"%s\"" msgstr "el delimitador de COPY no puede ser «%s»" -#: commands/copy.c:1231 +#: commands/copy.c:1271 #, c-format msgid "COPY HEADER available only in CSV mode" msgstr "el «header» de COPY está disponible sólo en modo CSV" -#: commands/copy.c:1237 +#: commands/copy.c:1277 #, c-format msgid "COPY quote available only in CSV mode" msgstr "el «quote» de COPY está disponible sólo en modo CSV" -#: commands/copy.c:1242 +#: commands/copy.c:1282 #, c-format msgid "COPY quote must be a single one-byte character" msgstr "la comilla («quote») de COPY debe ser un solo carácter de un byte" -#: commands/copy.c:1247 +#: commands/copy.c:1287 #, c-format msgid "COPY delimiter and quote must be different" msgstr "el delimitador de COPY y la comilla («quote») deben ser diferentes" -#: commands/copy.c:1253 +#: commands/copy.c:1293 #, c-format msgid "COPY escape available only in CSV mode" msgstr "escape de COPY disponible sólo en modo CSV" -#: commands/copy.c:1258 +#: commands/copy.c:1298 #, c-format msgid "COPY escape must be a single one-byte character" msgstr "el escape de COPY debe ser un sólo carácter de un byte" -#: commands/copy.c:1264 +#: commands/copy.c:1304 #, c-format msgid "COPY force quote available only in CSV mode" msgstr "el forzado de comillas de COPY sólo está disponible en modo CSV" -#: commands/copy.c:1268 +#: commands/copy.c:1308 #, c-format msgid "COPY force quote only available using COPY TO" msgstr "el forzado de comillas de COPY sólo está disponible en COPY TO" -#: commands/copy.c:1274 +#: commands/copy.c:1314 #, c-format msgid "COPY force not null available only in CSV mode" msgstr "el forzado de no nulos en COPY sólo está disponible en modo CSV" -#: commands/copy.c:1278 +#: commands/copy.c:1318 #, c-format msgid "COPY force not null only available using COPY FROM" msgstr "el forzado de no nulos en COPY sólo está disponible usando COPY FROM" -#: commands/copy.c:1284 +#: commands/copy.c:1324 #, c-format msgid "COPY force null available only in CSV mode" msgstr "el forzado de nulos en COPY sólo está disponible en modo CSV" -#: commands/copy.c:1289 +#: commands/copy.c:1329 #, c-format msgid "COPY force null only available using COPY FROM" msgstr "el forzado de nulos en COPY sólo está disponible usando COPY FROM" -#: commands/copy.c:1295 +#: commands/copy.c:1335 #, c-format msgid "COPY delimiter must not appear in the NULL specification" msgstr "el delimitador de COPY no debe aparecer en la especificación NULL" -#: commands/copy.c:1302 +#: commands/copy.c:1342 #, c-format msgid "CSV quote character must not appear in the NULL specification" msgstr "el carácter de «quote» de CSV no debe aparecer en la especificación NULL" -#: commands/copy.c:1363 +#: commands/copy.c:1403 #, c-format msgid "table \"%s\" does not have OIDs" msgstr "la tabla «%s» no tiene OIDs" -#: commands/copy.c:1380 -#, fuzzy, c-format -#| msgid "COPY (SELECT) WITH OIDS is not supported" +#: commands/copy.c:1420 +#, c-format msgid "COPY (query) WITH OIDS is not supported" -msgstr "COPY (SELECT) WITH OIDS no está soportado" +msgstr "COPY (consulta) WITH OIDS no está soportado" -#: commands/copy.c:1400 -#, fuzzy, c-format -#| msgid "DO INSTEAD NOTHING rules are not supported for data-modifying statements in WITH" +#: commands/copy.c:1440 +#, c-format msgid "DO INSTEAD NOTHING rules are not supported for COPY" -msgstr "las reglas DO INSTEAD NOTHING no están soportadas para sentencias que modifiquen datos en WITH" +msgstr "las reglas DO INSTEAD NOTHING no están soportadas para COPY" -#: commands/copy.c:1414 -#, fuzzy, c-format -#| msgid "conditional DO INSTEAD rules are not supported for data-modifying statements in WITH" +#: commands/copy.c:1454 +#, c-format msgid "conditional DO INSTEAD rules are not supported for COPY" -msgstr "las reglas DO INSTEAD condicionales no están soportadas para sentencias que modifiquen datos en WITH" +msgstr "las reglas DO INSTEAD condicionales no están soportadas para COPY" -#: commands/copy.c:1418 -#, fuzzy, c-format -#| msgid "DO ALSO rules are not supported for data-modifying statements in WITH" +#: commands/copy.c:1458 +#, c-format msgid "DO ALSO rules are not supported for the COPY" -msgstr "las reglas DO ALSO no están soportadas para sentencias que modifiquen datos en WITH" +msgstr "las reglas DO ALSO no están soportadas para COPY" -#: commands/copy.c:1423 -#, fuzzy, c-format -#| msgid "multi-statement DO INSTEAD rules are not supported for data-modifying statements in WITH" +#: commands/copy.c:1463 +#, c-format msgid "multi-statement DO INSTEAD rules are not supported for COPY" -msgstr "las reglas DO INSTEAD de múltiples sentencias no están soportadas para sentencias que modifiquen datos en WITH" +msgstr "las reglas DO INSTEAD de múltiples sentencias no están soportadas para COPY" -#: commands/copy.c:1433 +#: commands/copy.c:1473 #, c-format msgid "COPY (SELECT INTO) is not supported" msgstr "COPY (SELECT INTO) no está soportado" -#: commands/copy.c:1450 -#, fuzzy, c-format -#| msgid "WITH query \"%s\" does not have a RETURNING clause" +#: commands/copy.c:1490 +#, c-format msgid "COPY query must have a RETURNING clause" -msgstr "la consulta WITH «%s» no tiene una cláusula RETURNING" +msgstr "la consulta COPY debe tener una cláusula RETURNING" -#: commands/copy.c:1478 +#: commands/copy.c:1518 #, c-format msgid "relation referenced by COPY statement has changed" -msgstr "" +msgstr "la relación referenciada por la sentencia COPY ha cambiado" -#: commands/copy.c:1536 -#, fuzzy, c-format -#| msgid "FORCE QUOTE column \"%s\" not referenced by COPY" +#: commands/copy.c:1576 +#, c-format msgid "FORCE_QUOTE column \"%s\" not referenced by COPY" -msgstr "la columna «%s» con comillas forzadas no es referenciada por COPY" +msgstr "la columna FORCE_QUOTE «%s» no es referenciada en COPY" -#: commands/copy.c:1558 -#, fuzzy, c-format -#| msgid "FORCE NOT NULL column \"%s\" not referenced by COPY" +#: commands/copy.c:1598 +#, c-format msgid "FORCE_NOT_NULL column \"%s\" not referenced by COPY" -msgstr "la columna «%s» especificada como FORCE NOT NULL no fue mencionada en COPY" +msgstr "la columna FORCE_NOT_NULL «%s» no es referenciada en COPY" -#: commands/copy.c:1580 -#, fuzzy, c-format -#| msgid "FORCE NULL column \"%s\" not referenced by COPY" +#: commands/copy.c:1620 +#, c-format msgid "FORCE_NULL column \"%s\" not referenced by COPY" -msgstr "la columna «%s» especificada como FORCE NULL no fue mencionada en COPY" +msgstr "la columna FORCE_NULL «%s» no es referenciada en COPY" -#: commands/copy.c:1645 +#: commands/copy.c:1685 #, c-format msgid "could not close pipe to external command: %m" msgstr "no se pudo cerrar la tubería a la orden externa: %m" -#: commands/copy.c:1649 +#: commands/copy.c:1689 #, c-format msgid "program \"%s\" failed" msgstr "el programa «%s» falló" -#: commands/copy.c:1699 +#: commands/copy.c:1739 #, c-format msgid "cannot copy from view \"%s\"" msgstr "no se puede copiar desde la vista «%s»" -#: commands/copy.c:1701 commands/copy.c:1707 commands/copy.c:1713 +#: commands/copy.c:1741 commands/copy.c:1747 commands/copy.c:1753 #, c-format msgid "Try the COPY (SELECT ...) TO variant." msgstr "Intente la forma COPY (SELECT ...) TO." -#: commands/copy.c:1705 +#: commands/copy.c:1745 #, c-format msgid "cannot copy from materialized view \"%s\"" msgstr "no se puede copiar desde la vista materializada «%s»" -#: commands/copy.c:1711 +#: commands/copy.c:1751 #, c-format msgid "cannot copy from foreign table \"%s\"" msgstr "no se puede copiar desde la tabla foránea «%s»" -#: commands/copy.c:1717 +#: commands/copy.c:1757 #, c-format msgid "cannot copy from sequence \"%s\"" msgstr "no se puede copiar desde la secuencia «%s»" -#: commands/copy.c:1722 +#: commands/copy.c:1762 #, c-format msgid "cannot copy from non-table relation \"%s\"" msgstr "no se puede copiar desde la relación «%s» porque no es una tabla" -#: commands/copy.c:1747 commands/copy.c:2783 +#: commands/copy.c:1787 commands/copy.c:2823 #, c-format msgid "could not execute command \"%s\": %m" msgstr "no se pudo ejecutar la orden «%s»: %m" -#: commands/copy.c:1762 +#: commands/copy.c:1802 #, c-format msgid "relative path not allowed for COPY to file" msgstr "no se permiten rutas relativas para COPY hacia un archivo" -#: commands/copy.c:1770 +#: commands/copy.c:1810 #, c-format msgid "could not open file \"%s\" for writing: %m" msgstr "no se pudo abrir el archivo «%s» para escritura: %m" -#: commands/copy.c:1782 commands/copy.c:2806 +#: commands/copy.c:1822 commands/copy.c:2846 #, c-format msgid "\"%s\" is a directory" msgstr "«%s» es un directorio" -#: commands/copy.c:2105 +#: commands/copy.c:2145 #, c-format msgid "COPY %s, line %d, column %s" msgstr "COPY %s, línea %d, columna %s" -#: commands/copy.c:2109 commands/copy.c:2156 +#: commands/copy.c:2149 commands/copy.c:2196 #, c-format msgid "COPY %s, line %d" msgstr "COPY %s, línea %d" -#: commands/copy.c:2120 +#: commands/copy.c:2160 #, c-format msgid "COPY %s, line %d, column %s: \"%s\"" msgstr "COPY %s, línea %d, columna %s: «%s»" -#: commands/copy.c:2128 +#: commands/copy.c:2168 #, c-format msgid "COPY %s, line %d, column %s: null input" msgstr "COPY %s, línea %d, columna %s: entrada nula" -#: commands/copy.c:2150 +#: commands/copy.c:2190 #, c-format msgid "COPY %s, line %d: \"%s\"" msgstr "COPY %s, línea %d: «%s»" -#: commands/copy.c:2234 +#: commands/copy.c:2274 #, c-format msgid "cannot copy to view \"%s\"" msgstr "no se puede copiar hacia la vista «%s»" -#: commands/copy.c:2239 +#: commands/copy.c:2279 #, c-format msgid "cannot copy to materialized view \"%s\"" msgstr "no se puede copiar hacia la vista materializada «%s»" -#: commands/copy.c:2244 +#: commands/copy.c:2284 #, c-format msgid "cannot copy to foreign table \"%s\"" msgstr "no se puede copiar hacia la tabla foránea «%s»" -#: commands/copy.c:2249 +#: commands/copy.c:2289 #, c-format msgid "cannot copy to sequence \"%s\"" msgstr "no se puede copiar hacia la secuencia «%s»" -#: commands/copy.c:2254 +#: commands/copy.c:2294 #, c-format msgid "cannot copy to non-table relation \"%s\"" msgstr "no se puede copiar hacia la relación «%s» porque no es una tabla" -#: commands/copy.c:2317 +#: commands/copy.c:2357 #, c-format msgid "cannot perform FREEZE because of prior transaction activity" msgstr "no se puede ejecutar FREEZE debido a actividad anterior en la transacción" -#: commands/copy.c:2323 +#: commands/copy.c:2363 #, c-format msgid "cannot perform FREEZE because the table was not created or truncated in the current subtransaction" msgstr "no se puede ejecutar FREEZE porque la tabla no fue creada ni truncada en la subtransacción en curso" -#: commands/copy.c:2826 +#: commands/copy.c:2866 #, c-format msgid "COPY file signature not recognized" msgstr "el identificador del archivo COPY no es reconocido" -#: commands/copy.c:2831 +#: commands/copy.c:2871 #, c-format msgid "invalid COPY file header (missing flags)" msgstr "el encabezado del archivo COPY no es válido (faltan campos)" -#: commands/copy.c:2837 +#: commands/copy.c:2877 #, c-format msgid "unrecognized critical flags in COPY file header" msgstr "valores requeridos no reconocidos en encabezado de COPY" -#: commands/copy.c:2843 +#: commands/copy.c:2883 #, c-format msgid "invalid COPY file header (missing length)" msgstr "el encabezado del archivo COPY no es válido (falta el largo)" -#: commands/copy.c:2850 +#: commands/copy.c:2890 #, c-format msgid "invalid COPY file header (wrong length)" msgstr "el encabezado del archivo COPY no es válido (largo incorrecto)" -#: commands/copy.c:2983 commands/copy.c:3690 commands/copy.c:3920 +#: commands/copy.c:3023 commands/copy.c:3730 commands/copy.c:3960 #, c-format msgid "extra data after last expected column" msgstr "datos extra después de la última columna esperada" -#: commands/copy.c:2993 +#: commands/copy.c:3033 #, c-format msgid "missing data for OID column" msgstr "faltan datos para la columna OID" -#: commands/copy.c:2999 +#: commands/copy.c:3039 #, c-format msgid "null OID in COPY data" msgstr "OID nulo en datos COPY" -#: commands/copy.c:3009 commands/copy.c:3132 +#: commands/copy.c:3049 commands/copy.c:3172 #, c-format msgid "invalid OID in COPY data" msgstr "OID no válido en datos COPY" -#: commands/copy.c:3024 +#: commands/copy.c:3064 #, c-format msgid "missing data for column \"%s\"" msgstr "faltan datos en la columna «%s»" -#: commands/copy.c:3107 +#: commands/copy.c:3147 #, c-format msgid "received copy data after EOF marker" msgstr "se recibieron datos de copy después del marcador EOF" -#: commands/copy.c:3114 +#: commands/copy.c:3154 #, c-format msgid "row field count is %d, expected %d" msgstr "la cantidad de registros es %d, pero se esperaban %d" -#: commands/copy.c:3454 commands/copy.c:3471 +#: commands/copy.c:3494 commands/copy.c:3511 #, c-format msgid "literal carriage return found in data" msgstr "se encontró un retorno de carro literal en los datos" -#: commands/copy.c:3455 commands/copy.c:3472 +#: commands/copy.c:3495 commands/copy.c:3512 #, c-format msgid "unquoted carriage return found in data" msgstr "se encontró un retorno de carro fuera de comillas en los datos" -#: commands/copy.c:3457 commands/copy.c:3474 +#: commands/copy.c:3497 commands/copy.c:3514 #, c-format msgid "Use \"\\r\" to represent carriage return." msgstr "Use «\\r» para representar el retorno de carro." -#: commands/copy.c:3458 commands/copy.c:3475 +#: commands/copy.c:3498 commands/copy.c:3515 #, c-format msgid "Use quoted CSV field to represent carriage return." msgstr "Use un campo CSV entre comillas para representar el retorno de carro." -#: commands/copy.c:3487 +#: commands/copy.c:3527 #, c-format msgid "literal newline found in data" msgstr "se encontró un salto de línea literal en los datos" -#: commands/copy.c:3488 +#: commands/copy.c:3528 #, c-format msgid "unquoted newline found in data" msgstr "se encontró un salto de línea fuera de comillas en los datos" -#: commands/copy.c:3490 +#: commands/copy.c:3530 #, c-format msgid "Use \"\\n\" to represent newline." msgstr "Use «\\n» para representar un salto de línea." -#: commands/copy.c:3491 +#: commands/copy.c:3531 #, c-format msgid "Use quoted CSV field to represent newline." msgstr "Use un campo CSV entre comillas para representar un salto de línea." -#: commands/copy.c:3537 commands/copy.c:3573 +#: commands/copy.c:3577 commands/copy.c:3613 #, c-format msgid "end-of-copy marker does not match previous newline style" msgstr "el marcador fin-de-copy no coincide con el estilo previo de salto de línea" -#: commands/copy.c:3546 commands/copy.c:3562 +#: commands/copy.c:3586 commands/copy.c:3602 #, c-format msgid "end-of-copy marker corrupt" msgstr "marcador fin-de-copy corrupto" -#: commands/copy.c:4004 +#: commands/copy.c:4044 #, c-format msgid "unterminated CSV quoted field" msgstr "un valor entre comillas está inconcluso" -#: commands/copy.c:4081 commands/copy.c:4100 +#: commands/copy.c:4121 commands/copy.c:4140 #, c-format msgid "unexpected EOF in COPY data" msgstr "EOF inesperado en datos de COPY" -#: commands/copy.c:4090 +#: commands/copy.c:4130 #, c-format msgid "invalid field size" msgstr "el tamaño de campo no es válido" -#: commands/copy.c:4113 +#: commands/copy.c:4153 #, c-format msgid "incorrect binary data format" msgstr "el formato de datos binarios es incorrecto" -#: commands/copy.c:4424 commands/indexcmds.c:1053 commands/tablecmds.c:1463 -#: commands/tablecmds.c:2290 parser/parse_relation.c:3084 -#: parser/parse_relation.c:3104 utils/adt/tsvector_op.c:2307 +#: commands/copy.c:4464 commands/indexcmds.c:1054 commands/tablecmds.c:1464 +#: commands/tablecmds.c:2291 parser/parse_relation.c:3177 +#: parser/parse_relation.c:3197 utils/adt/tsvector_op.c:2559 #, c-format msgid "column \"%s\" does not exist" msgstr "no existe la columna «%s»" -#: commands/copy.c:4431 commands/tablecmds.c:1489 commands/trigger.c:651 -#: parser/parse_target.c:956 parser/parse_target.c:967 +#: commands/copy.c:4471 commands/tablecmds.c:1490 commands/trigger.c:651 +#: parser/parse_target.c:967 parser/parse_target.c:978 #, c-format msgid "column \"%s\" specified more than once" msgstr "la columna «%s» fue especificada más de una vez" @@ -5948,9 +5709,9 @@ msgid "too many column names were specified" msgstr "se especificaron demasiados nombres de columna" #: commands/createas.c:550 -#, fuzzy, c-format +#, c-format msgid "policies not yet implemented for this command" -msgstr "DISTINCT no está implementado para funciones de ventana deslizante" +msgstr "las políticas no están implementadas para esta orden" #: commands/dbcommands.c:226 #, c-format @@ -6139,14 +5900,14 @@ msgid "some useless files may be left behind in old database directory \"%s\"" msgstr "algunos archivos inútiles pueden haber quedado en el directorio \"%s\"" #: commands/dbcommands.c:1440 -#, fuzzy, c-format +#, c-format msgid "option \"%s\" cannot be specified with other options" -msgstr "el parámetro «%s» no se puede cambiar después de efectuar la conexión" +msgstr "la opción «%s» no puede ser especificada con otras opciones" #: commands/dbcommands.c:1494 -#, fuzzy, c-format +#, c-format msgid "cannot disallow connections for current database" -msgstr "demasiadas conexiones para la base de datos «%s»" +msgstr "no se pueden prohibir las conexiones para la base de datos actual" #: commands/dbcommands.c:1634 #, c-format @@ -6210,7 +5971,7 @@ msgid "invalid argument for %s: \"%s\"" msgstr "argumento no válido para %s: «%s»" #: commands/dropcmds.c:112 commands/functioncmds.c:1203 -#: utils/adt/ruleutils.c:2077 +#: utils/adt/ruleutils.c:2083 #, c-format msgid "\"%s\" is an aggregate function" msgstr "«%s» es una función de agregación" @@ -6220,28 +5981,27 @@ msgstr "«%s» es una función de agregación" msgid "Use DROP AGGREGATE to drop aggregate functions." msgstr "Use DROP AGGREGATE para eliminar funciones de agregación." -#: commands/dropcmds.c:165 commands/sequence.c:424 commands/tablecmds.c:2377 -#: commands/tablecmds.c:2528 commands/tablecmds.c:2570 -#: commands/tablecmds.c:11377 tcop/utility.c:1119 +#: commands/dropcmds.c:165 commands/sequence.c:424 commands/tablecmds.c:2378 +#: commands/tablecmds.c:2529 commands/tablecmds.c:2571 +#: commands/tablecmds.c:11538 tcop/utility.c:1119 #, c-format msgid "relation \"%s\" does not exist, skipping" msgstr "no existe la relación «%s», ignorando" -#: commands/dropcmds.c:195 commands/dropcmds.c:296 commands/tablecmds.c:745 +#: commands/dropcmds.c:195 commands/dropcmds.c:296 commands/tablecmds.c:746 #, c-format msgid "schema \"%s\" does not exist, skipping" msgstr "el esquema «%s» no existe, ignorando" -#: commands/dropcmds.c:237 commands/dropcmds.c:276 commands/tablecmds.c:246 +#: commands/dropcmds.c:237 commands/dropcmds.c:276 commands/tablecmds.c:247 #, c-format msgid "type \"%s\" does not exist, skipping" msgstr "el tipo «%s» no existe, ignorando" #: commands/dropcmds.c:266 -#, fuzzy, c-format -#| msgid "access method \"%s\" does not exist" +#, c-format msgid "access method \"%s\" does not exist, skipping" -msgstr "no existe el método de acceso «%s»" +msgstr "no existe el método de acceso «%s», ignorando" #: commands/dropcmds.c:284 #, c-format @@ -6304,19 +6064,19 @@ msgid "cast from type %s to type %s does not exist, skipping" msgstr "no existe la conversión del tipo %s al tipo %s, ignorando" #: commands/dropcmds.c:376 -#, fuzzy, c-format +#, c-format msgid "transform for type %s language \"%s\" does not exist, skipping" -msgstr "el lenguaje «%s» no existe, ignorando" +msgstr "la transformación para el tipo %s lenguaje «%s» no existe, ignorando" #: commands/dropcmds.c:384 #, c-format msgid "trigger \"%s\" for relation \"%s\" does not exist, skipping" -msgstr "disparador «%s» para la relación «%s» no existe, ignorando" +msgstr "el disparador «%s» para la relación «%s» no existe, ignorando" #: commands/dropcmds.c:393 -#, fuzzy, c-format +#, c-format msgid "policy \"%s\" for relation \"%s\" does not exist, skipping" -msgstr "la regla «%s» para la relación «%s» no existe, ignorando" +msgstr "la política «%s» para la relación «%s» no existe, ignorando" #: commands/dropcmds.c:400 #, c-format @@ -6331,7 +6091,7 @@ msgstr "la regla «%s» para la relación «%s» no existe, ignorando" #: commands/dropcmds.c:413 #, c-format msgid "foreign-data wrapper \"%s\" does not exist, skipping" -msgstr "no existe el conector de datos externos «%s», ignorando" +msgstr "el conector de datos externos «%s» no existe, ignorando" #: commands/dropcmds.c:417 #, c-format @@ -6341,12 +6101,12 @@ msgstr "el servidor «%s» no existe, ignorando" #: commands/dropcmds.c:426 #, c-format msgid "operator class \"%s\" does not exist for access method \"%s\", skipping" -msgstr "no existe la clase de operadores «%s» para el método de acceso «%s», ignorando" +msgstr "la clase de operadores «%s» para el método de acceso «%s» no existe, ignorando" #: commands/dropcmds.c:438 #, c-format msgid "operator family \"%s\" does not exist for access method \"%s\", skipping" -msgstr "no existe la familia de operadores «%s» para el método de acceso «%s», ignorando" +msgstr "la familia de operadores «%s» para el método de acceso «%s» no existe, ignorando" #: commands/event_trigger.c:182 #, c-format @@ -6406,14 +6166,14 @@ msgid "%s can only be called in a sql_drop event trigger function" msgstr "%s sólo puede invocarse en una función de un disparador en el evento sql_drop" #: commands/event_trigger.c:1558 commands/event_trigger.c:1579 -#, fuzzy, c-format +#, c-format msgid "%s can only be called in a table_rewrite event trigger function" -msgstr "%s sólo puede invocarse en una función de un disparador en el evento sql_drop" +msgstr "%s sólo puede invocarse en una función de un disparador en el evento table_rewrite" #: commands/event_trigger.c:1989 -#, fuzzy, c-format +#, c-format msgid "%s can only be called in an event trigger function" -msgstr "%s sólo puede invocarse en una función de un disparador en el evento sql_drop" +msgstr "%s sólo puede invocarse en una función de un disparador por eventos" #: commands/explain.c:185 #, c-format @@ -6435,235 +6195,232 @@ msgstr "la opción BUFFERS de EXPLAIN requiere ANALYZE" msgid "EXPLAIN option TIMING requires ANALYZE" msgstr "la opción TIMING de EXPLAIN requiere ANALYZE" -#: commands/extension.c:154 commands/extension.c:2718 +#: commands/extension.c:155 commands/extension.c:2722 #, c-format msgid "extension \"%s\" does not exist" msgstr "no existe la extensión «%s»" -#: commands/extension.c:253 commands/extension.c:262 commands/extension.c:274 -#: commands/extension.c:284 +#: commands/extension.c:254 commands/extension.c:263 commands/extension.c:275 +#: commands/extension.c:285 #, c-format msgid "invalid extension name: \"%s\"" msgstr "nombre de extensión no válido: «%s»" -#: commands/extension.c:254 +#: commands/extension.c:255 #, c-format msgid "Extension names must not be empty." msgstr "Los nombres de extensión no deben ser vacíos." -#: commands/extension.c:263 +#: commands/extension.c:264 #, c-format msgid "Extension names must not contain \"--\"." msgstr "Los nombres de extensión no deben contener «--»." -#: commands/extension.c:275 +#: commands/extension.c:276 #, c-format msgid "Extension names must not begin or end with \"-\"." msgstr "Los nombres de extensión no deben empezar ni terminar con «-»." -#: commands/extension.c:285 +#: commands/extension.c:286 #, c-format msgid "Extension names must not contain directory separator characters." msgstr "Los nombres de extensión no deben contener caracteres separadores de directorio." -#: commands/extension.c:300 commands/extension.c:309 commands/extension.c:318 -#: commands/extension.c:328 +#: commands/extension.c:301 commands/extension.c:310 commands/extension.c:319 +#: commands/extension.c:329 #, c-format msgid "invalid extension version name: \"%s\"" msgstr "nombre de versión de extensión no válido: «%s»" -#: commands/extension.c:301 +#: commands/extension.c:302 #, c-format msgid "Version names must not be empty." msgstr "Los nombres de versión no deben ser vacíos." -#: commands/extension.c:310 +#: commands/extension.c:311 #, c-format msgid "Version names must not contain \"--\"." msgstr "Los nombres de versión no deben contener «--»." -#: commands/extension.c:319 +#: commands/extension.c:320 #, c-format msgid "Version names must not begin or end with \"-\"." msgstr "Los nombres de versión no deben empezar ni terminar con «-»." -#: commands/extension.c:329 +#: commands/extension.c:330 #, c-format msgid "Version names must not contain directory separator characters." msgstr "Los nombres de versión no deben contener caracteres separadores de directorio." -#: commands/extension.c:479 +#: commands/extension.c:480 #, c-format msgid "could not open extension control file \"%s\": %m" msgstr "no se pudo abrir el archivo de control de extensión «%s»: %m" -#: commands/extension.c:501 commands/extension.c:511 +#: commands/extension.c:502 commands/extension.c:512 #, c-format msgid "parameter \"%s\" cannot be set in a secondary extension control file" msgstr "el parámetro «%s» no se puede cambiar en un archivo control secundario de extensión" -#: commands/extension.c:550 +#: commands/extension.c:551 #, c-format msgid "\"%s\" is not a valid encoding name" msgstr "«%s» no es un nombre válido de codificación" -#: commands/extension.c:564 +#: commands/extension.c:565 #, c-format msgid "parameter \"%s\" must be a list of extension names" msgstr "el parámetro «%s» debe ser una lista de nombres de extensión" -#: commands/extension.c:571 +#: commands/extension.c:572 #, c-format msgid "unrecognized parameter \"%s\" in file \"%s\"" msgstr "parámetro no reconocido «%s» en el archivo «%s»" -#: commands/extension.c:580 +#: commands/extension.c:581 #, c-format msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true" msgstr "el parámetro «schema» no puede ser especificado cuando «relocatable» es verdadero" -#: commands/extension.c:721 +#: commands/extension.c:725 #, c-format msgid "transaction control statements are not allowed within an extension script" msgstr "las sentencias de control de transacción no están permitidos dentro de un guión de transacción" -#: commands/extension.c:789 +#: commands/extension.c:793 #, c-format msgid "permission denied to create extension \"%s\"" msgstr "se ha denegado el permiso para crear la extensión «%s»" -#: commands/extension.c:791 +#: commands/extension.c:795 #, c-format msgid "Must be superuser to create this extension." msgstr "Debe ser superusuario para crear esta extensión." -#: commands/extension.c:795 +#: commands/extension.c:799 #, c-format msgid "permission denied to update extension \"%s\"" msgstr "se ha denegado el permiso para actualizar la extensión «%s»" -#: commands/extension.c:797 +#: commands/extension.c:801 #, c-format msgid "Must be superuser to update this extension." msgstr "Debe ser superusuario para actualizar esta extensión." -#: commands/extension.c:1079 +#: commands/extension.c:1083 #, c-format msgid "extension \"%s\" has no update path from version \"%s\" to version \"%s\"" msgstr "la extensión «%s» no tiene ruta de actualización desde la versión «%s» hasta la versión «%s»" -#: commands/extension.c:1261 commands/extension.c:2778 +#: commands/extension.c:1265 commands/extension.c:2782 #, c-format msgid "version to install must be specified" msgstr "la versión a instalar debe ser especificada" -#: commands/extension.c:1278 +#: commands/extension.c:1282 #, c-format msgid "FROM version must be different from installation target version \"%s\"" msgstr "la versión FROM debe ser diferente de la versión destino de instalación «%s»" -#: commands/extension.c:1343 +#: commands/extension.c:1347 #, c-format msgid "extension \"%s\" must be installed in schema \"%s\"" msgstr "la extensión «%s» debe ser instalada en el esquema «%s»" -#: commands/extension.c:1435 -#, fuzzy, c-format -#| msgid "collation mismatch between explicit collations \"%s\" and \"%s\"" +#: commands/extension.c:1439 +#, c-format msgid "cyclic dependency detected between extensions \"%s\" and \"%s\"" -msgstr "discordancia de ordenamientos (collation) entre los ordenamientos explícitos «%s» y «%s»" +msgstr "detectada una dependencia cíclica entre las extensiones «%s» y «%s»" -#: commands/extension.c:1440 -#, fuzzy, c-format -#| msgid "invalid extension name: \"%s\"" +#: commands/extension.c:1444 +#, c-format msgid "installing required extension \"%s\"" -msgstr "nombre de extensión no válido: «%s»" +msgstr "instalando la extensión requerida «%s»" -#: commands/extension.c:1468 commands/extension.c:2923 +#: commands/extension.c:1472 commands/extension.c:2927 #, c-format msgid "required extension \"%s\" is not installed" msgstr "la extensión requerida «%s» no está instalada" -#: commands/extension.c:1470 -#, fuzzy, c-format -#| msgid "Use ALTER ... CASCADE to alter the typed tables too." +#: commands/extension.c:1474 +#, c-format msgid "Use CREATE EXTENSION ... CASCADE to install required extensions too." -msgstr "Use ALTER ... CASCADE para eliminar además las tablas tipadas." +msgstr "Use CREATE EXTENSION ... CASCADE para instalar además las extensiones requeridas." -#: commands/extension.c:1534 +#: commands/extension.c:1538 #, c-format msgid "extension \"%s\" already exists, skipping" msgstr "la extensión «%s» ya existe, ignorando" -#: commands/extension.c:1541 +#: commands/extension.c:1545 #, c-format msgid "extension \"%s\" already exists" msgstr "la extensión «%s» ya existe" -#: commands/extension.c:1552 +#: commands/extension.c:1556 #, c-format msgid "nested CREATE EXTENSION is not supported" msgstr "los CREATE EXTENSION anidados no están soportados" -#: commands/extension.c:1680 +#: commands/extension.c:1684 #, c-format msgid "cannot drop extension \"%s\" because it is being modified" msgstr "no se puede eliminar la extensión «%s» porque está siendo modificada" -#: commands/extension.c:2151 +#: commands/extension.c:2155 #, c-format msgid "pg_extension_config_dump() can only be called from an SQL script executed by CREATE EXTENSION" msgstr "pg_extension_config_dump() sólo puede ser llamado desde un guión SQL ejecutado por CREATE EXTENSION" -#: commands/extension.c:2163 +#: commands/extension.c:2167 #, c-format msgid "OID %u does not refer to a table" msgstr "el OID %u no hace referencia a una tabla" -#: commands/extension.c:2168 +#: commands/extension.c:2172 #, c-format msgid "table \"%s\" is not a member of the extension being created" msgstr "el tabla «%s» no es un miembro de la extensión que se está creando" -#: commands/extension.c:2533 +#: commands/extension.c:2537 #, c-format msgid "cannot move extension \"%s\" into schema \"%s\" because the extension contains the schema" msgstr "no se puede mover la extensión «%s» al esquema «%s» porque la extensión contiene al esquema" -#: commands/extension.c:2573 commands/extension.c:2636 +#: commands/extension.c:2577 commands/extension.c:2640 #, c-format msgid "extension \"%s\" does not support SET SCHEMA" msgstr "la extensión «%s» no soporta SET SCHEMA" -#: commands/extension.c:2638 +#: commands/extension.c:2642 #, c-format msgid "%s is not in the extension's schema \"%s\"" msgstr "%s no está en el esquema de la extensión, «%s»" -#: commands/extension.c:2698 +#: commands/extension.c:2702 #, c-format msgid "nested ALTER EXTENSION is not supported" msgstr "los ALTER EXTENSION anidados no están soportados" -#: commands/extension.c:2789 +#: commands/extension.c:2793 #, c-format msgid "version \"%s\" of extension \"%s\" is already installed" msgstr "la versión «%s» de la extensión «%s» ya está instalada" -#: commands/extension.c:3040 +#: commands/extension.c:3044 #, c-format msgid "cannot add schema \"%s\" to extension \"%s\" because the schema contains the extension" msgstr "no se puede agregar el esquema «%s» a la extensión «%s» porque el esquema contiene la extensión" -#: commands/extension.c:3058 +#: commands/extension.c:3072 #, c-format msgid "%s is not a member of extension \"%s\"" msgstr "%s no es un miembro de la extensión «%s»" -#: commands/extension.c:3114 -#, fuzzy, c-format +#: commands/extension.c:3138 +#, c-format msgid "file \"%s\" is too large" -msgstr "el tsquery es demasiado grande" +msgstr "el archivo «%s» es demasiado grande" #: commands/foreigncmds.c:150 commands/foreigncmds.c:159 #, c-format @@ -6728,7 +6485,7 @@ msgstr "al cambiar el validador del conector de datos externos, las opciones par #: commands/foreigncmds.c:1165 #, c-format msgid "user mapping \"%s\" already exists for server %s" -msgstr "ya existe un mapeo para el usuario «%s» en el servidor %s" +msgstr "el mapeo para el usuario «%s» en el servidor %s ya existe" #: commands/foreigncmds.c:1259 commands/foreigncmds.c:1375 #, c-format @@ -6743,7 +6500,7 @@ msgstr "el servidor no existe, ignorando" #: commands/foreigncmds.c:1380 #, c-format msgid "user mapping \"%s\" does not exist for the server, skipping" -msgstr "el mapeo para el usuario «%s» no existe para el servidor, ignorando" +msgstr "el mapeo para el usuario «%s» para el servidor no existe, ignorando" #: commands/foreigncmds.c:1532 foreign/foreign.c:361 #, c-format @@ -6751,14 +6508,14 @@ msgid "foreign-data wrapper \"%s\" has no handler" msgstr "el conector de datos externos «%s» no tiene manejador" #: commands/foreigncmds.c:1538 -#, fuzzy, c-format +#, c-format msgid "foreign-data wrapper \"%s\" does not support IMPORT FOREIGN SCHEMA" -msgstr "no existe el conector de datos externos «%s»" +msgstr "el conector de datos externos «%s» no soporta IMPORT FOREIGN SCHEMA" #: commands/foreigncmds.c:1631 -#, fuzzy, c-format +#, c-format msgid "importing foreign table \"%s\"" -msgstr "no se puede insertar en la tabla foránea «%s»" +msgstr "importando la tabla foránea «%s»" #: commands/functioncmds.c:99 #, c-format @@ -6875,13 +6632,13 @@ msgstr "se ignoró el atributo de función no reconocido «%s»" msgid "only one AS item needed for language \"%s\"" msgstr "sólo se requiere un item AS para el lenguaje «%s»" -#: commands/functioncmds.c:929 commands/functioncmds.c:2119 +#: commands/functioncmds.c:929 commands/functioncmds.c:2139 #: commands/proclang.c:563 #, c-format msgid "language \"%s\" does not exist" msgstr "no existe el lenguaje «%s»" -#: commands/functioncmds.c:931 commands/functioncmds.c:2121 +#: commands/functioncmds.c:931 commands/functioncmds.c:2141 #, c-format msgid "Use CREATE LANGUAGE to load the language into the database." msgstr "Usar CREATE LANGUAGE para instalar el lenguaje en la base de datos." @@ -6906,187 +6663,187 @@ msgstr "el tipo de retorno de la función debe ser especificado" msgid "ROWS is not applicable when function does not return a set" msgstr "ROWS no es aplicable cuando una función no retorna un conjunto" -#: commands/functioncmds.c:1412 +#: commands/functioncmds.c:1432 #, c-format msgid "source data type %s is a pseudo-type" -msgstr "el tipo de origen %s es un pseudotipo" +msgstr "el tipo de origen %s es un pseudo-tipo" -#: commands/functioncmds.c:1418 +#: commands/functioncmds.c:1438 #, c-format msgid "target data type %s is a pseudo-type" -msgstr "el tipo de retorno %s es un pseudotipo" +msgstr "el tipo de retorno %s es un pseudo-tipo" -#: commands/functioncmds.c:1442 +#: commands/functioncmds.c:1462 #, c-format msgid "cast will be ignored because the source data type is a domain" msgstr "el cast será ignorado porque el tipo de datos de origen es un dominio" -#: commands/functioncmds.c:1447 +#: commands/functioncmds.c:1467 #, c-format msgid "cast will be ignored because the target data type is a domain" msgstr "el cast será ignorado porque el tipo de datos de destino es un dominio" -#: commands/functioncmds.c:1474 +#: commands/functioncmds.c:1494 #, c-format msgid "cast function must take one to three arguments" msgstr "la función de conversión lleva de uno a tres argumentos" -#: commands/functioncmds.c:1478 +#: commands/functioncmds.c:1498 #, c-format msgid "argument of cast function must match or be binary-coercible from source data type" msgstr "el argumento de la función de conversión debe coincidir o ser binario-convertible con el tipo de origen" -#: commands/functioncmds.c:1482 +#: commands/functioncmds.c:1502 #, c-format msgid "second argument of cast function must be type integer" msgstr "el segundo argumento de la función de conversión debe ser entero" -#: commands/functioncmds.c:1486 +#: commands/functioncmds.c:1506 #, c-format msgid "third argument of cast function must be type boolean" msgstr "el tercer argumento de la función de conversión debe ser de tipo boolean" -#: commands/functioncmds.c:1490 +#: commands/functioncmds.c:1510 #, c-format msgid "return data type of cast function must match or be binary-coercible to target data type" msgstr "el tipo de salida de la función de conversión debe coincidir o ser binario-convertible con el tipo de retorno" -#: commands/functioncmds.c:1501 +#: commands/functioncmds.c:1521 #, c-format msgid "cast function must not be volatile" msgstr "la función de conversión no debe ser volatile" -#: commands/functioncmds.c:1506 +#: commands/functioncmds.c:1526 #, c-format msgid "cast function must not be an aggregate function" msgstr "la función de conversión no debe ser una función de agregación" -#: commands/functioncmds.c:1510 +#: commands/functioncmds.c:1530 #, c-format msgid "cast function must not be a window function" msgstr "la función de conversión no debe ser una función de ventana deslizante" -#: commands/functioncmds.c:1514 +#: commands/functioncmds.c:1534 #, c-format msgid "cast function must not return a set" msgstr "la función de conversión no debe retornar un conjunto" -#: commands/functioncmds.c:1540 +#: commands/functioncmds.c:1560 #, c-format msgid "must be superuser to create a cast WITHOUT FUNCTION" msgstr "debe ser superusuario para crear una conversión sin especificar función" -#: commands/functioncmds.c:1555 +#: commands/functioncmds.c:1575 #, c-format msgid "source and target data types are not physically compatible" msgstr "los tipos de datos de origen y destino no son físicamente compatibles" -#: commands/functioncmds.c:1570 +#: commands/functioncmds.c:1590 #, c-format msgid "composite data types are not binary-compatible" msgstr "los tipos de datos compuestos no son binario-compatibles" -#: commands/functioncmds.c:1576 +#: commands/functioncmds.c:1596 #, c-format msgid "enum data types are not binary-compatible" msgstr "los tipos de datos enum no son binario-compatibles" -#: commands/functioncmds.c:1582 +#: commands/functioncmds.c:1602 #, c-format msgid "array data types are not binary-compatible" msgstr "los tipos de datos de array no son binario-compatibles" -#: commands/functioncmds.c:1599 +#: commands/functioncmds.c:1619 #, c-format msgid "domain data types must not be marked binary-compatible" msgstr "los tipos de dato de dominio no deben ser marcados binario-compatibles" -#: commands/functioncmds.c:1609 +#: commands/functioncmds.c:1629 #, c-format msgid "source data type and target data type are the same" msgstr "el tipo de origen y el tipo de retorno son el mismo" -#: commands/functioncmds.c:1642 +#: commands/functioncmds.c:1662 #, c-format msgid "cast from type %s to type %s already exists" -msgstr "ya existe una conversión del tipo %s al tipo %s" +msgstr "la conversión del tipo %s al tipo %s ya existe" -#: commands/functioncmds.c:1717 +#: commands/functioncmds.c:1737 #, c-format msgid "cast from type %s to type %s does not exist" msgstr "no existe la conversión del tipo %s al tipo %s" -#: commands/functioncmds.c:1756 -#, fuzzy, c-format +#: commands/functioncmds.c:1776 +#, c-format msgid "transform function must not be volatile" -msgstr "la función de conversión no debe ser volatile" +msgstr "la función de transformación no debe ser volatile" -#: commands/functioncmds.c:1760 -#, fuzzy, c-format +#: commands/functioncmds.c:1780 +#, c-format msgid "transform function must not be an aggregate function" -msgstr "la función de conversión no debe ser una función de agregación" +msgstr "la función de transformación no debe ser una función de agregación" -#: commands/functioncmds.c:1764 -#, fuzzy, c-format +#: commands/functioncmds.c:1784 +#, c-format msgid "transform function must not be a window function" -msgstr "la función de conversión no debe ser una función de ventana deslizante" +msgstr "la función de transformación no debe ser una función de ventana deslizante" -#: commands/functioncmds.c:1768 -#, fuzzy, c-format +#: commands/functioncmds.c:1788 +#, c-format msgid "transform function must not return a set" -msgstr "la función de conversión no debe retornar un conjunto" +msgstr "la función de transformación no debe retornar un conjunto" -#: commands/functioncmds.c:1772 -#, fuzzy, c-format +#: commands/functioncmds.c:1792 +#, c-format msgid "transform function must take one argument" -msgstr "la función de conversión lleva de uno a tres argumentos" +msgstr "la función de transformación debe recibir un argumento" -#: commands/functioncmds.c:1776 -#, fuzzy, c-format +#: commands/functioncmds.c:1796 +#, c-format msgid "first argument of transform function must be type \"internal\"" -msgstr "el segundo argumento de la función de conversión debe ser entero" +msgstr "el primer argumento de la función de transformación debe ser «internal»" -#: commands/functioncmds.c:1813 -#, fuzzy, c-format +#: commands/functioncmds.c:1833 +#, c-format msgid "data type %s is a pseudo-type" -msgstr "el tipo de origen %s es un pseudotipo" +msgstr "el tipo de dato %s es un pseudo-tipo" -#: commands/functioncmds.c:1819 -#, fuzzy, c-format +#: commands/functioncmds.c:1839 +#, c-format msgid "data type %s is a domain" -msgstr "tipo «%s» no es un dominio" +msgstr "tipo de dato «%s» es un dominio" -#: commands/functioncmds.c:1859 -#, fuzzy, c-format +#: commands/functioncmds.c:1879 +#, c-format msgid "return data type of FROM SQL function must be \"internal\"" -msgstr "el tipo de salida de la función de conversión debe coincidir o ser binario-convertible con el tipo de retorno" +msgstr "el tipo de retorno de la función FROM SQL debe ser «internal»" -#: commands/functioncmds.c:1884 -#, fuzzy, c-format +#: commands/functioncmds.c:1904 +#, c-format msgid "return data type of TO SQL function must be the transform data type" -msgstr "el tipo de salida de la función de conversión debe coincidir o ser binario-convertible con el tipo de retorno" +msgstr "el tipo de retorn de la función TO SQL debe ser el tipo de dato de la transformación" -#: commands/functioncmds.c:1911 -#, fuzzy, c-format +#: commands/functioncmds.c:1931 +#, c-format msgid "transform for type %s language \"%s\" already exists" -msgstr "ya existe el lenguaje «%s»" +msgstr "la transformación para el tipo %s lenguaje «%s» ya existe" -#: commands/functioncmds.c:2002 -#, fuzzy, c-format +#: commands/functioncmds.c:2022 +#, c-format msgid "transform for type %s language \"%s\" does not exist" -msgstr "no existe el lenguaje «%s»" +msgstr "la transformación para el tipo %s lenguaje «%s» no existe" -#: commands/functioncmds.c:2053 +#: commands/functioncmds.c:2073 #, c-format msgid "function %s already exists in schema \"%s\"" -msgstr "ya existe una función llamada %s en el esquema «%s»" +msgstr "la función %s ya existe en el esquema «%s»" -#: commands/functioncmds.c:2106 +#: commands/functioncmds.c:2126 #, c-format msgid "no inline code specified" msgstr "no se ha especificado código" -#: commands/functioncmds.c:2151 +#: commands/functioncmds.c:2171 #, c-format msgid "language \"%s\" does not support inline code execution" msgstr "el lenguaje «%s» no soporta ejecución de código en línea" @@ -7111,140 +6868,139 @@ msgstr "no se puede crear un índice en la tabla foránea «%s»" msgid "cannot create indexes on temporary tables of other sessions" msgstr "no se pueden crear índices en tablas temporales de otras sesiones" -#: commands/indexcmds.c:454 commands/tablecmds.c:545 commands/tablecmds.c:9597 +#: commands/indexcmds.c:455 commands/tablecmds.c:546 commands/tablecmds.c:9708 #, c-format msgid "only shared relations can be placed in pg_global tablespace" msgstr "sólo relaciones compartidas pueden ser puestas en el tablespace pg_global" -#: commands/indexcmds.c:487 +#: commands/indexcmds.c:488 #, c-format msgid "substituting access method \"gist\" for obsolete method \"rtree\"" msgstr "sustituyendo el método de acceso obsoleto «rtree» por «gist»" -#: commands/indexcmds.c:505 +#: commands/indexcmds.c:506 #, c-format msgid "hash indexes are not WAL-logged and their use is discouraged" -msgstr "" +msgstr "los índices hash no son registrados en WAL y se recomienda no usarlos" -#: commands/indexcmds.c:510 +#: commands/indexcmds.c:511 #, c-format msgid "access method \"%s\" does not support unique indexes" msgstr "el método de acceso «%s» no soporta índices únicos" -#: commands/indexcmds.c:515 +#: commands/indexcmds.c:516 #, c-format msgid "access method \"%s\" does not support multicolumn indexes" msgstr "el método de acceso «%s» no soporta índices multicolumna" -#: commands/indexcmds.c:520 +#: commands/indexcmds.c:521 #, c-format msgid "access method \"%s\" does not support exclusion constraints" msgstr "el método de acceso «%s» no soporta restricciones por exclusión" -#: commands/indexcmds.c:590 commands/indexcmds.c:610 -#, fuzzy, c-format -#| msgid "concurrent index creation on system catalog tables is not supported" +#: commands/indexcmds.c:591 commands/indexcmds.c:611 +#, c-format msgid "index creation on system columns is not supported" -msgstr "no se pueden crear índices de forma concurrente en tablas del sistema" +msgstr "la creación de índices en columnas de sistema no está soportada" -#: commands/indexcmds.c:635 +#: commands/indexcmds.c:636 #, c-format msgid "%s %s will create implicit index \"%s\" for table \"%s\"" msgstr "%s %s creará el índice implícito «%s» para la tabla «%s»" -#: commands/indexcmds.c:982 +#: commands/indexcmds.c:983 #, c-format msgid "functions in index predicate must be marked IMMUTABLE" msgstr "las funciones utilizadas en predicados de índice deben estar marcadas IMMUTABLE" -#: commands/indexcmds.c:1048 parser/parse_utilcmd.c:1896 +#: commands/indexcmds.c:1049 parser/parse_utilcmd.c:1882 #, c-format msgid "column \"%s\" named in key does not exist" msgstr "no existe la columna «%s» en la llave" -#: commands/indexcmds.c:1108 +#: commands/indexcmds.c:1109 #, c-format msgid "functions in index expression must be marked IMMUTABLE" msgstr "las funciones utilizadas en expresiones de índice deben estar marcadas IMMUTABLE" -#: commands/indexcmds.c:1131 +#: commands/indexcmds.c:1132 #, c-format msgid "could not determine which collation to use for index expression" msgstr "no se pudo determinar qué ordenamiento (collation) usar para la expresión de índice" -#: commands/indexcmds.c:1139 commands/typecmds.c:827 parser/parse_expr.c:2608 -#: parser/parse_type.c:550 parser/parse_utilcmd.c:2822 utils/adt/misc.c:666 +#: commands/indexcmds.c:1140 commands/typecmds.c:827 parser/parse_expr.c:2608 +#: parser/parse_type.c:550 parser/parse_utilcmd.c:2808 utils/adt/misc.c:666 #, c-format msgid "collations are not supported by type %s" msgstr "los ordenamientos (collation) no están soportados por el tipo %s" -#: commands/indexcmds.c:1177 +#: commands/indexcmds.c:1178 #, c-format msgid "operator %s is not commutative" msgstr "el operador %s no es conmutativo" -#: commands/indexcmds.c:1179 +#: commands/indexcmds.c:1180 #, c-format msgid "Only commutative operators can be used in exclusion constraints." msgstr "Sólo operadores conmutativos pueden ser usados en restricciones de exclusión." -#: commands/indexcmds.c:1205 +#: commands/indexcmds.c:1206 #, c-format msgid "operator %s is not a member of operator family \"%s\"" msgstr "el operador %s no es un miembro de la familia de operadores «%s»" -#: commands/indexcmds.c:1208 +#: commands/indexcmds.c:1209 #, c-format msgid "The exclusion operator must be related to the index operator class for the constraint." msgstr "El operador de exclusión debe estar relacionado con la clase de operadores del índice para la restricción." -#: commands/indexcmds.c:1243 +#: commands/indexcmds.c:1244 #, c-format msgid "access method \"%s\" does not support ASC/DESC options" msgstr "el método de acceso «%s» no soporta las opciones ASC/DESC" -#: commands/indexcmds.c:1248 +#: commands/indexcmds.c:1249 #, c-format msgid "access method \"%s\" does not support NULLS FIRST/LAST options" msgstr "el método de acceso «%s» no soporta las opciones NULLS FIRST/LAST" -#: commands/indexcmds.c:1304 commands/typecmds.c:1935 +#: commands/indexcmds.c:1305 commands/typecmds.c:1935 #, c-format msgid "data type %s has no default operator class for access method \"%s\"" msgstr "el tipo de dato %s no tiene una clase de operadores por omisión para el método de acceso «%s»" -#: commands/indexcmds.c:1306 +#: commands/indexcmds.c:1307 #, c-format msgid "You must specify an operator class for the index or define a default operator class for the data type." msgstr "Debe especificar una clase de operadores para el índice, o definir una clase de operadores por omisión para el tipo de datos." -#: commands/indexcmds.c:1335 commands/indexcmds.c:1343 +#: commands/indexcmds.c:1336 commands/indexcmds.c:1344 #: commands/opclasscmds.c:205 #, c-format msgid "operator class \"%s\" does not exist for access method \"%s\"" msgstr "no existe la clase de operadores «%s» para el método de acceso «%s»" -#: commands/indexcmds.c:1356 commands/typecmds.c:1923 +#: commands/indexcmds.c:1357 commands/typecmds.c:1923 #, c-format msgid "operator class \"%s\" does not accept data type %s" msgstr "la clase de operadores «%s» no acepta el tipo de datos %s" -#: commands/indexcmds.c:1446 +#: commands/indexcmds.c:1447 #, c-format msgid "there are multiple default operator classes for data type %s" msgstr "hay múltiples clases de operadores por omisión para el tipo de datos %s" -#: commands/indexcmds.c:1837 +#: commands/indexcmds.c:1838 #, c-format msgid "table \"%s\" has no indexes" msgstr "la tabla «%s» no tiene índices" -#: commands/indexcmds.c:1892 +#: commands/indexcmds.c:1893 #, c-format msgid "can only reindex the currently open database" msgstr "sólo se puede reindexar la base de datos actualmente abierta" -#: commands/indexcmds.c:1992 +#: commands/indexcmds.c:1993 #, c-format msgid "table \"%s.%s\" was reindexed" msgstr "la tabla «%s.%s» fue reindexada" @@ -7270,10 +7026,9 @@ msgid "Create a unique index with no WHERE clause on one or more columns of the msgstr "Cree un índice único sin cláusula WHERE en una o más columnas de la vista materializada." #: commands/matview.c:657 -#, fuzzy, c-format -#| msgid "new data for \"%s\" contains duplicate rows without any null columns" +#, c-format msgid "new data for materialized view \"%s\" contains duplicate rows without any null columns" -msgstr "nuevos datos para «%s» contiene filas duplicadas sin columnas nulas" +msgstr "nuevos datos para la vista materializada «%s» contiene filas duplicadas sin columnas nulas" #: commands/matview.c:659 #, c-format @@ -7288,7 +7043,7 @@ msgstr "no existe la familia de operadores «%s» para el método de acceso «%s #: commands/opclasscmds.c:264 #, c-format msgid "operator family \"%s\" for access method \"%s\" already exists" -msgstr "ya exista una familia de operadores «%s» para el método de acceso «%s»" +msgstr "la familia de operadores «%s» para el método de acceso «%s» ya existe" #: commands/opclasscmds.c:404 #, c-format @@ -7320,7 +7075,7 @@ msgstr "el tipo de almacenamiento no puede ser diferente del tipo de dato para e #: commands/opclasscmds.c:602 #, c-format msgid "operator class \"%s\" for access method \"%s\" already exists" -msgstr "ya exista una clase de operadores «%s» para el método de acceso «%s»" +msgstr "la clase de operadores «%s» para el método de acceso «%s» ya existe" #: commands/opclasscmds.c:630 #, c-format @@ -7420,12 +7175,12 @@ msgstr "el número de operador %d para (%s,%s) aparece más de una vez" #: commands/opclasscmds.c:1310 #, c-format msgid "operator %d(%s,%s) already exists in operator family \"%s\"" -msgstr "ya existe un operador %d(%s,%s) en la familia de operadores «%s»" +msgstr "el operador %d(%s,%s) ya existe en la familia de operadores «%s»" #: commands/opclasscmds.c:1426 #, c-format msgid "function %d(%s,%s) already exists in operator family \"%s\"" -msgstr "ya existe una función %d(%s,%s) en la familia de operador «%s»" +msgstr "la función %d(%s,%s) ya existe en la familia de operadores «%s»" #: commands/opclasscmds.c:1516 #, c-format @@ -7440,12 +7195,12 @@ msgstr "no existe la función %d(%s,%s) en la familia de operadores «%s»" #: commands/opclasscmds.c:1686 #, c-format msgid "operator class \"%s\" for access method \"%s\" already exists in schema \"%s\"" -msgstr "ya existe una clase de operadores «%s» para el método de acceso «%s» en el esquema «%s»" +msgstr "la clase de operadores «%s» para el método de acceso «%s» ya existe en el esquema «%s»" #: commands/opclasscmds.c:1709 #, c-format msgid "operator family \"%s\" for access method \"%s\" already exists in schema \"%s\"" -msgstr "ya existe una familia de operadores «%s» para el método de acceso «%s» en el esquema «%s»" +msgstr "la familia de operadores «%s» para el método de acceso «%s» ya existe en el esquema «%s»" #: commands/operatorcmds.c:114 commands/operatorcmds.c:122 #, c-format @@ -7468,82 +7223,77 @@ msgid "at least one of leftarg or rightarg must be specified" msgstr "debe especificar al menos uno de los argumentos izquierdo o derecho" #: commands/operatorcmds.c:278 -#, fuzzy, c-format -#| msgid "restriction estimator function %s must return type \"float8\"" +#, c-format msgid "restriction estimator function %s must return type %s" -msgstr "la función de estimación de restricción %s debe retornar tipo «float8»" +msgstr "la función de estimación de restricción %s debe retornar tipo %s" #: commands/operatorcmds.c:324 -#, fuzzy, c-format -#| msgid "join estimator function %s must return type \"float8\"" +#, c-format msgid "join estimator function %s must return type %s" -msgstr "la función de estimación de join %s debe retornar tipo «float8»" +msgstr "la función de estimación de join %s debe retornar tipo %s" #: commands/operatorcmds.c:451 -#, fuzzy, c-format -#| msgid "operator attribute \"%s\" not recognized" +#, c-format msgid "operator attribute \"%s\" cannot be changed" -msgstr "el atributo de operador «%s» no es reconocido" +msgstr "el atributo de operador «%s» no puede ser cambiado" #: commands/policy.c:87 commands/policy.c:388 commands/policy.c:477 -#: commands/tablecmds.c:970 commands/tablecmds.c:1312 -#: commands/tablecmds.c:2184 commands/tablecmds.c:4328 -#: commands/tablecmds.c:6279 commands/tablecmds.c:11933 -#: commands/tablecmds.c:11968 commands/trigger.c:241 commands/trigger.c:1125 -#: commands/trigger.c:1233 rewrite/rewriteDefine.c:273 +#: commands/tablecmds.c:971 commands/tablecmds.c:1313 commands/tablecmds.c:2185 +#: commands/tablecmds.c:4329 commands/tablecmds.c:6293 +#: commands/tablecmds.c:12094 commands/tablecmds.c:12129 commands/trigger.c:241 +#: commands/trigger.c:1125 commands/trigger.c:1233 rewrite/rewriteDefine.c:273 #: rewrite/rewriteDefine.c:917 #, c-format msgid "permission denied: \"%s\" is a system catalog" msgstr "permiso denegado: «%s» es un catálogo de sistema" #: commands/policy.c:170 -#, fuzzy, c-format +#, c-format msgid "ignoring specified roles other than PUBLIC" -msgstr "el tipo de almacenamiento fue especificado más de una vez" +msgstr "ignorando los roles especificados que no son PUBLIC" #: commands/policy.c:171 #, c-format msgid "All roles are members of the PUBLIC role." -msgstr "" +msgstr "Todos los roles son miembros del rol PUBLIC." #: commands/policy.c:501 -#, fuzzy, c-format +#, c-format msgid "role \"%s\" could not be removed from policy \"%s\" on \"%s\"" -msgstr "No se pudo renombrar «%s» a «%s»: %m." +msgstr "el rol «%s» no pudo ser eliminado de la política «%s» en «%s»" #: commands/policy.c:710 -#, fuzzy, c-format +#, c-format msgid "WITH CHECK cannot be applied to SELECT or DELETE" -msgstr "%s no puede ser aplicado a VALUES" +msgstr "WITH CHECK no puede ser aplicado a SELECT o DELETE" #: commands/policy.c:719 commands/policy.c:1019 #, c-format msgid "only WITH CHECK expression allowed for INSERT" -msgstr "" +msgstr "sólo se permite una expresión WITH CHECK para INSERT" #: commands/policy.c:792 commands/policy.c:1242 -#, fuzzy, c-format +#, c-format msgid "policy \"%s\" for table \"%s\" already exists" -msgstr "la codificación «%2$s» ya tiene un ordenamiento llamado «%1$s»" +msgstr "la política «%s» para la tabla «%s» ya existe" #: commands/policy.c:991 commands/policy.c:1270 commands/policy.c:1345 -#, fuzzy, c-format +#, c-format msgid "policy \"%s\" for table \"%s\" does not exist" -msgstr "no existe el índice «%s» en la tabla «%s»" +msgstr "no existe la política «%s» para la tabla «%s»" #: commands/policy.c:1009 #, c-format msgid "only USING expression allowed for SELECT, DELETE" -msgstr "" +msgstr "sólo se permite una expresión USING para SELECT, DELETE" -#: commands/portalcmds.c:61 commands/portalcmds.c:160 -#: commands/portalcmds.c:212 +#: commands/portalcmds.c:61 commands/portalcmds.c:160 commands/portalcmds.c:212 #, c-format msgid "invalid cursor name: must not be empty" msgstr "el nombre de cursor no es válido: no debe ser vacío" #: commands/portalcmds.c:168 commands/portalcmds.c:222 -#: executor/execCurrent.c:67 utils/adt/xml.c:2389 utils/adt/xml.c:2556 +#: executor/execCurrent.c:67 utils/adt/xml.c:2399 utils/adt/xml.c:2569 #, c-format msgid "cursor \"%s\" does not exist" msgstr "no existe el cursor «%s»" @@ -7553,7 +7303,7 @@ msgstr "no existe el cursor «%s»" msgid "invalid statement name: must not be empty" msgstr "el nombre de sentencia no es válido: no debe ser vacío" -#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1343 +#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1335 #, c-format msgid "could not determine data type of parameter $%d" msgstr "no se pudo determinar el tipo del parámetro $%d" @@ -7743,162 +7493,162 @@ msgstr "la secuencia debe tener el mismo dueño que la tabla a la que está enla msgid "sequence must be in same schema as table it is linked to" msgstr "la secuencia debe estar en el mismo esquema que la tabla a la que está enlazada" -#: commands/tablecmds.c:215 +#: commands/tablecmds.c:216 #, c-format msgid "table \"%s\" does not exist" msgstr "no existe la tabla «%s»" -#: commands/tablecmds.c:216 +#: commands/tablecmds.c:217 #, c-format msgid "table \"%s\" does not exist, skipping" msgstr "la tabla «%s» no existe, ignorando" -#: commands/tablecmds.c:218 +#: commands/tablecmds.c:219 msgid "Use DROP TABLE to remove a table." msgstr "Use DROP TABLE para eliminar una tabla." -#: commands/tablecmds.c:221 +#: commands/tablecmds.c:222 #, c-format msgid "sequence \"%s\" does not exist" msgstr "no existe la secuencia «%s»" -#: commands/tablecmds.c:222 +#: commands/tablecmds.c:223 #, c-format msgid "sequence \"%s\" does not exist, skipping" msgstr "la secuencia «%s» no existe, ignorando" -#: commands/tablecmds.c:224 +#: commands/tablecmds.c:225 msgid "Use DROP SEQUENCE to remove a sequence." msgstr "Use DROP SEQUENCE para eliminar una secuencia." -#: commands/tablecmds.c:227 +#: commands/tablecmds.c:228 #, c-format msgid "view \"%s\" does not exist" msgstr "no existe la vista «%s»" -#: commands/tablecmds.c:228 +#: commands/tablecmds.c:229 #, c-format msgid "view \"%s\" does not exist, skipping" msgstr "la vista «%s» no existe, ignorando" -#: commands/tablecmds.c:230 +#: commands/tablecmds.c:231 msgid "Use DROP VIEW to remove a view." msgstr "Use DROP VIEW para eliminar una vista." -#: commands/tablecmds.c:233 +#: commands/tablecmds.c:234 #, c-format msgid "materialized view \"%s\" does not exist" msgstr "no existe la vista materializada «%s»" -#: commands/tablecmds.c:234 +#: commands/tablecmds.c:235 #, c-format msgid "materialized view \"%s\" does not exist, skipping" msgstr "la vista materializada «%s» no existe, ignorando" -#: commands/tablecmds.c:236 +#: commands/tablecmds.c:237 msgid "Use DROP MATERIALIZED VIEW to remove a materialized view." msgstr "Use DROP MATERIALIZED VIEW para eliminar una vista materializada." -#: commands/tablecmds.c:239 parser/parse_utilcmd.c:1645 +#: commands/tablecmds.c:240 parser/parse_utilcmd.c:1631 #, c-format msgid "index \"%s\" does not exist" msgstr "no existe el índice «%s»" -#: commands/tablecmds.c:240 +#: commands/tablecmds.c:241 #, c-format msgid "index \"%s\" does not exist, skipping" msgstr "el índice «%s» no existe, ignorando" -#: commands/tablecmds.c:242 +#: commands/tablecmds.c:243 msgid "Use DROP INDEX to remove an index." msgstr "Use DROP INDEX para eliminar un índice." -#: commands/tablecmds.c:247 +#: commands/tablecmds.c:248 #, c-format msgid "\"%s\" is not a type" msgstr "«%s» no es un tipo" -#: commands/tablecmds.c:248 +#: commands/tablecmds.c:249 msgid "Use DROP TYPE to remove a type." msgstr "Use DROP TYPE para eliminar un tipo." -#: commands/tablecmds.c:251 commands/tablecmds.c:8486 -#: commands/tablecmds.c:11194 +#: commands/tablecmds.c:252 commands/tablecmds.c:8597 +#: commands/tablecmds.c:11349 #, c-format msgid "foreign table \"%s\" does not exist" msgstr "no existe la tabla foránea «%s»" -#: commands/tablecmds.c:252 +#: commands/tablecmds.c:253 #, c-format msgid "foreign table \"%s\" does not exist, skipping" msgstr "la tabla foránea «%s» no existe, ignorando" -#: commands/tablecmds.c:254 +#: commands/tablecmds.c:255 msgid "Use DROP FOREIGN TABLE to remove a foreign table." msgstr "Use DROP FOREIGN TABLE para eliminar una tabla foránea." -#: commands/tablecmds.c:493 +#: commands/tablecmds.c:494 #, c-format msgid "ON COMMIT can only be used on temporary tables" msgstr "ON COMMIT sólo puede ser usado en tablas temporales" -#: commands/tablecmds.c:513 +#: commands/tablecmds.c:514 #, c-format msgid "cannot create temporary table within security-restricted operation" msgstr "no se puede crear una tabla temporal dentro una operación restringida por seguridad" -#: commands/tablecmds.c:821 +#: commands/tablecmds.c:822 #, c-format msgid "DROP INDEX CONCURRENTLY does not support dropping multiple objects" msgstr "DROP INDEX CONCURRENTLY no soporta eliminar múltiples objetos" -#: commands/tablecmds.c:825 +#: commands/tablecmds.c:826 #, c-format msgid "DROP INDEX CONCURRENTLY does not support CASCADE" msgstr "DROP INDEX CONCURRENTLY no soporta CASCADE" -#: commands/tablecmds.c:1084 +#: commands/tablecmds.c:1085 #, c-format msgid "truncate cascades to table \"%s\"" msgstr "truncando además la tabla «%s»" -#: commands/tablecmds.c:1322 +#: commands/tablecmds.c:1323 #, c-format msgid "cannot truncate temporary tables of other sessions" msgstr "no se pueden truncar tablas temporales de otras sesiones" -#: commands/tablecmds.c:1528 parser/parse_utilcmd.c:1859 -#, fuzzy, c-format +#: commands/tablecmds.c:1529 parser/parse_utilcmd.c:1845 +#, c-format msgid "inherited relation \"%s\" is not a table or foreign table" -msgstr "la relación referida «%s» no es una tabla o tabla foránea" +msgstr "la relación heredada «%s» no es una tabla o tabla foránea" -#: commands/tablecmds.c:1535 commands/tablecmds.c:10053 +#: commands/tablecmds.c:1536 commands/tablecmds.c:10164 #, c-format msgid "cannot inherit from temporary relation \"%s\"" msgstr "no se puede heredar de la tabla temporal «%s»" -#: commands/tablecmds.c:1543 commands/tablecmds.c:10061 +#: commands/tablecmds.c:1544 commands/tablecmds.c:10172 #, c-format msgid "cannot inherit from temporary relation of another session" msgstr "no se puede heredar de una tabla temporal de otra sesión" -#: commands/tablecmds.c:1559 commands/tablecmds.c:10095 +#: commands/tablecmds.c:1560 commands/tablecmds.c:10206 #, c-format msgid "relation \"%s\" would be inherited from more than once" msgstr "se heredaría de la relación «%s» más de una vez" -#: commands/tablecmds.c:1607 +#: commands/tablecmds.c:1608 #, c-format msgid "merging multiple inherited definitions of column \"%s\"" msgstr "mezclando múltiples definiciones heredadas de la columna «%s»" -#: commands/tablecmds.c:1615 +#: commands/tablecmds.c:1616 #, c-format msgid "inherited column \"%s\" has a type conflict" msgstr "columna heredada «%s» tiene conflicto de tipos" -#: commands/tablecmds.c:1617 commands/tablecmds.c:1640 -#: commands/tablecmds.c:1838 commands/tablecmds.c:1862 +#: commands/tablecmds.c:1618 commands/tablecmds.c:1641 +#: commands/tablecmds.c:1839 commands/tablecmds.c:1863 #: parser/parse_coerce.c:1630 parser/parse_coerce.c:1650 #: parser/parse_coerce.c:1670 parser/parse_coerce.c:1715 #: parser/parse_coerce.c:1752 parser/parse_param.c:218 @@ -7906,761 +7656,766 @@ msgstr "columna heredada «%s» tiene conflicto de tipos" msgid "%s versus %s" msgstr "%s versus %s" -#: commands/tablecmds.c:1626 +#: commands/tablecmds.c:1627 #, c-format msgid "inherited column \"%s\" has a collation conflict" msgstr "columna heredada «%s» tiene conflicto de ordenamiento (collation)" -#: commands/tablecmds.c:1628 commands/tablecmds.c:1850 -#: commands/tablecmds.c:4766 +#: commands/tablecmds.c:1629 commands/tablecmds.c:1851 +#: commands/tablecmds.c:4780 #, c-format msgid "\"%s\" versus \"%s\"" msgstr "«%s» versus «%s»" -#: commands/tablecmds.c:1638 +#: commands/tablecmds.c:1639 #, c-format msgid "inherited column \"%s\" has a storage parameter conflict" msgstr "columna heredada «%s» tiene conflicto de parámetros de almacenamiento" -#: commands/tablecmds.c:1751 parser/parse_utilcmd.c:938 -#: parser/parse_utilcmd.c:1289 parser/parse_utilcmd.c:1365 +#: commands/tablecmds.c:1752 commands/tablecmds.c:8102 +#: parser/parse_utilcmd.c:924 parser/parse_utilcmd.c:1275 +#: parser/parse_utilcmd.c:1351 #, c-format msgid "cannot convert whole-row table reference" msgstr "no se puede convertir una referencia a la fila completa (whole-row)" -#: commands/tablecmds.c:1752 parser/parse_utilcmd.c:939 +#: commands/tablecmds.c:1753 parser/parse_utilcmd.c:925 #, c-format msgid "Constraint \"%s\" contains a whole-row reference to table \"%s\"." msgstr "La restricción «%s» contiene una referencia a la fila completa (whole-row) de la tabla «%s»." -#: commands/tablecmds.c:1824 +#: commands/tablecmds.c:1825 #, c-format msgid "merging column \"%s\" with inherited definition" msgstr "mezclando la columna «%s» con la definición heredada" -#: commands/tablecmds.c:1828 -#, fuzzy, c-format +#: commands/tablecmds.c:1829 +#, c-format msgid "moving and merging column \"%s\" with inherited definition" -msgstr "mezclando la columna «%s» con la definición heredada" +msgstr "moviendo y mezclando la columna «%s» con la definición heredada" -#: commands/tablecmds.c:1829 +#: commands/tablecmds.c:1830 #, c-format msgid "User-specified column moved to the position of the inherited column." -msgstr "" +msgstr "La columna especificada por el usuario fue movida a la posición de la columna heredada." -#: commands/tablecmds.c:1836 +#: commands/tablecmds.c:1837 #, c-format msgid "column \"%s\" has a type conflict" msgstr "la columna «%s» tiene conflicto de tipos" -#: commands/tablecmds.c:1848 +#: commands/tablecmds.c:1849 #, c-format msgid "column \"%s\" has a collation conflict" msgstr "la columna «%s» tiene conflicto de ordenamientos (collation)" -#: commands/tablecmds.c:1860 +#: commands/tablecmds.c:1861 #, c-format msgid "column \"%s\" has a storage parameter conflict" msgstr "la columna «%s» tiene conflicto de parámetros de almacenamiento" -#: commands/tablecmds.c:1912 +#: commands/tablecmds.c:1913 #, c-format msgid "column \"%s\" inherits conflicting default values" msgstr "la columna «%s» hereda valores por omisión no coincidentes" -#: commands/tablecmds.c:1914 +#: commands/tablecmds.c:1915 #, c-format msgid "To resolve the conflict, specify a default explicitly." msgstr "Para resolver el conflicto, indique explícitamente un valor por omisión." -#: commands/tablecmds.c:1961 +#: commands/tablecmds.c:1962 #, c-format msgid "check constraint name \"%s\" appears multiple times but with different expressions" msgstr "la restricción «check» «%s» aparece más de una vez con diferentes expresiones" -#: commands/tablecmds.c:2155 +#: commands/tablecmds.c:2156 #, c-format msgid "cannot rename column of typed table" msgstr "no se puede cambiar el nombre a una columna de una tabla tipada" -#: commands/tablecmds.c:2172 +#: commands/tablecmds.c:2173 #, c-format msgid "\"%s\" is not a table, view, materialized view, composite type, index, or foreign table" msgstr "«%s» no es una tabla, vista, vista materializada, tipo compuesto, índice o tabla foránea" -#: commands/tablecmds.c:2266 +#: commands/tablecmds.c:2267 #, c-format msgid "inherited column \"%s\" must be renamed in child tables too" msgstr "debe cambiar el nombre a la columna heredada «%s» en las tablas hijas también" -#: commands/tablecmds.c:2298 +#: commands/tablecmds.c:2299 #, c-format msgid "cannot rename system column \"%s\"" msgstr "no se puede cambiar el nombre a la columna de sistema «%s»" -#: commands/tablecmds.c:2313 +#: commands/tablecmds.c:2314 #, c-format msgid "cannot rename inherited column \"%s\"" msgstr "no se puede cambiar el nombre a la columna heredada «%s»" -#: commands/tablecmds.c:2468 +#: commands/tablecmds.c:2469 #, c-format msgid "inherited constraint \"%s\" must be renamed in child tables too" msgstr "debe cambiar el nombre a la restricción heredada «%s» en las tablas hijas también" -#: commands/tablecmds.c:2475 +#: commands/tablecmds.c:2476 #, c-format msgid "cannot rename inherited constraint \"%s\"" msgstr "no se puede cambiar el nombre a la restricción heredada «%s»" #. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2701 +#: commands/tablecmds.c:2702 #, c-format msgid "cannot %s \"%s\" because it is being used by active queries in this session" msgstr "no se puede hacer %s en «%s» porque está siendo usada por consultas activas en esta sesión" #. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2710 +#: commands/tablecmds.c:2711 #, c-format msgid "cannot %s \"%s\" because it has pending trigger events" msgstr "no se puede hacer %s en «%s» porque tiene eventos de disparador pendientes" -#: commands/tablecmds.c:3784 +#: commands/tablecmds.c:3785 #, c-format msgid "cannot rewrite system relation \"%s\"" msgstr "no se puede reescribir la relación de sistema «%s»" -#: commands/tablecmds.c:3790 +#: commands/tablecmds.c:3791 #, c-format msgid "cannot rewrite table \"%s\" used as a catalog table" msgstr "no se puede reescribir la tabla «%s» que es usada como tabla de catálogo" -#: commands/tablecmds.c:3800 +#: commands/tablecmds.c:3801 #, c-format msgid "cannot rewrite temporary tables of other sessions" msgstr "no se puede reescribir tablas temporales de otras sesiones" -#: commands/tablecmds.c:4068 +#: commands/tablecmds.c:4069 #, c-format msgid "rewriting table \"%s\"" msgstr "reescribiendo tabla «%s»" -#: commands/tablecmds.c:4072 +#: commands/tablecmds.c:4073 #, c-format msgid "verifying table \"%s\"" msgstr "verificando tabla «%s»" -#: commands/tablecmds.c:4186 +#: commands/tablecmds.c:4187 #, c-format msgid "column \"%s\" contains null values" msgstr "la columna «%s» contiene valores nulos" -#: commands/tablecmds.c:4201 commands/tablecmds.c:7366 +#: commands/tablecmds.c:4202 commands/tablecmds.c:7399 #, c-format msgid "check constraint \"%s\" is violated by some row" msgstr "la restricción «check» «%s» es violada por alguna fila" -#: commands/tablecmds.c:4349 commands/trigger.c:235 -#: rewrite/rewriteDefine.c:267 rewrite/rewriteDefine.c:912 +#: commands/tablecmds.c:4350 commands/trigger.c:235 rewrite/rewriteDefine.c:267 +#: rewrite/rewriteDefine.c:912 #, c-format msgid "\"%s\" is not a table or view" msgstr "«%s» no es una tabla o vista" -#: commands/tablecmds.c:4352 commands/trigger.c:1119 commands/trigger.c:1224 +#: commands/tablecmds.c:4353 commands/trigger.c:1119 commands/trigger.c:1224 #, c-format msgid "\"%s\" is not a table, view, or foreign table" msgstr "«%s» no es una tabla, vista o tabla foránea" -#: commands/tablecmds.c:4355 +#: commands/tablecmds.c:4356 #, c-format msgid "\"%s\" is not a table, view, materialized view, or index" msgstr "«%s» no es una tabla, vista, vista materializada, o índice" -#: commands/tablecmds.c:4361 +#: commands/tablecmds.c:4362 #, c-format msgid "\"%s\" is not a table, materialized view, or index" msgstr "«%s» no es una tabla, vista materializada, o índice" -#: commands/tablecmds.c:4364 -#, fuzzy, c-format -#| msgid "\"%s\" is not a table, materialized view, index, or foreign table" +#: commands/tablecmds.c:4365 +#, c-format msgid "\"%s\" is not a table, materialized view, or foreign table" -msgstr "«%s» no es una tabla, vista materializada, índice o tabla foránea" +msgstr "«%s» no es una tabla, vista materializada o tabla foránea" -#: commands/tablecmds.c:4367 +#: commands/tablecmds.c:4368 #, c-format msgid "\"%s\" is not a table or foreign table" msgstr "«%s» no es una tabla o tabla foránea" -#: commands/tablecmds.c:4370 +#: commands/tablecmds.c:4371 #, c-format msgid "\"%s\" is not a table, composite type, or foreign table" msgstr "«%s» no es una tabla, tipo compuesto, o tabla foránea" -#: commands/tablecmds.c:4373 commands/tablecmds.c:5425 +#: commands/tablecmds.c:4374 commands/tablecmds.c:5439 #, c-format msgid "\"%s\" is not a table, materialized view, index, or foreign table" msgstr "«%s» no es una tabla, vista materializada, índice o tabla foránea" -#: commands/tablecmds.c:4383 +#: commands/tablecmds.c:4384 #, c-format msgid "\"%s\" is of the wrong type" msgstr "«%s» es tipo equivocado" -#: commands/tablecmds.c:4535 commands/tablecmds.c:4542 +#: commands/tablecmds.c:4557 commands/tablecmds.c:4564 #, c-format msgid "cannot alter type \"%s\" because column \"%s.%s\" uses it" msgstr "no se puede alterar el tipo «%s» porque la columna «%s.%s» lo usa" -#: commands/tablecmds.c:4549 +#: commands/tablecmds.c:4571 #, c-format msgid "cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type" msgstr "no se puede alterar la tabla foránea «%s» porque la columna «%s.%s» usa su tipo de registro" -#: commands/tablecmds.c:4556 +#: commands/tablecmds.c:4578 #, c-format msgid "cannot alter table \"%s\" because column \"%s.%s\" uses its row type" msgstr "no se puede alterar la tabla «%s» porque la columna «%s.%s» usa su tipo de registro" -#: commands/tablecmds.c:4618 +#: commands/tablecmds.c:4632 #, c-format msgid "cannot alter type \"%s\" because it is the type of a typed table" msgstr "no se puede cambiar el tipo «%s» porque es el tipo de una tabla tipada" -#: commands/tablecmds.c:4620 +#: commands/tablecmds.c:4634 #, c-format msgid "Use ALTER ... CASCADE to alter the typed tables too." msgstr "Use ALTER ... CASCADE para eliminar además las tablas tipadas." -#: commands/tablecmds.c:4664 +#: commands/tablecmds.c:4678 #, c-format msgid "type %s is not a composite type" msgstr "el tipo %s no es un tipo compuesto" -#: commands/tablecmds.c:4690 +#: commands/tablecmds.c:4704 #, c-format msgid "cannot add column to typed table" msgstr "no se puede agregar una columna a una tabla tipada" -#: commands/tablecmds.c:4758 commands/tablecmds.c:10254 +#: commands/tablecmds.c:4772 commands/tablecmds.c:10365 #, c-format msgid "child table \"%s\" has different type for column \"%s\"" msgstr "la tabla hija «%s» tiene un tipo diferente para la columna «%s»" -#: commands/tablecmds.c:4764 commands/tablecmds.c:10261 +#: commands/tablecmds.c:4778 commands/tablecmds.c:10372 #, c-format msgid "child table \"%s\" has different collation for column \"%s\"" msgstr "la tabla hija «%s» tiene un ordenamiento (collation) diferente para la columna «%s»" -#: commands/tablecmds.c:4774 +#: commands/tablecmds.c:4788 #, c-format msgid "child table \"%s\" has a conflicting \"%s\" column" msgstr "tabla hija «%s» tiene una columna «%s» que entra en conflicto" -#: commands/tablecmds.c:4786 +#: commands/tablecmds.c:4800 #, c-format msgid "merging definition of column \"%s\" for child \"%s\"" msgstr "mezclando la definición de la columna «%s» en la tabla hija «%s»" -#: commands/tablecmds.c:5013 +#: commands/tablecmds.c:5027 #, c-format msgid "column must be added to child tables too" msgstr "la columna debe ser agregada a las tablas hijas también" -#: commands/tablecmds.c:5088 -#, fuzzy, c-format -#| msgid "column \"%s\" of relation \"%s\" already exists" +#: commands/tablecmds.c:5102 +#, c-format msgid "column \"%s\" of relation \"%s\" already exists, skipping" -msgstr "ya existe la columna «%s» en la relación «%s»" +msgstr "la columna «%s» de la relación «%s» ya existe, ignorando" -#: commands/tablecmds.c:5095 +#: commands/tablecmds.c:5109 #, c-format msgid "column \"%s\" of relation \"%s\" already exists" -msgstr "ya existe la columna «%s» en la relación «%s»" +msgstr "la columna «%s» en la relación «%s» ya existe" -#: commands/tablecmds.c:5206 commands/tablecmds.c:5312 -#: commands/tablecmds.c:5370 commands/tablecmds.c:5484 -#: commands/tablecmds.c:5541 commands/tablecmds.c:5635 -#: commands/tablecmds.c:7884 commands/tablecmds.c:8509 +#: commands/tablecmds.c:5220 commands/tablecmds.c:5326 +#: commands/tablecmds.c:5384 commands/tablecmds.c:5498 +#: commands/tablecmds.c:5555 commands/tablecmds.c:5649 +#: commands/tablecmds.c:7938 commands/tablecmds.c:8620 #, c-format msgid "cannot alter system column \"%s\"" msgstr "no se puede alterar columna de sistema «%s»" -#: commands/tablecmds.c:5242 +#: commands/tablecmds.c:5256 #, c-format msgid "column \"%s\" is in a primary key" msgstr "la columna «%s» está en la llave primaria" -#: commands/tablecmds.c:5457 +#: commands/tablecmds.c:5471 #, c-format msgid "statistics target %d is too low" msgstr "el valor de estadísticas %d es demasiado bajo" -#: commands/tablecmds.c:5465 +#: commands/tablecmds.c:5479 #, c-format msgid "lowering statistics target to %d" msgstr "bajando el valor de estadísticas a %d" -#: commands/tablecmds.c:5615 +#: commands/tablecmds.c:5629 #, c-format msgid "invalid storage type \"%s\"" msgstr "tipo de almacenamiento no válido «%s»" -#: commands/tablecmds.c:5647 +#: commands/tablecmds.c:5661 #, c-format msgid "column data type %s can only have storage PLAIN" msgstr "el tipo de datos %s de la columna sólo puede tener almacenamiento PLAIN" -#: commands/tablecmds.c:5685 +#: commands/tablecmds.c:5699 #, c-format msgid "cannot drop column from typed table" msgstr "no se pueden eliminar columnas de una tabla tipada" -#: commands/tablecmds.c:5729 +#: commands/tablecmds.c:5743 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist, skipping" msgstr "no existe la columna «%s» en la relación «%s», ignorando" -#: commands/tablecmds.c:5742 +#: commands/tablecmds.c:5756 #, c-format msgid "cannot drop system column \"%s\"" msgstr "no se puede eliminar la columna de sistema «%s»" -#: commands/tablecmds.c:5749 +#: commands/tablecmds.c:5763 #, c-format msgid "cannot drop inherited column \"%s\"" msgstr "no se puede eliminar la columna heredada «%s»" -#: commands/tablecmds.c:5989 +#: commands/tablecmds.c:6003 #, c-format msgid "ALTER TABLE / ADD CONSTRAINT USING INDEX will rename index \"%s\" to \"%s\"" msgstr "ALTER TABLE / ADD CONSTRAINT USING INDEX renombrará el índice «%s» a «%s»" -#: commands/tablecmds.c:6202 +#: commands/tablecmds.c:6216 #, c-format msgid "constraint must be added to child tables too" msgstr "la restricción debe ser agregada a las tablas hijas también" -#: commands/tablecmds.c:6273 +#: commands/tablecmds.c:6287 #, c-format msgid "referenced relation \"%s\" is not a table" msgstr "la relación referida «%s» no es una tabla" -#: commands/tablecmds.c:6296 +#: commands/tablecmds.c:6310 #, c-format msgid "constraints on permanent tables may reference only permanent tables" msgstr "las restricciones en tablas permanentes sólo pueden hacer referencia a tablas permanentes" -#: commands/tablecmds.c:6303 +#: commands/tablecmds.c:6317 #, c-format msgid "constraints on unlogged tables may reference only permanent or unlogged tables" msgstr "las restricciones en tablas unlogged sólo pueden hacer referencia a tablas permanentes o unlogged" -#: commands/tablecmds.c:6309 +#: commands/tablecmds.c:6323 #, c-format msgid "constraints on temporary tables may reference only temporary tables" msgstr "las restricciones en tablas temporales sólo pueden hacer referencia a tablas temporales" -#: commands/tablecmds.c:6313 +#: commands/tablecmds.c:6327 #, c-format msgid "constraints on temporary tables must involve temporary tables of this session" msgstr "las restricciones en tablas temporales sólo pueden hacer referencia a tablas temporales de esta sesión" -#: commands/tablecmds.c:6374 +#: commands/tablecmds.c:6388 #, c-format msgid "number of referencing and referenced columns for foreign key disagree" msgstr "el número de columnas referidas en la llave foránea no coincide con el número de columnas de referencia" -#: commands/tablecmds.c:6481 +#: commands/tablecmds.c:6495 #, c-format msgid "foreign key constraint \"%s\" cannot be implemented" msgstr "la restricción de llave foránea «%s» no puede ser implementada" -#: commands/tablecmds.c:6484 +#: commands/tablecmds.c:6498 #, c-format msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s." msgstr "Las columnas llave «%s» y «%s» son de tipos incompatibles: %s y %s" -#: commands/tablecmds.c:6691 commands/tablecmds.c:6841 -#: commands/tablecmds.c:7723 commands/tablecmds.c:7779 +#: commands/tablecmds.c:6705 commands/tablecmds.c:6873 +#: commands/tablecmds.c:7777 commands/tablecmds.c:7833 #, c-format msgid "constraint \"%s\" of relation \"%s\" does not exist" msgstr "no existe la restricción «%s» en la relación «%s»" -#: commands/tablecmds.c:6697 +#: commands/tablecmds.c:6711 #, c-format msgid "constraint \"%s\" of relation \"%s\" is not a foreign key constraint" msgstr "la restricción «%s» de la relación «%s» no es una restriccion de llave foránea" -#: commands/tablecmds.c:6848 +#: commands/tablecmds.c:6880 #, c-format msgid "constraint \"%s\" of relation \"%s\" is not a foreign key or check constraint" msgstr "la restricción «%s» de la relación «%s» no es una llave foránea o restricción «check»" -#: commands/tablecmds.c:6916 +#: commands/tablecmds.c:6949 #, c-format msgid "constraint must be validated on child tables too" msgstr "la restricción debe ser validada en las tablas hijas también" -#: commands/tablecmds.c:6985 +#: commands/tablecmds.c:7018 #, c-format msgid "column \"%s\" referenced in foreign key constraint does not exist" msgstr "no existe la columna «%s» referida en la llave foránea" -#: commands/tablecmds.c:6990 +#: commands/tablecmds.c:7023 #, c-format msgid "cannot have more than %d keys in a foreign key" msgstr "no se puede tener más de %d columnas en una llave foránea" -#: commands/tablecmds.c:7055 +#: commands/tablecmds.c:7088 #, c-format msgid "cannot use a deferrable primary key for referenced table \"%s\"" msgstr "no se puede usar una llave primaria postergable para la tabla referenciada «%s»" -#: commands/tablecmds.c:7072 +#: commands/tablecmds.c:7105 #, c-format msgid "there is no primary key for referenced table \"%s\"" msgstr "no hay llave primaria para la tabla referida «%s»" -#: commands/tablecmds.c:7137 +#: commands/tablecmds.c:7170 #, c-format msgid "foreign key referenced-columns list must not contain duplicates" msgstr "la lista de columnas referidas en una llave foránea no debe contener duplicados" -#: commands/tablecmds.c:7231 +#: commands/tablecmds.c:7264 #, c-format msgid "cannot use a deferrable unique constraint for referenced table \"%s\"" msgstr "no se puede usar una restricción unique postergable para la tabla referenciada «%s»" -#: commands/tablecmds.c:7236 +#: commands/tablecmds.c:7269 #, c-format msgid "there is no unique constraint matching given keys for referenced table \"%s\"" msgstr "no hay restricción unique que coincida con las columnas dadas en la tabla referida «%s»" -#: commands/tablecmds.c:7399 +#: commands/tablecmds.c:7432 #, c-format msgid "validating foreign key constraint \"%s\"" msgstr "validando restricción de llave foránea «%s»" -#: commands/tablecmds.c:7695 +#: commands/tablecmds.c:7731 #, c-format msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" msgstr "no se puede eliminar la restricción «%s» heredada de la relación «%s»" -#: commands/tablecmds.c:7729 +#: commands/tablecmds.c:7783 #, c-format msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" -msgstr "no existe la restricción «%s» en la relación «%s», ignorando" +msgstr "la restricción «%s» en la relación «%s» no existe, ignorando" -#: commands/tablecmds.c:7868 +#: commands/tablecmds.c:7922 #, c-format msgid "cannot alter column type of typed table" msgstr "no se puede cambiar el tipo de una columna de una tabla tipada" -#: commands/tablecmds.c:7891 +#: commands/tablecmds.c:7945 #, c-format msgid "cannot alter inherited column \"%s\"" msgstr "no se puede alterar la columna heredada «%s»" -#: commands/tablecmds.c:7940 +#: commands/tablecmds.c:7994 #, c-format msgid "result of USING clause for column \"%s\" cannot be cast automatically to type %s" msgstr "el resultado de la cláusula USING para la columna «%s» no puede ser convertido automáticamente al tipo %s" -#: commands/tablecmds.c:7943 +#: commands/tablecmds.c:7997 #, c-format msgid "You might need to add an explicit cast." msgstr "Puede ser necesario agregar un cast explícito." -#: commands/tablecmds.c:7947 +#: commands/tablecmds.c:8001 #, c-format msgid "column \"%s\" cannot be cast automatically to type %s" msgstr "la columna «%s» no puede convertirse automáticamente al tipo %s" #. translator: USING is SQL, don't translate it -#: commands/tablecmds.c:7950 +#: commands/tablecmds.c:8004 #, c-format msgid "You might need to specify \"USING %s::%s\"." msgstr "Puede ser necesario especificar «USING %s::%s»." -#: commands/tablecmds.c:8003 +#: commands/tablecmds.c:8103 +#, c-format +msgid "USING expression contains a whole-row table reference." +msgstr "La expresión USING contiene una referencia a la fila completa (whole-row)." + +#: commands/tablecmds.c:8114 #, c-format msgid "type of inherited column \"%s\" must be changed in child tables too" msgstr "debe cambiar el tipo a la columna heredada «%s» en las tablas hijas también" -#: commands/tablecmds.c:8090 +#: commands/tablecmds.c:8201 #, c-format msgid "cannot alter type of column \"%s\" twice" msgstr "no se puede alterar el tipo de la columna «%s» dos veces" -#: commands/tablecmds.c:8126 +#: commands/tablecmds.c:8237 #, c-format msgid "default for column \"%s\" cannot be cast automatically to type %s" msgstr "el valor por omisión para la columna «%s» no puede ser convertido automáticamente al tipo %s" -#: commands/tablecmds.c:8252 +#: commands/tablecmds.c:8363 #, c-format msgid "cannot alter type of a column used by a view or rule" msgstr "no se puede alterar el tipo de una columna usada en una regla o vista" -#: commands/tablecmds.c:8253 commands/tablecmds.c:8272 -#: commands/tablecmds.c:8290 +#: commands/tablecmds.c:8364 commands/tablecmds.c:8383 +#: commands/tablecmds.c:8401 #, c-format msgid "%s depends on column \"%s\"" msgstr "%s depende de la columna «%s»" -#: commands/tablecmds.c:8271 +#: commands/tablecmds.c:8382 #, c-format msgid "cannot alter type of a column used in a trigger definition" msgstr "no se puede alterar el tipo de una columna usada en una definición de trigger" -#: commands/tablecmds.c:8289 -#, fuzzy, c-format +#: commands/tablecmds.c:8400 +#, c-format msgid "cannot alter type of a column used in a policy definition" -msgstr "no se puede alterar el tipo de una columna usada en una definición de trigger" +msgstr "no se puede alterar el tipo de una columna usada en una definición de política" -#: commands/tablecmds.c:8954 +#: commands/tablecmds.c:9065 #, c-format msgid "cannot change owner of index \"%s\"" msgstr "no se puede cambiar el dueño del índice «%s»" -#: commands/tablecmds.c:8956 +#: commands/tablecmds.c:9067 #, c-format msgid "Change the ownership of the index's table, instead." msgstr "Considere cambiar el dueño de la tabla en vez de cambiar el dueño del índice." -#: commands/tablecmds.c:8972 +#: commands/tablecmds.c:9083 #, c-format msgid "cannot change owner of sequence \"%s\"" msgstr "no se puede cambiar el dueño de la secuencia «%s»" -#: commands/tablecmds.c:8974 commands/tablecmds.c:11396 +#: commands/tablecmds.c:9085 commands/tablecmds.c:11557 #, c-format msgid "Sequence \"%s\" is linked to table \"%s\"." msgstr "La secuencia «%s» está enlazada a la tabla «%s»." -#: commands/tablecmds.c:8986 commands/tablecmds.c:12043 +#: commands/tablecmds.c:9097 commands/tablecmds.c:12204 #, c-format msgid "Use ALTER TYPE instead." msgstr "Considere usar ALTER TYPE." -#: commands/tablecmds.c:8995 +#: commands/tablecmds.c:9106 #, c-format msgid "\"%s\" is not a table, view, sequence, or foreign table" msgstr "«%s» no es una tabla, vista, secuencia o tabla foránea" -#: commands/tablecmds.c:9338 +#: commands/tablecmds.c:9449 #, c-format msgid "cannot have multiple SET TABLESPACE subcommands" msgstr "no se pueden tener múltiples subórdenes SET TABLESPACE" -#: commands/tablecmds.c:9411 +#: commands/tablecmds.c:9522 #, c-format msgid "\"%s\" is not a table, view, materialized view, index, or TOAST table" msgstr "«%s» no es una tabla, vista, tabla materializada, índice o tabla TOAST" -#: commands/tablecmds.c:9444 commands/view.c:469 +#: commands/tablecmds.c:9555 commands/view.c:498 #, c-format msgid "WITH CHECK OPTION is supported only on automatically updatable views" msgstr "WITH CHECK OPTION sólo puede usarse en vistas automáticamente actualizables" -#: commands/tablecmds.c:9590 +#: commands/tablecmds.c:9701 #, c-format msgid "cannot move system relation \"%s\"" msgstr "no se puede mover la relación de sistema «%s»" -#: commands/tablecmds.c:9606 +#: commands/tablecmds.c:9717 #, c-format msgid "cannot move temporary tables of other sessions" msgstr "no se pueden mover tablas temporales de otras sesiones" -#: commands/tablecmds.c:9743 +#: commands/tablecmds.c:9854 #, c-format msgid "only tables, indexes, and materialized views exist in tablespaces" msgstr "solamente tablas, índices y vistas materializadas existen en tablespaces" -#: commands/tablecmds.c:9755 +#: commands/tablecmds.c:9866 #, c-format msgid "cannot move relations in to or out of pg_global tablespace" msgstr "no se puede mover objetos hacia o desde el tablespace pg_global" -#: commands/tablecmds.c:9846 -#, fuzzy, c-format -#| msgid "aborting because lock on relation \"%s\".\"%s\" is not available" +#: commands/tablecmds.c:9957 +#, c-format msgid "aborting because lock on relation \"%s.%s\" is not available" -msgstr "cancelando porque el candado en la relación «%s».«%s» no está disponible" +msgstr "cancelando porque el lock en la relación «%s.%s» no está disponible" -#: commands/tablecmds.c:9862 +#: commands/tablecmds.c:9973 #, c-format msgid "no matching relations in tablespace \"%s\" found" msgstr "no se encontraron relaciones coincidentes en el tablespace «%s»" -#: commands/tablecmds.c:9936 storage/buffer/bufmgr.c:915 +#: commands/tablecmds.c:10047 storage/buffer/bufmgr.c:915 #, c-format msgid "invalid page in block %u of relation %s" msgstr "la página no es válida en el bloque %u de la relación %s" -#: commands/tablecmds.c:10018 +#: commands/tablecmds.c:10129 #, c-format msgid "cannot change inheritance of typed table" msgstr "no se puede cambiar la herencia de una tabla tipada" -#: commands/tablecmds.c:10068 +#: commands/tablecmds.c:10179 #, c-format msgid "cannot inherit to temporary relation of another session" msgstr "no se puede agregar herencia a tablas temporales de otra sesión" -#: commands/tablecmds.c:10122 +#: commands/tablecmds.c:10233 #, c-format msgid "circular inheritance not allowed" msgstr "la herencia circular no está permitida" -#: commands/tablecmds.c:10123 +#: commands/tablecmds.c:10234 #, c-format msgid "\"%s\" is already a child of \"%s\"." msgstr "«%s» ya es un hijo de «%s»." -#: commands/tablecmds.c:10131 +#: commands/tablecmds.c:10242 #, c-format msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs" msgstr "tabla «%s» sin OIDs no puede heredar de tabla «%s» con OIDs" -#: commands/tablecmds.c:10272 +#: commands/tablecmds.c:10383 #, c-format msgid "column \"%s\" in child table must be marked NOT NULL" msgstr "columna «%s» en tabla hija debe marcarse como NOT NULL" -#: commands/tablecmds.c:10288 +#: commands/tablecmds.c:10399 commands/tablecmds.c:10432 #, c-format msgid "child table is missing column \"%s\"" msgstr "tabla hija no tiene la columna «%s»" -#: commands/tablecmds.c:10371 +#: commands/tablecmds.c:10515 #, c-format msgid "child table \"%s\" has different definition for check constraint \"%s\"" msgstr "la tabla hija «%s» tiene una definición diferente para la restricción «check» «%s»" -#: commands/tablecmds.c:10379 +#: commands/tablecmds.c:10523 #, c-format msgid "constraint \"%s\" conflicts with non-inherited constraint on child table \"%s\"" msgstr "la restricción «%s» está en conflicto con la restricción no heredada en la tabla hija «%s»" -#: commands/tablecmds.c:10403 +#: commands/tablecmds.c:10534 +#, c-format +msgid "constraint \"%s\" conflicts with NOT VALID constraint on child table \"%s\"" +msgstr "la restricción «%s» está en conflicto con la restricción NOT VALID en la tabla hija «%s»" + +#: commands/tablecmds.c:10558 #, c-format msgid "child table is missing constraint \"%s\"" msgstr "tabla hija no tiene la restricción «%s»" -#: commands/tablecmds.c:10487 +#: commands/tablecmds.c:10642 #, c-format msgid "relation \"%s\" is not a parent of relation \"%s\"" msgstr "relación «%s» no es un padre de la relación «%s»" -#: commands/tablecmds.c:10721 +#: commands/tablecmds.c:10876 #, c-format msgid "typed tables cannot inherit" msgstr "las tablas tipadas no pueden heredar" -#: commands/tablecmds.c:10752 +#: commands/tablecmds.c:10907 #, c-format msgid "table is missing column \"%s\"" msgstr "la tabla no tiene la columna «%s»" -#: commands/tablecmds.c:10762 +#: commands/tablecmds.c:10917 #, c-format msgid "table has column \"%s\" where type requires \"%s\"" msgstr "la tabla tiene columna «%s» en la posición en que el tipo requiere «%s»." -#: commands/tablecmds.c:10771 +#: commands/tablecmds.c:10926 #, c-format msgid "table \"%s\" has different type for column \"%s\"" msgstr "la tabla «%s» tiene un tipo diferente para la columna «%s»" -#: commands/tablecmds.c:10784 +#: commands/tablecmds.c:10939 #, c-format msgid "table has extra column \"%s\"" msgstr "tabla tiene la columna extra «%s»" -#: commands/tablecmds.c:10836 +#: commands/tablecmds.c:10991 #, c-format msgid "\"%s\" is not a typed table" msgstr "«%s» no es una tabla tipada" -#: commands/tablecmds.c:11020 +#: commands/tablecmds.c:11175 #, c-format msgid "cannot use non-unique index \"%s\" as replica identity" msgstr "no se puede usar el índice no-único «%s» como identidad de réplica" -#: commands/tablecmds.c:11026 +#: commands/tablecmds.c:11181 #, c-format msgid "cannot use non-immediate index \"%s\" as replica identity" msgstr "no puede usar el índice no-inmediato «%s» como identidad de réplica" -#: commands/tablecmds.c:11032 +#: commands/tablecmds.c:11187 #, c-format msgid "cannot use expression index \"%s\" as replica identity" msgstr "no se puede usar el índice funcional «%s» como identidad de réplica" -#: commands/tablecmds.c:11038 +#: commands/tablecmds.c:11193 #, c-format msgid "cannot use partial index \"%s\" as replica identity" msgstr "no se puede usar el índice parcial «%s» como identidad de réplica" -#: commands/tablecmds.c:11044 +#: commands/tablecmds.c:11199 #, c-format msgid "cannot use invalid index \"%s\" as replica identity" msgstr "no se puede usar el índice no válido «%s» como identidad de réplica" -#: commands/tablecmds.c:11065 -#, fuzzy, c-format -#| msgid "index \"%s\" cannot be used as replica identity because column \"%s\" is nullable" +#: commands/tablecmds.c:11220 +#, c-format msgid "index \"%s\" cannot be used as replica identity because column %d is a system column" -msgstr "el índice «%s» no puede usarse como identidad de réplica porque la column «%s» acepta valores nulos" +msgstr "el índice «%s» no puede usarse como identidad de réplica porque la column %d es una columna de sistema" -#: commands/tablecmds.c:11072 +#: commands/tablecmds.c:11227 #, c-format msgid "index \"%s\" cannot be used as replica identity because column \"%s\" is nullable" msgstr "el índice «%s» no puede usarse como identidad de réplica porque la column «%s» acepta valores nulos" -#: commands/tablecmds.c:11269 -#, fuzzy, c-format +#: commands/tablecmds.c:11430 +#, c-format msgid "cannot change logged status of table \"%s\" because it is temporary" -msgstr "no se puede cambiar el dueño del índice «%s»" +msgstr "no se puede cambiar el estado «logged» de la tabla «%s» porque es temporal" -#: commands/tablecmds.c:11328 -#, fuzzy, c-format -#| msgid "could not convert table \"%s\" to a view because it has child tables" +#: commands/tablecmds.c:11489 +#, c-format msgid "could not change table \"%s\" to logged because it references unlogged table \"%s\"" -msgstr "no se pudo convertir la tabla «%s» en vista porque tiene tablas hijas" +msgstr "no se pudo cambiar la tabla «%s» a «logged» porque hace referencia a la tabla «unlogged» «%s»" -#: commands/tablecmds.c:11338 -#, fuzzy, c-format -#| msgid "could not convert table \"%s\" to a view because it has child tables" +#: commands/tablecmds.c:11499 +#, c-format msgid "could not change table \"%s\" to unlogged because it references logged table \"%s\"" -msgstr "no se pudo convertir la tabla «%s» en vista porque tiene tablas hijas" +msgstr "no se pudo cambiar la tabla «%s» a «unlogged» porque hace referencia a la tabla «logged» «%s»" -#: commands/tablecmds.c:11395 +#: commands/tablecmds.c:11556 #, c-format msgid "cannot move an owned sequence into another schema" msgstr "no se puede mover una secuencia enlazada a una tabla hacia otro esquema" -#: commands/tablecmds.c:11500 +#: commands/tablecmds.c:11661 #, c-format msgid "relation \"%s\" already exists in schema \"%s\"" -msgstr "ya existe una relación llamada «%s» en el esquema «%s»" +msgstr "ya relación «%s» ya existe en el esquema «%s»" -#: commands/tablecmds.c:12027 +#: commands/tablecmds.c:12188 #, c-format msgid "\"%s\" is not a composite type" msgstr "«%s» no es un tipo compuesto" -#: commands/tablecmds.c:12057 +#: commands/tablecmds.c:12218 #, c-format msgid "\"%s\" is not a table, view, materialized view, sequence, or foreign table" msgstr "«%s» no es una tabla, vista, vista materializada, secuencia o tabla foránea" #: commands/tablespace.c:162 commands/tablespace.c:179 #: commands/tablespace.c:190 commands/tablespace.c:198 -#: commands/tablespace.c:625 replication/slot.c:980 storage/file/copydir.c:47 +#: commands/tablespace.c:625 replication/slot.c:997 storage/file/copydir.c:47 #, c-format msgid "could not create directory \"%s\": %m" msgstr "no se pudo crear el directorio «%s»: %m" @@ -8701,9 +8456,9 @@ msgid "tablespace location \"%s\" is too long" msgstr "la ruta «%s» del tablespace es demasiado larga" #: commands/tablespace.c:295 -#, fuzzy, c-format +#, c-format msgid "tablespace location should not be inside the data directory" -msgstr "la ubicación del tablespace debe ser una ruta absoluta" +msgstr "la ubicación del tablespace no debe estar dentro del directorio de datos" #: commands/tablespace.c:304 commands/tablespace.c:952 #, c-format @@ -8769,9 +8524,9 @@ msgid "could not remove symbolic link \"%s\": %m" msgstr "no se pudo eliminar el enlace simbólico «%s»: %m" #: commands/tablespace.c:816 commands/tablespace.c:903 -#, fuzzy, c-format +#, c-format msgid "\"%s\" is not a directory or symbolic link" -msgstr "no se pudo leer el enlace simbólico «%s»" +msgstr "«%s» no es un directorio o enlace simbólico" #: commands/tablespace.c:1090 #, c-format @@ -8881,7 +8636,7 @@ msgstr "cambiando el tipo de retorno de la función %s de «opaque» a «trigger #: commands/trigger.c:553 commands/trigger.c:1303 #, c-format msgid "trigger \"%s\" for relation \"%s\" already exists" -msgstr "ya existe un trigger «%s» para la relación «%s»" +msgstr "el trigger «%s» para la relación «%s» ya existe" #: commands/trigger.c:838 msgid "Found referenced table's UPDATE trigger." @@ -8926,22 +8681,21 @@ msgstr "la función de trigger %u ha retornado un valor null" msgid "BEFORE STATEMENT trigger cannot return a value" msgstr "un trigger BEFORE STATEMENT no puede retornar un valor" -#: commands/trigger.c:2726 executor/nodeModifyTable.c:664 -#: executor/nodeModifyTable.c:957 +#: commands/trigger.c:2726 executor/nodeModifyTable.c:679 +#: executor/nodeModifyTable.c:972 #, c-format msgid "tuple to be updated was already modified by an operation triggered by the current command" msgstr "el registro a ser actualizado ya fue modificado por una operación disparada por la orden actual" -#: commands/trigger.c:2727 executor/nodeModifyTable.c:665 -#: executor/nodeModifyTable.c:958 +#: commands/trigger.c:2727 executor/nodeModifyTable.c:680 +#: executor/nodeModifyTable.c:973 #, c-format msgid "Consider using an AFTER trigger instead of a BEFORE trigger to propagate changes to other rows." -msgstr "Considere usar un disparador ANTES en lugar de un disparador BEFORE para propagar cambios a otros registros." +msgstr "Considere usar un disparador AFTER en lugar de un disparador BEFORE para propagar cambios a otros registros." -#: commands/trigger.c:2741 executor/execMain.c:2377 -#: executor/nodeLockRows.c:216 executor/nodeModifyTable.c:200 -#: executor/nodeModifyTable.c:677 executor/nodeModifyTable.c:970 -#: executor/nodeModifyTable.c:1136 +#: commands/trigger.c:2741 executor/execMain.c:2379 executor/nodeLockRows.c:216 +#: executor/nodeModifyTable.c:213 executor/nodeModifyTable.c:692 +#: executor/nodeModifyTable.c:985 executor/nodeModifyTable.c:1151 #, c-format msgid "could not serialize access due to concurrent update" msgstr "no se pudo serializar el acceso debido a un update concurrente" @@ -9097,10 +8851,9 @@ msgid "type modifier output function is useless without a type modifier input fu msgstr "la función de salida de modificadores de tipo es inútil sin una función de entrada de modificadores de tipo" #: commands/typecmds.c:453 commands/typecmds.c:470 -#, fuzzy, c-format -#| msgid "changing return type of function %s from \"opaque\" to %s" +#, c-format msgid "changing return type of function %s from %s to %s" -msgstr "cambiando el tipo de retorno de la función %s de «opaque» a %s" +msgstr "cambiando el tipo de retorno de la función %s de %s a %s" #: commands/typecmds.c:460 #, c-format @@ -9108,51 +8861,49 @@ msgid "type input function %s must return type %s" msgstr "la función de entrada %s del tipo debe retornar %s" #: commands/typecmds.c:477 -#, fuzzy, c-format -#| msgid "type input function %s must return type %s" +#, c-format msgid "type output function %s must return type %s" -msgstr "la función de entrada %s del tipo debe retornar %s" +msgstr "la función de salida %s del tipo debe retornar %s" #: commands/typecmds.c:486 #, c-format msgid "type receive function %s must return type %s" -msgstr "la función de recepción %s del tipo debe retornar %s" +msgstr "la función «receive» %s del tipo debe retornar %s" #: commands/typecmds.c:495 -#, fuzzy, c-format -#| msgid "type input function %s must return type %s" +#, c-format msgid "type send function %s must return type %s" -msgstr "la función de entrada %s del tipo debe retornar %s" +msgstr "la función «send» %s del tipo debe retornar %s" #: commands/typecmds.c:560 -#, fuzzy, c-format +#, c-format msgid "type input function %s should not be volatile" -msgstr "la función de conversión no debe ser volatile" +msgstr "la función de entrada %s no debe ser volatile" #: commands/typecmds.c:565 -#, fuzzy, c-format +#, c-format msgid "type output function %s should not be volatile" -msgstr "la función de conversión no debe ser volatile" +msgstr "la función de salida %s no debe ser volatile" #: commands/typecmds.c:570 -#, fuzzy, c-format +#, c-format msgid "type receive function %s should not be volatile" -msgstr "la función de recepción %s del tipo debe retornar %s" +msgstr "la función «receive» %s del tipo no debe ser volatile" #: commands/typecmds.c:575 -#, fuzzy, c-format +#, c-format msgid "type send function %s should not be volatile" -msgstr "la función de conversión no debe ser volatile" +msgstr "la función «send» %s no debe ser volatile" #: commands/typecmds.c:580 -#, fuzzy, c-format +#, c-format msgid "type modifier input function %s should not be volatile" -msgstr "la función de conversión no debe ser volatile" +msgstr "la función de modificadores de tipo %s no debe ser volatile" #: commands/typecmds.c:585 -#, fuzzy, c-format +#, c-format msgid "type modifier output function %s should not be volatile" -msgstr "la función de salida de modificadores de tipo es inútil sin una función de entrada de modificadores de tipo" +msgstr "la función de salida de modificadores de tipo %s no debe ser volatile" #: commands/typecmds.c:807 #, c-format @@ -9230,22 +8981,19 @@ msgid "changing argument type of function %s from \"opaque\" to %s" msgstr "cambiando el tipo de argumento de la función %s de «opaque» a %s" #: commands/typecmds.c:1837 -#, fuzzy, c-format -#| msgid "type input function %s must return type %s" +#, c-format msgid "typmod_in function %s must return type %s" -msgstr "la función de entrada %s del tipo debe retornar %s" +msgstr "la función typmod_in %s debe retornar tipo %s" #: commands/typecmds.c:1864 -#, fuzzy, c-format -#| msgid "typmod_out function %s must return type \"cstring\"" +#, c-format msgid "typmod_out function %s must return type %s" -msgstr "la función typmod_out %s debe retornar «cstring»" +msgstr "la función typmod_out %s debe retornar tipo %s" #: commands/typecmds.c:1891 -#, fuzzy, c-format -#| msgid "type analyze function %s must return type \"boolean\"" +#, c-format msgid "type analyze function %s must return type %s" -msgstr "la función de análisis %s del tipo debe retornar «boolean»" +msgstr "la función de análisis %s del tipo debe retornar %s" #: commands/typecmds.c:1937 #, c-format @@ -9263,10 +9011,9 @@ msgid "range canonical function %s must be immutable" msgstr "la función canónica %s del rango debe ser inmutable" #: commands/typecmds.c:2010 -#, fuzzy, c-format -#| msgid "range subtype diff function %s must return type double precision" +#, c-format msgid "range subtype diff function %s must return type %s" -msgstr "la función «diff» de subtipo, %s, debe retornar tipo doble precisión" +msgstr "la función «diff» de subtipo, %s, debe retornar tipo %s" #: commands/typecmds.c:2017 #, c-format @@ -9274,9 +9021,9 @@ msgid "range subtype diff function %s must be immutable" msgstr "la función «diff» de subtipo, %s, debe ser inmutable" #: commands/typecmds.c:2044 -#, fuzzy, c-format +#, c-format msgid "pg_type array OID value not set when in binary upgrade mode" -msgstr "debe ser superusuario para conectarse en modo de actualización binaria" +msgstr "el valor de OID de pg_type no se definió en modo de actualización binaria" #: commands/typecmds.c:2348 #, c-format @@ -9291,7 +9038,7 @@ msgstr "no existe la restricción «%s» en el dominio «%s»" #: commands/typecmds.c:2467 #, c-format msgid "constraint \"%s\" of domain \"%s\" does not exist, skipping" -msgstr "no existe la restricción «%s» en el dominio «%s», ignorando" +msgstr "la restricción «%s» en el dominio «%s» no existe, ignorando" #: commands/typecmds.c:2652 #, c-format @@ -9303,45 +9050,45 @@ msgstr "la restricción «%s» en el dominio «%s» no es una restricción «che msgid "column \"%s\" of table \"%s\" contains values that violate the new constraint" msgstr "la columna «%s» de la relación «%s» contiene valores que violan la nueva restricción" -#: commands/typecmds.c:2971 commands/typecmds.c:3228 commands/typecmds.c:3417 +#: commands/typecmds.c:2986 commands/typecmds.c:3243 commands/typecmds.c:3432 #, c-format msgid "%s is not a domain" msgstr "%s no es un dominio" -#: commands/typecmds.c:3005 +#: commands/typecmds.c:3020 #, c-format msgid "constraint \"%s\" for domain \"%s\" already exists" -msgstr "el dominio «%2$s» ya contiene una restricción llamada «%1$s»" +msgstr "la restricción «%s» para el dominio «%s» ya existe" -#: commands/typecmds.c:3055 +#: commands/typecmds.c:3070 #, c-format msgid "cannot use table references in domain check constraint" msgstr "no se pueden usar referencias a tablas en restricción «check» para un dominio" -#: commands/typecmds.c:3158 commands/typecmds.c:3240 commands/typecmds.c:3534 +#: commands/typecmds.c:3173 commands/typecmds.c:3255 commands/typecmds.c:3549 #, c-format msgid "%s is a table's row type" msgstr "%s es el tipo de registro de una tabla" -#: commands/typecmds.c:3160 commands/typecmds.c:3242 commands/typecmds.c:3536 +#: commands/typecmds.c:3175 commands/typecmds.c:3257 commands/typecmds.c:3551 #, c-format msgid "Use ALTER TABLE instead." msgstr "Considere usar ALTER TABLE." -#: commands/typecmds.c:3167 commands/typecmds.c:3249 commands/typecmds.c:3449 +#: commands/typecmds.c:3182 commands/typecmds.c:3264 commands/typecmds.c:3464 #, c-format msgid "cannot alter array type %s" msgstr "no se puede alterar el tipo de array «%s»" -#: commands/typecmds.c:3169 commands/typecmds.c:3251 commands/typecmds.c:3451 +#: commands/typecmds.c:3184 commands/typecmds.c:3266 commands/typecmds.c:3466 #, c-format msgid "You can alter type %s, which will alter the array type as well." msgstr "Puede alterar el tipo %s, lo cual alterará el tipo de array también." -#: commands/typecmds.c:3519 +#: commands/typecmds.c:3534 #, c-format msgid "type \"%s\" already exists in schema \"%s\"" -msgstr "ya existe un tipo llamado «%s» en el esquema «%s»" +msgstr "el tipo «%s» ya existe en el esquema «%s»" #: commands/user.c:149 #, c-format @@ -9359,26 +9106,25 @@ msgid "must be superuser to create replication users" msgstr "debe ser superusuario para crear usuarios de replicación" #: commands/user.c:305 commands/user.c:693 -#, fuzzy, c-format +#, c-format msgid "must be superuser to change bypassrls attribute" -msgstr "debe ser superusuario para crear un tipo base" +msgstr "debe ser superusuario para cambiar el atributo bypassrls" #: commands/user.c:312 #, c-format msgid "permission denied to create role" msgstr "se ha denegado el permiso para crear el rol" -#: commands/user.c:322 commands/user.c:1176 commands/user.c:1183 gram.y:13606 -#: gram.y:13641 utils/adt/acl.c:5279 utils/adt/acl.c:5285 +#: commands/user.c:322 commands/user.c:1176 commands/user.c:1183 +#: utils/adt/acl.c:5279 utils/adt/acl.c:5285 gram.y:13628 gram.y:13663 #, c-format msgid "role name \"%s\" is reserved" msgstr "el nombre de rol «%s» está reservado" #: commands/user.c:324 commands/user.c:1178 commands/user.c:1185 -#, fuzzy, c-format -#| msgid "role name \"%s\" is reserved" +#, c-format msgid "Role names starting with \"pg_\" are reserved." -msgstr "el nombre de rol «%s» está reservado" +msgstr "Los nombres de rol que empiezan con «pg_» están reservados." #: commands/user.c:336 commands/user.c:1191 #, c-format @@ -9386,9 +9132,9 @@ msgid "role \"%s\" already exists" msgstr "el rol «%s» ya existe" #: commands/user.c:414 -#, fuzzy, c-format +#, c-format msgid "pg_authid OID value not set when in binary upgrade mode" -msgstr "debe ser superusuario para conectarse en modo de actualización binaria" +msgstr "el valor de OID de pg_authid no se definió en modo de actualización binaria" #: commands/user.c:679 commands/user.c:896 commands/user.c:1432 #: commands/user.c:1578 @@ -9417,9 +9163,9 @@ msgid "permission denied to drop role" msgstr "se ha denegado el permiso para eliminar el rol" #: commands/user.c:980 -#, fuzzy, c-format +#, c-format msgid "cannot use special role specifier in DROP ROLE" -msgstr "no se puede asignar el nuevo tablespace por omisión «%s»" +msgstr "no se puede usar un especificador especial de rol en DROP ROLE" #: commands/user.c:990 commands/user.c:1147 commands/variable.c:825 #: commands/variable.c:897 utils/adt/acl.c:5121 utils/adt/acl.c:5173 @@ -9521,12 +9267,12 @@ msgstr "el rol «%s» no es un miembro del rol «%s»" #: commands/vacuum.c:185 #, c-format msgid "%s cannot be executed from VACUUM or ANALYZE" -msgstr "" +msgstr "%s no puede ejecutarse desde VACUUM o ANALYZE" #: commands/vacuum.c:195 #, c-format msgid "VACUUM option DISABLE_PAGE_SKIPPING cannot be used with FULL" -msgstr "" +msgstr "la opción DISABLE_PAGE_SKIPPING de VACUUM no puede usarse con FULL" #: commands/vacuum.c:535 #, c-format @@ -9561,7 +9307,7 @@ msgstr "Puede haber sufrido ya problemas de pérdida de datos por reciclaje del #: commands/vacuum.c:1268 #, c-format msgid "skipping vacuum of \"%s\" --- lock not available" -msgstr "omitiendo el vacuum de «%s»: el candado no está disponible" +msgstr "omitiendo el vacuum de «%s»: el lock no está disponible" #: commands/vacuum.c:1294 #, c-format @@ -9583,93 +9329,96 @@ msgstr "omitiendo «%s»: sólo su dueño o el de la base de datos puede aplicar msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables" msgstr "omitiendo «%s»: no se puede aplicar VACUUM a objetos que no son tablas o a tablas especiales de sistema" -#: commands/vacuumlazy.c:366 -#, fuzzy, c-format +#: commands/vacuumlazy.c:371 +#, c-format msgid "automatic vacuum of table \"%s.%s.%s\": index scans: %d\n" -msgstr "vacuum automático de la tabla «%s.%s.%s»" +msgstr "vacuum automático de la tabla «%s.%s.%s»: recorridos de índice: %d\n" -#: commands/vacuumlazy.c:371 +#: commands/vacuumlazy.c:376 #, c-format msgid "pages: %u removed, %u remain, %u skipped due to pins, %u skipped frozen\n" -msgstr "" +msgstr "páginas: %u eliminadas, %u quedan, %u saltadas debido a «pins», %u congeladas saltadas\n" -#: commands/vacuumlazy.c:377 +#: commands/vacuumlazy.c:382 #, c-format msgid "tuples: %.0f removed, %.0f remain, %.0f are dead but not yet removable\n" -msgstr "" +msgstr "tuplas: %.0f eliminadas, %.0f quedan, %.0f están muertas pero no son eliminables\n" -#: commands/vacuumlazy.c:382 +#: commands/vacuumlazy.c:387 #, c-format msgid "buffer usage: %d hits, %d misses, %d dirtied\n" -msgstr "" +msgstr "uso de búfers: %d aciertos, %d fallas, %d ensuciados\n" -#: commands/vacuumlazy.c:386 +#: commands/vacuumlazy.c:391 #, c-format msgid "avg read rate: %.3f MB/s, avg write rate: %.3f MB/s\n" -msgstr "" +msgstr "tasa lectura promedio: %.3f MB/s, tasa escritura promedio: %.3f MB/s\n" -#: commands/vacuumlazy.c:388 -#, fuzzy, c-format +#: commands/vacuumlazy.c:393 +#, c-format msgid "system usage: %s" -msgstr "sentencia: %s" +msgstr "uso de sistema: %s" -#: commands/vacuumlazy.c:846 +#: commands/vacuumlazy.c:852 #, c-format msgid "relation \"%s\" page %u is uninitialized --- fixing" msgstr "la página %2$u de la relación «%1$s» no está inicializada --- arreglando" -#: commands/vacuumlazy.c:1316 +#: commands/vacuumlazy.c:1322 #, c-format msgid "\"%s\": removed %.0f row versions in %u pages" msgstr "«%s»: se eliminaron %.0f versiones de filas en %u páginas" -#: commands/vacuumlazy.c:1326 -#, fuzzy, c-format +#: commands/vacuumlazy.c:1332 +#, c-format msgid "%.0f dead row versions cannot be removed yet.\n" -msgstr "" -"%.0f versiones muertas de filas no pueden ser eliminadas aún.\n" -"%s." +msgstr "%.0f versiones muertas de filas no pueden ser eliminadas aún.\n" -#: commands/vacuumlazy.c:1328 +#: commands/vacuumlazy.c:1334 #, c-format msgid "There were %.0f unused item pointers.\n" -msgstr "" +msgstr "Hubo %.0f punteros de ítem sin uso.\n" -#: commands/vacuumlazy.c:1330 +#: commands/vacuumlazy.c:1336 #, c-format msgid "Skipped %u page due to buffer pins.\n" msgid_plural "Skipped %u pages due to buffer pins.\n" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Saltada %u página debido a «pins» de búfers.\n" +msgstr[1] "Saltadas %u páginas debido a «pins» de búfers.\n" -#: commands/vacuumlazy.c:1334 +#: commands/vacuumlazy.c:1340 #, c-format msgid "%u page is entirely empty.\n" msgid_plural "%u pages are entirely empty.\n" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%u página está completamente vacía.\n" +msgstr[1] "%u páginas están completamente vacías.\n" + +#: commands/vacuumlazy.c:1344 +#, c-format +msgid "%s." +msgstr "%s." -#: commands/vacuumlazy.c:1342 +#: commands/vacuumlazy.c:1347 #, c-format msgid "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u pages" msgstr "«%s»: se encontraron %.0f versiones de filas eliminables y %.0f no eliminables en %u de %u páginas" -#: commands/vacuumlazy.c:1411 +#: commands/vacuumlazy.c:1416 #, c-format msgid "\"%s\": removed %d row versions in %d pages" msgstr "«%s»: se eliminaron %d versiones de filas en %d páginas" -#: commands/vacuumlazy.c:1600 +#: commands/vacuumlazy.c:1604 #, c-format msgid "scanned index \"%s\" to remove %d row versions" msgstr "se recorrió el índice «%s» para eliminar %d versiones de filas" -#: commands/vacuumlazy.c:1646 +#: commands/vacuumlazy.c:1650 #, c-format msgid "index \"%s\" now contains %.0f row versions in %u pages" msgstr "el índice «%s» ahora contiene %.0f versiones de filas en %u páginas" -#: commands/vacuumlazy.c:1650 +#: commands/vacuumlazy.c:1654 #, c-format msgid "" "%.0f index row versions were removed.\n" @@ -9680,22 +9429,22 @@ msgstr "" "%u páginas de índice han sido eliminadas, %u son reusables.\n" "%s." -#: commands/vacuumlazy.c:1745 +#: commands/vacuumlazy.c:1749 #, c-format msgid "\"%s\": stopping truncate due to conflicting lock request" -msgstr "«%s»: suspendiendo el truncado debido a una petición de candado en conflicto" +msgstr "«%s»: suspendiendo el truncado debido a una petición de lock en conflicto" -#: commands/vacuumlazy.c:1810 +#: commands/vacuumlazy.c:1814 #, c-format msgid "\"%s\": truncated %u to %u pages" msgstr "«%s»: truncadas %u a %u páginas" -#: commands/vacuumlazy.c:1866 +#: commands/vacuumlazy.c:1870 #, c-format msgid "\"%s\": suspending truncate due to conflicting lock request" -msgstr "«%s»: suspendiendo el truncado debido a una petición de candado en conflicto" +msgstr "«%s»: suspendiendo el truncado debido a una petición de lock en conflicto" -#: commands/variable.c:164 utils/misc/guc.c:9883 +#: commands/variable.c:164 utils/misc/guc.c:9899 #, c-format msgid "Unrecognized key word: \"%s\"." msgstr "Palabra clave no reconocida: «%s»." @@ -9755,7 +9504,7 @@ msgstr "SET TRANSACTION ISOLATION LEVEL debe ser llamado antes de cualquier cons msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction" msgstr "SET TRANSACTION ISOLATION LEVEL no debe ser llamado en una subtransacción" -#: commands/variable.c:574 storage/lmgr/predicate.c:1587 +#: commands/variable.c:574 storage/lmgr/predicate.c:1602 #, c-format msgid "cannot use serializable mode in a hot standby" msgstr "no se puede utilizar el modo serializable en un hot standby" @@ -9786,10 +9535,9 @@ msgid "Cannot change \"client_encoding\" now." msgstr "No se puede cambiar «client_encoding» ahora." #: commands/variable.c:779 -#, fuzzy, c-format -#| msgid "Cannot change \"client_encoding\" now." -msgid "cannot change client_encoding in a parallel worker" -msgstr "No se puede cambiar «client_encoding» ahora." +#, c-format +msgid "cannot change client_encoding during a parallel operation" +msgstr "no se puede cambiar client_encoding en un trabajador paralelo" #: commands/variable.c:915 #, c-format @@ -9806,52 +9554,52 @@ msgstr "valor no válido para la opción «check_option»" msgid "Valid values are \"local\" and \"cascaded\"." msgstr "Los valores aceptables son «local» y «cascaded»." -#: commands/view.c:103 +#: commands/view.c:101 #, c-format msgid "could not determine which collation to use for view column \"%s\"" msgstr "no se pudo determinar el ordenamiento (collation) a usar para la columna «%s» de vista" -#: commands/view.c:117 +#: commands/view.c:115 #, c-format msgid "view must have at least one column" msgstr "una vista debe tener al menos una columna" -#: commands/view.c:251 commands/view.c:263 +#: commands/view.c:280 commands/view.c:292 #, c-format msgid "cannot drop columns from view" msgstr "no se pueden eliminar columnas de una vista" -#: commands/view.c:268 +#: commands/view.c:297 #, c-format msgid "cannot change name of view column \"%s\" to \"%s\"" msgstr "no se puede cambiar el nombre de la columna «%s» de la vista a «%s»" -#: commands/view.c:276 +#: commands/view.c:305 #, c-format msgid "cannot change data type of view column \"%s\" from %s to %s" msgstr "no se puede cambiar el tipo de dato de la columna «%s» de la vista de %s a %s" -#: commands/view.c:415 +#: commands/view.c:444 #, c-format msgid "views must not contain SELECT INTO" msgstr "una vista no puede tener SELECT INTO" -#: commands/view.c:428 +#: commands/view.c:457 #, c-format msgid "views must not contain data-modifying statements in WITH" msgstr "las vistas no deben contener sentencias que modifiquen datos en WITH" -#: commands/view.c:499 +#: commands/view.c:528 #, c-format msgid "CREATE VIEW specifies more column names than columns" msgstr "CREATE VIEW especifica más nombres de columna que columnas" -#: commands/view.c:507 +#: commands/view.c:536 #, c-format msgid "views cannot be unlogged because they do not have storage" msgstr "las vistas no pueden ser unlogged porque no tienen almacenamiento" -#: commands/view.c:521 +#: commands/view.c:550 #, c-format msgid "view \"%s\" will be a temporary view" msgstr "la vista «%s» será una vista temporal" @@ -9897,9 +9645,9 @@ msgid "no value found for parameter %d" msgstr "no se encontró un valor para parámetro %d" #: executor/execIndexing.c:544 -#, fuzzy, c-format +#, c-format msgid "ON CONFLICT does not support deferrable unique constraints/exclusion constraints as arbiters" -msgstr "el método de acceso «%s» no soporta restricciones por exclusión" +msgstr "ON CONFLICT no soporta las restricciones únicas/de exclusión postergables como árbitros" #: executor/execIndexing.c:821 #, c-format @@ -9941,32 +9689,32 @@ msgstr "no se puede cambiar la secuencia «%s»" msgid "cannot change TOAST relation \"%s\"" msgstr "no se puede cambiar la relación TOAST «%s»" -#: executor/execMain.c:1051 rewrite/rewriteHandler.c:2648 +#: executor/execMain.c:1051 rewrite/rewriteHandler.c:2679 #, c-format msgid "cannot insert into view \"%s\"" msgstr "no se puede insertar en la vista «%s»" -#: executor/execMain.c:1053 rewrite/rewriteHandler.c:2651 +#: executor/execMain.c:1053 rewrite/rewriteHandler.c:2682 #, c-format msgid "To enable inserting into the view, provide an INSTEAD OF INSERT trigger or an unconditional ON INSERT DO INSTEAD rule." msgstr "Para activar las inserciones en la vista, provea un disparador INSTEAD OF INSERT un una regla incodicional ON INSERT DO INSTEAD." -#: executor/execMain.c:1059 rewrite/rewriteHandler.c:2656 +#: executor/execMain.c:1059 rewrite/rewriteHandler.c:2687 #, c-format msgid "cannot update view \"%s\"" msgstr "no se puede actualizar la vista «%s»" -#: executor/execMain.c:1061 rewrite/rewriteHandler.c:2659 +#: executor/execMain.c:1061 rewrite/rewriteHandler.c:2690 #, c-format msgid "To enable updating the view, provide an INSTEAD OF UPDATE trigger or an unconditional ON UPDATE DO INSTEAD rule." msgstr "Para activar las actualizaciones en la vista, provea un disparador INSTEAD OF UPDATE o una regla incondicional ON UPDATE DO INSTEAD." -#: executor/execMain.c:1067 rewrite/rewriteHandler.c:2664 +#: executor/execMain.c:1067 rewrite/rewriteHandler.c:2695 #, c-format msgid "cannot delete from view \"%s\"" msgstr "no se puede eliminar de la vista «%s»" -#: executor/execMain.c:1069 rewrite/rewriteHandler.c:2667 +#: executor/execMain.c:1069 rewrite/rewriteHandler.c:2698 #, c-format msgid "To enable deleting from the view, provide an INSTEAD OF DELETE trigger or an unconditional ON DELETE DO INSTEAD rule." msgstr "Para activar las eliminaciones en la vista, provea un disparador INSTEAD OF DELETE o una regla incondicional ON DELETE DO INSTEAD." @@ -10031,7 +9779,7 @@ msgstr "no se puede bloquear registros en la vista «%s»" msgid "cannot lock rows in materialized view \"%s\"" msgstr "no se puede bloquear registros en la vista materializada «%s»" -#: executor/execMain.c:1192 executor/execMain.c:2611 +#: executor/execMain.c:1192 executor/execMain.c:2613 #: executor/nodeLockRows.c:132 #, c-format msgid "cannot lock rows in foreign table \"%s\"" @@ -10042,54 +9790,51 @@ msgstr "no se puede bloquear registros en la tabla foránea «%s»" msgid "cannot lock rows in relation \"%s\"" msgstr "no se puede bloquear registros en la tabla «%s»" -#: executor/execMain.c:1729 +#: executor/execMain.c:1731 #, c-format msgid "null value in column \"%s\" violates not-null constraint" msgstr "el valor null para la columna «%s» viola la restricción not null" -#: executor/execMain.c:1731 executor/execMain.c:1757 executor/execMain.c:1846 +#: executor/execMain.c:1733 executor/execMain.c:1759 executor/execMain.c:1848 #, c-format msgid "Failing row contains %s." msgstr "La fila que falla contiene %s." -#: executor/execMain.c:1755 +#: executor/execMain.c:1757 #, c-format msgid "new row for relation \"%s\" violates check constraint \"%s\"" msgstr "el nuevo registro para la relación «%s» viola la restricción «check» «%s»" -#: executor/execMain.c:1844 -#, fuzzy, c-format -#| msgid "new row for relation \"%s\" violates check constraint \"%s\"" +#: executor/execMain.c:1846 +#, c-format msgid "new row violates check option for view \"%s\"" -msgstr "el nuevo registro para la relación «%s» viola la restricción «check» «%s»" +msgstr "el nuevo registro para la vista «%s» viola la opción check" -#: executor/execMain.c:1854 -#, fuzzy, c-format -#| msgid "%s %s will create implicit index \"%s\" for table \"%s\"" +#: executor/execMain.c:1856 +#, c-format msgid "new row violates row-level security policy \"%s\" for table \"%s\"" -msgstr "%s %s creará el índice implícito «%s» para la tabla «%s»" +msgstr "el nuevo registro viola la política de seguridad de registros «%s» para la tabla «%s»" -#: executor/execMain.c:1859 -#, fuzzy, c-format -#| msgid "reading row security enabled for table \"%s.%s\"\n" +#: executor/execMain.c:1861 +#, c-format msgid "new row violates row-level security policy for table \"%s\"" -msgstr "leyendo si seguridad de filas está activa para la tabla «%s.%s»\n" +msgstr "el nuevo registro viola la política de seguridad de registros para la tabla «%s»" -#: executor/execMain.c:1866 +#: executor/execMain.c:1868 #, c-format msgid "new row violates row-level security policy \"%s\" (USING expression) for table \"%s\"" -msgstr "" +msgstr "el nuevo registro viola la política de seguridad de registros «%s» (expresión USING) para la tabla «%s»" -#: executor/execMain.c:1871 +#: executor/execMain.c:1873 #, c-format msgid "new row violates row-level security policy (USING expression) for table \"%s\"" -msgstr "" +msgstr "el nuevo registro viola la política de seguridad de registros (expresión USING) para la tabla «%s»" -#: executor/execQual.c:302 executor/execQual.c:339 executor/execQual.c:3230 -#: utils/adt/array_userfuncs.c:472 utils/adt/arrayfuncs.c:260 +#: executor/execQual.c:302 executor/execQual.c:339 executor/execQual.c:3236 +#: utils/adt/array_userfuncs.c:484 utils/adt/arrayfuncs.c:260 #: utils/adt/arrayfuncs.c:558 utils/adt/arrayfuncs.c:1288 #: utils/adt/arrayfuncs.c:3361 utils/adt/arrayfuncs.c:5241 -#: utils/adt/arrayfuncs.c:5764 +#: utils/adt/arrayfuncs.c:5758 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" msgstr "el número de dimensiones del array (%d) excede el máximo permitido (%d)" @@ -10099,12 +9844,12 @@ msgstr "el número de dimensiones del array (%d) excede el máximo permitido (%d msgid "array subscript in assignment must not be null" msgstr "subíndice de array en asignación no puede ser nulo" -#: executor/execQual.c:657 executor/execQual.c:4170 +#: executor/execQual.c:657 executor/execQual.c:4183 #, c-format msgid "attribute %d has wrong type" msgstr "el atributo %d tiene tipo erróneo" -#: executor/execQual.c:658 executor/execQual.c:4171 +#: executor/execQual.c:658 executor/execQual.c:4184 #, c-format msgid "Table has type %s, but query expects %s." msgstr "La tabla tiene tipo %s, pero la consulta esperaba %s." @@ -10193,58 +9938,58 @@ msgstr "IS DISTINCT FROM no soporta argumentos que sean conjuntos" msgid "op ANY/ALL (array) does not support set arguments" msgstr "op ANY/ALL (array) no soporta argumentos que sean conjuntos" -#: executor/execQual.c:3208 +#: executor/execQual.c:3214 #, c-format msgid "cannot merge incompatible arrays" msgstr "no se puede mezclar arrays incompatibles" -#: executor/execQual.c:3209 +#: executor/execQual.c:3215 #, c-format msgid "Array with element type %s cannot be included in ARRAY construct with element type %s." msgstr "El array con tipo de elemento %s no puede ser incluido en una sentencia ARRAY con tipo de elemento %s." -#: executor/execQual.c:3250 executor/execQual.c:3277 +#: executor/execQual.c:3256 executor/execQual.c:3283 #, c-format msgid "multidimensional arrays must have array expressions with matching dimensions" msgstr "los arrays multidimensionales deben tener expresiones de arrays con dimensiones coincidentes" -#: executor/execQual.c:3792 +#: executor/execQual.c:3798 #, c-format msgid "NULLIF does not support set arguments" msgstr "NULLIF no soporta argumentos que sean conjuntos" -#: executor/execQual.c:4040 utils/adt/domains.c:136 +#: executor/execQual.c:4046 utils/adt/domains.c:137 #, c-format msgid "domain %s does not allow null values" msgstr "el dominio %s no permite valores null" -#: executor/execQual.c:4070 utils/adt/domains.c:173 +#: executor/execQual.c:4083 utils/adt/domains.c:179 #, c-format msgid "value for domain %s violates check constraint \"%s\"" msgstr "el valor para el dominio %s viola la restricción «check» «%s»" -#: executor/execQual.c:4425 +#: executor/execQual.c:4438 #, c-format msgid "WHERE CURRENT OF is not supported for this table type" msgstr "WHERE CURRENT OF no está soportado para este tipo de tabla" -#: executor/execQual.c:4614 parser/parse_agg.c:758 +#: executor/execQual.c:4627 parser/parse_agg.c:758 #, c-format msgid "window function calls cannot be nested" msgstr "no se pueden anidar llamadas a funciones de ventana deslizante" -#: executor/execQual.c:4826 +#: executor/execQual.c:4839 #, c-format msgid "target type is not an array" msgstr "el tipo de destino no es un array" -#: executor/execQual.c:4941 +#: executor/execQual.c:4956 #, c-format msgid "ROW() column has type %s instead of type %s" msgstr "la columna de ROW() es de tipo %s en lugar de ser de tipo %s" -#: executor/execQual.c:5076 utils/adt/arrayfuncs.c:3803 -#: utils/adt/arrayfuncs.c:6337 utils/adt/rowtypes.c:927 +#: executor/execQual.c:5091 utils/adt/arrayfuncs.c:3803 +#: utils/adt/arrayfuncs.c:6325 utils/adt/rowtypes.c:927 #, c-format msgid "could not identify a comparison function for type %s" msgstr "no se pudo identificar una función de comparación para el tipo %s" @@ -10264,95 +10009,99 @@ msgstr "Use la orden REFRESH MATERIALIZED VIEW." msgid "could not determine actual type of argument declared %s" msgstr "no se pudo determinar el tipo de argumento declarado %s" +#: executor/functions.c:511 +#, c-format +msgid "cannot COPY to/from client in a SQL function" +msgstr "no se puede ejecutar COPY desde/a un cliente en una función SQL" + #. translator: %s is a SQL statement name -#: executor/functions.c:508 +#: executor/functions.c:517 #, c-format msgid "%s is not allowed in a SQL function" msgstr "%s no está permitido en una función SQL" #. translator: %s is a SQL statement name -#: executor/functions.c:515 executor/spi.c:1364 executor/spi.c:2154 +#: executor/functions.c:524 executor/spi.c:1364 executor/spi.c:2154 #, c-format msgid "%s is not allowed in a non-volatile function" msgstr "%s no está permitido en una función no-«volatile»" -#: executor/functions.c:641 +#: executor/functions.c:650 #, c-format msgid "could not determine actual result type for function declared to return type %s" msgstr "no se pudo determinar el tipo de resultado para función declarada retornando tipo %s" -#: executor/functions.c:1406 +#: executor/functions.c:1415 #, c-format msgid "SQL function \"%s\" statement %d" msgstr "función SQL «%s» en la sentencia %d" -#: executor/functions.c:1432 +#: executor/functions.c:1441 #, c-format msgid "SQL function \"%s\" during startup" msgstr "función SQL «%s» durante el inicio" -#: executor/functions.c:1591 executor/functions.c:1628 -#: executor/functions.c:1640 executor/functions.c:1753 -#: executor/functions.c:1786 executor/functions.c:1816 +#: executor/functions.c:1600 executor/functions.c:1637 +#: executor/functions.c:1649 executor/functions.c:1762 +#: executor/functions.c:1795 executor/functions.c:1825 #, c-format msgid "return type mismatch in function declared to return %s" msgstr "el tipo de retorno de función declarada para retornar %s no concuerda" -#: executor/functions.c:1593 +#: executor/functions.c:1602 #, c-format msgid "Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING." msgstr "La sentencia final de la función debe ser un SELECT o INSERT/UPDATE/DELETE RETURNING." -#: executor/functions.c:1630 +#: executor/functions.c:1639 #, c-format msgid "Final statement must return exactly one column." msgstr "La sentencia final debe retornar exactamente una columna." -#: executor/functions.c:1642 +#: executor/functions.c:1651 #, c-format msgid "Actual return type is %s." msgstr "El verdadero tipo de retorno es %s." -#: executor/functions.c:1755 +#: executor/functions.c:1764 #, c-format msgid "Final statement returns too many columns." msgstr "La sentencia final retorna demasiadas columnas." -#: executor/functions.c:1788 +#: executor/functions.c:1797 #, c-format msgid "Final statement returns %s instead of %s at column %d." msgstr "La sentencia final retorna %s en lugar de %s en la columna %d." -#: executor/functions.c:1818 +#: executor/functions.c:1827 #, c-format msgid "Final statement returns too few columns." msgstr "La sentencia final retorna muy pocas columnas." -#: executor/functions.c:1867 +#: executor/functions.c:1876 #, c-format msgid "return type %s is not supported for SQL functions" msgstr "el tipo de retorno %s no es soportado en funciones SQL" -#: executor/nodeAgg.c:2983 -#, fuzzy, c-format -#| msgid "final function with extra arguments must not be declared STRICT" +#: executor/nodeAgg.c:3038 +#, c-format msgid "combine function for aggregate %u must be declared as STRICT" -msgstr "la función final con argumentos extra no debe declararse STRICT" +msgstr "la función «combine» para la función de agregación %u debe declararse STRICT" -#: executor/nodeAgg.c:3028 executor/nodeWindowAgg.c:2285 +#: executor/nodeAgg.c:3083 executor/nodeWindowAgg.c:2318 #, c-format msgid "aggregate %u needs to have compatible input type and transition type" msgstr "la función de agregación %u necesita tener tipos de entrada y transición compatibles" -#: executor/nodeAgg.c:3094 parser/parse_agg.c:612 parser/parse_agg.c:642 +#: executor/nodeAgg.c:3149 parser/parse_agg.c:612 parser/parse_agg.c:642 #, c-format msgid "aggregate function calls cannot be nested" msgstr "no se pueden anidar llamadas a funciones de agregación" #: executor/nodeCustom.c:148 executor/nodeCustom.c:159 -#, fuzzy, c-format +#, c-format msgid "custom scan \"%s\" does not support MarkPos" -msgstr "la extensión «%s» no soporta SET SCHEMA" +msgstr "el scan personalizado «%s» no soporta MarkPos" #: executor/nodeHashjoin.c:823 executor/nodeHashjoin.c:853 #, c-format @@ -10364,13 +10113,13 @@ msgstr "falló la búsqueda en el archivo temporal de hash-join: %m" msgid "could not write to hash-join temporary file: %m" msgstr "no se pudo escribir el archivo temporal de hash-join: %m" -#: executor/nodeHashjoin.c:928 executor/nodeHashjoin.c:938 +#: executor/nodeHashjoin.c:935 executor/nodeHashjoin.c:945 #, c-format msgid "could not read from hash-join temporary file: %m" msgstr "no se pudo leer el archivo temporal de hash-join: %m" #: executor/nodeIndexonlyscan.c:179 -#, fuzzy, c-format +#, c-format msgid "lossy distance functions are not supported in index-only scans" msgstr "no se permiten funciones de ventana deslizante en predicados de índice" @@ -10409,25 +10158,25 @@ msgstr "La consulta entrega un valor para una columna eliminada en la posición msgid "Query has too few columns." msgstr "La consulta tiene muy pocas columnas." -#: executor/nodeModifyTable.c:1117 +#: executor/nodeModifyTable.c:1132 #, c-format msgid "ON CONFLICT DO UPDATE command cannot affect row a second time" -msgstr "" +msgstr "la orden ON CONFLICT DO UPDATE no puede afectar el registro una segunda vez" -#: executor/nodeModifyTable.c:1118 +#: executor/nodeModifyTable.c:1133 #, c-format msgid "Ensure that no rows proposed for insertion within the same command have duplicate constrained values." -msgstr "" +msgstr "Asegúrese de que ningún registro propuesto para inserción dentro de la misma orden tenga valores duplicados restringidos." #: executor/nodeSamplescan.c:307 -#, fuzzy, c-format +#, c-format msgid "TABLESAMPLE parameter cannot be null" -msgstr "el argumento %d no puede ser null" +msgstr "el parámetro TABLESAMPLE no puede ser null" #: executor/nodeSamplescan.c:320 #, c-format msgid "TABLESAMPLE REPEATABLE parameter cannot be null" -msgstr "" +msgstr "el parámetro TABLESAMPLE REPEATABLE no puede ser null" #: executor/nodeSubplan.c:345 executor/nodeSubplan.c:384 #: executor/nodeSubplan.c:1036 @@ -10440,22 +10189,22 @@ msgstr "una subconsulta utilizada como expresión retornó más de un registro" msgid "moving-aggregate transition function must not return null" msgstr "la función de transición de moving-aggregate no debe retornar valor nulo" -#: executor/nodeWindowAgg.c:1609 +#: executor/nodeWindowAgg.c:1642 #, c-format msgid "frame starting offset must not be null" msgstr "la posición inicial del marco no debe ser null" -#: executor/nodeWindowAgg.c:1622 +#: executor/nodeWindowAgg.c:1655 #, c-format msgid "frame starting offset must not be negative" msgstr "la posición inicial del marco no debe ser negativa" -#: executor/nodeWindowAgg.c:1635 +#: executor/nodeWindowAgg.c:1668 #, c-format msgid "frame ending offset must not be null" msgstr "la posición final del marco no debe ser null" -#: executor/nodeWindowAgg.c:1648 +#: executor/nodeWindowAgg.c:1681 #, c-format msgid "frame ending offset must not be negative" msgstr "la posición final del marco no debe ser negativa" @@ -10491,7 +10240,7 @@ msgstr "no se puede abrir consulta %s como cursor" msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE no está soportado" -#: executor/spi.c:1339 parser/analyze.c:2363 +#: executor/spi.c:1339 parser/analyze.c:2360 #, c-format msgid "Scrollable cursors must be READ ONLY." msgstr "Los cursores declarados SCROLL deben ser READ ONLY." @@ -10502,10 +10251,9 @@ msgid "SQL statement \"%s\"" msgstr "sentencia SQL: «%s»" #: executor/tqueue.c:317 -#, fuzzy, c-format -#| msgid "could not get shared memory segment: %m" +#, c-format msgid "could not send tuple to shared-memory queue" -msgstr "no se pudo obtener el segmento de memoria compartida: %m" +msgstr "no se pudo enviar la tupla a la cola en memoria compartida" #: foreign/foreign.c:192 #, c-format @@ -10522,1711 +10270,1343 @@ msgstr "el nombre de opción «%s» no es válido" msgid "Valid options in this context are: %s" msgstr "Las opciones válidas en este contexto son: %s" -#: gram.y:1004 +#: lib/stringinfo.c:259 #, c-format -msgid "unrecognized role option \"%s\"" -msgstr "opción de rol no reconocida «%s»" +msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes." +msgstr "No se puede agrandar el búfer de cadena que ya tiene %d bytes en %d bytes adicionales." -#: gram.y:1278 gram.y:1293 +#: libpq/auth.c:254 #, c-format -msgid "CREATE SCHEMA IF NOT EXISTS cannot include schema elements" -msgstr "CREATE SCHEMA IF NOT EXISTS no puede incluir elementos de esquema" +msgid "authentication failed for user \"%s\": host rejected" +msgstr "la autentificación falló para el usuario «%s»: anfitrión rechazado" -#: gram.y:1438 +#: libpq/auth.c:257 #, c-format -msgid "current database cannot be changed" -msgstr "no se puede cambiar la base de datos activa" +msgid "\"trust\" authentication failed for user \"%s\"" +msgstr "la autentificación «trust» falló para el usuario «%s»" -#: gram.y:1562 +#: libpq/auth.c:260 #, c-format -msgid "time zone interval must be HOUR or HOUR TO MINUTE" -msgstr "el intervalo de huso horario debe ser HOUR o HOUR TO MINUTE" +msgid "Ident authentication failed for user \"%s\"" +msgstr "la autentificación Ident falló para el usuario «%s»" -#: gram.y:2600 gram.y:2629 +#: libpq/auth.c:263 #, c-format -msgid "STDIN/STDOUT not allowed with PROGRAM" -msgstr "STDIN/STDOUT no están permitidos con PROGRAM" +msgid "Peer authentication failed for user \"%s\"" +msgstr "la autentificación Peer falló para el usuario «%s»" -#: gram.y:2895 gram.y:2902 gram.y:10286 gram.y:10294 +#: libpq/auth.c:267 #, c-format -msgid "GLOBAL is deprecated in temporary table creation" -msgstr "GLOBAL está obsoleto para la creación de tablas temporales" +msgid "password authentication failed for user \"%s\"" +msgstr "la autentificación password falló para el usuario «%s»" -#: gram.y:3343 utils/adt/ri_triggers.c:316 utils/adt/ri_triggers.c:373 -#: utils/adt/ri_triggers.c:792 utils/adt/ri_triggers.c:1015 -#: utils/adt/ri_triggers.c:1171 utils/adt/ri_triggers.c:1352 -#: utils/adt/ri_triggers.c:1517 utils/adt/ri_triggers.c:1693 -#: utils/adt/ri_triggers.c:1873 utils/adt/ri_triggers.c:2064 -#: utils/adt/ri_triggers.c:2122 utils/adt/ri_triggers.c:2227 -#: utils/adt/ri_triggers.c:2404 +#: libpq/auth.c:272 #, c-format -msgid "MATCH PARTIAL not yet implemented" -msgstr "MATCH PARTIAL no está implementada" - -#: gram.y:4800 -msgid "duplicate trigger events specified" -msgstr "se han especificado eventos de disparador duplicados" +msgid "GSSAPI authentication failed for user \"%s\"" +msgstr "la autentificación GSSAPI falló para el usuario «%s»" -#: gram.y:4893 parser/parse_utilcmd.c:2743 parser/parse_utilcmd.c:2769 +#: libpq/auth.c:275 #, c-format -msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" -msgstr "una restricción declarada INITIALLY DEFERRED debe ser DEFERRABLE" +msgid "SSPI authentication failed for user \"%s\"" +msgstr "la autentificación SSPI falló para el usuario «%s»" -#: gram.y:4900 +#: libpq/auth.c:278 #, c-format -msgid "conflicting constraint properties" -msgstr "propiedades de restricción contradictorias" +msgid "PAM authentication failed for user \"%s\"" +msgstr "la autentificación PAM falló para el usuario «%s»" -#: gram.y:5032 +#: libpq/auth.c:281 #, c-format -msgid "CREATE ASSERTION is not yet implemented" -msgstr "CREATE ASSERTION no está implementado" +msgid "BSD authentication failed for user \"%s\"" +msgstr "la autentificación BSD falló para el usuario «%s»" -#: gram.y:5048 +#: libpq/auth.c:284 #, c-format -msgid "DROP ASSERTION is not yet implemented" -msgstr "DROP ASSERTION no está implementado" +msgid "LDAP authentication failed for user \"%s\"" +msgstr "la autentificación LDAP falló para el usuario «%s»" -#: gram.y:5394 +#: libpq/auth.c:287 #, c-format -msgid "RECHECK is no longer required" -msgstr "RECHECK ya no es requerido" +msgid "certificate authentication failed for user \"%s\"" +msgstr "la autentificación por certificado falló para el usuario «%s»" -#: gram.y:5395 +#: libpq/auth.c:290 #, c-format -msgid "Update your data type." -msgstr "Actualice su tipo de datos." +msgid "RADIUS authentication failed for user \"%s\"" +msgstr "la autentificación RADIUS falló para el usuario «%s»" -#: gram.y:6974 +#: libpq/auth.c:293 #, c-format -msgid "aggregates cannot have output arguments" -msgstr "las funciones de agregación no pueden tener argumentos de salida" +msgid "authentication failed for user \"%s\": invalid authentication method" +msgstr "la autentificación falló para el usuario «%s»: método de autentificación no válido" -#: gram.y:7293 utils/adt/regproc.c:774 utils/adt/regproc.c:815 +#: libpq/auth.c:297 #, c-format -msgid "missing argument" -msgstr "falta un argumento" +msgid "Connection matched pg_hba.conf line %d: \"%s\"" +msgstr "La conexión coincidió con la línea %d de pg_hba.conf: «%s»" -#: gram.y:7294 utils/adt/regproc.c:775 utils/adt/regproc.c:816 +#: libpq/auth.c:352 #, c-format -msgid "Use NONE to denote the missing argument of a unary operator." -msgstr "Use NONE para denotar el argumento faltante de un operador unario." +msgid "connection requires a valid client certificate" +msgstr "la conexión requiere un certificado de cliente válido" -#: gram.y:8844 gram.y:8862 +#: libpq/auth.c:394 #, c-format -msgid "WITH CHECK OPTION not supported on recursive views" -msgstr "WITH CHECK OPTION no está soportado con vistas recursivas" +msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s" +msgstr "pg_hba.conf rechaza la conexión de replicación para el servidor «%s», usuario «%s», %s" -#: gram.y:9380 -#, fuzzy, c-format -#| msgid "unrecognized role option \"%s\"" -msgid "unrecognized VACUUM option \"%s\"" -msgstr "opción de rol no reconocida «%s»" +#: libpq/auth.c:396 libpq/auth.c:412 libpq/auth.c:470 libpq/auth.c:488 +msgid "SSL off" +msgstr "SSL inactivo" + +#: libpq/auth.c:396 libpq/auth.c:412 libpq/auth.c:470 libpq/auth.c:488 +msgid "SSL on" +msgstr "SSL activo" -#: gram.y:9878 parser/parse_expr.c:1501 +#: libpq/auth.c:400 #, c-format -msgid "number of columns does not match number of values" -msgstr "el número de columnas no coincide con el número de valores" +msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\"" +msgstr "pg_hba.conf rechaza la conexión de replicación para el servidor «%s», usuario «%s»" -#: gram.y:10394 +#: libpq/auth.c:409 #, c-format -msgid "LIMIT #,# syntax is not supported" -msgstr "la sintaxis LIMIT #,# no está soportada" +msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\", %s" +msgstr "pg_hba.conf rechaza la conexión para el servidor «%s», usuario «%s», base de datos «%s», %s" -#: gram.y:10395 +#: libpq/auth.c:416 #, c-format -msgid "Use separate LIMIT and OFFSET clauses." -msgstr "Use cláusulas LIMIT y OFFSET separadas." +msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\"" +msgstr "pg_hba.conf rechaza la conexión para el servidor «%s», usuario «%s», base de datos «%s»" -#: gram.y:10658 gram.y:10683 +#: libpq/auth.c:445 #, c-format -msgid "VALUES in FROM must have an alias" -msgstr "VALUES en FROM debe tener un alias" +msgid "Client IP address resolved to \"%s\", forward lookup matches." +msgstr "La dirección IP del cliente fue resuelta a «%s», este resultado es coincidente." -#: gram.y:10659 gram.y:10684 +#: libpq/auth.c:448 #, c-format -msgid "For example, FROM (VALUES ...) [AS] foo." -msgstr "Por ejemplo, FROM (VALUES ...) [AS] foo." +msgid "Client IP address resolved to \"%s\", forward lookup not checked." +msgstr "La dirección IP del cliente fue resuelta a «%s», este resultado no fue verificado." -#: gram.y:10664 gram.y:10689 +#: libpq/auth.c:451 #, c-format -msgid "subquery in FROM must have an alias" -msgstr "las subconsultas en FROM deben tener un alias" +msgid "Client IP address resolved to \"%s\", forward lookup does not match." +msgstr "La dirección IP del cliente fue resuelta a «%s», este resultado no es coincidente." -#: gram.y:10665 gram.y:10690 +#: libpq/auth.c:454 #, c-format -msgid "For example, FROM (SELECT ...) [AS] foo." -msgstr "Por ejemplo, FROM (SELECT ...) [AS] foo." +msgid "Could not translate client host name \"%s\" to IP address: %s." +msgstr "No se pudo traducir el nombre de host del cliente «%s» a una dirección IP: %s." -#: gram.y:11264 +#: libpq/auth.c:459 #, c-format -msgid "precision for type float must be at least 1 bit" -msgstr "la precisión para el tipo float debe ser al menos 1 bit" +msgid "Could not resolve client IP address to a host name: %s." +msgstr "No se pudo obtener la dirección IP del cliente a un nombre de host: %s." -#: gram.y:11273 +#: libpq/auth.c:468 #, c-format -msgid "precision for type float must be less than 54 bits" -msgstr "la precisión para el tipo float debe ser menor de 54 bits" - -#: gram.y:11777 -#, c-format -msgid "wrong number of parameters on left side of OVERLAPS expression" -msgstr "el número de parámetros es incorrecto al lado izquierdo de la expresión OVERLAPS" +msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\", %s" +msgstr "no hay una línea en pg_hba.conf para la conexión de replicación desde el servidor «%s», usuario «%s», %s" -#: gram.y:11782 +#: libpq/auth.c:475 #, c-format -msgid "wrong number of parameters on right side of OVERLAPS expression" -msgstr "el número de parámetros es incorrecto al lado derecho de la expresión OVERLAPS" +msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\"" +msgstr "no hay una línea en pg_hba.conf para la conexión de replicación desde el servidor «%s», usuario «%s»" -#: gram.y:11957 +#: libpq/auth.c:485 #, c-format -msgid "UNIQUE predicate is not yet implemented" -msgstr "el predicado UNIQUE no está implementado" +msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s" +msgstr "no hay una línea en pg_hba.conf para «%s», usuario «%s», base de datos «%s», %s" -#: gram.y:12287 +#: libpq/auth.c:493 #, c-format -msgid "cannot use multiple ORDER BY clauses with WITHIN GROUP" -msgstr "no se permiten múltiples cláusulas ORDER BY con WITHIN GROUP" +msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\"" +msgstr "no hay una línea en pg_hba.conf para «%s», usuario «%s», base de datos «%s»" -#: gram.y:12292 +#: libpq/auth.c:536 libpq/hba.c:1178 #, c-format -msgid "cannot use DISTINCT with WITHIN GROUP" -msgstr "no se permite DISTINCT con WITHIN GROUP" +msgid "MD5 authentication is not supported when \"db_user_namespace\" is enabled" +msgstr "la autentificación MD5 no está soportada cuando «db_user_namespace» está activo" -#: gram.y:12297 +#: libpq/auth.c:670 #, c-format -msgid "cannot use VARIADIC with WITHIN GROUP" -msgstr "no se permite VARIADIC con WITHIN GROUP" +msgid "expected password response, got message type %d" +msgstr "se esperaba una respuesta de contraseña, se obtuvo mensaje de tipo %d" -#: gram.y:12803 +#: libpq/auth.c:698 #, c-format -msgid "RANGE PRECEDING is only supported with UNBOUNDED" -msgstr "RANGE PRECEDING sólo está soportado con UNBOUNDED" +msgid "invalid password packet size" +msgstr "el tamaño del paquete de contraseña no es válido" -#: gram.y:12809 +#: libpq/auth.c:712 #, c-format -msgid "RANGE FOLLOWING is only supported with UNBOUNDED" -msgstr "RANGE FOLLOWING sólo está soportado con UNBOUNDED" +msgid "empty password returned by client" +msgstr "el cliente retornó una contraseña vacía" -#: gram.y:12836 gram.y:12859 +#: libpq/auth.c:842 #, c-format -msgid "frame start cannot be UNBOUNDED FOLLOWING" -msgstr "el inicio de «frame» no puede ser UNBOUNDED FOLLOWING" +msgid "GSSAPI is not supported in protocol version 2" +msgstr "GSSAPI no está soportado por el protocolo versión 2" -#: gram.y:12841 +#: libpq/auth.c:902 #, c-format -msgid "frame starting from following row cannot end with current row" -msgstr "el «frame» que se inicia desde la siguiente fila no puede terminar en la fila actual" +msgid "expected GSS response, got message type %d" +msgstr "se esperaba una respuesta GSS, se obtuvo mensaje de tipo %d" -#: gram.y:12864 -#, c-format -msgid "frame end cannot be UNBOUNDED PRECEDING" -msgstr "el fin de «frame» no puede ser UNBOUNDED PRECEDING" +#: libpq/auth.c:963 +msgid "accepting GSS security context failed" +msgstr "falló la aceptación del contexto de seguridad GSS" -#: gram.y:12870 -#, c-format -msgid "frame starting from current row cannot have preceding rows" -msgstr "el «frame» que se inicia desde la fila actual no puede tener filas precedentes" +#: libpq/auth.c:989 +msgid "retrieving GSS user name failed" +msgstr "falló la obtención del nombre de usuario GSS" -#: gram.y:12877 +#: libpq/auth.c:1108 #, c-format -msgid "frame starting from following row cannot have preceding rows" -msgstr "el «frame» que se inicia desde la fila siguiente no puede tener filas precedentes" +msgid "SSPI is not supported in protocol version 2" +msgstr "SSPI no está soportado por el protocolo versión 2" -#: gram.y:13542 -#, c-format -msgid "type modifier cannot have parameter name" -msgstr "el modificador de tipo no puede tener nombre de parámetro" +#: libpq/auth.c:1123 +msgid "could not acquire SSPI credentials" +msgstr "no se pudo obtener las credenciales SSPI" -#: gram.y:13548 +#: libpq/auth.c:1141 #, c-format -msgid "type modifier cannot have ORDER BY" -msgstr "el modificador de tipo no puede tener ORDER BY" +msgid "expected SSPI response, got message type %d" +msgstr "se esperaba una respuesta SSPI, se obtuvo mensaje de tipo %d" -#: gram.y:13612 gram.y:13618 -#, fuzzy, c-format -msgid "%s cannot be used as a role name here" -msgstr "%s no puede ser aplicado a un join" +#: libpq/auth.c:1213 +msgid "could not accept SSPI security context" +msgstr "no se pudo aceptar un contexto SSPI" -#: gram.y:14240 gram.y:14429 -msgid "improper use of \"*\"" -msgstr "uso impropio de «*»" +#: libpq/auth.c:1275 +msgid "could not get token from SSPI security context" +msgstr "no se pudo obtener un testigo (token) desde el contexto de seguridad SSPI" -#: gram.y:14392 gram.y:14409 tsearch/spell.c:954 tsearch/spell.c:971 -#: tsearch/spell.c:988 tsearch/spell.c:1005 tsearch/spell.c:1070 +#: libpq/auth.c:1394 libpq/auth.c:1413 #, c-format -msgid "syntax error" -msgstr "error de sintaxis" +msgid "could not translate name" +msgstr "no se pudo traducir el nombre" -#: gram.y:14493 +#: libpq/auth.c:1426 #, c-format -msgid "an ordered-set aggregate with a VARIADIC direct argument must have one VARIADIC aggregated argument of the same data type" -msgstr "una agregación de conjunto-ordenado con un argumento directo VARIADIC debe tener al menos un argumento agregado VARIADIC del mismo tipo de datos" +msgid "realm name too long" +msgstr "nombre de «realm» demasiado largo" -#: gram.y:14530 +#: libpq/auth.c:1441 #, c-format -msgid "multiple ORDER BY clauses not allowed" -msgstr "no se permiten múltiples cláusulas ORDER BY" +msgid "translated account name too long" +msgstr "nombre de cuenta traducido demasiado largo" -#: gram.y:14541 +#: libpq/auth.c:1627 #, c-format -msgid "multiple OFFSET clauses not allowed" -msgstr "no se permiten múltiples cláusulas OFFSET" +msgid "could not create socket for Ident connection: %m" +msgstr "no se pudo crear un socket para conexión Ident: %m" -#: gram.y:14550 +#: libpq/auth.c:1642 #, c-format -msgid "multiple LIMIT clauses not allowed" -msgstr "no se permiten múltiples cláusulas LIMIT" +msgid "could not bind to local address \"%s\": %m" +msgstr "no se pudo enlazar a la dirección local «%s»: %m" -#: gram.y:14559 +#: libpq/auth.c:1654 #, c-format -msgid "multiple WITH clauses not allowed" -msgstr "no se permiten múltiples cláusulas WITH" +msgid "could not connect to Ident server at address \"%s\", port %s: %m" +msgstr "no se pudo conectar al servidor Ident «%s», port %s: %m" -#: gram.y:14751 +#: libpq/auth.c:1676 #, c-format -msgid "OUT and INOUT arguments aren't allowed in TABLE functions" -msgstr "los argumentos OUT e INOUT no están permitidos en funciones TABLE" +msgid "could not send query to Ident server at address \"%s\", port %s: %m" +msgstr "no se pudo enviar consulta Ident al servidor «%s», port %s: %m" -#: gram.y:14852 +#: libpq/auth.c:1693 #, c-format -msgid "multiple COLLATE clauses not allowed" -msgstr "no se permiten múltiples cláusulas COLLATE" +msgid "could not receive response from Ident server at address \"%s\", port %s: %m" +msgstr "no se pudo recibir respuesta Ident desde el servidor «%s», port %s: %m" -#. translator: %s is CHECK, UNIQUE, or similar -#: gram.y:14890 gram.y:14903 +#: libpq/auth.c:1703 #, c-format -msgid "%s constraints cannot be marked DEFERRABLE" -msgstr "las restricciones %s no pueden ser marcadas DEFERRABLE" +msgid "invalidly formatted response from Ident server: \"%s\"" +msgstr "respuesta del servidor Ident en formato no válido: «%s»" -#. translator: %s is CHECK, UNIQUE, or similar -#: gram.y:14916 +#: libpq/auth.c:1743 #, c-format -msgid "%s constraints cannot be marked NOT VALID" -msgstr "las restricciones %s no pueden ser marcadas NOT VALID" +msgid "peer authentication is not supported on this platform" +msgstr "método de autentificación peer no está soportado en esta plataforma" -#. translator: %s is CHECK, UNIQUE, or similar -#: gram.y:14929 +#: libpq/auth.c:1747 #, c-format -msgid "%s constraints cannot be marked NO INHERIT" -msgstr "las restricciones %s no pueden ser marcadas NO INHERIT" +msgid "could not get peer credentials: %m" +msgstr "no se pudo recibir credenciales: %m" -#: guc-file.l:313 +#: libpq/auth.c:1756 #, c-format -msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %u" -msgstr "parámetro de configuración «%s» no reconocido en el archivo «%s» línea %u" +msgid "could not look up local user ID %ld: %s" +msgstr "no se pudo encontrar el ID del usuario local %ld: %s" -#: guc-file.l:350 utils/misc/guc.c:5898 utils/misc/guc.c:6091 -#: utils/misc/guc.c:6181 utils/misc/guc.c:6271 utils/misc/guc.c:6379 -#: utils/misc/guc.c:6474 +#: libpq/auth.c:1844 #, c-format -msgid "parameter \"%s\" cannot be changed without restarting the server" -msgstr "el parámetro «%s» no se puede cambiar sin reiniciar el servidor" +msgid "error from underlying PAM layer: %s" +msgstr "se ha recibido un error de la biblioteca PAM: %s" -#: guc-file.l:386 +#: libpq/auth.c:1925 #, c-format -msgid "parameter \"%s\" removed from configuration file, reset to default" -msgstr "parámetro «%s» eliminado del archivo de configuración, volviendo al valor por omisión" +msgid "could not create PAM authenticator: %s" +msgstr "no se pudo crear autenticador PAM: %s" -#: guc-file.l:452 +#: libpq/auth.c:1936 #, c-format -msgid "parameter \"%s\" changed to \"%s\"" -msgstr "el parámetro «%s» fue cambiado a «%s»" +msgid "pam_set_item(PAM_USER) failed: %s" +msgstr "pam_set_item(PAM_USER) falló: %s" -#: guc-file.l:494 +#: libpq/auth.c:1947 #, c-format -msgid "configuration file \"%s\" contains errors" -msgstr "el archivo de configuración «%s» contiene errores" +msgid "pam_set_item(PAM_RHOST) failed: %s" +msgstr "pam_set_item(PAM_RHOST) falló: %s" -#: guc-file.l:499 +#: libpq/auth.c:1958 #, c-format -msgid "configuration file \"%s\" contains errors; unaffected changes were applied" -msgstr "el archivo de configuración «%s» contiene errores; los cambios no afectados fueron aplicados" +msgid "pam_set_item(PAM_CONV) failed: %s" +msgstr "pam_set_item(PAM_CONV) falló: %s" -#: guc-file.l:504 +#: libpq/auth.c:1969 #, c-format -msgid "configuration file \"%s\" contains errors; no changes were applied" -msgstr "el archivo de configuración «%s» contiene errores; no se aplicó ningún cambio" +msgid "pam_authenticate failed: %s" +msgstr "pam_authenticate falló: %s" -#: guc-file.l:577 +#: libpq/auth.c:1980 #, c-format -msgid "could not open configuration file \"%s\": maximum nesting depth exceeded" -msgstr "no se pudo abrir el archivo de configuración «%s»: nivel de anidamiento máximo excedido" +msgid "pam_acct_mgmt failed: %s" +msgstr "pam_acct_mgmt falló: %s" -#: guc-file.l:593 libpq/hba.c:1806 +#: libpq/auth.c:1991 #, c-format -msgid "could not open configuration file \"%s\": %m" -msgstr "no se pudo abrir el archivo de configuración «%s»: %m" +msgid "could not release PAM authenticator: %s" +msgstr "no se pudo liberar autenticador PAM: %s" -#: guc-file.l:604 +#: libpq/auth.c:2056 #, c-format -msgid "skipping missing configuration file \"%s\"" -msgstr "saltando el archivo de configuración faltante «%s»" +msgid "could not initialize LDAP: %m" +msgstr "no se pudo inicializar LDAP: %m" -#: guc-file.l:858 +#: libpq/auth.c:2059 #, c-format -msgid "syntax error in file \"%s\" line %u, near end of line" -msgstr "error de sintaxis en el archivo «%s» línea %u, cerca del fin de línea" +msgid "could not initialize LDAP: error code %d" +msgstr "no se pudo inicializar LDAP: código de error %d" -#: guc-file.l:868 +#: libpq/auth.c:2069 #, c-format -msgid "syntax error in file \"%s\" line %u, near token \"%s\"" -msgstr "error de sintaxis en el archivo «%s» línea %u, cerca de la palabra «%s»" +msgid "could not set LDAP protocol version: %s" +msgstr "no se pudo definir la versión de protocolo LDAP: %s" -#: guc-file.l:888 +#: libpq/auth.c:2098 #, c-format -msgid "too many syntax errors found, abandoning file \"%s\"" -msgstr "se encontraron demasiados errores de sintaxis, abandonando el archivo «%s»" +msgid "could not load wldap32.dll" +msgstr "no se pudo cargar wldap32.dll" -#: guc-file.l:940 +#: libpq/auth.c:2106 #, c-format -msgid "could not open configuration directory \"%s\": %m" -msgstr "no se pudo abrir el directorio de configuración «%s»: %m" +msgid "could not load function _ldap_start_tls_sA in wldap32.dll" +msgstr "no se pudo cargar la función _ldap_start_tls_sA en wldap32.dll" -#: lib/stringinfo.c:259 +#: libpq/auth.c:2107 #, c-format -msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes." -msgstr "No se puede agrandar el búfer de cadena que ya tiene %d bytes en %d bytes adicionales." +msgid "LDAP over SSL is not supported on this platform." +msgstr "LDAP sobre SSL no está soportado en esta plataforma." -#: libpq/auth.c:251 +#: libpq/auth.c:2122 #, c-format -msgid "authentication failed for user \"%s\": host rejected" -msgstr "la autentificación falló para el usuario «%s»: anfitrión rechazado" +msgid "could not start LDAP TLS session: %s" +msgstr "no se pudo iniciar sesión de LDAP TLS: %s" -#: libpq/auth.c:254 +#: libpq/auth.c:2144 #, c-format -msgid "\"trust\" authentication failed for user \"%s\"" -msgstr "la autentificación «trust» falló para el usuario «%s»" +msgid "LDAP server not specified" +msgstr "servidor LDAP no especificado" -#: libpq/auth.c:257 +#: libpq/auth.c:2192 #, c-format -msgid "Ident authentication failed for user \"%s\"" -msgstr "la autentificación Ident falló para el usuario «%s»" +msgid "invalid character in user name for LDAP authentication" +msgstr "carácter no válido en nombre de usuario para autentificación LDAP" -#: libpq/auth.c:260 +#: libpq/auth.c:2207 #, c-format -msgid "Peer authentication failed for user \"%s\"" -msgstr "la autentificación Peer falló para el usuario «%s»" +msgid "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": %s" +msgstr "no se pudo hacer el enlace LDAP inicial para el ldapbinddb «%s» en el servidor «%s»: %s" -#: libpq/auth.c:264 +#: libpq/auth.c:2231 #, c-format -msgid "password authentication failed for user \"%s\"" -msgstr "la autentificación password falló para el usuario «%s»" +msgid "could not search LDAP for filter \"%s\" on server \"%s\": %s" +msgstr "no se pudo hacer la búsqueda LDAP para el filtro «%s» en el servidor «%s»: %s" -#: libpq/auth.c:269 +#: libpq/auth.c:2242 #, c-format -msgid "GSSAPI authentication failed for user \"%s\"" -msgstr "la autentificación GSSAPI falló para el usuario «%s»" +msgid "LDAP user \"%s\" does not exist" +msgstr "no existe el usuario LDAP «%s»" -#: libpq/auth.c:272 +#: libpq/auth.c:2243 #, c-format -msgid "SSPI authentication failed for user \"%s\"" -msgstr "la autentificación SSPI falló para el usuario «%s»" +msgid "LDAP search for filter \"%s\" on server \"%s\" returned no entries." +msgstr "La búsqueda LDAP para el filtro «%s» en el servidor «%s» no retornó elementos." -#: libpq/auth.c:275 +#: libpq/auth.c:2247 #, c-format -msgid "PAM authentication failed for user \"%s\"" -msgstr "la autentificación PAM falló para el usuario «%s»" +msgid "LDAP user \"%s\" is not unique" +msgstr "el usuario LDAP «%s» no es única" -#: libpq/auth.c:278 -#, fuzzy, c-format -#| msgid "SSPI authentication failed for user \"%s\"" -msgid "BSD authentication failed for user \"%s\"" -msgstr "la autentificación SSPI falló para el usuario «%s»" +#: libpq/auth.c:2248 +#, c-format +msgid "LDAP search for filter \"%s\" on server \"%s\" returned %d entry." +msgid_plural "LDAP search for filter \"%s\" on server \"%s\" returned %d entries." +msgstr[0] "La búsqueda LDAP para el filtro «%s» en el servidor «%s» retornó %d elemento." +msgstr[1] "La búsqueda LDAP para el filtro «%s» en el servidor «%s» retornó %d elementos." -#: libpq/auth.c:281 +#: libpq/auth.c:2266 #, c-format -msgid "LDAP authentication failed for user \"%s\"" -msgstr "la autentificación LDAP falló para el usuario «%s»" +msgid "could not get dn for the first entry matching \"%s\" on server \"%s\": %s" +msgstr "no se pudo obtener el dn para la primera entrada que coincide con «%s» en el servidor «%s»: %s" -#: libpq/auth.c:284 +#: libpq/auth.c:2286 #, c-format -msgid "certificate authentication failed for user \"%s\"" -msgstr "la autentificación por certificado falló para el usuario «%s»" +msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s" +msgstr "no se pudo desconectar después de buscar al usuario «%s» en el servidor «%s»: %s" -#: libpq/auth.c:287 +#: libpq/auth.c:2316 #, c-format -msgid "RADIUS authentication failed for user \"%s\"" -msgstr "la autentificación RADIUS falló para el usuario «%s»" +msgid "LDAP login failed for user \"%s\" on server \"%s\": %s" +msgstr "falló el inicio de sesión LDAP para el usuario «%s» en el servidor «%s»: %s" -#: libpq/auth.c:290 +#: libpq/auth.c:2344 #, c-format -msgid "authentication failed for user \"%s\": invalid authentication method" -msgstr "la autentificación falló para el usuario «%s»: método de autentificación no válido" +msgid "certificate authentication failed for user \"%s\": client certificate contains no user name" +msgstr "la autentificación con certificado falló para el usuario «%s»: el certificado de cliente no contiene un nombre de usuario" -#: libpq/auth.c:294 +#: libpq/auth.c:2474 #, c-format -msgid "Connection matched pg_hba.conf line %d: \"%s\"" -msgstr "La conexión coincidió con la línea %d de pg_hba.conf: «%s»" +msgid "RADIUS server not specified" +msgstr "servidor RADIUS no especificado" -#: libpq/auth.c:349 +#: libpq/auth.c:2481 #, c-format -msgid "connection requires a valid client certificate" -msgstr "la conexión requiere un certificado de cliente válido" +msgid "RADIUS secret not specified" +msgstr "secreto RADIUS no especificado" -#: libpq/auth.c:391 +#: libpq/auth.c:2497 libpq/hba.c:1632 #, c-format -msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s" -msgstr "pg_hba.conf rechaza la conexión de replicación para el servidor «%s», usuario «%s», %s" - -#: libpq/auth.c:393 libpq/auth.c:409 libpq/auth.c:467 libpq/auth.c:485 -msgid "SSL off" -msgstr "SSL inactivo" - -#: libpq/auth.c:393 libpq/auth.c:409 libpq/auth.c:467 libpq/auth.c:485 -msgid "SSL on" -msgstr "SSL activo" +msgid "could not translate RADIUS server name \"%s\" to address: %s" +msgstr "no se pudo traducir el nombre de servidor RADIUS «%s» a dirección: %s" -#: libpq/auth.c:397 +#: libpq/auth.c:2518 #, c-format -msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\"" -msgstr "pg_hba.conf rechaza la conexión de replicación para el servidor «%s», usuario «%s»" +msgid "RADIUS authentication does not support passwords longer than %d characters" +msgstr "la autentificación RADIUS no soporta contraseñas más largas de %d caracteres" -#: libpq/auth.c:406 +#: libpq/auth.c:2530 #, c-format -msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\", %s" -msgstr "pg_hba.conf rechaza la conexión para el servidor «%s», usuario «%s», base de datos «%s», %s" +msgid "could not generate random encryption vector" +msgstr "no se pudo generar un vector aleatorio de encriptación" -#: libpq/auth.c:413 +#: libpq/auth.c:2568 #, c-format -msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\"" -msgstr "pg_hba.conf rechaza la conexión para el servidor «%s», usuario «%s», base de datos «%s»" +msgid "could not perform MD5 encryption of password" +msgstr "no se pudo efectuar cifrado MD5 de la contraseña" -#: libpq/auth.c:442 +#: libpq/auth.c:2593 #, c-format -msgid "Client IP address resolved to \"%s\", forward lookup matches." -msgstr "La dirección IP del cliente fue resuelta a «%s», este resultado es coincidente." +msgid "could not create RADIUS socket: %m" +msgstr "no se pudo crear el socket RADIUS: %m" -#: libpq/auth.c:445 +#: libpq/auth.c:2614 #, c-format -msgid "Client IP address resolved to \"%s\", forward lookup not checked." -msgstr "La dirección IP del cliente fue resuelta a «%s», este resultado no fue verificado." +msgid "could not bind local RADIUS socket: %m" +msgstr "no se pudo enlazar el socket RADIUS local: %m" -#: libpq/auth.c:448 +#: libpq/auth.c:2624 #, c-format -msgid "Client IP address resolved to \"%s\", forward lookup does not match." -msgstr "La dirección IP del cliente fue resuelta a «%s», este resultado no es coincidente." +msgid "could not send RADIUS packet: %m" +msgstr "no se pudo enviar el paquete RADIUS: %m" -#: libpq/auth.c:451 +#: libpq/auth.c:2657 libpq/auth.c:2682 #, c-format -msgid "Could not translate client host name \"%s\" to IP address: %s." -msgstr "No se pudo traducir el nombre de host del cliente «%s» a una dirección IP: %s." +msgid "timeout waiting for RADIUS response" +msgstr "se agotó el tiempo de espera de la respuesta RADIUS" -#: libpq/auth.c:456 +#: libpq/auth.c:2675 #, c-format -msgid "Could not resolve client IP address to a host name: %s." -msgstr "No se pudo obtener la dirección IP del cliente a un nombre de host: %s." +msgid "could not check status on RADIUS socket: %m" +msgstr "no se pudo verificar el estado en el socket %m" -#: libpq/auth.c:465 +#: libpq/auth.c:2704 #, c-format -msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\", %s" -msgstr "no hay una línea en pg_hba.conf para la conexión de replicación desde el servidor «%s», usuario «%s», %s" +msgid "could not read RADIUS response: %m" +msgstr "no se pudo leer la respuesta RADIUS: %m" -#: libpq/auth.c:472 +#: libpq/auth.c:2716 libpq/auth.c:2720 #, c-format -msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\"" -msgstr "no hay una línea en pg_hba.conf para la conexión de replicación desde el servidor «%s», usuario «%s»" +msgid "RADIUS response was sent from incorrect port: %d" +msgstr "la respuesta RADIUS fue enviada desde el port incorrecto: %d" -#: libpq/auth.c:482 +#: libpq/auth.c:2729 #, c-format -msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s" -msgstr "no hay una línea en pg_hba.conf para «%s», usuario «%s», base de datos «%s», %s" +msgid "RADIUS response too short: %d" +msgstr "la respuesta RADIUS es demasiado corta: %d" -#: libpq/auth.c:490 +#: libpq/auth.c:2736 #, c-format -msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\"" -msgstr "no hay una línea en pg_hba.conf para «%s», usuario «%s», base de datos «%s»" +msgid "RADIUS response has corrupt length: %d (actual length %d)" +msgstr "la respuesta RADIUS tiene largo corrupto: %d (largo real %d)" -#: libpq/auth.c:533 libpq/hba.c:1178 +#: libpq/auth.c:2744 #, c-format -msgid "MD5 authentication is not supported when \"db_user_namespace\" is enabled" -msgstr "la autentificación MD5 no está soportada cuando «db_user_namespace» está activo" +msgid "RADIUS response is to a different request: %d (should be %d)" +msgstr "la respuesta RADIUS es a una petición diferente: %d (debería ser %d)" -#: libpq/auth.c:667 +#: libpq/auth.c:2769 #, c-format -msgid "expected password response, got message type %d" -msgstr "se esperaba una respuesta de contraseña, se obtuvo mensaje de tipo %d" +msgid "could not perform MD5 encryption of received packet" +msgstr "no se pudo realizar cifrado MD5 del paquete recibido" -#: libpq/auth.c:695 +#: libpq/auth.c:2778 #, c-format -msgid "invalid password packet size" -msgstr "el tamaño del paquete de contraseña no es válido" +msgid "RADIUS response has incorrect MD5 signature" +msgstr "la respuesta RADIUS tiene firma MD5 incorrecta" -#: libpq/auth.c:825 +#: libpq/auth.c:2795 #, c-format -msgid "GSSAPI is not supported in protocol version 2" -msgstr "GSSAPI no está soportado por el protocolo versión 2" +msgid "RADIUS response has invalid code (%d) for user \"%s\"" +msgstr "la respuesta RADIUS tiene código no válido (%d) para el usuario «%s»" -#: libpq/auth.c:885 +#: libpq/be-fsstubs.c:132 libpq/be-fsstubs.c:163 libpq/be-fsstubs.c:197 +#: libpq/be-fsstubs.c:237 libpq/be-fsstubs.c:262 libpq/be-fsstubs.c:310 +#: libpq/be-fsstubs.c:333 libpq/be-fsstubs.c:581 #, c-format -msgid "expected GSS response, got message type %d" -msgstr "se esperaba una respuesta GSS, se obtuvo mensaje de tipo %d" - -#: libpq/auth.c:946 -msgid "accepting GSS security context failed" -msgstr "falló la aceptación del contexto de seguridad GSS" - -#: libpq/auth.c:972 -msgid "retrieving GSS user name failed" -msgstr "falló la obtención del nombre de usuario GSS" +msgid "invalid large-object descriptor: %d" +msgstr "el descriptor de objeto grande no es válido: %d" -#: libpq/auth.c:1091 +#: libpq/be-fsstubs.c:178 libpq/be-fsstubs.c:216 libpq/be-fsstubs.c:600 +#: libpq/be-fsstubs.c:788 libpq/be-fsstubs.c:908 #, c-format -msgid "SSPI is not supported in protocol version 2" -msgstr "SSPI no está soportado por el protocolo versión 2" - -#: libpq/auth.c:1106 -msgid "could not acquire SSPI credentials" -msgstr "no se pudo obtener las credenciales SSPI" +msgid "permission denied for large object %u" +msgstr "permiso denegado al objeto grande %u" -#: libpq/auth.c:1124 +#: libpq/be-fsstubs.c:203 libpq/be-fsstubs.c:587 #, c-format -msgid "expected SSPI response, got message type %d" -msgstr "se esperaba una respuesta SSPI, se obtuvo mensaje de tipo %d" - -#: libpq/auth.c:1196 -msgid "could not accept SSPI security context" -msgstr "no se pudo aceptar un contexto SSPI" - -#: libpq/auth.c:1258 -msgid "could not get token from SSPI security context" -msgstr "no se pudo obtener un testigo (token) desde el contexto de seguridad SSPI" - -#: libpq/auth.c:1377 libpq/auth.c:1396 -#, fuzzy, c-format -#| msgid "could not parse file name \"%s\"" -msgid "could not translate name" -msgstr "no se pudo interpretar el nombre de archivo «%s»" - -#: libpq/auth.c:1409 -#, fuzzy, c-format -#| msgid "channel name too long" -msgid "realm name too long" -msgstr "el nombre de canal es demasiado largo" - -#: libpq/auth.c:1424 -#, fuzzy, c-format -#| msgid "encoding name too long" -msgid "translated account name too long" -msgstr "el nombre de codificación es demasiado largo" +msgid "large object descriptor %d was not opened for writing" +msgstr "el descriptor de objeto grande %d no fue abierto para escritura" -#: libpq/auth.c:1610 +#: libpq/be-fsstubs.c:245 #, c-format -msgid "could not create socket for Ident connection: %m" -msgstr "no se pudo crear un socket para conexión Ident: %m" +msgid "lo_lseek result out of range for large-object descriptor %d" +msgstr "el resultado de lo_lseek está fuera de rango para el descriptor de objeto grande %d" -#: libpq/auth.c:1625 +#: libpq/be-fsstubs.c:318 #, c-format -msgid "could not bind to local address \"%s\": %m" -msgstr "no se pudo enlazar a la dirección local «%s»: %m" +msgid "lo_tell result out of range for large-object descriptor %d" +msgstr "el resultado de lo_tell está fuera de rango para el descriptor de objeto grande %d" -#: libpq/auth.c:1637 +#: libpq/be-fsstubs.c:455 #, c-format -msgid "could not connect to Ident server at address \"%s\", port %s: %m" -msgstr "no se pudo conectar al servidor Ident «%s», port %s: %m" +msgid "must be superuser to use server-side lo_import()" +msgstr "debe ser superusuario para utilizar lo_import() en el extremo del servidor" -#: libpq/auth.c:1659 +#: libpq/be-fsstubs.c:456 #, c-format -msgid "could not send query to Ident server at address \"%s\", port %s: %m" -msgstr "no se pudo enviar consulta Ident al servidor «%s», port %s: %m" +msgid "Anyone can use the client-side lo_import() provided by libpq." +msgstr "Todos los usuarios pueden utilizar lo_import() de cliente proporcionada por libpq." -#: libpq/auth.c:1676 +#: libpq/be-fsstubs.c:469 #, c-format -msgid "could not receive response from Ident server at address \"%s\", port %s: %m" -msgstr "no se pudo recibir respuesta Ident desde el servidor «%s», port %s: %m" +msgid "could not open server file \"%s\": %m" +msgstr "no se pudo abrir el archivo de servidor «%s»: %m" -#: libpq/auth.c:1686 +#: libpq/be-fsstubs.c:491 #, c-format -msgid "invalidly formatted response from Ident server: \"%s\"" -msgstr "respuesta del servidor Ident en formato no válido: «%s»" +msgid "could not read server file \"%s\": %m" +msgstr "no se pudo leer el archivo de servidor «%s»: %m" -#: libpq/auth.c:1726 +#: libpq/be-fsstubs.c:521 #, c-format -msgid "peer authentication is not supported on this platform" -msgstr "método de autentificación peer no está soportado en esta plataforma" +msgid "must be superuser to use server-side lo_export()" +msgstr "debe ser superusuario para utilizar lo_export() en el extremo del servidor" -#: libpq/auth.c:1730 +#: libpq/be-fsstubs.c:522 #, c-format -msgid "could not get peer credentials: %m" -msgstr "no se pudo recibir credenciales: %m" +msgid "Anyone can use the client-side lo_export() provided by libpq." +msgstr "Todos los usuarios pueden utilizar lo_export() de cliente proporcionada por libpq." -#: libpq/auth.c:1739 +#: libpq/be-fsstubs.c:547 #, c-format -msgid "could not look up local user ID %ld: %s" -msgstr "no se pudo encontrar el ID del usuario local %ld: %s" +msgid "could not create server file \"%s\": %m" +msgstr "no se pudo crear el archivo del servidor «%s»: %m" -#: libpq/auth.c:1823 libpq/auth.c:2149 libpq/auth.c:2509 +#: libpq/be-fsstubs.c:559 #, c-format -msgid "empty password returned by client" -msgstr "el cliente retornó una contraseña vacía" +msgid "could not write server file \"%s\": %m" +msgstr "no se pudo escribir el archivo del servidor «%s»: %m" -#: libpq/auth.c:1833 +#: libpq/be-fsstubs.c:813 #, c-format -msgid "error from underlying PAM layer: %s" -msgstr "se ha recibido un error de la biblioteca PAM: %s" +msgid "large object read request is too large" +msgstr "el tamaño de petición de lectura de objeto grande es muy grande" -#: libpq/auth.c:1914 +#: libpq/be-fsstubs.c:855 utils/adt/genfile.c:211 utils/adt/genfile.c:252 #, c-format -msgid "could not create PAM authenticator: %s" -msgstr "no se pudo crear autenticador PAM: %s" +msgid "requested length cannot be negative" +msgstr "el tamaño solicitado no puede ser negativo" -#: libpq/auth.c:1925 +#: libpq/be-secure-openssl.c:189 #, c-format -msgid "pam_set_item(PAM_USER) failed: %s" -msgstr "pam_set_item(PAM_USER) falló: %s" +msgid "could not create SSL context: %s" +msgstr "no se pudo crear un contexto SSL: %s" -#: libpq/auth.c:1936 -#, fuzzy, c-format -#| msgid "pam_set_item(PAM_USER) failed: %s" -msgid "pam_set_item(PAM_RHOST) failed: %s" -msgstr "pam_set_item(PAM_USER) falló: %s" +#: libpq/be-secure-openssl.c:205 +#, c-format +msgid "could not load server certificate file \"%s\": %s" +msgstr "no se pudo cargar el archivo de certificado de servidor «%s»: %s" -#: libpq/auth.c:1947 +#: libpq/be-secure-openssl.c:211 #, c-format -msgid "pam_set_item(PAM_CONV) failed: %s" -msgstr "pam_set_item(PAM_CONV) falló: %s" +msgid "could not access private key file \"%s\": %m" +msgstr "no se pudo acceder al archivo de la llave privada «%s»: %m" -#: libpq/auth.c:1958 +#: libpq/be-secure-openssl.c:217 #, c-format -msgid "pam_authenticate failed: %s" -msgstr "pam_authenticate falló: %s" +msgid "private key file \"%s\" is not a regular file" +msgstr "el archivo de llave privada «%s» no es un archivo regular" -#: libpq/auth.c:1969 +#: libpq/be-secure-openssl.c:229 #, c-format -msgid "pam_acct_mgmt failed: %s" -msgstr "pam_acct_mgmt falló: %s" +msgid "private key file \"%s\" must be owned by the database user or root" +msgstr "el archivo de llave privada «%s» debe ser de propiedad del usuario de base de datos o root" -#: libpq/auth.c:1980 +#: libpq/be-secure-openssl.c:249 #, c-format -msgid "could not release PAM authenticator: %s" -msgstr "no se pudo liberar autenticador PAM: %s" +msgid "private key file \"%s\" has group or world access" +msgstr "el archivo de la llave privada «%s» tiene acceso para el grupo u otros" -#: libpq/auth.c:2045 +#: libpq/be-secure-openssl.c:251 #, c-format -msgid "could not initialize LDAP: %m" -msgstr "no se pudo inicializar LDAP: %m" +msgid "File must have permissions u=rw (0600) or less if owned by the database user, or permissions u=rw,g=r (0640) or less if owned by root." +msgstr "El archivo debe tener permisos u=rw (0600) o menos si es de propiedad del usuario de base deatos, o permisos u=rw,g=r (0640) o menos si es de root." -#: libpq/auth.c:2048 +#: libpq/be-secure-openssl.c:258 #, c-format -msgid "could not initialize LDAP: error code %d" -msgstr "no se pudo inicializar LDAP: código de error %d" +msgid "could not load private key file \"%s\": %s" +msgstr "no se pudo cargar el archivo de la llave privada «%s»: %s" -#: libpq/auth.c:2058 +#: libpq/be-secure-openssl.c:263 #, c-format -msgid "could not set LDAP protocol version: %s" -msgstr "no se pudo definir la versión de protocolo LDAP: %s" +msgid "check of private key failed: %s" +msgstr "falló la revisión de la llave privada: %s" -#: libpq/auth.c:2087 +#: libpq/be-secure-openssl.c:300 #, c-format -msgid "could not load wldap32.dll" -msgstr "no se pudo cargar wldap32.dll" +msgid "could not load root certificate file \"%s\": %s" +msgstr "no se pudo cargar el archivo del certificado raíz «%s»: %s" -#: libpq/auth.c:2095 +#: libpq/be-secure-openssl.c:324 #, c-format -msgid "could not load function _ldap_start_tls_sA in wldap32.dll" -msgstr "no se pudo cargar la función _ldap_start_tls_sA en wldap32.dll" +msgid "SSL certificate revocation list file \"%s\" ignored" +msgstr "ignorando lista de revocación de certificados SSL «%s»" -#: libpq/auth.c:2096 +#: libpq/be-secure-openssl.c:326 #, c-format -msgid "LDAP over SSL is not supported on this platform." -msgstr "LDAP sobre SSL no está soportado en esta plataforma." +msgid "SSL library does not support certificate revocation lists." +msgstr "La libreria SSL no soporta listas de revocación de certificados." -#: libpq/auth.c:2111 +#: libpq/be-secure-openssl.c:331 #, c-format -msgid "could not start LDAP TLS session: %s" -msgstr "no se pudo iniciar sesión de LDAP TLS: %s" +msgid "could not load SSL certificate revocation list file \"%s\": %s" +msgstr "no se pudo cargar el archivo de lista de revocación de certificados SSL «%s»: %s" -#: libpq/auth.c:2133 +#: libpq/be-secure-openssl.c:378 #, c-format -msgid "LDAP server not specified" -msgstr "servidor LDAP no especificado" +msgid "could not initialize SSL connection: %s" +msgstr "no se pudo inicializar la conexión SSL: %s" -#: libpq/auth.c:2186 +#: libpq/be-secure-openssl.c:386 #, c-format -msgid "invalid character in user name for LDAP authentication" -msgstr "carácter no válido en nombre de usuario para autentificación LDAP" +msgid "could not set SSL socket: %s" +msgstr "no se definir un socket SSL: %s" -#: libpq/auth.c:2201 +#: libpq/be-secure-openssl.c:440 #, c-format -msgid "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": %s" -msgstr "no se pudo hacer el enlace LDAP inicial para el ldapbinddb «%s» en el servidor «%s»: %s" +msgid "could not accept SSL connection: %m" +msgstr "no se pudo aceptar una conexión SSL: %m" -#: libpq/auth.c:2225 +#: libpq/be-secure-openssl.c:444 libpq/be-secure-openssl.c:455 #, c-format -msgid "could not search LDAP for filter \"%s\" on server \"%s\": %s" -msgstr "no se pudo hacer la búsqueda LDAP para el filtro «%s» en el servidor «%s»: %s" +msgid "could not accept SSL connection: EOF detected" +msgstr "no se pudo aceptar una conexión SSL: se detectó EOF" -#: libpq/auth.c:2236 +#: libpq/be-secure-openssl.c:449 #, c-format -msgid "LDAP user \"%s\" does not exist" -msgstr "no existe el usuario LDAP «%s»" +msgid "could not accept SSL connection: %s" +msgstr "no se pudo aceptar una conexión SSL: %s" -#: libpq/auth.c:2237 +#: libpq/be-secure-openssl.c:460 libpq/be-secure-openssl.c:603 +#: libpq/be-secure-openssl.c:669 #, c-format -msgid "LDAP search for filter \"%s\" on server \"%s\" returned no entries." -msgstr "La búsqueda LDAP para el filtro «%s» en el servidor «%s» no retornó elementos." +msgid "unrecognized SSL error code: %d" +msgstr "código de error SSL no reconocido: %d" -#: libpq/auth.c:2241 +#: libpq/be-secure-openssl.c:504 #, c-format -msgid "LDAP user \"%s\" is not unique" -msgstr "el usuario LDAP «%s» no es única" +msgid "SSL certificate's common name contains embedded null" +msgstr "el «common name» del certificado SSL contiene un carácter null" -#: libpq/auth.c:2242 +#: libpq/be-secure-openssl.c:515 #, c-format -msgid "LDAP search for filter \"%s\" on server \"%s\" returned %d entry." -msgid_plural "LDAP search for filter \"%s\" on server \"%s\" returned %d entries." -msgstr[0] "La búsqueda LDAP para el filtro «%s» en el servidor «%s» retornó %d elemento." -msgstr[1] "La búsqueda LDAP para el filtro «%s» en el servidor «%s» retornó %d elementos." +msgid "SSL connection from \"%s\"" +msgstr "conexión SSL desde «%s»" -#: libpq/auth.c:2260 +#: libpq/be-secure-openssl.c:592 libpq/be-secure-openssl.c:654 #, c-format -msgid "could not get dn for the first entry matching \"%s\" on server \"%s\": %s" -msgstr "no se pudo obtener el dn para la primera entrada que coincide con «%s» en el servidor «%s»: %s" +msgid "SSL error: %s" +msgstr "error de SSL: %s" -#: libpq/auth.c:2280 +#: libpq/be-secure-openssl.c:1071 #, c-format -msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s" -msgstr "no se pudo desconectar después de buscar al usuario «%s» en el servidor «%s»: %s" +msgid "ECDH: unrecognized curve name: %s" +msgstr "ECDH: nombre de curva no reconocida: %s" -#: libpq/auth.c:2310 +#: libpq/be-secure-openssl.c:1076 #, c-format -msgid "LDAP login failed for user \"%s\" on server \"%s\": %s" -msgstr "falló el inicio de sesión LDAP para el usuario «%s» en el servidor «%s»: %s" +msgid "ECDH: could not create key" +msgstr "ECDH: no se pudo crear la llave" -#: libpq/auth.c:2338 -#, c-format -msgid "certificate authentication failed for user \"%s\": client certificate contains no user name" -msgstr "la autentificación con certificado falló para el usuario «%s»: el certificado de cliente no contiene un nombre de usuario" +#: libpq/be-secure-openssl.c:1100 +msgid "no SSL error reported" +msgstr "código de error SSL no reportado" -#: libpq/auth.c:2465 +#: libpq/be-secure-openssl.c:1104 #, c-format -msgid "RADIUS server not specified" -msgstr "servidor RADIUS no especificado" +msgid "SSL error code %lu" +msgstr "código de error SSL %lu" -#: libpq/auth.c:2472 +#: libpq/be-secure.c:171 libpq/be-secure.c:256 #, c-format -msgid "RADIUS secret not specified" -msgstr "secreto RADIUS no especificado" +msgid "terminating connection due to unexpected postmaster exit" +msgstr "terminando la conexión debido al término inesperado de postmaster" -#: libpq/auth.c:2488 libpq/hba.c:1632 +#: libpq/crypt.c:54 #, c-format -msgid "could not translate RADIUS server name \"%s\" to address: %s" -msgstr "no se pudo traducir el nombre de servidor RADIUS «%s» a dirección: %s" - -#: libpq/auth.c:2516 -#, fuzzy, c-format -#| msgid "RADIUS authentication does not support passwords longer than 16 characters" -msgid "RADIUS authentication does not support passwords longer than %d characters" -msgstr "la autentificación RADIUS no soporta contraseñas más largas de 16 caracteres" +msgid "Role \"%s\" does not exist." +msgstr "No existe el rol «%s»." -#: libpq/auth.c:2528 +#: libpq/crypt.c:64 #, c-format -msgid "could not generate random encryption vector" -msgstr "no se pudo generar un vector aleatorio de encriptación" +msgid "User \"%s\" has no password assigned." +msgstr "El usuario «%s» no tiene una contraseña asignada." -#: libpq/auth.c:2566 +#: libpq/crypt.c:88 libpq/crypt.c:103 #, c-format -msgid "could not perform MD5 encryption of password" -msgstr "no se pudo efectuar cifrado MD5 de la contraseña" +msgid "User \"%s\" has an empty password." +msgstr "El usuario «%s» tiene contraseña vacía." -#: libpq/auth.c:2591 +#: libpq/crypt.c:184 #, c-format -msgid "could not create RADIUS socket: %m" -msgstr "no se pudo crear el socket RADIUS: %m" +msgid "User \"%s\" has an expired password." +msgstr "El usuario «%s» tiene contraseña expirada." -#: libpq/auth.c:2612 +#: libpq/crypt.c:192 #, c-format -msgid "could not bind local RADIUS socket: %m" -msgstr "no se pudo enlazar el socket RADIUS local: %m" +msgid "Password does not match for user \"%s\"." +msgstr "La contraseña no coincide para el usuario «%s»." -#: libpq/auth.c:2622 +#: libpq/hba.c:188 #, c-format -msgid "could not send RADIUS packet: %m" -msgstr "no se pudo enviar el paquete RADIUS: %m" +msgid "authentication file token too long, skipping: \"%s\"" +msgstr "una palabra en el archivo de autentificación es demasiado larga, ignorando: «%s»" -#: libpq/auth.c:2655 libpq/auth.c:2680 +#: libpq/hba.c:332 #, c-format -msgid "timeout waiting for RADIUS response" -msgstr "se agotó el tiempo de espera de la respuesta RADIUS" +msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m" +msgstr "no se pudo abrir el archivo secundario de autentificación «@%s» como «%s»: %m" -#: libpq/auth.c:2673 +#: libpq/hba.c:407 #, c-format -msgid "could not check status on RADIUS socket: %m" -msgstr "no se pudo verificar el estado en el socket %m" +msgid "authentication file line too long" +msgstr "línea en el archivo de autentificación demasiado larga" -#: libpq/auth.c:2702 +#: libpq/hba.c:408 libpq/hba.c:755 libpq/hba.c:771 libpq/hba.c:801 +#: libpq/hba.c:847 libpq/hba.c:860 libpq/hba.c:882 libpq/hba.c:891 +#: libpq/hba.c:912 libpq/hba.c:924 libpq/hba.c:943 libpq/hba.c:964 +#: libpq/hba.c:975 libpq/hba.c:1030 libpq/hba.c:1048 libpq/hba.c:1060 +#: libpq/hba.c:1077 libpq/hba.c:1087 libpq/hba.c:1101 libpq/hba.c:1117 +#: libpq/hba.c:1132 libpq/hba.c:1143 libpq/hba.c:1179 libpq/hba.c:1217 +#: libpq/hba.c:1228 libpq/hba.c:1248 libpq/hba.c:1259 libpq/hba.c:1276 +#: libpq/hba.c:1325 libpq/hba.c:1362 libpq/hba.c:1372 libpq/hba.c:1428 +#: libpq/hba.c:1440 libpq/hba.c:1453 libpq/hba.c:1545 libpq/hba.c:1634 +#: libpq/hba.c:1652 libpq/hba.c:1673 tsearch/ts_locale.c:182 #, c-format -msgid "could not read RADIUS response: %m" -msgstr "no se pudo leer la respuesta RADIUS: %m" +msgid "line %d of configuration file \"%s\"" +msgstr "línea %d del archivo de configuración «%s»" -#: libpq/auth.c:2714 libpq/auth.c:2718 +#. translator: the second %s is a list of auth methods +#: libpq/hba.c:753 #, c-format -msgid "RADIUS response was sent from incorrect port: %d" -msgstr "la respuesta RADIUS fue enviada desde el port incorrecto: %d" +msgid "authentication option \"%s\" is only valid for authentication methods %s" +msgstr "la opción de autentificación «%s» sólo es válida para los métodos de autentificación %s" -#: libpq/auth.c:2727 +#: libpq/hba.c:769 #, c-format -msgid "RADIUS response too short: %d" -msgstr "la respuesta RADIUS es demasiado corta: %d" +msgid "authentication method \"%s\" requires argument \"%s\" to be set" +msgstr "el método de autentificación «%s» requiere que el argumento «%s» esté definido" -#: libpq/auth.c:2734 +#: libpq/hba.c:790 #, c-format -msgid "RADIUS response has corrupt length: %d (actual length %d)" -msgstr "la respuesta RADIUS tiene largo corrupto: %d (largo real %d)" +msgid "missing entry in file \"%s\" at end of line %d" +msgstr "falta una entrada en el archivo «%s» al final de la línea %d" -#: libpq/auth.c:2742 +#: libpq/hba.c:800 #, c-format -msgid "RADIUS response is to a different request: %d (should be %d)" -msgstr "la respuesta RADIUS es a una petición diferente: %d (debería ser %d)" +msgid "multiple values in ident field" +msgstr "múltiples valores en campo «ident»" -#: libpq/auth.c:2767 +#: libpq/hba.c:845 #, c-format -msgid "could not perform MD5 encryption of received packet" -msgstr "no se pudo realizar cifrado MD5 del paquete recibido" +msgid "multiple values specified for connection type" +msgstr "múltiples valores especificados para tipo de conexión" -#: libpq/auth.c:2776 +#: libpq/hba.c:846 #, c-format -msgid "RADIUS response has incorrect MD5 signature" -msgstr "la respuesta RADIUS tiene firma MD5 incorrecta" +msgid "Specify exactly one connection type per line." +msgstr "Especifique exactamente un tipo de conexión por línea." -#: libpq/auth.c:2793 +#: libpq/hba.c:859 #, c-format -msgid "RADIUS response has invalid code (%d) for user \"%s\"" -msgstr "la respuesta RADIUS tiene código no válido (%d) para el usuario «%s»" +msgid "local connections are not supported by this build" +msgstr "las conexiones locales no están soportadas en este servidor" -#: libpq/be-fsstubs.c:132 libpq/be-fsstubs.c:163 libpq/be-fsstubs.c:197 -#: libpq/be-fsstubs.c:237 libpq/be-fsstubs.c:262 libpq/be-fsstubs.c:310 -#: libpq/be-fsstubs.c:333 libpq/be-fsstubs.c:581 +#: libpq/hba.c:880 #, c-format -msgid "invalid large-object descriptor: %d" -msgstr "el descriptor de objeto grande no es válido: %d" +msgid "hostssl requires SSL to be turned on" +msgstr "hostssl requiere que SSL esté activado" -#: libpq/be-fsstubs.c:178 libpq/be-fsstubs.c:216 libpq/be-fsstubs.c:600 -#: libpq/be-fsstubs.c:788 +#: libpq/hba.c:881 #, c-format -msgid "permission denied for large object %u" -msgstr "permiso denegado al objeto grande %u" +msgid "Set ssl = on in postgresql.conf." +msgstr "Defina «ssl = on» en postgresql.conf." -#: libpq/be-fsstubs.c:203 libpq/be-fsstubs.c:587 +#: libpq/hba.c:889 #, c-format -msgid "large object descriptor %d was not opened for writing" -msgstr "el descriptor de objeto grande %d no fue abierto para escritura" +msgid "hostssl is not supported by this build" +msgstr "hostssl no está soportado en este servidor" -#: libpq/be-fsstubs.c:245 +#: libpq/hba.c:890 #, c-format -msgid "lo_lseek result out of range for large-object descriptor %d" -msgstr "el resultado de lo_lseek está fuera de rango para el descriptor de objeto grande %d" +msgid "Compile with --with-openssl to use SSL connections." +msgstr "Compile con --with-openssl para usar conexiones SSL." -#: libpq/be-fsstubs.c:318 +#: libpq/hba.c:910 #, c-format -msgid "lo_tell result out of range for large-object descriptor %d" -msgstr "el resultado de lo_tell está fuera de rango para el descriptor de objeto grande %d" +msgid "invalid connection type \"%s\"" +msgstr "tipo de conexión «%s» no válido" -#: libpq/be-fsstubs.c:455 +#: libpq/hba.c:923 #, c-format -msgid "must be superuser to use server-side lo_import()" -msgstr "debe ser superusuario para utilizar lo_import() en el extremo del servidor" +msgid "end-of-line before database specification" +msgstr "fin de línea antes de especificación de base de datos" -#: libpq/be-fsstubs.c:456 +#: libpq/hba.c:942 #, c-format -msgid "Anyone can use the client-side lo_import() provided by libpq." -msgstr "Todos los usuarios pueden utilizar lo_import() de cliente proporcionada por libpq." +msgid "end-of-line before role specification" +msgstr "fin de línea antes de especificación de rol" -#: libpq/be-fsstubs.c:469 +#: libpq/hba.c:963 #, c-format -msgid "could not open server file \"%s\": %m" -msgstr "no se pudo abrir el archivo de servidor «%s»: %m" +msgid "end-of-line before IP address specification" +msgstr "fin de línea antes de especificación de dirección IP" -#: libpq/be-fsstubs.c:491 +#: libpq/hba.c:973 #, c-format -msgid "could not read server file \"%s\": %m" -msgstr "no se pudo leer el archivo de servidor «%s»: %m" +msgid "multiple values specified for host address" +msgstr "múltiples valores especificados para la dirección de anfitrión" -#: libpq/be-fsstubs.c:521 +#: libpq/hba.c:974 #, c-format -msgid "must be superuser to use server-side lo_export()" -msgstr "debe ser superusuario para utilizar lo_export() en el extremo del servidor" +msgid "Specify one address range per line." +msgstr "Especifique un rango de direcciones por línea." -#: libpq/be-fsstubs.c:522 +#: libpq/hba.c:1028 #, c-format -msgid "Anyone can use the client-side lo_export() provided by libpq." -msgstr "Todos los usuarios pueden utilizar lo_export() de cliente proporcionada por libpq." +msgid "invalid IP address \"%s\": %s" +msgstr "dirección IP «%s» no válida: %s" -#: libpq/be-fsstubs.c:547 +#: libpq/hba.c:1046 #, c-format -msgid "could not create server file \"%s\": %m" -msgstr "no se pudo crear el archivo del servidor «%s»: %m" +msgid "specifying both host name and CIDR mask is invalid: \"%s\"" +msgstr "especificar tanto el nombre de host como la máscara CIDR no es válido: «%s»" -#: libpq/be-fsstubs.c:559 +#: libpq/hba.c:1058 #, c-format -msgid "could not write server file \"%s\": %m" -msgstr "no se pudo escribir el archivo del servidor «%s»: %m" +msgid "invalid CIDR mask in address \"%s\"" +msgstr "máscara CIDR no válida en dirección «%s»" -#: libpq/be-fsstubs.c:813 +#: libpq/hba.c:1075 #, c-format -msgid "large object read request is too large" -msgstr "el tamaño de petición de lectura de objeto grande es muy grande" +msgid "end-of-line before netmask specification" +msgstr "fin de línea antes de especificación de máscara de red" -#: libpq/be-fsstubs.c:855 utils/adt/genfile.c:211 utils/adt/genfile.c:252 +#: libpq/hba.c:1076 #, c-format -msgid "requested length cannot be negative" -msgstr "el tamaño solicitado no puede ser negativo" +msgid "Specify an address range in CIDR notation, or provide a separate netmask." +msgstr "Especifique un rango de direcciones en notación CIDR, o provea una netmask separadamente." -#: libpq/be-secure-openssl.c:189 +#: libpq/hba.c:1086 #, c-format -msgid "could not create SSL context: %s" -msgstr "no se pudo crear un contexto SSL: %s" +msgid "multiple values specified for netmask" +msgstr "múltiples valores especificados para la máscara de red" -#: libpq/be-secure-openssl.c:205 +#: libpq/hba.c:1099 #, c-format -msgid "could not load server certificate file \"%s\": %s" -msgstr "no se pudo cargar el archivo de certificado de servidor «%s»: %s" +msgid "invalid IP mask \"%s\": %s" +msgstr "máscara IP «%s» no válida: %s" -#: libpq/be-secure-openssl.c:211 +#: libpq/hba.c:1116 #, c-format -msgid "could not access private key file \"%s\": %m" -msgstr "no se pudo acceder al archivo de la llave privada «%s»: %m" - -#: libpq/be-secure-openssl.c:217 -#, fuzzy, c-format -#| msgid "%s: file \"%s\" is not a regular file\n" -msgid "private key file \"%s\" is not a regular file" -msgstr "%s: el archivo «%s» no es un archivo regular\n" +msgid "IP address and mask do not match" +msgstr "La dirección y máscara IP no coinciden" -#: libpq/be-secure-openssl.c:229 +#: libpq/hba.c:1131 #, c-format -msgid "private key file \"%s\" must be owned by the database user or root" -msgstr "" +msgid "end-of-line before authentication method" +msgstr "fin de línea antes de especificación de método de autentificación" -#: libpq/be-secure-openssl.c:249 +#: libpq/hba.c:1141 #, c-format -msgid "private key file \"%s\" has group or world access" -msgstr "el archivo de la llave privada «%s» tiene acceso para el grupo u otros" +msgid "multiple values specified for authentication type" +msgstr "múltiples valores especificados para el tipo de autentificación" -#: libpq/be-secure-openssl.c:251 +#: libpq/hba.c:1142 #, c-format -msgid "File must have permissions u=rw (0600) or less if owned by the database user, or permissions u=rw,g=r (0640) or less if owned by root." -msgstr "" +msgid "Specify exactly one authentication type per line." +msgstr "Especifique exactamente un tipo de autentificación por línea." -#: libpq/be-secure-openssl.c:258 +#: libpq/hba.c:1215 #, c-format -msgid "could not load private key file \"%s\": %s" -msgstr "no se pudo cargar el archivo de la llave privada «%s»: %s" +msgid "invalid authentication method \"%s\"" +msgstr "método de autentificación «%s» no válido" -#: libpq/be-secure-openssl.c:263 +#: libpq/hba.c:1226 #, c-format -msgid "check of private key failed: %s" -msgstr "falló la revisión de la llave privada: %s" +msgid "invalid authentication method \"%s\": not supported by this build" +msgstr "método de autentificación «%s» no válido: este servidor no lo soporta" -#: libpq/be-secure-openssl.c:292 +#: libpq/hba.c:1247 #, c-format -msgid "could not load root certificate file \"%s\": %s" -msgstr "no se pudo cargar el archivo del certificado raíz «%s»: %s" +msgid "gssapi authentication is not supported on local sockets" +msgstr "la autentificación gssapi no está soportada en conexiones locales" -#: libpq/be-secure-openssl.c:316 +#: libpq/hba.c:1258 #, c-format -msgid "SSL certificate revocation list file \"%s\" ignored" -msgstr "ignorando lista de revocación de certificados SSL «%s»" +msgid "peer authentication is only supported on local sockets" +msgstr "la autentificación peer sólo está soportada en conexiones locales" -#: libpq/be-secure-openssl.c:318 +#: libpq/hba.c:1275 #, c-format -msgid "SSL library does not support certificate revocation lists." -msgstr "La libreria SSL no soporta listas de revocación de certificados." +msgid "cert authentication is only supported on hostssl connections" +msgstr "la autentificación cert sólo está soportada en conexiones hostssl" -#: libpq/be-secure-openssl.c:323 +#: libpq/hba.c:1324 #, c-format -msgid "could not load SSL certificate revocation list file \"%s\": %s" -msgstr "no se pudo cargar el archivo de lista de revocación de certificados SSL «%s»: %s" +msgid "authentication option not in name=value format: %s" +msgstr "opción de autentificación en formato nombre=valor: %s" -#: libpq/be-secure-openssl.c:370 +#: libpq/hba.c:1361 #, c-format -msgid "could not initialize SSL connection: %s" -msgstr "no se pudo inicializar la conexión SSL: %s" +msgid "cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, or ldapurl together with ldapprefix" +msgstr "no se puede usar ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute o ldapurl junto con ldapprefix" -#: libpq/be-secure-openssl.c:378 +#: libpq/hba.c:1371 #, c-format -msgid "could not set SSL socket: %s" -msgstr "no se definir un socket SSL: %s" +msgid "authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix\", or \"ldapsuffix\" to be set" +msgstr "el método de autentificación «ldap» requiere que los argumento «ldapbasedn», «ldapprefix» o «ldapsuffix» estén definidos" -#: libpq/be-secure-openssl.c:432 -#, c-format -msgid "could not accept SSL connection: %m" -msgstr "no se pudo aceptar una conexión SSL: %m" +#: libpq/hba.c:1414 +msgid "ident, peer, gssapi, sspi, and cert" +msgstr "ident, peer, gssapi, sspi y cert" -#: libpq/be-secure-openssl.c:436 libpq/be-secure-openssl.c:447 +#: libpq/hba.c:1427 #, c-format -msgid "could not accept SSL connection: EOF detected" -msgstr "no se pudo aceptar una conexión SSL: se detectó EOF" +msgid "clientcert can only be configured for \"hostssl\" rows" +msgstr "clientcert sólo puede ser configurado en líneas «hostssl»" -#: libpq/be-secure-openssl.c:441 +#: libpq/hba.c:1438 #, c-format -msgid "could not accept SSL connection: %s" -msgstr "no se pudo aceptar una conexión SSL: %s" +msgid "client certificates can only be checked if a root certificate store is available" +msgstr "los certificados de cliente sólo pueden verificarse si un almacén de certificado raíz está disponible" -#: libpq/be-secure-openssl.c:452 libpq/be-secure-openssl.c:593 -#: libpq/be-secure-openssl.c:653 +#: libpq/hba.c:1452 #, c-format -msgid "unrecognized SSL error code: %d" -msgstr "código de error SSL no reconocido: %d" +msgid "clientcert can not be set to 0 when using \"cert\" authentication" +msgstr "clientcert no puede establecerse en 0 cuando se emplea autentificación «cert»" -#: libpq/be-secure-openssl.c:496 +#: libpq/hba.c:1488 #, c-format -msgid "SSL certificate's common name contains embedded null" -msgstr "el «common name» del certificado SSL contiene un carácter null" +msgid "could not parse LDAP URL \"%s\": %s" +msgstr "no se pudo interpretar la URL LDAP «%s»: %s" -#: libpq/be-secure-openssl.c:507 +#: libpq/hba.c:1496 #, c-format -msgid "SSL connection from \"%s\"" -msgstr "conexión SSL desde «%s»" +msgid "unsupported LDAP URL scheme: %s" +msgstr "esquema de URL LDAP no soportado: %s" -#: libpq/be-secure-openssl.c:584 libpq/be-secure-openssl.c:644 +#: libpq/hba.c:1512 #, c-format -msgid "SSL error: %s" -msgstr "error de SSL: %s" +msgid "filters not supported in LDAP URLs" +msgstr "los filtros no están soportados en URLs LDAP" -#: libpq/be-secure-openssl.c:1055 +#: libpq/hba.c:1520 #, c-format -msgid "ECDH: unrecognized curve name: %s" -msgstr "ECDH: nombre de curva no reconocida: %s" +msgid "LDAP URLs not supported on this platform" +msgstr "las URLs LDAP no está soportado en esta plataforma" -#: libpq/be-secure-openssl.c:1060 +#: libpq/hba.c:1544 #, c-format -msgid "ECDH: could not create key" -msgstr "ECDH: no se pudo crear la llave" +msgid "invalid LDAP port number: \"%s\"" +msgstr "número de puerto LDAP no válido: «%s»" -#: libpq/be-secure-openssl.c:1084 -msgid "no SSL error reported" -msgstr "código de error SSL no reportado" +#: libpq/hba.c:1584 libpq/hba.c:1591 +msgid "gssapi and sspi" +msgstr "gssapi y sspi" -#: libpq/be-secure-openssl.c:1088 -#, c-format -msgid "SSL error code %lu" -msgstr "código de error SSL %lu" +#: libpq/hba.c:1600 libpq/hba.c:1609 +msgid "sspi" +msgstr "sspi" -#: libpq/be-secure.c:171 libpq/be-secure.c:256 -#, fuzzy, c-format -#| msgid "terminating connection due to administrator command" -msgid "terminating connection due to unexpected postmaster exit" -msgstr "terminando la conexión debido a una orden del administrador" +#: libpq/hba.c:1651 +#, c-format +msgid "invalid RADIUS port number: \"%s\"" +msgstr "número de puerto RADIUS no válido: «%s»" -#: libpq/crypt.c:54 -#, fuzzy, c-format -#| msgid "role \"%s\" does not exist" -msgid "Role \"%s\" does not exist." -msgstr "no existe el rol «%s»" +#: libpq/hba.c:1671 +#, c-format +msgid "unrecognized authentication option name: \"%s\"" +msgstr "nombre de opción de autentificación desconocido: «%s»" -#: libpq/crypt.c:64 +#: libpq/hba.c:1806 guc-file.l:593 #, c-format -msgid "User \"%s\" has no password assigned." -msgstr "El usuario «%s» no tiene una contraseña asignada." +msgid "could not open configuration file \"%s\": %m" +msgstr "no se pudo abrir el archivo de configuración «%s»: %m" -#: libpq/crypt.c:79 -#, fuzzy, c-format -#| msgid "User \"%s\" has an expired password." -msgid "User \"%s\" has an empty password." -msgstr "El usuario «%s» tiene contraseña expirada." +#: libpq/hba.c:1855 +#, c-format +msgid "configuration file \"%s\" contains no entries" +msgstr "el archivo de configuración «%s» no contiene líneas" -#: libpq/crypt.c:159 +#: libpq/hba.c:1951 #, c-format -msgid "User \"%s\" has an expired password." -msgstr "El usuario «%s» tiene contraseña expirada." +msgid "invalid regular expression \"%s\": %s" +msgstr "la expresión regular «%s» no es válida: %s" -#: libpq/crypt.c:167 -#, fuzzy, c-format -#| msgid "Password for user %s: " -msgid "Password does not match for user \"%s\"." -msgstr "Contraseña para usuario %s: " +#: libpq/hba.c:2011 +#, c-format +msgid "regular expression match for \"%s\" failed: %s" +msgstr "la coincidencia de expresión regular para «%s» falló: %s" -#: libpq/hba.c:188 +#: libpq/hba.c:2030 #, c-format -msgid "authentication file token too long, skipping: \"%s\"" -msgstr "una palabra en el archivo de autentificación es demasiado larga, ignorando: «%s»" +msgid "regular expression \"%s\" has no subexpressions as requested by backreference in \"%s\"" +msgstr "la expresión regular «%s» no tiene subexpresiones según lo requiere la referencia hacia atrás en «%s»" -#: libpq/hba.c:332 +#: libpq/hba.c:2127 #, c-format -msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m" -msgstr "no se pudo abrir el archivo secundario de autentificación «@%s» como «%s»: %m" +msgid "provided user name (%s) and authenticated user name (%s) do not match" +msgstr "el nombre de usuario entregado (%s) y el nombre de usuario autentificado (%s) no coinciden" -#: libpq/hba.c:407 +#: libpq/hba.c:2147 #, c-format -msgid "authentication file line too long" -msgstr "línea en el archivo de autentificación demasiado larga" +msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\"" +msgstr "no hay coincidencia en el mapa «%s» para el usuario «%s» autentificado como «%s»" -#: libpq/hba.c:408 libpq/hba.c:755 libpq/hba.c:771 libpq/hba.c:801 -#: libpq/hba.c:847 libpq/hba.c:860 libpq/hba.c:882 libpq/hba.c:891 -#: libpq/hba.c:912 libpq/hba.c:924 libpq/hba.c:943 libpq/hba.c:964 -#: libpq/hba.c:975 libpq/hba.c:1030 libpq/hba.c:1048 libpq/hba.c:1060 -#: libpq/hba.c:1077 libpq/hba.c:1087 libpq/hba.c:1101 libpq/hba.c:1117 -#: libpq/hba.c:1132 libpq/hba.c:1143 libpq/hba.c:1179 libpq/hba.c:1217 -#: libpq/hba.c:1228 libpq/hba.c:1248 libpq/hba.c:1259 libpq/hba.c:1276 -#: libpq/hba.c:1325 libpq/hba.c:1362 libpq/hba.c:1372 libpq/hba.c:1428 -#: libpq/hba.c:1440 libpq/hba.c:1453 libpq/hba.c:1545 libpq/hba.c:1634 -#: libpq/hba.c:1652 libpq/hba.c:1673 tsearch/ts_locale.c:182 +#: libpq/hba.c:2182 #, c-format -msgid "line %d of configuration file \"%s\"" -msgstr "línea %d del archivo de configuración «%s»" +msgid "could not open usermap file \"%s\": %m" +msgstr "no se pudo abrir el archivo de mapa de usuarios «%s»: %m" -#. translator: the second %s is a list of auth methods -#: libpq/hba.c:753 +#: libpq/pqcomm.c:221 #, c-format -msgid "authentication option \"%s\" is only valid for authentication methods %s" -msgstr "la opción de autentificación «%s» sólo es válida para los métodos de autentificación %s" +msgid "could not set socket to nonblocking mode: %m" +msgstr "no se pudo establecer el socket en modo no bloqueante: %m" -#: libpq/hba.c:769 +#: libpq/pqcomm.c:373 #, c-format -msgid "authentication method \"%s\" requires argument \"%s\" to be set" -msgstr "el método de autentificación «%s» requiere que el argumento «%s» esté definido" +msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)" +msgstr "la ruta al socket de dominio Unix «%s» es demasiado larga (máximo %d bytes)" -#: libpq/hba.c:790 +#: libpq/pqcomm.c:394 #, c-format -msgid "missing entry in file \"%s\" at end of line %d" -msgstr "falta una entrada en el archivo «%s» al final de la línea %d" +msgid "could not translate host name \"%s\", service \"%s\" to address: %s" +msgstr "no se pudo traducir el nombre de host «%s», servicio «%s» a dirección: %s" -#: libpq/hba.c:800 +#: libpq/pqcomm.c:398 #, c-format -msgid "multiple values in ident field" -msgstr "múltiples valores en campo «ident»" +msgid "could not translate service \"%s\" to address: %s" +msgstr "no se pudo traducir el servicio «%s» a dirección: %s" -#: libpq/hba.c:845 +#: libpq/pqcomm.c:425 #, c-format -msgid "multiple values specified for connection type" -msgstr "múltiples valores especificados para tipo de conexión" +msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded" +msgstr "no se pudo enlazar a todas las direcciones pedidas: MAXLISTEN (%d) fue excedido" -#: libpq/hba.c:846 +#: libpq/pqcomm.c:434 +msgid "IPv4" +msgstr "IPv4" + +#: libpq/pqcomm.c:438 +msgid "IPv6" +msgstr "IPv6" + +#: libpq/pqcomm.c:443 +msgid "Unix" +msgstr "Unix" + +#: libpq/pqcomm.c:448 #, c-format -msgid "Specify exactly one connection type per line." -msgstr "Especifique exactamente un tipo de conexión por línea." +msgid "unrecognized address family %d" +msgstr "la familia de direcciones %d no es reconocida" -#: libpq/hba.c:859 +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:459 #, c-format -msgid "local connections are not supported by this build" -msgstr "las conexiones locales no están soportadas en este servidor" +msgid "could not create %s socket: %m" +msgstr "no se pudo crear el socket %s: %m" -#: libpq/hba.c:880 +#: libpq/pqcomm.c:484 #, c-format -msgid "hostssl requires SSL to be turned on" -msgstr "hostssl requiere que SSL esté activado" +msgid "setsockopt(SO_REUSEADDR) failed: %m" +msgstr "setsockopt(SO_REUSEADDR) falló: %m" -#: libpq/hba.c:881 +#: libpq/pqcomm.c:499 #, c-format -msgid "Set ssl = on in postgresql.conf." -msgstr "Defina «ssl = on» en postgresql.conf." +msgid "setsockopt(IPV6_V6ONLY) failed: %m" +msgstr "setsockopt(IPV6_V6ONLY) falló: %m" -#: libpq/hba.c:889 +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:518 #, c-format -msgid "hostssl is not supported by this build" -msgstr "hostssl no está soportado en este servidor" +msgid "could not bind %s socket: %m" +msgstr "no se pudo enlazar al socket %s: %m" -#: libpq/hba.c:890 +#: libpq/pqcomm.c:521 #, c-format -msgid "Compile with --with-openssl to use SSL connections." -msgstr "Compile con --with-openssl para usar conexiones SSL." +msgid "Is another postmaster already running on port %d? If not, remove socket file \"%s\" and retry." +msgstr "¿Hay otro postmaster corriendo en el puerto %d? Si no, elimine el socket «%s» y reintente." -#: libpq/hba.c:910 +#: libpq/pqcomm.c:524 #, c-format -msgid "invalid connection type \"%s\"" -msgstr "tipo de conexión «%s» no válido" +msgid "Is another postmaster already running on port %d? If not, wait a few seconds and retry." +msgstr "¿Hay otro postmaster corriendo en el puerto %d? Si no, aguarde unos segundos y reintente." -#: libpq/hba.c:923 +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:557 #, c-format -msgid "end-of-line before database specification" -msgstr "fin de línea antes de especificación de base de datos" +msgid "could not listen on %s socket: %m" +msgstr "no se pudo escuchar en el socket %s: %m" -#: libpq/hba.c:942 +#: libpq/pqcomm.c:642 #, c-format -msgid "end-of-line before role specification" -msgstr "fin de línea antes de especificación de rol" +msgid "group \"%s\" does not exist" +msgstr "no existe el grupo «%s»" -#: libpq/hba.c:963 +#: libpq/pqcomm.c:652 #, c-format -msgid "end-of-line before IP address specification" -msgstr "fin de línea antes de especificación de dirección IP" +msgid "could not set group of file \"%s\": %m" +msgstr "no se pudo definir el grupo del archivo «%s»: %m" -#: libpq/hba.c:973 +#: libpq/pqcomm.c:663 #, c-format -msgid "multiple values specified for host address" -msgstr "múltiples valores especificados para la dirección de anfitrión" +msgid "could not set permissions of file \"%s\": %m" +msgstr "no se pudo definir los permisos del archivo «%s»: %m" -#: libpq/hba.c:974 +#: libpq/pqcomm.c:693 #, c-format -msgid "Specify one address range per line." -msgstr "Especifique un rango de direcciones por línea." +msgid "could not accept new connection: %m" +msgstr "no se pudo aceptar una nueva conexión: %m" -#: libpq/hba.c:1028 +#: libpq/pqcomm.c:904 #, c-format -msgid "invalid IP address \"%s\": %s" -msgstr "dirección IP «%s» no válida: %s" +msgid "there is no client connection" +msgstr "no hay conexión de cliente" -#: libpq/hba.c:1046 +#: libpq/pqcomm.c:955 libpq/pqcomm.c:1051 #, c-format -msgid "specifying both host name and CIDR mask is invalid: \"%s\"" -msgstr "especificar tanto el nombre de host como la máscara CIDR no es válido: «%s»" +msgid "could not receive data from client: %m" +msgstr "no se pudo recibir datos del cliente: %m" -#: libpq/hba.c:1058 +#: libpq/pqcomm.c:1196 tcop/postgres.c:3915 #, c-format -msgid "invalid CIDR mask in address \"%s\"" -msgstr "máscara CIDR no válida en dirección «%s»" +msgid "terminating connection because protocol synchronization was lost" +msgstr "terminando la conexión por pérdida de sincronía del protocolo" -#: libpq/hba.c:1075 +#: libpq/pqcomm.c:1262 #, c-format -msgid "end-of-line before netmask specification" -msgstr "fin de línea antes de especificación de máscara de red" +msgid "unexpected EOF within message length word" +msgstr "EOF inesperado dentro de la palabra de tamaño del mensaje" -#: libpq/hba.c:1076 +#: libpq/pqcomm.c:1273 #, c-format -msgid "Specify an address range in CIDR notation, or provide a separate netmask." -msgstr "Especifique un rango de direcciones en notación CIDR, o provea una netmask separadamente." +msgid "invalid message length" +msgstr "el largo de mensaje no es válido" -#: libpq/hba.c:1086 +#: libpq/pqcomm.c:1295 libpq/pqcomm.c:1308 #, c-format -msgid "multiple values specified for netmask" -msgstr "múltiples valores especificados para la máscara de red" +msgid "incomplete message from client" +msgstr "mensaje incompleto del cliente" -#: libpq/hba.c:1099 +#: libpq/pqcomm.c:1441 #, c-format -msgid "invalid IP mask \"%s\": %s" -msgstr "máscara IP «%s» no válida: %s" +msgid "could not send data to client: %m" +msgstr "no se pudo enviar datos al cliente: %m" -#: libpq/hba.c:1116 +#: libpq/pqformat.c:437 #, c-format -msgid "IP address and mask do not match" -msgstr "La dirección y máscara IP no coinciden" +msgid "no data left in message" +msgstr "no hay datos restantes en el mensaje" -#: libpq/hba.c:1131 +#: libpq/pqformat.c:557 libpq/pqformat.c:575 libpq/pqformat.c:596 +#: utils/adt/arrayfuncs.c:1457 utils/adt/rowtypes.c:563 #, c-format -msgid "end-of-line before authentication method" -msgstr "fin de línea antes de especificación de método de autentificación" +msgid "insufficient data left in message" +msgstr "los datos restantes del mensaje son insuficientes" -#: libpq/hba.c:1141 +#: libpq/pqformat.c:637 libpq/pqformat.c:666 #, c-format -msgid "multiple values specified for authentication type" -msgstr "múltiples valores especificados para el tipo de autentificación" +msgid "invalid string in message" +msgstr "cadena no válida en el mensaje" -#: libpq/hba.c:1142 +#: libpq/pqformat.c:682 #, c-format -msgid "Specify exactly one authentication type per line." -msgstr "Especifique exactamente un tipo de autentificación por línea." +msgid "invalid message format" +msgstr "formato de mensaje no válido" -#: libpq/hba.c:1215 +#: main/main.c:264 #, c-format -msgid "invalid authentication method \"%s\"" -msgstr "método de autentificación «%s» no válido" +msgid "%s: WSAStartup failed: %d\n" +msgstr "%s: WSAStartup falló: %d\n" -#: libpq/hba.c:1226 +#: main/main.c:328 #, c-format -msgid "invalid authentication method \"%s\": not supported by this build" -msgstr "método de autentificación «%s» no válido: este servidor no lo soporta" +msgid "" +"%s is the PostgreSQL server.\n" +"\n" +msgstr "" +"%s es el servidor PostgreSQL.\n" +"\n" -#: libpq/hba.c:1247 +#: main/main.c:329 #, c-format -msgid "gssapi authentication is not supported on local sockets" -msgstr "la autentificación gssapi no está soportada en conexiones locales" +msgid "" +"Usage:\n" +" %s [OPTION]...\n" +"\n" +msgstr "" +"Empleo:\n" +" %s [OPCION]...\n" +"\n" -#: libpq/hba.c:1258 +#: main/main.c:330 #, c-format -msgid "peer authentication is only supported on local sockets" -msgstr "la autentificación peer sólo está soportada en conexiones locales" +msgid "Options:\n" +msgstr "Opciones:\n" -#: libpq/hba.c:1275 +#: main/main.c:331 #, c-format -msgid "cert authentication is only supported on hostssl connections" -msgstr "la autentificación cert sólo está soportada en conexiones hostssl" +msgid " -B NBUFFERS number of shared buffers\n" +msgstr " -B NBUFFERS número de búfers de memoria compartida\n" -#: libpq/hba.c:1324 +#: main/main.c:332 #, c-format -msgid "authentication option not in name=value format: %s" -msgstr "opción de autentificación en formato nombre=valor: %s" +msgid " -c NAME=VALUE set run-time parameter\n" +msgstr " -c VAR=VALOR definir parámetro de ejecución\n" -#: libpq/hba.c:1361 +#: main/main.c:333 #, c-format -msgid "cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, or ldapurl together with ldapprefix" -msgstr "no se puede usar ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute o ldapurl junto con ldapprefix" +msgid " -C NAME print value of run-time parameter, then exit\n" +msgstr " -C NOMBRE imprimir valor de parámetro de configuración, luego salir\n" -#: libpq/hba.c:1371 +#: main/main.c:334 #, c-format -msgid "authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix\", or \"ldapsuffix\" to be set" -msgstr "el método de autentificación «ldap» requiere que los argumento «ldapbasedn», «ldapprefix» o «ldapsuffix» estén definidos" - -#: libpq/hba.c:1414 -msgid "ident, peer, gssapi, sspi, and cert" -msgstr "ident, peer, gssapi, sspi y cert" +msgid " -d 1-5 debugging level\n" +msgstr " -d 1-5 nivel de depuración\n" -#: libpq/hba.c:1427 +#: main/main.c:335 #, c-format -msgid "clientcert can only be configured for \"hostssl\" rows" -msgstr "clientcert sólo puede ser configurado en líneas «hostssl»" +msgid " -D DATADIR database directory\n" +msgstr " -D DATADIR directorio de bases de datos\n" -#: libpq/hba.c:1438 +#: main/main.c:336 #, c-format -msgid "client certificates can only be checked if a root certificate store is available" -msgstr "los certificados de cliente sólo pueden verificarse si un almacén de certificado raíz está disponible" +msgid " -e use European date input format (DMY)\n" +msgstr " -e usar estilo europeo de fechas (DMY)\n" -#: libpq/hba.c:1452 +#: main/main.c:337 #, c-format -msgid "clientcert can not be set to 0 when using \"cert\" authentication" -msgstr "clientcert no puede establecerse en 0 cuando se emplea autentificación «cert»" +msgid " -F turn fsync off\n" +msgstr " -F desactivar fsync\n" -#: libpq/hba.c:1488 +#: main/main.c:338 #, c-format -msgid "could not parse LDAP URL \"%s\": %s" -msgstr "no se pudo interpretar la URL LDAP «%s»: %s" +msgid " -h HOSTNAME host name or IP address to listen on\n" +msgstr " -h NOMBRE nombre de host o dirección IP en que escuchar\n" -#: libpq/hba.c:1496 +#: main/main.c:339 #, c-format -msgid "unsupported LDAP URL scheme: %s" -msgstr "esquema de URL LDAP no soportado: %s" +msgid " -i enable TCP/IP connections\n" +msgstr " -i activar conexiones TCP/IP\n" -#: libpq/hba.c:1512 +#: main/main.c:340 #, c-format -msgid "filters not supported in LDAP URLs" -msgstr "los filtros no están soportados en URLs LDAP" +msgid " -k DIRECTORY Unix-domain socket location\n" +msgstr " -k DIRECTORIO ubicación del socket Unix\n" -#: libpq/hba.c:1520 +#: main/main.c:342 #, c-format -msgid "LDAP URLs not supported on this platform" -msgstr "las URLs LDAP no está soportado en esta plataforma" +msgid " -l enable SSL connections\n" +msgstr " -l activar conexiones SSL\n" -#: libpq/hba.c:1544 +#: main/main.c:344 #, c-format -msgid "invalid LDAP port number: \"%s\"" -msgstr "número de puerto LDAP no válido: «%s»" - -#: libpq/hba.c:1584 libpq/hba.c:1591 -msgid "gssapi and sspi" -msgstr "gssapi y sspi" - -#: libpq/hba.c:1600 libpq/hba.c:1609 -msgid "sspi" -msgstr "" +msgid " -N MAX-CONNECT maximum number of allowed connections\n" +msgstr " -N MAX-CONN número máximo de conexiones permitidas\n" -#: libpq/hba.c:1651 +#: main/main.c:345 #, c-format -msgid "invalid RADIUS port number: \"%s\"" -msgstr "número de puerto RADIUS no válido: «%s»" +msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n" +msgstr " -o OPCIONES pasar «OPCIONES» a cada proceso servidor (obsoleto)\n" -#: libpq/hba.c:1671 +#: main/main.c:346 #, c-format -msgid "unrecognized authentication option name: \"%s\"" -msgstr "nombre de opción de autentificación desconocido: «%s»" +msgid " -p PORT port number to listen on\n" +msgstr " -p PUERTO número de puerto en el cual escuchar\n" -#: libpq/hba.c:1855 +#: main/main.c:347 #, c-format -msgid "configuration file \"%s\" contains no entries" -msgstr "el archivo de configuración «%s» no contiene líneas" +msgid " -s show statistics after each query\n" +msgstr " -s mostrar estadísticas después de cada consulta\n" -#: libpq/hba.c:1951 +#: main/main.c:348 #, c-format -msgid "invalid regular expression \"%s\": %s" -msgstr "la expresión regular «%s» no es válida: %s" +msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n" +msgstr " -S WORK-MEM definir cantidad de memoria para ordenamientos (en kB)\n" -#: libpq/hba.c:2011 +#: main/main.c:349 #, c-format -msgid "regular expression match for \"%s\" failed: %s" -msgstr "la coincidencia de expresión regular para «%s» falló: %s" +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version mostrar información de la versión, luego salir\n" -#: libpq/hba.c:2030 +#: main/main.c:350 #, c-format -msgid "regular expression \"%s\" has no subexpressions as requested by backreference in \"%s\"" -msgstr "la expresión regular «%s» no tiene subexpresiones según lo requiere la referencia hacia atrás en «%s»" +msgid " --NAME=VALUE set run-time parameter\n" +msgstr " --NOMBRE=VALOR definir parámetro de ejecución\n" -#: libpq/hba.c:2127 +#: main/main.c:351 #, c-format -msgid "provided user name (%s) and authenticated user name (%s) do not match" -msgstr "el nombre de usuario entregado (%s) y el nombre de usuario autentificado (%s) no coinciden" - -#: libpq/hba.c:2147 -#, c-format -msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\"" -msgstr "no hay coincidencia en el mapa «%s» para el usuario «%s» autentificado como «%s»" - -#: libpq/hba.c:2182 -#, c-format -msgid "could not open usermap file \"%s\": %m" -msgstr "no se pudo abrir el archivo de mapa de usuarios «%s»: %m" - -#: libpq/pqcomm.c:202 -#, c-format -msgid "could not set socket to nonblocking mode: %m" -msgstr "no se pudo establecer el socket en modo no bloqueante: %m" - -#: libpq/pqcomm.c:354 -#, c-format -msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)" -msgstr "la ruta al socket de dominio Unix «%s» es demasiado larga (máximo %d bytes)" - -#: libpq/pqcomm.c:375 -#, c-format -msgid "could not translate host name \"%s\", service \"%s\" to address: %s" -msgstr "no se pudo traducir el nombre de host «%s», servicio «%s» a dirección: %s" - -#: libpq/pqcomm.c:379 -#, c-format -msgid "could not translate service \"%s\" to address: %s" -msgstr "no se pudo traducir el servicio «%s» a dirección: %s" - -#: libpq/pqcomm.c:406 -#, c-format -msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded" -msgstr "no se pudo enlazar a todas las direcciones pedidas: MAXLISTEN (%d) fue excedido" - -#: libpq/pqcomm.c:415 -msgid "IPv4" -msgstr "IPv4" - -#: libpq/pqcomm.c:419 -msgid "IPv6" -msgstr "IPv6" - -#: libpq/pqcomm.c:424 -msgid "Unix" -msgstr "Unix" - -#: libpq/pqcomm.c:429 -#, c-format -msgid "unrecognized address family %d" -msgstr "la familia de direcciones %d no es reconocida" - -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:440 -#, c-format -msgid "could not create %s socket: %m" -msgstr "no se pudo crear el socket %s: %m" - -#: libpq/pqcomm.c:465 -#, c-format -msgid "setsockopt(SO_REUSEADDR) failed: %m" -msgstr "setsockopt(SO_REUSEADDR) falló: %m" - -#: libpq/pqcomm.c:480 -#, c-format -msgid "setsockopt(IPV6_V6ONLY) failed: %m" -msgstr "setsockopt(IPV6_V6ONLY) falló: %m" - -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:499 -#, c-format -msgid "could not bind %s socket: %m" -msgstr "no se pudo enlazar al socket %s: %m" - -#: libpq/pqcomm.c:502 -#, c-format -msgid "Is another postmaster already running on port %d? If not, remove socket file \"%s\" and retry." -msgstr "¿Hay otro postmaster corriendo en el puerto %d? Si no, elimine el socket «%s» y reintente." - -#: libpq/pqcomm.c:505 -#, c-format -msgid "Is another postmaster already running on port %d? If not, wait a few seconds and retry." -msgstr "¿Hay otro postmaster corriendo en el puerto %d? Si no, aguarde unos segundos y reintente." - -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:538 -#, c-format -msgid "could not listen on %s socket: %m" -msgstr "no se pudo escuchar en el socket %s: %m" - -#: libpq/pqcomm.c:623 -#, c-format -msgid "group \"%s\" does not exist" -msgstr "no existe el grupo «%s»" - -#: libpq/pqcomm.c:633 -#, c-format -msgid "could not set group of file \"%s\": %m" -msgstr "no se pudo definir el grupo del archivo «%s»: %m" - -#: libpq/pqcomm.c:644 -#, c-format -msgid "could not set permissions of file \"%s\": %m" -msgstr "no se pudo definir los permisos del archivo «%s»: %m" - -#: libpq/pqcomm.c:674 -#, c-format -msgid "could not accept new connection: %m" -msgstr "no se pudo aceptar una nueva conexión: %m" - -#: libpq/pqcomm.c:885 -#, fuzzy, c-format -msgid "there is no client connection" -msgstr "se encontró fin de archivo inesperado en la conexión del cliente" - -#: libpq/pqcomm.c:936 libpq/pqcomm.c:1032 -#, c-format -msgid "could not receive data from client: %m" -msgstr "no se pudo recibir datos del cliente: %m" - -#: libpq/pqcomm.c:1177 tcop/postgres.c:3917 -#, fuzzy, c-format -#| msgid "terminating connection because protocol sync was lost" -msgid "terminating connection because protocol synchronization was lost" -msgstr "terminando la conexión por pérdida de sincronía del protocolo" - -#: libpq/pqcomm.c:1243 -#, c-format -msgid "unexpected EOF within message length word" -msgstr "EOF inesperado dentro de la palabra de tamaño del mensaje" - -#: libpq/pqcomm.c:1254 -#, c-format -msgid "invalid message length" -msgstr "el largo de mensaje no es válido" - -#: libpq/pqcomm.c:1276 libpq/pqcomm.c:1289 -#, c-format -msgid "incomplete message from client" -msgstr "mensaje incompleto del cliente" - -#: libpq/pqcomm.c:1422 -#, c-format -msgid "could not send data to client: %m" -msgstr "no se pudo enviar datos al cliente: %m" - -#: libpq/pqformat.c:437 -#, c-format -msgid "no data left in message" -msgstr "no hay datos restantes en el mensaje" - -#: libpq/pqformat.c:557 libpq/pqformat.c:575 libpq/pqformat.c:596 -#: utils/adt/arrayfuncs.c:1457 utils/adt/rowtypes.c:563 -#, c-format -msgid "insufficient data left in message" -msgstr "los datos restantes del mensaje son insuficientes" - -#: libpq/pqformat.c:637 libpq/pqformat.c:666 -#, c-format -msgid "invalid string in message" -msgstr "cadena inválida en el mensaje" - -#: libpq/pqformat.c:682 -#, c-format -msgid "invalid message format" -msgstr "formato de mensaje no válido" - -#: main/main.c:264 -#, c-format -msgid "%s: WSAStartup failed: %d\n" -msgstr "%s: WSAStartup falló: %d\n" - -#: main/main.c:328 -#, c-format -msgid "" -"%s is the PostgreSQL server.\n" -"\n" -msgstr "" -"%s es el servidor PostgreSQL.\n" -"\n" - -#: main/main.c:329 -#, c-format -msgid "" -"Usage:\n" -" %s [OPTION]...\n" -"\n" -msgstr "" -"Empleo:\n" -" %s [OPCION]...\n" -"\n" - -#: main/main.c:330 -#, c-format -msgid "Options:\n" -msgstr "Opciones:\n" - -#: main/main.c:331 -#, c-format -msgid " -B NBUFFERS number of shared buffers\n" -msgstr " -B NBUFFERS número de búfers de memoria compartida\n" - -#: main/main.c:332 -#, c-format -msgid " -c NAME=VALUE set run-time parameter\n" -msgstr " -c VAR=VALOR definir parámetro de ejecución\n" - -#: main/main.c:333 -#, c-format -msgid " -C NAME print value of run-time parameter, then exit\n" -msgstr " -C NOMBRE imprimir valor de parámetro de configuración, luego salir\n" - -#: main/main.c:334 -#, c-format -msgid " -d 1-5 debugging level\n" -msgstr " -d 1-5 nivel de depuración\n" - -#: main/main.c:335 -#, c-format -msgid " -D DATADIR database directory\n" -msgstr " -D DATADIR directorio de bases de datos\n" - -#: main/main.c:336 -#, c-format -msgid " -e use European date input format (DMY)\n" -msgstr " -e usar estilo europeo de fechas (DMY)\n" - -#: main/main.c:337 -#, c-format -msgid " -F turn fsync off\n" -msgstr " -F desactivar fsync\n" - -#: main/main.c:338 -#, c-format -msgid " -h HOSTNAME host name or IP address to listen on\n" -msgstr " -h NOMBRE nombre de host o dirección IP en que escuchar\n" - -#: main/main.c:339 -#, c-format -msgid " -i enable TCP/IP connections\n" -msgstr " -i activar conexiones TCP/IP\n" - -#: main/main.c:340 -#, c-format -msgid " -k DIRECTORY Unix-domain socket location\n" -msgstr " -k DIRECTORIO ubicación del socket Unix\n" - -#: main/main.c:342 -#, c-format -msgid " -l enable SSL connections\n" -msgstr " -l activar conexiones SSL\n" - -#: main/main.c:344 -#, c-format -msgid " -N MAX-CONNECT maximum number of allowed connections\n" -msgstr " -N MAX-CONN número máximo de conexiones permitidas\n" - -#: main/main.c:345 -#, c-format -msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n" -msgstr " -o OPCIONES pasar «OPCIONES» a cada proceso servidor (obsoleto)\n" - -#: main/main.c:346 -#, c-format -msgid " -p PORT port number to listen on\n" -msgstr " -p PUERTO número de puerto en el cual escuchar\n" - -#: main/main.c:347 -#, c-format -msgid " -s show statistics after each query\n" -msgstr " -s mostrar estadísticas después de cada consulta\n" - -#: main/main.c:348 -#, c-format -msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n" -msgstr " -S WORK-MEM definir cantidad de memoria para ordenamientos (en kB)\n" - -#: main/main.c:349 -#, c-format -msgid " -V, --version output version information, then exit\n" -msgstr " -V, --version mostrar información de la versión, luego salir\n" - -#: main/main.c:350 -#, c-format -msgid " --NAME=VALUE set run-time parameter\n" -msgstr " --NOMBRE=VALOR definir parámetro de ejecución\n" - -#: main/main.c:351 -#, c-format -msgid " --describe-config describe configuration parameters, then exit\n" -msgstr "" -" --describe-config\n" -" mostrar parámetros de configuración y salir\n" +msgid " --describe-config describe configuration parameters, then exit\n" +msgstr "" +" --describe-config\n" +" mostrar parámetros de configuración y salir\n" #: main/main.c:352 #, c-format @@ -12394,16 +11774,14 @@ msgstr "" "iniciar correctamente el servidor.\n" #: nodes/extensible.c:66 -#, fuzzy, c-format -#| msgid "extension \"%s\" already exists" +#, c-format msgid "extensible node type \"%s\" already exists" -msgstr "la extensión «%s» ya existe" +msgstr "el tipo de nodo extensible «%s» ya existe" #: nodes/extensible.c:114 -#, fuzzy, c-format -#| msgid "extension \"%s\" does not exist" +#, c-format msgid "ExtensibleNodeMethods \"%s\" was not registered" -msgstr "no existe la extensión «%s»" +msgstr "ExtensibleNodeMethods «%s» no fue registrado" #: nodes/nodeFuncs.c:124 nodes/nodeFuncs.c:155 parser/parse_coerce.c:1820 #: parser/parse_coerce.c:1848 parser/parse_coerce.c:1924 @@ -12413,19 +11791,19 @@ msgid "could not find array type for data type %s" msgstr "no se pudo encontrar un tipo de array para el tipo de dato %s" #: optimizer/path/allpaths.c:2653 -#, fuzzy, c-format +#, c-format msgid "WHERE CURRENT OF is not supported on a view with no underlying relation" -msgstr "WHERE CURRENT OF no está soportado para este tipo de tabla" +msgstr "WHERE CURRENT OF no está soportado en una vista sin relación subyacente" #: optimizer/path/allpaths.c:2658 -#, fuzzy, c-format +#, c-format msgid "WHERE CURRENT OF is not supported on a view with more than one underlying relation" -msgstr "WHERE CURRENT OF no está soportado para este tipo de tabla" +msgstr "WHERE CURRENT OF no está soportado en una vista con más de una relación subyacente" #: optimizer/path/allpaths.c:2663 -#, fuzzy, c-format +#, c-format msgid "WHERE CURRENT OF is not supported on a view with grouping or aggregation" -msgstr "WHERE CURRENT OF no está soportado para este tipo de tabla" +msgstr "WHERE CURRENT OF no está soportado en una vista con agrupamiento o agregación" #: optimizer/path/joinrels.c:802 #, c-format @@ -12439,44 +11817,44 @@ msgid "%s cannot be applied to the nullable side of an outer join" msgstr "%s no puede ser aplicado al lado nulable de un outer join" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: optimizer/plan/planner.c:1497 parser/analyze.c:1552 parser/analyze.c:1750 -#: parser/analyze.c:2531 +#: optimizer/plan/planner.c:1480 parser/analyze.c:1549 parser/analyze.c:1747 +#: parser/analyze.c:2528 #, c-format msgid "%s is not allowed with UNION/INTERSECT/EXCEPT" msgstr "%s no está permitido con UNION/INTERSECT/EXCEPT" -#: optimizer/plan/planner.c:3826 +#: optimizer/plan/planner.c:3809 #, c-format msgid "could not implement GROUP BY" msgstr "no se pudo implementar GROUP BY" -#: optimizer/plan/planner.c:3827 optimizer/plan/planner.c:4220 -#: optimizer/prep/prepunion.c:929 +#: optimizer/plan/planner.c:3810 optimizer/plan/planner.c:4203 +#: optimizer/prep/prepunion.c:939 #, c-format msgid "Some of the datatypes only support hashing, while others only support sorting." msgstr "Algunos de los tipos sólo soportan hashing, mientras que otros sólo soportan ordenamiento." -#: optimizer/plan/planner.c:4219 +#: optimizer/plan/planner.c:4202 #, c-format msgid "could not implement DISTINCT" msgstr "no se pudo implementar DISTINCT" -#: optimizer/plan/planner.c:4849 +#: optimizer/plan/planner.c:4832 #, c-format msgid "could not implement window PARTITION BY" msgstr "No se pudo implementar PARTITION BY de ventana" -#: optimizer/plan/planner.c:4850 +#: optimizer/plan/planner.c:4833 #, c-format msgid "Window partitioning columns must be of sortable datatypes." msgstr "Las columnas de particionamiento de ventana deben de tipos que se puedan ordenar." -#: optimizer/plan/planner.c:4854 +#: optimizer/plan/planner.c:4837 #, c-format msgid "could not implement window ORDER BY" msgstr "no se pudo implementar ORDER BY de ventana" -#: optimizer/plan/planner.c:4855 +#: optimizer/plan/planner.c:4838 #, c-format msgid "Window ordering columns must be of sortable datatypes." msgstr "Las columnas de ordenamiento de ventana debe ser de tipos que se puedan ordenar." @@ -12486,53 +11864,53 @@ msgstr "Las columnas de ordenamiento de ventana debe ser de tipos que se puedan msgid "too many range table entries" msgstr "demasiadas «range table entries»" -#: optimizer/prep/prepunion.c:484 +#: optimizer/prep/prepunion.c:494 #, c-format msgid "could not implement recursive UNION" msgstr "no se pudo implementar UNION recursivo" -#: optimizer/prep/prepunion.c:485 +#: optimizer/prep/prepunion.c:495 #, c-format msgid "All column datatypes must be hashable." msgstr "Todos los tipos de dato de las columnas deben ser tipos de los que se puedan hacer un hash." #. translator: %s is UNION, INTERSECT, or EXCEPT -#: optimizer/prep/prepunion.c:928 +#: optimizer/prep/prepunion.c:938 #, c-format msgid "could not implement %s" msgstr "no se pudo implementar %s" -#: optimizer/util/clauses.c:4624 +#: optimizer/util/clauses.c:4634 #, c-format msgid "SQL function \"%s\" during inlining" msgstr "función SQL «%s», durante expansión en línea" -#: optimizer/util/plancat.c:113 +#: optimizer/util/plancat.c:114 #, c-format msgid "cannot access temporary or unlogged relations during recovery" msgstr "no se pueden crear tablas temporales o unlogged durante la recuperación" -#: optimizer/util/plancat.c:598 +#: optimizer/util/plancat.c:611 #, c-format msgid "whole row unique index inference specifications are not supported" -msgstr "" +msgstr "no están soportadas las especificaciones de inferencia de índice único de registro completo" -#: optimizer/util/plancat.c:615 +#: optimizer/util/plancat.c:628 #, c-format msgid "constraint in ON CONFLICT clause has no associated index" -msgstr "" +msgstr "la restricción en la cláusula ON CONFLICT no tiene un índice asociado" -#: optimizer/util/plancat.c:666 -#, fuzzy, c-format +#: optimizer/util/plancat.c:679 +#, c-format msgid "ON CONFLICT DO UPDATE not supported with exclusion constraints" -msgstr "el método de acceso «%s» no soporta restricciones por exclusión" +msgstr "ON CONFLICT DO UPDATE no está soportado con restricciones de exclusión" -#: optimizer/util/plancat.c:771 -#, fuzzy, c-format +#: optimizer/util/plancat.c:784 +#, c-format msgid "there is no unique or exclusion constraint matching the ON CONFLICT specification" -msgstr "no hay restricción unique que coincida con las columnas dadas en la tabla referida «%s»" +msgstr "no hay restricción única o de exclusión que coincida con la especificación ON CONFLICT" -#: parser/analyze.c:663 parser/analyze.c:1324 +#: parser/analyze.c:663 parser/analyze.c:1321 #, c-format msgid "VALUES lists must all be the same length" msgstr "las listas VALUES deben ser todas de la misma longitud" @@ -12552,177 +11930,177 @@ msgstr "INSERT tiene más columnas de destino que expresiones" msgid "The insertion source is a row expression containing the same number of columns expected by the INSERT. Did you accidentally use extra parentheses?" msgstr "La fuente de inserción es una expresión de fila que contiene la misma cantidad de columnas que esperaba el INSERT. ¿Usó accidentalmente paréntesis extra?" -#: parser/analyze.c:1145 parser/analyze.c:1525 +#: parser/analyze.c:1142 parser/analyze.c:1522 #, c-format msgid "SELECT ... INTO is not allowed here" msgstr "SELECT ... INTO no está permitido aquí" -#: parser/analyze.c:1338 +#: parser/analyze.c:1335 #, c-format msgid "DEFAULT can only appear in a VALUES list within INSERT" msgstr "DEFAULT sólo puede aparecer en listas VALUES dentro de un INSERT" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:1457 parser/analyze.c:2701 +#: parser/analyze.c:1454 parser/analyze.c:2698 #, c-format msgid "%s cannot be applied to VALUES" msgstr "%s no puede ser aplicado a VALUES" -#: parser/analyze.c:1678 +#: parser/analyze.c:1675 #, c-format msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" msgstr "cláusula UNION/INTERSECT/EXCEPT ORDER BY no válida" -#: parser/analyze.c:1679 +#: parser/analyze.c:1676 #, c-format msgid "Only result column names can be used, not expressions or functions." msgstr "Sólo nombres de columna del resultado pueden usarse, no expresiones o funciones." -#: parser/analyze.c:1680 +#: parser/analyze.c:1677 #, c-format msgid "Add the expression/function to every SELECT, or move the UNION into a FROM clause." msgstr "Agregue la función o expresión a todos los SELECT, o mueva el UNION dentro de una cláusula FROM." -#: parser/analyze.c:1740 +#: parser/analyze.c:1737 #, c-format msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT" msgstr "sólo se permite INTO en el primer SELECT de UNION/INTERSECT/EXCEPT" -#: parser/analyze.c:1804 +#: parser/analyze.c:1801 #, c-format msgid "UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of same query level" msgstr "una sentencia miembro de UNION/INSERT/EXCEPT no puede referirse a otras relaciones del mismo nivel de la consulta" -#: parser/analyze.c:1893 +#: parser/analyze.c:1890 #, c-format msgid "each %s query must have the same number of columns" msgstr "cada consulta %s debe tener el mismo número de columnas" -#: parser/analyze.c:2286 +#: parser/analyze.c:2283 #, c-format msgid "RETURNING must have at least one column" msgstr "RETURNING debe tener al menos una columna" -#: parser/analyze.c:2323 +#: parser/analyze.c:2320 #, c-format msgid "cannot specify both SCROLL and NO SCROLL" msgstr "no se puede especificar SCROLL y NO SCROLL" -#: parser/analyze.c:2341 +#: parser/analyze.c:2338 #, c-format msgid "DECLARE CURSOR must not contain data-modifying statements in WITH" msgstr "DECLARE CURSOR no debe contener sentencias que modifiquen datos en WITH" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2349 +#: parser/analyze.c:2346 #, c-format msgid "DECLARE CURSOR WITH HOLD ... %s is not supported" msgstr "DECLARE CURSOR WITH HOLD ... %s no está soportado" -#: parser/analyze.c:2352 +#: parser/analyze.c:2349 #, c-format msgid "Holdable cursors must be READ ONLY." msgstr "Los cursores declarados HOLD deben ser READ ONLY." #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2360 +#: parser/analyze.c:2357 #, c-format msgid "DECLARE SCROLL CURSOR ... %s is not supported" msgstr "DECLARE SCROLL CURSOR ... %s no está soportado" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2371 +#: parser/analyze.c:2368 #, c-format msgid "DECLARE INSENSITIVE CURSOR ... %s is not supported" msgstr "DECLARE INSENSITIVE CURSOR ... %s no está soportado" -#: parser/analyze.c:2374 +#: parser/analyze.c:2371 #, c-format msgid "Insensitive cursors must be READ ONLY." msgstr "Los cursores insensitivos deben ser READ ONLY." -#: parser/analyze.c:2440 +#: parser/analyze.c:2437 #, c-format msgid "materialized views must not use data-modifying statements in WITH" msgstr "las vistas materializadas no deben usar sentencias que modifiquen datos en WITH" -#: parser/analyze.c:2450 +#: parser/analyze.c:2447 #, c-format msgid "materialized views must not use temporary tables or views" msgstr "las vistas materializadas no deben usar tablas temporales o vistas" -#: parser/analyze.c:2460 +#: parser/analyze.c:2457 #, c-format msgid "materialized views may not be defined using bound parameters" msgstr "las vistas materializadas no pueden definirse usando parámetros enlazados" -#: parser/analyze.c:2472 +#: parser/analyze.c:2469 #, c-format msgid "materialized views cannot be UNLOGGED" msgstr "las vistas materializadas no pueden ser UNLOGGED" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2538 +#: parser/analyze.c:2535 #, c-format msgid "%s is not allowed with DISTINCT clause" msgstr "%s no está permitido con cláusulas DISTINCT" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2545 +#: parser/analyze.c:2542 #, c-format msgid "%s is not allowed with GROUP BY clause" msgstr "%s no está permitido con cláusulas GROUP BY" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2552 +#: parser/analyze.c:2549 #, c-format msgid "%s is not allowed with HAVING clause" msgstr "%s no está permitido con cláusulas HAVING" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2559 +#: parser/analyze.c:2556 #, c-format msgid "%s is not allowed with aggregate functions" msgstr "%s no está permitido con funciones de agregación" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2566 +#: parser/analyze.c:2563 #, c-format msgid "%s is not allowed with window functions" msgstr "%s no está permitido con funciones de ventana deslizante" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2573 +#: parser/analyze.c:2570 #, c-format msgid "%s is not allowed with set-returning functions in the target list" msgstr "%s no está permitido con funciones que retornan conjuntos en la lista de resultados" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2652 +#: parser/analyze.c:2649 #, c-format msgid "%s must specify unqualified relation names" msgstr "%s debe especificar nombres de relaciones sin calificar" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2683 +#: parser/analyze.c:2680 #, c-format msgid "%s cannot be applied to a join" msgstr "%s no puede ser aplicado a un join" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2692 +#: parser/analyze.c:2689 #, c-format msgid "%s cannot be applied to a function" msgstr "%s no puede ser aplicado a una función" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2710 +#: parser/analyze.c:2707 #, c-format msgid "%s cannot be applied to a WITH query" msgstr "%s no puede ser aplicado a una consulta WITH" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2727 +#: parser/analyze.c:2724 #, c-format msgid "relation \"%s\" in %s clause not found in FROM clause" msgstr "la relación «%s» en la cláusula %s no fue encontrada en la cláusula FROM" @@ -12740,125 +12118,111 @@ msgstr "Las funciones de agregación con DISTINCT deben ser capaces de ordenar s #: parser/parse_agg.c:260 #, c-format msgid "GROUPING must have fewer than 32 arguments" -msgstr "" +msgstr "GROUPING debe tener menos de 32 argumentos" #: parser/parse_agg.c:363 msgid "aggregate functions are not allowed in JOIN conditions" msgstr "no se permiten funciones de agregación en las condiciones de JOIN" #: parser/parse_agg.c:365 -#, fuzzy msgid "grouping operations are not allowed in JOIN conditions" -msgstr "no se permiten funciones de ventana deslizante en condiciones JOIN" +msgstr "no se permiten las operaciones «grouping» en condiciones JOIN" #: parser/parse_agg.c:377 msgid "aggregate functions are not allowed in FROM clause of their own query level" msgstr "las funciones de agregación no están permitidas en la cláusula FROM de su mismo nivel de consulta" #: parser/parse_agg.c:379 -#, fuzzy msgid "grouping operations are not allowed in FROM clause of their own query level" -msgstr "las funciones de agregación no están permitidas en la cláusula FROM de su mismo nivel de consulta" +msgstr "las operaciones «grouping» no están permitidas en la cláusula FROM de su mismo nivel de consulta" #: parser/parse_agg.c:384 msgid "aggregate functions are not allowed in functions in FROM" msgstr "no se permiten funciones de agregación en una función en FROM" #: parser/parse_agg.c:386 -#, fuzzy msgid "grouping operations are not allowed in functions in FROM" -msgstr "no se permiten funciones de ventana deslizante en funciones en FROM" +msgstr "no se permiten operaciones «grouping» en funciones en FROM" #: parser/parse_agg.c:394 -#, fuzzy msgid "aggregate functions are not allowed in policy expressions" -msgstr "no se permiten funciones de agregación en una expresión de índice" +msgstr "no se permiten funciones de agregación en expresiones de políticas" #: parser/parse_agg.c:396 -#, fuzzy msgid "grouping operations are not allowed in policy expressions" -msgstr "no se permiten funciones de ventana deslizante en expresiones de índice" +msgstr "no se permiten operaciones «grouping» en expresiones de políticas" #: parser/parse_agg.c:413 msgid "aggregate functions are not allowed in window RANGE" msgstr "no se permiten funciones de agregación en RANGE de ventana deslizante" #: parser/parse_agg.c:415 -#, fuzzy msgid "grouping operations are not allowed in window RANGE" -msgstr "no se permiten funciones de agregación en RANGE de ventana deslizante" +msgstr "no se permiten operaciones «grouping» en RANGE de ventana deslizante" #: parser/parse_agg.c:420 msgid "aggregate functions are not allowed in window ROWS" msgstr "no se permiten funciones de agregación en ROWS de ventana deslizante" #: parser/parse_agg.c:422 -#, fuzzy msgid "grouping operations are not allowed in window ROWS" -msgstr "no se permiten funciones de agregación en ROWS de ventana deslizante" +msgstr "no se permiten operaciones «grouping» en ROWS de ventana deslizante" #: parser/parse_agg.c:455 msgid "aggregate functions are not allowed in check constraints" msgstr "no se permiten funciones de agregación en restricciones «check»" #: parser/parse_agg.c:457 -#, fuzzy msgid "grouping operations are not allowed in check constraints" -msgstr "no se permiten funciones de ventana deslizante en restricciones «check»" +msgstr "no se permiten operaciones «grouping» en restricciones «check»" #: parser/parse_agg.c:464 msgid "aggregate functions are not allowed in DEFAULT expressions" msgstr "no se permiten funciones de agregación en expresiones DEFAULT" #: parser/parse_agg.c:466 -#, fuzzy msgid "grouping operations are not allowed in DEFAULT expressions" -msgstr "no se permiten funciones de ventana deslizante en expresiones DEFAULT" +msgstr "no se permiten operaciones «grouping» en expresiones DEFAULT" #: parser/parse_agg.c:471 msgid "aggregate functions are not allowed in index expressions" msgstr "no se permiten funciones de agregación en una expresión de índice" #: parser/parse_agg.c:473 -#, fuzzy msgid "grouping operations are not allowed in index expressions" -msgstr "no se permiten funciones de ventana deslizante en expresiones de índice" +msgstr "no se permiten operaciones «grouping» en expresiones de índice" #: parser/parse_agg.c:478 msgid "aggregate functions are not allowed in index predicates" msgstr "no se permiten funciones de agregación en predicados de índice" #: parser/parse_agg.c:480 -#, fuzzy msgid "grouping operations are not allowed in index predicates" -msgstr "no se permiten funciones de ventana deslizante en predicados de índice" +msgstr "no se permiten operaciones «grouping» en predicados de índice" #: parser/parse_agg.c:485 msgid "aggregate functions are not allowed in transform expressions" msgstr "no se permiten funciones de agregación en una expresión de transformación" #: parser/parse_agg.c:487 -#, fuzzy msgid "grouping operations are not allowed in transform expressions" -msgstr "no se permiten funciones de ventana deslizante en expresiones de transformación" +msgstr "no se permiten operaciones «grouping» en expresiones de transformación" #: parser/parse_agg.c:492 msgid "aggregate functions are not allowed in EXECUTE parameters" msgstr "no se permiten funciones de agregación en un parámetro a EXECUTE" #: parser/parse_agg.c:494 -#, fuzzy msgid "grouping operations are not allowed in EXECUTE parameters" -msgstr "no se permiten funciones de ventana deslizante en parámetros a EXECUTE" +msgstr "no se permiten operaciones «grouping» en parámetros a EXECUTE" #: parser/parse_agg.c:499 msgid "aggregate functions are not allowed in trigger WHEN conditions" msgstr "no se permiten funciones de agregación en condición WHEN de un disparador" #: parser/parse_agg.c:501 -#, fuzzy msgid "grouping operations are not allowed in trigger WHEN conditions" -msgstr "no se permiten funciones de ventana deslizante en condiciones WHEN de un disparador" +msgstr "no se permiten operaciones «grouping» en condiciones WHEN de un disparador" #. translator: %s is name of a SQL construct, eg GROUP BY #: parser/parse_agg.c:524 parser/parse_clause.c:1550 @@ -12868,9 +12232,9 @@ msgstr "no se permiten funciones de agregación en %s" #. translator: %s is name of a SQL construct, eg GROUP BY #: parser/parse_agg.c:527 -#, fuzzy, c-format +#, c-format msgid "grouping operations are not allowed in %s" -msgstr "no se permiten funciones de ventana deslizante en %s" +msgstr "no se permiten operaciones «grouping» en %s" #: parser/parse_agg.c:635 #, c-format @@ -12891,9 +12255,8 @@ msgid "window functions are not allowed in functions in FROM" msgstr "no se permiten funciones de ventana deslizante en funciones en FROM" #: parser/parse_agg.c:797 -#, fuzzy msgid "window functions are not allowed in policy expressions" -msgstr "no se permiten funciones de ventana deslizante en expresiones de índice" +msgstr "no se permiten funciones de ventana deslizante en expresiones de políticas" #: parser/parse_agg.c:809 msgid "window functions are not allowed in window definitions" @@ -12941,7 +12304,7 @@ msgstr "la ventana «%s» no existe" #: parser/parse_agg.c:998 #, c-format msgid "too many grouping sets present (maximum 4096)" -msgstr "" +msgstr "demasiados conjuntos «grouping» presentes (máximo 4096)" #: parser/parse_agg.c:1147 #, c-format @@ -12966,7 +12329,7 @@ msgstr "la subconsulta usa la columna «%s.%s» no agrupada de una consulta exte #: parser/parse_agg.c:1512 #, c-format msgid "arguments to GROUPING must be grouping expressions of the associated query level" -msgstr "" +msgstr "los argumentos de GROUPING deben ser expresiones agrupantes del nivel de consulta asociado" #: parser/parse_clause.c:649 #, c-format @@ -13004,26 +12367,26 @@ msgid "Put the column definition list inside ROWS FROM()." msgstr "Ponga una lista de columnas dentro de ROWS FROM()." #: parser/parse_clause.c:753 -#, fuzzy, c-format +#, c-format msgid "tablesample method %s does not exist" -msgstr "no existe el método de acceso «%s»" +msgstr "no existe el método de tablesample «%s»" #: parser/parse_clause.c:775 -#, fuzzy, c-format +#, c-format msgid "tablesample method %s requires %d argument, not %d" msgid_plural "tablesample method %s requires %d arguments, not %d" -msgstr[0] "el método de autentificación «%s» requiere que el argumento «%s» esté definido" -msgstr[1] "el método de autentificación «%s» requiere que el argumento «%s» esté definido" +msgstr[0] "el método de tablesample «%s» requiere %d argumento, no %d" +msgstr[1] "el método de tablesample «%s» requiere %d argumentos, no %d" #: parser/parse_clause.c:809 -#, fuzzy, c-format +#, c-format msgid "tablesample method %s does not support REPEATABLE" -msgstr "el método de acceso «%s» no soporta las opciones ASC/DESC" +msgstr "el método de tablesample «%s» no soporta la opción REPEATABLE" #: parser/parse_clause.c:940 #, c-format msgid "TABLESAMPLE clause can only be applied to tables and materialized views" -msgstr "" +msgstr "la cláusula TABLESAMPLE sólo puede aplicarse a tablas y vistas materializadas" #: parser/parse_clause.c:1110 #, c-format @@ -13082,7 +12445,7 @@ msgstr "la posición %2$d de %1$s no está en la lista de resultados" #: parser/parse_clause.c:2178 #, c-format msgid "CUBE is limited to 12 elements" -msgstr "" +msgstr "CUBE está limitado a 12 elementos" #: parser/parse_clause.c:2384 #, c-format @@ -13135,34 +12498,34 @@ msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions" msgstr "las expresiones de SELECT DISTINCT ON deben coincidir con las expresiones iniciales de ORDER BY" #: parser/parse_clause.c:2774 -#, fuzzy, c-format +#, c-format msgid "ASC/DESC is not allowed in ON CONFLICT clause" -msgstr "%s no está permitido con cláusulas DISTINCT" +msgstr "ASC/DESC no están permitidos en cláusulas ON CONFLICT" #: parser/parse_clause.c:2780 -#, fuzzy, c-format +#, c-format msgid "NULLS FIRST/LAST is not allowed in ON CONFLICT clause" -msgstr "%s no está permitido con cláusulas DISTINCT" +msgstr "NULLS FIRST/LAST no están permitidos en cláusulas ON CONFLICT" #: parser/parse_clause.c:2860 #, c-format msgid "ON CONFLICT DO UPDATE requires inference specification or constraint name" -msgstr "" +msgstr "ON CONFLICT DO UPDATE requiere una especificación de inferencia o nombre de restricción" #: parser/parse_clause.c:2861 #, c-format msgid "For example, ON CONFLICT (column_name)." -msgstr "" +msgstr "Por ejemplo, ON CONFLICT (nombre_de_columna)." #: parser/parse_clause.c:2872 -#, fuzzy, c-format +#, c-format msgid "ON CONFLICT is not supported with system catalog tables" -msgstr "no se puede reescribir la tabla «%s» que es usada como tabla de catálogo" +msgstr "ON CONFLICT no está soportado con tablas que son catálogos de sistema" #: parser/parse_clause.c:2880 -#, fuzzy, c-format +#, c-format msgid "ON CONFLICT is not supported on table \"%s\" used as a catalog table" -msgstr "no se puede reescribir la tabla «%s» que es usada como tabla de catálogo" +msgstr "ON CONFLICT no está soportado en la tabla «%s» usada como catálogo de sistema" #: parser/parse_clause.c:3012 #, c-format @@ -13176,7 +12539,7 @@ msgstr "Los operadores de ordenamiento deben ser miembros «<» o «>» de una f #: parser/parse_coerce.c:971 parser/parse_coerce.c:1001 #: parser/parse_coerce.c:1019 parser/parse_coerce.c:1034 -#: parser/parse_expr.c:2053 parser/parse_expr.c:2577 parser/parse_target.c:874 +#: parser/parse_expr.c:2053 parser/parse_expr.c:2577 parser/parse_target.c:885 #, c-format msgid "cannot cast type %s to %s" msgstr "no se puede convertir el tipo %s a %s" @@ -13400,8 +12763,8 @@ msgstr "FOR UPDATE/SHARE no está implementado en una consulta recursiva" msgid "recursive reference to query \"%s\" must not appear more than once" msgstr "la referencia recursiva a la consulta «%s» no debe aparecer más de una vez" -#: parser/parse_expr.c:390 parser/parse_relation.c:3083 -#: parser/parse_relation.c:3103 +#: parser/parse_expr.c:390 parser/parse_relation.c:3176 +#: parser/parse_relation.c:3196 #, c-format msgid "column %s.%s does not exist" msgstr "no existe la columna %s.%s" @@ -13421,13 +12784,13 @@ msgstr "no se pudo identificar la columna «%s» en el tipo de dato record" msgid "column notation .%s applied to type %s, which is not a composite type" msgstr "la notación de columna .%s fue aplicada al tipo %s, que no es un tipo compuesto" -#: parser/parse_expr.c:444 parser/parse_target.c:660 +#: parser/parse_expr.c:444 parser/parse_target.c:671 #, c-format msgid "row expansion via \"*\" is not supported here" msgstr "la expansión de filas a través de «*» no está soportado aquí" -#: parser/parse_expr.c:770 parser/parse_relation.c:667 -#: parser/parse_relation.c:767 parser/parse_target.c:1109 +#: parser/parse_expr.c:770 parser/parse_relation.c:668 +#: parser/parse_relation.c:768 parser/parse_target.c:1120 #, c-format msgid "column reference \"%s\" is ambiguous" msgstr "la referencia a la columna «%s» es ambigua" @@ -13443,6 +12806,11 @@ msgstr "no hay parámetro $%d" msgid "NULLIF requires = operator to yield boolean" msgstr "NULLIF requiere que el operador = retorne boolean" +#: parser/parse_expr.c:1501 gram.y:9896 +#, c-format +msgid "number of columns does not match number of values" +msgstr "el número de columnas no coincide con el número de valores" + #: parser/parse_expr.c:1730 msgid "cannot use subquery in check constraint" msgstr "no se pueden usar subconsultas en una restricción «check»" @@ -13564,7 +12932,7 @@ msgstr "IS DISTINCT FROM requiere que el operador = retorne boolean" #: parser/parse_expr.c:3199 parser/parse_expr.c:3217 #, c-format msgid "operator precedence change: %s is now lower precedence than %s" -msgstr "" +msgstr "cambio de precedencia de operadores: %s es ahora de menor precedencia que %s" #: parser/parse_func.c:174 #, c-format @@ -13741,8 +13109,8 @@ msgstr "los subíndices de arrays deben tener tipo entero" msgid "array assignment requires type %s but expression is of type %s" msgstr "la asignación de array debe tener tipo %s pero la expresión es de tipo %s" -#: parser/parse_oper.c:125 parser/parse_oper.c:722 utils/adt/regproc.c:583 -#: utils/adt/regproc.c:603 utils/adt/regproc.c:787 +#: parser/parse_oper.c:125 parser/parse_oper.c:722 utils/adt/regproc.c:584 +#: utils/adt/regproc.c:604 utils/adt/regproc.c:788 #, c-format msgid "operator does not exist: %s" msgstr "el operador no existe: %s" @@ -13752,9 +13120,9 @@ msgstr "el operador no existe: %s" msgid "Use an explicit ordering operator or modify the query." msgstr "Use un operador de ordenamiento explícito o modifique la consulta." -#: parser/parse_oper.c:226 utils/adt/array_userfuncs.c:782 -#: utils/adt/array_userfuncs.c:920 utils/adt/arrayfuncs.c:3639 -#: utils/adt/arrayfuncs.c:4077 utils/adt/arrayfuncs.c:6051 +#: parser/parse_oper.c:226 utils/adt/array_userfuncs.c:794 +#: utils/adt/array_userfuncs.c:933 utils/adt/arrayfuncs.c:3639 +#: utils/adt/arrayfuncs.c:4077 utils/adt/arrayfuncs.c:6039 #: utils/adt/rowtypes.c:1167 #, c-format msgid "could not identify an equality operator for type %s" @@ -13805,158 +13173,158 @@ msgstr "op ANY/ALL (array) requiere un operador que no retorne un conjunto" msgid "inconsistent types deduced for parameter $%d" msgstr "para el parámetro $%d se dedujeron tipos de dato inconsistentes" -#: parser/parse_relation.c:174 +#: parser/parse_relation.c:175 #, c-format msgid "table reference \"%s\" is ambiguous" msgstr "la referencia a la tabla «%s» es ambigua" -#: parser/parse_relation.c:218 +#: parser/parse_relation.c:219 #, c-format msgid "table reference %u is ambiguous" msgstr "la referencia a la tabla %u es ambigua" -#: parser/parse_relation.c:397 +#: parser/parse_relation.c:398 #, c-format msgid "table name \"%s\" specified more than once" msgstr "el nombre de tabla «%s» fue especificado más de una vez" -#: parser/parse_relation.c:424 parser/parse_relation.c:3023 +#: parser/parse_relation.c:425 parser/parse_relation.c:3116 #, c-format msgid "invalid reference to FROM-clause entry for table \"%s\"" msgstr "referencia a la entrada de la cláusula FROM para la tabla «%s» no válida" -#: parser/parse_relation.c:427 parser/parse_relation.c:3028 +#: parser/parse_relation.c:428 parser/parse_relation.c:3121 #, c-format msgid "There is an entry for table \"%s\", but it cannot be referenced from this part of the query." msgstr "Hay una entrada para la tabla «%s», pero no puede ser referenciada desde esta parte de la consulta." -#: parser/parse_relation.c:429 +#: parser/parse_relation.c:430 #, c-format msgid "The combining JOIN type must be INNER or LEFT for a LATERAL reference." msgstr "El tipo de JOIN debe ser INNER o LEFT para una referencia LATERAL." -#: parser/parse_relation.c:705 +#: parser/parse_relation.c:706 #, c-format msgid "system column \"%s\" reference in check constraint is invalid" msgstr "la referencia a columna a sistema «%s» en una restricción check no es válida" -#: parser/parse_relation.c:1065 parser/parse_relation.c:1345 -#: parser/parse_relation.c:1847 +#: parser/parse_relation.c:1066 parser/parse_relation.c:1346 +#: parser/parse_relation.c:1848 #, c-format msgid "table \"%s\" has %d columns available but %d columns specified" msgstr "la tabla «%s» tiene %d columnas pero se especificaron %d" -#: parser/parse_relation.c:1152 +#: parser/parse_relation.c:1153 #, c-format msgid "There is a WITH item named \"%s\", but it cannot be referenced from this part of the query." msgstr "Hay un elemento WITH llamado «%s», pero no puede ser referenciada desde esta parte de la consulta." -#: parser/parse_relation.c:1154 +#: parser/parse_relation.c:1155 #, c-format msgid "Use WITH RECURSIVE, or re-order the WITH items to remove forward references." msgstr "Use WITH RECURSIVE, o reordene los elementos de WITH para eliminar referencias hacia adelante." -#: parser/parse_relation.c:1465 +#: parser/parse_relation.c:1466 #, c-format msgid "a column definition list is only allowed for functions returning \"record\"" msgstr "sólo se permite una lista de definición de columnas en funciones que retornan «record»" -#: parser/parse_relation.c:1474 +#: parser/parse_relation.c:1475 #, c-format msgid "a column definition list is required for functions returning \"record\"" msgstr "la lista de definición de columnas es obligatoria para funciones que retornan «record»" -#: parser/parse_relation.c:1553 +#: parser/parse_relation.c:1554 #, c-format msgid "function \"%s\" in FROM has unsupported return type %s" msgstr "la función «%s» en FROM tiene el tipo de retorno no soportado %s" -#: parser/parse_relation.c:1675 +#: parser/parse_relation.c:1676 #, c-format msgid "VALUES lists \"%s\" have %d columns available but %d columns specified" msgstr "la lista VALUES «%s» tiene %d columnas disponibles pero se especificaron %d" -#: parser/parse_relation.c:1730 +#: parser/parse_relation.c:1731 #, c-format msgid "joins can have at most %d columns" msgstr "los joins pueden tener a lo más %d columnas" -#: parser/parse_relation.c:1820 +#: parser/parse_relation.c:1821 #, c-format msgid "WITH query \"%s\" does not have a RETURNING clause" msgstr "la consulta WITH «%s» no tiene una cláusula RETURNING" -#: parser/parse_relation.c:2652 parser/parse_relation.c:2807 +#: parser/parse_relation.c:2738 parser/parse_relation.c:2900 #, c-format msgid "column %d of relation \"%s\" does not exist" msgstr "no existe la columna %d en la relación «%s»" -#: parser/parse_relation.c:3026 +#: parser/parse_relation.c:3119 #, c-format msgid "Perhaps you meant to reference the table alias \"%s\"." msgstr "Probablemente quiera hacer referencia al alias de la tabla «%s»." -#: parser/parse_relation.c:3034 +#: parser/parse_relation.c:3127 #, c-format msgid "missing FROM-clause entry for table \"%s\"" msgstr "falta una entrada para la tabla «%s» en la cláusula FROM" -#: parser/parse_relation.c:3086 -#, fuzzy, c-format +#: parser/parse_relation.c:3179 +#, c-format msgid "Perhaps you meant to reference the column \"%s.%s\"." -msgstr "Probablemente quiera hacer referencia al alias de la tabla «%s»." +msgstr "Probablemente quiera hacer referencia a la columna «%s.%s»." -#: parser/parse_relation.c:3088 +#: parser/parse_relation.c:3181 #, c-format msgid "There is a column named \"%s\" in table \"%s\", but it cannot be referenced from this part of the query." msgstr "Hay una columna llamada «%s» en la tabla «%s», pero no puede ser referenciada desde esta parte de la consulta." -#: parser/parse_relation.c:3105 -#, fuzzy, c-format +#: parser/parse_relation.c:3198 +#, c-format msgid "Perhaps you meant to reference the column \"%s.%s\" or the column \"%s.%s\"." -msgstr "Probablemente quiera hacer referencia al alias de la tabla «%s»." +msgstr "Probablemente quiera hacer referencia a la columna «%s.%s» o la columna «%s.%s»." -#: parser/parse_target.c:421 parser/parse_target.c:713 +#: parser/parse_target.c:432 parser/parse_target.c:724 #, c-format msgid "cannot assign to system column \"%s\"" msgstr "no se puede asignar a la columna de sistema «%s»" -#: parser/parse_target.c:449 +#: parser/parse_target.c:460 #, c-format msgid "cannot set an array element to DEFAULT" msgstr "no se puede definir un elemento de array a DEFAULT" -#: parser/parse_target.c:454 +#: parser/parse_target.c:465 #, c-format msgid "cannot set a subfield to DEFAULT" msgstr "no se puede definir un subcampo a DEFAULT" -#: parser/parse_target.c:523 +#: parser/parse_target.c:534 #, c-format msgid "column \"%s\" is of type %s but expression is of type %s" msgstr "la columna «%s» es de tipo %s pero la expresión es de tipo %s" -#: parser/parse_target.c:697 +#: parser/parse_target.c:708 #, c-format msgid "cannot assign to field \"%s\" of column \"%s\" because its type %s is not a composite type" msgstr "no se puede asignar al campo «%s» de la columna «%s» porque su tipo %s no es un tipo compuesto" -#: parser/parse_target.c:706 +#: parser/parse_target.c:717 #, c-format msgid "cannot assign to field \"%s\" of column \"%s\" because there is no such column in data type %s" msgstr "no se puede asignar al campo «%s» de la columna «%s» porque no existe esa columna en el tipo de dato %s" -#: parser/parse_target.c:773 +#: parser/parse_target.c:784 #, c-format msgid "array assignment to \"%s\" requires type %s but expression is of type %s" msgstr "la asignación de array a «%s» requiere tipo %s pero la expresión es de tipo %s" -#: parser/parse_target.c:783 +#: parser/parse_target.c:794 #, c-format msgid "subfield \"%s\" is of type %s but expression is of type %s" msgstr "el subcampo «%s» es de tipo %s pero la expresión es de tipo %s" -#: parser/parse_target.c:1199 +#: parser/parse_target.c:1210 #, c-format msgid "SELECT * with no tables specified is not valid" msgstr "SELECT * sin especificar tablas no es válido" @@ -13996,219 +13364,224 @@ msgstr "los modificadores de tipo deben ser constantes simples o identificadores msgid "invalid type name \"%s\"" msgstr "el nombre de tipo «%s» no es válido" -#: parser/parse_utilcmd.c:399 +#: parser/parse_utilcmd.c:385 #, c-format msgid "array of serial is not implemented" msgstr "array de serial no está implementado" -#: parser/parse_utilcmd.c:447 +#: parser/parse_utilcmd.c:433 #, c-format msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\"" msgstr "%s creará una secuencia implícita «%s» para la columna serial «%s.%s»" -#: parser/parse_utilcmd.c:541 parser/parse_utilcmd.c:553 +#: parser/parse_utilcmd.c:527 parser/parse_utilcmd.c:539 #, c-format msgid "conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\"" msgstr "las declaraciones NULL/NOT NULL no son coincidentes para la columna «%s» de la tabla «%s»" -#: parser/parse_utilcmd.c:565 +#: parser/parse_utilcmd.c:551 #, c-format msgid "multiple default values specified for column \"%s\" of table \"%s\"" msgstr "múltiples valores default especificados para columna «%s» de tabla «%s»" -#: parser/parse_utilcmd.c:582 parser/parse_utilcmd.c:673 -#, fuzzy, c-format +#: parser/parse_utilcmd.c:568 parser/parse_utilcmd.c:659 +#, c-format msgid "primary key constraints are not supported on foreign tables" -msgstr "las restricciones no están soportadas en tablas foráneas" +msgstr "las restricciones de llave primaria no están soportadas en tablas foráneas" -#: parser/parse_utilcmd.c:591 parser/parse_utilcmd.c:683 -#, fuzzy, c-format +#: parser/parse_utilcmd.c:577 parser/parse_utilcmd.c:669 +#, c-format msgid "unique constraints are not supported on foreign tables" -msgstr "las restricciones no están soportadas en tablas foráneas" +msgstr "las restricciones unique no están soportadas en tablas foráneas" -#: parser/parse_utilcmd.c:608 parser/parse_utilcmd.c:707 -#, fuzzy, c-format +#: parser/parse_utilcmd.c:594 parser/parse_utilcmd.c:693 +#, c-format msgid "foreign key constraints are not supported on foreign tables" -msgstr "las restricciones no están soportadas en tablas foráneas" +msgstr "las restricciones de llave foránea no están soportadas en tablas foráneas" -#: parser/parse_utilcmd.c:693 -#, fuzzy, c-format +#: parser/parse_utilcmd.c:679 +#, c-format msgid "exclusion constraints are not supported on foreign tables" -msgstr "las restricciones no están soportadas en tablas foráneas" +msgstr "las restricciones exclusion no están soportadas en tablas foráneas" -#: parser/parse_utilcmd.c:757 +#: parser/parse_utilcmd.c:743 #, c-format msgid "LIKE is not supported for creating foreign tables" msgstr "LIKE no está soportado para la creación de tablas foráneas" -#: parser/parse_utilcmd.c:1290 parser/parse_utilcmd.c:1366 +#: parser/parse_utilcmd.c:1276 parser/parse_utilcmd.c:1352 #, c-format msgid "Index \"%s\" contains a whole-row table reference." msgstr "El índice «%s» contiene una referencia a la fila completa (whole-row)." -#: parser/parse_utilcmd.c:1636 +#: parser/parse_utilcmd.c:1622 #, c-format msgid "cannot use an existing index in CREATE TABLE" msgstr "no se puede usar un índice existente en CREATE TABLE" -#: parser/parse_utilcmd.c:1656 +#: parser/parse_utilcmd.c:1642 #, c-format msgid "index \"%s\" is already associated with a constraint" msgstr "el índice «%s» ya está asociado a una restricción" -#: parser/parse_utilcmd.c:1664 +#: parser/parse_utilcmd.c:1650 #, c-format msgid "index \"%s\" does not belong to table \"%s\"" msgstr "el índice «%s» no pertenece a la tabla «%s»" -#: parser/parse_utilcmd.c:1671 +#: parser/parse_utilcmd.c:1657 #, c-format msgid "index \"%s\" is not valid" msgstr "el índice «%s» no es válido" -#: parser/parse_utilcmd.c:1677 +#: parser/parse_utilcmd.c:1663 #, c-format msgid "\"%s\" is not a unique index" msgstr "«%s» no es un índice único" -#: parser/parse_utilcmd.c:1678 parser/parse_utilcmd.c:1685 -#: parser/parse_utilcmd.c:1692 parser/parse_utilcmd.c:1762 +#: parser/parse_utilcmd.c:1664 parser/parse_utilcmd.c:1671 +#: parser/parse_utilcmd.c:1678 parser/parse_utilcmd.c:1748 #, c-format msgid "Cannot create a primary key or unique constraint using such an index." msgstr "No se puede crear una restricción de llave primaria o única usando un índice así." -#: parser/parse_utilcmd.c:1684 +#: parser/parse_utilcmd.c:1670 #, c-format msgid "index \"%s\" contains expressions" msgstr "el índice «%s» contiene expresiones" -#: parser/parse_utilcmd.c:1691 +#: parser/parse_utilcmd.c:1677 #, c-format msgid "\"%s\" is a partial index" msgstr "«%s» es un índice parcial" -#: parser/parse_utilcmd.c:1703 +#: parser/parse_utilcmd.c:1689 #, c-format msgid "\"%s\" is a deferrable index" msgstr "«%s» no es un índice postergable (deferrable)" -#: parser/parse_utilcmd.c:1704 +#: parser/parse_utilcmd.c:1690 #, c-format msgid "Cannot create a non-deferrable constraint using a deferrable index." msgstr "No se puede crear una restricción no postergable usando un índice postergable." -#: parser/parse_utilcmd.c:1761 +#: parser/parse_utilcmd.c:1747 #, c-format msgid "index \"%s\" does not have default sorting behavior" msgstr "el índice «%s» no tiene el comportamiento de ordenamiento por omisión" -#: parser/parse_utilcmd.c:1908 +#: parser/parse_utilcmd.c:1894 #, c-format msgid "column \"%s\" appears twice in primary key constraint" msgstr "la columna «%s» aparece dos veces en llave primaria" -#: parser/parse_utilcmd.c:1914 +#: parser/parse_utilcmd.c:1900 #, c-format msgid "column \"%s\" appears twice in unique constraint" msgstr "la columna «%s» aparece dos veces en restricción unique" -#: parser/parse_utilcmd.c:2118 +#: parser/parse_utilcmd.c:2104 #, c-format msgid "index expression cannot return a set" msgstr "las expresiones de índice no pueden retornar conjuntos" -#: parser/parse_utilcmd.c:2129 +#: parser/parse_utilcmd.c:2115 #, c-format msgid "index expressions and predicates can refer only to the table being indexed" msgstr "las expresiones y predicados de índice sólo pueden referirse a la tabla en indexación" -#: parser/parse_utilcmd.c:2175 +#: parser/parse_utilcmd.c:2161 #, c-format msgid "rules on materialized views are not supported" msgstr "las reglas en vistas materializadas no están soportadas" -#: parser/parse_utilcmd.c:2236 +#: parser/parse_utilcmd.c:2222 #, c-format msgid "rule WHERE condition cannot contain references to other relations" msgstr "la condición WHERE de la regla no puede contener referencias a otras relaciones" -#: parser/parse_utilcmd.c:2308 +#: parser/parse_utilcmd.c:2294 #, c-format msgid "rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE actions" msgstr "las reglas con condiciones WHERE sólo pueden tener acciones SELECT, INSERT, UPDATE o DELETE" -#: parser/parse_utilcmd.c:2326 parser/parse_utilcmd.c:2425 +#: parser/parse_utilcmd.c:2312 parser/parse_utilcmd.c:2411 #: rewrite/rewriteHandler.c:485 rewrite/rewriteManip.c:1015 #, c-format msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" msgstr "las sentencias UNION/INTERSECT/EXCEPT condicionales no están implementadas" -#: parser/parse_utilcmd.c:2344 +#: parser/parse_utilcmd.c:2330 #, c-format msgid "ON SELECT rule cannot use OLD" msgstr "una regla ON SELECT no puede usar OLD" -#: parser/parse_utilcmd.c:2348 +#: parser/parse_utilcmd.c:2334 #, c-format msgid "ON SELECT rule cannot use NEW" msgstr "una regla ON SELECT no puede usar NEW" -#: parser/parse_utilcmd.c:2357 +#: parser/parse_utilcmd.c:2343 #, c-format msgid "ON INSERT rule cannot use OLD" msgstr "una regla ON INSERT no puede usar OLD" -#: parser/parse_utilcmd.c:2363 +#: parser/parse_utilcmd.c:2349 #, c-format msgid "ON DELETE rule cannot use NEW" msgstr "una regla ON DELETE no puede usar NEW" -#: parser/parse_utilcmd.c:2391 +#: parser/parse_utilcmd.c:2377 #, c-format msgid "cannot refer to OLD within WITH query" msgstr "no se puede hacer referencia a OLD dentro de una consulta WITH" -#: parser/parse_utilcmd.c:2398 +#: parser/parse_utilcmd.c:2384 #, c-format msgid "cannot refer to NEW within WITH query" msgstr "no se puede hacer referencia a NEW dentro de una consulta WITH" -#: parser/parse_utilcmd.c:2601 +#: parser/parse_utilcmd.c:2587 #, c-format msgid "transform expression must not return a set" msgstr "la expresión de transformación no puede retornar conjuntos" -#: parser/parse_utilcmd.c:2715 +#: parser/parse_utilcmd.c:2701 #, c-format msgid "misplaced DEFERRABLE clause" msgstr "cláusula DEFERRABLE mal puesta" -#: parser/parse_utilcmd.c:2720 parser/parse_utilcmd.c:2735 +#: parser/parse_utilcmd.c:2706 parser/parse_utilcmd.c:2721 #, c-format msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" msgstr "no se permiten múltiples cláusulas DEFERRABLE/NOT DEFERRABLE" -#: parser/parse_utilcmd.c:2730 +#: parser/parse_utilcmd.c:2716 #, c-format msgid "misplaced NOT DEFERRABLE clause" msgstr "la cláusula NOT DEFERRABLE está mal puesta" -#: parser/parse_utilcmd.c:2751 +#: parser/parse_utilcmd.c:2729 parser/parse_utilcmd.c:2755 gram.y:4911 +#, c-format +msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" +msgstr "una restricción declarada INITIALLY DEFERRED debe ser DEFERRABLE" + +#: parser/parse_utilcmd.c:2737 #, c-format msgid "misplaced INITIALLY DEFERRED clause" msgstr "la cláusula INITIALLY DEFERRED está mal puesta" -#: parser/parse_utilcmd.c:2756 parser/parse_utilcmd.c:2782 +#: parser/parse_utilcmd.c:2742 parser/parse_utilcmd.c:2768 #, c-format msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" msgstr "no se permiten múltiples cláusulas INITIALLY IMMEDIATE/DEFERRED" -#: parser/parse_utilcmd.c:2777 +#: parser/parse_utilcmd.c:2763 #, c-format msgid "misplaced INITIALLY IMMEDIATE clause" msgstr "la cláusula INITIALLY IMMEDIATE está mal puesta" -#: parser/parse_utilcmd.c:2968 +#: parser/parse_utilcmd.c:2954 #, c-format msgid "CREATE specifies a schema (%s) different from the one being created (%s)" msgstr "CREATE especifica un esquema (%s) diferente del que se está creando (%s)" @@ -14243,17 +13616,17 @@ msgstr "" msgid "You possibly need to raise your kernel's SEMVMX value to be at least %d. Look into the PostgreSQL documentation for details." msgstr "Probablemente necesita incrementar el valor SEMVMX del kernel hasta al menos %d. Examine la documentación de PostgreSQL para obtener más detalles." -#: port/pg_shmem.c:141 port/sysv_shmem.c:141 +#: port/pg_shmem.c:195 port/sysv_shmem.c:195 #, c-format msgid "could not create shared memory segment: %m" msgstr "no se pudo crear el segmento de memoria compartida: %m" -#: port/pg_shmem.c:142 port/sysv_shmem.c:142 +#: port/pg_shmem.c:196 port/sysv_shmem.c:196 #, c-format msgid "Failed system call was shmget(key=%lu, size=%zu, 0%o)." msgstr "La llamada a sistema fallida fue shmget(key=%lu, size=%zu, 0%o)." -#: port/pg_shmem.c:146 port/sysv_shmem.c:146 +#: port/pg_shmem.c:200 port/sysv_shmem.c:200 #, c-format msgid "" "This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter, or possibly that it is less than your kernel's SHMMIN parameter.\n" @@ -14262,7 +13635,7 @@ msgstr "" "Este error normalmente significa que la petición de un segmento de memoria compartida de PostgreSQL excedió el parámetro SHMMAX del kernel, o posiblemente que es menor que el parámetro SHMMIN del kernel.\n" "La documentación de PostgreSQL contiene más información acerca de la configuración de memoria compartida." -#: port/pg_shmem.c:153 port/sysv_shmem.c:153 +#: port/pg_shmem.c:207 port/sysv_shmem.c:207 #, c-format msgid "" "This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMALL parameter. You might need to reconfigure the kernel with larger SHMALL.\n" @@ -14271,7 +13644,7 @@ msgstr "" "Este error normalmente significa que la petición de un segmento de memoria compartida de PostgreSQL excedió el parámetro SHMALL del kernel. Puede ser necesario reconfigurar el kernel con un SHMALL mayor.\n" "La documentación de PostgreSQL contiene más información acerca de la configuración de memoria compartida." -#: port/pg_shmem.c:159 port/sysv_shmem.c:159 +#: port/pg_shmem.c:213 port/sysv_shmem.c:213 #, c-format msgid "" "This error does *not* mean that you have run out of disk space. It occurs either if all available shared memory IDs have been taken, in which case you need to raise the SHMMNI parameter in your kernel, or because the system's overall limit for shared memory has been reached.\n" @@ -14280,27 +13653,22 @@ msgstr "" "Este error *no* significa que se haya quedado sin espacio en disco. Ocurre cuando se han usado todos los IDs de memoria compartida disponibles, en cuyo caso puede incrementar el parámetro SHMMNI del kernel, o bien porque se ha alcanzado el límite total de memoria compartida.\n" "La documentación de PostgreSQL contiene más información acerca de la configuración de memoria compartida." -#: port/pg_shmem.c:340 port/sysv_shmem.c:340 -#, c-format -msgid "huge TLB pages not supported on this platform" -msgstr "las «huge TLB pages» no están soportadas en esta plataforma" - -#: port/pg_shmem.c:390 port/sysv_shmem.c:390 +#: port/pg_shmem.c:504 port/sysv_shmem.c:504 #, c-format msgid "could not map anonymous shared memory: %m" msgstr "no se pudo mapear memoria compartida anónima: %m" -#: port/pg_shmem.c:392 port/sysv_shmem.c:392 +#: port/pg_shmem.c:506 port/sysv_shmem.c:506 #, c-format msgid "This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory, swap space, or huge pages. To reduce the request size (currently %zu bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections." msgstr "Este error normalmente significa que la petición de un segmento de memoria compartida de PostgreSQL excedía la memoria disponible, el espacio de intercambio (swap), o las huge pages. Para reducir el tamaño de la petición (actualmente %zu bytes), reduzca el uso de memoria compartida de PostgreSQL, quizás reduciendo el parámetro shared_buffers o el parámetro max_connections." -#: port/pg_shmem.c:439 port/sysv_shmem.c:439 port/win32_shmem.c:134 +#: port/pg_shmem.c:572 port/sysv_shmem.c:572 port/win32_shmem.c:134 #, c-format msgid "huge pages not supported on this platform" msgstr "las huge pages no están soportados en esta plataforma" -#: port/pg_shmem.c:553 port/sysv_shmem.c:553 +#: port/pg_shmem.c:667 port/sysv_shmem.c:667 #, c-format msgid "could not stat data directory \"%s\": %m" msgstr "no se pudo hacer stat al directorio de datos «%s»: %m" @@ -14420,82 +13788,82 @@ msgstr "no se pudo lanzar el proceso «autovacuum worker»: %m" msgid "autovacuum: processing database \"%s\"" msgstr "autovacuum: procesando la base de datos «%s»" -#: postmaster/autovacuum.c:2050 +#: postmaster/autovacuum.c:2052 #, c-format msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\"" msgstr "autovacuum: eliminando la tabla temporal huérfana «%s».«%s» en la base de datos «%s»" -#: postmaster/autovacuum.c:2062 +#: postmaster/autovacuum.c:2064 #, c-format msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\"" msgstr "autovacuum: se encontró una tabla temporal huérfana «%s».«%s» en la base de datos «%s»" -#: postmaster/autovacuum.c:2344 +#: postmaster/autovacuum.c:2347 #, c-format msgid "automatic vacuum of table \"%s.%s.%s\"" msgstr "vacuum automático de la tabla «%s.%s.%s»" -#: postmaster/autovacuum.c:2347 +#: postmaster/autovacuum.c:2350 #, c-format msgid "automatic analyze of table \"%s.%s.%s\"" msgstr "análisis automático de la tabla «%s.%s.%s»" -#: postmaster/autovacuum.c:2877 +#: postmaster/autovacuum.c:2899 #, c-format msgid "autovacuum not started because of misconfiguration" msgstr "autovacuum no fue iniciado debido a un error de configuración" -#: postmaster/autovacuum.c:2878 +#: postmaster/autovacuum.c:2900 #, c-format msgid "Enable the \"track_counts\" option." msgstr "Active la opción «track_counts»." -#: postmaster/bgworker.c:346 postmaster/bgworker.c:746 +#: postmaster/bgworker.c:367 postmaster/bgworker.c:762 #, c-format msgid "registering background worker \"%s\"" msgstr "registrando el «background worker» «%s»" -#: postmaster/bgworker.c:375 +#: postmaster/bgworker.c:396 #, c-format msgid "unregistering background worker \"%s\"" msgstr "des-registrando el «background worker» «%s»" -#: postmaster/bgworker.c:484 +#: postmaster/bgworker.c:505 #, c-format msgid "background worker \"%s\": must attach to shared memory in order to request a database connection" msgstr "«background worker» «%s»: debe acoplarse a memoria compartida para poder solicitar una conexión a base de datos" -#: postmaster/bgworker.c:493 +#: postmaster/bgworker.c:514 #, c-format msgid "background worker \"%s\": cannot request database access if starting at postmaster start" msgstr "«background worker» «%s»: no se puede solicitar una conexión a base de datos si está iniciando en el momento de inicio de postmaster" -#: postmaster/bgworker.c:507 +#: postmaster/bgworker.c:528 #, c-format msgid "background worker \"%s\": invalid restart interval" msgstr "«background worker» «%s»: intervalo de reinicio no válido" -#: postmaster/bgworker.c:552 +#: postmaster/bgworker.c:573 #, c-format msgid "terminating background worker \"%s\" due to administrator command" msgstr "terminando el «background worker» «%s» debido a una orden del administrador" -#: postmaster/bgworker.c:753 +#: postmaster/bgworker.c:769 #, c-format msgid "background worker \"%s\": must be registered in shared_preload_libraries" msgstr "«background worker» «%s»: debe ser registrado en shared_preload_libraries" -#: postmaster/bgworker.c:765 +#: postmaster/bgworker.c:781 #, c-format msgid "background worker \"%s\": only dynamic background workers can request notification" msgstr "«background worker» «%s»: sólo los «background worker» dinámicos pueden pedir notificaciones" -#: postmaster/bgworker.c:780 +#: postmaster/bgworker.c:796 #, c-format msgid "too many background workers" msgstr "demasiados «background workers»" -#: postmaster/bgworker.c:781 +#: postmaster/bgworker.c:797 #, c-format msgid "Up to %d background worker can be registered with the current settings." msgid_plural "Up to %d background workers can be registered with the current settings." @@ -14503,7 +13871,7 @@ msgstr[0] "Hasta %d «background worker» puede registrarse con la configuració msgstr[1] "Hasta %d «background workers» pueden registrarse con la configuración actual." # FIXME a %s would be nice here -#: postmaster/bgworker.c:785 +#: postmaster/bgworker.c:801 #, c-format msgid "Consider increasing the configuration parameter \"max_worker_processes\"." msgstr "Considere incrementar el parámetro de configuración «max_worker_processes»." @@ -14517,9 +13885,9 @@ msgstr[1] "los puntos de control están ocurriendo con demasiada frecuencia (cad # FIXME a %s would be nice here #: postmaster/checkpointer.c:467 -#, fuzzy, c-format +#, c-format msgid "Consider increasing the configuration parameter \"max_wal_size\"." -msgstr "Considere incrementar el parámetro de configuración «max_worker_processes»." +msgstr "Considere incrementar el parámetro de configuración «max_wal_size»." #: postmaster/checkpointer.c:614 #, c-format @@ -14529,7 +13897,7 @@ msgstr "cambio forzado de registro de transacción (archive_timeout=%d)" #: postmaster/checkpointer.c:1072 #, c-format msgid "checkpoint request failed" -msgstr "falló la petición de punto de control" +msgstr "la petición de checkpoint falló" #: postmaster/checkpointer.c:1073 #, c-format @@ -14572,7 +13940,7 @@ msgstr "La orden fallida era: «%s»" msgid "archive command was terminated by exception 0x%X" msgstr "la orden de archivado fue terminada por una excepción 0x%X" -#: postmaster/pgarch.c:598 postmaster/postmaster.c:3490 +#: postmaster/pgarch.c:598 postmaster/postmaster.c:3514 #, c-format msgid "See C include file \"ntstatus.h\" for a description of the hexadecimal value." msgstr "Vea el archivo «ntstatus.h» para una descripción del valor hexadecimal." @@ -14602,294 +13970,293 @@ msgstr "el archivo de registro «%s» ha sido archivado" msgid "could not open archive status directory \"%s\": %m" msgstr "no se pudo abrir el directorio de estado de archivado «%s»: %m" -#: postmaster/pgstat.c:352 +#: postmaster/pgstat.c:358 #, c-format msgid "could not resolve \"localhost\": %s" msgstr "no se pudo resolver «localhost»: %s" -#: postmaster/pgstat.c:375 +#: postmaster/pgstat.c:381 #, c-format msgid "trying another address for the statistics collector" msgstr "intentando otra dirección para el recolector de estadísticas" -#: postmaster/pgstat.c:384 +#: postmaster/pgstat.c:390 #, c-format msgid "could not create socket for statistics collector: %m" msgstr "no se pudo crear el socket para el recolector de estadísticas: %m" -#: postmaster/pgstat.c:396 +#: postmaster/pgstat.c:402 #, c-format msgid "could not bind socket for statistics collector: %m" msgstr "no se pudo enlazar (bind) el socket para el recolector de estadísticas: %m" -#: postmaster/pgstat.c:407 +#: postmaster/pgstat.c:413 #, c-format msgid "could not get address of socket for statistics collector: %m" msgstr "no se pudo obtener la dirección del socket de estadísticas: %m" -#: postmaster/pgstat.c:423 +#: postmaster/pgstat.c:429 #, c-format msgid "could not connect socket for statistics collector: %m" msgstr "no se pudo conectar el socket para el recolector de estadísticas: %m" -#: postmaster/pgstat.c:444 +#: postmaster/pgstat.c:450 #, c-format msgid "could not send test message on socket for statistics collector: %m" msgstr "no se pudo enviar el mensaje de prueba al recolector de estadísticas: %m" -#: postmaster/pgstat.c:470 +#: postmaster/pgstat.c:476 #, c-format msgid "select() failed in statistics collector: %m" msgstr "select() falló en el recolector de estadísticas: %m" -#: postmaster/pgstat.c:485 +#: postmaster/pgstat.c:491 #, c-format msgid "test message did not get through on socket for statistics collector" msgstr "el mensaje de prueba al recolector de estadísticas no ha sido recibido en el socket" -#: postmaster/pgstat.c:500 +#: postmaster/pgstat.c:506 #, c-format msgid "could not receive test message on socket for statistics collector: %m" msgstr "no se pudo recibir el mensaje de prueba en el socket del recolector de estadísticas: %m" -#: postmaster/pgstat.c:510 +#: postmaster/pgstat.c:516 #, c-format msgid "incorrect test message transmission on socket for statistics collector" msgstr "transmisión del mensaje de prueba incorrecta en el socket del recolector de estadísticas" -#: postmaster/pgstat.c:533 +#: postmaster/pgstat.c:539 #, c-format msgid "could not set statistics collector socket to nonblocking mode: %m" msgstr "no se pudo poner el socket de estadísticas en modo no bloqueante: %m" -#: postmaster/pgstat.c:543 +#: postmaster/pgstat.c:578 #, c-format msgid "disabling statistics collector for lack of working socket" msgstr "desactivando el recolector de estadísticas por falla del socket" -#: postmaster/pgstat.c:690 +#: postmaster/pgstat.c:725 #, c-format msgid "could not fork statistics collector: %m" msgstr "no se pudo crear el proceso para el recolector de estadísticas: %m" -#: postmaster/pgstat.c:1258 +#: postmaster/pgstat.c:1293 #, c-format msgid "unrecognized reset target: \"%s\"" msgstr "destino de reset no reconocido: «%s»" -#: postmaster/pgstat.c:1259 +#: postmaster/pgstat.c:1294 #, c-format msgid "Target must be \"archiver\" or \"bgwriter\"." msgstr "El destino debe ser «archiver» o «bgwriter»." -#: postmaster/pgstat.c:3579 +#: postmaster/pgstat.c:3619 #, c-format msgid "could not read statistics message: %m" msgstr "no se pudo leer un mensaje de estadísticas: %m" -#: postmaster/pgstat.c:3910 postmaster/pgstat.c:4067 +#: postmaster/pgstat.c:3950 postmaster/pgstat.c:4107 #, c-format msgid "could not open temporary statistics file \"%s\": %m" msgstr "no se pudo abrir el archivo temporal de estadísticas «%s»: %m" -#: postmaster/pgstat.c:3977 postmaster/pgstat.c:4112 +#: postmaster/pgstat.c:4017 postmaster/pgstat.c:4152 #, c-format msgid "could not write temporary statistics file \"%s\": %m" msgstr "no se pudo escribir el archivo temporal de estadísticas «%s»: %m" -#: postmaster/pgstat.c:3986 postmaster/pgstat.c:4121 +#: postmaster/pgstat.c:4026 postmaster/pgstat.c:4161 #, c-format msgid "could not close temporary statistics file \"%s\": %m" msgstr "no se pudo cerrar el archivo temporal de estadísticas «%s»: %m" -#: postmaster/pgstat.c:3994 postmaster/pgstat.c:4129 +#: postmaster/pgstat.c:4034 postmaster/pgstat.c:4169 #, c-format msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m" msgstr "no se pudo cambiar el nombre al archivo temporal de estadísticas de «%s» a «%s»: %m" -#: postmaster/pgstat.c:4218 postmaster/pgstat.c:4403 postmaster/pgstat.c:4556 +#: postmaster/pgstat.c:4258 postmaster/pgstat.c:4464 postmaster/pgstat.c:4617 #, c-format msgid "could not open statistics file \"%s\": %m" msgstr "no se pudo abrir el archivo de estadísticas «%s»: %m" -#: postmaster/pgstat.c:4230 postmaster/pgstat.c:4240 postmaster/pgstat.c:4250 -#: postmaster/pgstat.c:4271 postmaster/pgstat.c:4286 postmaster/pgstat.c:4340 -#: postmaster/pgstat.c:4415 postmaster/pgstat.c:4435 postmaster/pgstat.c:4453 -#: postmaster/pgstat.c:4469 postmaster/pgstat.c:4487 postmaster/pgstat.c:4503 -#: postmaster/pgstat.c:4568 postmaster/pgstat.c:4580 postmaster/pgstat.c:4592 -#: postmaster/pgstat.c:4617 postmaster/pgstat.c:4639 +#: postmaster/pgstat.c:4270 postmaster/pgstat.c:4280 postmaster/pgstat.c:4301 +#: postmaster/pgstat.c:4323 postmaster/pgstat.c:4338 postmaster/pgstat.c:4401 +#: postmaster/pgstat.c:4476 postmaster/pgstat.c:4496 postmaster/pgstat.c:4514 +#: postmaster/pgstat.c:4530 postmaster/pgstat.c:4548 postmaster/pgstat.c:4564 +#: postmaster/pgstat.c:4629 postmaster/pgstat.c:4641 postmaster/pgstat.c:4653 +#: postmaster/pgstat.c:4678 postmaster/pgstat.c:4700 #, c-format msgid "corrupted statistics file \"%s\"" msgstr "el archivo de estadísticas «%s» está corrupto" -#: postmaster/pgstat.c:4768 +#: postmaster/pgstat.c:4829 #, c-format msgid "using stale statistics instead of current ones because stats collector is not responding" msgstr "usando estadísticas añejas en vez de actualizadas porque el recolector de estadísticas no está respondiendo" -#: postmaster/pgstat.c:5095 +#: postmaster/pgstat.c:5156 #, c-format msgid "database hash table corrupted during cleanup --- abort" msgstr "el hash de bases de datos se corrompió durante la finalización; abortando" -#: postmaster/postmaster.c:684 +#: postmaster/postmaster.c:702 #, c-format msgid "%s: invalid argument for option -f: \"%s\"\n" msgstr "%s: argumento no válido para la opción -f: «%s»\n" -#: postmaster/postmaster.c:770 +#: postmaster/postmaster.c:788 #, c-format msgid "%s: invalid argument for option -t: \"%s\"\n" msgstr "%s: argumento no válido para la opción -t: «%s»\n" -#: postmaster/postmaster.c:821 +#: postmaster/postmaster.c:839 #, c-format msgid "%s: invalid argument: \"%s\"\n" msgstr "%s: argumento no válido: «%s»\n" -#: postmaster/postmaster.c:860 +#: postmaster/postmaster.c:878 #, c-format msgid "%s: superuser_reserved_connections must be less than max_connections\n" msgstr "%s: superuser_reserved_connections debe ser menor que max_connections\n" -#: postmaster/postmaster.c:865 +#: postmaster/postmaster.c:883 #, c-format msgid "%s: max_wal_senders must be less than max_connections\n" msgstr "%s: max_wal_senders debe ser menor que max_connections\n" -#: postmaster/postmaster.c:870 +#: postmaster/postmaster.c:888 #, c-format msgid "WAL archival cannot be enabled when wal_level is \"minimal\"" -msgstr "" +msgstr "el archivador de WAL no puede activarse cuando wal_level es «minimal»" -#: postmaster/postmaster.c:873 -#, fuzzy, c-format -#| msgid "WAL streaming (max_wal_senders > 0) requires wal_level \"archive\", \"hot_standby\", or \"logical\"" +#: postmaster/postmaster.c:891 +#, c-format msgid "WAL streaming (max_wal_senders > 0) requires wal_level \"replica\" or \"logical\"" -msgstr "el flujo de WAL (max_wal_senders > 0) requiere wal_level «archive» o «hot_standby» o «logical»" +msgstr "el flujo de WAL (max_wal_senders > 0) requiere wal_level «replica» o «logical»" -#: postmaster/postmaster.c:881 +#: postmaster/postmaster.c:899 #, c-format msgid "%s: invalid datetoken tables, please fix\n" msgstr "%s: las tablas de palabras clave de fecha no son válidas, arréglelas\n" -#: postmaster/postmaster.c:973 postmaster/postmaster.c:1071 +#: postmaster/postmaster.c:991 postmaster/postmaster.c:1089 #: utils/init/miscinit.c:1429 #, c-format msgid "invalid list syntax in parameter \"%s\"" msgstr "la sintaxis de lista no es válida para el parámetro «%s»" -#: postmaster/postmaster.c:1004 +#: postmaster/postmaster.c:1022 #, c-format msgid "could not create listen socket for \"%s\"" msgstr "no se pudo crear el socket de escucha para «%s»" -#: postmaster/postmaster.c:1010 +#: postmaster/postmaster.c:1028 #, c-format msgid "could not create any TCP/IP sockets" msgstr "no se pudo crear ningún socket TCP/IP" -#: postmaster/postmaster.c:1093 +#: postmaster/postmaster.c:1111 #, c-format msgid "could not create Unix-domain socket in directory \"%s\"" msgstr "no se pudo crear el socket de dominio Unix en el directorio «%s»" -#: postmaster/postmaster.c:1099 +#: postmaster/postmaster.c:1117 #, c-format msgid "could not create any Unix-domain sockets" msgstr "no se pudo crear ningún socket de dominio Unix" -#: postmaster/postmaster.c:1111 +#: postmaster/postmaster.c:1129 #, c-format msgid "no socket created for listening" msgstr "no se creó el socket de atención" -#: postmaster/postmaster.c:1151 +#: postmaster/postmaster.c:1169 #, c-format msgid "could not create I/O completion port for child queue" msgstr "no se pudo crear el port E/S de reporte de completitud para la cola de procesos hijos" -#: postmaster/postmaster.c:1180 +#: postmaster/postmaster.c:1198 #, c-format msgid "%s: could not change permissions of external PID file \"%s\": %s\n" msgstr "%s: no se pudo cambiar los permisos del archivo de PID externo «%s»: %s\n" -#: postmaster/postmaster.c:1184 +#: postmaster/postmaster.c:1202 #, c-format msgid "%s: could not write external PID file \"%s\": %s\n" msgstr "%s: no pudo escribir en el archivo externo de PID «%s»: %s\n" -#: postmaster/postmaster.c:1234 +#: postmaster/postmaster.c:1252 #, c-format msgid "ending log output to stderr" msgstr "terminando la salida de registro a stderr" -#: postmaster/postmaster.c:1235 +#: postmaster/postmaster.c:1253 #, c-format msgid "Future log output will go to log destination \"%s\"." msgstr "La salida futura del registro será enviada al destino de log «%s»." -#: postmaster/postmaster.c:1261 utils/init/postinit.c:213 +#: postmaster/postmaster.c:1279 utils/init/postinit.c:213 #, c-format msgid "could not load pg_hba.conf" msgstr "no se pudo cargar pg_hba.conf" -#: postmaster/postmaster.c:1287 +#: postmaster/postmaster.c:1305 #, c-format msgid "postmaster became multithreaded during startup" msgstr "postmaster se volvió multi-hilo durante la partida" -#: postmaster/postmaster.c:1288 +#: postmaster/postmaster.c:1306 #, c-format msgid "Set the LC_ALL environment variable to a valid locale." msgstr "Defina la variable de ambiente LC_ALL a un valor válido." -#: postmaster/postmaster.c:1385 +#: postmaster/postmaster.c:1403 #, c-format msgid "%s: could not locate matching postgres executable" msgstr "%s: no se pudo localizar el ejecutable postgres correspondiente" -#: postmaster/postmaster.c:1408 utils/misc/tzparser.c:341 +#: postmaster/postmaster.c:1426 utils/misc/tzparser.c:341 #, c-format msgid "This may indicate an incomplete PostgreSQL installation, or that the file \"%s\" has been moved away from its proper location." msgstr "Esto puede indicar una instalación de PostgreSQL incompleta, o que el archivo «%s» ha sido movido de la ubicación adecuada." -#: postmaster/postmaster.c:1436 +#: postmaster/postmaster.c:1454 #, c-format msgid "data directory \"%s\" does not exist" msgstr "no existe el directorio de datos «%s»" -#: postmaster/postmaster.c:1441 +#: postmaster/postmaster.c:1459 #, c-format msgid "could not read permissions of directory \"%s\": %m" msgstr "no se pudo obtener los permisos del directorio «%s»: %m" -#: postmaster/postmaster.c:1449 +#: postmaster/postmaster.c:1467 #, c-format msgid "specified data directory \"%s\" is not a directory" msgstr "el directorio de datos especificado «%s» no es un directorio" -#: postmaster/postmaster.c:1465 +#: postmaster/postmaster.c:1483 #, c-format msgid "data directory \"%s\" has wrong ownership" msgstr "el directorio de datos «%s» tiene dueño equivocado" -#: postmaster/postmaster.c:1467 +#: postmaster/postmaster.c:1485 #, c-format msgid "The server must be started by the user that owns the data directory." msgstr "El servidor debe ser iniciado por el usuario dueño del directorio de datos." -#: postmaster/postmaster.c:1487 +#: postmaster/postmaster.c:1505 #, c-format msgid "data directory \"%s\" has group or world access" msgstr "el directorio de datos «%s» tiene acceso para el grupo u otros" -#: postmaster/postmaster.c:1489 +#: postmaster/postmaster.c:1507 #, c-format msgid "Permissions should be u=rwx (0700)." msgstr "Los permisos deberían ser u=rwx (0700)." -#: postmaster/postmaster.c:1500 +#: postmaster/postmaster.c:1518 #, c-format msgid "" "%s: could not find the database system\n" @@ -14900,366 +14267,375 @@ msgstr "" "Se esperaba encontrar en el directorio PGDATA «%s»,\n" "pero no se pudo abrir el archivo «%s»: %s\n" -#: postmaster/postmaster.c:1677 +#: postmaster/postmaster.c:1695 #, c-format msgid "select() failed in postmaster: %m" msgstr "select() falló en postmaster: %m" -#: postmaster/postmaster.c:1827 +#: postmaster/postmaster.c:1850 #, c-format msgid "performing immediate shutdown because data directory lock file is invalid" -msgstr "" +msgstr "ejecutando un apagado inmediato porque el archivo de bloqueo del directorio de datos no es válido" -#: postmaster/postmaster.c:1905 postmaster/postmaster.c:1936 +#: postmaster/postmaster.c:1928 postmaster/postmaster.c:1959 #, c-format msgid "incomplete startup packet" msgstr "el paquete de inicio está incompleto" -#: postmaster/postmaster.c:1917 +#: postmaster/postmaster.c:1940 #, c-format msgid "invalid length of startup packet" msgstr "el de paquete de inicio tiene largo incorrecto" -#: postmaster/postmaster.c:1975 +#: postmaster/postmaster.c:1998 #, c-format msgid "failed to send SSL negotiation response: %m" msgstr "no se pudo enviar la respuesta de negociación SSL: %m" -#: postmaster/postmaster.c:2004 +#: postmaster/postmaster.c:2027 #, c-format msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u" msgstr "el protocolo %u.%u no está soportado: servidor soporta %u.0 hasta %u.%u" -#: postmaster/postmaster.c:2067 utils/misc/guc.c:5662 utils/misc/guc.c:5755 -#: utils/misc/guc.c:7053 utils/misc/guc.c:9789 utils/misc/guc.c:9823 +#: postmaster/postmaster.c:2090 utils/misc/guc.c:5660 utils/misc/guc.c:5753 +#: utils/misc/guc.c:7051 utils/misc/guc.c:9805 utils/misc/guc.c:9839 #, c-format msgid "invalid value for parameter \"%s\": \"%s\"" msgstr "valor no válido para el parámetro «%s»: «%s»" -#: postmaster/postmaster.c:2070 -#, fuzzy, c-format -#| msgid "Valid values are: false, 0, true, 1, database." +#: postmaster/postmaster.c:2093 +#, c-format msgid "Valid values are: \"false\", 0, \"true\", 1, \"database\"." -msgstr "Los valores válidos son: false, 0, true, 1, database." +msgstr "Los valores válidos son: «false», 0, «true», 1, «database»." -#: postmaster/postmaster.c:2090 +#: postmaster/postmaster.c:2113 #, c-format msgid "invalid startup packet layout: expected terminator as last byte" msgstr "el paquete de inicio no es válido: se esperaba un terminador en el último byte" -#: postmaster/postmaster.c:2118 +#: postmaster/postmaster.c:2141 #, c-format msgid "no PostgreSQL user name specified in startup packet" msgstr "no se especifica un nombre de usuario en el paquete de inicio" -#: postmaster/postmaster.c:2177 +#: postmaster/postmaster.c:2200 #, c-format msgid "the database system is starting up" msgstr "el sistema de base de datos está iniciándose" -#: postmaster/postmaster.c:2182 +#: postmaster/postmaster.c:2205 #, c-format msgid "the database system is shutting down" msgstr "el sistema de base de datos está apagándose" -#: postmaster/postmaster.c:2187 +#: postmaster/postmaster.c:2210 #, c-format msgid "the database system is in recovery mode" msgstr "el sistema de base de datos está en modo de recuperación" -#: postmaster/postmaster.c:2192 storage/ipc/procarray.c:297 +#: postmaster/postmaster.c:2215 storage/ipc/procarray.c:298 #: storage/ipc/sinvaladt.c:298 storage/lmgr/proc.c:340 #, c-format msgid "sorry, too many clients already" msgstr "lo siento, ya tenemos demasiados clientes" -#: postmaster/postmaster.c:2254 +#: postmaster/postmaster.c:2277 #, c-format msgid "wrong key in cancel request for process %d" msgstr "llave incorrecta en la petición de cancelación para el proceso %d" -#: postmaster/postmaster.c:2262 +#: postmaster/postmaster.c:2285 #, c-format msgid "PID %d in cancel request did not match any process" msgstr "el PID %d en la petición de cancelación no coincidió con ningún proceso" -#: postmaster/postmaster.c:2482 +#: postmaster/postmaster.c:2505 #, c-format msgid "received SIGHUP, reloading configuration files" msgstr "se recibió SIGHUP, releyendo el archivo de configuración" -#: postmaster/postmaster.c:2507 +#: postmaster/postmaster.c:2530 #, c-format msgid "pg_hba.conf not reloaded" msgstr "pg_hba.conf no ha sido recargado" -#: postmaster/postmaster.c:2511 +#: postmaster/postmaster.c:2534 #, c-format msgid "pg_ident.conf not reloaded" msgstr "pg_ident.conf no ha sido recargado" -#: postmaster/postmaster.c:2552 +#: postmaster/postmaster.c:2575 #, c-format msgid "received smart shutdown request" msgstr "se recibió petición de apagado inteligente" -#: postmaster/postmaster.c:2607 +#: postmaster/postmaster.c:2630 #, c-format msgid "received fast shutdown request" msgstr "se recibió petición de apagado rápido" -#: postmaster/postmaster.c:2637 +#: postmaster/postmaster.c:2660 #, c-format msgid "aborting any active transactions" msgstr "abortando transacciones activas" -#: postmaster/postmaster.c:2671 +#: postmaster/postmaster.c:2694 #, c-format msgid "received immediate shutdown request" msgstr "se recibió petición de apagado inmediato" -#: postmaster/postmaster.c:2735 +#: postmaster/postmaster.c:2758 #, c-format msgid "shutdown at recovery target" -msgstr "" +msgstr "apagándose al alcanzar el destino de recuperación" -#: postmaster/postmaster.c:2751 postmaster/postmaster.c:2774 +#: postmaster/postmaster.c:2774 postmaster/postmaster.c:2797 msgid "startup process" msgstr "proceso de inicio" -#: postmaster/postmaster.c:2754 +#: postmaster/postmaster.c:2777 #, c-format msgid "aborting startup due to startup process failure" msgstr "abortando el inicio debido a una falla en el procesamiento de inicio" -#: postmaster/postmaster.c:2815 +#: postmaster/postmaster.c:2838 #, c-format msgid "database system is ready to accept connections" msgstr "el sistema de bases de datos está listo para aceptar conexiones" -#: postmaster/postmaster.c:2834 +#: postmaster/postmaster.c:2857 msgid "background writer process" msgstr "proceso background writer" -#: postmaster/postmaster.c:2888 +#: postmaster/postmaster.c:2911 msgid "checkpointer process" msgstr "proceso checkpointer" -#: postmaster/postmaster.c:2904 +#: postmaster/postmaster.c:2927 msgid "WAL writer process" msgstr "proceso escritor de WAL" -#: postmaster/postmaster.c:2918 +#: postmaster/postmaster.c:2942 msgid "WAL receiver process" msgstr "proceso receptor de WAL" -#: postmaster/postmaster.c:2933 +#: postmaster/postmaster.c:2957 msgid "autovacuum launcher process" msgstr "proceso lanzador de autovacuum" -#: postmaster/postmaster.c:2948 +#: postmaster/postmaster.c:2972 msgid "archiver process" msgstr "proceso de archivado" -#: postmaster/postmaster.c:2964 +#: postmaster/postmaster.c:2988 msgid "statistics collector process" msgstr "recolector de estadísticas" -#: postmaster/postmaster.c:2978 +#: postmaster/postmaster.c:3002 msgid "system logger process" msgstr "proceso de log" -#: postmaster/postmaster.c:3040 +#: postmaster/postmaster.c:3064 msgid "worker process" msgstr "proceso «background worker»" -#: postmaster/postmaster.c:3123 postmaster/postmaster.c:3143 -#: postmaster/postmaster.c:3150 postmaster/postmaster.c:3168 +#: postmaster/postmaster.c:3147 postmaster/postmaster.c:3167 +#: postmaster/postmaster.c:3174 postmaster/postmaster.c:3192 msgid "server process" msgstr "proceso de servidor" -#: postmaster/postmaster.c:3222 +#: postmaster/postmaster.c:3246 #, c-format msgid "terminating any other active server processes" msgstr "terminando todos los otros procesos de servidor activos" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3478 +#: postmaster/postmaster.c:3502 #, c-format msgid "%s (PID %d) exited with exit code %d" msgstr "%s (PID %d) terminó con código de salida %d" -#: postmaster/postmaster.c:3480 postmaster/postmaster.c:3491 -#: postmaster/postmaster.c:3502 postmaster/postmaster.c:3511 -#: postmaster/postmaster.c:3521 +#: postmaster/postmaster.c:3504 postmaster/postmaster.c:3515 +#: postmaster/postmaster.c:3526 postmaster/postmaster.c:3535 +#: postmaster/postmaster.c:3545 #, c-format msgid "Failed process was running: %s" msgstr "El proceso que falló estaba ejecutando: %s" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3488 +#: postmaster/postmaster.c:3512 #, c-format msgid "%s (PID %d) was terminated by exception 0x%X" msgstr "%s (PID %d) fue terminado por una excepción 0x%X" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3498 +#: postmaster/postmaster.c:3522 #, c-format msgid "%s (PID %d) was terminated by signal %d: %s" msgstr "%s (PID %d) fue terminado por una señal %d: %s" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3509 +#: postmaster/postmaster.c:3533 #, c-format msgid "%s (PID %d) was terminated by signal %d" msgstr "%s (PID %d) fue terminado por una señal %d" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3519 +#: postmaster/postmaster.c:3543 #, c-format msgid "%s (PID %d) exited with unrecognized status %d" msgstr "%s (PID %d) terminó con código no reconocido %d" -#: postmaster/postmaster.c:3706 +#: postmaster/postmaster.c:3730 #, c-format msgid "abnormal database system shutdown" msgstr "apagado anormal del sistema de bases de datos" -#: postmaster/postmaster.c:3746 +#: postmaster/postmaster.c:3770 #, c-format msgid "all server processes terminated; reinitializing" msgstr "todos los procesos fueron terminados; reinicializando" -#: postmaster/postmaster.c:3958 +#: postmaster/postmaster.c:3982 #, c-format msgid "could not fork new process for connection: %m" msgstr "no se pudo lanzar el nuevo proceso para la conexión: %m" -#: postmaster/postmaster.c:4000 +#: postmaster/postmaster.c:4024 msgid "could not fork new process for connection: " msgstr "no se pudo lanzar el nuevo proceso para la conexión: " -#: postmaster/postmaster.c:4114 +#: postmaster/postmaster.c:4138 #, c-format msgid "connection received: host=%s port=%s" msgstr "conexión recibida: host=%s port=%s" -#: postmaster/postmaster.c:4119 +#: postmaster/postmaster.c:4143 #, c-format msgid "connection received: host=%s" msgstr "conexión recibida: host=%s" -#: postmaster/postmaster.c:4402 +#: postmaster/postmaster.c:4426 #, c-format msgid "could not execute server process \"%s\": %m" msgstr "no se pudo lanzar el proceso servidor «%s»: %m" -#: postmaster/postmaster.c:4967 +#: postmaster/postmaster.c:4579 +#, c-format +msgid "giving up after too many tries to reserve shared memory" +msgstr "abandonando luego de demasiados reintentos de reservar memoria compartida" + +#: postmaster/postmaster.c:4580 +#, c-format +msgid "This might be caused by ASLR or antivirus software." +msgstr "Esto podría ser causado por ASLR o software antivirus" + +#: postmaster/postmaster.c:4978 #, c-format msgid "database system is ready to accept read only connections" msgstr "el sistema de bases de datos está listo para aceptar conexiones de sólo lectura" -#: postmaster/postmaster.c:5258 +#: postmaster/postmaster.c:5267 #, c-format msgid "could not fork startup process: %m" msgstr "no se pudo lanzar el proceso de inicio: %m" -#: postmaster/postmaster.c:5262 +#: postmaster/postmaster.c:5271 #, c-format msgid "could not fork background writer process: %m" msgstr "no se pudo lanzar el background writer: %m" -#: postmaster/postmaster.c:5266 +#: postmaster/postmaster.c:5275 #, c-format msgid "could not fork checkpointer process: %m" msgstr "no se pudo lanzar el checkpointer: %m" -#: postmaster/postmaster.c:5270 +#: postmaster/postmaster.c:5279 #, c-format msgid "could not fork WAL writer process: %m" msgstr "no se pudo lanzar el proceso escritor de WAL: %m" -#: postmaster/postmaster.c:5274 +#: postmaster/postmaster.c:5283 #, c-format msgid "could not fork WAL receiver process: %m" msgstr "no se pudo lanzar el proceso receptor de WAL: %m" -#: postmaster/postmaster.c:5278 +#: postmaster/postmaster.c:5287 #, c-format msgid "could not fork process: %m" msgstr "no se pudo lanzar el proceso: %m" -#: postmaster/postmaster.c:5440 postmaster/postmaster.c:5463 +#: postmaster/postmaster.c:5467 postmaster/postmaster.c:5490 #, c-format msgid "database connection requirement not indicated during registration" msgstr "el requerimiento de conexión a base de datos no fue indicado durante el registro" -#: postmaster/postmaster.c:5447 postmaster/postmaster.c:5470 +#: postmaster/postmaster.c:5474 postmaster/postmaster.c:5497 #, c-format msgid "invalid processing mode in background worker" msgstr "modo de procesamiento no válido en «background worker»" -#: postmaster/postmaster.c:5522 +#: postmaster/postmaster.c:5569 #, c-format msgid "starting background worker process \"%s\"" msgstr "iniciando el proceso «background worker» «%s»" -#: postmaster/postmaster.c:5533 +#: postmaster/postmaster.c:5581 #, c-format msgid "could not fork worker process: %m" msgstr "no se pudo lanzar el proceso «background worker»: %m" -#: postmaster/postmaster.c:5921 +#: postmaster/postmaster.c:5998 #, c-format msgid "could not duplicate socket %d for use in backend: error code %d" msgstr "no se pudo duplicar el socket %d para su empleo en el backend: código de error %d" -#: postmaster/postmaster.c:5953 +#: postmaster/postmaster.c:6030 #, c-format msgid "could not create inherited socket: error code %d\n" msgstr "no se pudo crear el socket heradado: código de error %d\n" -#: postmaster/postmaster.c:5982 +#: postmaster/postmaster.c:6059 #, c-format msgid "could not open backend variables file \"%s\": %s\n" msgstr "no se pudo abrir el archivo de variables de servidor «%s»: %s\n" -#: postmaster/postmaster.c:5989 +#: postmaster/postmaster.c:6066 #, c-format msgid "could not read from backend variables file \"%s\": %s\n" msgstr "no se pudo leer el archivo de variables de servidor «%s»: %s\n" -#: postmaster/postmaster.c:5998 +#: postmaster/postmaster.c:6075 #, c-format msgid "could not remove file \"%s\": %s\n" msgstr "no se pudo eliminar el archivo «%s»: %s\n" -#: postmaster/postmaster.c:6015 +#: postmaster/postmaster.c:6092 #, c-format msgid "could not map view of backend variables: error code %lu\n" msgstr "no se pudo mapear la vista del archivo de variables: código de error %lu\n" -#: postmaster/postmaster.c:6024 +#: postmaster/postmaster.c:6101 #, c-format msgid "could not unmap view of backend variables: error code %lu\n" msgstr "no se pudo desmapear la vista del archivo de variables: código de error %lu\n" -#: postmaster/postmaster.c:6031 +#: postmaster/postmaster.c:6108 #, c-format msgid "could not close handle to backend parameter variables: error code %lu\n" msgstr "no se pudo cerrar el archivo de variables de servidor: código de error %lu\n" -#: postmaster/postmaster.c:6192 +#: postmaster/postmaster.c:6269 #, c-format msgid "could not read exit code for process\n" msgstr "no se pudo leer el código de salida del proceso\n" -#: postmaster/postmaster.c:6197 +#: postmaster/postmaster.c:6274 #, c-format msgid "could not post child completion status\n" msgstr "no se pudo publicar el estado de completitud del proceso hijo\n" @@ -15324,82 +14700,64 @@ msgstr "desactivando rotación automática (use SIGHUP para reactivarla)" msgid "could not determine which collation to use for regular expression" msgstr "no se pudo determinar qué ordenamiento usar para la expresión regular" -#: repl_gram.y:260 repl_gram.y:292 -#, c-format -msgid "invalid timeline %u" -msgstr "timeline %u no válido" - -#: repl_scanner.l:120 -msgid "invalid streaming start location" -msgstr "posición de inicio de flujo de WAL no válida" - -#: repl_scanner.l:171 scan.l:670 -msgid "unterminated quoted string" -msgstr "una cadena de caracteres entre comillas está inconclusa" - -#: repl_scanner.l:181 -#, c-format -msgid "syntax error: unexpected character \"%s\"" -msgstr "error de sintaxis: carácter «%s» inesperado" - -#: replication/basebackup.c:230 +#: replication/basebackup.c:232 #, c-format msgid "could not stat control file \"%s\": %m" msgstr "no se pudo hacer stat al archivo de control «%s»: %m" -#: replication/basebackup.c:339 +#: replication/basebackup.c:341 #, c-format msgid "could not find any WAL files" msgstr "no se pudo encontrar ningún archivo de WAL" -#: replication/basebackup.c:352 replication/basebackup.c:366 -#: replication/basebackup.c:375 +#: replication/basebackup.c:354 replication/basebackup.c:368 +#: replication/basebackup.c:377 #, c-format msgid "could not find WAL file \"%s\"" msgstr "no se pudo encontrar archivo de WAL «%s»" -#: replication/basebackup.c:414 replication/basebackup.c:440 +#: replication/basebackup.c:416 replication/basebackup.c:442 #, c-format msgid "unexpected WAL file size \"%s\"" msgstr "tamaño del archivo WAL «%s» inesperado" -#: replication/basebackup.c:426 replication/basebackup.c:1172 +#: replication/basebackup.c:428 replication/basebackup.c:1160 #, c-format msgid "base backup could not send data, aborting backup" msgstr "el respaldo base no pudo enviar datos, abortando el respaldo" -#: replication/basebackup.c:528 replication/basebackup.c:537 -#: replication/basebackup.c:546 replication/basebackup.c:555 -#: replication/basebackup.c:564 replication/basebackup.c:575 -#: replication/basebackup.c:592 +#: replication/basebackup.c:530 replication/basebackup.c:539 +#: replication/basebackup.c:548 replication/basebackup.c:557 +#: replication/basebackup.c:566 replication/basebackup.c:577 +#: replication/basebackup.c:594 #, c-format msgid "duplicate option \"%s\"" msgstr "nombre de opción «%s» duplicada" -#: replication/basebackup.c:581 utils/misc/guc.c:5672 +#: replication/basebackup.c:583 utils/misc/guc.c:5670 #, c-format msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)" msgstr "%d está fuera del rango aceptable para el parámetro «%s» (%d .. %d)" -#: replication/basebackup.c:855 replication/basebackup.c:957 +#: replication/basebackup.c:857 replication/basebackup.c:959 #, c-format msgid "could not stat file or directory \"%s\": %m" msgstr "no se pudo hacer stat al archivo o directorio «%s»: %m" -#: replication/basebackup.c:1124 +#: replication/basebackup.c:1112 #, c-format msgid "skipping special file \"%s\"" msgstr "ignorando el archivo especial «%s»" -#: replication/basebackup.c:1235 -#, fuzzy, c-format +#: replication/basebackup.c:1223 +#, c-format msgid "file name too long for tar format: \"%s\"" -msgstr "el miembro de archivador «%s» es demasiado grande para el formato tar" +msgstr "nombre de archivo demasiado largo para el formato tar: «%s»" -#: replication/basebackup.c:1240 +#: replication/basebackup.c:1228 #, c-format msgid "symbolic link target too long for tar format: file name \"%s\", target \"%s\"" -msgstr "" +msgstr "destino de enlace simbólico demasiado largo para el formato tar: nombre de archivo «%s», destino «%s»" #: replication/libpqwalreceiver/libpqwalreceiver.c:119 #, c-format @@ -15407,10 +14765,9 @@ msgid "could not connect to the primary server: %s" msgstr "no se pudo hacer la conexión al servidor primario: %s" #: replication/libpqwalreceiver/libpqwalreceiver.c:142 -#, fuzzy, c-format -#| msgid "could not compare Unicode strings: %m" +#, c-format msgid "could not parse connection string: %s" -msgstr "no se pudieron comparar las cadenas Unicode: %m" +msgstr "no se pudo interpretar la cadena de conexión: %s" #: replication/libpqwalreceiver/libpqwalreceiver.c:192 #, c-format @@ -15474,25 +14831,23 @@ msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields." msgstr "Se esperaba 1 tupla con 2 campos, se obtuvieron %d tuplas con %d campos." #: replication/libpqwalreceiver/libpqwalreceiver.c:386 -#, fuzzy, c-format -#| msgid "invalid mask length: %d" +#, c-format msgid "invalid socket: %s" -msgstr "largo de máscara no válido: %d" +msgstr "soclet no válido: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:426 -#: storage/ipc/latch.c:1277 +#: replication/libpqwalreceiver/libpqwalreceiver.c:426 storage/ipc/latch.c:1343 #, c-format msgid "select() failed: %m" msgstr "select() fallida: %m" -#: replication/libpqwalreceiver/libpqwalreceiver.c:549 -#: replication/libpqwalreceiver/libpqwalreceiver.c:576 +#: replication/libpqwalreceiver/libpqwalreceiver.c:555 #: replication/libpqwalreceiver/libpqwalreceiver.c:582 +#: replication/libpqwalreceiver/libpqwalreceiver.c:588 #, c-format msgid "could not receive data from WAL stream: %s" msgstr "no se pudo recibir datos desde el flujo de WAL: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:601 +#: replication/libpqwalreceiver/libpqwalreceiver.c:607 #, c-format msgid "could not send data to WAL stream: %s" msgstr "no se pudo enviar datos al flujo de WAL: %s" @@ -15513,38 +14868,38 @@ msgstr "decodificación lógica requiere una conexión a una base de datos" msgid "logical decoding cannot be used while in recovery" msgstr "la decodificación lógica no puede ejecutarse durante la recuperación" -#: replication/logical/logical.c:236 replication/logical/logical.c:348 +#: replication/logical/logical.c:239 replication/logical/logical.c:360 #, c-format msgid "cannot use physical replication slot for logical decoding" msgstr "no se puede usar un slot de replicación física para decodificación lógica" -#: replication/logical/logical.c:241 replication/logical/logical.c:353 +#: replication/logical/logical.c:244 replication/logical/logical.c:365 #, c-format msgid "replication slot \"%s\" was not created in this database" msgstr "el slot de replicación «%s» no fue creado en esta base de datos" -#: replication/logical/logical.c:248 +#: replication/logical/logical.c:251 #, c-format msgid "cannot create logical replication slot in transaction that has performed writes" msgstr "no se puede crear un slot de replicación lógica en una transacción que ha efectuado escrituras" -#: replication/logical/logical.c:390 +#: replication/logical/logical.c:402 #, c-format msgid "starting logical decoding for slot \"%s\"" msgstr "iniciando la decodificación lógica para el slot «%s»" -#: replication/logical/logical.c:392 +#: replication/logical/logical.c:404 #, c-format msgid "streaming transactions committing after %X/%X, reading WAL from %X/%X" msgstr "enviando flujo de transacciones comprometidas después de %X/%X, leyendo WAL de %X/%X" -#: replication/logical/logical.c:527 +#: replication/logical/logical.c:539 #, c-format msgid "slot \"%s\", output plugin \"%s\", in the %s callback, associated LSN %X/%X" msgstr "slot «%s», plugin de salida «%s», en el callback %s, LSN asociado %X/%X" # FIXME must quote callback name? Need a translator: comment? -#: replication/logical/logical.c:534 +#: replication/logical/logical.c:546 #, c-format msgid "slot \"%s\", output plugin \"%s\", in the %s callback" msgstr "slot «%s», plugin de salida «%s», en el callback %s" @@ -15555,16 +14910,14 @@ msgid "must be superuser or replication role to use replication slots" msgstr "debe ser superusuario o rol de replicación para usar slots de replicación" #: replication/logical/logicalfuncs.c:152 -#, fuzzy, c-format -#| msgid "field name must not be null" +#, c-format msgid "slot name must not be null" -msgstr "el nombre de campo no debe ser null" +msgstr "el nombre de slot no debe ser null" #: replication/logical/logicalfuncs.c:168 -#, fuzzy, c-format -#| msgid "typmod array must not contain nulls" +#, c-format msgid "options array must not be null" -msgstr "los arrays de typmod no deben contener valores nulos" +msgstr "el array de opciones no debe ser null" #: replication/logical/logicalfuncs.c:199 #, c-format @@ -15583,181 +14936,177 @@ msgid "array must have even number of elements" msgstr "el array debe tener un número par de elementos" #: replication/logical/logicalfuncs.c:264 -#, fuzzy, c-format -#| msgid "logical decoding output plugin \"%s\" produces binary output, but \"%s\" expects textual data" +#, c-format msgid "logical decoding output plugin \"%s\" produces binary output, but function \"%s\" expects textual data" msgstr "el plugin de salida de decodificación lógica «%s» produce salida binaria, pero «%s» espera datos textuales" #: replication/logical/origin.c:181 -#, fuzzy, c-format +#, c-format msgid "only superusers can query or manipulate replication origins" -msgstr "debe ser superusuario para alterar usuarios de replicación" +msgstr "debe ser superusuario para consultar o manipular orígenes de replicación" #: replication/logical/origin.c:186 -#, fuzzy, c-format +#, c-format msgid "cannot query or manipulate replication origin when max_replication_slots = 0" -msgstr "no se puede usar un slot de replicación lógica para replicación física" +msgstr "no se puede consultar o manipular orígenes de replicación cuando max_replication_slots = 0" #: replication/logical/origin.c:191 -#, fuzzy, c-format +#, c-format msgid "cannot manipulate replication origins during recovery" -msgstr "no se puede ejecutar %s durante la recuperación" +msgstr "no se puede manipular orígenes de replicación durante la recuperación" #: replication/logical/origin.c:316 -#, fuzzy, c-format -#| msgid "could not find parent extension for %s\n" +#, c-format msgid "could not find free replication origin OID" -msgstr "no se pudo encontrar la extensión padre para %s\n" +msgstr "no se pudo encontrar un OID de origen de replicación libre" #: replication/logical/origin.c:353 #, c-format msgid "could not drop replication origin with OID %d, in use by PID %d" -msgstr "" +msgstr "no se pudo eliminar el origen de replicación con OID %d, en uso por el PID %d" -#: replication/logical/origin.c:671 -#, fuzzy, c-format +#: replication/logical/origin.c:674 +#, c-format msgid "replication checkpoint has wrong magic %u instead of %u" -msgstr "el archivo de slot de replicación «%s» tiene número mágico erróneo %u en lugar de %u" +msgstr "el checkpoint de replicación tiene número mágico erróneo %u en lugar de %u" -#: replication/logical/origin.c:703 -#, fuzzy, c-format +#: replication/logical/origin.c:706 +#, c-format msgid "could not read file \"%s\": read %d of %zu" -msgstr "no se pudo leer el archivo «%s», leídos %d de %u: %m" +msgstr "no se pudo leer el archivo «%s»: leídos %d de %zu" -#: replication/logical/origin.c:712 -#, fuzzy, c-format +#: replication/logical/origin.c:715 +#, c-format msgid "could not find free replication state, increase max_replication_slots" -msgstr "los slots de replicación sólo pueden usarse si max_replication_slots > 0" +msgstr "no se pudo encontrar una estructura de replicación libre, incremente max_replication_slots" -#: replication/logical/origin.c:730 -#, fuzzy, c-format +#: replication/logical/origin.c:733 +#, c-format msgid "replication slot checkpoint has wrong checksum %u, expected %u" -msgstr "el archivo de slot de replicación «%s» tiene número mágico erróneo %u en lugar de %u" +msgstr "el checkpoint del slot de replicación tiene suma de verificación errónea %u, se esperaba %u" -#: replication/logical/origin.c:854 -#, fuzzy, c-format +#: replication/logical/origin.c:857 +#, c-format msgid "replication origin with OID %d is already active for PID %d" -msgstr "el slot de replicación «%s» ya está activo" +msgstr "el origen de replicación con OID %d ya está activo para el PID %d" -#: replication/logical/origin.c:865 replication/logical/origin.c:1045 -#, fuzzy, c-format +#: replication/logical/origin.c:868 replication/logical/origin.c:1048 +#, c-format msgid "could not find free replication state slot for replication origin with OID %u" -msgstr "los slots de replicación sólo pueden usarse si max_replication_slots > 0" +msgstr "no se pudo encontrar un slot libre para el estado del origen de replicación con OID %u" -#: replication/logical/origin.c:867 replication/logical/origin.c:1047 -#: replication/slot.c:1299 +#: replication/logical/origin.c:870 replication/logical/origin.c:1050 +#: replication/slot.c:1316 #, c-format msgid "Increase max_replication_slots and try again." msgstr "Aumente max_replication_slots y reintente." -#: replication/logical/origin.c:1004 +#: replication/logical/origin.c:1007 #, c-format msgid "cannot setup replication origin when one is already setup" -msgstr "" +msgstr "no se puede establecer un destino de replicación cuando ya hay uno definido" -#: replication/logical/origin.c:1033 -#, fuzzy, c-format +#: replication/logical/origin.c:1036 +#, c-format msgid "replication identifier %d is already active for PID %d" -msgstr "el slot de replicación «%s» ya está activo" +msgstr "el identificador de replicación %d ya está activo para el PID %d" -#: replication/logical/origin.c:1079 replication/logical/origin.c:1274 -#: replication/logical/origin.c:1294 +#: replication/logical/origin.c:1082 replication/logical/origin.c:1277 +#: replication/logical/origin.c:1297 #, c-format msgid "no replication origin is configured" -msgstr "" +msgstr "no hay un destino de replicación configurado" -#: replication/logical/reorderbuffer.c:2324 +#: replication/logical/reorderbuffer.c:2331 #, c-format msgid "could not write to data file for XID %u: %m" msgstr "no se pudo escribir al archivo de datos para el XID %u: %m" -#: replication/logical/reorderbuffer.c:2420 -#: replication/logical/reorderbuffer.c:2440 +#: replication/logical/reorderbuffer.c:2427 +#: replication/logical/reorderbuffer.c:2447 #, c-format msgid "could not read from reorderbuffer spill file: %m" msgstr "no se pudo leer desde el archivo de desborde de reorderbuffer: %m" -#: replication/logical/reorderbuffer.c:2424 -#: replication/logical/reorderbuffer.c:2444 +#: replication/logical/reorderbuffer.c:2431 +#: replication/logical/reorderbuffer.c:2451 #, c-format msgid "could not read from reorderbuffer spill file: read %d instead of %u bytes" msgstr "no se pudo leer desde el archivo de desborde de reorderbuffer: se leyeron sólo %d en ve de %u bytes" # FIXME almost duplicated again!? -#: replication/logical/reorderbuffer.c:3100 +#: replication/logical/reorderbuffer.c:3107 #, c-format msgid "could not read from file \"%s\": read %d instead of %d bytes" msgstr "no se pudo leer del archivo «%s»: se leyeron %d en lugar de %d bytes" -# FIXME: snapshot? instantánea? -#: replication/logical/snapbuild.c:598 +#: replication/logical/snapbuild.c:646 #, c-format msgid "exported logical decoding snapshot: \"%s\" with %u transaction ID" msgid_plural "exported logical decoding snapshot: \"%s\" with %u transaction IDs" msgstr[0] "se exportó un snapshot de decodificación lógica: «%s» con %u ID de transacción" msgstr[1] "se exportó un snapshot de decodificación lógica: «%s» con %u IDs de transacción" -#: replication/logical/snapbuild.c:917 replication/logical/snapbuild.c:1282 -#: replication/logical/snapbuild.c:1813 +#: replication/logical/snapbuild.c:1243 replication/logical/snapbuild.c:1333 +#: replication/logical/snapbuild.c:1808 #, c-format msgid "logical decoding found consistent point at %X/%X" msgstr "la decodificación lógica encontró un punto consistente en %X/%X" -#: replication/logical/snapbuild.c:919 -#, c-format -msgid "Transaction ID %u finished; no more running transactions." -msgstr "La transacción de ID %u terminó: no hay más transacciones en ejecución." - -#: replication/logical/snapbuild.c:1284 +#: replication/logical/snapbuild.c:1245 #, c-format msgid "There are no running transactions." msgstr "No hay transacciones en ejecución." -#: replication/logical/snapbuild.c:1346 +#: replication/logical/snapbuild.c:1286 #, c-format msgid "logical decoding found initial starting point at %X/%X" msgstr "decodificación lógica encontró punto de inicio en %X/%X" -#: replication/logical/snapbuild.c:1348 +#: replication/logical/snapbuild.c:1288 replication/logical/snapbuild.c:1311 #, c-format -msgid "%u transaction needs to finish." -msgid_plural "%u transactions need to finish." -msgstr[0] "%u transacción debe terminar." -msgstr[1] "%u transacciones deben terminar." +msgid "Waiting for transactions (approximately %d) older than %u to end." +msgstr "Esperando que las (aproximadamente %d) transacciones más antiguas que %u terminen." + +#: replication/logical/snapbuild.c:1309 +#, c-format +msgid "logical decoding found initial consistent point at %X/%X" +msgstr "la decodificación lógica encontró un punto consistente inicial en %X/%X" + +#: replication/logical/snapbuild.c:1335 +#, c-format +msgid "There are no old transactions anymore." +msgstr "Ya no hay transacciones antiguas en ejecución." # FIXME almost duplicated string #: replication/logical/snapbuild.c:1687 replication/logical/snapbuild.c:1713 -#: replication/logical/snapbuild.c:1727 replication/logical/snapbuild.c:1741 +#: replication/logical/snapbuild.c:1728 replication/logical/snapbuild.c:1742 #, c-format msgid "could not read file \"%s\", read %d of %d: %m" msgstr "no se pudo leer el archivo «%s», leídos %d de %d: %m" # FIXME "snapbuild"? #: replication/logical/snapbuild.c:1693 -#, fuzzy, c-format -#| msgid "snapbuild state file \"%s\" has wrong magic %u instead of %u" +#, c-format msgid "snapbuild state file \"%s\" has wrong magic number: %u instead of %u" -msgstr "el archivo de estado de snapbuild «%s» tiene número mágico erróneo %u en lugar de %u" +msgstr "el archivo de estado de snapbuild «%s» tiene número mágico erróneo: %u en lugar de %u" #: replication/logical/snapbuild.c:1698 -#, fuzzy, c-format -#| msgid "snapbuild state file \"%s\" has unsupported version %u instead of %u" +#, c-format msgid "snapbuild state file \"%s\" has unsupported version: %u instead of %u" -msgstr "el archivo de estado de snapbuild «%s» tiene versión no soportada %u en vez de %u" +msgstr "el archivo de estado de snapbuild «%s» tiene versión no soportada: %u en vez de %u" -# FIXME must quote file name -#: replication/logical/snapbuild.c:1754 -#, fuzzy, c-format -#| msgid "snapbuild state file %s: checksum mismatch, is %u, should be %u" +#: replication/logical/snapbuild.c:1755 +#, c-format msgid "checksum mismatch for snapbuild state file \"%s\": is %u, should be %u" -msgstr "archivo de estado de snapbuild %s: suma de verificación no coincidente %u, debería ser %u" +msgstr "suma de verificación no coincidente para el archivo de estado de snapbuild «%s»: es %u, debería ser %u" -#: replication/logical/snapbuild.c:1815 +#: replication/logical/snapbuild.c:1810 #, c-format msgid "Logical decoding will begin using saved snapshot." msgstr "La decodificación lógica comenzará usando el snapshot guardado." -#: replication/logical/snapbuild.c:1888 +#: replication/logical/snapbuild.c:1881 #, c-format msgid "could not parse file name \"%s\"" msgstr "no se pudo interpretar el nombre de archivo «%s»" @@ -15803,55 +15152,52 @@ msgid "replication slot \"%s\" does not exist" msgstr "no existe el slot de replicación «%s»" #: replication/slot.c:365 -#, fuzzy, c-format +#, c-format msgid "replication slot \"%s\" is active for PID %d" -msgstr "el slot de replicación «%s» ya está activo" +msgstr "el slot de replicación «%s» está activo para el PID %d" -#: replication/slot.c:511 replication/slot.c:923 replication/slot.c:1260 +#: replication/slot.c:527 replication/slot.c:940 replication/slot.c:1277 #, c-format msgid "could not remove directory \"%s\"" msgstr "no se pudo eliminar el directorio «%s»" -#: replication/slot.c:772 +#: replication/slot.c:789 #, c-format msgid "replication slots can only be used if max_replication_slots > 0" msgstr "los slots de replicación sólo pueden usarse si max_replication_slots > 0" # FIXME see logical.c:81 -#: replication/slot.c:777 -#, fuzzy, c-format -#| msgid "replication slots can only be used if wal_level >= archive" +#: replication/slot.c:794 +#, c-format msgid "replication slots can only be used if wal_level >= replica" -msgstr "los slots de replicación sólo pueden usarse si wal_level >= archive" +msgstr "los slots de replicación sólo pueden usarse si wal_level >= replica" -#: replication/slot.c:1192 replication/slot.c:1230 +#: replication/slot.c:1209 replication/slot.c:1247 #, c-format msgid "could not read file \"%s\", read %d of %u: %m" msgstr "no se pudo leer el archivo «%s», leídos %d de %u: %m" -#: replication/slot.c:1201 -#, fuzzy, c-format -#| msgid "replication slot file \"%s\" has wrong magic %u instead of %u" +#: replication/slot.c:1218 +#, c-format msgid "replication slot file \"%s\" has wrong magic number: %u instead of %u" -msgstr "el archivo de slot de replicación «%s» tiene número mágico erróneo %u en lugar de %u" +msgstr "el archivo de slot de replicación «%s» tiene número mágico erróneo: %u en lugar de %u" -#: replication/slot.c:1208 +#: replication/slot.c:1225 #, c-format msgid "replication slot file \"%s\" has unsupported version %u" msgstr "el archivo de slot de replicación «%s» tiene versión no soportada %u" -#: replication/slot.c:1215 +#: replication/slot.c:1232 #, c-format msgid "replication slot file \"%s\" has corrupted length %u" msgstr "el archivo de slot de replicación «%s» tiene largo corrupto %u" -#: replication/slot.c:1245 -#, fuzzy, c-format -#| msgid "replication slot file %s: checksum mismatch, is %u, should be %u" +#: replication/slot.c:1262 +#, c-format msgid "checksum mismatch for replication slot file \"%s\": is %u, should be %u" -msgstr "archivo de slot de replicación %s: suma de control no coincidente, es %u, debería ser %u" +msgstr "suma de verificación no coincidenete en archivo de slot de replicación «%s»: es %u, debería ser %u" -#: replication/slot.c:1298 +#: replication/slot.c:1315 #, c-format msgid "too many replication slots active before shutdown" msgstr "demasiados slots de replicacion activos antes del apagado" @@ -15871,21 +15217,25 @@ msgstr "La transacción ya fue comprometida localmente, pero pudo no haber sido msgid "canceling wait for synchronous replication due to user request" msgstr "cancelando espera para la replicación sincrónica debido a una petición del usuario" -#: replication/syncrep.c:368 +#: replication/syncrep.c:371 #, c-format msgid "standby \"%s\" now has synchronous standby priority %u" msgstr "el standby «%s» ahora tiene prioridad sincrónica %u" -#: replication/syncrep.c:428 -#, fuzzy, c-format -#| msgid "standby \"%s\" is now the synchronous standby with priority %u" +#: replication/syncrep.c:431 +#, c-format msgid "standby \"%s\" is now a synchronous standby with priority %u" -msgstr "el standby «%s» es ahora el standby sincrónico con prioridad %u" +msgstr "el standby «%s» es ahora un standby sincrónico con prioridad %u" -#: replication/syncrep.c:921 +#: replication/syncrep.c:931 #, c-format msgid "synchronous_standby_names parser failed" -msgstr "" +msgstr "falló la interpretación de «synchronous_standby_names»" + +#: replication/syncrep.c:937 +#, c-format +msgid "number of synchronous standbys (%d) must be greater than zero" +msgstr "el argumento de standby sincrónicos (%d) debe ser mayor que cero" #: replication/walreceiver.c:173 #, c-format @@ -15947,72 +15297,77 @@ msgstr "trayendo el archivo de historia del timeline para el timeline %u desde e msgid "could not write to log segment %s at offset %u, length %lu: %m" msgstr "no se pudo escribir al segmento de log %s en la posición %u, largo %lu: %m" -#: replication/walsender.c:485 +#: replication/walsender.c:490 #, c-format msgid "could not seek to beginning of file \"%s\": %m" msgstr "no se pudo posicionar (seek) al comienzo del archivo «%s»: %m" -#: replication/walsender.c:536 +#: replication/walsender.c:541 #, c-format msgid "cannot use a logical replication slot for physical replication" msgstr "no se puede usar un slot de replicación lógica para replicación física" -#: replication/walsender.c:599 +#: replication/walsender.c:604 #, c-format msgid "requested starting point %X/%X on timeline %u is not in this server's history" msgstr "el punto de inicio solicitado %X/%X del timeline %u no está en la historia de este servidor" -#: replication/walsender.c:603 +#: replication/walsender.c:608 #, c-format msgid "This server's history forked from timeline %u at %X/%X." msgstr "La historia de este servidor bifurcó desde el timeline %u en %X/%X." -#: replication/walsender.c:648 +#: replication/walsender.c:653 #, c-format msgid "requested starting point %X/%X is ahead of the WAL flush position of this server %X/%X" msgstr "el punto de inicio solicitado %X/%X está más adelante que la posición de sincronización (flush) de WAL de este servidor %X/%X" -#: replication/walsender.c:974 +#: replication/walsender.c:977 #, c-format msgid "terminating walsender process after promotion" msgstr "terminando el proceso walsender luego de la promoción" -#: replication/walsender.c:1300 -#, fuzzy, c-format +#: replication/walsender.c:1333 +#, c-format +msgid "cannot execute new commands while WAL sender is in stopping mode" +msgstr "no se pueden ejecutar nuevas órdenes mientras el «WAL sender» está en modo de detención" + +#: replication/walsender.c:1341 +#, c-format msgid "received replication command: %s" -msgstr "La orden fallida era: «%s»" +msgstr "se recibió orden de replicación: %s" -#: replication/walsender.c:1391 replication/walsender.c:1407 +#: replication/walsender.c:1440 replication/walsender.c:1456 #, c-format msgid "unexpected EOF on standby connection" msgstr "se encontró fin de archivo inesperado en la conexión standby" -#: replication/walsender.c:1421 +#: replication/walsender.c:1470 #, c-format msgid "unexpected standby message type \"%c\", after receiving CopyDone" msgstr "mensaje de standby de tipo «%c» inesperado, después de recibir CopyDone" -#: replication/walsender.c:1459 +#: replication/walsender.c:1508 #, c-format msgid "invalid standby message type \"%c\"" msgstr "el tipo «%c» de mensaje del standby no es válido" -#: replication/walsender.c:1500 +#: replication/walsender.c:1549 #, c-format msgid "unexpected message type \"%c\"" msgstr "mensaje de tipo «%c» inesperado" -#: replication/walsender.c:1784 +#: replication/walsender.c:1833 #, c-format msgid "terminating walsender process due to replication timeout" msgstr "terminando el proceso walsender debido a que se agotó el tiempo de espera de replicación" -#: replication/walsender.c:1877 +#: replication/walsender.c:1919 #, c-format msgid "standby \"%s\" has now caught up with primary" msgstr "el standby «%s» ahora está actualizado respecto del primario" -#: replication/walsender.c:1980 +#: replication/walsender.c:2022 #, c-format msgid "number of requested standby connections exceeds max_wal_senders (currently %d)" msgstr "la cantidad de conexiones standby pedidas excede max_wal_senders (actualmente %d)" @@ -16020,7 +15375,7 @@ msgstr "la cantidad de conexiones standby pedidas excede max_wal_senders (actual #: rewrite/rewriteDefine.c:112 rewrite/rewriteDefine.c:973 #, c-format msgid "rule \"%s\" for relation \"%s\" already exists" -msgstr "ya existe una regla llamada «%s» para la relación «%s»" +msgstr "la regla «%s» para la relación «%s» ya existe" #: rewrite/rewriteDefine.c:297 #, c-format @@ -16108,14 +15463,14 @@ msgid "could not convert table \"%s\" to a view because it has child tables" msgstr "no se pudo convertir la tabla «%s» en vista porque tiene tablas hijas" #: rewrite/rewriteDefine.c:459 -#, fuzzy, c-format +#, c-format msgid "could not convert table \"%s\" to a view because it has row security enabled" -msgstr "no se pudo convertir la tabla «%s» en vista porque tiene tablas hijas" +msgstr "no se pudo convertir la tabla «%s» en vista porque tiene seguridad de registros activada" #: rewrite/rewriteDefine.c:465 -#, fuzzy, c-format +#, c-format msgid "could not convert table \"%s\" to a view because it has row security policies" -msgstr "no se pudo convertir la tabla «%s» en vista porque tiene tablas hijas" +msgstr "no se pudo convertir la tabla «%s» en vista porque tiene políticas de seguridad de registros" #: rewrite/rewriteDefine.c:492 #, c-format @@ -16148,10 +15503,9 @@ msgid "cannot convert relation containing dropped columns to view" msgstr "no se puede convertir en vista una relación que contiene columnas eliminadas" #: rewrite/rewriteDefine.c:696 -#, fuzzy, c-format -#| msgid "cannot convert relation containing dropped columns to view" +#, c-format msgid "cannot create a RETURNING list for a relation containing dropped columns" -msgstr "no se puede convertir en vista una relación que contiene columnas eliminadas" +msgstr "no se puede crear una lista RETURNING para una relación que contiene columnas eliminadas" #: rewrite/rewriteDefine.c:702 #, c-format @@ -16224,154 +15578,153 @@ msgstr "el nombre de consulta WITH «%s» aparece tanto en una acción de regla msgid "cannot have RETURNING lists in multiple rules" msgstr "no se puede usar RETURNING en múltiples reglas" -#: rewrite/rewriteHandler.c:928 rewrite/rewriteHandler.c:946 +#: rewrite/rewriteHandler.c:949 rewrite/rewriteHandler.c:967 #, c-format msgid "multiple assignments to same column \"%s\"" msgstr "hay múltiples asignaciones a la misma columna «%s»" -#: rewrite/rewriteHandler.c:1721 rewrite/rewriteHandler.c:3331 +#: rewrite/rewriteHandler.c:1752 rewrite/rewriteHandler.c:3362 #, c-format msgid "infinite recursion detected in rules for relation \"%s\"" msgstr "se detectó recursión infinita en las reglas de la relación «%s»" -#: rewrite/rewriteHandler.c:1806 -#, fuzzy, c-format +#: rewrite/rewriteHandler.c:1837 +#, c-format msgid "infinite recursion detected in policy for relation \"%s\"" -msgstr "se detectó recursión infinita en las reglas de la relación «%s»" +msgstr "se detectó recursión infinita en la política para la relación «%s»" -#: rewrite/rewriteHandler.c:2123 +#: rewrite/rewriteHandler.c:2154 msgid "Junk view columns are not updatable." msgstr "Las columnas «basura» de vistas no son actualizables." -#: rewrite/rewriteHandler.c:2128 +#: rewrite/rewriteHandler.c:2159 msgid "View columns that are not columns of their base relation are not updatable." msgstr "Las columnas de vistas que no son columnas de su relación base no son actualizables." -#: rewrite/rewriteHandler.c:2131 +#: rewrite/rewriteHandler.c:2162 msgid "View columns that refer to system columns are not updatable." msgstr "Las columnas de vistas que se refieren a columnas de sistema no son actualizables." -#: rewrite/rewriteHandler.c:2134 +#: rewrite/rewriteHandler.c:2165 msgid "View columns that return whole-row references are not updatable." -msgstr "Las columnas de vistas que retornan referencias a la fila completa no son actualizables." +msgstr "Las columnas de vistas que retornan referencias a la fila completa (whole-row) no son actualizables." # XXX a %s here would be nice ... -#: rewrite/rewriteHandler.c:2192 +#: rewrite/rewriteHandler.c:2223 msgid "Views containing DISTINCT are not automatically updatable." msgstr "Las vistas que contienen DISTINCT no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2195 +#: rewrite/rewriteHandler.c:2226 msgid "Views containing GROUP BY are not automatically updatable." msgstr "Las vistas que contienen GROUP BY no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2198 +#: rewrite/rewriteHandler.c:2229 msgid "Views containing HAVING are not automatically updatable." msgstr "Las vistas que contienen HAVING no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2201 +#: rewrite/rewriteHandler.c:2232 msgid "Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable." msgstr "Las vistas que contienen UNION, INTERSECT o EXCEPT no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2204 +#: rewrite/rewriteHandler.c:2235 msgid "Views containing WITH are not automatically updatable." msgstr "Las vistas que contienen WITH no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2207 +#: rewrite/rewriteHandler.c:2238 msgid "Views containing LIMIT or OFFSET are not automatically updatable." msgstr "Las vistas que contienen LIMIT u OFFSET no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2219 +#: rewrite/rewriteHandler.c:2250 msgid "Views that return aggregate functions are not automatically updatable." msgstr "Las vistas que retornan funciones de agregación no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2222 +#: rewrite/rewriteHandler.c:2253 msgid "Views that return window functions are not automatically updatable." msgstr "Las vistas que retornan funciones ventana no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2225 +#: rewrite/rewriteHandler.c:2256 msgid "Views that return set-returning functions are not automatically updatable." msgstr "Las vistas que retornan funciones-que-retornan-conjuntos no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2232 rewrite/rewriteHandler.c:2236 -#: rewrite/rewriteHandler.c:2243 +#: rewrite/rewriteHandler.c:2263 rewrite/rewriteHandler.c:2267 +#: rewrite/rewriteHandler.c:2274 msgid "Views that do not select from a single table or view are not automatically updatable." msgstr "Las vistas que no extraen desde una única tabla o vista no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2246 -#, fuzzy +#: rewrite/rewriteHandler.c:2277 msgid "Views containing TABLESAMPLE are not automatically updatable." -msgstr "Las vistas que contienen WITH no son automáticamente actualizables." +msgstr "Las vistas que contienen TABLESAMPLE no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2270 +#: rewrite/rewriteHandler.c:2301 msgid "Views that have no updatable columns are not automatically updatable." msgstr "Las vistas que no tienen columnas actualizables no son automáticamente actualizables." -#: rewrite/rewriteHandler.c:2724 +#: rewrite/rewriteHandler.c:2755 #, c-format msgid "cannot insert into column \"%s\" of view \"%s\"" msgstr "no se puede insertar en la columna «%s» de la vista «%s»" -#: rewrite/rewriteHandler.c:2732 +#: rewrite/rewriteHandler.c:2763 #, c-format msgid "cannot update column \"%s\" of view \"%s\"" msgstr "no se puede actualizar la columna «%s» vista «%s»" -#: rewrite/rewriteHandler.c:3130 +#: rewrite/rewriteHandler.c:3161 #, c-format msgid "DO INSTEAD NOTHING rules are not supported for data-modifying statements in WITH" msgstr "las reglas DO INSTEAD NOTHING no están soportadas para sentencias que modifiquen datos en WITH" -#: rewrite/rewriteHandler.c:3144 +#: rewrite/rewriteHandler.c:3175 #, c-format msgid "conditional DO INSTEAD rules are not supported for data-modifying statements in WITH" msgstr "las reglas DO INSTEAD condicionales no están soportadas para sentencias que modifiquen datos en WITH" -#: rewrite/rewriteHandler.c:3148 +#: rewrite/rewriteHandler.c:3179 #, c-format msgid "DO ALSO rules are not supported for data-modifying statements in WITH" msgstr "las reglas DO ALSO no están soportadas para sentencias que modifiquen datos en WITH" -#: rewrite/rewriteHandler.c:3153 +#: rewrite/rewriteHandler.c:3184 #, c-format msgid "multi-statement DO INSTEAD rules are not supported for data-modifying statements in WITH" msgstr "las reglas DO INSTEAD de múltiples sentencias no están soportadas para sentencias que modifiquen datos en WITH" -#: rewrite/rewriteHandler.c:3368 +#: rewrite/rewriteHandler.c:3399 #, c-format msgid "cannot perform INSERT RETURNING on relation \"%s\"" msgstr "no se puede hacer INSERT RETURNING a la relación «%s»" -#: rewrite/rewriteHandler.c:3370 +#: rewrite/rewriteHandler.c:3401 #, c-format msgid "You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." msgstr "Necesita un regla incondicional ON INSERT DO INSTEAD con una cláusula RETURNING." -#: rewrite/rewriteHandler.c:3375 +#: rewrite/rewriteHandler.c:3406 #, c-format msgid "cannot perform UPDATE RETURNING on relation \"%s\"" msgstr "no se puede hacer UPDATE RETURNING a la relación «%s»" -#: rewrite/rewriteHandler.c:3377 +#: rewrite/rewriteHandler.c:3408 #, c-format msgid "You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause." msgstr "Necesita un regla incondicional ON UPDATE DO INSTEAD con una cláusula RETURNING." -#: rewrite/rewriteHandler.c:3382 +#: rewrite/rewriteHandler.c:3413 #, c-format msgid "cannot perform DELETE RETURNING on relation \"%s\"" msgstr "no se puede hacer DELETE RETURNING a la relación «%s»" -#: rewrite/rewriteHandler.c:3384 +#: rewrite/rewriteHandler.c:3415 #, c-format msgid "You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause." msgstr "Necesita un regla incondicional ON DELETE DO INSTEAD con una clásula RETURNING." -#: rewrite/rewriteHandler.c:3402 +#: rewrite/rewriteHandler.c:3433 #, c-format msgid "INSERT with ON CONFLICT clause cannot be used with table that has INSERT or UPDATE rules" -msgstr "" +msgstr "INSERT con una cláusula ON CONFLICT no puede usarse con una tabla que tiene reglas INSERT o UPDATE" -#: rewrite/rewriteHandler.c:3459 +#: rewrite/rewriteHandler.c:3490 #, c-format msgid "WITH cannot be used in a query that is rewritten by rules into multiple queries" msgstr "WITH no puede ser usado en una consulta que está siendo convertida en múltiples consultas a través de reglas" @@ -16389,7 +15742,7 @@ msgstr "WHERE CURRENT OF no está implementado en una vista" #: rewrite/rewriteManip.c:1434 #, c-format msgid "NEW variables in ON UPDATE rules cannot reference columns that are part of a multiple assignment in the subject UPDATE command" -msgstr "" +msgstr "las variables NEW en reglas ON UPDATE no pueden referenciar columnas que son parte de una asignación múltiple en la orden UPDATE" #: rewrite/rewriteSupport.c:154 #, c-format @@ -16406,123 +15759,6 @@ msgstr "hay múltiples reglas llamadas «%s»" msgid "Specify a relation name as well as a rule name." msgstr "Especifique un nombre de relación además del nombre de regla." -#: scan.l:432 -msgid "unterminated /* comment" -msgstr "un comentario /* está inconcluso" - -#: scan.l:461 -msgid "unterminated bit string literal" -msgstr "una cadena de bits está inconclusa" - -#: scan.l:482 -msgid "unterminated hexadecimal string literal" -msgstr "una cadena hexadecimal está inconclusa" - -#: scan.l:532 -#, c-format -msgid "unsafe use of string constant with Unicode escapes" -msgstr "uso inseguro de literal de cadena con escapes Unicode" - -#: scan.l:533 -#, c-format -msgid "String constants with Unicode escapes cannot be used when standard_conforming_strings is off." -msgstr "Los literales de cadena con escapes Unicode no pueden usarse cuando standard_conforming_strings está desactivado." - -#: scan.l:579 scan.l:778 -msgid "invalid Unicode escape character" -msgstr "carácter de escape Unicode no válido" - -#: scan.l:605 scan.l:613 scan.l:621 scan.l:622 scan.l:623 scan.l:1337 -#: scan.l:1364 scan.l:1368 scan.l:1406 scan.l:1410 scan.l:1432 -msgid "invalid Unicode surrogate pair" -msgstr "par sustituto (surrogate) Unicode no válido" - -#: scan.l:627 -#, c-format -msgid "invalid Unicode escape" -msgstr "valor de escape Unicode no válido" - -#: scan.l:628 -#, c-format -msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX." -msgstr "Los escapes Unicode deben ser \\uXXXX o \\UXXXXXXXX." - -#: scan.l:639 -#, c-format -msgid "unsafe use of \\' in a string literal" -msgstr "uso inseguro de \\' en un literal de cadena" - -#: scan.l:640 -#, c-format -msgid "Use '' to write quotes in strings. \\' is insecure in client-only encodings." -msgstr "Use '' para escribir comillas en cadenas. \\' es inseguro en codificaciones de sólo cliente." - -#: scan.l:715 -msgid "unterminated dollar-quoted string" -msgstr "una cadena separada por $ está inconclusa" - -#: scan.l:732 scan.l:758 scan.l:773 -msgid "zero-length delimited identifier" -msgstr "un identificador delimitado tiene largo cero" - -#: scan.l:793 syncrep_scanner.l:84 -msgid "unterminated quoted identifier" -msgstr "un identificador entre comillas está inconcluso" - -#: scan.l:924 -msgid "operator too long" -msgstr "el operador es demasiado largo" - -#. translator: %s is typically the translation of "syntax error" -#: scan.l:1077 -#, c-format -msgid "%s at end of input" -msgstr "%s al final de la entrada" - -#. translator: first %s is typically the translation of "syntax error" -#: scan.l:1085 -#, c-format -msgid "%s at or near \"%s\"" -msgstr "%s en o cerca de «%s»" - -#: scan.l:1251 scan.l:1283 -msgid "Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8" -msgstr "Los valores de escape Unicode no puede ser usados para valores de «code point» sobre 007F cuando la codificación de servidor no es UTF8" - -#: scan.l:1279 scan.l:1424 -msgid "invalid Unicode escape value" -msgstr "valor de escape Unicode no válido" - -#: scan.l:1481 -#, c-format -msgid "nonstandard use of \\' in a string literal" -msgstr "uso no estandar de \\' en un literal de cadena" - -#: scan.l:1482 -#, c-format -msgid "Use '' to write quotes in strings, or use the escape string syntax (E'...')." -msgstr "Use '' para escribir comillas en cadenas, o use la sintaxis de escape de cadenas (E'...')." - -#: scan.l:1491 -#, c-format -msgid "nonstandard use of \\\\ in a string literal" -msgstr "uso no estandar de \\\\ en un literal de cadena" - -#: scan.l:1492 -#, c-format -msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'." -msgstr "Use '' para escribir comillas en cadenas, o use la sintaxis de escape de cadenas (E'\\\\')." - -#: scan.l:1506 -#, c-format -msgid "nonstandard use of escape in a string literal" -msgstr "uso no estandar de escape en un literal de cadena" - -#: scan.l:1507 -#, c-format -msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'." -msgstr "Use la sintaxis de escape para cadenas, por ej. E'\\r\\n'." - #: snowball/dict_snowball.c:177 #, c-format msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\"" @@ -16569,26 +15805,25 @@ msgstr "Esto parece ocurrir sólo con kernels defectuosos; considere actualizar msgid "invalid page in block %u of relation %s; zeroing out page" msgstr "la página no es válida en el bloque %u de la relación «%s»; reinicializando la página" -#: storage/buffer/bufmgr.c:3952 +#: storage/buffer/bufmgr.c:3969 #, c-format msgid "could not write block %u of %s" msgstr "no se pudo escribir el bloque %u de %s" -#: storage/buffer/bufmgr.c:3954 +#: storage/buffer/bufmgr.c:3971 #, c-format msgid "Multiple failures --- write error might be permanent." msgstr "Múltiples fallas --- el error de escritura puede ser permanente." -#: storage/buffer/bufmgr.c:3975 storage/buffer/bufmgr.c:3994 +#: storage/buffer/bufmgr.c:3992 storage/buffer/bufmgr.c:4011 #, c-format msgid "writing block %u of relation %s" msgstr "escribiendo el bloque %u de la relación %s" -#: storage/buffer/bufmgr.c:4295 -#, fuzzy, c-format -#| msgid "snapshot_id" +#: storage/buffer/bufmgr.c:4312 +#, c-format msgid "snapshot too old" -msgstr "id_de_snapshot" +msgstr "snapshot demasiado antiguo" #: storage/buffer/localbuf.c:199 #, c-format @@ -16596,80 +15831,77 @@ msgid "no empty local buffer available" msgstr "no hay ningún búfer local disponible" #: storage/buffer/localbuf.c:427 -#, fuzzy, c-format +#, c-format msgid "cannot access temporary tables during a parallel operation" -msgstr "no se pueden crear tablas temporales durante la recuperación" +msgstr "no se pueden acceder tablas temporales durante una operación paralela" -#: storage/file/fd.c:436 storage/file/fd.c:508 storage/file/fd.c:544 -#, fuzzy, c-format -#| msgid "could not redirect stdout: %m" +#: storage/file/fd.c:443 storage/file/fd.c:515 storage/file/fd.c:551 +#, c-format msgid "could not flush dirty data: %m" -msgstr "no se pudo redirigir stdout: %m" +msgstr "no se pudo sincronizar (flush) datos «sucios»: %m" -#: storage/file/fd.c:466 -#, fuzzy, c-format -#| msgid "could not determine input data type" +#: storage/file/fd.c:473 +#, c-format msgid "could not determine dirty data size: %m" -msgstr "no se pudo determinar el tipo de dato de entrada" +msgstr "no se pudo determinar el tamaño de los datos «sucios»: %m" -#: storage/file/fd.c:518 -#, fuzzy, c-format -#| msgid "could not uncompress data: %s\n" +#: storage/file/fd.c:525 +#, c-format msgid "could not munmap() while flushing data: %m" -msgstr "no se pudo descomprimir datos: %s\n" +msgstr "no se pudo ejecutar munmap() mientras se sincronizaban (flush) datos: %m" -#: storage/file/fd.c:682 +#: storage/file/fd.c:689 #, c-format msgid "could not link file \"%s\" to \"%s\": %m" msgstr "no se pudo enlazar (link) el archivo «%s» a «%s»: %m" -#: storage/file/fd.c:776 +#: storage/file/fd.c:783 #, c-format msgid "getrlimit failed: %m" msgstr "getrlimit falló: %m" -#: storage/file/fd.c:866 +#: storage/file/fd.c:873 #, c-format msgid "insufficient file descriptors available to start server process" msgstr "los descriptores de archivo disponibles son insuficientes para iniciar un proceso servidor" -#: storage/file/fd.c:867 +#: storage/file/fd.c:874 #, c-format msgid "System allows %d, we need at least %d." msgstr "El sistema permite %d, se requieren al menos %d." -#: storage/file/fd.c:908 storage/file/fd.c:2001 storage/file/fd.c:2094 -#: storage/file/fd.c:2242 +#: storage/file/fd.c:915 storage/file/fd.c:2078 storage/file/fd.c:2171 +#: storage/file/fd.c:2319 #, c-format msgid "out of file descriptors: %m; release and retry" msgstr "se agotaron los descriptores de archivo: %m; libere e intente nuevamente" -#: storage/file/fd.c:1482 +#: storage/file/fd.c:1520 #, c-format msgid "temporary file: path \"%s\", size %lu" msgstr "archivo temporal: ruta «%s», tamaño %lu" -#: storage/file/fd.c:1656 +#: storage/file/fd.c:1717 #, c-format msgid "temporary file size exceeds temp_file_limit (%dkB)" msgstr "el tamaño del archivo temporal excede temp_file_limit permitido (%dkB)" -#: storage/file/fd.c:1977 storage/file/fd.c:2027 +#: storage/file/fd.c:2054 storage/file/fd.c:2104 #, c-format msgid "exceeded maxAllocatedDescs (%d) while trying to open file \"%s\"" msgstr "se excedió maxAllocatedDescs (%d) mientras se trataba de abrir el archivo «%s»" -#: storage/file/fd.c:2067 +#: storage/file/fd.c:2144 #, c-format msgid "exceeded maxAllocatedDescs (%d) while trying to execute command \"%s\"" msgstr "se excedió maxAllocatedDescs (%d) mientras se trataba de ejecutar la orden «%s»" -#: storage/file/fd.c:2218 +#: storage/file/fd.c:2295 #, c-format msgid "exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\"" msgstr "se excedió maxAllocatedDescs (%d) mientras se trataba de abrir el directorio «%s»" -#: storage/file/fd.c:2304 +#: storage/file/fd.c:2381 #, c-format msgid "could not read directory \"%s\": %m" msgstr "no se pudo leer el directorio «%s»: %m" @@ -16751,19 +15983,17 @@ msgstr "no se pudo crear el segmento de memoria compartida «%s»: %m" msgid "could not duplicate handle for \"%s\": %m" msgstr "no se pudo duplicar el «handle» para «%s»: %m" -#: storage/ipc/latch.c:775 -#, fuzzy, c-format -#| msgid "poll() failed: %m" +#: storage/ipc/latch.c:841 +#, c-format msgid "epoll_ctl() failed: %m" -msgstr "poll() fallida: %m" +msgstr "epoll_ctl() fallida: %m" -#: storage/ipc/latch.c:999 -#, fuzzy, c-format -#| msgid "poll() failed: %m" +#: storage/ipc/latch.c:1065 +#, c-format msgid "epoll_wait() failed: %m" -msgstr "poll() fallida: %m" +msgstr "epoll_wait() fallida: %m" -#: storage/ipc/latch.c:1119 +#: storage/ipc/latch.c:1185 #, c-format msgid "poll() failed: %m" msgstr "poll() fallida: %m" @@ -16771,9 +16001,9 @@ msgstr "poll() fallida: %m" #: storage/ipc/shm_toc.c:108 storage/ipc/shm_toc.c:189 storage/ipc/shmem.c:212 #: storage/lmgr/lock.c:883 storage/lmgr/lock.c:917 storage/lmgr/lock.c:2682 #: storage/lmgr/lock.c:4007 storage/lmgr/lock.c:4072 storage/lmgr/lock.c:4364 -#: storage/lmgr/predicate.c:2329 storage/lmgr/predicate.c:2344 -#: storage/lmgr/predicate.c:3736 storage/lmgr/predicate.c:4879 -#: storage/lmgr/proc.c:203 utils/hash/dynahash.c:1043 +#: storage/lmgr/predicate.c:2344 storage/lmgr/predicate.c:2359 +#: storage/lmgr/predicate.c:3751 storage/lmgr/predicate.c:4894 +#: storage/lmgr/proc.c:203 utils/hash/dynahash.c:1042 #, c-format msgid "out of shared memory" msgstr "memoria compartida agotada" @@ -16798,12 +16028,12 @@ msgstr "el tamaño de la entrada ShmemIndex es incorrecto para la estructura «% msgid "requested shared memory size overflows size_t" msgstr "la petición de tamaño de memoria compartida desborda size_t" -#: storage/ipc/standby.c:528 tcop/postgres.c:2976 +#: storage/ipc/standby.c:530 tcop/postgres.c:2974 #, c-format msgid "canceling statement due to conflict with recovery" msgstr "cancelando la sentencia debido a un conflicto con la recuperación" -#: storage/ipc/standby.c:529 tcop/postgres.c:2263 +#: storage/ipc/standby.c:531 tcop/postgres.c:2255 #, c-format msgid "User transaction caused buffer deadlock with recovery." msgstr "La transacción del usuario causó un «deadlock» con la recuperación." @@ -16919,9 +16149,9 @@ msgid "virtual transaction %d/%u" msgstr "transacción virtual %d/%u" #: storage/lmgr/lmgr.c:998 -#, fuzzy, c-format +#, c-format msgid "speculative token %u of transaction %u" -msgstr "no se pudo encontrar el estado de la transacción %u" +msgstr "token especulativo %u de la transacción %u" #: storage/lmgr/lmgr.c:1004 #, c-format @@ -16931,13 +16161,12 @@ msgstr "objeto %u de clase %u de la base de datos %u" #: storage/lmgr/lmgr.c:1012 #, c-format msgid "user lock [%u,%u,%u]" -msgstr "candado de usuario [%u,%u,%u]" +msgstr "lock de usuario [%u,%u,%u]" -# XXX is this a good translation? #: storage/lmgr/lmgr.c:1019 #, c-format msgid "advisory lock [%u,%u,%u,%u]" -msgstr "candado consultivo [%u,%u,%u,%u]" +msgstr "lock consultivo [%u,%u,%u,%u]" #: storage/lmgr/lmgr.c:1027 #, c-format @@ -16947,12 +16176,12 @@ msgstr "tipo de locktag %d no reconocido" #: storage/lmgr/lock.c:732 #, c-format msgid "cannot acquire lock mode %s on database objects while recovery is in progress" -msgstr "no se puede adquirir candado en modo %s en objetos de la base de datos mientras la recuperación está en proceso" +msgstr "no se puede adquirir lock en modo %s en objetos de la base de datos mientras la recuperación está en curso" #: storage/lmgr/lock.c:734 #, c-format msgid "Only RowExclusiveLock or less can be acquired on database objects during recovery." -msgstr "Sólo candados RowExclusiveLock o menor pueden ser adquiridos en objetos de la base de datos durante la recuperación." +msgstr "Sólo locks RowExclusiveLock o menor pueden ser adquiridos en objetos de la base de datos durante la recuperación." #: storage/lmgr/lock.c:884 storage/lmgr/lock.c:918 storage/lmgr/lock.c:2683 #: storage/lmgr/lock.c:4008 storage/lmgr/lock.c:4073 storage/lmgr/lock.c:4365 @@ -16963,129 +16192,129 @@ msgstr "Puede ser necesario incrementar max_locks_per_transaction." #: storage/lmgr/lock.c:3124 storage/lmgr/lock.c:3240 #, c-format msgid "cannot PREPARE while holding both session-level and transaction-level locks on the same object" -msgstr "no se puede hacer PREPARE mientras se mantienen candados a nivel de sesión y transacción simultáneamente sobre el mismo objeto" +msgstr "no se puede hacer PREPARE mientras se mantienen locks a nivel de sesión y transacción simultáneamente sobre el mismo objeto" -#: storage/lmgr/predicate.c:675 +#: storage/lmgr/predicate.c:677 #, c-format msgid "not enough elements in RWConflictPool to record a read/write conflict" msgstr "no hay suficientes elementos en RWConflictPool para registrar un conflicto read/write" -#: storage/lmgr/predicate.c:676 storage/lmgr/predicate.c:704 +#: storage/lmgr/predicate.c:678 storage/lmgr/predicate.c:706 #, c-format msgid "You might need to run fewer transactions at a time or increase max_connections." msgstr "Puede ser necesario ejecutar menos transacciones al mismo tiempo, o incrementar max_connections." -#: storage/lmgr/predicate.c:703 +#: storage/lmgr/predicate.c:705 #, c-format msgid "not enough elements in RWConflictPool to record a potential read/write conflict" msgstr "no hay suficientes elementos en RWConflictPool para registrar un potencial conflicto read/write" -#: storage/lmgr/predicate.c:909 +#: storage/lmgr/predicate.c:912 #, c-format msgid "memory for serializable conflict tracking is nearly exhausted" msgstr "la memoria para el seguimiento de conflictos de serialización está casi agotada" -#: storage/lmgr/predicate.c:910 +#: storage/lmgr/predicate.c:913 #, c-format msgid "There might be an idle transaction or a forgotten prepared transaction causing this." msgstr "Puede haber una transacción inactiva o una transacción preparada olvidada que esté causando este problema." -#: storage/lmgr/predicate.c:1190 storage/lmgr/predicate.c:1261 +#: storage/lmgr/predicate.c:1207 storage/lmgr/predicate.c:1279 #, c-format msgid "not enough shared memory for elements of data structure \"%s\" (%zu bytes requested)" msgstr "el espacio de memoria compartida es insuficiente para los elementos de la estructura «%s» (%zu bytes solicitados)" -#: storage/lmgr/predicate.c:1549 +#: storage/lmgr/predicate.c:1564 #, c-format msgid "deferrable snapshot was unsafe; trying a new one" -msgstr "la instantánea postergada era insegura; intentando con una nueva" +msgstr "el snapshot postergado era inseguro; intentando con uno nuevo" -#: storage/lmgr/predicate.c:1588 +#: storage/lmgr/predicate.c:1603 #, c-format msgid "\"default_transaction_isolation\" is set to \"serializable\"." msgstr "«default_transaction_isolation» está definido a «serializable»." -#: storage/lmgr/predicate.c:1589 +#: storage/lmgr/predicate.c:1604 #, c-format msgid "You can use \"SET default_transaction_isolation = 'repeatable read'\" to change the default." msgstr "Puede usar «SET default_transaction_isolation = 'repeatable read'» para cambiar el valor por omisión." -#: storage/lmgr/predicate.c:1628 +#: storage/lmgr/predicate.c:1643 #, c-format msgid "a snapshot-importing transaction must not be READ ONLY DEFERRABLE" msgstr "una transacción que importa un snapshot no debe ser READ ONLY DEFERRABLE" -#: storage/lmgr/predicate.c:1706 utils/time/snapmgr.c:576 -#: utils/time/snapmgr.c:582 +#: storage/lmgr/predicate.c:1721 utils/time/snapmgr.c:617 +#: utils/time/snapmgr.c:623 #, c-format msgid "could not import the requested snapshot" msgstr "no se pudo importar el snapshot solicitado" -#: storage/lmgr/predicate.c:1707 utils/time/snapmgr.c:583 +#: storage/lmgr/predicate.c:1722 utils/time/snapmgr.c:624 #, c-format msgid "The source transaction %u is not running anymore." msgstr "La transacción de origen %u ya no está en ejecución." -#: storage/lmgr/predicate.c:2330 storage/lmgr/predicate.c:2345 -#: storage/lmgr/predicate.c:3737 +#: storage/lmgr/predicate.c:2345 storage/lmgr/predicate.c:2360 +#: storage/lmgr/predicate.c:3752 #, c-format msgid "You might need to increase max_pred_locks_per_transaction." msgstr "Puede ser necesario incrementar max_pred_locks_per_transaction." -#: storage/lmgr/predicate.c:3891 storage/lmgr/predicate.c:3980 -#: storage/lmgr/predicate.c:3988 storage/lmgr/predicate.c:4027 -#: storage/lmgr/predicate.c:4266 storage/lmgr/predicate.c:4603 -#: storage/lmgr/predicate.c:4615 storage/lmgr/predicate.c:4657 -#: storage/lmgr/predicate.c:4695 +#: storage/lmgr/predicate.c:3906 storage/lmgr/predicate.c:3995 +#: storage/lmgr/predicate.c:4003 storage/lmgr/predicate.c:4042 +#: storage/lmgr/predicate.c:4281 storage/lmgr/predicate.c:4618 +#: storage/lmgr/predicate.c:4630 storage/lmgr/predicate.c:4672 +#: storage/lmgr/predicate.c:4710 #, c-format msgid "could not serialize access due to read/write dependencies among transactions" msgstr "no se pudo serializar el acceso debido a dependencias read/write entre transacciones" -#: storage/lmgr/predicate.c:3893 storage/lmgr/predicate.c:3982 -#: storage/lmgr/predicate.c:3990 storage/lmgr/predicate.c:4029 -#: storage/lmgr/predicate.c:4268 storage/lmgr/predicate.c:4605 -#: storage/lmgr/predicate.c:4617 storage/lmgr/predicate.c:4659 -#: storage/lmgr/predicate.c:4697 +#: storage/lmgr/predicate.c:3908 storage/lmgr/predicate.c:3997 +#: storage/lmgr/predicate.c:4005 storage/lmgr/predicate.c:4044 +#: storage/lmgr/predicate.c:4283 storage/lmgr/predicate.c:4620 +#: storage/lmgr/predicate.c:4632 storage/lmgr/predicate.c:4674 +#: storage/lmgr/predicate.c:4712 #, c-format msgid "The transaction might succeed if retried." msgstr "La transacción podría tener éxito si es reintentada." -#: storage/lmgr/proc.c:1263 +#: storage/lmgr/proc.c:1265 #, c-format msgid "Process %d waits for %s on %s." msgstr "El proceso %d espera %s en %s." -#: storage/lmgr/proc.c:1274 +#: storage/lmgr/proc.c:1276 #, c-format msgid "sending cancel to blocking autovacuum PID %d" msgstr "enviando señal de cancelación a la tarea autovacuum bloqueante con PID %d" -#: storage/lmgr/proc.c:1292 utils/adt/misc.c:270 +#: storage/lmgr/proc.c:1294 utils/adt/misc.c:270 #, c-format msgid "could not send signal to process %d: %m" msgstr "no se pudo enviar la señal al proceso %d: %m" -#: storage/lmgr/proc.c:1394 +#: storage/lmgr/proc.c:1396 #, c-format msgid "process %d avoided deadlock for %s on %s by rearranging queue order after %ld.%03d ms" msgstr "el proceso %d evitó un deadlock para %s en %s reordenando la cola después de %ld.%03d ms" -#: storage/lmgr/proc.c:1409 +#: storage/lmgr/proc.c:1411 #, c-format msgid "process %d detected deadlock while waiting for %s on %s after %ld.%03d ms" msgstr "el proceso %d detectó un deadlock mientras esperaba %s en %s después de %ld.%03d ms" -#: storage/lmgr/proc.c:1418 +#: storage/lmgr/proc.c:1420 #, c-format msgid "process %d still waiting for %s on %s after %ld.%03d ms" msgstr "el proceso %d aún espera %s en %s después de %ld.%03d ms" -#: storage/lmgr/proc.c:1425 +#: storage/lmgr/proc.c:1427 #, c-format msgid "process %d acquired %s on %s after %ld.%03d ms" msgstr "el proceso %d adquirió %s en %s después de %ld.%03d ms" -#: storage/lmgr/proc.c:1441 +#: storage/lmgr/proc.c:1443 #, c-format msgid "process %d failed to acquire %s on %s after %ld.%03d ms" msgstr "el proceso %d no pudo adquirir %s en %s después de %ld.%03d ms" @@ -17113,15 +16342,15 @@ msgstr "el puntero de item está corrupto: %u" msgid "corrupted item lengths: total %u, available space %u" msgstr "los largos de ítem están corruptos: total %u, espacio disponible %u" -#: storage/page/bufpage.c:756 storage/page/bufpage.c:892 +#: storage/page/bufpage.c:756 #, c-format msgid "corrupted item pointer: offset = %u, size = %u" msgstr "el puntero de ítem está corrupto: posición = %u, tamaño = %u" -#: storage/page/bufpage.c:997 -#, fuzzy, c-format +#: storage/page/bufpage.c:892 storage/page/bufpage.c:997 +#, c-format msgid "corrupted item pointer: offset = %u, length = %u" -msgstr "el puntero de ítem está corrupto: posición = %u, tamaño = %u" +msgstr "el puntero de ítem está corrupto: posición = %u, largo = %u" #: storage/smgr/md.c:449 storage/smgr/md.c:971 #, c-format @@ -17194,325 +16423,323 @@ msgid "could not forward fsync request because request queue is full" msgstr "no se pudo enviar una petición fsync porque la cola de peticiones está llena" #: storage/smgr/md.c:1863 -#, fuzzy, c-format -#| msgid "could not open file \"%s\" (target block %u): %m" +#, c-format msgid "could not open file \"%s\" (target block %u): previous segment is only %u blocks" -msgstr "no se pudo abrir el archivo «%s» (bloque buscado %u): %m" +msgstr "no se pudo abrir el archivo «%s» (bloque buscado %u): el segmento previo sólo tiene %u bloques" #: storage/smgr/md.c:1877 #, c-format msgid "could not open file \"%s\" (target block %u): %m" msgstr "no se pudo abrir el archivo «%s» (bloque buscado %u): %m" -#: tcop/fastpath.c:111 tcop/fastpath.c:475 tcop/fastpath.c:605 +#: tcop/fastpath.c:111 tcop/fastpath.c:463 tcop/fastpath.c:593 #, c-format msgid "invalid argument size %d in function call message" msgstr "el tamaño de argumento %d no es válido en el mensaje de llamada a función" -#: tcop/fastpath.c:291 tcop/postgres.c:992 tcop/postgres.c:1301 -#: tcop/postgres.c:1559 tcop/postgres.c:1964 tcop/postgres.c:2331 -#: tcop/postgres.c:2406 +#: tcop/fastpath.c:281 tcop/postgres.c:984 tcop/postgres.c:1293 +#: tcop/postgres.c:1551 tcop/postgres.c:1956 tcop/postgres.c:2323 +#: tcop/postgres.c:2398 #, c-format msgid "current transaction is aborted, commands ignored until end of transaction block" msgstr "transacción abortada, las órdenes serán ignoradas hasta el fin de bloque de transacción" -#: tcop/fastpath.c:319 +#: tcop/fastpath.c:309 #, c-format msgid "fastpath function call: \"%s\" (OID %u)" msgstr "llamada a función fastpath: «%s» (OID %u)" -#: tcop/fastpath.c:401 tcop/postgres.c:1163 tcop/postgres.c:1426 -#: tcop/postgres.c:1805 tcop/postgres.c:2022 +#: tcop/fastpath.c:391 tcop/postgres.c:1155 tcop/postgres.c:1418 +#: tcop/postgres.c:1797 tcop/postgres.c:2014 #, c-format msgid "duration: %s ms" msgstr "duración: %s ms" -#: tcop/fastpath.c:405 +#: tcop/fastpath.c:395 #, c-format msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" msgstr "duración: %s ms llamada a función fastpath: «%s» (OID %u)" -#: tcop/fastpath.c:443 tcop/fastpath.c:570 +#: tcop/fastpath.c:431 tcop/fastpath.c:558 #, c-format msgid "function call message contains %d arguments but function requires %d" msgstr "el mensaje de llamada a función contiene %d argumentos pero la función requiere %d" -#: tcop/fastpath.c:451 +#: tcop/fastpath.c:439 #, c-format msgid "function call message contains %d argument formats but %d arguments" msgstr "el mensaje de llamada a función contiene %d formatos de argumento pero %d argumentos" -#: tcop/fastpath.c:538 tcop/fastpath.c:621 +#: tcop/fastpath.c:526 tcop/fastpath.c:609 #, c-format msgid "incorrect binary data format in function argument %d" msgstr "el formato de datos binarios es incorrecto en argumento %d a función" -#: tcop/postgres.c:352 tcop/postgres.c:388 tcop/postgres.c:415 +#: tcop/postgres.c:344 tcop/postgres.c:380 tcop/postgres.c:407 #, c-format msgid "unexpected EOF on client connection" msgstr "se encontró fin de archivo inesperado en la conexión del cliente" -#: tcop/postgres.c:438 tcop/postgres.c:450 tcop/postgres.c:461 -#: tcop/postgres.c:473 tcop/postgres.c:4308 +#: tcop/postgres.c:430 tcop/postgres.c:442 tcop/postgres.c:453 +#: tcop/postgres.c:465 tcop/postgres.c:4300 #, c-format msgid "invalid frontend message type %d" msgstr "el tipo de mensaje de frontend %d no es válido" -#: tcop/postgres.c:933 +#: tcop/postgres.c:925 #, c-format msgid "statement: %s" msgstr "sentencia: %s" -#: tcop/postgres.c:1168 +#: tcop/postgres.c:1160 #, c-format msgid "duration: %s ms statement: %s" msgstr "duración: %s ms sentencia: %s" -#: tcop/postgres.c:1218 +#: tcop/postgres.c:1210 #, c-format msgid "parse %s: %s" msgstr "parse %s: %s" -#: tcop/postgres.c:1274 +#: tcop/postgres.c:1266 #, c-format msgid "cannot insert multiple commands into a prepared statement" msgstr "no se pueden insertar múltiples órdenes en una sentencia preparada" -#: tcop/postgres.c:1431 +#: tcop/postgres.c:1423 #, c-format msgid "duration: %s ms parse %s: %s" msgstr "duración: %s ms parse: %s: %s" -#: tcop/postgres.c:1476 +#: tcop/postgres.c:1468 #, c-format msgid "bind %s to %s" msgstr "bind %s a %s" -#: tcop/postgres.c:1495 tcop/postgres.c:2312 +#: tcop/postgres.c:1487 tcop/postgres.c:2304 #, c-format msgid "unnamed prepared statement does not exist" msgstr "no existe una sentencia preparada sin nombre" -#: tcop/postgres.c:1537 +#: tcop/postgres.c:1529 #, c-format msgid "bind message has %d parameter formats but %d parameters" msgstr "el mensaje de enlace (bind) tiene %d formatos de parámetro pero %d parámetros" -#: tcop/postgres.c:1543 +#: tcop/postgres.c:1535 #, c-format msgid "bind message supplies %d parameters, but prepared statement \"%s\" requires %d" msgstr "el mensaje de enlace (bind) entrega %d parámetros, pero la sentencia preparada «%s» requiere %d" -#: tcop/postgres.c:1712 +#: tcop/postgres.c:1704 #, c-format msgid "incorrect binary data format in bind parameter %d" msgstr "el formato de datos binarios es incorrecto en el parámetro de enlace %d" -#: tcop/postgres.c:1810 +#: tcop/postgres.c:1802 #, c-format msgid "duration: %s ms bind %s%s%s: %s" msgstr "duración: %s ms bind %s%s%s: %s" -#: tcop/postgres.c:1858 tcop/postgres.c:2392 +#: tcop/postgres.c:1850 tcop/postgres.c:2384 #, c-format msgid "portal \"%s\" does not exist" msgstr "no existe el portal «%s»" -#: tcop/postgres.c:1943 +#: tcop/postgres.c:1935 #, c-format msgid "%s %s%s%s: %s" msgstr "%s %s%s%s: %s" -#: tcop/postgres.c:1945 tcop/postgres.c:2030 +#: tcop/postgres.c:1937 tcop/postgres.c:2022 msgid "execute fetch from" msgstr "ejecutar fetch desde" -#: tcop/postgres.c:1946 tcop/postgres.c:2031 +#: tcop/postgres.c:1938 tcop/postgres.c:2023 msgid "execute" msgstr "ejecutar" -#: tcop/postgres.c:2027 +#: tcop/postgres.c:2019 #, c-format msgid "duration: %s ms %s %s%s%s: %s" msgstr "duración: %s ms %s %s%s%s: %s" -#: tcop/postgres.c:2153 +#: tcop/postgres.c:2145 #, c-format msgid "prepare: %s" msgstr "prepare: %s" -#: tcop/postgres.c:2216 +#: tcop/postgres.c:2208 #, c-format msgid "parameters: %s" msgstr "parámetros: %s" -#: tcop/postgres.c:2235 +#: tcop/postgres.c:2227 #, c-format msgid "abort reason: recovery conflict" msgstr "razón para abortar: conflicto en la recuperación" -#: tcop/postgres.c:2251 +#: tcop/postgres.c:2243 #, c-format msgid "User was holding shared buffer pin for too long." msgstr "El usuario mantuvo el búfer compartido «clavado» por demasiado tiempo." -#: tcop/postgres.c:2254 +#: tcop/postgres.c:2246 #, c-format msgid "User was holding a relation lock for too long." msgstr "El usuario mantuvo una relación bloqueada por demasiado tiempo." -#: tcop/postgres.c:2257 +#: tcop/postgres.c:2249 #, c-format msgid "User was or might have been using tablespace that must be dropped." msgstr "El usuario estaba o pudo haber estado usando un tablespace que debía ser eliminado." -#: tcop/postgres.c:2260 +#: tcop/postgres.c:2252 #, c-format msgid "User query might have needed to see row versions that must be removed." msgstr "La consulta del usuario pudo haber necesitado examinar versiones de tuplas que debían eliminarse." -#: tcop/postgres.c:2266 +#: tcop/postgres.c:2258 #, c-format msgid "User was connected to a database that must be dropped." msgstr "El usuario estaba conectado a una base de datos que debía ser eliminada." -#: tcop/postgres.c:2595 +#: tcop/postgres.c:2587 #, c-format msgid "terminating connection because of crash of another server process" msgstr "terminando la conexión debido a una falla en otro proceso servidor" -#: tcop/postgres.c:2596 +#: tcop/postgres.c:2588 #, c-format msgid "The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory." msgstr "Postmaster ha ordenado que este proceso servidor cancele la transacción en curso y finalice la conexión, porque otro proceso servidor ha terminado anormalmente y podría haber corrompido la memoria compartida." -#: tcop/postgres.c:2600 tcop/postgres.c:2904 +#: tcop/postgres.c:2592 tcop/postgres.c:2902 #, c-format msgid "In a moment you should be able to reconnect to the database and repeat your command." msgstr "Dentro de un momento debería poder reconectarse y repetir la consulta." -#: tcop/postgres.c:2686 +#: tcop/postgres.c:2678 #, c-format msgid "floating-point exception" msgstr "excepción de coma flotante" -#: tcop/postgres.c:2687 +#: tcop/postgres.c:2679 #, c-format msgid "An invalid floating-point operation was signaled. This probably means an out-of-range result or an invalid operation, such as division by zero." msgstr "Se ha recibido una señal de una operación de coma flotante no válida. Esto puede significar un resultado fuera de rango o una operación no válida, como una división por cero." -#: tcop/postgres.c:2849 +#: tcop/postgres.c:2847 #, c-format msgid "canceling authentication due to timeout" msgstr "cancelando la autentificación debido a que se agotó el tiempo de espera" -#: tcop/postgres.c:2853 +#: tcop/postgres.c:2851 #, c-format msgid "terminating autovacuum process due to administrator command" msgstr "terminando el proceso autovacuum debido a una orden del administrador" -#: tcop/postgres.c:2859 tcop/postgres.c:2869 tcop/postgres.c:2902 +#: tcop/postgres.c:2857 tcop/postgres.c:2867 tcop/postgres.c:2900 #, c-format msgid "terminating connection due to conflict with recovery" msgstr "terminando la conexión debido a un conflicto con la recuperación" -#: tcop/postgres.c:2875 +#: tcop/postgres.c:2873 #, c-format msgid "terminating connection due to administrator command" msgstr "terminando la conexión debido a una orden del administrador" -#: tcop/postgres.c:2885 +#: tcop/postgres.c:2883 #, c-format msgid "connection to client lost" msgstr "se ha perdido la conexión al cliente" -#: tcop/postgres.c:2953 +#: tcop/postgres.c:2951 #, c-format msgid "canceling statement due to lock timeout" -msgstr "cancelando la sentencia debido a que se agotó el tiempo de espera de candados (locks)" +msgstr "cancelando la sentencia debido a que se agotó el tiempo de espera de locks" -#: tcop/postgres.c:2960 +#: tcop/postgres.c:2958 #, c-format msgid "canceling statement due to statement timeout" msgstr "cancelando la sentencia debido a que se agotó el tiempo de espera de sentencias" -#: tcop/postgres.c:2967 +#: tcop/postgres.c:2965 #, c-format msgid "canceling autovacuum task" msgstr "cancelando tarea de autovacuum" -#: tcop/postgres.c:2990 +#: tcop/postgres.c:2988 #, c-format msgid "canceling statement due to user request" msgstr "cancelando la sentencia debido a una petición del usuario" -#: tcop/postgres.c:3000 -#, fuzzy, c-format -#| msgid "terminating connection due to administrator command" +#: tcop/postgres.c:2998 +#, c-format msgid "terminating connection due to idle-in-transaction timeout" -msgstr "terminando la conexión debido a una orden del administrador" +msgstr "terminando la conexión debido a que se agotó el tiempo de espera para transacciones abiertas inactivas" -#: tcop/postgres.c:3114 +#: tcop/postgres.c:3112 #, c-format msgid "stack depth limit exceeded" msgstr "límite de profundidad de stack alcanzado" -#: tcop/postgres.c:3115 +#: tcop/postgres.c:3113 #, c-format msgid "Increase the configuration parameter \"max_stack_depth\" (currently %dkB), after ensuring the platform's stack depth limit is adequate." msgstr "Incremente el parámetro de configuración «max_stack_depth» (actualmente %dkB), después de asegurarse que el límite de profundidad de stack de la plataforma es adecuado." -#: tcop/postgres.c:3178 +#: tcop/postgres.c:3176 #, c-format msgid "\"max_stack_depth\" must not exceed %ldkB." msgstr "«max_stack_depth» no debe exceder %ldkB." -#: tcop/postgres.c:3180 +#: tcop/postgres.c:3178 #, c-format msgid "Increase the platform's stack depth limit via \"ulimit -s\" or local equivalent." msgstr "Incremente el límite de profundidad del stack del sistema usando «ulimit -s» o el equivalente de su sistema." -#: tcop/postgres.c:3540 +#: tcop/postgres.c:3538 #, c-format msgid "invalid command-line argument for server process: %s" msgstr "argumentos de línea de órdenes no válidos para proceso servidor: %s" -#: tcop/postgres.c:3541 tcop/postgres.c:3547 +#: tcop/postgres.c:3539 tcop/postgres.c:3545 #, c-format msgid "Try \"%s --help\" for more information." msgstr "Pruebe «%s --help» para mayor información." -#: tcop/postgres.c:3545 +#: tcop/postgres.c:3543 #, c-format msgid "%s: invalid command-line argument: %s" msgstr "%s: argumento de línea de órdenes no válido: %s" -#: tcop/postgres.c:3607 +#: tcop/postgres.c:3605 #, c-format msgid "%s: no database nor user name specified" msgstr "%s: no se ha especificado base de datos ni usuario" -#: tcop/postgres.c:4216 +#: tcop/postgres.c:4208 #, c-format msgid "invalid CLOSE message subtype %d" msgstr "subtipo %d de mensaje CLOSE no válido" -#: tcop/postgres.c:4251 +#: tcop/postgres.c:4243 #, c-format msgid "invalid DESCRIBE message subtype %d" msgstr "subtipo %d de mensaje DESCRIBE no válido" -#: tcop/postgres.c:4329 +#: tcop/postgres.c:4321 #, c-format msgid "fastpath function calls not supported in a replication connection" msgstr "la invocación «fastpath» de funciones no está soportada en conexiones de replicación" -#: tcop/postgres.c:4333 +#: tcop/postgres.c:4325 #, c-format msgid "extended query protocol not supported in a replication connection" msgstr "el protocolo extendido de consultas no está soportado en conexiones de replicación" -#: tcop/postgres.c:4503 +#: tcop/postgres.c:4495 #, c-format msgid "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%s" msgstr "desconexión: duración de sesión: %d:%02d:%02d.%03d usuario=%s base=%s host=%s%s%s" @@ -17540,9 +16767,9 @@ msgstr "no se puede ejecutar %s en una transacción de sólo lectura" #. translator: %s is name of a SQL command, eg CREATE #: tcop/utility.c:253 -#, fuzzy, c-format +#, c-format msgid "cannot execute %s during a parallel operation" -msgstr "no se puede ejecutar %s durante la recuperación" +msgstr "no se puede ejecutar %s durante una operación paralela" #. translator: %s is name of a SQL command, eg CREATE #: tcop/utility.c:272 @@ -17686,28 +16913,24 @@ msgstr "falta un paramétro Dictionary" #: tsearch/spell.c:380 tsearch/spell.c:397 tsearch/spell.c:406 #: tsearch/spell.c:1034 -#, fuzzy, c-format -#| msgid "invalid data in file \"%s\"" +#, c-format msgid "invalid affix flag \"%s\"" -msgstr "datos no válidos en archivo «%s»" +msgstr "marca de afijo «%s» no válida" #: tsearch/spell.c:384 tsearch/spell.c:1038 -#, fuzzy, c-format -#| msgid "%s: transfer rate \"%s\" is out of range\n" +#, c-format msgid "affix flag \"%s\" is out of range" -msgstr "%s: la tasa de transferencia «%s» está fuera de rango\n" +msgstr "la marca de afijo «%s» está fuera de rango" #: tsearch/spell.c:414 -#, fuzzy, c-format -#| msgid "invalid data in file \"%s\"" +#, c-format msgid "invalid character in affix flag \"%s\"" -msgstr "datos no válidos en archivo «%s»" +msgstr "caracteres no válidos en la marca de afijo «%s»" #: tsearch/spell.c:434 -#, fuzzy, c-format -#| msgid "invalid data in file \"%s\"" +#, c-format msgid "invalid affix flag \"%s\" with \"long\" flag value" -msgstr "datos no válidos en archivo «%s»" +msgstr "marca de afijo «%s» no válida con el valor de marca «long»" #: tsearch/spell.c:522 #, c-format @@ -17719,11 +16942,16 @@ msgstr "no se pudo abrir el archivo de diccionario «%s»: %m" msgid "invalid regular expression: %s" msgstr "la expresión regular no es válida: %s" +#: tsearch/spell.c:954 tsearch/spell.c:971 tsearch/spell.c:988 +#: tsearch/spell.c:1005 tsearch/spell.c:1070 gram.y:14414 gram.y:14431 +#, c-format +msgid "syntax error" +msgstr "error de sintaxis" + #: tsearch/spell.c:1161 tsearch/spell.c:1721 -#, fuzzy, c-format -#| msgid "invalid cidr value: \"%s\"" +#, c-format msgid "invalid affix alias \"%s\"" -msgstr "valor cidr no válido: «%s»" +msgstr "alias de afijo «%s» no válido" #: tsearch/spell.c:1211 tsearch/spell.c:1282 tsearch/spell.c:1426 #, c-format @@ -17731,24 +16959,21 @@ msgid "could not open affix file \"%s\": %m" msgstr "no se pudo abrir el archivo de afijos «%s»: %m" #: tsearch/spell.c:1265 -#, fuzzy, c-format -#| msgid "Ispell dictionary supports only default flag value" +#, c-format msgid "Ispell dictionary supports only \"default\", \"long\", and \"num\" flag values" -msgstr "el diccionario Ispell sólo permite el valor de bandera «default»" +msgstr "el diccionario Ispell sólo permite los valores «default», «long» y «num»" #: tsearch/spell.c:1309 -#, fuzzy, c-format -#| msgid "%s: invalid number of parallel jobs\n" +#, c-format msgid "invalid number of flag vector aliases" -msgstr "%s: número de trabajos paralelos no válido\n" +msgstr "número no válido de alias de opciones" #: tsearch/spell.c:1542 #, c-format msgid "affix file contains both old-style and new-style commands" msgstr "el archivo de «affix» contiene órdenes en estilos antiguo y nuevo" -#: tsearch/to_tsany.c:170 utils/adt/tsvector.c:270 -#: utils/adt/tsvector_op.c:1132 +#: tsearch/to_tsany.c:170 utils/adt/tsvector.c:270 utils/adt/tsvector_op.c:1133 #, c-format msgid "string is too long for tsvector (%d bytes, max %d bytes)" msgstr "la cadena es demasiado larga para tsvector (%d bytes, máximo %d bytes)" @@ -17915,8 +17140,8 @@ msgstr "aclremove ya no está soportado" msgid "unrecognized privilege type: \"%s\"" msgstr "tipo de privilegio no reconocido: «%s»" -#: utils/adt/acl.c:3427 utils/adt/regproc.c:123 utils/adt/regproc.c:144 -#: utils/adt/regproc.c:319 +#: utils/adt/acl.c:3427 utils/adt/regproc.c:124 utils/adt/regproc.c:145 +#: utils/adt/regproc.c:320 #, c-format msgid "function \"%s\" does not exist" msgstr "no existe la función «%s»" @@ -17928,27 +17153,27 @@ msgstr "debe ser miembro del rol «%s»" #: utils/adt/array_expanded.c:274 utils/adt/arrayfuncs.c:931 #: utils/adt/arrayfuncs.c:1519 utils/adt/arrayfuncs.c:3251 -#: utils/adt/arrayfuncs.c:3389 utils/adt/arrayfuncs.c:5860 -#: utils/adt/arrayfuncs.c:6171 utils/adt/arrayutils.c:93 +#: utils/adt/arrayfuncs.c:3389 utils/adt/arrayfuncs.c:5848 +#: utils/adt/arrayfuncs.c:6159 utils/adt/arrayutils.c:93 #: utils/adt/arrayutils.c:102 utils/adt/arrayutils.c:109 #, c-format msgid "array size exceeds the maximum allowed (%d)" msgstr "el tamaño del array excede el máximo permitido (%d)" -#: utils/adt/array_userfuncs.c:67 utils/adt/array_userfuncs.c:529 -#: utils/adt/array_userfuncs.c:609 utils/adt/json.c:1759 utils/adt/json.c:1854 +#: utils/adt/array_userfuncs.c:79 utils/adt/array_userfuncs.c:541 +#: utils/adt/array_userfuncs.c:621 utils/adt/json.c:1759 utils/adt/json.c:1854 #: utils/adt/json.c:1892 utils/adt/jsonb.c:1126 utils/adt/jsonb.c:1155 #: utils/adt/jsonb.c:1591 utils/adt/jsonb.c:1755 utils/adt/jsonb.c:1765 #, c-format msgid "could not determine input data type" msgstr "no se pudo determinar el tipo de dato de entrada" -#: utils/adt/array_userfuncs.c:72 -#, fuzzy, c-format +#: utils/adt/array_userfuncs.c:84 +#, c-format msgid "input data type is not an array" -msgstr "el tipo de destino no es un array" +msgstr "el tipo de entrada no es un array" -#: utils/adt/array_userfuncs.c:120 utils/adt/array_userfuncs.c:174 +#: utils/adt/array_userfuncs.c:132 utils/adt/array_userfuncs.c:186 #: utils/adt/arrayfuncs.c:1322 utils/adt/float.c:1228 utils/adt/float.c:1287 #: utils/adt/float.c:3556 utils/adt/float.c:3572 utils/adt/int.c:623 #: utils/adt/int.c:652 utils/adt/int.c:673 utils/adt/int.c:704 @@ -17956,60 +17181,59 @@ msgstr "el tipo de destino no es un array" #: utils/adt/int.c:928 utils/adt/int.c:955 utils/adt/int.c:995 #: utils/adt/int.c:1016 utils/adt/int.c:1043 utils/adt/int.c:1076 #: utils/adt/int.c:1159 utils/adt/int8.c:1298 utils/adt/numeric.c:2903 -#: utils/adt/numeric.c:2912 utils/adt/varbit.c:1173 utils/adt/varbit.c:1565 +#: utils/adt/numeric.c:2912 utils/adt/varbit.c:1173 utils/adt/varbit.c:1575 #: utils/adt/varlena.c:1055 utils/adt/varlena.c:2807 #, c-format msgid "integer out of range" msgstr "el entero está fuera de rango" -#: utils/adt/array_userfuncs.c:127 utils/adt/array_userfuncs.c:184 +#: utils/adt/array_userfuncs.c:139 utils/adt/array_userfuncs.c:196 #, c-format msgid "argument must be empty or one-dimensional array" msgstr "el argumento debe ser vacío o un array unidimensional" -#: utils/adt/array_userfuncs.c:266 utils/adt/array_userfuncs.c:305 -#: utils/adt/array_userfuncs.c:342 utils/adt/array_userfuncs.c:371 -#: utils/adt/array_userfuncs.c:399 +#: utils/adt/array_userfuncs.c:278 utils/adt/array_userfuncs.c:317 +#: utils/adt/array_userfuncs.c:354 utils/adt/array_userfuncs.c:383 +#: utils/adt/array_userfuncs.c:411 #, c-format msgid "cannot concatenate incompatible arrays" msgstr "no se pueden concatenar arrays incompatibles" -#: utils/adt/array_userfuncs.c:267 +#: utils/adt/array_userfuncs.c:279 #, c-format msgid "Arrays with element types %s and %s are not compatible for concatenation." msgstr "Los arrays con elementos de tipo %s y %s son incompatibles para la concatenación." -#: utils/adt/array_userfuncs.c:306 +#: utils/adt/array_userfuncs.c:318 #, c-format msgid "Arrays of %d and %d dimensions are not compatible for concatenation." msgstr "Los arrays de dimesiones %d y %d son incompatibles para la concatenación." -#: utils/adt/array_userfuncs.c:343 +#: utils/adt/array_userfuncs.c:355 #, c-format msgid "Arrays with differing element dimensions are not compatible for concatenation." msgstr "Los arrays con elementos de diferentes dimensiones son incompatibles para la concatenación." -#: utils/adt/array_userfuncs.c:372 utils/adt/array_userfuncs.c:400 +#: utils/adt/array_userfuncs.c:384 utils/adt/array_userfuncs.c:412 #, c-format msgid "Arrays with differing dimensions are not compatible for concatenation." msgstr "Los arrays con diferentes dimensiones son incompatibles para la concatenación." -#: utils/adt/array_userfuncs.c:468 utils/adt/arrayfuncs.c:1284 -#: utils/adt/arrayfuncs.c:3357 utils/adt/arrayfuncs.c:5760 +#: utils/adt/array_userfuncs.c:480 utils/adt/arrayfuncs.c:1284 +#: utils/adt/arrayfuncs.c:3357 utils/adt/arrayfuncs.c:5754 #, c-format msgid "invalid number of dimensions: %d" msgstr "número incorrecto de dimensiones: %d" -#: utils/adt/array_userfuncs.c:725 utils/adt/array_userfuncs.c:876 -#, fuzzy, c-format +#: utils/adt/array_userfuncs.c:737 utils/adt/array_userfuncs.c:889 +#, c-format msgid "searching for elements in multidimensional arrays is not supported" -msgstr "la eliminación de elementos desde arrays multidimensionales no está soportada" +msgstr "no está soportada la búsqueda de elementos en arrays multidimensionales" -#: utils/adt/array_userfuncs.c:749 -#, fuzzy, c-format -#| msgid "field name must not be null" +#: utils/adt/array_userfuncs.c:761 +#, c-format msgid "initial position must not be null" -msgstr "el nombre de campo no debe ser null" +msgstr "la posición inicial no debe ser null" #: utils/adt/arrayfuncs.c:268 utils/adt/arrayfuncs.c:282 #: utils/adt/arrayfuncs.c:293 utils/adt/arrayfuncs.c:315 @@ -18084,7 +17308,7 @@ msgstr "Elemento de array inesperado." #: utils/adt/arrayfuncs.c:589 #, c-format msgid "Unmatched \"%c\" character." -msgstr "Carácter «%c» sin pareja" +msgstr "Carácter «%c» sin pareja." #: utils/adt/arrayfuncs.c:597 #, c-format @@ -18131,10 +17355,10 @@ msgstr "no está implementada la obtención de segmentos de arrays de largo fijo #: utils/adt/arrayfuncs.c:2230 utils/adt/arrayfuncs.c:2252 #: utils/adt/arrayfuncs.c:2301 utils/adt/arrayfuncs.c:2537 #: utils/adt/arrayfuncs.c:2848 utils/adt/arrayfuncs.c:5740 -#: utils/adt/arrayfuncs.c:5772 utils/adt/arrayfuncs.c:5789 +#: utils/adt/arrayfuncs.c:5766 utils/adt/arrayfuncs.c:5777 #: utils/adt/json.c:2290 utils/adt/json.c:2365 utils/adt/jsonb.c:1369 -#: utils/adt/jsonb.c:1455 utils/adt/jsonfuncs.c:3529 -#: utils/adt/jsonfuncs.c:3574 utils/adt/jsonfuncs.c:3621 +#: utils/adt/jsonb.c:1455 utils/adt/jsonfuncs.c:3529 utils/adt/jsonfuncs.c:3574 +#: utils/adt/jsonfuncs.c:3621 #, c-format msgid "wrong number of array subscripts" msgstr "número incorrecto de subíndices del array" @@ -18156,15 +17380,14 @@ msgid "updates on slices of fixed-length arrays not implemented" msgstr "no están implementadas las actualizaciones en segmentos de arrays de largo fija" #: utils/adt/arrayfuncs.c:2826 -#, fuzzy, c-format -#| msgid "array subscript must have type integer" +#, c-format msgid "array slice subscript must provide both boundaries" -msgstr "los subíndices de arrays deben tener tipo entero" +msgstr "los subíndices del segmento de array deben especificar ambos bordes" #: utils/adt/arrayfuncs.c:2827 #, c-format msgid "When assigning to a slice of an empty array value, slice boundaries must be fully specified." -msgstr "" +msgstr "Cuando se asigna a un segmento de un array vacío, los bordes del segmento deben ser especificados completamente." #: utils/adt/arrayfuncs.c:2838 utils/adt/arrayfuncs.c:2933 #, c-format @@ -18188,69 +17411,59 @@ msgid "could not identify a hash function for type %s" msgstr "no se pudo identificar una función de hash para el tipo %s" #: utils/adt/arrayfuncs.c:5154 -#, fuzzy, c-format +#, c-format msgid "data type %s is not an array type" -msgstr "el tipo de destino no es un array" +msgstr "el tipo %s no es un array" #: utils/adt/arrayfuncs.c:5209 -#, fuzzy, c-format +#, c-format msgid "cannot accumulate null arrays" -msgstr "no se pueden concatenar arrays incompatibles" +msgstr "no se pueden acumular arrays nulos" #: utils/adt/arrayfuncs.c:5237 -#, fuzzy, c-format +#, c-format msgid "cannot accumulate empty arrays" -msgstr "no se pueden concatenar arrays incompatibles" +msgstr "no se pueden acumular arrays vacíos" #: utils/adt/arrayfuncs.c:5266 utils/adt/arrayfuncs.c:5272 -#, fuzzy, c-format +#, c-format msgid "cannot accumulate arrays of different dimensionality" -msgstr "no se pueden comparar arrays con elementos de distintos tipos" +msgstr "no se pueden acumular arrays de distinta dimensionalidad" #: utils/adt/arrayfuncs.c:5638 utils/adt/arrayfuncs.c:5678 #, c-format msgid "dimension array or low bound array cannot be null" msgstr "el array de dimensiones o el array de límites inferiores debe ser no nulo" -#: utils/adt/arrayfuncs.c:5741 utils/adt/arrayfuncs.c:5773 +#: utils/adt/arrayfuncs.c:5741 utils/adt/arrayfuncs.c:5767 #, c-format msgid "Dimension array must be one dimensional." msgstr "El array de dimensiones debe ser unidimensional." -#: utils/adt/arrayfuncs.c:5746 utils/adt/arrayfuncs.c:5778 -#, c-format -msgid "wrong range of array subscripts" -msgstr "rango incorrecto en los subíndices del array" - -#: utils/adt/arrayfuncs.c:5747 utils/adt/arrayfuncs.c:5779 -#, c-format -msgid "Lower bound of dimension array must be one." -msgstr "El límite inferior del array de dimensiones debe ser uno." - -#: utils/adt/arrayfuncs.c:5752 utils/adt/arrayfuncs.c:5784 +#: utils/adt/arrayfuncs.c:5746 utils/adt/arrayfuncs.c:5772 #, c-format msgid "dimension values cannot be null" msgstr "los valores de dimensión no pueden ser null" -#: utils/adt/arrayfuncs.c:5790 +#: utils/adt/arrayfuncs.c:5778 #, c-format msgid "Low bound array has different size than dimensions array." msgstr "El array de límites inferiores tiene tamaño diferente que el array de dimensiones." -#: utils/adt/arrayfuncs.c:6036 +#: utils/adt/arrayfuncs.c:6024 #, c-format msgid "removing elements from multidimensional arrays is not supported" msgstr "la eliminación de elementos desde arrays multidimensionales no está soportada" -#: utils/adt/arrayfuncs.c:6313 -#, fuzzy, c-format +#: utils/adt/arrayfuncs.c:6301 +#, c-format msgid "thresholds must be one-dimensional array" -msgstr "el argumento debe ser vacío o un array unidimensional" +msgstr "los umbrales deben ser un array unidimensional" -#: utils/adt/arrayfuncs.c:6318 -#, fuzzy, c-format +#: utils/adt/arrayfuncs.c:6306 +#, c-format msgid "thresholds array must not contain NULLs" -msgstr "los arrays de typmod no deben contener valores nulos" +msgstr "el array de umbrales no debe contener nulos" #: utils/adt/arrayutils.c:209 #, c-format @@ -18290,8 +17503,7 @@ msgstr "la sintaxis de entrada no es válida para tipo money: «%s»" #: utils/adt/int.c:1097 utils/adt/int.c:1125 utils/adt/int8.c:597 #: utils/adt/int8.c:657 utils/adt/int8.c:897 utils/adt/int8.c:1005 #: utils/adt/int8.c:1094 utils/adt/int8.c:1202 utils/adt/numeric.c:6818 -#: utils/adt/numeric.c:7107 utils/adt/numeric.c:8120 -#: utils/adt/timestamp.c:3446 +#: utils/adt/numeric.c:7107 utils/adt/numeric.c:8120 utils/adt/timestamp.c:3542 #, c-format msgid "division by zero" msgstr "división por cero" @@ -18301,7 +17513,7 @@ msgstr "división por cero" msgid "\"char\" out of range" msgstr "«char» está fuera de rango" -#: utils/adt/date.c:67 utils/adt/timestamp.c:94 utils/adt/varbit.c:52 +#: utils/adt/date.c:67 utils/adt/timestamp.c:95 utils/adt/varbit.c:52 #: utils/adt/varchar.c:45 #, c-format msgid "invalid type modifier" @@ -18329,17 +17541,17 @@ msgid "date out of range: \"%s\"" msgstr "fecha fuera de rango: «%s»" #: utils/adt/date.c:222 utils/adt/date.c:456 utils/adt/date.c:480 -#: utils/adt/xml.c:2027 +#: utils/adt/xml.c:2031 #, c-format msgid "date out of range" msgstr "la fecha fuera de rango" -#: utils/adt/date.c:264 utils/adt/timestamp.c:593 +#: utils/adt/date.c:264 utils/adt/timestamp.c:594 #, c-format msgid "date field value out of range: %d-%02d-%02d" msgstr "un valor en el campo de fecha está fuera de rango: %d-%02d-%02d" -#: utils/adt/date.c:271 utils/adt/date.c:280 utils/adt/timestamp.c:599 +#: utils/adt/date.c:271 utils/adt/date.c:280 utils/adt/timestamp.c:600 #, c-format msgid "date out of range: %d-%02d-%02d" msgstr "fecha fuera de rango: %d-%02d-%02d" @@ -18361,28 +17573,28 @@ msgstr "fecha fuera de rango para timestamp" #: utils/adt/formatting.c:3436 utils/adt/formatting.c:3504 #: utils/adt/json.c:1534 utils/adt/json.c:1556 utils/adt/jsonb.c:823 #: utils/adt/jsonb.c:847 utils/adt/nabstime.c:455 utils/adt/nabstime.c:498 -#: utils/adt/nabstime.c:528 utils/adt/nabstime.c:571 utils/adt/timestamp.c:224 -#: utils/adt/timestamp.c:268 utils/adt/timestamp.c:726 -#: utils/adt/timestamp.c:735 utils/adt/timestamp.c:820 -#: utils/adt/timestamp.c:860 utils/adt/timestamp.c:3021 -#: utils/adt/timestamp.c:3042 utils/adt/timestamp.c:3055 -#: utils/adt/timestamp.c:3064 utils/adt/timestamp.c:3072 -#: utils/adt/timestamp.c:3127 utils/adt/timestamp.c:3150 -#: utils/adt/timestamp.c:3163 utils/adt/timestamp.c:3174 -#: utils/adt/timestamp.c:3182 utils/adt/timestamp.c:3756 -#: utils/adt/timestamp.c:3885 utils/adt/timestamp.c:3926 -#: utils/adt/timestamp.c:4014 utils/adt/timestamp.c:4060 -#: utils/adt/timestamp.c:4171 utils/adt/timestamp.c:4578 -#: utils/adt/timestamp.c:4694 utils/adt/timestamp.c:4704 -#: utils/adt/timestamp.c:4800 utils/adt/timestamp.c:4919 -#: utils/adt/timestamp.c:4929 utils/adt/timestamp.c:5250 -#: utils/adt/timestamp.c:5264 utils/adt/timestamp.c:5269 -#: utils/adt/timestamp.c:5283 utils/adt/timestamp.c:5366 -#: utils/adt/timestamp.c:5398 utils/adt/timestamp.c:5405 -#: utils/adt/timestamp.c:5431 utils/adt/timestamp.c:5435 -#: utils/adt/timestamp.c:5504 utils/adt/timestamp.c:5508 -#: utils/adt/timestamp.c:5522 utils/adt/timestamp.c:5560 utils/adt/xml.c:2049 -#: utils/adt/xml.c:2056 utils/adt/xml.c:2076 utils/adt/xml.c:2083 +#: utils/adt/nabstime.c:528 utils/adt/nabstime.c:571 utils/adt/timestamp.c:225 +#: utils/adt/timestamp.c:269 utils/adt/timestamp.c:727 +#: utils/adt/timestamp.c:736 utils/adt/timestamp.c:818 +#: utils/adt/timestamp.c:858 utils/adt/timestamp.c:3117 +#: utils/adt/timestamp.c:3138 utils/adt/timestamp.c:3151 +#: utils/adt/timestamp.c:3160 utils/adt/timestamp.c:3168 +#: utils/adt/timestamp.c:3223 utils/adt/timestamp.c:3246 +#: utils/adt/timestamp.c:3259 utils/adt/timestamp.c:3270 +#: utils/adt/timestamp.c:3278 utils/adt/timestamp.c:3852 +#: utils/adt/timestamp.c:3981 utils/adt/timestamp.c:4022 +#: utils/adt/timestamp.c:4110 utils/adt/timestamp.c:4156 +#: utils/adt/timestamp.c:4267 utils/adt/timestamp.c:4674 +#: utils/adt/timestamp.c:4790 utils/adt/timestamp.c:4800 +#: utils/adt/timestamp.c:4896 utils/adt/timestamp.c:5015 +#: utils/adt/timestamp.c:5025 utils/adt/timestamp.c:5277 +#: utils/adt/timestamp.c:5291 utils/adt/timestamp.c:5296 +#: utils/adt/timestamp.c:5310 utils/adt/timestamp.c:5359 +#: utils/adt/timestamp.c:5391 utils/adt/timestamp.c:5398 +#: utils/adt/timestamp.c:5424 utils/adt/timestamp.c:5428 +#: utils/adt/timestamp.c:5497 utils/adt/timestamp.c:5501 +#: utils/adt/timestamp.c:5515 utils/adt/timestamp.c:5553 utils/adt/xml.c:2053 +#: utils/adt/xml.c:2060 utils/adt/xml.c:2080 utils/adt/xml.c:2087 #, c-format msgid "timestamp out of range" msgstr "el timestamp está fuera de rango" @@ -18393,10 +17605,9 @@ msgid "cannot convert reserved abstime value to date" msgstr "no se puede convertir un valor reservado de abstime a date" #: utils/adt/date.c:1112 utils/adt/date.c:1118 -#, fuzzy, c-format -#| msgid "date out of range for timestamp" +#, c-format msgid "abstime out of range for date" -msgstr "fecha fuera de rango para timestamp" +msgstr "abstime fuera de rango para date" #: utils/adt/date.c:1258 utils/adt/date.c:1265 utils/adt/date.c:2082 #: utils/adt/date.c:2089 @@ -18404,7 +17615,7 @@ msgstr "fecha fuera de rango para timestamp" msgid "time out of range" msgstr "hora fuera de rango" -#: utils/adt/date.c:1326 utils/adt/timestamp.c:618 +#: utils/adt/date.c:1326 utils/adt/timestamp.c:619 #, c-format msgid "time field value out of range: %d:%02d:%02g" msgstr "un valor en el campo de hora está fuera de rango: %d:%02d:%02g" @@ -18425,14 +17636,14 @@ msgid "\"time with time zone\" units \"%s\" not recognized" msgstr "las unidades de «timestamp with time zone» «%s» no son reconocidas" #: utils/adt/date.c:2830 utils/adt/datetime.c:995 utils/adt/datetime.c:1917 -#: utils/adt/datetime.c:4743 utils/adt/timestamp.c:532 -#: utils/adt/timestamp.c:559 utils/adt/timestamp.c:5275 -#: utils/adt/timestamp.c:5514 +#: utils/adt/datetime.c:4743 utils/adt/timestamp.c:533 +#: utils/adt/timestamp.c:560 utils/adt/timestamp.c:5302 +#: utils/adt/timestamp.c:5507 #, c-format msgid "time zone \"%s\" not recognized" msgstr "el huso horario «%s» no es reconocido" -#: utils/adt/date.c:2870 utils/adt/timestamp.c:5351 utils/adt/timestamp.c:5545 +#: utils/adt/date.c:2870 utils/adt/timestamp.c:5344 utils/adt/timestamp.c:5538 #, c-format msgid "interval time zone \"%s\" must not include months or days" msgstr "el intervalo de huso horario «%s» no debe especificar meses o días" @@ -18485,24 +17696,21 @@ msgid "could not open tablespace directory \"%s\": %m" msgstr "no se pudo abrir el directorio de tablespace «%s»: %m" #: utils/adt/dbsize.c:757 utils/adt/dbsize.c:825 -#, fuzzy, c-format -#| msgid "invalid cidr value: \"%s\"" +#, c-format msgid "invalid size: \"%s\"" -msgstr "valor cidr no válido: «%s»" +msgstr "tamaño no válido: «%s»" #: utils/adt/dbsize.c:826 -#, fuzzy, c-format -#| msgid "invalid time zone name: \"%s\"" +#, c-format msgid "Invalid size unit: \"%s\"." -msgstr "nombre de huso horario no válido: «%s»" +msgstr "Nombre de unidad de tamaño no válido: «%s»." #: utils/adt/dbsize.c:827 -#, fuzzy, c-format -#| msgid "Valid units for this parameter are \"kB\", \"MB\", \"GB\", and \"TB\"." +#, c-format msgid "Valid units are \"bytes\", \"kB\", \"MB\", \"GB\", and \"TB\"." -msgstr "Unidades válidas para este parámetro son «kB», «MB», «GB» y «TB»." +msgstr "Unidades válidas son «bytes«, «kB», «MB», «GB» y «TB»." -#: utils/adt/domains.c:85 +#: utils/adt/domains.c:86 #, c-format msgid "type %s is not a domain" msgstr "tipo «%s» no es un dominio" @@ -18525,22 +17733,22 @@ msgstr "el dato hexadecimal no es válido: tiene un número impar de dígitos" #: utils/adt/encode.c:295 #, c-format msgid "unexpected \"=\" while decoding base64 sequence" -msgstr "" +msgstr "«=» inesperado mientras se decodificaba la secuencia base64" #: utils/adt/encode.c:307 -#, fuzzy, c-format +#, c-format msgid "invalid symbol \"%c\" while decoding base64 sequence" -msgstr "la codificación de origen «%s» no es válida" +msgstr "símbolo «%c» no válido al decodificar secuencia base64" #: utils/adt/encode.c:327 -#, fuzzy, c-format +#, c-format msgid "invalid base64 end sequence" -msgstr "secuencia de término no válida" +msgstr "secuencia de término base64 no válida" #: utils/adt/encode.c:328 #, c-format msgid "Input data is missing padding, is truncated, or is otherwise corrupted." -msgstr "" +msgstr "A los datos de entrada les falta relleno, o están truncados, o están corruptos de alguna otra forma." #: utils/adt/encode.c:442 utils/adt/encode.c:507 utils/adt/varlena.c:297 #: utils/adt/varlena.c:338 @@ -18759,7 +17967,7 @@ msgstr "no se pudo determinar qué ordenamiento (collation) usar para la funció #: utils/adt/formatting.c:2114 #, c-format msgid "invalid combination of date conventions" -msgstr "combinacion invalida de convenciones de fecha" +msgstr "combinación no válida de convenciones de fecha" #: utils/adt/formatting.c:2115 #, c-format @@ -19006,7 +18214,7 @@ msgid "oidvector has too many elements" msgstr "el oidvector tiene demasiados elementos" #: utils/adt/int.c:1362 utils/adt/int8.c:1460 utils/adt/numeric.c:1351 -#: utils/adt/timestamp.c:5611 utils/adt/timestamp.c:5692 +#: utils/adt/timestamp.c:5604 utils/adt/timestamp.c:5685 #, c-format msgid "step size cannot equal zero" msgstr "el tamaño de paso no puede ser cero" @@ -19031,7 +18239,7 @@ msgstr "el valor «%s» está fuera de rango para el tipo bigint" #: utils/adt/int8.c:1052 utils/adt/int8.c:1079 utils/adt/int8.c:1112 #: utils/adt/int8.c:1140 utils/adt/int8.c:1161 utils/adt/int8.c:1188 #: utils/adt/int8.c:1361 utils/adt/int8.c:1400 utils/adt/numeric.c:2955 -#: utils/adt/varbit.c:1645 +#: utils/adt/varbit.c:1655 #, c-format msgid "bigint out of range" msgstr "bigint está fuera de rango" @@ -19153,14 +18361,11 @@ msgstr "Datos JSON, línea %d: %s%s%s" msgid "key value must be scalar, not array, composite, or json" msgstr "el valor de llave debe ser escalar, no array, composite o json" -#: utils/adt/json.c:2006 -#, fuzzy, c-format -msgid "could not determine data type for argument 1" -msgstr "no se pudo determinar el tipo de dato para el argumento %d" - -#: utils/adt/json.c:2016 -#, fuzzy, c-format -msgid "could not determine data type for argument 2" +#: utils/adt/json.c:2006 utils/adt/json.c:2016 utils/adt/json.c:2142 +#: utils/adt/json.c:2163 utils/adt/json.c:2222 utils/adt/jsonb.c:1214 +#: utils/adt/jsonb.c:1237 utils/adt/jsonb.c:1297 +#, c-format +msgid "could not determine data type for argument %d" msgstr "no se pudo determinar el tipo de dato para el argumento %d" #: utils/adt/json.c:2040 utils/adt/jsonb.c:1781 @@ -19178,11 +18383,6 @@ msgstr "la lista de argumentos debe tener un número par de elementos" msgid "The arguments of json_build_object() must consist of alternating keys and values." msgstr "Los argumentos de json_build_object() deben consistir de llaves y valores alternados." -#: utils/adt/json.c:2142 utils/adt/json.c:2163 utils/adt/json.c:2222 -#, c-format -msgid "could not determine data type for argument %d" -msgstr "no se pudo determinar el tipo de dato para el argumento %d" - #: utils/adt/json.c:2148 #, c-format msgid "argument %d cannot be null" @@ -19220,26 +18420,19 @@ msgid "Due to an implementation restriction, jsonb strings cannot exceed %d byte msgstr "Debido a una restricción de la implementación, las cadenas en jsonb no pueden exceder los %d bytes." #: utils/adt/jsonb.c:1182 -#, fuzzy, c-format -#| msgid "invalid number of points in external \"path\" value" +#, c-format msgid "invalid number of arguments: object must be matched key value pairs" -msgstr "el número de puntos no es válido en el valor «path» externo" +msgstr "número no válido de argumentos: los objetos deben formar pares llave/valor" #: utils/adt/jsonb.c:1195 -#, fuzzy, c-format -#| msgid "argument %d cannot be null" +#, c-format msgid "argument %d: key must not be null" -msgstr "el argumento %d no puede ser null" - -#: utils/adt/jsonb.c:1214 utils/adt/jsonb.c:1237 utils/adt/jsonb.c:1297 -#, fuzzy, c-format -msgid "argument %d: could not determine data type" -msgstr "no se pudo determinar el tipo de dato de entrada" +msgstr "argumento %d: la llave no puede ser null" #: utils/adt/jsonb.c:1834 -#, fuzzy, c-format +#, c-format msgid "object keys must be strings" -msgstr "Las llaves de un objeto deben ser de texto." +msgstr "las llaves de un objeto deben ser cadenas" #: utils/adt/jsonb_util.c:656 #, c-format @@ -19342,58 +18535,56 @@ msgid "cannot call %s on an object" msgstr "no se puede invocar %s en un objeto" #: utils/adt/jsonfuncs.c:3410 utils/adt/jsonfuncs.c:3463 -#, fuzzy, c-format +#, c-format msgid "cannot delete from scalar" -msgstr "no se puede eliminar de la vista «%s»" +msgstr "no se puede eliminar de un escalar" #: utils/adt/jsonfuncs.c:3468 -#, fuzzy, c-format +#, c-format msgid "cannot delete from object using integer index" -msgstr "no se puede eliminar desde la tabla foránea «%s»" +msgstr "no se puede eliminar de un objeto usando un índice numérico" #: utils/adt/jsonfuncs.c:3534 utils/adt/jsonfuncs.c:3626 -#, fuzzy, c-format +#, c-format msgid "cannot set path in scalar" -msgstr "no se puede obtener el largo de array de un escalar" +msgstr "no se puede definir una ruta en un escalar" #: utils/adt/jsonfuncs.c:3579 -#, fuzzy, c-format +#, c-format msgid "cannot delete path in scalar" -msgstr "no se puede desconstruir un escalar" +msgstr "no se puede eliminar una ruta en un escalar" #: utils/adt/jsonfuncs.c:3749 -#, fuzzy, c-format +#, c-format msgid "invalid concatenation of jsonb objects" -msgstr "combinacion invalida de convenciones de fecha" +msgstr "concatenación no válida de objetos jsonb" #: utils/adt/jsonfuncs.c:3783 #, c-format msgid "path element at position %d is null" -msgstr "" +msgstr "el elemento en la posición %d de la ruta es null" #: utils/adt/jsonfuncs.c:3869 -#, fuzzy, c-format -#| msgid "cannot execute %s during recovery" +#, c-format msgid "cannot replace existing key" -msgstr "no se puede ejecutar %s durante la recuperación" +msgstr "no se puede reemplazar una llave existente" #: utils/adt/jsonfuncs.c:3870 #, c-format msgid "Try using the function jsonb_set to replace key value." -msgstr "" +msgstr "Intente usar la función jsonb_set para reemplazar el valor de la llave." #: utils/adt/jsonfuncs.c:3952 -#, fuzzy, c-format -#| msgid "plpy.prepare: type name at ordinal position %d is not a string" +#, c-format msgid "path element at position %d is not an integer: \"%s\"" -msgstr "plpy.prepare: el nombre de tipo en la posición %d no es una cadena" +msgstr "el elemento de ruta en la posición %d no es un entero: «%s»" #: utils/adt/levenshtein.c:133 -#, fuzzy, c-format +#, c-format msgid "levenshtein argument exceeds maximum length of %d characters" -msgstr "el tamaño total de los elementos del array jsonb excede el máximo de %u bytes" +msgstr "el argumento levenshtein excede el largo máximo de %d caracteres" -#: utils/adt/like.c:212 utils/adt/selfuncs.c:5333 +#: utils/adt/like.c:212 utils/adt/selfuncs.c:5433 #, c-format msgid "could not determine which collation to use for ILIKE" msgstr "no se pudo determinar qué ordenamiento (collation) usar para ILIKE" @@ -19416,7 +18607,7 @@ msgstr "La cadena de escape debe ser vacía o un carácter." #: utils/adt/lockfuncs.c:545 #, c-format msgid "cannot use advisory locks during a parallel operation" -msgstr "" +msgstr "no se pueden usar locks consultivos durante una operación paralela" #: utils/adt/mac.c:68 #, c-format @@ -19434,24 +18625,24 @@ msgid "PID %d is not a PostgreSQL server process" msgstr "PID %d no es un proceso servidor de PostgreSQL" #: utils/adt/misc.c:290 -#, fuzzy, c-format +#, c-format msgid "must be a superuser to cancel superuser query" -msgstr "debe ser superusuario para crear superusuarios" +msgstr "debe ser superusuario para cancelar una consulta de superusuario" #: utils/adt/misc.c:295 -#, fuzzy, c-format +#, c-format msgid "must be a member of the role whose query is being canceled or member of pg_signal_backend" -msgstr "el tabla «%s» no es un miembro de la extensión que se está creando" +msgstr "debe ser miembro del rol cuya consulta se está cancelando o ser miembro de pg_signal_backend" #: utils/adt/misc.c:314 -#, fuzzy, c-format +#, c-format msgid "must be a superuser to terminate superuser process" -msgstr "debe ser superusuario para crear superusuarios" +msgstr "debe ser superusuario para terminar proceso de superusuario" #: utils/adt/misc.c:319 -#, fuzzy, c-format +#, c-format msgid "must be a member of the role whose process is being terminated or member of pg_signal_backend" -msgstr "el tabla «%s» no es un miembro de la extensión que se está creando" +msgstr "debe ser miembro del rol cuyo proceso se está terminando o ser miembro de pg_signal_backend" #: utils/adt/misc.c:336 #, c-format @@ -19491,33 +18682,29 @@ msgstr "reservado" #: utils/adt/misc.c:797 utils/adt/misc.c:811 utils/adt/misc.c:850 #: utils/adt/misc.c:856 utils/adt/misc.c:862 utils/adt/misc.c:885 -#, fuzzy, c-format -#| msgid "invalid snapshot identifier: \"%s\"" +#, c-format msgid "string is not a valid identifier: \"%s\"" -msgstr "identificador de snapshot no válido: «%s»" +msgstr "la cadena no es un identificador válido: «%s»" #: utils/adt/misc.c:799 #, c-format msgid "String has unclosed double quotes." -msgstr "" +msgstr "La cadena tiene comillas dobles sin cerrar." #: utils/adt/misc.c:813 -#, fuzzy, c-format -#| msgid "Extension names must not be empty." +#, c-format msgid "Quoted identifier must not be empty." -msgstr "Los nombres de extensión no deben ser vacíos." +msgstr "El identificador en comillas no debe ser vacío." #: utils/adt/misc.c:852 -#, fuzzy, c-format -#| msgid "invalid snapshot identifier: \"%s\"" +#, c-format msgid "No valid identifier before \".\"." -msgstr "identificador de snapshot no válido: «%s»" +msgstr "No hay un identificador válido antes de «.»." #: utils/adt/misc.c:858 -#, fuzzy, c-format -#| msgid "invalid snapshot identifier: \"%s\"" +#, c-format msgid "No valid identifier after \".\"." -msgstr "identificador de snapshot no válido: «%s»" +msgstr "No hay un identificador válido después de «.»." #: utils/adt/nabstime.c:136 #, c-format @@ -19594,9 +18781,9 @@ msgid "could not format cidr value: %m" msgstr "no se pudo dar formato al valor cidr: %m" #: utils/adt/network.c:917 -#, fuzzy, c-format +#, c-format msgid "cannot merge addresses from different families" -msgstr "no se puede hacer OR entre valores inet de distintos tamaños" +msgstr "no se pueden mezclar direcciones de familias diferentes" #: utils/adt/network.c:1343 #, c-format @@ -19655,19 +18842,19 @@ msgid "invalid NUMERIC type modifier" msgstr "modificador de tipo NUMERIC no es válido" #: utils/adt/numeric.c:1329 -#, fuzzy, c-format +#, c-format msgid "start value cannot be NaN" -msgstr "el timestamp no puede ser NaN" +msgstr "el valor de inicio no puede ser NaN" #: utils/adt/numeric.c:1334 -#, fuzzy, c-format +#, c-format msgid "stop value cannot be NaN" -msgstr "el timestamp no puede ser NaN" +msgstr "el valor de término no puede ser NaN" #: utils/adt/numeric.c:1344 -#, fuzzy, c-format +#, c-format msgid "step size cannot be NaN" -msgstr "el tamaño de paso no puede ser cero" +msgstr "el tamaño de paso no puede ser NaN" #: utils/adt/numeric.c:2539 utils/adt/numeric.c:5467 utils/adt/numeric.c:5912 #: utils/adt/numeric.c:7616 utils/adt/numeric.c:8041 utils/adt/numeric.c:8156 @@ -19762,37 +18949,37 @@ msgstr "el carácter nulo no está permitido" msgid "percentile value %g is not between 0 and 1" msgstr "el valor de percentil %g no está entre 0 y 1" -#: utils/adt/pg_locale.c:917 +#: utils/adt/pg_locale.c:1029 #, c-format msgid "Apply system library package updates." -msgstr "" +msgstr "Aplique actualizaciones de paquetes de bibliotecas del sistema." -#: utils/adt/pg_locale.c:1122 +#: utils/adt/pg_locale.c:1234 #, c-format msgid "could not create locale \"%s\": %m" msgstr "no se pudo crear la configuración regional «%s»: %m" -#: utils/adt/pg_locale.c:1125 +#: utils/adt/pg_locale.c:1237 #, c-format msgid "The operating system could not find any locale data for the locale name \"%s\"." msgstr "El sistema operativo no pudo encontrar datos de configuración regional para la configuración «%s»." -#: utils/adt/pg_locale.c:1212 +#: utils/adt/pg_locale.c:1324 #, c-format msgid "collations with different collate and ctype values are not supported on this platform" msgstr "los ordenamientos (collation) con valores collate y ctype diferentes no están soportados en esta plataforma" -#: utils/adt/pg_locale.c:1227 +#: utils/adt/pg_locale.c:1339 #, c-format msgid "nondefault collations are not supported on this platform" msgstr "los ordenamientos (collation) distintos del ordenamiento por omisión no están soportados en esta plataforma" -#: utils/adt/pg_locale.c:1398 +#: utils/adt/pg_locale.c:1510 #, c-format msgid "invalid multibyte character for locale" msgstr "el carácter multibyte no es válido para esta configuración regional" -#: utils/adt/pg_locale.c:1399 +#: utils/adt/pg_locale.c:1511 #, c-format msgid "The server's LC_CTYPE locale is probably incompatible with the database encoding." msgstr "La configuración regional LC_CTYPE del servidor es probablemente incompatible con la codificación de la base de datos." @@ -19803,15 +18990,14 @@ msgid "invalid input syntax for type pg_lsn: \"%s\"" msgstr "la sintaxis de entrada no es válida para tipo pg_lsn: «%s»" #: utils/adt/pg_upgrade_support.c:40 -#, fuzzy, c-format +#, c-format msgid "function can only be called when server is in binary upgrade mode" -msgstr "debe ser superusuario para conectarse en modo de actualización binaria" +msgstr "la función sólo puede invocarse cuando el servidor está en modo de actualización binaria" #: utils/adt/pgstatfuncs.c:571 -#, fuzzy, c-format -#| msgid "invalid locale name: \"%s\"" +#, c-format msgid "invalid command name: \"%s\"" -msgstr "nombre de configuración regional no válido: «%s»" +msgstr "nombre de orden no válido: «%s»" #: utils/adt/pseudotypes.c:95 #, c-format @@ -19879,24 +19065,24 @@ msgid "cannot display a value of type fdw_handler" msgstr "no se puede desplegar un valor de tipo fdw_handler" #: utils/adt/pseudotypes.c:384 -#, fuzzy, c-format +#, c-format msgid "cannot accept a value of type index_am_handler" -msgstr "no se puede aceptar un valor de tipo fdw_handler" +msgstr "no se puede aceptar un valor de tipo index_am_handler" #: utils/adt/pseudotypes.c:397 -#, fuzzy, c-format +#, c-format msgid "cannot display a value of type index_am_handler" -msgstr "no se puede desplegar un valor de tipo fdw_handler" +msgstr "no se puede desplegar un valor de tipo index_am_handler" #: utils/adt/pseudotypes.c:411 -#, fuzzy, c-format +#, c-format msgid "cannot accept a value of type tsm_handler" -msgstr "no se puede aceptar un valor de tipo fdw_handler" +msgstr "no se puede aceptar un valor de tipo tsm_handler" #: utils/adt/pseudotypes.c:424 -#, fuzzy, c-format +#, c-format msgid "cannot display a value of type tsm_handler" -msgstr "no se puede desplegar un valor de tipo fdw_handler" +msgstr "no se puede desplegar un valor de tipo tsm_handler" #: utils/adt/pseudotypes.c:438 #, c-format @@ -19950,14 +19136,14 @@ msgstr "no se puede desplegar un valor de un tipo inconcluso" #: utils/adt/pseudotypes.c:579 utils/adt/pseudotypes.c:604 #: utils/adt/pseudotypes.c:632 utils/adt/pseudotypes.c:660 -#, fuzzy, c-format +#, c-format msgid "cannot accept a value of type %s" -msgstr "no se puede aceptar un valor de tipo any" +msgstr "no se puede aceptar un valor de tipo %s" #: utils/adt/pseudotypes.c:647 utils/adt/pseudotypes.c:673 -#, fuzzy, c-format +#, c-format msgid "cannot output a value of type %s" -msgstr "no se puede aceptar un valor de tipo any" +msgstr "no se puede desplegar un valor de tipo %s" #: utils/adt/rangetypes.c:405 #, c-format @@ -20039,121 +19225,142 @@ msgstr "la opción de expresión regular no es válida: «%c»" msgid "regexp_split does not support the global option" msgstr "regex_split no soporta la opción «global»" -#: utils/adt/regproc.c:128 utils/adt/regproc.c:148 +#: utils/adt/regproc.c:129 utils/adt/regproc.c:149 #, c-format msgid "more than one function named \"%s\"" msgstr "existe más de una función llamada «%s»" -#: utils/adt/regproc.c:587 utils/adt/regproc.c:607 +#: utils/adt/regproc.c:588 utils/adt/regproc.c:608 #, c-format msgid "more than one operator named %s" msgstr "existe más de un operador llamado %s" -#: utils/adt/regproc.c:779 utils/adt/regproc.c:820 utils/adt/regproc.c:2006 -#: utils/adt/ruleutils.c:8364 utils/adt/ruleutils.c:8533 +#: utils/adt/regproc.c:775 utils/adt/regproc.c:816 gram.y:7311 +#, c-format +msgid "missing argument" +msgstr "falta un argumento" + +#: utils/adt/regproc.c:776 utils/adt/regproc.c:817 gram.y:7312 +#, c-format +msgid "Use NONE to denote the missing argument of a unary operator." +msgstr "Use NONE para denotar el argumento faltante de un operador unario." + +#: utils/adt/regproc.c:780 utils/adt/regproc.c:821 utils/adt/regproc.c:2007 +#: utils/adt/ruleutils.c:8453 utils/adt/ruleutils.c:8622 #, c-format msgid "too many arguments" msgstr "demasiados argumentos" -#: utils/adt/regproc.c:780 utils/adt/regproc.c:821 +#: utils/adt/regproc.c:781 utils/adt/regproc.c:822 #, c-format msgid "Provide two argument types for operator." msgstr "Provea dos tipos de argumento para un operador." -#: utils/adt/regproc.c:1594 utils/adt/regproc.c:1618 utils/adt/regproc.c:1715 -#: utils/adt/regproc.c:1739 utils/adt/regproc.c:1841 utils/adt/regproc.c:1846 +#: utils/adt/regproc.c:1595 utils/adt/regproc.c:1619 utils/adt/regproc.c:1716 +#: utils/adt/regproc.c:1740 utils/adt/regproc.c:1842 utils/adt/regproc.c:1847 #: utils/adt/varlena.c:3084 utils/adt/varlena.c:3089 #, c-format msgid "invalid name syntax" msgstr "la sintaxis de nombre no es válida" -#: utils/adt/regproc.c:1904 +#: utils/adt/regproc.c:1905 #, c-format msgid "expected a left parenthesis" msgstr "se esperaba un paréntesis izquierdo" -#: utils/adt/regproc.c:1920 +#: utils/adt/regproc.c:1921 #, c-format msgid "expected a right parenthesis" msgstr "se esperaba un paréntesis derecho" -#: utils/adt/regproc.c:1939 +#: utils/adt/regproc.c:1940 #, c-format msgid "expected a type name" msgstr "se esperaba un nombre de tipo" -#: utils/adt/regproc.c:1971 +#: utils/adt/regproc.c:1972 #, c-format msgid "improper type name" msgstr "el nombre de tipo no es válido" -#: utils/adt/ri_triggers.c:345 utils/adt/ri_triggers.c:2492 -#: utils/adt/ri_triggers.c:3317 +#: utils/adt/ri_triggers.c:314 utils/adt/ri_triggers.c:371 +#: utils/adt/ri_triggers.c:790 utils/adt/ri_triggers.c:1013 +#: utils/adt/ri_triggers.c:1169 utils/adt/ri_triggers.c:1350 +#: utils/adt/ri_triggers.c:1515 utils/adt/ri_triggers.c:1691 +#: utils/adt/ri_triggers.c:1871 utils/adt/ri_triggers.c:2062 +#: utils/adt/ri_triggers.c:2120 utils/adt/ri_triggers.c:2225 +#: utils/adt/ri_triggers.c:2402 gram.y:3351 +#, c-format +msgid "MATCH PARTIAL not yet implemented" +msgstr "MATCH PARTIAL no está implementada" + +#: utils/adt/ri_triggers.c:343 utils/adt/ri_triggers.c:2490 +#: utils/adt/ri_triggers.c:3315 #, c-format msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\"" msgstr "inserción o actualización en la tabla «%s» viola la llave foránea «%s»" -#: utils/adt/ri_triggers.c:348 utils/adt/ri_triggers.c:2495 +#: utils/adt/ri_triggers.c:346 utils/adt/ri_triggers.c:2493 #, c-format msgid "MATCH FULL does not allow mixing of null and nonnull key values." msgstr "MATCH FULL no permite la mezcla de valores de clave nulos y no nulos." -#: utils/adt/ri_triggers.c:2734 +#: utils/adt/ri_triggers.c:2732 #, c-format msgid "function \"%s\" must be fired for INSERT" msgstr "la función «%s» debe ser ejecutada en INSERT" -#: utils/adt/ri_triggers.c:2740 +#: utils/adt/ri_triggers.c:2738 #, c-format msgid "function \"%s\" must be fired for UPDATE" msgstr "la función «%s» debe ser ejecutada en UPDATE" -#: utils/adt/ri_triggers.c:2746 +#: utils/adt/ri_triggers.c:2744 #, c-format msgid "function \"%s\" must be fired for DELETE" msgstr "la función «%s» debe ser ejecutada en DELETE" -#: utils/adt/ri_triggers.c:2769 +#: utils/adt/ri_triggers.c:2767 #, c-format msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\"" msgstr "no hay una entrada en pg_constraint para el trigger «%s» en tabla «%s»" -#: utils/adt/ri_triggers.c:2771 +#: utils/adt/ri_triggers.c:2769 #, c-format msgid "Remove this referential integrity trigger and its mates, then do ALTER TABLE ADD CONSTRAINT." msgstr "Elimine este trigger de integridad referencial y sus pares, y utilice ALTER TABLE ADD CONSTRAINT." -#: utils/adt/ri_triggers.c:3227 +#: utils/adt/ri_triggers.c:3225 #, c-format msgid "referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave unexpected result" msgstr "la consulta de integridad referencial en «%s» de la restricción «%s» en «%s» entregó un resultado inesperado" -#: utils/adt/ri_triggers.c:3231 +#: utils/adt/ri_triggers.c:3229 #, c-format msgid "This is most likely due to a rule having rewritten the query." msgstr "Esto probablemente es causado por una regla que reescribió la consulta." -#: utils/adt/ri_triggers.c:3321 +#: utils/adt/ri_triggers.c:3319 #, c-format msgid "Key (%s)=(%s) is not present in table \"%s\"." msgstr "La llave (%s)=(%s) no está presente en la tabla «%s»." -#: utils/adt/ri_triggers.c:3324 +#: utils/adt/ri_triggers.c:3322 #, c-format msgid "Key is not present in table \"%s\"." msgstr "La llave no está presente en la tabla «%s»." -#: utils/adt/ri_triggers.c:3330 +#: utils/adt/ri_triggers.c:3328 #, c-format msgid "update or delete on table \"%s\" violates foreign key constraint \"%s\" on table \"%s\"" msgstr "update o delete en «%s» viola la llave foránea «%s» en la tabla «%s»" -#: utils/adt/ri_triggers.c:3335 +#: utils/adt/ri_triggers.c:3333 #, c-format msgid "Key (%s)=(%s) is still referenced from table \"%s\"." msgstr "La llave (%s)=(%s) todavía es referida desde la tabla «%s»." -#: utils/adt/ri_triggers.c:3338 +#: utils/adt/ri_triggers.c:3336 #, c-format msgid "Key is still referenced from table \"%s\"." msgstr "La llave todavía es referida desde la tabla «%s»." @@ -20204,29 +19411,29 @@ msgstr "tipo de dato erróneo: %u, se esperaba %u" msgid "improper binary format in record column %d" msgstr "formato binario incorrecto en la columna record %d" -#: utils/adt/rowtypes.c:902 utils/adt/rowtypes.c:1142 -#: utils/adt/rowtypes.c:1396 utils/adt/rowtypes.c:1673 +#: utils/adt/rowtypes.c:902 utils/adt/rowtypes.c:1142 utils/adt/rowtypes.c:1396 +#: utils/adt/rowtypes.c:1673 #, c-format msgid "cannot compare dissimilar column types %s and %s at record column %d" msgstr "no se pueden comparar los tipos de columnas disímiles %s y %s en la columna %d" -#: utils/adt/rowtypes.c:991 utils/adt/rowtypes.c:1213 -#: utils/adt/rowtypes.c:1529 utils/adt/rowtypes.c:1769 +#: utils/adt/rowtypes.c:991 utils/adt/rowtypes.c:1213 utils/adt/rowtypes.c:1529 +#: utils/adt/rowtypes.c:1769 #, c-format msgid "cannot compare record types with different numbers of columns" msgstr "no se pueden comparar registros con cantidad distinta de columnas" -#: utils/adt/ruleutils.c:4286 +#: utils/adt/ruleutils.c:4297 #, c-format msgid "rule \"%s\" has unsupported event type %d" msgstr "la regla «%s» tiene el tipo de evento no soportado %d" -#: utils/adt/selfuncs.c:5318 +#: utils/adt/selfuncs.c:5418 #, c-format msgid "case insensitive matching not supported on type bytea" msgstr "no está soportada la comparación insensible a mayúsculas en bytea" -#: utils/adt/selfuncs.c:5421 +#: utils/adt/selfuncs.c:5521 #, c-format msgid "regular-expression matching not supported on type bytea" msgstr "no está soportada la comparación con expresiones regulares en bytea" @@ -20236,138 +19443,136 @@ msgstr "no está soportada la comparación con expresiones regulares en bytea" msgid "invalid input syntax for type tid: \"%s\"" msgstr "la sintaxis de entrada no es válida para tipo tid: «%s»" -#: utils/adt/timestamp.c:99 +#: utils/adt/timestamp.c:100 #, c-format msgid "TIMESTAMP(%d)%s precision must not be negative" msgstr "la precisión de TIMESTAMP(%d)%s no debe ser negativa" -#: utils/adt/timestamp.c:105 +#: utils/adt/timestamp.c:106 #, c-format msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d" msgstr "la precisión de TIMESTAMP(%d)%s fue reducida al máximo permitido, %d" -#: utils/adt/timestamp.c:170 utils/adt/timestamp.c:445 +#: utils/adt/timestamp.c:171 utils/adt/timestamp.c:446 #, c-format msgid "timestamp out of range: \"%s\"" msgstr "timestamp fuera de rango: «%s»" -#: utils/adt/timestamp.c:188 utils/adt/timestamp.c:463 -#: utils/adt/timestamp.c:993 +#: utils/adt/timestamp.c:189 utils/adt/timestamp.c:464 +#: utils/adt/timestamp.c:991 #, c-format msgid "date/time value \"%s\" is no longer supported" msgstr "el valor de date/time «%s» ya no está soportado" -#: utils/adt/timestamp.c:258 utils/adt/timestamp.c:754 +#: utils/adt/timestamp.c:259 utils/adt/timestamp.c:755 #, c-format msgid "timestamp cannot be NaN" msgstr "el timestamp no puede ser NaN" -#: utils/adt/timestamp.c:380 +#: utils/adt/timestamp.c:381 #, c-format msgid "timestamp(%d) precision must be between %d and %d" msgstr "la precisión de timestamp(%d) debe estar entre %d y %d" -#: utils/adt/timestamp.c:513 +#: utils/adt/timestamp.c:514 #, c-format msgid "invalid input syntax for numeric time zone: \"%s\"" msgstr "la sintaxis de entrada no es válida para el huso horario numérico: «%s»" -#: utils/adt/timestamp.c:515 +#: utils/adt/timestamp.c:516 #, c-format msgid "Numeric time zones must have \"-\" or \"+\" as first character." msgstr "Los husos horarios numéricos deben tener «-» o «+» como su primer carácter." -#: utils/adt/timestamp.c:528 +#: utils/adt/timestamp.c:529 #, c-format msgid "numeric time zone \"%s\" out of range" msgstr "el huso horario numérico «%s» está fuera de rango" -#: utils/adt/timestamp.c:631 utils/adt/timestamp.c:641 -#: utils/adt/timestamp.c:653 +#: utils/adt/timestamp.c:632 utils/adt/timestamp.c:642 +#: utils/adt/timestamp.c:654 #, c-format msgid "timestamp out of range: %d-%02d-%02d %d:%02d:%02g" msgstr "timestamp fuera de rango: %d-%02d-%02d %d:%02d:%02g" -#: utils/adt/timestamp.c:770 utils/adt/timestamp.c:776 -#: utils/adt/timestamp.c:791 -#, fuzzy, c-format -#| msgid "timestamp out of range: \"%s\"" +#: utils/adt/timestamp.c:773 utils/adt/timestamp.c:789 +#, c-format msgid "timestamp out of range: \"%g\"" -msgstr "timestamp fuera de rango: «%s»" - -#: utils/adt/timestamp.c:987 utils/adt/timestamp.c:1558 -#: utils/adt/timestamp.c:2068 utils/adt/timestamp.c:3220 -#: utils/adt/timestamp.c:3225 utils/adt/timestamp.c:3230 -#: utils/adt/timestamp.c:3280 utils/adt/timestamp.c:3287 -#: utils/adt/timestamp.c:3294 utils/adt/timestamp.c:3314 -#: utils/adt/timestamp.c:3321 utils/adt/timestamp.c:3328 -#: utils/adt/timestamp.c:3358 utils/adt/timestamp.c:3366 -#: utils/adt/timestamp.c:3411 utils/adt/timestamp.c:3751 -#: utils/adt/timestamp.c:3880 utils/adt/timestamp.c:4271 +msgstr "timestamp fuera de rango: «%g»" + +#: utils/adt/timestamp.c:985 utils/adt/timestamp.c:1609 +#: utils/adt/timestamp.c:2122 utils/adt/timestamp.c:3316 +#: utils/adt/timestamp.c:3321 utils/adt/timestamp.c:3326 +#: utils/adt/timestamp.c:3376 utils/adt/timestamp.c:3383 +#: utils/adt/timestamp.c:3390 utils/adt/timestamp.c:3410 +#: utils/adt/timestamp.c:3417 utils/adt/timestamp.c:3424 +#: utils/adt/timestamp.c:3454 utils/adt/timestamp.c:3462 +#: utils/adt/timestamp.c:3507 utils/adt/timestamp.c:3847 +#: utils/adt/timestamp.c:3976 utils/adt/timestamp.c:4367 #, c-format msgid "interval out of range" msgstr "interval fuera de rango" -#: utils/adt/timestamp.c:1128 utils/adt/timestamp.c:1161 +#: utils/adt/timestamp.c:1126 utils/adt/timestamp.c:1159 #, c-format msgid "invalid INTERVAL type modifier" msgstr "modificador de tipo INTERVAL no válido" -#: utils/adt/timestamp.c:1144 +#: utils/adt/timestamp.c:1142 #, c-format msgid "INTERVAL(%d) precision must not be negative" msgstr "la precisión de INTERVAL(%d) no debe ser negativa" -#: utils/adt/timestamp.c:1150 +#: utils/adt/timestamp.c:1148 #, c-format msgid "INTERVAL(%d) precision reduced to maximum allowed, %d" msgstr "la precisión de INTERVAL(%d) fue reducida al máximo permitido, %d" -#: utils/adt/timestamp.c:1502 +#: utils/adt/timestamp.c:1553 #, c-format msgid "interval(%d) precision must be between %d and %d" msgstr "la precisión de interval(%d) debe estar entre %d y %d" -#: utils/adt/timestamp.c:2797 +#: utils/adt/timestamp.c:2893 #, c-format msgid "cannot subtract infinite timestamps" msgstr "no se pueden restar timestamps infinitos" -#: utils/adt/timestamp.c:4006 utils/adt/timestamp.c:4531 -#: utils/adt/timestamp.c:4715 utils/adt/timestamp.c:4740 +#: utils/adt/timestamp.c:4102 utils/adt/timestamp.c:4627 +#: utils/adt/timestamp.c:4811 utils/adt/timestamp.c:4836 #, c-format msgid "timestamp units \"%s\" not supported" msgstr "las unidades de timestamp «%s» no están soportadas" -#: utils/adt/timestamp.c:4020 utils/adt/timestamp.c:4485 -#: utils/adt/timestamp.c:4750 +#: utils/adt/timestamp.c:4116 utils/adt/timestamp.c:4581 +#: utils/adt/timestamp.c:4846 #, c-format msgid "timestamp units \"%s\" not recognized" msgstr "las unidades de timestamp «%s» no son reconocidas" -#: utils/adt/timestamp.c:4160 utils/adt/timestamp.c:4526 -#: utils/adt/timestamp.c:4937 utils/adt/timestamp.c:4963 +#: utils/adt/timestamp.c:4256 utils/adt/timestamp.c:4622 +#: utils/adt/timestamp.c:5033 utils/adt/timestamp.c:5059 #, c-format msgid "timestamp with time zone units \"%s\" not supported" msgstr "las unidades de timestamp with time zone «%s» no están soportadas" -#: utils/adt/timestamp.c:4177 utils/adt/timestamp.c:4480 -#: utils/adt/timestamp.c:4972 +#: utils/adt/timestamp.c:4273 utils/adt/timestamp.c:4576 +#: utils/adt/timestamp.c:5068 #, c-format msgid "timestamp with time zone units \"%s\" not recognized" msgstr "las unidades de timestamp with time zone «%s» no son reconocidas" -#: utils/adt/timestamp.c:4258 +#: utils/adt/timestamp.c:4354 #, c-format msgid "interval units \"%s\" not supported because months usually have fractional weeks" msgstr "las unidades de intervalo «%s» no están soportadas porque los meses normalmente tienen semanas fraccionales" -#: utils/adt/timestamp.c:4264 utils/adt/timestamp.c:5078 +#: utils/adt/timestamp.c:4360 utils/adt/timestamp.c:5174 #, c-format msgid "interval units \"%s\" not supported" msgstr "las unidades de interval «%s» no están soportadas" -#: utils/adt/timestamp.c:4280 utils/adt/timestamp.c:5105 +#: utils/adt/timestamp.c:4376 utils/adt/timestamp.c:5201 #, c-format msgid "interval units \"%s\" not recognized" msgstr "las unidades de interval «%s» no son reconocidas" @@ -20400,7 +19605,7 @@ msgstr "gtsvector_in no está implementado" #: utils/adt/tsquery.c:166 #, c-format msgid "distance in phrase operator should not be greater than %d" -msgstr "" +msgstr "distancia en operador de frases no debe ser mayor que %d" #: utils/adt/tsquery.c:254 utils/adt/tsquery.c:513 #: utils/adt/tsvector_parser.c:141 @@ -20428,17 +19633,17 @@ msgstr "el operando es muy largo en tsquery: «%s»" msgid "word is too long in tsquery: \"%s\"" msgstr "palabra demasiado larga en tsquery: «%s»" -#: utils/adt/tsquery.c:643 +#: utils/adt/tsquery.c:642 #, c-format msgid "text-search query doesn't contain lexemes: \"%s\"" msgstr "la consulta de búsqueda en texto no contiene lexemas: «%s»" -#: utils/adt/tsquery.c:654 utils/adt/tsquery_util.c:347 +#: utils/adt/tsquery.c:653 utils/adt/tsquery_util.c:375 #, c-format msgid "tsquery is too large" msgstr "el tsquery es demasiado grande" -#: utils/adt/tsquery_cleanup.c:601 +#: utils/adt/tsquery_cleanup.c:407 #, c-format msgid "text-search query contains only stop words or doesn't contain lexemes, ignored" msgstr "la consulta de búsqueda en texto contiene sólo stopwords o no contiene lexemas; ignorada" @@ -20446,9 +19651,9 @@ msgstr "la consulta de búsqueda en texto contiene sólo stopwords o no contiene #: utils/adt/tsquery_op.c:122 #, c-format msgid "distance in phrase operator should be non-negative and less than %d" -msgstr "" +msgstr "la distancia en el operador de frases debe ser no negativa y menor que %d" -#: utils/adt/tsquery_rewrite.c:292 +#: utils/adt/tsquery_rewrite.c:321 #, c-format msgid "ts_rewrite query must return two tsquery columns" msgstr "consulta ts_rewrite debe retornar dos columnas tsquery" @@ -20483,61 +19688,58 @@ msgstr "la palabra es demasiado larga (%ld, máximo %ld bytes)" msgid "string is too long for tsvector (%ld bytes, max %ld bytes)" msgstr "la cadena es demasiado larga para tsvector (%ld bytes, máximo %ld bytes)" -#: utils/adt/tsvector_op.c:321 utils/adt/tsvector_op.c:608 -#: utils/adt/tsvector_op.c:776 -#, fuzzy, c-format -#| msgid "array must not contain nulls" +#: utils/adt/tsvector_op.c:322 utils/adt/tsvector_op.c:609 +#: utils/adt/tsvector_op.c:777 +#, c-format msgid "lexeme array may not contain nulls" -msgstr "el array no debe contener nulls" +msgstr "el array de lexemas no debe contener nulls" -#: utils/adt/tsvector_op.c:851 -#, fuzzy, c-format -#| msgid "array must not contain nulls" +#: utils/adt/tsvector_op.c:852 +#, c-format msgid "weight array may not contain nulls" -msgstr "el array no debe contener nulls" +msgstr "el array de pesos no debe contener nulls" -#: utils/adt/tsvector_op.c:875 -#, fuzzy, c-format -#| msgid "unrecognized encoding: \"%s\"" +#: utils/adt/tsvector_op.c:876 +#, c-format msgid "unrecognized weight: \"%c\"" -msgstr "no se reconoce la codificación: «%s»" +msgstr "no se reconoce el peso: «%c»" -#: utils/adt/tsvector_op.c:2061 +#: utils/adt/tsvector_op.c:2313 #, c-format msgid "ts_stat query must return one tsvector column" msgstr "la consulta ts_stat debe retornar una columna tsvector" -#: utils/adt/tsvector_op.c:2243 +#: utils/adt/tsvector_op.c:2495 #, c-format msgid "tsvector column \"%s\" does not exist" msgstr "la columna tsvector «%s» no existe" -#: utils/adt/tsvector_op.c:2249 +#: utils/adt/tsvector_op.c:2501 #, c-format msgid "column \"%s\" is not of tsvector type" msgstr "la columna «%s» no es de tipo tsvector" -#: utils/adt/tsvector_op.c:2261 +#: utils/adt/tsvector_op.c:2513 #, c-format msgid "configuration column \"%s\" does not exist" msgstr "la columna de configuración «%s» no existe" -#: utils/adt/tsvector_op.c:2267 +#: utils/adt/tsvector_op.c:2519 #, c-format msgid "column \"%s\" is not of regconfig type" msgstr "la columna «%s» no es de tipo regconfig" -#: utils/adt/tsvector_op.c:2274 +#: utils/adt/tsvector_op.c:2526 #, c-format msgid "configuration column \"%s\" must not be null" msgstr "la columna de configuración «%s» no debe ser nula" -#: utils/adt/tsvector_op.c:2287 +#: utils/adt/tsvector_op.c:2539 #, c-format msgid "text search configuration name \"%s\" must be schema-qualified" msgstr "el nombre de la configuración de búsqueda «%s» debe ser calificada con esquema" -#: utils/adt/tsvector_op.c:2312 +#: utils/adt/tsvector_op.c:2564 #, c-format msgid "column \"%s\" is not of a character type" msgstr "la columna «%s» no es de un tipo textual" @@ -20558,14 +19760,14 @@ msgid "wrong position info in tsvector: \"%s\"" msgstr "información posicional incorrecta en tsvector: «%s»" #: utils/adt/txid.c:339 -#, fuzzy, c-format +#, c-format msgid "invalid input syntax for type txid_snapshot: \"%s\"" -msgstr "la sintaxis de entrada no es válida para tipo tid: «%s»" +msgstr "la sintaxis de entrada no es válida para tipo txid_snapshot: «%s»" #: utils/adt/txid.c:534 -#, fuzzy, c-format +#, c-format msgid "invalid external txid_snapshot data" -msgstr "valor externo «cidr» no válido" +msgstr "valor externo txid_snapshot no válido" #: utils/adt/uuid.c:145 #, c-format @@ -20634,12 +19836,12 @@ msgstr "no se puede hacer OR entre cadenas de bits de distintos tamaños" msgid "cannot XOR bit strings of different sizes" msgstr "no se puede hacer XOR entre cadenas de bits de distintos tamaños" -#: utils/adt/varbit.c:1793 utils/adt/varbit.c:1851 +#: utils/adt/varbit.c:1803 utils/adt/varbit.c:1861 #, c-format msgid "bit index %d out of valid range (0..%d)" msgstr "el índice de bit %d está fuera del rango válido (0..%d)" -#: utils/adt/varbit.c:1802 utils/adt/varlena.c:3002 +#: utils/adt/varbit.c:1812 utils/adt/varlena.c:3002 #, c-format msgid "new bit must be 0 or 1" msgstr "el nuevo bit debe ser 0 o 1" @@ -20681,27 +19883,24 @@ msgid "field position must be greater than zero" msgstr "la posición del campo debe ser mayor que cero" #: utils/adt/varlena.c:4804 -#, fuzzy, c-format -#| msgid "unterminated format specifier" +#, c-format msgid "unterminated format() type specifier" -msgstr "especificador de formato inconcluso" +msgstr "especificador de tipo inconcluso en format()" #: utils/adt/varlena.c:4805 utils/adt/varlena.c:4939 utils/adt/varlena.c:5060 #, c-format msgid "For a single \"%%\" use \"%%%%\"." -msgstr "" +msgstr "Para un «%%» solo, use «%%%%»." #: utils/adt/varlena.c:4937 utils/adt/varlena.c:5058 -#, fuzzy, c-format -#| msgid "unrecognized conversion type specifier \"%c\"" +#, c-format msgid "unrecognized format() type specifier \"%c\"" -msgstr "especificador de conversión de tipo no reconocido: «%c»" +msgstr "especificador de tipo no reconocido «%c» en format()" #: utils/adt/varlena.c:4950 utils/adt/varlena.c:5007 -#, fuzzy, c-format -#| msgid "too few arguments for format" +#, c-format msgid "too few arguments for format()" -msgstr "muy pocos argumentos para el formato" +msgstr "muy pocos argumentos para format()" #: utils/adt/varlena.c:5102 utils/adt/varlena.c:5285 #, c-format @@ -20733,141 +19932,141 @@ msgstr "el argumento de ntile debe ser mayor que cero" msgid "argument of nth_value must be greater than zero" msgstr "el argumento de nth_value debe ser mayor que cero" -#: utils/adt/xml.c:171 +#: utils/adt/xml.c:175 #, c-format msgid "unsupported XML feature" msgstr "característica XML no soportada" -#: utils/adt/xml.c:172 +#: utils/adt/xml.c:176 #, c-format msgid "This functionality requires the server to be built with libxml support." msgstr "Esta funcionalidad requiere que el servidor haya sido construido con soporte libxml." -#: utils/adt/xml.c:173 +#: utils/adt/xml.c:177 #, c-format msgid "You need to rebuild PostgreSQL using --with-libxml." msgstr "Necesita reconstruir PostgreSQL usando --with-libxml." -#: utils/adt/xml.c:192 utils/mb/mbutils.c:523 +#: utils/adt/xml.c:196 utils/mb/mbutils.c:523 #, c-format msgid "invalid encoding name \"%s\"" msgstr "nombre de codificación «%s» no válido" -#: utils/adt/xml.c:435 utils/adt/xml.c:440 +#: utils/adt/xml.c:439 utils/adt/xml.c:444 #, c-format msgid "invalid XML comment" msgstr "comentario XML no válido" -#: utils/adt/xml.c:569 +#: utils/adt/xml.c:573 #, c-format msgid "not an XML document" msgstr "no es un documento XML" -#: utils/adt/xml.c:728 utils/adt/xml.c:751 +#: utils/adt/xml.c:732 utils/adt/xml.c:755 #, c-format msgid "invalid XML processing instruction" msgstr "instrucción de procesamiento XML no válida" -#: utils/adt/xml.c:729 +#: utils/adt/xml.c:733 #, c-format msgid "XML processing instruction target name cannot be \"%s\"." msgstr "el nombre de destino de la instrucción de procesamiento XML no puede ser «%s»." -#: utils/adt/xml.c:752 +#: utils/adt/xml.c:756 #, c-format msgid "XML processing instruction cannot contain \"?>\"." msgstr "la instrucción de procesamiento XML no puede contener «?>»." -#: utils/adt/xml.c:831 +#: utils/adt/xml.c:835 #, c-format msgid "xmlvalidate is not implemented" msgstr "xmlvalidate no está implementado" -#: utils/adt/xml.c:910 +#: utils/adt/xml.c:914 #, c-format msgid "could not initialize XML library" msgstr "no se pudo inicializar la biblioteca XML" -#: utils/adt/xml.c:911 +#: utils/adt/xml.c:915 #, c-format msgid "libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u." msgstr "libxml2 tiene tipo char incompatible: sizeof(char)=%u, sizeof(xmlChar)=%u." -#: utils/adt/xml.c:997 +#: utils/adt/xml.c:1001 #, c-format msgid "could not set up XML error handler" msgstr "no se pudo instalar un gestor de errores XML" -#: utils/adt/xml.c:998 +#: utils/adt/xml.c:1002 #, c-format msgid "This probably indicates that the version of libxml2 being used is not compatible with the libxml2 header files that PostgreSQL was built with." msgstr "Esto probablemente indica que la versión de libxml2 en uso no es compatible con los archivos de cabecera libxml2 con los que PostgreSQL fue construido." -#: utils/adt/xml.c:1735 +#: utils/adt/xml.c:1739 msgid "Invalid character value." msgstr "Valor de carácter no válido." -#: utils/adt/xml.c:1738 +#: utils/adt/xml.c:1742 msgid "Space required." msgstr "Se requiere un espacio." -#: utils/adt/xml.c:1741 +#: utils/adt/xml.c:1745 msgid "standalone accepts only 'yes' or 'no'." msgstr "standalone acepta sólo 'yes' y 'no'." -#: utils/adt/xml.c:1744 +#: utils/adt/xml.c:1748 msgid "Malformed declaration: missing version." msgstr "Declaración mal formada: falta la versión." -#: utils/adt/xml.c:1747 +#: utils/adt/xml.c:1751 msgid "Missing encoding in text declaration." msgstr "Falta especificación de codificación en declaración de texto." -#: utils/adt/xml.c:1750 +#: utils/adt/xml.c:1754 msgid "Parsing XML declaration: '?>' expected." msgstr "Procesando declaración XML: se esperaba '?>'." -#: utils/adt/xml.c:1753 +#: utils/adt/xml.c:1757 #, c-format msgid "Unrecognized libxml error code: %d." msgstr "Código de error libxml no reconocido: %d." -#: utils/adt/xml.c:2028 +#: utils/adt/xml.c:2032 #, c-format msgid "XML does not support infinite date values." msgstr "XML no soporta valores infinitos de fecha." -#: utils/adt/xml.c:2050 utils/adt/xml.c:2077 +#: utils/adt/xml.c:2054 utils/adt/xml.c:2081 #, c-format msgid "XML does not support infinite timestamp values." msgstr "XML no soporta valores infinitos de timestamp." -#: utils/adt/xml.c:2468 +#: utils/adt/xml.c:2481 #, c-format msgid "invalid query" msgstr "consulta no válido" -#: utils/adt/xml.c:3793 +#: utils/adt/xml.c:3806 #, c-format msgid "invalid array for XML namespace mapping" msgstr "array no válido para mapeo de espacio de nombres XML" -#: utils/adt/xml.c:3794 +#: utils/adt/xml.c:3807 #, c-format msgid "The array must be two-dimensional with length of the second axis equal to 2." msgstr "El array debe ser bidimensional y el largo del segundo eje igual a 2." -#: utils/adt/xml.c:3818 +#: utils/adt/xml.c:3831 #, c-format msgid "empty XPath expression" msgstr "expresion XPath vacía" -#: utils/adt/xml.c:3867 +#: utils/adt/xml.c:3880 #, c-format msgid "neither namespace name nor URI may be null" msgstr "ni el espacio de nombres ni la URI pueden ser vacíos" -#: utils/adt/xml.c:3874 +#: utils/adt/xml.c:3887 #, c-format msgid "could not register XML namespace with name \"%s\" and URI \"%s\"" msgstr "no se pudo registrar un espacio de nombres XML llamado «%s» con URI «%s»" @@ -20888,22 +20087,22 @@ msgstr "no hay una función de entrada para el tipo %s" msgid "no output function available for type %s" msgstr "no hay una función de salida para el tipo %s" -#: utils/cache/plancache.c:716 +#: utils/cache/plancache.c:718 #, c-format msgid "cached plan must not change result type" msgstr "el plan almacenado no debe cambiar el tipo de resultado" -#: utils/cache/relcache.c:5199 +#: utils/cache/relcache.c:5226 #, c-format msgid "could not create relation-cache initialization file \"%s\": %m" msgstr "no se pudo crear el archivo de cache de catálogos de sistema «%s»: %m" -#: utils/cache/relcache.c:5201 +#: utils/cache/relcache.c:5228 #, c-format msgid "Continuing anyway, but there's something wrong." msgstr "Prosiguiendo de todas maneras, pero hay algo mal." -#: utils/cache/relcache.c:5475 +#: utils/cache/relcache.c:5502 #, c-format msgid "could not remove cache file \"%s\": %m" msgstr "no se pudo eliminar el archivo de cache «%s»: %m" @@ -20987,82 +20186,82 @@ msgstr "no se pudo reabrir «%s» para usar como salida estándar: %m" msgid "[unknown]" msgstr "[desconocido]" -#: utils/error/elog.c:2881 utils/error/elog.c:3184 utils/error/elog.c:3292 +#: utils/error/elog.c:2882 utils/error/elog.c:3185 utils/error/elog.c:3293 msgid "missing error text" msgstr "falta un texto de mensaje de error" -#: utils/error/elog.c:2884 utils/error/elog.c:2887 utils/error/elog.c:3295 -#: utils/error/elog.c:3298 +#: utils/error/elog.c:2885 utils/error/elog.c:2888 utils/error/elog.c:3296 +#: utils/error/elog.c:3299 #, c-format msgid " at character %d" msgstr " en carácter %d" -#: utils/error/elog.c:2897 utils/error/elog.c:2904 +#: utils/error/elog.c:2898 utils/error/elog.c:2905 msgid "DETAIL: " msgstr "DETALLE: " -#: utils/error/elog.c:2911 +#: utils/error/elog.c:2912 msgid "HINT: " msgstr "HINT: " -#: utils/error/elog.c:2918 +#: utils/error/elog.c:2919 msgid "QUERY: " msgstr "CONSULTA: " -#: utils/error/elog.c:2925 +#: utils/error/elog.c:2926 msgid "CONTEXT: " msgstr "CONTEXTO: " -#: utils/error/elog.c:2935 +#: utils/error/elog.c:2936 #, c-format msgid "LOCATION: %s, %s:%d\n" msgstr "UBICACIÓN: %s, %s:%d\n" -#: utils/error/elog.c:2942 +#: utils/error/elog.c:2943 #, c-format msgid "LOCATION: %s:%d\n" msgstr "UBICACIÓN: %s:%d\n" -#: utils/error/elog.c:2956 +#: utils/error/elog.c:2957 msgid "STATEMENT: " msgstr "SENTENCIA: " #. translator: This string will be truncated at 47 #. characters expanded. -#: utils/error/elog.c:3413 +#: utils/error/elog.c:3414 #, c-format msgid "operating system error %d" msgstr "error %d de sistema operativo" -#: utils/error/elog.c:3611 +#: utils/error/elog.c:3612 msgid "DEBUG" msgstr "DEBUG" -#: utils/error/elog.c:3615 +#: utils/error/elog.c:3616 msgid "LOG" msgstr "LOG" -#: utils/error/elog.c:3618 +#: utils/error/elog.c:3619 msgid "INFO" msgstr "INFO" -#: utils/error/elog.c:3621 +#: utils/error/elog.c:3622 msgid "NOTICE" msgstr "NOTICE" -#: utils/error/elog.c:3624 +#: utils/error/elog.c:3625 msgid "WARNING" msgstr "WARNING" -#: utils/error/elog.c:3627 +#: utils/error/elog.c:3628 msgid "ERROR" msgstr "ERROR" -#: utils/error/elog.c:3630 +#: utils/error/elog.c:3631 msgid "FATAL" msgstr "FATAL" -#: utils/error/elog.c:3633 +#: utils/error/elog.c:3634 msgid "PANIC" msgstr "PANIC" @@ -21200,7 +20399,7 @@ msgstr "no se pudo encontrar descripción de registro de función que retorna re msgid "could not change directory to \"%s\": %m" msgstr "no se pudo cambiar al directorio «%s»: %m" -#: utils/init/miscinit.c:449 utils/misc/guc.c:6018 +#: utils/init/miscinit.c:449 utils/misc/guc.c:6016 #, c-format msgid "cannot set parameter \"%s\" within security-restricted operation" msgstr "no se puede definir el parámetro «%s» dentro de una operación restringida por seguridad" @@ -21311,22 +20510,20 @@ msgstr "El archivo parece accidentalmente abandonado, pero no pudo ser eliminado msgid "could not write lock file \"%s\": %m" msgstr "no se pudo escribir el archivo de bloqueo «%s»: %m" -#: utils/init/miscinit.c:1172 utils/init/miscinit.c:1301 utils/misc/guc.c:8812 +#: utils/init/miscinit.c:1172 utils/init/miscinit.c:1301 utils/misc/guc.c:8818 #, c-format msgid "could not read from file \"%s\": %m" msgstr "no se pudo leer el archivo «%s»: %m" #: utils/init/miscinit.c:1291 -#, fuzzy, c-format -#| msgid "could not open file \"%s\": %m" +#, c-format msgid "could not open file \"%s\": %m; continuing anyway" -msgstr "no se pudo abrir el archivo «%s»: %m" +msgstr "no se pudo abrir el archivo «%s»: %m; continuando de todas formas" #: utils/init/miscinit.c:1314 -#, fuzzy, c-format -#| msgid "archive file \"%s\" has wrong size: %lu instead of %lu" +#, c-format msgid "lock file \"%s\" contains wrong PID: %ld instead of %ld" -msgstr "el archivo «%s» tiene tamaño erróneo: %lu en lugar de %lu" +msgstr "el archivo de bloqueo «%s» tiene un PID erróneo: %ld en lugar de %ld" #: utils/init/miscinit.c:1356 utils/init/miscinit.c:1369 #, c-format @@ -21676,7 +20873,7 @@ msgstr "Reporte y Registro / Qué Registrar" #: utils/misc/guc.c:606 msgid "Process Title" -msgstr "" +msgstr "Título de Proceso" #: utils/misc/guc.c:608 msgid "Statistics" @@ -21816,7 +21013,7 @@ msgstr "Permitir la publicación del servidor vía Bonjour." #: utils/misc/guc.c:913 msgid "Collects transaction commit time." -msgstr "" +msgstr "Recolectar tiempo de compromiso de transacciones." #: utils/misc/guc.c:922 msgid "Enables SSL connections." @@ -21828,7 +21025,7 @@ msgstr "Da prioridad al orden de algoritmos de cifrado especificado por el servi #: utils/misc/guc.c:940 msgid "Forces synchronization of updates to disk." -msgstr "Forzar la sincronización de escrituras a disco." +msgstr "Obliga la sincronización de escrituras a disco." #: utils/misc/guc.c:941 msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This insures that a database cluster will recover to a consistent state after an operating system or hardware crash." @@ -21852,23 +21049,23 @@ msgstr "La detección de un encabezado de página dañado normalmente hace que P #: utils/misc/guc.c:981 msgid "Writes full pages to WAL when first modified after a checkpoint." -msgstr "Escribe páginas completas a WAL cuando son modificadas después de un punto de control." +msgstr "Escribe páginas completas a WAL cuando son modificadas después de un checkpoint." #: utils/misc/guc.c:982 msgid "A page write in process during an operating system crash might be only partially written to disk. During recovery, the row changes stored in WAL are not enough to recover. This option writes pages when first modified after a checkpoint to WAL so full recovery is possible." -msgstr "Una escritura de página que está siendo procesada durante una caída del sistema operativo puede ser completada sólo parcialmente. Durante la recuperación, los cambios de registros (tuplas) almacenados en WAL no son suficientes para la recuperación. Esta opción activa la escritura de las páginas a WAL cuando son modificadas por primera vez después de un punto de control, de manera que una recuperación total es posible." +msgstr "Una escritura de página que está siendo procesada durante una caída del sistema operativo puede haberse escrito parcialmente. Durante la recuperación, los cambios de registros (tuplas) almacenados en WAL no son suficientes para la recuperación. Esta opción escribe las páginas a WAL cuando son modificadas por primera vez después de un checkpoint, de manera que una recuperación total sea posible." #: utils/misc/guc.c:995 msgid "Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modifications." -msgstr "Escribir páginas completas a WAL cuando son modificadas después de un punto de control, incluso para modificaciones no críticas." +msgstr "Escribir páginas completas a WAL cuando son modificadas después de un checkpoint, incluso para modificaciones no críticas." #: utils/misc/guc.c:1005 msgid "Compresses full-page writes written in WAL file." -msgstr "" +msgstr "Comprimir las imágenes de páginas completas al escribirlas a WAL." #: utils/misc/guc.c:1015 msgid "Logs each checkpoint." -msgstr "Registrar cada punto de control." +msgstr "Registrar cada checkpoint." #: utils/misc/guc.c:1024 msgid "Logs each successful connection." @@ -21879,14 +21076,12 @@ msgid "Logs end of a session, including duration." msgstr "Registrar el fin de una sesión, incluyendo su duración." #: utils/misc/guc.c:1042 -#, fuzzy msgid "Logs each replication command." -msgstr "Registrar el plan de ejecución de cada consulta." +msgstr "Registrar cada orden de replicación." #: utils/misc/guc.c:1051 -#, fuzzy msgid "Shows whether the running server has assertion checks enabled." -msgstr "Indica si el usuario actual es superusuario." +msgstr "Indica si el servidor actual tiene activas las aseveraciones (asserts) activas." #: utils/misc/guc.c:1066 msgid "Terminate session on any error." @@ -22038,11 +21233,11 @@ msgstr "Si está activo, las transacciones serializables de sólo lectura serán #: utils/misc/guc.c:1389 msgid "Enable row security." -msgstr "" +msgstr "Activar seguridad de registros." #: utils/misc/guc.c:1390 msgid "When enabled, row security will be applied to all users." -msgstr "" +msgstr "Cuando está activada, la seguridad de registros se aplicará a todos los usuarios." #: utils/misc/guc.c:1398 msgid "Check function bodies during CREATE FUNCTION." @@ -22134,7 +21329,7 @@ msgstr "Omite las comprobaciones de privilegios cuando se leen o modifican los o #: utils/misc/guc.c:1611 msgid "Emit a warning for constructs that changed meaning since PostgreSQL 9.4." -msgstr "" +msgstr "Emitir una advertencia en constructos que cambiaron significado desde PostgreSQL 9.4." #: utils/misc/guc.c:1621 msgid "When generating SQL fragments, quote all identifiers." @@ -22146,15 +21341,15 @@ msgstr "Indica si las sumas de verificación están activas en este cluster." #: utils/misc/guc.c:1642 msgid "Add sequence number to syslog messages to avoid duplicate suppression." -msgstr "" +msgstr "Agregar número de secuencia a mensajes syslog para evitar supresión de duplicados." #: utils/misc/guc.c:1652 msgid "Split messages sent to syslog by lines and to fit into 1024 bytes." -msgstr "" +msgstr "Dividir mensajes enviados a syslog en líneas y que quepan en 1024 bytes." #: utils/misc/guc.c:1671 msgid "Forces a switch to the next xlog file if a new file has not been started within N seconds." -msgstr "Fuerza el cambio al siguiente archivo xlog si un nuevo archivo no ha sido iniciado dentro de N segundos." +msgstr "Obliga al cambio al siguiente archivo xlog si un nuevo archivo no ha sido iniciado dentro de N segundos." #: utils/misc/guc.c:1682 msgid "Waits N seconds on connection startup after authentication." @@ -22281,24 +21476,20 @@ msgid "This includes operations such as VACUUM and CREATE INDEX." msgstr "Esto incluye operaciones como VACUUM y CREATE INDEX." #: utils/misc/guc.c:1928 -#, fuzzy -#| msgid "Sets the maximum number of temporary buffers used by each session." msgid "Sets the maximum number of tuples to be sorted using replacement selection." -msgstr "Número de búfers de memoria temporal usados por cada sesión." +msgstr "Define el máximo número de tuplas que se ordenarán usando selección con reemplazo." #: utils/misc/guc.c:1929 msgid "When more tuples than this are present, quicksort will be used." -msgstr "" +msgstr "Cuando más tuplas que esta cantidad esté presente, se usará quicksort." #: utils/misc/guc.c:1943 msgid "Sets the maximum stack depth, in kilobytes." msgstr "Establece el tamaño máximo del stack, en kilobytes." #: utils/misc/guc.c:1954 -#, fuzzy -#| msgid "Limits the total size of all temporary files used by each session." msgid "Limits the total size of all temporary files used by each process." -msgstr "Limita el tamaño total de todos los archivos temporales usados en cada sesión." +msgstr "Limita el tamaño total de todos los archivos temporales usados en cada proceso." #: utils/misc/guc.c:1955 msgid "-1 means no limit." @@ -22365,10 +21556,8 @@ msgid "Sets the maximum allowed duration of any wait for a lock." msgstr "Define la duración máxima permitida de cualquier espera por un lock." #: utils/misc/guc.c:2105 -#, fuzzy -#| msgid "Sets the maximum allowed duration of any statement." msgid "Sets the maximum allowed duration of any idling transaction." -msgstr "Define la duración máxima permitida de sentencias." +msgstr "Define la duración máxima permitida de transacciones inactivas." #: utils/misc/guc.c:2116 msgid "Minimum age at which VACUUM should freeze a table row." @@ -22392,19 +21581,19 @@ msgstr "Número de transacciones por las cuales VACUUM y la limpieza HOT deberí #: utils/misc/guc.c:2169 msgid "Sets the maximum number of locks per transaction." -msgstr "Cantidad máxima de candados (locks) por transacción." +msgstr "Cantidad máxima de locks por transacción." #: utils/misc/guc.c:2170 msgid "The shared lock table is sized on the assumption that at most max_locks_per_transaction * max_connections distinct objects will need to be locked at any one time." -msgstr "El tamaño de la tabla compartida de candados se calcula usando la suposición de que a lo más max_locks_per_transaction * max_connections objetos necesitarán ser bloqueados simultáneamente." +msgstr "El tamaño de la tabla compartida de locks se calcula suponiendo que a lo más max_locks_per_transaction * max_connections objetos necesitarán ser bloqueados simultáneamente." #: utils/misc/guc.c:2181 msgid "Sets the maximum number of predicate locks per transaction." -msgstr "Cantidad máxima de candados (locks) de predicado por transacción." +msgstr "Cantidad máxima de locks de predicado por transacción." #: utils/misc/guc.c:2182 msgid "The shared predicate lock table is sized on the assumption that at most max_pred_locks_per_transaction * max_connections distinct objects will need to be locked at any one time." -msgstr "El tamaño de la tabla compartida de candados se calcula usando la suposición de que a lo más max_pred_locks_per_transaction * max_connections objetos necesitarán ser bloqueados simultáneamente." +msgstr "El tamaño de la tabla compartida de locks se calcula suponiendo que a lo más max_pred_locks_per_transaction * max_connections objetos necesitarán ser bloqueados simultáneamente." #: utils/misc/guc.c:2193 msgid "Sets the maximum allowed time to complete client authentication." @@ -22419,14 +21608,12 @@ msgid "Sets the number of WAL files held for standby servers." msgstr "Número de archivos WAL conservados para servidores standby." #: utils/misc/guc.c:2226 -#, fuzzy msgid "Sets the minimum size to shrink the WAL to." -msgstr "Define el tiempo máximo a esperar la replicación de WAL." +msgstr "Define el tamaño mínimo al cual reducir el WAL." #: utils/misc/guc.c:2237 -#, fuzzy msgid "Sets the WAL size that triggers a checkpoint." -msgstr "Define el tiempo máximo entre puntos de control de WAL automáticos." +msgstr "Define el tamaño de WAL que desencadena un checkpoint." #: utils/misc/guc.c:2248 msgid "Sets the maximum time between automatic WAL checkpoints." @@ -22434,658 +21621,640 @@ msgstr "Define el tiempo máximo entre puntos de control de WAL automáticos." #: utils/misc/guc.c:2259 msgid "Enables warnings if checkpoint segments are filled more frequently than this." -msgstr "Registrar si el llenado de segmentos de WAL es más frecuente que esto." +msgstr "Advertir si los segmentos de checkpoint son segmentos más frecuentemente que esto." #: utils/misc/guc.c:2261 msgid "Write a message to the server log if checkpoints caused by the filling of checkpoint segment files happens more frequently than this number of seconds. Zero turns off the warning." -msgstr "Envía un mensaje a los registros del servidor si los punto de control causados por el llenado de archivos de segmento sucede con más frecuencia que este número de segundos. Un valor de 0 (cero) desactiva la opción." +msgstr "Envía un mensaje a los registros del servidor si los checkpoint causados por el llenado de archivos de segmento sucede con más frecuencia que este número de segundos. Un valor de 0 (cero) desactiva las advertencias." -#: utils/misc/guc.c:2273 utils/misc/guc.c:2431 utils/misc/guc.c:2459 +#: utils/misc/guc.c:2273 utils/misc/guc.c:2430 utils/misc/guc.c:2457 msgid "Number of pages after which previously performed writes are flushed to disk." -msgstr "" +msgstr "Número de páginas después del cual las escrituras previamente ejecutadas se sincronizan a disco." -#: utils/misc/guc.c:2285 +#: utils/misc/guc.c:2284 msgid "Sets the number of disk-page buffers in shared memory for WAL." msgstr "Búfers en memoria compartida para páginas de WAL." -#: utils/misc/guc.c:2296 +#: utils/misc/guc.c:2295 msgid "Time between WAL flushes performed in the WAL writer." -msgstr "" +msgstr "Tiempo entre sincronizaciones de WAL ejecutadas por el proceso escritor de WAL." -#: utils/misc/guc.c:2307 -msgid "Amount of WAL written out by WAL writer triggering a flush." -msgstr "" +#: utils/misc/guc.c:2306 +msgid "Amount of WAL written out by WAL writer that triggers a flush." +msgstr "Cantidad de WAL escrito por el proceso escritor de WAL que desencadena una sincronización (flush)." -#: utils/misc/guc.c:2319 +#: utils/misc/guc.c:2318 msgid "Sets the maximum number of simultaneously running WAL sender processes." msgstr "Define la cantidad máxima de procesos «WAL sender» simultáneos." -#: utils/misc/guc.c:2330 +#: utils/misc/guc.c:2329 msgid "Sets the maximum number of simultaneously defined replication slots." msgstr "Define la cantidad máxima de slots de replicación definidos simultáneamente." -#: utils/misc/guc.c:2340 +#: utils/misc/guc.c:2339 msgid "Sets the maximum time to wait for WAL replication." msgstr "Define el tiempo máximo a esperar la replicación de WAL." -#: utils/misc/guc.c:2351 +#: utils/misc/guc.c:2350 msgid "Sets the delay in microseconds between transaction commit and flushing WAL to disk." msgstr "Retardo en microsegundos entre completar una transacción y escribir WAL a disco." -#: utils/misc/guc.c:2363 +#: utils/misc/guc.c:2362 msgid "Sets the minimum concurrent open transactions before performing commit_delay." msgstr "Mínimo de transacciones concurrentes para esperar commit_delay." -#: utils/misc/guc.c:2374 +#: utils/misc/guc.c:2373 msgid "Sets the number of digits displayed for floating-point values." msgstr "Ajustar el número de dígitos mostrados para valores de coma flotante." -#: utils/misc/guc.c:2375 +#: utils/misc/guc.c:2374 msgid "This affects real, double precision, and geometric data types. The parameter value is added to the standard number of digits (FLT_DIG or DBL_DIG as appropriate)." msgstr "Afecta los tipos real, double precision y geométricos. El valor del parámetro se agrega al número estándar de dígitos (FLT_DIG o DBL_DIG según corresponda)" -#: utils/misc/guc.c:2386 +#: utils/misc/guc.c:2385 msgid "Sets the minimum execution time above which statements will be logged." msgstr "Tiempo mínimo de ejecución a partir del cual se registran las consultas." -#: utils/misc/guc.c:2388 +#: utils/misc/guc.c:2387 msgid "Zero prints all queries. -1 turns this feature off." msgstr "Cero registra todas las consultas. -1 desactiva esta característica." -#: utils/misc/guc.c:2398 +#: utils/misc/guc.c:2397 msgid "Sets the minimum execution time above which autovacuum actions will be logged." msgstr "Tiempo mínimo de ejecución a partir del cual se registran las acciones de autovacuum." -#: utils/misc/guc.c:2400 +#: utils/misc/guc.c:2399 msgid "Zero prints all actions. -1 turns autovacuum logging off." msgstr "Cero registra todas las acciones. -1 desactiva el registro de autovacuum." -#: utils/misc/guc.c:2410 +#: utils/misc/guc.c:2409 msgid "Background writer sleep time between rounds." msgstr "Tiempo de descanso entre rondas del background writer" -#: utils/misc/guc.c:2421 +#: utils/misc/guc.c:2420 msgid "Background writer maximum number of LRU pages to flush per round." -msgstr "Número máximo de páginas LRU a escribir en cada ronda del background writer" +msgstr "Número máximo de páginas LRU a sincronizar (flush) en cada ronda del background writer" -#: utils/misc/guc.c:2445 +#: utils/misc/guc.c:2443 msgid "Number of simultaneous requests that can be handled efficiently by the disk subsystem." msgstr "Cantidad máxima de peticiones simultáneas que pueden ser manejadas eficientemente por el sistema de disco." -#: utils/misc/guc.c:2446 +#: utils/misc/guc.c:2444 msgid "For RAID arrays, this should be approximately the number of drive spindles in the array." msgstr "Para arrays RAID, esto debería ser aproximadamente la cantidad de discos en el array." -#: utils/misc/guc.c:2472 +#: utils/misc/guc.c:2470 msgid "Maximum number of concurrent worker processes." msgstr "Número máximo de procesos trabajadores concurrentes." -#: utils/misc/guc.c:2482 +#: utils/misc/guc.c:2480 msgid "Automatic log file rotation will occur after N minutes." msgstr "La rotación automática de archivos de log se efectuará después de N minutos." -#: utils/misc/guc.c:2493 +#: utils/misc/guc.c:2491 msgid "Automatic log file rotation will occur after N kilobytes." msgstr "La rotación automática de archivos de log se efectuará después de N kilobytes." -#: utils/misc/guc.c:2504 +#: utils/misc/guc.c:2502 msgid "Shows the maximum number of function arguments." msgstr "Muestra la cantidad máxima de argumentos de funciones." -#: utils/misc/guc.c:2515 +#: utils/misc/guc.c:2513 msgid "Shows the maximum number of index keys." msgstr "Muestra la cantidad máxima de claves de índices." -#: utils/misc/guc.c:2526 +#: utils/misc/guc.c:2524 msgid "Shows the maximum identifier length." msgstr "Muestra el largo máximo de identificadores." -#: utils/misc/guc.c:2537 +#: utils/misc/guc.c:2535 msgid "Shows the size of a disk block." msgstr "Muestra el tamaño de un bloque de disco." -#: utils/misc/guc.c:2548 +#: utils/misc/guc.c:2546 msgid "Shows the number of pages per disk file." msgstr "Muestra el número de páginas por archivo en disco." -#: utils/misc/guc.c:2559 +#: utils/misc/guc.c:2557 msgid "Shows the block size in the write ahead log." msgstr "Muestra el tamaño de bloque en el write-ahead log." -#: utils/misc/guc.c:2570 +#: utils/misc/guc.c:2568 msgid "Sets the time to wait before retrying to retrieve WAL after a failed attempt." -msgstr "" +msgstr "Define el tiempo a esperar antes de reintentar obtener WAL después de un intento fallido." -#: utils/misc/guc.c:2582 +#: utils/misc/guc.c:2580 msgid "Shows the number of pages per write ahead log segment." msgstr "Muestra el número de páginas por cada segmento de write-ahead log." -#: utils/misc/guc.c:2595 +#: utils/misc/guc.c:2593 msgid "Time to sleep between autovacuum runs." msgstr "Tiempo de descanso entre ejecuciones de autovacuum." -#: utils/misc/guc.c:2605 +#: utils/misc/guc.c:2603 msgid "Minimum number of tuple updates or deletes prior to vacuum." msgstr "Número mínimo de updates o deletes antes de ejecutar vacuum." -#: utils/misc/guc.c:2614 +#: utils/misc/guc.c:2612 msgid "Minimum number of tuple inserts, updates, or deletes prior to analyze." msgstr "Número mínimo de inserciones, actualizaciones y eliminaciones de tuplas antes de ejecutar analyze." -#: utils/misc/guc.c:2624 +#: utils/misc/guc.c:2622 msgid "Age at which to autovacuum a table to prevent transaction ID wraparound." msgstr "Edad a la cual aplicar VACUUM automáticamente a una tabla para prevenir problemas por reciclaje de ID de transacción." -#: utils/misc/guc.c:2635 +#: utils/misc/guc.c:2633 msgid "Multixact age at which to autovacuum a table to prevent multixact wraparound." msgstr "Edad de multixact a la cual aplicar VACUUM automáticamente a una tabla para prevenir problemas por reciclaje de ID de multixacts." -#: utils/misc/guc.c:2645 +#: utils/misc/guc.c:2643 msgid "Sets the maximum number of simultaneously running autovacuum worker processes." msgstr "Define la cantidad máxima de procesos «autovacuum worker» simultáneos." -#: utils/misc/guc.c:2655 -#, fuzzy -#| msgid "Sets the maximum number of predicate locks per transaction." +#: utils/misc/guc.c:2653 msgid "Sets the maximum number of parallel processes per executor node." -msgstr "Cantidad máxima de candados (locks) de predicado por transacción." +msgstr "Cantidad máxima de locks de predicado por nodo de ejecución." -#: utils/misc/guc.c:2665 +#: utils/misc/guc.c:2663 msgid "Sets the maximum memory to be used by each autovacuum worker process." msgstr "Establece el límite de memoria que cada proceso «autovacuum worker» usará." -#: utils/misc/guc.c:2676 +#: utils/misc/guc.c:2674 msgid "Time before a snapshot is too old to read pages changed after the snapshot was taken." -msgstr "" +msgstr "Tiempo antes de que un snapshot sea demasiado antiguo para leer páginas después de que el snapshot fue tomado." -#: utils/misc/guc.c:2677 -#, fuzzy -#| msgid "A value of 0 uses the system default." +#: utils/misc/guc.c:2675 msgid "A value of -1 disables this feature." -msgstr "Un valor 0 usa el valor por omisión del sistema." +msgstr "El valor -1 desactiva esta característica." -#: utils/misc/guc.c:2687 +#: utils/misc/guc.c:2685 msgid "Time between issuing TCP keepalives." msgstr "Tiempo entre cada emisión de TCP keepalive." -#: utils/misc/guc.c:2688 utils/misc/guc.c:2699 +#: utils/misc/guc.c:2686 utils/misc/guc.c:2697 msgid "A value of 0 uses the system default." msgstr "Un valor 0 usa el valor por omisión del sistema." -#: utils/misc/guc.c:2698 +#: utils/misc/guc.c:2696 msgid "Time between TCP keepalive retransmits." msgstr "Tiempo entre retransmisiones TCP keepalive." -#: utils/misc/guc.c:2709 +#: utils/misc/guc.c:2707 msgid "SSL renegotiation is no longer supported; this can only be 0." -msgstr "" +msgstr "La renegociación SSL ya no está soportada; esto sólo puede ser 0." -#: utils/misc/guc.c:2720 +#: utils/misc/guc.c:2718 msgid "Maximum number of TCP keepalive retransmits." msgstr "Cantidad máxima de retransmisiones TCP keepalive." -#: utils/misc/guc.c:2721 +#: utils/misc/guc.c:2719 msgid "This controls the number of consecutive keepalive retransmits that can be lost before a connection is considered dead. A value of 0 uses the system default." msgstr "Esto controla el número de retransmisiones consecutivas de keepalive que pueden ser perdidas antes que la conexión sea considerada muerta. Un valor 0 usa el valor por omisión del sistema." -#: utils/misc/guc.c:2732 +#: utils/misc/guc.c:2730 msgid "Sets the maximum allowed result for exact search by GIN." msgstr "Define el máximo de resultados permitidos por búsquedas exactas con GIN." -#: utils/misc/guc.c:2743 +#: utils/misc/guc.c:2741 msgid "Sets the planner's assumption about the size of the disk cache." msgstr "Define la suposición del tamaño del cache de disco." -#: utils/misc/guc.c:2744 +#: utils/misc/guc.c:2742 msgid "That is, the portion of the kernel's disk cache that will be used for PostgreSQL data files. This is measured in disk pages, which are normally 8 kB each." msgstr "Esto es, la porción del cache de disco que será usado para archivos de datos de PostgreSQL. Esto se mide en cantidad de páginas, que normalmente son de 8 kB cada una." -#: utils/misc/guc.c:2756 -#, fuzzy -#| msgid "Sets the number of connection slots reserved for superusers." +#: utils/misc/guc.c:2754 msgid "Sets the minimum size of relations to be considered for parallel scan." -msgstr "Número de conexiones reservadas para superusuarios." +msgstr "Tamaño mínimo de relaciones para considerarlas en recorridos en paralelo." -#: utils/misc/guc.c:2768 +#: utils/misc/guc.c:2766 msgid "Shows the server version as an integer." msgstr "Muestra la versión del servidor como un número entero." -#: utils/misc/guc.c:2779 +#: utils/misc/guc.c:2777 msgid "Log the use of temporary files larger than this number of kilobytes." msgstr "Registra el uso de archivos temporales que crezcan más allá de este número de kilobytes." -#: utils/misc/guc.c:2780 +#: utils/misc/guc.c:2778 msgid "Zero logs all files. The default is -1 (turning this feature off)." msgstr "Cero registra todos los archivos. El valor por omisión es -1 (lo cual desactiva el registro)." -#: utils/misc/guc.c:2790 +#: utils/misc/guc.c:2788 msgid "Sets the size reserved for pg_stat_activity.query, in bytes." msgstr "Tamaño reservado para pg_stat_activity.query, en bytes." -#: utils/misc/guc.c:2805 -#, fuzzy +#: utils/misc/guc.c:2803 msgid "Sets the maximum size of the pending list for GIN index." -msgstr "Define el tiempo máximo a esperar la replicación de WAL." +msgstr "Define el tamaño máximo de la lista de pendientes de un índice GIN." -#: utils/misc/guc.c:2825 +#: utils/misc/guc.c:2823 msgid "Sets the planner's estimate of the cost of a sequentially fetched disk page." msgstr "Estimación del costo de una página leída secuencialmente." -#: utils/misc/guc.c:2835 +#: utils/misc/guc.c:2833 msgid "Sets the planner's estimate of the cost of a nonsequentially fetched disk page." msgstr "Estimación del costo de una página leída no secuencialmente." -#: utils/misc/guc.c:2845 +#: utils/misc/guc.c:2843 msgid "Sets the planner's estimate of the cost of processing each tuple (row)." msgstr "Estimación del costo de procesar cada tupla (fila)." -#: utils/misc/guc.c:2855 +#: utils/misc/guc.c:2853 msgid "Sets the planner's estimate of the cost of processing each index entry during an index scan." msgstr "Estimación del costo de procesar cada fila de índice durante un recorrido de índice." -#: utils/misc/guc.c:2865 +#: utils/misc/guc.c:2863 msgid "Sets the planner's estimate of the cost of processing each operator or function call." msgstr "Estimación del costo de procesar cada operador o llamada a función." -#: utils/misc/guc.c:2875 -#, fuzzy -#| msgid "Sets the planner's estimate of the cost of processing each tuple (row)." +#: utils/misc/guc.c:2873 msgid "Sets the planner's estimate of the cost of passing each tuple (row) from worker to master backend." -msgstr "Estimación del costo de procesar cada tupla (fila)." +msgstr "Estimación del costo de pasar cada tupla (fila) desde un proceso trabajador al proceso servidor principal." -#: utils/misc/guc.c:2885 -#, fuzzy -#| msgid "Sets the planner's estimate of the cost of processing each tuple (row)." +#: utils/misc/guc.c:2883 msgid "Sets the planner's estimate of the cost of starting up worker processes for parallel query." -msgstr "Estimación del costo de procesar cada tupla (fila)." +msgstr "Estimación del costo de lanzar procesos trabajadores para consultas en paralelo." -#: utils/misc/guc.c:2896 +#: utils/misc/guc.c:2894 msgid "Sets the planner's estimate of the fraction of a cursor's rows that will be retrieved." msgstr "Estimación de la fracción de filas de un cursor que serán extraídas." -#: utils/misc/guc.c:2907 +#: utils/misc/guc.c:2905 msgid "GEQO: selective pressure within the population." msgstr "GEQO: presión selectiva dentro de la población." -#: utils/misc/guc.c:2917 +#: utils/misc/guc.c:2915 msgid "GEQO: seed for random path selection." msgstr "GEQO: semilla para la selección aleatoria de caminos." -#: utils/misc/guc.c:2927 +#: utils/misc/guc.c:2925 msgid "Multiple of the average buffer usage to free per round." msgstr "Múltiplo del uso promedio de búfers que liberar en cada ronda." -#: utils/misc/guc.c:2937 +#: utils/misc/guc.c:2935 msgid "Sets the seed for random-number generation." msgstr "Semilla para la generación de números aleatorios." -#: utils/misc/guc.c:2948 +#: utils/misc/guc.c:2946 msgid "Number of tuple updates or deletes prior to vacuum as a fraction of reltuples." msgstr "Número de updates o deletes de tuplas antes de ejecutar un vacuum, como fracción de reltuples." -#: utils/misc/guc.c:2957 +#: utils/misc/guc.c:2955 msgid "Number of tuple inserts, updates, or deletes prior to analyze as a fraction of reltuples." msgstr "Número mínimo de inserciones, actualizaciones y eliminaciones de tuplas antes de ejecutar analyze, como fracción de reltuples." -#: utils/misc/guc.c:2967 +#: utils/misc/guc.c:2965 msgid "Time spent flushing dirty buffers during checkpoint, as fraction of checkpoint interval." -msgstr "Tiempo utilizado en escribir páginas «sucias» durante los puntos de control, medido como fracción del intervalo del punto de control." +msgstr "Tiempo utilizado en sincronizar páginas «sucias» durante los checkpoint, medido como fracción del intervalo del checkpoint." -#: utils/misc/guc.c:2986 +#: utils/misc/guc.c:2984 msgid "Sets the shell command that will be called to archive a WAL file." msgstr "Orden de shell que se invocará para archivar un archivo WAL." -#: utils/misc/guc.c:2996 +#: utils/misc/guc.c:2994 msgid "Sets the client's character set encoding." msgstr "Codificación del juego de caracteres del cliente." -#: utils/misc/guc.c:3007 +#: utils/misc/guc.c:3005 msgid "Controls information prefixed to each log line." msgstr "Controla el prefijo que antecede cada línea registrada." -#: utils/misc/guc.c:3008 +#: utils/misc/guc.c:3006 msgid "If blank, no prefix is used." msgstr "si está en blanco, no se usa prefijo." -#: utils/misc/guc.c:3017 +#: utils/misc/guc.c:3015 msgid "Sets the time zone to use in log messages." msgstr "Define el huso horario usando en los mensajes registrados." -#: utils/misc/guc.c:3027 +#: utils/misc/guc.c:3025 msgid "Sets the display format for date and time values." msgstr "Formato de salida para valores de horas y fechas." -#: utils/misc/guc.c:3028 +#: utils/misc/guc.c:3026 msgid "Also controls interpretation of ambiguous date inputs." msgstr "También controla la interpretación de entradas ambiguas de fechas" -#: utils/misc/guc.c:3039 +#: utils/misc/guc.c:3037 msgid "Sets the default tablespace to create tables and indexes in." msgstr "Define el tablespace en el cual crear tablas e índices." -#: utils/misc/guc.c:3040 +#: utils/misc/guc.c:3038 msgid "An empty string selects the database's default tablespace." msgstr "Una cadena vacía especifica el tablespace por omisión de la base de datos." -#: utils/misc/guc.c:3050 +#: utils/misc/guc.c:3048 msgid "Sets the tablespace(s) to use for temporary tables and sort files." msgstr "Define el/los tablespace/s en el cual crear tablas temporales y archivos de ordenamiento." -#: utils/misc/guc.c:3061 +#: utils/misc/guc.c:3059 msgid "Sets the path for dynamically loadable modules." msgstr "Ruta para módulos dinámicos." -#: utils/misc/guc.c:3062 +#: utils/misc/guc.c:3060 msgid "If a dynamically loadable module needs to be opened and the specified name does not have a directory component (i.e., the name does not contain a slash), the system will search this path for the specified file." msgstr "Si se necesita abrir un módulo dinámico y el nombre especificado no tiene un componente de directorio (es decir, no contiene un slash), el sistema buscará el archivo especificado en esta ruta." -#: utils/misc/guc.c:3075 +#: utils/misc/guc.c:3073 msgid "Sets the location of the Kerberos server key file." msgstr "Ubicación del archivo de llave del servidor Kerberos." -#: utils/misc/guc.c:3086 +#: utils/misc/guc.c:3084 msgid "Sets the Bonjour service name." msgstr "Nombre del servicio Bonjour." -#: utils/misc/guc.c:3098 +#: utils/misc/guc.c:3096 msgid "Shows the collation order locale." msgstr "Configuración regional de ordenamiento de cadenas (collation)." -#: utils/misc/guc.c:3109 +#: utils/misc/guc.c:3107 msgid "Shows the character classification and case conversion locale." msgstr "Configuración regional de clasificación de caracteres y conversión de mayúsculas." -#: utils/misc/guc.c:3120 +#: utils/misc/guc.c:3118 msgid "Sets the language in which messages are displayed." msgstr "Idioma en el que se despliegan los mensajes." -#: utils/misc/guc.c:3130 +#: utils/misc/guc.c:3128 msgid "Sets the locale for formatting monetary amounts." msgstr "Configuración regional para formatos de moneda." -#: utils/misc/guc.c:3140 +#: utils/misc/guc.c:3138 msgid "Sets the locale for formatting numbers." msgstr "Configuración regional para formatos de números." -#: utils/misc/guc.c:3150 +#: utils/misc/guc.c:3148 msgid "Sets the locale for formatting date and time values." msgstr "Configuración regional para formatos de horas y fechas." -#: utils/misc/guc.c:3160 +#: utils/misc/guc.c:3158 msgid "Lists shared libraries to preload into each backend." msgstr "Bibliotecas compartidas a precargar en cada proceso." -#: utils/misc/guc.c:3171 +#: utils/misc/guc.c:3169 msgid "Lists shared libraries to preload into server." msgstr "Bibliotecas compartidas a precargar en el servidor." -#: utils/misc/guc.c:3182 +#: utils/misc/guc.c:3180 msgid "Lists unprivileged shared libraries to preload into each backend." msgstr "Bibliotecas compartidas no privilegiadas a precargar en cada proceso." -#: utils/misc/guc.c:3193 +#: utils/misc/guc.c:3191 msgid "Sets the schema search order for names that are not schema-qualified." msgstr "Orden de búsqueda en schemas para nombres que no especifican schema." -#: utils/misc/guc.c:3205 +#: utils/misc/guc.c:3203 msgid "Sets the server (database) character set encoding." msgstr "Codificación de caracteres del servidor (bases de datos)." -#: utils/misc/guc.c:3217 +#: utils/misc/guc.c:3215 msgid "Shows the server version." msgstr "Versión del servidor." -#: utils/misc/guc.c:3229 +#: utils/misc/guc.c:3227 msgid "Sets the current role." msgstr "Define el rol actual." -#: utils/misc/guc.c:3241 +#: utils/misc/guc.c:3239 msgid "Sets the session user name." msgstr "Define el nombre del usuario de sesión." -#: utils/misc/guc.c:3252 +#: utils/misc/guc.c:3250 msgid "Sets the destination for server log output." msgstr "Define el destino de la salida del registro del servidor." -#: utils/misc/guc.c:3253 +#: utils/misc/guc.c:3251 msgid "Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and \"eventlog\", depending on the platform." msgstr "Los valores aceptables son combinaciones de «stderr», «syslog», «csvlog» y «eventlog», dependiendo de la plataforma." -#: utils/misc/guc.c:3264 +#: utils/misc/guc.c:3262 msgid "Sets the destination directory for log files." msgstr "Define el directorio de destino de los archivos del registro del servidor." -#: utils/misc/guc.c:3265 +#: utils/misc/guc.c:3263 msgid "Can be specified as relative to the data directory or as absolute path." msgstr "Puede ser una ruta relativa al directorio de datos o una ruta absoluta." -#: utils/misc/guc.c:3275 +#: utils/misc/guc.c:3273 msgid "Sets the file name pattern for log files." msgstr "Define el patrón para los nombres de archivo del registro del servidor." -#: utils/misc/guc.c:3286 +#: utils/misc/guc.c:3284 msgid "Sets the program name used to identify PostgreSQL messages in syslog." msgstr "Nombre de programa para identificar PostgreSQL en mensajes de syslog." -#: utils/misc/guc.c:3297 +#: utils/misc/guc.c:3295 msgid "Sets the application name used to identify PostgreSQL messages in the event log." msgstr "Nombre de programa para identificar PostgreSQL en mensajes del log de eventos." -#: utils/misc/guc.c:3308 +#: utils/misc/guc.c:3306 msgid "Sets the time zone for displaying and interpreting time stamps." msgstr "Huso horario para desplegar e interpretar valores de tiempo." -#: utils/misc/guc.c:3318 +#: utils/misc/guc.c:3316 msgid "Selects a file of time zone abbreviations." msgstr "Selecciona un archivo de abreviaciones de huso horario." -#: utils/misc/guc.c:3328 +#: utils/misc/guc.c:3326 msgid "Sets the current transaction's isolation level." msgstr "Define el nivel de aislación de la transacción en curso." -#: utils/misc/guc.c:3339 +#: utils/misc/guc.c:3337 msgid "Sets the owning group of the Unix-domain socket." msgstr "Grupo dueño del socket de dominio Unix." -#: utils/misc/guc.c:3340 +#: utils/misc/guc.c:3338 msgid "The owning user of the socket is always the user that starts the server." msgstr "El usuario dueño del socket siempre es el usuario que inicia el servidor." -#: utils/misc/guc.c:3350 +#: utils/misc/guc.c:3348 msgid "Sets the directories where Unix-domain sockets will be created." msgstr "Directorios donde se crearán los sockets de dominio Unix." -#: utils/misc/guc.c:3365 +#: utils/misc/guc.c:3363 msgid "Sets the host name or IP address(es) to listen to." msgstr "Define el nombre de anfitrión o dirección IP en la cual escuchar." -#: utils/misc/guc.c:3380 +#: utils/misc/guc.c:3378 msgid "Sets the server's data directory." msgstr "Define la ubicación del directorio de datos." -#: utils/misc/guc.c:3391 +#: utils/misc/guc.c:3389 msgid "Sets the server's main configuration file." msgstr "Define la ubicación del archivo principal de configuración del servidor." -#: utils/misc/guc.c:3402 +#: utils/misc/guc.c:3400 msgid "Sets the server's \"hba\" configuration file." msgstr "Define la ubicación del archivo de configuración «hba» del servidor." -#: utils/misc/guc.c:3413 +#: utils/misc/guc.c:3411 msgid "Sets the server's \"ident\" configuration file." msgstr "Define la ubicación del archivo de configuración «ident» del servidor." -#: utils/misc/guc.c:3424 +#: utils/misc/guc.c:3422 msgid "Writes the postmaster PID to the specified file." msgstr "Registra el PID de postmaster en el archivo especificado." -#: utils/misc/guc.c:3435 +#: utils/misc/guc.c:3433 msgid "Location of the SSL server certificate file." msgstr "Ubicación del archivo de certificado SSL del servidor." -#: utils/misc/guc.c:3445 +#: utils/misc/guc.c:3443 msgid "Location of the SSL server private key file." msgstr "Ubicación del archivo de la llave SSL privada del servidor." -#: utils/misc/guc.c:3455 +#: utils/misc/guc.c:3453 msgid "Location of the SSL certificate authority file." msgstr "Ubicación del archivo de autoridad certificadora SSL." -#: utils/misc/guc.c:3465 +#: utils/misc/guc.c:3463 msgid "Location of the SSL certificate revocation list file." msgstr "Ubicación del archivo de lista de revocación de certificados SSL" -#: utils/misc/guc.c:3475 +#: utils/misc/guc.c:3473 msgid "Writes temporary statistics files to the specified directory." msgstr "Escribe los archivos temporales de estadísticas al directorio especificado." -#: utils/misc/guc.c:3486 -#, fuzzy -#| msgid "List of names of potential synchronous standbys." +#: utils/misc/guc.c:3484 msgid "Number of synchronous standbys and list of names of potential synchronous ones." -msgstr "Lista de nombres de potenciales standbys sincrónicos." +msgstr "Número de standbys sincrónicos y lista de nombres de los potenciales sincrónicos." -#: utils/misc/guc.c:3497 +#: utils/misc/guc.c:3495 msgid "Sets default text search configuration." msgstr "Define la configuración de búsqueda en texto por omisión." -#: utils/misc/guc.c:3507 +#: utils/misc/guc.c:3505 msgid "Sets the list of allowed SSL ciphers." msgstr "Define la lista de cifrados SSL permitidos." -#: utils/misc/guc.c:3522 +#: utils/misc/guc.c:3520 msgid "Sets the curve to use for ECDH." msgstr "Define la curva a usar para ECDH." -#: utils/misc/guc.c:3537 +#: utils/misc/guc.c:3535 msgid "Sets the application name to be reported in statistics and logs." msgstr "Define el nombre de aplicación a reportarse en estadísticas y logs." -#: utils/misc/guc.c:3548 +#: utils/misc/guc.c:3546 msgid "Sets the name of the cluster, which is included in the process title." -msgstr "" +msgstr "Define el nombre del clúster, el cual se incluye en el título de proceso." -#: utils/misc/guc.c:3568 +#: utils/misc/guc.c:3566 msgid "Sets whether \"\\'\" is allowed in string literals." msgstr "Define si «\\'» está permitido en literales de cadena." -#: utils/misc/guc.c:3578 +#: utils/misc/guc.c:3576 msgid "Sets the output format for bytea." msgstr "Formato de salida para bytea." -#: utils/misc/guc.c:3588 +#: utils/misc/guc.c:3586 msgid "Sets the message levels that are sent to the client." msgstr "Nivel de mensajes enviados al cliente." -#: utils/misc/guc.c:3589 utils/misc/guc.c:3642 utils/misc/guc.c:3653 -#: utils/misc/guc.c:3719 +#: utils/misc/guc.c:3587 utils/misc/guc.c:3640 utils/misc/guc.c:3651 +#: utils/misc/guc.c:3717 msgid "Each level includes all the levels that follow it. The later the level, the fewer messages are sent." msgstr "Cada nivel incluye todos los niveles que lo siguen. Mientras más posterior el nivel, menos mensajes se enviarán." -#: utils/misc/guc.c:3599 +#: utils/misc/guc.c:3597 msgid "Enables the planner to use constraints to optimize queries." msgstr "Permitir el uso de restricciones para limitar los accesos a tablas." -#: utils/misc/guc.c:3600 +#: utils/misc/guc.c:3598 msgid "Table scans will be skipped if their constraints guarantee that no rows match the query." msgstr "Las tablas no serán recorridas si sus restricciones garantizan que ninguna fila coincidirá con la consulta." -#: utils/misc/guc.c:3610 +#: utils/misc/guc.c:3608 msgid "Sets the transaction isolation level of each new transaction." msgstr "Nivel de aislación (isolation level) de transacciones nuevas." -#: utils/misc/guc.c:3620 +#: utils/misc/guc.c:3618 msgid "Sets the display format for interval values." msgstr "Formato de salida para valores de intervalos." -#: utils/misc/guc.c:3631 +#: utils/misc/guc.c:3629 msgid "Sets the verbosity of logged messages." msgstr "Verbosidad de los mensajes registrados." -#: utils/misc/guc.c:3641 +#: utils/misc/guc.c:3639 msgid "Sets the message levels that are logged." msgstr "Nivel de mensajes registrados." -#: utils/misc/guc.c:3652 +#: utils/misc/guc.c:3650 msgid "Causes all statements generating error at or above this level to be logged." msgstr "Registrar sentencias que generan error de nivel superior o igual a éste." -#: utils/misc/guc.c:3663 +#: utils/misc/guc.c:3661 msgid "Sets the type of statements logged." msgstr "Define el tipo de sentencias que se registran." -#: utils/misc/guc.c:3673 +#: utils/misc/guc.c:3671 msgid "Sets the syslog \"facility\" to be used when syslog enabled." msgstr "«Facility» de syslog que se usará cuando syslog esté habilitado." -#: utils/misc/guc.c:3688 +#: utils/misc/guc.c:3686 msgid "Sets the session's behavior for triggers and rewrite rules." msgstr "Define el comportamiento de la sesión con respecto a disparadores y reglas de reescritura." -#: utils/misc/guc.c:3698 +#: utils/misc/guc.c:3696 msgid "Sets the current transaction's synchronization level." msgstr "Define el nivel de sincronización de la transacción en curso." -#: utils/misc/guc.c:3708 +#: utils/misc/guc.c:3706 msgid "Allows archiving of WAL files using archive_command." msgstr "Permite el archivado de WAL usando archive_command." -#: utils/misc/guc.c:3718 +#: utils/misc/guc.c:3716 msgid "Enables logging of recovery-related debugging information." msgstr "Recolectar información de depuración relacionada con la recuperación." -#: utils/misc/guc.c:3734 +#: utils/misc/guc.c:3732 msgid "Collects function-level statistics on database activity." msgstr "Recolectar estadísticas de actividad de funciones en la base de datos." -#: utils/misc/guc.c:3744 +#: utils/misc/guc.c:3742 msgid "Set the level of information written to the WAL." msgstr "Nivel de información escrita a WAL." -#: utils/misc/guc.c:3754 +#: utils/misc/guc.c:3752 msgid "Selects the dynamic shared memory implementation used." msgstr "Escoge la implementación de memoria compartida dinámica que se usará." -#: utils/misc/guc.c:3764 +#: utils/misc/guc.c:3762 msgid "Selects the method used for forcing WAL updates to disk." msgstr "Selecciona el método usado para forzar escritura de WAL a disco." -#: utils/misc/guc.c:3774 +#: utils/misc/guc.c:3772 msgid "Sets how binary values are to be encoded in XML." msgstr "Define cómo se codificarán los valores binarios en XML." -#: utils/misc/guc.c:3784 +#: utils/misc/guc.c:3782 msgid "Sets whether XML data in implicit parsing and serialization operations is to be considered as documents or content fragments." msgstr "Define si los datos XML implícitos en operaciones de análisis y serialización serán considerados documentos o fragmentos de contenido." -#: utils/misc/guc.c:3795 +#: utils/misc/guc.c:3793 msgid "Use of huge pages on Linux." msgstr "Uso de «huge pages» en Linux." -#: utils/misc/guc.c:3805 +#: utils/misc/guc.c:3803 msgid "Forces use of parallel query facilities." -msgstr "" +msgstr "Obliga al uso de la funcionalidad de consultas paralelas." -#: utils/misc/guc.c:3806 +#: utils/misc/guc.c:3804 msgid "If possible, run query using a parallel worker and with parallel restrictions." -msgstr "" +msgstr "Si es posible, ejecuta cada consulta en un proceso trabajador paralelo y con restricciones de paralelismo." -#: utils/misc/guc.c:4606 +#: utils/misc/guc.c:4604 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: no se pudo acceder al directorio «%s»: %s\n" -#: utils/misc/guc.c:4611 -#, fuzzy, c-format -#| msgid "" -#| "%s initializes a PostgreSQL database cluster.\n" -#| "\n" +#: utils/misc/guc.c:4609 +#, c-format msgid "Run initdb or pg_basebackup to initialize a PostgreSQL data directory.\n" -msgstr "" -"%s inicializa un cluster de base de datos PostgreSQL.\n" -"\n" +msgstr "Ejecute initdb o pg_basebackup para inicializar un directorio de datos de PostgreSQL.\n" -#: utils/misc/guc.c:4631 +#: utils/misc/guc.c:4629 #, c-format msgid "" "%s does not know where to find the server configuration file.\n" @@ -23094,13 +22263,12 @@ msgstr "" "%s no sabe dónde encontrar el archivo de configuración del servidor.\n" "Debe especificar la opción --config-file o -D o definir la variable de ambiente PGDATA.\n" -#: utils/misc/guc.c:4650 -#, fuzzy, c-format -#| msgid "%s cannot access the server configuration file \"%s\": %s\n" +#: utils/misc/guc.c:4648 +#, c-format msgid "%s: could not access the server configuration file \"%s\": %s\n" -msgstr "%s no pudo examinar el archivo de configuración «%s»: %s\n" +msgstr "%s: no se pudo acceder al archivo de configuración «%s»: %s\n" -#: utils/misc/guc.c:4676 +#: utils/misc/guc.c:4674 #, c-format msgid "" "%s does not know where to find the database system data.\n" @@ -23109,7 +22277,7 @@ msgstr "" "%s no sabe dónde encontrar los archivos de sistema de la base de datos.\n" "Esto puede especificarse como «data_directory» en «%s», o usando la opción -D, o a través de la variable de ambiente PGDATA.\n" -#: utils/misc/guc.c:4724 +#: utils/misc/guc.c:4722 #, c-format msgid "" "%s does not know where to find the \"hba\" configuration file.\n" @@ -23118,7 +22286,7 @@ msgstr "" "%s no sabe dónde encontrar el archivo de configuración «hba».\n" "Esto puede especificarse como «hba_file» en «%s», o usando la opción -D, o a través de la variable de ambiente PGDATA.\n" -#: utils/misc/guc.c:4747 +#: utils/misc/guc.c:4745 #, c-format msgid "" "%s does not know where to find the \"ident\" configuration file.\n" @@ -23127,138 +22295,145 @@ msgstr "" "%s no sabe dónde encontrar el archivo de configuración «ident».\n" "Esto puede especificarse como «ident_file» en «%s», o usando la opción -D, o a través de la variable de ambiente PGDATA.\n" -#: utils/misc/guc.c:5421 utils/misc/guc.c:5468 +#: utils/misc/guc.c:5419 utils/misc/guc.c:5466 msgid "Value exceeds integer range." msgstr "El valor excede el rango para enteros." -#: utils/misc/guc.c:5691 +#: utils/misc/guc.c:5689 #, c-format msgid "parameter \"%s\" requires a numeric value" msgstr "el parámetro «%s» requiere un valor numérico" -#: utils/misc/guc.c:5700 +#: utils/misc/guc.c:5698 #, c-format msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)" msgstr "%g está fuera del rango aceptable para el parámetro «%s» (%g .. %g)" -#: utils/misc/guc.c:5853 utils/misc/guc.c:7196 -#, fuzzy, c-format +#: utils/misc/guc.c:5851 utils/misc/guc.c:7194 +#, c-format msgid "cannot set parameters during a parallel operation" -msgstr "no se puede definir el parámetro «%s» dentro de una operación restringida por seguridad" +msgstr "no se puede definir parámetros durante una operación paralela" -#: utils/misc/guc.c:5860 utils/misc/guc.c:6611 utils/misc/guc.c:6663 -#: utils/misc/guc.c:7024 utils/misc/guc.c:7784 utils/misc/guc.c:7952 -#: utils/misc/guc.c:9609 +#: utils/misc/guc.c:5858 utils/misc/guc.c:6609 utils/misc/guc.c:6661 +#: utils/misc/guc.c:7022 utils/misc/guc.c:7782 utils/misc/guc.c:7950 +#: utils/misc/guc.c:9625 #, c-format msgid "unrecognized configuration parameter \"%s\"" msgstr "parámetro de configuración no reconocido: «%s»" -#: utils/misc/guc.c:5875 utils/misc/guc.c:7036 +#: utils/misc/guc.c:5873 utils/misc/guc.c:7034 #, c-format msgid "parameter \"%s\" cannot be changed" msgstr "no se puede cambiar el parámetro «%s»" -#: utils/misc/guc.c:5908 +#: utils/misc/guc.c:5896 utils/misc/guc.c:6089 utils/misc/guc.c:6179 +#: utils/misc/guc.c:6269 utils/misc/guc.c:6377 utils/misc/guc.c:6472 +#: guc-file.l:350 +#, c-format +msgid "parameter \"%s\" cannot be changed without restarting the server" +msgstr "el parámetro «%s» no se puede cambiar sin reiniciar el servidor" + +#: utils/misc/guc.c:5906 #, c-format msgid "parameter \"%s\" cannot be changed now" msgstr "el parámetro «%s» no se puede cambiar en este momento" -#: utils/misc/guc.c:5926 utils/misc/guc.c:5972 utils/misc/guc.c:9625 +#: utils/misc/guc.c:5924 utils/misc/guc.c:5970 utils/misc/guc.c:9641 #, c-format msgid "permission denied to set parameter \"%s\"" msgstr "se ha denegado el permiso para cambiar la opción «%s»" -#: utils/misc/guc.c:5962 +#: utils/misc/guc.c:5960 #, c-format msgid "parameter \"%s\" cannot be set after connection start" msgstr "el parámetro «%s» no se puede cambiar después de efectuar la conexión" -#: utils/misc/guc.c:6010 +#: utils/misc/guc.c:6008 #, c-format msgid "cannot set parameter \"%s\" within security-definer function" msgstr "no se puede definir el parámetro «%s» dentro una función security-definer" -#: utils/misc/guc.c:6619 utils/misc/guc.c:6667 utils/misc/guc.c:7958 +#: utils/misc/guc.c:6617 utils/misc/guc.c:6665 utils/misc/guc.c:7956 #, c-format msgid "must be superuser to examine \"%s\"" msgstr "debe ser superusuario para examinar «%s»" -#: utils/misc/guc.c:6733 +#: utils/misc/guc.c:6731 #, c-format msgid "SET %s takes only one argument" msgstr "SET %s lleva sólo un argumento" -#: utils/misc/guc.c:6984 +#: utils/misc/guc.c:6982 #, c-format msgid "must be superuser to execute ALTER SYSTEM command" msgstr "debe ser superusuario ejecutar la orden ALTER SYSTEM" -#: utils/misc/guc.c:7069 +#: utils/misc/guc.c:7067 #, c-format msgid "parameter value for ALTER SYSTEM must not contain a newline" -msgstr "" +msgstr "los valores de parámetros para ALTER SYSTEM no deben contener saltos de línea" -#: utils/misc/guc.c:7114 +#: utils/misc/guc.c:7112 #, c-format msgid "could not parse contents of file \"%s\"" msgstr "no se pudo interpretar el contenido del archivo «%s»" -#: utils/misc/guc.c:7272 +#: utils/misc/guc.c:7270 #, c-format msgid "SET LOCAL TRANSACTION SNAPSHOT is not implemented" msgstr "SET LOCAL TRANSACTION SNAPSHOT no está implementado" -#: utils/misc/guc.c:7357 +#: utils/misc/guc.c:7355 #, c-format msgid "SET requires parameter name" msgstr "SET requiere el nombre de un parámetro" -#: utils/misc/guc.c:7481 +#: utils/misc/guc.c:7479 #, c-format msgid "attempt to redefine parameter \"%s\"" msgstr "intento de cambiar la opción «%s»" -#: utils/misc/guc.c:9242 -#, fuzzy, c-format +#: utils/misc/guc.c:9258 +#, c-format msgid "parameter \"%s\" could not be set" -msgstr "no se puede cambiar el parámetro «%s»" +msgstr "no se pudo cambiar el parámetro «%s»" -#: utils/misc/guc.c:9329 +#: utils/misc/guc.c:9345 #, c-format msgid "could not parse setting for parameter \"%s\"" msgstr "no se pudo interpretar el valor de para el parámetro «%s»" -#: utils/misc/guc.c:9687 utils/misc/guc.c:9721 +#: utils/misc/guc.c:9703 utils/misc/guc.c:9737 #, c-format msgid "invalid value for parameter \"%s\": %d" msgstr "valor no válido para el parámetro «%s»: %d" -#: utils/misc/guc.c:9755 +#: utils/misc/guc.c:9771 #, c-format msgid "invalid value for parameter \"%s\": %g" msgstr "valor no válido para el parámetro «%s»: %g" -#: utils/misc/guc.c:9945 +#: utils/misc/guc.c:9961 #, c-format msgid "\"temp_buffers\" cannot be changed after any temporary tables have been accessed in the session." msgstr "«temp_buffers» no puede ser cambiado después de que cualquier tabla temporal haya sido accedida en la sesión." -#: utils/misc/guc.c:9957 +#: utils/misc/guc.c:9973 #, c-format msgid "Bonjour is not supported by this build" msgstr "Bonjour no está soportado en este servidor" -#: utils/misc/guc.c:9970 +#: utils/misc/guc.c:9986 #, c-format msgid "SSL is not supported by this build" msgstr "SSL no está soportado en este servidor" -#: utils/misc/guc.c:9982 +#: utils/misc/guc.c:9998 #, c-format msgid "Cannot enable parameter when \"log_statement_stats\" is true." msgstr "No se puede activar el parámetro cuando «log_statement_stats» está activo." -#: utils/misc/guc.c:9994 +#: utils/misc/guc.c:10010 #, c-format msgid "Cannot enable \"log_statement_stats\" when \"log_parser_stats\", \"log_planner_stats\", or \"log_executor_stats\" is true." msgstr "No se puede activar «log_statement_stats» cuando «log_parser_stats», «log_planner_stats» o «log_executor_stats» están activos." @@ -23271,17 +22446,23 @@ msgstr "error interno: tipo parámetro no reconocido\n" #: utils/misc/pg_config.c:61 #, c-format msgid "query-specified return tuple and function return type are not compatible" -msgstr "" +msgstr "tupla de retorno especificada por la consulta y el tipo retornado por la función no son compatibles" + +#. translator: %d.%02ds is system CPU time, %d.%02du is user CPU time +#: utils/misc/pg_rusage.c:66 +#, c-format +msgid "CPU %d.%02ds/%d.%02du sec elapsed %d.%02d sec" +msgstr "CPU %d.%02ds/%d.%02du seg, transcurridos %d.%02d seg" #: utils/misc/rls.c:127 #, c-format msgid "query would be affected by row-level security policy for table \"%s\"" -msgstr "" +msgstr "la consulta sería afectada por la política de seguridad de registros para la tabla «%s»" #: utils/misc/rls.c:129 #, c-format msgid "To disable the policy for the table's owner, use ALTER TABLE NO FORCE ROW LEVEL SECURITY." -msgstr "" +msgstr "Para desactivar la política para el dueño de la tabla, use ALTER TABLE NO FORCE ROW LEVEL SECURITY." #: utils/misc/timeout.c:388 #, c-format @@ -23353,7 +22534,7 @@ msgstr "línea demasiado larga en archivo de huso horario «%s», línea %d" msgid "@INCLUDE without file name in time zone file \"%s\", line %d" msgstr "@INCLUDE sin nombre de archivo en archivo de huso horario «%s», línea %d" -#: utils/mmgr/aset.c:510 +#: utils/mmgr/aset.c:511 #, c-format msgid "Failed while creating memory context \"%s\"." msgstr "Falla al crear el contexto de memoria «%s»." @@ -23396,23 +22577,22 @@ msgstr "no se puede hacer PREPARE de una transacción que ha creado un cursor WI msgid "could not read block %ld of temporary file: %m" msgstr "no se pudo leer el bloque %ld del archivo temporal: %m" -#: utils/sort/tuplesort.c:3393 -#, fuzzy, c-format -#| msgid "cannot use more than %d columns in an index" +#: utils/sort/tuplesort.c:3402 +#, c-format msgid "cannot have more than %d runs for an external sort" -msgstr "no se puede usar más de %d columnas en un índice" +msgstr "no se pueden tener más de %d pasadas para un ordenamiento externo" -#: utils/sort/tuplesort.c:4465 +#: utils/sort/tuplesort.c:4479 #, c-format msgid "could not create unique index \"%s\"" msgstr "no se pudo crear el índice único «%s»" -#: utils/sort/tuplesort.c:4467 +#: utils/sort/tuplesort.c:4481 #, c-format msgid "Key %s is duplicated." msgstr "La llave %s está duplicada." -#: utils/sort/tuplesort.c:4468 +#: utils/sort/tuplesort.c:4482 #, c-format msgid "Duplicate keys exist." msgstr "Existe una llave duplicada." @@ -23438,383 +22618,497 @@ msgstr "no se pudo leer el archivo temporal de tuplestore: %m" msgid "could not write to tuplestore temporary file: %m" msgstr "no se pudo escribir el archivo temporal de tuplestore: %m" -#: utils/time/snapmgr.c:577 -#, fuzzy, c-format +#: utils/time/snapmgr.c:618 +#, c-format msgid "The source transaction is not running anymore." -msgstr "La transacción de origen %u ya no está en ejecución." +msgstr "La transacción de origen ya no está en ejecución." -#: utils/time/snapmgr.c:1138 +#: utils/time/snapmgr.c:1190 #, c-format msgid "cannot export a snapshot from a subtransaction" msgstr "no se puede exportar snapshots desde una subtransacción" -#: utils/time/snapmgr.c:1287 utils/time/snapmgr.c:1292 -#: utils/time/snapmgr.c:1297 utils/time/snapmgr.c:1312 -#: utils/time/snapmgr.c:1317 utils/time/snapmgr.c:1322 -#: utils/time/snapmgr.c:1421 utils/time/snapmgr.c:1437 -#: utils/time/snapmgr.c:1462 +#: utils/time/snapmgr.c:1339 utils/time/snapmgr.c:1344 +#: utils/time/snapmgr.c:1349 utils/time/snapmgr.c:1364 +#: utils/time/snapmgr.c:1369 utils/time/snapmgr.c:1374 +#: utils/time/snapmgr.c:1473 utils/time/snapmgr.c:1489 +#: utils/time/snapmgr.c:1514 #, c-format msgid "invalid snapshot data in file \"%s\"" msgstr "datos no válidos en archivo de snapshot «%s»" -#: utils/time/snapmgr.c:1359 +#: utils/time/snapmgr.c:1411 #, c-format msgid "SET TRANSACTION SNAPSHOT must be called before any query" msgstr "SET TRANSACTION SNAPSHOT debe ser llamado antes de cualquier consulta" -#: utils/time/snapmgr.c:1368 +#: utils/time/snapmgr.c:1420 #, c-format msgid "a snapshot-importing transaction must have isolation level SERIALIZABLE or REPEATABLE READ" msgstr "una transacción que importa un snapshot no debe tener nivel de aislación SERIALIZABLE o REPEATABLE READ" -#: utils/time/snapmgr.c:1377 utils/time/snapmgr.c:1386 +#: utils/time/snapmgr.c:1429 utils/time/snapmgr.c:1438 #, c-format msgid "invalid snapshot identifier: \"%s\"" msgstr "identificador de snapshot no válido: «%s»" -#: utils/time/snapmgr.c:1475 +#: utils/time/snapmgr.c:1527 #, c-format msgid "a serializable transaction cannot import a snapshot from a non-serializable transaction" msgstr "una transacción serializable no puede importar un snapshot desde una transacción no serializable" -#: utils/time/snapmgr.c:1479 +#: utils/time/snapmgr.c:1531 #, c-format msgid "a non-read-only serializable transaction cannot import a snapshot from a read-only transaction" msgstr "una transacción serializable que no es de sólo lectura no puede importar un snapshot de una transacción de sólo lectura" -#: utils/time/snapmgr.c:1494 +#: utils/time/snapmgr.c:1546 #, c-format msgid "cannot import a snapshot from a different database" msgstr "no se puede importar un snapshot desde una base de datos diferente" -#~ msgid "mapped win32 error code %lu to %d" -#~ msgstr "código de error win32 %lu mapeado a %d" - -#~ msgid "unrecognized win32 error code: %lu" -#~ msgstr "código de error win32 no reconocido: %lu" - -#~ msgid "could not create two-phase state file \"%s\": %m" -#~ msgstr "no se pudo crear el archivo de estado de COMMIT en dos fases «%s»: %m" - -#~ msgid "could not seek in two-phase state file: %m" -#~ msgstr "no se pudo posicionar (seek) en el archivo de estado de COMMIT en dos fases: %m" - -#~ msgid "two-phase state file for transaction %u is corrupt" -#~ msgstr "el archivo de estado de COMMIT en dos fases para la transacción %u está dañado" - -#~ msgid "could not fsync two-phase state file \"%s\": %m" -#~ msgstr "no se pudo sincronizar (fsync) el archivo de estado de COMMIT en dos fases «%s»: %m" - -#~ msgid "could not close two-phase state file \"%s\": %m" -#~ msgstr "no se pudo cerrar el archivo de estado de COMMIT en dos fases «%s»: %m" - -#~ msgid "could not link file \"%s\" to \"%s\" (initialization of log file): %m" -#~ msgstr "no se pudo enlazar (link) el archivo «%s» a «%s» (inicialización de archivo de registro): %m" - -#~ msgid "could not rename file \"%s\" to \"%s\" (initialization of log file): %m" -#~ msgstr "no se pudo renombrar archivo de «%s» a «%s» (inicialización de archivo de registro): %m" - -#~ msgid "invalid value for recovery parameter \"recovery_target\"" -#~ msgstr "valor no válido para el parámetro de recuperación «recovery_target»" +#: gram.y:1004 +#, c-format +msgid "unrecognized role option \"%s\"" +msgstr "opción de rol no reconocida «%s»" -#~ msgid "redo record is at %X/%X; shutdown %s" -#~ msgstr "registro de redo en %X/%X; apagado %s" +#: gram.y:1286 gram.y:1301 +#, c-format +msgid "CREATE SCHEMA IF NOT EXISTS cannot include schema elements" +msgstr "CREATE SCHEMA IF NOT EXISTS no puede incluir elementos de esquema" -#~ msgid "next transaction ID: %u/%u; next OID: %u" -#~ msgstr "siguiente ID de transacción: %u/%u; siguiente OID: %u" +#: gram.y:1446 +#, c-format +msgid "current database cannot be changed" +msgstr "no se puede cambiar la base de datos activa" -#~ msgid "next MultiXactId: %u; next MultiXactOffset: %u" -#~ msgstr "siguiente MultiXactId: %u; siguiente MultiXactOffset: %u" +#: gram.y:1570 +#, c-format +msgid "time zone interval must be HOUR or HOUR TO MINUTE" +msgstr "el intervalo de huso horario debe ser HOUR o HOUR TO MINUTE" -#~ msgid "oldest unfrozen transaction ID: %u, in database %u" -#~ msgstr "ID de transacción más antigua sin congelar: %u, en base de datos %u" +#: gram.y:2608 gram.y:2637 +#, c-format +msgid "STDIN/STDOUT not allowed with PROGRAM" +msgstr "STDIN/STDOUT no están permitidos con PROGRAM" -#~ msgid "oldest MultiXactId: %u, in database %u" -#~ msgstr "MultiXactId más antiguo: %u, en base de datos %u" +#: gram.y:2903 gram.y:2910 gram.y:10304 gram.y:10312 +#, c-format +msgid "GLOBAL is deprecated in temporary table creation" +msgstr "GLOBAL está obsoleto para la creación de tablas temporales" -#~ msgid "must be superuser or replication role to run a backup" -#~ msgstr "debe ser superusuario o el rol de replicación para ejecutar un respaldo" +#: gram.y:4818 +msgid "duplicate trigger events specified" +msgstr "se han especificado eventos de disparador duplicados" -#~ msgid "must be superuser to switch transaction log files" -#~ msgstr "debe ser superusuario para cambiar a un nuevo archivo de registro" +#: gram.y:4918 +#, c-format +msgid "conflicting constraint properties" +msgstr "propiedades de restricción contradictorias" -#~ msgid "must be superuser to create a restore point" -#~ msgstr "debe ser superusuario para crear un punto de recuperación" +#: gram.y:5050 +#, c-format +msgid "CREATE ASSERTION is not yet implemented" +msgstr "CREATE ASSERTION no está implementado" -#~ msgid "must be superuser to control recovery" -#~ msgstr "debe ser superusuario para controlar la recuperación" +#: gram.y:5066 +#, c-format +msgid "DROP ASSERTION is not yet implemented" +msgstr "DROP ASSERTION no está implementado" -#~ msgid "%s is already in schema \"%s\"" -#~ msgstr "%s ya está en el esquema «%s»" +#: gram.y:5412 +#, c-format +msgid "RECHECK is no longer required" +msgstr "RECHECK ya no es requerido" -#~ msgid "function \"%s\" must return type \"event_trigger\"" -#~ msgstr "la función «%s» debe retornar tipo «event_trigger»" +#: gram.y:5413 +#, c-format +msgid "Update your data type." +msgstr "Actualice su tipo de datos." -#~ msgid "function %s must return type \"fdw_handler\"" -#~ msgstr "la función %s debe retornar tipo «fdw_handler»" +#: gram.y:6992 +#, c-format +msgid "aggregates cannot have output arguments" +msgstr "las funciones de agregación no pueden tener argumentos de salida" -#~ msgid "could not reposition held cursor" -#~ msgstr "no se pudo reposicionar cursor abierto" +#: gram.y:8862 gram.y:8880 +#, c-format +msgid "WITH CHECK OPTION not supported on recursive views" +msgstr "WITH CHECK OPTION no está soportado con vistas recursivas" -#~ msgid "function %s must return type \"language_handler\"" -#~ msgstr "la función %s debe retornar tipo «language_handler»" +#: gram.y:9398 +#, c-format +msgid "unrecognized VACUUM option \"%s\"" +msgstr "opción de VACUUM «%s» no reconocida" -#~ msgid "\"%s\" is not a table, materialized view, composite type, or foreign table" -#~ msgstr "«%s» no es una tabla, vista materializada, tipo compuesto, o tabla foránea" +#: gram.y:10412 +#, c-format +msgid "LIMIT #,# syntax is not supported" +msgstr "la sintaxis LIMIT #,# no está soportada" -#, fuzzy -#~ msgid "Table %s is temporary." -#~ msgstr "el tablespace «%s» no está vacío" +#: gram.y:10413 +#, c-format +msgid "Use separate LIMIT and OFFSET clauses." +msgstr "Use cláusulas LIMIT y OFFSET separadas." -#, fuzzy -#~ msgid "cannot change status of table %s to logged" -#~ msgstr "no se puede cambiar la herencia de una tabla tipada" +#: gram.y:10676 gram.y:10701 +#, c-format +msgid "VALUES in FROM must have an alias" +msgstr "VALUES en FROM debe tener un alias" -#, fuzzy -#~ msgid "Table %s references unlogged table %s." -#~ msgstr "La tabla «%s» hace referencia a «%s»." +#: gram.y:10677 gram.y:10702 +#, c-format +msgid "For example, FROM (VALUES ...) [AS] foo." +msgstr "Por ejemplo, FROM (VALUES ...) [AS] foo." -#, fuzzy -#~ msgid "cannot change status of table %s to unlogged" -#~ msgstr "no se puede cambiar la herencia de una tabla tipada" +#: gram.y:10682 gram.y:10707 +#, c-format +msgid "subquery in FROM must have an alias" +msgstr "las subconsultas en FROM deben tener un alias" -#, fuzzy -#~ msgid "Logged table %s is referenced by table %s." -#~ msgstr "La llave todavía es referida desde la tabla «%s»." +#: gram.y:10683 gram.y:10708 +#, c-format +msgid "For example, FROM (SELECT ...) [AS] foo." +msgstr "Por ejemplo, FROM (SELECT ...) [AS] foo." -#, fuzzy -#~ msgid "could not stat \"%s\": %m" -#~ msgstr "no se pudo hacer stat al archivo «%s»: %m" +#: gram.y:11282 +#, c-format +msgid "precision for type float must be at least 1 bit" +msgstr "la precisión para el tipo float debe ser al menos 1 bit" -#~ msgid "function %s must return type \"trigger\"" -#~ msgstr "la función %s debe retornar tipo «trigger»" +#: gram.y:11291 +#, c-format +msgid "precision for type float must be less than 54 bits" +msgstr "la precisión para el tipo float debe ser menor de 54 bits" -#~ msgid "changing return type of function %s from \"opaque\" to \"cstring\"" -#~ msgstr "cambiando el tipo de retorno de la función %s de «opaque» a «cstring»" +#: gram.y:11795 +#, c-format +msgid "wrong number of parameters on left side of OVERLAPS expression" +msgstr "el número de parámetros es incorrecto al lado izquierdo de la expresión OVERLAPS" -#~ msgid "type output function %s must return type \"cstring\"" -#~ msgstr "la función de salida %s del tipo debe retornar «cstring»" +#: gram.y:11800 +#, c-format +msgid "wrong number of parameters on right side of OVERLAPS expression" +msgstr "el número de parámetros es incorrecto al lado derecho de la expresión OVERLAPS" -#~ msgid "type send function %s must return type \"bytea\"" -#~ msgstr "la función de envío %s del tipo debe retornar «bytea»" +#: gram.y:11975 +#, c-format +msgid "UNIQUE predicate is not yet implemented" +msgstr "el predicado UNIQUE no está implementado" -#~ msgid "typmod_in function %s must return type \"integer\"" -#~ msgstr "la función typmod_in %s debe retornar tipo «integer»" +#: gram.y:12309 +#, c-format +msgid "cannot use multiple ORDER BY clauses with WITHIN GROUP" +msgstr "no se permiten múltiples cláusulas ORDER BY con WITHIN GROUP" -#, fuzzy -#~ msgid "new row violates WITH CHECK OPTION for \"%s\"" -#~ msgstr "nueva fila viola WITH CHECK OPTION de la vista «%s»" +#: gram.y:12314 +#, c-format +msgid "cannot use DISTINCT with WITHIN GROUP" +msgstr "no se permite DISTINCT con WITHIN GROUP" -#~ msgid "received password packet" -#~ msgstr "se recibió un paquete de clave" +#: gram.y:12319 +#, c-format +msgid "cannot use VARIADIC with WITHIN GROUP" +msgstr "no se permite VARIADIC con WITHIN GROUP" -#~ msgid "Permissions should be u=rw (0600) or less." -#~ msgstr "Los permisos deberían ser u=rw (0500) o menos." +#: gram.y:12825 +#, c-format +msgid "RANGE PRECEDING is only supported with UNBOUNDED" +msgstr "RANGE PRECEDING sólo está soportado con UNBOUNDED" -#, fuzzy -#~ msgid "function %s must return type \"tsm_handler\"" -#~ msgstr "la función %s debe retornar tipo «fdw_handler»" +#: gram.y:12831 +#, c-format +msgid "RANGE FOLLOWING is only supported with UNBOUNDED" +msgstr "RANGE FOLLOWING sólo está soportado con UNBOUNDED" -#~ msgid "must be superuser to reset statistics counters" -#~ msgstr "debe ser superusuario para reinicializar los contadores de estadísticas" +#: gram.y:12858 gram.y:12881 +#, c-format +msgid "frame start cannot be UNBOUNDED FOLLOWING" +msgstr "el inicio de «frame» no puede ser UNBOUNDED FOLLOWING" -#~ msgid "invalid value for parameter \"replication\"" -#~ msgstr "valor no válido para la opción «replication»" +#: gram.y:12863 +#, c-format +msgid "frame starting from following row cannot end with current row" +msgstr "el «frame» que se inicia desde la siguiente fila no puede terminar en la fila actual" -#~ msgid "archive member \"%s\" too large for tar format" -#~ msgstr "el miembro de archivador «%s» es demasiado grande para el formato tar" +#: gram.y:12886 +#, c-format +msgid "frame end cannot be UNBOUNDED PRECEDING" +msgstr "el fin de «frame» no puede ser UNBOUNDED PRECEDING" -#~ msgid "socket not open" -#~ msgstr "el socket no está abierto" +#: gram.y:12892 +#, c-format +msgid "frame starting from current row cannot have preceding rows" +msgstr "el «frame» que se inicia desde la fila actual no puede tener filas precedentes" -#, fuzzy -#~ msgid "%s(%s %d): %s" -#~ msgstr "%s %s%s%s: %s" +#: gram.y:12899 +#, c-format +msgid "frame starting from following row cannot have preceding rows" +msgstr "el «frame» que se inicia desde la fila siguiente no puede tener filas precedentes" -#~ msgid "multibyte flag character is not allowed" -#~ msgstr "los caracteres bandera multibyte no están permitidos" +#: gram.y:13564 +#, c-format +msgid "type modifier cannot have parameter name" +msgstr "el modificador de tipo no puede tener nombre de parámetro" -#~ msgid "could not format \"path\" value" -#~ msgstr "no se pudo dar formato a «path»" +#: gram.y:13570 +#, c-format +msgid "type modifier cannot have ORDER BY" +msgstr "el modificador de tipo no puede tener ORDER BY" -#~ msgid "invalid input syntax for type box: \"%s\"" -#~ msgstr "la sintaxis de entrada no es válida para tipo box: «%s»" +#: gram.y:13634 gram.y:13640 +#, c-format +msgid "%s cannot be used as a role name here" +msgstr "%s no puede ser usado como nombre de rol aquí" -#~ msgid "invalid input syntax for type line: \"%s\"" -#~ msgstr "la sintaxis de entrada no es válida para tipo line: «%s»" +#: gram.y:14262 gram.y:14451 +msgid "improper use of \"*\"" +msgstr "uso impropio de «*»" -#~ msgid "invalid input syntax for type path: \"%s\"" -#~ msgstr "la sintaxis de entrada no es válida para tipo «path»: «%s»" +#: gram.y:14515 +#, c-format +msgid "an ordered-set aggregate with a VARIADIC direct argument must have one VARIADIC aggregated argument of the same data type" +msgstr "una agregación de conjunto-ordenado con un argumento directo VARIADIC debe tener al menos un argumento agregado VARIADIC del mismo tipo de datos" -#~ msgid "invalid input syntax for type point: \"%s\"" -#~ msgstr "la sintaxis de entrada no es válida para tipo point: «%s»" +#: gram.y:14552 +#, c-format +msgid "multiple ORDER BY clauses not allowed" +msgstr "no se permiten múltiples cláusulas ORDER BY" -#~ msgid "invalid input syntax for type lseg: \"%s\"" -#~ msgstr "la sintaxis de entrada no es válida para tipo lseg: «%s»" +#: gram.y:14563 +#, c-format +msgid "multiple OFFSET clauses not allowed" +msgstr "no se permiten múltiples cláusulas OFFSET" -#~ msgid "invalid input syntax for type polygon: \"%s\"" -#~ msgstr "la sintaxis de entrada no es válida para tipo polygon: «%s»" +#: gram.y:14572 +#, c-format +msgid "multiple LIMIT clauses not allowed" +msgstr "no se permiten múltiples cláusulas LIMIT" -#~ msgid "invalid input syntax for type circle: \"%s\"" -#~ msgstr "la sintaxis de entrada no es válida para el tipo circle: «%s»" +#: gram.y:14581 +#, c-format +msgid "multiple WITH clauses not allowed" +msgstr "no se permiten múltiples cláusulas WITH" -#~ msgid "could not format \"circle\" value" -#~ msgstr "no se pudo dar formato al valor «circle»" +#: gram.y:14773 +#, c-format +msgid "OUT and INOUT arguments aren't allowed in TABLE functions" +msgstr "los argumentos OUT e INOUT no están permitidos en funciones TABLE" -#, fuzzy -#~ msgid "key value must be scalar, not array, composite or json" -#~ msgstr "el valor de llave debe ser escalar, no array, composite o json" +#: gram.y:14874 +#, c-format +msgid "multiple COLLATE clauses not allowed" +msgstr "no se permiten múltiples cláusulas COLLATE" -#, fuzzy -#~ msgid "arg %d: key cannot be null" -#~ msgstr "el argumento %d no puede ser null" +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:14912 gram.y:14925 +#, c-format +msgid "%s constraints cannot be marked DEFERRABLE" +msgstr "las restricciones %s no pueden ser marcadas DEFERRABLE" -#~ msgid "must be superuser to signal the postmaster" -#~ msgstr "debe ser superusuario para enviar señales a postmaster" +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:14938 +#, c-format +msgid "%s constraints cannot be marked NOT VALID" +msgstr "las restricciones %s no pueden ser marcadas NOT VALID" -#~ msgid "must be superuser to rotate log files" -#~ msgstr "debe ser superusuario para rotar archivos de log" +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:14951 +#, c-format +msgid "%s constraints cannot be marked NO INHERIT" +msgstr "las restricciones %s no pueden ser marcadas NO INHERIT" -#~ msgid "argument for function \"exp\" too big" -#~ msgstr "el argumento a la función «exp» es demasiado grande" +#: guc-file.l:313 +#, c-format +msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %u" +msgstr "parámetro de configuración «%s» no reconocido en el archivo «%s» línea %u" -#~ msgid "could not convert to time zone \"%s\"" -#~ msgstr "no se pudo convertir al huso horario «%s»" +#: guc-file.l:386 +#, c-format +msgid "parameter \"%s\" removed from configuration file, reset to default" +msgstr "parámetro «%s» eliminado del archivo de configuración, volviendo al valor por omisión" -#~ msgid "WAL writer sleep time between WAL flushes." -#~ msgstr "Tiempo de descanso del escritor de WAL entre escrituras de WAL consecutivas." +#: guc-file.l:452 +#, c-format +msgid "parameter \"%s\" changed to \"%s\"" +msgstr "el parámetro «%s» fue cambiado a «%s»" -#~ msgid "=> is deprecated as an operator name" -#~ msgstr "=> es un nombre obsoleto de operador" +#: guc-file.l:494 +#, c-format +msgid "configuration file \"%s\" contains errors" +msgstr "el archivo de configuración «%s» contiene errores" -#~ msgid "This name may be disallowed altogether in future versions of PostgreSQL." -#~ msgstr "Este nombre puede prohibirse por completo en futuras versiones de PostgreSQL." +#: guc-file.l:499 +#, c-format +msgid "configuration file \"%s\" contains errors; unaffected changes were applied" +msgstr "el archivo de configuración «%s» contiene errores; los cambios no afectados fueron aplicados" -#~ msgid "inherited relation \"%s\" is not a table" -#~ msgstr "la relación heredada «%s» no es una tabla" +#: guc-file.l:504 +#, c-format +msgid "configuration file \"%s\" contains errors; no changes were applied" +msgstr "el archivo de configuración «%s» contiene errores; no se aplicó ningún cambio" -#~ msgid "Specify a USING expression to perform the conversion." -#~ msgstr "Especifique una expresión USING para llevar a cabo la conversión." +#: guc-file.l:577 +#, c-format +msgid "could not open configuration file \"%s\": maximum nesting depth exceeded" +msgstr "no se pudo abrir el archivo de configuración «%s»: nivel de anidamiento máximo excedido" -#~ msgid "" -#~ "automatic vacuum of table \"%s.%s.%s\": index scans: %d\n" -#~ "pages: %d removed, %d remain\n" -#~ "tuples: %.0f removed, %.0f remain, %.0f are dead but not yet removable\n" -#~ "buffer usage: %d hits, %d misses, %d dirtied\n" -#~ "avg read rate: %.3f MB/s, avg write rate: %.3f MB/s\n" -#~ "system usage: %s" -#~ msgstr "" -#~ "vacuum automático de la tabla «%s.%s.%s»: recorridos de índice: %d\n" -#~ "páginas: eliminadas %d, remanentes %d\n" -#~ "tuplas: eliminadas %.0f, remanentes %.0f, muertas pero sin eliminar aún %.0f\n" -#~ "uso de búfers: %d aciertos, %d fallas, %d ensuciados\n" -#~ "tasas promedio: de lectura: %.3f MB/s, de escritura %.3f MB/s\n" -#~ "uso del sistema: %s" +#: guc-file.l:604 +#, c-format +msgid "skipping missing configuration file \"%s\"" +msgstr "saltando el archivo de configuración faltante «%s»" -#~ msgid "" -#~ "%.0f dead row versions cannot be removed yet.\n" -#~ "There were %.0f unused item pointers.\n" -#~ "%u pages are entirely empty.\n" -#~ "%s." -#~ msgstr "" -#~ "%.0f versiones muertas de filas no pueden ser eliminadas aún.\n" -#~ "Hubo %.0f punteros de ítem sin uso.\n" -#~ "%u páginas están completamente vacías.\n" -#~ "%s." +#: guc-file.l:858 +#, c-format +msgid "syntax error in file \"%s\" line %u, near end of line" +msgstr "error de sintaxis en el archivo «%s» línea %u, cerca del fin de línea" -#~ msgid "SSL failure during renegotiation start" -#~ msgstr "fallo SSL durante el inicio de renegociación" +#: guc-file.l:868 +#, c-format +msgid "syntax error in file \"%s\" line %u, near token \"%s\"" +msgstr "error de sintaxis en el archivo «%s» línea %u, cerca de la palabra «%s»" -#~ msgid "SSL handshake failure on renegotiation, retrying" -#~ msgstr "fallo en el «handshake» durante la renegociación SSL, intentando de nuevo" +#: guc-file.l:888 +#, c-format +msgid "too many syntax errors found, abandoning file \"%s\"" +msgstr "se encontraron demasiados errores de sintaxis, abandonando el archivo «%s»" -#~ msgid "could not complete SSL handshake on renegotiation, too many failures" -#~ msgstr "no se pudo completar el «handshake» durante la renegociación SSL, demasiados fallos" +#: guc-file.l:940 +#, c-format +msgid "could not open configuration directory \"%s\": %m" +msgstr "no se pudo abrir el directorio de configuración «%s»: %m" -#~ msgid "SSL failed to renegotiate connection before limit expired" -#~ msgstr "SSL no pudo renegociar conexión antes de la expiración del límite" +#: repl_gram.y:260 repl_gram.y:292 +#, c-format +msgid "invalid timeline %u" +msgstr "timeline %u no válido" -#~ msgid "could not set socket to blocking mode: %m" -#~ msgstr "no se pudo poner el socket en modo bloqueante: %m" +#: repl_scanner.l:120 +msgid "invalid streaming start location" +msgstr "posición de inicio de flujo de WAL no válida" -#~ msgid "%s: setsysinfo failed: %s\n" -#~ msgstr "%s: setsysinfo falló: %s\n" +#: repl_scanner.l:171 scan.l:670 +msgid "unterminated quoted string" +msgstr "una cadena de caracteres entre comillas está inconclusa" -#~ msgid " -A 1|0 enable/disable run-time assert checking\n" -#~ msgstr " -A 1|0 activar/desactivar el uso de aseveraciones (asserts)\n" +#: repl_scanner.l:181 +#, c-format +msgid "syntax error: unexpected character \"%s\"" +msgstr "error de sintaxis: carácter «%s» inesperado" -#~ msgid "subquery must return a column" -#~ msgstr "la subconsulta debe retornar una columna" +#: scan.l:432 +msgid "unterminated /* comment" +msgstr "un comentario /* está inconcluso" -#~ msgid "Consider increasing the configuration parameter \"checkpoint_segments\"." -#~ msgstr "Considere incrementar el parámetro de configuración «checkpoint_segments»." +#: scan.l:461 +msgid "unterminated bit string literal" +msgstr "una cadena de bits está inconclusa" -#~ msgid "WAL archival (archive_mode=on) requires wal_level \"archive\", \"hot_standby\", or \"logical\"" -#~ msgstr "el archivado de WAL (archive_mode=on) requiere wal_level «archive» o «hot_standby» o «logical»" +#: scan.l:482 +msgid "unterminated hexadecimal string literal" +msgstr "una cadena hexadecimal está inconclusa" -#~ msgid "could not determine input data types" -#~ msgstr "no se pudo determinar el tipo de datos de entrada" +#: scan.l:532 +#, c-format +msgid "unsafe use of string constant with Unicode escapes" +msgstr "uso inseguro de literal de cadena con escapes Unicode" -#~ msgid "neither input type is an array" -#~ msgstr "ninguno de los tipos de entrada es un array" +#: scan.l:533 +#, c-format +msgid "String constants with Unicode escapes cannot be used when standard_conforming_strings is off." +msgstr "Los literales de cadena con escapes Unicode no pueden usarse cuando standard_conforming_strings está desactivado." -#~ msgid "unexpected \"=\"" -#~ msgstr "«=» inesperado" +#: scan.l:579 scan.l:778 +msgid "invalid Unicode escape character" +msgstr "carácter de escape Unicode no válido" -#~ msgid "invalid symbol" -#~ msgstr "símbolo no válido" +#: scan.l:605 scan.l:613 scan.l:621 scan.l:622 scan.l:623 scan.l:1337 +#: scan.l:1364 scan.l:1368 scan.l:1406 scan.l:1410 scan.l:1432 scan.l:1442 +msgid "invalid Unicode surrogate pair" +msgstr "par sustituto (surrogate) Unicode no válido" -#~ msgid "JSON does not support infinite date values." -#~ msgstr "JSON no soporta valores infinitos de fecha." +#: scan.l:627 +#, c-format +msgid "invalid Unicode escape" +msgstr "valor de escape Unicode no válido" -#~ msgid "JSON does not support infinite timestamp values." -#~ msgstr "JSON no soporta valores infinitos de timestamp." +#: scan.l:628 +#, c-format +msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX." +msgstr "Los escapes Unicode deben ser \\uXXXX o \\UXXXXXXXX." -#~ msgid "cannot accept a value of type pg_node_tree" -#~ msgstr "no se puede aceptar un valor de tipo pg_node_tree" +#: scan.l:639 +#, c-format +msgid "unsafe use of \\' in a string literal" +msgstr "uso inseguro de \\' en un literal de cadena" -#~ msgid "Turns on various assertion checks." -#~ msgstr "Activar varios chequeos de integridad (assertion checks)." +#: scan.l:640 +#, c-format +msgid "Use '' to write quotes in strings. \\' is insecure in client-only encodings." +msgstr "Use '' para escribir comillas en cadenas. \\' es inseguro en codificaciones de sólo cliente." -#~ msgid "This is a debugging aid." -#~ msgstr "Esto es una ayuda para la depuración." +#: scan.l:715 +msgid "unterminated dollar-quoted string" +msgstr "una cadena separada por $ está inconclusa" -#~ msgid "This parameter doesn't do anything." -#~ msgstr "Este parámetro no hace nada." +#: scan.l:732 scan.l:758 scan.l:773 +msgid "zero-length delimited identifier" +msgstr "un identificador delimitado tiene largo cero" -#~ msgid "It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-vintage clients." -#~ msgstr "Está aquí sólo para poder aceptar SET AUTOCOMMIT TO ON desde clientes de la línea 7.3." +#: scan.l:793 syncrep_scanner.l:84 +msgid "unterminated quoted identifier" +msgstr "un identificador entre comillas está inconcluso" -#~ msgid "Sets the maximum distance in log segments between automatic WAL checkpoints." -#~ msgstr "Define la distancia máxima, en cantidad de segmentos, entre puntos de control de WAL automáticos." +#: scan.l:924 +msgid "operator too long" +msgstr "el operador es demasiado largo" -#~ msgid "Set the amount of traffic to send and receive before renegotiating the encryption keys." -#~ msgstr "Define la cantidad de tráfico a enviar y recibir antes de renegociar las llaves de cifrado." +#. translator: %s is typically the translation of "syntax error" +#: scan.l:1077 +#, c-format +msgid "%s at end of input" +msgstr "%s al final de la entrada" -#~ msgid "SET AUTOCOMMIT TO OFF is no longer supported" -#~ msgstr "SET AUTOCOMMIT TO OFF ya no está soportado" +#. translator: first %s is typically the translation of "syntax error" +#: scan.l:1085 +#, c-format +msgid "%s at or near \"%s\"" +msgstr "%s en o cerca de «%s»" -#~ msgid "assertion checking is not supported by this build" -#~ msgstr "la revisión de aseveraciones (asserts) no está soportada en este servidor" +#: scan.l:1251 scan.l:1283 +msgid "Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8" +msgstr "Los valores de escape Unicode no puede ser usados para valores de «code point» sobre 007F cuando la codificación de servidor no es UTF8" -#~ msgid "interval precision specified twice" -#~ msgstr "la precisión de interval fue especificada dos veces" +#: scan.l:1279 scan.l:1424 +msgid "invalid Unicode escape value" +msgstr "valor de escape Unicode no válido" -#~ msgid "too few arguments for format" -#~ msgstr "muy pocos argumentos para el formato" +#: scan.l:1488 +#, c-format +msgid "nonstandard use of \\' in a string literal" +msgstr "uso no estandar de \\' en un literal de cadena" -#~ msgid "invalid length in external \"numeric\" value" -#~ msgstr "el largo no es válido en el valor «numeric» externo" +#: scan.l:1489 +#, c-format +msgid "Use '' to write quotes in strings, or use the escape string syntax (E'...')." +msgstr "Use '' para escribir comillas en cadenas, o use la sintaxis de escape de cadenas (E'...')." -#~ msgid "time zone abbreviation \"%s\" is not used in time zone \"%s\"" -#~ msgstr "abreviación de huso horario «%s» no se usa en el huso horario «%s»" +#: scan.l:1498 +#, c-format +msgid "nonstandard use of \\\\ in a string literal" +msgstr "uso no estandar de \\\\ en un literal de cadena" -#~ msgid "function returning set of rows cannot return null value" -#~ msgstr "una función que retorna un conjunto de registros no puede devolver un valor null" +#: scan.l:1499 +#, c-format +msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'." +msgstr "Use '' para escribir comillas en cadenas, o use la sintaxis de escape de cadenas (E'\\\\')." -#~ msgid "Only superusers can use untrusted languages." -#~ msgstr "Sólo los superusuarios pueden usar lenguajes no confiables." +#: scan.l:1513 +#, c-format +msgid "nonstandard use of escape in a string literal" +msgstr "uso no estandar de escape en un literal de cadena" -#, fuzzy -#~ msgid "ignoring \"%s\" file because no \"%s\" file exists" -#~ msgstr "la restricción «%s» para la relación «%s» ya existe" +#: scan.l:1514 +#, c-format +msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'." +msgstr "Use la sintaxis de escape para cadenas, por ej. E'\\r\\n'." diff --git a/src/backend/po/fr.po b/src/backend/po/fr.po index b3453a2292..980a2a3bef 100644 --- a/src/backend/po/fr.po +++ b/src/backend/po/fr.po @@ -1,52 +1,52 @@ # translation of postgres.po to fr_fr # french message translation file for postgres # -# Use these quotes: « %s » +# Use these quotes: « %s » # Guillaume Lelarge , 2003-2009. # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-23 20:08+0000\n" -"PO-Revision-Date: 2016-09-24 18:03+0200\n" +"POT-Creation-Date: 2017-07-19 17:19+0000\n" +"PO-Revision-Date: 2017-07-20 08:18+0200\n" "Last-Translator: Guillaume Lelarge \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-15\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 1.8.7\n" +"X-Generator: Poedit 1.8.12\n" #: ../common/config_info.c:131 ../common/config_info.c:139 ../common/config_info.c:147 ../common/config_info.c:155 ../common/config_info.c:163 ../common/config_info.c:171 ../common/config_info.c:179 ../common/config_info.c:187 ../common/config_info.c:195 msgid "not recorded" -msgstr "non enregistré" +msgstr "non enregistré" -#: ../common/controldata_utils.c:52 commands/copy.c:2794 commands/extension.c:3120 utils/adt/genfile.c:134 +#: ../common/controldata_utils.c:52 commands/copy.c:2834 commands/extension.c:3144 utils/adt/genfile.c:134 #, c-format msgid "could not open file \"%s\" for reading: %m" -msgstr "n'a pas pu ouvrir le fichier « %s » pour une lecture : %m" +msgstr "n'a pas pu ouvrir le fichier « %s » pour une lecture : %m" #: ../common/controldata_utils.c:56 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" -msgstr "%s : n'a pas pu ouvrir le fichier « %s » en lecture : %s\n" +msgstr "%s : n'a pas pu ouvrir le fichier « %s » en lecture : %s\n" -#: ../common/controldata_utils.c:66 access/transam/timeline.c:346 access/transam/xlog.c:3191 access/transam/xlog.c:10348 access/transam/xlog.c:10361 access/transam/xlog.c:10724 access/transam/xlog.c:10767 access/transam/xlog.c:10806 access/transam/xlog.c:10849 access/transam/xlogfuncs.c:665 access/transam/xlogfuncs.c:684 commands/extension.c:3130 replication/logical/origin.c:665 replication/logical/origin.c:695 -#: replication/logical/reorderbuffer.c:3093 replication/walsender.c:499 storage/file/copydir.c:176 utils/adt/genfile.c:151 +#: ../common/controldata_utils.c:66 access/transam/timeline.c:346 access/transam/xlog.c:3226 access/transam/xlog.c:10453 access/transam/xlog.c:10466 access/transam/xlog.c:10861 access/transam/xlog.c:10904 access/transam/xlog.c:10943 access/transam/xlog.c:10986 access/transam/xlogfuncs.c:660 access/transam/xlogfuncs.c:679 commands/extension.c:3154 replication/logical/origin.c:668 replication/logical/origin.c:698 +#: replication/logical/reorderbuffer.c:3100 replication/walsender.c:504 storage/file/copydir.c:176 utils/adt/genfile.c:151 #, c-format msgid "could not read file \"%s\": %m" -msgstr "n'a pas pu lire le fichier « %s » : %m" +msgstr "n'a pas pu lire le fichier « %s » : %m" #: ../common/controldata_utils.c:69 #, c-format msgid "%s: could not read file \"%s\": %s\n" -msgstr "%s : n'a pas pu lire le fichier « %s » : %s\n" +msgstr "%s : n'a pas pu lire le fichier « %s » : %s\n" #: ../common/controldata_utils.c:86 msgid "calculated CRC checksum does not match value stored in file" -msgstr "la somme de contrôle CRC calculée ne correspond par à la valeur enregistrée dans le fichier" +msgstr "la somme de contrôle CRC calculée ne correspond par à la valeur enregistrée dans le fichier" #: ../common/controldata_utils.c:88 #, c-format @@ -56,16 +56,16 @@ msgid "" "is expecting. The results below are untrustworthy.\n" "\n" msgstr "" -"ATTENTION : Les sommes de contrôle (CRC) calculées ne correspondent pas aux\n" -"valeurs stockées dans le fichier.\n" -"Soit le fichier est corrompu, soit son organisation diffère de celle\n" +"ATTENTION : Les sommes de contrôle (CRC) calculées ne correspondent pas aux\n" +"valeurs stockées dans le fichier.\n" +"Soit le fichier est corrompu, soit son organisation diffère de celle\n" "attendue par le programme.\n" -"Les résultats ci-dessous ne sont pas dignes de confiance.\n" +"Les résultats ci-dessous ne sont pas dignes de confiance.\n" "\n" #: ../common/controldata_utils.c:97 msgid "byte ordering mismatch" -msgstr "différence de l'ordre des octets" +msgstr "différence de l'ordre des octets" #: ../common/controldata_utils.c:99 #, c-format @@ -75,51 +75,51 @@ msgid "" "used by this program. In that case the results below would be incorrect, and\n" "the PostgreSQL installation would be incompatible with this data directory.\n" msgstr "" -"ATTENTION : possible incohérence dans l'ordre des octets\n" -"L'ordre des octets utilisé pour enregistrer le fichier pg_control peut ne\n" -"pas correspondre à celui utilisé par ce programme. Dans ce cas, les\n" -"résultats ci-dessous sont incorrects, et l'installation PostgreSQL\n" -"incompatible avec ce répertoire des données.\n" +"ATTENTION : possible incohérence dans l'ordre des octets\n" +"L'ordre des octets utilisé pour enregistrer le fichier pg_control peut ne\n" +"pas correspondre à celui utilisé par ce programme. Dans ce cas, les\n" +"résultats ci-dessous sont incorrects, et l'installation PostgreSQL\n" +"incompatible avec ce répertoire des données.\n" #: ../common/exec.c:127 ../common/exec.c:241 ../common/exec.c:284 #, c-format msgid "could not identify current directory: %s" -msgstr "n'a pas pu identifier le répertoire courant : %s" +msgstr "n'a pas pu identifier le répertoire courant : %s" #: ../common/exec.c:146 #, c-format msgid "invalid binary \"%s\"" -msgstr "binaire « %s » invalide" +msgstr "binaire « %s » invalide" #: ../common/exec.c:195 #, c-format msgid "could not read binary \"%s\"" -msgstr "n'a pas pu lire le binaire « %s »" +msgstr "n'a pas pu lire le binaire « %s »" #: ../common/exec.c:202 #, c-format msgid "could not find a \"%s\" to execute" -msgstr "n'a pas pu trouver un « %s » à exécuter" +msgstr "n'a pas pu trouver un « %s » à exécuter" #: ../common/exec.c:257 ../common/exec.c:293 #, c-format msgid "could not change directory to \"%s\": %s" -msgstr "n'a pas pu changer le répertoire par « %s » : %s" +msgstr "n'a pas pu changer le répertoire par « %s » : %s" #: ../common/exec.c:272 #, c-format msgid "could not read symbolic link \"%s\"" -msgstr "n'a pas pu lire le lien symbolique « %s »" +msgstr "n'a pas pu lire le lien symbolique « %s »" #: ../common/exec.c:523 #, c-format msgid "pclose failed: %s" -msgstr "échec de pclose : %s" +msgstr "échec de pclose : %s" #: ../common/fe_memutils.c:35 ../common/fe_memutils.c:75 ../common/fe_memutils.c:98 ../common/psprintf.c:181 ../port/path.c:632 ../port/path.c:670 ../port/path.c:687 #, c-format msgid "out of memory\n" -msgstr "mémoire épuisée\n" +msgstr "mémoire épuisée\n" #: ../common/fe_memutils.c:92 #, c-format @@ -129,25 +129,25 @@ msgstr "ne peut pas dupliquer un pointeur nul (erreur interne)\n" #: ../common/pgfnames.c:45 #, c-format msgid "could not open directory \"%s\": %s\n" -msgstr "n'a pas pu ouvrir le répertoire « %s » : %s\n" +msgstr "n'a pas pu ouvrir le répertoire « %s » : %s\n" #: ../common/pgfnames.c:72 #, c-format msgid "could not read directory \"%s\": %s\n" -msgstr "n'a pas pu lire le répertoire « %s » : %s\n" +msgstr "n'a pas pu lire le répertoire « %s » : %s\n" #: ../common/pgfnames.c:84 #, c-format msgid "could not close directory \"%s\": %s\n" -msgstr "n'a pas pu fermer le répertoire « %s » : %s\n" +msgstr "n'a pas pu fermer le répertoire « %s » : %s\n" -#: ../common/psprintf.c:179 ../port/path.c:630 ../port/path.c:668 ../port/path.c:685 access/transam/twophase.c:1261 access/transam/xlog.c:6079 lib/stringinfo.c:258 libpq/auth.c:847 libpq/auth.c:1210 libpq/auth.c:1278 libpq/auth.c:1794 postmaster/bgworker.c:289 postmaster/bgworker.c:797 postmaster/postmaster.c:2334 postmaster/postmaster.c:2365 postmaster/postmaster.c:3898 postmaster/postmaster.c:4588 postmaster/postmaster.c:4656 -#: postmaster/postmaster.c:5359 postmaster/postmaster.c:5623 replication/libpqwalreceiver/libpqwalreceiver.c:143 replication/logical/logical.c:168 storage/buffer/localbuf.c:436 storage/file/fd.c:729 storage/file/fd.c:1126 storage/file/fd.c:1244 storage/file/fd.c:1916 storage/ipc/procarray.c:1060 storage/ipc/procarray.c:1546 storage/ipc/procarray.c:1553 storage/ipc/procarray.c:1967 storage/ipc/procarray.c:2570 utils/adt/formatting.c:1522 -#: utils/adt/formatting.c:1642 utils/adt/formatting.c:1763 utils/adt/regexp.c:219 utils/adt/varlena.c:4440 utils/adt/varlena.c:4461 utils/fmgr/dfmgr.c:216 utils/hash/dynahash.c:429 utils/hash/dynahash.c:535 utils/hash/dynahash.c:1047 utils/mb/mbutils.c:376 utils/mb/mbutils.c:709 utils/misc/guc.c:3890 utils/misc/guc.c:3906 utils/misc/guc.c:3919 utils/misc/guc.c:6865 utils/misc/tzparser.c:468 utils/mmgr/aset.c:509 utils/mmgr/mcxt.c:767 -#: utils/mmgr/mcxt.c:802 utils/mmgr/mcxt.c:839 utils/mmgr/mcxt.c:876 utils/mmgr/mcxt.c:910 utils/mmgr/mcxt.c:939 utils/mmgr/mcxt.c:973 utils/mmgr/mcxt.c:1055 utils/mmgr/mcxt.c:1089 utils/mmgr/mcxt.c:1138 +#: ../common/psprintf.c:179 ../port/path.c:630 ../port/path.c:668 ../port/path.c:685 access/transam/twophase.c:1262 access/transam/xlog.c:6114 lib/stringinfo.c:258 libpq/auth.c:850 libpq/auth.c:1213 libpq/auth.c:1281 libpq/auth.c:1797 postmaster/bgworker.c:310 postmaster/bgworker.c:813 postmaster/postmaster.c:2357 postmaster/postmaster.c:2388 postmaster/postmaster.c:3922 postmaster/postmaster.c:4620 postmaster/postmaster.c:4695 +#: postmaster/postmaster.c:5368 postmaster/postmaster.c:5690 replication/libpqwalreceiver/libpqwalreceiver.c:143 replication/logical/logical.c:169 storage/buffer/localbuf.c:436 storage/file/fd.c:736 storage/file/fd.c:1164 storage/file/fd.c:1282 storage/file/fd.c:1993 storage/ipc/procarray.c:1061 storage/ipc/procarray.c:1547 storage/ipc/procarray.c:1554 storage/ipc/procarray.c:1968 storage/ipc/procarray.c:2579 utils/adt/formatting.c:1522 +#: utils/adt/formatting.c:1642 utils/adt/formatting.c:1763 utils/adt/pg_locale.c:463 utils/adt/pg_locale.c:647 utils/adt/regexp.c:219 utils/adt/varlena.c:4440 utils/adt/varlena.c:4461 utils/fmgr/dfmgr.c:216 utils/hash/dynahash.c:429 utils/hash/dynahash.c:535 utils/hash/dynahash.c:1047 utils/mb/mbutils.c:376 utils/mb/mbutils.c:709 utils/misc/guc.c:3888 utils/misc/guc.c:3904 utils/misc/guc.c:3917 utils/misc/guc.c:6863 utils/misc/tzparser.c:468 +#: utils/mmgr/aset.c:510 utils/mmgr/mcxt.c:767 utils/mmgr/mcxt.c:802 utils/mmgr/mcxt.c:839 utils/mmgr/mcxt.c:876 utils/mmgr/mcxt.c:910 utils/mmgr/mcxt.c:939 utils/mmgr/mcxt.c:973 utils/mmgr/mcxt.c:1055 utils/mmgr/mcxt.c:1089 utils/mmgr/mcxt.c:1138 #, c-format msgid "out of memory" -msgstr "mémoire épuisée" +msgstr "mémoire épuisée" #: ../common/relpath.c:59 #, c-format @@ -157,12 +157,12 @@ msgstr "nom du fork invalide" #: ../common/relpath.c:60 #, c-format msgid "Valid fork names are \"main\", \"fsm\", \"vm\", and \"init\"." -msgstr "Les noms de fork valides sont « main », « fsm », « vm » et « init »." +msgstr "Les noms de fork valides sont « main », « fsm », « vm » et « init »." #: ../common/restricted_token.c:68 #, c-format msgid "%s: WARNING: cannot create restricted tokens on this platform\n" -msgstr "%s : ATTENTION : ne peut pas crér les jetons restreints sur cette plateforme\n" +msgstr "%s : ATTENTION : ne peut pas crér les jetons restreints sur cette plateforme\n" #: ../common/restricted_token.c:77 #, c-format @@ -177,53 +177,53 @@ msgstr "%s : n'a pas pu allouer les SID : code d'erreur %lu\n" #: ../common/restricted_token.c:110 #, c-format msgid "%s: could not create restricted token: error code %lu\n" -msgstr "%s : n'a pas pu créer le jeton restreint : code d'erreur %lu\n" +msgstr "%s : n'a pas pu créer le jeton restreint : code d'erreur %lu\n" #: ../common/restricted_token.c:132 #, c-format msgid "%s: could not start process for command \"%s\": error code %lu\n" -msgstr "%s : n'a pas pu démarrer le processus pour la commande « %s » : code d'erreur %lu\n" +msgstr "%s : n'a pas pu démarrer le processus pour la commande « %s » : code d'erreur %lu\n" #: ../common/restricted_token.c:170 #, c-format msgid "%s: could not re-execute with restricted token: error code %lu\n" -msgstr "%s : n'a pas pu ré-exécuter le jeton restreint : code d'erreur %lu\n" +msgstr "%s : n'a pas pu ré-exécuter le jeton restreint : code d'erreur %lu\n" #: ../common/restricted_token.c:186 #, c-format msgid "%s: could not get exit code from subprocess: error code %lu\n" -msgstr "%s : n'a pas pu récupérer le code de statut du sous-processus : code d'erreur %lu\n" +msgstr "%s : n'a pas pu récupérer le code de statut du sous-processus : code d'erreur %lu\n" #: ../common/rmtree.c:77 #, c-format msgid "could not stat file or directory \"%s\": %s\n" msgstr "" -"n'a pas pu récupérer les informations sur le fichier ou répertoire\n" -"« %s » : %s\n" +"n'a pas pu récupérer les informations sur le fichier ou répertoire\n" +"« %s » : %s\n" #: ../common/rmtree.c:104 ../common/rmtree.c:121 #, c-format msgid "could not remove file or directory \"%s\": %s\n" -msgstr "n'a pas pu supprimer le fichier ou répertoire « %s » : %s\n" +msgstr "n'a pas pu supprimer le fichier ou répertoire « %s » : %s\n" #: ../common/username.c:45 #, 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" +msgstr "n'a pas pu trouver l'identifiant réel %ld de l'utilisateur : %s" -#: ../common/username.c:47 libpq/auth.c:1741 +#: ../common/username.c:47 libpq/auth.c:1744 msgid "user does not exist" msgstr "l'utilisateur n'existe pas" #: ../common/username.c:62 #, c-format msgid "user name lookup failure: error code %lu" -msgstr "échec de la recherche du nom d'utilisateur : code d'erreur %lu" +msgstr "échec de la recherche du nom d'utilisateur : code d'erreur %lu" #: ../common/wait_error.c:47 #, c-format msgid "command not executable" -msgstr "commande non exécutable" +msgstr "commande non exécutable" #: ../common/wait_error.c:51 #, c-format @@ -233,67 +233,67 @@ msgstr "commande introuvable" #: ../common/wait_error.c:56 #, c-format msgid "child process exited with exit code %d" -msgstr "le processus fils a quitté avec le code de sortie %d" +msgstr "le processus fils a quitté avec le code de sortie %d" #: ../common/wait_error.c:63 #, c-format msgid "child process was terminated by exception 0x%X" -msgstr "le processus fils a été terminé par l'exception 0x%X" +msgstr "le processus fils a été terminé par l'exception 0x%X" #: ../common/wait_error.c:73 #, c-format msgid "child process was terminated by signal %s" -msgstr "le processus fils a été terminé par le signal %s" +msgstr "le processus fils a été terminé par le signal %s" #: ../common/wait_error.c:77 #, c-format msgid "child process was terminated by signal %d" -msgstr "le processus fils a été terminé par le signal %d" +msgstr "le processus fils a été terminé par le signal %d" #: ../common/wait_error.c:82 #, c-format msgid "child process exited with unrecognized status %d" -msgstr "le processus fils a quitté avec un statut %d non reconnu" +msgstr "le processus fils a quitté avec un statut %d non reconnu" #: ../port/chklocale.c:293 #, c-format msgid "could not determine encoding for codeset \"%s\"" -msgstr "n'a pas pu déterminer l'encodage pour le codeset « %s »" +msgstr "n'a pas pu déterminer l'encodage pour le codeset « %s »" -#: ../port/chklocale.c:294 ../port/chklocale.c:423 postmaster/postmaster.c:4888 +#: ../port/chklocale.c:294 ../port/chklocale.c:423 postmaster/postmaster.c:4899 #, c-format msgid "Please report this to ." -msgstr "Veuillez rapporter ceci à ." +msgstr "Veuillez rapporter ceci à ." #: ../port/chklocale.c:415 ../port/chklocale.c:421 #, c-format msgid "could not determine encoding for locale \"%s\": codeset is \"%s\"" -msgstr "n'a pas pu déterminer l'encodage pour la locale « %s » : le codeset vaut « %s »" +msgstr "n'a pas pu déterminer l'encodage pour la locale « %s » : le codeset vaut « %s »" #: ../port/dirmod.c:218 #, c-format msgid "could not set junction for \"%s\": %s" -msgstr "n'a pas pu configurer la jonction pour « %s » : %s" +msgstr "n'a pas pu configurer la jonction pour « %s » : %s" #: ../port/dirmod.c:221 #, c-format msgid "could not set junction for \"%s\": %s\n" -msgstr "n'a pas pu configurer la jonction pour « %s » : %s\n" +msgstr "n'a pas pu configurer la jonction pour « %s » : %s\n" #: ../port/dirmod.c:295 #, c-format msgid "could not get junction for \"%s\": %s" -msgstr "n'a pas pu obtenir la jonction pour « %s » : %s" +msgstr "n'a pas pu obtenir la jonction pour « %s » : %s" #: ../port/dirmod.c:298 #, c-format msgid "could not get junction for \"%s\": %s\n" -msgstr "n'a pas pu obtenir la jonction pour « %s » : %s\n" +msgstr "n'a pas pu obtenir la jonction pour « %s » : %s\n" #: ../port/open.c:112 #, c-format msgid "could not open file \"%s\": %s" -msgstr "n'a pas pu ouvrir le fichier « %s » : %s" +msgstr "n'a pas pu ouvrir le fichier « %s » : %s" #: ../port/open.c:113 msgid "lock violation" @@ -306,19 +306,19 @@ msgstr "violation du partage" #: ../port/open.c:114 #, c-format msgid "Continuing to retry for 30 seconds." -msgstr "Continue à tenter pendant 30 secondes." +msgstr "Continue à tenter pendant 30 secondes." #: ../port/open.c:115 #, c-format msgid "You might have antivirus, backup, or similar software interfering with the database system." msgstr "" "Vous pouvez avoir un antivirus, un outil de sauvegarde ou un logiciel\n" -"similaire interférant avec le système de bases de données." +"similaire interférant avec le système de bases de données." #: ../port/path.c:654 #, c-format msgid "could not get current working directory: %s\n" -msgstr "n'a pas pu obtenir le répertoire de travail : %s\n" +msgstr "n'a pas pu obtenir le répertoire de travail : %s\n" #: ../port/strerror.c:25 #, c-format @@ -345,181 +345,181 @@ msgstr "" #: access/brin/brin.c:810 #, c-format msgid "\"%s\" is not a BRIN index" -msgstr "« %s » n'est pas un index BRIN" +msgstr "« %s » n'est pas un index BRIN" #: access/brin/brin.c:826 #, c-format msgid "could not open parent table of index %s" msgstr "n'a pas pu ouvrir la table parent de l'index %s" -#: access/brin/brin_pageops.c:76 access/brin/brin_pageops.c:362 access/brin/brin_pageops.c:828 +#: access/brin/brin_pageops.c:76 access/brin/brin_pageops.c:360 access/brin/brin_pageops.c:824 access/gin/ginentrypage.c:109 access/gist/gist.c:1337 access/nbtree/nbtinsert.c:576 access/nbtree/nbtsort.c:488 access/spgist/spgdoinsert.c:1907 #, c-format -msgid "index row size %lu exceeds maximum %lu for index \"%s\"" -msgstr "la taille de la ligne index, %lu, dépasse le maximum, %lu, pour l'index « %s »" +msgid "index row size %zu exceeds maximum %zu for index \"%s\"" +msgstr "la taille de la ligne index, %zu, dépasse le maximum, %zu, pour l'index « %s »" #: access/brin/brin_revmap.c:459 #, c-format msgid "unexpected page type 0x%04X in BRIN index \"%s\" block %u" -msgstr "type de page 0x%04X dans l'index BRIN « %s », bloc %u" +msgstr "type de page 0x%04X dans l'index BRIN « %s », bloc %u" -#: access/brin/brin_validate.c:115 +#: access/brin/brin_validate.c:115 access/gin/ginvalidate.c:148 access/gist/gistvalidate.c:145 access/hash/hashvalidate.c:130 access/nbtree/nbtvalidate.c:100 access/spgist/spgvalidate.c:115 #, c-format -msgid "brin operator family \"%s\" contains function %s with invalid support number %d" +msgid "operator family \"%s\" of access method %s contains function %s with invalid support number %d" msgstr "" -"la famille d'opérateur brin « %s » contient la fonction %s\n" -"avec le numéro de support %d invalide" +"la famille d'opérateur « %s » de la méthode d'accès %s contient la fonction %s avec\n" +"le numéro de support invalide %d" -#: access/brin/brin_validate.c:131 +#: access/brin/brin_validate.c:131 access/gin/ginvalidate.c:160 access/gist/gistvalidate.c:157 access/hash/hashvalidate.c:113 access/nbtree/nbtvalidate.c:112 access/spgist/spgvalidate.c:127 #, c-format -msgid "brin operator family \"%s\" contains function %s with wrong signature for support number %d" +msgid "operator family \"%s\" of access method %s contains function %s with wrong signature for support number %d" msgstr "" -"la famille d'opérateur brin « %s » contient la fonction %s\n" -"avec une mauvaise signature pour le numéro de support %d" +"la famille d'opérateur « %s » de la méthode d'accès %s contient la fonction %s avec une mauvaise\n" +"signature pour le numéro de support %d" -#: access/brin/brin_validate.c:153 +#: access/brin/brin_validate.c:153 access/gin/ginvalidate.c:179 access/gist/gistvalidate.c:177 access/hash/hashvalidate.c:151 access/nbtree/nbtvalidate.c:132 access/spgist/spgvalidate.c:146 #, c-format -msgid "brin operator family \"%s\" contains operator %s with invalid strategy number %d" +msgid "operator family \"%s\" of access method %s contains operator %s with invalid strategy number %d" msgstr "" -"la famille d'opérateur brin « %s » contient l'opérateur %s\n" -"avec le numéro de stratégie %d invalide" +"la famille d'opérateur « %s » de la méthode d'accès %s contient l'opérateur %s avec le numéro\n" +"de stratégie invalide %d" -#: access/brin/brin_validate.c:182 +#: access/brin/brin_validate.c:182 access/gin/ginvalidate.c:192 access/hash/hashvalidate.c:164 access/nbtree/nbtvalidate.c:145 access/spgist/spgvalidate.c:159 #, c-format -msgid "brin operator family \"%s\" contains invalid ORDER BY specification for operator %s" +msgid "operator family \"%s\" of access method %s contains invalid ORDER BY specification for operator %s" msgstr "" -"la famille d'opérateur brin « %s » contient une spécification\n" -"ORDER BY invalide pour l'opérateur %s" +"la famille d'opérateur « %s » de la méthode d'accès %s contient une spécification ORDER BY\n" +"invalide pour l'opérateur %s" -#: access/brin/brin_validate.c:195 +#: access/brin/brin_validate.c:195 access/gin/ginvalidate.c:205 access/gist/gistvalidate.c:225 access/hash/hashvalidate.c:177 access/nbtree/nbtvalidate.c:158 access/spgist/spgvalidate.c:172 #, c-format -msgid "brin operator family \"%s\" contains operator %s with wrong signature" -msgstr "la famille d'opérateur brin « %s » contient l'opérateur %s avec une mauvaise signature" +msgid "operator family \"%s\" of access method %s contains operator %s with wrong signature" +msgstr "la famille d'opérateur « %s » de la méthode d'accès %s contient l'opérateur %s avec une mauvaise signature" -#: access/brin/brin_validate.c:233 +#: access/brin/brin_validate.c:233 access/hash/hashvalidate.c:217 access/nbtree/nbtvalidate.c:200 access/spgist/spgvalidate.c:200 #, c-format -msgid "brin operator family \"%s\" is missing operator(s) for types %s and %s" +msgid "operator family \"%s\" of access method %s is missing operator(s) for types %s and %s" msgstr "" -"famille d'opérateur brin « %s » nécessite des opérateurs supplémentaires\n" +"famille d'opérateur « %s » de la méthode d'accès %s nécessite des opérateurs supplémentaires\n" "pour les types %s et %s" #: access/brin/brin_validate.c:243 #, c-format -msgid "brin operator family \"%s\" is missing support function(s) for types %s and %s" +msgid "operator family \"%s\" of access method %s is missing support function(s) for types %s and %s" msgstr "" -"la famille d'opérateur brin « %s » nécessite des fonctions de support\n" +"la famille d'opérateur « %s » de la méthode d'accès %s nécessite des fonctions de support\n" "manquantes pour les types %s et %s" -#: access/brin/brin_validate.c:256 +#: access/brin/brin_validate.c:256 access/hash/hashvalidate.c:231 access/nbtree/nbtvalidate.c:224 access/spgist/spgvalidate.c:233 #, c-format -msgid "brin operator class \"%s\" is missing operator(s)" -msgstr "il manque des opérateurs à la classe d'opérateur brin « %s »" +msgid "operator class \"%s\" of access method %s is missing operator(s)" +msgstr "il manque des opérateurs à la classe d'opérateur « %s » de la méthode d'accès %s" -#: access/brin/brin_validate.c:267 +#: access/brin/brin_validate.c:267 access/gin/ginvalidate.c:246 access/gist/gistvalidate.c:264 #, c-format -msgid "brin operator class \"%s\" is missing support function %d" -msgstr "la classe d'opérateur brin « %s » nécessite la fonction de support %d" +msgid "operator class \"%s\" of access method %s is missing support function %d" +msgstr "la classe d'opérateur « %s » de la méthode d'accès %s nécessite la fonction de support %d" #: access/common/heaptuple.c:708 access/common/heaptuple.c:1339 #, c-format msgid "number of columns (%d) exceeds limit (%d)" -msgstr "le nombre de colonnes (%d) dépasse la limite (%d)" +msgstr "le nombre de colonnes (%d) dépasse la limite (%d)" #: access/common/indextuple.c:60 #, c-format msgid "number of index columns (%d) exceeds limit (%d)" -msgstr "le nombre de colonnes indexées (%d) dépasse la limite (%d)" +msgstr "le nombre de colonnes indexées (%d) dépasse la limite (%d)" #: access/common/indextuple.c:176 access/spgist/spgutils.c:642 #, c-format msgid "index row requires %zu bytes, maximum size is %zu" msgstr "la ligne index requiert %zu octets, la taille maximum est %zu" -#: access/common/printtup.c:292 tcop/fastpath.c:182 tcop/fastpath.c:544 tcop/postgres.c:1719 +#: access/common/printtup.c:292 tcop/fastpath.c:182 tcop/fastpath.c:532 tcop/postgres.c:1711 #, c-format msgid "unsupported format code: %d" -msgstr "code de format non supporté : %d" +msgstr "code de format non supporté : %d" #: access/common/reloptions.c:493 #, c-format msgid "user-defined relation parameter types limit exceeded" -msgstr "limite dépassée des types de paramètres de la relation définie par l'utilisateur" +msgstr "limite dépassée des types de paramètres de la relation définie par l'utilisateur" #: access/common/reloptions.c:775 #, c-format msgid "RESET must not include values for parameters" -msgstr "RESET ne doit pas inclure de valeurs pour les paramètres" +msgstr "RESET ne doit pas inclure de valeurs pour les paramètres" #: access/common/reloptions.c:808 #, c-format msgid "unrecognized parameter namespace \"%s\"" -msgstr "espace de nom du paramètre « %s » non reconnu" +msgstr "espace de nom du paramètre « %s » non reconnu" #: access/common/reloptions.c:1050 parser/parse_clause.c:281 #, c-format msgid "unrecognized parameter \"%s\"" -msgstr "paramètre « %s » non reconnu" +msgstr "paramètre « %s » non reconnu" #: access/common/reloptions.c:1080 #, c-format msgid "parameter \"%s\" specified more than once" -msgstr "le paramètre « %s » est spécifié plus d'une fois" +msgstr "le paramètre « %s » est spécifié plus d'une fois" #: access/common/reloptions.c:1096 #, c-format msgid "invalid value for boolean option \"%s\": %s" -msgstr "valeur invalide pour l'option booléenne « %s » : %s" +msgstr "valeur invalide pour l'option booléenne « %s » : %s" #: access/common/reloptions.c:1108 #, c-format msgid "invalid value for integer option \"%s\": %s" -msgstr "valeur invalide pour l'option de type integer « %s » : %s" +msgstr "valeur invalide pour l'option de type integer « %s » : %s" #: access/common/reloptions.c:1114 access/common/reloptions.c:1134 #, c-format msgid "value %s out of bounds for option \"%s\"" -msgstr "valeur %s en dehors des limites pour l'option « %s »" +msgstr "valeur %s en dehors des limites pour l'option « %s »" #: access/common/reloptions.c:1116 #, c-format msgid "Valid values are between \"%d\" and \"%d\"." -msgstr "Les valeurs valides sont entre « %d » et « %d »." +msgstr "Les valeurs valides sont entre « %d » et « %d »." #: access/common/reloptions.c:1128 #, c-format msgid "invalid value for floating point option \"%s\": %s" -msgstr "valeur invalide pour l'option de type float « %s » : %s" +msgstr "valeur invalide pour l'option de type float « %s » : %s" #: access/common/reloptions.c:1136 #, c-format msgid "Valid values are between \"%f\" and \"%f\"." -msgstr "Les valeurs valides sont entre « %f » et « %f »." +msgstr "Les valeurs valides sont entre « %f » et « %f »." #: access/common/tupconvert.c:108 #, c-format msgid "Returned type %s does not match expected type %s in column %d." -msgstr "Le type %s renvoyé ne correspond pas au type %s attendu dans la colonne %d." +msgstr "Le type %s renvoyé ne correspond pas au type %s attendu dans la colonne %d." #: access/common/tupconvert.c:136 #, c-format msgid "Number of returned columns (%d) does not match expected column count (%d)." msgstr "" -"Le nombre de colonnes renvoyées (%d) ne correspond pas au nombre de colonnes\n" +"Le nombre de colonnes renvoyées (%d) ne correspond pas au nombre de colonnes\n" "attendues (%d)." -#: access/common/tupconvert.c:241 +#: access/common/tupconvert.c:314 #, c-format msgid "Attribute \"%s\" of type %s does not match corresponding attribute of type %s." -msgstr "L'attribut « %s » du type %s ne correspond pas à l'attribut correspondant de type %s." +msgstr "L'attribut « %s » du type %s ne correspond pas à l'attribut correspondant de type %s." -#: access/common/tupconvert.c:253 +#: access/common/tupconvert.c:326 #, c-format msgid "Attribute \"%s\" of type %s does not exist in type %s." -msgstr "L'attribut « %s » du type %s n'existe pas dans le type %s." +msgstr "L'attribut « %s » du type %s n'existe pas dans le type %s." -#: access/common/tupdesc.c:635 parser/parse_relation.c:1517 +#: access/common/tupdesc.c:635 parser/parse_relation.c:1518 #, c-format msgid "column \"%s\" cannot be declared SETOF" -msgstr "la colonne « %s » ne peut pas être déclarée SETOF" +msgstr "la colonne « %s » ne peut pas être déclarée SETOF" #: access/gin/ginbulk.c:44 #, c-format @@ -529,14 +529,9 @@ msgstr "la posting list est trop longue" #: access/gin/ginbulk.c:45 #, c-format msgid "Reduce maintenance_work_mem." -msgstr "Réduisez le maintenance_work_mem" - -#: access/gin/ginentrypage.c:109 access/gist/gist.c:1337 access/nbtree/nbtinsert.c:576 access/nbtree/nbtsort.c:488 access/spgist/spgdoinsert.c:1907 -#, c-format -msgid "index row size %zu exceeds maximum %zu for index \"%s\"" -msgstr "la taille de la ligne index, %zu, dépasse le maximum, %zu, pour l'index « %s »" +msgstr "Réduisez le maintenance_work_mem" -#: access/gin/ginfast.c:989 access/transam/xlog.c:9805 access/transam/xlog.c:10276 access/transam/xlogfuncs.c:293 access/transam/xlogfuncs.c:320 access/transam/xlogfuncs.c:359 access/transam/xlogfuncs.c:380 access/transam/xlogfuncs.c:401 access/transam/xlogfuncs.c:471 access/transam/xlogfuncs.c:527 +#: access/gin/ginfast.c:989 access/transam/xlog.c:9875 access/transam/xlog.c:10392 access/transam/xlogfuncs.c:288 access/transam/xlogfuncs.c:315 access/transam/xlogfuncs.c:354 access/transam/xlogfuncs.c:375 access/transam/xlogfuncs.c:396 access/transam/xlogfuncs.c:466 access/transam/xlogfuncs.c:522 #, c-format msgid "recovery is in progress" msgstr "restauration en cours" @@ -544,17 +539,17 @@ msgstr "restauration en cours" #: access/gin/ginfast.c:990 #, c-format msgid "GIN pending list cannot be cleaned up during recovery." -msgstr "la pending list GIN ne peut pas être nettoyée lors de la restauration" +msgstr "la pending list GIN ne peut pas être nettoyée lors de la restauration" #: access/gin/ginfast.c:997 #, c-format msgid "\"%s\" is not a GIN index" -msgstr "« %s » n'est pas un index GIN" +msgstr "« %s » n'est pas un index GIN" #: access/gin/ginfast.c:1008 #, c-format msgid "cannot access temporary indexes of other sessions" -msgstr "ne peut pas accéder aux index temporaires d'autres sessions" +msgstr "ne peut pas accéder aux index temporaires d'autres sessions" #: access/gin/ginscan.c:405 #, c-format @@ -566,298 +561,170 @@ msgstr "" #: access/gin/ginscan.c:406 #, c-format msgid "To fix this, do REINDEX INDEX \"%s\"." -msgstr "Pour corriger ceci, faites un REINDEX INDEX « %s »." - -#: access/gin/ginvalidate.c:92 -#, c-format -msgid "gin operator family \"%s\" contains support procedure %s with cross-type registration" -msgstr "" -"la famille d'opérateur gin « %s » contient la procédure de support\n" -"%s avec un enregistrement inter-type" - -#: access/gin/ginvalidate.c:148 -#, c-format -msgid "gin operator family \"%s\" contains function %s with invalid support number %d" -msgstr "" -"la famille d'opérateur gin « %s » contient la fonction %s avec\n" -"le numéro de support invalide %d" - -#: access/gin/ginvalidate.c:160 -#, c-format -msgid "gin operator family \"%s\" contains function %s with wrong signature for support number %d" -msgstr "" -"la famille d'opérateur gin « %s » contient la fonction %s avec une mauvaise\n" -"signature pour le numéro de support %d" - -#: access/gin/ginvalidate.c:179 -#, c-format -msgid "gin operator family \"%s\" contains operator %s with invalid strategy number %d" -msgstr "" -"la famille d'opérateur gin « %s » contient l'opérateur %s avec le numéro\n" -"de stratégie invalide %d" +msgstr "Pour corriger ceci, faites un REINDEX INDEX « %s »." -#: access/gin/ginvalidate.c:192 +#: access/gin/ginvalidate.c:92 access/gist/gistvalidate.c:92 access/hash/hashvalidate.c:98 access/spgist/spgvalidate.c:92 #, c-format -msgid "gin operator family \"%s\" contains invalid ORDER BY specification for operator %s" +msgid "operator family \"%s\" of access method %s contains support procedure %s with different left and right input types" msgstr "" -"la famille d'opérateur gin « %s » contient la spécification ORDER BY\n" -"invalide pour l'opérateur %s" - -#: access/gin/ginvalidate.c:205 -#, c-format -msgid "gin operator family \"%s\" contains operator %s with wrong signature" -msgstr "la famille d'opérateur gin « %s » contient l'opérateur %s avec une mauvaise signature" - -#: access/gin/ginvalidate.c:246 -#, c-format -msgid "gin operator class \"%s\" is missing support function %d" -msgstr "la famille d'opérateur gin « %s » nécessite la fonction de support %d" +"la famille d'opérateur « %s » de la méthode d'accès %s contient la procédure de support\n" +"%s avec des types en entrée différents" #: access/gin/ginvalidate.c:256 #, c-format -msgid "gin operator class \"%s\" is missing support function %d or %d" -msgstr "la famille d'opérateur gin « %s » nécessite la fonction de support %d ou %d" +msgid "operator class \"%s\" of access method %s is missing support function %d or %d" +msgstr "la classe d'opérateur « %s » de la méthode d'accès %s nécessite la fonction de support %d ou %d" #: access/gist/gist.c:680 access/gist/gistvacuum.c:258 #, c-format msgid "index \"%s\" contains an inner tuple marked as invalid" -msgstr "l'index « %s » contient une ligne interne marquée comme invalide" +msgstr "l'index « %s » contient une ligne interne marquée comme invalide" #: access/gist/gist.c:682 access/gist/gistvacuum.c:260 #, c-format msgid "This is caused by an incomplete page split at crash recovery before upgrading to PostgreSQL 9.1." msgstr "" -"Ceci est dû à la division d'une page incomplète à la restauration suite à un\n" -"crash avant la mise à jour en 9.1." +"Ceci est dû à la division d'une page incomplète à la restauration suite à un\n" +"crash avant la mise à jour en 9.1." #: access/gist/gist.c:683 access/gist/gistutil.c:738 access/gist/gistutil.c:749 access/gist/gistvacuum.c:261 access/hash/hashutil.c:172 access/hash/hashutil.c:183 access/hash/hashutil.c:195 access/hash/hashutil.c:216 access/nbtree/nbtpage.c:518 access/nbtree/nbtpage.c:529 #, c-format msgid "Please REINDEX it." -msgstr "Merci d'exécuter REINDEX sur cet objet." +msgstr "Merci d'exécuter REINDEX sur cet objet." #: access/gist/gistbuild.c:249 #, c-format msgid "invalid value for \"buffering\" option" -msgstr "valeur invalide pour l'option « buffering »" +msgstr "valeur invalide pour l'option « buffering »" #: access/gist/gistbuild.c:250 #, c-format msgid "Valid values are \"on\", \"off\", and \"auto\"." -msgstr "Les valeurs valides sont entre « on », « off » et « auto »." +msgstr "Les valeurs valides sont entre « on », « off » et « auto »." #: access/gist/gistbuildbuffers.c:778 utils/sort/logtape.c:209 #, c-format msgid "could not write block %ld of temporary file: %m" -msgstr "n'a pas pu écrire le bloc %ld du fichier temporaire : %m" +msgstr "n'a pas pu écrire le bloc %ld du fichier temporaire : %m" #: access/gist/gistsplit.c:446 #, c-format msgid "picksplit method for column %d of index \"%s\" failed" -msgstr "échec de la méthode picksplit pour la colonne %d de l'index « %s »" +msgstr "échec de la méthode picksplit pour la colonne %d de l'index « %s »" #: access/gist/gistsplit.c:448 #, c-format msgid "The index is not optimal. To optimize it, contact a developer, or try to use the column as the second one in the CREATE INDEX command." msgstr "" -"L'index n'est pas optimal. Pour l'optimiser, contactez un développeur\n" +"L'index n'est pas optimal. Pour l'optimiser, contactez un développeur\n" "ou essayez d'utiliser la colonne comme second dans la commande\n" "CREATE INDEX." #: access/gist/gistutil.c:735 access/hash/hashutil.c:169 access/nbtree/nbtpage.c:515 #, c-format msgid "index \"%s\" contains unexpected zero page at block %u" -msgstr "l'index « %s » contient une page zéro inattendue au bloc %u" +msgstr "l'index « %s » contient une page zéro inattendue au bloc %u" #: access/gist/gistutil.c:746 access/hash/hashutil.c:180 access/hash/hashutil.c:192 access/nbtree/nbtpage.c:526 #, c-format msgid "index \"%s\" contains corrupted page at block %u" -msgstr "l'index « %s » contient une page corrompue au bloc %u" - -#: access/gist/gistvalidate.c:92 -#, c-format -msgid "gist operator family \"%s\" contains support procedure %s with cross-type registration" -msgstr "" -"la famille d'opérateur gist « %s » contient la procédure de support\n" -"%s avec un enregistrement inter-type" - -#: access/gist/gistvalidate.c:145 -#, c-format -msgid "gist operator family \"%s\" contains function %s with invalid support number %d" -msgstr "" -"la famille d'opérateur gist « %s » contient la fonction %s avec\n" -"le numéro de support invalide %d" - -#: access/gist/gistvalidate.c:157 -#, c-format -msgid "gist operator family \"%s\" contains function %s with wrong signature for support number %d" -msgstr "" -"la famille d'opérateur gist « %s » contient la fonction %s avec une mauvaise\n" -"signature pour le numéro de support %d" - -#: access/gist/gistvalidate.c:177 -#, c-format -msgid "gist operator family \"%s\" contains operator %s with invalid strategy number %d" -msgstr "" -"la famille d'opérateur gist « %s » contient l'opérateur %s avec le numéro\n" -"de stratégie invalide %d" +msgstr "l'index « %s » contient une page corrompue au bloc %u" #: access/gist/gistvalidate.c:195 #, c-format -msgid "gist operator family \"%s\" contains unsupported ORDER BY specification for operator %s" +msgid "operator family \"%s\" of access method %s contains unsupported ORDER BY specification for operator %s" msgstr "" -"la famille d'opérateur gist « %s » contient la spécification ORDER BY\n" -"non supportée pour l'opérateur %s" +"la famille d'opérateur « %s » de la méthode d'accès %s contient la spécification ORDER BY\n" +"non supportée pour l'opérateur %s" #: access/gist/gistvalidate.c:206 #, c-format -msgid "gist operator family \"%s\" contains incorrect ORDER BY opfamily specification for operator %s" +msgid "operator family \"%s\" of access method %s contains incorrect ORDER BY opfamily specification for operator %s" msgstr "" -"la famille d'opérateur gist « %s » contient la spécification opfamily ORDER BY\n" -"incorrecte pour l'opérateur %s" +"la famille d'opérateur « %s » de la méthode d'accès %s contient une spécification opfamily ORDER BY\n" +"incorrecte pour l'opérateur %s" -#: access/gist/gistvalidate.c:225 -#, c-format -msgid "gist operator family \"%s\" contains operator %s with wrong signature" -msgstr "la famille d'opérateur gist « %s » contient l'opérateur %s avec une mauvaise signature" - -#: access/gist/gistvalidate.c:264 -#, c-format -msgid "gist operator class \"%s\" is missing support function %d" -msgstr "la famille d'opérateur gist « %s » nécessite la fonction de support %d" - -#: access/hash/hashinsert.c:68 +#: access/hash/hashinsert.c:70 #, c-format msgid "index row size %zu exceeds hash maximum %zu" -msgstr "la taille de la ligne index, %zu, dépasse le hachage maximum, %zu" +msgstr "la taille de la ligne index, %zu, dépasse le hachage maximum, %zu" -#: access/hash/hashinsert.c:70 access/spgist/spgdoinsert.c:1911 access/spgist/spgutils.c:703 +#: access/hash/hashinsert.c:72 access/spgist/spgdoinsert.c:1911 access/spgist/spgutils.c:703 #, c-format msgid "Values larger than a buffer page cannot be indexed." -msgstr "Les valeurs plus larges qu'une page de tampon ne peuvent pas être indexées." +msgstr "Les valeurs plus larges qu'une page de tampon ne peuvent pas être indexées." #: access/hash/hashovfl.c:546 #, c-format msgid "out of overflow pages in hash index \"%s\"" -msgstr "en dehors des pages surchargées dans l'index haché « %s »" +msgstr "en dehors des pages surchargées dans l'index haché « %s »" #: access/hash/hashsearch.c:153 #, c-format msgid "hash indexes do not support whole-index scans" -msgstr "les index hâchés ne supportent pas les parcours complets d'index" +msgstr "les index hâchés ne supportent pas les parcours complets d'index" #: access/hash/hashutil.c:208 #, c-format msgid "index \"%s\" is not a hash index" -msgstr "l'index « %s » n'est pas un index haché" +msgstr "l'index « %s » n'est pas un index haché" #: access/hash/hashutil.c:214 #, c-format msgid "index \"%s\" has wrong hash version" -msgstr "l'index « %s » a la mauvaise version de hachage" - -#: access/hash/hashvalidate.c:98 -#, c-format -msgid "hash operator family \"%s\" contains support procedure %s with cross-type registration" -msgstr "" -"la famille d'opérateur hash « %s » contient la procédure de support\n" -"%s avec un enregistrement inter-type" - -#: access/hash/hashvalidate.c:113 -#, c-format -msgid "hash operator family \"%s\" contains function %s with wrong signature for support number %d" -msgstr "" -"la famille d'opérateur hash « %s » contient la fonction %s avec une mauvaise\n" -"signature pour le numéro de support %d" - -#: access/hash/hashvalidate.c:130 -#, c-format -msgid "hash operator family \"%s\" contains function %s with invalid support number %d" -msgstr "" -"la famille d'opérateur hash « %s » contient la fonction %s avec\n" -"le numéro de support invalide %d" - -#: access/hash/hashvalidate.c:151 -#, c-format -msgid "hash operator family \"%s\" contains operator %s with invalid strategy number %d" -msgstr "" -"la famille d'opérateur hash « %s » contient l'opérateur %s avec le numéro\n" -"de stratégie invalide %d" - -#: access/hash/hashvalidate.c:164 -#, c-format -msgid "hash operator family \"%s\" contains invalid ORDER BY specification for operator %s" -msgstr "" -"la famille d'opérateur hash « %s » contient la spécification ORDER BY\n" -"non supportée pour l'opérateur %s" - -#: access/hash/hashvalidate.c:177 -#, c-format -msgid "hash operator family \"%s\" contains operator %s with wrong signature" -msgstr "la famille d'opérateur hash « %s » contient l'opérateur %s avec une mauvaise signature" +msgstr "l'index « %s » a la mauvaise version de hachage" #: access/hash/hashvalidate.c:189 #, c-format -msgid "hash operator family \"%s\" lacks support function for operator %s" -msgstr "" -"la famille d'opérateur hash « %s » requiert la fonction de support\n" -"pour l'opérateur %s" - -#: access/hash/hashvalidate.c:217 -#, c-format -msgid "hash operator family \"%s\" is missing operator(s) for types %s and %s" +msgid "operator family \"%s\" of access method %s lacks support function for operator %s" msgstr "" -"la famille d'opérateur hash « %s » nécessite des opérateurs supplémentaires\n" -"pour les types %s et %s" - -#: access/hash/hashvalidate.c:231 -#, c-format -msgid "hash operator class \"%s\" is missing operator(s)" -msgstr "il manque des opérateurs pour la classe d'opérateur hash « %s »" +"la famille d'opérateur « %s » de la méthode d'accès %s requiert la fonction de support\n" +"pour l'opérateur %s" -#: access/hash/hashvalidate.c:247 +#: access/hash/hashvalidate.c:247 access/nbtree/nbtvalidate.c:241 #, c-format -msgid "hash operator family \"%s\" is missing cross-type operator(s)" -msgstr "il manque des opérateurs inter-type pour la famille d'opérateur hash « %s »" +msgid "operator family \"%s\" of access method %s is missing cross-type operator(s)" +msgstr "il manque des opérateurs inter-type pour la famille d'opérateur « %s » de la méthode d'accès %s" -#: access/heap/heapam.c:1295 access/heap/heapam.c:1323 access/heap/heapam.c:1355 catalog/aclchk.c:1748 +#: access/heap/heapam.c:1295 access/heap/heapam.c:1323 access/heap/heapam.c:1355 catalog/aclchk.c:1756 #, c-format msgid "\"%s\" is an index" -msgstr "« %s » est un index" +msgstr "« %s » est un index" -#: access/heap/heapam.c:1300 access/heap/heapam.c:1328 access/heap/heapam.c:1360 catalog/aclchk.c:1755 commands/tablecmds.c:8984 commands/tablecmds.c:12042 +#: access/heap/heapam.c:1300 access/heap/heapam.c:1328 access/heap/heapam.c:1360 catalog/aclchk.c:1763 commands/tablecmds.c:9082 commands/tablecmds.c:12190 #, c-format msgid "\"%s\" is a composite type" -msgstr "« %s » est un type composite" +msgstr "« %s » est un type composite" #: access/heap/heapam.c:2567 #, c-format msgid "cannot insert tuples during a parallel operation" -msgstr "ne peut pas insérer les lignes lors d'une opération parallèle" +msgstr "ne peut pas insérer les lignes lors d'une opération parallèle" #: access/heap/heapam.c:3017 #, c-format msgid "cannot delete tuples during a parallel operation" -msgstr "ne peut pas supprimer les lignes lors d'une opération parallèle" +msgstr "ne peut pas supprimer les lignes lors d'une opération parallèle" #: access/heap/heapam.c:3063 #, c-format msgid "attempted to delete invisible tuple" -msgstr "a tenté de supprimer la ligne invisible" +msgstr "a tenté de supprimer la ligne invisible" #: access/heap/heapam.c:3489 access/heap/heapam.c:6240 #, c-format msgid "cannot update tuples during a parallel operation" -msgstr "ne peut pas mettre à jour les lignes lors d'une opération parallèle" +msgstr "ne peut pas mettre à jour les lignes lors d'une opération parallèle" #: access/heap/heapam.c:3611 #, c-format msgid "attempted to update invisible tuple" -msgstr "a tenté de mettre à jour la ligne invisible" +msgstr "a tenté de mettre à jour la ligne invisible" -#: access/heap/heapam.c:4963 access/heap/heapam.c:5001 access/heap/heapam.c:5253 executor/execMain.c:2312 +#: access/heap/heapam.c:4963 access/heap/heapam.c:5001 access/heap/heapam.c:5253 executor/execMain.c:2314 #, c-format msgid "could not obtain lock on row in relation \"%s\"" -msgstr "n'a pas pu obtenir un verrou sur la relation « %s »" +msgstr "n'a pas pu obtenir un verrou sur la relation « %s »" #: access/heap/hio.c:322 access/heap/rewriteheap.c:664 #, c-format @@ -867,80 +734,80 @@ msgstr "la ligne est trop grande : taille %zu, taille maximale %zu" #: access/heap/rewriteheap.c:923 #, c-format msgid "could not write to file \"%s\", wrote %d of %d: %m" -msgstr "n'a pas pu écrire le fichier « %s », a écrit %d de %d : %m" +msgstr "n'a pas pu écrire le fichier « %s », a écrit %d de %d : %m" -#: access/heap/rewriteheap.c:963 access/heap/rewriteheap.c:1175 access/heap/rewriteheap.c:1272 access/transam/timeline.c:407 access/transam/timeline.c:483 access/transam/xlog.c:3058 access/transam/xlog.c:3220 replication/logical/snapbuild.c:1605 replication/slot.c:1088 replication/slot.c:1173 storage/file/fd.c:624 storage/file/fd.c:3052 storage/smgr/md.c:1041 storage/smgr/md.c:1274 storage/smgr/md.c:1447 utils/misc/guc.c:6887 +#: access/heap/rewriteheap.c:963 access/heap/rewriteheap.c:1175 access/heap/rewriteheap.c:1272 access/transam/timeline.c:407 access/transam/timeline.c:483 access/transam/xlog.c:3093 access/transam/xlog.c:3255 replication/logical/snapbuild.c:1605 replication/slot.c:1105 replication/slot.c:1190 storage/file/fd.c:631 storage/file/fd.c:3129 storage/smgr/md.c:1041 storage/smgr/md.c:1274 storage/smgr/md.c:1447 utils/misc/guc.c:6885 #, c-format msgid "could not fsync file \"%s\": %m" -msgstr "n'a pas pu synchroniser sur disque (fsync) le fichier « %s » : %m" +msgstr "n'a pas pu synchroniser sur disque (fsync) le fichier « %s » : %m" -#: access/heap/rewriteheap.c:1018 access/heap/rewriteheap.c:1138 access/transam/timeline.c:315 access/transam/timeline.c:461 access/transam/xlog.c:3014 access/transam/xlog.c:3163 access/transam/xlog.c:10134 access/transam/xlog.c:10172 access/transam/xlog.c:10499 postmaster/postmaster.c:4363 replication/logical/origin.c:542 replication/slot.c:1045 storage/file/copydir.c:162 storage/smgr/md.c:327 utils/time/snapmgr.c:1223 +#: access/heap/rewriteheap.c:1018 access/heap/rewriteheap.c:1138 access/transam/timeline.c:315 access/transam/timeline.c:461 access/transam/xlog.c:3049 access/transam/xlog.c:3198 access/transam/xlog.c:10209 access/transam/xlog.c:10247 access/transam/xlog.c:10636 postmaster/postmaster.c:4387 replication/logical/origin.c:542 replication/slot.c:1062 storage/file/copydir.c:162 storage/smgr/md.c:327 utils/time/snapmgr.c:1275 #, c-format msgid "could not create file \"%s\": %m" -msgstr "n'a pas pu créer le fichier « %s » : %m" +msgstr "n'a pas pu créer le fichier « %s » : %m" #: access/heap/rewriteheap.c:1147 #, c-format msgid "could not truncate file \"%s\" to %u: %m" -msgstr "n'a pas pu tronquer le fichier « %s » en %u : %m" +msgstr "n'a pas pu tronquer le fichier « %s » en %u : %m" -#: access/heap/rewriteheap.c:1154 replication/walsender.c:481 storage/smgr/md.c:1899 +#: access/heap/rewriteheap.c:1154 replication/walsender.c:486 storage/smgr/md.c:1899 #, c-format msgid "could not seek to end of file \"%s\": %m" -msgstr "n'a pas pu trouver la fin du fichier « %s » : %m" +msgstr "n'a pas pu trouver la fin du fichier « %s » : %m" -#: access/heap/rewriteheap.c:1165 access/transam/timeline.c:367 access/transam/timeline.c:401 access/transam/timeline.c:477 access/transam/xlog.c:3049 access/transam/xlog.c:3213 postmaster/postmaster.c:4373 postmaster/postmaster.c:4383 replication/logical/origin.c:551 replication/logical/origin.c:587 replication/logical/origin.c:603 replication/logical/snapbuild.c:1589 replication/slot.c:1074 storage/file/copydir.c:187 -#: utils/init/miscinit.c:1228 utils/init/miscinit.c:1237 utils/init/miscinit.c:1244 utils/misc/guc.c:6848 utils/misc/guc.c:6879 utils/misc/guc.c:8721 utils/misc/guc.c:8735 utils/time/snapmgr.c:1228 utils/time/snapmgr.c:1235 +#: access/heap/rewriteheap.c:1165 access/transam/timeline.c:367 access/transam/timeline.c:401 access/transam/timeline.c:477 access/transam/xlog.c:3084 access/transam/xlog.c:3248 postmaster/postmaster.c:4397 postmaster/postmaster.c:4407 replication/logical/origin.c:551 replication/logical/origin.c:590 replication/logical/origin.c:606 replication/logical/snapbuild.c:1589 replication/slot.c:1091 storage/file/copydir.c:187 +#: utils/init/miscinit.c:1228 utils/init/miscinit.c:1237 utils/init/miscinit.c:1244 utils/misc/guc.c:6846 utils/misc/guc.c:6877 utils/misc/guc.c:8727 utils/misc/guc.c:8741 utils/time/snapmgr.c:1280 utils/time/snapmgr.c:1287 #, c-format msgid "could not write to file \"%s\": %m" -msgstr "n'a pas pu écrire dans le fichier « %s » : %m" +msgstr "n'a pas pu écrire dans le fichier « %s » : %m" -#: access/heap/rewriteheap.c:1248 access/transam/xlog.c:10366 access/transam/xlogarchive.c:114 access/transam/xlogarchive.c:468 replication/logical/origin.c:529 replication/logical/reorderbuffer.c:2626 replication/logical/reorderbuffer.c:2683 replication/logical/snapbuild.c:1533 replication/logical/snapbuild.c:1908 replication/slot.c:1147 storage/ipc/dsm.c:326 storage/smgr/md.c:427 storage/smgr/md.c:476 storage/smgr/md.c:1394 +#: access/heap/rewriteheap.c:1248 access/transam/xlog.c:10471 access/transam/xlogarchive.c:114 access/transam/xlogarchive.c:468 replication/logical/origin.c:529 replication/logical/reorderbuffer.c:2633 replication/logical/reorderbuffer.c:2690 replication/logical/snapbuild.c:1538 replication/logical/snapbuild.c:1901 replication/slot.c:1164 storage/ipc/dsm.c:326 storage/smgr/md.c:427 storage/smgr/md.c:476 storage/smgr/md.c:1394 #, c-format msgid "could not remove file \"%s\": %m" -msgstr "n'a pas pu supprimer le fichier « %s » : %m" +msgstr "n'a pas pu supprimer le fichier « %s » : %m" -#: access/heap/rewriteheap.c:1262 access/transam/timeline.c:111 access/transam/timeline.c:236 access/transam/timeline.c:334 access/transam/xlog.c:2990 access/transam/xlog.c:3107 access/transam/xlog.c:3148 access/transam/xlog.c:3421 access/transam/xlog.c:3499 access/transam/xlogutils.c:701 replication/basebackup.c:401 replication/basebackup.c:1162 replication/logical/origin.c:658 replication/logical/reorderbuffer.c:2153 -#: replication/logical/reorderbuffer.c:2396 replication/logical/reorderbuffer.c:3075 replication/logical/snapbuild.c:1582 replication/logical/snapbuild.c:1666 replication/slot.c:1162 replication/walsender.c:474 replication/walsender.c:2102 storage/file/copydir.c:155 storage/file/fd.c:607 storage/file/fd.c:2964 storage/file/fd.c:3031 storage/smgr/md.c:609 utils/error/elog.c:1879 utils/init/miscinit.c:1163 utils/init/miscinit.c:1284 -#: utils/init/miscinit.c:1362 utils/misc/guc.c:7107 utils/misc/guc.c:7140 +#: access/heap/rewriteheap.c:1262 access/transam/timeline.c:111 access/transam/timeline.c:236 access/transam/timeline.c:334 access/transam/xlog.c:3025 access/transam/xlog.c:3142 access/transam/xlog.c:3183 access/transam/xlog.c:3456 access/transam/xlog.c:3534 access/transam/xlogutils.c:701 replication/basebackup.c:403 replication/basebackup.c:1150 replication/logical/origin.c:661 replication/logical/reorderbuffer.c:2156 +#: replication/logical/reorderbuffer.c:2403 replication/logical/reorderbuffer.c:3082 replication/logical/snapbuild.c:1582 replication/logical/snapbuild.c:1666 replication/slot.c:1179 replication/walsender.c:479 replication/walsender.c:2144 storage/file/copydir.c:155 storage/file/fd.c:614 storage/file/fd.c:3041 storage/file/fd.c:3108 storage/smgr/md.c:609 utils/error/elog.c:1879 utils/init/miscinit.c:1163 utils/init/miscinit.c:1284 +#: utils/init/miscinit.c:1362 utils/misc/guc.c:7105 utils/misc/guc.c:7138 #, c-format msgid "could not open file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier « %s » : %m" +msgstr "n'a pas pu ouvrir le fichier « %s » : %m" #: access/index/amapi.c:82 commands/amcmds.c:164 #, c-format msgid "access method \"%s\" is not of type %s" -msgstr "la méthode d'accès « %s » n'est pas de type %s" +msgstr "la méthode d'accès « %s » n'est pas de type %s" #: access/index/amapi.c:98 #, c-format msgid "index access method \"%s\" does not have a handler" -msgstr "la méthode d'accès « %s » n'a pas de handler" +msgstr "la méthode d'accès « %s » n'a pas de handler" -#: access/index/indexam.c:155 catalog/objectaddress.c:1196 commands/indexcmds.c:1799 commands/tablecmds.c:241 commands/tablecmds.c:12033 +#: access/index/indexam.c:155 catalog/objectaddress.c:1196 commands/indexcmds.c:1800 commands/tablecmds.c:242 commands/tablecmds.c:12181 #, c-format msgid "\"%s\" is not an index" -msgstr "« %s » n'est pas un index" +msgstr "« %s » n'est pas un index" #: access/nbtree/nbtinsert.c:428 #, c-format msgid "duplicate key value violates unique constraint \"%s\"" -msgstr "la valeur d'une clé dupliquée rompt la contrainte unique « %s »" +msgstr "la valeur d'une clé dupliquée rompt la contrainte unique « %s »" #: access/nbtree/nbtinsert.c:430 #, c-format msgid "Key %s already exists." -msgstr "La clé « %s » existe déjà." +msgstr "La clé « %s » existe déjà." #: access/nbtree/nbtinsert.c:497 #, c-format msgid "failed to re-find tuple within index \"%s\"" -msgstr "échec pour retrouver la ligne dans l'index « %s »" +msgstr "échec pour retrouver la ligne dans l'index « %s »" #: access/nbtree/nbtinsert.c:499 #, c-format msgid "This may be because of a non-immutable index expression." -msgstr "Ceci peut être dû à une expression d'index immutable." +msgstr "Ceci peut être dû à une expression d'index immutable." #: access/nbtree/nbtinsert.c:579 access/nbtree/nbtsort.c:491 #, c-format @@ -948,181 +815,79 @@ msgid "" "Values larger than 1/3 of a buffer page cannot be indexed.\n" "Consider a function index of an MD5 hash of the value, or use full text indexing." msgstr "" -"Les valeurs plus larges qu'un tiers d'une page de tampon ne peuvent pas être\n" -"indexées.\n" -"Utilisez un index sur le hachage MD5 de la valeur ou passez à l'indexation\n" +"Les valeurs plus larges qu'un tiers d'une page de tampon ne peuvent pas être\n" +"indexées.\n" +"Utilisez un index sur le hachage MD5 de la valeur ou passez à l'indexation\n" "de la recherche plein texte." -#: access/nbtree/nbtpage.c:168 access/nbtree/nbtpage.c:371 access/nbtree/nbtpage.c:458 parser/parse_utilcmd.c:1717 +#: access/nbtree/nbtpage.c:168 access/nbtree/nbtpage.c:371 access/nbtree/nbtpage.c:458 parser/parse_utilcmd.c:1702 #, c-format msgid "index \"%s\" is not a btree" -msgstr "l'index « %s » n'est pas un btree" +msgstr "l'index « %s » n'est pas un btree" #: access/nbtree/nbtpage.c:174 access/nbtree/nbtpage.c:377 access/nbtree/nbtpage.c:464 #, c-format msgid "version mismatch in index \"%s\": file version %d, code version %d" -msgstr "la version ne correspond pas dans l'index « %s » : version du fichier %d, version du code %d" +msgstr "la version ne correspond pas dans l'index « %s » : version du fichier %d, version du code %d" #: access/nbtree/nbtpage.c:1152 #, c-format msgid "index \"%s\" contains a half-dead internal page" -msgstr "l'index « %s » contient une page interne à moitié morte" +msgstr "l'index « %s » contient une page interne à moitié morte" #: access/nbtree/nbtpage.c:1154 #, c-format msgid "This can be caused by an interrupted VACUUM in version 9.3 or older, before upgrade. Please REINDEX it." -msgstr "Ceci peut être dû à un VACUUM interrompu en version 9.3 ou antérieure, avant la mise à jour. Merci d'utiliser REINDEX." - -#: access/nbtree/nbtvalidate.c:100 -#, c-format -msgid "btree operator family \"%s\" contains function %s with invalid support number %d" -msgstr "" -"la famille d'opérateur btree « %s » contient la fonction %s\n" -"avec le numéro de support invalide %d" - -#: access/nbtree/nbtvalidate.c:112 -#, c-format -msgid "btree operator family \"%s\" contains function %s with wrong signature for support number %d" -msgstr "" -"la famille d'opérateur btree « %s » contient la fonction %s\n" -"avec une mauvaise signature pour le numéro de support %d" - -#: access/nbtree/nbtvalidate.c:132 -#, c-format -msgid "btree operator family \"%s\" contains operator %s with invalid strategy number %d" -msgstr "" -"la famille d'opérateur btree « %s » contient l'opérateur %s\n" -"avec le numéro de stratégie invalide %d" - -#: access/nbtree/nbtvalidate.c:145 -#, c-format -msgid "btree operator family \"%s\" contains invalid ORDER BY specification for operator %s" -msgstr "" -"la famille d'opérateur btree « %s » contient une spécification\n" -"ORDER BY invalide pour l'opérateur %s" - -#: access/nbtree/nbtvalidate.c:158 -#, c-format -msgid "btree operator family \"%s\" contains operator %s with wrong signature" -msgstr "la famille d'opérateur btree « %s » contient l'opérateur %s avec une mauvaise signature" - -#: access/nbtree/nbtvalidate.c:200 -#, c-format -msgid "btree operator family \"%s\" is missing operator(s) for types %s and %s" -msgstr "" -"la famille d'opérateur btree « %s » nécessite des opérateurs supplémentaires\n" -"pour les types %s et %s" +msgstr "Ceci peut être dû à un VACUUM interrompu en version 9.3 ou antérieure, avant la mise à jour. Merci d'utiliser REINDEX." #: access/nbtree/nbtvalidate.c:210 #, c-format -msgid "btree operator family \"%s\" is missing support function for types %s and %s" +msgid "operator family \"%s\" of access method %s is missing support function for types %s and %s" msgstr "" -"la famille d'opérateur btree « %s » nécessite une fonction de support\n" +"la famille d'opérateur btree « %s » de la méthode d'accès %s nécessite une fonction de support\n" "pour les types %s et %s" -#: access/nbtree/nbtvalidate.c:224 -#, c-format -msgid "btree operator class \"%s\" is missing operator(s)" -msgstr "il manque des opérateurs pour la classe d'opérateur btree « %s »" - -#: access/nbtree/nbtvalidate.c:241 -#, c-format -msgid "btree operator family \"%s\" is missing cross-type operator(s)" -msgstr "il manque des opérateurs inter-type pour la famille d'opérateur btree « %s »" - #: access/spgist/spgutils.c:700 #, c-format msgid "SP-GiST inner tuple size %zu exceeds maximum %zu" -msgstr "la taille de la ligne interne SP-GiST, %zu, dépasse le maximum, %zu" - -#: access/spgist/spgvalidate.c:92 -#, c-format -msgid "spgist operator family \"%s\" contains support procedure %s with cross-type registration" -msgstr "" -"la famille d'opérateur spgist « %s » contient la procédure de support\n" -"%s avec un enregistrement inter-type" - -#: access/spgist/spgvalidate.c:115 -#, c-format -msgid "spgist operator family \"%s\" contains function %s with invalid support number %d" -msgstr "" -"la famille d'opérateur spgist « %s » contient la fonction %s\n" -"avec le numéro de support %d invalide" - -#: access/spgist/spgvalidate.c:127 -#, c-format -msgid "spgist operator family \"%s\" contains function %s with wrong signature for support number %d" -msgstr "" -"la famille d'opérateur spgist « %s » contient la fonction %s\n" -"avec une mauvaise signature pour le numéro de support %d" - -#: access/spgist/spgvalidate.c:146 -#, c-format -msgid "spgist operator family \"%s\" contains operator %s with invalid strategy number %d" -msgstr "" -"la famille d'opérateur spgist « %s » contient l'opérateur %s\n" -"avec le numéro de stratégie invalide %d" - -#: access/spgist/spgvalidate.c:159 -#, c-format -msgid "spgist operator family \"%s\" contains invalid ORDER BY specification for operator %s" -msgstr "" -"la famille d'opérateur spgist « %s » contient une spécification\n" -"ORDER BY invalide pour l'opérateur %s" - -#: access/spgist/spgvalidate.c:172 -#, c-format -msgid "spgist operator family \"%s\" contains operator %s with wrong signature" -msgstr "la famille d'opérateur spgist « %s » contient l'opérateur %s avec une mauvaise signature" - -#: access/spgist/spgvalidate.c:200 -#, c-format -msgid "spgist operator family \"%s\" is missing operator(s) for types %s and %s" -msgstr "" -"la famille d'opérateur spgist « %s » nécessite des opérateurs supplémentaires\n" -"pour les types %s et %s" +msgstr "la taille de la ligne interne SP-GiST, %zu, dépasse le maximum, %zu" #: access/spgist/spgvalidate.c:220 #, c-format -msgid "spgist operator family \"%s\" is missing support function %d for type %s" +msgid "operator family \"%s\" of access method %s is missing support function %d for type %s" msgstr "" -"la famille d'opérateur spgist « %s » nécessite la fonction de support %d\n" +"la famille d'opérateur « %s » de la méthode d'accès %s nécessite la fonction de support %d\n" "pour le type %s" -#: access/spgist/spgvalidate.c:233 -#, c-format -msgid "spgist operator class \"%s\" is missing operator(s)" -msgstr "il manque des opérateurs pour la classe d'opérateur spgist « %s »" - #: access/tablesample/bernoulli.c:152 access/tablesample/system.c:156 #, c-format msgid "sample percentage must be between 0 and 100" -msgstr "le pourcentage de l'échantillonnage doit être compris entre 0 et 100" +msgstr "le pourcentage de l'échantillonnage doit être compris entre 0 et 100" -#: access/transam/commit_ts.c:295 +#: access/transam/commit_ts.c:294 #, c-format msgid "cannot retrieve commit timestamp for transaction %u" -msgstr "ne peut pas récupérer l'horodatage de la validation pour la transaction %u" +msgstr "ne peut pas récupérer l'horodatage de la validation pour la transaction %u" -#: access/transam/commit_ts.c:385 +#: access/transam/commit_ts.c:392 #, c-format msgid "could not get commit timestamp data" -msgstr "n'a pas pu récupérer les données d'horodatage de la validation" +msgstr "n'a pas pu récupérer les données d'horodatage de la validation" -#: access/transam/commit_ts.c:387 +#: access/transam/commit_ts.c:394 #, c-format msgid "Make sure the configuration parameter \"%s\" is set on the master server." -msgstr "Assurez-vous que le paramètre de configuration « %s » soit configuré sur le serveur primaire." +msgstr "Assurez-vous que le paramètre de configuration « %s » soit configuré sur le serveur primaire." -#: access/transam/commit_ts.c:389 libpq/hba.c:1439 +#: access/transam/commit_ts.c:396 libpq/hba.c:1439 #, c-format msgid "Make sure the configuration parameter \"%s\" is set." -msgstr "Assurez-vous que le paramètre de configuration « %s » soit configuré." +msgstr "Assurez-vous que le paramètre de configuration « %s » soit configuré." #: access/transam/multixact.c:1000 #, c-format msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database \"%s\"" -msgstr "la base de données n'accepte pas de commandes qui génèrent de nouveaux MultiXactId pour éviter les pertes de données suite à une réinitialisation de l'identifiant de transaction dans la base de données « %s »" +msgstr "la base de données n'accepte pas de commandes qui génèrent de nouveaux MultiXactId pour éviter les pertes de données suite à une réinitialisation de l'identifiant de transaction dans la base de données « %s »" #: access/transam/multixact.c:1002 access/transam/multixact.c:1009 access/transam/multixact.c:1033 access/transam/multixact.c:1042 #, c-format @@ -1130,58 +895,58 @@ msgid "" "Execute a database-wide VACUUM in that database.\n" "You might also need to commit or roll back old prepared transactions." msgstr "" -"Exécutez un VACUUM sur toute cette base.\n" -"Vous pouvez avoir besoin de valider ou d'annuler les anciennes transactions préparées." +"Exécutez un VACUUM sur toute cette base.\n" +"Vous pouvez avoir besoin de valider ou d'annuler les anciennes transactions préparées." #: access/transam/multixact.c:1007 #, c-format msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database with OID %u" msgstr "" -"la base de données n'accepte pas de commandes qui génèrent de nouveaux MultiXactId pour éviter des pertes de données à cause de la réinitialisation de l'identifiant de transaction dans\n" -"la base de données d'OID %u" +"la base de données n'accepte pas de commandes qui génèrent de nouveaux MultiXactId pour éviter des pertes de données à cause de la réinitialisation de l'identifiant de transaction dans\n" +"la base de données d'OID %u" #: access/transam/multixact.c:1028 access/transam/multixact.c:2314 #, c-format msgid "database \"%s\" must be vacuumed before %u more MultiXactId is used" msgid_plural "database \"%s\" must be vacuumed before %u more MultiXactIds are used" -msgstr[0] "un VACUUM doit être exécuté sur la base de données « %s » dans un maximum de %u MultiXactId" -msgstr[1] "un VACUUM doit être exécuté sur la base de données « %s » dans un maximum de %u MultiXactId" +msgstr[0] "un VACUUM doit être exécuté sur la base de données « %s » dans un maximum de %u MultiXactId" +msgstr[1] "un VACUUM doit être exécuté sur la base de données « %s » dans un maximum de %u MultiXactId" #: access/transam/multixact.c:1037 access/transam/multixact.c:2323 #, c-format msgid "database with OID %u must be vacuumed before %u more MultiXactId is used" msgid_plural "database with OID %u must be vacuumed before %u more MultiXactIds are used" -msgstr[0] "un VACUUM doit être exécuté sur la base de données d'OID %u dans un maximum de %u MultiXactId" -msgstr[1] "un VACUUM doit être exécuté sur la base de données d'OID %u dans un maximum de %u MultiXactId" +msgstr[0] "un VACUUM doit être exécuté sur la base de données d'OID %u dans un maximum de %u MultiXactId" +msgstr[1] "un VACUUM doit être exécuté sur la base de données d'OID %u dans un maximum de %u MultiXactId" #: access/transam/multixact.c:1098 #, c-format msgid "multixact \"members\" limit exceeded" -msgstr "dépassement de limite des membres du multixact" +msgstr "dépassement de limite des membres du multixact" #: access/transam/multixact.c:1099 #, c-format msgid "This command would create a multixact with %u members, but the remaining space is only enough for %u member." msgid_plural "This command would create a multixact with %u members, but the remaining space is only enough for %u members." -msgstr[0] "Cette commande créera un multixact avec %u membres, mais l'espace restant est seulement suffisant pour %u membre." -msgstr[1] "Cette commande créera un multixact avec %u membres, mais l'espace restant est seulement suffisant pour %u membres." +msgstr[0] "Cette commande créera un multixact avec %u membres, mais l'espace restant est seulement suffisant pour %u membre." +msgstr[1] "Cette commande créera un multixact avec %u membres, mais l'espace restant est seulement suffisant pour %u membres." #: access/transam/multixact.c:1104 #, c-format msgid "Execute a database-wide VACUUM in database with OID %u with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings." -msgstr "Exécute un VACUUM sur la base dans la base d'OID %u avec une configuration réduite pour vacuum_multixact_freeze_min_age et vacuum_multixact_freeze_table_age." +msgstr "Exécute un VACUUM sur la base dans la base d'OID %u avec une configuration réduite pour vacuum_multixact_freeze_min_age et vacuum_multixact_freeze_table_age." #: access/transam/multixact.c:1135 #, c-format msgid "database with OID %u must be vacuumed before %d more multixact member is used" msgid_plural "database with OID %u must be vacuumed before %d more multixact members are used" -msgstr[0] "un VACUUM doit être exécuté sur la base de données d'OID %u avant que %d MultiXactId supplémentaire ne soit utilisé" -msgstr[1] "un VACUUM doit être exécuté sur la base de données d'OID %u avant que %d MultiXactId supplémentaires ne soient utilisés" +msgstr[0] "un VACUUM doit être exécuté sur la base de données d'OID %u avant que %d MultiXactId supplémentaire ne soit utilisé" +msgstr[1] "un VACUUM doit être exécuté sur la base de données d'OID %u avant que %d MultiXactId supplémentaires ne soient utilisés" #: access/transam/multixact.c:1140 #, c-format msgid "Execute a database-wide VACUUM in that database with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings." -msgstr "Exécute un VACUUM sur la base dans cette base avec une configuration réduite pour vacuum_multixact_freeze_min_age et vacuum_multixact_freeze_table_age." +msgstr "Exécute un VACUUM sur la base dans cette base avec une configuration réduite pour vacuum_multixact_freeze_min_age et vacuum_multixact_freeze_table_age." #: access/transam/multixact.c:1277 #, c-format @@ -1191,12 +956,12 @@ msgstr "le MultiXactId %u n'existe plus - wraparound apparent" #: access/transam/multixact.c:1285 #, c-format msgid "MultiXactId %u has not been created yet -- apparent wraparound" -msgstr "le MultiXactId %u n'a pas encore été créer : wraparound apparent" +msgstr "le MultiXactId %u n'a pas encore été créer : wraparound apparent" #: access/transam/multixact.c:2264 #, c-format msgid "MultiXactId wrap limit is %u, limited by database with OID %u" -msgstr "La limite de réinitialisation MultiXactId est %u, limité par la base de données d'OID %u" +msgstr "La limite de réinitialisation MultiXactId est %u, limité par la base de données d'OID %u" #: access/transam/multixact.c:2319 access/transam/multixact.c:2328 access/transam/varsup.c:146 access/transam/varsup.c:153 access/transam/varsup.c:384 access/transam/varsup.c:391 #, c-format @@ -1204,34 +969,34 @@ msgid "" "To avoid a database shutdown, execute a database-wide VACUUM in that database.\n" "You might also need to commit or roll back old prepared transactions." msgstr "" -"Pour éviter un arrêt de la base de données, exécutez un VACUUM sur toute cette\n" +"Pour éviter un arrêt de la base de données, exécutez un VACUUM sur toute cette\n" "base. Vous pouvez avoir besoin d'enregistrer ou d'annuler les anciennes\n" -"transactions préparées." +"transactions préparées." #: access/transam/multixact.c:2598 #, c-format msgid "oldest MultiXactId member is at offset %u" -msgstr "le membre le plus ancien du MultiXactId est au décalage %u" +msgstr "le membre le plus ancien du MultiXactId est au décalage %u" #: access/transam/multixact.c:2602 #, c-format msgid "MultiXact member wraparound protections are disabled because oldest checkpointed MultiXact %u does not exist on disk" -msgstr "Les protections sur la réutilisation d'un membre MultiXact sont désactivées car le plus ancien MultiXact géré par un checkpoint, %u, n'existe pas sur disque" +msgstr "Les protections sur la réutilisation d'un membre MultiXact sont désactivées car le plus ancien MultiXact géré par un checkpoint, %u, n'existe pas sur disque" #: access/transam/multixact.c:2624 #, c-format msgid "MultiXact member wraparound protections are now enabled" -msgstr "Les protections sur la réutilisation d'un membre MultiXact sont maintenant activées" +msgstr "Les protections sur la réutilisation d'un membre MultiXact sont maintenant activées" #: access/transam/multixact.c:2626 #, c-format msgid "MultiXact member stop limit is now %u based on MultiXact %u" -msgstr "La limite d'arrêt d'un membre MultiXact est maintenant %x, base sur le MultiXact %u" +msgstr "La limite d'arrêt d'un membre MultiXact est maintenant %x, base sur le MultiXact %u" #: access/transam/multixact.c:3006 #, c-format msgid "oldest MultiXact %u not found, earliest MultiXact %u, skipping truncation" -msgstr "plus ancien MultiXact introuvable %u, plus récent MultiXact %u, ignore le troncage" +msgstr "plus ancien MultiXact introuvable %u, plus récent MultiXact %u, ignore le troncage" #: access/transam/multixact.c:3024 #, c-format @@ -1243,79 +1008,79 @@ msgstr "ne peut pas tronquer jusqu'au MutiXact %u car il n'existe pas sur disque msgid "invalid MultiXactId: %u" msgstr "MultiXactId invalide : %u" -#: access/transam/parallel.c:589 +#: access/transam/parallel.c:610 #, c-format msgid "postmaster exited during a parallel transaction" -msgstr "postmaster a quitté pendant une transaction parallèle" +msgstr "postmaster a quitté pendant une transaction parallèle" -#: access/transam/parallel.c:774 +#: access/transam/parallel.c:799 #, c-format msgid "lost connection to parallel worker" -msgstr "perte de la connexion au processus parallèle" +msgstr "perte de la connexion au processus parallèle" -#: access/transam/parallel.c:833 access/transam/parallel.c:835 +#: access/transam/parallel.c:858 access/transam/parallel.c:860 msgid "parallel worker" -msgstr "processus parallèle" +msgstr "processus parallèle" -#: access/transam/parallel.c:974 +#: access/transam/parallel.c:1001 #, c-format msgid "could not map dynamic shared memory segment" -msgstr "n'a pas pu mapper le segment de mémoire partagée dynamique" +msgstr "n'a pas pu mapper le segment de mémoire partagée dynamique" -#: access/transam/parallel.c:979 +#: access/transam/parallel.c:1006 #, c-format msgid "invalid magic number in dynamic shared memory segment" -msgstr "numéro magique invalide dans le segment de mémoire partagée dynamique" +msgstr "numéro magique invalide dans le segment de mémoire partagée dynamique" #: access/transam/slru.c:665 #, c-format msgid "file \"%s\" doesn't exist, reading as zeroes" -msgstr "le fichier « %s » n'existe pas, contenu lu comme des zéros" +msgstr "le fichier « %s » n'existe pas, contenu lu comme des zéros" #: access/transam/slru.c:895 access/transam/slru.c:901 access/transam/slru.c:908 access/transam/slru.c:915 access/transam/slru.c:922 access/transam/slru.c:929 #, c-format msgid "could not access status of transaction %u" -msgstr "n'a pas pu accéder au statut de la transaction %u" +msgstr "n'a pas pu accéder au statut de la transaction %u" #: access/transam/slru.c:896 #, c-format msgid "Could not open file \"%s\": %m." -msgstr "N'a pas pu ouvrir le fichier « %s » : %m" +msgstr "N'a pas pu ouvrir le fichier « %s » : %m" #: access/transam/slru.c:902 #, c-format msgid "Could not seek in file \"%s\" to offset %u: %m." -msgstr "N'a pas pu se déplacer dans le fichier « %s » au décalage %u : %m" +msgstr "N'a pas pu se déplacer dans le fichier « %s » au décalage %u : %m" #: access/transam/slru.c:909 #, c-format msgid "Could not read from file \"%s\" at offset %u: %m." -msgstr "N'a pas pu lire le fichier « %s » au décalage %u : %m" +msgstr "N'a pas pu lire le fichier « %s » au décalage %u : %m" #: access/transam/slru.c:916 #, c-format msgid "Could not write to file \"%s\" at offset %u: %m." -msgstr "N'a pas pu écrire le fichier « %s » au décalage %u : %m" +msgstr "N'a pas pu écrire le fichier « %s » au décalage %u : %m" #: access/transam/slru.c:923 #, c-format msgid "Could not fsync file \"%s\": %m." -msgstr "N'a pas pu synchroniser sur disque (fsync) le fichier « %s » : %m" +msgstr "N'a pas pu synchroniser sur disque (fsync) le fichier « %s » : %m" #: access/transam/slru.c:930 #, c-format msgid "Could not close file \"%s\": %m." -msgstr "N'a pas pu fermer le fichier « %s » : %m" +msgstr "N'a pas pu fermer le fichier « %s » : %m" #: access/transam/slru.c:1185 #, c-format msgid "could not truncate directory \"%s\": apparent wraparound" -msgstr "n'a pas pu tronquer le répertoire « %s » : contournement apparent" +msgstr "n'a pas pu tronquer le répertoire « %s » : contournement apparent" #: access/transam/slru.c:1240 access/transam/slru.c:1296 #, c-format msgid "removing file \"%s\"" -msgstr "suppression du fichier « %s »" +msgstr "suppression du fichier « %s »" #: access/transam/timeline.c:148 access/transam/timeline.c:153 #, c-format @@ -1325,7 +1090,7 @@ msgstr "erreur de syntaxe dans le fichier historique : %s" #: access/transam/timeline.c:149 #, c-format msgid "Expected a numeric timeline ID." -msgstr "Identifiant timeline numérique attendue" +msgstr "Identifiant timeline numérique attendue" #: access/transam/timeline.c:154 #, c-format @@ -1335,29 +1100,29 @@ msgstr "Attendait un emplacement de bascule dans le journal de transactions." #: access/transam/timeline.c:158 #, c-format msgid "invalid data in history file: %s" -msgstr "données invalides dans le fichier historique : « %s »" +msgstr "données invalides dans le fichier historique : « %s »" #: access/transam/timeline.c:159 #, c-format msgid "Timeline IDs must be in increasing sequence." -msgstr "Les identifiants timeline doivent être en ordre croissant." +msgstr "Les identifiants timeline doivent être en ordre croissant." #: access/transam/timeline.c:179 #, c-format msgid "invalid data in history file \"%s\"" -msgstr "données invalides dans le fichier historique « %s »" +msgstr "données invalides dans le fichier historique « %s »" #: access/transam/timeline.c:180 #, c-format msgid "Timeline IDs must be less than child timeline's ID." msgstr "" -"Les identifiants timeline doivent être plus petits que les enfants des\n" +"Les identifiants timeline doivent être plus petits que les enfants des\n" "identifiants timeline." -#: access/transam/timeline.c:412 access/transam/timeline.c:488 access/transam/xlog.c:3064 access/transam/xlog.c:3225 access/transam/xlogfuncs.c:690 commands/copy.c:1669 storage/file/copydir.c:201 +#: access/transam/timeline.c:412 access/transam/timeline.c:488 access/transam/xlog.c:3099 access/transam/xlog.c:3260 access/transam/xlogfuncs.c:685 commands/copy.c:1709 storage/file/copydir.c:201 #, c-format msgid "could not close file \"%s\": %m" -msgstr "n'a pas pu fermer le fichier « %s » : %m" +msgstr "n'a pas pu fermer le fichier « %s » : %m" #: access/transam/timeline.c:570 #, c-format @@ -1367,177 +1132,177 @@ msgstr "la timeline %u requise n'est pas dans l'historique de ce serveur" #: access/transam/twophase.c:363 #, c-format msgid "transaction identifier \"%s\" is too long" -msgstr "l'identifiant de la transaction « %s » est trop long" +msgstr "l'identifiant de la transaction « %s » est trop long" #: access/transam/twophase.c:370 #, c-format msgid "prepared transactions are disabled" -msgstr "les transactions préparées sont désactivées" +msgstr "les transactions préparées sont désactivées" #: access/transam/twophase.c:371 #, c-format msgid "Set max_prepared_transactions to a nonzero value." -msgstr "Configure max_prepared_transactions à une valeur différente de zéro." +msgstr "Configure max_prepared_transactions à une valeur différente de zéro." #: access/transam/twophase.c:390 #, c-format msgid "transaction identifier \"%s\" is already in use" -msgstr "l'identifiant de la transaction « %s » est déjà utilisé" +msgstr "l'identifiant de la transaction « %s » est déjà utilisé" #: access/transam/twophase.c:399 #, c-format msgid "maximum number of prepared transactions reached" -msgstr "nombre maximum de transactions préparées obtenu" +msgstr "nombre maximum de transactions préparées obtenu" #: access/transam/twophase.c:400 #, c-format msgid "Increase max_prepared_transactions (currently %d)." msgstr "Augmentez max_prepared_transactions (actuellement %d)." -#: access/transam/twophase.c:539 +#: access/transam/twophase.c:540 #, c-format msgid "prepared transaction with identifier \"%s\" is busy" -msgstr "la transaction préparée d'identifiant « %s » est occupée" +msgstr "la transaction préparée d'identifiant « %s » est occupée" -#: access/transam/twophase.c:545 +#: access/transam/twophase.c:546 #, c-format msgid "permission denied to finish prepared transaction" -msgstr "droit refusé pour terminer la transaction préparée" +msgstr "droit refusé pour terminer la transaction préparée" -#: access/transam/twophase.c:546 +#: access/transam/twophase.c:547 #, c-format msgid "Must be superuser or the user that prepared the transaction." -msgstr "Doit être super-utilisateur ou l'utilisateur qui a préparé la transaction." +msgstr "Doit être super-utilisateur ou l'utilisateur qui a préparé la transaction." -#: access/transam/twophase.c:557 +#: access/transam/twophase.c:558 #, c-format msgid "prepared transaction belongs to another database" -msgstr "la transaction préparée appartient à une autre base de données" +msgstr "la transaction préparée appartient à une autre base de données" -#: access/transam/twophase.c:558 +#: access/transam/twophase.c:559 #, c-format msgid "Connect to the database where the transaction was prepared to finish it." msgstr "" -"Connectez-vous à la base de données où la transaction a été préparée pour\n" +"Connectez-vous à la base de données où la transaction a été préparée pour\n" "la terminer." -#: access/transam/twophase.c:573 +#: access/transam/twophase.c:574 #, c-format msgid "prepared transaction with identifier \"%s\" does not exist" -msgstr "la transaction préparée d'identifiant « %s » n'existe pas" +msgstr "la transaction préparée d'identifiant « %s » n'existe pas" -#: access/transam/twophase.c:1042 +#: access/transam/twophase.c:1043 #, c-format msgid "two-phase state file maximum length exceeded" msgstr "" -"longueur maximale dépassée pour le fichier de statut de la validation en\n" +"longueur maximale dépassée pour le fichier de statut de la validation en\n" "deux phase" -#: access/transam/twophase.c:1160 +#: access/transam/twophase.c:1161 #, c-format msgid "could not open two-phase state file \"%s\": %m" msgstr "" -"n'a pas pu ouvrir le fichier d'état de la validation en deux phases nommé\n" -"« %s » : %m" +"n'a pas pu ouvrir le fichier d'état de la validation en deux phases nommé\n" +"« %s » : %m" -#: access/transam/twophase.c:1177 +#: access/transam/twophase.c:1178 #, c-format msgid "could not stat two-phase state file \"%s\": %m" msgstr "" -"n'a pas pu récupérer des informations sur le fichier d'état de la validation\n" -"en deux phases nommé « %s » : %m" +"n'a pas pu récupérer des informations sur le fichier d'état de la validation\n" +"en deux phases nommé « %s » : %m" -#: access/transam/twophase.c:1209 +#: access/transam/twophase.c:1210 #, c-format msgid "could not read two-phase state file \"%s\": %m" msgstr "" -"n'a pas pu lire le fichier d'état de la validation en deux phases nommé\n" -"« %s » : %m" +"n'a pas pu lire le fichier d'état de la validation en deux phases nommé\n" +"« %s » : %m" -#: access/transam/twophase.c:1262 access/transam/xlog.c:6080 +#: access/transam/twophase.c:1263 access/transam/xlog.c:6115 #, c-format msgid "Failed while allocating an XLog reading processor." -msgstr "Échec lors de l'allocation d'un processeur de lecture XLog" +msgstr "Échec lors de l'allocation d'un processeur de lecture XLog" -#: access/transam/twophase.c:1268 +#: access/transam/twophase.c:1269 #, c-format msgid "could not read two-phase state from xlog at %X/%X" -msgstr "n'a pas pu lire le fichier d'état de la validation en deux phases depuis les journaux de transaction à %X/%X" +msgstr "n'a pas pu lire le fichier d'état de la validation en deux phases depuis les journaux de transaction à %X/%X" -#: access/transam/twophase.c:1276 +#: access/transam/twophase.c:1277 #, c-format msgid "expected two-phase state data is not present in xlog at %X/%X" msgstr "" -"le fichier d'état de la validation en deux phases attendu n'est pas présent\n" -"dans les journaux de transaction à %X/%X" +"le fichier d'état de la validation en deux phases attendu n'est pas présent\n" +"dans les journaux de transaction à %X/%X" -#: access/transam/twophase.c:1511 +#: access/transam/twophase.c:1512 #, c-format msgid "could not remove two-phase state file \"%s\": %m" msgstr "" -"n'a pas pu supprimer le fichier d'état de la validation en deux phases\n" -"« %s » : %m" +"n'a pas pu supprimer le fichier d'état de la validation en deux phases\n" +"« %s » : %m" -#: access/transam/twophase.c:1541 +#: access/transam/twophase.c:1542 #, c-format msgid "could not recreate two-phase state file \"%s\": %m" msgstr "" -"n'a pas pu re-créer le fichier d'état de la validation en deux phases nommé\n" -"« %s » : %m" +"n'a pas pu re-créer le fichier d'état de la validation en deux phases nommé\n" +"« %s » : %m" -#: access/transam/twophase.c:1550 access/transam/twophase.c:1557 +#: access/transam/twophase.c:1551 access/transam/twophase.c:1558 #, c-format msgid "could not write two-phase state file: %m" -msgstr "n'a pas pu écrire dans le fichier d'état de la validation en deux phases : %m" +msgstr "n'a pas pu écrire dans le fichier d'état de la validation en deux phases : %m" -#: access/transam/twophase.c:1569 +#: access/transam/twophase.c:1570 #, c-format msgid "could not fsync two-phase state file: %m" msgstr "" -"n'a pas pu synchroniser sur disque (fsync) le fichier d'état de la\n" +"n'a pas pu synchroniser sur disque (fsync) le fichier d'état de la\n" "validation en deux phases : %m" -#: access/transam/twophase.c:1575 +#: access/transam/twophase.c:1576 #, c-format msgid "could not close two-phase state file: %m" -msgstr "n'a pas pu fermer le fichier d'état de la validation en deux phases : %m" +msgstr "n'a pas pu fermer le fichier d'état de la validation en deux phases : %m" -#: access/transam/twophase.c:1648 +#: access/transam/twophase.c:1649 #, c-format msgid "%u two-phase state file was written for long-running prepared transactions" msgid_plural "%u two-phase state files were written for long-running prepared transactions" -msgstr[0] "le fichier d'état de la validation en deux phases %u a été écrit pour des transaction préparée de longue duré" -msgstr[1] "les fichiers d'état de la validation en deux phases %u a été écrit pour des transaction préparée de longue duré" +msgstr[0] "le fichier d'état de la validation en deux phases %u a été écrit pour des transaction préparée de longue duré" +msgstr[1] "les fichiers d'état de la validation en deux phases %u a été écrit pour des transaction préparée de longue duré" -#: access/transam/twophase.c:1712 +#: access/transam/twophase.c:1713 #, c-format msgid "removing future two-phase state file \"%s\"" -msgstr "suppression du futur fichier d'état de la validation en deux phases nommé « %s »" +msgstr "suppression du futur fichier d'état de la validation en deux phases nommé « %s »" -#: access/transam/twophase.c:1728 access/transam/twophase.c:1739 access/transam/twophase.c:1859 access/transam/twophase.c:1870 access/transam/twophase.c:1947 +#: access/transam/twophase.c:1729 access/transam/twophase.c:1740 access/transam/twophase.c:1860 access/transam/twophase.c:1871 access/transam/twophase.c:1948 #, c-format msgid "removing corrupt two-phase state file \"%s\"" msgstr "" -"suppression du fichier d'état corrompu de la validation en deux phases nommé\n" -"« %s »" +"suppression du fichier d'état corrompu de la validation en deux phases nommé\n" +"« %s »" -#: access/transam/twophase.c:1848 access/transam/twophase.c:1936 +#: access/transam/twophase.c:1849 access/transam/twophase.c:1937 #, c-format msgid "removing stale two-phase state file \"%s\"" -msgstr "suppression du vieux fichier d'état de la validation en deux phases nommé « %s »" +msgstr "suppression du vieux fichier d'état de la validation en deux phases nommé « %s »" -#: access/transam/twophase.c:1954 +#: access/transam/twophase.c:1955 #, c-format msgid "recovering prepared transaction %u" -msgstr "récupération de la transaction préparée %u" +msgstr "récupération de la transaction préparée %u" #: access/transam/varsup.c:124 #, c-format msgid "database is not accepting commands to avoid wraparound data loss in database \"%s\"" msgstr "" -"la base de données n'accepte plus de requêtes pour éviter des pertes de\n" -"données à cause de la réinitialisation de l'identifiant de transaction dans\n" -"la base de données « %s »" +"la base de données n'accepte plus de requêtes pour éviter des pertes de\n" +"données à cause de la réinitialisation de l'identifiant de transaction dans\n" +"la base de données « %s »" #: access/transam/varsup.c:126 access/transam/varsup.c:133 #, c-format @@ -1545,38 +1310,38 @@ msgid "" "Stop the postmaster and vacuum that database in single-user mode.\n" "You might also need to commit or roll back old prepared transactions." msgstr "" -"Arrêtez le postmaster et utilisez un moteur autonome pour exécuter VACUUM\n" -"sur cette base de données.\n" -"Vous pouvez avoir besoin de valider ou d'annuler les anciennes transactions préparées." +"Arrêtez le postmaster et utilisez un moteur autonome pour exécuter VACUUM\n" +"sur cette base de données.\n" +"Vous pouvez avoir besoin de valider ou d'annuler les anciennes transactions préparées." #: access/transam/varsup.c:131 #, c-format msgid "database is not accepting commands to avoid wraparound data loss in database with OID %u" msgstr "" -"la base de données n'accepte plus de requêtes pour éviter des pertes de\n" -"données à cause de la réinitialisation de l'identifiant de transaction dans\n" -"la base de données %u" +"la base de données n'accepte plus de requêtes pour éviter des pertes de\n" +"données à cause de la réinitialisation de l'identifiant de transaction dans\n" +"la base de données %u" #: access/transam/varsup.c:143 access/transam/varsup.c:381 #, c-format msgid "database \"%s\" must be vacuumed within %u transactions" msgstr "" -"Un VACUUM doit être exécuté sur la base de données « %s » dans un maximum de\n" +"Un VACUUM doit être exécuté sur la base de données « %s » dans un maximum de\n" "%u transactions" #: access/transam/varsup.c:150 access/transam/varsup.c:388 #, c-format msgid "database with OID %u must be vacuumed within %u transactions" msgstr "" -"un VACUUM doit être exécuté sur la base de données d'OID %u dans un maximum de\n" +"un VACUUM doit être exécuté sur la base de données d'OID %u dans un maximum de\n" "%u transactions" #: access/transam/varsup.c:346 #, c-format msgid "transaction ID wrap limit is %u, limited by database with OID %u" msgstr "" -"la limite de réinitialisation de l'identifiant de transaction est %u,\n" -"limité par la base de données d'OID %u" +"la limite de réinitialisation de l'identifiant de transaction est %u,\n" +"limité par la base de données d'OID %u" #: access/transam/xact.c:943 #, c-format @@ -1586,50 +1351,50 @@ msgstr "ne peux pas avoir plus de 2^32-2 commandes dans une transaction" #: access/transam/xact.c:1467 #, c-format msgid "maximum number of committed subtransactions (%d) exceeded" -msgstr "nombre maximum de sous-transactions validées (%d) dépassé" +msgstr "nombre maximum de sous-transactions validées (%d) dépassé" #: access/transam/xact.c:2263 #, c-format msgid "cannot PREPARE a transaction that has operated on temporary tables" msgstr "" -"ne peut pas préparer (PREPARE) une transaction qui a travaillé sur des\n" +"ne peut pas préparer (PREPARE) une transaction qui a travaillé sur des\n" "tables temporaires" #: access/transam/xact.c:2273 #, c-format msgid "cannot PREPARE a transaction that has exported snapshots" -msgstr "ne peut pas préparer (PREPARE) une transaction qui a exporté des snapshots" +msgstr "ne peut pas préparer (PREPARE) une transaction qui a exporté des snapshots" #. translator: %s represents an SQL statement name #: access/transam/xact.c:3155 #, c-format msgid "%s cannot run inside a transaction block" -msgstr "%s ne peut pas être exécuté dans un bloc de transaction" +msgstr "%s ne peut pas être exécuté dans un bloc de transaction" #. translator: %s represents an SQL statement name #: access/transam/xact.c:3165 #, c-format msgid "%s cannot run inside a subtransaction" -msgstr "%s ne peut pas être exécuté dans un sous-bloc de transaction" +msgstr "%s ne peut pas être exécuté dans un sous-bloc de transaction" #. translator: %s represents an SQL statement name #: access/transam/xact.c:3175 #, c-format msgid "%s cannot be executed from a function or multi-command string" msgstr "" -"%s ne peut pas être exécuté à partir d'une fonction ou d'une chaîne\n" +"%s ne peut pas être exécuté à partir d'une fonction ou d'une chaîne\n" "contenant plusieurs commandes" #. translator: %s represents an SQL statement name #: access/transam/xact.c:3246 #, c-format msgid "%s can only be used in transaction blocks" -msgstr "%s peut seulement être utilisé dans des blocs de transaction" +msgstr "%s peut seulement être utilisé dans des blocs de transaction" #: access/transam/xact.c:3430 #, c-format msgid "there is already a transaction in progress" -msgstr "une transaction est déjà en cours" +msgstr "une transaction est déjà en cours" #: access/transam/xact.c:3598 access/transam/xact.c:3701 #, c-format @@ -1639,22 +1404,22 @@ msgstr "aucune transaction en cours" #: access/transam/xact.c:3609 #, c-format msgid "cannot commit during a parallel operation" -msgstr "ne peut pas valider pendant une opération parallèle" +msgstr "ne peut pas valider pendant une opération parallèle" #: access/transam/xact.c:3712 #, c-format msgid "cannot abort during a parallel operation" -msgstr "ne peut pas annuler pendant une opération en parallèle" +msgstr "ne peut pas annuler pendant une opération en parallèle" #: access/transam/xact.c:3754 #, c-format msgid "cannot define savepoints during a parallel operation" -msgstr "ne peut pas définir de points de sauvegarde lors d'une opération parallèle" +msgstr "ne peut pas définir de points de sauvegarde lors d'une opération parallèle" #: access/transam/xact.c:3821 #, c-format msgid "cannot release savepoints during a parallel operation" -msgstr "ne peut pas relâcher de points de sauvegarde pendant une opération parallèle" +msgstr "ne peut pas relâcher de points de sauvegarde pendant une opération parallèle" #: access/transam/xact.c:3832 access/transam/xact.c:3884 access/transam/xact.c:3890 access/transam/xact.c:3946 access/transam/xact.c:3996 access/transam/xact.c:4002 #, c-format @@ -1664,1129 +1429,1129 @@ msgstr "aucun point de sauvegarde" #: access/transam/xact.c:3934 #, c-format msgid "cannot rollback to savepoints during a parallel operation" -msgstr "ne peut pas retourner à un point de sauvegarde pendant un opération parallèle" +msgstr "ne peut pas retourner à un point de sauvegarde pendant un opération parallèle" #: access/transam/xact.c:4062 #, c-format msgid "cannot start subtransactions during a parallel operation" -msgstr "ne peut pas lancer de sous-transactions pendant une opération parallèle" +msgstr "ne peut pas lancer de sous-transactions pendant une opération parallèle" #: access/transam/xact.c:4129 #, c-format msgid "cannot commit subtransactions during a parallel operation" -msgstr "ne peut pas valider de sous-transactions pendant une opération parallèle" +msgstr "ne peut pas valider de sous-transactions pendant une opération parallèle" #: access/transam/xact.c:4737 #, c-format msgid "cannot have more than 2^32-1 subtransactions in a transaction" msgstr "ne peut pas avoir plus de 2^32-1 sous-transactions dans une transaction" -#: access/transam/xlog.c:2270 +#: access/transam/xlog.c:2305 #, c-format msgid "could not seek in log file %s to offset %u: %m" -msgstr "n'a pas pu se déplacer dans le fichier de transactions « %s » au décalage %u : %m" +msgstr "n'a pas pu se déplacer dans le fichier de transactions « %s » au décalage %u : %m" -#: access/transam/xlog.c:2290 +#: access/transam/xlog.c:2325 #, c-format msgid "could not write to log file %s at offset %u, length %zu: %m" -msgstr "n'a pas pu écrire le fichier de transactions %s au décalage %u, longueur %zu : %m" +msgstr "n'a pas pu écrire le fichier de transactions %s au décalage %u, longueur %zu : %m" -#: access/transam/xlog.c:2553 +#: access/transam/xlog.c:2588 #, c-format msgid "updated min recovery point to %X/%X on timeline %u" -msgstr "mise à jour du point minimum de restauration sur %X/%X pour la timeline %u" +msgstr "mise à jour du point minimum de restauration sur %X/%X pour la timeline %u" -#: access/transam/xlog.c:3195 +#: access/transam/xlog.c:3230 #, c-format msgid "not enough data in file \"%s\"" -msgstr "données insuffisantes dans le fichier « %s »" +msgstr "données insuffisantes dans le fichier « %s »" -#: access/transam/xlog.c:3336 +#: access/transam/xlog.c:3371 #, c-format msgid "could not open transaction log file \"%s\": %m" -msgstr "n'a pas pu ouvrir le journal des transactions « %s » : %m" +msgstr "n'a pas pu ouvrir le journal des transactions « %s » : %m" -#: access/transam/xlog.c:3525 access/transam/xlog.c:5310 +#: access/transam/xlog.c:3560 access/transam/xlog.c:5345 #, c-format msgid "could not close log file %s: %m" -msgstr "n'a pas pu fermer le fichier de transactions « %s » : %m" +msgstr "n'a pas pu fermer le fichier de transactions « %s » : %m" -#: access/transam/xlog.c:3582 access/transam/xlogutils.c:696 replication/walsender.c:2097 +#: access/transam/xlog.c:3617 access/transam/xlogutils.c:696 replication/walsender.c:2139 #, c-format msgid "requested WAL segment %s has already been removed" -msgstr "le segment demandé du journal de transaction, %s, a déjà été supprimé" +msgstr "le segment demandé du journal de transaction, %s, a déjà été supprimé" -#: access/transam/xlog.c:3642 access/transam/xlog.c:3717 access/transam/xlog.c:3915 +#: access/transam/xlog.c:3677 access/transam/xlog.c:3752 access/transam/xlog.c:3950 #, c-format msgid "could not open transaction log directory \"%s\": %m" -msgstr "n'a pas pu ouvrir le répertoire des journaux de transactions « %s » : %m" +msgstr "n'a pas pu ouvrir le répertoire des journaux de transactions « %s » : %m" -#: access/transam/xlog.c:3798 +#: access/transam/xlog.c:3833 #, c-format msgid "recycled transaction log file \"%s\"" -msgstr "recyclage du journal de transactions « %s »" +msgstr "recyclage du journal de transactions « %s »" -#: access/transam/xlog.c:3810 +#: access/transam/xlog.c:3845 #, c-format msgid "removing transaction log file \"%s\"" -msgstr "suppression du journal de transactions « %s »" +msgstr "suppression du journal de transactions « %s »" -#: access/transam/xlog.c:3830 +#: access/transam/xlog.c:3865 #, c-format msgid "could not rename old transaction log file \"%s\": %m" -msgstr "n'a pas pu renommer l'ancien journal de transactions « %s » : %m" +msgstr "n'a pas pu renommer l'ancien journal de transactions « %s » : %m" -#: access/transam/xlog.c:3842 +#: access/transam/xlog.c:3877 #, c-format msgid "could not remove old transaction log file \"%s\": %m" -msgstr "n'a pas pu supprimer l'ancien journal de transaction « %s » : %m" +msgstr "n'a pas pu supprimer l'ancien journal de transaction « %s » : %m" -#: access/transam/xlog.c:3875 access/transam/xlog.c:3885 +#: access/transam/xlog.c:3910 access/transam/xlog.c:3920 #, c-format msgid "required WAL directory \"%s\" does not exist" -msgstr "le répertoire « %s » requis pour les journaux de transactions n'existe pas" +msgstr "le répertoire « %s » requis pour les journaux de transactions n'existe pas" -#: access/transam/xlog.c:3891 +#: access/transam/xlog.c:3926 #, c-format msgid "creating missing WAL directory \"%s\"" -msgstr "création du répertoire manquant « %s » pour les journaux de transactions" +msgstr "création du répertoire manquant « %s » pour les journaux de transactions" -#: access/transam/xlog.c:3894 +#: access/transam/xlog.c:3929 #, c-format msgid "could not create missing directory \"%s\": %m" -msgstr "n'a pas pu créer le répertoire « %s » manquant : %m" +msgstr "n'a pas pu créer le répertoire « %s » manquant : %m" -#: access/transam/xlog.c:3925 +#: access/transam/xlog.c:3960 #, c-format msgid "removing transaction log backup history file \"%s\"" -msgstr "suppression du fichier historique des journaux de transaction « %s »" +msgstr "suppression du fichier historique des journaux de transaction « %s »" -#: access/transam/xlog.c:4006 +#: access/transam/xlog.c:4041 #, c-format msgid "unexpected timeline ID %u in log segment %s, offset %u" -msgstr "identifiant timeline %u inattendu dans le journal de transactions %s, décalage %u" +msgstr "identifiant timeline %u inattendu dans le journal de transactions %s, décalage %u" -#: access/transam/xlog.c:4128 +#: access/transam/xlog.c:4163 #, c-format msgid "new timeline %u is not a child of database system timeline %u" msgstr "" -"le nouveau timeline %u n'est pas un fils du timeline %u du système de bases\n" -"de données" +"le nouveau timeline %u n'est pas un fils du timeline %u du système de bases\n" +"de données" -#: access/transam/xlog.c:4142 +#: access/transam/xlog.c:4177 #, c-format msgid "new timeline %u forked off current database system timeline %u before current recovery point %X/%X" msgstr "" -"la nouvelle timeline %u a été créée à partir de la timeline de la base de données système %u\n" +"la nouvelle timeline %u a été créée à partir de la timeline de la base de données système %u\n" "avant le point de restauration courant %X/%X" -#: access/transam/xlog.c:4161 +#: access/transam/xlog.c:4196 #, c-format msgid "new target timeline is %u" msgstr "la nouvelle timeline cible est %u" -#: access/transam/xlog.c:4241 +#: access/transam/xlog.c:4276 #, c-format msgid "could not create control file \"%s\": %m" -msgstr "n'a pas pu créer le fichier de contrôle « %s » : %m" +msgstr "n'a pas pu créer le fichier de contrôle « %s » : %m" -#: access/transam/xlog.c:4252 access/transam/xlog.c:4488 +#: access/transam/xlog.c:4287 access/transam/xlog.c:4523 #, c-format msgid "could not write to control file: %m" -msgstr "n'a pas pu écrire le fichier de contrôle : %m" +msgstr "n'a pas pu écrire le fichier de contrôle : %m" -#: access/transam/xlog.c:4258 access/transam/xlog.c:4494 +#: access/transam/xlog.c:4293 access/transam/xlog.c:4529 #, c-format msgid "could not fsync control file: %m" -msgstr "n'a pas pu synchroniser sur disque (fsync) le fichier de contrôle : %m" +msgstr "n'a pas pu synchroniser sur disque (fsync) le fichier de contrôle : %m" -#: access/transam/xlog.c:4263 access/transam/xlog.c:4499 +#: access/transam/xlog.c:4298 access/transam/xlog.c:4534 #, c-format msgid "could not close control file: %m" -msgstr "n'a pas pu fermer le fichier de contrôle : %m" +msgstr "n'a pas pu fermer le fichier de contrôle : %m" -#: access/transam/xlog.c:4281 access/transam/xlog.c:4477 +#: access/transam/xlog.c:4316 access/transam/xlog.c:4512 #, c-format msgid "could not open control file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier de contrôle « %s » : %m" +msgstr "n'a pas pu ouvrir le fichier de contrôle « %s » : %m" -#: access/transam/xlog.c:4287 +#: access/transam/xlog.c:4322 #, c-format msgid "could not read from control file: %m" -msgstr "n'a pas pu lire le fichier de contrôle : %m" +msgstr "n'a pas pu lire le fichier de contrôle : %m" -#: access/transam/xlog.c:4300 access/transam/xlog.c:4309 access/transam/xlog.c:4333 access/transam/xlog.c:4340 access/transam/xlog.c:4347 access/transam/xlog.c:4352 access/transam/xlog.c:4359 access/transam/xlog.c:4366 access/transam/xlog.c:4373 access/transam/xlog.c:4380 access/transam/xlog.c:4387 access/transam/xlog.c:4394 access/transam/xlog.c:4401 access/transam/xlog.c:4410 access/transam/xlog.c:4417 access/transam/xlog.c:4426 -#: access/transam/xlog.c:4433 access/transam/xlog.c:4442 access/transam/xlog.c:4449 utils/init/miscinit.c:1380 +#: access/transam/xlog.c:4335 access/transam/xlog.c:4344 access/transam/xlog.c:4368 access/transam/xlog.c:4375 access/transam/xlog.c:4382 access/transam/xlog.c:4387 access/transam/xlog.c:4394 access/transam/xlog.c:4401 access/transam/xlog.c:4408 access/transam/xlog.c:4415 access/transam/xlog.c:4422 access/transam/xlog.c:4429 access/transam/xlog.c:4436 access/transam/xlog.c:4445 access/transam/xlog.c:4452 access/transam/xlog.c:4461 +#: access/transam/xlog.c:4468 access/transam/xlog.c:4477 access/transam/xlog.c:4484 utils/init/miscinit.c:1380 #, c-format msgid "database files are incompatible with server" -msgstr "les fichiers de la base de données sont incompatibles avec le serveur" +msgstr "les fichiers de la base de données sont incompatibles avec le serveur" -#: access/transam/xlog.c:4301 +#: access/transam/xlog.c:4336 #, c-format msgid "The database cluster was initialized with PG_CONTROL_VERSION %d (0x%08x), but the server was compiled with PG_CONTROL_VERSION %d (0x%08x)." msgstr "" -"Le cluster de base de données a été initialisé avec un PG_CONTROL_VERSION à\n" -"%d (0x%08x) alors que le serveur a été compilé avec un PG_CONTROL_VERSION à\n" +"Le cluster de base de données a été initialisé avec un PG_CONTROL_VERSION à\n" +"%d (0x%08x) alors que le serveur a été compilé avec un PG_CONTROL_VERSION à\n" "%d (0x%08x)." -#: access/transam/xlog.c:4305 +#: access/transam/xlog.c:4340 #, c-format msgid "This could be a problem of mismatched byte ordering. It looks like you need to initdb." msgstr "" -"Ceci peut être un problème d'incohérence dans l'ordre des octets.\n" +"Ceci peut être un problème d'incohérence dans l'ordre des octets.\n" "Il se peut que vous ayez besoin d'initdb." -#: access/transam/xlog.c:4310 +#: access/transam/xlog.c:4345 #, c-format msgid "The database cluster was initialized with PG_CONTROL_VERSION %d, but the server was compiled with PG_CONTROL_VERSION %d." msgstr "" -"Le cluster de base de données a été initialisé avec un PG_CONTROL_VERSION à\n" -"%d alors que le serveur a été compilé avec un PG_CONTROL_VERSION à %d." +"Le cluster de base de données a été initialisé avec un PG_CONTROL_VERSION à\n" +"%d alors que le serveur a été compilé avec un PG_CONTROL_VERSION à %d." -#: access/transam/xlog.c:4313 access/transam/xlog.c:4337 access/transam/xlog.c:4344 access/transam/xlog.c:4349 +#: access/transam/xlog.c:4348 access/transam/xlog.c:4372 access/transam/xlog.c:4379 access/transam/xlog.c:4384 #, c-format msgid "It looks like you need to initdb." msgstr "Il semble que vous avez besoin d'initdb." -#: access/transam/xlog.c:4324 +#: access/transam/xlog.c:4359 #, c-format msgid "incorrect checksum in control file" -msgstr "somme de contrôle incorrecte dans le fichier de contrôle" +msgstr "somme de contrôle incorrecte dans le fichier de contrôle" -#: access/transam/xlog.c:4334 +#: access/transam/xlog.c:4369 #, c-format msgid "The database cluster was initialized with CATALOG_VERSION_NO %d, but the server was compiled with CATALOG_VERSION_NO %d." msgstr "" -"Le cluster de base de données a été initialisé avec un CATALOG_VERSION_NO à\n" -"%d alors que le serveur a été compilé avec un CATALOG_VERSION_NO à %d." +"Le cluster de base de données a été initialisé avec un CATALOG_VERSION_NO à\n" +"%d alors que le serveur a été compilé avec un CATALOG_VERSION_NO à %d." -#: access/transam/xlog.c:4341 +#: access/transam/xlog.c:4376 #, c-format msgid "The database cluster was initialized with MAXALIGN %d, but the server was compiled with MAXALIGN %d." msgstr "" -"Le cluster de bases de données a été initialisé avec un MAXALIGN à %d alors\n" -"que le serveur a été compilé avec un MAXALIGN à %d." +"Le cluster de bases de données a été initialisé avec un MAXALIGN à %d alors\n" +"que le serveur a été compilé avec un MAXALIGN à %d." -#: access/transam/xlog.c:4348 +#: access/transam/xlog.c:4383 #, c-format msgid "The database cluster appears to use a different floating-point number format than the server executable." msgstr "" -"Le cluster de bases de données semble utiliser un format différent pour les\n" -"nombres à virgule flottante de celui de l'exécutable serveur." +"Le cluster de bases de données semble utiliser un format différent pour les\n" +"nombres à virgule flottante de celui de l'exécutable serveur." -#: access/transam/xlog.c:4353 +#: access/transam/xlog.c:4388 #, c-format msgid "The database cluster was initialized with BLCKSZ %d, but the server was compiled with BLCKSZ %d." msgstr "" -"Le cluster de base de données a été initialisé avec un BLCKSZ à %d alors que\n" -"le serveur a été compilé avec un BLCKSZ à %d." +"Le cluster de base de données a été initialisé avec un BLCKSZ à %d alors que\n" +"le serveur a été compilé avec un BLCKSZ à %d." -#: access/transam/xlog.c:4356 access/transam/xlog.c:4363 access/transam/xlog.c:4370 access/transam/xlog.c:4377 access/transam/xlog.c:4384 access/transam/xlog.c:4391 access/transam/xlog.c:4398 access/transam/xlog.c:4405 access/transam/xlog.c:4413 access/transam/xlog.c:4420 access/transam/xlog.c:4429 access/transam/xlog.c:4436 access/transam/xlog.c:4445 access/transam/xlog.c:4452 +#: access/transam/xlog.c:4391 access/transam/xlog.c:4398 access/transam/xlog.c:4405 access/transam/xlog.c:4412 access/transam/xlog.c:4419 access/transam/xlog.c:4426 access/transam/xlog.c:4433 access/transam/xlog.c:4440 access/transam/xlog.c:4448 access/transam/xlog.c:4455 access/transam/xlog.c:4464 access/transam/xlog.c:4471 access/transam/xlog.c:4480 access/transam/xlog.c:4487 #, c-format msgid "It looks like you need to recompile or initdb." msgstr "Il semble que vous avez besoin de recompiler ou de relancer initdb." -#: access/transam/xlog.c:4360 +#: access/transam/xlog.c:4395 #, c-format msgid "The database cluster was initialized with RELSEG_SIZE %d, but the server was compiled with RELSEG_SIZE %d." msgstr "" -"Le cluster de bases de données a été initialisé avec un RELSEG_SIZE à %d\n" -"alors que le serveur a été compilé avec un RELSEG_SIZE à %d." +"Le cluster de bases de données a été initialisé avec un RELSEG_SIZE à %d\n" +"alors que le serveur a été compilé avec un RELSEG_SIZE à %d." -#: access/transam/xlog.c:4367 +#: access/transam/xlog.c:4402 #, c-format msgid "The database cluster was initialized with XLOG_BLCKSZ %d, but the server was compiled with XLOG_BLCKSZ %d." msgstr "" -"Le cluster de base de données a été initialisé avec un XLOG_BLCKSZ à %d\n" -"alors que le serveur a été compilé avec un XLOG_BLCKSZ à %d." +"Le cluster de base de données a été initialisé avec un XLOG_BLCKSZ à %d\n" +"alors que le serveur a été compilé avec un XLOG_BLCKSZ à %d." -#: access/transam/xlog.c:4374 +#: access/transam/xlog.c:4409 #, c-format msgid "The database cluster was initialized with XLOG_SEG_SIZE %d, but the server was compiled with XLOG_SEG_SIZE %d." msgstr "" -"Le cluster de bases de données a été initialisé avec un XLOG_SEG_SIZE à %d\n" -"alors que le serveur a été compilé avec un XLOG_SEG_SIZE à %d." +"Le cluster de bases de données a été initialisé avec un XLOG_SEG_SIZE à %d\n" +"alors que le serveur a été compilé avec un XLOG_SEG_SIZE à %d." -#: access/transam/xlog.c:4381 +#: access/transam/xlog.c:4416 #, c-format msgid "The database cluster was initialized with NAMEDATALEN %d, but the server was compiled with NAMEDATALEN %d." msgstr "" -"Le cluster de bases de données a été initialisé avec un NAMEDATALEN à %d\n" -"alors que le serveur a été compilé avec un NAMEDATALEN à %d." +"Le cluster de bases de données a été initialisé avec un NAMEDATALEN à %d\n" +"alors que le serveur a été compilé avec un NAMEDATALEN à %d." -#: access/transam/xlog.c:4388 +#: access/transam/xlog.c:4423 #, c-format msgid "The database cluster was initialized with INDEX_MAX_KEYS %d, but the server was compiled with INDEX_MAX_KEYS %d." msgstr "" -"Le groupe de bases de données a été initialisé avec un INDEX_MAX_KEYS à %d\n" -"alors que le serveur a été compilé avec un INDEX_MAX_KEYS à %d." +"Le groupe de bases de données a été initialisé avec un INDEX_MAX_KEYS à %d\n" +"alors que le serveur a été compilé avec un INDEX_MAX_KEYS à %d." -#: access/transam/xlog.c:4395 +#: access/transam/xlog.c:4430 #, c-format msgid "The database cluster was initialized with TOAST_MAX_CHUNK_SIZE %d, but the server was compiled with TOAST_MAX_CHUNK_SIZE %d." msgstr "" -"Le cluster de bases de données a été initialisé avec un TOAST_MAX_CHUNK_SIZE\n" -"à %d alors que le serveur a été compilé avec un TOAST_MAX_CHUNK_SIZE à %d." +"Le cluster de bases de données a été initialisé avec un TOAST_MAX_CHUNK_SIZE\n" +"à %d alors que le serveur a été compilé avec un TOAST_MAX_CHUNK_SIZE à %d." -#: access/transam/xlog.c:4402 +#: access/transam/xlog.c:4437 #, c-format msgid "The database cluster was initialized with LOBLKSIZE %d, but the server was compiled with LOBLKSIZE %d." msgstr "" -"Le cluster de base de données a été initialisé avec un LOBLKSIZE à %d alors que\n" -"le serveur a été compilé avec un LOBLKSIZE à %d." +"Le cluster de base de données a été initialisé avec un LOBLKSIZE à %d alors que\n" +"le serveur a été compilé avec un LOBLKSIZE à %d." -#: access/transam/xlog.c:4411 +#: access/transam/xlog.c:4446 #, c-format msgid "The database cluster was initialized without HAVE_INT64_TIMESTAMP but the server was compiled with HAVE_INT64_TIMESTAMP." -msgstr "Le cluster de bases de données a été initialisé sans HAVE_INT64_TIMESTAMPalors que le serveur a été compilé avec." +msgstr "Le cluster de bases de données a été initialisé sans HAVE_INT64_TIMESTAMPalors que le serveur a été compilé avec." -#: access/transam/xlog.c:4418 +#: access/transam/xlog.c:4453 #, c-format msgid "The database cluster was initialized with HAVE_INT64_TIMESTAMP but the server was compiled without HAVE_INT64_TIMESTAMP." msgstr "" -"Le cluster de bases de données a été initialisé avec HAVE_INT64_TIMESTAMP\n" -"alors que le serveur a été compilé sans." +"Le cluster de bases de données a été initialisé avec HAVE_INT64_TIMESTAMP\n" +"alors que le serveur a été compilé sans." -#: access/transam/xlog.c:4427 +#: access/transam/xlog.c:4462 #, c-format msgid "The database cluster was initialized without USE_FLOAT4_BYVAL but the server was compiled with USE_FLOAT4_BYVAL." msgstr "" -"Le cluster de base de données a été initialisé sans USE_FLOAT4_BYVAL\n" -"alors que le serveur a été compilé avec USE_FLOAT4_BYVAL." +"Le cluster de base de données a été initialisé sans USE_FLOAT4_BYVAL\n" +"alors que le serveur a été compilé avec USE_FLOAT4_BYVAL." -#: access/transam/xlog.c:4434 +#: access/transam/xlog.c:4469 #, c-format msgid "The database cluster was initialized with USE_FLOAT4_BYVAL but the server was compiled without USE_FLOAT4_BYVAL." msgstr "" -"Le cluster de base de données a été initialisé avec USE_FLOAT4_BYVAL\n" -"alors que le serveur a été compilé sans USE_FLOAT4_BYVAL." +"Le cluster de base de données a été initialisé avec USE_FLOAT4_BYVAL\n" +"alors que le serveur a été compilé sans USE_FLOAT4_BYVAL." -#: access/transam/xlog.c:4443 +#: access/transam/xlog.c:4478 #, c-format msgid "The database cluster was initialized without USE_FLOAT8_BYVAL but the server was compiled with USE_FLOAT8_BYVAL." msgstr "" -"Le cluster de base de données a été initialisé sans USE_FLOAT8_BYVAL\n" -"alors que le serveur a été compilé avec USE_FLOAT8_BYVAL." +"Le cluster de base de données a été initialisé sans USE_FLOAT8_BYVAL\n" +"alors que le serveur a été compilé avec USE_FLOAT8_BYVAL." -#: access/transam/xlog.c:4450 +#: access/transam/xlog.c:4485 #, c-format msgid "The database cluster was initialized with USE_FLOAT8_BYVAL but the server was compiled without USE_FLOAT8_BYVAL." msgstr "" -"Le cluster de base de données a été initialisé avec USE_FLOAT8_BYVAL\n" -"alors que le serveur a été compilé sans USE_FLOAT8_BYVAL." +"Le cluster de base de données a été initialisé avec USE_FLOAT8_BYVAL\n" +"alors que le serveur a été compilé sans USE_FLOAT8_BYVAL." -#: access/transam/xlog.c:4871 +#: access/transam/xlog.c:4906 #, c-format msgid "could not write bootstrap transaction log file: %m" -msgstr "n'a pas pu écrire le « bootstrap » du journal des transactions : %m" +msgstr "n'a pas pu écrire le « bootstrap » du journal des transactions : %m" -#: access/transam/xlog.c:4877 +#: access/transam/xlog.c:4912 #, c-format msgid "could not fsync bootstrap transaction log file: %m" msgstr "" -"n'a pas pu synchroniser sur disque (fsync) le « bootstrap » du journal des\n" +"n'a pas pu synchroniser sur disque (fsync) le « bootstrap » du journal des\n" "transactions : %m" -#: access/transam/xlog.c:4882 +#: access/transam/xlog.c:4917 #, c-format msgid "could not close bootstrap transaction log file: %m" -msgstr "n'a pas pu fermer le « bootstrap » du journal des transactions : %m" +msgstr "n'a pas pu fermer le « bootstrap » du journal des transactions : %m" -#: access/transam/xlog.c:4957 +#: access/transam/xlog.c:4992 #, c-format msgid "could not open recovery command file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier de restauration « %s » : %m" +msgstr "n'a pas pu ouvrir le fichier de restauration « %s » : %m" -#: access/transam/xlog.c:5003 access/transam/xlog.c:5088 +#: access/transam/xlog.c:5038 access/transam/xlog.c:5123 #, c-format msgid "invalid value for recovery parameter \"%s\": \"%s\"" -msgstr "valeur invalide pour le paramètre de restauration « %s » : « %s »" +msgstr "valeur invalide pour le paramètre de restauration « %s » : « %s »" -#: access/transam/xlog.c:5006 +#: access/transam/xlog.c:5041 #, c-format msgid "Valid values are \"pause\", \"promote\", and \"shutdown\"." -msgstr "Les valeurs valides sont « pause », « promote » et « shutdown »." +msgstr "Les valeurs valides sont « pause », « promote » et « shutdown »." -#: access/transam/xlog.c:5026 +#: access/transam/xlog.c:5061 #, c-format msgid "recovery_target_timeline is not a valid number: \"%s\"" -msgstr "recovery_target_timeline n'est pas un nombre valide : « %s »" +msgstr "recovery_target_timeline n'est pas un nombre valide : « %s »" -#: access/transam/xlog.c:5043 +#: access/transam/xlog.c:5078 #, c-format msgid "recovery_target_xid is not a valid number: \"%s\"" -msgstr "recovery_target_xid n'est pas un nombre valide : « %s »" +msgstr "recovery_target_xid n'est pas un nombre valide : « %s »" -#: access/transam/xlog.c:5074 +#: access/transam/xlog.c:5109 #, c-format msgid "recovery_target_name is too long (maximum %d characters)" -msgstr "recovery_target_name est trop long (%d caractères maximum)" +msgstr "recovery_target_name est trop long (%d caractères maximum)" -#: access/transam/xlog.c:5091 +#: access/transam/xlog.c:5126 #, c-format msgid "The only allowed value is \"immediate\"." -msgstr "La seule valeur autorisée est « immediate »." +msgstr "La seule valeur autorisée est « immediate »." -#: access/transam/xlog.c:5104 access/transam/xlog.c:5115 commands/extension.c:533 commands/extension.c:541 utils/misc/guc.c:5642 +#: access/transam/xlog.c:5139 access/transam/xlog.c:5150 commands/extension.c:534 commands/extension.c:542 utils/misc/guc.c:5640 #, c-format msgid "parameter \"%s\" requires a Boolean value" -msgstr "le paramètre « %s » requiert une valeur booléenne" +msgstr "le paramètre « %s » requiert une valeur booléenne" -#: access/transam/xlog.c:5150 +#: access/transam/xlog.c:5185 #, c-format msgid "parameter \"%s\" requires a temporal value" -msgstr "le paramètre « %s » requiert une valeur temporelle" +msgstr "le paramètre « %s » requiert une valeur temporelle" -#: access/transam/xlog.c:5152 catalog/dependency.c:991 catalog/dependency.c:992 catalog/dependency.c:998 catalog/dependency.c:999 catalog/dependency.c:1010 catalog/dependency.c:1011 catalog/objectaddress.c:1100 commands/tablecmds.c:795 commands/tablecmds.c:9445 commands/user.c:1045 commands/view.c:470 libpq/auth.c:304 replication/syncrep.c:919 storage/lmgr/deadlock.c:1139 storage/lmgr/proc.c:1276 utils/adt/acl.c:5281 utils/misc/guc.c:5664 -#: utils/misc/guc.c:5757 utils/misc/guc.c:9692 utils/misc/guc.c:9726 utils/misc/guc.c:9760 utils/misc/guc.c:9794 utils/misc/guc.c:9829 +#: access/transam/xlog.c:5187 catalog/dependency.c:990 catalog/dependency.c:991 catalog/dependency.c:997 catalog/dependency.c:998 catalog/dependency.c:1009 catalog/dependency.c:1010 catalog/objectaddress.c:1100 commands/tablecmds.c:796 commands/tablecmds.c:9543 commands/user.c:1045 commands/view.c:499 libpq/auth.c:307 replication/syncrep.c:929 storage/lmgr/deadlock.c:1139 storage/lmgr/proc.c:1278 utils/adt/acl.c:5281 utils/misc/guc.c:5662 +#: utils/misc/guc.c:5755 utils/misc/guc.c:9708 utils/misc/guc.c:9742 utils/misc/guc.c:9776 utils/misc/guc.c:9810 utils/misc/guc.c:9845 #, c-format msgid "%s" msgstr "%s" -#: access/transam/xlog.c:5159 +#: access/transam/xlog.c:5194 #, c-format msgid "unrecognized recovery parameter \"%s\"" -msgstr "paramètre de restauration « %s » non reconnu" +msgstr "paramètre de restauration « %s » non reconnu" -#: access/transam/xlog.c:5170 +#: access/transam/xlog.c:5205 #, c-format msgid "recovery command file \"%s\" specified neither primary_conninfo nor restore_command" -msgstr "le fichier de restauration « %s » n'a spécifié ni primary_conninfo ni restore_command" +msgstr "le fichier de restauration « %s » n'a spécifié ni primary_conninfo ni restore_command" -#: access/transam/xlog.c:5172 +#: access/transam/xlog.c:5207 #, c-format msgid "The database server will regularly poll the pg_xlog subdirectory to check for files placed there." msgstr "" -"Le serveur de la base de données va régulièrement interroger le sous-répertoire\n" -"pg_xlog pour vérifier les fichiers placés ici." +"Le serveur de la base de données va régulièrement interroger le sous-répertoire\n" +"pg_xlog pour vérifier les fichiers placés ici." -#: access/transam/xlog.c:5179 +#: access/transam/xlog.c:5214 #, c-format msgid "recovery command file \"%s\" must specify restore_command when standby mode is not enabled" msgstr "" -"le fichier de restauration « %s » doit spécifier restore_command quand le mode\n" -"de restauration n'est pas activé" +"le fichier de restauration « %s » doit spécifier restore_command quand le mode\n" +"de restauration n'est pas activé" -#: access/transam/xlog.c:5200 +#: access/transam/xlog.c:5235 #, c-format msgid "standby mode is not supported by single-user servers" -msgstr "le mode de restauration n'est pas supporté pour les serveurs mono-utilisateur" +msgstr "le mode de restauration n'est pas supporté pour les serveurs mono-utilisateur" -#: access/transam/xlog.c:5219 +#: access/transam/xlog.c:5254 #, c-format msgid "recovery target timeline %u does not exist" msgstr "le timeline cible, %u, de la restauration n'existe pas" -#: access/transam/xlog.c:5340 +#: access/transam/xlog.c:5375 #, c-format msgid "archive recovery complete" -msgstr "restauration terminée de l'archive" +msgstr "restauration terminée de l'archive" -#: access/transam/xlog.c:5399 access/transam/xlog.c:5627 +#: access/transam/xlog.c:5434 access/transam/xlog.c:5662 #, c-format msgid "recovery stopping after reaching consistency" -msgstr "arrêt de la restauration après avoir atteint le point de cohérence" +msgstr "arrêt de la restauration après avoir atteint le point de cohérence" -#: access/transam/xlog.c:5487 +#: access/transam/xlog.c:5522 #, c-format msgid "recovery stopping before commit of transaction %u, time %s" -msgstr "arrêt de la restauration avant validation de la transaction %u, %s" +msgstr "arrêt de la restauration avant validation de la transaction %u, %s" -#: access/transam/xlog.c:5494 +#: access/transam/xlog.c:5529 #, c-format msgid "recovery stopping before abort of transaction %u, time %s" -msgstr "arrêt de la restauration avant annulation de la transaction %u, %s" +msgstr "arrêt de la restauration avant annulation de la transaction %u, %s" -#: access/transam/xlog.c:5539 +#: access/transam/xlog.c:5574 #, c-format msgid "recovery stopping at restore point \"%s\", time %s" -msgstr "restauration en arrêt au point de restauration « %s », heure %s" +msgstr "restauration en arrêt au point de restauration « %s », heure %s" -#: access/transam/xlog.c:5607 +#: access/transam/xlog.c:5642 #, c-format msgid "recovery stopping after commit of transaction %u, time %s" -msgstr "arrêt de la restauration après validation de la transaction %u, %s" +msgstr "arrêt de la restauration après validation de la transaction %u, %s" -#: access/transam/xlog.c:5615 +#: access/transam/xlog.c:5650 #, c-format msgid "recovery stopping after abort of transaction %u, time %s" -msgstr "arrêt de la restauration après annulation de la transaction %u, %s" +msgstr "arrêt de la restauration après annulation de la transaction %u, %s" -#: access/transam/xlog.c:5654 +#: access/transam/xlog.c:5689 #, c-format msgid "recovery has paused" msgstr "restauration en pause" -#: access/transam/xlog.c:5655 +#: access/transam/xlog.c:5690 #, c-format msgid "Execute pg_xlog_replay_resume() to continue." -msgstr "Exécuter pg_xlog_replay_resume() pour continuer." +msgstr "Exécuter pg_xlog_replay_resume() pour continuer." -#: access/transam/xlog.c:5862 +#: access/transam/xlog.c:5897 #, c-format msgid "hot standby is not possible because %s = %d is a lower setting than on the master server (its value was %d)" msgstr "" "les connexions en restauration ne sont pas possibles car %s = %d est un\n" -"paramètrage plus bas que celui du serveur maître des journaux de transactions\n" -"(la valeur était %d)" +"paramètrage plus bas que celui du serveur maître des journaux de transactions\n" +"(la valeur était %d)" -#: access/transam/xlog.c:5888 +#: access/transam/xlog.c:5923 #, c-format msgid "WAL was generated with wal_level=minimal, data may be missing" msgstr "" -"le journal de transactions a été généré avec le paramètre wal_level configuré\n" -"à « minimal », des données pourraient manquer" +"le journal de transactions a été généré avec le paramètre wal_level configuré\n" +"à « minimal », des données pourraient manquer" -#: access/transam/xlog.c:5889 +#: access/transam/xlog.c:5924 #, c-format msgid "This happens if you temporarily set wal_level=minimal without taking a new base backup." msgstr "" -"Ceci peut arriver si vous configurez temporairement wal_level à minimal sans avoir\n" +"Ceci peut arriver si vous configurez temporairement wal_level à minimal sans avoir\n" "pris une nouvelle sauvegarde de base." -#: access/transam/xlog.c:5900 +#: access/transam/xlog.c:5935 #, c-format msgid "hot standby is not possible because wal_level was not set to \"replica\" or higher on the master server" msgstr "" -"les connexions en lecture seules ne sont pas possibles parce que le paramètre wal_level\n" -"n'a pas été positionné à « replica » ou plus sur le serveur maître" +"les connexions en lecture seules ne sont pas possibles parce que le paramètre wal_level\n" +"n'a pas été positionné à « replica » ou plus sur le serveur maître" -#: access/transam/xlog.c:5901 +#: access/transam/xlog.c:5936 #, c-format msgid "Either set wal_level to \"replica\" on the master, or turn off hot_standby here." msgstr "" -"Vous devez soit positionner le paramètre wal_level à « replica » sur le maître,\n" -"soit désactiver le hot_standby ici." +"Vous devez soit positionner le paramètre wal_level à « replica » sur le maître,\n" +"soit désactiver le hot_standby ici." -#: access/transam/xlog.c:5958 +#: access/transam/xlog.c:5993 #, c-format msgid "control file contains invalid data" -msgstr "le fichier de contrôle contient des données invalides" +msgstr "le fichier de contrôle contient des données invalides" -#: access/transam/xlog.c:5964 +#: access/transam/xlog.c:5999 #, c-format msgid "database system was shut down at %s" -msgstr "le système de bases de données a été arrêté à %s" +msgstr "le système de bases de données a été arrêté à %s" -#: access/transam/xlog.c:5969 +#: access/transam/xlog.c:6004 #, c-format msgid "database system was shut down in recovery at %s" -msgstr "le système de bases de données a été arrêté pendant la restauration à %s" +msgstr "le système de bases de données a été arrêté pendant la restauration à %s" -#: access/transam/xlog.c:5973 +#: access/transam/xlog.c:6008 #, c-format msgid "database system shutdown was interrupted; last known up at %s" -msgstr "le système de bases de données a été interrompu ; dernier lancement connu à %s" +msgstr "le système de bases de données a été interrompu ; dernier lancement connu à %s" -#: access/transam/xlog.c:5977 +#: access/transam/xlog.c:6012 #, c-format msgid "database system was interrupted while in recovery at %s" -msgstr "le système de bases de données a été interrompu lors d'une restauration à %s" +msgstr "le système de bases de données a été interrompu lors d'une restauration à %s" -#: access/transam/xlog.c:5979 +#: access/transam/xlog.c:6014 #, c-format msgid "This probably means that some data is corrupted and you will have to use the last backup for recovery." msgstr "" -"Ceci signifie probablement que des données ont été corrompues et que vous\n" -"devrez utiliser la dernière sauvegarde pour la restauration." +"Ceci signifie probablement que des données ont été corrompues et que vous\n" +"devrez utiliser la dernière sauvegarde pour la restauration." -#: access/transam/xlog.c:5983 +#: access/transam/xlog.c:6018 #, c-format msgid "database system was interrupted while in recovery at log time %s" msgstr "" -"le système de bases de données a été interrompu lors d'une récupération à %s\n" +"le système de bases de données a été interrompu lors d'une récupération à %s\n" "(moment de la journalisation)" -#: access/transam/xlog.c:5985 +#: access/transam/xlog.c:6020 #, c-format msgid "If this has occurred more than once some data might be corrupted and you might need to choose an earlier recovery target." msgstr "" -"Si c'est arrivé plus d'une fois, des données ont pu être corrompues et vous\n" -"pourriez avoir besoin de choisir une cible de récupération antérieure." +"Si c'est arrivé plus d'une fois, des données ont pu être corrompues et vous\n" +"pourriez avoir besoin de choisir une cible de récupération antérieure." -#: access/transam/xlog.c:5989 +#: access/transam/xlog.c:6024 #, c-format msgid "database system was interrupted; last known up at %s" -msgstr "le système de bases de données a été interrompu ; dernier lancement connu à %s" +msgstr "le système de bases de données a été interrompu ; dernier lancement connu à %s" -#: access/transam/xlog.c:6045 +#: access/transam/xlog.c:6080 #, c-format msgid "entering standby mode" msgstr "entre en mode standby" -#: access/transam/xlog.c:6048 +#: access/transam/xlog.c:6083 #, c-format msgid "starting point-in-time recovery to XID %u" -msgstr "début de la restauration de l'archive au XID %u" +msgstr "début de la restauration de l'archive au XID %u" -#: access/transam/xlog.c:6052 +#: access/transam/xlog.c:6087 #, c-format msgid "starting point-in-time recovery to %s" -msgstr "début de la restauration de l'archive à %s" +msgstr "début de la restauration de l'archive à %s" -#: access/transam/xlog.c:6056 +#: access/transam/xlog.c:6091 #, c-format msgid "starting point-in-time recovery to \"%s\"" -msgstr "début de la restauration PITR à « %s »" +msgstr "début de la restauration PITR à « %s »" -#: access/transam/xlog.c:6060 +#: access/transam/xlog.c:6095 #, c-format msgid "starting point-in-time recovery to earliest consistent point" -msgstr "début de la restauration de l'archive jusqu'au point de cohérence le plus proche" +msgstr "début de la restauration de l'archive jusqu'au point de cohérence le plus proche" -#: access/transam/xlog.c:6063 +#: access/transam/xlog.c:6098 #, c-format msgid "starting archive recovery" -msgstr "début de la restauration de l'archive" +msgstr "début de la restauration de l'archive" -#: access/transam/xlog.c:6107 access/transam/xlog.c:6235 +#: access/transam/xlog.c:6142 access/transam/xlog.c:6270 #, c-format msgid "checkpoint record is at %X/%X" -msgstr "l'enregistrement du point de vérification est à %X/%X" +msgstr "l'enregistrement du point de vérification est à %X/%X" -#: access/transam/xlog.c:6121 +#: access/transam/xlog.c:6156 #, c-format msgid "could not find redo location referenced by checkpoint record" -msgstr "n'a pas pu localiser l'enregistrement redo référencé par le point de vérification" +msgstr "n'a pas pu localiser l'enregistrement redo référencé par le point de vérification" -#: access/transam/xlog.c:6122 access/transam/xlog.c:6129 +#: access/transam/xlog.c:6157 access/transam/xlog.c:6164 #, c-format msgid "If you are not restoring from a backup, try removing the file \"%s/backup_label\"." msgstr "" "Si vous n'avez pas pu restaurer une sauvegarde, essayez de supprimer le\n" -"fichier « %s/backup_label »." +"fichier « %s/backup_label »." -#: access/transam/xlog.c:6128 +#: access/transam/xlog.c:6163 #, c-format msgid "could not locate required checkpoint record" -msgstr "n'a pas pu localiser l'enregistrement d'un point de vérification requis" +msgstr "n'a pas pu localiser l'enregistrement d'un point de vérification requis" -#: access/transam/xlog.c:6154 commands/tablespace.c:641 +#: access/transam/xlog.c:6189 commands/tablespace.c:641 #, c-format msgid "could not create symbolic link \"%s\": %m" -msgstr "n'a pas pu créer le lien symbolique « %s » : %m" +msgstr "n'a pas pu créer le lien symbolique « %s » : %m" -#: access/transam/xlog.c:6186 access/transam/xlog.c:6192 +#: access/transam/xlog.c:6221 access/transam/xlog.c:6227 #, c-format msgid "ignoring file \"%s\" because no file \"%s\" exists" -msgstr "ignore le fichier « %s » car le fichier « %s » n'existe pas" +msgstr "ignore le fichier « %s » car le fichier « %s » n'existe pas" -#: access/transam/xlog.c:6188 access/transam/xlog.c:10928 +#: access/transam/xlog.c:6223 access/transam/xlog.c:11065 #, c-format msgid "File \"%s\" was renamed to \"%s\"." -msgstr "Le fichier « %s » a été renommé en « %s »." +msgstr "Le fichier « %s » a été renommé en « %s »." -#: access/transam/xlog.c:6194 +#: access/transam/xlog.c:6229 #, c-format msgid "Could not rename file \"%s\" to \"%s\": %m." -msgstr "N'a pas pu renommer le fichier « %s » en « %s » : %m" +msgstr "N'a pas pu renommer le fichier « %s » en « %s » : %m" -#: access/transam/xlog.c:6245 access/transam/xlog.c:6260 +#: access/transam/xlog.c:6280 access/transam/xlog.c:6295 #, c-format msgid "could not locate a valid checkpoint record" -msgstr "n'a pas pu localiser un enregistrement d'un point de vérification valide" +msgstr "n'a pas pu localiser un enregistrement d'un point de vérification valide" -#: access/transam/xlog.c:6254 +#: access/transam/xlog.c:6289 #, c-format msgid "using previous checkpoint record at %X/%X" -msgstr "utilisation du précédent enregistrement d'un point de vérification à %X/%X" +msgstr "utilisation du précédent enregistrement d'un point de vérification à %X/%X" -#: access/transam/xlog.c:6298 +#: access/transam/xlog.c:6333 #, c-format msgid "requested timeline %u is not a child of this server's history" msgstr "la timeline requise %u n'est pas un fils de l'historique de ce serveur" -#: access/transam/xlog.c:6300 +#: access/transam/xlog.c:6335 #, c-format msgid "Latest checkpoint is at %X/%X on timeline %u, but in the history of the requested timeline, the server forked off from that timeline at %X/%X." -msgstr "Le dernier checkpoint est à %X/%X sur la timeline %u, mais dans l'historique de la timeline demandée, le serveur est sorti de cette timeline à %X/%X." +msgstr "Le dernier checkpoint est à %X/%X sur la timeline %u, mais dans l'historique de la timeline demandée, le serveur est sorti de cette timeline à %X/%X." -#: access/transam/xlog.c:6316 +#: access/transam/xlog.c:6351 #, c-format msgid "requested timeline %u does not contain minimum recovery point %X/%X on timeline %u" msgstr "la timeline requise, %u, ne contient pas le point de restauration minimum (%X/%X) sur la timeline %u" -#: access/transam/xlog.c:6347 +#: access/transam/xlog.c:6382 #, c-format msgid "invalid next transaction ID" msgstr "prochain ID de transaction invalide" -#: access/transam/xlog.c:6430 +#: access/transam/xlog.c:6465 #, c-format msgid "invalid redo in checkpoint record" -msgstr "ré-exécution invalide dans l'enregistrement du point de vérification" +msgstr "ré-exécution invalide dans l'enregistrement du point de vérification" -#: access/transam/xlog.c:6441 +#: access/transam/xlog.c:6476 #, c-format msgid "invalid redo record in shutdown checkpoint" -msgstr "enregistrement de ré-exécution invalide dans le point de vérification d'arrêt" +msgstr "enregistrement de ré-exécution invalide dans le point de vérification d'arrêt" -#: access/transam/xlog.c:6469 +#: access/transam/xlog.c:6504 #, c-format msgid "database system was not properly shut down; automatic recovery in progress" msgstr "" -"le système de bases de données n'a pas été arrêté proprement ; restauration\n" +"le système de bases de données n'a pas été arrêté proprement ; restauration\n" "automatique en cours" -#: access/transam/xlog.c:6473 +#: access/transam/xlog.c:6508 #, c-format msgid "crash recovery starts in timeline %u and has target timeline %u" -msgstr "la restauration après crash commence avec la timeline %u et a la timeline %u en cible" +msgstr "la restauration après crash commence avec la timeline %u et a la timeline %u en cible" -#: access/transam/xlog.c:6517 +#: access/transam/xlog.c:6552 #, c-format msgid "backup_label contains data inconsistent with control file" -msgstr "backup_label contient des données incohérentes avec le fichier de contrôle" +msgstr "backup_label contient des données incohérentes avec le fichier de contrôle" -#: access/transam/xlog.c:6518 +#: access/transam/xlog.c:6553 #, c-format msgid "This means that the backup is corrupted and you will have to use another backup for recovery." msgstr "" -"Ceci signifie que la sauvegarde a été corrompue et que vous devrez utiliser\n" -"la dernière sauvegarde pour la restauration." +"Ceci signifie que la sauvegarde a été corrompue et que vous devrez utiliser\n" +"la dernière sauvegarde pour la restauration." -#: access/transam/xlog.c:6592 +#: access/transam/xlog.c:6627 #, c-format msgid "initializing for hot standby" -msgstr "initialisation pour « Hot Standby »" +msgstr "initialisation pour « Hot Standby »" -#: access/transam/xlog.c:6724 +#: access/transam/xlog.c:6759 #, c-format msgid "redo starts at %X/%X" -msgstr "la ré-exécution commence à %X/%X" +msgstr "la ré-exécution commence à %X/%X" -#: access/transam/xlog.c:6949 +#: access/transam/xlog.c:6984 #, c-format msgid "requested recovery stop point is before consistent recovery point" msgstr "" -"le point d'arrêt de la restauration demandée se trouve avant le point\n" -"cohérent de restauration" +"le point d'arrêt de la restauration demandée se trouve avant le point\n" +"cohérent de restauration" -#: access/transam/xlog.c:6987 +#: access/transam/xlog.c:7022 #, c-format msgid "redo done at %X/%X" -msgstr "ré-exécution faite à %X/%X" +msgstr "ré-exécution faite à %X/%X" -#: access/transam/xlog.c:6992 access/transam/xlog.c:8916 +#: access/transam/xlog.c:7027 access/transam/xlog.c:8986 #, c-format msgid "last completed transaction was at log time %s" -msgstr "la dernière transaction a eu lieu à %s (moment de la journalisation)" +msgstr "la dernière transaction a eu lieu à %s (moment de la journalisation)" -#: access/transam/xlog.c:7001 +#: access/transam/xlog.c:7036 #, c-format msgid "redo is not required" -msgstr "la ré-exécution n'est pas nécessaire" +msgstr "la ré-exécution n'est pas nécessaire" -#: access/transam/xlog.c:7076 access/transam/xlog.c:7080 +#: access/transam/xlog.c:7111 access/transam/xlog.c:7115 #, c-format msgid "WAL ends before end of online backup" msgstr "le journal de transactions se termine avant la fin de la sauvegarde de base" -#: access/transam/xlog.c:7077 +#: access/transam/xlog.c:7112 #, c-format msgid "All WAL generated while online backup was taken must be available at recovery." msgstr "" -"Tous les journaux de transactions générés pendant la sauvegarde en ligne\n" -"doivent être disponibles pour la restauration." +"Tous les journaux de transactions générés pendant la sauvegarde en ligne\n" +"doivent être disponibles pour la restauration." -#: access/transam/xlog.c:7081 +#: access/transam/xlog.c:7116 #, c-format msgid "Online backup started with pg_start_backup() must be ended with pg_stop_backup(), and all WAL up to that point must be available at recovery." msgstr "" -"Une sauvegarde en ligne commencée avec pg_start_backup() doit se terminer avec\n" -"pg_stop_backup() et tous les journaux de transactions générés entre les deux\n" -"doivent être disponibles pour la restauration." +"Une sauvegarde en ligne commencée avec pg_start_backup() doit se terminer avec\n" +"pg_stop_backup() et tous les journaux de transactions générés entre les deux\n" +"doivent être disponibles pour la restauration." -#: access/transam/xlog.c:7084 +#: access/transam/xlog.c:7119 #, c-format msgid "WAL ends before consistent recovery point" -msgstr "Le journal de transaction se termine avant un point de restauration cohérent" +msgstr "Le journal de transaction se termine avant un point de restauration cohérent" -#: access/transam/xlog.c:7111 +#: access/transam/xlog.c:7146 #, c-format msgid "selected new timeline ID: %u" -msgstr "identifiant d'un timeline nouvellement sélectionné : %u" +msgstr "identifiant d'un timeline nouvellement sélectionné : %u" -#: access/transam/xlog.c:7522 +#: access/transam/xlog.c:7557 #, c-format msgid "consistent recovery state reached at %X/%X" -msgstr "état de restauration cohérent atteint à %X/%X" +msgstr "état de restauration cohérent atteint à %X/%X" -#: access/transam/xlog.c:7713 +#: access/transam/xlog.c:7748 #, c-format msgid "invalid primary checkpoint link in control file" -msgstr "lien du point de vérification primaire invalide dans le fichier de contrôle" +msgstr "lien du point de vérification primaire invalide dans le fichier de contrôle" -#: access/transam/xlog.c:7717 +#: access/transam/xlog.c:7752 #, c-format msgid "invalid secondary checkpoint link in control file" -msgstr "lien du point de vérification secondaire invalide dans le fichier de contrôle" +msgstr "lien du point de vérification secondaire invalide dans le fichier de contrôle" -#: access/transam/xlog.c:7721 +#: access/transam/xlog.c:7756 #, c-format msgid "invalid checkpoint link in backup_label file" -msgstr "lien du point de vérification invalide dans le fichier backup_label" +msgstr "lien du point de vérification invalide dans le fichier backup_label" -#: access/transam/xlog.c:7738 +#: access/transam/xlog.c:7773 #, c-format msgid "invalid primary checkpoint record" -msgstr "enregistrement du point de vérification primaire invalide" +msgstr "enregistrement du point de vérification primaire invalide" -#: access/transam/xlog.c:7742 +#: access/transam/xlog.c:7777 #, c-format msgid "invalid secondary checkpoint record" -msgstr "enregistrement du point de vérification secondaire invalide" +msgstr "enregistrement du point de vérification secondaire invalide" -#: access/transam/xlog.c:7746 +#: access/transam/xlog.c:7781 #, c-format msgid "invalid checkpoint record" -msgstr "enregistrement du point de vérification invalide" +msgstr "enregistrement du point de vérification invalide" -#: access/transam/xlog.c:7757 +#: access/transam/xlog.c:7792 #, c-format msgid "invalid resource manager ID in primary checkpoint record" -msgstr "identifiant du gestionnaire de ressource invalide dans l'enregistrement primaire du point de vérification" +msgstr "identifiant du gestionnaire de ressource invalide dans l'enregistrement primaire du point de vérification" -#: access/transam/xlog.c:7761 +#: access/transam/xlog.c:7796 #, c-format msgid "invalid resource manager ID in secondary checkpoint record" -msgstr "identifiant du gestionnaire de ressource invalide dans l'enregistrement secondaire du point de vérification" +msgstr "identifiant du gestionnaire de ressource invalide dans l'enregistrement secondaire du point de vérification" -#: access/transam/xlog.c:7765 +#: access/transam/xlog.c:7800 #, c-format msgid "invalid resource manager ID in checkpoint record" -msgstr "identifiant du gestionnaire de ressource invalide dans l'enregistrement du point de vérification" +msgstr "identifiant du gestionnaire de ressource invalide dans l'enregistrement du point de vérification" -#: access/transam/xlog.c:7777 +#: access/transam/xlog.c:7812 #, c-format msgid "invalid xl_info in primary checkpoint record" -msgstr "xl_info invalide dans l'enregistrement du point de vérification primaire" +msgstr "xl_info invalide dans l'enregistrement du point de vérification primaire" -#: access/transam/xlog.c:7781 +#: access/transam/xlog.c:7816 #, c-format msgid "invalid xl_info in secondary checkpoint record" -msgstr "xl_info invalide dans l'enregistrement du point de vérification secondaire" +msgstr "xl_info invalide dans l'enregistrement du point de vérification secondaire" -#: access/transam/xlog.c:7785 +#: access/transam/xlog.c:7820 #, c-format msgid "invalid xl_info in checkpoint record" -msgstr "xl_info invalide dans l'enregistrement du point de vérification" +msgstr "xl_info invalide dans l'enregistrement du point de vérification" -#: access/transam/xlog.c:7796 +#: access/transam/xlog.c:7831 #, c-format msgid "invalid length of primary checkpoint record" -msgstr "longueur invalide de l'enregistrement primaire du point de vérification" +msgstr "longueur invalide de l'enregistrement primaire du point de vérification" -#: access/transam/xlog.c:7800 +#: access/transam/xlog.c:7835 #, c-format msgid "invalid length of secondary checkpoint record" -msgstr "longueur invalide de l'enregistrement secondaire du point de vérification" +msgstr "longueur invalide de l'enregistrement secondaire du point de vérification" -#: access/transam/xlog.c:7804 +#: access/transam/xlog.c:7839 #, c-format msgid "invalid length of checkpoint record" -msgstr "longueur invalide de l'enregistrement du point de vérification" +msgstr "longueur invalide de l'enregistrement du point de vérification" -#: access/transam/xlog.c:7972 +#: access/transam/xlog.c:8007 #, c-format msgid "shutting down" -msgstr "arrêt en cours" +msgstr "arrêt en cours" -#: access/transam/xlog.c:8485 +#: access/transam/xlog.c:8531 #, c-format msgid "concurrent transaction log activity while database system is shutting down" msgstr "" -"activité en cours du journal de transactions alors que le système de bases\n" -"de données est en cours d'arrêt" +"activité en cours du journal de transactions alors que le système de bases\n" +"de données est en cours d'arrêt" -#: access/transam/xlog.c:8736 +#: access/transam/xlog.c:8785 #, c-format msgid "skipping restartpoint, recovery has already ended" -msgstr "restartpoint ignoré, la récupération est déjà terminée" +msgstr "restartpoint ignoré, la récupération est déjà terminée" -#: access/transam/xlog.c:8759 +#: access/transam/xlog.c:8808 #, c-format msgid "skipping restartpoint, already performed at %X/%X" -msgstr "ignore le point de redémarrage, déjà réalisé à %X/%X" +msgstr "ignore le point de redémarrage, déjà réalisé à %X/%X" -#: access/transam/xlog.c:8914 +#: access/transam/xlog.c:8984 #, c-format msgid "recovery restart point at %X/%X" -msgstr "la ré-exécution en restauration commence à %X/%X" +msgstr "la ré-exécution en restauration commence à %X/%X" -#: access/transam/xlog.c:9047 +#: access/transam/xlog.c:9117 #, c-format msgid "restore point \"%s\" created at %X/%X" -msgstr "point de restauration « %s » créé à %X/%X" +msgstr "point de restauration « %s » créé à %X/%X" -#: access/transam/xlog.c:9177 +#: access/transam/xlog.c:9247 #, c-format msgid "unexpected previous timeline ID %u (current timeline ID %u) in checkpoint record" -msgstr "identifiant de timeline précédent %u inattendu (identifiant de la timeline courante %u) dans l'enregistrement du point de vérification" +msgstr "identifiant de timeline précédent %u inattendu (identifiant de la timeline courante %u) dans l'enregistrement du point de vérification" -#: access/transam/xlog.c:9186 +#: access/transam/xlog.c:9256 #, c-format msgid "unexpected timeline ID %u (after %u) in checkpoint record" msgstr "" -"identifiant timeline %u inattendu (après %u) dans l'enregistrement du point\n" -"de vérification" +"identifiant timeline %u inattendu (après %u) dans l'enregistrement du point\n" +"de vérification" -#: access/transam/xlog.c:9202 +#: access/transam/xlog.c:9272 #, c-format msgid "unexpected timeline ID %u in checkpoint record, before reaching minimum recovery point %X/%X on timeline %u" msgstr "identifiant timeline %u inattendu dans l'enregistrement du checkpoint, avant d'atteindre le point de restauration minimum %X/%X sur la timeline %u" -#: access/transam/xlog.c:9273 +#: access/transam/xlog.c:9343 #, c-format msgid "online backup was canceled, recovery cannot continue" -msgstr "la sauvegarde en ligne a été annulée, la restauration ne peut pas continuer" +msgstr "la sauvegarde en ligne a été annulée, la restauration ne peut pas continuer" -#: access/transam/xlog.c:9329 access/transam/xlog.c:9376 access/transam/xlog.c:9399 +#: access/transam/xlog.c:9399 access/transam/xlog.c:9446 access/transam/xlog.c:9469 #, c-format msgid "unexpected timeline ID %u (should be %u) in checkpoint record" msgstr "" -"identifiant timeline %u inattendu (devrait être %u) dans l'enregistrement du\n" -"point de vérification" +"identifiant timeline %u inattendu (devrait être %u) dans l'enregistrement du\n" +"point de vérification" -#: access/transam/xlog.c:9674 +#: access/transam/xlog.c:9744 #, c-format msgid "could not fsync log segment %s: %m" msgstr "n'a pas pu synchroniser sur disque (fsync) le segment du journal des transactions %s : %m" -#: access/transam/xlog.c:9698 +#: access/transam/xlog.c:9768 #, c-format msgid "could not fsync log file %s: %m" -msgstr "n'a pas pu synchroniser sur disque (fsync) le fichier de transactions « %s » : %m" +msgstr "n'a pas pu synchroniser sur disque (fsync) le fichier de transactions « %s » : %m" -#: access/transam/xlog.c:9706 +#: access/transam/xlog.c:9776 #, c-format msgid "could not fsync write-through log file %s: %m" msgstr "n'a pas pu synchroniser sur disque (fsync) le journal des transactions %s : %m" -#: access/transam/xlog.c:9715 +#: access/transam/xlog.c:9785 #, c-format msgid "could not fdatasync log file %s: %m" msgstr "n'a pas pu synchroniser sur disque (fdatasync) le journal de transactions %s : %m" -#: access/transam/xlog.c:9806 access/transam/xlog.c:10277 access/transam/xlogfuncs.c:294 access/transam/xlogfuncs.c:321 access/transam/xlogfuncs.c:360 access/transam/xlogfuncs.c:381 access/transam/xlogfuncs.c:402 +#: access/transam/xlog.c:9876 access/transam/xlog.c:10393 access/transam/xlogfuncs.c:289 access/transam/xlogfuncs.c:316 access/transam/xlogfuncs.c:355 access/transam/xlogfuncs.c:376 access/transam/xlogfuncs.c:397 #, c-format msgid "WAL control functions cannot be executed during recovery." msgstr "" -"les fonctions de contrôle des journaux de transactions ne peuvent pas\n" -"être exécutées lors de la restauration." +"les fonctions de contrôle des journaux de transactions ne peuvent pas\n" +"être exécutées lors de la restauration." -#: access/transam/xlog.c:9815 access/transam/xlog.c:10286 +#: access/transam/xlog.c:9885 access/transam/xlog.c:10402 #, c-format msgid "WAL level not sufficient for making an online backup" msgstr "" -"Le niveau de journalisation (configuré par wal_level) n'est pas suffisant pour\n" +"Le niveau de journalisation (configuré par wal_level) n'est pas suffisant pour\n" "faire une sauvegarde en ligne." -#: access/transam/xlog.c:9816 access/transam/xlog.c:10287 access/transam/xlogfuncs.c:327 +#: access/transam/xlog.c:9886 access/transam/xlog.c:10403 access/transam/xlogfuncs.c:322 #, c-format msgid "wal_level must be set to \"replica\" or \"logical\" at server start." msgstr "" -"wal_level doit être configuré à « replica » ou « logical »\n" -"au démarrage du serveur." +"wal_level doit être configuré à « replica » ou « logical »\n" +"au démarrage du serveur." -#: access/transam/xlog.c:9821 +#: access/transam/xlog.c:9891 #, c-format msgid "backup label too long (max %d bytes)" msgstr "label de sauvegarde trop long (%d octets maximum)" -#: access/transam/xlog.c:9853 access/transam/xlog.c:10125 access/transam/xlog.c:10163 +#: access/transam/xlog.c:9928 access/transam/xlog.c:10200 access/transam/xlog.c:10238 #, c-format msgid "a backup is already in progress" -msgstr "une sauvegarde est déjà en cours" +msgstr "une sauvegarde est déjà en cours" -#: access/transam/xlog.c:9854 +#: access/transam/xlog.c:9929 #, c-format msgid "Run pg_stop_backup() and try again." -msgstr "Exécutez pg_stop_backup() et tentez de nouveau." +msgstr "Exécutez pg_stop_backup() et tentez de nouveau." -#: access/transam/xlog.c:9949 +#: access/transam/xlog.c:10024 #, c-format msgid "WAL generated with full_page_writes=off was replayed since last restartpoint" -msgstr "Les journaux générés avec full_page_writes=off ont été rejoués depuis le dernier restartpoint." +msgstr "Les journaux générés avec full_page_writes=off ont été rejoués depuis le dernier restartpoint." -#: access/transam/xlog.c:9951 access/transam/xlog.c:10450 +#: access/transam/xlog.c:10026 access/transam/xlog.c:10587 #, c-format msgid "This means that the backup being taken on the standby is corrupt and should not be used. Enable full_page_writes and run CHECKPOINT on the master, and then try an online backup again." msgstr "" -"Cela signifie que la sauvegarde en cours de réalisation sur l'esclave est\n" -"corrompue et ne doit pas être utilisée. Activez full_page_writes et lancez\n" -"CHECKPOINT sur le maître, puis recommencez la sauvegarde." +"Cela signifie que la sauvegarde en cours de réalisation sur l'esclave est\n" +"corrompue et ne doit pas être utilisée. Activez full_page_writes et lancez\n" +"CHECKPOINT sur le maître, puis recommencez la sauvegarde." -#: access/transam/xlog.c:10018 replication/basebackup.c:1038 utils/adt/misc.c:498 +#: access/transam/xlog.c:10093 replication/basebackup.c:1026 utils/adt/misc.c:498 #, c-format msgid "could not read symbolic link \"%s\": %m" -msgstr "n'a pas pu lire le lien symbolique « %s » : %m" +msgstr "n'a pas pu lire le lien symbolique « %s » : %m" -#: access/transam/xlog.c:10025 replication/basebackup.c:1043 utils/adt/misc.c:503 +#: access/transam/xlog.c:10100 replication/basebackup.c:1031 utils/adt/misc.c:503 #, c-format msgid "symbolic link \"%s\" target is too long" -msgstr "la cible du lien symbolique « %s » est trop long" +msgstr "la cible du lien symbolique « %s » est trop long" -#: access/transam/xlog.c:10078 commands/tablespace.c:391 commands/tablespace.c:553 replication/basebackup.c:1059 utils/adt/misc.c:511 +#: access/transam/xlog.c:10153 commands/tablespace.c:391 commands/tablespace.c:553 replication/basebackup.c:1047 utils/adt/misc.c:511 #, c-format msgid "tablespaces are not supported on this platform" -msgstr "les tablespaces ne sont pas supportés sur cette plateforme" +msgstr "les tablespaces ne sont pas supportés sur cette plateforme" -#: access/transam/xlog.c:10119 access/transam/xlog.c:10157 access/transam/xlog.c:10336 access/transam/xlogarchive.c:106 access/transam/xlogarchive.c:265 commands/copy.c:1776 commands/copy.c:2800 commands/extension.c:3109 commands/tablespace.c:782 commands/tablespace.c:873 guc-file.l:1001 replication/basebackup.c:407 replication/basebackup.c:475 replication/logical/snapbuild.c:1491 storage/file/copydir.c:72 storage/file/copydir.c:115 -#: storage/file/fd.c:2826 storage/file/fd.c:2918 utils/adt/dbsize.c:70 utils/adt/dbsize.c:220 utils/adt/dbsize.c:300 utils/adt/genfile.c:114 utils/adt/genfile.c:333 +#: access/transam/xlog.c:10194 access/transam/xlog.c:10232 access/transam/xlog.c:10441 access/transam/xlogarchive.c:106 access/transam/xlogarchive.c:265 commands/copy.c:1816 commands/copy.c:2840 commands/extension.c:3133 commands/tablespace.c:782 commands/tablespace.c:873 guc-file.l:1001 replication/basebackup.c:409 replication/basebackup.c:477 replication/logical/snapbuild.c:1496 storage/file/copydir.c:72 storage/file/copydir.c:115 +#: storage/file/fd.c:2903 storage/file/fd.c:2995 utils/adt/dbsize.c:70 utils/adt/dbsize.c:220 utils/adt/dbsize.c:300 utils/adt/genfile.c:114 utils/adt/genfile.c:333 #, c-format msgid "could not stat file \"%s\": %m" -msgstr "n'a pas pu tester le fichier « %s » : %m" +msgstr "n'a pas pu tester le fichier « %s » : %m" -#: access/transam/xlog.c:10126 access/transam/xlog.c:10164 +#: access/transam/xlog.c:10201 access/transam/xlog.c:10239 #, c-format msgid "If you're sure there is no backup in progress, remove file \"%s\" and try again." msgstr "" -"Si vous êtes certain qu'aucune sauvegarde n'est en cours, supprimez le\n" -"fichier « %s » et recommencez de nouveau." +"Si vous êtes certain qu'aucune sauvegarde n'est en cours, supprimez le\n" +"fichier « %s » et recommencez de nouveau." -#: access/transam/xlog.c:10143 access/transam/xlog.c:10181 access/transam/xlog.c:10511 +#: access/transam/xlog.c:10218 access/transam/xlog.c:10256 access/transam/xlog.c:10648 #, c-format msgid "could not write file \"%s\": %m" -msgstr "impossible d'écrire le fichier « %s » : %m" +msgstr "impossible d'écrire le fichier « %s » : %m" -#: access/transam/xlog.c:10300 +#: access/transam/xlog.c:10418 #, c-format msgid "exclusive backup not in progress" msgstr "une sauvegarde exclusive n'est pas en cours" -#: access/transam/xlog.c:10340 +#: access/transam/xlog.c:10445 #, c-format msgid "a backup is not in progress" msgstr "une sauvegarde n'est pas en cours" -#: access/transam/xlog.c:10385 access/transam/xlog.c:10398 access/transam/xlog.c:10738 access/transam/xlog.c:10744 access/transam/xlog.c:10828 access/transam/xlogfuncs.c:695 +#: access/transam/xlog.c:10522 access/transam/xlog.c:10535 access/transam/xlog.c:10875 access/transam/xlog.c:10881 access/transam/xlog.c:10965 access/transam/xlogfuncs.c:690 #, c-format msgid "invalid data in file \"%s\"" -msgstr "données invalides dans le fichier « %s »" +msgstr "données invalides dans le fichier « %s »" -#: access/transam/xlog.c:10402 replication/basebackup.c:936 +#: access/transam/xlog.c:10539 replication/basebackup.c:938 #, c-format msgid "the standby was promoted during online backup" -msgstr "le standby a été promu lors de la sauvegarde en ligne" +msgstr "le standby a été promu lors de la sauvegarde en ligne" -#: access/transam/xlog.c:10403 replication/basebackup.c:937 +#: access/transam/xlog.c:10540 replication/basebackup.c:939 #, c-format msgid "This means that the backup being taken is corrupt and should not be used. Try taking another online backup." msgstr "" -"Cela signifie que la sauvegarde en cours de réalisation est corrompue et ne\n" -"doit pas être utilisée. Recommencez la sauvegarde." +"Cela signifie que la sauvegarde en cours de réalisation est corrompue et ne\n" +"doit pas être utilisée. Recommencez la sauvegarde." -#: access/transam/xlog.c:10448 +#: access/transam/xlog.c:10585 #, c-format msgid "WAL generated with full_page_writes=off was replayed during online backup" msgstr "" -"le journal de transactions généré avec full_page_writes=off a été rejoué lors\n" +"le journal de transactions généré avec full_page_writes=off a été rejoué lors\n" "de la sauvegarde en ligne" -#: access/transam/xlog.c:10560 +#: access/transam/xlog.c:10697 #, c-format msgid "pg_stop_backup cleanup done, waiting for required WAL segments to be archived" -msgstr "nettoyage de pg_stop_backup terminé, en attente des journaux de transactions requis à archiver" +msgstr "nettoyage de pg_stop_backup terminé, en attente des journaux de transactions requis à archiver" -#: access/transam/xlog.c:10570 +#: access/transam/xlog.c:10707 #, c-format msgid "pg_stop_backup still waiting for all required WAL segments to be archived (%d seconds elapsed)" msgstr "" "pg_stop_backup toujours en attente de la fin de l'archivage des segments de\n" -"journaux de transactions requis (%d secondes passées)" +"journaux de transactions requis (%d secondes passées)" -#: access/transam/xlog.c:10572 +#: access/transam/xlog.c:10709 #, c-format msgid "Check that your archive_command is executing properly. pg_stop_backup can be canceled safely, but the database backup will not be usable without all the WAL segments." msgstr "" -"Vérifiez que votre archive_command s'exécute correctement. pg_stop_backup\n" -"peut être annulé avec sûreté mais la sauvegarde de la base ne sera pas\n" +"Vérifiez que votre archive_command s'exécute correctement. pg_stop_backup\n" +"peut être annulé avec sûreté mais la sauvegarde de la base ne sera pas\n" "utilisable sans tous les segments WAL." -#: access/transam/xlog.c:10579 +#: access/transam/xlog.c:10716 #, c-format msgid "pg_stop_backup complete, all required WAL segments have been archived" -msgstr "pg_stop_backup terminé, tous les journaux de transactions requis ont été archivés" +msgstr "pg_stop_backup terminé, tous les journaux de transactions requis ont été archivés" -#: access/transam/xlog.c:10583 +#: access/transam/xlog.c:10720 #, c-format msgid "WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup" msgstr "" -"L'archivage des journaux de transactions n'est pas activé ;\n" +"L'archivage des journaux de transactions n'est pas activé ;\n" "vous devez vous assurer que tous les fichiers requis des journaux de\n" -"transactions sont copiés par d'autre moyens pour terminer la sauvegarde." +"transactions sont copiés par d'autre moyens pour terminer la sauvegarde." #. translator: %s is an XLog record description -#: access/transam/xlog.c:10868 +#: access/transam/xlog.c:11005 #, c-format msgid "xlog redo at %X/%X for %s" -msgstr "xlog redo à %X/%X pour %s" +msgstr "xlog redo à %X/%X pour %s" -#: access/transam/xlog.c:10917 +#: access/transam/xlog.c:11054 #, c-format msgid "online backup mode was not canceled" -msgstr "le mode de sauvegarde en ligne n'a pas été annulé" +msgstr "le mode de sauvegarde en ligne n'a pas été annulé" -#: access/transam/xlog.c:10918 +#: access/transam/xlog.c:11055 #, c-format msgid "File \"%s\" could not be renamed to \"%s\": %m." -msgstr "Le fichier « %s » n'a pas pu être renommé en « %s » : %m" +msgstr "Le fichier « %s » n'a pas pu être renommé en « %s » : %m" -#: access/transam/xlog.c:10927 access/transam/xlog.c:10939 access/transam/xlog.c:10949 +#: access/transam/xlog.c:11064 access/transam/xlog.c:11076 access/transam/xlog.c:11086 #, c-format msgid "online backup mode canceled" -msgstr "mode de sauvegarde en ligne annulé" +msgstr "mode de sauvegarde en ligne annulé" -#: access/transam/xlog.c:10940 +#: access/transam/xlog.c:11077 #, c-format msgid "Files \"%s\" and \"%s\" were renamed to \"%s\" and \"%s\", respectively." -msgstr "Les fichiers « %s » et « %s » sont renommés respectivement « %s » et « %s »." +msgstr "Les fichiers « %s » et « %s » sont renommés respectivement « %s » et « %s »." -#: access/transam/xlog.c:10950 +#: access/transam/xlog.c:11087 #, c-format msgid "File \"%s\" was renamed to \"%s\", but file \"%s\" could not be renamed to \"%s\": %m." -msgstr "Le fichier « %s » a été renommé en « %s », mais le fichier « %s » n'a pas pu être renommé en « %s » : %m" +msgstr "Le fichier « %s » a été renommé en « %s », mais le fichier « %s » n'a pas pu être renommé en « %s » : %m" -#: access/transam/xlog.c:11072 access/transam/xlogutils.c:718 replication/walreceiver.c:994 replication/walsender.c:2114 +#: access/transam/xlog.c:11209 access/transam/xlogutils.c:718 replication/walreceiver.c:994 replication/walsender.c:2156 #, c-format msgid "could not seek in log segment %s to offset %u: %m" -msgstr "n'a pas pu se déplacer dans le journal de transactions %s au décalage %u : %m" +msgstr "n'a pas pu se déplacer dans le journal de transactions %s au décalage %u : %m" -#: access/transam/xlog.c:11084 +#: access/transam/xlog.c:11221 #, c-format msgid "could not read from log segment %s, offset %u: %m" -msgstr "n'a pas pu lire le journal de transactions %s, décalage %u : %m" +msgstr "n'a pas pu lire le journal de transactions %s, décalage %u : %m" -#: access/transam/xlog.c:11558 +#: access/transam/xlog.c:11695 #, c-format msgid "received promote request" -msgstr "a reçu une demande de promotion" +msgstr "a reçu une demande de promotion" -#: access/transam/xlog.c:11571 +#: access/transam/xlog.c:11708 #, c-format msgid "trigger file found: %s" -msgstr "fichier trigger trouvé : %s" +msgstr "fichier trigger trouvé : %s" -#: access/transam/xlog.c:11580 +#: access/transam/xlog.c:11717 #, c-format msgid "could not stat trigger file \"%s\": %m" -msgstr "n'a pas pu tester le fichier trigger « %s » : %m" +msgstr "n'a pas pu tester le fichier trigger « %s » : %m" #: access/transam/xlogarchive.c:244 #, c-format msgid "archive file \"%s\" has wrong size: %lu instead of %lu" -msgstr "le fichier d'archive « %s » a la mauvaise taille : %lu au lieu de %lu" +msgstr "le fichier d'archive « %s » a la mauvaise taille : %lu au lieu de %lu" #: access/transam/xlogarchive.c:253 #, c-format msgid "restored log file \"%s\" from archive" -msgstr "restauration du journal de transactions « %s » à partir de l'archive" +msgstr "restauration du journal de transactions « %s » à partir de l'archive" #: access/transam/xlogarchive.c:303 #, c-format msgid "could not restore file \"%s\" from archive: %s" -msgstr "n'a pas pu restaurer le fichier « %s » à partir de l'archive : %s" +msgstr "n'a pas pu restaurer le fichier « %s » à partir de l'archive : %s" #. translator: First %s represents a recovery.conf parameter name like #. "recovery_end_command", the 2nd is the value of that parameter, the @@ -2794,177 +2559,177 @@ msgstr "n'a pas pu restaurer le fichier #: access/transam/xlogarchive.c:415 #, c-format msgid "%s \"%s\": %s" -msgstr "%s « %s »: %s" +msgstr "%s « %s »: %s" -#: access/transam/xlogarchive.c:458 replication/logical/snapbuild.c:1619 replication/slot.c:480 replication/slot.c:992 replication/slot.c:1100 storage/file/fd.c:635 storage/file/fd.c:693 utils/time/snapmgr.c:1246 +#: access/transam/xlogarchive.c:458 replication/logical/snapbuild.c:1619 replication/slot.c:496 replication/slot.c:1009 replication/slot.c:1117 storage/file/fd.c:642 storage/file/fd.c:700 utils/time/snapmgr.c:1298 #, c-format msgid "could not rename file \"%s\" to \"%s\": %m" -msgstr "n'a pas pu renommer le fichier « %s » en « %s » : %m" +msgstr "n'a pas pu renommer le fichier « %s » en « %s » : %m" #: access/transam/xlogarchive.c:525 access/transam/xlogarchive.c:589 #, c-format msgid "could not create archive status file \"%s\": %m" -msgstr "n'a pas pu créer le fichier de statut d'archivage « %s » : %m" +msgstr "n'a pas pu créer le fichier de statut d'archivage « %s » : %m" #: access/transam/xlogarchive.c:533 access/transam/xlogarchive.c:597 #, c-format msgid "could not write archive status file \"%s\": %m" -msgstr "n'a pas pu écrire le fichier de statut d'archivage « %s » : %m" +msgstr "n'a pas pu écrire le fichier de statut d'archivage « %s » : %m" -#: access/transam/xlogfuncs.c:58 +#: access/transam/xlogfuncs.c:56 #, c-format msgid "aborting backup due to backend exiting before pg_stop_backup was called" -msgstr "annulation de la sauvegarde due à la déconnexion du processus serveur avant que pg_stop_backup ne soit appelé" +msgstr "annulation de la sauvegarde due à la déconnexion du processus serveur avant que pg_stop_backup ne soit appelé" -#: access/transam/xlogfuncs.c:88 +#: access/transam/xlogfuncs.c:87 #, c-format msgid "a backup is already in progress in this session" -msgstr "une sauvegarde est déjà en cours dans cette session" +msgstr "une sauvegarde est déjà en cours dans cette session" -#: access/transam/xlogfuncs.c:94 commands/tablespace.c:705 commands/tablespace.c:715 postmaster/postmaster.c:1406 replication/basebackup.c:295 replication/basebackup.c:635 storage/file/copydir.c:53 storage/file/copydir.c:96 storage/file/fd.c:2292 storage/file/fd.c:2891 storage/ipc/dsm.c:300 utils/adt/genfile.c:439 utils/adt/misc.c:411 utils/misc/tzparser.c:339 +#: access/transam/xlogfuncs.c:93 commands/tablespace.c:705 commands/tablespace.c:715 postmaster/postmaster.c:1424 replication/basebackup.c:297 replication/basebackup.c:637 storage/file/copydir.c:53 storage/file/copydir.c:96 storage/file/fd.c:2369 storage/file/fd.c:2968 storage/ipc/dsm.c:300 utils/adt/genfile.c:439 utils/adt/misc.c:411 utils/misc/tzparser.c:339 #, c-format msgid "could not open directory \"%s\": %m" -msgstr "n'a pas pu ouvrir le répertoire « %s » : %m" +msgstr "n'a pas pu ouvrir le répertoire « %s » : %m" -#: access/transam/xlogfuncs.c:155 access/transam/xlogfuncs.c:229 +#: access/transam/xlogfuncs.c:153 access/transam/xlogfuncs.c:226 #, c-format msgid "non-exclusive backup in progress" msgstr "une sauvegarde non exclusive est en cours" -#: access/transam/xlogfuncs.c:156 access/transam/xlogfuncs.c:230 +#: access/transam/xlogfuncs.c:154 access/transam/xlogfuncs.c:227 #, c-format msgid "Did you mean to use pg_stop_backup('f')?" msgstr "Souhaitiez-vous utiliser pg_stop_backup('f') ?" -#: access/transam/xlogfuncs.c:200 commands/event_trigger.c:1445 commands/event_trigger.c:1996 commands/extension.c:1728 commands/extension.c:1837 commands/extension.c:2030 commands/prepare.c:702 executor/execQual.c:1757 executor/execQual.c:1782 executor/execQual.c:2157 executor/execQual.c:5423 executor/functions.c:1022 foreign/foreign.c:492 replication/logical/logicalfuncs.c:175 replication/logical/origin.c:1391 replication/slotfuncs.c:189 -#: replication/walsender.c:2763 utils/adt/jsonfuncs.c:1483 utils/adt/jsonfuncs.c:1613 utils/adt/jsonfuncs.c:1801 utils/adt/jsonfuncs.c:1928 utils/adt/jsonfuncs.c:2694 utils/adt/pgstatfuncs.c:554 utils/adt/pgstatfuncs.c:655 utils/fmgr/funcapi.c:61 utils/misc/guc.c:8430 utils/mmgr/portalmem.c:1074 +#: access/transam/xlogfuncs.c:197 commands/event_trigger.c:1445 commands/event_trigger.c:1996 commands/extension.c:1732 commands/extension.c:1841 commands/extension.c:2034 commands/prepare.c:702 executor/execQual.c:1757 executor/execQual.c:1782 executor/execQual.c:2157 executor/execQual.c:5438 executor/functions.c:1031 foreign/foreign.c:492 replication/logical/logicalfuncs.c:175 replication/logical/origin.c:1394 replication/slotfuncs.c:189 +#: replication/walsender.c:2882 utils/adt/jsonfuncs.c:1483 utils/adt/jsonfuncs.c:1613 utils/adt/jsonfuncs.c:1801 utils/adt/jsonfuncs.c:1928 utils/adt/jsonfuncs.c:2694 utils/adt/pgstatfuncs.c:554 utils/adt/pgstatfuncs.c:655 utils/fmgr/funcapi.c:61 utils/misc/guc.c:8436 utils/mmgr/portalmem.c:1074 #, c-format msgid "set-valued function called in context that cannot accept a set" msgstr "" -"la fonction avec set-value a été appelé dans un contexte qui n'accepte pas\n" +"la fonction avec set-value a été appelé dans un contexte qui n'accepte pas\n" "un ensemble" -#: access/transam/xlogfuncs.c:204 commands/event_trigger.c:1449 commands/event_trigger.c:2000 commands/extension.c:1732 commands/extension.c:1841 commands/extension.c:2034 commands/prepare.c:706 foreign/foreign.c:497 replication/logical/logicalfuncs.c:179 replication/logical/origin.c:1395 replication/slotfuncs.c:193 replication/walsender.c:2767 utils/adt/pgstatfuncs.c:558 utils/adt/pgstatfuncs.c:659 utils/misc/guc.c:8434 +#: access/transam/xlogfuncs.c:201 commands/event_trigger.c:1449 commands/event_trigger.c:2000 commands/extension.c:1736 commands/extension.c:1845 commands/extension.c:2038 commands/prepare.c:706 foreign/foreign.c:497 replication/logical/logicalfuncs.c:179 replication/logical/origin.c:1398 replication/slotfuncs.c:193 replication/walsender.c:2886 utils/adt/pgstatfuncs.c:558 utils/adt/pgstatfuncs.c:659 utils/misc/guc.c:8440 #: utils/misc/pg_config.c:44 utils/mmgr/portalmem.c:1078 #, c-format msgid "materialize mode required, but it is not allowed in this context" -msgstr "mode matérialisé requis mais interdit dans ce contexte" +msgstr "mode matérialisé requis mais interdit dans ce contexte" -#: access/transam/xlogfuncs.c:247 +#: access/transam/xlogfuncs.c:243 #, c-format msgid "non-exclusive backup is not in progress" msgstr "une sauvegarde non exclusive n'est pas en cours" -#: access/transam/xlogfuncs.c:248 +#: access/transam/xlogfuncs.c:244 #, c-format msgid "Did you mean to use pg_stop_backup('t')?" msgstr "Souhaitiez-vous utiliser pg_stop_backup('t') ?" -#: access/transam/xlogfuncs.c:326 +#: access/transam/xlogfuncs.c:321 #, c-format msgid "WAL level not sufficient for creating a restore point" msgstr "" -"le niveau de journalisation (configuré par wal_level) n'est pas suffisant pour\n" -"créer un point de restauration" +"le niveau de journalisation (configuré par wal_level) n'est pas suffisant pour\n" +"créer un point de restauration" -#: access/transam/xlogfuncs.c:334 +#: access/transam/xlogfuncs.c:329 #, c-format msgid "value too long for restore point (maximum %d characters)" -msgstr "valeur trop longue pour le point de restauration (%d caractères maximum)" +msgstr "valeur trop longue pour le point de restauration (%d caractères maximum)" -#: access/transam/xlogfuncs.c:472 +#: access/transam/xlogfuncs.c:467 #, c-format msgid "pg_xlogfile_name_offset() cannot be executed during recovery." -msgstr "pg_xlogfile_name_offset() ne peut pas être exécuté lors de la restauration." +msgstr "pg_xlogfile_name_offset() ne peut pas être exécuté lors de la restauration." -#: access/transam/xlogfuncs.c:528 +#: access/transam/xlogfuncs.c:523 #, c-format msgid "pg_xlogfile_name() cannot be executed during recovery." -msgstr "pg_xlogfile_name() ne peut pas être exécuté lors de la restauration." +msgstr "pg_xlogfile_name() ne peut pas être exécuté lors de la restauration." -#: access/transam/xlogfuncs.c:548 access/transam/xlogfuncs.c:568 access/transam/xlogfuncs.c:585 +#: access/transam/xlogfuncs.c:543 access/transam/xlogfuncs.c:563 access/transam/xlogfuncs.c:580 #, c-format msgid "recovery is not in progress" msgstr "la restauration n'est pas en cours" -#: access/transam/xlogfuncs.c:549 access/transam/xlogfuncs.c:569 access/transam/xlogfuncs.c:586 +#: access/transam/xlogfuncs.c:544 access/transam/xlogfuncs.c:564 access/transam/xlogfuncs.c:581 #, c-format msgid "Recovery control functions can only be executed during recovery." msgstr "" -"Les fonctions de contrôle de la restauration peuvent seulement être exécutées\n" +"Les fonctions de contrôle de la restauration peuvent seulement être exécutées\n" "lors de la restauration." #: access/transam/xlogreader.c:276 #, c-format msgid "invalid record offset at %X/%X" -msgstr "décalage invalide de l'enregistrement %X/%X" +msgstr "décalage invalide de l'enregistrement %X/%X" #: access/transam/xlogreader.c:284 #, c-format msgid "contrecord is requested by %X/%X" -msgstr "« contrecord » est requis par %X/%X" +msgstr "« contrecord » est requis par %X/%X" #: access/transam/xlogreader.c:325 access/transam/xlogreader.c:624 #, c-format msgid "invalid record length at %X/%X: wanted %u, got %u" -msgstr "longueur invalide de l'enregistrement à %X/%X : voulait %u, a eu %u" +msgstr "longueur invalide de l'enregistrement à %X/%X : voulait %u, a eu %u" #: access/transam/xlogreader.c:340 #, c-format msgid "record length %u at %X/%X too long" -msgstr "longueur trop importante de l'enregistrement %u à %X/%X" +msgstr "longueur trop importante de l'enregistrement %u à %X/%X" #: access/transam/xlogreader.c:381 #, c-format msgid "there is no contrecord flag at %X/%X" -msgstr "il n'existe pas de drapeau contrecord à %X/%X" +msgstr "il n'existe pas de drapeau contrecord à %X/%X" #: access/transam/xlogreader.c:394 #, c-format msgid "invalid contrecord length %u at %X/%X" -msgstr "longueur %u invalide du contrecord à %X/%X" +msgstr "longueur %u invalide du contrecord à %X/%X" #: access/transam/xlogreader.c:632 #, c-format msgid "invalid resource manager ID %u at %X/%X" -msgstr "identifiant du gestionnaire de ressources invalide %u à %X/%X" +msgstr "identifiant du gestionnaire de ressources invalide %u à %X/%X" #: access/transam/xlogreader.c:646 access/transam/xlogreader.c:663 #, c-format msgid "record with incorrect prev-link %X/%X at %X/%X" -msgstr "enregistrement avec prev-link %X/%X incorrect à %X/%X" +msgstr "enregistrement avec prev-link %X/%X incorrect à %X/%X" #: access/transam/xlogreader.c:700 #, c-format msgid "incorrect resource manager data checksum in record at %X/%X" msgstr "" -"somme de contrôle des données du gestionnaire de ressources incorrecte à\n" +"somme de contrôle des données du gestionnaire de ressources incorrecte à\n" "l'enregistrement %X/%X" #: access/transam/xlogreader.c:733 #, c-format msgid "invalid magic number %04X in log segment %s, offset %u" -msgstr "numéro magique invalide %04X dans le segment %s, décalage %u" +msgstr "numéro magique invalide %04X dans le segment %s, décalage %u" #: access/transam/xlogreader.c:747 access/transam/xlogreader.c:798 #, c-format msgid "invalid info bits %04X in log segment %s, offset %u" -msgstr "bits d'information %04X invalides dans le segment %s, décalage %u" +msgstr "bits d'information %04X invalides dans le segment %s, décalage %u" #: access/transam/xlogreader.c:773 #, c-format msgid "WAL file is from different database system: WAL file database system identifier is %s, pg_control database system identifier is %s" -msgstr "le fichier WAL provient d'un système différent : l'identifiant système de la base dans le fichier WAL est %s, alors que l'identifiant système de la base dans pg_control est %s" +msgstr "le fichier WAL provient d'un système différent : l'identifiant système de la base dans le fichier WAL est %s, alors que l'identifiant système de la base dans pg_control est %s" #: access/transam/xlogreader.c:780 #, c-format msgid "WAL file is from different database system: incorrect XLOG_SEG_SIZE in page header" -msgstr "le fichier WAL provient d'un système différent : XLOG_SEG_SIZE invalide dans l'en-tête de page" +msgstr "le fichier WAL provient d'un système différent : XLOG_SEG_SIZE invalide dans l'en-tête de page" #: access/transam/xlogreader.c:786 #, c-format msgid "WAL file is from different database system: incorrect XLOG_BLCKSZ in page header" -msgstr "le fichier WAL provient d'un système différent : XLOG_BLCKSZ invalide dans l'en-tête de page" +msgstr "le fichier WAL provient d'un système différent : XLOG_BLCKSZ invalide dans l'en-tête de page" #: access/transam/xlogreader.c:812 #, c-format @@ -2974,614 +2739,614 @@ msgstr "pageaddr %X/%X inattendue dans le journal de transactions %s, segment %u #: access/transam/xlogreader.c:837 #, c-format msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u" -msgstr "identifiant timeline %u hors de la séquence (après %u) dans le segment %s, décalage %u" +msgstr "identifiant timeline %u hors de la séquence (après %u) dans le segment %s, décalage %u" #: access/transam/xlogreader.c:1081 #, c-format msgid "out-of-order block_id %u at %X/%X" -msgstr "block_id %u désordonné à %X/%X" +msgstr "block_id %u désordonné à %X/%X" #: access/transam/xlogreader.c:1103 #, c-format msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" -msgstr "BKPBLOCK_HAS_DATA configuré, mais aucune donnée inclus à %X/%X" +msgstr "BKPBLOCK_HAS_DATA configuré, mais aucune donnée inclus à %X/%X" #: access/transam/xlogreader.c:1110 #, c-format msgid "BKPBLOCK_HAS_DATA not set, but data length is %u at %X/%X" -msgstr "BKPBLOCK_HAS_DATA non configuré, mais la longueur des données est %u à %X/%X" +msgstr "BKPBLOCK_HAS_DATA non configuré, mais la longueur des données est %u à %X/%X" #: access/transam/xlogreader.c:1143 #, c-format msgid "BKPIMAGE_HAS_HOLE set, but hole offset %u length %u block image length %u at %X/%X" -msgstr "BKPIMAGE_HAS_HOLE initialisé, mais décalage du trou %u longueur %u longueur de l'image du bloc %u à %X/%X" +msgstr "BKPIMAGE_HAS_HOLE initialisé, mais décalage du trou %u longueur %u longueur de l'image du bloc %u à %X/%X" #: access/transam/xlogreader.c:1159 #, c-format msgid "BKPIMAGE_HAS_HOLE not set, but hole offset %u length %u at %X/%X" -msgstr "BKPIMAGE_HAS_HOLE non initialisé, mais décalage du trou %u longueur %u à %X/%X" +msgstr "BKPIMAGE_HAS_HOLE non initialisé, mais décalage du trou %u longueur %u à %X/%X" #: access/transam/xlogreader.c:1174 #, c-format msgid "BKPIMAGE_IS_COMPRESSED set, but block image length %u at %X/%X" -msgstr "BKPIMAGE_IS_COMPRESSED configuré, mais la longueur de l'image du bloc est %u à %X/%X" +msgstr "BKPIMAGE_IS_COMPRESSED configuré, mais la longueur de l'image du bloc est %u à %X/%X" #: access/transam/xlogreader.c:1189 #, c-format msgid "neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_IS_COMPRESSED set, but block image length is %u at %X/%X" -msgstr "ni BKPIMAGE_HAS_HOLE ni BKPIMAGE_IS_COMPRESSED configuré, mais la longueur de l'image du bloc est %u à %X/%X" +msgstr "ni BKPIMAGE_HAS_HOLE ni BKPIMAGE_IS_COMPRESSED configuré, mais la longueur de l'image du bloc est %u à %X/%X" #: access/transam/xlogreader.c:1205 #, c-format msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" -msgstr "BKPBLOCK_SAME_REL configuré, mais pas de relation précédente à %X/%X" +msgstr "BKPBLOCK_SAME_REL configuré, mais pas de relation précédente à %X/%X" #: access/transam/xlogreader.c:1217 #, c-format msgid "invalid block_id %u at %X/%X" -msgstr "block_id %u invalide à %X/%X" +msgstr "block_id %u invalide à %X/%X" #: access/transam/xlogreader.c:1282 #, c-format msgid "record with invalid length at %X/%X" -msgstr "enregistrement de longueur invalide à %X/%X" +msgstr "enregistrement de longueur invalide à %X/%X" #: access/transam/xlogreader.c:1371 #, c-format msgid "invalid compressed image at %X/%X, block %d" -msgstr "image compressée invalide à %X/%X, bloc %d" +msgstr "image compressée invalide à %X/%X, bloc %d" -#: access/transam/xlogutils.c:739 replication/walsender.c:2131 +#: access/transam/xlogutils.c:739 replication/walsender.c:2173 #, c-format msgid "could not read from log segment %s, offset %u, length %lu: %m" -msgstr "n'a pas pu lire le journal de transactions %s, décalage %u, longueur %lu : %m" +msgstr "n'a pas pu lire le journal de transactions %s, décalage %u, longueur %lu : %m" -#: bootstrap/bootstrap.c:269 postmaster/postmaster.c:793 tcop/postgres.c:3501 +#: bootstrap/bootstrap.c:269 postmaster/postmaster.c:811 tcop/postgres.c:3499 #, c-format msgid "--%s requires a value" msgstr "--%s requiert une valeur" -#: bootstrap/bootstrap.c:274 postmaster/postmaster.c:798 tcop/postgres.c:3506 +#: bootstrap/bootstrap.c:274 postmaster/postmaster.c:816 tcop/postgres.c:3504 #, c-format msgid "-c %s requires a value" msgstr "-c %s requiert une valeur" -#: bootstrap/bootstrap.c:285 postmaster/postmaster.c:810 postmaster/postmaster.c:823 +#: bootstrap/bootstrap.c:285 postmaster/postmaster.c:828 postmaster/postmaster.c:841 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Essayez « %s --help » pour plus d'informations.\n" +msgstr "Essayez « %s --help » pour plus d'informations.\n" #: bootstrap/bootstrap.c:294 #, c-format msgid "%s: invalid command-line arguments\n" msgstr "%s : arguments invalides en ligne de commande\n" -#: catalog/aclchk.c:193 +#: catalog/aclchk.c:201 #, c-format msgid "grant options can only be granted to roles" -msgstr "les options grant peuvent seulement être données aux rôles" +msgstr "les options grant peuvent seulement être données aux rôles" -#: catalog/aclchk.c:316 +#: catalog/aclchk.c:324 #, c-format msgid "no privileges were granted for column \"%s\" of relation \"%s\"" -msgstr "aucun droit n'a pu être accordé pour la colonne « %s » de la relation « %s »" +msgstr "aucun droit n'a pu être accordé pour la colonne « %s » de la relation « %s »" -#: catalog/aclchk.c:321 +#: catalog/aclchk.c:329 #, c-format msgid "no privileges were granted for \"%s\"" -msgstr "aucun droit n'a été accordé pour « %s »" +msgstr "aucun droit n'a été accordé pour « %s »" -#: catalog/aclchk.c:329 +#: catalog/aclchk.c:337 #, c-format msgid "not all privileges were granted for column \"%s\" of relation \"%s\"" -msgstr "certains droits n'ont pu être accordé pour la colonne « %s » de la relation « %s »" +msgstr "certains droits n'ont pu être accordé pour la colonne « %s » de la relation « %s »" -#: catalog/aclchk.c:334 +#: catalog/aclchk.c:342 #, c-format msgid "not all privileges were granted for \"%s\"" -msgstr "tous les droits n'ont pas été accordés pour « %s »" +msgstr "tous les droits n'ont pas été accordés pour « %s »" -#: catalog/aclchk.c:345 +#: catalog/aclchk.c:353 #, c-format msgid "no privileges could be revoked for column \"%s\" of relation \"%s\"" -msgstr "aucun droit n'a pu être révoqué pour la colonne « %s » de la relation « %s »" +msgstr "aucun droit n'a pu être révoqué pour la colonne « %s » de la relation « %s »" -#: catalog/aclchk.c:350 +#: catalog/aclchk.c:358 #, c-format msgid "no privileges could be revoked for \"%s\"" -msgstr "aucun droit n'a pu être révoqué pour « %s »" +msgstr "aucun droit n'a pu être révoqué pour « %s »" -#: catalog/aclchk.c:358 +#: catalog/aclchk.c:366 #, c-format msgid "not all privileges could be revoked for column \"%s\" of relation \"%s\"" -msgstr "certains droits n'ont pu être révoqué pour la colonne « %s » de la relation « %s »" +msgstr "certains droits n'ont pu être révoqué pour la colonne « %s » de la relation « %s »" -#: catalog/aclchk.c:363 +#: catalog/aclchk.c:371 #, c-format msgid "not all privileges could be revoked for \"%s\"" -msgstr "certains droits n'ont pu être révoqué pour « %s »" +msgstr "certains droits n'ont pu être révoqué pour « %s »" -#: catalog/aclchk.c:445 catalog/aclchk.c:935 +#: catalog/aclchk.c:453 catalog/aclchk.c:943 #, c-format msgid "invalid privilege type %s for relation" msgstr "droit %s invalide pour la relation" -#: catalog/aclchk.c:449 catalog/aclchk.c:939 +#: catalog/aclchk.c:457 catalog/aclchk.c:947 #, c-format msgid "invalid privilege type %s for sequence" -msgstr "droit %s invalide pour la séquence" +msgstr "droit %s invalide pour la séquence" -#: catalog/aclchk.c:453 +#: catalog/aclchk.c:461 #, c-format msgid "invalid privilege type %s for database" -msgstr "droit %s invalide pour la base de données" +msgstr "droit %s invalide pour la base de données" -#: catalog/aclchk.c:457 +#: catalog/aclchk.c:465 #, c-format msgid "invalid privilege type %s for domain" msgstr "type de droit %s invalide pour le domaine" -#: catalog/aclchk.c:461 catalog/aclchk.c:943 +#: catalog/aclchk.c:469 catalog/aclchk.c:951 #, c-format msgid "invalid privilege type %s for function" msgstr "droit %s invalide pour la fonction" -#: catalog/aclchk.c:465 +#: catalog/aclchk.c:473 #, c-format msgid "invalid privilege type %s for language" msgstr "droit %s invalide pour le langage" -#: catalog/aclchk.c:469 +#: catalog/aclchk.c:477 #, c-format msgid "invalid privilege type %s for large object" msgstr "type de droit invalide, %s, pour le Large Object" -#: catalog/aclchk.c:473 +#: catalog/aclchk.c:481 #, c-format msgid "invalid privilege type %s for schema" -msgstr "droit %s invalide pour le schéma" +msgstr "droit %s invalide pour le schéma" -#: catalog/aclchk.c:477 +#: catalog/aclchk.c:485 #, c-format msgid "invalid privilege type %s for tablespace" msgstr "droit %s invalide pour le tablespace" -#: catalog/aclchk.c:481 catalog/aclchk.c:947 +#: catalog/aclchk.c:489 catalog/aclchk.c:955 #, c-format msgid "invalid privilege type %s for type" msgstr "type de droit %s invalide pour le type" -#: catalog/aclchk.c:485 +#: catalog/aclchk.c:493 #, c-format msgid "invalid privilege type %s for foreign-data wrapper" -msgstr "type de droit %s invalide pour le wrapper de données distantes" +msgstr "type de droit %s invalide pour le wrapper de données distantes" -#: catalog/aclchk.c:489 +#: catalog/aclchk.c:497 #, c-format msgid "invalid privilege type %s for foreign server" msgstr "type de droit %s invalide pour le serveur distant" -#: catalog/aclchk.c:528 +#: catalog/aclchk.c:536 #, c-format msgid "column privileges are only valid for relations" msgstr "les droits sur la colonne sont seulement valides pour les relations" -#: catalog/aclchk.c:687 catalog/aclchk.c:3915 catalog/aclchk.c:4697 catalog/objectaddress.c:873 catalog/pg_largeobject.c:113 storage/large_object/inv_api.c:291 +#: catalog/aclchk.c:695 catalog/aclchk.c:3923 catalog/aclchk.c:4705 catalog/objectaddress.c:873 catalog/pg_largeobject.c:113 storage/large_object/inv_api.c:291 #, c-format msgid "large object %u does not exist" -msgstr "le « Large Object » %u n'existe pas" +msgstr "le « Large Object » %u n'existe pas" -#: catalog/aclchk.c:874 catalog/aclchk.c:882 commands/collationcmds.c:92 commands/copy.c:1008 commands/copy.c:1026 commands/copy.c:1034 commands/copy.c:1042 commands/copy.c:1050 commands/copy.c:1058 commands/copy.c:1066 commands/copy.c:1074 commands/copy.c:1082 commands/copy.c:1098 commands/copy.c:1112 commands/copy.c:1131 commands/copy.c:1146 commands/dbcommands.c:155 commands/dbcommands.c:163 commands/dbcommands.c:171 -#: commands/dbcommands.c:179 commands/dbcommands.c:187 commands/dbcommands.c:195 commands/dbcommands.c:203 commands/dbcommands.c:211 commands/dbcommands.c:219 commands/dbcommands.c:1397 commands/dbcommands.c:1405 commands/dbcommands.c:1413 commands/dbcommands.c:1421 commands/extension.c:1218 commands/extension.c:1226 commands/extension.c:1234 commands/extension.c:1242 commands/extension.c:2760 commands/foreigncmds.c:539 -#: commands/foreigncmds.c:548 commands/functioncmds.c:533 commands/functioncmds.c:649 commands/functioncmds.c:657 commands/functioncmds.c:665 commands/functioncmds.c:673 commands/functioncmds.c:2085 commands/functioncmds.c:2093 commands/sequence.c:1189 commands/sequence.c:1197 commands/sequence.c:1205 commands/sequence.c:1213 commands/sequence.c:1221 commands/sequence.c:1229 commands/sequence.c:1237 commands/sequence.c:1245 +#: catalog/aclchk.c:882 catalog/aclchk.c:890 commands/collationcmds.c:92 commands/copy.c:1048 commands/copy.c:1066 commands/copy.c:1074 commands/copy.c:1082 commands/copy.c:1090 commands/copy.c:1098 commands/copy.c:1106 commands/copy.c:1114 commands/copy.c:1122 commands/copy.c:1138 commands/copy.c:1152 commands/copy.c:1171 commands/copy.c:1186 commands/dbcommands.c:155 commands/dbcommands.c:163 commands/dbcommands.c:171 +#: commands/dbcommands.c:179 commands/dbcommands.c:187 commands/dbcommands.c:195 commands/dbcommands.c:203 commands/dbcommands.c:211 commands/dbcommands.c:219 commands/dbcommands.c:1397 commands/dbcommands.c:1405 commands/dbcommands.c:1413 commands/dbcommands.c:1421 commands/extension.c:1222 commands/extension.c:1230 commands/extension.c:1238 commands/extension.c:1246 commands/extension.c:2764 commands/foreigncmds.c:539 +#: commands/foreigncmds.c:548 commands/functioncmds.c:533 commands/functioncmds.c:649 commands/functioncmds.c:657 commands/functioncmds.c:665 commands/functioncmds.c:673 commands/functioncmds.c:2105 commands/functioncmds.c:2113 commands/sequence.c:1189 commands/sequence.c:1197 commands/sequence.c:1205 commands/sequence.c:1213 commands/sequence.c:1221 commands/sequence.c:1229 commands/sequence.c:1237 commands/sequence.c:1245 #: commands/typecmds.c:295 commands/typecmds.c:1382 commands/typecmds.c:1391 commands/typecmds.c:1399 commands/typecmds.c:1407 commands/typecmds.c:1415 commands/user.c:139 commands/user.c:156 commands/user.c:164 commands/user.c:172 commands/user.c:180 commands/user.c:188 commands/user.c:196 commands/user.c:204 commands/user.c:212 commands/user.c:220 commands/user.c:228 commands/user.c:236 commands/user.c:244 commands/user.c:537 #: commands/user.c:549 commands/user.c:557 commands/user.c:565 commands/user.c:573 commands/user.c:581 commands/user.c:589 commands/user.c:597 commands/user.c:606 commands/user.c:614 commands/user.c:622 #, c-format msgid "conflicting or redundant options" msgstr "options en conflit ou redondantes" -#: catalog/aclchk.c:980 +#: catalog/aclchk.c:988 #, c-format msgid "default privileges cannot be set for columns" -msgstr "les droits par défaut ne peuvent pas être configurés pour les colonnes" +msgstr "les droits par défaut ne peuvent pas être configurés pour les colonnes" -#: catalog/aclchk.c:1494 catalog/objectaddress.c:1390 commands/analyze.c:376 commands/copy.c:4419 commands/sequence.c:1491 commands/tablecmds.c:5197 commands/tablecmds.c:5303 commands/tablecmds.c:5363 commands/tablecmds.c:5476 commands/tablecmds.c:5533 commands/tablecmds.c:5627 commands/tablecmds.c:5723 commands/tablecmds.c:7875 commands/tablecmds.c:8080 commands/tablecmds.c:8500 commands/trigger.c:642 parser/analyze.c:2231 -#: parser/parse_relation.c:2542 parser/parse_relation.c:2604 parser/parse_target.c:940 parser/parse_type.c:127 utils/adt/acl.c:2840 utils/adt/ruleutils.c:1981 +#: catalog/aclchk.c:1502 catalog/objectaddress.c:1390 commands/analyze.c:376 commands/copy.c:4459 commands/sequence.c:1491 commands/tablecmds.c:5198 commands/tablecmds.c:5304 commands/tablecmds.c:5364 commands/tablecmds.c:5477 commands/tablecmds.c:5534 commands/tablecmds.c:5628 commands/tablecmds.c:5724 commands/tablecmds.c:7916 commands/tablecmds.c:8178 commands/tablecmds.c:8598 commands/trigger.c:642 parser/analyze.c:2228 +#: parser/parse_relation.c:2628 parser/parse_relation.c:2690 parser/parse_target.c:951 parser/parse_type.c:127 utils/adt/acl.c:2840 utils/adt/ruleutils.c:1987 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist" -msgstr "la colonne « %s » de la relation « %s » n'existe pas" +msgstr "la colonne « %s » de la relation « %s » n'existe pas" -#: catalog/aclchk.c:1763 catalog/objectaddress.c:1203 commands/sequence.c:1078 commands/tablecmds.c:223 commands/tablecmds.c:12007 utils/adt/acl.c:2076 utils/adt/acl.c:2106 utils/adt/acl.c:2138 utils/adt/acl.c:2170 utils/adt/acl.c:2198 utils/adt/acl.c:2228 +#: catalog/aclchk.c:1771 catalog/objectaddress.c:1203 commands/sequence.c:1078 commands/tablecmds.c:224 commands/tablecmds.c:12155 utils/adt/acl.c:2076 utils/adt/acl.c:2106 utils/adt/acl.c:2138 utils/adt/acl.c:2170 utils/adt/acl.c:2198 utils/adt/acl.c:2228 #, c-format msgid "\"%s\" is not a sequence" -msgstr "« %s » n'est pas une séquence" +msgstr "« %s » n'est pas une séquence" -#: catalog/aclchk.c:1801 +#: catalog/aclchk.c:1809 #, c-format msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" -msgstr "la séquence « %s » accepte seulement les droits USAGE, SELECT et UPDATE" +msgstr "la séquence « %s » accepte seulement les droits USAGE, SELECT et UPDATE" -#: catalog/aclchk.c:1818 +#: catalog/aclchk.c:1826 #, c-format msgid "invalid privilege type USAGE for table" msgstr "droit USAGE invalide pour la table" -#: catalog/aclchk.c:1986 +#: catalog/aclchk.c:1994 #, c-format msgid "invalid privilege type %s for column" msgstr "type de droit %s invalide pour la colonne" -#: catalog/aclchk.c:1999 +#: catalog/aclchk.c:2007 #, c-format msgid "sequence \"%s\" only supports SELECT column privileges" -msgstr "la séquence « %s » accepte seulement le droit SELECT pour les colonnes" +msgstr "la séquence « %s » accepte seulement le droit SELECT pour les colonnes" -#: catalog/aclchk.c:2593 +#: catalog/aclchk.c:2601 #, c-format msgid "language \"%s\" is not trusted" -msgstr "le langage « %s » n'est pas de confiance" +msgstr "le langage « %s » n'est pas de confiance" -#: catalog/aclchk.c:2595 +#: catalog/aclchk.c:2603 #, c-format msgid "GRANT and REVOKE are not allowed on untrusted languages, because only superusers can use untrusted languages." -msgstr "GRANT et REVOKE ne sont pas autorisés sur des langages qui ne sont pas de confiance car seuls les super-utilisateurs peuvent utiliser ces langages" +msgstr "GRANT et REVOKE ne sont pas autorisés sur des langages qui ne sont pas de confiance car seuls les super-utilisateurs peuvent utiliser ces langages" -#: catalog/aclchk.c:3121 +#: catalog/aclchk.c:3129 #, c-format msgid "cannot set privileges of array types" msgstr "ne peut pas configurer les droits des types tableau" -#: catalog/aclchk.c:3122 +#: catalog/aclchk.c:3130 #, c-format msgid "Set the privileges of the element type instead." -msgstr "Configurez les droits du type élément à la place." +msgstr "Configurez les droits du type élément à la place." -#: catalog/aclchk.c:3129 catalog/objectaddress.c:1523 commands/typecmds.c:3146 +#: catalog/aclchk.c:3137 catalog/objectaddress.c:1523 commands/typecmds.c:3146 #, c-format msgid "\"%s\" is not a domain" -msgstr "« %s » n'est pas un domaine" +msgstr "« %s » n'est pas un domaine" -#: catalog/aclchk.c:3252 +#: catalog/aclchk.c:3260 #, c-format msgid "unrecognized privilege type \"%s\"" -msgstr "droit « %s » non reconnu" +msgstr "droit « %s » non reconnu" -#: catalog/aclchk.c:3301 +#: catalog/aclchk.c:3309 #, c-format msgid "permission denied for column %s" -msgstr "droit refusé pour la colonne %s" +msgstr "droit refusé pour la colonne %s" -#: catalog/aclchk.c:3303 +#: catalog/aclchk.c:3311 #, c-format msgid "permission denied for relation %s" -msgstr "droit refusé pour la relation %s" +msgstr "droit refusé pour la relation %s" -#: catalog/aclchk.c:3305 commands/sequence.c:561 commands/sequence.c:786 commands/sequence.c:828 commands/sequence.c:865 commands/sequence.c:1543 +#: catalog/aclchk.c:3313 commands/sequence.c:561 commands/sequence.c:786 commands/sequence.c:828 commands/sequence.c:865 commands/sequence.c:1543 #, c-format msgid "permission denied for sequence %s" -msgstr "droit refusé pour la séquence %s" +msgstr "droit refusé pour la séquence %s" -#: catalog/aclchk.c:3307 +#: catalog/aclchk.c:3315 #, c-format msgid "permission denied for database %s" -msgstr "droit refusé pour la base de données %s" +msgstr "droit refusé pour la base de données %s" -#: catalog/aclchk.c:3309 +#: catalog/aclchk.c:3317 #, c-format msgid "permission denied for function %s" -msgstr "droit refusé pour la fonction %s" +msgstr "droit refusé pour la fonction %s" -#: catalog/aclchk.c:3311 +#: catalog/aclchk.c:3319 #, c-format msgid "permission denied for operator %s" -msgstr "droit refusé pour l'opérateur %s" +msgstr "droit refusé pour l'opérateur %s" -#: catalog/aclchk.c:3313 +#: catalog/aclchk.c:3321 #, c-format msgid "permission denied for type %s" -msgstr "droit refusé pour le type %s" +msgstr "droit refusé pour le type %s" -#: catalog/aclchk.c:3315 +#: catalog/aclchk.c:3323 #, c-format msgid "permission denied for language %s" -msgstr "droit refusé pour le langage %s" +msgstr "droit refusé pour le langage %s" -#: catalog/aclchk.c:3317 +#: catalog/aclchk.c:3325 #, c-format msgid "permission denied for large object %s" -msgstr "droit refusé pour le Large Object %s" +msgstr "droit refusé pour le Large Object %s" -#: catalog/aclchk.c:3319 +#: catalog/aclchk.c:3327 #, c-format msgid "permission denied for schema %s" -msgstr "droit refusé pour le schéma %s" +msgstr "droit refusé pour le schéma %s" -#: catalog/aclchk.c:3321 +#: catalog/aclchk.c:3329 #, c-format msgid "permission denied for operator class %s" -msgstr "droit refusé pour la classe d'opérateur %s" +msgstr "droit refusé pour la classe d'opérateur %s" -#: catalog/aclchk.c:3323 +#: catalog/aclchk.c:3331 #, c-format msgid "permission denied for operator family %s" -msgstr "droit refusé pour la famille d'opérateur %s" +msgstr "droit refusé pour la famille d'opérateur %s" -#: catalog/aclchk.c:3325 +#: catalog/aclchk.c:3333 #, c-format msgid "permission denied for collation %s" -msgstr "droit refusé pour le collationnement %s" +msgstr "droit refusé pour le collationnement %s" -#: catalog/aclchk.c:3327 +#: catalog/aclchk.c:3335 #, c-format msgid "permission denied for conversion %s" -msgstr "droit refusé pour la conversion %s" +msgstr "droit refusé pour la conversion %s" -#: catalog/aclchk.c:3329 +#: catalog/aclchk.c:3337 #, c-format msgid "permission denied for tablespace %s" -msgstr "droit refusé pour le tablespace %s" +msgstr "droit refusé pour le tablespace %s" -#: catalog/aclchk.c:3331 +#: catalog/aclchk.c:3339 #, c-format msgid "permission denied for text search dictionary %s" -msgstr "droit refusé pour le dictionnaire de recherche plein texte %s" +msgstr "droit refusé pour le dictionnaire de recherche plein texte %s" -#: catalog/aclchk.c:3333 +#: catalog/aclchk.c:3341 #, c-format msgid "permission denied for text search configuration %s" -msgstr "droit refusé pour la configuration de recherche plein texte %s" +msgstr "droit refusé pour la configuration de recherche plein texte %s" -#: catalog/aclchk.c:3335 +#: catalog/aclchk.c:3343 #, c-format msgid "permission denied for foreign-data wrapper %s" -msgstr "droit refusé pour le wrapper de données distantes %s" +msgstr "droit refusé pour le wrapper de données distantes %s" -#: catalog/aclchk.c:3337 +#: catalog/aclchk.c:3345 #, c-format msgid "permission denied for foreign server %s" -msgstr "droit refusé pour le serveur distant %s" +msgstr "droit refusé pour le serveur distant %s" -#: catalog/aclchk.c:3339 +#: catalog/aclchk.c:3347 #, c-format msgid "permission denied for event trigger %s" -msgstr "droit refusé pour le trigger sur événement %s" +msgstr "droit refusé pour le trigger sur événement %s" -#: catalog/aclchk.c:3341 +#: catalog/aclchk.c:3349 #, c-format msgid "permission denied for extension %s" -msgstr "droit refusé pour l'extension %s" +msgstr "droit refusé pour l'extension %s" -#: catalog/aclchk.c:3347 catalog/aclchk.c:3349 +#: catalog/aclchk.c:3355 catalog/aclchk.c:3357 #, c-format msgid "must be owner of relation %s" -msgstr "doit être le propriétaire de la relation %s" +msgstr "doit être le propriétaire de la relation %s" -#: catalog/aclchk.c:3351 +#: catalog/aclchk.c:3359 #, c-format msgid "must be owner of sequence %s" -msgstr "doit être le propriétaire de la séquence %s" +msgstr "doit être le propriétaire de la séquence %s" -#: catalog/aclchk.c:3353 +#: catalog/aclchk.c:3361 #, c-format msgid "must be owner of database %s" -msgstr "doit être le propriétaire de la base de données %s" +msgstr "doit être le propriétaire de la base de données %s" -#: catalog/aclchk.c:3355 +#: catalog/aclchk.c:3363 #, c-format msgid "must be owner of function %s" -msgstr "doit être le propriétaire de la fonction %s" +msgstr "doit être le propriétaire de la fonction %s" -#: catalog/aclchk.c:3357 +#: catalog/aclchk.c:3365 #, c-format msgid "must be owner of operator %s" -msgstr "doit être le prorpriétaire de l'opérateur %s" +msgstr "doit être le prorpriétaire de l'opérateur %s" -#: catalog/aclchk.c:3359 +#: catalog/aclchk.c:3367 #, c-format msgid "must be owner of type %s" -msgstr "doit être le propriétaire du type %s" +msgstr "doit être le propriétaire du type %s" -#: catalog/aclchk.c:3361 +#: catalog/aclchk.c:3369 #, c-format msgid "must be owner of language %s" -msgstr "doit être le propriétaire du langage %s" +msgstr "doit être le propriétaire du langage %s" -#: catalog/aclchk.c:3363 +#: catalog/aclchk.c:3371 #, c-format msgid "must be owner of large object %s" -msgstr "doit être le propriétaire du Large Object %s" +msgstr "doit être le propriétaire du Large Object %s" -#: catalog/aclchk.c:3365 +#: catalog/aclchk.c:3373 #, c-format msgid "must be owner of schema %s" -msgstr "doit être le propriétaire du schéma %s" +msgstr "doit être le propriétaire du schéma %s" -#: catalog/aclchk.c:3367 +#: catalog/aclchk.c:3375 #, c-format msgid "must be owner of operator class %s" -msgstr "doit être le propriétaire de la classe d'opérateur %s" +msgstr "doit être le propriétaire de la classe d'opérateur %s" -#: catalog/aclchk.c:3369 +#: catalog/aclchk.c:3377 #, c-format msgid "must be owner of operator family %s" -msgstr "doit être le prorpriétaire de la famille d'opérateur %s" +msgstr "doit être le prorpriétaire de la famille d'opérateur %s" -#: catalog/aclchk.c:3371 +#: catalog/aclchk.c:3379 #, c-format msgid "must be owner of collation %s" -msgstr "doit être le propriétaire du collationnement %s" +msgstr "doit être le propriétaire du collationnement %s" -#: catalog/aclchk.c:3373 +#: catalog/aclchk.c:3381 #, c-format msgid "must be owner of conversion %s" -msgstr "doit être le propriétaire de la conversion %s" +msgstr "doit être le propriétaire de la conversion %s" -#: catalog/aclchk.c:3375 +#: catalog/aclchk.c:3383 #, c-format msgid "must be owner of tablespace %s" -msgstr "doit être le propriétaire du tablespace %s" +msgstr "doit être le propriétaire du tablespace %s" -#: catalog/aclchk.c:3377 +#: catalog/aclchk.c:3385 #, c-format msgid "must be owner of text search dictionary %s" -msgstr "doit être le propriétaire du dictionnaire de recherche plein texte %s" +msgstr "doit être le propriétaire du dictionnaire de recherche plein texte %s" -#: catalog/aclchk.c:3379 +#: catalog/aclchk.c:3387 #, c-format msgid "must be owner of text search configuration %s" -msgstr "doit être le propriétaire de la configuration de recherche plein texte %s" +msgstr "doit être le propriétaire de la configuration de recherche plein texte %s" -#: catalog/aclchk.c:3381 +#: catalog/aclchk.c:3389 #, c-format msgid "must be owner of foreign-data wrapper %s" -msgstr "doit être le propriétaire du wrapper de données distantes %s" +msgstr "doit être le propriétaire du wrapper de données distantes %s" -#: catalog/aclchk.c:3383 +#: catalog/aclchk.c:3391 #, c-format msgid "must be owner of foreign server %s" -msgstr "doit être le propriétaire de serveur distant %s" +msgstr "doit être le propriétaire de serveur distant %s" -#: catalog/aclchk.c:3385 +#: catalog/aclchk.c:3393 #, c-format msgid "must be owner of event trigger %s" -msgstr "doit être le propriétaire du trigger sur événement %s" +msgstr "doit être le propriétaire du trigger sur événement %s" -#: catalog/aclchk.c:3387 +#: catalog/aclchk.c:3395 #, c-format msgid "must be owner of extension %s" -msgstr "doit être le propriétaire de l'extension %s" +msgstr "doit être le propriétaire de l'extension %s" -#: catalog/aclchk.c:3429 +#: catalog/aclchk.c:3437 #, c-format msgid "permission denied for column \"%s\" of relation \"%s\"" -msgstr "droit refusé pour la colonne « %s » de la relation « %s »" +msgstr "droit refusé pour la colonne « %s » de la relation « %s »" -#: catalog/aclchk.c:3548 catalog/aclchk.c:3556 +#: catalog/aclchk.c:3556 catalog/aclchk.c:3564 #, c-format msgid "attribute %d of relation with OID %u does not exist" msgstr "l'attribut %d de la relation d'OID %u n'existe pas" -#: catalog/aclchk.c:3629 catalog/aclchk.c:4548 +#: catalog/aclchk.c:3637 catalog/aclchk.c:4556 #, c-format msgid "relation with OID %u does not exist" msgstr "la relation d'OID %u n'existe pas" -#: catalog/aclchk.c:3728 catalog/aclchk.c:4966 +#: catalog/aclchk.c:3736 catalog/aclchk.c:4974 #, c-format msgid "database with OID %u does not exist" -msgstr "la base de données d'OID %u n'existe pas" +msgstr "la base de données d'OID %u n'existe pas" -#: catalog/aclchk.c:3782 catalog/aclchk.c:4626 tcop/fastpath.c:223 +#: catalog/aclchk.c:3790 catalog/aclchk.c:4634 tcop/fastpath.c:223 #, c-format msgid "function with OID %u does not exist" msgstr "la fonction d'OID %u n'existe pas" -#: catalog/aclchk.c:3836 catalog/aclchk.c:4652 +#: catalog/aclchk.c:3844 catalog/aclchk.c:4660 #, c-format msgid "language with OID %u does not exist" msgstr "le langage d'OID %u n'existe pas" -#: catalog/aclchk.c:4000 catalog/aclchk.c:4724 +#: catalog/aclchk.c:4008 catalog/aclchk.c:4732 #, c-format msgid "schema with OID %u does not exist" -msgstr "le schéma d'OID %u n'existe pas" +msgstr "le schéma d'OID %u n'existe pas" -#: catalog/aclchk.c:4054 catalog/aclchk.c:4751 +#: catalog/aclchk.c:4062 catalog/aclchk.c:4759 #, c-format msgid "tablespace with OID %u does not exist" msgstr "le tablespace d'OID %u n'existe pas" -#: catalog/aclchk.c:4113 catalog/aclchk.c:4885 commands/foreigncmds.c:325 +#: catalog/aclchk.c:4121 catalog/aclchk.c:4893 commands/foreigncmds.c:325 #, c-format msgid "foreign-data wrapper with OID %u does not exist" -msgstr "le wrapper de données distantes d'OID %u n'existe pas" +msgstr "le wrapper de données distantes d'OID %u n'existe pas" -#: catalog/aclchk.c:4175 catalog/aclchk.c:4912 commands/foreigncmds.c:461 +#: catalog/aclchk.c:4183 catalog/aclchk.c:4920 commands/foreigncmds.c:461 #, c-format msgid "foreign server with OID %u does not exist" msgstr "le serveur distant d'OID %u n'existe pas" -#: catalog/aclchk.c:4235 catalog/aclchk.c:4574 +#: catalog/aclchk.c:4243 catalog/aclchk.c:4582 #, c-format msgid "type with OID %u does not exist" msgstr "le type d'OID %u n'existe pas" -#: catalog/aclchk.c:4600 +#: catalog/aclchk.c:4608 #, c-format msgid "operator with OID %u does not exist" -msgstr "l'opérateur d'OID %u n'existe pas" +msgstr "l'opérateur d'OID %u n'existe pas" -#: catalog/aclchk.c:4777 +#: catalog/aclchk.c:4785 #, c-format msgid "operator class with OID %u does not exist" -msgstr "la classe d'opérateur d'OID %u n'existe pas" +msgstr "la classe d'opérateur d'OID %u n'existe pas" -#: catalog/aclchk.c:4804 +#: catalog/aclchk.c:4812 #, c-format msgid "operator family with OID %u does not exist" -msgstr "la famille d'opérateur d'OID %u n'existe pas" +msgstr "la famille d'opérateur d'OID %u n'existe pas" -#: catalog/aclchk.c:4831 +#: catalog/aclchk.c:4839 #, c-format msgid "text search dictionary with OID %u does not exist" msgstr "le dictionnaire de recherche plein texte d'OID %u n'existe pas" -#: catalog/aclchk.c:4858 +#: catalog/aclchk.c:4866 #, c-format msgid "text search configuration with OID %u does not exist" msgstr "la configuration de recherche plein texte d'OID %u n'existe pas" -#: catalog/aclchk.c:4939 commands/event_trigger.c:587 +#: catalog/aclchk.c:4947 commands/event_trigger.c:587 #, c-format msgid "event trigger with OID %u does not exist" -msgstr "le trigger sur événement d'OID %u n'existe pas" +msgstr "le trigger sur événement d'OID %u n'existe pas" -#: catalog/aclchk.c:4992 +#: catalog/aclchk.c:5000 #, c-format msgid "collation with OID %u does not exist" msgstr "le collationnement d'OID %u n'existe pas" -#: catalog/aclchk.c:5018 +#: catalog/aclchk.c:5026 #, c-format msgid "conversion with OID %u does not exist" msgstr "la conversion d'OID %u n'existe pas" -#: catalog/aclchk.c:5059 +#: catalog/aclchk.c:5067 #, c-format msgid "extension with OID %u does not exist" msgstr "l'extension d'OID %u n'existe pas" -#: catalog/dependency.c:646 +#: catalog/dependency.c:645 #, c-format msgid "cannot drop %s because %s requires it" msgstr "n'a pas pu supprimer %s car il est requis par %s" -#: catalog/dependency.c:649 +#: catalog/dependency.c:648 #, c-format msgid "You can drop %s instead." -msgstr "Vous pouvez supprimer %s à la place." +msgstr "Vous pouvez supprimer %s à la place." -#: catalog/dependency.c:811 catalog/pg_shdepend.c:576 +#: catalog/dependency.c:810 catalog/pg_shdepend.c:576 #, c-format msgid "cannot drop %s because it is required by the database system" -msgstr "n'a pas pu supprimer %s car il est requis par le système de bases de données" +msgstr "n'a pas pu supprimer %s car il est requis par le système de bases de données" -#: catalog/dependency.c:927 +#: catalog/dependency.c:926 #, c-format msgid "drop auto-cascades to %s" msgstr "DROP cascade automatiquement sur %s" -#: catalog/dependency.c:939 catalog/dependency.c:948 +#: catalog/dependency.c:938 catalog/dependency.c:947 #, c-format msgid "%s depends on %s" -msgstr "%s dépend de %s" +msgstr "%s dépend de %s" -#: catalog/dependency.c:960 catalog/dependency.c:969 +#: catalog/dependency.c:959 catalog/dependency.c:968 #, c-format msgid "drop cascades to %s" msgstr "DROP cascade sur %s" -#: catalog/dependency.c:977 catalog/pg_shdepend.c:687 +#: catalog/dependency.c:976 catalog/pg_shdepend.c:687 #, c-format msgid "" "\n" @@ -3596,321 +3361,326 @@ msgstr[1] "" "\n" "et %d autres objets (voir le journal applicatif du serveur pour une liste)" -#: catalog/dependency.c:989 +#: catalog/dependency.c:988 #, c-format msgid "cannot drop %s because other objects depend on it" -msgstr "n'a pas pu supprimer %s car d'autres objets en dépendent" +msgstr "n'a pas pu supprimer %s car d'autres objets en dépendent" -#: catalog/dependency.c:993 catalog/dependency.c:1000 +#: catalog/dependency.c:992 catalog/dependency.c:999 #, c-format msgid "Use DROP ... CASCADE to drop the dependent objects too." -msgstr "Utilisez DROP ... CASCADE pour supprimer aussi les objets dépendants." +msgstr "Utilisez DROP ... CASCADE pour supprimer aussi les objets dépendants." -#: catalog/dependency.c:997 +#: catalog/dependency.c:996 #, c-format msgid "cannot drop desired object(s) because other objects depend on them" -msgstr "ne peut pas supprimer les objets désirés car d'autres objets en dépendent" +msgstr "ne peut pas supprimer les objets désirés car d'autres objets en dépendent" #. translator: %d always has a value larger than 1 -#: catalog/dependency.c:1006 +#: catalog/dependency.c:1005 #, c-format msgid "drop cascades to %d other object" msgid_plural "drop cascades to %d other objects" msgstr[0] "DROP cascade sur %d autre objet" msgstr[1] "DROP cascade sur %d autres objets" -#: catalog/dependency.c:1634 +#: catalog/dependency.c:1633 #, c-format msgid "constant of the type \"regrole\" cannot be used here" -msgstr "une constante de type « regrole » ne peut pas être utilisée ici" +msgstr "une constante de type « regrole » ne peut pas être utilisée ici" -#: catalog/heap.c:277 +#: catalog/heap.c:278 #, c-format msgid "permission denied to create \"%s.%s\"" -msgstr "droit refusé pour créer « %s.%s »" +msgstr "droit refusé pour créer « %s.%s »" -#: catalog/heap.c:279 +#: catalog/heap.c:280 #, c-format msgid "System catalog modifications are currently disallowed." -msgstr "Les modifications du catalogue système sont actuellement interdites." +msgstr "Les modifications du catalogue système sont actuellement interdites." -#: catalog/heap.c:414 commands/tablecmds.c:1438 commands/tablecmds.c:1895 commands/tablecmds.c:4819 +#: catalog/heap.c:415 commands/tablecmds.c:1439 commands/tablecmds.c:1896 commands/tablecmds.c:4820 #, c-format msgid "tables can have at most %d columns" msgstr "les tables peuvent avoir au plus %d colonnes" -#: catalog/heap.c:431 commands/tablecmds.c:5080 +#: catalog/heap.c:432 commands/tablecmds.c:5081 #, c-format msgid "column name \"%s\" conflicts with a system column name" -msgstr "le nom de la colonne « %s » entre en conflit avec le nom d'une colonne système" +msgstr "le nom de la colonne « %s » entre en conflit avec le nom d'une colonne système" -#: catalog/heap.c:447 +#: catalog/heap.c:448 #, c-format msgid "column name \"%s\" specified more than once" -msgstr "colonne « %s » spécifiée plus d'une fois" +msgstr "colonne « %s » spécifiée plus d'une fois" -#: catalog/heap.c:497 +#: catalog/heap.c:498 #, c-format msgid "column \"%s\" has type \"unknown\"" -msgstr "la colonne « %s » est de type « unknown »" +msgstr "la colonne « %s » est de type « unknown »" -#: catalog/heap.c:498 +#: catalog/heap.c:499 #, c-format msgid "Proceeding with relation creation anyway." -msgstr "Poursuit malgré tout la création de la relation." +msgstr "Poursuit malgré tout la création de la relation." -#: catalog/heap.c:511 +#: catalog/heap.c:512 #, c-format msgid "column \"%s\" has pseudo-type %s" -msgstr "la colonne « %s » a le pseudo type %s" +msgstr "la colonne « %s » a le pseudo type %s" -#: catalog/heap.c:541 +#: catalog/heap.c:542 #, c-format msgid "composite type %s cannot be made a member of itself" -msgstr "le type composite %s ne peut pas être membre de lui-même" +msgstr "le type composite %s ne peut pas être membre de lui-même" -#: catalog/heap.c:583 commands/createas.c:201 commands/createas.c:498 +#: catalog/heap.c:584 commands/createas.c:201 commands/createas.c:498 #, c-format msgid "no collation was derived for column \"%s\" with collatable type %s" -msgstr "aucun collationnement n'a été dérivé pour la colonne « %s » de type collationnable %s" +msgstr "aucun collationnement n'a été dérivé pour la colonne « %s » de type collationnable %s" -#: catalog/heap.c:585 commands/createas.c:204 commands/createas.c:501 commands/indexcmds.c:1132 commands/view.c:105 regex/regc_pg_locale.c:262 utils/adt/formatting.c:1513 utils/adt/formatting.c:1565 utils/adt/formatting.c:1633 utils/adt/formatting.c:1685 utils/adt/formatting.c:1754 utils/adt/formatting.c:1818 utils/adt/like.c:213 utils/adt/selfuncs.c:5334 utils/adt/varlena.c:1421 utils/adt/varlena.c:1826 +#: catalog/heap.c:586 commands/createas.c:204 commands/createas.c:501 commands/indexcmds.c:1133 commands/view.c:103 regex/regc_pg_locale.c:262 utils/adt/formatting.c:1513 utils/adt/formatting.c:1565 utils/adt/formatting.c:1633 utils/adt/formatting.c:1685 utils/adt/formatting.c:1754 utils/adt/formatting.c:1818 utils/adt/like.c:213 utils/adt/selfuncs.c:5434 utils/adt/varlena.c:1421 utils/adt/varlena.c:1826 #, c-format msgid "Use the COLLATE clause to set the collation explicitly." msgstr "Utilisez la clause COLLARE pour configurer explicitement le collationnement." -#: catalog/heap.c:1066 catalog/index.c:792 commands/tablecmds.c:2622 +#: catalog/heap.c:1067 catalog/index.c:792 commands/tablecmds.c:2623 #, c-format msgid "relation \"%s\" already exists" -msgstr "la relation « %s » existe déjà" +msgstr "la relation « %s » existe déjà" -#: catalog/heap.c:1082 catalog/pg_type.c:412 catalog/pg_type.c:722 commands/typecmds.c:237 commands/typecmds.c:784 commands/typecmds.c:1135 commands/typecmds.c:1357 commands/typecmds.c:2113 +#: catalog/heap.c:1083 catalog/pg_type.c:412 catalog/pg_type.c:737 commands/typecmds.c:237 commands/typecmds.c:784 commands/typecmds.c:1135 commands/typecmds.c:1357 commands/typecmds.c:2113 #, c-format msgid "type \"%s\" already exists" -msgstr "le type « %s » existe déjà" +msgstr "le type « %s » existe déjà" -#: catalog/heap.c:1083 +#: catalog/heap.c:1084 #, c-format msgid "A relation has an associated type of the same name, so you must use a name that doesn't conflict with any existing type." msgstr "" -"Une relation a un type associé du même nom, donc vous devez utiliser un nom\n" +"Une relation a un type associé du même nom, donc vous devez utiliser un nom\n" "qui n'entre pas en conflit avec un type existant." -#: catalog/heap.c:1111 +#: catalog/heap.c:1112 #, c-format msgid "pg_class heap OID value not set when in binary upgrade mode" -msgstr "OID du heap de pg_class non configuré en mode de mise à jour binaire" +msgstr "OID du heap de pg_class non configuré en mode de mise à jour binaire" -#: catalog/heap.c:2289 +#: catalog/heap.c:2291 #, c-format msgid "check constraint \"%s\" already exists" -msgstr "la contrainte de vérification « %s » existe déjà" +msgstr "la contrainte de vérification « %s » existe déjà" -#: catalog/heap.c:2442 catalog/pg_constraint.c:654 commands/tablecmds.c:6068 +#: catalog/heap.c:2456 catalog/pg_constraint.c:654 commands/tablecmds.c:6069 #, c-format msgid "constraint \"%s\" for relation \"%s\" already exists" -msgstr "la contrainte « %s » de la relation « %s » existe déjà" +msgstr "la contrainte « %s » de la relation « %s » existe déjà" -#: catalog/heap.c:2452 +#: catalog/heap.c:2463 #, c-format msgid "constraint \"%s\" conflicts with non-inherited constraint on relation \"%s\"" -msgstr "la contrainte « %s » entre en conflit avec la constrainte non héritée sur la relation « %s »" +msgstr "la contrainte « %s » entre en conflit avec la constrainte non héritée sur la relation « %s »" + +#: catalog/heap.c:2474 +#, c-format +msgid "constraint \"%s\" conflicts with inherited constraint on relation \"%s\"" +msgstr "la contrainte « %s » entre en conflit avec une contrainte héritée sur la relation « %s »" -#: catalog/heap.c:2466 +#: catalog/heap.c:2484 +#, c-format +msgid "constraint \"%s\" conflicts with NOT VALID constraint on relation \"%s\"" +msgstr "la contrainte « %s » entre en conflit avec une contrainte NOT VALID sur la relation « %s »" + +#: catalog/heap.c:2489 #, c-format msgid "merging constraint \"%s\" with inherited definition" -msgstr "assemblage de la contrainte « %s » avec une définition héritée" +msgstr "assemblage de la contrainte « %s » avec une définition héritée" -#: catalog/heap.c:2559 +#: catalog/heap.c:2595 #, c-format msgid "cannot use column references in default expression" -msgstr "ne peut pas utiliser les références de colonnes dans l'expression par défaut" +msgstr "ne peut pas utiliser les références de colonnes dans l'expression par défaut" -#: catalog/heap.c:2570 +#: catalog/heap.c:2606 #, c-format msgid "default expression must not return a set" -msgstr "l'expression par défaut ne doit pas renvoyer un ensemble" +msgstr "l'expression par défaut ne doit pas renvoyer un ensemble" -#: catalog/heap.c:2589 rewrite/rewriteHandler.c:1084 +#: catalog/heap.c:2625 rewrite/rewriteHandler.c:1115 #, c-format msgid "column \"%s\" is of type %s but default expression is of type %s" -msgstr "la colonne « %s » est de type %s alors que l'expression par défaut est de type %s" +msgstr "la colonne « %s » est de type %s alors que l'expression par défaut est de type %s" -#: catalog/heap.c:2594 commands/prepare.c:374 parser/parse_node.c:428 parser/parse_target.c:528 parser/parse_target.c:778 parser/parse_target.c:788 rewrite/rewriteHandler.c:1089 +#: catalog/heap.c:2630 commands/prepare.c:374 parser/parse_node.c:428 parser/parse_target.c:539 parser/parse_target.c:789 parser/parse_target.c:799 rewrite/rewriteHandler.c:1120 #, c-format msgid "You will need to rewrite or cast the expression." -msgstr "Vous devez réécrire l'expression ou lui appliquer une transformation de type." +msgstr "Vous devez réécrire l'expression ou lui appliquer une transformation de type." -#: catalog/heap.c:2641 +#: catalog/heap.c:2677 #, c-format msgid "only table \"%s\" can be referenced in check constraint" -msgstr "seule la table « %s » peut être référencée dans la contrainte de vérification" +msgstr "seule la table « %s » peut être référencée dans la contrainte de vérification" -#: catalog/heap.c:2881 +#: catalog/heap.c:2917 #, c-format msgid "unsupported ON COMMIT and foreign key combination" -msgstr "combinaison ON COMMIT et clé étrangère non supportée" +msgstr "combinaison ON COMMIT et clé étrangère non supportée" -#: catalog/heap.c:2882 +#: catalog/heap.c:2918 #, c-format msgid "Table \"%s\" references \"%s\", but they do not have the same ON COMMIT setting." msgstr "" -"La table « %s » référence « %s » mais elles n'ont pas la même valeur pour le\n" -"paramètre ON COMMIT." +"La table « %s » référence « %s » mais elles n'ont pas la même valeur pour le\n" +"paramètre ON COMMIT." -#: catalog/heap.c:2887 +#: catalog/heap.c:2923 #, c-format msgid "cannot truncate a table referenced in a foreign key constraint" -msgstr "ne peut pas tronquer une table référencée dans une contrainte de clé étrangère" +msgstr "ne peut pas tronquer une table référencée dans une contrainte de clé étrangère" -#: catalog/heap.c:2888 +#: catalog/heap.c:2924 #, c-format msgid "Table \"%s\" references \"%s\"." -msgstr "La table « %s » référence « %s »." +msgstr "La table « %s » référence « %s »." -#: catalog/heap.c:2890 +#: catalog/heap.c:2926 #, c-format msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." -msgstr "Tronquez la table « %s » en même temps, ou utilisez TRUNCATE ... CASCADE." +msgstr "Tronquez la table « %s » en même temps, ou utilisez TRUNCATE ... CASCADE." -#: catalog/index.c:210 parser/parse_utilcmd.c:1488 parser/parse_utilcmd.c:1574 +#: catalog/index.c:210 parser/parse_utilcmd.c:1473 parser/parse_utilcmd.c:1559 #, c-format msgid "multiple primary keys for table \"%s\" are not allowed" -msgstr "les clés primaires multiples ne sont pas autorisées pour la table « %s »" +msgstr "les clés primaires multiples ne sont pas autorisées pour la table « %s »" #: catalog/index.c:228 #, c-format msgid "primary keys cannot be expressions" -msgstr "les clés primaires ne peuvent pas être des expressions" +msgstr "les clés primaires ne peuvent pas être des expressions" #: catalog/index.c:742 catalog/index.c:1160 #, c-format msgid "user-defined indexes on system catalog tables are not supported" -msgstr "les index définis par l'utilisateur sur les tables du catalogue système ne sont pas supportés" +msgstr "les index définis par l'utilisateur sur les tables du catalogue système ne sont pas supportés" #: catalog/index.c:752 #, c-format msgid "concurrent index creation on system catalog tables is not supported" msgstr "" -"la création en parallèle d'un index sur les tables du catalogue système\n" -"n'est pas supportée" +"la création en parallèle d'un index sur les tables du catalogue système\n" +"n'est pas supportée" #: catalog/index.c:770 #, c-format msgid "shared indexes cannot be created after initdb" -msgstr "les index partagés ne peuvent pas être créés après initdb" +msgstr "les index partagés ne peuvent pas être créés après initdb" -#: catalog/index.c:784 commands/createas.c:249 commands/sequence.c:141 parser/parse_utilcmd.c:192 +#: catalog/index.c:784 commands/createas.c:249 commands/sequence.c:141 parser/parse_utilcmd.c:191 #, c-format msgid "relation \"%s\" already exists, skipping" -msgstr "la relation « %s » existe déjà, poursuite du traitement" +msgstr "la relation « %s » existe déjà, poursuite du traitement" #: catalog/index.c:820 #, c-format msgid "pg_class index OID value not set when in binary upgrade mode" -msgstr "OID de l'index de pg_class non configuré en mode de mise à jour binaire" +msgstr "OID de l'index de pg_class non configuré en mode de mise à jour binaire" #: catalog/index.c:1422 #, c-format msgid "DROP INDEX CONCURRENTLY must be first action in transaction" -msgstr "DROP INDEX CONCURRENTLY doit être la première action dans une transaction" +msgstr "DROP INDEX CONCURRENTLY doit être la première action dans une transaction" #: catalog/index.c:2004 #, c-format msgid "building index \"%s\" on table \"%s\"" -msgstr "construction de l'index « %s » sur la table « %s »" +msgstr "construction de l'index « %s » sur la table « %s »" #: catalog/index.c:3322 #, c-format msgid "cannot reindex temporary tables of other sessions" -msgstr "ne peut pas ré-indexer les tables temporaires des autres sessions" +msgstr "ne peut pas ré-indexer les tables temporaires des autres sessions" #: catalog/index.c:3454 #, c-format msgid "index \"%s\" was reindexed" -msgstr "l'index « %s » a été réindexée" - -#: catalog/index.c:3456 commands/vacuumlazy.c:1338 commands/vacuumlazy.c:1414 commands/vacuumlazy.c:1603 commands/vacuumlazy.c:1813 -#, c-format -msgid "%s." -msgstr "%s." +msgstr "l'index « %s » a été réindexée" #: catalog/namespace.c:249 catalog/namespace.c:447 catalog/namespace.c:541 commands/trigger.c:4523 #, c-format msgid "cross-database references are not implemented: \"%s.%s.%s\"" -msgstr "les références entre bases de données ne sont pas implémentées : « %s.%s.%s »" +msgstr "les références entre bases de données ne sont pas implémentées : « %s.%s.%s »" #: catalog/namespace.c:306 #, c-format msgid "temporary tables cannot specify a schema name" -msgstr "les tables temporaires ne peuvent pas spécifier un nom de schéma" +msgstr "les tables temporaires ne peuvent pas spécifier un nom de schéma" #: catalog/namespace.c:385 #, c-format msgid "could not obtain lock on relation \"%s.%s\"" -msgstr "n'a pas pu obtenir un verrou sur la relation « %s.%s »" +msgstr "n'a pas pu obtenir un verrou sur la relation « %s.%s »" #: catalog/namespace.c:390 commands/lockcmds.c:146 #, c-format msgid "could not obtain lock on relation \"%s\"" -msgstr "n'a pas pu obtenir un verrou sur la relation « %s »" +msgstr "n'a pas pu obtenir un verrou sur la relation « %s »" -#: catalog/namespace.c:414 parser/parse_relation.c:1137 +#: catalog/namespace.c:414 parser/parse_relation.c:1138 #, c-format msgid "relation \"%s.%s\" does not exist" -msgstr "la relation « %s.%s » n'existe pas" +msgstr "la relation « %s.%s » n'existe pas" -#: catalog/namespace.c:419 parser/parse_relation.c:1150 parser/parse_relation.c:1158 utils/adt/regproc.c:1034 +#: catalog/namespace.c:419 parser/parse_relation.c:1151 parser/parse_relation.c:1159 utils/adt/regproc.c:1035 #, c-format msgid "relation \"%s\" does not exist" -msgstr "la relation « %s » n'existe pas" +msgstr "la relation « %s » n'existe pas" -#: catalog/namespace.c:487 catalog/namespace.c:2841 commands/extension.c:1382 commands/extension.c:1388 +#: catalog/namespace.c:487 catalog/namespace.c:2841 commands/extension.c:1386 commands/extension.c:1392 #, c-format msgid "no schema has been selected to create in" -msgstr "aucun schéma n'a été sélectionné pour cette création" +msgstr "aucun schéma n'a été sélectionné pour cette création" #: catalog/namespace.c:639 catalog/namespace.c:652 #, c-format msgid "cannot create relations in temporary schemas of other sessions" -msgstr "ne peut pas créer les relations dans les schémas temporaires d'autres sessions" +msgstr "ne peut pas créer les relations dans les schémas temporaires d'autres sessions" #: catalog/namespace.c:643 #, c-format msgid "cannot create temporary relation in non-temporary schema" -msgstr "ne peut pas créer une relation temporaire dans un schéma non temporaire" +msgstr "ne peut pas créer une relation temporaire dans un schéma non temporaire" #: catalog/namespace.c:658 #, c-format msgid "only temporary relations may be created in temporary schemas" -msgstr "seules les relations temporaires peuvent être créées dans des schémas temporaires" +msgstr "seules les relations temporaires peuvent être créées dans des schémas temporaires" #: catalog/namespace.c:2154 #, c-format msgid "text search parser \"%s\" does not exist" -msgstr "l'analyseur de recherche plein texte « %s » n'existe pas" +msgstr "l'analyseur de recherche plein texte « %s » n'existe pas" #: catalog/namespace.c:2280 #, c-format msgid "text search dictionary \"%s\" does not exist" -msgstr "le dictionnaire de recherche plein texte « %s » n'existe pas" +msgstr "le dictionnaire de recherche plein texte « %s » n'existe pas" #: catalog/namespace.c:2407 #, c-format msgid "text search template \"%s\" does not exist" -msgstr "le modèle de recherche plein texte « %s » n'existe pas" +msgstr "le modèle de recherche plein texte « %s » n'existe pas" #: catalog/namespace.c:2533 commands/tsearchcmds.c:1197 utils/cache/ts_cache.c:611 #, c-format msgid "text search configuration \"%s\" does not exist" -msgstr "la configuration de recherche plein texte « %s » n'existe pas" +msgstr "la configuration de recherche plein texte « %s » n'existe pas" -#: catalog/namespace.c:2646 parser/parse_expr.c:792 parser/parse_target.c:1130 +#: catalog/namespace.c:2646 parser/parse_expr.c:792 parser/parse_target.c:1141 #, 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" +msgstr "les références entre bases de données ne sont pas implémentées : %s" -#: catalog/namespace.c:2652 gram.y:13441 gram.y:14810 parser/parse_expr.c:799 parser/parse_target.c:1137 +#: catalog/namespace.c:2652 gram.y:13455 gram.y:14824 parser/parse_expr.c:799 parser/parse_target.c:1148 #, c-format msgid "improper qualified name (too many dotted names): %s" msgstr "mauvaise qualification du nom (trop de points entre les noms) : %s" @@ -3918,17 +3688,17 @@ msgstr "mauvaise qualification du nom (trop de points entre les noms) : %s" #: catalog/namespace.c:2783 #, c-format msgid "cannot move objects into or out of temporary schemas" -msgstr "ne peut pas déplacer les objets dans ou à partir des schémas temporaires" +msgstr "ne peut pas déplacer les objets dans ou à partir des schémas temporaires" #: catalog/namespace.c:2789 #, c-format msgid "cannot move objects into or out of TOAST schema" -msgstr "ne peut pas déplacer les objets dans ou à partir des schémas TOAST" +msgstr "ne peut pas déplacer les objets dans ou à partir des schémas TOAST" -#: catalog/namespace.c:2862 commands/schemacmds.c:238 commands/schemacmds.c:317 commands/tablecmds.c:740 +#: catalog/namespace.c:2862 commands/schemacmds.c:238 commands/schemacmds.c:317 commands/tablecmds.c:741 #, c-format msgid "schema \"%s\" does not exist" -msgstr "le schéma « %s » n'existe pas" +msgstr "le schéma « %s » n'existe pas" #: catalog/namespace.c:2893 #, c-format @@ -3938,485 +3708,485 @@ msgstr "nom de relation incorrecte (trop de points entre les noms) : %s" #: catalog/namespace.c:3403 #, c-format msgid "collation \"%s\" for encoding \"%s\" does not exist" -msgstr "le collationnement « %s » pour l'encodage « %s » n'existe pas" +msgstr "le collationnement « %s » pour l'encodage « %s » n'existe pas" #: catalog/namespace.c:3458 #, c-format msgid "conversion \"%s\" does not exist" -msgstr "la conversion « %s » n'existe pas" +msgstr "la conversion « %s » n'existe pas" #: catalog/namespace.c:3666 #, c-format msgid "permission denied to create temporary tables in database \"%s\"" -msgstr "droit refusé pour la création de tables temporaires dans la base de données « %s »" +msgstr "droit refusé pour la création de tables temporaires dans la base de données « %s »" #: catalog/namespace.c:3682 #, c-format msgid "cannot create temporary tables during recovery" -msgstr "ne peut pas créer des tables temporaires lors de la restauration" +msgstr "ne peut pas créer des tables temporaires lors de la restauration" #: catalog/namespace.c:3688 #, c-format -msgid "cannot create temporary tables in parallel mode" -msgstr "ne peut pas créer des tables temporaires dans le mode de parallélisation" +msgid "cannot create temporary tables during a parallel operation" +msgstr "ne peut pas créer des tables temporaires pendant une opération parallèle" -#: catalog/namespace.c:3932 commands/tablespace.c:1173 commands/variable.c:63 utils/misc/guc.c:9859 +#: catalog/namespace.c:3932 commands/tablespace.c:1173 commands/variable.c:63 utils/misc/guc.c:9875 #, c-format msgid "List syntax is invalid." msgstr "La syntaxe de la liste est invalide." #: catalog/objectaddress.c:1065 msgid "access method name cannot be qualified" -msgstr "le nom de la méthode d'accès ne peut pas être qualifiée" +msgstr "le nom de la méthode d'accès ne peut pas être qualifiée" #: catalog/objectaddress.c:1068 msgid "database name cannot be qualified" -msgstr "le nom de la base de donnée ne peut être qualifié" +msgstr "le nom de la base de donnée ne peut être qualifié" -#: catalog/objectaddress.c:1071 commands/extension.c:2506 +#: catalog/objectaddress.c:1071 commands/extension.c:2510 #, c-format msgid "extension name cannot be qualified" -msgstr "le nom de l'extension ne peut pas être qualifié" +msgstr "le nom de l'extension ne peut pas être qualifié" #: catalog/objectaddress.c:1074 msgid "tablespace name cannot be qualified" -msgstr "le nom du tablespace ne peut pas être qualifié" +msgstr "le nom du tablespace ne peut pas être qualifié" #: catalog/objectaddress.c:1077 msgid "role name cannot be qualified" -msgstr "le nom du rôle ne peut pas être qualifié" +msgstr "le nom du rôle ne peut pas être qualifié" #: catalog/objectaddress.c:1080 msgid "schema name cannot be qualified" -msgstr "le nom du schéma ne peut pas être qualifié" +msgstr "le nom du schéma ne peut pas être qualifié" #: catalog/objectaddress.c:1083 msgid "language name cannot be qualified" -msgstr "le nom du langage ne peut pas être qualifié" +msgstr "le nom du langage ne peut pas être qualifié" #: catalog/objectaddress.c:1086 msgid "foreign-data wrapper name cannot be qualified" -msgstr "le nom du wrapper de données distantes ne peut pas être qualifié" +msgstr "le nom du wrapper de données distantes ne peut pas être qualifié" #: catalog/objectaddress.c:1089 msgid "server name cannot be qualified" -msgstr "le nom du serveur ne peut pas être qualifié" +msgstr "le nom du serveur ne peut pas être qualifié" #: catalog/objectaddress.c:1092 msgid "event trigger name cannot be qualified" -msgstr "le nom du trigger sur événement ne peut pas être qualifié" +msgstr "le nom du trigger sur événement ne peut pas être qualifié" -#: catalog/objectaddress.c:1210 commands/lockcmds.c:94 commands/policy.c:94 commands/policy.c:382 commands/policy.c:471 commands/tablecmds.c:217 commands/tablecmds.c:1299 commands/tablecmds.c:4346 commands/tablecmds.c:7977 +#: catalog/objectaddress.c:1210 commands/lockcmds.c:94 commands/policy.c:94 commands/policy.c:382 commands/policy.c:471 commands/tablecmds.c:218 commands/tablecmds.c:1300 commands/tablecmds.c:4347 commands/tablecmds.c:8018 #, c-format msgid "\"%s\" is not a table" -msgstr "« %s » n'est pas une table" +msgstr "« %s » n'est pas une table" -#: catalog/objectaddress.c:1217 commands/tablecmds.c:229 commands/tablecmds.c:4376 commands/tablecmds.c:12012 commands/view.c:143 +#: catalog/objectaddress.c:1217 commands/tablecmds.c:230 commands/tablecmds.c:4377 commands/tablecmds.c:12160 commands/view.c:141 #, c-format msgid "\"%s\" is not a view" -msgstr "« %s » n'est pas une vue" +msgstr "« %s » n'est pas une vue" -#: catalog/objectaddress.c:1224 commands/matview.c:174 commands/tablecmds.c:235 commands/tablecmds.c:12017 +#: catalog/objectaddress.c:1224 commands/matview.c:174 commands/tablecmds.c:236 commands/tablecmds.c:12165 #, c-format msgid "\"%s\" is not a materialized view" -msgstr "« %s » n'est pas une vue matérialisée" +msgstr "« %s » n'est pas une vue matérialisée" -#: catalog/objectaddress.c:1231 commands/tablecmds.c:253 commands/tablecmds.c:4379 commands/tablecmds.c:12022 +#: catalog/objectaddress.c:1231 commands/tablecmds.c:254 commands/tablecmds.c:4380 commands/tablecmds.c:12170 #, c-format msgid "\"%s\" is not a foreign table" -msgstr "« %s » n'est pas une table distante" +msgstr "« %s » n'est pas une table distante" #: catalog/objectaddress.c:1376 catalog/objectaddress.c:1429 #, c-format msgid "column name must be qualified" -msgstr "le nom de la colonne doit être qualifié" +msgstr "le nom de la colonne doit être qualifié" #: catalog/objectaddress.c:1472 #, c-format msgid "default value for column \"%s\" of relation \"%s\" does not exist" -msgstr "la valeur par défaut de la colonne « %s » de la relation « %s » n'existe pas" +msgstr "la valeur par défaut de la colonne « %s » de la relation « %s » n'existe pas" -#: catalog/objectaddress.c:1512 commands/functioncmds.c:128 commands/tablecmds.c:245 commands/typecmds.c:3214 parser/parse_type.c:226 parser/parse_type.c:255 parser/parse_type.c:795 utils/adt/acl.c:4374 utils/adt/regproc.c:1225 +#: catalog/objectaddress.c:1512 commands/functioncmds.c:128 commands/tablecmds.c:246 commands/typecmds.c:3214 parser/parse_type.c:226 parser/parse_type.c:255 parser/parse_type.c:795 utils/adt/acl.c:4374 utils/adt/regproc.c:1226 #, c-format msgid "type \"%s\" does not exist" -msgstr "le type « %s » n'existe pas" +msgstr "le type « %s » n'existe pas" #: catalog/objectaddress.c:1629 #, c-format msgid "operator %d (%s, %s) of %s does not exist" -msgstr "l'opérateur %d (%s, %s) de %s n'existe pas" +msgstr "l'opérateur %d (%s, %s) de %s n'existe pas" -#: catalog/objectaddress.c:1658 +#: catalog/objectaddress.c:1660 #, c-format msgid "function %d (%s, %s) of %s does not exist" msgstr "la fonction %d (%s, %s) de %s n'existe pas" -#: catalog/objectaddress.c:1707 catalog/objectaddress.c:1733 +#: catalog/objectaddress.c:1711 catalog/objectaddress.c:1737 #, c-format msgid "user mapping for user \"%s\" on server \"%s\" does not exist" -msgstr "la correspondance pour l'utilisateur « %s » sur le serveur « %s » n'existe pas" +msgstr "la correspondance pour l'utilisateur « %s » sur le serveur « %s » n'existe pas" -#: catalog/objectaddress.c:1722 commands/foreigncmds.c:430 commands/foreigncmds.c:997 commands/foreigncmds.c:1359 foreign/foreign.c:692 +#: catalog/objectaddress.c:1726 commands/foreigncmds.c:430 commands/foreigncmds.c:997 commands/foreigncmds.c:1359 foreign/foreign.c:692 #, c-format msgid "server \"%s\" does not exist" -msgstr "le serveur « %s » n'existe pas" +msgstr "le serveur « %s » n'existe pas" -#: catalog/objectaddress.c:1794 +#: catalog/objectaddress.c:1798 #, c-format msgid "unrecognized default ACL object type %c" -msgstr "type d'objet de droits par défaut non reconnu %c" +msgstr "type d'objet de droits par défaut non reconnu %c" -#: catalog/objectaddress.c:1795 +#: catalog/objectaddress.c:1799 #, c-format msgid "Valid object types are \"r\", \"S\", \"f\", and \"T\"." -msgstr "Les types d'objet valides sont « r », « S », « f » et « T »." +msgstr "Les types d'objet valides sont « r », « S », « f » et « T »." -#: catalog/objectaddress.c:1841 +#: catalog/objectaddress.c:1845 #, c-format msgid "default ACL for user \"%s\" in schema \"%s\" on %s does not exist" -msgstr "le droit par défaut pour l'utilisateur « % s» dans le schéma « %s » de %s n'existe pas" +msgstr "le droit par défaut pour l'utilisateur « % s» dans le schéma « %s » de %s n'existe pas" -#: catalog/objectaddress.c:1846 +#: catalog/objectaddress.c:1850 #, c-format msgid "default ACL for user \"%s\" on %s does not exist" -msgstr "le droit par défaut pour l'utilisateur « %s » sur %s n'existe pas" +msgstr "le droit par défaut pour l'utilisateur « %s » sur %s n'existe pas" -#: catalog/objectaddress.c:1873 catalog/objectaddress.c:1929 catalog/objectaddress.c:1984 +#: catalog/objectaddress.c:1877 catalog/objectaddress.c:1933 catalog/objectaddress.c:1988 #, c-format msgid "name or argument lists may not contain nulls" msgstr "le nom ou les listes d'arguments ne peuvent pas contenir de valeurs NULL" -#: catalog/objectaddress.c:1905 +#: catalog/objectaddress.c:1909 #, c-format msgid "unsupported object type \"%s\"" -msgstr "type d'objet « %s » non supporté" +msgstr "type d'objet « %s » non supporté" -#: catalog/objectaddress.c:1925 catalog/objectaddress.c:1943 +#: catalog/objectaddress.c:1929 catalog/objectaddress.c:1947 #, c-format msgid "name list length must be exactly %d" -msgstr "la liste de nom doit être exactement de longueur %d" +msgstr "la liste de nom doit être exactement de longueur %d" -#: catalog/objectaddress.c:1947 +#: catalog/objectaddress.c:1951 #, c-format msgid "large object OID may not be null" -msgstr "l'OID du Large Object peut ne pas être NULL" +msgstr "l'OID du Large Object peut ne pas être NULL" -#: catalog/objectaddress.c:1956 catalog/objectaddress.c:2016 catalog/objectaddress.c:2023 +#: catalog/objectaddress.c:1960 catalog/objectaddress.c:2020 catalog/objectaddress.c:2027 #, c-format msgid "name list length must be at least %d" -msgstr "la longueur de la liste de nom doit au moins être %d" +msgstr "la longueur de la liste de nom doit au moins être %d" -#: catalog/objectaddress.c:2009 catalog/objectaddress.c:2029 +#: catalog/objectaddress.c:2013 catalog/objectaddress.c:2033 #, c-format msgid "argument list length must be exactly %d" -msgstr "la longueur de la liste d'arguments doit être %d exactement" +msgstr "la longueur de la liste d'arguments doit être %d exactement" -#: catalog/objectaddress.c:2165 libpq/be-fsstubs.c:350 +#: catalog/objectaddress.c:2169 libpq/be-fsstubs.c:350 #, c-format msgid "must be owner of large object %u" -msgstr "doit être le propriétaire du Large Object %u" +msgstr "doit être le propriétaire du Large Object %u" -#: catalog/objectaddress.c:2180 commands/functioncmds.c:1426 +#: catalog/objectaddress.c:2184 commands/functioncmds.c:1446 #, c-format msgid "must be owner of type %s or type %s" -msgstr "doit être le propriétaire du type %s ou du type %s" +msgstr "doit être le propriétaire du type %s ou du type %s" -#: catalog/objectaddress.c:2220 catalog/objectaddress.c:2237 +#: catalog/objectaddress.c:2224 catalog/objectaddress.c:2241 #, c-format msgid "must be superuser" -msgstr "doit être super-utilisateur" +msgstr "doit être super-utilisateur" -#: catalog/objectaddress.c:2227 +#: catalog/objectaddress.c:2231 #, c-format msgid "must have CREATEROLE privilege" msgstr "doit avoir l'attribut CREATEROLE" -#: catalog/objectaddress.c:2307 +#: catalog/objectaddress.c:2306 #, c-format msgid "unrecognized object type \"%s\"" -msgstr "type d'objet non reconnu « %s »" +msgstr "type d'objet non reconnu « %s »" -#: catalog/objectaddress.c:2502 +#: catalog/objectaddress.c:2501 #, c-format msgid " column %s" msgstr " colonne %s" -#: catalog/objectaddress.c:2508 +#: catalog/objectaddress.c:2507 #, c-format msgid "function %s" msgstr "fonction %s" -#: catalog/objectaddress.c:2513 +#: catalog/objectaddress.c:2512 #, c-format msgid "type %s" msgstr "type %s" -#: catalog/objectaddress.c:2543 +#: catalog/objectaddress.c:2542 #, c-format msgid "cast from %s to %s" msgstr "conversion de %s en %s" -#: catalog/objectaddress.c:2563 +#: catalog/objectaddress.c:2562 #, c-format msgid "collation %s" msgstr "collationnement %s" -#: catalog/objectaddress.c:2587 +#: catalog/objectaddress.c:2586 #, c-format msgid "constraint %s on %s" msgstr "contrainte %s sur %s" -#: catalog/objectaddress.c:2593 +#: catalog/objectaddress.c:2592 #, c-format msgid "constraint %s" msgstr "contrainte %s" -#: catalog/objectaddress.c:2610 +#: catalog/objectaddress.c:2609 #, c-format msgid "conversion %s" msgstr "conversion %s" -#: catalog/objectaddress.c:2647 +#: catalog/objectaddress.c:2646 #, c-format msgid "default for %s" -msgstr "valeur par défaut pour %s" +msgstr "valeur par défaut pour %s" -#: catalog/objectaddress.c:2656 +#: catalog/objectaddress.c:2655 #, c-format msgid "language %s" msgstr "langage %s" -#: catalog/objectaddress.c:2661 +#: catalog/objectaddress.c:2660 #, c-format msgid "large object %u" -msgstr "« Large Object » %u" +msgstr "« Large Object » %u" -#: catalog/objectaddress.c:2666 +#: catalog/objectaddress.c:2665 #, c-format msgid "operator %s" -msgstr "opérateur %s" +msgstr "opérateur %s" -#: catalog/objectaddress.c:2698 +#: catalog/objectaddress.c:2697 #, c-format msgid "operator class %s for access method %s" -msgstr "classe d'opérateur %s pour la méthode d'accès %s" +msgstr "classe d'opérateur %s pour la méthode d'accès %s" #. translator: %d is the operator strategy (a number), the #. first two %s's are data type names, the third %s is the #. description of the operator family, and the last %s is the #. textual form of the operator with arguments. -#: catalog/objectaddress.c:2748 +#: catalog/objectaddress.c:2747 #, c-format msgid "operator %d (%s, %s) of %s: %s" -msgstr "opérateur %d (%s, %s) de %s : %s" +msgstr "opérateur %d (%s, %s) de %s : %s" #. translator: %d is the function number, the first two %s's #. are data type names, the third %s is the description of the #. operator family, and the last %s is the textual form of the #. function with arguments. -#: catalog/objectaddress.c:2798 +#: catalog/objectaddress.c:2797 #, c-format msgid "function %d (%s, %s) of %s: %s" msgstr "fonction %d (%s, %s) de %s : %s" -#: catalog/objectaddress.c:2838 +#: catalog/objectaddress.c:2837 #, c-format msgid "rule %s on " -msgstr "règle %s active " +msgstr "règle %s active " -#: catalog/objectaddress.c:2860 +#: catalog/objectaddress.c:2859 #, c-format msgid "transform for %s language %s" msgstr "transformation pour %s langage %s" -#: catalog/objectaddress.c:2894 +#: catalog/objectaddress.c:2893 #, c-format msgid "trigger %s on " msgstr "trigger %s actif " -#: catalog/objectaddress.c:2911 +#: catalog/objectaddress.c:2910 #, c-format msgid "schema %s" -msgstr "schéma %s" +msgstr "schéma %s" -#: catalog/objectaddress.c:2924 +#: catalog/objectaddress.c:2923 #, c-format msgid "text search parser %s" msgstr "analyseur %s de la recherche plein texte" -#: catalog/objectaddress.c:2939 +#: catalog/objectaddress.c:2938 #, c-format msgid "text search dictionary %s" msgstr "dictionnaire %s de la recherche plein texte" -#: catalog/objectaddress.c:2954 +#: catalog/objectaddress.c:2953 #, c-format msgid "text search template %s" -msgstr "modèle %s de la recherche plein texte" +msgstr "modèle %s de la recherche plein texte" -#: catalog/objectaddress.c:2969 +#: catalog/objectaddress.c:2968 #, c-format msgid "text search configuration %s" msgstr "configuration %s de recherche plein texte" -#: catalog/objectaddress.c:2977 +#: catalog/objectaddress.c:2976 #, c-format msgid "role %s" -msgstr "rôle %s" +msgstr "rôle %s" -#: catalog/objectaddress.c:2990 +#: catalog/objectaddress.c:2989 #, c-format msgid "database %s" -msgstr "base de données %s" +msgstr "base de données %s" -#: catalog/objectaddress.c:3002 +#: catalog/objectaddress.c:3001 #, c-format msgid "tablespace %s" msgstr "tablespace %s" -#: catalog/objectaddress.c:3011 +#: catalog/objectaddress.c:3010 #, c-format msgid "foreign-data wrapper %s" -msgstr "wrapper de données distantes %s" +msgstr "wrapper de données distantes %s" -#: catalog/objectaddress.c:3020 +#: catalog/objectaddress.c:3019 #, c-format msgid "server %s" msgstr "serveur %s" -#: catalog/objectaddress.c:3048 +#: catalog/objectaddress.c:3047 #, c-format msgid "user mapping for %s on server %s" msgstr "correspondance utilisateur pour %s sur le serveur %s" -#: catalog/objectaddress.c:3083 +#: catalog/objectaddress.c:3082 #, c-format msgid "default privileges on new relations belonging to role %s" -msgstr "droits par défaut pour les nouvelles relations appartenant au rôle %s" +msgstr "droits par défaut pour les nouvelles relations appartenant au rôle %s" -#: catalog/objectaddress.c:3088 +#: catalog/objectaddress.c:3087 #, c-format msgid "default privileges on new sequences belonging to role %s" -msgstr "droits par défaut pour les nouvelles séquences appartenant au rôle %s" +msgstr "droits par défaut pour les nouvelles séquences appartenant au rôle %s" -#: catalog/objectaddress.c:3093 +#: catalog/objectaddress.c:3092 #, c-format msgid "default privileges on new functions belonging to role %s" -msgstr "droits par défaut pour les nouvelles fonctions appartenant au rôle %s" +msgstr "droits par défaut pour les nouvelles fonctions appartenant au rôle %s" -#: catalog/objectaddress.c:3098 +#: catalog/objectaddress.c:3097 #, c-format msgid "default privileges on new types belonging to role %s" -msgstr "droits par défaut pour les nouveaux types appartenant au rôle %s" +msgstr "droits par défaut pour les nouveaux types appartenant au rôle %s" -#: catalog/objectaddress.c:3104 +#: catalog/objectaddress.c:3103 #, c-format msgid "default privileges belonging to role %s" -msgstr "droits par défaut appartenant au rôle %s" +msgstr "droits par défaut appartenant au rôle %s" -#: catalog/objectaddress.c:3112 +#: catalog/objectaddress.c:3111 #, c-format msgid " in schema %s" -msgstr " dans le schéma %s" +msgstr " dans le schéma %s" -#: catalog/objectaddress.c:3129 +#: catalog/objectaddress.c:3128 #, c-format msgid "extension %s" msgstr "extension %s" -#: catalog/objectaddress.c:3142 +#: catalog/objectaddress.c:3141 #, c-format msgid "event trigger %s" -msgstr "trigger sur événement %s" +msgstr "trigger sur événement %s" -#: catalog/objectaddress.c:3174 +#: catalog/objectaddress.c:3173 #, c-format msgid "policy %s on " msgstr "politique %s sur " -#: catalog/objectaddress.c:3192 +#: catalog/objectaddress.c:3191 #, c-format msgid "access method %s" -msgstr "méthode d'accès %s" +msgstr "méthode d'accès %s" -#: catalog/objectaddress.c:3252 +#: catalog/objectaddress.c:3251 #, c-format msgid "table %s" msgstr "table %s" -#: catalog/objectaddress.c:3256 +#: catalog/objectaddress.c:3255 #, c-format msgid "index %s" msgstr "index %s" -#: catalog/objectaddress.c:3260 +#: catalog/objectaddress.c:3259 #, c-format msgid "sequence %s" -msgstr "séquence %s" +msgstr "séquence %s" -#: catalog/objectaddress.c:3264 +#: catalog/objectaddress.c:3263 #, c-format msgid "toast table %s" msgstr "table TOAST %s" -#: catalog/objectaddress.c:3268 +#: catalog/objectaddress.c:3267 #, c-format msgid "view %s" msgstr "vue %s" -#: catalog/objectaddress.c:3272 +#: catalog/objectaddress.c:3271 #, c-format msgid "materialized view %s" -msgstr "vue matérialisée %s" +msgstr "vue matérialisée %s" -#: catalog/objectaddress.c:3276 +#: catalog/objectaddress.c:3275 #, c-format msgid "composite type %s" msgstr "type composite %s" -#: catalog/objectaddress.c:3280 +#: catalog/objectaddress.c:3279 #, c-format msgid "foreign table %s" msgstr "table distante %s" -#: catalog/objectaddress.c:3285 +#: catalog/objectaddress.c:3284 #, c-format msgid "relation %s" msgstr "relation %s" -#: catalog/objectaddress.c:3322 +#: catalog/objectaddress.c:3321 #, c-format msgid "operator family %s for access method %s" -msgstr "famille d'opérateur %s pour la méthode d'accès %s" +msgstr "famille d'opérateur %s pour la méthode d'accès %s" #: catalog/pg_aggregate.c:125 #, c-format msgid "aggregates cannot have more than %d argument" msgid_plural "aggregates cannot have more than %d arguments" -msgstr[0] "les agrégats ne peuvent avoir plus de %d argument" -msgstr[1] "les agrégats ne peuvent avoir plus de %d arguments" +msgstr[0] "les agrégats ne peuvent avoir plus de %d argument" +msgstr[1] "les agrégats ne peuvent avoir plus de %d arguments" #: catalog/pg_aggregate.c:148 catalog/pg_aggregate.c:158 #, c-format msgid "cannot determine transition data type" -msgstr "n'a pas pu déterminer le type de données de transition" +msgstr "n'a pas pu déterminer le type de données de transition" #: catalog/pg_aggregate.c:149 catalog/pg_aggregate.c:159 #, c-format msgid "An aggregate using a polymorphic transition type must have at least one polymorphic argument." msgstr "" -"Un agrégat utilisant un type de transition polymorphique doit avoir au moins\n" +"Un agrégat utilisant un type de transition polymorphique doit avoir au moins\n" "un argument polymorphique." #: catalog/pg_aggregate.c:172 #, c-format msgid "a variadic ordered-set aggregate must use VARIADIC type ANY" -msgstr "un agrégat à ensemble trié variadique doit être VARIADIC sur le type ANY" +msgstr "un agrégat à ensemble trié variadique doit être VARIADIC sur le type ANY" #: catalog/pg_aggregate.c:198 #, c-format msgid "a hypothetical-set aggregate must have direct arguments matching its aggregated arguments" -msgstr "un agrégat à ensemble hypothétique doit avoir des arguments directs correspondant aux arguments agrégés" +msgstr "un agrégat à ensemble hypothétique doit avoir des arguments directs correspondant aux arguments agrégés" #: catalog/pg_aggregate.c:245 catalog/pg_aggregate.c:289 #, c-format @@ -4429,22 +4199,22 @@ msgid "must not omit initial value when transition function is strict and transi msgstr "" "ne doit pas omettre la valeur initiale lorsque la fonction de transition est\n" "stricte et que le type de transition n'est pas compatible avec le type en\n" -"entrée" +"entrée" #: catalog/pg_aggregate.c:334 #, c-format msgid "return type of inverse transition function %s is not %s" msgstr "le type de retour de la fonction de transition inverse %s n'est pas %s" -#: catalog/pg_aggregate.c:351 executor/nodeWindowAgg.c:2301 +#: catalog/pg_aggregate.c:351 executor/nodeWindowAgg.c:2334 #, c-format msgid "strictness of aggregate's forward and inverse transition functions must match" -msgstr "la fonction de transition d'agrégat en déplacement ne doit pas renvoyer null" +msgstr "la fonction de transition d'agrégat en déplacement ne doit pas renvoyer null" #: catalog/pg_aggregate.c:395 catalog/pg_aggregate.c:545 #, c-format msgid "final function with extra arguments must not be declared STRICT" -msgstr "la fonction finale avec des arguments supplémentaires ne doit pas être déclarée avec la clause STRICT" +msgstr "la fonction finale avec des arguments supplémentaires ne doit pas être déclarée avec la clause STRICT" #: catalog/pg_aggregate.c:425 #, c-format @@ -4453,52 +4223,52 @@ msgstr "le type de retour de la fonction de d'unification %s n'est pas %s" #: catalog/pg_aggregate.c:436 #, c-format -msgid "combine function with \"%s\" transition type must not be declared STRICT" -msgstr "la fonction d'unification avec le type de transaction «%s » ne doit pas être déclaré STRICT" +msgid "combine function with transition type %s must not be declared STRICT" +msgstr "la fonction combine avec le type de transition %s ne doit pas être déclarée STRICT" #: catalog/pg_aggregate.c:455 #, c-format msgid "return type of serialization function %s is not %s" -msgstr "le type de retour de la fonction de sérialisation %s n'est pas %s" +msgstr "le type de retour de la fonction de sérialisation %s n'est pas %s" #: catalog/pg_aggregate.c:475 #, c-format msgid "return type of deserialization function %s is not %s" -msgstr "le type de retour de la fonction de désérialisation %s n'est pas %s" +msgstr "le type de retour de la fonction de désérialisation %s n'est pas %s" #: catalog/pg_aggregate.c:491 catalog/pg_proc.c:246 catalog/pg_proc.c:253 #, c-format msgid "cannot determine result data type" -msgstr "n'a pas pu déterminer le type de données en résultat" +msgstr "n'a pas pu déterminer le type de données en résultat" #: catalog/pg_aggregate.c:492 #, c-format msgid "An aggregate returning a polymorphic type must have at least one polymorphic argument." msgstr "" -"Un agrégat renvoyant un type polymorphique doit avoir au moins un argument\n" +"Un agrégat renvoyant un type polymorphique doit avoir au moins un argument\n" "de type polymorphique." #: catalog/pg_aggregate.c:504 catalog/pg_proc.c:259 #, c-format msgid "unsafe use of pseudo-type \"internal\"" -msgstr "utilisation non sûre des pseudo-types « INTERNAL »" +msgstr "utilisation non sûre des pseudo-types « INTERNAL »" #: catalog/pg_aggregate.c:505 catalog/pg_proc.c:260 #, c-format msgid "A function returning \"internal\" must have at least one \"internal\" argument." msgstr "" -"Une fonction renvoyant « internal » doit avoir au moins un argument du type\n" -"« internal »." +"Une fonction renvoyant « internal » doit avoir au moins un argument du type\n" +"« internal »." #: catalog/pg_aggregate.c:558 #, c-format msgid "moving-aggregate implementation returns type %s, but plain implementation returns type %s" -msgstr "l'impémentation d'aggrégat glissant retourne le type %s, mais l'implémentation standard retourne le type %s" +msgstr "l'impémentation d'aggrégat glissant retourne le type %s, mais l'implémentation standard retourne le type %s" #: catalog/pg_aggregate.c:569 #, c-format msgid "sort operator can only be specified for single-argument aggregates" -msgstr "l'opérateur de tri peut seulement être indiqué pour des agrégats à un seul argument" +msgstr "l'opérateur de tri peut seulement être indiqué pour des agrégats à un seul argument" #: catalog/pg_aggregate.c:812 commands/typecmds.c:1705 commands/typecmds.c:1756 commands/typecmds.c:1787 commands/typecmds.c:1810 commands/typecmds.c:1831 commands/typecmds.c:1858 commands/typecmds.c:1885 commands/typecmds.c:1962 commands/typecmds.c:2004 parser/parse_func.c:364 parser/parse_func.c:393 parser/parse_func.c:418 parser/parse_func.c:432 parser/parse_func.c:507 parser/parse_func.c:518 parser/parse_func.c:1923 #, c-format @@ -4513,167 +4283,167 @@ msgstr "la fonction %s renvoie un ensemble" #: catalog/pg_aggregate.c:833 #, c-format msgid "function %s must accept VARIADIC ANY to be used in this aggregate" -msgstr "la fonction %s doit accepter VARIADIC ANY pour être utilisé dans cet agrégat" +msgstr "la fonction %s doit accepter VARIADIC ANY pour être utilisé dans cet agrégat" #: catalog/pg_aggregate.c:857 #, c-format msgid "function %s requires run-time type coercion" -msgstr "la fonction %s requiert une coercion sur le type à l'exécution" +msgstr "la fonction %s requiert une coercion sur le type à l'exécution" #: catalog/pg_collation.c:77 #, c-format msgid "collation \"%s\" for encoding \"%s\" already exists" -msgstr "le collationnement « %s » pour l'encodage « %s » existe déjà" +msgstr "le collationnement « %s » pour l'encodage « %s » existe déjà" #: catalog/pg_collation.c:91 #, c-format msgid "collation \"%s\" already exists" -msgstr "le collationnement « %s » existe déjà" +msgstr "le collationnement « %s » existe déjà" #: catalog/pg_constraint.c:663 #, c-format msgid "constraint \"%s\" for domain %s already exists" -msgstr "la contrainte « %s » du domaine %s existe déjà" +msgstr "la contrainte « %s » du domaine %s existe déjà" #: catalog/pg_constraint.c:797 #, c-format msgid "table \"%s\" has multiple constraints named \"%s\"" -msgstr "la table « %s » a de nombreuses contraintes nommées « %s »" +msgstr "la table « %s » a de nombreuses contraintes nommées « %s »" #: catalog/pg_constraint.c:809 #, c-format msgid "constraint \"%s\" for table \"%s\" does not exist" -msgstr "la contrainte « %s » de la table « %s » n'existe pas" +msgstr "la contrainte « %s » de la table « %s » n'existe pas" #: catalog/pg_constraint.c:855 #, c-format msgid "domain \"%s\" has multiple constraints named \"%s\"" -msgstr "le domaine « %s » a plusieurs contraintes nommées « %s »" +msgstr "le domaine « %s » a plusieurs contraintes nommées « %s »" #: catalog/pg_constraint.c:867 #, c-format msgid "constraint \"%s\" for domain \"%s\" does not exist" -msgstr "la contrainte « %s » du domaine « %s » n'existe pas" +msgstr "la contrainte « %s » du domaine « %s » n'existe pas" #: catalog/pg_conversion.c:66 #, c-format msgid "conversion \"%s\" already exists" -msgstr "la conversion « %s » existe déjà" +msgstr "la conversion « %s » existe déjà" #: catalog/pg_conversion.c:79 #, c-format msgid "default conversion for %s to %s already exists" -msgstr "la conversion par défaut de %s vers %s existe déjà" +msgstr "la conversion par défaut de %s vers %s existe déjà" -#: catalog/pg_depend.c:165 commands/extension.c:3028 +#: catalog/pg_depend.c:165 commands/extension.c:3032 #, c-format msgid "%s is already a member of extension \"%s\"" -msgstr "%s est déjà un membre de l'extension « %s »" +msgstr "%s est déjà un membre de l'extension « %s »" #: catalog/pg_depend.c:324 #, c-format msgid "cannot remove dependency on %s because it is a system object" -msgstr "ne peut pas supprimer la dépendance sur %s car il s'agit d'un objet système" +msgstr "ne peut pas supprimer la dépendance sur %s car il s'agit d'un objet système" #: catalog/pg_enum.c:115 catalog/pg_enum.c:202 #, c-format msgid "invalid enum label \"%s\"" -msgstr "nom du label enum « %s » invalide" +msgstr "nom du label enum « %s » invalide" #: catalog/pg_enum.c:116 catalog/pg_enum.c:203 #, c-format msgid "Labels must be %d characters or less." -msgstr "Les labels doivent avoir au plus %d caractères" +msgstr "Les labels doivent avoir au plus %d caractères" #: catalog/pg_enum.c:231 #, c-format msgid "enum label \"%s\" already exists, skipping" -msgstr "le label « %s » existe déjà, poursuite du traitement" +msgstr "le label « %s » existe déjà, poursuite du traitement" #: catalog/pg_enum.c:238 #, c-format msgid "enum label \"%s\" already exists" -msgstr "le label « %s » existe déjà" +msgstr "le label « %s » existe déjà" #: catalog/pg_enum.c:293 #, c-format msgid "\"%s\" is not an existing enum label" -msgstr "« %s » n'est pas un label enum existant" +msgstr "« %s » n'est pas un label enum existant" #: catalog/pg_enum.c:349 #, c-format msgid "pg_enum OID value not set when in binary upgrade mode" -msgstr "OID de pg_enum non configuré en mode de mise à jour binaire" +msgstr "OID de pg_enum non configuré en mode de mise à jour binaire" #: catalog/pg_enum.c:359 #, c-format msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade" -msgstr "ALTER TYPE ADD BEFORE/AFTER est incompatible avec la mise à jour binaire" +msgstr "ALTER TYPE ADD BEFORE/AFTER est incompatible avec la mise à jour binaire" #: catalog/pg_namespace.c:61 commands/schemacmds.c:246 #, c-format msgid "schema \"%s\" already exists" -msgstr "le schéma « %s » existe déjà" +msgstr "le schéma « %s » existe déjà" #: catalog/pg_operator.c:219 catalog/pg_operator.c:360 #, c-format msgid "\"%s\" is not a valid operator name" -msgstr "« %s » n'est pas un nom d'opérateur valide" +msgstr "« %s » n'est pas un nom d'opérateur valide" #: catalog/pg_operator.c:369 #, c-format msgid "only binary operators can have commutators" -msgstr "seuls les opérateurs binaires peuvent avoir des commutateurs" +msgstr "seuls les opérateurs binaires peuvent avoir des commutateurs" #: catalog/pg_operator.c:373 commands/operatorcmds.c:485 #, c-format msgid "only binary operators can have join selectivity" -msgstr "seuls les opérateurs binaires peuvent avoir une sélectivité des jointures" +msgstr "seuls les opérateurs binaires peuvent avoir une sélectivité des jointures" #: catalog/pg_operator.c:377 #, c-format msgid "only binary operators can merge join" -msgstr "seuls les opérateurs binaires peuvent exécuter des jointures MERGE" +msgstr "seuls les opérateurs binaires peuvent exécuter des jointures MERGE" #: catalog/pg_operator.c:381 #, c-format msgid "only binary operators can hash" -msgstr "seuls les opérateurs binaires ont du hachage" +msgstr "seuls les opérateurs binaires ont du hachage" #: catalog/pg_operator.c:392 #, c-format msgid "only boolean operators can have negators" -msgstr "seuls les opérateurs booléens peuvent avoir des négations" +msgstr "seuls les opérateurs booléens peuvent avoir des négations" #: catalog/pg_operator.c:396 commands/operatorcmds.c:493 #, c-format msgid "only boolean operators can have restriction selectivity" -msgstr "seuls les opérateurs booléens peuvent avoir une sélectivité des restrictions" +msgstr "seuls les opérateurs booléens peuvent avoir une sélectivité des restrictions" #: catalog/pg_operator.c:400 commands/operatorcmds.c:497 #, c-format msgid "only boolean operators can have join selectivity" -msgstr "seuls les opérateurs booléens peuvent avoir une sélectivité des jointures" +msgstr "seuls les opérateurs booléens peuvent avoir une sélectivité des jointures" #: catalog/pg_operator.c:404 #, c-format msgid "only boolean operators can merge join" -msgstr "seuls les opérateurs booléens peuvent exécuter des jointures MERGE" +msgstr "seuls les opérateurs booléens peuvent exécuter des jointures MERGE" #: catalog/pg_operator.c:408 #, c-format msgid "only boolean operators can hash" -msgstr "seuls les opérateurs booléens peuvent hacher" +msgstr "seuls les opérateurs booléens peuvent hacher" #: catalog/pg_operator.c:420 #, c-format msgid "operator %s already exists" -msgstr "l'opérateur %s existe déjà" +msgstr "l'opérateur %s existe déjà" #: catalog/pg_operator.c:617 #, c-format msgid "operator cannot be its own negator or sort operator" -msgstr "l'opérateur ne peut pas être son propre opérateur de négation ou de tri" +msgstr "l'opérateur ne peut pas être son propre opérateur de négation ou de tri" #: catalog/pg_proc.c:134 parser/parse_func.c:1947 parser/parse_func.c:1987 #, c-format @@ -4692,17 +4462,17 @@ msgstr "" #: catalog/pg_proc.c:254 #, c-format msgid "A function returning \"anyrange\" must have at least one \"anyrange\" argument." -msgstr "Une fonction renvoyant « anyrange » doit avoir au moins un argument du type « anyrange »." +msgstr "Une fonction renvoyant « anyrange » doit avoir au moins un argument du type « anyrange »." #: catalog/pg_proc.c:272 #, c-format msgid "\"%s\" is already an attribute of type %s" -msgstr "« %s » est déjà un attribut du type %s" +msgstr "« %s » est déjà un attribut du type %s" #: catalog/pg_proc.c:403 #, c-format msgid "function \"%s\" already exists with same argument types" -msgstr "la fonction « %s » existe déjà avec des types d'arguments identiques" +msgstr "la fonction « %s » existe déjà avec des types d'arguments identiques" #: catalog/pg_proc.c:417 catalog/pg_proc.c:440 #, c-format @@ -4717,51 +4487,51 @@ msgstr "Utilisez tout d'abord DROP FUNCTION %s." #: catalog/pg_proc.c:441 #, c-format msgid "Row type defined by OUT parameters is different." -msgstr "Le type de ligne défini par les paramètres OUT est différent." +msgstr "Le type de ligne défini par les paramètres OUT est différent." #: catalog/pg_proc.c:483 #, c-format msgid "cannot change name of input parameter \"%s\"" -msgstr "ne peut pas modifier le nom du paramètre en entrée « %s »" +msgstr "ne peut pas modifier le nom du paramètre en entrée « %s »" #: catalog/pg_proc.c:508 #, c-format msgid "cannot remove parameter defaults from existing function" msgstr "" -"ne peut pas supprimer les valeurs par défaut des paramètres de la\n" +"ne peut pas supprimer les valeurs par défaut des paramètres de la\n" "fonction existante" #: catalog/pg_proc.c:535 #, c-format msgid "cannot change data type of existing parameter default value" msgstr "" -"ne peut pas modifier le type de données d'un paramètre avec une valeur\n" -"par défaut" +"ne peut pas modifier le type de données d'un paramètre avec une valeur\n" +"par défaut" #: catalog/pg_proc.c:548 #, c-format msgid "function \"%s\" is an aggregate function" -msgstr "la fonction « %s » est une fonction d'agrégat" +msgstr "la fonction « %s » est une fonction d'agrégat" #: catalog/pg_proc.c:553 #, c-format msgid "function \"%s\" is not an aggregate function" -msgstr "la fonction « %s » n'est pas une fonction d'agrégat" +msgstr "la fonction « %s » n'est pas une fonction d'agrégat" #: catalog/pg_proc.c:561 #, c-format msgid "function \"%s\" is a window function" -msgstr "la fonction « %s » est une fonction window" +msgstr "la fonction « %s » est une fonction window" #: catalog/pg_proc.c:566 #, c-format msgid "function \"%s\" is not a window function" -msgstr "la fonction « %s » n'est pas une fonction window" +msgstr "la fonction « %s » n'est pas une fonction window" #: catalog/pg_proc.c:774 #, c-format msgid "there is no built-in function named \"%s\"" -msgstr "il n'existe pas de fonction intégrée nommée « %s »" +msgstr "il n'existe pas de fonction intégrée nommée « %s »" #: catalog/pg_proc.c:872 #, c-format @@ -4773,10 +4543,10 @@ msgstr "les fonctions SQL ne peuvent pas renvoyer un type %s" msgid "SQL functions cannot have arguments of type %s" msgstr "les fonctions SQL ne peuvent avoir d'arguments du type %s" -#: catalog/pg_proc.c:973 executor/functions.c:1422 +#: catalog/pg_proc.c:973 executor/functions.c:1431 #, c-format msgid "SQL function \"%s\"" -msgstr "Fonction SQL « %s »" +msgstr "Fonction SQL « %s »" #: catalog/pg_shdepend.c:694 #, c-format @@ -4788,37 +4558,37 @@ msgid_plural "" "and objects in %d other databases (see server log for list)" msgstr[0] "" "\n" -"et des objets dans %d autre base de données (voir le journal applicatif du\n" +"et des objets dans %d autre base de données (voir le journal applicatif du\n" "serveur pour une liste)" msgstr[1] "" "\n" -"et des objets dans %d autres bases de données (voir le journal applicatif du\n" +"et des objets dans %d autres bases de données (voir le journal applicatif du\n" "serveur pour une liste)" #: catalog/pg_shdepend.c:1006 #, c-format msgid "role %u was concurrently dropped" -msgstr "le rôle %u a été supprimé simultanément" +msgstr "le rôle %u a été supprimé simultanément" #: catalog/pg_shdepend.c:1025 #, c-format msgid "tablespace %u was concurrently dropped" -msgstr "le tablespace %u a été supprimé simultanément" +msgstr "le tablespace %u a été supprimé simultanément" #: catalog/pg_shdepend.c:1040 #, c-format msgid "database %u was concurrently dropped" -msgstr "la base de données %u a été supprimé simultanément" +msgstr "la base de données %u a été supprimé simultanément" #: catalog/pg_shdepend.c:1085 #, c-format msgid "owner of %s" -msgstr "propriétaire de %s" +msgstr "propriétaire de %s" #: catalog/pg_shdepend.c:1087 #, c-format msgid "privileges for %s" -msgstr "droits pour « %s »" +msgstr "droits pour « %s »" #: catalog/pg_shdepend.c:1089 #, c-format @@ -4837,20 +4607,20 @@ msgstr[1] "%d objets dans %s" #, c-format msgid "cannot drop objects owned by %s because they are required by the database system" msgstr "" -"n'a pas pu supprimer les objets appartenant à %s car ils sont nécessaires au\n" -"système de bases de données" +"n'a pas pu supprimer les objets appartenant à %s car ils sont nécessaires au\n" +"système de bases de données" #: catalog/pg_shdepend.c:1323 #, c-format msgid "cannot reassign ownership of objects owned by %s because they are required by the database system" msgstr "" -"ne peut pas réaffecter les objets appartenant à %s car ils sont nécessaires au\n" -"système de bases de données" +"ne peut pas réaffecter les objets appartenant à %s car ils sont nécessaires au\n" +"système de bases de données" #: catalog/pg_type.c:136 catalog/pg_type.c:454 #, c-format msgid "pg_type OID value not set when in binary upgrade mode" -msgstr "OID de pg_type non configuré en mode de mise à jour binaire" +msgstr "OID de pg_type non configuré en mode de mise à jour binaire" #: catalog/pg_type.c:253 #, c-format @@ -4860,209 +4630,209 @@ msgstr "taille interne de type invalide %d" #: catalog/pg_type.c:269 catalog/pg_type.c:277 catalog/pg_type.c:285 catalog/pg_type.c:294 #, c-format msgid "alignment \"%c\" is invalid for passed-by-value type of size %d" -msgstr "l'alignement « %c » est invalide pour le type passé par valeur de taille %d" +msgstr "l'alignement « %c » est invalide pour le type passé par valeur de taille %d" #: catalog/pg_type.c:301 #, c-format msgid "internal size %d is invalid for passed-by-value type" -msgstr "la taille interne %d est invalide pour le type passé par valeur" +msgstr "la taille interne %d est invalide pour le type passé par valeur" #: catalog/pg_type.c:310 catalog/pg_type.c:316 #, c-format msgid "alignment \"%c\" is invalid for variable-length type" -msgstr "l'alignement « %c » est invalide pour le type de longueur variable" +msgstr "l'alignement « %c » est invalide pour le type de longueur variable" #: catalog/pg_type.c:324 #, c-format msgid "fixed-size types must have storage PLAIN" msgstr "les types de taille fixe doivent avoir un stockage de base" -#: catalog/pg_type.c:789 +#: catalog/pg_type.c:809 #, c-format msgid "could not form array type name for type \"%s\"" -msgstr "n'a pas pu former le nom du type array pour le type de données %s" +msgstr "n'a pas pu former le nom du type array pour le type de données %s" -#: catalog/toasting.c:105 commands/indexcmds.c:389 commands/tablecmds.c:4358 commands/tablecmds.c:11900 +#: catalog/toasting.c:105 commands/indexcmds.c:389 commands/tablecmds.c:4359 commands/tablecmds.c:12048 #, c-format msgid "\"%s\" is not a table or materialized view" -msgstr "« %s » n'est pas une table ou une vue matérialisée" +msgstr "« %s » n'est pas une table ou une vue matérialisée" #: catalog/toasting.c:158 #, c-format msgid "shared tables cannot be toasted after initdb" msgstr "" -"les tables partagées ne peuvent pas avoir une table TOAST après la commande\n" +"les tables partagées ne peuvent pas avoir une table TOAST après la commande\n" "initdb" #: commands/aggregatecmds.c:159 #, c-format msgid "only ordered-set aggregates can be hypothetical" -msgstr "seuls les agrégats à ensemble ordonné peuvent être hypothétiques" +msgstr "seuls les agrégats à ensemble ordonné peuvent être hypothétiques" #: commands/aggregatecmds.c:184 #, c-format msgid "aggregate attribute \"%s\" not recognized" -msgstr "l'attribut de l'agrégat « %s » n'est pas reconnu" +msgstr "l'attribut de l'agrégat « %s » n'est pas reconnu" #: commands/aggregatecmds.c:194 #, c-format msgid "aggregate stype must be specified" -msgstr "le type source de l'agrégat doit être spécifié" +msgstr "le type source de l'agrégat doit être spécifié" #: commands/aggregatecmds.c:198 #, c-format msgid "aggregate sfunc must be specified" -msgstr "la fonction source de l'agrégat doit être spécifiée" +msgstr "la fonction source de l'agrégat doit être spécifiée" #: commands/aggregatecmds.c:210 #, c-format msgid "aggregate msfunc must be specified when mstype is specified" -msgstr "la fonction msfunc de l'agrégat doit être spécifiée quand mstype est spécifié" +msgstr "la fonction msfunc de l'agrégat doit être spécifiée quand mstype est spécifié" #: commands/aggregatecmds.c:214 #, c-format msgid "aggregate minvfunc must be specified when mstype is specified" -msgstr "la fonction minvfunc de l'agrégat doit être spécifiée quand mstype est spécifié" +msgstr "la fonction minvfunc de l'agrégat doit être spécifiée quand mstype est spécifié" #: commands/aggregatecmds.c:221 #, c-format msgid "aggregate msfunc must not be specified without mstype" -msgstr "la fonction msfunc de l'agrégat ne doit pas être spécifiée sans mstype" +msgstr "la fonction msfunc de l'agrégat ne doit pas être spécifiée sans mstype" #: commands/aggregatecmds.c:225 #, c-format msgid "aggregate minvfunc must not be specified without mstype" -msgstr "la fonction minvfunc de l'agrégat ne doit pas être spécifiée sans mstype" +msgstr "la fonction minvfunc de l'agrégat ne doit pas être spécifiée sans mstype" #: commands/aggregatecmds.c:229 #, c-format msgid "aggregate mfinalfunc must not be specified without mstype" -msgstr "la fonction mfinalfunc de l'agrégat ne doit pas être spécifiée sans mstype" +msgstr "la fonction mfinalfunc de l'agrégat ne doit pas être spécifiée sans mstype" #: commands/aggregatecmds.c:233 #, c-format msgid "aggregate msspace must not be specified without mstype" -msgstr "la fonction msspace de l'agrégat ne doit pas être spécifiée sans mstype" +msgstr "la fonction msspace de l'agrégat ne doit pas être spécifiée sans mstype" #: commands/aggregatecmds.c:237 #, c-format msgid "aggregate minitcond must not be specified without mstype" -msgstr "la fonction minitcond de l'agrégat ne doit pas être spécifiée sans mstype" +msgstr "la fonction minitcond de l'agrégat ne doit pas être spécifiée sans mstype" #: commands/aggregatecmds.c:257 #, c-format msgid "aggregate input type must be specified" -msgstr "le type de saisie de l'agrégat doit être précisé" +msgstr "le type de saisie de l'agrégat doit être précisé" #: commands/aggregatecmds.c:287 #, c-format msgid "basetype is redundant with aggregate input type specification" -msgstr "le type de base est redondant avec la spécification du type en entrée de l'agrégat" +msgstr "le type de base est redondant avec la spécification du type en entrée de l'agrégat" #: commands/aggregatecmds.c:328 commands/aggregatecmds.c:369 #, c-format msgid "aggregate transition data type cannot be %s" -msgstr "Le type de données de transition de l'agrégat ne peut pas être %s" +msgstr "Le type de données de transition de l'agrégat ne peut pas être %s" #: commands/aggregatecmds.c:340 #, c-format msgid "serialization functions may be specified only when the aggregate transition data type is %s" -msgstr "les fonctions de sérialisation ne peuvent être spécifiées que quand le type de données des transitions d'aggrégat est %s" +msgstr "les fonctions de sérialisation ne peuvent être spécifiées que quand le type de données des transitions d'aggrégat est %s" #: commands/aggregatecmds.c:350 #, c-format msgid "must specify both or neither of serialization and deserialization functions" -msgstr "doit spécifier soit toutes soit aucunes des fonctions de sérialisation et désérialisation" +msgstr "doit spécifier soit toutes soit aucunes des fonctions de sérialisation et désérialisation" #: commands/aggregatecmds.c:415 commands/functioncmds.c:570 #, c-format msgid "parameter \"parallel\" must be SAFE, RESTRICTED, or UNSAFE" -msgstr "le paramètre « parallel » doit être SAFE, RESTRICTED ou UNSAFE" +msgstr "le paramètre « parallel » doit être SAFE, RESTRICTED ou UNSAFE" #: commands/alter.c:80 commands/event_trigger.c:231 #, c-format msgid "event trigger \"%s\" already exists" -msgstr "le trigger sur événement « %s » existe déjà" +msgstr "le trigger sur événement « %s » existe déjà" #: commands/alter.c:83 commands/foreigncmds.c:597 #, c-format msgid "foreign-data wrapper \"%s\" already exists" -msgstr "le wrapper de données distantes « %s » existe déjà" +msgstr "le wrapper de données distantes « %s » existe déjà" #: commands/alter.c:86 commands/foreigncmds.c:890 #, c-format msgid "server \"%s\" already exists" -msgstr "le serveur « %s » existe déjà" +msgstr "le serveur « %s » existe déjà" #: commands/alter.c:89 commands/proclang.c:366 #, c-format msgid "language \"%s\" already exists" -msgstr "le langage « %s » existe déjà" +msgstr "le langage « %s » existe déjà" #: commands/alter.c:112 #, c-format msgid "conversion \"%s\" already exists in schema \"%s\"" -msgstr "la conversion « %s » existe déjà dans le schéma « %s »" +msgstr "la conversion « %s » existe déjà dans le schéma « %s »" #: commands/alter.c:116 #, c-format msgid "text search parser \"%s\" already exists in schema \"%s\"" -msgstr "l'analyseur de recherche plein texte « %s » existe déjà dans le schéma « %s »" +msgstr "l'analyseur de recherche plein texte « %s » existe déjà dans le schéma « %s »" #: commands/alter.c:120 #, c-format msgid "text search dictionary \"%s\" already exists in schema \"%s\"" -msgstr "le dictionnaire de recherche plein texte « %s » existe déjà dans le schéma « %s »" +msgstr "le dictionnaire de recherche plein texte « %s » existe déjà dans le schéma « %s »" #: commands/alter.c:124 #, c-format msgid "text search template \"%s\" already exists in schema \"%s\"" -msgstr "le modèle de recherche plein texte « %s » existe déjà dans le schéma « %s »" +msgstr "le modèle de recherche plein texte « %s » existe déjà dans le schéma « %s »" #: commands/alter.c:128 #, c-format msgid "text search configuration \"%s\" already exists in schema \"%s\"" -msgstr "la configuration de recherche plein texte « %s » existe déjà dans le schéma « %s »" +msgstr "la configuration de recherche plein texte « %s » existe déjà dans le schéma « %s »" #: commands/alter.c:202 #, c-format msgid "must be superuser to rename %s" -msgstr "doit être super-utilisateur pour renommer « %s »" +msgstr "doit être super-utilisateur pour renommer « %s »" #: commands/alter.c:655 #, c-format msgid "must be superuser to set schema of %s" -msgstr "doit être super-utilisateur pour configurer le schéma de %s" +msgstr "doit être super-utilisateur pour configurer le schéma de %s" #: commands/amcmds.c:58 #, c-format msgid "permission denied to create access method \"%s\"" -msgstr "droit refusé pour créer la méthode d'accès « %s »" +msgstr "droit refusé pour créer la méthode d'accès « %s »" #: commands/amcmds.c:60 #, c-format msgid "Must be superuser to create an access method." -msgstr "Doit être super-utilisateur pour créer une méthode d'accès." +msgstr "Doit être super-utilisateur pour créer une méthode d'accès." #: commands/amcmds.c:68 #, c-format msgid "access method \"%s\" already exists" -msgstr "la méthode d'accès « %s » existe déjà" +msgstr "la méthode d'accès « %s » existe déjà" #: commands/amcmds.c:124 #, c-format msgid "must be superuser to drop access methods" -msgstr "doit être super-utilisateur pour supprimer des méthodes d'accès" +msgstr "doit être super-utilisateur pour supprimer des méthodes d'accès" -#: commands/amcmds.c:175 commands/indexcmds.c:164 commands/indexcmds.c:495 commands/opclasscmds.c:365 commands/opclasscmds.c:790 +#: commands/amcmds.c:175 commands/indexcmds.c:164 commands/indexcmds.c:496 commands/opclasscmds.c:365 commands/opclasscmds.c:790 #, c-format msgid "access method \"%s\" does not exist" -msgstr "la méthode d'accès « %s » n'existe pas" +msgstr "la méthode d'accès « %s » n'existe pas" #: commands/amcmds.c:251 #, c-format msgid "handler function is not specified" -msgstr "la fonction handler n'est pas spécifiée" +msgstr "la fonction handler n'est pas spécifiée" #: commands/amcmds.c:263 commands/event_trigger.c:240 commands/foreigncmds.c:489 commands/proclang.c:117 commands/proclang.c:288 commands/trigger.c:441 parser/parse_clause.c:761 #, c-format @@ -5072,79 +4842,79 @@ msgstr "la fonction %s doit renvoyer le type %s" #: commands/analyze.c:145 #, c-format msgid "skipping analyze of \"%s\" --- lock not available" -msgstr "ignore l'analyse de « %s » --- verrou non disponible" +msgstr "ignore l'analyse de « %s » --- verrou non disponible" #: commands/analyze.c:162 #, c-format msgid "skipping \"%s\" --- only superuser can analyze it" -msgstr "ignore « %s » --- seul le super-utilisateur peut l'analyser" +msgstr "ignore « %s » --- seul le super-utilisateur peut l'analyser" #: commands/analyze.c:166 #, c-format msgid "skipping \"%s\" --- only superuser or database owner can analyze it" msgstr "" -"ignore « %s » --- seul le super-utilisateur ou le propriétaire de la base de\n" -"données peut l'analyser" +"ignore « %s » --- seul le super-utilisateur ou le propriétaire de la base de\n" +"données peut l'analyser" #: commands/analyze.c:170 #, c-format msgid "skipping \"%s\" --- only table or database owner can analyze it" msgstr "" -"ignore « %s » --- seul le propriétaire de la table ou de la base de données\n" +"ignore « %s » --- seul le propriétaire de la table ou de la base de données\n" "peut l'analyser" #: commands/analyze.c:230 #, c-format msgid "skipping \"%s\" --- cannot analyze this foreign table" -msgstr "ignore « %s » --- ne peut pas analyser cette table distante" +msgstr "ignore « %s » --- ne peut pas analyser cette table distante" #: commands/analyze.c:241 #, c-format msgid "skipping \"%s\" --- cannot analyze non-tables or special system tables" -msgstr "ignore « %s » --- ne peut pas analyser les objets autres que les tables et les tables système" +msgstr "ignore « %s » --- ne peut pas analyser les objets autres que les tables et les tables système" #: commands/analyze.c:320 #, c-format msgid "analyzing \"%s.%s\" inheritance tree" -msgstr "analyse l'arbre d'héritage « %s.%s »" +msgstr "analyse l'arbre d'héritage « %s.%s »" #: commands/analyze.c:325 #, c-format msgid "analyzing \"%s.%s\"" -msgstr "analyse « %s.%s »" +msgstr "analyse « %s.%s »" #: commands/analyze.c:650 #, c-format msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s" -msgstr "ANALYZE automatique de la table « %s.%s.%s » ; utilisation système : %s" +msgstr "ANALYZE automatique de la table « %s.%s.%s » ; utilisation système : %s" #: commands/analyze.c:1204 #, c-format msgid "\"%s\": scanned %d of %u pages, containing %.0f live rows and %.0f dead rows; %d rows in sample, %.0f estimated total rows" msgstr "" -"« %s » : %d pages parcourues sur %u,\n" -" contenant %.0f lignes à conserver et %.0f lignes à supprimer,\n" -" %d lignes dans l'échantillon,\n" -" %.0f lignes totales estimées" +"« %s » : %d pages parcourues sur %u,\n" +" contenant %.0f lignes à conserver et %.0f lignes à supprimer,\n" +" %d lignes dans l'échantillon,\n" +" %.0f lignes totales estimées" #: commands/analyze.c:1283 #, c-format msgid "skipping analyze of \"%s.%s\" inheritance tree --- this inheritance tree contains no child tables" -msgstr "ignore l'analyse de l'arbre d'héritage « %s.%s » --- cet arbre d'héritage ne contient pas de tables enfants" +msgstr "ignore l'analyse de l'arbre d'héritage « %s.%s » --- cet arbre d'héritage ne contient pas de tables enfants" #: commands/analyze.c:1372 #, c-format msgid "skipping analyze of \"%s.%s\" inheritance tree --- this inheritance tree contains no analyzable child tables" -msgstr "ignore l'analyse de l'arbre d'héritage « %s.%s » --- cet arbre d'héritage ne contient pas de tables enfants analysables" +msgstr "ignore l'analyse de l'arbre d'héritage « %s.%s » --- cet arbre d'héritage ne contient pas de tables enfants analysables" -#: commands/analyze.c:1420 executor/execQual.c:2927 +#: commands/analyze.c:1420 commands/tablecmds.c:8080 executor/execQual.c:2927 msgid "could not convert row type" msgstr "n'a pas pu convertir le type de ligne" #: commands/async.c:555 #, c-format msgid "channel name cannot be empty" -msgstr "le nom du canal ne peut pas être vide" +msgstr "le nom du canal ne peut pas être vide" #: commands/async.c:560 #, c-format @@ -5154,13 +4924,13 @@ msgstr "nom du canal trop long" #: commands/async.c:567 #, c-format msgid "payload string too long" -msgstr "chaîne de charge trop longue" +msgstr "chaîne de charge trop longue" #: commands/async.c:753 #, c-format msgid "cannot PREPARE a transaction that has executed LISTEN, UNLISTEN, or NOTIFY" msgstr "" -"ne peut pas exécuter PREPARE sur une transaction qui a exécuté LISTEN,\n" +"ne peut pas exécuter PREPARE sur une transaction qui a exécuté LISTEN,\n" "UNLISTEN ou NOTIFY" #: commands/async.c:856 @@ -5171,7 +4941,7 @@ msgstr "trop de notifications dans la queue NOTIFY" #: commands/async.c:1486 #, c-format msgid "NOTIFY queue is %.0f%% full" -msgstr "la queue NOTIFY est pleine à %.0f%%" +msgstr "la queue NOTIFY est pleine à %.0f%%" #: commands/async.c:1488 #, c-format @@ -5182,146 +4952,146 @@ msgstr "Le processus serveur de PID %d est parmi ceux qui ont les transactions l #, c-format msgid "The NOTIFY queue cannot be emptied until that process ends its current transaction." msgstr "" -"La queue NOTIFY ne peut pas être vidée jusqu'à ce que le processus finisse\n" +"La queue NOTIFY ne peut pas être vidée jusqu'à ce que le processus finisse\n" "sa transaction en cours." #: commands/cluster.c:129 commands/cluster.c:364 #, c-format msgid "cannot cluster temporary tables of other sessions" -msgstr "ne peut pas exécuter CLUSTER sur les tables temporaires des autres sessions" +msgstr "ne peut pas exécuter CLUSTER sur les tables temporaires des autres sessions" #: commands/cluster.c:159 #, c-format msgid "there is no previously clustered index for table \"%s\"" -msgstr "Il n'existe pas d'index CLUSTER pour la table « %s »" +msgstr "Il n'existe pas d'index CLUSTER pour la table « %s »" -#: commands/cluster.c:173 commands/tablecmds.c:9286 commands/tablecmds.c:11002 +#: commands/cluster.c:173 commands/tablecmds.c:9384 commands/tablecmds.c:11144 #, c-format msgid "index \"%s\" for table \"%s\" does not exist" -msgstr "l'index « %s » pour la table « %s » n'existe pas" +msgstr "l'index « %s » pour la table « %s » n'existe pas" #: commands/cluster.c:353 #, c-format msgid "cannot cluster a shared catalog" -msgstr "ne peut pas exécuter CLUSTER sur un catalogue partagé" +msgstr "ne peut pas exécuter CLUSTER sur un catalogue partagé" #: commands/cluster.c:368 #, c-format msgid "cannot vacuum temporary tables of other sessions" -msgstr "ne peut pas exécuter VACUUM sur les tables temporaires des autres sessions" +msgstr "ne peut pas exécuter VACUUM sur les tables temporaires des autres sessions" -#: commands/cluster.c:431 commands/tablecmds.c:11012 +#: commands/cluster.c:431 commands/tablecmds.c:11154 #, c-format msgid "\"%s\" is not an index for table \"%s\"" -msgstr "« %s » n'est pas un index de la table « %s »" +msgstr "« %s » n'est pas un index de la table « %s »" #: commands/cluster.c:439 #, c-format msgid "cannot cluster on index \"%s\" because access method does not support clustering" msgstr "" -"ne peut pas exécuter CLUSTER sur l'index « %s » car la méthode d'accès de\n" -"l'index ne gère pas cette commande" +"ne peut pas exécuter CLUSTER sur l'index « %s » car la méthode d'accès de\n" +"l'index ne gère pas cette commande" #: commands/cluster.c:451 #, c-format msgid "cannot cluster on partial index \"%s\"" -msgstr "ne peut pas exécuter CLUSTER sur l'index partiel « %s »" +msgstr "ne peut pas exécuter CLUSTER sur l'index partiel « %s »" #: commands/cluster.c:465 #, c-format msgid "cannot cluster on invalid index \"%s\"" -msgstr "ne peut pas exécuter la commande CLUSTER sur l'index invalide « %s »" +msgstr "ne peut pas exécuter la commande CLUSTER sur l'index invalide « %s »" -#: commands/cluster.c:918 +#: commands/cluster.c:920 #, c-format msgid "clustering \"%s.%s\" using index scan on \"%s\"" -msgstr "cluster sur « %s.%s » en utilisant un parcours d'index sur « %s »" +msgstr "cluster sur « %s.%s » en utilisant un parcours d'index sur « %s »" -#: commands/cluster.c:924 +#: commands/cluster.c:926 #, c-format msgid "clustering \"%s.%s\" using sequential scan and sort" -msgstr "cluster sur « %s.%s » en utilisant un parcours séquentiel puis un tri" +msgstr "cluster sur « %s.%s » en utilisant un parcours séquentiel puis un tri" -#: commands/cluster.c:929 commands/vacuumlazy.c:479 +#: commands/cluster.c:931 commands/vacuumlazy.c:484 #, c-format msgid "vacuuming \"%s.%s\"" -msgstr "exécution du VACUUM sur « %s.%s »" +msgstr "exécution du VACUUM sur « %s.%s »" -#: commands/cluster.c:1088 +#: commands/cluster.c:1090 #, c-format msgid "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages" msgstr "" -"« %s » : %.0f versions de ligne supprimables, %.0f non supprimables\n" +"« %s » : %.0f versions de ligne supprimables, %.0f non supprimables\n" "parmi %u pages" -#: commands/cluster.c:1092 +#: commands/cluster.c:1094 #, c-format msgid "" "%.0f dead row versions cannot be removed yet.\n" "%s." msgstr "" -"%.0f versions de lignes ne peuvent pas encore être supprimées.\n" +"%.0f versions de lignes ne peuvent pas encore être supprimées.\n" "%s." #: commands/collationcmds.c:80 #, c-format msgid "collation attribute \"%s\" not recognized" -msgstr "attribut de collationnement « %s » non reconnu" +msgstr "attribut de collationnement « %s » non reconnu" #: commands/collationcmds.c:125 #, c-format msgid "parameter \"lc_collate\" must be specified" -msgstr "le paramètre « lc_collate » doit être spécifié" +msgstr "le paramètre « lc_collate » doit être spécifié" #: commands/collationcmds.c:130 #, c-format msgid "parameter \"lc_ctype\" must be specified" -msgstr "le paramètre « lc_ctype » doit être spécifié" +msgstr "le paramètre « lc_ctype » doit être spécifié" #: commands/collationcmds.c:166 #, c-format msgid "collation \"%s\" for encoding \"%s\" already exists in schema \"%s\"" -msgstr "le collationnament « %s » pour l'encodage « %s » existe déjà dans le schéma « %s »" +msgstr "le collationnament « %s » pour l'encodage « %s » existe déjà dans le schéma « %s »" #: commands/collationcmds.c:177 #, c-format msgid "collation \"%s\" already exists in schema \"%s\"" -msgstr "le collationnement « %s » existe déjà dans le schéma « %s »" +msgstr "le collationnement « %s » existe déjà dans le schéma « %s »" #: commands/comment.c:62 commands/dbcommands.c:797 commands/dbcommands.c:962 commands/dbcommands.c:1067 commands/dbcommands.c:1257 commands/dbcommands.c:1477 commands/dbcommands.c:1594 commands/dbcommands.c:2011 utils/init/postinit.c:841 utils/init/postinit.c:943 utils/init/postinit.c:960 #, c-format msgid "database \"%s\" does not exist" -msgstr "la base de données « %s » n'existe pas" +msgstr "la base de données « %s » n'existe pas" -#: commands/comment.c:101 commands/seclabel.c:116 parser/parse_utilcmd.c:768 +#: commands/comment.c:101 commands/seclabel.c:116 parser/parse_utilcmd.c:753 #, c-format msgid "\"%s\" is not a table, view, materialized view, composite type, or foreign table" -msgstr "« %s » n'est ni une table, ni une vue, ni une vue matérialisée, ni un type composite, ni une table distante" +msgstr "« %s » n'est ni une table, ni une vue, ni une vue matérialisée, ni un type composite, ni une table distante" -#: commands/constraint.c:60 utils/adt/ri_triggers.c:2717 +#: commands/constraint.c:60 utils/adt/ri_triggers.c:2715 #, c-format msgid "function \"%s\" was not called by trigger manager" -msgstr "la fonction « %s » n'a pas été appelée par le gestionnaire de triggers" +msgstr "la fonction « %s » n'a pas été appelée par le gestionnaire de triggers" -#: commands/constraint.c:67 utils/adt/ri_triggers.c:2726 +#: commands/constraint.c:67 utils/adt/ri_triggers.c:2724 #, c-format msgid "function \"%s\" must be fired AFTER ROW" -msgstr "la fonction « %s » doit être exécutée pour l'instruction AFTER ROW" +msgstr "la fonction « %s » doit être exécutée pour l'instruction AFTER ROW" #: commands/constraint.c:81 #, c-format msgid "function \"%s\" must be fired for INSERT or UPDATE" -msgstr "la fonction « %s » doit être exécutée pour les instructions INSERT ou UPDATE" +msgstr "la fonction « %s » doit être exécutée pour les instructions INSERT ou UPDATE" #: commands/conversioncmds.c:67 #, c-format msgid "source encoding \"%s\" does not exist" -msgstr "le codage source « %s » n'existe pas" +msgstr "le codage source « %s » n'existe pas" #: commands/conversioncmds.c:74 #, c-format msgid "destination encoding \"%s\" does not exist" -msgstr "l'encodage de destination « %s » n'existe pas" +msgstr "l'encodage de destination « %s » n'existe pas" #: commands/conversioncmds.c:88 #, c-format @@ -5331,29 +5101,29 @@ msgstr "la fonction de conversion d'encodage %s doit renvoyer le type %s" #: commands/copy.c:362 commands/copy.c:374 commands/copy.c:408 commands/copy.c:420 #, c-format msgid "COPY BINARY is not supported to stdout or from stdin" -msgstr "COPY BINARY n'est pas supporté vers stdout ou à partir de stdin" +msgstr "COPY BINARY n'est pas supporté vers stdout ou à partir de stdin" #: commands/copy.c:520 #, c-format msgid "could not write to COPY program: %m" -msgstr "n'a pas pu écrire vers le programme COPY : %m" +msgstr "n'a pas pu écrire vers le programme COPY : %m" #: commands/copy.c:525 #, c-format msgid "could not write to COPY file: %m" -msgstr "n'a pas pu écrire dans le fichier COPY : %m" +msgstr "n'a pas pu écrire dans le fichier COPY : %m" #: commands/copy.c:538 #, c-format msgid "connection lost during COPY to stdout" -msgstr "connexion perdue lors de l'opération COPY vers stdout" +msgstr "connexion perdue lors de l'opération COPY vers stdout" #: commands/copy.c:579 #, c-format msgid "could not read from COPY file: %m" msgstr "n'a pas pu lire le fichier COPY : %m" -#: commands/copy.c:595 commands/copy.c:616 commands/copy.c:620 tcop/postgres.c:341 tcop/postgres.c:377 tcop/postgres.c:404 +#: commands/copy.c:595 commands/copy.c:616 commands/copy.c:620 tcop/postgres.c:333 tcop/postgres.c:369 tcop/postgres.c:396 #, c-format msgid "unexpected EOF on client connection with an open transaction" msgstr "" @@ -5363,501 +5133,501 @@ msgstr "" #: commands/copy.c:633 #, c-format msgid "COPY from stdin failed: %s" -msgstr "échec de la commande COPY à partir de stdin : %s" +msgstr "échec de la commande COPY à partir de stdin : %s" #: commands/copy.c:649 #, c-format msgid "unexpected message type 0x%02X during COPY from stdin" -msgstr "type 0x%02X du message, inattendu, lors d'une opération COPY à partir de stdin" +msgstr "type 0x%02X du message, inattendu, lors d'une opération COPY à partir de stdin" #: commands/copy.c:806 #, c-format msgid "must be superuser to COPY to or from an external program" -msgstr "doit être super-utilisateur pour utiliser COPY avec un programme externe" +msgstr "doit être super-utilisateur pour utiliser COPY avec un programme externe" #: commands/copy.c:807 commands/copy.c:813 #, c-format msgid "Anyone can COPY to stdout or from stdin. psql's \\copy command also works for anyone." msgstr "" -"Tout le monde peut utiliser COPY vers stdout ou à partir de stdin.\n" +"Tout le monde peut utiliser COPY vers stdout ou à partir de stdin.\n" "La commande \\copy de psql fonctionne aussi pour tout le monde." #: commands/copy.c:812 #, c-format msgid "must be superuser to COPY to or from a file" -msgstr "doit être super-utilisateur pour utiliser COPY à partir ou vers un fichier" +msgstr "doit être super-utilisateur pour utiliser COPY à partir ou vers un fichier" -#: commands/copy.c:878 +#: commands/copy.c:879 #, c-format msgid "COPY FROM not supported with row-level security" -msgstr "COPY FROM non supporté avec la sécurité niveau ligne" +msgstr "COPY FROM non supporté avec la sécurité niveau ligne" -#: commands/copy.c:879 +#: commands/copy.c:880 #, c-format msgid "Use INSERT statements instead." -msgstr "Utilisez des instructions INSERT à la place." +msgstr "Utilisez des instructions INSERT à la place." -#: commands/copy.c:1019 +#: commands/copy.c:1059 #, c-format msgid "COPY format \"%s\" not recognized" -msgstr "format COPY « %s » non reconnu" +msgstr "format COPY « %s » non reconnu" -#: commands/copy.c:1090 commands/copy.c:1104 commands/copy.c:1118 commands/copy.c:1138 +#: commands/copy.c:1130 commands/copy.c:1144 commands/copy.c:1158 commands/copy.c:1178 #, c-format msgid "argument to option \"%s\" must be a list of column names" -msgstr "l'argument de l'option « %s » doit être une liste de noms de colonnes" +msgstr "l'argument de l'option « %s » doit être une liste de noms de colonnes" -#: commands/copy.c:1151 +#: commands/copy.c:1191 #, c-format msgid "argument to option \"%s\" must be a valid encoding name" -msgstr "l'argument de l'option « %s » doit être un nom d'encodage valide" +msgstr "l'argument de l'option « %s » doit être un nom d'encodage valide" -#: commands/copy.c:1157 commands/dbcommands.c:232 commands/dbcommands.c:1427 +#: commands/copy.c:1197 commands/dbcommands.c:232 commands/dbcommands.c:1427 #, c-format msgid "option \"%s\" not recognized" -msgstr "option « %s » non reconnu" +msgstr "option « %s » non reconnu" -#: commands/copy.c:1168 +#: commands/copy.c:1208 #, c-format msgid "cannot specify DELIMITER in BINARY mode" -msgstr "ne peut pas spécifier le délimiteur (DELIMITER) en mode binaire (BINARY)" +msgstr "ne peut pas spécifier le délimiteur (DELIMITER) en mode binaire (BINARY)" -#: commands/copy.c:1173 +#: commands/copy.c:1213 #, c-format msgid "cannot specify NULL in BINARY mode" -msgstr "ne peut pas spécifier NULL en mode binaire (BINARY)" +msgstr "ne peut pas spécifier NULL en mode binaire (BINARY)" -#: commands/copy.c:1195 +#: commands/copy.c:1235 #, c-format msgid "COPY delimiter must be a single one-byte character" -msgstr "le délimiteur COPY doit être sur un seul caractère sur un octet" +msgstr "le délimiteur COPY doit être sur un seul caractère sur un octet" -#: commands/copy.c:1202 +#: commands/copy.c:1242 #, c-format msgid "COPY delimiter cannot be newline or carriage return" -msgstr "le délimiteur de COPY ne peut pas être un retour à la ligne ou un retour chariot" +msgstr "le délimiteur de COPY ne peut pas être un retour à la ligne ou un retour chariot" -#: commands/copy.c:1208 +#: commands/copy.c:1248 #, c-format msgid "COPY null representation cannot use newline or carriage return" msgstr "" -"la représentation du NULL dans COPY ne peut pas utiliser le caractère du\n" -"retour à la ligne ou du retour chariot" +"la représentation du NULL dans COPY ne peut pas utiliser le caractère du\n" +"retour à la ligne ou du retour chariot" -#: commands/copy.c:1225 +#: commands/copy.c:1265 #, c-format msgid "COPY delimiter cannot be \"%s\"" -msgstr "le délimiteur de COPY ne peut pas être « %s »" +msgstr "le délimiteur de COPY ne peut pas être « %s »" -#: commands/copy.c:1231 +#: commands/copy.c:1271 #, c-format msgid "COPY HEADER available only in CSV mode" msgstr "COPY HEADER disponible uniquement en mode CSV" -#: commands/copy.c:1237 +#: commands/copy.c:1277 #, c-format msgid "COPY quote available only in CSV mode" msgstr "le guillemet COPY n'est disponible que dans le mode CSV" -#: commands/copy.c:1242 +#: commands/copy.c:1282 #, c-format msgid "COPY quote must be a single one-byte character" -msgstr "le guillemet COPY doit être sur un seul caractère sur un octet" +msgstr "le guillemet COPY doit être sur un seul caractère sur un octet" -#: commands/copy.c:1247 +#: commands/copy.c:1287 #, c-format msgid "COPY delimiter and quote must be different" -msgstr "le délimiteur de COPY ne doit pas être un guillemet" +msgstr "le délimiteur de COPY ne doit pas être un guillemet" -#: commands/copy.c:1253 +#: commands/copy.c:1293 #, c-format msgid "COPY escape available only in CSV mode" -msgstr "le caractère d'échappement COPY n'est disponible que dans le mode CSV" +msgstr "le caractère d'échappement COPY n'est disponible que dans le mode CSV" -#: commands/copy.c:1258 +#: commands/copy.c:1298 #, c-format msgid "COPY escape must be a single one-byte character" -msgstr "le caractère d'échappement COPY doit être sur un seul caractère sur un octet" +msgstr "le caractère d'échappement COPY doit être sur un seul caractère sur un octet" -#: commands/copy.c:1264 +#: commands/copy.c:1304 #, c-format msgid "COPY force quote available only in CSV mode" -msgstr "le guillemet forcé COPY n'est disponible que dans le mode CSV" +msgstr "le guillemet forcé COPY n'est disponible que dans le mode CSV" -#: commands/copy.c:1268 +#: commands/copy.c:1308 #, c-format msgid "COPY force quote only available using COPY TO" -msgstr "le guillemet forcé COPY n'est disponible qu'en utilisant COPY TO" +msgstr "le guillemet forcé COPY n'est disponible qu'en utilisant COPY TO" -#: commands/copy.c:1274 +#: commands/copy.c:1314 #, c-format msgid "COPY force not null available only in CSV mode" -msgstr "« COPY force not null » n'est disponible que dans la version CSV" +msgstr "« COPY force not null » n'est disponible que dans la version CSV" -#: commands/copy.c:1278 +#: commands/copy.c:1318 #, c-format msgid "COPY force not null only available using COPY FROM" -msgstr "« COPY force not null » n'est disponible qu'en utilisant COPY FROM" +msgstr "« COPY force not null » n'est disponible qu'en utilisant COPY FROM" -#: commands/copy.c:1284 +#: commands/copy.c:1324 #, c-format msgid "COPY force null available only in CSV mode" -msgstr "« COPY force null » n'est disponible que dans le mode CSV" +msgstr "« COPY force null » n'est disponible que dans le mode CSV" -#: commands/copy.c:1289 +#: commands/copy.c:1329 #, c-format msgid "COPY force null only available using COPY FROM" -msgstr "« COPY force null » n'est disponible qu'en utilisant COPY FROM" +msgstr "« COPY force null » n'est disponible qu'en utilisant COPY FROM" -#: commands/copy.c:1295 +#: commands/copy.c:1335 #, c-format msgid "COPY delimiter must not appear in the NULL specification" -msgstr "le délimiteur COPY ne doit pas apparaître dans la spécification de NULL" +msgstr "le délimiteur COPY ne doit pas apparaître dans la spécification de NULL" -#: commands/copy.c:1302 +#: commands/copy.c:1342 #, c-format msgid "CSV quote character must not appear in the NULL specification" -msgstr "le caractère guillemet de CSV ne doit pas apparaître dans la spécification de NULL" +msgstr "le caractère guillemet de CSV ne doit pas apparaître dans la spécification de NULL" -#: commands/copy.c:1363 +#: commands/copy.c:1403 #, c-format msgid "table \"%s\" does not have OIDs" -msgstr "la table « %s » n'a pas d'OID" +msgstr "la table « %s » n'a pas d'OID" -#: commands/copy.c:1380 +#: commands/copy.c:1420 #, c-format msgid "COPY (query) WITH OIDS is not supported" -msgstr "COPY (requête) WITH OIDS n'est pas supporté" +msgstr "COPY (requête) WITH OIDS n'est pas supporté" -#: commands/copy.c:1400 +#: commands/copy.c:1440 #, c-format msgid "DO INSTEAD NOTHING rules are not supported for COPY" -msgstr "les règles DO INSTEAD NOTHING ne sont pas supportées par l'instruction COPY" +msgstr "les règles DO INSTEAD NOTHING ne sont pas supportées par l'instruction COPY" -#: commands/copy.c:1414 +#: commands/copy.c:1454 #, c-format msgid "conditional DO INSTEAD rules are not supported for COPY" -msgstr "les règles DO INSTEAD conditionnelles ne sont pas supportées par l'instruction COPY" +msgstr "les règles DO INSTEAD conditionnelles ne sont pas supportées par l'instruction COPY" -#: commands/copy.c:1418 +#: commands/copy.c:1458 #, c-format msgid "DO ALSO rules are not supported for the COPY" -msgstr "les règles DO ALSO ne sont pas supportées par l'instruction COPY" +msgstr "les règles DO ALSO ne sont pas supportées par l'instruction COPY" -#: commands/copy.c:1423 +#: commands/copy.c:1463 #, c-format msgid "multi-statement DO INSTEAD rules are not supported for COPY" -msgstr "les règles DO INSTEAD multi-instructions ne sont pas supportées par l'instruction COPY" +msgstr "les règles DO INSTEAD multi-instructions ne sont pas supportées par l'instruction COPY" -#: commands/copy.c:1433 +#: commands/copy.c:1473 #, c-format msgid "COPY (SELECT INTO) is not supported" -msgstr "COPY (SELECT INTO) n'est pas supporté" +msgstr "COPY (SELECT INTO) n'est pas supporté" -#: commands/copy.c:1450 +#: commands/copy.c:1490 #, c-format msgid "COPY query must have a RETURNING clause" -msgstr "La requête COPY doit avoir une clause RETURNING" +msgstr "La requête COPY doit avoir une clause RETURNING" -#: commands/copy.c:1478 +#: commands/copy.c:1518 #, c-format msgid "relation referenced by COPY statement has changed" -msgstr "la relation référencée par l'instruction COPY a changé" +msgstr "la relation référencée par l'instruction COPY a changé" -#: commands/copy.c:1536 +#: commands/copy.c:1576 #, c-format msgid "FORCE_QUOTE column \"%s\" not referenced by COPY" -msgstr "la colonne « %s » FORCE_QUOTE n'est pas référencée par COPY" +msgstr "la colonne « %s » FORCE_QUOTE n'est pas référencée par COPY" -#: commands/copy.c:1558 +#: commands/copy.c:1598 #, c-format msgid "FORCE_NOT_NULL column \"%s\" not referenced by COPY" -msgstr "la colonne « %s » FORCE_NOT_NULL n'est pas référencée par COPY" +msgstr "la colonne « %s » FORCE_NOT_NULL n'est pas référencée par COPY" -#: commands/copy.c:1580 +#: commands/copy.c:1620 #, c-format msgid "FORCE_NULL column \"%s\" not referenced by COPY" -msgstr "colonne « %s » FORCE_NULL non référencée par COPY" +msgstr "colonne « %s » FORCE_NULL non référencée par COPY" -#: commands/copy.c:1645 +#: commands/copy.c:1685 #, 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" -#: commands/copy.c:1649 +#: commands/copy.c:1689 #, c-format msgid "program \"%s\" failed" -msgstr "le programme « %s » a échoué" +msgstr "le programme « %s » a échoué" -#: commands/copy.c:1699 +#: commands/copy.c:1739 #, c-format msgid "cannot copy from view \"%s\"" -msgstr "ne peut pas copier à partir de la vue « %s »" +msgstr "ne peut pas copier à partir de la vue « %s »" -#: commands/copy.c:1701 commands/copy.c:1707 commands/copy.c:1713 +#: commands/copy.c:1741 commands/copy.c:1747 commands/copy.c:1753 #, c-format msgid "Try the COPY (SELECT ...) TO variant." msgstr "Tentez la variante COPY (SELECT ...) TO." -#: commands/copy.c:1705 +#: commands/copy.c:1745 #, c-format msgid "cannot copy from materialized view \"%s\"" -msgstr "ne peut pas copier à partir de la vue matérialisée « %s »" +msgstr "ne peut pas copier à partir de la vue matérialisée « %s »" -#: commands/copy.c:1711 +#: commands/copy.c:1751 #, c-format msgid "cannot copy from foreign table \"%s\"" -msgstr "ne peut pas copier à partir de la table distante « %s »" +msgstr "ne peut pas copier à partir de la table distante « %s »" -#: commands/copy.c:1717 +#: commands/copy.c:1757 #, c-format msgid "cannot copy from sequence \"%s\"" -msgstr "ne peut pas copier à partir de la séquence « %s »" +msgstr "ne peut pas copier à partir de la séquence « %s »" -#: commands/copy.c:1722 +#: commands/copy.c:1762 #, c-format msgid "cannot copy from non-table relation \"%s\"" -msgstr "ne peut pas copier à partir de la relation « %s », qui n'est pas une table" +msgstr "ne peut pas copier à partir de la relation « %s », qui n'est pas une table" -#: commands/copy.c:1747 commands/copy.c:2783 +#: commands/copy.c:1787 commands/copy.c:2823 #, c-format msgid "could not execute command \"%s\": %m" -msgstr "n'a pas pu exécuter la commande « %s » : %m" +msgstr "n'a pas pu exécuter la commande « %s » : %m" -#: commands/copy.c:1762 +#: commands/copy.c:1802 #, c-format msgid "relative path not allowed for COPY to file" -msgstr "un chemin relatif n'est pas autorisé à utiliser COPY vers un fichier" +msgstr "un chemin relatif n'est pas autorisé à utiliser COPY vers un fichier" -#: commands/copy.c:1770 +#: commands/copy.c:1810 #, c-format msgid "could not open file \"%s\" for writing: %m" -msgstr "n'a pas pu ouvrir le fichier « %s » en écriture : %m" +msgstr "n'a pas pu ouvrir le fichier « %s » en écriture : %m" -#: commands/copy.c:1782 commands/copy.c:2806 +#: commands/copy.c:1822 commands/copy.c:2846 #, c-format msgid "\"%s\" is a directory" -msgstr "« %s » est un répertoire" +msgstr "« %s » est un répertoire" -#: commands/copy.c:2105 +#: commands/copy.c:2145 #, c-format msgid "COPY %s, line %d, column %s" msgstr "COPY %s, ligne %d, colonne %s" -#: commands/copy.c:2109 commands/copy.c:2156 +#: commands/copy.c:2149 commands/copy.c:2196 #, c-format msgid "COPY %s, line %d" msgstr "COPY %s, ligne %d" -#: commands/copy.c:2120 +#: commands/copy.c:2160 #, c-format msgid "COPY %s, line %d, column %s: \"%s\"" -msgstr "COPY %s, ligne %d, colonne %s : « %s »" +msgstr "COPY %s, ligne %d, colonne %s : « %s »" -#: commands/copy.c:2128 +#: commands/copy.c:2168 #, c-format msgid "COPY %s, line %d, column %s: null input" -msgstr "COPY %s, ligne %d, colonne %s : NULL en entrée" +msgstr "COPY %s, ligne %d, colonne %s : NULL en entrée" -#: commands/copy.c:2150 +#: commands/copy.c:2190 #, c-format msgid "COPY %s, line %d: \"%s\"" -msgstr "COPY %s, ligne %d : « %s »" +msgstr "COPY %s, ligne %d : « %s »" -#: commands/copy.c:2234 +#: commands/copy.c:2274 #, c-format msgid "cannot copy to view \"%s\"" -msgstr "ne peut pas copier vers la vue « %s »" +msgstr "ne peut pas copier vers la vue « %s »" -#: commands/copy.c:2239 +#: commands/copy.c:2279 #, c-format msgid "cannot copy to materialized view \"%s\"" -msgstr "ne peut pas copier vers la vue matérialisée « %s »" +msgstr "ne peut pas copier vers la vue matérialisée « %s »" -#: commands/copy.c:2244 +#: commands/copy.c:2284 #, c-format msgid "cannot copy to foreign table \"%s\"" -msgstr "ne peut pas copier vers la table distante « %s »" +msgstr "ne peut pas copier vers la table distante « %s »" -#: commands/copy.c:2249 +#: commands/copy.c:2289 #, c-format msgid "cannot copy to sequence \"%s\"" -msgstr "ne peut pas copier vers la séquence « %s »" +msgstr "ne peut pas copier vers la séquence « %s »" -#: commands/copy.c:2254 +#: commands/copy.c:2294 #, c-format msgid "cannot copy to non-table relation \"%s\"" -msgstr "ne peut pas copier vers une relation « %s » qui n'est pas une table" +msgstr "ne peut pas copier vers une relation « %s » qui n'est pas une table" -#: commands/copy.c:2317 +#: commands/copy.c:2357 #, c-format msgid "cannot perform FREEZE because of prior transaction activity" -msgstr "n'a pas pu exécuter un FREEZE à cause d'une activité transactionnelle précédente" +msgstr "n'a pas pu exécuter un FREEZE à cause d'une activité transactionnelle précédente" -#: commands/copy.c:2323 +#: commands/copy.c:2363 #, c-format msgid "cannot perform FREEZE because the table was not created or truncated in the current subtransaction" -msgstr "n'a pas pu exécuter un FREEZE parce que la table n'était pas créée ou tronquée dans la transaction en cours" +msgstr "n'a pas pu exécuter un FREEZE parce que la table n'était pas créée ou tronquée dans la transaction en cours" -#: commands/copy.c:2826 +#: commands/copy.c:2866 #, c-format msgid "COPY file signature not recognized" msgstr "la signature du fichier COPY n'est pas reconnue" -#: commands/copy.c:2831 +#: commands/copy.c:2871 #, c-format msgid "invalid COPY file header (missing flags)" -msgstr "en-tête du fichier COPY invalide (options manquantes)" +msgstr "en-tête du fichier COPY invalide (options manquantes)" -#: commands/copy.c:2837 +#: commands/copy.c:2877 #, c-format msgid "unrecognized critical flags in COPY file header" -msgstr "options critiques non reconnues dans l'en-tête du fichier COPY" +msgstr "options critiques non reconnues dans l'en-tête du fichier COPY" -#: commands/copy.c:2843 +#: commands/copy.c:2883 #, c-format msgid "invalid COPY file header (missing length)" -msgstr "en-tête du fichier COPY invalide (longueur manquante)" +msgstr "en-tête du fichier COPY invalide (longueur manquante)" -#: commands/copy.c:2850 +#: commands/copy.c:2890 #, c-format msgid "invalid COPY file header (wrong length)" -msgstr "en-tête du fichier COPY invalide (mauvaise longueur)" +msgstr "en-tête du fichier COPY invalide (mauvaise longueur)" -#: commands/copy.c:2983 commands/copy.c:3690 commands/copy.c:3920 +#: commands/copy.c:3023 commands/copy.c:3730 commands/copy.c:3960 #, c-format msgid "extra data after last expected column" -msgstr "données supplémentaires après la dernière colonne attendue" +msgstr "données supplémentaires après la dernière colonne attendue" -#: commands/copy.c:2993 +#: commands/copy.c:3033 #, c-format msgid "missing data for OID column" -msgstr "données manquantes pour la colonne OID" +msgstr "données manquantes pour la colonne OID" -#: commands/copy.c:2999 +#: commands/copy.c:3039 #, c-format msgid "null OID in COPY data" -msgstr "OID NULL dans les données du COPY" +msgstr "OID NULL dans les données du COPY" -#: commands/copy.c:3009 commands/copy.c:3132 +#: commands/copy.c:3049 commands/copy.c:3172 #, c-format msgid "invalid OID in COPY data" -msgstr "OID invalide dans les données du COPY" +msgstr "OID invalide dans les données du COPY" -#: commands/copy.c:3024 +#: commands/copy.c:3064 #, c-format msgid "missing data for column \"%s\"" -msgstr "données manquantes pour la colonne « %s »" +msgstr "données manquantes pour la colonne « %s »" -#: commands/copy.c:3107 +#: commands/copy.c:3147 #, c-format msgid "received copy data after EOF marker" -msgstr "a reçu des données de COPY après le marqueur de fin" +msgstr "a reçu des données de COPY après le marqueur de fin" -#: commands/copy.c:3114 +#: commands/copy.c:3154 #, c-format msgid "row field count is %d, expected %d" msgstr "le nombre de champs de la ligne est %d, %d attendus" -#: commands/copy.c:3454 commands/copy.c:3471 +#: commands/copy.c:3494 commands/copy.c:3511 #, c-format msgid "literal carriage return found in data" -msgstr "retour chariot trouvé dans les données" +msgstr "retour chariot trouvé dans les données" -#: commands/copy.c:3455 commands/copy.c:3472 +#: commands/copy.c:3495 commands/copy.c:3512 #, c-format msgid "unquoted carriage return found in data" -msgstr "retour chariot sans guillemet trouvé dans les données" +msgstr "retour chariot sans guillemet trouvé dans les données" -#: commands/copy.c:3457 commands/copy.c:3474 +#: commands/copy.c:3497 commands/copy.c:3514 #, c-format msgid "Use \"\\r\" to represent carriage return." -msgstr "Utilisez « \\r » pour représenter un retour chariot." +msgstr "Utilisez « \\r » pour représenter un retour chariot." -#: commands/copy.c:3458 commands/copy.c:3475 +#: commands/copy.c:3498 commands/copy.c:3515 #, c-format msgid "Use quoted CSV field to represent carriage return." -msgstr "Utiliser le champ CSV entre guillemets pour représenter un retour chariot." +msgstr "Utiliser le champ CSV entre guillemets pour représenter un retour chariot." -#: commands/copy.c:3487 +#: commands/copy.c:3527 #, c-format msgid "literal newline found in data" -msgstr "retour à la ligne trouvé dans les données" +msgstr "retour à la ligne trouvé dans les données" -#: commands/copy.c:3488 +#: commands/copy.c:3528 #, c-format msgid "unquoted newline found in data" -msgstr "retour à la ligne trouvé dans les données" +msgstr "retour à la ligne trouvé dans les données" -#: commands/copy.c:3490 +#: commands/copy.c:3530 #, c-format msgid "Use \"\\n\" to represent newline." -msgstr "Utilisez « \\n » pour représenter un retour à la ligne." +msgstr "Utilisez « \\n » pour représenter un retour à la ligne." -#: commands/copy.c:3491 +#: commands/copy.c:3531 #, c-format msgid "Use quoted CSV field to represent newline." -msgstr "Utiliser un champ CSV entre guillemets pour représenter un retour à la ligne." +msgstr "Utiliser un champ CSV entre guillemets pour représenter un retour à la ligne." -#: commands/copy.c:3537 commands/copy.c:3573 +#: commands/copy.c:3577 commands/copy.c:3613 #, c-format msgid "end-of-copy marker does not match previous newline style" -msgstr "le marqueur fin-de-copie ne correspond pas à un précédent style de fin de ligne" +msgstr "le marqueur fin-de-copie ne correspond pas à un précédent style de fin de ligne" -#: commands/copy.c:3546 commands/copy.c:3562 +#: commands/copy.c:3586 commands/copy.c:3602 #, c-format msgid "end-of-copy marker corrupt" msgstr "marqueur fin-de-copie corrompu" -#: commands/copy.c:4004 +#: commands/copy.c:4044 #, c-format msgid "unterminated CSV quoted field" -msgstr "champ CSV entre guillemets non terminé" +msgstr "champ CSV entre guillemets non terminé" -#: commands/copy.c:4081 commands/copy.c:4100 +#: commands/copy.c:4121 commands/copy.c:4140 #, c-format msgid "unexpected EOF in COPY data" -msgstr "fin de fichier (EOF) inattendu dans les données du COPY" +msgstr "fin de fichier (EOF) inattendu dans les données du COPY" -#: commands/copy.c:4090 +#: commands/copy.c:4130 #, c-format msgid "invalid field size" msgstr "taille du champ invalide" -#: commands/copy.c:4113 +#: commands/copy.c:4153 #, c-format msgid "incorrect binary data format" -msgstr "format de données binaires incorrect" +msgstr "format de données binaires incorrect" -#: commands/copy.c:4424 commands/indexcmds.c:1053 commands/tablecmds.c:1463 commands/tablecmds.c:2290 parser/parse_relation.c:3084 parser/parse_relation.c:3104 utils/adt/tsvector_op.c:2307 +#: commands/copy.c:4464 commands/indexcmds.c:1054 commands/tablecmds.c:1464 commands/tablecmds.c:2291 parser/parse_relation.c:3177 parser/parse_relation.c:3197 utils/adt/tsvector_op.c:2559 #, c-format msgid "column \"%s\" does not exist" -msgstr "la colonne « %s » n'existe pas" +msgstr "la colonne « %s » n'existe pas" -#: commands/copy.c:4431 commands/tablecmds.c:1489 commands/trigger.c:651 parser/parse_target.c:956 parser/parse_target.c:967 +#: commands/copy.c:4471 commands/tablecmds.c:1490 commands/trigger.c:651 parser/parse_target.c:967 parser/parse_target.c:978 #, c-format msgid "column \"%s\" specified more than once" -msgstr "la colonne « %s » est spécifiée plus d'une fois" +msgstr "la colonne « %s » est spécifiée plus d'une fois" #: commands/createas.c:213 commands/createas.c:509 #, c-format msgid "too many column names were specified" -msgstr "trop de noms de colonnes ont été spécifiés" +msgstr "trop de noms de colonnes ont été spécifiés" #: commands/createas.c:550 #, c-format msgid "policies not yet implemented for this command" -msgstr "politiques non encore implémentées pour cette commande" +msgstr "politiques non encore implémentées pour cette commande" #: commands/dbcommands.c:226 #, c-format msgid "LOCATION is not supported anymore" -msgstr "LOCATION n'est plus supporté" +msgstr "LOCATION n'est plus supporté" #: commands/dbcommands.c:227 #, c-format msgid "Consider using tablespaces instead." -msgstr "Considérer l'utilisation de tablespaces." +msgstr "Considérer l'utilisation de tablespaces." #: commands/dbcommands.c:251 utils/adt/ascii.c:144 #, c-format @@ -5877,17 +5647,17 @@ msgstr "limite de connexion invalide : %d" #: commands/dbcommands.c:298 #, c-format msgid "permission denied to create database" -msgstr "droit refusé pour créer une base de données" +msgstr "droit refusé pour créer une base de données" #: commands/dbcommands.c:321 #, c-format msgid "template database \"%s\" does not exist" -msgstr "la base de données modèle « %s » n'existe pas" +msgstr "la base de données modèle « %s » n'existe pas" #: commands/dbcommands.c:333 #, c-format msgid "permission denied to copy database \"%s\"" -msgstr "droit refusé pour copier la base de données « %s »" +msgstr "droit refusé pour copier la base de données « %s »" #: commands/dbcommands.c:349 #, c-format @@ -5897,111 +5667,111 @@ msgstr "encodage serveur %d invalide" #: commands/dbcommands.c:355 commands/dbcommands.c:360 #, c-format msgid "invalid locale name: \"%s\"" -msgstr "nom de locale invalide : « %s »" +msgstr "nom de locale invalide : « %s »" #: commands/dbcommands.c:380 #, c-format msgid "new encoding (%s) is incompatible with the encoding of the template database (%s)" msgstr "" -"le nouvel encodage (%sà est incompatible avec l'encodage de la base de\n" -"données modèle (%s)" +"le nouvel encodage (%sà est incompatible avec l'encodage de la base de\n" +"données modèle (%s)" #: commands/dbcommands.c:383 #, c-format msgid "Use the same encoding as in the template database, or use template0 as template." msgstr "" -"Utilisez le même encodage que celui de la base de données modèle,\n" -"ou utilisez template0 comme modèle." +"Utilisez le même encodage que celui de la base de données modèle,\n" +"ou utilisez template0 comme modèle." #: commands/dbcommands.c:388 #, c-format msgid "new collation (%s) is incompatible with the collation of the template database (%s)" msgstr "" "le nouveau tri (%s) est incompatible avec le tri de la base de\n" -"données modèle (%s)" +"données modèle (%s)" #: commands/dbcommands.c:390 #, c-format msgid "Use the same collation as in the template database, or use template0 as template." msgstr "" -"Utilisez le même tri que celui de la base de données modèle,\n" -"ou utilisez template0 comme modèle." +"Utilisez le même tri que celui de la base de données modèle,\n" +"ou utilisez template0 comme modèle." #: commands/dbcommands.c:395 #, c-format msgid "new LC_CTYPE (%s) is incompatible with the LC_CTYPE of the template database (%s)" msgstr "" "le nouveau LC_CTYPE (%s) est incompatible avec le LC_CTYPE de la base de\n" -"données modèle (%s)" +"données modèle (%s)" #: commands/dbcommands.c:397 #, c-format msgid "Use the same LC_CTYPE as in the template database, or use template0 as template." msgstr "" -"Utilisez le même LC_CTYPE que celui de la base de données modèle,\n" -"ou utilisez template0 comme modèle." +"Utilisez le même LC_CTYPE que celui de la base de données modèle,\n" +"ou utilisez template0 comme modèle." #: commands/dbcommands.c:419 commands/dbcommands.c:1113 #, c-format msgid "pg_global cannot be used as default tablespace" -msgstr "pg_global ne peut pas être utilisé comme tablespace par défaut" +msgstr "pg_global ne peut pas être utilisé comme tablespace par défaut" #: commands/dbcommands.c:445 #, c-format msgid "cannot assign new default tablespace \"%s\"" -msgstr "ne peut pas affecter un nouveau tablespace par défaut « %s »" +msgstr "ne peut pas affecter un nouveau tablespace par défaut « %s »" #: commands/dbcommands.c:447 #, c-format msgid "There is a conflict because database \"%s\" already has some tables in this tablespace." msgstr "" -"Il existe un conflit car la base de données « %s » a déjà quelques tables\n" +"Il existe un conflit car la base de données « %s » a déjà quelques tables\n" "dans son tablespace." #: commands/dbcommands.c:467 commands/dbcommands.c:982 #, c-format msgid "database \"%s\" already exists" -msgstr "la base de données « %s » existe déjà" +msgstr "la base de données « %s » existe déjà" #: commands/dbcommands.c:481 #, c-format msgid "source database \"%s\" is being accessed by other users" -msgstr "la base de données source « %s » est accédée par d'autres utilisateurs" +msgstr "la base de données source « %s » est accédée par d'autres utilisateurs" #: commands/dbcommands.c:726 commands/dbcommands.c:741 #, c-format msgid "encoding \"%s\" does not match locale \"%s\"" -msgstr "l'encodage « %s » ne correspond pas à la locale « %s »" +msgstr "l'encodage « %s » ne correspond pas à la locale « %s »" #: commands/dbcommands.c:729 #, c-format msgid "The chosen LC_CTYPE setting requires encoding \"%s\"." -msgstr "Le paramètre LC_CTYPE choisi nécessite l'encodage « %s »." +msgstr "Le paramètre LC_CTYPE choisi nécessite l'encodage « %s »." #: commands/dbcommands.c:744 #, c-format msgid "The chosen LC_COLLATE setting requires encoding \"%s\"." -msgstr "Le paramètre LC_COLLATE choisi nécessite l'encodage « %s »." +msgstr "Le paramètre LC_COLLATE choisi nécessite l'encodage « %s »." #: commands/dbcommands.c:804 #, c-format msgid "database \"%s\" does not exist, skipping" -msgstr "la base de données « %s » n'existe pas, poursuite du traitement" +msgstr "la base de données « %s » n'existe pas, poursuite du traitement" #: commands/dbcommands.c:828 #, c-format msgid "cannot drop a template database" -msgstr "ne peut pas supprimer une base de données modèle" +msgstr "ne peut pas supprimer une base de données modèle" #: commands/dbcommands.c:834 #, c-format msgid "cannot drop the currently open database" -msgstr "ne peut pas supprimer la base de données actuellement ouverte" +msgstr "ne peut pas supprimer la base de données actuellement ouverte" #: commands/dbcommands.c:844 #, c-format msgid "database \"%s\" is used by a logical replication slot" -msgstr "la base de données « %s » est utilisée par un slot de réplication logique" +msgstr "la base de données « %s » est utilisée par un slot de réplication logique" #: commands/dbcommands.c:846 #, c-format @@ -6013,183 +5783,183 @@ msgstr[1] "Il existe %d slots, et %d actifs." #: commands/dbcommands.c:860 commands/dbcommands.c:1004 commands/dbcommands.c:1135 #, c-format msgid "database \"%s\" is being accessed by other users" -msgstr "la base de données « %s » est en cours d'utilisation par d'autres utilisateurs" +msgstr "la base de données « %s » est en cours d'utilisation par d'autres utilisateurs" #: commands/dbcommands.c:973 #, c-format msgid "permission denied to rename database" -msgstr "droit refusé pour le renommage de la base de données" +msgstr "droit refusé pour le renommage de la base de données" #: commands/dbcommands.c:993 #, c-format msgid "current database cannot be renamed" -msgstr "la base de données actuelle ne peut pas être renommée" +msgstr "la base de données actuelle ne peut pas être renommée" #: commands/dbcommands.c:1091 #, c-format msgid "cannot change the tablespace of the currently open database" -msgstr "ne peut pas modifier le tablespace de la base de données actuellement ouverte" +msgstr "ne peut pas modifier le tablespace de la base de données actuellement ouverte" #: commands/dbcommands.c:1194 #, c-format msgid "some relations of database \"%s\" are already in tablespace \"%s\"" msgstr "" -"certaines relations de la base de données « %s » sont déjà dans le\n" -"tablespace « %s »" +"certaines relations de la base de données « %s » sont déjà dans le\n" +"tablespace « %s »" #: commands/dbcommands.c:1196 #, c-format msgid "You must move them back to the database's default tablespace before using this command." msgstr "" -"Vous devez d'abord les déplacer dans le tablespace par défaut de la base\n" -"de données avant d'utiliser cette commande." +"Vous devez d'abord les déplacer dans le tablespace par défaut de la base\n" +"de données avant d'utiliser cette commande." #: commands/dbcommands.c:1325 commands/dbcommands.c:1868 commands/dbcommands.c:2072 commands/dbcommands.c:2120 commands/tablespace.c:606 #, c-format msgid "some useless files may be left behind in old database directory \"%s\"" msgstr "" -"certains fichiers inutiles pourraient se trouver dans l'ancien répertoire\n" -"de la base de données « %s »" +"certains fichiers inutiles pourraient se trouver dans l'ancien répertoire\n" +"de la base de données « %s »" #: commands/dbcommands.c:1440 #, c-format msgid "option \"%s\" cannot be specified with other options" -msgstr "l'option « %s » ne peut pas être spécifié avec d'autres options" +msgstr "l'option « %s » ne peut pas être spécifié avec d'autres options" #: commands/dbcommands.c:1494 #, c-format msgid "cannot disallow connections for current database" -msgstr "ne peut pas désactiver les connexions pour la base de données courante" +msgstr "ne peut pas désactiver les connexions pour la base de données courante" #: commands/dbcommands.c:1634 #, c-format msgid "permission denied to change owner of database" -msgstr "droit refusé pour modifier le propriétaire de la base de données" +msgstr "droit refusé pour modifier le propriétaire de la base de données" #: commands/dbcommands.c:1955 #, c-format msgid "There are %d other session(s) and %d prepared transaction(s) using the database." -msgstr "%d autres sessions et %d transactions préparées utilisent la base de données." +msgstr "%d autres sessions et %d transactions préparées utilisent la base de données." #: commands/dbcommands.c:1958 #, c-format msgid "There is %d other session using the database." msgid_plural "There are %d other sessions using the database." -msgstr[0] "%d autre session utilise la base de données." -msgstr[1] "%d autres sessions utilisent la base de données." +msgstr[0] "%d autre session utilise la base de données." +msgstr[1] "%d autres sessions utilisent la base de données." #: commands/dbcommands.c:1963 #, c-format msgid "There is %d prepared transaction using the database." msgid_plural "There are %d prepared transactions using the database." -msgstr[0] "%d transaction préparée utilise la base de données" -msgstr[1] "%d transactions préparées utilisent la base de données" +msgstr[0] "%d transaction préparée utilise la base de données" +msgstr[1] "%d transactions préparées utilisent la base de données" #: commands/define.c:54 commands/define.c:228 commands/define.c:260 commands/define.c:288 #, c-format msgid "%s requires a parameter" -msgstr "%s requiert un paramètre" +msgstr "%s requiert un paramètre" #: commands/define.c:90 commands/define.c:101 commands/define.c:195 commands/define.c:213 #, c-format msgid "%s requires a numeric value" -msgstr "%s requiert une valeur numérique" +msgstr "%s requiert une valeur numérique" #: commands/define.c:157 #, c-format msgid "%s requires a Boolean value" -msgstr "%s requiert une valeur booléenne" +msgstr "%s requiert une valeur booléenne" #: commands/define.c:171 commands/define.c:180 commands/define.c:297 #, c-format msgid "%s requires an integer value" -msgstr "%s requiert une valeur entière" +msgstr "%s requiert une valeur entière" #: commands/define.c:242 #, c-format msgid "argument of %s must be a name" -msgstr "l'argument de %s doit être un nom" +msgstr "l'argument de %s doit être un nom" #: commands/define.c:272 #, c-format msgid "argument of %s must be a type name" -msgstr "l'argument de %s doit être un nom de type" +msgstr "l'argument de %s doit être un nom de type" #: commands/define.c:318 #, c-format msgid "invalid argument for %s: \"%s\"" -msgstr "argument invalide pour %s : « %s »" +msgstr "argument invalide pour %s : « %s »" -#: commands/dropcmds.c:112 commands/functioncmds.c:1203 utils/adt/ruleutils.c:2077 +#: commands/dropcmds.c:112 commands/functioncmds.c:1203 utils/adt/ruleutils.c:2083 #, c-format msgid "\"%s\" is an aggregate function" -msgstr "« %s » est une fonction d'agrégat" +msgstr "« %s » est une fonction d'agrégat" #: commands/dropcmds.c:114 #, c-format msgid "Use DROP AGGREGATE to drop aggregate functions." -msgstr "Utiliser DROP AGGREGATE pour supprimer les fonctions d'agrégat." +msgstr "Utiliser DROP AGGREGATE pour supprimer les fonctions d'agrégat." -#: commands/dropcmds.c:165 commands/sequence.c:424 commands/tablecmds.c:2377 commands/tablecmds.c:2528 commands/tablecmds.c:2570 commands/tablecmds.c:11377 tcop/utility.c:1119 +#: commands/dropcmds.c:165 commands/sequence.c:424 commands/tablecmds.c:2378 commands/tablecmds.c:2529 commands/tablecmds.c:2571 commands/tablecmds.c:11525 tcop/utility.c:1119 #, c-format msgid "relation \"%s\" does not exist, skipping" -msgstr "la relation « %s » n'existe pas, poursuite du traitement" +msgstr "la relation « %s » n'existe pas, poursuite du traitement" -#: commands/dropcmds.c:195 commands/dropcmds.c:296 commands/tablecmds.c:745 +#: commands/dropcmds.c:195 commands/dropcmds.c:296 commands/tablecmds.c:746 #, c-format msgid "schema \"%s\" does not exist, skipping" -msgstr "le schéma « %s » n'existe pas, poursuite du traitement" +msgstr "le schéma « %s » n'existe pas, poursuite du traitement" -#: commands/dropcmds.c:237 commands/dropcmds.c:276 commands/tablecmds.c:246 +#: commands/dropcmds.c:237 commands/dropcmds.c:276 commands/tablecmds.c:247 #, c-format msgid "type \"%s\" does not exist, skipping" -msgstr "le type « %s » n'existe pas, poursuite du traitement" +msgstr "le type « %s » n'existe pas, poursuite du traitement" #: commands/dropcmds.c:266 #, c-format msgid "access method \"%s\" does not exist, skipping" -msgstr "la méthode d'accès « %s » n'existe pas, poursuite du traitement" +msgstr "la méthode d'accès « %s » n'existe pas, poursuite du traitement" #: commands/dropcmds.c:284 #, c-format msgid "collation \"%s\" does not exist, skipping" -msgstr "le collationnement « %s » n'existe pas, poursuite du traitement" +msgstr "le collationnement « %s » n'existe pas, poursuite du traitement" #: commands/dropcmds.c:291 #, c-format msgid "conversion \"%s\" does not exist, skipping" -msgstr "la conversion « %s » n'existe pas, poursuite du traitement" +msgstr "la conversion « %s » n'existe pas, poursuite du traitement" #: commands/dropcmds.c:302 #, c-format msgid "text search parser \"%s\" does not exist, skipping" msgstr "" -"l'analyseur de recherche plein texte « %s » n'existe pas, poursuite du\n" +"l'analyseur de recherche plein texte « %s » n'existe pas, poursuite du\n" "traitement" #: commands/dropcmds.c:309 #, c-format msgid "text search dictionary \"%s\" does not exist, skipping" msgstr "" -"le dictionnaire de recherche plein texte « %s » n'existe pas, poursuite du\n" +"le dictionnaire de recherche plein texte « %s » n'existe pas, poursuite du\n" "traitement" #: commands/dropcmds.c:316 #, c-format msgid "text search template \"%s\" does not exist, skipping" -msgstr "le modèle de recherche plein texte « %s » n'existe pas, poursuite du traitement" +msgstr "le modèle de recherche plein texte « %s » n'existe pas, poursuite du traitement" #: commands/dropcmds.c:323 #, c-format msgid "text search configuration \"%s\" does not exist, skipping" msgstr "" -"la configuration de recherche plein texte « %s » n'existe pas, poursuite du\n" +"la configuration de recherche plein texte « %s » n'existe pas, poursuite du\n" "traitement" #: commands/dropcmds.c:328 #, c-format msgid "extension \"%s\" does not exist, skipping" -msgstr "l'extension « %s » n'existe pas, poursuite du traitement" +msgstr "l'extension « %s » n'existe pas, poursuite du traitement" #: commands/dropcmds.c:335 #, c-format @@ -6199,17 +5969,17 @@ msgstr "la fonction %s(%s) n'existe pas, poursuite du traitement" #: commands/dropcmds.c:344 #, c-format msgid "aggregate %s(%s) does not exist, skipping" -msgstr "L'agrégat %s(%s) n'existe pas, poursuite du traitement" +msgstr "L'agrégat %s(%s) n'existe pas, poursuite du traitement" #: commands/dropcmds.c:353 #, c-format msgid "operator %s does not exist, skipping" -msgstr "l'opérateur %s n'existe pas, poursuite du traitement" +msgstr "l'opérateur %s n'existe pas, poursuite du traitement" #: commands/dropcmds.c:358 #, c-format msgid "language \"%s\" does not exist, skipping" -msgstr "le langage « %s » n'existe pas, poursuite du traitement" +msgstr "le langage « %s » n'existe pas, poursuite du traitement" #: commands/dropcmds.c:367 #, c-format @@ -6219,446 +5989,446 @@ msgstr "la conversion du type %s vers le type %s n'existe pas, poursuite du trai #: commands/dropcmds.c:376 #, c-format msgid "transform for type %s language \"%s\" does not exist, skipping" -msgstr "la transformation pour le type %s et le langage « %s » n'existe pas, poursuite du traitement" +msgstr "la transformation pour le type %s et le langage « %s » n'existe pas, poursuite du traitement" #: commands/dropcmds.c:384 #, c-format msgid "trigger \"%s\" for relation \"%s\" does not exist, skipping" -msgstr "le trigger « %s » de la relation « %s » n'existe pas, poursuite du traitement" +msgstr "le trigger « %s » de la relation « %s » n'existe pas, poursuite du traitement" #: commands/dropcmds.c:393 #, c-format msgid "policy \"%s\" for relation \"%s\" does not exist, skipping" -msgstr "la politique « %s » de la relation « %s » n'existe pas, poursuite du traitement" +msgstr "la politique « %s » de la relation « %s » n'existe pas, poursuite du traitement" #: commands/dropcmds.c:400 #, c-format msgid "event trigger \"%s\" does not exist, skipping" -msgstr "le trigger sur événement « %s » n'existe pas, poursuite du traitement" +msgstr "le trigger sur événement « %s » n'existe pas, poursuite du traitement" #: commands/dropcmds.c:406 #, c-format msgid "rule \"%s\" for relation \"%s\" does not exist, skipping" -msgstr "la règle « %s » de la relation « %s » n'existe pas, poursuite du traitement" +msgstr "la règle « %s » de la relation « %s » n'existe pas, poursuite du traitement" #: commands/dropcmds.c:413 #, c-format msgid "foreign-data wrapper \"%s\" does not exist, skipping" -msgstr "le wrapper de données distantes « %s » n'existe pas, poursuite du traitement" +msgstr "le wrapper de données distantes « %s » n'existe pas, poursuite du traitement" #: commands/dropcmds.c:417 #, c-format msgid "server \"%s\" does not exist, skipping" -msgstr "le serveur « %s » n'existe pas, poursuite du traitement" +msgstr "le serveur « %s » n'existe pas, poursuite du traitement" #: commands/dropcmds.c:426 #, c-format msgid "operator class \"%s\" does not exist for access method \"%s\", skipping" -msgstr "la classe d'opérateur « %s » n'existe pas pour la méthode d'accès « %s », ignoré" +msgstr "la classe d'opérateur « %s » n'existe pas pour la méthode d'accès « %s », ignoré" #: commands/dropcmds.c:438 #, c-format msgid "operator family \"%s\" does not exist for access method \"%s\", skipping" -msgstr "la famille d'opérateur « %s » n'existe pas pour la méthode d'accès « %s », ignoré" +msgstr "la famille d'opérateur « %s » n'existe pas pour la méthode d'accès « %s », ignoré" #: commands/event_trigger.c:182 #, c-format msgid "permission denied to create event trigger \"%s\"" -msgstr "droit refusé pour créer le trigger sur événement « %s »" +msgstr "droit refusé pour créer le trigger sur événement « %s »" #: commands/event_trigger.c:184 #, c-format msgid "Must be superuser to create an event trigger." -msgstr "Doit être super-utilisateur pour créer un trigger sur événement." +msgstr "Doit être super-utilisateur pour créer un trigger sur événement." #: commands/event_trigger.c:193 #, c-format msgid "unrecognized event name \"%s\"" -msgstr "nom d'événement non reconnu : « %s »" +msgstr "nom d'événement non reconnu : « %s »" #: commands/event_trigger.c:210 #, c-format msgid "unrecognized filter variable \"%s\"" -msgstr "variable « %s » du filtre non reconnu" +msgstr "variable « %s » du filtre non reconnu" #: commands/event_trigger.c:265 #, c-format msgid "filter value \"%s\" not recognized for filter variable \"%s\"" -msgstr "valeur de filtre « %s » non reconnu pour la variable de filtre « %s »" +msgstr "valeur de filtre « %s » non reconnu pour la variable de filtre « %s »" #. translator: %s represents an SQL statement name #: commands/event_trigger.c:271 commands/event_trigger.c:341 #, c-format msgid "event triggers are not supported for %s" -msgstr "les triggers sur événemenr ne sont pas supportés pour %s" +msgstr "les triggers sur événemenr ne sont pas supportés pour %s" #: commands/event_trigger.c:364 #, c-format msgid "filter variable \"%s\" specified more than once" -msgstr "variable « %s » du filtre spécifiée plus d'une fois" +msgstr "variable « %s » du filtre spécifiée plus d'une fois" #: commands/event_trigger.c:512 commands/event_trigger.c:556 commands/event_trigger.c:649 #, c-format msgid "event trigger \"%s\" does not exist" -msgstr "le trigger sur événement « %s » n'existe pas" +msgstr "le trigger sur événement « %s » n'existe pas" #: commands/event_trigger.c:617 #, c-format msgid "permission denied to change owner of event trigger \"%s\"" -msgstr "droit refusé pour modifier le propriétaire du trigger sur événement « %s »" +msgstr "droit refusé pour modifier le propriétaire du trigger sur événement « %s »" #: commands/event_trigger.c:619 #, c-format msgid "The owner of an event trigger must be a superuser." -msgstr "Le propriétaire du trigger sur événement doit être un super-utilisateur." +msgstr "Le propriétaire du trigger sur événement doit être un super-utilisateur." #: commands/event_trigger.c:1438 #, c-format msgid "%s can only be called in a sql_drop event trigger function" -msgstr "%s peut seulement être appelé dans une fonction de trigger sur événement sql_drop" +msgstr "%s peut seulement être appelé dans une fonction de trigger sur événement sql_drop" #: commands/event_trigger.c:1558 commands/event_trigger.c:1579 #, c-format msgid "%s can only be called in a table_rewrite event trigger function" -msgstr "%s peut seulement être appelé dans une fonction de trigger sur événement table_rewrite" +msgstr "%s peut seulement être appelé dans une fonction de trigger sur événement table_rewrite" #: commands/event_trigger.c:1989 #, c-format msgid "%s can only be called in an event trigger function" -msgstr "%s peut seulement être appelé dans une fonction de trigger sur événement" +msgstr "%s peut seulement être appelé dans une fonction de trigger sur événement" #: commands/explain.c:185 #, c-format msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\"" -msgstr "valeur non reconnue pour l'option EXPLAIN « %s » : %s" +msgstr "valeur non reconnue pour l'option EXPLAIN « %s » : %s" #: commands/explain.c:191 #, c-format msgid "unrecognized EXPLAIN option \"%s\"" -msgstr "option EXPLAIN « %s » non reconnu" +msgstr "option EXPLAIN « %s » non reconnu" #: commands/explain.c:198 #, c-format msgid "EXPLAIN option BUFFERS requires ANALYZE" -msgstr "l'option BUFFERS d'EXPLAIN nécessite ANALYZE" +msgstr "l'option BUFFERS d'EXPLAIN nécessite ANALYZE" #: commands/explain.c:207 #, c-format msgid "EXPLAIN option TIMING requires ANALYZE" -msgstr "l'option TIMING d'EXPLAIN nécessite ANALYZE" +msgstr "l'option TIMING d'EXPLAIN nécessite ANALYZE" -#: commands/extension.c:154 commands/extension.c:2718 +#: commands/extension.c:155 commands/extension.c:2722 #, c-format msgid "extension \"%s\" does not exist" -msgstr "l'extension « %s » n'existe pas" +msgstr "l'extension « %s » n'existe pas" -#: commands/extension.c:253 commands/extension.c:262 commands/extension.c:274 commands/extension.c:284 +#: commands/extension.c:254 commands/extension.c:263 commands/extension.c:275 commands/extension.c:285 #, c-format msgid "invalid extension name: \"%s\"" -msgstr "nom d'extension invalide : « %s »" +msgstr "nom d'extension invalide : « %s »" -#: commands/extension.c:254 +#: commands/extension.c:255 #, c-format msgid "Extension names must not be empty." -msgstr "Les noms d'extension ne doivent pas être vides." +msgstr "Les noms d'extension ne doivent pas être vides." -#: commands/extension.c:263 +#: commands/extension.c:264 #, c-format msgid "Extension names must not contain \"--\"." -msgstr "Les noms d'extension ne doivent pas contenir « -- »." +msgstr "Les noms d'extension ne doivent pas contenir « -- »." -#: commands/extension.c:275 +#: commands/extension.c:276 #, c-format msgid "Extension names must not begin or end with \"-\"." -msgstr "Les noms des extensions ne doivent pas commencer ou finir avec un tiret (« - »)." +msgstr "Les noms des extensions ne doivent pas commencer ou finir avec un tiret (« - »)." -#: commands/extension.c:285 +#: commands/extension.c:286 #, c-format msgid "Extension names must not contain directory separator characters." -msgstr "Les noms des extensions ne doivent pas contenir des caractères séparateurs de répertoire." +msgstr "Les noms des extensions ne doivent pas contenir des caractères séparateurs de répertoire." -#: commands/extension.c:300 commands/extension.c:309 commands/extension.c:318 commands/extension.c:328 +#: commands/extension.c:301 commands/extension.c:310 commands/extension.c:319 commands/extension.c:329 #, c-format msgid "invalid extension version name: \"%s\"" -msgstr "nom de version de l'extension invalide : « %s »" +msgstr "nom de version de l'extension invalide : « %s »" -#: commands/extension.c:301 +#: commands/extension.c:302 #, c-format msgid "Version names must not be empty." -msgstr "Les noms de version ne doivent pas être vides." +msgstr "Les noms de version ne doivent pas être vides." -#: commands/extension.c:310 +#: commands/extension.c:311 #, c-format msgid "Version names must not contain \"--\"." -msgstr "Les noms de version ne doivent pas contenir « -- »." +msgstr "Les noms de version ne doivent pas contenir « -- »." -#: commands/extension.c:319 +#: commands/extension.c:320 #, c-format msgid "Version names must not begin or end with \"-\"." msgstr "Les noms de version ne doivent ni commencer ni se terminer avec un tiret." -#: commands/extension.c:329 +#: commands/extension.c:330 #, c-format msgid "Version names must not contain directory separator characters." msgstr "" -"Les noms de version ne doivent pas contenir de caractères séparateurs de\n" -"répertoire." +"Les noms de version ne doivent pas contenir de caractères séparateurs de\n" +"répertoire." -#: commands/extension.c:479 +#: commands/extension.c:480 #, c-format msgid "could not open extension control file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier de contrôle d'extension « %s » : %m" +msgstr "n'a pas pu ouvrir le fichier de contrôle d'extension « %s » : %m" -#: commands/extension.c:501 commands/extension.c:511 +#: commands/extension.c:502 commands/extension.c:512 #, c-format msgid "parameter \"%s\" cannot be set in a secondary extension control file" msgstr "" -"le paramètre « %s » ne peut pas être configuré dans un fichier de contrôle\n" +"le paramètre « %s » ne peut pas être configuré dans un fichier de contrôle\n" "secondaire de l'extension" -#: commands/extension.c:550 +#: commands/extension.c:551 #, c-format msgid "\"%s\" is not a valid encoding name" -msgstr "« %s » n'est pas un nom d'encodage valide" +msgstr "« %s » n'est pas un nom d'encodage valide" -#: commands/extension.c:564 +#: commands/extension.c:565 #, c-format msgid "parameter \"%s\" must be a list of extension names" -msgstr "l'argument « %s » doit être une liste de noms d'extension" +msgstr "l'argument « %s » doit être une liste de noms d'extension" -#: commands/extension.c:571 +#: commands/extension.c:572 #, c-format msgid "unrecognized parameter \"%s\" in file \"%s\"" -msgstr "paramètre « %s » non reconnu dans le fichier « %s »" +msgstr "paramètre « %s » non reconnu dans le fichier « %s »" -#: commands/extension.c:580 +#: commands/extension.c:581 #, c-format msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true" -msgstr "le paramètre « schema » ne peut pas être indiqué quand « relocatable » est vrai" +msgstr "le paramètre « schema » ne peut pas être indiqué quand « relocatable » est vrai" -#: commands/extension.c:721 +#: commands/extension.c:725 #, c-format msgid "transaction control statements are not allowed within an extension script" msgstr "" -"les instructions de contrôle des transactions ne sont pas autorisées dans un\n" +"les instructions de contrôle des transactions ne sont pas autorisées dans un\n" "script d'extension" -#: commands/extension.c:789 +#: commands/extension.c:793 #, c-format msgid "permission denied to create extension \"%s\"" -msgstr "droit refusé pour créer l'extension « %s »" +msgstr "droit refusé pour créer l'extension « %s »" -#: commands/extension.c:791 +#: commands/extension.c:795 #, c-format msgid "Must be superuser to create this extension." -msgstr "Doit être super-utilisateur pour créer cette extension." +msgstr "Doit être super-utilisateur pour créer cette extension." -#: commands/extension.c:795 +#: commands/extension.c:799 #, c-format msgid "permission denied to update extension \"%s\"" -msgstr "droit refusé pour mettre à jour l'extension « %s »" +msgstr "droit refusé pour mettre à jour l'extension « %s »" -#: commands/extension.c:797 +#: commands/extension.c:801 #, c-format msgid "Must be superuser to update this extension." -msgstr "Doit être super-utilisateur pour mettre à jour cette extension." +msgstr "Doit être super-utilisateur pour mettre à jour cette extension." -#: commands/extension.c:1079 +#: commands/extension.c:1083 #, c-format msgid "extension \"%s\" has no update path from version \"%s\" to version \"%s\"" -msgstr "l'extension « %s » n'a pas de chemin de mise à jour pour aller de la version « %s » à la version « %s »" +msgstr "l'extension « %s » n'a pas de chemin de mise à jour pour aller de la version « %s » à la version « %s »" -#: commands/extension.c:1261 commands/extension.c:2778 +#: commands/extension.c:1265 commands/extension.c:2782 #, c-format msgid "version to install must be specified" -msgstr "la version à installer doit être précisée" +msgstr "la version à installer doit être précisée" -#: commands/extension.c:1278 +#: commands/extension.c:1282 #, c-format msgid "FROM version must be different from installation target version \"%s\"" -msgstr "la version FROM doit être différente de la version cible d'installation « %s »" +msgstr "la version FROM doit être différente de la version cible d'installation « %s »" -#: commands/extension.c:1343 +#: commands/extension.c:1347 #, c-format msgid "extension \"%s\" must be installed in schema \"%s\"" -msgstr "l'extension « %s » doit être installée dans le schéma « %s »" +msgstr "l'extension « %s » doit être installée dans le schéma « %s »" -#: commands/extension.c:1435 +#: commands/extension.c:1439 #, c-format msgid "cyclic dependency detected between extensions \"%s\" and \"%s\"" -msgstr "dépendance cyclique détectée entre les extensions « %s » et « %s »" +msgstr "dépendance cyclique détectée entre les extensions « %s » et « %s »" -#: commands/extension.c:1440 +#: commands/extension.c:1444 #, c-format msgid "installing required extension \"%s\"" -msgstr "installation de l'extension requise « %s »" +msgstr "installation de l'extension requise « %s »" -#: commands/extension.c:1468 commands/extension.c:2923 +#: commands/extension.c:1472 commands/extension.c:2927 #, c-format msgid "required extension \"%s\" is not installed" -msgstr "l'extension « %s » requise n'est pas installée" +msgstr "l'extension « %s » requise n'est pas installée" -#: commands/extension.c:1470 +#: commands/extension.c:1474 #, c-format msgid "Use CREATE EXTENSION ... CASCADE to install required extensions too." -msgstr "Utilisez CREATE EXTENSION ... CASCADE pour installer également les extensions requises." +msgstr "Utilisez CREATE EXTENSION ... CASCADE pour installer également les extensions requises." -#: commands/extension.c:1534 +#: commands/extension.c:1538 #, c-format msgid "extension \"%s\" already exists, skipping" -msgstr "l'extension « %s » existe déjà, poursuite du traitement" +msgstr "l'extension « %s » existe déjà, poursuite du traitement" -#: commands/extension.c:1541 +#: commands/extension.c:1545 #, c-format msgid "extension \"%s\" already exists" -msgstr "l'extension « %s » existe déjà" +msgstr "l'extension « %s » existe déjà" -#: commands/extension.c:1552 +#: commands/extension.c:1556 #, c-format msgid "nested CREATE EXTENSION is not supported" -msgstr "CREATE EXTENSION imbriqué n'est pas supporté" +msgstr "CREATE EXTENSION imbriqué n'est pas supporté" -#: commands/extension.c:1680 +#: commands/extension.c:1684 #, c-format msgid "cannot drop extension \"%s\" because it is being modified" -msgstr "ne peut pas supprimer l'extension « %s » car il est en cours de modification" +msgstr "ne peut pas supprimer l'extension « %s » car il est en cours de modification" -#: commands/extension.c:2151 +#: commands/extension.c:2155 #, c-format msgid "pg_extension_config_dump() can only be called from an SQL script executed by CREATE EXTENSION" msgstr "" -"pg_extension_config_dump() peut seulement être appelé à partir d'un script SQL\n" -"exécuté par CREATE EXTENSION" +"pg_extension_config_dump() peut seulement être appelé à partir d'un script SQL\n" +"exécuté par CREATE EXTENSION" -#: commands/extension.c:2163 +#: commands/extension.c:2167 #, c-format msgid "OID %u does not refer to a table" -msgstr "l'OID %u ne fait pas référence à une table" +msgstr "l'OID %u ne fait pas référence à une table" -#: commands/extension.c:2168 +#: commands/extension.c:2172 #, c-format msgid "table \"%s\" is not a member of the extension being created" -msgstr "la table « %s » n'est pas un membre de l'extension en cours de création" +msgstr "la table « %s » n'est pas un membre de l'extension en cours de création" -#: commands/extension.c:2533 +#: commands/extension.c:2537 #, c-format msgid "cannot move extension \"%s\" into schema \"%s\" because the extension contains the schema" msgstr "" -"ne peut pas déplacer l'extension « %s » dans le schéma « %s » car l'extension\n" -"contient le schéma" +"ne peut pas déplacer l'extension « %s » dans le schéma « %s » car l'extension\n" +"contient le schéma" -#: commands/extension.c:2573 commands/extension.c:2636 +#: commands/extension.c:2577 commands/extension.c:2640 #, c-format msgid "extension \"%s\" does not support SET SCHEMA" -msgstr "l'extension « %s » ne supporte pas SET SCHEMA" +msgstr "l'extension « %s » ne supporte pas SET SCHEMA" -#: commands/extension.c:2638 +#: commands/extension.c:2642 #, c-format msgid "%s is not in the extension's schema \"%s\"" -msgstr "%s n'est pas dans le schéma « %s » de l'extension" +msgstr "%s n'est pas dans le schéma « %s » de l'extension" -#: commands/extension.c:2698 +#: commands/extension.c:2702 #, c-format msgid "nested ALTER EXTENSION is not supported" -msgstr "un ALTER EXTENSION imbriqué n'est pas supporté" +msgstr "un ALTER EXTENSION imbriqué n'est pas supporté" -#: commands/extension.c:2789 +#: commands/extension.c:2793 #, c-format msgid "version \"%s\" of extension \"%s\" is already installed" -msgstr "la version « %s » de l'extension « %s » est déjà installée" +msgstr "la version « %s » de l'extension « %s » est déjà installée" -#: commands/extension.c:3040 +#: commands/extension.c:3044 #, c-format msgid "cannot add schema \"%s\" to extension \"%s\" because the schema contains the extension" msgstr "" -"ne peut pas ajouter le schéma « %s » à l'extension « %s » car le schéma\n" +"ne peut pas ajouter le schéma « %s » à l'extension « %s » car le schéma\n" "contient l'extension" -#: commands/extension.c:3058 +#: commands/extension.c:3072 #, c-format msgid "%s is not a member of extension \"%s\"" -msgstr "%s n'est pas un membre de l'extension « %s »" +msgstr "%s n'est pas un membre de l'extension « %s »" -#: commands/extension.c:3114 +#: commands/extension.c:3138 #, c-format msgid "file \"%s\" is too large" -msgstr "le fichier « %s » est trop gros" +msgstr "le fichier « %s » est trop gros" #: commands/foreigncmds.c:150 commands/foreigncmds.c:159 #, c-format msgid "option \"%s\" not found" -msgstr "option « %s » non trouvé" +msgstr "option « %s » non trouvé" #: commands/foreigncmds.c:169 #, c-format msgid "option \"%s\" provided more than once" -msgstr "option « %s » fournie plus d'une fois" +msgstr "option « %s » fournie plus d'une fois" #: commands/foreigncmds.c:223 commands/foreigncmds.c:231 #, c-format msgid "permission denied to change owner of foreign-data wrapper \"%s\"" -msgstr "droit refusé pour modifier le propriétaire du wrapper de données distantes « %s »" +msgstr "droit refusé pour modifier le propriétaire du wrapper de données distantes « %s »" #: commands/foreigncmds.c:225 #, c-format msgid "Must be superuser to change owner of a foreign-data wrapper." msgstr "" -"Doit être super-utilisateur pour modifier le propriétaire du wrapper de\n" -"données distantes." +"Doit être super-utilisateur pour modifier le propriétaire du wrapper de\n" +"données distantes." #: commands/foreigncmds.c:233 #, c-format msgid "The owner of a foreign-data wrapper must be a superuser." -msgstr "Le propriétaire du wrapper de données distantes doit être un super-utilisateur." +msgstr "Le propriétaire du wrapper de données distantes doit être un super-utilisateur." #: commands/foreigncmds.c:292 commands/foreigncmds.c:709 foreign/foreign.c:671 #, c-format msgid "foreign-data wrapper \"%s\" does not exist" -msgstr "le wrapper de données distantes « %s » n'existe pas" +msgstr "le wrapper de données distantes « %s » n'existe pas" #: commands/foreigncmds.c:584 #, c-format msgid "permission denied to create foreign-data wrapper \"%s\"" -msgstr "droit refusé pour la création du wrapper de données distantes « %s »" +msgstr "droit refusé pour la création du wrapper de données distantes « %s »" #: commands/foreigncmds.c:586 #, c-format msgid "Must be superuser to create a foreign-data wrapper." -msgstr "Doit être super-utilisateur pour créer un wrapper de données distantes." +msgstr "Doit être super-utilisateur pour créer un wrapper de données distantes." #: commands/foreigncmds.c:699 #, c-format msgid "permission denied to alter foreign-data wrapper \"%s\"" -msgstr "droit refusé pour modifier le wrapper de données distantes « %s »" +msgstr "droit refusé pour modifier le wrapper de données distantes « %s »" #: commands/foreigncmds.c:701 #, c-format msgid "Must be superuser to alter a foreign-data wrapper." -msgstr "Doit être super-utilisateur pour modifier un wrapper de données distantes" +msgstr "Doit être super-utilisateur pour modifier un wrapper de données distantes" #: commands/foreigncmds.c:732 #, c-format msgid "changing the foreign-data wrapper handler can change behavior of existing foreign tables" msgstr "" -"la modification du validateur de wrapper de données distantes peut modifier\n" +"la modification du validateur de wrapper de données distantes peut modifier\n" "le comportement des tables distantes existantes" #: commands/foreigncmds.c:747 #, c-format msgid "changing the foreign-data wrapper validator can cause the options for dependent objects to become invalid" msgstr "" -"la modification du validateur du wrapper de données distantes peut faire en\n" -"sorte que les options des objets dépendants deviennent invalides" +"la modification du validateur du wrapper de données distantes peut faire en\n" +"sorte que les options des objets dépendants deviennent invalides" #: commands/foreigncmds.c:1165 #, c-format msgid "user mapping \"%s\" already exists for server %s" -msgstr "la correspondance utilisateur « %s » existe déjà dans le serveur « %s »" +msgstr "la correspondance utilisateur « %s » existe déjà dans le serveur « %s »" #: commands/foreigncmds.c:1259 commands/foreigncmds.c:1375 #, c-format msgid "user mapping \"%s\" does not exist for the server" -msgstr "la correspondance utilisateur « %s » n'existe pas pour le serveur" +msgstr "la correspondance utilisateur « %s » n'existe pas pour le serveur" #: commands/foreigncmds.c:1362 #, c-format @@ -6669,23 +6439,23 @@ msgstr "le serveur n'existe pas, poursuite du traitement" #, c-format msgid "user mapping \"%s\" does not exist for the server, skipping" msgstr "" -"la correspondance utilisateur « %s » n'existe pas pour le serveur, poursuite\n" +"la correspondance utilisateur « %s » n'existe pas pour le serveur, poursuite\n" "du traitement" #: commands/foreigncmds.c:1532 foreign/foreign.c:361 #, c-format msgid "foreign-data wrapper \"%s\" has no handler" -msgstr "le wrapper de données distantes « %s » n'a pas de gestionnaire" +msgstr "le wrapper de données distantes « %s » n'a pas de gestionnaire" #: commands/foreigncmds.c:1538 #, c-format msgid "foreign-data wrapper \"%s\" does not support IMPORT FOREIGN SCHEMA" -msgstr "le wrapper de données distantes « %s » ne supporte pas IMPORT FOREIGN SCHEMA" +msgstr "le wrapper de données distantes « %s » ne supporte pas IMPORT FOREIGN SCHEMA" #: commands/foreigncmds.c:1631 #, c-format msgid "importing foreign table \"%s\"" -msgstr "import de la table distante « %s »" +msgstr "import de la table distante « %s »" #: commands/functioncmds.c:99 #, c-format @@ -6700,17 +6470,17 @@ msgstr "le type de retour %s est seulement un shell" #: commands/functioncmds.c:134 parser/parse_type.c:337 #, c-format msgid "type modifier cannot be specified for shell type \"%s\"" -msgstr "le modificateur de type ne peut pas être précisé pour le type shell « %s »" +msgstr "le modificateur de type ne peut pas être précisé pour le type shell « %s »" #: commands/functioncmds.c:140 #, c-format msgid "type \"%s\" is not yet defined" -msgstr "le type « %s » n'est pas encore défini" +msgstr "le type « %s » n'est pas encore défini" #: commands/functioncmds.c:141 #, c-format msgid "Creating a shell type definition." -msgstr "Création d'une définition d'un type shell." +msgstr "Création d'une définition d'un type shell." #: commands/functioncmds.c:239 #, c-format @@ -6720,7 +6490,7 @@ msgstr "la fonction SQL ne peut pas accepter le type shell %s" #: commands/functioncmds.c:245 #, c-format msgid "aggregate cannot accept shell type %s" -msgstr "l'agrégat ne peut pas accepter le type shell %s" +msgstr "l'agrégat ne peut pas accepter le type shell %s" #: commands/functioncmds.c:250 #, c-format @@ -6735,7 +6505,7 @@ msgstr "le type %s n'existe pas" #: commands/functioncmds.c:274 #, c-format msgid "aggregates cannot accept set arguments" -msgstr "les agrégats ne peuvent pas utiliser des arguments d'ensemble" +msgstr "les agrégats ne peuvent pas utiliser des arguments d'ensemble" #: commands/functioncmds.c:278 #, c-format @@ -6745,288 +6515,288 @@ msgstr "les fonctions ne peuvent pas accepter des arguments d'ensemble" #: commands/functioncmds.c:288 #, c-format msgid "VARIADIC parameter must be the last input parameter" -msgstr "le paramètre VARIADIC doit être le dernier paramètre en entrée" +msgstr "le paramètre VARIADIC doit être le dernier paramètre en entrée" #: commands/functioncmds.c:316 #, c-format msgid "VARIADIC parameter must be an array" -msgstr "le paramètre VARIADIC doit être un tableau" +msgstr "le paramètre VARIADIC doit être un tableau" #: commands/functioncmds.c:356 #, c-format msgid "parameter name \"%s\" used more than once" -msgstr "le nom du paramètre « %s » est utilisé plus d'une fois" +msgstr "le nom du paramètre « %s » est utilisé plus d'une fois" #: commands/functioncmds.c:371 #, c-format msgid "only input parameters can have default values" -msgstr "seuls les paramètres en entrée peuvent avoir des valeurs par défaut" +msgstr "seuls les paramètres en entrée peuvent avoir des valeurs par défaut" #: commands/functioncmds.c:386 #, c-format msgid "cannot use table references in parameter default value" msgstr "" -"ne peut pas utiliser les références de tables dans la valeur par défaut des\n" -"paramètres" +"ne peut pas utiliser les références de tables dans la valeur par défaut des\n" +"paramètres" #: commands/functioncmds.c:410 #, c-format msgid "input parameters after one with a default value must also have defaults" -msgstr "les paramètres en entrée suivant un paramètre avec valeur par défaut doivent aussi avoir des valeurs par défaut" +msgstr "les paramètres en entrée suivant un paramètre avec valeur par défaut doivent aussi avoir des valeurs par défaut" #: commands/functioncmds.c:701 #, c-format msgid "no function body specified" -msgstr "aucun corps de fonction spécifié" +msgstr "aucun corps de fonction spécifié" #: commands/functioncmds.c:711 #, c-format msgid "no language specified" -msgstr "aucun langage spécifié" +msgstr "aucun langage spécifié" #: commands/functioncmds.c:736 commands/functioncmds.c:1243 #, c-format msgid "COST must be positive" -msgstr "COST doit être positif" +msgstr "COST doit être positif" #: commands/functioncmds.c:744 commands/functioncmds.c:1251 #, c-format msgid "ROWS must be positive" -msgstr "ROWS doit être positif" +msgstr "ROWS doit être positif" #: commands/functioncmds.c:785 #, c-format msgid "unrecognized function attribute \"%s\" ignored" -msgstr "l'attribut « %s » non reconnu de la fonction a été ignoré" +msgstr "l'attribut « %s » non reconnu de la fonction a été ignoré" #: commands/functioncmds.c:836 #, c-format msgid "only one AS item needed for language \"%s\"" -msgstr "seul un élément AS est nécessaire pour le langage « %s »" +msgstr "seul un élément AS est nécessaire pour le langage « %s »" -#: commands/functioncmds.c:929 commands/functioncmds.c:2119 commands/proclang.c:563 +#: commands/functioncmds.c:929 commands/functioncmds.c:2139 commands/proclang.c:563 #, c-format msgid "language \"%s\" does not exist" -msgstr "le langage « %s » n'existe pas" +msgstr "le langage « %s » n'existe pas" -#: commands/functioncmds.c:931 commands/functioncmds.c:2121 +#: commands/functioncmds.c:931 commands/functioncmds.c:2141 #, c-format msgid "Use CREATE LANGUAGE to load the language into the database." -msgstr "Utiliser CREATE LANGUAGE pour charger le langage dans la base de données." +msgstr "Utiliser CREATE LANGUAGE pour charger le langage dans la base de données." #: commands/functioncmds.c:966 commands/functioncmds.c:1235 #, c-format msgid "only superuser can define a leakproof function" -msgstr "seul un superutilisateur peut définir une fonction leakproof" +msgstr "seul un superutilisateur peut définir une fonction leakproof" #: commands/functioncmds.c:1010 #, c-format msgid "function result type must be %s because of OUT parameters" -msgstr "le type de résultat de la fonction doit être %s à cause des paramètres OUT" +msgstr "le type de résultat de la fonction doit être %s à cause des paramètres OUT" #: commands/functioncmds.c:1023 #, c-format msgid "function result type must be specified" -msgstr "le type de résultat de la fonction doit être spécifié" +msgstr "le type de résultat de la fonction doit être spécifié" #: commands/functioncmds.c:1077 commands/functioncmds.c:1255 #, c-format msgid "ROWS is not applicable when function does not return a set" msgstr "ROWS n'est pas applicable quand la fonction ne renvoie pas un ensemble" -#: commands/functioncmds.c:1412 +#: commands/functioncmds.c:1432 #, c-format msgid "source data type %s is a pseudo-type" -msgstr "le type de données source %s est un pseudo-type" +msgstr "le type de données source %s est un pseudo-type" -#: commands/functioncmds.c:1418 +#: commands/functioncmds.c:1438 #, c-format msgid "target data type %s is a pseudo-type" -msgstr "le type de données cible %s est un pseudo-type" +msgstr "le type de données cible %s est un pseudo-type" -#: commands/functioncmds.c:1442 +#: commands/functioncmds.c:1462 #, c-format msgid "cast will be ignored because the source data type is a domain" -msgstr "la conversion sera ignorée car le type de données source est un domaine" +msgstr "la conversion sera ignorée car le type de données source est un domaine" -#: commands/functioncmds.c:1447 +#: commands/functioncmds.c:1467 #, c-format msgid "cast will be ignored because the target data type is a domain" -msgstr "la conversion sera ignorée car le type de données cible est un domaine" +msgstr "la conversion sera ignorée car le type de données cible est un domaine" -#: commands/functioncmds.c:1474 +#: commands/functioncmds.c:1494 #, c-format msgid "cast function must take one to three arguments" -msgstr "la fonction de conversion doit prendre de un à trois arguments" +msgstr "la fonction de conversion doit prendre de un à trois arguments" -#: commands/functioncmds.c:1478 +#: commands/functioncmds.c:1498 #, c-format msgid "argument of cast function must match or be binary-coercible from source data type" msgstr "" -"l'argument de la fonction de conversion doit correspondre ou être binary-coercible\n" -"à partir du type de la donnée source" +"l'argument de la fonction de conversion doit correspondre ou être binary-coercible\n" +"à partir du type de la donnée source" -#: commands/functioncmds.c:1482 +#: commands/functioncmds.c:1502 #, c-format msgid "second argument of cast function must be type integer" -msgstr "le second argument de la fonction de conversion doit être de type entier" +msgstr "le second argument de la fonction de conversion doit être de type entier" -#: commands/functioncmds.c:1486 +#: commands/functioncmds.c:1506 #, c-format msgid "third argument of cast function must be type boolean" -msgstr "le troisième argument de la fonction de conversion doit être de type booléen" +msgstr "le troisième argument de la fonction de conversion doit être de type booléen" -#: commands/functioncmds.c:1490 +#: commands/functioncmds.c:1510 #, c-format msgid "return data type of cast function must match or be binary-coercible to target data type" msgstr "" -"le type de donnée en retour de la fonction de conversion doit correspondre\n" -"ou être coercible binairement au type de données cible" +"le type de donnée en retour de la fonction de conversion doit correspondre\n" +"ou être coercible binairement au type de données cible" -#: commands/functioncmds.c:1501 +#: commands/functioncmds.c:1521 #, c-format msgid "cast function must not be volatile" -msgstr "la fonction de conversion ne doit pas être volatile" +msgstr "la fonction de conversion ne doit pas être volatile" -#: commands/functioncmds.c:1506 +#: commands/functioncmds.c:1526 #, c-format msgid "cast function must not be an aggregate function" -msgstr "la fonction de conversion ne doit pas être une fonction d'agrégat" +msgstr "la fonction de conversion ne doit pas être une fonction d'agrégat" -#: commands/functioncmds.c:1510 +#: commands/functioncmds.c:1530 #, c-format msgid "cast function must not be a window function" -msgstr "la fonction de conversion ne doit pas être une fonction window" +msgstr "la fonction de conversion ne doit pas être une fonction window" -#: commands/functioncmds.c:1514 +#: commands/functioncmds.c:1534 #, c-format msgid "cast function must not return a set" msgstr "la fonction de conversion ne doit pas renvoyer un ensemble" -#: commands/functioncmds.c:1540 +#: commands/functioncmds.c:1560 #, c-format msgid "must be superuser to create a cast WITHOUT FUNCTION" -msgstr "doit être super-utilisateur pour créer une fonction de conversion SANS FONCTION" +msgstr "doit être super-utilisateur pour créer une fonction de conversion SANS FONCTION" -#: commands/functioncmds.c:1555 +#: commands/functioncmds.c:1575 #, c-format msgid "source and target data types are not physically compatible" -msgstr "les types de données source et cible ne sont pas physiquement compatibles" +msgstr "les types de données source et cible ne sont pas physiquement compatibles" -#: commands/functioncmds.c:1570 +#: commands/functioncmds.c:1590 #, c-format msgid "composite data types are not binary-compatible" -msgstr "les types de données composites ne sont pas compatibles binairement" +msgstr "les types de données composites ne sont pas compatibles binairement" -#: commands/functioncmds.c:1576 +#: commands/functioncmds.c:1596 #, c-format msgid "enum data types are not binary-compatible" -msgstr "les types de données enum ne sont pas compatibles binairement" +msgstr "les types de données enum ne sont pas compatibles binairement" -#: commands/functioncmds.c:1582 +#: commands/functioncmds.c:1602 #, c-format msgid "array data types are not binary-compatible" -msgstr "les types de données tableau ne sont pas compatibles binairement" +msgstr "les types de données tableau ne sont pas compatibles binairement" -#: commands/functioncmds.c:1599 +#: commands/functioncmds.c:1619 #, c-format msgid "domain data types must not be marked binary-compatible" -msgstr "les types de données domaines ne sont pas compatibles binairement" +msgstr "les types de données domaines ne sont pas compatibles binairement" -#: commands/functioncmds.c:1609 +#: commands/functioncmds.c:1629 #, c-format msgid "source data type and target data type are the same" -msgstr "les types de données source et cible sont identiques" +msgstr "les types de données source et cible sont identiques" -#: commands/functioncmds.c:1642 +#: commands/functioncmds.c:1662 #, c-format msgid "cast from type %s to type %s already exists" -msgstr "la conversion du type %s vers le type %s existe déjà" +msgstr "la conversion du type %s vers le type %s existe déjà" -#: commands/functioncmds.c:1717 +#: commands/functioncmds.c:1737 #, c-format msgid "cast from type %s to type %s does not exist" msgstr "la conversion du type %s vers le type %s n'existe pas" -#: commands/functioncmds.c:1756 +#: commands/functioncmds.c:1776 #, c-format msgid "transform function must not be volatile" -msgstr "la fonction de transformation ne doit pas être volatile" +msgstr "la fonction de transformation ne doit pas être volatile" -#: commands/functioncmds.c:1760 +#: commands/functioncmds.c:1780 #, c-format msgid "transform function must not be an aggregate function" -msgstr "la fonction de transformation ne doit pas être une fonction d'agrégat" +msgstr "la fonction de transformation ne doit pas être une fonction d'agrégat" -#: commands/functioncmds.c:1764 +#: commands/functioncmds.c:1784 #, c-format msgid "transform function must not be a window function" -msgstr "la fonction de transformation ne doit pas être une fonction window" +msgstr "la fonction de transformation ne doit pas être une fonction window" -#: commands/functioncmds.c:1768 +#: commands/functioncmds.c:1788 #, c-format msgid "transform function must not return a set" msgstr "la fonction de transformation ne doit pas renvoyer un ensemble" -#: commands/functioncmds.c:1772 +#: commands/functioncmds.c:1792 #, c-format msgid "transform function must take one argument" msgstr "la fonction de transformation doit prendre de un argument" -#: commands/functioncmds.c:1776 +#: commands/functioncmds.c:1796 #, c-format msgid "first argument of transform function must be type \"internal\"" -msgstr "le premier argument de la fonction de transformation doit être de type « internal »" +msgstr "le premier argument de la fonction de transformation doit être de type « internal »" -#: commands/functioncmds.c:1813 +#: commands/functioncmds.c:1833 #, c-format msgid "data type %s is a pseudo-type" -msgstr "le type de données %s est un pseudo-type" +msgstr "le type de données %s est un pseudo-type" -#: commands/functioncmds.c:1819 +#: commands/functioncmds.c:1839 #, c-format msgid "data type %s is a domain" -msgstr "le type de données %s est un domaine" +msgstr "le type de données %s est un domaine" -#: commands/functioncmds.c:1859 +#: commands/functioncmds.c:1879 #, c-format msgid "return data type of FROM SQL function must be \"internal\"" -msgstr "le type de donnée en retour de la fonction FROM SQL doit être « internal »" +msgstr "le type de donnée en retour de la fonction FROM SQL doit être « internal »" -#: commands/functioncmds.c:1884 +#: commands/functioncmds.c:1904 #, c-format msgid "return data type of TO SQL function must be the transform data type" -msgstr "le type de donnée en retour de la fonction TO SQL doit être du type de données de la transformation" +msgstr "le type de donnée en retour de la fonction TO SQL doit être du type de données de la transformation" -#: commands/functioncmds.c:1911 +#: commands/functioncmds.c:1931 #, c-format msgid "transform for type %s language \"%s\" already exists" -msgstr "la transformation pour le type %s et le langage « %s » existe déjà" +msgstr "la transformation pour le type %s et le langage « %s » existe déjà" -#: commands/functioncmds.c:2002 +#: commands/functioncmds.c:2022 #, c-format msgid "transform for type %s language \"%s\" does not exist" -msgstr "la transformation pour le type %s et le langage « %s » n'existe pas" +msgstr "la transformation pour le type %s et le langage « %s » n'existe pas" -#: commands/functioncmds.c:2053 +#: commands/functioncmds.c:2073 #, c-format msgid "function %s already exists in schema \"%s\"" -msgstr "la fonction %s existe déjà dans le schéma « %s »" +msgstr "la fonction %s existe déjà dans le schéma « %s »" -#: commands/functioncmds.c:2106 +#: commands/functioncmds.c:2126 #, c-format msgid "no inline code specified" -msgstr "aucun code en ligne spécifié" +msgstr "aucun code en ligne spécifié" -#: commands/functioncmds.c:2151 +#: commands/functioncmds.c:2171 #, c-format msgid "language \"%s\" does not support inline code execution" -msgstr "le langage « %s » ne supporte pas l'exécution de code en ligne" +msgstr "le langage « %s » ne supporte pas l'exécution de code en ligne" #: commands/indexcmds.c:349 #, c-format msgid "must specify at least one column" -msgstr "doit spécifier au moins une colonne" +msgstr "doit spécifier au moins une colonne" #: commands/indexcmds.c:353 #, c-format @@ -7036,182 +6806,182 @@ msgstr "ne peut pas utiliser plus de %d colonnes dans un index" #: commands/indexcmds.c:384 #, c-format msgid "cannot create index on foreign table \"%s\"" -msgstr "ne peut pas créer un index sur la table distante « %s »" +msgstr "ne peut pas créer un index sur la table distante « %s »" #: commands/indexcmds.c:399 #, c-format msgid "cannot create indexes on temporary tables of other sessions" -msgstr "ne peut pas créer les index sur les tables temporaires des autres sessions" +msgstr "ne peut pas créer les index sur les tables temporaires des autres sessions" -#: commands/indexcmds.c:454 commands/tablecmds.c:545 commands/tablecmds.c:9597 +#: commands/indexcmds.c:455 commands/tablecmds.c:546 commands/tablecmds.c:9695 #, c-format msgid "only shared relations can be placed in pg_global tablespace" -msgstr "seules les relations partagées peuvent être placées dans le tablespace pg_global" +msgstr "seules les relations partagées peuvent être placées dans le tablespace pg_global" -#: commands/indexcmds.c:487 +#: commands/indexcmds.c:488 #, c-format msgid "substituting access method \"gist\" for obsolete method \"rtree\"" -msgstr "substitution de la méthode d'accès obsolète « rtree » par « gist » " +msgstr "substitution de la méthode d'accès obsolète « rtree » par « gist » " -#: commands/indexcmds.c:505 +#: commands/indexcmds.c:506 #, c-format msgid "hash indexes are not WAL-logged and their use is discouraged" -msgstr "les index hash ne sont pas journalisés, leur utilisation est donc déconseillée" +msgstr "les index hash ne sont pas journalisés, leur utilisation est donc déconseillée" -#: commands/indexcmds.c:510 +#: commands/indexcmds.c:511 #, c-format msgid "access method \"%s\" does not support unique indexes" -msgstr "la méthode d'accès « %s » ne supporte pas les index uniques" +msgstr "la méthode d'accès « %s » ne supporte pas les index uniques" -#: commands/indexcmds.c:515 +#: commands/indexcmds.c:516 #, c-format msgid "access method \"%s\" does not support multicolumn indexes" -msgstr "la méthode d'accès « %s » ne supporte pas les index multi-colonnes" +msgstr "la méthode d'accès « %s » ne supporte pas les index multi-colonnes" -#: commands/indexcmds.c:520 +#: commands/indexcmds.c:521 #, c-format msgid "access method \"%s\" does not support exclusion constraints" -msgstr "la méthode d'accès « %s » ne supporte pas les contraintes d'exclusion" +msgstr "la méthode d'accès « %s » ne supporte pas les contraintes d'exclusion" -#: commands/indexcmds.c:590 commands/indexcmds.c:610 +#: commands/indexcmds.c:591 commands/indexcmds.c:611 #, c-format msgid "index creation on system columns is not supported" -msgstr "la création d'un index sur les tables du catalogue système n'est pas supportée" +msgstr "la création d'un index sur les tables du catalogue système n'est pas supportée" -#: commands/indexcmds.c:635 +#: commands/indexcmds.c:636 #, c-format msgid "%s %s will create implicit index \"%s\" for table \"%s\"" -msgstr "%s %s créera un index implicite « %s » pour la table « %s »" +msgstr "%s %s créera un index implicite « %s » pour la table « %s »" -#: commands/indexcmds.c:982 +#: commands/indexcmds.c:983 #, c-format msgid "functions in index predicate must be marked IMMUTABLE" -msgstr "les fonctions dans un prédicat d'index doivent être marquées comme IMMUTABLE" +msgstr "les fonctions dans un prédicat d'index doivent être marquées comme IMMUTABLE" -#: commands/indexcmds.c:1048 parser/parse_utilcmd.c:1896 +#: commands/indexcmds.c:1049 parser/parse_utilcmd.c:1881 #, c-format msgid "column \"%s\" named in key does not exist" -msgstr "la colonne « %s » nommée dans la clé n'existe pas" +msgstr "la colonne « %s » nommée dans la clé n'existe pas" -#: commands/indexcmds.c:1108 +#: commands/indexcmds.c:1109 #, c-format msgid "functions in index expression must be marked IMMUTABLE" msgstr "" -"les fonctions dans l'expression de l'index doivent être marquées comme\n" +"les fonctions dans l'expression de l'index doivent être marquées comme\n" "IMMUTABLE" -#: commands/indexcmds.c:1131 +#: commands/indexcmds.c:1132 #, c-format msgid "could not determine which collation to use for index expression" -msgstr "n'a pas pu déterminer le collationnement à utiliser pour l'expression d'index" +msgstr "n'a pas pu déterminer le collationnement à utiliser pour l'expression d'index" -#: commands/indexcmds.c:1139 commands/typecmds.c:827 parser/parse_expr.c:2608 parser/parse_type.c:550 parser/parse_utilcmd.c:2822 utils/adt/misc.c:666 +#: commands/indexcmds.c:1140 commands/typecmds.c:827 parser/parse_expr.c:2608 parser/parse_type.c:550 parser/parse_utilcmd.c:2807 utils/adt/misc.c:666 #, c-format msgid "collations are not supported by type %s" -msgstr "les collationnements ne sont pas supportés par le type %s" +msgstr "les collationnements ne sont pas supportés par le type %s" -#: commands/indexcmds.c:1177 +#: commands/indexcmds.c:1178 #, c-format msgid "operator %s is not commutative" -msgstr "l'opérateur %s n'est pas commutatif" +msgstr "l'opérateur %s n'est pas commutatif" -#: commands/indexcmds.c:1179 +#: commands/indexcmds.c:1180 #, c-format msgid "Only commutative operators can be used in exclusion constraints." -msgstr "Seuls les opérateurs commutatifs peuvent être utilisés dans les contraintes d'exclusion." +msgstr "Seuls les opérateurs commutatifs peuvent être utilisés dans les contraintes d'exclusion." -#: commands/indexcmds.c:1205 +#: commands/indexcmds.c:1206 #, c-format msgid "operator %s is not a member of operator family \"%s\"" -msgstr "l'opérateur %s n'est pas un membre de la famille d'opérateur « %s »" +msgstr "l'opérateur %s n'est pas un membre de la famille d'opérateur « %s »" -#: commands/indexcmds.c:1208 +#: commands/indexcmds.c:1209 #, c-format msgid "The exclusion operator must be related to the index operator class for the constraint." msgstr "" -"L'opérateur d'exclusion doit être en relation avec la classe d'opérateur de\n" +"L'opérateur d'exclusion doit être en relation avec la classe d'opérateur de\n" "l'index pour la contrainte." -#: commands/indexcmds.c:1243 +#: commands/indexcmds.c:1244 #, c-format msgid "access method \"%s\" does not support ASC/DESC options" -msgstr "la méthode d'accès « %s » ne supporte pas les options ASC/DESC" +msgstr "la méthode d'accès « %s » ne supporte pas les options ASC/DESC" -#: commands/indexcmds.c:1248 +#: commands/indexcmds.c:1249 #, c-format msgid "access method \"%s\" does not support NULLS FIRST/LAST options" -msgstr "la méthode d'accès « %s » ne supporte pas les options NULLS FIRST/LAST" +msgstr "la méthode d'accès « %s » ne supporte pas les options NULLS FIRST/LAST" -#: commands/indexcmds.c:1304 commands/typecmds.c:1935 +#: commands/indexcmds.c:1305 commands/typecmds.c:1935 #, c-format msgid "data type %s has no default operator class for access method \"%s\"" msgstr "" -"le type de données %s n'a pas de classe d'opérateurs par défaut pour la\n" -"méthode d'accès « %s »" +"le type de données %s n'a pas de classe d'opérateurs par défaut pour la\n" +"méthode d'accès « %s »" -#: commands/indexcmds.c:1306 +#: commands/indexcmds.c:1307 #, c-format msgid "You must specify an operator class for the index or define a default operator class for the data type." msgstr "" -"Vous devez spécifier une classe d'opérateur pour l'index ou définir une\n" -"classe d'opérateur par défaut pour le type de données." +"Vous devez spécifier une classe d'opérateur pour l'index ou définir une\n" +"classe d'opérateur par défaut pour le type de données." -#: commands/indexcmds.c:1335 commands/indexcmds.c:1343 commands/opclasscmds.c:205 +#: commands/indexcmds.c:1336 commands/indexcmds.c:1344 commands/opclasscmds.c:205 #, c-format msgid "operator class \"%s\" does not exist for access method \"%s\"" -msgstr "la classe d'opérateur « %s » n'existe pas pour la méthode d'accès « %s »" +msgstr "la classe d'opérateur « %s » n'existe pas pour la méthode d'accès « %s »" -#: commands/indexcmds.c:1356 commands/typecmds.c:1923 +#: commands/indexcmds.c:1357 commands/typecmds.c:1923 #, c-format msgid "operator class \"%s\" does not accept data type %s" -msgstr "la classe d'opérateur « %s » n'accepte pas le type de données %s" +msgstr "la classe d'opérateur « %s » n'accepte pas le type de données %s" -#: commands/indexcmds.c:1446 +#: commands/indexcmds.c:1447 #, c-format msgid "there are multiple default operator classes for data type %s" msgstr "" -"il existe de nombreuses classes d'opérateur par défaut pour le type de\n" -"données %s" +"il existe de nombreuses classes d'opérateur par défaut pour le type de\n" +"données %s" -#: commands/indexcmds.c:1837 +#: commands/indexcmds.c:1838 #, c-format msgid "table \"%s\" has no indexes" -msgstr "la table « %s » n'a pas d'index" +msgstr "la table « %s » n'a pas d'index" -#: commands/indexcmds.c:1892 +#: commands/indexcmds.c:1893 #, c-format msgid "can only reindex the currently open database" -msgstr "peut seulement réindexer la base de données en cours" +msgstr "peut seulement réindexer la base de données en cours" -#: commands/indexcmds.c:1992 +#: commands/indexcmds.c:1993 #, c-format msgid "table \"%s.%s\" was reindexed" -msgstr "la table « %s.%s » a été réindexée" +msgstr "la table « %s.%s » a été réindexée" #: commands/matview.c:181 #, c-format msgid "CONCURRENTLY cannot be used when the materialized view is not populated" -msgstr "CONCURRENTLY ne peut pas être utilisé quand la vue matérialisée n'est pas peuplée" +msgstr "CONCURRENTLY ne peut pas être utilisé quand la vue matérialisée n'est pas peuplée" #: commands/matview.c:187 #, c-format msgid "CONCURRENTLY and WITH NO DATA options cannot be used together" -msgstr "Les options CONCURRENTLY et WITH NO DATA ne peuvent pas être utilisées ensemble" +msgstr "Les options CONCURRENTLY et WITH NO DATA ne peuvent pas être utilisées ensemble" #: commands/matview.c:257 #, c-format msgid "cannot refresh materialized view \"%s\" concurrently" -msgstr "ne peut pas rafraichir en parallèle la vue matérialisée « %s »" +msgstr "ne peut pas rafraichir en parallèle la vue matérialisée « %s »" #: commands/matview.c:260 #, c-format msgid "Create a unique index with no WHERE clause on one or more columns of the materialized view." -msgstr "Crée un index unique sans clause WHERE sur une ou plusieurs colonnes de la vue matérialisée." +msgstr "Crée un index unique sans clause WHERE sur une ou plusieurs colonnes de la vue matérialisée." #: commands/matview.c:657 #, c-format msgid "new data for materialized view \"%s\" contains duplicate rows without any null columns" -msgstr "les nouvelles données pour la vue matérialisée « %s » contiennent des lignes dupliquées sans colonnes NULL" +msgstr "les nouvelles données pour la vue matérialisée « %s » contiennent des lignes dupliquées sans colonnes NULL" #: commands/matview.c:659 #, c-format @@ -7221,197 +6991,197 @@ msgstr "Ligne : %s" #: commands/opclasscmds.c:126 #, c-format msgid "operator family \"%s\" does not exist for access method \"%s\"" -msgstr "la famille d'opérateur « %s » n'existe pas pour la méthode d'accès « %s »" +msgstr "la famille d'opérateur « %s » n'existe pas pour la méthode d'accès « %s »" #: commands/opclasscmds.c:264 #, c-format msgid "operator family \"%s\" for access method \"%s\" already exists" -msgstr "la famille d'opérateur « %s » existe déjà pour la méthode d'accès « %s »" +msgstr "la famille d'opérateur « %s » existe déjà pour la méthode d'accès « %s »" #: commands/opclasscmds.c:404 #, c-format msgid "must be superuser to create an operator class" -msgstr "doit être super-utilisateur pour créer une classe d'opérateur" +msgstr "doit être super-utilisateur pour créer une classe d'opérateur" #: commands/opclasscmds.c:478 commands/opclasscmds.c:863 commands/opclasscmds.c:996 #, c-format msgid "invalid operator number %d, must be between 1 and %d" -msgstr "numéro d'opérateur %d invalide, doit être compris entre 1 et %d" +msgstr "numéro d'opérateur %d invalide, doit être compris entre 1 et %d" #: commands/opclasscmds.c:529 commands/opclasscmds.c:914 commands/opclasscmds.c:1011 #, c-format msgid "invalid procedure number %d, must be between 1 and %d" -msgstr "numéro de procédure %d invalide, doit être compris entre 1 et %d" +msgstr "numéro de procédure %d invalide, doit être compris entre 1 et %d" #: commands/opclasscmds.c:559 #, c-format msgid "storage type specified more than once" -msgstr "type de stockage spécifié plus d'une fois" +msgstr "type de stockage spécifié plus d'une fois" #: commands/opclasscmds.c:586 #, c-format msgid "storage type cannot be different from data type for access method \"%s\"" msgstr "" -"le type de stockage ne peut pas être différent du type de données pour la\n" -"méthode d'accès « %s »" +"le type de stockage ne peut pas être différent du type de données pour la\n" +"méthode d'accès « %s »" #: commands/opclasscmds.c:602 #, c-format msgid "operator class \"%s\" for access method \"%s\" already exists" -msgstr "la classe d'opérateur « %s » existe déjà pour la méthode d'accès « %s »" +msgstr "la classe d'opérateur « %s » existe déjà pour la méthode d'accès « %s »" #: commands/opclasscmds.c:630 #, c-format msgid "could not make operator class \"%s\" be default for type %s" -msgstr "n'a pas pu rendre la classe d'opérateur « %s » par défaut pour le type %s" +msgstr "n'a pas pu rendre la classe d'opérateur « %s » par défaut pour le type %s" #: commands/opclasscmds.c:633 #, c-format msgid "Operator class \"%s\" already is the default." -msgstr "La classe d'opérateur « %s » est déjà la classe par défaut." +msgstr "La classe d'opérateur « %s » est déjà la classe par défaut." #: commands/opclasscmds.c:760 #, c-format msgid "must be superuser to create an operator family" -msgstr "doit être super-utilisateur pour créer une famille d'opérateur" +msgstr "doit être super-utilisateur pour créer une famille d'opérateur" #: commands/opclasscmds.c:816 #, c-format msgid "must be superuser to alter an operator family" -msgstr "doit être super-utilisateur pour modifier une famille d'opérateur" +msgstr "doit être super-utilisateur pour modifier une famille d'opérateur" #: commands/opclasscmds.c:879 #, c-format msgid "operator argument types must be specified in ALTER OPERATOR FAMILY" msgstr "" -"les types d'argument de l'opérateur doivent être indiqués dans ALTER\n" +"les types d'argument de l'opérateur doivent être indiqués dans ALTER\n" "OPERATOR FAMILY" #: commands/opclasscmds.c:943 #, c-format msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY" -msgstr "STORAGE ne peut pas être spécifié dans ALTER OPERATOR FAMILY" +msgstr "STORAGE ne peut pas être spécifié dans ALTER OPERATOR FAMILY" #: commands/opclasscmds.c:1066 #, c-format msgid "one or two argument types must be specified" -msgstr "un ou deux types d'argument doit être spécifié" +msgstr "un ou deux types d'argument doit être spécifié" #: commands/opclasscmds.c:1092 #, c-format msgid "index operators must be binary" -msgstr "les opérateurs d'index doivent être binaires" +msgstr "les opérateurs d'index doivent être binaires" #: commands/opclasscmds.c:1111 #, c-format msgid "access method \"%s\" does not support ordering operators" -msgstr "la méthode d'accès « %s » ne supporte pas les opérateurs de tri" +msgstr "la méthode d'accès « %s » ne supporte pas les opérateurs de tri" #: commands/opclasscmds.c:1122 #, c-format msgid "index search operators must return boolean" -msgstr "les opérateurs de recherche d'index doivent renvoyer un booléen" +msgstr "les opérateurs de recherche d'index doivent renvoyer un booléen" #: commands/opclasscmds.c:1164 #, c-format msgid "btree comparison procedures must have two arguments" -msgstr "les procédures de comparaison btree doivent avoir deux arguments" +msgstr "les procédures de comparaison btree doivent avoir deux arguments" #: commands/opclasscmds.c:1168 #, c-format msgid "btree comparison procedures must return integer" -msgstr "les procédures de comparaison btree doivent renvoyer un entier" +msgstr "les procédures de comparaison btree doivent renvoyer un entier" #: commands/opclasscmds.c:1185 #, c-format msgid "btree sort support procedures must accept type \"internal\"" -msgstr "les procédures de support de tri btree doivent accepter le type « internal »" +msgstr "les procédures de support de tri btree doivent accepter le type « internal »" #: commands/opclasscmds.c:1189 #, c-format msgid "btree sort support procedures must return void" -msgstr "les procédures de support de tri btree doivent renvoyer void" +msgstr "les procédures de support de tri btree doivent renvoyer void" #: commands/opclasscmds.c:1201 #, c-format msgid "hash procedures must have one argument" -msgstr "les procédures de hachage doivent avoir un argument" +msgstr "les procédures de hachage doivent avoir un argument" #: commands/opclasscmds.c:1205 #, c-format msgid "hash procedures must return integer" -msgstr "les procédures de hachage doivent renvoyer un entier" +msgstr "les procédures de hachage doivent renvoyer un entier" #: commands/opclasscmds.c:1229 #, c-format msgid "associated data types must be specified for index support procedure" msgstr "" -"les types de données associés doivent être indiqués pour la procédure de\n" +"les types de données associés doivent être indiqués pour la procédure de\n" "support de l'index" #: commands/opclasscmds.c:1254 #, c-format msgid "procedure number %d for (%s,%s) appears more than once" -msgstr "le numéro de procédure %d pour (%s, %s) apparaît plus d'une fois" +msgstr "le numéro de procédure %d pour (%s, %s) apparaît plus d'une fois" #: commands/opclasscmds.c:1261 #, c-format msgid "operator number %d for (%s,%s) appears more than once" -msgstr "le numéro d'opérateur %d pour (%s, %s) apparaît plus d'une fois" +msgstr "le numéro d'opérateur %d pour (%s, %s) apparaît plus d'une fois" #: commands/opclasscmds.c:1310 #, c-format msgid "operator %d(%s,%s) already exists in operator family \"%s\"" -msgstr "l'opérateur %d(%s, %s) existe déjà dans la famille d'opérateur « %s »" +msgstr "l'opérateur %d(%s, %s) existe déjà dans la famille d'opérateur « %s »" #: commands/opclasscmds.c:1426 #, c-format msgid "function %d(%s,%s) already exists in operator family \"%s\"" -msgstr "la fonction %d(%s, %s) existe déjà dans la famille d'opérateur « %s »" +msgstr "la fonction %d(%s, %s) existe déjà dans la famille d'opérateur « %s »" #: commands/opclasscmds.c:1516 #, c-format msgid "operator %d(%s,%s) does not exist in operator family \"%s\"" -msgstr "l'opérateur %d(%s, %s) n'existe pas dans la famille d'opérateur « %s »" +msgstr "l'opérateur %d(%s, %s) n'existe pas dans la famille d'opérateur « %s »" #: commands/opclasscmds.c:1556 #, c-format msgid "function %d(%s,%s) does not exist in operator family \"%s\"" -msgstr "la fonction %d(%s, %s) n'existe pas dans la famille d'opérateur « %s »" +msgstr "la fonction %d(%s, %s) n'existe pas dans la famille d'opérateur « %s »" #: commands/opclasscmds.c:1686 #, c-format msgid "operator class \"%s\" for access method \"%s\" already exists in schema \"%s\"" msgstr "" -"la classe d'opérateur « %s » de la méthode d'accès « %s » existe déjà dans\n" -"le schéma « %s »" +"la classe d'opérateur « %s » de la méthode d'accès « %s » existe déjà dans\n" +"le schéma « %s »" #: commands/opclasscmds.c:1709 #, c-format msgid "operator family \"%s\" for access method \"%s\" already exists in schema \"%s\"" msgstr "" -"la famille d'opérateur « %s » de la méthode d'accès « %s » existe déjà dans\n" -"le schéma « %s »" +"la famille d'opérateur « %s » de la méthode d'accès « %s » existe déjà dans\n" +"le schéma « %s »" #: commands/operatorcmds.c:114 commands/operatorcmds.c:122 #, c-format msgid "SETOF type not allowed for operator argument" -msgstr "type SETOF non autorisé pour l'argument de l'opérateur" +msgstr "type SETOF non autorisé pour l'argument de l'opérateur" #: commands/operatorcmds.c:152 commands/operatorcmds.c:457 #, c-format msgid "operator attribute \"%s\" not recognized" -msgstr "l'attribut « %s » de l'opérateur n'est pas reconnu" +msgstr "l'attribut « %s » de l'opérateur n'est pas reconnu" #: commands/operatorcmds.c:163 #, c-format msgid "operator procedure must be specified" -msgstr "la procédure de l'opérateur doit être spécifiée" +msgstr "la procédure de l'opérateur doit être spécifiée" #: commands/operatorcmds.c:174 #, c-format msgid "at least one of leftarg or rightarg must be specified" -msgstr "au moins un des arguments (le gauche ou le droit) doit être spécifié" +msgstr "au moins un des arguments (le gauche ou le droit) doit être spécifié" #: commands/operatorcmds.c:278 #, c-format @@ -7430,240 +7200,240 @@ msgstr "" #: commands/operatorcmds.c:451 #, c-format msgid "operator attribute \"%s\" cannot be changed" -msgstr "l'attribut « %s » de l'opérateur ne peut pas être changé" +msgstr "l'attribut « %s » de l'opérateur ne peut pas être changé" -#: commands/policy.c:87 commands/policy.c:388 commands/policy.c:477 commands/tablecmds.c:970 commands/tablecmds.c:1312 commands/tablecmds.c:2184 commands/tablecmds.c:4328 commands/tablecmds.c:6279 commands/tablecmds.c:11933 commands/tablecmds.c:11968 commands/trigger.c:241 commands/trigger.c:1125 commands/trigger.c:1233 rewrite/rewriteDefine.c:273 rewrite/rewriteDefine.c:917 +#: commands/policy.c:87 commands/policy.c:388 commands/policy.c:477 commands/tablecmds.c:971 commands/tablecmds.c:1313 commands/tablecmds.c:2185 commands/tablecmds.c:4329 commands/tablecmds.c:6280 commands/tablecmds.c:12081 commands/tablecmds.c:12116 commands/trigger.c:241 commands/trigger.c:1125 commands/trigger.c:1233 rewrite/rewriteDefine.c:273 rewrite/rewriteDefine.c:917 #, c-format msgid "permission denied: \"%s\" is a system catalog" -msgstr "droit refusé : « %s » est un catalogue système" +msgstr "droit refusé : « %s » est un catalogue système" #: commands/policy.c:170 #, c-format msgid "ignoring specified roles other than PUBLIC" -msgstr "ingore les rôles spécifiés autre que PUBLIC" +msgstr "ingore les rôles spécifiés autre que PUBLIC" #: commands/policy.c:171 #, c-format msgid "All roles are members of the PUBLIC role." -msgstr "Tous les rôles sont membres du rôle PUBLIC." +msgstr "Tous les rôles sont membres du rôle PUBLIC." #: commands/policy.c:501 #, c-format msgid "role \"%s\" could not be removed from policy \"%s\" on \"%s\"" -msgstr "le rôle « %s » n'a pas pu être supprimé de la politique « %s » sur « %s »" +msgstr "le rôle « %s » n'a pas pu être supprimé de la politique « %s » sur « %s »" #: commands/policy.c:710 #, c-format msgid "WITH CHECK cannot be applied to SELECT or DELETE" -msgstr "WITH CHECK ne peut pas être appliqué à SELECT et DELETE" +msgstr "WITH CHECK ne peut pas être appliqué à SELECT et DELETE" #: commands/policy.c:719 commands/policy.c:1019 #, c-format msgid "only WITH CHECK expression allowed for INSERT" -msgstr "seule une expression WITH CHECK est autorisée pour INSERT" +msgstr "seule une expression WITH CHECK est autorisée pour INSERT" #: commands/policy.c:792 commands/policy.c:1242 #, c-format msgid "policy \"%s\" for table \"%s\" already exists" -msgstr "la politique « %s » pour la table « %s » existe déjà" +msgstr "la politique « %s » pour la table « %s » existe déjà" #: commands/policy.c:991 commands/policy.c:1270 commands/policy.c:1345 #, c-format msgid "policy \"%s\" for table \"%s\" does not exist" -msgstr "la politique « %s » pour la table « %s » n'existe pas" +msgstr "la politique « %s » pour la table « %s » n'existe pas" #: commands/policy.c:1009 #, c-format msgid "only USING expression allowed for SELECT, DELETE" -msgstr "seule une expression USING est autorisée pour SELECT, DELETE" +msgstr "seule une expression USING est autorisée pour SELECT, DELETE" #: commands/portalcmds.c:61 commands/portalcmds.c:160 commands/portalcmds.c:212 #, c-format msgid "invalid cursor name: must not be empty" -msgstr "nom de curseur invalide : il ne doit pas être vide" +msgstr "nom de curseur invalide : il ne doit pas être vide" -#: commands/portalcmds.c:168 commands/portalcmds.c:222 executor/execCurrent.c:67 utils/adt/xml.c:2389 utils/adt/xml.c:2556 +#: commands/portalcmds.c:168 commands/portalcmds.c:222 executor/execCurrent.c:67 utils/adt/xml.c:2399 utils/adt/xml.c:2569 #, c-format msgid "cursor \"%s\" does not exist" -msgstr "le curseur « %s » n'existe pas" +msgstr "le curseur « %s » n'existe pas" #: commands/prepare.c:71 #, c-format msgid "invalid statement name: must not be empty" -msgstr "nom de l'instruction invalide : ne doit pas être vide" +msgstr "nom de l'instruction invalide : ne doit pas être vide" -#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1343 +#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1335 #, c-format msgid "could not determine data type of parameter $%d" -msgstr "n'a pas pu déterminer le type de données du paramètre $%d" +msgstr "n'a pas pu déterminer le type de données du paramètre $%d" #: commands/prepare.c:147 #, c-format msgid "utility statements cannot be prepared" -msgstr "les instructions utilitaires ne peuvent pas être préparées" +msgstr "les instructions utilitaires ne peuvent pas être préparées" #: commands/prepare.c:257 commands/prepare.c:264 #, c-format msgid "prepared statement is not a SELECT" -msgstr "l'instruction préparée n'est pas un SELECT" +msgstr "l'instruction préparée n'est pas un SELECT" #: commands/prepare.c:332 #, c-format msgid "wrong number of parameters for prepared statement \"%s\"" -msgstr "mauvais nombre de paramètres pour l'instruction préparée « %s »" +msgstr "mauvais nombre de paramètres pour l'instruction préparée « %s »" #: commands/prepare.c:334 #, c-format msgid "Expected %d parameters but got %d." -msgstr "%d paramètres attendus mais %d reçus." +msgstr "%d paramètres attendus mais %d reçus." #: commands/prepare.c:370 #, c-format msgid "parameter $%d of type %s cannot be coerced to the expected type %s" msgstr "" -"le paramètre $%d de type %s ne peut être utilisé dans la coercion à cause du\n" +"le paramètre $%d de type %s ne peut être utilisé dans la coercion à cause du\n" "type %s attendu" #: commands/prepare.c:465 #, c-format msgid "prepared statement \"%s\" already exists" -msgstr "l'instruction préparée « %s » existe déjà" +msgstr "l'instruction préparée « %s » existe déjà" #: commands/prepare.c:504 #, c-format msgid "prepared statement \"%s\" does not exist" -msgstr "l'instruction préparée « %s » n'existe pas" +msgstr "l'instruction préparée « %s » n'existe pas" #: commands/proclang.c:87 #, c-format msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters" msgstr "" -"utilisation des informations de pg_pltemplate au lieu des paramètres de\n" +"utilisation des informations de pg_pltemplate au lieu des paramètres de\n" "CREATE LANGUAGE" #: commands/proclang.c:97 #, c-format msgid "must be superuser to create procedural language \"%s\"" -msgstr "doit être super-utilisateur pour créer le langage de procédures « %s »" +msgstr "doit être super-utilisateur pour créer le langage de procédures « %s »" #: commands/proclang.c:252 #, c-format msgid "unsupported language \"%s\"" -msgstr "langage non supporté « %s »" +msgstr "langage non supporté « %s »" #: commands/proclang.c:254 #, c-format msgid "The supported languages are listed in the pg_pltemplate system catalog." -msgstr "Les langages supportés sont listés dans le catalogue système pg_pltemplate." +msgstr "Les langages supportés sont listés dans le catalogue système pg_pltemplate." #: commands/proclang.c:262 #, c-format msgid "must be superuser to create custom procedural language" -msgstr "doit être super-utilisateur pour créer un langage de procédures personnalisé" +msgstr "doit être super-utilisateur pour créer un langage de procédures personnalisé" #: commands/proclang.c:281 #, c-format msgid "changing return type of function %s from \"opaque\" to \"language_handler\"" msgstr "" -"changement du type du code retour de la fonction %s d'« opaque » à\n" -"« language_handler »" +"changement du type du code retour de la fonction %s d'« opaque » à\n" +"« language_handler »" #: commands/schemacmds.c:99 commands/schemacmds.c:262 #, c-format msgid "unacceptable schema name \"%s\"" -msgstr "nom de schéma « %s » inacceptable" +msgstr "nom de schéma « %s » inacceptable" #: commands/schemacmds.c:100 commands/schemacmds.c:263 #, c-format msgid "The prefix \"pg_\" is reserved for system schemas." -msgstr "Le préfixe « pg_ » est réservé pour les schémas système." +msgstr "Le préfixe « pg_ » est réservé pour les schémas système." #: commands/schemacmds.c:114 #, c-format msgid "schema \"%s\" already exists, skipping" -msgstr "la schéma « %s » existe déjà, poursuite du traitement" +msgstr "la schéma « %s » existe déjà, poursuite du traitement" #: commands/seclabel.c:60 #, c-format msgid "no security label providers have been loaded" -msgstr "aucun fournisseur de label de sécurité n'a été chargé" +msgstr "aucun fournisseur de label de sécurité n'a été chargé" #: commands/seclabel.c:64 #, c-format msgid "must specify provider when multiple security label providers have been loaded" -msgstr "doit indiquer le fournisseur quand plusieurs fournisseurs de labels de sécurité sont chargés" +msgstr "doit indiquer le fournisseur quand plusieurs fournisseurs de labels de sécurité sont chargés" #: commands/seclabel.c:82 #, c-format msgid "security label provider \"%s\" is not loaded" -msgstr "le fournisseur « %s » de label de sécurité n'est pas chargé" +msgstr "le fournisseur « %s » de label de sécurité n'est pas chargé" #: commands/sequence.c:127 #, c-format msgid "unlogged sequences are not supported" -msgstr "les séquences non tracées ne sont pas supportées" +msgstr "les séquences non tracées ne sont pas supportées" #: commands/sequence.c:651 #, c-format msgid "nextval: reached maximum value of sequence \"%s\" (%s)" -msgstr "nextval : valeur maximale de la séquence « %s » (%s) atteinte" +msgstr "nextval : valeur maximale de la séquence « %s » (%s) atteinte" #: commands/sequence.c:674 #, c-format msgid "nextval: reached minimum value of sequence \"%s\" (%s)" -msgstr "nextval : valeur minimale de la séquence « %s » (%s) atteinte" +msgstr "nextval : valeur minimale de la séquence « %s » (%s) atteinte" #: commands/sequence.c:792 #, c-format msgid "currval of sequence \"%s\" is not yet defined in this session" msgstr "" -"la valeur courante (currval) de la séquence « %s » n'est pas encore définie\n" +"la valeur courante (currval) de la séquence « %s » n'est pas encore définie\n" "dans cette session" #: commands/sequence.c:811 commands/sequence.c:817 #, c-format msgid "lastval is not yet defined in this session" -msgstr "la dernière valeur (lastval) n'est pas encore définie dans cette session" +msgstr "la dernière valeur (lastval) n'est pas encore définie dans cette session" #: commands/sequence.c:893 #, c-format msgid "setval: value %s is out of bounds for sequence \"%s\" (%s..%s)" -msgstr "setval : la valeur %s est en dehors des limites de la séquence « %s » (%s..%s)" +msgstr "setval : la valeur %s est en dehors des limites de la séquence « %s » (%s..%s)" #: commands/sequence.c:1267 #, c-format msgid "INCREMENT must not be zero" -msgstr "la valeur INCREMENT ne doit pas être zéro" +msgstr "la valeur INCREMENT ne doit pas être zéro" #: commands/sequence.c:1323 #, c-format msgid "MINVALUE (%s) must be less than MAXVALUE (%s)" -msgstr "la valeur MINVALUE (%s) doit être moindre que la valeur MAXVALUE (%s)" +msgstr "la valeur MINVALUE (%s) doit être moindre que la valeur MAXVALUE (%s)" #: commands/sequence.c:1348 #, c-format msgid "START value (%s) cannot be less than MINVALUE (%s)" -msgstr "la valeur START (%s) ne peut pas être plus petite que celle de MINVALUE (%s)" +msgstr "la valeur START (%s) ne peut pas être plus petite que celle de MINVALUE (%s)" #: commands/sequence.c:1360 #, c-format msgid "START value (%s) cannot be greater than MAXVALUE (%s)" -msgstr "la valeur START (%s) ne peut pas être plus grande que celle de MAXVALUE (%s)" +msgstr "la valeur START (%s) ne peut pas être plus grande que celle de MAXVALUE (%s)" #: commands/sequence.c:1390 #, c-format msgid "RESTART value (%s) cannot be less than MINVALUE (%s)" -msgstr "la valeur RESTART (%s) ne peut pas être plus petite que celle de MINVALUE (%s)" +msgstr "la valeur RESTART (%s) ne peut pas être plus petite que celle de MINVALUE (%s)" #: commands/sequence.c:1402 #, c-format msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)" -msgstr "la valeur RESTART (%s) ne peut pas être plus grande que celle de MAXVALUE (%s)" +msgstr "la valeur RESTART (%s) ne peut pas être plus grande que celle de MAXVALUE (%s)" #: commands/sequence.c:1417 #, c-format msgid "CACHE (%s) must be greater than zero" -msgstr "la valeur CACHE (%s) doit être plus grande que zéro" +msgstr "la valeur CACHE (%s) doit être plus grande que zéro" #: commands/sequence.c:1449 #, c-format @@ -7678,958 +7448,968 @@ msgstr "Indiquer OWNED BY table.colonne ou OWNED BY NONE." #: commands/sequence.c:1473 #, c-format msgid "referenced relation \"%s\" is not a table or foreign table" -msgstr "la relation référencée « %s » n'est ni une table ni une table distante" +msgstr "la relation référencée « %s » n'est ni une table ni une table distante" #: commands/sequence.c:1480 #, c-format msgid "sequence must have same owner as table it is linked to" -msgstr "la séquence doit avoir le même propriétaire que la table avec laquelle elle est liée" +msgstr "la séquence doit avoir le même propriétaire que la table avec laquelle elle est liée" #: commands/sequence.c:1484 #, c-format msgid "sequence must be in same schema as table it is linked to" -msgstr "la séquence doit être dans le même schéma que la table avec laquelle elle est liée" +msgstr "la séquence doit être dans le même schéma que la table avec laquelle elle est liée" -#: commands/tablecmds.c:215 +#: commands/tablecmds.c:216 #, c-format msgid "table \"%s\" does not exist" -msgstr "la table « %s » n'existe pas" +msgstr "la table « %s » n'existe pas" -#: commands/tablecmds.c:216 +#: commands/tablecmds.c:217 #, c-format msgid "table \"%s\" does not exist, skipping" -msgstr "la table « %s » n'existe pas, poursuite du traitement" +msgstr "la table « %s » n'existe pas, poursuite du traitement" -#: commands/tablecmds.c:218 +#: commands/tablecmds.c:219 msgid "Use DROP TABLE to remove a table." msgstr "Utilisez DROP TABLE pour supprimer une table." -#: commands/tablecmds.c:221 +#: commands/tablecmds.c:222 #, c-format msgid "sequence \"%s\" does not exist" -msgstr "la séquence « %s » n'existe pas" +msgstr "la séquence « %s » n'existe pas" -#: commands/tablecmds.c:222 +#: commands/tablecmds.c:223 #, c-format msgid "sequence \"%s\" does not exist, skipping" -msgstr "la séquence « %s » n'existe pas, poursuite du traitement" +msgstr "la séquence « %s » n'existe pas, poursuite du traitement" -#: commands/tablecmds.c:224 +#: commands/tablecmds.c:225 msgid "Use DROP SEQUENCE to remove a sequence." -msgstr "Utilisez DROP SEQUENCE pour supprimer une séquence." +msgstr "Utilisez DROP SEQUENCE pour supprimer une séquence." -#: commands/tablecmds.c:227 +#: commands/tablecmds.c:228 #, c-format msgid "view \"%s\" does not exist" -msgstr "la vue « %s » n'existe pas" +msgstr "la vue « %s » n'existe pas" -#: commands/tablecmds.c:228 +#: commands/tablecmds.c:229 #, c-format msgid "view \"%s\" does not exist, skipping" -msgstr "la vue « %s » n'existe pas, poursuite du traitement" +msgstr "la vue « %s » n'existe pas, poursuite du traitement" -#: commands/tablecmds.c:230 +#: commands/tablecmds.c:231 msgid "Use DROP VIEW to remove a view." msgstr "Utilisez DROP VIEW pour supprimer une vue." -#: commands/tablecmds.c:233 +#: commands/tablecmds.c:234 #, c-format msgid "materialized view \"%s\" does not exist" -msgstr "la vue matérialisée « %s » n'existe pas" +msgstr "la vue matérialisée « %s » n'existe pas" -#: commands/tablecmds.c:234 +#: commands/tablecmds.c:235 #, c-format msgid "materialized view \"%s\" does not exist, skipping" -msgstr "la vue matérialisée « %s » n'existe pas, poursuite du traitement" +msgstr "la vue matérialisée « %s » n'existe pas, poursuite du traitement" -#: commands/tablecmds.c:236 +#: commands/tablecmds.c:237 msgid "Use DROP MATERIALIZED VIEW to remove a materialized view." -msgstr "Utilisez DROP MATERIALIZED VIEW pour supprimer une vue matérialisée." +msgstr "Utilisez DROP MATERIALIZED VIEW pour supprimer une vue matérialisée." -#: commands/tablecmds.c:239 parser/parse_utilcmd.c:1645 +#: commands/tablecmds.c:240 parser/parse_utilcmd.c:1630 #, c-format msgid "index \"%s\" does not exist" -msgstr "l'index « %s » n'existe pas" +msgstr "l'index « %s » n'existe pas" -#: commands/tablecmds.c:240 +#: commands/tablecmds.c:241 #, c-format msgid "index \"%s\" does not exist, skipping" -msgstr "l'index « %s » n'existe pas, poursuite du traitement" +msgstr "l'index « %s » n'existe pas, poursuite du traitement" -#: commands/tablecmds.c:242 +#: commands/tablecmds.c:243 msgid "Use DROP INDEX to remove an index." msgstr "Utilisez DROP INDEX pour supprimer un index." -#: commands/tablecmds.c:247 +#: commands/tablecmds.c:248 #, c-format msgid "\"%s\" is not a type" -msgstr "« %s » n'est pas un type" +msgstr "« %s » n'est pas un type" -#: commands/tablecmds.c:248 +#: commands/tablecmds.c:249 msgid "Use DROP TYPE to remove a type." msgstr "Utilisez DROP TYPE pour supprimer un type." -#: commands/tablecmds.c:251 commands/tablecmds.c:8486 commands/tablecmds.c:11194 +#: commands/tablecmds.c:252 commands/tablecmds.c:8584 commands/tablecmds.c:11336 #, c-format msgid "foreign table \"%s\" does not exist" -msgstr "la table distante « %s » n'existe pas" +msgstr "la table distante « %s » n'existe pas" -#: commands/tablecmds.c:252 +#: commands/tablecmds.c:253 #, c-format msgid "foreign table \"%s\" does not exist, skipping" -msgstr "la table distante « %s » n'existe pas, poursuite du traitement" +msgstr "la table distante « %s » n'existe pas, poursuite du traitement" -#: commands/tablecmds.c:254 +#: commands/tablecmds.c:255 msgid "Use DROP FOREIGN TABLE to remove a foreign table." msgstr "Utilisez DROP FOREIGN TABLE pour supprimer une table distante." -#: commands/tablecmds.c:493 +#: commands/tablecmds.c:494 #, c-format msgid "ON COMMIT can only be used on temporary tables" -msgstr "ON COMMIT peut seulement être utilisé sur des tables temporaires" +msgstr "ON COMMIT peut seulement être utilisé sur des tables temporaires" -#: commands/tablecmds.c:513 +#: commands/tablecmds.c:514 #, c-format msgid "cannot create temporary table within security-restricted operation" msgstr "" -"ne peut pas créer une table temporaire à l'intérieur d'une fonction\n" -"restreinte pour sécurité" +"ne peut pas créer une table temporaire à l'intérieur d'une fonction\n" +"restreinte pour sécurité" -#: commands/tablecmds.c:821 +#: commands/tablecmds.c:822 #, c-format msgid "DROP INDEX CONCURRENTLY does not support dropping multiple objects" msgstr "DROP INDEX CONCURRENTLY ne permet pas de supprimer plusieurs objets" -#: commands/tablecmds.c:825 +#: commands/tablecmds.c:826 #, c-format msgid "DROP INDEX CONCURRENTLY does not support CASCADE" msgstr "DROP INDEX CONCURRENTLY ne permet pas la CASCADE" -#: commands/tablecmds.c:1084 +#: commands/tablecmds.c:1085 #, c-format msgid "truncate cascades to table \"%s\"" -msgstr "TRUNCATE cascade sur la table « %s »" +msgstr "TRUNCATE cascade sur la table « %s »" -#: commands/tablecmds.c:1322 +#: commands/tablecmds.c:1323 #, c-format msgid "cannot truncate temporary tables of other sessions" msgstr "ne peut pas tronquer les tables temporaires des autres sessions" -#: commands/tablecmds.c:1528 parser/parse_utilcmd.c:1859 +#: commands/tablecmds.c:1529 parser/parse_utilcmd.c:1844 #, c-format msgid "inherited relation \"%s\" is not a table or foreign table" -msgstr "la relation héritée « %s » n'est ni une table ni une table distante" +msgstr "la relation héritée « %s » n'est ni une table ni une table distante" -#: commands/tablecmds.c:1535 commands/tablecmds.c:10053 +#: commands/tablecmds.c:1536 commands/tablecmds.c:10151 #, c-format msgid "cannot inherit from temporary relation \"%s\"" -msgstr "ine peut pas hériter à partir d'une relation temporaire « %s »" +msgstr "ine peut pas hériter à partir d'une relation temporaire « %s »" -#: commands/tablecmds.c:1543 commands/tablecmds.c:10061 +#: commands/tablecmds.c:1544 commands/tablecmds.c:10159 #, c-format msgid "cannot inherit from temporary relation of another session" -msgstr "ne peut pas hériter de la table temporaire d'une autre session" +msgstr "ne peut pas hériter de la table temporaire d'une autre session" -#: commands/tablecmds.c:1559 commands/tablecmds.c:10095 +#: commands/tablecmds.c:1560 commands/tablecmds.c:10193 #, c-format msgid "relation \"%s\" would be inherited from more than once" -msgstr "la relation « %s » serait héritée plus d'une fois" +msgstr "la relation « %s » serait héritée plus d'une fois" -#: commands/tablecmds.c:1607 +#: commands/tablecmds.c:1608 #, c-format msgid "merging multiple inherited definitions of column \"%s\"" -msgstr "assemblage de plusieurs définitions d'héritage pour la colonne « %s »" +msgstr "assemblage de plusieurs définitions d'héritage pour la colonne « %s »" -#: commands/tablecmds.c:1615 +#: commands/tablecmds.c:1616 #, c-format msgid "inherited column \"%s\" has a type conflict" -msgstr "la colonne héritée « %s » a un conflit de type" +msgstr "la colonne héritée « %s » a un conflit de type" -#: commands/tablecmds.c:1617 commands/tablecmds.c:1640 commands/tablecmds.c:1838 commands/tablecmds.c:1862 parser/parse_coerce.c:1630 parser/parse_coerce.c:1650 parser/parse_coerce.c:1670 parser/parse_coerce.c:1715 parser/parse_coerce.c:1752 parser/parse_param.c:218 +#: commands/tablecmds.c:1618 commands/tablecmds.c:1641 commands/tablecmds.c:1839 commands/tablecmds.c:1863 parser/parse_coerce.c:1630 parser/parse_coerce.c:1650 parser/parse_coerce.c:1670 parser/parse_coerce.c:1715 parser/parse_coerce.c:1752 parser/parse_param.c:218 #, c-format msgid "%s versus %s" msgstr "%s versus %s" -#: commands/tablecmds.c:1626 +#: commands/tablecmds.c:1627 #, c-format msgid "inherited column \"%s\" has a collation conflict" -msgstr "la colonne héritée « %s » a un conflit sur le collationnement" +msgstr "la colonne héritée « %s » a un conflit sur le collationnement" -#: commands/tablecmds.c:1628 commands/tablecmds.c:1850 commands/tablecmds.c:4766 +#: commands/tablecmds.c:1629 commands/tablecmds.c:1851 commands/tablecmds.c:4767 #, c-format msgid "\"%s\" versus \"%s\"" -msgstr "« %s » versus « %s »" +msgstr "« %s » versus « %s »" -#: commands/tablecmds.c:1638 +#: commands/tablecmds.c:1639 #, c-format msgid "inherited column \"%s\" has a storage parameter conflict" -msgstr "la colonne héritée « %s » a un conflit de paramètre de stockage" +msgstr "la colonne héritée « %s » a un conflit de paramètre de stockage" -#: commands/tablecmds.c:1751 parser/parse_utilcmd.c:938 parser/parse_utilcmd.c:1289 parser/parse_utilcmd.c:1365 +#: commands/tablecmds.c:1752 commands/tablecmds.c:8089 parser/parse_utilcmd.c:923 parser/parse_utilcmd.c:1274 parser/parse_utilcmd.c:1350 #, c-format msgid "cannot convert whole-row table reference" -msgstr "ne peut pas convertir une référence de ligne complète de table" +msgstr "ne peut pas convertir une référence de ligne complète de table" -#: commands/tablecmds.c:1752 parser/parse_utilcmd.c:939 +#: commands/tablecmds.c:1753 parser/parse_utilcmd.c:924 #, c-format msgid "Constraint \"%s\" contains a whole-row reference to table \"%s\"." -msgstr "La constrainte « %s » contient une référence de ligne complète vers la table « %s »." +msgstr "La constrainte « %s » contient une référence de ligne complète vers la table « %s »." -#: commands/tablecmds.c:1824 +#: commands/tablecmds.c:1825 #, c-format msgid "merging column \"%s\" with inherited definition" -msgstr "assemblage de la colonne « %s » avec une définition héritée" +msgstr "assemblage de la colonne « %s » avec une définition héritée" -#: commands/tablecmds.c:1828 +#: commands/tablecmds.c:1829 #, c-format msgid "moving and merging column \"%s\" with inherited definition" -msgstr "déplacement et assemblage de la colonne « %s » avec une définition héritée" +msgstr "déplacement et assemblage de la colonne « %s » avec une définition héritée" -#: commands/tablecmds.c:1829 +#: commands/tablecmds.c:1830 #, c-format msgid "User-specified column moved to the position of the inherited column." -msgstr "Colonne utilisateur déplacée à la position de la colonne héritée." +msgstr "Colonne utilisateur déplacée à la position de la colonne héritée." -#: commands/tablecmds.c:1836 +#: commands/tablecmds.c:1837 #, c-format msgid "column \"%s\" has a type conflict" -msgstr "la colonne « %s » a un conflit de type" +msgstr "la colonne « %s » a un conflit de type" -#: commands/tablecmds.c:1848 +#: commands/tablecmds.c:1849 #, c-format msgid "column \"%s\" has a collation conflict" -msgstr "la colonne « %s » a un conflit sur le collationnement" +msgstr "la colonne « %s » a un conflit sur le collationnement" -#: commands/tablecmds.c:1860 +#: commands/tablecmds.c:1861 #, c-format msgid "column \"%s\" has a storage parameter conflict" -msgstr "la colonne « %s » a un conflit de paramètre de stockage" +msgstr "la colonne « %s » a un conflit de paramètre de stockage" -#: commands/tablecmds.c:1912 +#: commands/tablecmds.c:1913 #, c-format msgid "column \"%s\" inherits conflicting default values" -msgstr "la colonne « %s » hérite de valeurs par défaut conflictuelles" +msgstr "la colonne « %s » hérite de valeurs par défaut conflictuelles" -#: commands/tablecmds.c:1914 +#: commands/tablecmds.c:1915 #, c-format msgid "To resolve the conflict, specify a default explicitly." -msgstr "Pour résoudre le conflit, spécifiez explicitement une valeur par défaut." +msgstr "Pour résoudre le conflit, spécifiez explicitement une valeur par défaut." -#: commands/tablecmds.c:1961 +#: commands/tablecmds.c:1962 #, c-format msgid "check constraint name \"%s\" appears multiple times but with different expressions" msgstr "" -"le nom de la contrainte de vérification, « %s », apparaît plusieurs fois\n" -"mais avec des expressions différentes" +"le nom de la contrainte de vérification, « %s », apparaît plusieurs fois\n" +"mais avec des expressions différentes" -#: commands/tablecmds.c:2155 +#: commands/tablecmds.c:2156 #, c-format msgid "cannot rename column of typed table" -msgstr "ne peut pas renommer une colonne d'une table typée" +msgstr "ne peut pas renommer une colonne d'une table typée" -#: commands/tablecmds.c:2172 +#: commands/tablecmds.c:2173 #, c-format msgid "\"%s\" is not a table, view, materialized view, composite type, index, or foreign table" -msgstr "« %s » n'est ni une table, ni une vue, ni une vue matérialisée, ni un type composite, ni un index, ni une table distante" +msgstr "« %s » n'est ni une table, ni une vue, ni une vue matérialisée, ni un type composite, ni un index, ni une table distante" -#: commands/tablecmds.c:2266 +#: commands/tablecmds.c:2267 #, c-format msgid "inherited column \"%s\" must be renamed in child tables too" -msgstr "la colonne héritée « %s » doit aussi être renommée pour les tables filles" +msgstr "la colonne héritée « %s » doit aussi être renommée pour les tables filles" -#: commands/tablecmds.c:2298 +#: commands/tablecmds.c:2299 #, c-format msgid "cannot rename system column \"%s\"" -msgstr "ne peut pas renommer la colonne système « %s »" +msgstr "ne peut pas renommer la colonne système « %s »" -#: commands/tablecmds.c:2313 +#: commands/tablecmds.c:2314 #, c-format msgid "cannot rename inherited column \"%s\"" -msgstr "ne peut pas renommer la colonne héritée « %s »" +msgstr "ne peut pas renommer la colonne héritée « %s »" -#: commands/tablecmds.c:2468 +#: commands/tablecmds.c:2469 #, c-format msgid "inherited constraint \"%s\" must be renamed in child tables too" -msgstr "la contrainte héritée « %s » doit aussi être renommée pour les tables enfants" +msgstr "la contrainte héritée « %s » doit aussi être renommée pour les tables enfants" -#: commands/tablecmds.c:2475 +#: commands/tablecmds.c:2476 #, c-format msgid "cannot rename inherited constraint \"%s\"" -msgstr "ne peut pas renommer la colonne héritée « %s »" +msgstr "ne peut pas renommer la colonne héritée « %s »" #. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2701 +#: commands/tablecmds.c:2702 #, c-format msgid "cannot %s \"%s\" because it is being used by active queries in this session" msgstr "" -"ne peut pas exécuter %s « %s » car cet objet est en cours d'utilisation par\n" -"des requêtes actives dans cette session" +"ne peut pas exécuter %s « %s » car cet objet est en cours d'utilisation par\n" +"des requêtes actives dans cette session" #. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2710 +#: commands/tablecmds.c:2711 #, c-format msgid "cannot %s \"%s\" because it has pending trigger events" -msgstr "ne peut pas exécuter %s « %s » car il reste des événements sur les triggers" +msgstr "ne peut pas exécuter %s « %s » car il reste des événements sur les triggers" -#: commands/tablecmds.c:3784 +#: commands/tablecmds.c:3785 #, c-format msgid "cannot rewrite system relation \"%s\"" -msgstr "ne peut pas ré-écrire la relation système « %s »" +msgstr "ne peut pas ré-écrire la relation système « %s »" -#: commands/tablecmds.c:3790 +#: commands/tablecmds.c:3791 #, c-format msgid "cannot rewrite table \"%s\" used as a catalog table" -msgstr "ne peut pas réécrire la table « %s » utilisée comme une table catalogue" +msgstr "ne peut pas réécrire la table « %s » utilisée comme une table catalogue" -#: commands/tablecmds.c:3800 +#: commands/tablecmds.c:3801 #, c-format msgid "cannot rewrite temporary tables of other sessions" -msgstr "ne peut pas ré-écrire les tables temporaires des autres sessions" +msgstr "ne peut pas ré-écrire les tables temporaires des autres sessions" -#: commands/tablecmds.c:4068 +#: commands/tablecmds.c:4069 #, c-format msgid "rewriting table \"%s\"" -msgstr "ré-écriture de la table « %s »" +msgstr "ré-écriture de la table « %s »" -#: commands/tablecmds.c:4072 +#: commands/tablecmds.c:4073 #, c-format msgid "verifying table \"%s\"" -msgstr "vérification de la table « %s »" +msgstr "vérification de la table « %s »" -#: commands/tablecmds.c:4186 +#: commands/tablecmds.c:4187 #, c-format msgid "column \"%s\" contains null values" -msgstr "la colonne « %s » contient des valeurs NULL" +msgstr "la colonne « %s » contient des valeurs NULL" -#: commands/tablecmds.c:4201 commands/tablecmds.c:7366 +#: commands/tablecmds.c:4202 commands/tablecmds.c:7386 #, c-format msgid "check constraint \"%s\" is violated by some row" -msgstr "la contrainte de vérification « %s » est rompue par une ligne" +msgstr "la contrainte de vérification « %s » est rompue par une ligne" -#: commands/tablecmds.c:4349 commands/trigger.c:235 rewrite/rewriteDefine.c:267 rewrite/rewriteDefine.c:912 +#: commands/tablecmds.c:4350 commands/trigger.c:235 rewrite/rewriteDefine.c:267 rewrite/rewriteDefine.c:912 #, c-format msgid "\"%s\" is not a table or view" -msgstr "« %s » n'est pas une table ou une vue" +msgstr "« %s » n'est pas une table ou une vue" -#: commands/tablecmds.c:4352 commands/trigger.c:1119 commands/trigger.c:1224 +#: commands/tablecmds.c:4353 commands/trigger.c:1119 commands/trigger.c:1224 #, c-format msgid "\"%s\" is not a table, view, or foreign table" -msgstr "« %s » n'est pas une table, une vue ou une table distante" +msgstr "« %s » n'est pas une table, une vue ou une table distante" -#: commands/tablecmds.c:4355 +#: commands/tablecmds.c:4356 #, c-format msgid "\"%s\" is not a table, view, materialized view, or index" -msgstr "« %s » n'est pas une table, une vue, une vue matérialisée, une séquence ou une table distante" +msgstr "« %s » n'est pas une table, une vue, une vue matérialisée, une séquence ou une table distante" -#: commands/tablecmds.c:4361 +#: commands/tablecmds.c:4362 #, c-format msgid "\"%s\" is not a table, materialized view, or index" -msgstr "« %s » n'est pas une table, une vue matérialisée ou un index" +msgstr "« %s » n'est pas une table, une vue matérialisée ou un index" -#: commands/tablecmds.c:4364 +#: commands/tablecmds.c:4365 #, c-format msgid "\"%s\" is not a table, materialized view, or foreign table" -msgstr "« %s » n'est pas une table, une vue matérialisée ou une table distante" +msgstr "« %s » n'est pas une table, une vue matérialisée ou une table distante" -#: commands/tablecmds.c:4367 +#: commands/tablecmds.c:4368 #, c-format msgid "\"%s\" is not a table or foreign table" -msgstr "« %s » n'est pas une table ou une table distante" +msgstr "« %s » n'est pas une table ou une table distante" -#: commands/tablecmds.c:4370 +#: commands/tablecmds.c:4371 #, c-format msgid "\"%s\" is not a table, composite type, or foreign table" -msgstr "« %s » n'est ni une table, ni un type composite, ni une table distante" +msgstr "« %s » n'est ni une table, ni un type composite, ni une table distante" -#: commands/tablecmds.c:4373 commands/tablecmds.c:5425 +#: commands/tablecmds.c:4374 commands/tablecmds.c:5426 #, c-format msgid "\"%s\" is not a table, materialized view, index, or foreign table" -msgstr "« %s » n'est pas une table, une vue matérialisée, un index ou une table distante" +msgstr "« %s » n'est pas une table, une vue matérialisée, un index ou une table distante" -#: commands/tablecmds.c:4383 +#: commands/tablecmds.c:4384 #, c-format msgid "\"%s\" is of the wrong type" -msgstr "« %s » est du mauvais type" +msgstr "« %s » est du mauvais type" -#: commands/tablecmds.c:4535 commands/tablecmds.c:4542 +#: commands/tablecmds.c:4536 commands/tablecmds.c:4543 #, c-format msgid "cannot alter type \"%s\" because column \"%s.%s\" uses it" -msgstr "ne peux pas modifier le type « %s » car la colonne « %s.%s » l'utilise" +msgstr "ne peux pas modifier le type « %s » car la colonne « %s.%s » l'utilise" -#: commands/tablecmds.c:4549 +#: commands/tablecmds.c:4550 #, c-format msgid "cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type" msgstr "" -"ne peut pas modifier la table distante « %s » car la colonne « %s.%s » utilise\n" +"ne peut pas modifier la table distante « %s » car la colonne « %s.%s » utilise\n" "son type de ligne" -#: commands/tablecmds.c:4556 +#: commands/tablecmds.c:4557 #, c-format msgid "cannot alter table \"%s\" because column \"%s.%s\" uses its row type" msgstr "" -"ne peut pas modifier la table « %s » car la colonne « %s.%s » utilise\n" +"ne peut pas modifier la table « %s » car la colonne « %s.%s » utilise\n" "son type de ligne" -#: commands/tablecmds.c:4618 +#: commands/tablecmds.c:4619 #, c-format msgid "cannot alter type \"%s\" because it is the type of a typed table" -msgstr "ne peut pas modifier le type « %s » car il s'agit du type d'une table de type" +msgstr "ne peut pas modifier le type « %s » car il s'agit du type d'une table de type" -#: commands/tablecmds.c:4620 +#: commands/tablecmds.c:4621 #, c-format msgid "Use ALTER ... CASCADE to alter the typed tables too." msgstr "Utilisez ALTER ... CASCADE pour modifier aussi les tables de type." -#: commands/tablecmds.c:4664 +#: commands/tablecmds.c:4665 #, c-format msgid "type %s is not a composite type" msgstr "le type %s n'est pas un type composite" -#: commands/tablecmds.c:4690 +#: commands/tablecmds.c:4691 #, c-format msgid "cannot add column to typed table" -msgstr "ne peut pas ajouter une colonne à une table typée" +msgstr "ne peut pas ajouter une colonne à une table typée" -#: commands/tablecmds.c:4758 commands/tablecmds.c:10254 +#: commands/tablecmds.c:4759 commands/tablecmds.c:10352 #, c-format msgid "child table \"%s\" has different type for column \"%s\"" -msgstr "la table fille « %s » a un type différent pour la colonne « %s »" +msgstr "la table fille « %s » a un type différent pour la colonne « %s »" -#: commands/tablecmds.c:4764 commands/tablecmds.c:10261 +#: commands/tablecmds.c:4765 commands/tablecmds.c:10359 #, c-format msgid "child table \"%s\" has different collation for column \"%s\"" -msgstr "la table fille « %s » a un collationnement différent pour la colonne « %s »" +msgstr "la table fille « %s » a un collationnement différent pour la colonne « %s »" -#: commands/tablecmds.c:4774 +#: commands/tablecmds.c:4775 #, c-format msgid "child table \"%s\" has a conflicting \"%s\" column" -msgstr "la table fille « %s » a une colonne conflictuelle, « %s »" +msgstr "la table fille « %s » a une colonne conflictuelle, « %s »" -#: commands/tablecmds.c:4786 +#: commands/tablecmds.c:4787 #, c-format msgid "merging definition of column \"%s\" for child \"%s\"" -msgstr "assemblage de la définition de la colonne « %s » pour le fils « %s »" +msgstr "assemblage de la définition de la colonne « %s » pour le fils « %s »" -#: commands/tablecmds.c:5013 +#: commands/tablecmds.c:5014 #, c-format msgid "column must be added to child tables too" -msgstr "la colonne doit aussi être ajoutée aux tables filles" +msgstr "la colonne doit aussi être ajoutée aux tables filles" -#: commands/tablecmds.c:5088 +#: commands/tablecmds.c:5089 #, c-format msgid "column \"%s\" of relation \"%s\" already exists, skipping" -msgstr "la colonne « %s » de la relation « %s » existe déjà, poursuite du traitement" +msgstr "la colonne « %s » de la relation « %s » existe déjà, poursuite du traitement" -#: commands/tablecmds.c:5095 +#: commands/tablecmds.c:5096 #, c-format msgid "column \"%s\" of relation \"%s\" already exists" -msgstr "la colonne « %s » de la relation « %s » existe déjà" +msgstr "la colonne « %s » de la relation « %s » existe déjà" -#: commands/tablecmds.c:5206 commands/tablecmds.c:5312 commands/tablecmds.c:5370 commands/tablecmds.c:5484 commands/tablecmds.c:5541 commands/tablecmds.c:5635 commands/tablecmds.c:7884 commands/tablecmds.c:8509 +#: commands/tablecmds.c:5207 commands/tablecmds.c:5313 commands/tablecmds.c:5371 commands/tablecmds.c:5485 commands/tablecmds.c:5542 commands/tablecmds.c:5636 commands/tablecmds.c:7925 commands/tablecmds.c:8607 #, c-format msgid "cannot alter system column \"%s\"" -msgstr "n'a pas pu modifier la colonne système « %s »" +msgstr "n'a pas pu modifier la colonne système « %s »" -#: commands/tablecmds.c:5242 +#: commands/tablecmds.c:5243 #, c-format msgid "column \"%s\" is in a primary key" -msgstr "la colonne « %s » est dans une clé primaire" +msgstr "la colonne « %s » est dans une clé primaire" -#: commands/tablecmds.c:5457 +#: commands/tablecmds.c:5458 #, c-format msgid "statistics target %d is too low" msgstr "la cible statistique %d est trop basse" -#: commands/tablecmds.c:5465 +#: commands/tablecmds.c:5466 #, c-format msgid "lowering statistics target to %d" -msgstr "abaissement de la cible statistique à %d" +msgstr "abaissement de la cible statistique à %d" -#: commands/tablecmds.c:5615 +#: commands/tablecmds.c:5616 #, c-format msgid "invalid storage type \"%s\"" -msgstr "type « %s » de stockage invalide" +msgstr "type « %s » de stockage invalide" -#: commands/tablecmds.c:5647 +#: commands/tablecmds.c:5648 #, c-format msgid "column data type %s can only have storage PLAIN" -msgstr "le type de données %s de la colonne peut seulement avoir un stockage PLAIN" +msgstr "le type de données %s de la colonne peut seulement avoir un stockage PLAIN" -#: commands/tablecmds.c:5685 +#: commands/tablecmds.c:5686 #, c-format msgid "cannot drop column from typed table" -msgstr "ne peut pas supprimer une colonne à une table typée" +msgstr "ne peut pas supprimer une colonne à une table typée" -#: commands/tablecmds.c:5729 +#: commands/tablecmds.c:5730 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist, skipping" -msgstr "la colonne « %s » de la relation « %s » n'existe pas, ignore" +msgstr "la colonne « %s » de la relation « %s » n'existe pas, ignore" -#: commands/tablecmds.c:5742 +#: commands/tablecmds.c:5743 #, c-format msgid "cannot drop system column \"%s\"" -msgstr "ne peut pas supprimer la colonne système « %s »" +msgstr "ne peut pas supprimer la colonne système « %s »" -#: commands/tablecmds.c:5749 +#: commands/tablecmds.c:5750 #, c-format msgid "cannot drop inherited column \"%s\"" -msgstr "ne peut pas supprimer la colonne héritée « %s »" +msgstr "ne peut pas supprimer la colonne héritée « %s »" -#: commands/tablecmds.c:5989 +#: commands/tablecmds.c:5990 #, c-format msgid "ALTER TABLE / ADD CONSTRAINT USING INDEX will rename index \"%s\" to \"%s\"" -msgstr "ALTER TABLE / ADD CONSTRAINT USING INDEX renommera l'index « %s » en « %s »" +msgstr "ALTER TABLE / ADD CONSTRAINT USING INDEX renommera l'index « %s » en « %s »" -#: commands/tablecmds.c:6202 +#: commands/tablecmds.c:6203 #, c-format msgid "constraint must be added to child tables too" -msgstr "la contrainte doit aussi être ajoutée aux tables filles" +msgstr "la contrainte doit aussi être ajoutée aux tables filles" -#: commands/tablecmds.c:6273 +#: commands/tablecmds.c:6274 #, c-format msgid "referenced relation \"%s\" is not a table" -msgstr "la relation référencée « %s » n'est pas une table" +msgstr "la relation référencée « %s » n'est pas une table" -#: commands/tablecmds.c:6296 +#: commands/tablecmds.c:6297 #, c-format msgid "constraints on permanent tables may reference only permanent tables" -msgstr "les contraintes sur les tables permanentes peuvent seulement référencer des tables permanentes" +msgstr "les contraintes sur les tables permanentes peuvent seulement référencer des tables permanentes" -#: commands/tablecmds.c:6303 +#: commands/tablecmds.c:6304 #, c-format msgid "constraints on unlogged tables may reference only permanent or unlogged tables" -msgstr "les contraintes sur les tables non tracées peuvent seulement référencer des tables permanentes ou non tracées" +msgstr "les contraintes sur les tables non tracées peuvent seulement référencer des tables permanentes ou non tracées" -#: commands/tablecmds.c:6309 +#: commands/tablecmds.c:6310 #, c-format msgid "constraints on temporary tables may reference only temporary tables" msgstr "" -"les constraintes sur des tables temporaires ne peuvent référencer que des\n" +"les constraintes sur des tables temporaires ne peuvent référencer que des\n" "tables temporaires" -#: commands/tablecmds.c:6313 +#: commands/tablecmds.c:6314 #, c-format msgid "constraints on temporary tables must involve temporary tables of this session" msgstr "" -"les contraintes sur des tables temporaires doivent référencer les tables\n" +"les contraintes sur des tables temporaires doivent référencer les tables\n" "temporaires de cette session" -#: commands/tablecmds.c:6374 +#: commands/tablecmds.c:6375 #, c-format msgid "number of referencing and referenced columns for foreign key disagree" -msgstr "nombre de colonnes de référence et référencées pour la clé étrangère en désaccord" +msgstr "nombre de colonnes de référence et référencées pour la clé étrangère en désaccord" -#: commands/tablecmds.c:6481 +#: commands/tablecmds.c:6482 #, c-format msgid "foreign key constraint \"%s\" cannot be implemented" -msgstr "la contrainte de clé étrangère « %s » ne peut pas être implémentée" +msgstr "la contrainte de clé étrangère « %s » ne peut pas être implémentée" -#: commands/tablecmds.c:6484 +#: commands/tablecmds.c:6485 #, c-format msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s." -msgstr "Les colonnes clés « %s » et « %s » sont de types incompatibles : %s et %s." +msgstr "Les colonnes clés « %s » et « %s » sont de types incompatibles : %s et %s." -#: commands/tablecmds.c:6691 commands/tablecmds.c:6841 commands/tablecmds.c:7723 commands/tablecmds.c:7779 +#: commands/tablecmds.c:6692 commands/tablecmds.c:6860 commands/tablecmds.c:7764 commands/tablecmds.c:7820 #, c-format msgid "constraint \"%s\" of relation \"%s\" does not exist" -msgstr "la contrainte « %s » de la relation « %s » n'existe pas" +msgstr "la contrainte « %s » de la relation « %s » n'existe pas" -#: commands/tablecmds.c:6697 +#: commands/tablecmds.c:6698 #, c-format msgid "constraint \"%s\" of relation \"%s\" is not a foreign key constraint" -msgstr "la contrainte « %s » de la relation « %s » n'est pas une clé étrangère" +msgstr "la contrainte « %s » de la relation « %s » n'est pas une clé étrangère" -#: commands/tablecmds.c:6848 +#: commands/tablecmds.c:6867 #, c-format msgid "constraint \"%s\" of relation \"%s\" is not a foreign key or check constraint" -msgstr "la contrainte « %s » de la relation « %s » n'est pas une clé étrangère ou une contrainte de vérification" +msgstr "la contrainte « %s » de la relation « %s » n'est pas une clé étrangère ou une contrainte de vérification" -#: commands/tablecmds.c:6916 +#: commands/tablecmds.c:6936 #, c-format msgid "constraint must be validated on child tables too" -msgstr "la contrainte doit aussi être validées sur les tables enfants" +msgstr "la contrainte doit aussi être validées sur les tables enfants" -#: commands/tablecmds.c:6985 +#: commands/tablecmds.c:7005 #, c-format msgid "column \"%s\" referenced in foreign key constraint does not exist" -msgstr "la colonne « %s » référencée dans la contrainte de clé étrangère n'existe pas" +msgstr "la colonne « %s » référencée dans la contrainte de clé étrangère n'existe pas" -#: commands/tablecmds.c:6990 +#: commands/tablecmds.c:7010 #, c-format msgid "cannot have more than %d keys in a foreign key" -msgstr "ne peut pas avoir plus de %d clés dans une clé étrangère" +msgstr "ne peut pas avoir plus de %d clés dans une clé étrangère" -#: commands/tablecmds.c:7055 +#: commands/tablecmds.c:7075 #, c-format msgid "cannot use a deferrable primary key for referenced table \"%s\"" -msgstr "ne peut pas utiliser une clé primaire déferrable pour la table « %s » référencée" +msgstr "ne peut pas utiliser une clé primaire déferrable pour la table « %s » référencée" -#: commands/tablecmds.c:7072 +#: commands/tablecmds.c:7092 #, c-format msgid "there is no primary key for referenced table \"%s\"" -msgstr "il n'existe pas de clé étrangère pour la table « %s » référencée" +msgstr "il n'existe pas de clé étrangère pour la table « %s » référencée" -#: commands/tablecmds.c:7137 +#: commands/tablecmds.c:7157 #, c-format msgid "foreign key referenced-columns list must not contain duplicates" -msgstr "la liste de colonnes référencées dans la clé étrangère ne doit pas contenir de duplicats" +msgstr "la liste de colonnes référencées dans la clé étrangère ne doit pas contenir de duplicats" -#: commands/tablecmds.c:7231 +#: commands/tablecmds.c:7251 #, c-format msgid "cannot use a deferrable unique constraint for referenced table \"%s\"" msgstr "" -"ne peut pas utiliser une contrainte unique déferrable pour la table\n" -"référencée « %s »" +"ne peut pas utiliser une contrainte unique déferrable pour la table\n" +"référencée « %s »" -#: commands/tablecmds.c:7236 +#: commands/tablecmds.c:7256 #, c-format msgid "there is no unique constraint matching given keys for referenced table \"%s\"" msgstr "" -"il n'existe aucune contrainte unique correspondant aux clés données pour la\n" -"table « %s » référencée" +"il n'existe aucune contrainte unique correspondant aux clés données pour la\n" +"table « %s » référencée" -#: commands/tablecmds.c:7399 +#: commands/tablecmds.c:7419 #, c-format msgid "validating foreign key constraint \"%s\"" -msgstr "validation de la contraintes de clé étrangère « %s »" +msgstr "validation de la contraintes de clé étrangère « %s »" -#: commands/tablecmds.c:7695 +#: commands/tablecmds.c:7718 #, c-format msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" -msgstr "ne peut pas supprimer la contrainte héritée « %s » de la relation « %s »" +msgstr "ne peut pas supprimer la contrainte héritée « %s » de la relation « %s »" -#: commands/tablecmds.c:7729 +#: commands/tablecmds.c:7770 #, c-format msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" -msgstr "la contrainte « %s » de la relation « %s » n'existe pas, ignore" +msgstr "la contrainte « %s » de la relation « %s » n'existe pas, ignore" -#: commands/tablecmds.c:7868 +#: commands/tablecmds.c:7909 #, c-format msgid "cannot alter column type of typed table" -msgstr "ne peut pas modifier le type d'une colonne appartenant à une table typée" +msgstr "ne peut pas modifier le type d'une colonne appartenant à une table typée" -#: commands/tablecmds.c:7891 +#: commands/tablecmds.c:7932 #, c-format msgid "cannot alter inherited column \"%s\"" -msgstr "ne peut pas modifier la colonne héritée « %s »" +msgstr "ne peut pas modifier la colonne héritée « %s »" -#: commands/tablecmds.c:7940 +#: commands/tablecmds.c:7981 #, c-format msgid "result of USING clause for column \"%s\" cannot be cast automatically to type %s" -msgstr "le résultat de la clause USING pour la colonne « %s » ne peut pas être converti automatiquement vers le type %s" +msgstr "le résultat de la clause USING pour la colonne « %s » ne peut pas être converti automatiquement vers le type %s" -#: commands/tablecmds.c:7943 +#: commands/tablecmds.c:7984 #, c-format msgid "You might need to add an explicit cast." msgstr "Vous pouvez avoir besoin d'ajouter une conversion explicite." -#: commands/tablecmds.c:7947 +#: commands/tablecmds.c:7988 #, c-format msgid "column \"%s\" cannot be cast automatically to type %s" -msgstr "la colonne « %s » ne peut pas être convertie vers le type %s" +msgstr "la colonne « %s » ne peut pas être convertie vers le type %s" #. translator: USING is SQL, don't translate it -#: commands/tablecmds.c:7950 +#: commands/tablecmds.c:7991 #, c-format msgid "You might need to specify \"USING %s::%s\"." -msgstr "Vous pouvez avoir besoin de spécifier \"USING %s::%s\"." +msgstr "Vous pouvez avoir besoin de spécifier \"USING %s::%s\"." -#: commands/tablecmds.c:8003 +#: commands/tablecmds.c:8090 +#, c-format +msgid "USING expression contains a whole-row table reference." +msgstr "l'expression USING contient une référence de table de ligne complète" + +#: commands/tablecmds.c:8101 #, c-format msgid "type of inherited column \"%s\" must be changed in child tables too" -msgstr "le type de colonne héritée « %s » doit aussi être renommée pour les tables filles" +msgstr "le type de colonne héritée « %s » doit aussi être renommée pour les tables filles" -#: commands/tablecmds.c:8090 +#: commands/tablecmds.c:8188 #, c-format msgid "cannot alter type of column \"%s\" twice" -msgstr "ne peut pas modifier la colonne « %s » deux fois" +msgstr "ne peut pas modifier la colonne « %s » deux fois" -#: commands/tablecmds.c:8126 +#: commands/tablecmds.c:8224 #, c-format msgid "default for column \"%s\" cannot be cast automatically to type %s" msgstr "" -"la valeur par défaut de la colonne « %s » ne peut pas être convertie vers le\n" +"la valeur par défaut de la colonne « %s » ne peut pas être convertie vers le\n" "type %s automatiquement" -#: commands/tablecmds.c:8252 +#: commands/tablecmds.c:8350 #, c-format msgid "cannot alter type of a column used by a view or rule" -msgstr "ne peut pas modifier le type d'une colonne utilisée dans une vue ou une règle" +msgstr "ne peut pas modifier le type d'une colonne utilisée dans une vue ou une règle" -#: commands/tablecmds.c:8253 commands/tablecmds.c:8272 commands/tablecmds.c:8290 +#: commands/tablecmds.c:8351 commands/tablecmds.c:8370 commands/tablecmds.c:8388 #, c-format msgid "%s depends on column \"%s\"" -msgstr "%s dépend de la colonne « %s »" +msgstr "%s dépend de la colonne « %s »" -#: commands/tablecmds.c:8271 +#: commands/tablecmds.c:8369 #, c-format msgid "cannot alter type of a column used in a trigger definition" -msgstr "ne peut pas modifier le type d'une colonne utilisée dans la définition d'un trigger" +msgstr "ne peut pas modifier le type d'une colonne utilisée dans la définition d'un trigger" -#: commands/tablecmds.c:8289 +#: commands/tablecmds.c:8387 #, c-format msgid "cannot alter type of a column used in a policy definition" -msgstr "ne peut pas modifier le type d'une colonne utilisée dans la définition d'une politique" +msgstr "ne peut pas modifier le type d'une colonne utilisée dans la définition d'une politique" -#: commands/tablecmds.c:8954 +#: commands/tablecmds.c:9052 #, c-format msgid "cannot change owner of index \"%s\"" -msgstr "ne peut pas modifier le propriétaire de l'index « %s »" +msgstr "ne peut pas modifier le propriétaire de l'index « %s »" -#: commands/tablecmds.c:8956 +#: commands/tablecmds.c:9054 #, c-format msgid "Change the ownership of the index's table, instead." -msgstr "Modifier à la place le propriétaire de la table concernée par l'index." +msgstr "Modifier à la place le propriétaire de la table concernée par l'index." -#: commands/tablecmds.c:8972 +#: commands/tablecmds.c:9070 #, c-format msgid "cannot change owner of sequence \"%s\"" -msgstr "ne peut pas modifier le propriétaire de la séquence « %s »" +msgstr "ne peut pas modifier le propriétaire de la séquence « %s »" -#: commands/tablecmds.c:8974 commands/tablecmds.c:11396 +#: commands/tablecmds.c:9072 commands/tablecmds.c:11544 #, c-format msgid "Sequence \"%s\" is linked to table \"%s\"." -msgstr "La séquence « %s » est liée à la table « %s »." +msgstr "La séquence « %s » est liée à la table « %s »." -#: commands/tablecmds.c:8986 commands/tablecmds.c:12043 +#: commands/tablecmds.c:9084 commands/tablecmds.c:12191 #, c-format msgid "Use ALTER TYPE instead." -msgstr "Utilisez ALTER TYPE à la place." +msgstr "Utilisez ALTER TYPE à la place." -#: commands/tablecmds.c:8995 +#: commands/tablecmds.c:9093 #, c-format msgid "\"%s\" is not a table, view, sequence, or foreign table" -msgstr "« %s » n'est pas une table, une vue, une séquence ou une table distante" +msgstr "« %s » n'est pas une table, une vue, une séquence ou une table distante" -#: commands/tablecmds.c:9338 +#: commands/tablecmds.c:9436 #, c-format msgid "cannot have multiple SET TABLESPACE subcommands" msgstr "ne peut pas avoir de nombreuses sous-commandes SET TABLESPACE" -#: commands/tablecmds.c:9411 +#: commands/tablecmds.c:9509 #, c-format msgid "\"%s\" is not a table, view, materialized view, index, or TOAST table" -msgstr "« %s » n'est pas une table, une vue, une vue matérialisée, un index ou une table TOAST" +msgstr "« %s » n'est pas une table, une vue, une vue matérialisée, un index ou une table TOAST" -#: commands/tablecmds.c:9444 commands/view.c:469 +#: commands/tablecmds.c:9542 commands/view.c:498 #, c-format msgid "WITH CHECK OPTION is supported only on automatically updatable views" -msgstr "WITH CHECK OPTION est uniquement accepté pour les vues dont la mise à jour est automatique" +msgstr "WITH CHECK OPTION est uniquement accepté pour les vues dont la mise à jour est automatique" -#: commands/tablecmds.c:9590 +#: commands/tablecmds.c:9688 #, c-format msgid "cannot move system relation \"%s\"" -msgstr "ne peut pas déplacer la colonne système « %s »" +msgstr "ne peut pas déplacer la colonne système « %s »" -#: commands/tablecmds.c:9606 +#: commands/tablecmds.c:9704 #, c-format msgid "cannot move temporary tables of other sessions" -msgstr "ne peut pas déplacer les tables temporaires d'autres sessions" +msgstr "ne peut pas déplacer les tables temporaires d'autres sessions" -#: commands/tablecmds.c:9743 +#: commands/tablecmds.c:9841 #, c-format msgid "only tables, indexes, and materialized views exist in tablespaces" -msgstr "seuls les tables, index et vues matérialisées existent dans les tablespaces" +msgstr "seuls les tables, index et vues matérialisées existent dans les tablespaces" -#: commands/tablecmds.c:9755 +#: commands/tablecmds.c:9853 #, c-format msgid "cannot move relations in to or out of pg_global tablespace" -msgstr "ne peut pas déplacer les relations dans ou à partir du tablespace pg_global" +msgstr "ne peut pas déplacer les relations dans ou à partir du tablespace pg_global" -#: commands/tablecmds.c:9846 +#: commands/tablecmds.c:9944 #, c-format msgid "aborting because lock on relation \"%s.%s\" is not available" -msgstr "annulation car le verrou sur la relation « %s.%s » n'est pas disponible" +msgstr "annulation car le verrou sur la relation « %s.%s » n'est pas disponible" -#: commands/tablecmds.c:9862 +#: commands/tablecmds.c:9960 #, c-format msgid "no matching relations in tablespace \"%s\" found" -msgstr "aucune relation correspondante trouvée dans le tablespace « %s »" +msgstr "aucune relation correspondante trouvée dans le tablespace « %s »" -#: commands/tablecmds.c:9936 storage/buffer/bufmgr.c:915 +#: commands/tablecmds.c:10034 storage/buffer/bufmgr.c:915 #, c-format msgid "invalid page in block %u of relation %s" msgstr "page invalide dans le bloc %u de la relation %s" -#: commands/tablecmds.c:10018 +#: commands/tablecmds.c:10116 #, c-format msgid "cannot change inheritance of typed table" -msgstr "ne peut pas modifier l'héritage d'une table typée" +msgstr "ne peut pas modifier l'héritage d'une table typée" -#: commands/tablecmds.c:10068 +#: commands/tablecmds.c:10166 #, c-format msgid "cannot inherit to temporary relation of another session" -msgstr "ne peut pas hériter à partir d'une relation temporaire d'une autre session" +msgstr "ne peut pas hériter à partir d'une relation temporaire d'une autre session" -#: commands/tablecmds.c:10122 +#: commands/tablecmds.c:10220 #, c-format msgid "circular inheritance not allowed" -msgstr "héritage circulaire interdit" +msgstr "héritage circulaire interdit" -#: commands/tablecmds.c:10123 +#: commands/tablecmds.c:10221 #, c-format msgid "\"%s\" is already a child of \"%s\"." -msgstr "« %s » est déjà un enfant de « %s »." +msgstr "« %s » est déjà un enfant de « %s »." -#: commands/tablecmds.c:10131 +#: commands/tablecmds.c:10229 #, c-format msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs" -msgstr "la table « %s » qui n'a pas d'OID ne peut pas hériter de la table « %s » qui en a" +msgstr "la table « %s » qui n'a pas d'OID ne peut pas hériter de la table « %s » qui en a" -#: commands/tablecmds.c:10272 +#: commands/tablecmds.c:10370 #, c-format msgid "column \"%s\" in child table must be marked NOT NULL" -msgstr "la colonne « %s » de la table enfant doit être marquée comme NOT NULL" +msgstr "la colonne « %s » de la table enfant doit être marquée comme NOT NULL" -#: commands/tablecmds.c:10288 +#: commands/tablecmds.c:10386 commands/tablecmds.c:10419 #, c-format msgid "child table is missing column \"%s\"" -msgstr "la colonne « %s » manque à la table enfant" +msgstr "la colonne « %s » manque à la table enfant" -#: commands/tablecmds.c:10371 +#: commands/tablecmds.c:10502 #, c-format msgid "child table \"%s\" has different definition for check constraint \"%s\"" -msgstr "la table fille « %s » a un type différent pour la contrainte de vérification « %s »" +msgstr "la table fille « %s » a un type différent pour la contrainte de vérification « %s »" -#: commands/tablecmds.c:10379 +#: commands/tablecmds.c:10510 #, c-format msgid "constraint \"%s\" conflicts with non-inherited constraint on child table \"%s\"" -msgstr "la contrainte « %s » entre en conflit avec une contrainte non héritée sur la table fille « %s »" +msgstr "la contrainte « %s » entre en conflit avec une contrainte non héritée sur la table fille « %s »" -#: commands/tablecmds.c:10403 +#: commands/tablecmds.c:10521 +#, c-format +msgid "constraint \"%s\" conflicts with NOT VALID constraint on child table \"%s\"" +msgstr "la contrainte « %s » entre en conflit avec une contrainte NOT VALID sur la table fille « %s »" + +#: commands/tablecmds.c:10545 #, c-format msgid "child table is missing constraint \"%s\"" -msgstr "la contrainte « %s » manque à la table enfant" +msgstr "la contrainte « %s » manque à la table enfant" -#: commands/tablecmds.c:10487 +#: commands/tablecmds.c:10629 #, c-format msgid "relation \"%s\" is not a parent of relation \"%s\"" -msgstr "la relation « %s » n'est pas un parent de la relation « %s »" +msgstr "la relation « %s » n'est pas un parent de la relation « %s »" -#: commands/tablecmds.c:10721 +#: commands/tablecmds.c:10863 #, c-format msgid "typed tables cannot inherit" -msgstr "les tables avec type ne peuvent pas hériter d'autres tables" +msgstr "les tables avec type ne peuvent pas hériter d'autres tables" -#: commands/tablecmds.c:10752 +#: commands/tablecmds.c:10894 #, c-format msgid "table is missing column \"%s\"" -msgstr "la colonne « %s » manque à la table" +msgstr "la colonne « %s » manque à la table" -#: commands/tablecmds.c:10762 +#: commands/tablecmds.c:10904 #, c-format msgid "table has column \"%s\" where type requires \"%s\"" -msgstr "la table a une colonne « %s » alors que le type impose « %s »." +msgstr "la table a une colonne « %s » alors que le type impose « %s »." -#: commands/tablecmds.c:10771 +#: commands/tablecmds.c:10913 #, c-format msgid "table \"%s\" has different type for column \"%s\"" -msgstr "la table « %s » a un type différent pour la colonne « %s »" +msgstr "la table « %s » a un type différent pour la colonne « %s »" -#: commands/tablecmds.c:10784 +#: commands/tablecmds.c:10926 #, c-format msgid "table has extra column \"%s\"" -msgstr "la table a une colonne supplémentaire « %s »" +msgstr "la table a une colonne supplémentaire « %s »" -#: commands/tablecmds.c:10836 +#: commands/tablecmds.c:10978 #, c-format msgid "\"%s\" is not a typed table" -msgstr "« %s » n'est pas une table typée" +msgstr "« %s » n'est pas une table typée" -#: commands/tablecmds.c:11020 +#: commands/tablecmds.c:11162 #, c-format msgid "cannot use non-unique index \"%s\" as replica identity" -msgstr "ne peut pas utiliser l'index non unique « %s » comme identité de réplicat" +msgstr "ne peut pas utiliser l'index non unique « %s » comme identité de réplicat" -#: commands/tablecmds.c:11026 +#: commands/tablecmds.c:11168 #, c-format msgid "cannot use non-immediate index \"%s\" as replica identity" -msgstr "ne peut pas utiliser l'index « %s » immédiat comme identité de réplicat" +msgstr "ne peut pas utiliser l'index « %s » immédiat comme identité de réplicat" -#: commands/tablecmds.c:11032 +#: commands/tablecmds.c:11174 #, c-format msgid "cannot use expression index \"%s\" as replica identity" -msgstr "ne peut pas utiliser un index par expression « %s » comme identité de réplicat" +msgstr "ne peut pas utiliser un index par expression « %s » comme identité de réplicat" -#: commands/tablecmds.c:11038 +#: commands/tablecmds.c:11180 #, c-format msgid "cannot use partial index \"%s\" as replica identity" -msgstr "ne peut pas utiliser l'index partiel « %s » comme identité de réplicat" +msgstr "ne peut pas utiliser l'index partiel « %s » comme identité de réplicat" -#: commands/tablecmds.c:11044 +#: commands/tablecmds.c:11186 #, c-format msgid "cannot use invalid index \"%s\" as replica identity" -msgstr "ne peut pas utiliser l'index invalide « %s » comme identité de réplicat" +msgstr "ne peut pas utiliser l'index invalide « %s » comme identité de réplicat" -#: commands/tablecmds.c:11065 +#: commands/tablecmds.c:11207 #, c-format msgid "index \"%s\" cannot be used as replica identity because column %d is a system column" -msgstr "l'index « %s » ne peut pas être utilisé comme identité de réplicat car la colonne %d est une colonne système" +msgstr "l'index « %s » ne peut pas être utilisé comme identité de réplicat car la colonne %d est une colonne système" -#: commands/tablecmds.c:11072 +#: commands/tablecmds.c:11214 #, c-format msgid "index \"%s\" cannot be used as replica identity because column \"%s\" is nullable" -msgstr "l'index « %s » ne peut pas être utilisé comme identité de réplicat car la colonne « %s » peut être NULL" +msgstr "l'index « %s » ne peut pas être utilisé comme identité de réplicat car la colonne « %s » peut être NULL" -#: commands/tablecmds.c:11269 +#: commands/tablecmds.c:11417 #, c-format msgid "cannot change logged status of table \"%s\" because it is temporary" -msgstr "ne peut pas modifier le statut de journalisation de la table « %s » parce qu'elle est temporaire" +msgstr "ne peut pas modifier le statut de journalisation de la table « %s » parce qu'elle est temporaire" -#: commands/tablecmds.c:11328 +#: commands/tablecmds.c:11476 #, c-format msgid "could not change table \"%s\" to logged because it references unlogged table \"%s\"" -msgstr "n'a pas pu passer la table « %s » en journalisé car elle référence la table non journalisée « %s »" +msgstr "n'a pas pu passer la table « %s » en journalisé car elle référence la table non journalisée « %s »" -#: commands/tablecmds.c:11338 +#: commands/tablecmds.c:11486 #, c-format msgid "could not change table \"%s\" to unlogged because it references logged table \"%s\"" -msgstr "n'a pas pu passer la table « %s » en non journalisé car elle référence la table journalisée « %s »" +msgstr "n'a pas pu passer la table « %s » en non journalisé car elle référence la table journalisée « %s »" -#: commands/tablecmds.c:11395 +#: commands/tablecmds.c:11543 #, c-format msgid "cannot move an owned sequence into another schema" -msgstr "ne peut pas déplacer une séquence OWNED BY dans un autre schéma" +msgstr "ne peut pas déplacer une séquence OWNED BY dans un autre schéma" -#: commands/tablecmds.c:11500 +#: commands/tablecmds.c:11648 #, c-format msgid "relation \"%s\" already exists in schema \"%s\"" -msgstr "la relation « %s » existe déjà dans le schéma « %s »" +msgstr "la relation « %s » existe déjà dans le schéma « %s »" -#: commands/tablecmds.c:12027 +#: commands/tablecmds.c:12175 #, c-format msgid "\"%s\" is not a composite type" -msgstr "« %s » n'est pas un type composite" +msgstr "« %s » n'est pas un type composite" -#: commands/tablecmds.c:12057 +#: commands/tablecmds.c:12205 #, c-format msgid "\"%s\" is not a table, view, materialized view, sequence, or foreign table" -msgstr "« %s » n'est pas une table, une vue, une vue matérialisée, une séquence ou une table distante" +msgstr "« %s » n'est pas une table, une vue, une vue matérialisée, une séquence ou une table distante" -#: commands/tablespace.c:162 commands/tablespace.c:179 commands/tablespace.c:190 commands/tablespace.c:198 commands/tablespace.c:625 replication/slot.c:980 storage/file/copydir.c:47 +#: commands/tablespace.c:162 commands/tablespace.c:179 commands/tablespace.c:190 commands/tablespace.c:198 commands/tablespace.c:625 replication/slot.c:997 storage/file/copydir.c:47 #, c-format msgid "could not create directory \"%s\": %m" -msgstr "n'a pas pu créer le répertoire « %s » : %m" +msgstr "n'a pas pu créer le répertoire « %s » : %m" #: commands/tablespace.c:209 #, c-format msgid "could not stat directory \"%s\": %m" -msgstr "n'a pas pu lire les informations sur le répertoire « %s » : %m" +msgstr "n'a pas pu lire les informations sur le répertoire « %s » : %m" #: commands/tablespace.c:218 #, c-format msgid "\"%s\" exists but is not a directory" -msgstr "« %s » existe mais n'est pas un répertoire" +msgstr "« %s » existe mais n'est pas un répertoire" #: commands/tablespace.c:249 #, c-format msgid "permission denied to create tablespace \"%s\"" -msgstr "droit refusé pour créer le tablespace « %s »" +msgstr "droit refusé pour créer le tablespace « %s »" #: commands/tablespace.c:251 #, c-format msgid "Must be superuser to create a tablespace." -msgstr "Doit être super-utilisateur pour créer un tablespace." +msgstr "Doit être super-utilisateur pour créer un tablespace." #: commands/tablespace.c:267 #, c-format @@ -8639,102 +8419,102 @@ msgstr "le chemin du tablespace ne peut pas contenir de guillemets simples" #: commands/tablespace.c:277 #, c-format msgid "tablespace location must be an absolute path" -msgstr "le chemin du tablespace doit être un chemin absolu" +msgstr "le chemin du tablespace doit être un chemin absolu" #: commands/tablespace.c:288 #, c-format msgid "tablespace location \"%s\" is too long" -msgstr "le chemin du tablespace « %s » est trop long" +msgstr "le chemin du tablespace « %s » est trop long" #: commands/tablespace.c:295 #, c-format msgid "tablespace location should not be inside the data directory" -msgstr "l'emplacement du tablespace ne doit pas être dans le répertoire de données" +msgstr "l'emplacement du tablespace ne doit pas être dans le répertoire de données" #: commands/tablespace.c:304 commands/tablespace.c:952 #, c-format msgid "unacceptable tablespace name \"%s\"" -msgstr "nom inacceptable pour le tablespace « %s »" +msgstr "nom inacceptable pour le tablespace « %s »" #: commands/tablespace.c:306 commands/tablespace.c:953 #, c-format msgid "The prefix \"pg_\" is reserved for system tablespaces." -msgstr "Le préfixe « pg_ » est réservé pour les tablespaces système." +msgstr "Le préfixe « pg_ » est réservé pour les tablespaces système." #: commands/tablespace.c:316 commands/tablespace.c:965 #, c-format msgid "tablespace \"%s\" already exists" -msgstr "le tablespace « %s » existe déjà" +msgstr "le tablespace « %s » existe déjà" #: commands/tablespace.c:430 commands/tablespace.c:935 commands/tablespace.c:1016 commands/tablespace.c:1085 commands/tablespace.c:1218 commands/tablespace.c:1418 #, c-format msgid "tablespace \"%s\" does not exist" -msgstr "le tablespace « %s » n'existe pas" +msgstr "le tablespace « %s » n'existe pas" #: commands/tablespace.c:436 #, c-format msgid "tablespace \"%s\" does not exist, skipping" -msgstr "le tablespace « %s » n'existe pas, poursuite du traitement" +msgstr "le tablespace « %s » n'existe pas, poursuite du traitement" #: commands/tablespace.c:512 #, c-format msgid "tablespace \"%s\" is not empty" -msgstr "le tablespace « %s » n'est pas vide" +msgstr "le tablespace « %s » n'est pas vide" #: commands/tablespace.c:584 #, c-format msgid "directory \"%s\" does not exist" -msgstr "le répertoire « %s » n'existe pas" +msgstr "le répertoire « %s » n'existe pas" #: commands/tablespace.c:585 #, c-format msgid "Create this directory for the tablespace before restarting the server." -msgstr "Créer le répertoire pour ce tablespace avant de redémarrer le serveur." +msgstr "Créer le répertoire pour ce tablespace avant de redémarrer le serveur." #: commands/tablespace.c:590 #, c-format msgid "could not set permissions on directory \"%s\": %m" -msgstr "n'a pas pu configurer les droits du répertoire « %s » : %m" +msgstr "n'a pas pu configurer les droits du répertoire « %s » : %m" #: commands/tablespace.c:620 #, c-format msgid "directory \"%s\" already in use as a tablespace" -msgstr "répertoire « %s » déjà en cours d'utilisation" +msgstr "répertoire « %s » déjà utilisé comme tablespace" #: commands/tablespace.c:744 commands/tablespace.c:757 commands/tablespace.c:793 commands/tablespace.c:885 #, c-format msgid "could not remove directory \"%s\": %m" -msgstr "n'a pas pu supprimer le répertoire « %s » : %m" +msgstr "n'a pas pu supprimer le répertoire « %s » : %m" #: commands/tablespace.c:806 commands/tablespace.c:894 #, c-format msgid "could not remove symbolic link \"%s\": %m" -msgstr "n'a pas pu supprimer le lien symbolique « %s » : %m" +msgstr "n'a pas pu supprimer le lien symbolique « %s » : %m" #: commands/tablespace.c:816 commands/tablespace.c:903 #, c-format msgid "\"%s\" is not a directory or symbolic link" -msgstr "« %s » n'est pas un répertoire ou un lien symbolique" +msgstr "« %s » n'est pas un répertoire ou un lien symbolique" #: commands/tablespace.c:1090 #, c-format msgid "Tablespace \"%s\" does not exist." -msgstr "Le tablespace « %s » n'existe pas." +msgstr "Le tablespace « %s » n'existe pas." #: commands/tablespace.c:1517 #, c-format msgid "directories for tablespace %u could not be removed" -msgstr "les répertoires du tablespace %u n'ont pas pu être supprimés" +msgstr "les répertoires du tablespace %u n'ont pas pu être supprimés" #: commands/tablespace.c:1519 #, c-format msgid "You can remove the directories manually if necessary." -msgstr "Vous pouvez supprimer les répertoires manuellement si nécessaire." +msgstr "Vous pouvez supprimer les répertoires manuellement si nécessaire." #: commands/trigger.c:184 #, c-format msgid "\"%s\" is a table" -msgstr "« %s » est une table" +msgstr "« %s » est une table" #: commands/trigger.c:186 #, c-format @@ -8744,7 +8524,7 @@ msgstr "Les tables ne peuvent pas avoir de triggers INSTEAD OF." #: commands/trigger.c:197 commands/trigger.c:204 #, c-format msgid "\"%s\" is a view" -msgstr "« %s » est une vue" +msgstr "« %s » est une vue" #: commands/trigger.c:199 #, c-format @@ -8759,7 +8539,7 @@ msgstr "Les vues ne peuvent pas avoir de triggers TRUNCATE." #: commands/trigger.c:214 commands/trigger.c:221 commands/trigger.c:228 #, c-format msgid "\"%s\" is a foreign table" -msgstr "« %s » est une table distante" +msgstr "« %s » est une table distante" #: commands/trigger.c:216 #, c-format @@ -8779,12 +8559,12 @@ msgstr "Les tables distantes ne peuvent pas avoir de triggers de contrainte." #: commands/trigger.c:293 #, c-format msgid "TRUNCATE FOR EACH ROW triggers are not supported" -msgstr "les triggers TRUNCATE FOR EACH ROW ne sont pas supportés" +msgstr "les triggers TRUNCATE FOR EACH ROW ne sont pas supportés" #: commands/trigger.c:301 #, c-format msgid "INSTEAD OF triggers must be FOR EACH ROW" -msgstr "les triggers INSTEAD OF doivent être FOR EACH ROW" +msgstr "les triggers INSTEAD OF doivent être FOR EACH ROW" #: commands/trigger.c:305 #, c-format @@ -8800,102 +8580,102 @@ msgstr "les triggers INSTEAD OF ne peuvent pas avoir de liste de colonnes" #, c-format msgid "statement trigger's WHEN condition cannot reference column values" msgstr "" -"la condition WHEN de l'instruction du trigger ne peut pas référencer les valeurs\n" +"la condition WHEN de l'instruction du trigger ne peut pas référencer les valeurs\n" "des colonnes" #: commands/trigger.c:371 #, c-format msgid "INSERT trigger's WHEN condition cannot reference OLD values" -msgstr "la condition WHEN du trigger INSERT ne peut pas référencer les valeurs OLD" +msgstr "la condition WHEN du trigger INSERT ne peut pas référencer les valeurs OLD" #: commands/trigger.c:384 #, c-format msgid "DELETE trigger's WHEN condition cannot reference NEW values" -msgstr "la condition WHEN du trigger DELETE ne peut pas référencer les valeurs NEW" +msgstr "la condition WHEN du trigger DELETE ne peut pas référencer les valeurs NEW" #: commands/trigger.c:389 #, c-format msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns" msgstr "" -"la condition WHEN d'un trigger BEFORE ne doit pas référencer les colonnes\n" -"système avec NEW" +"la condition WHEN d'un trigger BEFORE ne doit pas référencer les colonnes\n" +"système avec NEW" #: commands/trigger.c:434 #, c-format msgid "changing return type of function %s from \"opaque\" to \"trigger\"" -msgstr "changement du type de retour de la fonction %s de « opaque » vers « trigger »" +msgstr "changement du type de retour de la fonction %s de « opaque » vers « trigger »" #: commands/trigger.c:553 commands/trigger.c:1303 #, c-format msgid "trigger \"%s\" for relation \"%s\" already exists" -msgstr "le trigger « %s » de la relation « %s » existe déjà" +msgstr "le trigger « %s » de la relation « %s » existe déjà" #: commands/trigger.c:838 msgid "Found referenced table's UPDATE trigger." -msgstr "Trigger UPDATE de la table référencée trouvé." +msgstr "Trigger UPDATE de la table référencée trouvé." #: commands/trigger.c:839 msgid "Found referenced table's DELETE trigger." -msgstr "Trigger DELETE de la table référencée trouvé." +msgstr "Trigger DELETE de la table référencée trouvé." #: commands/trigger.c:840 msgid "Found referencing table's trigger." -msgstr "Trigger de la table référencée trouvé." +msgstr "Trigger de la table référencée trouvé." #: commands/trigger.c:949 commands/trigger.c:965 #, c-format msgid "ignoring incomplete trigger group for constraint \"%s\" %s" -msgstr "ignore le groupe de trigger incomplet pour la contrainte « %s » %s" +msgstr "ignore le groupe de trigger incomplet pour la contrainte « %s » %s" #: commands/trigger.c:977 #, c-format msgid "converting trigger group into constraint \"%s\" %s" -msgstr "conversion du groupe de trigger en une contrainte « %s » %s" +msgstr "conversion du groupe de trigger en une contrainte « %s » %s" #: commands/trigger.c:1190 commands/trigger.c:1351 commands/trigger.c:1469 #, c-format msgid "trigger \"%s\" for table \"%s\" does not exist" -msgstr "le trigger « %s » de la table « %s » n'existe pas" +msgstr "le trigger « %s » de la table « %s » n'existe pas" #: commands/trigger.c:1434 #, c-format msgid "permission denied: \"%s\" is a system trigger" -msgstr "droit refusé : « %s » est un trigger système" +msgstr "droit refusé : « %s » est un trigger système" #: commands/trigger.c:1930 #, c-format msgid "trigger function %u returned null value" -msgstr "la fonction trigger %u a renvoyé la valeur NULL" +msgstr "la fonction trigger %u a renvoyé la valeur NULL" #: commands/trigger.c:1989 commands/trigger.c:2188 commands/trigger.c:2392 commands/trigger.c:2664 #, c-format msgid "BEFORE STATEMENT trigger cannot return a value" msgstr "le trigger BEFORE STATEMENT ne peut pas renvoyer une valeur" -#: commands/trigger.c:2726 executor/nodeModifyTable.c:664 executor/nodeModifyTable.c:957 +#: commands/trigger.c:2726 executor/nodeModifyTable.c:679 executor/nodeModifyTable.c:972 #, c-format msgid "tuple to be updated was already modified by an operation triggered by the current command" -msgstr "la ligne à mettre à jour était déjà modifiée par une opération déclenchée par la commande courante" +msgstr "la ligne à mettre à jour était déjà modifiée par une opération déclenchée par la commande courante" -#: commands/trigger.c:2727 executor/nodeModifyTable.c:665 executor/nodeModifyTable.c:958 +#: commands/trigger.c:2727 executor/nodeModifyTable.c:680 executor/nodeModifyTable.c:973 #, c-format msgid "Consider using an AFTER trigger instead of a BEFORE trigger to propagate changes to other rows." -msgstr "Considérez l'utilisation d'un trigger AFTER au lieu d'un trigger BEFORE pour propager les changements sur les autres lignes." +msgstr "Considérez l'utilisation d'un trigger AFTER au lieu d'un trigger BEFORE pour propager les changements sur les autres lignes." -#: commands/trigger.c:2741 executor/execMain.c:2377 executor/nodeLockRows.c:216 executor/nodeModifyTable.c:200 executor/nodeModifyTable.c:677 executor/nodeModifyTable.c:970 executor/nodeModifyTable.c:1136 +#: commands/trigger.c:2741 executor/execMain.c:2379 executor/nodeLockRows.c:216 executor/nodeModifyTable.c:213 executor/nodeModifyTable.c:692 executor/nodeModifyTable.c:985 executor/nodeModifyTable.c:1151 #, c-format msgid "could not serialize access due to concurrent update" -msgstr "n'a pas pu sérialiser un accès à cause d'une mise à jour en parallèle" +msgstr "n'a pas pu sérialiser un accès à cause d'une mise à jour en parallèle" #: commands/trigger.c:4575 #, c-format msgid "constraint \"%s\" is not deferrable" -msgstr "la contrainte « %s » n'est pas DEFERRABLE" +msgstr "la contrainte « %s » n'est pas DEFERRABLE" #: commands/trigger.c:4598 #, c-format msgid "constraint \"%s\" does not exist" -msgstr "la contrainte « %s » n'existe pas" +msgstr "la contrainte « %s » n'existe pas" #: commands/tsearchcmds.c:115 commands/tsearchcmds.c:685 #, c-format @@ -8905,67 +8685,67 @@ msgstr "la fonction %s doit renvoyer le type %s" #: commands/tsearchcmds.c:192 #, c-format msgid "must be superuser to create text search parsers" -msgstr "doit être super-utilisateur pour créer des analyseurs de recherche plein texte" +msgstr "doit être super-utilisateur pour créer des analyseurs de recherche plein texte" #: commands/tsearchcmds.c:240 #, c-format msgid "text search parser parameter \"%s\" not recognized" -msgstr "paramètre de l'analyseur de recherche plein texte « %s » non reconnu" +msgstr "paramètre de l'analyseur de recherche plein texte « %s » non reconnu" #: commands/tsearchcmds.c:250 #, c-format msgid "text search parser start method is required" -msgstr "la méthode start de l'analyseur de recherche plein texte est requise" +msgstr "la méthode start de l'analyseur de recherche plein texte est requise" #: commands/tsearchcmds.c:255 #, c-format msgid "text search parser gettoken method is required" -msgstr "la méthode gettoken de l'analyseur de recherche plein texte est requise" +msgstr "la méthode gettoken de l'analyseur de recherche plein texte est requise" #: commands/tsearchcmds.c:260 #, c-format msgid "text search parser end method is required" -msgstr "la méthode end l'analyseur de recherche de texte est requise" +msgstr "la méthode end l'analyseur de recherche de texte est requise" #: commands/tsearchcmds.c:265 #, c-format msgid "text search parser lextypes method is required" -msgstr "la méthode lextypes de l'analyseur de recherche plein texte est requise" +msgstr "la méthode lextypes de l'analyseur de recherche plein texte est requise" #: commands/tsearchcmds.c:386 #, c-format msgid "text search template \"%s\" does not accept options" -msgstr "le modèle de recherche plein texte « %s » n'accepte pas d'options" +msgstr "le modèle de recherche plein texte « %s » n'accepte pas d'options" #: commands/tsearchcmds.c:460 #, c-format msgid "text search template is required" -msgstr "le modèle de la recherche plein texte est requis" +msgstr "le modèle de la recherche plein texte est requis" #: commands/tsearchcmds.c:752 #, c-format msgid "must be superuser to create text search templates" -msgstr "doit être super-utilisateur pour créer des modèles de recherche plein texte" +msgstr "doit être super-utilisateur pour créer des modèles de recherche plein texte" #: commands/tsearchcmds.c:789 #, c-format msgid "text search template parameter \"%s\" not recognized" -msgstr "paramètre de modèle de recherche plein texte « %s » non reconnu" +msgstr "paramètre de modèle de recherche plein texte « %s » non reconnu" #: commands/tsearchcmds.c:799 #, c-format msgid "text search template lexize method is required" -msgstr "la méthode lexize du modèle de recherche plein texte est requise" +msgstr "la méthode lexize du modèle de recherche plein texte est requise" #: commands/tsearchcmds.c:1008 #, c-format msgid "text search configuration parameter \"%s\" not recognized" -msgstr "paramètre de configuration de recherche plein texte « %s » non reconnu" +msgstr "paramètre de configuration de recherche plein texte « %s » non reconnu" #: commands/tsearchcmds.c:1015 #, c-format msgid "cannot specify both PARSER and COPY options" -msgstr "ne peut pas spécifier à la fois PARSER et COPY" +msgstr "ne peut pas spécifier à la fois PARSER et COPY" #: commands/tsearchcmds.c:1051 #, c-format @@ -8975,71 +8755,71 @@ msgstr "l'analyseur de la recherche plein texte est requis" #: commands/tsearchcmds.c:1278 #, c-format msgid "token type \"%s\" does not exist" -msgstr "le type de jeton « %s » n'existe pas" +msgstr "le type de jeton « %s » n'existe pas" #: commands/tsearchcmds.c:1502 #, c-format msgid "mapping for token type \"%s\" does not exist" -msgstr "la correspondance pour le type de jeton « %s » n'existe pas" +msgstr "la correspondance pour le type de jeton « %s » n'existe pas" #: commands/tsearchcmds.c:1508 #, c-format msgid "mapping for token type \"%s\" does not exist, skipping" msgstr "" -"la correspondance pour le type de jeton « %s » n'existe pas, poursuite du\n" +"la correspondance pour le type de jeton « %s » n'existe pas, poursuite du\n" "traitement" #: commands/tsearchcmds.c:1663 commands/tsearchcmds.c:1774 #, c-format msgid "invalid parameter list format: \"%s\"" -msgstr "format de liste de paramètres invalide : « %s »" +msgstr "format de liste de paramètres invalide : « %s »" #: commands/typecmds.c:181 #, c-format msgid "must be superuser to create a base type" -msgstr "doit être super-utilisateur pour créer un type de base" +msgstr "doit être super-utilisateur pour créer un type de base" #: commands/typecmds.c:288 commands/typecmds.c:1421 #, c-format msgid "type attribute \"%s\" not recognized" -msgstr "attribut du type « %s » non reconnu" +msgstr "attribut du type « %s » non reconnu" #: commands/typecmds.c:342 #, c-format msgid "invalid type category \"%s\": must be simple ASCII" -msgstr "catégorie de type « %s » invalide : doit être de l'ASCII pur" +msgstr "catégorie de type « %s » invalide : doit être de l'ASCII pur" #: commands/typecmds.c:361 #, c-format msgid "array element type cannot be %s" -msgstr "le type d'élément tableau ne peut pas être %s" +msgstr "le type d'élément tableau ne peut pas être %s" #: commands/typecmds.c:393 #, c-format msgid "alignment \"%s\" not recognized" -msgstr "alignement « %s » non reconnu" +msgstr "alignement « %s » non reconnu" #: commands/typecmds.c:410 #, c-format msgid "storage \"%s\" not recognized" -msgstr "stockage « %s » non reconnu" +msgstr "stockage « %s » non reconnu" #: commands/typecmds.c:421 #, c-format msgid "type input function must be specified" -msgstr "le type d'entrée de la fonction doit être spécifié" +msgstr "le type d'entrée de la fonction doit être spécifié" #: commands/typecmds.c:425 #, c-format msgid "type output function must be specified" -msgstr "le type de sortie de la fonction doit être spécifié" +msgstr "le type de sortie de la fonction doit être spécifié" #: commands/typecmds.c:430 #, c-format msgid "type modifier output function is useless without a type modifier input function" msgstr "" "la fonction en sortie du modificateur de type est inutile sans une fonction\n" -"en entrée du modificateur de type" +"en entrée du modificateur de type" #: commands/typecmds.c:453 commands/typecmds.c:470 #, c-format @@ -9049,12 +8829,12 @@ msgstr "changement du type de retour de la fonction %s de %s vers %s" #: commands/typecmds.c:460 #, c-format msgid "type input function %s must return type %s" -msgstr "le type d'entrée de la fonction %s doit être %s" +msgstr "le type d'entrée de la fonction %s doit être %s" #: commands/typecmds.c:477 #, c-format msgid "type output function %s must return type %s" -msgstr "le type de sortie de la fonction %s doit être %s" +msgstr "le type de sortie de la fonction %s doit être %s" #: commands/typecmds.c:486 #, c-format @@ -9064,47 +8844,47 @@ msgstr "la fonction receive du type %s doit renvoyer le type %s" #: commands/typecmds.c:495 #, c-format msgid "type send function %s must return type %s" -msgstr "le type de sortie de la fonction d'envoi %s doit être %s" +msgstr "le type de sortie de la fonction d'envoi %s doit être %s" #: commands/typecmds.c:560 #, c-format msgid "type input function %s should not be volatile" -msgstr "la fonction en entrée du type %s ne doit pas être volatile" +msgstr "la fonction en entrée du type %s ne doit pas être volatile" #: commands/typecmds.c:565 #, c-format msgid "type output function %s should not be volatile" -msgstr "la fonction en entrée du type %s ne doit pas être volatile" +msgstr "la fonction en entrée du type %s ne doit pas être volatile" #: commands/typecmds.c:570 #, c-format msgid "type receive function %s should not be volatile" -msgstr "la fonction receive du type %s ne doit pas être volatile" +msgstr "la fonction receive du type %s ne doit pas être volatile" #: commands/typecmds.c:575 #, c-format msgid "type send function %s should not be volatile" -msgstr "la fonction send du type %s ne doit pas être volatile" +msgstr "la fonction send du type %s ne doit pas être volatile" #: commands/typecmds.c:580 #, c-format msgid "type modifier input function %s should not be volatile" -msgstr "la fonction en entrée du modificateur de type %s ne devrait pas être volatile" +msgstr "la fonction en entrée du modificateur de type %s ne devrait pas être volatile" #: commands/typecmds.c:585 #, c-format msgid "type modifier output function %s should not be volatile" -msgstr "la fonction en sortie du modificateur de type %s ne devrait pas être volatile" +msgstr "la fonction en sortie du modificateur de type %s ne devrait pas être volatile" #: commands/typecmds.c:807 #, c-format msgid "\"%s\" is not a valid base type for a domain" -msgstr "« %s » n'est pas un type de base valide pour un domaine" +msgstr "« %s » n'est pas un type de base valide pour un domaine" #: commands/typecmds.c:893 #, c-format msgid "multiple default expressions" -msgstr "multiples expressions par défaut" +msgstr "multiples expressions par défaut" #: commands/typecmds.c:955 commands/typecmds.c:964 #, c-format @@ -9114,7 +8894,7 @@ msgstr "contraintes NULL/NOT NULL en conflit" #: commands/typecmds.c:980 #, c-format msgid "check constraints for domains cannot be marked NO INHERIT" -msgstr "les contraintes CHECK pour les domaines ne peuvent pas être marquées NO INHERIT" +msgstr "les contraintes CHECK pour les domaines ne peuvent pas être marquées NO INHERIT" #: commands/typecmds.c:989 commands/typecmds.c:2522 #, c-format @@ -9124,7 +8904,7 @@ msgstr "contraintes uniques impossible pour les domaines" #: commands/typecmds.c:995 commands/typecmds.c:2528 #, c-format msgid "primary key constraints not possible for domains" -msgstr "contraintes de clé primaire impossible pour les domaines" +msgstr "contraintes de clé primaire impossible pour les domaines" #: commands/typecmds.c:1001 commands/typecmds.c:2534 #, c-format @@ -9134,12 +8914,12 @@ msgstr "contraintes d'exclusion impossible pour les domaines" #: commands/typecmds.c:1007 commands/typecmds.c:2540 #, c-format msgid "foreign key constraints not possible for domains" -msgstr "contraintes de clé étrangère impossible pour les domaines" +msgstr "contraintes de clé étrangère impossible pour les domaines" #: commands/typecmds.c:1016 commands/typecmds.c:2549 #, c-format msgid "specifying constraint deferrability not supported for domains" -msgstr "spécifier des contraintes déferrantes n'est pas supporté par les domaines" +msgstr "spécifier des contraintes déferrantes n'est pas supporté par les domaines" #: commands/typecmds.c:1291 utils/cache/typcache.c:1630 #, c-format @@ -9154,32 +8934,32 @@ msgstr "l'attribut du sous-type est requis" #: commands/typecmds.c:1434 #, c-format msgid "range subtype cannot be %s" -msgstr "le sous-type de l'intervalle ne peut pas être %s" +msgstr "le sous-type de l'intervalle ne peut pas être %s" #: commands/typecmds.c:1453 #, c-format msgid "range collation specified but subtype does not support collation" -msgstr "collationnement spécifié pour l'intervalle mais le sous-type ne supporte pas les collationnements" +msgstr "collationnement spécifié pour l'intervalle mais le sous-type ne supporte pas les collationnements" #: commands/typecmds.c:1687 #, c-format msgid "changing argument type of function %s from \"opaque\" to \"cstring\"" -msgstr "changement du type d'argument de la fonction %s d'« opaque » à « cstring »" +msgstr "changement du type d'argument de la fonction %s d'« opaque » à « cstring »" #: commands/typecmds.c:1738 #, c-format msgid "changing argument type of function %s from \"opaque\" to %s" -msgstr "changement du type d'argument de la fonction %s d'« opaque » à %s" +msgstr "changement du type d'argument de la fonction %s d'« opaque » à %s" #: commands/typecmds.c:1837 #, c-format msgid "typmod_in function %s must return type %s" -msgstr "le type de sortie de la fonction typmod_in %s doit être %s" +msgstr "le type de sortie de la fonction typmod_in %s doit être %s" #: commands/typecmds.c:1864 #, c-format msgid "typmod_out function %s must return type %s" -msgstr "le type de sortie de la fonction typmod_out %s doit être %s" +msgstr "le type de sortie de la fonction typmod_out %s doit être %s" #: commands/typecmds.c:1891 #, c-format @@ -9190,8 +8970,8 @@ msgstr "la fonction analyze du type %s doit renvoyer le type %s" #, c-format msgid "You must specify an operator class for the range type or define a default operator class for the subtype." msgstr "" -"Vous devez spécifier une classe d'opérateur pour le type range ou définir une\n" -"classe d'opérateur par défaut pour le sous-type." +"Vous devez spécifier une classe d'opérateur pour le type range ou définir une\n" +"classe d'opérateur par défaut pour le sous-type." #: commands/typecmds.c:1968 #, c-format @@ -9201,52 +8981,52 @@ msgstr "la fonction canonical %s du range doit renvoyer le type range" #: commands/typecmds.c:1974 #, c-format msgid "range canonical function %s must be immutable" -msgstr "la fonction canonical %s du range doit être immutable" +msgstr "la fonction canonical %s du range doit être immutable" #: commands/typecmds.c:2010 #, c-format msgid "range subtype diff function %s must return type %s" msgstr "" -"la fonction %s de calcul de différence pour le sous-type d'un intervalle de\n" +"la fonction %s de calcul de différence pour le sous-type d'un intervalle de\n" "valeur doit renvoyer le type %s" #: commands/typecmds.c:2017 #, c-format msgid "range subtype diff function %s must be immutable" msgstr "" -"la fonction %s de calcul de différence pour le sous-type d'un intervalle de\n" -"valeur doit être immutable" +"la fonction %s de calcul de différence pour le sous-type d'un intervalle de\n" +"valeur doit être immutable" #: commands/typecmds.c:2044 #, c-format msgid "pg_type array OID value not set when in binary upgrade mode" -msgstr "les valeurs d'OID du tableau pgtype ne sont pas positionnées en mode de mise à jour binaire" +msgstr "les valeurs d'OID du tableau pgtype ne sont pas positionnées en mode de mise à jour binaire" #: commands/typecmds.c:2348 #, c-format msgid "column \"%s\" of table \"%s\" contains null values" -msgstr "la colonne « %s » de la table « %s » contient des valeurs NULL" +msgstr "la colonne « %s » de la table « %s » contient des valeurs NULL" #: commands/typecmds.c:2463 commands/typecmds.c:2646 #, c-format msgid "constraint \"%s\" of domain \"%s\" does not exist" -msgstr "la contrainte « %s » du domaine « %s » n'existe pas" +msgstr "la contrainte « %s » du domaine « %s » n'existe pas" #: commands/typecmds.c:2467 #, c-format msgid "constraint \"%s\" of domain \"%s\" does not exist, skipping" -msgstr "la contrainte « %s » du domaine « %s » n'existe pas, ignore" +msgstr "la contrainte « %s » du domaine « %s » n'existe pas, ignore" #: commands/typecmds.c:2652 #, c-format msgid "constraint \"%s\" of domain \"%s\" is not a check constraint" -msgstr "la contrainte « %s » du domaine « %s » n'est pas une contrainte de vérification" +msgstr "la contrainte « %s » du domaine « %s » n'est pas une contrainte de vérification" #: commands/typecmds.c:2758 #, c-format msgid "column \"%s\" of table \"%s\" contains values that violate the new constraint" msgstr "" -"la colonne « %s » de la table « %s » contient des valeurs violant la\n" +"la colonne « %s » de la table « %s » contient des valeurs violant la\n" "nouvelle contrainte" #: commands/typecmds.c:2971 commands/typecmds.c:3228 commands/typecmds.c:3417 @@ -9257,24 +9037,24 @@ msgstr "%s n'est pas un domaine" #: commands/typecmds.c:3005 #, c-format msgid "constraint \"%s\" for domain \"%s\" already exists" -msgstr "la contrainte « %s » du domaine « %s » existe déjà" +msgstr "la contrainte « %s » du domaine « %s » existe déjà" #: commands/typecmds.c:3055 #, c-format msgid "cannot use table references in domain check constraint" msgstr "" -"ne peut pas utiliser les références de table dans la contrainte de\n" -"vérification du domaine" +"ne peut pas utiliser les références de table dans la contrainte de\n" +"vérification du domaine" #: commands/typecmds.c:3158 commands/typecmds.c:3240 commands/typecmds.c:3534 #, c-format msgid "%s is a table's row type" -msgstr "« %s » est du type ligne de table" +msgstr "« %s » est du type ligne de table" #: commands/typecmds.c:3160 commands/typecmds.c:3242 commands/typecmds.c:3536 #, c-format msgid "Use ALTER TABLE instead." -msgstr "Utilisez ALTER TABLE à la place." +msgstr "Utilisez ALTER TABLE à la place." #: commands/typecmds.c:3167 commands/typecmds.c:3249 commands/typecmds.c:3449 #, c-format @@ -9289,852 +9069,852 @@ msgstr "Vous pouvez modifier le type %s, ce qui va modifier aussi le type tablea #: commands/typecmds.c:3519 #, c-format msgid "type \"%s\" already exists in schema \"%s\"" -msgstr "le type « %s » existe déjà dans le schéma « %s »" +msgstr "le type « %s » existe déjà dans le schéma « %s »" #: commands/user.c:149 #, c-format msgid "SYSID can no longer be specified" -msgstr "SYSID ne peut plus être spécifié" +msgstr "SYSID ne peut plus être spécifié" #: commands/user.c:291 #, c-format msgid "must be superuser to create superusers" -msgstr "doit être super-utilisateur pour créer des super-utilisateurs" +msgstr "doit être super-utilisateur pour créer des super-utilisateurs" #: commands/user.c:298 #, c-format msgid "must be superuser to create replication users" -msgstr "doit être super-utilisateur pour créer des utilisateurs avec l'attribut réplication" +msgstr "doit être super-utilisateur pour créer des utilisateurs avec l'attribut réplication" #: commands/user.c:305 commands/user.c:693 #, c-format msgid "must be superuser to change bypassrls attribute" -msgstr "doit être super-utilisateur pour modifier l'attribut bypassrls" +msgstr "doit être super-utilisateur pour modifier l'attribut bypassrls" #: commands/user.c:312 #, c-format msgid "permission denied to create role" -msgstr "droit refusé pour créer un rôle" +msgstr "droit refusé pour créer un rôle" -#: commands/user.c:322 commands/user.c:1176 commands/user.c:1183 gram.y:13606 gram.y:13641 utils/adt/acl.c:5279 utils/adt/acl.c:5285 +#: commands/user.c:322 commands/user.c:1176 commands/user.c:1183 gram.y:13620 gram.y:13655 utils/adt/acl.c:5279 utils/adt/acl.c:5285 #, c-format msgid "role name \"%s\" is reserved" -msgstr "le nom du rôle « %s » est réservé" +msgstr "le nom du rôle « %s » est réservé" #: commands/user.c:324 commands/user.c:1178 commands/user.c:1185 #, c-format msgid "Role names starting with \"pg_\" are reserved." -msgstr "Les noms de rôle commençant par « pg_ » sont réservés." +msgstr "Les noms de rôle commençant par « pg_ » sont réservés." #: commands/user.c:336 commands/user.c:1191 #, c-format msgid "role \"%s\" already exists" -msgstr "le rôle « %s » existe déjà" +msgstr "le rôle « %s » existe déjà" #: commands/user.c:414 #, c-format msgid "pg_authid OID value not set when in binary upgrade mode" -msgstr "la valeur d'OID de pg_authid n'est pas positionnée en mode de mise à jour binaire" +msgstr "la valeur d'OID de pg_authid n'est pas positionnée en mode de mise à jour binaire" #: commands/user.c:679 commands/user.c:896 commands/user.c:1432 commands/user.c:1578 #, c-format msgid "must be superuser to alter superusers" -msgstr "doit être super-utilisateur pour modifier des super-utilisateurs" +msgstr "doit être super-utilisateur pour modifier des super-utilisateurs" #: commands/user.c:686 #, c-format msgid "must be superuser to alter replication users" -msgstr "doit être super-utilisateur pour modifier des utilisateurs ayant l'attribut réplication" +msgstr "doit être super-utilisateur pour modifier des utilisateurs ayant l'attribut réplication" #: commands/user.c:709 commands/user.c:904 #, c-format msgid "permission denied" -msgstr "droit refusé" +msgstr "droit refusé" #: commands/user.c:934 #, c-format msgid "must be superuser to alter settings globally" -msgstr "doit être super-utilisateur pour modifier globalement les configurations" +msgstr "doit être super-utilisateur pour modifier globalement les configurations" #: commands/user.c:956 #, c-format msgid "permission denied to drop role" -msgstr "droit refusé pour supprimer le rôle" +msgstr "droit refusé pour supprimer le rôle" #: commands/user.c:980 #, c-format msgid "cannot use special role specifier in DROP ROLE" -msgstr "ne peut pas être le spécificateur de rôle spécial dans DROP ROLE" +msgstr "ne peut pas être le spécificateur de rôle spécial dans DROP ROLE" #: commands/user.c:990 commands/user.c:1147 commands/variable.c:825 commands/variable.c:897 utils/adt/acl.c:5121 utils/adt/acl.c:5173 utils/adt/acl.c:5206 utils/adt/acl.c:5224 utils/init/miscinit.c:502 #, c-format msgid "role \"%s\" does not exist" -msgstr "le rôle « %s » n'existe pas" +msgstr "le rôle « %s » n'existe pas" #: commands/user.c:995 #, c-format msgid "role \"%s\" does not exist, skipping" -msgstr "le rôle « %s » n'existe pas, poursuite du traitement" +msgstr "le rôle « %s » n'existe pas, poursuite du traitement" #: commands/user.c:1007 commands/user.c:1011 #, c-format msgid "current user cannot be dropped" -msgstr "l'utilisateur actuel ne peut pas être supprimé" +msgstr "l'utilisateur actuel ne peut pas être supprimé" #: commands/user.c:1015 #, c-format msgid "session user cannot be dropped" -msgstr "l'utilisateur de la session ne peut pas être supprimé" +msgstr "l'utilisateur de la session ne peut pas être supprimé" #: commands/user.c:1026 #, c-format msgid "must be superuser to drop superusers" -msgstr "doit être super-utilisateur pour supprimer des super-utilisateurs" +msgstr "doit être super-utilisateur pour supprimer des super-utilisateurs" #: commands/user.c:1042 #, c-format msgid "role \"%s\" cannot be dropped because some objects depend on it" -msgstr "le rôle « %s » ne peut pas être supprimé car d'autres objets en dépendent" +msgstr "le rôle « %s » ne peut pas être supprimé car d'autres objets en dépendent" #: commands/user.c:1163 #, c-format msgid "session user cannot be renamed" -msgstr "l'utilisateur de la session ne peut pas être renommé" +msgstr "l'utilisateur de la session ne peut pas être renommé" #: commands/user.c:1167 #, c-format msgid "current user cannot be renamed" -msgstr "l'utilisateur courant ne peut pas être renommé" +msgstr "l'utilisateur courant ne peut pas être renommé" #: commands/user.c:1201 #, c-format msgid "must be superuser to rename superusers" -msgstr "doit être super-utilisateur pour renommer les super-utilisateurs" +msgstr "doit être super-utilisateur pour renommer les super-utilisateurs" #: commands/user.c:1208 #, c-format msgid "permission denied to rename role" -msgstr "droit refusé pour renommer le rôle" +msgstr "droit refusé pour renommer le rôle" #: commands/user.c:1229 #, c-format msgid "MD5 password cleared because of role rename" -msgstr "mot de passe MD5 effacé à cause du renommage du rôle" +msgstr "mot de passe MD5 effacé à cause du renommage du rôle" #: commands/user.c:1291 #, c-format msgid "column names cannot be included in GRANT/REVOKE ROLE" -msgstr "les noms de colonne ne peuvent pas être inclus dans GRANT/REVOKE ROLE" +msgstr "les noms de colonne ne peuvent pas être inclus dans GRANT/REVOKE ROLE" #: commands/user.c:1329 #, c-format msgid "permission denied to drop objects" -msgstr "droit refusé pour supprimer les objets" +msgstr "droit refusé pour supprimer les objets" #: commands/user.c:1356 commands/user.c:1365 #, c-format msgid "permission denied to reassign objects" -msgstr "droit refusé pour ré-affecter les objets" +msgstr "droit refusé pour ré-affecter les objets" #: commands/user.c:1440 commands/user.c:1586 #, c-format msgid "must have admin option on role \"%s\"" -msgstr "doit avoir l'option admin sur le rôle « %s »" +msgstr "doit avoir l'option admin sur le rôle « %s »" #: commands/user.c:1457 #, c-format msgid "must be superuser to set grantor" -msgstr "doit être super-utilisateur pour configurer le « donneur de droits »" +msgstr "doit être super-utilisateur pour configurer le « donneur de droits »" #: commands/user.c:1482 #, c-format msgid "role \"%s\" is a member of role \"%s\"" -msgstr "le rôle « %s » est un membre du rôle « %s »" +msgstr "le rôle « %s » est un membre du rôle « %s »" #: commands/user.c:1497 #, c-format msgid "role \"%s\" is already a member of role \"%s\"" -msgstr "le rôle « %s » est déjà un membre du rôle « %s »" +msgstr "le rôle « %s » est déjà un membre du rôle « %s »" #: commands/user.c:1608 #, c-format msgid "role \"%s\" is not a member of role \"%s\"" -msgstr "le rôle « %s » n'est pas un membre du rôle « %s »" +msgstr "le rôle « %s » n'est pas un membre du rôle « %s »" #: commands/vacuum.c:185 #, c-format msgid "%s cannot be executed from VACUUM or ANALYZE" -msgstr "%s ne peut pas être exécuté dans un VACUUM ou un ANALYZE" +msgstr "%s ne peut pas être exécuté dans un VACUUM ou un ANALYZE" #: commands/vacuum.c:195 #, c-format msgid "VACUUM option DISABLE_PAGE_SKIPPING cannot be used with FULL" msgstr "" -"l'option DISABLE_PAGE_SKIPPING de la commande VACUUM ne pas pas être utilisée\n" -"en même temps que l'option FULL" +"l'option DISABLE_PAGE_SKIPPING de la commande VACUUM ne pas pas être utilisée\n" +"en même temps que l'option FULL" #: commands/vacuum.c:535 #, c-format msgid "oldest xmin is far in the past" -msgstr "le plus ancien xmin est loin dans le passé" +msgstr "le plus ancien xmin est loin dans le passé" #: commands/vacuum.c:536 #, c-format msgid "Close open transactions soon to avoid wraparound problems." msgstr "" -"Fermez les transactions ouvertes rapidement pour éviter des problèmes de\n" -"réinitialisation." +"Fermez les transactions ouvertes rapidement pour éviter des problèmes de\n" +"réinitialisation." #: commands/vacuum.c:575 #, c-format msgid "oldest multixact is far in the past" -msgstr "le plus ancien multixact est loin dans le passé" +msgstr "le plus ancien multixact est loin dans le passé" #: commands/vacuum.c:576 #, c-format msgid "Close open transactions with multixacts soon to avoid wraparound problems." msgstr "" -"Fermez les transactions ouvertes avec multixacts rapidement pour éviter des problèmes de\n" -"réinitialisation." +"Fermez les transactions ouvertes avec multixacts rapidement pour éviter des problèmes de\n" +"réinitialisation." #: commands/vacuum.c:1146 #, c-format msgid "some databases have not been vacuumed in over 2 billion transactions" msgstr "" -"certaines bases de données n'ont pas eu droit à l'opération de maintenance\n" +"certaines bases de données n'ont pas eu droit à l'opération de maintenance\n" "VACUUM depuis plus de 2 milliards de transactions" #: commands/vacuum.c:1147 #, c-format msgid "You might have already suffered transaction-wraparound data loss." msgstr "" -"Vous pouvez avoir déjà souffert de pertes de données suite à une\n" -"réinitialisation de l'identifiant des transactions." +"Vous pouvez avoir déjà souffert de pertes de données suite à une\n" +"réinitialisation de l'identifiant des transactions." #: commands/vacuum.c:1268 #, c-format msgid "skipping vacuum of \"%s\" --- lock not available" -msgstr "ignore le vacuum de « %s » --- verrou non disponible" +msgstr "ignore le vacuum de « %s » --- verrou non disponible" #: commands/vacuum.c:1294 #, c-format msgid "skipping \"%s\" --- only superuser can vacuum it" -msgstr "ignore « %s » --- seul le super-utilisateur peut exécuter un VACUUM" +msgstr "ignore « %s » --- seul le super-utilisateur peut exécuter un VACUUM" #: commands/vacuum.c:1298 #, c-format msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" msgstr "" -"ignore « %s » --- seul le super-utilisateur ou le propriétaire de la base de données\n" -"peuvent exécuter un VACUUM" +"ignore « %s » --- seul le super-utilisateur ou le propriétaire de la base de données\n" +"peuvent exécuter un VACUUM" #: commands/vacuum.c:1302 #, c-format msgid "skipping \"%s\" --- only table or database owner can vacuum it" msgstr "" -"ignore « %s » --- seul le propriétaire de la table ou de la base de données\n" -"peut exécuter un VACUUM" +"ignore « %s » --- seul le propriétaire de la table ou de la base de données\n" +"peut exécuter un VACUUM" #: commands/vacuum.c:1320 #, c-format msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables" msgstr "" -"ignore « %s » --- n'a pas pu exécuter un VACUUM sur les objets autres que\n" -"des tables et les tables systèmes" +"ignore « %s » --- n'a pas pu exécuter un VACUUM sur les objets autres que\n" +"des tables et les tables systèmes" -#: commands/vacuumlazy.c:366 +#: commands/vacuumlazy.c:371 #, c-format msgid "automatic vacuum of table \"%s.%s.%s\": index scans: %d\n" -msgstr "VACUUM automatique de la table « %s.%s.%s » : %d parcours d'index\n" +msgstr "VACUUM automatique de la table « %s.%s.%s » : %d parcours d'index\n" -#: commands/vacuumlazy.c:371 +#: commands/vacuumlazy.c:376 #, c-format msgid "pages: %u removed, %u remain, %u skipped due to pins, %u skipped frozen\n" -msgstr "pages : %u supprimées, %u restants, %u ignorées à cause de verrous; %u ignorées car gelées\n" +msgstr "pages : %u supprimées, %u restants, %u ignorées à cause de verrous; %u ignorées car gelées\n" -#: commands/vacuumlazy.c:377 +#: commands/vacuumlazy.c:382 #, c-format msgid "tuples: %.0f removed, %.0f remain, %.0f are dead but not yet removable\n" -msgstr "lignes : %.0f supprimées, %.0f restantes, %.0f sont mortes mais pas encore supprimables\n" +msgstr "lignes : %.0f supprimées, %.0f restantes, %.0f sont mortes mais pas encore supprimables\n" -#: commands/vacuumlazy.c:382 +#: commands/vacuumlazy.c:387 #, c-format msgid "buffer usage: %d hits, %d misses, %d dirtied\n" -msgstr "utilisation du tampon : %d récupérées, %d ratées, %d modifiées\n" +msgstr "utilisation du tampon : %d récupérées, %d ratées, %d modifiées\n" -#: commands/vacuumlazy.c:386 +#: commands/vacuumlazy.c:391 #, c-format msgid "avg read rate: %.3f MB/s, avg write rate: %.3f MB/s\n" -msgstr "taux moyen de lecture : %.3f Mo/s, taux moyen d'écriture : %.3f Mo/s\n" +msgstr "taux moyen de lecture : %.3f Mo/s, taux moyen d'écriture : %.3f Mo/s\n" -#: commands/vacuumlazy.c:388 +#: commands/vacuumlazy.c:393 #, c-format msgid "system usage: %s" -msgstr "utilisation du système : %s" +msgstr "utilisation du système : %s" -#: commands/vacuumlazy.c:846 +#: commands/vacuumlazy.c:853 #, c-format msgid "relation \"%s\" page %u is uninitialized --- fixing" -msgstr "relation « %s » : la page %u n'est pas initialisée --- correction en cours" +msgstr "relation « %s » : la page %u n'est pas initialisée --- correction en cours" -#: commands/vacuumlazy.c:1316 +#: commands/vacuumlazy.c:1323 #, c-format msgid "\"%s\": removed %.0f row versions in %u pages" -msgstr "« %s » : %.0f versions de ligne supprimées parmi %u pages" +msgstr "« %s » : %.0f versions de ligne supprimées parmi %u pages" -#: commands/vacuumlazy.c:1326 +#: commands/vacuumlazy.c:1333 #, c-format msgid "%.0f dead row versions cannot be removed yet.\n" -msgstr "%.0f versions de lignes mortes ne peuvent pas encore être supprimées.\n" +msgstr "%.0f versions de lignes mortes ne peuvent pas encore être supprimées.\n" -#: commands/vacuumlazy.c:1328 +#: commands/vacuumlazy.c:1335 #, c-format msgid "There were %.0f unused item pointers.\n" -msgstr "Il y avait %.0f pointeurs d'éléments inutilisés.\n" +msgstr "Il y avait %.0f pointeurs d'éléments inutilisés.\n" -#: commands/vacuumlazy.c:1330 +#: commands/vacuumlazy.c:1337 #, c-format msgid "Skipped %u page due to buffer pins.\n" msgid_plural "Skipped %u pages due to buffer pins.\n" -msgstr[0] "Ignore %u page à cause des verrous de blocs.\n" -msgstr[1] "Ignore %u pages à cause des verrous de blocs.\n" +msgstr[0] "Ignore %u page à cause des verrous de blocs.\n" +msgstr[1] "Ignore %u pages à cause des verrous de blocs.\n" -#: commands/vacuumlazy.c:1334 +#: commands/vacuumlazy.c:1341 #, c-format msgid "%u page is entirely empty.\n" msgid_plural "%u pages are entirely empty.\n" -msgstr[0] "%u page est entièrement vide.\n" -msgstr[1] "%u pages sont entièrement vides.\n" +msgstr[0] "%u page est entièrement vide.\n" +msgstr[1] "%u pages sont entièrement vides.\n" -#: commands/vacuumlazy.c:1342 +#: commands/vacuumlazy.c:1348 #, c-format msgid "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u pages" msgstr "" -"« %s » : %.0f versions de ligne supprimables, %.0f non supprimables\n" +"« %s » : %.0f versions de ligne supprimables, %.0f non supprimables\n" "parmi %u pages sur %u" -#: commands/vacuumlazy.c:1411 +#: commands/vacuumlazy.c:1417 #, c-format msgid "\"%s\": removed %d row versions in %d pages" -msgstr "« %s »: %d versions de ligne supprimée parmi %d pages" +msgstr "« %s »: %d versions de ligne supprimée parmi %d pages" -#: commands/vacuumlazy.c:1600 +#: commands/vacuumlazy.c:1605 #, c-format msgid "scanned index \"%s\" to remove %d row versions" -msgstr "a parcouru l'index « %s » pour supprimer %d versions de lignes" +msgstr "a parcouru l'index « %s » pour supprimer %d versions de lignes" -#: commands/vacuumlazy.c:1646 +#: commands/vacuumlazy.c:1651 #, c-format msgid "index \"%s\" now contains %.0f row versions in %u pages" -msgstr "l'index « %s » contient maintenant %.0f versions de ligne dans %u pages" +msgstr "l'index « %s » contient maintenant %.0f versions de ligne dans %u pages" -#: commands/vacuumlazy.c:1650 +#: commands/vacuumlazy.c:1655 #, c-format msgid "" "%.0f index row versions were removed.\n" "%u index pages have been deleted, %u are currently reusable.\n" "%s." msgstr "" -"%.0f versions de ligne d'index ont été supprimées.\n" -"%u pages d'index ont été supprimées, %u sont actuellement réutilisables.\n" +"%.0f versions de ligne d'index ont été supprimées.\n" +"%u pages d'index ont été supprimées, %u sont actuellement réutilisables.\n" "%s." -#: commands/vacuumlazy.c:1745 +#: commands/vacuumlazy.c:1750 #, c-format msgid "\"%s\": stopping truncate due to conflicting lock request" -msgstr "« %s » : mis en suspens du tronquage à cause d'un conflit dans la demande de verrou" +msgstr "« %s » : mis en suspens du tronquage à cause d'un conflit dans la demande de verrou" -#: commands/vacuumlazy.c:1810 +#: commands/vacuumlazy.c:1815 #, c-format msgid "\"%s\": truncated %u to %u pages" -msgstr "« %s » : %u pages tronqués en %u" +msgstr "« %s » : %u pages tronqués en %u" -#: commands/vacuumlazy.c:1866 +#: commands/vacuumlazy.c:1871 #, c-format msgid "\"%s\": suspending truncate due to conflicting lock request" -msgstr "« %s » : mis en suspens du tronquage à cause d'un conflit dans la demande de verrou" +msgstr "« %s » : mis en suspens du tronquage à cause d'un conflit dans la demande de verrou" -#: commands/variable.c:164 utils/misc/guc.c:9883 +#: commands/variable.c:164 utils/misc/guc.c:9899 #, c-format msgid "Unrecognized key word: \"%s\"." -msgstr "Mot clé non reconnu : « %s »" +msgstr "Mot clé non reconnu : « %s »" #: commands/variable.c:176 #, c-format msgid "Conflicting \"datestyle\" specifications." -msgstr "Spécifications « datestyle » conflictuelles" +msgstr "Spécifications « datestyle » conflictuelles" #: commands/variable.c:298 #, c-format msgid "Cannot specify months in time zone interval." -msgstr "Ne peut pas spécifier des mois dans un interval avec fuseau horaire." +msgstr "Ne peut pas spécifier des mois dans un interval avec fuseau horaire." #: commands/variable.c:304 #, c-format msgid "Cannot specify days in time zone interval." -msgstr "Ne peut pas spécifier des jours dans un interval avec fuseau horaire." +msgstr "Ne peut pas spécifier des jours dans un interval avec fuseau horaire." #: commands/variable.c:346 commands/variable.c:428 #, c-format msgid "time zone \"%s\" appears to use leap seconds" -msgstr "le fuseau horaire « %s » semble utiliser les secondes « leap »" +msgstr "le fuseau horaire « %s » semble utiliser les secondes « leap »" #: commands/variable.c:348 commands/variable.c:430 #, c-format msgid "PostgreSQL does not support leap seconds." -msgstr "PostgreSQL ne supporte pas les secondes « leap »." +msgstr "PostgreSQL ne supporte pas les secondes « leap »." #: commands/variable.c:357 #, c-format msgid "UTC timezone offset is out of range." -msgstr "le décalage du fuseau horaire UTC est en dehors des limites." +msgstr "le décalage du fuseau horaire UTC est en dehors des limites." #: commands/variable.c:497 #, c-format msgid "cannot set transaction read-write mode inside a read-only transaction" msgstr "" -"ne peut pas initialiser le mode lecture-écriture de la transaction à\n" -"l'intérieur d'une transaction en lecture seule" +"ne peut pas initialiser le mode lecture-écriture de la transaction à\n" +"l'intérieur d'une transaction en lecture seule" #: commands/variable.c:504 #, c-format msgid "transaction read-write mode must be set before any query" msgstr "" -"le mode de transaction lecture/écriture doit être configuré avant d'exécuter\n" -"la première requête" +"le mode de transaction lecture/écriture doit être configuré avant d'exécuter\n" +"la première requête" #: commands/variable.c:511 #, c-format msgid "cannot set transaction read-write mode during recovery" msgstr "" -"ne peut pas initialiser le mode lecture-écriture des transactions lors de la\n" +"ne peut pas initialiser le mode lecture-écriture des transactions lors de la\n" "restauration" #: commands/variable.c:560 #, c-format msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query" -msgstr "SET TRANSACTION ISOLATION LEVEL doit être appelé avant toute requête" +msgstr "SET TRANSACTION ISOLATION LEVEL doit être appelé avant toute requête" #: commands/variable.c:567 #, c-format msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction" msgstr "" -"SET TRANSACTION ISOLATION LEVEL ne doit pas être appelé dans une\n" +"SET TRANSACTION ISOLATION LEVEL ne doit pas être appelé dans une\n" "sous-transaction" #: commands/variable.c:574 storage/lmgr/predicate.c:1587 #, c-format msgid "cannot use serializable mode in a hot standby" -msgstr "ne peut pas utiliser le mode sérialisable sur un serveur en « Hot Standby »" +msgstr "ne peut pas utiliser le mode sérialisable sur un serveur en « Hot Standby »" #: commands/variable.c:575 #, c-format msgid "You can use REPEATABLE READ instead." -msgstr "Vous pouvez utiliser REPEATABLE READ à la place." +msgstr "Vous pouvez utiliser REPEATABLE READ à la place." #: commands/variable.c:623 #, c-format msgid "SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction" msgstr "" -"SET TRANSACTION [NOT] DEFERRABLE ne doit pas être appelé dans une\n" +"SET TRANSACTION [NOT] DEFERRABLE ne doit pas être appelé dans une\n" "sous-transaction" #: commands/variable.c:629 #, c-format msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query" -msgstr "SET TRANSACTION [NOT] DEFERRABLE doit être appelé avant toute requête" +msgstr "SET TRANSACTION [NOT] DEFERRABLE doit être appelé avant toute requête" #: commands/variable.c:711 #, c-format msgid "Conversion between %s and %s is not supported." -msgstr "La conversion entre %s et %s n'est pas supportée." +msgstr "La conversion entre %s et %s n'est pas supportée." #: commands/variable.c:718 #, c-format msgid "Cannot change \"client_encoding\" now." -msgstr "Ne peut pas modifier « client_encoding » maintenant." +msgstr "Ne peut pas modifier « client_encoding » maintenant." #: commands/variable.c:779 #, c-format -msgid "cannot change client_encoding in a parallel worker" -msgstr "Ne peut pas modifier le client_encoding dans un processus parallèle" +msgid "cannot change client_encoding during a parallel operation" +msgstr "ne peut pas modifier le paramètre client_encoding lors d'une opération parallèle" #: commands/variable.c:915 #, c-format msgid "permission denied to set role \"%s\"" -msgstr "droit refusé pour configurer le rôle « %s »" +msgstr "droit refusé pour configurer le rôle « %s »" #: commands/view.c:54 #, c-format msgid "invalid value for \"check_option\" option" -msgstr "valeur invalide pour l'option « check_option »" +msgstr "valeur invalide pour l'option « check_option »" #: commands/view.c:55 #, c-format msgid "Valid values are \"local\" and \"cascaded\"." -msgstr "Les valeurs valides sont entre « local » et « cascaded »." +msgstr "Les valeurs valides sont entre « local » et « cascaded »." -#: commands/view.c:103 +#: commands/view.c:101 #, c-format msgid "could not determine which collation to use for view column \"%s\"" msgstr "" -"n'a pas pu déterminer le collationnement à utiliser pour la colonne « %s »\n" +"n'a pas pu déterminer le collationnement à utiliser pour la colonne « %s »\n" "de la vue" -#: commands/view.c:117 +#: commands/view.c:115 #, c-format msgid "view must have at least one column" msgstr "la vue doit avoir au moins une colonne" -#: commands/view.c:251 commands/view.c:263 +#: commands/view.c:280 commands/view.c:292 #, c-format msgid "cannot drop columns from view" msgstr "ne peut pas supprimer les colonnes d'une vue" -#: commands/view.c:268 +#: commands/view.c:297 #, c-format msgid "cannot change name of view column \"%s\" to \"%s\"" -msgstr "ne peut pas modifier le nom de la colonne « %s » de la vue en « %s »" +msgstr "ne peut pas modifier le nom de la colonne « %s » de la vue en « %s »" -#: commands/view.c:276 +#: commands/view.c:305 #, c-format msgid "cannot change data type of view column \"%s\" from %s to %s" -msgstr "ne peut pas modifier le type de données de la colonne « %s » de la vue de %s à %s" +msgstr "ne peut pas modifier le type de données de la colonne « %s » de la vue de %s à %s" -#: commands/view.c:415 +#: commands/view.c:444 #, c-format msgid "views must not contain SELECT INTO" msgstr "les vues ne peuvent pas contenir SELECT INTO" -#: commands/view.c:428 +#: commands/view.c:457 #, c-format msgid "views must not contain data-modifying statements in WITH" -msgstr "les vues ne peuvent pas contenir d'instructions de modifications de données avec WITH" +msgstr "les vues ne peuvent pas contenir d'instructions de modifications de données avec WITH" -#: commands/view.c:499 +#: commands/view.c:528 #, c-format msgid "CREATE VIEW specifies more column names than columns" -msgstr "CREATE VIEW spécifie plus de noms de colonnes que de colonnes" +msgstr "CREATE VIEW spécifie plus de noms de colonnes que de colonnes" -#: commands/view.c:507 +#: commands/view.c:536 #, c-format msgid "views cannot be unlogged because they do not have storage" -msgstr "les vues ne peuvent pas être non tracées car elles n'ont pas de stockage" +msgstr "les vues ne peuvent pas être non tracées car elles n'ont pas de stockage" -#: commands/view.c:521 +#: commands/view.c:550 #, c-format msgid "view \"%s\" will be a temporary view" -msgstr "la vue « %s » sera une vue temporaire" +msgstr "la vue « %s » sera une vue temporaire" #: executor/execCurrent.c:76 #, c-format msgid "cursor \"%s\" is not a SELECT query" -msgstr "le curseur « %s » n'est pas une requête SELECT" +msgstr "le curseur « %s » n'est pas une requête SELECT" #: executor/execCurrent.c:82 #, c-format msgid "cursor \"%s\" is held from a previous transaction" -msgstr "le curseur « %s » est détenu par une transaction précédente" +msgstr "le curseur « %s » est détenu par une transaction précédente" #: executor/execCurrent.c:114 #, c-format msgid "cursor \"%s\" has multiple FOR UPDATE/SHARE references to table \"%s\"" -msgstr "le curseur « %s » a plusieurs références FOR UPDATE/SHARE pour la table « %s »" +msgstr "le curseur « %s » a plusieurs références FOR UPDATE/SHARE pour la table « %s »" #: executor/execCurrent.c:123 #, c-format msgid "cursor \"%s\" does not have a FOR UPDATE/SHARE reference to table \"%s\"" -msgstr "le curseur « %s » n'a pas de référence FOR UPDATE/SHARE pour la table « %s »" +msgstr "le curseur « %s » n'a pas de référence FOR UPDATE/SHARE pour la table « %s »" #: executor/execCurrent.c:133 executor/execCurrent.c:179 #, c-format msgid "cursor \"%s\" is not positioned on a row" -msgstr "le curseur « %s » n'est pas positionné sur une ligne" +msgstr "le curseur « %s » n'est pas positionné sur une ligne" #: executor/execCurrent.c:166 #, c-format msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\"" -msgstr "le curseur « %s » n'est pas un parcours modifiable de la table « %s »" +msgstr "le curseur « %s » n'est pas un parcours modifiable de la table « %s »" #: executor/execCurrent.c:231 executor/execQual.c:1178 #, c-format msgid "type of parameter %d (%s) does not match that when preparing the plan (%s)" -msgstr "le type de paramètre %d (%s) ne correspond pas à ce qui est préparé dans le plan (%s)" +msgstr "le type de paramètre %d (%s) ne correspond pas à ce qui est préparé dans le plan (%s)" #: executor/execCurrent.c:243 executor/execQual.c:1190 #, c-format msgid "no value found for parameter %d" -msgstr "aucune valeur trouvée pour le paramètre %d" +msgstr "aucune valeur trouvée pour le paramètre %d" #: executor/execIndexing.c:544 #, c-format msgid "ON CONFLICT does not support deferrable unique constraints/exclusion constraints as arbiters" -msgstr "ON CONFLICT ne supporte pas les contraintes uniques diferrables et les contraintes d'exclusion différables comme arbitres" +msgstr "ON CONFLICT ne supporte pas les contraintes uniques diferrables et les contraintes d'exclusion différables comme arbitres" #: executor/execIndexing.c:821 #, c-format msgid "could not create exclusion constraint \"%s\"" -msgstr "n'a pas pu créer la contrainte d'exclusion « %s »" +msgstr "n'a pas pu créer la contrainte d'exclusion « %s »" #: executor/execIndexing.c:824 #, c-format msgid "Key %s conflicts with key %s." -msgstr "La clé %s est en conflit avec la clé %s." +msgstr "La clé %s est en conflit avec la clé %s." #: executor/execIndexing.c:826 #, c-format msgid "Key conflicts exist." -msgstr "Un conflit de clés est présent." +msgstr "Un conflit de clés est présent." #: executor/execIndexing.c:832 #, c-format msgid "conflicting key value violates exclusion constraint \"%s\"" -msgstr "la valeur d'une clé en conflit rompt la contrainte d'exclusion « %s »" +msgstr "la valeur d'une clé en conflit rompt la contrainte d'exclusion « %s »" #: executor/execIndexing.c:835 #, c-format msgid "Key %s conflicts with existing key %s." -msgstr "La clé %s est en conflit avec la clé existante %s." +msgstr "La clé %s est en conflit avec la clé existante %s." #: executor/execIndexing.c:837 #, c-format msgid "Key conflicts with existing key." -msgstr "La clé est en conflit avec une clé existante." +msgstr "La clé est en conflit avec une clé existante." #: executor/execMain.c:1027 #, c-format msgid "cannot change sequence \"%s\"" -msgstr "ne peut pas modifier la séquence « %s »" +msgstr "ne peut pas modifier la séquence « %s »" #: executor/execMain.c:1033 #, c-format msgid "cannot change TOAST relation \"%s\"" -msgstr "ne peut pas modifier la relation TOAST « %s »" +msgstr "ne peut pas modifier la relation TOAST « %s »" -#: executor/execMain.c:1051 rewrite/rewriteHandler.c:2648 +#: executor/execMain.c:1051 rewrite/rewriteHandler.c:2679 #, c-format msgid "cannot insert into view \"%s\"" -msgstr "ne peut pas insérer dans la vue « %s »" +msgstr "ne peut pas insérer dans la vue « %s »" -#: executor/execMain.c:1053 rewrite/rewriteHandler.c:2651 +#: executor/execMain.c:1053 rewrite/rewriteHandler.c:2682 #, c-format msgid "To enable inserting into the view, provide an INSTEAD OF INSERT trigger or an unconditional ON INSERT DO INSTEAD rule." -msgstr "Pour activer l'insertion dans la vue, fournissez un trigger INSTEAD OF INSERT ou une règle ON INSERT DO INSTEAD sans condition." +msgstr "Pour activer l'insertion dans la vue, fournissez un trigger INSTEAD OF INSERT ou une règle ON INSERT DO INSTEAD sans condition." -#: executor/execMain.c:1059 rewrite/rewriteHandler.c:2656 +#: executor/execMain.c:1059 rewrite/rewriteHandler.c:2687 #, c-format msgid "cannot update view \"%s\"" -msgstr "ne peut pas mettre à jour la vue « %s »" +msgstr "ne peut pas mettre à jour la vue « %s »" -#: executor/execMain.c:1061 rewrite/rewriteHandler.c:2659 +#: executor/execMain.c:1061 rewrite/rewriteHandler.c:2690 #, c-format msgid "To enable updating the view, provide an INSTEAD OF UPDATE trigger or an unconditional ON UPDATE DO INSTEAD rule." -msgstr "Pour activer la mise à jour dans la vue, fournissez un trigger INSTEAD OF UPDATE ou une règle ON UPDATE DO INSTEAD sans condition." +msgstr "Pour activer la mise à jour dans la vue, fournissez un trigger INSTEAD OF UPDATE ou une règle ON UPDATE DO INSTEAD sans condition." -#: executor/execMain.c:1067 rewrite/rewriteHandler.c:2664 +#: executor/execMain.c:1067 rewrite/rewriteHandler.c:2695 #, c-format msgid "cannot delete from view \"%s\"" -msgstr "ne peut pas supprimer à partir de la vue « %s »" +msgstr "ne peut pas supprimer à partir de la vue « %s »" -#: executor/execMain.c:1069 rewrite/rewriteHandler.c:2667 +#: executor/execMain.c:1069 rewrite/rewriteHandler.c:2698 #, c-format msgid "To enable deleting from the view, provide an INSTEAD OF DELETE trigger or an unconditional ON DELETE DO INSTEAD rule." -msgstr "Pour activer la suppression dans la vue, fournissez un trigger INSTEAD OF DELETE ou une règle ON DELETE DO INSTEAD sans condition." +msgstr "Pour activer la suppression dans la vue, fournissez un trigger INSTEAD OF DELETE ou une règle ON DELETE DO INSTEAD sans condition." #: executor/execMain.c:1080 #, c-format msgid "cannot change materialized view \"%s\"" -msgstr "ne peut pas modifier la vue matérialisée « %s »" +msgstr "ne peut pas modifier la vue matérialisée « %s »" #: executor/execMain.c:1092 #, c-format msgid "cannot insert into foreign table \"%s\"" -msgstr "ne peut pas insérer dans la table distante « %s »" +msgstr "ne peut pas insérer dans la table distante « %s »" #: executor/execMain.c:1098 #, c-format msgid "foreign table \"%s\" does not allow inserts" -msgstr "la table distante « %s » n'autorise pas les insertions" +msgstr "la table distante « %s » n'autorise pas les insertions" #: executor/execMain.c:1105 #, c-format msgid "cannot update foreign table \"%s\"" -msgstr "ne peut pas modifier la table distante « %s »" +msgstr "ne peut pas modifier la table distante « %s »" #: executor/execMain.c:1111 #, c-format msgid "foreign table \"%s\" does not allow updates" -msgstr "la table distante « %s » n'autorise pas les modifications" +msgstr "la table distante « %s » n'autorise pas les modifications" #: executor/execMain.c:1118 #, c-format msgid "cannot delete from foreign table \"%s\"" -msgstr "ne peut pas supprimer à partir de la table distante « %s »" +msgstr "ne peut pas supprimer à partir de la table distante « %s »" #: executor/execMain.c:1124 #, c-format msgid "foreign table \"%s\" does not allow deletes" -msgstr "la table distante « %s » n'autorise pas les suppressions" +msgstr "la table distante « %s » n'autorise pas les suppressions" #: executor/execMain.c:1135 #, c-format msgid "cannot change relation \"%s\"" -msgstr "ne peut pas modifier la relation « %s »" +msgstr "ne peut pas modifier la relation « %s »" #: executor/execMain.c:1161 #, c-format msgid "cannot lock rows in sequence \"%s\"" -msgstr "ne peut pas verrouiller les lignes dans la séquence « %s »" +msgstr "ne peut pas verrouiller les lignes dans la séquence « %s »" #: executor/execMain.c:1168 #, c-format msgid "cannot lock rows in TOAST relation \"%s\"" -msgstr "ne peut pas verrouiller les lignes dans la relation TOAST « %s »" +msgstr "ne peut pas verrouiller les lignes dans la relation TOAST « %s »" #: executor/execMain.c:1175 #, c-format msgid "cannot lock rows in view \"%s\"" -msgstr "ne peut pas verrouiller les lignes dans la vue « %s »" +msgstr "ne peut pas verrouiller les lignes dans la vue « %s »" #: executor/execMain.c:1183 #, c-format msgid "cannot lock rows in materialized view \"%s\"" -msgstr "ne peut pas verrouiller les lignes dans la vue matérialisée « %s »" +msgstr "ne peut pas verrouiller les lignes dans la vue matérialisée « %s »" -#: executor/execMain.c:1192 executor/execMain.c:2611 executor/nodeLockRows.c:132 +#: executor/execMain.c:1192 executor/execMain.c:2613 executor/nodeLockRows.c:132 #, c-format msgid "cannot lock rows in foreign table \"%s\"" -msgstr "ne peut pas verrouiller la table distante « %s »" +msgstr "ne peut pas verrouiller la table distante « %s »" #: executor/execMain.c:1198 #, c-format msgid "cannot lock rows in relation \"%s\"" -msgstr "n'a pas pu verrouiller les lignes dans la relation « %s »" +msgstr "n'a pas pu verrouiller les lignes dans la relation « %s »" -#: executor/execMain.c:1729 +#: executor/execMain.c:1731 #, c-format msgid "null value in column \"%s\" violates not-null constraint" -msgstr "une valeur NULL viole la contrainte NOT NULL de la colonne « %s »" +msgstr "une valeur NULL viole la contrainte NOT NULL de la colonne « %s »" -#: executor/execMain.c:1731 executor/execMain.c:1757 executor/execMain.c:1846 +#: executor/execMain.c:1733 executor/execMain.c:1759 executor/execMain.c:1848 #, c-format msgid "Failing row contains %s." -msgstr "La ligne en échec contient %s" +msgstr "La ligne en échec contient %s" -#: executor/execMain.c:1755 +#: executor/execMain.c:1757 #, c-format msgid "new row for relation \"%s\" violates check constraint \"%s\"" -msgstr "la nouvelle ligne viole la contrainte de vérification « %s » de la relation « %s »" +msgstr "la nouvelle ligne viole la contrainte de vérification « %s » de la relation « %s »" -#: executor/execMain.c:1844 +#: executor/execMain.c:1846 #, c-format msgid "new row violates check option for view \"%s\"" -msgstr "la nouvelle ligne viole la contrainte de vérification pour la vue « %s »" +msgstr "la nouvelle ligne viole la contrainte de vérification pour la vue « %s »" -#: executor/execMain.c:1854 +#: executor/execMain.c:1856 #, c-format msgid "new row violates row-level security policy \"%s\" for table \"%s\"" -msgstr "la nouvelle ligne viole la politique de sécurité au niveau ligne « %s » pour la table « %s »" +msgstr "la nouvelle ligne viole la politique de sécurité au niveau ligne « %s » pour la table « %s »" -#: executor/execMain.c:1859 +#: executor/execMain.c:1861 #, c-format msgid "new row violates row-level security policy for table \"%s\"" -msgstr "la nouvelle ligne viole la politique de sécurité au niveau ligne pour la table « %s »" +msgstr "la nouvelle ligne viole la politique de sécurité au niveau ligne pour la table « %s »" -#: executor/execMain.c:1866 +#: executor/execMain.c:1868 #, c-format msgid "new row violates row-level security policy \"%s\" (USING expression) for table \"%s\"" -msgstr "la nouvelle ligne viole la politique de sécurité au niveau ligne « %s » (expression USING) pour la table « %s »" +msgstr "la nouvelle ligne viole la politique de sécurité au niveau ligne « %s » (expression USING) pour la table « %s »" -#: executor/execMain.c:1871 +#: executor/execMain.c:1873 #, c-format msgid "new row violates row-level security policy (USING expression) for table \"%s\"" -msgstr "la nouvelle ligne viole la politique de sécurité au niveau ligne (expression USING) pour la table « %s »" +msgstr "la nouvelle ligne viole la politique de sécurité au niveau ligne (expression USING) pour la table « %s »" -#: executor/execQual.c:302 executor/execQual.c:339 executor/execQual.c:3230 utils/adt/array_userfuncs.c:472 utils/adt/arrayfuncs.c:260 utils/adt/arrayfuncs.c:558 utils/adt/arrayfuncs.c:1288 utils/adt/arrayfuncs.c:3361 utils/adt/arrayfuncs.c:5241 utils/adt/arrayfuncs.c:5764 +#: executor/execQual.c:302 executor/execQual.c:339 executor/execQual.c:3236 utils/adt/array_userfuncs.c:484 utils/adt/arrayfuncs.c:260 utils/adt/arrayfuncs.c:558 utils/adt/arrayfuncs.c:1288 utils/adt/arrayfuncs.c:3361 utils/adt/arrayfuncs.c:5241 utils/adt/arrayfuncs.c:5758 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" -msgstr "le nombre de dimensions du tableau (%d) dépasse le maximum autorisé (%d)" +msgstr "le nombre de dimensions du tableau (%d) dépasse le maximum autorisé (%d)" #: executor/execQual.c:324 executor/execQual.c:360 #, c-format msgid "array subscript in assignment must not be null" -msgstr "l'indice du tableau dans l'affectation ne doit pas être NULL" +msgstr "l'indice du tableau dans l'affectation ne doit pas être NULL" -#: executor/execQual.c:657 executor/execQual.c:4170 +#: executor/execQual.c:657 executor/execQual.c:4183 #, c-format msgid "attribute %d has wrong type" msgstr "l'attribut %d a un type invalide" -#: executor/execQual.c:658 executor/execQual.c:4171 +#: executor/execQual.c:658 executor/execQual.c:4184 #, c-format msgid "Table has type %s, but query expects %s." -msgstr "La table a le type %s alors que la requête attend %s." +msgstr "La table a le type %s alors que la requête attend %s." #: executor/execQual.c:851 executor/execQual.c:868 executor/execQual.c:1068 executor/nodeModifyTable.c:95 executor/nodeModifyTable.c:105 executor/nodeModifyTable.c:122 executor/nodeModifyTable.c:130 #, c-format msgid "table row type and query-specified row type do not match" -msgstr "Le type de ligne de la table et celui spécifié par la requête ne correspondent pas" +msgstr "Le type de ligne de la table et celui spécifié par la requête ne correspondent pas" #: executor/execQual.c:852 #, c-format msgid "Table row contains %d attribute, but query expects %d." msgid_plural "Table row contains %d attributes, but query expects %d." -msgstr[0] "La ligne de la table contient %d attribut alors que la requête en attend %d." -msgstr[1] "La ligne de la table contient %d attributs alors que la requête en attend %d." +msgstr[0] "La ligne de la table contient %d attribut alors que la requête en attend %d." +msgstr[1] "La ligne de la table contient %d attributs alors que la requête en attend %d." #: executor/execQual.c:869 executor/nodeModifyTable.c:106 #, c-format msgid "Table has type %s at ordinal position %d, but query expects %s." -msgstr "La table a le type %s à la position ordinale %d alors que la requête attend %s." +msgstr "La table a le type %s à la position ordinale %d alors que la requête attend %s." #: executor/execQual.c:1069 executor/execQual.c:1665 #, c-format msgid "Physical storage mismatch on dropped attribute at ordinal position %d." msgstr "" -"Le stockage physique ne correspond pas à l'attribut supprimé à la position\n" +"Le stockage physique ne correspond pas à l'attribut supprimé à la position\n" "ordinale %d." #: executor/execQual.c:1344 parser/parse_func.c:115 parser/parse_func.c:542 parser/parse_func.c:897 #, c-format msgid "cannot pass more than %d argument to a function" msgid_plural "cannot pass more than %d arguments to a function" -msgstr[0] "ne peut pas passer plus de %d argument à une fonction" -msgstr[1] "ne peut pas passer plus de %d arguments à une fonction" +msgstr[0] "ne peut pas passer plus de %d argument à une fonction" +msgstr[1] "ne peut pas passer plus de %d arguments à une fonction" #: executor/execQual.c:1533 #, c-format msgid "functions and operators can take at most one set argument" -msgstr "les fonctions et opérateurs peuvent prendre au plus un argument d'ensemble" +msgstr "les fonctions et opérateurs peuvent prendre au plus un argument d'ensemble" #: executor/execQual.c:1583 #, c-format msgid "function returning setof record called in context that cannot accept type record" msgstr "" -"la fonction renvoyant des lignes a été appelée dans un contexte qui\n" +"la fonction renvoyant des lignes a été appelée dans un contexte qui\n" "n'accepte pas un ensemble" #: executor/execQual.c:1638 executor/execQual.c:1654 executor/execQual.c:1664 #, c-format msgid "function return row and query-specified return row do not match" -msgstr "la ligne de retour spécifiée par la requête et la ligne de retour de la fonction ne correspondent pas" +msgstr "la ligne de retour spécifiée par la requête et la ligne de retour de la fonction ne correspondent pas" #: executor/execQual.c:1639 #, c-format msgid "Returned row contains %d attribute, but query expects %d." msgid_plural "Returned row contains %d attributes, but query expects %d." -msgstr[0] "La ligne renvoyée contient %d attribut mais la requête en attend %d." -msgstr[1] "La ligne renvoyée contient %d attributs mais la requête en attend %d." +msgstr[0] "La ligne renvoyée contient %d attribut mais la requête en attend %d." +msgstr[1] "La ligne renvoyée contient %d attributs mais la requête en attend %d." #: executor/execQual.c:1655 #, c-format msgid "Returned type %s at ordinal position %d, but query expects %s." -msgstr "A renvoyé le type %s à la position ordinale %d, mais la requête attend %s." +msgstr "A renvoyé le type %s à la position ordinale %d, mais la requête attend %s." #: executor/execQual.c:1897 executor/execQual.c:2335 #, c-format msgid "table-function protocol for materialize mode was not followed" -msgstr "le protocole de la fonction table pour le mode matérialisé n'a pas été respecté" +msgstr "le protocole de la fonction table pour le mode matérialisé n'a pas été respecté" #: executor/execQual.c:1917 executor/execQual.c:2342 #, c-format @@ -10144,7 +9924,7 @@ msgstr "returnMode de la fonction table non reconnu : %d" #: executor/execQual.c:2287 #, c-format msgid "rows returned by function are not all of the same row type" -msgstr "les lignes renvoyées par la fonction ne sont pas toutes du même type ligne" +msgstr "les lignes renvoyées par la fonction ne sont pas toutes du même type ligne" #: executor/execQual.c:2522 #, c-format @@ -10155,62 +9935,62 @@ msgstr "IS DISTINCT FROM ne supporte pas les arguments d'ensemble" #, c-format msgid "op ANY/ALL (array) does not support set arguments" msgstr "" -"l'opérateur ANY/ALL (pour les types array) ne supporte pas les arguments\n" +"l'opérateur ANY/ALL (pour les types array) ne supporte pas les arguments\n" "d'ensemble" -#: executor/execQual.c:3208 +#: executor/execQual.c:3214 #, c-format msgid "cannot merge incompatible arrays" msgstr "ne peut pas fusionner les tableaux incompatibles" -#: executor/execQual.c:3209 +#: executor/execQual.c:3215 #, c-format msgid "Array with element type %s cannot be included in ARRAY construct with element type %s." -msgstr "Le tableau avec le type d'élément %s ne peut pas être inclus dans la construction ARRAY avec le type d'élément %s." +msgstr "Le tableau avec le type d'élément %s ne peut pas être inclus dans la construction ARRAY avec le type d'élément %s." -#: executor/execQual.c:3250 executor/execQual.c:3277 +#: executor/execQual.c:3256 executor/execQual.c:3283 #, c-format msgid "multidimensional arrays must have array expressions with matching dimensions" msgstr "" "les tableaux multidimensionnels doivent avoir des expressions de tableaux\n" "avec les dimensions correspondantes" -#: executor/execQual.c:3792 +#: executor/execQual.c:3798 #, c-format msgid "NULLIF does not support set arguments" msgstr "NULLIF ne supporte pas les arguments d'ensemble" -#: executor/execQual.c:4040 utils/adt/domains.c:136 +#: executor/execQual.c:4046 utils/adt/domains.c:137 #, c-format msgid "domain %s does not allow null values" msgstr "le domaine %s n'autorise pas les valeurs NULL" -#: executor/execQual.c:4070 utils/adt/domains.c:173 +#: executor/execQual.c:4083 utils/adt/domains.c:179 #, c-format msgid "value for domain %s violates check constraint \"%s\"" -msgstr "la valeur pour le domaine %s viole la contrainte de vérification « %s »" +msgstr "la valeur pour le domaine %s viole la contrainte de vérification « %s »" -#: executor/execQual.c:4425 +#: executor/execQual.c:4438 #, c-format msgid "WHERE CURRENT OF is not supported for this table type" -msgstr "WHERE CURRENT OF n'est pas supporté pour ce type de table" +msgstr "WHERE CURRENT OF n'est pas supporté pour ce type de table" -#: executor/execQual.c:4614 parser/parse_agg.c:758 +#: executor/execQual.c:4627 parser/parse_agg.c:758 #, c-format msgid "window function calls cannot be nested" -msgstr "les appels à la fonction window ne peuvent pas être imbriqués" +msgstr "les appels à la fonction window ne peuvent pas être imbriqués" -#: executor/execQual.c:4826 +#: executor/execQual.c:4839 #, c-format msgid "target type is not an array" msgstr "le type cible n'est pas un tableau" -#: executor/execQual.c:4941 +#: executor/execQual.c:4956 #, c-format msgid "ROW() column has type %s instead of type %s" msgstr "une colonne ROW() a le type %s au lieu du type %s" -#: executor/execQual.c:5076 utils/adt/arrayfuncs.c:3803 utils/adt/arrayfuncs.c:6337 utils/adt/rowtypes.c:927 +#: executor/execQual.c:5091 utils/adt/arrayfuncs.c:3803 utils/adt/arrayfuncs.c:6325 utils/adt/rowtypes.c:927 #, c-format msgid "could not identify a comparison function for type %s" msgstr "n'a pas pu identifier une fonction de comparaison pour le type %s" @@ -10218,7 +9998,7 @@ msgstr "n'a pas pu identifier une fonction de comparaison pour le type %s" #: executor/execUtils.c:813 #, c-format msgid "materialized view \"%s\" has not been populated" -msgstr "la vue matérialisée « %s » n'a pas été peuplée" +msgstr "la vue matérialisée « %s » n'a pas été peuplée" #: executor/execUtils.c:815 #, c-format @@ -10228,207 +10008,212 @@ msgstr "Utilisez la commande REFRESH MATERIALIZED VIEW." #: executor/functions.c:225 #, c-format msgid "could not determine actual type of argument declared %s" -msgstr "n'a pas pu déterminer le type actuel de l'argument déclaré %s" +msgstr "n'a pas pu déterminer le type actuel de l'argument déclaré %s" + +#: executor/functions.c:511 +#, c-format +msgid "cannot COPY to/from client in a SQL function" +msgstr "ne peut pas utiliser COPY TO/FROM dans une fonction SQL" #. translator: %s is a SQL statement name -#: executor/functions.c:508 +#: executor/functions.c:517 #, c-format msgid "%s is not allowed in a SQL function" -msgstr "%s n'est pas autorisé dans une fonction SQL" +msgstr "%s n'est pas autorisé dans une fonction SQL" #. translator: %s is a SQL statement name -#: executor/functions.c:515 executor/spi.c:1364 executor/spi.c:2154 +#: executor/functions.c:524 executor/spi.c:1364 executor/spi.c:2154 #, c-format msgid "%s is not allowed in a non-volatile function" -msgstr "%s n'est pas autorisé dans une fonction non volatile" +msgstr "%s n'est pas autorisé dans une fonction non volatile" -#: executor/functions.c:641 +#: executor/functions.c:650 #, c-format msgid "could not determine actual result type for function declared to return type %s" msgstr "" -"n'a pas pu déterminer le type du résultat actuel pour la fonction déclarant\n" +"n'a pas pu déterminer le type du résultat actuel pour la fonction déclarant\n" "renvoyer le type %s" -#: executor/functions.c:1406 +#: executor/functions.c:1415 #, c-format msgid "SQL function \"%s\" statement %d" -msgstr "fonction SQL « %s », instruction %d" +msgstr "fonction SQL « %s », instruction %d" -#: executor/functions.c:1432 +#: executor/functions.c:1441 #, c-format msgid "SQL function \"%s\" during startup" -msgstr "fonction SQL « %s » lors du lancement" +msgstr "fonction SQL « %s » lors du lancement" -#: executor/functions.c:1591 executor/functions.c:1628 executor/functions.c:1640 executor/functions.c:1753 executor/functions.c:1786 executor/functions.c:1816 +#: executor/functions.c:1600 executor/functions.c:1637 executor/functions.c:1649 executor/functions.c:1762 executor/functions.c:1795 executor/functions.c:1825 #, c-format msgid "return type mismatch in function declared to return %s" -msgstr "le type de retour ne correspond pas à la fonction déclarant renvoyer %s" +msgstr "le type de retour ne correspond pas à la fonction déclarant renvoyer %s" -#: executor/functions.c:1593 +#: executor/functions.c:1602 #, c-format msgid "Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING." msgstr "" -"L'instruction finale de la fonction doit être un SELECT ou un\n" +"L'instruction finale de la fonction doit être un SELECT ou un\n" "INSERT/UPDATE/DELETE RETURNING." -#: executor/functions.c:1630 +#: executor/functions.c:1639 #, c-format msgid "Final statement must return exactly one column." msgstr "L'instruction finale doit renvoyer exactement une colonne." -#: executor/functions.c:1642 +#: executor/functions.c:1651 #, c-format msgid "Actual return type is %s." -msgstr "Le code de retour réel est %s." +msgstr "Le code de retour réel est %s." -#: executor/functions.c:1755 +#: executor/functions.c:1764 #, c-format msgid "Final statement returns too many columns." msgstr "L'instruction finale renvoie beaucoup trop de colonnes." -#: executor/functions.c:1788 +#: executor/functions.c:1797 #, c-format msgid "Final statement returns %s instead of %s at column %d." msgstr "L'instruction finale renvoie %s au lieu de %s pour la colonne %d." -#: executor/functions.c:1818 +#: executor/functions.c:1827 #, c-format msgid "Final statement returns too few columns." msgstr "L'instruction finale renvoie trop peu de colonnes." -#: executor/functions.c:1867 +#: executor/functions.c:1876 #, c-format msgid "return type %s is not supported for SQL functions" -msgstr "le type de retour %s n'est pas supporté pour les fonctions SQL" +msgstr "le type de retour %s n'est pas supporté pour les fonctions SQL" -#: executor/nodeAgg.c:2983 +#: executor/nodeAgg.c:3038 #, c-format msgid "combine function for aggregate %u must be declared as STRICT" -msgstr "la fonction d'unification pour l'aggrégat %u doit être déclarée comme STRICT" +msgstr "la fonction d'unification pour l'aggrégat %u doit être déclarée comme STRICT" -#: executor/nodeAgg.c:3028 executor/nodeWindowAgg.c:2285 +#: executor/nodeAgg.c:3083 executor/nodeWindowAgg.c:2318 #, c-format msgid "aggregate %u needs to have compatible input type and transition type" msgstr "" -"L'agrégat %u a besoin d'avoir un type en entrée compatible avec le type en\n" +"L'agrégat %u a besoin d'avoir un type en entrée compatible avec le type en\n" "transition" -#: executor/nodeAgg.c:3094 parser/parse_agg.c:612 parser/parse_agg.c:642 +#: executor/nodeAgg.c:3149 parser/parse_agg.c:612 parser/parse_agg.c:642 #, c-format msgid "aggregate function calls cannot be nested" -msgstr "les appels à la fonction d'agrégat ne peuvent pas être imbriqués" +msgstr "les appels à la fonction d'agrégat ne peuvent pas être imbriqués" #: executor/nodeCustom.c:148 executor/nodeCustom.c:159 #, c-format msgid "custom scan \"%s\" does not support MarkPos" -msgstr "le parcours personnalisé « %s » ne supporte pas MarkPos" +msgstr "le parcours personnalisé « %s » ne supporte pas MarkPos" #: executor/nodeHashjoin.c:823 executor/nodeHashjoin.c:853 #, c-format msgid "could not rewind hash-join temporary file: %m" -msgstr "n'a pas pu revenir au début du fichier temporaire de la jointure hâchée : %m" +msgstr "n'a pas pu revenir au début du fichier temporaire de la jointure hâchée : %m" #: executor/nodeHashjoin.c:888 executor/nodeHashjoin.c:894 #, c-format msgid "could not write to hash-join temporary file: %m" -msgstr "n'a pas pu écrire le fichier temporaire de la jointure hâchée : %m" +msgstr "n'a pas pu écrire le fichier temporaire de la jointure hâchée : %m" -#: executor/nodeHashjoin.c:928 executor/nodeHashjoin.c:938 +#: executor/nodeHashjoin.c:935 executor/nodeHashjoin.c:945 #, c-format msgid "could not read from hash-join temporary file: %m" -msgstr "n'a pas pu lire le fichier temporaire contenant la jointure hâchée : %m" +msgstr "n'a pas pu lire le fichier temporaire contenant la jointure hâchée : %m" #: executor/nodeIndexonlyscan.c:179 #, c-format msgid "lossy distance functions are not supported in index-only scans" -msgstr "les fonctions de distance à perte ne sont pas supportés dans les parcours d'index seul" +msgstr "les fonctions de distance à perte ne sont pas supportés dans les parcours d'index seul" #: executor/nodeLimit.c:253 #, c-format msgid "OFFSET must not be negative" -msgstr "OFFSET ne doit pas être négatif" +msgstr "OFFSET ne doit pas être négatif" #: executor/nodeLimit.c:280 #, c-format msgid "LIMIT must not be negative" -msgstr "LIMIT ne doit pas être négative" +msgstr "LIMIT ne doit pas être négative" #: executor/nodeMergejoin.c:1584 #, c-format msgid "RIGHT JOIN is only supported with merge-joinable join conditions" -msgstr "RIGHT JOIN est supporté seulement avec les conditions de jointures MERGE" +msgstr "RIGHT JOIN est supporté seulement avec les conditions de jointures MERGE" #: executor/nodeMergejoin.c:1604 #, c-format msgid "FULL JOIN is only supported with merge-joinable join conditions" -msgstr "FULL JOIN est supporté seulement avec les conditions de jointures MERGE" +msgstr "FULL JOIN est supporté seulement avec les conditions de jointures MERGE" #: executor/nodeModifyTable.c:96 #, c-format msgid "Query has too many columns." -msgstr "La requête a trop de colonnes." +msgstr "La requête a trop de colonnes." #: executor/nodeModifyTable.c:123 #, c-format msgid "Query provides a value for a dropped column at ordinal position %d." msgstr "" -"La requête fournit une valeur pour une colonne supprimée à la position\n" +"La requête fournit une valeur pour une colonne supprimée à la position\n" "ordinale %d." #: executor/nodeModifyTable.c:131 #, c-format msgid "Query has too few columns." -msgstr "La requête n'a pas assez de colonnes." +msgstr "La requête n'a pas assez de colonnes." -#: executor/nodeModifyTable.c:1117 +#: executor/nodeModifyTable.c:1132 #, c-format msgid "ON CONFLICT DO UPDATE command cannot affect row a second time" -msgstr "la commande ON CONFLICT DO UPDATE ne peut pas affecter une ligne la deuxième fois" +msgstr "la commande ON CONFLICT DO UPDATE ne peut pas affecter une ligne la deuxième fois" -#: executor/nodeModifyTable.c:1118 +#: executor/nodeModifyTable.c:1133 #, c-format msgid "Ensure that no rows proposed for insertion within the same command have duplicate constrained values." -msgstr "S'assure qu'aucune ligne proposée à l'insertion dans la même commande n'a de valeurs contraintes dupliquées." +msgstr "S'assure qu'aucune ligne proposée à l'insertion dans la même commande n'a de valeurs contraintes dupliquées." #: executor/nodeSamplescan.c:307 #, c-format msgid "TABLESAMPLE parameter cannot be null" -msgstr "le paramètre de TABLESAMPLE ne peut pas être NULL" +msgstr "le paramètre de TABLESAMPLE ne peut pas être NULL" #: executor/nodeSamplescan.c:320 #, c-format msgid "TABLESAMPLE REPEATABLE parameter cannot be null" -msgstr "le paramètre TABLESAMPLE REPEATABLE ne peut pas être NULL" +msgstr "le paramètre TABLESAMPLE REPEATABLE ne peut pas être NULL" #: executor/nodeSubplan.c:345 executor/nodeSubplan.c:384 executor/nodeSubplan.c:1036 #, c-format msgid "more than one row returned by a subquery used as an expression" -msgstr "plus d'une ligne renvoyée par une sous-requête utilisée comme une expression" +msgstr "plus d'une ligne renvoyée par une sous-requête utilisée comme une expression" #: executor/nodeWindowAgg.c:353 #, c-format msgid "moving-aggregate transition function must not return null" -msgstr "la fonction de conversion de l'agrégat en déplacement ne doit pas renvoyer null" +msgstr "la fonction de conversion de l'agrégat en déplacement ne doit pas renvoyer null" -#: executor/nodeWindowAgg.c:1609 +#: executor/nodeWindowAgg.c:1642 #, c-format msgid "frame starting offset must not be null" -msgstr "l'offset de début de frame ne doit pas être NULL" +msgstr "l'offset de début de frame ne doit pas être NULL" -#: executor/nodeWindowAgg.c:1622 +#: executor/nodeWindowAgg.c:1655 #, c-format msgid "frame starting offset must not be negative" -msgstr "l'offset de début de frame ne doit pas être négatif" +msgstr "l'offset de début de frame ne doit pas être négatif" -#: executor/nodeWindowAgg.c:1635 +#: executor/nodeWindowAgg.c:1668 #, c-format msgid "frame ending offset must not be null" -msgstr "l'offset de fin de frame ne doit pas être NULL" +msgstr "l'offset de fin de frame ne doit pas être NULL" -#: executor/nodeWindowAgg.c:1648 +#: executor/nodeWindowAgg.c:1681 #, c-format msgid "frame ending offset must not be negative" -msgstr "l'offset de fin de frame ne doit pas être négatif" +msgstr "l'offset de fin de frame ne doit pas être négatif" #: executor/spi.c:210 #, c-format @@ -10438,7 +10223,7 @@ msgstr "transaction gauche non vide dans la pile SPI" #: executor/spi.c:211 executor/spi.c:275 #, c-format msgid "Check for missing \"SPI_finish\" calls." -msgstr "Vérifiez les appels manquants à « SPI_finish »." +msgstr "Vérifiez les appels manquants à « SPI_finish »." #: executor/spi.c:274 #, c-format @@ -10448,43 +10233,43 @@ msgstr "sous-transaction gauche non vide dans la pile SPI" #: executor/spi.c:1225 #, c-format msgid "cannot open multi-query plan as cursor" -msgstr "ne peut pas ouvrir le plan à plusieurs requêtes comme curseur" +msgstr "ne peut pas ouvrir le plan à plusieurs requêtes comme curseur" #. translator: %s is name of a SQL command, eg INSERT #: executor/spi.c:1230 #, c-format msgid "cannot open %s query as cursor" -msgstr "ne peut pas ouvrir la requête %s comme curseur" +msgstr "ne peut pas ouvrir la requête %s comme curseur" #: executor/spi.c:1338 #, c-format msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" -msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE n'est pas supporté" +msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE n'est pas supporté" -#: executor/spi.c:1339 parser/analyze.c:2363 +#: executor/spi.c:1339 parser/analyze.c:2360 #, c-format msgid "Scrollable cursors must be READ ONLY." -msgstr "Les curseurs déplaçables doivent être en lecture seule (READ ONLY)." +msgstr "Les curseurs déplaçables doivent être en lecture seule (READ ONLY)." #: executor/spi.c:2459 #, c-format msgid "SQL statement \"%s\"" -msgstr "instruction SQL « %s »" +msgstr "instruction SQL « %s »" #: executor/tqueue.c:317 #, c-format msgid "could not send tuple to shared-memory queue" -msgstr "n'a pas pu envoyer la ligne dans la queue en mémoire partagée" +msgstr "n'a pas pu envoyer la ligne dans la queue en mémoire partagée" #: foreign/foreign.c:192 #, c-format msgid "user mapping not found for \"%s\"" -msgstr "correspondance utilisateur non trouvée pour « %s »" +msgstr "correspondance utilisateur non trouvée pour « %s »" #: foreign/foreign.c:644 #, c-format msgid "invalid option \"%s\"" -msgstr "option « %s » invalide" +msgstr "option « %s » invalide" #: foreign/foreign.c:645 #, c-format @@ -10494,955 +10279,955 @@ msgstr "Les options valides dans ce contexte sont %s" #: gram.y:1004 #, c-format msgid "unrecognized role option \"%s\"" -msgstr "option « %s » du rôle non reconnu" +msgstr "option « %s » du rôle non reconnu" #: gram.y:1278 gram.y:1293 #, c-format msgid "CREATE SCHEMA IF NOT EXISTS cannot include schema elements" -msgstr "CREATE SCHEMA IF NOT EXISTS n'inclut pas les éléments du schéma" +msgstr "CREATE SCHEMA IF NOT EXISTS n'inclut pas les éléments du schéma" #: gram.y:1438 #, c-format msgid "current database cannot be changed" -msgstr "la base de données actuelle ne peut pas être changée" +msgstr "la base de données actuelle ne peut pas être changée" #: gram.y:1562 #, c-format msgid "time zone interval must be HOUR or HOUR TO MINUTE" -msgstr "l'intervalle de fuseau horaire doit être HOUR ou HOUR TO MINUTE" +msgstr "l'intervalle de fuseau horaire doit être HOUR ou HOUR TO MINUTE" #: gram.y:2600 gram.y:2629 #, c-format msgid "STDIN/STDOUT not allowed with PROGRAM" -msgstr "STDIN/STDOUT non autorisé dans PROGRAM" +msgstr "STDIN/STDOUT non autorisé dans PROGRAM" -#: gram.y:2895 gram.y:2902 gram.y:10286 gram.y:10294 +#: gram.y:2895 gram.y:2902 gram.y:10296 gram.y:10304 #, c-format msgid "GLOBAL is deprecated in temporary table creation" -msgstr "GLOBAL est obsolète dans la création de la table temporaire" +msgstr "GLOBAL est obsolète dans la création de la table temporaire" -#: gram.y:3343 utils/adt/ri_triggers.c:316 utils/adt/ri_triggers.c:373 utils/adt/ri_triggers.c:792 utils/adt/ri_triggers.c:1015 utils/adt/ri_triggers.c:1171 utils/adt/ri_triggers.c:1352 utils/adt/ri_triggers.c:1517 utils/adt/ri_triggers.c:1693 utils/adt/ri_triggers.c:1873 utils/adt/ri_triggers.c:2064 utils/adt/ri_triggers.c:2122 utils/adt/ri_triggers.c:2227 utils/adt/ri_triggers.c:2404 +#: gram.y:3343 utils/adt/ri_triggers.c:314 utils/adt/ri_triggers.c:371 utils/adt/ri_triggers.c:790 utils/adt/ri_triggers.c:1013 utils/adt/ri_triggers.c:1169 utils/adt/ri_triggers.c:1350 utils/adt/ri_triggers.c:1515 utils/adt/ri_triggers.c:1691 utils/adt/ri_triggers.c:1871 utils/adt/ri_triggers.c:2062 utils/adt/ri_triggers.c:2120 utils/adt/ri_triggers.c:2225 utils/adt/ri_triggers.c:2402 #, c-format msgid "MATCH PARTIAL not yet implemented" -msgstr "MATCH PARTIAL non implémenté" +msgstr "MATCH PARTIAL non implémenté" -#: gram.y:4800 +#: gram.y:4810 msgid "duplicate trigger events specified" -msgstr "événements de trigger dupliqués spécifiés" +msgstr "événements de trigger dupliqués spécifiés" -#: gram.y:4893 parser/parse_utilcmd.c:2743 parser/parse_utilcmd.c:2769 +#: gram.y:4903 parser/parse_utilcmd.c:2728 parser/parse_utilcmd.c:2754 #, c-format msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" -msgstr "la contrainte déclarée INITIALLY DEFERRED doit être DEFERRABLE" +msgstr "la contrainte déclarée INITIALLY DEFERRED doit être DEFERRABLE" -#: gram.y:4900 +#: gram.y:4910 #, c-format msgid "conflicting constraint properties" -msgstr "propriétés de contrainte en conflit" +msgstr "propriétés de contrainte en conflit" -#: gram.y:5032 +#: gram.y:5042 #, c-format msgid "CREATE ASSERTION is not yet implemented" -msgstr "CREATE ASSERTION n'est pas encore implémenté" +msgstr "CREATE ASSERTION n'est pas encore implémenté" -#: gram.y:5048 +#: gram.y:5058 #, c-format msgid "DROP ASSERTION is not yet implemented" -msgstr "DROP ASSERTION n'est pas encore implémenté" +msgstr "DROP ASSERTION n'est pas encore implémenté" -#: gram.y:5394 +#: gram.y:5404 #, c-format msgid "RECHECK is no longer required" -msgstr "RECHECK n'est plus nécessaire" +msgstr "RECHECK n'est plus nécessaire" -#: gram.y:5395 +#: gram.y:5405 #, c-format msgid "Update your data type." -msgstr "Mettez à jour votre type de données." +msgstr "Mettez à jour votre type de données." -#: gram.y:6974 +#: gram.y:6984 #, c-format msgid "aggregates cannot have output arguments" -msgstr "les agrégats ne peuvent pas avoir d'arguments en sortie" +msgstr "les agrégats ne peuvent pas avoir d'arguments en sortie" -#: gram.y:7293 utils/adt/regproc.c:774 utils/adt/regproc.c:815 +#: gram.y:7303 utils/adt/regproc.c:775 utils/adt/regproc.c:816 #, c-format msgid "missing argument" msgstr "argument manquant" -#: gram.y:7294 utils/adt/regproc.c:775 utils/adt/regproc.c:816 +#: gram.y:7304 utils/adt/regproc.c:776 utils/adt/regproc.c:817 #, c-format msgid "Use NONE to denote the missing argument of a unary operator." -msgstr "Utilisez NONE pour dénoter l'argument manquant d'un opérateur unitaire." +msgstr "Utilisez NONE pour dénoter l'argument manquant d'un opérateur unitaire." -#: gram.y:8844 gram.y:8862 +#: gram.y:8854 gram.y:8872 #, c-format msgid "WITH CHECK OPTION not supported on recursive views" -msgstr "WITH CHECK OPTION non supporté sur les vues récursives" +msgstr "WITH CHECK OPTION non supporté sur les vues récursives" -#: gram.y:9380 +#: gram.y:9390 #, c-format msgid "unrecognized VACUUM option \"%s\"" -msgstr "option « %s » de la commande VACUUM non reconnue" +msgstr "option « %s » de la commande VACUUM non reconnue" -#: gram.y:9878 parser/parse_expr.c:1501 +#: gram.y:9888 parser/parse_expr.c:1501 #, c-format msgid "number of columns does not match number of values" msgstr "le nombre de colonnes ne correspond pas au nombre de valeurs" -#: gram.y:10394 +#: gram.y:10404 #, c-format msgid "LIMIT #,# syntax is not supported" -msgstr "la syntaxe LIMIT #,# n'est pas supportée" +msgstr "la syntaxe LIMIT #,# n'est pas supportée" -#: gram.y:10395 +#: gram.y:10405 #, c-format msgid "Use separate LIMIT and OFFSET clauses." -msgstr "Utilisez les clauses séparées LIMIT et OFFSET." +msgstr "Utilisez les clauses séparées LIMIT et OFFSET." -#: gram.y:10658 gram.y:10683 +#: gram.y:10668 gram.y:10693 #, c-format msgid "VALUES in FROM must have an alias" msgstr "VALUES dans FROM doit avoir un alias" -#: gram.y:10659 gram.y:10684 +#: gram.y:10669 gram.y:10694 #, c-format msgid "For example, FROM (VALUES ...) [AS] foo." msgstr "Par exemple, FROM (VALUES ...) [AS] quelquechose." -#: gram.y:10664 gram.y:10689 +#: gram.y:10674 gram.y:10699 #, c-format msgid "subquery in FROM must have an alias" -msgstr "la sous-requête du FROM doit avoir un alias" +msgstr "la sous-requête du FROM doit avoir un alias" -#: gram.y:10665 gram.y:10690 +#: gram.y:10675 gram.y:10700 #, c-format msgid "For example, FROM (SELECT ...) [AS] foo." msgstr "Par exemple, FROM (SELECT...) [AS] quelquechose." -#: gram.y:11264 +#: gram.y:11274 #, c-format msgid "precision for type float must be at least 1 bit" -msgstr "la précision du type float doit être d'au moins un bit" +msgstr "la précision du type float doit être d'au moins un bit" -#: gram.y:11273 +#: gram.y:11283 #, c-format msgid "precision for type float must be less than 54 bits" -msgstr "la précision du type float doit être inférieur à 54 bits" +msgstr "la précision du type float doit être inférieur à 54 bits" -#: gram.y:11777 +#: gram.y:11787 #, c-format msgid "wrong number of parameters on left side of OVERLAPS expression" -msgstr "mauvais nombre de paramètres sur le côté gauche de l'expression OVERLAPS" +msgstr "mauvais nombre de paramètres sur le côté gauche de l'expression OVERLAPS" -#: gram.y:11782 +#: gram.y:11792 #, c-format msgid "wrong number of parameters on right side of OVERLAPS expression" -msgstr "mauvais nombre de paramètres sur le côté droit de l'expression OVERLAPS" +msgstr "mauvais nombre de paramètres sur le côté droit de l'expression OVERLAPS" -#: gram.y:11957 +#: gram.y:11967 #, c-format msgid "UNIQUE predicate is not yet implemented" -msgstr "prédicat UNIQUE non implémenté" +msgstr "prédicat UNIQUE non implémenté" -#: gram.y:12287 +#: gram.y:12301 #, c-format msgid "cannot use multiple ORDER BY clauses with WITHIN GROUP" msgstr "ne peut pas utiliser des clauses ORDER BY multiples dans WITHIN GROUP" -#: gram.y:12292 +#: gram.y:12306 #, c-format msgid "cannot use DISTINCT with WITHIN GROUP" msgstr "ne peut pas utiliser DISTINCT avec WITHIN GROUP" -#: gram.y:12297 +#: gram.y:12311 #, c-format msgid "cannot use VARIADIC with WITHIN GROUP" msgstr "ne peut pas utiliser VARIADIC avec WITHIN GROUP" -#: gram.y:12803 +#: gram.y:12817 #, c-format msgid "RANGE PRECEDING is only supported with UNBOUNDED" -msgstr "RANGE PRECEDING est seulement supporté avec UNBOUNDED" +msgstr "RANGE PRECEDING est seulement supporté avec UNBOUNDED" -#: gram.y:12809 +#: gram.y:12823 #, c-format msgid "RANGE FOLLOWING is only supported with UNBOUNDED" -msgstr "RANGE FOLLOWING est seulement supporté avec UNBOUNDED" +msgstr "RANGE FOLLOWING est seulement supporté avec UNBOUNDED" -#: gram.y:12836 gram.y:12859 +#: gram.y:12850 gram.y:12873 #, c-format msgid "frame start cannot be UNBOUNDED FOLLOWING" -msgstr "la fin du frame ne peut pas être UNBOUNDED FOLLOWING" +msgstr "la fin du frame ne peut pas être UNBOUNDED FOLLOWING" -#: gram.y:12841 +#: gram.y:12855 #, c-format msgid "frame starting from following row cannot end with current row" -msgstr "la frame commençant après la ligne suivante ne peut pas se terminer avec la ligne actuelle" +msgstr "la frame commençant après la ligne suivante ne peut pas se terminer avec la ligne actuelle" -#: gram.y:12864 +#: gram.y:12878 #, c-format msgid "frame end cannot be UNBOUNDED PRECEDING" -msgstr "la fin du frame ne peut pas être UNBOUNDED PRECEDING" +msgstr "la fin du frame ne peut pas être UNBOUNDED PRECEDING" -#: gram.y:12870 +#: gram.y:12884 #, c-format msgid "frame starting from current row cannot have preceding rows" -msgstr "la frame commençant à la ligne courante ne peut pas avoir des lignes précédentes" +msgstr "la frame commençant à la ligne courante ne peut pas avoir des lignes précédentes" -#: gram.y:12877 +#: gram.y:12891 #, c-format msgid "frame starting from following row cannot have preceding rows" -msgstr "la frame commençant à la ligne suivante ne peut pas avoir des lignes précédentes" +msgstr "la frame commençant à la ligne suivante ne peut pas avoir des lignes précédentes" -#: gram.y:13542 +#: gram.y:13556 #, c-format msgid "type modifier cannot have parameter name" -msgstr "le modificateur de type ne peut pas avoir de nom de paramètre" +msgstr "le modificateur de type ne peut pas avoir de nom de paramètre" -#: gram.y:13548 +#: gram.y:13562 #, c-format msgid "type modifier cannot have ORDER BY" msgstr "le modificateur de type ne peut pas avoir de clause ORDER BY" -#: gram.y:13612 gram.y:13618 +#: gram.y:13626 gram.y:13632 #, c-format msgid "%s cannot be used as a role name here" -msgstr "%s ne peut pas être utilisé comme nom de rôle ici" +msgstr "%s ne peut pas être utilisé comme nom de rôle ici" -#: gram.y:14240 gram.y:14429 +#: gram.y:14254 gram.y:14443 msgid "improper use of \"*\"" -msgstr "mauvaise utilisation de « * »" +msgstr "mauvaise utilisation de « * »" -#: gram.y:14392 gram.y:14409 tsearch/spell.c:954 tsearch/spell.c:971 tsearch/spell.c:988 tsearch/spell.c:1005 tsearch/spell.c:1070 +#: gram.y:14406 gram.y:14423 tsearch/spell.c:954 tsearch/spell.c:971 tsearch/spell.c:988 tsearch/spell.c:1005 tsearch/spell.c:1070 #, c-format msgid "syntax error" msgstr "erreur de syntaxe" -#: gram.y:14493 +#: gram.y:14507 #, c-format msgid "an ordered-set aggregate with a VARIADIC direct argument must have one VARIADIC aggregated argument of the same data type" -msgstr "un agrégat par ensemble ordonné avec un argument VARIADIC direct doit avoir un argument VARIADIC agrégé du même type de données" +msgstr "un agrégat par ensemble ordonné avec un argument VARIADIC direct doit avoir un argument VARIADIC agrégé du même type de données" -#: gram.y:14530 +#: gram.y:14544 #, c-format msgid "multiple ORDER BY clauses not allowed" -msgstr "clauses ORDER BY multiples non autorisées" +msgstr "clauses ORDER BY multiples non autorisées" -#: gram.y:14541 +#: gram.y:14555 #, c-format msgid "multiple OFFSET clauses not allowed" -msgstr "clauses OFFSET multiples non autorisées" +msgstr "clauses OFFSET multiples non autorisées" -#: gram.y:14550 +#: gram.y:14564 #, c-format msgid "multiple LIMIT clauses not allowed" -msgstr "clauses LIMIT multiples non autorisées" +msgstr "clauses LIMIT multiples non autorisées" -#: gram.y:14559 +#: gram.y:14573 #, c-format msgid "multiple WITH clauses not allowed" -msgstr "clauses WITH multiples non autorisées" +msgstr "clauses WITH multiples non autorisées" -#: gram.y:14751 +#: gram.y:14765 #, c-format msgid "OUT and INOUT arguments aren't allowed in TABLE functions" -msgstr "les arguments OUT et INOUT ne sont pas autorisés dans des fonctions TABLE" +msgstr "les arguments OUT et INOUT ne sont pas autorisés dans des fonctions TABLE" -#: gram.y:14852 +#: gram.y:14866 #, c-format msgid "multiple COLLATE clauses not allowed" -msgstr "clauses COLLATE multiples non autorisées" +msgstr "clauses COLLATE multiples non autorisées" #. translator: %s is CHECK, UNIQUE, or similar -#: gram.y:14890 gram.y:14903 +#: gram.y:14904 gram.y:14917 #, c-format msgid "%s constraints cannot be marked DEFERRABLE" -msgstr "les contraintes %s ne peuvent pas être marquées comme DEFERRABLE" +msgstr "les contraintes %s ne peuvent pas être marquées comme DEFERRABLE" #. translator: %s is CHECK, UNIQUE, or similar -#: gram.y:14916 +#: gram.y:14930 #, c-format msgid "%s constraints cannot be marked NOT VALID" -msgstr "les contraintes %s ne peuvent pas être marquées comme NOT VALID" +msgstr "les contraintes %s ne peuvent pas être marquées comme NOT VALID" #. translator: %s is CHECK, UNIQUE, or similar -#: gram.y:14929 +#: gram.y:14943 #, c-format msgid "%s constraints cannot be marked NO INHERIT" -msgstr "les contraintes %s ne peuvent pas être marquées NO INHERIT" +msgstr "les contraintes %s ne peuvent pas être marquées NO INHERIT" #: guc-file.l:313 #, c-format msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %u" -msgstr "paramètre de configuration « %s » non reconnu dans le fichier « %s », ligne %u" +msgstr "paramètre de configuration « %s » non reconnu dans le fichier « %s », ligne %u" -#: guc-file.l:350 utils/misc/guc.c:5898 utils/misc/guc.c:6091 utils/misc/guc.c:6181 utils/misc/guc.c:6271 utils/misc/guc.c:6379 utils/misc/guc.c:6474 +#: guc-file.l:350 utils/misc/guc.c:5896 utils/misc/guc.c:6089 utils/misc/guc.c:6179 utils/misc/guc.c:6269 utils/misc/guc.c:6377 utils/misc/guc.c:6472 #, c-format msgid "parameter \"%s\" cannot be changed without restarting the server" -msgstr "le paramètre « %s » ne peut pas être modifié sans redémarrer le serveur" +msgstr "le paramètre « %s » ne peut pas être modifié sans redémarrer le serveur" #: guc-file.l:386 #, c-format msgid "parameter \"%s\" removed from configuration file, reset to default" msgstr "" -"paramètre « %s » supprimé du fichier de configuration ;\n" -"réinitialisation à la valeur par défaut" +"paramètre « %s » supprimé du fichier de configuration ;\n" +"réinitialisation à la valeur par défaut" #: guc-file.l:452 #, c-format msgid "parameter \"%s\" changed to \"%s\"" -msgstr "paramètre « %s » modifié par « %s »" +msgstr "paramètre « %s » modifié par « %s »" #: guc-file.l:494 #, c-format msgid "configuration file \"%s\" contains errors" -msgstr "le fichier de configuration « %s » contient des erreurs" +msgstr "le fichier de configuration « %s » contient des erreurs" #: guc-file.l:499 #, c-format msgid "configuration file \"%s\" contains errors; unaffected changes were applied" -msgstr "le fichier de configuration « %s » contient des erreurs ; les modifications non affectées ont été appliquées" +msgstr "le fichier de configuration « %s » contient des erreurs ; les modifications non affectées ont été appliquées" #: guc-file.l:504 #, c-format msgid "configuration file \"%s\" contains errors; no changes were applied" -msgstr "le fichier de configuration « %s » contient des erreurs ; aucune modification n'a été appliquée" +msgstr "le fichier de configuration « %s » contient des erreurs ; aucune modification n'a été appliquée" #: guc-file.l:577 #, c-format msgid "could not open configuration file \"%s\": maximum nesting depth exceeded" msgstr "" -"n'a pas pu ouvrir le fichier de configuration « %s » : profondeur\n" -"d'imbrication dépassé" +"n'a pas pu ouvrir le fichier de configuration « %s » : profondeur\n" +"d'imbrication dépassé" #: guc-file.l:593 libpq/hba.c:1806 #, c-format msgid "could not open configuration file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier de configuration « %s » : %m" +msgstr "n'a pas pu ouvrir le fichier de configuration « %s » : %m" #: guc-file.l:604 #, c-format msgid "skipping missing configuration file \"%s\"" -msgstr "ignore le fichier de configuration « %s » manquant" +msgstr "ignore le fichier de configuration « %s » manquant" #: guc-file.l:858 #, c-format msgid "syntax error in file \"%s\" line %u, near end of line" -msgstr "erreur de syntaxe dans le fichier « %s », ligne %u, près de la fin de ligne" +msgstr "erreur de syntaxe dans le fichier « %s », ligne %u, près de la fin de ligne" #: guc-file.l:868 #, c-format msgid "syntax error in file \"%s\" line %u, near token \"%s\"" -msgstr "erreur de syntaxe dans le fichier « %s », ligne %u, près du mot clé « %s »" +msgstr "erreur de syntaxe dans le fichier « %s », ligne %u, près du mot clé « %s »" #: guc-file.l:888 #, c-format msgid "too many syntax errors found, abandoning file \"%s\"" -msgstr "trop d'erreurs de syntaxe trouvées, abandon du fichier « %s »" +msgstr "trop d'erreurs de syntaxe trouvées, abandon du fichier « %s »" #: guc-file.l:940 #, c-format msgid "could not open configuration directory \"%s\": %m" -msgstr "n'a pas pu ouvrir le répertoire de configuration « %s » : %m" +msgstr "n'a pas pu ouvrir le répertoire de configuration « %s » : %m" #: lib/stringinfo.c:259 #, c-format msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes." -msgstr "Ne peut pas agrandir de %d octets le tampon de chaîne contenant déjà %d octets" +msgstr "Ne peut pas agrandir de %d octets le tampon de chaîne contenant déjà %d octets" -#: libpq/auth.c:251 +#: libpq/auth.c:254 #, c-format msgid "authentication failed for user \"%s\": host rejected" -msgstr "authentification échouée pour l'utilisateur « %s » : hôte rejeté" +msgstr "authentification échouée pour l'utilisateur « %s » : hôte rejeté" -#: libpq/auth.c:254 +#: libpq/auth.c:257 #, c-format msgid "\"trust\" authentication failed for user \"%s\"" -msgstr "authentification « trust » échouée pour l'utilisateur « %s »" +msgstr "authentification « trust » échouée pour l'utilisateur « %s »" -#: libpq/auth.c:257 +#: libpq/auth.c:260 #, c-format msgid "Ident authentication failed for user \"%s\"" -msgstr "authentification Ident échouée pour l'utilisateur « %s »" +msgstr "authentification Ident échouée pour l'utilisateur « %s »" -#: libpq/auth.c:260 +#: libpq/auth.c:263 #, c-format msgid "Peer authentication failed for user \"%s\"" -msgstr "authentification peer échouée pour l'utilisateur « %s »" +msgstr "authentification peer échouée pour l'utilisateur « %s »" -#: libpq/auth.c:264 +#: libpq/auth.c:267 #, c-format msgid "password authentication failed for user \"%s\"" -msgstr "authentification par mot de passe échouée pour l'utilisateur « %s »" +msgstr "authentification par mot de passe échouée pour l'utilisateur « %s »" -#: libpq/auth.c:269 +#: libpq/auth.c:272 #, c-format msgid "GSSAPI authentication failed for user \"%s\"" -msgstr "authentification GSSAPI échouée pour l'utilisateur « %s »" +msgstr "authentification GSSAPI échouée pour l'utilisateur « %s »" -#: libpq/auth.c:272 +#: libpq/auth.c:275 #, c-format msgid "SSPI authentication failed for user \"%s\"" -msgstr "authentification SSPI échouée pour l'utilisateur « %s »" +msgstr "authentification SSPI échouée pour l'utilisateur « %s »" -#: libpq/auth.c:275 +#: libpq/auth.c:278 #, c-format msgid "PAM authentication failed for user \"%s\"" -msgstr "authentification PAM échouée pour l'utilisateur « %s »" +msgstr "authentification PAM échouée pour l'utilisateur « %s »" -#: libpq/auth.c:278 +#: libpq/auth.c:281 #, c-format msgid "BSD authentication failed for user \"%s\"" -msgstr "authentification BSD échouée pour l'utilisateur « %s »" +msgstr "authentification BSD échouée pour l'utilisateur « %s »" -#: libpq/auth.c:281 +#: libpq/auth.c:284 #, c-format msgid "LDAP authentication failed for user \"%s\"" -msgstr "authentification LDAP échouée pour l'utilisateur « %s »" +msgstr "authentification LDAP échouée pour l'utilisateur « %s »" -#: libpq/auth.c:284 +#: libpq/auth.c:287 #, c-format msgid "certificate authentication failed for user \"%s\"" -msgstr "authentification par le certificat échouée pour l'utilisateur « %s »" +msgstr "authentification par le certificat échouée pour l'utilisateur « %s »" -#: libpq/auth.c:287 +#: libpq/auth.c:290 #, c-format msgid "RADIUS authentication failed for user \"%s\"" -msgstr "authentification RADIUS échouée pour l'utilisateur « %s »" +msgstr "authentification RADIUS échouée pour l'utilisateur « %s »" -#: libpq/auth.c:290 +#: libpq/auth.c:293 #, c-format msgid "authentication failed for user \"%s\": invalid authentication method" msgstr "" -"authentification échouée pour l'utilisateur « %s » :\n" -"méthode d'authentification invalide" +"authentification échouée pour l'utilisateur « %s » :\n" +"méthode d'authentification invalide" -#: libpq/auth.c:294 +#: libpq/auth.c:297 #, c-format msgid "Connection matched pg_hba.conf line %d: \"%s\"" -msgstr "La connexion correspond à la ligne %d du pg_hba.conf : « %s »" +msgstr "La connexion correspond à la ligne %d du pg_hba.conf : « %s »" -#: libpq/auth.c:349 +#: libpq/auth.c:352 #, c-format msgid "connection requires a valid client certificate" msgstr "la connexion requiert un certificat client valide" -#: libpq/auth.c:391 +#: libpq/auth.c:394 #, c-format msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s" msgstr "" -"pg_hba.conf rejette la connexion de la réplication pour l'hôte « %s »,\n" -"utilisateur « %s », %s" +"pg_hba.conf rejette la connexion de la réplication pour l'hôte « %s »,\n" +"utilisateur « %s », %s" -#: libpq/auth.c:393 libpq/auth.c:409 libpq/auth.c:467 libpq/auth.c:485 +#: libpq/auth.c:396 libpq/auth.c:412 libpq/auth.c:470 libpq/auth.c:488 msgid "SSL off" msgstr "SSL inactif" -#: libpq/auth.c:393 libpq/auth.c:409 libpq/auth.c:467 libpq/auth.c:485 +#: libpq/auth.c:396 libpq/auth.c:412 libpq/auth.c:470 libpq/auth.c:488 msgid "SSL on" msgstr "SSL actif" -#: libpq/auth.c:397 +#: libpq/auth.c:400 #, c-format msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\"" msgstr "" -"pg_hba.conf rejette la connexion de la réplication pour l'hôte « %s »,\n" -"utilisateur « %s »" +"pg_hba.conf rejette la connexion de la réplication pour l'hôte « %s »,\n" +"utilisateur « %s »" -#: libpq/auth.c:406 +#: libpq/auth.c:409 #, c-format msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\", %s" msgstr "" -"pg_hba.conf rejette la connexion pour l'hôte « %s », utilisateur « %s », base\n" -"de données « %s », %s" +"pg_hba.conf rejette la connexion pour l'hôte « %s », utilisateur « %s », base\n" +"de données « %s », %s" -#: libpq/auth.c:413 +#: libpq/auth.c:416 #, c-format msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\"" msgstr "" -"pg_hba.conf rejette la connexion pour l'hôte « %s », utilisateur « %s », base\n" -"de données « %s »" +"pg_hba.conf rejette la connexion pour l'hôte « %s », utilisateur « %s », base\n" +"de données « %s »" -#: libpq/auth.c:442 +#: libpq/auth.c:445 #, c-format msgid "Client IP address resolved to \"%s\", forward lookup matches." -msgstr "Adresse IP du client résolue en « %s », la recherche inverse correspond bien." +msgstr "Adresse IP du client résolue en « %s », la recherche inverse correspond bien." -#: libpq/auth.c:445 +#: libpq/auth.c:448 #, c-format msgid "Client IP address resolved to \"%s\", forward lookup not checked." -msgstr "Adresse IP du client résolue en « %s », la recherche inverse n'est pas vérifiée." +msgstr "Adresse IP du client résolue en « %s », la recherche inverse n'est pas vérifiée." -#: libpq/auth.c:448 +#: libpq/auth.c:451 #, c-format msgid "Client IP address resolved to \"%s\", forward lookup does not match." -msgstr "Adresse IP du client résolue en « %s », la recherche inverse ne correspond pas." +msgstr "Adresse IP du client résolue en « %s », la recherche inverse ne correspond pas." -#: libpq/auth.c:451 +#: libpq/auth.c:454 #, c-format msgid "Could not translate client host name \"%s\" to IP address: %s." -msgstr "N'a pas pu traduire le nom d'hôte « %s » du client en adresse IP : %s." +msgstr "N'a pas pu traduire le nom d'hôte « %s » du client en adresse IP : %s." -#: libpq/auth.c:456 +#: libpq/auth.c:459 #, c-format msgid "Could not resolve client IP address to a host name: %s." -msgstr "N'a pas pu résoudre l'adresse IP du client à partir du nom d'hôte : %s." +msgstr "N'a pas pu résoudre l'adresse IP du client à partir du nom d'hôte : %s." -#: libpq/auth.c:465 +#: libpq/auth.c:468 #, c-format msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\", %s" msgstr "" -"aucune entrée dans pg_hba.conf pour la connexion de la réplication à partir de\n" -"l'hôte « %s », utilisateur « %s », %s" +"aucune entrée dans pg_hba.conf pour la connexion de la réplication à partir de\n" +"l'hôte « %s », utilisateur « %s », %s" -#: libpq/auth.c:472 +#: libpq/auth.c:475 #, c-format msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\"" msgstr "" -"aucune entrée dans pg_hba.conf pour la connexion de la réplication à partir de\n" -"l'hôte « %s », utilisateur « %s »" +"aucune entrée dans pg_hba.conf pour la connexion de la réplication à partir de\n" +"l'hôte « %s », utilisateur « %s »" -#: libpq/auth.c:482 +#: libpq/auth.c:485 #, c-format msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s" msgstr "" -"aucune entrée dans pg_hba.conf pour l'hôte « %s », utilisateur « %s »,\n" -"base de données « %s », %s" +"aucune entrée dans pg_hba.conf pour l'hôte « %s », utilisateur « %s »,\n" +"base de données « %s », %s" -#: libpq/auth.c:490 +#: libpq/auth.c:493 #, c-format msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\"" msgstr "" -"aucune entrée dans pg_hba.conf pour l'hôte « %s », utilisateur « %s »,\n" -"base de données « %s »" +"aucune entrée dans pg_hba.conf pour l'hôte « %s », utilisateur « %s »,\n" +"base de données « %s »" -#: libpq/auth.c:533 libpq/hba.c:1178 +#: libpq/auth.c:536 libpq/hba.c:1178 #, c-format msgid "MD5 authentication is not supported when \"db_user_namespace\" is enabled" -msgstr "l'authentification MD5 n'est pas supportée quand « db_user_namespace » est activé" +msgstr "l'authentification MD5 n'est pas supportée quand « db_user_namespace » est activé" -#: libpq/auth.c:667 +#: libpq/auth.c:670 #, c-format msgid "expected password response, got message type %d" -msgstr "en attente du mot de passe, a reçu un type de message %d" +msgstr "en attente du mot de passe, a reçu un type de message %d" -#: libpq/auth.c:695 +#: libpq/auth.c:698 #, c-format msgid "invalid password packet size" msgstr "taille du paquet du mot de passe invalide" -#: libpq/auth.c:825 +#: libpq/auth.c:828 #, c-format msgid "GSSAPI is not supported in protocol version 2" -msgstr "GSSAPI n'est pas supporté dans le protocole de version 2" +msgstr "GSSAPI n'est pas supporté dans le protocole de version 2" -#: libpq/auth.c:885 +#: libpq/auth.c:888 #, c-format msgid "expected GSS response, got message type %d" -msgstr "en attente d'une réponse GSS, a reçu un message de type %d" +msgstr "en attente d'une réponse GSS, a reçu un message de type %d" -#: libpq/auth.c:946 +#: libpq/auth.c:949 msgid "accepting GSS security context failed" -msgstr "échec de l'acceptation du contexte de sécurité GSS" +msgstr "échec de l'acceptation du contexte de sécurité GSS" -#: libpq/auth.c:972 +#: libpq/auth.c:975 msgid "retrieving GSS user name failed" -msgstr "échec lors de la récupération du nom de l'utilisateur avec GSS" +msgstr "échec lors de la récupération du nom de l'utilisateur avec GSS" -#: libpq/auth.c:1091 +#: libpq/auth.c:1094 #, c-format msgid "SSPI is not supported in protocol version 2" -msgstr "SSPI n'est pas supporté dans le protocole de version 2" +msgstr "SSPI n'est pas supporté dans le protocole de version 2" -#: libpq/auth.c:1106 +#: libpq/auth.c:1109 msgid "could not acquire SSPI credentials" -msgstr "n'a pas pu obtenir les pièces d'identité SSPI" +msgstr "n'a pas pu obtenir les pièces d'identité SSPI" -#: libpq/auth.c:1124 +#: libpq/auth.c:1127 #, c-format msgid "expected SSPI response, got message type %d" -msgstr "en attente d'une réponse SSPI, a reçu un message de type %d" +msgstr "en attente d'une réponse SSPI, a reçu un message de type %d" -#: libpq/auth.c:1196 +#: libpq/auth.c:1199 msgid "could not accept SSPI security context" -msgstr "n'a pas pu accepter le contexte de sécurité SSPI" +msgstr "n'a pas pu accepter le contexte de sécurité SSPI" -#: libpq/auth.c:1258 +#: libpq/auth.c:1261 msgid "could not get token from SSPI security context" -msgstr "n'a pas pu obtenir le jeton du contexte de sécurité SSPI" +msgstr "n'a pas pu obtenir le jeton du contexte de sécurité SSPI" -#: libpq/auth.c:1377 libpq/auth.c:1396 +#: libpq/auth.c:1380 libpq/auth.c:1399 #, c-format msgid "could not translate name" msgstr "n'a pas pu traduit le nom" -#: libpq/auth.c:1409 +#: libpq/auth.c:1412 #, c-format msgid "realm name too long" msgstr "nom du royaume trop long" -#: libpq/auth.c:1424 +#: libpq/auth.c:1427 #, c-format msgid "translated account name too long" msgstr "traduction du nom de compte trop longue" -#: libpq/auth.c:1610 +#: libpq/auth.c:1613 #, c-format msgid "could not create socket for Ident connection: %m" -msgstr "n'a pas pu créer le socket pour la connexion Ident : %m" +msgstr "n'a pas pu créer le socket pour la connexion Ident : %m" -#: libpq/auth.c:1625 +#: libpq/auth.c:1628 #, c-format msgid "could not bind to local address \"%s\": %m" -msgstr "n'a pas pu se lier à l'adresse locale « %s » : %m" +msgstr "n'a pas pu se lier à l'adresse locale « %s » : %m" -#: libpq/auth.c:1637 +#: libpq/auth.c:1640 #, c-format msgid "could not connect to Ident server at address \"%s\", port %s: %m" -msgstr "n'a pas pu se connecter au serveur Ident à l'adresse « %s », port %s : %m" +msgstr "n'a pas pu se connecter au serveur Ident à l'adresse « %s », port %s : %m" -#: libpq/auth.c:1659 +#: libpq/auth.c:1662 #, c-format msgid "could not send query to Ident server at address \"%s\", port %s: %m" -msgstr "n'a pas pu envoyer la requête au serveur Ident à l'adresse « %s », port %s : %m" +msgstr "n'a pas pu envoyer la requête au serveur Ident à l'adresse « %s », port %s : %m" -#: libpq/auth.c:1676 +#: libpq/auth.c:1679 #, c-format msgid "could not receive response from Ident server at address \"%s\", port %s: %m" msgstr "" -"n'a pas pu recevoir la réponse du serveur Ident à l'adresse « %s », port %s :\n" +"n'a pas pu recevoir la réponse du serveur Ident à l'adresse « %s », port %s :\n" "%m" -#: libpq/auth.c:1686 +#: libpq/auth.c:1689 #, c-format msgid "invalidly formatted response from Ident server: \"%s\"" -msgstr "réponse mal formatée du serveur Ident : « %s »" +msgstr "réponse mal formatée du serveur Ident : « %s »" -#: libpq/auth.c:1726 +#: libpq/auth.c:1729 #, c-format msgid "peer authentication is not supported on this platform" -msgstr "la méthode d'authentification «peer n'est pas supportée sur cette plateforme" +msgstr "la méthode d'authentification «peer n'est pas supportée sur cette plateforme" -#: libpq/auth.c:1730 +#: libpq/auth.c:1733 #, c-format msgid "could not get peer credentials: %m" msgstr "n'a pas pu obtenir l'authentification de l'autre : %m" -#: libpq/auth.c:1739 +#: libpq/auth.c:1742 #, c-format msgid "could not look up local user ID %ld: %s" msgstr "n'a pas pu rechercher l'identifiant %ld de l'utilisateur local : %s" -#: libpq/auth.c:1823 libpq/auth.c:2149 libpq/auth.c:2509 +#: libpq/auth.c:1826 libpq/auth.c:2152 libpq/auth.c:2515 #, c-format msgid "empty password returned by client" -msgstr "mot de passe vide renvoyé par le client" +msgstr "mot de passe vide renvoyé par le client" -#: libpq/auth.c:1833 +#: libpq/auth.c:1836 #, c-format msgid "error from underlying PAM layer: %s" msgstr "erreur provenant de la couche PAM : %s" -#: libpq/auth.c:1914 +#: libpq/auth.c:1917 #, c-format msgid "could not create PAM authenticator: %s" -msgstr "n'a pas pu créer l'authenticateur PAM : %s" +msgstr "n'a pas pu créer l'authenticateur PAM : %s" -#: libpq/auth.c:1925 +#: libpq/auth.c:1928 #, c-format msgid "pam_set_item(PAM_USER) failed: %s" -msgstr "pam_set_item(PAM_USER) a échoué : %s" +msgstr "pam_set_item(PAM_USER) a échoué : %s" -#: libpq/auth.c:1936 +#: libpq/auth.c:1939 #, c-format msgid "pam_set_item(PAM_RHOST) failed: %s" -msgstr "pam_set_item(PAM_RHOST) a échoué : %s" +msgstr "pam_set_item(PAM_RHOST) a échoué : %s" -#: libpq/auth.c:1947 +#: libpq/auth.c:1950 #, c-format msgid "pam_set_item(PAM_CONV) failed: %s" -msgstr "pam_set_item(PAM_CONV) a échoué : %s" +msgstr "pam_set_item(PAM_CONV) a échoué : %s" -#: libpq/auth.c:1958 +#: libpq/auth.c:1961 #, c-format msgid "pam_authenticate failed: %s" -msgstr "pam_authenticate a échoué : %s" +msgstr "pam_authenticate a échoué : %s" -#: libpq/auth.c:1969 +#: libpq/auth.c:1972 #, c-format msgid "pam_acct_mgmt failed: %s" -msgstr "pam_acct_mgmt a échoué : %s" +msgstr "pam_acct_mgmt a échoué : %s" -#: libpq/auth.c:1980 +#: libpq/auth.c:1983 #, c-format msgid "could not release PAM authenticator: %s" msgstr "n'a pas pu fermer l'authenticateur PAM : %s" -#: libpq/auth.c:2045 +#: libpq/auth.c:2048 #, c-format msgid "could not initialize LDAP: %m" msgstr "n'a pas pu initialiser LDAP : %m" -#: libpq/auth.c:2048 +#: libpq/auth.c:2051 #, c-format msgid "could not initialize LDAP: error code %d" msgstr "n'a pas pu initialiser LDAP : code d'erreur %d" -#: libpq/auth.c:2058 +#: libpq/auth.c:2061 #, c-format msgid "could not set LDAP protocol version: %s" msgstr "n'a pas pu initialiser la version du protocole LDAP : %s" -#: libpq/auth.c:2087 +#: libpq/auth.c:2090 #, c-format msgid "could not load wldap32.dll" msgstr "n'a pas pu charger wldap32.dll" -#: libpq/auth.c:2095 +#: libpq/auth.c:2098 #, c-format msgid "could not load function _ldap_start_tls_sA in wldap32.dll" msgstr "n'a pas pu charger la fonction _ldap_start_tls_sA de wldap32.dll" -#: libpq/auth.c:2096 +#: libpq/auth.c:2099 #, c-format msgid "LDAP over SSL is not supported on this platform." -msgstr "LDAP via SSL n'est pas supporté sur cette plateforme." +msgstr "LDAP via SSL n'est pas supporté sur cette plateforme." -#: libpq/auth.c:2111 +#: libpq/auth.c:2114 #, c-format msgid "could not start LDAP TLS session: %s" -msgstr "n'a pas pu démarrer la session TLS LDAP : %s" +msgstr "n'a pas pu démarrer la session TLS LDAP : %s" -#: libpq/auth.c:2133 +#: libpq/auth.c:2136 #, c-format msgid "LDAP server not specified" -msgstr "serveur LDAP non précisé" +msgstr "serveur LDAP non précisé" -#: libpq/auth.c:2186 +#: libpq/auth.c:2189 #, c-format msgid "invalid character in user name for LDAP authentication" -msgstr "caractère invalide dans le nom de l'utilisateur pour l'authentification LDAP" +msgstr "caractère invalide dans le nom de l'utilisateur pour l'authentification LDAP" -#: libpq/auth.c:2201 +#: libpq/auth.c:2204 #, c-format msgid "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": %s" -msgstr "n'a pas pu réaliser le lien LDAP initiale pour ldapbinddn « %s » sur le serveur « %s » : %s" +msgstr "n'a pas pu réaliser le lien LDAP initiale pour ldapbinddn « %s » sur le serveur « %s » : %s" -#: libpq/auth.c:2225 +#: libpq/auth.c:2228 #, c-format msgid "could not search LDAP for filter \"%s\" on server \"%s\": %s" -msgstr "n'a pas pu rechercher dans LDAP pour filtrer « %s » sur le serveur « %s » : %s" +msgstr "n'a pas pu rechercher dans LDAP pour filtrer « %s » sur le serveur « %s » : %s" -#: libpq/auth.c:2236 +#: libpq/auth.c:2239 #, c-format msgid "LDAP user \"%s\" does not exist" -msgstr "l'utilisateur LDAP « %s » n'existe pas" +msgstr "l'utilisateur LDAP « %s » n'existe pas" -#: libpq/auth.c:2237 +#: libpq/auth.c:2240 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned no entries." -msgstr "la recherche LDAP pour le filtre « %s » sur le serveur « %s » n'a renvoyé aucun enregistrement." +msgstr "la recherche LDAP pour le filtre « %s » sur le serveur « %s » n'a renvoyé aucun enregistrement." -#: libpq/auth.c:2241 +#: libpq/auth.c:2244 #, c-format msgid "LDAP user \"%s\" is not unique" -msgstr "l'utilisateur LDAP « %s » n'est pas unique" +msgstr "l'utilisateur LDAP « %s » n'est pas unique" -#: libpq/auth.c:2242 +#: libpq/auth.c:2245 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned %d entry." msgid_plural "LDAP search for filter \"%s\" on server \"%s\" returned %d entries." -msgstr[0] "la recherche LDAP pour le filtre « %s » sur le serveur « %s » a renvoyé %d enregistrement." -msgstr[1] "la recherche LDAP pour le filtre « %s » sur le serveur « %s » a renvoyé %d enregistrements." +msgstr[0] "la recherche LDAP pour le filtre « %s » sur le serveur « %s » a renvoyé %d enregistrement." +msgstr[1] "la recherche LDAP pour le filtre « %s » sur le serveur « %s » a renvoyé %d enregistrements." -#: libpq/auth.c:2260 +#: libpq/auth.c:2263 #, c-format msgid "could not get dn for the first entry matching \"%s\" on server \"%s\": %s" msgstr "" -"n'a pas pu obtenir le dn pour la première entrée correspondante « %s » sur\n" -"le serveur « %s » : %s" +"n'a pas pu obtenir le dn pour la première entrée correspondante « %s » sur\n" +"le serveur « %s » : %s" -#: libpq/auth.c:2280 +#: libpq/auth.c:2283 #, c-format msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s" msgstr "" -"n'a pas pu exécuter le unbind après la recherche de l'utilisateur « %s »\n" -"sur le serveur « %s » : %s" +"n'a pas pu exécuter le unbind après la recherche de l'utilisateur « %s »\n" +"sur le serveur « %s » : %s" -#: libpq/auth.c:2310 +#: libpq/auth.c:2313 #, c-format msgid "LDAP login failed for user \"%s\" on server \"%s\": %s" -msgstr "échec de connexion LDAP pour l'utilisateur « %s » sur le serveur « %s » : %s" +msgstr "échec de connexion LDAP pour l'utilisateur « %s » sur le serveur « %s » : %s" -#: libpq/auth.c:2338 +#: libpq/auth.c:2341 #, c-format msgid "certificate authentication failed for user \"%s\": client certificate contains no user name" msgstr "" -"l'authentification par le certificat a échoué pour l'utilisateur « %s » :\n" +"l'authentification par le certificat a échoué pour l'utilisateur « %s » :\n" "le certificat du client ne contient aucun nom d'utilisateur" -#: libpq/auth.c:2465 +#: libpq/auth.c:2471 #, c-format msgid "RADIUS server not specified" -msgstr "serveur RADIUS non précisé" +msgstr "serveur RADIUS non précisé" -#: libpq/auth.c:2472 +#: libpq/auth.c:2478 #, c-format msgid "RADIUS secret not specified" -msgstr "secret RADIUS non précisé" +msgstr "secret RADIUS non précisé" -#: libpq/auth.c:2488 libpq/hba.c:1632 +#: libpq/auth.c:2494 libpq/hba.c:1632 #, c-format msgid "could not translate RADIUS server name \"%s\" to address: %s" -msgstr "n'a pas pu traduire le nom du serveur RADIUS « %s » en une adresse : %s" +msgstr "n'a pas pu traduire le nom du serveur RADIUS « %s » en une adresse : %s" -#: libpq/auth.c:2516 +#: libpq/auth.c:2522 #, c-format msgid "RADIUS authentication does not support passwords longer than %d characters" msgstr "" "l'authentification RADIUS ne supporte pas les mots de passe de plus de %d\n" -"caractères" +"caractères" -#: libpq/auth.c:2528 +#: libpq/auth.c:2534 #, c-format msgid "could not generate random encryption vector" -msgstr "n'a pas pu générer le vecteur de chiffrement aléatoire" +msgstr "n'a pas pu générer le vecteur de chiffrement aléatoire" -#: libpq/auth.c:2566 +#: libpq/auth.c:2572 #, c-format msgid "could not perform MD5 encryption of password" -msgstr "n'a pas pu réaliser le chiffrement MD5 du mot de passe" +msgstr "n'a pas pu réaliser le chiffrement MD5 du mot de passe" -#: libpq/auth.c:2591 +#: libpq/auth.c:2597 #, c-format msgid "could not create RADIUS socket: %m" -msgstr "n'a pas pu créer le socket RADIUS : %m" +msgstr "n'a pas pu créer le socket RADIUS : %m" -#: libpq/auth.c:2612 +#: libpq/auth.c:2618 #, c-format msgid "could not bind local RADIUS socket: %m" -msgstr "n'a pas pu se lier à la socket RADIUS : %m" +msgstr "n'a pas pu se lier à la socket RADIUS : %m" -#: libpq/auth.c:2622 +#: libpq/auth.c:2628 #, c-format msgid "could not send RADIUS packet: %m" msgstr "n'a pas pu transmettre le paquet RADIUS : %m" -#: libpq/auth.c:2655 libpq/auth.c:2680 +#: libpq/auth.c:2661 libpq/auth.c:2686 #, c-format msgid "timeout waiting for RADIUS response" -msgstr "dépassement du délai pour la réponse du RADIUS" +msgstr "dépassement du délai pour la réponse du RADIUS" -#: libpq/auth.c:2673 +#: libpq/auth.c:2679 #, c-format msgid "could not check status on RADIUS socket: %m" -msgstr "n'a pas pu vérifier le statut sur la socket RADIUS : %m" +msgstr "n'a pas pu vérifier le statut sur la socket RADIUS : %m" -#: libpq/auth.c:2702 +#: libpq/auth.c:2708 #, c-format msgid "could not read RADIUS response: %m" -msgstr "n'a pas pu lire la réponse RADIUS : %m" +msgstr "n'a pas pu lire la réponse RADIUS : %m" -#: libpq/auth.c:2714 libpq/auth.c:2718 +#: libpq/auth.c:2720 libpq/auth.c:2724 #, c-format msgid "RADIUS response was sent from incorrect port: %d" -msgstr "la réponse RADIUS a été envoyée à partir d'un mauvais port : %d" +msgstr "la réponse RADIUS a été envoyée à partir d'un mauvais port : %d" -#: libpq/auth.c:2727 +#: libpq/auth.c:2733 #, c-format msgid "RADIUS response too short: %d" -msgstr "réponse RADIUS trop courte : %d" +msgstr "réponse RADIUS trop courte : %d" -#: libpq/auth.c:2734 +#: libpq/auth.c:2740 #, c-format msgid "RADIUS response has corrupt length: %d (actual length %d)" -msgstr "la réponse RADIUS a une longueur corrompue : %d (longueur actuelle %d)" +msgstr "la réponse RADIUS a une longueur corrompue : %d (longueur actuelle %d)" -#: libpq/auth.c:2742 +#: libpq/auth.c:2748 #, c-format msgid "RADIUS response is to a different request: %d (should be %d)" -msgstr "la réponse RADIUS correspond à une demande différente : %d (devrait être %d)" +msgstr "la réponse RADIUS correspond à une demande différente : %d (devrait être %d)" -#: libpq/auth.c:2767 +#: libpq/auth.c:2773 #, c-format msgid "could not perform MD5 encryption of received packet" -msgstr "n'a pas pu réaliser le chiffrement MD5 du paquet reçu" +msgstr "n'a pas pu réaliser le chiffrement MD5 du paquet reçu" -#: libpq/auth.c:2776 +#: libpq/auth.c:2782 #, c-format msgid "RADIUS response has incorrect MD5 signature" -msgstr "la réponse RADIUS a une signature MD5 erronée" +msgstr "la réponse RADIUS a une signature MD5 erronée" -#: libpq/auth.c:2793 +#: libpq/auth.c:2799 #, c-format msgid "RADIUS response has invalid code (%d) for user \"%s\"" -msgstr "la réponse RADIUS a un code invalide (%d) pour l'utilisateur « %s »" +msgstr "la réponse RADIUS a un code invalide (%d) pour l'utilisateur « %s »" #: libpq/be-fsstubs.c:132 libpq/be-fsstubs.c:163 libpq/be-fsstubs.c:197 libpq/be-fsstubs.c:237 libpq/be-fsstubs.c:262 libpq/be-fsstubs.c:310 libpq/be-fsstubs.c:333 libpq/be-fsstubs.c:581 #, c-format msgid "invalid large-object descriptor: %d" -msgstr "descripteur invalide de « Large Object » : %d" +msgstr "descripteur invalide de « Large Object » : %d" #: libpq/be-fsstubs.c:178 libpq/be-fsstubs.c:216 libpq/be-fsstubs.c:600 libpq/be-fsstubs.c:788 #, c-format msgid "permission denied for large object %u" -msgstr "droit refusé pour le Large Object %u" +msgstr "droit refusé pour le Large Object %u" #: libpq/be-fsstubs.c:203 libpq/be-fsstubs.c:587 #, c-format msgid "large object descriptor %d was not opened for writing" -msgstr "le descripteur %d du « Large Object » n'a pas été ouvert pour l'écriture" +msgstr "le descripteur %d du « Large Object » n'a pas été ouvert pour l'écriture" #: libpq/be-fsstubs.c:245 #, c-format msgid "lo_lseek result out of range for large-object descriptor %d" -msgstr "résultat de lo_lseek en dehors de l'intervalle pour le descripteur de Large Object %d" +msgstr "résultat de lo_lseek en dehors de l'intervalle pour le descripteur de Large Object %d" #: libpq/be-fsstubs.c:318 #, c-format msgid "lo_tell result out of range for large-object descriptor %d" -msgstr "résultat de lo_tell en dehors de l'intervalle pour le descripteur de Large Object %d" +msgstr "résultat de lo_tell en dehors de l'intervalle pour le descripteur de Large Object %d" #: libpq/be-fsstubs.c:455 #, c-format msgid "must be superuser to use server-side lo_import()" -msgstr "doit être super-utilisateur pour utiliser lo_import() du côté serveur" +msgstr "doit être super-utilisateur pour utiliser lo_import() du côté serveur" #: libpq/be-fsstubs.c:456 #, c-format msgid "Anyone can use the client-side lo_import() provided by libpq." -msgstr "Tout le monde peut utiliser lo_import(), fourni par libpq, du côté client." +msgstr "Tout le monde peut utiliser lo_import(), fourni par libpq, du côté client." #: libpq/be-fsstubs.c:469 #, c-format msgid "could not open server file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier serveur « %s » : %m" +msgstr "n'a pas pu ouvrir le fichier serveur « %s » : %m" #: libpq/be-fsstubs.c:491 #, c-format msgid "could not read server file \"%s\": %m" -msgstr "n'a pas pu lire le fichier serveur « %s » : %m" +msgstr "n'a pas pu lire le fichier serveur « %s » : %m" #: libpq/be-fsstubs.c:521 #, c-format msgid "must be superuser to use server-side lo_export()" -msgstr "doit être super-utilisateur pour utiliser lo_export() du côté serveur" +msgstr "doit être super-utilisateur pour utiliser lo_export() du côté serveur" #: libpq/be-fsstubs.c:522 #, c-format msgid "Anyone can use the client-side lo_export() provided by libpq." -msgstr "Tout le monde peut utiliser lo_export(), fournie par libpq, du côté client." +msgstr "Tout le monde peut utiliser lo_export(), fournie par libpq, du côté client." #: libpq/be-fsstubs.c:547 #, c-format msgid "could not create server file \"%s\": %m" -msgstr "n'a pas pu créer le fichier serveur « %s » : %m" +msgstr "n'a pas pu créer le fichier serveur « %s » : %m" #: libpq/be-fsstubs.c:559 #, c-format msgid "could not write server file \"%s\": %m" -msgstr "n'a pas pu écrire le fichier serveur « %s » : %m" +msgstr "n'a pas pu écrire le fichier serveur « %s » : %m" #: libpq/be-fsstubs.c:813 #, c-format @@ -11452,76 +11237,76 @@ msgstr "la demande de lecture du Large Object est trop grande" #: libpq/be-fsstubs.c:855 utils/adt/genfile.c:211 utils/adt/genfile.c:252 #, c-format msgid "requested length cannot be negative" -msgstr "la longueur demandée ne peut pas être négative" +msgstr "la longueur demandée ne peut pas être négative" #: libpq/be-secure-openssl.c:189 #, c-format msgid "could not create SSL context: %s" -msgstr "n'a pas pu créer le contexte SSL : %s" +msgstr "n'a pas pu créer le contexte SSL : %s" #: libpq/be-secure-openssl.c:205 #, c-format msgid "could not load server certificate file \"%s\": %s" -msgstr "n'a pas pu charger le fichier du certificat serveur « %s » : %s" +msgstr "n'a pas pu charger le fichier du certificat serveur « %s » : %s" #: libpq/be-secure-openssl.c:211 #, c-format msgid "could not access private key file \"%s\": %m" -msgstr "n'a pas pu accéder au fichier de la clé privée « %s » : %m" +msgstr "n'a pas pu accéder au fichier de la clé privée « %s » : %m" #: libpq/be-secure-openssl.c:217 #, c-format msgid "private key file \"%s\" is not a regular file" -msgstr "le fichier de clé privée « %s » n'est pas un fichier" +msgstr "le fichier de clé privée « %s » n'est pas un fichier" #: libpq/be-secure-openssl.c:229 #, c-format msgid "private key file \"%s\" must be owned by the database user or root" -msgstr "le fichier de clé privée « %s » doit avoir le même propriétaire que la base de donnée ou root" +msgstr "le fichier de clé privée « %s » doit avoir le même propriétaire que la base de donnée ou root" #: libpq/be-secure-openssl.c:249 #, c-format msgid "private key file \"%s\" has group or world access" msgstr "" -"le fichier de clé privé « %s » est accessible par le groupe et/ou par les\n" +"le fichier de clé privé « %s » est accessible par le groupe et/ou par les\n" "autres" #: libpq/be-secure-openssl.c:251 #, c-format msgid "File must have permissions u=rw (0600) or less if owned by the database user, or permissions u=rw,g=r (0640) or less if owned by root." msgstr "" -"Le fichier doit avoir les permissions u=rw (0600) ou moins si le propriétaire est le même que la base de données,\n" -"ou les permissions u=rw,g=r (0640) ou moins si le propriétaire est root." +"Le fichier doit avoir les permissions u=rw (0600) ou moins si le propriétaire est le même que la base de données,\n" +"ou les permissions u=rw,g=r (0640) ou moins si le propriétaire est root." #: libpq/be-secure-openssl.c:258 #, c-format msgid "could not load private key file \"%s\": %s" -msgstr "n'a pas pu charger le fichier de clé privée « %s » : %s" +msgstr "n'a pas pu charger le fichier de clé privée « %s » : %s" #: libpq/be-secure-openssl.c:263 #, c-format msgid "check of private key failed: %s" -msgstr "échec de la vérification de la clé privée : %s" +msgstr "échec de la vérification de la clé privée : %s" #: libpq/be-secure-openssl.c:292 #, c-format msgid "could not load root certificate file \"%s\": %s" -msgstr "n'a pas pu charger le fichier du certificat racine « %s » : %s" +msgstr "n'a pas pu charger le fichier du certificat racine « %s » : %s" #: libpq/be-secure-openssl.c:316 #, c-format msgid "SSL certificate revocation list file \"%s\" ignored" -msgstr "liste de révocation des certificats SSL « %s » ignorée" +msgstr "liste de révocation des certificats SSL « %s » ignorée" #: libpq/be-secure-openssl.c:318 #, c-format msgid "SSL library does not support certificate revocation lists." -msgstr "La bibliothèque SSL ne supporte pas les listes de révocation des certificats." +msgstr "La bibliothèque SSL ne supporte pas les listes de révocation des certificats." #: libpq/be-secure-openssl.c:323 #, c-format msgid "could not load SSL certificate revocation list file \"%s\": %s" -msgstr "n'a pas pu charger le fichier de liste de révocation des certificats SSL (« %s ») : %s" +msgstr "n'a pas pu charger le fichier de liste de révocation des certificats SSL (« %s ») : %s" #: libpq/be-secure-openssl.c:370 #, c-format @@ -11531,7 +11316,7 @@ msgstr "n'a pas pu initialiser la connexion SSL : %s" #: libpq/be-secure-openssl.c:378 #, c-format msgid "could not set SSL socket: %s" -msgstr "n'a pas pu créer le socket SSL : %s" +msgstr "n'a pas pu créer le socket SSL : %s" #: libpq/be-secure-openssl.c:432 #, c-format @@ -11541,14 +11326,14 @@ msgstr "n'a pas pu accepter la connexion SSL : %m" #: libpq/be-secure-openssl.c:436 libpq/be-secure-openssl.c:447 #, c-format msgid "could not accept SSL connection: EOF detected" -msgstr "n'a pas pu accepter la connexion SSL : fin de fichier détecté" +msgstr "n'a pas pu accepter la connexion SSL : fin de fichier détecté" #: libpq/be-secure-openssl.c:441 #, c-format msgid "could not accept SSL connection: %s" msgstr "n'a pas pu accepter la connexion SSL : %s" -#: libpq/be-secure-openssl.c:452 libpq/be-secure-openssl.c:593 libpq/be-secure-openssl.c:653 +#: libpq/be-secure-openssl.c:452 libpq/be-secure-openssl.c:595 libpq/be-secure-openssl.c:661 #, c-format msgid "unrecognized SSL error code: %d" msgstr "code d'erreur SSL inconnu : %d" @@ -11561,28 +11346,28 @@ msgstr "le nom commun du certificat SSL contient des NULL" #: libpq/be-secure-openssl.c:507 #, c-format msgid "SSL connection from \"%s\"" -msgstr "connexion SSL de « %s »" +msgstr "connexion SSL de « %s »" -#: libpq/be-secure-openssl.c:584 libpq/be-secure-openssl.c:644 +#: libpq/be-secure-openssl.c:584 libpq/be-secure-openssl.c:646 #, c-format msgid "SSL error: %s" msgstr "erreur SSL : %s" -#: libpq/be-secure-openssl.c:1055 +#: libpq/be-secure-openssl.c:1063 #, c-format msgid "ECDH: unrecognized curve name: %s" msgstr "ECDH : nome de courbe non reconnu : %s" -#: libpq/be-secure-openssl.c:1060 +#: libpq/be-secure-openssl.c:1068 #, c-format msgid "ECDH: could not create key" -msgstr "ECDH : n'a pas pu créer la clé" +msgstr "ECDH : n'a pas pu créer la clé" -#: libpq/be-secure-openssl.c:1084 +#: libpq/be-secure-openssl.c:1092 msgid "no SSL error reported" -msgstr "aucune erreur SSL reportée" +msgstr "aucune erreur SSL reportée" -#: libpq/be-secure-openssl.c:1088 +#: libpq/be-secure-openssl.c:1096 #, c-format msgid "SSL error code %lu" msgstr "erreur SSL %lu" @@ -11590,27 +11375,27 @@ msgstr "erreur SSL %lu" #: libpq/be-secure.c:171 libpq/be-secure.c:256 #, c-format msgid "terminating connection due to unexpected postmaster exit" -msgstr "arrêt des connexions suite à un arrêt inatendu du postmaster" +msgstr "arrêt des connexions suite à un arrêt inatendu du postmaster" #: libpq/crypt.c:54 #, c-format msgid "Role \"%s\" does not exist." -msgstr "Le rôle « %s » n'existe pas" +msgstr "Le rôle « %s » n'existe pas" #: libpq/crypt.c:64 #, c-format msgid "User \"%s\" has no password assigned." -msgstr "L'utilisateur « %s » n'a pas de mot de passe affecté." +msgstr "L'utilisateur « %s » n'a pas de mot de passe affecté." #: libpq/crypt.c:79 #, c-format msgid "User \"%s\" has an empty password." -msgstr "L'utilisateur « %s » a un mot de passe vide." +msgstr "L'utilisateur « %s » a un mot de passe vide." #: libpq/crypt.c:159 #, c-format msgid "User \"%s\" has an expired password." -msgstr "L'utilisateur « %s » a un mot de passe expiré." +msgstr "L'utilisateur « %s » a un mot de passe expiré." #: libpq/crypt.c:167 #, c-format @@ -11620,14 +11405,14 @@ msgstr "Mot de passe ne correspond pas pour l'utilisateur %s : " #: libpq/hba.c:188 #, c-format msgid "authentication file token too long, skipping: \"%s\"" -msgstr "jeton du fichier d'authentification trop long, ignore : « %s »" +msgstr "jeton du fichier d'authentification trop long, ignore : « %s »" #: libpq/hba.c:332 #, c-format msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m" msgstr "" -"n'a pas pu ouvrir le fichier d'authentification secondaire « @%s » comme\n" -"« %s » : %m" +"n'a pas pu ouvrir le fichier d'authentification secondaire « @%s » comme\n" +"« %s » : %m" #: libpq/hba.c:407 #, c-format @@ -11638,25 +11423,25 @@ msgstr "ligne du fichier d'authentification trop longue" #: libpq/hba.c:1259 libpq/hba.c:1276 libpq/hba.c:1325 libpq/hba.c:1362 libpq/hba.c:1372 libpq/hba.c:1428 libpq/hba.c:1440 libpq/hba.c:1453 libpq/hba.c:1545 libpq/hba.c:1634 libpq/hba.c:1652 libpq/hba.c:1673 tsearch/ts_locale.c:182 #, c-format msgid "line %d of configuration file \"%s\"" -msgstr "ligne %d du fichier de configuration « %s »" +msgstr "ligne %d du fichier de configuration « %s »" #. translator: the second %s is a list of auth methods #: libpq/hba.c:753 #, c-format msgid "authentication option \"%s\" is only valid for authentication methods %s" msgstr "" -"l'option d'authentification « %s » est seulement valide pour les méthodes\n" -"d'authentification « %s »" +"l'option d'authentification « %s » est seulement valide pour les méthodes\n" +"d'authentification « %s »" #: libpq/hba.c:769 #, c-format msgid "authentication method \"%s\" requires argument \"%s\" to be set" -msgstr "la méthode d'authentification « %s » requiert un argument « %s » pour êtremise en place" +msgstr "la méthode d'authentification « %s » requiert un argument « %s » pour êtremise en place" #: libpq/hba.c:790 #, c-format msgid "missing entry in file \"%s\" at end of line %d" -msgstr "entrée manquante dans le fichier « %s » à la fin de la ligne %d" +msgstr "entrée manquante dans le fichier « %s » à la fin de la ligne %d" #: libpq/hba.c:800 #, c-format @@ -11666,7 +11451,7 @@ msgstr "plusieurs valeurs dans le champ ident" #: libpq/hba.c:845 #, c-format msgid "multiple values specified for connection type" -msgstr "plusieurs valeurs indiquées pour le type de connexion" +msgstr "plusieurs valeurs indiquées pour le type de connexion" #: libpq/hba.c:846 #, c-format @@ -11676,12 +11461,12 @@ msgstr "Indiquez uniquement un type de connexion par ligne." #: libpq/hba.c:859 #, c-format msgid "local connections are not supported by this build" -msgstr "les connexions locales ne sont pas supportées dans cette installation" +msgstr "les connexions locales ne sont pas supportées dans cette installation" #: libpq/hba.c:880 #, c-format msgid "hostssl requires SSL to be turned on" -msgstr "hostssl requiert que SSL soit activé" +msgstr "hostssl requiert que SSL soit activé" #: libpq/hba.c:881 #, c-format @@ -11691,7 +11476,7 @@ msgstr "Configurez ssl = on dans le postgresql.conf." #: libpq/hba.c:889 #, c-format msgid "hostssl is not supported by this build" -msgstr "hostssl n'est pas supporté par cette installation" +msgstr "hostssl n'est pas supporté par cette installation" #: libpq/hba.c:890 #, c-format @@ -11701,67 +11486,67 @@ msgstr "Compilez avec --with-openssl pour utiliser les connexions SSL." #: libpq/hba.c:910 #, c-format msgid "invalid connection type \"%s\"" -msgstr "type de connexion « %s » invalide" +msgstr "type de connexion « %s » invalide" #: libpq/hba.c:923 #, c-format msgid "end-of-line before database specification" -msgstr "fin de ligne avant la spécification de la base de données" +msgstr "fin de ligne avant la spécification de la base de données" #: libpq/hba.c:942 #, c-format msgid "end-of-line before role specification" -msgstr "fin de ligne avant la spécification du rôle" +msgstr "fin de ligne avant la spécification du rôle" #: libpq/hba.c:963 #, c-format msgid "end-of-line before IP address specification" -msgstr "fin de ligne avant la spécification de l'adresse IP" +msgstr "fin de ligne avant la spécification de l'adresse IP" #: libpq/hba.c:973 #, c-format msgid "multiple values specified for host address" -msgstr "plusieurs valeurs indiquées pour l'adresse hôte" +msgstr "plusieurs valeurs indiquées pour l'adresse hôte" #: libpq/hba.c:974 #, c-format msgid "Specify one address range per line." -msgstr "Indiquez un sous-réseau par ligne." +msgstr "Indiquez un sous-réseau par ligne." #: libpq/hba.c:1028 #, c-format msgid "invalid IP address \"%s\": %s" -msgstr "adresse IP « %s » invalide : %s" +msgstr "adresse IP « %s » invalide : %s" #: libpq/hba.c:1046 #, c-format msgid "specifying both host name and CIDR mask is invalid: \"%s\"" -msgstr "spécifier le nom d'hôte et le masque CIDR n'est pas valide : « %s »" +msgstr "spécifier le nom d'hôte et le masque CIDR n'est pas valide : « %s »" #: libpq/hba.c:1058 #, c-format msgid "invalid CIDR mask in address \"%s\"" -msgstr "masque CIDR invalide dans l'adresse « %s »" +msgstr "masque CIDR invalide dans l'adresse « %s »" #: libpq/hba.c:1075 #, c-format msgid "end-of-line before netmask specification" -msgstr "fin de ligne avant la spécification du masque réseau" +msgstr "fin de ligne avant la spécification du masque réseau" #: libpq/hba.c:1076 #, c-format msgid "Specify an address range in CIDR notation, or provide a separate netmask." -msgstr "Indiquez un sous-réseau en notation CIDR ou donnez un masque réseau séparé." +msgstr "Indiquez un sous-réseau en notation CIDR ou donnez un masque réseau séparé." #: libpq/hba.c:1086 #, c-format msgid "multiple values specified for netmask" -msgstr "plusieurs valeurs indiquées pour le masque réseau" +msgstr "plusieurs valeurs indiquées pour le masque réseau" #: libpq/hba.c:1099 #, c-format msgid "invalid IP mask \"%s\": %s" -msgstr "masque IP « %s » invalide : %s" +msgstr "masque IP « %s » invalide : %s" #: libpq/hba.c:1116 #, c-format @@ -11771,12 +11556,12 @@ msgstr "l'adresse IP et le masque ne correspondent pas" #: libpq/hba.c:1131 #, c-format msgid "end-of-line before authentication method" -msgstr "fin de ligne avant la méthode d'authentification" +msgstr "fin de ligne avant la méthode d'authentification" #: libpq/hba.c:1141 #, c-format msgid "multiple values specified for authentication type" -msgstr "plusieurs valeurs indiquées pour le type d'authentification" +msgstr "plusieurs valeurs indiquées pour le type d'authentification" #: libpq/hba.c:1142 #, c-format @@ -11786,33 +11571,33 @@ msgstr "Indiquez uniquement un type d'authentification par ligne." #: libpq/hba.c:1215 #, c-format msgid "invalid authentication method \"%s\"" -msgstr "méthode d'authentification « %s » invalide" +msgstr "méthode d'authentification « %s » invalide" #: libpq/hba.c:1226 #, c-format msgid "invalid authentication method \"%s\": not supported by this build" msgstr "" -"méthode d'authentification « %s » invalide : non supportée sur cette\n" +"méthode d'authentification « %s » invalide : non supportée sur cette\n" "installation" #: libpq/hba.c:1247 #, c-format msgid "gssapi authentication is not supported on local sockets" msgstr "" -"l'authentification gssapi n'est pas supportée sur les connexions locales par\n" +"l'authentification gssapi n'est pas supportée sur les connexions locales par\n" "socket" #: libpq/hba.c:1258 #, c-format msgid "peer authentication is only supported on local sockets" msgstr "" -"l'authentification peer est seulement supportée sur les connexions locales par\n" +"l'authentification peer est seulement supportée sur les connexions locales par\n" "socket" #: libpq/hba.c:1275 #, c-format msgid "cert authentication is only supported on hostssl connections" -msgstr "l'authentification cert est seulement supportée sur les connexions hostssl" +msgstr "l'authentification cert est seulement supportée sur les connexions hostssl" #: libpq/hba.c:1324 #, c-format @@ -11828,8 +11613,8 @@ msgstr "ne peut pas utiliser ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearcha #, c-format msgid "authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix\", or \"ldapsuffix\" to be set" msgstr "" -"la méthode d'authentification « ldap » requiert un argument « ldapbasedn »,\n" -"« ldapprefix » ou « ldapsuffix » pour être mise en place" +"la méthode d'authentification « ldap » requiert un argument « ldapbasedn »,\n" +"« ldapprefix » ou « ldapsuffix » pour être mise en place" #: libpq/hba.c:1414 msgid "ident, peer, gssapi, sspi, and cert" @@ -11838,44 +11623,44 @@ msgstr "ident, peer, gssapi, sspi et cert" #: libpq/hba.c:1427 #, c-format msgid "clientcert can only be configured for \"hostssl\" rows" -msgstr "clientcert peut seulement être configuré pour les lignes « hostssl »" +msgstr "clientcert peut seulement être configuré pour les lignes « hostssl »" #: libpq/hba.c:1438 #, c-format msgid "client certificates can only be checked if a root certificate store is available" msgstr "" -"les certificats cert peuvent seulement être vérifiés si un emplacement de\n" +"les certificats cert peuvent seulement être vérifiés si un emplacement de\n" "certificat racine est disponible" #: libpq/hba.c:1452 #, c-format msgid "clientcert can not be set to 0 when using \"cert\" authentication" -msgstr "clientcert ne peut pas être initialisé à 0 si vous utilisez l'authentification « cert »" +msgstr "clientcert ne peut pas être initialisé à 0 si vous utilisez l'authentification « cert »" #: libpq/hba.c:1488 #, c-format msgid "could not parse LDAP URL \"%s\": %s" -msgstr "n'a pas pu analyser l'URL LDAP « %s » : %s" +msgstr "n'a pas pu analyser l'URL LDAP « %s » : %s" #: libpq/hba.c:1496 #, c-format msgid "unsupported LDAP URL scheme: %s" -msgstr "méthode URL LDAP non supporté : %s" +msgstr "méthode URL LDAP non supporté : %s" #: libpq/hba.c:1512 #, c-format msgid "filters not supported in LDAP URLs" -msgstr "filtres non supportés dans les URL LDAP" +msgstr "filtres non supportés dans les URL LDAP" #: libpq/hba.c:1520 #, c-format msgid "LDAP URLs not supported on this platform" -msgstr "URL LDAP non supportés sur cette plateforme." +msgstr "URL LDAP non supportés sur cette plateforme." #: libpq/hba.c:1544 #, c-format msgid "invalid LDAP port number: \"%s\"" -msgstr "numéro de port LDAP invalide : « %s »" +msgstr "numéro de port LDAP invalide : « %s »" #: libpq/hba.c:1584 libpq/hba.c:1591 msgid "gssapi and sspi" @@ -11888,205 +11673,205 @@ msgstr "sspi" #: libpq/hba.c:1651 #, c-format msgid "invalid RADIUS port number: \"%s\"" -msgstr "numéro de port RADIUS invalide : « %s »" +msgstr "numéro de port RADIUS invalide : « %s »" #: libpq/hba.c:1671 #, c-format msgid "unrecognized authentication option name: \"%s\"" -msgstr "nom d'option de l'authentification inconnu : « %s »" +msgstr "nom d'option de l'authentification inconnu : « %s »" #: libpq/hba.c:1855 #, c-format msgid "configuration file \"%s\" contains no entries" -msgstr "le fichier de configuration « %s » ne contient aucun enregistrement" +msgstr "le fichier de configuration « %s » ne contient aucun enregistrement" #: libpq/hba.c:1951 #, c-format msgid "invalid regular expression \"%s\": %s" -msgstr "expression rationnelle invalide « %s » : %s" +msgstr "expression rationnelle invalide « %s » : %s" #: libpq/hba.c:2011 #, c-format msgid "regular expression match for \"%s\" failed: %s" -msgstr "la correspondance de l'expression rationnelle pour « %s » a échoué : %s" +msgstr "la correspondance de l'expression rationnelle pour « %s » a échoué : %s" #: libpq/hba.c:2030 #, c-format msgid "regular expression \"%s\" has no subexpressions as requested by backreference in \"%s\"" msgstr "" -"l'expression rationnelle « %s » n'a pas de sous-expressions comme celle\n" -"demandée par la référence dans « %s »" +"l'expression rationnelle « %s » n'a pas de sous-expressions comme celle\n" +"demandée par la référence dans « %s »" #: libpq/hba.c:2127 #, c-format msgid "provided user name (%s) and authenticated user name (%s) do not match" msgstr "" -"le nom d'utilisateur (%s) et le nom d'utilisateur authentifié (%s) fournis ne\n" +"le nom d'utilisateur (%s) et le nom d'utilisateur authentifié (%s) fournis ne\n" "correspondent pas" #: libpq/hba.c:2147 #, c-format msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\"" msgstr "" -"pas de correspondance dans la usermap « %s » pour l'utilisateur « %s »\n" -"authentifié en tant que « %s »" +"pas de correspondance dans la usermap « %s » pour l'utilisateur « %s »\n" +"authentifié en tant que « %s »" #: libpq/hba.c:2182 #, c-format msgid "could not open usermap file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier usermap « %s » : %m" +msgstr "n'a pas pu ouvrir le fichier usermap « %s » : %m" -#: libpq/pqcomm.c:202 +#: libpq/pqcomm.c:221 #, c-format msgid "could not set socket to nonblocking mode: %m" msgstr "n'a pas pu activer le mode non-bloquant pour la socket : %m" -#: libpq/pqcomm.c:354 +#: libpq/pqcomm.c:373 #, c-format msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)" -msgstr "Le chemin du socket de domaine Unix, « %s », est trop (maximum %d octets)" +msgstr "Le chemin du socket de domaine Unix, « %s », est trop (maximum %d octets)" -#: libpq/pqcomm.c:375 +#: libpq/pqcomm.c:394 #, c-format msgid "could not translate host name \"%s\", service \"%s\" to address: %s" -msgstr "n'a pas pu résoudre le nom de l'hôte « %s », service « %s » par l'adresse : %s" +msgstr "n'a pas pu résoudre le nom de l'hôte « %s », service « %s » par l'adresse : %s" -#: libpq/pqcomm.c:379 +#: libpq/pqcomm.c:398 #, c-format msgid "could not translate service \"%s\" to address: %s" -msgstr "n'a pas pu résoudre le service « %s » par l'adresse : %s" +msgstr "n'a pas pu résoudre le service « %s » par l'adresse : %s" -#: libpq/pqcomm.c:406 +#: libpq/pqcomm.c:425 #, c-format msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded" -msgstr "n'a pas pu se lier à toutes les adresses requises : MAXLISTEN (%d) dépassé" +msgstr "n'a pas pu se lier à toutes les adresses requises : MAXLISTEN (%d) dépassé" -#: libpq/pqcomm.c:415 +#: libpq/pqcomm.c:434 msgid "IPv4" msgstr "IPv4" -#: libpq/pqcomm.c:419 +#: libpq/pqcomm.c:438 msgid "IPv6" msgstr "IPv6" -#: libpq/pqcomm.c:424 +#: libpq/pqcomm.c:443 msgid "Unix" msgstr "Unix" -#: libpq/pqcomm.c:429 +#: libpq/pqcomm.c:448 #, c-format msgid "unrecognized address family %d" msgstr "famille d'adresse %d non reconnue" #. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:440 +#: libpq/pqcomm.c:459 #, c-format msgid "could not create %s socket: %m" -msgstr "n'a pas pu créer le socket %s : %m" +msgstr "n'a pas pu créer le socket %s : %m" -#: libpq/pqcomm.c:465 +#: libpq/pqcomm.c:484 #, c-format msgid "setsockopt(SO_REUSEADDR) failed: %m" -msgstr "setsockopt(SO_REUSEADDR) a échoué : %m" +msgstr "setsockopt(SO_REUSEADDR) a échoué : %m" -#: libpq/pqcomm.c:480 +#: libpq/pqcomm.c:499 #, c-format msgid "setsockopt(IPV6_V6ONLY) failed: %m" -msgstr "setsockopt(IPV6_V6ONLY) a échoué : %m" +msgstr "setsockopt(IPV6_V6ONLY) a échoué : %m" #. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:499 +#: libpq/pqcomm.c:518 #, c-format msgid "could not bind %s socket: %m" -msgstr "n'a pas pu se lier à la socket %s : %m" +msgstr "n'a pas pu se lier à la socket %s : %m" -#: libpq/pqcomm.c:502 +#: libpq/pqcomm.c:521 #, c-format msgid "Is another postmaster already running on port %d? If not, remove socket file \"%s\" and retry." -msgstr "Un autre postmaster fonctionne-t'il déjà sur le port %d ?Sinon, supprimez le fichier socket « %s » et réessayez." +msgstr "Un autre postmaster fonctionne-t'il déjà sur le port %d ?Sinon, supprimez le fichier socket « %s » et réessayez." -#: libpq/pqcomm.c:505 +#: libpq/pqcomm.c:524 #, c-format msgid "Is another postmaster already running on port %d? If not, wait a few seconds and retry." msgstr "" -"Un autre postmaster fonctionne-t'il déjà sur le port %d ?\n" -"Sinon, attendez quelques secondes et réessayez." +"Un autre postmaster fonctionne-t'il déjà sur le port %d ?\n" +"Sinon, attendez quelques secondes et réessayez." #. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:538 +#: libpq/pqcomm.c:557 #, c-format msgid "could not listen on %s socket: %m" -msgstr "n'a pas pu écouter sur le socket %s : %m" +msgstr "n'a pas pu écouter sur le socket %s : %m" -#: libpq/pqcomm.c:623 +#: libpq/pqcomm.c:642 #, c-format msgid "group \"%s\" does not exist" -msgstr "le groupe « %s » n'existe pas" +msgstr "le groupe « %s » n'existe pas" -#: libpq/pqcomm.c:633 +#: libpq/pqcomm.c:652 #, c-format msgid "could not set group of file \"%s\": %m" -msgstr "n'a pas pu initialiser le groupe du fichier « %s » : %m" +msgstr "n'a pas pu initialiser le groupe du fichier « %s » : %m" -#: libpq/pqcomm.c:644 +#: libpq/pqcomm.c:663 #, c-format msgid "could not set permissions of file \"%s\": %m" -msgstr "n'a pas pu initialiser les droits du fichier « %s » : %m" +msgstr "n'a pas pu initialiser les droits du fichier « %s » : %m" -#: libpq/pqcomm.c:674 +#: libpq/pqcomm.c:693 #, c-format msgid "could not accept new connection: %m" msgstr "n'a pas pu accepter la nouvelle connexion : %m" -#: libpq/pqcomm.c:885 +#: libpq/pqcomm.c:904 #, c-format msgid "there is no client connection" msgstr "il n'y a pas de connexion client" -#: libpq/pqcomm.c:936 libpq/pqcomm.c:1032 +#: libpq/pqcomm.c:955 libpq/pqcomm.c:1051 #, c-format msgid "could not receive data from client: %m" -msgstr "n'a pas pu recevoir les données du client : %m" +msgstr "n'a pas pu recevoir les données du client : %m" -#: libpq/pqcomm.c:1177 tcop/postgres.c:3917 +#: libpq/pqcomm.c:1196 tcop/postgres.c:3915 #, c-format msgid "terminating connection because protocol synchronization was lost" -msgstr "arrêt de la connexion à cause d'une perte de synchronisation du protocole" +msgstr "arrêt de la connexion à cause d'une perte de synchronisation du protocole" -#: libpq/pqcomm.c:1243 +#: libpq/pqcomm.c:1262 #, c-format msgid "unexpected EOF within message length word" -msgstr "fin de fichier (EOF) inattendue à l'intérieur de la longueur du message" +msgstr "fin de fichier (EOF) inattendue à l'intérieur de la longueur du message" -#: libpq/pqcomm.c:1254 +#: libpq/pqcomm.c:1273 #, c-format msgid "invalid message length" msgstr "longueur du message invalide" -#: libpq/pqcomm.c:1276 libpq/pqcomm.c:1289 +#: libpq/pqcomm.c:1295 libpq/pqcomm.c:1308 #, c-format msgid "incomplete message from client" msgstr "message incomplet du client" -#: libpq/pqcomm.c:1422 +#: libpq/pqcomm.c:1441 #, c-format msgid "could not send data to client: %m" -msgstr "n'a pas pu envoyer les données au client : %m" +msgstr "n'a pas pu envoyer les données au client : %m" #: libpq/pqformat.c:437 #, c-format msgid "no data left in message" -msgstr "pas de données dans le message" +msgstr "pas de données dans le message" #: libpq/pqformat.c:557 libpq/pqformat.c:575 libpq/pqformat.c:596 utils/adt/arrayfuncs.c:1457 utils/adt/rowtypes.c:563 #, c-format msgid "insufficient data left in message" -msgstr "données insuffisantes laissées dans le message" +msgstr "données insuffisantes laissées dans le message" #: libpq/pqformat.c:637 libpq/pqformat.c:666 #, c-format msgid "invalid string in message" -msgstr "chaîne invalide dans le message" +msgstr "chaîne invalide dans le message" #: libpq/pqformat.c:682 #, c-format @@ -12096,7 +11881,7 @@ msgstr "format du message invalide" #: main/main.c:264 #, c-format msgid "%s: WSAStartup failed: %d\n" -msgstr "%s : WSAStartup a échoué : %d\n" +msgstr "%s : WSAStartup a échoué : %d\n" #: main/main.c:328 #, c-format @@ -12126,44 +11911,44 @@ msgstr "Options :\n" #: main/main.c:331 #, c-format msgid " -B NBUFFERS number of shared buffers\n" -msgstr " -B NBUFFERS nombre de tampons partagés\n" +msgstr " -B NBUFFERS nombre de tampons partagés\n" #: main/main.c:332 #, c-format msgid " -c NAME=VALUE set run-time parameter\n" -msgstr " -c NOM=VALEUR configure un paramètre d'exécution\n" +msgstr " -c NOM=VALEUR configure un paramètre d'exécution\n" #: main/main.c:333 #, c-format msgid " -C NAME print value of run-time parameter, then exit\n" msgstr "" -" -C NOM affiche la valeur d'un paramètre en exécution,\n" +" -C NOM affiche la valeur d'un paramètre en exécution,\n" " puis quitte\n" #: main/main.c:334 #, c-format msgid " -d 1-5 debugging level\n" -msgstr " -d 1-5 niveau de débogage\n" +msgstr " -d 1-5 niveau de débogage\n" #: main/main.c:335 #, c-format msgid " -D DATADIR database directory\n" -msgstr " -D RÉPDONNEES répertoire de la base de données\n" +msgstr " -D RÉPDONNEES répertoire de la base de données\n" #: main/main.c:336 #, c-format msgid " -e use European date input format (DMY)\n" -msgstr " -e utilise le format de saisie européen des dates (DMY)\n" +msgstr " -e utilise le format de saisie européen des dates (DMY)\n" #: main/main.c:337 #, c-format msgid " -F turn fsync off\n" -msgstr " -F désactive fsync\n" +msgstr " -F désactive fsync\n" #: main/main.c:338 #, c-format msgid " -h HOSTNAME host name or IP address to listen on\n" -msgstr " -h NOMHOTE nom d'hôte ou adresse IP à écouter\n" +msgstr " -h NOMHOTE nom d'hôte ou adresse IP à écouter\n" #: main/main.c:339 #, c-format @@ -12173,7 +11958,7 @@ msgstr " -i active les connexions TCP/IP\n" #: main/main.c:340 #, c-format msgid " -k DIRECTORY Unix-domain socket location\n" -msgstr " -k RÉPERTOIRE emplacement des sockets de domaine Unix\n" +msgstr " -k RÉPERTOIRE emplacement des sockets de domaine Unix\n" #: main/main.c:342 #, c-format @@ -12183,27 +11968,27 @@ msgstr " -l active les connexions SSL\n" #: main/main.c:344 #, c-format msgid " -N MAX-CONNECT maximum number of allowed connections\n" -msgstr " -N MAX-CONNECT nombre maximum de connexions simultanées\n" +msgstr " -N MAX-CONNECT nombre maximum de connexions simultanées\n" #: main/main.c:345 #, c-format msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n" -msgstr " -o OPTIONS passe « OPTIONS » à chaque processus serveur (obsolète)\n" +msgstr " -o OPTIONS passe « OPTIONS » à chaque processus serveur (obsolète)\n" #: main/main.c:346 #, c-format msgid " -p PORT port number to listen on\n" -msgstr " -p PORT numéro du port à écouter\n" +msgstr " -p PORT numéro du port à écouter\n" #: main/main.c:347 #, c-format msgid " -s show statistics after each query\n" -msgstr " -s affiche les statistiques après chaque requête\n" +msgstr " -s affiche les statistiques après chaque requête\n" #: main/main.c:348 #, c-format msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n" -msgstr " -S WORK-MEM configure la mémoire pour les tris (en Ko)\n" +msgstr " -S WORK-MEM configure la mémoire pour les tris (en Ko)\n" #: main/main.c:349 #, c-format @@ -12213,12 +11998,12 @@ msgstr " -V, --version affiche la version et quitte\n" #: main/main.c:350 #, c-format msgid " --NAME=VALUE set run-time parameter\n" -msgstr " --NOM=VALEUR configure un paramètre d'exécution\n" +msgstr " --NOM=VALEUR configure un paramètre d'exécution\n" #: main/main.c:351 #, c-format msgid " --describe-config describe configuration parameters, then exit\n" -msgstr " --describe-config décrit les paramètres de configuration, puis quitte\n" +msgstr " --describe-config décrit les paramètres de configuration, puis quitte\n" #: main/main.c:352 #, c-format @@ -12232,7 +12017,7 @@ msgid "" "Developer options:\n" msgstr "" "\n" -"Options pour le développeur :\n" +"Options pour le développeur :\n" #: main/main.c:355 #, c-format @@ -12243,7 +12028,7 @@ msgstr " -f s|i|n|m|h interdit l'utilisation de certains types de plan\n" #, c-format msgid " -n do not reinitialize shared memory after abnormal exit\n" msgstr "" -" -n ne réinitialise pas la mémoire partagée après un arrêt\n" +" -n ne réinitialise pas la mémoire partagée après un arrêt\n" " brutal\n" #: main/main.c:357 @@ -12251,23 +12036,23 @@ msgstr "" msgid " -O allow system table structure changes\n" msgstr "" " -O autorise les modifications de structure des tables\n" -" système\n" +" système\n" #: main/main.c:358 #, c-format msgid " -P disable system indexes\n" -msgstr " -P désactive les index systèmes\n" +msgstr " -P désactive les index systèmes\n" #: main/main.c:359 #, c-format msgid " -t pa|pl|ex show timings after each query\n" -msgstr " -t pa|pl|ex affiche les horodatages pour chaque requête\n" +msgstr " -t pa|pl|ex affiche les horodatages pour chaque requête\n" #: main/main.c:360 #, c-format msgid " -T send SIGSTOP to all backend processes if one dies\n" msgstr "" -" -T envoie SIGSTOP à tous les processus serveur si l'un\n" +" -T envoie SIGSTOP à tous les processus serveur si l'un\n" " d'entre eux meurt\n" #: main/main.c:361 @@ -12275,7 +12060,7 @@ msgstr "" msgid " -W NUM wait NUM seconds to allow attach from a debugger\n" msgstr "" " -W NUM attends NUM secondes pour permettre l'attache d'un\n" -" débogueur\n" +" débogueur\n" #: main/main.c:363 #, c-format @@ -12290,35 +12075,35 @@ msgstr "" #, c-format msgid " --single selects single-user mode (must be first argument)\n" msgstr "" -" --single sélectionne le mode mono-utilisateur (doit être le\n" +" --single sélectionne le mode mono-utilisateur (doit être le\n" " premier argument)\n" #: main/main.c:365 #, c-format msgid " DBNAME database name (defaults to user name)\n" -msgstr " NOMBASE nom de la base (par défaut, celui de l'utilisateur)\n" +msgstr " NOMBASE nom de la base (par défaut, celui de l'utilisateur)\n" #: main/main.c:366 #, c-format msgid " -d 0-5 override debugging level\n" -msgstr " -d 0-5 surcharge le niveau de débogage\n" +msgstr " -d 0-5 surcharge le niveau de débogage\n" #: main/main.c:367 #, c-format msgid " -E echo statement before execution\n" -msgstr " -E affiche la requête avant de l'exécuter\n" +msgstr " -E affiche la requête avant de l'exécuter\n" #: main/main.c:368 #, c-format msgid " -j do not use newline as interactive query delimiter\n" msgstr "" -" -j n'utilise pas le retour à la ligne comme délimiteur de\n" -" requête\n" +" -j n'utilise pas le retour à la ligne comme délimiteur de\n" +" requête\n" #: main/main.c:369 main/main.c:374 #, c-format msgid " -r FILENAME send stdout and stderr to given file\n" -msgstr " -r FICHIER envoie stdout et stderr dans le fichier indiqué\n" +msgstr " -r FICHIER envoie stdout et stderr dans le fichier indiqué\n" #: main/main.c:371 #, c-format @@ -12327,13 +12112,13 @@ msgid "" "Options for bootstrapping mode:\n" msgstr "" "\n" -"Options pour le mode « bootstrapping » :\n" +"Options pour le mode « bootstrapping » :\n" #: main/main.c:372 #, c-format msgid " --boot selects bootstrapping mode (must be first argument)\n" msgstr "" -" --boot sélectionne le mode « bootstrapping » (doit être le\n" +" --boot sélectionne le mode « bootstrapping » (doit être le\n" " premier argument)\n" #: main/main.c:373 @@ -12341,7 +12126,7 @@ msgstr "" msgid " DBNAME database name (mandatory argument in bootstrapping mode)\n" msgstr "" " NOMBASE nom de la base (argument obligatoire dans le mode\n" -" « bootstrapping »)\n" +" « bootstrapping »)\n" #: main/main.c:375 #, c-format @@ -12359,11 +12144,11 @@ msgid "" "Report bugs to .\n" msgstr "" "\n" -"Merci de lire la documentation pour la liste complète des paramètres de\n" -"configuration à l'exécution et pour savoir comment les configurer à la\n" +"Merci de lire la documentation pour la liste complète des paramètres de\n" +"configuration à l'exécution et pour savoir comment les configurer à la\n" "ligne de commande ou dans le fichier de configuration.\n" "\n" -"Rapportez les bogues à .\n" +"Rapportez les bogues à .\n" #: main/main.c:391 #, c-format @@ -12373,16 +12158,16 @@ msgid "" "possible system security compromise. See the documentation for\n" "more information on how to properly start the server.\n" msgstr "" -"L'exécution du serveur PostgreSQL par l'utilisateur « root » n'est pas\n" -"autorisée.\n" -"Le serveur doit être lancé avec un utilisateur non privilégié pour empêcher\n" -"tout problème possible de sécurité sur le serveur. Voir la documentation pour\n" +"L'exécution du serveur PostgreSQL par l'utilisateur « root » n'est pas\n" +"autorisée.\n" +"Le serveur doit être lancé avec un utilisateur non privilégié pour empêcher\n" +"tout problème possible de sécurité sur le serveur. Voir la documentation pour\n" "plus d'informations sur le lancement propre du serveur.\n" #: main/main.c:408 #, c-format msgid "%s: real and effective user IDs must match\n" -msgstr "%s : les identifiants réel et effectif de l'utilisateur doivent correspondre\n" +msgstr "%s : les identifiants réel et effectif de l'utilisateur doivent correspondre\n" #: main/main.c:415 #, c-format @@ -12393,154 +12178,154 @@ msgid "" "possible system security compromises. See the documentation for\n" "more information on how to properly start the server.\n" msgstr "" -"L'exécution du serveur PostgreSQL par un utilisateur doté de droits d'administrateur n'est pas permise.\n" -"Le serveur doit être lancé avec un utilisateur non privilégié pour empêcher\n" -"tout problème de sécurité sur le serveur. Voir la documentation pour\n" +"L'exécution du serveur PostgreSQL par un utilisateur doté de droits d'administrateur n'est pas permise.\n" +"Le serveur doit être lancé avec un utilisateur non privilégié pour empêcher\n" +"tout problème de sécurité sur le serveur. Voir la documentation pour\n" "plus d'informations sur le lancement propre du serveur.\n" #: nodes/extensible.c:66 #, c-format msgid "extensible node type \"%s\" already exists" -msgstr "le type de n½ud extensible « %s » existe déjà" +msgstr "le type de nÅ“ud extensible « %s » existe déjà" #: nodes/extensible.c:114 #, c-format msgid "ExtensibleNodeMethods \"%s\" was not registered" -msgstr "ExtensibleNodeMethods \"%s\" n'a pas été enregistré" +msgstr "ExtensibleNodeMethods \"%s\" n'a pas été enregistré" #: nodes/nodeFuncs.c:124 nodes/nodeFuncs.c:155 parser/parse_coerce.c:1820 parser/parse_coerce.c:1848 parser/parse_coerce.c:1924 parser/parse_expr.c:2019 parser/parse_func.c:597 parser/parse_oper.c:952 #, c-format msgid "could not find array type for data type %s" -msgstr "n'a pas pu trouver de type tableau pour le type de données %s" +msgstr "n'a pas pu trouver de type tableau pour le type de données %s" #: optimizer/path/allpaths.c:2653 #, c-format msgid "WHERE CURRENT OF is not supported on a view with no underlying relation" -msgstr "WHERE CURRENT OF n'est pas supporté pour une vue sans table sous-jacente" +msgstr "WHERE CURRENT OF n'est pas supporté pour une vue sans table sous-jacente" #: optimizer/path/allpaths.c:2658 #, c-format msgid "WHERE CURRENT OF is not supported on a view with more than one underlying relation" -msgstr "WHERE CURRENT OF n'est pas supporté pour une vue avec plus d'une table sous-jacente" +msgstr "WHERE CURRENT OF n'est pas supporté pour une vue avec plus d'une table sous-jacente" #: optimizer/path/allpaths.c:2663 #, c-format msgid "WHERE CURRENT OF is not supported on a view with grouping or aggregation" -msgstr "WHERE CURRENT OF n'est pas supporté pour une vue avec regroupement ou agrégat" +msgstr "WHERE CURRENT OF n'est pas supporté pour une vue avec regroupement ou agrégat" #: optimizer/path/joinrels.c:802 #, c-format msgid "FULL JOIN is only supported with merge-joinable or hash-joinable join conditions" msgstr "" -"FULL JOIN est supporté seulement avec les conditions de jointures MERGE et de\n" +"FULL JOIN est supporté seulement avec les conditions de jointures MERGE et de\n" "jointures HASH JOIN" #. translator: %s is a SQL row locking clause such as FOR UPDATE #: optimizer/plan/initsplan.c:1124 #, c-format msgid "%s cannot be applied to the nullable side of an outer join" -msgstr "%s ne peut être appliqué sur le côté possiblement NULL d'une jointure externe" +msgstr "%s ne peut être appliqué sur le côté possiblement NULL d'une jointure externe" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: optimizer/plan/planner.c:1497 parser/analyze.c:1552 parser/analyze.c:1750 parser/analyze.c:2531 +#: optimizer/plan/planner.c:1480 parser/analyze.c:1549 parser/analyze.c:1747 parser/analyze.c:2528 #, c-format msgid "%s is not allowed with UNION/INTERSECT/EXCEPT" -msgstr "%s n'est pas autorisé avec UNION/INTERSECT/EXCEPT" +msgstr "%s n'est pas autorisé avec UNION/INTERSECT/EXCEPT" -#: optimizer/plan/planner.c:3826 +#: optimizer/plan/planner.c:3809 #, c-format msgid "could not implement GROUP BY" -msgstr "n'a pas pu implanté GROUP BY" +msgstr "n'a pas pu implanté GROUP BY" -#: optimizer/plan/planner.c:3827 optimizer/plan/planner.c:4220 optimizer/prep/prepunion.c:929 +#: optimizer/plan/planner.c:3810 optimizer/plan/planner.c:4203 optimizer/prep/prepunion.c:939 #, c-format msgid "Some of the datatypes only support hashing, while others only support sorting." msgstr "" -"Certains des types de données supportent seulement le hachage,\n" +"Certains des types de données supportent seulement le hachage,\n" "alors que les autres supportent seulement le tri." -#: optimizer/plan/planner.c:4219 +#: optimizer/plan/planner.c:4202 #, c-format msgid "could not implement DISTINCT" -msgstr "n'a pas pu implanté DISTINCT" +msgstr "n'a pas pu implanté DISTINCT" -#: optimizer/plan/planner.c:4849 +#: optimizer/plan/planner.c:4832 #, c-format msgid "could not implement window PARTITION BY" msgstr "n'a pas pu implanter PARTITION BY de window" -#: optimizer/plan/planner.c:4850 +#: optimizer/plan/planner.c:4833 #, c-format msgid "Window partitioning columns must be of sortable datatypes." msgstr "" -"Les colonnes de partitionnement de window doivent être d'un type de données\n" +"Les colonnes de partitionnement de window doivent être d'un type de données\n" "triables." -#: optimizer/plan/planner.c:4854 +#: optimizer/plan/planner.c:4837 #, c-format msgid "could not implement window ORDER BY" msgstr "n'a pas pu implanter ORDER BY dans le window" -#: optimizer/plan/planner.c:4855 +#: optimizer/plan/planner.c:4838 #, c-format msgid "Window ordering columns must be of sortable datatypes." -msgstr "Les colonnes de tri de la window doivent être d'un type de données triable." +msgstr "Les colonnes de tri de la window doivent être d'un type de données triable." #: optimizer/plan/setrefs.c:415 #, c-format msgid "too many range table entries" msgstr "trop d'enregistrements dans la table range" -#: optimizer/prep/prepunion.c:484 +#: optimizer/prep/prepunion.c:494 #, c-format msgid "could not implement recursive UNION" -msgstr "n'a pas pu implanté le UNION récursif" +msgstr "n'a pas pu implanté le UNION récursif" -#: optimizer/prep/prepunion.c:485 +#: optimizer/prep/prepunion.c:495 #, c-format msgid "All column datatypes must be hashable." -msgstr "Tous les types de données colonnes doivent être hachables." +msgstr "Tous les types de données colonnes doivent être hachables." #. translator: %s is UNION, INTERSECT, or EXCEPT -#: optimizer/prep/prepunion.c:928 +#: optimizer/prep/prepunion.c:938 #, c-format msgid "could not implement %s" -msgstr "n'a pas pu implanté %s" +msgstr "n'a pas pu implanté %s" -#: optimizer/util/clauses.c:4624 +#: optimizer/util/clauses.c:4634 #, c-format msgid "SQL function \"%s\" during inlining" -msgstr "fonction SQL « %s » durant « inlining »" +msgstr "fonction SQL « %s » durant « inlining »" -#: optimizer/util/plancat.c:113 +#: optimizer/util/plancat.c:114 #, c-format msgid "cannot access temporary or unlogged relations during recovery" -msgstr "ne peut pas accéder à des tables temporaires et non tracées lors de la restauration" +msgstr "ne peut pas accéder à des tables temporaires et non tracées lors de la restauration" -#: optimizer/util/plancat.c:598 +#: optimizer/util/plancat.c:611 #, c-format msgid "whole row unique index inference specifications are not supported" -msgstr "les spécifications d'inférence d'index unique pour une ligne entière ne sont pas supportées" +msgstr "les spécifications d'inférence d'index unique pour une ligne entière ne sont pas supportées" -#: optimizer/util/plancat.c:615 +#: optimizer/util/plancat.c:628 #, c-format msgid "constraint in ON CONFLICT clause has no associated index" -msgstr "la contrainte de la clause ON CONFLICT n'a pas d'index associé" +msgstr "la contrainte de la clause ON CONFLICT n'a pas d'index associé" -#: optimizer/util/plancat.c:666 +#: optimizer/util/plancat.c:679 #, c-format msgid "ON CONFLICT DO UPDATE not supported with exclusion constraints" -msgstr "ON CONFLICT DO UPDATE non supporté avec les contraintes d'exclusion" +msgstr "ON CONFLICT DO UPDATE non supporté avec les contraintes d'exclusion" -#: optimizer/util/plancat.c:771 +#: optimizer/util/plancat.c:784 #, c-format msgid "there is no unique or exclusion constraint matching the ON CONFLICT specification" -msgstr "il n'existe aucune contrainte unique ou contrainte d'exclusion correspondant à la spécification ON CONFLICT" +msgstr "il n'existe aucune contrainte unique ou contrainte d'exclusion correspondant à la spécification ON CONFLICT" -#: parser/analyze.c:663 parser/analyze.c:1324 +#: parser/analyze.c:663 parser/analyze.c:1321 #, c-format msgid "VALUES lists must all be the same length" -msgstr "les listes VALUES doivent toutes être de la même longueur" +msgstr "les listes VALUES doivent toutes être de la même longueur" #: parser/analyze.c:859 #, c-format @@ -12556,198 +12341,198 @@ msgstr "INSERT a plus de colonnes cibles que d'expressions" #, c-format msgid "The insertion source is a row expression containing the same number of columns expected by the INSERT. Did you accidentally use extra parentheses?" msgstr "" -"La source d'insertion est une expression de ligne contenant le même nombre\n" -"de colonnes que celui attendu par INSERT. Auriez-vous utilisé des parenthèses\n" -"supplémentaires ?" +"La source d'insertion est une expression de ligne contenant le même nombre\n" +"de colonnes que celui attendu par INSERT. Auriez-vous utilisé des parenthèses\n" +"supplémentaires ?" -#: parser/analyze.c:1145 parser/analyze.c:1525 +#: parser/analyze.c:1142 parser/analyze.c:1522 #, c-format msgid "SELECT ... INTO is not allowed here" -msgstr "SELECT ... INTO n'est pas autorisé ici" +msgstr "SELECT ... INTO n'est pas autorisé ici" -#: parser/analyze.c:1338 +#: parser/analyze.c:1335 #, c-format msgid "DEFAULT can only appear in a VALUES list within INSERT" -msgstr "DEFAULT peut seulement apparaître dans la liste VALUES comprise dans un INSERT" +msgstr "DEFAULT peut seulement apparaître dans la liste VALUES comprise dans un INSERT" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:1457 parser/analyze.c:2701 +#: parser/analyze.c:1454 parser/analyze.c:2698 #, c-format msgid "%s cannot be applied to VALUES" -msgstr "%s ne peut pas être appliqué à VALUES" +msgstr "%s ne peut pas être appliqué à VALUES" -#: parser/analyze.c:1678 +#: parser/analyze.c:1675 #, c-format msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" msgstr "clause UNION/INTERSECT/EXCEPT ORDER BY invalide" -#: parser/analyze.c:1679 +#: parser/analyze.c:1676 #, c-format msgid "Only result column names can be used, not expressions or functions." msgstr "" -"Seuls les noms de colonnes résultats peuvent être utilisés, pas les\n" +"Seuls les noms de colonnes résultats peuvent être utilisés, pas les\n" "expressions et les fonctions." -#: parser/analyze.c:1680 +#: parser/analyze.c:1677 #, c-format msgid "Add the expression/function to every SELECT, or move the UNION into a FROM clause." -msgstr "Ajouter l'expression/fonction à chaque SELECT, ou déplacer l'UNION dans une clause FROM." +msgstr "Ajouter l'expression/fonction à chaque SELECT, ou déplacer l'UNION dans une clause FROM." -#: parser/analyze.c:1740 +#: parser/analyze.c:1737 #, c-format msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT" -msgstr "INTO est autorisé uniquement sur le premier SELECT d'un UNION/INTERSECT/EXCEPT" +msgstr "INTO est autorisé uniquement sur le premier SELECT d'un UNION/INTERSECT/EXCEPT" -#: parser/analyze.c:1804 +#: parser/analyze.c:1801 #, c-format msgid "UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of same query level" msgstr "" -"L'instruction membre UNION/INTERSECT/EXCEPT ne peut pas faire référence à\n" -"d'autres relations que celles de la requête de même niveau" +"L'instruction membre UNION/INTERSECT/EXCEPT ne peut pas faire référence à\n" +"d'autres relations que celles de la requête de même niveau" -#: parser/analyze.c:1893 +#: parser/analyze.c:1890 #, c-format msgid "each %s query must have the same number of columns" -msgstr "chaque requête %s doit avoir le même nombre de colonnes" +msgstr "chaque requête %s doit avoir le même nombre de colonnes" -#: parser/analyze.c:2286 +#: parser/analyze.c:2283 #, c-format msgid "RETURNING must have at least one column" msgstr "RETURNING doit avoir au moins une colonne" -#: parser/analyze.c:2323 +#: parser/analyze.c:2320 #, c-format msgid "cannot specify both SCROLL and NO SCROLL" -msgstr "ne peut pas spécifier à la fois SCROLL et NO SCROLL" +msgstr "ne peut pas spécifier à la fois SCROLL et NO SCROLL" -#: parser/analyze.c:2341 +#: parser/analyze.c:2338 #, c-format msgid "DECLARE CURSOR must not contain data-modifying statements in WITH" -msgstr "DECLARE CURSOR ne doit pas contenir des instructions de modification de données dans WITH" +msgstr "DECLARE CURSOR ne doit pas contenir des instructions de modification de données dans WITH" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2349 +#: parser/analyze.c:2346 #, c-format msgid "DECLARE CURSOR WITH HOLD ... %s is not supported" -msgstr "DECLARE CURSOR WITH HOLD ... %s n'est pas supporté" +msgstr "DECLARE CURSOR WITH HOLD ... %s n'est pas supporté" -#: parser/analyze.c:2352 +#: parser/analyze.c:2349 #, c-format msgid "Holdable cursors must be READ ONLY." -msgstr "Les curseurs détenables doivent être en lecture seule (READ ONLY)." +msgstr "Les curseurs détenables doivent être en lecture seule (READ ONLY)." #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2360 +#: parser/analyze.c:2357 #, c-format msgid "DECLARE SCROLL CURSOR ... %s is not supported" -msgstr "DECLARE SCROLL CURSOR ... %s n'est pas supporté" +msgstr "DECLARE SCROLL CURSOR ... %s n'est pas supporté" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2371 +#: parser/analyze.c:2368 #, c-format msgid "DECLARE INSENSITIVE CURSOR ... %s is not supported" -msgstr "DECLARE INSENSITIVE CURSOR ... %s n'est pas supporté" +msgstr "DECLARE INSENSITIVE CURSOR ... %s n'est pas supporté" -#: parser/analyze.c:2374 +#: parser/analyze.c:2371 #, c-format msgid "Insensitive cursors must be READ ONLY." -msgstr "Les curseurs insensibles doivent être en lecture seule (READ ONLY)." +msgstr "Les curseurs insensibles doivent être en lecture seule (READ ONLY)." -#: parser/analyze.c:2440 +#: parser/analyze.c:2437 #, c-format msgid "materialized views must not use data-modifying statements in WITH" -msgstr "les vues matérialisées ne peuvent pas contenir d'instructions de modifications de données avec WITH" +msgstr "les vues matérialisées ne peuvent pas contenir d'instructions de modifications de données avec WITH" -#: parser/analyze.c:2450 +#: parser/analyze.c:2447 #, c-format msgid "materialized views must not use temporary tables or views" -msgstr "les vues matérialisées ne doivent pas utiliser de tables temporaires ou de vues" +msgstr "les vues matérialisées ne doivent pas utiliser de tables temporaires ou de vues" -#: parser/analyze.c:2460 +#: parser/analyze.c:2457 #, c-format msgid "materialized views may not be defined using bound parameters" -msgstr "les vues matérialisées ne peuvent pas être définies en utilisant des paramètres liés" +msgstr "les vues matérialisées ne peuvent pas être définies en utilisant des paramètres liés" -#: parser/analyze.c:2472 +#: parser/analyze.c:2469 #, c-format msgid "materialized views cannot be UNLOGGED" -msgstr "les vues matérialisées ne peuvent pas être UNLOGGED" +msgstr "les vues matérialisées ne peuvent pas être UNLOGGED" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2538 +#: parser/analyze.c:2535 #, c-format msgid "%s is not allowed with DISTINCT clause" -msgstr "%s n'est pas autorisé avec la clause DISTINCT" +msgstr "%s n'est pas autorisé avec la clause DISTINCT" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2545 +#: parser/analyze.c:2542 #, c-format msgid "%s is not allowed with GROUP BY clause" -msgstr "%s n'est pas autorisé avec la clause GROUP BY" +msgstr "%s n'est pas autorisé avec la clause GROUP BY" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2552 +#: parser/analyze.c:2549 #, c-format msgid "%s is not allowed with HAVING clause" -msgstr "%s n'est pas autorisé avec la clause HAVING" +msgstr "%s n'est pas autorisé avec la clause HAVING" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2559 +#: parser/analyze.c:2556 #, c-format msgid "%s is not allowed with aggregate functions" -msgstr "%s n'est pas autorisé avec les fonctions d'agrégat" +msgstr "%s n'est pas autorisé avec les fonctions d'agrégat" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2566 +#: parser/analyze.c:2563 #, c-format msgid "%s is not allowed with window functions" -msgstr "%s n'est pas autorisé avec les fonctions de fenêtrage" +msgstr "%s n'est pas autorisé avec les fonctions de fenêtrage" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2573 +#: parser/analyze.c:2570 #, c-format msgid "%s is not allowed with set-returning functions in the target list" -msgstr "%s n'est pas autorisé avec les fonctions renvoyant plusieurs lignes dans la liste cible" +msgstr "%s n'est pas autorisé avec les fonctions renvoyant plusieurs lignes dans la liste cible" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2652 +#: parser/analyze.c:2649 #, c-format msgid "%s must specify unqualified relation names" -msgstr "%s doit indiquer les noms de relation non qualifiés" +msgstr "%s doit indiquer les noms de relation non qualifiés" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2683 +#: parser/analyze.c:2680 #, c-format msgid "%s cannot be applied to a join" -msgstr "%s ne peut pas être appliqué à une jointure" +msgstr "%s ne peut pas être appliqué à une jointure" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2692 +#: parser/analyze.c:2689 #, c-format msgid "%s cannot be applied to a function" -msgstr "%s ne peut pas être appliqué à une fonction" +msgstr "%s ne peut pas être appliqué à une fonction" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2710 +#: parser/analyze.c:2707 #, c-format msgid "%s cannot be applied to a WITH query" -msgstr "%s ne peut pas être appliqué à une requête WITH" +msgstr "%s ne peut pas être appliqué à une requête WITH" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2727 +#: parser/analyze.c:2724 #, c-format msgid "relation \"%s\" in %s clause not found in FROM clause" -msgstr "relation « %s » dans une clause %s introuvable dans la clause FROM" +msgstr "relation « %s » dans une clause %s introuvable dans la clause FROM" #: parser/parse_agg.c:223 parser/parse_oper.c:220 #, c-format msgid "could not identify an ordering operator for type %s" -msgstr "n'a pas pu identifier un opérateur de tri pour le type %s" +msgstr "n'a pas pu identifier un opérateur de tri pour le type %s" #: parser/parse_agg.c:225 #, c-format msgid "Aggregates with DISTINCT must be able to sort their inputs." -msgstr "Les agrégats avec DISTINCT doivent être capable de trier leur entrée." +msgstr "Les agrégats avec DISTINCT doivent être capable de trier leur entrée." #: parser/parse_agg.c:260 #, c-format @@ -12756,386 +12541,386 @@ msgstr "GROUPING doit avoir moins de 32 arguments" #: parser/parse_agg.c:363 msgid "aggregate functions are not allowed in JOIN conditions" -msgstr "les fonctions d'agrégats ne sont pas autorisés dans les conditions de jointures" +msgstr "les fonctions d'agrégats ne sont pas autorisés dans les conditions de jointures" #: parser/parse_agg.c:365 msgid "grouping operations are not allowed in JOIN conditions" -msgstr "les fonctions de regroupement ne sont pas autorisés dans les conditions de jointure" +msgstr "les fonctions de regroupement ne sont pas autorisés dans les conditions de jointure" #: parser/parse_agg.c:377 msgid "aggregate functions are not allowed in FROM clause of their own query level" -msgstr "les fonctions d'agrégats ne sont pas autorisés dans la clause FROM du même niveau de la requête" +msgstr "les fonctions d'agrégats ne sont pas autorisés dans la clause FROM du même niveau de la requête" #: parser/parse_agg.c:379 msgid "grouping operations are not allowed in FROM clause of their own query level" -msgstr "les fonctions de regroupement ne sont pas autorisés dans la clause FROM du même niveau de la requête" +msgstr "les fonctions de regroupement ne sont pas autorisés dans la clause FROM du même niveau de la requête" #: parser/parse_agg.c:384 msgid "aggregate functions are not allowed in functions in FROM" -msgstr "les fonctions d'agrégats ne sont pas autorisés dans les fonctions contenues dans la clause FROM" +msgstr "les fonctions d'agrégats ne sont pas autorisés dans les fonctions contenues dans la clause FROM" #: parser/parse_agg.c:386 msgid "grouping operations are not allowed in functions in FROM" -msgstr "les fonctions de regroupement ne sont pas autorisés dans les fonctions contenues dans la clause FROM" +msgstr "les fonctions de regroupement ne sont pas autorisés dans les fonctions contenues dans la clause FROM" #: parser/parse_agg.c:394 msgid "aggregate functions are not allowed in policy expressions" -msgstr "les fonctions d'agrégats ne sont pas autorisés dans les expressions de politique" +msgstr "les fonctions d'agrégats ne sont pas autorisés dans les expressions de politique" #: parser/parse_agg.c:396 msgid "grouping operations are not allowed in policy expressions" -msgstr "les fonctions de regroupement ne sont pas autorisés dans les expressions de politique" +msgstr "les fonctions de regroupement ne sont pas autorisés dans les expressions de politique" #: parser/parse_agg.c:413 msgid "aggregate functions are not allowed in window RANGE" -msgstr "les fonctions d'agrégats ne sont pas autorisés dans le RANGE de fenêtrage" +msgstr "les fonctions d'agrégats ne sont pas autorisés dans le RANGE de fenêtrage" #: parser/parse_agg.c:415 msgid "grouping operations are not allowed in window RANGE" -msgstr "les fonctions de regroupement ne sont pas autorisés dans le RANGE de fenêtrage" +msgstr "les fonctions de regroupement ne sont pas autorisés dans le RANGE de fenêtrage" #: parser/parse_agg.c:420 msgid "aggregate functions are not allowed in window ROWS" -msgstr "les fonctions d'agrégats ne sont pas autorisés dans le ROWS de fenêtrage" +msgstr "les fonctions d'agrégats ne sont pas autorisés dans le ROWS de fenêtrage" #: parser/parse_agg.c:422 msgid "grouping operations are not allowed in window ROWS" -msgstr "les fonctions de regroupement ne sont pas autorisés dans le ROWS de fenêtrage" +msgstr "les fonctions de regroupement ne sont pas autorisés dans le ROWS de fenêtrage" #: parser/parse_agg.c:455 msgid "aggregate functions are not allowed in check constraints" -msgstr "les fonctions d'agrégats ne sont pas autorisés dans les contraintes CHECK" +msgstr "les fonctions d'agrégats ne sont pas autorisés dans les contraintes CHECK" #: parser/parse_agg.c:457 msgid "grouping operations are not allowed in check constraints" -msgstr "les fonctions de regroupement ne sont pas autorisés dans les contraintes CHECK" +msgstr "les fonctions de regroupement ne sont pas autorisés dans les contraintes CHECK" #: parser/parse_agg.c:464 msgid "aggregate functions are not allowed in DEFAULT expressions" -msgstr "les fonctions d'agrégats ne sont pas autorisés dans les expressions par défaut" +msgstr "les fonctions d'agrégats ne sont pas autorisés dans les expressions par défaut" #: parser/parse_agg.c:466 msgid "grouping operations are not allowed in DEFAULT expressions" -msgstr "les fonctions de regroupement ne sont pas autorisés dans les expressions par défaut" +msgstr "les fonctions de regroupement ne sont pas autorisés dans les expressions par défaut" #: parser/parse_agg.c:471 msgid "aggregate functions are not allowed in index expressions" -msgstr "les fonctions d'agrégats ne sont pas autorisés dans les expressions d'index" +msgstr "les fonctions d'agrégats ne sont pas autorisés dans les expressions d'index" #: parser/parse_agg.c:473 msgid "grouping operations are not allowed in index expressions" -msgstr "les fonctions de regroupement ne sont pas autorisés dans les expressions d'index" +msgstr "les fonctions de regroupement ne sont pas autorisés dans les expressions d'index" #: parser/parse_agg.c:478 msgid "aggregate functions are not allowed in index predicates" -msgstr "les fonctions d'agrégats ne sont pas autorisés dans les prédicats d'index" +msgstr "les fonctions d'agrégats ne sont pas autorisés dans les prédicats d'index" #: parser/parse_agg.c:480 msgid "grouping operations are not allowed in index predicates" -msgstr "les fonctions de regroupement ne sont pas autorisés dans les prédicats d'index" +msgstr "les fonctions de regroupement ne sont pas autorisés dans les prédicats d'index" #: parser/parse_agg.c:485 msgid "aggregate functions are not allowed in transform expressions" -msgstr "les fonctions d'agrégats ne sont pas autorisés dans les expressions de transformation" +msgstr "les fonctions d'agrégats ne sont pas autorisés dans les expressions de transformation" #: parser/parse_agg.c:487 msgid "grouping operations are not allowed in transform expressions" -msgstr "les fonctions de regroupement ne sont pas autorisés dans les expressions de transformation" +msgstr "les fonctions de regroupement ne sont pas autorisés dans les expressions de transformation" #: parser/parse_agg.c:492 msgid "aggregate functions are not allowed in EXECUTE parameters" -msgstr "les fonctions d'agrégats ne sont pas autorisés dans les paramètres d'EXECUTE" +msgstr "les fonctions d'agrégats ne sont pas autorisés dans les paramètres d'EXECUTE" #: parser/parse_agg.c:494 msgid "grouping operations are not allowed in EXECUTE parameters" -msgstr "les fonctions de regroupement ne sont pas autorisés dans les paramètres d'EXECUTE" +msgstr "les fonctions de regroupement ne sont pas autorisés dans les paramètres d'EXECUTE" #: parser/parse_agg.c:499 msgid "aggregate functions are not allowed in trigger WHEN conditions" -msgstr "les fonctions d'agrégats ne sont pas autorisés dans les conditions WHEN des triggers" +msgstr "les fonctions d'agrégats ne sont pas autorisés dans les conditions WHEN des triggers" #: parser/parse_agg.c:501 msgid "grouping operations are not allowed in trigger WHEN conditions" -msgstr "les fonctions de regroupement ne sont pas autorisés dans les conditions WHEN des triggers" +msgstr "les fonctions de regroupement ne sont pas autorisés dans les conditions WHEN des triggers" #. translator: %s is name of a SQL construct, eg GROUP BY #: parser/parse_agg.c:524 parser/parse_clause.c:1550 #, c-format msgid "aggregate functions are not allowed in %s" -msgstr "les fonctions d'agrégats ne sont pas autorisés dans %s" +msgstr "les fonctions d'agrégats ne sont pas autorisés dans %s" #. translator: %s is name of a SQL construct, eg GROUP BY #: parser/parse_agg.c:527 #, c-format msgid "grouping operations are not allowed in %s" -msgstr "les fonctions de regroupement ne sont pas autorisés dans %s" +msgstr "les fonctions de regroupement ne sont pas autorisés dans %s" #: parser/parse_agg.c:635 #, c-format msgid "outer-level aggregate cannot contain a lower-level variable in its direct arguments" -msgstr "un aggrégat de niveau externe ne peut pas contenir de variable de niveau inférieur dans ses arguments directs" +msgstr "un aggrégat de niveau externe ne peut pas contenir de variable de niveau inférieur dans ses arguments directs" #: parser/parse_agg.c:706 #, c-format msgid "aggregate function calls cannot contain window function calls" msgstr "" -"les appels à la fonction d'agrégat ne peuvent pas contenir des appels à la\n" +"les appels à la fonction d'agrégat ne peuvent pas contenir des appels à la\n" "fonction window" #: parser/parse_agg.c:784 msgid "window functions are not allowed in JOIN conditions" -msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les conditions de jointure" +msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les conditions de jointure" #: parser/parse_agg.c:791 msgid "window functions are not allowed in functions in FROM" -msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les fonctions contenues dans la clause FROM" +msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les fonctions contenues dans la clause FROM" #: parser/parse_agg.c:797 msgid "window functions are not allowed in policy expressions" -msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les expressions de politique" +msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les expressions de politique" #: parser/parse_agg.c:809 msgid "window functions are not allowed in window definitions" -msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les définitions de fenêtres" +msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les définitions de fenêtres" #: parser/parse_agg.c:840 msgid "window functions are not allowed in check constraints" -msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les contraintes CHECK" +msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les contraintes CHECK" #: parser/parse_agg.c:844 msgid "window functions are not allowed in DEFAULT expressions" -msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les expressions par défaut" +msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les expressions par défaut" #: parser/parse_agg.c:847 msgid "window functions are not allowed in index expressions" -msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les expressions d'index" +msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les expressions d'index" #: parser/parse_agg.c:850 msgid "window functions are not allowed in index predicates" -msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les prédicats d'index" +msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les prédicats d'index" #: parser/parse_agg.c:853 msgid "window functions are not allowed in transform expressions" -msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les expressions de transformation" +msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les expressions de transformation" #: parser/parse_agg.c:856 msgid "window functions are not allowed in EXECUTE parameters" -msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les paramètres d'EXECUTE" +msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les paramètres d'EXECUTE" #: parser/parse_agg.c:859 msgid "window functions are not allowed in trigger WHEN conditions" -msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les conditions WHEN des triggers" +msgstr "les fonctions de fenêtrage ne sont pas autorisés dans les conditions WHEN des triggers" #. translator: %s is name of a SQL construct, eg GROUP BY #: parser/parse_agg.c:879 parser/parse_clause.c:1559 #, c-format msgid "window functions are not allowed in %s" -msgstr "les fonctions de fenêtrage ne sont pas autorisés dans %s" +msgstr "les fonctions de fenêtrage ne sont pas autorisés dans %s" #: parser/parse_agg.c:913 parser/parse_clause.c:2396 #, c-format msgid "window \"%s\" does not exist" -msgstr "le window « %s » n'existe pas" +msgstr "le window « %s » n'existe pas" #: parser/parse_agg.c:998 #, c-format msgid "too many grouping sets present (maximum 4096)" -msgstr "trop d'ensembles de regroupement présents (4096 maximum)" +msgstr "trop d'ensembles de regroupement présents (4096 maximum)" #: parser/parse_agg.c:1147 #, c-format msgid "aggregate functions are not allowed in a recursive query's recursive term" -msgstr "les fonctions de fenêtrage ne sont pas autorisés dans le terme récursif d'une requête récursive" +msgstr "les fonctions de fenêtrage ne sont pas autorisés dans le terme récursif d'une requête récursive" #: parser/parse_agg.c:1340 #, c-format msgid "column \"%s.%s\" must appear in the GROUP BY clause or be used in an aggregate function" -msgstr "la colonne « %s.%s » doit apparaître dans la clause GROUP BY ou doit être utilisé dans une fonction d'agrégat" +msgstr "la colonne « %s.%s » doit apparaître dans la clause GROUP BY ou doit être utilisé dans une fonction d'agrégat" #: parser/parse_agg.c:1343 #, c-format msgid "Direct arguments of an ordered-set aggregate must use only grouped columns." -msgstr "Les arguments directs d'un agégat par ensemble ordonné doivent seulement utiliser des colonnes groupées." +msgstr "Les arguments directs d'un agégat par ensemble ordonné doivent seulement utiliser des colonnes groupées." #: parser/parse_agg.c:1348 #, c-format msgid "subquery uses ungrouped column \"%s.%s\" from outer query" msgstr "" -"la sous-requête utilise une colonne « %s.%s » non groupée dans la requête\n" +"la sous-requête utilise une colonne « %s.%s » non groupée dans la requête\n" "externe" #: parser/parse_agg.c:1512 #, c-format msgid "arguments to GROUPING must be grouping expressions of the associated query level" -msgstr "les arguments de la clause GROUPING doivent être des expressions de regroupement du niveau de la requête associée" +msgstr "les arguments de la clause GROUPING doivent être des expressions de regroupement du niveau de la requête associée" #: parser/parse_clause.c:649 #, c-format msgid "multiple column definition lists are not allowed for the same function" -msgstr "plusieurs listes de définition de colonnes ne sont pas autorisées pour la même fonction" +msgstr "plusieurs listes de définition de colonnes ne sont pas autorisées pour la même fonction" #: parser/parse_clause.c:682 #, c-format msgid "ROWS FROM() with multiple functions cannot have a column definition list" -msgstr "ROWS FROM() avec plusieurs fonctions ne peut pas avoir une liste de définitions de colonnes" +msgstr "ROWS FROM() avec plusieurs fonctions ne peut pas avoir une liste de définitions de colonnes" #: parser/parse_clause.c:683 #, c-format msgid "Put a separate column definition list for each function inside ROWS FROM()." -msgstr "Placer une liste de définitions de colonnes séparée pour chaque fonction à l'intérieur de ROWS FROM()." +msgstr "Placer une liste de définitions de colonnes séparée pour chaque fonction à l'intérieur de ROWS FROM()." #: parser/parse_clause.c:689 #, c-format msgid "UNNEST() with multiple arguments cannot have a column definition list" -msgstr "UNNEST() avec plusieurs arguments ne peut pas avoir de liste de définition de colonnes" +msgstr "UNNEST() avec plusieurs arguments ne peut pas avoir de liste de définition de colonnes" #: parser/parse_clause.c:690 #, c-format msgid "Use separate UNNEST() calls inside ROWS FROM(), and attach a column definition list to each one." -msgstr "Utiliser des appels séparés UNNEST() à l'intérieur de ROWS FROM(), et attacher une liste de définition des colonnes pour chaque." +msgstr "Utiliser des appels séparés UNNEST() à l'intérieur de ROWS FROM(), et attacher une liste de définition des colonnes pour chaque." #: parser/parse_clause.c:697 #, c-format msgid "WITH ORDINALITY cannot be used with a column definition list" -msgstr "WITH ORDINALITY ne peut pas être utilisé avec une liste de définitions de colonnes" +msgstr "WITH ORDINALITY ne peut pas être utilisé avec une liste de définitions de colonnes" #: parser/parse_clause.c:698 #, c-format msgid "Put the column definition list inside ROWS FROM()." -msgstr "Placez la liste de définitions des colonnes dans ROWS FROM()." +msgstr "Placez la liste de définitions des colonnes dans ROWS FROM()." #: parser/parse_clause.c:753 #, c-format msgid "tablesample method %s does not exist" -msgstr "la méthode d'échantillonage %s n'existe pas" +msgstr "la méthode d'échantillonage %s n'existe pas" #: parser/parse_clause.c:775 #, c-format msgid "tablesample method %s requires %d argument, not %d" msgid_plural "tablesample method %s requires %d arguments, not %d" -msgstr[0] "la méthode d'échantillonage %s requiert %d argument, et non pas %d" -msgstr[1] "la méthode d'échantillonage %s requiert %d arguments, et non pas %d" +msgstr[0] "la méthode d'échantillonage %s requiert %d argument, et non pas %d" +msgstr[1] "la méthode d'échantillonage %s requiert %d arguments, et non pas %d" #: parser/parse_clause.c:809 #, c-format msgid "tablesample method %s does not support REPEATABLE" -msgstr "la méthode d'échantillonage %s ne supporte pas REPEATABLE" +msgstr "la méthode d'échantillonage %s ne supporte pas REPEATABLE" #: parser/parse_clause.c:940 #, c-format msgid "TABLESAMPLE clause can only be applied to tables and materialized views" -msgstr "la clause TABLESPACE est uniquement applicable pour les tables et les vues matérialisées" +msgstr "la clause TABLESAMPLE est uniquement applicable pour les tables et les vues matérialisées" #: parser/parse_clause.c:1110 #, c-format msgid "column name \"%s\" appears more than once in USING clause" -msgstr "le nom de la colonne « %s » apparaît plus d'une fois dans la clause USING" +msgstr "le nom de la colonne « %s » apparaît plus d'une fois dans la clause USING" #: parser/parse_clause.c:1125 #, c-format msgid "common column name \"%s\" appears more than once in left table" msgstr "" -"le nom commun de la colonne « %s » apparaît plus d'une fois dans la table de\n" +"le nom commun de la colonne « %s » apparaît plus d'une fois dans la table de\n" "gauche" #: parser/parse_clause.c:1134 #, c-format msgid "column \"%s\" specified in USING clause does not exist in left table" msgstr "" -"la colonne « %s » spécifiée dans la clause USING n'existe pas dans la table\n" +"la colonne « %s » spécifiée dans la clause USING n'existe pas dans la table\n" "de gauche" #: parser/parse_clause.c:1148 #, c-format msgid "common column name \"%s\" appears more than once in right table" msgstr "" -"le nom commun de la colonne « %s » apparaît plus d'une fois dans la table de\n" +"le nom commun de la colonne « %s » apparaît plus d'une fois dans la table de\n" " droite" #: parser/parse_clause.c:1157 #, c-format msgid "column \"%s\" specified in USING clause does not exist in right table" msgstr "" -"la colonne « %s » spécifiée dans la clause USING n'existe pas dans la table\n" +"la colonne « %s » spécifiée dans la clause USING n'existe pas dans la table\n" "de droite" #: parser/parse_clause.c:1211 #, c-format msgid "column alias list for \"%s\" has too many entries" -msgstr "la liste d'alias de colonnes pour « %s » a beaucoup trop d'entrées" +msgstr "la liste d'alias de colonnes pour « %s » a beaucoup trop d'entrées" #. translator: %s is name of a SQL construct, eg LIMIT #: parser/parse_clause.c:1520 #, c-format msgid "argument of %s must not contain variables" -msgstr "l'argument de « %s » ne doit pas contenir de variables" +msgstr "l'argument de « %s » ne doit pas contenir de variables" #. translator: first %s is name of a SQL construct, eg ORDER BY #: parser/parse_clause.c:1685 #, c-format msgid "%s \"%s\" is ambiguous" -msgstr "%s « %s » est ambigu" +msgstr "%s « %s » est ambigu" #. translator: %s is name of a SQL construct, eg ORDER BY #: parser/parse_clause.c:1714 #, c-format msgid "non-integer constant in %s" -msgstr "constante non entière dans %s" +msgstr "constante non entière dans %s" #. translator: %s is name of a SQL construct, eg ORDER BY #: parser/parse_clause.c:1736 #, c-format msgid "%s position %d is not in select list" -msgstr "%s, à la position %d, n'est pas dans la liste SELECT" +msgstr "%s, à la position %d, n'est pas dans la liste SELECT" #: parser/parse_clause.c:2178 #, c-format msgid "CUBE is limited to 12 elements" -msgstr "CUBE est limité à 12 éléments" +msgstr "CUBE est limité à 12 éléments" #: parser/parse_clause.c:2384 #, c-format msgid "window \"%s\" is already defined" -msgstr "le window « %s » est déjà définie" +msgstr "le window « %s » est déjà définie" #: parser/parse_clause.c:2446 #, c-format msgid "cannot override PARTITION BY clause of window \"%s\"" -msgstr "n'a pas pu surcharger la clause PARTITION BY de window « %s »" +msgstr "n'a pas pu surcharger la clause PARTITION BY de window « %s »" #: parser/parse_clause.c:2458 #, c-format msgid "cannot override ORDER BY clause of window \"%s\"" -msgstr "n'a pas pu surcharger la clause ORDER BY de window « %s »" +msgstr "n'a pas pu surcharger la clause ORDER BY de window « %s »" #: parser/parse_clause.c:2488 parser/parse_clause.c:2494 #, c-format msgid "cannot copy window \"%s\" because it has a frame clause" -msgstr "ne peut pas copier la fenêtre « %s » car il dispose d'une clause de portée" +msgstr "ne peut pas copier la fenêtre « %s » car il dispose d'une clause de portée" #: parser/parse_clause.c:2496 #, c-format msgid "Omit the parentheses in this OVER clause." -msgstr "Omettre les parenthèses dans cette clause OVER." +msgstr "Omettre les parenthèses dans cette clause OVER." #: parser/parse_clause.c:2562 #, c-format msgid "in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list" msgstr "" -"dans un agrégat avec DISTINCT, les expressions ORDER BY doivent apparaître\n" +"dans un agrégat avec DISTINCT, les expressions ORDER BY doivent apparaître\n" "dans la liste d'argument" #: parser/parse_clause.c:2563 #, c-format msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list" msgstr "" -"pour SELECT DISTINCT, ORDER BY, les expressions doivent apparaître dans la\n" +"pour SELECT DISTINCT, ORDER BY, les expressions doivent apparaître dans la\n" "liste SELECT" #: parser/parse_clause.c:2596 #, c-format msgid "an aggregate with DISTINCT must have at least one argument" -msgstr "un agrégat avec DISTINCT doit avoir au moins un argument" +msgstr "un agrégat avec DISTINCT doit avoir au moins un argument" #: parser/parse_clause.c:2597 #, c-format @@ -13152,17 +12937,17 @@ msgstr "" #: parser/parse_clause.c:2774 #, c-format msgid "ASC/DESC is not allowed in ON CONFLICT clause" -msgstr "ASC/DESC n'est pas autorisé avec la clause ON CONFLICT" +msgstr "ASC/DESC n'est pas autorisé avec la clause ON CONFLICT" #: parser/parse_clause.c:2780 #, c-format msgid "NULLS FIRST/LAST is not allowed in ON CONFLICT clause" -msgstr "NULLS FIRST/LAST n'est pas autorisé avec la clause ON CONFLICT" +msgstr "NULLS FIRST/LAST n'est pas autorisé avec la clause ON CONFLICT" #: parser/parse_clause.c:2860 #, c-format msgid "ON CONFLICT DO UPDATE requires inference specification or constraint name" -msgstr "ON CONFLICT DO UPDATE requiert une spécification d'inférence ou un nom de contrainte" +msgstr "ON CONFLICT DO UPDATE requiert une spécification d'inférence ou un nom de contrainte" #: parser/parse_clause.c:2861 #, c-format @@ -13172,26 +12957,26 @@ msgstr "Par exemple, ON CONFLICT (nom_colonne)" #: parser/parse_clause.c:2872 #, c-format msgid "ON CONFLICT is not supported with system catalog tables" -msgstr "ON CONFLICT n'est pas supporté avec les catalogues systèmes" +msgstr "ON CONFLICT n'est pas supporté avec les catalogues systèmes" #: parser/parse_clause.c:2880 #, c-format msgid "ON CONFLICT is not supported on table \"%s\" used as a catalog table" -msgstr "ON CONFLICT n'est pas supporté sur la table « %s » utilisée comme une table catalogue" +msgstr "ON CONFLICT n'est pas supporté sur la table « %s » utilisée comme une table catalogue" #: parser/parse_clause.c:3012 #, c-format msgid "operator %s is not a valid ordering operator" -msgstr "l'opérateur %s n'est pas un opérateur de tri valide" +msgstr "l'opérateur %s n'est pas un opérateur de tri valide" #: parser/parse_clause.c:3014 #, c-format msgid "Ordering operators must be \"<\" or \">\" members of btree operator families." msgstr "" -"Les opérateurs de tri doivent être les membres « < » ou « > » des familles\n" -"d'opérateurs btree." +"Les opérateurs de tri doivent être les membres « < » ou « > » des familles\n" +"d'opérateurs btree." -#: parser/parse_coerce.c:971 parser/parse_coerce.c:1001 parser/parse_coerce.c:1019 parser/parse_coerce.c:1034 parser/parse_expr.c:2053 parser/parse_expr.c:2577 parser/parse_target.c:874 +#: parser/parse_coerce.c:971 parser/parse_coerce.c:1001 parser/parse_coerce.c:1019 parser/parse_coerce.c:1034 parser/parse_expr.c:2053 parser/parse_expr.c:2577 parser/parse_target.c:885 #, c-format msgid "cannot cast type %s to %s" msgstr "ne peut pas convertir le type %s en %s" @@ -13199,7 +12984,7 @@ msgstr "ne peut pas convertir le type %s en %s" #: parser/parse_coerce.c:1004 #, c-format msgid "Input has too few columns." -msgstr "L'entrée n'a pas assez de colonnes." +msgstr "L'entrée n'a pas assez de colonnes." #: parser/parse_coerce.c:1022 #, c-format @@ -13209,13 +12994,13 @@ msgstr "ne peut pas convertir le type %s en %s dans la colonne %d" #: parser/parse_coerce.c:1037 #, c-format msgid "Input has too many columns." -msgstr "L'entrée a trop de colonnes." +msgstr "L'entrée a trop de colonnes." #. translator: first %s is name of a SQL construct, eg WHERE #: parser/parse_coerce.c:1080 #, c-format msgid "argument of %s must be type boolean, not type %s" -msgstr "l'argument de %s doit être de type booléen, et non du type %s" +msgstr "l'argument de %s doit être de type booléen, et non du type %s" #. translator: %s is name of a SQL construct, eg WHERE #. translator: %s is name of a SQL construct, eg LIMIT @@ -13228,7 +13013,7 @@ msgstr "l'argument de %s ne doit pas renvoyer un ensemble" #: parser/parse_coerce.c:1127 #, c-format msgid "argument of %s must be type %s, not type %s" -msgstr "l'argument de %s doit être de type %s, et non du type %s" +msgstr "l'argument de %s doit être de type %s, et non du type %s" #. translator: first %s is name of a SQL construct, eg CASE #: parser/parse_coerce.c:1260 @@ -13245,196 +13030,196 @@ msgstr "%s n'a pas pu convertir le type %s en %s" #: parser/parse_coerce.c:1629 #, c-format msgid "arguments declared \"anyelement\" are not all alike" -msgstr "les arguments déclarés « anyelement » ne sont pas tous identiques" +msgstr "les arguments déclarés « anyelement » ne sont pas tous identiques" #: parser/parse_coerce.c:1649 #, c-format msgid "arguments declared \"anyarray\" are not all alike" -msgstr "les arguments déclarés « anyarray » ne sont pas tous identiques" +msgstr "les arguments déclarés « anyarray » ne sont pas tous identiques" #: parser/parse_coerce.c:1669 #, c-format msgid "arguments declared \"anyrange\" are not all alike" -msgstr "les arguments déclarés « anyrange » ne sont pas tous identiques" +msgstr "les arguments déclarés « anyrange » ne sont pas tous identiques" #: parser/parse_coerce.c:1698 parser/parse_coerce.c:1909 parser/parse_coerce.c:1943 #, c-format msgid "argument declared \"anyarray\" is not an array but type %s" -msgstr "l'argument déclaré « anyarray » n'est pas un tableau mais est du type %s" +msgstr "l'argument déclaré « anyarray » n'est pas un tableau mais est du type %s" #: parser/parse_coerce.c:1714 #, c-format msgid "argument declared \"anyarray\" is not consistent with argument declared \"anyelement\"" msgstr "" -"l'argument déclaré « anyarray » n'est pas cohérent avec l'argument déclaré\n" -"« anyelement »" +"l'argument déclaré « anyarray » n'est pas cohérent avec l'argument déclaré\n" +"« anyelement »" #: parser/parse_coerce.c:1735 parser/parse_coerce.c:1956 #, c-format msgid "argument declared \"anyrange\" is not a range type but type %s" -msgstr "l'argument déclaré « anyrange » n'est pas un type d'intervalle mais est du type %s" +msgstr "l'argument déclaré « anyrange » n'est pas un type d'intervalle mais est du type %s" #: parser/parse_coerce.c:1751 #, c-format msgid "argument declared \"anyrange\" is not consistent with argument declared \"anyelement\"" msgstr "" -"l'argument déclaré « anyrange » n'est pas cohérent avec l'argument déclaré\n" -"« anyelement »" +"l'argument déclaré « anyrange » n'est pas cohérent avec l'argument déclaré\n" +"« anyelement »" #: parser/parse_coerce.c:1771 #, c-format msgid "could not determine polymorphic type because input has type \"unknown\"" msgstr "" -"n'a pas pu déterminer le type polymorphique car l'entrée dispose du type\n" -"« unknown »" +"n'a pas pu déterminer le type polymorphique car l'entrée dispose du type\n" +"« unknown »" #: parser/parse_coerce.c:1781 #, c-format msgid "type matched to anynonarray is an array type: %s" -msgstr "le type déclaré anynonarray est un type tableau : %s" +msgstr "le type déclaré anynonarray est un type tableau : %s" #: parser/parse_coerce.c:1791 #, c-format msgid "type matched to anyenum is not an enum type: %s" -msgstr "le type déclaré anyenum n'est pas un type enum : %s" +msgstr "le type déclaré anyenum n'est pas un type enum : %s" #: parser/parse_coerce.c:1831 parser/parse_coerce.c:1861 #, c-format msgid "could not find range type for data type %s" -msgstr "n'a pas pu trouver le type range pour le type de données %s" +msgstr "n'a pas pu trouver le type range pour le type de données %s" #: parser/parse_collate.c:228 parser/parse_collate.c:475 parser/parse_collate.c:986 #, c-format msgid "collation mismatch between implicit collations \"%s\" and \"%s\"" -msgstr "le collationnement ne correspond pas aux collationnements implicites « %s » et « %s »" +msgstr "le collationnement ne correspond pas aux collationnements implicites « %s » et « %s »" #: parser/parse_collate.c:231 parser/parse_collate.c:478 parser/parse_collate.c:989 #, c-format msgid "You can choose the collation by applying the COLLATE clause to one or both expressions." -msgstr "Vous pouvez choisir le collationnement en appliquant la clause COLLATE à une ou aux deux expressions." +msgstr "Vous pouvez choisir le collationnement en appliquant la clause COLLATE à une ou aux deux expressions." #: parser/parse_collate.c:834 #, c-format msgid "collation mismatch between explicit collations \"%s\" and \"%s\"" -msgstr "le collationnement ne correspond pas aux collationnements explicites « %s » et « %s »" +msgstr "le collationnement ne correspond pas aux collationnements explicites « %s » et « %s »" #: parser/parse_cte.c:42 #, c-format msgid "recursive reference to query \"%s\" must not appear within its non-recursive term" msgstr "" -"la référence récursive à la requête « %s » ne doit pas apparaître à\n" -"l'intérieur de son terme non récursif" +"la référence récursive à la requête « %s » ne doit pas apparaître à\n" +"l'intérieur de son terme non récursif" #: parser/parse_cte.c:44 #, c-format msgid "recursive reference to query \"%s\" must not appear within a subquery" msgstr "" -"la référence récursive à la requête « %s » ne doit pas apparaître à\n" -"l'intérieur d'une sous-requête" +"la référence récursive à la requête « %s » ne doit pas apparaître à\n" +"l'intérieur d'une sous-requête" #: parser/parse_cte.c:46 #, c-format msgid "recursive reference to query \"%s\" must not appear within an outer join" msgstr "" -"la référence récursive à la requête « %s » ne doit pas apparaître à\n" -"l'intérieur d'une jointure externe" +"la référence récursive à la requête « %s » ne doit pas apparaître à\n" +"l'intérieur d'une jointure externe" #: parser/parse_cte.c:48 #, c-format msgid "recursive reference to query \"%s\" must not appear within INTERSECT" msgstr "" -"la référence récursive à la requête « %s » ne doit pas apparaître à\n" -"l'intérieur d'INTERSECT" +"la référence récursive à la requête « %s » ne doit pas apparaître à\n" +"l'intérieur d'INTERSECT" #: parser/parse_cte.c:50 #, c-format msgid "recursive reference to query \"%s\" must not appear within EXCEPT" msgstr "" -"la référence récursive à la requête « %s » ne doit pas apparaître à\n" -"l'intérieur d'EXCEPT" +"la référence récursive à la requête « %s » ne doit pas apparaître à\n" +"l'intérieur d'EXCEPT" #: parser/parse_cte.c:132 #, c-format msgid "WITH query name \"%s\" specified more than once" -msgstr "le nom de la requête WITH « %s » est spécifié plus d'une fois" +msgstr "le nom de la requête WITH « %s » est spécifié plus d'une fois" #: parser/parse_cte.c:264 #, c-format msgid "WITH clause containing a data-modifying statement must be at the top level" msgstr "" -"la clause WITH contenant une instruction de modification de données doit être\n" +"la clause WITH contenant une instruction de modification de données doit être\n" "au plus haut niveau" #: parser/parse_cte.c:313 #, c-format msgid "recursive query \"%s\" column %d has type %s in non-recursive term but type %s overall" msgstr "" -"dans la requête récursive « %s », la colonne %d a le type %s dans le terme non\n" -"récursif mais le type global %s" +"dans la requête récursive « %s », la colonne %d a le type %s dans le terme non\n" +"récursif mais le type global %s" #: parser/parse_cte.c:319 #, c-format msgid "Cast the output of the non-recursive term to the correct type." -msgstr "Convertit la sortie du terme non récursif dans le bon type." +msgstr "Convertit la sortie du terme non récursif dans le bon type." #: parser/parse_cte.c:324 #, c-format msgid "recursive query \"%s\" column %d has collation \"%s\" in non-recursive term but collation \"%s\" overall" -msgstr "requête récursive « %s » : la colonne %d a le collationnement « %s » dans un terme non récursifet un collationnement « %s » global" +msgstr "requête récursive « %s » : la colonne %d a le collationnement « %s » dans un terme non récursifet un collationnement « %s » global" #: parser/parse_cte.c:328 #, c-format msgid "Use the COLLATE clause to set the collation of the non-recursive term." -msgstr "Utilisez la clause COLLATE pour configurer le collationnement du terme non récursif." +msgstr "Utilisez la clause COLLATE pour configurer le collationnement du terme non récursif." #: parser/parse_cte.c:419 #, c-format msgid "WITH query \"%s\" has %d columns available but %d columns specified" -msgstr "la requête WITH « %s » a %d colonnes disponibles mais %d colonnes spécifiées" +msgstr "la requête WITH « %s » a %d colonnes disponibles mais %d colonnes spécifiées" #: parser/parse_cte.c:599 #, c-format msgid "mutual recursion between WITH items is not implemented" -msgstr "la récursion mutuelle entre des éléments WITH n'est pas implantée" +msgstr "la récursion mutuelle entre des éléments WITH n'est pas implantée" #: parser/parse_cte.c:651 #, c-format msgid "recursive query \"%s\" must not contain data-modifying statements" -msgstr "la requête récursive « %s » ne doit pas contenir des instructions de modification de données" +msgstr "la requête récursive « %s » ne doit pas contenir des instructions de modification de données" #: parser/parse_cte.c:659 #, c-format msgid "recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] recursive-term" msgstr "" -"la requête récursive « %s » n'a pas la forme terme-non-récursive UNION [ALL]\n" -"terme-récursive" +"la requête récursive « %s » n'a pas la forme terme-non-récursive UNION [ALL]\n" +"terme-récursive" #: parser/parse_cte.c:703 #, c-format msgid "ORDER BY in a recursive query is not implemented" -msgstr "ORDER BY dans une requête récursive n'est pas implanté" +msgstr "ORDER BY dans une requête récursive n'est pas implanté" #: parser/parse_cte.c:709 #, c-format msgid "OFFSET in a recursive query is not implemented" -msgstr "OFFSET dans une requête récursive n'est pas implémenté" +msgstr "OFFSET dans une requête récursive n'est pas implémenté" #: parser/parse_cte.c:715 #, c-format msgid "LIMIT in a recursive query is not implemented" -msgstr "LIMIT dans une requête récursive n'est pas implémenté" +msgstr "LIMIT dans une requête récursive n'est pas implémenté" #: parser/parse_cte.c:721 #, c-format msgid "FOR UPDATE/SHARE in a recursive query is not implemented" -msgstr "FOR UPDATE/SHARE dans une requête récursive n'est pas implémenté" +msgstr "FOR UPDATE/SHARE dans une requête récursive n'est pas implémenté" #: parser/parse_cte.c:778 #, c-format msgid "recursive reference to query \"%s\" must not appear more than once" -msgstr "la référence récursive à la requête « %s » ne doit pas apparaître plus d'une fois" +msgstr "la référence récursive à la requête « %s » ne doit pas apparaître plus d'une fois" -#: parser/parse_expr.c:390 parser/parse_relation.c:3083 parser/parse_relation.c:3103 +#: parser/parse_expr.c:390 parser/parse_relation.c:3176 parser/parse_relation.c:3196 #, c-format msgid "column %s.%s does not exist" msgstr "la colonne %s.%s n'existe pas" @@ -13442,244 +13227,244 @@ msgstr "la colonne %s.%s n'existe pas" #: parser/parse_expr.c:402 #, c-format msgid "column \"%s\" not found in data type %s" -msgstr "colonne « %s » introuvable pour le type de données %s" +msgstr "colonne « %s » introuvable pour le type de données %s" #: parser/parse_expr.c:408 #, c-format msgid "could not identify column \"%s\" in record data type" -msgstr "n'a pas pu identifier la colonne « %s » dans le type de données de l'enregistrement" +msgstr "n'a pas pu identifier la colonne « %s » dans le type de données de l'enregistrement" #: parser/parse_expr.c:414 #, c-format msgid "column notation .%s applied to type %s, which is not a composite type" -msgstr "notation d'attribut .%s appliqué au type %s, qui n'est pas un type composé" +msgstr "notation d'attribut .%s appliqué au type %s, qui n'est pas un type composé" -#: parser/parse_expr.c:444 parser/parse_target.c:660 +#: parser/parse_expr.c:444 parser/parse_target.c:671 #, c-format msgid "row expansion via \"*\" is not supported here" -msgstr "l'expansion de ligne via « * » n'est pas supporté ici" +msgstr "l'expansion de ligne via « * » n'est pas supporté ici" -#: parser/parse_expr.c:770 parser/parse_relation.c:667 parser/parse_relation.c:767 parser/parse_target.c:1109 +#: parser/parse_expr.c:770 parser/parse_relation.c:668 parser/parse_relation.c:768 parser/parse_target.c:1120 #, c-format msgid "column reference \"%s\" is ambiguous" -msgstr "la référence à la colonne « %s » est ambigu" +msgstr "la référence à la colonne « %s » est ambigu" #: parser/parse_expr.c:826 parser/parse_param.c:110 parser/parse_param.c:142 parser/parse_param.c:199 parser/parse_param.c:298 #, c-format msgid "there is no parameter $%d" -msgstr "Il n'existe pas de paramètres $%d" +msgstr "Il n'existe pas de paramètres $%d" #: parser/parse_expr.c:1067 #, c-format msgid "NULLIF requires = operator to yield boolean" -msgstr "NULLIF requiert l'opérateur = pour comparer des booleéns" +msgstr "NULLIF requiert l'opérateur = pour comparer des booleéns" #: parser/parse_expr.c:1730 msgid "cannot use subquery in check constraint" -msgstr "ne peut pas utiliser une sous-requête dans la contrainte de vérification" +msgstr "ne peut pas utiliser une sous-requête dans la contrainte de vérification" #: parser/parse_expr.c:1734 msgid "cannot use subquery in DEFAULT expression" -msgstr "ne peut pas utiliser de sous-requête dans une expression DEFAULT" +msgstr "ne peut pas utiliser de sous-requête dans une expression DEFAULT" #: parser/parse_expr.c:1737 msgid "cannot use subquery in index expression" -msgstr "ne peut pas utiliser la sous-requête dans l'expression de l'index" +msgstr "ne peut pas utiliser la sous-requête dans l'expression de l'index" #: parser/parse_expr.c:1740 msgid "cannot use subquery in index predicate" -msgstr "ne peut pas utiliser une sous-requête dans un prédicat d'index" +msgstr "ne peut pas utiliser une sous-requête dans un prédicat d'index" #: parser/parse_expr.c:1743 msgid "cannot use subquery in transform expression" -msgstr "ne peut pas utiliser une sous-requête dans l'expression de transformation" +msgstr "ne peut pas utiliser une sous-requête dans l'expression de transformation" #: parser/parse_expr.c:1746 msgid "cannot use subquery in EXECUTE parameter" -msgstr "ne peut pas utiliser les sous-requêtes dans le paramètre EXECUTE" +msgstr "ne peut pas utiliser les sous-requêtes dans le paramètre EXECUTE" #: parser/parse_expr.c:1749 msgid "cannot use subquery in trigger WHEN condition" -msgstr "ne peut pas utiliser une sous-requête dans la condition WHEN d'un trigger" +msgstr "ne peut pas utiliser une sous-requête dans la condition WHEN d'un trigger" #: parser/parse_expr.c:1803 #, c-format msgid "subquery must return only one column" -msgstr "la sous-requête doit renvoyer une seule colonne" +msgstr "la sous-requête doit renvoyer une seule colonne" #: parser/parse_expr.c:1887 #, c-format msgid "subquery has too many columns" -msgstr "la sous-requête a trop de colonnes" +msgstr "la sous-requête a trop de colonnes" #: parser/parse_expr.c:1892 #, c-format msgid "subquery has too few columns" -msgstr "la sous-requête n'a pas assez de colonnes" +msgstr "la sous-requête n'a pas assez de colonnes" #: parser/parse_expr.c:1993 #, c-format msgid "cannot determine type of empty array" -msgstr "ne peut pas déterminer le type d'un tableau vide" +msgstr "ne peut pas déterminer le type d'un tableau vide" #: parser/parse_expr.c:1994 #, c-format msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]." -msgstr "Convertit explicitement vers le type désiré, par exemple ARRAY[]::integer[]." +msgstr "Convertit explicitement vers le type désiré, par exemple ARRAY[]::integer[]." #: parser/parse_expr.c:2008 #, c-format msgid "could not find element type for data type %s" -msgstr "n'a pas pu trouver le type d'élément pour le type de données %s" +msgstr "n'a pas pu trouver le type d'élément pour le type de données %s" #: parser/parse_expr.c:2231 #, c-format msgid "unnamed XML attribute value must be a column reference" -msgstr "la valeur d'un attribut XML sans nom doit être une référence de colonne" +msgstr "la valeur d'un attribut XML sans nom doit être une référence de colonne" #: parser/parse_expr.c:2232 #, c-format msgid "unnamed XML element value must be a column reference" -msgstr "la valeur d'un élément XML sans nom doit être une référence de colonne" +msgstr "la valeur d'un élément XML sans nom doit être une référence de colonne" #: parser/parse_expr.c:2247 #, c-format msgid "XML attribute name \"%s\" appears more than once" -msgstr "le nom de l'attribut XML « %s » apparaît plus d'une fois" +msgstr "le nom de l'attribut XML « %s » apparaît plus d'une fois" #: parser/parse_expr.c:2354 #, c-format msgid "cannot cast XMLSERIALIZE result to %s" -msgstr "ne peut pas convertir le résultat XMLSERIALIZE en %s" +msgstr "ne peut pas convertir le résultat XMLSERIALIZE en %s" #: parser/parse_expr.c:2650 parser/parse_expr.c:2846 #, c-format msgid "unequal number of entries in row expressions" -msgstr "nombre différent d'entrées dans les expressions de ligne" +msgstr "nombre différent d'entrées dans les expressions de ligne" #: parser/parse_expr.c:2660 #, c-format msgid "cannot compare rows of zero length" -msgstr "n'a pas pu comparer des lignes de taille zéro" +msgstr "n'a pas pu comparer des lignes de taille zéro" #: parser/parse_expr.c:2685 #, c-format msgid "row comparison operator must yield type boolean, not type %s" msgstr "" -"l'opérateur de comparaison de ligne doit renvoyer le type booléen, et non le\n" +"l'opérateur de comparaison de ligne doit renvoyer le type booléen, et non le\n" "type %s" #: parser/parse_expr.c:2692 #, c-format msgid "row comparison operator must not return a set" -msgstr "l'opérateur de comparaison de ligne ne doit pas renvoyer un ensemble" +msgstr "l'opérateur de comparaison de ligne ne doit pas renvoyer un ensemble" #: parser/parse_expr.c:2751 parser/parse_expr.c:2792 #, c-format msgid "could not determine interpretation of row comparison operator %s" -msgstr "n'a pas pu déterminer l'interprétation de l'opérateur de comparaison de ligne %s" +msgstr "n'a pas pu déterminer l'interprétation de l'opérateur de comparaison de ligne %s" #: parser/parse_expr.c:2753 #, c-format msgid "Row comparison operators must be associated with btree operator families." msgstr "" -"Les opérateurs de comparaison de lignes doivent être associés à des familles\n" -"d'opérateurs btree." +"Les opérateurs de comparaison de lignes doivent être associés à des familles\n" +"d'opérateurs btree." #: parser/parse_expr.c:2794 #, c-format msgid "There are multiple equally-plausible candidates." -msgstr "Il existe de nombreus candidats également plausibles." +msgstr "Il existe de nombreus candidats également plausibles." #: parser/parse_expr.c:2886 #, c-format msgid "IS DISTINCT FROM requires = operator to yield boolean" -msgstr "IS DISTINCT FROM requiert l'opérateur = pour comparer des booléens" +msgstr "IS DISTINCT FROM requiert l'opérateur = pour comparer des booléens" #: parser/parse_expr.c:3199 parser/parse_expr.c:3217 #, c-format msgid "operator precedence change: %s is now lower precedence than %s" -msgstr "la précédence d'opérateur change : %s a maintenant une précédence inférieure à %s" +msgstr "la précédence d'opérateur change : %s a maintenant une précédence inférieure à %s" #: parser/parse_func.c:174 #, c-format msgid "argument name \"%s\" used more than once" -msgstr "nom « %s » de l'argument spécifié plus d'une fois" +msgstr "nom « %s » de l'argument spécifié plus d'une fois" #: parser/parse_func.c:185 #, c-format msgid "positional argument cannot follow named argument" -msgstr "l'argument positionné ne doit pas suivre l'argument nommé" +msgstr "l'argument positionné ne doit pas suivre l'argument nommé" #: parser/parse_func.c:270 #, c-format msgid "%s(*) specified, but %s is not an aggregate function" -msgstr "%s(*) spécifié, mais %s n'est pas une fonction d'agrégat" +msgstr "%s(*) spécifié, mais %s n'est pas une fonction d'agrégat" #: parser/parse_func.c:277 #, c-format msgid "DISTINCT specified, but %s is not an aggregate function" -msgstr "DISTINCT spécifié mais %s n'est pas une fonction d'agrégat" +msgstr "DISTINCT spécifié mais %s n'est pas une fonction d'agrégat" #: parser/parse_func.c:283 #, c-format msgid "WITHIN GROUP specified, but %s is not an aggregate function" -msgstr "WITHIN GROUP spécifié, mais %s n'est pas une fonction d'agrégat" +msgstr "WITHIN GROUP spécifié, mais %s n'est pas une fonction d'agrégat" #: parser/parse_func.c:289 #, c-format msgid "ORDER BY specified, but %s is not an aggregate function" -msgstr "ORDER BY spécifié, mais %s n'est pas une fonction d'agrégat" +msgstr "ORDER BY spécifié, mais %s n'est pas une fonction d'agrégat" #: parser/parse_func.c:295 #, c-format msgid "FILTER specified, but %s is not an aggregate function" -msgstr "FILTER spécifié mais %s n'est pas une fonction d'agrégat" +msgstr "FILTER spécifié mais %s n'est pas une fonction d'agrégat" #: parser/parse_func.c:301 #, c-format msgid "OVER specified, but %s is not a window function nor an aggregate function" -msgstr "OVER spécifié, mais %s n'est pas une fonction window ou une fonction d'agrégat" +msgstr "OVER spécifié, mais %s n'est pas une fonction window ou une fonction d'agrégat" #: parser/parse_func.c:331 #, c-format msgid "WITHIN GROUP is required for ordered-set aggregate %s" -msgstr "WITHIN GROUP est requis pour l'agrégat à ensemble ordonné %s" +msgstr "WITHIN GROUP est requis pour l'agrégat à ensemble ordonné %s" #: parser/parse_func.c:337 #, c-format msgid "OVER is not supported for ordered-set aggregate %s" -msgstr "OVER n'est pas supporté pour l'agrégat %s à ensemble trié" +msgstr "OVER n'est pas supporté pour l'agrégat %s à ensemble trié" #: parser/parse_func.c:368 parser/parse_func.c:397 #, c-format msgid "There is an ordered-set aggregate %s, but it requires %d direct arguments, not %d." -msgstr "Il existe un agrégat par ensemble trié nommé %s, mais il requiert au moins %d arguments directs, pas %d." +msgstr "Il existe un agrégat par ensemble trié nommé %s, mais il requiert au moins %d arguments directs, pas %d." #: parser/parse_func.c:422 #, c-format msgid "To use the hypothetical-set aggregate %s, the number of hypothetical direct arguments (here %d) must match the number of ordering columns (here %d)." -msgstr "Pour utiliser l'agrégat à ensemble hypothétique %s, le nombre d'arguments directs hypothétiques (ici %d) doit correspondre au nombre de colonnes de tri (ici %d)." +msgstr "Pour utiliser l'agrégat à ensemble hypothétique %s, le nombre d'arguments directs hypothétiques (ici %d) doit correspondre au nombre de colonnes de tri (ici %d)." #: parser/parse_func.c:436 #, c-format msgid "There is an ordered-set aggregate %s, but it requires at least %d direct arguments." -msgstr "Il existe un agrégat par ensemble trié nommé %s, mais il requiert au moins %d arguments directs." +msgstr "Il existe un agrégat par ensemble trié nommé %s, mais il requiert au moins %d arguments directs." #: parser/parse_func.c:455 #, c-format msgid "%s is not an ordered-set aggregate, so it cannot have WITHIN GROUP" -msgstr "%s n'est pas un agrégat par ensemble trié, donc il ne peut pas avoir WITHIN GROUP" +msgstr "%s n'est pas un agrégat par ensemble trié, donc il ne peut pas avoir WITHIN GROUP" #: parser/parse_func.c:468 #, c-format msgid "window function %s requires an OVER clause" -msgstr "la fonction de fenêtrage %s nécessite une clause OVER" +msgstr "la fonction de fenêtrage %s nécessite une clause OVER" #: parser/parse_func.c:475 #, c-format msgid "window function %s cannot have WITHIN GROUP" -msgstr "la fonction de fenêtrage %s ne peut avoir WITHIN GROUP" +msgstr "la fonction de fenêtrage %s ne peut avoir WITHIN GROUP" #: parser/parse_func.c:496 #, c-format @@ -13697,51 +13482,51 @@ msgstr "" #, c-format msgid "No aggregate function matches the given name and argument types. Perhaps you misplaced ORDER BY; ORDER BY must appear after all regular arguments of the aggregate." msgstr "" -"Aucune fonction d'agrégat ne correspond au nom donné et aux types d'arguments.\n" -"Peut-être avez-vous mal placé la clause ORDER BY.\n" -"Cette dernière doit apparaître après tous les arguments standards de l'agrégat." +"Aucune fonction d'agrégat ne correspond au nom donné et aux types d'arguments.\n" +"Peut-être avez-vous mal placé la clause ORDER BY.\n" +"Cette dernière doit apparaître après tous les arguments standards de l'agrégat." #: parser/parse_func.c:521 #, c-format msgid "No function matches the given name and argument types. You might need to add explicit type casts." msgstr "" -"Aucune fonction ne correspond au nom donné et aux types d'arguments.\n" +"Aucune fonction ne correspond au nom donné et aux types d'arguments.\n" "Vous devez ajouter des conversions explicites de type." #: parser/parse_func.c:623 #, c-format msgid "VARIADIC argument must be an array" -msgstr "l'argument VARIADIC doit être un tableau" +msgstr "l'argument VARIADIC doit être un tableau" #: parser/parse_func.c:671 parser/parse_func.c:735 #, c-format msgid "%s(*) must be used to call a parameterless aggregate function" -msgstr "%s(*) doit être utilisé pour appeler une fonction d'agrégat sans paramètre" +msgstr "%s(*) doit être utilisé pour appeler une fonction d'agrégat sans paramètre" #: parser/parse_func.c:678 #, c-format msgid "aggregates cannot return sets" -msgstr "les agrégats ne peuvent pas renvoyer des ensembles" +msgstr "les agrégats ne peuvent pas renvoyer des ensembles" #: parser/parse_func.c:693 #, c-format msgid "aggregates cannot use named arguments" -msgstr "les agrégats ne peuvent pas utiliser des aguments nommés" +msgstr "les agrégats ne peuvent pas utiliser des aguments nommés" #: parser/parse_func.c:725 #, c-format msgid "DISTINCT is not implemented for window functions" -msgstr "DISTINCT n'est pas implémenté pour des fonctions window" +msgstr "DISTINCT n'est pas implémenté pour des fonctions window" #: parser/parse_func.c:745 #, c-format msgid "aggregate ORDER BY is not implemented for window functions" -msgstr "l'agrégat ORDER BY n'est pas implémenté pour des fonctions window" +msgstr "l'agrégat ORDER BY n'est pas implémenté pour des fonctions window" #: parser/parse_func.c:754 #, c-format msgid "FILTER is not implemented for non-aggregate window functions" -msgstr "FILTER n'est pas implémenté pour des fonctions de fenêtrage non agrégats" +msgstr "FILTER n'est pas implémenté pour des fonctions de fenêtrage non agrégats" #: parser/parse_func.c:760 #, c-format @@ -13751,17 +13536,17 @@ msgstr "les fonctions window ne peuvent pas renvoyer des ensembles" #: parser/parse_func.c:2010 #, c-format msgid "aggregate %s(*) does not exist" -msgstr "l'agrégat %s(*) n'existe pas" +msgstr "l'agrégat %s(*) n'existe pas" #: parser/parse_func.c:2015 #, c-format msgid "aggregate %s does not exist" -msgstr "l'agrégat %s n'existe pas" +msgstr "l'agrégat %s n'existe pas" #: parser/parse_func.c:2034 #, c-format msgid "function %s is not an aggregate" -msgstr "la fonction %s n'est pas un agrégat" +msgstr "la fonction %s n'est pas un agrégat" #: parser/parse_node.c:84 #, c-format @@ -13776,522 +13561,522 @@ msgstr "ne peut pas indicer le type %s car il ne s'agit pas d'un tableau" #: parser/parse_node.c:356 parser/parse_node.c:393 #, c-format msgid "array subscript must have type integer" -msgstr "l'indice d'un tableau doit être de type entier" +msgstr "l'indice d'un tableau doit être de type entier" #: parser/parse_node.c:424 #, c-format msgid "array assignment requires type %s but expression is of type %s" msgstr "l'affectation de tableaux requiert le type %s mais l'expression est de type %s" -#: parser/parse_oper.c:125 parser/parse_oper.c:722 utils/adt/regproc.c:583 utils/adt/regproc.c:603 utils/adt/regproc.c:787 +#: parser/parse_oper.c:125 parser/parse_oper.c:722 utils/adt/regproc.c:584 utils/adt/regproc.c:604 utils/adt/regproc.c:788 #, c-format msgid "operator does not exist: %s" -msgstr "l'opérateur n'existe pas : %s" +msgstr "l'opérateur n'existe pas : %s" #: parser/parse_oper.c:222 #, c-format msgid "Use an explicit ordering operator or modify the query." -msgstr "Utilisez un opérateur explicite de tri ou modifiez la requête." +msgstr "Utilisez un opérateur explicite de tri ou modifiez la requête." -#: parser/parse_oper.c:226 utils/adt/array_userfuncs.c:782 utils/adt/array_userfuncs.c:920 utils/adt/arrayfuncs.c:3639 utils/adt/arrayfuncs.c:4077 utils/adt/arrayfuncs.c:6051 utils/adt/rowtypes.c:1167 +#: parser/parse_oper.c:226 utils/adt/array_userfuncs.c:794 utils/adt/array_userfuncs.c:933 utils/adt/arrayfuncs.c:3639 utils/adt/arrayfuncs.c:4077 utils/adt/arrayfuncs.c:6039 utils/adt/rowtypes.c:1167 #, c-format msgid "could not identify an equality operator for type %s" -msgstr "n'a pas pu identifier un opérateur d'égalité pour le type %s" +msgstr "n'a pas pu identifier un opérateur d'égalité pour le type %s" #: parser/parse_oper.c:478 #, c-format msgid "operator requires run-time type coercion: %s" -msgstr "l'opérateur requiert la coercion du type à l'exécution : %s" +msgstr "l'opérateur requiert la coercion du type à l'exécution : %s" #: parser/parse_oper.c:714 #, c-format msgid "operator is not unique: %s" -msgstr "l'opérateur n'est pas unique : %s" +msgstr "l'opérateur n'est pas unique : %s" #: parser/parse_oper.c:716 #, c-format msgid "Could not choose a best candidate operator. You might need to add explicit type casts." msgstr "" -"N'a pas pu choisir un meilleur candidat pour l'opérateur. Vous devez ajouter une\n" +"N'a pas pu choisir un meilleur candidat pour l'opérateur. Vous devez ajouter une\n" "conversion explicite de type." #: parser/parse_oper.c:724 #, c-format msgid "No operator matches the given name and argument type(s). You might need to add explicit type casts." msgstr "" -"Aucun opérateur ne correspond au nom donné et aux types d'arguments.\n" +"Aucun opérateur ne correspond au nom donné et aux types d'arguments.\n" "Vous devez ajouter des conversions explicites de type." #: parser/parse_oper.c:783 parser/parse_oper.c:897 #, c-format msgid "operator is only a shell: %s" -msgstr "l'opérateur est seulement un shell : %s" +msgstr "l'opérateur est seulement un shell : %s" #: parser/parse_oper.c:885 #, c-format msgid "op ANY/ALL (array) requires array on right side" -msgstr "op ANY/ALL (tableau) requiert un tableau sur le côté droit" +msgstr "op ANY/ALL (tableau) requiert un tableau sur le côté droit" #: parser/parse_oper.c:927 #, c-format msgid "op ANY/ALL (array) requires operator to yield boolean" -msgstr "op ANY/ALL (tableau) requiert un opérateur pour comparer des booléens" +msgstr "op ANY/ALL (tableau) requiert un opérateur pour comparer des booléens" #: parser/parse_oper.c:932 #, c-format msgid "op ANY/ALL (array) requires operator not to return a set" -msgstr "op ANY/ALL (tableau) requiert que l'opérateur ne renvoie pas un ensemble" +msgstr "op ANY/ALL (tableau) requiert que l'opérateur ne renvoie pas un ensemble" #: parser/parse_param.c:216 #, c-format msgid "inconsistent types deduced for parameter $%d" -msgstr "types incohérents déduit pour le paramètre $%d" +msgstr "types incohérents déduit pour le paramètre $%d" -#: parser/parse_relation.c:174 +#: parser/parse_relation.c:175 #, c-format msgid "table reference \"%s\" is ambiguous" -msgstr "la référence à la table « %s » est ambigu" +msgstr "la référence à la table « %s » est ambigu" -#: parser/parse_relation.c:218 +#: parser/parse_relation.c:219 #, c-format msgid "table reference %u is ambiguous" -msgstr "la référence à la table %u est ambigu" +msgstr "la référence à la table %u est ambigu" -#: parser/parse_relation.c:397 +#: parser/parse_relation.c:398 #, c-format msgid "table name \"%s\" specified more than once" -msgstr "le nom de la table « %s » est spécifié plus d'une fois" +msgstr "le nom de la table « %s » est spécifié plus d'une fois" -#: parser/parse_relation.c:424 parser/parse_relation.c:3023 +#: parser/parse_relation.c:425 parser/parse_relation.c:3116 #, c-format msgid "invalid reference to FROM-clause entry for table \"%s\"" -msgstr "référence invalide d'une entrée de la clause FROM pour la table « %s »" +msgstr "référence invalide d'une entrée de la clause FROM pour la table « %s »" -#: parser/parse_relation.c:427 parser/parse_relation.c:3028 +#: parser/parse_relation.c:428 parser/parse_relation.c:3121 #, c-format msgid "There is an entry for table \"%s\", but it cannot be referenced from this part of the query." msgstr "" -"Il existe une entrée pour la table « %s » mais elle ne peut pas être\n" -"référencée de cette partie de la requête." +"Il existe une entrée pour la table « %s » mais elle ne peut pas être\n" +"référencée de cette partie de la requête." -#: parser/parse_relation.c:429 +#: parser/parse_relation.c:430 #, c-format msgid "The combining JOIN type must be INNER or LEFT for a LATERAL reference." -msgstr "Le type JOIN combiné doit être INNER ou LEFT pour une référence LATERAL." +msgstr "Le type JOIN combiné doit être INNER ou LEFT pour une référence LATERAL." -#: parser/parse_relation.c:705 +#: parser/parse_relation.c:706 #, c-format msgid "system column \"%s\" reference in check constraint is invalid" -msgstr "la référence de la colonne système « %s » dans la contrainte CHECK est invalide" +msgstr "la référence de la colonne système « %s » dans la contrainte CHECK est invalide" -#: parser/parse_relation.c:1065 parser/parse_relation.c:1345 parser/parse_relation.c:1847 +#: parser/parse_relation.c:1066 parser/parse_relation.c:1346 parser/parse_relation.c:1848 #, c-format msgid "table \"%s\" has %d columns available but %d columns specified" -msgstr "la table « %s » a %d colonnes disponibles mais %d colonnes spécifiées" +msgstr "la table « %s » a %d colonnes disponibles mais %d colonnes spécifiées" -#: parser/parse_relation.c:1152 +#: parser/parse_relation.c:1153 #, c-format msgid "There is a WITH item named \"%s\", but it cannot be referenced from this part of the query." msgstr "" -"Il existe un élément WITH nommé « %s » mais il ne peut pas être\n" -"référencée de cette partie de la requête." +"Il existe un élément WITH nommé « %s » mais il ne peut pas être\n" +"référencée de cette partie de la requête." -#: parser/parse_relation.c:1154 +#: parser/parse_relation.c:1155 #, c-format msgid "Use WITH RECURSIVE, or re-order the WITH items to remove forward references." msgstr "" -"Utilisez WITH RECURSIVE ou ré-ordonnez les éléments WITH pour supprimer\n" -"les références en avant." +"Utilisez WITH RECURSIVE ou ré-ordonnez les éléments WITH pour supprimer\n" +"les références en avant." -#: parser/parse_relation.c:1465 +#: parser/parse_relation.c:1466 #, c-format msgid "a column definition list is only allowed for functions returning \"record\"" msgstr "" -"une liste de définition de colonnes est uniquement autorisée pour les fonctions\n" -"renvoyant un « record »" +"une liste de définition de colonnes est uniquement autorisée pour les fonctions\n" +"renvoyant un « record »" -#: parser/parse_relation.c:1474 +#: parser/parse_relation.c:1475 #, c-format msgid "a column definition list is required for functions returning \"record\"" msgstr "" -"une liste de définition de colonnes est requise pour les fonctions renvoyant\n" -"un « record »" +"une liste de définition de colonnes est requise pour les fonctions renvoyant\n" +"un « record »" -#: parser/parse_relation.c:1553 +#: parser/parse_relation.c:1554 #, c-format msgid "function \"%s\" in FROM has unsupported return type %s" -msgstr "la fonction « %s » dans la clause FROM a un type de retour %s non supporté" +msgstr "la fonction « %s » dans la clause FROM a un type de retour %s non supporté" -#: parser/parse_relation.c:1675 +#: parser/parse_relation.c:1676 #, c-format msgid "VALUES lists \"%s\" have %d columns available but %d columns specified" msgstr "" -"les listes « %s » de VALUES ont %d colonnes disponibles mais %d colonnes\n" -"spécifiées" +"les listes « %s » de VALUES ont %d colonnes disponibles mais %d colonnes\n" +"spécifiées" -#: parser/parse_relation.c:1730 +#: parser/parse_relation.c:1731 #, c-format msgid "joins can have at most %d columns" msgstr "les jointures peuvent avoir au plus %d colonnes" -#: parser/parse_relation.c:1820 +#: parser/parse_relation.c:1821 #, c-format msgid "WITH query \"%s\" does not have a RETURNING clause" -msgstr "La requête WITH « %s » n'a pas de clause RETURNING" +msgstr "La requête WITH « %s » n'a pas de clause RETURNING" -#: parser/parse_relation.c:2652 parser/parse_relation.c:2807 +#: parser/parse_relation.c:2738 parser/parse_relation.c:2900 #, c-format msgid "column %d of relation \"%s\" does not exist" -msgstr "la colonne %d de la relation « %s » n'existe pas" +msgstr "la colonne %d de la relation « %s » n'existe pas" -#: parser/parse_relation.c:3026 +#: parser/parse_relation.c:3119 #, c-format msgid "Perhaps you meant to reference the table alias \"%s\"." -msgstr "Peut-être que vous souhaitiez référencer l'alias de la table « %s »." +msgstr "Peut-être que vous souhaitiez référencer l'alias de la table « %s »." -#: parser/parse_relation.c:3034 +#: parser/parse_relation.c:3127 #, c-format msgid "missing FROM-clause entry for table \"%s\"" -msgstr "entrée manquante de la clause FROM pour la table « %s »" +msgstr "entrée manquante de la clause FROM pour la table « %s »" -#: parser/parse_relation.c:3086 +#: parser/parse_relation.c:3179 #, c-format msgid "Perhaps you meant to reference the column \"%s.%s\"." -msgstr "Peut-être que vous souhaitiez référencer la colonne « %s.%s »." +msgstr "Peut-être que vous souhaitiez référencer la colonne « %s.%s »." -#: parser/parse_relation.c:3088 +#: parser/parse_relation.c:3181 #, c-format msgid "There is a column named \"%s\" in table \"%s\", but it cannot be referenced from this part of the query." -msgstr "Il existe une colonne nommée « %s » pour la table « %s » mais elle ne peut pas être référencée dans cette partie de la requête." +msgstr "Il existe une colonne nommée « %s » pour la table « %s » mais elle ne peut pas être référencée dans cette partie de la requête." -#: parser/parse_relation.c:3105 +#: parser/parse_relation.c:3198 #, c-format msgid "Perhaps you meant to reference the column \"%s.%s\" or the column \"%s.%s\"." -msgstr "Peut-être que vous souhaitiez référencer la colonne « %s.%s » ou la colonne « %s.%s »." +msgstr "Peut-être que vous souhaitiez référencer la colonne « %s.%s » ou la colonne « %s.%s »." -#: parser/parse_target.c:421 parser/parse_target.c:713 +#: parser/parse_target.c:432 parser/parse_target.c:724 #, c-format msgid "cannot assign to system column \"%s\"" -msgstr "ne peut pas affecter à une colonne système « %s »" +msgstr "ne peut pas affecter à une colonne système « %s »" -#: parser/parse_target.c:449 +#: parser/parse_target.c:460 #, c-format msgid "cannot set an array element to DEFAULT" -msgstr "ne peut pas initialiser un élément d'un tableau avec DEFAULT" +msgstr "ne peut pas initialiser un élément d'un tableau avec DEFAULT" -#: parser/parse_target.c:454 +#: parser/parse_target.c:465 #, c-format msgid "cannot set a subfield to DEFAULT" msgstr "ne peut pas initialiser un sous-champ avec DEFAULT" -#: parser/parse_target.c:523 +#: parser/parse_target.c:534 #, c-format msgid "column \"%s\" is of type %s but expression is of type %s" -msgstr "la colonne « %s » est de type %s mais l'expression est de type %s" +msgstr "la colonne « %s » est de type %s mais l'expression est de type %s" -#: parser/parse_target.c:697 +#: parser/parse_target.c:708 #, c-format msgid "cannot assign to field \"%s\" of column \"%s\" because its type %s is not a composite type" msgstr "" -"ne peut pas l'affecter au champ « %s » de la colonne « %s » parce que son\n" -"type %s n'est pas un type composé" +"ne peut pas l'affecter au champ « %s » de la colonne « %s » parce que son\n" +"type %s n'est pas un type composé" -#: parser/parse_target.c:706 +#: parser/parse_target.c:717 #, c-format msgid "cannot assign to field \"%s\" of column \"%s\" because there is no such column in data type %s" msgstr "" -"ne peut pas l'affecter au champ « %s » de la colonne « %s » parce qu'il n'existe\n" -"pas une telle colonne dans le type de données %s" +"ne peut pas l'affecter au champ « %s » de la colonne « %s » parce qu'il n'existe\n" +"pas une telle colonne dans le type de données %s" -#: parser/parse_target.c:773 +#: parser/parse_target.c:784 #, c-format msgid "array assignment to \"%s\" requires type %s but expression is of type %s" msgstr "" -"l'affectation d'un tableau avec « %s » requiert le type %s mais l'expression est\n" +"l'affectation d'un tableau avec « %s » requiert le type %s mais l'expression est\n" "de type %s" -#: parser/parse_target.c:783 +#: parser/parse_target.c:794 #, c-format msgid "subfield \"%s\" is of type %s but expression is of type %s" -msgstr "le sous-champ « %s » est de type %s mais l'expression est de type %s" +msgstr "le sous-champ « %s » est de type %s mais l'expression est de type %s" -#: parser/parse_target.c:1199 +#: parser/parse_target.c:1210 #, c-format msgid "SELECT * with no tables specified is not valid" -msgstr "Un SELECT * sans table spécifiée n'est pas valide" +msgstr "Un SELECT * sans table spécifiée n'est pas valide" #: parser/parse_type.c:83 #, c-format msgid "improper %%TYPE reference (too few dotted names): %s" -msgstr "référence %%TYPE invalide (trop peu de points entre les noms) : %s" +msgstr "référence %%TYPE invalide (trop peu de points entre les noms) : %s" #: parser/parse_type.c:105 #, c-format msgid "improper %%TYPE reference (too many dotted names): %s" -msgstr "référence %%TYPE invalide (trop de points entre les noms) : %s" +msgstr "référence %%TYPE invalide (trop de points entre les noms) : %s" #: parser/parse_type.c:140 #, c-format msgid "type reference %s converted to %s" -msgstr "référence de type %s convertie en %s" +msgstr "référence de type %s convertie en %s" #: parser/parse_type.c:261 parser/parse_type.c:805 utils/cache/typcache.c:239 #, c-format msgid "type \"%s\" is only a shell" -msgstr "le type « %s » est seulement un shell" +msgstr "le type « %s » est seulement un shell" #: parser/parse_type.c:346 #, c-format msgid "type modifier is not allowed for type \"%s\"" -msgstr "le modificateur de type n'est pas autorisé pour le type « %s »" +msgstr "le modificateur de type n'est pas autorisé pour le type « %s »" #: parser/parse_type.c:388 #, c-format msgid "type modifiers must be simple constants or identifiers" -msgstr "les modificateurs de type doivent être des constantes ou des identifiants" +msgstr "les modificateurs de type doivent être des constantes ou des identifiants" #: parser/parse_type.c:671 parser/parse_type.c:770 #, c-format msgid "invalid type name \"%s\"" -msgstr "nom de type « %s » invalide" +msgstr "nom de type « %s » invalide" -#: parser/parse_utilcmd.c:399 +#: parser/parse_utilcmd.c:384 #, c-format msgid "array of serial is not implemented" -msgstr "le tableau de type serial n'est pas implanté" +msgstr "le tableau de type serial n'est pas implanté" -#: parser/parse_utilcmd.c:447 +#: parser/parse_utilcmd.c:432 #, c-format msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\"" -msgstr "%s créera des séquences implicites « %s » pour la colonne serial « %s.%s »" +msgstr "%s créera des séquences implicites « %s » pour la colonne serial « %s.%s »" -#: parser/parse_utilcmd.c:541 parser/parse_utilcmd.c:553 +#: parser/parse_utilcmd.c:526 parser/parse_utilcmd.c:538 #, c-format msgid "conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\"" -msgstr "déclarations NULL/NOT NULL en conflit pour la colonne « %s » de la table « %s »" +msgstr "déclarations NULL/NOT NULL en conflit pour la colonne « %s » de la table « %s »" -#: parser/parse_utilcmd.c:565 +#: parser/parse_utilcmd.c:550 #, c-format msgid "multiple default values specified for column \"%s\" of table \"%s\"" msgstr "" -"plusieurs valeurs par défaut sont spécifiées pour la colonne « %s » de la table\n" -"« %s »" +"plusieurs valeurs par défaut sont spécifiées pour la colonne « %s » de la table\n" +"« %s »" -#: parser/parse_utilcmd.c:582 parser/parse_utilcmd.c:673 +#: parser/parse_utilcmd.c:567 parser/parse_utilcmd.c:658 #, c-format msgid "primary key constraints are not supported on foreign tables" -msgstr "les clés primaires ne sont pas supportées par les tables distantes" +msgstr "les clés primaires ne sont pas supportées par les tables distantes" -#: parser/parse_utilcmd.c:591 parser/parse_utilcmd.c:683 +#: parser/parse_utilcmd.c:576 parser/parse_utilcmd.c:668 #, c-format msgid "unique constraints are not supported on foreign tables" -msgstr "les contraintes uniques ne sont pas supportées par les tables distantes" +msgstr "les contraintes uniques ne sont pas supportées par les tables distantes" -#: parser/parse_utilcmd.c:608 parser/parse_utilcmd.c:707 +#: parser/parse_utilcmd.c:593 parser/parse_utilcmd.c:692 #, c-format msgid "foreign key constraints are not supported on foreign tables" -msgstr "les clés étrangères ne sont pas supportées par les tables distantes" +msgstr "les clés étrangères ne sont pas supportées par les tables distantes" -#: parser/parse_utilcmd.c:693 +#: parser/parse_utilcmd.c:678 #, c-format msgid "exclusion constraints are not supported on foreign tables" -msgstr "les contraintes d'exclusion ne sont pas supportées par les tables distantes" +msgstr "les contraintes d'exclusion ne sont pas supportées par les tables distantes" -#: parser/parse_utilcmd.c:757 +#: parser/parse_utilcmd.c:742 #, c-format msgid "LIKE is not supported for creating foreign tables" -msgstr "LIKE n'est pas supporté pour la création de tables distantes" +msgstr "LIKE n'est pas supporté pour la création de tables distantes" -#: parser/parse_utilcmd.c:1290 parser/parse_utilcmd.c:1366 +#: parser/parse_utilcmd.c:1275 parser/parse_utilcmd.c:1351 #, c-format msgid "Index \"%s\" contains a whole-row table reference." -msgstr "l'index « %s » contient une référence de table de ligne complète" +msgstr "l'index « %s » contient une référence de table de ligne complète" -#: parser/parse_utilcmd.c:1636 +#: parser/parse_utilcmd.c:1621 #, c-format msgid "cannot use an existing index in CREATE TABLE" msgstr "ne peut pas utiliser un index existant dans CREATE TABLE" -#: parser/parse_utilcmd.c:1656 +#: parser/parse_utilcmd.c:1641 #, c-format msgid "index \"%s\" is already associated with a constraint" -msgstr "l'index « %s » est déjà associé à une contrainte" +msgstr "l'index « %s » est déjà associé à une contrainte" -#: parser/parse_utilcmd.c:1664 +#: parser/parse_utilcmd.c:1649 #, c-format msgid "index \"%s\" does not belong to table \"%s\"" -msgstr "l'index « %s » n'appartient pas à la table « %s »" +msgstr "l'index « %s » n'appartient pas à la table « %s »" -#: parser/parse_utilcmd.c:1671 +#: parser/parse_utilcmd.c:1656 #, c-format msgid "index \"%s\" is not valid" -msgstr "l'index « %s » n'est pas valide" +msgstr "l'index « %s » n'est pas valide" -#: parser/parse_utilcmd.c:1677 +#: parser/parse_utilcmd.c:1662 #, c-format msgid "\"%s\" is not a unique index" -msgstr "« %s » n'est pas un index unique" +msgstr "« %s » n'est pas un index unique" -#: parser/parse_utilcmd.c:1678 parser/parse_utilcmd.c:1685 parser/parse_utilcmd.c:1692 parser/parse_utilcmd.c:1762 +#: parser/parse_utilcmd.c:1663 parser/parse_utilcmd.c:1670 parser/parse_utilcmd.c:1677 parser/parse_utilcmd.c:1747 #, c-format msgid "Cannot create a primary key or unique constraint using such an index." -msgstr "Ne peut pas créer une clé primaire ou une contrainte unique avec cet index." +msgstr "Ne peut pas créer une clé primaire ou une contrainte unique avec cet index." -#: parser/parse_utilcmd.c:1684 +#: parser/parse_utilcmd.c:1669 #, c-format msgid "index \"%s\" contains expressions" -msgstr "l'index « %s » contient des expressions" +msgstr "l'index « %s » contient des expressions" -#: parser/parse_utilcmd.c:1691 +#: parser/parse_utilcmd.c:1676 #, c-format msgid "\"%s\" is a partial index" -msgstr "« %s » est un index partiel" +msgstr "« %s » est un index partiel" -#: parser/parse_utilcmd.c:1703 +#: parser/parse_utilcmd.c:1688 #, c-format msgid "\"%s\" is a deferrable index" -msgstr "« %s » est un index déferrable" +msgstr "« %s » est un index déferrable" -#: parser/parse_utilcmd.c:1704 +#: parser/parse_utilcmd.c:1689 #, c-format msgid "Cannot create a non-deferrable constraint using a deferrable index." -msgstr "Ne peut pas créer une contrainte non-déferrable utilisant un index déferrable." +msgstr "Ne peut pas créer une contrainte non-déferrable utilisant un index déferrable." -#: parser/parse_utilcmd.c:1761 +#: parser/parse_utilcmd.c:1746 #, c-format msgid "index \"%s\" does not have default sorting behavior" -msgstr "l'index « %s » n'a pas de comportement de tri par défaut" +msgstr "l'index « %s » n'a pas de comportement de tri par défaut" -#: parser/parse_utilcmd.c:1908 +#: parser/parse_utilcmd.c:1893 #, c-format msgid "column \"%s\" appears twice in primary key constraint" -msgstr "la colonne « %s » apparaît deux fois dans la contrainte de la clé primaire" +msgstr "la colonne « %s » apparaît deux fois dans la contrainte de la clé primaire" -#: parser/parse_utilcmd.c:1914 +#: parser/parse_utilcmd.c:1899 #, c-format msgid "column \"%s\" appears twice in unique constraint" -msgstr "la colonne « %s » apparaît deux fois sur une contrainte unique" +msgstr "la colonne « %s » apparaît deux fois sur une contrainte unique" -#: parser/parse_utilcmd.c:2118 +#: parser/parse_utilcmd.c:2103 #, c-format msgid "index expression cannot return a set" msgstr "l'expression de l'index ne peut pas renvoyer un ensemble" -#: parser/parse_utilcmd.c:2129 +#: parser/parse_utilcmd.c:2114 #, c-format msgid "index expressions and predicates can refer only to the table being indexed" -msgstr "les expressions et prédicats d'index peuvent seulement faire référence à la table en cours d'indexage" +msgstr "les expressions et prédicats d'index peuvent seulement faire référence à la table en cours d'indexage" -#: parser/parse_utilcmd.c:2175 +#: parser/parse_utilcmd.c:2160 #, c-format msgid "rules on materialized views are not supported" -msgstr "les règles ne sont pas supportés sur les vues matérialisées" +msgstr "les règles ne sont pas supportés sur les vues matérialisées" -#: parser/parse_utilcmd.c:2236 +#: parser/parse_utilcmd.c:2221 #, c-format msgid "rule WHERE condition cannot contain references to other relations" msgstr "" -"la condition WHERE d'une règle ne devrait pas contenir de références à d'autres\n" +"la condition WHERE d'une règle ne devrait pas contenir de références à d'autres\n" "relations" -#: parser/parse_utilcmd.c:2308 +#: parser/parse_utilcmd.c:2293 #, c-format msgid "rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE actions" msgstr "" -"les règles avec des conditions WHERE ne peuvent contenir que des actions\n" +"les règles avec des conditions WHERE ne peuvent contenir que des actions\n" "SELECT, INSERT, UPDATE ou DELETE " -#: parser/parse_utilcmd.c:2326 parser/parse_utilcmd.c:2425 rewrite/rewriteHandler.c:485 rewrite/rewriteManip.c:1015 +#: parser/parse_utilcmd.c:2311 parser/parse_utilcmd.c:2410 rewrite/rewriteHandler.c:485 rewrite/rewriteManip.c:1015 #, c-format msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" msgstr "" "les instructions conditionnelles UNION/INTERSECT/EXCEPT ne sont pas\n" -"implémentées" +"implémentées" -#: parser/parse_utilcmd.c:2344 +#: parser/parse_utilcmd.c:2329 #, c-format msgid "ON SELECT rule cannot use OLD" -msgstr "la règle ON SELECT ne peut pas utiliser OLD" +msgstr "la règle ON SELECT ne peut pas utiliser OLD" -#: parser/parse_utilcmd.c:2348 +#: parser/parse_utilcmd.c:2333 #, c-format msgid "ON SELECT rule cannot use NEW" -msgstr "la règle ON SELECT ne peut pas utiliser NEW" +msgstr "la règle ON SELECT ne peut pas utiliser NEW" -#: parser/parse_utilcmd.c:2357 +#: parser/parse_utilcmd.c:2342 #, c-format msgid "ON INSERT rule cannot use OLD" -msgstr "la règle ON INSERT ne peut pas utiliser OLD" +msgstr "la règle ON INSERT ne peut pas utiliser OLD" -#: parser/parse_utilcmd.c:2363 +#: parser/parse_utilcmd.c:2348 #, c-format msgid "ON DELETE rule cannot use NEW" -msgstr "la règle ON INSERT ne peut pas utiliser NEW" +msgstr "la règle ON INSERT ne peut pas utiliser NEW" -#: parser/parse_utilcmd.c:2391 +#: parser/parse_utilcmd.c:2376 #, c-format msgid "cannot refer to OLD within WITH query" -msgstr "ne peut référencer OLD dans une requête WITH" +msgstr "ne peut référencer OLD dans une requête WITH" -#: parser/parse_utilcmd.c:2398 +#: parser/parse_utilcmd.c:2383 #, c-format msgid "cannot refer to NEW within WITH query" -msgstr "ne peut référencer NEW dans une requête WITH" +msgstr "ne peut référencer NEW dans une requête WITH" -#: parser/parse_utilcmd.c:2601 +#: parser/parse_utilcmd.c:2586 #, c-format msgid "transform expression must not return a set" msgstr "l'expression de transformation ne doit pas renvoyer un ensemble" -#: parser/parse_utilcmd.c:2715 +#: parser/parse_utilcmd.c:2700 #, c-format msgid "misplaced DEFERRABLE clause" -msgstr "clause DEFERRABLE mal placée" +msgstr "clause DEFERRABLE mal placée" -#: parser/parse_utilcmd.c:2720 parser/parse_utilcmd.c:2735 +#: parser/parse_utilcmd.c:2705 parser/parse_utilcmd.c:2720 #, c-format msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" -msgstr "clauses DEFERRABLE/NOT DEFERRABLE multiples non autorisées" +msgstr "clauses DEFERRABLE/NOT DEFERRABLE multiples non autorisées" -#: parser/parse_utilcmd.c:2730 +#: parser/parse_utilcmd.c:2715 #, c-format msgid "misplaced NOT DEFERRABLE clause" -msgstr "clause NOT DEFERRABLE mal placée" +msgstr "clause NOT DEFERRABLE mal placée" -#: parser/parse_utilcmd.c:2751 +#: parser/parse_utilcmd.c:2736 #, c-format msgid "misplaced INITIALLY DEFERRED clause" -msgstr "clause INITIALLY DEFERRED mal placée" +msgstr "clause INITIALLY DEFERRED mal placée" -#: parser/parse_utilcmd.c:2756 parser/parse_utilcmd.c:2782 +#: parser/parse_utilcmd.c:2741 parser/parse_utilcmd.c:2767 #, c-format msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" -msgstr "clauses INITIALLY IMMEDIATE/DEFERRED multiples non autorisées" +msgstr "clauses INITIALLY IMMEDIATE/DEFERRED multiples non autorisées" -#: parser/parse_utilcmd.c:2777 +#: parser/parse_utilcmd.c:2762 #, c-format msgid "misplaced INITIALLY IMMEDIATE clause" -msgstr "clause INITIALLY IMMEDIATE mal placée" +msgstr "clause INITIALLY IMMEDIATE mal placée" -#: parser/parse_utilcmd.c:2968 +#: parser/parse_utilcmd.c:2953 #, c-format msgid "CREATE specifies a schema (%s) different from the one being created (%s)" -msgstr "CREATE spécifie un schéma (%s) différent de celui tout juste créé (%s)" +msgstr "CREATE spécifie un schéma (%s) différent de celui tout juste créé (%s)" #: parser/scansup.c:204 #, c-format msgid "identifier \"%s\" will be truncated to \"%s\"" -msgstr "l'identifiant « %s » sera tronqué en « %s »" +msgstr "l'identifiant « %s » sera tronqué en « %s »" #: port/pg_sema.c:113 port/sysv_sema.c:113 #, c-format msgid "could not create semaphores: %m" -msgstr "n'a pas pu créer des sémaphores : %m" +msgstr "n'a pas pu créer des sémaphores : %m" #: port/pg_sema.c:114 port/sysv_sema.c:114 #, c-format msgid "Failed system call was semget(%lu, %d, 0%o)." -msgstr "L'appel système qui a échoué était semget(%lu, %d, 0%o)." +msgstr "L'appel système qui a échoué était semget(%lu, %d, 0%o)." #: port/pg_sema.c:118 port/sysv_sema.c:118 #, c-format @@ -14300,187 +14085,182 @@ msgid "" "The PostgreSQL documentation contains more information about configuring your system for PostgreSQL." msgstr "" "Cette erreur ne signifie *pas* que vous manquez d'espace disque. Il arrive\n" -"que soit la limite système du nombre maximum d'ensembles de sémaphores\n" -"(SEMMNI) ou le nombre maximum de sémaphores pour le système (SEMMNS) soit\n" -"dépassée. Vous avez besoin d'augmenter le paramètre noyau respectif.\n" -"Autrement, réduisez la consommation de sémaphores par PostgreSQL en réduisant\n" -"son paramètre max_connections.\n" +"que soit la limite système du nombre maximum d'ensembles de sémaphores\n" +"(SEMMNI) ou le nombre maximum de sémaphores pour le système (SEMMNS) soit\n" +"dépassée. Vous avez besoin d'augmenter le paramètre noyau respectif.\n" +"Autrement, réduisez la consommation de sémaphores par PostgreSQL en réduisant\n" +"son paramètre max_connections.\n" "La documentation de PostgreSQL contient plus d'informations sur la\n" -"configuration de votre système avec PostgreSQL." +"configuration de votre système avec PostgreSQL." #: port/pg_sema.c:148 port/sysv_sema.c:148 #, c-format msgid "You possibly need to raise your kernel's SEMVMX value to be at least %d. Look into the PostgreSQL documentation for details." msgstr "" "Vous pouvez avoir besoin d'augmenter la valeur SEMVMX par noyau pour valoir\n" -"au moins de %d. Regardez dans la documentation de PostgreSQL pour les détails." +"au moins de %d. Regardez dans la documentation de PostgreSQL pour les détails." -#: port/pg_shmem.c:141 port/sysv_shmem.c:141 +#: port/pg_shmem.c:195 port/sysv_shmem.c:195 #, c-format msgid "could not create shared memory segment: %m" -msgstr "n'a pas pu créer le segment de mémoire partagée : %m" +msgstr "n'a pas pu créer le segment de mémoire partagée : %m" -#: port/pg_shmem.c:142 port/sysv_shmem.c:142 +#: port/pg_shmem.c:196 port/sysv_shmem.c:196 #, c-format msgid "Failed system call was shmget(key=%lu, size=%zu, 0%o)." -msgstr "L'appel système qui a échoué était shmget(clé=%lu, taille=%zu, 0%o)." +msgstr "L'appel système qui a échoué était shmget(clé=%lu, taille=%zu, 0%o)." -#: port/pg_shmem.c:146 port/sysv_shmem.c:146 +#: port/pg_shmem.c:200 port/sysv_shmem.c:200 #, c-format msgid "" "This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter, or possibly that it is less than your kernel's SHMMIN parameter.\n" "The PostgreSQL documentation contains more information about shared memory configuration." msgstr "" -"Cette erreur signifie habituellement que la demande de PostgreSQL pour un segment de mémoire partagée dépasse la valeur du paramètre SHMMAX du noyau, ou est plus petite\n" -"que votre paramètre SHMMIN du noyau. La documentation PostgreSQL contient plus d'information sur la configuration de la mémoire partagée." +"Cette erreur signifie habituellement que la demande de PostgreSQL pour un segment de mémoire partagée dépasse la valeur du paramètre SHMMAX du noyau, ou est plus petite\n" +"que votre paramètre SHMMIN du noyau. La documentation PostgreSQL contient plus d'information sur la configuration de la mémoire partagée." -#: port/pg_shmem.c:153 port/sysv_shmem.c:153 +#: port/pg_shmem.c:207 port/sysv_shmem.c:207 #, c-format msgid "" "This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMALL parameter. You might need to reconfigure the kernel with larger SHMALL.\n" "The PostgreSQL documentation contains more information about shared memory configuration." msgstr "" -"Cette erreur signifie habituellement que la demande de PostgreSQL pour un segment de mémoire partagée dépasse le paramètre SHMALL du noyau. Vous pourriez avoir besoin de reconfigurer\n" -"le noyau avec un SHMALL plus important. La documentation PostgreSQL contient plus d'information sur la configuration de la mémoire partagée." +"Cette erreur signifie habituellement que la demande de PostgreSQL pour un segment de mémoire partagée dépasse le paramètre SHMALL du noyau. Vous pourriez avoir besoin de reconfigurer\n" +"le noyau avec un SHMALL plus important. La documentation PostgreSQL contient plus d'information sur la configuration de la mémoire partagée." -#: port/pg_shmem.c:159 port/sysv_shmem.c:159 +#: port/pg_shmem.c:213 port/sysv_shmem.c:213 #, c-format msgid "" "This error does *not* mean that you have run out of disk space. It occurs either if all available shared memory IDs have been taken, in which case you need to raise the SHMMNI parameter in your kernel, or because the system's overall limit for shared memory has been reached.\n" "The PostgreSQL documentation contains more information about shared memory configuration." msgstr "" -"Cette erreur ne signifie *pas* que vous manquez d'espace disque. Elle survient si tous les identifiants de mémoire partagé disponibles ont été pris, auquel cas vous devez augmenter le paramètre SHMMNI de votre noyau, ou parce que la limite maximum de la mémoire partagée\n" -"de votre système a été atteinte. La documentation de PostgreSQL contient plus d'informations sur la configuration de la mémoire partagée." +"Cette erreur ne signifie *pas* que vous manquez d'espace disque. Elle survient si tous les identifiants de mémoire partagé disponibles ont été pris, auquel cas vous devez augmenter le paramètre SHMMNI de votre noyau, ou parce que la limite maximum de la mémoire partagée\n" +"de votre système a été atteinte. La documentation de PostgreSQL contient plus d'informations sur la configuration de la mémoire partagée." -#: port/pg_shmem.c:340 port/sysv_shmem.c:340 -#, c-format -msgid "huge TLB pages not supported on this platform" -msgstr "Huge Pages TLB non supporté sur cette plateforme." - -#: port/pg_shmem.c:390 port/sysv_shmem.c:390 +#: port/pg_shmem.c:504 port/sysv_shmem.c:504 #, c-format msgid "could not map anonymous shared memory: %m" -msgstr "n'a pas pu créer le segment de mémoire partagée anonyme : %m" +msgstr "n'a pas pu créer le segment de mémoire partagée anonyme : %m" -#: port/pg_shmem.c:392 port/sysv_shmem.c:392 +#: port/pg_shmem.c:506 port/sysv_shmem.c:506 #, c-format msgid "This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory, swap space, or huge pages. To reduce the request size (currently %zu bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections." msgstr "" "Cette erreur signifie habituellement que la demande de PostgreSQL pour un\n" -"segment de mémoire partagée dépasse la mémoire disponible, l'espace swap ou\n" -"les Huge Pages. Pour réduire la taille demandée (actuellement %zu octets),\n" -"diminuez l'utilisation de la mémoire partagée, par exemple en réduisant la\n" -"valeur du paramètre shared_buffers de PostgreSQL ou le paramètre\n" +"segment de mémoire partagée dépasse la mémoire disponible, l'espace swap ou\n" +"les Huge Pages. Pour réduire la taille demandée (actuellement %zu octets),\n" +"diminuez l'utilisation de la mémoire partagée, par exemple en réduisant la\n" +"valeur du paramètre shared_buffers de PostgreSQL ou le paramètre\n" "max_connections." -#: port/pg_shmem.c:439 port/sysv_shmem.c:439 port/win32_shmem.c:134 +#: port/pg_shmem.c:572 port/sysv_shmem.c:572 port/win32_shmem.c:134 #, c-format msgid "huge pages not supported on this platform" -msgstr "Huge Pages non supporté sur cette plateforme" +msgstr "Huge Pages non supporté sur cette plateforme" -#: port/pg_shmem.c:553 port/sysv_shmem.c:553 +#: port/pg_shmem.c:667 port/sysv_shmem.c:667 #, c-format msgid "could not stat data directory \"%s\": %m" -msgstr "n'a pas pu lire les informations sur le répertoire des données « %s » : %m" +msgstr "n'a pas pu lire les informations sur le répertoire des données « %s » : %m" #: port/win32/crashdump.c:122 #, c-format msgid "could not load dbghelp.dll, cannot write crash dump\n" -msgstr "n'a pas pu charger dbghelp.dll, ne peut pas écrire le « crashdump »\n" +msgstr "n'a pas pu charger dbghelp.dll, ne peut pas écrire le « crashdump »\n" #: port/win32/crashdump.c:130 #, c-format msgid "could not load required functions in dbghelp.dll, cannot write crash dump\n" -msgstr "n'a pas pu charger les fonctions requises dans dbghelp.dll, ne peut pas écrire le « crashdump »\n" +msgstr "n'a pas pu charger les fonctions requises dans dbghelp.dll, ne peut pas écrire le « crashdump »\n" #: port/win32/crashdump.c:161 #, c-format msgid "could not open crash dump file \"%s\" for writing: error code %lu\n" -msgstr "n'a pas pu ouvrir le fichier « crashdump » « %s » en écriture : code d'erreur %lu\n" +msgstr "n'a pas pu ouvrir le fichier « crashdump » « %s » en écriture : code d'erreur %lu\n" #: port/win32/crashdump.c:168 #, c-format msgid "wrote crash dump to file \"%s\"\n" -msgstr "a écrit le « crash dump » dans le fichier « %s »\n" +msgstr "a écrit le « crash dump » dans le fichier « %s »\n" #: port/win32/crashdump.c:170 #, c-format msgid "could not write crash dump to file \"%s\": error code %lu\n" -msgstr "n'a pas pu écrire le « crashdump » dans le fichier « %s » : code d'erreur %lu\n" +msgstr "n'a pas pu écrire le « crashdump » dans le fichier « %s » : code d'erreur %lu\n" #: port/win32/signal.c:194 #, c-format msgid "could not create signal listener pipe for PID %d: error code %lu" msgstr "" -"n'a pas pu créer le tube d'écoute de signal pour l'identifiant de processus %d :\n" +"n'a pas pu créer le tube d'écoute de signal pour l'identifiant de processus %d :\n" "code d'erreur %lu" #: port/win32/signal.c:274 port/win32/signal.c:306 #, c-format msgid "could not create signal listener pipe: error code %lu; retrying\n" -msgstr "n'a pas pu créer le tube d'écoute de signal : code d'erreur %lu ; nouvelle tentative\n" +msgstr "n'a pas pu créer le tube d'écoute de signal : code d'erreur %lu ; nouvelle tentative\n" #: port/win32/signal.c:317 #, c-format msgid "could not create signal dispatch thread: error code %lu\n" -msgstr "n'a pas pu créer le thread de répartition des signaux : code d'erreur %lu\n" +msgstr "n'a pas pu créer le thread de répartition des signaux : code d'erreur %lu\n" #: port/win32_sema.c:94 #, c-format msgid "could not create semaphore: error code %lu" -msgstr "n'a pas pu créer la sémaphore : code d'erreur %lu" +msgstr "n'a pas pu créer la sémaphore : code d'erreur %lu" #: port/win32_sema.c:167 #, c-format msgid "could not lock semaphore: error code %lu" -msgstr "n'a pas pu verrouiller la sémaphore : code d'erreur %lu" +msgstr "n'a pas pu verrouiller la sémaphore : code d'erreur %lu" #: port/win32_sema.c:187 #, c-format msgid "could not unlock semaphore: error code %lu" -msgstr "n'a pas pu déverrouiller la sémaphore : code d'erreur %lu" +msgstr "n'a pas pu déverrouiller la sémaphore : code d'erreur %lu" #: port/win32_sema.c:216 #, c-format msgid "could not try-lock semaphore: error code %lu" -msgstr "n'a pas pu tenter le verrouillage de la sémaphore : code d'erreur %lu" +msgstr "n'a pas pu tenter le verrouillage de la sémaphore : code d'erreur %lu" #: port/win32_shmem.c:173 port/win32_shmem.c:208 port/win32_shmem.c:226 #, c-format msgid "could not create shared memory segment: error code %lu" -msgstr "n'a pas pu créer le segment de mémoire partagée : code d'erreur %lu" +msgstr "n'a pas pu créer le segment de mémoire partagée : code d'erreur %lu" #: port/win32_shmem.c:174 #, c-format msgid "Failed system call was CreateFileMapping(size=%zu, name=%s)." -msgstr "L'appel système qui a échoué était CreateFileMapping(taille=%zu, nom=%s)." +msgstr "L'appel système qui a échoué était CreateFileMapping(taille=%zu, nom=%s)." #: port/win32_shmem.c:198 #, c-format msgid "pre-existing shared memory block is still in use" -msgstr "le bloc de mémoire partagé pré-existant est toujours en cours d'utilisation" +msgstr "le bloc de mémoire partagé pré-existant est toujours en cours d'utilisation" #: port/win32_shmem.c:199 #, c-format msgid "Check if there are any old server processes still running, and terminate them." msgstr "" -"Vérifier s'il n'y a pas de vieux processus serveur en cours d'exécution. Si c'est le\n" +"Vérifier s'il n'y a pas de vieux processus serveur en cours d'exécution. Si c'est le\n" "cas, fermez-les." #: port/win32_shmem.c:209 #, c-format msgid "Failed system call was DuplicateHandle." -msgstr "L'appel système qui a échoué était DuplicateHandle." +msgstr "L'appel système qui a échoué était DuplicateHandle." #: port/win32_shmem.c:227 #, c-format msgid "Failed system call was MapViewOfFileEx." -msgstr "L'appel système qui a échoué était MapViewOfFileEx." +msgstr "L'appel système qui a échoué était MapViewOfFileEx." #: postmaster/autovacuum.c:380 #, c-format msgid "could not fork autovacuum launcher process: %m" -msgstr "n'a pas pu exécuter le processus autovacuum maître : %m" +msgstr "n'a pas pu exécuter le processus autovacuum maître : %m" #: postmaster/autovacuum.c:416 #, c-format @@ -14490,146 +14270,146 @@ msgstr "lancement du processus autovacuum" #: postmaster/autovacuum.c:779 #, c-format msgid "autovacuum launcher shutting down" -msgstr "arrêt du processus autovacuum" +msgstr "arrêt du processus autovacuum" #: postmaster/autovacuum.c:1441 #, c-format msgid "could not fork autovacuum worker process: %m" -msgstr "n'a pas pu exécuter le processus autovacuum worker : %m" +msgstr "n'a pas pu exécuter le processus autovacuum worker : %m" #: postmaster/autovacuum.c:1639 #, c-format msgid "autovacuum: processing database \"%s\"" -msgstr "autovacuum : traitement de la base de données « %s »" +msgstr "autovacuum : traitement de la base de données « %s »" -#: postmaster/autovacuum.c:2050 +#: postmaster/autovacuum.c:2052 #, c-format msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\"" msgstr "" -"autovacuum : suppression de la table temporaire orpheline « %s.%s » dans la\n" -"base de données « %s »" +"autovacuum : suppression de la table temporaire orpheline « %s.%s » dans la\n" +"base de données « %s »" -#: postmaster/autovacuum.c:2062 +#: postmaster/autovacuum.c:2064 #, c-format msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\"" msgstr "" -"autovacuum : a trouvé la table temporaire orpheline « %s.%s » dans la base de\n" -"données « %s »" +"autovacuum : a trouvé la table temporaire orpheline « %s.%s » dans la base de\n" +"données « %s »" -#: postmaster/autovacuum.c:2344 +#: postmaster/autovacuum.c:2347 #, c-format msgid "automatic vacuum of table \"%s.%s.%s\"" -msgstr "VACUUM automatique de la table « %s.%s.%s »" +msgstr "VACUUM automatique de la table « %s.%s.%s »" -#: postmaster/autovacuum.c:2347 +#: postmaster/autovacuum.c:2350 #, c-format msgid "automatic analyze of table \"%s.%s.%s\"" -msgstr "ANALYZE automatique de la table « %s.%s.%s »" +msgstr "ANALYZE automatique de la table « %s.%s.%s »" -#: postmaster/autovacuum.c:2877 +#: postmaster/autovacuum.c:2899 #, c-format msgid "autovacuum not started because of misconfiguration" -msgstr "autovacuum non exécuté à cause d'une mauvaise configuration" +msgstr "autovacuum non exécuté à cause d'une mauvaise configuration" -#: postmaster/autovacuum.c:2878 +#: postmaster/autovacuum.c:2900 #, c-format msgid "Enable the \"track_counts\" option." -msgstr "Activez l'option « track_counts »." +msgstr "Activez l'option « track_counts »." -#: postmaster/bgworker.c:346 postmaster/bgworker.c:746 +#: postmaster/bgworker.c:367 postmaster/bgworker.c:762 #, c-format msgid "registering background worker \"%s\"" -msgstr "enregistrement du processus en tâche de fond « %s »" +msgstr "enregistrement du processus en tâche de fond « %s »" -#: postmaster/bgworker.c:375 +#: postmaster/bgworker.c:396 #, c-format msgid "unregistering background worker \"%s\"" -msgstr "désenregistrement du processus en tâche de fond « %s »" +msgstr "désenregistrement du processus en tâche de fond « %s »" -#: postmaster/bgworker.c:484 +#: postmaster/bgworker.c:505 #, c-format msgid "background worker \"%s\": must attach to shared memory in order to request a database connection" -msgstr "processus en tâche de fond « %s » : doit se lier à la mémoire partagée pour être capable de demander une connexion à une base" +msgstr "processus en tâche de fond « %s » : doit se lier à la mémoire partagée pour être capable de demander une connexion à une base" -#: postmaster/bgworker.c:493 +#: postmaster/bgworker.c:514 #, c-format msgid "background worker \"%s\": cannot request database access if starting at postmaster start" -msgstr "processus en tâche de fond « %s » : ne peut pas réclamer un accès à la base s'il s'exécute au lancement de postmaster" +msgstr "processus en tâche de fond « %s » : ne peut pas réclamer un accès à la base s'il s'exécute au lancement de postmaster" -#: postmaster/bgworker.c:507 +#: postmaster/bgworker.c:528 #, c-format msgid "background worker \"%s\": invalid restart interval" -msgstr "processus en tâche de fond « %s »: intervalle de redémarrage invalide" +msgstr "processus en tâche de fond « %s »: intervalle de redémarrage invalide" -#: postmaster/bgworker.c:552 +#: postmaster/bgworker.c:573 #, c-format msgid "terminating background worker \"%s\" due to administrator command" -msgstr "arrêt du processus en tâche de fond « %s » suite à la demande de l'administrateur" +msgstr "arrêt du processus en tâche de fond « %s » suite à la demande de l'administrateur" -#: postmaster/bgworker.c:753 +#: postmaster/bgworker.c:769 #, c-format msgid "background worker \"%s\": must be registered in shared_preload_libraries" -msgstr "processus en tâche de fond « %s » : doit être enregistré dans shared_preload_libraries" +msgstr "processus en tâche de fond « %s » : doit être enregistré dans shared_preload_libraries" -#: postmaster/bgworker.c:765 +#: postmaster/bgworker.c:781 #, c-format msgid "background worker \"%s\": only dynamic background workers can request notification" -msgstr "processus en tâche de fond « %s » : seuls les processus utilisateurs en tâche de fond dynamiques peuvent réclamer des notifications" +msgstr "processus en tâche de fond « %s » : seuls les processus utilisateurs en tâche de fond dynamiques peuvent réclamer des notifications" -#: postmaster/bgworker.c:780 +#: postmaster/bgworker.c:796 #, c-format msgid "too many background workers" -msgstr "trop de processus en tâche de fond" +msgstr "trop de processus en tâche de fond" -#: postmaster/bgworker.c:781 +#: postmaster/bgworker.c:797 #, c-format msgid "Up to %d background worker can be registered with the current settings." msgid_plural "Up to %d background workers can be registered with the current settings." -msgstr[0] "Un maximum de %d processus en tâche de fond peut être enregistré avec la configuration actuelle" -msgstr[1] "Un maximum de %d processus en tâche de fond peut être enregistré avec la configuration actuelle" +msgstr[0] "Un maximum de %d processus en tâche de fond peut être enregistré avec la configuration actuelle" +msgstr[1] "Un maximum de %d processus en tâche de fond peut être enregistré avec la configuration actuelle" -#: postmaster/bgworker.c:785 +#: postmaster/bgworker.c:801 #, c-format msgid "Consider increasing the configuration parameter \"max_worker_processes\"." -msgstr "Considérez l'augmentation du paramètre « max_worker_processes »." +msgstr "Considérez l'augmentation du paramètre « max_worker_processes »." #: postmaster/checkpointer.c:463 #, c-format msgid "checkpoints are occurring too frequently (%d second apart)" msgid_plural "checkpoints are occurring too frequently (%d seconds apart)" msgstr[0] "" -"les points de vérification (checkpoints) arrivent trop fréquemment\n" +"les points de vérification (checkpoints) arrivent trop fréquemment\n" "(toutes les %d seconde)" msgstr[1] "" -"les points de vérification (checkpoints) arrivent trop fréquemment\n" +"les points de vérification (checkpoints) arrivent trop fréquemment\n" "(toutes les %d secondes)" #: postmaster/checkpointer.c:467 #, c-format msgid "Consider increasing the configuration parameter \"max_wal_size\"." -msgstr "Considérez l'augmentation du paramètre « max_wal_size »." +msgstr "Considérez l'augmentation du paramètre « max_wal_size »." #: postmaster/checkpointer.c:614 #, c-format msgid "transaction log switch forced (archive_timeout=%d)" -msgstr "changement forcé du journal de transaction (archive_timeout=%d)" +msgstr "changement forcé du journal de transaction (archive_timeout=%d)" #: postmaster/checkpointer.c:1072 #, c-format msgid "checkpoint request failed" -msgstr "échec de la demande de point de vérification" +msgstr "échec de la demande de point de vérification" #: postmaster/checkpointer.c:1073 #, c-format msgid "Consult recent messages in the server log for details." msgstr "" -"Consultez les messages récents du serveur dans les journaux applicatifs pour\n" -"plus de détails." +"Consultez les messages récents du serveur dans les journaux applicatifs pour\n" +"plus de détails." #: postmaster/checkpointer.c:1268 #, c-format msgid "compacted fsync request queue from %d entries to %d entries" -msgstr "a compacté la queue de requêtes fsync de %d entrées à %d" +msgstr "a compacté la queue de requêtes fsync de %d entrées à %d" #: postmaster/pgarch.c:149 #, c-format @@ -14639,747 +14419,757 @@ msgstr "n'a pas pu lancer le processus fils correspondant au processus d'archiva #: postmaster/pgarch.c:456 #, c-format msgid "archive_mode enabled, yet archive_command is not set" -msgstr "archive_mode activé, cependant archive_command n'est pas configuré" +msgstr "archive_mode activé, cependant archive_command n'est pas configuré" #: postmaster/pgarch.c:484 #, c-format msgid "archiving transaction log file \"%s\" failed too many times, will try again later" -msgstr "l'archivage du journal de transactions « %s » a échoué trop de fois, nouvelle tentative repoussée" +msgstr "l'archivage du journal de transactions « %s » a échoué trop de fois, nouvelle tentative repoussée" #: postmaster/pgarch.c:587 #, c-format msgid "archive command failed with exit code %d" -msgstr "échec de la commande d'archivage avec un code de retour %d" +msgstr "échec de la commande d'archivage avec un code de retour %d" #: postmaster/pgarch.c:589 postmaster/pgarch.c:599 postmaster/pgarch.c:606 postmaster/pgarch.c:612 postmaster/pgarch.c:621 #, c-format msgid "The failed archive command was: %s" -msgstr "La commande d'archivage qui a échoué était : %s" +msgstr "La commande d'archivage qui a échoué était : %s" #: postmaster/pgarch.c:596 #, c-format msgid "archive command was terminated by exception 0x%X" -msgstr "la commande d'archivage a été terminée par l'exception 0x%X" +msgstr "la commande d'archivage a été terminée par l'exception 0x%X" -#: postmaster/pgarch.c:598 postmaster/postmaster.c:3490 +#: postmaster/pgarch.c:598 postmaster/postmaster.c:3514 #, c-format msgid "See C include file \"ntstatus.h\" for a description of the hexadecimal value." msgstr "" -"Voir le fichier d'en-tête C « ntstatus.h » pour une description de la valeur\n" -"hexadécimale." +"Voir le fichier d'en-tête C « ntstatus.h » pour une description de la valeur\n" +"hexadécimale." #: postmaster/pgarch.c:603 #, c-format msgid "archive command was terminated by signal %d: %s" -msgstr "la commande d'archivage a été terminée par le signal %d : %s" +msgstr "la commande d'archivage a été terminée par le signal %d : %s" #: postmaster/pgarch.c:610 #, c-format msgid "archive command was terminated by signal %d" -msgstr "la commande d'archivage a été terminée par le signal %d" +msgstr "la commande d'archivage a été terminée par le signal %d" #: postmaster/pgarch.c:619 #, c-format msgid "archive command exited with unrecognized status %d" -msgstr "la commande d'archivage a quitté avec le statut non reconnu %d" +msgstr "la commande d'archivage a quitté avec le statut non reconnu %d" #: postmaster/pgarch.c:631 #, c-format msgid "archived transaction log file \"%s\"" -msgstr "journal des transactions archivé « %s »" +msgstr "journal des transactions archivé « %s »" #: postmaster/pgarch.c:680 #, c-format msgid "could not open archive status directory \"%s\": %m" -msgstr "n'a pas pu accéder au répertoire du statut des archives « %s » : %m" +msgstr "n'a pas pu accéder au répertoire du statut des archives « %s » : %m" -#: postmaster/pgstat.c:352 +#: postmaster/pgstat.c:358 #, c-format msgid "could not resolve \"localhost\": %s" -msgstr "n'a pas pu résoudre « localhost » : %s" +msgstr "n'a pas pu résoudre « localhost » : %s" -#: postmaster/pgstat.c:375 +#: postmaster/pgstat.c:381 #, c-format msgid "trying another address for the statistics collector" -msgstr "nouvelle tentative avec une autre adresse pour le récupérateur de statistiques" +msgstr "nouvelle tentative avec une autre adresse pour le récupérateur de statistiques" -#: postmaster/pgstat.c:384 +#: postmaster/pgstat.c:390 #, c-format msgid "could not create socket for statistics collector: %m" -msgstr "n'a pas pu créer la socket pour le récupérateur de statistiques : %m" +msgstr "n'a pas pu créer la socket pour le récupérateur de statistiques : %m" -#: postmaster/pgstat.c:396 +#: postmaster/pgstat.c:402 #, c-format msgid "could not bind socket for statistics collector: %m" -msgstr "n'a pas pu lier la socket au récupérateur de statistiques : %m" +msgstr "n'a pas pu lier la socket au récupérateur de statistiques : %m" -#: postmaster/pgstat.c:407 +#: postmaster/pgstat.c:413 #, c-format msgid "could not get address of socket for statistics collector: %m" -msgstr "n'a pas pu obtenir l'adresse de la socket du récupérateur de statistiques : %m" +msgstr "n'a pas pu obtenir l'adresse de la socket du récupérateur de statistiques : %m" -#: postmaster/pgstat.c:423 +#: postmaster/pgstat.c:429 #, c-format msgid "could not connect socket for statistics collector: %m" -msgstr "n'a pas pu connecter la socket au récupérateur de statistiques : %m" +msgstr "n'a pas pu connecter la socket au récupérateur de statistiques : %m" -#: postmaster/pgstat.c:444 +#: postmaster/pgstat.c:450 #, c-format msgid "could not send test message on socket for statistics collector: %m" msgstr "" -"n'a pas pu envoyer le message de tests sur la socket du récupérateur de\n" +"n'a pas pu envoyer le message de tests sur la socket du récupérateur de\n" "statistiques : %m" -#: postmaster/pgstat.c:470 +#: postmaster/pgstat.c:476 #, c-format msgid "select() failed in statistics collector: %m" -msgstr "échec du select() dans le récupérateur de statistiques : %m" +msgstr "échec du select() dans le récupérateur de statistiques : %m" -#: postmaster/pgstat.c:485 +#: postmaster/pgstat.c:491 #, c-format msgid "test message did not get through on socket for statistics collector" msgstr "" -"le message de test n'a pas pu arriver sur la socket du récupérateur de\n" +"le message de test n'a pas pu arriver sur la socket du récupérateur de\n" "statistiques : %m" -#: postmaster/pgstat.c:500 +#: postmaster/pgstat.c:506 #, c-format msgid "could not receive test message on socket for statistics collector: %m" msgstr "" -"n'a pas pu recevoir le message de tests sur la socket du récupérateur de\n" +"n'a pas pu recevoir le message de tests sur la socket du récupérateur de\n" "statistiques : %m" -#: postmaster/pgstat.c:510 +#: postmaster/pgstat.c:516 #, c-format msgid "incorrect test message transmission on socket for statistics collector" msgstr "" -"transmission incorrecte du message de tests sur la socket du récupérateur de\n" +"transmission incorrecte du message de tests sur la socket du récupérateur de\n" "statistiques" -#: postmaster/pgstat.c:533 +#: postmaster/pgstat.c:539 #, c-format msgid "could not set statistics collector socket to nonblocking mode: %m" msgstr "" -"n'a pas pu initialiser la socket du récupérateur de statistiques dans le mode\n" +"n'a pas pu initialiser la socket du récupérateur de statistiques dans le mode\n" "non bloquant : %m" -#: postmaster/pgstat.c:543 +#: postmaster/pgstat.c:578 #, c-format msgid "disabling statistics collector for lack of working socket" msgstr "" -"désactivation du récupérateur de statistiques à cause du manque de socket\n" +"désactivation du récupérateur de statistiques à cause du manque de socket\n" "fonctionnel" -#: postmaster/pgstat.c:690 +#: postmaster/pgstat.c:725 #, c-format msgid "could not fork statistics collector: %m" msgstr "" -"n'a pas pu lancer le processus fils correspondant au récupérateur de\n" +"n'a pas pu lancer le processus fils correspondant au récupérateur de\n" "statistiques : %m" -#: postmaster/pgstat.c:1258 +#: postmaster/pgstat.c:1293 #, c-format msgid "unrecognized reset target: \"%s\"" -msgstr "cible reset non reconnu : « %s »" +msgstr "cible reset non reconnu : « %s »" -#: postmaster/pgstat.c:1259 +#: postmaster/pgstat.c:1294 #, c-format msgid "Target must be \"archiver\" or \"bgwriter\"." -msgstr "La cible doit être « archiver » ou « bgwriter »." +msgstr "La cible doit être « archiver » ou « bgwriter »." -#: postmaster/pgstat.c:3579 +#: postmaster/pgstat.c:3619 #, c-format msgid "could not read statistics message: %m" msgstr "n'a pas pu lire le message des statistiques : %m" -#: postmaster/pgstat.c:3910 postmaster/pgstat.c:4067 +#: postmaster/pgstat.c:3950 postmaster/pgstat.c:4107 #, c-format msgid "could not open temporary statistics file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier temporaire des statistiques « %s » : %m" +msgstr "n'a pas pu ouvrir le fichier temporaire des statistiques « %s » : %m" -#: postmaster/pgstat.c:3977 postmaster/pgstat.c:4112 +#: postmaster/pgstat.c:4017 postmaster/pgstat.c:4152 #, c-format msgid "could not write temporary statistics file \"%s\": %m" -msgstr "n'a pas pu écrire le fichier temporaire des statistiques « %s » : %m" +msgstr "n'a pas pu écrire le fichier temporaire des statistiques « %s » : %m" -#: postmaster/pgstat.c:3986 postmaster/pgstat.c:4121 +#: postmaster/pgstat.c:4026 postmaster/pgstat.c:4161 #, c-format msgid "could not close temporary statistics file \"%s\": %m" -msgstr "n'a pas pu fermer le fichier temporaire des statistiques « %s » : %m" +msgstr "n'a pas pu fermer le fichier temporaire des statistiques « %s » : %m" -#: postmaster/pgstat.c:3994 postmaster/pgstat.c:4129 +#: postmaster/pgstat.c:4034 postmaster/pgstat.c:4169 #, c-format msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m" msgstr "" -"n'a pas pu renommer le fichier temporaire des statistiques « %s » en\n" -"« %s » : %m" +"n'a pas pu renommer le fichier temporaire des statistiques « %s » en\n" +"« %s » : %m" -#: postmaster/pgstat.c:4218 postmaster/pgstat.c:4403 postmaster/pgstat.c:4556 +#: postmaster/pgstat.c:4258 postmaster/pgstat.c:4464 postmaster/pgstat.c:4617 #, c-format msgid "could not open statistics file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier de statistiques « %s » : %m" +msgstr "n'a pas pu ouvrir le fichier de statistiques « %s » : %m" -#: postmaster/pgstat.c:4230 postmaster/pgstat.c:4240 postmaster/pgstat.c:4250 postmaster/pgstat.c:4271 postmaster/pgstat.c:4286 postmaster/pgstat.c:4340 postmaster/pgstat.c:4415 postmaster/pgstat.c:4435 postmaster/pgstat.c:4453 postmaster/pgstat.c:4469 postmaster/pgstat.c:4487 postmaster/pgstat.c:4503 postmaster/pgstat.c:4568 postmaster/pgstat.c:4580 postmaster/pgstat.c:4592 postmaster/pgstat.c:4617 postmaster/pgstat.c:4639 +#: postmaster/pgstat.c:4270 postmaster/pgstat.c:4280 postmaster/pgstat.c:4301 postmaster/pgstat.c:4323 postmaster/pgstat.c:4338 postmaster/pgstat.c:4401 postmaster/pgstat.c:4476 postmaster/pgstat.c:4496 postmaster/pgstat.c:4514 postmaster/pgstat.c:4530 postmaster/pgstat.c:4548 postmaster/pgstat.c:4564 postmaster/pgstat.c:4629 postmaster/pgstat.c:4641 postmaster/pgstat.c:4653 postmaster/pgstat.c:4678 postmaster/pgstat.c:4700 #, c-format msgid "corrupted statistics file \"%s\"" -msgstr "fichier de statistiques « %s » corrompu" +msgstr "fichier de statistiques « %s » corrompu" -#: postmaster/pgstat.c:4768 +#: postmaster/pgstat.c:4829 #, c-format msgid "using stale statistics instead of current ones because stats collector is not responding" msgstr "" -"utilise de vieilles statistiques à la place des actuelles car le collecteur de\n" -"statistiques ne répond pas" +"utilise de vieilles statistiques à la place des actuelles car le collecteur de\n" +"statistiques ne répond pas" -#: postmaster/pgstat.c:5095 +#: postmaster/pgstat.c:5156 #, c-format msgid "database hash table corrupted during cleanup --- abort" msgstr "" -"corruption de la table hachée de la base de données lors du lancement\n" +"corruption de la table hachée de la base de données lors du lancement\n" "--- annulation" -#: postmaster/postmaster.c:684 +#: postmaster/postmaster.c:702 #, c-format msgid "%s: invalid argument for option -f: \"%s\"\n" -msgstr "%s : argument invalide pour l'option -f : « %s »\n" +msgstr "%s : argument invalide pour l'option -f : « %s »\n" -#: postmaster/postmaster.c:770 +#: postmaster/postmaster.c:788 #, c-format msgid "%s: invalid argument for option -t: \"%s\"\n" -msgstr "%s : argument invalide pour l'option -t : « %s »\n" +msgstr "%s : argument invalide pour l'option -t : « %s »\n" -#: postmaster/postmaster.c:821 +#: postmaster/postmaster.c:839 #, c-format msgid "%s: invalid argument: \"%s\"\n" -msgstr "%s : argument invalide : « %s »\n" +msgstr "%s : argument invalide : « %s »\n" -#: postmaster/postmaster.c:860 +#: postmaster/postmaster.c:878 #, c-format msgid "%s: superuser_reserved_connections must be less than max_connections\n" -msgstr "%s : superuser_reserved_connections doit être inférieur à max_connections\n" +msgstr "%s : superuser_reserved_connections doit être inférieur à max_connections\n" -#: postmaster/postmaster.c:865 +#: postmaster/postmaster.c:883 #, c-format msgid "%s: max_wal_senders must be less than max_connections\n" -msgstr "%s : max_wal_senders doit être inférieur à max_connections\n" +msgstr "%s : max_wal_senders doit être inférieur à max_connections\n" -#: postmaster/postmaster.c:870 +#: postmaster/postmaster.c:888 #, c-format msgid "WAL archival cannot be enabled when wal_level is \"minimal\"" -msgstr "L'archivage des journaux de transactions ne peut pas être activé quand wal_level vaut « minimal »" +msgstr "L'archivage des journaux de transactions ne peut pas être activé quand wal_level vaut « minimal »" -#: postmaster/postmaster.c:873 +#: postmaster/postmaster.c:891 #, c-format msgid "WAL streaming (max_wal_senders > 0) requires wal_level \"replica\" or \"logical\"" msgstr "" -"l'envoi d'un flux de transactions (max_wal_senders > 0) nécessite que\n" -"le paramètre wal_level soit initialisé avec « replica » ou « logical »" +"l'envoi d'un flux de transactions (max_wal_senders > 0) nécessite que\n" +"le paramètre wal_level soit initialisé avec « replica » ou « logical »" -#: postmaster/postmaster.c:881 +#: postmaster/postmaster.c:899 #, c-format msgid "%s: invalid datetoken tables, please fix\n" msgstr "%s : tables datetoken invalide, merci de corriger\n" -#: postmaster/postmaster.c:973 postmaster/postmaster.c:1071 utils/init/miscinit.c:1429 +#: postmaster/postmaster.c:991 postmaster/postmaster.c:1089 utils/init/miscinit.c:1429 #, c-format msgid "invalid list syntax in parameter \"%s\"" -msgstr "syntaxe de liste invalide pour le paramètre « %s »" +msgstr "syntaxe de liste invalide pour le paramètre « %s »" -#: postmaster/postmaster.c:1004 +#: postmaster/postmaster.c:1022 #, c-format msgid "could not create listen socket for \"%s\"" -msgstr "n'a pas pu créer le socket d'écoute pour « %s »" +msgstr "n'a pas pu créer le socket d'écoute pour « %s »" -#: postmaster/postmaster.c:1010 +#: postmaster/postmaster.c:1028 #, c-format msgid "could not create any TCP/IP sockets" -msgstr "n'a pas pu créer de socket TCP/IP" +msgstr "n'a pas pu créer de socket TCP/IP" -#: postmaster/postmaster.c:1093 +#: postmaster/postmaster.c:1111 #, c-format msgid "could not create Unix-domain socket in directory \"%s\"" -msgstr "n'a pas pu créer la socket de domaine Unix dans le répertoire « %s »" +msgstr "n'a pas pu créer la socket de domaine Unix dans le répertoire « %s »" -#: postmaster/postmaster.c:1099 +#: postmaster/postmaster.c:1117 #, c-format msgid "could not create any Unix-domain sockets" -msgstr "n'a pas pu créer les sockets de domaine Unix" +msgstr "n'a pas pu créer les sockets de domaine Unix" -#: postmaster/postmaster.c:1111 +#: postmaster/postmaster.c:1129 #, c-format msgid "no socket created for listening" -msgstr "pas de socket créé pour l'écoute" +msgstr "pas de socket créé pour l'écoute" -#: postmaster/postmaster.c:1151 +#: postmaster/postmaster.c:1169 #, c-format msgid "could not create I/O completion port for child queue" -msgstr "n'a pas pu créer un port de terminaison I/O pour la queue" +msgstr "n'a pas pu créer un port de terminaison I/O pour la queue" -#: postmaster/postmaster.c:1180 +#: postmaster/postmaster.c:1198 #, c-format msgid "%s: could not change permissions of external PID file \"%s\": %s\n" -msgstr "%s : n'a pas pu modifier les droits du fichier PID externe « %s » : %s\n" +msgstr "%s : n'a pas pu modifier les droits du fichier PID externe « %s » : %s\n" -#: postmaster/postmaster.c:1184 +#: postmaster/postmaster.c:1202 #, c-format msgid "%s: could not write external PID file \"%s\": %s\n" -msgstr "%s : n'a pas pu écrire le fichier PID externe « %s » : %s\n" +msgstr "%s : n'a pas pu écrire le fichier PID externe « %s » : %s\n" -#: postmaster/postmaster.c:1234 +#: postmaster/postmaster.c:1252 #, c-format msgid "ending log output to stderr" -msgstr "arrêt des traces sur stderr" +msgstr "arrêt des traces sur stderr" -#: postmaster/postmaster.c:1235 +#: postmaster/postmaster.c:1253 #, c-format msgid "Future log output will go to log destination \"%s\"." -msgstr "Les traces suivantes iront sur « %s »." +msgstr "Les traces suivantes iront sur « %s »." -#: postmaster/postmaster.c:1261 utils/init/postinit.c:213 +#: postmaster/postmaster.c:1279 utils/init/postinit.c:213 #, c-format msgid "could not load pg_hba.conf" msgstr "n'a pas pu charger pg_hba.conf" -#: postmaster/postmaster.c:1287 +#: postmaster/postmaster.c:1305 #, c-format msgid "postmaster became multithreaded during startup" -msgstr "le postmaster est devenu multithreadé lors du démarrage" +msgstr "le postmaster est devenu multithreadé lors du démarrage" -#: postmaster/postmaster.c:1288 +#: postmaster/postmaster.c:1306 #, c-format msgid "Set the LC_ALL environment variable to a valid locale." msgstr "Configurez la variable d'environnement LC_ALL avec une locale valide." -#: postmaster/postmaster.c:1385 +#: postmaster/postmaster.c:1403 #, c-format msgid "%s: could not locate matching postgres executable" -msgstr "%s : n'a pas pu localiser l'exécutable postgres correspondant" +msgstr "%s : n'a pas pu localiser l'exécutable postgres correspondant" -#: postmaster/postmaster.c:1408 utils/misc/tzparser.c:341 +#: postmaster/postmaster.c:1426 utils/misc/tzparser.c:341 #, c-format msgid "This may indicate an incomplete PostgreSQL installation, or that the file \"%s\" has been moved away from its proper location." -msgstr "Ceci peut indiquer une installation PostgreSQL incomplète, ou que le fichier « %s » a été déplacé." +msgstr "Ceci peut indiquer une installation PostgreSQL incomplète, ou que le fichier « %s » a été déplacé." -#: postmaster/postmaster.c:1436 +#: postmaster/postmaster.c:1454 #, c-format msgid "data directory \"%s\" does not exist" -msgstr "le répertoire des données « %s » n'existe pas" +msgstr "le répertoire des données « %s » n'existe pas" -#: postmaster/postmaster.c:1441 +#: postmaster/postmaster.c:1459 #, c-format msgid "could not read permissions of directory \"%s\": %m" -msgstr "n'a pas pu lire les droits du répertoire « %s » : %m" +msgstr "n'a pas pu lire les droits du répertoire « %s » : %m" -#: postmaster/postmaster.c:1449 +#: postmaster/postmaster.c:1467 #, c-format msgid "specified data directory \"%s\" is not a directory" -msgstr "le répertoire des données « %s » n'est pas un répertoire" +msgstr "le répertoire des données « %s » n'est pas un répertoire" -#: postmaster/postmaster.c:1465 +#: postmaster/postmaster.c:1483 #, c-format msgid "data directory \"%s\" has wrong ownership" -msgstr "le répertoire des données « %s » a un mauvais propriétaire" +msgstr "le répertoire des données « %s » a un mauvais propriétaire" -#: postmaster/postmaster.c:1467 +#: postmaster/postmaster.c:1485 #, c-format msgid "The server must be started by the user that owns the data directory." msgstr "" -"Le serveur doit être en cours d'exécution par l'utilisateur qui possède le\n" -"répertoire des données." +"Le serveur doit être en cours d'exécution par l'utilisateur qui possède le\n" +"répertoire des données." -#: postmaster/postmaster.c:1487 +#: postmaster/postmaster.c:1505 #, c-format msgid "data directory \"%s\" has group or world access" msgstr "" -"le répertoire des données « %s » est accessible par le groupe et/ou par les\n" +"le répertoire des données « %s » est accessible par le groupe et/ou par les\n" "autres" -#: postmaster/postmaster.c:1489 +#: postmaster/postmaster.c:1507 #, c-format msgid "Permissions should be u=rwx (0700)." -msgstr "Les droits devraient être u=rwx (0700)." +msgstr "Les droits devraient être u=rwx (0700)." -#: postmaster/postmaster.c:1500 +#: postmaster/postmaster.c:1518 #, c-format msgid "" "%s: could not find the database system\n" "Expected to find it in the directory \"%s\",\n" "but could not open file \"%s\": %s\n" msgstr "" -"%s : n'a pas pu trouver le système de bases de données\n" -"S'attendait à le trouver dans le répertoire « %s »,\n" -"mais n'a pas réussi à ouvrir le fichier « %s »: %s\n" +"%s : n'a pas pu trouver le système de bases de données\n" +"S'attendait à le trouver dans le répertoire « %s »,\n" +"mais n'a pas réussi à ouvrir le fichier « %s »: %s\n" -#: postmaster/postmaster.c:1677 +#: postmaster/postmaster.c:1695 #, c-format msgid "select() failed in postmaster: %m" -msgstr "échec de select() dans postmaster : %m" +msgstr "échec de select() dans postmaster : %m" -#: postmaster/postmaster.c:1827 +#: postmaster/postmaster.c:1850 #, c-format msgid "performing immediate shutdown because data directory lock file is invalid" -msgstr "forçage d'un arrêt immédiat car le fichier de verrou du répertoire de données est invalide" +msgstr "forçage d'un arrêt immédiat car le fichier de verrou du répertoire de données est invalide" -#: postmaster/postmaster.c:1905 postmaster/postmaster.c:1936 +#: postmaster/postmaster.c:1928 postmaster/postmaster.c:1959 #, c-format msgid "incomplete startup packet" -msgstr "paquet de démarrage incomplet" +msgstr "paquet de démarrage incomplet" -#: postmaster/postmaster.c:1917 +#: postmaster/postmaster.c:1940 #, c-format msgid "invalid length of startup packet" -msgstr "longueur invalide du paquet de démarrage" +msgstr "longueur invalide du paquet de démarrage" -#: postmaster/postmaster.c:1975 +#: postmaster/postmaster.c:1998 #, c-format msgid "failed to send SSL negotiation response: %m" -msgstr "échec lors de l'envoi de la réponse de négotiation SSL : %m" +msgstr "échec lors de l'envoi de la réponse de négotiation SSL : %m" -#: postmaster/postmaster.c:2004 +#: postmaster/postmaster.c:2027 #, c-format msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u" msgstr "" -"Protocole non supportée de l'interface %u.%u : le serveur supporte de %u.0 à\n" +"Protocole non supportée de l'interface %u.%u : le serveur supporte de %u.0 à\n" "%u.%u" -#: postmaster/postmaster.c:2067 utils/misc/guc.c:5662 utils/misc/guc.c:5755 utils/misc/guc.c:7053 utils/misc/guc.c:9789 utils/misc/guc.c:9823 +#: postmaster/postmaster.c:2090 utils/misc/guc.c:5660 utils/misc/guc.c:5753 utils/misc/guc.c:7051 utils/misc/guc.c:9805 utils/misc/guc.c:9839 #, c-format msgid "invalid value for parameter \"%s\": \"%s\"" -msgstr "valeur invalide pour le paramètre « %s » : « %s »" +msgstr "valeur invalide pour le paramètre « %s » : « %s »" -#: postmaster/postmaster.c:2070 +#: postmaster/postmaster.c:2093 #, c-format msgid "Valid values are: \"false\", 0, \"true\", 1, \"database\"." -msgstr "Les valeurs valides sont : « false », « 0 », « true », « 1 », « database »." +msgstr "Les valeurs valides sont : « false », « 0 », « true », « 1 », « database »." -#: postmaster/postmaster.c:2090 +#: postmaster/postmaster.c:2113 #, c-format msgid "invalid startup packet layout: expected terminator as last byte" msgstr "" -"configuration invalide du paquet de démarrage : terminaison attendue comme\n" +"configuration invalide du paquet de démarrage : terminaison attendue comme\n" "dernier octet" -#: postmaster/postmaster.c:2118 +#: postmaster/postmaster.c:2141 #, c-format msgid "no PostgreSQL user name specified in startup packet" -msgstr "aucun nom d'utilisateur PostgreSQL n'a été spécifié dans le paquet de démarrage" +msgstr "aucun nom d'utilisateur PostgreSQL n'a été spécifié dans le paquet de démarrage" -#: postmaster/postmaster.c:2177 +#: postmaster/postmaster.c:2200 #, c-format msgid "the database system is starting up" -msgstr "le système de bases de données se lance" +msgstr "le système de bases de données se lance" -#: postmaster/postmaster.c:2182 +#: postmaster/postmaster.c:2205 #, c-format msgid "the database system is shutting down" -msgstr "le système de base de données s'arrête" +msgstr "le système de base de données s'arrête" -#: postmaster/postmaster.c:2187 +#: postmaster/postmaster.c:2210 #, c-format msgid "the database system is in recovery mode" -msgstr "le système de bases de données est en cours de restauration" +msgstr "le système de bases de données est en cours de restauration" -#: postmaster/postmaster.c:2192 storage/ipc/procarray.c:297 storage/ipc/sinvaladt.c:298 storage/lmgr/proc.c:340 +#: postmaster/postmaster.c:2215 storage/ipc/procarray.c:297 storage/ipc/sinvaladt.c:298 storage/lmgr/proc.c:340 #, c-format msgid "sorry, too many clients already" -msgstr "désolé, trop de clients sont déjà connectés" +msgstr "désolé, trop de clients sont déjà connectés" -#: postmaster/postmaster.c:2254 +#: postmaster/postmaster.c:2277 #, c-format msgid "wrong key in cancel request for process %d" -msgstr "mauvaise clé dans la demande d'annulation pour le processus %d" +msgstr "mauvaise clé dans la demande d'annulation pour le processus %d" -#: postmaster/postmaster.c:2262 +#: postmaster/postmaster.c:2285 #, c-format msgid "PID %d in cancel request did not match any process" -msgstr "le PID %d dans la demande d'annulation ne correspond à aucun processus" +msgstr "le PID %d dans la demande d'annulation ne correspond à aucun processus" -#: postmaster/postmaster.c:2482 +#: postmaster/postmaster.c:2505 #, c-format msgid "received SIGHUP, reloading configuration files" -msgstr "a reçu SIGHUP, rechargement des fichiers de configuration" +msgstr "a reçu SIGHUP, rechargement des fichiers de configuration" -#: postmaster/postmaster.c:2507 +#: postmaster/postmaster.c:2530 #, c-format msgid "pg_hba.conf not reloaded" msgstr "pg_hba.conf non lu" -#: postmaster/postmaster.c:2511 +#: postmaster/postmaster.c:2534 #, c-format msgid "pg_ident.conf not reloaded" -msgstr "pg_ident.conf non rechargé" +msgstr "pg_ident.conf non rechargé" -#: postmaster/postmaster.c:2552 +#: postmaster/postmaster.c:2575 #, c-format msgid "received smart shutdown request" -msgstr "a reçu une demande d'arrêt intelligent" +msgstr "a reçu une demande d'arrêt intelligent" -#: postmaster/postmaster.c:2607 +#: postmaster/postmaster.c:2630 #, c-format msgid "received fast shutdown request" -msgstr "a reçu une demande d'arrêt rapide" +msgstr "a reçu une demande d'arrêt rapide" -#: postmaster/postmaster.c:2637 +#: postmaster/postmaster.c:2660 #, c-format msgid "aborting any active transactions" msgstr "annulation des transactions actives" -#: postmaster/postmaster.c:2671 +#: postmaster/postmaster.c:2694 #, c-format msgid "received immediate shutdown request" -msgstr "a reçu une demande d'arrêt immédiat" +msgstr "a reçu une demande d'arrêt immédiat" -#: postmaster/postmaster.c:2735 +#: postmaster/postmaster.c:2758 #, c-format msgid "shutdown at recovery target" -msgstr "arrêt sur la cible de restauration" +msgstr "arrêt sur la cible de restauration" -#: postmaster/postmaster.c:2751 postmaster/postmaster.c:2774 +#: postmaster/postmaster.c:2774 postmaster/postmaster.c:2797 msgid "startup process" msgstr "processus de lancement" -#: postmaster/postmaster.c:2754 +#: postmaster/postmaster.c:2777 #, c-format msgid "aborting startup due to startup process failure" -msgstr "annulation du démarrage à cause d'un échec dans le processus de lancement" +msgstr "annulation du démarrage à cause d'un échec dans le processus de lancement" -#: postmaster/postmaster.c:2815 +#: postmaster/postmaster.c:2838 #, c-format msgid "database system is ready to accept connections" -msgstr "le système de bases de données est prêt pour accepter les connexions" +msgstr "le système de bases de données est prêt pour accepter les connexions" -#: postmaster/postmaster.c:2834 +#: postmaster/postmaster.c:2857 msgid "background writer process" -msgstr "processus d'écriture en tâche de fond" +msgstr "processus d'écriture en tâche de fond" -#: postmaster/postmaster.c:2888 +#: postmaster/postmaster.c:2911 msgid "checkpointer process" msgstr "processus checkpointer" -#: postmaster/postmaster.c:2904 +#: postmaster/postmaster.c:2927 msgid "WAL writer process" -msgstr "processus d'écriture des journaux de transaction" +msgstr "processus d'écriture des journaux de transaction" -#: postmaster/postmaster.c:2918 +#: postmaster/postmaster.c:2942 msgid "WAL receiver process" -msgstr "processus de réception des journaux de transaction" +msgstr "processus de réception des journaux de transaction" -#: postmaster/postmaster.c:2933 +#: postmaster/postmaster.c:2957 msgid "autovacuum launcher process" msgstr "processus de l'autovacuum" -#: postmaster/postmaster.c:2948 +#: postmaster/postmaster.c:2972 msgid "archiver process" msgstr "processus d'archivage" -#: postmaster/postmaster.c:2964 +#: postmaster/postmaster.c:2988 msgid "statistics collector process" -msgstr "processus de récupération des statistiques" +msgstr "processus de récupération des statistiques" -#: postmaster/postmaster.c:2978 +#: postmaster/postmaster.c:3002 msgid "system logger process" msgstr "processus des journaux applicatifs" -#: postmaster/postmaster.c:3040 +#: postmaster/postmaster.c:3064 msgid "worker process" msgstr "processus de travail" -#: postmaster/postmaster.c:3123 postmaster/postmaster.c:3143 postmaster/postmaster.c:3150 postmaster/postmaster.c:3168 +#: postmaster/postmaster.c:3147 postmaster/postmaster.c:3167 postmaster/postmaster.c:3174 postmaster/postmaster.c:3192 msgid "server process" msgstr "processus serveur" -#: postmaster/postmaster.c:3222 +#: postmaster/postmaster.c:3246 #, c-format msgid "terminating any other active server processes" -msgstr "arrêt des autres processus serveur actifs" +msgstr "arrêt des autres processus serveur actifs" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3478 +#: postmaster/postmaster.c:3502 #, c-format msgid "%s (PID %d) exited with exit code %d" msgstr "%s (PID %d) quitte avec le code de sortie %d" -#: postmaster/postmaster.c:3480 postmaster/postmaster.c:3491 postmaster/postmaster.c:3502 postmaster/postmaster.c:3511 postmaster/postmaster.c:3521 +#: postmaster/postmaster.c:3504 postmaster/postmaster.c:3515 postmaster/postmaster.c:3526 postmaster/postmaster.c:3535 postmaster/postmaster.c:3545 #, c-format msgid "Failed process was running: %s" -msgstr "Le processus qui a échoué exécutait : %s" +msgstr "Le processus qui a échoué exécutait : %s" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3488 +#: postmaster/postmaster.c:3512 #, c-format msgid "%s (PID %d) was terminated by exception 0x%X" -msgstr "%s (PID %d) a été arrêté par l'exception 0x%X" +msgstr "%s (PID %d) a été arrêté par l'exception 0x%X" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3498 +#: postmaster/postmaster.c:3522 #, c-format msgid "%s (PID %d) was terminated by signal %d: %s" -msgstr "%s (PID %d) a été arrêté par le signal %d : %s" +msgstr "%s (PID %d) a été arrêté par le signal %d : %s" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3509 +#: postmaster/postmaster.c:3533 #, c-format msgid "%s (PID %d) was terminated by signal %d" -msgstr "%s (PID %d) a été arrêté par le signal %d" +msgstr "%s (PID %d) a été arrêté par le signal %d" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3519 +#: postmaster/postmaster.c:3543 #, c-format msgid "%s (PID %d) exited with unrecognized status %d" -msgstr "%s (PID %d) a quitté avec le statut inattendu %d" +msgstr "%s (PID %d) a quitté avec le statut inattendu %d" -#: postmaster/postmaster.c:3706 +#: postmaster/postmaster.c:3730 #, c-format msgid "abnormal database system shutdown" -msgstr "le système de base de données a été arrêté anormalement" +msgstr "le système de base de données a été arrêté anormalement" -#: postmaster/postmaster.c:3746 +#: postmaster/postmaster.c:3770 #, c-format msgid "all server processes terminated; reinitializing" -msgstr "tous les processus serveur se sont arrêtés, réinitialisation" +msgstr "tous les processus serveur se sont arrêtés, réinitialisation" -#: postmaster/postmaster.c:3958 +#: postmaster/postmaster.c:3982 #, c-format msgid "could not fork new process for connection: %m" msgstr "n'a pas pu lancer le nouveau processus fils pour la connexion : %m" -#: postmaster/postmaster.c:4000 +#: postmaster/postmaster.c:4024 msgid "could not fork new process for connection: " msgstr "n'a pas pu lancer le nouveau processus fils pour la connexion : " -#: postmaster/postmaster.c:4114 +#: postmaster/postmaster.c:4138 #, c-format msgid "connection received: host=%s port=%s" -msgstr "connexion reçue : hôte=%s port=%s" +msgstr "connexion reçue : hôte=%s port=%s" -#: postmaster/postmaster.c:4119 +#: postmaster/postmaster.c:4143 #, c-format msgid "connection received: host=%s" -msgstr "connexion reçue : hôte=%s" +msgstr "connexion reçue : hôte=%s" -#: postmaster/postmaster.c:4402 +#: postmaster/postmaster.c:4426 #, c-format msgid "could not execute server process \"%s\": %m" -msgstr "n'a pas pu exécuter le processus serveur « %s » : %m" +msgstr "n'a pas pu exécuter le processus serveur « %s » : %m" + +#: postmaster/postmaster.c:4579 +#, c-format +msgid "giving up after too many tries to reserve shared memory" +msgstr "abandon après plusieurs essais pour réserver la mémoire partagée" -#: postmaster/postmaster.c:4967 +#: postmaster/postmaster.c:4580 +#, c-format +msgid "This might be caused by ASLR or antivirus software." +msgstr "Ceci pourrait être dû à un logiciel ASLR ou à un antivirus." + +#: postmaster/postmaster.c:4978 #, c-format msgid "database system is ready to accept read only connections" -msgstr "le système de bases de données est prêt pour accepter les connexions en lecture seule" +msgstr "le système de bases de données est prêt pour accepter les connexions en lecture seule" -#: postmaster/postmaster.c:5258 +#: postmaster/postmaster.c:5267 #, c-format msgid "could not fork startup process: %m" -msgstr "n'a pas pu lancer le processus fils de démarrage : %m" +msgstr "n'a pas pu lancer le processus fils de démarrage : %m" -#: postmaster/postmaster.c:5262 +#: postmaster/postmaster.c:5271 #, c-format msgid "could not fork background writer process: %m" msgstr "" -"n'a pas pu créer un processus fils du processus d'écriture en tâche de\n" +"n'a pas pu créer un processus fils du processus d'écriture en tâche de\n" "fond : %m" -#: postmaster/postmaster.c:5266 +#: postmaster/postmaster.c:5275 #, c-format msgid "could not fork checkpointer process: %m" -msgstr "n'a pas pu créer le processus checkpointer : %m" +msgstr "n'a pas pu créer le processus checkpointer : %m" -#: postmaster/postmaster.c:5270 +#: postmaster/postmaster.c:5279 #, c-format msgid "could not fork WAL writer process: %m" msgstr "" -"n'a pas pu créer un processus fils du processus d'écriture des journaux de\n" +"n'a pas pu créer un processus fils du processus d'écriture des journaux de\n" "transaction : %m" -#: postmaster/postmaster.c:5274 +#: postmaster/postmaster.c:5283 #, c-format msgid "could not fork WAL receiver process: %m" msgstr "" -"n'a pas pu créer un processus fils de réception des journaux de\n" +"n'a pas pu créer un processus fils de réception des journaux de\n" "transactions : %m" -#: postmaster/postmaster.c:5278 +#: postmaster/postmaster.c:5287 #, c-format msgid "could not fork process: %m" msgstr "n'a pas pu lancer le processus fils : %m" -#: postmaster/postmaster.c:5440 postmaster/postmaster.c:5463 +#: postmaster/postmaster.c:5467 postmaster/postmaster.c:5490 #, c-format msgid "database connection requirement not indicated during registration" -msgstr "pré-requis de la connexion à la base non indiqué lors de l'enregistrement" +msgstr "pré-requis de la connexion à la base non indiqué lors de l'enregistrement" -#: postmaster/postmaster.c:5447 postmaster/postmaster.c:5470 +#: postmaster/postmaster.c:5474 postmaster/postmaster.c:5497 #, c-format msgid "invalid processing mode in background worker" -msgstr "mode de traitement invalide dans le processus en tâche de fond" +msgstr "mode de traitement invalide dans le processus en tâche de fond" -#: postmaster/postmaster.c:5522 +#: postmaster/postmaster.c:5569 #, c-format msgid "starting background worker process \"%s\"" -msgstr "démarrage du processus d'écriture en tâche de fond « %s »" +msgstr "démarrage du processus d'écriture en tâche de fond « %s »" -#: postmaster/postmaster.c:5533 +#: postmaster/postmaster.c:5581 #, c-format msgid "could not fork worker process: %m" -msgstr "n'a pas pu créer un processus fils du processus en tâche de fond : %m" +msgstr "n'a pas pu créer un processus fils du processus en tâche de fond : %m" -#: postmaster/postmaster.c:5921 +#: postmaster/postmaster.c:5998 #, c-format msgid "could not duplicate socket %d for use in backend: error code %d" msgstr "n'a pas pu dupliquer la socket %d pour le serveur : code d'erreur %d" -#: postmaster/postmaster.c:5953 +#: postmaster/postmaster.c:6030 #, c-format msgid "could not create inherited socket: error code %d\n" -msgstr "n'a pas pu créer la socket héritée : code d'erreur %d\n" +msgstr "n'a pas pu créer la socket héritée : code d'erreur %d\n" -#: postmaster/postmaster.c:5982 +#: postmaster/postmaster.c:6059 #, c-format msgid "could not open backend variables file \"%s\": %s\n" -msgstr "n'a pas pu ouvrir le fichier des variables moteurs « %s » : %s\n" +msgstr "n'a pas pu ouvrir le fichier des variables moteurs « %s » : %s\n" -#: postmaster/postmaster.c:5989 +#: postmaster/postmaster.c:6066 #, c-format msgid "could not read from backend variables file \"%s\": %s\n" -msgstr "n'a pas pu lire le fichier de configuration serveur « %s » : %s\n" +msgstr "n'a pas pu lire le fichier de configuration serveur « %s » : %s\n" -#: postmaster/postmaster.c:5998 +#: postmaster/postmaster.c:6075 #, c-format msgid "could not remove file \"%s\": %s\n" -msgstr "n'a pas pu supprimer le fichier « %s » : %s\n" +msgstr "n'a pas pu supprimer le fichier « %s » : %s\n" -#: postmaster/postmaster.c:6015 +#: postmaster/postmaster.c:6092 #, c-format msgid "could not map view of backend variables: error code %lu\n" msgstr "" -"n'a pas pu exécuter \"map\" la vue des variables serveurs : code\n" +"n'a pas pu exécuter \"map\" la vue des variables serveurs : code\n" "d'erreur %lu\n" -#: postmaster/postmaster.c:6024 +#: postmaster/postmaster.c:6101 #, c-format msgid "could not unmap view of backend variables: error code %lu\n" msgstr "" -"n'a pas pu exécuter \"unmap\" sur la vue des variables serveurs : code\n" +"n'a pas pu exécuter \"unmap\" sur la vue des variables serveurs : code\n" "d'erreur %lu\n" -#: postmaster/postmaster.c:6031 +#: postmaster/postmaster.c:6108 #, c-format msgid "could not close handle to backend parameter variables: error code %lu\n" msgstr "" -"n'a pas pu fermer le lien vers les variables des paramètres du serveur :\n" +"n'a pas pu fermer le lien vers les variables des paramètres du serveur :\n" "code d'erreur %lu\n" -#: postmaster/postmaster.c:6192 +#: postmaster/postmaster.c:6269 #, c-format msgid "could not read exit code for process\n" msgstr "n'a pas pu lire le code de sortie du processus\n" -#: postmaster/postmaster.c:6197 +#: postmaster/postmaster.c:6274 #, c-format msgid "could not post child completion status\n" msgstr "n'a pas pu poster le statut de fin de l'enfant\n" @@ -15387,17 +15177,17 @@ msgstr "n'a pas pu poster le statut de fin de l'enfant\n" #: postmaster/syslogger.c:441 postmaster/syslogger.c:1041 #, c-format msgid "could not read from logger pipe: %m" -msgstr "n'a pas pu lire à partir du tube des journaux applicatifs : %m" +msgstr "n'a pas pu lire à partir du tube des journaux applicatifs : %m" #: postmaster/syslogger.c:490 #, c-format msgid "logger shutting down" -msgstr "arrêt en cours des journaux applicatifs" +msgstr "arrêt en cours des journaux applicatifs" #: postmaster/syslogger.c:534 postmaster/syslogger.c:548 #, c-format msgid "could not create pipe for syslog: %m" -msgstr "n'a pas pu créer un tube pour syslog : %m" +msgstr "n'a pas pu créer un tube pour syslog : %m" #: postmaster/syslogger.c:584 #, c-format @@ -15407,12 +15197,12 @@ msgstr "n'a pas pu lancer le processus des journaux applicatifs : %m" #: postmaster/syslogger.c:620 #, c-format msgid "redirecting log output to logging collector process" -msgstr "redirection des traces vers le processus de récupération des traces" +msgstr "redirection des traces vers le processus de récupération des traces" #: postmaster/syslogger.c:621 #, c-format msgid "Future log output will appear in directory \"%s\"." -msgstr "Les prochaines traces apparaîtront dans le répertoire « %s »." +msgstr "Les prochaines traces apparaîtront dans le répertoire « %s »." #: postmaster/syslogger.c:629 #, c-format @@ -15427,22 +15217,22 @@ msgstr "n'a pas pu rediriger la sortie des erreurs (stderr) : %m" #: postmaster/syslogger.c:996 #, c-format msgid "could not write to log file: %s\n" -msgstr "n'a pas pu écrire dans le journal applicatif : %s\n" +msgstr "n'a pas pu écrire dans le journal applicatif : %s\n" #: postmaster/syslogger.c:1136 #, c-format msgid "could not open log file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier applicatif « %s » : %m" +msgstr "n'a pas pu ouvrir le fichier applicatif « %s » : %m" #: postmaster/syslogger.c:1198 postmaster/syslogger.c:1242 #, c-format msgid "disabling automatic rotation (use SIGHUP to re-enable)" -msgstr "désactivation de la rotation automatique (utilisez SIGHUP pour la réactiver)" +msgstr "désactivation de la rotation automatique (utilisez SIGHUP pour la réactiver)" #: regex/regc_pg_locale.c:261 #, c-format msgid "could not determine which collation to use for regular expression" -msgstr "n'a pas pu déterminer le collationnement à utiliser pour une expression rationnelle" +msgstr "n'a pas pu déterminer le collationnement à utiliser pour une expression rationnelle" #: repl_gram.y:260 repl_gram.y:292 #, c-format @@ -15451,73 +15241,73 @@ msgstr "timeline %u invalide" #: repl_scanner.l:120 msgid "invalid streaming start location" -msgstr "emplacement de démarrage du flux de réplication invalide" +msgstr "emplacement de démarrage du flux de réplication invalide" #: repl_scanner.l:171 scan.l:670 msgid "unterminated quoted string" -msgstr "chaîne entre guillemets non terminée" +msgstr "chaîne entre guillemets non terminée" #: repl_scanner.l:181 #, c-format msgid "syntax error: unexpected character \"%s\"" -msgstr "erreur de syntaxe : caractère « %s » inattendu" +msgstr "erreur de syntaxe : caractère « %s » inattendu" -#: replication/basebackup.c:230 +#: replication/basebackup.c:232 #, c-format msgid "could not stat control file \"%s\": %m" -msgstr "n'a pas pu récupérer des informations sur le fichier de contrôle « %s » : %m" +msgstr "n'a pas pu récupérer des informations sur le fichier de contrôle « %s » : %m" -#: replication/basebackup.c:339 +#: replication/basebackup.c:341 #, c-format msgid "could not find any WAL files" msgstr "n'a pas pu trouver un seul fichier WAL" -#: replication/basebackup.c:352 replication/basebackup.c:366 replication/basebackup.c:375 +#: replication/basebackup.c:354 replication/basebackup.c:368 replication/basebackup.c:377 #, c-format msgid "could not find WAL file \"%s\"" -msgstr "n'a pas pu trouver le fichier WAL « %s »" +msgstr "n'a pas pu trouver le fichier WAL « %s »" -#: replication/basebackup.c:414 replication/basebackup.c:440 +#: replication/basebackup.c:416 replication/basebackup.c:442 #, c-format msgid "unexpected WAL file size \"%s\"" -msgstr "taille du fichier WAL « %s » inattendue" +msgstr "taille du fichier WAL « %s » inattendue" -#: replication/basebackup.c:426 replication/basebackup.c:1172 +#: replication/basebackup.c:428 replication/basebackup.c:1160 #, c-format msgid "base backup could not send data, aborting backup" -msgstr "la sauvegarde de base n'a pas pu envoyer les données, annulation de la sauvegarde" +msgstr "la sauvegarde de base n'a pas pu envoyer les données, annulation de la sauvegarde" -#: replication/basebackup.c:528 replication/basebackup.c:537 replication/basebackup.c:546 replication/basebackup.c:555 replication/basebackup.c:564 replication/basebackup.c:575 replication/basebackup.c:592 +#: replication/basebackup.c:530 replication/basebackup.c:539 replication/basebackup.c:548 replication/basebackup.c:557 replication/basebackup.c:566 replication/basebackup.c:577 replication/basebackup.c:594 #, c-format msgid "duplicate option \"%s\"" -msgstr "option « %s » dupliquée" +msgstr "option « %s » dupliquée" -#: replication/basebackup.c:581 utils/misc/guc.c:5672 +#: replication/basebackup.c:583 utils/misc/guc.c:5670 #, c-format msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)" -msgstr "%d est en dehors des limites valides pour le paramètre « %s » (%d .. %d)" +msgstr "%d est en dehors des limites valides pour le paramètre « %s » (%d .. %d)" -#: replication/basebackup.c:855 replication/basebackup.c:957 +#: replication/basebackup.c:857 replication/basebackup.c:959 #, c-format msgid "could not stat file or directory \"%s\": %m" msgstr "" -"n'a pas pu récupérer les informations sur le fichier ou répertoire\n" -"« %s » : %m" +"n'a pas pu récupérer les informations sur le fichier ou répertoire\n" +"« %s » : %m" -#: replication/basebackup.c:1124 +#: replication/basebackup.c:1112 #, c-format msgid "skipping special file \"%s\"" -msgstr "ignore le fichier spécial « %s »" +msgstr "ignore le fichier spécial « %s »" -#: replication/basebackup.c:1235 +#: replication/basebackup.c:1223 #, c-format msgid "file name too long for tar format: \"%s\"" -msgstr "nom du fichier trop long pour le format tar : « %s »" +msgstr "nom du fichier trop long pour le format tar : « %s »" -#: replication/basebackup.c:1240 +#: replication/basebackup.c:1228 #, c-format msgid "symbolic link target too long for tar format: file name \"%s\", target \"%s\"" -msgstr "cible du lien symbolique trop long pour le format tar : nom de fichier « %s », cible « %s »" +msgstr "cible du lien symbolique trop long pour le format tar : nom de fichier « %s », cible « %s »" #: replication/libpqwalreceiver/libpqwalreceiver.c:119 #, c-format @@ -15527,32 +15317,32 @@ msgstr "n'a pas pu se connecter au serveur principal : %s" #: replication/libpqwalreceiver/libpqwalreceiver.c:142 #, c-format msgid "could not parse connection string: %s" -msgstr "n'a pas pu analyser la chaîne de connexion « %s »" +msgstr "n'a pas pu analyser la chaîne de connexion « %s »" #: replication/libpqwalreceiver/libpqwalreceiver.c:192 #, c-format msgid "could not receive database system identifier and timeline ID from the primary server: %s" msgstr "" -"n'a pas pu recevoir l'identifiant du système de bases de données et\n" -"l'identifiant de la timeline à partir du serveur principal : %s" +"n'a pas pu recevoir l'identifiant du système de bases de données et\n" +"l'identifiant de la timeline à partir du serveur principal : %s" #: replication/libpqwalreceiver/libpqwalreceiver.c:203 replication/libpqwalreceiver/libpqwalreceiver.c:357 #, c-format msgid "invalid response from primary server" -msgstr "réponse invalide du serveur principal" +msgstr "réponse invalide du serveur principal" #: replication/libpqwalreceiver/libpqwalreceiver.c:204 #, c-format msgid "Could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields." msgstr "" -"N'a pas pu identifier le système : a récupéré %d lignes et %d champs,\n" +"N'a pas pu identifier le système : a récupéré %d lignes et %d champs,\n" "attendait %d lignes et %d champs (ou plus)." #: replication/libpqwalreceiver/libpqwalreceiver.c:220 #, c-format msgid "database system identifier differs between the primary and standby" msgstr "" -"l'identifiant du système de bases de données diffère entre le serveur principal\n" +"l'identifiant du système de bases de données diffère entre le serveur principal\n" "et le serveur en attente" #: replication/libpqwalreceiver/libpqwalreceiver.c:221 @@ -15565,7 +15355,7 @@ msgstr "" #: replication/libpqwalreceiver/libpqwalreceiver.c:263 #, c-format msgid "could not start WAL streaming: %s" -msgstr "n'a pas pu démarrer l'envoi des WAL : %s" +msgstr "n'a pas pu démarrer l'envoi des WAL : %s" #: replication/libpqwalreceiver/libpqwalreceiver.c:281 #, c-format @@ -15575,7 +15365,7 @@ msgstr "n'a pas pu transmettre le message de fin d'envoi de flux au primaire : % #: replication/libpqwalreceiver/libpqwalreceiver.c:303 #, c-format msgid "unexpected result set after end-of-streaming" -msgstr "ensemble de résultats inattendu après la fin du flux de réplication" +msgstr "ensemble de résultats inattendu après la fin du flux de réplication" #: replication/libpqwalreceiver/libpqwalreceiver.c:315 #, c-format @@ -15585,12 +15375,12 @@ msgstr "erreur lors de la lecture de la commande de flux : %s" #: replication/libpqwalreceiver/libpqwalreceiver.c:323 #, c-format msgid "unexpected result after CommandComplete: %s" -msgstr "résultat inattendu après CommandComplete : %s" +msgstr "résultat inattendu après CommandComplete : %s" #: replication/libpqwalreceiver/libpqwalreceiver.c:346 #, c-format msgid "could not receive timeline history file from the primary server: %s" -msgstr "n'a pas pu recevoir le fichier historique à partir du serveur principal : %s" +msgstr "n'a pas pu recevoir le fichier historique à partir du serveur principal : %s" #: replication/libpqwalreceiver/libpqwalreceiver.c:358 #, c-format @@ -15602,87 +15392,87 @@ msgstr "Attendait 1 ligne avec 2 champs, a obtenu %d lignes avec %d champs." msgid "invalid socket: %s" msgstr "socket invalide : %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:426 storage/ipc/latch.c:1277 +#: replication/libpqwalreceiver/libpqwalreceiver.c:426 storage/ipc/latch.c:1343 #, c-format msgid "select() failed: %m" -msgstr "échec de select() : %m" +msgstr "échec de select() : %m" -#: replication/libpqwalreceiver/libpqwalreceiver.c:549 replication/libpqwalreceiver/libpqwalreceiver.c:576 replication/libpqwalreceiver/libpqwalreceiver.c:582 +#: replication/libpqwalreceiver/libpqwalreceiver.c:555 replication/libpqwalreceiver/libpqwalreceiver.c:582 replication/libpqwalreceiver/libpqwalreceiver.c:588 #, c-format msgid "could not receive data from WAL stream: %s" -msgstr "n'a pas pu recevoir des données du flux de WAL : %s" +msgstr "n'a pas pu recevoir des données du flux de WAL : %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:601 +#: replication/libpqwalreceiver/libpqwalreceiver.c:607 #, c-format msgid "could not send data to WAL stream: %s" -msgstr "n'a pas pu transmettre les données au flux WAL : %s" +msgstr "n'a pas pu transmettre les données au flux WAL : %s" #: replication/logical/logical.c:83 #, c-format msgid "logical decoding requires wal_level >= logical" -msgstr "le décodage logique requiert wal_level >= logical" +msgstr "le décodage logique requiert wal_level >= logical" #: replication/logical/logical.c:88 #, c-format msgid "logical decoding requires a database connection" -msgstr "le décodage logique requiert une connexion à une base" +msgstr "le décodage logique requiert une connexion à une base" #: replication/logical/logical.c:106 #, c-format msgid "logical decoding cannot be used while in recovery" -msgstr "le décodage logique ne peut pas être utilisé lors de la restauration" +msgstr "le décodage logique ne peut pas être utilisé lors de la restauration" -#: replication/logical/logical.c:236 replication/logical/logical.c:348 +#: replication/logical/logical.c:239 replication/logical/logical.c:360 #, c-format msgid "cannot use physical replication slot for logical decoding" -msgstr "ne peut pas utiliser un slot de réplication physique pour le décodage logique" +msgstr "ne peut pas utiliser un slot de réplication physique pour le décodage logique" -#: replication/logical/logical.c:241 replication/logical/logical.c:353 +#: replication/logical/logical.c:244 replication/logical/logical.c:365 #, c-format msgid "replication slot \"%s\" was not created in this database" -msgstr "le slot de réplication « %s » n'a pas été créé dans cette base de données" +msgstr "le slot de réplication « %s » n'a pas été créé dans cette base de données" -#: replication/logical/logical.c:248 +#: replication/logical/logical.c:251 #, c-format msgid "cannot create logical replication slot in transaction that has performed writes" -msgstr "ne peut pas créer un slot de réplication logique dans une transaction qui a fait des écritures" +msgstr "ne peut pas créer un slot de réplication logique dans une transaction qui a fait des écritures" -#: replication/logical/logical.c:390 +#: replication/logical/logical.c:402 #, c-format msgid "starting logical decoding for slot \"%s\"" -msgstr "début du décodage logique pour le slot « %s »" +msgstr "début du décodage logique pour le slot « %s »" -#: replication/logical/logical.c:392 +#: replication/logical/logical.c:404 #, c-format msgid "streaming transactions committing after %X/%X, reading WAL from %X/%X" -msgstr "envoi des transactions validées après %X/%X, lecture des journaux à partir de %X/%X" +msgstr "envoi des transactions validées après %X/%X, lecture des journaux à partir de %X/%X" -#: replication/logical/logical.c:527 +#: replication/logical/logical.c:539 #, c-format msgid "slot \"%s\", output plugin \"%s\", in the %s callback, associated LSN %X/%X" -msgstr "slot « %s », plugin de sortie « %s », dans la fonction d'appel %s, associé au LSN %X/%X" +msgstr "slot « %s », plugin de sortie « %s », dans la fonction d'appel %s, associé au LSN %X/%X" -#: replication/logical/logical.c:534 +#: replication/logical/logical.c:546 #, c-format msgid "slot \"%s\", output plugin \"%s\", in the %s callback" -msgstr "slot « %s », plugin de sortie « %s », dans la fonction d'appel %s" +msgstr "slot « %s », plugin de sortie « %s », dans la fonction d'appel %s" #: replication/logical/logicalfuncs.c:113 replication/slotfuncs.c:32 #, c-format msgid "must be superuser or replication role to use replication slots" msgstr "" -"doit être un superutilisateur ou un rôle ayant l'attribut de réplication\n" -"pour utiliser des slots de réplication" +"doit être un superutilisateur ou un rôle ayant l'attribut de réplication\n" +"pour utiliser des slots de réplication" #: replication/logical/logicalfuncs.c:152 #, c-format msgid "slot name must not be null" -msgstr "le nom du slot ne doit pas être NULL" +msgstr "le nom du slot ne doit pas être NULL" #: replication/logical/logicalfuncs.c:168 #, c-format msgid "options array must not be null" -msgstr "le tableau options ne doit pas être NULL" +msgstr "le tableau options ne doit pas être NULL" #: replication/logical/logicalfuncs.c:199 #, c-format @@ -15697,346 +15487,354 @@ msgstr "le tableau ne doit pas contenir de valeurs NULL" #: replication/logical/logicalfuncs.c:221 utils/adt/json.c:2277 utils/adt/jsonb.c:1356 #, c-format msgid "array must have even number of elements" -msgstr "le tableau doit avoir un nombre pair d'éléments" +msgstr "le tableau doit avoir un nombre pair d'éléments" #: replication/logical/logicalfuncs.c:264 #, c-format msgid "logical decoding output plugin \"%s\" produces binary output, but function \"%s\" expects textual data" -msgstr "le plugin de sortie « %s » pour le décodage logique produit une sortie binaire, mais la fonction « %s » attend des données texte" +msgstr "le plugin de sortie « %s » pour le décodage logique produit une sortie binaire, mais la fonction « %s » attend des données texte" #: replication/logical/origin.c:181 #, c-format msgid "only superusers can query or manipulate replication origins" -msgstr "seuls les super-utilisateurs peuvent lire ou manipuler les origines de réplication" +msgstr "seuls les super-utilisateurs peuvent lire ou manipuler les origines de réplication" #: replication/logical/origin.c:186 #, c-format msgid "cannot query or manipulate replication origin when max_replication_slots = 0" -msgstr "ne peut pas lire ou manipuler une originie de réplication logique quand max_replication_slots = 0" +msgstr "ne peut pas lire ou manipuler une originie de réplication logique quand max_replication_slots = 0" #: replication/logical/origin.c:191 #, c-format msgid "cannot manipulate replication origins during recovery" -msgstr "ne peut pas manipuler les origines de réplication lors d'une restauration" +msgstr "ne peut pas manipuler les origines de réplication lors d'une restauration" #: replication/logical/origin.c:316 #, c-format msgid "could not find free replication origin OID" -msgstr "n'a pas pu trouver d'OID d'origine de réplication libre" +msgstr "n'a pas pu trouver d'OID d'origine de réplication libre" #: replication/logical/origin.c:353 #, c-format msgid "could not drop replication origin with OID %d, in use by PID %d" -msgstr "ne peut pas supprimer l'origine de réplication d'OID %d, utilisée par le PID %d" +msgstr "ne peut pas supprimer l'origine de réplication d'OID %d, utilisée par le PID %d" -#: replication/logical/origin.c:671 +#: replication/logical/origin.c:674 #, c-format msgid "replication checkpoint has wrong magic %u instead of %u" -msgstr "le checkpoint de réplication a le mauvais nombre magique (%u au lieu de %u)" +msgstr "le checkpoint de réplication a le mauvais nombre magique (%u au lieu de %u)" -#: replication/logical/origin.c:703 +#: replication/logical/origin.c:706 #, c-format msgid "could not read file \"%s\": read %d of %zu" -msgstr "n'a pas pu lire le fichier « %s » : a lu %d sur %zu" +msgstr "n'a pas pu lire le fichier « %s » : a lu %d sur %zu" -#: replication/logical/origin.c:712 +#: replication/logical/origin.c:715 #, c-format msgid "could not find free replication state, increase max_replication_slots" -msgstr "n'a pas pu trouver d'état de réplication libre, augmentez max_replication_slots" +msgstr "n'a pas pu trouver d'état de réplication libre, augmentez max_replication_slots" -#: replication/logical/origin.c:730 +#: replication/logical/origin.c:733 #, c-format msgid "replication slot checkpoint has wrong checksum %u, expected %u" -msgstr "le point de contrôle du slot de réplication à la mauvaise somme de contrôle %u, %u attendu" +msgstr "le point de contrôle du slot de réplication à la mauvaise somme de contrôle %u, %u attendu" -#: replication/logical/origin.c:854 +#: replication/logical/origin.c:857 #, c-format msgid "replication origin with OID %d is already active for PID %d" -msgstr "l'origine de réplication d'OID %d est déjà active pour le PID %d" +msgstr "l'origine de réplication d'OID %d est déjà active pour le PID %d" -#: replication/logical/origin.c:865 replication/logical/origin.c:1045 +#: replication/logical/origin.c:868 replication/logical/origin.c:1048 #, c-format msgid "could not find free replication state slot for replication origin with OID %u" -msgstr "n'a pas pu trouver de slot d'état de réplication libre pour l'origine de réplication d'OID %u" +msgstr "n'a pas pu trouver de slot d'état de réplication libre pour l'origine de réplication d'OID %u" -#: replication/logical/origin.c:867 replication/logical/origin.c:1047 replication/slot.c:1299 +#: replication/logical/origin.c:870 replication/logical/origin.c:1050 replication/slot.c:1316 #, c-format msgid "Increase max_replication_slots and try again." msgstr "Augmentez max_replication_slots et recommencez." -#: replication/logical/origin.c:1004 +#: replication/logical/origin.c:1007 #, c-format msgid "cannot setup replication origin when one is already setup" -msgstr "ne peut pas configurer l'origine de réplication si une origine existe déjà" +msgstr "ne peut pas configurer l'origine de réplication si une origine existe déjà" -#: replication/logical/origin.c:1033 +#: replication/logical/origin.c:1036 #, c-format msgid "replication identifier %d is already active for PID %d" -msgstr "l'identificateur de réplication %d est déjà actif pour le PID %d" +msgstr "l'identificateur de réplication %d est déjà actif pour le PID %d" -#: replication/logical/origin.c:1079 replication/logical/origin.c:1274 replication/logical/origin.c:1294 +#: replication/logical/origin.c:1082 replication/logical/origin.c:1277 replication/logical/origin.c:1297 #, c-format msgid "no replication origin is configured" -msgstr "aucune origine de réplication n'est configurée" +msgstr "aucune origine de réplication n'est configurée" -#: replication/logical/reorderbuffer.c:2324 +#: replication/logical/reorderbuffer.c:2331 #, c-format msgid "could not write to data file for XID %u: %m" -msgstr "n'a pas pu écrire dans le fichier pour le XID %u : %m" +msgstr "n'a pas pu écrire dans le fichier pour le XID %u : %m" -#: replication/logical/reorderbuffer.c:2420 replication/logical/reorderbuffer.c:2440 +#: replication/logical/reorderbuffer.c:2427 replication/logical/reorderbuffer.c:2447 #, c-format msgid "could not read from reorderbuffer spill file: %m" -msgstr "n'a pas pu lire le fichier « reorderbuffer spill » : %m" +msgstr "n'a pas pu lire le fichier « reorderbuffer spill » : %m" -#: replication/logical/reorderbuffer.c:2424 replication/logical/reorderbuffer.c:2444 +#: replication/logical/reorderbuffer.c:2431 replication/logical/reorderbuffer.c:2451 #, c-format msgid "could not read from reorderbuffer spill file: read %d instead of %u bytes" msgstr "" -"n'a pas pu lire à partir du fichier « reorderbuffer spill » : a lu seulement %d octets\n" +"n'a pas pu lire à partir du fichier « reorderbuffer spill » : a lu seulement %d octets\n" "sur %u" -#: replication/logical/reorderbuffer.c:3100 +#: replication/logical/reorderbuffer.c:3107 #, c-format msgid "could not read from file \"%s\": read %d instead of %d bytes" -msgstr "n'a pas pu lire à partir du fichier « %s » : lu %d octets au lieu de %d octets" +msgstr "n'a pas pu lire à partir du fichier « %s » : lu %d octets au lieu de %d octets" -#: replication/logical/snapbuild.c:598 +#: replication/logical/snapbuild.c:646 #, c-format msgid "exported logical decoding snapshot: \"%s\" with %u transaction ID" msgid_plural "exported logical decoding snapshot: \"%s\" with %u transaction IDs" -msgstr[0] "snapshot exporté pour le décodage logique : « %s » avec %u identifiant de transaction" -msgstr[1] "snapshot exporté pour le décodage logique : « %s » avec %u identifiants de transaction" +msgstr[0] "snapshot exporté pour le décodage logique : « %s » avec %u identifiant de transaction" +msgstr[1] "snapshot exporté pour le décodage logique : « %s » avec %u identifiants de transaction" -#: replication/logical/snapbuild.c:917 replication/logical/snapbuild.c:1282 replication/logical/snapbuild.c:1813 +#: replication/logical/snapbuild.c:1243 replication/logical/snapbuild.c:1333 replication/logical/snapbuild.c:1808 #, c-format msgid "logical decoding found consistent point at %X/%X" -msgstr "le décodage logique a trouvé le point de cohérence à %X/%X" +msgstr "le décodage logique a trouvé le point de cohérence à %X/%X" -#: replication/logical/snapbuild.c:919 -#, c-format -msgid "Transaction ID %u finished; no more running transactions." -msgstr "Identifiant de transaction %u terminé ; plus de transactions en cours." - -#: replication/logical/snapbuild.c:1284 +#: replication/logical/snapbuild.c:1245 #, c-format msgid "There are no running transactions." msgstr "Il n'existe pas de transactions en cours." -#: replication/logical/snapbuild.c:1346 +#: replication/logical/snapbuild.c:1286 #, c-format msgid "logical decoding found initial starting point at %X/%X" -msgstr "le décodage logique a trouvé le point de démarrage à %X/%X" +msgstr "le décodage logique a trouvé le point de démarrage à %X/%X" + +#: replication/logical/snapbuild.c:1288 replication/logical/snapbuild.c:1311 +#, c-format +msgid "Waiting for transactions (approximately %d) older than %u to end." +msgstr "En attente de la fin des transactions (approximativement %d) plus anciennes que %u." -#: replication/logical/snapbuild.c:1348 +#: replication/logical/snapbuild.c:1309 #, c-format -msgid "%u transaction needs to finish." -msgid_plural "%u transactions need to finish." -msgstr[0] "La transaction %u doit se terminer." -msgstr[1] "Les transactions %u doivent se terminer." +msgid "logical decoding found initial consistent point at %X/%X" +msgstr "le décodage logique a trouvé le point initial de cohérence à %X/%X" -#: replication/logical/snapbuild.c:1687 replication/logical/snapbuild.c:1713 replication/logical/snapbuild.c:1727 replication/logical/snapbuild.c:1741 +#: replication/logical/snapbuild.c:1335 +#, c-format +msgid "There are no old transactions anymore." +msgstr "Il n'existe plus d'anciennes transactions." + +#: replication/logical/snapbuild.c:1687 replication/logical/snapbuild.c:1713 replication/logical/snapbuild.c:1728 replication/logical/snapbuild.c:1742 #, c-format msgid "could not read file \"%s\", read %d of %d: %m" -msgstr "n'a pas pu lire le fichier « %s », lu %d sur %d : %m" +msgstr "n'a pas pu lire le fichier « %s », lu %d sur %d : %m" #: replication/logical/snapbuild.c:1693 #, c-format msgid "snapbuild state file \"%s\" has wrong magic number: %u instead of %u" -msgstr "le fichier d'état snapbuild « %s » a le nombre magique: %u au lieu de %u" +msgstr "le fichier d'état snapbuild « %s » a le nombre magique: %u au lieu de %u" #: replication/logical/snapbuild.c:1698 #, c-format msgid "snapbuild state file \"%s\" has unsupported version: %u instead of %u" -msgstr "le fichier d'état snapbuild « %s » a une version non supportée : %u au lieu de %u" +msgstr "le fichier d'état snapbuild « %s » a une version non supportée : %u au lieu de %u" -#: replication/logical/snapbuild.c:1754 +#: replication/logical/snapbuild.c:1755 #, c-format msgid "checksum mismatch for snapbuild state file \"%s\": is %u, should be %u" msgstr "" -"différence de somme de contrôle pour lefichier d'état snapbuild %s :\n" -"est %u, devrait être %u" +"différence de somme de contrôle pour lefichier d'état snapbuild %s :\n" +"est %u, devrait être %u" -#: replication/logical/snapbuild.c:1815 +#: replication/logical/snapbuild.c:1810 #, c-format msgid "Logical decoding will begin using saved snapshot." -msgstr "Le décodage logique commencera en utilisant un snapshot sauvegardé." +msgstr "Le décodage logique commencera en utilisant un snapshot sauvegardé." -#: replication/logical/snapbuild.c:1888 +#: replication/logical/snapbuild.c:1881 #, c-format msgid "could not parse file name \"%s\"" -msgstr "n'a pas pu analyser le mode du fichier « %s »" +msgstr "n'a pas pu analyser le mode du fichier « %s »" #: replication/slot.c:183 #, c-format msgid "replication slot name \"%s\" is too short" -msgstr "le nom du slot de réplication « %s » est trop court" +msgstr "le nom du slot de réplication « %s » est trop court" #: replication/slot.c:192 #, c-format msgid "replication slot name \"%s\" is too long" -msgstr "le nom du slot de réplication « %s » est trop long" +msgstr "le nom du slot de réplication « %s » est trop long" #: replication/slot.c:205 #, c-format msgid "replication slot name \"%s\" contains invalid character" -msgstr "le nom du slot de réplication « %s » contient un caractère invalide" +msgstr "le nom du slot de réplication « %s » contient un caractère invalide" #: replication/slot.c:207 #, c-format msgid "Replication slot names may only contain lower case letters, numbers, and the underscore character." -msgstr "Les noms des slots de réplication peuvent seulement contenir des lettres, des nombres et des tirets bas." +msgstr "Les noms des slots de réplication peuvent seulement contenir des lettres, des nombres et des tirets bas." #: replication/slot.c:254 #, c-format msgid "replication slot \"%s\" already exists" -msgstr "le slot de réplication « %s » existe déjà" +msgstr "le slot de réplication « %s » existe déjà" #: replication/slot.c:264 #, c-format msgid "all replication slots are in use" -msgstr "tous les slots de réplication sont utilisés" +msgstr "tous les slots de réplication sont utilisés" #: replication/slot.c:265 #, c-format msgid "Free one or increase max_replication_slots." -msgstr "Libérez un slot ou augmentez max_replication_slots." +msgstr "Libérez un slot ou augmentez max_replication_slots." #: replication/slot.c:361 #, c-format msgid "replication slot \"%s\" does not exist" -msgstr "le slot de réplication « %s » n'existe pas" +msgstr "le slot de réplication « %s » n'existe pas" #: replication/slot.c:365 #, c-format msgid "replication slot \"%s\" is active for PID %d" -msgstr "le slot de réplication « %s » est actif pour le PID %d" +msgstr "le slot de réplication « %s » est actif pour le PID %d" -#: replication/slot.c:511 replication/slot.c:923 replication/slot.c:1260 +#: replication/slot.c:527 replication/slot.c:940 replication/slot.c:1277 #, c-format msgid "could not remove directory \"%s\"" -msgstr "n'a pas pu supprimer le répertoire « %s »" +msgstr "n'a pas pu supprimer le répertoire « %s »" -#: replication/slot.c:772 +#: replication/slot.c:789 #, c-format msgid "replication slots can only be used if max_replication_slots > 0" -msgstr "les slots de réplications peuvent seulement être utilisés si max_replication_slots > 0" +msgstr "les slots de réplications peuvent seulement être utilisés si max_replication_slots > 0" -#: replication/slot.c:777 +#: replication/slot.c:794 #, c-format msgid "replication slots can only be used if wal_level >= replica" -msgstr "les slots de réplication peuvent seulement être utilisés si wal_level >= replica" +msgstr "les slots de réplication peuvent seulement être utilisés si wal_level >= replica" -#: replication/slot.c:1192 replication/slot.c:1230 +#: replication/slot.c:1209 replication/slot.c:1247 #, c-format msgid "could not read file \"%s\", read %d of %u: %m" -msgstr "n'a pas pu lire le fichier « %s », a lu %d sur %u : %m" +msgstr "n'a pas pu lire le fichier « %s », a lu %d sur %u : %m" -#: replication/slot.c:1201 +#: replication/slot.c:1218 #, c-format msgid "replication slot file \"%s\" has wrong magic number: %u instead of %u" -msgstr "le fichier « %s » du slot de réplication a le nombre magique %u au lieu de %u" +msgstr "le fichier « %s » du slot de réplication a le nombre magique %u au lieu de %u" -#: replication/slot.c:1208 +#: replication/slot.c:1225 #, c-format msgid "replication slot file \"%s\" has unsupported version %u" -msgstr "le fichier « %s » du slot de réplication a une version %u non supportée" +msgstr "le fichier « %s » du slot de réplication a une version %u non supportée" -#: replication/slot.c:1215 +#: replication/slot.c:1232 #, c-format msgid "replication slot file \"%s\" has corrupted length %u" -msgstr "le slot de réplication « %s » a une taille %u corrompue" +msgstr "le slot de réplication « %s » a une taille %u corrompue" -#: replication/slot.c:1245 +#: replication/slot.c:1262 #, c-format msgid "checksum mismatch for replication slot file \"%s\": is %u, should be %u" -msgstr "différence de somme de contrôle pour le fichier de slot de réplication « %s » : est %u, devrait être %u" +msgstr "différence de somme de contrôle pour le fichier de slot de réplication « %s » : est %u, devrait être %u" -#: replication/slot.c:1298 +#: replication/slot.c:1315 #, c-format msgid "too many replication slots active before shutdown" -msgstr "trop de slots de réplication actifs avant l'arrêt" +msgstr "trop de slots de réplication actifs avant l'arrêt" #: replication/syncrep.c:221 #, c-format msgid "canceling the wait for synchronous replication and terminating connection due to administrator command" msgstr "" -"annulation de l'attente pour la réplication synchrone et arrêt des connexions\n" -"suite à la demande de l'administrateur" +"annulation de l'attente pour la réplication synchrone et arrêt des connexions\n" +"suite à la demande de l'administrateur" #: replication/syncrep.c:222 replication/syncrep.c:239 #, c-format msgid "The transaction has already committed locally, but might not have been replicated to the standby." msgstr "" -"La transaction a déjà enregistré les données localement, mais il se peut que\n" -"cela n'ait pas été répliqué sur le serveur en standby." +"La transaction a déjà enregistré les données localement, mais il se peut que\n" +"cela n'ait pas été répliqué sur le serveur en standby." #: replication/syncrep.c:238 #, c-format msgid "canceling wait for synchronous replication due to user request" -msgstr "annulation de l'attente pour la réplication synchrone à la demande de l'utilisateur" +msgstr "annulation de l'attente pour la réplication synchrone à la demande de l'utilisateur" -#: replication/syncrep.c:368 +#: replication/syncrep.c:371 #, c-format msgid "standby \"%s\" now has synchronous standby priority %u" msgstr "" -"le serveur « %s » en standby a maintenant une priorité %u en tant que standby\n" +"le serveur « %s » en standby a maintenant une priorité %u en tant que standby\n" "synchrone" -#: replication/syncrep.c:428 +#: replication/syncrep.c:431 #, c-format msgid "standby \"%s\" is now a synchronous standby with priority %u" -msgstr "le serveur « %s » en standby est maintenant un serveur standby synchrone de priorité %u" +msgstr "le serveur « %s » en standby est maintenant un serveur standby synchrone de priorité %u" -#: replication/syncrep.c:921 +#: replication/syncrep.c:931 #, c-format msgid "synchronous_standby_names parser failed" -msgstr "l'analyseur du paramètre synchronous_standby_names a échoué" +msgstr "l'analyseur du paramètre synchronous_standby_names a échoué" + +#: replication/syncrep.c:937 +#, c-format +msgid "number of synchronous standbys (%d) must be greater than zero" +msgstr "le nombre de standbys synchrones (%d) doit être supérieur à zéro" #: replication/walreceiver.c:173 #, c-format msgid "terminating walreceiver process due to administrator command" -msgstr "arrêt du processus walreceiver suite à la demande de l'administrateur" +msgstr "arrêt du processus walreceiver suite à la demande de l'administrateur" #: replication/walreceiver.c:344 #, c-format msgid "highest timeline %u of the primary is behind recovery timeline %u" -msgstr "la plus grande timeline %u du serveur principal est derrière la timeline de restauration %u" +msgstr "la plus grande timeline %u du serveur principal est derrière la timeline de restauration %u" #: replication/walreceiver.c:377 #, c-format msgid "started streaming WAL from primary at %X/%X on timeline %u" -msgstr "Commence le flux des journaux depuis le principal à %X/%X sur la timeline %u" +msgstr "Commence le flux des journaux depuis le principal à %X/%X sur la timeline %u" #: replication/walreceiver.c:382 #, c-format msgid "restarted WAL streaming at %X/%X on timeline %u" -msgstr "recommence le flux WAL à %X/%X sur la timeline %u" +msgstr "recommence le flux WAL à %X/%X sur la timeline %u" #: replication/walreceiver.c:411 #, c-format msgid "cannot continue WAL streaming, recovery has already ended" -msgstr "ne peut pas continuer le flux de journaux de transactions, la récupération est déjà terminée" +msgstr "ne peut pas continuer le flux de journaux de transactions, la récupération est déjà terminée" #: replication/walreceiver.c:448 #, c-format msgid "replication terminated by primary server" -msgstr "réplication terminée par le serveur primaire" +msgstr "réplication terminée par le serveur primaire" #: replication/walreceiver.c:449 #, c-format msgid "End of WAL reached on timeline %u at %X/%X." -msgstr "Fin du WAL atteint sur la timeline %u à %X/%X" +msgstr "Fin du WAL atteint sur la timeline %u à %X/%X" #: replication/walreceiver.c:543 #, c-format msgid "terminating walreceiver due to timeout" -msgstr "arrêt du processus walreceiver suite à l'expiration du délai de réplication" +msgstr "arrêt du processus walreceiver suite à l'expiration du délai de réplication" #: replication/walreceiver.c:583 #, c-format msgid "primary server contains no more WAL on requested timeline %u" -msgstr "le serveur principal ne contient plus de WAL sur la timeline %u demandée" +msgstr "le serveur principal ne contient plus de WAL sur la timeline %u demandée" #: replication/walreceiver.c:598 replication/walreceiver.c:957 #, c-format @@ -16046,683 +15844,688 @@ msgstr "n'a pas pu fermer le journal de transactions %s : %m" #: replication/walreceiver.c:722 #, c-format msgid "fetching timeline history file for timeline %u from primary server" -msgstr "récupération du fichier historique pour la timeline %u à partir du serveur principal" +msgstr "récupération du fichier historique pour la timeline %u à partir du serveur principal" #: replication/walreceiver.c:1011 #, c-format msgid "could not write to log segment %s at offset %u, length %lu: %m" -msgstr "n'a pas pu écrire le journal de transactions %s au décalage %u, longueur %lu : %m" +msgstr "n'a pas pu écrire le journal de transactions %s au décalage %u, longueur %lu : %m" -#: replication/walsender.c:485 +#: replication/walsender.c:490 #, c-format msgid "could not seek to beginning of file \"%s\": %m" -msgstr "n'a pas pu se déplacer au début du fichier « %s » : %m" +msgstr "n'a pas pu se déplacer au début du fichier « %s » : %m" -#: replication/walsender.c:536 +#: replication/walsender.c:541 #, c-format msgid "cannot use a logical replication slot for physical replication" -msgstr "ne peut pas utiliser un slot de réplication logique pour une réplication physique" +msgstr "ne peut pas utiliser un slot de réplication logique pour une réplication physique" -#: replication/walsender.c:599 +#: replication/walsender.c:604 #, c-format msgid "requested starting point %X/%X on timeline %u is not in this server's history" msgstr "le point de reprise %X/%X de la timeline %u n'est pas dans l'historique du serveur" -#: replication/walsender.c:603 +#: replication/walsender.c:608 #, c-format msgid "This server's history forked from timeline %u at %X/%X." -msgstr "L'historique du serveur a changé à partir de la timeline %u à %X/%X." +msgstr "L'historique du serveur a changé à partir de la timeline %u à %X/%X." -#: replication/walsender.c:648 +#: replication/walsender.c:653 #, c-format msgid "requested starting point %X/%X is ahead of the WAL flush position of this server %X/%X" msgstr "le point de reprise requis %X/%X est devant la position de vidage des WAL de ce serveur %X/%X" -#: replication/walsender.c:974 +#: replication/walsender.c:977 #, c-format msgid "terminating walsender process after promotion" -msgstr "arrêt du processus walreceiver suite promotion" +msgstr "arrêt du processus walreceiver suite promotion" -#: replication/walsender.c:1300 +#: replication/walsender.c:1333 +#, c-format +msgid "cannot execute new commands while WAL sender is in stopping mode" +msgstr "ne peut pas exécuter de nouvelles commandes lorsque le walsender est en mode d'arrêt" + +#: replication/walsender.c:1341 #, c-format msgid "received replication command: %s" -msgstr "commande de réplication reçu : %s" +msgstr "commande de réplication reçu : %s" -#: replication/walsender.c:1391 replication/walsender.c:1407 +#: replication/walsender.c:1440 replication/walsender.c:1456 #, c-format msgid "unexpected EOF on standby connection" msgstr "fin de fichier (EOF) inattendue de la connexion du serveur en attente" -#: replication/walsender.c:1421 +#: replication/walsender.c:1470 #, c-format msgid "unexpected standby message type \"%c\", after receiving CopyDone" -msgstr "type de message standby « %c » inattendu, après avoir reçu CopyDone" +msgstr "type de message standby « %c » inattendu, après avoir reçu CopyDone" -#: replication/walsender.c:1459 +#: replication/walsender.c:1508 #, c-format msgid "invalid standby message type \"%c\"" -msgstr "type de message « %c » invalide pour le serveur en standby" +msgstr "type de message « %c » invalide pour le serveur en standby" -#: replication/walsender.c:1500 +#: replication/walsender.c:1549 #, c-format msgid "unexpected message type \"%c\"" -msgstr "type de message « %c » inattendu" +msgstr "type de message « %c » inattendu" -#: replication/walsender.c:1784 +#: replication/walsender.c:1833 #, c-format msgid "terminating walsender process due to replication timeout" -msgstr "arrêt du processus walreceiver suite à l'expiration du délai de réplication" +msgstr "arrêt du processus walreceiver suite à l'expiration du délai de réplication" -#: replication/walsender.c:1877 +#: replication/walsender.c:1919 #, c-format msgid "standby \"%s\" has now caught up with primary" -msgstr "le serveur standby « %s » a maintenant rattrapé le serveur primaire" +msgstr "le serveur standby « %s » a maintenant rattrapé le serveur primaire" -#: replication/walsender.c:1980 +#: replication/walsender.c:2022 #, c-format msgid "number of requested standby connections exceeds max_wal_senders (currently %d)" msgstr "" -"le nombre de connexions demandées par le serveur en attente dépasse\n" +"le nombre de connexions demandées par le serveur en attente dépasse\n" "max_wal_senders (actuellement %d)" #: rewrite/rewriteDefine.c:112 rewrite/rewriteDefine.c:973 #, c-format msgid "rule \"%s\" for relation \"%s\" already exists" -msgstr "la règle « %s » existe déjà pour la relation « %s »" +msgstr "la règle « %s » existe déjà pour la relation « %s »" #: rewrite/rewriteDefine.c:297 #, c-format msgid "rule actions on OLD are not implemented" -msgstr "les actions de la règle sur OLD ne sont pas implémentées" +msgstr "les actions de la règle sur OLD ne sont pas implémentées" #: rewrite/rewriteDefine.c:298 #, c-format msgid "Use views or triggers instead." -msgstr "Utilisez à la place des vues ou des triggers." +msgstr "Utilisez à la place des vues ou des triggers." #: rewrite/rewriteDefine.c:302 #, c-format msgid "rule actions on NEW are not implemented" -msgstr "les actions de la règle sur NEW ne sont pas implémentées" +msgstr "les actions de la règle sur NEW ne sont pas implémentées" #: rewrite/rewriteDefine.c:303 #, c-format msgid "Use triggers instead." -msgstr "Utilisez des triggers à la place." +msgstr "Utilisez des triggers à la place." #: rewrite/rewriteDefine.c:316 #, c-format msgid "INSTEAD NOTHING rules on SELECT are not implemented" -msgstr "les règles INSTEAD NOTHING sur SELECT ne sont pas implémentées" +msgstr "les règles INSTEAD NOTHING sur SELECT ne sont pas implémentées" #: rewrite/rewriteDefine.c:317 #, c-format msgid "Use views instead." -msgstr "Utilisez les vues à la place." +msgstr "Utilisez les vues à la place." #: rewrite/rewriteDefine.c:325 #, c-format msgid "multiple actions for rules on SELECT are not implemented" -msgstr "les actions multiples pour les règles sur SELECT ne sont pas implémentées" +msgstr "les actions multiples pour les règles sur SELECT ne sont pas implémentées" #: rewrite/rewriteDefine.c:336 #, c-format msgid "rules on SELECT must have action INSTEAD SELECT" -msgstr "les règles sur SELECT doivent avoir une action INSTEAD SELECT" +msgstr "les règles sur SELECT doivent avoir une action INSTEAD SELECT" #: rewrite/rewriteDefine.c:344 #, c-format msgid "rules on SELECT must not contain data-modifying statements in WITH" msgstr "" -"les règles sur SELECT ne doivent pas contenir d'instructions de modification\n" -"de données avec WITH" +"les règles sur SELECT ne doivent pas contenir d'instructions de modification\n" +"de données avec WITH" #: rewrite/rewriteDefine.c:352 #, c-format msgid "event qualifications are not implemented for rules on SELECT" msgstr "" -"les qualifications d'événements ne sont pas implémentées pour les règles sur\n" +"les qualifications d'événements ne sont pas implémentées pour les règles sur\n" "SELECT" #: rewrite/rewriteDefine.c:379 #, c-format msgid "\"%s\" is already a view" -msgstr "« %s » est déjà une vue" +msgstr "« %s » est déjà une vue" #: rewrite/rewriteDefine.c:403 #, c-format msgid "view rule for \"%s\" must be named \"%s\"" -msgstr "la règle de la vue pour « %s » doit être nommée « %s »" +msgstr "la règle de la vue pour « %s » doit être nommée « %s »" #: rewrite/rewriteDefine.c:432 #, c-format msgid "could not convert table \"%s\" to a view because it is not empty" -msgstr "n'a pas pu convertir la table « %s » en une vue car elle n'est pas vide" +msgstr "n'a pas pu convertir la table « %s » en une vue car elle n'est pas vide" #: rewrite/rewriteDefine.c:440 #, c-format msgid "could not convert table \"%s\" to a view because it has triggers" -msgstr "n'a pas pu convertir la table « %s » en une vue parce qu'elle a des triggers" +msgstr "n'a pas pu convertir la table « %s » en une vue parce qu'elle a des triggers" #: rewrite/rewriteDefine.c:442 #, c-format msgid "In particular, the table cannot be involved in any foreign key relationships." msgstr "" -"En particulier, la table ne peut pas être impliquée dans les relations des\n" -"clés étrangères." +"En particulier, la table ne peut pas être impliquée dans les relations des\n" +"clés étrangères." #: rewrite/rewriteDefine.c:447 #, c-format msgid "could not convert table \"%s\" to a view because it has indexes" -msgstr "n'a pas pu convertir la table « %s » en une vue parce qu'elle a des index" +msgstr "n'a pas pu convertir la table « %s » en une vue parce qu'elle a des index" #: rewrite/rewriteDefine.c:453 #, c-format msgid "could not convert table \"%s\" to a view because it has child tables" -msgstr "n'a pas pu convertir la table « %s » en une vue parce qu'elle a des tables filles" +msgstr "n'a pas pu convertir la table « %s » en une vue parce qu'elle a des tables filles" #: rewrite/rewriteDefine.c:459 #, c-format msgid "could not convert table \"%s\" to a view because it has row security enabled" -msgstr "n'a pas pu convertir la table « %s » en une vue parce que le mode sécurité des lignes est activé pour elle" +msgstr "n'a pas pu convertir la table « %s » en une vue parce que le mode sécurité des lignes est activé pour elle" #: rewrite/rewriteDefine.c:465 #, c-format msgid "could not convert table \"%s\" to a view because it has row security policies" -msgstr "n'a pas pu convertir la table « %s » en une vue parce qu'elle a des politiques de sécurité" +msgstr "n'a pas pu convertir la table « %s » en une vue parce qu'elle a des politiques de sécurité" #: rewrite/rewriteDefine.c:492 #, c-format msgid "cannot have multiple RETURNING lists in a rule" -msgstr "ne peut pas avoir plusieurs listes RETURNING dans une règle" +msgstr "ne peut pas avoir plusieurs listes RETURNING dans une règle" #: rewrite/rewriteDefine.c:497 #, c-format msgid "RETURNING lists are not supported in conditional rules" -msgstr "les listes RETURNING ne sont pas supportés dans des règles conditionnelles" +msgstr "les listes RETURNING ne sont pas supportés dans des règles conditionnelles" #: rewrite/rewriteDefine.c:501 #, c-format msgid "RETURNING lists are not supported in non-INSTEAD rules" -msgstr "les listes RETURNING ne sont pas supportés dans des règles autres que INSTEAD" +msgstr "les listes RETURNING ne sont pas supportés dans des règles autres que INSTEAD" #: rewrite/rewriteDefine.c:667 #, c-format msgid "SELECT rule's target list has too many entries" -msgstr "la liste cible de la règle SELECT a trop d'entrées" +msgstr "la liste cible de la règle SELECT a trop d'entrées" #: rewrite/rewriteDefine.c:668 #, c-format msgid "RETURNING list has too many entries" -msgstr "la liste RETURNING a trop d'entrées" +msgstr "la liste RETURNING a trop d'entrées" #: rewrite/rewriteDefine.c:695 #, c-format msgid "cannot convert relation containing dropped columns to view" -msgstr "ne peut pas convertir la relation contenant les colonnes supprimées de la vue" +msgstr "ne peut pas convertir la relation contenant les colonnes supprimées de la vue" #: rewrite/rewriteDefine.c:696 #, c-format msgid "cannot create a RETURNING list for a relation containing dropped columns" -msgstr "ne peut pas créer une liste RETURNING pour une relation contenant des colonnes supprimées" +msgstr "ne peut pas créer une liste RETURNING pour une relation contenant des colonnes supprimées" #: rewrite/rewriteDefine.c:702 #, c-format msgid "SELECT rule's target entry %d has different column name from column \"%s\"" -msgstr "l'entrée cible de la règle SELECT %d a un nom de colonne différent pour la colonne « %s »" +msgstr "l'entrée cible de la règle SELECT %d a un nom de colonne différent pour la colonne « %s »" #: rewrite/rewriteDefine.c:704 #, c-format msgid "SELECT target entry is named \"%s\"." -msgstr "l'entrée cible de la règle SELECT est nommé « %s »." +msgstr "l'entrée cible de la règle SELECT est nommé « %s »." #: rewrite/rewriteDefine.c:713 #, c-format msgid "SELECT rule's target entry %d has different type from column \"%s\"" -msgstr "l'entrée cible de la règle SELECT %d a plusieurs types pour la colonne « %s »" +msgstr "l'entrée cible de la règle SELECT %d a plusieurs types pour la colonne « %s »" #: rewrite/rewriteDefine.c:715 #, c-format msgid "RETURNING list's entry %d has different type from column \"%s\"" -msgstr "l'entrée %d de la liste RETURNING a un type différent de la colonne « %s »" +msgstr "l'entrée %d de la liste RETURNING a un type différent de la colonne « %s »" #: rewrite/rewriteDefine.c:718 rewrite/rewriteDefine.c:742 #, c-format msgid "SELECT target entry has type %s, but column has type %s." -msgstr "l'entrée de la liste SELECT a le type %s alors que la colonne a le type %s." +msgstr "l'entrée de la liste SELECT a le type %s alors que la colonne a le type %s." #: rewrite/rewriteDefine.c:721 rewrite/rewriteDefine.c:746 #, c-format msgid "RETURNING list entry has type %s, but column has type %s." -msgstr "l'entrée de la liste RETURNING a le type %s alors que la colonne a le type %s." +msgstr "l'entrée de la liste RETURNING a le type %s alors que la colonne a le type %s." #: rewrite/rewriteDefine.c:737 #, c-format msgid "SELECT rule's target entry %d has different size from column \"%s\"" -msgstr "l'entrée cible de la règle SELECT %d a plusieurs tailles pour la colonne « %s »" +msgstr "l'entrée cible de la règle SELECT %d a plusieurs tailles pour la colonne « %s »" #: rewrite/rewriteDefine.c:739 #, c-format msgid "RETURNING list's entry %d has different size from column \"%s\"" -msgstr "l'entrée %d de la liste RETURNING a plusieurs tailles pour la colonne « %s »" +msgstr "l'entrée %d de la liste RETURNING a plusieurs tailles pour la colonne « %s »" #: rewrite/rewriteDefine.c:756 #, c-format msgid "SELECT rule's target list has too few entries" -msgstr "l'entrée cible de la règle SELECT n'a pas assez d'entrées" +msgstr "l'entrée cible de la règle SELECT n'a pas assez d'entrées" #: rewrite/rewriteDefine.c:757 #, c-format msgid "RETURNING list has too few entries" -msgstr "la liste RETURNING n'a pas assez d'entrées" +msgstr "la liste RETURNING n'a pas assez d'entrées" #: rewrite/rewriteDefine.c:849 rewrite/rewriteDefine.c:964 rewrite/rewriteSupport.c:112 #, c-format msgid "rule \"%s\" for relation \"%s\" does not exist" -msgstr "la règle « %s » de la relation « %s » n'existe pas" +msgstr "la règle « %s » de la relation « %s » n'existe pas" #: rewrite/rewriteDefine.c:983 #, c-format msgid "renaming an ON SELECT rule is not allowed" -msgstr "le renommage d'une règle ON SELECT n'est pas autorisé" +msgstr "le renommage d'une règle ON SELECT n'est pas autorisé" #: rewrite/rewriteHandler.c:528 #, c-format msgid "WITH query name \"%s\" appears in both a rule action and the query being rewritten" msgstr "" -"Le nom de la requête WITH «%s » apparaît à la fois dans l'action d'une règle\n" -"et la requête en cours de ré-écriture." +"Le nom de la requête WITH «%s » apparaît à la fois dans l'action d'une règle\n" +"et la requête en cours de ré-écriture." #: rewrite/rewriteHandler.c:588 #, c-format msgid "cannot have RETURNING lists in multiple rules" -msgstr "ne peut pas avoir des listes RETURNING dans plusieurs règles" +msgstr "ne peut pas avoir des listes RETURNING dans plusieurs règles" -#: rewrite/rewriteHandler.c:928 rewrite/rewriteHandler.c:946 +#: rewrite/rewriteHandler.c:949 rewrite/rewriteHandler.c:967 #, c-format msgid "multiple assignments to same column \"%s\"" -msgstr "affectations multiples pour la même colonne « %s »" +msgstr "affectations multiples pour la même colonne « %s »" -#: rewrite/rewriteHandler.c:1721 rewrite/rewriteHandler.c:3331 +#: rewrite/rewriteHandler.c:1752 rewrite/rewriteHandler.c:3362 #, c-format msgid "infinite recursion detected in rules for relation \"%s\"" -msgstr "récursion infinie détectée dans les règles de la relation « %s »" +msgstr "récursion infinie détectée dans les règles de la relation « %s »" -#: rewrite/rewriteHandler.c:1806 +#: rewrite/rewriteHandler.c:1837 #, c-format msgid "infinite recursion detected in policy for relation \"%s\"" -msgstr "récursion infinie détectée dans la politique pour la relation « %s »" +msgstr "récursion infinie détectée dans la politique pour la relation « %s »" -#: rewrite/rewriteHandler.c:2123 +#: rewrite/rewriteHandler.c:2154 msgid "Junk view columns are not updatable." -msgstr "Les colonnes « junk » des vues ne sont pas automatiquement disponibles en écriture." +msgstr "Les colonnes « junk » des vues ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2128 +#: rewrite/rewriteHandler.c:2159 msgid "View columns that are not columns of their base relation are not updatable." -msgstr "Les colonnes des vues qui ne font pas référence à des colonnes de la relation de base ne sont pas automatiquement modifiables." +msgstr "Les colonnes des vues qui ne font pas référence à des colonnes de la relation de base ne sont pas automatiquement modifiables." -#: rewrite/rewriteHandler.c:2131 +#: rewrite/rewriteHandler.c:2162 msgid "View columns that refer to system columns are not updatable." -msgstr "Les colonnes des vues qui font référence à des colonnes systèmes ne sont pas automatiquement modifiables." +msgstr "Les colonnes des vues qui font référence à des colonnes systèmes ne sont pas automatiquement modifiables." -#: rewrite/rewriteHandler.c:2134 +#: rewrite/rewriteHandler.c:2165 msgid "View columns that return whole-row references are not updatable." -msgstr "Les colonnes de vue qui font références à des lignes complètes ne sont pas automatiquement modifiables." +msgstr "Les colonnes de vue qui font références à des lignes complètes ne sont pas automatiquement modifiables." -#: rewrite/rewriteHandler.c:2192 +#: rewrite/rewriteHandler.c:2223 msgid "Views containing DISTINCT are not automatically updatable." -msgstr "Les vues contenant DISTINCT ne sont pas automatiquement disponibles en écriture." +msgstr "Les vues contenant DISTINCT ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2195 +#: rewrite/rewriteHandler.c:2226 msgid "Views containing GROUP BY are not automatically updatable." -msgstr "Les vues contenant GROUP BY ne sont pas automatiquement disponibles en écriture." +msgstr "Les vues contenant GROUP BY ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2198 +#: rewrite/rewriteHandler.c:2229 msgid "Views containing HAVING are not automatically updatable." -msgstr "Les vues contenant HAVING ne sont pas automatiquement disponibles en écriture." +msgstr "Les vues contenant HAVING ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2201 +#: rewrite/rewriteHandler.c:2232 msgid "Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable." -msgstr "Les vues contenant UNION, INTERSECT ou EXCEPT ne sont pas automatiquement disponibles en écriture." +msgstr "Les vues contenant UNION, INTERSECT ou EXCEPT ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2204 +#: rewrite/rewriteHandler.c:2235 msgid "Views containing WITH are not automatically updatable." -msgstr "Les vues contenant WITH ne sont pas automatiquement disponibles en écriture." +msgstr "Les vues contenant WITH ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2207 +#: rewrite/rewriteHandler.c:2238 msgid "Views containing LIMIT or OFFSET are not automatically updatable." -msgstr "Les vues contenant LIMIT ou OFFSET ne sont pas automatiquement disponibles en écriture." +msgstr "Les vues contenant LIMIT ou OFFSET ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2219 +#: rewrite/rewriteHandler.c:2250 msgid "Views that return aggregate functions are not automatically updatable." -msgstr "Les vues qui renvoient des fonctions d'agrégat ne sont pas automatiquement disponibles en écriture." +msgstr "Les vues qui renvoient des fonctions d'agrégat ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2222 +#: rewrite/rewriteHandler.c:2253 msgid "Views that return window functions are not automatically updatable." -msgstr "Les vues qui renvoient des fonctions de fenêtrage ne sont pas automatiquement disponibles en écriture." +msgstr "Les vues qui renvoient des fonctions de fenêtrage ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2225 +#: rewrite/rewriteHandler.c:2256 msgid "Views that return set-returning functions are not automatically updatable." -msgstr "Les vues qui renvoient des fonctions à plusieurs lignes ne sont pas automatiquement disponibles en écriture." +msgstr "Les vues qui renvoient des fonctions à plusieurs lignes ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2232 rewrite/rewriteHandler.c:2236 rewrite/rewriteHandler.c:2243 +#: rewrite/rewriteHandler.c:2263 rewrite/rewriteHandler.c:2267 rewrite/rewriteHandler.c:2274 msgid "Views that do not select from a single table or view are not automatically updatable." -msgstr "Les vues qui lisent plusieurs tables ou vues ne sont pas automatiquement disponibles en écriture." +msgstr "Les vues qui lisent plusieurs tables ou vues ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2246 +#: rewrite/rewriteHandler.c:2277 msgid "Views containing TABLESAMPLE are not automatically updatable." -msgstr "Les vues contenant TABLESAMPLE ne sont pas automatiquement disponibles en écriture." +msgstr "Les vues contenant TABLESAMPLE ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2270 +#: rewrite/rewriteHandler.c:2301 msgid "Views that have no updatable columns are not automatically updatable." -msgstr "Les vues qui possèdent des colonnes non modifiables ne sont pas automatiquement disponibles en écriture." +msgstr "Les vues qui possèdent des colonnes non modifiables ne sont pas automatiquement disponibles en écriture." -#: rewrite/rewriteHandler.c:2724 +#: rewrite/rewriteHandler.c:2755 #, c-format msgid "cannot insert into column \"%s\" of view \"%s\"" -msgstr "ne peut pas insérer dans la colonne « %s » de la vue « %s »" +msgstr "ne peut pas insérer dans la colonne « %s » de la vue « %s »" -#: rewrite/rewriteHandler.c:2732 +#: rewrite/rewriteHandler.c:2763 #, c-format msgid "cannot update column \"%s\" of view \"%s\"" -msgstr "ne peut pas mettre à jour la colonne « %s » de la vue « %s »" +msgstr "ne peut pas mettre à jour la colonne « %s » de la vue « %s »" -#: rewrite/rewriteHandler.c:3130 +#: rewrite/rewriteHandler.c:3161 #, c-format msgid "DO INSTEAD NOTHING rules are not supported for data-modifying statements in WITH" msgstr "" -"les règles DO INSTEAD NOTHING ne sont pas supportées par les instructions\n" -"de modification de données dans WITH" +"les règles DO INSTEAD NOTHING ne sont pas supportées par les instructions\n" +"de modification de données dans WITH" -#: rewrite/rewriteHandler.c:3144 +#: rewrite/rewriteHandler.c:3175 #, c-format msgid "conditional DO INSTEAD rules are not supported for data-modifying statements in WITH" msgstr "" -"les règles DO INSTEAD conditionnelles ne sont pas supportées par les\n" -"instructions de modification de données dans WITH" +"les règles DO INSTEAD conditionnelles ne sont pas supportées par les\n" +"instructions de modification de données dans WITH" -#: rewrite/rewriteHandler.c:3148 +#: rewrite/rewriteHandler.c:3179 #, c-format msgid "DO ALSO rules are not supported for data-modifying statements in WITH" msgstr "" -"les règles DO ALSO ne sont pas supportées par les instructions de modification\n" -"de données dans WITH" +"les règles DO ALSO ne sont pas supportées par les instructions de modification\n" +"de données dans WITH" -#: rewrite/rewriteHandler.c:3153 +#: rewrite/rewriteHandler.c:3184 #, c-format msgid "multi-statement DO INSTEAD rules are not supported for data-modifying statements in WITH" msgstr "" -"les règles DO INSTEAD multi-instructions ne sont pas supportées pour les\n" -"instructions de modification de données dans WITH" +"les règles DO INSTEAD multi-instructions ne sont pas supportées pour les\n" +"instructions de modification de données dans WITH" -#: rewrite/rewriteHandler.c:3368 +#: rewrite/rewriteHandler.c:3399 #, c-format msgid "cannot perform INSERT RETURNING on relation \"%s\"" -msgstr "ne peut pas exécuter INSERT RETURNING sur la relation « %s »" +msgstr "ne peut pas exécuter INSERT RETURNING sur la relation « %s »" -#: rewrite/rewriteHandler.c:3370 +#: rewrite/rewriteHandler.c:3401 #, c-format msgid "You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." msgstr "" -"Vous avez besoin d'une règle ON INSERT DO INSTEAD sans condition avec une\n" +"Vous avez besoin d'une règle ON INSERT DO INSTEAD sans condition avec une\n" "clause RETURNING." -#: rewrite/rewriteHandler.c:3375 +#: rewrite/rewriteHandler.c:3406 #, c-format msgid "cannot perform UPDATE RETURNING on relation \"%s\"" -msgstr "ne peut pas exécuter UPDATE RETURNING sur la relation « %s »" +msgstr "ne peut pas exécuter UPDATE RETURNING sur la relation « %s »" -#: rewrite/rewriteHandler.c:3377 +#: rewrite/rewriteHandler.c:3408 #, c-format msgid "You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause." msgstr "" -"Vous avez besoin d'une règle ON UPDATE DO INSTEAD sans condition avec une\n" +"Vous avez besoin d'une règle ON UPDATE DO INSTEAD sans condition avec une\n" "clause RETURNING." -#: rewrite/rewriteHandler.c:3382 +#: rewrite/rewriteHandler.c:3413 #, c-format msgid "cannot perform DELETE RETURNING on relation \"%s\"" -msgstr "ne peut pas exécuter DELETE RETURNING sur la relation « %s »" +msgstr "ne peut pas exécuter DELETE RETURNING sur la relation « %s »" -#: rewrite/rewriteHandler.c:3384 +#: rewrite/rewriteHandler.c:3415 #, c-format msgid "You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause." msgstr "" -"Vous avez besoin d'une règle ON DELETE DO INSTEAD sans condition avec une\n" +"Vous avez besoin d'une règle ON DELETE DO INSTEAD sans condition avec une\n" "clause RETURNING." -#: rewrite/rewriteHandler.c:3402 +#: rewrite/rewriteHandler.c:3433 #, c-format msgid "INSERT with ON CONFLICT clause cannot be used with table that has INSERT or UPDATE rules" -msgstr "INSERT avec une clause ON CONFLICT ne peut pas être utilisée avec une table qui a des règles pour INSERT ou UPDATE" +msgstr "INSERT avec une clause ON CONFLICT ne peut pas être utilisée avec une table qui a des règles pour INSERT ou UPDATE" -#: rewrite/rewriteHandler.c:3459 +#: rewrite/rewriteHandler.c:3490 #, c-format msgid "WITH cannot be used in a query that is rewritten by rules into multiple queries" -msgstr "WITH ne peut pas être utilisé dans une requête réécrite par des règles en plusieurs requêtes" +msgstr "WITH ne peut pas être utilisé dans une requête réécrite par des règles en plusieurs requêtes" #: rewrite/rewriteManip.c:1003 #, c-format msgid "conditional utility statements are not implemented" -msgstr "les instructions conditionnelles ne sont pas implémentées" +msgstr "les instructions conditionnelles ne sont pas implémentées" #: rewrite/rewriteManip.c:1169 #, c-format msgid "WHERE CURRENT OF on a view is not implemented" -msgstr "WHERE CURRENT OF n'est pas implémenté sur une vue" +msgstr "WHERE CURRENT OF n'est pas implémenté sur une vue" #: rewrite/rewriteManip.c:1434 #, c-format msgid "NEW variables in ON UPDATE rules cannot reference columns that are part of a multiple assignment in the subject UPDATE command" -msgstr "les variables NEW des règles ON UPDATE ne peuvent pas référencer des colonnes faisant partie d'une affectation multiple dans une commande UPDATE" +msgstr "les variables NEW des règles ON UPDATE ne peuvent pas référencer des colonnes faisant partie d'une affectation multiple dans une commande UPDATE" #: rewrite/rewriteSupport.c:154 #, c-format msgid "rule \"%s\" does not exist" -msgstr "la règle « %s » n'existe pas" +msgstr "la règle « %s » n'existe pas" #: rewrite/rewriteSupport.c:167 #, c-format msgid "there are multiple rules named \"%s\"" -msgstr "il existe de nombreuses règles nommées « %s »" +msgstr "il existe de nombreuses règles nommées « %s »" #: rewrite/rewriteSupport.c:168 #, c-format msgid "Specify a relation name as well as a rule name." -msgstr "Spécifier un nom de relation ainsi qu'un nom de règle." +msgstr "Spécifier un nom de relation ainsi qu'un nom de règle." #: scan.l:432 msgid "unterminated /* comment" -msgstr "commentaire /* non terminé" +msgstr "commentaire /* non terminé" #: scan.l:461 msgid "unterminated bit string literal" -msgstr "chaîne littérale bit non terminée" +msgstr "chaîne littérale bit non terminée" #: scan.l:482 msgid "unterminated hexadecimal string literal" -msgstr "chaîne littérale hexadécimale non terminée" +msgstr "chaîne littérale hexadécimale non terminée" #: scan.l:532 #, c-format msgid "unsafe use of string constant with Unicode escapes" -msgstr "utilisation non sûre de la constante de chaîne avec des échappements Unicode" +msgstr "utilisation non sûre de la constante de chaîne avec des échappements Unicode" #: scan.l:533 #, c-format msgid "String constants with Unicode escapes cannot be used when standard_conforming_strings is off." msgstr "" -"Les constantes de chaîne avec des échappements Unicode ne peuvent pas être\n" -"utilisées quand standard_conforming_strings est désactivé." +"Les constantes de chaîne avec des échappements Unicode ne peuvent pas être\n" +"utilisées quand standard_conforming_strings est désactivé." #: scan.l:579 scan.l:778 msgid "invalid Unicode escape character" -msgstr "chaîne d'échappement Unicode invalide" +msgstr "chaîne d'échappement Unicode invalide" -#: scan.l:605 scan.l:613 scan.l:621 scan.l:622 scan.l:623 scan.l:1337 scan.l:1364 scan.l:1368 scan.l:1406 scan.l:1410 scan.l:1432 +#: scan.l:605 scan.l:613 scan.l:621 scan.l:622 scan.l:623 scan.l:1337 scan.l:1364 scan.l:1368 scan.l:1406 scan.l:1410 scan.l:1432 scan.l:1442 msgid "invalid Unicode surrogate pair" msgstr "paire surrogate Unicode invalide" #: scan.l:627 #, c-format msgid "invalid Unicode escape" -msgstr "échappement Unicode invalide" +msgstr "échappement Unicode invalide" #: scan.l:628 #, c-format msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX." -msgstr "Les échappements Unicode doivent être de la forme \\uXXXX ou \\UXXXXXXXX." +msgstr "Les échappements Unicode doivent être de la forme \\uXXXX ou \\UXXXXXXXX." #: scan.l:639 #, c-format msgid "unsafe use of \\' in a string literal" -msgstr "utilisation non sûre de \\' dans une chaîne littérale" +msgstr "utilisation non sûre de \\' dans une chaîne littérale" #: scan.l:640 #, c-format msgid "Use '' to write quotes in strings. \\' is insecure in client-only encodings." msgstr "" -"Utilisez '' pour écrire des guillemets dans une chaîne. \\' n'est pas sécurisé\n" +"Utilisez '' pour écrire des guillemets dans une chaîne. \\' n'est pas sécurisé\n" "pour les encodages clients." #: scan.l:715 msgid "unterminated dollar-quoted string" -msgstr "chaîne entre guillemets dollars non terminée" +msgstr "chaîne entre guillemets dollars non terminée" #: scan.l:732 scan.l:758 scan.l:773 msgid "zero-length delimited identifier" -msgstr "identifiant délimité de longueur nulle" +msgstr "identifiant délimité de longueur nulle" #: scan.l:793 syncrep_scanner.l:84 msgid "unterminated quoted identifier" -msgstr "identifiant entre guillemets non terminé" +msgstr "identifiant entre guillemets non terminé" #: scan.l:924 msgid "operator too long" -msgstr "opérateur trop long" +msgstr "opérateur trop long" #. translator: %s is typically the translation of "syntax error" #: scan.l:1077 #, c-format msgid "%s at end of input" -msgstr "%s à la fin de l'entrée" +msgstr "%s à la fin de l'entrée" #. translator: first %s is typically the translation of "syntax error" #: scan.l:1085 #, c-format msgid "%s at or near \"%s\"" -msgstr "%s sur ou près de « %s »" +msgstr "%s sur ou près de « %s »" #: scan.l:1251 scan.l:1283 msgid "Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8" msgstr "" -"Les valeurs d'échappement unicode ne peuvent pas être utilisées pour les\n" +"Les valeurs d'échappement unicode ne peuvent pas être utilisées pour les\n" "valeurs de point de code au-dessus de 007F quand l'encodage serveur n'est\n" "pas UTF8" #: scan.l:1279 scan.l:1424 msgid "invalid Unicode escape value" -msgstr "valeur d'échappement Unicode invalide" +msgstr "valeur d'échappement Unicode invalide" -#: scan.l:1481 +#: scan.l:1488 #, c-format msgid "nonstandard use of \\' in a string literal" -msgstr "utilisation non standard de \\' dans une chaîne littérale" +msgstr "utilisation non standard de \\' dans une chaîne littérale" -#: scan.l:1482 +#: scan.l:1489 #, c-format msgid "Use '' to write quotes in strings, or use the escape string syntax (E'...')." msgstr "" -"Utilisez '' pour écrire des guillemets dans une chaîne ou utilisez la syntaxe de\n" -"chaîne d'échappement (E'...')." +"Utilisez '' pour écrire des guillemets dans une chaîne ou utilisez la syntaxe de\n" +"chaîne d'échappement (E'...')." -#: scan.l:1491 +#: scan.l:1498 #, c-format msgid "nonstandard use of \\\\ in a string literal" -msgstr "utilisation non standard de \\\\ dans une chaîne littérale" +msgstr "utilisation non standard de \\\\ dans une chaîne littérale" -#: scan.l:1492 +#: scan.l:1499 #, c-format msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'." -msgstr "Utilisez la syntaxe de chaîne d'échappement pour les antislashs, c'est-à-dire E'\\\\'." +msgstr "Utilisez la syntaxe de chaîne d'échappement pour les antislashs, c'est-à-dire E'\\\\'." -#: scan.l:1506 +#: scan.l:1513 #, c-format msgid "nonstandard use of escape in a string literal" -msgstr "utilisation non standard d'un échappement dans une chaîne littérale" +msgstr "utilisation non standard d'un échappement dans une chaîne littérale" -#: scan.l:1507 +#: scan.l:1514 #, c-format msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'." msgstr "" -"Utilisez la syntaxe de la chaîne d'échappement pour les échappements,\n" -"c'est-à-dire E'\\r\\n'." +"Utilisez la syntaxe de la chaîne d'échappement pour les échappements,\n" +"c'est-à-dire E'\\r\\n'." #: snowball/dict_snowball.c:177 #, c-format msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\"" -msgstr "aucun stemmer Snowball disponible pour la langue « %s » et l'encodage « %s »" +msgstr "aucun stemmer Snowball disponible pour la langue « %s » et l'encodage « %s »" #: snowball/dict_snowball.c:200 tsearch/dict_ispell.c:73 tsearch/dict_simple.c:48 #, c-format msgid "multiple StopWords parameters" -msgstr "plusieurs paramètres StopWords" +msgstr "plusieurs paramètres StopWords" #: snowball/dict_snowball.c:209 #, c-format msgid "multiple Language parameters" -msgstr "multiples paramètres Language" +msgstr "multiples paramètres Language" #: snowball/dict_snowball.c:216 #, c-format msgid "unrecognized Snowball parameter: \"%s\"" -msgstr "paramètre Snowball non reconnu : « %s »" +msgstr "paramètre Snowball non reconnu : « %s »" #: snowball/dict_snowball.c:224 #, c-format msgid "missing Language parameter" -msgstr "paramètre Language manquant" +msgstr "paramètre Language manquant" #: storage/buffer/bufmgr.c:544 storage/buffer/bufmgr.c:657 #, c-format msgid "cannot access temporary tables of other sessions" -msgstr "ne peut pas accéder aux tables temporaires d'autres sessions" +msgstr "ne peut pas accéder aux tables temporaires d'autres sessions" #: storage/buffer/bufmgr.c:807 #, c-format msgid "unexpected data beyond EOF in block %u of relation %s" msgstr "" -"données inattendues après la fin de fichier dans le bloc %u de la relation\n" +"données inattendues après la fin de fichier dans le bloc %u de la relation\n" "%s" #: storage/buffer/bufmgr.c:809 #, c-format msgid "This has been seen to occur with buggy kernels; consider updating your system." msgstr "" -"Ceci s'est déjà vu avec des noyaux buggés ; pensez à mettre à jour votre\n" -"système." +"Ceci s'est déjà vu avec des noyaux buggés ; pensez à mettre à jour votre\n" +"système." #: storage/buffer/bufmgr.c:907 #, c-format msgid "invalid page in block %u of relation %s; zeroing out page" -msgstr "page invalide dans le bloc %u de la relation %s ; remplacement de la page par des zéros" +msgstr "page invalide dans le bloc %u de la relation %s ; remplacement de la page par des zéros" -#: storage/buffer/bufmgr.c:3952 +#: storage/buffer/bufmgr.c:3969 #, c-format msgid "could not write block %u of %s" -msgstr "n'a pas pu écrire le bloc %u de %s" +msgstr "n'a pas pu écrire le bloc %u de %s" -#: storage/buffer/bufmgr.c:3954 +#: storage/buffer/bufmgr.c:3971 #, c-format msgid "Multiple failures --- write error might be permanent." -msgstr "Échecs multiples --- l'erreur d'écriture pourrait être permanent." +msgstr "Échecs multiples --- l'erreur d'écriture pourrait être permanent." -#: storage/buffer/bufmgr.c:3975 storage/buffer/bufmgr.c:3994 +#: storage/buffer/bufmgr.c:3992 storage/buffer/bufmgr.c:4011 #, c-format msgid "writing block %u of relation %s" -msgstr "écriture du bloc %u de la relation %s" +msgstr "écriture du bloc %u de la relation %s" -#: storage/buffer/bufmgr.c:4295 +#: storage/buffer/bufmgr.c:4312 #, c-format msgid "snapshot too old" msgstr "snapshot trop ancien" @@ -16735,194 +16538,194 @@ msgstr "aucun tampon local vide disponible" #: storage/buffer/localbuf.c:427 #, c-format msgid "cannot access temporary tables during a parallel operation" -msgstr "ne peut pas accéder à des tables temporaires pendant une opération parallèle" +msgstr "ne peut pas accéder à des tables temporaires pendant une opération parallèle" -#: storage/file/fd.c:436 storage/file/fd.c:508 storage/file/fd.c:544 +#: storage/file/fd.c:443 storage/file/fd.c:515 storage/file/fd.c:551 #, c-format msgid "could not flush dirty data: %m" -msgstr "n'a pas pu vider les données modifiées : %m" +msgstr "n'a pas pu vider les données modifiées : %m" -#: storage/file/fd.c:466 +#: storage/file/fd.c:473 #, c-format msgid "could not determine dirty data size: %m" -msgstr "n'a pas pu déterminer la taille des données modifiées : %m" +msgstr "n'a pas pu déterminer la taille des données modifiées : %m" -#: storage/file/fd.c:518 +#: storage/file/fd.c:525 #, c-format msgid "could not munmap() while flushing data: %m" -msgstr "n'a pas exécuter munmap() durant la synchronisation des données : %m" +msgstr "n'a pas exécuter munmap() durant la synchronisation des données : %m" -#: storage/file/fd.c:682 +#: storage/file/fd.c:689 #, c-format msgid "could not link file \"%s\" to \"%s\": %m" -msgstr "n'a pas pu lier le fichier « %s » à « %s » : %m" +msgstr "n'a pas pu lier le fichier « %s » à « %s » : %m" -#: storage/file/fd.c:776 +#: storage/file/fd.c:783 #, c-format msgid "getrlimit failed: %m" -msgstr "échec de getrlimit : %m" +msgstr "échec de getrlimit : %m" -#: storage/file/fd.c:866 +#: storage/file/fd.c:873 #, c-format msgid "insufficient file descriptors available to start server process" msgstr "nombre de descripteurs de fichier insuffisants pour lancer le processus serveur" -#: storage/file/fd.c:867 +#: storage/file/fd.c:874 #, c-format msgid "System allows %d, we need at least %d." -msgstr "Le système autorise %d, nous avons besoin d'au moins %d." +msgstr "Le système autorise %d, nous avons besoin d'au moins %d." -#: storage/file/fd.c:908 storage/file/fd.c:2001 storage/file/fd.c:2094 storage/file/fd.c:2242 +#: storage/file/fd.c:915 storage/file/fd.c:2078 storage/file/fd.c:2171 storage/file/fd.c:2319 #, c-format msgid "out of file descriptors: %m; release and retry" -msgstr "plus de descripteurs de fichiers : %m; quittez et ré-essayez" +msgstr "plus de descripteurs de fichiers : %m; quittez et ré-essayez" -#: storage/file/fd.c:1482 +#: storage/file/fd.c:1520 #, c-format msgid "temporary file: path \"%s\", size %lu" -msgstr "fichier temporaire : chemin « %s », taille %lu" +msgstr "fichier temporaire : chemin « %s », taille %lu" -#: storage/file/fd.c:1656 +#: storage/file/fd.c:1717 #, c-format msgid "temporary file size exceeds temp_file_limit (%dkB)" -msgstr "la taille du fichier temporaire dépasse temp_file_limit (%d Ko)" +msgstr "la taille du fichier temporaire dépasse temp_file_limit (%d Ko)" -#: storage/file/fd.c:1977 storage/file/fd.c:2027 +#: storage/file/fd.c:2054 storage/file/fd.c:2104 #, c-format msgid "exceeded maxAllocatedDescs (%d) while trying to open file \"%s\"" -msgstr "dépassement de maxAllocatedDescs (%d) lors de la tentative d'ouverture du fichier « %s »" +msgstr "dépassement de maxAllocatedDescs (%d) lors de la tentative d'ouverture du fichier « %s »" -#: storage/file/fd.c:2067 +#: storage/file/fd.c:2144 #, c-format msgid "exceeded maxAllocatedDescs (%d) while trying to execute command \"%s\"" -msgstr "dépassement de maxAllocatedDescs (%d) lors de la tentative d'exécution de la commande « %s »" +msgstr "dépassement de maxAllocatedDescs (%d) lors de la tentative d'exécution de la commande « %s »" -#: storage/file/fd.c:2218 +#: storage/file/fd.c:2295 #, c-format msgid "exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\"" -msgstr "dépassement de maxAllocatedDescs (%d) lors de la tentative d'ouverture du répertoire « %s »" +msgstr "dépassement de maxAllocatedDescs (%d) lors de la tentative d'ouverture du répertoire « %s »" -#: storage/file/fd.c:2304 +#: storage/file/fd.c:2381 #, c-format msgid "could not read directory \"%s\": %m" -msgstr "n'a pas pu lire le répertoire « %s » : %m" +msgstr "n'a pas pu lire le répertoire « %s » : %m" #: storage/ipc/dsm.c:363 #, c-format msgid "dynamic shared memory control segment is corrupt" -msgstr "le segment contrôle de mémoire partagée dynamique est corrompu" +msgstr "le segment contrôle de mémoire partagée dynamique est corrompu" #: storage/ipc/dsm.c:410 #, c-format msgid "dynamic shared memory is disabled" -msgstr "la mémoire partagée dynamique est désactivée" +msgstr "la mémoire partagée dynamique est désactivée" #: storage/ipc/dsm.c:411 #, c-format msgid "Set dynamic_shared_memory_type to a value other than \"none\"." -msgstr "Configurez dynamic_shared_memory_type à une valeur autre que « none »." +msgstr "Configurez dynamic_shared_memory_type à une valeur autre que « none »." #: storage/ipc/dsm.c:431 #, c-format msgid "dynamic shared memory control segment is not valid" -msgstr "le segment contrôle de mémoire partagée dynamique n'est pas valide" +msgstr "le segment contrôle de mémoire partagée dynamique n'est pas valide" #: storage/ipc/dsm.c:516 #, c-format msgid "too many dynamic shared memory segments" -msgstr "trop de segments de mémoire partagée dynamique" +msgstr "trop de segments de mémoire partagée dynamique" #: storage/ipc/dsm_impl.c:261 storage/ipc/dsm_impl.c:361 storage/ipc/dsm_impl.c:533 storage/ipc/dsm_impl.c:648 storage/ipc/dsm_impl.c:819 storage/ipc/dsm_impl.c:961 #, c-format msgid "could not unmap shared memory segment \"%s\": %m" -msgstr "n'a pas pu annuler le mappage du segment de mémoire partagée « %s » : %m" +msgstr "n'a pas pu annuler le mappage du segment de mémoire partagée « %s » : %m" #: storage/ipc/dsm_impl.c:271 storage/ipc/dsm_impl.c:543 storage/ipc/dsm_impl.c:658 storage/ipc/dsm_impl.c:829 #, c-format msgid "could not remove shared memory segment \"%s\": %m" -msgstr "n'a pas pu supprimer le segment de mémoire partagée « %s » : %m" +msgstr "n'a pas pu supprimer le segment de mémoire partagée « %s » : %m" #: storage/ipc/dsm_impl.c:292 storage/ipc/dsm_impl.c:729 storage/ipc/dsm_impl.c:843 #, c-format msgid "could not open shared memory segment \"%s\": %m" -msgstr "n'a pas pu ouvrir le segment de mémoire partagée « %s » : %m" +msgstr "n'a pas pu ouvrir le segment de mémoire partagée « %s » : %m" #: storage/ipc/dsm_impl.c:316 storage/ipc/dsm_impl.c:559 storage/ipc/dsm_impl.c:774 storage/ipc/dsm_impl.c:867 #, c-format msgid "could not stat shared memory segment \"%s\": %m" -msgstr "n'a pas pu obtenir des informations sur le segment de mémoire partagée « %s » : %m" +msgstr "n'a pas pu obtenir des informations sur le segment de mémoire partagée « %s » : %m" #: storage/ipc/dsm_impl.c:335 storage/ipc/dsm_impl.c:886 storage/ipc/dsm_impl.c:934 #, c-format msgid "could not resize shared memory segment \"%s\" to %zu bytes: %m" -msgstr "n'a pas pu retailler le segment de mémoire partagée « %s » en %zu octets : %m" +msgstr "n'a pas pu retailler le segment de mémoire partagée « %s » en %zu octets : %m" #: storage/ipc/dsm_impl.c:385 storage/ipc/dsm_impl.c:580 storage/ipc/dsm_impl.c:750 storage/ipc/dsm_impl.c:985 #, c-format msgid "could not map shared memory segment \"%s\": %m" -msgstr "n'a pas pu mapper le segment de mémoire partagée « %s » : %m" +msgstr "n'a pas pu mapper le segment de mémoire partagée « %s » : %m" #: storage/ipc/dsm_impl.c:515 #, c-format msgid "could not get shared memory segment: %m" -msgstr "n'a pas pu obtenir le segment de mémoire partagée : %m" +msgstr "n'a pas pu obtenir le segment de mémoire partagée : %m" #: storage/ipc/dsm_impl.c:714 #, c-format msgid "could not create shared memory segment \"%s\": %m" -msgstr "n'a pas pu créer le segment de mémoire partagée « %s » : %m" +msgstr "n'a pas pu créer le segment de mémoire partagée « %s » : %m" #: storage/ipc/dsm_impl.c:1026 #, c-format msgid "could not duplicate handle for \"%s\": %m" -msgstr "n'a pas pu dupliquer le lien pour « %s » : %m" +msgstr "n'a pas pu dupliquer le lien pour « %s » : %m" -#: storage/ipc/latch.c:775 +#: storage/ipc/latch.c:841 #, c-format msgid "epoll_ctl() failed: %m" -msgstr "échec de epoll_ctl() : %m" +msgstr "échec de epoll_ctl() : %m" -#: storage/ipc/latch.c:999 +#: storage/ipc/latch.c:1065 #, c-format msgid "epoll_wait() failed: %m" -msgstr "échec de epoll_wait() : %m" +msgstr "échec de epoll_wait() : %m" -#: storage/ipc/latch.c:1119 +#: storage/ipc/latch.c:1185 #, c-format msgid "poll() failed: %m" -msgstr "échec de poll() : %m" +msgstr "échec de poll() : %m" #: storage/ipc/shm_toc.c:108 storage/ipc/shm_toc.c:189 storage/ipc/shmem.c:212 storage/lmgr/lock.c:883 storage/lmgr/lock.c:917 storage/lmgr/lock.c:2682 storage/lmgr/lock.c:4007 storage/lmgr/lock.c:4072 storage/lmgr/lock.c:4364 storage/lmgr/predicate.c:2329 storage/lmgr/predicate.c:2344 storage/lmgr/predicate.c:3736 storage/lmgr/predicate.c:4879 storage/lmgr/proc.c:203 utils/hash/dynahash.c:1043 #, c-format msgid "out of shared memory" -msgstr "mémoire partagée épuisée" +msgstr "mémoire partagée épuisée" #: storage/ipc/shmem.c:370 storage/ipc/shmem.c:421 #, c-format msgid "not enough shared memory for data structure \"%s\" (%zu bytes requested)" -msgstr "pas assez de mémoire partagée pour la structure de données « %s » (%zu octets demandés)" +msgstr "pas assez de mémoire partagée pour la structure de données « %s » (%zu octets demandés)" #: storage/ipc/shmem.c:389 #, c-format msgid "could not create ShmemIndex entry for data structure \"%s\"" -msgstr "n'a pas pu créer l'entrée ShmemIndex pour la structure de données « %s »" +msgstr "n'a pas pu créer l'entrée ShmemIndex pour la structure de données « %s »" #: storage/ipc/shmem.c:404 #, c-format msgid "ShmemIndex entry size is wrong for data structure \"%s\": expected %zu, actual %zu" -msgstr "La taille de l'entrée ShmemIndex est mauvaise pour la structure de données « %s » : %zu attendu, %zu obtenu" +msgstr "La taille de l'entrée ShmemIndex est mauvaise pour la structure de données « %s » : %zu attendu, %zu obtenu" #: storage/ipc/shmem.c:452 storage/ipc/shmem.c:471 #, c-format msgid "requested shared memory size overflows size_t" -msgstr "la taille de la mémoire partagée demandée dépasse size_t" +msgstr "la taille de la mémoire partagée demandée dépasse size_t" -#: storage/ipc/standby.c:528 tcop/postgres.c:2976 +#: storage/ipc/standby.c:530 tcop/postgres.c:2974 #, c-format msgid "canceling statement due to conflict with recovery" -msgstr "annulation de la requête à cause d'un conflit avec la restauration" +msgstr "annulation de la requête à cause d'un conflit avec la restauration" -#: storage/ipc/standby.c:529 tcop/postgres.c:2263 +#: storage/ipc/standby.c:531 tcop/postgres.c:2255 #, c-format msgid "User transaction caused buffer deadlock with recovery." msgstr "La transaction de l'utilisateur causait un verrou mortel lors de la restauration." @@ -16930,27 +16733,27 @@ msgstr "La transaction de l'utilisateur causait un verrou mortel lors de la rest #: storage/large_object/inv_api.c:203 #, c-format msgid "pg_largeobject entry for OID %u, page %d has invalid data field size %d" -msgstr "l'entrée du Large Object d'OID %u, en page %d, a une taille de champ de données invalide, %d" +msgstr "l'entrée du Large Object d'OID %u, en page %d, a une taille de champ de données invalide, %d" #: storage/large_object/inv_api.c:284 #, c-format msgid "invalid flags for opening a large object: %d" -msgstr "drapeaux invalides pour l'ouverture d'un « Large Object » : %d" +msgstr "drapeaux invalides pour l'ouverture d'un « Large Object » : %d" #: storage/large_object/inv_api.c:436 #, c-format msgid "invalid whence setting: %d" -msgstr "paramètrage de « whence » invalide : %d" +msgstr "paramètrage de « whence » invalide : %d" #: storage/large_object/inv_api.c:593 #, c-format msgid "invalid large object write request size: %d" -msgstr "taille de la requête d'écriture du « Large Object » invalide : %d" +msgstr "taille de la requête d'écriture du « Large Object » invalide : %d" #: storage/lmgr/deadlock.c:1109 #, c-format msgid "Process %d waits for %s on %s; blocked by process %d." -msgstr "Le processus %d attend %s sur %s ; bloqué par le processus %d." +msgstr "Le processus %d attend %s sur %s ; bloqué par le processus %d." #: storage/lmgr/deadlock.c:1128 #, c-format @@ -16960,72 +16763,72 @@ msgstr "Processus %d : %s" #: storage/lmgr/deadlock.c:1137 #, c-format msgid "deadlock detected" -msgstr "Bloquage mortel détecté" +msgstr "Bloquage mortel détecté" #: storage/lmgr/deadlock.c:1140 #, c-format msgid "See server log for query details." -msgstr "Voir les journaux applicatifs du serveur pour les détails sur la requête." +msgstr "Voir les journaux applicatifs du serveur pour les détails sur la requête." #: storage/lmgr/lmgr.c:719 #, c-format msgid "while updating tuple (%u,%u) in relation \"%s\"" -msgstr "lors de la mise à jour de la ligne (%u,%u) dans la relation « %s »" +msgstr "lors de la mise à jour de la ligne (%u,%u) dans la relation « %s »" #: storage/lmgr/lmgr.c:722 #, c-format msgid "while deleting tuple (%u,%u) in relation \"%s\"" -msgstr "lors de la suppression de la ligne (%u,%u) dans la relation « %s »" +msgstr "lors de la suppression de la ligne (%u,%u) dans la relation « %s »" #: storage/lmgr/lmgr.c:725 #, c-format msgid "while locking tuple (%u,%u) in relation \"%s\"" -msgstr "lors du verrouillage de la ligne (%u,%u) dans la relation « %s »" +msgstr "lors du verrouillage de la ligne (%u,%u) dans la relation « %s »" #: storage/lmgr/lmgr.c:728 #, c-format msgid "while locking updated version (%u,%u) of tuple in relation \"%s\"" -msgstr "lors du verrou de la version mise à jour (%u, %u) de la ligne de la relation « %s »" +msgstr "lors du verrou de la version mise à jour (%u, %u) de la ligne de la relation « %s »" #: storage/lmgr/lmgr.c:731 #, c-format msgid "while inserting index tuple (%u,%u) in relation \"%s\"" -msgstr "lors de l'insertion de l'enregistrement (%u, %u) de l'index dans la relation « %s »" +msgstr "lors de l'insertion de l'enregistrement (%u, %u) de l'index dans la relation « %s »" #: storage/lmgr/lmgr.c:734 #, c-format msgid "while checking uniqueness of tuple (%u,%u) in relation \"%s\"" -msgstr "lors de la vérification de l'unicité de l'enregistrement (%u,%u) dans la relation « %s »" +msgstr "lors de la vérification de l'unicité de l'enregistrement (%u,%u) dans la relation « %s »" #: storage/lmgr/lmgr.c:737 #, c-format msgid "while rechecking updated tuple (%u,%u) in relation \"%s\"" -msgstr "lors de la re-vérification de l'enregistrement mis à jour (%u,%u) dans la relation « %s »" +msgstr "lors de la re-vérification de l'enregistrement mis à jour (%u,%u) dans la relation « %s »" #: storage/lmgr/lmgr.c:740 #, c-format msgid "while checking exclusion constraint on tuple (%u,%u) in relation \"%s\"" -msgstr "lors de la vérification de la contrainte d'exclusion sur l'enregistrement (%u,%u) dans la relation « %s »" +msgstr "lors de la vérification de la contrainte d'exclusion sur l'enregistrement (%u,%u) dans la relation « %s »" #: storage/lmgr/lmgr.c:960 #, c-format msgid "relation %u of database %u" -msgstr "relation %u de la base de données %u" +msgstr "relation %u de la base de données %u" #: storage/lmgr/lmgr.c:966 #, c-format msgid "extension of relation %u of database %u" -msgstr "extension de la relation %u de la base de données %u" +msgstr "extension de la relation %u de la base de données %u" #: storage/lmgr/lmgr.c:972 #, c-format msgid "page %u of relation %u of database %u" -msgstr "page %u de la relation %u de la base de données %u" +msgstr "page %u de la relation %u de la base de données %u" #: storage/lmgr/lmgr.c:979 #, c-format msgid "tuple (%u,%u) of relation %u of database %u" -msgstr "ligne (%u,%u) de la relation %u de la base de données %u" +msgstr "ligne (%u,%u) de la relation %u de la base de données %u" #: storage/lmgr/lmgr.c:987 #, c-format @@ -17040,12 +16843,12 @@ msgstr "transaction virtuelle %d/%u" #: storage/lmgr/lmgr.c:998 #, c-format msgid "speculative token %u of transaction %u" -msgstr "jeton spéculatif %u de la transaction %u" +msgstr "jeton spéculatif %u de la transaction %u" #: storage/lmgr/lmgr.c:1004 #, c-format msgid "object %u of class %u of database %u" -msgstr "objet %u de la classe %u de la base de données %u" +msgstr "objet %u de la classe %u de la base de données %u" #: storage/lmgr/lmgr.c:1012 #, c-format @@ -17066,14 +16869,14 @@ msgstr "type locktag non reconnu %d" #, c-format msgid "cannot acquire lock mode %s on database objects while recovery is in progress" msgstr "" -"ne peut pas acquérir le mode de verrou %s sur les objets de base de données\n" +"ne peut pas acquérir le mode de verrou %s sur les objets de base de données\n" "alors que la restauration est en cours" #: storage/lmgr/lock.c:734 #, c-format msgid "Only RowExclusiveLock or less can be acquired on database objects during recovery." msgstr "" -"Seuls RowExclusiveLock et les verrous inférieurs peuvent être acquis sur les\n" +"Seuls RowExclusiveLock et les verrous inférieurs peuvent être acquis sur les\n" "objets d'une base pendant une restauration." #: storage/lmgr/lock.c:884 storage/lmgr/lock.c:918 storage/lmgr/lock.c:2683 storage/lmgr/lock.c:4008 storage/lmgr/lock.c:4073 storage/lmgr/lock.c:4365 @@ -17084,75 +16887,75 @@ msgstr "Vous pourriez avoir besoin d'augmenter max_locks_per_transaction." #: storage/lmgr/lock.c:3124 storage/lmgr/lock.c:3240 #, c-format msgid "cannot PREPARE while holding both session-level and transaction-level locks on the same object" -msgstr "ne peut pas utiliser PREPARE lorsque des verrous de niveau session et deniveau transaction sont détenus sur le même objet" +msgstr "ne peut pas utiliser PREPARE lorsque des verrous de niveau session et deniveau transaction sont détenus sur le même objet" #: storage/lmgr/predicate.c:675 #, c-format msgid "not enough elements in RWConflictPool to record a read/write conflict" -msgstr "pas assez d'éléments dans RWConflictPool pour enregistrer un conflit en lecture/écriture" +msgstr "pas assez d'éléments dans RWConflictPool pour enregistrer un conflit en lecture/écriture" #: storage/lmgr/predicate.c:676 storage/lmgr/predicate.c:704 #, c-format msgid "You might need to run fewer transactions at a time or increase max_connections." msgstr "" -"Il est possible que vous ayez à exécuter moins de transactions à la fois\n" +"Il est possible que vous ayez à exécuter moins de transactions à la fois\n" "ou d'augmenter max_connections." #: storage/lmgr/predicate.c:703 #, c-format msgid "not enough elements in RWConflictPool to record a potential read/write conflict" -msgstr "pas assez d'éléments dans RWConflictPool pour enregistrer un conflit en lecture/écriture potentiel" +msgstr "pas assez d'éléments dans RWConflictPool pour enregistrer un conflit en lecture/écriture potentiel" #: storage/lmgr/predicate.c:909 #, c-format msgid "memory for serializable conflict tracking is nearly exhausted" -msgstr "la mémoire pour tracer les conflits sérialisables est pratiquement pleine" +msgstr "la mémoire pour tracer les conflits sérialisables est pratiquement pleine" #: storage/lmgr/predicate.c:910 #, c-format msgid "There might be an idle transaction or a forgotten prepared transaction causing this." msgstr "" -"Il pourait y avoir une transaction en attente ou une transaction préparée\n" -"oubliée causant cela." +"Il pourait y avoir une transaction en attente ou une transaction préparée\n" +"oubliée causant cela." #: storage/lmgr/predicate.c:1190 storage/lmgr/predicate.c:1261 #, c-format msgid "not enough shared memory for elements of data structure \"%s\" (%zu bytes requested)" msgstr "" -"pas assez de mémoire partagée pour les éléments de la structure de données\n" -"« %s » (%zu octets demandés)" +"pas assez de mémoire partagée pour les éléments de la structure de données\n" +"« %s » (%zu octets demandés)" #: storage/lmgr/predicate.c:1549 #, c-format msgid "deferrable snapshot was unsafe; trying a new one" -msgstr "l'image déferrable est non sûre ; tentative avec une nouvelle image" +msgstr "l'image déferrable est non sûre ; tentative avec une nouvelle image" #: storage/lmgr/predicate.c:1588 #, c-format msgid "\"default_transaction_isolation\" is set to \"serializable\"." -msgstr "« default_transaction_isolation » est configuré à « serializable »." +msgstr "« default_transaction_isolation » est configuré à « serializable »." #: storage/lmgr/predicate.c:1589 #, c-format msgid "You can use \"SET default_transaction_isolation = 'repeatable read'\" to change the default." msgstr "" -"Vous pouvez utiliser « SET default_transaction_isolation = 'repeatable read' »\n" -"pour modifier la valeur par défaut." +"Vous pouvez utiliser « SET default_transaction_isolation = 'repeatable read' »\n" +"pour modifier la valeur par défaut." #: storage/lmgr/predicate.c:1628 #, c-format msgid "a snapshot-importing transaction must not be READ ONLY DEFERRABLE" -msgstr "une transaction important un snapshot ne doit pas être READ ONLY DEFERRABLE" +msgstr "une transaction important un snapshot ne doit pas être READ ONLY DEFERRABLE" -#: storage/lmgr/predicate.c:1706 utils/time/snapmgr.c:576 utils/time/snapmgr.c:582 +#: storage/lmgr/predicate.c:1706 utils/time/snapmgr.c:617 utils/time/snapmgr.c:623 #, c-format msgid "could not import the requested snapshot" -msgstr "n'a pas pu importer le snapshot demandé" +msgstr "n'a pas pu importer le snapshot demandé" -#: storage/lmgr/predicate.c:1707 utils/time/snapmgr.c:583 +#: storage/lmgr/predicate.c:1707 utils/time/snapmgr.c:624 #, c-format msgid "The source transaction %u is not running anymore." -msgstr "La transaction source %u n'est plus en cours d'exécution." +msgstr "La transaction source %u n'est plus en cours d'exécution." #: storage/lmgr/predicate.c:2330 storage/lmgr/predicate.c:2345 storage/lmgr/predicate.c:3737 #, c-format @@ -17163,513 +16966,513 @@ msgstr "Vous pourriez avoir besoin d'augmenter max_pred_locks_per_transaction." #, c-format msgid "could not serialize access due to read/write dependencies among transactions" msgstr "" -"n'a pas pu sérialiser un accès à cause des dépendances de lecture/écriture\n" +"n'a pas pu sérialiser un accès à cause des dépendances de lecture/écriture\n" "parmi les transactions" #: storage/lmgr/predicate.c:3893 storage/lmgr/predicate.c:3982 storage/lmgr/predicate.c:3990 storage/lmgr/predicate.c:4029 storage/lmgr/predicate.c:4268 storage/lmgr/predicate.c:4605 storage/lmgr/predicate.c:4617 storage/lmgr/predicate.c:4659 storage/lmgr/predicate.c:4697 #, c-format msgid "The transaction might succeed if retried." -msgstr "La transaction pourrait réussir après une nouvelle tentative." +msgstr "La transaction pourrait réussir après une nouvelle tentative." -#: storage/lmgr/proc.c:1263 +#: storage/lmgr/proc.c:1265 #, c-format msgid "Process %d waits for %s on %s." msgstr "Le processus %d attend %s sur %s." -#: storage/lmgr/proc.c:1274 +#: storage/lmgr/proc.c:1276 #, c-format msgid "sending cancel to blocking autovacuum PID %d" msgstr "envoi de l'annulation pour bloquer le PID %d de l'autovacuum" -#: storage/lmgr/proc.c:1292 utils/adt/misc.c:270 +#: storage/lmgr/proc.c:1294 utils/adt/misc.c:270 #, c-format msgid "could not send signal to process %d: %m" msgstr "n'a pas pu envoyer le signal au processus %d : %m" -#: storage/lmgr/proc.c:1394 +#: storage/lmgr/proc.c:1396 #, c-format msgid "process %d avoided deadlock for %s on %s by rearranging queue order after %ld.%03d ms" msgstr "" -"le processus %d a évité un verrou mortel pour %s sur %s en modifiant l'ordre\n" -"de la queue après %ld.%03d ms" +"le processus %d a évité un verrou mortel pour %s sur %s en modifiant l'ordre\n" +"de la queue après %ld.%03d ms" -#: storage/lmgr/proc.c:1409 +#: storage/lmgr/proc.c:1411 #, c-format msgid "process %d detected deadlock while waiting for %s on %s after %ld.%03d ms" msgstr "" -"le processus %d a détecté un verrou mortel alors qu'il était en attente de\n" -"%s sur %s après %ld.%03d ms" +"le processus %d a détecté un verrou mortel alors qu'il était en attente de\n" +"%s sur %s après %ld.%03d ms" -#: storage/lmgr/proc.c:1418 +#: storage/lmgr/proc.c:1420 #, c-format msgid "process %d still waiting for %s on %s after %ld.%03d ms" -msgstr "le processus %d est toujours en attente de %s sur %s après %ld.%03d ms" +msgstr "le processus %d est toujours en attente de %s sur %s après %ld.%03d ms" -#: storage/lmgr/proc.c:1425 +#: storage/lmgr/proc.c:1427 #, c-format msgid "process %d acquired %s on %s after %ld.%03d ms" -msgstr "le processus %d a acquis %s sur %s après %ld.%03d ms" +msgstr "le processus %d a acquis %s sur %s après %ld.%03d ms" -#: storage/lmgr/proc.c:1441 +#: storage/lmgr/proc.c:1443 #, c-format msgid "process %d failed to acquire %s on %s after %ld.%03d ms" -msgstr "le processus %d a échoué pour l'acquisition de %s sur %s après %ld.%03d ms" +msgstr "le processus %d a échoué pour l'acquisition de %s sur %s après %ld.%03d ms" #: storage/page/bufpage.c:144 #, c-format msgid "page verification failed, calculated checksum %u but expected %u" -msgstr "échec de la vérification de la page, somme de contrôle calculé %u, mais attendait %u" +msgstr "échec de la vérification de la page, somme de contrôle calculé %u, mais attendait %u" #: storage/page/bufpage.c:203 storage/page/bufpage.c:522 storage/page/bufpage.c:737 storage/page/bufpage.c:868 storage/page/bufpage.c:968 #, c-format msgid "corrupted page pointers: lower = %u, upper = %u, special = %u" -msgstr "pointeurs de page corrompus : le plus bas = %u, le plus haut = %u, spécial = %u" +msgstr "pointeurs de page corrompus : le plus bas = %u, le plus haut = %u, spécial = %u" #: storage/page/bufpage.c:566 #, c-format msgid "corrupted item pointer: %u" -msgstr "pointeur d'élément corrompu : %u" +msgstr "pointeur d'élément corrompu : %u" #: storage/page/bufpage.c:577 storage/page/bufpage.c:919 storage/page/bufpage.c:1074 #, c-format msgid "corrupted item lengths: total %u, available space %u" -msgstr "longueurs d'élément corrompus : total %u, espace disponible %u" +msgstr "longueurs d'élément corrompus : total %u, espace disponible %u" -#: storage/page/bufpage.c:756 storage/page/bufpage.c:892 +#: storage/page/bufpage.c:756 #, c-format msgid "corrupted item pointer: offset = %u, size = %u" -msgstr "pointeur d'élément corrompu : décalage = %u, taille = %u" +msgstr "pointeur d'élément corrompu : décalage = %u, taille = %u" -#: storage/page/bufpage.c:997 +#: storage/page/bufpage.c:892 storage/page/bufpage.c:997 #, c-format msgid "corrupted item pointer: offset = %u, length = %u" -msgstr "pointeur d'élément corrompu : décalage = %u, longueur = %u" +msgstr "pointeur d'élément corrompu : décalage = %u, longueur = %u" #: storage/smgr/md.c:449 storage/smgr/md.c:971 #, c-format msgid "could not truncate file \"%s\": %m" -msgstr "n'a pas pu tronquer le fichier « %s » : %m" +msgstr "n'a pas pu tronquer le fichier « %s » : %m" #: storage/smgr/md.c:516 #, c-format msgid "cannot extend file \"%s\" beyond %u blocks" -msgstr "ne peut pas étendre le fichier « %s » de plus de %u blocs" +msgstr "ne peut pas étendre le fichier « %s » de plus de %u blocs" #: storage/smgr/md.c:538 storage/smgr/md.c:751 storage/smgr/md.c:827 #, c-format msgid "could not seek to block %u in file \"%s\": %m" -msgstr "n'a pas pu trouver le bloc %u dans le fichier « %s » : %m" +msgstr "n'a pas pu trouver le bloc %u dans le fichier « %s » : %m" #: storage/smgr/md.c:546 #, c-format msgid "could not extend file \"%s\": %m" -msgstr "n'a pas pu étendre le fichier « %s » : %m" +msgstr "n'a pas pu étendre le fichier « %s » : %m" #: storage/smgr/md.c:548 storage/smgr/md.c:555 storage/smgr/md.c:854 #, c-format msgid "Check free disk space." -msgstr "Vérifiez l'espace disque disponible." +msgstr "Vérifiez l'espace disque disponible." #: storage/smgr/md.c:552 #, c-format msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u" msgstr "" -"n'a pas pu étendre le fichier « %s » : a écrit seulement %d octets sur %d\n" +"n'a pas pu étendre le fichier « %s » : a écrit seulement %d octets sur %d\n" "au bloc %u" #: storage/smgr/md.c:769 #, c-format msgid "could not read block %u in file \"%s\": %m" -msgstr "n'a pas pu lire le bloc %u dans le fichier « %s » : %m" +msgstr "n'a pas pu lire le bloc %u dans le fichier « %s » : %m" #: storage/smgr/md.c:785 #, c-format msgid "could not read block %u in file \"%s\": read only %d of %d bytes" msgstr "" -"n'a pas pu lire le bloc %u du fichier « %s » : a lu seulement %d octets\n" +"n'a pas pu lire le bloc %u du fichier « %s » : a lu seulement %d octets\n" "sur %d" #: storage/smgr/md.c:845 #, c-format msgid "could not write block %u in file \"%s\": %m" -msgstr "n'a pas pu écrire le bloc %u dans le fichier « %s » : %m" +msgstr "n'a pas pu écrire le bloc %u dans le fichier « %s » : %m" #: storage/smgr/md.c:850 #, c-format msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes" msgstr "" -"n'a pas pu écrire le bloc %u du fichier « %s » : a seulement écrit %d\n" +"n'a pas pu écrire le bloc %u du fichier « %s » : a seulement écrit %d\n" "octets sur %d" #: storage/smgr/md.c:947 #, c-format msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now" -msgstr "n'a pas pu tronquer le fichier « %s » en %u blocs : il y a seulement %u blocs" +msgstr "n'a pas pu tronquer le fichier « %s » en %u blocs : il y a seulement %u blocs" #: storage/smgr/md.c:997 #, c-format msgid "could not truncate file \"%s\" to %u blocks: %m" -msgstr "n'a pas pu tronquer le fichier « %s » en %u blocs : %m" +msgstr "n'a pas pu tronquer le fichier « %s » en %u blocs : %m" #: storage/smgr/md.c:1279 #, c-format msgid "could not fsync file \"%s\" but retrying: %m" msgstr "" -"n'a pas pu synchroniser sur disque (fsync) le fichier « %s », nouvelle\n" +"n'a pas pu synchroniser sur disque (fsync) le fichier « %s », nouvelle\n" "tentative : %m" #: storage/smgr/md.c:1442 #, c-format msgid "could not forward fsync request because request queue is full" -msgstr "n'a pas pu envoyer la requête fsync car la queue des requêtes est pleine" +msgstr "n'a pas pu envoyer la requête fsync car la queue des requêtes est pleine" #: storage/smgr/md.c:1863 #, c-format msgid "could not open file \"%s\" (target block %u): previous segment is only %u blocks" -msgstr "n'a pas pu ouvrir le fichier « %s » (bloc cible %u) : le segment précédent ne fait que %u blocs" +msgstr "n'a pas pu ouvrir le fichier « %s » (bloc cible %u) : le segment précédent ne fait que %u blocs" #: storage/smgr/md.c:1877 #, c-format msgid "could not open file \"%s\" (target block %u): %m" -msgstr "n'a pas pu ouvrir le fichier « %s » (bloc cible %u) : %m" +msgstr "n'a pas pu ouvrir le fichier « %s » (bloc cible %u) : %m" -#: tcop/fastpath.c:111 tcop/fastpath.c:475 tcop/fastpath.c:605 +#: tcop/fastpath.c:111 tcop/fastpath.c:463 tcop/fastpath.c:593 #, c-format msgid "invalid argument size %d in function call message" msgstr "taille de l'argument %d invalide dans le message d'appel de la fonction" -#: tcop/fastpath.c:291 tcop/postgres.c:992 tcop/postgres.c:1301 tcop/postgres.c:1559 tcop/postgres.c:1964 tcop/postgres.c:2331 tcop/postgres.c:2406 +#: tcop/fastpath.c:281 tcop/postgres.c:984 tcop/postgres.c:1293 tcop/postgres.c:1551 tcop/postgres.c:1956 tcop/postgres.c:2323 tcop/postgres.c:2398 #, c-format msgid "current transaction is aborted, commands ignored until end of transaction block" msgstr "" -"la transaction est annulée, les commandes sont ignorées jusqu'à la fin du bloc\n" +"la transaction est annulée, les commandes sont ignorées jusqu'à la fin du bloc\n" "de la transaction" -#: tcop/fastpath.c:319 +#: tcop/fastpath.c:309 #, c-format msgid "fastpath function call: \"%s\" (OID %u)" -msgstr "appel de fonction fastpath : « %s » (OID %u)" +msgstr "appel de fonction fastpath : « %s » (OID %u)" -#: tcop/fastpath.c:401 tcop/postgres.c:1163 tcop/postgres.c:1426 tcop/postgres.c:1805 tcop/postgres.c:2022 +#: tcop/fastpath.c:391 tcop/postgres.c:1155 tcop/postgres.c:1418 tcop/postgres.c:1797 tcop/postgres.c:2014 #, c-format msgid "duration: %s ms" -msgstr "durée : %s ms" +msgstr "durée : %s ms" -#: tcop/fastpath.c:405 +#: tcop/fastpath.c:395 #, c-format msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" -msgstr "durée : %s ms, appel de fonction fastpath : « %s » (OID %u)" +msgstr "durée : %s ms, appel de fonction fastpath : « %s » (OID %u)" -#: tcop/fastpath.c:443 tcop/fastpath.c:570 +#: tcop/fastpath.c:431 tcop/fastpath.c:558 #, c-format msgid "function call message contains %d arguments but function requires %d" msgstr "" "le message d'appel de la fonction contient %d arguments mais la fonction en\n" "requiert %d" -#: tcop/fastpath.c:451 +#: tcop/fastpath.c:439 #, c-format msgid "function call message contains %d argument formats but %d arguments" msgstr "" "le message d'appel de la fonction contient %d formats d'argument mais %d\n" " arguments" -#: tcop/fastpath.c:538 tcop/fastpath.c:621 +#: tcop/fastpath.c:526 tcop/fastpath.c:609 #, c-format msgid "incorrect binary data format in function argument %d" -msgstr "format des données binaires incorrect dans l'argument de la fonction %d" +msgstr "format des données binaires incorrect dans l'argument de la fonction %d" -#: tcop/postgres.c:352 tcop/postgres.c:388 tcop/postgres.c:415 +#: tcop/postgres.c:344 tcop/postgres.c:380 tcop/postgres.c:407 #, c-format msgid "unexpected EOF on client connection" msgstr "fin de fichier (EOF) inattendue de la connexion du client" -#: tcop/postgres.c:438 tcop/postgres.c:450 tcop/postgres.c:461 tcop/postgres.c:473 tcop/postgres.c:4308 +#: tcop/postgres.c:430 tcop/postgres.c:442 tcop/postgres.c:453 tcop/postgres.c:465 tcop/postgres.c:4300 #, c-format msgid "invalid frontend message type %d" msgstr "type %d du message de l'interface invalide" -#: tcop/postgres.c:933 +#: tcop/postgres.c:925 #, c-format msgid "statement: %s" msgstr "instruction : %s" -#: tcop/postgres.c:1168 +#: tcop/postgres.c:1160 #, c-format msgid "duration: %s ms statement: %s" -msgstr "durée : %s ms, instruction : %s" +msgstr "durée : %s ms, instruction : %s" -#: tcop/postgres.c:1218 +#: tcop/postgres.c:1210 #, c-format msgid "parse %s: %s" msgstr "analyse %s : %s" -#: tcop/postgres.c:1274 +#: tcop/postgres.c:1266 #, c-format msgid "cannot insert multiple commands into a prepared statement" -msgstr "ne peut pas insérer les commandes multiples dans une instruction préparée" +msgstr "ne peut pas insérer les commandes multiples dans une instruction préparée" -#: tcop/postgres.c:1431 +#: tcop/postgres.c:1423 #, c-format msgid "duration: %s ms parse %s: %s" -msgstr "durée : %s ms, analyse %s : %s" +msgstr "durée : %s ms, analyse %s : %s" -#: tcop/postgres.c:1476 +#: tcop/postgres.c:1468 #, c-format msgid "bind %s to %s" -msgstr "lie %s à %s" +msgstr "lie %s à %s" -#: tcop/postgres.c:1495 tcop/postgres.c:2312 +#: tcop/postgres.c:1487 tcop/postgres.c:2304 #, c-format msgid "unnamed prepared statement does not exist" -msgstr "l'instruction préparée non nommée n'existe pas" +msgstr "l'instruction préparée non nommée n'existe pas" -#: tcop/postgres.c:1537 +#: tcop/postgres.c:1529 #, c-format msgid "bind message has %d parameter formats but %d parameters" -msgstr "le message bind a %d formats de paramètres mais %d paramètres" +msgstr "le message bind a %d formats de paramètres mais %d paramètres" -#: tcop/postgres.c:1543 +#: tcop/postgres.c:1535 #, c-format msgid "bind message supplies %d parameters, but prepared statement \"%s\" requires %d" msgstr "" -"le message bind fournit %d paramètres, mais l'instruction préparée « %s » en\n" +"le message bind fournit %d paramètres, mais l'instruction préparée « %s » en\n" "requiert %d" -#: tcop/postgres.c:1712 +#: tcop/postgres.c:1704 #, c-format msgid "incorrect binary data format in bind parameter %d" -msgstr "format des données binaires incorrect dans le paramètre bind %d" +msgstr "format des données binaires incorrect dans le paramètre bind %d" -#: tcop/postgres.c:1810 +#: tcop/postgres.c:1802 #, c-format msgid "duration: %s ms bind %s%s%s: %s" -msgstr "durée : %s ms, lien %s%s%s : %s" +msgstr "durée : %s ms, lien %s%s%s : %s" -#: tcop/postgres.c:1858 tcop/postgres.c:2392 +#: tcop/postgres.c:1850 tcop/postgres.c:2384 #, c-format msgid "portal \"%s\" does not exist" -msgstr "le portail « %s » n'existe pas" +msgstr "le portail « %s » n'existe pas" -#: tcop/postgres.c:1943 +#: tcop/postgres.c:1935 #, c-format msgid "%s %s%s%s: %s" msgstr "%s %s%s%s: %s" -#: tcop/postgres.c:1945 tcop/postgres.c:2030 +#: tcop/postgres.c:1937 tcop/postgres.c:2022 msgid "execute fetch from" -msgstr "exécute fetch à partir de" +msgstr "exécute fetch à partir de" -#: tcop/postgres.c:1946 tcop/postgres.c:2031 +#: tcop/postgres.c:1938 tcop/postgres.c:2023 msgid "execute" -msgstr "exécute" +msgstr "exécute" -#: tcop/postgres.c:2027 +#: tcop/postgres.c:2019 #, c-format msgid "duration: %s ms %s %s%s%s: %s" -msgstr "durée : %s ms %s %s%s%s: %s" +msgstr "durée : %s ms %s %s%s%s: %s" -#: tcop/postgres.c:2153 +#: tcop/postgres.c:2145 #, c-format msgid "prepare: %s" -msgstr "préparation : %s" +msgstr "préparation : %s" -#: tcop/postgres.c:2216 +#: tcop/postgres.c:2208 #, c-format msgid "parameters: %s" -msgstr "paramètres : %s" +msgstr "paramètres : %s" -#: tcop/postgres.c:2235 +#: tcop/postgres.c:2227 #, c-format msgid "abort reason: recovery conflict" msgstr "raison de l'annulation : conflit de restauration" -#: tcop/postgres.c:2251 +#: tcop/postgres.c:2243 #, c-format msgid "User was holding shared buffer pin for too long." -msgstr "L'utilisateur conservait des blocs disques en mémoire partagée depuis trop longtemps." +msgstr "L'utilisateur conservait des blocs disques en mémoire partagée depuis trop longtemps." -#: tcop/postgres.c:2254 +#: tcop/postgres.c:2246 #, c-format msgid "User was holding a relation lock for too long." msgstr "L'utilisateur conservait un verrou sur une relation depuis trop longtemps." -#: tcop/postgres.c:2257 +#: tcop/postgres.c:2249 #, c-format msgid "User was or might have been using tablespace that must be dropped." -msgstr "L'utilisateur utilisait ou pouvait utiliser un tablespace qui doit être supprimé." +msgstr "L'utilisateur utilisait ou pouvait utiliser un tablespace qui doit être supprimé." -#: tcop/postgres.c:2260 +#: tcop/postgres.c:2252 #, c-format msgid "User query might have needed to see row versions that must be removed." msgstr "" -"La requête de l'utilisateur pourrait avoir eu besoin de voir des versions de\n" -"lignes qui doivent être supprimées." +"La requête de l'utilisateur pourrait avoir eu besoin de voir des versions de\n" +"lignes qui doivent être supprimées." -#: tcop/postgres.c:2266 +#: tcop/postgres.c:2258 #, c-format msgid "User was connected to a database that must be dropped." -msgstr "L'utilisateur était connecté à une base de donnée qui doit être supprimé." +msgstr "L'utilisateur était connecté à une base de donnée qui doit être supprimé." -#: tcop/postgres.c:2595 +#: tcop/postgres.c:2587 #, c-format msgid "terminating connection because of crash of another server process" -msgstr "arrêt de la connexion à cause de l'arrêt brutal d'un autre processus serveur" +msgstr "arrêt de la connexion à cause de l'arrêt brutal d'un autre processus serveur" -#: tcop/postgres.c:2596 +#: tcop/postgres.c:2588 #, c-format msgid "The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory." msgstr "" -"Le postmaster a commandé à ce processus serveur d'annuler la transaction\n" -"courante et de quitter car un autre processus serveur a quitté anormalement\n" -"et qu'il existe probablement de la mémoire partagée corrompue." +"Le postmaster a commandé à ce processus serveur d'annuler la transaction\n" +"courante et de quitter car un autre processus serveur a quitté anormalement\n" +"et qu'il existe probablement de la mémoire partagée corrompue." -#: tcop/postgres.c:2600 tcop/postgres.c:2904 +#: tcop/postgres.c:2592 tcop/postgres.c:2902 #, c-format msgid "In a moment you should be able to reconnect to the database and repeat your command." msgstr "" -"Dans un moment, vous devriez être capable de vous reconnecter à la base de\n" -"données et de relancer votre commande." +"Dans un moment, vous devriez être capable de vous reconnecter à la base de\n" +"données et de relancer votre commande." -#: tcop/postgres.c:2686 +#: tcop/postgres.c:2678 #, c-format msgid "floating-point exception" -msgstr "exception dû à une virgule flottante" +msgstr "exception dû à une virgule flottante" -#: tcop/postgres.c:2687 +#: tcop/postgres.c:2679 #, c-format msgid "An invalid floating-point operation was signaled. This probably means an out-of-range result or an invalid operation, such as division by zero." msgstr "" -"Une opération invalide sur les virgules flottantes a été signalée.\n" -"Ceci signifie probablement un résultat en dehors de l'échelle ou une\n" -"opération invalide telle qu'une division par zéro." +"Une opération invalide sur les virgules flottantes a été signalée.\n" +"Ceci signifie probablement un résultat en dehors de l'échelle ou une\n" +"opération invalide telle qu'une division par zéro." -#: tcop/postgres.c:2849 +#: tcop/postgres.c:2847 #, c-format msgid "canceling authentication due to timeout" -msgstr "annulation de l'authentification à cause du délai écoulé" +msgstr "annulation de l'authentification à cause du délai écoulé" -#: tcop/postgres.c:2853 +#: tcop/postgres.c:2851 #, c-format msgid "terminating autovacuum process due to administrator command" -msgstr "arrêt du processus autovacuum suite à la demande de l'administrateur" +msgstr "arrêt du processus autovacuum suite à la demande de l'administrateur" -#: tcop/postgres.c:2859 tcop/postgres.c:2869 tcop/postgres.c:2902 +#: tcop/postgres.c:2857 tcop/postgres.c:2867 tcop/postgres.c:2900 #, c-format msgid "terminating connection due to conflict with recovery" -msgstr "arrêt de la connexion à cause d'un conflit avec la restauration" +msgstr "arrêt de la connexion à cause d'un conflit avec la restauration" -#: tcop/postgres.c:2875 +#: tcop/postgres.c:2873 #, c-format msgid "terminating connection due to administrator command" -msgstr "arrêt des connexions suite à la demande de l'administrateur" +msgstr "arrêt des connexions suite à la demande de l'administrateur" -#: tcop/postgres.c:2885 +#: tcop/postgres.c:2883 #, c-format msgid "connection to client lost" msgstr "connexion au client perdue" -#: tcop/postgres.c:2953 +#: tcop/postgres.c:2951 #, c-format msgid "canceling statement due to lock timeout" -msgstr "annulation de la requête à cause du délai écoulé pour l'obtention des verrous" +msgstr "annulation de la requête à cause du délai écoulé pour l'obtention des verrous" -#: tcop/postgres.c:2960 +#: tcop/postgres.c:2958 #, c-format msgid "canceling statement due to statement timeout" -msgstr "annulation de la requête à cause du délai écoulé pour l'exécution de l'instruction" +msgstr "annulation de la requête à cause du délai écoulé pour l'exécution de l'instruction" -#: tcop/postgres.c:2967 +#: tcop/postgres.c:2965 #, c-format msgid "canceling autovacuum task" -msgstr "annulation de la tâche d'autovacuum" +msgstr "annulation de la tâche d'autovacuum" -#: tcop/postgres.c:2990 +#: tcop/postgres.c:2988 #, c-format msgid "canceling statement due to user request" -msgstr "annulation de la requête à la demande de l'utilisateur" +msgstr "annulation de la requête à la demande de l'utilisateur" -#: tcop/postgres.c:3000 +#: tcop/postgres.c:2998 #, c-format msgid "terminating connection due to idle-in-transaction timeout" -msgstr "arrêt des connexions suite à l'expiration du délai d'inactivité en transaction" +msgstr "arrêt des connexions suite à l'expiration du délai d'inactivité en transaction" -#: tcop/postgres.c:3114 +#: tcop/postgres.c:3112 #, c-format msgid "stack depth limit exceeded" -msgstr "dépassement de limite (en profondeur) de la pile" +msgstr "dépassement de limite (en profondeur) de la pile" -#: tcop/postgres.c:3115 +#: tcop/postgres.c:3113 #, c-format msgid "Increase the configuration parameter \"max_stack_depth\" (currently %dkB), after ensuring the platform's stack depth limit is adequate." msgstr "" -"Augmenter le paramètre « max_stack_depth » (actuellement %d Ko) après vous\n" -"être assuré que la limite de profondeur de la pile de la plateforme est\n" -"adéquate." +"Augmenter le paramètre « max_stack_depth » (actuellement %d Ko) après vous\n" +"être assuré que la limite de profondeur de la pile de la plateforme est\n" +"adéquate." -#: tcop/postgres.c:3178 +#: tcop/postgres.c:3176 #, c-format msgid "\"max_stack_depth\" must not exceed %ldkB." -msgstr "« max_stack_depth » ne doit pas dépasser %ld Ko." +msgstr "« max_stack_depth » ne doit pas dépasser %ld Ko." -#: tcop/postgres.c:3180 +#: tcop/postgres.c:3178 #, c-format msgid "Increase the platform's stack depth limit via \"ulimit -s\" or local equivalent." msgstr "" "Augmenter la limite de profondeur de la pile sur votre plateforme via\n" -"« ulimit -s » ou l'équivalent local." +"« ulimit -s » ou l'équivalent local." -#: tcop/postgres.c:3540 +#: tcop/postgres.c:3538 #, c-format msgid "invalid command-line argument for server process: %s" msgstr "argument invalide en ligne de commande pour le processus serveur : %s" -#: tcop/postgres.c:3541 tcop/postgres.c:3547 +#: tcop/postgres.c:3539 tcop/postgres.c:3545 #, c-format msgid "Try \"%s --help\" for more information." -msgstr "Essayez « %s --help » pour plus d'informations." +msgstr "Essayez « %s --help » pour plus d'informations." -#: tcop/postgres.c:3545 +#: tcop/postgres.c:3543 #, c-format msgid "%s: invalid command-line argument: %s" msgstr "%s : argument invalide en ligne de commande : %s" -#: tcop/postgres.c:3607 +#: tcop/postgres.c:3605 #, c-format msgid "%s: no database nor user name specified" -msgstr "%s : aucune base de données et aucun utilisateur spécifiés" +msgstr "%s : aucune base de données et aucun utilisateur spécifiés" -#: tcop/postgres.c:4216 +#: tcop/postgres.c:4208 #, c-format msgid "invalid CLOSE message subtype %d" msgstr "sous-type %d du message CLOSE invalide" -#: tcop/postgres.c:4251 +#: tcop/postgres.c:4243 #, c-format msgid "invalid DESCRIBE message subtype %d" msgstr "sous-type %d du message DESCRIBE invalide" -#: tcop/postgres.c:4329 +#: tcop/postgres.c:4321 #, c-format msgid "fastpath function calls not supported in a replication connection" -msgstr "appels à la fonction fastpath non supportés dans une connexion de réplication" +msgstr "appels à la fonction fastpath non supportés dans une connexion de réplication" -#: tcop/postgres.c:4333 +#: tcop/postgres.c:4325 #, c-format msgid "extended query protocol not supported in a replication connection" -msgstr "protocole étendu de requêtes non supporté dans une connexion de réplication" +msgstr "protocole étendu de requêtes non supporté dans une connexion de réplication" -#: tcop/postgres.c:4503 +#: tcop/postgres.c:4495 #, c-format msgid "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%s" msgstr "" -"déconnexion : durée de la session : %d:%02d:%02d.%03d\n" -"utilisateur=%s base=%s hôte=%s%s%s" +"déconnexion : durée de la session : %d:%02d:%02d.%03d\n" +"utilisateur=%s base=%s hôte=%s%s%s" #: tcop/pquery.c:665 #, c-format msgid "bind message has %d result formats but query has %d columns" -msgstr "le message bind a %d formats de résultat mais la requête a %d colonnes" +msgstr "le message bind a %d formats de résultat mais la requête a %d colonnes" #: tcop/pquery.c:967 #, c-format @@ -17679,98 +17482,98 @@ msgstr "le curseur peut seulement parcourir en avant" #: tcop/pquery.c:968 #, c-format msgid "Declare it with SCROLL option to enable backward scan." -msgstr "Déclarez-le avec l'option SCROLL pour activer le parcours inverse." +msgstr "Déclarez-le avec l'option SCROLL pour activer le parcours inverse." #. translator: %s is name of a SQL command, eg CREATE #: tcop/utility.c:235 #, c-format msgid "cannot execute %s in a read-only transaction" -msgstr "ne peut pas exécuter %s dans une transaction en lecture seule" +msgstr "ne peut pas exécuter %s dans une transaction en lecture seule" #. translator: %s is name of a SQL command, eg CREATE #: tcop/utility.c:253 #, c-format msgid "cannot execute %s during a parallel operation" -msgstr "ne peut pas exécuté %s lors d'une opération parallèle" +msgstr "ne peut pas exécuté %s lors d'une opération parallèle" #. translator: %s is name of a SQL command, eg CREATE #: tcop/utility.c:272 #, c-format msgid "cannot execute %s during recovery" -msgstr "ne peut pas exécuté %s lors de la restauration" +msgstr "ne peut pas exécuté %s lors de la restauration" #. translator: %s is name of a SQL command, eg PREPARE #: tcop/utility.c:290 #, c-format msgid "cannot execute %s within security-restricted operation" msgstr "" -"ne peut pas exécuter %s à l'intérieur d'une fonction restreinte\n" -"pour sécurité" +"ne peut pas exécuter %s à l'intérieur d'une fonction restreinte\n" +"pour sécurité" #: tcop/utility.c:744 #, c-format msgid "must be superuser to do CHECKPOINT" -msgstr "doit être super-utilisateur pour exécuter un point de vérification (CHECKPOINT)" +msgstr "doit être super-utilisateur pour exécuter un point de vérification (CHECKPOINT)" #: tsearch/dict_ispell.c:51 tsearch/dict_thesaurus.c:623 #, c-format msgid "multiple DictFile parameters" -msgstr "multiples paramètres DictFile" +msgstr "multiples paramètres DictFile" #: tsearch/dict_ispell.c:62 #, c-format msgid "multiple AffFile parameters" -msgstr "multiples paramètres AffFile" +msgstr "multiples paramètres AffFile" #: tsearch/dict_ispell.c:81 #, c-format msgid "unrecognized Ispell parameter: \"%s\"" -msgstr "paramètre Ispell non reconnu : « %s »" +msgstr "paramètre Ispell non reconnu : « %s »" #: tsearch/dict_ispell.c:95 #, c-format msgid "missing AffFile parameter" -msgstr "paramètre AffFile manquant" +msgstr "paramètre AffFile manquant" #: tsearch/dict_ispell.c:101 tsearch/dict_thesaurus.c:647 #, c-format msgid "missing DictFile parameter" -msgstr "paramètre DictFile manquant" +msgstr "paramètre DictFile manquant" #: tsearch/dict_simple.c:57 #, c-format msgid "multiple Accept parameters" -msgstr "multiples paramètres Accept" +msgstr "multiples paramètres Accept" #: tsearch/dict_simple.c:65 #, c-format msgid "unrecognized simple dictionary parameter: \"%s\"" -msgstr "paramètre de dictionnaire simple non reconnu : « %s »" +msgstr "paramètre de dictionnaire simple non reconnu : « %s »" #: tsearch/dict_synonym.c:117 #, c-format msgid "unrecognized synonym parameter: \"%s\"" -msgstr "paramètre synonyme non reconnu : « %s »" +msgstr "paramètre synonyme non reconnu : « %s »" #: tsearch/dict_synonym.c:124 #, c-format msgid "missing Synonyms parameter" -msgstr "paramètre Synonyms manquant" +msgstr "paramètre Synonyms manquant" #: tsearch/dict_synonym.c:131 #, c-format msgid "could not open synonym file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier synonyme « %s » : %m" +msgstr "n'a pas pu ouvrir le fichier synonyme « %s » : %m" #: tsearch/dict_thesaurus.c:178 #, c-format msgid "could not open thesaurus file \"%s\": %m" -msgstr "n'a pas pu ouvrir le thésaurus « %s » : %m" +msgstr "n'a pas pu ouvrir le thésaurus « %s » : %m" #: tsearch/dict_thesaurus.c:211 #, c-format msgid "unexpected delimiter" -msgstr "délimiteur inattendu" +msgstr "délimiteur inattendu" #: tsearch/dict_thesaurus.c:261 tsearch/dict_thesaurus.c:277 #, c-format @@ -17785,81 +17588,81 @@ msgstr "fin de ligne inattendue" #: tsearch/dict_thesaurus.c:296 #, c-format msgid "too many lexemes in thesaurus entry" -msgstr "trop de lexèmes dans l'entre du thésaurus" +msgstr "trop de lexèmes dans l'entre du thésaurus" #: tsearch/dict_thesaurus.c:420 #, c-format msgid "thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)" msgstr "" -"le mot d'exemple « %s » du thésaurus n'est pas reconnu par le\n" -"sous-dictionnaire (règle %d)" +"le mot d'exemple « %s » du thésaurus n'est pas reconnu par le\n" +"sous-dictionnaire (règle %d)" #: tsearch/dict_thesaurus.c:426 #, c-format msgid "thesaurus sample word \"%s\" is a stop word (rule %d)" -msgstr "le mot d'exemple « %s » du thésaurus est un terme courant (règle %d)" +msgstr "le mot d'exemple « %s » du thésaurus est un terme courant (règle %d)" #: tsearch/dict_thesaurus.c:429 #, c-format msgid "Use \"?\" to represent a stop word within a sample phrase." -msgstr "Utilisez « ? » pour représenter un terme courant dans une phrase." +msgstr "Utilisez « ? » pour représenter un terme courant dans une phrase." #: tsearch/dict_thesaurus.c:575 #, c-format msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)" -msgstr "le mot substitut « %s » du thésaurus est un terme courant (règle %d)" +msgstr "le mot substitut « %s » du thésaurus est un terme courant (règle %d)" #: tsearch/dict_thesaurus.c:582 #, c-format msgid "thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)" msgstr "" -"le mot substitut « %s » du thésaurus n'est pas reconnu par le\n" -"sous-dictionnaire (règle %d)" +"le mot substitut « %s » du thésaurus n'est pas reconnu par le\n" +"sous-dictionnaire (règle %d)" #: tsearch/dict_thesaurus.c:594 #, c-format msgid "thesaurus substitute phrase is empty (rule %d)" -msgstr "la phrase substitut du thésaurus est vide (règle %d)" +msgstr "la phrase substitut du thésaurus est vide (règle %d)" #: tsearch/dict_thesaurus.c:632 #, c-format msgid "multiple Dictionary parameters" -msgstr "multiples paramètres Dictionary" +msgstr "multiples paramètres Dictionary" #: tsearch/dict_thesaurus.c:639 #, c-format msgid "unrecognized Thesaurus parameter: \"%s\"" -msgstr "paramètre Thesaurus non reconnu : « %s »" +msgstr "paramètre Thesaurus non reconnu : « %s »" #: tsearch/dict_thesaurus.c:651 #, c-format msgid "missing Dictionary parameter" -msgstr "paramètre Dictionary manquant" +msgstr "paramètre Dictionary manquant" #: tsearch/spell.c:380 tsearch/spell.c:397 tsearch/spell.c:406 tsearch/spell.c:1034 #, c-format msgid "invalid affix flag \"%s\"" -msgstr "drapeau d'affixe invalide « %s »" +msgstr "drapeau d'affixe invalide « %s »" #: tsearch/spell.c:384 tsearch/spell.c:1038 #, c-format msgid "affix flag \"%s\" is out of range" -msgstr "le drapeau d'affixe « %s » est en dehors des limites" +msgstr "le drapeau d'affixe « %s » est en dehors des limites" #: tsearch/spell.c:414 #, c-format msgid "invalid character in affix flag \"%s\"" -msgstr "données invalides dans le drapeau d'affixe « %s »" +msgstr "données invalides dans le drapeau d'affixe « %s »" #: tsearch/spell.c:434 #, c-format msgid "invalid affix flag \"%s\" with \"long\" flag value" -msgstr "drapeau d'affixe invalide « %s » avec la valeur de drapeau « long »" +msgstr "drapeau d'affixe invalide « %s » avec la valeur de drapeau « long »" #: tsearch/spell.c:522 #, c-format msgid "could not open dictionary file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier dictionnaire « %s » : %m" +msgstr "n'a pas pu ouvrir le fichier dictionnaire « %s » : %m" #: tsearch/spell.c:740 utils/adt/regexp.c:204 #, c-format @@ -17869,17 +17672,17 @@ msgstr "expression rationnelle invalide : %s" #: tsearch/spell.c:1161 tsearch/spell.c:1721 #, c-format msgid "invalid affix alias \"%s\"" -msgstr "alias d'affixe invalide « %s »" +msgstr "alias d'affixe invalide « %s »" #: tsearch/spell.c:1211 tsearch/spell.c:1282 tsearch/spell.c:1426 #, c-format msgid "could not open affix file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier affixe « %s » : %m" +msgstr "n'a pas pu ouvrir le fichier affixe « %s » : %m" #: tsearch/spell.c:1265 #, c-format msgid "Ispell dictionary supports only \"default\", \"long\", and \"num\" flag values" -msgstr "le dictionnaire Ispell supporte seulement les valeurs de drapeau « default », « long »et « num »" +msgstr "le dictionnaire Ispell supporte seulement les valeurs de drapeau « default », « long »et « num »" #: tsearch/spell.c:1309 #, c-format @@ -17891,40 +17694,40 @@ msgstr "nombre d'alias de vecteur de drapeau invalide" msgid "affix file contains both old-style and new-style commands" msgstr "le fichier d'affixes contient des commandes ancien et nouveau style" -#: tsearch/to_tsany.c:170 utils/adt/tsvector.c:270 utils/adt/tsvector_op.c:1132 +#: tsearch/to_tsany.c:170 utils/adt/tsvector.c:270 utils/adt/tsvector_op.c:1133 #, c-format msgid "string is too long for tsvector (%d bytes, max %d bytes)" -msgstr "la chaîne est trop longue (%d octets, max %d octets)" +msgstr "la chaîne est trop longue (%d octets, max %d octets)" #: tsearch/ts_locale.c:177 #, c-format msgid "line %d of configuration file \"%s\": \"%s\"" -msgstr "ligne %d du fichier de configuration « %s » : « %s »" +msgstr "ligne %d du fichier de configuration « %s » : « %s »" #: tsearch/ts_locale.c:299 #, c-format msgid "conversion from wchar_t to server encoding failed: %m" -msgstr "échec de l'encodage de wchar_t vers l'encodage du serveur : %m" +msgstr "échec de l'encodage de wchar_t vers l'encodage du serveur : %m" #: tsearch/ts_parse.c:390 tsearch/ts_parse.c:397 tsearch/ts_parse.c:566 tsearch/ts_parse.c:573 #, c-format msgid "word is too long to be indexed" -msgstr "le mot est trop long pour être indexé" +msgstr "le mot est trop long pour être indexé" #: tsearch/ts_parse.c:391 tsearch/ts_parse.c:398 tsearch/ts_parse.c:567 tsearch/ts_parse.c:574 #, c-format msgid "Words longer than %d characters are ignored." -msgstr "Les mots de plus de %d caractères sont ignorés." +msgstr "Les mots de plus de %d caractères sont ignorés." #: tsearch/ts_utils.c:51 #, c-format msgid "invalid text search configuration file name \"%s\"" -msgstr "nom du fichier de configuration de la recherche plein texte invalide : « %s »" +msgstr "nom du fichier de configuration de la recherche plein texte invalide : « %s »" #: tsearch/ts_utils.c:83 #, c-format msgid "could not open stop-word file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier des termes courants « %s » : %m" +msgstr "n'a pas pu ouvrir le fichier des termes courants « %s » : %m" #: tsearch/wparser.c:306 #, c-format @@ -17934,7 +17737,7 @@ msgstr "l'analyseur de recherche plein texte ne supporte pas headline" #: tsearch/wparser_def.c:2583 #, c-format msgid "unrecognized headline parameter: \"%s\"" -msgstr "paramètre headline « %s » non reconnu" +msgstr "paramètre headline « %s » non reconnu" #: tsearch/wparser_def.c:2592 #, c-format @@ -17944,17 +17747,17 @@ msgstr "MinWords doit avoir une valeur plus petite que celle de MaxWords" #: tsearch/wparser_def.c:2596 #, c-format msgid "MinWords should be positive" -msgstr "MinWords doit être positif" +msgstr "MinWords doit être positif" #: tsearch/wparser_def.c:2600 #, c-format msgid "ShortWord should be >= 0" -msgstr "ShortWord devrait être positif ou nul" +msgstr "ShortWord devrait être positif ou nul" #: tsearch/wparser_def.c:2604 #, c-format msgid "MaxFragments should be >= 0" -msgstr "MaxFragments devrait être positif ou nul" +msgstr "MaxFragments devrait être positif ou nul" #: utils/adt/acl.c:170 utils/adt/name.c:91 #, c-format @@ -17964,17 +17767,17 @@ msgstr "identifiant trop long" #: utils/adt/acl.c:171 utils/adt/name.c:92 #, c-format msgid "Identifier must be less than %d characters." -msgstr "L'identifiant doit faire moins de %d caractères." +msgstr "L'identifiant doit faire moins de %d caractères." #: utils/adt/acl.c:257 #, c-format msgid "unrecognized key word: \"%s\"" -msgstr "mot clé non reconnu : « %s »" +msgstr "mot clé non reconnu : « %s »" #: utils/adt/acl.c:258 #, c-format msgid "ACL key word must be \"group\" or \"user\"." -msgstr "le mot clé ACL doit être soit « group » soit « user »." +msgstr "le mot clé ACL doit être soit « group » soit « user »." #: utils/adt/acl.c:263 #, c-format @@ -17984,32 +17787,32 @@ msgstr "nom manquant" #: utils/adt/acl.c:264 #, c-format msgid "A name must follow the \"group\" or \"user\" key word." -msgstr "Un nom doit suivre le mot clé « group » ou « user »." +msgstr "Un nom doit suivre le mot clé « group » ou « user »." #: utils/adt/acl.c:270 #, c-format msgid "missing \"=\" sign" -msgstr "signe « = » manquant" +msgstr "signe « = » manquant" #: utils/adt/acl.c:323 #, c-format msgid "invalid mode character: must be one of \"%s\"" -msgstr "mode caractère invalide : doit faire partie de « %s »" +msgstr "mode caractère invalide : doit faire partie de « %s »" #: utils/adt/acl.c:345 #, c-format msgid "a name must follow the \"/\" sign" -msgstr "un nom doit suivre le signe « / »" +msgstr "un nom doit suivre le signe « / »" #: utils/adt/acl.c:353 #, c-format msgid "defaulting grantor to user ID %u" -msgstr "par défaut, le « donneur de droits » devient l'utilisateur d'identifiant %u" +msgstr "par défaut, le « donneur de droits » devient l'utilisateur d'identifiant %u" #: utils/adt/acl.c:544 #, c-format msgid "ACL array contains wrong data type" -msgstr "le tableau ACL contient un type de données incorrect" +msgstr "le tableau ACL contient un type de données incorrect" #: utils/adt/acl.c:548 #, c-format @@ -18024,132 +17827,132 @@ msgstr "les tableaux d'ACL ne doivent pas contenir de valeurs NULL" #: utils/adt/acl.c:576 #, c-format msgid "extra garbage at the end of the ACL specification" -msgstr "données superflues à la fin de la spécification de l'ACL" +msgstr "données superflues à la fin de la spécification de l'ACL" #: utils/adt/acl.c:1196 #, c-format msgid "grant options cannot be granted back to your own grantor" -msgstr "les options grant ne peuvent pas être rendues à votre propre donateur" +msgstr "les options grant ne peuvent pas être rendues à votre propre donateur" #: utils/adt/acl.c:1257 #, c-format msgid "dependent privileges exist" -msgstr "des privilèges dépendants existent" +msgstr "des privilèges dépendants existent" #: utils/adt/acl.c:1258 #, c-format msgid "Use CASCADE to revoke them too." -msgstr "Utilisez CASCADE pour les révoquer aussi." +msgstr "Utilisez CASCADE pour les révoquer aussi." #: utils/adt/acl.c:1537 #, c-format msgid "aclinsert is no longer supported" -msgstr "aclinsert n'est plus supporté" +msgstr "aclinsert n'est plus supporté" #: utils/adt/acl.c:1547 #, c-format msgid "aclremove is no longer supported" -msgstr "aclremove n'est plus supporté" +msgstr "aclremove n'est plus supporté" #: utils/adt/acl.c:1633 utils/adt/acl.c:1687 #, c-format msgid "unrecognized privilege type: \"%s\"" -msgstr "type de droit non reconnu : « %s »" +msgstr "type de droit non reconnu : « %s »" -#: utils/adt/acl.c:3427 utils/adt/regproc.c:123 utils/adt/regproc.c:144 utils/adt/regproc.c:319 +#: utils/adt/acl.c:3427 utils/adt/regproc.c:124 utils/adt/regproc.c:145 utils/adt/regproc.c:320 #, c-format msgid "function \"%s\" does not exist" -msgstr "la fonction « %s » n'existe pas" +msgstr "la fonction « %s » n'existe pas" #: utils/adt/acl.c:4881 #, c-format msgid "must be member of role \"%s\"" -msgstr "doit être un membre du rôle « %s »" +msgstr "doit être un membre du rôle « %s »" -#: utils/adt/array_expanded.c:274 utils/adt/arrayfuncs.c:931 utils/adt/arrayfuncs.c:1519 utils/adt/arrayfuncs.c:3251 utils/adt/arrayfuncs.c:3389 utils/adt/arrayfuncs.c:5860 utils/adt/arrayfuncs.c:6171 utils/adt/arrayutils.c:93 utils/adt/arrayutils.c:102 utils/adt/arrayutils.c:109 +#: utils/adt/array_expanded.c:274 utils/adt/arrayfuncs.c:931 utils/adt/arrayfuncs.c:1519 utils/adt/arrayfuncs.c:3251 utils/adt/arrayfuncs.c:3389 utils/adt/arrayfuncs.c:5848 utils/adt/arrayfuncs.c:6159 utils/adt/arrayutils.c:93 utils/adt/arrayutils.c:102 utils/adt/arrayutils.c:109 #, c-format msgid "array size exceeds the maximum allowed (%d)" -msgstr "la taille du tableau dépasse le maximum permis (%d)" +msgstr "la taille du tableau dépasse le maximum permis (%d)" -#: utils/adt/array_userfuncs.c:67 utils/adt/array_userfuncs.c:529 utils/adt/array_userfuncs.c:609 utils/adt/json.c:1759 utils/adt/json.c:1854 utils/adt/json.c:1892 utils/adt/jsonb.c:1126 utils/adt/jsonb.c:1155 utils/adt/jsonb.c:1591 utils/adt/jsonb.c:1755 utils/adt/jsonb.c:1765 +#: utils/adt/array_userfuncs.c:79 utils/adt/array_userfuncs.c:541 utils/adt/array_userfuncs.c:621 utils/adt/json.c:1759 utils/adt/json.c:1854 utils/adt/json.c:1892 utils/adt/jsonb.c:1126 utils/adt/jsonb.c:1155 utils/adt/jsonb.c:1591 utils/adt/jsonb.c:1755 utils/adt/jsonb.c:1765 #, c-format msgid "could not determine input data type" -msgstr "n'a pas pu déterminer le type de données date en entrée" +msgstr "n'a pas pu déterminer le type de données date en entrée" -#: utils/adt/array_userfuncs.c:72 +#: utils/adt/array_userfuncs.c:84 #, c-format msgid "input data type is not an array" -msgstr "le type de données en entrée n'est pas un tableau" +msgstr "le type de données en entrée n'est pas un tableau" -#: utils/adt/array_userfuncs.c:120 utils/adt/array_userfuncs.c:174 utils/adt/arrayfuncs.c:1322 utils/adt/float.c:1228 utils/adt/float.c:1287 utils/adt/float.c:3556 utils/adt/float.c:3572 utils/adt/int.c:623 utils/adt/int.c:652 utils/adt/int.c:673 utils/adt/int.c:704 utils/adt/int.c:737 utils/adt/int.c:759 utils/adt/int.c:907 utils/adt/int.c:928 utils/adt/int.c:955 utils/adt/int.c:995 utils/adt/int.c:1016 utils/adt/int.c:1043 -#: utils/adt/int.c:1076 utils/adt/int.c:1159 utils/adt/int8.c:1298 utils/adt/numeric.c:2903 utils/adt/numeric.c:2912 utils/adt/varbit.c:1173 utils/adt/varbit.c:1565 utils/adt/varlena.c:1055 utils/adt/varlena.c:2807 +#: utils/adt/array_userfuncs.c:132 utils/adt/array_userfuncs.c:186 utils/adt/arrayfuncs.c:1322 utils/adt/float.c:1228 utils/adt/float.c:1287 utils/adt/float.c:3556 utils/adt/float.c:3572 utils/adt/int.c:623 utils/adt/int.c:652 utils/adt/int.c:673 utils/adt/int.c:704 utils/adt/int.c:737 utils/adt/int.c:759 utils/adt/int.c:907 utils/adt/int.c:928 utils/adt/int.c:955 utils/adt/int.c:995 utils/adt/int.c:1016 utils/adt/int.c:1043 +#: utils/adt/int.c:1076 utils/adt/int.c:1159 utils/adt/int8.c:1298 utils/adt/numeric.c:2903 utils/adt/numeric.c:2912 utils/adt/varbit.c:1173 utils/adt/varbit.c:1575 utils/adt/varlena.c:1055 utils/adt/varlena.c:2807 #, c-format msgid "integer out of range" msgstr "entier en dehors des limites" -#: utils/adt/array_userfuncs.c:127 utils/adt/array_userfuncs.c:184 +#: utils/adt/array_userfuncs.c:139 utils/adt/array_userfuncs.c:196 #, c-format msgid "argument must be empty or one-dimensional array" -msgstr "l'argument doit être vide ou doit être un tableau à une dimension" +msgstr "l'argument doit être vide ou doit être un tableau à une dimension" -#: utils/adt/array_userfuncs.c:266 utils/adt/array_userfuncs.c:305 utils/adt/array_userfuncs.c:342 utils/adt/array_userfuncs.c:371 utils/adt/array_userfuncs.c:399 +#: utils/adt/array_userfuncs.c:278 utils/adt/array_userfuncs.c:317 utils/adt/array_userfuncs.c:354 utils/adt/array_userfuncs.c:383 utils/adt/array_userfuncs.c:411 #, c-format msgid "cannot concatenate incompatible arrays" -msgstr "ne peut pas concaténer des tableaux non compatibles" +msgstr "ne peut pas concaténer des tableaux non compatibles" -#: utils/adt/array_userfuncs.c:267 +#: utils/adt/array_userfuncs.c:279 #, c-format msgid "Arrays with element types %s and %s are not compatible for concatenation." msgstr "" -"Les tableaux avec les types d'élément %s et %s ne sont pas compatibles\n" -"pour la concaténation." +"Les tableaux avec les types d'élément %s et %s ne sont pas compatibles\n" +"pour la concaténation." -#: utils/adt/array_userfuncs.c:306 +#: utils/adt/array_userfuncs.c:318 #, c-format msgid "Arrays of %d and %d dimensions are not compatible for concatenation." msgstr "" "Les tableaux de dimensions %d et %d ne sont pas compatiblee pour la\n" -"concaténation." +"concaténation." -#: utils/adt/array_userfuncs.c:343 +#: utils/adt/array_userfuncs.c:355 #, c-format msgid "Arrays with differing element dimensions are not compatible for concatenation." msgstr "" -"Les tableaux de dimensions différentes ne sont pas compatibles pour\n" -"une concaténation." +"Les tableaux de dimensions différentes ne sont pas compatibles pour\n" +"une concaténation." -#: utils/adt/array_userfuncs.c:372 utils/adt/array_userfuncs.c:400 +#: utils/adt/array_userfuncs.c:384 utils/adt/array_userfuncs.c:412 #, c-format msgid "Arrays with differing dimensions are not compatible for concatenation." msgstr "" -"Les tableaux de dimensions différentes ne sont pas compatibles pour\n" -"une concaténation." +"Les tableaux de dimensions différentes ne sont pas compatibles pour\n" +"une concaténation." -#: utils/adt/array_userfuncs.c:468 utils/adt/arrayfuncs.c:1284 utils/adt/arrayfuncs.c:3357 utils/adt/arrayfuncs.c:5760 +#: utils/adt/array_userfuncs.c:480 utils/adt/arrayfuncs.c:1284 utils/adt/arrayfuncs.c:3357 utils/adt/arrayfuncs.c:5754 #, c-format msgid "invalid number of dimensions: %d" msgstr "nombre de dimensions invalides : %d" -#: utils/adt/array_userfuncs.c:725 utils/adt/array_userfuncs.c:876 +#: utils/adt/array_userfuncs.c:737 utils/adt/array_userfuncs.c:889 #, c-format msgid "searching for elements in multidimensional arrays is not supported" -msgstr "la recherche d'éléments dans des tableaux multidimensionnels n'est pas supportée" +msgstr "la recherche d'éléments dans des tableaux multidimensionnels n'est pas supportée" -#: utils/adt/array_userfuncs.c:749 +#: utils/adt/array_userfuncs.c:761 #, c-format msgid "initial position must not be null" -msgstr "la position initiale ne doit pas être NULL" +msgstr "la position initiale ne doit pas être NULL" #: utils/adt/arrayfuncs.c:268 utils/adt/arrayfuncs.c:282 utils/adt/arrayfuncs.c:293 utils/adt/arrayfuncs.c:315 utils/adt/arrayfuncs.c:330 utils/adt/arrayfuncs.c:344 utils/adt/arrayfuncs.c:350 utils/adt/arrayfuncs.c:357 utils/adt/arrayfuncs.c:488 utils/adt/arrayfuncs.c:504 utils/adt/arrayfuncs.c:515 utils/adt/arrayfuncs.c:530 utils/adt/arrayfuncs.c:551 utils/adt/arrayfuncs.c:581 utils/adt/arrayfuncs.c:588 utils/adt/arrayfuncs.c:596 #: utils/adt/arrayfuncs.c:630 utils/adt/arrayfuncs.c:653 utils/adt/arrayfuncs.c:673 utils/adt/arrayfuncs.c:785 utils/adt/arrayfuncs.c:794 utils/adt/arrayfuncs.c:824 utils/adt/arrayfuncs.c:839 utils/adt/arrayfuncs.c:892 #, c-format msgid "malformed array literal: \"%s\"" -msgstr "tableau litéral mal formé : « %s »" +msgstr "tableau litéral mal formé : « %s »" #: utils/adt/arrayfuncs.c:269 #, c-format msgid "\"[\" must introduce explicitly-specified array dimensions." -msgstr "« [ » doit introduire les dimensions explicites du tableau" +msgstr "« [ » doit introduire les dimensions explicites du tableau" #: utils/adt/arrayfuncs.c:283 #, c-format @@ -18159,49 +17962,49 @@ msgstr "Valeur manquante de la dimension du tableau." #: utils/adt/arrayfuncs.c:294 utils/adt/arrayfuncs.c:331 #, c-format msgid "Missing \"%s\" after array dimensions." -msgstr "« %s » manquant après les dimensions du tableau." +msgstr "« %s » manquant après les dimensions du tableau." #: utils/adt/arrayfuncs.c:303 utils/adt/arrayfuncs.c:2870 utils/adt/arrayfuncs.c:2902 utils/adt/arrayfuncs.c:2917 #, c-format msgid "upper bound cannot be less than lower bound" -msgstr "la limite supérieure ne peut pas être plus petite que la limite inférieure" +msgstr "la limite supérieure ne peut pas être plus petite que la limite inférieure" #: utils/adt/arrayfuncs.c:316 #, c-format msgid "Array value must start with \"{\" or dimension information." msgstr "" -"La valeur du tableau doit commencer avec « { » ou avec l'information de la\n" +"La valeur du tableau doit commencer avec « { » ou avec l'information de la\n" "dimension." #: utils/adt/arrayfuncs.c:345 #, c-format msgid "Array contents must start with \"{\"." -msgstr "Le contenu du tableau doit commencer avec « { »." +msgstr "Le contenu du tableau doit commencer avec « { »." #: utils/adt/arrayfuncs.c:351 utils/adt/arrayfuncs.c:358 #, c-format msgid "Specified array dimensions do not match array contents." -msgstr "Les dimensions spécifiées du tableau ne correspondent pas au contenu du tableau." +msgstr "Les dimensions spécifiées du tableau ne correspondent pas au contenu du tableau." #: utils/adt/arrayfuncs.c:489 utils/adt/arrayfuncs.c:516 utils/adt/rangetypes.c:2124 utils/adt/rangetypes.c:2132 utils/adt/rowtypes.c:208 utils/adt/rowtypes.c:216 #, c-format msgid "Unexpected end of input." -msgstr "Fin de l'entrée inattendue." +msgstr "Fin de l'entrée inattendue." #: utils/adt/arrayfuncs.c:505 utils/adt/arrayfuncs.c:552 utils/adt/arrayfuncs.c:582 utils/adt/arrayfuncs.c:631 #, c-format msgid "Unexpected \"%c\" character." -msgstr "Caractère « %c » inattendu." +msgstr "Caractère « %c » inattendu." #: utils/adt/arrayfuncs.c:531 utils/adt/arrayfuncs.c:654 #, c-format msgid "Unexpected array element." -msgstr "Élément de tableau inattendu." +msgstr "Élément de tableau inattendu." #: utils/adt/arrayfuncs.c:589 #, c-format msgid "Unmatched \"%c\" character." -msgstr "Caractère « %c » sans correspondance." +msgstr "Caractère « %c » sans correspondance." #: utils/adt/arrayfuncs.c:597 #, c-format @@ -18213,7 +18016,7 @@ msgstr "" #: utils/adt/arrayfuncs.c:674 #, c-format msgid "Junk after closing right brace." -msgstr "Problème après la parenthèse droite fermante." +msgstr "Problème après la parenthèse droite fermante." #: utils/adt/arrayfuncs.c:1295 #, c-format @@ -18223,17 +18026,17 @@ msgstr "drapeaux de tableau invalides" #: utils/adt/arrayfuncs.c:1303 #, c-format msgid "wrong element type" -msgstr "mauvais type d'élément" +msgstr "mauvais type d'élément" #: utils/adt/arrayfuncs.c:1353 utils/adt/rangetypes.c:334 utils/cache/lsyscache.c:2651 #, c-format msgid "no binary input function available for type %s" -msgstr "aucune fonction d'entrée binaire disponible pour le type %s" +msgstr "aucune fonction d'entrée binaire disponible pour le type %s" #: utils/adt/arrayfuncs.c:1493 #, c-format msgid "improper binary format in array element %d" -msgstr "format binaire mal conçu dans l'élément du tableau %d" +msgstr "format binaire mal conçu dans l'élément du tableau %d" #: utils/adt/arrayfuncs.c:1574 utils/adt/rangetypes.c:339 utils/cache/lsyscache.c:2684 #, c-format @@ -18243,9 +18046,9 @@ msgstr "aucune fonction de sortie binaire disponible pour le type %s" #: utils/adt/arrayfuncs.c:2052 #, c-format msgid "slices of fixed-length arrays not implemented" -msgstr "les morceaux des tableaux à longueur fixe ne sont pas implémentés" +msgstr "les morceaux des tableaux à longueur fixe ne sont pas implémentés" -#: utils/adt/arrayfuncs.c:2230 utils/adt/arrayfuncs.c:2252 utils/adt/arrayfuncs.c:2301 utils/adt/arrayfuncs.c:2537 utils/adt/arrayfuncs.c:2848 utils/adt/arrayfuncs.c:5740 utils/adt/arrayfuncs.c:5772 utils/adt/arrayfuncs.c:5789 utils/adt/json.c:2290 utils/adt/json.c:2365 utils/adt/jsonb.c:1369 utils/adt/jsonb.c:1455 utils/adt/jsonfuncs.c:3529 utils/adt/jsonfuncs.c:3574 utils/adt/jsonfuncs.c:3621 +#: utils/adt/arrayfuncs.c:2230 utils/adt/arrayfuncs.c:2252 utils/adt/arrayfuncs.c:2301 utils/adt/arrayfuncs.c:2537 utils/adt/arrayfuncs.c:2848 utils/adt/arrayfuncs.c:5740 utils/adt/arrayfuncs.c:5766 utils/adt/arrayfuncs.c:5777 utils/adt/json.c:2290 utils/adt/json.c:2365 utils/adt/jsonb.c:1369 utils/adt/jsonb.c:1455 utils/adt/jsonfuncs.c:3529 utils/adt/jsonfuncs.c:3574 utils/adt/jsonfuncs.c:3621 #, c-format msgid "wrong number of array subscripts" msgstr "mauvais nombre d'indices du tableau" @@ -18253,29 +18056,29 @@ msgstr "mauvais nombre d'indices du tableau" #: utils/adt/arrayfuncs.c:2235 utils/adt/arrayfuncs.c:2343 utils/adt/arrayfuncs.c:2601 utils/adt/arrayfuncs.c:2907 #, c-format msgid "array subscript out of range" -msgstr "indice du tableau en dehors de l'échelle" +msgstr "indice du tableau en dehors de l'échelle" #: utils/adt/arrayfuncs.c:2240 #, c-format msgid "cannot assign null value to an element of a fixed-length array" -msgstr "ne peut pas affecter une valeur NULL à un élément d'un tableau à longueur fixe" +msgstr "ne peut pas affecter une valeur NULL à un élément d'un tableau à longueur fixe" #: utils/adt/arrayfuncs.c:2795 #, c-format msgid "updates on slices of fixed-length arrays not implemented" msgstr "" -"les mises à jour de morceaux des tableaux à longueur fixe ne sont pas\n" -"implémentées" +"les mises à jour de morceaux des tableaux à longueur fixe ne sont pas\n" +"implémentées" #: utils/adt/arrayfuncs.c:2826 #, c-format msgid "array slice subscript must provide both boundaries" -msgstr "la tranche d'indice de tableau doit être fournir les deux limites" +msgstr "la tranche d'indice de tableau doit être fournir les deux limites" #: utils/adt/arrayfuncs.c:2827 #, c-format msgid "When assigning to a slice of an empty array value, slice boundaries must be fully specified." -msgstr "Les limites de tranches doivent être entièrement spécifiées lors de l'assignation d'une valeur d'un tableau vide à une tranche" +msgstr "Les limites de tranches doivent être entièrement spécifiées lors de l'assignation d'une valeur d'un tableau vide à une tranche" #: utils/adt/arrayfuncs.c:2838 utils/adt/arrayfuncs.c:2933 #, c-format @@ -18285,12 +18088,12 @@ msgstr "tableau source trop petit" #: utils/adt/arrayfuncs.c:3513 #, c-format msgid "null array element not allowed in this context" -msgstr "élément NULL de tableau interdit dans ce contexte" +msgstr "élément NULL de tableau interdit dans ce contexte" #: utils/adt/arrayfuncs.c:3615 utils/adt/arrayfuncs.c:3786 utils/adt/arrayfuncs.c:4060 #, c-format msgid "cannot compare arrays of different element types" -msgstr "ne peut pas comparer des tableaux ayant des types d'éléments différents" +msgstr "ne peut pas comparer des tableaux ayant des types d'éléments différents" #: utils/adt/arrayfuncs.c:3962 utils/adt/rangetypes.c:1253 #, c-format @@ -18300,7 +18103,7 @@ msgstr "n'a pas pu identifier une fonction de hachage pour le type %s" #: utils/adt/arrayfuncs.c:5154 #, c-format msgid "data type %s is not an array type" -msgstr "le type de données %s n'est pas un type tableau" +msgstr "le type de données %s n'est pas un type tableau" #: utils/adt/arrayfuncs.c:5209 #, c-format @@ -18310,54 +18113,44 @@ msgstr "ne peut pas accumuler des tableaux NULL" #: utils/adt/arrayfuncs.c:5237 #, c-format msgid "cannot accumulate empty arrays" -msgstr "ne peut pas concaténer des tableaux vides" +msgstr "ne peut pas concaténer des tableaux vides" #: utils/adt/arrayfuncs.c:5266 utils/adt/arrayfuncs.c:5272 #, c-format msgid "cannot accumulate arrays of different dimensionality" -msgstr "ne peut pas accumuler des tableaux de dimensions différentes" +msgstr "ne peut pas accumuler des tableaux de dimensions différentes" #: utils/adt/arrayfuncs.c:5638 utils/adt/arrayfuncs.c:5678 #, c-format msgid "dimension array or low bound array cannot be null" -msgstr "la dimension ou la limite basse du tableau ne peut pas être NULL" +msgstr "la dimension ou la limite basse du tableau ne peut pas être NULL" -#: utils/adt/arrayfuncs.c:5741 utils/adt/arrayfuncs.c:5773 +#: utils/adt/arrayfuncs.c:5741 utils/adt/arrayfuncs.c:5767 #, c-format msgid "Dimension array must be one dimensional." msgstr "le tableau doit avoir une seule dimension" -#: utils/adt/arrayfuncs.c:5746 utils/adt/arrayfuncs.c:5778 -#, c-format -msgid "wrong range of array subscripts" -msgstr "mauvais échelle des indices du tableau" - -#: utils/adt/arrayfuncs.c:5747 utils/adt/arrayfuncs.c:5779 -#, c-format -msgid "Lower bound of dimension array must be one." -msgstr "La limite inférieure du tableau doit valoir un." - -#: utils/adt/arrayfuncs.c:5752 utils/adt/arrayfuncs.c:5784 +#: utils/adt/arrayfuncs.c:5746 utils/adt/arrayfuncs.c:5772 #, c-format msgid "dimension values cannot be null" -msgstr "les valeurs de dimension ne peuvent pas être NULL" +msgstr "les valeurs de dimension ne peuvent pas être NULL" -#: utils/adt/arrayfuncs.c:5790 +#: utils/adt/arrayfuncs.c:5778 #, c-format msgid "Low bound array has different size than dimensions array." -msgstr "La limite basse du tableau a une taille différentes des dimensions du tableau." +msgstr "La limite basse du tableau a une taille différentes des dimensions du tableau." -#: utils/adt/arrayfuncs.c:6036 +#: utils/adt/arrayfuncs.c:6024 #, c-format msgid "removing elements from multidimensional arrays is not supported" -msgstr "la suppression d'éléments de tableaux multidimensionnels n'est pas supportée" +msgstr "la suppression d'éléments de tableaux multidimensionnels n'est pas supportée" -#: utils/adt/arrayfuncs.c:6313 +#: utils/adt/arrayfuncs.c:6301 #, c-format msgid "thresholds must be one-dimensional array" -msgstr "les limites doivent être un tableau à une dimension" +msgstr "les limites doivent être un tableau à une dimension" -#: utils/adt/arrayfuncs.c:6318 +#: utils/adt/arrayfuncs.c:6306 #, c-format msgid "thresholds array must not contain NULLs" msgstr "le tableau de limites ne doit pas contenir de valeurs NULL" @@ -18365,7 +18158,7 @@ msgstr "le tableau de limites ne doit pas contenir de valeurs NULL" #: utils/adt/arrayutils.c:209 #, c-format msgid "typmod array must be type cstring[]" -msgstr "le tableau typmod doit être de type cstring[]" +msgstr "le tableau typmod doit être de type cstring[]" #: utils/adt/arrayutils.c:214 #, c-format @@ -18380,30 +18173,30 @@ msgstr "le tableau typmod ne doit pas contenir de valeurs NULL" #: utils/adt/ascii.c:75 #, c-format msgid "encoding conversion from %s to ASCII not supported" -msgstr "la conversion de l'encodage de %s vers l'ASCII n'est pas supportée" +msgstr "la conversion de l'encodage de %s vers l'ASCII n'est pas supportée" #: utils/adt/bool.c:153 #, c-format msgid "invalid input syntax for type boolean: \"%s\"" -msgstr "syntaxe en entrée invalide pour le type booléen : « %s »" +msgstr "syntaxe en entrée invalide pour le type booléen : « %s »" #: utils/adt/cash.c:246 #, c-format msgid "invalid input syntax for type money: \"%s\"" -msgstr "syntaxe en entrée invalide pour le type money : « %s »" +msgstr "syntaxe en entrée invalide pour le type money : « %s »" #: utils/adt/cash.c:607 utils/adt/cash.c:657 utils/adt/cash.c:708 utils/adt/cash.c:757 utils/adt/cash.c:809 utils/adt/cash.c:859 utils/adt/float.c:855 utils/adt/float.c:919 utils/adt/float.c:3315 utils/adt/float.c:3378 utils/adt/geo_ops.c:4093 utils/adt/int.c:719 utils/adt/int.c:861 utils/adt/int.c:969 utils/adt/int.c:1058 utils/adt/int.c:1097 utils/adt/int.c:1125 utils/adt/int8.c:597 utils/adt/int8.c:657 utils/adt/int8.c:897 -#: utils/adt/int8.c:1005 utils/adt/int8.c:1094 utils/adt/int8.c:1202 utils/adt/numeric.c:6818 utils/adt/numeric.c:7107 utils/adt/numeric.c:8120 utils/adt/timestamp.c:3446 +#: utils/adt/int8.c:1005 utils/adt/int8.c:1094 utils/adt/int8.c:1202 utils/adt/numeric.c:6818 utils/adt/numeric.c:7107 utils/adt/numeric.c:8120 utils/adt/timestamp.c:3542 #, c-format msgid "division by zero" -msgstr "division par zéro" +msgstr "division par zéro" #: utils/adt/char.c:169 #, c-format msgid "\"char\" out of range" -msgstr "« char » hors des limites" +msgstr "« char » hors des limites" -#: utils/adt/date.c:67 utils/adt/timestamp.c:94 utils/adt/varbit.c:52 utils/adt/varchar.c:45 +#: utils/adt/date.c:67 utils/adt/timestamp.c:95 utils/adt/varbit.c:52 utils/adt/varchar.c:45 #, c-format msgid "invalid type modifier" msgstr "modifieur de type invalide" @@ -18411,34 +18204,34 @@ msgstr "modifieur de type invalide" #: utils/adt/date.c:72 #, c-format msgid "TIME(%d)%s precision must not be negative" -msgstr "la précision de TIME(%d)%s ne doit pas être négative" +msgstr "la précision de TIME(%d)%s ne doit pas être négative" #: utils/adt/date.c:78 #, c-format msgid "TIME(%d)%s precision reduced to maximum allowed, %d" -msgstr "la précision de TIME(%d)%s a été réduit au maximum autorisée, %d" +msgstr "la précision de TIME(%d)%s a été réduit au maximum autorisée, %d" #: utils/adt/date.c:141 utils/adt/datetime.c:1278 utils/adt/datetime.c:2191 #, c-format msgid "date/time value \"current\" is no longer supported" -msgstr "la valeur « current » pour la date et heure n'est plus supportée" +msgstr "la valeur « current » pour la date et heure n'est plus supportée" #: utils/adt/date.c:167 utils/adt/date.c:175 utils/adt/formatting.c:3529 utils/adt/formatting.c:3538 #, c-format msgid "date out of range: \"%s\"" -msgstr "date en dehors des limites : « %s »" +msgstr "date en dehors des limites : « %s »" -#: utils/adt/date.c:222 utils/adt/date.c:456 utils/adt/date.c:480 utils/adt/xml.c:2027 +#: utils/adt/date.c:222 utils/adt/date.c:456 utils/adt/date.c:480 utils/adt/xml.c:2031 #, c-format msgid "date out of range" msgstr "date en dehors des limites" -#: utils/adt/date.c:264 utils/adt/timestamp.c:593 +#: utils/adt/date.c:264 utils/adt/timestamp.c:594 #, c-format msgid "date field value out of range: %d-%02d-%02d" msgstr "valeur du champ date en dehors des limites : %d-%02d-%02d" -#: utils/adt/date.c:271 utils/adt/date.c:280 utils/adt/timestamp.c:599 +#: utils/adt/date.c:271 utils/adt/date.c:280 utils/adt/timestamp.c:600 #, c-format msgid "date out of range: %d-%02d-%02d" msgstr "date en dehors des limites : %d-%02d-%02d" @@ -18454,9 +18247,9 @@ msgid "date out of range for timestamp" msgstr "date en dehors des limites pour un timestamp" #: utils/adt/date.c:1022 utils/adt/date.c:1068 utils/adt/date.c:1678 utils/adt/date.c:1714 utils/adt/date.c:1748 utils/adt/date.c:2592 utils/adt/datetime.c:1759 utils/adt/formatting.c:3404 utils/adt/formatting.c:3436 utils/adt/formatting.c:3504 utils/adt/json.c:1534 utils/adt/json.c:1556 utils/adt/jsonb.c:823 utils/adt/jsonb.c:847 utils/adt/nabstime.c:455 utils/adt/nabstime.c:498 utils/adt/nabstime.c:528 utils/adt/nabstime.c:571 -#: utils/adt/timestamp.c:224 utils/adt/timestamp.c:268 utils/adt/timestamp.c:726 utils/adt/timestamp.c:735 utils/adt/timestamp.c:820 utils/adt/timestamp.c:860 utils/adt/timestamp.c:3021 utils/adt/timestamp.c:3042 utils/adt/timestamp.c:3055 utils/adt/timestamp.c:3064 utils/adt/timestamp.c:3072 utils/adt/timestamp.c:3127 utils/adt/timestamp.c:3150 utils/adt/timestamp.c:3163 utils/adt/timestamp.c:3174 utils/adt/timestamp.c:3182 -#: utils/adt/timestamp.c:3756 utils/adt/timestamp.c:3885 utils/adt/timestamp.c:3926 utils/adt/timestamp.c:4014 utils/adt/timestamp.c:4060 utils/adt/timestamp.c:4171 utils/adt/timestamp.c:4578 utils/adt/timestamp.c:4694 utils/adt/timestamp.c:4704 utils/adt/timestamp.c:4800 utils/adt/timestamp.c:4919 utils/adt/timestamp.c:4929 utils/adt/timestamp.c:5250 utils/adt/timestamp.c:5264 utils/adt/timestamp.c:5269 utils/adt/timestamp.c:5283 -#: utils/adt/timestamp.c:5366 utils/adt/timestamp.c:5398 utils/adt/timestamp.c:5405 utils/adt/timestamp.c:5431 utils/adt/timestamp.c:5435 utils/adt/timestamp.c:5504 utils/adt/timestamp.c:5508 utils/adt/timestamp.c:5522 utils/adt/timestamp.c:5560 utils/adt/xml.c:2049 utils/adt/xml.c:2056 utils/adt/xml.c:2076 utils/adt/xml.c:2083 +#: utils/adt/timestamp.c:225 utils/adt/timestamp.c:269 utils/adt/timestamp.c:727 utils/adt/timestamp.c:736 utils/adt/timestamp.c:818 utils/adt/timestamp.c:858 utils/adt/timestamp.c:3117 utils/adt/timestamp.c:3138 utils/adt/timestamp.c:3151 utils/adt/timestamp.c:3160 utils/adt/timestamp.c:3168 utils/adt/timestamp.c:3223 utils/adt/timestamp.c:3246 utils/adt/timestamp.c:3259 utils/adt/timestamp.c:3270 utils/adt/timestamp.c:3278 +#: utils/adt/timestamp.c:3852 utils/adt/timestamp.c:3981 utils/adt/timestamp.c:4022 utils/adt/timestamp.c:4110 utils/adt/timestamp.c:4156 utils/adt/timestamp.c:4267 utils/adt/timestamp.c:4674 utils/adt/timestamp.c:4790 utils/adt/timestamp.c:4800 utils/adt/timestamp.c:4896 utils/adt/timestamp.c:5015 utils/adt/timestamp.c:5025 utils/adt/timestamp.c:5277 utils/adt/timestamp.c:5291 utils/adt/timestamp.c:5296 utils/adt/timestamp.c:5310 +#: utils/adt/timestamp.c:5359 utils/adt/timestamp.c:5391 utils/adt/timestamp.c:5398 utils/adt/timestamp.c:5424 utils/adt/timestamp.c:5428 utils/adt/timestamp.c:5497 utils/adt/timestamp.c:5501 utils/adt/timestamp.c:5515 utils/adt/timestamp.c:5553 utils/adt/xml.c:2053 utils/adt/xml.c:2060 utils/adt/xml.c:2080 utils/adt/xml.c:2087 #, c-format msgid "timestamp out of range" msgstr "timestamp en dehors des limites" @@ -18464,7 +18257,7 @@ msgstr "timestamp en dehors des limites" #: utils/adt/date.c:1094 #, c-format msgid "cannot convert reserved abstime value to date" -msgstr "ne peut pas convertir la valeur réservée abstime en date" +msgstr "ne peut pas convertir la valeur réservée abstime en date" #: utils/adt/date.c:1112 utils/adt/date.c:1118 #, c-format @@ -18476,7 +18269,7 @@ msgstr "abstime en dehors des limites pour une date" msgid "time out of range" msgstr "heure en dehors des limites" -#: utils/adt/date.c:1326 utils/adt/timestamp.c:618 +#: utils/adt/date.c:1326 utils/adt/timestamp.c:619 #, c-format msgid "time field value out of range: %d:%02d:%02g" msgstr "valeur du champ time en dehors des limites : %d:%02d:%02g" @@ -18484,59 +18277,59 @@ msgstr "valeur du champ time en dehors des limites : %d:%02d:%02g" #: utils/adt/date.c:1960 utils/adt/date.c:1977 #, c-format msgid "\"time\" units \"%s\" not recognized" -msgstr "l'unité « %s » n'est pas reconnu pour le type « time »" +msgstr "l'unité « %s » n'est pas reconnu pour le type « time »" #: utils/adt/date.c:2098 #, c-format msgid "time zone displacement out of range" -msgstr "déplacement du fuseau horaire en dehors des limites" +msgstr "déplacement du fuseau horaire en dehors des limites" #: utils/adt/date.c:2740 utils/adt/date.c:2757 #, c-format msgid "\"time with time zone\" units \"%s\" not recognized" -msgstr "L'unité « %s » n'est pas reconnu pour le type « time with time zone »" +msgstr "L'unité « %s » n'est pas reconnu pour le type « time with time zone »" -#: utils/adt/date.c:2830 utils/adt/datetime.c:995 utils/adt/datetime.c:1917 utils/adt/datetime.c:4743 utils/adt/timestamp.c:532 utils/adt/timestamp.c:559 utils/adt/timestamp.c:5275 utils/adt/timestamp.c:5514 +#: utils/adt/date.c:2830 utils/adt/datetime.c:995 utils/adt/datetime.c:1917 utils/adt/datetime.c:4743 utils/adt/timestamp.c:533 utils/adt/timestamp.c:560 utils/adt/timestamp.c:5302 utils/adt/timestamp.c:5507 #, c-format msgid "time zone \"%s\" not recognized" -msgstr "le fuseau horaire « %s » n'est pas reconnu" +msgstr "le fuseau horaire « %s » n'est pas reconnu" -#: utils/adt/date.c:2870 utils/adt/timestamp.c:5351 utils/adt/timestamp.c:5545 +#: utils/adt/date.c:2870 utils/adt/timestamp.c:5344 utils/adt/timestamp.c:5538 #, c-format msgid "interval time zone \"%s\" must not include months or days" -msgstr "l'intervalle de fuseau horaire « %s » ne doit pas spécifier de mois ou de jours" +msgstr "l'intervalle de fuseau horaire « %s » ne doit pas spécifier de mois ou de jours" #: utils/adt/datetime.c:3878 utils/adt/datetime.c:3885 #, c-format msgid "date/time field value out of range: \"%s\"" -msgstr "valeur du champ date/time en dehors des limites : « %s »" +msgstr "valeur du champ date/time en dehors des limites : « %s »" #: utils/adt/datetime.c:3887 #, c-format msgid "Perhaps you need a different \"datestyle\" setting." -msgstr "Peut-être avez-vous besoin d'un paramètrage « datestyle » différent." +msgstr "Peut-être avez-vous besoin d'un paramètrage « datestyle » différent." #: utils/adt/datetime.c:3892 #, c-format msgid "interval field value out of range: \"%s\"" -msgstr "valeur du champ interval en dehors des limites : « %s »" +msgstr "valeur du champ interval en dehors des limites : « %s »" #: utils/adt/datetime.c:3898 #, c-format msgid "time zone displacement out of range: \"%s\"" -msgstr "déplacement du fuseau horaire en dehors des limites : « %s »" +msgstr "déplacement du fuseau horaire en dehors des limites : « %s »" #. translator: first %s is inet or cidr #: utils/adt/datetime.c:3905 utils/adt/float.c:461 utils/adt/float.c:544 utils/adt/float.c:570 utils/adt/geo_ops.c:156 utils/adt/geo_ops.c:166 utils/adt/geo_ops.c:178 utils/adt/geo_ops.c:210 utils/adt/geo_ops.c:255 utils/adt/geo_ops.c:265 utils/adt/geo_ops.c:935 utils/adt/geo_ops.c:1321 utils/adt/geo_ops.c:1356 utils/adt/geo_ops.c:1364 utils/adt/geo_ops.c:3430 utils/adt/geo_ops.c:4563 utils/adt/geo_ops.c:4579 utils/adt/geo_ops.c:4586 #: utils/adt/network.c:58 #, c-format msgid "invalid input syntax for type %s: \"%s\"" -msgstr "syntaxe en entrée invalide pour le type %s : « %s »" +msgstr "syntaxe en entrée invalide pour le type %s : « %s »" #: utils/adt/datetime.c:4745 #, c-format msgid "This time zone name appears in the configuration file for time zone abbreviation \"%s\"." -msgstr "Ce nom du fuseau horaire apparaît dans le fichier de configuration des abréviations de fuseaux horaires « %s »." +msgstr "Ce nom du fuseau horaire apparaît dans le fichier de configuration des abréviations de fuseaux horaires « %s »." #: utils/adt/datum.c:86 utils/adt/datum.c:98 #, c-format @@ -18546,24 +18339,24 @@ msgstr "pointeur Datum invalide" #: utils/adt/dbsize.c:110 #, c-format msgid "could not open tablespace directory \"%s\": %m" -msgstr "n'a pas pu ouvrir le répertoire du tablespace « %s » : %m" +msgstr "n'a pas pu ouvrir le répertoire du tablespace « %s » : %m" #: utils/adt/dbsize.c:757 utils/adt/dbsize.c:825 #, c-format msgid "invalid size: \"%s\"" -msgstr "taille invalide : « %s »" +msgstr "taille invalide : « %s »" #: utils/adt/dbsize.c:826 #, c-format msgid "Invalid size unit: \"%s\"." -msgstr "Unité invalide pour une taille : « %s »." +msgstr "Unité invalide pour une taille : « %s »." #: utils/adt/dbsize.c:827 #, c-format msgid "Valid units are \"bytes\", \"kB\", \"MB\", \"GB\", and \"TB\"." -msgstr "Les unités valides pour ce paramètre sont « bytes », « kB », « MB », « GB » et « TB »." +msgstr "Les unités valides pour ce paramètre sont « bytes », « kB », « MB », « GB » et « TB »." -#: utils/adt/domains.c:85 +#: utils/adt/domains.c:86 #, c-format msgid "type %s is not a domain" msgstr "le type %s n'est pas un domaine" @@ -18571,47 +18364,47 @@ msgstr "le type %s n'est pas un domaine" #: utils/adt/encode.c:55 utils/adt/encode.c:91 #, c-format msgid "unrecognized encoding: \"%s\"" -msgstr "encodage non reconnu : « %s »" +msgstr "encodage non reconnu : « %s »" #: utils/adt/encode.c:150 #, c-format msgid "invalid hexadecimal digit: \"%c\"" -msgstr "chiffre hexadécimal invalide : « %c »" +msgstr "chiffre hexadécimal invalide : « %c »" #: utils/adt/encode.c:178 #, c-format msgid "invalid hexadecimal data: odd number of digits" -msgstr "donnée hexadécimale invalide : nombre pair de chiffres" +msgstr "donnée hexadécimale invalide : nombre pair de chiffres" #: utils/adt/encode.c:295 #, c-format msgid "unexpected \"=\" while decoding base64 sequence" -msgstr "« = » inattendu lors du décodage de la séquence en base64" +msgstr "« = » inattendu lors du décodage de la séquence en base64" #: utils/adt/encode.c:307 #, c-format msgid "invalid symbol \"%c\" while decoding base64 sequence" -msgstr "symbole « %c » invalide invalide lors du décodage de la séquence en base64" +msgstr "symbole « %c » invalide invalide lors du décodage de la séquence en base64" #: utils/adt/encode.c:327 #, c-format msgid "invalid base64 end sequence" -msgstr "séquence base64 de fin invalide" +msgstr "séquence base64 de fin invalide" #: utils/adt/encode.c:328 #, c-format msgid "Input data is missing padding, is truncated, or is otherwise corrupted." -msgstr "Les données en entrée manquent un alignement, sont tronquées ou ont une corruption autre." +msgstr "Les données en entrée manquent un alignement, sont tronquées ou ont une corruption autre." #: utils/adt/encode.c:442 utils/adt/encode.c:507 utils/adt/varlena.c:297 utils/adt/varlena.c:338 #, c-format msgid "invalid input syntax for type bytea" -msgstr "syntaxe en entrée invalide pour le type bytea" +msgstr "syntaxe en entrée invalide pour le type bytea" #: utils/adt/enum.c:48 utils/adt/enum.c:58 utils/adt/enum.c:113 utils/adt/enum.c:123 #, c-format msgid "invalid input value for enum %s: \"%s\"" -msgstr "valeur en entrée invalide pour le enum %s : « %s »" +msgstr "valeur en entrée invalide pour le enum %s : « %s »" #: utils/adt/enum.c:85 utils/adt/enum.c:148 utils/adt/enum.c:198 #, c-format @@ -18621,17 +18414,17 @@ msgstr "valeur interne invalide pour le enum : %u" #: utils/adt/enum.c:356 utils/adt/enum.c:385 utils/adt/enum.c:425 utils/adt/enum.c:445 #, c-format msgid "could not determine actual enum type" -msgstr "n'a pas pu déterminer le type enum actuel" +msgstr "n'a pas pu déterminer le type enum actuel" #: utils/adt/enum.c:364 utils/adt/enum.c:393 #, c-format msgid "enum %s contains no values" -msgstr "l'énumération « %s » ne contient aucune valeur" +msgstr "l'énumération « %s » ne contient aucune valeur" #: utils/adt/float.c:58 #, c-format msgid "value out of range: overflow" -msgstr "valeur en dehors des limites : dépassement" +msgstr "valeur en dehors des limites : dépassement" #: utils/adt/float.c:63 #, c-format @@ -18641,17 +18434,17 @@ msgstr "valeur en dehors des limites : trop petit" #: utils/adt/float.c:244 utils/adt/float.c:318 utils/adt/float.c:342 #, c-format msgid "invalid input syntax for type real: \"%s\"" -msgstr "syntaxe en entrée invalide pour le type real : « %s »" +msgstr "syntaxe en entrée invalide pour le type real : « %s »" #: utils/adt/float.c:312 #, c-format msgid "\"%s\" is out of range for type real" -msgstr "« %s » est hors des limites du type real" +msgstr "« %s » est hors des limites du type real" #: utils/adt/float.c:537 #, c-format msgid "\"%s\" is out of range for type double precision" -msgstr "« %s » est en dehors des limites du type double precision" +msgstr "« %s » est en dehors des limites du type double precision" #: utils/adt/float.c:1246 utils/adt/float.c:1304 utils/adt/int.c:349 utils/adt/int.c:775 utils/adt/int.c:804 utils/adt/int.c:825 utils/adt/int.c:845 utils/adt/int.c:879 utils/adt/int.c:1174 utils/adt/int8.c:1323 utils/adt/numeric.c:3000 utils/adt/numeric.c:3009 #, c-format @@ -18661,152 +18454,152 @@ msgstr "smallint en dehors des limites" #: utils/adt/float.c:1430 utils/adt/numeric.c:7540 #, c-format msgid "cannot take square root of a negative number" -msgstr "ne peut pas calculer la racine carré d'un nombre négatif" +msgstr "ne peut pas calculer la racine carré d'un nombre négatif" #: utils/adt/float.c:1472 utils/adt/numeric.c:2803 #, c-format msgid "zero raised to a negative power is undefined" -msgstr "zéro à une puissance négative est indéfini" +msgstr "zéro à une puissance négative est indéfini" #: utils/adt/float.c:1476 utils/adt/numeric.c:2809 #, c-format msgid "a negative number raised to a non-integer power yields a complex result" -msgstr "un nombre négatif élevé à une puissance non entière donne un résultat complexe" +msgstr "un nombre négatif élevé à une puissance non entière donne un résultat complexe" #: utils/adt/float.c:1542 utils/adt/float.c:1572 utils/adt/numeric.c:7806 #, c-format msgid "cannot take logarithm of zero" -msgstr "ne peut pas calculer le logarithme de zéro" +msgstr "ne peut pas calculer le logarithme de zéro" #: utils/adt/float.c:1546 utils/adt/float.c:1576 utils/adt/numeric.c:7810 #, c-format msgid "cannot take logarithm of a negative number" -msgstr "ne peut pas calculer le logarithme sur un nombre négatif" +msgstr "ne peut pas calculer le logarithme sur un nombre négatif" #: utils/adt/float.c:1606 utils/adt/float.c:1636 utils/adt/float.c:1728 utils/adt/float.c:1754 utils/adt/float.c:1781 utils/adt/float.c:1807 utils/adt/float.c:1954 utils/adt/float.c:1989 utils/adt/float.c:2153 utils/adt/float.c:2207 utils/adt/float.c:2271 utils/adt/float.c:2326 #, c-format msgid "input is out of range" -msgstr "l'entrée est en dehors des limites" +msgstr "l'entrée est en dehors des limites" #: utils/adt/float.c:3532 utils/adt/numeric.c:1443 #, c-format msgid "count must be greater than zero" -msgstr "le total doit être supérieur à zéro" +msgstr "le total doit être supérieur à zéro" #: utils/adt/float.c:3537 utils/adt/numeric.c:1450 #, c-format msgid "operand, lower bound, and upper bound cannot be NaN" -msgstr "la limite inférieure et supérieure de l'opérande ne peuvent pas être NaN" +msgstr "la limite inférieure et supérieure de l'opérande ne peuvent pas être NaN" #: utils/adt/float.c:3543 #, c-format msgid "lower and upper bounds must be finite" -msgstr "les limites basse et haute doivent être finies" +msgstr "les limites basse et haute doivent être finies" #: utils/adt/float.c:3581 utils/adt/numeric.c:1463 #, c-format msgid "lower bound cannot equal upper bound" -msgstr "la limite inférieure ne peut pas être plus égale à la limite supérieure" +msgstr "la limite inférieure ne peut pas être plus égale à la limite supérieure" #: utils/adt/formatting.c:485 #, c-format msgid "invalid format specification for an interval value" -msgstr "format de spécification invalide pour une valeur intervalle" +msgstr "format de spécification invalide pour une valeur intervalle" #: utils/adt/formatting.c:486 #, c-format msgid "Intervals are not tied to specific calendar dates." -msgstr "Les intervalles ne sont pas liés aux dates de calendriers spécifiques." +msgstr "Les intervalles ne sont pas liés aux dates de calendriers spécifiques." #: utils/adt/formatting.c:1058 #, c-format msgid "\"EEEE\" must be the last pattern used" -msgstr "« EEEE » doit être le dernier motif utilisé" +msgstr "« EEEE » doit être le dernier motif utilisé" #: utils/adt/formatting.c:1066 #, c-format msgid "\"9\" must be ahead of \"PR\"" -msgstr "« 9 » doit être avant « PR »" +msgstr "« 9 » doit être avant « PR »" #: utils/adt/formatting.c:1082 #, c-format msgid "\"0\" must be ahead of \"PR\"" -msgstr "« 0 » doit être avant « PR »" +msgstr "« 0 » doit être avant « PR »" #: utils/adt/formatting.c:1109 #, c-format msgid "multiple decimal points" -msgstr "multiples points décimaux" +msgstr "multiples points décimaux" #: utils/adt/formatting.c:1113 utils/adt/formatting.c:1196 #, c-format msgid "cannot use \"V\" and decimal point together" -msgstr "ne peut pas utiliser « V » et le point décimal ensemble" +msgstr "ne peut pas utiliser « V » et le point décimal ensemble" #: utils/adt/formatting.c:1125 #, c-format msgid "cannot use \"S\" twice" -msgstr "ne peut pas utiliser « S » deux fois" +msgstr "ne peut pas utiliser « S » deux fois" #: utils/adt/formatting.c:1129 #, c-format msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together" -msgstr "ne peut pas utiliser « S » et « PL »/« MI »/« SG »/« PR » ensemble" +msgstr "ne peut pas utiliser « S » et « PL »/« MI »/« SG »/« PR » ensemble" #: utils/adt/formatting.c:1149 #, c-format msgid "cannot use \"S\" and \"MI\" together" -msgstr "ne peut pas utiliser « S » et « MI » ensemble" +msgstr "ne peut pas utiliser « S » et « MI » ensemble" #: utils/adt/formatting.c:1159 #, c-format msgid "cannot use \"S\" and \"PL\" together" -msgstr "ne peut pas utiliser « S » et « PL » ensemble" +msgstr "ne peut pas utiliser « S » et « PL » ensemble" #: utils/adt/formatting.c:1169 #, c-format msgid "cannot use \"S\" and \"SG\" together" -msgstr "ne peut pas utiliser « S » et « SG » ensemble" +msgstr "ne peut pas utiliser « S » et « SG » ensemble" #: utils/adt/formatting.c:1178 #, c-format msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together" -msgstr "ne peut pas utiliser « PR » et « S »/« PL »/« MI »/« SG » ensemble" +msgstr "ne peut pas utiliser « PR » et « S »/« PL »/« MI »/« SG » ensemble" #: utils/adt/formatting.c:1204 #, c-format msgid "cannot use \"EEEE\" twice" -msgstr "ne peut pas utiliser « EEEE » deux fois" +msgstr "ne peut pas utiliser « EEEE » deux fois" #: utils/adt/formatting.c:1210 #, c-format msgid "\"EEEE\" is incompatible with other formats" -msgstr "« EEEE » est incompatible avec les autres formats" +msgstr "« EEEE » est incompatible avec les autres formats" #: utils/adt/formatting.c:1211 #, c-format msgid "\"EEEE\" may only be used together with digit and decimal point patterns." -msgstr "« EEEE » peut seulement être utilisé avec les motifs de chiffres et de points décimaux." +msgstr "« EEEE » peut seulement être utilisé avec les motifs de chiffres et de points décimaux." #: utils/adt/formatting.c:1411 #, c-format msgid "\"%s\" is not a number" -msgstr "« %s » n'est pas un nombre" +msgstr "« %s » n'est pas un nombre" #: utils/adt/formatting.c:1512 utils/adt/formatting.c:1564 #, c-format msgid "could not determine which collation to use for lower() function" -msgstr "n'a pas pu déterminer le collationnement à utiliser pour la fonction lower()" +msgstr "n'a pas pu déterminer le collationnement à utiliser pour la fonction lower()" #: utils/adt/formatting.c:1632 utils/adt/formatting.c:1684 #, c-format msgid "could not determine which collation to use for upper() function" -msgstr "n'a pas pu déterminer le collationnement à utiliser pour la fonction upper()" +msgstr "n'a pas pu déterminer le collationnement à utiliser pour la fonction upper()" #: utils/adt/formatting.c:1753 utils/adt/formatting.c:1817 #, c-format msgid "could not determine which collation to use for initcap() function" -msgstr "n'a pas pu déterminer le collationnement à utiliser pour la fonction initcap()" +msgstr "n'a pas pu déterminer le collationnement à utiliser pour la fonction initcap()" #: utils/adt/formatting.c:2114 #, c-format @@ -18817,85 +18610,85 @@ msgstr "combinaison invalide des conventions de date" #, c-format msgid "Do not mix Gregorian and ISO week date conventions in a formatting template." msgstr "" -"Ne pas mixer les conventions de jour de semaine grégorien et ISO dans un\n" -"modèle de formatage." +"Ne pas mixer les conventions de jour de semaine grégorien et ISO dans un\n" +"modèle de formatage." #: utils/adt/formatting.c:2132 #, c-format msgid "conflicting values for \"%s\" field in formatting string" -msgstr "valeur conflictuelle pour le champ « %s » dans la chaîne de formatage" +msgstr "valeur conflictuelle pour le champ « %s » dans la chaîne de formatage" #: utils/adt/formatting.c:2134 #, c-format msgid "This value contradicts a previous setting for the same field type." -msgstr "Cette valeur contredit une configuration précédente pour le même type de champ." +msgstr "Cette valeur contredit une configuration précédente pour le même type de champ." #: utils/adt/formatting.c:2195 #, c-format msgid "source string too short for \"%s\" formatting field" -msgstr "chaîne source trop petite pour le champ de formatage « %s »" +msgstr "chaîne source trop petite pour le champ de formatage « %s »" #: utils/adt/formatting.c:2197 #, c-format msgid "Field requires %d characters, but only %d remain." -msgstr "Le champ requiert %d caractères, mais seuls %d restent." +msgstr "Le champ requiert %d caractères, mais seuls %d restent." #: utils/adt/formatting.c:2200 utils/adt/formatting.c:2214 #, c-format msgid "If your source string is not fixed-width, try using the \"FM\" modifier." msgstr "" -"Si votre chaîne source n'a pas une taille fixe, essayez d'utiliser le\n" -"modifieur « FM »." +"Si votre chaîne source n'a pas une taille fixe, essayez d'utiliser le\n" +"modifieur « FM »." #: utils/adt/formatting.c:2210 utils/adt/formatting.c:2223 utils/adt/formatting.c:2353 #, c-format msgid "invalid value \"%s\" for \"%s\"" -msgstr "valeur « %s » invalide pour « %s »" +msgstr "valeur « %s » invalide pour « %s »" #: utils/adt/formatting.c:2212 #, c-format msgid "Field requires %d characters, but only %d could be parsed." -msgstr "Le champ nécessite %d caractères, mais seulement %d ont pu être analysés." +msgstr "Le champ nécessite %d caractères, mais seulement %d ont pu être analysés." #: utils/adt/formatting.c:2225 #, c-format msgid "Value must be an integer." -msgstr "La valeur doit être un entier" +msgstr "La valeur doit être un entier" #: utils/adt/formatting.c:2230 #, c-format msgid "value for \"%s\" in source string is out of range" -msgstr "la valeur pour « %s » dans la chaîne source est en dehors des limites" +msgstr "la valeur pour « %s » dans la chaîne source est en dehors des limites" #: utils/adt/formatting.c:2232 #, c-format msgid "Value must be in the range %d to %d." -msgstr "La valeur doit être compris entre %d et %d" +msgstr "La valeur doit être compris entre %d et %d" #: utils/adt/formatting.c:2355 #, c-format msgid "The given value did not match any of the allowed values for this field." -msgstr "La valeur donnée ne correspond pas aux valeurs autorisées pour ce champ." +msgstr "La valeur donnée ne correspond pas aux valeurs autorisées pour ce champ." #: utils/adt/formatting.c:2550 utils/adt/formatting.c:2570 utils/adt/formatting.c:2590 utils/adt/formatting.c:2610 utils/adt/formatting.c:2629 utils/adt/formatting.c:2648 utils/adt/formatting.c:2672 utils/adt/formatting.c:2690 utils/adt/formatting.c:2708 utils/adt/formatting.c:2726 utils/adt/formatting.c:2743 utils/adt/formatting.c:2760 #, c-format msgid "localized string format value too long" -msgstr "chaîne localisée trop longue" +msgstr "chaîne localisée trop longue" #: utils/adt/formatting.c:3047 #, c-format msgid "\"TZ\"/\"tz\"/\"OF\" format patterns are not supported in to_date" -msgstr "les motifs de format « TZ »/« tz »/« OF » ne sont pas supportés dans to_date" +msgstr "les motifs de format « TZ »/« tz »/« OF » ne sont pas supportés dans to_date" #: utils/adt/formatting.c:3156 #, c-format msgid "invalid input string for \"Y,YYY\"" -msgstr "chaîne invalide en entrée pour « Y,YYY »" +msgstr "chaîne invalide en entrée pour « Y,YYY »" #: utils/adt/formatting.c:3668 #, c-format msgid "hour \"%d\" is invalid for the 12-hour clock" -msgstr "l'heure « %d » est invalide pour une horloge sur 12 heures" +msgstr "l'heure « %d » est invalide pour une horloge sur 12 heures" #: utils/adt/formatting.c:3670 #, c-format @@ -18905,127 +18698,127 @@ msgstr "Utilisez une horloge sur 24 heures ou donnez une heure entre 1 et 12." #: utils/adt/formatting.c:3765 #, c-format msgid "cannot calculate day of year without year information" -msgstr "ne peut pas calculer le jour de l'année sans information sur l'année" +msgstr "ne peut pas calculer le jour de l'année sans information sur l'année" #: utils/adt/formatting.c:4614 #, c-format msgid "\"EEEE\" not supported for input" -msgstr "« EEEE » non supporté en entrée" +msgstr "« EEEE » non supporté en entrée" #: utils/adt/formatting.c:4626 #, c-format msgid "\"RN\" not supported for input" -msgstr "« RN » non supporté en entrée" +msgstr "« RN » non supporté en entrée" #: utils/adt/genfile.c:62 #, c-format msgid "reference to parent directory (\"..\") not allowed" -msgstr "référence non autorisée au répertoire parent (« .. »)" +msgstr "référence non autorisée au répertoire parent (« .. »)" #: utils/adt/genfile.c:73 #, c-format msgid "absolute path not allowed" -msgstr "chemin absolu non autorisé" +msgstr "chemin absolu non autorisé" #: utils/adt/genfile.c:78 #, c-format msgid "path must be in or below the current directory" -msgstr "le chemin doit être dans ou en-dessous du répertoire courant" +msgstr "le chemin doit être dans ou en-dessous du répertoire courant" #: utils/adt/genfile.c:125 utils/adt/oracle_compat.c:184 utils/adt/oracle_compat.c:282 utils/adt/oracle_compat.c:758 utils/adt/oracle_compat.c:1059 #, c-format msgid "requested length too large" -msgstr "longueur demandée trop importante" +msgstr "longueur demandée trop importante" #: utils/adt/genfile.c:142 #, c-format msgid "could not seek in file \"%s\": %m" -msgstr "n'a pas pu parcourir le fichier « %s » : %m" +msgstr "n'a pas pu parcourir le fichier « %s » : %m" #: utils/adt/genfile.c:200 utils/adt/genfile.c:241 #, c-format msgid "must be superuser to read files" -msgstr "doit être super-utilisateur pour lire des fichiers" +msgstr "doit être super-utilisateur pour lire des fichiers" #: utils/adt/genfile.c:318 #, c-format msgid "must be superuser to get file information" -msgstr "doit être super-utilisateur pour obtenir des informations sur le fichier" +msgstr "doit être super-utilisateur pour obtenir des informations sur le fichier" #: utils/adt/genfile.c:404 #, c-format msgid "must be superuser to get directory listings" -msgstr "doit être super-utilisateur pour obtenir le contenu du répertoire" +msgstr "doit être super-utilisateur pour obtenir le contenu du répertoire" #: utils/adt/geo_ops.c:940 #, c-format msgid "invalid line specification: A and B cannot both be zero" -msgstr "spécification invalide de ligne : A et B ne peuvent pas être à zéro tous les deux" +msgstr "spécification invalide de ligne : A et B ne peuvent pas être à zéro tous les deux" #: utils/adt/geo_ops.c:948 #, c-format msgid "invalid line specification: must be two distinct points" -msgstr "spécification de ligne invalide : doit être deux points distincts" +msgstr "spécification de ligne invalide : doit être deux points distincts" #: utils/adt/geo_ops.c:1342 utils/adt/geo_ops.c:3440 utils/adt/geo_ops.c:4253 utils/adt/geo_ops.c:5181 #, c-format msgid "too many points requested" -msgstr "trop de points demandé" +msgstr "trop de points demandé" #: utils/adt/geo_ops.c:1404 #, c-format msgid "invalid number of points in external \"path\" value" -msgstr "nombre de points invalide dans la valeur externe de « path »" +msgstr "nombre de points invalide dans la valeur externe de « path »" #: utils/adt/geo_ops.c:2555 #, c-format msgid "function \"dist_lb\" not implemented" -msgstr "la fonction « dist_lb » n'est pas implémentée" +msgstr "la fonction « dist_lb » n'est pas implémentée" #: utils/adt/geo_ops.c:3015 #, c-format msgid "function \"close_sl\" not implemented" -msgstr "la fonction « close_sl » n'est pas implémentée" +msgstr "la fonction « close_sl » n'est pas implémentée" #: utils/adt/geo_ops.c:3117 #, c-format msgid "function \"close_lb\" not implemented" -msgstr "la fonction « close_lb » n'est pas implémentée" +msgstr "la fonction « close_lb » n'est pas implémentée" #: utils/adt/geo_ops.c:3406 #, c-format msgid "cannot create bounding box for empty polygon" -msgstr "ne peut pas créer une boîte entourée pour un polygône vide" +msgstr "ne peut pas créer une boîte entourée pour un polygône vide" #: utils/adt/geo_ops.c:3487 #, c-format msgid "invalid number of points in external \"polygon\" value" -msgstr "nombre de points invalide dans la valeur externe de « polygon »" +msgstr "nombre de points invalide dans la valeur externe de « polygon »" #: utils/adt/geo_ops.c:4012 #, c-format msgid "function \"poly_distance\" not implemented" -msgstr "la fonction « poly_distance » n'est pas implémentée" +msgstr "la fonction « poly_distance » n'est pas implémentée" #: utils/adt/geo_ops.c:4365 #, c-format msgid "function \"path_center\" not implemented" -msgstr "la fonction « path_center » n'est pas implémentée" +msgstr "la fonction « path_center » n'est pas implémentée" #: utils/adt/geo_ops.c:4382 #, c-format msgid "open path cannot be converted to polygon" -msgstr "le chemin ouvert ne peut être converti en polygône" +msgstr "le chemin ouvert ne peut être converti en polygône" #: utils/adt/geo_ops.c:4631 #, c-format msgid "invalid radius in external \"circle\" value" -msgstr "diamètre invalide pour la valeur externe de « circle »" +msgstr "diamètre invalide pour la valeur externe de « circle »" #: utils/adt/geo_ops.c:5167 #, c-format msgid "cannot convert circle with radius zero to polygon" -msgstr "ne peut pas convertir le cercle avec un diamètre zéro en un polygône" +msgstr "ne peut pas convertir le cercle avec un diamètre zéro en un polygône" #: utils/adt/geo_ops.c:5172 #, c-format @@ -19035,40 +18828,40 @@ msgstr "doit demander au moins deux points" #: utils/adt/geo_ops.c:5216 #, c-format msgid "cannot convert empty polygon to circle" -msgstr "ne peut pas convertir un polygône vide en cercle" +msgstr "ne peut pas convertir un polygône vide en cercle" #: utils/adt/int.c:162 #, c-format msgid "int2vector has too many elements" -msgstr "int2vector a trop d'éléments" +msgstr "int2vector a trop d'éléments" #: utils/adt/int.c:237 #, c-format msgid "invalid int2vector data" -msgstr "données int2vector invalide" +msgstr "données int2vector invalide" #: utils/adt/int.c:243 utils/adt/oid.c:212 utils/adt/oid.c:293 #, c-format msgid "oidvector has too many elements" -msgstr "oidvector a trop d'éléments" +msgstr "oidvector a trop d'éléments" -#: utils/adt/int.c:1362 utils/adt/int8.c:1460 utils/adt/numeric.c:1351 utils/adt/timestamp.c:5611 utils/adt/timestamp.c:5692 +#: utils/adt/int.c:1362 utils/adt/int8.c:1460 utils/adt/numeric.c:1351 utils/adt/timestamp.c:5604 utils/adt/timestamp.c:5685 #, c-format msgid "step size cannot equal zero" -msgstr "la taille du pas ne peut pas valoir zéro" +msgstr "la taille du pas ne peut pas valoir zéro" #: utils/adt/int8.c:98 utils/adt/int8.c:133 utils/adt/numutils.c:51 utils/adt/numutils.c:61 utils/adt/numutils.c:103 #, c-format msgid "invalid input syntax for integer: \"%s\"" -msgstr "syntaxe en entrée invalide pour l'entier : « %s »" +msgstr "syntaxe en entrée invalide pour l'entier : « %s »" #: utils/adt/int8.c:114 #, c-format msgid "value \"%s\" is out of range for type bigint" -msgstr "la valeur « %s » est en dehors des limites du type bigint" +msgstr "la valeur « %s » est en dehors des limites du type bigint" #: utils/adt/int8.c:500 utils/adt/int8.c:529 utils/adt/int8.c:550 utils/adt/int8.c:581 utils/adt/int8.c:615 utils/adt/int8.c:640 utils/adt/int8.c:697 utils/adt/int8.c:714 utils/adt/int8.c:741 utils/adt/int8.c:758 utils/adt/int8.c:834 utils/adt/int8.c:855 utils/adt/int8.c:882 utils/adt/int8.c:915 utils/adt/int8.c:943 utils/adt/int8.c:964 utils/adt/int8.c:991 utils/adt/int8.c:1031 utils/adt/int8.c:1052 utils/adt/int8.c:1079 -#: utils/adt/int8.c:1112 utils/adt/int8.c:1140 utils/adt/int8.c:1161 utils/adt/int8.c:1188 utils/adt/int8.c:1361 utils/adt/int8.c:1400 utils/adt/numeric.c:2955 utils/adt/varbit.c:1645 +#: utils/adt/int8.c:1112 utils/adt/int8.c:1140 utils/adt/int8.c:1161 utils/adt/int8.c:1188 utils/adt/int8.c:1361 utils/adt/int8.c:1400 utils/adt/numeric.c:2955 utils/adt/varbit.c:1655 #, c-format msgid "bigint out of range" msgstr "bigint en dehors des limites" @@ -19082,17 +18875,17 @@ msgstr "OID en dehors des limites" #: utils/adt/json.c:1241 #, c-format msgid "invalid input syntax for type json" -msgstr "syntaxe en entrée invalide pour le type json" +msgstr "syntaxe en entrée invalide pour le type json" #: utils/adt/json.c:786 #, c-format msgid "Character with value 0x%02x must be escaped." -msgstr "Le caractère de valeur 0x%02x doit être échappé." +msgstr "Le caractère de valeur 0x%02x doit être échappé." #: utils/adt/json.c:826 #, c-format msgid "\"\\u\" must be followed by four hexadecimal digits." -msgstr "« \\u » doit être suivi par quatre chiffres hexadécimaux." +msgstr "« \\u » doit être suivi par quatre chiffres hexadécimaux." #: utils/adt/json.c:841 #, c-format @@ -19107,124 +18900,114 @@ msgstr "Une substitution unicode basse ne doit pas suivre une substitution haute #: utils/adt/json.c:877 utils/adt/json.c:900 #, c-format msgid "unsupported Unicode escape sequence" -msgstr "séquence d'échappement Unicode non supportée" +msgstr "séquence d'échappement Unicode non supportée" #: utils/adt/json.c:878 #, c-format msgid "\\u0000 cannot be converted to text." -msgstr "\\u0000 ne peut pas être converti en texte." +msgstr "\\u0000 ne peut pas être converti en texte." #: utils/adt/json.c:901 #, c-format msgid "Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8." msgstr "" -"Les valeurs d'échappement unicode ne peuvent pas être utilisées pour les valeurs de point de code\n" +"Les valeurs d'échappement unicode ne peuvent pas être utilisées pour les valeurs de point de code\n" "au-dessus de 007F quand l'encodage serveur n'est pas UTF8." #: utils/adt/json.c:944 utils/adt/json.c:962 #, c-format msgid "Escape sequence \"\\%s\" is invalid." -msgstr "La séquence d'échappement « \\%s » est invalide." +msgstr "La séquence d'échappement « \\%s » est invalide." #: utils/adt/json.c:1131 #, c-format msgid "The input string ended unexpectedly." -msgstr "La chaîne en entrée se ferme de manière inattendue." +msgstr "La chaîne en entrée se ferme de manière inattendue." #: utils/adt/json.c:1145 #, c-format msgid "Expected end of input, but found \"%s\"." -msgstr "Attendait une fin de l'entrée, mais ait trouvé « %s »." +msgstr "Attendait une fin de l'entrée, mais ait trouvé « %s »." #: utils/adt/json.c:1156 #, c-format msgid "Expected JSON value, but found \"%s\"." -msgstr "Valeur JSON attendue, mais « %s » trouvé." +msgstr "Valeur JSON attendue, mais « %s » trouvé." #: utils/adt/json.c:1164 utils/adt/json.c:1212 #, c-format msgid "Expected string, but found \"%s\"." -msgstr "Chaîne attendue, mais « %s » trouvé." +msgstr "Chaîne attendue, mais « %s » trouvé." #: utils/adt/json.c:1172 #, c-format msgid "Expected array element or \"]\", but found \"%s\"." -msgstr "Élément de tableau ou « ] » attendu, mais « %s » trouvé" +msgstr "Élément de tableau ou « ] » attendu, mais « %s » trouvé" #: utils/adt/json.c:1180 #, c-format msgid "Expected \",\" or \"]\", but found \"%s\"." -msgstr "« , » ou « ] » attendu, mais « %s » trouvé" +msgstr "« , » ou « ] » attendu, mais « %s » trouvé" #: utils/adt/json.c:1188 #, c-format msgid "Expected string or \"}\", but found \"%s\"." -msgstr "Chaîne ou « } » attendu, mais « %s » trouvé" +msgstr "Chaîne ou « } » attendu, mais « %s » trouvé" #: utils/adt/json.c:1196 #, c-format msgid "Expected \":\", but found \"%s\"." -msgstr "« : » attendu, mais « %s » trouvé" +msgstr "« : » attendu, mais « %s » trouvé" #: utils/adt/json.c:1204 #, c-format msgid "Expected \",\" or \"}\", but found \"%s\"." -msgstr "« , » ou « } » attendu, mais « %s » trouvé" +msgstr "« , » ou « } » attendu, mais « %s » trouvé" #: utils/adt/json.c:1242 #, c-format msgid "Token \"%s\" is invalid." -msgstr "le jeton « %s » n'est pas valide" +msgstr "le jeton « %s » n'est pas valide" #: utils/adt/json.c:1314 #, c-format msgid "JSON data, line %d: %s%s%s" -msgstr "données JSON, ligne %d : %s%s%s" +msgstr "données JSON, ligne %d : %s%s%s" #: utils/adt/json.c:1469 utils/adt/jsonb.c:724 #, c-format msgid "key value must be scalar, not array, composite, or json" -msgstr "la valeur clé doit être scalaire, et non pas un tableau ou une valeur composite ou un json" +msgstr "la valeur clé doit être scalaire, et non pas un tableau ou une valeur composite ou un json" -#: utils/adt/json.c:2006 +#: utils/adt/json.c:2006 utils/adt/json.c:2016 utils/adt/json.c:2142 utils/adt/json.c:2163 utils/adt/json.c:2222 utils/adt/jsonb.c:1214 utils/adt/jsonb.c:1237 utils/adt/jsonb.c:1297 #, c-format -msgid "could not determine data type for argument 1" -msgstr "n'a pas pu déterminer le type de données pour l'argument 1" - -#: utils/adt/json.c:2016 -#, c-format -msgid "could not determine data type for argument 2" -msgstr "n'a pas pu déterminer le type de données pour l'argument 2" +msgid "could not determine data type for argument %d" +msgstr "n'a pas pu déterminer le type de données pour l'argument %d" #: utils/adt/json.c:2040 utils/adt/jsonb.c:1781 #, c-format msgid "field name must not be null" -msgstr "le nom du champ ne doit pas être NULL" +msgstr "le nom du champ ne doit pas être NULL" #: utils/adt/json.c:2117 #, c-format msgid "argument list must have even number of elements" -msgstr "la liste d'arguments doit avoir un nombre pair d'éléments" +msgstr "la liste d'arguments doit avoir un nombre pair d'éléments" #: utils/adt/json.c:2118 #, c-format msgid "The arguments of json_build_object() must consist of alternating keys and values." -msgstr "Les arguments de json_build_object() doivent consister en des clés et valeurs alternées" - -#: utils/adt/json.c:2142 utils/adt/json.c:2163 utils/adt/json.c:2222 -#, c-format -msgid "could not determine data type for argument %d" -msgstr "n'a pas pu déterminer le type de données pour l'argument %d" +msgstr "Les arguments de json_build_object() doivent consister en des clés et valeurs alternées" #: utils/adt/json.c:2148 #, c-format msgid "argument %d cannot be null" -msgstr "l'argument %d ne peut pas être NULL" +msgstr "l'argument %d ne peut pas être NULL" #: utils/adt/json.c:2149 #, c-format msgid "Object keys should be text." -msgstr "Les clés de l'objet doivent être du texte." +msgstr "Les clés de l'objet doivent être du texte." #: utils/adt/json.c:2284 utils/adt/jsonb.c:1363 #, c-format @@ -19234,7 +19017,7 @@ msgstr "le tableau doit avoir deux colonnes" #: utils/adt/json.c:2308 utils/adt/json.c:2392 utils/adt/jsonb.c:1387 utils/adt/jsonb.c:1482 #, c-format msgid "null value not allowed for object key" -msgstr "valeur NULL non autorisée pour une clé d'objet" +msgstr "valeur NULL non autorisée pour une clé d'objet" #: utils/adt/json.c:2381 utils/adt/jsonb.c:1471 #, c-format @@ -19244,52 +19027,47 @@ msgstr "dimensions du tableau non correspondantes" #: utils/adt/jsonb.c:257 #, c-format msgid "string too long to represent as jsonb string" -msgstr "chaîne trop longue pour être représentée en tant que chaîne jsonb" +msgstr "chaîne trop longue pour être représentée en tant que chaîne jsonb" #: utils/adt/jsonb.c:258 #, c-format msgid "Due to an implementation restriction, jsonb strings cannot exceed %d bytes." -msgstr "Dû à l'implémentation, les chaînes jsonb ne peuvent excéder %d octets." +msgstr "Dû à l'implémentation, les chaînes jsonb ne peuvent excéder %d octets." #: utils/adt/jsonb.c:1182 #, c-format msgid "invalid number of arguments: object must be matched key value pairs" -msgstr "nombre d'arguments invalide : l'objet doit correspond aux paires clé/valeur" +msgstr "nombre d'arguments invalide : l'objet doit correspond aux paires clé/valeur" #: utils/adt/jsonb.c:1195 #, c-format msgid "argument %d: key must not be null" -msgstr "argument %d : la clé ne doit pas être NULL" - -#: utils/adt/jsonb.c:1214 utils/adt/jsonb.c:1237 utils/adt/jsonb.c:1297 -#, c-format -msgid "argument %d: could not determine data type" -msgstr "argument %d : n'a pas pu déterminer le type de données" +msgstr "argument %d : la clé ne doit pas être NULL" #: utils/adt/jsonb.c:1834 #, c-format msgid "object keys must be strings" -msgstr "les clés de l'objet doivent être du texte" +msgstr "les clés de l'objet doivent être du texte" #: utils/adt/jsonb_util.c:656 #, c-format msgid "number of jsonb object pairs exceeds the maximum allowed (%zu)" -msgstr "le nombre de paires d'objets jsonb dépasse le maximum autorisé (%zu)" +msgstr "le nombre de paires d'objets jsonb dépasse le maximum autorisé (%zu)" #: utils/adt/jsonb_util.c:697 #, c-format msgid "number of jsonb array elements exceeds the maximum allowed (%zu)" -msgstr "le nombre d'éléments du tableau jsonb dépasse le maximum autorisé (%zu)" +msgstr "le nombre d'éléments du tableau jsonb dépasse le maximum autorisé (%zu)" #: utils/adt/jsonb_util.c:1525 utils/adt/jsonb_util.c:1545 #, c-format msgid "total size of jsonb array elements exceeds the maximum of %u bytes" -msgstr "la taille totale des éléments du tableau jsonb dépasse le maximum de %u octets" +msgstr "la taille totale des éléments du tableau jsonb dépasse le maximum de %u octets" #: utils/adt/jsonb_util.c:1606 utils/adt/jsonb_util.c:1641 utils/adt/jsonb_util.c:1661 #, c-format msgid "total size of jsonb object elements exceeds the maximum of %u bytes" -msgstr "la taille totale des éléments de l'objet JSON dépasse le maximum de %u octets" +msgstr "la taille totale des éléments de l'objet JSON dépasse le maximum de %u octets" #: utils/adt/jsonfuncs.c:305 utils/adt/jsonfuncs.c:470 utils/adt/jsonfuncs.c:2057 utils/adt/jsonfuncs.c:2498 utils/adt/jsonfuncs.c:3004 #, c-format @@ -19320,28 +19098,28 @@ msgstr "ne peut pas appeler %s sur un non objet" #, c-format msgid "function returning record called in context that cannot accept type record" msgstr "" -"fonction renvoyant le type record appelée dans un contexte qui ne peut pas\n" +"fonction renvoyant le type record appelée dans un contexte qui ne peut pas\n" "accepter le type record" #: utils/adt/jsonfuncs.c:1730 #, c-format msgid "cannot deconstruct an array as an object" -msgstr "ne peut pas déconstruire un tableau sous la forme d'un objet" +msgstr "ne peut pas déconstruire un tableau sous la forme d'un objet" #: utils/adt/jsonfuncs.c:1742 #, c-format msgid "cannot deconstruct a scalar" -msgstr "ne peut pas décomposer un scalaire" +msgstr "ne peut pas décomposer un scalaire" #: utils/adt/jsonfuncs.c:1788 #, c-format msgid "cannot extract elements from a scalar" -msgstr "ne peut pas extraire des éléments d'un scalaire" +msgstr "ne peut pas extraire des éléments d'un scalaire" #: utils/adt/jsonfuncs.c:1792 #, c-format msgid "cannot extract elements from an object" -msgstr "ne peut pas extraire des éléments d'un objet" +msgstr "ne peut pas extraire des éléments d'un objet" #: utils/adt/jsonfuncs.c:2044 utils/adt/jsonfuncs.c:2803 #, c-format @@ -19351,17 +19129,17 @@ msgstr "ne peut pas appeler %s sur un type non tableau" #: utils/adt/jsonfuncs.c:2131 utils/adt/jsonfuncs.c:2683 #, c-format msgid "first argument of %s must be a row type" -msgstr "le premier argument de %s doit être un type row" +msgstr "le premier argument de %s doit être un type row" #: utils/adt/jsonfuncs.c:2172 #, c-format msgid "Try calling the function in the FROM clause using a column definition list." -msgstr "Essayez d'appeler la fonction dans la clause FROM en utilisant une liste de définition de colonnes." +msgstr "Essayez d'appeler la fonction dans la clause FROM en utilisant une liste de définition de colonnes." #: utils/adt/jsonfuncs.c:2819 utils/adt/jsonfuncs.c:2986 #, c-format msgid "argument of %s must be an array of objects" -msgstr "l'argument de %s doit être un tableau d'objets" +msgstr "l'argument de %s doit être un tableau d'objets" #: utils/adt/jsonfuncs.c:2843 #, c-format @@ -19371,12 +19149,12 @@ msgstr "ne peut pas appeler %s sur un objet" #: utils/adt/jsonfuncs.c:3410 utils/adt/jsonfuncs.c:3463 #, c-format msgid "cannot delete from scalar" -msgstr "ne peut pas supprimer à partir du scalaire" +msgstr "ne peut pas supprimer à partir du scalaire" #: utils/adt/jsonfuncs.c:3468 #, c-format msgid "cannot delete from object using integer index" -msgstr "ne peut pas supprimer à partir de l'objet en utilisant l'index de l'entier" +msgstr "ne peut pas supprimer à partir de l'objet en utilisant l'index de l'entier" #: utils/adt/jsonfuncs.c:3534 utils/adt/jsonfuncs.c:3626 #, c-format @@ -19391,67 +19169,67 @@ msgstr "ne peut pas supprimer un chemin dans le scalaire" #: utils/adt/jsonfuncs.c:3749 #, c-format msgid "invalid concatenation of jsonb objects" -msgstr "concaténation invalide d'objets jsonb" +msgstr "concaténation invalide d'objets jsonb" #: utils/adt/jsonfuncs.c:3783 #, c-format msgid "path element at position %d is null" -msgstr "l'élément de chemin à la position %d est nul" +msgstr "l'élément de chemin à la position %d est nul" #: utils/adt/jsonfuncs.c:3869 #, c-format msgid "cannot replace existing key" -msgstr "ne peut pas remplacer une clé existante" +msgstr "ne peut pas remplacer une clé existante" #: utils/adt/jsonfuncs.c:3870 #, c-format msgid "Try using the function jsonb_set to replace key value." -msgstr "Essayez d'utiliser la fonction jsonb_set pour remplacer la valeur de la clé." +msgstr "Essayez d'utiliser la fonction jsonb_set pour remplacer la valeur de la clé." #: utils/adt/jsonfuncs.c:3952 #, c-format msgid "path element at position %d is not an integer: \"%s\"" -msgstr "l'élément du chemin à la position %d n'est pas un entier : « %s »" +msgstr "l'élément du chemin à la position %d n'est pas un entier : « %s »" #: utils/adt/levenshtein.c:133 #, c-format msgid "levenshtein argument exceeds maximum length of %d characters" -msgstr "l'argument levenshtein dépasse la longueur maximale de %d caractères" +msgstr "l'argument levenshtein dépasse la longueur maximale de %d caractères" -#: utils/adt/like.c:212 utils/adt/selfuncs.c:5333 +#: utils/adt/like.c:212 utils/adt/selfuncs.c:5433 #, c-format msgid "could not determine which collation to use for ILIKE" -msgstr "n'a pas pu déterminer le collationnement à utiliser pour ILIKE" +msgstr "n'a pas pu déterminer le collationnement à utiliser pour ILIKE" #: utils/adt/like_match.c:107 utils/adt/like_match.c:167 #, c-format msgid "LIKE pattern must not end with escape character" -msgstr "le motif LIKE ne se termine pas de caractères d'échappement" +msgstr "le motif LIKE ne se termine pas de caractères d'échappement" #: utils/adt/like_match.c:292 utils/adt/regexp.c:698 #, c-format msgid "invalid escape string" -msgstr "chaîne d'échappement invalide" +msgstr "chaîne d'échappement invalide" #: utils/adt/like_match.c:293 utils/adt/regexp.c:699 #, c-format msgid "Escape string must be empty or one character." -msgstr "La chaîne d'échappement doit être vide ou ne contenir qu'un caractère." +msgstr "La chaîne d'échappement doit être vide ou ne contenir qu'un caractère." #: utils/adt/lockfuncs.c:545 #, c-format msgid "cannot use advisory locks during a parallel operation" -msgstr "ne peut pas utiliser les verrous informatifs lors d'une opération parallèle" +msgstr "ne peut pas utiliser les verrous informatifs lors d'une opération parallèle" #: utils/adt/mac.c:68 #, c-format msgid "invalid input syntax for type macaddr: \"%s\"" -msgstr "syntaxe en entrée invalide pour le type macaddr : « %s »" +msgstr "syntaxe en entrée invalide pour le type macaddr : « %s »" #: utils/adt/mac.c:75 #, c-format msgid "invalid octet value in \"macaddr\" value: \"%s\"" -msgstr "valeur d'un octet invalide dans la valeur de « macaddr » : « %s »" +msgstr "valeur d'un octet invalide dans la valeur de « macaddr » : « %s »" #: utils/adt/misc.c:239 #, c-format @@ -19461,22 +19239,22 @@ msgstr "le PID %d n'est pas un processus du serveur PostgreSQL" #: utils/adt/misc.c:290 #, c-format msgid "must be a superuser to cancel superuser query" -msgstr "doit être super-utilisateur pour annuler la requête d'un super-utilisateur" +msgstr "doit être super-utilisateur pour annuler la requête d'un super-utilisateur" #: utils/adt/misc.c:295 #, c-format msgid "must be a member of the role whose query is being canceled or member of pg_signal_backend" -msgstr "doit être un membre du rôle dont la requête est en cours d'annulation ou membre de pg_signal_backend" +msgstr "doit être un membre du rôle dont la requête est en cours d'annulation ou membre de pg_signal_backend" #: utils/adt/misc.c:314 #, c-format msgid "must be a superuser to terminate superuser process" -msgstr "doit être super-utilisateur pour terminer le processus d'un super-utilisateur" +msgstr "doit être super-utilisateur pour terminer le processus d'un super-utilisateur" #: utils/adt/misc.c:319 #, c-format msgid "must be a member of the role whose process is being terminated or member of pg_signal_backend" -msgstr "doit être un membre du rôle dont le processus est en cours d'arrêt ou membre de pg_signal_backend" +msgstr "doit être un membre du rôle dont le processus est en cours d'arrêt ou membre de pg_signal_backend" #: utils/adt/misc.c:336 #, c-format @@ -19486,12 +19264,12 @@ msgstr "n'a pas pu envoyer le signal au postmaster : %m" #: utils/adt/misc.c:356 #, c-format msgid "rotation not possible because log collection not active" -msgstr "rotation impossible car la récupération des journaux applicatifs n'est pas activée" +msgstr "rotation impossible car la récupération des journaux applicatifs n'est pas activée" #: utils/adt/misc.c:393 #, c-format msgid "global tablespace never has databases" -msgstr "le tablespace global n'a jamais de bases de données" +msgstr "le tablespace global n'a jamais de bases de données" #: utils/adt/misc.c:414 #, c-format @@ -19500,79 +19278,79 @@ msgstr "%u n'est pas un OID de tablespace" #: utils/adt/misc.c:611 msgid "unreserved" -msgstr "non réservé" +msgstr "non réservé" #: utils/adt/misc.c:615 msgid "unreserved (cannot be function or type name)" -msgstr "non réservé (ne peut pas être un nom de fonction ou de type)" +msgstr "non réservé (ne peut pas être un nom de fonction ou de type)" #: utils/adt/misc.c:619 msgid "reserved (can be function or type name)" -msgstr "réservé (peut être un nom de fonction ou de type)" +msgstr "réservé (peut être un nom de fonction ou de type)" #: utils/adt/misc.c:623 msgid "reserved" -msgstr "réservé" +msgstr "réservé" #: utils/adt/misc.c:797 utils/adt/misc.c:811 utils/adt/misc.c:850 utils/adt/misc.c:856 utils/adt/misc.c:862 utils/adt/misc.c:885 #, c-format msgid "string is not a valid identifier: \"%s\"" -msgstr "la chaîne n'est pas un identifiant valide : « %s »" +msgstr "la chaîne n'est pas un identifiant valide : « %s »" #: utils/adt/misc.c:799 #, c-format msgid "String has unclosed double quotes." -msgstr "La chaîne des des guillements doubles non fermés." +msgstr "La chaîne des des guillements doubles non fermés." #: utils/adt/misc.c:813 #, c-format msgid "Quoted identifier must not be empty." -msgstr "L'identifiant entre guillemets ne doit pas être vide." +msgstr "L'identifiant entre guillemets ne doit pas être vide." #: utils/adt/misc.c:852 #, c-format msgid "No valid identifier before \".\"." -msgstr "Pas d'identifiant valide avant « . »." +msgstr "Pas d'identifiant valide avant « . »." #: utils/adt/misc.c:858 #, c-format msgid "No valid identifier after \".\"." -msgstr "Pas d'identifiant valide après « . »." +msgstr "Pas d'identifiant valide après « . »." #: utils/adt/nabstime.c:136 #, c-format msgid "invalid time zone name: \"%s\"" -msgstr "nom du fuseau horaire invalide : « %s »" +msgstr "nom du fuseau horaire invalide : « %s »" #: utils/adt/nabstime.c:481 utils/adt/nabstime.c:554 #, c-format msgid "cannot convert abstime \"invalid\" to timestamp" -msgstr "ne peut pas convertir un abstime « invalid » en timestamp" +msgstr "ne peut pas convertir un abstime « invalid » en timestamp" #: utils/adt/nabstime.c:781 #, c-format msgid "invalid status in external \"tinterval\" value" -msgstr "statut invalide dans la valeur externe « tinterval »" +msgstr "statut invalide dans la valeur externe « tinterval »" #: utils/adt/nabstime.c:855 #, c-format msgid "cannot convert reltime \"invalid\" to interval" -msgstr "ne peut pas convertir reltime « invalid » en interval" +msgstr "ne peut pas convertir reltime « invalid » en interval" #: utils/adt/nabstime.c:1550 #, c-format msgid "invalid input syntax for type tinterval: \"%s\"" -msgstr "syntaxe en entrée invalide pour le type tinterval : « %s »" +msgstr "syntaxe en entrée invalide pour le type tinterval : « %s »" #: utils/adt/network.c:69 #, c-format msgid "invalid cidr value: \"%s\"" -msgstr "valeur cidr invalide : « %s »" +msgstr "valeur cidr invalide : « %s »" #: utils/adt/network.c:70 utils/adt/network.c:200 #, c-format msgid "Value has bits set to right of mask." -msgstr "La valeur a des bits positionnés à la droite du masque." +msgstr "La valeur a des bits positionnés à la droite du masque." #: utils/adt/network.c:111 utils/adt/network.c:607 utils/adt/network.c:632 utils/adt/network.c:657 #, c-format @@ -19583,24 +19361,24 @@ msgstr "n'a pas pu formater la valeur inet : %m" #: utils/adt/network.c:168 #, c-format msgid "invalid address family in external \"%s\" value" -msgstr "famille d'adresses invalide dans la valeur externe « %s »" +msgstr "famille d'adresses invalide dans la valeur externe « %s »" #. translator: %s is inet or cidr #: utils/adt/network.c:175 #, c-format msgid "invalid bits in external \"%s\" value" -msgstr "bits invalides dans la valeur externe « %s »" +msgstr "bits invalides dans la valeur externe « %s »" #. translator: %s is inet or cidr #: utils/adt/network.c:184 #, c-format msgid "invalid length in external \"%s\" value" -msgstr "longueur invalide dans la valeur externe « %s »" +msgstr "longueur invalide dans la valeur externe « %s »" #: utils/adt/network.c:199 #, c-format msgid "invalid external \"cidr\" value" -msgstr "valeur externe « cidr » invalide" +msgstr "valeur externe « cidr » invalide" #: utils/adt/network.c:321 utils/adt/network.c:348 #, c-format @@ -19615,61 +19393,61 @@ msgstr "n'a pas pu formater la valeur cidr : %m" #: utils/adt/network.c:917 #, c-format msgid "cannot merge addresses from different families" -msgstr "ne peut pas assembler les adresses de familles différentes" +msgstr "ne peut pas assembler les adresses de familles différentes" #: utils/adt/network.c:1343 #, c-format msgid "cannot AND inet values of different sizes" msgstr "" -"ne peut pas utiliser l'opérateur AND sur des champs de type inet de tailles\n" -"différentes" +"ne peut pas utiliser l'opérateur AND sur des champs de type inet de tailles\n" +"différentes" #: utils/adt/network.c:1375 #, c-format msgid "cannot OR inet values of different sizes" msgstr "" -"ne peut pas utiliser l'opérateur OR sur des champs de type inet de tailles\n" -"différentes" +"ne peut pas utiliser l'opérateur OR sur des champs de type inet de tailles\n" +"différentes" #: utils/adt/network.c:1436 utils/adt/network.c:1512 #, c-format msgid "result is out of range" -msgstr "le résultat est en dehors des limites" +msgstr "le résultat est en dehors des limites" #: utils/adt/network.c:1477 #, c-format msgid "cannot subtract inet values of different sizes" -msgstr "ne peut pas soustraire des valeurs inet de tailles différentes" +msgstr "ne peut pas soustraire des valeurs inet de tailles différentes" #: utils/adt/numeric.c:542 utils/adt/numeric.c:569 utils/adt/numeric.c:5405 utils/adt/numeric.c:5428 utils/adt/numeric.c:5452 #, c-format msgid "invalid input syntax for type numeric: \"%s\"" -msgstr "syntaxe en entrée invalide pour le type numeric : « %s »" +msgstr "syntaxe en entrée invalide pour le type numeric : « %s »" #: utils/adt/numeric.c:768 #, c-format msgid "invalid sign in external \"numeric\" value" -msgstr "signe invalide dans la valeur externe « numeric »" +msgstr "signe invalide dans la valeur externe « numeric »" #: utils/adt/numeric.c:774 #, c-format msgid "invalid scale in external \"numeric\" value" -msgstr "échelle invalide dans la valeur externe « numeric »" +msgstr "échelle invalide dans la valeur externe « numeric »" #: utils/adt/numeric.c:783 #, c-format msgid "invalid digit in external \"numeric\" value" -msgstr "chiffre invalide dans la valeur externe « numeric »" +msgstr "chiffre invalide dans la valeur externe « numeric »" #: utils/adt/numeric.c:974 utils/adt/numeric.c:988 #, c-format msgid "NUMERIC precision %d must be between 1 and %d" -msgstr "la précision NUMERIC %d doit être comprise entre 1 et %d" +msgstr "la précision NUMERIC %d doit être comprise entre 1 et %d" #: utils/adt/numeric.c:979 #, c-format msgid "NUMERIC scale %d must be between 0 and precision %d" -msgstr "l'échelle NUMERIC %d doit être comprise entre 0 et %d" +msgstr "l'échelle NUMERIC %d doit être comprise entre 0 et %d" #: utils/adt/numeric.c:997 #, c-format @@ -19679,22 +19457,22 @@ msgstr "modificateur de type NUMERIC invalide" #: utils/adt/numeric.c:1329 #, c-format msgid "start value cannot be NaN" -msgstr "la valeur de démarrage ne peut pas être NaN" +msgstr "la valeur de démarrage ne peut pas être NaN" #: utils/adt/numeric.c:1334 #, c-format msgid "stop value cannot be NaN" -msgstr "la valeur d'arrêt ne peut pas être NaN" +msgstr "la valeur d'arrêt ne peut pas être NaN" #: utils/adt/numeric.c:1344 #, c-format msgid "step size cannot be NaN" -msgstr "la taille du pas ne peut pas être NaN" +msgstr "la taille du pas ne peut pas être NaN" #: utils/adt/numeric.c:2539 utils/adt/numeric.c:5467 utils/adt/numeric.c:5912 utils/adt/numeric.c:7616 utils/adt/numeric.c:8041 utils/adt/numeric.c:8156 utils/adt/numeric.c:8229 #, c-format msgid "value overflows numeric format" -msgstr "la valeur dépasse le format numeric" +msgstr "la valeur dépasse le format numeric" #: utils/adt/numeric.c:2881 #, c-format @@ -19714,128 +19492,128 @@ msgstr "ne peut pas convertir NaN en un entier de type smallint" #: utils/adt/numeric.c:5982 #, c-format msgid "numeric field overflow" -msgstr "champ numérique en dehors des limites" +msgstr "champ numérique en dehors des limites" #: utils/adt/numeric.c:5983 #, c-format msgid "A field with precision %d, scale %d must round to an absolute value less than %s%d." msgstr "" -"Un champ de précision %d et d'échelle %d doit être arrondi à une valeur\n" -"absolue inférieure à %s%d." +"Un champ de précision %d et d'échelle %d doit être arrondi à une valeur\n" +"absolue inférieure à %s%d." #: utils/adt/numeric.c:6254 utils/adt/numeric.c:6280 #, c-format msgid "invalid input syntax for type double precision: \"%s\"" -msgstr "syntaxe en entrée invalide pour le type double precision : « %s »" +msgstr "syntaxe en entrée invalide pour le type double precision : « %s »" #: utils/adt/numutils.c:75 #, c-format msgid "value \"%s\" is out of range for type integer" -msgstr "la valeur « %s » est en dehors des limites du type integer" +msgstr "la valeur « %s » est en dehors des limites du type integer" #: utils/adt/numutils.c:81 #, c-format msgid "value \"%s\" is out of range for type smallint" -msgstr "la valeur « %s » est en dehors des limites du type smallint" +msgstr "la valeur « %s » est en dehors des limites du type smallint" #: utils/adt/numutils.c:87 #, c-format msgid "value \"%s\" is out of range for 8-bit integer" -msgstr "la valeur « %s » est en dehors des limites des entiers sur 8 bits" +msgstr "la valeur « %s » est en dehors des limites des entiers sur 8 bits" #: utils/adt/oid.c:43 utils/adt/oid.c:57 utils/adt/oid.c:63 utils/adt/oid.c:84 #, c-format msgid "invalid input syntax for type oid: \"%s\"" -msgstr "syntaxe invalide en entrée pour le type oid : « %s »" +msgstr "syntaxe invalide en entrée pour le type oid : « %s »" #: utils/adt/oid.c:69 utils/adt/oid.c:107 #, c-format msgid "value \"%s\" is out of range for type oid" -msgstr "la valeur « %s » est en dehors des limites pour le type oid" +msgstr "la valeur « %s » est en dehors des limites pour le type oid" #: utils/adt/oid.c:287 #, c-format msgid "invalid oidvector data" -msgstr "donnée oidvector invalide" +msgstr "donnée oidvector invalide" #: utils/adt/oracle_compat.c:895 #, c-format msgid "requested character too large" -msgstr "caractère demandé trop long" +msgstr "caractère demandé trop long" #: utils/adt/oracle_compat.c:945 utils/adt/oracle_compat.c:1007 #, c-format msgid "requested character too large for encoding: %d" -msgstr "caractère demandé trop long pour l'encodage : %d" +msgstr "caractère demandé trop long pour l'encodage : %d" #: utils/adt/oracle_compat.c:986 #, c-format msgid "requested character not valid for encoding: %d" -msgstr "caractère demandé invalide pour l'encodage : %d" +msgstr "caractère demandé invalide pour l'encodage : %d" #: utils/adt/oracle_compat.c:1000 #, c-format msgid "null character not permitted" -msgstr "caractère nul interdit" +msgstr "caractère nul interdit" #: utils/adt/orderedsetaggs.c:425 utils/adt/orderedsetaggs.c:530 utils/adt/orderedsetaggs.c:669 #, c-format msgid "percentile value %g is not between 0 and 1" msgstr "la valeur centile %g n'est pas entre 0 et 1" -#: utils/adt/pg_locale.c:917 +#: utils/adt/pg_locale.c:1029 #, c-format msgid "Apply system library package updates." -msgstr "Applique les mises à jour du paquet de bibliothèque système." +msgstr "Applique les mises à jour du paquet de bibliothèque système." -#: utils/adt/pg_locale.c:1122 +#: utils/adt/pg_locale.c:1234 #, c-format msgid "could not create locale \"%s\": %m" -msgstr "n'a pas pu créer la locale « %s » : %m" +msgstr "n'a pas pu créer la locale « %s » : %m" -#: utils/adt/pg_locale.c:1125 +#: utils/adt/pg_locale.c:1237 #, c-format msgid "The operating system could not find any locale data for the locale name \"%s\"." -msgstr "Le système d'exploitation n'a pas pu trouver des données de locale pour la locale « %s »." +msgstr "Le système d'exploitation n'a pas pu trouver des données de locale pour la locale « %s »." -#: utils/adt/pg_locale.c:1212 +#: utils/adt/pg_locale.c:1324 #, c-format msgid "collations with different collate and ctype values are not supported on this platform" msgstr "" -"les collationnements avec des valeurs différents pour le tri et le jeu de\n" -"caractères ne sont pas supportés sur cette plateforme" +"les collationnements avec des valeurs différents pour le tri et le jeu de\n" +"caractères ne sont pas supportés sur cette plateforme" -#: utils/adt/pg_locale.c:1227 +#: utils/adt/pg_locale.c:1339 #, c-format msgid "nondefault collations are not supported on this platform" -msgstr "les collationnements autres que par défaut ne sont pas supportés sur cette plateforme" +msgstr "les collationnements autres que par défaut ne sont pas supportés sur cette plateforme" -#: utils/adt/pg_locale.c:1398 +#: utils/adt/pg_locale.c:1510 #, c-format msgid "invalid multibyte character for locale" -msgstr "caractère multi-octets invalide pour la locale" +msgstr "caractère multi-octets invalide pour la locale" -#: utils/adt/pg_locale.c:1399 +#: utils/adt/pg_locale.c:1511 #, c-format msgid "The server's LC_CTYPE locale is probably incompatible with the database encoding." msgstr "" "La locale LC_CTYPE du serveur est probablement incompatible avec l'encodage\n" -"de la base de données." +"de la base de données." #: utils/adt/pg_lsn.c:44 utils/adt/pg_lsn.c:49 #, c-format msgid "invalid input syntax for type pg_lsn: \"%s\"" -msgstr "syntaxe en entrée invalide pour le type pg_lsn : « %s »" +msgstr "syntaxe en entrée invalide pour le type pg_lsn : « %s »" #: utils/adt/pg_upgrade_support.c:40 #, c-format msgid "function can only be called when server is in binary upgrade mode" -msgstr "la fonction peut seulement être appelée quand le serveur est en mode de mise à jour binaire" +msgstr "la fonction peut seulement être appelée quand le serveur est en mode de mise à jour binaire" #: utils/adt/pgstatfuncs.c:571 #, c-format msgid "invalid command name: \"%s\"" -msgstr "nom de commande invalide : « %s »" +msgstr "nom de commande invalide : « %s »" #: utils/adt/pseudotypes.c:95 #, c-format @@ -19985,24 +19763,24 @@ msgstr "ne peut pas afficher une valeur de type %s" #: utils/adt/rangetypes.c:405 #, c-format msgid "range constructor flags argument must not be null" -msgstr "l'argument flags du contructeur d'intervalle ne doit pas être NULL" +msgstr "l'argument flags du contructeur d'intervalle ne doit pas être NULL" #: utils/adt/rangetypes.c:992 #, c-format msgid "result of range difference would not be contiguous" -msgstr "le résultat de la différence d'intervalle de valeur ne sera pas contigu" +msgstr "le résultat de la différence d'intervalle de valeur ne sera pas contigu" #: utils/adt/rangetypes.c:1053 #, c-format msgid "result of range union would not be contiguous" -msgstr "le résultat de l'union d'intervalle pourrait ne pas être contigü" +msgstr "le résultat de l'union d'intervalle pourrait ne pas être contigü" #: utils/adt/rangetypes.c:1543 #, c-format msgid "range lower bound must be less than or equal to range upper bound" msgstr "" -"la limite inférieure de l'intervalle de valeurs doit être inférieure ou égale\n" -"à la limite supérieure de l'intervalle de valeurs" +"la limite inférieure de l'intervalle de valeurs doit être inférieure ou égale\n" +"à la limite supérieure de l'intervalle de valeurs" #: utils/adt/rangetypes.c:1926 utils/adt/rangetypes.c:1939 utils/adt/rangetypes.c:1953 #, c-format @@ -20012,27 +19790,27 @@ msgstr "drapeaux de limite de l'intervalle invalides" #: utils/adt/rangetypes.c:1927 utils/adt/rangetypes.c:1940 utils/adt/rangetypes.c:1954 #, c-format msgid "Valid values are \"[]\", \"[)\", \"(]\", and \"()\"." -msgstr "Les valeurs valides sont entre « [] », « [) », « (] » et « () »." +msgstr "Les valeurs valides sont entre « [] », « [) », « (] » et « () »." #: utils/adt/rangetypes.c:2019 utils/adt/rangetypes.c:2036 utils/adt/rangetypes.c:2049 utils/adt/rangetypes.c:2067 utils/adt/rangetypes.c:2078 utils/adt/rangetypes.c:2122 utils/adt/rangetypes.c:2130 #, c-format msgid "malformed range literal: \"%s\"" -msgstr "intervalle litéral mal formé : « %s »" +msgstr "intervalle litéral mal formé : « %s »" #: utils/adt/rangetypes.c:2021 #, c-format msgid "Junk after \"empty\" key word." -msgstr "Cochonnerie après le mot clé « empty »" +msgstr "Cochonnerie après le mot clé « empty »" #: utils/adt/rangetypes.c:2038 #, c-format msgid "Missing left parenthesis or bracket." -msgstr "Parenthèse gauche ou crochet manquant" +msgstr "Parenthèse gauche ou crochet manquant" #: utils/adt/rangetypes.c:2051 #, c-format msgid "Missing comma after lower bound." -msgstr "Virgule manquante après une limite basse." +msgstr "Virgule manquante après une limite basse." #: utils/adt/rangetypes.c:2069 #, c-format @@ -20042,160 +19820,160 @@ msgstr "Trop de virgules." #: utils/adt/rangetypes.c:2080 #, c-format msgid "Junk after right parenthesis or bracket." -msgstr "Problème après la parenthèse droite ou le crochet droit." +msgstr "Problème après la parenthèse droite ou le crochet droit." #: utils/adt/regexp.c:285 utils/adt/regexp.c:1288 utils/adt/varlena.c:3829 #, c-format msgid "regular expression failed: %s" -msgstr "l'expression rationnelle a échoué : %s" +msgstr "l'expression rationnelle a échoué : %s" #: utils/adt/regexp.c:422 #, c-format msgid "invalid regexp option: \"%c\"" -msgstr "option invalide de l'expression rationnelle : « %c »" +msgstr "option invalide de l'expression rationnelle : « %c »" #: utils/adt/regexp.c:948 #, c-format msgid "regexp_split does not support the global option" msgstr "regexp_split ne supporte pas l'option globale" -#: utils/adt/regproc.c:128 utils/adt/regproc.c:148 +#: utils/adt/regproc.c:129 utils/adt/regproc.c:149 #, c-format msgid "more than one function named \"%s\"" -msgstr "il existe plus d'une fonction nommée « %s »" +msgstr "il existe plus d'une fonction nommée « %s »" -#: utils/adt/regproc.c:587 utils/adt/regproc.c:607 +#: utils/adt/regproc.c:588 utils/adt/regproc.c:608 #, c-format msgid "more than one operator named %s" -msgstr "il existe plus d'un opérateur nommé%s" +msgstr "il existe plus d'un opérateur nommé%s" -#: utils/adt/regproc.c:779 utils/adt/regproc.c:820 utils/adt/regproc.c:2006 utils/adt/ruleutils.c:8364 utils/adt/ruleutils.c:8533 +#: utils/adt/regproc.c:780 utils/adt/regproc.c:821 utils/adt/regproc.c:2007 utils/adt/ruleutils.c:8438 utils/adt/ruleutils.c:8607 #, c-format msgid "too many arguments" msgstr "trop d'arguments" -#: utils/adt/regproc.c:780 utils/adt/regproc.c:821 +#: utils/adt/regproc.c:781 utils/adt/regproc.c:822 #, c-format msgid "Provide two argument types for operator." -msgstr "Fournit deux types d'argument pour l'opérateur." +msgstr "Fournit deux types d'argument pour l'opérateur." -#: utils/adt/regproc.c:1594 utils/adt/regproc.c:1618 utils/adt/regproc.c:1715 utils/adt/regproc.c:1739 utils/adt/regproc.c:1841 utils/adt/regproc.c:1846 utils/adt/varlena.c:3084 utils/adt/varlena.c:3089 +#: utils/adt/regproc.c:1595 utils/adt/regproc.c:1619 utils/adt/regproc.c:1716 utils/adt/regproc.c:1740 utils/adt/regproc.c:1842 utils/adt/regproc.c:1847 utils/adt/varlena.c:3084 utils/adt/varlena.c:3089 #, c-format msgid "invalid name syntax" msgstr "syntaxe du nom invalide" -#: utils/adt/regproc.c:1904 +#: utils/adt/regproc.c:1905 #, c-format msgid "expected a left parenthesis" -msgstr "attendait une parenthèse gauche" +msgstr "attendait une parenthèse gauche" -#: utils/adt/regproc.c:1920 +#: utils/adt/regproc.c:1921 #, c-format msgid "expected a right parenthesis" -msgstr "attendait une parenthèse droite" +msgstr "attendait une parenthèse droite" -#: utils/adt/regproc.c:1939 +#: utils/adt/regproc.c:1940 #, c-format msgid "expected a type name" msgstr "attendait un nom de type" -#: utils/adt/regproc.c:1971 +#: utils/adt/regproc.c:1972 #, c-format msgid "improper type name" msgstr "nom du type invalide" -#: utils/adt/ri_triggers.c:345 utils/adt/ri_triggers.c:2492 utils/adt/ri_triggers.c:3317 +#: utils/adt/ri_triggers.c:343 utils/adt/ri_triggers.c:2490 utils/adt/ri_triggers.c:3315 #, c-format msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\"" msgstr "" -"une instruction insert ou update sur la table « %s » viole la contrainte de clé\n" -"étrangère « %s »" +"une instruction insert ou update sur la table « %s » viole la contrainte de clé\n" +"étrangère « %s »" -#: utils/adt/ri_triggers.c:348 utils/adt/ri_triggers.c:2495 +#: utils/adt/ri_triggers.c:346 utils/adt/ri_triggers.c:2493 #, c-format msgid "MATCH FULL does not allow mixing of null and nonnull key values." -msgstr "MATCH FULL n'autorise pas le mixage de valeurs clés NULL et non NULL." +msgstr "MATCH FULL n'autorise pas le mixage de valeurs clés NULL et non NULL." -#: utils/adt/ri_triggers.c:2734 +#: utils/adt/ri_triggers.c:2732 #, c-format msgid "function \"%s\" must be fired for INSERT" -msgstr "la fonction « %s » doit être exécutée pour l'instruction INSERT" +msgstr "la fonction « %s » doit être exécutée pour l'instruction INSERT" -#: utils/adt/ri_triggers.c:2740 +#: utils/adt/ri_triggers.c:2738 #, c-format msgid "function \"%s\" must be fired for UPDATE" -msgstr "la fonction « %s » doit être exécutée pour l'instruction UPDATE" +msgstr "la fonction « %s » doit être exécutée pour l'instruction UPDATE" -#: utils/adt/ri_triggers.c:2746 +#: utils/adt/ri_triggers.c:2744 #, c-format msgid "function \"%s\" must be fired for DELETE" -msgstr "la fonction « %s » doit être exécutée pour l'instruction DELETE" +msgstr "la fonction « %s » doit être exécutée pour l'instruction DELETE" -#: utils/adt/ri_triggers.c:2769 +#: utils/adt/ri_triggers.c:2767 #, c-format msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\"" -msgstr "aucune entrée pg_constraint pour le trigger « %s » sur la table « %s »" +msgstr "aucune entrée pg_constraint pour le trigger « %s » sur la table « %s »" -#: utils/adt/ri_triggers.c:2771 +#: utils/adt/ri_triggers.c:2769 #, c-format msgid "Remove this referential integrity trigger and its mates, then do ALTER TABLE ADD CONSTRAINT." msgstr "" -"Supprimez ce trigger sur une intégrité référentielle et ses enfants,\n" +"Supprimez ce trigger sur une intégrité référentielle et ses enfants,\n" "puis faites un ALTER TABLE ADD CONSTRAINT." -#: utils/adt/ri_triggers.c:3227 +#: utils/adt/ri_triggers.c:3225 #, c-format msgid "referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave unexpected result" msgstr "" -"la requête d'intégrité référentielle sur « %s » à partir de la contrainte « %s »\n" -"sur « %s » donne des résultats inattendus" +"la requête d'intégrité référentielle sur « %s » à partir de la contrainte « %s »\n" +"sur « %s » donne des résultats inattendus" -#: utils/adt/ri_triggers.c:3231 +#: utils/adt/ri_triggers.c:3229 #, c-format msgid "This is most likely due to a rule having rewritten the query." -msgstr "Ceci est certainement dû à une règle qui a ré-écrit la requête." +msgstr "Ceci est certainement dû à une règle qui a ré-écrit la requête." -#: utils/adt/ri_triggers.c:3321 +#: utils/adt/ri_triggers.c:3319 #, c-format msgid "Key (%s)=(%s) is not present in table \"%s\"." -msgstr "La clé (%s)=(%s) n'est pas présente dans la table « %s »." +msgstr "La clé (%s)=(%s) n'est pas présente dans la table « %s »." -#: utils/adt/ri_triggers.c:3324 +#: utils/adt/ri_triggers.c:3322 #, c-format msgid "Key is not present in table \"%s\"." -msgstr "La clé n'est pas présente dans la table « %s »." +msgstr "La clé n'est pas présente dans la table « %s »." -#: utils/adt/ri_triggers.c:3330 +#: utils/adt/ri_triggers.c:3328 #, c-format msgid "update or delete on table \"%s\" violates foreign key constraint \"%s\" on table \"%s\"" msgstr "" -"UPDATE ou DELETE sur la table « %s » viole la contrainte de clé étrangère\n" -"« %s » de la table « %s »" +"UPDATE ou DELETE sur la table « %s » viole la contrainte de clé étrangère\n" +"« %s » de la table « %s »" -#: utils/adt/ri_triggers.c:3335 +#: utils/adt/ri_triggers.c:3333 #, c-format msgid "Key (%s)=(%s) is still referenced from table \"%s\"." -msgstr "La clé (%s)=(%s) est toujours référencée à partir de la table « %s »." +msgstr "La clé (%s)=(%s) est toujours référencée à partir de la table « %s »." -#: utils/adt/ri_triggers.c:3338 +#: utils/adt/ri_triggers.c:3336 #, c-format msgid "Key is still referenced from table \"%s\"." -msgstr "La clé est toujours référencée à partir de la table « %s »." +msgstr "La clé est toujours référencée à partir de la table « %s »." #: utils/adt/rowtypes.c:103 utils/adt/rowtypes.c:479 #, c-format msgid "input of anonymous composite types is not implemented" -msgstr "l'ajout de colonnes ayant un type composé n'est pas implémenté" +msgstr "l'ajout de colonnes ayant un type composé n'est pas implémenté" #: utils/adt/rowtypes.c:155 utils/adt/rowtypes.c:183 utils/adt/rowtypes.c:206 utils/adt/rowtypes.c:214 utils/adt/rowtypes.c:266 utils/adt/rowtypes.c:274 #, c-format msgid "malformed record literal: \"%s\"" -msgstr "enregistrement litéral invalide : « %s »" +msgstr "enregistrement litéral invalide : « %s »" #: utils/adt/rowtypes.c:156 #, c-format msgid "Missing left parenthesis." -msgstr "Parenthèse gauche manquante" +msgstr "Parenthèse gauche manquante" #: utils/adt/rowtypes.c:184 #, c-format @@ -20210,7 +19988,7 @@ msgstr "Trop de colonnes." #: utils/adt/rowtypes.c:275 #, c-format msgid "Junk after right parenthesis." -msgstr "Problème après la parenthèse droite." +msgstr "Problème après la parenthèse droite." #: utils/adt/rowtypes.c:528 #, c-format @@ -20220,7 +19998,7 @@ msgstr "mauvais nombre de colonnes : %d, alors que %d attendu" #: utils/adt/rowtypes.c:555 #, c-format msgid "wrong data type: %u, expected %u" -msgstr "mauvais type de données : %u, alors que %u attendu" +msgstr "mauvais type de données : %u, alors que %u attendu" #: utils/adt/rowtypes.c:616 #, c-format @@ -20238,240 +20016,240 @@ msgstr "" #, c-format msgid "cannot compare record types with different numbers of columns" msgstr "" -"ne peut pas comparer les types d'enregistrement avec des numéros différents\n" +"ne peut pas comparer les types d'enregistrement avec des numéros différents\n" "des colonnes" -#: utils/adt/ruleutils.c:4286 +#: utils/adt/ruleutils.c:4292 #, c-format msgid "rule \"%s\" has unsupported event type %d" -msgstr "la règle « %s » a un type d'événement %d non supporté" +msgstr "la règle « %s » a un type d'événement %d non supporté" -#: utils/adt/selfuncs.c:5318 +#: utils/adt/selfuncs.c:5418 #, c-format msgid "case insensitive matching not supported on type bytea" -msgstr "la recherche insensible à la casse n'est pas supportée avec le type bytea" +msgstr "la recherche insensible à la casse n'est pas supportée avec le type bytea" -#: utils/adt/selfuncs.c:5421 +#: utils/adt/selfuncs.c:5521 #, c-format msgid "regular-expression matching not supported on type bytea" -msgstr "la recherche par expression rationnelle n'est pas supportée sur le type bytea" +msgstr "la recherche par expression rationnelle n'est pas supportée sur le type bytea" #: utils/adt/tid.c:71 utils/adt/tid.c:79 utils/adt/tid.c:87 #, c-format msgid "invalid input syntax for type tid: \"%s\"" -msgstr "syntaxe en entrée invalide pour le type tid : « %s »" +msgstr "syntaxe en entrée invalide pour le type tid : « %s »" -#: utils/adt/timestamp.c:99 +#: utils/adt/timestamp.c:100 #, c-format msgid "TIMESTAMP(%d)%s precision must not be negative" -msgstr "la précision de TIMESTAMP(%d)%s ne doit pas être négative" +msgstr "la précision de TIMESTAMP(%d)%s ne doit pas être négative" -#: utils/adt/timestamp.c:105 +#: utils/adt/timestamp.c:106 #, c-format msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d" -msgstr "la précision de TIMESTAMP(%d)%s est réduit au maximum autorisé, %d" +msgstr "la précision de TIMESTAMP(%d)%s est réduit au maximum autorisé, %d" -#: utils/adt/timestamp.c:170 utils/adt/timestamp.c:445 +#: utils/adt/timestamp.c:171 utils/adt/timestamp.c:446 #, c-format msgid "timestamp out of range: \"%s\"" -msgstr "timestamp en dehors de limites : « %s »" +msgstr "timestamp en dehors de limites : « %s »" -#: utils/adt/timestamp.c:188 utils/adt/timestamp.c:463 utils/adt/timestamp.c:993 +#: utils/adt/timestamp.c:189 utils/adt/timestamp.c:464 utils/adt/timestamp.c:991 #, c-format msgid "date/time value \"%s\" is no longer supported" -msgstr "la valeur date/time « %s » n'est plus supportée" +msgstr "la valeur date/time « %s » n'est plus supportée" -#: utils/adt/timestamp.c:258 utils/adt/timestamp.c:754 +#: utils/adt/timestamp.c:259 utils/adt/timestamp.c:755 #, c-format msgid "timestamp cannot be NaN" msgstr "timestamp ne peut pas valoir NaN" -#: utils/adt/timestamp.c:380 +#: utils/adt/timestamp.c:381 #, c-format msgid "timestamp(%d) precision must be between %d and %d" -msgstr "la précision de timestamp(%d) doit être comprise entre %d et %d" +msgstr "la précision de timestamp(%d) doit être comprise entre %d et %d" -#: utils/adt/timestamp.c:513 +#: utils/adt/timestamp.c:514 #, c-format msgid "invalid input syntax for numeric time zone: \"%s\"" -msgstr "syntaxe en entrée invalide pour le fuseau horaire numérique : « %s »" +msgstr "syntaxe en entrée invalide pour le fuseau horaire numérique : « %s »" -#: utils/adt/timestamp.c:515 +#: utils/adt/timestamp.c:516 #, c-format msgid "Numeric time zones must have \"-\" or \"+\" as first character." -msgstr "Les fuseaux horaires numériques doivent avoir « - » ou « + » comme premier caractère." +msgstr "Les fuseaux horaires numériques doivent avoir « - » ou « + » comme premier caractère." -#: utils/adt/timestamp.c:528 +#: utils/adt/timestamp.c:529 #, c-format msgid "numeric time zone \"%s\" out of range" -msgstr "le fuseau horaire numérique « %s » est en dehors des limites" +msgstr "le fuseau horaire numérique « %s » est en dehors des limites" -#: utils/adt/timestamp.c:631 utils/adt/timestamp.c:641 utils/adt/timestamp.c:653 +#: utils/adt/timestamp.c:632 utils/adt/timestamp.c:642 utils/adt/timestamp.c:654 #, c-format msgid "timestamp out of range: %d-%02d-%02d %d:%02d:%02g" msgstr "timestamp en dehors de limites : %d-%02d-%02d %d:%02d:%02g" -#: utils/adt/timestamp.c:770 utils/adt/timestamp.c:776 utils/adt/timestamp.c:791 +#: utils/adt/timestamp.c:773 utils/adt/timestamp.c:789 #, c-format msgid "timestamp out of range: \"%g\"" -msgstr "timestamp en dehors de limites : « %g »" +msgstr "timestamp en dehors de limites : « %g »" -#: utils/adt/timestamp.c:987 utils/adt/timestamp.c:1558 utils/adt/timestamp.c:2068 utils/adt/timestamp.c:3220 utils/adt/timestamp.c:3225 utils/adt/timestamp.c:3230 utils/adt/timestamp.c:3280 utils/adt/timestamp.c:3287 utils/adt/timestamp.c:3294 utils/adt/timestamp.c:3314 utils/adt/timestamp.c:3321 utils/adt/timestamp.c:3328 utils/adt/timestamp.c:3358 utils/adt/timestamp.c:3366 utils/adt/timestamp.c:3411 utils/adt/timestamp.c:3751 -#: utils/adt/timestamp.c:3880 utils/adt/timestamp.c:4271 +#: utils/adt/timestamp.c:985 utils/adt/timestamp.c:1609 utils/adt/timestamp.c:2122 utils/adt/timestamp.c:3316 utils/adt/timestamp.c:3321 utils/adt/timestamp.c:3326 utils/adt/timestamp.c:3376 utils/adt/timestamp.c:3383 utils/adt/timestamp.c:3390 utils/adt/timestamp.c:3410 utils/adt/timestamp.c:3417 utils/adt/timestamp.c:3424 utils/adt/timestamp.c:3454 utils/adt/timestamp.c:3462 utils/adt/timestamp.c:3507 utils/adt/timestamp.c:3847 +#: utils/adt/timestamp.c:3976 utils/adt/timestamp.c:4367 #, c-format msgid "interval out of range" msgstr "intervalle en dehors des limites" -#: utils/adt/timestamp.c:1128 utils/adt/timestamp.c:1161 +#: utils/adt/timestamp.c:1126 utils/adt/timestamp.c:1159 #, c-format msgid "invalid INTERVAL type modifier" msgstr "modificateur de type INTERVAL invalide" -#: utils/adt/timestamp.c:1144 +#: utils/adt/timestamp.c:1142 #, c-format msgid "INTERVAL(%d) precision must not be negative" -msgstr "la précision de l'intervalle INTERVAL(%d) ne doit pas être négative" +msgstr "la précision de l'intervalle INTERVAL(%d) ne doit pas être négative" -#: utils/adt/timestamp.c:1150 +#: utils/adt/timestamp.c:1148 #, c-format msgid "INTERVAL(%d) precision reduced to maximum allowed, %d" -msgstr "La précision de l'intervalle INTERVAL(%d) doit être réduit au maximum permis, %d" +msgstr "La précision de l'intervalle INTERVAL(%d) doit être réduit au maximum permis, %d" -#: utils/adt/timestamp.c:1502 +#: utils/adt/timestamp.c:1553 #, c-format msgid "interval(%d) precision must be between %d and %d" -msgstr "La précision de interval(%d) doit être comprise entre %d et %d" +msgstr "La précision de interval(%d) doit être comprise entre %d et %d" -#: utils/adt/timestamp.c:2797 +#: utils/adt/timestamp.c:2893 #, c-format msgid "cannot subtract infinite timestamps" msgstr "ne peut pas soustraire les valeurs timestamps infinies" -#: utils/adt/timestamp.c:4006 utils/adt/timestamp.c:4531 utils/adt/timestamp.c:4715 utils/adt/timestamp.c:4740 +#: utils/adt/timestamp.c:4102 utils/adt/timestamp.c:4627 utils/adt/timestamp.c:4811 utils/adt/timestamp.c:4836 #, c-format msgid "timestamp units \"%s\" not supported" -msgstr "les unités timestamp « %s » ne sont pas supportées" +msgstr "les unités timestamp « %s » ne sont pas supportées" -#: utils/adt/timestamp.c:4020 utils/adt/timestamp.c:4485 utils/adt/timestamp.c:4750 +#: utils/adt/timestamp.c:4116 utils/adt/timestamp.c:4581 utils/adt/timestamp.c:4846 #, c-format msgid "timestamp units \"%s\" not recognized" -msgstr "les unité « %s » ne sont pas reconnues pour le type timestamp" +msgstr "les unité « %s » ne sont pas reconnues pour le type timestamp" -#: utils/adt/timestamp.c:4160 utils/adt/timestamp.c:4526 utils/adt/timestamp.c:4937 utils/adt/timestamp.c:4963 +#: utils/adt/timestamp.c:4256 utils/adt/timestamp.c:4622 utils/adt/timestamp.c:5033 utils/adt/timestamp.c:5059 #, c-format msgid "timestamp with time zone units \"%s\" not supported" msgstr "" -"les unités « %s » ne sont pas supportées pour le type « timestamp with time\n" -"zone »" +"les unités « %s » ne sont pas supportées pour le type « timestamp with time\n" +"zone »" -#: utils/adt/timestamp.c:4177 utils/adt/timestamp.c:4480 utils/adt/timestamp.c:4972 +#: utils/adt/timestamp.c:4273 utils/adt/timestamp.c:4576 utils/adt/timestamp.c:5068 #, c-format msgid "timestamp with time zone units \"%s\" not recognized" msgstr "" -"Les unités « %s » ne sont pas reconnues pour le type « timestamp with time\n" -"zone »" +"Les unités « %s » ne sont pas reconnues pour le type « timestamp with time\n" +"zone »" -#: utils/adt/timestamp.c:4258 +#: utils/adt/timestamp.c:4354 #, c-format msgid "interval units \"%s\" not supported because months usually have fractional weeks" -msgstr "unités d'intervalle « %s » non supporté car les mois ont généralement des semaines fractionnaires" +msgstr "unités d'intervalle « %s » non supporté car les mois ont généralement des semaines fractionnaires" -#: utils/adt/timestamp.c:4264 utils/adt/timestamp.c:5078 +#: utils/adt/timestamp.c:4360 utils/adt/timestamp.c:5174 #, c-format msgid "interval units \"%s\" not supported" -msgstr "Les unités « %s » ne sont pas supportées pour le type interval" +msgstr "Les unités « %s » ne sont pas supportées pour le type interval" -#: utils/adt/timestamp.c:4280 utils/adt/timestamp.c:5105 +#: utils/adt/timestamp.c:4376 utils/adt/timestamp.c:5201 #, c-format msgid "interval units \"%s\" not recognized" -msgstr "Les unités « %s » ne sont pas reconnues pour le type interval" +msgstr "Les unités « %s » ne sont pas reconnues pour le type interval" #: utils/adt/trigfuncs.c:42 #, c-format msgid "suppress_redundant_updates_trigger: must be called as trigger" -msgstr "suppress_redundant_updates_trigger : doit être appelé par un trigger" +msgstr "suppress_redundant_updates_trigger : doit être appelé par un trigger" #: utils/adt/trigfuncs.c:48 #, c-format msgid "suppress_redundant_updates_trigger: must be called on update" -msgstr "suppress_redundant_updates_trigger : doit être appelé sur une mise à jour" +msgstr "suppress_redundant_updates_trigger : doit être appelé sur une mise à jour" #: utils/adt/trigfuncs.c:54 #, c-format msgid "suppress_redundant_updates_trigger: must be called before update" -msgstr "suppress_redundant_updates_trigger : doit être appelé avant une mise à jour" +msgstr "suppress_redundant_updates_trigger : doit être appelé avant une mise à jour" #: utils/adt/trigfuncs.c:60 #, c-format msgid "suppress_redundant_updates_trigger: must be called for each row" -msgstr "suppress_redundant_updates_trigger : doit être appelé pour chaque ligne" +msgstr "suppress_redundant_updates_trigger : doit être appelé pour chaque ligne" #: utils/adt/tsgistidx.c:99 #, c-format msgid "gtsvector_in not implemented" -msgstr "gtsvector_in n'est pas encore implémenté" +msgstr "gtsvector_in n'est pas encore implémenté" #: utils/adt/tsquery.c:166 #, c-format msgid "distance in phrase operator should not be greater than %d" -msgstr "la distance dans l'opérateur de phrase ne devrait pas être plus que %d" +msgstr "la distance dans l'opérateur de phrase ne devrait pas être plus que %d" #: utils/adt/tsquery.c:254 utils/adt/tsquery.c:513 utils/adt/tsvector_parser.c:141 #, c-format msgid "syntax error in tsquery: \"%s\"" -msgstr "erreur de syntaxe dans tsquery : « %s »" +msgstr "erreur de syntaxe dans tsquery : « %s »" #: utils/adt/tsquery.c:275 #, c-format msgid "no operand in tsquery: \"%s\"" -msgstr "aucun opérande dans tsquery : « %s »" +msgstr "aucun opérande dans tsquery : « %s »" #: utils/adt/tsquery.c:358 #, c-format msgid "value is too big in tsquery: \"%s\"" -msgstr "valeur trop importante dans tsquery : « %s »" +msgstr "valeur trop importante dans tsquery : « %s »" #: utils/adt/tsquery.c:363 #, c-format msgid "operand is too long in tsquery: \"%s\"" -msgstr "l'opérande est trop long dans tsquery : « %s »" +msgstr "l'opérande est trop long dans tsquery : « %s »" #: utils/adt/tsquery.c:391 #, c-format msgid "word is too long in tsquery: \"%s\"" -msgstr "le mot est trop long dans tsquery : « %s »" +msgstr "le mot est trop long dans tsquery : « %s »" -#: utils/adt/tsquery.c:643 +#: utils/adt/tsquery.c:642 #, c-format msgid "text-search query doesn't contain lexemes: \"%s\"" -msgstr "la requête de recherche plein texte ne contient pas de lexemes : « %s »" +msgstr "la requête de recherche plein texte ne contient pas de lexemes : « %s »" -#: utils/adt/tsquery.c:654 utils/adt/tsquery_util.c:347 +#: utils/adt/tsquery.c:653 utils/adt/tsquery_util.c:375 #, c-format msgid "tsquery is too large" msgstr "le champ tsquery est trop gros" -#: utils/adt/tsquery_cleanup.c:601 +#: utils/adt/tsquery_cleanup.c:407 #, c-format msgid "text-search query contains only stop words or doesn't contain lexemes, ignored" msgstr "" -"la requête de recherche plein texte ne contient que des termes courants\n" -"ou ne contient pas de lexemes, ignoré" +"la requête de recherche plein texte ne contient que des termes courants\n" +"ou ne contient pas de lexemes, ignoré" #: utils/adt/tsquery_op.c:122 #, c-format msgid "distance in phrase operator should be non-negative and less than %d" -msgstr "la distance dans l'opérateur de phrase devrait pas positif et inférieur à %d" +msgstr "la distance dans l'opérateur de phrase devrait pas positif et inférieur à %d" -#: utils/adt/tsquery_rewrite.c:292 +#: utils/adt/tsquery_rewrite.c:321 #, c-format msgid "ts_rewrite query must return two tsquery columns" -msgstr "la requête ts_rewrite doit renvoyer deux colonnes tsquery" +msgstr "la requête ts_rewrite doit renvoyer deux colonnes tsquery" #: utils/adt/tsrank.c:412 #, c-format msgid "array of weight must be one-dimensional" -msgstr "le tableau de poids doit être sur une seule dimension" +msgstr "le tableau de poids doit être sur une seule dimension" #: utils/adt/tsrank.c:417 #, c-format @@ -20496,161 +20274,161 @@ msgstr "le mot est trop long (%ld octets, max %ld octets)" #: utils/adt/tsvector.c:220 #, c-format msgid "string is too long for tsvector (%ld bytes, max %ld bytes)" -msgstr "la chaîne est trop longue pour tsvector (%ld octets, max %ld octets)" +msgstr "la chaîne est trop longue pour tsvector (%ld octets, max %ld octets)" -#: utils/adt/tsvector_op.c:321 utils/adt/tsvector_op.c:608 utils/adt/tsvector_op.c:776 +#: utils/adt/tsvector_op.c:322 utils/adt/tsvector_op.c:609 utils/adt/tsvector_op.c:777 #, c-format msgid "lexeme array may not contain nulls" -msgstr "le tableau de lexème ne doit pas contenir de valeurs NULL" +msgstr "le tableau de lexème ne doit pas contenir de valeurs NULL" -#: utils/adt/tsvector_op.c:851 +#: utils/adt/tsvector_op.c:852 #, c-format msgid "weight array may not contain nulls" msgstr "le tableau de poids ne doit pas contenir de valeurs NULL" -#: utils/adt/tsvector_op.c:875 +#: utils/adt/tsvector_op.c:876 #, c-format msgid "unrecognized weight: \"%c\"" -msgstr "poids non reconnu : « %c »" +msgstr "poids non reconnu : « %c »" -#: utils/adt/tsvector_op.c:2061 +#: utils/adt/tsvector_op.c:2313 #, c-format msgid "ts_stat query must return one tsvector column" -msgstr "la requête ts_stat doit renvoyer une colonne tsvector" +msgstr "la requête ts_stat doit renvoyer une colonne tsvector" -#: utils/adt/tsvector_op.c:2243 +#: utils/adt/tsvector_op.c:2495 #, c-format msgid "tsvector column \"%s\" does not exist" -msgstr "la colonne tsvector « %s » n'existe pas" +msgstr "la colonne tsvector « %s » n'existe pas" -#: utils/adt/tsvector_op.c:2249 +#: utils/adt/tsvector_op.c:2501 #, c-format msgid "column \"%s\" is not of tsvector type" -msgstr "la colonne « %s » n'est pas de type tsvector" +msgstr "la colonne « %s » n'est pas de type tsvector" -#: utils/adt/tsvector_op.c:2261 +#: utils/adt/tsvector_op.c:2513 #, c-format msgid "configuration column \"%s\" does not exist" -msgstr "la colonne de configuration « %s » n'existe pas" +msgstr "la colonne de configuration « %s » n'existe pas" -#: utils/adt/tsvector_op.c:2267 +#: utils/adt/tsvector_op.c:2519 #, c-format msgid "column \"%s\" is not of regconfig type" -msgstr "la colonne « %s » n'est pas de type regconfig" +msgstr "la colonne « %s » n'est pas de type regconfig" -#: utils/adt/tsvector_op.c:2274 +#: utils/adt/tsvector_op.c:2526 #, c-format msgid "configuration column \"%s\" must not be null" -msgstr "la colonne de configuration « %s » ne doit pas être NULL" +msgstr "la colonne de configuration « %s » ne doit pas être NULL" -#: utils/adt/tsvector_op.c:2287 +#: utils/adt/tsvector_op.c:2539 #, c-format msgid "text search configuration name \"%s\" must be schema-qualified" msgstr "" -"le nom de la configuration de la recherche plein texte « %s » doit être\n" -"qualifié par son schéma" +"le nom de la configuration de la recherche plein texte « %s » doit être\n" +"qualifié par son schéma" -#: utils/adt/tsvector_op.c:2312 +#: utils/adt/tsvector_op.c:2564 #, c-format msgid "column \"%s\" is not of a character type" -msgstr "la colonne « %s » n'est pas de type caractère" +msgstr "la colonne « %s » n'est pas de type caractère" #: utils/adt/tsvector_parser.c:142 #, c-format msgid "syntax error in tsvector: \"%s\"" -msgstr "erreur de syntaxe dans tsvector : « %s »" +msgstr "erreur de syntaxe dans tsvector : « %s »" #: utils/adt/tsvector_parser.c:207 #, c-format msgid "there is no escaped character: \"%s\"" -msgstr "il n'existe pas de caractères d'échappement : « %s »" +msgstr "il n'existe pas de caractères d'échappement : « %s »" #: utils/adt/tsvector_parser.c:324 #, c-format msgid "wrong position info in tsvector: \"%s\"" -msgstr "mauvaise information de position dans tsvector : « %s »" +msgstr "mauvaise information de position dans tsvector : « %s »" #: utils/adt/txid.c:339 #, c-format msgid "invalid input syntax for type txid_snapshot: \"%s\"" -msgstr "syntaxe en entrée invalide pour le type txid_snapshot : « %s »" +msgstr "syntaxe en entrée invalide pour le type txid_snapshot : « %s »" #: utils/adt/txid.c:534 #, c-format msgid "invalid external txid_snapshot data" -msgstr "valeur externe « txid_snapshot » invalide" +msgstr "valeur externe « txid_snapshot » invalide" #: utils/adt/uuid.c:145 #, c-format msgid "invalid input syntax for uuid: \"%s\"" -msgstr "syntaxe invalide en entrée pour l'uuid : « %s »" +msgstr "syntaxe invalide en entrée pour l'uuid : « %s »" #: utils/adt/varbit.c:57 utils/adt/varchar.c:50 #, c-format msgid "length for type %s must be at least 1" -msgstr "la longueur du type %s doit être d'au moins 1" +msgstr "la longueur du type %s doit être d'au moins 1" #: utils/adt/varbit.c:62 utils/adt/varchar.c:54 #, c-format msgid "length for type %s cannot exceed %d" -msgstr "la longueur du type %s ne peut pas excéder %d" +msgstr "la longueur du type %s ne peut pas excéder %d" #: utils/adt/varbit.c:163 utils/adt/varbit.c:475 utils/adt/varbit.c:973 #, c-format msgid "bit string length exceeds the maximum allowed (%d)" -msgstr "la taille du tableau de bits dépasse le maximum permis (%d)" +msgstr "la taille du tableau de bits dépasse le maximum permis (%d)" #: utils/adt/varbit.c:177 utils/adt/varbit.c:320 utils/adt/varbit.c:377 #, c-format msgid "bit string length %d does not match type bit(%d)" -msgstr "la longueur (en bits) de la chaîne %d ne doit pas correspondre au type bit(%d)" +msgstr "la longueur (en bits) de la chaîne %d ne doit pas correspondre au type bit(%d)" #: utils/adt/varbit.c:199 utils/adt/varbit.c:511 #, c-format msgid "\"%c\" is not a valid binary digit" -msgstr "« %c » n'est pas un chiffre binaire valide" +msgstr "« %c » n'est pas un chiffre binaire valide" #: utils/adt/varbit.c:224 utils/adt/varbit.c:536 #, c-format msgid "\"%c\" is not a valid hexadecimal digit" -msgstr "« %c » n'est pas un chiffre hexadécimal valide" +msgstr "« %c » n'est pas un chiffre hexadécimal valide" #: utils/adt/varbit.c:311 utils/adt/varbit.c:627 #, c-format msgid "invalid length in external bit string" -msgstr "longueur invalide dans la chaîne bit externe" +msgstr "longueur invalide dans la chaîne bit externe" #: utils/adt/varbit.c:489 utils/adt/varbit.c:636 utils/adt/varbit.c:731 #, c-format msgid "bit string too long for type bit varying(%d)" -msgstr "la chaîne bit est trop longue pour le type bit varying(%d)" +msgstr "la chaîne bit est trop longue pour le type bit varying(%d)" #: utils/adt/varbit.c:1066 utils/adt/varbit.c:1168 utils/adt/varlena.c:842 utils/adt/varlena.c:906 utils/adt/varlena.c:1050 utils/adt/varlena.c:2735 utils/adt/varlena.c:2802 #, c-format msgid "negative substring length not allowed" -msgstr "longueur de sous-chaîne négative non autorisée" +msgstr "longueur de sous-chaîne négative non autorisée" #: utils/adt/varbit.c:1226 #, c-format msgid "cannot AND bit strings of different sizes" -msgstr "ne peut pas utiliser l'opérateur AND sur des chaînes bit de tailles différentes" +msgstr "ne peut pas utiliser l'opérateur AND sur des chaînes bit de tailles différentes" #: utils/adt/varbit.c:1268 #, c-format msgid "cannot OR bit strings of different sizes" -msgstr "ne peut pas utiliser l'opérateur OR sur des chaînes bit de tailles différentes" +msgstr "ne peut pas utiliser l'opérateur OR sur des chaînes bit de tailles différentes" #: utils/adt/varbit.c:1315 #, c-format msgid "cannot XOR bit strings of different sizes" -msgstr "ne peut pas utiliser l'opérateur XOR sur des chaînes bit de tailles différentes" +msgstr "ne peut pas utiliser l'opérateur XOR sur des chaînes bit de tailles différentes" -#: utils/adt/varbit.c:1793 utils/adt/varbit.c:1851 +#: utils/adt/varbit.c:1803 utils/adt/varbit.c:1861 #, c-format msgid "bit index %d out of valid range (0..%d)" msgstr "index de bit %d en dehors des limites valides (0..%d)" -#: utils/adt/varbit.c:1802 utils/adt/varlena.c:3002 +#: utils/adt/varbit.c:1812 utils/adt/varlena.c:3002 #, c-format msgid "new bit must be 0 or 1" msgstr "le nouveau bit doit valoir soit 0 soit 1" @@ -20668,17 +20446,17 @@ msgstr "valeur trop longue pour le type character varying(%d)" #: utils/adt/varlena.c:1420 utils/adt/varlena.c:1825 #, c-format msgid "could not determine which collation to use for string comparison" -msgstr "n'a pas pu déterminer le collationnement à utiliser pour la comparaison de chaîne" +msgstr "n'a pas pu déterminer le collationnement à utiliser pour la comparaison de chaîne" #: utils/adt/varlena.c:1478 utils/adt/varlena.c:1491 #, c-format msgid "could not convert string to UTF-16: error code %lu" -msgstr "n'a pas pu convertir la chaîne en UTF-16 : erreur %lu" +msgstr "n'a pas pu convertir la chaîne en UTF-16 : erreur %lu" #: utils/adt/varlena.c:1506 #, c-format msgid "could not compare Unicode strings: %m" -msgstr "n'a pas pu comparer les chaînes unicode : %m" +msgstr "n'a pas pu comparer les chaînes unicode : %m" #: utils/adt/varlena.c:2880 utils/adt/varlena.c:2911 utils/adt/varlena.c:2947 utils/adt/varlena.c:2990 #, c-format @@ -20688,12 +20466,12 @@ msgstr "index %d en dehors des limites valides, 0..%d" #: utils/adt/varlena.c:3925 #, c-format msgid "field position must be greater than zero" -msgstr "la position du champ doit être plus grand que zéro" +msgstr "la position du champ doit être plus grand que zéro" #: utils/adt/varlena.c:4804 #, c-format msgid "unterminated format() type specifier" -msgstr "spécificateur de type pour format() non terminé" +msgstr "spécificateur de type pour format() non terminé" #: utils/adt/varlena.c:4805 utils/adt/varlena.c:4939 utils/adt/varlena.c:5060 #, c-format @@ -20703,7 +20481,7 @@ msgstr "Pour un unique \"%%\" utilisez \"%%%%\"." #: utils/adt/varlena.c:4937 utils/adt/varlena.c:5058 #, c-format msgid "unrecognized format() type specifier \"%c\"" -msgstr "spécificateur de type « %c » pour format() non reconnu" +msgstr "spécificateur de type « %c » pour format() non reconnu" #: utils/adt/varlena.c:4950 utils/adt/varlena.c:5007 #, c-format @@ -20718,173 +20496,173 @@ msgstr "le nombre est en dehors des limites" #: utils/adt/varlena.c:5166 utils/adt/varlena.c:5194 #, c-format msgid "format specifies argument 0, but arguments are numbered from 1" -msgstr "le format indique l'argument 0 mais les arguments sont numérotés à partir de 1" +msgstr "le format indique l'argument 0 mais les arguments sont numérotés à partir de 1" #: utils/adt/varlena.c:5187 #, c-format msgid "width argument position must be ended by \"$\"" -msgstr "la position de l'argument width doit se terminer par « $ »" +msgstr "la position de l'argument width doit se terminer par « $ »" #: utils/adt/varlena.c:5232 #, c-format msgid "null values cannot be formatted as an SQL identifier" -msgstr "les valeurs NULL ne peuvent pas être formatés comme un identifiant SQL" +msgstr "les valeurs NULL ne peuvent pas être formatés comme un identifiant SQL" #: utils/adt/windowfuncs.c:243 #, c-format msgid "argument of ntile must be greater than zero" -msgstr "l'argument de ntile doit être supérieur à zéro" +msgstr "l'argument de ntile doit être supérieur à zéro" #: utils/adt/windowfuncs.c:465 #, c-format msgid "argument of nth_value must be greater than zero" -msgstr "l'argument de nth_value doit être supérieur à zéro" +msgstr "l'argument de nth_value doit être supérieur à zéro" -#: utils/adt/xml.c:171 +#: utils/adt/xml.c:175 #, c-format msgid "unsupported XML feature" -msgstr "fonctionnalité XML non supportée" +msgstr "fonctionnalité XML non supportée" -#: utils/adt/xml.c:172 +#: utils/adt/xml.c:176 #, c-format msgid "This functionality requires the server to be built with libxml support." -msgstr "Cette fonctionnalité nécessite que le serveur dispose du support de libxml." +msgstr "Cette fonctionnalité nécessite que le serveur dispose du support de libxml." -#: utils/adt/xml.c:173 +#: utils/adt/xml.c:177 #, c-format msgid "You need to rebuild PostgreSQL using --with-libxml." msgstr "Vous devez recompiler PostgreSQL en utilisant --with-libxml." -#: utils/adt/xml.c:192 utils/mb/mbutils.c:523 +#: utils/adt/xml.c:196 utils/mb/mbutils.c:523 #, c-format msgid "invalid encoding name \"%s\"" -msgstr "nom d'encodage « %s » invalide" +msgstr "nom d'encodage « %s » invalide" -#: utils/adt/xml.c:435 utils/adt/xml.c:440 +#: utils/adt/xml.c:439 utils/adt/xml.c:444 #, c-format msgid "invalid XML comment" msgstr "commentaire XML invalide" -#: utils/adt/xml.c:569 +#: utils/adt/xml.c:573 #, c-format msgid "not an XML document" msgstr "pas un document XML" -#: utils/adt/xml.c:728 utils/adt/xml.c:751 +#: utils/adt/xml.c:732 utils/adt/xml.c:755 #, c-format msgid "invalid XML processing instruction" msgstr "instruction de traitement XML invalide" -#: utils/adt/xml.c:729 +#: utils/adt/xml.c:733 #, c-format msgid "XML processing instruction target name cannot be \"%s\"." -msgstr "le nom de cible de l'instruction de traitement XML ne peut pas être « %s »." +msgstr "le nom de cible de l'instruction de traitement XML ne peut pas être « %s »." -#: utils/adt/xml.c:752 +#: utils/adt/xml.c:756 #, c-format msgid "XML processing instruction cannot contain \"?>\"." -msgstr "l'instruction de traitement XML ne peut pas contenir « ?> »." +msgstr "l'instruction de traitement XML ne peut pas contenir « ?> »." -#: utils/adt/xml.c:831 +#: utils/adt/xml.c:835 #, c-format msgid "xmlvalidate is not implemented" -msgstr "xmlvalidate n'est pas implémenté" +msgstr "xmlvalidate n'est pas implémenté" -#: utils/adt/xml.c:910 +#: utils/adt/xml.c:914 #, c-format msgid "could not initialize XML library" -msgstr "n'a pas pu initialiser la bibliothèque XML" +msgstr "n'a pas pu initialiser la bibliothèque XML" -#: utils/adt/xml.c:911 +#: utils/adt/xml.c:915 #, c-format msgid "libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u." msgstr "" -"libxml2 a un type de caractère incompatible : sizeof(char)=%u,\n" +"libxml2 a un type de caractère incompatible : sizeof(char)=%u,\n" "sizeof(xmlChar)=%u." -#: utils/adt/xml.c:997 +#: utils/adt/xml.c:1001 #, c-format msgid "could not set up XML error handler" msgstr "n'a pas pu configurer le gestionnaire d'erreurs XML" -#: utils/adt/xml.c:998 +#: utils/adt/xml.c:1002 #, c-format msgid "This probably indicates that the version of libxml2 being used is not compatible with the libxml2 header files that PostgreSQL was built with." msgstr "" "Ceci indique probablement que la version de libxml2 en cours d'utilisation\n" -"n'est pas compatible avec les fichiers d'en-tête de libxml2 avec lesquels\n" -"PostgreSQL a été construit." +"n'est pas compatible avec les fichiers d'en-tête de libxml2 avec lesquels\n" +"PostgreSQL a été construit." -#: utils/adt/xml.c:1735 +#: utils/adt/xml.c:1739 msgid "Invalid character value." -msgstr "Valeur invalide pour le caractère." +msgstr "Valeur invalide pour le caractère." -#: utils/adt/xml.c:1738 +#: utils/adt/xml.c:1742 msgid "Space required." msgstr "Espace requis." -#: utils/adt/xml.c:1741 +#: utils/adt/xml.c:1745 msgid "standalone accepts only 'yes' or 'no'." msgstr "la version autonome accepte seulement 'yes' et 'no'." -#: utils/adt/xml.c:1744 +#: utils/adt/xml.c:1748 msgid "Malformed declaration: missing version." -msgstr "Déclaration mal formée : version manquante." +msgstr "Déclaration mal formée : version manquante." -#: utils/adt/xml.c:1747 +#: utils/adt/xml.c:1751 msgid "Missing encoding in text declaration." -msgstr "Encodage manquant dans la déclaration du texte." +msgstr "Encodage manquant dans la déclaration du texte." -#: utils/adt/xml.c:1750 +#: utils/adt/xml.c:1754 msgid "Parsing XML declaration: '?>' expected." -msgstr "Analyse de la déclaration XML : « ?> » attendu." +msgstr "Analyse de la déclaration XML : « ?> » attendu." -#: utils/adt/xml.c:1753 +#: utils/adt/xml.c:1757 #, c-format msgid "Unrecognized libxml error code: %d." msgstr "code d'erreur libxml inconnu : %d" -#: utils/adt/xml.c:2028 +#: utils/adt/xml.c:2032 #, c-format msgid "XML does not support infinite date values." msgstr "XML ne supporte pas les valeurs infinies de date." -#: utils/adt/xml.c:2050 utils/adt/xml.c:2077 +#: utils/adt/xml.c:2054 utils/adt/xml.c:2081 #, c-format msgid "XML does not support infinite timestamp values." msgstr "XML ne supporte pas les valeurs infinies de timestamp." -#: utils/adt/xml.c:2468 +#: utils/adt/xml.c:2481 #, c-format msgid "invalid query" -msgstr "requête invalide" +msgstr "requête invalide" -#: utils/adt/xml.c:3793 +#: utils/adt/xml.c:3806 #, c-format msgid "invalid array for XML namespace mapping" msgstr "tableau invalide pour la correspondance de l'espace de nom XML" -#: utils/adt/xml.c:3794 +#: utils/adt/xml.c:3807 #, c-format msgid "The array must be two-dimensional with length of the second axis equal to 2." msgstr "" "Le tableau doit avoir deux dimensions avec une longueur de 2 pour le\n" -"deuxième axe." +"deuxième axe." -#: utils/adt/xml.c:3818 +#: utils/adt/xml.c:3831 #, c-format msgid "empty XPath expression" msgstr "expression XPath vide" -#: utils/adt/xml.c:3867 +#: utils/adt/xml.c:3880 #, c-format msgid "neither namespace name nor URI may be null" -msgstr "ni le nom de l'espace de noms ni l'URI ne peuvent être NULL" +msgstr "ni le nom de l'espace de noms ni l'URI ne peuvent être NULL" -#: utils/adt/xml.c:3874 +#: utils/adt/xml.c:3887 #, c-format msgid "could not register XML namespace with name \"%s\" and URI \"%s\"" -msgstr "n'a pas pu enregistrer l'espace de noms XML de nom « %s » et d'URI « %s »" +msgstr "n'a pas pu enregistrer l'espace de noms XML de nom « %s » et d'URI « %s »" #: utils/cache/lsyscache.c:2580 utils/cache/lsyscache.c:2613 utils/cache/lsyscache.c:2646 utils/cache/lsyscache.c:2679 #, c-format @@ -20894,76 +20672,76 @@ msgstr "le type %s est seulement un shell" #: utils/cache/lsyscache.c:2585 #, c-format msgid "no input function available for type %s" -msgstr "aucune fonction en entrée disponible pour le type %s" +msgstr "aucune fonction en entrée disponible pour le type %s" #: utils/cache/lsyscache.c:2618 #, c-format msgid "no output function available for type %s" msgstr "aucune fonction en sortie disponible pour le type %s" -#: utils/cache/plancache.c:716 +#: utils/cache/plancache.c:718 #, c-format msgid "cached plan must not change result type" -msgstr "le plan en cache ne doit pas modifier le type en résultat" +msgstr "le plan en cache ne doit pas modifier le type en résultat" -#: utils/cache/relcache.c:5199 +#: utils/cache/relcache.c:5226 #, c-format msgid "could not create relation-cache initialization file \"%s\": %m" -msgstr "n'a pas pu créer le fichier d'initialisation relation-cache « %s » : %m" +msgstr "n'a pas pu créer le fichier d'initialisation relation-cache « %s » : %m" -#: utils/cache/relcache.c:5201 +#: utils/cache/relcache.c:5228 #, c-format msgid "Continuing anyway, but there's something wrong." -msgstr "Continue malgré tout, mais quelque chose s'est mal passé." +msgstr "Continue malgré tout, mais quelque chose s'est mal passé." -#: utils/cache/relcache.c:5475 +#: utils/cache/relcache.c:5502 #, c-format msgid "could not remove cache file \"%s\": %m" -msgstr "n'a pas pu supprimer le fichier cache « %s » : %m" +msgstr "n'a pas pu supprimer le fichier cache « %s » : %m" #: utils/cache/relmapper.c:508 #, c-format msgid "cannot PREPARE a transaction that modified relation mapping" msgstr "" -"ne peut pas préparer (PREPARE) une transaction qui a modifié la correspondance\n" +"ne peut pas préparer (PREPARE) une transaction qui a modifié la correspondance\n" "de relation" #: utils/cache/relmapper.c:651 utils/cache/relmapper.c:751 #, c-format msgid "could not open relation mapping file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier de correspondance des relations « %s » : %m" +msgstr "n'a pas pu ouvrir le fichier de correspondance des relations « %s » : %m" #: utils/cache/relmapper.c:664 #, c-format msgid "could not read relation mapping file \"%s\": %m" -msgstr "n'a pas pu lire le fichier de correspondance des relations « %s » : %m" +msgstr "n'a pas pu lire le fichier de correspondance des relations « %s » : %m" #: utils/cache/relmapper.c:674 #, c-format msgid "relation mapping file \"%s\" contains invalid data" -msgstr "le fichier de correspondance des relations « %s » contient des données invalides" +msgstr "le fichier de correspondance des relations « %s » contient des données invalides" #: utils/cache/relmapper.c:684 #, c-format msgid "relation mapping file \"%s\" contains incorrect checksum" msgstr "" -"le fichier de correspondance des relations « %s » contient une somme de\n" -"contrôle incorrecte" +"le fichier de correspondance des relations « %s » contient une somme de\n" +"contrôle incorrecte" #: utils/cache/relmapper.c:784 #, c-format msgid "could not write to relation mapping file \"%s\": %m" -msgstr "n'a pas pu écrire le fichier de correspondance des relations « %s » : %m" +msgstr "n'a pas pu écrire le fichier de correspondance des relations « %s » : %m" #: utils/cache/relmapper.c:797 #, c-format msgid "could not fsync relation mapping file \"%s\": %m" -msgstr "n'a pas pu synchroniser (fsync) le fichier de correspondance des relations « %s » : %m" +msgstr "n'a pas pu synchroniser (fsync) le fichier de correspondance des relations « %s » : %m" #: utils/cache/relmapper.c:803 #, c-format msgid "could not close relation mapping file \"%s\": %m" -msgstr "n'a pas pu fermer le fichier de correspondance des relations « %s » : %m" +msgstr "n'a pas pu fermer le fichier de correspondance des relations « %s » : %m" #: utils/cache/typcache.c:1207 #, c-format @@ -20973,7 +20751,7 @@ msgstr "le type %s n'est pas un type composite" #: utils/cache/typcache.c:1221 #, c-format msgid "record type has not been registered" -msgstr "le type d'enregistrement n'a pas été enregistré" +msgstr "le type d'enregistrement n'a pas été enregistré" #: utils/error/assert.c:34 #, c-format @@ -20983,224 +20761,224 @@ msgstr "TRAP : ExceptionalCondition : mauvais arguments\n" #: utils/error/assert.c:37 #, c-format msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n" -msgstr "TRAP : %s(« %s », fichier : « %s », ligne : %d)\n" +msgstr "TRAP : %s(« %s », fichier : « %s », ligne : %d)\n" #: utils/error/elog.c:322 utils/error/elog.c:1306 #, c-format msgid "error occurred at %s:%d before error message processing is available\n" msgstr "" -"erreur survenue à %s:%d avant que le traitement des messages d'erreurs ne\n" +"erreur survenue à %s:%d avant que le traitement des messages d'erreurs ne\n" "soit disponible\n" #: utils/error/elog.c:1889 #, c-format msgid "could not reopen file \"%s\" as stderr: %m" -msgstr "n'a pas pu ré-ouvrir le fichier « %s » comme stderr : %m" +msgstr "n'a pas pu ré-ouvrir le fichier « %s » comme stderr : %m" #: utils/error/elog.c:1902 #, c-format msgid "could not reopen file \"%s\" as stdout: %m" -msgstr "n'a pas pu ré-ouvrir le fichier « %s » comme stdout : %m" +msgstr "n'a pas pu ré-ouvrir le fichier « %s » comme stdout : %m" #: utils/error/elog.c:2389 utils/error/elog.c:2406 utils/error/elog.c:2422 msgid "[unknown]" msgstr "[inconnu]" -#: utils/error/elog.c:2881 utils/error/elog.c:3184 utils/error/elog.c:3292 +#: utils/error/elog.c:2882 utils/error/elog.c:3185 utils/error/elog.c:3293 msgid "missing error text" msgstr "texte d'erreur manquant" -#: utils/error/elog.c:2884 utils/error/elog.c:2887 utils/error/elog.c:3295 utils/error/elog.c:3298 +#: utils/error/elog.c:2885 utils/error/elog.c:2888 utils/error/elog.c:3296 utils/error/elog.c:3299 #, c-format msgid " at character %d" -msgstr " au caractère %d" +msgstr " au caractère %d" -#: utils/error/elog.c:2897 utils/error/elog.c:2904 +#: utils/error/elog.c:2898 utils/error/elog.c:2905 msgid "DETAIL: " -msgstr "DÉTAIL: " +msgstr "DÉTAIL: " -#: utils/error/elog.c:2911 +#: utils/error/elog.c:2912 msgid "HINT: " msgstr "ASTUCE : " -#: utils/error/elog.c:2918 +#: utils/error/elog.c:2919 msgid "QUERY: " -msgstr "REQUÊTE : " +msgstr "REQUÊTE : " -#: utils/error/elog.c:2925 +#: utils/error/elog.c:2926 msgid "CONTEXT: " msgstr "CONTEXTE : " -#: utils/error/elog.c:2935 +#: utils/error/elog.c:2936 #, c-format msgid "LOCATION: %s, %s:%d\n" msgstr "EMPLACEMENT : %s, %s:%d\n" -#: utils/error/elog.c:2942 +#: utils/error/elog.c:2943 #, c-format msgid "LOCATION: %s:%d\n" msgstr "EMPLACEMENT : %s:%d\n" -#: utils/error/elog.c:2956 +#: utils/error/elog.c:2957 msgid "STATEMENT: " msgstr "INSTRUCTION : " #. translator: This string will be truncated at 47 #. characters expanded. -#: utils/error/elog.c:3413 +#: utils/error/elog.c:3414 #, c-format msgid "operating system error %d" -msgstr "erreur %d du système d'exploitation" +msgstr "erreur %d du système d'exploitation" -#: utils/error/elog.c:3611 +#: utils/error/elog.c:3612 msgid "DEBUG" msgstr "DEBUG" -#: utils/error/elog.c:3615 +#: utils/error/elog.c:3616 msgid "LOG" msgstr "LOG" -#: utils/error/elog.c:3618 +#: utils/error/elog.c:3619 msgid "INFO" msgstr "INFO" -#: utils/error/elog.c:3621 +#: utils/error/elog.c:3622 msgid "NOTICE" msgstr "NOTICE" -#: utils/error/elog.c:3624 +#: utils/error/elog.c:3625 msgid "WARNING" msgstr "ATTENTION" -#: utils/error/elog.c:3627 +#: utils/error/elog.c:3628 msgid "ERROR" msgstr "ERREUR" -#: utils/error/elog.c:3630 +#: utils/error/elog.c:3631 msgid "FATAL" msgstr "FATAL" -#: utils/error/elog.c:3633 +#: utils/error/elog.c:3634 msgid "PANIC" msgstr "PANIC" #: utils/fmgr/dfmgr.c:117 #, c-format msgid "could not find function \"%s\" in file \"%s\"" -msgstr "n'a pas pu trouver la fonction « %s » dans le fichier « %s »" +msgstr "n'a pas pu trouver la fonction « %s » dans le fichier « %s »" #: utils/fmgr/dfmgr.c:196 utils/fmgr/dfmgr.c:405 utils/fmgr/dfmgr.c:453 #, c-format msgid "could not access file \"%s\": %m" -msgstr "n'a pas pu accéder au fichier « %s » : %m" +msgstr "n'a pas pu accéder au fichier « %s » : %m" #: utils/fmgr/dfmgr.c:234 #, c-format msgid "could not load library \"%s\": %s" -msgstr "n'a pas pu charger la bibliothèque « %s » : %s" +msgstr "n'a pas pu charger la bibliothèque « %s » : %s" #: utils/fmgr/dfmgr.c:266 #, c-format msgid "incompatible library \"%s\": missing magic block" -msgstr "bibliothèque « %s » incompatible : bloc magique manquant" +msgstr "bibliothèque « %s » incompatible : bloc magique manquant" #: utils/fmgr/dfmgr.c:268 #, c-format msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro." msgstr "" -"Les bibliothèques étendues nécessitent l'utilisation de la macro\n" +"Les bibliothèques étendues nécessitent l'utilisation de la macro\n" "PG_MODULE_MAGIC." #: utils/fmgr/dfmgr.c:304 #, c-format msgid "incompatible library \"%s\": version mismatch" -msgstr "bibliothèque « %s » incompatible : versions différentes" +msgstr "bibliothèque « %s » incompatible : versions différentes" #: utils/fmgr/dfmgr.c:306 #, c-format msgid "Server is version %d.%d, library is version %d.%d." -msgstr "La version du serveur est %d.%d, celle de la bibliothèque est %d.%d." +msgstr "La version du serveur est %d.%d, celle de la bibliothèque est %d.%d." #: utils/fmgr/dfmgr.c:325 #, c-format msgid "Server has FUNC_MAX_ARGS = %d, library has %d." -msgstr "Le serveur a FUNC_MAX_ARGS = %d, la bibliothèque a %d." +msgstr "Le serveur a FUNC_MAX_ARGS = %d, la bibliothèque a %d." #: utils/fmgr/dfmgr.c:334 #, c-format msgid "Server has INDEX_MAX_KEYS = %d, library has %d." -msgstr "Le serveur a INDEX_MAX_KEYS = %d, la bibliothèque a %d." +msgstr "Le serveur a INDEX_MAX_KEYS = %d, la bibliothèque a %d." #: utils/fmgr/dfmgr.c:343 #, c-format msgid "Server has NAMEDATALEN = %d, library has %d." -msgstr "Le serveur a NAMEDATALEN = %d, la bibliothèque a %d." +msgstr "Le serveur a NAMEDATALEN = %d, la bibliothèque a %d." #: utils/fmgr/dfmgr.c:352 #, c-format msgid "Server has FLOAT4PASSBYVAL = %s, library has %s." -msgstr "Le serveur a FLOAT4PASSBYVAL = %s, la bibliothèque a %s." +msgstr "Le serveur a FLOAT4PASSBYVAL = %s, la bibliothèque a %s." #: utils/fmgr/dfmgr.c:361 #, c-format msgid "Server has FLOAT8PASSBYVAL = %s, library has %s." -msgstr "Le serveur a FLOAT8PASSBYVAL = %s, la bibliothèque a %s." +msgstr "Le serveur a FLOAT8PASSBYVAL = %s, la bibliothèque a %s." #: utils/fmgr/dfmgr.c:368 msgid "Magic block has unexpected length or padding difference." -msgstr "Le bloc magique a une longueur inattendue ou une différence de padding." +msgstr "Le bloc magique a une longueur inattendue ou une différence de padding." #: utils/fmgr/dfmgr.c:371 #, c-format msgid "incompatible library \"%s\": magic block mismatch" -msgstr "bibliothèque « %s » incompatible : différences dans le bloc magique" +msgstr "bibliothèque « %s » incompatible : différences dans le bloc magique" #: utils/fmgr/dfmgr.c:535 #, c-format msgid "access to library \"%s\" is not allowed" -msgstr "l'accès à la bibliothèque « %s » n'est pas autorisé" +msgstr "l'accès à la bibliothèque « %s » n'est pas autorisé" #: utils/fmgr/dfmgr.c:561 #, c-format msgid "invalid macro name in dynamic library path: %s" -msgstr "nom de macro invalide dans le chemin des bibliothèques partagées : %s" +msgstr "nom de macro invalide dans le chemin des bibliothèques partagées : %s" #: utils/fmgr/dfmgr.c:601 #, c-format msgid "zero-length component in parameter \"dynamic_library_path\"" -msgstr "composant de longueur zéro dans le paramètre « dynamic_library_path »" +msgstr "composant de longueur zéro dans le paramètre « dynamic_library_path »" #: utils/fmgr/dfmgr.c:620 #, c-format msgid "component in parameter \"dynamic_library_path\" is not an absolute path" -msgstr "Un composant du paramètre « dynamic_library_path » n'est pas un chemin absolu" +msgstr "Un composant du paramètre « dynamic_library_path » n'est pas un chemin absolu" #: utils/fmgr/fmgr.c:272 #, c-format msgid "internal function \"%s\" is not in internal lookup table" -msgstr "la fonction interne « %s » n'est pas dans une table de recherche interne" +msgstr "la fonction interne « %s » n'est pas dans une table de recherche interne" #: utils/fmgr/fmgr.c:479 #, c-format msgid "unrecognized API version %d reported by info function \"%s\"" -msgstr "version API %d non reconnue mais rapportée par la fonction info « %s »" +msgstr "version API %d non reconnue mais rapportée par la fonction info « %s »" #: utils/fmgr/fmgr.c:849 utils/fmgr/fmgr.c:2106 #, c-format msgid "function %u has too many arguments (%d, maximum is %d)" -msgstr "la fonction %u a trop d'arguments (%d, le maximum étant %d)" +msgstr "la fonction %u a trop d'arguments (%d, le maximum étant %d)" #: utils/fmgr/fmgr.c:2527 #, c-format msgid "language validation function %u called for language %u instead of %u" -msgstr "fonction %u de validation du langage appelée pour le langage %u au lieu de %u" +msgstr "fonction %u de validation du langage appelée pour le langage %u au lieu de %u" #: utils/fmgr/funcapi.c:353 #, c-format msgid "could not determine actual result type for function \"%s\" declared to return type %s" msgstr "" -"n'a pas pu déterminer le type du résultat actuel pour la fonction « %s »\n" -"déclarant retourner le type %s" +"n'a pas pu déterminer le type du résultat actuel pour la fonction « %s »\n" +"déclarant retourner le type %s" #: utils/fmgr/funcapi.c:1340 utils/fmgr/funcapi.c:1371 #, c-format @@ -21210,237 +20988,237 @@ msgstr "le nombre d'alias ne correspond pas au nombre de colonnes" #: utils/fmgr/funcapi.c:1365 #, c-format msgid "no column alias was provided" -msgstr "aucun alias de colonne n'a été fourni" +msgstr "aucun alias de colonne n'a été fourni" #: utils/fmgr/funcapi.c:1389 #, c-format msgid "could not determine row description for function returning record" msgstr "" -"n'a pas pu déterminer la description de la ligne pour la fonction renvoyant\n" +"n'a pas pu déterminer la description de la ligne pour la fonction renvoyant\n" "l'enregistrement" #: utils/init/miscinit.c:121 #, c-format msgid "could not change directory to \"%s\": %m" -msgstr "n'a pas pu modifier le répertoire par « %s » : %m" +msgstr "n'a pas pu modifier le répertoire par « %s » : %m" -#: utils/init/miscinit.c:449 utils/misc/guc.c:6018 +#: utils/init/miscinit.c:449 utils/misc/guc.c:6016 #, c-format msgid "cannot set parameter \"%s\" within security-restricted operation" msgstr "" -"ne peut pas configurer le paramètre « %s » à l'intérieur d'une fonction\n" -"restreinte pour sécurité" +"ne peut pas configurer le paramètre « %s » à l'intérieur d'une fonction\n" +"restreinte pour sécurité" #: utils/init/miscinit.c:510 #, c-format msgid "role with OID %u does not exist" -msgstr "le rôle d'OID %u n'existe pas" +msgstr "le rôle d'OID %u n'existe pas" #: utils/init/miscinit.c:540 #, c-format msgid "role \"%s\" is not permitted to log in" -msgstr "le rôle « %s » n'est pas autorisé à se connecter" +msgstr "le rôle « %s » n'est pas autorisé à se connecter" #: utils/init/miscinit.c:558 #, c-format msgid "too many connections for role \"%s\"" -msgstr "trop de connexions pour le rôle « %s »" +msgstr "trop de connexions pour le rôle « %s »" #: utils/init/miscinit.c:618 #, c-format msgid "permission denied to set session authorization" -msgstr "droit refusé pour initialiser une autorisation de session" +msgstr "droit refusé pour initialiser une autorisation de session" #: utils/init/miscinit.c:701 #, c-format msgid "invalid role OID: %u" -msgstr "OID du rôle invalide : %u" +msgstr "OID du rôle invalide : %u" #: utils/init/miscinit.c:755 #, c-format msgid "database system is shut down" -msgstr "le système de base de données est arrêté" +msgstr "le système de base de données est arrêté" #: utils/init/miscinit.c:842 #, c-format msgid "could not create lock file \"%s\": %m" -msgstr "n'a pas pu créer le fichier verrou « %s » : %m" +msgstr "n'a pas pu créer le fichier verrou « %s » : %m" #: utils/init/miscinit.c:856 #, c-format msgid "could not open lock file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier verrou « %s » : %m" +msgstr "n'a pas pu ouvrir le fichier verrou « %s » : %m" #: utils/init/miscinit.c:862 #, c-format msgid "could not read lock file \"%s\": %m" -msgstr "n'a pas pu lire le fichier verrou « %s » : %m" +msgstr "n'a pas pu lire le fichier verrou « %s » : %m" #: utils/init/miscinit.c:870 #, c-format msgid "lock file \"%s\" is empty" -msgstr "le fichier verrou « %s » est vide" +msgstr "le fichier verrou « %s » est vide" #: utils/init/miscinit.c:871 #, c-format msgid "Either another server is starting, or the lock file is the remnant of a previous server startup crash." -msgstr "Soit un autre serveur est en cours de démarrage, soit le fichier verrou est un reste d'un précédent crash au démarrage du serveur" +msgstr "Soit un autre serveur est en cours de démarrage, soit le fichier verrou est un reste d'un précédent crash au démarrage du serveur" #: utils/init/miscinit.c:918 #, c-format msgid "lock file \"%s\" already exists" -msgstr "le fichier verrou « %s » existe déjà" +msgstr "le fichier verrou « %s » existe déjà" #: utils/init/miscinit.c:922 #, c-format msgid "Is another postgres (PID %d) running in data directory \"%s\"?" msgstr "" -"Un autre postgres (de PID %d) est-il déjà lancé avec comme répertoire de\n" -"données « %s » ?" +"Un autre postgres (de PID %d) est-il déjà lancé avec comme répertoire de\n" +"données « %s » ?" #: utils/init/miscinit.c:924 #, c-format msgid "Is another postmaster (PID %d) running in data directory \"%s\"?" msgstr "" -"Un autre postmaster (de PID %d) est-il déjà lancé avec comme répertoire de\n" -"données « %s » ?" +"Un autre postmaster (de PID %d) est-il déjà lancé avec comme répertoire de\n" +"données « %s » ?" #: utils/init/miscinit.c:927 #, c-format msgid "Is another postgres (PID %d) using socket file \"%s\"?" -msgstr "Un autre postgres (de PID %d) est-il déjà lancé en utilisant la socket « %s » ?" +msgstr "Un autre postgres (de PID %d) est-il déjà lancé en utilisant la socket « %s » ?" #: utils/init/miscinit.c:929 #, c-format msgid "Is another postmaster (PID %d) using socket file \"%s\"?" -msgstr "Un autre postmaster (de PID %d) est-il déjà lancé en utilisant la socket « %s » ?" +msgstr "Un autre postmaster (de PID %d) est-il déjà lancé en utilisant la socket « %s » ?" #: utils/init/miscinit.c:965 #, c-format msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use" msgstr "" -"le bloc de mémoire partagé pré-existant (clé %lu, ID %lu) est en cours\n" +"le bloc de mémoire partagé pré-existant (clé %lu, ID %lu) est en cours\n" "d'utilisation" #: utils/init/miscinit.c:968 #, c-format msgid "If you're sure there are no old server processes still running, remove the shared memory block or just delete the file \"%s\"." msgstr "" -"Si vous êtes sûr qu'aucun processus serveur n'est toujours en cours\n" -"d'exécution, supprimez le bloc de mémoire partagée\n" -"ou supprimez simplement le fichier « %s »." +"Si vous êtes sûr qu'aucun processus serveur n'est toujours en cours\n" +"d'exécution, supprimez le bloc de mémoire partagée\n" +"ou supprimez simplement le fichier « %s »." #: utils/init/miscinit.c:984 #, c-format msgid "could not remove old lock file \"%s\": %m" -msgstr "n'a pas pu supprimer le vieux fichier verrou « %s » : %m" +msgstr "n'a pas pu supprimer le vieux fichier verrou « %s » : %m" #: utils/init/miscinit.c:986 #, c-format msgid "The file seems accidentally left over, but it could not be removed. Please remove the file by hand and try again." msgstr "" -"Le fichier semble avoir été oublié accidentellement mais il ne peut pas être\n" -"supprimé. Merci de supprimer ce fichier manuellement et de ré-essayer." +"Le fichier semble avoir été oublié accidentellement mais il ne peut pas être\n" +"supprimé. Merci de supprimer ce fichier manuellement et de ré-essayer." #: utils/init/miscinit.c:1022 utils/init/miscinit.c:1033 utils/init/miscinit.c:1043 #, c-format msgid "could not write lock file \"%s\": %m" -msgstr "n'a pas pu écrire le fichier verrou « %s » : %m" +msgstr "n'a pas pu écrire le fichier verrou « %s » : %m" -#: utils/init/miscinit.c:1172 utils/init/miscinit.c:1301 utils/misc/guc.c:8812 +#: utils/init/miscinit.c:1172 utils/init/miscinit.c:1301 utils/misc/guc.c:8818 #, c-format msgid "could not read from file \"%s\": %m" -msgstr "n'a pas pu lire à partir du fichier « %s » : %m" +msgstr "n'a pas pu lire à partir du fichier « %s » : %m" #: utils/init/miscinit.c:1291 #, c-format msgid "could not open file \"%s\": %m; continuing anyway" -msgstr "n'a pas pu ouvrir le fichier « %s » : %m ; poursuite du traitement" +msgstr "n'a pas pu ouvrir le fichier « %s » : %m ; poursuite du traitement" #: utils/init/miscinit.c:1314 #, c-format msgid "lock file \"%s\" contains wrong PID: %ld instead of %ld" -msgstr "le fichier de verrou « %s » contient le mauvais PID : %ld au lieu de %ld" +msgstr "le fichier de verrou « %s » contient le mauvais PID : %ld au lieu de %ld" #: utils/init/miscinit.c:1356 utils/init/miscinit.c:1369 #, c-format msgid "\"%s\" is not a valid data directory" -msgstr "« %s » n'est pas un répertoire de données valide" +msgstr "« %s » n'est pas un répertoire de données valide" #: utils/init/miscinit.c:1358 #, c-format msgid "File \"%s\" is missing." -msgstr "le fichier « %s » est manquant." +msgstr "le fichier « %s » est manquant." #: utils/init/miscinit.c:1371 #, c-format msgid "File \"%s\" does not contain valid data." -msgstr "le fichier « %s » ne contient aucune données valides." +msgstr "le fichier « %s » ne contient aucune données valides." #: utils/init/miscinit.c:1373 #, c-format msgid "You might need to initdb." -msgstr "Vous pouvez avoir besoin d'exécuter initdb." +msgstr "Vous pouvez avoir besoin d'exécuter initdb." #: utils/init/miscinit.c:1381 #, c-format msgid "The data directory was initialized by PostgreSQL version %ld.%ld, which is not compatible with this version %s." msgstr "" -"Le répertoire des données a été initialisé avec PostgreSQL version %ld.%ld,\n" +"Le répertoire des données a été initialisé avec PostgreSQL version %ld.%ld,\n" "qui est non compatible avec cette version %s." #: utils/init/miscinit.c:1452 #, c-format msgid "loaded library \"%s\"" -msgstr "bibliothèque « %s » chargée" +msgstr "bibliothèque « %s » chargée" #: utils/init/postinit.c:251 #, c-format msgid "replication connection authorized: user=%s SSL enabled (protocol=%s, cipher=%s, compression=%s)" -msgstr "connexion autorisée : utilisateur=%s, SSL activé (protocole=%s, chiffrement=%s, compression=%s)" +msgstr "connexion autorisée : utilisateur=%s, SSL activé (protocole=%s, chiffrement=%s, compression=%s)" #: utils/init/postinit.c:253 utils/init/postinit.c:267 msgid "off" -msgstr "désactivé" +msgstr "désactivé" #: utils/init/postinit.c:253 utils/init/postinit.c:267 msgid "on" -msgstr "activé" +msgstr "activé" #: utils/init/postinit.c:257 #, c-format msgid "replication connection authorized: user=%s" -msgstr "connexion de réplication autorisée : utilisateur=%s" +msgstr "connexion de réplication autorisée : utilisateur=%s" #: utils/init/postinit.c:265 #, c-format msgid "connection authorized: user=%s database=%s SSL enabled (protocol=%s, cipher=%s, compression=%s)" -msgstr "connexion autorisée : utilisateur=%s, base de données=%s, SSL activé (protocole=%s, chiffrement=%s, compression=%s)" +msgstr "connexion autorisée : utilisateur=%s, base de données=%s, SSL activé (protocole=%s, chiffrement=%s, compression=%s)" #: utils/init/postinit.c:271 #, c-format msgid "connection authorized: user=%s database=%s" -msgstr "connexion autorisée : utilisateur=%s, base de données=%s" +msgstr "connexion autorisée : utilisateur=%s, base de données=%s" #: utils/init/postinit.c:303 #, c-format msgid "database \"%s\" has disappeared from pg_database" -msgstr "la base de données « %s » a disparu de pg_database" +msgstr "la base de données « %s » a disparu de pg_database" #: utils/init/postinit.c:305 #, c-format msgid "Database OID %u now seems to belong to \"%s\"." -msgstr "La base de données d'OID %u semble maintenant appartenir à « %s »." +msgstr "La base de données d'OID %u semble maintenant appartenir à « %s »." #: utils/init/postinit.c:325 #, c-format msgid "database \"%s\" is not currently accepting connections" -msgstr "la base de données « %s » n'accepte plus les connexions" +msgstr "la base de données « %s » n'accepte plus les connexions" #: utils/init/postinit.c:338 #, c-format msgid "permission denied for database \"%s\"" -msgstr "droit refusé pour la base de données « %s »" +msgstr "droit refusé pour la base de données « %s »" #: utils/init/postinit.c:339 #, c-format @@ -21450,111 +21228,111 @@ msgstr "L'utilisateur n'a pas le droit CONNECT." #: utils/init/postinit.c:356 #, c-format msgid "too many connections for database \"%s\"" -msgstr "trop de connexions pour la base de données « %s »" +msgstr "trop de connexions pour la base de données « %s »" #: utils/init/postinit.c:378 utils/init/postinit.c:385 #, c-format msgid "database locale is incompatible with operating system" -msgstr "la locale de la base de données est incompatible avec le système d'exploitation" +msgstr "la locale de la base de données est incompatible avec le système d'exploitation" #: utils/init/postinit.c:379 #, c-format msgid "The database was initialized with LC_COLLATE \"%s\", which is not recognized by setlocale()." msgstr "" -"La base de données a été initialisée avec un LC_COLLATE à « %s »,\n" +"La base de données a été initialisée avec un LC_COLLATE à « %s »,\n" "qui n'est pas reconnu par setlocale()." #: utils/init/postinit.c:381 utils/init/postinit.c:388 #, c-format msgid "Recreate the database with another locale or install the missing locale." msgstr "" -"Recréez la base de données avec une autre locale ou installez la locale\n" +"Recréez la base de données avec une autre locale ou installez la locale\n" "manquante." #: utils/init/postinit.c:386 #, c-format msgid "The database was initialized with LC_CTYPE \"%s\", which is not recognized by setlocale()." msgstr "" -"La base de données a été initialisée avec un LC_CTYPE à « %s »,\n" +"La base de données a été initialisée avec un LC_CTYPE à « %s »,\n" "qui n'est pas reconnu par setlocale()." #: utils/init/postinit.c:714 #, c-format msgid "no roles are defined in this database system" -msgstr "aucun rôle n'est défini dans le système de bases de données" +msgstr "aucun rôle n'est défini dans le système de bases de données" #: utils/init/postinit.c:715 #, c-format msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;." -msgstr "Vous devez immédiatement exécuter « CREATE USER \"%s\" CREATEUSER; »." +msgstr "Vous devez immédiatement exécuter « CREATE USER \"%s\" CREATEUSER; »." #: utils/init/postinit.c:751 #, c-format msgid "new replication connections are not allowed during database shutdown" msgstr "" -"les nouvelles connexions pour la réplication ne sont pas autorisées pendant\n" -"l'arrêt du serveur de base de données" +"les nouvelles connexions pour la réplication ne sont pas autorisées pendant\n" +"l'arrêt du serveur de base de données" #: utils/init/postinit.c:755 #, c-format msgid "must be superuser to connect during database shutdown" msgstr "" -"doit être super-utilisateur pour se connecter pendant un arrêt de la base de\n" -"données" +"doit être super-utilisateur pour se connecter pendant un arrêt de la base de\n" +"données" #: utils/init/postinit.c:765 #, c-format msgid "must be superuser to connect in binary upgrade mode" -msgstr "doit être super-utilisateur pour se connecter en mode de mise à jour binaire" +msgstr "doit être super-utilisateur pour se connecter en mode de mise à jour binaire" #: utils/init/postinit.c:779 #, c-format msgid "remaining connection slots are reserved for non-replication superuser connections" msgstr "" -"les emplacements de connexions restants sont réservés pour les connexions\n" -"superutilisateur non relatif à la réplication" +"les emplacements de connexions restants sont réservés pour les connexions\n" +"superutilisateur non relatif à la réplication" #: utils/init/postinit.c:789 #, c-format msgid "must be superuser or replication role to start walsender" msgstr "" -"doit être un superutilisateur ou un rôle ayant l'attribut de réplication\n" -"pour exécuter walsender" +"doit être un superutilisateur ou un rôle ayant l'attribut de réplication\n" +"pour exécuter walsender" #: utils/init/postinit.c:858 #, c-format msgid "database %u does not exist" -msgstr "la base de données « %u » n'existe pas" +msgstr "la base de données « %u » n'existe pas" #: utils/init/postinit.c:944 #, c-format msgid "It seems to have just been dropped or renamed." -msgstr "Cet objet semble avoir été tout juste supprimé ou renommé." +msgstr "Cet objet semble avoir été tout juste supprimé ou renommé." #: utils/init/postinit.c:962 #, c-format msgid "The database subdirectory \"%s\" is missing." -msgstr "Le sous-répertoire de la base de données « %s » est manquant." +msgstr "Le sous-répertoire de la base de données « %s » est manquant." #: utils/init/postinit.c:967 #, c-format msgid "could not access directory \"%s\": %m" -msgstr "n'a pas pu accéder au répertoire « %s » : %m" +msgstr "n'a pas pu accéder au répertoire « %s » : %m" #: utils/mb/conv.c:405 utils/mb/conv.c:591 #, c-format msgid "invalid encoding number: %d" -msgstr "numéro d'encodage invalide : %d" +msgstr "numéro d'encodage invalide : %d" #: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:137 utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:169 #, c-format msgid "unexpected encoding ID %d for ISO 8859 character sets" -msgstr "identifiant d'encodage %d inattendu pour les jeux de caractères ISO-8859" +msgstr "identifiant d'encodage %d inattendu pour les jeux de caractères ISO-8859" #: utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c:127 utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c:159 #, c-format msgid "unexpected encoding ID %d for WIN character sets" -msgstr "identifiant d'encodage %d inattendu pour les jeux de caractères WIN" +msgstr "identifiant d'encodage %d inattendu pour les jeux de caractères WIN" #: utils/mb/encnames.c:496 #, c-format @@ -21564,55 +21342,55 @@ msgstr "nom d'encodage trop long" #: utils/mb/mbutils.c:307 #, c-format msgid "conversion between %s and %s is not supported" -msgstr "la conversion entre %s et %s n'est pas supportée" +msgstr "la conversion entre %s et %s n'est pas supportée" #: utils/mb/mbutils.c:366 #, c-format msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist" msgstr "" -"la fonction de conversion par défaut pour l'encodage de « %s » en « %s »\n" +"la fonction de conversion par défaut pour l'encodage de « %s » en « %s »\n" "n'existe pas" #: utils/mb/mbutils.c:377 utils/mb/mbutils.c:710 #, c-format msgid "String of %d bytes is too long for encoding conversion." -msgstr "Une chaîne de %d octets est trop longue pour la conversion d'encodage." +msgstr "Une chaîne de %d octets est trop longue pour la conversion d'encodage." #: utils/mb/mbutils.c:464 #, c-format msgid "invalid source encoding name \"%s\"" -msgstr "nom de l'encodage source « %s » invalide" +msgstr "nom de l'encodage source « %s » invalide" #: utils/mb/mbutils.c:469 #, c-format msgid "invalid destination encoding name \"%s\"" -msgstr "nom de l'encodage destination « %s » invalide" +msgstr "nom de l'encodage destination « %s » invalide" #: utils/mb/mbutils.c:609 #, c-format msgid "invalid byte value for encoding \"%s\": 0x%02x" -msgstr "valeur d'octet invalide pour l'encodage « %s » : 0x%02x" +msgstr "valeur d'octet invalide pour l'encodage « %s » : 0x%02x" #: utils/mb/mbutils.c:951 #, c-format msgid "bind_textdomain_codeset failed" -msgstr "échec de bind_textdomain_codeset" +msgstr "échec de bind_textdomain_codeset" #: utils/mb/wchar.c:2015 #, c-format msgid "invalid byte sequence for encoding \"%s\": %s" -msgstr "séquence d'octets invalide pour l'encodage « %s » : %s" +msgstr "séquence d'octets invalide pour l'encodage « %s » : %s" #: utils/mb/wchar.c:2048 #, c-format msgid "character with byte sequence %s in encoding \"%s\" has no equivalent in encoding \"%s\"" msgstr "" -"le caractère dont la séquence d'octets est %s dans l'encodage « %s » n'a pas\n" -"d'équivalent dans l'encodage « %s »" +"le caractère dont la séquence d'octets est %s dans l'encodage « %s » n'a pas\n" +"d'équivalent dans l'encodage « %s »" #: utils/misc/guc.c:548 msgid "Ungrouped" -msgstr "Dégroupé" +msgstr "Dégroupé" #: utils/misc/guc.c:550 msgid "File Locations" @@ -21624,11 +21402,11 @@ msgstr "Connexions et authentification" #: utils/misc/guc.c:554 msgid "Connections and Authentication / Connection Settings" -msgstr "Connexions et authentification / Paramètrages de connexion" +msgstr "Connexions et authentification / Paramètrages de connexion" #: utils/misc/guc.c:556 msgid "Connections and Authentication / Security and Authentication" -msgstr "Connexions et authentification / Sécurité et authentification" +msgstr "Connexions et authentification / Sécurité et authentification" #: utils/misc/guc.c:558 msgid "Resource Usage" @@ -21636,7 +21414,7 @@ msgstr "Utilisation des ressources" #: utils/misc/guc.c:560 msgid "Resource Usage / Memory" -msgstr "Utilisation des ressources / Mémoire" +msgstr "Utilisation des ressources / Mémoire" #: utils/misc/guc.c:562 msgid "Resource Usage / Disk" @@ -21648,11 +21426,11 @@ msgstr "Utilisation des ressources / Ressources noyau" #: utils/misc/guc.c:566 msgid "Resource Usage / Cost-Based Vacuum Delay" -msgstr "Utilisation des ressources / Délai du VACUUM basé sur le coût" +msgstr "Utilisation des ressources / Délai du VACUUM basé sur le coût" #: utils/misc/guc.c:568 msgid "Resource Usage / Background Writer" -msgstr "Utilisation des ressources / Processus d'écriture en tâche de fond" +msgstr "Utilisation des ressources / Processus d'écriture en tâche de fond" #: utils/misc/guc.c:570 msgid "Resource Usage / Asynchronous Behavior" @@ -21664,11 +21442,11 @@ msgstr "Write-Ahead Log" #: utils/misc/guc.c:574 msgid "Write-Ahead Log / Settings" -msgstr "Write-Ahead Log / Paramètrages" +msgstr "Write-Ahead Log / Paramètrages" #: utils/misc/guc.c:576 msgid "Write-Ahead Log / Checkpoints" -msgstr "Write-Ahead Log / Points de vérification (Checkpoints)" +msgstr "Write-Ahead Log / Points de vérification (Checkpoints)" #: utils/misc/guc.c:578 msgid "Write-Ahead Log / Archiving" @@ -21676,39 +21454,39 @@ msgstr "Write-Ahead Log / Archivage" #: utils/misc/guc.c:580 msgid "Replication" -msgstr "Réplication" +msgstr "Réplication" #: utils/misc/guc.c:582 msgid "Replication / Sending Servers" -msgstr "Réplication / Serveurs d'envoi" +msgstr "Réplication / Serveurs d'envoi" #: utils/misc/guc.c:584 msgid "Replication / Master Server" -msgstr "Réplication / Serveur maître" +msgstr "Réplication / Serveur maître" #: utils/misc/guc.c:586 msgid "Replication / Standby Servers" -msgstr "Réplication / Serveurs en attente" +msgstr "Réplication / Serveurs en attente" #: utils/misc/guc.c:588 msgid "Query Tuning" -msgstr "Optimisation des requêtes" +msgstr "Optimisation des requêtes" #: utils/misc/guc.c:590 msgid "Query Tuning / Planner Method Configuration" -msgstr "Optimisation des requêtes / Configuration de la méthode du planificateur" +msgstr "Optimisation des requêtes / Configuration de la méthode du planificateur" #: utils/misc/guc.c:592 msgid "Query Tuning / Planner Cost Constants" -msgstr "Optimisation des requêtes / Constantes des coûts du planificateur" +msgstr "Optimisation des requêtes / Constantes des coûts du planificateur" #: utils/misc/guc.c:594 msgid "Query Tuning / Genetic Query Optimizer" -msgstr "Optimisation des requêtes / Optimiseur génétique de requêtes" +msgstr "Optimisation des requêtes / Optimiseur génétique de requêtes" #: utils/misc/guc.c:596 msgid "Query Tuning / Other Planner Options" -msgstr "Optimisation des requêtes / Autres options du planificateur" +msgstr "Optimisation des requêtes / Autres options du planificateur" #: utils/misc/guc.c:598 msgid "Reporting and Logging" @@ -21716,7 +21494,7 @@ msgstr "Rapports et traces" #: utils/misc/guc.c:600 msgid "Reporting and Logging / Where to Log" -msgstr "Rapports et traces / Où tracer" +msgstr "Rapports et traces / Où tracer" #: utils/misc/guc.c:602 msgid "Reporting and Logging / When to Log" @@ -21740,7 +21518,7 @@ msgstr "Statistiques / Surveillance" #: utils/misc/guc.c:612 msgid "Statistics / Query and Index Statistics Collector" -msgstr "Statistiques / Récupérateur des statistiques sur les requêtes et sur les index" +msgstr "Statistiques / Récupérateur des statistiques sur les requêtes et sur les index" #: utils/misc/guc.c:614 msgid "Autovacuum" @@ -21748,23 +21526,23 @@ msgstr "Autovacuum" #: utils/misc/guc.c:616 msgid "Client Connection Defaults" -msgstr "Valeurs par défaut pour les connexions client" +msgstr "Valeurs par défaut pour les connexions client" #: utils/misc/guc.c:618 msgid "Client Connection Defaults / Statement Behavior" -msgstr "Valeurs par défaut pour les connexions client / Comportement des instructions" +msgstr "Valeurs par défaut pour les connexions client / Comportement des instructions" #: utils/misc/guc.c:620 msgid "Client Connection Defaults / Locale and Formatting" -msgstr "Valeurs par défaut pour les connexions client / Locale et formattage" +msgstr "Valeurs par défaut pour les connexions client / Locale et formattage" #: utils/misc/guc.c:622 msgid "Client Connection Defaults / Shared Library Preloading" -msgstr "Valeurs par défaut pour les connexions des clients / Préchargement des bibliothèques partagées" +msgstr "Valeurs par défaut pour les connexions des clients / Préchargement des bibliothèques partagées" #: utils/misc/guc.c:624 msgid "Client Connection Defaults / Other Defaults" -msgstr "Valeurs par défaut pour les connexions client / Autres valeurs par défaut" +msgstr "Valeurs par défaut pour les connexions client / Autres valeurs par défaut" #: utils/misc/guc.c:626 msgid "Lock Management" @@ -21772,15 +21550,15 @@ msgstr "Gestion des verrous" #: utils/misc/guc.c:628 msgid "Version and Platform Compatibility" -msgstr "Compatibilité des versions et des plateformes" +msgstr "Compatibilité des versions et des plateformes" #: utils/misc/guc.c:630 msgid "Version and Platform Compatibility / Previous PostgreSQL Versions" -msgstr "Compatibilité des versions et des plateformes / Anciennes versions de PostgreSQL" +msgstr "Compatibilité des versions et des plateformes / Anciennes versions de PostgreSQL" #: utils/misc/guc.c:632 msgid "Version and Platform Compatibility / Other Platforms and Clients" -msgstr "Compatibilité des versions et des plateformes / Anciennes plateformes et anciens clients" +msgstr "Compatibilité des versions et des plateformes / Anciennes plateformes et anciens clients" #: utils/misc/guc.c:634 msgid "Error Handling" @@ -21788,29 +21566,29 @@ msgstr "Gestion des erreurs" #: utils/misc/guc.c:636 msgid "Preset Options" -msgstr "Options pré-configurées" +msgstr "Options pré-configurées" #: utils/misc/guc.c:638 msgid "Customized Options" -msgstr "Options personnalisées" +msgstr "Options personnalisées" #: utils/misc/guc.c:640 msgid "Developer Options" -msgstr "Options pour le développeur" +msgstr "Options pour le développeur" #: utils/misc/guc.c:697 msgid "Valid units for this parameter are \"kB\", \"MB\", \"GB\", and \"TB\"." -msgstr "Les unités valides pour ce paramètre sont « kB », « MB », « GB » et « TB »." +msgstr "Les unités valides pour ce paramètre sont « kB », « MB », « GB » et « TB »." #: utils/misc/guc.c:724 msgid "Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"." msgstr "" -"Les unités valides pour ce paramètre sont « ms », « s », « min », « h » et\n" -"« d »." +"Les unités valides pour ce paramètre sont « ms », « s », « min », « h » et\n" +"« d »." #: utils/misc/guc.c:783 msgid "Enables the planner's use of sequential-scan plans." -msgstr "Active l'utilisation des parcours séquentiels par le planificateur." +msgstr "Active l'utilisation des parcours séquentiels par le planificateur." #: utils/misc/guc.c:792 msgid "Enables the planner's use of index-scan plans." @@ -21830,19 +21608,19 @@ msgstr "Active l'utilisation de plans de parcours TID par le planificateur." #: utils/misc/guc.c:828 msgid "Enables the planner's use of explicit sort steps." -msgstr "Active l'utilisation des étapes de tris explicites par le planificateur." +msgstr "Active l'utilisation des étapes de tris explicites par le planificateur." #: utils/misc/guc.c:837 msgid "Enables the planner's use of hashed aggregation plans." -msgstr "Active l'utilisation de plans d'agrégats hâchés par le planificateur." +msgstr "Active l'utilisation de plans d'agrégats hâchés par le planificateur." #: utils/misc/guc.c:846 msgid "Enables the planner's use of materialization." -msgstr "Active l'utilisation de la matérialisation par le planificateur." +msgstr "Active l'utilisation de la matérialisation par le planificateur." #: utils/misc/guc.c:855 msgid "Enables the planner's use of nested-loop join plans." -msgstr "Active l'utilisation de plans avec des jointures imbriquées par le planificateur." +msgstr "Active l'utilisation de plans avec des jointures imbriquées par le planificateur." #: utils/misc/guc.c:864 msgid "Enables the planner's use of merge join plans." @@ -21850,11 +21628,11 @@ msgstr "Active l'utilisation de plans de jointures MERGE par le planificateur." #: utils/misc/guc.c:873 msgid "Enables the planner's use of hash join plans." -msgstr "Active l'utilisation de plans de jointures hâchées par le planificateur." +msgstr "Active l'utilisation de plans de jointures hâchées par le planificateur." #: utils/misc/guc.c:883 msgid "Enables genetic query optimization." -msgstr "Active l'optimisation génétique des requêtes." +msgstr "Active l'optimisation génétique des requêtes." #: utils/misc/guc.c:884 msgid "This algorithm attempts to do planning without exhaustive searching." @@ -21870,7 +21648,7 @@ msgstr "Active la publication du serveur via Bonjour." #: utils/misc/guc.c:913 msgid "Collects transaction commit time." -msgstr "Récupère l'horodatage de la validation de la transaction." +msgstr "Récupère l'horodatage de la validation de la transaction." #: utils/misc/guc.c:922 msgid "Enables SSL connections." @@ -21878,87 +21656,87 @@ msgstr "Active les connexions SSL." #: utils/misc/guc.c:931 msgid "Give priority to server ciphersuite order." -msgstr "Donne la priorité à l'ordre des chiffrements du serveur." +msgstr "Donne la priorité à l'ordre des chiffrements du serveur." #: utils/misc/guc.c:940 msgid "Forces synchronization of updates to disk." -msgstr "Force la synchronisation des mises à jour sur le disque." +msgstr "Force la synchronisation des mises à jour sur le disque." #: utils/misc/guc.c:941 msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This insures that a database cluster will recover to a consistent state after an operating system or hardware crash." msgstr "" -"Le serveur utilisera l'appel système fsync() à différents endroits pour\n" -"s'assurer que les mises à jour sont écrites physiquement sur le disque. Ceci\n" -"nous assure qu'un groupe de bases de données se retrouvera dans un état\n" -"cohérent après un arrêt brutal dû au système d'exploitation ou au matériel." +"Le serveur utilisera l'appel système fsync() à différents endroits pour\n" +"s'assurer que les mises à jour sont écrites physiquement sur le disque. Ceci\n" +"nous assure qu'un groupe de bases de données se retrouvera dans un état\n" +"cohérent après un arrêt brutal dû au système d'exploitation ou au matériel." #: utils/misc/guc.c:952 msgid "Continues processing after a checksum failure." -msgstr "Continue le traitement après un échec de la somme de contrôle." +msgstr "Continue le traitement après un échec de la somme de contrôle." #: utils/misc/guc.c:953 msgid "Detection of a checksum failure normally causes PostgreSQL to report an error, aborting the current transaction. Setting ignore_checksum_failure to true causes the system to ignore the failure (but still report a warning), and continue processing. This behavior could cause crashes or other serious problems. Only has an effect if checksums are enabled." -msgstr "La détection d'une erreur de somme de contrôle a normalement pour effet de rapporter une erreur, annulant la transaction en cours. Régler ignore_checksum_failure à true permet au système d'ignorer cette erreur (mais rapporte toujours un avertissement), et continue le traitement. Ce comportement pourrait causer un arrêt brutal ou d'autres problèmes sérieux. Cela a un effet seulement si les sommes de contrôles (checksums) sont activés." +msgstr "La détection d'une erreur de somme de contrôle a normalement pour effet de rapporter une erreur, annulant la transaction en cours. Régler ignore_checksum_failure à true permet au système d'ignorer cette erreur (mais rapporte toujours un avertissement), et continue le traitement. Ce comportement pourrait causer un arrêt brutal ou d'autres problèmes sérieux. Cela a un effet seulement si les sommes de contrôles (checksums) sont activés." #: utils/misc/guc.c:967 msgid "Continues processing past damaged page headers." -msgstr "Continue le travail après les en-têtes de page endommagés." +msgstr "Continue le travail après les en-têtes de page endommagés." #: utils/misc/guc.c:968 msgid "Detection of a damaged page header normally causes PostgreSQL to report an error, aborting the current transaction. Setting zero_damaged_pages to true causes the system to instead report a warning, zero out the damaged page, and continue processing. This behavior will destroy data, namely all the rows on the damaged page." msgstr "" -"La détection d'une en-tête de page endommagée cause normalement le rapport\n" +"La détection d'une en-tête de page endommagée cause normalement le rapport\n" "d'une erreur par PostgreSQL, l'annulation de la transaction en cours.\n" -"Initialiser zero_damaged_pages à true fait que le système ne rapporte qu'un\n" -"message d'attention et continue à travailler. Ce comportement détruira des\n" -"données, notamment toutes les lignes de la page endommagée." +"Initialiser zero_damaged_pages à true fait que le système ne rapporte qu'un\n" +"message d'attention et continue à travailler. Ce comportement détruira des\n" +"données, notamment toutes les lignes de la page endommagée." #: utils/misc/guc.c:981 msgid "Writes full pages to WAL when first modified after a checkpoint." msgstr "" -"Écrit des pages complètes dans les WAL lors d'une première modification après\n" -"un point de vérification." +"Écrit des pages complètes dans les WAL lors d'une première modification après\n" +"un point de vérification." #: utils/misc/guc.c:982 msgid "A page write in process during an operating system crash might be only partially written to disk. During recovery, the row changes stored in WAL are not enough to recover. This option writes pages when first modified after a checkpoint to WAL so full recovery is possible." msgstr "" -"Une page écrite au moment d'un arrêt brutal du système d'exploitation\n" -"pourrait être seulement partiellement écrite sur le disque. Lors de la\n" -"récupération, les modifications de la ligne, stockées dans le journal de\n" -"transaction, ne seront pas suffisantes pour terminer la récupération. Cette\n" -"option écrit les pages lors de la première modification après un point de\n" -"vérification des journaux de transaction pour que la récupération complète\n" +"Une page écrite au moment d'un arrêt brutal du système d'exploitation\n" +"pourrait être seulement partiellement écrite sur le disque. Lors de la\n" +"récupération, les modifications de la ligne, stockées dans le journal de\n" +"transaction, ne seront pas suffisantes pour terminer la récupération. Cette\n" +"option écrit les pages lors de la première modification après un point de\n" +"vérification des journaux de transaction pour que la récupération complète\n" "soit possible." #: utils/misc/guc.c:995 msgid "Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modifications." msgstr "" -"Écrit des pages complètes dans les WAL lors d'une première modification après\n" -"un point de vérification, y compris pour des modifications non critiques." +"Écrit des pages complètes dans les WAL lors d'une première modification après\n" +"un point de vérification, y compris pour des modifications non critiques." #: utils/misc/guc.c:1005 msgid "Compresses full-page writes written in WAL file." -msgstr "Compresse les blocs complets écrits dans les journaux de transactions." +msgstr "Compresse les blocs complets écrits dans les journaux de transactions." #: utils/misc/guc.c:1015 msgid "Logs each checkpoint." -msgstr "Trace tous les points de vérification." +msgstr "Trace tous les points de vérification." #: utils/misc/guc.c:1024 msgid "Logs each successful connection." -msgstr "Trace toutes les connexions réussies." +msgstr "Trace toutes les connexions réussies." #: utils/misc/guc.c:1033 msgid "Logs end of a session, including duration." -msgstr "Trace la fin d'une session, avec sa durée." +msgstr "Trace la fin d'une session, avec sa durée." #: utils/misc/guc.c:1042 msgid "Logs each replication command." -msgstr "Trace chaque commande de réplication." +msgstr "Trace chaque commande de réplication." #: utils/misc/guc.c:1051 msgid "Shows whether the running server has assertion checks enabled." -msgstr "Affiche si le serveur en cours d'exécution a les vérifications d'assertion activées." +msgstr "Affiche si le serveur en cours d'exécution a les vérifications d'assertion activées." #: utils/misc/guc.c:1066 msgid "Terminate session on any error." @@ -21966,23 +21744,23 @@ msgstr "Termine la session sans erreur." #: utils/misc/guc.c:1075 msgid "Reinitialize server after backend crash." -msgstr "Réinitialisation du serveur après un arrêt brutal d'un processus serveur." +msgstr "Réinitialisation du serveur après un arrêt brutal d'un processus serveur." #: utils/misc/guc.c:1085 msgid "Logs the duration of each completed SQL statement." -msgstr "Trace la durée de chaque instruction SQL terminée." +msgstr "Trace la durée de chaque instruction SQL terminée." #: utils/misc/guc.c:1094 msgid "Logs each query's parse tree." -msgstr "Trace l'arbre d'analyse de chaque requête." +msgstr "Trace l'arbre d'analyse de chaque requête." #: utils/misc/guc.c:1103 msgid "Logs each query's rewritten parse tree." -msgstr "Trace l'arbre d'analyse réécrit de chaque requête." +msgstr "Trace l'arbre d'analyse réécrit de chaque requête." #: utils/misc/guc.c:1112 msgid "Logs each query's execution plan." -msgstr "Trace le plan d'exécution de chaque requête." +msgstr "Trace le plan d'exécution de chaque requête." #: utils/misc/guc.c:1121 msgid "Indents parse and plan tree displays." @@ -21991,84 +21769,84 @@ msgstr "Indente l'affichage des arbres d'analyse et de planification." #: utils/misc/guc.c:1130 msgid "Writes parser performance statistics to the server log." msgstr "" -"Écrit les statistiques de performance de l'analyseur dans les journaux applicatifs\n" +"Écrit les statistiques de performance de l'analyseur dans les journaux applicatifs\n" "du serveur." #: utils/misc/guc.c:1139 msgid "Writes planner performance statistics to the server log." msgstr "" -"Écrit les statistiques de performance de planification dans les journaux\n" +"Écrit les statistiques de performance de planification dans les journaux\n" "applicatifs du serveur." #: utils/misc/guc.c:1148 msgid "Writes executor performance statistics to the server log." msgstr "" -"Écrit les statistiques de performance de l'exécuteur dans les journaux applicatifs\n" +"Écrit les statistiques de performance de l'exécuteur dans les journaux applicatifs\n" "du serveur." #: utils/misc/guc.c:1157 msgid "Writes cumulative performance statistics to the server log." msgstr "" -"Écrit les statistiques de performance cumulatives dans les journaux applicatifs\n" +"Écrit les statistiques de performance cumulatives dans les journaux applicatifs\n" "du serveur." #: utils/misc/guc.c:1167 msgid "Logs system resource usage statistics (memory and CPU) on various B-tree operations." -msgstr "Trace les statistiques d'utilisation des ressources systèmes (mémoire et CPU) sur les différentes opérations B-tree." +msgstr "Trace les statistiques d'utilisation des ressources systèmes (mémoire et CPU) sur les différentes opérations B-tree." #: utils/misc/guc.c:1179 msgid "Collects information about executing commands." -msgstr "Récupère les statistiques sur les commandes en exécution." +msgstr "Récupère les statistiques sur les commandes en exécution." #: utils/misc/guc.c:1180 msgid "Enables the collection of information on the currently executing command of each session, along with the time at which that command began execution." msgstr "" -"Active la récupération d'informations sur la commande en cours d'exécution\n" -"pour chaque session, avec l'heure de début de l'exécution de la commande." +"Active la récupération d'informations sur la commande en cours d'exécution\n" +"pour chaque session, avec l'heure de début de l'exécution de la commande." #: utils/misc/guc.c:1190 msgid "Collects statistics on database activity." -msgstr "Récupère les statistiques sur l'activité de la base de données." +msgstr "Récupère les statistiques sur l'activité de la base de données." #: utils/misc/guc.c:1199 msgid "Collects timing statistics for database I/O activity." -msgstr "Récupère les statistiques d'horodatage sur l'activité en entrées/sorties de la base de données." +msgstr "Récupère les statistiques d'horodatage sur l'activité en entrées/sorties de la base de données." #: utils/misc/guc.c:1209 msgid "Updates the process title to show the active SQL command." msgstr "" -"Met à jour le titre du processus pour indiquer la commande SQL en cours\n" -"d'exécution." +"Met à jour le titre du processus pour indiquer la commande SQL en cours\n" +"d'exécution." #: utils/misc/guc.c:1210 msgid "Enables updating of the process title every time a new SQL command is received by the server." msgstr "" -"Active la mise à jour du titre du processus chaque fois qu'une nouvelle\n" -"commande SQL est reçue par le serveur." +"Active la mise à jour du titre du processus chaque fois qu'une nouvelle\n" +"commande SQL est reçue par le serveur." #: utils/misc/guc.c:1223 msgid "Starts the autovacuum subprocess." -msgstr "Exécute le sous-processus de l'autovacuum." +msgstr "Exécute le sous-processus de l'autovacuum." #: utils/misc/guc.c:1233 msgid "Generates debugging output for LISTEN and NOTIFY." -msgstr "Génère une sortie de débogage pour LISTEN et NOTIFY." +msgstr "Génère une sortie de débogage pour LISTEN et NOTIFY." #: utils/misc/guc.c:1245 msgid "Emits information about lock usage." -msgstr "Émet des informations sur l'utilisation des verrous." +msgstr "Émet des informations sur l'utilisation des verrous." #: utils/misc/guc.c:1255 msgid "Emits information about user lock usage." -msgstr "Émet des informations sur l'utilisation des verrous utilisateurs." +msgstr "Émet des informations sur l'utilisation des verrous utilisateurs." #: utils/misc/guc.c:1265 msgid "Emits information about lightweight lock usage." -msgstr "Émet des informations sur l'utilisation des verrous légers." +msgstr "Émet des informations sur l'utilisation des verrous légers." #: utils/misc/guc.c:1275 msgid "Dumps information about all current locks when a deadlock timeout occurs." -msgstr "Trace les informations sur les verrous actuels lorsqu'un délai sur le deadlock est dépassé." +msgstr "Trace les informations sur les verrous actuels lorsqu'un délai sur le deadlock est dépassé." #: utils/misc/guc.c:1287 msgid "Logs long lock waits." @@ -22076,21 +21854,21 @@ msgstr "Trace les attentes longues de verrou." #: utils/misc/guc.c:1297 msgid "Logs the host name in the connection logs." -msgstr "Trace le nom d'hôte dans les traces de connexion." +msgstr "Trace le nom d'hôte dans les traces de connexion." #: utils/misc/guc.c:1298 msgid "By default, connection logs only show the IP address of the connecting host. If you want them to show the host name you can turn this on, but depending on your host name resolution setup it might impose a non-negligible performance penalty." msgstr "" -"Par défaut, les traces de connexion n'affichent que l'adresse IP de l'hôte\n" -"se connectant. Si vous voulez que s'affiche le nom de l'hôte, vous devez\n" -"activer cette option mais suivant la configuration de la résolution de noms\n" -"pour votre hôte, cela pourrait imposer des dégradations de performances non\n" -"négligeables." +"Par défaut, les traces de connexion n'affichent que l'adresse IP de l'hôte\n" +"se connectant. Si vous voulez que s'affiche le nom de l'hôte, vous devez\n" +"activer cette option mais suivant la configuration de la résolution de noms\n" +"pour votre hôte, cela pourrait imposer des dégradations de performances non\n" +"négligeables." #: utils/misc/guc.c:1309 msgid "Causes subtables to be included by default in various commands." msgstr "" -"Fait que les sous-tables soient incluses par défaut dans les différentes\n" +"Fait que les sous-tables soient incluses par défaut dans les différentes\n" "commandes." #: utils/misc/guc.c:1318 @@ -22100,29 +21878,29 @@ msgstr "Chiffre les mots de passe." #: utils/misc/guc.c:1319 msgid "When a password is specified in CREATE USER or ALTER USER without writing either ENCRYPTED or UNENCRYPTED, this parameter determines whether the password is to be encrypted." msgstr "" -"Lorsqu'un mot de passe est spécifié dans CREATE USER ou ALTER USER sans\n" -"indiquer ENCRYPTED ou UNENCRYPTED, ce paramètre détermine si le mot de passe\n" -"doit être chiffré." +"Lorsqu'un mot de passe est spécifié dans CREATE USER ou ALTER USER sans\n" +"indiquer ENCRYPTED ou UNENCRYPTED, ce paramètre détermine si le mot de passe\n" +"doit être chiffré." #: utils/misc/guc.c:1329 msgid "Treats \"expr=NULL\" as \"expr IS NULL\"." -msgstr "Traite « expr=NULL » comme « expr IS NULL »." +msgstr "Traite « expr=NULL » comme « expr IS NULL »." #: utils/misc/guc.c:1330 msgid "When turned on, expressions of the form expr = NULL (or NULL = expr) are treated as expr IS NULL, that is, they return true if expr evaluates to the null value, and false otherwise. The correct behavior of expr = NULL is to always return null (unknown)." msgstr "" -"Une fois activé, les expressions de la forme expr = NULL (ou NULL = expr)\n" -"sont traitées comme expr IS NULL, c'est-à-dire qu'elles renvoient true si\n" -"l'expression est évaluée comme étant NULL et false sinon. Le comportement\n" +"Une fois activé, les expressions de la forme expr = NULL (ou NULL = expr)\n" +"sont traitées comme expr IS NULL, c'est-à-dire qu'elles renvoient true si\n" +"l'expression est évaluée comme étant NULL et false sinon. Le comportement\n" "correct de expr = NULL est de toujours renvoyer NULL (inconnu)." #: utils/misc/guc.c:1342 msgid "Enables per-database user names." -msgstr "Active les noms d'utilisateur par base de données." +msgstr "Active les noms d'utilisateur par base de données." #: utils/misc/guc.c:1351 msgid "Sets the default read-only status of new transactions." -msgstr "Initialise le statut de lecture seule par défaut des nouvelles transactions." +msgstr "Initialise le statut de lecture seule par défaut des nouvelles transactions." #: utils/misc/guc.c:1360 msgid "Sets the current transaction's read-only status." @@ -22130,39 +21908,39 @@ msgstr "Affiche le statut de lecture seule de la transaction actuelle." #: utils/misc/guc.c:1370 msgid "Sets the default deferrable status of new transactions." -msgstr "Initialise le statut déferrable par défaut des nouvelles transactions." +msgstr "Initialise le statut déferrable par défaut des nouvelles transactions." #: utils/misc/guc.c:1379 msgid "Whether to defer a read-only serializable transaction until it can be executed with no possible serialization failures." msgstr "" -"S'il faut repousser une transaction sérialisable en lecture seule jusqu'à ce qu'elle\n" -"puisse être exécutée sans échecs possibles de sérialisation." +"S'il faut repousser une transaction sérialisable en lecture seule jusqu'à ce qu'elle\n" +"puisse être exécutée sans échecs possibles de sérialisation." #: utils/misc/guc.c:1389 msgid "Enable row security." -msgstr "Active la sécurité niveau ligne." +msgstr "Active la sécurité niveau ligne." #: utils/misc/guc.c:1390 msgid "When enabled, row security will be applied to all users." -msgstr "Lorsqu'il est activé, le mode de sécurité niveau ligne sera appliqué à tous les utilisateurs." +msgstr "Lorsqu'il est activé, le mode de sécurité niveau ligne sera appliqué à tous les utilisateurs." #: utils/misc/guc.c:1398 msgid "Check function bodies during CREATE FUNCTION." -msgstr "Vérifie les corps de fonction lors du CREATE FUNCTION." +msgstr "Vérifie les corps de fonction lors du CREATE FUNCTION." #: utils/misc/guc.c:1407 msgid "Enable input of NULL elements in arrays." -msgstr "Active la saisie d'éléments NULL dans les tableaux." +msgstr "Active la saisie d'éléments NULL dans les tableaux." #: utils/misc/guc.c:1408 msgid "When turned on, unquoted NULL in an array input value means a null value; otherwise it is taken literally." msgstr "" -"Si activé, un NULL sans guillemets en tant que valeur d'entrée dans un\n" -"tableau signifie une valeur NULL ; sinon, il sera pris littéralement." +"Si activé, un NULL sans guillemets en tant que valeur d'entrée dans un\n" +"tableau signifie une valeur NULL ; sinon, il sera pris littéralement." #: utils/misc/guc.c:1418 msgid "Create new tables with OIDs by default." -msgstr "Crée des nouvelles tables avec des OID par défaut." +msgstr "Crée des nouvelles tables avec des OID par défaut." #: utils/misc/guc.c:1427 msgid "Start a subprocess to capture stderr output and/or csvlogs into log files." @@ -22173,139 +21951,139 @@ msgstr "" #: utils/misc/guc.c:1436 msgid "Truncate existing log files of same name during log rotation." msgstr "" -"Tronque les journaux applicatifs existants du même nom lors de la rotation\n" +"Tronque les journaux applicatifs existants du même nom lors de la rotation\n" "des journaux applicatifs." #: utils/misc/guc.c:1447 msgid "Emit information about resource usage in sorting." -msgstr "Émet des informations sur l'utilisation des ressources lors d'un tri." +msgstr "Émet des informations sur l'utilisation des ressources lors d'un tri." #: utils/misc/guc.c:1461 msgid "Generate debugging output for synchronized scanning." -msgstr "Génère une sortie de débogage pour les parcours synchronisés." +msgstr "Génère une sortie de débogage pour les parcours synchronisés." #: utils/misc/guc.c:1476 msgid "Enable bounded sorting using heap sort." -msgstr "Active le tri limité en utilisant le tri de heap." +msgstr "Active le tri limité en utilisant le tri de heap." #: utils/misc/guc.c:1489 msgid "Emit WAL-related debugging output." -msgstr "Émet une sortie de débogage concernant les journaux de transactions." +msgstr "Émet une sortie de débogage concernant les journaux de transactions." #: utils/misc/guc.c:1501 msgid "Datetimes are integer based." -msgstr "Les types datetime sont basés sur des entiers" +msgstr "Les types datetime sont basés sur des entiers" #: utils/misc/guc.c:1516 msgid "Sets whether Kerberos and GSSAPI user names should be treated as case-insensitive." msgstr "" -"Indique si les noms d'utilisateurs Kerberos et GSSAPI devraient être traités\n" +"Indique si les noms d'utilisateurs Kerberos et GSSAPI devraient être traités\n" "sans se soucier de la casse." #: utils/misc/guc.c:1526 msgid "Warn about backslash escapes in ordinary string literals." -msgstr "Avertie sur les échappements par antislash dans les chaînes ordinaires." +msgstr "Avertie sur les échappements par antislash dans les chaînes ordinaires." #: utils/misc/guc.c:1536 msgid "Causes '...' strings to treat backslashes literally." -msgstr "Fait que les chaînes '...' traitent les antislashs littéralement." +msgstr "Fait que les chaînes '...' traitent les antislashs littéralement." #: utils/misc/guc.c:1547 msgid "Enable synchronized sequential scans." -msgstr "Active l'utilisation des parcours séquentiels synchronisés." +msgstr "Active l'utilisation des parcours séquentiels synchronisés." #: utils/misc/guc.c:1557 msgid "Allows connections and queries during recovery." -msgstr "Autorise les connexions et les requêtes pendant la restauration." +msgstr "Autorise les connexions et les requêtes pendant la restauration." #: utils/misc/guc.c:1567 msgid "Allows feedback from a hot standby to the primary that will avoid query conflicts." msgstr "" "Permet l'envoi d'informations d'un serveur Hot Standby vers le serveur\n" -"principal pour éviter les conflits de requêtes." +"principal pour éviter les conflits de requêtes." #: utils/misc/guc.c:1577 msgid "Allows modifications of the structure of system tables." -msgstr "Permet les modifications de la structure des tables systèmes." +msgstr "Permet les modifications de la structure des tables systèmes." #: utils/misc/guc.c:1588 msgid "Disables reading from system indexes." -msgstr "Désactive la lecture des index système." +msgstr "Désactive la lecture des index système." #: utils/misc/guc.c:1589 msgid "It does not prevent updating the indexes, so it is safe to use. The worst consequence is slowness." msgstr "" -"Cela n'empêche pas la mise à jour des index, donc vous pouvez l'utiliser en\n" -"toute sécurité. La pire conséquence est la lenteur." +"Cela n'empêche pas la mise à jour des index, donc vous pouvez l'utiliser en\n" +"toute sécurité. La pire conséquence est la lenteur." #: utils/misc/guc.c:1600 msgid "Enables backward compatibility mode for privilege checks on large objects." msgstr "" -"Active la compatibilité ascendante pour la vérification des droits sur les\n" +"Active la compatibilité ascendante pour la vérification des droits sur les\n" "Large Objects." #: utils/misc/guc.c:1601 msgid "Skips privilege checks when reading or modifying large objects, for compatibility with PostgreSQL releases prior to 9.0." msgstr "" -"Ignore la vérification des droits lors de la lecture et de la modification\n" -"des Larges Objects, pour la compatibilité avec les versions antérieures à la\n" +"Ignore la vérification des droits lors de la lecture et de la modification\n" +"des Larges Objects, pour la compatibilité avec les versions antérieures à la\n" "9.0." #: utils/misc/guc.c:1611 msgid "Emit a warning for constructs that changed meaning since PostgreSQL 9.4." -msgstr "Émet un avertissement pour les constructions dont la signification a changé depuis PostgreSQL 9.4." +msgstr "Émet un avertissement pour les constructions dont la signification a changé depuis PostgreSQL 9.4." #: utils/misc/guc.c:1621 msgid "When generating SQL fragments, quote all identifiers." -msgstr "Lors de la génération des rragments SQL, mettre entre guillemets tous les identifiants." +msgstr "Lors de la génération des rragments SQL, mettre entre guillemets tous les identifiants." #: utils/misc/guc.c:1631 msgid "Shows whether data checksums are turned on for this cluster." -msgstr "Affiche si les sommes de contrôle sont activées sur les données pour cette instance." +msgstr "Affiche si les sommes de contrôle sont activées sur les données pour cette instance." #: utils/misc/guc.c:1642 msgid "Add sequence number to syslog messages to avoid duplicate suppression." -msgstr "Ajoute un numéro de séquence aux messages syslog pour éviter des suppressions de doublons." +msgstr "Ajoute un numéro de séquence aux messages syslog pour éviter des suppressions de doublons." #: utils/misc/guc.c:1652 msgid "Split messages sent to syslog by lines and to fit into 1024 bytes." -msgstr "Sépare les messages envoyés à syslog par lignes afin de les faire tenir dans 1024 octets." +msgstr "Sépare les messages envoyés à syslog par lignes afin de les faire tenir dans 1024 octets." #: utils/misc/guc.c:1671 msgid "Forces a switch to the next xlog file if a new file has not been started within N seconds." msgstr "" "Force un changement du journal de transaction si un nouveau fichier n'a pas\n" -"été créé depuis N secondes." +"été créé depuis N secondes." #: utils/misc/guc.c:1682 msgid "Waits N seconds on connection startup after authentication." -msgstr "Attends N secondes après l'authentification." +msgstr "Attends N secondes après l'authentification." #: utils/misc/guc.c:1683 utils/misc/guc.c:2206 msgid "This allows attaching a debugger to the process." -msgstr "Ceci permet d'attacher un débogueur au processus." +msgstr "Ceci permet d'attacher un débogueur au processus." #: utils/misc/guc.c:1692 msgid "Sets the default statistics target." -msgstr "Initialise la cible par défaut des statistiques." +msgstr "Initialise la cible par défaut des statistiques." #: utils/misc/guc.c:1693 msgid "This applies to table columns that have not had a column-specific target set via ALTER TABLE SET STATISTICS." msgstr "" -"Ceci s'applique aux colonnes de tables qui n'ont pas de cible spécifique\n" -"pour la colonne initialisée via ALTER TABLE SET STATISTICS." +"Ceci s'applique aux colonnes de tables qui n'ont pas de cible spécifique\n" +"pour la colonne initialisée via ALTER TABLE SET STATISTICS." #: utils/misc/guc.c:1702 msgid "Sets the FROM-list size beyond which subqueries are not collapsed." msgstr "" "Initialise la taille de la liste FROM en dehors de laquelle les\n" -"sous-requêtes ne sont pas rassemblées." +"sous-requêtes ne sont pas rassemblées." #: utils/misc/guc.c:1704 msgid "The planner will merge subqueries into upper queries if the resulting FROM list would have no more than this many items." msgstr "" -"Le planificateur fusionne les sous-requêtes dans des requêtes supérieures\n" -"si la liste FROM résultante n'a pas plus de ce nombre d'éléments." +"Le planificateur fusionne les sous-requêtes dans des requêtes supérieures\n" +"si la liste FROM résultante n'a pas plus de ce nombre d'éléments." #: utils/misc/guc.c:1714 msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened." @@ -22317,18 +22095,18 @@ msgstr "" msgid "The planner will flatten explicit JOIN constructs into lists of FROM items whenever a list of no more than this many items would result." msgstr "" "La planificateur applanira les constructions JOIN explicites dans des listes\n" -"d'éléments FROM lorsqu'une liste d'au plus ce nombre d'éléments en\n" -"résulterait." +"d'éléments FROM lorsqu'une liste d'au plus ce nombre d'éléments en\n" +"résulterait." #: utils/misc/guc.c:1726 msgid "Sets the threshold of FROM items beyond which GEQO is used." -msgstr "Initialise la limite des éléments FROM en dehors de laquelle GEQO est utilisé." +msgstr "Initialise la limite des éléments FROM en dehors de laquelle GEQO est utilisé." #: utils/misc/guc.c:1735 msgid "GEQO: effort is used to set the default for other GEQO parameters." msgstr "" -"GEQO : l'effort est utilisé pour initialiser une valeur par défaut pour les\n" -"autres paramètres GEQO." +"GEQO : l'effort est utilisé pour initialiser une valeur par défaut pour les\n" +"autres paramètres GEQO." #: utils/misc/guc.c:1744 msgid "GEQO: number of individuals in the population." @@ -22336,67 +22114,67 @@ msgstr "GEQO : nombre d'individus dans une population." #: utils/misc/guc.c:1745 utils/misc/guc.c:1754 msgid "Zero selects a suitable default value." -msgstr "Zéro sélectionne une valeur par défaut convenable." +msgstr "Zéro sélectionne une valeur par défaut convenable." #: utils/misc/guc.c:1753 msgid "GEQO: number of iterations of the algorithm." -msgstr "GEQO : nombre d'itérations dans l'algorithme." +msgstr "GEQO : nombre d'itérations dans l'algorithme." #: utils/misc/guc.c:1764 msgid "Sets the time to wait on a lock before checking for deadlock." -msgstr "Temps d'attente du verrou avant de vérifier les verrous bloqués." +msgstr "Temps d'attente du verrou avant de vérifier les verrous bloqués." #: utils/misc/guc.c:1775 msgid "Sets the maximum delay before canceling queries when a hot standby server is processing archived WAL data." msgstr "" -"Initialise le délai maximum avant d'annuler les requêtes lorsqu'un serveur en\n" -"hotstandby traite les données des journaux de transactions archivés" +"Initialise le délai maximum avant d'annuler les requêtes lorsqu'un serveur en\n" +"hotstandby traite les données des journaux de transactions archivés" #: utils/misc/guc.c:1786 msgid "Sets the maximum delay before canceling queries when a hot standby server is processing streamed WAL data." msgstr "" -"Initialise le délai maximum avant d'annuler les requêtes lorsqu'un serveur en\n" -"hotstandby traite les données des journaux de transactions envoyés en flux." +"Initialise le délai maximum avant d'annuler les requêtes lorsqu'un serveur en\n" +"hotstandby traite les données des journaux de transactions envoyés en flux." #: utils/misc/guc.c:1797 msgid "Sets the maximum interval between WAL receiver status reports to the primary." -msgstr "Configure l'intervalle maximum entre chaque envoi d'un rapport de statut du walreceiver vers le serveur maître." +msgstr "Configure l'intervalle maximum entre chaque envoi d'un rapport de statut du walreceiver vers le serveur maître." #: utils/misc/guc.c:1808 msgid "Sets the maximum wait time to receive data from the primary." -msgstr "Configure la durée maximale de l'attente de la réception de données depuis le serveur maître." +msgstr "Configure la durée maximale de l'attente de la réception de données depuis le serveur maître." #: utils/misc/guc.c:1819 msgid "Sets the maximum number of concurrent connections." -msgstr "Nombre maximum de connexions simultanées." +msgstr "Nombre maximum de connexions simultanées." #: utils/misc/guc.c:1829 msgid "Sets the number of connection slots reserved for superusers." -msgstr "Nombre de connexions réservées aux super-utilisateurs." +msgstr "Nombre de connexions réservées aux super-utilisateurs." #: utils/misc/guc.c:1843 msgid "Sets the number of shared memory buffers used by the server." -msgstr "Nombre de tampons en mémoire partagée utilisé par le serveur." +msgstr "Nombre de tampons en mémoire partagée utilisé par le serveur." #: utils/misc/guc.c:1854 msgid "Sets the maximum number of temporary buffers used by each session." -msgstr "Nombre maximum de tampons en mémoire partagée utilisés par chaque session." +msgstr "Nombre maximum de tampons en mémoire partagée utilisés par chaque session." #: utils/misc/guc.c:1865 msgid "Sets the TCP port the server listens on." -msgstr "Port TCP sur lequel le serveur écoutera." +msgstr "Port TCP sur lequel le serveur écoutera." #: utils/misc/guc.c:1875 msgid "Sets the access permissions of the Unix-domain socket." -msgstr "Droits d'accès au socket domaine Unix." +msgstr "Droits d'accès au socket domaine Unix." #: utils/misc/guc.c:1876 msgid "Unix-domain sockets use the usual Unix file system permission set. The parameter value is expected to be a numeric mode specification in the form accepted by the chmod and umask system calls. (To use the customary octal format the number must start with a 0 (zero).)" msgstr "" -"Les sockets de domaine Unix utilise l'ensemble des droits habituels du système\n" -"de fichiers Unix. La valeur de ce paramètre doit être une spécification en\n" -"mode numérique de la forme acceptée par les appels système chmod et umask\n" -"(pour utiliser le format octal, le nombre doit commencer avec un zéro)." +"Les sockets de domaine Unix utilise l'ensemble des droits habituels du système\n" +"de fichiers Unix. La valeur de ce paramètre doit être une spécification en\n" +"mode numérique de la forme acceptée par les appels système chmod et umask\n" +"(pour utiliser le format octal, le nombre doit commencer avec un zéro)." #: utils/misc/guc.c:1890 msgid "Sets the file permissions for log files." @@ -22405,35 +22183,35 @@ msgstr "Initialise les droits des fichiers de trace." #: utils/misc/guc.c:1891 msgid "The parameter value is expected to be a numeric mode specification in the form accepted by the chmod and umask system calls. (To use the customary octal format the number must start with a 0 (zero).)" msgstr "" -"La valeur du paramètre est attendue dans le format numérique du mode accepté\n" -"par les appels système chmod et umask (pour utiliser le format octal\n" -"personnalisé, le numéro doit commencer avec un zéro)." +"La valeur du paramètre est attendue dans le format numérique du mode accepté\n" +"par les appels système chmod et umask (pour utiliser le format octal\n" +"personnalisé, le numéro doit commencer avec un zéro)." #: utils/misc/guc.c:1904 msgid "Sets the maximum memory to be used for query workspaces." -msgstr "Initialise la mémoire maximum utilisée pour les espaces de travail des requêtes." +msgstr "Initialise la mémoire maximum utilisée pour les espaces de travail des requêtes." #: utils/misc/guc.c:1905 msgid "This much memory can be used by each internal sort operation and hash table before switching to temporary disk files." msgstr "" -"Spécifie la mémoire à utiliser par les opérations de tris internes et par\n" +"Spécifie la mémoire à utiliser par les opérations de tris internes et par\n" "les tables de hachage avant de passer sur des fichiers temporaires sur disque." #: utils/misc/guc.c:1917 msgid "Sets the maximum memory to be used for maintenance operations." -msgstr "Initialise la mémoire maximum utilisée pour les opérations de maintenance." +msgstr "Initialise la mémoire maximum utilisée pour les opérations de maintenance." #: utils/misc/guc.c:1918 msgid "This includes operations such as VACUUM and CREATE INDEX." -msgstr "Ceci inclut les opérations comme VACUUM et CREATE INDEX." +msgstr "Ceci inclut les opérations comme VACUUM et CREATE INDEX." #: utils/misc/guc.c:1928 msgid "Sets the maximum number of tuples to be sorted using replacement selection." -msgstr "Configure le nombre maximum de lignes à trier en utilisant la sélection de remplacement." +msgstr "Configure le nombre maximum de lignes à trier en utilisant la sélection de remplacement." #: utils/misc/guc.c:1929 msgid "When more tuples than this are present, quicksort will be used." -msgstr "Quand plus de lignes que ça sont présentes, quicksort sera utilisé." +msgstr "Quand plus de lignes que ça sont présentes, quicksort sera utilisé." #: utils/misc/guc.c:1943 msgid "Sets the maximum stack depth, in kilobytes." @@ -22441,7 +22219,7 @@ msgstr "Initialise la profondeur maximale de la pile, en Ko." #: utils/misc/guc.c:1954 msgid "Limits the total size of all temporary files used by each process." -msgstr "Limite la taille totale de tous les fichiers temporaires utilisés par chaque processus." +msgstr "Limite la taille totale de tous les fichiers temporaires utilisés par chaque processus." #: utils/misc/guc.c:1955 msgid "-1 means no limit." @@ -22449,41 +22227,41 @@ msgstr "-1 signifie sans limite." #: utils/misc/guc.c:1965 msgid "Vacuum cost for a page found in the buffer cache." -msgstr "Coût d'un VACUUM pour une page trouvée dans le cache du tampon." +msgstr "Coût d'un VACUUM pour une page trouvée dans le cache du tampon." #: utils/misc/guc.c:1975 msgid "Vacuum cost for a page not found in the buffer cache." -msgstr "Coût d'un VACUUM pour une page introuvable dans le cache du tampon." +msgstr "Coût d'un VACUUM pour une page introuvable dans le cache du tampon." #: utils/misc/guc.c:1985 msgid "Vacuum cost for a page dirtied by vacuum." -msgstr "Coût d'un VACUUM pour une page modifiée par VACUUM." +msgstr "Coût d'un VACUUM pour une page modifiée par VACUUM." #: utils/misc/guc.c:1995 msgid "Vacuum cost amount available before napping." -msgstr "Coût du VACUUM disponible avant un repos." +msgstr "Coût du VACUUM disponible avant un repos." #: utils/misc/guc.c:2005 msgid "Vacuum cost delay in milliseconds." -msgstr "Délai d'un coût de VACUUM en millisecondes." +msgstr "Délai d'un coût de VACUUM en millisecondes." #: utils/misc/guc.c:2016 msgid "Vacuum cost delay in milliseconds, for autovacuum." -msgstr "Délai d'un coût de VACUUM en millisecondes, pour autovacuum." +msgstr "Délai d'un coût de VACUUM en millisecondes, pour autovacuum." #: utils/misc/guc.c:2027 msgid "Vacuum cost amount available before napping, for autovacuum." -msgstr "Coût du VACUUM disponible avant un repos, pour autovacuum." +msgstr "Coût du VACUUM disponible avant un repos, pour autovacuum." #: utils/misc/guc.c:2037 msgid "Sets the maximum number of simultaneously open files for each server process." msgstr "" -"Initialise le nombre maximum de fichiers ouverts simultanément pour chaque\n" +"Initialise le nombre maximum de fichiers ouverts simultanément pour chaque\n" "processus serveur." #: utils/misc/guc.c:2050 msgid "Sets the maximum number of simultaneously prepared transactions." -msgstr "Initialise le nombre maximum de transactions préparées simultanément." +msgstr "Initialise le nombre maximum de transactions préparées simultanément." #: utils/misc/guc.c:2061 msgid "Sets the minimum OID of tables for tracking locks." @@ -22491,7 +22269,7 @@ msgstr "Initialise l'OID minimum des tables pour tracer les verrous." #: utils/misc/guc.c:2062 msgid "Is used to avoid output on system tables." -msgstr "Est utilisé pour éviter la sortie sur des tables systèmes." +msgstr "Est utilisé pour éviter la sortie sur des tables systèmes." #: utils/misc/guc.c:2071 msgid "Sets the OID of the table with unconditionally lock tracing." @@ -22499,43 +22277,43 @@ msgstr "Configure l'OID de la table avec une trace des verrous sans condition." #: utils/misc/guc.c:2083 msgid "Sets the maximum allowed duration of any statement." -msgstr "Initialise la durée maximum permise pour toute instruction." +msgstr "Initialise la durée maximum permise pour toute instruction." #: utils/misc/guc.c:2084 utils/misc/guc.c:2095 utils/misc/guc.c:2106 msgid "A value of 0 turns off the timeout." -msgstr "Une valeur de 0 désactive le timeout." +msgstr "Une valeur de 0 désactive le timeout." #: utils/misc/guc.c:2094 msgid "Sets the maximum allowed duration of any wait for a lock." -msgstr "Initialise la durée maximum permise pour toute attente d'un verrou." +msgstr "Initialise la durée maximum permise pour toute attente d'un verrou." #: utils/misc/guc.c:2105 msgid "Sets the maximum allowed duration of any idling transaction." -msgstr "Initialise la durée maximale autorisée pour toute transaction en attente." +msgstr "Initialise la durée maximale autorisée pour toute transaction en attente." #: utils/misc/guc.c:2116 msgid "Minimum age at which VACUUM should freeze a table row." -msgstr "Âge minimum à partir duquel VACUUM devra geler une ligne de table." +msgstr "Âge minimum à partir duquel VACUUM devra geler une ligne de table." #: utils/misc/guc.c:2126 msgid "Age at which VACUUM should scan whole table to freeze tuples." msgstr "" -"Âge à partir duquel VACUUM devra parcourir une table complète pour geler les\n" +"Âge à partir duquel VACUUM devra parcourir une table complète pour geler les\n" "lignes." #: utils/misc/guc.c:2136 msgid "Minimum age at which VACUUM should freeze a MultiXactId in a table row." -msgstr "Âge minimum à partir duquel VACUUM devra geler un MultiXactId dans une ligne de table." +msgstr "Âge minimum à partir duquel VACUUM devra geler un MultiXactId dans une ligne de table." #: utils/misc/guc.c:2146 msgid "Multixact age at which VACUUM should scan whole table to freeze tuples." msgstr "" -"Âge Multixact à partir duquel VACUUM devra parcourir une table complète pour geler les\n" +"Âge Multixact à partir duquel VACUUM devra parcourir une table complète pour geler les\n" "lignes." #: utils/misc/guc.c:2156 msgid "Number of transactions by which VACUUM and HOT cleanup should be deferred, if any." -msgstr "Nombre de transactions à partir duquel les nettoyages VACUUM et HOT doivent être déferrés." +msgstr "Nombre de transactions à partir duquel les nettoyages VACUUM et HOT doivent être déferrés." #: utils/misc/guc.c:2169 msgid "Sets the maximum number of locks per transaction." @@ -22544,20 +22322,20 @@ msgstr "Initialise le nombre maximum de verrous par transaction." #: utils/misc/guc.c:2170 msgid "The shared lock table is sized on the assumption that at most max_locks_per_transaction * max_connections distinct objects will need to be locked at any one time." msgstr "" -"La table des verrous partagés est dimensionnée sur l'idée qu'au plus\n" +"La table des verrous partagés est dimensionnée sur l'idée qu'au plus\n" "max_locks_per_transaction * max_connections objets distincts auront besoin\n" -"d'être verrouillés à tout moment." +"d'être verrouillés à tout moment." #: utils/misc/guc.c:2181 msgid "Sets the maximum number of predicate locks per transaction." -msgstr "Initialise le nombre maximum de verrous prédicats par transaction." +msgstr "Initialise le nombre maximum de verrous prédicats par transaction." #: utils/misc/guc.c:2182 msgid "The shared predicate lock table is sized on the assumption that at most max_pred_locks_per_transaction * max_connections distinct objects will need to be locked at any one time." msgstr "" -"La table des verrous de prédicat partagés est dimensionnée sur l'idée qu'au plus\n" +"La table des verrous de prédicat partagés est dimensionnée sur l'idée qu'au plus\n" "max_pred_locks_per_transaction * max_connections objets distincts auront besoin\n" -"d'être verrouillés à tout moment." +"d'être verrouillés à tout moment." #: utils/misc/guc.c:2193 msgid "Sets the maximum allowed time to complete client authentication." @@ -22571,945 +22349,951 @@ msgstr "Attends N secondes au lancement de la connexion avant l'authentification #: utils/misc/guc.c:2216 msgid "Sets the number of WAL files held for standby servers." -msgstr "Initialise le nombre de journaux de transactions conservés tenus par les seveurs en attente." +msgstr "Initialise le nombre de journaux de transactions conservés tenus par les seveurs en attente." #: utils/misc/guc.c:2226 msgid "Sets the minimum size to shrink the WAL to." -msgstr "Initialise la taille minimale à laquelle réduire l'espace des journaux de transaction." +msgstr "Initialise la taille minimale à laquelle réduire l'espace des journaux de transaction." #: utils/misc/guc.c:2237 msgid "Sets the WAL size that triggers a checkpoint." -msgstr "Initialise la volumétrie de journaux de transaction qui déclenche un checkpoint." +msgstr "Initialise la volumétrie de journaux de transaction qui déclenche un checkpoint." #: utils/misc/guc.c:2248 msgid "Sets the maximum time between automatic WAL checkpoints." msgstr "" -"Initialise le temps maximum entre des points de vérification (checkpoints)\n" +"Initialise le temps maximum entre des points de vérification (checkpoints)\n" "pour les journaux de transactions." #: utils/misc/guc.c:2259 msgid "Enables warnings if checkpoint segments are filled more frequently than this." msgstr "" "Active des messages d'avertissement si les segments des points de\n" -"vérifications se remplissent plus fréquemment que cette durée." +"vérifications se remplissent plus fréquemment que cette durée." #: utils/misc/guc.c:2261 msgid "Write a message to the server log if checkpoints caused by the filling of checkpoint segment files happens more frequently than this number of seconds. Zero turns off the warning." msgstr "" -"Écrit un message dans les journaux applicatifs du serveur si les points de\n" -"vérifications causées par le remplissage des journaux de transaction avec\n" -"des points de vérification qui arrivent plus fréquemment que ce nombre de\n" -"secondes. Une valeur 0 désactive l'avertissement." +"Écrit un message dans les journaux applicatifs du serveur si les points de\n" +"vérifications causées par le remplissage des journaux de transaction avec\n" +"des points de vérification qui arrivent plus fréquemment que ce nombre de\n" +"secondes. Une valeur 0 désactive l'avertissement." -#: utils/misc/guc.c:2273 utils/misc/guc.c:2431 utils/misc/guc.c:2459 +#: utils/misc/guc.c:2273 utils/misc/guc.c:2430 utils/misc/guc.c:2457 msgid "Number of pages after which previously performed writes are flushed to disk." -msgstr "Nombre de pages après lequel les précédentes écritures seront synchronisées sur disque." +msgstr "Nombre de pages après lequel les précédentes écritures seront synchronisées sur disque." -#: utils/misc/guc.c:2285 +#: utils/misc/guc.c:2284 msgid "Sets the number of disk-page buffers in shared memory for WAL." msgstr "" -"Initialise le nombre de tampons de pages disque dans la mémoire partagée\n" +"Initialise le nombre de tampons de pages disque dans la mémoire partagée\n" "pour les journaux de transactions." -#: utils/misc/guc.c:2296 +#: utils/misc/guc.c:2295 msgid "Time between WAL flushes performed in the WAL writer." -msgstr "Temps entre les synchronisations des WAL sur disques effectuées par le processus d'écriture des journaux de transaction" +msgstr "Temps entre les synchronisations des WAL sur disques effectuées par le processus d'écriture des journaux de transaction" -#: utils/misc/guc.c:2307 -msgid "Amount of WAL written out by WAL writer triggering a flush." -msgstr "Quantité de WAL écrits par le processus d'écriture des journaux de transaction devant déclencher une synchronisation sur disque." +#: utils/misc/guc.c:2306 +msgid "Amount of WAL written out by WAL writer that triggers a flush." +msgstr "Quantité de WAL écrits par le processus d'écriture des journaux de transaction devant déclencher une synchronisation sur disque." -#: utils/misc/guc.c:2319 +#: utils/misc/guc.c:2318 msgid "Sets the maximum number of simultaneously running WAL sender processes." msgstr "" "Initialise le nombre maximum de processus d'envoi des journaux de transactions\n" -"exécutés simultanément." +"exécutés simultanément." -#: utils/misc/guc.c:2330 +#: utils/misc/guc.c:2329 msgid "Sets the maximum number of simultaneously defined replication slots." -msgstr "Initialise le nombre maximum de slots de réplication définis simultanément." +msgstr "Initialise le nombre maximum de slots de réplication définis simultanément." -#: utils/misc/guc.c:2340 +#: utils/misc/guc.c:2339 msgid "Sets the maximum time to wait for WAL replication." -msgstr "Initialise le temps maximum à attendre pour la réplication des WAL." +msgstr "Initialise le temps maximum à attendre pour la réplication des WAL." -#: utils/misc/guc.c:2351 +#: utils/misc/guc.c:2350 msgid "Sets the delay in microseconds between transaction commit and flushing WAL to disk." msgstr "" -"Initialise le délai en microsecondes entre l'acceptation de la transaction\n" +"Initialise le délai en microsecondes entre l'acceptation de la transaction\n" "et le vidage du journal de transaction sur disque." -#: utils/misc/guc.c:2363 +#: utils/misc/guc.c:2362 msgid "Sets the minimum concurrent open transactions before performing commit_delay." msgstr "" -"Initialise le nombre minimum de transactions ouvertes simultanément avant le\n" +"Initialise le nombre minimum de transactions ouvertes simultanément avant le\n" "commit_delay." -#: utils/misc/guc.c:2374 +#: utils/misc/guc.c:2373 msgid "Sets the number of digits displayed for floating-point values." -msgstr "Initialise le nombre de chiffres affichés pour les valeurs à virgule flottante." +msgstr "Initialise le nombre de chiffres affichés pour les valeurs à virgule flottante." -#: utils/misc/guc.c:2375 +#: utils/misc/guc.c:2374 msgid "This affects real, double precision, and geometric data types. The parameter value is added to the standard number of digits (FLT_DIG or DBL_DIG as appropriate)." msgstr "" -"Ceci affecte les types de données real, double precision et géométriques.\n" -"La valeur du paramètre est ajoutée au nombre standard de chiffres (FLT_DIG\n" -"ou DBL_DIG comme approprié)." +"Ceci affecte les types de données real, double precision et géométriques.\n" +"La valeur du paramètre est ajoutée au nombre standard de chiffres (FLT_DIG\n" +"ou DBL_DIG comme approprié)." -#: utils/misc/guc.c:2386 +#: utils/misc/guc.c:2385 msgid "Sets the minimum execution time above which statements will be logged." msgstr "" -"Initialise le temps d'exécution minimum au-dessus de lequel les instructions\n" -"seront tracées." +"Initialise le temps d'exécution minimum au-dessus de lequel les instructions\n" +"seront tracées." -#: utils/misc/guc.c:2388 +#: utils/misc/guc.c:2387 msgid "Zero prints all queries. -1 turns this feature off." -msgstr "Zéro affiche toutes les requêtes. -1 désactive cette fonctionnalité." +msgstr "Zéro affiche toutes les requêtes. -1 désactive cette fonctionnalité." -#: utils/misc/guc.c:2398 +#: utils/misc/guc.c:2397 msgid "Sets the minimum execution time above which autovacuum actions will be logged." msgstr "" -"Initialise le temps d'exécution minimum au-dessus duquel les actions\n" -"autovacuum seront tracées." +"Initialise le temps d'exécution minimum au-dessus duquel les actions\n" +"autovacuum seront tracées." -#: utils/misc/guc.c:2400 +#: utils/misc/guc.c:2399 msgid "Zero prints all actions. -1 turns autovacuum logging off." -msgstr "Zéro affiche toutes les requêtes. -1 désactive cette fonctionnalité." +msgstr "Zéro affiche toutes les requêtes. -1 désactive cette fonctionnalité." -#: utils/misc/guc.c:2410 +#: utils/misc/guc.c:2409 msgid "Background writer sleep time between rounds." msgstr "" -"Temps d'endormissement du processus d'écriture en tâche de fond en\n" +"Temps d'endormissement du processus d'écriture en tâche de fond en\n" "millisecondes." -#: utils/misc/guc.c:2421 +#: utils/misc/guc.c:2420 msgid "Background writer maximum number of LRU pages to flush per round." msgstr "" -"Nombre de pages LRU maximum à nettoyer par le processus d'écriture en\n" -"tâche de fond." +"Nombre de pages LRU maximum à nettoyer par le processus d'écriture en\n" +"tâche de fond." -#: utils/misc/guc.c:2445 +#: utils/misc/guc.c:2443 msgid "Number of simultaneous requests that can be handled efficiently by the disk subsystem." -msgstr "Nombre de requêtes simultanées pouvant être gérées efficacement par le sous-système disque." +msgstr "Nombre de requêtes simultanées pouvant être gérées efficacement par le sous-système disque." -#: utils/misc/guc.c:2446 +#: utils/misc/guc.c:2444 msgid "For RAID arrays, this should be approximately the number of drive spindles in the array." msgstr "" -"Pour les systèmes RAID, cela devrait être approximativement le nombre de\n" -"têtes de lecture du système." +"Pour les systèmes RAID, cela devrait être approximativement le nombre de\n" +"têtes de lecture du système." -#: utils/misc/guc.c:2472 +#: utils/misc/guc.c:2470 msgid "Maximum number of concurrent worker processes." -msgstr "Nombre maximum de background workers simultanés." +msgstr "Nombre maximum de background workers simultanés." -#: utils/misc/guc.c:2482 +#: utils/misc/guc.c:2480 msgid "Automatic log file rotation will occur after N minutes." msgstr "" "La rotation automatique des journaux applicatifs s'effectue toutes les N\n" "minutes." -#: utils/misc/guc.c:2493 +#: utils/misc/guc.c:2491 msgid "Automatic log file rotation will occur after N kilobytes." -msgstr "La rotation automatique des journaux applicatifs s'effectue après N Ko." +msgstr "La rotation automatique des journaux applicatifs s'effectue après N Ko." -#: utils/misc/guc.c:2504 +#: utils/misc/guc.c:2502 msgid "Shows the maximum number of function arguments." msgstr "Affiche le nombre maximum d'arguments de fonction." -#: utils/misc/guc.c:2515 +#: utils/misc/guc.c:2513 msgid "Shows the maximum number of index keys." -msgstr "Affiche le nombre maximum de clés d'index." +msgstr "Affiche le nombre maximum de clés d'index." -#: utils/misc/guc.c:2526 +#: utils/misc/guc.c:2524 msgid "Shows the maximum identifier length." msgstr "Affiche la longueur maximum d'un identifiant" -#: utils/misc/guc.c:2537 +#: utils/misc/guc.c:2535 msgid "Shows the size of a disk block." msgstr "Affiche la taille d'un bloc de disque." -#: utils/misc/guc.c:2548 +#: utils/misc/guc.c:2546 msgid "Shows the number of pages per disk file." msgstr "Affiche le nombre de pages par fichier." -#: utils/misc/guc.c:2559 +#: utils/misc/guc.c:2557 msgid "Shows the block size in the write ahead log." msgstr "Affiche la taille du bloc dans les journaux de transactions." -#: utils/misc/guc.c:2570 +#: utils/misc/guc.c:2568 msgid "Sets the time to wait before retrying to retrieve WAL after a failed attempt." -msgstr "Initalise le temps à attendre avant de retenter de récupérer un WAL après une tentative infructueuse." +msgstr "Initalise le temps à attendre avant de retenter de récupérer un WAL après une tentative infructueuse." -#: utils/misc/guc.c:2582 +#: utils/misc/guc.c:2580 msgid "Shows the number of pages per write ahead log segment." msgstr "Affiche le nombre de pages par journal de transactions." -#: utils/misc/guc.c:2595 +#: utils/misc/guc.c:2593 msgid "Time to sleep between autovacuum runs." -msgstr "Durée d'endormissement entre deux exécutions d'autovacuum." +msgstr "Durée d'endormissement entre deux exécutions d'autovacuum." -#: utils/misc/guc.c:2605 +#: utils/misc/guc.c:2603 msgid "Minimum number of tuple updates or deletes prior to vacuum." -msgstr "Nombre minimum de lignes mises à jour ou supprimées avant le VACUUM." +msgstr "Nombre minimum de lignes mises à jour ou supprimées avant le VACUUM." -#: utils/misc/guc.c:2614 +#: utils/misc/guc.c:2612 msgid "Minimum number of tuple inserts, updates, or deletes prior to analyze." -msgstr "Nombre minimum de lignes insérées, mises à jour ou supprimées avant un ANALYZE." +msgstr "Nombre minimum de lignes insérées, mises à jour ou supprimées avant un ANALYZE." -#: utils/misc/guc.c:2624 +#: utils/misc/guc.c:2622 msgid "Age at which to autovacuum a table to prevent transaction ID wraparound." msgstr "" -"Âge à partir duquel l'autovacuum se déclenche sur une table pour empêcher la\n" -"réinitialisation de l'identifiant de transaction" +"Âge à partir duquel l'autovacuum se déclenche sur une table pour empêcher la\n" +"réinitialisation de l'identifiant de transaction" -#: utils/misc/guc.c:2635 +#: utils/misc/guc.c:2633 msgid "Multixact age at which to autovacuum a table to prevent multixact wraparound." msgstr "" -"Âge multixact à partir duquel l'autovacuum se déclenche sur une table pour empêcher la\n" -"réinitialisation du multixact" +"Âge multixact à partir duquel l'autovacuum se déclenche sur une table pour empêcher la\n" +"réinitialisation du multixact" -#: utils/misc/guc.c:2645 +#: utils/misc/guc.c:2643 msgid "Sets the maximum number of simultaneously running autovacuum worker processes." -msgstr "Initialise le nombre maximum de processus autovacuum exécutés simultanément." +msgstr "Initialise le nombre maximum de processus autovacuum exécutés simultanément." -#: utils/misc/guc.c:2655 +#: utils/misc/guc.c:2653 msgid "Sets the maximum number of parallel processes per executor node." -msgstr "Initialise le nombre maximum de processus parallèles par n½ud d'exécution." +msgstr "Initialise le nombre maximum de processus parallèles par nÅ“ud d'exécution." -#: utils/misc/guc.c:2665 +#: utils/misc/guc.c:2663 msgid "Sets the maximum memory to be used by each autovacuum worker process." -msgstr "Initialise la mémoire maximum utilisée par chaque processus autovacuum worker." +msgstr "Initialise la mémoire maximum utilisée par chaque processus autovacuum worker." -#: utils/misc/guc.c:2676 +#: utils/misc/guc.c:2674 msgid "Time before a snapshot is too old to read pages changed after the snapshot was taken." -msgstr "Temps à partir duquel un snapshot est trop ancien pour lire des pages ayant changées après que le snapshot ait été effectué." +msgstr "Temps à partir duquel un snapshot est trop ancien pour lire des pages ayant changées après que le snapshot ait été effectué." -#: utils/misc/guc.c:2677 +#: utils/misc/guc.c:2675 msgid "A value of -1 disables this feature." -msgstr "Une valeur de -1 désactive cette fonctionnalité." +msgstr "Une valeur de -1 désactive cette fonctionnalité." -#: utils/misc/guc.c:2687 +#: utils/misc/guc.c:2685 msgid "Time between issuing TCP keepalives." -msgstr "Secondes entre l'exécution de « TCP keepalives »." +msgstr "Secondes entre l'exécution de « TCP keepalives »." -#: utils/misc/guc.c:2688 utils/misc/guc.c:2699 +#: utils/misc/guc.c:2686 utils/misc/guc.c:2697 msgid "A value of 0 uses the system default." -msgstr "Une valeur de 0 désactive la valeur système par défaut." +msgstr "Une valeur de 0 désactive la valeur système par défaut." -#: utils/misc/guc.c:2698 +#: utils/misc/guc.c:2696 msgid "Time between TCP keepalive retransmits." -msgstr "Secondes entre les retransmissions de « TCP keepalive »." +msgstr "Secondes entre les retransmissions de « TCP keepalive »." -#: utils/misc/guc.c:2709 +#: utils/misc/guc.c:2707 msgid "SSL renegotiation is no longer supported; this can only be 0." -msgstr "La renégociation SSL n'est plus supportée; ce paramètre ne peut être positionné qu'à 0." +msgstr "La renégociation SSL n'est plus supportée; ce paramètre ne peut être positionné qu'à 0." -#: utils/misc/guc.c:2720 +#: utils/misc/guc.c:2718 msgid "Maximum number of TCP keepalive retransmits." -msgstr "Nombre maximum de retransmissions de « TCP keepalive »." +msgstr "Nombre maximum de retransmissions de « TCP keepalive »." -#: utils/misc/guc.c:2721 +#: utils/misc/guc.c:2719 msgid "This controls the number of consecutive keepalive retransmits that can be lost before a connection is considered dead. A value of 0 uses the system default." msgstr "" -"Ceci contrôle le nombre de retransmissions keepalive consécutives qui\n" -"peuvent être perdues avant qu'une connexion ne soit considérée morte. Une\n" -"valeur de 0 utilise la valeur par défaut du système." +"Ceci contrôle le nombre de retransmissions keepalive consécutives qui\n" +"peuvent être perdues avant qu'une connexion ne soit considérée morte. Une\n" +"valeur de 0 utilise la valeur par défaut du système." -#: utils/misc/guc.c:2732 +#: utils/misc/guc.c:2730 msgid "Sets the maximum allowed result for exact search by GIN." -msgstr "Configure le nombre maximum de résultats lors d'une recherche par GIN." +msgstr "Configure le nombre maximum de résultats lors d'une recherche par GIN." -#: utils/misc/guc.c:2743 +#: utils/misc/guc.c:2741 msgid "Sets the planner's assumption about the size of the disk cache." msgstr "Initialise le sentiment du planificateur sur la taille du cache disque." -#: utils/misc/guc.c:2744 +#: utils/misc/guc.c:2742 msgid "That is, the portion of the kernel's disk cache that will be used for PostgreSQL data files. This is measured in disk pages, which are normally 8 kB each." msgstr "" -"C'est-à-dire, la portion du cache disque du noyau qui sera utilisé pour les\n" -"fichiers de données de PostgreSQL. C'est mesuré en pages disque, qui font\n" +"C'est-à-dire, la portion du cache disque du noyau qui sera utilisé pour les\n" +"fichiers de données de PostgreSQL. C'est mesuré en pages disque, qui font\n" "normalement 8 Ko chaque." -#: utils/misc/guc.c:2756 +#: utils/misc/guc.c:2754 msgid "Sets the minimum size of relations to be considered for parallel scan." -msgstr "Initialise la taille mininmum d'une relation pour qu'elle soit considérée pour un parcours parallèle." +msgstr "Initialise la taille mininmum d'une relation pour qu'elle soit considérée pour un parcours parallèle." -#: utils/misc/guc.c:2768 +#: utils/misc/guc.c:2766 msgid "Shows the server version as an integer." msgstr "Affiche la version du serveur sous la forme d'un entier." -#: utils/misc/guc.c:2779 +#: utils/misc/guc.c:2777 msgid "Log the use of temporary files larger than this number of kilobytes." msgstr "" "Trace l'utilisation de fichiers temporaires plus gros que ce nombre de\n" "kilooctets." -#: utils/misc/guc.c:2780 +#: utils/misc/guc.c:2778 msgid "Zero logs all files. The default is -1 (turning this feature off)." msgstr "" -"Zéro trace toutes les requêtes. La valeur par défaut est -1 (désactivant\n" -"cette fonctionnalité)." +"Zéro trace toutes les requêtes. La valeur par défaut est -1 (désactivant\n" +"cette fonctionnalité)." -#: utils/misc/guc.c:2790 +#: utils/misc/guc.c:2788 msgid "Sets the size reserved for pg_stat_activity.query, in bytes." -msgstr "Configure la taille réservée pour pg_stat_activity.query, en octets." +msgstr "Configure la taille réservée pour pg_stat_activity.query, en octets." -#: utils/misc/guc.c:2805 +#: utils/misc/guc.c:2803 msgid "Sets the maximum size of the pending list for GIN index." msgstr "Configure la taille maximale de la pending list d'un index GIN" -#: utils/misc/guc.c:2825 +#: utils/misc/guc.c:2823 msgid "Sets the planner's estimate of the cost of a sequentially fetched disk page." msgstr "" -"Initialise l'estimation du planificateur pour le coût d'une page disque\n" -"récupérée séquentiellement." +"Initialise l'estimation du planificateur pour le coût d'une page disque\n" +"récupérée séquentiellement." -#: utils/misc/guc.c:2835 +#: utils/misc/guc.c:2833 msgid "Sets the planner's estimate of the cost of a nonsequentially fetched disk page." msgstr "" -"Initialise l'estimation du plnnificateur pour le coût d'une page disque\n" -"récupérée non séquentiellement." +"Initialise l'estimation du plnnificateur pour le coût d'une page disque\n" +"récupérée non séquentiellement." -#: utils/misc/guc.c:2845 +#: utils/misc/guc.c:2843 msgid "Sets the planner's estimate of the cost of processing each tuple (row)." msgstr "" -"Initialise l'estimation du planificateur pour le coût d'exécution sur chaque\n" +"Initialise l'estimation du planificateur pour le coût d'exécution sur chaque\n" "ligne." -#: utils/misc/guc.c:2855 +#: utils/misc/guc.c:2853 msgid "Sets the planner's estimate of the cost of processing each index entry during an index scan." msgstr "" -"Initialise l'estimation du planificateur pour le coût de traitement de\n" -"chaque ligne indexée lors d'un parcours d'index." +"Initialise l'estimation du planificateur pour le coût de traitement de\n" +"chaque ligne indexée lors d'un parcours d'index." -#: utils/misc/guc.c:2865 +#: utils/misc/guc.c:2863 msgid "Sets the planner's estimate of the cost of processing each operator or function call." msgstr "" -"Initialise l'estimation du planificateur pour le coût de traitement de\n" -"chaque opérateur ou appel de fonction." +"Initialise l'estimation du planificateur pour le coût de traitement de\n" +"chaque opérateur ou appel de fonction." -#: utils/misc/guc.c:2875 +#: utils/misc/guc.c:2873 msgid "Sets the planner's estimate of the cost of passing each tuple (row) from worker to master backend." -msgstr "Initialise l'estimation du planificateur pour le coût de passage de chaque ligne d'un processus fils vers le processus maître." +msgstr "Initialise l'estimation du planificateur pour le coût de passage de chaque ligne d'un processus fils vers le processus maître." -#: utils/misc/guc.c:2885 +#: utils/misc/guc.c:2883 msgid "Sets the planner's estimate of the cost of starting up worker processes for parallel query." -msgstr "Initialise l'estimation du planificateur pour le coût de démarrage des processus d'exécution de requêtes parallèles." +msgstr "Initialise l'estimation du planificateur pour le coût de démarrage des processus d'exécution de requêtes parallèles." -#: utils/misc/guc.c:2896 +#: utils/misc/guc.c:2894 msgid "Sets the planner's estimate of the fraction of a cursor's rows that will be retrieved." -msgstr "Initialise l'estimation du planificateur de la fraction des lignes d'un curseur à récupérer." +msgstr "Initialise l'estimation du planificateur de la fraction des lignes d'un curseur à récupérer." -#: utils/misc/guc.c:2907 +#: utils/misc/guc.c:2905 msgid "GEQO: selective pressure within the population." -msgstr "GEQO : pression sélective dans la population." +msgstr "GEQO : pression sélective dans la population." -#: utils/misc/guc.c:2917 +#: utils/misc/guc.c:2915 msgid "GEQO: seed for random path selection." -msgstr "GEQO : graine pour la sélection du chemin aléatoire." +msgstr "GEQO : graine pour la sélection du chemin aléatoire." -#: utils/misc/guc.c:2927 +#: utils/misc/guc.c:2925 msgid "Multiple of the average buffer usage to free per round." -msgstr "Multiplede l'utilisation moyenne des tampons à libérer à chaque tour." +msgstr "Multiplede l'utilisation moyenne des tampons à libérer à chaque tour." -#: utils/misc/guc.c:2937 +#: utils/misc/guc.c:2935 msgid "Sets the seed for random-number generation." -msgstr "Initialise la clé pour la génération de nombres aléatoires." +msgstr "Initialise la clé pour la génération de nombres aléatoires." -#: utils/misc/guc.c:2948 +#: utils/misc/guc.c:2946 msgid "Number of tuple updates or deletes prior to vacuum as a fraction of reltuples." msgstr "" -"Nombre de lignes modifiées ou supprimées avant d'exécuter un VACUUM\n" +"Nombre de lignes modifiées ou supprimées avant d'exécuter un VACUUM\n" "(fraction de reltuples)." -#: utils/misc/guc.c:2957 +#: utils/misc/guc.c:2955 msgid "Number of tuple inserts, updates, or deletes prior to analyze as a fraction of reltuples." msgstr "" -"Nombre de lignes insérées, mises à jour ou supprimées avant d'analyser\n" +"Nombre de lignes insérées, mises à jour ou supprimées avant d'analyser\n" "une fraction de reltuples." -#: utils/misc/guc.c:2967 +#: utils/misc/guc.c:2965 msgid "Time spent flushing dirty buffers during checkpoint, as fraction of checkpoint interval." msgstr "" -"Temps passé à vider les tampons lors du point de vérification, en tant que\n" -"fraction de l'intervalle du point de vérification." +"Temps passé à vider les tampons lors du point de vérification, en tant que\n" +"fraction de l'intervalle du point de vérification." -#: utils/misc/guc.c:2986 +#: utils/misc/guc.c:2984 msgid "Sets the shell command that will be called to archive a WAL file." -msgstr "La commande shell qui sera appelée pour archiver un journal de transaction." +msgstr "La commande shell qui sera appelée pour archiver un journal de transaction." -#: utils/misc/guc.c:2996 +#: utils/misc/guc.c:2994 msgid "Sets the client's character set encoding." msgstr "Initialise l'encodage du client." -#: utils/misc/guc.c:3007 +#: utils/misc/guc.c:3005 msgid "Controls information prefixed to each log line." -msgstr "Contrôle l'information préfixée sur chaque ligne de trace." +msgstr "Contrôle l'information préfixée sur chaque ligne de trace." -#: utils/misc/guc.c:3008 +#: utils/misc/guc.c:3006 msgid "If blank, no prefix is used." -msgstr "Si vide, aucun préfixe n'est utilisé." +msgstr "Si vide, aucun préfixe n'est utilisé." -#: utils/misc/guc.c:3017 +#: utils/misc/guc.c:3015 msgid "Sets the time zone to use in log messages." -msgstr "Initialise le fuseau horaire à utiliser pour les journaux applicatifs." +msgstr "Initialise le fuseau horaire à utiliser pour les journaux applicatifs." -#: utils/misc/guc.c:3027 +#: utils/misc/guc.c:3025 msgid "Sets the display format for date and time values." msgstr "Initialise le format d'affichage des valeurs date et time." -#: utils/misc/guc.c:3028 +#: utils/misc/guc.c:3026 msgid "Also controls interpretation of ambiguous date inputs." -msgstr "Contrôle aussi l'interprétation des dates ambigues en entrée." +msgstr "Contrôle aussi l'interprétation des dates ambigues en entrée." -#: utils/misc/guc.c:3039 +#: utils/misc/guc.c:3037 msgid "Sets the default tablespace to create tables and indexes in." -msgstr "Initialise le tablespace par défaut pour créer les tables et index." +msgstr "Initialise le tablespace par défaut pour créer les tables et index." -#: utils/misc/guc.c:3040 +#: utils/misc/guc.c:3038 msgid "An empty string selects the database's default tablespace." -msgstr "Une chaîne vide sélectionne le tablespace par défaut de la base de données." +msgstr "Une chaîne vide sélectionne le tablespace par défaut de la base de données." -#: utils/misc/guc.c:3050 +#: utils/misc/guc.c:3048 msgid "Sets the tablespace(s) to use for temporary tables and sort files." msgstr "" -"Initialise le(s) tablespace(s) à utiliser pour les tables temporaires et les\n" +"Initialise le(s) tablespace(s) à utiliser pour les tables temporaires et les\n" "fichiers de tri." -#: utils/misc/guc.c:3061 +#: utils/misc/guc.c:3059 msgid "Sets the path for dynamically loadable modules." msgstr "Initialise le chemin des modules chargeables dynamiquement." -#: utils/misc/guc.c:3062 +#: utils/misc/guc.c:3060 msgid "If a dynamically loadable module needs to be opened and the specified name does not have a directory component (i.e., the name does not contain a slash), the system will search this path for the specified file." msgstr "" -"Si un module chargeable dynamiquement a besoin d'être ouvert et que le nom\n" -"spécifié n'a pas une composante répertoire (c'est-à-dire que le nom ne\n" -"contient pas un '/'), le système cherche le fichier spécifié sur ce chemin." +"Si un module chargeable dynamiquement a besoin d'être ouvert et que le nom\n" +"spécifié n'a pas une composante répertoire (c'est-à-dire que le nom ne\n" +"contient pas un '/'), le système cherche le fichier spécifié sur ce chemin." -#: utils/misc/guc.c:3075 +#: utils/misc/guc.c:3073 msgid "Sets the location of the Kerberos server key file." -msgstr "Initalise l'emplacement du fichier de la clé serveur pour Kerberos." +msgstr "Initalise l'emplacement du fichier de la clé serveur pour Kerberos." -#: utils/misc/guc.c:3086 +#: utils/misc/guc.c:3084 msgid "Sets the Bonjour service name." msgstr "Initialise le nom du service Bonjour." -#: utils/misc/guc.c:3098 +#: utils/misc/guc.c:3096 msgid "Shows the collation order locale." msgstr "Affiche la locale de tri et de groupement." -#: utils/misc/guc.c:3109 +#: utils/misc/guc.c:3107 msgid "Shows the character classification and case conversion locale." -msgstr "Affiche la classification des caractères et la locale de conversions." +msgstr "Affiche la classification des caractères et la locale de conversions." -#: utils/misc/guc.c:3120 +#: utils/misc/guc.c:3118 msgid "Sets the language in which messages are displayed." -msgstr "Initialise le langage dans lequel les messages sont affichés." +msgstr "Initialise le langage dans lequel les messages sont affichés." -#: utils/misc/guc.c:3130 +#: utils/misc/guc.c:3128 msgid "Sets the locale for formatting monetary amounts." -msgstr "Initialise la locale pour le formattage des montants monétaires." +msgstr "Initialise la locale pour le formattage des montants monétaires." -#: utils/misc/guc.c:3140 +#: utils/misc/guc.c:3138 msgid "Sets the locale for formatting numbers." msgstr "Initialise la locale pour formater les nombres." -#: utils/misc/guc.c:3150 +#: utils/misc/guc.c:3148 msgid "Sets the locale for formatting date and time values." msgstr "Initialise la locale pour formater les valeurs date et time." -#: utils/misc/guc.c:3160 +#: utils/misc/guc.c:3158 msgid "Lists shared libraries to preload into each backend." -msgstr "Liste les bibliothèques partagées à précharger dans chaque processus serveur." +msgstr "Liste les bibliothèques partagées à précharger dans chaque processus serveur." -#: utils/misc/guc.c:3171 +#: utils/misc/guc.c:3169 msgid "Lists shared libraries to preload into server." -msgstr "Liste les bibliothèques partagées à précharger dans le serveur." +msgstr "Liste les bibliothèques partagées à précharger dans le serveur." -#: utils/misc/guc.c:3182 +#: utils/misc/guc.c:3180 msgid "Lists unprivileged shared libraries to preload into each backend." -msgstr "Liste les bibliothèques partagées non privilégiées à précharger dans chaque processus serveur." +msgstr "Liste les bibliothèques partagées non privilégiées à précharger dans chaque processus serveur." -#: utils/misc/guc.c:3193 +#: utils/misc/guc.c:3191 msgid "Sets the schema search order for names that are not schema-qualified." msgstr "" -"Initialise l'ordre de recherche des schémas pour les noms qui ne précisent\n" -"pas le schéma." +"Initialise l'ordre de recherche des schémas pour les noms qui ne précisent\n" +"pas le schéma." -#: utils/misc/guc.c:3205 +#: utils/misc/guc.c:3203 msgid "Sets the server (database) character set encoding." -msgstr "Initialise le codage des caractères pour le serveur (base de données)." +msgstr "Initialise le codage des caractères pour le serveur (base de données)." -#: utils/misc/guc.c:3217 +#: utils/misc/guc.c:3215 msgid "Shows the server version." msgstr "Affiche la version du serveur." -#: utils/misc/guc.c:3229 +#: utils/misc/guc.c:3227 msgid "Sets the current role." -msgstr "Initialise le rôle courant." +msgstr "Initialise le rôle courant." -#: utils/misc/guc.c:3241 +#: utils/misc/guc.c:3239 msgid "Sets the session user name." msgstr "Initialise le nom de l'utilisateur de la session." -#: utils/misc/guc.c:3252 +#: utils/misc/guc.c:3250 msgid "Sets the destination for server log output." msgstr "Initialise la destination des journaux applicatifs du serveur." -#: utils/misc/guc.c:3253 +#: utils/misc/guc.c:3251 msgid "Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and \"eventlog\", depending on the platform." msgstr "" -"Les valeurs valides sont une combinaison de « stderr », « syslog »,\n" -"« csvlog » et « eventlog », suivant la plateforme." +"Les valeurs valides sont une combinaison de « stderr », « syslog »,\n" +"« csvlog » et « eventlog », suivant la plateforme." -#: utils/misc/guc.c:3264 +#: utils/misc/guc.c:3262 msgid "Sets the destination directory for log files." -msgstr "Initialise le répertoire de destination pour les journaux applicatifs." +msgstr "Initialise le répertoire de destination pour les journaux applicatifs." -#: utils/misc/guc.c:3265 +#: utils/misc/guc.c:3263 msgid "Can be specified as relative to the data directory or as absolute path." -msgstr "Accepte un chemin relatif ou absolu pour le répertoire des données." +msgstr "Accepte un chemin relatif ou absolu pour le répertoire des données." -#: utils/misc/guc.c:3275 +#: utils/misc/guc.c:3273 msgid "Sets the file name pattern for log files." -msgstr "Initialise le modèle de nom de fichiers pour les journaux applicatifs." +msgstr "Initialise le modèle de nom de fichiers pour les journaux applicatifs." -#: utils/misc/guc.c:3286 +#: utils/misc/guc.c:3284 msgid "Sets the program name used to identify PostgreSQL messages in syslog." msgstr "" -"Initialise le nom du programme utilisé pour identifier les messages de\n" +"Initialise le nom du programme utilisé pour identifier les messages de\n" "PostgreSQL dans syslog." -#: utils/misc/guc.c:3297 +#: utils/misc/guc.c:3295 msgid "Sets the application name used to identify PostgreSQL messages in the event log." msgstr "" -"Initialise le nom de l'application, utilisé pour identifier les messages de\n" +"Initialise le nom de l'application, utilisé pour identifier les messages de\n" "PostgreSQL dans eventlog." -#: utils/misc/guc.c:3308 +#: utils/misc/guc.c:3306 msgid "Sets the time zone for displaying and interpreting time stamps." -msgstr "Initialise la zone horaire pour afficher et interpréter les dates/heures." +msgstr "Initialise la zone horaire pour afficher et interpréter les dates/heures." -#: utils/misc/guc.c:3318 +#: utils/misc/guc.c:3316 msgid "Selects a file of time zone abbreviations." -msgstr "Sélectionne un fichier contenant les abréviations des fuseaux horaires." +msgstr "Sélectionne un fichier contenant les abréviations des fuseaux horaires." -#: utils/misc/guc.c:3328 +#: utils/misc/guc.c:3326 msgid "Sets the current transaction's isolation level." msgstr "Initialise le niveau d'isolation de la transaction courante." -#: utils/misc/guc.c:3339 +#: utils/misc/guc.c:3337 msgid "Sets the owning group of the Unix-domain socket." msgstr "Initialise le groupe d'appartenance du socket domaine Unix." -#: utils/misc/guc.c:3340 +#: utils/misc/guc.c:3338 msgid "The owning user of the socket is always the user that starts the server." -msgstr "Le propriétaire du socket est toujours l'utilisateur qui a lancé le serveur." +msgstr "Le propriétaire du socket est toujours l'utilisateur qui a lancé le serveur." -#: utils/misc/guc.c:3350 +#: utils/misc/guc.c:3348 msgid "Sets the directories where Unix-domain sockets will be created." -msgstr "Initialise les répertoires où les sockets de domaine Unix seront créés." +msgstr "Initialise les répertoires où les sockets de domaine Unix seront créés." -#: utils/misc/guc.c:3365 +#: utils/misc/guc.c:3363 msgid "Sets the host name or IP address(es) to listen to." -msgstr "Initialise le nom de l'hôte ou l'adresse IP à écouter." +msgstr "Initialise le nom de l'hôte ou l'adresse IP à écouter." -#: utils/misc/guc.c:3380 +#: utils/misc/guc.c:3378 msgid "Sets the server's data directory." -msgstr "Initialise le répertoire des données du serveur." +msgstr "Initialise le répertoire des données du serveur." -#: utils/misc/guc.c:3391 +#: utils/misc/guc.c:3389 msgid "Sets the server's main configuration file." msgstr "Voir le fichier de configuration principal du serveur." -#: utils/misc/guc.c:3402 +#: utils/misc/guc.c:3400 msgid "Sets the server's \"hba\" configuration file." -msgstr "Initialise le fichier de configuration « hba » du serveur." +msgstr "Initialise le fichier de configuration « hba » du serveur." -#: utils/misc/guc.c:3413 +#: utils/misc/guc.c:3411 msgid "Sets the server's \"ident\" configuration file." -msgstr "Initialise le fichier de configuration « ident » du serveur." +msgstr "Initialise le fichier de configuration « ident » du serveur." -#: utils/misc/guc.c:3424 +#: utils/misc/guc.c:3422 msgid "Writes the postmaster PID to the specified file." -msgstr "Écrit le PID du postmaster PID dans le fichier spécifié." +msgstr "Écrit le PID du postmaster PID dans le fichier spécifié." -#: utils/misc/guc.c:3435 +#: utils/misc/guc.c:3433 msgid "Location of the SSL server certificate file." msgstr "Emplacement du fichier du certificat serveur SSL." -#: utils/misc/guc.c:3445 +#: utils/misc/guc.c:3443 msgid "Location of the SSL server private key file." -msgstr "Emplacement du fichier de la clé privée SSL du serveur." +msgstr "Emplacement du fichier de la clé privée SSL du serveur." -#: utils/misc/guc.c:3455 +#: utils/misc/guc.c:3453 msgid "Location of the SSL certificate authority file." -msgstr "Emplacement du fichier du certificat autorité SSL." +msgstr "Emplacement du fichier du certificat autorité SSL." -#: utils/misc/guc.c:3465 +#: utils/misc/guc.c:3463 msgid "Location of the SSL certificate revocation list file." -msgstr "Emplacement du fichier de liste de révocation des certificats SSL." +msgstr "Emplacement du fichier de liste de révocation des certificats SSL." -#: utils/misc/guc.c:3475 +#: utils/misc/guc.c:3473 msgid "Writes temporary statistics files to the specified directory." -msgstr "Écrit les fichiers statistiques temporaires dans le répertoire indiqué." +msgstr "Écrit les fichiers statistiques temporaires dans le répertoire indiqué." -#: utils/misc/guc.c:3486 +#: utils/misc/guc.c:3484 msgid "Number of synchronous standbys and list of names of potential synchronous ones." msgstr "Nombre de standbys synchrones et liste des noms des synchrones potentiels." -#: utils/misc/guc.c:3497 +#: utils/misc/guc.c:3495 msgid "Sets default text search configuration." -msgstr "Initialise le configuration par défaut de la recherche plein texte" +msgstr "Initialise le configuration par défaut de la recherche plein texte" -#: utils/misc/guc.c:3507 +#: utils/misc/guc.c:3505 msgid "Sets the list of allowed SSL ciphers." -msgstr "Initialise la liste des chiffrements SSL autorisés." +msgstr "Initialise la liste des chiffrements SSL autorisés." -#: utils/misc/guc.c:3522 +#: utils/misc/guc.c:3520 msgid "Sets the curve to use for ECDH." -msgstr "Initialise la courbe à utiliser pour ECDH." +msgstr "Initialise la courbe à utiliser pour ECDH." -#: utils/misc/guc.c:3537 +#: utils/misc/guc.c:3535 msgid "Sets the application name to be reported in statistics and logs." -msgstr "Configure le nom de l'application à indiquer dans les statistiques et les journaux." +msgstr "Configure le nom de l'application à indiquer dans les statistiques et les journaux." -#: utils/misc/guc.c:3548 +#: utils/misc/guc.c:3546 msgid "Sets the name of the cluster, which is included in the process title." msgstr "Configure le nom du cluster, qui est inclus dans le titre du processus." -#: utils/misc/guc.c:3568 +#: utils/misc/guc.c:3566 msgid "Sets whether \"\\'\" is allowed in string literals." -msgstr "Indique si « \\' » est autorisé dans une constante de chaîne." +msgstr "Indique si « \\' » est autorisé dans une constante de chaîne." -#: utils/misc/guc.c:3578 +#: utils/misc/guc.c:3576 msgid "Sets the output format for bytea." msgstr "Initialise le format de sortie pour bytea." -#: utils/misc/guc.c:3588 +#: utils/misc/guc.c:3586 msgid "Sets the message levels that are sent to the client." -msgstr "Initialise les niveaux de message envoyés au client." +msgstr "Initialise les niveaux de message envoyés au client." -#: utils/misc/guc.c:3589 utils/misc/guc.c:3642 utils/misc/guc.c:3653 utils/misc/guc.c:3719 +#: utils/misc/guc.c:3587 utils/misc/guc.c:3640 utils/misc/guc.c:3651 utils/misc/guc.c:3717 msgid "Each level includes all the levels that follow it. The later the level, the fewer messages are sent." msgstr "" "Chaque niveau inclut les niveaux qui suivent. Plus loin sera le niveau,\n" -"moindre sera le nombre de messages envoyés." +"moindre sera le nombre de messages envoyés." -#: utils/misc/guc.c:3599 +#: utils/misc/guc.c:3597 msgid "Enables the planner to use constraints to optimize queries." -msgstr "Active l'utilisation des contraintes par le planificateur pour optimiser les requêtes." +msgstr "Active l'utilisation des contraintes par le planificateur pour optimiser les requêtes." -#: utils/misc/guc.c:3600 +#: utils/misc/guc.c:3598 msgid "Table scans will be skipped if their constraints guarantee that no rows match the query." msgstr "" -"Les parcours de tables seront ignorés si leur contraintes garantissent\n" -"qu'aucune ligne ne correspond à la requête." +"Les parcours de tables seront ignorés si leur contraintes garantissent\n" +"qu'aucune ligne ne correspond à la requête." -#: utils/misc/guc.c:3610 +#: utils/misc/guc.c:3608 msgid "Sets the transaction isolation level of each new transaction." msgstr "Initialise le niveau d'isolation des transactions pour chaque nouvelle transaction." -#: utils/misc/guc.c:3620 +#: utils/misc/guc.c:3618 msgid "Sets the display format for interval values." msgstr "Initialise le format d'affichage des valeurs interval." -#: utils/misc/guc.c:3631 +#: utils/misc/guc.c:3629 msgid "Sets the verbosity of logged messages." -msgstr "Initialise la verbosité des messages tracés." +msgstr "Initialise la verbosité des messages tracés." -#: utils/misc/guc.c:3641 +#: utils/misc/guc.c:3639 msgid "Sets the message levels that are logged." -msgstr "Initialise les niveaux de messages tracés." +msgstr "Initialise les niveaux de messages tracés." -#: utils/misc/guc.c:3652 +#: utils/misc/guc.c:3650 msgid "Causes all statements generating error at or above this level to be logged." msgstr "" -"Génère une trace pour toutes les instructions qui produisent une erreur de\n" +"Génère une trace pour toutes les instructions qui produisent une erreur de\n" "ce niveau ou de niveaux plus importants." -#: utils/misc/guc.c:3663 +#: utils/misc/guc.c:3661 msgid "Sets the type of statements logged." -msgstr "Initialise le type d'instructions tracées." +msgstr "Initialise le type d'instructions tracées." -#: utils/misc/guc.c:3673 +#: utils/misc/guc.c:3671 msgid "Sets the syslog \"facility\" to be used when syslog enabled." msgstr "" -"Initialise le niveau (« facility ») de syslog à utilisé lors de l'activation\n" +"Initialise le niveau (« facility ») de syslog à utilisé lors de l'activation\n" "de syslog." -#: utils/misc/guc.c:3688 +#: utils/misc/guc.c:3686 msgid "Sets the session's behavior for triggers and rewrite rules." msgstr "" -"Configure le comportement des sessions pour les triggers et les règles de\n" -"ré-écriture." +"Configure le comportement des sessions pour les triggers et les règles de\n" +"ré-écriture." -#: utils/misc/guc.c:3698 +#: utils/misc/guc.c:3696 msgid "Sets the current transaction's synchronization level." msgstr "Initialise le niveau d'isolation de la transaction courante." -#: utils/misc/guc.c:3708 +#: utils/misc/guc.c:3706 msgid "Allows archiving of WAL files using archive_command." msgstr "Autorise l'archivage des journaux de transactions en utilisant archive_command." -#: utils/misc/guc.c:3718 +#: utils/misc/guc.c:3716 msgid "Enables logging of recovery-related debugging information." -msgstr "Active les traces sur les informations de débogage relatives à la restauration." +msgstr "Active les traces sur les informations de débogage relatives à la restauration." -#: utils/misc/guc.c:3734 +#: utils/misc/guc.c:3732 msgid "Collects function-level statistics on database activity." -msgstr "Récupère les statistiques niveau fonction sur l'activité de la base de données." +msgstr "Récupère les statistiques niveau fonction sur l'activité de la base de données." -#: utils/misc/guc.c:3744 +#: utils/misc/guc.c:3742 msgid "Set the level of information written to the WAL." -msgstr "Configure le niveau des informations écrites dans les journaux de transactions." +msgstr "Configure le niveau des informations écrites dans les journaux de transactions." -#: utils/misc/guc.c:3754 +#: utils/misc/guc.c:3752 msgid "Selects the dynamic shared memory implementation used." -msgstr "Sélectionne l'implémentation de la mémoire partagée dynamique." +msgstr "Sélectionne l'implémentation de la mémoire partagée dynamique." -#: utils/misc/guc.c:3764 +#: utils/misc/guc.c:3762 msgid "Selects the method used for forcing WAL updates to disk." msgstr "" -"Sélectionne la méthode utilisée pour forcer la mise à jour des journaux de\n" +"Sélectionne la méthode utilisée pour forcer la mise à jour des journaux de\n" "transactions sur le disque." -#: utils/misc/guc.c:3774 +#: utils/misc/guc.c:3772 msgid "Sets how binary values are to be encoded in XML." -msgstr "Configure comment les valeurs binaires seront codées en XML." +msgstr "Configure comment les valeurs binaires seront codées en XML." -#: utils/misc/guc.c:3784 +#: utils/misc/guc.c:3782 msgid "Sets whether XML data in implicit parsing and serialization operations is to be considered as documents or content fragments." msgstr "" -"Configure si les données XML dans des opérations d'analyse et de\n" -"sérialisation implicite doivent être considérées comme des documents\n" +"Configure si les données XML dans des opérations d'analyse et de\n" +"sérialisation implicite doivent être considérées comme des documents\n" "ou des fragments de contenu." -#: utils/misc/guc.c:3795 +#: utils/misc/guc.c:3793 msgid "Use of huge pages on Linux." msgstr "Utilisation des HugePages sur Linux." -#: utils/misc/guc.c:3805 +#: utils/misc/guc.c:3803 msgid "Forces use of parallel query facilities." -msgstr "Force l'utilisation des fonctionnalités de requête parallèle." +msgstr "Force l'utilisation des fonctionnalités de requête parallèle." -#: utils/misc/guc.c:3806 +#: utils/misc/guc.c:3804 msgid "If possible, run query using a parallel worker and with parallel restrictions." -msgstr "Si possible, exécute des requêtes utilisant des processus parallèles et avec les restrictions parallèles." +msgstr "Si possible, exécute des requêtes utilisant des processus parallèles et avec les restrictions parallèles." -#: utils/misc/guc.c:4606 +#: utils/misc/guc.c:4604 #, c-format msgid "%s: could not access directory \"%s\": %s\n" -msgstr "%s : n'a pas pu accéder au répertoire « %s » : %s\n" +msgstr "%s : n'a pas pu accéder au répertoire « %s » : %s\n" -#: utils/misc/guc.c:4611 +#: utils/misc/guc.c:4609 #, c-format msgid "Run initdb or pg_basebackup to initialize a PostgreSQL data directory.\n" -msgstr "Lancer initdb ou pg_basebackup pour initialiser un répertoire de données PostgreSQL.\n" +msgstr "Lancer initdb ou pg_basebackup pour initialiser un répertoire de données PostgreSQL.\n" -#: utils/misc/guc.c:4631 +#: utils/misc/guc.c:4629 #, c-format msgid "" "%s does not know where to find the server configuration file.\n" "You must specify the --config-file or -D invocation option or set the PGDATA environment variable.\n" msgstr "" -"%s ne sait pas où trouver le fichier de configuration du serveur.\n" -"Vous devez soit spécifier l'option --config-file soit spécifier l'option -D\n" +"%s ne sait pas où trouver le fichier de configuration du serveur.\n" +"Vous devez soit spécifier l'option --config-file soit spécifier l'option -D\n" "soit initialiser la variable d'environnement.\n" -#: utils/misc/guc.c:4650 +#: utils/misc/guc.c:4648 #, c-format msgid "%s: could not access the server configuration file \"%s\": %s\n" -msgstr "%s : n'a pas pu accéder au fichier de configuration « %s » : %s\n" +msgstr "%s : n'a pas pu accéder au fichier de configuration « %s » : %s\n" -#: utils/misc/guc.c:4676 +#: utils/misc/guc.c:4674 #, c-format msgid "" "%s does not know where to find the database system data.\n" "This can be specified as \"data_directory\" in \"%s\", or by the -D invocation option, or by the PGDATA environment variable.\n" msgstr "" -"%s ne sait pas où trouver les données du système de bases de données.\n" -"Il est configurable avec « data_directory » dans « %s » ou avec l'option -D\n" +"%s ne sait pas où trouver les données du système de bases de données.\n" +"Il est configurable avec « data_directory » dans « %s » ou avec l'option -D\n" "ou encore avec la variable d'environnement PGDATA.\n" -#: utils/misc/guc.c:4724 +#: utils/misc/guc.c:4722 #, c-format msgid "" "%s does not know where to find the \"hba\" configuration file.\n" "This can be specified as \"hba_file\" in \"%s\", or by the -D invocation option, or by the PGDATA environment variable.\n" msgstr "" -"%s ne sait pas où trouver le fichier de configuration « hba ».\n" -"Il est configurable avec « hba_file » dans « %s » ou avec l'option -D ou\n" +"%s ne sait pas où trouver le fichier de configuration « hba ».\n" +"Il est configurable avec « hba_file » dans « %s » ou avec l'option -D ou\n" "encore avec la variable d'environnement PGDATA.\n" -#: utils/misc/guc.c:4747 +#: utils/misc/guc.c:4745 #, c-format msgid "" "%s does not know where to find the \"ident\" configuration file.\n" "This can be specified as \"ident_file\" in \"%s\", or by the -D invocation option, or by the PGDATA environment variable.\n" msgstr "" -"%s ne sait pas où trouver le fichier de configuration « hba ».\n" -"Il est configurable avec « ident_file » dans « %s » ou avec l'option -D ou\n" +"%s ne sait pas où trouver le fichier de configuration « hba ».\n" +"Il est configurable avec « ident_file » dans « %s » ou avec l'option -D ou\n" "encore avec la variable d'environnement PGDATA.\n" -#: utils/misc/guc.c:5421 utils/misc/guc.c:5468 +#: utils/misc/guc.c:5419 utils/misc/guc.c:5466 msgid "Value exceeds integer range." -msgstr "La valeur dépasse l'échelle des entiers." +msgstr "La valeur dépasse l'échelle des entiers." -#: utils/misc/guc.c:5691 +#: utils/misc/guc.c:5689 #, c-format msgid "parameter \"%s\" requires a numeric value" -msgstr "le paramètre « %s » requiert une valeur numérique" +msgstr "le paramètre « %s » requiert une valeur numérique" -#: utils/misc/guc.c:5700 +#: utils/misc/guc.c:5698 #, c-format msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)" -msgstr "%g est en dehors des limites valides pour le paramètre « %s » (%g .. %g)" +msgstr "%g est en dehors des limites valides pour le paramètre « %s » (%g .. %g)" -#: utils/misc/guc.c:5853 utils/misc/guc.c:7196 +#: utils/misc/guc.c:5851 utils/misc/guc.c:7194 #, c-format msgid "cannot set parameters during a parallel operation" -msgstr "ne peut pas configurer les paramètres lors d'une opération parallèle" +msgstr "ne peut pas configurer les paramètres lors d'une opération parallèle" -#: utils/misc/guc.c:5860 utils/misc/guc.c:6611 utils/misc/guc.c:6663 utils/misc/guc.c:7024 utils/misc/guc.c:7784 utils/misc/guc.c:7952 utils/misc/guc.c:9609 +#: utils/misc/guc.c:5858 utils/misc/guc.c:6609 utils/misc/guc.c:6661 utils/misc/guc.c:7022 utils/misc/guc.c:7782 utils/misc/guc.c:7950 utils/misc/guc.c:9625 #, c-format msgid "unrecognized configuration parameter \"%s\"" -msgstr "paramètre de configuration « %s » non reconnu" +msgstr "paramètre de configuration « %s » non reconnu" -#: utils/misc/guc.c:5875 utils/misc/guc.c:7036 +#: utils/misc/guc.c:5873 utils/misc/guc.c:7034 #, c-format msgid "parameter \"%s\" cannot be changed" -msgstr "le paramètre « %s » ne peut pas être changé" +msgstr "le paramètre « %s » ne peut pas être changé" -#: utils/misc/guc.c:5908 +#: utils/misc/guc.c:5906 #, c-format msgid "parameter \"%s\" cannot be changed now" -msgstr "le paramètre « %s » ne peut pas être modifié maintenant" +msgstr "le paramètre « %s » ne peut pas être modifié maintenant" -#: utils/misc/guc.c:5926 utils/misc/guc.c:5972 utils/misc/guc.c:9625 +#: utils/misc/guc.c:5924 utils/misc/guc.c:5970 utils/misc/guc.c:9641 #, c-format msgid "permission denied to set parameter \"%s\"" -msgstr "droit refusé pour initialiser le paramètre « %s »" +msgstr "droit refusé pour initialiser le paramètre « %s »" -#: utils/misc/guc.c:5962 +#: utils/misc/guc.c:5960 #, c-format msgid "parameter \"%s\" cannot be set after connection start" -msgstr "le paramètre « %s » ne peut pas être initialisé après le lancement du serveur" +msgstr "le paramètre « %s » ne peut pas être initialisé après le lancement du serveur" -#: utils/misc/guc.c:6010 +#: utils/misc/guc.c:6008 #, c-format msgid "cannot set parameter \"%s\" within security-definer function" msgstr "" -"ne peut pas configurer le paramètre « %s » à l'intérieur d'une fonction\n" +"ne peut pas configurer le paramètre « %s » à l'intérieur d'une fonction\n" "SECURITY DEFINER" -#: utils/misc/guc.c:6619 utils/misc/guc.c:6667 utils/misc/guc.c:7958 +#: utils/misc/guc.c:6617 utils/misc/guc.c:6665 utils/misc/guc.c:7956 #, c-format msgid "must be superuser to examine \"%s\"" -msgstr "doit être super-utilisateur pour examiner « %s »" +msgstr "doit être super-utilisateur pour examiner « %s »" -#: utils/misc/guc.c:6733 +#: utils/misc/guc.c:6731 #, c-format msgid "SET %s takes only one argument" msgstr "SET %s prend un seul argument" -#: utils/misc/guc.c:6984 +#: utils/misc/guc.c:6982 #, c-format msgid "must be superuser to execute ALTER SYSTEM command" -msgstr "doit être super-utilisateur pour exécuter la commande ALTER SYSTEM" +msgstr "doit être super-utilisateur pour exécuter la commande ALTER SYSTEM" -#: utils/misc/guc.c:7069 +#: utils/misc/guc.c:7067 #, c-format msgid "parameter value for ALTER SYSTEM must not contain a newline" -msgstr "la valeur du paramètre pour ALTER SYSTEM ne doit pas contenir de caractère de retour à la ligne" +msgstr "la valeur du paramètre pour ALTER SYSTEM ne doit pas contenir de caractère de retour à la ligne" -#: utils/misc/guc.c:7114 +#: utils/misc/guc.c:7112 #, c-format msgid "could not parse contents of file \"%s\"" -msgstr "n'a pas pu analyser le contenu du fichier « %s »" +msgstr "n'a pas pu analyser le contenu du fichier « %s »" -#: utils/misc/guc.c:7272 +#: utils/misc/guc.c:7270 #, c-format msgid "SET LOCAL TRANSACTION SNAPSHOT is not implemented" -msgstr "SET LOCAL TRANSACTION SNAPSHOT n'est pas implémenté" +msgstr "SET LOCAL TRANSACTION SNAPSHOT n'est pas implémenté" -#: utils/misc/guc.c:7357 +#: utils/misc/guc.c:7355 #, c-format msgid "SET requires parameter name" -msgstr "SET requiert le nom du paramètre" +msgstr "SET requiert le nom du paramètre" -#: utils/misc/guc.c:7481 +#: utils/misc/guc.c:7479 #, c-format msgid "attempt to redefine parameter \"%s\"" -msgstr "tentative de redéfinition du paramètre « %s »" +msgstr "tentative de redéfinition du paramètre « %s »" -#: utils/misc/guc.c:9242 +#: utils/misc/guc.c:9258 #, c-format msgid "parameter \"%s\" could not be set" -msgstr "le paramètre « %s » n'a pas pu être configuré" +msgstr "le paramètre « %s » n'a pas pu être configuré" -#: utils/misc/guc.c:9329 +#: utils/misc/guc.c:9345 #, c-format msgid "could not parse setting for parameter \"%s\"" -msgstr "n'a pas pu analyser la configuration du paramètre « %s »" +msgstr "n'a pas pu analyser la configuration du paramètre « %s »" -#: utils/misc/guc.c:9687 utils/misc/guc.c:9721 +#: utils/misc/guc.c:9703 utils/misc/guc.c:9737 #, c-format msgid "invalid value for parameter \"%s\": %d" -msgstr "valeur invalide pour le paramètre « %s » : %d" +msgstr "valeur invalide pour le paramètre « %s » : %d" -#: utils/misc/guc.c:9755 +#: utils/misc/guc.c:9771 #, c-format msgid "invalid value for parameter \"%s\": %g" -msgstr "valeur invalide pour le paramètre « %s » : %g" +msgstr "valeur invalide pour le paramètre « %s » : %g" -#: utils/misc/guc.c:9945 +#: utils/misc/guc.c:9961 #, c-format msgid "\"temp_buffers\" cannot be changed after any temporary tables have been accessed in the session." -msgstr "« temp_buffers » ne peut pas être modifié après que des tables temporaires aient été utilisées dans la session." +msgstr "« temp_buffers » ne peut pas être modifié après que des tables temporaires aient été utilisées dans la session." -#: utils/misc/guc.c:9957 +#: utils/misc/guc.c:9973 #, c-format msgid "Bonjour is not supported by this build" -msgstr "Bonjour n'est pas supporté dans cette installation" +msgstr "Bonjour n'est pas supporté dans cette installation" -#: utils/misc/guc.c:9970 +#: utils/misc/guc.c:9986 #, c-format msgid "SSL is not supported by this build" -msgstr "SSL n'est pas supporté dans cette installation" +msgstr "SSL n'est pas supporté dans cette installation" -#: utils/misc/guc.c:9982 +#: utils/misc/guc.c:9998 #, c-format msgid "Cannot enable parameter when \"log_statement_stats\" is true." -msgstr "Ne peut pas activer le paramètre avec « log_statement_stats » à true." +msgstr "Ne peut pas activer le paramètre avec « log_statement_stats » à true." -#: utils/misc/guc.c:9994 +#: utils/misc/guc.c:10010 #, c-format msgid "Cannot enable \"log_statement_stats\" when \"log_parser_stats\", \"log_planner_stats\", or \"log_executor_stats\" is true." msgstr "" -"Ne peut pas activer « log_statement_stats » lorsque « log_parser_stats »,\n" -"« log_planner_stats » ou « log_executor_stats » est true." +"Ne peut pas activer « log_statement_stats » lorsque « log_parser_stats »,\n" +"« log_planner_stats » ou « log_executor_stats » est true." #: utils/misc/help_config.c:131 #, c-format msgid "internal error: unrecognized run-time parameter type\n" -msgstr "erreur interne : type de paramètre d'exécution non reconnu\n" +msgstr "erreur interne : type de paramètre d'exécution non reconnu\n" #: utils/misc/pg_config.c:61 #, c-format msgid "query-specified return tuple and function return type are not compatible" -msgstr "une ligne de sortie spécifiée à la requête et un type de sortie de fonction ne sont pas compatibles" +msgstr "une ligne de sortie spécifiée à la requête et un type de sortie de fonction ne sont pas compatibles" + +#. translator: %d.%02ds is system CPU time, %d.%02du is user CPU time +#: utils/misc/pg_rusage.c:66 +#, c-format +msgid "CPU %d.%02ds/%d.%02du sec elapsed %d.%02d sec" +msgstr "CPU %d.%02ds/%d.%02du sec elapsed %d.%02d sec" #: utils/misc/rls.c:127 #, c-format msgid "query would be affected by row-level security policy for table \"%s\"" -msgstr "la requête pourrait être affectée par une politique de sécurité au niveau ligne pour la table « %s »" +msgstr "la requête pourrait être affectée par une politique de sécurité au niveau ligne pour la table « %s »" #: utils/misc/rls.c:129 #, c-format msgid "To disable the policy for the table's owner, use ALTER TABLE NO FORCE ROW LEVEL SECURITY." -msgstr "Pour désactiver la politique pour le propriétaire de la table, utilisez ALTER TABLE NO FORCE ROW LEVEL SECURITY." +msgstr "Pour désactiver la politique pour le propriétaire de la table, utilisez ALTER TABLE NO FORCE ROW LEVEL SECURITY." #: utils/misc/timeout.c:388 #, c-format @@ -23520,145 +23304,145 @@ msgstr "ne peut pas ajouter plus de raisons de timeout" #, c-format msgid "time zone abbreviation \"%s\" is too long (maximum %d characters) in time zone file \"%s\", line %d" msgstr "" -"l'abréviation « %s » du fuseau horaire est trop long (maximum %d caractères)\n" -"dans le fichier de fuseaux horaires « %s », ligne %d" +"l'abréviation « %s » du fuseau horaire est trop long (maximum %d caractères)\n" +"dans le fichier de fuseaux horaires « %s », ligne %d" #: utils/misc/tzparser.c:73 #, c-format msgid "time zone offset %d is out of range in time zone file \"%s\", line %d" msgstr "" -"le décalage %d du fuseau horaire est en dehors des limites dans le fichier\n" -"des fuseaux horaires « %s », ligne %d" +"le décalage %d du fuseau horaire est en dehors des limites dans le fichier\n" +"des fuseaux horaires « %s », ligne %d" #: utils/misc/tzparser.c:112 #, c-format msgid "missing time zone abbreviation in time zone file \"%s\", line %d" -msgstr "abréviation du fuseau horaire manquant dans le fichier « %s », ligne %d" +msgstr "abréviation du fuseau horaire manquant dans le fichier « %s », ligne %d" #: utils/misc/tzparser.c:121 #, c-format msgid "missing time zone offset in time zone file \"%s\", line %d" -msgstr "décalage du fuseau horaire manquant dans le fichier « %s », ligne %d" +msgstr "décalage du fuseau horaire manquant dans le fichier « %s », ligne %d" #: utils/misc/tzparser.c:133 #, c-format msgid "invalid number for time zone offset in time zone file \"%s\", line %d" msgstr "" -"nombre invalide pour le décalage du fuseau horaire dans le fichier des\n" -"fuseaux horaires « %s », ligne %d" +"nombre invalide pour le décalage du fuseau horaire dans le fichier des\n" +"fuseaux horaires « %s », ligne %d" #: utils/misc/tzparser.c:169 #, c-format msgid "invalid syntax in time zone file \"%s\", line %d" -msgstr "syntaxe invalide dans le fichier des fuseaux horaires « %s », ligne %d" +msgstr "syntaxe invalide dans le fichier des fuseaux horaires « %s », ligne %d" #: utils/misc/tzparser.c:237 #, c-format msgid "time zone abbreviation \"%s\" is multiply defined" -msgstr "l'abréviation « %s » du fuseau horaire est définie plusieurs fois" +msgstr "l'abréviation « %s » du fuseau horaire est définie plusieurs fois" #: utils/misc/tzparser.c:239 #, c-format msgid "Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s\", line %d." msgstr "" -"L'entrée dans le fichier des fuseaux horaires « %s », ligne %d, est en\n" -"conflit avec l'entrée du fichier « %s », ligne %d." +"L'entrée dans le fichier des fuseaux horaires « %s », ligne %d, est en\n" +"conflit avec l'entrée du fichier « %s », ligne %d." #: utils/misc/tzparser.c:301 #, c-format msgid "invalid time zone file name \"%s\"" -msgstr "nom du fichier de fuseaux horaires invalide : « %s »" +msgstr "nom du fichier de fuseaux horaires invalide : « %s »" #: utils/misc/tzparser.c:314 #, c-format msgid "time zone file recursion limit exceeded in file \"%s\"" msgstr "" -"limite de récursion dépassée dans le fichier « %s » (fichier des fuseaux\n" +"limite de récursion dépassée dans le fichier « %s » (fichier des fuseaux\n" "horaires)" #: utils/misc/tzparser.c:353 utils/misc/tzparser.c:366 #, c-format msgid "could not read time zone file \"%s\": %m" -msgstr "n'a pas pu lire le fichier des fuseaux horaires « %s » : %m" +msgstr "n'a pas pu lire le fichier des fuseaux horaires « %s » : %m" #: utils/misc/tzparser.c:376 #, c-format msgid "line is too long in time zone file \"%s\", line %d" msgstr "" -"une ligne est trop longue dans le fichier des fuseaux horaires « %s »,\n" +"une ligne est trop longue dans le fichier des fuseaux horaires « %s »,\n" "ligne %d" #: utils/misc/tzparser.c:399 #, c-format msgid "@INCLUDE without file name in time zone file \"%s\", line %d" msgstr "" -"@INCLUDE sans nom de fichier dans le fichier des fuseaux horaires « %s »,\n" +"@INCLUDE sans nom de fichier dans le fichier des fuseaux horaires « %s »,\n" "ligne %d" -#: utils/mmgr/aset.c:510 +#: utils/mmgr/aset.c:511 #, c-format msgid "Failed while creating memory context \"%s\"." -msgstr "Échec lors de la création du contexte mémoire « %s »." +msgstr "Échec lors de la création du contexte mémoire « %s »." #: utils/mmgr/mcxt.c:768 utils/mmgr/mcxt.c:803 utils/mmgr/mcxt.c:840 utils/mmgr/mcxt.c:877 utils/mmgr/mcxt.c:911 utils/mmgr/mcxt.c:940 utils/mmgr/mcxt.c:974 utils/mmgr/mcxt.c:1056 utils/mmgr/mcxt.c:1090 utils/mmgr/mcxt.c:1139 #, c-format msgid "Failed on request of size %zu." -msgstr "Échec d'une requête de taille %zu." +msgstr "Échec d'une requête de taille %zu." #: utils/mmgr/portalmem.c:207 #, c-format msgid "cursor \"%s\" already exists" -msgstr "le curseur « %s » existe déjà" +msgstr "le curseur « %s » existe déjà" #: utils/mmgr/portalmem.c:211 #, c-format msgid "closing existing cursor \"%s\"" -msgstr "fermeture du curseur existant « %s »" +msgstr "fermeture du curseur existant « %s »" #: utils/mmgr/portalmem.c:415 #, c-format msgid "portal \"%s\" cannot be run" -msgstr "le portail « %s » ne peut pas être exécuté de nouveau" +msgstr "le portail « %s » ne peut pas être exécuté de nouveau" #: utils/mmgr/portalmem.c:495 #, c-format msgid "cannot drop active portal \"%s\"" -msgstr "ne peut pas supprimer le portail actif « %s »" +msgstr "ne peut pas supprimer le portail actif « %s »" #: utils/mmgr/portalmem.c:699 #, c-format msgid "cannot PREPARE a transaction that has created a cursor WITH HOLD" -msgstr "ne peut pas préparer une transaction qui a créé un curseur WITH HOLD" +msgstr "ne peut pas préparer une transaction qui a créé un curseur WITH HOLD" #: utils/sort/logtape.c:226 #, c-format msgid "could not read block %ld of temporary file: %m" msgstr "n'a pas pu lire le bloc %ld du fichier temporaire : %m" -#: utils/sort/tuplesort.c:3393 +#: utils/sort/tuplesort.c:3402 #, c-format msgid "cannot have more than %d runs for an external sort" -msgstr "ne peut pas avoir plus de %d exécutions pour un tri externe" +msgstr "ne peut pas avoir plus de %d exécutions pour un tri externe" -#: utils/sort/tuplesort.c:4465 +#: utils/sort/tuplesort.c:4479 #, c-format msgid "could not create unique index \"%s\"" -msgstr "n'a pas pu créer l'index unique « %s »" +msgstr "n'a pas pu créer l'index unique « %s »" -#: utils/sort/tuplesort.c:4467 +#: utils/sort/tuplesort.c:4481 #, c-format msgid "Key %s is duplicated." -msgstr "La clé %s est dupliquée." +msgstr "La clé %s est dupliquée." -#: utils/sort/tuplesort.c:4468 +#: utils/sort/tuplesort.c:4482 #, c-format msgid "Duplicate keys exist." -msgstr "Des clés dupliquées existent." +msgstr "Des clés dupliquées existent." #: utils/sort/tuplestore.c:515 utils/sort/tuplestore.c:525 utils/sort/tuplestore.c:852 utils/sort/tuplestore.c:956 utils/sort/tuplestore.c:1020 utils/sort/tuplestore.c:1037 utils/sort/tuplestore.c:1239 utils/sort/tuplestore.c:1304 utils/sort/tuplestore.c:1313 #, c-format msgid "could not seek in tuplestore temporary file: %m" -msgstr "n'a pas pu se déplacer dans le fichier temporaire tuplestore : %m" +msgstr "n'a pas pu se déplacer dans le fichier temporaire tuplestore : %m" #: utils/sort/tuplestore.c:1460 utils/sort/tuplestore.c:1533 utils/sort/tuplestore.c:1539 #, c-format @@ -23668,1774 +23452,1967 @@ msgstr "n'a pas pu lire le fichier temporaire tuplestore : %m" #: utils/sort/tuplestore.c:1501 utils/sort/tuplestore.c:1506 utils/sort/tuplestore.c:1512 #, c-format msgid "could not write to tuplestore temporary file: %m" -msgstr "n'a pas pu écrire le fichier temporaire tuplestore : %m" +msgstr "n'a pas pu écrire le fichier temporaire tuplestore : %m" -#: utils/time/snapmgr.c:577 +#: utils/time/snapmgr.c:618 #, c-format msgid "The source transaction is not running anymore." -msgstr "La transaction source n'est plus en cours d'exécution." +msgstr "La transaction source n'est plus en cours d'exécution." -#: utils/time/snapmgr.c:1138 +#: utils/time/snapmgr.c:1190 #, c-format msgid "cannot export a snapshot from a subtransaction" msgstr "ne peut pas exporter un snapshot dans un sous-transaction" -#: utils/time/snapmgr.c:1287 utils/time/snapmgr.c:1292 utils/time/snapmgr.c:1297 utils/time/snapmgr.c:1312 utils/time/snapmgr.c:1317 utils/time/snapmgr.c:1322 utils/time/snapmgr.c:1421 utils/time/snapmgr.c:1437 utils/time/snapmgr.c:1462 +#: utils/time/snapmgr.c:1339 utils/time/snapmgr.c:1344 utils/time/snapmgr.c:1349 utils/time/snapmgr.c:1364 utils/time/snapmgr.c:1369 utils/time/snapmgr.c:1374 utils/time/snapmgr.c:1473 utils/time/snapmgr.c:1489 utils/time/snapmgr.c:1514 #, c-format msgid "invalid snapshot data in file \"%s\"" -msgstr "données invalides du snapshot dans le fichier « %s »" +msgstr "données invalides du snapshot dans le fichier « %s »" -#: utils/time/snapmgr.c:1359 +#: utils/time/snapmgr.c:1411 #, c-format msgid "SET TRANSACTION SNAPSHOT must be called before any query" -msgstr "SET TRANSACTION SNAPSHOT doit être appelé avant toute requête" +msgstr "SET TRANSACTION SNAPSHOT doit être appelé avant toute requête" -#: utils/time/snapmgr.c:1368 +#: utils/time/snapmgr.c:1420 #, c-format msgid "a snapshot-importing transaction must have isolation level SERIALIZABLE or REPEATABLE READ" msgstr "une transaction important un snapshot doit avoir le niveau d'isolation SERIALIZABLE ou REPEATABLE READ." -#: utils/time/snapmgr.c:1377 utils/time/snapmgr.c:1386 +#: utils/time/snapmgr.c:1429 utils/time/snapmgr.c:1438 #, c-format msgid "invalid snapshot identifier: \"%s\"" -msgstr "identifiant invalide du snapshot : « %s »" +msgstr "identifiant invalide du snapshot : « %s »" -#: utils/time/snapmgr.c:1475 +#: utils/time/snapmgr.c:1527 #, c-format msgid "a serializable transaction cannot import a snapshot from a non-serializable transaction" -msgstr "une transaction sérialisable ne peut pas importer un snapshot provenant d'une transaction non sérialisable" +msgstr "une transaction sérialisable ne peut pas importer un snapshot provenant d'une transaction non sérialisable" -#: utils/time/snapmgr.c:1479 +#: utils/time/snapmgr.c:1531 #, c-format msgid "a non-read-only serializable transaction cannot import a snapshot from a read-only transaction" msgstr "" -"une transaction sérialisable en écriture ne peut pas importer un snapshot\n" +"une transaction sérialisable en écriture ne peut pas importer un snapshot\n" "provenant d'une transaction en lecture seule" -#: utils/time/snapmgr.c:1494 +#: utils/time/snapmgr.c:1546 #, c-format msgid "cannot import a snapshot from a different database" -msgstr "ne peut pas importer un snapshot à partir d'une base de données différente" +msgstr "ne peut pas importer un snapshot à partir d'une base de données différente" -#~ msgid "Only superusers can use untrusted languages." -#~ msgstr "" -#~ "Seuls les super-utilisateurs peuvent utiliser des langages qui ne sont pas\n" -#~ "de confiance." +#~ msgid "index row size %lu exceeds maximum %lu for index \"%s\"" +#~ msgstr "la taille de la ligne index, %lu, dépasse le maximum, %lu, pour l'index « %s »" -#~ msgid "function returning set of rows cannot return null value" +#~ msgid "brin operator family \"%s\" contains function %s with invalid support number %d" #~ msgstr "" -#~ "la fonction renvoyant un ensemble de lignes ne peut pas renvoyer une valeur\n" -#~ "NULL" - -#~ msgid "system columns cannot be used in an ON CONFLICT clause" -#~ msgstr "les colonnes systèmes ne peuvent pas être utilisées dans une clause ON CONFLICT" - -#~ msgid "role \"%s\" is reserved" -#~ msgstr "le rôle « %s » est réservé" - -#~ msgid "time zone abbreviation \"%s\" is not used in time zone \"%s\"" -#~ msgstr "l'abréviation « %s » du fuseau horaire n'est pas utilisée dans le fuseau horaire « %s »" - -#~ msgid "invalid length in external \"numeric\" value" -#~ msgstr "longueur invalide dans la valeur externe « numeric »" - -#~ msgid "too few arguments for format" -#~ msgstr "trop peu d'arguments pour le format" +#~ "la famille d'opérateur brin « %s » contient la fonction %s\n" +#~ "avec le numéro de support %d invalide" -#~ msgid "mapped win32 error code %lu to %d" -#~ msgstr "correspondance du code d'erreur win32 %lu en %d" +#~ msgid "brin operator family \"%s\" contains function %s with wrong signature for support number %d" +#~ msgstr "" +#~ "la famille d'opérateur brin « %s » contient la fonction %s\n" +#~ "avec une mauvaise signature pour le numéro de support %d" -#~ msgid "unrecognized win32 error code: %lu" -#~ msgstr "code d'erreur win32 non reconnu : %lu" +#~ msgid "brin operator family \"%s\" contains operator %s with invalid strategy number %d" +#~ msgstr "" +#~ "la famille d'opérateur brin « %s » contient l'opérateur %s\n" +#~ "avec le numéro de stratégie %d invalide" -#~ msgid "invalid value for recovery parameter \"recovery_target\"" -#~ msgstr "valeur invalide pour le paramètre de restauration « recovery_target »" +#~ msgid "brin operator family \"%s\" contains invalid ORDER BY specification for operator %s" +#~ msgstr "" +#~ "la famille d'opérateur brin « %s » contient une spécification\n" +#~ "ORDER BY invalide pour l'opérateur %s" -#~ msgid "redo record is at %X/%X; shutdown %s" -#~ msgstr "l'enregistrement à ré-exécuter se trouve à %X/%X ; arrêt %s" +#~ msgid "brin operator family \"%s\" contains operator %s with wrong signature" +#~ msgstr "la famille d'opérateur brin « %s » contient l'opérateur %s avec une mauvaise signature" -#~ msgid "next transaction ID: %u/%u; next OID: %u" -#~ msgstr "prochain identifiant de transaction : %u/%u ; prochain OID : %u" +#~ msgid "brin operator class \"%s\" is missing support function %d" +#~ msgstr "la classe d'opérateur brin « %s » nécessite la fonction de support %d" -#~ msgid "next MultiXactId: %u; next MultiXactOffset: %u" -#~ msgstr "prochain MultiXactId : %u ; prochain MultiXactOffset : %u" +#~ msgid "gist operator family \"%s\" contains support procedure %s with cross-type registration" +#~ msgstr "" +#~ "la famille d'opérateur gist « %s » contient la procédure de support\n" +#~ "%s avec un enregistrement inter-type" -#~ msgid "oldest unfrozen transaction ID: %u, in database %u" +#~ msgid "gist operator family \"%s\" contains function %s with invalid support number %d" #~ msgstr "" -#~ "identifiant de transaction non gelé le plus ancien : %u, dans la base de\n" -#~ "données %u" +#~ "la famille d'opérateur gist « %s » contient la fonction %s avec\n" +#~ "le numéro de support invalide %d" -#~ msgid "invalid xlog switch record at %X/%X" -#~ msgstr "enregistrement de basculement du journal de transaction invalide à %X/%X" +#~ msgid "gist operator family \"%s\" contains function %s with wrong signature for support number %d" +#~ msgstr "" +#~ "la famille d'opérateur gist « %s » contient la fonction %s avec une mauvaise\n" +#~ "signature pour le numéro de support %d" -#~ msgid "record with zero length at %X/%X" -#~ msgstr "enregistrement de longueur nulle à %X/%X" +#~ msgid "gist operator family \"%s\" contains operator %s with invalid strategy number %d" +#~ msgstr "" +#~ "la famille d'opérateur gist « %s » contient l'opérateur %s avec le numéro\n" +#~ "de stratégie invalide %d" -#~ msgid "invalid backup block size in record at %X/%X" -#~ msgstr "taille du bloc de sauvegarde invalide dans l'enregistrement à %X/%X" +#~ msgid "gist operator family \"%s\" contains operator %s with wrong signature" +#~ msgstr "la famille d'opérateur gist « %s » contient l'opérateur %s avec une mauvaise signature" -#~ msgid "incorrect hole size in record at %X/%X" -#~ msgstr "taille du trou incorrect à l'enregistrement %X/%X" +#~ msgid "gist operator class \"%s\" is missing support function %d" +#~ msgstr "la famille d'opérateur gist « %s » nécessite la fonction de support %d" -#~ msgid "incorrect total length in record at %X/%X" -#~ msgstr "longueur totale incorrecte à l'enregistrement %X/%X" +#~ msgid "hash operator family \"%s\" contains support procedure %s with cross-type registration" +#~ msgstr "" +#~ "la famille d'opérateur hash « %s » contient la procédure de support\n" +#~ "%s avec un enregistrement inter-type" -#~ msgid "WAL file is from different database system: WAL file database system identifier is %s, pg_control database system identifier is %s." +#~ msgid "hash operator family \"%s\" contains function %s with wrong signature for support number %d" #~ msgstr "" -#~ "L'identifiant du journal de transactions du système de base de données est %s,\n" -#~ "l'identifiant pg_control du système de base de données dans pg_control est %s." +#~ "la famille d'opérateur hash « %s » contient la fonction %s avec une mauvaise\n" +#~ "signature pour le numéro de support %d" -#~ msgid "WAL file is from different database system: Incorrect XLOG_SEG_SIZE in page header." +#~ msgid "hash operator family \"%s\" contains function %s with invalid support number %d" #~ msgstr "" -#~ "le journal de transactions provient d'un système de bases de données différent :\n" -#~ "XLOG_SEG_SIZE incorrect dans l'en-tête de page." +#~ "la famille d'opérateur hash « %s » contient la fonction %s avec\n" +#~ "le numéro de support invalide %d" -#~ msgid "WAL file is from different database system: Incorrect XLOG_BLCKSZ in page header." +#~ msgid "hash operator family \"%s\" contains operator %s with invalid strategy number %d" #~ msgstr "" -#~ "le journal de transactions provient d'un système de bases de données différent :\n" -#~ "XLOG_BLCKSZ incorrect dans l'en-tête de page." +#~ "la famille d'opérateur hash « %s » contient l'opérateur %s avec le numéro\n" +#~ "de stratégie invalide %d" -#~ msgid "=> is deprecated as an operator name" -#~ msgstr "=> est un nom d'opérateur obsolète" +#~ msgid "hash operator family \"%s\" contains invalid ORDER BY specification for operator %s" +#~ msgstr "" +#~ "la famille d'opérateur hash « %s » contient la spécification ORDER BY\n" +#~ "non supportée pour l'opérateur %s" -#~ msgid "This name may be disallowed altogether in future versions of PostgreSQL." -#~ msgstr "Ce nom pourrait être interdit dans les prochaines versions de PostgreSQL." +#~ msgid "hash operator family \"%s\" contains operator %s with wrong signature" +#~ msgstr "la famille d'opérateur hash « %s » contient l'opérateur %s avec une mauvaise signature" -#~ msgid "inherited relation \"%s\" is not a table" -#~ msgstr "la relation héritée « %s » n'est pas une table" +#~ msgid "hash operator family \"%s\" is missing operator(s) for types %s and %s" +#~ msgstr "" +#~ "la famille d'opérateur hash « %s » nécessite des opérateurs supplémentaires\n" +#~ "pour les types %s et %s" -#~ msgid "\"%s\" is not a table, materialized view, composite type, or foreign table" -#~ msgstr "« %s » n'est ni une table, ni une vue matérialisée, ni un type composite, ni une table distante" +#~ msgid "hash operator class \"%s\" is missing operator(s)" +#~ msgstr "il manque des opérateurs pour la classe d'opérateur hash « %s »" -#~ msgid "Specify a USING expression to perform the conversion." -#~ msgstr "Donnez une expression USING pour réaliser la conversion." +#~ msgid "btree operator family \"%s\" contains function %s with invalid support number %d" +#~ msgstr "" +#~ "la famille d'opérateur btree « %s » contient la fonction %s\n" +#~ "avec le numéro de support invalide %d" -#~ msgid "" -#~ "automatic vacuum of table \"%s.%s.%s\": index scans: %d\n" -#~ "pages: %d removed, %d remain\n" -#~ "tuples: %.0f removed, %.0f remain, %.0f are dead but not yet removable\n" -#~ "buffer usage: %d hits, %d misses, %d dirtied\n" -#~ "avg read rate: %.3f MB/s, avg write rate: %.3f MB/s\n" -#~ "system usage: %s" +#~ msgid "btree operator family \"%s\" contains function %s with wrong signature for support number %d" #~ msgstr "" -#~ "VACUUM automatique de la table « %s.%s.%s » : parcours d'index : %d\n" -#~ "pages : %d supprimées, %d restantes\n" -#~ "lignes : %.0f supprimées, %.0f restantes, %.0f sont mortes mais non supprimables\n" -#~ "utilisation des tampons : %d lus dans le cache, %d lus hors du cache, %d modifiés\n" -#~ "taux moyen de lecture : %.3f Mo/s, taux moyen d'écriture : %.3f Mo/s\n" -#~ "utilisation système : %s" +#~ "la famille d'opérateur btree « %s » contient la fonction %s\n" +#~ "avec une mauvaise signature pour le numéro de support %d" -#~ msgid "" -#~ "%.0f dead row versions cannot be removed yet.\n" -#~ "There were %.0f unused item pointers.\n" -#~ "%u pages are entirely empty.\n" -#~ "%s." +#~ msgid "btree operator family \"%s\" contains operator %s with invalid strategy number %d" #~ msgstr "" -#~ "%.0f versions de lignes mortes ne peuvent pas encore être supprimées.\n" -#~ "Il y avait %.0f pointeurs d'éléments inutilisés.\n" -#~ "%u pages sont entièrement vides.\n" -#~ "%s." +#~ "la famille d'opérateur btree « %s » contient l'opérateur %s\n" +#~ "avec le numéro de stratégie invalide %d" -#~ msgid "interval precision specified twice" -#~ msgstr "précision d'intervalle spécifiée deux fois" +#~ msgid "btree operator family \"%s\" contains invalid ORDER BY specification for operator %s" +#~ msgstr "" +#~ "la famille d'opérateur btree « %s » contient une spécification\n" +#~ "ORDER BY invalide pour l'opérateur %s" -#~ msgid "received password packet" -#~ msgstr "paquet du mot de passe reçu" +#~ msgid "btree operator family \"%s\" contains operator %s with wrong signature" +#~ msgstr "la famille d'opérateur btree « %s » contient l'opérateur %s avec une mauvaise signature" -#~ msgid "SSL failure during renegotiation start" -#~ msgstr "échec SSL au début de la re-négotiation" +#~ msgid "btree operator family \"%s\" is missing operator(s) for types %s and %s" +#~ msgstr "" +#~ "la famille d'opérateur btree « %s » nécessite des opérateurs supplémentaires\n" +#~ "pour les types %s et %s" -#~ msgid "SSL handshake failure on renegotiation, retrying" -#~ msgstr "échec du handshake SSL lors de la renégotiation, nouvelle tentative" +#~ msgid "btree operator class \"%s\" is missing operator(s)" +#~ msgstr "il manque des opérateurs pour la classe d'opérateur btree « %s »" -#~ msgid "could not complete SSL handshake on renegotiation, too many failures" -#~ msgstr "n'a pas pu terminer la poignée de main de renégotiation, trop d'échecs" +#~ msgid "btree operator family \"%s\" is missing cross-type operator(s)" +#~ msgstr "il manque des opérateurs inter-type pour la famille d'opérateur btree « %s »" -#~ msgid "SSL failed to renegotiate connection before limit expired" -#~ msgstr "SSL a échoué à renégotier la connexion avant l'expiration du délai" +#~ msgid "spgist operator family \"%s\" contains support procedure %s with cross-type registration" +#~ msgstr "" +#~ "la famille d'opérateur spgist « %s » contient la procédure de support\n" +#~ "%s avec un enregistrement inter-type" -#~ msgid "could not set socket to blocking mode: %m" -#~ msgstr "n'a pas pu activer le mode bloquant pour la socket : %m" +#~ msgid "spgist operator family \"%s\" contains function %s with invalid support number %d" +#~ msgstr "" +#~ "la famille d'opérateur spgist « %s » contient la fonction %s\n" +#~ "avec le numéro de support %d invalide" -#~ msgid "%s: setsysinfo failed: %s\n" -#~ msgstr "%s : setsysinfo a échoué : %s\n" +#~ msgid "spgist operator family \"%s\" contains function %s with wrong signature for support number %d" +#~ msgstr "" +#~ "la famille d'opérateur spgist « %s » contient la fonction %s\n" +#~ "avec une mauvaise signature pour le numéro de support %d" -#~ msgid " -A 1|0 enable/disable run-time assert checking\n" +#~ msgid "spgist operator family \"%s\" contains operator %s with invalid strategy number %d" #~ msgstr "" -#~ " -A 1|0 active/désactive la vérification des limites (assert) à\n" -#~ " l'exécution\n" +#~ "la famille d'opérateur spgist « %s » contient l'opérateur %s\n" +#~ "avec le numéro de stratégie invalide %d" -#~ msgid "subquery must return a column" -#~ msgstr "la sous-requête doit renvoyer une colonne" +#~ msgid "spgist operator family \"%s\" contains invalid ORDER BY specification for operator %s" +#~ msgstr "" +#~ "la famille d'opérateur spgist « %s » contient une spécification\n" +#~ "ORDER BY invalide pour l'opérateur %s" -#~ msgid "Consider increasing the configuration parameter \"checkpoint_segments\"." -#~ msgstr "Considèrez l'augmentation du paramètre « checkpoint_segments »." +#~ msgid "spgist operator family \"%s\" contains operator %s with wrong signature" +#~ msgstr "la famille d'opérateur spgist « %s » contient l'opérateur %s avec une mauvaise signature" -#~ msgid "WAL archival (archive_mode=on) requires wal_level \"archive\", \"hot_standby\", or \"logical\"" +#~ msgid "spgist operator family \"%s\" is missing operator(s) for types %s and %s" #~ msgstr "" -#~ "l'archivage des journaux de transactions (archive_mode=on) nécessite que\n" -#~ "le paramètre wal_level soit initialisé avec « archive », « hot_standby » ou « logical »" +#~ "la famille d'opérateur spgist « %s » nécessite des opérateurs supplémentaires\n" +#~ "pour les types %s et %s" -#~ msgid "invalid value for parameter \"replication\"" -#~ msgstr "valeur invalide pour le paramètre « replication »" +#~ msgid "spgist operator class \"%s\" is missing operator(s)" +#~ msgstr "il manque des opérateurs pour la classe d'opérateur spgist « %s »" -#~ msgid "postmaster became multithreaded" -#~ msgstr "le postmaster est devenu multithreadé" +#~ msgid "%s." +#~ msgstr "%s." -#~ msgid "archive member \"%s\" too large for tar format" -#~ msgstr "membre « %s » de l'archive trop volumineux pour le format tar" +#~ msgid "cannot create temporary tables in parallel mode" +#~ msgstr "ne peut pas créer des tables temporaires dans le mode de parallélisation" -#~ msgid "could not determine input data types" -#~ msgstr "n'a pas pu déterminer les types de données en entrée" +#~ msgid "Transaction ID %u finished; no more running transactions." +#~ msgstr "Identifiant de transaction %u terminé ; plus de transactions en cours." -#~ msgid "neither input type is an array" -#~ msgstr "aucun type de données n'est un tableau" +#~ msgid "%u transaction needs to finish." +#~ msgid_plural "%u transactions need to finish." +#~ msgstr[0] "La transaction %u doit se terminer." +#~ msgstr[1] "Les transactions %u doivent se terminer." -#~ msgid "unexpected \"=\"" -#~ msgstr "« = » inattendu" +#~ msgid "could not determine data type for argument 1" +#~ msgstr "n'a pas pu déterminer le type de données pour l'argument 1" -#~ msgid "invalid symbol" -#~ msgstr "symbole invalide" +#~ msgid "could not determine data type for argument 2" +#~ msgstr "n'a pas pu déterminer le type de données pour l'argument 2" -#~ msgid "must be superuser or have the same role to cancel queries running in other server processes" -#~ msgstr "" -#~ "doit être super-utilisateur ou avoir le même rôle pour annuler des requêtes\n" -#~ "exécutées dans les autres processus serveur" +#~ msgid "argument %d: could not determine data type" +#~ msgstr "argument %d : n'a pas pu déterminer le type de données" -#~ msgid "must be superuser or have the same role to terminate other server processes" +#~ msgid "could not create two-phase state file \"%s\": %m" #~ msgstr "" -#~ "doit être super-utilisateur ou avoir le même rôle pour fermer les connexions\n" -#~ "exécutées dans les autres processus serveur" - -#~ msgid "cannot accept a value of type pg_node_tree" -#~ msgstr "ne peut pas accepter une valeur de type pg_node_tree" - -#~ msgid "Turns on various assertion checks." -#~ msgstr "Active les différentes vérifications des assertions." - -#~ msgid "This is a debugging aid." -#~ msgstr "C'est une aide de débogage." +#~ "n'a pas pu créer le fichier de statut de la validation en deux phases nommé\n" +#~ "« %s » : %m" -#~ msgid "This parameter doesn't do anything." -#~ msgstr "Ce paramètre ne fait rien." +#~ msgid "could not seek in two-phase state file: %m" +#~ msgstr "" +#~ "n'a pas pu se déplacer dans le fichier de statut de la validation en deux\n" +#~ "phases : %m" -#~ msgid "It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-vintage clients." +#~ msgid "two-phase state file for transaction %u is corrupt" #~ msgstr "" -#~ "C'est ici uniquement pour ne pas avoir de problèmes avec le SET AUTOCOMMIT\n" -#~ "TO ON des clients 7.3." +#~ "le fichier d'état de la validation en deux phases est corrompu pour la\n" +#~ "transaction %u" -#~ msgid "Sets the maximum distance in log segments between automatic WAL checkpoints." +#~ msgid "could not fsync two-phase state file \"%s\": %m" #~ msgstr "" -#~ "Initialise la distance maximale dans les journaux de transaction entre chaque\n" -#~ "point de vérification (checkpoints) des journaux." +#~ "n'a pas pu synchroniser sur disque (fsync) le fichier d'état de la\n" +#~ "validation en deux phases nommé « %s » : %m" -#~ msgid "Set the amount of traffic to send and receive before renegotiating the encryption keys." +#~ msgid "could not close two-phase state file \"%s\": %m" #~ msgstr "" -#~ "Configure la quantité de trafic à envoyer et recevoir avant la renégotiation\n" -#~ "des clés d'enchiffrement." +#~ "n'a pas pu fermer le fichier d'état de la validation en deux phases nommé\n" +#~ "« %s » : %m" -#~ msgid "SET AUTOCOMMIT TO OFF is no longer supported" -#~ msgstr "SET AUTOCOMMIT TO OFF n'est plus supporté" +#~ msgid "could not link file \"%s\" to \"%s\" (initialization of log file): %m" +#~ msgstr "n'a pas pu lier le fichier « %s » à « %s » (initialisation du journal de transactions) : %m" -#~ msgid "assertion checking is not supported by this build" -#~ msgstr "la vérification de l'assertion n'a pas été intégrée lors de la compilation" +#~ msgid "could not rename file \"%s\" to \"%s\" (initialization of log file): %m" +#~ msgstr "n'a pas pu renommer le fichier « %s » en « %s » (initialisation du journal de transactions) : %m" -#~ msgid "%s \"%s\": return code %d" -#~ msgstr "%s « %s » : code de retour %d" +#~ msgid "ignoring \"%s\" file because no \"%s\" file exists" +#~ msgstr "ignore le fichier « %s » parce que le fichier « %s » n'existe pas" -#~ msgid "could not parse transaction log location \"%s\"" -#~ msgstr "n'a pas pu analyser l'emplacement du journal des transactions « %s »" +#~ msgid "must be superuser or replication role to run a backup" +#~ msgstr "doit être super-utilisateur ou avoir l'attribut de réplication pour exécuter une sauvegarde" -#~ msgid "invalid input syntax for transaction log location: \"%s\"" -#~ msgstr "syntaxe invalide en entrée pour l'emplacement du journal de transactions : « %s »" +#~ msgid "must be superuser to switch transaction log files" +#~ msgstr "doit être super-utilisateur pour changer de journal de transactions" -#~ msgid "trigger \"%s\" for table \"%s\" does not exist, skipping" -#~ msgstr "le trigger « %s » pour la table « %s » n'existe pas, poursuite du traitement" +#~ msgid "must be superuser to create a restore point" +#~ msgstr "doit être super-utilisateur pour créer un point de restauration" -#~ msgid "Kerberos 5 authentication failed for user \"%s\"" -#~ msgstr "authentification Kerberos 5 échouée pour l'utilisateur « %s »" +#~ msgid "must be superuser to control recovery" +#~ msgstr "doit être super-utilisateur pour contrôler la restauration" -#~ msgid "Kerberos initialization returned error %d" -#~ msgstr "l'initialisation de Kerberos a retourné l'erreur %d" +#~ msgid "invalid record length at %X/%X" +#~ msgstr "longueur invalide de l'enregistrement à %X/%X" -#~ msgid "Kerberos keytab resolving returned error %d" -#~ msgstr "la résolution keytab de Kerberos a renvoyé l'erreur %d" +#~ msgid "%s is already in schema \"%s\"" +#~ msgstr "%s existe déjà dans le schéma « %s »" -#~ msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d" -#~ msgstr "sname_to_principal(« %s », « %s ») de Kerberos a renvoyé l'erreur %d" +#~ msgid "function \"%s\" must return type \"event_trigger\"" +#~ msgstr "la fonction « %s » doit renvoyer le type « event_trigger »" -#~ msgid "Kerberos recvauth returned error %d" -#~ msgstr "recvauth de Kerberos a renvoyé l'erreur %d" +#~ msgid "function %s must return type \"fdw_handler\"" +#~ msgstr "la fonction %s doit renvoyer le type « fdw_handler »" -#~ msgid "Kerberos unparse_name returned error %d" -#~ msgstr "unparse_name de Kerberos a renvoyé l'erreur %d" +#~ msgid "could not reposition held cursor" +#~ msgstr "n'a pas pu repositionner le curseur détenu" -#~ msgid "local user with ID %d does not exist" -#~ msgstr "l'utilisateur local dont l'identifiant est %d n'existe pas" +#~ msgid "function %s must return type \"language_handler\"" +#~ msgstr "la fonction %s doit renvoyer le type « language_handler »" -#~ msgid "SSL renegotiation failure" -#~ msgstr "échec lors de la re-négotiation SSL" +#~ msgid "function %s must return type \"trigger\"" +#~ msgstr "la fonction %s doit renvoyer le type « trigger »" -#~ msgid "krb5 authentication is not supported on local sockets" -#~ msgstr "" -#~ "l'authentification krb5 n'est pas supportée sur les connexions locales par\n" -#~ "socket" +#~ msgid "changing return type of function %s from \"opaque\" to \"cstring\"" +#~ msgstr "changement du type de retour de la fonction %s d'« opaque » vers « cstring »" -#~ msgid "%s: invalid effective UID: %d\n" -#~ msgstr "%s : UID effectif invalide : %d\n" +#~ msgid "type output function %s must return type \"cstring\"" +#~ msgstr "le type de sortie de la fonction %s doit être « cstring »" -#~ msgid "%s: could not determine user name (GetUserName failed)\n" -#~ msgstr "%s : n'a pas pu déterminer le nom de l'utilisateur (GetUserName a échoué)\n" +#~ msgid "type send function %s must return type \"bytea\"" +#~ msgstr "la fonction send du type %s doit renvoyer le type « bytea »" -#~ msgid "too many column aliases specified for function %s" -#~ msgstr "trop d'alias de colonnes spécifiées pour la fonction %s" +#~ msgid "typmod_in function %s must return type \"integer\"" +#~ msgstr "la fonction typmod_in %s doit renvoyer le type « entier »" -#~ msgid "Expected 1 tuple with 3 fields, got %d tuples with %d fields." -#~ msgstr "Attendait 1 ligne avec 3 champs, a obtenu %d lignes avec %d champs." +#~ msgid "Permissions should be u=rw (0600) or less." +#~ msgstr "Les droits devraient être u=rwx (0600) ou inférieures." -#~ msgid "Security-barrier views are not automatically updatable." -#~ msgstr "Les vues avec barrière de sécurité ne sont pas automatiquement disponibles en écriture." +#~ msgid "function %s must return type \"tsm_handler\"" +#~ msgstr "la fonction %s doit renvoyer le type « tsm_handler »" -#~ msgid "Views that return the same column more than once are not automatically updatable." -#~ msgstr "Les vues qui renvoient la même colonne plus d'une fois ne sont pas automatiquement disponibles en écriture." +#~ msgid "must be superuser to reset statistics counters" +#~ msgstr "doit être super-utilisateur pour réinitialiser les compteurs statistiques" -#~ msgid "wrong affix file format for flag" -#~ msgstr "mauvais format de fichier affixe pour le drapeau" +#~ msgid "socket not open" +#~ msgstr "socket non ouvert" -#~ msgid "missing assignment operator" -#~ msgstr "opérateur d'affectation manquant" +#~ msgid "multibyte flag character is not allowed" +#~ msgstr "un caractère drapeau multi-octet n'est pas autorisé" -#~ msgid "cannot call json_object_keys on an array" -#~ msgstr "ne peut pas appeler json_object_keys sur un tableau" +#~ msgid "could not format \"path\" value" +#~ msgstr "n'a pas pu formater la valeur « path »" -#~ msgid "cannot call json_object_keys on a scalar" -#~ msgstr "ne peut pas appeler json_object_keys sur un scalaire" +#~ msgid "invalid input syntax for type box: \"%s\"" +#~ msgstr "syntaxe en entrée invalide pour le type box : « %s »" -#~ msgid "cannot call function with null path elements" -#~ msgstr "ne peut pas appeler une fonction avec des éléments chemins NULL" +#~ msgid "invalid input syntax for type line: \"%s\"" +#~ msgstr "syntaxe en entrée invalide pour le type line: « %s »" -#~ msgid "cannot call function with empty path elements" -#~ msgstr "ne peut pas appeler une fonction avec des éléments chemins vides" +#~ msgid "invalid input syntax for type path: \"%s\"" +#~ msgstr "syntaxe en entrée invalide pour le type path : « %s »" -#~ msgid "cannot extract array element from a non-array" -#~ msgstr "ne peut pas extraire un élément du tableau à partir d'un objet qui n'est pas un tableau" +#~ msgid "invalid input syntax for type point: \"%s\"" +#~ msgstr "syntaxe en entrée invalide pour le type point : « %s »" -#~ msgid "cannot extract field from a non-object" -#~ msgstr "ne peut pas extraire le chemin à partir d'un non-objet" - -#~ msgid "cannot call json_array_elements on a non-array" -#~ msgstr "ne peut pas appeler json_array_elements sur un objet qui n'est pas un tableau" - -#~ msgid "cannot call json_array_elements on a scalar" -#~ msgstr "ne peut pas appeler json_array_elements sur un scalaire" - -#~ msgid "first argument of json_populate_record must be a row type" -#~ msgstr "le premier argument de json_populate_record doit être un type ROW" - -#~ msgid "first argument of json_populate_recordset must be a row type" -#~ msgstr "le premier argument de json_populate_recordset doit être un type ROW" - -#~ msgid "cannot call json_populate_recordset on an object" -#~ msgstr "ne peut pas appeler json_populate_recordset sur un objet" +#~ msgid "invalid input syntax for type lseg: \"%s\"" +#~ msgstr "syntaxe en entrée invalide pour le type lseg : « %s »" -#~ msgid "cannot call json_populate_recordset with nested objects" -#~ msgstr "ne peut pas appeler json_populate_recordset sur des objets imbriqués" +#~ msgid "invalid input syntax for type polygon: \"%s\"" +#~ msgstr "syntaxe en entrée invalide pour le type polygon : « %s »" -#~ msgid "must call json_populate_recordset on an array of objects" -#~ msgstr "doit appeler json_populate_recordset sur un tableau d'objets" +#~ msgid "invalid input syntax for type circle: \"%s\"" +#~ msgstr "syntaxe en entrée invalide pour le type circle : « %s »" -#~ msgid "cannot call json_populate_recordset with nested arrays" -#~ msgstr "ne peut pas appeler json_populate_recordset avec des tableaux imbriqués" +#~ msgid "could not format \"circle\" value" +#~ msgstr "n'a pas pu formater la valeur « circle »" -#~ msgid "cannot call json_populate_recordset on a scalar" -#~ msgstr "ne peut pas appeler json_populate_recordset sur un scalaire" +#~ msgid "must be superuser to signal the postmaster" +#~ msgstr "doit être super-utilisateur pour envoyer un signal au postmaster" -#~ msgid "cannot call json_populate_recordset on a nested object" -#~ msgstr "ne peut pas appeler json_populate_recordset sur un objet imbriqué" +#~ msgid "must be superuser to rotate log files" +#~ msgstr "doit être super-utilisateur pour exécuter la rotation des journaux applicatifs" -#~ msgid "No description available." -#~ msgstr "Aucune description disponible." +#~ msgid "argument for function \"exp\" too big" +#~ msgstr "l'argument de la fonction « exp » est trop gros" -#~ msgid "Sets the name of the Kerberos service." -#~ msgstr "Initialise le nom du service Kerberos." +#~ msgid "could not convert to time zone \"%s\"" +#~ msgstr "n'a pas pu convertir vers le fuseau horaire « %s »" -#~ msgid "time zone offset %d is not a multiple of 900 sec (15 min) in time zone file \"%s\", line %d" +#~ msgid "WAL writer sleep time between WAL flushes." #~ msgstr "" -#~ "le décalage %d du fuseau horaire n'est pas un multiples de 900 secondes\n" -#~ "(15 minutes) dans le fichier des fuseaux horaires « %s », ligne %d" +#~ "Temps d'endormissement du processus d'écriture pendant le vidage des\n" +#~ "journaux de transactions en millisecondes." -#~ msgid "Perhaps out of disk space?" -#~ msgstr "Peut-être manquez-vous de place disque ?" +#~ msgid "JSON does not support infinite date values." +#~ msgstr "JSON ne supporte pas les valeurs infinies de date." -#~ msgid "could not change directory to \"%s\"" -#~ msgstr "n'a pas pu accéder au répertoire « %s »" +#~ msgid "JSON does not support infinite timestamp values." +#~ msgstr "JSON ne supporte pas les valeurs infinies de timestamp." -#~ msgid "unlogged GiST indexes are not supported" -#~ msgstr "les index GiST non tracés ne sont pas supportés" +#~ msgid "cannot override frame clause of window \"%s\"" +#~ msgstr "ne peut pas surcharger la frame clause du window « %s »" -#~ msgid "could not open file \"%s\" (log file %u, segment %u): %m" -#~ msgstr "n'a pas pu ouvrir le fichier « %s » (journal de transactions %u, segment %u) : %m" +#~ msgid "window functions cannot use named arguments" +#~ msgstr "les fonctions window ne peuvent pas renvoyer des arguments nommés" -#~ msgid "there is no contrecord flag in log file %u, segment %u, offset %u" -#~ msgstr "" -#~ "il n'y a pas de drapeaux « contrecord » dans le journal de transactions %u,\n" -#~ "segment %u, décalage %u" +#~ msgid "invalid list syntax for \"listen_addresses\"" +#~ msgstr "syntaxe de liste invalide pour le paramètre « listen_addresses »" -#~ msgid "invalid contrecord length %u in log file %u, segment %u, offset %u" -#~ msgstr "" -#~ "longueur invalide du « contrecord » %u dans le journal de tranasctions %u,\n" -#~ "segment %u, décalage %u" +#~ msgid "invalid list syntax for \"unix_socket_directories\"" +#~ msgstr "syntaxe de liste invalide pour le paramètre « unix_socket_directories »" -#~ msgid "Incorrect XLOG_SEG_SIZE in page header." -#~ msgstr "XLOG_SEG_SIZE incorrecte dans l'en-tête de page." +#~ msgid "Valid values are '[]', '[)', '(]', and '()'." +#~ msgstr "Les valeurs valides sont « [] », « [) », « (] » et « () »." -#~ msgid "Incorrect XLOG_BLCKSZ in page header." -#~ msgstr "XLOG_BLCKSZ incorrect dans l'en-tête de page." +#~ msgid "poll() failed in statistics collector: %m" +#~ msgstr "échec du poll() dans le récupérateur de statistiques : %m" -#~ msgid "xrecoff \"%X\" is out of valid range, 0..%X" -#~ msgstr "xrecoff « %X » en dehors des limites valides, 0..%X" +#~ msgid "select() failed in logger process: %m" +#~ msgstr "échec de select() dans le processus des journaux applicatifs : %m" -#~ msgid "uncataloged table %s" -#~ msgstr "table %s sans catalogue" +#~ msgid "%s: could not open file \"%s\": %s\n" +#~ msgstr "%s : n'a pas pu ouvrir le fichier « %s » : %s\n" -#~ msgid "cannot use subquery in default expression" -#~ msgstr "ne peut pas utiliser une sous-requête dans l'expression par défaut" +#~ msgid "%s: could not open log file \"%s/%s\": %s\n" +#~ msgstr "%s : n'a pas pu ouvrir le journal applicatif « %s/%s » : %s\n" -#~ msgid "cannot use aggregate function in default expression" -#~ msgstr "ne peut pas utiliser une fonction d'agrégat dans une expression par défaut" +#~ msgid "%s: could not fork background process: %s\n" +#~ msgstr "%s : n'a pas pu créer un processus fils : %s\n" -#~ msgid "cannot use window function in default expression" -#~ msgstr "ne peut pas utiliser une fonction window dans une expression par défaut" +#~ msgid "%s: could not dissociate from controlling TTY: %s\n" +#~ msgstr "%s : n'a pas pu se dissocier du TTY contrôlant : %s\n" -#~ msgid "cannot use window function in check constraint" -#~ msgstr "ne peut pas utiliser une fonction window dans une contrainte de vérification" +#~ msgid "Runs the server silently." +#~ msgstr "Lance le serveur de manière silencieuse." -#~ msgid "A function returning ANYRANGE must have at least one ANYRANGE argument." +#~ msgid "If this parameter is set, the server will automatically run in the background and any controlling terminals are dissociated." #~ msgstr "" -#~ "Une fonction renvoyant ANYRANGE doit avoir au moins un argument du type\n" -#~ "ANYRANGE." +#~ "Si ce paramètre est initialisé, le serveur sera exécuté automatiquement en\n" +#~ "tâche de fond et les terminaux de contrôles seront dés-associés." -#~ msgid "%s already exists in schema \"%s\"" -#~ msgstr "%s existe déjà dans le schéma « %s »" - -#~ msgid "CREATE TABLE AS specifies too many column names" -#~ msgstr "CREATE TABLE AS spécifie trop de noms de colonnes" +#~ msgid "WAL sender sleep time between WAL replications." +#~ msgstr "" +#~ "Temps d'endormissement du processus d'envoi des journaux de transactions entre\n" +#~ "les réplications des journaux de transactions." -#~ msgid "cannot use subquery in parameter default value" -#~ msgstr "ne peut pas utiliser une sous-requête dans une valeur par défaut d'un paramètre" +#~ msgid "Sets the list of known custom variable classes." +#~ msgstr "Initialise la liste des classes variables personnalisées connues." -#~ msgid "cannot use aggregate function in parameter default value" -#~ msgstr "" -#~ "ne peut pas utiliser une fonction d'agrégat dans la valeur par défaut d'un\n" -#~ "paramètre" +#~ msgid "foreign key constraint \"%s\" of relation \"%s\" does not exist" +#~ msgstr "la clé étrangère « %s » de la relation « %s » n'existe pas" -#~ msgid "cannot use window function in parameter default value" -#~ msgstr "ne peut pas utiliser la fonction window dans la valeur par défaut d'un paramètre" +#~ msgid "removing built-in function \"%s\"" +#~ msgstr "suppression de la fonction interne « %s »" -#~ msgid "Use ALTER AGGREGATE to rename aggregate functions." -#~ msgstr "Utiliser ALTER AGGREGATE pour renommer les fonctions d'agrégat." +#~ msgid "permission denied to drop foreign-data wrapper \"%s\"" +#~ msgstr "droit refusé pour supprimer le wrapper de données distantes « %s »" -#~ msgid "Use ALTER AGGREGATE to change owner of aggregate functions." -#~ msgstr "Utiliser ALTER AGGREGATE pour changer le propriétaire des fonctions d'agrégat." +#~ msgid "Must be superuser to drop a foreign-data wrapper." +#~ msgstr "Doit être super-utilisateur pour supprimer un wrapper de données distantes." -#~ msgid "function \"%s\" already exists in schema \"%s\"" -#~ msgstr "la fonction « %s » existe déjà dans le schéma « %s »" +#~ msgid "must be superuser to drop text search parsers" +#~ msgstr "" +#~ "doit être super-utilisateur pour supprimer des analyseurs de recherche plein\n" +#~ "texte" -#~ msgid "cannot use aggregate in index predicate" -#~ msgstr "ne peut pas utiliser un agrégat dans un prédicat d'index" +#~ msgid "must be superuser to drop text search templates" +#~ msgstr "doit être super-utilisateur pour supprimer des modèles de recherche plein texte" -#~ msgid "cannot use window function in EXECUTE parameter" -#~ msgstr "ne peut pas utiliser une fonction window dans le paramètre EXECUTE" +#~ msgid "recovery is still in progress, can't accept WAL streaming connections" +#~ msgstr "la restauration est en cours, ne peut pas accepter les connexions de flux WAL" -#~ msgid "constraints on foreign tables are not supported" -#~ msgstr "les contraintes sur les tables distantes ne sont pas supportées" +#~ msgid "standby connections not allowed because wal_level=minimal" +#~ msgstr "connexions standby non autorisées car wal_level=minimal" -#~ msgid "default values on foreign tables are not supported" -#~ msgstr "les valeurs par défaut ne sont pas supportées sur les tables distantes" +#~ msgid "could not open directory \"pg_tblspc\": %m" +#~ msgstr "n'a pas pu ouvrir le répertoire « pg_tblspc » : %m" -#~ msgid "cannot use window function in transform expression" -#~ msgstr "ne peut pas utiliser la fonction window dans l'expression de la transformation" +#~ msgid "could not access root certificate file \"%s\": %m" +#~ msgstr "n'a pas pu accéder au fichier du certificat racine « %s » : %m" -#~ msgid "Use ALTER FOREIGN TABLE instead." -#~ msgstr "Utilisez ALTER FOREIGN TABLE à la place." +#~ msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s" +#~ msgstr "liste de révocation des certificats SSL « %s » introuvable, continue : %s" -#~ msgid "cannot use window function in trigger WHEN condition" -#~ msgstr "ne peut pas utiliser la fonction window dans la condition WHEN d'un trigger" +#~ msgid "Certificates will not be checked against revocation list." +#~ msgstr "Les certificats ne seront pas vérifiés avec la liste de révocation." -#~ msgid "must be superuser to rename text search parsers" -#~ msgstr "" -#~ "doit être super-utilisateur pour renommer les analyseurs de recherche plein\n" -#~ "texte" +#~ msgid "missing or erroneous pg_hba.conf file" +#~ msgstr "fichier pg_hba.conf manquant ou erroné" -#~ msgid "must be superuser to rename text search templates" -#~ msgstr "doit être super-utilisateur pour renommer les modèles de recherche plein texte" +#~ msgid "See server log for details." +#~ msgstr "Voir les journaux applicatifs du serveur pour plus de détails." -#~ msgid "automatic vacuum of table \"%s.%s.%s\": cannot (re)acquire exclusive lock for truncate scan" -#~ msgstr "vacuum automatique de la table « %s.%s.%s » : ne peut pas acquérir le verrou exclusif pour la tronquer" +#~ msgid "Make sure the root.crt file is present and readable." +#~ msgstr "Assurez-vous que le certificat racine (root.crt) est présent et lisible" -#~ msgid "You need an unconditional ON INSERT DO INSTEAD rule or an INSTEAD OF INSERT trigger." -#~ msgstr "Vous avez besoin d'une règle ON INSERT DO INSTEAD sans condition ou d'un trigger INSTEAD OF INSERT." +#~ msgid " --help show this help, then exit\n" +#~ msgstr " --help affiche cette aide, puis quitte\n" -#~ msgid "You need an unconditional ON UPDATE DO INSTEAD rule or an INSTEAD OF UPDATE trigger." -#~ msgstr "Vous avez besoin d'une règle non conditionnelle ON UPDATE DO INSTEAD ou d'un trigger INSTEAD OF UPDATE." +#~ msgid " --version output version information, then exit\n" +#~ msgstr " --version affiche la version, puis quitte\n" -#~ msgid "You need an unconditional ON DELETE DO INSTEAD rule or an INSTEAD OF DELETE trigger." -#~ msgstr "Vous avez besoin d'une règle inconditionnelle ON DELETE DO INSTEAD ou d'un trigger INSTEAD OF DELETE." +#~ msgid "CREATE TABLE AS cannot specify INTO" +#~ msgstr "CREATE TABLE AS ne peut pas spécifier INTO" -#~ msgid "LDAP search failed for filter \"%s\" on server \"%s\": user is not unique (%ld matches)" -#~ msgstr "" -#~ "échec de la recherche LDAP pour le filtre « %s » sur le serveur « %s » :\n" -#~ "utilisateur non unique (%ld correspondances)" +#~ msgid "column name list not allowed in CREATE TABLE / AS EXECUTE" +#~ msgstr "la liste de noms de colonnes n'est pas autorisée dans CREATE TABLE / AS EXECUTE" -#~ msgid "VALUES must not contain table references" -#~ msgstr "VALUES ne doit pas contenir de références de table" +#~ msgid "INSERT ... SELECT cannot specify INTO" +#~ msgstr "INSERT ... SELECT ne peut pas avoir INTO" -#~ msgid "VALUES must not contain OLD or NEW references" -#~ msgstr "VALUES ne doit pas contenir des références à OLD et NEW" +#~ msgid "DECLARE CURSOR cannot specify INTO" +#~ msgstr "DECLARE CURSOR ne peut pas spécifier INTO" -#~ msgid "Use SELECT ... UNION ALL ... instead." -#~ msgstr "Utilisez à la place SELECT ... UNION ALL ..." +#~ msgid "subquery in FROM cannot have SELECT INTO" +#~ msgstr "la sous-requête du FROM ne peut pas avoir de SELECT INTO" -#~ msgid "cannot use aggregate function in VALUES" -#~ msgstr "ne peut pas utiliser la fonction d'agrégat dans un VALUES" +#~ msgid "subquery cannot have SELECT INTO" +#~ msgstr "la sous-requête ne peut pas avoir de SELECT INTO" -#~ msgid "cannot use window function in VALUES" -#~ msgstr "ne peut pas utiliser la fonction window dans un VALUES" +#~ msgid "subquery in WITH cannot have SELECT INTO" +#~ msgstr "la sous-requête du WITH ne peut pas avoir de SELECT INTO" -#~ msgid "cannot use aggregate function in UPDATE" -#~ msgstr "ne peut pas utiliser une fonction d'agrégat dans un UPDATE" +#~ msgid "tablespace %u is not empty" +#~ msgstr "le tablespace %u n'est pas vide" -#~ msgid "cannot use window function in UPDATE" -#~ msgstr "ne peut pas utiliser une fonction window dans un UPDATE" +#~ msgid "consistent state delayed because recovery snapshot incomplete" +#~ msgstr "état de cohérence pas encore atteint à cause d'un snapshot de restauration incomplet" -#~ msgid "cannot use aggregate function in RETURNING" -#~ msgstr "ne peut pas utiliser une fonction d'agrégat dans RETURNING" +#~ msgid "SSPI error %x" +#~ msgstr "erreur SSPI : %x" -#~ msgid "cannot use window function in RETURNING" -#~ msgstr "ne peut pas utiliser une fonction window dans RETURNING" +#~ msgid "%s (%x)" +#~ msgstr "%s (%x)" -#~ msgid "RETURNING cannot contain references to other relations" -#~ msgstr "RETURNING ne doit pas contenir de références à d'autres relations" +#~ msgid "resetting unlogged relations: cleanup %d init %d" +#~ msgstr "réinitialisation des relations non tracées : nettoyage %d initialisation %d" -#~ msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause" -#~ msgstr "SELECT FOR UPDATE/SHARE n'est pas autorisé avec la clause GROUP BY" +#~ msgid "ALTER TYPE USING is only supported on plain tables" +#~ msgstr "ALTER TYPE USING est seulement supportés sur les tables standards" -#~ msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause" -#~ msgstr "SELECT FOR UPDATE/SHARE n'est pas autorisé avec la clause HAVING" +#~ msgid "index \"%s\" is not a b-tree" +#~ msgstr "l'index « %s » n'est pas un btree" -#~ msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions" -#~ msgstr "SELECT FOR UPDATE/SHARE n'est pas autorisé avec les fonctions d'agrégats" +#~ msgid "unable to read symbolic link %s: %m" +#~ msgstr "incapable de lire le lien symbolique %s : %m" -#~ msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions" -#~ msgstr "SELECT FOR UPDATE/SHARE n'est pas autorisé avec les fonctions window" +#~ msgid "unable to open directory pg_tblspc: %m" +#~ msgstr "impossible d'ouvrir le répertoire p_tblspc : %m" -#~ msgid "SELECT FOR UPDATE/SHARE cannot be used with foreign table \"%s\"" -#~ msgstr "SELECT FOR UPDATE/SHARE ne peut pas être utilisé avec une table distante « %s »" +#~ msgid "Write-Ahead Log / Streaming Replication" +#~ msgstr "Write-Ahead Log / Réplication en flux" -#~ msgid "aggregates not allowed in WHERE clause" -#~ msgstr "agrégats non autorisés dans une clause WHERE" +#~ msgid "syntax error in recovery command file: %s" +#~ msgstr "erreur de syntaxe dans le fichier de restauration : %s" -#~ msgid "window functions not allowed in GROUP BY clause" -#~ msgstr "fonctions window non autorisées dans une clause GROUP BY" +#~ msgid "Lines should have the format parameter = 'value'." +#~ msgstr "Les lignes devraient avoir le format paramètre = 'valeur'" -#~ msgid "JOIN/ON clause refers to \"%s\", which is not part of JOIN" -#~ msgstr "la clause JOIN/ON se réfère à « %s », qui ne fait pas partie du JOIN" +#~ msgid "index %u/%u/%u needs VACUUM FULL or REINDEX to finish crash recovery" +#~ msgstr "" +#~ "l'index %u/%u/%u a besoin d'un VACUUM FULL ou d'un REINDEX pour terminer la\n" +#~ "récupération suite à un arrêt brutal" -#~ msgid "subquery in FROM cannot refer to other relations of same query level" +#~ msgid "Incomplete insertion detected during crash replay." #~ msgstr "" -#~ "la sous-requête du FROM ne peut pas faire référence à d'autres relations\n" -#~ "dans le même niveau de la requête" +#~ "Insertion incomplète détectée lors de la ré-exécution des requêtes suite à\n" +#~ "l'arrêt brutal." -#~ msgid "function expression in FROM cannot refer to other relations of same query level" +#~ msgid "index \"%s\" needs VACUUM or REINDEX to finish crash recovery" #~ msgstr "" -#~ "l'expression de la fonction du FROM ne peut pas faire référence à d'autres\n" -#~ "relations sur le même niveau de la requête" +#~ "l'index « %s » a besoin d'un VACUUM ou d'un REINDEX pour terminer la\n" +#~ "récupération suite à un arrêt brutal" -#~ msgid "cannot use window function in function expression in FROM" +#~ msgid "index \"%s\" needs VACUUM FULL or REINDEX to finish crash recovery" #~ msgstr "" -#~ "ne peut pas utiliser la fonction window dans l'expression de la fonction\n" -#~ "du FROM" +#~ "l'index « %s » a besoin d'un VACUUM FULL ou d'un REINDEX pour terminer la\n" +#~ "récupération suite à un arrêt brutal" -#~ msgid "argument of %s must not contain aggregate functions" -#~ msgstr "l'argument de %s ne doit pas contenir de fonctions d'agrégats" +#~ msgid "EnumValuesCreate() can only set a single OID" +#~ msgstr "EnumValuesCreate() peut seulement initialiser un seul OID" -#~ msgid "argument of %s must not contain window functions" -#~ msgstr "l'argument de %s ne doit pas contenir des fonctions window" +#~ msgid "clustering \"%s.%s\"" +#~ msgstr "exécution de CLUSTER sur « %s.%s »" -#~ msgid "arguments of row IN must all be row expressions" -#~ msgstr "les arguments de la ligne IN doivent tous être des expressions de ligne" +#~ msgid "cannot cluster on index \"%s\" because access method does not handle null values" +#~ msgstr "" +#~ "ne peut pas créer un cluster sur l'index « %s » car la méthode d'accès de\n" +#~ "l'index ne gère pas les valeurs NULL" -#~ msgid "cannot use aggregate function in rule WHERE condition" -#~ msgstr "ne peut pas utiliser la fonction d'agrégat dans la condition d'une règle WHERE" +#~ msgid "You might be able to work around this by marking column \"%s\" NOT NULL, or use ALTER TABLE ... SET WITHOUT CLUSTER to remove the cluster specification from the table." +#~ msgstr "" +#~ "Vous pourriez contourner ceci en marquant la colonne « %s » avec la\n" +#~ "contrainte NOT NULL ou en utilisant ALTER TABLE ... SET WITHOUT CLUSTER pour\n" +#~ "supprimer la spécification CLUSTER de la table." -#~ msgid "cannot use window function in rule WHERE condition" -#~ msgstr "ne peut pas utiliser la fonction window dans la condition d'une règle WHERE" +#~ msgid "You might be able to work around this by marking column \"%s\" NOT NULL." +#~ msgstr "Vous pouvez contourner ceci en marquant la colonne « %s » comme NOT NULL." -#~ msgid "" -#~ "This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter. You can either reduce the request size or reconfigure the kernel with larger SHMMAX. To reduce the request size (currently %lu bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.\n" -#~ "If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter, in which case raising the request size or reconfiguring SHMMIN is called for.\n" -#~ "The PostgreSQL documentation contains more information about shared memory configuration." +#~ msgid "cannot cluster on expressional index \"%s\" because its index access method does not handle null values" #~ msgstr "" -#~ "Cette erreur signifie habituellement que la demande de PostgreSQL pour un\n" -#~ "segment de mémoire partagée a dépassé le paramètre SHMMAX de votre noyau.\n" -#~ "Vous pouvez soit réduire la taille de la requête soit reconfigurer le noyau\n" -#~ "avec un SHMMAX plus important. Pour réduire la taille de la requête\n" -#~ "(actuellement %lu octets), réduisez l'utilisation de la mémoire partagée par PostgreSQL,par exemple en réduisant shared_buffers ou max_connections\n" -#~ "Si la taille de la requête est déjà petite, il est possible qu'elle soit\n" -#~ "moindre que le paramètre SHMMIN de votre noyau, auquel cas, augmentez la\n" -#~ "taille de la requête ou reconfigurez SHMMIN.\n" -#~ "La documentation de PostgreSQL contient plus d'informations sur la\n" -#~ "configuration de la mémoire partagée." +#~ "ne peut pas exécuter CLUSTER sur l'index à expression « %s » car sa méthode\n" +#~ "d'accès ne gère pas les valeurs NULL" -#~ msgid "terminating all walsender processes to force cascaded standby(s) to update timeline and reconnect" +#~ msgid "\"%s\" is not a table, view, or composite type" +#~ msgstr "« %s » n'est pas une table, une vue ou un type composite" + +#~ msgid "must be superuser to comment on procedural language" #~ msgstr "" -#~ "arrêt de tous les processus walsender pour forcer les serveurs standby en\n" -#~ "cascade à mettre à jour la timeline et à se reconnecter" +#~ "doit être super-utilisateur pour ajouter un commentaire sur un langage de\n" +#~ "procédures" -#~ msgid "shutdown requested, aborting active base backup" -#~ msgstr "arrêt demandé, annulation de la sauvegarde active de base" +#~ msgid "must be superuser to comment on text search parser" +#~ msgstr "" +#~ "doit être super-utilisateur pour ajouter un commentaire sur l'analyseur de\n" +#~ "recherche plein texte" -#~ msgid "streaming replication successfully connected to primary" -#~ msgstr "réplication de flux connecté avec succès au serveur principal" +#~ msgid "must be superuser to comment on text search template" +#~ msgstr "" +#~ "doit être super-utilisateur pour ajouter un commentaire sur un modèle de\n" +#~ "recherche plein texte" -#~ msgid "invalid standby handshake message type %d" -#~ msgstr "type %d du message de handshake du serveur en attente invalide" +#~ msgid "function \"%s\" is already in schema \"%s\"" +#~ msgstr "la fonction « %s » existe déjà dans le schéma « %s »" -#~ msgid "terminating walsender process to force cascaded standby to update timeline and reconnect" +#~ msgid "cannot reference temporary table from permanent table constraint" #~ msgstr "" -#~ "arrêt du processus walreceiver pour forcer le serveur standby en cascade à\n" -#~ "mettre à jour la timeline et à se reconnecter" +#~ "ne peut pas référencer une table temporaire à partir d'une contrainte de\n" +#~ "table permanente" -#~ msgid "invalid standby query string: %s" -#~ msgstr "chaîne de requête invalide sur le serveur en attente : %s" +#~ msgid "cannot reference permanent table from temporary table constraint" +#~ msgstr "" +#~ "ne peut pas référencer une table permanente à partir de la contrainte de\n" +#~ "table temporaire" -#~ msgid "large object %u was not opened for writing" -#~ msgstr "le « Large Object » %u n'a pas été ouvert en écriture" +#~ msgid "composite type must have at least one attribute" +#~ msgstr "le type composite doit avoir au moins un attribut" -#~ msgid "large object %u was already dropped" -#~ msgstr "le « Large Object » %u a déjà été supprimé" +#~ msgid "database \"%s\" not found" +#~ msgstr "base de données « %s » non trouvée" -#~ msgid "Not enough memory for reassigning the prepared transaction's locks." -#~ msgstr "Pas assez de mémoire pour réaffecter les verrous des transactions préparées." +#~ msgid "invalid list syntax for parameter \"datestyle\"" +#~ msgstr "syntaxe de liste invalide pour le paramètre « datestyle »" -#~ msgid "\"interval\" time zone \"%s\" not valid" -#~ msgstr "le fuseau horaire « %s » n'est pas valide pour le type « interval »" +#~ msgid "unrecognized \"datestyle\" key word: \"%s\"" +#~ msgstr "mot clé « datestyle » non reconnu : « %s »" -#~ msgid "inconsistent use of year %04d and \"BC\"" -#~ msgstr "utilisation non cohérente de l'année %04d et de « BC »" +#~ msgid "invalid interval value for time zone: month not allowed" +#~ msgstr "valeur d'intervalle invalide pour le fuseau horaire : les mois ne sont pas autorisés" -#~ msgid "No rows were found in \"%s\"." -#~ msgstr "Aucune ligne trouvée dans « %s »." +#~ msgid "invalid interval value for time zone: day not allowed" +#~ msgstr "valeur d'intervalle invalide pour le fuseau horaire : jour non autorisé" -#~ msgid "argument number is out of range" -#~ msgstr "le nombre en argument est en dehors des limites" +#~ msgid "argument to pg_get_expr() must come from system catalogs" +#~ msgstr "l'argument de pg_get_expr() doit provenir des catalogues systèmes" -#~ msgid "index \"%s\" is not ready" -#~ msgstr "l'index « %s » n'est pas prêt" +#~ msgid "could not enable credential reception: %m" +#~ msgstr "n'a pas pu activer la réception de lettres de créance : %m" -#~ msgid "could not remove database directory \"%s\"" -#~ msgstr "n'a pas pu supprimer le répertoire de bases de données « %s »" +#~ msgid "could not get effective UID from peer credentials: %m" +#~ msgstr "n'a pas pu obtenir l'UID réel à partir des pièces d'identité de l'autre : %m" -#~ msgid "unexpected end of line at line %d of thesaurus file \"%s\"" -#~ msgstr "fin de ligne inattendue à la ligne %d du thésaurus « %s »" +#~ msgid "Ident authentication is not supported on local connections on this platform" +#~ msgstr "l'authentification Ident n'est pas supportée sur les connexions locales sur cette plateforme" -#~ msgid "unexpected end of line or lexeme at line %d of thesaurus file \"%s\"" -#~ msgstr "fin de ligne ou de lexeme inattendu sur la ligne %d du thesaurus « %s »" +#~ msgid "could not create log file \"%s\": %m" +#~ msgstr "n'a pas pu créer le journal applicatif « %s » : %m" -#~ msgid "unexpected delimiter at line %d of thesaurus file \"%s\"" -#~ msgstr "délimiteur inattendu sur la ligne %d du thesaurus « %s »" +#~ msgid "could not open new log file \"%s\": %m" +#~ msgstr "n'a pas pu ouvrir le nouveau journal applicatif « %s » : %m" -#~ msgid "Use the @@@ operator instead." -#~ msgstr "Utilisez à la place l'opérateur @@@." +#~ msgid "Sets immediate fsync at commit." +#~ msgstr "Configure un fsync immédiat lors du commit." -#~ msgid "@@ operator does not support lexeme weight restrictions in GIN index searches" +#~ msgid "invalid list syntax for parameter \"log_destination\"" +#~ msgstr "syntaxe de liste invalide pour le paramètre « log_destination »" + +#~ msgid "unrecognized \"log_destination\" key word: \"%s\"" +#~ msgstr "mot clé « log_destination » non reconnu : « %s »" + +#~ msgid "cannot drop \"%s\" because it is being used by active queries in this session" #~ msgstr "" -#~ "l'opérateur @@ ne supporte pas les restrictions de poids de lexeme dans les\n" -#~ "recherches par index GIN" +#~ "ne peut pas supprimer « %s » car cet objet est en cours d'utilisation par\n" +#~ "des requêtes actives dans cette session" -#~ msgid "query requires full scan, which is not supported by GIN indexes" +#~ msgid "parameter \"recovery_target_inclusive\" requires a Boolean value" +#~ msgstr "le paramètre « recovery_target_inclusive » requiert une valeur booléenne" + +#~ msgid "parameter \"standby_mode\" requires a Boolean value" +#~ msgstr "le paramètre « standby_mode » requiert une valeur booléenne" + +#~ msgid "Sets the message levels that are logged during recovery." +#~ msgstr "Initialise les niveaux de messages qui sont tracés lors de la restauration." + +#~ msgid "Not safe to send CSV data\n" +#~ msgstr "Envoi non sûr des données CSV\n" + +#~ msgid "recovery restart point at %X/%X with latest known log time %s" #~ msgstr "" -#~ "la requête nécessite un parcours complet, ce qui n'est pas supporté par les\n" -#~ "index GIN" +#~ "point de relancement de la restauration sur %X/%X avec %s comme dernière\n" +#~ "date connue du journal" -#~ msgid "cannot calculate week number without year information" -#~ msgstr "ne peut pas calculer le numéro de la semaine sans informations sur l'année" +#~ msgid "restartpoint_command = '%s'" +#~ msgstr "restartpoint_command = '%s'" -#~ msgid "UTF-16 to UTF-8 translation failed: %lu" -#~ msgstr "échec de la conversion d'UTF16 vers UTF8 : %lu" +#~ msgid "usermap \"%s\"" +#~ msgstr "correspondance utilisateur « %s »" -#~ msgid "AM/PM hour must be between 1 and 12" -#~ msgstr "l'heure AM/PM doit être compris entre 1 et 12" +#~ msgid "WAL archiving is not active" +#~ msgstr "l'archivage des journaux de transactions n'est pas actif" -#~ msgid "Sat" -#~ msgstr "Sam" +#~ msgid "archive_mode must be enabled at server start." +#~ msgstr "archive_mode doit être activé au lancement du serveur." -#~ msgid "Fri" -#~ msgstr "Ven" +#~ msgid "archive_command must be defined before online backups can be made safely." +#~ msgstr "" +#~ "archive_command doit être défini avant que les sauvegardes à chaud puissent\n" +#~ "s'effectuer correctement." -#~ msgid "Thu" -#~ msgstr "Jeu" +#~ msgid "During recovery, allows connections and queries. During normal running, causes additional info to be written to WAL to enable hot standby mode on WAL standby nodes." +#~ msgstr "" +#~ "Lors de la restauration, autorise les connexions et les requêtes. Lors d'une\n" +#~ "exécution normale, fait que des informations supplémentaires sont écrites dans\n" +#~ "les journaux de transactions pour activer le mode Hot Standby sur les nÅ“uds\n" +#~ "en attente." -#~ msgid "Wed" -#~ msgstr "Mer" +#~ msgid "unlogged operation performed, data may be missing" +#~ msgstr "opération réalisée non tracée, les données pourraient manquer" -#~ msgid "Tue" -#~ msgstr "Mar" +#~ msgid "not enough shared memory for walsender" +#~ msgstr "pas assez de mémoire partagée pour le processus d'envoi des journaux de transactions" -#~ msgid "Mon" -#~ msgstr "Lun" +#~ msgid "not enough shared memory for walreceiver" +#~ msgstr "" +#~ "pas assez de mémoire partagée pour le processus de réception des journaux de\n" +#~ "transactions" -#~ msgid "Sun" -#~ msgstr "Dim" +#~ msgid "connection limit exceeded for non-superusers" +#~ msgstr "limite de connexions dépassée pour les utilisateurs standards" -#~ msgid "Saturday" -#~ msgstr "Samedi" +#~ msgid "not enough shared memory for background writer" +#~ msgstr "pas assez de mémoire partagée pour le processus d'écriture en tâche de fond" -#~ msgid "Friday" -#~ msgstr "Vendredi" +#, fuzzy +#~ msgid "couldn't put socket to non-blocking mode: %m" +#~ msgstr "n'a pas pu activer le mode non-bloquant pour la socket : %s\n" -#~ msgid "Thursday" -#~ msgstr "Jeudi" +#, fuzzy +#~ msgid "couldn't put socket to blocking mode: %m" +#~ msgstr "n'a pas pu activer le mode bloquant pour la socket : %s\n" -#~ msgid "Wednesday" -#~ msgstr "Mercredi" +#~ msgid "WAL file SYSID is %s, pg_control SYSID is %s" +#~ msgstr "le SYSID du journal de transactions WAL est %s, celui de pg_control est %s" -#~ msgid "Tuesday" -#~ msgstr "Mardi" +#, fuzzy +#~ msgid "sorry, too many standbys already" +#~ msgstr "désolé, trop de clients sont déjà connectés" -#~ msgid "Monday" -#~ msgstr "Lundi" +#, fuzzy +#~ msgid "invalid WAL message received from primary" +#~ msgstr "format du message invalide" -#~ msgid "Sunday" -#~ msgstr "Dimanche" +#~ msgid "PID %d is among the slowest backends." +#~ msgstr "Le PID %d est parmi les processus serveur les plus lents." -#~ msgid "Dec" -#~ msgstr "Déc" +#~ msgid "transaction is read-only" +#~ msgstr "la transaction est en lecture seule" -#~ msgid "Nov" -#~ msgstr "Nov" +#~ msgid "binary value is out of range for type bigint" +#~ msgstr "la valeur binaire est en dehors des limites du type bigint" -#~ msgid "Oct" -#~ msgstr "Oct" +#~ msgid "redo starts at %X/%X, consistency will be reached at %X/%X" +#~ msgstr "la restauration comme à %X/%X, la cohérence sera atteinte à %X/%X" -#~ msgid "Sep" -#~ msgstr "Sep" +#~ msgid "This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by \"client_encoding\"." +#~ msgstr "" +#~ "Cette erreur peut aussi survenir si la séquence d'octets ne correspond pas\n" +#~ "au jeu de caractères attendu par le serveur, le jeu étant contrôlé par\n" +#~ "« client_encoding »." -#~ msgid "Aug" -#~ msgstr "Aoû" +#~ msgid "Sets the language used in DO statement if LANGUAGE is not specified." +#~ msgstr "" +#~ "Configure le langage utilisé dans une instruction DO si la clause LANGUAGE n'est\n" +#~ "pas spécifiée." -#~ msgid "Jul" -#~ msgstr "Juil" +#~ msgid "shared index \"%s\" can only be reindexed in stand-alone mode" +#~ msgstr "un index partagé « %s » peut seulement être réindexé en mode autonome" -#~ msgid "Jun" -#~ msgstr "Juin" +#~ msgid "\"%s\" is a system catalog" +#~ msgstr "« %s » est un catalogue système" -#~ msgid "S:May" -#~ msgstr "S:Mai" +#~ msgid "shared table \"%s\" can only be reindexed in stand-alone mode" +#~ msgstr "la table partagée « %s » peut seulement être réindexé en mode autonome" -#~ msgid "Apr" -#~ msgstr "Avr" +#~ msgid "cannot truncate system relation \"%s\"" +#~ msgstr "ne peut pas tronquer la relation système « %s »" -#~ msgid "Mar" -#~ msgstr "Mar" +#~ msgid "number of distinct values %g is too low" +#~ msgstr "le nombre de valeurs distinctes %g est trop basse" -#~ msgid "Feb" -#~ msgstr "Fév" +#~ msgid "directory \"%s\" is not empty" +#~ msgstr "le répertoire « %s » n'est pas vide" -#~ msgid "Jan" -#~ msgstr "Jan" +#~ msgid "relation \"%s\" TID %u/%u: XMIN_COMMITTED not set for transaction %u --- cannot shrink relation" +#~ msgstr "" +#~ "relation « %s », TID %u/%u : XMIN_COMMITTED non configuré pour la\n" +#~ "transaction %u --- n'a pas pu diminuer la taille de la relation" -#~ msgid "December" -#~ msgstr "Décembre" +#~ msgid "relation \"%s\" TID %u/%u: dead HOT-updated tuple --- cannot shrink relation" +#~ msgstr "" +#~ "relation « %s », TID %u/%u : ligne morte mise à jour par HOT --- n'a pas pu\n" +#~ "diminuer la taille de la relation" -#~ msgid "November" -#~ msgstr "Novembre" +#~ msgid "relation \"%s\" TID %u/%u: InsertTransactionInProgress %u --- cannot shrink relation" +#~ msgstr "" +#~ "relation « %s », TID %u/%u : InsertTransactionInProgress %u --- n'a pas pu\n" +#~ "diminuer la taille de la relation" -#~ msgid "October" -#~ msgstr "Octobre" +#~ msgid "relation \"%s\" TID %u/%u: DeleteTransactionInProgress %u --- cannot shrink relation" +#~ msgstr "" +#~ "relation « %s », TID %u/%u : DeleteTransactionInProgress %u --- n'a pas pu\n" +#~ "diminuer la taille de la relation" -#~ msgid "September" -#~ msgstr "Septembre" +#~ msgid "" +#~ "%.0f dead row versions cannot be removed yet.\n" +#~ "Nonremovable row versions range from %lu to %lu bytes long.\n" +#~ "There were %.0f unused item pointers.\n" +#~ "Total free space (including removable row versions) is %.0f bytes.\n" +#~ "%u pages are or will become empty, including %u at the end of the table.\n" +#~ "%u pages containing %.0f free bytes are potential move destinations.\n" +#~ "%s." +#~ msgstr "" +#~ "%.0f versions de lignes mortes ne peuvent pas encore être supprimées.\n" +#~ "Les versions non supprimables de ligne vont de %lu to %lu octets.\n" +#~ "Il existait %.0f pointeurs d'éléments inutilisés.\n" +#~ "L'espace libre total (incluant les versions supprimables de ligne) est de\n" +#~ "%.0f octets.\n" +#~ "%u pages sont ou deviendront vides, ceci incluant %u pages en fin de la\n" +#~ "table.\n" +#~ "%u pages contenant %.0f octets libres sont des destinations de déplacement\n" +#~ "disponibles.\n" +#~ "%s." -#~ msgid "August" -#~ msgstr "Août" +#~ msgid "\"%s\": moved %u row versions, truncated %u to %u pages" +#~ msgstr "« %s » : %u versions de ligne déplacées, %u pages tronquées sur %u" -#~ msgid "July" -#~ msgstr "Juillet" +#~ msgid "" +#~ "%u index pages have been deleted, %u are currently reusable.\n" +#~ "%s." +#~ msgstr "" +#~ "%u pages d'index ont été supprimées, %u sont actuellement réutilisables.\n" +#~ "%s." -#~ msgid "June" -#~ msgstr "Juin" +#~ msgid "index \"%s\" contains %.0f row versions, but table contains %.0f row versions" +#~ msgstr "" +#~ "l'index « %s » contient %.0f versions de ligne, mais la table contient %.0f\n" +#~ "versions de ligne" -#~ msgid "May" -#~ msgstr "Mai" +#~ msgid "Rebuild the index with REINDEX." +#~ msgstr "Reconstruisez l'index avec REINDEX." -#~ msgid "April" -#~ msgstr "Avril" +#~ msgid "frame start at CURRENT ROW is not implemented" +#~ msgstr "début du frame à CURRENT ROW n'est pas implémenté" -#~ msgid "March" -#~ msgstr "Mars" +#~ msgid "database system is in consistent recovery mode" +#~ msgstr "le système de bases de données est dans un mode de restauration cohérent" -#~ msgid "February" -#~ msgstr "Février" +#~ msgid "DISTINCT is supported only for single-argument aggregates" +#~ msgstr "DISTINCT est seulement supporté pour les agrégats à un seul argument" -#~ msgid "January" -#~ msgstr "Janvier" +#~ msgid "index row size %lu exceeds btree maximum, %lu" +#~ msgstr "la taille de la ligne index %lu dépasse le maximum de btree, %lu" -#~ msgid "\"TZ\"/\"tz\" not supported" -#~ msgstr "« TZ »/« tz » non supporté" +#~ msgid "Table contains duplicated values." +#~ msgstr "La table contient des valeurs dupliquées." -#~ msgid "invalid AM/PM string" -#~ msgstr "chaîne AM/PM invalide" +#~ msgid "Automatically adds missing table references to FROM clauses." +#~ msgstr "" +#~ "Ajoute automatiquement les références à la table manquant dans les clauses\n" +#~ "FROM." -#~ msgid "not unique \"S\"" -#~ msgstr "« S » non unique" +#~ msgid "Sets the regular expression \"flavor\"." +#~ msgstr "Initialise l'expression rationnelle « flavor »." -#~ msgid "invalid argument for power function" -#~ msgstr "argument invalide pour la fonction puissance (power)" +#~ msgid "attempted change of parameter \"%s\" ignored" +#~ msgstr "tentative de modification du paramètre « %s » ignoré" -#~ msgid "Valid values are DOCUMENT and CONTENT." -#~ msgstr "Les valeurs valides sont DOCUMENT et CONTENT." +#~ msgid "This parameter cannot be changed after server start." +#~ msgstr "Ce paramètre ne peut pas être modifié après le lancement du serveur" -#~ msgid "Valid values are LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7." +#~ msgid "invalid database name \"%s\"" +#~ msgstr "nom de base de données « %s » invalide" + +#~ msgid "invalid role name \"%s\"" +#~ msgstr "nom de rôle « %s » invalide" + +#~ msgid "invalid role password \"%s\"" +#~ msgstr "mot de passe « %s » de l'utilisateur invalide" + +#~ msgid "cannot specify CSV in BINARY mode" +#~ msgstr "ne peut pas spécifier CSV en mode binaire (BINARY)" + +#~ msgid "cannot set session authorization within security-definer function" +#~ msgstr "ne peut pas exécuter SESSION AUTHORIZATION sur la fonction SECURITY DEFINER" + +#~ msgid "SELECT FOR UPDATE/SHARE is not supported within a query with multiple result relations" #~ msgstr "" -#~ "Les valeurs valides sont LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5,\n" -#~ "LOCAL6, LOCAL7." +#~ "SELECT FOR UPDATE/SHARE n'est pas supporté dans une requête avec plusieurs\n" +#~ "relations" -#~ msgid "This can be set to advanced, extended, or basic." +#~ msgid "could not remove relation %s: %m" +#~ msgstr "n'a pas pu supprimer la relation %s : %m" + +#~ msgid "could not remove segment %u of relation %s: %m" +#~ msgstr "n'a pas pu supprimer le segment %u de la relation %s : %m" + +#~ msgid "could not seek to block %u of relation %s: %m" +#~ msgstr "n'a pas pu se positionner sur le bloc %u de la relation %s : %m" + +#~ msgid "could not extend relation %s: %m" +#~ msgstr "n'a pas pu étendre la relation %s : %m" + +#~ msgid "could not open relation %s: %m" +#~ msgstr "n'a pas pu ouvrir la relation %s : %m" + +#~ msgid "could not read block %u of relation %s: %m" +#~ msgstr "n'a pas pu lire le bloc %u de la relation %s : %m" + +#~ msgid "could not write block %u of relation %s: %m" +#~ msgstr "n'a pas pu écrire le bloc %u de la relation %s : %m" + +#~ msgid "could not open segment %u of relation %s: %m" +#~ msgstr "n'a pas pu ouvrir le segment %u de la relation %s : %m" + +#~ msgid "could not fsync segment %u of relation %s: %m" #~ msgstr "" -#~ "Ceci peut être initialisé avec advanced (avancé), extended (étendu) ou\n" -#~ "basic (basique)." +#~ "n'a pas pu synchroniser sur disque (fsync) le segment %u de la relation\n" +#~ "%s : %m" -#~ msgid "Sets the hostname of the Kerberos server." -#~ msgstr "Initalise le nom d'hôte du serveur Kerberos." +#~ msgid "could not fsync segment %u of relation %s but retrying: %m" +#~ msgstr "" +#~ "n'a pas pu synchroniser sur disque (fsync) le segment %u de la relation\n" +#~ "%s, nouvelle tentative : %m" -#~ msgid "Sets realm to match Kerberos and GSSAPI users against." +#~ msgid "could not seek to end of segment %u of relation %s: %m" +#~ msgstr "n'a pas pu se déplacer à la fin du segment %u de la relation %s : %m" + +#~ msgid "unsupported PAM conversation %d/%s" +#~ msgstr "conversation PAM %d/%s non supportée" + +#~ msgid "SELECT FOR UPDATE/SHARE is not allowed in subqueries" +#~ msgstr "SELECT FOR UPDATE/SHARE n'est pas autorisé dans les sous-requêtes" + +#~ msgid "adding missing FROM-clause entry for table \"%s\"" +#~ msgstr "ajout d'une entrée manquante dans FROM (table « %s »)" + +#~ msgid "OLD used in query that is not in a rule" +#~ msgstr "OLD utilisé dans une requête qui n'est pas une règle" + +#~ msgid "NEW used in query that is not in a rule" +#~ msgstr "NEW utilisé dans une requête qui ne fait pas partie d'une règle" + +#~ msgid "hurrying in-progress restartpoint" +#~ msgstr "accélération du restartpoint en cours" + +#~ msgid "multiple DELETE events specified" +#~ msgstr "multiples événements DELETE spécifiés" + +#~ msgid "multiple UPDATE events specified" +#~ msgstr "multiples événements UPDATE spécifiés" + +#~ msgid "multiple TRUNCATE events specified" +#~ msgstr "multiples événements TRUNCATE spécifiés" + +#~ msgid "could not create XPath object" +#~ msgstr "n'a pas pu créer l'objet XPath" + +#, fuzzy +#~ msgid "wrong number of array_subscripts" +#~ msgstr "mauvais nombre d'indices du tableau" + +#~ msgid "fillfactor=%d is out of range (should be between %d and 100)" +#~ msgstr "le facteur de remplissage (%d) est en dehors des limites (il devrait être entre %d et 100)" + +#~ msgid "GIN index does not support search with void query" +#~ msgstr "les index GIN ne supportent pas la recherche avec des requêtes vides" + +#~ msgid "invalid LC_COLLATE setting" +#~ msgstr "paramètre LC_COLLATE invalide" + +#~ msgid "invalid LC_CTYPE setting" +#~ msgstr "paramètre LC_CTYPE invalide" + +#~ msgid "The database cluster was initialized with LOCALE_NAME_BUFLEN %d, but the server was compiled with LOCALE_NAME_BUFLEN %d." #~ msgstr "" -#~ "Indique le royaume pour l'authentification des utilisateurs via Kerberos et\n" -#~ "GSSAPI." +#~ "Le cluster de bases de données a été initialisé avec un LOCALE_NAME_BUFLEN\n" +#~ "à %d alors que le serveur a été compilé avec un LOCALE_NAME_BUFLEN à %d." -#~ msgid "Each session can be either \"origin\", \"replica\", or \"local\"." -#~ msgstr "Chaque session peut valoir soit « origin » soit « replica » soit « local »." +#~ msgid "It looks like you need to initdb or install locale support." +#~ msgstr "" +#~ "Il semble que vous avez besoin d'exécuter initdb ou d'installer le support\n" +#~ "des locales." -#~ msgid "Each SQL transaction has an isolation level, which can be either \"read uncommitted\", \"read committed\", \"repeatable read\", or \"serializable\"." +#~ msgid "log_restartpoints = %s" +#~ msgstr "log_restartpoints = %s" + +#~ msgid "syntax error: cannot back up" +#~ msgstr "erreur de syntaxe : n'a pas pu revenir" + +#~ msgid "syntax error; also virtual memory exhausted" +#~ msgstr "erreur de syntaxe ; de plus, mémoire virtuelle saturée" + +#~ msgid "parser stack overflow" +#~ msgstr "saturation de la pile de l'analyseur" + +#~ msgid "failed to drop all objects depending on %s" +#~ msgstr "échec lors de la suppression de tous les objets dépendant de %s" + +#~ msgid "there are objects dependent on %s" +#~ msgstr "des objets dépendent de %s" + +#~ msgid "multiple constraints named \"%s\" were dropped" +#~ msgstr "les contraintes multiples nommées « %s » ont été supprimées" + +#~ msgid "constraint definition for check constraint \"%s\" does not match" #~ msgstr "" -#~ "Chaque transaction SQL a un niveau d'isolation qui peut être soit « read\n" -#~ "uncommitted », soit « read committed », soit « repeatable read », soit\n" -#~ "« serializable »." +#~ "la définition de la contrainte « %s » pour la contrainte de vérification ne\n" +#~ "correspond pas" -#~ msgid "All SQL statements that cause an error of the specified level or a higher level are logged." +#~ msgid "relation \"%s.%s\" contains more than \"max_fsm_pages\" pages with useful free space" #~ msgstr "" -#~ "Toutes les instructions SQL causant une erreur du niveau spécifié ou d'un\n" -#~ "niveau supérieur sont tracées." +#~ "la relation « %s.%s » contient plus de « max_fsm_pages » pages d'espace\n" +#~ "libre utile" -#~ msgid "Valid values are DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, LOG, FATAL, and PANIC. Each level includes all the levels that follow it." +#~ msgid "Consider using VACUUM FULL on this relation or increasing the configuration parameter \"max_fsm_pages\"." #~ msgstr "" -#~ "Les valeurs valides sont DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO,\n" -#~ "NOTICE, WARNING, ERROR, LOG, FATAL et PANIC. Chaque niveau incut tous les\n" -#~ "niveaux qui le suit." +#~ "Pensez à compacter cette relation en utilisant VACUUM FULL ou à augmenter le\n" +#~ "paramètre de configuration « max_fsm_pages »." -#~ msgid "Valid values are ON, OFF, and SAFE_ENCODING." -#~ msgstr "Les valeurs valides sont ON, OFF et SAFE_ENCODING." +#~ msgid "cannot change number of columns in view" +#~ msgstr "ne peut pas modifier le nombre de colonnes dans la vue" -#~ msgid "Sets the maximum number of disk pages for which free space is tracked." +#~ msgid "unexpected Kerberos user name received from client (received \"%s\", expected \"%s\")" #~ msgstr "" -#~ "Initialise le nombre maximum de pages disque pour lesquelles l'espace libre\n" -#~ "est tracé." +#~ "nom d'utilisateur Kerberos inattendu reçu à partir du client (reçu « %s »,\n" +#~ "attendu « %s »)" -#~ msgid "Sets the maximum number of tables and indexes for which free space is tracked." +#~ msgid "Kerberos 5 not implemented on this server" +#~ msgstr "Kerberos 5 non implémenté sur ce serveur" + +#~ msgid "GSSAPI not implemented on this server" +#~ msgstr "GSSAPI non implémenté sur ce serveur" + +#~ msgid "could not get security token from context" +#~ msgstr "n'a pas pu récupérer le jeton de sécurité à partir du contexte" + +#~ msgid "unsafe permissions on private key file \"%s\"" +#~ msgstr "droits non sûrs sur le fichier de la clé privée « %s »" + +#~ msgid "File must be owned by the database user and must have no permissions for \"group\" or \"other\"." #~ msgstr "" -#~ "Initialise le nombre maximum de tables et index pour lesquels l'espace libre\n" -#~ "est tracé." +#~ "Le fichier doit appartenir au propriétaire de la base de données et ne doit\n" +#~ "pas avoir de droits pour un groupe ou pour les autres." -#~ msgid "Uses the indented output format for EXPLAIN VERBOSE." -#~ msgstr "Utilise le format de sortie indenté pour EXPLAIN VERBOSE." +#~ msgid "cannot use authentication method \"crypt\" because password is MD5-encrypted" +#~ msgstr "" +#~ "n'a pas pu utiliser la méthode d'authentification « crypt » car le mot de\n" +#~ "passe est chiffré avec MD5" -#~ msgid "Prints the execution plan to server log." -#~ msgstr "Affiche le plan d'exécution dans les journaux applicatifs du serveur." +#~ msgid "invalid entry in file \"%s\" at line %d, token \"%s\"" +#~ msgstr "entrée invalide dans le fichier « %s » à la ligne %d, jeton « %s »" -#~ msgid "Prints the parse tree after rewriting to server log." -#~ msgstr "Affiche l'arbre d'analyse après ré-écriture dans les journaux applicatifs du serveur." +#~ msgid "missing field in file \"%s\" at end of line %d" +#~ msgstr "champ manquant dans le fichier « %s » à la fin de la ligne %d" -#~ msgid "Prints the parse tree to the server log." -#~ msgstr "Affiche l'arbre d'analyse dans les journaux applicatifs du serveur." +#~ msgid "cannot use Ident authentication without usermap field" +#~ msgstr "n'a pas pu utiliser l'authentication Ident sans le champ usermap" -#~ msgid "string is too long for tsvector" -#~ msgstr "la chaîne est trop longue pour un tsvector" +#~ msgid "Ident protocol identifies remote user as \"%s\"" +#~ msgstr "le protocole Ident identifie l'utilisateur distant comme « %s »" + +#~ msgid "SELECT FOR UPDATE/SHARE is not supported for inheritance queries" +#~ msgstr "SELECT FOR UPDATE/SHARE n'est pas supporté pour les requêtes d'héritage" + +#~ msgid "missing FROM-clause entry in subquery for table \"%s\"" +#~ msgstr "entrée manquante de la clause FROM dans la sous-requête de la table « %s »" + +#~ msgid "adding missing FROM-clause entry in subquery for table \"%s\"" +#~ msgstr "entrée manquante de la clause FROM dans la sous-requête pour la table « %s »" -#~ msgid "Consider increasing the configuration parameter \"max_fsm_pages\" to a value over %.0f." +#~ msgid "%s: the number of buffers (-B) must be at least twice the number of allowed connections (-N) and at least 16\n" #~ msgstr "" -#~ "Considérez l'augmentation du paramètre de configuration « max_fsm_pages »\n" -#~ "à une valeur supérieure à %.0f." +#~ "%s : le nombre de tampons (-B) doit être au moins deux fois le nombre de\n" +#~ "connexions disponibles (-N) et au moins 16\n" -#~ msgid "number of page slots needed (%.0f) exceeds max_fsm_pages (%d)" -#~ msgstr "le nombre d'emplacements de pages nécessaires (%.0f) dépasse max_fsm_pages (%d)" +#~ msgid "could not set statistics collector timer: %m" +#~ msgstr "n'a pas pu configurer le timer du récupérateur de statistiques : %m" -#~ msgid "You have at least %d relations. Consider increasing the configuration parameter \"max_fsm_relations\"." -#~ msgstr "" -#~ "Vous avez au moins %d relations.Considèrez l'augmentation du paramètre de\n" -#~ "configuration « max_fsm_relations »." +#~ msgid "insufficient shared memory for free space map" +#~ msgstr "mémoire partagée insuffisante pour la structure FSM" -#~ msgid "max_fsm_relations(%d) equals the number of relations checked" -#~ msgstr "max_fsm_relations(%d) équivaut au nombre de relations tracées" +#~ msgid "max_fsm_pages must exceed max_fsm_relations * %d" +#~ msgstr "max_fsm_pages doit excéder max_fsm_relations * %d" + +#~ msgid "free space map contains %d pages in %d relations" +#~ msgstr "la structure FSM contient %d pages dans %d relations" #~ msgid "" #~ "A total of %.0f page slots are in use (including overhead).\n" #~ "%.0f page slots are required to track all free space.\n" #~ "Current limits are: %d page slots, %d relations, using %.0f kB." #~ msgstr "" -#~ "Un total de %.0f emplacements de pages est utilisé (ceci incluant la\n" +#~ "Un total de %.0f emplacements de pages est utilisé (ceci incluant la\n" #~ "surcharge).\n" #~ "%.0f emplacements de pages sont requis pour tracer tout l'espace libre.\n" #~ "Les limites actuelles sont : %d emplacements de pages, %d relations,\n" #~ "utilisant %.0f Ko." -#~ msgid "free space map contains %d pages in %d relations" -#~ msgstr "la structure FSM contient %d pages dans %d relations" - -#~ msgid "max_fsm_pages must exceed max_fsm_relations * %d" -#~ msgstr "max_fsm_pages doit excéder max_fsm_relations * %d" - -#~ msgid "insufficient shared memory for free space map" -#~ msgstr "mémoire partagée insuffisante pour la structure FSM" - -#~ msgid "could not set statistics collector timer: %m" -#~ msgstr "n'a pas pu configurer le timer du récupérateur de statistiques : %m" +#~ msgid "max_fsm_relations(%d) equals the number of relations checked" +#~ msgstr "max_fsm_relations(%d) équivaut au nombre de relations tracées" -#~ msgid "%s: the number of buffers (-B) must be at least twice the number of allowed connections (-N) and at least 16\n" +#~ msgid "You have at least %d relations. Consider increasing the configuration parameter \"max_fsm_relations\"." #~ msgstr "" -#~ "%s : le nombre de tampons (-B) doit être au moins deux fois le nombre de\n" -#~ "connexions disponibles (-N) et au moins 16\n" +#~ "Vous avez au moins %d relations.Considèrez l'augmentation du paramètre de\n" +#~ "configuration « max_fsm_relations »." -#~ msgid "adding missing FROM-clause entry in subquery for table \"%s\"" -#~ msgstr "entrée manquante de la clause FROM dans la sous-requête pour la table « %s »" +#~ msgid "number of page slots needed (%.0f) exceeds max_fsm_pages (%d)" +#~ msgstr "le nombre d'emplacements de pages nécessaires (%.0f) dépasse max_fsm_pages (%d)" -#~ msgid "missing FROM-clause entry in subquery for table \"%s\"" -#~ msgstr "entrée manquante de la clause FROM dans la sous-requête de la table « %s »" +#~ msgid "Consider increasing the configuration parameter \"max_fsm_pages\" to a value over %.0f." +#~ msgstr "" +#~ "Considérez l'augmentation du paramètre de configuration « max_fsm_pages »\n" +#~ "à une valeur supérieure à %.0f." -#~ msgid "SELECT FOR UPDATE/SHARE is not supported for inheritance queries" -#~ msgstr "SELECT FOR UPDATE/SHARE n'est pas supporté pour les requêtes d'héritage" +#~ msgid "string is too long for tsvector" +#~ msgstr "la chaîne est trop longue pour un tsvector" -#~ msgid "Ident protocol identifies remote user as \"%s\"" -#~ msgstr "le protocole Ident identifie l'utilisateur distant comme « %s »" +#~ msgid "Prints the parse tree to the server log." +#~ msgstr "Affiche l'arbre d'analyse dans les journaux applicatifs du serveur." -#~ msgid "cannot use Ident authentication without usermap field" -#~ msgstr "n'a pas pu utiliser l'authentication Ident sans le champ usermap" +#~ msgid "Prints the parse tree after rewriting to server log." +#~ msgstr "Affiche l'arbre d'analyse après ré-écriture dans les journaux applicatifs du serveur." -#~ msgid "missing field in file \"%s\" at end of line %d" -#~ msgstr "champ manquant dans le fichier « %s » à la fin de la ligne %d" +#~ msgid "Prints the execution plan to server log." +#~ msgstr "Affiche le plan d'exécution dans les journaux applicatifs du serveur." -#~ msgid "invalid entry in file \"%s\" at line %d, token \"%s\"" -#~ msgstr "entrée invalide dans le fichier « %s » à la ligne %d, jeton « %s »" +#~ msgid "Uses the indented output format for EXPLAIN VERBOSE." +#~ msgstr "Utilise le format de sortie indenté pour EXPLAIN VERBOSE." -#~ msgid "cannot use authentication method \"crypt\" because password is MD5-encrypted" +#~ msgid "Sets the maximum number of tables and indexes for which free space is tracked." #~ msgstr "" -#~ "n'a pas pu utiliser la méthode d'authentification « crypt » car le mot de\n" -#~ "passe est chiffré avec MD5" +#~ "Initialise le nombre maximum de tables et index pour lesquels l'espace libre\n" +#~ "est tracé." -#~ msgid "File must be owned by the database user and must have no permissions for \"group\" or \"other\"." +#~ msgid "Sets the maximum number of disk pages for which free space is tracked." #~ msgstr "" -#~ "Le fichier doit appartenir au propriétaire de la base de données et ne doit\n" -#~ "pas avoir de droits pour un groupe ou pour les autres." - -#~ msgid "unsafe permissions on private key file \"%s\"" -#~ msgstr "droits non sûrs sur le fichier de la clé privée « %s »" +#~ "Initialise le nombre maximum de pages disque pour lesquelles l'espace libre\n" +#~ "est tracé." -#~ msgid "could not get security token from context" -#~ msgstr "n'a pas pu récupérer le jeton de sécurité à partir du contexte" +#~ msgid "Valid values are ON, OFF, and SAFE_ENCODING." +#~ msgstr "Les valeurs valides sont ON, OFF et SAFE_ENCODING." -#~ msgid "GSSAPI not implemented on this server" -#~ msgstr "GSSAPI non implémenté sur ce serveur" +#~ msgid "Valid values are DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, LOG, FATAL, and PANIC. Each level includes all the levels that follow it." +#~ msgstr "" +#~ "Les valeurs valides sont DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO,\n" +#~ "NOTICE, WARNING, ERROR, LOG, FATAL et PANIC. Chaque niveau incut tous les\n" +#~ "niveaux qui le suit." -#~ msgid "Kerberos 5 not implemented on this server" -#~ msgstr "Kerberos 5 non implémenté sur ce serveur" +#~ msgid "All SQL statements that cause an error of the specified level or a higher level are logged." +#~ msgstr "" +#~ "Toutes les instructions SQL causant une erreur du niveau spécifié ou d'un\n" +#~ "niveau supérieur sont tracées." -#~ msgid "unexpected Kerberos user name received from client (received \"%s\", expected \"%s\")" +#~ msgid "Each SQL transaction has an isolation level, which can be either \"read uncommitted\", \"read committed\", \"repeatable read\", or \"serializable\"." #~ msgstr "" -#~ "nom d'utilisateur Kerberos inattendu reçu à partir du client (reçu « %s »,\n" -#~ "attendu « %s »)" +#~ "Chaque transaction SQL a un niveau d'isolation qui peut être soit « read\n" +#~ "uncommitted », soit « read committed », soit « repeatable read », soit\n" +#~ "« serializable »." -#~ msgid "cannot change number of columns in view" -#~ msgstr "ne peut pas modifier le nombre de colonnes dans la vue" +#~ msgid "Each session can be either \"origin\", \"replica\", or \"local\"." +#~ msgstr "Chaque session peut valoir soit « origin » soit « replica » soit « local »." -#~ msgid "Consider using VACUUM FULL on this relation or increasing the configuration parameter \"max_fsm_pages\"." +#~ msgid "Sets realm to match Kerberos and GSSAPI users against." #~ msgstr "" -#~ "Pensez à compacter cette relation en utilisant VACUUM FULL ou à augmenter le\n" -#~ "paramètre de configuration « max_fsm_pages »." +#~ "Indique le royaume pour l'authentification des utilisateurs via Kerberos et\n" +#~ "GSSAPI." -#~ msgid "relation \"%s.%s\" contains more than \"max_fsm_pages\" pages with useful free space" +#~ msgid "Sets the hostname of the Kerberos server." +#~ msgstr "Initalise le nom d'hôte du serveur Kerberos." + +#~ msgid "This can be set to advanced, extended, or basic." #~ msgstr "" -#~ "la relation « %s.%s » contient plus de « max_fsm_pages » pages d'espace\n" -#~ "libre utile" +#~ "Ceci peut être initialisé avec advanced (avancé), extended (étendu) ou\n" +#~ "basic (basique)." -#~ msgid "constraint definition for check constraint \"%s\" does not match" +#~ msgid "Valid values are LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7." #~ msgstr "" -#~ "la définition de la contrainte « %s » pour la contrainte de vérification ne\n" -#~ "correspond pas" +#~ "Les valeurs valides sont LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5,\n" +#~ "LOCAL6, LOCAL7." -#~ msgid "multiple constraints named \"%s\" were dropped" -#~ msgstr "les contraintes multiples nommées « %s » ont été supprimées" +#~ msgid "Valid values are DOCUMENT and CONTENT." +#~ msgstr "Les valeurs valides sont DOCUMENT et CONTENT." -#~ msgid "there are objects dependent on %s" -#~ msgstr "des objets dépendent de %s" +#~ msgid "invalid argument for power function" +#~ msgstr "argument invalide pour la fonction puissance (power)" -#~ msgid "failed to drop all objects depending on %s" -#~ msgstr "échec lors de la suppression de tous les objets dépendant de %s" +#~ msgid "not unique \"S\"" +#~ msgstr "« S » non unique" -#~ msgid "parser stack overflow" -#~ msgstr "saturation de la pile de l'analyseur" +#~ msgid "invalid AM/PM string" +#~ msgstr "chaîne AM/PM invalide" -#~ msgid "syntax error; also virtual memory exhausted" -#~ msgstr "erreur de syntaxe ; de plus, mémoire virtuelle saturée" +#~ msgid "\"TZ\"/\"tz\" not supported" +#~ msgstr "« TZ »/« tz » non supporté" -#~ msgid "syntax error: cannot back up" -#~ msgstr "erreur de syntaxe : n'a pas pu revenir" +#~ msgid "January" +#~ msgstr "Janvier" -#~ msgid "log_restartpoints = %s" -#~ msgstr "log_restartpoints = %s" +#~ msgid "February" +#~ msgstr "Février" -#~ msgid "It looks like you need to initdb or install locale support." -#~ msgstr "" -#~ "Il semble que vous avez besoin d'exécuter initdb ou d'installer le support\n" -#~ "des locales." +#~ msgid "March" +#~ msgstr "Mars" -#~ msgid "The database cluster was initialized with LOCALE_NAME_BUFLEN %d, but the server was compiled with LOCALE_NAME_BUFLEN %d." -#~ msgstr "" -#~ "Le cluster de bases de données a été initialisé avec un LOCALE_NAME_BUFLEN\n" -#~ "à %d alors que le serveur a été compilé avec un LOCALE_NAME_BUFLEN à %d." +#~ msgid "April" +#~ msgstr "Avril" -#~ msgid "invalid LC_CTYPE setting" -#~ msgstr "paramètre LC_CTYPE invalide" +#~ msgid "May" +#~ msgstr "Mai" -#~ msgid "invalid LC_COLLATE setting" -#~ msgstr "paramètre LC_COLLATE invalide" +#~ msgid "June" +#~ msgstr "Juin" -#~ msgid "GIN index does not support search with void query" -#~ msgstr "les index GIN ne supportent pas la recherche avec des requêtes vides" +#~ msgid "July" +#~ msgstr "Juillet" -#~ msgid "fillfactor=%d is out of range (should be between %d and 100)" -#~ msgstr "le facteur de remplissage (%d) est en dehors des limites (il devrait être entre %d et 100)" +#~ msgid "August" +#~ msgstr "Août" -#, fuzzy -#~ msgid "wrong number of array_subscripts" -#~ msgstr "mauvais nombre d'indices du tableau" +#~ msgid "September" +#~ msgstr "Septembre" -#~ msgid "could not create XPath object" -#~ msgstr "n'a pas pu créer l'objet XPath" +#~ msgid "October" +#~ msgstr "Octobre" -#~ msgid "multiple TRUNCATE events specified" -#~ msgstr "multiples événements TRUNCATE spécifiés" +#~ msgid "November" +#~ msgstr "Novembre" -#~ msgid "multiple UPDATE events specified" -#~ msgstr "multiples événements UPDATE spécifiés" +#~ msgid "December" +#~ msgstr "Décembre" -#~ msgid "multiple DELETE events specified" -#~ msgstr "multiples événements DELETE spécifiés" +#~ msgid "Jan" +#~ msgstr "Jan" -#~ msgid "hurrying in-progress restartpoint" -#~ msgstr "accélération du restartpoint en cours" +#~ msgid "Feb" +#~ msgstr "Fév" -#~ msgid "NEW used in query that is not in a rule" -#~ msgstr "NEW utilisé dans une requête qui ne fait pas partie d'une règle" +#~ msgid "Mar" +#~ msgstr "Mar" -#~ msgid "OLD used in query that is not in a rule" -#~ msgstr "OLD utilisé dans une requête qui n'est pas une règle" +#~ msgid "Apr" +#~ msgstr "Avr" -#~ msgid "adding missing FROM-clause entry for table \"%s\"" -#~ msgstr "ajout d'une entrée manquante dans FROM (table « %s »)" +#~ msgid "S:May" +#~ msgstr "S:Mai" -#~ msgid "SELECT FOR UPDATE/SHARE is not allowed in subqueries" -#~ msgstr "SELECT FOR UPDATE/SHARE n'est pas autorisé dans les sous-requêtes" +#~ msgid "Jun" +#~ msgstr "Juin" -#~ msgid "unsupported PAM conversation %d/%s" -#~ msgstr "conversation PAM %d/%s non supportée" +#~ msgid "Jul" +#~ msgstr "Juil" -#~ msgid "could not seek to end of segment %u of relation %s: %m" -#~ msgstr "n'a pas pu se déplacer à la fin du segment %u de la relation %s : %m" +#~ msgid "Aug" +#~ msgstr "Aoû" -#~ msgid "could not fsync segment %u of relation %s but retrying: %m" -#~ msgstr "" -#~ "n'a pas pu synchroniser sur disque (fsync) le segment %u de la relation\n" -#~ "%s, nouvelle tentative : %m" +#~ msgid "Sep" +#~ msgstr "Sep" -#~ msgid "could not fsync segment %u of relation %s: %m" -#~ msgstr "" -#~ "n'a pas pu synchroniser sur disque (fsync) le segment %u de la relation\n" -#~ "%s : %m" +#~ msgid "Oct" +#~ msgstr "Oct" -#~ msgid "could not open segment %u of relation %s: %m" -#~ msgstr "n'a pas pu ouvrir le segment %u de la relation %s : %m" +#~ msgid "Nov" +#~ msgstr "Nov" -#~ msgid "could not write block %u of relation %s: %m" -#~ msgstr "n'a pas pu écrire le bloc %u de la relation %s : %m" +#~ msgid "Dec" +#~ msgstr "Déc" -#~ msgid "could not read block %u of relation %s: %m" -#~ msgstr "n'a pas pu lire le bloc %u de la relation %s : %m" +#~ msgid "Sunday" +#~ msgstr "Dimanche" -#~ msgid "could not open relation %s: %m" -#~ msgstr "n'a pas pu ouvrir la relation %s : %m" +#~ msgid "Monday" +#~ msgstr "Lundi" -#~ msgid "could not extend relation %s: %m" -#~ msgstr "n'a pas pu étendre la relation %s : %m" +#~ msgid "Tuesday" +#~ msgstr "Mardi" -#~ msgid "could not seek to block %u of relation %s: %m" -#~ msgstr "n'a pas pu se positionner sur le bloc %u de la relation %s : %m" +#~ msgid "Wednesday" +#~ msgstr "Mercredi" -#~ msgid "could not remove segment %u of relation %s: %m" -#~ msgstr "n'a pas pu supprimer le segment %u de la relation %s : %m" +#~ msgid "Thursday" +#~ msgstr "Jeudi" -#~ msgid "could not remove relation %s: %m" -#~ msgstr "n'a pas pu supprimer la relation %s : %m" +#~ msgid "Friday" +#~ msgstr "Vendredi" -#~ msgid "SELECT FOR UPDATE/SHARE is not supported within a query with multiple result relations" -#~ msgstr "" -#~ "SELECT FOR UPDATE/SHARE n'est pas supporté dans une requête avec plusieurs\n" -#~ "relations" +#~ msgid "Saturday" +#~ msgstr "Samedi" -#~ msgid "cannot set session authorization within security-definer function" -#~ msgstr "ne peut pas exécuter SESSION AUTHORIZATION sur la fonction SECURITY DEFINER" +#~ msgid "Sun" +#~ msgstr "Dim" -#~ msgid "cannot specify CSV in BINARY mode" -#~ msgstr "ne peut pas spécifier CSV en mode binaire (BINARY)" +#~ msgid "Mon" +#~ msgstr "Lun" -#~ msgid "invalid role password \"%s\"" -#~ msgstr "mot de passe « %s » de l'utilisateur invalide" +#~ msgid "Tue" +#~ msgstr "Mar" -#~ msgid "invalid role name \"%s\"" -#~ msgstr "nom de rôle « %s » invalide" +#~ msgid "Wed" +#~ msgstr "Mer" -#~ msgid "invalid database name \"%s\"" -#~ msgstr "nom de base de données « %s » invalide" +#~ msgid "Thu" +#~ msgstr "Jeu" -#~ msgid "This parameter cannot be changed after server start." -#~ msgstr "Ce paramètre ne peut pas être modifié après le lancement du serveur" +#~ msgid "Fri" +#~ msgstr "Ven" -#~ msgid "attempted change of parameter \"%s\" ignored" -#~ msgstr "tentative de modification du paramètre « %s » ignoré" +#~ msgid "Sat" +#~ msgstr "Sam" -#~ msgid "Sets the regular expression \"flavor\"." -#~ msgstr "Initialise l'expression rationnelle « flavor »." +#~ msgid "AM/PM hour must be between 1 and 12" +#~ msgstr "l'heure AM/PM doit être compris entre 1 et 12" -#~ msgid "Automatically adds missing table references to FROM clauses." +#~ msgid "UTF-16 to UTF-8 translation failed: %lu" +#~ msgstr "échec de la conversion d'UTF16 vers UTF8 : %lu" + +#~ msgid "cannot calculate week number without year information" +#~ msgstr "ne peut pas calculer le numéro de la semaine sans informations sur l'année" + +#~ msgid "query requires full scan, which is not supported by GIN indexes" #~ msgstr "" -#~ "Ajoute automatiquement les références à la table manquant dans les clauses\n" -#~ "FROM." +#~ "la requête nécessite un parcours complet, ce qui n'est pas supporté par les\n" +#~ "index GIN" -#~ msgid "Table contains duplicated values." -#~ msgstr "La table contient des valeurs dupliquées." +#~ msgid "@@ operator does not support lexeme weight restrictions in GIN index searches" +#~ msgstr "" +#~ "l'opérateur @@ ne supporte pas les restrictions de poids de lexeme dans les\n" +#~ "recherches par index GIN" -#~ msgid "index row size %lu exceeds btree maximum, %lu" -#~ msgstr "la taille de la ligne index %lu dépasse le maximum de btree, %lu" +#~ msgid "Use the @@@ operator instead." +#~ msgstr "Utilisez à la place l'opérateur @@@." -#~ msgid "DISTINCT is supported only for single-argument aggregates" -#~ msgstr "DISTINCT est seulement supporté pour les agrégats à un seul argument" +#~ msgid "unexpected delimiter at line %d of thesaurus file \"%s\"" +#~ msgstr "délimiteur inattendu sur la ligne %d du thesaurus « %s »" + +#~ msgid "unexpected end of line or lexeme at line %d of thesaurus file \"%s\"" +#~ msgstr "fin de ligne ou de lexeme inattendu sur la ligne %d du thesaurus « %s »" + +#~ msgid "unexpected end of line at line %d of thesaurus file \"%s\"" +#~ msgstr "fin de ligne inattendue à la ligne %d du thésaurus « %s »" + +#~ msgid "could not remove database directory \"%s\"" +#~ msgstr "n'a pas pu supprimer le répertoire de bases de données « %s »" + +#~ msgid "index \"%s\" is not ready" +#~ msgstr "l'index « %s » n'est pas prêt" + +#~ msgid "argument number is out of range" +#~ msgstr "le nombre en argument est en dehors des limites" + +#~ msgid "No rows were found in \"%s\"." +#~ msgstr "Aucune ligne trouvée dans « %s »." -#~ msgid "database system is in consistent recovery mode" -#~ msgstr "le système de bases de données est dans un mode de restauration cohérent" +#~ msgid "inconsistent use of year %04d and \"BC\"" +#~ msgstr "utilisation non cohérente de l'année %04d et de « BC »" -#~ msgid "frame start at CURRENT ROW is not implemented" -#~ msgstr "début du frame à CURRENT ROW n'est pas implémenté" +#~ msgid "\"interval\" time zone \"%s\" not valid" +#~ msgstr "le fuseau horaire « %s » n'est pas valide pour le type « interval »" -#~ msgid "Rebuild the index with REINDEX." -#~ msgstr "Reconstruisez l'index avec REINDEX." +#~ msgid "Not enough memory for reassigning the prepared transaction's locks." +#~ msgstr "Pas assez de mémoire pour réaffecter les verrous des transactions préparées." -#~ msgid "index \"%s\" contains %.0f row versions, but table contains %.0f row versions" -#~ msgstr "" -#~ "l'index « %s » contient %.0f versions de ligne, mais la table contient %.0f\n" -#~ "versions de ligne" +#~ msgid "large object %u was already dropped" +#~ msgstr "le « Large Object » %u a déjà été supprimé" -#~ msgid "" -#~ "%u index pages have been deleted, %u are currently reusable.\n" -#~ "%s." -#~ msgstr "" -#~ "%u pages d'index ont été supprimées, %u sont actuellement réutilisables.\n" -#~ "%s." +#~ msgid "large object %u was not opened for writing" +#~ msgstr "le « Large Object » %u n'a pas été ouvert en écriture" -#~ msgid "\"%s\": moved %u row versions, truncated %u to %u pages" -#~ msgstr "« %s » : %u versions de ligne déplacées, %u pages tronquées sur %u" +#~ msgid "invalid standby query string: %s" +#~ msgstr "chaîne de requête invalide sur le serveur en attente : %s" -#~ msgid "" -#~ "%.0f dead row versions cannot be removed yet.\n" -#~ "Nonremovable row versions range from %lu to %lu bytes long.\n" -#~ "There were %.0f unused item pointers.\n" -#~ "Total free space (including removable row versions) is %.0f bytes.\n" -#~ "%u pages are or will become empty, including %u at the end of the table.\n" -#~ "%u pages containing %.0f free bytes are potential move destinations.\n" -#~ "%s." +#~ msgid "terminating walsender process to force cascaded standby to update timeline and reconnect" #~ msgstr "" -#~ "%.0f versions de lignes mortes ne peuvent pas encore être supprimées.\n" -#~ "Les versions non supprimables de ligne vont de %lu to %lu octets.\n" -#~ "Il existait %.0f pointeurs d'éléments inutilisés.\n" -#~ "L'espace libre total (incluant les versions supprimables de ligne) est de\n" -#~ "%.0f octets.\n" -#~ "%u pages sont ou deviendront vides, ceci incluant %u pages en fin de la\n" -#~ "table.\n" -#~ "%u pages contenant %.0f octets libres sont des destinations de déplacement\n" -#~ "disponibles.\n" -#~ "%s." +#~ "arrêt du processus walreceiver pour forcer le serveur standby en cascade à\n" +#~ "mettre à jour la timeline et à se reconnecter" -#~ msgid "relation \"%s\" TID %u/%u: DeleteTransactionInProgress %u --- cannot shrink relation" -#~ msgstr "" -#~ "relation « %s », TID %u/%u : DeleteTransactionInProgress %u --- n'a pas pu\n" -#~ "diminuer la taille de la relation" +#~ msgid "invalid standby handshake message type %d" +#~ msgstr "type %d du message de handshake du serveur en attente invalide" -#~ msgid "relation \"%s\" TID %u/%u: InsertTransactionInProgress %u --- cannot shrink relation" -#~ msgstr "" -#~ "relation « %s », TID %u/%u : InsertTransactionInProgress %u --- n'a pas pu\n" -#~ "diminuer la taille de la relation" +#~ msgid "streaming replication successfully connected to primary" +#~ msgstr "réplication de flux connecté avec succès au serveur principal" -#~ msgid "relation \"%s\" TID %u/%u: dead HOT-updated tuple --- cannot shrink relation" -#~ msgstr "" -#~ "relation « %s », TID %u/%u : ligne morte mise à jour par HOT --- n'a pas pu\n" -#~ "diminuer la taille de la relation" +#~ msgid "shutdown requested, aborting active base backup" +#~ msgstr "arrêt demandé, annulation de la sauvegarde active de base" -#~ msgid "relation \"%s\" TID %u/%u: XMIN_COMMITTED not set for transaction %u --- cannot shrink relation" +#~ msgid "terminating all walsender processes to force cascaded standby(s) to update timeline and reconnect" #~ msgstr "" -#~ "relation « %s », TID %u/%u : XMIN_COMMITTED non configuré pour la\n" -#~ "transaction %u --- n'a pas pu diminuer la taille de la relation" +#~ "arrêt de tous les processus walsender pour forcer les serveurs standby en\n" +#~ "cascade à mettre à jour la timeline et à se reconnecter" -#~ msgid "directory \"%s\" is not empty" -#~ msgstr "le répertoire « %s » n'est pas vide" +#~ msgid "" +#~ "This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter. You can either reduce the request size or reconfigure the kernel with larger SHMMAX. To reduce the request size (currently %lu bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.\n" +#~ "If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter, in which case raising the request size or reconfiguring SHMMIN is called for.\n" +#~ "The PostgreSQL documentation contains more information about shared memory configuration." +#~ msgstr "" +#~ "Cette erreur signifie habituellement que la demande de PostgreSQL pour un\n" +#~ "segment de mémoire partagée a dépassé le paramètre SHMMAX de votre noyau.\n" +#~ "Vous pouvez soit réduire la taille de la requête soit reconfigurer le noyau\n" +#~ "avec un SHMMAX plus important. Pour réduire la taille de la requête\n" +#~ "(actuellement %lu octets), réduisez l'utilisation de la mémoire partagée par PostgreSQL,par exemple en réduisant shared_buffers ou max_connections\n" +#~ "Si la taille de la requête est déjà petite, il est possible qu'elle soit\n" +#~ "moindre que le paramètre SHMMIN de votre noyau, auquel cas, augmentez la\n" +#~ "taille de la requête ou reconfigurez SHMMIN.\n" +#~ "La documentation de PostgreSQL contient plus d'informations sur la\n" +#~ "configuration de la mémoire partagée." -#~ msgid "number of distinct values %g is too low" -#~ msgstr "le nombre de valeurs distinctes %g est trop basse" +#~ msgid "cannot use window function in rule WHERE condition" +#~ msgstr "ne peut pas utiliser la fonction window dans la condition d'une règle WHERE" -#~ msgid "cannot truncate system relation \"%s\"" -#~ msgstr "ne peut pas tronquer la relation système « %s »" +#~ msgid "cannot use aggregate function in rule WHERE condition" +#~ msgstr "ne peut pas utiliser la fonction d'agrégat dans la condition d'une règle WHERE" -#~ msgid "shared table \"%s\" can only be reindexed in stand-alone mode" -#~ msgstr "la table partagée « %s » peut seulement être réindexé en mode autonome" +#~ msgid "arguments of row IN must all be row expressions" +#~ msgstr "les arguments de la ligne IN doivent tous être des expressions de ligne" -#~ msgid "\"%s\" is a system catalog" -#~ msgstr "« %s » est un catalogue système" +#~ msgid "argument of %s must not contain window functions" +#~ msgstr "l'argument de %s ne doit pas contenir des fonctions window" -#~ msgid "shared index \"%s\" can only be reindexed in stand-alone mode" -#~ msgstr "un index partagé « %s » peut seulement être réindexé en mode autonome" +#~ msgid "argument of %s must not contain aggregate functions" +#~ msgstr "l'argument de %s ne doit pas contenir de fonctions d'agrégats" -#~ msgid "Sets the language used in DO statement if LANGUAGE is not specified." +#~ msgid "cannot use window function in function expression in FROM" #~ msgstr "" -#~ "Configure le langage utilisé dans une instruction DO si la clause LANGUAGE n'est\n" -#~ "pas spécifiée." +#~ "ne peut pas utiliser la fonction window dans l'expression de la fonction\n" +#~ "du FROM" -#~ msgid "This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by \"client_encoding\"." +#~ msgid "function expression in FROM cannot refer to other relations of same query level" #~ msgstr "" -#~ "Cette erreur peut aussi survenir si la séquence d'octets ne correspond pas\n" -#~ "au jeu de caractères attendu par le serveur, le jeu étant contrôlé par\n" -#~ "« client_encoding »." - -#~ msgid "redo starts at %X/%X, consistency will be reached at %X/%X" -#~ msgstr "la restauration comme à %X/%X, la cohérence sera atteinte à %X/%X" +#~ "l'expression de la fonction du FROM ne peut pas faire référence à d'autres\n" +#~ "relations sur le même niveau de la requête" -#~ msgid "binary value is out of range for type bigint" -#~ msgstr "la valeur binaire est en dehors des limites du type bigint" +#~ msgid "subquery in FROM cannot refer to other relations of same query level" +#~ msgstr "" +#~ "la sous-requête du FROM ne peut pas faire référence à d'autres relations\n" +#~ "dans le même niveau de la requête" -#~ msgid "transaction is read-only" -#~ msgstr "la transaction est en lecture seule" +#~ msgid "JOIN/ON clause refers to \"%s\", which is not part of JOIN" +#~ msgstr "la clause JOIN/ON se réfère à « %s », qui ne fait pas partie du JOIN" -#~ msgid "PID %d is among the slowest backends." -#~ msgstr "Le PID %d est parmi les processus serveur les plus lents." +#~ msgid "window functions not allowed in GROUP BY clause" +#~ msgstr "fonctions window non autorisées dans une clause GROUP BY" -#, fuzzy -#~ msgid "invalid WAL message received from primary" -#~ msgstr "format du message invalide" +#~ msgid "aggregates not allowed in WHERE clause" +#~ msgstr "agrégats non autorisés dans une clause WHERE" -#, fuzzy -#~ msgid "sorry, too many standbys already" -#~ msgstr "désolé, trop de clients sont déjà connectés" +#~ msgid "SELECT FOR UPDATE/SHARE cannot be used with foreign table \"%s\"" +#~ msgstr "SELECT FOR UPDATE/SHARE ne peut pas être utilisé avec une table distante « %s »" -#~ msgid "WAL file SYSID is %s, pg_control SYSID is %s" -#~ msgstr "le SYSID du journal de transactions WAL est %s, celui de pg_control est %s" +#~ msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions" +#~ msgstr "SELECT FOR UPDATE/SHARE n'est pas autorisé avec les fonctions window" -#, fuzzy -#~ msgid "couldn't put socket to blocking mode: %m" -#~ msgstr "n'a pas pu activer le mode bloquant pour la socket : %s\n" +#~ msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions" +#~ msgstr "SELECT FOR UPDATE/SHARE n'est pas autorisé avec les fonctions d'agrégats" -#, fuzzy -#~ msgid "couldn't put socket to non-blocking mode: %m" -#~ msgstr "n'a pas pu activer le mode non-bloquant pour la socket : %s\n" +#~ msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause" +#~ msgstr "SELECT FOR UPDATE/SHARE n'est pas autorisé avec la clause HAVING" -#~ msgid "not enough shared memory for background writer" -#~ msgstr "pas assez de mémoire partagée pour le processus d'écriture en tâche de fond" +#~ msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause" +#~ msgstr "SELECT FOR UPDATE/SHARE n'est pas autorisé avec la clause GROUP BY" -#~ msgid "connection limit exceeded for non-superusers" -#~ msgstr "limite de connexions dépassée pour les utilisateurs standards" +#~ msgid "RETURNING cannot contain references to other relations" +#~ msgstr "RETURNING ne doit pas contenir de références à d'autres relations" -#~ msgid "not enough shared memory for walreceiver" -#~ msgstr "" -#~ "pas assez de mémoire partagée pour le processus de réception des journaux de\n" -#~ "transactions" +#~ msgid "cannot use window function in RETURNING" +#~ msgstr "ne peut pas utiliser une fonction window dans RETURNING" -#~ msgid "not enough shared memory for walsender" -#~ msgstr "pas assez de mémoire partagée pour le processus d'envoi des journaux de transactions" +#~ msgid "cannot use aggregate function in RETURNING" +#~ msgstr "ne peut pas utiliser une fonction d'agrégat dans RETURNING" -#~ msgid "unlogged operation performed, data may be missing" -#~ msgstr "opération réalisée non tracée, les données pourraient manquer" +#~ msgid "cannot use window function in UPDATE" +#~ msgstr "ne peut pas utiliser une fonction window dans un UPDATE" -#~ msgid "During recovery, allows connections and queries. During normal running, causes additional info to be written to WAL to enable hot standby mode on WAL standby nodes." -#~ msgstr "" -#~ "Lors de la restauration, autorise les connexions et les requêtes. Lors d'une\n" -#~ "exécution normale, fait que des informations supplémentaires sont écrites dans\n" -#~ "les journaux de transactions pour activer le mode Hot Standby sur les n½uds\n" -#~ "en attente." +#~ msgid "cannot use aggregate function in UPDATE" +#~ msgstr "ne peut pas utiliser une fonction d'agrégat dans un UPDATE" -#~ msgid "archive_command must be defined before online backups can be made safely." -#~ msgstr "" -#~ "archive_command doit être défini avant que les sauvegardes à chaud puissent\n" -#~ "s'effectuer correctement." +#~ msgid "cannot use window function in VALUES" +#~ msgstr "ne peut pas utiliser la fonction window dans un VALUES" -#~ msgid "archive_mode must be enabled at server start." -#~ msgstr "archive_mode doit être activé au lancement du serveur." +#~ msgid "cannot use aggregate function in VALUES" +#~ msgstr "ne peut pas utiliser la fonction d'agrégat dans un VALUES" -#~ msgid "WAL archiving is not active" -#~ msgstr "l'archivage des journaux de transactions n'est pas actif" +#~ msgid "Use SELECT ... UNION ALL ... instead." +#~ msgstr "Utilisez à la place SELECT ... UNION ALL ..." -#~ msgid "usermap \"%s\"" -#~ msgstr "correspondance utilisateur « %s »" +#~ msgid "VALUES must not contain OLD or NEW references" +#~ msgstr "VALUES ne doit pas contenir des références à OLD et NEW" -#~ msgid "restartpoint_command = '%s'" -#~ msgstr "restartpoint_command = '%s'" +#~ msgid "VALUES must not contain table references" +#~ msgstr "VALUES ne doit pas contenir de références de table" -#~ msgid "recovery restart point at %X/%X with latest known log time %s" +#~ msgid "LDAP search failed for filter \"%s\" on server \"%s\": user is not unique (%ld matches)" #~ msgstr "" -#~ "point de relancement de la restauration sur %X/%X avec %s comme dernière\n" -#~ "date connue du journal" +#~ "échec de la recherche LDAP pour le filtre « %s » sur le serveur « %s » :\n" +#~ "utilisateur non unique (%ld correspondances)" -#~ msgid "Not safe to send CSV data\n" -#~ msgstr "Envoi non sûr des données CSV\n" +#~ msgid "You need an unconditional ON DELETE DO INSTEAD rule or an INSTEAD OF DELETE trigger." +#~ msgstr "Vous avez besoin d'une règle inconditionnelle ON DELETE DO INSTEAD ou d'un trigger INSTEAD OF DELETE." -#~ msgid "Sets the message levels that are logged during recovery." -#~ msgstr "Initialise les niveaux de messages qui sont tracés lors de la restauration." +#~ msgid "You need an unconditional ON UPDATE DO INSTEAD rule or an INSTEAD OF UPDATE trigger." +#~ msgstr "Vous avez besoin d'une règle non conditionnelle ON UPDATE DO INSTEAD ou d'un trigger INSTEAD OF UPDATE." -#~ msgid "parameter \"standby_mode\" requires a Boolean value" -#~ msgstr "le paramètre « standby_mode » requiert une valeur booléenne" +#~ msgid "You need an unconditional ON INSERT DO INSTEAD rule or an INSTEAD OF INSERT trigger." +#~ msgstr "Vous avez besoin d'une règle ON INSERT DO INSTEAD sans condition ou d'un trigger INSTEAD OF INSERT." -#~ msgid "parameter \"recovery_target_inclusive\" requires a Boolean value" -#~ msgstr "le paramètre « recovery_target_inclusive » requiert une valeur booléenne" +#~ msgid "automatic vacuum of table \"%s.%s.%s\": cannot (re)acquire exclusive lock for truncate scan" +#~ msgstr "vacuum automatique de la table « %s.%s.%s » : ne peut pas acquérir le verrou exclusif pour la tronquer" -#~ msgid "cannot drop \"%s\" because it is being used by active queries in this session" +#~ msgid "must be superuser to rename text search templates" +#~ msgstr "doit être super-utilisateur pour renommer les modèles de recherche plein texte" + +#~ msgid "must be superuser to rename text search parsers" #~ msgstr "" -#~ "ne peut pas supprimer « %s » car cet objet est en cours d'utilisation par\n" -#~ "des requêtes actives dans cette session" +#~ "doit être super-utilisateur pour renommer les analyseurs de recherche plein\n" +#~ "texte" -#~ msgid "unrecognized \"log_destination\" key word: \"%s\"" -#~ msgstr "mot clé « log_destination » non reconnu : « %s »" +#~ msgid "cannot use window function in trigger WHEN condition" +#~ msgstr "ne peut pas utiliser la fonction window dans la condition WHEN d'un trigger" -#~ msgid "invalid list syntax for parameter \"log_destination\"" -#~ msgstr "syntaxe de liste invalide pour le paramètre « log_destination »" +#~ msgid "Use ALTER FOREIGN TABLE instead." +#~ msgstr "Utilisez ALTER FOREIGN TABLE à la place." -#~ msgid "Sets immediate fsync at commit." -#~ msgstr "Configure un fsync immédiat lors du commit." +#~ msgid "cannot use window function in transform expression" +#~ msgstr "ne peut pas utiliser la fonction window dans l'expression de la transformation" -#~ msgid "could not open new log file \"%s\": %m" -#~ msgstr "n'a pas pu ouvrir le nouveau journal applicatif « %s » : %m" +#~ msgid "default values on foreign tables are not supported" +#~ msgstr "les valeurs par défaut ne sont pas supportées sur les tables distantes" -#~ msgid "could not create log file \"%s\": %m" -#~ msgstr "n'a pas pu créer le journal applicatif « %s » : %m" +#~ msgid "constraints on foreign tables are not supported" +#~ msgstr "les contraintes sur les tables distantes ne sont pas supportées" -#~ msgid "Ident authentication is not supported on local connections on this platform" -#~ msgstr "l'authentification Ident n'est pas supportée sur les connexions locales sur cette plateforme" +#~ msgid "cannot use window function in EXECUTE parameter" +#~ msgstr "ne peut pas utiliser une fonction window dans le paramètre EXECUTE" -#~ msgid "could not get effective UID from peer credentials: %m" -#~ msgstr "n'a pas pu obtenir l'UID réel à partir des pièces d'identité de l'autre : %m" +#~ msgid "cannot use aggregate in index predicate" +#~ msgstr "ne peut pas utiliser un agrégat dans un prédicat d'index" -#~ msgid "could not enable credential reception: %m" -#~ msgstr "n'a pas pu activer la réception de lettres de créance : %m" +#~ msgid "function \"%s\" already exists in schema \"%s\"" +#~ msgstr "la fonction « %s » existe déjà dans le schéma « %s »" -#~ msgid "argument to pg_get_expr() must come from system catalogs" -#~ msgstr "l'argument de pg_get_expr() doit provenir des catalogues systèmes" +#~ msgid "Use ALTER AGGREGATE to change owner of aggregate functions." +#~ msgstr "Utiliser ALTER AGGREGATE pour changer le propriétaire des fonctions d'agrégat." -#~ msgid "invalid interval value for time zone: day not allowed" -#~ msgstr "valeur d'intervalle invalide pour le fuseau horaire : jour non autorisé" +#~ msgid "Use ALTER AGGREGATE to rename aggregate functions." +#~ msgstr "Utiliser ALTER AGGREGATE pour renommer les fonctions d'agrégat." -#~ msgid "invalid interval value for time zone: month not allowed" -#~ msgstr "valeur d'intervalle invalide pour le fuseau horaire : les mois ne sont pas autorisés" +#~ msgid "cannot use window function in parameter default value" +#~ msgstr "ne peut pas utiliser la fonction window dans la valeur par défaut d'un paramètre" -#~ msgid "unrecognized \"datestyle\" key word: \"%s\"" -#~ msgstr "mot clé « datestyle » non reconnu : « %s »" +#~ msgid "cannot use aggregate function in parameter default value" +#~ msgstr "" +#~ "ne peut pas utiliser une fonction d'agrégat dans la valeur par défaut d'un\n" +#~ "paramètre" -#~ msgid "invalid list syntax for parameter \"datestyle\"" -#~ msgstr "syntaxe de liste invalide pour le paramètre « datestyle »" +#~ msgid "cannot use subquery in parameter default value" +#~ msgstr "ne peut pas utiliser une sous-requête dans une valeur par défaut d'un paramètre" -#~ msgid "database \"%s\" not found" -#~ msgstr "base de données « %s » non trouvée" +#~ msgid "CREATE TABLE AS specifies too many column names" +#~ msgstr "CREATE TABLE AS spécifie trop de noms de colonnes" -#~ msgid "composite type must have at least one attribute" -#~ msgstr "le type composite doit avoir au moins un attribut" +#~ msgid "%s already exists in schema \"%s\"" +#~ msgstr "%s existe déjà dans le schéma « %s »" -#~ msgid "cannot reference permanent table from temporary table constraint" +#~ msgid "A function returning ANYRANGE must have at least one ANYRANGE argument." #~ msgstr "" -#~ "ne peut pas référencer une table permanente à partir de la contrainte de\n" -#~ "table temporaire" +#~ "Une fonction renvoyant ANYRANGE doit avoir au moins un argument du type\n" +#~ "ANYRANGE." -#~ msgid "cannot reference temporary table from permanent table constraint" -#~ msgstr "" -#~ "ne peut pas référencer une table temporaire à partir d'une contrainte de\n" -#~ "table permanente" +#~ msgid "cannot use window function in check constraint" +#~ msgstr "ne peut pas utiliser une fonction window dans une contrainte de vérification" -#~ msgid "function \"%s\" is already in schema \"%s\"" -#~ msgstr "la fonction « %s » existe déjà dans le schéma « %s »" +#~ msgid "cannot use window function in default expression" +#~ msgstr "ne peut pas utiliser une fonction window dans une expression par défaut" -#~ msgid "must be superuser to comment on text search template" -#~ msgstr "" -#~ "doit être super-utilisateur pour ajouter un commentaire sur un modèle de\n" -#~ "recherche plein texte" +#~ msgid "cannot use aggregate function in default expression" +#~ msgstr "ne peut pas utiliser une fonction d'agrégat dans une expression par défaut" -#~ msgid "must be superuser to comment on text search parser" -#~ msgstr "" -#~ "doit être super-utilisateur pour ajouter un commentaire sur l'analyseur de\n" -#~ "recherche plein texte" +#~ msgid "cannot use subquery in default expression" +#~ msgstr "ne peut pas utiliser une sous-requête dans l'expression par défaut" -#~ msgid "must be superuser to comment on procedural language" -#~ msgstr "" -#~ "doit être super-utilisateur pour ajouter un commentaire sur un langage de\n" -#~ "procédures" +#~ msgid "uncataloged table %s" +#~ msgstr "table %s sans catalogue" -#~ msgid "\"%s\" is not a table, view, or composite type" -#~ msgstr "« %s » n'est pas une table, une vue ou un type composite" +#~ msgid "xrecoff \"%X\" is out of valid range, 0..%X" +#~ msgstr "xrecoff « %X » en dehors des limites valides, 0..%X" -#~ msgid "cannot cluster on expressional index \"%s\" because its index access method does not handle null values" -#~ msgstr "" -#~ "ne peut pas exécuter CLUSTER sur l'index à expression « %s » car sa méthode\n" -#~ "d'accès ne gère pas les valeurs NULL" +#~ msgid "Incorrect XLOG_BLCKSZ in page header." +#~ msgstr "XLOG_BLCKSZ incorrect dans l'en-tête de page." -#~ msgid "You might be able to work around this by marking column \"%s\" NOT NULL." -#~ msgstr "Vous pouvez contourner ceci en marquant la colonne « %s » comme NOT NULL." +#~ msgid "Incorrect XLOG_SEG_SIZE in page header." +#~ msgstr "XLOG_SEG_SIZE incorrecte dans l'en-tête de page." -#~ msgid "You might be able to work around this by marking column \"%s\" NOT NULL, or use ALTER TABLE ... SET WITHOUT CLUSTER to remove the cluster specification from the table." +#~ msgid "invalid contrecord length %u in log file %u, segment %u, offset %u" #~ msgstr "" -#~ "Vous pourriez contourner ceci en marquant la colonne « %s » avec la\n" -#~ "contrainte NOT NULL ou en utilisant ALTER TABLE ... SET WITHOUT CLUSTER pour\n" -#~ "supprimer la spécification CLUSTER de la table." +#~ "longueur invalide du « contrecord » %u dans le journal de tranasctions %u,\n" +#~ "segment %u, décalage %u" -#~ msgid "cannot cluster on index \"%s\" because access method does not handle null values" +#~ msgid "there is no contrecord flag in log file %u, segment %u, offset %u" #~ msgstr "" -#~ "ne peut pas créer un cluster sur l'index « %s » car la méthode d'accès de\n" -#~ "l'index ne gère pas les valeurs NULL" +#~ "il n'y a pas de drapeaux « contrecord » dans le journal de transactions %u,\n" +#~ "segment %u, décalage %u" -#~ msgid "clustering \"%s.%s\"" -#~ msgstr "exécution de CLUSTER sur « %s.%s »" +#~ msgid "could not open file \"%s\" (log file %u, segment %u): %m" +#~ msgstr "n'a pas pu ouvrir le fichier « %s » (journal de transactions %u, segment %u) : %m" -#~ msgid "EnumValuesCreate() can only set a single OID" -#~ msgstr "EnumValuesCreate() peut seulement initialiser un seul OID" +#~ msgid "unlogged GiST indexes are not supported" +#~ msgstr "les index GiST non tracés ne sont pas supportés" -#~ msgid "index \"%s\" needs VACUUM FULL or REINDEX to finish crash recovery" -#~ msgstr "" -#~ "l'index « %s » a besoin d'un VACUUM FULL ou d'un REINDEX pour terminer la\n" -#~ "récupération suite à un arrêt brutal" +#~ msgid "could not change directory to \"%s\"" +#~ msgstr "n'a pas pu accéder au répertoire « %s »" -#~ msgid "index \"%s\" needs VACUUM or REINDEX to finish crash recovery" -#~ msgstr "" -#~ "l'index « %s » a besoin d'un VACUUM ou d'un REINDEX pour terminer la\n" -#~ "récupération suite à un arrêt brutal" +#~ msgid "Perhaps out of disk space?" +#~ msgstr "Peut-être manquez-vous de place disque ?" -#~ msgid "Incomplete insertion detected during crash replay." +#~ msgid "time zone offset %d is not a multiple of 900 sec (15 min) in time zone file \"%s\", line %d" #~ msgstr "" -#~ "Insertion incomplète détectée lors de la ré-exécution des requêtes suite à\n" -#~ "l'arrêt brutal." +#~ "le décalage %d du fuseau horaire n'est pas un multiples de 900 secondes\n" +#~ "(15 minutes) dans le fichier des fuseaux horaires « %s », ligne %d" -#~ msgid "index %u/%u/%u needs VACUUM FULL or REINDEX to finish crash recovery" -#~ msgstr "" -#~ "l'index %u/%u/%u a besoin d'un VACUUM FULL ou d'un REINDEX pour terminer la\n" -#~ "récupération suite à un arrêt brutal" +#~ msgid "Sets the name of the Kerberos service." +#~ msgstr "Initialise le nom du service Kerberos." -#~ msgid "Lines should have the format parameter = 'value'." -#~ msgstr "Les lignes devraient avoir le format paramètre = 'valeur'" +#~ msgid "No description available." +#~ msgstr "Aucune description disponible." -#~ msgid "syntax error in recovery command file: %s" -#~ msgstr "erreur de syntaxe dans le fichier de restauration : %s" +#~ msgid "cannot call json_populate_recordset on a nested object" +#~ msgstr "ne peut pas appeler json_populate_recordset sur un objet imbriqué" + +#~ msgid "cannot call json_populate_recordset on a scalar" +#~ msgstr "ne peut pas appeler json_populate_recordset sur un scalaire" + +#~ msgid "cannot call json_populate_recordset with nested arrays" +#~ msgstr "ne peut pas appeler json_populate_recordset avec des tableaux imbriqués" -#~ msgid "Write-Ahead Log / Streaming Replication" -#~ msgstr "Write-Ahead Log / Réplication en flux" +#~ msgid "must call json_populate_recordset on an array of objects" +#~ msgstr "doit appeler json_populate_recordset sur un tableau d'objets" -#~ msgid "unable to open directory pg_tblspc: %m" -#~ msgstr "impossible d'ouvrir le répertoire p_tblspc : %m" +#~ msgid "cannot call json_populate_recordset with nested objects" +#~ msgstr "ne peut pas appeler json_populate_recordset sur des objets imbriqués" -#~ msgid "unable to read symbolic link %s: %m" -#~ msgstr "incapable de lire le lien symbolique %s : %m" +#~ msgid "cannot call json_populate_recordset on an object" +#~ msgstr "ne peut pas appeler json_populate_recordset sur un objet" -#~ msgid "index \"%s\" is not a b-tree" -#~ msgstr "l'index « %s » n'est pas un btree" +#~ msgid "first argument of json_populate_recordset must be a row type" +#~ msgstr "le premier argument de json_populate_recordset doit être un type ROW" -#~ msgid "ALTER TYPE USING is only supported on plain tables" -#~ msgstr "ALTER TYPE USING est seulement supportés sur les tables standards" +#~ msgid "first argument of json_populate_record must be a row type" +#~ msgstr "le premier argument de json_populate_record doit être un type ROW" -#~ msgid "resetting unlogged relations: cleanup %d init %d" -#~ msgstr "réinitialisation des relations non tracées : nettoyage %d initialisation %d" +#~ msgid "cannot call json_array_elements on a scalar" +#~ msgstr "ne peut pas appeler json_array_elements sur un scalaire" -#~ msgid "%s (%x)" -#~ msgstr "%s (%x)" +#~ msgid "cannot call json_array_elements on a non-array" +#~ msgstr "ne peut pas appeler json_array_elements sur un objet qui n'est pas un tableau" -#~ msgid "SSPI error %x" -#~ msgstr "erreur SSPI : %x" +#~ msgid "cannot extract field from a non-object" +#~ msgstr "ne peut pas extraire le chemin à partir d'un non-objet" -#~ msgid "consistent state delayed because recovery snapshot incomplete" -#~ msgstr "état de cohérence pas encore atteint à cause d'un snapshot de restauration incomplet" +#~ msgid "cannot extract array element from a non-array" +#~ msgstr "ne peut pas extraire un élément du tableau à partir d'un objet qui n'est pas un tableau" -#~ msgid "tablespace %u is not empty" -#~ msgstr "le tablespace %u n'est pas vide" +#~ msgid "cannot call function with empty path elements" +#~ msgstr "ne peut pas appeler une fonction avec des éléments chemins vides" -#~ msgid "subquery in WITH cannot have SELECT INTO" -#~ msgstr "la sous-requête du WITH ne peut pas avoir de SELECT INTO" +#~ msgid "cannot call function with null path elements" +#~ msgstr "ne peut pas appeler une fonction avec des éléments chemins NULL" -#~ msgid "subquery cannot have SELECT INTO" -#~ msgstr "la sous-requête ne peut pas avoir de SELECT INTO" +#~ msgid "cannot call json_object_keys on a scalar" +#~ msgstr "ne peut pas appeler json_object_keys sur un scalaire" -#~ msgid "subquery in FROM cannot have SELECT INTO" -#~ msgstr "la sous-requête du FROM ne peut pas avoir de SELECT INTO" +#~ msgid "cannot call json_object_keys on an array" +#~ msgstr "ne peut pas appeler json_object_keys sur un tableau" -#~ msgid "DECLARE CURSOR cannot specify INTO" -#~ msgstr "DECLARE CURSOR ne peut pas spécifier INTO" +#~ msgid "missing assignment operator" +#~ msgstr "opérateur d'affectation manquant" -#~ msgid "INSERT ... SELECT cannot specify INTO" -#~ msgstr "INSERT ... SELECT ne peut pas avoir INTO" +#~ msgid "wrong affix file format for flag" +#~ msgstr "mauvais format de fichier affixe pour le drapeau" -#~ msgid "column name list not allowed in CREATE TABLE / AS EXECUTE" -#~ msgstr "la liste de noms de colonnes n'est pas autorisée dans CREATE TABLE / AS EXECUTE" +#~ msgid "Views that return the same column more than once are not automatically updatable." +#~ msgstr "Les vues qui renvoient la même colonne plus d'une fois ne sont pas automatiquement disponibles en écriture." -#~ msgid "CREATE TABLE AS cannot specify INTO" -#~ msgstr "CREATE TABLE AS ne peut pas spécifier INTO" +#~ msgid "Security-barrier views are not automatically updatable." +#~ msgstr "Les vues avec barrière de sécurité ne sont pas automatiquement disponibles en écriture." -#~ msgid " --version output version information, then exit\n" -#~ msgstr " --version affiche la version, puis quitte\n" +#~ msgid "Expected 1 tuple with 3 fields, got %d tuples with %d fields." +#~ msgstr "Attendait 1 ligne avec 3 champs, a obtenu %d lignes avec %d champs." -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help affiche cette aide, puis quitte\n" +#~ msgid "too many column aliases specified for function %s" +#~ msgstr "trop d'alias de colonnes spécifiées pour la fonction %s" -#~ msgid "Make sure the root.crt file is present and readable." -#~ msgstr "Assurez-vous que le certificat racine (root.crt) est présent et lisible" +#~ msgid "%s: could not determine user name (GetUserName failed)\n" +#~ msgstr "%s : n'a pas pu déterminer le nom de l'utilisateur (GetUserName a échoué)\n" -#~ msgid "See server log for details." -#~ msgstr "Voir les journaux applicatifs du serveur pour plus de détails." +#~ msgid "%s: invalid effective UID: %d\n" +#~ msgstr "%s : UID effectif invalide : %d\n" -#~ msgid "missing or erroneous pg_hba.conf file" -#~ msgstr "fichier pg_hba.conf manquant ou erroné" +#~ msgid "krb5 authentication is not supported on local sockets" +#~ msgstr "" +#~ "l'authentification krb5 n'est pas supportée sur les connexions locales par\n" +#~ "socket" -#~ msgid "Certificates will not be checked against revocation list." -#~ msgstr "Les certificats ne seront pas vérifiés avec la liste de révocation." +#~ msgid "SSL renegotiation failure" +#~ msgstr "échec lors de la re-négotiation SSL" -#~ msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s" -#~ msgstr "liste de révocation des certificats SSL « %s » introuvable, continue : %s" +#~ msgid "local user with ID %d does not exist" +#~ msgstr "l'utilisateur local dont l'identifiant est %d n'existe pas" -#~ msgid "could not access root certificate file \"%s\": %m" -#~ msgstr "n'a pas pu accéder au fichier du certificat racine « %s » : %m" +#~ msgid "Kerberos unparse_name returned error %d" +#~ msgstr "unparse_name de Kerberos a renvoyé l'erreur %d" -#~ msgid "could not open directory \"pg_tblspc\": %m" -#~ msgstr "n'a pas pu ouvrir le répertoire « pg_tblspc » : %m" +#~ msgid "Kerberos recvauth returned error %d" +#~ msgstr "recvauth de Kerberos a renvoyé l'erreur %d" -#~ msgid "standby connections not allowed because wal_level=minimal" -#~ msgstr "connexions standby non autorisées car wal_level=minimal" +#~ msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d" +#~ msgstr "sname_to_principal(« %s », « %s ») de Kerberos a renvoyé l'erreur %d" -#~ msgid "recovery is still in progress, can't accept WAL streaming connections" -#~ msgstr "la restauration est en cours, ne peut pas accepter les connexions de flux WAL" +#~ msgid "Kerberos keytab resolving returned error %d" +#~ msgstr "la résolution keytab de Kerberos a renvoyé l'erreur %d" -#~ msgid "must be superuser to drop text search templates" -#~ msgstr "doit être super-utilisateur pour supprimer des modèles de recherche plein texte" +#~ msgid "Kerberos initialization returned error %d" +#~ msgstr "l'initialisation de Kerberos a retourné l'erreur %d" -#~ msgid "must be superuser to drop text search parsers" -#~ msgstr "" -#~ "doit être super-utilisateur pour supprimer des analyseurs de recherche plein\n" -#~ "texte" +#~ msgid "Kerberos 5 authentication failed for user \"%s\"" +#~ msgstr "authentification Kerberos 5 échouée pour l'utilisateur « %s »" -#~ msgid "Must be superuser to drop a foreign-data wrapper." -#~ msgstr "Doit être super-utilisateur pour supprimer un wrapper de données distantes." +#~ msgid "trigger \"%s\" for table \"%s\" does not exist, skipping" +#~ msgstr "le trigger « %s » pour la table « %s » n'existe pas, poursuite du traitement" -#~ msgid "permission denied to drop foreign-data wrapper \"%s\"" -#~ msgstr "droit refusé pour supprimer le wrapper de données distantes « %s »" +#~ msgid "invalid input syntax for transaction log location: \"%s\"" +#~ msgstr "syntaxe invalide en entrée pour l'emplacement du journal de transactions : « %s »" -#~ msgid "removing built-in function \"%s\"" -#~ msgstr "suppression de la fonction interne « %s »" +#~ msgid "could not parse transaction log location \"%s\"" +#~ msgstr "n'a pas pu analyser l'emplacement du journal des transactions « %s »" -#~ msgid "foreign key constraint \"%s\" of relation \"%s\" does not exist" -#~ msgstr "la clé étrangère « %s » de la relation « %s » n'existe pas" +#~ msgid "%s \"%s\": return code %d" +#~ msgstr "%s « %s » : code de retour %d" -#~ msgid "Sets the list of known custom variable classes." -#~ msgstr "Initialise la liste des classes variables personnalisées connues." +#~ msgid "assertion checking is not supported by this build" +#~ msgstr "la vérification de l'assertion n'a pas été intégrée lors de la compilation" -#~ msgid "WAL sender sleep time between WAL replications." +#~ msgid "SET AUTOCOMMIT TO OFF is no longer supported" +#~ msgstr "SET AUTOCOMMIT TO OFF n'est plus supporté" + +#~ msgid "Set the amount of traffic to send and receive before renegotiating the encryption keys." #~ msgstr "" -#~ "Temps d'endormissement du processus d'envoi des journaux de transactions entre\n" -#~ "les réplications des journaux de transactions." +#~ "Configure la quantité de trafic à envoyer et recevoir avant la renégotiation\n" +#~ "des clés d'enchiffrement." -#~ msgid "If this parameter is set, the server will automatically run in the background and any controlling terminals are dissociated." +#~ msgid "Sets the maximum distance in log segments between automatic WAL checkpoints." #~ msgstr "" -#~ "Si ce paramètre est initialisé, le serveur sera exécuté automatiquement en\n" -#~ "tâche de fond et les terminaux de contrôles seront dés-associés." +#~ "Initialise la distance maximale dans les journaux de transaction entre chaque\n" +#~ "point de vérification (checkpoints) des journaux." -#~ msgid "Runs the server silently." -#~ msgstr "Lance le serveur de manière silencieuse." +#~ msgid "It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-vintage clients." +#~ msgstr "" +#~ "C'est ici uniquement pour ne pas avoir de problèmes avec le SET AUTOCOMMIT\n" +#~ "TO ON des clients 7.3." -#~ msgid "%s: could not dissociate from controlling TTY: %s\n" -#~ msgstr "%s : n'a pas pu se dissocier du TTY contrôlant : %s\n" +#~ msgid "This parameter doesn't do anything." +#~ msgstr "Ce paramètre ne fait rien." -#~ msgid "%s: could not fork background process: %s\n" -#~ msgstr "%s : n'a pas pu créer un processus fils : %s\n" +#~ msgid "This is a debugging aid." +#~ msgstr "C'est une aide de débogage." -#~ msgid "%s: could not open log file \"%s/%s\": %s\n" -#~ msgstr "%s : n'a pas pu ouvrir le journal applicatif « %s/%s » : %s\n" +#~ msgid "Turns on various assertion checks." +#~ msgstr "Active les différentes vérifications des assertions." -#~ msgid "%s: could not open file \"%s\": %s\n" -#~ msgstr "%s : n'a pas pu ouvrir le fichier « %s » : %s\n" +#~ msgid "cannot accept a value of type pg_node_tree" +#~ msgstr "ne peut pas accepter une valeur de type pg_node_tree" -#~ msgid "select() failed in logger process: %m" -#~ msgstr "échec de select() dans le processus des journaux applicatifs : %m" +#~ msgid "must be superuser or have the same role to terminate other server processes" +#~ msgstr "" +#~ "doit être super-utilisateur ou avoir le même rôle pour fermer les connexions\n" +#~ "exécutées dans les autres processus serveur" -#~ msgid "poll() failed in statistics collector: %m" -#~ msgstr "échec du poll() dans le récupérateur de statistiques : %m" +#~ msgid "must be superuser or have the same role to cancel queries running in other server processes" +#~ msgstr "" +#~ "doit être super-utilisateur ou avoir le même rôle pour annuler des requêtes\n" +#~ "exécutées dans les autres processus serveur" -#~ msgid "Valid values are '[]', '[)', '(]', and '()'." -#~ msgstr "Les valeurs valides sont « [] », « [) », « (] » et « () »." +#~ msgid "invalid symbol" +#~ msgstr "symbole invalide" -#~ msgid "invalid list syntax for \"unix_socket_directories\"" -#~ msgstr "syntaxe de liste invalide pour le paramètre « unix_socket_directories »" +#~ msgid "unexpected \"=\"" +#~ msgstr "« = » inattendu" -#~ msgid "invalid list syntax for \"listen_addresses\"" -#~ msgstr "syntaxe de liste invalide pour le paramètre « listen_addresses »" +#~ msgid "neither input type is an array" +#~ msgstr "aucun type de données n'est un tableau" -#~ msgid "window functions cannot use named arguments" -#~ msgstr "les fonctions window ne peuvent pas renvoyer des arguments nommés" +#~ msgid "could not determine input data types" +#~ msgstr "n'a pas pu déterminer les types de données en entrée" -#~ msgid "cannot override frame clause of window \"%s\"" -#~ msgstr "ne peut pas surcharger la frame clause du window « %s »" +#~ msgid "archive member \"%s\" too large for tar format" +#~ msgstr "membre « %s » de l'archive trop volumineux pour le format tar" -#~ msgid "JSON does not support infinite timestamp values." -#~ msgstr "JSON ne supporte pas les valeurs infinies de timestamp." +#~ msgid "postmaster became multithreaded" +#~ msgstr "le postmaster est devenu multithreadé" -#~ msgid "JSON does not support infinite date values." -#~ msgstr "JSON ne supporte pas les valeurs infinies de date." +#~ msgid "invalid value for parameter \"replication\"" +#~ msgstr "valeur invalide pour le paramètre « replication »" -#~ msgid "WAL writer sleep time between WAL flushes." +#~ msgid "WAL archival (archive_mode=on) requires wal_level \"archive\", \"hot_standby\", or \"logical\"" #~ msgstr "" -#~ "Temps d'endormissement du processus d'écriture pendant le vidage des\n" -#~ "journaux de transactions en millisecondes." +#~ "l'archivage des journaux de transactions (archive_mode=on) nécessite que\n" +#~ "le paramètre wal_level soit initialisé avec « archive », « hot_standby » ou « logical »" -#~ msgid "could not convert to time zone \"%s\"" -#~ msgstr "n'a pas pu convertir vers le fuseau horaire « %s »" +#~ msgid "Consider increasing the configuration parameter \"checkpoint_segments\"." +#~ msgstr "Considèrez l'augmentation du paramètre « checkpoint_segments »." -#~ msgid "argument for function \"exp\" too big" -#~ msgstr "l'argument de la fonction « exp » est trop gros" +#~ msgid "subquery must return a column" +#~ msgstr "la sous-requête doit renvoyer une colonne" -#~ msgid "must be superuser to rotate log files" -#~ msgstr "doit être super-utilisateur pour exécuter la rotation des journaux applicatifs" +#~ msgid " -A 1|0 enable/disable run-time assert checking\n" +#~ msgstr "" +#~ " -A 1|0 active/désactive la vérification des limites (assert) à\n" +#~ " l'exécution\n" -#~ msgid "must be superuser to signal the postmaster" -#~ msgstr "doit être super-utilisateur pour envoyer un signal au postmaster" +#~ msgid "%s: setsysinfo failed: %s\n" +#~ msgstr "%s : setsysinfo a échoué : %s\n" -#~ msgid "could not format \"circle\" value" -#~ msgstr "n'a pas pu formater la valeur « circle »" +#~ msgid "could not set socket to blocking mode: %m" +#~ msgstr "n'a pas pu activer le mode bloquant pour la socket : %m" -#~ msgid "invalid input syntax for type circle: \"%s\"" -#~ msgstr "syntaxe en entrée invalide pour le type circle : « %s »" +#~ msgid "SSL failed to renegotiate connection before limit expired" +#~ msgstr "SSL a échoué à renégotier la connexion avant l'expiration du délai" -#~ msgid "invalid input syntax for type polygon: \"%s\"" -#~ msgstr "syntaxe en entrée invalide pour le type polygon : « %s »" +#~ msgid "could not complete SSL handshake on renegotiation, too many failures" +#~ msgstr "n'a pas pu terminer la poignée de main de renégotiation, trop d'échecs" -#~ msgid "invalid input syntax for type lseg: \"%s\"" -#~ msgstr "syntaxe en entrée invalide pour le type lseg : « %s »" +#~ msgid "SSL handshake failure on renegotiation, retrying" +#~ msgstr "échec du handshake SSL lors de la renégotiation, nouvelle tentative" -#~ msgid "invalid input syntax for type point: \"%s\"" -#~ msgstr "syntaxe en entrée invalide pour le type point : « %s »" +#~ msgid "SSL failure during renegotiation start" +#~ msgstr "échec SSL au début de la re-négotiation" -#~ msgid "invalid input syntax for type path: \"%s\"" -#~ msgstr "syntaxe en entrée invalide pour le type path : « %s »" +#~ msgid "received password packet" +#~ msgstr "paquet du mot de passe reçu" -#~ msgid "invalid input syntax for type line: \"%s\"" -#~ msgstr "syntaxe en entrée invalide pour le type line: « %s »" +#~ msgid "interval precision specified twice" +#~ msgstr "précision d'intervalle spécifiée deux fois" -#~ msgid "invalid input syntax for type box: \"%s\"" -#~ msgstr "syntaxe en entrée invalide pour le type box : « %s »" +#~ msgid "" +#~ "%.0f dead row versions cannot be removed yet.\n" +#~ "There were %.0f unused item pointers.\n" +#~ "%u pages are entirely empty.\n" +#~ "%s." +#~ msgstr "" +#~ "%.0f versions de lignes mortes ne peuvent pas encore être supprimées.\n" +#~ "Il y avait %.0f pointeurs d'éléments inutilisés.\n" +#~ "%u pages sont entièrement vides.\n" +#~ "%s." -#~ msgid "could not format \"path\" value" -#~ msgstr "n'a pas pu formater la valeur « path »" +#~ msgid "" +#~ "automatic vacuum of table \"%s.%s.%s\": index scans: %d\n" +#~ "pages: %d removed, %d remain\n" +#~ "tuples: %.0f removed, %.0f remain, %.0f are dead but not yet removable\n" +#~ "buffer usage: %d hits, %d misses, %d dirtied\n" +#~ "avg read rate: %.3f MB/s, avg write rate: %.3f MB/s\n" +#~ "system usage: %s" +#~ msgstr "" +#~ "VACUUM automatique de la table « %s.%s.%s » : parcours d'index : %d\n" +#~ "pages : %d supprimées, %d restantes\n" +#~ "lignes : %.0f supprimées, %.0f restantes, %.0f sont mortes mais non supprimables\n" +#~ "utilisation des tampons : %d lus dans le cache, %d lus hors du cache, %d modifiés\n" +#~ "taux moyen de lecture : %.3f Mo/s, taux moyen d'écriture : %.3f Mo/s\n" +#~ "utilisation système : %s" -#~ msgid "multibyte flag character is not allowed" -#~ msgstr "un caractère drapeau multi-octet n'est pas autorisé" +#~ msgid "Specify a USING expression to perform the conversion." +#~ msgstr "Donnez une expression USING pour réaliser la conversion." -#~ msgid "socket not open" -#~ msgstr "socket non ouvert" +#~ msgid "\"%s\" is not a table, materialized view, composite type, or foreign table" +#~ msgstr "« %s » n'est ni une table, ni une vue matérialisée, ni un type composite, ni une table distante" -#~ msgid "must be superuser to reset statistics counters" -#~ msgstr "doit être super-utilisateur pour réinitialiser les compteurs statistiques" +#~ msgid "inherited relation \"%s\" is not a table" +#~ msgstr "la relation héritée « %s » n'est pas une table" -#~ msgid "function %s must return type \"tsm_handler\"" -#~ msgstr "la fonction %s doit renvoyer le type « tsm_handler »" +#~ msgid "This name may be disallowed altogether in future versions of PostgreSQL." +#~ msgstr "Ce nom pourrait être interdit dans les prochaines versions de PostgreSQL." -#~ msgid "Permissions should be u=rw (0600) or less." -#~ msgstr "Les droits devraient être u=rwx (0600) ou inférieures." +#~ msgid "=> is deprecated as an operator name" +#~ msgstr "=> est un nom d'opérateur obsolète" -#~ msgid "typmod_in function %s must return type \"integer\"" -#~ msgstr "la fonction typmod_in %s doit renvoyer le type « entier »" +#~ msgid "WAL file is from different database system: Incorrect XLOG_BLCKSZ in page header." +#~ msgstr "" +#~ "le journal de transactions provient d'un système de bases de données différent :\n" +#~ "XLOG_BLCKSZ incorrect dans l'en-tête de page." -#~ msgid "type send function %s must return type \"bytea\"" -#~ msgstr "la fonction send du type %s doit renvoyer le type « bytea »" +#~ msgid "WAL file is from different database system: Incorrect XLOG_SEG_SIZE in page header." +#~ msgstr "" +#~ "le journal de transactions provient d'un système de bases de données différent :\n" +#~ "XLOG_SEG_SIZE incorrect dans l'en-tête de page." -#~ msgid "type output function %s must return type \"cstring\"" -#~ msgstr "le type de sortie de la fonction %s doit être « cstring »" +#~ msgid "WAL file is from different database system: WAL file database system identifier is %s, pg_control database system identifier is %s." +#~ msgstr "" +#~ "L'identifiant du journal de transactions du système de base de données est %s,\n" +#~ "l'identifiant pg_control du système de base de données dans pg_control est %s." -#~ msgid "changing return type of function %s from \"opaque\" to \"cstring\"" -#~ msgstr "changement du type de retour de la fonction %s d'« opaque » vers « cstring »" +#~ msgid "incorrect total length in record at %X/%X" +#~ msgstr "longueur totale incorrecte à l'enregistrement %X/%X" -#~ msgid "function %s must return type \"trigger\"" -#~ msgstr "la fonction %s doit renvoyer le type « trigger »" +#~ msgid "incorrect hole size in record at %X/%X" +#~ msgstr "taille du trou incorrect à l'enregistrement %X/%X" -#~ msgid "function %s must return type \"language_handler\"" -#~ msgstr "la fonction %s doit renvoyer le type « language_handler »" +#~ msgid "invalid backup block size in record at %X/%X" +#~ msgstr "taille du bloc de sauvegarde invalide dans l'enregistrement à %X/%X" -#~ msgid "could not reposition held cursor" -#~ msgstr "n'a pas pu repositionner le curseur détenu" +#~ msgid "record with zero length at %X/%X" +#~ msgstr "enregistrement de longueur nulle à %X/%X" -#~ msgid "function %s must return type \"fdw_handler\"" -#~ msgstr "la fonction %s doit renvoyer le type « fdw_handler »" +#~ msgid "invalid xlog switch record at %X/%X" +#~ msgstr "enregistrement de basculement du journal de transaction invalide à %X/%X" -#~ msgid "function \"%s\" must return type \"event_trigger\"" -#~ msgstr "la fonction « %s » doit renvoyer le type « event_trigger »" +#~ msgid "oldest unfrozen transaction ID: %u, in database %u" +#~ msgstr "" +#~ "identifiant de transaction non gelé le plus ancien : %u, dans la base de\n" +#~ "données %u" -#~ msgid "%s is already in schema \"%s\"" -#~ msgstr "%s existe déjà dans le schéma « %s »" +#~ msgid "next MultiXactId: %u; next MultiXactOffset: %u" +#~ msgstr "prochain MultiXactId : %u ; prochain MultiXactOffset : %u" -#~ msgid "invalid record length at %X/%X" -#~ msgstr "longueur invalide de l'enregistrement à %X/%X" +#~ msgid "next transaction ID: %u/%u; next OID: %u" +#~ msgstr "prochain identifiant de transaction : %u/%u ; prochain OID : %u" -#~ msgid "must be superuser to control recovery" -#~ msgstr "doit être super-utilisateur pour contrôler la restauration" +#~ msgid "redo record is at %X/%X; shutdown %s" +#~ msgstr "l'enregistrement à ré-exécuter se trouve à %X/%X ; arrêt %s" -#~ msgid "must be superuser to create a restore point" -#~ msgstr "doit être super-utilisateur pour créer un point de restauration" +#~ msgid "invalid value for recovery parameter \"recovery_target\"" +#~ msgstr "valeur invalide pour le paramètre de restauration « recovery_target »" -#~ msgid "must be superuser to switch transaction log files" -#~ msgstr "doit être super-utilisateur pour changer de journal de transactions" +#~ msgid "unrecognized win32 error code: %lu" +#~ msgstr "code d'erreur win32 non reconnu : %lu" -#~ msgid "must be superuser or replication role to run a backup" -#~ msgstr "doit être super-utilisateur ou avoir l'attribut de réplication pour exécuter une sauvegarde" +#~ msgid "mapped win32 error code %lu to %d" +#~ msgstr "correspondance du code d'erreur win32 %lu en %d" -#~ msgid "ignoring \"%s\" file because no \"%s\" file exists" -#~ msgstr "ignore le fichier « %s » parce que le fichier « %s » n'existe pas" +#~ msgid "too few arguments for format" +#~ msgstr "trop peu d'arguments pour le format" -#~ msgid "could not rename file \"%s\" to \"%s\" (initialization of log file): %m" -#~ msgstr "n'a pas pu renommer le fichier « %s » en « %s » (initialisation du journal de transactions) : %m" +#~ msgid "invalid length in external \"numeric\" value" +#~ msgstr "longueur invalide dans la valeur externe « numeric »" -#~ msgid "could not link file \"%s\" to \"%s\" (initialization of log file): %m" -#~ msgstr "n'a pas pu lier le fichier « %s » à « %s » (initialisation du journal de transactions) : %m" +#~ msgid "time zone abbreviation \"%s\" is not used in time zone \"%s\"" +#~ msgstr "l'abréviation « %s » du fuseau horaire n'est pas utilisée dans le fuseau horaire « %s »" -#~ msgid "could not close two-phase state file \"%s\": %m" -#~ msgstr "" -#~ "n'a pas pu fermer le fichier d'état de la validation en deux phases nommé\n" -#~ "« %s » : %m" +#~ msgid "role \"%s\" is reserved" +#~ msgstr "le rôle « %s » est réservé" -#~ msgid "could not fsync two-phase state file \"%s\": %m" -#~ msgstr "" -#~ "n'a pas pu synchroniser sur disque (fsync) le fichier d'état de la\n" -#~ "validation en deux phases nommé « %s » : %m" +#~ msgid "system columns cannot be used in an ON CONFLICT clause" +#~ msgstr "les colonnes systèmes ne peuvent pas être utilisées dans une clause ON CONFLICT" -#~ msgid "two-phase state file for transaction %u is corrupt" +#~ msgid "function returning set of rows cannot return null value" #~ msgstr "" -#~ "le fichier d'état de la validation en deux phases est corrompu pour la\n" -#~ "transaction %u" +#~ "la fonction renvoyant un ensemble de lignes ne peut pas renvoyer une valeur\n" +#~ "NULL" -#~ msgid "could not seek in two-phase state file: %m" +#~ msgid "Only superusers can use untrusted languages." #~ msgstr "" -#~ "n'a pas pu se déplacer dans le fichier de statut de la validation en deux\n" -#~ "phases : %m" +#~ "Seuls les super-utilisateurs peuvent utiliser des langages qui ne sont pas\n" +#~ "de confiance." -#~ msgid "could not create two-phase state file \"%s\": %m" -#~ msgstr "" -#~ "n'a pas pu créer le fichier de statut de la validation en deux phases nommé\n" -#~ "« %s » : %m" +#~ msgid "huge TLB pages not supported on this platform" +#~ msgstr "Huge Pages TLB non supporté sur cette plateforme." + +#~ msgid "Lower bound of dimension array must be one." +#~ msgstr "La limite inférieure du tableau doit valoir un." + +#~ msgid "wrong range of array subscripts" +#~ msgstr "mauvais échelle des indices du tableau" diff --git a/src/backend/po/it.po b/src/backend/po/it.po index 393ed954ae..de2941bf01 100644 --- a/src/backend/po/it.po +++ b/src/backend/po/it.po @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: postgres (PostgreSQL) 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-04-17 00:08+0000\n" -"PO-Revision-Date: 2016-04-17 20:26+0100\n" +"POT-Creation-Date: 2017-05-22 15:38+0000\n" +"PO-Revision-Date: 2017-06-03 01:29+0100\n" "Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" "Language: it\n" @@ -26,7 +26,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Poedit-SourceCharset: utf-8\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.8.7.1\n" #: ../common/config_info.c:131 ../common/config_info.c:139 #: ../common/config_info.c:147 ../common/config_info.c:155 @@ -36,8 +36,8 @@ msgstr "" msgid "not recorded" msgstr "non registrato" -#: ../common/controldata_utils.c:52 commands/copy.c:2798 -#: commands/extension.c:3120 utils/adt/genfile.c:134 +#: ../common/controldata_utils.c:52 commands/copy.c:2834 +#: commands/extension.c:3144 utils/adt/genfile.c:134 #, c-format msgid "could not open file \"%s\" for reading: %m" msgstr "apertura del file \"%s\" in lettura fallita: %m" @@ -48,13 +48,13 @@ msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: apertura del file \"%s\" in lettura fallita: %s\n" #: ../common/controldata_utils.c:66 access/transam/timeline.c:346 -#: access/transam/xlog.c:3193 access/transam/xlog.c:10338 -#: access/transam/xlog.c:10351 access/transam/xlog.c:10714 -#: access/transam/xlog.c:10757 access/transam/xlog.c:10796 -#: access/transam/xlog.c:10839 access/transam/xlogfuncs.c:666 -#: access/transam/xlogfuncs.c:685 commands/extension.c:3130 -#: replication/logical/origin.c:665 replication/logical/origin.c:695 -#: replication/logical/reorderbuffer.c:3077 replication/walsender.c:499 +#: access/transam/xlog.c:3226 access/transam/xlog.c:10442 +#: access/transam/xlog.c:10455 access/transam/xlog.c:10850 +#: access/transam/xlog.c:10893 access/transam/xlog.c:10932 +#: access/transam/xlog.c:10975 access/transam/xlogfuncs.c:660 +#: access/transam/xlogfuncs.c:679 commands/extension.c:3154 +#: replication/logical/origin.c:668 replication/logical/origin.c:698 +#: replication/logical/reorderbuffer.c:3099 replication/walsender.c:499 #: storage/file/copydir.c:176 utils/adt/genfile.c:151 #, c-format msgid "could not read file \"%s\": %m" @@ -163,28 +163,30 @@ msgid "could not close directory \"%s\": %s\n" msgstr "chiusura della directory \"%s\" fallita: %s\n" #: ../common/psprintf.c:179 ../port/path.c:630 ../port/path.c:668 -#: ../port/path.c:685 access/transam/twophase.c:1261 -#: access/transam/xlog.c:6069 lib/stringinfo.c:258 libpq/auth.c:847 -#: libpq/auth.c:1210 libpq/auth.c:1278 libpq/auth.c:1794 -#: postmaster/bgworker.c:289 postmaster/bgworker.c:797 -#: postmaster/postmaster.c:2323 postmaster/postmaster.c:2354 -#: postmaster/postmaster.c:3886 postmaster/postmaster.c:4576 -#: postmaster/postmaster.c:4644 postmaster/postmaster.c:5343 -#: postmaster/postmaster.c:5596 replication/logical/logical.c:170 -#: storage/buffer/localbuf.c:422 storage/file/fd.c:729 storage/file/fd.c:1126 -#: storage/file/fd.c:1244 storage/file/fd.c:1916 storage/ipc/procarray.c:1060 -#: storage/ipc/procarray.c:1546 storage/ipc/procarray.c:1553 -#: storage/ipc/procarray.c:1967 storage/ipc/procarray.c:2570 -#: utils/adt/formatting.c:1523 utils/adt/formatting.c:1643 -#: utils/adt/formatting.c:1764 utils/adt/regexp.c:219 utils/adt/varlena.c:4440 -#: utils/adt/varlena.c:4461 utils/fmgr/dfmgr.c:216 utils/hash/dynahash.c:431 -#: utils/hash/dynahash.c:537 utils/hash/dynahash.c:1049 utils/mb/mbutils.c:376 -#: utils/mb/mbutils.c:709 utils/misc/guc.c:3885 utils/misc/guc.c:3901 -#: utils/misc/guc.c:3914 utils/misc/guc.c:6859 utils/misc/tzparser.c:470 -#: utils/mmgr/aset.c:505 utils/mmgr/mcxt.c:770 utils/mmgr/mcxt.c:805 -#: utils/mmgr/mcxt.c:842 utils/mmgr/mcxt.c:879 utils/mmgr/mcxt.c:913 -#: utils/mmgr/mcxt.c:942 utils/mmgr/mcxt.c:976 utils/mmgr/mcxt.c:1058 -#: utils/mmgr/mcxt.c:1092 utils/mmgr/mcxt.c:1141 +#: ../port/path.c:685 access/transam/twophase.c:1262 access/transam/xlog.c:6114 +#: lib/stringinfo.c:258 libpq/auth.c:850 libpq/auth.c:1213 libpq/auth.c:1281 +#: libpq/auth.c:1797 postmaster/bgworker.c:310 postmaster/bgworker.c:813 +#: postmaster/postmaster.c:2349 postmaster/postmaster.c:2380 +#: postmaster/postmaster.c:3913 postmaster/postmaster.c:4603 +#: postmaster/postmaster.c:4678 postmaster/postmaster.c:5353 +#: postmaster/postmaster.c:5657 +#: replication/libpqwalreceiver/libpqwalreceiver.c:143 +#: replication/logical/logical.c:169 storage/buffer/localbuf.c:436 +#: storage/file/fd.c:736 storage/file/fd.c:1164 storage/file/fd.c:1282 +#: storage/file/fd.c:1993 storage/ipc/procarray.c:1061 +#: storage/ipc/procarray.c:1547 storage/ipc/procarray.c:1554 +#: storage/ipc/procarray.c:1968 storage/ipc/procarray.c:2579 +#: utils/adt/formatting.c:1522 utils/adt/formatting.c:1642 +#: utils/adt/formatting.c:1763 utils/adt/pg_locale.c:463 +#: utils/adt/pg_locale.c:647 utils/adt/regexp.c:219 utils/adt/varlena.c:4440 +#: utils/adt/varlena.c:4461 utils/fmgr/dfmgr.c:216 utils/hash/dynahash.c:429 +#: utils/hash/dynahash.c:535 utils/hash/dynahash.c:1047 utils/mb/mbutils.c:376 +#: utils/mb/mbutils.c:709 utils/misc/guc.c:3888 utils/misc/guc.c:3904 +#: utils/misc/guc.c:3917 utils/misc/guc.c:6863 utils/misc/tzparser.c:468 +#: utils/mmgr/aset.c:510 utils/mmgr/mcxt.c:767 utils/mmgr/mcxt.c:802 +#: utils/mmgr/mcxt.c:839 utils/mmgr/mcxt.c:876 utils/mmgr/mcxt.c:910 +#: utils/mmgr/mcxt.c:939 utils/mmgr/mcxt.c:973 utils/mmgr/mcxt.c:1055 +#: utils/mmgr/mcxt.c:1089 utils/mmgr/mcxt.c:1138 #, c-format msgid "out of memory" msgstr "memoria esaurita" @@ -249,7 +251,7 @@ msgstr "rimozione del file o directory \"%s\" fallita: %s\n" msgid "could not look up effective user ID %ld: %s" msgstr "ID utente effettivo %ld non trovato: %s" -#: ../common/username.c:47 libpq/auth.c:1741 +#: ../common/username.c:47 libpq/auth.c:1744 msgid "user does not exist" msgstr "l'utente non esiste" @@ -293,18 +295,17 @@ msgstr "processo figlio terminato da segnale %d" msgid "child process exited with unrecognized status %d" msgstr "processo figlio uscito con stato non riconosciuto %d" -#: ../port/chklocale.c:259 +#: ../port/chklocale.c:293 #, c-format msgid "could not determine encoding for codeset \"%s\"" msgstr "determinazione della codifica per il codeset \"%s\" fallita" -#: ../port/chklocale.c:260 ../port/chklocale.c:389 -#: postmaster/postmaster.c:4876 +#: ../port/chklocale.c:294 ../port/chklocale.c:423 postmaster/postmaster.c:4882 #, c-format msgid "Please report this to ." msgstr "Per favore segnala questo problema a ." -#: ../port/chklocale.c:381 ../port/chklocale.c:387 +#: ../port/chklocale.c:415 ../port/chklocale.c:421 #, c-format msgid "could not determine encoding for locale \"%s\": codeset is \"%s\"" msgstr "non è stato possibile determinare una codifica per il locale \"%s\": il codeset è \"%s\"" @@ -362,71 +363,86 @@ msgstr "determinazione della directory corrente fallita: %s\n" msgid "unrecognized error %d" msgstr "errore sconosciuto %d" -#: access/brin/brin.c:817 +#: ../port/win32security.c:68 +#, c-format +msgid "could not open process token: error code %lu\n" +msgstr "apertura del token di processo fallita: codice di errore %lu\n" + +#: ../port/win32security.c:89 +#, c-format +msgid "could not get SID for Administrators group: error code %lu\n" +msgstr "lettura del SID del gruppo Amministratori fallita: codice di errore %lu\n" + +#: ../port/win32security.c:99 +#, c-format +msgid "could not get SID for PowerUsers group: error code %lu\n" +msgstr "lettura del SID del gruppo PowerUsers fallita: codice di errore %lu\n" + +#: access/brin/brin.c:810 #, c-format msgid "\"%s\" is not a BRIN index" msgstr "\"%s\" non è un indice BRIN" -#: access/brin/brin.c:833 +#: access/brin/brin.c:826 #, c-format msgid "could not open parent table of index %s" msgstr "apertura della tabella dell'indice %s non riuscita" -#: access/brin/brin_pageops.c:76 access/brin/brin_pageops.c:369 -#: access/brin/brin_pageops.c:844 +#: access/brin/brin_pageops.c:76 access/brin/brin_pageops.c:362 +#: access/brin/brin_pageops.c:828 #, c-format msgid "index row size %lu exceeds maximum %lu for index \"%s\"" msgstr "la dimensione %lu della riga dell'indice supera il massimo %lu per l'indice \"%s\"" -#: access/brin/brin_revmap.c:456 +#: access/brin/brin_revmap.c:459 #, c-format msgid "unexpected page type 0x%04X in BRIN index \"%s\" block %u" msgstr "tipo di pagina inaspettato 0x%04X nell'indice BRIN \"%s\" blocco %u" #: access/brin/brin_validate.c:115 #, c-format -msgid "brin opfamily %s contains function %s with invalid support number %d" -msgstr "la famiglia di operatori brin %s contiene la funzione %s con numero di supporto non valido %d" +msgid "brin operator family \"%s\" contains function %s with invalid support number %d" +msgstr "la famiglia di operatori brin \"%s\" contiene la funzione %s con numero di supporto non valido %d" #: access/brin/brin_validate.c:131 #, c-format -msgid "brin opfamily %s contains function %s with wrong signature for support number %d" -msgstr "la famiglia di operatori brin %s contiene la funzione %s con signature non valida per il numero di supporto %d" +msgid "brin operator family \"%s\" contains function %s with wrong signature for support number %d" +msgstr "la famiglia di operatori brin \"%s\" contiene la funzione %s con signature non valida per il numero di supporto %d" #: access/brin/brin_validate.c:153 #, c-format -msgid "brin opfamily %s contains operator %s with invalid strategy number %d" -msgstr "la famiglia di operatori brin %s contiene la funzione %s con numero di strategia non valido %d" +msgid "brin operator family \"%s\" contains operator %s with invalid strategy number %d" +msgstr "la famiglia di operatori brin \"%s\" contiene la funzione %s con numero di strategia non valido %d" #: access/brin/brin_validate.c:182 #, c-format -msgid "brin opfamily %s contains invalid ORDER BY specification for operator %s" -msgstr "la famiglia di operatori brin %s contiene una specifica ORDER BY non valida per l'operatore %s" +msgid "brin operator family \"%s\" contains invalid ORDER BY specification for operator %s" +msgstr "la famiglia di operatori brin \"%s\" contiene una specifica ORDER BY non valida per l'operatore %s" #: access/brin/brin_validate.c:195 #, c-format -msgid "brin opfamily %s contains operator %s with wrong signature" -msgstr "la famiglia di operatori brin %s contiene l'operatore %s con signature non valida" +msgid "brin operator family \"%s\" contains operator %s with wrong signature" +msgstr "la famiglia di operatori brin \"%s\" contiene l'operatore %s con signature non valida" #: access/brin/brin_validate.c:233 #, c-format -msgid "brin opfamily %s is missing operator(s) for types %s and %s" -msgstr "alla famiglia di operatori brin %s mancano operatori per i tipi %s e %s" +msgid "brin operator family \"%s\" is missing operator(s) for types %s and %s" +msgstr "alla famiglia di operatori brin \"%s\" mancano operatori per i tipi %s e %s" #: access/brin/brin_validate.c:243 #, c-format -msgid "brin opfamily %s is missing support function(s) for types %s and %s" -msgstr "alla famiglia di operatori brin %s mancano funzioni di supporto per i tipi %s e %s" +msgid "brin operator family \"%s\" is missing support function(s) for types %s and %s" +msgstr "alla famiglia di operatori brin \"%s\" mancano funzioni di supporto per i tipi %s e %s" #: access/brin/brin_validate.c:256 #, c-format -msgid "brin opclass %s is missing operator(s)" -msgstr "alla classe di operatori brin %s mancano operatori" +msgid "brin operator class \"%s\" is missing operator(s)" +msgstr "alla classe di operatori brin \"%s\" mancano operatori" #: access/brin/brin_validate.c:267 #, c-format -msgid "brin opclass %s is missing support function %d" -msgstr "alla classe di operatori brin %s manca la funzione di supporto %d" +msgid "brin operator class \"%s\" is missing support function %d" +msgstr "alla classe di operatori brin \"%s\" manca la funzione di supporto %d" #: access/common/heaptuple.c:708 access/common/heaptuple.c:1339 #, c-format @@ -438,68 +454,68 @@ msgstr "il numero di colonne (%d) eccede il limite (%d)" msgid "number of index columns (%d) exceeds limit (%d)" msgstr "il numero delle colonne dell'indice (%d) eccede il limite (%d)" -#: access/common/indextuple.c:176 access/spgist/spgutils.c:646 +#: access/common/indextuple.c:176 access/spgist/spgutils.c:642 #, c-format msgid "index row requires %zu bytes, maximum size is %zu" msgstr "la riga dell'indice richiede %zu byte, la dimensione massima è %zu" -#: access/common/printtup.c:294 tcop/fastpath.c:182 tcop/fastpath.c:544 -#: tcop/postgres.c:1721 +#: access/common/printtup.c:292 tcop/fastpath.c:182 tcop/fastpath.c:532 +#: tcop/postgres.c:1719 #, c-format msgid "unsupported format code: %d" msgstr "codice di formato non supportato: %d" -#: access/common/reloptions.c:488 +#: access/common/reloptions.c:493 #, c-format msgid "user-defined relation parameter types limit exceeded" msgstr "è stato superato il limite per i tipi di parametro per la relazione definita dall'utente" -#: access/common/reloptions.c:770 +#: access/common/reloptions.c:775 #, c-format msgid "RESET must not include values for parameters" msgstr "RESET non deve contenere valori per i parametri" -#: access/common/reloptions.c:803 +#: access/common/reloptions.c:808 #, c-format msgid "unrecognized parameter namespace \"%s\"" msgstr "parametro del namespace \"%s\" sconosciuto" -#: access/common/reloptions.c:1045 parser/parse_clause.c:281 +#: access/common/reloptions.c:1050 parser/parse_clause.c:281 #, c-format msgid "unrecognized parameter \"%s\"" msgstr "parametro \"%s\" non identificato" -#: access/common/reloptions.c:1075 +#: access/common/reloptions.c:1080 #, c-format msgid "parameter \"%s\" specified more than once" msgstr "parametro \"%s\" specificato più di una volta" -#: access/common/reloptions.c:1091 +#: access/common/reloptions.c:1096 #, c-format msgid "invalid value for boolean option \"%s\": %s" msgstr "valore non valido per l'opzione booleana \"%s\": %s" -#: access/common/reloptions.c:1103 +#: access/common/reloptions.c:1108 #, c-format msgid "invalid value for integer option \"%s\": %s" msgstr "valore non valido per l'opzione intera \"%s\": %s" -#: access/common/reloptions.c:1109 access/common/reloptions.c:1129 +#: access/common/reloptions.c:1114 access/common/reloptions.c:1134 #, c-format msgid "value %s out of bounds for option \"%s\"" msgstr "il valore %s non rientra nei limiti previsti per l'opzione \"%s\"" -#: access/common/reloptions.c:1111 +#: access/common/reloptions.c:1116 #, c-format msgid "Valid values are between \"%d\" and \"%d\"." msgstr "I valori validi sono quelli compresi fra \"%d\" e \"%d\"." -#: access/common/reloptions.c:1123 +#: access/common/reloptions.c:1128 #, c-format msgid "invalid value for floating point option \"%s\": %s" msgstr "valore non valido per l'opzione in virgola mobile \"%s\": %s" -#: access/common/reloptions.c:1131 +#: access/common/reloptions.c:1136 #, c-format msgid "Valid values are between \"%f\" and \"%f\"." msgstr "I valori validi sono quelli compresi fra \"%f\" e \"%f\"." @@ -514,17 +530,17 @@ msgstr "Il tipo restituito %s non corrisponde al tipo attesto %s nella colonna % msgid "Number of returned columns (%d) does not match expected column count (%d)." msgstr "il numero di colonne restituito (%d) non coincide col numero di colonne atteso (%d)" -#: access/common/tupconvert.c:241 +#: access/common/tupconvert.c:314 #, c-format msgid "Attribute \"%s\" of type %s does not match corresponding attribute of type %s." msgstr "L'attributo \"%s\" di tipo %s non combacia con l'attributo corrispondente di tipo %s." -#: access/common/tupconvert.c:253 +#: access/common/tupconvert.c:326 #, c-format msgid "Attribute \"%s\" of type %s does not exist in type %s." msgstr "L'attributo \"%s\" di tipo %s non esiste nel tipo %s." -#: access/common/tupdesc.c:635 parser/parse_relation.c:1517 +#: access/common/tupdesc.c:635 parser/parse_relation.c:1518 #, c-format msgid "column \"%s\" cannot be declared SETOF" msgstr "la colonna \"%s\" non può essere dichiarata SETOF" @@ -536,105 +552,105 @@ msgstr "la lista di posting è troppo lunga" #: access/gin/ginbulk.c:45 #, c-format -msgid "Reduce maintenance_work_mem" -msgstr "Riduci maintenance_work_mem" +msgid "Reduce maintenance_work_mem." +msgstr "Riduci maintenance_work_mem." -#: access/gin/ginentrypage.c:109 access/gist/gist.c:1354 -#: access/nbtree/nbtinsert.c:575 access/nbtree/nbtsort.c:488 -#: access/spgist/spgdoinsert.c:1915 +#: access/gin/ginentrypage.c:109 access/gist/gist.c:1337 +#: access/nbtree/nbtinsert.c:576 access/nbtree/nbtsort.c:488 +#: access/spgist/spgdoinsert.c:1907 #, c-format msgid "index row size %zu exceeds maximum %zu for index \"%s\"" msgstr "la dimensione %zu della riga dell'indice supera il massimo %zu per l'indice \"%s\"" -#: access/gin/ginfast.c:979 access/transam/xlog.c:9795 -#: access/transam/xlog.c:10266 access/transam/xlogfuncs.c:294 -#: access/transam/xlogfuncs.c:321 access/transam/xlogfuncs.c:360 -#: access/transam/xlogfuncs.c:381 access/transam/xlogfuncs.c:402 -#: access/transam/xlogfuncs.c:472 access/transam/xlogfuncs.c:528 +#: access/gin/ginfast.c:989 access/transam/xlog.c:9864 +#: access/transam/xlog.c:10381 access/transam/xlogfuncs.c:288 +#: access/transam/xlogfuncs.c:315 access/transam/xlogfuncs.c:354 +#: access/transam/xlogfuncs.c:375 access/transam/xlogfuncs.c:396 +#: access/transam/xlogfuncs.c:466 access/transam/xlogfuncs.c:522 #, c-format msgid "recovery is in progress" msgstr "il ripristino è in corso" -#: access/gin/ginfast.c:980 +#: access/gin/ginfast.c:990 #, c-format msgid "GIN pending list cannot be cleaned up during recovery." msgstr "La lista GIN in attesa non può essere completata durante il recupero." -#: access/gin/ginfast.c:987 +#: access/gin/ginfast.c:997 #, c-format msgid "\"%s\" is not a GIN index" msgstr "\"%s\" non è un indice GIN" -#: access/gin/ginfast.c:998 +#: access/gin/ginfast.c:1008 #, c-format msgid "cannot access temporary indexes of other sessions" msgstr "non è possibile accedere ad indici temporanei di altre sessioni" -#: access/gin/ginscan.c:409 +#: access/gin/ginscan.c:405 #, c-format msgid "old GIN indexes do not support whole-index scans nor searches for nulls" msgstr "i vecchi indici GIN non supportano le scansioni sull'intero indice né le ricerche di null" -#: access/gin/ginscan.c:410 +#: access/gin/ginscan.c:406 #, c-format msgid "To fix this, do REINDEX INDEX \"%s\"." msgstr "Per correggere questo problema esegui REINDEX INDEX \"%s\"." #: access/gin/ginvalidate.c:92 #, c-format -msgid "gin opfamily %s contains support procedure %s with cross-type registration" -msgstr "la famiglia di operatori gin %s contiene la procedura di supporto %s con tipi misti" +msgid "gin operator family \"%s\" contains support procedure %s with cross-type registration" +msgstr "la famiglia di operatori gin \"%s\" contiene la procedura di supporto %s con tipi misti" #: access/gin/ginvalidate.c:148 #, c-format -msgid "gin opfamily %s contains function %s with invalid support number %d" -msgstr "la famiglia di operatori gin %s contiene la funzione %s con numero di supporto non valido %d" +msgid "gin operator family \"%s\" contains function %s with invalid support number %d" +msgstr "la famiglia di operatori gin \"%s\" contiene la funzione %s con numero di supporto non valido %d" #: access/gin/ginvalidate.c:160 #, c-format -msgid "gin opfamily %s contains function %s with wrong signature for support number %d" -msgstr "la famiglia di operatori gin %s contiene la funzione %s con signature non valida per il numero di supporto %d" +msgid "gin operator family \"%s\" contains function %s with wrong signature for support number %d" +msgstr "la famiglia di operatori gin \"%s\" contiene la funzione %s con signature non valida per il numero di supporto %d" #: access/gin/ginvalidate.c:179 #, c-format -msgid "gin opfamily %s contains operator %s with invalid strategy number %d" -msgstr "la famiglia di operatori gin %s contiene l'operatore %s con numero di strategia non valida %d" +msgid "gin operator family \"%s\" contains operator %s with invalid strategy number %d" +msgstr "la famiglia di operatori gin \"%s\" contiene l'operatore %s con numero di strategia non valido %d" #: access/gin/ginvalidate.c:192 #, c-format -msgid "gin opfamily %s contains invalid ORDER BY specification for operator %s" -msgstr "la famiglia di operatori gin %s contiene una specifica ORDER BY non valida per l'operatore %s" +msgid "gin operator family \"%s\" contains invalid ORDER BY specification for operator %s" +msgstr "la famiglia di operatori gin \"%s\" contiene una specifica ORDER BY non valida per l'operatore %s" #: access/gin/ginvalidate.c:205 #, c-format -msgid "gin opfamily %s contains operator %s with wrong signature" -msgstr "la famiglia di operatori gin %s contiene l'operatore %s con signature non valida" +msgid "gin operator family \"%s\" contains operator %s with wrong signature" +msgstr "la famiglia di operatori gin \"%s\" contiene l'operatore %s con signature non valida" #: access/gin/ginvalidate.c:246 #, c-format -msgid "gin opclass %s is missing support function %d" -msgstr "alla classe di operatori gin %s manca la funzione di supporto %d" +msgid "gin operator class \"%s\" is missing support function %d" +msgstr "alla classe di operatori gin \"%s\" manca la funzione di supporto %d" #: access/gin/ginvalidate.c:256 #, c-format -msgid "gin opclass %s is missing support function %d or %d" -msgstr "alla classe di operatori gin %s mancano le funzioni di supporto %d o %d" +msgid "gin operator class \"%s\" is missing support function %d or %d" +msgstr "alla classe di operatori gin \"%s\" mancano le funzioni di supporto %d o %d" -#: access/gist/gist.c:692 access/gist/gistvacuum.c:258 +#: access/gist/gist.c:680 access/gist/gistvacuum.c:258 #, c-format msgid "index \"%s\" contains an inner tuple marked as invalid" msgstr "l'indice \"%s\" contiene una tupla interna marcata come invalida" -#: access/gist/gist.c:694 access/gist/gistvacuum.c:260 +#: access/gist/gist.c:682 access/gist/gistvacuum.c:260 #, c-format msgid "This is caused by an incomplete page split at crash recovery before upgrading to PostgreSQL 9.1." msgstr "Ciò è causato da una separazione di pagina incompleta al ripristino del crash prima dell'aggiornamento a PostgreSQL 9.1." -#: access/gist/gist.c:695 access/gist/gistutil.c:735 -#: access/gist/gistutil.c:746 access/gist/gistvacuum.c:261 -#: access/hash/hashutil.c:172 access/hash/hashutil.c:183 -#: access/hash/hashutil.c:195 access/hash/hashutil.c:216 -#: access/nbtree/nbtpage.c:518 access/nbtree/nbtpage.c:529 +#: access/gist/gist.c:683 access/gist/gistutil.c:738 access/gist/gistutil.c:749 +#: access/gist/gistvacuum.c:261 access/hash/hashutil.c:172 +#: access/hash/hashutil.c:183 access/hash/hashutil.c:195 +#: access/hash/hashutil.c:216 access/nbtree/nbtpage.c:518 +#: access/nbtree/nbtpage.c:529 #, c-format msgid "Please REINDEX it." msgstr "Si richiede l'esecuzione di REINDEX." @@ -664,13 +680,13 @@ msgstr "il metodo picksplit per la colonna %d dell'indice \"%s\" è fallito" msgid "The index is not optimal. To optimize it, contact a developer, or try to use the column as the second one in the CREATE INDEX command." msgstr "L'indice non è ottimale. Per ottimizzarlo si contatti uno sviluppatore o si usi la colonna ponendola in seconda posizione nel comando CREATE INDEX." -#: access/gist/gistutil.c:732 access/hash/hashutil.c:169 +#: access/gist/gistutil.c:735 access/hash/hashutil.c:169 #: access/nbtree/nbtpage.c:515 #, c-format msgid "index \"%s\" contains unexpected zero page at block %u" msgstr "l'indice \"%s\" contiene una pagina inaspettata completamente a zero al blocco %u" -#: access/gist/gistutil.c:743 access/hash/hashutil.c:180 +#: access/gist/gistutil.c:746 access/hash/hashutil.c:180 #: access/hash/hashutil.c:192 access/nbtree/nbtpage.c:526 #, c-format msgid "index \"%s\" contains corrupted page at block %u" @@ -678,56 +694,56 @@ msgstr "l'indice \"%s\" contiene una pagina corrotta al blocco %u" #: access/gist/gistvalidate.c:92 #, c-format -msgid "gist opfamily %s contains support procedure %s with cross-type registration" -msgstr "la famiglia di operatori gist %s contiene la procedura di supporto %s con tipi misti" +msgid "gist operator family \"%s\" contains support procedure %s with cross-type registration" +msgstr "la famiglia di operatori gist \"%s\" contiene la procedura di supporto %s con tipi misti" #: access/gist/gistvalidate.c:145 #, c-format -msgid "gist opfamily %s contains function %s with invalid support number %d" -msgstr "la famiglia di operatori gist %s contiene la funzione %s con numero di supporto non valido %d" +msgid "gist operator family \"%s\" contains function %s with invalid support number %d" +msgstr "la famiglia di operatori gist \"%s\" contiene la funzione %s con numero di supporto non valido %d" #: access/gist/gistvalidate.c:157 #, c-format -msgid "gist opfamily %s contains function %s with wrong signature for support number %d" -msgstr "la famiglia di operatori gist %s contiene la funzione %s con signature non valida per il numero di supporto %d" +msgid "gist operator family \"%s\" contains function %s with wrong signature for support number %d" +msgstr "la famiglia di operatori gist \"%s\" contiene la funzione %s con signature non valida per il numero di supporto %d" #: access/gist/gistvalidate.c:177 #, c-format -msgid "gist opfamily %s contains operator %s with invalid strategy number %d" -msgstr "la famiglia di operatori gist %s contiene l'operatore %s con numero di strategia non valida %d" +msgid "gist operator family \"%s\" contains operator %s with invalid strategy number %d" +msgstr "la famiglia di operatori gist \"%s\" contiene l'operatore %s con numero di strategia non valido %d" #: access/gist/gistvalidate.c:195 #, c-format -msgid "gist opfamily %s contains unsupported ORDER BY specification for operator %s" -msgstr "la famiglia di operatori gist %s contiene una specifica ORDER BY non supportata per l'operatore %s" +msgid "gist operator family \"%s\" contains unsupported ORDER BY specification for operator %s" +msgstr "la famiglia di operatori gist \"%s\" contiene una specifica ORDER BY non supportata per l'operatore %s" #: access/gist/gistvalidate.c:206 #, c-format -msgid "gist opfamily %s contains incorrect ORDER BY opfamily specification for operator %s" -msgstr "la famiglia di operatori gist %s contiene una specifica ORDER BY non corretta per l'operatore %s" +msgid "gist operator family \"%s\" contains incorrect ORDER BY opfamily specification for operator %s" +msgstr "la famiglia di operatori gist \"%s\" contiene una specifica ORDER BY non corretta per l'operatore %s" #: access/gist/gistvalidate.c:225 #, c-format -msgid "gist opfamily %s contains operator %s with wrong signature" -msgstr "la famiglia di operatori gist %s contiene l'operatore %s con signature non valida" +msgid "gist operator family \"%s\" contains operator %s with wrong signature" +msgstr "la famiglia di operatori gist \"%s\" contiene l'operatore %s con signature non valida" #: access/gist/gistvalidate.c:264 #, c-format -msgid "gist opclass %s is missing support function %d" -msgstr "alla classe di operatori gist %s manca la funzione di supporto %d" +msgid "gist operator class \"%s\" is missing support function %d" +msgstr "-alla classe di operatori gist \"%s\" manca la funzione di supporto %d" -#: access/hash/hashinsert.c:69 +#: access/hash/hashinsert.c:70 #, c-format msgid "index row size %zu exceeds hash maximum %zu" msgstr "la dimensione %zu della riga dell'indice supera il massimo dell'hash %zu" -#: access/hash/hashinsert.c:71 access/spgist/spgdoinsert.c:1919 -#: access/spgist/spgutils.c:707 +#: access/hash/hashinsert.c:72 access/spgist/spgdoinsert.c:1911 +#: access/spgist/spgutils.c:703 #, c-format msgid "Values larger than a buffer page cannot be indexed." msgstr "Non si possono indicizzare valori più grandi di una pagina di buffer." -#: access/hash/hashovfl.c:548 +#: access/hash/hashovfl.c:546 #, c-format msgid "out of overflow pages in hash index \"%s\"" msgstr "pagine di overflow esaurite per l'indice hash \"%s\"" @@ -749,230 +765,225 @@ msgstr "l'indice \"%s\" ha una versione errata dell'hash" #: access/hash/hashvalidate.c:98 #, c-format -msgid "hash opfamily %s contains support procedure %s with cross-type registration" -msgstr "la famiglia di operatori hash %s contiene la procedura di supporto %s con tipi misti" +msgid "hash operator family \"%s\" contains support procedure %s with cross-type registration" +msgstr "la famiglia di operatori hash \"%s\" contiene la procedura di supporto %s con tipi misti" #: access/hash/hashvalidate.c:113 #, c-format -msgid "hash opfamily %s contains function %s with wrong signature for support number %d" -msgstr "la famiglia di operatori hash %s contiene la funzione %s con signature non valida per il numero di supporto %d" +msgid "hash operator family \"%s\" contains function %s with wrong signature for support number %d" +msgstr "la famiglia di operatori hash \"%s\" contiene la funzione %s con signature non valida per il numero di supporto %d" #: access/hash/hashvalidate.c:130 #, c-format -msgid "hash opfamily %s contains function %s with invalid support number %d" -msgstr "la famiglia di operatori hash %s contiene la funzione %s con numero di supporto non valido %d" +msgid "hash operator family \"%s\" contains function %s with invalid support number %d" +msgstr "la famiglia di operatori hash \"%s\" contiene la funzione %s con numero di supporto non valido %d" #: access/hash/hashvalidate.c:151 #, c-format -msgid "hash opfamily %s contains operator %s with invalid strategy number %d" -msgstr "la famiglia di operatori hash %s contiene l'operatore %s con numero di strategia non valida %d" +msgid "hash operator family \"%s\" contains operator %s with invalid strategy number %d" +msgstr "la famiglia di operatori hash \"%s\" contiene l'operatore %s con numero di strategia non valido %d" #: access/hash/hashvalidate.c:164 #, c-format -msgid "hash opfamily %s contains invalid ORDER BY specification for operator %s" -msgstr "la famiglia di operatori hash %s contiene una specifica ORDER BY non valida per l'operatore %s" +msgid "hash operator family \"%s\" contains invalid ORDER BY specification for operator %s" +msgstr "la famiglia di operatori hash \"%s\" contiene una specifica ORDER BY non valida per l'operatore %s" #: access/hash/hashvalidate.c:177 #, c-format -msgid "hash opfamily %s contains operator %s with wrong signature" -msgstr "la famiglia di operatori hash %s contiene l'operatore %s con signature non valida" +msgid "hash operator family \"%s\" contains operator %s with wrong signature" +msgstr "la famiglia di operatori hash \"%s\" contiene l'operatore %s con signature non valida" #: access/hash/hashvalidate.c:189 #, c-format -msgid "hash opfamily %s lacks support function for operator %s" -msgstr "alla famiglia di operatori hash %s manca la funzione di supporto per l'operatore %s" +msgid "hash operator family \"%s\" lacks support function for operator %s" +msgstr "alla famiglia di operatori hash \"%s\" manca la funzione di supporto per l'operatore %s" #: access/hash/hashvalidate.c:217 #, c-format -msgid "hash opfamily %s is missing operator(s) for types %s and %s" -msgstr "alla famiglia di operatori hash %s mancano operatori per i tipi %s e %s" +msgid "hash operator family \"%s\" is missing operator(s) for types %s and %s" +msgstr "alla famiglia di operatori hash \"%s\" mancano operatori per i tipi %s e %s" #: access/hash/hashvalidate.c:231 #, c-format -msgid "hash opclass %s is missing operator(s)" -msgstr "alla classe di operatori hash %s mancano operatori" +msgid "hash operator class \"%s\" is missing operator(s)" +msgstr "alla classe di operatori hash \"%s\" mancano operatori" #: access/hash/hashvalidate.c:247 #, c-format -msgid "hash opfamily %s is missing cross-type operator(s)" -msgstr "alla famiglia di operatori hash %s mancano operatori tra tipi diversi" - -#: access/heap/heapam.c:1137 access/heap/heapam.c:1189 -#, c-format -msgid "cannot access temporary tables during a parallel operation" -msgstr "non è possibile accedere alle tabelle temporanee durante un'operazione parallela" +msgid "hash operator family \"%s\" is missing cross-type operator(s)" +msgstr "alla famiglia di operatori hash \"%s\" mancano operatori tra tipi diversi" -#: access/heap/heapam.c:1306 access/heap/heapam.c:1334 -#: access/heap/heapam.c:1366 catalog/aclchk.c:1755 +#: access/heap/heapam.c:1295 access/heap/heapam.c:1323 +#: access/heap/heapam.c:1355 catalog/aclchk.c:1756 #, c-format msgid "\"%s\" is an index" msgstr "\"%s\" è un indice" -#: access/heap/heapam.c:1311 access/heap/heapam.c:1339 -#: access/heap/heapam.c:1371 catalog/aclchk.c:1762 commands/tablecmds.c:8986 -#: commands/tablecmds.c:12044 +#: access/heap/heapam.c:1300 access/heap/heapam.c:1328 +#: access/heap/heapam.c:1360 catalog/aclchk.c:1763 commands/tablecmds.c:9082 +#: commands/tablecmds.c:12190 #, c-format msgid "\"%s\" is a composite type" msgstr "\"%s\" è un tipo composito" -#: access/heap/heapam.c:2580 +#: access/heap/heapam.c:2567 #, c-format msgid "cannot insert tuples during a parallel operation" msgstr "non è possibile inserire tuple durante un'operazione parallela" -#: access/heap/heapam.c:3030 +#: access/heap/heapam.c:3017 #, c-format msgid "cannot delete tuples during a parallel operation" msgstr "non è possibile eliminare tuple durante un'operazione parallela" -#: access/heap/heapam.c:3076 +#: access/heap/heapam.c:3063 #, c-format msgid "attempted to delete invisible tuple" msgstr "tentativo di eliminare tuple invisibili" -#: access/heap/heapam.c:3503 access/heap/heapam.c:6063 +#: access/heap/heapam.c:3489 access/heap/heapam.c:6240 #, c-format msgid "cannot update tuples during a parallel operation" msgstr "non è possibile aggiornare tuple durante un'operazione parallela" -#: access/heap/heapam.c:3625 +#: access/heap/heapam.c:3611 #, c-format msgid "attempted to update invisible tuple" msgstr "tentativo di aggiornare tuple invisibili" -#: access/heap/heapam.c:4884 access/heap/heapam.c:4922 -#: access/heap/heapam.c:5145 executor/execMain.c:2304 +#: access/heap/heapam.c:4963 access/heap/heapam.c:5001 +#: access/heap/heapam.c:5253 executor/execMain.c:2314 #, c-format msgid "could not obtain lock on row in relation \"%s\"" msgstr "lock di riga nella relazione \"%s\" fallito" -#: access/heap/hio.c:325 access/heap/rewriteheap.c:666 +#: access/heap/hio.c:322 access/heap/rewriteheap.c:664 #, c-format msgid "row is too big: size %zu, maximum size %zu" msgstr "la riga è troppo grande: la dimensione %zu supera il massimo %zu" -#: access/heap/rewriteheap.c:925 +#: access/heap/rewriteheap.c:923 #, c-format msgid "could not write to file \"%s\", wrote %d of %d: %m" msgstr "scrittura nel file \"%s\" fallita, scritti %d di %d: %m" -#: access/heap/rewriteheap.c:965 access/heap/rewriteheap.c:1177 -#: access/heap/rewriteheap.c:1274 access/transam/timeline.c:407 -#: access/transam/timeline.c:483 access/transam/xlog.c:3060 -#: access/transam/xlog.c:3222 replication/logical/snapbuild.c:1607 -#: replication/slot.c:1077 replication/slot.c:1162 storage/file/fd.c:624 -#: storage/file/fd.c:3052 storage/smgr/md.c:1031 storage/smgr/md.c:1262 -#: storage/smgr/md.c:1435 utils/misc/guc.c:6881 +#: access/heap/rewriteheap.c:963 access/heap/rewriteheap.c:1175 +#: access/heap/rewriteheap.c:1272 access/transam/timeline.c:407 +#: access/transam/timeline.c:483 access/transam/xlog.c:3093 +#: access/transam/xlog.c:3255 replication/logical/snapbuild.c:1605 +#: replication/slot.c:1105 replication/slot.c:1190 storage/file/fd.c:631 +#: storage/file/fd.c:3129 storage/smgr/md.c:1041 storage/smgr/md.c:1274 +#: storage/smgr/md.c:1447 utils/misc/guc.c:6885 #, c-format msgid "could not fsync file \"%s\": %m" msgstr "fsync del file \"%s\" fallito: %m" -#: access/heap/rewriteheap.c:1020 access/heap/rewriteheap.c:1140 +#: access/heap/rewriteheap.c:1018 access/heap/rewriteheap.c:1138 #: access/transam/timeline.c:315 access/transam/timeline.c:461 -#: access/transam/xlog.c:3016 access/transam/xlog.c:3165 -#: access/transam/xlog.c:10124 access/transam/xlog.c:10162 -#: access/transam/xlog.c:10489 postmaster/postmaster.c:4351 -#: replication/logical/origin.c:542 replication/slot.c:1034 -#: storage/file/copydir.c:162 storage/smgr/md.c:320 utils/time/snapmgr.c:1175 +#: access/transam/xlog.c:3049 access/transam/xlog.c:3198 +#: access/transam/xlog.c:10198 access/transam/xlog.c:10236 +#: access/transam/xlog.c:10625 postmaster/postmaster.c:4378 +#: replication/logical/origin.c:542 replication/slot.c:1062 +#: storage/file/copydir.c:162 storage/smgr/md.c:327 utils/time/snapmgr.c:1275 #, c-format msgid "could not create file \"%s\": %m" msgstr "creazione del file \"%s\" fallita: %m" -#: access/heap/rewriteheap.c:1149 +#: access/heap/rewriteheap.c:1147 #, c-format msgid "could not truncate file \"%s\" to %u: %m" msgstr "troncamento del file \"%s\" a %u fallito: %m" -#: access/heap/rewriteheap.c:1156 replication/walsender.c:481 -#: storage/smgr/md.c:1847 +#: access/heap/rewriteheap.c:1154 replication/walsender.c:481 +#: storage/smgr/md.c:1899 #, c-format msgid "could not seek to end of file \"%s\": %m" msgstr "non è stato possibile spostarsi alla fine del file \"%s\": %m" -#: access/heap/rewriteheap.c:1167 access/transam/timeline.c:367 +#: access/heap/rewriteheap.c:1165 access/transam/timeline.c:367 #: access/transam/timeline.c:401 access/transam/timeline.c:477 -#: access/transam/xlog.c:3051 access/transam/xlog.c:3215 -#: postmaster/postmaster.c:4361 postmaster/postmaster.c:4371 -#: replication/logical/origin.c:551 replication/logical/origin.c:587 -#: replication/logical/origin.c:603 replication/logical/snapbuild.c:1591 -#: replication/slot.c:1063 storage/file/copydir.c:187 +#: access/transam/xlog.c:3084 access/transam/xlog.c:3248 +#: postmaster/postmaster.c:4388 postmaster/postmaster.c:4398 +#: replication/logical/origin.c:551 replication/logical/origin.c:590 +#: replication/logical/origin.c:606 replication/logical/snapbuild.c:1589 +#: replication/slot.c:1091 storage/file/copydir.c:187 #: utils/init/miscinit.c:1228 utils/init/miscinit.c:1237 -#: utils/init/miscinit.c:1244 utils/misc/guc.c:6842 utils/misc/guc.c:6873 -#: utils/misc/guc.c:8715 utils/misc/guc.c:8729 utils/time/snapmgr.c:1180 -#: utils/time/snapmgr.c:1187 +#: utils/init/miscinit.c:1244 utils/misc/guc.c:6846 utils/misc/guc.c:6877 +#: utils/misc/guc.c:8727 utils/misc/guc.c:8741 utils/time/snapmgr.c:1280 +#: utils/time/snapmgr.c:1287 #, c-format msgid "could not write to file \"%s\": %m" msgstr "scrittura nel file \"%s\" fallita: %m" -#: access/heap/rewriteheap.c:1250 access/transam/xlog.c:10356 +#: access/heap/rewriteheap.c:1248 access/transam/xlog.c:10460 #: access/transam/xlogarchive.c:114 access/transam/xlogarchive.c:468 -#: replication/logical/origin.c:529 replication/logical/reorderbuffer.c:2611 -#: replication/logical/reorderbuffer.c:2668 -#: replication/logical/snapbuild.c:1535 replication/logical/snapbuild.c:1910 -#: replication/slot.c:1136 storage/ipc/dsm.c:326 storage/smgr/md.c:420 -#: storage/smgr/md.c:469 storage/smgr/md.c:1382 +#: replication/logical/origin.c:529 replication/logical/reorderbuffer.c:2632 +#: replication/logical/reorderbuffer.c:2689 +#: replication/logical/snapbuild.c:1538 replication/logical/snapbuild.c:1901 +#: replication/slot.c:1164 storage/ipc/dsm.c:326 storage/smgr/md.c:427 +#: storage/smgr/md.c:476 storage/smgr/md.c:1394 #, c-format msgid "could not remove file \"%s\": %m" msgstr "rimozione del file \"%s\" fallita: %m" -#: access/heap/rewriteheap.c:1264 access/transam/timeline.c:111 +#: access/heap/rewriteheap.c:1262 access/transam/timeline.c:111 #: access/transam/timeline.c:236 access/transam/timeline.c:334 -#: access/transam/xlog.c:2992 access/transam/xlog.c:3109 -#: access/transam/xlog.c:3150 access/transam/xlog.c:3423 -#: access/transam/xlog.c:3501 access/transam/xlogutils.c:705 -#: replication/basebackup.c:401 replication/basebackup.c:1162 -#: replication/logical/origin.c:658 replication/logical/reorderbuffer.c:2141 -#: replication/logical/reorderbuffer.c:2381 -#: replication/logical/reorderbuffer.c:3059 -#: replication/logical/snapbuild.c:1584 replication/logical/snapbuild.c:1668 -#: replication/slot.c:1151 replication/walsender.c:474 -#: replication/walsender.c:2104 storage/file/copydir.c:155 -#: storage/file/fd.c:607 storage/file/fd.c:2964 storage/file/fd.c:3031 -#: storage/smgr/md.c:602 utils/error/elog.c:1870 utils/init/miscinit.c:1163 -#: utils/init/miscinit.c:1284 utils/init/miscinit.c:1362 utils/misc/guc.c:7101 -#: utils/misc/guc.c:7134 +#: access/transam/xlog.c:3025 access/transam/xlog.c:3142 +#: access/transam/xlog.c:3183 access/transam/xlog.c:3456 +#: access/transam/xlog.c:3534 access/transam/xlogutils.c:701 +#: replication/basebackup.c:403 replication/basebackup.c:1150 +#: replication/logical/origin.c:661 replication/logical/reorderbuffer.c:2156 +#: replication/logical/reorderbuffer.c:2402 +#: replication/logical/reorderbuffer.c:3081 +#: replication/logical/snapbuild.c:1582 replication/logical/snapbuild.c:1666 +#: replication/slot.c:1179 replication/walsender.c:474 +#: replication/walsender.c:2101 storage/file/copydir.c:155 +#: storage/file/fd.c:614 storage/file/fd.c:3041 storage/file/fd.c:3108 +#: storage/smgr/md.c:609 utils/error/elog.c:1879 utils/init/miscinit.c:1163 +#: utils/init/miscinit.c:1284 utils/init/miscinit.c:1362 utils/misc/guc.c:7105 +#: utils/misc/guc.c:7138 #, c-format msgid "could not open file \"%s\": %m" msgstr "apertura del file \"%s\" fallita: %m" -#: access/index/amapi.c:69 commands/amcmds.c:164 +#: access/index/amapi.c:82 commands/amcmds.c:164 #, c-format msgid "access method \"%s\" is not of type %s" msgstr "il metodo di accesso \"%s\" non è del tipo %s" -#: access/index/amapi.c:78 +#: access/index/amapi.c:98 #, c-format msgid "index access method \"%s\" does not have a handler" msgstr "il metodo di accesso dell'indice \"%s\" non ha un handler" #: access/index/indexam.c:155 catalog/objectaddress.c:1196 -#: commands/indexcmds.c:1799 commands/tablecmds.c:241 -#: commands/tablecmds.c:12035 +#: commands/indexcmds.c:1800 commands/tablecmds.c:242 +#: commands/tablecmds.c:12181 #, c-format msgid "\"%s\" is not an index" msgstr "\"%s\" non è un indice" -#: access/nbtree/nbtinsert.c:427 +#: access/nbtree/nbtinsert.c:428 #, c-format msgid "duplicate key value violates unique constraint \"%s\"" msgstr "un valore chiave duplicato viola il vincolo univoco \"%s\"" -#: access/nbtree/nbtinsert.c:429 +#: access/nbtree/nbtinsert.c:430 #, c-format msgid "Key %s already exists." msgstr "La chiave %s esiste già." -#: access/nbtree/nbtinsert.c:496 +#: access/nbtree/nbtinsert.c:497 #, c-format msgid "failed to re-find tuple within index \"%s\"" msgstr "non ho ritrovato la tupla nell'indice \"%s\"" -#: access/nbtree/nbtinsert.c:498 +#: access/nbtree/nbtinsert.c:499 #, c-format msgid "This may be because of a non-immutable index expression." msgstr "Ciò potrebbe essere causato da un'espressione dell'indice non immutabile." -#: access/nbtree/nbtinsert.c:578 access/nbtree/nbtsort.c:491 +#: access/nbtree/nbtinsert.c:579 access/nbtree/nbtsort.c:491 #, c-format msgid "" "Values larger than 1/3 of a buffer page cannot be indexed.\n" @@ -982,7 +993,7 @@ msgstr "" "Si consiglia un indice funzionale su un hash MD5 del valore o l'uso del full text indexing." #: access/nbtree/nbtpage.c:168 access/nbtree/nbtpage.c:371 -#: access/nbtree/nbtpage.c:458 parser/parse_utilcmd.c:1715 +#: access/nbtree/nbtpage.c:458 parser/parse_utilcmd.c:1702 #, c-format msgid "index \"%s\" is not a btree" msgstr "l'indice \"%s\" non è un btree" @@ -1005,120 +1016,120 @@ msgstr "Ciò può essere causato da un VACUUM interrotto in una versione 9.3 o p #: access/nbtree/nbtvalidate.c:100 #, c-format -msgid "btree opfamily %s contains function %s with invalid support number %d" -msgstr "la famiglia di operatori btree %s contiene la funzione %s con numero di supporto non valido %d" +msgid "btree operator family \"%s\" contains function %s with invalid support number %d" +msgstr "la famiglia di operatori btree \"%s\" contiene la funzione %s con numero di supporto non valido %d" #: access/nbtree/nbtvalidate.c:112 #, c-format -msgid "btree opfamily %s contains function %s with wrong signature for support number %d" -msgstr "la famiglia di operatori btree %s contiene la funzione %s con signature non valida per il numero di supporto %d" +msgid "btree operator family \"%s\" contains function %s with wrong signature for support number %d" +msgstr "la famiglia di operatori btree \"%s\" contiene la funzione %s con signature non valida per il numero di supporto %d" #: access/nbtree/nbtvalidate.c:132 #, c-format -msgid "btree opfamily %s contains operator %s with invalid strategy number %d" -msgstr "la famiglia di operatori btree %s contiene l'operatore %s con numero di strategia non valida %d" +msgid "btree operator family \"%s\" contains operator %s with invalid strategy number %d" +msgstr "la famiglia di operatori btree \"%s\" contiene l'operatore %s con numero di strategia non valido %d" #: access/nbtree/nbtvalidate.c:145 #, c-format -msgid "btree opfamily %s contains invalid ORDER BY specification for operator %s" -msgstr "la famiglia di operatori btree %s contiene una specifica ORDER BY non valida per l'operatore %s" +msgid "btree operator family \"%s\" contains invalid ORDER BY specification for operator %s" +msgstr "la famiglia di operatori btree \"%s\" contiene una specifica ORDER BY non valida per l'operatore %s" #: access/nbtree/nbtvalidate.c:158 #, c-format -msgid "btree opfamily %s contains operator %s with wrong signature" -msgstr "la famiglia di operatori btree %s contiene l'operatore %s con signature non valida" +msgid "btree operator family \"%s\" contains operator %s with wrong signature" +msgstr "la famiglia di operatori btree \"%s\" contiene l'operatore %s con signature non valida" #: access/nbtree/nbtvalidate.c:200 #, c-format -msgid "btree opfamily %s is missing operator(s) for types %s and %s" -msgstr "alla famiglia di operatori btree %s mancano operatori per i tipi %s e %s" +msgid "btree operator family \"%s\" is missing operator(s) for types %s and %s" +msgstr "alla famiglia di operatori btree \"%s\" mancano operatori per i tipi %s e %s" #: access/nbtree/nbtvalidate.c:210 #, c-format -msgid "btree opfamily %s is missing support function for types %s and %s" -msgstr "alla famiglia di operatori btree %s mancano funzioni di supporto per i tipi %s e %s" +msgid "btree operator family \"%s\" is missing support function for types %s and %s" +msgstr "alla famiglia di operatori btree \"%s\" mancano funzioni di supporto per i tipi %s e %s" #: access/nbtree/nbtvalidate.c:224 #, c-format -msgid "btree opclass %s is missing operator(s)" -msgstr "alla classe di operatori btree %s mancano operatori" +msgid "btree operator class \"%s\" is missing operator(s)" +msgstr "alla classe di operatori btree \"%s\" mancano operatori" #: access/nbtree/nbtvalidate.c:241 #, c-format -msgid "btree opfamily %s is missing cross-type operator(s)" -msgstr "alla famiglia di operatori btree %s mancano operatori tra tipi diversi" +msgid "btree operator family \"%s\" is missing cross-type operator(s)" +msgstr "alla famiglia di operatori btree \"%s\" mancano operatori tra tipi diversi" -#: access/spgist/spgutils.c:704 +#: access/spgist/spgutils.c:700 #, c-format msgid "SP-GiST inner tuple size %zu exceeds maximum %zu" msgstr "La dimensione %zu della tupla interna SP-GiST supera il massimo %zu" #: access/spgist/spgvalidate.c:92 #, c-format -msgid "spgist opfamily %s contains support procedure %s with cross-type registration" -msgstr "la famiglia di operatori spgist %s contiene la procedura di supporto %s con tipi misti" +msgid "spgist operator family \"%s\" contains support procedure %s with cross-type registration" +msgstr "la famiglia di operatori spgist \"%s\" contiene la procedura di supporto %s con tipi misti" #: access/spgist/spgvalidate.c:115 #, c-format -msgid "spgist opfamily %s contains function %s with invalid support number %d" -msgstr "la famiglia di operatori spgist %s contiene la funzione %s con numero di supporto non valido %d" +msgid "spgist operator family \"%s\" contains function %s with invalid support number %d" +msgstr "la famiglia di operatori spgist \"%s\" contiene la funzione %s con numero di supporto non valido %d" #: access/spgist/spgvalidate.c:127 #, c-format -msgid "spgist opfamily %s contains function %s with wrong signature for support number %d" -msgstr "la famiglia di operatori spgist %s contiene la funzione %s con signature non valida per il numero di supporto %d" +msgid "spgist operator family \"%s\" contains function %s with wrong signature for support number %d" +msgstr "la famiglia di operatori spgist \"%s\" contiene la funzione %s con signature non valida per il numero di supporto %d" #: access/spgist/spgvalidate.c:146 #, c-format -msgid "spgist opfamily %s contains operator %s with invalid strategy number %d" -msgstr "la famiglia di operatori spgist %s contiene l'operatore %s con numero di strategia non valida %d" +msgid "spgist operator family \"%s\" contains operator %s with invalid strategy number %d" +msgstr "la famiglia di operatori spgist \"%s\" contiene l'operatore %s con numero di strategia non valido %d" #: access/spgist/spgvalidate.c:159 #, c-format -msgid "spgist opfamily %s contains invalid ORDER BY specification for operator %s" -msgstr "la famiglia di operatori spgist %s contiene una specifica ORDER BY non valida per l'operatore %s" +msgid "spgist operator family \"%s\" contains invalid ORDER BY specification for operator %s" +msgstr "la famiglia di operatori spgist \"%s\" contiene una specifica ORDER BY non valida per l'operatore %s" #: access/spgist/spgvalidate.c:172 #, c-format -msgid "spgist opfamily %s contains operator %s with wrong signature" -msgstr "la famiglia di operatori spgist %s contiene l'operatore %s con signature non valida" +msgid "spgist operator family \"%s\" contains operator %s with wrong signature" +msgstr "la famiglia di operatori spgist \"%s\" contiene l'operatore %s con signature non valida" #: access/spgist/spgvalidate.c:200 #, c-format -msgid "spgist opfamily %s is missing operator(s) for types %s and %s" -msgstr "alla famiglia di operatori spgist %s mancano operatori per i tipi %s e %s" +msgid "spgist operator family \"%s\" is missing operator(s) for types %s and %s" +msgstr "alla famiglia di operatori spgist \"%s\" mancano operatori per i tipi %s e %s" #: access/spgist/spgvalidate.c:220 #, c-format -msgid "spgist opfamily %s is missing support function %d for type %s" -msgstr "alla famiglia di operatori spgist %s manca la funzione di supporto %d per il tipo %s" +msgid "spgist operator family \"%s\" is missing support function %d for type %s" +msgstr "alla famiglia di operatori spgist \"%s\" manca la funzione di supporto %d per il tipo %s" #: access/spgist/spgvalidate.c:233 #, c-format -msgid "spgist opclass %s is missing operator(s)" -msgstr "alla classe di operatori spgist %s mancano operatori" +msgid "spgist operator class \"%s\" is missing operator(s)" +msgstr "alla classe di operatori spgist \"%s\" mancano operatori" #: access/tablesample/bernoulli.c:152 access/tablesample/system.c:156 #, c-format msgid "sample percentage must be between 0 and 100" msgstr "la percentuale dei campioni dev'essere tra 0 e 100" -#: access/transam/commit_ts.c:295 +#: access/transam/commit_ts.c:294 #, c-format msgid "cannot retrieve commit timestamp for transaction %u" msgstr "non è stato possibile ottenere l'ora di commit per la transazione %u" -#: access/transam/commit_ts.c:385 +#: access/transam/commit_ts.c:392 #, c-format msgid "could not get commit timestamp data" msgstr "non è stato possibile ottenere i dati dell'ora di commit" -#: access/transam/commit_ts.c:387 +#: access/transam/commit_ts.c:394 #, c-format msgid "Make sure the configuration parameter \"%s\" is set on the master server." msgstr "Assicurati che il parametro di configurazione \"%s\" sia impostato sul server master." -#: access/transam/commit_ts.c:389 libpq/hba.c:1441 +#: access/transam/commit_ts.c:396 libpq/hba.c:1439 #, c-format msgid "Make sure the configuration parameter \"%s\" is set." msgstr "Assicurati che il parametro di configurazione \"%s\" sia impostato." @@ -1143,14 +1154,14 @@ msgstr "" msgid "database is not accepting commands that generate new MultiXactIds to avoid wraparound data loss in database with OID %u" msgstr "il database non sta accettando comandi che generano nuovi MultiXactIds per evitare perdite di dati per wraparound nel database con OID %u" -#: access/transam/multixact.c:1028 access/transam/multixact.c:2317 +#: access/transam/multixact.c:1028 access/transam/multixact.c:2314 #, c-format msgid "database \"%s\" must be vacuumed before %u more MultiXactId is used" msgid_plural "database \"%s\" must be vacuumed before %u more MultiXactIds are used" msgstr[0] "il database \"%s\" deve ricevere un vacuum prima che altri %u MultiXactIds siano usati" msgstr[1] "il database \"%s\" deve ricevere un vacuum prima che altri %u MultiXactIds siano usati" -#: access/transam/multixact.c:1037 access/transam/multixact.c:2326 +#: access/transam/multixact.c:1037 access/transam/multixact.c:2323 #, c-format msgid "database with OID %u must be vacuumed before %u more MultiXactId is used" msgid_plural "database with OID %u must be vacuumed before %u more MultiXactIds are used" @@ -1186,22 +1197,22 @@ msgstr[1] "il database con OID %u deve ricevere un vacuum prima che altri %d mem msgid "Execute a database-wide VACUUM in that database with reduced vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age settings." msgstr "Esegui un VACUUM su quel database intero con impostazioni di vacuum_multixact_freeze_min_age e vacuum_multixact_freeze_table_age ridotte." -#: access/transam/multixact.c:1278 +#: access/transam/multixact.c:1277 #, c-format msgid "MultiXactId %u does no longer exist -- apparent wraparound" msgstr "il MultiXactId %u non esiste più -- sembra ci sia stato un wraparound" -#: access/transam/multixact.c:1286 +#: access/transam/multixact.c:1285 #, c-format msgid "MultiXactId %u has not been created yet -- apparent wraparound" msgstr "il MultiXactId %u non è stato ancora creato -- sembra ci sia stato un wraparound" -#: access/transam/multixact.c:2267 +#: access/transam/multixact.c:2264 #, c-format msgid "MultiXactId wrap limit is %u, limited by database with OID %u" msgstr "il limite di wrap di MultiXactId è %u, limitato dal database con OID %u" -#: access/transam/multixact.c:2322 access/transam/multixact.c:2331 +#: access/transam/multixact.c:2319 access/transam/multixact.c:2328 #: access/transam/varsup.c:146 access/transam/varsup.c:153 #: access/transam/varsup.c:384 access/transam/varsup.c:391 #, c-format @@ -1212,66 +1223,65 @@ msgstr "" "Per evitare lo spegnimento del database, si deve eseguire un VACUUM su tutto il database.\n" "Potrebbe essere necessario inoltre effettuare il COMMIT o il ROLLBACK di vecchie transazioni preparate." -#: access/transam/multixact.c:2601 +#: access/transam/multixact.c:2598 #, c-format msgid "oldest MultiXactId member is at offset %u" msgstr "il membro MultiXactId più vecchio è all'offset %u" -#: access/transam/multixact.c:2605 +#: access/transam/multixact.c:2602 #, c-format msgid "MultiXact member wraparound protections are disabled because oldest checkpointed MultiXact %u does not exist on disk" msgstr "le protezioni di wraparound dei membri MultiXact sono disabilitate perché il il MultiXact più vecchio che abbia ricevuto un checkpoint %u non esiste sul disco" -#: access/transam/multixact.c:2627 +#: access/transam/multixact.c:2624 #, c-format msgid "MultiXact member wraparound protections are now enabled" msgstr "le protezioni di wraparound dei membri MultiXact ora sono abilitate" -#: access/transam/multixact.c:2629 +#: access/transam/multixact.c:2626 #, c-format msgid "MultiXact member stop limit is now %u based on MultiXact %u" msgstr "il limite di arresto dei membri MultiXact è ora %u basato sul MultiXact %u" -#: access/transam/multixact.c:3009 +#: access/transam/multixact.c:3006 #, c-format msgid "oldest MultiXact %u not found, earliest MultiXact %u, skipping truncation" msgstr "MultiXact più vecchio %u non trovato, il primo è il MultiXact %u, troncamento non eseguito" -#: access/transam/multixact.c:3027 +#: access/transam/multixact.c:3024 #, c-format msgid "cannot truncate up to MultiXact %u because it does not exist on disk, skipping truncation" msgstr "impossibile troncare fino al MultiXact %u perché non esiste su disco, troncamento non eseguito" -#: access/transam/multixact.c:3353 +#: access/transam/multixact.c:3350 #, c-format msgid "invalid MultiXactId: %u" msgstr "MultiXactId non valido: %u" -#: access/transam/parallel.c:581 +#: access/transam/parallel.c:610 #, c-format msgid "postmaster exited during a parallel transaction" msgstr "il postmaster è terminato durante una transazione parallela" -#: access/transam/parallel.c:739 +#: access/transam/parallel.c:799 #, c-format msgid "lost connection to parallel worker" msgstr "connessione al worker parallelo perduta" -#: access/transam/parallel.c:914 +#: access/transam/parallel.c:858 access/transam/parallel.c:860 +msgid "parallel worker" +msgstr "worker parallelo" + +#: access/transam/parallel.c:1001 #, c-format msgid "could not map dynamic shared memory segment" msgstr "mappatura del segmento di memoria dinamica condivisa non riuscito" -#: access/transam/parallel.c:919 +#: access/transam/parallel.c:1006 #, c-format msgid "invalid magic number in dynamic shared memory segment" msgstr "numero magico non valido nel segmento di memoria dinamica condivisa" -#: access/transam/parallel.c:1084 -#, c-format -msgid "parallel worker, PID %d" -msgstr "lavoratore parallelo, PID %d" - #: access/transam/slru.c:665 #, c-format msgid "file \"%s\" doesn't exist, reading as zeroes" @@ -1360,8 +1370,8 @@ msgid "Timeline IDs must be less than child timeline's ID." msgstr "Gli ID della timeline devono avere valori inferiori degli ID della timeline figlia" #: access/transam/timeline.c:412 access/transam/timeline.c:488 -#: access/transam/xlog.c:3066 access/transam/xlog.c:3227 -#: access/transam/xlogfuncs.c:691 commands/copy.c:1671 +#: access/transam/xlog.c:3099 access/transam/xlog.c:3260 +#: access/transam/xlogfuncs.c:685 commands/copy.c:1709 #: storage/file/copydir.c:201 #, c-format msgid "could not close file \"%s\": %m" @@ -1402,67 +1412,67 @@ msgstr "è stato raggiunto il numero massimo di transazioni preparate" msgid "Increase max_prepared_transactions (currently %d)." msgstr "Incrementa il valore di max_prepared_transactions (il valore attuale è %d)" -#: access/transam/twophase.c:539 +#: access/transam/twophase.c:540 #, c-format msgid "prepared transaction with identifier \"%s\" is busy" msgstr "la transazione preparata con identificativo \"%s\" è in uso" -#: access/transam/twophase.c:545 +#: access/transam/twophase.c:546 #, c-format msgid "permission denied to finish prepared transaction" msgstr "non è consentito portare a termine la transazione preparata" -#: access/transam/twophase.c:546 +#: access/transam/twophase.c:547 #, c-format msgid "Must be superuser or the user that prepared the transaction." msgstr "È consentito solo a un superutente o all'utente che ha preparato la transazione." -#: access/transam/twophase.c:557 +#: access/transam/twophase.c:558 #, c-format msgid "prepared transaction belongs to another database" msgstr "la transazione preparata appartiene ad un altro database" -#: access/transam/twophase.c:558 +#: access/transam/twophase.c:559 #, c-format msgid "Connect to the database where the transaction was prepared to finish it." msgstr "Connettersi al database in cui la transazione è stata preparata per portarla a termine." -#: access/transam/twophase.c:573 +#: access/transam/twophase.c:574 #, c-format msgid "prepared transaction with identifier \"%s\" does not exist" msgstr "la transazione preparata con identificativo \"%s\" non esiste" -#: access/transam/twophase.c:1042 +#: access/transam/twophase.c:1043 #, c-format msgid "two-phase state file maximum length exceeded" msgstr "è stata superata la lunghezza massima del file dello stato a due fasi" -#: access/transam/twophase.c:1160 +#: access/transam/twophase.c:1161 #, c-format msgid "could not open two-phase state file \"%s\": %m" msgstr "apertura del file dello stato a due fasi \"%s\" fallita: %m" -#: access/transam/twophase.c:1177 +#: access/transam/twophase.c:1178 #, c-format msgid "could not stat two-phase state file \"%s\": %m" msgstr "non è stato possibile ottenere informazioni sul file dello stato a due fasi \"%s\": %m" -#: access/transam/twophase.c:1209 +#: access/transam/twophase.c:1210 #, c-format msgid "could not read two-phase state file \"%s\": %m" msgstr "lettura del file dello stato a due fasi \"%s\" fallita: %m" -#: access/transam/twophase.c:1262 access/transam/xlog.c:6070 +#: access/transam/twophase.c:1263 access/transam/xlog.c:6115 #, c-format msgid "Failed while allocating an XLog reading processor." msgstr "Errore nell'alllocazione di un processore di lettura XLog." -#: access/transam/twophase.c:1268 +#: access/transam/twophase.c:1269 #, c-format msgid "could not read two-phase state from xlog at %X/%X" msgstr "lettura dello stato a due fasi fallita per l'xlog a %X/%X" -#: access/transam/twophase.c:1276 +#: access/transam/twophase.c:1277 #, c-format msgid "expected two-phase state data is not present in xlog at %X/%X" msgstr "i dati dello stato a due fasi attesi non sono presenti nell'xlog a %X/%X" @@ -1492,29 +1502,31 @@ msgstr "fsync del file dello stato a due fasi: %m" msgid "could not close two-phase state file: %m" msgstr "chiusura del file dello stato a due fasi fallita: %m" -#: access/transam/twophase.c:1651 +#: access/transam/twophase.c:1649 #, c-format -msgid "%u two-phase state files were written for long-running prepared transactions" -msgstr "%u file di stato a due fasi sono stati scritti per transazioni preparate di lunga durata" +msgid "%u two-phase state file was written for long-running prepared transactions" +msgid_plural "%u two-phase state files were written for long-running prepared transactions" +msgstr[0] "scritti %u file di stato a due fasi per transazioni preparate di lunga durata" +msgstr[1] "scritti %u file di stato a due fasi per transazioni preparate di lunga durata" -#: access/transam/twophase.c:1712 +#: access/transam/twophase.c:1713 #, c-format msgid "removing future two-phase state file \"%s\"" msgstr "rimozione del file dello stato a due fasi nel futuro \"%s\"" -#: access/transam/twophase.c:1728 access/transam/twophase.c:1739 -#: access/transam/twophase.c:1858 access/transam/twophase.c:1869 -#: access/transam/twophase.c:1943 +#: access/transam/twophase.c:1729 access/transam/twophase.c:1740 +#: access/transam/twophase.c:1860 access/transam/twophase.c:1871 +#: access/transam/twophase.c:1948 #, c-format msgid "removing corrupt two-phase state file \"%s\"" msgstr "rimozione del file dello stato a due fasi corrotto \"%s\"" -#: access/transam/twophase.c:1847 access/transam/twophase.c:1932 +#: access/transam/twophase.c:1849 access/transam/twophase.c:1937 #, c-format msgid "removing stale two-phase state file \"%s\"" msgstr "rimozione del file dello stato a due fasi obsoleto \"%s\"" -#: access/transam/twophase.c:1950 +#: access/transam/twophase.c:1955 #, c-format msgid "recovering prepared transaction %u" msgstr "recupero della transazione preparata %u" @@ -1558,1136 +1570,1135 @@ msgstr "il limite di sovrascrittura degli ID di transazione è %u, definito dal msgid "cannot have more than 2^32-2 commands in a transaction" msgstr "non è possibile effettuare più di 2^32-2 comandi in una transazione" -#: access/transam/xact.c:1453 +#: access/transam/xact.c:1467 #, c-format msgid "maximum number of committed subtransactions (%d) exceeded" msgstr "il numero massimo di sottotransazioni committed (%d) è stato superato" -#: access/transam/xact.c:2249 +#: access/transam/xact.c:2263 #, c-format msgid "cannot PREPARE a transaction that has operated on temporary tables" msgstr "non è possibile eseguire PREPARE in una transazione che ha operato su tabelle temporanee" -#: access/transam/xact.c:2259 +#: access/transam/xact.c:2273 #, c-format msgid "cannot PREPARE a transaction that has exported snapshots" msgstr "non è possibile eseguire PREPARE in una transazione che ha esportato snapshot" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3141 +#: access/transam/xact.c:3155 #, c-format msgid "%s cannot run inside a transaction block" msgstr "non è possibile eseguire %s all'interno di un blocco di transazione" # translator: %s represents an SQL statement name #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3151 +#: access/transam/xact.c:3165 #, c-format msgid "%s cannot run inside a subtransaction" msgstr "non è possibile eseguire %s all'interno di una sottotransazione" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3161 +#: access/transam/xact.c:3175 #, c-format msgid "%s cannot be executed from a function or multi-command string" msgstr "una funzione o una stringa multi-comando non può eseguire %s" # translator: %s represents an SQL statement name #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3232 +#: access/transam/xact.c:3246 #, c-format msgid "%s can only be used in transaction blocks" msgstr "si può usare %s solo entro blocchi di transazione" -#: access/transam/xact.c:3416 +#: access/transam/xact.c:3430 #, c-format msgid "there is already a transaction in progress" msgstr "c'è già una transazione in corso" -#: access/transam/xact.c:3584 access/transam/xact.c:3687 +#: access/transam/xact.c:3598 access/transam/xact.c:3701 #, c-format msgid "there is no transaction in progress" msgstr "non c'è alcuna transazione in corso" -#: access/transam/xact.c:3595 +#: access/transam/xact.c:3609 #, c-format msgid "cannot commit during a parallel operation" msgstr "non è possibile effettuare un commit durante un'operazione parallela" -#: access/transam/xact.c:3698 +#: access/transam/xact.c:3712 #, c-format msgid "cannot abort during a parallel operation" msgstr "non è possibile interrompere durante un'operazione parallela" -#: access/transam/xact.c:3740 +#: access/transam/xact.c:3754 #, c-format msgid "cannot define savepoints during a parallel operation" msgstr "non è possibile definire un punto di salvataggio durante un'operazione parallela" -#: access/transam/xact.c:3807 +#: access/transam/xact.c:3821 #, c-format msgid "cannot release savepoints during a parallel operation" msgstr "non è possibile rilasciare un punto di salvataggio durante un'operazione parallela" -#: access/transam/xact.c:3818 access/transam/xact.c:3870 -#: access/transam/xact.c:3876 access/transam/xact.c:3932 -#: access/transam/xact.c:3982 access/transam/xact.c:3988 +#: access/transam/xact.c:3832 access/transam/xact.c:3884 +#: access/transam/xact.c:3890 access/transam/xact.c:3946 +#: access/transam/xact.c:3996 access/transam/xact.c:4002 #, c-format msgid "no such savepoint" msgstr "punto di salvataggio inesistente" -#: access/transam/xact.c:3920 +#: access/transam/xact.c:3934 #, c-format msgid "cannot rollback to savepoints during a parallel operation" msgstr "non è possibile effettuare un rollback durante un'operazione parallela" -#: access/transam/xact.c:4048 +#: access/transam/xact.c:4062 #, c-format msgid "cannot start subtransactions during a parallel operation" msgstr "non è possibile iniziare una sub-transazione durante un'operazione parallela" -#: access/transam/xact.c:4115 +#: access/transam/xact.c:4129 #, c-format msgid "cannot commit subtransactions during a parallel operation" msgstr "non è possibile effettuare il commit di una sub-transazione durante un'operazione parallela" -#: access/transam/xact.c:4723 +#: access/transam/xact.c:4737 #, c-format msgid "cannot have more than 2^32-1 subtransactions in a transaction" msgstr "non è possibile avere più di 2^32-1 comandi in una sottotransazione" -#: access/transam/xlog.c:2272 +#: access/transam/xlog.c:2305 #, c-format msgid "could not seek in log file %s to offset %u: %m" msgstr "spostamento nel file di log %s alla posizione %u fallito: %m" -#: access/transam/xlog.c:2292 +#: access/transam/xlog.c:2325 #, c-format msgid "could not write to log file %s at offset %u, length %zu: %m" msgstr "scrittura nel file di log %s in posizione %u, lunghezza %zu fallita: %m" -#: access/transam/xlog.c:2555 +#: access/transam/xlog.c:2588 #, c-format msgid "updated min recovery point to %X/%X on timeline %u" msgstr "punto di recupero minimo aggiornato a %X/%X sulla timeline %u" -#: access/transam/xlog.c:3197 +#: access/transam/xlog.c:3230 #, c-format msgid "not enough data in file \"%s\"" msgstr "il file \"%s\" non contiene abbastanza dati" -#: access/transam/xlog.c:3338 +#: access/transam/xlog.c:3371 #, c-format msgid "could not open transaction log file \"%s\": %m" msgstr "apertura del file di log delle transazioni \"%s\" fallita: %m" -#: access/transam/xlog.c:3527 access/transam/xlog.c:5300 +#: access/transam/xlog.c:3560 access/transam/xlog.c:5345 #, c-format msgid "could not close log file %s: %m" msgstr "chiusura del file di log %s fallita: %m" -#: access/transam/xlog.c:3584 access/transam/xlogutils.c:700 -#: replication/walsender.c:2099 +#: access/transam/xlog.c:3617 access/transam/xlogutils.c:696 +#: replication/walsender.c:2096 #, c-format msgid "requested WAL segment %s has already been removed" msgstr "il segmento WAL richiesto %s è stato già rimosso" # da non tradursi # DV: perché? (trovato tradotto, tra l'altro) -#: access/transam/xlog.c:3644 access/transam/xlog.c:3719 -#: access/transam/xlog.c:3917 +#: access/transam/xlog.c:3677 access/transam/xlog.c:3752 +#: access/transam/xlog.c:3950 #, c-format msgid "could not open transaction log directory \"%s\": %m" msgstr "apertura della directory dei log delle transazioni \"%s\" fallita: %m" -#: access/transam/xlog.c:3800 +#: access/transam/xlog.c:3833 #, c-format msgid "recycled transaction log file \"%s\"" msgstr "il file di log delle transazioni \"%s\" è stato riciclato" -#: access/transam/xlog.c:3812 +#: access/transam/xlog.c:3845 #, c-format msgid "removing transaction log file \"%s\"" msgstr "eliminazione del file di log delle transazioni \"%s\"" -#: access/transam/xlog.c:3832 +#: access/transam/xlog.c:3865 #, c-format msgid "could not rename old transaction log file \"%s\": %m" msgstr "non è stato possibile rinominare il vecchio file di log delle transazioni \"%s\": %m" -#: access/transam/xlog.c:3844 +#: access/transam/xlog.c:3877 #, c-format msgid "could not remove old transaction log file \"%s\": %m" msgstr "chiusura del vecchio file di log delle transazioni \"%s\" fallita: %m" -#: access/transam/xlog.c:3877 access/transam/xlog.c:3887 +#: access/transam/xlog.c:3910 access/transam/xlog.c:3920 #, c-format msgid "required WAL directory \"%s\" does not exist" msgstr "la directory dei file WAL \"%s\" necessaria non esiste" -#: access/transam/xlog.c:3893 +#: access/transam/xlog.c:3926 #, c-format msgid "creating missing WAL directory \"%s\"" msgstr "creazione della directory dei file WAL mancante \"%s\"" -#: access/transam/xlog.c:3896 +#: access/transam/xlog.c:3929 #, c-format msgid "could not create missing directory \"%s\": %m" msgstr "creazione della directory mancante \"%s\" fallita: %m" -#: access/transam/xlog.c:3927 +#: access/transam/xlog.c:3960 #, c-format msgid "removing transaction log backup history file \"%s\"" msgstr "rimozione del file storico di backup del log delle transazioni \"%s\"" -#: access/transam/xlog.c:4008 +#: access/transam/xlog.c:4041 #, c-format msgid "unexpected timeline ID %u in log segment %s, offset %u" msgstr "ID di timeline %u inatteso nel segmento di log %s, offset %u" -#: access/transam/xlog.c:4130 +#: access/transam/xlog.c:4163 #, c-format msgid "new timeline %u is not a child of database system timeline %u" msgstr "la nuova timeline %u non è figlia della timeline %u del database" -#: access/transam/xlog.c:4144 +#: access/transam/xlog.c:4177 #, c-format msgid "new timeline %u forked off current database system timeline %u before current recovery point %X/%X" msgstr "la nuova timeline %u si è staccata dalla timeline attuale %u prima del punto di recupero corrente %X/%X" -#: access/transam/xlog.c:4163 +#: access/transam/xlog.c:4196 #, c-format msgid "new target timeline is %u" msgstr "la nuova timeline di destinazione %u" -#: access/transam/xlog.c:4243 +#: access/transam/xlog.c:4276 #, c-format msgid "could not create control file \"%s\": %m" msgstr "creazione del file di controllo \"%s\" fallita: %m" -#: access/transam/xlog.c:4254 access/transam/xlog.c:4490 +#: access/transam/xlog.c:4287 access/transam/xlog.c:4523 #, c-format msgid "could not write to control file: %m" msgstr "scrittura nel file di controllo fallita: %m" -#: access/transam/xlog.c:4260 access/transam/xlog.c:4496 +#: access/transam/xlog.c:4293 access/transam/xlog.c:4529 #, c-format msgid "could not fsync control file: %m" msgstr "fsync del file di controllo fallito: %m" -#: access/transam/xlog.c:4265 access/transam/xlog.c:4501 +#: access/transam/xlog.c:4298 access/transam/xlog.c:4534 #, c-format msgid "could not close control file: %m" msgstr "chiusura del file di controllo fallita: %m" -#: access/transam/xlog.c:4283 access/transam/xlog.c:4479 +#: access/transam/xlog.c:4316 access/transam/xlog.c:4512 #, c-format msgid "could not open control file \"%s\": %m" msgstr "apertura del file di controllo \"%s\" fallita: %m" -#: access/transam/xlog.c:4289 +#: access/transam/xlog.c:4322 #, c-format msgid "could not read from control file: %m" msgstr "lettura dal file di controllo fallita: %m" -#: access/transam/xlog.c:4302 access/transam/xlog.c:4311 -#: access/transam/xlog.c:4335 access/transam/xlog.c:4342 -#: access/transam/xlog.c:4349 access/transam/xlog.c:4354 -#: access/transam/xlog.c:4361 access/transam/xlog.c:4368 -#: access/transam/xlog.c:4375 access/transam/xlog.c:4382 -#: access/transam/xlog.c:4389 access/transam/xlog.c:4396 -#: access/transam/xlog.c:4403 access/transam/xlog.c:4412 -#: access/transam/xlog.c:4419 access/transam/xlog.c:4428 -#: access/transam/xlog.c:4435 access/transam/xlog.c:4444 -#: access/transam/xlog.c:4451 utils/init/miscinit.c:1380 +#: access/transam/xlog.c:4335 access/transam/xlog.c:4344 +#: access/transam/xlog.c:4368 access/transam/xlog.c:4375 +#: access/transam/xlog.c:4382 access/transam/xlog.c:4387 +#: access/transam/xlog.c:4394 access/transam/xlog.c:4401 +#: access/transam/xlog.c:4408 access/transam/xlog.c:4415 +#: access/transam/xlog.c:4422 access/transam/xlog.c:4429 +#: access/transam/xlog.c:4436 access/transam/xlog.c:4445 +#: access/transam/xlog.c:4452 access/transam/xlog.c:4461 +#: access/transam/xlog.c:4468 access/transam/xlog.c:4477 +#: access/transam/xlog.c:4484 utils/init/miscinit.c:1380 #, c-format msgid "database files are incompatible with server" msgstr "i file del database sono incompatibili col server" -#: access/transam/xlog.c:4303 +#: access/transam/xlog.c:4336 #, c-format msgid "The database cluster was initialized with PG_CONTROL_VERSION %d (0x%08x), but the server was compiled with PG_CONTROL_VERSION %d (0x%08x)." msgstr "Il cluster di database è stato inizializzato con PG_CONTROL_VERSION %d (0x%08x), ma il server è stato compilato con PG_CONTROL_VERSION %d (0x%08x)." -#: access/transam/xlog.c:4307 +#: access/transam/xlog.c:4340 #, c-format msgid "This could be a problem of mismatched byte ordering. It looks like you need to initdb." msgstr "Questo potrebbe essere un problema di ordinamento di byte che non combacia. Sembra sia necessario eseguire initdb." -#: access/transam/xlog.c:4312 +#: access/transam/xlog.c:4345 #, c-format msgid "The database cluster was initialized with PG_CONTROL_VERSION %d, but the server was compiled with PG_CONTROL_VERSION %d." msgstr "Il cluster di database è stato inizializzato con PG_CONTROL_VERSION %d, ma il server è stato compilato con PG_CONTROL_VERSION %d." -#: access/transam/xlog.c:4315 access/transam/xlog.c:4339 -#: access/transam/xlog.c:4346 access/transam/xlog.c:4351 +#: access/transam/xlog.c:4348 access/transam/xlog.c:4372 +#: access/transam/xlog.c:4379 access/transam/xlog.c:4384 #, c-format msgid "It looks like you need to initdb." msgstr "Sembra sia necessario eseguire initdb." -#: access/transam/xlog.c:4326 +#: access/transam/xlog.c:4359 #, c-format msgid "incorrect checksum in control file" msgstr "il checksum nel file di controllo non è corretto" -#: access/transam/xlog.c:4336 +#: access/transam/xlog.c:4369 #, c-format msgid "The database cluster was initialized with CATALOG_VERSION_NO %d, but the server was compiled with CATALOG_VERSION_NO %d." msgstr "Il cluster di database è stato inizializzato con CATALOG_VERSION_NO %d, ma il server è stato compilato con CATALOG_VERSION_NO %d." -#: access/transam/xlog.c:4343 +#: access/transam/xlog.c:4376 #, c-format msgid "The database cluster was initialized with MAXALIGN %d, but the server was compiled with MAXALIGN %d." msgstr "Il cluster di database è stato inizializzato con MAXALIGN %d, ma il server è stato compilato con MAXALIGN %d." -#: access/transam/xlog.c:4350 +#: access/transam/xlog.c:4383 #, c-format msgid "The database cluster appears to use a different floating-point number format than the server executable." msgstr "Il cluster di database sta usando un formato per i numeri in virgola mobile diverso da quello usato dall'eseguibile del server." -#: access/transam/xlog.c:4355 +#: access/transam/xlog.c:4388 #, c-format msgid "The database cluster was initialized with BLCKSZ %d, but the server was compiled with BLCKSZ %d." msgstr "Il cluster di database è stato inizializzato con BLCKSZ %d, ma il server è stato compilato con BLCKSZ %d." -#: access/transam/xlog.c:4358 access/transam/xlog.c:4365 -#: access/transam/xlog.c:4372 access/transam/xlog.c:4379 -#: access/transam/xlog.c:4386 access/transam/xlog.c:4393 -#: access/transam/xlog.c:4400 access/transam/xlog.c:4407 -#: access/transam/xlog.c:4415 access/transam/xlog.c:4422 -#: access/transam/xlog.c:4431 access/transam/xlog.c:4438 -#: access/transam/xlog.c:4447 access/transam/xlog.c:4454 +#: access/transam/xlog.c:4391 access/transam/xlog.c:4398 +#: access/transam/xlog.c:4405 access/transam/xlog.c:4412 +#: access/transam/xlog.c:4419 access/transam/xlog.c:4426 +#: access/transam/xlog.c:4433 access/transam/xlog.c:4440 +#: access/transam/xlog.c:4448 access/transam/xlog.c:4455 +#: access/transam/xlog.c:4464 access/transam/xlog.c:4471 +#: access/transam/xlog.c:4480 access/transam/xlog.c:4487 #, c-format msgid "It looks like you need to recompile or initdb." msgstr "Si consiglia di ricompilare il sistema o di eseguire initdb." -#: access/transam/xlog.c:4362 +#: access/transam/xlog.c:4395 #, c-format msgid "The database cluster was initialized with RELSEG_SIZE %d, but the server was compiled with RELSEG_SIZE %d." msgstr "Il cluster di database è stato inizializzato con RELSEG_SIZE %d, ma il server è stato compilato con RELSEG_SIZE %d." -#: access/transam/xlog.c:4369 +#: access/transam/xlog.c:4402 #, c-format msgid "The database cluster was initialized with XLOG_BLCKSZ %d, but the server was compiled with XLOG_BLCKSZ %d." msgstr "Il cluster di database è stato inizializzato con XLOG_BLOCKSZ %d, ma il server è stato compilato con XLOG_BLOCKSZ %d." -#: access/transam/xlog.c:4376 +#: access/transam/xlog.c:4409 #, c-format msgid "The database cluster was initialized with XLOG_SEG_SIZE %d, but the server was compiled with XLOG_SEG_SIZE %d." msgstr "Il cluster di database è stato inizializzato con XLOG_SEG_SIZE %d, ma il server è stato compilato con XLOG_SEG_SIZE %d." -#: access/transam/xlog.c:4383 +#: access/transam/xlog.c:4416 #, c-format msgid "The database cluster was initialized with NAMEDATALEN %d, but the server was compiled with NAMEDATALEN %d." msgstr "Il cluster di database è stato inizializzato con NAMEDATALEN %d, ma il server è stato compilato con NAMEDATALEN %d." -#: access/transam/xlog.c:4390 +#: access/transam/xlog.c:4423 #, c-format msgid "The database cluster was initialized with INDEX_MAX_KEYS %d, but the server was compiled with INDEX_MAX_KEYS %d." msgstr "Il cluster di database è stato inizializzato con INDEX_MAX_KEYS %d, ma il server è stato compilato con INDEX_MAX_KEYS %d." -#: access/transam/xlog.c:4397 +#: access/transam/xlog.c:4430 #, c-format msgid "The database cluster was initialized with TOAST_MAX_CHUNK_SIZE %d, but the server was compiled with TOAST_MAX_CHUNK_SIZE %d." msgstr "Il cluster di database è stato inizializzato con TOAST_MAX_CHUNK_SIZE %d, ma il server è stato compilato con TOAST_MAX_CHUNK_SIZE %d." -#: access/transam/xlog.c:4404 +#: access/transam/xlog.c:4437 #, c-format msgid "The database cluster was initialized with LOBLKSIZE %d, but the server was compiled with LOBLKSIZE %d." msgstr "Il cluster di database è stato inizializzato con LOBLKSIZE %d, ma il server è stato compilato con LOBLKSIZE %d." -#: access/transam/xlog.c:4413 +#: access/transam/xlog.c:4446 #, c-format msgid "The database cluster was initialized without HAVE_INT64_TIMESTAMP but the server was compiled with HAVE_INT64_TIMESTAMP." msgstr "Il cluster di database è stato inizializzato senza HAVE_INT64_TIMESTAMP ma il server è stato compilato con HAVE_INT64_TIMESTAMP." -#: access/transam/xlog.c:4420 +#: access/transam/xlog.c:4453 #, c-format msgid "The database cluster was initialized with HAVE_INT64_TIMESTAMP but the server was compiled without HAVE_INT64_TIMESTAMP." msgstr "Il cluster di database è stato inizializzato con HAVE_INT64_TIMESTAMP ma il server è stato compilato senza HAVE_INT64_TIMESTAMP." -#: access/transam/xlog.c:4429 +#: access/transam/xlog.c:4462 #, c-format msgid "The database cluster was initialized without USE_FLOAT4_BYVAL but the server was compiled with USE_FLOAT4_BYVAL." msgstr "Il cluster di database è stato inizializzato senza USE_FLOAT4_BYVAL, ma il server è stato compilato con USE_FLOAT4_BYVAL." -#: access/transam/xlog.c:4436 +#: access/transam/xlog.c:4469 #, c-format msgid "The database cluster was initialized with USE_FLOAT4_BYVAL but the server was compiled without USE_FLOAT4_BYVAL." msgstr "Il cluster di database è stato inizializzato con USE_FLOAT4_BYVAL, ma il server è stato compilato senza USE_FLOAT4_BYVAL." -#: access/transam/xlog.c:4445 +#: access/transam/xlog.c:4478 #, c-format msgid "The database cluster was initialized without USE_FLOAT8_BYVAL but the server was compiled with USE_FLOAT8_BYVAL." msgstr "Il cluster di database è stato inizializzato senza USE_FLOAT8_BYVAL, ma il server è stato compilato con USE_FLOAT8_BYVAL." -#: access/transam/xlog.c:4452 +#: access/transam/xlog.c:4485 #, c-format msgid "The database cluster was initialized with USE_FLOAT8_BYVAL but the server was compiled without USE_FLOAT8_BYVAL." msgstr "Il cluster di database è stato inizializzato con USE_FLOAT8_BYVAL, ma il server è stato compilato senza USE_FLOAT8_BYVAL." -#: access/transam/xlog.c:4875 +#: access/transam/xlog.c:4906 #, c-format msgid "could not write bootstrap transaction log file: %m" msgstr "scrittura nel file di log della transazione di bootstrap fallita: %m" -#: access/transam/xlog.c:4881 +#: access/transam/xlog.c:4912 #, c-format msgid "could not fsync bootstrap transaction log file: %m" msgstr "fsync del file di log della transazione di bootstrap fallito: %m" -#: access/transam/xlog.c:4886 +#: access/transam/xlog.c:4917 #, c-format msgid "could not close bootstrap transaction log file: %m" msgstr "chiusura del file di log della transazione di bootstrap fallita: %m" -#: access/transam/xlog.c:4961 +#: access/transam/xlog.c:4992 #, c-format msgid "could not open recovery command file \"%s\": %m" msgstr "apertura del file di ripristino \"%s\" fallita: %m" -#: access/transam/xlog.c:5007 access/transam/xlog.c:5090 +#: access/transam/xlog.c:5038 access/transam/xlog.c:5123 #, c-format msgid "invalid value for recovery parameter \"%s\": \"%s\"" msgstr "valore non valido per il parametro di ripristino \"%s\": \"%s\"" -#: access/transam/xlog.c:5010 +#: access/transam/xlog.c:5041 #, c-format msgid "Valid values are \"pause\", \"promote\", and \"shutdown\"." msgstr "I valori validi sono \"pause\", \"promote\" e \"shutdown\"." # da non tradurre # DV: perché (già tradotto peraltro) -#: access/transam/xlog.c:5029 +#: access/transam/xlog.c:5061 #, c-format msgid "recovery_target_timeline is not a valid number: \"%s\"" msgstr "recovery_target_timeline non ha un valore numerico valido: \"%s\"" -#: access/transam/xlog.c:5045 +#: access/transam/xlog.c:5078 #, c-format msgid "recovery_target_xid is not a valid number: \"%s\"" msgstr "recovery_target_xid non ha un valore numerico valido: \"%s\"" -#: access/transam/xlog.c:5076 +#: access/transam/xlog.c:5109 #, c-format msgid "recovery_target_name is too long (maximum %d characters)" msgstr "il recovery_target_name è troppo lungo (massimo %d caratteri)" -#: access/transam/xlog.c:5093 +#: access/transam/xlog.c:5126 #, c-format msgid "The only allowed value is \"immediate\"." msgstr "Il solo valore permesso è \"immediate\"." -#: access/transam/xlog.c:5106 access/transam/xlog.c:5117 -#: commands/extension.c:533 commands/extension.c:541 utils/misc/guc.c:5637 +#: access/transam/xlog.c:5139 access/transam/xlog.c:5150 +#: commands/extension.c:534 commands/extension.c:542 utils/misc/guc.c:5640 #, c-format msgid "parameter \"%s\" requires a Boolean value" msgstr "il parametro \"%s\" richiede un valore booleano" -#: access/transam/xlog.c:5152 +#: access/transam/xlog.c:5185 #, c-format msgid "parameter \"%s\" requires a temporal value" msgstr "il parametro \"%s\" richiede un valore temporale" -#: access/transam/xlog.c:5154 catalog/dependency.c:991 -#: catalog/dependency.c:992 catalog/dependency.c:998 catalog/dependency.c:999 -#: catalog/dependency.c:1010 catalog/dependency.c:1011 -#: catalog/objectaddress.c:1100 commands/tablecmds.c:795 -#: commands/tablecmds.c:9447 commands/user.c:1045 commands/view.c:482 -#: libpq/auth.c:304 storage/lmgr/deadlock.c:1139 storage/lmgr/proc.c:1276 -#: utils/adt/acl.c:5281 utils/misc/guc.c:5659 utils/misc/guc.c:5752 -#: utils/misc/guc.c:9686 utils/misc/guc.c:9720 utils/misc/guc.c:9754 -#: utils/misc/guc.c:9788 utils/misc/guc.c:9823 +#: access/transam/xlog.c:5187 catalog/dependency.c:990 catalog/dependency.c:991 +#: catalog/dependency.c:997 catalog/dependency.c:998 catalog/dependency.c:1009 +#: catalog/dependency.c:1010 catalog/objectaddress.c:1100 +#: commands/tablecmds.c:796 commands/tablecmds.c:9543 commands/user.c:1045 +#: commands/view.c:499 libpq/auth.c:307 replication/syncrep.c:919 +#: storage/lmgr/deadlock.c:1139 storage/lmgr/proc.c:1278 utils/adt/acl.c:5281 +#: utils/misc/guc.c:5662 utils/misc/guc.c:5755 utils/misc/guc.c:9708 +#: utils/misc/guc.c:9742 utils/misc/guc.c:9776 utils/misc/guc.c:9810 +#: utils/misc/guc.c:9845 #, c-format msgid "%s" msgstr "%s" -#: access/transam/xlog.c:5160 +#: access/transam/xlog.c:5194 #, c-format msgid "unrecognized recovery parameter \"%s\"" msgstr "parametro di ripristino \"%s\" sconosciuto" -#: access/transam/xlog.c:5171 +#: access/transam/xlog.c:5205 #, c-format msgid "recovery command file \"%s\" specified neither primary_conninfo nor restore_command" msgstr "il file dei comandi di ripristino \"%s\" non specifica né primary_conninfo né restore_command" -#: access/transam/xlog.c:5173 +#: access/transam/xlog.c:5207 #, c-format msgid "The database server will regularly poll the pg_xlog subdirectory to check for files placed there." msgstr "Il server database ispezionerà regolarmente la sottodirectory pg_xlog per controllare se vi vengono aggiunti dei file." -#: access/transam/xlog.c:5179 +#: access/transam/xlog.c:5214 #, c-format msgid "recovery command file \"%s\" must specify restore_command when standby mode is not enabled" msgstr "il file dei comandi di ripristino \"%s\" deve specificare restore_command quando la modalità standby non è abilitata" -#: access/transam/xlog.c:5209 +#: access/transam/xlog.c:5235 +#, c-format +msgid "standby mode is not supported by single-user servers" +msgstr "la modalità di standby non è supportata per i server a utente singolo" + +#: access/transam/xlog.c:5254 #, c-format msgid "recovery target timeline %u does not exist" msgstr "la timeline destinazione di recupero %u non esiste" -#: access/transam/xlog.c:5330 +#: access/transam/xlog.c:5375 #, c-format msgid "archive recovery complete" msgstr "il ripristino dell'archivio è stato completato" -#: access/transam/xlog.c:5389 access/transam/xlog.c:5617 +#: access/transam/xlog.c:5434 access/transam/xlog.c:5662 #, c-format msgid "recovery stopping after reaching consistency" msgstr "il ripristino è stato interrotto dopo aver raggiunto la consistenza" -#: access/transam/xlog.c:5477 +#: access/transam/xlog.c:5522 #, c-format msgid "recovery stopping before commit of transaction %u, time %s" msgstr "il ripristino è stato interrotto prima del commit della transazione %u, orario %s" -#: access/transam/xlog.c:5484 +#: access/transam/xlog.c:5529 #, c-format msgid "recovery stopping before abort of transaction %u, time %s" msgstr "il ripristino è stato interrotto prima dell'abort della transazione %u alle %s" -#: access/transam/xlog.c:5529 +#: access/transam/xlog.c:5574 #, c-format msgid "recovery stopping at restore point \"%s\", time %s" msgstr "il ripristino è stato interrotto al punto di ripristino \"%s\" alle %s" -#: access/transam/xlog.c:5597 +#: access/transam/xlog.c:5642 #, c-format msgid "recovery stopping after commit of transaction %u, time %s" msgstr "il ripristino è stato interrotto dopo il commit della transazione %u alle %s" -#: access/transam/xlog.c:5605 +#: access/transam/xlog.c:5650 #, c-format msgid "recovery stopping after abort of transaction %u, time %s" msgstr "il ripristino è stato interrotto dopo l'abort della transazione %u alle %s" -#: access/transam/xlog.c:5644 +#: access/transam/xlog.c:5689 #, c-format msgid "recovery has paused" msgstr "ripristino in pausa" -#: access/transam/xlog.c:5645 +#: access/transam/xlog.c:5690 #, c-format msgid "Execute pg_xlog_replay_resume() to continue." msgstr "Esegui pg_xlog_replay_resume() per continuare." -#: access/transam/xlog.c:5852 +#: access/transam/xlog.c:5897 #, c-format msgid "hot standby is not possible because %s = %d is a lower setting than on the master server (its value was %d)" msgstr "l'hot standby non è possibile perché %s = %d è un'impostazione inferiore a quella del server master (il cui valore era %d)" -#: access/transam/xlog.c:5878 +#: access/transam/xlog.c:5923 #, c-format msgid "WAL was generated with wal_level=minimal, data may be missing" msgstr "il WAL è stato generato con wal_level=minimal, alcuni dati potrebbero mancare" -#: access/transam/xlog.c:5879 +#: access/transam/xlog.c:5924 #, c-format msgid "This happens if you temporarily set wal_level=minimal without taking a new base backup." msgstr "Questo avviene se imposti temporaneamente wal_level=minimal senza effettuare un nuovo backup di base." -#: access/transam/xlog.c:5890 +#: access/transam/xlog.c:5935 #, c-format msgid "hot standby is not possible because wal_level was not set to \"replica\" or higher on the master server" msgstr "l'hot standby non è possibile perché il wal_level non è impostato a \"replica\" o superiore nel server master" -#: access/transam/xlog.c:5891 +#: access/transam/xlog.c:5936 #, c-format msgid "Either set wal_level to \"replica\" on the master, or turn off hot_standby here." msgstr "Imposta il wal_level a \"replica\" sul master oppure disattiva hot_standby qui." -#: access/transam/xlog.c:5948 +#: access/transam/xlog.c:5993 #, c-format msgid "control file contains invalid data" msgstr "il file di controllo contiene dati non validi" -#: access/transam/xlog.c:5954 +#: access/transam/xlog.c:5999 #, c-format msgid "database system was shut down at %s" msgstr "il database è stato arrestato alle %s" -#: access/transam/xlog.c:5959 +#: access/transam/xlog.c:6004 #, c-format msgid "database system was shut down in recovery at %s" msgstr "il database è stato arrestato durante il ripristino alle %s" -#: access/transam/xlog.c:5963 +#: access/transam/xlog.c:6008 #, c-format msgid "database system shutdown was interrupted; last known up at %s" msgstr "l'arresto del database è stato interrotto; l'ultimo segno di vita risale alle %s" -#: access/transam/xlog.c:5967 +#: access/transam/xlog.c:6012 #, c-format msgid "database system was interrupted while in recovery at %s" msgstr "il database è stato interrotto alle %s mentre era in fase di ripristino" -#: access/transam/xlog.c:5969 +#: access/transam/xlog.c:6014 #, c-format msgid "This probably means that some data is corrupted and you will have to use the last backup for recovery." msgstr "Questo probabilmente significa che alcuni dati sono corrotti e dovrai usare il backup più recente per il ripristino." -#: access/transam/xlog.c:5973 +#: access/transam/xlog.c:6018 #, c-format msgid "database system was interrupted while in recovery at log time %s" msgstr "il database è stato interrotto all'orario di log %s mentre era in fase di ripristino" -#: access/transam/xlog.c:5975 +#: access/transam/xlog.c:6020 #, c-format msgid "If this has occurred more than once some data might be corrupted and you might need to choose an earlier recovery target." msgstr "Se ciò è avvenuto più di una volta, alcuni dati potrebbero essere corrotti e potresti dover scegliere una destinazione di ripristino precedente." -#: access/transam/xlog.c:5979 +#: access/transam/xlog.c:6024 #, c-format msgid "database system was interrupted; last known up at %s" msgstr "il database è stato interrotto; l'ultimo segno di vita risale alle %s" -#: access/transam/xlog.c:6035 +#: access/transam/xlog.c:6080 #, c-format msgid "entering standby mode" msgstr "inizio modalità standby" -#: access/transam/xlog.c:6038 +#: access/transam/xlog.c:6083 #, c-format msgid "starting point-in-time recovery to XID %u" msgstr "avvio del ripristino point-in-time allo XID %u" -#: access/transam/xlog.c:6042 +#: access/transam/xlog.c:6087 #, c-format msgid "starting point-in-time recovery to %s" msgstr "avvio del ripristino point-in-time alle %s" -#: access/transam/xlog.c:6046 +#: access/transam/xlog.c:6091 #, c-format msgid "starting point-in-time recovery to \"%s\"" msgstr "avvio del ripristino point-in-time a \"%s\"" -#: access/transam/xlog.c:6050 +#: access/transam/xlog.c:6095 #, c-format msgid "starting point-in-time recovery to earliest consistent point" msgstr "avvio del ripristino point-in-time al precedente punto consistente" -#: access/transam/xlog.c:6053 +#: access/transam/xlog.c:6098 #, c-format msgid "starting archive recovery" msgstr "avvio del ripristino dell'archivio" -#: access/transam/xlog.c:6097 access/transam/xlog.c:6225 +#: access/transam/xlog.c:6142 access/transam/xlog.c:6270 #, c-format msgid "checkpoint record is at %X/%X" msgstr "il record di checkpoint si trova in %X/%X" -#: access/transam/xlog.c:6111 +#: access/transam/xlog.c:6156 #, c-format msgid "could not find redo location referenced by checkpoint record" msgstr "localizzazione della posizione di redo referenziata dal record di checkpoint fallita" -#: access/transam/xlog.c:6112 access/transam/xlog.c:6119 +#: access/transam/xlog.c:6157 access/transam/xlog.c:6164 #, c-format msgid "If you are not restoring from a backup, try removing the file \"%s/backup_label\"." msgstr "Se non si sta effettuando il ripristino da backup, prova a rimuovere il file \"%s/backup_label\"." -#: access/transam/xlog.c:6118 +#: access/transam/xlog.c:6163 #, c-format msgid "could not locate required checkpoint record" msgstr "localizzazione del record di checkpoint richiesto fallita" -#: access/transam/xlog.c:6144 commands/tablespace.c:645 +#: access/transam/xlog.c:6189 commands/tablespace.c:641 #, c-format msgid "could not create symbolic link \"%s\": %m" msgstr "creazione del link simbolico \"%s\" fallita: %m" -#: access/transam/xlog.c:6176 +#: access/transam/xlog.c:6221 access/transam/xlog.c:6227 #, c-format msgid "ignoring file \"%s\" because no file \"%s\" exists" msgstr "il file \"%s\" verrà ignorato perché il file \"%s\" non esiste" -#: access/transam/xlog.c:6178 access/transam/xlog.c:10918 +#: access/transam/xlog.c:6223 access/transam/xlog.c:11054 #, c-format msgid "File \"%s\" was renamed to \"%s\"." msgstr "Il file \"%s\" è stato rinominato in \"%s\"." -#: access/transam/xlog.c:6182 -#, c-format -msgid "ignoring \"%s\" file because no \"%s\" file exists" -msgstr "\"%s\" verrà ignorato perché il file \"%s\" non esiste" - -#: access/transam/xlog.c:6184 +#: access/transam/xlog.c:6229 #, c-format msgid "Could not rename file \"%s\" to \"%s\": %m." msgstr "Cambio del nome del file da \"%s\" a \"%s\" fallito: %m." -#: access/transam/xlog.c:6235 access/transam/xlog.c:6250 +#: access/transam/xlog.c:6280 access/transam/xlog.c:6295 #, c-format msgid "could not locate a valid checkpoint record" msgstr "localizzazione di un record di checkpoint valido fallita" -#: access/transam/xlog.c:6244 +#: access/transam/xlog.c:6289 #, c-format msgid "using previous checkpoint record at %X/%X" msgstr "si sta usando il precedente record di checkpoint in %X/%X" -#: access/transam/xlog.c:6288 +#: access/transam/xlog.c:6333 #, c-format msgid "requested timeline %u is not a child of this server's history" msgstr "la timeline richiesta %u non è figlia della storia di questo server" -#: access/transam/xlog.c:6290 +#: access/transam/xlog.c:6335 #, c-format msgid "Latest checkpoint is at %X/%X on timeline %u, but in the history of the requested timeline, the server forked off from that timeline at %X/%X." msgstr "L'ultimo checkpoint è a %X/%X sulla timeline %u, ma nella storia della timeline richiesta, il server si è separato da quella timeline a %X/%X." -#: access/transam/xlog.c:6306 +#: access/transam/xlog.c:6351 #, c-format msgid "requested timeline %u does not contain minimum recovery point %X/%X on timeline %u" msgstr "la timeline richiesta %u non contiene il punto di recupero minimo %X/%X sulla timeline %u" -#: access/transam/xlog.c:6337 +#: access/transam/xlog.c:6382 #, c-format msgid "invalid next transaction ID" msgstr "l'ID della prossima transazione non è valido" -#: access/transam/xlog.c:6420 +#: access/transam/xlog.c:6465 #, c-format msgid "invalid redo in checkpoint record" msgstr "il redo nel record di checkpoint non è valido" -#: access/transam/xlog.c:6431 +#: access/transam/xlog.c:6476 #, c-format msgid "invalid redo record in shutdown checkpoint" msgstr "record di redo non valido nel checkpoint di arresto" -#: access/transam/xlog.c:6459 +#: access/transam/xlog.c:6504 #, c-format msgid "database system was not properly shut down; automatic recovery in progress" msgstr "il database non è stato arrestato correttamente; ripristino automatico in corso" -#: access/transam/xlog.c:6463 +#: access/transam/xlog.c:6508 #, c-format msgid "crash recovery starts in timeline %u and has target timeline %u" msgstr "il recupero dal crash comincia nella timeline %u e si conclude nella timeline %u" -#: access/transam/xlog.c:6507 +#: access/transam/xlog.c:6552 #, c-format msgid "backup_label contains data inconsistent with control file" msgstr "backup_label contiene dati non consistenti col file di controllo" -#: access/transam/xlog.c:6508 +#: access/transam/xlog.c:6553 #, c-format msgid "This means that the backup is corrupted and you will have to use another backup for recovery." msgstr "Questo vuol dire che il backup è corrotto e sarà necessario usare un altro backup per il ripristino." -#: access/transam/xlog.c:6582 +#: access/transam/xlog.c:6627 #, c-format msgid "initializing for hot standby" msgstr "inizializzazione per l'hot standby" -#: access/transam/xlog.c:6714 +#: access/transam/xlog.c:6759 #, c-format msgid "redo starts at %X/%X" msgstr "il redo inizia in %X/%X" -#: access/transam/xlog.c:6939 +#: access/transam/xlog.c:6984 #, c-format msgid "requested recovery stop point is before consistent recovery point" msgstr "lo stop point di ripristino è posto prima di un punto di ripristino consistente" -#: access/transam/xlog.c:6977 +#: access/transam/xlog.c:7022 #, c-format msgid "redo done at %X/%X" msgstr "redo concluso in %X/%X" -#: access/transam/xlog.c:6982 access/transam/xlog.c:8906 +#: access/transam/xlog.c:7027 access/transam/xlog.c:8975 #, c-format msgid "last completed transaction was at log time %s" msgstr "l'ultima transazione è stata completata all'orario di log %s" -#: access/transam/xlog.c:6991 +#: access/transam/xlog.c:7036 #, c-format msgid "redo is not required" msgstr "redo non richiesto" -#: access/transam/xlog.c:7066 access/transam/xlog.c:7070 +#: access/transam/xlog.c:7111 access/transam/xlog.c:7115 #, c-format msgid "WAL ends before end of online backup" msgstr "il WAL termina prima della fine del backup online" -#: access/transam/xlog.c:7067 +#: access/transam/xlog.c:7112 #, c-format msgid "All WAL generated while online backup was taken must be available at recovery." msgstr "Tutti i file WAL generati mentre il backup online veniva effettuato devono essere disponibili al momento del ripristino." -#: access/transam/xlog.c:7071 +#: access/transam/xlog.c:7116 #, c-format msgid "Online backup started with pg_start_backup() must be ended with pg_stop_backup(), and all WAL up to that point must be available at recovery." msgstr "Un backup online iniziato con pg_start_backup() deve essere terminato con pg_stop_backup(), e tutti i file WAL fino a quel punto devono essere disponibili per il ripristino." -#: access/transam/xlog.c:7074 +#: access/transam/xlog.c:7119 #, c-format msgid "WAL ends before consistent recovery point" msgstr "il WAL termina prima di un punto di ripristino consistente" -#: access/transam/xlog.c:7101 +#: access/transam/xlog.c:7146 #, c-format msgid "selected new timeline ID: %u" msgstr "l'ID della nuova timeline selezionata è %u" -#: access/transam/xlog.c:7512 +#: access/transam/xlog.c:7557 #, c-format msgid "consistent recovery state reached at %X/%X" msgstr "è stato raggiunto uno stato di ripristino consistente a %X/%X" -#: access/transam/xlog.c:7703 +#: access/transam/xlog.c:7748 #, c-format msgid "invalid primary checkpoint link in control file" msgstr "il link nel file di controllo al checkpoint primario non è valido" -#: access/transam/xlog.c:7707 +#: access/transam/xlog.c:7752 #, c-format msgid "invalid secondary checkpoint link in control file" msgstr "il link nel file di controllo al checkpoint secondario non è valido" -#: access/transam/xlog.c:7711 +#: access/transam/xlog.c:7756 #, c-format msgid "invalid checkpoint link in backup_label file" msgstr "il link al checkpoint nel file backup_label non è valido" -#: access/transam/xlog.c:7728 +#: access/transam/xlog.c:7773 #, c-format msgid "invalid primary checkpoint record" msgstr "il record del checkpoint primario non è valido" -#: access/transam/xlog.c:7732 +#: access/transam/xlog.c:7777 #, c-format msgid "invalid secondary checkpoint record" msgstr "il record del checkpoint secondario non è valido" -#: access/transam/xlog.c:7736 +#: access/transam/xlog.c:7781 #, c-format msgid "invalid checkpoint record" msgstr "il record del checkpoint non è valido" -#: access/transam/xlog.c:7747 +#: access/transam/xlog.c:7792 #, c-format msgid "invalid resource manager ID in primary checkpoint record" msgstr "l'ID del resource manager nel record del checkpoint primario non è valido" -#: access/transam/xlog.c:7751 +#: access/transam/xlog.c:7796 #, c-format msgid "invalid resource manager ID in secondary checkpoint record" msgstr "l'ID del resource manager nel record del checkpoint secondario non è valido" -#: access/transam/xlog.c:7755 +#: access/transam/xlog.c:7800 #, c-format msgid "invalid resource manager ID in checkpoint record" msgstr "l'ID del resource manager nel record del checkpoint non è valido" -#: access/transam/xlog.c:7767 +#: access/transam/xlog.c:7812 #, c-format msgid "invalid xl_info in primary checkpoint record" msgstr "l'xl_info nel record del checkpoint primario non è valido" -#: access/transam/xlog.c:7771 +#: access/transam/xlog.c:7816 #, c-format msgid "invalid xl_info in secondary checkpoint record" msgstr "l'xl_info nel record del checkpoint secondario non è valido" -#: access/transam/xlog.c:7775 +#: access/transam/xlog.c:7820 #, c-format msgid "invalid xl_info in checkpoint record" msgstr "l'xl_info nel record del checkpoint non è valido" -#: access/transam/xlog.c:7786 +#: access/transam/xlog.c:7831 #, c-format msgid "invalid length of primary checkpoint record" msgstr "la lunghezza del record del checkpoint primario non è valida" -#: access/transam/xlog.c:7790 +#: access/transam/xlog.c:7835 #, c-format msgid "invalid length of secondary checkpoint record" msgstr "la lunghezza del record del checkpoint secondario non è valida" -#: access/transam/xlog.c:7794 +#: access/transam/xlog.c:7839 #, c-format msgid "invalid length of checkpoint record" msgstr "la lunghezza del record del checkpoint non è valida" -#: access/transam/xlog.c:7962 +#: access/transam/xlog.c:8007 #, c-format msgid "shutting down" msgstr "arresto in corso" -#: access/transam/xlog.c:8475 +#: access/transam/xlog.c:8520 #, c-format msgid "concurrent transaction log activity while database system is shutting down" msgstr "rilevata attività concorrente sul log delle transazioni durante l'arresto del database" -#: access/transam/xlog.c:8726 +#: access/transam/xlog.c:8774 #, c-format msgid "skipping restartpoint, recovery has already ended" msgstr "si tralascia il restartpoint, il ripristino è ormai terminato" -#: access/transam/xlog.c:8749 +#: access/transam/xlog.c:8797 #, c-format msgid "skipping restartpoint, already performed at %X/%X" msgstr "si tralascia il restartpoint, già eseguito in %X/%X" -#: access/transam/xlog.c:8904 +#: access/transam/xlog.c:8973 #, c-format msgid "recovery restart point at %X/%X" msgstr "punto di avvio del ripristino in %X/%X" -#: access/transam/xlog.c:9037 +#: access/transam/xlog.c:9106 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "punto di ripristino \"%s\" creato in %X/%X" -#: access/transam/xlog.c:9167 +#: access/transam/xlog.c:9236 #, c-format msgid "unexpected previous timeline ID %u (current timeline ID %u) in checkpoint record" msgstr "timeline precedente con ID %u non prevista (l'ID della timeline corrente è %u) nel record di checkpoint" -#: access/transam/xlog.c:9176 +#: access/transam/xlog.c:9245 #, c-format msgid "unexpected timeline ID %u (after %u) in checkpoint record" msgstr "timeline ID %u imprevista (dopo %u) nel record di checkpoint" -#: access/transam/xlog.c:9192 +#: access/transam/xlog.c:9261 #, c-format msgid "unexpected timeline ID %u in checkpoint record, before reaching minimum recovery point %X/%X on timeline %u" msgstr "timeline ID %u imprevista nel record di checkpoint, prima di raggiungere il punto di recupero minimo %X/%X sulla timeline %u" -#: access/transam/xlog.c:9263 +#: access/transam/xlog.c:9332 #, c-format msgid "online backup was canceled, recovery cannot continue" msgstr "il backup online è stato annullato, il ripristino non può continuare" -#: access/transam/xlog.c:9319 access/transam/xlog.c:9366 -#: access/transam/xlog.c:9389 +#: access/transam/xlog.c:9388 access/transam/xlog.c:9435 +#: access/transam/xlog.c:9458 #, c-format msgid "unexpected timeline ID %u (should be %u) in checkpoint record" msgstr "l'ID della timeline %u (che dovrebbe essere %u) non era prevista nel record di checkpoint" -#: access/transam/xlog.c:9664 +#: access/transam/xlog.c:9733 #, c-format msgid "could not fsync log segment %s: %m" msgstr "fsync del segmento di log %s fallito: %m" -#: access/transam/xlog.c:9688 +#: access/transam/xlog.c:9757 #, c-format msgid "could not fsync log file %s: %m" msgstr "fsync del file di log %s fallito: %m" -#: access/transam/xlog.c:9696 +#: access/transam/xlog.c:9765 #, c-format msgid "could not fsync write-through log file %s: %m" msgstr "fsync write-through del file di log %s fallito: %m" -#: access/transam/xlog.c:9705 +#: access/transam/xlog.c:9774 #, c-format msgid "could not fdatasync log file %s: %m" msgstr "fdatasync del file di log %s fallito: %m" -#: access/transam/xlog.c:9796 access/transam/xlog.c:10267 -#: access/transam/xlogfuncs.c:295 access/transam/xlogfuncs.c:322 -#: access/transam/xlogfuncs.c:361 access/transam/xlogfuncs.c:382 -#: access/transam/xlogfuncs.c:403 +#: access/transam/xlog.c:9865 access/transam/xlog.c:10382 +#: access/transam/xlogfuncs.c:289 access/transam/xlogfuncs.c:316 +#: access/transam/xlogfuncs.c:355 access/transam/xlogfuncs.c:376 +#: access/transam/xlogfuncs.c:397 #, c-format msgid "WAL control functions cannot be executed during recovery." msgstr "le funzioni di controllo WAL non possono essere eseguite durante il ripristino." -#: access/transam/xlog.c:9805 access/transam/xlog.c:10276 +#: access/transam/xlog.c:9874 access/transam/xlog.c:10391 #, c-format msgid "WAL level not sufficient for making an online backup" msgstr "livello WAL non sufficiente per creare un backup online" -#: access/transam/xlog.c:9806 access/transam/xlog.c:10277 -#: access/transam/xlogfuncs.c:328 +#: access/transam/xlog.c:9875 access/transam/xlog.c:10392 +#: access/transam/xlogfuncs.c:322 #, c-format msgid "wal_level must be set to \"replica\" or \"logical\" at server start." msgstr "Il wal_level deve essere impostato a \"replica\" o \"logical\" all'avvio del server." -#: access/transam/xlog.c:9811 +#: access/transam/xlog.c:9880 #, c-format msgid "backup label too long (max %d bytes)" msgstr "etichetta di backup troppo lunga (massimo %d byte)" -#: access/transam/xlog.c:9843 access/transam/xlog.c:10115 -#: access/transam/xlog.c:10153 +#: access/transam/xlog.c:9917 access/transam/xlog.c:10189 +#: access/transam/xlog.c:10227 #, c-format msgid "a backup is already in progress" msgstr "c'è già un backup in corso" -#: access/transam/xlog.c:9844 +#: access/transam/xlog.c:9918 #, c-format msgid "Run pg_stop_backup() and try again." msgstr "Esegui pg_stop_backup() e prova di nuovo." -#: access/transam/xlog.c:9939 +#: access/transam/xlog.c:10013 #, c-format msgid "WAL generated with full_page_writes=off was replayed since last restartpoint" msgstr "un WAL generato con full_page_writes=off è stato riprodotto dopo l'ultimo restartpoint" -#: access/transam/xlog.c:9941 access/transam/xlog.c:10440 +#: access/transam/xlog.c:10015 access/transam/xlog.c:10576 #, c-format msgid "This means that the backup being taken on the standby is corrupt and should not be used. Enable full_page_writes and run CHECKPOINT on the master, and then try an online backup again." msgstr "Ciò vuol dire che il backup che sta venendo preso sullo standby è corrotto e non dovrebbe essere usato. Abilita full_page_writes ed esegui CHECKPOINT sul master, poi prova ad effettuare nuovamente un backup online.\"" -#: access/transam/xlog.c:10008 replication/basebackup.c:1038 +#: access/transam/xlog.c:10082 replication/basebackup.c:1026 #: utils/adt/misc.c:498 #, c-format msgid "could not read symbolic link \"%s\": %m" msgstr "lettura del link simbolico \"%s\" fallita: %m" -#: access/transam/xlog.c:10015 replication/basebackup.c:1043 +#: access/transam/xlog.c:10089 replication/basebackup.c:1031 #: utils/adt/misc.c:503 #, c-format msgid "symbolic link \"%s\" target is too long" msgstr "la destinazione del link simbolico \"%s\" è troppo lunga" -#: access/transam/xlog.c:10068 commands/tablespace.c:395 -#: commands/tablespace.c:557 replication/basebackup.c:1059 -#: utils/adt/misc.c:511 +#: access/transam/xlog.c:10142 commands/tablespace.c:391 +#: commands/tablespace.c:553 replication/basebackup.c:1047 utils/adt/misc.c:511 #, c-format msgid "tablespaces are not supported on this platform" msgstr "i tablespace non sono supportati su questa piattaforma" -#: access/transam/xlog.c:10109 access/transam/xlog.c:10147 -#: access/transam/xlog.c:10326 access/transam/xlogarchive.c:106 -#: access/transam/xlogarchive.c:265 commands/copy.c:1778 commands/copy.c:2804 -#: commands/extension.c:3109 commands/tablespace.c:786 -#: commands/tablespace.c:877 replication/basebackup.c:407 -#: replication/basebackup.c:475 replication/logical/snapbuild.c:1493 -#: storage/file/copydir.c:72 storage/file/copydir.c:115 storage/file/fd.c:2826 -#: storage/file/fd.c:2918 utils/adt/dbsize.c:70 utils/adt/dbsize.c:220 +#: access/transam/xlog.c:10183 access/transam/xlog.c:10221 +#: access/transam/xlog.c:10430 access/transam/xlogarchive.c:106 +#: access/transam/xlogarchive.c:265 commands/copy.c:1816 commands/copy.c:2840 +#: commands/extension.c:3133 commands/tablespace.c:782 +#: commands/tablespace.c:873 replication/basebackup.c:409 +#: replication/basebackup.c:477 replication/logical/snapbuild.c:1496 +#: storage/file/copydir.c:72 storage/file/copydir.c:115 storage/file/fd.c:2903 +#: storage/file/fd.c:2995 utils/adt/dbsize.c:70 utils/adt/dbsize.c:220 #: utils/adt/dbsize.c:300 utils/adt/genfile.c:114 utils/adt/genfile.c:333 -#: guc-file.l:1003 +#: guc-file.l:1001 #, c-format msgid "could not stat file \"%s\": %m" msgstr "non è stato possibile ottenere informazioni sul file \"%s\": %m" -#: access/transam/xlog.c:10116 access/transam/xlog.c:10154 +#: access/transam/xlog.c:10190 access/transam/xlog.c:10228 #, c-format msgid "If you're sure there is no backup in progress, remove file \"%s\" and try again." msgstr "Se si è certi che non ci sono backup in corso, rimuovi il file \"%s\" e prova di nuovo." -#: access/transam/xlog.c:10133 access/transam/xlog.c:10171 -#: access/transam/xlog.c:10501 +#: access/transam/xlog.c:10207 access/transam/xlog.c:10245 +#: access/transam/xlog.c:10637 #, c-format msgid "could not write file \"%s\": %m" msgstr "scrittura nel file \"%s\" fallita: %m" -#: access/transam/xlog.c:10290 +#: access/transam/xlog.c:10407 #, c-format msgid "exclusive backup not in progress" msgstr "non c'è un backup esclusivo in corso" -#: access/transam/xlog.c:10330 +#: access/transam/xlog.c:10434 #, c-format msgid "a backup is not in progress" msgstr "non c'è un backup in esecuzione" -#: access/transam/xlog.c:10375 access/transam/xlog.c:10388 -#: access/transam/xlog.c:10728 access/transam/xlog.c:10734 -#: access/transam/xlog.c:10818 access/transam/xlogfuncs.c:696 +#: access/transam/xlog.c:10511 access/transam/xlog.c:10524 +#: access/transam/xlog.c:10864 access/transam/xlog.c:10870 +#: access/transam/xlog.c:10954 access/transam/xlogfuncs.c:690 #, c-format msgid "invalid data in file \"%s\"" msgstr "i dati nel file \"%s\" non sono validi" -#: access/transam/xlog.c:10392 replication/basebackup.c:936 +#: access/transam/xlog.c:10528 replication/basebackup.c:938 #, c-format msgid "the standby was promoted during online backup" msgstr "lo standby è stato promosso durante il backup online" -#: access/transam/xlog.c:10393 replication/basebackup.c:937 +#: access/transam/xlog.c:10529 replication/basebackup.c:939 #, c-format msgid "This means that the backup being taken is corrupt and should not be used. Try taking another online backup." msgstr "Ciò vuol dire che il backup che stava venendo salvato è corrotto e non dovrebbe essere usato. Prova ad effettuare un altro backup online." -#: access/transam/xlog.c:10438 +#: access/transam/xlog.c:10574 #, c-format msgid "WAL generated with full_page_writes=off was replayed during online backup" msgstr "un WAL generato con full_page_writes=off è stato riprodotto durante il backup online" -#: access/transam/xlog.c:10550 +#: access/transam/xlog.c:10686 #, c-format msgid "pg_stop_backup cleanup done, waiting for required WAL segments to be archived" msgstr "pulizia di pg_stop_backup effettuata, in attesa che i segmenti WAL richiesti vengano archiviati" -#: access/transam/xlog.c:10560 +#: access/transam/xlog.c:10696 #, c-format msgid "pg_stop_backup still waiting for all required WAL segments to be archived (%d seconds elapsed)" msgstr "pg_stop_backup è ancora in attesa che tutti i segmenti WAL richiesti siano stati archiviati (sono passati %d secondi)" -#: access/transam/xlog.c:10562 +#: access/transam/xlog.c:10698 #, c-format msgid "Check that your archive_command is executing properly. pg_stop_backup can be canceled safely, but the database backup will not be usable without all the WAL segments." msgstr "Controlla che il tuo archive_command venga eseguito correttamente. pg_stop_backup può essere interrotto in sicurezza ma il backup del database non sarà utilizzabile senza tutti i segmenti WAL." -#: access/transam/xlog.c:10569 +#: access/transam/xlog.c:10705 #, c-format msgid "pg_stop_backup complete, all required WAL segments have been archived" msgstr "pg_stop_backup completo, tutti i segmenti WAL richiesti sono stati archiviati" -#: access/transam/xlog.c:10573 +#: access/transam/xlog.c:10709 #, c-format msgid "WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup" msgstr "l'archiviazione WAL non è abilitata; devi verificare che tutti i segmenti WAL richiesti vengano copiati in qualche altro modo per completare il backup" #. translator: %s is an XLog record description -#: access/transam/xlog.c:10858 +#: access/transam/xlog.c:10994 #, c-format msgid "xlog redo at %X/%X for %s" msgstr "ripristino xlog a %X/%X per %s" -#: access/transam/xlog.c:10907 +#: access/transam/xlog.c:11043 #, c-format msgid "online backup mode was not canceled" msgstr "la modalità di backup online non è stata annullata" -#: access/transam/xlog.c:10908 +#: access/transam/xlog.c:11044 #, c-format msgid "File \"%s\" could not be renamed to \"%s\": %m." msgstr "Non è stato possibile rinominare il file \"%s\" in \"%s\": %m." -#: access/transam/xlog.c:10917 access/transam/xlog.c:10929 -#: access/transam/xlog.c:10939 +#: access/transam/xlog.c:11053 access/transam/xlog.c:11065 +#: access/transam/xlog.c:11075 #, c-format msgid "online backup mode canceled" msgstr "modalità backup online annullata" -#: access/transam/xlog.c:10930 +#: access/transam/xlog.c:11066 #, c-format msgid "Files \"%s\" and \"%s\" were renamed to \"%s\" and \"%s\", respectively." msgstr "File \"%s\" e \"%s\" rinominati rispettivamente in \"%s\" e \"%s\"." -#: access/transam/xlog.c:10940 +#: access/transam/xlog.c:11076 #, c-format msgid "File \"%s\" was renamed to \"%s\", but file \"%s\" could not be renamed to \"%s\": %m." msgstr "File \"%s\" rinominato in \"%s\", ma non è stato possibile rinominare il file \"%s\" in \"%s\": %m." -#: access/transam/xlog.c:11062 access/transam/xlogutils.c:723 -#: replication/walreceiver.c:973 replication/walsender.c:2116 +#: access/transam/xlog.c:11198 access/transam/xlogutils.c:718 +#: replication/walreceiver.c:994 replication/walsender.c:2113 #, c-format msgid "could not seek in log segment %s to offset %u: %m" msgstr "spostamento nel segmento di log %s alla posizione %u fallito: %m" -#: access/transam/xlog.c:11074 +#: access/transam/xlog.c:11210 #, c-format msgid "could not read from log segment %s, offset %u: %m" msgstr "lettura del segmento di log %s, posizione %u fallita: %m" -#: access/transam/xlog.c:11548 +#: access/transam/xlog.c:11684 #, c-format msgid "received promote request" msgstr "richiesta di promozione ricevuta" -#: access/transam/xlog.c:11561 +#: access/transam/xlog.c:11697 #, c-format msgid "trigger file found: %s" msgstr "trovato il file trigger: %s" -#: access/transam/xlog.c:11570 +#: access/transam/xlog.c:11706 #, c-format msgid "could not stat trigger file \"%s\": %m" msgstr "non è stato possibile ottenere informazioni sul file trigger \"%s\": %m" @@ -2715,9 +2726,9 @@ msgstr "non è stato possibile ripristinare il file \"%s\" dall'archivio: %s" msgid "%s \"%s\": %s" msgstr "%s \"%s\": %s" -#: access/transam/xlogarchive.c:458 replication/logical/snapbuild.c:1621 -#: replication/slot.c:470 replication/slot.c:981 replication/slot.c:1089 -#: storage/file/fd.c:635 storage/file/fd.c:693 utils/time/snapmgr.c:1198 +#: access/transam/xlogarchive.c:458 replication/logical/snapbuild.c:1619 +#: replication/slot.c:496 replication/slot.c:1009 replication/slot.c:1117 +#: storage/file/fd.c:642 storage/file/fd.c:700 utils/time/snapmgr.c:1298 #, c-format msgid "could not rename file \"%s\" to \"%s\": %m" msgstr "non è stato possibile rinominare il file \"%s\" in \"%s\": %m" @@ -2732,258 +2743,258 @@ msgstr "creazione del file di stato dell'archivio \"%s\" fallita: %m" msgid "could not write archive status file \"%s\": %m" msgstr "scrittura del file di stato dell'archivio \"%s\" fallita: %m" -#: access/transam/xlogfuncs.c:58 +#: access/transam/xlogfuncs.c:56 #, c-format msgid "aborting backup due to backend exiting before pg_stop_backup was called" msgstr "interruzione del backup perché il backend è terminato prima della chiamata di pg_stop_backup" -#: access/transam/xlogfuncs.c:88 +#: access/transam/xlogfuncs.c:87 #, c-format msgid "a backup is already in progress in this session" msgstr "c'è già un backup in corso in questa sessione" -#: access/transam/xlogfuncs.c:94 commands/tablespace.c:709 -#: commands/tablespace.c:719 postmaster/postmaster.c:1395 -#: replication/basebackup.c:295 replication/basebackup.c:635 -#: storage/file/copydir.c:53 storage/file/copydir.c:96 storage/file/fd.c:2292 -#: storage/file/fd.c:2891 storage/ipc/dsm.c:300 utils/adt/genfile.c:439 +#: access/transam/xlogfuncs.c:93 commands/tablespace.c:705 +#: commands/tablespace.c:715 postmaster/postmaster.c:1420 +#: replication/basebackup.c:297 replication/basebackup.c:637 +#: storage/file/copydir.c:53 storage/file/copydir.c:96 storage/file/fd.c:2369 +#: storage/file/fd.c:2968 storage/ipc/dsm.c:300 utils/adt/genfile.c:439 #: utils/adt/misc.c:411 utils/misc/tzparser.c:339 #, c-format msgid "could not open directory \"%s\": %m" msgstr "apertura della directory \"%s\" fallita: %m" -#: access/transam/xlogfuncs.c:155 access/transam/xlogfuncs.c:229 +#: access/transam/xlogfuncs.c:153 access/transam/xlogfuncs.c:226 #, c-format msgid "non-exclusive backup in progress" msgstr "il backup in corso non è esclusivo" -#: access/transam/xlogfuncs.c:156 access/transam/xlogfuncs.c:230 +#: access/transam/xlogfuncs.c:154 access/transam/xlogfuncs.c:227 #, c-format -msgid "did you mean to use pg_stop_backup('f')?" -msgstr "forse intendevi usare pg_stop_backup('f')?" +msgid "Did you mean to use pg_stop_backup('f')?" +msgstr "Forse intendevi usare pg_stop_backup('f')?" -#: access/transam/xlogfuncs.c:200 commands/event_trigger.c:1449 -#: commands/event_trigger.c:2000 commands/extension.c:1728 -#: commands/extension.c:1837 commands/extension.c:2030 commands/prepare.c:702 +#: access/transam/xlogfuncs.c:197 commands/event_trigger.c:1445 +#: commands/event_trigger.c:1996 commands/extension.c:1732 +#: commands/extension.c:1841 commands/extension.c:2034 commands/prepare.c:702 #: executor/execQual.c:1757 executor/execQual.c:1782 executor/execQual.c:2157 -#: executor/execQual.c:5386 executor/functions.c:1024 foreign/foreign.c:598 -#: replication/logical/logicalfuncs.c:175 replication/logical/origin.c:1391 -#: replication/slotfuncs.c:189 replication/walsender.c:2761 -#: utils/adt/jsonfuncs.c:1483 utils/adt/jsonfuncs.c:1615 -#: utils/adt/jsonfuncs.c:1805 utils/adt/jsonfuncs.c:1934 -#: utils/adt/jsonfuncs.c:2702 utils/adt/pgstatfuncs.c:552 -#: utils/adt/pgstatfuncs.c:653 utils/fmgr/funcapi.c:61 utils/misc/guc.c:8424 -#: utils/mmgr/portalmem.c:1064 +#: executor/execQual.c:5438 executor/functions.c:1031 foreign/foreign.c:492 +#: replication/logical/logicalfuncs.c:175 replication/logical/origin.c:1394 +#: replication/slotfuncs.c:189 replication/walsender.c:2762 +#: utils/adt/jsonfuncs.c:1483 utils/adt/jsonfuncs.c:1613 +#: utils/adt/jsonfuncs.c:1801 utils/adt/jsonfuncs.c:1928 +#: utils/adt/jsonfuncs.c:2694 utils/adt/pgstatfuncs.c:554 +#: utils/adt/pgstatfuncs.c:655 utils/fmgr/funcapi.c:61 utils/misc/guc.c:8436 +#: utils/mmgr/portalmem.c:1074 #, c-format msgid "set-valued function called in context that cannot accept a set" msgstr "la funzione che restituisce insiemi è chiamata in un contesto che non può accettare un insieme" -#: access/transam/xlogfuncs.c:204 commands/event_trigger.c:1453 -#: commands/event_trigger.c:2004 commands/extension.c:1732 -#: commands/extension.c:1841 commands/extension.c:2034 commands/prepare.c:706 -#: foreign/foreign.c:603 replication/logical/logicalfuncs.c:179 -#: replication/logical/origin.c:1395 replication/slotfuncs.c:193 -#: replication/walsender.c:2765 utils/adt/pgstatfuncs.c:556 -#: utils/adt/pgstatfuncs.c:657 utils/misc/guc.c:8428 utils/misc/pg_config.c:44 -#: utils/mmgr/portalmem.c:1068 +#: access/transam/xlogfuncs.c:201 commands/event_trigger.c:1449 +#: commands/event_trigger.c:2000 commands/extension.c:1736 +#: commands/extension.c:1845 commands/extension.c:2038 commands/prepare.c:706 +#: foreign/foreign.c:497 replication/logical/logicalfuncs.c:179 +#: replication/logical/origin.c:1398 replication/slotfuncs.c:193 +#: replication/walsender.c:2766 utils/adt/pgstatfuncs.c:558 +#: utils/adt/pgstatfuncs.c:659 utils/misc/guc.c:8440 utils/misc/pg_config.c:44 +#: utils/mmgr/portalmem.c:1078 #, c-format msgid "materialize mode required, but it is not allowed in this context" msgstr "necessaria modalità materializzata, ma non ammessa in questo contesto" -#: access/transam/xlogfuncs.c:247 +#: access/transam/xlogfuncs.c:243 #, c-format msgid "non-exclusive backup is not in progress" msgstr "non c'è un backup non esclusivo in corso" -#: access/transam/xlogfuncs.c:248 +#: access/transam/xlogfuncs.c:244 #, c-format -msgid "did you mean to use pg_stop_backup('t')?" -msgstr "forse intendevi usare pg_stop_backup('t')?" +msgid "Did you mean to use pg_stop_backup('t')?" +msgstr "Forse intendevi usare pg_stop_backup('t')?" -#: access/transam/xlogfuncs.c:327 +#: access/transam/xlogfuncs.c:321 #, c-format msgid "WAL level not sufficient for creating a restore point" msgstr "livello WAL non sufficiente per creare un punto di ripristino" -#: access/transam/xlogfuncs.c:335 +#: access/transam/xlogfuncs.c:329 #, c-format msgid "value too long for restore point (maximum %d characters)" msgstr "il valore è troppo lungo per un punto di ripristino (massimo %d caratteri)" -#: access/transam/xlogfuncs.c:473 +#: access/transam/xlogfuncs.c:467 #, c-format msgid "pg_xlogfile_name_offset() cannot be executed during recovery." msgstr "pg_xlogfile_name_offset() non può essere eseguito durante il recupero." -#: access/transam/xlogfuncs.c:529 +#: access/transam/xlogfuncs.c:523 #, c-format msgid "pg_xlogfile_name() cannot be executed during recovery." msgstr "pg_xlogfile_name() non può essere eseguito durante il recupero." -#: access/transam/xlogfuncs.c:549 access/transam/xlogfuncs.c:569 -#: access/transam/xlogfuncs.c:586 +#: access/transam/xlogfuncs.c:543 access/transam/xlogfuncs.c:563 +#: access/transam/xlogfuncs.c:580 #, c-format msgid "recovery is not in progress" msgstr "il recupero non è in corso" -#: access/transam/xlogfuncs.c:550 access/transam/xlogfuncs.c:570 -#: access/transam/xlogfuncs.c:587 +#: access/transam/xlogfuncs.c:544 access/transam/xlogfuncs.c:564 +#: access/transam/xlogfuncs.c:581 #, c-format msgid "Recovery control functions can only be executed during recovery." msgstr "Le funzioni di controllo del recupero possono essere eseguite solo durante un recupero." -#: access/transam/xlogreader.c:285 +#: access/transam/xlogreader.c:276 #, c-format msgid "invalid record offset at %X/%X" msgstr "offset del record non valido a %X/%X" -#: access/transam/xlogreader.c:293 +#: access/transam/xlogreader.c:284 #, c-format msgid "contrecord is requested by %X/%X" msgstr "contrecord richiesto da %X/%X" -#: access/transam/xlogreader.c:334 access/transam/xlogreader.c:633 +#: access/transam/xlogreader.c:325 access/transam/xlogreader.c:624 #, c-format msgid "invalid record length at %X/%X: wanted %u, got %u" msgstr "lunghezza del record a %X/%X non valida: atteso %u, ricevuto %u" -#: access/transam/xlogreader.c:349 +#: access/transam/xlogreader.c:340 #, c-format msgid "record length %u at %X/%X too long" msgstr "lunghezza del record %u a %X/%X eccessiva" -#: access/transam/xlogreader.c:390 +#: access/transam/xlogreader.c:381 #, c-format msgid "there is no contrecord flag at %X/%X" msgstr "non c'è un flag di contrecord a %X/%X" -#: access/transam/xlogreader.c:403 +#: access/transam/xlogreader.c:394 #, c-format msgid "invalid contrecord length %u at %X/%X" msgstr "lunghezza di contrecord %u non valida a %X/%X" -#: access/transam/xlogreader.c:641 +#: access/transam/xlogreader.c:632 #, c-format msgid "invalid resource manager ID %u at %X/%X" msgstr "ID di gestione risorse %u non valido a %X/%X" -#: access/transam/xlogreader.c:655 access/transam/xlogreader.c:672 +#: access/transam/xlogreader.c:646 access/transam/xlogreader.c:663 #, c-format msgid "record with incorrect prev-link %X/%X at %X/%X" msgstr "record con link-precedente %X/%X non corretto a %X/%X" -#: access/transam/xlogreader.c:709 +#: access/transam/xlogreader.c:700 #, c-format msgid "incorrect resource manager data checksum in record at %X/%X" msgstr "checksum dei dati del manager di risorse non corretto nel record a %X/%X" -#: access/transam/xlogreader.c:742 +#: access/transam/xlogreader.c:733 #, c-format msgid "invalid magic number %04X in log segment %s, offset %u" msgstr "numero magico %04X non valido nel segmento di log %s, offset %u" -#: access/transam/xlogreader.c:756 access/transam/xlogreader.c:807 +#: access/transam/xlogreader.c:747 access/transam/xlogreader.c:798 #, c-format msgid "invalid info bits %04X in log segment %s, offset %u" msgstr "bit di info %04X non validi nel segmento di log %s, offset %u" -#: access/transam/xlogreader.c:782 +#: access/transam/xlogreader.c:773 #, c-format msgid "WAL file is from different database system: WAL file database system identifier is %s, pg_control database system identifier is %s" msgstr "il file di WAL è di un database diverso: l'identificativo del file di WAL del database è %s, l'identificativo di pg_control del database è %s" -#: access/transam/xlogreader.c:789 +#: access/transam/xlogreader.c:780 #, c-format msgid "WAL file is from different database system: incorrect XLOG_SEG_SIZE in page header" msgstr "il file di WAL è di un database diverso: XLOG_SEG_SIZE non corretto nell'header di pagina" -#: access/transam/xlogreader.c:795 +#: access/transam/xlogreader.c:786 #, c-format msgid "WAL file is from different database system: incorrect XLOG_BLCKSZ in page header" msgstr "il file di WAL è di un database diverso: XLOG_BLCKSZ non corretto nell'header di pagina" -#: access/transam/xlogreader.c:821 +#: access/transam/xlogreader.c:812 #, c-format msgid "unexpected pageaddr %X/%X in log segment %s, offset %u" msgstr "pageaddr inaspettato %X/%X nel segmento di log %s, offset %u" -#: access/transam/xlogreader.c:846 +#: access/transam/xlogreader.c:837 #, c-format msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u" msgstr "ID della timeline %u (dopo %u) fuori sequenza nel segmento di log %s, offset %u" -#: access/transam/xlogreader.c:1053 +#: access/transam/xlogreader.c:1081 #, c-format msgid "out-of-order block_id %u at %X/%X" msgstr "block_id fuori sequenza %u a %X/%X" -#: access/transam/xlogreader.c:1075 +#: access/transam/xlogreader.c:1103 #, c-format msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" msgstr "BKPBLOCK_HAS_DATA impostato, ma dati non inclusi a %X/%X" -#: access/transam/xlogreader.c:1082 +#: access/transam/xlogreader.c:1110 #, c-format msgid "BKPBLOCK_HAS_DATA not set, but data length is %u at %X/%X" msgstr "BKPBLOCK_HAS_DATA non impostato, ma la lunghezza dei dati è %u a %X/%X" -#: access/transam/xlogreader.c:1115 +#: access/transam/xlogreader.c:1143 #, c-format msgid "BKPIMAGE_HAS_HOLE set, but hole offset %u length %u block image length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE impostato, ma offset buco %u lunghezza %u lunghezza dell'immagine del blocco %u a %X/%X" -#: access/transam/xlogreader.c:1131 +#: access/transam/xlogreader.c:1159 #, c-format msgid "BKPIMAGE_HAS_HOLE not set, but hole offset %u length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE non impostato, ma offset buco %u lunghezza %u a %X/%X" -#: access/transam/xlogreader.c:1146 +#: access/transam/xlogreader.c:1174 #, c-format msgid "BKPIMAGE_IS_COMPRESSED set, but block image length %u at %X/%X" msgstr "BKPIMAGE_IS_COMPRESSED impostato, ma la lunghezza dell'immagine del blocco è %u a %X/%X" -#: access/transam/xlogreader.c:1161 +#: access/transam/xlogreader.c:1189 #, c-format msgid "neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_IS_COMPRESSED set, but block image length is %u at %X/%X" msgstr "né BKPIMAGE_HAS_HOLE né BKPIMAGE_IS_COMPRESSED impostati, ma la lunghezza dell'immagine del blocco è %u a %X/%X" -#: access/transam/xlogreader.c:1177 +#: access/transam/xlogreader.c:1205 #, c-format msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" msgstr "BKPBLOCK_SAME_REL impostato ma non c'è un rel precedente a %X/%X" -#: access/transam/xlogreader.c:1189 +#: access/transam/xlogreader.c:1217 #, c-format msgid "invalid block_id %u at %X/%X" msgstr "block_id %u non valido a %X/%X" -#: access/transam/xlogreader.c:1254 +#: access/transam/xlogreader.c:1282 #, c-format msgid "record with invalid length at %X/%X" msgstr "record con lunghezza non valida a %X/%X" -#: access/transam/xlogreader.c:1343 +#: access/transam/xlogreader.c:1371 #, c-format msgid "invalid compressed image at %X/%X, block %d" msgstr "immagine compressa non valida a %X/%X, blocco %d" -#: access/transam/xlogutils.c:744 replication/walsender.c:2133 +#: access/transam/xlogutils.c:739 replication/walsender.c:2130 #, c-format msgid "could not read from log segment %s, offset %u, length %lu: %m" msgstr "lettura del segmento di log %s, posizione %u, lunghezza %lu fallita: %m" -#: bootstrap/bootstrap.c:269 postmaster/postmaster.c:785 tcop/postgres.c:3488 +#: bootstrap/bootstrap.c:269 postmaster/postmaster.c:807 tcop/postgres.c:3501 #, c-format msgid "--%s requires a value" msgstr "--%s richiede un valore" -#: bootstrap/bootstrap.c:274 postmaster/postmaster.c:790 tcop/postgres.c:3493 +#: bootstrap/bootstrap.c:274 postmaster/postmaster.c:812 tcop/postgres.c:3506 #, c-format msgid "-c %s requires a value" msgstr "-c %s richiede un valore" -#: bootstrap/bootstrap.c:285 postmaster/postmaster.c:802 -#: postmaster/postmaster.c:815 +#: bootstrap/bootstrap.c:285 postmaster/postmaster.c:824 +#: postmaster/postmaster.c:837 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Prova \"%s --help\" per maggiori informazioni.\n" @@ -2993,137 +3004,137 @@ msgstr "Prova \"%s --help\" per maggiori informazioni.\n" msgid "%s: invalid command-line arguments\n" msgstr "%s: parametri della riga di comando non validi\n" -#: catalog/aclchk.c:193 +#: catalog/aclchk.c:201 #, c-format msgid "grant options can only be granted to roles" msgstr "le opzioni di concessione possono essere concesse solo ai ruoli" -#: catalog/aclchk.c:316 +#: catalog/aclchk.c:324 #, c-format msgid "no privileges were granted for column \"%s\" of relation \"%s\"" msgstr "nessun privilegio è stato concesso per la colonna \"%s\" della relazione \"%s\"" -#: catalog/aclchk.c:321 +#: catalog/aclchk.c:329 #, c-format msgid "no privileges were granted for \"%s\"" msgstr "nessun privilegio è stato concesso per \"%s\"" -#: catalog/aclchk.c:329 +#: catalog/aclchk.c:337 #, c-format msgid "not all privileges were granted for column \"%s\" of relation \"%s\"" msgstr "non tutti i privilegi sono stati concessi per la colonna \"%s\" della relazione \"%s\"" -#: catalog/aclchk.c:334 +#: catalog/aclchk.c:342 #, c-format msgid "not all privileges were granted for \"%s\"" msgstr "non tutti i privilegi sono stati concessi per \"%s\"" -#: catalog/aclchk.c:345 +#: catalog/aclchk.c:353 #, c-format msgid "no privileges could be revoked for column \"%s\" of relation \"%s\"" msgstr "non è stato possibile revocare alcun privilegio per la colonna \"%s\" della relazione \"%s\"" -#: catalog/aclchk.c:350 +#: catalog/aclchk.c:358 #, c-format msgid "no privileges could be revoked for \"%s\"" msgstr "non è stato possibile revocare alcun privilegio per \"%s\"" -#: catalog/aclchk.c:358 +#: catalog/aclchk.c:366 #, c-format msgid "not all privileges could be revoked for column \"%s\" of relation \"%s\"" msgstr "non è stato possibile revocare tutti i privilegi per la colonna \"%s\" della relazione \"%s\"" -#: catalog/aclchk.c:363 +#: catalog/aclchk.c:371 #, c-format msgid "not all privileges could be revoked for \"%s\"" msgstr "non è stato possibile revocare tutti i privilegi per \"%s\"" -#: catalog/aclchk.c:448 catalog/aclchk.c:940 +#: catalog/aclchk.c:453 catalog/aclchk.c:943 #, c-format msgid "invalid privilege type %s for relation" msgstr "tipo di privilegio %s non valido per la relazione" -#: catalog/aclchk.c:452 catalog/aclchk.c:944 +#: catalog/aclchk.c:457 catalog/aclchk.c:947 #, c-format msgid "invalid privilege type %s for sequence" msgstr "tipo di privilegio %s non valido per la sequenza" -#: catalog/aclchk.c:456 +#: catalog/aclchk.c:461 #, c-format msgid "invalid privilege type %s for database" msgstr "tipo di privilegio %s non valido per il database" -#: catalog/aclchk.c:460 +#: catalog/aclchk.c:465 #, c-format msgid "invalid privilege type %s for domain" msgstr "tipo di privilegio %s non valido per il dominio" -#: catalog/aclchk.c:464 catalog/aclchk.c:948 +#: catalog/aclchk.c:469 catalog/aclchk.c:951 #, c-format msgid "invalid privilege type %s for function" msgstr "tipo di privilegio %s non valido per la funzione" -#: catalog/aclchk.c:468 +#: catalog/aclchk.c:473 #, c-format msgid "invalid privilege type %s for language" msgstr "tipo di privilegio %s non valido per il linguaggio" -#: catalog/aclchk.c:472 +#: catalog/aclchk.c:477 #, c-format msgid "invalid privilege type %s for large object" msgstr "tipo di privilegio %s non valido per il large object" -#: catalog/aclchk.c:476 +#: catalog/aclchk.c:481 #, c-format msgid "invalid privilege type %s for schema" msgstr "tipo di privilegio %s non valido per lo schema" -#: catalog/aclchk.c:480 +#: catalog/aclchk.c:485 #, c-format msgid "invalid privilege type %s for tablespace" msgstr "tipo di privilegio %s non valido per il tablespace" -#: catalog/aclchk.c:484 catalog/aclchk.c:952 +#: catalog/aclchk.c:489 catalog/aclchk.c:955 #, c-format msgid "invalid privilege type %s for type" msgstr "tipo di privilegio %s non valido per il tipo" -#: catalog/aclchk.c:488 +#: catalog/aclchk.c:493 #, c-format msgid "invalid privilege type %s for foreign-data wrapper" msgstr "tipo di privilegio %s non valido per il wrapper di dati esterni" -#: catalog/aclchk.c:492 +#: catalog/aclchk.c:497 #, c-format msgid "invalid privilege type %s for foreign server" msgstr "tipo di privilegio %s non valido per il server esterno" -#: catalog/aclchk.c:531 +#: catalog/aclchk.c:536 #, c-format msgid "column privileges are only valid for relations" msgstr "i privilegi della colonna sono validi solo per le relazioni" -#: catalog/aclchk.c:690 catalog/aclchk.c:3921 catalog/aclchk.c:4698 +#: catalog/aclchk.c:695 catalog/aclchk.c:3923 catalog/aclchk.c:4705 #: catalog/objectaddress.c:873 catalog/pg_largeobject.c:113 #: storage/large_object/inv_api.c:291 #, c-format msgid "large object %u does not exist" msgstr "il large object %u non esiste" -#: catalog/aclchk.c:877 catalog/aclchk.c:885 commands/collationcmds.c:92 -#: commands/copy.c:1008 commands/copy.c:1026 commands/copy.c:1034 -#: commands/copy.c:1042 commands/copy.c:1050 commands/copy.c:1058 -#: commands/copy.c:1066 commands/copy.c:1074 commands/copy.c:1082 -#: commands/copy.c:1098 commands/copy.c:1112 commands/copy.c:1131 -#: commands/copy.c:1146 commands/dbcommands.c:155 commands/dbcommands.c:163 +#: catalog/aclchk.c:882 catalog/aclchk.c:890 commands/collationcmds.c:92 +#: commands/copy.c:1048 commands/copy.c:1066 commands/copy.c:1074 +#: commands/copy.c:1082 commands/copy.c:1090 commands/copy.c:1098 +#: commands/copy.c:1106 commands/copy.c:1114 commands/copy.c:1122 +#: commands/copy.c:1138 commands/copy.c:1152 commands/copy.c:1171 +#: commands/copy.c:1186 commands/dbcommands.c:155 commands/dbcommands.c:163 #: commands/dbcommands.c:171 commands/dbcommands.c:179 #: commands/dbcommands.c:187 commands/dbcommands.c:195 #: commands/dbcommands.c:203 commands/dbcommands.c:211 #: commands/dbcommands.c:219 commands/dbcommands.c:1397 #: commands/dbcommands.c:1405 commands/dbcommands.c:1413 -#: commands/dbcommands.c:1421 commands/extension.c:1218 -#: commands/extension.c:1226 commands/extension.c:1234 -#: commands/extension.c:1242 commands/extension.c:2760 +#: commands/dbcommands.c:1421 commands/extension.c:1222 +#: commands/extension.c:1230 commands/extension.c:1238 +#: commands/extension.c:1246 commands/extension.c:2764 #: commands/foreigncmds.c:539 commands/foreigncmds.c:548 #: commands/functioncmds.c:533 commands/functioncmds.c:649 #: commands/functioncmds.c:657 commands/functioncmds.c:665 @@ -3146,420 +3157,420 @@ msgstr "il large object %u non esiste" msgid "conflicting or redundant options" msgstr "opzioni contraddittorie o ridondanti" -#: catalog/aclchk.c:985 +#: catalog/aclchk.c:988 #, c-format msgid "default privileges cannot be set for columns" msgstr "i privilegi predefiniti non possono essere impostati sulle colonne" -#: catalog/aclchk.c:1501 catalog/objectaddress.c:1390 commands/analyze.c:378 -#: commands/copy.c:4423 commands/sequence.c:1491 commands/tablecmds.c:5199 -#: commands/tablecmds.c:5305 commands/tablecmds.c:5365 -#: commands/tablecmds.c:5478 commands/tablecmds.c:5535 -#: commands/tablecmds.c:5629 commands/tablecmds.c:5725 -#: commands/tablecmds.c:7877 commands/tablecmds.c:8082 -#: commands/tablecmds.c:8502 commands/trigger.c:642 parser/analyze.c:2160 -#: parser/parse_relation.c:2542 parser/parse_relation.c:2604 -#: parser/parse_target.c:940 parser/parse_type.c:127 utils/adt/acl.c:2840 -#: utils/adt/ruleutils.c:1862 +#: catalog/aclchk.c:1502 catalog/objectaddress.c:1390 commands/analyze.c:376 +#: commands/copy.c:4459 commands/sequence.c:1491 commands/tablecmds.c:5198 +#: commands/tablecmds.c:5304 commands/tablecmds.c:5364 +#: commands/tablecmds.c:5477 commands/tablecmds.c:5534 +#: commands/tablecmds.c:5628 commands/tablecmds.c:5724 +#: commands/tablecmds.c:7916 commands/tablecmds.c:8178 +#: commands/tablecmds.c:8598 commands/trigger.c:642 parser/analyze.c:2228 +#: parser/parse_relation.c:2628 parser/parse_relation.c:2690 +#: parser/parse_target.c:951 parser/parse_type.c:127 utils/adt/acl.c:2840 +#: utils/adt/ruleutils.c:1984 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist" msgstr "la colonna \"%s\" della relazione \"%s\" non esiste" -#: catalog/aclchk.c:1770 catalog/objectaddress.c:1203 commands/sequence.c:1078 -#: commands/tablecmds.c:223 commands/tablecmds.c:12009 utils/adt/acl.c:2076 +#: catalog/aclchk.c:1771 catalog/objectaddress.c:1203 commands/sequence.c:1078 +#: commands/tablecmds.c:224 commands/tablecmds.c:12155 utils/adt/acl.c:2076 #: utils/adt/acl.c:2106 utils/adt/acl.c:2138 utils/adt/acl.c:2170 #: utils/adt/acl.c:2198 utils/adt/acl.c:2228 #, c-format msgid "\"%s\" is not a sequence" msgstr "\"%s\" non è una sequenza" -#: catalog/aclchk.c:1808 +#: catalog/aclchk.c:1809 #, c-format msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" msgstr "la sequenza \"%s\" supporta solo i privilegi USAGE, SELECT e UPDATE" -#: catalog/aclchk.c:1825 +#: catalog/aclchk.c:1826 #, c-format msgid "invalid privilege type USAGE for table" msgstr "tipo di privilegio USAGE non valido per la tabella" -#: catalog/aclchk.c:1993 +#: catalog/aclchk.c:1994 #, c-format msgid "invalid privilege type %s for column" msgstr "tipo di privilegio %s non valido per la colonna" -#: catalog/aclchk.c:2006 +#: catalog/aclchk.c:2007 #, c-format msgid "sequence \"%s\" only supports SELECT column privileges" msgstr "la sequenza \"%s\" supporta solo i privilegi di SELECT sulla colonna" -#: catalog/aclchk.c:2600 +#: catalog/aclchk.c:2601 #, c-format msgid "language \"%s\" is not trusted" msgstr "il linguaggio \"%s\" non è fidato" -#: catalog/aclchk.c:2602 +#: catalog/aclchk.c:2603 #, c-format -msgid "Only superusers can use untrusted languages." -msgstr "Solo un superutente può usare linguaggi non fidati." +msgid "GRANT and REVOKE are not allowed on untrusted languages, because only superusers can use untrusted languages." +msgstr "GRANT e REVOKE non sono ammessi sui linguaggi non fidati, perché i linguaggi non fidati possono essere usati solo da superutenti." -#: catalog/aclchk.c:3127 +#: catalog/aclchk.c:3129 #, c-format msgid "cannot set privileges of array types" msgstr "non è possibile impostare privilegi su tipi array" -#: catalog/aclchk.c:3128 +#: catalog/aclchk.c:3130 #, c-format msgid "Set the privileges of the element type instead." msgstr "Puoi impostare i privilegi del tipo dell'elemento." -#: catalog/aclchk.c:3135 catalog/objectaddress.c:1523 commands/typecmds.c:3146 +#: catalog/aclchk.c:3137 catalog/objectaddress.c:1523 commands/typecmds.c:3146 #, c-format msgid "\"%s\" is not a domain" msgstr "\"%s\" non è un dominio" -#: catalog/aclchk.c:3258 +#: catalog/aclchk.c:3260 #, c-format msgid "unrecognized privilege type \"%s\"" msgstr "tipo di privilegio \"%s\" sconosciuto" -#: catalog/aclchk.c:3307 +#: catalog/aclchk.c:3309 #, c-format msgid "permission denied for column %s" msgstr "permesso negato per la colonna %s" -#: catalog/aclchk.c:3309 +#: catalog/aclchk.c:3311 #, c-format msgid "permission denied for relation %s" msgstr "permesso negato per la relazione %s" -#: catalog/aclchk.c:3311 commands/sequence.c:561 commands/sequence.c:786 +#: catalog/aclchk.c:3313 commands/sequence.c:561 commands/sequence.c:786 #: commands/sequence.c:828 commands/sequence.c:865 commands/sequence.c:1543 #, c-format msgid "permission denied for sequence %s" msgstr "permesso negato per la sequenza %s" -#: catalog/aclchk.c:3313 +#: catalog/aclchk.c:3315 #, c-format msgid "permission denied for database %s" msgstr "permesso negato per il database %s" -#: catalog/aclchk.c:3315 +#: catalog/aclchk.c:3317 #, c-format msgid "permission denied for function %s" msgstr "permesso negato per la funzione %s" -#: catalog/aclchk.c:3317 +#: catalog/aclchk.c:3319 #, c-format msgid "permission denied for operator %s" msgstr "permesso negato per l'operatore %s" -#: catalog/aclchk.c:3319 +#: catalog/aclchk.c:3321 #, c-format msgid "permission denied for type %s" msgstr "permesso negato per il tipo %s" -#: catalog/aclchk.c:3321 +#: catalog/aclchk.c:3323 #, c-format msgid "permission denied for language %s" msgstr "permesso negato per il linguaggio %s" -#: catalog/aclchk.c:3323 +#: catalog/aclchk.c:3325 #, c-format msgid "permission denied for large object %s" msgstr "permesso negato per large object %s" -#: catalog/aclchk.c:3325 +#: catalog/aclchk.c:3327 #, c-format msgid "permission denied for schema %s" msgstr "permesso negato per lo schema %s" -#: catalog/aclchk.c:3327 +#: catalog/aclchk.c:3329 #, c-format msgid "permission denied for operator class %s" msgstr "permesso negato per la classe di operatori %s" -#: catalog/aclchk.c:3329 +#: catalog/aclchk.c:3331 #, c-format msgid "permission denied for operator family %s" msgstr "permesso negato per la famiglia di operatori %s" -#: catalog/aclchk.c:3331 +#: catalog/aclchk.c:3333 #, c-format msgid "permission denied for collation %s" msgstr "permesso negato per l'ordinamento %s" -#: catalog/aclchk.c:3333 +#: catalog/aclchk.c:3335 #, c-format msgid "permission denied for conversion %s" msgstr "permesso negato per la conversione %s" -#: catalog/aclchk.c:3335 +#: catalog/aclchk.c:3337 #, c-format msgid "permission denied for tablespace %s" msgstr "permesso negato per il tablespace %s" -#: catalog/aclchk.c:3337 +#: catalog/aclchk.c:3339 #, c-format msgid "permission denied for text search dictionary %s" msgstr "permesso negato per il dizionario di ricerca di testo %s" -#: catalog/aclchk.c:3339 +#: catalog/aclchk.c:3341 #, c-format msgid "permission denied for text search configuration %s" msgstr "permesso negato per la configurazione di ricerca di testo %s" -#: catalog/aclchk.c:3341 +#: catalog/aclchk.c:3343 #, c-format msgid "permission denied for foreign-data wrapper %s" msgstr "permesso negato per il wrapper di dati esterni %s" -#: catalog/aclchk.c:3343 +#: catalog/aclchk.c:3345 #, c-format msgid "permission denied for foreign server %s" msgstr "permesso negato per il server esterno %s" -#: catalog/aclchk.c:3345 +#: catalog/aclchk.c:3347 #, c-format msgid "permission denied for event trigger %s" msgstr "permesso negato per il trigger di evento %s" -#: catalog/aclchk.c:3347 +#: catalog/aclchk.c:3349 #, c-format msgid "permission denied for extension %s" msgstr "permesso negato per l'estensione %s" -#: catalog/aclchk.c:3353 catalog/aclchk.c:3355 +#: catalog/aclchk.c:3355 catalog/aclchk.c:3357 #, c-format msgid "must be owner of relation %s" msgstr "bisogna essere proprietari della relazione %s" -#: catalog/aclchk.c:3357 +#: catalog/aclchk.c:3359 #, c-format msgid "must be owner of sequence %s" msgstr "bisogna essere proprietari della sequenza %s" -#: catalog/aclchk.c:3359 +#: catalog/aclchk.c:3361 #, c-format msgid "must be owner of database %s" msgstr "bisogna essere proprietari del database %s" -#: catalog/aclchk.c:3361 +#: catalog/aclchk.c:3363 #, c-format msgid "must be owner of function %s" msgstr "bisogna essere proprietari della funzione %s" -#: catalog/aclchk.c:3363 +#: catalog/aclchk.c:3365 #, c-format msgid "must be owner of operator %s" msgstr "bisogna essere proprietari dell'operatore %s" -#: catalog/aclchk.c:3365 +#: catalog/aclchk.c:3367 #, c-format msgid "must be owner of type %s" msgstr "bisogna essere proprietari del tipo %s" -#: catalog/aclchk.c:3367 +#: catalog/aclchk.c:3369 #, c-format msgid "must be owner of language %s" msgstr "bisogna essere proprietari del linguaggio %s" -#: catalog/aclchk.c:3369 +#: catalog/aclchk.c:3371 #, c-format msgid "must be owner of large object %s" msgstr "bisogna essere proprietari del large object %s" -#: catalog/aclchk.c:3371 +#: catalog/aclchk.c:3373 #, c-format msgid "must be owner of schema %s" msgstr "bisogna essere proprietari dello schema %s" -#: catalog/aclchk.c:3373 +#: catalog/aclchk.c:3375 #, c-format msgid "must be owner of operator class %s" msgstr "bisogna essere proprietari della classe di operatore %s" -#: catalog/aclchk.c:3375 +#: catalog/aclchk.c:3377 #, c-format msgid "must be owner of operator family %s" msgstr "bisogna essere proprietari della famiglia di operatori %s" -#: catalog/aclchk.c:3377 +#: catalog/aclchk.c:3379 #, c-format msgid "must be owner of collation %s" msgstr "bisogna essere proprietari dell'ordinamento %s" -#: catalog/aclchk.c:3379 +#: catalog/aclchk.c:3381 #, c-format msgid "must be owner of conversion %s" msgstr "bisogna essere proprietari della conversione %s" -#: catalog/aclchk.c:3381 +#: catalog/aclchk.c:3383 #, c-format msgid "must be owner of tablespace %s" msgstr "bisogna essere proprietari del tablespace %s" -#: catalog/aclchk.c:3383 +#: catalog/aclchk.c:3385 #, c-format msgid "must be owner of text search dictionary %s" msgstr "bisogna essere proprietari del dizionario di ricerca di testo %s" -#: catalog/aclchk.c:3385 +#: catalog/aclchk.c:3387 #, c-format msgid "must be owner of text search configuration %s" msgstr "bisogna essere proprietari della configurazione di ricerca di testo %s" -#: catalog/aclchk.c:3387 +#: catalog/aclchk.c:3389 #, c-format msgid "must be owner of foreign-data wrapper %s" msgstr "bisogna essere proprietari del wrapper di dati esterni %s" -#: catalog/aclchk.c:3389 +#: catalog/aclchk.c:3391 #, c-format msgid "must be owner of foreign server %s" msgstr "bisogna essere proprietari del server esterno %s" -#: catalog/aclchk.c:3391 +#: catalog/aclchk.c:3393 #, c-format msgid "must be owner of event trigger %s" msgstr "bisogna essere proprietari del trigger di evento %s" -#: catalog/aclchk.c:3393 +#: catalog/aclchk.c:3395 #, c-format msgid "must be owner of extension %s" msgstr "bisogna essere proprietari dell'estensione %s" -#: catalog/aclchk.c:3435 +#: catalog/aclchk.c:3437 #, c-format msgid "permission denied for column \"%s\" of relation \"%s\"" msgstr "permesso negato per la colonna \"%s\" della relazione \"%s\"" -#: catalog/aclchk.c:3554 catalog/aclchk.c:3562 +#: catalog/aclchk.c:3556 catalog/aclchk.c:3564 #, c-format msgid "attribute %d of relation with OID %u does not exist" msgstr "l'attributo %d della relazione con OID %u non esiste" -#: catalog/aclchk.c:3635 catalog/aclchk.c:4549 +#: catalog/aclchk.c:3637 catalog/aclchk.c:4556 #, c-format msgid "relation with OID %u does not exist" msgstr "la relazione con OID %u non esiste" -#: catalog/aclchk.c:3734 catalog/aclchk.c:4967 +#: catalog/aclchk.c:3736 catalog/aclchk.c:4974 #, c-format msgid "database with OID %u does not exist" msgstr "il database con OID %u non esiste" -#: catalog/aclchk.c:3788 catalog/aclchk.c:4627 tcop/fastpath.c:223 +#: catalog/aclchk.c:3790 catalog/aclchk.c:4634 tcop/fastpath.c:223 #, c-format msgid "function with OID %u does not exist" msgstr "la funzione con OID %u non esiste" -#: catalog/aclchk.c:3842 catalog/aclchk.c:4653 +#: catalog/aclchk.c:3844 catalog/aclchk.c:4660 #, c-format msgid "language with OID %u does not exist" msgstr "il linguaggio con OID %u non esiste" -#: catalog/aclchk.c:4006 catalog/aclchk.c:4725 +#: catalog/aclchk.c:4008 catalog/aclchk.c:4732 #, c-format msgid "schema with OID %u does not exist" msgstr "lo schema con OID %u non esiste" -#: catalog/aclchk.c:4060 catalog/aclchk.c:4752 +#: catalog/aclchk.c:4062 catalog/aclchk.c:4759 #, c-format msgid "tablespace with OID %u does not exist" msgstr "il tablespace con l'OID %u non esiste" -#: catalog/aclchk.c:4118 catalog/aclchk.c:4886 commands/foreigncmds.c:325 +#: catalog/aclchk.c:4121 catalog/aclchk.c:4893 commands/foreigncmds.c:325 #, c-format msgid "foreign-data wrapper with OID %u does not exist" msgstr "il wrapper di dati esterni con OID %u non esiste" -#: catalog/aclchk.c:4179 catalog/aclchk.c:4913 commands/foreigncmds.c:461 +#: catalog/aclchk.c:4183 catalog/aclchk.c:4920 commands/foreigncmds.c:461 #, c-format msgid "foreign server with OID %u does not exist" msgstr "il server esterno con OID %u non esiste" -#: catalog/aclchk.c:4238 catalog/aclchk.c:4252 catalog/aclchk.c:4575 +#: catalog/aclchk.c:4243 catalog/aclchk.c:4582 #, c-format msgid "type with OID %u does not exist" msgstr "il tipo con OID %u non esiste" -#: catalog/aclchk.c:4601 +#: catalog/aclchk.c:4608 #, c-format msgid "operator with OID %u does not exist" msgstr "l'operatore con OID %u non esiste" -#: catalog/aclchk.c:4778 +#: catalog/aclchk.c:4785 #, c-format msgid "operator class with OID %u does not exist" msgstr "la classe di operatori con OID %u non esiste" -#: catalog/aclchk.c:4805 +#: catalog/aclchk.c:4812 #, c-format msgid "operator family with OID %u does not exist" msgstr "la famiglia di operatori con OID %u non esiste" -#: catalog/aclchk.c:4832 +#: catalog/aclchk.c:4839 #, c-format msgid "text search dictionary with OID %u does not exist" msgstr "il dizionario di ricerca di testo con OID %u non esiste" -#: catalog/aclchk.c:4859 +#: catalog/aclchk.c:4866 #, c-format msgid "text search configuration with OID %u does not exist" msgstr "la configurazione di ricerca di testo con OID %u non esiste" -#: catalog/aclchk.c:4940 commands/event_trigger.c:587 +#: catalog/aclchk.c:4947 commands/event_trigger.c:587 #, c-format msgid "event trigger with OID %u does not exist" msgstr "il trigger di evento con OID %u non esiste" -#: catalog/aclchk.c:4993 +#: catalog/aclchk.c:5000 #, c-format msgid "collation with OID %u does not exist" msgstr "l'ordinamento con OID %u non esiste" -#: catalog/aclchk.c:5019 +#: catalog/aclchk.c:5026 #, c-format msgid "conversion with OID %u does not exist" msgstr "la conversione con OID %u non esiste" -#: catalog/aclchk.c:5060 +#: catalog/aclchk.c:5067 #, c-format msgid "extension with OID %u does not exist" msgstr "l'estensione con OID %u non esiste" -#: catalog/dependency.c:646 +#: catalog/dependency.c:645 #, c-format msgid "cannot drop %s because %s requires it" msgstr "non è possibile eliminare %s perché %s lo richiede" -#: catalog/dependency.c:649 +#: catalog/dependency.c:648 #, c-format msgid "You can drop %s instead." msgstr "È invece possibile eliminare %s." -#: catalog/dependency.c:811 catalog/pg_shdepend.c:576 +#: catalog/dependency.c:810 catalog/pg_shdepend.c:576 #, c-format msgid "cannot drop %s because it is required by the database system" msgstr "non è possibile eliminare %s perché richiesto dal sistema database" -#: catalog/dependency.c:927 +#: catalog/dependency.c:926 #, c-format msgid "drop auto-cascades to %s" msgstr "l'eliminazione elimina anche %s in cascata automatica" -#: catalog/dependency.c:939 catalog/dependency.c:948 +#: catalog/dependency.c:938 catalog/dependency.c:947 #, c-format msgid "%s depends on %s" msgstr "%s dipende da %s" -#: catalog/dependency.c:960 catalog/dependency.c:969 +#: catalog/dependency.c:959 catalog/dependency.c:968 #, c-format msgid "drop cascades to %s" msgstr "l'eliminazione elimina anche %s in cascata" -#: catalog/dependency.c:977 catalog/pg_shdepend.c:687 +#: catalog/dependency.c:976 catalog/pg_shdepend.c:687 #, c-format msgid "" "\n" @@ -3574,190 +3585,200 @@ msgstr[1] "" "\n" "e %d altri oggetti (vedere il log del server per la lista)" -#: catalog/dependency.c:989 +#: catalog/dependency.c:988 #, c-format msgid "cannot drop %s because other objects depend on it" msgstr "non è possibile eliminare %s perché altri oggetti dipendono da esso" -#: catalog/dependency.c:993 catalog/dependency.c:1000 +#: catalog/dependency.c:992 catalog/dependency.c:999 #, c-format msgid "Use DROP ... CASCADE to drop the dependent objects too." msgstr "Usa DROP ... CASCADE per eliminare anche gli oggetti dipendenti." -#: catalog/dependency.c:997 +#: catalog/dependency.c:996 #, c-format msgid "cannot drop desired object(s) because other objects depend on them" msgstr "non è possibile eliminare gli oggetti desiderati perché altri oggetti dipendono da essi" #. translator: %d always has a value larger than 1 -#: catalog/dependency.c:1006 +#: catalog/dependency.c:1005 #, c-format msgid "drop cascades to %d other object" msgid_plural "drop cascades to %d other objects" msgstr[0] "l'eliminazione elimina in cascata %d altro oggetto" msgstr[1] "l'eliminazione elimina in cascata %d altri oggetti" -#: catalog/dependency.c:1634 +#: catalog/dependency.c:1633 #, c-format msgid "constant of the type \"regrole\" cannot be used here" msgstr "le costanti di tipo \"regrole\" non possono essere usate qui" -#: catalog/heap.c:277 +#: catalog/heap.c:278 #, c-format msgid "permission denied to create \"%s.%s\"" msgstr "permesso di creare \"%s.%s\" negato" -#: catalog/heap.c:279 +#: catalog/heap.c:280 #, c-format msgid "System catalog modifications are currently disallowed." msgstr "Le modifiche al catalogo di sistema non sono attualmente consentite." -#: catalog/heap.c:414 commands/tablecmds.c:1438 commands/tablecmds.c:1895 -#: commands/tablecmds.c:4821 +#: catalog/heap.c:415 commands/tablecmds.c:1439 commands/tablecmds.c:1896 +#: commands/tablecmds.c:4820 #, c-format msgid "tables can have at most %d columns" msgstr "le tabelle possono avere al massimo %d colonne" -#: catalog/heap.c:431 commands/tablecmds.c:5082 +#: catalog/heap.c:432 commands/tablecmds.c:5081 #, c-format msgid "column name \"%s\" conflicts with a system column name" msgstr "il nome della colonna \"%s\" è in conflitto con il nome di una colonna di sistema" -#: catalog/heap.c:447 +#: catalog/heap.c:448 #, c-format msgid "column name \"%s\" specified more than once" msgstr "nome di colonna \"%s\" specificato più di una volta" -#: catalog/heap.c:497 +#: catalog/heap.c:498 #, c-format msgid "column \"%s\" has type \"unknown\"" msgstr "la colonna \"%s\" è di tipo \"unknown\"" -#: catalog/heap.c:498 +#: catalog/heap.c:499 #, c-format msgid "Proceeding with relation creation anyway." msgstr "Si procede comunque alla creazione della relazione." -#: catalog/heap.c:511 +#: catalog/heap.c:512 #, c-format msgid "column \"%s\" has pseudo-type %s" msgstr "la colonna \"%s\" ha pseudo-tipo %s" -#: catalog/heap.c:541 +#: catalog/heap.c:542 #, c-format msgid "composite type %s cannot be made a member of itself" msgstr "il tipo composito %s non può essere fatto membro di sé stesso" -#: catalog/heap.c:583 commands/createas.c:373 +#: catalog/heap.c:584 commands/createas.c:201 commands/createas.c:498 #, c-format msgid "no collation was derived for column \"%s\" with collatable type %s" msgstr "nessun ordinamento è stato derivato per la colonna \"%s\" con tipo ordinabile %s" -#: catalog/heap.c:585 commands/createas.c:375 commands/indexcmds.c:1132 -#: commands/view.c:116 regex/regc_pg_locale.c:262 utils/adt/formatting.c:1514 -#: utils/adt/formatting.c:1566 utils/adt/formatting.c:1634 -#: utils/adt/formatting.c:1686 utils/adt/formatting.c:1755 -#: utils/adt/formatting.c:1819 utils/adt/like.c:213 utils/adt/selfuncs.c:5330 -#: utils/adt/varlena.c:1421 utils/adt/varlena.c:1826 +#: catalog/heap.c:586 commands/createas.c:204 commands/createas.c:501 +#: commands/indexcmds.c:1133 commands/view.c:103 regex/regc_pg_locale.c:262 +#: utils/adt/formatting.c:1513 utils/adt/formatting.c:1565 +#: utils/adt/formatting.c:1633 utils/adt/formatting.c:1685 +#: utils/adt/formatting.c:1754 utils/adt/formatting.c:1818 utils/adt/like.c:213 +#: utils/adt/selfuncs.c:5434 utils/adt/varlena.c:1421 utils/adt/varlena.c:1826 #, c-format msgid "Use the COLLATE clause to set the collation explicitly." msgstr "Usa la clausola COLLATE per impostare esplicitamente l'ordinamento." -#: catalog/heap.c:1066 catalog/index.c:792 commands/tablecmds.c:2622 +#: catalog/heap.c:1067 catalog/index.c:792 commands/tablecmds.c:2623 #, c-format msgid "relation \"%s\" already exists" msgstr "la relazione \"%s\" esiste già" -#: catalog/heap.c:1082 catalog/pg_type.c:412 catalog/pg_type.c:722 +#: catalog/heap.c:1083 catalog/pg_type.c:412 catalog/pg_type.c:722 #: commands/typecmds.c:237 commands/typecmds.c:784 commands/typecmds.c:1135 #: commands/typecmds.c:1357 commands/typecmds.c:2113 #, c-format msgid "type \"%s\" already exists" msgstr "il tipo \"%s\" esiste già" -#: catalog/heap.c:1083 +#: catalog/heap.c:1084 #, c-format msgid "A relation has an associated type of the same name, so you must use a name that doesn't conflict with any existing type." msgstr "Una relazione ha un tipo associato con lo stesso nome, quindi devi usare nomi che non siano in conflitto con alcun tipo esistente." -#: catalog/heap.c:1111 +#: catalog/heap.c:1112 #, c-format msgid "pg_class heap OID value not set when in binary upgrade mode" msgstr "valore OID heap pg_class non impostato in modalità di aggiornamento binaria" -#: catalog/heap.c:2289 +#: catalog/heap.c:2291 #, c-format msgid "check constraint \"%s\" already exists" msgstr "il vincolo di controllo \"%s\" esiste già" -#: catalog/heap.c:2442 catalog/pg_constraint.c:654 commands/tablecmds.c:6070 +#: catalog/heap.c:2456 catalog/pg_constraint.c:654 commands/tablecmds.c:6069 #, c-format msgid "constraint \"%s\" for relation \"%s\" already exists" msgstr "il vincolo \"%s\" per la relazione \"%s\" esiste già" -#: catalog/heap.c:2452 +#: catalog/heap.c:2463 #, c-format msgid "constraint \"%s\" conflicts with non-inherited constraint on relation \"%s\"" -msgstr "il vincolo \"%s\" è in conflitto con il vincolo non ereditato sulla relazione \"%s\"" +msgstr "il vincolo \"%s\" è in conflitto con un vincolo non ereditato sulla relazione \"%s\"" -#: catalog/heap.c:2466 +#: catalog/heap.c:2474 +#, c-format +msgid "constraint \"%s\" conflicts with inherited constraint on relation \"%s\"" +msgstr "il vincolo \"%s\" è in conflitto con un vincolo ereditato sulla relazione \"%s\"" + +#: catalog/heap.c:2484 +#, c-format +msgid "constraint \"%s\" conflicts with NOT VALID constraint on relation \"%s\"" +msgstr "il vincolo \"%s\" è in conflitto con un vincolo non valido sulla relazione \"%s\"" + +#: catalog/heap.c:2489 #, c-format msgid "merging constraint \"%s\" with inherited definition" msgstr "unione del vincolo \"%s\" con una definizione ereditata" -#: catalog/heap.c:2559 +#: catalog/heap.c:2595 #, c-format msgid "cannot use column references in default expression" msgstr "non si possono usare riferimenti a colonne nell'espressione predefinita" -#: catalog/heap.c:2570 +#: catalog/heap.c:2606 #, c-format msgid "default expression must not return a set" msgstr "le espressioni predefinite non devono restituire un insieme" -#: catalog/heap.c:2589 rewrite/rewriteHandler.c:1084 +#: catalog/heap.c:2625 rewrite/rewriteHandler.c:1084 #, c-format msgid "column \"%s\" is of type %s but default expression is of type %s" msgstr "la colonna \"%s\" è di tipo %s ma l'espressione predefinita è di tipo %s" -#: catalog/heap.c:2594 commands/prepare.c:374 parser/parse_node.c:428 -#: parser/parse_target.c:528 parser/parse_target.c:778 -#: parser/parse_target.c:788 rewrite/rewriteHandler.c:1089 +#: catalog/heap.c:2630 commands/prepare.c:374 parser/parse_node.c:428 +#: parser/parse_target.c:539 parser/parse_target.c:789 +#: parser/parse_target.c:799 rewrite/rewriteHandler.c:1089 #, c-format msgid "You will need to rewrite or cast the expression." msgstr "Devi riscrivere o convertire il tipo dell'espressione" -#: catalog/heap.c:2641 +#: catalog/heap.c:2677 #, c-format msgid "only table \"%s\" can be referenced in check constraint" msgstr "solo la tabella \"%s\" può essere referenziata nel vincolo di controllo" -#: catalog/heap.c:2881 +#: catalog/heap.c:2917 #, c-format msgid "unsupported ON COMMIT and foreign key combination" msgstr "la combinazione di COMMIT con una chiave esterna non è supportata" -#: catalog/heap.c:2882 +#: catalog/heap.c:2918 #, c-format msgid "Table \"%s\" references \"%s\", but they do not have the same ON COMMIT setting." msgstr "La tabella \"%s\" referenzia \"%s\", ma non hanno la stessa impostazione ON COMMIT." -#: catalog/heap.c:2887 +#: catalog/heap.c:2923 #, c-format msgid "cannot truncate a table referenced in a foreign key constraint" msgstr "non è possibile troncare una tabella referenziata da un vincolo di chiave esterna" -#: catalog/heap.c:2888 +#: catalog/heap.c:2924 #, c-format msgid "Table \"%s\" references \"%s\"." msgstr "La tabella \"%s\" referenzia \"%s\"." -#: catalog/heap.c:2890 +#: catalog/heap.c:2926 #, c-format msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." msgstr "Troncare la tabella \"%s\" nello stesso tempo o usare TRUNCATE ... CASCADE." -#: catalog/index.c:210 parser/parse_utilcmd.c:1486 parser/parse_utilcmd.c:1572 +#: catalog/index.c:210 parser/parse_utilcmd.c:1473 parser/parse_utilcmd.c:1559 #, c-format msgid "multiple primary keys for table \"%s\" are not allowed" msgstr "non è possibile avere più di una chiave primaria per la tabella \"%s\"" @@ -3782,8 +3803,8 @@ msgstr "la creazione concorrente di indici sulle tabelle del catalogo di sistema msgid "shared indexes cannot be created after initdb" msgstr "indici condivisi non possono essere creati dopo initdb" -#: catalog/index.c:784 commands/createas.c:100 commands/sequence.c:141 -#: parser/parse_utilcmd.c:192 +#: catalog/index.c:784 commands/createas.c:249 commands/sequence.c:141 +#: parser/parse_utilcmd.c:191 #, c-format msgid "relation \"%s\" already exists, skipping" msgstr "la relazione \"%s\" esiste già, saltata" @@ -3803,24 +3824,24 @@ msgstr "DROP INDEX CONCURRENTLY deve essere la prima azione della transazione" msgid "building index \"%s\" on table \"%s\"" msgstr "creazione dell'indice \"%s\" sulla tabella \"%s\"" -#: catalog/index.c:3315 +#: catalog/index.c:3322 #, c-format msgid "cannot reindex temporary tables of other sessions" msgstr "non è possibile reindicizzare le tabelle temporanee di altre sessioni" -#: catalog/index.c:3440 +#: catalog/index.c:3454 #, c-format msgid "index \"%s\" was reindexed" msgstr "l'indice \"%s\" è stato reindicizzato" -#: catalog/index.c:3442 commands/vacuumlazy.c:1323 commands/vacuumlazy.c:1399 -#: commands/vacuumlazy.c:1588 commands/vacuumlazy.c:1789 +#: catalog/index.c:3456 commands/vacuumlazy.c:1345 commands/vacuumlazy.c:1421 +#: commands/vacuumlazy.c:1610 commands/vacuumlazy.c:1820 #, c-format msgid "%s." msgstr "%s." #: catalog/namespace.c:249 catalog/namespace.c:447 catalog/namespace.c:541 -#: commands/trigger.c:4527 +#: commands/trigger.c:4523 #, c-format msgid "cross-database references are not implemented: \"%s.%s.%s\"" msgstr "i riferimenti tra database diversi non sono implementati: \"%s.%s.%s\"" @@ -3840,19 +3861,19 @@ msgstr "lock della relazione \"%s.%s\" fallito" msgid "could not obtain lock on relation \"%s\"" msgstr "lock della relazione \"%s\" fallito" -#: catalog/namespace.c:414 parser/parse_relation.c:1137 +#: catalog/namespace.c:414 parser/parse_relation.c:1138 #, c-format msgid "relation \"%s.%s\" does not exist" msgstr "la relazione \"%s.%s\" non esiste" -#: catalog/namespace.c:419 parser/parse_relation.c:1150 -#: parser/parse_relation.c:1158 utils/adt/regproc.c:1034 +#: catalog/namespace.c:419 parser/parse_relation.c:1151 +#: parser/parse_relation.c:1159 utils/adt/regproc.c:1034 #, c-format msgid "relation \"%s\" does not exist" msgstr "la relazione \"%s\" non esiste" -#: catalog/namespace.c:487 catalog/namespace.c:2841 commands/extension.c:1382 -#: commands/extension.c:1388 +#: catalog/namespace.c:487 catalog/namespace.c:2841 commands/extension.c:1386 +#: commands/extension.c:1392 #, c-format msgid "no schema has been selected to create in" msgstr "nessuna schema selezionato per crearci dentro" @@ -3888,18 +3909,18 @@ msgid "text search template \"%s\" does not exist" msgstr "il modello di ricerca di testo \"%s\" non esiste" #: catalog/namespace.c:2533 commands/tsearchcmds.c:1197 -#: utils/cache/ts_cache.c:613 +#: utils/cache/ts_cache.c:611 #, c-format msgid "text search configuration \"%s\" does not exist" msgstr "la configurazione di ricerca di testo \"%s\" non esiste" -#: catalog/namespace.c:2646 parser/parse_expr.c:789 parser/parse_target.c:1130 +#: catalog/namespace.c:2646 parser/parse_expr.c:792 parser/parse_target.c:1141 #, c-format msgid "cross-database references are not implemented: %s" msgstr "i riferimenti tra database diversi non sono implementati: %s" -#: catalog/namespace.c:2652 parser/parse_expr.c:796 parser/parse_target.c:1137 -#: gram.y:13434 gram.y:14791 +#: catalog/namespace.c:2652 parser/parse_expr.c:799 parser/parse_target.c:1148 +#: gram.y:13454 gram.y:14823 #, c-format msgid "improper qualified name (too many dotted names): %s" msgstr "nome qualificato improprio (troppi nomi puntati): %s" @@ -3914,8 +3935,8 @@ msgstr "non posso spostare oggetti dentro o fuori gli schemi temporanei" msgid "cannot move objects into or out of TOAST schema" msgstr "non posso spostare oggetti dentro o fuori lo schema TOAST" -#: catalog/namespace.c:2862 commands/schemacmds.c:242 -#: commands/schemacmds.c:321 commands/tablecmds.c:740 +#: catalog/namespace.c:2862 commands/schemacmds.c:238 commands/schemacmds.c:317 +#: commands/tablecmds.c:741 #, c-format msgid "schema \"%s\" does not exist" msgstr "lo schema \"%s\" non esiste" @@ -3925,33 +3946,33 @@ msgstr "lo schema \"%s\" non esiste" msgid "improper relation name (too many dotted names): %s" msgstr "nome di relazione improprio (troppi nomi puntati): %s" -#: catalog/namespace.c:3358 +#: catalog/namespace.c:3403 #, c-format msgid "collation \"%s\" for encoding \"%s\" does not exist" msgstr "l'ordinamento \"%s\" per la codifica \"%s\" non esiste" -#: catalog/namespace.c:3413 +#: catalog/namespace.c:3458 #, c-format msgid "conversion \"%s\" does not exist" msgstr "la conversione \"%s\" non esiste" -#: catalog/namespace.c:3621 +#: catalog/namespace.c:3666 #, c-format msgid "permission denied to create temporary tables in database \"%s\"" msgstr "permesso di creare tabelle temporanee nel database \"%s\" negato" -#: catalog/namespace.c:3637 +#: catalog/namespace.c:3682 #, c-format msgid "cannot create temporary tables during recovery" msgstr "non è possibile creare tabelle temporanee durante il recupero" -#: catalog/namespace.c:3643 +#: catalog/namespace.c:3688 #, c-format msgid "cannot create temporary tables in parallel mode" msgstr "non è possibile creare tabelle temporanee in modalità parallela" -#: catalog/namespace.c:3887 commands/tablespace.c:1177 commands/variable.c:63 -#: utils/misc/guc.c:9853 +#: catalog/namespace.c:3932 commands/tablespace.c:1173 commands/variable.c:63 +#: utils/misc/guc.c:9875 #, c-format msgid "List syntax is invalid." msgstr "La sintassi della lista non è valida." @@ -3964,7 +3985,7 @@ msgstr "il nome del metodo di accesso non può essere qualificato" msgid "database name cannot be qualified" msgstr "il nome del database non può essere qualificato" -#: catalog/objectaddress.c:1071 commands/extension.c:2506 +#: catalog/objectaddress.c:1071 commands/extension.c:2510 #, c-format msgid "extension name cannot be qualified" msgstr "il nome dell'estensione non può essere qualificato" @@ -3998,27 +4019,27 @@ msgid "event trigger name cannot be qualified" msgstr "il nome del trigger di evento non può essere qualificato" #: catalog/objectaddress.c:1210 commands/lockcmds.c:94 commands/policy.c:94 -#: commands/policy.c:389 commands/policy.c:478 commands/tablecmds.c:217 -#: commands/tablecmds.c:1299 commands/tablecmds.c:4348 -#: commands/tablecmds.c:7979 +#: commands/policy.c:382 commands/policy.c:471 commands/tablecmds.c:218 +#: commands/tablecmds.c:1300 commands/tablecmds.c:4347 +#: commands/tablecmds.c:8018 #, c-format msgid "\"%s\" is not a table" msgstr "\"%s\" non è una tabella" -#: catalog/objectaddress.c:1217 commands/tablecmds.c:229 -#: commands/tablecmds.c:4378 commands/tablecmds.c:12014 commands/view.c:155 +#: catalog/objectaddress.c:1217 commands/tablecmds.c:230 +#: commands/tablecmds.c:4377 commands/tablecmds.c:12160 commands/view.c:141 #, c-format msgid "\"%s\" is not a view" msgstr "\"%s\" non è una vista" -#: catalog/objectaddress.c:1224 commands/matview.c:174 -#: commands/tablecmds.c:235 commands/tablecmds.c:12019 +#: catalog/objectaddress.c:1224 commands/matview.c:174 commands/tablecmds.c:236 +#: commands/tablecmds.c:12165 #, c-format msgid "\"%s\" is not a materialized view" msgstr "\"%s\" non è una vista materializzata" -#: catalog/objectaddress.c:1231 commands/tablecmds.c:253 -#: commands/tablecmds.c:4381 commands/tablecmds.c:12024 +#: catalog/objectaddress.c:1231 commands/tablecmds.c:254 +#: commands/tablecmds.c:4380 commands/tablecmds.c:12170 #, c-format msgid "\"%s\" is not a foreign table" msgstr "\"%s\" non è una tabella esterna" @@ -4034,7 +4055,7 @@ msgid "default value for column \"%s\" of relation \"%s\" does not exist" msgstr "il valore di default per la colonna \"%s\" della relazione \"%s\" non esiste" #: catalog/objectaddress.c:1512 commands/functioncmds.c:128 -#: commands/tablecmds.c:245 commands/typecmds.c:3214 parser/parse_type.c:226 +#: commands/tablecmds.c:246 commands/typecmds.c:3214 parser/parse_type.c:226 #: parser/parse_type.c:255 parser/parse_type.c:795 utils/adt/acl.c:4374 #: utils/adt/regproc.c:1225 #, c-format @@ -4046,161 +4067,160 @@ msgstr "il tipo \"%s\" non esiste" msgid "operator %d (%s, %s) of %s does not exist" msgstr "l'operatore %d (%s, %s) di %s non esiste" -#: catalog/objectaddress.c:1658 +#: catalog/objectaddress.c:1660 #, c-format msgid "function %d (%s, %s) of %s does not exist" msgstr "la funzione %d (%s, %s) di %s non esiste" -#: catalog/objectaddress.c:1707 catalog/objectaddress.c:1733 +#: catalog/objectaddress.c:1711 catalog/objectaddress.c:1737 #, c-format msgid "user mapping for user \"%s\" on server \"%s\" does not exist" msgstr "la mappatura per l'utente \"%s\" sul server \"%s\" non esiste" -#: catalog/objectaddress.c:1722 commands/foreigncmds.c:430 -#: commands/foreigncmds.c:997 commands/foreigncmds.c:1372 -#: foreign/foreign.c:798 +#: catalog/objectaddress.c:1726 commands/foreigncmds.c:430 +#: commands/foreigncmds.c:997 commands/foreigncmds.c:1359 foreign/foreign.c:692 #, c-format msgid "server \"%s\" does not exist" msgstr "il server \"%s\" non esiste" -#: catalog/objectaddress.c:1794 +#: catalog/objectaddress.c:1798 #, c-format msgid "unrecognized default ACL object type %c" msgstr "tipo di oggetto ACL di default %c non riconosciuto" -#: catalog/objectaddress.c:1795 +#: catalog/objectaddress.c:1799 #, c-format msgid "Valid object types are \"r\", \"S\", \"f\", and \"T\"." msgstr "I tipi di oggetti validi sono \"r\", \"S\", \"f\" e \"T\"" -#: catalog/objectaddress.c:1841 +#: catalog/objectaddress.c:1845 #, c-format msgid "default ACL for user \"%s\" in schema \"%s\" on %s does not exist" msgstr "l'ACL di default per l'utente \"%s\" nello schema \"%s\" su %s non esiste" -#: catalog/objectaddress.c:1846 +#: catalog/objectaddress.c:1850 #, c-format msgid "default ACL for user \"%s\" on %s does not exist" msgstr "l'ACL di default per l'utente \"%s\" su %s non esiste" -#: catalog/objectaddress.c:1873 catalog/objectaddress.c:1929 -#: catalog/objectaddress.c:1984 +#: catalog/objectaddress.c:1877 catalog/objectaddress.c:1933 +#: catalog/objectaddress.c:1988 #, c-format msgid "name or argument lists may not contain nulls" msgstr "il nome o la lista di argomenti non può contenere valori nulli" -#: catalog/objectaddress.c:1905 +#: catalog/objectaddress.c:1909 #, c-format msgid "unsupported object type \"%s\"" msgstr "tipo di oggetto \"%s\" non supportato" -#: catalog/objectaddress.c:1925 catalog/objectaddress.c:1943 +#: catalog/objectaddress.c:1929 catalog/objectaddress.c:1947 #, c-format msgid "name list length must be exactly %d" msgstr "la lunghezza della lista dei nomi dev'essere %d" -#: catalog/objectaddress.c:1947 +#: catalog/objectaddress.c:1951 #, c-format msgid "large object OID may not be null" msgstr "l'OID di large object non può essere nullo" -#: catalog/objectaddress.c:1956 catalog/objectaddress.c:2016 -#: catalog/objectaddress.c:2023 +#: catalog/objectaddress.c:1960 catalog/objectaddress.c:2020 +#: catalog/objectaddress.c:2027 #, c-format msgid "name list length must be at least %d" msgstr "la lunghezza della lista dei nomi deve essere almeno %d" -#: catalog/objectaddress.c:2009 catalog/objectaddress.c:2029 +#: catalog/objectaddress.c:2013 catalog/objectaddress.c:2033 #, c-format msgid "argument list length must be exactly %d" msgstr "la lunghezza della lista degli argomenti deve essere %d" -#: catalog/objectaddress.c:2165 libpq/be-fsstubs.c:352 +#: catalog/objectaddress.c:2169 libpq/be-fsstubs.c:350 #, c-format msgid "must be owner of large object %u" msgstr "occorre essere proprietari del large object %u" -#: catalog/objectaddress.c:2180 commands/functioncmds.c:1426 +#: catalog/objectaddress.c:2184 commands/functioncmds.c:1426 #, c-format msgid "must be owner of type %s or type %s" msgstr "occorre essere proprietari del tipo %s o del tipo %s" -#: catalog/objectaddress.c:2220 catalog/objectaddress.c:2237 +#: catalog/objectaddress.c:2224 catalog/objectaddress.c:2241 #, c-format msgid "must be superuser" msgstr "occorre essere superutenti" -#: catalog/objectaddress.c:2227 +#: catalog/objectaddress.c:2231 #, c-format msgid "must have CREATEROLE privilege" msgstr "occorre avere privilegio CREATEROLE" -#: catalog/objectaddress.c:2307 +#: catalog/objectaddress.c:2306 #, c-format msgid "unrecognized object type \"%s\"" msgstr "tipo di oggetto \"%s\" non riconosciuto" -#: catalog/objectaddress.c:2502 +#: catalog/objectaddress.c:2501 #, c-format msgid " column %s" msgstr " colonna %s" -#: catalog/objectaddress.c:2508 +#: catalog/objectaddress.c:2507 #, c-format msgid "function %s" msgstr "funzione %s" -#: catalog/objectaddress.c:2513 +#: catalog/objectaddress.c:2512 #, c-format msgid "type %s" msgstr "tipo %s" -#: catalog/objectaddress.c:2543 +#: catalog/objectaddress.c:2542 #, c-format msgid "cast from %s to %s" msgstr "conversione da %s a %s" -#: catalog/objectaddress.c:2563 +#: catalog/objectaddress.c:2562 #, c-format msgid "collation %s" msgstr "ordinamento %s" -#: catalog/objectaddress.c:2587 +#: catalog/objectaddress.c:2586 #, c-format msgid "constraint %s on %s" msgstr "vincolo %s su %s" -#: catalog/objectaddress.c:2593 +#: catalog/objectaddress.c:2592 #, c-format msgid "constraint %s" msgstr "vincolo %s" -#: catalog/objectaddress.c:2610 +#: catalog/objectaddress.c:2609 #, c-format msgid "conversion %s" msgstr "conversione %s" -#: catalog/objectaddress.c:2647 +#: catalog/objectaddress.c:2646 #, c-format msgid "default for %s" msgstr "predefinito per %s" -#: catalog/objectaddress.c:2656 +#: catalog/objectaddress.c:2655 #, c-format msgid "language %s" msgstr "linguaggio %s" -#: catalog/objectaddress.c:2661 +#: catalog/objectaddress.c:2660 #, c-format msgid "large object %u" msgstr "large object %u" -#: catalog/objectaddress.c:2666 +#: catalog/objectaddress.c:2665 #, c-format msgid "operator %s" msgstr "operatore %s" -#: catalog/objectaddress.c:2698 +#: catalog/objectaddress.c:2697 #, c-format msgid "operator class %s for access method %s" msgstr "classe di operatori %s per il metodo di accesso %s" @@ -4209,7 +4229,7 @@ msgstr "classe di operatori %s per il metodo di accesso %s" #. first two %s's are data type names, the third %s is the #. description of the operator family, and the last %s is the #. textual form of the operator with arguments. -#: catalog/objectaddress.c:2748 +#: catalog/objectaddress.c:2747 #, c-format msgid "operator %d (%s, %s) of %s: %s" msgstr "operatore %d (%s, %s) della %s: %s" @@ -4218,304 +4238,304 @@ msgstr "operatore %d (%s, %s) della %s: %s" #. are data type names, the third %s is the description of the #. operator family, and the last %s is the textual form of the #. function with arguments. -#: catalog/objectaddress.c:2798 +#: catalog/objectaddress.c:2797 #, c-format msgid "function %d (%s, %s) of %s: %s" msgstr "funzione %d (%s, %s) della %s: %s" -#: catalog/objectaddress.c:2838 +#: catalog/objectaddress.c:2837 #, c-format msgid "rule %s on " msgstr "regola %s on " -#: catalog/objectaddress.c:2860 +#: catalog/objectaddress.c:2859 #, c-format msgid "transform for %s language %s" msgstr "trasformazione per %s linguaggio %s" -#: catalog/objectaddress.c:2894 +#: catalog/objectaddress.c:2893 #, c-format msgid "trigger %s on " msgstr "trigger %s su " -#: catalog/objectaddress.c:2911 +#: catalog/objectaddress.c:2910 #, c-format msgid "schema %s" msgstr "schema %s" -#: catalog/objectaddress.c:2924 +#: catalog/objectaddress.c:2923 #, c-format msgid "text search parser %s" msgstr "analizzatore di ricerca di testo %s" -#: catalog/objectaddress.c:2939 +#: catalog/objectaddress.c:2938 #, c-format msgid "text search dictionary %s" msgstr "dizionario di ricerca di testo %s" -#: catalog/objectaddress.c:2954 +#: catalog/objectaddress.c:2953 #, c-format msgid "text search template %s" msgstr "modello di ricerca di testo %s" -#: catalog/objectaddress.c:2969 +#: catalog/objectaddress.c:2968 #, c-format msgid "text search configuration %s" msgstr "configurazione di ricerca di testo %s" -#: catalog/objectaddress.c:2977 +#: catalog/objectaddress.c:2976 #, c-format msgid "role %s" msgstr "regola %s" -#: catalog/objectaddress.c:2990 +#: catalog/objectaddress.c:2989 #, c-format msgid "database %s" msgstr "database %s" -#: catalog/objectaddress.c:3002 +#: catalog/objectaddress.c:3001 #, c-format msgid "tablespace %s" msgstr "tablespace %s" -#: catalog/objectaddress.c:3011 +#: catalog/objectaddress.c:3010 #, c-format msgid "foreign-data wrapper %s" msgstr "wrapper di dati esterni %s" -#: catalog/objectaddress.c:3020 +#: catalog/objectaddress.c:3019 #, c-format msgid "server %s" msgstr "server %s" -#: catalog/objectaddress.c:3048 +#: catalog/objectaddress.c:3047 #, c-format msgid "user mapping for %s on server %s" msgstr "mappatura utenti per %s sul server %s" -#: catalog/objectaddress.c:3083 +#: catalog/objectaddress.c:3082 #, c-format msgid "default privileges on new relations belonging to role %s" msgstr "privilegi predefiniti sulle nuove relazioni appartenenti al ruolo %s" -#: catalog/objectaddress.c:3088 +#: catalog/objectaddress.c:3087 #, c-format msgid "default privileges on new sequences belonging to role %s" msgstr "privilegi predefiniti sulle nuove sequenze appartenenti al ruolo %s" -#: catalog/objectaddress.c:3093 +#: catalog/objectaddress.c:3092 #, c-format msgid "default privileges on new functions belonging to role %s" msgstr "privilegi predefiniti sulle nuove funzioni appartenenti al ruolo %s" -#: catalog/objectaddress.c:3098 +#: catalog/objectaddress.c:3097 #, c-format msgid "default privileges on new types belonging to role %s" msgstr "privilegi predefiniti sui nuovi tipi appartenenti al ruolo %s" -#: catalog/objectaddress.c:3104 +#: catalog/objectaddress.c:3103 #, c-format msgid "default privileges belonging to role %s" msgstr "privilegi predefiniti appartenenti al ruolo %s" -#: catalog/objectaddress.c:3112 +#: catalog/objectaddress.c:3111 #, c-format msgid " in schema %s" msgstr " nello schema %s" -#: catalog/objectaddress.c:3129 +#: catalog/objectaddress.c:3128 #, c-format msgid "extension %s" msgstr "estensione %s" -#: catalog/objectaddress.c:3142 +#: catalog/objectaddress.c:3141 #, c-format msgid "event trigger %s" msgstr "trigger di evento %s" -#: catalog/objectaddress.c:3174 +#: catalog/objectaddress.c:3173 #, c-format msgid "policy %s on " msgstr "regola di sicurezza %s su " -#: catalog/objectaddress.c:3192 +#: catalog/objectaddress.c:3191 #, c-format msgid "access method %s" msgstr "metodo di accesso %s" -#: catalog/objectaddress.c:3252 +#: catalog/objectaddress.c:3251 #, c-format msgid "table %s" msgstr "tabella %s" -#: catalog/objectaddress.c:3256 +#: catalog/objectaddress.c:3255 #, c-format msgid "index %s" msgstr "indice %s" -#: catalog/objectaddress.c:3260 +#: catalog/objectaddress.c:3259 #, c-format msgid "sequence %s" msgstr "sequenza %s" -#: catalog/objectaddress.c:3264 +#: catalog/objectaddress.c:3263 #, c-format msgid "toast table %s" msgstr "tabella toast %s" -#: catalog/objectaddress.c:3268 +#: catalog/objectaddress.c:3267 #, c-format msgid "view %s" msgstr "vista %s" -#: catalog/objectaddress.c:3272 +#: catalog/objectaddress.c:3271 #, c-format msgid "materialized view %s" msgstr "vista materializzata %s" -#: catalog/objectaddress.c:3276 +#: catalog/objectaddress.c:3275 #, c-format msgid "composite type %s" msgstr "tipo composito %s" -#: catalog/objectaddress.c:3280 +#: catalog/objectaddress.c:3279 #, c-format msgid "foreign table %s" msgstr "tabella esterna %s" -#: catalog/objectaddress.c:3285 +#: catalog/objectaddress.c:3284 #, c-format msgid "relation %s" msgstr "relazione %s" -#: catalog/objectaddress.c:3322 +#: catalog/objectaddress.c:3321 #, c-format msgid "operator family %s for access method %s" msgstr "famiglia di operatori %s per il metodo d'accesso %s" -#: catalog/pg_aggregate.c:126 +#: catalog/pg_aggregate.c:125 #, c-format msgid "aggregates cannot have more than %d argument" msgid_plural "aggregates cannot have more than %d arguments" msgstr[0] "gli aggregati non possono avere più di %d argomento" msgstr[1] "gli aggregati non possono avere più di %d argomenti" -#: catalog/pg_aggregate.c:149 catalog/pg_aggregate.c:159 +#: catalog/pg_aggregate.c:148 catalog/pg_aggregate.c:158 #, c-format msgid "cannot determine transition data type" msgstr "non è possibile determinare il tipo di dati della transizione" -#: catalog/pg_aggregate.c:150 catalog/pg_aggregate.c:160 +#: catalog/pg_aggregate.c:149 catalog/pg_aggregate.c:159 #, c-format msgid "An aggregate using a polymorphic transition type must have at least one polymorphic argument." msgstr "Un aggregato che usa un tipo di transizione polimorfico deve avere almeno un argomento polimorfico." -#: catalog/pg_aggregate.c:173 +#: catalog/pg_aggregate.c:172 #, c-format msgid "a variadic ordered-set aggregate must use VARIADIC type ANY" msgstr "un aggregato variadico su insieme ordinato deve usare il tipo VARIADIC ANY" -#: catalog/pg_aggregate.c:199 +#: catalog/pg_aggregate.c:198 #, c-format msgid "a hypothetical-set aggregate must have direct arguments matching its aggregated arguments" msgstr "gli argomenti diretti di un aggregato su insieme ipotetico devono combaciare con gli argomenti aggregati" -#: catalog/pg_aggregate.c:246 catalog/pg_aggregate.c:290 +#: catalog/pg_aggregate.c:245 catalog/pg_aggregate.c:289 #, c-format msgid "return type of transition function %s is not %s" msgstr "il tipo restituito dalla funzione di transizione %s non è %s" -#: catalog/pg_aggregate.c:266 catalog/pg_aggregate.c:309 +#: catalog/pg_aggregate.c:265 catalog/pg_aggregate.c:308 #, c-format msgid "must not omit initial value when transition function is strict and transition type is not compatible with input type" msgstr "non si può omettere initval quando la funzione di transizione è strict e il tipo di transizione non è compatibile col tipo in input" -#: catalog/pg_aggregate.c:335 +#: catalog/pg_aggregate.c:334 #, c-format msgid "return type of inverse transition function %s is not %s" msgstr "il tipo restituito dalla funzione di transizione inversa %s non è %s" -#: catalog/pg_aggregate.c:352 executor/nodeWindowAgg.c:2305 +#: catalog/pg_aggregate.c:351 executor/nodeWindowAgg.c:2334 #, c-format msgid "strictness of aggregate's forward and inverse transition functions must match" msgstr "le ristrettezze della trasformazione diretta ed inversa di un aggregato devono combaciare" -#: catalog/pg_aggregate.c:396 catalog/pg_aggregate.c:547 +#: catalog/pg_aggregate.c:395 catalog/pg_aggregate.c:545 #, c-format msgid "final function with extra arguments must not be declared STRICT" msgstr "la funzione finale con argomenti aggiuntivi non deve essere dichiarata STRICT" -#: catalog/pg_aggregate.c:426 +#: catalog/pg_aggregate.c:425 #, c-format msgid "return type of combine function %s is not %s" msgstr "il tipo restituito dalla funzione di combinazione %s non è %s" -#: catalog/pg_aggregate.c:437 +#: catalog/pg_aggregate.c:436 #, c-format msgid "combine function with \"%s\" transition type must not be declared STRICT" msgstr "una funzione di combinazione con \"%s\" tipi di transizione non può essere dichiarata STRICT" -#: catalog/pg_aggregate.c:457 +#: catalog/pg_aggregate.c:455 #, c-format msgid "return type of serialization function %s is not %s" msgstr "il tipo restituito dalla funzione di serializzazione %s non è %s" -#: catalog/pg_aggregate.c:477 +#: catalog/pg_aggregate.c:475 #, c-format msgid "return type of deserialization function %s is not %s" msgstr "il tipo restituito dalla funzione di deserializzazione %s non è %s" -#: catalog/pg_aggregate.c:493 catalog/pg_proc.c:246 catalog/pg_proc.c:253 +#: catalog/pg_aggregate.c:491 catalog/pg_proc.c:246 catalog/pg_proc.c:253 #, c-format msgid "cannot determine result data type" msgstr "non è possibile determinare il tipo di dati del risultato" -#: catalog/pg_aggregate.c:494 +#: catalog/pg_aggregate.c:492 #, c-format msgid "An aggregate returning a polymorphic type must have at least one polymorphic argument." msgstr "Una funzione di aggregazione che restituisce un tipo polimorfico deve avere almeno un argomento polimorfico." -#: catalog/pg_aggregate.c:506 catalog/pg_proc.c:259 +#: catalog/pg_aggregate.c:504 catalog/pg_proc.c:259 #, c-format msgid "unsafe use of pseudo-type \"internal\"" msgstr "uso dello pseudo-tipo \"internal\" non sicuro" -#: catalog/pg_aggregate.c:507 catalog/pg_proc.c:260 +#: catalog/pg_aggregate.c:505 catalog/pg_proc.c:260 #, c-format msgid "A function returning \"internal\" must have at least one \"internal\" argument." msgstr "Una funzione che restituisce \"internal\" deve avere almeno un argomento \"internal\"." -#: catalog/pg_aggregate.c:560 +#: catalog/pg_aggregate.c:558 #, c-format msgid "moving-aggregate implementation returns type %s, but plain implementation returns type %s" msgstr "l'implementazione dell'aggregazione mobile restituisce il tipo %s ma l'implementazione semplice resituisce il tipo %s" -#: catalog/pg_aggregate.c:571 +#: catalog/pg_aggregate.c:569 #, c-format msgid "sort operator can only be specified for single-argument aggregates" msgstr "l'operatore di ordinamento può essere specificato sono per aggregati con un solo argomento" -#: catalog/pg_aggregate.c:816 commands/typecmds.c:1705 -#: commands/typecmds.c:1756 commands/typecmds.c:1787 commands/typecmds.c:1810 -#: commands/typecmds.c:1831 commands/typecmds.c:1858 commands/typecmds.c:1885 -#: commands/typecmds.c:1962 commands/typecmds.c:2004 parser/parse_func.c:364 -#: parser/parse_func.c:393 parser/parse_func.c:418 parser/parse_func.c:432 -#: parser/parse_func.c:507 parser/parse_func.c:518 parser/parse_func.c:1921 +#: catalog/pg_aggregate.c:812 commands/typecmds.c:1705 commands/typecmds.c:1756 +#: commands/typecmds.c:1787 commands/typecmds.c:1810 commands/typecmds.c:1831 +#: commands/typecmds.c:1858 commands/typecmds.c:1885 commands/typecmds.c:1962 +#: commands/typecmds.c:2004 parser/parse_func.c:364 parser/parse_func.c:393 +#: parser/parse_func.c:418 parser/parse_func.c:432 parser/parse_func.c:507 +#: parser/parse_func.c:518 parser/parse_func.c:1923 #, c-format msgid "function %s does not exist" msgstr "la funzione %s non esiste" -#: catalog/pg_aggregate.c:822 +#: catalog/pg_aggregate.c:818 #, c-format msgid "function %s returns a set" msgstr "la funzione %s restituisce un insieme" -#: catalog/pg_aggregate.c:837 +#: catalog/pg_aggregate.c:833 #, c-format msgid "function %s must accept VARIADIC ANY to be used in this aggregate" msgstr "la funzione %s deve accettare VARIADIC ANY per essere usata in questo aggregato" -#: catalog/pg_aggregate.c:861 +#: catalog/pg_aggregate.c:857 #, c-format msgid "function %s requires run-time type coercion" msgstr "la funzione %s richiede una coercizione di tipo a run-time" @@ -4565,7 +4585,7 @@ msgstr "la conversione \"%s\" esiste già" msgid "default conversion for %s to %s already exists" msgstr "la conversione predefinita da %s a %s esiste già" -#: catalog/pg_depend.c:165 commands/extension.c:3028 +#: catalog/pg_depend.c:165 commands/extension.c:3032 #, c-format msgid "%s is already a member of extension \"%s\"" msgstr "%s fa già parte dell'estensione \"%s\"" @@ -4610,7 +4630,7 @@ msgstr "valore di OID di pg_enum non impostato in modalità di aggiornamento bin msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade" msgstr "ALTER TYPE ADD BEFORE/AFTER non è compatibile con gli aggiornamenti binari" -#: catalog/pg_namespace.c:61 commands/schemacmds.c:250 +#: catalog/pg_namespace.c:61 commands/schemacmds.c:246 #, c-format msgid "schema \"%s\" already exists" msgstr "lo schema \"%s\" esiste già" @@ -4675,7 +4695,7 @@ msgstr "l'operatore %s esiste già " msgid "operator cannot be its own negator or sort operator" msgstr "l'operatore non può negare o ordinare se stesso" -#: catalog/pg_proc.c:134 parser/parse_func.c:1945 parser/parse_func.c:1985 +#: catalog/pg_proc.c:134 parser/parse_func.c:1947 parser/parse_func.c:1987 #, c-format msgid "functions cannot have more than %d argument" msgid_plural "functions cannot have more than %d arguments" @@ -4768,7 +4788,7 @@ msgstr "Le funzioni SQL non possono restituire il tipo %s" msgid "SQL functions cannot have arguments of type %s" msgstr "le funzioni SQL non possono avere argomenti di tipo %s" -#: catalog/pg_proc.c:973 executor/functions.c:1424 +#: catalog/pg_proc.c:973 executor/functions.c:1431 #, c-format msgid "SQL function \"%s\"" msgstr "funzione SQL \"%s\"" @@ -4872,8 +4892,8 @@ msgstr "i tipi a dimensione fissa devono avere immagazzinamento PLAIN" msgid "could not form array type name for type \"%s\"" msgstr "creazione del nome per il tipo array del tipo \"%s\" fallita" -#: catalog/toasting.c:105 commands/indexcmds.c:389 commands/tablecmds.c:4360 -#: commands/tablecmds.c:11902 +#: catalog/toasting.c:105 commands/indexcmds.c:389 commands/tablecmds.c:4359 +#: commands/tablecmds.c:12048 #, c-format msgid "\"%s\" is not a table or materialized view" msgstr "\"%s\" non è una tabella né una vista materializzata" @@ -4883,112 +4903,87 @@ msgstr "\"%s\" non è una tabella né una vista materializzata" msgid "shared tables cannot be toasted after initdb" msgstr "le tabelle condivise non possono essere trasformate in toast dopo initdb" -#: commands/aggregatecmds.c:161 +#: commands/aggregatecmds.c:159 #, c-format msgid "only ordered-set aggregates can be hypothetical" msgstr "solo gli aggregati su insiemi ordinati possono essere ipotetici" -#: commands/aggregatecmds.c:188 +#: commands/aggregatecmds.c:184 #, c-format msgid "aggregate attribute \"%s\" not recognized" msgstr "attributo dell'aggregato \"%s\" non riconosciuto" -#: commands/aggregatecmds.c:198 +#: commands/aggregatecmds.c:194 #, c-format msgid "aggregate stype must be specified" msgstr "l'attributo stype dell'aggregato deve essere specificato" -#: commands/aggregatecmds.c:202 +#: commands/aggregatecmds.c:198 #, c-format msgid "aggregate sfunc must be specified" msgstr "l'attributo sfunc dell'aggregato deve essere specificato" -#: commands/aggregatecmds.c:214 +#: commands/aggregatecmds.c:210 #, c-format msgid "aggregate msfunc must be specified when mstype is specified" msgstr "l'attributo msfunc dell'aggregato deve essere specificato quando mstype lo è" -#: commands/aggregatecmds.c:218 +#: commands/aggregatecmds.c:214 #, c-format msgid "aggregate minvfunc must be specified when mstype is specified" msgstr "l'attributo minvfunc dell'aggregato deve essere specificato quando mstype lo è" -#: commands/aggregatecmds.c:225 +#: commands/aggregatecmds.c:221 #, c-format msgid "aggregate msfunc must not be specified without mstype" msgstr "l'attributo msfunc dell'aggregato non deve essere specificato se mstype non lo è" -#: commands/aggregatecmds.c:229 +#: commands/aggregatecmds.c:225 #, c-format msgid "aggregate minvfunc must not be specified without mstype" msgstr "l'attributo minvfunc dell'aggregato non deve essere specificato se mstype non lo è" -#: commands/aggregatecmds.c:233 +#: commands/aggregatecmds.c:229 #, c-format msgid "aggregate mfinalfunc must not be specified without mstype" msgstr "l'attributo mfinalfunc dell'aggregato non deve essere specificato se mstype non lo è" -#: commands/aggregatecmds.c:237 +#: commands/aggregatecmds.c:233 #, c-format msgid "aggregate msspace must not be specified without mstype" msgstr "l'attributo msspace dell'aggregato non deve essere specificato se mstype non lo è" -#: commands/aggregatecmds.c:241 +#: commands/aggregatecmds.c:237 #, c-format msgid "aggregate minitcond must not be specified without mstype" msgstr "l'attributo minitcond dell'aggregato non deve essere specificato se mstype non lo è" -#: commands/aggregatecmds.c:261 +#: commands/aggregatecmds.c:257 #, c-format msgid "aggregate input type must be specified" msgstr "il tipo di input dell'aggregato deve essere specificato" -#: commands/aggregatecmds.c:291 +#: commands/aggregatecmds.c:287 #, c-format msgid "basetype is redundant with aggregate input type specification" msgstr "il basetype è ridondante se il tipo di input è specificato per un aggregato" -#: commands/aggregatecmds.c:332 commands/aggregatecmds.c:421 +#: commands/aggregatecmds.c:328 commands/aggregatecmds.c:369 #, c-format msgid "aggregate transition data type cannot be %s" msgstr "il tipo di dato della transizione dell'aggregato non può essere %s" -#: commands/aggregatecmds.c:347 -#, c-format -msgid "a serialization type must only be specified when the aggregate transition data type is \"%s\"" -msgstr "un tipo di serializzazione dev'essere specificato solo quando il tipo di dato di transizione dell'aggregato è \"%s\"" - -#: commands/aggregatecmds.c:356 +#: commands/aggregatecmds.c:340 #, c-format -msgid "aggregate serialization data type cannot be %s" -msgstr "il tipo di dato di serializzazione dell'aggregato non può essere %s" +msgid "serialization functions may be specified only when the aggregate transition data type is %s" +msgstr "le funzioni di serializzazione possono essere specificate solo quando il tipo di dato di transizione dell'aggregato è %s" -#: commands/aggregatecmds.c:369 +#: commands/aggregatecmds.c:350 #, c-format -msgid "aggregate serialization type cannot be \"%s\"" -msgstr "il tipo di serializzazione dell'aggregato non può essere \"%s\"" +msgid "must specify both or neither of serialization and deserialization functions" +msgstr "occorre specificare o entrambe le funzioni di serializzazione e deserializzazione o nessuna" -#: commands/aggregatecmds.c:380 -#, c-format -msgid "aggregate serialization function must be specified when serialization type is specified" -msgstr "occorre specificare una funzione di serializzazione dell'aggregato quando il tipo di serializzazione è specificato" - -#: commands/aggregatecmds.c:385 -#, c-format -msgid "aggregate deserialization function must be specified when serialization type is specified" -msgstr "occorre specificare una funzione di deserializzazione dell'aggregato quando il tipo di serializzazione è specificato" - -#: commands/aggregatecmds.c:396 -#, c-format -msgid "must specify serialization type when specifying serialization function" -msgstr "occorre specificare il tipo di serializzazione quando la funzione di serializzazione è specificata" - -#: commands/aggregatecmds.c:402 -#, c-format -msgid "must specify serialization type when specifying deserialization function" -msgstr "occorre specificare il tipo di serializzazione quando la funzione di deserializzazione è specificata" - -#: commands/aggregatecmds.c:467 commands/functioncmds.c:570 +#: commands/aggregatecmds.c:415 commands/functioncmds.c:570 #, c-format msgid "parameter \"parallel\" must be SAFE, RESTRICTED, or UNSAFE" msgstr "il parametro \"parallel\" deve essere SAFE, RESTRICTED o UNSAFE" @@ -5043,7 +5038,7 @@ msgstr "la configurazione di ricerca di testo \"%s\" esiste già nello schema \" msgid "must be superuser to rename %s" msgstr "occorre essere un superutente per rinominare %s" -#: commands/alter.c:656 +#: commands/alter.c:655 #, c-format msgid "must be superuser to set schema of %s" msgstr "occorre essere un superutente per impostare lo schema di %s" @@ -5068,7 +5063,7 @@ msgstr "il metodo di accesso \"%s\" esiste già" msgid "must be superuser to drop access methods" msgstr "occorre essere un superutente per eliminare un metodo di accesso" -#: commands/amcmds.c:175 commands/indexcmds.c:164 commands/indexcmds.c:495 +#: commands/amcmds.c:175 commands/indexcmds.c:164 commands/indexcmds.c:496 #: commands/opclasscmds.c:365 commands/opclasscmds.c:790 #, c-format msgid "access method \"%s\" does not exist" @@ -5126,71 +5121,71 @@ msgstr "analisi dell'albero di ereditarietà di \"%s.%s\"" msgid "analyzing \"%s.%s\"" msgstr "analisi di \"%s.%s\"" -#: commands/analyze.c:651 +#: commands/analyze.c:650 #, c-format msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s" msgstr "analisi automatica della tabella \"%s.%s.%s\" uso del sistema: %s" -#: commands/analyze.c:1207 +#: commands/analyze.c:1204 #, c-format msgid "\"%s\": scanned %d of %u pages, containing %.0f live rows and %.0f dead rows; %d rows in sample, %.0f estimated total rows" msgstr "\"%s\": esaminate %d pagine su %u, contenenti %.0f righe vive e %.0f righe morte; %d righe nel campione, %.0f righe totali stimate" -#: commands/analyze.c:1286 +#: commands/analyze.c:1283 #, c-format msgid "skipping analyze of \"%s.%s\" inheritance tree --- this inheritance tree contains no child tables" msgstr "analyze dell'albero di ereditarietà \"%s.%s\" saltato --- questo albero non ha tabelle figlie" -#: commands/analyze.c:1375 +#: commands/analyze.c:1372 #, c-format msgid "skipping analyze of \"%s.%s\" inheritance tree --- this inheritance tree contains no analyzable child tables" msgstr "analyze dell'albero di ereditarietà \"%s.%s\" saltato --- questo albero non ha tabelle figlie analizzabili" -#: commands/analyze.c:1423 executor/execQual.c:2922 +#: commands/analyze.c:1420 commands/tablecmds.c:8080 executor/execQual.c:2927 msgid "could not convert row type" msgstr "conversione del tipo riga fallita" -#: commands/async.c:558 +#: commands/async.c:555 #, c-format msgid "channel name cannot be empty" msgstr "Il nome del canale non può essere vuoto" -#: commands/async.c:563 +#: commands/async.c:560 #, c-format msgid "channel name too long" msgstr "il nome del canale è troppo lungo" -#: commands/async.c:570 +#: commands/async.c:567 #, c-format msgid "payload string too long" msgstr "la stringa del carico è troppo lunga" -#: commands/async.c:756 +#: commands/async.c:753 #, c-format msgid "cannot PREPARE a transaction that has executed LISTEN, UNLISTEN, or NOTIFY" msgstr "non è possibile eseguire PREPARE in una transazione che ha eseguito LISTEN, UNLISTEN o NOTIFY" -#: commands/async.c:859 +#: commands/async.c:856 #, c-format msgid "too many notifications in the NOTIFY queue" msgstr "troppe notifiche nella coda di NOTIFY" -#: commands/async.c:1489 +#: commands/async.c:1486 #, c-format msgid "NOTIFY queue is %.0f%% full" msgstr "la coda di NOTIFY è piena al %.0f%%" -#: commands/async.c:1491 +#: commands/async.c:1488 #, c-format msgid "The server process with PID %d is among those with the oldest transactions." msgstr "Il processo server con PID %d è tra quelli con le transazioni più vecchie." -#: commands/async.c:1494 +#: commands/async.c:1491 #, c-format msgid "The NOTIFY queue cannot be emptied until that process ends its current transaction." msgstr "La coda di NOTIFY non può essere svuotata finché quel processo non avrà terminato la sua transazione corrente." -#: commands/cluster.c:129 commands/cluster.c:366 +#: commands/cluster.c:129 commands/cluster.c:364 #, c-format msgid "cannot cluster temporary tables of other sessions" msgstr "non è possibile raggruppare tabelle temporanee di altre sessioni" @@ -5200,37 +5195,37 @@ msgstr "non è possibile raggruppare tabelle temporanee di altre sessioni" msgid "there is no previously clustered index for table \"%s\"" msgstr "non esiste un indice già raggruppato per la tabella \"%s\"" -#: commands/cluster.c:173 commands/tablecmds.c:9288 commands/tablecmds.c:11004 +#: commands/cluster.c:173 commands/tablecmds.c:9384 commands/tablecmds.c:11144 #, c-format msgid "index \"%s\" for table \"%s\" does not exist" msgstr "l'indice \"%s\" per la tabella \"%s\" non esiste" -#: commands/cluster.c:355 +#: commands/cluster.c:353 #, c-format msgid "cannot cluster a shared catalog" msgstr "non è possibile raggruppare un catalogo condiviso" -#: commands/cluster.c:370 +#: commands/cluster.c:368 #, c-format msgid "cannot vacuum temporary tables of other sessions" msgstr "non è possibile ripulire tabelle temporanee di altre sessioni" -#: commands/cluster.c:433 commands/tablecmds.c:11014 +#: commands/cluster.c:431 commands/tablecmds.c:11154 #, c-format msgid "\"%s\" is not an index for table \"%s\"" msgstr "\"%s\" non è un indice per la tabella \"%s\"" -#: commands/cluster.c:441 +#: commands/cluster.c:439 #, c-format msgid "cannot cluster on index \"%s\" because access method does not support clustering" msgstr "non è possibile raggruppare sull'indice \"%s\" perché il metodo di accesso non supporta il raggruppamento" -#: commands/cluster.c:453 +#: commands/cluster.c:451 #, c-format msgid "cannot cluster on partial index \"%s\"" msgstr "non è possibile raggruppare sull'indice parziale \"%s\"" -#: commands/cluster.c:467 +#: commands/cluster.c:465 #, c-format msgid "cannot cluster on invalid index \"%s\"" msgstr "non è possibile raggruppare sull'indice non valido \"%s\"" @@ -5245,7 +5240,7 @@ msgstr "raggruppamento di \"%s.%s\" usando una scansione sull'indice \"%s\"" msgid "clustering \"%s.%s\" using sequential scan and sort" msgstr "raggruppamento di \"%s.%s\" usando una scansione sequenziale e ordinamento" -#: commands/cluster.c:931 commands/vacuumlazy.c:476 +#: commands/cluster.c:931 commands/vacuumlazy.c:484 #, c-format msgid "vacuuming \"%s.%s\"" msgstr "pulizia di \"%s.%s\"" @@ -5292,23 +5287,23 @@ msgstr "l'ordinamento \"%s\" già esiste nello schema \"%s\"" #: commands/comment.c:62 commands/dbcommands.c:797 commands/dbcommands.c:962 #: commands/dbcommands.c:1067 commands/dbcommands.c:1257 #: commands/dbcommands.c:1477 commands/dbcommands.c:1594 -#: commands/dbcommands.c:2011 utils/init/postinit.c:842 -#: utils/init/postinit.c:944 utils/init/postinit.c:961 +#: commands/dbcommands.c:2011 utils/init/postinit.c:841 +#: utils/init/postinit.c:943 utils/init/postinit.c:960 #, c-format msgid "database \"%s\" does not exist" msgstr "il database \"%s\" non esiste" -#: commands/comment.c:101 commands/seclabel.c:116 parser/parse_utilcmd.c:768 +#: commands/comment.c:101 commands/seclabel.c:116 parser/parse_utilcmd.c:753 #, c-format msgid "\"%s\" is not a table, view, materialized view, composite type, or foreign table" msgstr "\"%s\" non è una tabella, vista, vista materializzata, tipo composito né una tabella esterna" -#: commands/constraint.c:60 utils/adt/ri_triggers.c:2717 +#: commands/constraint.c:60 utils/adt/ri_triggers.c:2715 #, c-format msgid "function \"%s\" was not called by trigger manager" msgstr "la funzione \"%s\" non è stata invocata dal trigger manager" -#: commands/constraint.c:67 utils/adt/ri_triggers.c:2726 +#: commands/constraint.c:67 utils/adt/ri_triggers.c:2724 #, c-format msgid "function \"%s\" must be fired AFTER ROW" msgstr "la funzione \"%s\" deve essere eseguita AFTER ROW" @@ -5390,466 +5385,466 @@ msgstr "Chiunque può eseguire COPY verso stdout e da stdin. Anche il comando \\ msgid "must be superuser to COPY to or from a file" msgstr "bisogna essere un superutente per eseguire un COPY da o verso un file" -#: commands/copy.c:878 +#: commands/copy.c:879 #, c-format msgid "COPY FROM not supported with row-level security" msgstr "COPY FROM non supportato con il livello di sicurezza di righe" -#: commands/copy.c:879 +#: commands/copy.c:880 #, c-format msgid "Use INSERT statements instead." msgstr "Usa istruzioni INSERT invece." -#: commands/copy.c:1019 +#: commands/copy.c:1059 #, c-format msgid "COPY format \"%s\" not recognized" msgstr "Formato di COPY \"%s\" non riconosciuto" -#: commands/copy.c:1090 commands/copy.c:1104 commands/copy.c:1118 -#: commands/copy.c:1138 +#: commands/copy.c:1130 commands/copy.c:1144 commands/copy.c:1158 +#: commands/copy.c:1178 #, c-format msgid "argument to option \"%s\" must be a list of column names" msgstr "l'argomento dell'opzione \"%s\" dev'essere una lista di nomi di colonne" -#: commands/copy.c:1151 +#: commands/copy.c:1191 #, c-format msgid "argument to option \"%s\" must be a valid encoding name" msgstr "l'argomento dell'opzione \"%s\" dev'essere un nome di codifica valido" -#: commands/copy.c:1157 commands/dbcommands.c:232 commands/dbcommands.c:1427 +#: commands/copy.c:1197 commands/dbcommands.c:232 commands/dbcommands.c:1427 #, c-format msgid "option \"%s\" not recognized" msgstr "opzione \"%s\" non riconosciuta" -#: commands/copy.c:1168 +#: commands/copy.c:1208 #, c-format msgid "cannot specify DELIMITER in BINARY mode" msgstr "non è possibile specificare DELIMITER in BINARY mode" -#: commands/copy.c:1173 +#: commands/copy.c:1213 #, c-format msgid "cannot specify NULL in BINARY mode" msgstr "non è possibile specificare NULL in BINARY mode" -#: commands/copy.c:1195 +#: commands/copy.c:1235 #, c-format msgid "COPY delimiter must be a single one-byte character" msgstr "il delimitatore di COPY deve essere un solo carattere di un solo byte" -#: commands/copy.c:1202 +#: commands/copy.c:1242 #, c-format msgid "COPY delimiter cannot be newline or carriage return" msgstr "Il delimitatore di COPY non può essere una \"nuova riga\" o un \"ritorno carrello\"" -#: commands/copy.c:1208 +#: commands/copy.c:1248 #, c-format msgid "COPY null representation cannot use newline or carriage return" msgstr "la rappresentazione dei null in COPY non può usare \"nuova riga\" o \"ritorno carrello\"" -#: commands/copy.c:1225 +#: commands/copy.c:1265 #, c-format msgid "COPY delimiter cannot be \"%s\"" msgstr "il delimitatore di COPY non può essere \"%s\"" -#: commands/copy.c:1231 +#: commands/copy.c:1271 #, c-format msgid "COPY HEADER available only in CSV mode" msgstr "l'HEADER di COPY è disponibile solo in modalità CSV" -#: commands/copy.c:1237 +#: commands/copy.c:1277 #, c-format msgid "COPY quote available only in CSV mode" msgstr "il quoting di COPY è disponibile solo in modalità CSV" -#: commands/copy.c:1242 +#: commands/copy.c:1282 #, c-format msgid "COPY quote must be a single one-byte character" msgstr "il quote di COPY dev'essere un solo carattere di un byte" -#: commands/copy.c:1247 +#: commands/copy.c:1287 #, c-format msgid "COPY delimiter and quote must be different" msgstr "il delimitatore e il quote di COPY devono essere diversi" -#: commands/copy.c:1253 +#: commands/copy.c:1293 #, c-format msgid "COPY escape available only in CSV mode" msgstr "l'escape di COPY è disponibile solo in modalità CSV" -#: commands/copy.c:1258 +#: commands/copy.c:1298 #, c-format msgid "COPY escape must be a single one-byte character" msgstr "l'escape di COPY deve essere un solo carattere di un byte" -#: commands/copy.c:1264 +#: commands/copy.c:1304 #, c-format msgid "COPY force quote available only in CSV mode" msgstr "il \"force quote\" di COPY è disponibile solo in modalità CSV" -#: commands/copy.c:1268 +#: commands/copy.c:1308 #, c-format msgid "COPY force quote only available using COPY TO" msgstr "il \"force quote\" di COPY è disponibile solo in modalità CSV" -#: commands/copy.c:1274 +#: commands/copy.c:1314 #, c-format msgid "COPY force not null available only in CSV mode" msgstr "il \"force not null\" di COPY è disponibile solo in modalità CSV" -#: commands/copy.c:1278 +#: commands/copy.c:1318 #, c-format msgid "COPY force not null only available using COPY FROM" msgstr "il \"force not null\" di COPY è disponibile solo in COPY FROM" -#: commands/copy.c:1284 +#: commands/copy.c:1324 #, c-format msgid "COPY force null available only in CSV mode" msgstr "il \"force null\" di COPY è disponibile solo in modalità CSV" -#: commands/copy.c:1289 +#: commands/copy.c:1329 #, c-format msgid "COPY force null only available using COPY FROM" msgstr "il \"force null\" di COPY è disponibile solo usando COPY FROM" -#: commands/copy.c:1295 +#: commands/copy.c:1335 #, c-format msgid "COPY delimiter must not appear in the NULL specification" msgstr "il delimitatore di COPY non deve apparire nella specificazione di NULL" -#: commands/copy.c:1302 +#: commands/copy.c:1342 #, c-format msgid "CSV quote character must not appear in the NULL specification" msgstr "Il carattere quote del CSV non deve apparire nella specificazione di NULL" -#: commands/copy.c:1365 +#: commands/copy.c:1403 #, c-format msgid "table \"%s\" does not have OIDs" msgstr "la tabella \"%s\" non ha OID" -#: commands/copy.c:1382 +#: commands/copy.c:1420 #, c-format msgid "COPY (query) WITH OIDS is not supported" msgstr "COPY (query) WITH OIDS non è supportata" -#: commands/copy.c:1402 +#: commands/copy.c:1440 #, c-format msgid "DO INSTEAD NOTHING rules are not supported for COPY" msgstr "le regole DO INSTEAD NOTHING non sono supportate per COPY" -#: commands/copy.c:1416 +#: commands/copy.c:1454 #, c-format msgid "conditional DO INSTEAD rules are not supported for COPY" msgstr "le regole DO INSTEAD condizionali non sono supportate per COPY" -#: commands/copy.c:1420 +#: commands/copy.c:1458 #, c-format msgid "DO ALSO rules are not supported for the COPY" msgstr "le regole DO ALSO non sono supportate per COPY" -#: commands/copy.c:1425 +#: commands/copy.c:1463 #, c-format msgid "multi-statement DO INSTEAD rules are not supported for COPY" msgstr "le regole DO INSTEAD con più istruzioni non sono supportate per COPY" -#: commands/copy.c:1435 +#: commands/copy.c:1473 #, c-format msgid "COPY (SELECT INTO) is not supported" msgstr "COPY (SELECT INTO) non è supportata" -#: commands/copy.c:1452 +#: commands/copy.c:1490 #, c-format msgid "COPY query must have a RETURNING clause" msgstr "la query COPY deve avere una clausola RETURNING" -#: commands/copy.c:1480 +#: commands/copy.c:1518 #, c-format msgid "relation referenced by COPY statement has changed" msgstr "la relazione referenziata dall'istruzione COPY è cambiata" -#: commands/copy.c:1538 +#: commands/copy.c:1576 #, c-format msgid "FORCE_QUOTE column \"%s\" not referenced by COPY" msgstr "la colonna FORCE_QUOTE \"%s\" non è referenziata da COPY" -#: commands/copy.c:1560 +#: commands/copy.c:1598 #, c-format msgid "FORCE_NOT_NULL column \"%s\" not referenced by COPY" msgstr "la colonna FORCE_NOT_NULL \"%s\" non è referenziata da COPY" -#: commands/copy.c:1582 +#: commands/copy.c:1620 #, c-format msgid "FORCE_NULL column \"%s\" not referenced by COPY" msgstr "la colonna FORCE_NULL \"%s\" non è referenziata da COPY" -#: commands/copy.c:1647 +#: commands/copy.c:1685 #, c-format msgid "could not close pipe to external command: %m" msgstr "chiusura della pipe per verso il comando esterno fallita: %m" -#: commands/copy.c:1651 +#: commands/copy.c:1689 #, c-format msgid "program \"%s\" failed" msgstr "programma \"%s\" fallito" -#: commands/copy.c:1701 +#: commands/copy.c:1739 #, c-format msgid "cannot copy from view \"%s\"" msgstr "non è possibile copiare dalla vista \"%s\"" -#: commands/copy.c:1703 commands/copy.c:1709 commands/copy.c:1715 +#: commands/copy.c:1741 commands/copy.c:1747 commands/copy.c:1753 #, c-format msgid "Try the COPY (SELECT ...) TO variant." msgstr "Prova la variante COPY (SELECT ...) TO." -#: commands/copy.c:1707 +#: commands/copy.c:1745 #, c-format msgid "cannot copy from materialized view \"%s\"" msgstr "non è possibile copiare dalla vista materializzata \"%s\"" -#: commands/copy.c:1713 +#: commands/copy.c:1751 #, c-format msgid "cannot copy from foreign table \"%s\"" msgstr "non è possibile copiare dalla tabella esterna \"%s\"" -#: commands/copy.c:1719 +#: commands/copy.c:1757 #, c-format msgid "cannot copy from sequence \"%s\"" msgstr "non è possibile copiare dalla sequenza \"%s\"" -#: commands/copy.c:1724 +#: commands/copy.c:1762 #, c-format msgid "cannot copy from non-table relation \"%s\"" msgstr "non è possibile copiare dalla relazione \"%s\" perché non è una tabella" -#: commands/copy.c:1749 commands/copy.c:2787 +#: commands/copy.c:1787 commands/copy.c:2823 #, c-format msgid "could not execute command \"%s\": %m" msgstr "esecuzione del comando \"%s\" fallita: %m" -#: commands/copy.c:1764 +#: commands/copy.c:1802 #, c-format msgid "relative path not allowed for COPY to file" msgstr "i percorsi relativi non sono consentiti per il COPY verso un file" -#: commands/copy.c:1772 +#: commands/copy.c:1810 #, c-format msgid "could not open file \"%s\" for writing: %m" msgstr "apertura del file \"%s\" in scrittura fallita: %m" -#: commands/copy.c:1784 commands/copy.c:2810 +#: commands/copy.c:1822 commands/copy.c:2846 #, c-format msgid "\"%s\" is a directory" msgstr "\"%s\" è una directory" -#: commands/copy.c:2109 +#: commands/copy.c:2145 #, c-format msgid "COPY %s, line %d, column %s" msgstr "COPY %s, riga %d, colonna %s" -#: commands/copy.c:2113 commands/copy.c:2160 +#: commands/copy.c:2149 commands/copy.c:2196 #, c-format msgid "COPY %s, line %d" msgstr "COPY %s, riga %d" -#: commands/copy.c:2124 +#: commands/copy.c:2160 #, c-format msgid "COPY %s, line %d, column %s: \"%s\"" msgstr "COPY %s, riga %d, colonna %s: \"%s\"" -#: commands/copy.c:2132 +#: commands/copy.c:2168 #, c-format msgid "COPY %s, line %d, column %s: null input" msgstr "COPY %s, riga %d, colonna %s: input nullo" -#: commands/copy.c:2154 +#: commands/copy.c:2190 #, c-format msgid "COPY %s, line %d: \"%s\"" msgstr "COPY %s, riga %d: \"%s\"" -#: commands/copy.c:2238 +#: commands/copy.c:2274 #, c-format msgid "cannot copy to view \"%s\"" msgstr "non è possibile copiare verso la vista \"%s\"" -#: commands/copy.c:2243 +#: commands/copy.c:2279 #, c-format msgid "cannot copy to materialized view \"%s\"" msgstr "non è possibile copiare verso la vista materializzata \"%s\"" -#: commands/copy.c:2248 +#: commands/copy.c:2284 #, c-format msgid "cannot copy to foreign table \"%s\"" msgstr "non è possibile copiare verso la tabella esterna \"%s\"" -#: commands/copy.c:2253 +#: commands/copy.c:2289 #, c-format msgid "cannot copy to sequence \"%s\"" msgstr "non è possibile copiare verso sequenza \"%s\"" -#: commands/copy.c:2258 +#: commands/copy.c:2294 #, c-format msgid "cannot copy to non-table relation \"%s\"" msgstr "non è possibile copiare verso la relazione \"%s\" perché non è una tabella" -#: commands/copy.c:2321 +#: commands/copy.c:2357 #, c-format msgid "cannot perform FREEZE because of prior transaction activity" msgstr "non è possibile eseguire FREEZE a causa di precedente attività della transazione" -#: commands/copy.c:2327 +#: commands/copy.c:2363 #, c-format msgid "cannot perform FREEZE because the table was not created or truncated in the current subtransaction" msgstr "non è possibile eseguire FREEZE perché la tabella non è stata creata o troncata nella sottotransazione corrente" -#: commands/copy.c:2830 +#: commands/copy.c:2866 #, c-format msgid "COPY file signature not recognized" msgstr "formato del file COPY non riconosciuto" -#: commands/copy.c:2835 +#: commands/copy.c:2871 #, c-format msgid "invalid COPY file header (missing flags)" msgstr "intestazione del file COPY non valida (flag mancanti)" -#: commands/copy.c:2841 +#: commands/copy.c:2877 #, c-format msgid "unrecognized critical flags in COPY file header" msgstr "alcune flag critici non sono stati riconosciuti nell'intestazione del file COPY" -#: commands/copy.c:2847 +#: commands/copy.c:2883 #, c-format msgid "invalid COPY file header (missing length)" msgstr "intestazione del file COPY non valida (manca la lunghezza)" -#: commands/copy.c:2854 +#: commands/copy.c:2890 #, c-format msgid "invalid COPY file header (wrong length)" msgstr "intestazione del file COPY non valida (lunghezza errata)" -#: commands/copy.c:2987 commands/copy.c:3694 commands/copy.c:3924 +#: commands/copy.c:3023 commands/copy.c:3730 commands/copy.c:3960 #, c-format msgid "extra data after last expected column" msgstr "ci sono dati in eccesso dopo l'ultima colonna attesa" -#: commands/copy.c:2997 +#: commands/copy.c:3033 #, c-format msgid "missing data for OID column" msgstr "dati per la colonna OID mancanti" -#: commands/copy.c:3003 +#: commands/copy.c:3039 #, c-format msgid "null OID in COPY data" msgstr "OID nullo nei dati da COPY" -#: commands/copy.c:3013 commands/copy.c:3136 +#: commands/copy.c:3049 commands/copy.c:3172 #, c-format msgid "invalid OID in COPY data" msgstr "OID non valido nei dati da COPY" -#: commands/copy.c:3028 +#: commands/copy.c:3064 #, c-format msgid "missing data for column \"%s\"" msgstr "dati mancanti per la colonna \"%s\"" -#: commands/copy.c:3111 +#: commands/copy.c:3147 #, c-format msgid "received copy data after EOF marker" msgstr "dati da copiare ricevuti dopo il segnalatore di fine file" -#: commands/copy.c:3118 +#: commands/copy.c:3154 #, c-format msgid "row field count is %d, expected %d" msgstr "il numero di campi è %d, ne erano attesi %d" -#: commands/copy.c:3458 commands/copy.c:3475 +#: commands/copy.c:3494 commands/copy.c:3511 #, c-format msgid "literal carriage return found in data" msgstr "\"ritorno carrello\" trovato nei dati" -#: commands/copy.c:3459 commands/copy.c:3476 +#: commands/copy.c:3495 commands/copy.c:3512 #, c-format msgid "unquoted carriage return found in data" msgstr "\"ritorno carrello\" non quotato trovato nei dati" -#: commands/copy.c:3461 commands/copy.c:3478 +#: commands/copy.c:3497 commands/copy.c:3514 #, c-format msgid "Use \"\\r\" to represent carriage return." msgstr "Usa \"\\r\" per rappresentare i caratteri \"ritorno carrello\"." -#: commands/copy.c:3462 commands/copy.c:3479 +#: commands/copy.c:3498 commands/copy.c:3515 #, c-format msgid "Use quoted CSV field to represent carriage return." msgstr "Usa un campo CSV quotato per rappresentare i caratteri \"ritorno carrello\"." -#: commands/copy.c:3491 +#: commands/copy.c:3527 #, c-format msgid "literal newline found in data" msgstr "\"nuova riga\" letterale trovato nei dati" -#: commands/copy.c:3492 +#: commands/copy.c:3528 #, c-format msgid "unquoted newline found in data" msgstr "\"nuova riga\" non quotato trovato nei dati" -#: commands/copy.c:3494 +#: commands/copy.c:3530 #, c-format msgid "Use \"\\n\" to represent newline." msgstr "Usa \"\\n\" per rappresentare i caratteri \"nuova riga\"." -#: commands/copy.c:3495 +#: commands/copy.c:3531 #, c-format msgid "Use quoted CSV field to represent newline." msgstr "Usa un campo CSV quotato per rappresentare i caratteri \"nuova riga\"." -#: commands/copy.c:3541 commands/copy.c:3577 +#: commands/copy.c:3577 commands/copy.c:3613 #, c-format msgid "end-of-copy marker does not match previous newline style" msgstr "il marcatore di fine copia non combacia con il precedente stile \"nuova riga\"" -#: commands/copy.c:3550 commands/copy.c:3566 +#: commands/copy.c:3586 commands/copy.c:3602 #, c-format msgid "end-of-copy marker corrupt" msgstr "il marcatore di fine copia è corrotto" -#: commands/copy.c:4008 +#: commands/copy.c:4044 #, c-format msgid "unterminated CSV quoted field" msgstr "campo CSV tra virgolette non terminato" -#: commands/copy.c:4085 commands/copy.c:4104 +#: commands/copy.c:4121 commands/copy.c:4140 #, c-format msgid "unexpected EOF in COPY data" msgstr "fine file inattesa dei dati da COPY" -#: commands/copy.c:4094 +#: commands/copy.c:4130 #, c-format msgid "invalid field size" msgstr "dimensione del campo non valida" -#: commands/copy.c:4117 +#: commands/copy.c:4153 #, c-format msgid "incorrect binary data format" msgstr "formato di dati binari non corretto" -#: commands/copy.c:4428 commands/indexcmds.c:1053 commands/tablecmds.c:1463 -#: commands/tablecmds.c:2290 parser/parse_relation.c:3084 -#: parser/parse_relation.c:3104 utils/adt/tsvector_op.c:2222 +#: commands/copy.c:4464 commands/indexcmds.c:1054 commands/tablecmds.c:1464 +#: commands/tablecmds.c:2291 parser/parse_relation.c:3177 +#: parser/parse_relation.c:3197 utils/adt/tsvector_op.c:2559 #, c-format msgid "column \"%s\" does not exist" msgstr "la colonna \"%s\" non esiste" -#: commands/copy.c:4435 commands/tablecmds.c:1489 commands/trigger.c:651 -#: parser/parse_target.c:956 parser/parse_target.c:967 +#: commands/copy.c:4471 commands/tablecmds.c:1490 commands/trigger.c:651 +#: parser/parse_target.c:967 parser/parse_target.c:978 #, c-format msgid "column \"%s\" specified more than once" msgstr "la colonna \"%s\" è stata specificata più di una volta" -#: commands/createas.c:383 +#: commands/createas.c:213 commands/createas.c:509 #, c-format msgid "too many column names were specified" msgstr "troppi nomi di colonne specificati" -#: commands/createas.c:452 +#: commands/createas.c:550 #, c-format msgid "policies not yet implemented for this command" msgstr "regole di sicurezza non ancora implementate per questo comando" @@ -6035,7 +6030,7 @@ msgstr "Occorre spostarle di nuovo nel tablespace di default del database prima #: commands/dbcommands.c:1325 commands/dbcommands.c:1868 #: commands/dbcommands.c:2072 commands/dbcommands.c:2120 -#: commands/tablespace.c:610 +#: commands/tablespace.c:606 #, c-format msgid "some useless files may be left behind in old database directory \"%s\"" msgstr "alcuni file inutili possono essere stati lasciati nella vecchia directory del database \"%s\"" @@ -6112,7 +6107,7 @@ msgid "invalid argument for %s: \"%s\"" msgstr "argomento non valido per %s: \"%s\"" #: commands/dropcmds.c:112 commands/functioncmds.c:1203 -#: utils/adt/ruleutils.c:1957 +#: utils/adt/ruleutils.c:2080 #, c-format msgid "\"%s\" is an aggregate function" msgstr "\"%s\" è una funzione di aggregazione" @@ -6122,124 +6117,129 @@ msgstr "\"%s\" è una funzione di aggregazione" msgid "Use DROP AGGREGATE to drop aggregate functions." msgstr "Usa DROP AGGREGATE per rimuovere le funzioni di aggregazione." -#: commands/dropcmds.c:165 commands/sequence.c:424 commands/tablecmds.c:2377 -#: commands/tablecmds.c:2528 commands/tablecmds.c:2570 -#: commands/tablecmds.c:11379 tcop/utility.c:1119 +#: commands/dropcmds.c:165 commands/sequence.c:424 commands/tablecmds.c:2378 +#: commands/tablecmds.c:2529 commands/tablecmds.c:2571 +#: commands/tablecmds.c:11525 tcop/utility.c:1119 #, c-format msgid "relation \"%s\" does not exist, skipping" msgstr "la relazione \"%s\" non esiste, saltata" -#: commands/dropcmds.c:195 commands/dropcmds.c:292 commands/tablecmds.c:745 +#: commands/dropcmds.c:195 commands/dropcmds.c:296 commands/tablecmds.c:746 #, c-format msgid "schema \"%s\" does not exist, skipping" msgstr "lo schema \"%s\" non esiste, saltato" -#: commands/dropcmds.c:237 commands/dropcmds.c:272 commands/tablecmds.c:246 +#: commands/dropcmds.c:237 commands/dropcmds.c:276 commands/tablecmds.c:247 #, c-format msgid "type \"%s\" does not exist, skipping" msgstr "il tipo \"%s\" non esiste, saltato" -#: commands/dropcmds.c:280 +#: commands/dropcmds.c:266 +#, c-format +msgid "access method \"%s\" does not exist, skipping" +msgstr "il metodo di accesso \"%s\" non esiste, saltato" + +#: commands/dropcmds.c:284 #, c-format msgid "collation \"%s\" does not exist, skipping" msgstr "l'ordinamento \"%s\" non esiste, saltato" -#: commands/dropcmds.c:287 +#: commands/dropcmds.c:291 #, c-format msgid "conversion \"%s\" does not exist, skipping" msgstr "la conversione \"%s\" non esiste, saltata" -#: commands/dropcmds.c:298 +#: commands/dropcmds.c:302 #, c-format msgid "text search parser \"%s\" does not exist, skipping" msgstr "l'analizzatore di ricerca di testo \"%s\" non esiste, saltato" -#: commands/dropcmds.c:305 +#: commands/dropcmds.c:309 #, c-format msgid "text search dictionary \"%s\" does not exist, skipping" msgstr "il dizionario di ricerca di testo \"%s\" non esiste, saltato" -#: commands/dropcmds.c:312 +#: commands/dropcmds.c:316 #, c-format msgid "text search template \"%s\" does not exist, skipping" msgstr "il modello di ricerca di testo \"%s\" non esiste, saltato" -#: commands/dropcmds.c:319 +#: commands/dropcmds.c:323 #, c-format msgid "text search configuration \"%s\" does not exist, skipping" msgstr "la combinazione di ricerca di testo \"%s\" non esiste, saltato" -#: commands/dropcmds.c:324 +#: commands/dropcmds.c:328 #, c-format msgid "extension \"%s\" does not exist, skipping" msgstr "l'estensione \"%s\" non esiste, saltata" -#: commands/dropcmds.c:331 +#: commands/dropcmds.c:335 #, c-format msgid "function %s(%s) does not exist, skipping" msgstr "la funzione %s(%s) non esiste, saltata" -#: commands/dropcmds.c:340 +#: commands/dropcmds.c:344 #, c-format msgid "aggregate %s(%s) does not exist, skipping" msgstr "la funzione di aggregazione %s(%s) non esiste, saltato" -#: commands/dropcmds.c:349 +#: commands/dropcmds.c:353 #, c-format msgid "operator %s does not exist, skipping" msgstr "l'operatore %s non esiste, saltato" -#: commands/dropcmds.c:354 +#: commands/dropcmds.c:358 #, c-format msgid "language \"%s\" does not exist, skipping" msgstr "il linguaggio \"%s\" non esiste, saltato" -#: commands/dropcmds.c:363 +#: commands/dropcmds.c:367 #, c-format msgid "cast from type %s to type %s does not exist, skipping" msgstr "la conversione dal tipo %s al tipo %s non esiste, saltata" -#: commands/dropcmds.c:372 +#: commands/dropcmds.c:376 #, c-format msgid "transform for type %s language \"%s\" does not exist, skipping" msgstr "la trasformazione per il tipo %s linguaggio \"%s\" non esiste, saltata" -#: commands/dropcmds.c:380 +#: commands/dropcmds.c:384 #, c-format msgid "trigger \"%s\" for relation \"%s\" does not exist, skipping" msgstr "il trigger \"%s\" per la relazione \"%s\" non esiste, saltato" -#: commands/dropcmds.c:389 +#: commands/dropcmds.c:393 #, c-format msgid "policy \"%s\" for relation \"%s\" does not exist, skipping" msgstr "la regola di sicurezza \"%s\" per la relazione \"%s\" non esiste, saltata" -#: commands/dropcmds.c:396 +#: commands/dropcmds.c:400 #, c-format msgid "event trigger \"%s\" does not exist, skipping" msgstr "il trigger di evento \"%s\" non esiste, saltato" -#: commands/dropcmds.c:402 +#: commands/dropcmds.c:406 #, c-format msgid "rule \"%s\" for relation \"%s\" does not exist, skipping" msgstr "la regola \"%s\" per la relazione \"%s\" non esiste, saltata" -#: commands/dropcmds.c:409 +#: commands/dropcmds.c:413 #, c-format msgid "foreign-data wrapper \"%s\" does not exist, skipping" msgstr "il wrapper di dati remoti \"%s\" non esiste, saltato" -#: commands/dropcmds.c:413 +#: commands/dropcmds.c:417 #, c-format msgid "server \"%s\" does not exist, skipping" msgstr "il server \"%s\" non esiste, saltato" -#: commands/dropcmds.c:422 +#: commands/dropcmds.c:426 #, c-format msgid "operator class \"%s\" does not exist for access method \"%s\", skipping" msgstr "la classe di operatori \"%s\" non esiste per il metodo di accesso \"%s\", saltata" -#: commands/dropcmds.c:434 +#: commands/dropcmds.c:438 #, c-format msgid "operator family \"%s\" does not exist for access method \"%s\", skipping" msgstr "la famiglia di operatori \"%s\" non esiste per il metodo di accesso \"%s\", saltata" @@ -6296,264 +6296,264 @@ msgstr "permesso di cambiare il proprietario del trigger di evento \"%s\" negato msgid "The owner of an event trigger must be a superuser." msgstr "Il proprietario di un trigger di evento deve essere un superutente." -#: commands/event_trigger.c:1442 +#: commands/event_trigger.c:1438 #, c-format msgid "%s can only be called in a sql_drop event trigger function" msgstr "%s può essere chiamata solo in una funzione trigger di evento sql_drop" -#: commands/event_trigger.c:1562 commands/event_trigger.c:1583 +#: commands/event_trigger.c:1558 commands/event_trigger.c:1579 #, c-format msgid "%s can only be called in a table_rewrite event trigger function" msgstr "%s può essere chiamata solo in una funzione trigger di evento table_rewrite" -#: commands/event_trigger.c:1993 +#: commands/event_trigger.c:1989 #, c-format msgid "%s can only be called in an event trigger function" msgstr "%s può essere chiamata solo in una funzione trigger di evento" -#: commands/explain.c:184 +#: commands/explain.c:185 #, c-format msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\"" msgstr "valore sconosciuto per l'opzione di EXPLAIN \"%s\": \"%s\"" -#: commands/explain.c:190 +#: commands/explain.c:191 #, c-format msgid "unrecognized EXPLAIN option \"%s\"" msgstr "opzione di EXPLAIN non riconosciuta \"%s\"" -#: commands/explain.c:197 +#: commands/explain.c:198 #, c-format msgid "EXPLAIN option BUFFERS requires ANALYZE" msgstr "l'opzione BUFFERS di EXPLAIN richiede ANALYZE" -#: commands/explain.c:206 +#: commands/explain.c:207 #, c-format msgid "EXPLAIN option TIMING requires ANALYZE" msgstr "l'opzione TIMING di EXPLAIN richiede ANALYZE" -#: commands/extension.c:154 commands/extension.c:2718 +#: commands/extension.c:155 commands/extension.c:2722 #, c-format msgid "extension \"%s\" does not exist" msgstr "l'estensione \"%s\" non esiste" -#: commands/extension.c:253 commands/extension.c:262 commands/extension.c:274 -#: commands/extension.c:284 +#: commands/extension.c:254 commands/extension.c:263 commands/extension.c:275 +#: commands/extension.c:285 #, c-format msgid "invalid extension name: \"%s\"" msgstr "nome di estensione non valido: \"%s\"" -#: commands/extension.c:254 +#: commands/extension.c:255 #, c-format msgid "Extension names must not be empty." msgstr "I nomi delle estensioni non possono essere vuoti." -#: commands/extension.c:263 +#: commands/extension.c:264 #, c-format msgid "Extension names must not contain \"--\"." msgstr "I nomi delle estensioni non possono contenere \"--\"." -#: commands/extension.c:275 +#: commands/extension.c:276 #, c-format msgid "Extension names must not begin or end with \"-\"." msgstr "I nomi delle estensioni non possono iniziare o finire con \"-\"." -#: commands/extension.c:285 +#: commands/extension.c:286 #, c-format msgid "Extension names must not contain directory separator characters." msgstr "I nomi delle estensioni non possono contenere caratteri separatore directory." -#: commands/extension.c:300 commands/extension.c:309 commands/extension.c:318 -#: commands/extension.c:328 +#: commands/extension.c:301 commands/extension.c:310 commands/extension.c:319 +#: commands/extension.c:329 #, c-format msgid "invalid extension version name: \"%s\"" msgstr "nome di versione dell'estensione non valido: \"%s\"" -#: commands/extension.c:301 +#: commands/extension.c:302 #, c-format msgid "Version names must not be empty." msgstr "I nomi di versione non possono essere vuoti." -#: commands/extension.c:310 +#: commands/extension.c:311 #, c-format msgid "Version names must not contain \"--\"." msgstr "I nomi di versione non possono contenere \"--\"." -#: commands/extension.c:319 +#: commands/extension.c:320 #, c-format msgid "Version names must not begin or end with \"-\"." msgstr "I nomi di versione non possono iniziare o finire con \"-\"." -#: commands/extension.c:329 +#: commands/extension.c:330 #, c-format msgid "Version names must not contain directory separator characters." msgstr "I nomi di versione non possono contenere caratteri separatore directory." -#: commands/extension.c:479 +#: commands/extension.c:480 #, c-format msgid "could not open extension control file \"%s\": %m" msgstr "apertura del file di controllo dell'estensione \"%s\" fallita: %m" -#: commands/extension.c:501 commands/extension.c:511 +#: commands/extension.c:502 commands/extension.c:512 #, c-format msgid "parameter \"%s\" cannot be set in a secondary extension control file" msgstr "il parametro \"%s\" non può essere impostato in un file di controllo secondario di estensione" -#: commands/extension.c:550 +#: commands/extension.c:551 #, c-format msgid "\"%s\" is not a valid encoding name" msgstr "\"%s\" non è un nome di codifica valido" -#: commands/extension.c:564 +#: commands/extension.c:565 #, c-format msgid "parameter \"%s\" must be a list of extension names" msgstr "il parametro \"%s\" dev'essere una lista di nomi di estensioni" -#: commands/extension.c:571 +#: commands/extension.c:572 #, c-format msgid "unrecognized parameter \"%s\" in file \"%s\"" msgstr "parametro sconosciuto \"%s\" nel file \"%s\"" -#: commands/extension.c:580 +#: commands/extension.c:581 #, c-format msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true" msgstr "il parametro \"schema\" non può essere specificato quando \"relocatable\" è abilitato" -#: commands/extension.c:721 +#: commands/extension.c:725 #, c-format msgid "transaction control statements are not allowed within an extension script" msgstr "le istruzioni di controllo di transazione non sono valide in uno script di estensione" -#: commands/extension.c:789 +#: commands/extension.c:793 #, c-format msgid "permission denied to create extension \"%s\"" msgstr "permesso di creare l'estensione \"%s\" negato" -#: commands/extension.c:791 +#: commands/extension.c:795 #, c-format msgid "Must be superuser to create this extension." msgstr "Solo un superutente può creare questa estensione." -#: commands/extension.c:795 +#: commands/extension.c:799 #, c-format msgid "permission denied to update extension \"%s\"" msgstr "permesso di modificare l'estensione \"%s\" negato" -#: commands/extension.c:797 +#: commands/extension.c:801 #, c-format msgid "Must be superuser to update this extension." msgstr "Solo un superutente può modificare questa estensione." -#: commands/extension.c:1079 +#: commands/extension.c:1083 #, c-format msgid "extension \"%s\" has no update path from version \"%s\" to version \"%s\"" msgstr "l'estensione \"%s\" non ha un percorso di aggiornamento dalla versione \"%s\" alla versione \"%s\"" -#: commands/extension.c:1261 commands/extension.c:2778 +#: commands/extension.c:1265 commands/extension.c:2782 #, c-format msgid "version to install must be specified" msgstr "il nome di versione da installare deve essere specificato" -#: commands/extension.c:1278 +#: commands/extension.c:1282 #, c-format msgid "FROM version must be different from installation target version \"%s\"" msgstr "la versione FROM dev'essere diversa dalla versione \"%s\" oggetto dell'installazione" -#: commands/extension.c:1343 +#: commands/extension.c:1347 #, c-format msgid "extension \"%s\" must be installed in schema \"%s\"" msgstr "l'estensione \"%s\" dev'essere installata nello schema \"%s\"" -#: commands/extension.c:1435 +#: commands/extension.c:1439 #, c-format msgid "cyclic dependency detected between extensions \"%s\" and \"%s\"" msgstr "individuata una dipendenza ciclica tra le estensioni \"%s\" e \"%s\"" -#: commands/extension.c:1440 +#: commands/extension.c:1444 #, c-format msgid "installing required extension \"%s\"" msgstr "installazione dell'estensione richiesta \"%s\"" -#: commands/extension.c:1468 commands/extension.c:2923 +#: commands/extension.c:1472 commands/extension.c:2927 #, c-format msgid "required extension \"%s\" is not installed" msgstr "l'estensione richiesta \"%s\" non è installata" -#: commands/extension.c:1470 +#: commands/extension.c:1474 #, c-format -msgid "Use CREATE EXTENSION CASCADE to install required extensions too." -msgstr "Usa CREATE EXTENSION CASCADE per installare anche le estensioni richieste." +msgid "Use CREATE EXTENSION ... CASCADE to install required extensions too." +msgstr "Usa CREATE EXTENSION ... CASCADE per installare anche le estensioni richieste." -#: commands/extension.c:1534 +#: commands/extension.c:1538 #, c-format msgid "extension \"%s\" already exists, skipping" msgstr "l'estensione \"%s\" esiste già, saltata" -#: commands/extension.c:1541 +#: commands/extension.c:1545 #, c-format msgid "extension \"%s\" already exists" msgstr "l'estensione \"%s\" esiste già" -#: commands/extension.c:1552 +#: commands/extension.c:1556 #, c-format msgid "nested CREATE EXTENSION is not supported" msgstr "CREATE EXTENSION annidati non sono supportati" -#: commands/extension.c:1680 +#: commands/extension.c:1684 #, c-format msgid "cannot drop extension \"%s\" because it is being modified" msgstr "non è possibile eliminare l'estensione \"%s\" perché sta venendo modificata" -#: commands/extension.c:2151 +#: commands/extension.c:2155 #, c-format msgid "pg_extension_config_dump() can only be called from an SQL script executed by CREATE EXTENSION" msgstr "pg_extension_config_dump() può essere richiamata solo da uno script SQL eseguito da CREATE EXTENSION" -#: commands/extension.c:2163 +#: commands/extension.c:2167 #, c-format msgid "OID %u does not refer to a table" msgstr "l'OID %u non si riferisce ad una tabella" -#: commands/extension.c:2168 +#: commands/extension.c:2172 #, c-format msgid "table \"%s\" is not a member of the extension being created" msgstr "la tabella \"%s\" non è membra dell'estensione in fase di creazione" -#: commands/extension.c:2533 +#: commands/extension.c:2537 #, c-format msgid "cannot move extension \"%s\" into schema \"%s\" because the extension contains the schema" msgstr "non è possibile spostare l'estensione \"%s\" nello schema \"%s\" perché l'estensione contiene lo schema" -#: commands/extension.c:2573 commands/extension.c:2636 +#: commands/extension.c:2577 commands/extension.c:2640 #, c-format msgid "extension \"%s\" does not support SET SCHEMA" msgstr "l'estensione \"%s\" non supporta SET SCHEMA" -#: commands/extension.c:2638 +#: commands/extension.c:2642 #, c-format msgid "%s is not in the extension's schema \"%s\"" msgstr "%s non è nello schema dell'estensione \"%s\"" -#: commands/extension.c:2698 +#: commands/extension.c:2702 #, c-format msgid "nested ALTER EXTENSION is not supported" msgstr "ALTER EXTENSION annidati non sono supportati" -#: commands/extension.c:2789 +#: commands/extension.c:2793 #, c-format msgid "version \"%s\" of extension \"%s\" is already installed" msgstr "la versione \"%s\" dell'estensione \"%s\" è già installata" -#: commands/extension.c:3040 +#: commands/extension.c:3044 #, c-format msgid "cannot add schema \"%s\" to extension \"%s\" because the schema contains the extension" msgstr "non è possibile aggiungere lo schema \"%s\" all'estensione \"%s\" perché lo schema contiene l'estensione" -#: commands/extension.c:3058 +#: commands/extension.c:3072 #, c-format msgid "%s is not a member of extension \"%s\"" msgstr "%s non fa parte dell'estensione \"%s\"" -#: commands/extension.c:3114 +#: commands/extension.c:3138 #, c-format msgid "file \"%s\" is too large" msgstr "il file \"%s\" è troppo grande" @@ -6583,7 +6583,7 @@ msgstr "Solo un superutente può cambiare proprietario di un wrapper di dati est msgid "The owner of a foreign-data wrapper must be a superuser." msgstr "Il proprietario di un wrapper di dati esterni dev'essere un superutente." -#: commands/foreigncmds.c:292 commands/foreigncmds.c:709 foreign/foreign.c:777 +#: commands/foreigncmds.c:292 commands/foreigncmds.c:709 foreign/foreign.c:671 #, c-format msgid "foreign-data wrapper \"%s\" does not exist" msgstr "il wrapper di dati esterni \"%s\" non esiste" @@ -6618,37 +6618,37 @@ msgstr "cambiare il gestore del wrapper di dati esterni può cambiare il comport msgid "changing the foreign-data wrapper validator can cause the options for dependent objects to become invalid" msgstr "cambiare il validatore del wrapper di dati esterni può rendere non valide le opzioni degli oggetti dipendenti" -#: commands/foreigncmds.c:1169 +#: commands/foreigncmds.c:1165 #, c-format msgid "user mapping \"%s\" already exists for server %s" msgstr "la mappatura utenti \"%s\" esiste già per il server %s" -#: commands/foreigncmds.c:1267 commands/foreigncmds.c:1388 +#: commands/foreigncmds.c:1259 commands/foreigncmds.c:1375 #, c-format msgid "user mapping \"%s\" does not exist for the server" msgstr "la mappatura utenti \"%s\" non esiste per il server" -#: commands/foreigncmds.c:1375 +#: commands/foreigncmds.c:1362 #, c-format msgid "server does not exist, skipping" msgstr "il server non esiste, saltato" -#: commands/foreigncmds.c:1393 +#: commands/foreigncmds.c:1380 #, c-format msgid "user mapping \"%s\" does not exist for the server, skipping" msgstr "la mappatura utenti \"%s\" non esiste per il server, saltata" -#: commands/foreigncmds.c:1545 foreign/foreign.c:467 +#: commands/foreigncmds.c:1532 foreign/foreign.c:361 #, c-format msgid "foreign-data wrapper \"%s\" has no handler" msgstr "il wrapper di dati remoti \"%s\" non ha un handler" -#: commands/foreigncmds.c:1551 +#: commands/foreigncmds.c:1538 #, c-format msgid "foreign-data wrapper \"%s\" does not support IMPORT FOREIGN SCHEMA" msgstr "il wrapper di dati remoti \"%s\" non supporta IMPORT FOREIGN SCHEMA" -#: commands/foreigncmds.c:1644 +#: commands/foreigncmds.c:1631 #, c-format msgid "importing foreign table \"%s\"" msgstr "importazione della tabella remota \"%s\"" @@ -7004,139 +7004,139 @@ msgstr "non è possibile creare indici sulla tabella esterna \"%s\"" msgid "cannot create indexes on temporary tables of other sessions" msgstr "non è possibile creare indici su tabelle temporanee di altre sessioni" -#: commands/indexcmds.c:454 commands/tablecmds.c:545 commands/tablecmds.c:9599 +#: commands/indexcmds.c:455 commands/tablecmds.c:546 commands/tablecmds.c:9695 #, c-format msgid "only shared relations can be placed in pg_global tablespace" msgstr "solo le relazioni condivise possono essere poste nel tablespace pg_global" -#: commands/indexcmds.c:487 +#: commands/indexcmds.c:488 #, c-format msgid "substituting access method \"gist\" for obsolete method \"rtree\"" msgstr "sostituzione del metodo di accesso \"gist\" per il metodo obsoleto \"rtree\"" -#: commands/indexcmds.c:505 +#: commands/indexcmds.c:506 #, c-format msgid "hash indexes are not WAL-logged and their use is discouraged" msgstr "gli indici hash non sono inviati con il log WAL e il loro uso è scoraggiato" -#: commands/indexcmds.c:510 +#: commands/indexcmds.c:511 #, c-format msgid "access method \"%s\" does not support unique indexes" msgstr "il metodo di accesso \"%s\" non supporta gli indici univoci" -#: commands/indexcmds.c:515 +#: commands/indexcmds.c:516 #, c-format msgid "access method \"%s\" does not support multicolumn indexes" msgstr "il metodo di accesso \"%s\" non supporta gli indici multicolonna" -#: commands/indexcmds.c:520 +#: commands/indexcmds.c:521 #, c-format msgid "access method \"%s\" does not support exclusion constraints" msgstr "il metodo di accesso \"%s\" non supporta i vincoli di esclusione" -#: commands/indexcmds.c:590 commands/indexcmds.c:610 +#: commands/indexcmds.c:591 commands/indexcmds.c:611 #, c-format msgid "index creation on system columns is not supported" msgstr "la creazione di indici su colonne di sistema non è supportata" -#: commands/indexcmds.c:635 +#: commands/indexcmds.c:636 #, c-format msgid "%s %s will create implicit index \"%s\" for table \"%s\"" msgstr "%s %s creerà un indice implicito \"%s\" per la tabella \"%s\"" -#: commands/indexcmds.c:982 +#: commands/indexcmds.c:983 #, c-format msgid "functions in index predicate must be marked IMMUTABLE" msgstr "le funzioni nel predicato dell'indice devono essere marcate IMMUTABLE" -#: commands/indexcmds.c:1048 parser/parse_utilcmd.c:1894 +#: commands/indexcmds.c:1049 parser/parse_utilcmd.c:1881 #, c-format msgid "column \"%s\" named in key does not exist" msgstr "la colonna \"%s\" nominata nella chiave non esiste" -#: commands/indexcmds.c:1108 +#: commands/indexcmds.c:1109 #, c-format msgid "functions in index expression must be marked IMMUTABLE" msgstr "le funzioni nell'espressione dell'indice devono essere marcate IMMUTABLE" -#: commands/indexcmds.c:1131 +#: commands/indexcmds.c:1132 #, c-format msgid "could not determine which collation to use for index expression" msgstr "non è stato possibile determinare quale ordinamento usare per l'espressione dell'indice" -#: commands/indexcmds.c:1139 commands/typecmds.c:827 parser/parse_expr.c:2559 -#: parser/parse_type.c:550 parser/parse_utilcmd.c:2820 utils/adt/misc.c:666 +#: commands/indexcmds.c:1140 commands/typecmds.c:827 parser/parse_expr.c:2608 +#: parser/parse_type.c:550 parser/parse_utilcmd.c:2807 utils/adt/misc.c:666 #, c-format msgid "collations are not supported by type %s" msgstr "gli ordinamenti non sono supportati dal tipo %s" -#: commands/indexcmds.c:1177 +#: commands/indexcmds.c:1178 #, c-format msgid "operator %s is not commutative" msgstr "l'operatore %s non è commutativo" -#: commands/indexcmds.c:1179 +#: commands/indexcmds.c:1180 #, c-format msgid "Only commutative operators can be used in exclusion constraints." msgstr "Solo operatori commutativi possono essere usati nei vincoli di esclusione." -#: commands/indexcmds.c:1205 +#: commands/indexcmds.c:1206 #, c-format msgid "operator %s is not a member of operator family \"%s\"" msgstr "l'operatore %s non è membro della famiglia di operatori \"%s\"" -#: commands/indexcmds.c:1208 +#: commands/indexcmds.c:1209 #, c-format msgid "The exclusion operator must be related to the index operator class for the constraint." msgstr "L'operatore di esclusione dev'essere correlato alla classe di operatori dell'indice per il vincolo." -#: commands/indexcmds.c:1243 +#: commands/indexcmds.c:1244 #, c-format msgid "access method \"%s\" does not support ASC/DESC options" msgstr "il metodo di accesso \"%s\" non supporta le opzioni ASC/DESC" -#: commands/indexcmds.c:1248 +#: commands/indexcmds.c:1249 #, c-format msgid "access method \"%s\" does not support NULLS FIRST/LAST options" msgstr "il metodo di accesso \"%s\" non supporta le opzioni NULLS FIRST/LAST" -#: commands/indexcmds.c:1304 commands/typecmds.c:1935 +#: commands/indexcmds.c:1305 commands/typecmds.c:1935 #, c-format msgid "data type %s has no default operator class for access method \"%s\"" msgstr "il tipo di dati %s non ha una classe di operatori predefinita per il metodo di accesso \"%s\"" -#: commands/indexcmds.c:1306 +#: commands/indexcmds.c:1307 #, c-format msgid "You must specify an operator class for the index or define a default operator class for the data type." msgstr "Devi specificare una classe di operatori per l'indice o definire una classe di operatori predefinita per il tipo di dati" -#: commands/indexcmds.c:1335 commands/indexcmds.c:1343 +#: commands/indexcmds.c:1336 commands/indexcmds.c:1344 #: commands/opclasscmds.c:205 #, c-format msgid "operator class \"%s\" does not exist for access method \"%s\"" msgstr "la classe di operatori \"%s\" non esiste per il metodo di accesso \"%s\"" -#: commands/indexcmds.c:1356 commands/typecmds.c:1923 +#: commands/indexcmds.c:1357 commands/typecmds.c:1923 #, c-format msgid "operator class \"%s\" does not accept data type %s" msgstr "la classe di operatori \"%s\" non accetta il tipo di dati %s" -#: commands/indexcmds.c:1446 +#: commands/indexcmds.c:1447 #, c-format msgid "there are multiple default operator classes for data type %s" msgstr "il tipo di dati %s ha più di una classe di operatori predefinita" -#: commands/indexcmds.c:1837 +#: commands/indexcmds.c:1838 #, c-format msgid "table \"%s\" has no indexes" msgstr "la tabella \"%s\" non ha indici" -#: commands/indexcmds.c:1892 +#: commands/indexcmds.c:1893 #, c-format msgid "can only reindex the currently open database" msgstr "è possibile reindicizzare solo il database corrente" -#: commands/indexcmds.c:1994 +#: commands/indexcmds.c:1993 #, c-format msgid "table \"%s.%s\" was reindexed" msgstr "la tabella \"%s.%s\" è stata reindicizzata" @@ -7151,22 +7151,22 @@ msgstr "non si può usare CONCURRENTLY quando la vista materializzata non è pop msgid "CONCURRENTLY and WITH NO DATA options cannot be used together" msgstr "le opzioni CONCURRENTLY e WITH NO DATA non possono essere usate insieme" -#: commands/matview.c:258 +#: commands/matview.c:257 #, c-format msgid "cannot refresh materialized view \"%s\" concurrently" msgstr "non è possibile aggiornare la vista materializzata \"%s\" concorrentemente" -#: commands/matview.c:261 +#: commands/matview.c:260 #, c-format msgid "Create a unique index with no WHERE clause on one or more columns of the materialized view." msgstr "Crea un indice unico senza clausola WHERE su una o più colonna della vista materializzata." -#: commands/matview.c:656 +#: commands/matview.c:657 #, c-format msgid "new data for materialized view \"%s\" contains duplicate rows without any null columns" msgstr "i nuovi dati per la vista materializzata \"%s\" contengono righe duplicate senza alcuna colonna null" -#: commands/matview.c:658 +#: commands/matview.c:659 #, c-format msgid "Row: %s" msgstr "Riga: %s" @@ -7370,15 +7370,14 @@ msgstr "la funzione di stima del join %s deve restituire il tipo %s" #: commands/operatorcmds.c:451 #, c-format -msgid "operator attribute \"%s\" can not be changed" +msgid "operator attribute \"%s\" cannot be changed" msgstr "l'attributo dell'operatore \"%s\" non può essere cambiato" -#: commands/policy.c:87 commands/policy.c:395 commands/policy.c:484 -#: commands/tablecmds.c:970 commands/tablecmds.c:1312 -#: commands/tablecmds.c:2184 commands/tablecmds.c:4330 -#: commands/tablecmds.c:6281 commands/tablecmds.c:11935 -#: commands/tablecmds.c:11970 commands/trigger.c:241 commands/trigger.c:1125 -#: commands/trigger.c:1233 rewrite/rewriteDefine.c:273 +#: commands/policy.c:87 commands/policy.c:388 commands/policy.c:477 +#: commands/tablecmds.c:971 commands/tablecmds.c:1313 commands/tablecmds.c:2185 +#: commands/tablecmds.c:4329 commands/tablecmds.c:6280 +#: commands/tablecmds.c:12081 commands/tablecmds.c:12116 commands/trigger.c:241 +#: commands/trigger.c:1125 commands/trigger.c:1233 rewrite/rewriteDefine.c:273 #: rewrite/rewriteDefine.c:917 #, c-format msgid "permission denied: \"%s\" is a system catalog" @@ -7394,44 +7393,43 @@ msgstr "i ruoli specificati a parte PUBLIC verranno ignorati" msgid "All roles are members of the PUBLIC role." msgstr "TuttiTutti i ruoli sono membri del ruolo PUBLIC." -#: commands/policy.c:508 +#: commands/policy.c:501 #, c-format msgid "role \"%s\" could not be removed from policy \"%s\" on \"%s\"" msgstr "non è stato possibile rimuovere il ruolo \"%s\" dalla regola di sicurezza \"%s\" su \"%s\"" -#: commands/policy.c:717 +#: commands/policy.c:710 #, c-format msgid "WITH CHECK cannot be applied to SELECT or DELETE" msgstr "WITH CHECK non può essere applicato a SELECT o a DELETE" -#: commands/policy.c:726 commands/policy.c:1026 +#: commands/policy.c:719 commands/policy.c:1019 #, c-format msgid "only WITH CHECK expression allowed for INSERT" msgstr "solo le espressioni WITH CHECK sono consentite per INSERT" -#: commands/policy.c:799 commands/policy.c:1249 +#: commands/policy.c:792 commands/policy.c:1242 #, c-format msgid "policy \"%s\" for table \"%s\" already exists" msgstr "la regola di sicurezza \"%s\" per la tabella \"%s\" esiste già" -#: commands/policy.c:998 commands/policy.c:1277 commands/policy.c:1352 +#: commands/policy.c:991 commands/policy.c:1270 commands/policy.c:1345 #, c-format msgid "policy \"%s\" for table \"%s\" does not exist" msgstr "la regola di sicurezza \"%s\" per la tabella \"%s\" non esiste" -#: commands/policy.c:1016 +#: commands/policy.c:1009 #, c-format msgid "only USING expression allowed for SELECT, DELETE" msgstr "solo le espressioni USING sono permesse per SELECT e DELETE" -#: commands/portalcmds.c:61 commands/portalcmds.c:160 -#: commands/portalcmds.c:212 +#: commands/portalcmds.c:61 commands/portalcmds.c:160 commands/portalcmds.c:212 #, c-format msgid "invalid cursor name: must not be empty" msgstr "nome di cursore non valido: non deve essere vuoto" #: commands/portalcmds.c:168 commands/portalcmds.c:222 -#: executor/execCurrent.c:67 utils/adt/xml.c:2391 utils/adt/xml.c:2558 +#: executor/execCurrent.c:67 utils/adt/xml.c:2399 utils/adt/xml.c:2569 #, c-format msgid "cursor \"%s\" does not exist" msgstr "il cursore \"%s\" non esiste" @@ -7441,7 +7439,7 @@ msgstr "il cursore \"%s\" non esiste" msgid "invalid statement name: must not be empty" msgstr "nome di istruzione non valido: non deve essere vuoto" -#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1345 +#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1343 #, c-format msgid "could not determine data type of parameter $%d" msgstr "non è stato possibile determinare il tipo di dato del parametro $%d" @@ -7511,17 +7509,17 @@ msgstr "solo i superutenti possono creare un linguaggio procedurale personalizza msgid "changing return type of function %s from \"opaque\" to \"language_handler\"" msgstr "cambio del tipo restituito dalla funzione %s da \"opaque\" a \"language_handler\"" -#: commands/schemacmds.c:103 commands/schemacmds.c:266 +#: commands/schemacmds.c:99 commands/schemacmds.c:262 #, c-format msgid "unacceptable schema name \"%s\"" msgstr "nome dello schema \"%s\" non accettabile" -#: commands/schemacmds.c:104 commands/schemacmds.c:267 +#: commands/schemacmds.c:100 commands/schemacmds.c:263 #, c-format msgid "The prefix \"pg_\" is reserved for system schemas." msgstr "Il prefisso \"pg_\" è riservato agli schemi di sistema." -#: commands/schemacmds.c:118 +#: commands/schemacmds.c:114 #, c-format msgid "schema \"%s\" already exists, skipping" msgstr "lo schema \"%s\" esiste già, saltato" @@ -7631,162 +7629,162 @@ msgstr "la sequenza deve avere lo stesso proprietario della tabella a cui è col msgid "sequence must be in same schema as table it is linked to" msgstr "la sequenza deve essere nello stesso schema della tabella a cui è collegata" -#: commands/tablecmds.c:215 +#: commands/tablecmds.c:216 #, c-format msgid "table \"%s\" does not exist" msgstr "la tabella \"%s\" non esiste" -#: commands/tablecmds.c:216 +#: commands/tablecmds.c:217 #, c-format msgid "table \"%s\" does not exist, skipping" msgstr "la tabella \"%s\" non esiste, saltata" -#: commands/tablecmds.c:218 +#: commands/tablecmds.c:219 msgid "Use DROP TABLE to remove a table." msgstr "Usa DROP TABLE per eliminare una tabella." -#: commands/tablecmds.c:221 +#: commands/tablecmds.c:222 #, c-format msgid "sequence \"%s\" does not exist" msgstr "la sequenza \"%s\" non esiste" -#: commands/tablecmds.c:222 +#: commands/tablecmds.c:223 #, c-format msgid "sequence \"%s\" does not exist, skipping" msgstr "la sequenza \"%s\" non esiste, saltata" -#: commands/tablecmds.c:224 +#: commands/tablecmds.c:225 msgid "Use DROP SEQUENCE to remove a sequence." msgstr "Usa DROP SEQUENCE per eliminare una sequenza." -#: commands/tablecmds.c:227 +#: commands/tablecmds.c:228 #, c-format msgid "view \"%s\" does not exist" msgstr "la vista \"%s\" non esiste" -#: commands/tablecmds.c:228 +#: commands/tablecmds.c:229 #, c-format msgid "view \"%s\" does not exist, skipping" msgstr "la vista \"%s\" non esiste, saltata" -#: commands/tablecmds.c:230 +#: commands/tablecmds.c:231 msgid "Use DROP VIEW to remove a view." msgstr "Usa DROP VIEW per eliminare una vista." -#: commands/tablecmds.c:233 +#: commands/tablecmds.c:234 #, c-format msgid "materialized view \"%s\" does not exist" msgstr "la vista materializzata \"%s\" non esiste" -#: commands/tablecmds.c:234 +#: commands/tablecmds.c:235 #, c-format msgid "materialized view \"%s\" does not exist, skipping" msgstr "la vista materializzata \"%s\" non esiste, saltata" -#: commands/tablecmds.c:236 +#: commands/tablecmds.c:237 msgid "Use DROP MATERIALIZED VIEW to remove a materialized view." msgstr "Usa DROP MATERIALIZED VIEW per rimuovere una vista materializzata." -#: commands/tablecmds.c:239 parser/parse_utilcmd.c:1643 +#: commands/tablecmds.c:240 parser/parse_utilcmd.c:1630 #, c-format msgid "index \"%s\" does not exist" msgstr "l'indice \"%s\" non esiste" -#: commands/tablecmds.c:240 +#: commands/tablecmds.c:241 #, c-format msgid "index \"%s\" does not exist, skipping" msgstr "l'indice \"%s\" non esiste, saltato" -#: commands/tablecmds.c:242 +#: commands/tablecmds.c:243 msgid "Use DROP INDEX to remove an index." msgstr "Usa DROP INDEX per eliminare un indice." -#: commands/tablecmds.c:247 +#: commands/tablecmds.c:248 #, c-format msgid "\"%s\" is not a type" msgstr "\"%s\" non è un tipo" -#: commands/tablecmds.c:248 +#: commands/tablecmds.c:249 msgid "Use DROP TYPE to remove a type." msgstr "Usa DROP TYPE per eliminare un tipo." -#: commands/tablecmds.c:251 commands/tablecmds.c:8488 -#: commands/tablecmds.c:11196 +#: commands/tablecmds.c:252 commands/tablecmds.c:8584 +#: commands/tablecmds.c:11336 #, c-format msgid "foreign table \"%s\" does not exist" msgstr "la tabella esterna \"%s\" non esiste" -#: commands/tablecmds.c:252 +#: commands/tablecmds.c:253 #, c-format msgid "foreign table \"%s\" does not exist, skipping" msgstr "la tabella esterna \"%s\" non esiste, saltata" -#: commands/tablecmds.c:254 +#: commands/tablecmds.c:255 msgid "Use DROP FOREIGN TABLE to remove a foreign table." msgstr "Usa DROP FOREIGN TABLE per eliminare una tabella esterna." -#: commands/tablecmds.c:493 +#: commands/tablecmds.c:494 #, c-format msgid "ON COMMIT can only be used on temporary tables" msgstr "ON COMMIT può essere usato solo con le tabelle temporanee" -#: commands/tablecmds.c:513 +#: commands/tablecmds.c:514 #, c-format msgid "cannot create temporary table within security-restricted operation" msgstr "non è possibile creare la tabella temporanea nell'ambito di operazioni a sicurezza ristretta" -#: commands/tablecmds.c:821 +#: commands/tablecmds.c:822 #, c-format msgid "DROP INDEX CONCURRENTLY does not support dropping multiple objects" msgstr "DROP INDEX CONCURRENTLY non supporta l'eliminazione di più di un oggetto" -#: commands/tablecmds.c:825 +#: commands/tablecmds.c:826 #, c-format msgid "DROP INDEX CONCURRENTLY does not support CASCADE" msgstr "DROP INDEX CONCURRENTLY non supporta CASCADE" -#: commands/tablecmds.c:1084 +#: commands/tablecmds.c:1085 #, c-format msgid "truncate cascades to table \"%s\"" msgstr "truncate si propaga in cascata alla tabella \"%s\"" -#: commands/tablecmds.c:1322 +#: commands/tablecmds.c:1323 #, c-format msgid "cannot truncate temporary tables of other sessions" msgstr "non è possibile troncare tabelle temporanee di altre sessioni" -#: commands/tablecmds.c:1528 parser/parse_utilcmd.c:1857 +#: commands/tablecmds.c:1529 parser/parse_utilcmd.c:1844 #, c-format msgid "inherited relation \"%s\" is not a table or foreign table" msgstr "la relazione ereditata \"%s\" non è una tabella o tabella esterna" -#: commands/tablecmds.c:1535 commands/tablecmds.c:10055 +#: commands/tablecmds.c:1536 commands/tablecmds.c:10151 #, c-format msgid "cannot inherit from temporary relation \"%s\"" msgstr "non è possibile ereditare dalla relazione temporanea \"%s\"" -#: commands/tablecmds.c:1543 commands/tablecmds.c:10063 +#: commands/tablecmds.c:1544 commands/tablecmds.c:10159 #, c-format msgid "cannot inherit from temporary relation of another session" msgstr "non è possibile ereditare da una relazione temporanea di un'altra sessione" -#: commands/tablecmds.c:1559 commands/tablecmds.c:10097 +#: commands/tablecmds.c:1560 commands/tablecmds.c:10193 #, c-format msgid "relation \"%s\" would be inherited from more than once" msgstr "la relazione \"%s\" sarebbe ereditata più di una volta" -#: commands/tablecmds.c:1607 +#: commands/tablecmds.c:1608 #, c-format msgid "merging multiple inherited definitions of column \"%s\"" msgstr "unione delle definizioni multiple ereditate della colonna \"%s\"" -#: commands/tablecmds.c:1615 +#: commands/tablecmds.c:1616 #, c-format msgid "inherited column \"%s\" has a type conflict" msgstr "la colonna ereditata \"%s\" ha un conflitto di tipo" -#: commands/tablecmds.c:1617 commands/tablecmds.c:1640 -#: commands/tablecmds.c:1838 commands/tablecmds.c:1862 +#: commands/tablecmds.c:1618 commands/tablecmds.c:1641 +#: commands/tablecmds.c:1839 commands/tablecmds.c:1863 #: parser/parse_coerce.c:1630 parser/parse_coerce.c:1650 #: parser/parse_coerce.c:1670 parser/parse_coerce.c:1715 #: parser/parse_coerce.c:1752 parser/parse_param.c:218 @@ -7794,755 +7792,766 @@ msgstr "la colonna ereditata \"%s\" ha un conflitto di tipo" msgid "%s versus %s" msgstr "tra %s e %s" -#: commands/tablecmds.c:1626 +#: commands/tablecmds.c:1627 #, c-format msgid "inherited column \"%s\" has a collation conflict" msgstr "la colonna ereditata \"%s\" ha un conflitto di ordinamento" -#: commands/tablecmds.c:1628 commands/tablecmds.c:1850 -#: commands/tablecmds.c:4768 +#: commands/tablecmds.c:1629 commands/tablecmds.c:1851 +#: commands/tablecmds.c:4767 #, c-format msgid "\"%s\" versus \"%s\"" msgstr "tra \"%s\" e \"%s\"" -#: commands/tablecmds.c:1638 +#: commands/tablecmds.c:1639 #, c-format msgid "inherited column \"%s\" has a storage parameter conflict" msgstr "la colonna ereditata \"%s\" ha un conflitto di parametro di memorizzazione" -#: commands/tablecmds.c:1751 parser/parse_utilcmd.c:938 -#: parser/parse_utilcmd.c:1287 parser/parse_utilcmd.c:1363 +#: commands/tablecmds.c:1752 commands/tablecmds.c:8089 +#: parser/parse_utilcmd.c:923 parser/parse_utilcmd.c:1274 +#: parser/parse_utilcmd.c:1350 #, c-format msgid "cannot convert whole-row table reference" msgstr "non è possibile convertire riferimenti ad una riga intera di tabella" -#: commands/tablecmds.c:1752 parser/parse_utilcmd.c:939 +#: commands/tablecmds.c:1753 parser/parse_utilcmd.c:924 #, c-format msgid "Constraint \"%s\" contains a whole-row reference to table \"%s\"." msgstr "Il vincolo \"%s\" contiene un riferimento alla riga intera alla tabella \"%s\"." -#: commands/tablecmds.c:1824 +#: commands/tablecmds.c:1825 #, c-format msgid "merging column \"%s\" with inherited definition" msgstr "unione della colonna \"%s\" con la definizione ereditata" -#: commands/tablecmds.c:1828 +#: commands/tablecmds.c:1829 #, c-format msgid "moving and merging column \"%s\" with inherited definition" msgstr "spostamento e unione della colonna \"%s\" con la definizione ereditata" -#: commands/tablecmds.c:1829 +#: commands/tablecmds.c:1830 #, c-format msgid "User-specified column moved to the position of the inherited column." msgstr "Colonna specificata dall'utente spostata nella posizione della colonna ereditata." -#: commands/tablecmds.c:1836 +#: commands/tablecmds.c:1837 #, c-format msgid "column \"%s\" has a type conflict" msgstr "la colonna \"%s\" ha un conflitto di tipi" -#: commands/tablecmds.c:1848 +#: commands/tablecmds.c:1849 #, c-format msgid "column \"%s\" has a collation conflict" msgstr "la colonna \"%s\" ha un conflitto di ordinamento" -#: commands/tablecmds.c:1860 +#: commands/tablecmds.c:1861 #, c-format msgid "column \"%s\" has a storage parameter conflict" msgstr "la colonna \"%s\" ha un conflitto di parametri di memorizzazione" -#: commands/tablecmds.c:1912 +#: commands/tablecmds.c:1913 #, c-format msgid "column \"%s\" inherits conflicting default values" msgstr "la colonna \"%s\" eredita valori predefiniti in conflitto tra loro" -#: commands/tablecmds.c:1914 +#: commands/tablecmds.c:1915 #, c-format msgid "To resolve the conflict, specify a default explicitly." msgstr "Per risolvere il conflitto, specificare esplicitamente un valore predefinito." -#: commands/tablecmds.c:1961 +#: commands/tablecmds.c:1962 #, c-format msgid "check constraint name \"%s\" appears multiple times but with different expressions" msgstr "il nome del vincolo di controllo \"%s\" compare più di una volta ma con espressioni diverse" -#: commands/tablecmds.c:2155 +#: commands/tablecmds.c:2156 #, c-format msgid "cannot rename column of typed table" msgstr "non è possibile rinominare la colonna di una tabella con tipo" -#: commands/tablecmds.c:2172 +#: commands/tablecmds.c:2173 #, c-format msgid "\"%s\" is not a table, view, materialized view, composite type, index, or foreign table" msgstr "\"%s\" non è una tabella, vista, vista materializzata, tipo composito, indice né una tabella esterna" -#: commands/tablecmds.c:2266 +#: commands/tablecmds.c:2267 #, c-format msgid "inherited column \"%s\" must be renamed in child tables too" msgstr "la colonna ereditata \"%s\" dev'essere rinominata anche nelle tabelle figlie" -#: commands/tablecmds.c:2298 +#: commands/tablecmds.c:2299 #, c-format msgid "cannot rename system column \"%s\"" msgstr "non è possibile rinominare la colonna di sistema \"%s\"" -#: commands/tablecmds.c:2313 +#: commands/tablecmds.c:2314 #, c-format msgid "cannot rename inherited column \"%s\"" msgstr "non è possibile rinominare la colonna ereditata \"%s\"" -#: commands/tablecmds.c:2468 +#: commands/tablecmds.c:2469 #, c-format msgid "inherited constraint \"%s\" must be renamed in child tables too" msgstr "i vincoli ereditati \"%s\" devono essere rinominati anche nelle tabelle figlie" -#: commands/tablecmds.c:2475 +#: commands/tablecmds.c:2476 #, c-format msgid "cannot rename inherited constraint \"%s\"" msgstr "non è possibile rinominare il vincolo ereditato \"%s\"" #. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2701 +#: commands/tablecmds.c:2702 #, c-format msgid "cannot %s \"%s\" because it is being used by active queries in this session" msgstr "non è possibile effettuare %s \"%s\" perché è in uso da query attive in questa sessione" #. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2710 +#: commands/tablecmds.c:2711 #, c-format msgid "cannot %s \"%s\" because it has pending trigger events" msgstr "non è possibile effettuare %s \"%s\" perché ha eventi trigger in sospeso" -#: commands/tablecmds.c:3786 +#: commands/tablecmds.c:3785 #, c-format msgid "cannot rewrite system relation \"%s\"" msgstr "non è possibile riscrivere la relazione di sistema \"%s\"" -#: commands/tablecmds.c:3792 +#: commands/tablecmds.c:3791 #, c-format msgid "cannot rewrite table \"%s\" used as a catalog table" msgstr "non è possibile riscrivere la tabella \"%s\" usata come tabella di catalogo" -#: commands/tablecmds.c:3802 +#: commands/tablecmds.c:3801 #, c-format msgid "cannot rewrite temporary tables of other sessions" msgstr "non è possibile riscrivere tabelle temporanee di altre sessioni" -#: commands/tablecmds.c:4070 +#: commands/tablecmds.c:4069 #, c-format msgid "rewriting table \"%s\"" msgstr "riscrittura della tabella \"%s\"" -#: commands/tablecmds.c:4074 +#: commands/tablecmds.c:4073 #, c-format msgid "verifying table \"%s\"" msgstr "verifica della tabella \"%s\"" -#: commands/tablecmds.c:4188 +#: commands/tablecmds.c:4187 #, c-format msgid "column \"%s\" contains null values" msgstr "la colonna \"%s\" contiene valori null" -#: commands/tablecmds.c:4203 commands/tablecmds.c:7368 +#: commands/tablecmds.c:4202 commands/tablecmds.c:7386 #, c-format msgid "check constraint \"%s\" is violated by some row" msgstr "il vincolo di controllo \"%s\" è violato da alcune righe" -#: commands/tablecmds.c:4351 commands/trigger.c:235 -#: rewrite/rewriteDefine.c:267 rewrite/rewriteDefine.c:912 +#: commands/tablecmds.c:4350 commands/trigger.c:235 rewrite/rewriteDefine.c:267 +#: rewrite/rewriteDefine.c:912 #, c-format msgid "\"%s\" is not a table or view" msgstr "\"%s\" non è una tabella né una vista" -#: commands/tablecmds.c:4354 commands/trigger.c:1119 commands/trigger.c:1224 +#: commands/tablecmds.c:4353 commands/trigger.c:1119 commands/trigger.c:1224 #, c-format msgid "\"%s\" is not a table, view, or foreign table" msgstr "\"%s\" non è una tabella, una vista né una tabella esterna" -#: commands/tablecmds.c:4357 +#: commands/tablecmds.c:4356 #, c-format msgid "\"%s\" is not a table, view, materialized view, or index" msgstr "\"%s\" non è una tabella, una vista, una vista materializzata né un indice" -#: commands/tablecmds.c:4363 +#: commands/tablecmds.c:4362 #, c-format msgid "\"%s\" is not a table, materialized view, or index" msgstr "\"%s\" non è una tabella, una vista materializzata né un indice" -#: commands/tablecmds.c:4366 +#: commands/tablecmds.c:4365 #, c-format msgid "\"%s\" is not a table, materialized view, or foreign table" msgstr "\"%s\" non è una tabella, una vista materializzata né una tabella esterna" -#: commands/tablecmds.c:4369 +#: commands/tablecmds.c:4368 #, c-format msgid "\"%s\" is not a table or foreign table" msgstr "\"%s\" non è una tabella né una tabella esterna" -#: commands/tablecmds.c:4372 +#: commands/tablecmds.c:4371 #, c-format msgid "\"%s\" is not a table, composite type, or foreign table" msgstr "\"%s\" non è una tabella, un tipo composito né una tabella esterna" -#: commands/tablecmds.c:4375 commands/tablecmds.c:5427 +#: commands/tablecmds.c:4374 commands/tablecmds.c:5426 #, c-format msgid "\"%s\" is not a table, materialized view, index, or foreign table" msgstr "\"%s\" non è una tabella, una vista materializzata, un indice né una tabella esterna" -#: commands/tablecmds.c:4385 +#: commands/tablecmds.c:4384 #, c-format msgid "\"%s\" is of the wrong type" msgstr "\"%s\" è del tipo sbagliato" -#: commands/tablecmds.c:4537 commands/tablecmds.c:4544 +#: commands/tablecmds.c:4536 commands/tablecmds.c:4543 #, c-format msgid "cannot alter type \"%s\" because column \"%s.%s\" uses it" msgstr "non è possibile modificare il tipo \"%s\" perché la colonna \"%s.%s\" lo usa" -#: commands/tablecmds.c:4551 +#: commands/tablecmds.c:4550 #, c-format msgid "cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type" msgstr "non è possibile modificare la tabella esterna \"%s\" perché la colonna \"%s.%s\" usa il suo tipo di riga" -#: commands/tablecmds.c:4558 +#: commands/tablecmds.c:4557 #, c-format msgid "cannot alter table \"%s\" because column \"%s.%s\" uses its row type" msgstr "non è possibile modificare la tabella \"%s\" perché la colonna \"%s.%s\" usa il suo tipo di riga" -#: commands/tablecmds.c:4620 +#: commands/tablecmds.c:4619 #, c-format msgid "cannot alter type \"%s\" because it is the type of a typed table" msgstr "non è possibile modificare il tipo \"%s\" perché è il tipo di una tabella con tipo" -#: commands/tablecmds.c:4622 +#: commands/tablecmds.c:4621 #, c-format msgid "Use ALTER ... CASCADE to alter the typed tables too." msgstr "Usa DROP ... CASCADE per eliminare anche le tabelle con tipo." -#: commands/tablecmds.c:4666 +#: commands/tablecmds.c:4665 #, c-format msgid "type %s is not a composite type" msgstr "il tipo %s non è un tipo composito" -#: commands/tablecmds.c:4692 +#: commands/tablecmds.c:4691 #, c-format msgid "cannot add column to typed table" msgstr "non è possibile aggiungere una colonna ad una tabella con tipo" -#: commands/tablecmds.c:4760 commands/tablecmds.c:10256 +#: commands/tablecmds.c:4759 commands/tablecmds.c:10352 #, c-format msgid "child table \"%s\" has different type for column \"%s\"" msgstr "la tabella figlia \"%s\" ha tipo diverso per la colonna \"%s\"" -#: commands/tablecmds.c:4766 commands/tablecmds.c:10263 +#: commands/tablecmds.c:4765 commands/tablecmds.c:10359 #, c-format msgid "child table \"%s\" has different collation for column \"%s\"" msgstr "la tabella figlia \"%s\" ha ordinamento diverso per la colonna \"%s\"" -#: commands/tablecmds.c:4776 +#: commands/tablecmds.c:4775 #, c-format msgid "child table \"%s\" has a conflicting \"%s\" column" msgstr "la tabella figlia \"%s\" ha la colonna \"%s\" in conflitto" -#: commands/tablecmds.c:4788 +#: commands/tablecmds.c:4787 #, c-format msgid "merging definition of column \"%s\" for child \"%s\"" msgstr "unione delle definizioni della colonna \"%s\" per la tabella figlia \"%s\"" -#: commands/tablecmds.c:5015 +#: commands/tablecmds.c:5014 #, c-format msgid "column must be added to child tables too" msgstr "la colonna deve essere aggiunta anche alle tabelle figlie" -#: commands/tablecmds.c:5090 +#: commands/tablecmds.c:5089 #, c-format msgid "column \"%s\" of relation \"%s\" already exists, skipping" msgstr "la colonna \"%s\" della relazione \"%s\" esiste già, saltata" -#: commands/tablecmds.c:5097 +#: commands/tablecmds.c:5096 #, c-format msgid "column \"%s\" of relation \"%s\" already exists" msgstr "la colonna \"%s\" della relazione \"%s\" esiste già" -#: commands/tablecmds.c:5208 commands/tablecmds.c:5314 -#: commands/tablecmds.c:5372 commands/tablecmds.c:5486 -#: commands/tablecmds.c:5543 commands/tablecmds.c:5637 -#: commands/tablecmds.c:7886 commands/tablecmds.c:8511 +#: commands/tablecmds.c:5207 commands/tablecmds.c:5313 +#: commands/tablecmds.c:5371 commands/tablecmds.c:5485 +#: commands/tablecmds.c:5542 commands/tablecmds.c:5636 +#: commands/tablecmds.c:7925 commands/tablecmds.c:8607 #, c-format msgid "cannot alter system column \"%s\"" msgstr "non è possibile modificare la colonna di sistema \"%s\"" -#: commands/tablecmds.c:5244 +#: commands/tablecmds.c:5243 #, c-format msgid "column \"%s\" is in a primary key" msgstr "la colonna \"%s\" è in una chiave primaria" -#: commands/tablecmds.c:5459 +#: commands/tablecmds.c:5458 #, c-format msgid "statistics target %d is too low" msgstr "il target delle statistiche %d è troppo basso" -#: commands/tablecmds.c:5467 +#: commands/tablecmds.c:5466 #, c-format msgid "lowering statistics target to %d" msgstr "target delle statistiche abbassato a %d" -#: commands/tablecmds.c:5617 +#: commands/tablecmds.c:5616 #, c-format msgid "invalid storage type \"%s\"" msgstr "tipo di immagazzinamento non valido \"%s\"" -#: commands/tablecmds.c:5649 +#: commands/tablecmds.c:5648 #, c-format msgid "column data type %s can only have storage PLAIN" msgstr "il tipo di dato della colonna %s può avere solo immagazzinamento PLAIN" -#: commands/tablecmds.c:5687 +#: commands/tablecmds.c:5686 #, c-format msgid "cannot drop column from typed table" msgstr "non è possibile eliminare la colonna da una tabella con tipo" -#: commands/tablecmds.c:5731 +#: commands/tablecmds.c:5730 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist, skipping" msgstr "la colonna \"%s\" della relazione \"%s\" non esiste, saltato" -#: commands/tablecmds.c:5744 +#: commands/tablecmds.c:5743 #, c-format msgid "cannot drop system column \"%s\"" msgstr "non è possibile eliminare la colonna di sistema \"%s\"" -#: commands/tablecmds.c:5751 +#: commands/tablecmds.c:5750 #, c-format msgid "cannot drop inherited column \"%s\"" msgstr "non è possibile eliminare la colonna ereditata \"%s\"" -#: commands/tablecmds.c:5991 +#: commands/tablecmds.c:5990 #, c-format msgid "ALTER TABLE / ADD CONSTRAINT USING INDEX will rename index \"%s\" to \"%s\"" msgstr "ALTER TABLE / ADD CONSTRAINT USING INDEX rinominerà l'indice \"%s\" in \"%s\"" -#: commands/tablecmds.c:6204 +#: commands/tablecmds.c:6203 #, c-format msgid "constraint must be added to child tables too" msgstr "il vincolo deve essere aggiunto anche alle tabelle figlie" -#: commands/tablecmds.c:6275 +#: commands/tablecmds.c:6274 #, c-format msgid "referenced relation \"%s\" is not a table" msgstr "la relazione referenziata \"%s\" non è una tabella" -#: commands/tablecmds.c:6298 +#: commands/tablecmds.c:6297 #, c-format msgid "constraints on permanent tables may reference only permanent tables" msgstr "i vincoli su tabelle permanenti possono referenziare solo tabelle permanenti" -#: commands/tablecmds.c:6305 +#: commands/tablecmds.c:6304 #, c-format msgid "constraints on unlogged tables may reference only permanent or unlogged tables" msgstr "i vincoli su tabelle non loggate possono referenziare solo tabelle permanenti o non loggate" -#: commands/tablecmds.c:6311 +#: commands/tablecmds.c:6310 #, c-format msgid "constraints on temporary tables may reference only temporary tables" msgstr "i vincoli su tabelle temporanee possono referenziare solo tabelle temporanee" -#: commands/tablecmds.c:6315 +#: commands/tablecmds.c:6314 #, c-format msgid "constraints on temporary tables must involve temporary tables of this session" msgstr "i vincoli su tabelle temporanee devono riferirsi a tabelle temporanee di questa sessione" -#: commands/tablecmds.c:6376 +#: commands/tablecmds.c:6375 #, c-format msgid "number of referencing and referenced columns for foreign key disagree" msgstr "i numeri di colonne referenzianti e referenziate per la chiave esterna non combaciano" -#: commands/tablecmds.c:6483 +#: commands/tablecmds.c:6482 #, c-format msgid "foreign key constraint \"%s\" cannot be implemented" msgstr "non è possibile implementare il vincolo di chiave esterna \"%s\"" -#: commands/tablecmds.c:6486 +#: commands/tablecmds.c:6485 #, c-format msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s." msgstr "Le colonne chiave \"%s\" e \"%s\" hanno tipi incompatibili: %s e %s." -#: commands/tablecmds.c:6693 commands/tablecmds.c:6843 -#: commands/tablecmds.c:7725 commands/tablecmds.c:7781 +#: commands/tablecmds.c:6692 commands/tablecmds.c:6860 +#: commands/tablecmds.c:7764 commands/tablecmds.c:7820 #, c-format msgid "constraint \"%s\" of relation \"%s\" does not exist" msgstr "il vincolo \"%s\" della relazione \"%s\" non esiste" -#: commands/tablecmds.c:6699 +#: commands/tablecmds.c:6698 #, c-format msgid "constraint \"%s\" of relation \"%s\" is not a foreign key constraint" msgstr "il vincolo \"%s\" della relazione \"%s\" non è una chiave esterna" -#: commands/tablecmds.c:6850 +#: commands/tablecmds.c:6867 #, c-format msgid "constraint \"%s\" of relation \"%s\" is not a foreign key or check constraint" msgstr "il vincolo \"%s\" della relazione \"%s\" non è una chiave esterna o un vincolo di controllo" -#: commands/tablecmds.c:6918 +#: commands/tablecmds.c:6936 #, c-format msgid "constraint must be validated on child tables too" msgstr "i vincoli devono essere validati anche sulle tabelle figlie" -#: commands/tablecmds.c:6987 +#: commands/tablecmds.c:7005 #, c-format msgid "column \"%s\" referenced in foreign key constraint does not exist" msgstr "la colonna \"%s\" referenziata dal vincolo di chiave esterna non esiste" -#: commands/tablecmds.c:6992 +#: commands/tablecmds.c:7010 #, c-format msgid "cannot have more than %d keys in a foreign key" msgstr "non possono esserci più di %d chiavi in una chiave esterna" -#: commands/tablecmds.c:7057 +#: commands/tablecmds.c:7075 #, c-format msgid "cannot use a deferrable primary key for referenced table \"%s\"" msgstr "non è possibile usare una chiave primaria deferita per la tabella referenziata \"%s\"" -#: commands/tablecmds.c:7074 +#: commands/tablecmds.c:7092 #, c-format msgid "there is no primary key for referenced table \"%s\"" msgstr "la tabella referenziata \"%s\" non ha una chiave primaria" -#: commands/tablecmds.c:7139 +#: commands/tablecmds.c:7157 #, c-format msgid "foreign key referenced-columns list must not contain duplicates" msgstr "la lista di colonne referenziate dalla chiave esterna non deve contenere duplicati" -#: commands/tablecmds.c:7233 +#: commands/tablecmds.c:7251 #, c-format msgid "cannot use a deferrable unique constraint for referenced table \"%s\"" msgstr "non è possibile usare un vincolo univoco deferito per la tabella referenziata \"%s\"" -#: commands/tablecmds.c:7238 +#: commands/tablecmds.c:7256 #, c-format msgid "there is no unique constraint matching given keys for referenced table \"%s\"" msgstr "non c'è alcun vincolo univoco che corrisponda alle chiavi indicate per la tabella referenziata \"%s\"" -#: commands/tablecmds.c:7401 +#: commands/tablecmds.c:7419 #, c-format msgid "validating foreign key constraint \"%s\"" msgstr "validazione del vincolo di chiave esterna \"%s\"" -#: commands/tablecmds.c:7697 +#: commands/tablecmds.c:7718 #, c-format msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" msgstr "non è possibile eliminare il vincolo ereditato \"%s\" della relazione \"%s\"" -#: commands/tablecmds.c:7731 +#: commands/tablecmds.c:7770 #, c-format msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" msgstr "il vincolo \"%s\" della relazione \"%s\" non esiste, saltato" -#: commands/tablecmds.c:7870 +#: commands/tablecmds.c:7909 #, c-format msgid "cannot alter column type of typed table" msgstr "non è possibile modificare il tipo di colonna di una tabella con tipo" -#: commands/tablecmds.c:7893 +#: commands/tablecmds.c:7932 #, c-format msgid "cannot alter inherited column \"%s\"" msgstr "non è possibile modificare la colonna ereditata \"%s\"" -#: commands/tablecmds.c:7942 +#: commands/tablecmds.c:7981 #, c-format msgid "result of USING clause for column \"%s\" cannot be cast automatically to type %s" msgstr "il risultato della clausola USING per la colonna \"%s\" non può essere convertito automaticamente al tipo %s" -#: commands/tablecmds.c:7945 +#: commands/tablecmds.c:7984 #, c-format msgid "You might need to add an explicit cast." msgstr "Potresti dover aggiungere una conversione esplicita." -#: commands/tablecmds.c:7949 +#: commands/tablecmds.c:7988 #, c-format msgid "column \"%s\" cannot be cast automatically to type %s" msgstr "la colonna \"%s\" non può essere convertita automaticamente al tipo %s" #. translator: USING is SQL, don't translate it -#: commands/tablecmds.c:7952 +#: commands/tablecmds.c:7991 #, c-format msgid "You might need to specify \"USING %s::%s\"." msgstr "Potresti dover specificare \"USING %s::%s\"." -#: commands/tablecmds.c:8005 +#: commands/tablecmds.c:8090 +#, c-format +msgid "USING expression contains a whole-row table reference." +msgstr "L'espressione USING contiene un riferimento alla riga completa della tabella." + +#: commands/tablecmds.c:8101 #, c-format msgid "type of inherited column \"%s\" must be changed in child tables too" msgstr "il tipo della colonna ereditata \"%s\" deve essere cambiato anche nelle tabelle figlie" -#: commands/tablecmds.c:8092 +#: commands/tablecmds.c:8188 #, c-format msgid "cannot alter type of column \"%s\" twice" msgstr "non è possibile cambiare il tipo della colonna \"%s\" due volte" -#: commands/tablecmds.c:8128 +#: commands/tablecmds.c:8224 #, c-format msgid "default for column \"%s\" cannot be cast automatically to type %s" msgstr "il valore predefinito della colonna \"%s\" non può essere convertito automaticamente al tipo %s" -#: commands/tablecmds.c:8254 +#: commands/tablecmds.c:8350 #, c-format msgid "cannot alter type of a column used by a view or rule" msgstr "non è possibile cambiare il tipo di una colonna usata in una vista o una regola" -#: commands/tablecmds.c:8255 commands/tablecmds.c:8274 -#: commands/tablecmds.c:8292 +#: commands/tablecmds.c:8351 commands/tablecmds.c:8370 +#: commands/tablecmds.c:8388 #, c-format msgid "%s depends on column \"%s\"" msgstr "%s dipende dalla colonna \"%s\"" -#: commands/tablecmds.c:8273 +#: commands/tablecmds.c:8369 #, c-format msgid "cannot alter type of a column used in a trigger definition" msgstr "non è possibile cambiare il tipo di una colonna usata nella definizione di un trigger" -#: commands/tablecmds.c:8291 +#: commands/tablecmds.c:8387 #, c-format msgid "cannot alter type of a column used in a policy definition" msgstr "non è possibile cambiare il tipo di una colonna usata nella definizione di una regola di sicurezza" -#: commands/tablecmds.c:8956 +#: commands/tablecmds.c:9052 #, c-format msgid "cannot change owner of index \"%s\"" msgstr "non è possibile cambiare il proprietario dell'indice \"%s\"" -#: commands/tablecmds.c:8958 +#: commands/tablecmds.c:9054 #, c-format msgid "Change the ownership of the index's table, instead." msgstr "Cambia il proprietario della tabella dell'indice invece." -#: commands/tablecmds.c:8974 +#: commands/tablecmds.c:9070 #, c-format msgid "cannot change owner of sequence \"%s\"" msgstr "non è possibile cambiare il proprietario della sequenza \"%s\"" -#: commands/tablecmds.c:8976 commands/tablecmds.c:11398 +#: commands/tablecmds.c:9072 commands/tablecmds.c:11544 #, c-format msgid "Sequence \"%s\" is linked to table \"%s\"." msgstr "La sequenza \"%s\" è collegata alla tabella \"%s\"." -#: commands/tablecmds.c:8988 commands/tablecmds.c:12045 +#: commands/tablecmds.c:9084 commands/tablecmds.c:12191 #, c-format msgid "Use ALTER TYPE instead." msgstr "È possibile usare ALTER TYPE invece." -#: commands/tablecmds.c:8997 +#: commands/tablecmds.c:9093 #, c-format msgid "\"%s\" is not a table, view, sequence, or foreign table" msgstr "\"%s\" non è una tabella, una vista, una sequenza né una tabella esterna" -#: commands/tablecmds.c:9340 +#: commands/tablecmds.c:9436 #, c-format msgid "cannot have multiple SET TABLESPACE subcommands" msgstr "non è possibile avere più di un sottocomando SET TABLESPACE" -#: commands/tablecmds.c:9413 +#: commands/tablecmds.c:9509 #, c-format msgid "\"%s\" is not a table, view, materialized view, index, or TOAST table" msgstr "\"%s\" non è una tabella, una vista, una vista materializzata né una tabella TOAST" -#: commands/tablecmds.c:9446 commands/view.c:481 +#: commands/tablecmds.c:9542 commands/view.c:498 #, c-format msgid "WITH CHECK OPTION is supported only on automatically updatable views" msgstr "WITH CHECK OPTION è supportato solo su viste aggiornabili automaticamente" -#: commands/tablecmds.c:9592 +#: commands/tablecmds.c:9688 #, c-format msgid "cannot move system relation \"%s\"" msgstr "non è possibile spostare la relazione \"%s\"" -#: commands/tablecmds.c:9608 +#: commands/tablecmds.c:9704 #, c-format msgid "cannot move temporary tables of other sessions" msgstr "non è possibile spostare tabelle temporanee di altre sessioni" -#: commands/tablecmds.c:9745 +#: commands/tablecmds.c:9841 #, c-format msgid "only tables, indexes, and materialized views exist in tablespaces" msgstr "solo tabelle, indici e viste materializzate esistono nei tablespace" -#: commands/tablecmds.c:9757 +#: commands/tablecmds.c:9853 #, c-format msgid "cannot move relations in to or out of pg_global tablespace" msgstr "non è possibile spostare relazioni dentro o fuori il tablespace pg_global" -#: commands/tablecmds.c:9848 +#: commands/tablecmds.c:9944 #, c-format msgid "aborting because lock on relation \"%s.%s\" is not available" msgstr "interruzione perché non c'è un lock disponibile sulla relazione \"%s.%s\"" -#: commands/tablecmds.c:9864 +#: commands/tablecmds.c:9960 #, c-format msgid "no matching relations in tablespace \"%s\" found" msgstr "nessuna relazione corrispondente trovata nel tablespace \"%s\"" -#: commands/tablecmds.c:9938 storage/buffer/bufmgr.c:915 +#: commands/tablecmds.c:10034 storage/buffer/bufmgr.c:915 #, c-format msgid "invalid page in block %u of relation %s" msgstr "pagina non valida nel blocco %u della relazione %s" -#: commands/tablecmds.c:10020 +#: commands/tablecmds.c:10116 #, c-format msgid "cannot change inheritance of typed table" msgstr "non è possibile cambiare ereditarietà di tabelle con tipo" -#: commands/tablecmds.c:10070 +#: commands/tablecmds.c:10166 #, c-format msgid "cannot inherit to temporary relation of another session" msgstr "non è possibile ereditare tabelle temporanee di un'altra sessione" -#: commands/tablecmds.c:10124 +#: commands/tablecmds.c:10220 #, c-format msgid "circular inheritance not allowed" msgstr "l'ereditarietà circolare non è consentita" -#: commands/tablecmds.c:10125 +#: commands/tablecmds.c:10221 #, c-format msgid "\"%s\" is already a child of \"%s\"." msgstr "\"%s\" è già figlia di \"%s\"." -#: commands/tablecmds.c:10133 +#: commands/tablecmds.c:10229 #, c-format msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs" msgstr "la tabella \"%s\" senza OID non può ereditare dalla tabella \"%s\" con OID" -#: commands/tablecmds.c:10274 +#: commands/tablecmds.c:10370 #, c-format msgid "column \"%s\" in child table must be marked NOT NULL" msgstr "la colonna \"%s\" nella tabella figlia dev'essere marcata NOT NULL" -#: commands/tablecmds.c:10290 +#: commands/tablecmds.c:10386 commands/tablecmds.c:10419 #, c-format msgid "child table is missing column \"%s\"" msgstr "la tabella figlia non ha la colonna \"%s\"" -#: commands/tablecmds.c:10373 +#: commands/tablecmds.c:10502 #, c-format msgid "child table \"%s\" has different definition for check constraint \"%s\"" msgstr "la tabella figlia \"%s\" ha una definizione diversa del vincolo di controllo \"%s\"" -#: commands/tablecmds.c:10381 +#: commands/tablecmds.c:10510 #, c-format msgid "constraint \"%s\" conflicts with non-inherited constraint on child table \"%s\"" msgstr "il vincolo \"%s\" è in conflitto con un vincolo non ereditato nella tabella figlia \"%s\"" -#: commands/tablecmds.c:10405 +#: commands/tablecmds.c:10521 +#, c-format +msgid "constraint \"%s\" conflicts with NOT VALID constraint on child table \"%s\"" +msgstr "il vincolo \"%s\" è in conflitto con un vincolo non valido nella tabella figlia \"%s\"" + +#: commands/tablecmds.c:10545 #, c-format msgid "child table is missing constraint \"%s\"" msgstr "la tabella figlia non ha il vincolo \"%s\"" -#: commands/tablecmds.c:10489 +#: commands/tablecmds.c:10629 #, c-format msgid "relation \"%s\" is not a parent of relation \"%s\"" msgstr "la relazione \"%s\" non è genitore della relazione \"%s\"" -#: commands/tablecmds.c:10723 +#: commands/tablecmds.c:10863 #, c-format msgid "typed tables cannot inherit" msgstr "le tabelle con tipo non possono essere ereditate" -#: commands/tablecmds.c:10754 +#: commands/tablecmds.c:10894 #, c-format msgid "table is missing column \"%s\"" msgstr "la tabella non ha la colonna \"%s\"" -#: commands/tablecmds.c:10764 +#: commands/tablecmds.c:10904 #, c-format msgid "table has column \"%s\" where type requires \"%s\"" msgstr "la tabella ha la colonna \"%s\" laddove il tipo richiede \"%s\"" -#: commands/tablecmds.c:10773 +#: commands/tablecmds.c:10913 #, c-format msgid "table \"%s\" has different type for column \"%s\"" msgstr "la tabella \"%s\" ha tipo diverso per la colonna \"%s\"" -#: commands/tablecmds.c:10786 +#: commands/tablecmds.c:10926 #, c-format msgid "table has extra column \"%s\"" msgstr "la tabella ha la colonna \"%s\" in eccesso" -#: commands/tablecmds.c:10838 +#: commands/tablecmds.c:10978 #, c-format msgid "\"%s\" is not a typed table" msgstr "\"%s\" non è una tabella con tipo" -#: commands/tablecmds.c:11022 +#: commands/tablecmds.c:11162 #, c-format msgid "cannot use non-unique index \"%s\" as replica identity" msgstr "non è possibile usare l'indice non univoco \"%s\" come identità di replica" -#: commands/tablecmds.c:11028 +#: commands/tablecmds.c:11168 #, c-format msgid "cannot use non-immediate index \"%s\" as replica identity" msgstr "non è possibile usare l'indice non immediato \"%s\" come identità di replica" -#: commands/tablecmds.c:11034 +#: commands/tablecmds.c:11174 #, c-format msgid "cannot use expression index \"%s\" as replica identity" msgstr "non è possibile usare l'indice su espressione \"%s\" come identità di replica" -#: commands/tablecmds.c:11040 +#: commands/tablecmds.c:11180 #, c-format msgid "cannot use partial index \"%s\" as replica identity" msgstr "non è possibile usare l'indice parziale \"%s\" come identità di replica" -#: commands/tablecmds.c:11046 +#: commands/tablecmds.c:11186 #, c-format msgid "cannot use invalid index \"%s\" as replica identity" msgstr "non è possibile usare l'indice non valido \"%s\" come identità di replica" -#: commands/tablecmds.c:11067 +#: commands/tablecmds.c:11207 #, c-format msgid "index \"%s\" cannot be used as replica identity because column %d is a system column" msgstr "l'indice \"%s\" non può essere usato come identità di replica perché la colonna %d è una colonna di sistema" -#: commands/tablecmds.c:11074 +#: commands/tablecmds.c:11214 #, c-format msgid "index \"%s\" cannot be used as replica identity because column \"%s\" is nullable" msgstr "l'indice \"%s\" non può essere usato come identità di replica perché la colonna \"%s\" può essere NULL" -#: commands/tablecmds.c:11271 +#: commands/tablecmds.c:11417 #, c-format msgid "cannot change logged status of table \"%s\" because it is temporary" msgstr "non è possibile cambiare lo stato di log della tabella \"%s\" perché è temporanea" -#: commands/tablecmds.c:11330 +#: commands/tablecmds.c:11476 #, c-format msgid "could not change table \"%s\" to logged because it references unlogged table \"%s\"" msgstr "non è possibile cambiare lo stato della tabella \"%s\" a loggata perché referenzia la tabella non loggata \"%s\"" -#: commands/tablecmds.c:11340 +#: commands/tablecmds.c:11486 #, c-format msgid "could not change table \"%s\" to unlogged because it references logged table \"%s\"" msgstr "non è possibile cambiare lo stato della tabella \"%s\" a non loggata perché referenzia la tabella loggata \"%s\"" -#: commands/tablecmds.c:11397 +#: commands/tablecmds.c:11543 #, c-format msgid "cannot move an owned sequence into another schema" msgstr "non è possibile spostare una sequenza con proprietario in uno schema diverso" -#: commands/tablecmds.c:11502 +#: commands/tablecmds.c:11648 #, c-format msgid "relation \"%s\" already exists in schema \"%s\"" msgstr "la relazione \"%s\" esiste già nello schema \"%s\"" -#: commands/tablecmds.c:12029 +#: commands/tablecmds.c:12175 #, c-format msgid "\"%s\" is not a composite type" msgstr "\"%s\" non è un tipo composito" -#: commands/tablecmds.c:12059 +#: commands/tablecmds.c:12205 #, c-format msgid "\"%s\" is not a table, view, materialized view, sequence, or foreign table" msgstr "\"%s\" non è una tabella, una vista, una vista materializzata, una sequenza né una tabella esterna" #: commands/tablespace.c:162 commands/tablespace.c:179 #: commands/tablespace.c:190 commands/tablespace.c:198 -#: commands/tablespace.c:629 replication/slot.c:969 storage/file/copydir.c:47 +#: commands/tablespace.c:625 replication/slot.c:997 storage/file/copydir.c:47 #, c-format msgid "could not create directory \"%s\": %m" msgstr "creazione della directory \"%s\" fallita: %m" @@ -8567,105 +8576,105 @@ msgstr "permesso di creare il tablespace \"%s\" negato" msgid "Must be superuser to create a tablespace." msgstr "Solo un superutente può incrementare questo valore." -#: commands/tablespace.c:271 +#: commands/tablespace.c:267 #, c-format msgid "tablespace location cannot contain single quotes" msgstr "la posizione del tablespace non può contenere apici" -#: commands/tablespace.c:281 +#: commands/tablespace.c:277 #, c-format msgid "tablespace location must be an absolute path" msgstr "la posizione del tablespace dev'essere un percorso assoluto" -#: commands/tablespace.c:292 +#: commands/tablespace.c:288 #, c-format msgid "tablespace location \"%s\" is too long" msgstr "la posizione del tablespace \"%s\" è troppo lunga" -#: commands/tablespace.c:299 +#: commands/tablespace.c:295 #, c-format msgid "tablespace location should not be inside the data directory" msgstr "la locazione del tablespace non dev'essere all'interno della directory dei dati" -#: commands/tablespace.c:308 commands/tablespace.c:956 +#: commands/tablespace.c:304 commands/tablespace.c:952 #, c-format msgid "unacceptable tablespace name \"%s\"" msgstr "il nome del tablespace \"%s\" non è accettabile" -#: commands/tablespace.c:310 commands/tablespace.c:957 +#: commands/tablespace.c:306 commands/tablespace.c:953 #, c-format msgid "The prefix \"pg_\" is reserved for system tablespaces." msgstr "Il prefisso \"pg_\" è riservato per i tablespace di sistema." -#: commands/tablespace.c:320 commands/tablespace.c:969 +#: commands/tablespace.c:316 commands/tablespace.c:965 #, c-format msgid "tablespace \"%s\" already exists" msgstr "il tablespace \"%s\" esiste già" -#: commands/tablespace.c:434 commands/tablespace.c:939 -#: commands/tablespace.c:1020 commands/tablespace.c:1089 -#: commands/tablespace.c:1222 commands/tablespace.c:1422 +#: commands/tablespace.c:430 commands/tablespace.c:935 +#: commands/tablespace.c:1016 commands/tablespace.c:1085 +#: commands/tablespace.c:1218 commands/tablespace.c:1418 #, c-format msgid "tablespace \"%s\" does not exist" msgstr "il tablespace \"%s\" non esiste" -#: commands/tablespace.c:440 +#: commands/tablespace.c:436 #, c-format msgid "tablespace \"%s\" does not exist, skipping" msgstr "il tablespace \"%s\" non esiste, saltato" -#: commands/tablespace.c:516 +#: commands/tablespace.c:512 #, c-format msgid "tablespace \"%s\" is not empty" msgstr "il tablespace \"%s\" non è vuoto" -#: commands/tablespace.c:588 +#: commands/tablespace.c:584 #, c-format msgid "directory \"%s\" does not exist" msgstr "la directory \"%s\" non esiste" -#: commands/tablespace.c:589 +#: commands/tablespace.c:585 #, c-format msgid "Create this directory for the tablespace before restarting the server." msgstr "Crea questa directory per il tablespace prima di riavviare il server." -#: commands/tablespace.c:594 +#: commands/tablespace.c:590 #, c-format msgid "could not set permissions on directory \"%s\": %m" msgstr "impostazione dei permessi sulla directory \"%s\" fallita: %m" -#: commands/tablespace.c:624 +#: commands/tablespace.c:620 #, c-format msgid "directory \"%s\" already in use as a tablespace" msgstr "la directory \"%s\" già è in uso come tablespace" -#: commands/tablespace.c:748 commands/tablespace.c:761 -#: commands/tablespace.c:797 commands/tablespace.c:889 +#: commands/tablespace.c:744 commands/tablespace.c:757 +#: commands/tablespace.c:793 commands/tablespace.c:885 #, c-format msgid "could not remove directory \"%s\": %m" msgstr "rimozione della directory \"%s\" fallita: %m" -#: commands/tablespace.c:810 commands/tablespace.c:898 +#: commands/tablespace.c:806 commands/tablespace.c:894 #, c-format msgid "could not remove symbolic link \"%s\": %m" msgstr "rimozione del link simbolico \"%s\" fallita: %m" -#: commands/tablespace.c:820 commands/tablespace.c:907 +#: commands/tablespace.c:816 commands/tablespace.c:903 #, c-format msgid "\"%s\" is not a directory or symbolic link" msgstr "\"%s\" non è una directory o un link simbolico" -#: commands/tablespace.c:1094 +#: commands/tablespace.c:1090 #, c-format msgid "Tablespace \"%s\" does not exist." msgstr "Il tablespace \"%s\" non esiste." -#: commands/tablespace.c:1521 +#: commands/tablespace.c:1517 #, c-format msgid "directories for tablespace %u could not be removed" msgstr "rimozioni delle directory per il tablespace %u fallita" -#: commands/tablespace.c:1523 +#: commands/tablespace.c:1519 #, c-format msgid "You can remove the directories manually if necessary." msgstr "Puoi rimuovere le directory manualmente se necessario." @@ -8808,32 +8817,31 @@ msgstr "la funzione trigger %u ha restituito un valore null" msgid "BEFORE STATEMENT trigger cannot return a value" msgstr "il trigger BEFORE STATEMENT non può restituire un valore" -#: commands/trigger.c:2726 executor/nodeModifyTable.c:664 -#: executor/nodeModifyTable.c:957 +#: commands/trigger.c:2726 executor/nodeModifyTable.c:679 +#: executor/nodeModifyTable.c:972 #, c-format msgid "tuple to be updated was already modified by an operation triggered by the current command" msgstr "la tupla da aggiornare era stata già modificata da un'operazione fatta eseguire da un comando corrente" -#: commands/trigger.c:2727 executor/nodeModifyTable.c:665 -#: executor/nodeModifyTable.c:958 +#: commands/trigger.c:2727 executor/nodeModifyTable.c:680 +#: executor/nodeModifyTable.c:973 #, c-format msgid "Consider using an AFTER trigger instead of a BEFORE trigger to propagate changes to other rows." msgstr "Considera l'utilizzo di un trigger AFTER invece di un trigger BEFORE per propagare i cambiamenti ad altre righe." -#: commands/trigger.c:2741 executor/execMain.c:2369 -#: executor/nodeLockRows.c:216 executor/nodeModifyTable.c:200 -#: executor/nodeModifyTable.c:677 executor/nodeModifyTable.c:970 -#: executor/nodeModifyTable.c:1136 +#: commands/trigger.c:2741 executor/execMain.c:2379 executor/nodeLockRows.c:216 +#: executor/nodeModifyTable.c:213 executor/nodeModifyTable.c:692 +#: executor/nodeModifyTable.c:985 executor/nodeModifyTable.c:1151 #, c-format msgid "could not serialize access due to concurrent update" msgstr "serializzazione dell'accesso fallita a causa di modifiche concorrenti" -#: commands/trigger.c:4579 +#: commands/trigger.c:4575 #, c-format msgid "constraint \"%s\" is not deferrable" msgstr "il vincolo \"%s\" non è deferibile" -#: commands/trigger.c:4602 +#: commands/trigger.c:4598 #, c-format msgid "constraint \"%s\" does not exist" msgstr "il vincolo \"%s\" non esiste" @@ -9078,7 +9086,7 @@ msgstr "i vincoli di chiave esterna non sono ammessi per i domini" msgid "specifying constraint deferrability not supported for domains" msgstr "specificare la deferibilità dei vincoli non è ammesso per i domini" -#: commands/typecmds.c:1291 utils/cache/typcache.c:1634 +#: commands/typecmds.c:1291 utils/cache/typcache.c:1630 #, c-format msgid "%s is not an enum" msgstr "%s non è una enumerazione" @@ -9243,8 +9251,8 @@ msgstr "solo i superutenti possono cambiare l'attributo bypassrls" msgid "permission denied to create role" msgstr "permesso di creare il ruolo negato" -#: commands/user.c:322 commands/user.c:1176 commands/user.c:1183 gram.y:13599 -#: gram.y:13634 +#: commands/user.c:322 commands/user.c:1176 commands/user.c:1183 +#: utils/adt/acl.c:5279 utils/adt/acl.c:5285 gram.y:13619 gram.y:13654 #, c-format msgid "role name \"%s\" is reserved" msgstr "il nome di ruolo \"%s\" è riservato" @@ -9264,8 +9272,8 @@ msgstr "il ruolo \"%s\" esiste già" msgid "pg_authid OID value not set when in binary upgrade mode" msgstr "valore di OID di pg_authid non impostato in modalità di aggiornamento binaria" -#: commands/user.c:679 commands/user.c:896 commands/user.c:1443 -#: commands/user.c:1589 +#: commands/user.c:679 commands/user.c:896 commands/user.c:1432 +#: commands/user.c:1578 #, c-format msgid "must be superuser to alter superusers" msgstr "solo i superutenti possono modificare superutenti" @@ -9295,8 +9303,8 @@ msgstr "permesso di eliminare il ruolo negato" msgid "cannot use special role specifier in DROP ROLE" msgstr "non è possibile usare lo specificatore di ruolo speciale in DROP ROLE" -#: commands/user.c:990 commands/user.c:1147 commands/variable.c:805 -#: commands/variable.c:880 utils/adt/acl.c:5121 utils/adt/acl.c:5173 +#: commands/user.c:990 commands/user.c:1147 commands/variable.c:825 +#: commands/variable.c:897 utils/adt/acl.c:5121 utils/adt/acl.c:5173 #: utils/adt/acl.c:5206 utils/adt/acl.c:5224 utils/init/miscinit.c:502 #, c-format msgid "role \"%s\" does not exist" @@ -9352,42 +9360,42 @@ msgstr "permesso di rinominare il ruolo negato" msgid "MD5 password cleared because of role rename" msgstr "L'MD5 della password è stato cancellato perché il ruolo è stato rinominato" -#: commands/user.c:1299 +#: commands/user.c:1291 #, c-format msgid "column names cannot be included in GRANT/REVOKE ROLE" msgstr "la colonna dei nomi non può essere inclusa in GRANT/REVOKE ROLE" -#: commands/user.c:1337 +#: commands/user.c:1329 #, c-format msgid "permission denied to drop objects" msgstr "permesso di eliminare gli oggetti negato" -#: commands/user.c:1364 commands/user.c:1376 +#: commands/user.c:1356 commands/user.c:1365 #, c-format msgid "permission denied to reassign objects" msgstr "permesso di riassegnare gli oggetti negato" -#: commands/user.c:1451 commands/user.c:1597 +#: commands/user.c:1440 commands/user.c:1586 #, c-format msgid "must have admin option on role \"%s\"" msgstr "occorre avere l'opzione admin sul ruolo \"%s\"" -#: commands/user.c:1468 +#: commands/user.c:1457 #, c-format msgid "must be superuser to set grantor" msgstr "solo i superutenti possono impostare chi ha concesso il privilegio" -#: commands/user.c:1493 +#: commands/user.c:1482 #, c-format msgid "role \"%s\" is a member of role \"%s\"" msgstr "il ruolo \"%s\" è membro del ruolo \"%s\"" -#: commands/user.c:1508 +#: commands/user.c:1497 #, c-format msgid "role \"%s\" is already a member of role \"%s\"" msgstr "il ruolo \"%s\" è già membro del ruolo \"%s\"" -#: commands/user.c:1619 +#: commands/user.c:1608 #, c-format msgid "role \"%s\" is not a member of role \"%s\"" msgstr "il ruolo \"%s\" non è membro del ruolo \"%s\"" @@ -9397,146 +9405,151 @@ msgstr "il ruolo \"%s\" non è membro del ruolo \"%s\"" msgid "%s cannot be executed from VACUUM or ANALYZE" msgstr "%s non può essere eseguito da VACUUM o ANALYZE" -#: commands/vacuum.c:528 +#: commands/vacuum.c:195 +#, c-format +msgid "VACUUM option DISABLE_PAGE_SKIPPING cannot be used with FULL" +msgstr "l'opzione DISABLE_PAGE_SKIPPING di VACUUM non può essere usata con FULL" + +#: commands/vacuum.c:535 #, c-format msgid "oldest xmin is far in the past" msgstr "il più vecchio xmin è molto lontano nel tempo" -#: commands/vacuum.c:529 +#: commands/vacuum.c:536 #, c-format msgid "Close open transactions soon to avoid wraparound problems." msgstr "Chiudi presto le transazioni per evitare problemi di wraparound." -#: commands/vacuum.c:568 +#: commands/vacuum.c:575 #, c-format msgid "oldest multixact is far in the past" msgstr "il multixact più vecchio è remoto" -#: commands/vacuum.c:569 +#: commands/vacuum.c:576 #, c-format msgid "Close open transactions with multixacts soon to avoid wraparound problems." msgstr "Chiudi presto le transazioni con multixact per evitare problemi di wraparound." -#: commands/vacuum.c:1131 +#: commands/vacuum.c:1146 #, c-format msgid "some databases have not been vacuumed in over 2 billion transactions" msgstr "alcuni database non sono stati ripuliti per più di 2 miliardi di transazioni" -#: commands/vacuum.c:1132 +#: commands/vacuum.c:1147 #, c-format msgid "You might have already suffered transaction-wraparound data loss." msgstr "Potresti aver già subito perdita di dati dovuta al wraparound delle transazioni." -#: commands/vacuum.c:1253 +#: commands/vacuum.c:1268 #, c-format msgid "skipping vacuum of \"%s\" --- lock not available" msgstr "pulizia di \"%s\" saltata --- lock non disponibile" -#: commands/vacuum.c:1279 +#: commands/vacuum.c:1294 #, c-format msgid "skipping \"%s\" --- only superuser can vacuum it" msgstr "\"%s\" saltato --- solo i superutenti possono pulirla" -#: commands/vacuum.c:1283 +#: commands/vacuum.c:1298 #, c-format msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" msgstr "\"%s\" saltato --- solo i superutenti o il proprietario del database possono pulirla" -#: commands/vacuum.c:1287 +#: commands/vacuum.c:1302 #, c-format msgid "skipping \"%s\" --- only table or database owner can vacuum it" msgstr "\"%s\" saltato --- solo il proprietario del database o della tabella possono pulirla" -#: commands/vacuum.c:1305 +#: commands/vacuum.c:1320 #, c-format msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables" msgstr "\"%s\" saltato --- non è possibile ripulire non-tabelle o tabelle speciali di sistema" -#: commands/vacuumlazy.c:363 +#: commands/vacuumlazy.c:371 #, c-format msgid "automatic vacuum of table \"%s.%s.%s\": index scans: %d\n" msgstr "vacuum automatico della tabella \"%s.%s.%s\": scan di indici: %d\n" -#: commands/vacuumlazy.c:368 +#: commands/vacuumlazy.c:376 #, c-format msgid "pages: %u removed, %u remain, %u skipped due to pins, %u skipped frozen\n" msgstr "pagine: %u rimosse, %u restanti, %u saltate perché bloccate, %u congelate saltate\n" -#: commands/vacuumlazy.c:374 +#: commands/vacuumlazy.c:382 #, c-format msgid "tuples: %.0f removed, %.0f remain, %.0f are dead but not yet removable\n" msgstr "tuple: %.0f rimosse, %.0f restanti, %.0f sono morte ma non ancora removibili\n" -#: commands/vacuumlazy.c:379 +#: commands/vacuumlazy.c:387 #, c-format msgid "buffer usage: %d hits, %d misses, %d dirtied\n" msgstr "uso dei buffer: %d colpiti, %d mancati, %d sporcati\n" -#: commands/vacuumlazy.c:383 +#: commands/vacuumlazy.c:391 #, c-format msgid "avg read rate: %.3f MB/s, avg write rate: %.3f MB/s\n" msgstr "velocità di lettura media: %.3f MB/s, velocità di scrittura media: %.3f MB/s\n" -#: commands/vacuumlazy.c:385 +#: commands/vacuumlazy.c:393 #, c-format msgid "system usage: %s" msgstr "utilizzo di sistema: %s" -#: commands/vacuumlazy.c:837 +#: commands/vacuumlazy.c:853 #, c-format msgid "relation \"%s\" page %u is uninitialized --- fixing" msgstr "la relazione \"%s\" pagina %u non è inizializzata --- in correzione" -#: commands/vacuumlazy.c:1301 +#: commands/vacuumlazy.c:1323 #, c-format msgid "\"%s\": removed %.0f row versions in %u pages" msgstr "\"%s\": %.0f versioni di riga rimosse in %u pagine" -#: commands/vacuumlazy.c:1311 +#: commands/vacuumlazy.c:1333 #, c-format msgid "%.0f dead row versions cannot be removed yet.\n" msgstr "%.0f versioni di righe morte non possono essere ancora rimosse.\n" -#: commands/vacuumlazy.c:1313 +#: commands/vacuumlazy.c:1335 #, c-format msgid "There were %.0f unused item pointers.\n" msgstr "C'erano %.0f puntatori ad elementi non usati.\n" -#: commands/vacuumlazy.c:1315 +#: commands/vacuumlazy.c:1337 #, c-format msgid "Skipped %u page due to buffer pins.\n" msgid_plural "Skipped %u pages due to buffer pins.\n" msgstr[0] "%u pagina saltata a causa di blocchi dei buffer.\n" msgstr[1] "%u pagine saltate a causa di blocchi dei buffer.\n" -#: commands/vacuumlazy.c:1319 +#: commands/vacuumlazy.c:1341 #, c-format msgid "%u page is entirely empty.\n" msgid_plural "%u pages are entirely empty.\n" msgstr[0] "%u pagina è completamente vuota.\n" msgstr[1] "%u pagina sono completamente vuote.\n" -#: commands/vacuumlazy.c:1327 +#: commands/vacuumlazy.c:1349 #, c-format msgid "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u pages" msgstr "\"%s\": trovate %.0f versioni di riga removibili, %.0f non removibili in %u pagine su %u" -#: commands/vacuumlazy.c:1396 +#: commands/vacuumlazy.c:1418 #, c-format msgid "\"%s\": removed %d row versions in %d pages" msgstr "\"%s\": %d versioni di riga rimosse in %d pagine" -#: commands/vacuumlazy.c:1585 +#: commands/vacuumlazy.c:1607 #, c-format msgid "scanned index \"%s\" to remove %d row versions" msgstr "effettuata la scansione dell'indice \"%s\" per rimuovere %d versioni di riga" -#: commands/vacuumlazy.c:1631 +#: commands/vacuumlazy.c:1653 #, c-format msgid "index \"%s\" now contains %.0f row versions in %u pages" msgstr "l'indice \"%s\" ora contiene %.0f versioni di riga in %u pagine" -#: commands/vacuumlazy.c:1635 +#: commands/vacuumlazy.c:1657 #, c-format msgid "" "%.0f index row versions were removed.\n" @@ -9547,22 +9560,22 @@ msgstr "" "%u pagine dell'indice sono state cancellate, %u sono attualmente riusabili.\n" "%s." -#: commands/vacuumlazy.c:1721 +#: commands/vacuumlazy.c:1752 #, c-format msgid "\"%s\": stopping truncate due to conflicting lock request" msgstr "\"%s\": truncate interrotto a causa di una richiesta di lock in conflitto" -#: commands/vacuumlazy.c:1786 +#: commands/vacuumlazy.c:1817 #, c-format msgid "\"%s\": truncated %u to %u pages" msgstr "\"%s\": %u pagine ridotte a %u" -#: commands/vacuumlazy.c:1842 +#: commands/vacuumlazy.c:1873 #, c-format msgid "\"%s\": suspending truncate due to conflicting lock request" msgstr "\"%s\": annullamento del troncamento a causa di richieste di lock in conflitto" -#: commands/variable.c:164 utils/misc/guc.c:9877 +#: commands/variable.c:164 utils/misc/guc.c:9899 #, c-format msgid "Unrecognized key word: \"%s\"." msgstr "Parola chiave non riconosciuta: \"%s\"." @@ -9652,7 +9665,12 @@ msgstr "La conversione fra %s e %s non è supportata." msgid "Cannot change \"client_encoding\" now." msgstr "Non è possibile cambiare \"client_encoding\" ora." -#: commands/variable.c:898 +#: commands/variable.c:779 +#, c-format +msgid "cannot change client_encoding in a parallel worker" +msgstr "non è possibile cambiare client_encoding in un worker parallelo" + +#: commands/variable.c:915 #, c-format msgid "permission denied to set role \"%s\"" msgstr "permesso di impostare il ruolo \"%s\" negato" @@ -9667,52 +9685,52 @@ msgstr "valore non valido per l'opzione \"check_option\"" msgid "Valid values are \"local\" and \"cascaded\"." msgstr "Valori validi sono \"local\" e \"cascaded\"." -#: commands/view.c:114 +#: commands/view.c:101 #, c-format msgid "could not determine which collation to use for view column \"%s\"" msgstr "non è stato possibile determinare quale ordinamento usare per la colonna \"%s\"" -#: commands/view.c:129 +#: commands/view.c:115 #, c-format msgid "view must have at least one column" msgstr "la vista deve avere almeno una colonna" -#: commands/view.c:263 commands/view.c:275 +#: commands/view.c:280 commands/view.c:292 #, c-format msgid "cannot drop columns from view" msgstr "non è possibile eliminare colonne da una vista" -#: commands/view.c:280 +#: commands/view.c:297 #, c-format msgid "cannot change name of view column \"%s\" to \"%s\"" msgstr "non è possibile cambiare nome della colonna di vista \"%s\" in \"%s\"" -#: commands/view.c:288 +#: commands/view.c:305 #, c-format msgid "cannot change data type of view column \"%s\" from %s to %s" msgstr "non è possibile cambiare tipo di dato della colonna di vista \"%s\" da %s a %s" -#: commands/view.c:427 +#: commands/view.c:444 #, c-format msgid "views must not contain SELECT INTO" msgstr "le viste non possono contenere SELECT INTO" -#: commands/view.c:440 +#: commands/view.c:457 #, c-format msgid "views must not contain data-modifying statements in WITH" msgstr "una vista non può contenere istruzioni di modifica dei dati in un WITH" -#: commands/view.c:511 +#: commands/view.c:528 #, c-format msgid "CREATE VIEW specifies more column names than columns" msgstr "CREATE VIEW specifica più nomi di colonne che colonne" -#: commands/view.c:519 +#: commands/view.c:536 #, c-format msgid "views cannot be unlogged because they do not have storage" msgstr "le viste non possono essere non loggate perché non sono immagazzinate" -#: commands/view.c:533 +#: commands/view.c:550 #, c-format msgid "view \"%s\" will be a temporary view" msgstr "la vista \"%s\" sarà una vista temporanea" @@ -9757,37 +9775,37 @@ msgstr "il tipo del parametro %d (%s) non combacia con quello usato alla prepara msgid "no value found for parameter %d" msgstr "nessun valore trovato per il parametro %d" -#: executor/execIndexing.c:539 +#: executor/execIndexing.c:544 #, c-format msgid "ON CONFLICT does not support deferrable unique constraints/exclusion constraints as arbiters" msgstr "ON CONFLICT non supporta vincoli/esclusioni unici deferibili come arbitri" -#: executor/execIndexing.c:816 +#: executor/execIndexing.c:821 #, c-format msgid "could not create exclusion constraint \"%s\"" msgstr "creazione del vincolo di esclusione \"%s\" fallita" -#: executor/execIndexing.c:819 +#: executor/execIndexing.c:824 #, c-format msgid "Key %s conflicts with key %s." msgstr "La chiave %s è in conflitto con la chiave %s." -#: executor/execIndexing.c:821 +#: executor/execIndexing.c:826 #, c-format msgid "Key conflicts exist." msgstr "Ci sono conflitti di chiave." -#: executor/execIndexing.c:827 +#: executor/execIndexing.c:832 #, c-format msgid "conflicting key value violates exclusion constraint \"%s\"" msgstr "le chiavi in conflitto violano il vincolo di esclusione \"%s\"" -#: executor/execIndexing.c:830 +#: executor/execIndexing.c:835 #, c-format msgid "Key %s conflicts with existing key %s." msgstr "La chiave %s è in conflitto con la chiave esistente %s." -#: executor/execIndexing.c:832 +#: executor/execIndexing.c:837 #, c-format msgid "Key conflicts with existing key." msgstr "Conflitti di chiave con chiave esistente." @@ -9892,7 +9910,7 @@ msgstr "non è possibile bloccare righe vista \"%s\"" msgid "cannot lock rows in materialized view \"%s\"" msgstr "non è possibile bloccare righe nella vista materializzata \"%s\"" -#: executor/execMain.c:1192 executor/execMain.c:2603 +#: executor/execMain.c:1192 executor/execMain.c:2613 #: executor/nodeLockRows.c:132 #, c-format msgid "cannot lock rows in foreign table \"%s\"" @@ -9903,51 +9921,51 @@ msgstr "non è possibile bloccare righe nella tabella esterna \"%s\"" msgid "cannot lock rows in relation \"%s\"" msgstr "non è possibile bloccare righe nella relazione \"%s\"" -#: executor/execMain.c:1721 +#: executor/execMain.c:1731 #, c-format msgid "null value in column \"%s\" violates not-null constraint" msgstr "valori null nella colonna \"%s\" violano il vincolo non-null" -#: executor/execMain.c:1723 executor/execMain.c:1749 executor/execMain.c:1838 +#: executor/execMain.c:1733 executor/execMain.c:1759 executor/execMain.c:1848 #, c-format msgid "Failing row contains %s." msgstr "La riga in errore contiene %s." -#: executor/execMain.c:1747 +#: executor/execMain.c:1757 #, c-format msgid "new row for relation \"%s\" violates check constraint \"%s\"" msgstr "la nuova riga per la relazione \"%s\" viola il vincolo di controllo \"%s\"" -#: executor/execMain.c:1836 +#: executor/execMain.c:1846 #, c-format msgid "new row violates check option for view \"%s\"" msgstr "la nuova riga viola l'opzione di controllo della vista \"%s\"" -#: executor/execMain.c:1846 +#: executor/execMain.c:1856 #, c-format msgid "new row violates row-level security policy \"%s\" for table \"%s\"" msgstr "la nuova riga viola la regola di sicurezza per riga \"%s\" per la tabella \"%s\"" -#: executor/execMain.c:1851 +#: executor/execMain.c:1861 #, c-format msgid "new row violates row-level security policy for table \"%s\"" msgstr "la nuova riga viola la regola di sicurezza per riga per la tabella \"%s\"" -#: executor/execMain.c:1858 +#: executor/execMain.c:1868 #, c-format msgid "new row violates row-level security policy \"%s\" (USING expression) for table \"%s\"" msgstr "la nuova riga viola la regola di sicurezza per riga \"%s\" (espressione USING) per la tabella \"%s\"" -#: executor/execMain.c:1863 +#: executor/execMain.c:1873 #, c-format msgid "new row violates row-level security policy (USING expression) for table \"%s\"" msgstr "la nuova riga viola la regola di sicurezza per riga (espressione USING) per la tabella \"%s\"" -#: executor/execQual.c:302 executor/execQual.c:339 executor/execQual.c:3213 -#: utils/adt/array_userfuncs.c:472 utils/adt/arrayfuncs.c:260 +#: executor/execQual.c:302 executor/execQual.c:339 executor/execQual.c:3236 +#: utils/adt/array_userfuncs.c:484 utils/adt/arrayfuncs.c:260 #: utils/adt/arrayfuncs.c:558 utils/adt/arrayfuncs.c:1288 -#: utils/adt/arrayfuncs.c:3361 utils/adt/arrayfuncs.c:5245 -#: utils/adt/arrayfuncs.c:5768 +#: utils/adt/arrayfuncs.c:3361 utils/adt/arrayfuncs.c:5241 +#: utils/adt/arrayfuncs.c:5758 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" msgstr "il numero di dimensioni dell'array (%d) eccede il massimo consentito (%d)" @@ -9957,12 +9975,12 @@ msgstr "il numero di dimensioni dell'array (%d) eccede il massimo consentito (%d msgid "array subscript in assignment must not be null" msgstr "l'indice di un array nell'assegnamento non può essere nullo" -#: executor/execQual.c:657 executor/execQual.c:4138 +#: executor/execQual.c:657 executor/execQual.c:4183 #, c-format msgid "attribute %d has wrong type" msgstr "l'attributo %d è di tipo errato" -#: executor/execQual.c:658 executor/execQual.c:4139 +#: executor/execQual.c:658 executor/execQual.c:4184 #, c-format msgid "Table has type %s, but query expects %s." msgstr "La tabella ha il tipo %s, ma la query prevede %s." @@ -9992,7 +10010,7 @@ msgid "Physical storage mismatch on dropped attribute at ordinal position %d." msgstr "Il tipo di immagazzinamento fisico non corrisponde per l'attributo eliminato in posizione %d." #: executor/execQual.c:1344 parser/parse_func.c:115 parser/parse_func.c:542 -#: parser/parse_func.c:895 +#: parser/parse_func.c:897 #, c-format msgid "cannot pass more than %d argument to a function" msgid_plural "cannot pass more than %d arguments to a function" @@ -10026,98 +10044,93 @@ msgstr[1] "La riga restituita contiene %d attributi, ma la query ne prevede %d." msgid "Returned type %s at ordinal position %d, but query expects %s." msgstr "Tipo %s restituito in posizione %d, ma la query prevede %s." -#: executor/execQual.c:1897 executor/execQual.c:2328 +#: executor/execQual.c:1897 executor/execQual.c:2335 #, c-format msgid "table-function protocol for materialize mode was not followed" msgstr "il protocollo tabella-funzione del modo di materializzazione non è stato seguito" -#: executor/execQual.c:1917 executor/execQual.c:2335 +#: executor/execQual.c:1917 executor/execQual.c:2342 #, c-format msgid "unrecognized table-function returnMode: %d" msgstr "returnMode tabella-funzione sconosciuto: %d" -#: executor/execQual.c:2245 -#, c-format -msgid "function returning set of rows cannot return null value" -msgstr "una funzione che restituisce un insieme di righe non può restituire un valore null" - -#: executor/execQual.c:2302 +#: executor/execQual.c:2287 #, c-format msgid "rows returned by function are not all of the same row type" msgstr "le righe restituite dalla funzione non sono tutte dello stesso tipo" -#: executor/execQual.c:2517 +#: executor/execQual.c:2522 #, c-format msgid "IS DISTINCT FROM does not support set arguments" msgstr "IS DISTINCT FROM non supporta argomenti di tipo insieme" -#: executor/execQual.c:2594 +#: executor/execQual.c:2599 #, c-format msgid "op ANY/ALL (array) does not support set arguments" msgstr "l'operatore ANY/ALL (array) non supporta argomenti di tipo insieme" -#: executor/execQual.c:3191 +#: executor/execQual.c:3214 #, c-format msgid "cannot merge incompatible arrays" msgstr "non è possibile unire array non compatibili" -#: executor/execQual.c:3192 +#: executor/execQual.c:3215 #, c-format msgid "Array with element type %s cannot be included in ARRAY construct with element type %s." msgstr "Un array con tipo di elementi %s non può essere incluso nel costrutto ARRAY con elementi di tipo %s." -#: executor/execQual.c:3233 executor/execQual.c:3260 +#: executor/execQual.c:3256 executor/execQual.c:3283 #, c-format msgid "multidimensional arrays must have array expressions with matching dimensions" msgstr "gli array multidimensionali devono avere espressioni array di dimensioni corrispondenti" -#: executor/execQual.c:3775 +#: executor/execQual.c:3798 #, c-format msgid "NULLIF does not support set arguments" msgstr "NULLIF non supporta argomenti di tipo insieme" -#: executor/execQual.c:4008 utils/adt/domains.c:136 +#: executor/execQual.c:4046 utils/adt/domains.c:137 #, c-format msgid "domain %s does not allow null values" msgstr "il DOMAIN %s non consente valori nulli" -#: executor/execQual.c:4038 utils/adt/domains.c:173 +#: executor/execQual.c:4083 utils/adt/domains.c:179 #, c-format msgid "value for domain %s violates check constraint \"%s\"" msgstr "il valore per il DOMAIN %s viola il vincolo di controllo \"%s\"" -#: executor/execQual.c:4393 +#: executor/execQual.c:4438 #, c-format msgid "WHERE CURRENT OF is not supported for this table type" msgstr "WHERE CURRENT OF non è supportato per questo tipo di tabella" -#: executor/execQual.c:4590 parser/parse_agg.c:743 +#: executor/execQual.c:4627 parser/parse_agg.c:758 #, c-format msgid "window function calls cannot be nested" msgstr "le chiamate a funzioni finestra non possono essere annidate" -#: executor/execQual.c:4802 +#: executor/execQual.c:4839 #, c-format msgid "target type is not an array" msgstr "il tipo di destinazione non è un array" -#: executor/execQual.c:4917 +#: executor/execQual.c:4956 #, c-format msgid "ROW() column has type %s instead of type %s" msgstr "la colonna ROW() è di tipo %s invece di %s" -#: executor/execQual.c:5052 utils/adt/arrayfuncs.c:3803 -#: utils/adt/arrayfuncs.c:6341 utils/adt/rowtypes.c:927 +#: executor/execQual.c:5091 utils/adt/arrayfuncs.c:3803 +#: utils/adt/arrayfuncs.c:6325 utils/adt/rowtypes.c:927 #, c-format msgid "could not identify a comparison function for type %s" msgstr "non è stato possibile trovare un operatore di confronto per il tipo %s" -#: executor/execUtils.c:819 +#: executor/execUtils.c:813 #, c-format msgid "materialized view \"%s\" has not been populated" msgstr "la vista materializzata \"%s\" non è stata popolata" -#: executor/execUtils.c:821 +#: executor/execUtils.c:815 #, c-format msgid "Use the REFRESH MATERIALIZED VIEW command." msgstr "Usa il comando REFRESH MATERIALIZED VIEW." @@ -10127,86 +10140,91 @@ msgstr "Usa il comando REFRESH MATERIALIZED VIEW." msgid "could not determine actual type of argument declared %s" msgstr "non è stato possibile determinare il tipo reale dell'argomento dichiarato %s" +#: executor/functions.c:511 +#, c-format +msgid "cannot COPY to/from client in a SQL function" +msgstr "non è possibile usare COPY da o verso il client in una funzione SQL" + #. translator: %s is a SQL statement name -#: executor/functions.c:508 +#: executor/functions.c:517 #, c-format msgid "%s is not allowed in a SQL function" msgstr "%s non è consentito in una funzione SQL" #. translator: %s is a SQL statement name -#: executor/functions.c:515 executor/spi.c:1368 executor/spi.c:2158 +#: executor/functions.c:524 executor/spi.c:1364 executor/spi.c:2154 #, c-format msgid "%s is not allowed in a non-volatile function" msgstr "%s non è consentito in una funzione non volatile" -#: executor/functions.c:643 +#: executor/functions.c:650 #, c-format msgid "could not determine actual result type for function declared to return type %s" msgstr "non è stato possibile determinare il tipo reale restituito dalla funzione dichiarata con tipo restituito %s" -#: executor/functions.c:1408 +#: executor/functions.c:1415 #, c-format msgid "SQL function \"%s\" statement %d" msgstr "funzione SQL \"%s\" istruzione %d" -#: executor/functions.c:1434 +#: executor/functions.c:1441 #, c-format msgid "SQL function \"%s\" during startup" msgstr "funzione SQL \"%s\" durante l'avvio" -#: executor/functions.c:1593 executor/functions.c:1630 -#: executor/functions.c:1642 executor/functions.c:1755 -#: executor/functions.c:1788 executor/functions.c:1818 +#: executor/functions.c:1600 executor/functions.c:1637 +#: executor/functions.c:1649 executor/functions.c:1762 +#: executor/functions.c:1795 executor/functions.c:1825 #, c-format msgid "return type mismatch in function declared to return %s" msgstr "il tipo restituito non combacia nella funzione dichiarata con tipo restituito %s" -#: executor/functions.c:1595 +#: executor/functions.c:1602 #, c-format msgid "Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING." msgstr "L'istruzione finale della funzione deve essere SELECT oppure INSERT/UPDATE/DELETE RETURNING." -#: executor/functions.c:1632 +#: executor/functions.c:1639 #, c-format msgid "Final statement must return exactly one column." msgstr "L'istruzione finale deve restituire esattamente una colonna." -#: executor/functions.c:1644 +#: executor/functions.c:1651 #, c-format msgid "Actual return type is %s." msgstr "Il tipo restituito realmente è %s." -#: executor/functions.c:1757 +#: executor/functions.c:1764 #, c-format msgid "Final statement returns too many columns." msgstr "L'istruzione finale restituisce troppe colonne." -#: executor/functions.c:1790 +#: executor/functions.c:1797 #, c-format msgid "Final statement returns %s instead of %s at column %d." msgstr "L'istruzione finale restituisce %s invece di %s alla colonna %d." -#: executor/functions.c:1820 +#: executor/functions.c:1827 #, c-format msgid "Final statement returns too few columns." msgstr "L'istruzione finale restituisce troppe poche colonne." -#: executor/functions.c:1869 +#: executor/functions.c:1876 #, c-format msgid "return type %s is not supported for SQL functions" msgstr "il tipo di risultato %s non è supportato per le funzioni SQL" -#: executor/nodeAgg.c:3011 +#: executor/nodeAgg.c:3038 #, c-format -msgid "combine function for aggregate %u must to be declared as strict" -msgstr "la funzione di combinazione per l'aggregato %u deve essere dichiarata strict" +msgid "combine function for aggregate %u must be declared as STRICT" +msgstr "la funzione di combinazione per l'aggregato %u deve essere dichiarata STRICT" -#: executor/nodeAgg.c:3055 executor/nodeWindowAgg.c:2289 +#: executor/nodeAgg.c:3083 executor/nodeWindowAgg.c:2318 #, c-format msgid "aggregate %u needs to have compatible input type and transition type" msgstr "l'aggregato %u deve avere tipi di input e transizione compatibili" -#: executor/nodeAgg.c:3127 parser/parse_agg.c:597 parser/parse_agg.c:627 +#: executor/nodeAgg.c:3149 parser/parse_agg.c:612 parser/parse_agg.c:642 #, c-format msgid "aggregate function calls cannot be nested" msgstr "le chiamate a funzioni di aggregazione non possono essere annidate" @@ -10226,7 +10244,7 @@ msgstr "riavvolgimento del file temporaneo per l'hash-join fallito: %m" msgid "could not write to hash-join temporary file: %m" msgstr "scrittura nel file temporaneo per l'hash-join fallita: %m" -#: executor/nodeHashjoin.c:928 executor/nodeHashjoin.c:938 +#: executor/nodeHashjoin.c:935 executor/nodeHashjoin.c:945 #, c-format msgid "could not read from hash-join temporary file: %m" msgstr "lettura dal file temporaneo per l'hash-join fallita: %m" @@ -10271,12 +10289,12 @@ msgstr "La query produce un valore per una colonna eliminata in posizione %d." msgid "Query has too few columns." msgstr "La query ha troppe poche colonne." -#: executor/nodeModifyTable.c:1117 +#: executor/nodeModifyTable.c:1132 #, c-format msgid "ON CONFLICT DO UPDATE command cannot affect row a second time" msgstr "il comando ON CONFLICT DO UPDATE non può toccare le righe una seconda volta" -#: executor/nodeModifyTable.c:1118 +#: executor/nodeModifyTable.c:1133 #, c-format msgid "Ensure that no rows proposed for insertion within the same command have duplicate constrained values." msgstr "Assicurati che non ci siano righe proposte per l'inserimento nello stesso comando che abbiano valori vincolati uguali." @@ -10292,7 +10310,7 @@ msgid "TABLESAMPLE REPEATABLE parameter cannot be null" msgstr "il parametro TABLESAMPLE REPEATABLE non può essere null" #: executor/nodeSubplan.c:345 executor/nodeSubplan.c:384 -#: executor/nodeSubplan.c:1040 +#: executor/nodeSubplan.c:1036 #, c-format msgid "more than one row returned by a subquery used as an expression" msgstr "più di una riga restituita da una sottoquery usata come espressione" @@ -10302,58 +10320,58 @@ msgstr "più di una riga restituita da una sottoquery usata come espressione" msgid "moving-aggregate transition function must not return null" msgstr "le funzioni di transizione per aggregati mobili non possono restituire null" -#: executor/nodeWindowAgg.c:1609 +#: executor/nodeWindowAgg.c:1642 #, c-format msgid "frame starting offset must not be null" msgstr "l'offset di inizio della finestra dev'essere non nullo" -#: executor/nodeWindowAgg.c:1622 +#: executor/nodeWindowAgg.c:1655 #, c-format msgid "frame starting offset must not be negative" msgstr "l'offset di inizio della finestra non può essere negativo" -#: executor/nodeWindowAgg.c:1635 +#: executor/nodeWindowAgg.c:1668 #, c-format msgid "frame ending offset must not be null" msgstr "l'offset di fine della finestra dev'essere non nullo" -#: executor/nodeWindowAgg.c:1648 +#: executor/nodeWindowAgg.c:1681 #, c-format msgid "frame ending offset must not be negative" msgstr "l'offset di fine della finestra non può essere negativo" -#: executor/spi.c:214 +#: executor/spi.c:210 #, c-format msgid "transaction left non-empty SPI stack" msgstr "la transazione ha lasciato lo stack SPI non vuoto" -#: executor/spi.c:215 executor/spi.c:279 +#: executor/spi.c:211 executor/spi.c:275 #, c-format msgid "Check for missing \"SPI_finish\" calls." msgstr "Verifica che non ci siano chiamate \"SPI_finish\" mancanti." -#: executor/spi.c:278 +#: executor/spi.c:274 #, c-format msgid "subtransaction left non-empty SPI stack" msgstr "la sottotransazione ha lasciato lo stack SPI non vuoto" -#: executor/spi.c:1229 +#: executor/spi.c:1225 #, c-format msgid "cannot open multi-query plan as cursor" msgstr "non è possibile aprire un piano multi-query come cursore" #. translator: %s is name of a SQL command, eg INSERT -#: executor/spi.c:1234 +#: executor/spi.c:1230 #, c-format msgid "cannot open %s query as cursor" msgstr "non è possibile aprire una query %s come cursore" -#: executor/spi.c:1342 +#: executor/spi.c:1338 #, c-format msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE non è supportato" -#: executor/spi.c:1343 parser/analyze.c:2292 +#: executor/spi.c:1339 parser/analyze.c:2360 #, c-format msgid "Scrollable cursors must be READ ONLY." msgstr "Un cursore scorribile dev'essere READ ONLY." @@ -10363,17 +10381,22 @@ msgstr "Un cursore scorribile dev'essere READ ONLY." msgid "SQL statement \"%s\"" msgstr "istruzione SQL \"%s\"" -#: foreign/foreign.c:314 +#: executor/tqueue.c:317 +#, c-format +msgid "could not send tuple to shared-memory queue" +msgstr "invio delle tuple alla coda in memoria condivisa fallito" + +#: foreign/foreign.c:192 #, c-format msgid "user mapping not found for \"%s\"" msgstr "mappatura utenti non trovata per \"%s\"" -#: foreign/foreign.c:750 +#: foreign/foreign.c:644 #, c-format msgid "invalid option \"%s\"" msgstr "opzione \"%s\" non valida" -#: foreign/foreign.c:751 +#: foreign/foreign.c:645 #, c-format msgid "Valid options in this context are: %s" msgstr "Le opzioni valide in questo contesto sono: %s" @@ -10383,710 +10406,710 @@ msgstr "Le opzioni valide in questo contesto sono: %s" msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes." msgstr "Non è possibile aumentare il buffer della stringa contenente %d byte di altri %d byte." -#: libpq/auth.c:251 +#: libpq/auth.c:254 #, c-format msgid "authentication failed for user \"%s\": host rejected" msgstr "autenticazione fallita per l'utente \"%s\": host rifiutato" -#: libpq/auth.c:254 +#: libpq/auth.c:257 #, c-format msgid "\"trust\" authentication failed for user \"%s\"" msgstr "autenticazione \"trust\" fallita per l'utente \"%s\"" -#: libpq/auth.c:257 +#: libpq/auth.c:260 #, c-format msgid "Ident authentication failed for user \"%s\"" msgstr "autenticazione Ident fallita per l'utente \"%s\"" -#: libpq/auth.c:260 +#: libpq/auth.c:263 #, c-format msgid "Peer authentication failed for user \"%s\"" msgstr "autenticazione Peer fallita per l'utente \"%s\"" -#: libpq/auth.c:264 +#: libpq/auth.c:267 #, c-format msgid "password authentication failed for user \"%s\"" msgstr "autenticazione con password fallita per l'utente \"%s\"" -#: libpq/auth.c:269 +#: libpq/auth.c:272 #, c-format msgid "GSSAPI authentication failed for user \"%s\"" msgstr "autenticazione GSSAPI fallita per l'utente \"%s\"" -#: libpq/auth.c:272 +#: libpq/auth.c:275 #, c-format msgid "SSPI authentication failed for user \"%s\"" msgstr "autenticazione SSPI fallita per l'utente \"%s\"" -#: libpq/auth.c:275 +#: libpq/auth.c:278 #, c-format msgid "PAM authentication failed for user \"%s\"" msgstr "autenticazione PAM fallita per l'utente \"%s\"" -#: libpq/auth.c:278 +#: libpq/auth.c:281 #, c-format msgid "BSD authentication failed for user \"%s\"" msgstr "autenticazione BSD fallita per l'utente \"%s\"" -#: libpq/auth.c:281 +#: libpq/auth.c:284 #, c-format msgid "LDAP authentication failed for user \"%s\"" msgstr "autenticazione LDAP fallita per l'utente \"%s\"" -#: libpq/auth.c:284 +#: libpq/auth.c:287 #, c-format msgid "certificate authentication failed for user \"%s\"" msgstr "autenticazione con certificato fallita per l'utente \"%s\"" -#: libpq/auth.c:287 +#: libpq/auth.c:290 #, c-format msgid "RADIUS authentication failed for user \"%s\"" msgstr "autenticazione RADIUS fallita per l'utente \"%s\"" -#: libpq/auth.c:290 +#: libpq/auth.c:293 #, c-format msgid "authentication failed for user \"%s\": invalid authentication method" msgstr "autenticazione fallita per l'utente \"%s\": metodo di autenticazione non valido" -#: libpq/auth.c:294 +#: libpq/auth.c:297 #, c-format msgid "Connection matched pg_hba.conf line %d: \"%s\"" msgstr "La connessione si abbina con la riga %d di pg_hba.log: \"%s\"" -#: libpq/auth.c:349 +#: libpq/auth.c:352 #, c-format msgid "connection requires a valid client certificate" msgstr "la connessione richiede un certificato valido per il client" -#: libpq/auth.c:391 +#: libpq/auth.c:394 #, c-format msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s" msgstr "pg_hba.conf rifiuta connessioni di replica per l'host \"%s\", utente \"%s\", %s" -#: libpq/auth.c:393 libpq/auth.c:409 libpq/auth.c:467 libpq/auth.c:485 +#: libpq/auth.c:396 libpq/auth.c:412 libpq/auth.c:470 libpq/auth.c:488 msgid "SSL off" msgstr "SSL non abilitato" -#: libpq/auth.c:393 libpq/auth.c:409 libpq/auth.c:467 libpq/auth.c:485 +#: libpq/auth.c:396 libpq/auth.c:412 libpq/auth.c:470 libpq/auth.c:488 msgid "SSL on" msgstr "SSL abilitato" -#: libpq/auth.c:397 +#: libpq/auth.c:400 #, c-format msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\"" msgstr "pg_hba.conf rifiuta connessioni di replica per l'host \"%s\", utente \"%s\"" -#: libpq/auth.c:406 +#: libpq/auth.c:409 #, c-format msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\", %s" msgstr "pg_hba.conf rifiuta connessioni per l'host \"%s\", utente \"%s\", database \"%s\", %s" -#: libpq/auth.c:413 +#: libpq/auth.c:416 #, c-format msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\"" msgstr "pg_hba.conf rifiuta connessioni per l'host \"%s\", user \"%s\", database \"%s\"" -#: libpq/auth.c:442 +#: libpq/auth.c:445 #, c-format msgid "Client IP address resolved to \"%s\", forward lookup matches." msgstr "Indirizzo IP del client risolto in \"%s\", il forward lookup combacia." -#: libpq/auth.c:445 +#: libpq/auth.c:448 #, c-format msgid "Client IP address resolved to \"%s\", forward lookup not checked." msgstr "Indirizzo IP del client risolto in \"%s\", forward lookup non controllato." -#: libpq/auth.c:448 +#: libpq/auth.c:451 #, c-format msgid "Client IP address resolved to \"%s\", forward lookup does not match." msgstr "Indirizzo IP del client risolto in \"%s\", il forward lookup non combacia." -#: libpq/auth.c:451 +#: libpq/auth.c:454 #, c-format msgid "Could not translate client host name \"%s\" to IP address: %s." msgstr "Conversione del nome host \"%s\" in indirizzo IP non riuscita: %s." -#: libpq/auth.c:456 +#: libpq/auth.c:459 #, c-format msgid "Could not resolve client IP address to a host name: %s." msgstr "Risoluzione dell'indirizzo IP del client in nome host non riuscita: %s." -#: libpq/auth.c:465 +#: libpq/auth.c:468 #, c-format msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\", %s" msgstr "nessuna voce in pg_hba.conf per connessioni di replica da host \"%s\", utente \"%s\", database \"%s\"" -#: libpq/auth.c:472 +#: libpq/auth.c:475 #, c-format msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\"" msgstr "nessuna voce in pg_hba.conf per connessioni di replica da host \"%s\", user \"%s\"" -#: libpq/auth.c:482 +#: libpq/auth.c:485 #, c-format msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s" msgstr "nessuna voce in pg_hba.conf per l'host \"%s\", utente \"%s\", database \"%s\", %s" -#: libpq/auth.c:490 +#: libpq/auth.c:493 #, c-format msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\"" msgstr "nessuna voce in pg_hba.conf per l'host \"%s\", utente \"%s\", database \"%s\"" -#: libpq/auth.c:533 libpq/hba.c:1180 +#: libpq/auth.c:536 libpq/hba.c:1178 #, c-format msgid "MD5 authentication is not supported when \"db_user_namespace\" is enabled" msgstr "l'autenticazione MD5 non è supportata quando \"db_user_namespace\" è abilitato" -#: libpq/auth.c:667 +#: libpq/auth.c:670 #, c-format msgid "expected password response, got message type %d" msgstr "era attesa una risposta password, ricevuto messaggio di tipo %d" -#: libpq/auth.c:695 +#: libpq/auth.c:698 #, c-format msgid "invalid password packet size" msgstr "dimensione del pacchetto password non valida" -#: libpq/auth.c:825 +#: libpq/auth.c:828 #, c-format msgid "GSSAPI is not supported in protocol version 2" msgstr "GSSAPI non è supportato con la versione 2 del protocollo" -#: libpq/auth.c:885 +#: libpq/auth.c:888 #, c-format msgid "expected GSS response, got message type %d" msgstr "era attesa una risposta GSS, ricevuto messaggio di tipo %d" -#: libpq/auth.c:946 +#: libpq/auth.c:949 msgid "accepting GSS security context failed" msgstr "contesto di sicurezza accettazione GSS fallito" -#: libpq/auth.c:972 +#: libpq/auth.c:975 msgid "retrieving GSS user name failed" msgstr "la richiesta del GSS user name è fallita" -#: libpq/auth.c:1091 +#: libpq/auth.c:1094 #, c-format msgid "SSPI is not supported in protocol version 2" msgstr "SSPI non è supportato con la versione 2 del protocollo" -#: libpq/auth.c:1106 +#: libpq/auth.c:1109 msgid "could not acquire SSPI credentials" msgstr "non è stato possibile ottenere le credenziali SSPI" -#: libpq/auth.c:1124 +#: libpq/auth.c:1127 #, c-format msgid "expected SSPI response, got message type %d" msgstr "era attesa una risposta SSPI, ricevuto messaggio di tipo %d" -#: libpq/auth.c:1196 +#: libpq/auth.c:1199 msgid "could not accept SSPI security context" msgstr "non è stato possibile accettare il contesto di sicurezza SSPI" -#: libpq/auth.c:1258 +#: libpq/auth.c:1261 msgid "could not get token from SSPI security context" msgstr "non è stato possibile ottenere il token dal contesto di sicurezza SSPI" -#: libpq/auth.c:1377 libpq/auth.c:1396 +#: libpq/auth.c:1380 libpq/auth.c:1399 #, c-format msgid "could not translate name" msgstr "non è stato possibile tradurre il nome" -#: libpq/auth.c:1409 +#: libpq/auth.c:1412 #, c-format msgid "realm name too long" msgstr "nome di realm troppo lungo" -#: libpq/auth.c:1424 +#: libpq/auth.c:1427 #, c-format msgid "translated account name too long" msgstr "nome di account tradotto troppo lungo" -#: libpq/auth.c:1610 +#: libpq/auth.c:1613 #, c-format msgid "could not create socket for Ident connection: %m" msgstr "creazione del socket per la connessione Ident fallita: %m" -#: libpq/auth.c:1625 +#: libpq/auth.c:1628 #, c-format msgid "could not bind to local address \"%s\": %m" msgstr "bind sull'indirizzo locale \"%s\" fallito: %m" -#: libpq/auth.c:1637 +#: libpq/auth.c:1640 #, c-format msgid "could not connect to Ident server at address \"%s\", port %s: %m" msgstr "connessione al server Ident all'indirizzo \"%s\", porta %s fallita: %m" -#: libpq/auth.c:1659 +#: libpq/auth.c:1662 #, c-format msgid "could not send query to Ident server at address \"%s\", port %s: %m" msgstr "invio della query al server Ident all'indirizzo \"%s\", porta %s fallito: %m" -#: libpq/auth.c:1676 +#: libpq/auth.c:1679 #, c-format msgid "could not receive response from Ident server at address \"%s\", port %s: %m" msgstr "ricezione della risposta dal server Ident all'indirizzo \"%s\", porta %s fallita: %m" -#: libpq/auth.c:1686 +#: libpq/auth.c:1689 #, c-format msgid "invalidly formatted response from Ident server: \"%s\"" msgstr "risposta dal server Ident formattata in maniera non corretta: \"%s\"" -#: libpq/auth.c:1726 +#: libpq/auth.c:1729 #, c-format msgid "peer authentication is not supported on this platform" msgstr "il metodo di autenticazione peer non è supportato su questa piattaforma" -#: libpq/auth.c:1730 +#: libpq/auth.c:1733 #, c-format msgid "could not get peer credentials: %m" msgstr "non è stato possibile recuperare le credenziali del peer: %m" -#: libpq/auth.c:1739 +#: libpq/auth.c:1742 #, c-format msgid "could not look up local user ID %ld: %s" msgstr "ricerca dell'ID utente locale %ld fallita: %s" -#: libpq/auth.c:1823 libpq/auth.c:2149 libpq/auth.c:2509 +#: libpq/auth.c:1826 libpq/auth.c:2152 libpq/auth.c:2515 #, c-format msgid "empty password returned by client" msgstr "il client ha restituito una password vuota" -#: libpq/auth.c:1833 +#: libpq/auth.c:1836 #, c-format msgid "error from underlying PAM layer: %s" msgstr "errore dal livello PAM sottostante: %s" -#: libpq/auth.c:1914 +#: libpq/auth.c:1917 #, c-format msgid "could not create PAM authenticator: %s" msgstr "creazione dell'autenticatore PAM fallita: %s" -#: libpq/auth.c:1925 +#: libpq/auth.c:1928 #, c-format msgid "pam_set_item(PAM_USER) failed: %s" msgstr "pam_set_item(PAM_USER) fallita: %s" -#: libpq/auth.c:1936 +#: libpq/auth.c:1939 #, c-format msgid "pam_set_item(PAM_RHOST) failed: %s" msgstr "pam_set_item(PAM_RHOST) fallita: %s" -#: libpq/auth.c:1947 +#: libpq/auth.c:1950 #, c-format msgid "pam_set_item(PAM_CONV) failed: %s" msgstr "pam_set_item(PAM_CONV) fallita: %s" -#: libpq/auth.c:1958 +#: libpq/auth.c:1961 #, c-format msgid "pam_authenticate failed: %s" msgstr "pam_authenticate fallita: %s" -#: libpq/auth.c:1969 +#: libpq/auth.c:1972 #, c-format msgid "pam_acct_mgmt failed: %s" msgstr "pam_acct_mgmt fallita: %s" -#: libpq/auth.c:1980 +#: libpq/auth.c:1983 #, c-format msgid "could not release PAM authenticator: %s" msgstr "rilascio dell'autenticatore PAM fallito: %s" -#: libpq/auth.c:2045 +#: libpq/auth.c:2048 #, c-format msgid "could not initialize LDAP: %m" msgstr "inizializzazione LDAP fallita: %m" -#: libpq/auth.c:2048 +#: libpq/auth.c:2051 #, c-format msgid "could not initialize LDAP: error code %d" msgstr "inizializzazione LDAP fallita: codice errore %d" -#: libpq/auth.c:2058 +#: libpq/auth.c:2061 #, c-format msgid "could not set LDAP protocol version: %s" msgstr "impostazione della versione del protocollo LDAP fallita: %s" -#: libpq/auth.c:2087 +#: libpq/auth.c:2090 #, c-format msgid "could not load wldap32.dll" msgstr "caricamento wldap32.dll fallito" -#: libpq/auth.c:2095 +#: libpq/auth.c:2098 #, c-format msgid "could not load function _ldap_start_tls_sA in wldap32.dll" msgstr "caricamento della funzione _ldap_start_tls_sA in wldap32.dll fallito" -#: libpq/auth.c:2096 +#: libpq/auth.c:2099 #, c-format msgid "LDAP over SSL is not supported on this platform." msgstr "LDAP su SSL non è supportato su questa piattaforma." -#: libpq/auth.c:2111 +#: libpq/auth.c:2114 #, c-format msgid "could not start LDAP TLS session: %s" msgstr "avvio della sessione TLS LDAP fallito: %s" -#: libpq/auth.c:2133 +#: libpq/auth.c:2136 #, c-format msgid "LDAP server not specified" msgstr "server LDAP non specificato" -#: libpq/auth.c:2186 +#: libpq/auth.c:2189 #, c-format msgid "invalid character in user name for LDAP authentication" msgstr "carattere non valido nel nome utente per l'autenticazione LDAP" -#: libpq/auth.c:2201 +#: libpq/auth.c:2204 #, c-format msgid "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": %s" msgstr "bind iniziale LDAP fallito per ldapbinddn \"%s\" sul server \"%s\": %s" -#: libpq/auth.c:2225 +#: libpq/auth.c:2228 #, c-format msgid "could not search LDAP for filter \"%s\" on server \"%s\": %s" msgstr "ricerca in LDAP del filtro \"%s\" sul server \"%s\" fallita: %s" -#: libpq/auth.c:2236 +#: libpq/auth.c:2239 #, c-format msgid "LDAP user \"%s\" does not exist" msgstr "l'utente LDAP \"%s\" non esiste" -#: libpq/auth.c:2237 +#: libpq/auth.c:2240 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned no entries." msgstr "La ricerca LDAP del filtro \"%s\" sul server \"%s\" non ha restituito risultati." -#: libpq/auth.c:2241 +#: libpq/auth.c:2244 #, c-format msgid "LDAP user \"%s\" is not unique" msgstr "L'utente LDAP \"%s\" non è unico" -#: libpq/auth.c:2242 +#: libpq/auth.c:2245 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned %d entry." msgid_plural "LDAP search for filter \"%s\" on server \"%s\" returned %d entries." msgstr[0] "La ricerca LDAP del filtro \"%s\" sul server \"%s\" ha restituito %d risultato." msgstr[1] "La ricerca LDAP del filtro \"%s\" sul server \"%s\" ha restituito %d risultati." -#: libpq/auth.c:2260 +#: libpq/auth.c:2263 #, c-format msgid "could not get dn for the first entry matching \"%s\" on server \"%s\": %s" msgstr "dn per il primo risultato di \"%s\" non trovato sul server \"%s\": %s" -#: libpq/auth.c:2280 +#: libpq/auth.c:2283 #, c-format msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s" msgstr "unbind fallito dopo aver cercato l'utente \"%s\" sul server \"%s\": %s" -#: libpq/auth.c:2310 +#: libpq/auth.c:2313 #, c-format msgid "LDAP login failed for user \"%s\" on server \"%s\": %s" msgstr "login LDAP fallito per l'utente \"%s\" sul server \"%s\": %s" -#: libpq/auth.c:2338 +#: libpq/auth.c:2341 #, c-format msgid "certificate authentication failed for user \"%s\": client certificate contains no user name" msgstr "autenticazione con certificato fallita per l'utente \"%s\": il certificato del client non contiene alcun nome utente" -#: libpq/auth.c:2465 +#: libpq/auth.c:2471 #, c-format msgid "RADIUS server not specified" msgstr "server RADIUS non specificato" -#: libpq/auth.c:2472 +#: libpq/auth.c:2478 #, c-format msgid "RADIUS secret not specified" msgstr "segreto RADIUS non specificato" -#: libpq/auth.c:2488 libpq/hba.c:1634 +#: libpq/auth.c:2494 libpq/hba.c:1632 #, c-format msgid "could not translate RADIUS server name \"%s\" to address: %s" msgstr "conversione del nome del server RADIUS \"%s\" in indirizzo fallita: %s" -#: libpq/auth.c:2516 +#: libpq/auth.c:2522 #, c-format msgid "RADIUS authentication does not support passwords longer than %d characters" msgstr "l'autenticazione RADIUS non supporta password più lunghe di %d caratteri" -#: libpq/auth.c:2528 +#: libpq/auth.c:2534 #, c-format msgid "could not generate random encryption vector" msgstr "generazione del vettore di criptaggio casuale fallita" -#: libpq/auth.c:2563 +#: libpq/auth.c:2572 #, c-format msgid "could not perform MD5 encryption of password" msgstr "criptaggio MD5 della password fallito" -#: libpq/auth.c:2588 +#: libpq/auth.c:2597 #, c-format msgid "could not create RADIUS socket: %m" msgstr "creazione del socket RADIUS fallita: %m" -#: libpq/auth.c:2609 +#: libpq/auth.c:2618 #, c-format msgid "could not bind local RADIUS socket: %m" msgstr "bind del socket RADIUS fallito: %m" -#: libpq/auth.c:2619 +#: libpq/auth.c:2628 #, c-format msgid "could not send RADIUS packet: %m" msgstr "invio del pacchetto RADIUS fallito: %m" -#: libpq/auth.c:2652 libpq/auth.c:2677 +#: libpq/auth.c:2661 libpq/auth.c:2686 #, c-format msgid "timeout waiting for RADIUS response" msgstr "tempo scaduto in attesa della risposta RADIUS" -#: libpq/auth.c:2670 +#: libpq/auth.c:2679 #, c-format msgid "could not check status on RADIUS socket: %m" msgstr "controllo dello stato sul socket RADIUS fallito: %m" -#: libpq/auth.c:2699 +#: libpq/auth.c:2708 #, c-format msgid "could not read RADIUS response: %m" msgstr "lettura della risposta RADIUS fallita: %m" -#: libpq/auth.c:2711 libpq/auth.c:2715 +#: libpq/auth.c:2720 libpq/auth.c:2724 #, c-format msgid "RADIUS response was sent from incorrect port: %d" msgstr "la risposta RADIUS è stata inviata da una porta sbagliata: %d" -#: libpq/auth.c:2724 +#: libpq/auth.c:2733 #, c-format msgid "RADIUS response too short: %d" msgstr "risposta RADIUS troppo breve: %d" -#: libpq/auth.c:2731 +#: libpq/auth.c:2740 #, c-format msgid "RADIUS response has corrupt length: %d (actual length %d)" msgstr "la risposta RADIUS ha una lunghezza corrotta: %d (lunghezza reale %d)" -#: libpq/auth.c:2739 +#: libpq/auth.c:2748 #, c-format msgid "RADIUS response is to a different request: %d (should be %d)" msgstr "la risposta RADIUS è a una richiesta differente: %d (dovrebbe essere %d)" -#: libpq/auth.c:2764 +#: libpq/auth.c:2773 #, c-format msgid "could not perform MD5 encryption of received packet" msgstr "criptaggio MD5 dei pacchetti ricevuti fallito" -#: libpq/auth.c:2773 +#: libpq/auth.c:2782 #, c-format msgid "RADIUS response has incorrect MD5 signature" msgstr "la firma MD5 della risposta RADIUS non è corretta" -#: libpq/auth.c:2790 +#: libpq/auth.c:2799 #, c-format msgid "RADIUS response has invalid code (%d) for user \"%s\"" msgstr "il codice della risposta RADIUS (%d) per l'utente \"%s\" non è corretto" -#: libpq/be-fsstubs.c:134 libpq/be-fsstubs.c:165 libpq/be-fsstubs.c:199 -#: libpq/be-fsstubs.c:239 libpq/be-fsstubs.c:264 libpq/be-fsstubs.c:312 -#: libpq/be-fsstubs.c:335 libpq/be-fsstubs.c:583 +#: libpq/be-fsstubs.c:132 libpq/be-fsstubs.c:163 libpq/be-fsstubs.c:197 +#: libpq/be-fsstubs.c:237 libpq/be-fsstubs.c:262 libpq/be-fsstubs.c:310 +#: libpq/be-fsstubs.c:333 libpq/be-fsstubs.c:581 #, c-format msgid "invalid large-object descriptor: %d" msgstr "descrittore di large object non valido: %d" -#: libpq/be-fsstubs.c:180 libpq/be-fsstubs.c:218 libpq/be-fsstubs.c:602 -#: libpq/be-fsstubs.c:790 +#: libpq/be-fsstubs.c:178 libpq/be-fsstubs.c:216 libpq/be-fsstubs.c:600 +#: libpq/be-fsstubs.c:788 #, c-format msgid "permission denied for large object %u" msgstr "permesso per il large object %u negato" -#: libpq/be-fsstubs.c:205 libpq/be-fsstubs.c:589 +#: libpq/be-fsstubs.c:203 libpq/be-fsstubs.c:587 #, c-format msgid "large object descriptor %d was not opened for writing" msgstr "il descrittore per il large object %d non era aperto in scrittura" -#: libpq/be-fsstubs.c:247 +#: libpq/be-fsstubs.c:245 #, c-format msgid "lo_lseek result out of range for large-object descriptor %d" msgstr "il risultato di lo_lseek è fuori dall'intervallo consentito per il descrittore di large object %d" -#: libpq/be-fsstubs.c:320 +#: libpq/be-fsstubs.c:318 #, c-format msgid "lo_tell result out of range for large-object descriptor %d" msgstr "il risultato di lo_tell è fuori dall'intervallo consentito per il descrittore di large object %d" -#: libpq/be-fsstubs.c:457 +#: libpq/be-fsstubs.c:455 #, c-format msgid "must be superuser to use server-side lo_import()" msgstr "solo un superutente può usare lo_import() lato server" -#: libpq/be-fsstubs.c:458 +#: libpq/be-fsstubs.c:456 #, c-format msgid "Anyone can use the client-side lo_import() provided by libpq." msgstr "Chiunque può invece usare lo_import() lato client fornito da libpq." -#: libpq/be-fsstubs.c:471 +#: libpq/be-fsstubs.c:469 #, c-format msgid "could not open server file \"%s\": %m" msgstr "apertura del file del server \"%s\" fallita: %m" -#: libpq/be-fsstubs.c:493 +#: libpq/be-fsstubs.c:491 #, c-format msgid "could not read server file \"%s\": %m" msgstr "lettura dal file del server \"%s\" fallita: %m" -#: libpq/be-fsstubs.c:523 +#: libpq/be-fsstubs.c:521 #, c-format msgid "must be superuser to use server-side lo_export()" msgstr "solo un superutente può usare lo_export() lato server" -#: libpq/be-fsstubs.c:524 +#: libpq/be-fsstubs.c:522 #, c-format msgid "Anyone can use the client-side lo_export() provided by libpq." msgstr "Chiunque può invece usare lo_export() lato client fornito da libpq." -#: libpq/be-fsstubs.c:549 +#: libpq/be-fsstubs.c:547 #, c-format msgid "could not create server file \"%s\": %m" msgstr "creazione del file del server \"%s\" fallita: %m" -#: libpq/be-fsstubs.c:561 +#: libpq/be-fsstubs.c:559 #, c-format msgid "could not write server file \"%s\": %m" msgstr "scrittura del file del server \"%s\" fallita: %m" -#: libpq/be-fsstubs.c:815 +#: libpq/be-fsstubs.c:813 #, c-format msgid "large object read request is too large" msgstr "la richiesta di lettura per il large object è troppo grande" -#: libpq/be-fsstubs.c:857 utils/adt/genfile.c:211 utils/adt/genfile.c:252 +#: libpq/be-fsstubs.c:855 utils/adt/genfile.c:211 utils/adt/genfile.c:252 #, c-format msgid "requested length cannot be negative" msgstr "la lunghezza richiesta non può essere negativa" -#: libpq/be-secure-openssl.c:184 +#: libpq/be-secure-openssl.c:189 #, c-format msgid "could not create SSL context: %s" msgstr "creazione del contesto SSL fallita: %s" -#: libpq/be-secure-openssl.c:200 +#: libpq/be-secure-openssl.c:205 #, c-format msgid "could not load server certificate file \"%s\": %s" msgstr "caricamento del file di certificato del server \"%s\" fallito: %s" -#: libpq/be-secure-openssl.c:206 +#: libpq/be-secure-openssl.c:211 #, c-format msgid "could not access private key file \"%s\": %m" msgstr "accesso fallito al file della chiave privata \"%s\": %m" -#: libpq/be-secure-openssl.c:212 +#: libpq/be-secure-openssl.c:217 #, c-format msgid "private key file \"%s\" is not a regular file" msgstr "il file di chiave privata \"%s\" non è un file regolare" -#: libpq/be-secure-openssl.c:224 +#: libpq/be-secure-openssl.c:229 #, c-format msgid "private key file \"%s\" must be owned by the database user or root" msgstr "il file di chiave privata \"%s\" deve essere di proprietà dell'utente del database o di root" -#: libpq/be-secure-openssl.c:244 +#: libpq/be-secure-openssl.c:249 #, c-format msgid "private key file \"%s\" has group or world access" msgstr "il file della chiave privata \"%s\" ha accesso al gruppo o a chiunque" -#: libpq/be-secure-openssl.c:246 +#: libpq/be-secure-openssl.c:251 #, c-format msgid "File must have permissions u=rw (0600) or less if owned by the database user, or permissions u=rw,g=r (0640) or less if owned by root." msgstr "Il file deve avere permesso u=rw (0600) o inferiore se di proprietà dell'utente database, o permesso u=rw,g=r (0640) o inferiore se di proprietà di root." -#: libpq/be-secure-openssl.c:253 +#: libpq/be-secure-openssl.c:258 #, c-format msgid "could not load private key file \"%s\": %s" msgstr "caricamento del file della chiave privata \"%s\" fallito: %s" -#: libpq/be-secure-openssl.c:258 +#: libpq/be-secure-openssl.c:263 #, c-format msgid "check of private key failed: %s" msgstr "controllo della chiave privata fallito: %s" -#: libpq/be-secure-openssl.c:287 +#: libpq/be-secure-openssl.c:292 #, c-format msgid "could not load root certificate file \"%s\": %s" msgstr "caricamento del file del certificato radice \"%s\" fallito: %s" -#: libpq/be-secure-openssl.c:311 +#: libpq/be-secure-openssl.c:316 #, c-format msgid "SSL certificate revocation list file \"%s\" ignored" msgstr "il file di lista di revoche di certificati SSL \"%s\" è stato ignorato" -#: libpq/be-secure-openssl.c:313 +#: libpq/be-secure-openssl.c:318 #, c-format msgid "SSL library does not support certificate revocation lists." msgstr "La libreria SSL non supporta le liste di revoca dei certificati." -#: libpq/be-secure-openssl.c:318 +#: libpq/be-secure-openssl.c:323 #, c-format msgid "could not load SSL certificate revocation list file \"%s\": %s" msgstr "caricamento del file di lista di revoche di certificati SSL \"%s\" fallito: %s" -#: libpq/be-secure-openssl.c:365 +#: libpq/be-secure-openssl.c:370 #, c-format msgid "could not initialize SSL connection: %s" msgstr "inizializzazione della connessione SSL fallita: %s" -#: libpq/be-secure-openssl.c:373 +#: libpq/be-secure-openssl.c:378 #, c-format msgid "could not set SSL socket: %s" msgstr "impostazione del socket SSL fallita: %s" -#: libpq/be-secure-openssl.c:427 +#: libpq/be-secure-openssl.c:432 #, c-format msgid "could not accept SSL connection: %m" msgstr "accettazione della connessione SSL fallita: %m" -#: libpq/be-secure-openssl.c:431 libpq/be-secure-openssl.c:442 +#: libpq/be-secure-openssl.c:436 libpq/be-secure-openssl.c:447 #, c-format msgid "could not accept SSL connection: EOF detected" msgstr "accettazione della connessione SSL fallita: fine file individuata" -#: libpq/be-secure-openssl.c:436 +#: libpq/be-secure-openssl.c:441 #, c-format msgid "could not accept SSL connection: %s" msgstr "accettazione della connessione SSL fallita: %s" -#: libpq/be-secure-openssl.c:447 libpq/be-secure-openssl.c:588 -#: libpq/be-secure-openssl.c:648 +#: libpq/be-secure-openssl.c:452 libpq/be-secure-openssl.c:593 +#: libpq/be-secure-openssl.c:653 #, c-format msgid "unrecognized SSL error code: %d" msgstr "codice di errore SSL sconosciuto: %d" -#: libpq/be-secure-openssl.c:491 +#: libpq/be-secure-openssl.c:496 #, c-format msgid "SSL certificate's common name contains embedded null" msgstr "Il nome comune del certificato SSL contiene un null" -#: libpq/be-secure-openssl.c:502 +#: libpq/be-secure-openssl.c:507 #, c-format msgid "SSL connection from \"%s\"" msgstr "connessione SSL da \"%s\"" -#: libpq/be-secure-openssl.c:579 libpq/be-secure-openssl.c:639 +#: libpq/be-secure-openssl.c:584 libpq/be-secure-openssl.c:644 #, c-format msgid "SSL error: %s" msgstr "errore SSL: %s" -#: libpq/be-secure-openssl.c:988 +#: libpq/be-secure-openssl.c:1055 #, c-format msgid "ECDH: unrecognized curve name: %s" msgstr "ECDH: nome della curva non riconosciuto: %s" -#: libpq/be-secure-openssl.c:993 +#: libpq/be-secure-openssl.c:1060 #, c-format msgid "ECDH: could not create key" msgstr "ECDH: chiave non creata" -#: libpq/be-secure-openssl.c:1017 +#: libpq/be-secure-openssl.c:1084 msgid "no SSL error reported" msgstr "nessun errore SSL riportato" -#: libpq/be-secure-openssl.c:1021 +#: libpq/be-secure-openssl.c:1088 #, c-format msgid "SSL error code %lu" msgstr "codice di errore SSL: %lu" @@ -11131,304 +11154,304 @@ msgstr "token del file di autenticazione troppo lungo, saltato: \"%s\"" msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m" msgstr "apertura del file secondario di autenticazione \"@%s\" come \"%s\" fallita: %m" -#: libpq/hba.c:409 +#: libpq/hba.c:407 #, c-format msgid "authentication file line too long" msgstr "riga del file di autenticazione troppo lunga" -#: libpq/hba.c:410 libpq/hba.c:757 libpq/hba.c:773 libpq/hba.c:803 -#: libpq/hba.c:849 libpq/hba.c:862 libpq/hba.c:884 libpq/hba.c:893 -#: libpq/hba.c:914 libpq/hba.c:926 libpq/hba.c:945 libpq/hba.c:966 -#: libpq/hba.c:977 libpq/hba.c:1032 libpq/hba.c:1050 libpq/hba.c:1062 -#: libpq/hba.c:1079 libpq/hba.c:1089 libpq/hba.c:1103 libpq/hba.c:1119 -#: libpq/hba.c:1134 libpq/hba.c:1145 libpq/hba.c:1181 libpq/hba.c:1219 -#: libpq/hba.c:1230 libpq/hba.c:1250 libpq/hba.c:1261 libpq/hba.c:1278 -#: libpq/hba.c:1327 libpq/hba.c:1364 libpq/hba.c:1374 libpq/hba.c:1430 -#: libpq/hba.c:1442 libpq/hba.c:1455 libpq/hba.c:1547 libpq/hba.c:1636 -#: libpq/hba.c:1654 libpq/hba.c:1675 tsearch/ts_locale.c:182 +#: libpq/hba.c:408 libpq/hba.c:755 libpq/hba.c:771 libpq/hba.c:801 +#: libpq/hba.c:847 libpq/hba.c:860 libpq/hba.c:882 libpq/hba.c:891 +#: libpq/hba.c:912 libpq/hba.c:924 libpq/hba.c:943 libpq/hba.c:964 +#: libpq/hba.c:975 libpq/hba.c:1030 libpq/hba.c:1048 libpq/hba.c:1060 +#: libpq/hba.c:1077 libpq/hba.c:1087 libpq/hba.c:1101 libpq/hba.c:1117 +#: libpq/hba.c:1132 libpq/hba.c:1143 libpq/hba.c:1179 libpq/hba.c:1217 +#: libpq/hba.c:1228 libpq/hba.c:1248 libpq/hba.c:1259 libpq/hba.c:1276 +#: libpq/hba.c:1325 libpq/hba.c:1362 libpq/hba.c:1372 libpq/hba.c:1428 +#: libpq/hba.c:1440 libpq/hba.c:1453 libpq/hba.c:1545 libpq/hba.c:1634 +#: libpq/hba.c:1652 libpq/hba.c:1673 tsearch/ts_locale.c:182 #, c-format msgid "line %d of configuration file \"%s\"" msgstr "riga %d del file di configurazione \"%s\"" #. translator: the second %s is a list of auth methods -#: libpq/hba.c:755 +#: libpq/hba.c:753 #, c-format msgid "authentication option \"%s\" is only valid for authentication methods %s" msgstr "l'opzione di autenticazione \"%s\" è valida solo per i metodi di autenticazione %s" -#: libpq/hba.c:771 +#: libpq/hba.c:769 #, c-format msgid "authentication method \"%s\" requires argument \"%s\" to be set" msgstr "il metodo di autenticazione \"%s\" richiede che l'argomenti \"%s\" sia impostato" -#: libpq/hba.c:792 +#: libpq/hba.c:790 #, c-format msgid "missing entry in file \"%s\" at end of line %d" msgstr "voce mancante nel file \"%s\" alla fine della riga %d" -#: libpq/hba.c:802 +#: libpq/hba.c:800 #, c-format msgid "multiple values in ident field" msgstr "più di un valore nel campo ident" -#: libpq/hba.c:847 +#: libpq/hba.c:845 #, c-format msgid "multiple values specified for connection type" msgstr "più di un valore specificato per il tipo di connessione" -#: libpq/hba.c:848 +#: libpq/hba.c:846 #, c-format msgid "Specify exactly one connection type per line." msgstr "Specifica esattamente un tipo di connessione per riga." -#: libpq/hba.c:861 +#: libpq/hba.c:859 #, c-format msgid "local connections are not supported by this build" msgstr "le connessioni locali non sono supportate in questo binario" -#: libpq/hba.c:882 +#: libpq/hba.c:880 #, c-format msgid "hostssl requires SSL to be turned on" msgstr "hostssl richiede che SSL sia abilitato" -#: libpq/hba.c:883 +#: libpq/hba.c:881 #, c-format msgid "Set ssl = on in postgresql.conf." msgstr "Imposta ssl = on in postgresql.conf." -#: libpq/hba.c:891 +#: libpq/hba.c:889 #, c-format msgid "hostssl is not supported by this build" msgstr "hostssl non è supportato in questo binario" -#: libpq/hba.c:892 +#: libpq/hba.c:890 #, c-format msgid "Compile with --with-openssl to use SSL connections." msgstr "Compila con --with-openssl per usare connessioni SSL." -#: libpq/hba.c:912 +#: libpq/hba.c:910 #, c-format msgid "invalid connection type \"%s\"" msgstr "tipo di connessione \"%s\" non valido" -#: libpq/hba.c:925 +#: libpq/hba.c:923 #, c-format msgid "end-of-line before database specification" msgstr "fine riga prima della specificazione del database" -#: libpq/hba.c:944 +#: libpq/hba.c:942 #, c-format msgid "end-of-line before role specification" msgstr "fine riga prima della specificazione del ruolo" -#: libpq/hba.c:965 +#: libpq/hba.c:963 #, c-format msgid "end-of-line before IP address specification" msgstr "fine riga prima della specificazione dell'indirizzo IP" -#: libpq/hba.c:975 +#: libpq/hba.c:973 #, c-format msgid "multiple values specified for host address" msgstr "più di un valore specificato per l'indirizzo host" -#: libpq/hba.c:976 +#: libpq/hba.c:974 #, c-format msgid "Specify one address range per line." msgstr "Specifica un intervallo di indirizzi per riga." -#: libpq/hba.c:1030 +#: libpq/hba.c:1028 #, c-format msgid "invalid IP address \"%s\": %s" msgstr "indirizzo IP non valido \"%s\": %s" -#: libpq/hba.c:1048 +#: libpq/hba.c:1046 #, c-format msgid "specifying both host name and CIDR mask is invalid: \"%s\"" msgstr "specificare sia un nome host che una maschera CIDR non è consentito: \"%s\"" -#: libpq/hba.c:1060 +#: libpq/hba.c:1058 #, c-format msgid "invalid CIDR mask in address \"%s\"" msgstr "maschera CIDR non valida nell'indirizzo \"%s\"" -#: libpq/hba.c:1077 +#: libpq/hba.c:1075 #, c-format msgid "end-of-line before netmask specification" msgstr "fine riga prima della specificazione della maschera di rete" -#: libpq/hba.c:1078 +#: libpq/hba.c:1076 #, c-format msgid "Specify an address range in CIDR notation, or provide a separate netmask." msgstr "Specifica un intervallo di indirizzi in notazione CIDR, oppure fornisci una maschera di rete separata." -#: libpq/hba.c:1088 +#: libpq/hba.c:1086 #, c-format msgid "multiple values specified for netmask" msgstr "più di un valore specificato per la maschera di rete" -#: libpq/hba.c:1101 +#: libpq/hba.c:1099 #, c-format msgid "invalid IP mask \"%s\": %s" msgstr "maschera IP non valida \"%s\": %s" -#: libpq/hba.c:1118 +#: libpq/hba.c:1116 #, c-format msgid "IP address and mask do not match" msgstr "l'indirizzo IP e la maschera non combaciano" -#: libpq/hba.c:1133 +#: libpq/hba.c:1131 #, c-format msgid "end-of-line before authentication method" msgstr "fine riga prima del metodo di autenticazione" -#: libpq/hba.c:1143 +#: libpq/hba.c:1141 #, c-format msgid "multiple values specified for authentication type" msgstr "più di un valore specificato per il tipo di autenticazione" -#: libpq/hba.c:1144 +#: libpq/hba.c:1142 #, c-format msgid "Specify exactly one authentication type per line." msgstr "Specifica esattamente un tipo di autenticazione per riga." -#: libpq/hba.c:1217 +#: libpq/hba.c:1215 #, c-format msgid "invalid authentication method \"%s\"" msgstr "metodo di autenticazione \"%s\" non valido" -#: libpq/hba.c:1228 +#: libpq/hba.c:1226 #, c-format msgid "invalid authentication method \"%s\": not supported by this build" msgstr "metodo di autenticazione \"%s\" non valido: non supportato in questo binario" -#: libpq/hba.c:1249 +#: libpq/hba.c:1247 #, c-format msgid "gssapi authentication is not supported on local sockets" msgstr "l'autenticazione gssapi non è supportata su socket locali" -#: libpq/hba.c:1260 +#: libpq/hba.c:1258 #, c-format msgid "peer authentication is only supported on local sockets" msgstr "l'autenticazione peer è supportata solo su socket locali" -#: libpq/hba.c:1277 +#: libpq/hba.c:1275 #, c-format msgid "cert authentication is only supported on hostssl connections" msgstr "l'autenticazione cert è supportata solo su connessioni hostssl" -#: libpq/hba.c:1326 +#: libpq/hba.c:1324 #, c-format msgid "authentication option not in name=value format: %s" msgstr "opzione di autenticazione non in formato nome=valore: %s" -#: libpq/hba.c:1363 +#: libpq/hba.c:1361 #, c-format msgid "cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, or ldapurl together with ldapprefix" msgstr "non si possono usare ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute né ldapurl insieme a ldapprefix" -#: libpq/hba.c:1373 +#: libpq/hba.c:1371 #, c-format msgid "authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix\", or \"ldapsuffix\" to be set" msgstr "il metodo di autenticazione \"ldap\" richiede che gli argomenti \"ldapbasedn\", \"ldapprefix\" o \"ldapsuffix\" siano impostati" -#: libpq/hba.c:1416 +#: libpq/hba.c:1414 msgid "ident, peer, gssapi, sspi, and cert" msgstr "ident, peer, gssapi, sspi e cert" -#: libpq/hba.c:1429 +#: libpq/hba.c:1427 #, c-format msgid "clientcert can only be configured for \"hostssl\" rows" msgstr "il clientcert può essere configurato solo per le righe \"hostssl\"" -#: libpq/hba.c:1440 +#: libpq/hba.c:1438 #, c-format msgid "client certificates can only be checked if a root certificate store is available" msgstr "il certificato del client può essere controllato solo se un root certificate store è disponibile" -#: libpq/hba.c:1454 +#: libpq/hba.c:1452 #, c-format msgid "clientcert can not be set to 0 when using \"cert\" authentication" msgstr "clientcert non può essere impostato a 0 quando si usa l'autenticazione \"cert\"" -#: libpq/hba.c:1490 +#: libpq/hba.c:1488 #, c-format msgid "could not parse LDAP URL \"%s\": %s" msgstr "impossibile interpretare la URL LDAP \"%s\": %s" -#: libpq/hba.c:1498 +#: libpq/hba.c:1496 #, c-format msgid "unsupported LDAP URL scheme: %s" msgstr "schema di URL LDAP non supportato: %s" -#: libpq/hba.c:1514 +#: libpq/hba.c:1512 #, c-format msgid "filters not supported in LDAP URLs" msgstr "i filtri non sono supportati nelle URL LDAP" -#: libpq/hba.c:1522 +#: libpq/hba.c:1520 #, c-format msgid "LDAP URLs not supported on this platform" msgstr "URL LDAP non supportate su questa piattaforma" -#: libpq/hba.c:1546 +#: libpq/hba.c:1544 #, c-format msgid "invalid LDAP port number: \"%s\"" msgstr "numero di porta LDAP non valido: \"%s\"" -#: libpq/hba.c:1586 libpq/hba.c:1593 +#: libpq/hba.c:1584 libpq/hba.c:1591 msgid "gssapi and sspi" msgstr "gssapi e sspi" -#: libpq/hba.c:1602 libpq/hba.c:1611 +#: libpq/hba.c:1600 libpq/hba.c:1609 msgid "sspi" msgstr "sspi" -#: libpq/hba.c:1653 +#: libpq/hba.c:1651 #, c-format msgid "invalid RADIUS port number: \"%s\"" msgstr "numero di porta RADIUS non valido: \"%s\"" -#: libpq/hba.c:1673 +#: libpq/hba.c:1671 #, c-format msgid "unrecognized authentication option name: \"%s\"" msgstr "nome di opzione di autenticazione sconosciuto: \"%s\"" -#: libpq/hba.c:1808 guc-file.l:595 +#: libpq/hba.c:1806 guc-file.l:593 #, c-format msgid "could not open configuration file \"%s\": %m" msgstr "apertura del file di configurazione \"%s\" fallita: %m" -#: libpq/hba.c:1859 +#: libpq/hba.c:1855 #, c-format msgid "configuration file \"%s\" contains no entries" msgstr "il file di configurazione \"%s\" non contiene alcuna voce" -#: libpq/hba.c:1955 +#: libpq/hba.c:1951 #, c-format msgid "invalid regular expression \"%s\": %s" msgstr "espressione regolare non valida \"%s\": %s" -#: libpq/hba.c:2015 +#: libpq/hba.c:2011 #, c-format msgid "regular expression match for \"%s\" failed: %s" msgstr "corrispondenza dell'espressione regolare \"%s\" fallita: %s" -#: libpq/hba.c:2034 +#: libpq/hba.c:2030 #, c-format msgid "regular expression \"%s\" has no subexpressions as requested by backreference in \"%s\"" msgstr "l'espressione regolare \"%s\" non ha la sottoespressione richiesta dal riferimento in \"%s\"" -#: libpq/hba.c:2131 +#: libpq/hba.c:2127 #, c-format msgid "provided user name (%s) and authenticated user name (%s) do not match" msgstr "il nome utente fornito (%s) e il nome utente autenticato (%s) non combaciano" -#: libpq/hba.c:2151 +#: libpq/hba.c:2147 #, c-format msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\"" msgstr "nessuna corrispondenza nella mappa utenti \"%s\" per l'utente \"%s\" autenticato come \"%s\"" -#: libpq/hba.c:2186 +#: libpq/hba.c:2182 #, c-format msgid "could not open usermap file \"%s\": %m" msgstr "apertura del file usermap \"%s\" fallita: %m" @@ -11543,7 +11566,7 @@ msgstr "c'è alcuna connessione client" msgid "could not receive data from client: %m" msgstr "ricezione dati dal client fallita: %m" -#: libpq/pqcomm.c:1177 tcop/postgres.c:3906 +#: libpq/pqcomm.c:1177 tcop/postgres.c:3917 #, c-format msgid "terminating connection because protocol synchronization was lost" msgstr "la connessione verrà terminata perché la sincronizzazione del protocollo è stata persa" @@ -11568,23 +11591,23 @@ msgstr "messaggio incompleto dal client" msgid "could not send data to client: %m" msgstr "invio dati al client fallito: %m" -#: libpq/pqformat.c:436 +#: libpq/pqformat.c:437 #, c-format msgid "no data left in message" msgstr "nessun dato rimasto nel messaggio" -#: libpq/pqformat.c:556 libpq/pqformat.c:574 libpq/pqformat.c:595 +#: libpq/pqformat.c:557 libpq/pqformat.c:575 libpq/pqformat.c:596 #: utils/adt/arrayfuncs.c:1457 utils/adt/rowtypes.c:563 #, c-format msgid "insufficient data left in message" msgstr "i dati rimasti nel messaggio non sono sufficienti" -#: libpq/pqformat.c:636 +#: libpq/pqformat.c:637 libpq/pqformat.c:666 #, c-format msgid "invalid string in message" msgstr "stringa non valida nel messaggio" -#: libpq/pqformat.c:652 +#: libpq/pqformat.c:682 #, c-format msgid "invalid message format" msgstr "formato del messaggio non valido" @@ -11594,7 +11617,7 @@ msgstr "formato del messaggio non valido" msgid "%s: WSAStartup failed: %d\n" msgstr "%s: WSAStartup fallita: %d\n" -#: main/main.c:327 +#: main/main.c:328 #, c-format msgid "" "%s is the PostgreSQL server.\n" @@ -11603,7 +11626,7 @@ msgstr "" "%s è il server PostgreSQL.\n" "\n" -#: main/main.c:328 +#: main/main.c:329 #, c-format msgid "" "Usage:\n" @@ -11614,114 +11637,114 @@ msgstr "" " %s [OPZIONE]...\n" "\n" -#: main/main.c:329 +#: main/main.c:330 #, c-format msgid "Options:\n" msgstr "Opzioni:\n" -#: main/main.c:330 +#: main/main.c:331 #, c-format msgid " -B NBUFFERS number of shared buffers\n" msgstr " -B NBUFFERS numero di buffer condivisi\n" -#: main/main.c:331 +#: main/main.c:332 #, c-format msgid " -c NAME=VALUE set run-time parameter\n" msgstr " -c NOME=VALORE imposta un parametro di esecuzione\n" -#: main/main.c:332 +#: main/main.c:333 #, c-format msgid " -C NAME print value of run-time parameter, then exit\n" msgstr " -C NAME stampa il valore del parametro di esecuzione ed esci\n" -#: main/main.c:333 +#: main/main.c:334 #, c-format msgid " -d 1-5 debugging level\n" msgstr " -d 1-5 livello di debugging\n" -#: main/main.c:334 +#: main/main.c:335 #, c-format msgid " -D DATADIR database directory\n" msgstr " -D DATADIR directory del database\n" -#: main/main.c:335 +#: main/main.c:336 #, c-format msgid " -e use European date input format (DMY)\n" msgstr " -e usa il formato date europeo (GMA)\n" -#: main/main.c:336 +#: main/main.c:337 #, c-format msgid " -F turn fsync off\n" msgstr " -F disabilita fsync\n" -#: main/main.c:337 +#: main/main.c:338 #, c-format msgid " -h HOSTNAME host name or IP address to listen on\n" msgstr " -h HOSTNAME nome host o indirizzo IP su cui ascoltare\n" -#: main/main.c:338 +#: main/main.c:339 #, c-format msgid " -i enable TCP/IP connections\n" msgstr " -i abilita le connessioni TCP/IP\n" -#: main/main.c:339 +#: main/main.c:340 #, c-format msgid " -k DIRECTORY Unix-domain socket location\n" msgstr " -k DIRECTORY posizione dei socket di dominio Unix\n" -#: main/main.c:341 +#: main/main.c:342 #, c-format msgid " -l enable SSL connections\n" msgstr " -l abilita la connessione SSL\n" -#: main/main.c:343 +#: main/main.c:344 #, c-format msgid " -N MAX-CONNECT maximum number of allowed connections\n" msgstr " -N MAX-CONNECT numero massimo di connessioni consentite\n" -#: main/main.c:344 +#: main/main.c:345 #, c-format msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n" msgstr " -o OPZIONI passa \"OPZIONI\" ad ogni processo server (obsoleto)\n" -#: main/main.c:345 +#: main/main.c:346 #, c-format msgid " -p PORT port number to listen on\n" msgstr " -p PORT numero di porta sul quale ascoltare\n" -#: main/main.c:346 +#: main/main.c:347 #, c-format msgid " -s show statistics after each query\n" msgstr " -s mostra le statistiche dopo ogni query\n" -#: main/main.c:347 +#: main/main.c:348 #, c-format msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n" msgstr "" " -S WORK-MEM imposta la dimensione della memoria per gli ordinamenti\n" " (in kB)\n" -#: main/main.c:348 +#: main/main.c:349 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version mostra informazioni sulla versione ed esci\n" -#: main/main.c:349 +#: main/main.c:350 #, c-format msgid " --NAME=VALUE set run-time parameter\n" msgstr " --NOME=VALORE imposta un parametro di esecuzione\n" -#: main/main.c:350 +#: main/main.c:351 #, c-format msgid " --describe-config describe configuration parameters, then exit\n" msgstr " --describe-config descrivi i parametri di configurazione ed esci\n" -#: main/main.c:351 +#: main/main.c:352 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help mostra questo aiuto ed esci\n" -#: main/main.c:353 +#: main/main.c:354 #, c-format msgid "" "\n" @@ -11730,48 +11753,48 @@ msgstr "" "\n" "Opzioni per gli sviluppatori:\n" -#: main/main.c:354 +#: main/main.c:355 #, c-format msgid " -f s|i|n|m|h forbid use of some plan types\n" msgstr " -f s|i|n|m|h vieta l'uso di alcuni tipi di piani\n" -#: main/main.c:355 +#: main/main.c:356 #, c-format msgid " -n do not reinitialize shared memory after abnormal exit\n" msgstr "" " -n non reinizializzare la memoria condivisa dopo un'uscita\n" " anormale\n" -#: main/main.c:356 +#: main/main.c:357 #, c-format msgid " -O allow system table structure changes\n" msgstr "" " -O consenti cambiamenti alla struttura delle tabelle\n" " di sistema\n" -#: main/main.c:357 +#: main/main.c:358 #, c-format msgid " -P disable system indexes\n" msgstr " -P disabilita gli indici di sistema\n" -#: main/main.c:358 +#: main/main.c:359 #, c-format msgid " -t pa|pl|ex show timings after each query\n" msgstr " -t pa|pl|ex mostra i tempi impiegati dopo ogni query\n" -#: main/main.c:359 +#: main/main.c:360 #, c-format msgid " -T send SIGSTOP to all backend processes if one dies\n" msgstr " -T invia SIGSTOP a tutti i processi backend se uno muore\n" -#: main/main.c:360 +#: main/main.c:361 #, c-format msgid " -W NUM wait NUM seconds to allow attach from a debugger\n" msgstr "" " -W NUM attendi NUM secondi per consentire ad un debugger\n" " di collegarsi\n" -#: main/main.c:362 +#: main/main.c:363 #, c-format msgid "" "\n" @@ -11780,41 +11803,41 @@ msgstr "" "\n" "Opzione per la modalità a singolo utente:\n" -#: main/main.c:363 +#: main/main.c:364 #, c-format msgid " --single selects single-user mode (must be first argument)\n" msgstr "" " --single imposta la modalità utente singolo (deve essere il primo\n" " argomento)\n" -#: main/main.c:364 +#: main/main.c:365 #, c-format msgid " DBNAME database name (defaults to user name)\n" msgstr " DBNAME nome del database (il predefinito è il nome dell'utente)\n" -#: main/main.c:365 +#: main/main.c:366 #, c-format msgid " -d 0-5 override debugging level\n" msgstr " -d 0-5 scavalca il livello di debugging\n" -#: main/main.c:366 +#: main/main.c:367 #, c-format msgid " -E echo statement before execution\n" msgstr " -E stampa le istruzioni prima dell'esecuzione\n" -#: main/main.c:367 +#: main/main.c:368 #, c-format msgid " -j do not use newline as interactive query delimiter\n" msgstr "" " -j non usare \"a capo\" come delimitatore delle query\n" " interattivo\n" -#: main/main.c:368 main/main.c:373 +#: main/main.c:369 main/main.c:374 #, c-format msgid " -r FILENAME send stdout and stderr to given file\n" msgstr " -r NOMEFILE invia stdout e stderr al file in argomento\n" -#: main/main.c:370 +#: main/main.c:371 #, c-format msgid "" "\n" @@ -11823,26 +11846,26 @@ msgstr "" "\n" "Opzioni per la modalità di inizializzazione:\n" -#: main/main.c:371 +#: main/main.c:372 #, c-format msgid " --boot selects bootstrapping mode (must be first argument)\n" msgstr "" " --boot seleziona la modalità di inizializzazione (dev'essere\n" " il primo argomento)\n" -#: main/main.c:372 +#: main/main.c:373 #, c-format msgid " DBNAME database name (mandatory argument in bootstrapping mode)\n" msgstr "" " DBNAME nome del database (obbligatorio in modalità di\n" " inizializzazione)\n" -#: main/main.c:374 +#: main/main.c:375 #, c-format msgid " -x NUM internal use\n" msgstr " -x NUM uso interno\n" -#: main/main.c:376 +#: main/main.c:377 #, c-format msgid "" "\n" @@ -11859,7 +11882,7 @@ msgstr "" "\n" "Puoi segnalare eventuali bug a .\n" -#: main/main.c:390 +#: main/main.c:391 #, c-format msgid "" "\"root\" execution of the PostgreSQL server is not permitted.\n" @@ -11872,12 +11895,12 @@ msgstr "" "prevenire possibili problemi di sicurezza. Consulta la documentazione\n" "per avere maggiori informazioni su come avviare il server correttamente.\n" -#: main/main.c:407 +#: main/main.c:408 #, c-format msgid "%s: real and effective user IDs must match\n" msgstr "%s: utente gli ID reale e quello effettivo devono coincidere\n" -#: main/main.c:414 +#: main/main.c:415 #, c-format msgid "" "Execution of PostgreSQL by a user with administrative permissions is not\n" @@ -11902,24 +11925,24 @@ msgstr "il tipo di nodo estendibile \"%s\" esiste già" msgid "ExtensibleNodeMethods \"%s\" was not registered" msgstr "ExtensibleNodeMethods \"%s\" non è stato registrato" -#: nodes/nodeFuncs.c:123 nodes/nodeFuncs.c:154 parser/parse_coerce.c:1820 +#: nodes/nodeFuncs.c:124 nodes/nodeFuncs.c:155 parser/parse_coerce.c:1820 #: parser/parse_coerce.c:1848 parser/parse_coerce.c:1924 -#: parser/parse_expr.c:1981 parser/parse_func.c:597 parser/parse_oper.c:952 +#: parser/parse_expr.c:2019 parser/parse_func.c:597 parser/parse_oper.c:952 #, c-format msgid "could not find array type for data type %s" msgstr "non è stato possibile trovare il tipo di array per il tipo di dati %s" -#: optimizer/path/allpaths.c:2608 +#: optimizer/path/allpaths.c:2653 #, c-format msgid "WHERE CURRENT OF is not supported on a view with no underlying relation" msgstr "WHERE CURRENT OF non è supportato per una vista senza una relazione sottostante" -#: optimizer/path/allpaths.c:2613 +#: optimizer/path/allpaths.c:2658 #, c-format msgid "WHERE CURRENT OF is not supported on a view with more than one underlying relation" msgstr "WHERE CURRENT OF non è supportato per una vista con più di una relazione sottostante" -#: optimizer/path/allpaths.c:2618 +#: optimizer/path/allpaths.c:2663 #, c-format msgid "WHERE CURRENT OF is not supported on a view with grouping or aggregation" msgstr "WHERE CURRENT OF non è supportato per una vista con raggruppamenti o aggregazioni" @@ -11936,70 +11959,70 @@ msgid "%s cannot be applied to the nullable side of an outer join" msgstr "%s non può essere applicato sul lato che può essere nullo di un join esterno" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: optimizer/plan/planner.c:1473 parser/analyze.c:1481 parser/analyze.c:1679 -#: parser/analyze.c:2460 +#: optimizer/plan/planner.c:1480 parser/analyze.c:1549 parser/analyze.c:1747 +#: parser/analyze.c:2528 #, c-format msgid "%s is not allowed with UNION/INTERSECT/EXCEPT" msgstr "%s non è consentito con UNION/INTERSECT/EXCEPT" -#: optimizer/plan/planner.c:3752 +#: optimizer/plan/planner.c:3809 #, c-format msgid "could not implement GROUP BY" msgstr "non è stato possibile implementare GROUP BY" -#: optimizer/plan/planner.c:3753 optimizer/plan/planner.c:4095 -#: optimizer/prep/prepunion.c:927 +#: optimizer/plan/planner.c:3810 optimizer/plan/planner.c:4203 +#: optimizer/prep/prepunion.c:939 #, c-format msgid "Some of the datatypes only support hashing, while others only support sorting." msgstr "Alcuni dei tipi di dati supportano solo l'hashing, mentre altri supportano solo l'ordinamento." -#: optimizer/plan/planner.c:4094 +#: optimizer/plan/planner.c:4202 #, c-format msgid "could not implement DISTINCT" msgstr "non è stato possibile implementare DISTINCT" -#: optimizer/plan/planner.c:4633 +#: optimizer/plan/planner.c:4832 #, c-format msgid "could not implement window PARTITION BY" msgstr "non è stato possibile implementare PARTITION BY della finestra" -#: optimizer/plan/planner.c:4634 +#: optimizer/plan/planner.c:4833 #, c-format msgid "Window partitioning columns must be of sortable datatypes." msgstr "La colonna di partizionamento della finestra dev'essere un tipo di dato ordinabile." -#: optimizer/plan/planner.c:4638 +#: optimizer/plan/planner.c:4837 #, c-format msgid "could not implement window ORDER BY" msgstr "non è stato possibile implementare ORDER BY della finestra" -#: optimizer/plan/planner.c:4639 +#: optimizer/plan/planner.c:4838 #, c-format msgid "Window ordering columns must be of sortable datatypes." msgstr "La colonna di ordinamento della finestra dev'essere un tipo di dato ordinabile." -#: optimizer/plan/setrefs.c:423 +#: optimizer/plan/setrefs.c:415 #, c-format msgid "too many range table entries" msgstr "troppi intervalli di tabella" -#: optimizer/prep/prepunion.c:480 +#: optimizer/prep/prepunion.c:494 #, c-format msgid "could not implement recursive UNION" msgstr "non è stato possibile implementare la UNION ricorsiva" -#: optimizer/prep/prepunion.c:481 +#: optimizer/prep/prepunion.c:495 #, c-format msgid "All column datatypes must be hashable." msgstr "Tutti i tipi di dati devono supportare l'hash." #. translator: %s is UNION, INTERSECT, or EXCEPT -#: optimizer/prep/prepunion.c:926 +#: optimizer/prep/prepunion.c:938 #, c-format msgid "could not implement %s" msgstr "non è stato possibile implementare %s" -#: optimizer/util/clauses.c:4965 +#: optimizer/util/clauses.c:4634 #, c-format msgid "SQL function \"%s\" during inlining" msgstr "funzione SQL \"%s\" durante l'inlining" @@ -12009,443 +12032,443 @@ msgstr "funzione SQL \"%s\" durante l'inlining" msgid "cannot access temporary or unlogged relations during recovery" msgstr "non è possibile accedere a relazioni temporanee o non loggate durante il ripristino" -#: optimizer/util/plancat.c:591 +#: optimizer/util/plancat.c:611 #, c-format -msgid "system columns cannot be used in an ON CONFLICT clause" -msgstr "le colonne di sistema non possono essere usate in una clausola ON CONFLICT" +msgid "whole row unique index inference specifications are not supported" +msgstr "le specifiche di inferenza di indici unici per l'intera riga non sono supportate" -#: optimizer/util/plancat.c:609 +#: optimizer/util/plancat.c:628 #, c-format msgid "constraint in ON CONFLICT clause has no associated index" msgstr "il vincolo nella clausola ON CONFLICT non ha indici associati" -#: optimizer/util/plancat.c:661 +#: optimizer/util/plancat.c:679 #, c-format msgid "ON CONFLICT DO UPDATE not supported with exclusion constraints" msgstr "ON CONFLICT DO UPDATE non supportato con vincoli di esclusione" -#: optimizer/util/plancat.c:768 +#: optimizer/util/plancat.c:784 #, c-format msgid "there is no unique or exclusion constraint matching the ON CONFLICT specification" msgstr "non c'è alcun vincolo di unicità o esclusione che combaci con la specifica ON CONFLICT" -#: parser/analyze.c:639 parser/analyze.c:1253 +#: parser/analyze.c:663 parser/analyze.c:1321 #, c-format msgid "VALUES lists must all be the same length" msgstr "le liste VALUES devono essere tutte della stessa lunghezza" -#: parser/analyze.c:811 +#: parser/analyze.c:859 #, c-format msgid "INSERT has more expressions than target columns" msgstr "INSERT ha più espressioni che colonne di destinazione" -#: parser/analyze.c:829 +#: parser/analyze.c:877 #, c-format msgid "INSERT has more target columns than expressions" msgstr "INSERT ha più colonne di destinazione che espressioni" -#: parser/analyze.c:833 +#: parser/analyze.c:881 #, c-format msgid "The insertion source is a row expression containing the same number of columns expected by the INSERT. Did you accidentally use extra parentheses?" msgstr "L'origine dell'inserimento è un'espressione riga con lo stesso numero di colonne attese da INSERT. Forse hai usato accidentalmente parentesi in eccesso?" -#: parser/analyze.c:1074 parser/analyze.c:1454 +#: parser/analyze.c:1142 parser/analyze.c:1522 #, c-format msgid "SELECT ... INTO is not allowed here" msgstr "SELECT ... INTO non è permesso qui" -#: parser/analyze.c:1267 +#: parser/analyze.c:1335 #, c-format msgid "DEFAULT can only appear in a VALUES list within INSERT" msgstr "DEFAULT può apparire solo nella lista di VALUES usata in un INSERT" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:1386 parser/analyze.c:2630 +#: parser/analyze.c:1454 parser/analyze.c:2698 #, c-format msgid "%s cannot be applied to VALUES" msgstr "%s non è consentito con VALUES" -#: parser/analyze.c:1607 +#: parser/analyze.c:1675 #, c-format msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" msgstr "clausola UNION/INTERSECT/EXCEPT ORDER BY non valida" -#: parser/analyze.c:1608 +#: parser/analyze.c:1676 #, c-format msgid "Only result column names can be used, not expressions or functions." msgstr "Possono essere usati solo nomi di colonne risultanti, non espressioni o funzioni." -#: parser/analyze.c:1609 +#: parser/analyze.c:1677 #, c-format msgid "Add the expression/function to every SELECT, or move the UNION into a FROM clause." msgstr "Aggiungi l'espressione/funzione ad ogni SELECT, oppure sposta la UNION in una clausola FROM." -#: parser/analyze.c:1669 +#: parser/analyze.c:1737 #, c-format msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT" msgstr "INTO è permesso solo nella prima SELECT di UNION/INTERSECT/EXCEPT" -#: parser/analyze.c:1733 +#: parser/analyze.c:1801 #, c-format msgid "UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of same query level" msgstr "l'istruzione membro di UNION/INTERSECT/EXCEPT non può riferirsi al altre relazione allo stesso livello della query" -#: parser/analyze.c:1822 +#: parser/analyze.c:1890 #, c-format msgid "each %s query must have the same number of columns" msgstr "ogni query in %s deve avere lo stesso numero di colonne" -#: parser/analyze.c:2215 +#: parser/analyze.c:2283 #, c-format msgid "RETURNING must have at least one column" msgstr "RETURNING deve avere almeno una colonna" -#: parser/analyze.c:2252 +#: parser/analyze.c:2320 #, c-format msgid "cannot specify both SCROLL and NO SCROLL" msgstr "non è possibile specificare sia SCROLL che NO SCROLL" -#: parser/analyze.c:2270 +#: parser/analyze.c:2338 #, c-format msgid "DECLARE CURSOR must not contain data-modifying statements in WITH" msgstr "DECLARE CURSOR non può contenere istruzioni di modifica dei dati nel WITH" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2278 +#: parser/analyze.c:2346 #, c-format msgid "DECLARE CURSOR WITH HOLD ... %s is not supported" msgstr "DECLARE CURSOR WITH HOLD ... %s non è supportato" -#: parser/analyze.c:2281 +#: parser/analyze.c:2349 #, c-format msgid "Holdable cursors must be READ ONLY." msgstr "I cursori trattenibili devono essere READ ONLY." #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2289 +#: parser/analyze.c:2357 #, c-format msgid "DECLARE SCROLL CURSOR ... %s is not supported" msgstr "DECLARE SCROLL CURSOR ... %s non è supportato" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2300 +#: parser/analyze.c:2368 #, c-format msgid "DECLARE INSENSITIVE CURSOR ... %s is not supported" msgstr "DECLARE INSENSITIVE CURSOR ... %s non è supportato" -#: parser/analyze.c:2303 +#: parser/analyze.c:2371 #, c-format msgid "Insensitive cursors must be READ ONLY." msgstr "I cursori Insensitive devono essere READ ONLY." -#: parser/analyze.c:2369 +#: parser/analyze.c:2437 #, c-format msgid "materialized views must not use data-modifying statements in WITH" msgstr "le viste materializzate non possono usare istruzioni di modifica dei dati nel WITH" -#: parser/analyze.c:2379 +#: parser/analyze.c:2447 #, c-format msgid "materialized views must not use temporary tables or views" msgstr "le viste materializzate non possono usare tabelle temporanee o viste" -#: parser/analyze.c:2389 +#: parser/analyze.c:2457 #, c-format msgid "materialized views may not be defined using bound parameters" msgstr "le viste materializzate non possono essere definite con parametri impostati" -#: parser/analyze.c:2401 +#: parser/analyze.c:2469 #, c-format msgid "materialized views cannot be UNLOGGED" msgstr "le viste materializzate non possono essere UNLOGGED" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2467 +#: parser/analyze.c:2535 #, c-format msgid "%s is not allowed with DISTINCT clause" msgstr "%s non è consentito con la clausola DISTINCT" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2474 +#: parser/analyze.c:2542 #, c-format msgid "%s is not allowed with GROUP BY clause" msgstr "%s non è consentito con la clausola GROUP BY" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2481 +#: parser/analyze.c:2549 #, c-format msgid "%s is not allowed with HAVING clause" msgstr "%s non è consentito con la clausola HAVING" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2488 +#: parser/analyze.c:2556 #, c-format msgid "%s is not allowed with aggregate functions" msgstr "%s non è consentito con funzioni di aggregazione" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2495 +#: parser/analyze.c:2563 #, c-format msgid "%s is not allowed with window functions" msgstr "%s non è consentito con funzioni finestra" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2502 +#: parser/analyze.c:2570 #, c-format msgid "%s is not allowed with set-returning functions in the target list" msgstr "%s non è consentito con la le funzioni che restituiscono insiemi nella lista di destinazione" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2581 +#: parser/analyze.c:2649 #, c-format msgid "%s must specify unqualified relation names" msgstr "%s deve specificare nomi di tabelle non qualificati" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2612 +#: parser/analyze.c:2680 #, c-format msgid "%s cannot be applied to a join" msgstr "%s non può essere applicato ad un join" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2621 +#: parser/analyze.c:2689 #, c-format msgid "%s cannot be applied to a function" msgstr "%s non può essere applicato ad una funzione" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2639 +#: parser/analyze.c:2707 #, c-format msgid "%s cannot be applied to a WITH query" msgstr "%s non può essere applicato ad una query WITH" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2656 +#: parser/analyze.c:2724 #, c-format msgid "relation \"%s\" in %s clause not found in FROM clause" msgstr "la relazione \"%s\" nella clausola %s non è stata trovata nella clausola FROM" -#: parser/parse_agg.c:208 parser/parse_oper.c:220 +#: parser/parse_agg.c:223 parser/parse_oper.c:220 #, c-format msgid "could not identify an ordering operator for type %s" msgstr "non è stato possibile identificare un operatore di ordinamento per il tipo %s" -#: parser/parse_agg.c:210 +#: parser/parse_agg.c:225 #, c-format msgid "Aggregates with DISTINCT must be able to sort their inputs." msgstr "Gli aggregati con DISTINCT devono essere in grado di ordinare i loro input." -#: parser/parse_agg.c:245 +#: parser/parse_agg.c:260 #, c-format msgid "GROUPING must have fewer than 32 arguments" msgstr "GROUPING deve avere meno di 32 argomenti" -#: parser/parse_agg.c:348 +#: parser/parse_agg.c:363 msgid "aggregate functions are not allowed in JOIN conditions" msgstr "le funzioni di aggregazione non sono ammesse nelle condizioni di JOIN" -#: parser/parse_agg.c:350 +#: parser/parse_agg.c:365 msgid "grouping operations are not allowed in JOIN conditions" msgstr "le operazioni di raggruppamento non sono ammesse nelle condizioni di JOIN" -#: parser/parse_agg.c:362 +#: parser/parse_agg.c:377 msgid "aggregate functions are not allowed in FROM clause of their own query level" msgstr "le funzioni di aggregazione non sono ammesse nella clausola FROM del loro stesso livello della query" -#: parser/parse_agg.c:364 +#: parser/parse_agg.c:379 msgid "grouping operations are not allowed in FROM clause of their own query level" msgstr "le operazioni di raggruppamento non sono ammesse nella clausola FROM del proprio livello di query" -#: parser/parse_agg.c:369 +#: parser/parse_agg.c:384 msgid "aggregate functions are not allowed in functions in FROM" msgstr "le funzioni di aggregazione non sono ammesse nelle funzioni in FROM" -#: parser/parse_agg.c:371 +#: parser/parse_agg.c:386 msgid "grouping operations are not allowed in functions in FROM" msgstr "le operazioni di raggruppamento non sono ammesse nelle funzioni in FROM" -#: parser/parse_agg.c:379 +#: parser/parse_agg.c:394 msgid "aggregate functions are not allowed in policy expressions" msgstr "le funzioni di aggregazione non sono ammesse nell'espressione di una regola di sicurezza" -#: parser/parse_agg.c:381 +#: parser/parse_agg.c:396 msgid "grouping operations are not allowed in policy expressions" msgstr "le funzioni di raggruppamento non sono ammesse nell'espressione di una regola di sicurezza" -#: parser/parse_agg.c:398 +#: parser/parse_agg.c:413 msgid "aggregate functions are not allowed in window RANGE" msgstr "le funzioni di aggregazione non sono ammesse nel RANGE della finestra" -#: parser/parse_agg.c:400 +#: parser/parse_agg.c:415 msgid "grouping operations are not allowed in window RANGE" msgstr "le operazioni di taggruppamento non sono ammesse nel RANGE della finestra" -#: parser/parse_agg.c:405 +#: parser/parse_agg.c:420 msgid "aggregate functions are not allowed in window ROWS" msgstr "le funzioni di aggregazione non sono ammesse nel ROWS della finestra" -#: parser/parse_agg.c:407 +#: parser/parse_agg.c:422 msgid "grouping operations are not allowed in window ROWS" msgstr "le operazioni di raggruppamento non sono ammesse nel ROWS della finestra" -#: parser/parse_agg.c:440 +#: parser/parse_agg.c:455 msgid "aggregate functions are not allowed in check constraints" msgstr "le funzioni di aggregazione non sono ammesse nei vincoli di controllo" -#: parser/parse_agg.c:442 +#: parser/parse_agg.c:457 msgid "grouping operations are not allowed in check constraints" msgstr "le operazioni di raggruppamento non sono ammesse nei vincoli di controllo" -#: parser/parse_agg.c:449 +#: parser/parse_agg.c:464 msgid "aggregate functions are not allowed in DEFAULT expressions" msgstr "le funzioni di aggregazione non sono ammesse nelle espressioni DEFAULT" -#: parser/parse_agg.c:451 +#: parser/parse_agg.c:466 msgid "grouping operations are not allowed in DEFAULT expressions" msgstr "le operazioni di raggruppamento non sono ammesse nelle espressioni DEFAULT" -#: parser/parse_agg.c:456 +#: parser/parse_agg.c:471 msgid "aggregate functions are not allowed in index expressions" msgstr "le funzioni di aggregazione non sono ammesse nelle espressioni degli indici" -#: parser/parse_agg.c:458 +#: parser/parse_agg.c:473 msgid "grouping operations are not allowed in index expressions" msgstr "le operazioni di raggruppamento non sono ammesse nelle espressioni degli indici" -#: parser/parse_agg.c:463 +#: parser/parse_agg.c:478 msgid "aggregate functions are not allowed in index predicates" msgstr "le funzioni di aggregazione non sono ammesse nei predicati degli indici" -#: parser/parse_agg.c:465 +#: parser/parse_agg.c:480 msgid "grouping operations are not allowed in index predicates" msgstr "le operazioni di raggruppamento non sono ammesse nei predicati degli indici" -#: parser/parse_agg.c:470 +#: parser/parse_agg.c:485 msgid "aggregate functions are not allowed in transform expressions" msgstr "le funzioni di aggregazione non sono ammesse nelle espressioni di trasformazione" -#: parser/parse_agg.c:472 +#: parser/parse_agg.c:487 msgid "grouping operations are not allowed in transform expressions" msgstr "le operazioni di raggruppamento non sono ammesse nelle espressioni di trasformazione" -#: parser/parse_agg.c:477 +#: parser/parse_agg.c:492 msgid "aggregate functions are not allowed in EXECUTE parameters" msgstr "le funzioni di aggregazione non sono ammesse nei parametri di EXECUTE" -#: parser/parse_agg.c:479 +#: parser/parse_agg.c:494 msgid "grouping operations are not allowed in EXECUTE parameters" msgstr "le operazioni di raggruppamento non sono ammesse nei parametri di EXECUTE" -#: parser/parse_agg.c:484 +#: parser/parse_agg.c:499 msgid "aggregate functions are not allowed in trigger WHEN conditions" msgstr "le funzioni di aggregazione non sono ammesse nelle condizioni WHEN dei trigger" -#: parser/parse_agg.c:486 +#: parser/parse_agg.c:501 msgid "grouping operations are not allowed in trigger WHEN conditions" msgstr "le operazioni di raggruppamento non sono ammesse nelle condizioni WHEN dei trigger" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:509 parser/parse_clause.c:1550 +#: parser/parse_agg.c:524 parser/parse_clause.c:1550 #, c-format msgid "aggregate functions are not allowed in %s" msgstr "le funzioni di aggregazione non sono ammesse in %s" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:512 +#: parser/parse_agg.c:527 #, c-format msgid "grouping operations are not allowed in %s" msgstr "le operazioni di raggruppamento non sono ammesse in %s" -#: parser/parse_agg.c:620 +#: parser/parse_agg.c:635 #, c-format msgid "outer-level aggregate cannot contain a lower-level variable in its direct arguments" msgstr "gli aggregati di livello esterno non possono contenere una variabile di livello inferiore tra gli argomenti diretti" -#: parser/parse_agg.c:691 +#: parser/parse_agg.c:706 #, c-format msgid "aggregate function calls cannot contain window function calls" msgstr "le chiamate a funzioni di aggregazione non possono contenere chiamate a funzioni finestra" -#: parser/parse_agg.c:769 +#: parser/parse_agg.c:784 msgid "window functions are not allowed in JOIN conditions" msgstr "le funzioni finestra non sono ammesse nelle condizioni JOIN" -#: parser/parse_agg.c:776 +#: parser/parse_agg.c:791 msgid "window functions are not allowed in functions in FROM" msgstr "le funzioni finestra non sono ammesse nelle funzioni in FROM" -#: parser/parse_agg.c:782 +#: parser/parse_agg.c:797 msgid "window functions are not allowed in policy expressions" msgstr "le funzioni finestra non sono ammesse nell'espressione di una regola di sicurezza" -#: parser/parse_agg.c:794 +#: parser/parse_agg.c:809 msgid "window functions are not allowed in window definitions" msgstr "le funzioni finestra non sono ammesse nelle definizioni di finestre" -#: parser/parse_agg.c:825 +#: parser/parse_agg.c:840 msgid "window functions are not allowed in check constraints" msgstr "le funzioni finestra non sono ammesse nei vincoli di controllo" -#: parser/parse_agg.c:829 +#: parser/parse_agg.c:844 msgid "window functions are not allowed in DEFAULT expressions" msgstr "le funzioni finestra non sono ammesse nelle espressioni DEFAULT" -#: parser/parse_agg.c:832 +#: parser/parse_agg.c:847 msgid "window functions are not allowed in index expressions" msgstr "le funzioni finestra non sono ammesse nelle espressioni degli indici" -#: parser/parse_agg.c:835 +#: parser/parse_agg.c:850 msgid "window functions are not allowed in index predicates" msgstr "le funzioni finestra non sono ammesse nei predicati degli indici" -#: parser/parse_agg.c:838 +#: parser/parse_agg.c:853 msgid "window functions are not allowed in transform expressions" msgstr "le funzioni finestra non sono ammesse nelle espressioni di trasformazione" -#: parser/parse_agg.c:841 +#: parser/parse_agg.c:856 msgid "window functions are not allowed in EXECUTE parameters" msgstr "le funzioni finestra non sono ammesse nei parametri di EXECUTE" -#: parser/parse_agg.c:844 +#: parser/parse_agg.c:859 msgid "window functions are not allowed in trigger WHEN conditions" msgstr "le funzioni finestra non sono ammesse nelle condizioni WHEN dei trigger" #. translator: %s is name of a SQL construct, eg GROUP BY -#: parser/parse_agg.c:864 parser/parse_clause.c:1559 +#: parser/parse_agg.c:879 parser/parse_clause.c:1559 #, c-format msgid "window functions are not allowed in %s" msgstr "le funzioni finestra non sono ammesse in %s" -#: parser/parse_agg.c:898 parser/parse_clause.c:2396 +#: parser/parse_agg.c:913 parser/parse_clause.c:2396 #, c-format msgid "window \"%s\" does not exist" msgstr "la finestra \"%s\" non esiste" -#: parser/parse_agg.c:983 +#: parser/parse_agg.c:998 #, c-format msgid "too many grouping sets present (maximum 4096)" msgstr "troppi insiemi di raggruppamento presenti (il massimo è 4096)" -#: parser/parse_agg.c:1132 +#: parser/parse_agg.c:1147 #, c-format msgid "aggregate functions are not allowed in a recursive query's recursive term" msgstr "le funzioni di aggregazione non sono ammesse nel termine ricorsivo di una query ricorsiva" -#: parser/parse_agg.c:1325 +#: parser/parse_agg.c:1340 #, c-format msgid "column \"%s.%s\" must appear in the GROUP BY clause or be used in an aggregate function" msgstr "la colonna \"%s.%s\" deve comparire nella clausola GROUP BY o essere usata in una funzione di aggregazione" -#: parser/parse_agg.c:1328 +#: parser/parse_agg.c:1343 #, c-format msgid "Direct arguments of an ordered-set aggregate must use only grouped columns." msgstr "Gli argomenti diretti di un aggregato su insieme ordinato devono usare solo colonne raggruppate." -#: parser/parse_agg.c:1333 +#: parser/parse_agg.c:1348 #, c-format msgid "subquery uses ungrouped column \"%s.%s\" from outer query" msgstr "la sottoquery usa la colonna non raggruppata \"%s.%s\" dalla query esterna" -#: parser/parse_agg.c:1497 +#: parser/parse_agg.c:1512 #, c-format msgid "arguments to GROUPING must be grouping expressions of the associated query level" msgstr "gli argomenti di GROUPING devono essere espressioni di raggruppamento del livello della query associato" @@ -12659,7 +12682,7 @@ msgstr "Gli operatori di ordinamento devono essere i membri \"<\" oppure \">\" d #: parser/parse_coerce.c:971 parser/parse_coerce.c:1001 #: parser/parse_coerce.c:1019 parser/parse_coerce.c:1034 -#: parser/parse_expr.c:2015 parser/parse_expr.c:2528 parser/parse_target.c:874 +#: parser/parse_expr.c:2053 parser/parse_expr.c:2577 parser/parse_target.c:885 #, c-format msgid "cannot cast type %s to %s" msgstr "non è possibile convertire il tipo %s in %s" @@ -12883,173 +12906,173 @@ msgstr "FOR UPDATE/SHARE non è implementato in una query ricorsiva" msgid "recursive reference to query \"%s\" must not appear more than once" msgstr "il riferimento ricorsivo alla query \"%s\" non può apparire più di una volta" -#: parser/parse_expr.c:387 parser/parse_relation.c:3083 -#: parser/parse_relation.c:3103 +#: parser/parse_expr.c:390 parser/parse_relation.c:3176 +#: parser/parse_relation.c:3196 #, c-format msgid "column %s.%s does not exist" msgstr "la colonna %s.%s non esiste" -#: parser/parse_expr.c:399 +#: parser/parse_expr.c:402 #, c-format msgid "column \"%s\" not found in data type %s" msgstr "la colonna \"%s\" non è stata trovata nel tipo di dato %s" -#: parser/parse_expr.c:405 +#: parser/parse_expr.c:408 #, c-format msgid "could not identify column \"%s\" in record data type" msgstr "la colonna \"%s\" non identificata nel tipo di dato record" -#: parser/parse_expr.c:411 +#: parser/parse_expr.c:414 #, c-format msgid "column notation .%s applied to type %s, which is not a composite type" msgstr "la notazione della colonna .%s sembra essere di tipo %s, che non è un tipo composito" -#: parser/parse_expr.c:441 parser/parse_target.c:660 +#: parser/parse_expr.c:444 parser/parse_target.c:671 #, c-format msgid "row expansion via \"*\" is not supported here" msgstr "l'espansione della riga tramite \"*\" non è supportata qui" -#: parser/parse_expr.c:767 parser/parse_relation.c:667 -#: parser/parse_relation.c:767 parser/parse_target.c:1109 +#: parser/parse_expr.c:770 parser/parse_relation.c:668 +#: parser/parse_relation.c:768 parser/parse_target.c:1120 #, c-format msgid "column reference \"%s\" is ambiguous" msgstr "il riferimento alla colonna \"%s\" è ambiguo" -#: parser/parse_expr.c:823 parser/parse_param.c:110 parser/parse_param.c:142 +#: parser/parse_expr.c:826 parser/parse_param.c:110 parser/parse_param.c:142 #: parser/parse_param.c:199 parser/parse_param.c:298 #, c-format msgid "there is no parameter $%d" msgstr "parametro $%d non presente" -#: parser/parse_expr.c:1034 +#: parser/parse_expr.c:1067 #, c-format msgid "NULLIF requires = operator to yield boolean" msgstr "NULLIF richiede che l'operatore = restituisca un valore booleano" -#: parser/parse_expr.c:1468 gram.y:9867 +#: parser/parse_expr.c:1501 gram.y:9887 #, c-format msgid "number of columns does not match number of values" msgstr "il numero di colonne non corrisponde al numero di valori" -#: parser/parse_expr.c:1697 +#: parser/parse_expr.c:1730 msgid "cannot use subquery in check constraint" msgstr "non si può usare una sottoquery nel vincolo di controllo" -#: parser/parse_expr.c:1701 +#: parser/parse_expr.c:1734 msgid "cannot use subquery in DEFAULT expression" msgstr "non si può usare una sottoquery in un'espressione DEFAULT" -#: parser/parse_expr.c:1704 +#: parser/parse_expr.c:1737 msgid "cannot use subquery in index expression" msgstr "non si possono usare sottoquery nell'espressione dell'indice" -#: parser/parse_expr.c:1707 +#: parser/parse_expr.c:1740 msgid "cannot use subquery in index predicate" msgstr "non è possibile usare sottoquery nel predicato dell'indice" -#: parser/parse_expr.c:1710 +#: parser/parse_expr.c:1743 msgid "cannot use subquery in transform expression" msgstr "non è possibile usare sottoquery in un'espressione di trasformazione" -#: parser/parse_expr.c:1713 +#: parser/parse_expr.c:1746 msgid "cannot use subquery in EXECUTE parameter" msgstr "non si possono usare sottoquery nel parametro EXECUTE" -#: parser/parse_expr.c:1716 +#: parser/parse_expr.c:1749 msgid "cannot use subquery in trigger WHEN condition" msgstr "non è possibile usare sottoquery nella condizione WHEN del trigger" -#: parser/parse_expr.c:1770 +#: parser/parse_expr.c:1803 #, c-format msgid "subquery must return only one column" msgstr "la sottoquery deve restituire solo una colonna" -#: parser/parse_expr.c:1854 +#: parser/parse_expr.c:1887 #, c-format msgid "subquery has too many columns" msgstr "la sottoquery ha troppe colonne" -#: parser/parse_expr.c:1859 +#: parser/parse_expr.c:1892 #, c-format msgid "subquery has too few columns" msgstr "la sottoquery ha troppe poche colonne" -#: parser/parse_expr.c:1955 +#: parser/parse_expr.c:1993 #, c-format msgid "cannot determine type of empty array" msgstr "non è possibile determinare il tipo di un array vuoto" -#: parser/parse_expr.c:1956 +#: parser/parse_expr.c:1994 #, c-format msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]." msgstr "Effettua una conversione esplicita al tipo desiderato, ad esempio ARRAY[]::integer[]." -#: parser/parse_expr.c:1970 +#: parser/parse_expr.c:2008 #, c-format msgid "could not find element type for data type %s" msgstr "tipo dell'elemento non trovato per il tipo di dato %s" -#: parser/parse_expr.c:2193 +#: parser/parse_expr.c:2231 #, c-format msgid "unnamed XML attribute value must be a column reference" msgstr "il valore dell'attributo XML senza nome dev'essere un riferimento ad una colonna" -#: parser/parse_expr.c:2194 +#: parser/parse_expr.c:2232 #, c-format msgid "unnamed XML element value must be a column reference" msgstr "il valore dell'elemento XML senza nome dev'essere un riferimento ad una colonna" -#: parser/parse_expr.c:2209 +#: parser/parse_expr.c:2247 #, c-format msgid "XML attribute name \"%s\" appears more than once" msgstr "l'attributo XML di nome \"%s\" compare più di una volta" -#: parser/parse_expr.c:2316 +#: parser/parse_expr.c:2354 #, c-format msgid "cannot cast XMLSERIALIZE result to %s" msgstr "non è possibile convertire il risultato di XMLSERIALIZE a %s" -#: parser/parse_expr.c:2601 parser/parse_expr.c:2797 +#: parser/parse_expr.c:2650 parser/parse_expr.c:2846 #, c-format msgid "unequal number of entries in row expressions" msgstr "numero di elementi differente nelle espressioni di riga" -#: parser/parse_expr.c:2611 +#: parser/parse_expr.c:2660 #, c-format msgid "cannot compare rows of zero length" msgstr "non possono comparire righe di lunghezza zero" -#: parser/parse_expr.c:2636 +#: parser/parse_expr.c:2685 #, c-format msgid "row comparison operator must yield type boolean, not type %s" msgstr "l'operatore di comparazione tra righe deve restituire il tipo booleano, non il tipo %s" -#: parser/parse_expr.c:2643 +#: parser/parse_expr.c:2692 #, c-format msgid "row comparison operator must not return a set" msgstr "l'operatore di comparazione tra righe non può restituire un insieme" -#: parser/parse_expr.c:2702 parser/parse_expr.c:2743 +#: parser/parse_expr.c:2751 parser/parse_expr.c:2792 #, c-format msgid "could not determine interpretation of row comparison operator %s" msgstr "non è stato possibile determinare un'interpretazione dell'operatore di comparazione tra righe %s" -#: parser/parse_expr.c:2704 +#: parser/parse_expr.c:2753 #, c-format msgid "Row comparison operators must be associated with btree operator families." msgstr "Gli operatori di comparazione tra righe devono essere associati a famiglie di operatori btree." -#: parser/parse_expr.c:2745 +#: parser/parse_expr.c:2794 #, c-format msgid "There are multiple equally-plausible candidates." msgstr "C'è più di un candidato egualmente plausibile." -#: parser/parse_expr.c:2837 +#: parser/parse_expr.c:2886 #, c-format msgid "IS DISTINCT FROM requires = operator to yield boolean" msgstr "IS DISTINCT FROM richiede che l'operatore = restituisca un valore booleano" -#: parser/parse_expr.c:3127 parser/parse_expr.c:3145 +#: parser/parse_expr.c:3199 parser/parse_expr.c:3217 #, c-format msgid "operator precedence change: %s is now lower precedence than %s" msgstr "cambio di precedenza di operatori: %s ora ha precedenza inferiore di %s" @@ -13159,52 +13182,52 @@ msgstr "Nessuna funzione trovata con nome e tipi di argomenti forniti. Potrebbe msgid "VARIADIC argument must be an array" msgstr "l'argomento VARIADIC deve essere un array" -#: parser/parse_func.c:669 parser/parse_func.c:733 +#: parser/parse_func.c:671 parser/parse_func.c:735 #, c-format msgid "%s(*) must be used to call a parameterless aggregate function" msgstr "%s(*) dev'essere usato per richiamare una funzione di aggregazione senza parametri" -#: parser/parse_func.c:676 +#: parser/parse_func.c:678 #, c-format msgid "aggregates cannot return sets" msgstr "le funzioni di aggregazione non possono restituire insiemi" -#: parser/parse_func.c:691 +#: parser/parse_func.c:693 #, c-format msgid "aggregates cannot use named arguments" msgstr "le funzioni di aggregazione non possono usare argomenti con nome" -#: parser/parse_func.c:723 +#: parser/parse_func.c:725 #, c-format msgid "DISTINCT is not implemented for window functions" msgstr "DISTINCT non è implementato per funzioni finestra" -#: parser/parse_func.c:743 +#: parser/parse_func.c:745 #, c-format msgid "aggregate ORDER BY is not implemented for window functions" msgstr "ORDER BY delle funzioni di aggregazione non è implementato per funzioni finestra" -#: parser/parse_func.c:752 +#: parser/parse_func.c:754 #, c-format msgid "FILTER is not implemented for non-aggregate window functions" msgstr "FILTER non è implementato per funzioni finestra non aggregate" -#: parser/parse_func.c:758 +#: parser/parse_func.c:760 #, c-format msgid "window functions cannot return sets" msgstr "le funzioni finestra non possono restituire insiemi" -#: parser/parse_func.c:2008 +#: parser/parse_func.c:2010 #, c-format msgid "aggregate %s(*) does not exist" msgstr "la funzione di aggregazione %s(*) non esiste" -#: parser/parse_func.c:2013 +#: parser/parse_func.c:2015 #, c-format msgid "aggregate %s does not exist" msgstr "la funzione di aggregazione %s non esiste" -#: parser/parse_func.c:2032 +#: parser/parse_func.c:2034 #, c-format msgid "function %s is not an aggregate" msgstr "la funzione %s non è una funzione di aggregazione" @@ -13240,9 +13263,9 @@ msgstr "l'operatore non esiste: %s" msgid "Use an explicit ordering operator or modify the query." msgstr "Usa un operatore di ordinamento esplicito, oppure modifica la query." -#: parser/parse_oper.c:226 utils/adt/array_userfuncs.c:782 -#: utils/adt/array_userfuncs.c:920 utils/adt/arrayfuncs.c:3639 -#: utils/adt/arrayfuncs.c:4077 utils/adt/arrayfuncs.c:6055 +#: parser/parse_oper.c:226 utils/adt/array_userfuncs.c:794 +#: utils/adt/array_userfuncs.c:933 utils/adt/arrayfuncs.c:3639 +#: utils/adt/arrayfuncs.c:4077 utils/adt/arrayfuncs.c:6039 #: utils/adt/rowtypes.c:1167 #, c-format msgid "could not identify an equality operator for type %s" @@ -13293,158 +13316,158 @@ msgstr "op ANY/ALL (array) richiede che l'operatore non restituisca un insieme" msgid "inconsistent types deduced for parameter $%d" msgstr "tipi di dati dedotti per il parametro $%d non consistenti" -#: parser/parse_relation.c:174 +#: parser/parse_relation.c:175 #, c-format msgid "table reference \"%s\" is ambiguous" msgstr "il riferimento alla tabella \"%s\" è ambiguo" -#: parser/parse_relation.c:218 +#: parser/parse_relation.c:219 #, c-format msgid "table reference %u is ambiguous" msgstr "il riferimento alla tabella %u è ambiguo" -#: parser/parse_relation.c:397 +#: parser/parse_relation.c:398 #, c-format msgid "table name \"%s\" specified more than once" msgstr "la tabella di nome \"%s\" è stata specificata più di una volta" -#: parser/parse_relation.c:424 parser/parse_relation.c:3023 +#: parser/parse_relation.c:425 parser/parse_relation.c:3116 #, c-format msgid "invalid reference to FROM-clause entry for table \"%s\"" msgstr "riferimento non valido all'elemento della clausola FROM per la tabella \"%s\"" -#: parser/parse_relation.c:427 parser/parse_relation.c:3028 +#: parser/parse_relation.c:428 parser/parse_relation.c:3121 #, c-format msgid "There is an entry for table \"%s\", but it cannot be referenced from this part of the query." msgstr "C'è un elemento per la tabella \"%s\", ma non può essere referenziato da questa parte della query." -#: parser/parse_relation.c:429 +#: parser/parse_relation.c:430 #, c-format msgid "The combining JOIN type must be INNER or LEFT for a LATERAL reference." msgstr "Il tipo del JOIN deve essere INNER oppure LEFT per un riferimento LATERAL." -#: parser/parse_relation.c:705 +#: parser/parse_relation.c:706 #, c-format msgid "system column \"%s\" reference in check constraint is invalid" msgstr "la colonna di sistema \"%s\" referenziata nel vincolo di controllo non è valida" -#: parser/parse_relation.c:1065 parser/parse_relation.c:1345 -#: parser/parse_relation.c:1847 +#: parser/parse_relation.c:1066 parser/parse_relation.c:1346 +#: parser/parse_relation.c:1848 #, c-format msgid "table \"%s\" has %d columns available but %d columns specified" msgstr "la tabella \"%s\" ha %d colonne disponibili ma %d colonne specificate" -#: parser/parse_relation.c:1152 +#: parser/parse_relation.c:1153 #, c-format msgid "There is a WITH item named \"%s\", but it cannot be referenced from this part of the query." msgstr "C'è un elemento di WITH di nome \"%s\", ma non può essere referenziato da questa parte della query." -#: parser/parse_relation.c:1154 +#: parser/parse_relation.c:1155 #, c-format msgid "Use WITH RECURSIVE, or re-order the WITH items to remove forward references." msgstr "Usa WITH RECURSIVE, oppure riordina gli elementi di WITH per rimuovere i riferimenti in avanti." -#: parser/parse_relation.c:1465 +#: parser/parse_relation.c:1466 #, c-format msgid "a column definition list is only allowed for functions returning \"record\"" msgstr "la lista di definizione di colonne è consentita solo per funzioni che restituiscono \"record\"" -#: parser/parse_relation.c:1474 +#: parser/parse_relation.c:1475 #, c-format msgid "a column definition list is required for functions returning \"record\"" msgstr "la lista di definizione di colonne è necessaria per funzioni che restituiscono \"record\"" -#: parser/parse_relation.c:1553 +#: parser/parse_relation.c:1554 #, c-format msgid "function \"%s\" in FROM has unsupported return type %s" msgstr "la funzione \"%s\" in FROM restituisce il tipo non supportato %s" -#: parser/parse_relation.c:1675 +#: parser/parse_relation.c:1676 #, c-format msgid "VALUES lists \"%s\" have %d columns available but %d columns specified" msgstr "le liste VALUES \"%s\" hanno %d colonne disponibili ma %d colonne specificate" -#: parser/parse_relation.c:1730 +#: parser/parse_relation.c:1731 #, c-format msgid "joins can have at most %d columns" msgstr "i join possono avere al più %d colonne" -#: parser/parse_relation.c:1820 +#: parser/parse_relation.c:1821 #, c-format msgid "WITH query \"%s\" does not have a RETURNING clause" msgstr "la query WITH \"%s\" non ha una clausola RETURNING" -#: parser/parse_relation.c:2652 parser/parse_relation.c:2807 +#: parser/parse_relation.c:2738 parser/parse_relation.c:2900 #, c-format msgid "column %d of relation \"%s\" does not exist" msgstr "la colonna %d della relazione \"%s\" non esiste" -#: parser/parse_relation.c:3026 +#: parser/parse_relation.c:3119 #, c-format msgid "Perhaps you meant to reference the table alias \"%s\"." msgstr "Forse intendevi utilizzare l'alias \"%s\" della tabella." -#: parser/parse_relation.c:3034 +#: parser/parse_relation.c:3127 #, c-format msgid "missing FROM-clause entry for table \"%s\"" msgstr "elemento FROM per la tabella \"%s\" mancante" -#: parser/parse_relation.c:3086 +#: parser/parse_relation.c:3179 #, c-format msgid "Perhaps you meant to reference the column \"%s.%s\"." msgstr "Forse intendevi referenziare la colonna \"%s.%s\"." -#: parser/parse_relation.c:3088 +#: parser/parse_relation.c:3181 #, c-format msgid "There is a column named \"%s\" in table \"%s\", but it cannot be referenced from this part of the query." msgstr "Esiste una colonna di nome \"%s\" nella tabella \"%s\", ma non può essere referenziata da questa parte della query." -#: parser/parse_relation.c:3105 +#: parser/parse_relation.c:3198 #, c-format msgid "Perhaps you meant to reference the column \"%s.%s\" or the column \"%s.%s\"." msgstr "Forse intendevi referenziare la colonna \"%s.%s\" o la colonna \"%s.%s\"." -#: parser/parse_target.c:421 parser/parse_target.c:713 +#: parser/parse_target.c:432 parser/parse_target.c:724 #, c-format msgid "cannot assign to system column \"%s\"" msgstr "non è possibile assegnare alla colonna di sistema \"%s\"" -#: parser/parse_target.c:449 +#: parser/parse_target.c:460 #, c-format msgid "cannot set an array element to DEFAULT" msgstr "non è possibile impostare gli elementi di un array a DEFAULT" -#: parser/parse_target.c:454 +#: parser/parse_target.c:465 #, c-format msgid "cannot set a subfield to DEFAULT" msgstr "non è possibile impostare un sottocampo a DEFAULT" -#: parser/parse_target.c:523 +#: parser/parse_target.c:534 #, c-format msgid "column \"%s\" is of type %s but expression is of type %s" msgstr "la colonna \"%s\" è di tipo %s ma l'espressione è di tipo %s" -#: parser/parse_target.c:697 +#: parser/parse_target.c:708 #, c-format msgid "cannot assign to field \"%s\" of column \"%s\" because its type %s is not a composite type" msgstr "non è possibile assegnare al campo \"%s\" della colonna \"%s\" perché il suo tipo %s non è un tipo composito" -#: parser/parse_target.c:706 +#: parser/parse_target.c:717 #, c-format msgid "cannot assign to field \"%s\" of column \"%s\" because there is no such column in data type %s" msgstr "non è possibile assegnare al campo \"%s\" della colonna \"%s\" perché non questa colonna non compare nel tipo di dato %s" -#: parser/parse_target.c:773 +#: parser/parse_target.c:784 #, c-format msgid "array assignment to \"%s\" requires type %s but expression is of type %s" msgstr "l'assegnamento array a \"%s\" richiede il tipo %s ma l'espressione è di tipo %s" -#: parser/parse_target.c:783 +#: parser/parse_target.c:794 #, c-format msgid "subfield \"%s\" is of type %s but expression is of type %s" msgstr "il sottocampo \"%s\" è di tipo %s ma l'espressione è di tipo %s" -#: parser/parse_target.c:1199 +#: parser/parse_target.c:1210 #, c-format msgid "SELECT * with no tables specified is not valid" msgstr "SELECT * senza tabelle specificate non è consentito" @@ -13484,224 +13507,224 @@ msgstr "i modificatori di tipo devono essere costanti o identificatori semplici" msgid "invalid type name \"%s\"" msgstr "nome di tipo \"%s\" non valido" -#: parser/parse_utilcmd.c:399 +#: parser/parse_utilcmd.c:384 #, c-format msgid "array of serial is not implemented" msgstr "gli array di serial non sono implementati" -#: parser/parse_utilcmd.c:447 +#: parser/parse_utilcmd.c:432 #, c-format msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\"" msgstr "%s creerà la sequenza implicita \"%s\" per la colonna serial \"%s.%s\"" -#: parser/parse_utilcmd.c:541 parser/parse_utilcmd.c:553 +#: parser/parse_utilcmd.c:526 parser/parse_utilcmd.c:538 #, c-format msgid "conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\"" msgstr "dichiarazioni NULL/NOT NULL in conflitto per la colonna \"%s\" della tabella \"%s\"" -#: parser/parse_utilcmd.c:565 +#: parser/parse_utilcmd.c:550 #, c-format msgid "multiple default values specified for column \"%s\" of table \"%s\"" msgstr "più di un valore predefinito specificato per la colonna \"%s\" della tabella \"%s\"" -#: parser/parse_utilcmd.c:582 parser/parse_utilcmd.c:673 +#: parser/parse_utilcmd.c:567 parser/parse_utilcmd.c:658 #, c-format msgid "primary key constraints are not supported on foreign tables" msgstr "i vincoli di chiave primaria non sono supportati sulle tabelle esterne" -#: parser/parse_utilcmd.c:591 parser/parse_utilcmd.c:683 +#: parser/parse_utilcmd.c:576 parser/parse_utilcmd.c:668 #, c-format msgid "unique constraints are not supported on foreign tables" msgstr "i vincoli di unicità non sono supportati sulle tabelle esterne" -#: parser/parse_utilcmd.c:608 parser/parse_utilcmd.c:707 +#: parser/parse_utilcmd.c:593 parser/parse_utilcmd.c:692 #, c-format msgid "foreign key constraints are not supported on foreign tables" msgstr "i vincoli di chiave esterna non sono supportati sulle tabelle esterne" -#: parser/parse_utilcmd.c:693 +#: parser/parse_utilcmd.c:678 #, c-format msgid "exclusion constraints are not supported on foreign tables" msgstr "i vincoli esclusione non sono supportati sulle tabelle esterne" -#: parser/parse_utilcmd.c:757 +#: parser/parse_utilcmd.c:742 #, c-format msgid "LIKE is not supported for creating foreign tables" msgstr "LIKE non è supportato nella creazione di tabelle esterne" -#: parser/parse_utilcmd.c:1288 parser/parse_utilcmd.c:1364 +#: parser/parse_utilcmd.c:1275 parser/parse_utilcmd.c:1351 #, c-format msgid "Index \"%s\" contains a whole-row table reference." msgstr "L'indice \"%s\" contiene un riferimento all'intera riga della tabella." -#: parser/parse_utilcmd.c:1634 +#: parser/parse_utilcmd.c:1621 #, c-format msgid "cannot use an existing index in CREATE TABLE" msgstr "non è possibile usare un indice preesistente in CREATE TABLE" -#: parser/parse_utilcmd.c:1654 +#: parser/parse_utilcmd.c:1641 #, c-format msgid "index \"%s\" is already associated with a constraint" msgstr "l'indice \"%s\" è già associato ad un vincolo" -#: parser/parse_utilcmd.c:1662 +#: parser/parse_utilcmd.c:1649 #, c-format msgid "index \"%s\" does not belong to table \"%s\"" msgstr "l'indice \"%s\" non appartiene alla tabella \"%s\"" -#: parser/parse_utilcmd.c:1669 +#: parser/parse_utilcmd.c:1656 #, c-format msgid "index \"%s\" is not valid" msgstr "l'indice \"%s\" non è valido" -#: parser/parse_utilcmd.c:1675 +#: parser/parse_utilcmd.c:1662 #, c-format msgid "\"%s\" is not a unique index" msgstr "\"%s\" non è un indice univoco" -#: parser/parse_utilcmd.c:1676 parser/parse_utilcmd.c:1683 -#: parser/parse_utilcmd.c:1690 parser/parse_utilcmd.c:1760 +#: parser/parse_utilcmd.c:1663 parser/parse_utilcmd.c:1670 +#: parser/parse_utilcmd.c:1677 parser/parse_utilcmd.c:1747 #, c-format msgid "Cannot create a primary key or unique constraint using such an index." msgstr "Non è possibile creare una chiave primaria o un vincolo univoco usando tale indice." -#: parser/parse_utilcmd.c:1682 +#: parser/parse_utilcmd.c:1669 #, c-format msgid "index \"%s\" contains expressions" msgstr "l'indice \"%s\" contiene espressioni" -#: parser/parse_utilcmd.c:1689 +#: parser/parse_utilcmd.c:1676 #, c-format msgid "\"%s\" is a partial index" msgstr "\"%s\" è un indice parziale" -#: parser/parse_utilcmd.c:1701 +#: parser/parse_utilcmd.c:1688 #, c-format msgid "\"%s\" is a deferrable index" msgstr "\"%s\" è un indice deferibile" -#: parser/parse_utilcmd.c:1702 +#: parser/parse_utilcmd.c:1689 #, c-format msgid "Cannot create a non-deferrable constraint using a deferrable index." msgstr "Non è possibile creare un vincolo non deferibile usando un indice deferibile." -#: parser/parse_utilcmd.c:1759 +#: parser/parse_utilcmd.c:1746 #, c-format msgid "index \"%s\" does not have default sorting behavior" msgstr "l'indice \"%s\" non ha un ordinamento predefinito" -#: parser/parse_utilcmd.c:1906 +#: parser/parse_utilcmd.c:1893 #, c-format msgid "column \"%s\" appears twice in primary key constraint" msgstr "la colonna \"%s\" appare due volte nel vincolo di chiave primaria" -#: parser/parse_utilcmd.c:1912 +#: parser/parse_utilcmd.c:1899 #, c-format msgid "column \"%s\" appears twice in unique constraint" msgstr "la colonna \"%s\" appare due volte nel vincolo univoco" -#: parser/parse_utilcmd.c:2116 +#: parser/parse_utilcmd.c:2103 #, c-format msgid "index expression cannot return a set" msgstr "l'espressione dell'indice non può restituire un insieme" -#: parser/parse_utilcmd.c:2127 +#: parser/parse_utilcmd.c:2114 #, c-format msgid "index expressions and predicates can refer only to the table being indexed" msgstr "le espressioni e i predicati dell'indice possono riferirsi solo alla tabella indicizzata" -#: parser/parse_utilcmd.c:2173 +#: parser/parse_utilcmd.c:2160 #, c-format msgid "rules on materialized views are not supported" msgstr "le regole sulle viste materializzate non sono supportate" -#: parser/parse_utilcmd.c:2234 +#: parser/parse_utilcmd.c:2221 #, c-format msgid "rule WHERE condition cannot contain references to other relations" msgstr "le condizioni WHERE delle regole non possono avere riferimenti ad altre relazioni" -#: parser/parse_utilcmd.c:2306 +#: parser/parse_utilcmd.c:2293 #, c-format msgid "rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE actions" msgstr "le regole con una condizione WHERE possono avere solo azione SELECT, INSERT, UPDATE o DELETE" -#: parser/parse_utilcmd.c:2324 parser/parse_utilcmd.c:2423 +#: parser/parse_utilcmd.c:2311 parser/parse_utilcmd.c:2410 #: rewrite/rewriteHandler.c:485 rewrite/rewriteManip.c:1015 #, c-format msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" msgstr "le istruzioni UNION/INTERSECT/EXCEPT condizionali non sono implementate" -#: parser/parse_utilcmd.c:2342 +#: parser/parse_utilcmd.c:2329 #, c-format msgid "ON SELECT rule cannot use OLD" msgstr "la regola ON SELECT non può usare OLD" -#: parser/parse_utilcmd.c:2346 +#: parser/parse_utilcmd.c:2333 #, c-format msgid "ON SELECT rule cannot use NEW" msgstr "la regola ON SELECT non può usare NEW" -#: parser/parse_utilcmd.c:2355 +#: parser/parse_utilcmd.c:2342 #, c-format msgid "ON INSERT rule cannot use OLD" msgstr "la regola ON INSERT non può usare OLD" -#: parser/parse_utilcmd.c:2361 +#: parser/parse_utilcmd.c:2348 #, c-format msgid "ON DELETE rule cannot use NEW" msgstr "La regola ON DELETE non può usare NEW" -#: parser/parse_utilcmd.c:2389 +#: parser/parse_utilcmd.c:2376 #, c-format msgid "cannot refer to OLD within WITH query" msgstr "non ci si può riferire ad OLD nella query WITH" -#: parser/parse_utilcmd.c:2396 +#: parser/parse_utilcmd.c:2383 #, c-format msgid "cannot refer to NEW within WITH query" msgstr "non ci si può riferire a NEW nella query WITH" -#: parser/parse_utilcmd.c:2599 +#: parser/parse_utilcmd.c:2586 #, c-format msgid "transform expression must not return a set" msgstr "l'espressione di trasformazione non può restituire un insieme" -#: parser/parse_utilcmd.c:2713 +#: parser/parse_utilcmd.c:2700 #, c-format msgid "misplaced DEFERRABLE clause" msgstr "clausola DEFERRABLE mal posizionata" -#: parser/parse_utilcmd.c:2718 parser/parse_utilcmd.c:2733 +#: parser/parse_utilcmd.c:2705 parser/parse_utilcmd.c:2720 #, c-format msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" msgstr "clausole DEFERRABLE/NOT DEFERRABLE multiple non consentite" -#: parser/parse_utilcmd.c:2728 +#: parser/parse_utilcmd.c:2715 #, c-format msgid "misplaced NOT DEFERRABLE clause" msgstr "clausola NOT DEFERRABLE mal posizionata" -#: parser/parse_utilcmd.c:2741 parser/parse_utilcmd.c:2767 gram.y:4893 +#: parser/parse_utilcmd.c:2728 parser/parse_utilcmd.c:2754 gram.y:4902 #, c-format msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" msgstr "un vincolo dichiarato INITIALLY DEFERRED dev'essere DEFERRABLE" -#: parser/parse_utilcmd.c:2749 +#: parser/parse_utilcmd.c:2736 #, c-format msgid "misplaced INITIALLY DEFERRED clause" msgstr "clausola INITIALLY DEFERRED mal posizionata" -#: parser/parse_utilcmd.c:2754 parser/parse_utilcmd.c:2780 +#: parser/parse_utilcmd.c:2741 parser/parse_utilcmd.c:2767 #, c-format msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" msgstr "clausole INITIALLY IMMEDIATE/DEFERRED multiple non sono consentite" -#: parser/parse_utilcmd.c:2775 +#: parser/parse_utilcmd.c:2762 #, c-format msgid "misplaced INITIALLY IMMEDIATE clause" msgstr "clausola INITIALLY IMMEDIATE mal posizionata" -#: parser/parse_utilcmd.c:2966 +#: parser/parse_utilcmd.c:2953 #, c-format msgid "CREATE specifies a schema (%s) different from the one being created (%s)" msgstr "CREATE specifica uno schema (%s) differente da quello che sta venendo creato (%s)" @@ -13735,17 +13758,17 @@ msgstr "" msgid "You possibly need to raise your kernel's SEMVMX value to be at least %d. Look into the PostgreSQL documentation for details." msgstr "Potresti dover aumentare il valore SEMVMX del tuo kernel ad almeno %d. Consulta la documentazione di PostgreSQL per ulteriori dettagli." -#: port/pg_shmem.c:141 port/sysv_shmem.c:141 +#: port/pg_shmem.c:195 port/sysv_shmem.c:195 #, c-format msgid "could not create shared memory segment: %m" msgstr "creazione del segmento di memoria condivisa fallita: %m" -#: port/pg_shmem.c:142 port/sysv_shmem.c:142 +#: port/pg_shmem.c:196 port/sysv_shmem.c:196 #, c-format msgid "Failed system call was shmget(key=%lu, size=%zu, 0%o)." msgstr "La chiamata di sistema fallita era shmget(key=%lu, size=%zu, 0%o)." -#: port/pg_shmem.c:146 port/sysv_shmem.c:146 +#: port/pg_shmem.c:200 port/sysv_shmem.c:200 #, c-format msgid "" "This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter, or possibly that it is less than your kernel's SHMMIN parameter.\n" @@ -13754,7 +13777,7 @@ msgstr "" "Questo errore di solito vuol dire che la richiesta di PostgreSQL di un segmento di memoria condivisa eccede il valore del parametro SHMMAX del tuo kernel, o anche che sia inferiore del parametro SHMMIN.\n" "La documentazione di PostgreSQL contiene ulteriori informazioni sulla configurazione della memoria condivisa." -#: port/pg_shmem.c:153 port/sysv_shmem.c:153 +#: port/pg_shmem.c:207 port/sysv_shmem.c:207 #, c-format msgid "" "This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMALL parameter. You might need to reconfigure the kernel with larger SHMALL.\n" @@ -13763,7 +13786,7 @@ msgstr "" "Questo errore di solito vuol dire che la richiesta di PostgreSQL di un segmento di memoria condivisa eccede il valore del parametro SHMALL del tuo kernel. Potresti dover riconfigurare il kernel con uno SHMALL più grande.\n" "La documentazione di PostgreSQL contiene ulteriori informazioni sulla configurazione della memoria condivisa." -#: port/pg_shmem.c:159 port/sysv_shmem.c:159 +#: port/pg_shmem.c:213 port/sysv_shmem.c:213 #, c-format msgid "" "This error does *not* mean that you have run out of disk space. It occurs either if all available shared memory IDs have been taken, in which case you need to raise the SHMMNI parameter in your kernel, or because the system's overall limit for shared memory has been reached.\n" @@ -13772,52 +13795,47 @@ msgstr "" "Questo errore *non* significa che è finito lo spazio su disco. Può succedere se tutti gli ID di memoria condivisa sono stati presi, nel cui caso è necessario aumentare il parametro SHMMNI del tuo kernel, oppure perché il limite globale la memoria condivisa di sistema è stato raggiunto.\n" "La documentazione di PostgreSQL contiene ulteriori informazioni sulla configurazione della memoria condivisa." -#: port/pg_shmem.c:340 port/sysv_shmem.c:340 -#, c-format -msgid "huge TLB pages not supported on this platform" -msgstr "pagine TLB huge non supportate su questa piattaforma" - -#: port/pg_shmem.c:390 port/sysv_shmem.c:390 +#: port/pg_shmem.c:504 port/sysv_shmem.c:504 #, c-format msgid "could not map anonymous shared memory: %m" msgstr "mappatura della memoria condivisa anonima fallita: %m" -#: port/pg_shmem.c:392 port/sysv_shmem.c:392 +#: port/pg_shmem.c:506 port/sysv_shmem.c:506 #, c-format msgid "This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory, swap space, or huge pages. To reduce the request size (currently %zu bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections." msgstr "Questo errore di solito vuol dire che la richiesta di PostgreSQL di un segmento di memoria condivisa supera la memoria disponibile, lo spazio di swap o le pagine huge. Per ridurre la dimensione richiesta (attualmente %zu byte), riduci l'utilizzo di memoria condivisa di PostgreSQL, ad esempio riducendo shared_buffers o max_connections." -#: port/pg_shmem.c:439 port/sysv_shmem.c:439 port/win32_shmem.c:134 +#: port/pg_shmem.c:572 port/sysv_shmem.c:572 port/win32_shmem.c:134 #, c-format msgid "huge pages not supported on this platform" msgstr "pagine huge non supportate su questa piattaforma" -#: port/pg_shmem.c:553 port/sysv_shmem.c:553 +#: port/pg_shmem.c:667 port/sysv_shmem.c:667 #, c-format msgid "could not stat data directory \"%s\": %m" msgstr "non è stato possibile ottenere informazioni sulla directory dati \"%s\": %m" -#: port/win32/crashdump.c:108 +#: port/win32/crashdump.c:122 #, c-format msgid "could not load dbghelp.dll, cannot write crash dump\n" msgstr "caricamento di dbghelp.dll fallito, impossibile salvare il crash dump\n" -#: port/win32/crashdump.c:116 +#: port/win32/crashdump.c:130 #, c-format msgid "could not load required functions in dbghelp.dll, cannot write crash dump\n" msgstr "caricamento della funzione richiesta in dbghelp.dll fallito, impossibile salvare il crash dump\n" -#: port/win32/crashdump.c:147 +#: port/win32/crashdump.c:161 #, c-format msgid "could not open crash dump file \"%s\" for writing: error code %lu\n" msgstr "apertura del file del crash dump \"%s\" in scrittura fallito: codice errore %lu\n" -#: port/win32/crashdump.c:154 +#: port/win32/crashdump.c:168 #, c-format msgid "wrote crash dump to file \"%s\"\n" msgstr "crash dump salvato nel file \"%s\"\n" -#: port/win32/crashdump.c:156 +#: port/win32/crashdump.c:170 #, c-format msgid "could not write crash dump to file \"%s\": error code %lu\n" msgstr "scrittura del crash dump nel file \"%s\" fallito: codice errore %lu\n" @@ -13887,22 +13905,22 @@ msgstr "La chiamata di sistema fallita era DuplicateHandle." msgid "Failed system call was MapViewOfFileEx." msgstr "La chiamata di sistema fallita era MapViewOfFileEx." -#: postmaster/autovacuum.c:377 +#: postmaster/autovacuum.c:380 #, c-format msgid "could not fork autovacuum launcher process: %m" msgstr "fork del processo di esecuzione di autovacuum fallito: %m" -#: postmaster/autovacuum.c:413 +#: postmaster/autovacuum.c:416 #, c-format msgid "autovacuum launcher started" msgstr "esecutore di autovacuum avviato" -#: postmaster/autovacuum.c:775 +#: postmaster/autovacuum.c:779 #, c-format msgid "autovacuum launcher shutting down" msgstr "arresto dell'esecutore di autovacuum" -#: postmaster/autovacuum.c:1443 +#: postmaster/autovacuum.c:1441 #, c-format msgid "could not fork autovacuum worker process: %m" msgstr "fork del processo di lavoro di autovacuum fallito: %m" @@ -13912,121 +13930,121 @@ msgstr "fork del processo di lavoro di autovacuum fallito: %m" msgid "autovacuum: processing database \"%s\"" msgstr "autovacuum: elaborazione del database \"%s\"" -#: postmaster/autovacuum.c:2051 +#: postmaster/autovacuum.c:2052 #, c-format msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\"" msgstr "autovacuum: eliminazione della tabella temporanea orfana \"%s\".\"%s\" nel database \"%s\"" -#: postmaster/autovacuum.c:2063 +#: postmaster/autovacuum.c:2064 #, c-format msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\"" msgstr "autovacuum: trovata tabella temporanea orfana \"%s\".\"%s\" nel database \"%s\"" -#: postmaster/autovacuum.c:2346 +#: postmaster/autovacuum.c:2347 #, c-format msgid "automatic vacuum of table \"%s.%s.%s\"" msgstr "pulizia automatica della tabella \"%s.%s.%s\"" -#: postmaster/autovacuum.c:2349 +#: postmaster/autovacuum.c:2350 #, c-format msgid "automatic analyze of table \"%s.%s.%s\"" msgstr "analisi automatica della tabella \"%s.%s.%s\"" -#: postmaster/autovacuum.c:2877 +#: postmaster/autovacuum.c:2899 #, c-format msgid "autovacuum not started because of misconfiguration" msgstr "autovacuum non avviato a causa di configurazione errata" -#: postmaster/autovacuum.c:2878 +#: postmaster/autovacuum.c:2900 #, c-format msgid "Enable the \"track_counts\" option." msgstr "Abilita l'opzione \"track_counts\"." -#: postmaster/bgworker.c:346 postmaster/bgworker.c:746 +#: postmaster/bgworker.c:367 postmaster/bgworker.c:762 #, c-format msgid "registering background worker \"%s\"" msgstr "registrazione del processo di lavoro in background \"%s\"" -#: postmaster/bgworker.c:375 +#: postmaster/bgworker.c:396 #, c-format msgid "unregistering background worker \"%s\"" msgstr "annullamento registrazione del processo di lavoro in background \"%s\"" -#: postmaster/bgworker.c:484 +#: postmaster/bgworker.c:505 #, c-format msgid "background worker \"%s\": must attach to shared memory in order to request a database connection" msgstr "processo di lavoro in background \"%s\": occorre collegarsi al segmento di memoria per richiedere una connessione al database" -#: postmaster/bgworker.c:493 +#: postmaster/bgworker.c:514 #, c-format msgid "background worker \"%s\": cannot request database access if starting at postmaster start" msgstr "processo di lavoro in background \"%s\": non è possibile richiedere accesso al database se avviato all'avvio di postmaster" -#: postmaster/bgworker.c:507 +#: postmaster/bgworker.c:528 #, c-format msgid "background worker \"%s\": invalid restart interval" msgstr "processo di lavoro in background \"%s\": intervallo di riavvio non valido" -#: postmaster/bgworker.c:552 +#: postmaster/bgworker.c:573 #, c-format msgid "terminating background worker \"%s\" due to administrator command" msgstr "interruzione del processo di lavoro in background \"%s\" a causa di comando amministrativo" -#: postmaster/bgworker.c:753 +#: postmaster/bgworker.c:769 #, c-format msgid "background worker \"%s\": must be registered in shared_preload_libraries" msgstr "processo di lavoro in background \"%s\": deve essere registrato in shared_preload_libraries" -#: postmaster/bgworker.c:765 +#: postmaster/bgworker.c:781 #, c-format msgid "background worker \"%s\": only dynamic background workers can request notification" msgstr "processo di lavoro in background \"%s\": solo i processi dinamici possono richiedere notifiche" -#: postmaster/bgworker.c:780 +#: postmaster/bgworker.c:796 #, c-format msgid "too many background workers" msgstr "troppi processi di lavoro in background" -#: postmaster/bgworker.c:781 +#: postmaster/bgworker.c:797 #, c-format msgid "Up to %d background worker can be registered with the current settings." msgid_plural "Up to %d background workers can be registered with the current settings." msgstr[0] "Le impostazioni correnti consentono la registrazione di un massimo di %d processi di lavoro in background." msgstr[1] "Le impostazioni correnti consentono la registrazione di un massimo di %d processi di lavoro in background." -#: postmaster/bgworker.c:785 +#: postmaster/bgworker.c:801 #, c-format msgid "Consider increasing the configuration parameter \"max_worker_processes\"." msgstr "Considera di incrementare il parametro di configurazione \"max_worker_processes\"." -#: postmaster/checkpointer.c:465 +#: postmaster/checkpointer.c:463 #, c-format msgid "checkpoints are occurring too frequently (%d second apart)" msgid_plural "checkpoints are occurring too frequently (%d seconds apart)" msgstr[0] "i checkpoint stanno avvenendo troppo frequentemente (a distanza di %d secondo)" msgstr[1] "i checkpoint stanno avvenendo troppo frequentemente (a distanza di %d secondi)" -#: postmaster/checkpointer.c:469 +#: postmaster/checkpointer.c:467 #, c-format msgid "Consider increasing the configuration parameter \"max_wal_size\"." msgstr "Considera di incrementare il parametro di configurazione \"max_wal_size\"." -#: postmaster/checkpointer.c:616 +#: postmaster/checkpointer.c:614 #, c-format msgid "transaction log switch forced (archive_timeout=%d)" msgstr "passaggio al prossimo log delle transazioni forzato (archive_timeout=%d)" -#: postmaster/checkpointer.c:1074 +#: postmaster/checkpointer.c:1072 #, c-format msgid "checkpoint request failed" msgstr "richiesta di checkpoint fallita" -#: postmaster/checkpointer.c:1075 +#: postmaster/checkpointer.c:1073 #, c-format msgid "Consult recent messages in the server log for details." msgstr "Consulta i messaggi recenti nel log del server per i dettagli." -#: postmaster/checkpointer.c:1270 +#: postmaster/checkpointer.c:1268 #, c-format msgid "compacted fsync request queue from %d entries to %d entries" msgstr "coda di richieste di fsync ridotta da %d a %d elementi" @@ -14062,7 +14080,7 @@ msgstr "Il comando di archiviazione fallito era: %s" msgid "archive command was terminated by exception 0x%X" msgstr "comando di archiviazione terminato da eccezione 0x%X" -#: postmaster/pgarch.c:598 postmaster/postmaster.c:3478 +#: postmaster/pgarch.c:598 postmaster/postmaster.c:3505 #, c-format msgid "See C include file \"ntstatus.h\" for a description of the hexadecimal value." msgstr "Consulta il file include C \"ntstatus.h\" per una spiegazione del valore esadecimale." @@ -14092,293 +14110,293 @@ msgstr "file di log delle transazioni archiviato \"%s\"" msgid "could not open archive status directory \"%s\": %m" msgstr "apertura della directory dello stato dell'archivio \"%s\" fallita: %m" -#: postmaster/pgstat.c:356 +#: postmaster/pgstat.c:355 #, c-format msgid "could not resolve \"localhost\": %s" msgstr "risoluzione di \"localhost\" fallita: %s" -#: postmaster/pgstat.c:379 +#: postmaster/pgstat.c:378 #, c-format msgid "trying another address for the statistics collector" msgstr "si sta tentando di usare un diverso indirizzo per il raccoglitore di statistiche" -#: postmaster/pgstat.c:388 +#: postmaster/pgstat.c:387 #, c-format msgid "could not create socket for statistics collector: %m" msgstr "creazione del socket per il raccoglitore di statistiche fallita: %m" -#: postmaster/pgstat.c:400 +#: postmaster/pgstat.c:399 #, c-format msgid "could not bind socket for statistics collector: %m" msgstr "bind del socket per il raccoglitore di statistiche fallito: %m" -#: postmaster/pgstat.c:411 +#: postmaster/pgstat.c:410 #, c-format msgid "could not get address of socket for statistics collector: %m" msgstr "non è stato possibile ottenere l'indirizzo del socket per il raccoglitore di statistiche: %m" -#: postmaster/pgstat.c:427 +#: postmaster/pgstat.c:426 #, c-format msgid "could not connect socket for statistics collector: %m" msgstr "connessione al socket per il raccoglitore statistiche fallita: %m" -#: postmaster/pgstat.c:448 +#: postmaster/pgstat.c:447 #, c-format msgid "could not send test message on socket for statistics collector: %m" msgstr "invio del messaggio di prova al socket per il raccoglitore di statistiche fallito: %m" -#: postmaster/pgstat.c:474 +#: postmaster/pgstat.c:473 #, c-format msgid "select() failed in statistics collector: %m" msgstr "select() fallita nel raccoglitore di statistiche: %m" -#: postmaster/pgstat.c:489 +#: postmaster/pgstat.c:488 #, c-format msgid "test message did not get through on socket for statistics collector" msgstr "il messaggio di prova non ha raggiunto il socket per il raccoglitore di statistiche" -#: postmaster/pgstat.c:504 +#: postmaster/pgstat.c:503 #, c-format msgid "could not receive test message on socket for statistics collector: %m" msgstr "ricezione del messaggio di prova sul socket per il raccoglitore di statistiche fallito: %m" -#: postmaster/pgstat.c:514 +#: postmaster/pgstat.c:513 #, c-format msgid "incorrect test message transmission on socket for statistics collector" msgstr "trasmissione errata del messaggio di prova per il raccoglitore di statistiche" -#: postmaster/pgstat.c:537 +#: postmaster/pgstat.c:536 #, c-format msgid "could not set statistics collector socket to nonblocking mode: %m" msgstr "impostazione del socket per il raccoglitore di statistiche in modalità non bloccante fallita: %m" -#: postmaster/pgstat.c:547 +#: postmaster/pgstat.c:546 #, c-format msgid "disabling statistics collector for lack of working socket" msgstr "raccoglitore di statistiche disabilitato per mancanza di un socket funzionante" -#: postmaster/pgstat.c:694 +#: postmaster/pgstat.c:693 #, c-format msgid "could not fork statistics collector: %m" msgstr "fork del raccoglitore di statistiche fallito: %m" -#: postmaster/pgstat.c:1262 +#: postmaster/pgstat.c:1261 #, c-format msgid "unrecognized reset target: \"%s\"" msgstr "destinazione di reset sconosciuta: \"%s\"" -#: postmaster/pgstat.c:1263 +#: postmaster/pgstat.c:1262 #, c-format msgid "Target must be \"archiver\" or \"bgwriter\"." msgstr "La destinazione deve essere \"archiver\" o \"bgwriter\"." -#: postmaster/pgstat.c:3578 +#: postmaster/pgstat.c:3587 #, c-format msgid "could not read statistics message: %m" msgstr "lettura del messaggio delle statistiche fallito: %m" -#: postmaster/pgstat.c:3909 postmaster/pgstat.c:4086 +#: postmaster/pgstat.c:3918 postmaster/pgstat.c:4075 #, c-format msgid "could not open temporary statistics file \"%s\": %m" msgstr "apertura del file temporaneo delle statistiche \"%s\" fallita: %m" -#: postmaster/pgstat.c:3977 postmaster/pgstat.c:4131 +#: postmaster/pgstat.c:3985 postmaster/pgstat.c:4120 #, c-format msgid "could not write temporary statistics file \"%s\": %m" msgstr "scrittura del file temporaneo delle statistiche \"%s\" fallita: %m" -#: postmaster/pgstat.c:3986 postmaster/pgstat.c:4140 +#: postmaster/pgstat.c:3994 postmaster/pgstat.c:4129 #, c-format msgid "could not close temporary statistics file \"%s\": %m" msgstr "chiusura del file temporaneo delle statistiche \"%s\" fallita: %m" -#: postmaster/pgstat.c:3994 postmaster/pgstat.c:4148 +#: postmaster/pgstat.c:4002 postmaster/pgstat.c:4137 #, c-format msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m" msgstr "non è stato possibile rinominare il file temporaneo delle statistiche \"%s\" in \"%s\": %m" -#: postmaster/pgstat.c:4230 postmaster/pgstat.c:4413 postmaster/pgstat.c:4568 +#: postmaster/pgstat.c:4226 postmaster/pgstat.c:4411 postmaster/pgstat.c:4564 #, c-format msgid "could not open statistics file \"%s\": %m" msgstr "apertura del file delle statistiche \"%s\" fallita: %m" -#: postmaster/pgstat.c:4242 postmaster/pgstat.c:4252 postmaster/pgstat.c:4262 -#: postmaster/pgstat.c:4283 postmaster/pgstat.c:4298 postmaster/pgstat.c:4354 -#: postmaster/pgstat.c:4425 postmaster/pgstat.c:4445 postmaster/pgstat.c:4463 -#: postmaster/pgstat.c:4479 postmaster/pgstat.c:4497 postmaster/pgstat.c:4513 -#: postmaster/pgstat.c:4580 postmaster/pgstat.c:4592 postmaster/pgstat.c:4604 -#: postmaster/pgstat.c:4629 postmaster/pgstat.c:4651 +#: postmaster/pgstat.c:4238 postmaster/pgstat.c:4248 postmaster/pgstat.c:4258 +#: postmaster/pgstat.c:4279 postmaster/pgstat.c:4294 postmaster/pgstat.c:4348 +#: postmaster/pgstat.c:4423 postmaster/pgstat.c:4443 postmaster/pgstat.c:4461 +#: postmaster/pgstat.c:4477 postmaster/pgstat.c:4495 postmaster/pgstat.c:4511 +#: postmaster/pgstat.c:4576 postmaster/pgstat.c:4588 postmaster/pgstat.c:4600 +#: postmaster/pgstat.c:4625 postmaster/pgstat.c:4647 #, c-format msgid "corrupted statistics file \"%s\"" msgstr "file delle statistiche corrotto \"%s\"" -#: postmaster/pgstat.c:4768 +#: postmaster/pgstat.c:4776 #, c-format msgid "using stale statistics instead of current ones because stats collector is not responding" msgstr "verranno utilizzate statistiche vecchie invece di quelle correnti perché il processo di raccolta statistiche non risponde" -#: postmaster/pgstat.c:5086 +#: postmaster/pgstat.c:5103 #, c-format msgid "database hash table corrupted during cleanup --- abort" msgstr "tabella hash del database corrotta durante la pulizia --- interruzione" -#: postmaster/postmaster.c:676 +#: postmaster/postmaster.c:698 #, c-format msgid "%s: invalid argument for option -f: \"%s\"\n" msgstr "%s: argomento non valido per l'opzione -f: \"%s\"\n" -#: postmaster/postmaster.c:762 +#: postmaster/postmaster.c:784 #, c-format msgid "%s: invalid argument for option -t: \"%s\"\n" msgstr "%s: argomento non valido per l'opzione -t: \"%s\"\n" -#: postmaster/postmaster.c:813 +#: postmaster/postmaster.c:835 #, c-format msgid "%s: invalid argument: \"%s\"\n" msgstr "%s: argomento non valido: \"%s\"\n" -#: postmaster/postmaster.c:848 +#: postmaster/postmaster.c:874 #, c-format msgid "%s: superuser_reserved_connections must be less than max_connections\n" msgstr "%s: superuser_reserved_connections dev'essere minore di max_connections\n" -#: postmaster/postmaster.c:853 +#: postmaster/postmaster.c:879 #, c-format msgid "%s: max_wal_senders must be less than max_connections\n" msgstr "%s: max_wal_senders dev'essere minore di max_connections\n" -#: postmaster/postmaster.c:858 +#: postmaster/postmaster.c:884 #, c-format msgid "WAL archival cannot be enabled when wal_level is \"minimal\"" msgstr "l'archiviazione dei WAL non può essere attivata quando wal_level è \"minimal\"" -#: postmaster/postmaster.c:861 +#: postmaster/postmaster.c:887 #, c-format msgid "WAL streaming (max_wal_senders > 0) requires wal_level \"replica\" or \"logical\"" msgstr "lo streaming WAL (max_wal_senders > 0) richiede wal_level \"replica\" oppure \"logical\"" -#: postmaster/postmaster.c:869 +#: postmaster/postmaster.c:895 #, c-format msgid "%s: invalid datetoken tables, please fix\n" msgstr "%s: datetoken tables non valido, per favore correggilo\n" -#: postmaster/postmaster.c:961 postmaster/postmaster.c:1059 +#: postmaster/postmaster.c:987 postmaster/postmaster.c:1085 #: utils/init/miscinit.c:1429 #, c-format msgid "invalid list syntax in parameter \"%s\"" msgstr "sintassi di lista non valida nel parametro \"%s\"" -#: postmaster/postmaster.c:992 +#: postmaster/postmaster.c:1018 #, c-format msgid "could not create listen socket for \"%s\"" msgstr "creazione del socket di ascolto per \"%s\" fallita" -#: postmaster/postmaster.c:998 +#: postmaster/postmaster.c:1024 #, c-format msgid "could not create any TCP/IP sockets" msgstr "non è stato possibile creare alcun socket TCP/IP" -#: postmaster/postmaster.c:1081 +#: postmaster/postmaster.c:1107 #, c-format msgid "could not create Unix-domain socket in directory \"%s\"" msgstr "creazione del socket di dominio Unix fallita nella directory \"%s\"" -#: postmaster/postmaster.c:1087 +#: postmaster/postmaster.c:1113 #, c-format msgid "could not create any Unix-domain sockets" msgstr "creazione del socket di dominio Unix fallita" -#: postmaster/postmaster.c:1099 +#: postmaster/postmaster.c:1125 #, c-format msgid "no socket created for listening" msgstr "nessun socket per l'ascolto è stato creato" -#: postmaster/postmaster.c:1139 +#: postmaster/postmaster.c:1165 #, c-format msgid "could not create I/O completion port for child queue" msgstr "creazione della porta di completamento I/O per la coda dei figli fallita" -#: postmaster/postmaster.c:1168 +#: postmaster/postmaster.c:1194 #, c-format msgid "%s: could not change permissions of external PID file \"%s\": %s\n" msgstr "%s: modifica dei permessi del file PID esterno \"%s\" fallita: %s\n" -#: postmaster/postmaster.c:1172 +#: postmaster/postmaster.c:1198 #, c-format msgid "%s: could not write external PID file \"%s\": %s\n" msgstr "%s: scrittura del file PID esterno \"%s\" fallita: %s\n" -#: postmaster/postmaster.c:1223 +#: postmaster/postmaster.c:1248 #, c-format msgid "ending log output to stderr" msgstr "terminazione dell'output del log su stderr" -#: postmaster/postmaster.c:1224 +#: postmaster/postmaster.c:1249 #, c-format msgid "Future log output will go to log destination \"%s\"." msgstr "L'output dei prossimi log andrà su \"%s\"." -#: postmaster/postmaster.c:1250 utils/init/postinit.c:214 +#: postmaster/postmaster.c:1275 utils/init/postinit.c:213 #, c-format msgid "could not load pg_hba.conf" msgstr "caricamento di pg_hba.conf fallito" -#: postmaster/postmaster.c:1276 +#: postmaster/postmaster.c:1301 #, c-format msgid "postmaster became multithreaded during startup" msgstr "il postmaster è diventato multithread durante l'avvio" -#: postmaster/postmaster.c:1277 +#: postmaster/postmaster.c:1302 #, c-format msgid "Set the LC_ALL environment variable to a valid locale." msgstr "Imposta la variabile d'ambiente LC_ALL non corrisponde ad un locale valido." -#: postmaster/postmaster.c:1374 +#: postmaster/postmaster.c:1399 #, c-format msgid "%s: could not locate matching postgres executable" msgstr "%s: eseguibile postgres corrispondente non trovato" -#: postmaster/postmaster.c:1397 utils/misc/tzparser.c:341 +#: postmaster/postmaster.c:1422 utils/misc/tzparser.c:341 #, c-format msgid "This may indicate an incomplete PostgreSQL installation, or that the file \"%s\" has been moved away from its proper location." msgstr "Questo potrebbe indicare una installazione di PostgreSQL incompleta, o che il file \"%s\" sia stato spostato dalla sua posizione corretta." -#: postmaster/postmaster.c:1425 +#: postmaster/postmaster.c:1450 #, c-format msgid "data directory \"%s\" does not exist" msgstr "la directory dei dati \"%s\" non esiste" -#: postmaster/postmaster.c:1430 +#: postmaster/postmaster.c:1455 #, c-format msgid "could not read permissions of directory \"%s\": %m" msgstr "lettura dei permessi della directory \"%s\" fallita: %m" -#: postmaster/postmaster.c:1438 +#: postmaster/postmaster.c:1463 #, c-format msgid "specified data directory \"%s\" is not a directory" msgstr "la directory dei dati specificata \"%s\" non è una directory" -#: postmaster/postmaster.c:1454 +#: postmaster/postmaster.c:1479 #, c-format msgid "data directory \"%s\" has wrong ownership" msgstr "la directory dei dati \"%s\" ha il proprietario errato" -#: postmaster/postmaster.c:1456 +#: postmaster/postmaster.c:1481 #, c-format msgid "The server must be started by the user that owns the data directory." msgstr "Il server deve essere avviato dall'utente che possiede la directory dei dati." -#: postmaster/postmaster.c:1476 +#: postmaster/postmaster.c:1501 #, c-format msgid "data directory \"%s\" has group or world access" msgstr "la directory dei dati \"%s\" è accessibile dal gruppo o da tutti" -#: postmaster/postmaster.c:1478 +#: postmaster/postmaster.c:1503 #, c-format msgid "Permissions should be u=rwx (0700)." msgstr "I permessi dovrebbero essere u=rwx (0700)." -#: postmaster/postmaster.c:1489 +#: postmaster/postmaster.c:1514 #, c-format msgid "" "%s: could not find the database system\n" @@ -14389,365 +14407,365 @@ msgstr "" "Sarebbe dovuto essere nella directory \"%s\",\n" "ma l'apertura del file \"%s\" è fallita: %s\n" -#: postmaster/postmaster.c:1666 +#: postmaster/postmaster.c:1691 #, c-format msgid "select() failed in postmaster: %m" msgstr "select() fallita in postmaster: %m" -#: postmaster/postmaster.c:1816 +#: postmaster/postmaster.c:1842 #, c-format msgid "performing immediate shutdown because data directory lock file is invalid" msgstr "arresto immediato perché il file di lock della directory dati non è valido" -#: postmaster/postmaster.c:1894 postmaster/postmaster.c:1925 +#: postmaster/postmaster.c:1920 postmaster/postmaster.c:1951 #, c-format msgid "incomplete startup packet" msgstr "pacchetto di avvio incompleto" -#: postmaster/postmaster.c:1906 +#: postmaster/postmaster.c:1932 #, c-format msgid "invalid length of startup packet" msgstr "dimensione del pacchetto di avvio non valida" -#: postmaster/postmaster.c:1964 +#: postmaster/postmaster.c:1990 #, c-format msgid "failed to send SSL negotiation response: %m" msgstr "invio della risposta di negoziazione SSL fallito: %m" -#: postmaster/postmaster.c:1993 +#: postmaster/postmaster.c:2019 #, c-format msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u" msgstr "protocollo frontend non supportato %u.%u: il server supporta da %u.0 a %u.%u" -#: postmaster/postmaster.c:2056 utils/misc/guc.c:5657 utils/misc/guc.c:5750 -#: utils/misc/guc.c:7047 utils/misc/guc.c:9783 utils/misc/guc.c:9817 +#: postmaster/postmaster.c:2082 utils/misc/guc.c:5660 utils/misc/guc.c:5753 +#: utils/misc/guc.c:7051 utils/misc/guc.c:9805 utils/misc/guc.c:9839 #, c-format msgid "invalid value for parameter \"%s\": \"%s\"" msgstr "valore non valido per il parametro \"%s\": \"%s\"" -#: postmaster/postmaster.c:2059 +#: postmaster/postmaster.c:2085 #, c-format msgid "Valid values are: \"false\", 0, \"true\", 1, \"database\"." msgstr "I valori validi sono: \"false\", 0, \"true\", 1, \"database\"." -#: postmaster/postmaster.c:2079 +#: postmaster/postmaster.c:2105 #, c-format msgid "invalid startup packet layout: expected terminator as last byte" msgstr "formato del pacchetto di avvio non valido: atteso il terminatore all'ultimo byte" -#: postmaster/postmaster.c:2107 +#: postmaster/postmaster.c:2133 #, c-format msgid "no PostgreSQL user name specified in startup packet" msgstr "nessun utente PostgreSQL specificato nel pacchetto di avvio" -#: postmaster/postmaster.c:2166 +#: postmaster/postmaster.c:2192 #, c-format msgid "the database system is starting up" msgstr "il database si sta avviando" -#: postmaster/postmaster.c:2171 +#: postmaster/postmaster.c:2197 #, c-format msgid "the database system is shutting down" msgstr "il database si sta spegnendo" -#: postmaster/postmaster.c:2176 +#: postmaster/postmaster.c:2202 #, c-format msgid "the database system is in recovery mode" msgstr "il database è in modalità di ripristino" -#: postmaster/postmaster.c:2181 storage/ipc/procarray.c:297 +#: postmaster/postmaster.c:2207 storage/ipc/procarray.c:297 #: storage/ipc/sinvaladt.c:298 storage/lmgr/proc.c:340 #, c-format msgid "sorry, too many clients already" msgstr "spiacente, troppi client già connessi" -#: postmaster/postmaster.c:2243 +#: postmaster/postmaster.c:2269 #, c-format msgid "wrong key in cancel request for process %d" msgstr "chiave sbagliata nella richiesta di annullamento per il processo %d" -#: postmaster/postmaster.c:2251 +#: postmaster/postmaster.c:2277 #, c-format msgid "PID %d in cancel request did not match any process" msgstr "il PID %d nella richiesta di annullamento non corrisponde ad alcun processo" -#: postmaster/postmaster.c:2471 +#: postmaster/postmaster.c:2497 #, c-format msgid "received SIGHUP, reloading configuration files" msgstr "SIGHUP ricevuto, sto ricaricando i file di configurazione" -#: postmaster/postmaster.c:2496 +#: postmaster/postmaster.c:2522 #, c-format msgid "pg_hba.conf not reloaded" msgstr "pg_hba.conf non è stato ricaricato" -#: postmaster/postmaster.c:2500 +#: postmaster/postmaster.c:2526 #, c-format msgid "pg_ident.conf not reloaded" msgstr "pg_ident.conf non è stato ricaricato" -#: postmaster/postmaster.c:2541 +#: postmaster/postmaster.c:2567 #, c-format msgid "received smart shutdown request" msgstr "richiesta di arresto smart ricevuta" -#: postmaster/postmaster.c:2596 +#: postmaster/postmaster.c:2622 #, c-format msgid "received fast shutdown request" msgstr "richiesta di arresto fast ricevuta" -#: postmaster/postmaster.c:2625 +#: postmaster/postmaster.c:2652 #, c-format msgid "aborting any active transactions" msgstr "interruzione di tutte le transazioni attive" -#: postmaster/postmaster.c:2659 +#: postmaster/postmaster.c:2686 #, c-format msgid "received immediate shutdown request" msgstr "richiesta di arresto immediate ricevuta" -#: postmaster/postmaster.c:2723 +#: postmaster/postmaster.c:2750 #, c-format msgid "shutdown at recovery target" msgstr "arresto alla destinazione di recupero" -#: postmaster/postmaster.c:2739 postmaster/postmaster.c:2762 +#: postmaster/postmaster.c:2766 postmaster/postmaster.c:2789 msgid "startup process" msgstr "avvio del processo" -#: postmaster/postmaster.c:2742 +#: postmaster/postmaster.c:2769 #, c-format msgid "aborting startup due to startup process failure" msgstr "avvio interrotto a causa del fallimento del processo di avvio" -#: postmaster/postmaster.c:2803 +#: postmaster/postmaster.c:2830 #, c-format msgid "database system is ready to accept connections" msgstr "il database è pronto ad accettare connessioni" -#: postmaster/postmaster.c:2822 +#: postmaster/postmaster.c:2849 msgid "background writer process" msgstr "processo di scrittura in background" -#: postmaster/postmaster.c:2876 +#: postmaster/postmaster.c:2903 msgid "checkpointer process" msgstr "processo di creazione checkpoint" -#: postmaster/postmaster.c:2892 +#: postmaster/postmaster.c:2919 msgid "WAL writer process" msgstr "processo di scrittura WAL" -#: postmaster/postmaster.c:2906 +#: postmaster/postmaster.c:2933 msgid "WAL receiver process" msgstr "processo di ricezione WAL" -#: postmaster/postmaster.c:2921 +#: postmaster/postmaster.c:2948 msgid "autovacuum launcher process" msgstr "processo del lanciatore di autovacuum" -#: postmaster/postmaster.c:2936 +#: postmaster/postmaster.c:2963 msgid "archiver process" msgstr "processo di archiviazione" -#: postmaster/postmaster.c:2952 +#: postmaster/postmaster.c:2979 msgid "statistics collector process" msgstr "processo del raccoglitore di statistiche" -#: postmaster/postmaster.c:2966 +#: postmaster/postmaster.c:2993 msgid "system logger process" msgstr "processo del logger di sistema" -#: postmaster/postmaster.c:3028 +#: postmaster/postmaster.c:3055 msgid "worker process" msgstr "processo di lavoro" -#: postmaster/postmaster.c:3111 postmaster/postmaster.c:3131 -#: postmaster/postmaster.c:3138 postmaster/postmaster.c:3156 +#: postmaster/postmaster.c:3138 postmaster/postmaster.c:3158 +#: postmaster/postmaster.c:3165 postmaster/postmaster.c:3183 msgid "server process" msgstr "processo del server" -#: postmaster/postmaster.c:3210 +#: postmaster/postmaster.c:3237 #, c-format msgid "terminating any other active server processes" msgstr "interruzione di tutti gli altri processi attivi del server" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3466 +#: postmaster/postmaster.c:3493 #, c-format msgid "%s (PID %d) exited with exit code %d" msgstr "%s (PID %d) è uscito con codice di uscita %d" -#: postmaster/postmaster.c:3468 postmaster/postmaster.c:3479 -#: postmaster/postmaster.c:3490 postmaster/postmaster.c:3499 -#: postmaster/postmaster.c:3509 +#: postmaster/postmaster.c:3495 postmaster/postmaster.c:3506 +#: postmaster/postmaster.c:3517 postmaster/postmaster.c:3526 +#: postmaster/postmaster.c:3536 #, c-format msgid "Failed process was running: %s" msgstr "Il processo fallito stava eseguendo: %s" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3476 +#: postmaster/postmaster.c:3503 #, c-format msgid "%s (PID %d) was terminated by exception 0x%X" msgstr "%s (PID %d) è stato terminato dall'eccezione 0x%X" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3486 +#: postmaster/postmaster.c:3513 #, c-format msgid "%s (PID %d) was terminated by signal %d: %s" msgstr "%s (PID %d) è stato terminato dal segnale %d: %s" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3497 +#: postmaster/postmaster.c:3524 #, c-format msgid "%s (PID %d) was terminated by signal %d" msgstr "%s (PID %d) è stato terminato dal segnale %d" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3507 +#: postmaster/postmaster.c:3534 #, c-format msgid "%s (PID %d) exited with unrecognized status %d" msgstr "%s (PID %d) uscito con stato sconosciuto %d" -#: postmaster/postmaster.c:3694 +#: postmaster/postmaster.c:3721 #, c-format msgid "abnormal database system shutdown" msgstr "spegnimento anormale del database" -#: postmaster/postmaster.c:3734 +#: postmaster/postmaster.c:3761 #, c-format msgid "all server processes terminated; reinitializing" msgstr "tutti i processi server sono terminati; re-inizializzazione" -#: postmaster/postmaster.c:3946 +#: postmaster/postmaster.c:3973 #, c-format msgid "could not fork new process for connection: %m" msgstr "fork del nuovo processo per la connessione fallito: %m" -#: postmaster/postmaster.c:3988 +#: postmaster/postmaster.c:4015 msgid "could not fork new process for connection: " msgstr "fork del nuovo processo per la connessione fallito: " -#: postmaster/postmaster.c:4102 +#: postmaster/postmaster.c:4129 #, c-format msgid "connection received: host=%s port=%s" msgstr "connessione ricevuta: host=%s porta=%s" -#: postmaster/postmaster.c:4107 +#: postmaster/postmaster.c:4134 #, c-format msgid "connection received: host=%s" msgstr "connessione ricevuta: host=%s" -#: postmaster/postmaster.c:4390 +#: postmaster/postmaster.c:4417 #, c-format msgid "could not execute server process \"%s\": %m" msgstr "esecuzione del processo del server \"%s\" fallita: %m" -#: postmaster/postmaster.c:4955 +#: postmaster/postmaster.c:4961 #, c-format msgid "database system is ready to accept read only connections" msgstr "il database è pronto ad accettare connessioni in sola lettura" -#: postmaster/postmaster.c:5242 +#: postmaster/postmaster.c:5252 #, c-format msgid "could not fork startup process: %m" msgstr "fork del processo di avvio fallito: %m" -#: postmaster/postmaster.c:5246 +#: postmaster/postmaster.c:5256 #, c-format msgid "could not fork background writer process: %m" msgstr "fork del processo di scrittura in background fallito: %m" -#: postmaster/postmaster.c:5250 +#: postmaster/postmaster.c:5260 #, c-format msgid "could not fork checkpointer process: %m" msgstr "fork del processo di creazione dei checkpoint fallito: %m" -#: postmaster/postmaster.c:5254 +#: postmaster/postmaster.c:5264 #, c-format msgid "could not fork WAL writer process: %m" msgstr "fork del processo di scrittura dei WAL fallito: %m" -#: postmaster/postmaster.c:5258 +#: postmaster/postmaster.c:5268 #, c-format msgid "could not fork WAL receiver process: %m" msgstr "fork del processo di ricezione dei WAL fallito: %m" -#: postmaster/postmaster.c:5262 +#: postmaster/postmaster.c:5272 #, c-format msgid "could not fork process: %m" msgstr "fork del processo fallito: %m" -#: postmaster/postmaster.c:5424 postmaster/postmaster.c:5447 +#: postmaster/postmaster.c:5434 postmaster/postmaster.c:5457 #, c-format msgid "database connection requirement not indicated during registration" msgstr "requisiti di connessione a database non indicati durante la registrazione" -#: postmaster/postmaster.c:5431 postmaster/postmaster.c:5454 +#: postmaster/postmaster.c:5441 postmaster/postmaster.c:5464 #, c-format msgid "invalid processing mode in background worker" msgstr "modalità di processo non valida nel processo di lavoro in background" -#: postmaster/postmaster.c:5506 +#: postmaster/postmaster.c:5536 #, c-format msgid "starting background worker process \"%s\"" msgstr "avvio del processo di lavoro in background \"%s\"" -#: postmaster/postmaster.c:5517 +#: postmaster/postmaster.c:5548 #, c-format msgid "could not fork worker process: %m" msgstr "fork del processo di lavoro in background fallito: %m" -#: postmaster/postmaster.c:5895 +#: postmaster/postmaster.c:5965 #, c-format msgid "could not duplicate socket %d for use in backend: error code %d" msgstr "duplicazione del socket %d da usare nel backend fallita: codice errore %d" -#: postmaster/postmaster.c:5927 +#: postmaster/postmaster.c:5997 #, c-format msgid "could not create inherited socket: error code %d\n" msgstr "creazione del socket ereditato fallita: codice errore %d\n" -#: postmaster/postmaster.c:5956 +#: postmaster/postmaster.c:6026 #, c-format msgid "could not open backend variables file \"%s\": %s\n" msgstr "apertura del file delle variabili del backend \"%s\" fallita: %s\n" -#: postmaster/postmaster.c:5963 +#: postmaster/postmaster.c:6033 #, c-format msgid "could not read from backend variables file \"%s\": %s\n" msgstr "lettura dal file delle variabili del backend \"%s\" fallita: %s\n" -#: postmaster/postmaster.c:5972 +#: postmaster/postmaster.c:6042 #, c-format msgid "could not remove file \"%s\": %s\n" msgstr "rimozione del file \"%s\" fallita: %s\n" -#: postmaster/postmaster.c:5989 +#: postmaster/postmaster.c:6059 #, c-format msgid "could not map view of backend variables: error code %lu\n" msgstr "non è stato possibile mappare la vista delle variabili del backend: codice errore %lu\n" -#: postmaster/postmaster.c:5998 +#: postmaster/postmaster.c:6068 #, c-format msgid "could not unmap view of backend variables: error code %lu\n" msgstr "non è stato possibile rimuovere la mappa della vista delle variabili del backend: codice errore %lu\n" -#: postmaster/postmaster.c:6005 +#: postmaster/postmaster.c:6075 #, c-format msgid "could not close handle to backend parameter variables: error code %lu\n" msgstr "chiusura dell'handle dei parametri variabili del backend fallita: codice errore %lu\n" -#: postmaster/postmaster.c:6166 +#: postmaster/postmaster.c:6236 #, c-format msgid "could not read exit code for process\n" msgstr "lettura del codice di uscita del processo fallita\n" -#: postmaster/postmaster.c:6171 +#: postmaster/postmaster.c:6241 #, c-format msgid "could not post child completion status\n" msgstr "invio dello stato di completamento del figlio fallito\n" @@ -14812,150 +14830,154 @@ msgstr "rotazione automatica disabilitata (usa SIGHUP per abilitarla di nuovo)" msgid "could not determine which collation to use for regular expression" msgstr "non è stato possibile determinare quale ordinamento usare per le espressioni regolari" -#: replication/basebackup.c:230 +#: replication/basebackup.c:232 #, c-format msgid "could not stat control file \"%s\": %m" msgstr "non è stato possibile ottenere informazioni sul file di controllo \"%s\": %m" -#: replication/basebackup.c:339 +#: replication/basebackup.c:341 #, c-format msgid "could not find any WAL files" msgstr "nessun file WAL trovato" -#: replication/basebackup.c:352 replication/basebackup.c:366 -#: replication/basebackup.c:375 +#: replication/basebackup.c:354 replication/basebackup.c:368 +#: replication/basebackup.c:377 #, c-format msgid "could not find WAL file \"%s\"" msgstr "file WAL \"%s\" non trovato" -#: replication/basebackup.c:414 replication/basebackup.c:440 +#: replication/basebackup.c:416 replication/basebackup.c:442 #, c-format msgid "unexpected WAL file size \"%s\"" msgstr "dimensione inaspettata del file WAL \"%s\"" -#: replication/basebackup.c:426 replication/basebackup.c:1172 +#: replication/basebackup.c:428 replication/basebackup.c:1160 #, c-format msgid "base backup could not send data, aborting backup" msgstr "invio dati da parte del backup di base fallito, backup interrotto" -#: replication/basebackup.c:528 replication/basebackup.c:537 -#: replication/basebackup.c:546 replication/basebackup.c:555 -#: replication/basebackup.c:564 replication/basebackup.c:575 -#: replication/basebackup.c:592 +#: replication/basebackup.c:530 replication/basebackup.c:539 +#: replication/basebackup.c:548 replication/basebackup.c:557 +#: replication/basebackup.c:566 replication/basebackup.c:577 +#: replication/basebackup.c:594 #, c-format msgid "duplicate option \"%s\"" msgstr "opzione duplicata \"%s\"" -#: replication/basebackup.c:581 utils/misc/guc.c:5667 +#: replication/basebackup.c:583 utils/misc/guc.c:5670 #, c-format msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)" msgstr "%d non è compreso nell'intervallo di validità del il parametro \"%s\" (%d .. %d)" -#: replication/basebackup.c:855 replication/basebackup.c:957 +#: replication/basebackup.c:857 replication/basebackup.c:959 #, c-format msgid "could not stat file or directory \"%s\": %m" msgstr "non è stato possibile ottenere informazioni sul file o directory \"%s\": %m" -#: replication/basebackup.c:1124 +#: replication/basebackup.c:1112 #, c-format msgid "skipping special file \"%s\"" msgstr "file speciale \"%s\" saltato" -#: replication/basebackup.c:1235 +#: replication/basebackup.c:1223 #, c-format msgid "file name too long for tar format: \"%s\"" msgstr "nome del file troppo lungo per il formato tar: \"%s\"" -#: replication/basebackup.c:1240 +#: replication/basebackup.c:1228 #, c-format msgid "symbolic link target too long for tar format: file name \"%s\", target \"%s\"" msgstr "destinazione del link simbolico troppo lunga per il formato tar: nome del file \"%s\", destinazione \"%s\"" -#: replication/libpqwalreceiver/libpqwalreceiver.c:116 +#: replication/libpqwalreceiver/libpqwalreceiver.c:119 #, c-format msgid "could not connect to the primary server: %s" msgstr "connessione al server primario fallita: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:140 +#: replication/libpqwalreceiver/libpqwalreceiver.c:142 +#, c-format +msgid "could not parse connection string: %s" +msgstr "interpretazione della stringa di connessione fallita: %s" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:192 #, c-format msgid "could not receive database system identifier and timeline ID from the primary server: %s" msgstr "ricezione fallita dell'identificativo del database e l'ID della timeline dal server primario: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:151 -#: replication/libpqwalreceiver/libpqwalreceiver.c:305 +#: replication/libpqwalreceiver/libpqwalreceiver.c:203 +#: replication/libpqwalreceiver/libpqwalreceiver.c:357 #, c-format msgid "invalid response from primary server" msgstr "risposta non valida dal server primario" -#: replication/libpqwalreceiver/libpqwalreceiver.c:152 +#: replication/libpqwalreceiver/libpqwalreceiver.c:204 #, c-format msgid "Could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields." msgstr "Identificazione del sistema non riuscita: ricevute %d righe and %d campi, attese %d righe e %d o più campi." -#: replication/libpqwalreceiver/libpqwalreceiver.c:168 +#: replication/libpqwalreceiver/libpqwalreceiver.c:220 #, c-format msgid "database system identifier differs between the primary and standby" msgstr "l'identificativo del database è diverso tra il primario e lo standby" -#: replication/libpqwalreceiver/libpqwalreceiver.c:169 +#: replication/libpqwalreceiver/libpqwalreceiver.c:221 #, c-format msgid "The primary's identifier is %s, the standby's identifier is %s." msgstr "L'identificativo del primario è %s, quello dello standby è %s." -#: replication/libpqwalreceiver/libpqwalreceiver.c:211 +#: replication/libpqwalreceiver/libpqwalreceiver.c:263 #, c-format msgid "could not start WAL streaming: %s" msgstr "avvio dello streaming dei WAL fallito: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:229 +#: replication/libpqwalreceiver/libpqwalreceiver.c:281 #, c-format msgid "could not send end-of-streaming message to primary: %s" msgstr "invio del messaggio di fine stream al primario fallito: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:251 +#: replication/libpqwalreceiver/libpqwalreceiver.c:303 #, c-format msgid "unexpected result set after end-of-streaming" msgstr "risultato imprevisto dopo la fine stream" -#: replication/libpqwalreceiver/libpqwalreceiver.c:263 +#: replication/libpqwalreceiver/libpqwalreceiver.c:315 #, c-format msgid "error reading result of streaming command: %s" msgstr "errore nella lettura del risultato del comando di streaming: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:271 +#: replication/libpqwalreceiver/libpqwalreceiver.c:323 #, c-format msgid "unexpected result after CommandComplete: %s" msgstr "risultato imprevisto dopo CommandComplete: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:294 +#: replication/libpqwalreceiver/libpqwalreceiver.c:346 #, c-format msgid "could not receive timeline history file from the primary server: %s" msgstr "errore nella ricezione del file di storia della timeline dal server primario: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:306 +#: replication/libpqwalreceiver/libpqwalreceiver.c:358 #, c-format msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields." msgstr "Attesa una tupla con 2 campi, ricevute %d tuple con %d campi." -#: replication/libpqwalreceiver/libpqwalreceiver.c:334 +#: replication/libpqwalreceiver/libpqwalreceiver.c:386 #, c-format msgid "invalid socket: %s" msgstr "socket non valido: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:374 -#: storage/ipc/latch.c:1271 +#: replication/libpqwalreceiver/libpqwalreceiver.c:426 storage/ipc/latch.c:1343 #, c-format msgid "select() failed: %m" msgstr "select() fallita: %m" -#: replication/libpqwalreceiver/libpqwalreceiver.c:497 -#: replication/libpqwalreceiver/libpqwalreceiver.c:524 -#: replication/libpqwalreceiver/libpqwalreceiver.c:530 +#: replication/libpqwalreceiver/libpqwalreceiver.c:549 +#: replication/libpqwalreceiver/libpqwalreceiver.c:576 +#: replication/libpqwalreceiver/libpqwalreceiver.c:582 #, c-format msgid "could not receive data from WAL stream: %s" msgstr "ricezione dati dallo stream WAL fallita: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:549 +#: replication/libpqwalreceiver/libpqwalreceiver.c:601 #, c-format msgid "could not send data to WAL stream: %s" msgstr "invio dati allo stream WAL fallito: %s" @@ -14975,37 +14997,37 @@ msgstr "la decodifica logica richiede una connessione al database" msgid "logical decoding cannot be used while in recovery" msgstr "la decodifica logica non può essere usata in modalità di recupero" -#: replication/logical/logical.c:238 replication/logical/logical.c:342 +#: replication/logical/logical.c:239 replication/logical/logical.c:360 #, c-format msgid "cannot use physical replication slot for logical decoding" msgstr "non si possono usare slot di replica fisica per la decodifica logica" -#: replication/logical/logical.c:243 replication/logical/logical.c:347 +#: replication/logical/logical.c:244 replication/logical/logical.c:365 #, c-format msgid "replication slot \"%s\" was not created in this database" msgstr "lo slot di replica \"%s\" non è stato creato in questo database" -#: replication/logical/logical.c:250 +#: replication/logical/logical.c:251 #, c-format msgid "cannot create logical replication slot in transaction that has performed writes" msgstr "non si possono creare slot di replica logica in transazioni che hanno effettuato scritture" -#: replication/logical/logical.c:384 +#: replication/logical/logical.c:402 #, c-format msgid "starting logical decoding for slot \"%s\"" msgstr "avvio della decodifica logica per lo slot \"%s\"" -#: replication/logical/logical.c:386 +#: replication/logical/logical.c:404 #, c-format msgid "streaming transactions committing after %X/%X, reading WAL from %X/%X" msgstr "commit dello streaming delle transazioni dopo %X/%X, lettura del wal a partire da %X/%X" -#: replication/logical/logical.c:521 +#: replication/logical/logical.c:539 #, c-format msgid "slot \"%s\", output plugin \"%s\", in the %s callback, associated LSN %X/%X" msgstr "slot \"%s\", plugin di output \"%s\", nel callback %s, LSN associato %X/%X" -#: replication/logical/logical.c:528 +#: replication/logical/logical.c:546 #, c-format msgid "slot \"%s\", output plugin \"%s\", in the %s callback" msgstr "slot \"%s\", plugin di output \"%s\", nel callback %s" @@ -15041,7 +15063,7 @@ msgstr "l'array non deve contenere NULL" msgid "array must have even number of elements" msgstr "l'array deve avere un numero pari di elementi" -#: replication/logical/logicalfuncs.c:261 +#: replication/logical/logicalfuncs.c:264 #, c-format msgid "logical decoding output plugin \"%s\" produces binary output, but function \"%s\" expects textual data" msgstr "il plugin di output di decodifica logica \"%s\" produce dati binari, ma la funzione \"%s\" si aspetta dati testuali" @@ -15071,142 +15093,145 @@ msgstr "non è stato trovato alcun OID di origine di replica libero" msgid "could not drop replication origin with OID %d, in use by PID %d" msgstr "impossibile eliminare l'origine di replica con OID %d, in uso dal pid %d" -#: replication/logical/origin.c:671 +#: replication/logical/origin.c:674 #, c-format msgid "replication checkpoint has wrong magic %u instead of %u" msgstr "il checkpoint di replica ha numero magico sbagliato %u invece di %u" -#: replication/logical/origin.c:703 +#: replication/logical/origin.c:706 #, c-format msgid "could not read file \"%s\": read %d of %zu" msgstr "lettura del file \"%s\" fallita: letti %d di %zu" -#: replication/logical/origin.c:712 +#: replication/logical/origin.c:715 #, c-format msgid "could not find free replication state, increase max_replication_slots" msgstr "nessuno stato di replica libero trovato, incrementa \"max_replication_slots\"" -#: replication/logical/origin.c:730 +#: replication/logical/origin.c:733 #, c-format msgid "replication slot checkpoint has wrong checksum %u, expected %u" msgstr "il checkpoint dello slot di replica ha il checksum sbagliato %u, atteso %u" -#: replication/logical/origin.c:854 +#: replication/logical/origin.c:857 #, c-format msgid "replication origin with OID %d is already active for PID %d" msgstr "l'origine di replica con OID %d è già attiva per il PID %d" -#: replication/logical/origin.c:865 replication/logical/origin.c:1045 +#: replication/logical/origin.c:868 replication/logical/origin.c:1048 #, c-format msgid "could not find free replication state slot for replication origin with OID %u" msgstr "nessuno slot di stato di replica trovato per l'origine di replica con OID %u" -#: replication/logical/origin.c:867 replication/logical/origin.c:1047 -#: replication/slot.c:1288 +#: replication/logical/origin.c:870 replication/logical/origin.c:1050 +#: replication/slot.c:1316 #, c-format msgid "Increase max_replication_slots and try again." msgstr "Incrementa max_replication_slots e prova di nuovo." -#: replication/logical/origin.c:1004 +#: replication/logical/origin.c:1007 #, c-format msgid "cannot setup replication origin when one is already setup" msgstr "non è possibile impostare l'origine di replica quando una è già impostata" -#: replication/logical/origin.c:1033 +#: replication/logical/origin.c:1036 #, c-format msgid "replication identifier %d is already active for PID %d" msgstr "l'identificativo di replica %d è già attivo per il PID %d" -#: replication/logical/origin.c:1079 replication/logical/origin.c:1274 -#: replication/logical/origin.c:1294 +#: replication/logical/origin.c:1082 replication/logical/origin.c:1277 +#: replication/logical/origin.c:1297 #, c-format msgid "no replication origin is configured" msgstr "nessuna origine di replica configurata" -#: replication/logical/reorderbuffer.c:2309 +#: replication/logical/reorderbuffer.c:2330 #, c-format msgid "could not write to data file for XID %u: %m" msgstr "scrittura nel file di dati per lo XID %u non riuscita: %m" -#: replication/logical/reorderbuffer.c:2405 -#: replication/logical/reorderbuffer.c:2425 +#: replication/logical/reorderbuffer.c:2426 +#: replication/logical/reorderbuffer.c:2446 #, c-format msgid "could not read from reorderbuffer spill file: %m" msgstr "lettura dal file spill reorderbuffer non riuscita: %m" -#: replication/logical/reorderbuffer.c:2409 -#: replication/logical/reorderbuffer.c:2429 +#: replication/logical/reorderbuffer.c:2430 +#: replication/logical/reorderbuffer.c:2450 #, c-format msgid "could not read from reorderbuffer spill file: read %d instead of %u bytes" msgstr "lettura dal file spill reorderbuffer non riuscita: letti %d byte invece di %u" -#: replication/logical/reorderbuffer.c:3084 +#: replication/logical/reorderbuffer.c:3106 #, c-format msgid "could not read from file \"%s\": read %d instead of %d bytes" msgstr "lettura dal file \"%s\" non riuscita: letti %d byte invece di %d" -#: replication/logical/snapbuild.c:600 +#: replication/logical/snapbuild.c:646 #, c-format msgid "exported logical decoding snapshot: \"%s\" with %u transaction ID" msgid_plural "exported logical decoding snapshot: \"%s\" with %u transaction IDs" msgstr[0] "snapshot di decidifica logica esportati: \"%s\" con %u ID di transazione" msgstr[1] "snapshot di decidifica logica esportati: \"%s\" con %u ID di transazione" -#: replication/logical/snapbuild.c:919 replication/logical/snapbuild.c:1284 -#: replication/logical/snapbuild.c:1815 +#: replication/logical/snapbuild.c:1243 replication/logical/snapbuild.c:1333 +#: replication/logical/snapbuild.c:1808 #, c-format msgid "logical decoding found consistent point at %X/%X" msgstr "la decodifica logica ha trovato un punto consistente a %X/%X" -#: replication/logical/snapbuild.c:921 -#, c-format -msgid "Transaction ID %u finished; no more running transactions." -msgstr "ID di transazione %u terminato; non ci sono altre transazioni." - -#: replication/logical/snapbuild.c:1286 +#: replication/logical/snapbuild.c:1245 #, c-format msgid "There are no running transactions." msgstr "Non ci sono transazioni in corso." -#: replication/logical/snapbuild.c:1348 +#: replication/logical/snapbuild.c:1286 #, c-format msgid "logical decoding found initial starting point at %X/%X" msgstr "la decodifica logica ha trovato un punto di avvio iniziale a %X/%X" -#: replication/logical/snapbuild.c:1350 +#: replication/logical/snapbuild.c:1288 replication/logical/snapbuild.c:1311 #, c-format -msgid "%u transaction needs to finish." -msgid_plural "%u transactions need to finish." -msgstr[0] "%u transazione deve terminare." -msgstr[1] "%u transazioni devono terminare." +msgid "Waiting for transactions (approximately %d) older than %u to end." +msgstr "In attesa che alcune transazioni (circa %d) più vecchie di %u finiscano." -#: replication/logical/snapbuild.c:1689 replication/logical/snapbuild.c:1715 -#: replication/logical/snapbuild.c:1729 replication/logical/snapbuild.c:1743 +#: replication/logical/snapbuild.c:1309 +#, c-format +msgid "logical decoding found initial consistent point at %X/%X" +msgstr "la decodifica logica ha trovato il punto iniziale consistente a %X/%X" + +#: replication/logical/snapbuild.c:1335 +#, c-format +msgid "There are no old transactions anymore." +msgstr "Non ci sono più vecchie transazioni." + +#: replication/logical/snapbuild.c:1687 replication/logical/snapbuild.c:1713 +#: replication/logical/snapbuild.c:1728 replication/logical/snapbuild.c:1742 #, c-format msgid "could not read file \"%s\", read %d of %d: %m" msgstr "lettura del file \"%s\" non riuscita, letti %d su %d: %m" -#: replication/logical/snapbuild.c:1695 +#: replication/logical/snapbuild.c:1693 #, c-format msgid "snapbuild state file \"%s\" has wrong magic number: %u instead of %u" msgstr "il file di stato snapbuild \"%s\" ha il numero magico sbagliato: %u invece di %u" -#: replication/logical/snapbuild.c:1700 +#: replication/logical/snapbuild.c:1698 #, c-format msgid "snapbuild state file \"%s\" has unsupported version: %u instead of %u" msgstr "il file di stato snapbuild \"%s\" ha una versione non supportata: %u invece di %u" -#: replication/logical/snapbuild.c:1756 +#: replication/logical/snapbuild.c:1755 #, c-format msgid "checksum mismatch for snapbuild state file \"%s\": is %u, should be %u" msgstr "il checksum del file di stato snapbuild \"%s\" non combacia: è %u, sarebbe dovuto essere %u" -#: replication/logical/snapbuild.c:1817 +#: replication/logical/snapbuild.c:1810 #, c-format msgid "Logical decoding will begin using saved snapshot." msgstr "La decodifica logica inizierà usando uno snapshot salvato." -#: replication/logical/snapbuild.c:1890 +#: replication/logical/snapbuild.c:1881 #, c-format msgid "could not parse file name \"%s\"" msgstr "interpretazione del nome di file \"%s\" fallita" @@ -15246,157 +15271,152 @@ msgstr "tutti gli slot di replica sono in uso" msgid "Free one or increase max_replication_slots." msgstr "Liberane uno o incrementa max_replication_slots." -#: replication/slot.c:351 +#: replication/slot.c:361 #, c-format msgid "replication slot \"%s\" does not exist" msgstr "lo slot di replica \"%s\" non esiste" -#: replication/slot.c:355 +#: replication/slot.c:365 #, c-format msgid "replication slot \"%s\" is active for PID %d" msgstr "lo slot di replica \"%s\" è attivo per il PID %d" -#: replication/slot.c:501 replication/slot.c:912 replication/slot.c:1249 +#: replication/slot.c:527 replication/slot.c:940 replication/slot.c:1277 #, c-format msgid "could not remove directory \"%s\"" msgstr "eliminazione della directory \"%s\" fallita" -#: replication/slot.c:761 +#: replication/slot.c:789 #, c-format msgid "replication slots can only be used if max_replication_slots > 0" msgstr "gli slot di replica possono essere usati solo se max_replication_slots > 0" -#: replication/slot.c:766 +#: replication/slot.c:794 #, c-format msgid "replication slots can only be used if wal_level >= replica" msgstr "gli slot di replica possono essere usati solo se wal_level >= replica" -#: replication/slot.c:1181 replication/slot.c:1219 +#: replication/slot.c:1209 replication/slot.c:1247 #, c-format msgid "could not read file \"%s\", read %d of %u: %m" msgstr "lettura del file \"%s\" fallita, letti %d su %u: %m" -#: replication/slot.c:1190 +#: replication/slot.c:1218 #, c-format msgid "replication slot file \"%s\" has wrong magic number: %u instead of %u" msgstr "il file dello slot di replica \"%s\" ha il numero magico sbagliato: %u invece di %u" -#: replication/slot.c:1197 +#: replication/slot.c:1225 #, c-format msgid "replication slot file \"%s\" has unsupported version %u" msgstr "il file dello slot di replica \"%s\" ha la versione non supportata %u" -#: replication/slot.c:1204 +#: replication/slot.c:1232 #, c-format msgid "replication slot file \"%s\" has corrupted length %u" msgstr "il file dello slot di replica \"%s\" ha la lunghezza corrotta %u" -#: replication/slot.c:1234 +#: replication/slot.c:1262 #, c-format msgid "checksum mismatch for replication slot file \"%s\": is %u, should be %u" msgstr "il checksum del file dello slot di replica \"%s\" non combacia: è %u, sarebbe dovuto essere %u" -#: replication/slot.c:1287 +#: replication/slot.c:1315 #, c-format msgid "too many replication slots active before shutdown" msgstr "troppi slot di replica attivi prima dell'arresto" -#: replication/syncrep.c:228 +#: replication/syncrep.c:221 #, c-format msgid "canceling the wait for synchronous replication and terminating connection due to administrator command" msgstr "annullamento dell'attesa di replica sincrona ed interruzione della connessione su comando dell'amministratore" -#: replication/syncrep.c:229 replication/syncrep.c:246 +#: replication/syncrep.c:222 replication/syncrep.c:239 #, c-format msgid "The transaction has already committed locally, but might not have been replicated to the standby." msgstr "La transazione ha già effettuato il commit localmente, ma potrebbe non essere stata replicata agli standby." -#: replication/syncrep.c:245 +#: replication/syncrep.c:238 #, c-format msgid "canceling wait for synchronous replication due to user request" msgstr "annullamento dell'attesa di replica sincrona su richiesta utente" -#: replication/syncrep.c:380 +#: replication/syncrep.c:368 #, c-format msgid "standby \"%s\" now has synchronous standby priority %u" msgstr "lo standby \"%s\" ha ora priorità di standby sincrono %u" -#: replication/syncrep.c:440 +#: replication/syncrep.c:428 #, c-format msgid "standby \"%s\" is now a synchronous standby with priority %u" msgstr "lo standby \"%s\" è ora uno standby sincrono con priorità %u" -#: replication/syncrep.c:969 -#, c-format -msgid "synchronous_standby_names parser returned %d" -msgstr "il parser synchronous_standby_names ha restituito %d" - -#: replication/syncrep.c:1014 +#: replication/syncrep.c:921 #, c-format -msgid "The configured number of synchronous standbys (%d) exceeds the number of names of potential synchronous ones (%d)" -msgstr "Il numero di standby sincroni configurati (%d) eccede quello di standby sincroni potenziali (%d)" +msgid "synchronous_standby_names parser failed" +msgstr "interpretazione di synchronous_standby_names non riuscita" -#: replication/syncrep.c:1016 +#: replication/syncrep.c:927 #, c-format -msgid "Specify more names of potential synchronous standbys in synchronous_standby_names." -msgstr "Specifica più nomi di standby sincroni potenziali in synchronous_standby_names." +msgid "number of synchronous standbys (%d) must be greater than zero" +msgstr "il numero di standby sincroni (%d) deve essere maggiore di zero" -#: replication/walreceiver.c:172 +#: replication/walreceiver.c:173 #, c-format msgid "terminating walreceiver process due to administrator command" msgstr "interruzione del processo walreceiver su comando dell'amministratore" -#: replication/walreceiver.c:324 +#: replication/walreceiver.c:344 #, c-format msgid "highest timeline %u of the primary is behind recovery timeline %u" msgstr "la timeline massima %u del primario è dietro la timeline di recupero %u" -#: replication/walreceiver.c:357 +#: replication/walreceiver.c:377 #, c-format msgid "started streaming WAL from primary at %X/%X on timeline %u" msgstr "streaming WAL avviato dal primario a %X/%X sulla timeline %u" -#: replication/walreceiver.c:362 +#: replication/walreceiver.c:382 #, c-format msgid "restarted WAL streaming at %X/%X on timeline %u" msgstr "streaming WAL riavviato sulla timeline %X/%X sulla timeline %u" -#: replication/walreceiver.c:391 +#: replication/walreceiver.c:411 #, c-format msgid "cannot continue WAL streaming, recovery has already ended" msgstr "non è possibile continuare lo streaming dei WAL, il recupero è già terminato" -#: replication/walreceiver.c:428 +#: replication/walreceiver.c:448 #, c-format msgid "replication terminated by primary server" msgstr "replica terminata dal server primario" -#: replication/walreceiver.c:429 +#: replication/walreceiver.c:449 #, c-format msgid "End of WAL reached on timeline %u at %X/%X." msgstr "Fine del WAL raggiunta sulla timeline %u a %X/%X." -#: replication/walreceiver.c:523 +#: replication/walreceiver.c:543 #, c-format msgid "terminating walreceiver due to timeout" msgstr "walreceiver terminato a causa di timeout" -#: replication/walreceiver.c:563 +#: replication/walreceiver.c:583 #, c-format msgid "primary server contains no more WAL on requested timeline %u" msgstr "il server primario non contiene più alcun WAL sulla timeline richiesta %u" -#: replication/walreceiver.c:578 replication/walreceiver.c:936 +#: replication/walreceiver.c:598 replication/walreceiver.c:957 #, c-format msgid "could not close log segment %s: %m" msgstr "chiusura del segmento di log %s fallita: %m" -#: replication/walreceiver.c:702 +#: replication/walreceiver.c:722 #, c-format msgid "fetching timeline history file for timeline %u from primary server" msgstr "recupero del file di storia della timeline %u dal server primario" -#: replication/walreceiver.c:990 +#: replication/walreceiver.c:1011 #, c-format msgid "could not write to log segment %s at offset %u, length %lu: %m" msgstr "scrittura nel segmento di log %s in posizione %u, lunghezza %lu fallita: %m" @@ -15426,47 +15446,47 @@ msgstr "La storia di questo server si è separata dalla timeline %u a %X/%X." msgid "requested starting point %X/%X is ahead of the WAL flush position of this server %X/%X" msgstr "il punto di avvio richiesto %X/%X è più avanti della posizione di flush del WAL %X/%X di questo server" -#: replication/walsender.c:974 +#: replication/walsender.c:973 #, c-format msgid "terminating walsender process after promotion" msgstr "interruzione del processo walsender dopo la promozione" -#: replication/walsender.c:1300 +#: replication/walsender.c:1299 #, c-format msgid "received replication command: %s" msgstr "ricevuto comando di replica: %s" -#: replication/walsender.c:1393 replication/walsender.c:1409 +#: replication/walsender.c:1398 replication/walsender.c:1414 #, c-format msgid "unexpected EOF on standby connection" msgstr "fine del file inaspettato sulla connessione di standby" -#: replication/walsender.c:1423 +#: replication/walsender.c:1428 #, c-format msgid "unexpected standby message type \"%c\", after receiving CopyDone" msgstr "tipo di messaggio di standby \"%c\" imprevisto, dopo la ricezione di CopyDone" -#: replication/walsender.c:1461 +#: replication/walsender.c:1466 #, c-format msgid "invalid standby message type \"%c\"" msgstr "tipo di messaggio \"%c\" di standby non valido" -#: replication/walsender.c:1502 +#: replication/walsender.c:1507 #, c-format msgid "unexpected message type \"%c\"" msgstr "tipo di messaggio \"%c\" inatteso" -#: replication/walsender.c:1786 +#: replication/walsender.c:1791 #, c-format msgid "terminating walsender process due to replication timeout" msgstr "interruzione del processo walsender a causa di timeout di replica" -#: replication/walsender.c:1879 +#: replication/walsender.c:1876 #, c-format msgid "standby \"%s\" has now caught up with primary" msgstr "lo standby \"%s\" ha ora raggiunto il primario" -#: replication/walsender.c:1982 +#: replication/walsender.c:1979 #, c-format msgid "number of requested standby connections exceeds max_wal_senders (currently %d)" msgstr "il numero di richieste di connessioni di standby supera max_wal_senders (attualmente %d)" @@ -15903,98 +15923,103 @@ msgstr "Questo fenomeno è stato riportato con kernel difettosi: considera l'agg msgid "invalid page in block %u of relation %s; zeroing out page" msgstr "pagina non valida nel blocco %u della relazione %s; azzeramento della pagina" -#: storage/buffer/bufmgr.c:3951 +#: storage/buffer/bufmgr.c:3969 #, c-format msgid "could not write block %u of %s" msgstr "scrittura del blocco %u di %s fallita" -#: storage/buffer/bufmgr.c:3953 +#: storage/buffer/bufmgr.c:3971 #, c-format msgid "Multiple failures --- write error might be permanent." msgstr "Più di un fallimento --- l'errore in scrittura potrebbe essere permanente." -#: storage/buffer/bufmgr.c:3974 storage/buffer/bufmgr.c:3993 +#: storage/buffer/bufmgr.c:3992 storage/buffer/bufmgr.c:4011 #, c-format msgid "writing block %u of relation %s" msgstr "scrittura del blocco %u della relazione %s" -#: storage/buffer/bufmgr.c:4317 +#: storage/buffer/bufmgr.c:4312 #, c-format msgid "snapshot too old" msgstr "snapshot troppo vecchio" -#: storage/buffer/localbuf.c:198 +#: storage/buffer/localbuf.c:199 #, c-format msgid "no empty local buffer available" msgstr "nessun buffer locale vuoto disponibile" -#: storage/file/fd.c:436 storage/file/fd.c:508 storage/file/fd.c:544 +#: storage/buffer/localbuf.c:427 +#, c-format +msgid "cannot access temporary tables during a parallel operation" +msgstr "non è possibile accedere alle tabelle temporanee durante un'operazione parallela" + +#: storage/file/fd.c:443 storage/file/fd.c:515 storage/file/fd.c:551 #, c-format msgid "could not flush dirty data: %m" msgstr "non è stato possibile scaricare i dati sporchi: %m" -#: storage/file/fd.c:466 +#: storage/file/fd.c:473 #, c-format msgid "could not determine dirty data size: %m" msgstr "non è stato possibile determinare la dimensione dei dati sporchi: %m" -#: storage/file/fd.c:518 +#: storage/file/fd.c:525 #, c-format msgid "could not munmap() while flushing data: %m" msgstr "non è possibile effettuare munmap() mentre si stanno scaricando i dati sporchi: %m" -#: storage/file/fd.c:682 +#: storage/file/fd.c:689 #, c-format msgid "could not link file \"%s\" to \"%s\": %m" msgstr "creazione del collegamento il file \"%s\" a \"%s\" fallita: %m" -#: storage/file/fd.c:776 +#: storage/file/fd.c:783 #, c-format msgid "getrlimit failed: %m" msgstr "getrlimit fallito: %m" -#: storage/file/fd.c:866 +#: storage/file/fd.c:873 #, c-format msgid "insufficient file descriptors available to start server process" msgstr "descrittori di file non sufficienti per avviare il processo server" -#: storage/file/fd.c:867 +#: storage/file/fd.c:874 #, c-format msgid "System allows %d, we need at least %d." msgstr "Il sistema ne consente %d, ne occorrono almeno %d." -#: storage/file/fd.c:908 storage/file/fd.c:2001 storage/file/fd.c:2094 -#: storage/file/fd.c:2242 +#: storage/file/fd.c:915 storage/file/fd.c:2078 storage/file/fd.c:2171 +#: storage/file/fd.c:2319 #, c-format msgid "out of file descriptors: %m; release and retry" msgstr "descrittori di file esauriti: %m; sto rilasciando e riprovando" -#: storage/file/fd.c:1482 +#: storage/file/fd.c:1520 #, c-format msgid "temporary file: path \"%s\", size %lu" msgstr "file temporaneo: percorso \"%s\", dimensione %lu" -#: storage/file/fd.c:1656 +#: storage/file/fd.c:1717 #, c-format msgid "temporary file size exceeds temp_file_limit (%dkB)" msgstr "la dimensione del file temporaneo supera temp_file_limit (%dkB)" -#: storage/file/fd.c:1977 storage/file/fd.c:2027 +#: storage/file/fd.c:2054 storage/file/fd.c:2104 #, c-format msgid "exceeded maxAllocatedDescs (%d) while trying to open file \"%s\"" msgstr "maxAllocatedDescs (%d) superato tentando di aprire il file \"%s\"" -#: storage/file/fd.c:2067 +#: storage/file/fd.c:2144 #, c-format msgid "exceeded maxAllocatedDescs (%d) while trying to execute command \"%s\"" msgstr "maxAllocatedDescs (%d) superato tentando di eseguire il comando \"%s\"" -#: storage/file/fd.c:2218 +#: storage/file/fd.c:2295 #, c-format msgid "exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\"" msgstr "maxAllocatedDescs (%d) superato tentando di aprire la directory \"%s\"" -#: storage/file/fd.c:2304 +#: storage/file/fd.c:2381 #, c-format msgid "could not read directory \"%s\": %m" msgstr "lettura della directory \"%s\" fallita: %m" @@ -16026,37 +16051,37 @@ msgstr "troppi segmenti di memoria dinamica condivisa" #: storage/ipc/dsm_impl.c:261 storage/ipc/dsm_impl.c:361 #: storage/ipc/dsm_impl.c:533 storage/ipc/dsm_impl.c:648 -#: storage/ipc/dsm_impl.c:811 storage/ipc/dsm_impl.c:953 +#: storage/ipc/dsm_impl.c:819 storage/ipc/dsm_impl.c:961 #, c-format msgid "could not unmap shared memory segment \"%s\": %m" msgstr "unmap del segmento di memoria condivisa \"%s\" fallito: %m" #: storage/ipc/dsm_impl.c:271 storage/ipc/dsm_impl.c:543 -#: storage/ipc/dsm_impl.c:658 storage/ipc/dsm_impl.c:821 +#: storage/ipc/dsm_impl.c:658 storage/ipc/dsm_impl.c:829 #, c-format msgid "could not remove shared memory segment \"%s\": %m" msgstr "rimozione del segmento di memoria condivisa \"%s\" fallito: %m" -#: storage/ipc/dsm_impl.c:292 storage/ipc/dsm_impl.c:721 -#: storage/ipc/dsm_impl.c:835 +#: storage/ipc/dsm_impl.c:292 storage/ipc/dsm_impl.c:729 +#: storage/ipc/dsm_impl.c:843 #, c-format msgid "could not open shared memory segment \"%s\": %m" msgstr "apertura del segmento di memoria condivisa \"%s\" fallito: %m" #: storage/ipc/dsm_impl.c:316 storage/ipc/dsm_impl.c:559 -#: storage/ipc/dsm_impl.c:766 storage/ipc/dsm_impl.c:859 +#: storage/ipc/dsm_impl.c:774 storage/ipc/dsm_impl.c:867 #, c-format msgid "could not stat shared memory segment \"%s\": %m" msgstr "lettura informazioni sul segmento di memoria condivisa \"%s\" fallito: %m" -#: storage/ipc/dsm_impl.c:335 storage/ipc/dsm_impl.c:878 -#: storage/ipc/dsm_impl.c:926 +#: storage/ipc/dsm_impl.c:335 storage/ipc/dsm_impl.c:886 +#: storage/ipc/dsm_impl.c:934 #, c-format msgid "could not resize shared memory segment \"%s\" to %zu bytes: %m" msgstr "ridimensionamento del segmento di memoria condivisa \"%s\" a %zu byte fallito: %m" #: storage/ipc/dsm_impl.c:385 storage/ipc/dsm_impl.c:580 -#: storage/ipc/dsm_impl.c:742 storage/ipc/dsm_impl.c:977 +#: storage/ipc/dsm_impl.c:750 storage/ipc/dsm_impl.c:985 #, c-format msgid "could not map shared memory segment \"%s\": %m" msgstr "map del segmento di memoria condivisa \"%s\" fallito: %m" @@ -16066,67 +16091,67 @@ msgstr "map del segmento di memoria condivisa \"%s\" fallito: %m" msgid "could not get shared memory segment: %m" msgstr "impossibile ottenere un segmento di memoria condivisa: %m" -#: storage/ipc/dsm_impl.c:694 +#: storage/ipc/dsm_impl.c:714 #, c-format msgid "could not create shared memory segment \"%s\": %m" msgstr "creazione del segmento di memoria condivisa \"%s\" fallito: %m" -#: storage/ipc/dsm_impl.c:1018 +#: storage/ipc/dsm_impl.c:1026 #, c-format msgid "could not duplicate handle for \"%s\": %m" msgstr "duplicazione dell'handle per \"%s\" fallita: %m" -#: storage/ipc/latch.c:769 +#: storage/ipc/latch.c:841 #, c-format msgid "epoll_ctl() failed: %m" msgstr "epoll_ctl() fallita: %m" -#: storage/ipc/latch.c:993 +#: storage/ipc/latch.c:1065 #, c-format msgid "epoll_wait() failed: %m" msgstr "epoll_wait() fallita: %m" -#: storage/ipc/latch.c:1113 +#: storage/ipc/latch.c:1185 #, c-format msgid "poll() failed: %m" msgstr "poll() fallito: %m" -#: storage/ipc/shm_toc.c:108 storage/ipc/shm_toc.c:189 storage/ipc/shmem.c:210 +#: storage/ipc/shm_toc.c:108 storage/ipc/shm_toc.c:189 storage/ipc/shmem.c:212 #: storage/lmgr/lock.c:883 storage/lmgr/lock.c:917 storage/lmgr/lock.c:2682 #: storage/lmgr/lock.c:4007 storage/lmgr/lock.c:4072 storage/lmgr/lock.c:4364 #: storage/lmgr/predicate.c:2329 storage/lmgr/predicate.c:2344 #: storage/lmgr/predicate.c:3736 storage/lmgr/predicate.c:4879 -#: storage/lmgr/proc.c:203 utils/hash/dynahash.c:1045 +#: storage/lmgr/proc.c:203 utils/hash/dynahash.c:1043 #, c-format msgid "out of shared memory" msgstr "memoria condivisa esaurita" -#: storage/ipc/shmem.c:366 storage/ipc/shmem.c:417 +#: storage/ipc/shmem.c:370 storage/ipc/shmem.c:421 #, c-format msgid "not enough shared memory for data structure \"%s\" (%zu bytes requested)" msgstr "memoria condivisa per la struttura di dati \"%s\" insufficiente (richiesti %zu byte)" -#: storage/ipc/shmem.c:385 +#: storage/ipc/shmem.c:389 #, c-format msgid "could not create ShmemIndex entry for data structure \"%s\"" msgstr "creazione dell'elemento ShmemIndex fallita per la struttura di dati \"%s\"" -#: storage/ipc/shmem.c:400 +#: storage/ipc/shmem.c:404 #, c-format msgid "ShmemIndex entry size is wrong for data structure \"%s\": expected %zu, actual %zu" msgstr "dimensione elemento ShmemIndex errata per la struttura di dati \"%s\": attesi %zu, effettivi %zu" -#: storage/ipc/shmem.c:445 storage/ipc/shmem.c:464 +#: storage/ipc/shmem.c:452 storage/ipc/shmem.c:471 #, c-format msgid "requested shared memory size overflows size_t" msgstr "la dimensione richiesta di memoria condivisa supera size_t" -#: storage/ipc/standby.c:527 tcop/postgres.c:2963 +#: storage/ipc/standby.c:530 tcop/postgres.c:2976 #, c-format msgid "canceling statement due to conflict with recovery" msgstr "annullamento dell'istruzione a causa di un conflitto con il ripristino" -#: storage/ipc/standby.c:528 tcop/postgres.c:2265 +#: storage/ipc/standby.c:531 tcop/postgres.c:2263 #, c-format msgid "User transaction caused buffer deadlock with recovery." msgstr "La transazione utente ha causato un deadlock del buffer con il ripristino." @@ -16337,13 +16362,13 @@ msgstr "Puoi usare \"SET default_transaction_isolation = 'repeatable read'\" per msgid "a snapshot-importing transaction must not be READ ONLY DEFERRABLE" msgstr "una transazione che importa uno snapshot non può essere READ ONLY DEFERRABLE" -#: storage/lmgr/predicate.c:1706 utils/time/snapmgr.c:535 -#: utils/time/snapmgr.c:541 +#: storage/lmgr/predicate.c:1706 utils/time/snapmgr.c:617 +#: utils/time/snapmgr.c:623 #, c-format msgid "could not import the requested snapshot" msgstr "non è stato possibile importare lo snapshot richiesto" -#: storage/lmgr/predicate.c:1707 utils/time/snapmgr.c:542 +#: storage/lmgr/predicate.c:1707 utils/time/snapmgr.c:624 #, c-format msgid "The source transaction %u is not running anymore." msgstr "La transazione di origine %u non è più in esecuzione." @@ -16372,42 +16397,42 @@ msgstr "serializzazione dell'accesso fallita a causa di dipendenze di lettura/sc msgid "The transaction might succeed if retried." msgstr "La transazione potrebbe riuscire se ritentata." -#: storage/lmgr/proc.c:1263 +#: storage/lmgr/proc.c:1265 #, c-format msgid "Process %d waits for %s on %s." msgstr "Processo %d in attesa di %s su %s." -#: storage/lmgr/proc.c:1274 +#: storage/lmgr/proc.c:1276 #, c-format msgid "sending cancel to blocking autovacuum PID %d" msgstr "invio di annullamento per bloccare l'autovacuum con PID %d" -#: storage/lmgr/proc.c:1292 utils/adt/misc.c:270 +#: storage/lmgr/proc.c:1294 utils/adt/misc.c:270 #, c-format msgid "could not send signal to process %d: %m" msgstr "invio del segnale al processo %d fallito: %m" -#: storage/lmgr/proc.c:1394 +#: storage/lmgr/proc.c:1396 #, c-format msgid "process %d avoided deadlock for %s on %s by rearranging queue order after %ld.%03d ms" msgstr "il processo %d ha evitato un deadlock per %s su %s modificando l'ordine della coda dopo %ld.%03d ms" -#: storage/lmgr/proc.c:1409 +#: storage/lmgr/proc.c:1411 #, c-format msgid "process %d detected deadlock while waiting for %s on %s after %ld.%03d ms" msgstr "il processo %d ha individuato un deadlock mentre era in attesa di %s su %s dopo %ld.%03d ms" -#: storage/lmgr/proc.c:1418 +#: storage/lmgr/proc.c:1420 #, c-format msgid "process %d still waiting for %s on %s after %ld.%03d ms" msgstr "il processo %d è ancora un attesa di %s su %s dopo %ld.%03d ms" -#: storage/lmgr/proc.c:1425 +#: storage/lmgr/proc.c:1427 #, c-format msgid "process %d acquired %s on %s after %ld.%03d ms" msgstr "il processo %d ha acquisito %s su %s dopo %ld.%03d ms" -#: storage/lmgr/proc.c:1441 +#: storage/lmgr/proc.c:1443 #, c-format msgid "process %d failed to acquire %s on %s after %ld.%03d ms" msgstr "il processo %d ha fallito l'acquisizione di %s su %s dopo %ld.%03d ms" @@ -16417,148 +16442,153 @@ msgstr "il processo %d ha fallito l'acquisizione di %s su %s dopo %ld.%03d ms" msgid "page verification failed, calculated checksum %u but expected %u" msgstr "verifica della pagina fallita, somma di controllo calcolata %u ma era attesa %u" -#: storage/page/bufpage.c:200 storage/page/bufpage.c:490 -#: storage/page/bufpage.c:705 storage/page/bufpage.c:836 -#: storage/page/bufpage.c:936 +#: storage/page/bufpage.c:203 storage/page/bufpage.c:522 +#: storage/page/bufpage.c:737 storage/page/bufpage.c:868 +#: storage/page/bufpage.c:968 #, c-format msgid "corrupted page pointers: lower = %u, upper = %u, special = %u" msgstr "puntatore di pagina corrotto: lower = %u, upper = %u, special = %u" -#: storage/page/bufpage.c:534 +#: storage/page/bufpage.c:566 #, c-format msgid "corrupted item pointer: %u" msgstr "puntatore di elemento corrotto: %u" -#: storage/page/bufpage.c:545 storage/page/bufpage.c:887 -#: storage/page/bufpage.c:1042 +#: storage/page/bufpage.c:577 storage/page/bufpage.c:919 +#: storage/page/bufpage.c:1074 #, c-format msgid "corrupted item lengths: total %u, available space %u" msgstr "lunghezza dell'elemento corrotta: totale %u, spazio disponibile %u" -#: storage/page/bufpage.c:724 storage/page/bufpage.c:860 +#: storage/page/bufpage.c:756 storage/page/bufpage.c:892 #, c-format msgid "corrupted item pointer: offset = %u, size = %u" msgstr "puntatore di elemento corrotto: offset = %u, size = %u" -#: storage/page/bufpage.c:965 +#: storage/page/bufpage.c:997 #, c-format msgid "corrupted item pointer: offset = %u, length = %u" msgstr "puntatore di elemento corrotto: offset = %u, lunghezza = %u" -#: storage/smgr/md.c:442 storage/smgr/md.c:962 +#: storage/smgr/md.c:449 storage/smgr/md.c:971 #, c-format msgid "could not truncate file \"%s\": %m" msgstr "troncamento del file \"%s\" fallito: %m" -#: storage/smgr/md.c:509 +#: storage/smgr/md.c:516 #, c-format msgid "cannot extend file \"%s\" beyond %u blocks" msgstr "estendere il file \"%s\" oltre %u blocchi" -#: storage/smgr/md.c:531 storage/smgr/md.c:743 storage/smgr/md.c:818 +#: storage/smgr/md.c:538 storage/smgr/md.c:751 storage/smgr/md.c:827 #, c-format msgid "could not seek to block %u in file \"%s\": %m" msgstr "spostamento al blocco %u nel file \"%s\" fallito: %m" -#: storage/smgr/md.c:539 +#: storage/smgr/md.c:546 #, c-format msgid "could not extend file \"%s\": %m" msgstr "non è stato possibile estendere il file \"%s\": %m" -#: storage/smgr/md.c:541 storage/smgr/md.c:548 storage/smgr/md.c:845 +#: storage/smgr/md.c:548 storage/smgr/md.c:555 storage/smgr/md.c:854 #, c-format msgid "Check free disk space." msgstr "Controlla lo spazio libero sul disco." -#: storage/smgr/md.c:545 +#: storage/smgr/md.c:552 #, c-format msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u" msgstr "non è stato possibile estendere il file \"%s\": scritti soli %d byte di %d nel blocco %u" -#: storage/smgr/md.c:761 +#: storage/smgr/md.c:769 #, c-format msgid "could not read block %u in file \"%s\": %m" msgstr "lettura del blocco %u nel file \"%s\" fallita: %m" -#: storage/smgr/md.c:777 +#: storage/smgr/md.c:785 #, c-format msgid "could not read block %u in file \"%s\": read only %d of %d bytes" msgstr "lettura del blocco %u nel file \"%s\" fallita: letti soli %d byte di %d" -#: storage/smgr/md.c:836 +#: storage/smgr/md.c:845 #, c-format msgid "could not write block %u in file \"%s\": %m" msgstr "scrittura del blocco %u nel file \"%s\" fallita: %m" -#: storage/smgr/md.c:841 +#: storage/smgr/md.c:850 #, c-format msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes" msgstr "lettura del blocco %u nel file \"%s\" fallita: scritti solo %d byte di %d" -#: storage/smgr/md.c:938 +#: storage/smgr/md.c:947 #, c-format msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now" msgstr "troncamento del file \"%s\" a %u blocchi fallito: ora è di soli %u blocchi" -#: storage/smgr/md.c:987 +#: storage/smgr/md.c:997 #, c-format msgid "could not truncate file \"%s\" to %u blocks: %m" msgstr "troncamento del file \"%s\" a %u blocchi fallito: %m" -#: storage/smgr/md.c:1267 +#: storage/smgr/md.c:1279 #, c-format msgid "could not fsync file \"%s\" but retrying: %m" msgstr "fsync del file \"%s\" fallito ma sto ritentando: %m" -#: storage/smgr/md.c:1430 +#: storage/smgr/md.c:1442 #, c-format msgid "could not forward fsync request because request queue is full" msgstr "inoltro della richiesta di fsync fallito perché la coda di richieste è piena" -#: storage/smgr/md.c:1825 +#: storage/smgr/md.c:1863 +#, c-format +msgid "could not open file \"%s\" (target block %u): previous segment is only %u blocks" +msgstr "apertura del file \"%s\" fallita (blocco di destinazione %u): il segmento precedente è di soli %u blocchi" + +#: storage/smgr/md.c:1877 #, c-format msgid "could not open file \"%s\" (target block %u): %m" msgstr "apertura del file \"%s\" fallita (blocco di destinazione %u): %m" -#: tcop/fastpath.c:111 tcop/fastpath.c:475 tcop/fastpath.c:605 +#: tcop/fastpath.c:111 tcop/fastpath.c:463 tcop/fastpath.c:593 #, c-format msgid "invalid argument size %d in function call message" msgstr "La dimensione dell'argomento %d non è valida nel messaggi di chiamata di funzione" -#: tcop/fastpath.c:291 tcop/postgres.c:992 tcop/postgres.c:1303 -#: tcop/postgres.c:1561 tcop/postgres.c:1966 tcop/postgres.c:2333 -#: tcop/postgres.c:2408 +#: tcop/fastpath.c:281 tcop/postgres.c:992 tcop/postgres.c:1301 +#: tcop/postgres.c:1559 tcop/postgres.c:1964 tcop/postgres.c:2331 +#: tcop/postgres.c:2406 #, c-format msgid "current transaction is aborted, commands ignored until end of transaction block" msgstr "la transazione corrente è interrotta, i comandi saranno ignorati fino alla fine del blocco della transazione" -#: tcop/fastpath.c:319 +#: tcop/fastpath.c:309 #, c-format msgid "fastpath function call: \"%s\" (OID %u)" msgstr "chiamata funzione fastpath: \"%s\" (OID %u)" -#: tcop/fastpath.c:401 tcop/postgres.c:1163 tcop/postgres.c:1428 -#: tcop/postgres.c:1807 tcop/postgres.c:2024 +#: tcop/fastpath.c:391 tcop/postgres.c:1163 tcop/postgres.c:1426 +#: tcop/postgres.c:1805 tcop/postgres.c:2022 #, c-format msgid "duration: %s ms" msgstr "durata: %s ms" -#: tcop/fastpath.c:405 +#: tcop/fastpath.c:395 #, c-format msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" msgstr "durata: %s ms chiamata funzione fastpath: \"%s\" (OID %u)" -#: tcop/fastpath.c:443 tcop/fastpath.c:570 +#: tcop/fastpath.c:431 tcop/fastpath.c:558 #, c-format msgid "function call message contains %d arguments but function requires %d" msgstr "la chiamata alla funzione contiene %d parametri ma la funzione ne richiede %d" -#: tcop/fastpath.c:451 +#: tcop/fastpath.c:439 #, c-format msgid "function call message contains %d argument formats but %d arguments" msgstr "la chiamata alla funzione contiene %d formati di parametri ma %d parametri" -#: tcop/fastpath.c:538 tcop/fastpath.c:621 +#: tcop/fastpath.c:526 tcop/fastpath.c:609 #, c-format msgid "incorrect binary data format in function argument %d" msgstr "formato dei dati binari non corretto nell'argomento %d della funzione" @@ -16569,7 +16599,7 @@ msgid "unexpected EOF on client connection" msgstr "fine file inaspettata nella connessione al client" #: tcop/postgres.c:438 tcop/postgres.c:450 tcop/postgres.c:461 -#: tcop/postgres.c:473 tcop/postgres.c:4297 +#: tcop/postgres.c:473 tcop/postgres.c:4302 #, c-format msgid "invalid frontend message type %d" msgstr "messaggio frontend di tipo %d non valido" @@ -16589,260 +16619,260 @@ msgstr "durata: %s ms istruzione: %s" msgid "parse %s: %s" msgstr "analisi di %s: %s" -#: tcop/postgres.c:1276 +#: tcop/postgres.c:1274 #, c-format msgid "cannot insert multiple commands into a prepared statement" msgstr "non è possibile inserire comandi multipli in una istruzione preparata" -#: tcop/postgres.c:1433 +#: tcop/postgres.c:1431 #, c-format msgid "duration: %s ms parse %s: %s" msgstr "durata: %s ms analisi di %s: %s" -#: tcop/postgres.c:1478 +#: tcop/postgres.c:1476 #, c-format msgid "bind %s to %s" msgstr "bind di %s a %s" -#: tcop/postgres.c:1497 tcop/postgres.c:2314 +#: tcop/postgres.c:1495 tcop/postgres.c:2312 #, c-format msgid "unnamed prepared statement does not exist" msgstr "l'istruzione preparata senza nome non esiste" -#: tcop/postgres.c:1539 +#: tcop/postgres.c:1537 #, c-format msgid "bind message has %d parameter formats but %d parameters" msgstr "il messaggio di bind ha %d formati di parametri ma %d parametri" -#: tcop/postgres.c:1545 +#: tcop/postgres.c:1543 #, c-format msgid "bind message supplies %d parameters, but prepared statement \"%s\" requires %d" msgstr "il messaggio di bind fornisce %d paramatri, ma l'istruzione preparata \"%s\" ne richiede %d" -#: tcop/postgres.c:1714 +#: tcop/postgres.c:1712 #, c-format msgid "incorrect binary data format in bind parameter %d" msgstr "formato del dato binario errato nel parametro di bind %d" -#: tcop/postgres.c:1812 +#: tcop/postgres.c:1810 #, c-format msgid "duration: %s ms bind %s%s%s: %s" msgstr "durata: %s ms bind %s%s%s: %s" -#: tcop/postgres.c:1860 tcop/postgres.c:2394 +#: tcop/postgres.c:1858 tcop/postgres.c:2392 #, c-format msgid "portal \"%s\" does not exist" msgstr "il portale \"%s\" non esiste" -#: tcop/postgres.c:1945 +#: tcop/postgres.c:1943 #, c-format msgid "%s %s%s%s: %s" msgstr "%s %s%s%s: %s" -#: tcop/postgres.c:1947 tcop/postgres.c:2032 +#: tcop/postgres.c:1945 tcop/postgres.c:2030 msgid "execute fetch from" msgstr "esecuzione di fetch da" -#: tcop/postgres.c:1948 tcop/postgres.c:2033 +#: tcop/postgres.c:1946 tcop/postgres.c:2031 msgid "execute" msgstr "esecuzione di" -#: tcop/postgres.c:2029 +#: tcop/postgres.c:2027 #, c-format msgid "duration: %s ms %s %s%s%s: %s" msgstr "durata: %s ms %s %s%s%s: %s" -#: tcop/postgres.c:2155 +#: tcop/postgres.c:2153 #, c-format msgid "prepare: %s" msgstr "preparazione: %s" -#: tcop/postgres.c:2218 +#: tcop/postgres.c:2216 #, c-format msgid "parameters: %s" msgstr "parametri: %s" -#: tcop/postgres.c:2237 +#: tcop/postgres.c:2235 #, c-format msgid "abort reason: recovery conflict" msgstr "motivo dell'interruzione: conflitto di recupero" -#: tcop/postgres.c:2253 +#: tcop/postgres.c:2251 #, c-format msgid "User was holding shared buffer pin for too long." msgstr "L'utente stava trattenendo un pin di shared buffer troppo a lungo." -#: tcop/postgres.c:2256 +#: tcop/postgres.c:2254 #, c-format msgid "User was holding a relation lock for too long." msgstr "L'utente stava trattenendo un lock di relazione troppo a lungo." -#: tcop/postgres.c:2259 +#: tcop/postgres.c:2257 #, c-format msgid "User was or might have been using tablespace that must be dropped." msgstr "L'utente stava usando o potrebbe aver usato un tablespace che deve essere eliminato." -#: tcop/postgres.c:2262 +#: tcop/postgres.c:2260 #, c-format msgid "User query might have needed to see row versions that must be removed." msgstr "L'utente potrebbe aver avuto bisogno di vedere versioni di righe che devono essere rimosse." -#: tcop/postgres.c:2268 +#: tcop/postgres.c:2266 #, c-format msgid "User was connected to a database that must be dropped." msgstr "L'utente era connesso ad un database che deve essere eliminato." -#: tcop/postgres.c:2597 +#: tcop/postgres.c:2595 #, c-format msgid "terminating connection because of crash of another server process" msgstr "la connessione è stata terminata a causa del crash di un altro processo del server" -#: tcop/postgres.c:2598 +#: tcop/postgres.c:2596 #, c-format msgid "The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory." msgstr "Il postmaster ha obbligato questo processo del server di attuare il roll back della transazione corrente e di uscire, perché un altro processo del server è terminato anormalmente e con possibile corruzione della memoria condivisa." -#: tcop/postgres.c:2602 tcop/postgres.c:2906 +#: tcop/postgres.c:2600 tcop/postgres.c:2904 #, c-format msgid "In a moment you should be able to reconnect to the database and repeat your command." msgstr "In un momento sarai in grado di riconnetterti al database e di ripetere il comando." -#: tcop/postgres.c:2688 +#: tcop/postgres.c:2686 #, c-format msgid "floating-point exception" msgstr "eccezione floating-point" -#: tcop/postgres.c:2689 +#: tcop/postgres.c:2687 #, c-format msgid "An invalid floating-point operation was signaled. This probably means an out-of-range result or an invalid operation, such as division by zero." msgstr "Un'operazione in floating-point non valida è stata segnalata. Questo probabilmente sta a significare che il risultato è un valore fuori limite o l'operazione non è valida, ad esempio una divisione per zero." -#: tcop/postgres.c:2851 +#: tcop/postgres.c:2849 #, c-format msgid "canceling authentication due to timeout" msgstr "annullamento dell'autenticazione a causa di timeout" -#: tcop/postgres.c:2855 +#: tcop/postgres.c:2853 #, c-format msgid "terminating autovacuum process due to administrator command" msgstr "interruzione del processo autovacuum su comando dell'amministratore" -#: tcop/postgres.c:2861 tcop/postgres.c:2871 tcop/postgres.c:2904 +#: tcop/postgres.c:2859 tcop/postgres.c:2869 tcop/postgres.c:2902 #, c-format msgid "terminating connection due to conflict with recovery" msgstr "interruzione della connessione a causa di conflitto con il ripristino" -#: tcop/postgres.c:2877 +#: tcop/postgres.c:2875 #, c-format msgid "terminating connection due to administrator command" msgstr "interruzione della connessione su comando dell'amministratore" -#: tcop/postgres.c:2887 +#: tcop/postgres.c:2885 #, c-format msgid "connection to client lost" msgstr "connessione al client persa" -#: tcop/postgres.c:2940 +#: tcop/postgres.c:2953 #, c-format msgid "canceling statement due to lock timeout" msgstr "annullamento dell'istruzione a causa di timeout di lock" -#: tcop/postgres.c:2947 +#: tcop/postgres.c:2960 #, c-format msgid "canceling statement due to statement timeout" msgstr "annullamento dell'istruzione a causa di timeout" -#: tcop/postgres.c:2954 +#: tcop/postgres.c:2967 #, c-format msgid "canceling autovacuum task" msgstr "annullamento del task di autovacuum" -#: tcop/postgres.c:2977 +#: tcop/postgres.c:2990 #, c-format msgid "canceling statement due to user request" msgstr "annullamento dell'istruzione su richiesta dell'utente" -#: tcop/postgres.c:2987 +#: tcop/postgres.c:3000 #, c-format msgid "terminating connection due to idle-in-transaction timeout" msgstr "la connessione è stata terminata a causa di timeout di inattività durante una transazione" -#: tcop/postgres.c:3101 +#: tcop/postgres.c:3114 #, c-format msgid "stack depth limit exceeded" msgstr "limite di profondità dello stack superato" -#: tcop/postgres.c:3102 +#: tcop/postgres.c:3115 #, c-format msgid "Increase the configuration parameter \"max_stack_depth\" (currently %dkB), after ensuring the platform's stack depth limit is adequate." msgstr "Incrementa il parametro di configurazione \"max_stack_depth\" (attualmente %dkB), dopo esserti assicurato che il limite dello stack della piattaforma sia adeguato." -#: tcop/postgres.c:3165 +#: tcop/postgres.c:3178 #, c-format msgid "\"max_stack_depth\" must not exceed %ldkB." msgstr "\"max_stack_depth\" non deve superare %ldkB" -#: tcop/postgres.c:3167 +#: tcop/postgres.c:3180 #, c-format msgid "Increase the platform's stack depth limit via \"ulimit -s\" or local equivalent." msgstr "Incrementa il limite dello stack della piattaforma usando \"ulimit -s\" on un comando equivalente." -#: tcop/postgres.c:3527 +#: tcop/postgres.c:3540 #, c-format msgid "invalid command-line argument for server process: %s" msgstr "argomento della riga di comando non valido per il processo server: %s" -#: tcop/postgres.c:3528 tcop/postgres.c:3534 +#: tcop/postgres.c:3541 tcop/postgres.c:3547 #, c-format msgid "Try \"%s --help\" for more information." msgstr "Prova \"%s --help\" per maggiori informazioni." -#: tcop/postgres.c:3532 +#: tcop/postgres.c:3545 #, c-format msgid "%s: invalid command-line argument: %s" msgstr "%s: argomento della riga di comando non valido: %s" -#: tcop/postgres.c:3594 +#: tcop/postgres.c:3607 #, c-format msgid "%s: no database nor user name specified" msgstr "%s: nessun database né nome utente specificato" -#: tcop/postgres.c:4205 +#: tcop/postgres.c:4210 #, c-format msgid "invalid CLOSE message subtype %d" msgstr "sottotipo %d del messaggio CLOSE non valido" -#: tcop/postgres.c:4240 +#: tcop/postgres.c:4245 #, c-format msgid "invalid DESCRIBE message subtype %d" msgstr "sottotipo %d del messaggio DESCRIBE non valido" -#: tcop/postgres.c:4318 +#: tcop/postgres.c:4323 #, c-format msgid "fastpath function calls not supported in a replication connection" msgstr "le chiamate di funzione fastpath non sono supportate in una connessione di replica" -#: tcop/postgres.c:4322 +#: tcop/postgres.c:4327 #, c-format msgid "extended query protocol not supported in a replication connection" msgstr "il protocollo di query esteso non è supportato in una connessione di replica" -#: tcop/postgres.c:4492 +#: tcop/postgres.c:4497 #, c-format msgid "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%s" msgstr "disconnessione: tempo della sessione: %d:%02d:%02d.%03d utente=%s database=%s host=%s%s%s" -#: tcop/pquery.c:663 +#: tcop/pquery.c:665 #, c-format msgid "bind message has %d result formats but query has %d columns" msgstr "il messaggio di bind ha %d formati di risultato ma la query ha %d colonne" -#: tcop/pquery.c:965 +#: tcop/pquery.c:967 #, c-format msgid "cursor can only scan forward" msgstr "il cursore effettuare solo scansioni in avanti" -#: tcop/pquery.c:966 +#: tcop/pquery.c:968 #, c-format msgid "Declare it with SCROLL option to enable backward scan." msgstr "Dichiaralo con l'opzione SCROLL per abilitare le scansioni all'indietro." @@ -16996,28 +17026,28 @@ msgstr "parametro di Thesaurus sconosciuto: \"%s\"" msgid "missing Dictionary parameter" msgstr "parametro di Dictionary mancante" -#: tsearch/spell.c:382 tsearch/spell.c:399 tsearch/spell.c:408 +#: tsearch/spell.c:380 tsearch/spell.c:397 tsearch/spell.c:406 #: tsearch/spell.c:1034 #, c-format msgid "invalid affix flag \"%s\"" msgstr "flag di affix non valido \"%s\"" -#: tsearch/spell.c:386 tsearch/spell.c:1038 +#: tsearch/spell.c:384 tsearch/spell.c:1038 #, c-format msgid "affix flag \"%s\" is out of range" msgstr "flag di affix \"%s\" fuori dall'intervallo valido" -#: tsearch/spell.c:416 +#: tsearch/spell.c:414 #, c-format msgid "invalid character in affix flag \"%s\"" msgstr "carattere non valido nel flag affix \"%s\"" -#: tsearch/spell.c:436 +#: tsearch/spell.c:434 #, c-format -msgid "invalid affix flag \"%s\" with long flag value" -msgstr "flag affix \"%s\" con valore di flag lungo" +msgid "invalid affix flag \"%s\" with \"long\" flag value" +msgstr "flag di affix \"%s\" con valore di flag \"long\" non valido" -#: tsearch/spell.c:523 +#: tsearch/spell.c:522 #, c-format msgid "could not open dictionary file \"%s\": %m" msgstr "apertura del file dictionary \"%s\" fallita: %m" @@ -17028,38 +17058,37 @@ msgid "invalid regular expression: %s" msgstr "espressione regolare non valida: %s" #: tsearch/spell.c:954 tsearch/spell.c:971 tsearch/spell.c:988 -#: tsearch/spell.c:1005 tsearch/spell.c:1070 gram.y:14385 gram.y:14402 +#: tsearch/spell.c:1005 tsearch/spell.c:1070 gram.y:14405 gram.y:14422 #, c-format msgid "syntax error" msgstr "errore di sintassi" -#: tsearch/spell.c:1161 tsearch/spell.c:1716 +#: tsearch/spell.c:1161 tsearch/spell.c:1721 #, c-format msgid "invalid affix alias \"%s\"" msgstr "alias di affix \"%s\" non valido" -#: tsearch/spell.c:1210 tsearch/spell.c:1280 tsearch/spell.c:1422 +#: tsearch/spell.c:1211 tsearch/spell.c:1282 tsearch/spell.c:1426 #, c-format msgid "could not open affix file \"%s\": %m" msgstr "apertura del file affix \"%s\" fallita: %m" -#: tsearch/spell.c:1264 +#: tsearch/spell.c:1265 #, c-format -msgid "Ispell dictionary supports only default, long and num flag value" -msgstr "il dizionario Ispell supporta solo valori di flag default, long e num" +msgid "Ispell dictionary supports only \"default\", \"long\", and \"num\" flag values" +msgstr "il dizionario Ispell supporta solo valori di flag \"default\", \"long\" e \"num\"" -#: tsearch/spell.c:1307 +#: tsearch/spell.c:1309 #, c-format msgid "invalid number of flag vector aliases" msgstr "numero di alias nel vettore di flag non valido" -#: tsearch/spell.c:1538 +#: tsearch/spell.c:1542 #, c-format msgid "affix file contains both old-style and new-style commands" msgstr "il file affix contiene comandi sia vecchio stile che nuovo stile" -#: tsearch/to_tsany.c:170 utils/adt/tsvector.c:270 -#: utils/adt/tsvector_op.c:1064 +#: tsearch/to_tsany.c:170 utils/adt/tsvector.c:270 utils/adt/tsvector_op.c:1133 #, c-format msgid "string is too long for tsvector (%d bytes, max %d bytes)" msgstr "la stringa è troppo lunga per tsvector (%d byte, massimo %d byte)" @@ -17237,91 +17266,86 @@ msgstr "la funzione \"%s\" non esiste" msgid "must be member of role \"%s\"" msgstr "occorre far parte del ruolo \"%s\"" -#: utils/adt/acl.c:5279 utils/adt/acl.c:5285 -#, c-format -msgid "role \"%s\" is reserved" -msgstr "il ruolo \"%s\" è riservato" - -#: utils/adt/array_expanded.c:276 utils/adt/arrayfuncs.c:931 +#: utils/adt/array_expanded.c:274 utils/adt/arrayfuncs.c:931 #: utils/adt/arrayfuncs.c:1519 utils/adt/arrayfuncs.c:3251 -#: utils/adt/arrayfuncs.c:3389 utils/adt/arrayfuncs.c:5864 -#: utils/adt/arrayfuncs.c:6175 utils/adt/arrayutils.c:93 +#: utils/adt/arrayfuncs.c:3389 utils/adt/arrayfuncs.c:5848 +#: utils/adt/arrayfuncs.c:6159 utils/adt/arrayutils.c:93 #: utils/adt/arrayutils.c:102 utils/adt/arrayutils.c:109 #, c-format msgid "array size exceeds the maximum allowed (%d)" msgstr "la dimensione dell'array supera il massimo consentito (%d)" -#: utils/adt/array_userfuncs.c:67 utils/adt/array_userfuncs.c:529 -#: utils/adt/array_userfuncs.c:609 utils/adt/json.c:1759 utils/adt/json.c:1854 +#: utils/adt/array_userfuncs.c:79 utils/adt/array_userfuncs.c:541 +#: utils/adt/array_userfuncs.c:621 utils/adt/json.c:1759 utils/adt/json.c:1854 #: utils/adt/json.c:1892 utils/adt/jsonb.c:1126 utils/adt/jsonb.c:1155 #: utils/adt/jsonb.c:1591 utils/adt/jsonb.c:1755 utils/adt/jsonb.c:1765 #, c-format msgid "could not determine input data type" msgstr "non è stato possibile determinare il tipo di dato di input" -#: utils/adt/array_userfuncs.c:72 +#: utils/adt/array_userfuncs.c:84 #, c-format msgid "input data type is not an array" msgstr "il tipo di dati in input non è un array" -#: utils/adt/array_userfuncs.c:120 utils/adt/array_userfuncs.c:174 -#: utils/adt/arrayfuncs.c:1322 utils/adt/float.c:1221 utils/adt/float.c:1280 -#: utils/adt/float.c:3509 utils/adt/float.c:3525 utils/adt/int.c:623 +#: utils/adt/array_userfuncs.c:132 utils/adt/array_userfuncs.c:186 +#: utils/adt/arrayfuncs.c:1322 utils/adt/float.c:1228 utils/adt/float.c:1287 +#: utils/adt/float.c:3556 utils/adt/float.c:3572 utils/adt/int.c:623 #: utils/adt/int.c:652 utils/adt/int.c:673 utils/adt/int.c:704 #: utils/adt/int.c:737 utils/adt/int.c:759 utils/adt/int.c:907 #: utils/adt/int.c:928 utils/adt/int.c:955 utils/adt/int.c:995 #: utils/adt/int.c:1016 utils/adt/int.c:1043 utils/adt/int.c:1076 -#: utils/adt/int.c:1159 utils/adt/int8.c:1298 utils/adt/numeric.c:2907 -#: utils/adt/numeric.c:2916 utils/adt/varbit.c:1173 utils/adt/varbit.c:1565 +#: utils/adt/int.c:1159 utils/adt/int8.c:1298 utils/adt/numeric.c:2903 +#: utils/adt/numeric.c:2912 utils/adt/varbit.c:1173 utils/adt/varbit.c:1575 #: utils/adt/varlena.c:1055 utils/adt/varlena.c:2807 #, c-format msgid "integer out of range" msgstr "intero fuori dall'intervallo" -#: utils/adt/array_userfuncs.c:127 utils/adt/array_userfuncs.c:184 +#: utils/adt/array_userfuncs.c:139 utils/adt/array_userfuncs.c:196 #, c-format msgid "argument must be empty or one-dimensional array" msgstr "l'argomento deve essere vuoto o un array con una sola dimensione" -#: utils/adt/array_userfuncs.c:266 utils/adt/array_userfuncs.c:305 -#: utils/adt/array_userfuncs.c:342 utils/adt/array_userfuncs.c:371 -#: utils/adt/array_userfuncs.c:399 +#: utils/adt/array_userfuncs.c:278 utils/adt/array_userfuncs.c:317 +#: utils/adt/array_userfuncs.c:354 utils/adt/array_userfuncs.c:383 +#: utils/adt/array_userfuncs.c:411 #, c-format msgid "cannot concatenate incompatible arrays" msgstr "non è possibile concatenare array non compatibili" -#: utils/adt/array_userfuncs.c:267 +#: utils/adt/array_userfuncs.c:279 #, c-format msgid "Arrays with element types %s and %s are not compatible for concatenation." msgstr "Array con elementi di tipi %s e %s non sono compatibili per il concatenamento." -#: utils/adt/array_userfuncs.c:306 +#: utils/adt/array_userfuncs.c:318 #, c-format msgid "Arrays of %d and %d dimensions are not compatible for concatenation." msgstr "Array con dimensioni %d e %d non sono compatibili per il concatenamento." -#: utils/adt/array_userfuncs.c:343 +#: utils/adt/array_userfuncs.c:355 #, c-format msgid "Arrays with differing element dimensions are not compatible for concatenation." msgstr "Array con elementi dalle dimensioni diverse non sono compatibili per il concatenamento." -#: utils/adt/array_userfuncs.c:372 utils/adt/array_userfuncs.c:400 +#: utils/adt/array_userfuncs.c:384 utils/adt/array_userfuncs.c:412 #, c-format msgid "Arrays with differing dimensions are not compatible for concatenation." msgstr "Array con dimensioni diverse non sono compatibili per il concatenamento." -#: utils/adt/array_userfuncs.c:468 utils/adt/arrayfuncs.c:1284 -#: utils/adt/arrayfuncs.c:3357 utils/adt/arrayfuncs.c:5764 +#: utils/adt/array_userfuncs.c:480 utils/adt/arrayfuncs.c:1284 +#: utils/adt/arrayfuncs.c:3357 utils/adt/arrayfuncs.c:5754 #, c-format msgid "invalid number of dimensions: %d" msgstr "numero di dimensioni non valido: %d" -#: utils/adt/array_userfuncs.c:725 utils/adt/array_userfuncs.c:876 +#: utils/adt/array_userfuncs.c:737 utils/adt/array_userfuncs.c:889 #, c-format msgid "searching for elements in multidimensional arrays is not supported" msgstr "la ricerca di elementi in array multidimensionali non è supportata" -#: utils/adt/array_userfuncs.c:749 +#: utils/adt/array_userfuncs.c:761 #, c-format msgid "initial position must not be null" msgstr "la posizione iniziale non può essere nulla" @@ -17445,11 +17469,11 @@ msgstr "le sezioni di array a lunghezza fissa non sono implementate" #: utils/adt/arrayfuncs.c:2230 utils/adt/arrayfuncs.c:2252 #: utils/adt/arrayfuncs.c:2301 utils/adt/arrayfuncs.c:2537 -#: utils/adt/arrayfuncs.c:2848 utils/adt/arrayfuncs.c:5744 -#: utils/adt/arrayfuncs.c:5776 utils/adt/arrayfuncs.c:5793 +#: utils/adt/arrayfuncs.c:2848 utils/adt/arrayfuncs.c:5740 +#: utils/adt/arrayfuncs.c:5766 utils/adt/arrayfuncs.c:5777 #: utils/adt/json.c:2290 utils/adt/json.c:2365 utils/adt/jsonb.c:1369 -#: utils/adt/jsonb.c:1455 utils/adt/jsonfuncs.c:3537 -#: utils/adt/jsonfuncs.c:3582 utils/adt/jsonfuncs.c:3629 +#: utils/adt/jsonb.c:1455 utils/adt/jsonfuncs.c:3529 utils/adt/jsonfuncs.c:3574 +#: utils/adt/jsonfuncs.c:3621 #, c-format msgid "wrong number of array subscripts" msgstr "il numero di indici di array è errato" @@ -17501,67 +17525,57 @@ msgstr "non è possibile confrontare array con elementi di tipo diverso" msgid "could not identify a hash function for type %s" msgstr "non è stato possibile trovare una funzione di hash per il tipo %s" -#: utils/adt/arrayfuncs.c:5156 +#: utils/adt/arrayfuncs.c:5154 #, c-format msgid "data type %s is not an array type" msgstr "il tipo di dati %s non è un tipo array" -#: utils/adt/arrayfuncs.c:5213 +#: utils/adt/arrayfuncs.c:5209 #, c-format msgid "cannot accumulate null arrays" msgstr "non è possibile accumulare array nulli" -#: utils/adt/arrayfuncs.c:5241 +#: utils/adt/arrayfuncs.c:5237 #, c-format msgid "cannot accumulate empty arrays" msgstr "non è possibile accumulare array vuoti" -#: utils/adt/arrayfuncs.c:5270 utils/adt/arrayfuncs.c:5276 +#: utils/adt/arrayfuncs.c:5266 utils/adt/arrayfuncs.c:5272 #, c-format msgid "cannot accumulate arrays of different dimensionality" msgstr "non è possibile accumulare array di dimensioni diverse" -#: utils/adt/arrayfuncs.c:5642 utils/adt/arrayfuncs.c:5682 +#: utils/adt/arrayfuncs.c:5638 utils/adt/arrayfuncs.c:5678 #, c-format msgid "dimension array or low bound array cannot be null" msgstr "la dimensione dell'array o il suo limite inferiore non possono essere nulli" -#: utils/adt/arrayfuncs.c:5745 utils/adt/arrayfuncs.c:5777 +#: utils/adt/arrayfuncs.c:5741 utils/adt/arrayfuncs.c:5767 #, c-format msgid "Dimension array must be one dimensional." msgstr "L'array delle dimensioni deve avere una sola dimensione." -#: utils/adt/arrayfuncs.c:5750 utils/adt/arrayfuncs.c:5782 -#, c-format -msgid "wrong range of array subscripts" -msgstr "il range degli indici dell'array non è corretto" - -#: utils/adt/arrayfuncs.c:5751 utils/adt/arrayfuncs.c:5783 -#, c-format -msgid "Lower bound of dimension array must be one." -msgstr "Il valore minimo dell'array delle dimensioni deve essere uno." - -#: utils/adt/arrayfuncs.c:5756 utils/adt/arrayfuncs.c:5788 +#: utils/adt/arrayfuncs.c:5746 utils/adt/arrayfuncs.c:5772 #, c-format msgid "dimension values cannot be null" msgstr "i valori di dimensione non possono essere nulli" -#: utils/adt/arrayfuncs.c:5794 +#: utils/adt/arrayfuncs.c:5778 #, c-format msgid "Low bound array has different size than dimensions array." msgstr "L'array dei valori inferiori ha dimensione differente dal numero di dimensioni dell'array." -#: utils/adt/arrayfuncs.c:6040 +#: utils/adt/arrayfuncs.c:6024 #, c-format msgid "removing elements from multidimensional arrays is not supported" msgstr "la rimozione di elementi da array multidimensionali non è supportata" -#: utils/adt/arrayfuncs.c:6317 +#: utils/adt/arrayfuncs.c:6301 #, c-format msgid "thresholds must be one-dimensional array" msgstr "la soglia dev'essere un array monodimensionale" -#: utils/adt/arrayfuncs.c:6322 +#: utils/adt/arrayfuncs.c:6306 #, c-format msgid "thresholds array must not contain NULLs" msgstr "l'array delle soglie non può contenere NULL" @@ -17598,14 +17612,13 @@ msgstr "sintassi di input non valida per il tipo money: \"%s\"" #: utils/adt/cash.c:607 utils/adt/cash.c:657 utils/adt/cash.c:708 #: utils/adt/cash.c:757 utils/adt/cash.c:809 utils/adt/cash.c:859 -#: utils/adt/float.c:848 utils/adt/float.c:912 utils/adt/float.c:3268 -#: utils/adt/float.c:3331 utils/adt/geo_ops.c:4085 utils/adt/int.c:719 +#: utils/adt/float.c:855 utils/adt/float.c:919 utils/adt/float.c:3315 +#: utils/adt/float.c:3378 utils/adt/geo_ops.c:4093 utils/adt/int.c:719 #: utils/adt/int.c:861 utils/adt/int.c:969 utils/adt/int.c:1058 #: utils/adt/int.c:1097 utils/adt/int.c:1125 utils/adt/int8.c:597 #: utils/adt/int8.c:657 utils/adt/int8.c:897 utils/adt/int8.c:1005 -#: utils/adt/int8.c:1094 utils/adt/int8.c:1202 utils/adt/numeric.c:6800 -#: utils/adt/numeric.c:7089 utils/adt/numeric.c:8090 -#: utils/adt/timestamp.c:3446 +#: utils/adt/int8.c:1094 utils/adt/int8.c:1202 utils/adt/numeric.c:6818 +#: utils/adt/numeric.c:7107 utils/adt/numeric.c:8120 utils/adt/timestamp.c:3542 #, c-format msgid "division by zero" msgstr "divisione per zero" @@ -17615,7 +17628,7 @@ msgstr "divisione per zero" msgid "\"char\" out of range" msgstr "\"char\" fuori dall'intervallo consentito" -#: utils/adt/date.c:67 utils/adt/timestamp.c:94 utils/adt/varbit.c:52 +#: utils/adt/date.c:67 utils/adt/timestamp.c:95 utils/adt/varbit.c:52 #: utils/adt/varchar.c:45 #, c-format msgid "invalid type modifier" @@ -17631,29 +17644,29 @@ msgstr "la precisione di TIME(%d)%s non può essere negativa" msgid "TIME(%d)%s precision reduced to maximum allowed, %d" msgstr "la precisione di TIME(%d)%s è stata ridotta al massimo consentito (%d)" -#: utils/adt/date.c:141 utils/adt/datetime.c:1277 utils/adt/datetime.c:2148 +#: utils/adt/date.c:141 utils/adt/datetime.c:1278 utils/adt/datetime.c:2191 #, c-format msgid "date/time value \"current\" is no longer supported" msgstr "il valore \"current\" per i tipi date/time non è più supportato" -#: utils/adt/date.c:167 utils/adt/date.c:175 utils/adt/formatting.c:3535 -#: utils/adt/formatting.c:3544 +#: utils/adt/date.c:167 utils/adt/date.c:175 utils/adt/formatting.c:3529 +#: utils/adt/formatting.c:3538 #, c-format msgid "date out of range: \"%s\"" msgstr "data fuori dall'intervallo consentito: \"%s\"" #: utils/adt/date.c:222 utils/adt/date.c:456 utils/adt/date.c:480 -#: utils/adt/xml.c:2029 +#: utils/adt/xml.c:2031 #, c-format msgid "date out of range" msgstr "data fuori dall'intervallo consentito" -#: utils/adt/date.c:264 utils/adt/timestamp.c:593 +#: utils/adt/date.c:264 utils/adt/timestamp.c:594 #, c-format msgid "date field value out of range: %d-%02d-%02d" msgstr "valori del campo data fuori dall'intervallo consentito: %d-%02d-%02d" -#: utils/adt/date.c:271 utils/adt/date.c:280 utils/adt/timestamp.c:599 +#: utils/adt/date.c:271 utils/adt/date.c:280 utils/adt/timestamp.c:600 #, c-format msgid "date out of range: %d-%02d-%02d" msgstr "data fuori dall'intervallo consentito: %d-%02d-%02d" @@ -17671,32 +17684,32 @@ msgstr "data fuori dall'intervallo consentito per timestamp" #: utils/adt/date.c:1022 utils/adt/date.c:1068 utils/adt/date.c:1678 #: utils/adt/date.c:1714 utils/adt/date.c:1748 utils/adt/date.c:2592 -#: utils/adt/formatting.c:3410 utils/adt/formatting.c:3442 -#: utils/adt/formatting.c:3510 utils/adt/json.c:1534 utils/adt/json.c:1556 -#: utils/adt/jsonb.c:823 utils/adt/jsonb.c:847 utils/adt/nabstime.c:455 -#: utils/adt/nabstime.c:498 utils/adt/nabstime.c:528 utils/adt/nabstime.c:571 -#: utils/adt/timestamp.c:224 utils/adt/timestamp.c:268 -#: utils/adt/timestamp.c:726 utils/adt/timestamp.c:735 -#: utils/adt/timestamp.c:820 utils/adt/timestamp.c:860 -#: utils/adt/timestamp.c:3021 utils/adt/timestamp.c:3042 -#: utils/adt/timestamp.c:3055 utils/adt/timestamp.c:3064 -#: utils/adt/timestamp.c:3072 utils/adt/timestamp.c:3127 -#: utils/adt/timestamp.c:3150 utils/adt/timestamp.c:3163 -#: utils/adt/timestamp.c:3174 utils/adt/timestamp.c:3182 -#: utils/adt/timestamp.c:3756 utils/adt/timestamp.c:3885 -#: utils/adt/timestamp.c:3926 utils/adt/timestamp.c:4014 -#: utils/adt/timestamp.c:4060 utils/adt/timestamp.c:4171 -#: utils/adt/timestamp.c:4578 utils/adt/timestamp.c:4694 -#: utils/adt/timestamp.c:4704 utils/adt/timestamp.c:4800 -#: utils/adt/timestamp.c:4919 utils/adt/timestamp.c:4929 -#: utils/adt/timestamp.c:5250 utils/adt/timestamp.c:5264 -#: utils/adt/timestamp.c:5269 utils/adt/timestamp.c:5283 -#: utils/adt/timestamp.c:5366 utils/adt/timestamp.c:5398 -#: utils/adt/timestamp.c:5405 utils/adt/timestamp.c:5431 -#: utils/adt/timestamp.c:5435 utils/adt/timestamp.c:5504 -#: utils/adt/timestamp.c:5508 utils/adt/timestamp.c:5522 -#: utils/adt/timestamp.c:5560 utils/adt/xml.c:2051 utils/adt/xml.c:2058 -#: utils/adt/xml.c:2078 utils/adt/xml.c:2085 +#: utils/adt/datetime.c:1759 utils/adt/formatting.c:3404 +#: utils/adt/formatting.c:3436 utils/adt/formatting.c:3504 +#: utils/adt/json.c:1534 utils/adt/json.c:1556 utils/adt/jsonb.c:823 +#: utils/adt/jsonb.c:847 utils/adt/nabstime.c:455 utils/adt/nabstime.c:498 +#: utils/adt/nabstime.c:528 utils/adt/nabstime.c:571 utils/adt/timestamp.c:225 +#: utils/adt/timestamp.c:269 utils/adt/timestamp.c:727 +#: utils/adt/timestamp.c:736 utils/adt/timestamp.c:818 +#: utils/adt/timestamp.c:858 utils/adt/timestamp.c:3117 +#: utils/adt/timestamp.c:3138 utils/adt/timestamp.c:3151 +#: utils/adt/timestamp.c:3160 utils/adt/timestamp.c:3168 +#: utils/adt/timestamp.c:3223 utils/adt/timestamp.c:3246 +#: utils/adt/timestamp.c:3259 utils/adt/timestamp.c:3270 +#: utils/adt/timestamp.c:3278 utils/adt/timestamp.c:3852 +#: utils/adt/timestamp.c:3981 utils/adt/timestamp.c:4022 +#: utils/adt/timestamp.c:4110 utils/adt/timestamp.c:4156 +#: utils/adt/timestamp.c:4267 utils/adt/timestamp.c:4674 +#: utils/adt/timestamp.c:4790 utils/adt/timestamp.c:4800 +#: utils/adt/timestamp.c:4896 utils/adt/timestamp.c:5015 +#: utils/adt/timestamp.c:5025 utils/adt/timestamp.c:5277 +#: utils/adt/timestamp.c:5291 utils/adt/timestamp.c:5296 +#: utils/adt/timestamp.c:5310 utils/adt/timestamp.c:5359 +#: utils/adt/timestamp.c:5391 utils/adt/timestamp.c:5398 +#: utils/adt/timestamp.c:5424 utils/adt/timestamp.c:5428 +#: utils/adt/timestamp.c:5497 utils/adt/timestamp.c:5501 +#: utils/adt/timestamp.c:5515 utils/adt/timestamp.c:5553 utils/adt/xml.c:2053 +#: utils/adt/xml.c:2060 utils/adt/xml.c:2080 utils/adt/xml.c:2087 #, c-format msgid "timestamp out of range" msgstr "timestamp fuori dall'intervallo consentito" @@ -17717,7 +17730,7 @@ msgstr "abstime fuori dall'intervallo massimo per una data" msgid "time out of range" msgstr "ora fuori dall'intervallo consentito" -#: utils/adt/date.c:1326 utils/adt/timestamp.c:618 +#: utils/adt/date.c:1326 utils/adt/timestamp.c:619 #, c-format msgid "time field value out of range: %d:%02d:%02g" msgstr "campo temporale fuori dall'intervallo consentito: %d:%02d:%02g" @@ -17737,57 +17750,52 @@ msgstr "la differenza di fuso orario è fuori dall'intervallo consentito" msgid "\"time with time zone\" units \"%s\" not recognized" msgstr "unità \"%s\" di \"time with time zone\" non è riconosciuta" -#: utils/adt/date.c:2830 utils/adt/datetime.c:994 utils/adt/datetime.c:1874 -#: utils/adt/datetime.c:4700 utils/adt/timestamp.c:532 -#: utils/adt/timestamp.c:559 utils/adt/timestamp.c:5275 -#: utils/adt/timestamp.c:5514 +#: utils/adt/date.c:2830 utils/adt/datetime.c:995 utils/adt/datetime.c:1917 +#: utils/adt/datetime.c:4743 utils/adt/timestamp.c:533 +#: utils/adt/timestamp.c:560 utils/adt/timestamp.c:5302 +#: utils/adt/timestamp.c:5507 #, c-format msgid "time zone \"%s\" not recognized" msgstr "fuso orario \"%s\" non riconosciuto" -#: utils/adt/date.c:2870 utils/adt/timestamp.c:5351 utils/adt/timestamp.c:5545 +#: utils/adt/date.c:2870 utils/adt/timestamp.c:5344 utils/adt/timestamp.c:5538 #, c-format msgid "interval time zone \"%s\" must not include months or days" msgstr "l'intervallo di fusi orari \"%s\" non può contenere mesi o giorni" -#: utils/adt/datetime.c:1749 -#, c-format -msgid "time zone abbreviation \"%s\" is not used in time zone \"%s\"" -msgstr "l'abbreviazione di fuso orario \"%s\" non è usata nel fuso orario \"%s\"" - -#: utils/adt/datetime.c:3835 utils/adt/datetime.c:3842 +#: utils/adt/datetime.c:3878 utils/adt/datetime.c:3885 #, c-format msgid "date/time field value out of range: \"%s\"" msgstr "valore del campo date/time fuori dall'intervallo consentito: \"%s\"" -#: utils/adt/datetime.c:3844 +#: utils/adt/datetime.c:3887 #, c-format msgid "Perhaps you need a different \"datestyle\" setting." msgstr "Forse è necessario impostare un \"datestyle\" diverso." -#: utils/adt/datetime.c:3849 +#: utils/adt/datetime.c:3892 #, c-format msgid "interval field value out of range: \"%s\"" msgstr "valore del campo interval fuori dall'intervallo consentito: \"%s\"" -#: utils/adt/datetime.c:3855 +#: utils/adt/datetime.c:3898 #, c-format msgid "time zone displacement out of range: \"%s\"" msgstr "la differenza di fuso orario è fuori dall'intervallo consentito: \"%s\"" #. translator: first %s is inet or cidr -#: utils/adt/datetime.c:3862 utils/adt/float.c:454 utils/adt/float.c:537 -#: utils/adt/float.c:563 utils/adt/geo_ops.c:156 utils/adt/geo_ops.c:166 +#: utils/adt/datetime.c:3905 utils/adt/float.c:461 utils/adt/float.c:544 +#: utils/adt/float.c:570 utils/adt/geo_ops.c:156 utils/adt/geo_ops.c:166 #: utils/adt/geo_ops.c:178 utils/adt/geo_ops.c:210 utils/adt/geo_ops.c:255 #: utils/adt/geo_ops.c:265 utils/adt/geo_ops.c:935 utils/adt/geo_ops.c:1321 -#: utils/adt/geo_ops.c:1356 utils/adt/geo_ops.c:1364 utils/adt/geo_ops.c:3422 -#: utils/adt/geo_ops.c:4555 utils/adt/geo_ops.c:4571 utils/adt/geo_ops.c:4578 +#: utils/adt/geo_ops.c:1356 utils/adt/geo_ops.c:1364 utils/adt/geo_ops.c:3430 +#: utils/adt/geo_ops.c:4563 utils/adt/geo_ops.c:4579 utils/adt/geo_ops.c:4586 #: utils/adt/network.c:58 #, c-format msgid "invalid input syntax for type %s: \"%s\"" msgstr "sintassi di input non valida per il tipo %s: \"%s\"" -#: utils/adt/datetime.c:4702 +#: utils/adt/datetime.c:4745 #, c-format msgid "This time zone name appears in the configuration file for time zone abbreviation \"%s\"." msgstr "Il nome del fuso orario figura nel file di configurazione delle abbreviazioni di fuso orario \"%s\"." @@ -17802,22 +17810,22 @@ msgstr "puntatore al Datum non valido" msgid "could not open tablespace directory \"%s\": %m" msgstr "apertura della directory del tablespace \"%s\" fallita: %m" -#: utils/adt/dbsize.c:757 utils/adt/dbsize.c:776 utils/adt/dbsize.c:828 +#: utils/adt/dbsize.c:757 utils/adt/dbsize.c:825 #, c-format msgid "invalid size: \"%s\"" msgstr "dimensione non valida: \"%s\"" -#: utils/adt/dbsize.c:829 +#: utils/adt/dbsize.c:826 #, c-format msgid "Invalid size unit: \"%s\"." msgstr "Unità di dimensione non valida: \"%s\"." -#: utils/adt/dbsize.c:830 +#: utils/adt/dbsize.c:827 #, c-format msgid "Valid units are \"bytes\", \"kB\", \"MB\", \"GB\", and \"TB\"." msgstr "Le unità valide sono \"bytes\", \"kB\", \"MB\", \"GB\" e \"TB\"." -#: utils/adt/domains.c:85 +#: utils/adt/domains.c:86 #, c-format msgid "type %s is not a domain" msgstr "il tipo %s non è un dominio" @@ -17895,78 +17903,78 @@ msgstr "il valore è fuori dall'intervallo consentito: overflow" msgid "value out of range: underflow" msgstr "il valore è fuori dall'intervallo consentito: underflow" -#: utils/adt/float.c:237 utils/adt/float.c:311 utils/adt/float.c:335 +#: utils/adt/float.c:244 utils/adt/float.c:318 utils/adt/float.c:342 #, c-format msgid "invalid input syntax for type real: \"%s\"" msgstr "la sintassi in input per il tipo real non è valida: \"%s\"" -#: utils/adt/float.c:305 +#: utils/adt/float.c:312 #, c-format msgid "\"%s\" is out of range for type real" msgstr "\"%s\" è fuori dall'intervallo consentito per il tipo real" -#: utils/adt/float.c:530 +#: utils/adt/float.c:537 #, c-format msgid "\"%s\" is out of range for type double precision" msgstr "\"%s\" è fuori dall'intervallo consentito per il tipo double precision" -#: utils/adt/float.c:1239 utils/adt/float.c:1297 utils/adt/int.c:349 +#: utils/adt/float.c:1246 utils/adt/float.c:1304 utils/adt/int.c:349 #: utils/adt/int.c:775 utils/adt/int.c:804 utils/adt/int.c:825 #: utils/adt/int.c:845 utils/adt/int.c:879 utils/adt/int.c:1174 -#: utils/adt/int8.c:1323 utils/adt/numeric.c:3004 utils/adt/numeric.c:3013 +#: utils/adt/int8.c:1323 utils/adt/numeric.c:3000 utils/adt/numeric.c:3009 #, c-format msgid "smallint out of range" msgstr "il valore è fuori dall'intervallo consentito per il tipo smallint" -#: utils/adt/float.c:1423 utils/adt/numeric.c:7522 +#: utils/adt/float.c:1430 utils/adt/numeric.c:7540 #, c-format msgid "cannot take square root of a negative number" msgstr "non è possibile estrarre la radice quadrata di un numero negativo" -#: utils/adt/float.c:1465 utils/adt/numeric.c:2807 +#: utils/adt/float.c:1472 utils/adt/numeric.c:2803 #, c-format msgid "zero raised to a negative power is undefined" msgstr "zero elevato a potenza negativa non è definito" -#: utils/adt/float.c:1469 utils/adt/numeric.c:2813 +#: utils/adt/float.c:1476 utils/adt/numeric.c:2809 #, c-format msgid "a negative number raised to a non-integer power yields a complex result" msgstr "un numero negativo elevato a potenza non intera è un valore di tipo complesso" -#: utils/adt/float.c:1535 utils/adt/float.c:1565 utils/adt/numeric.c:7787 +#: utils/adt/float.c:1542 utils/adt/float.c:1572 utils/adt/numeric.c:7806 #, c-format msgid "cannot take logarithm of zero" msgstr "non è possibile calcolare il logaritmo di zero" -#: utils/adt/float.c:1539 utils/adt/float.c:1569 utils/adt/numeric.c:7791 +#: utils/adt/float.c:1546 utils/adt/float.c:1576 utils/adt/numeric.c:7810 #, c-format msgid "cannot take logarithm of a negative number" msgstr "non è possibile calcolare il logaritmo di un numero negativo" -#: utils/adt/float.c:1599 utils/adt/float.c:1629 utils/adt/float.c:1721 -#: utils/adt/float.c:1747 utils/adt/float.c:1774 utils/adt/float.c:1800 -#: utils/adt/float.c:1922 utils/adt/float.c:1957 utils/adt/float.c:2110 -#: utils/adt/float.c:2163 utils/adt/float.c:2226 utils/adt/float.c:2280 +#: utils/adt/float.c:1606 utils/adt/float.c:1636 utils/adt/float.c:1728 +#: utils/adt/float.c:1754 utils/adt/float.c:1781 utils/adt/float.c:1807 +#: utils/adt/float.c:1954 utils/adt/float.c:1989 utils/adt/float.c:2153 +#: utils/adt/float.c:2207 utils/adt/float.c:2271 utils/adt/float.c:2326 #, c-format msgid "input is out of range" msgstr "il valore di input è fuori dall'intervallo consentito" -#: utils/adt/float.c:3485 utils/adt/numeric.c:1447 +#: utils/adt/float.c:3532 utils/adt/numeric.c:1443 #, c-format msgid "count must be greater than zero" msgstr "il valore count dev'essere maggiore di zero" -#: utils/adt/float.c:3490 utils/adt/numeric.c:1454 +#: utils/adt/float.c:3537 utils/adt/numeric.c:1450 #, c-format msgid "operand, lower bound, and upper bound cannot be NaN" msgstr "l'operando e i valori minimo e massimo non possono essere NaN" -#: utils/adt/float.c:3496 +#: utils/adt/float.c:3543 #, c-format msgid "lower and upper bounds must be finite" msgstr "i valori minimo e massimo devono essere finiti" -#: utils/adt/float.c:3534 utils/adt/numeric.c:1467 +#: utils/adt/float.c:3581 utils/adt/numeric.c:1463 #, c-format msgid "lower bound cannot equal upper bound" msgstr "il valore minimo non può essere uguale a quello massimo" @@ -17981,203 +17989,203 @@ msgstr "la specifica di formato per un intervallo non è valida" msgid "Intervals are not tied to specific calendar dates." msgstr "Gli intervalli non sono legati a specifiche date di calendario." -#: utils/adt/formatting.c:1059 +#: utils/adt/formatting.c:1058 #, c-format msgid "\"EEEE\" must be the last pattern used" msgstr "\"EEEE\" dev'essere l'ultimo pattern usato" -#: utils/adt/formatting.c:1067 +#: utils/adt/formatting.c:1066 #, c-format msgid "\"9\" must be ahead of \"PR\"" msgstr "\"9\" dev'essere più avanti di \"PR\"" -#: utils/adt/formatting.c:1083 +#: utils/adt/formatting.c:1082 #, c-format msgid "\"0\" must be ahead of \"PR\"" msgstr "\"0\" dev'essere più avanti di \"PR\"" -#: utils/adt/formatting.c:1110 +#: utils/adt/formatting.c:1109 #, c-format msgid "multiple decimal points" msgstr "troppi punti decimali" -#: utils/adt/formatting.c:1114 utils/adt/formatting.c:1197 +#: utils/adt/formatting.c:1113 utils/adt/formatting.c:1196 #, c-format msgid "cannot use \"V\" and decimal point together" msgstr "non è possibile usare \"V\" ed un punto decimale insieme" -#: utils/adt/formatting.c:1126 +#: utils/adt/formatting.c:1125 #, c-format msgid "cannot use \"S\" twice" msgstr "non è possibile usare \"S\" due volte" -#: utils/adt/formatting.c:1130 +#: utils/adt/formatting.c:1129 #, c-format msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together" msgstr "non è possibile usare sia \"S\" che \"PL\"/\"MI\"/\"SG\"/\"PR\" insieme" -#: utils/adt/formatting.c:1150 +#: utils/adt/formatting.c:1149 #, c-format msgid "cannot use \"S\" and \"MI\" together" msgstr "non è possibile usare sia \"S\" che \"MI\" insieme" -#: utils/adt/formatting.c:1160 +#: utils/adt/formatting.c:1159 #, c-format msgid "cannot use \"S\" and \"PL\" together" msgstr "non è possibile usare sia \"S\" che \"PL\" insieme" -#: utils/adt/formatting.c:1170 +#: utils/adt/formatting.c:1169 #, c-format msgid "cannot use \"S\" and \"SG\" together" msgstr "non è possibile usare sia \"S\" che \"SG\" insieme" -#: utils/adt/formatting.c:1179 +#: utils/adt/formatting.c:1178 #, c-format msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together" msgstr "non è possibile usare sia \"PR\" che \"S\"/\"PL\"/\"MI\"/\"SG\" insieme" -#: utils/adt/formatting.c:1205 +#: utils/adt/formatting.c:1204 #, c-format msgid "cannot use \"EEEE\" twice" msgstr "non è possibile usare \"EEEE\" due volte" -#: utils/adt/formatting.c:1211 +#: utils/adt/formatting.c:1210 #, c-format msgid "\"EEEE\" is incompatible with other formats" msgstr "\"EEEE\" non è compatibile con altri formati" -#: utils/adt/formatting.c:1212 +#: utils/adt/formatting.c:1211 #, c-format msgid "\"EEEE\" may only be used together with digit and decimal point patterns." msgstr "\"EEEE\" può essere usato soltanto insieme a pattern di cifre e punti decimali." -#: utils/adt/formatting.c:1412 +#: utils/adt/formatting.c:1411 #, c-format msgid "\"%s\" is not a number" msgstr "\"%s\" non è un numero" -#: utils/adt/formatting.c:1513 utils/adt/formatting.c:1565 +#: utils/adt/formatting.c:1512 utils/adt/formatting.c:1564 #, c-format msgid "could not determine which collation to use for lower() function" msgstr "non è stato possibile determinare quale ordinamento usare per la funzione lower()" -#: utils/adt/formatting.c:1633 utils/adt/formatting.c:1685 +#: utils/adt/formatting.c:1632 utils/adt/formatting.c:1684 #, c-format msgid "could not determine which collation to use for upper() function" msgstr "non è stato possibile determinare quale ordinamento usare per la funzione upper()" -#: utils/adt/formatting.c:1754 utils/adt/formatting.c:1818 +#: utils/adt/formatting.c:1753 utils/adt/formatting.c:1817 #, c-format msgid "could not determine which collation to use for initcap() function" msgstr "non è stato possibile determinare quale ordinamento usare per la funzione initcap()" -#: utils/adt/formatting.c:2122 +#: utils/adt/formatting.c:2114 #, c-format msgid "invalid combination of date conventions" msgstr "la combinazione di convenzioni di date non è valida" -#: utils/adt/formatting.c:2123 +#: utils/adt/formatting.c:2115 #, c-format msgid "Do not mix Gregorian and ISO week date conventions in a formatting template." msgstr "Non è possibile usare la convenzione gregoriana e ISO per settimane in un modello di formattazione." -#: utils/adt/formatting.c:2140 +#: utils/adt/formatting.c:2132 #, c-format msgid "conflicting values for \"%s\" field in formatting string" msgstr "sono presenti valori contraddittori per il campo \"%s\" nella stringa di formattazione" -#: utils/adt/formatting.c:2142 +#: utils/adt/formatting.c:2134 #, c-format msgid "This value contradicts a previous setting for the same field type." msgstr "Questo valore contraddice una impostazione precedente per lo stesso tipo di campo" -#: utils/adt/formatting.c:2203 +#: utils/adt/formatting.c:2195 #, c-format msgid "source string too short for \"%s\" formatting field" msgstr "la stringa di origine è troppo corta per il campo di formattazione \"%s\"" -#: utils/adt/formatting.c:2205 +#: utils/adt/formatting.c:2197 #, c-format msgid "Field requires %d characters, but only %d remain." msgstr "Il campo necessita di %d caratteri ma ne restano solo %d." -#: utils/adt/formatting.c:2208 utils/adt/formatting.c:2222 +#: utils/adt/formatting.c:2200 utils/adt/formatting.c:2214 #, c-format msgid "If your source string is not fixed-width, try using the \"FM\" modifier." msgstr "Se la stringa di partenza non ha lunghezza fissa, prova ad usare il modificatore \"FM\"." -#: utils/adt/formatting.c:2218 utils/adt/formatting.c:2231 -#: utils/adt/formatting.c:2361 +#: utils/adt/formatting.c:2210 utils/adt/formatting.c:2223 +#: utils/adt/formatting.c:2353 #, c-format msgid "invalid value \"%s\" for \"%s\"" msgstr "valore \"%s\" per \"%s\" non valido" -#: utils/adt/formatting.c:2220 +#: utils/adt/formatting.c:2212 #, c-format msgid "Field requires %d characters, but only %d could be parsed." msgstr "Il campo necessita di %d caratteri, ma è stato possibile analizzarne solo %d." -#: utils/adt/formatting.c:2233 +#: utils/adt/formatting.c:2225 #, c-format msgid "Value must be an integer." msgstr "Il valore deve essere un integer." -#: utils/adt/formatting.c:2238 +#: utils/adt/formatting.c:2230 #, c-format msgid "value for \"%s\" in source string is out of range" msgstr "il valore \"%s\" nella stringa di origine è fuori dall'intervallo consentito" -#: utils/adt/formatting.c:2240 +#: utils/adt/formatting.c:2232 #, c-format msgid "Value must be in the range %d to %d." msgstr "Il valore deve essere compreso fra %d e %d." -#: utils/adt/formatting.c:2363 +#: utils/adt/formatting.c:2355 #, c-format msgid "The given value did not match any of the allowed values for this field." msgstr "Il valore fornito non corrisponde a nessuno di quelli consentiti per questo campo." -#: utils/adt/formatting.c:2558 utils/adt/formatting.c:2578 -#: utils/adt/formatting.c:2598 utils/adt/formatting.c:2618 -#: utils/adt/formatting.c:2637 utils/adt/formatting.c:2656 -#: utils/adt/formatting.c:2680 utils/adt/formatting.c:2698 -#: utils/adt/formatting.c:2716 utils/adt/formatting.c:2734 -#: utils/adt/formatting.c:2751 utils/adt/formatting.c:2768 +#: utils/adt/formatting.c:2550 utils/adt/formatting.c:2570 +#: utils/adt/formatting.c:2590 utils/adt/formatting.c:2610 +#: utils/adt/formatting.c:2629 utils/adt/formatting.c:2648 +#: utils/adt/formatting.c:2672 utils/adt/formatting.c:2690 +#: utils/adt/formatting.c:2708 utils/adt/formatting.c:2726 +#: utils/adt/formatting.c:2743 utils/adt/formatting.c:2760 #, c-format msgid "localized string format value too long" msgstr "valore del formato della stringa localizzata troppo lungo" -#: utils/adt/formatting.c:3055 +#: utils/adt/formatting.c:3047 #, c-format msgid "\"TZ\"/\"tz\"/\"OF\" format patterns are not supported in to_date" msgstr "i pattern di formato \"TZ\"/\"tz\"/\"OF\" non sono supportati in to_date" -#: utils/adt/formatting.c:3163 +#: utils/adt/formatting.c:3156 #, c-format msgid "invalid input string for \"Y,YYY\"" msgstr "stringa di input non valida per \"Y,YYY\"" -#: utils/adt/formatting.c:3674 +#: utils/adt/formatting.c:3668 #, c-format msgid "hour \"%d\" is invalid for the 12-hour clock" msgstr "l'ora \"%d\" non è valida su un orologio a 12 ore" -#: utils/adt/formatting.c:3676 +#: utils/adt/formatting.c:3670 #, c-format msgid "Use the 24-hour clock, or give an hour between 1 and 12." msgstr "Usa l'orologio a 24 ore o fornisci un'ora compresa fra 1 e 12." -#: utils/adt/formatting.c:3771 +#: utils/adt/formatting.c:3765 #, c-format msgid "cannot calculate day of year without year information" msgstr "non è possibile calcolare il giorno dell'anno senza informazioni sull'anno" -#: utils/adt/formatting.c:4620 +#: utils/adt/formatting.c:4614 #, c-format msgid "\"EEEE\" not supported for input" msgstr "l'uso di \"EEEE\" non è supportato per l'input" -#: utils/adt/formatting.c:4632 +#: utils/adt/formatting.c:4626 #, c-format msgid "\"RN\" not supported for input" msgstr "l'uso di \"RN\" non è supportato per l'input" @@ -18234,8 +18242,8 @@ msgstr "specificazione di linea non valida: A e B non possono essere entrambi ze msgid "invalid line specification: must be two distinct points" msgstr "specificazione di linea non valida: devono essere due punti distinti" -#: utils/adt/geo_ops.c:1342 utils/adt/geo_ops.c:3432 utils/adt/geo_ops.c:4245 -#: utils/adt/geo_ops.c:5173 +#: utils/adt/geo_ops.c:1342 utils/adt/geo_ops.c:3440 utils/adt/geo_ops.c:4253 +#: utils/adt/geo_ops.c:5181 #, c-format msgid "too many points requested" msgstr "il numero di punti richiesti è eccessivo" @@ -18250,57 +18258,57 @@ msgstr "il numero di punti nel valore del \"path\" esterno non è valido" msgid "function \"dist_lb\" not implemented" msgstr "la funzione \"dist_lb\" non è implementata" -#: utils/adt/geo_ops.c:3007 +#: utils/adt/geo_ops.c:3015 #, c-format msgid "function \"close_sl\" not implemented" msgstr "la funzione \"close_sl\" non è implementata" -#: utils/adt/geo_ops.c:3109 +#: utils/adt/geo_ops.c:3117 #, c-format msgid "function \"close_lb\" not implemented" msgstr "la funzione \"close_lb\" non è implementata" -#: utils/adt/geo_ops.c:3398 +#: utils/adt/geo_ops.c:3406 #, c-format msgid "cannot create bounding box for empty polygon" msgstr "non è possibile creare un bounding box per il poligono vuoto" -#: utils/adt/geo_ops.c:3479 +#: utils/adt/geo_ops.c:3487 #, c-format msgid "invalid number of points in external \"polygon\" value" msgstr "il numero di punti nel valore \"polygon\" esterno non è valido" -#: utils/adt/geo_ops.c:4004 +#: utils/adt/geo_ops.c:4012 #, c-format msgid "function \"poly_distance\" not implemented" msgstr "la funzione \"poly_distance\" non è implementata" -#: utils/adt/geo_ops.c:4357 +#: utils/adt/geo_ops.c:4365 #, c-format msgid "function \"path_center\" not implemented" msgstr "la funzione \"path_center\" non è implementata" -#: utils/adt/geo_ops.c:4374 +#: utils/adt/geo_ops.c:4382 #, c-format msgid "open path cannot be converted to polygon" msgstr "un path aperto non può essere convertito in un poligono" -#: utils/adt/geo_ops.c:4623 +#: utils/adt/geo_ops.c:4631 #, c-format msgid "invalid radius in external \"circle\" value" msgstr "il raggio nel valore esterno di \"circle\" non è valido" -#: utils/adt/geo_ops.c:5159 +#: utils/adt/geo_ops.c:5167 #, c-format msgid "cannot convert circle with radius zero to polygon" msgstr "non è possibile convertire un cerchio con raggio nullo in un poligono" -#: utils/adt/geo_ops.c:5164 +#: utils/adt/geo_ops.c:5172 #, c-format msgid "must request at least 2 points" msgstr "devono essere richiesti almeno 2 punti" -#: utils/adt/geo_ops.c:5208 +#: utils/adt/geo_ops.c:5216 #, c-format msgid "cannot convert empty polygon to circle" msgstr "non è possibile convertire un poligono vuoto in un cerchio" @@ -18320,8 +18328,8 @@ msgstr "dati int2vector non validi" msgid "oidvector has too many elements" msgstr "ci sono troppi elementi nell'oidvector" -#: utils/adt/int.c:1362 utils/adt/int8.c:1460 utils/adt/numeric.c:1355 -#: utils/adt/timestamp.c:5611 utils/adt/timestamp.c:5692 +#: utils/adt/int.c:1362 utils/adt/int8.c:1460 utils/adt/numeric.c:1351 +#: utils/adt/timestamp.c:5604 utils/adt/timestamp.c:5685 #, c-format msgid "step size cannot equal zero" msgstr "il valore del passo non può essere uguale a zero" @@ -18345,8 +18353,8 @@ msgstr "il valore \"%s\" è fuori dall'intervallo consentito per il tipo bigint" #: utils/adt/int8.c:964 utils/adt/int8.c:991 utils/adt/int8.c:1031 #: utils/adt/int8.c:1052 utils/adt/int8.c:1079 utils/adt/int8.c:1112 #: utils/adt/int8.c:1140 utils/adt/int8.c:1161 utils/adt/int8.c:1188 -#: utils/adt/int8.c:1361 utils/adt/int8.c:1400 utils/adt/numeric.c:2959 -#: utils/adt/varbit.c:1645 +#: utils/adt/int8.c:1361 utils/adt/int8.c:1400 utils/adt/numeric.c:2955 +#: utils/adt/varbit.c:1655 #, c-format msgid "bigint out of range" msgstr "bigint fuori dall'intervallo consentito" @@ -18576,14 +18584,14 @@ msgid "total size of jsonb object elements exceeds the maximum of %u bytes" msgstr "la dimensione totale degli elementi dell'oggetto jsonb supera il massimo di %u byte" #: utils/adt/jsonfuncs.c:305 utils/adt/jsonfuncs.c:470 -#: utils/adt/jsonfuncs.c:2065 utils/adt/jsonfuncs.c:2506 -#: utils/adt/jsonfuncs.c:3012 +#: utils/adt/jsonfuncs.c:2057 utils/adt/jsonfuncs.c:2498 +#: utils/adt/jsonfuncs.c:3004 #, c-format msgid "cannot call %s on a scalar" msgstr "non è possibile eseguire %s su uno scalare" #: utils/adt/jsonfuncs.c:310 utils/adt/jsonfuncs.c:457 -#: utils/adt/jsonfuncs.c:2495 +#: utils/adt/jsonfuncs.c:2487 #, c-format msgid "cannot call %s on an array" msgstr "non è possibile eseguire %s su un array" @@ -18603,98 +18611,98 @@ msgstr "non è possibile ottenere la lunghezza di un oggetto che non è un array msgid "cannot call %s on a non-object" msgstr "non è possibile eseguire %s su un argomento che non è un oggetto" -#: utils/adt/jsonfuncs.c:1491 utils/adt/jsonfuncs.c:2178 -#: utils/adt/jsonfuncs.c:2715 +#: utils/adt/jsonfuncs.c:1491 utils/adt/jsonfuncs.c:2170 +#: utils/adt/jsonfuncs.c:2707 #, c-format msgid "function returning record called in context that cannot accept type record" msgstr "funzione che restituisce record eseguita in un contesto che non può accettare il tipo record" -#: utils/adt/jsonfuncs.c:1734 +#: utils/adt/jsonfuncs.c:1730 #, c-format msgid "cannot deconstruct an array as an object" msgstr "non è possibile decostruire un array come un oggetto" -#: utils/adt/jsonfuncs.c:1746 +#: utils/adt/jsonfuncs.c:1742 #, c-format msgid "cannot deconstruct a scalar" msgstr "non è possibile decostruire uno scalare" -#: utils/adt/jsonfuncs.c:1792 +#: utils/adt/jsonfuncs.c:1788 #, c-format msgid "cannot extract elements from a scalar" msgstr "non è possibile estrarre elementi da uno scalare" -#: utils/adt/jsonfuncs.c:1796 +#: utils/adt/jsonfuncs.c:1792 #, c-format msgid "cannot extract elements from an object" msgstr "non è possibile estrarre elementi da un oggetto" -#: utils/adt/jsonfuncs.c:2052 utils/adt/jsonfuncs.c:2811 +#: utils/adt/jsonfuncs.c:2044 utils/adt/jsonfuncs.c:2803 #, c-format msgid "cannot call %s on a non-array" msgstr "non è possibile eseguire %s su un argomento che non è un array" -#: utils/adt/jsonfuncs.c:2139 utils/adt/jsonfuncs.c:2691 +#: utils/adt/jsonfuncs.c:2131 utils/adt/jsonfuncs.c:2683 #, c-format msgid "first argument of %s must be a row type" msgstr "il primo elemento di %s deve essere di tipo riga" -#: utils/adt/jsonfuncs.c:2180 +#: utils/adt/jsonfuncs.c:2172 #, c-format msgid "Try calling the function in the FROM clause using a column definition list." msgstr "Prova ad eseguire la funzione nella clausola FROM usando una lista di definizioni di colonne." -#: utils/adt/jsonfuncs.c:2827 utils/adt/jsonfuncs.c:2994 +#: utils/adt/jsonfuncs.c:2819 utils/adt/jsonfuncs.c:2986 #, c-format msgid "argument of %s must be an array of objects" msgstr "l'argomento di %s deve essere un array di oggetti" -#: utils/adt/jsonfuncs.c:2851 +#: utils/adt/jsonfuncs.c:2843 #, c-format msgid "cannot call %s on an object" msgstr "non è possibile eseguire %s su un oggetto" -#: utils/adt/jsonfuncs.c:3418 utils/adt/jsonfuncs.c:3471 +#: utils/adt/jsonfuncs.c:3410 utils/adt/jsonfuncs.c:3463 #, c-format msgid "cannot delete from scalar" msgstr "non è possibile eliminare da uno scalare" -#: utils/adt/jsonfuncs.c:3476 +#: utils/adt/jsonfuncs.c:3468 #, c-format msgid "cannot delete from object using integer index" msgstr "non è possibile eliminare da un oggetto usando numeri interi come indici" -#: utils/adt/jsonfuncs.c:3542 utils/adt/jsonfuncs.c:3634 +#: utils/adt/jsonfuncs.c:3534 utils/adt/jsonfuncs.c:3626 #, c-format msgid "cannot set path in scalar" msgstr "non è possibile impostare un percorso in uno scalare" -#: utils/adt/jsonfuncs.c:3587 +#: utils/adt/jsonfuncs.c:3579 #, c-format msgid "cannot delete path in scalar" msgstr "non è possibile eliminare un percorso in uno scalare" -#: utils/adt/jsonfuncs.c:3757 +#: utils/adt/jsonfuncs.c:3749 #, c-format msgid "invalid concatenation of jsonb objects" msgstr "concatenazione invalida di oggetti jsonb" -#: utils/adt/jsonfuncs.c:3791 +#: utils/adt/jsonfuncs.c:3783 #, c-format msgid "path element at position %d is null" msgstr "l'elemento di percorso in posizione %d è nullo" -#: utils/adt/jsonfuncs.c:3877 +#: utils/adt/jsonfuncs.c:3869 #, c-format msgid "cannot replace existing key" msgstr "non è possibile sostituire una chiave esistente" -#: utils/adt/jsonfuncs.c:3878 +#: utils/adt/jsonfuncs.c:3870 #, c-format msgid "Try using the function jsonb_set to replace key value." msgstr "Prova ad utilizzare la funzione jsonb_set per rimpiazzare il valore della chiave." -#: utils/adt/jsonfuncs.c:3960 +#: utils/adt/jsonfuncs.c:3952 #, c-format msgid "path element at position %d is not an integer: \"%s\"" msgstr "l'elemento di percorso in posizione %d non è un intero: \"%s\"" @@ -18704,7 +18712,7 @@ msgstr "l'elemento di percorso in posizione %d non è un intero: \"%s\"" msgid "levenshtein argument exceeds maximum length of %d characters" msgstr "L'argomento levenshtein supera la lunghezza massima di %d caratteri" -#: utils/adt/like.c:212 utils/adt/selfuncs.c:5329 +#: utils/adt/like.c:212 utils/adt/selfuncs.c:5433 #, c-format msgid "could not determine which collation to use for ILIKE" msgstr "non è stato possibile determinare quale ordinamento usare per ILIKE" @@ -18818,13 +18826,13 @@ msgstr "L'identificativo non può essere vuoto." #: utils/adt/misc.c:852 #, c-format -msgid "No valid identifier before \".\" symbol." -msgstr "L'identificativo prima del simbolo \".\" non è valido." +msgid "No valid identifier before \".\"." +msgstr "L'identificativo prima del \".\" non è valido." #: utils/adt/misc.c:858 #, c-format -msgid "No valid identifier after \".\" symbol." -msgstr "L'identificativo dopo il simbolo \".\" non è valido." +msgid "No valid identifier after \".\"." +msgstr "L'identificativo dopo il \".\" non è valido." #: utils/adt/nabstime.c:136 #, c-format @@ -18925,94 +18933,90 @@ msgstr "il risultato è fuori dall'intervallo consentito" msgid "cannot subtract inet values of different sizes" msgstr "non è possibile sottrarre valori di tipo inet di dimensione diversa" -#: utils/adt/numeric.c:542 utils/adt/numeric.c:569 utils/adt/numeric.c:5394 -#: utils/adt/numeric.c:5417 utils/adt/numeric.c:5441 utils/adt/numeric.c:5448 +#: utils/adt/numeric.c:542 utils/adt/numeric.c:569 utils/adt/numeric.c:5405 +#: utils/adt/numeric.c:5428 utils/adt/numeric.c:5452 #, c-format msgid "invalid input syntax for type numeric: \"%s\"" msgstr "la sintassi di input non è valida per il tipo numeric: \"%s\"" -#: utils/adt/numeric.c:759 -#, c-format -msgid "invalid length in external \"numeric\" value" -msgstr "la lunghezza nel valore \"numeric\" esterno non è valida" - -#: utils/adt/numeric.c:772 +#: utils/adt/numeric.c:768 #, c-format msgid "invalid sign in external \"numeric\" value" msgstr "il segno nel valore \"numeric\" esterno non è valido" -#: utils/adt/numeric.c:778 +#: utils/adt/numeric.c:774 #, c-format msgid "invalid scale in external \"numeric\" value" msgstr "la scala nel valore \"numeric\" esterno non è valida" -#: utils/adt/numeric.c:787 +#: utils/adt/numeric.c:783 #, c-format msgid "invalid digit in external \"numeric\" value" msgstr "una delle cifre nel valore \"numeric\" esterno non è valida" -#: utils/adt/numeric.c:978 utils/adt/numeric.c:992 +#: utils/adt/numeric.c:974 utils/adt/numeric.c:988 #, c-format msgid "NUMERIC precision %d must be between 1 and %d" msgstr "la precisione di NUMERIC (%d) deve essere compresa fra 1 e %d" -#: utils/adt/numeric.c:983 +#: utils/adt/numeric.c:979 #, c-format msgid "NUMERIC scale %d must be between 0 and precision %d" msgstr "il numero di cifre decimali di NUMERIC (%d) deve essere compreso fra 0 e la precisione %d" -#: utils/adt/numeric.c:1001 +#: utils/adt/numeric.c:997 #, c-format msgid "invalid NUMERIC type modifier" msgstr "modificatore del tipo NUMERIC non valido" -#: utils/adt/numeric.c:1333 +#: utils/adt/numeric.c:1329 #, c-format msgid "start value cannot be NaN" msgstr "il valore d'inizio non può essere NaN" -#: utils/adt/numeric.c:1338 +#: utils/adt/numeric.c:1334 #, c-format msgid "stop value cannot be NaN" msgstr "il valore di fine non può essere NaN" -#: utils/adt/numeric.c:1348 +#: utils/adt/numeric.c:1344 #, c-format msgid "step size cannot be NaN" msgstr "la dimensione dell'intervallo non può essere NaN" -#: utils/adt/numeric.c:2543 utils/adt/numeric.c:5894 utils/adt/numeric.c:7597 -#: utils/adt/numeric.c:8126 utils/adt/numeric.c:8199 +#: utils/adt/numeric.c:2539 utils/adt/numeric.c:5467 utils/adt/numeric.c:5912 +#: utils/adt/numeric.c:7616 utils/adt/numeric.c:8041 utils/adt/numeric.c:8156 +#: utils/adt/numeric.c:8229 #, c-format msgid "value overflows numeric format" msgstr "il valore causa un overflow nel formato numeric" -#: utils/adt/numeric.c:2885 +#: utils/adt/numeric.c:2881 #, c-format msgid "cannot convert NaN to integer" msgstr "non è possibile convertire NaN in un integer" -#: utils/adt/numeric.c:2951 +#: utils/adt/numeric.c:2947 #, c-format msgid "cannot convert NaN to bigint" msgstr "non è possibile convertire NaN in un bigint" -#: utils/adt/numeric.c:2996 +#: utils/adt/numeric.c:2992 #, c-format msgid "cannot convert NaN to smallint" msgstr "non è possibile convertire NaN in uno smallint" -#: utils/adt/numeric.c:5964 +#: utils/adt/numeric.c:5982 #, c-format msgid "numeric field overflow" msgstr "il campo numeric causa un overflow" -#: utils/adt/numeric.c:5965 +#: utils/adt/numeric.c:5983 #, c-format msgid "A field with precision %d, scale %d must round to an absolute value less than %s%d." msgstr "Un campo con precisione %d e %d cifre decimali deve arrotondarsi ad un valore assoluto inferiore a %s%d." -#: utils/adt/numeric.c:6236 utils/adt/numeric.c:6262 +#: utils/adt/numeric.c:6254 utils/adt/numeric.c:6280 #, c-format msgid "invalid input syntax for type double precision: \"%s\"" msgstr "la sintassi in input per il tipo double precision non è valida: \"%s\"" @@ -19073,37 +19077,37 @@ msgstr "non sono consentiti caratteri nulli" msgid "percentile value %g is not between 0 and 1" msgstr "il valore percentile %g non è tra 0 e 1" -#: utils/adt/pg_locale.c:917 +#: utils/adt/pg_locale.c:1029 #, c-format msgid "Apply system library package updates." msgstr "Applica gli aggiornamenti ai pacchetti di sistema." -#: utils/adt/pg_locale.c:1122 +#: utils/adt/pg_locale.c:1234 #, c-format msgid "could not create locale \"%s\": %m" msgstr "creazione del locale \"%s\" fallita: %m" -#: utils/adt/pg_locale.c:1125 +#: utils/adt/pg_locale.c:1237 #, c-format msgid "The operating system could not find any locale data for the locale name \"%s\"." msgstr "Il sistema operativo non ha trovato dati di locale per il locale di nome \"%s\"." -#: utils/adt/pg_locale.c:1212 +#: utils/adt/pg_locale.c:1324 #, c-format msgid "collations with different collate and ctype values are not supported on this platform" msgstr "le collazioni con tipi diversi di ordinamento e ctype non sono supportati su questa piattaforma" -#: utils/adt/pg_locale.c:1227 +#: utils/adt/pg_locale.c:1339 #, c-format msgid "nondefault collations are not supported on this platform" msgstr "le collazioni non predefinite non sono supportate su questa piattaforma" -#: utils/adt/pg_locale.c:1398 +#: utils/adt/pg_locale.c:1510 #, c-format msgid "invalid multibyte character for locale" msgstr "carattere multibyte non valido per il locale" -#: utils/adt/pg_locale.c:1399 +#: utils/adt/pg_locale.c:1511 #, c-format msgid "The server's LC_CTYPE locale is probably incompatible with the database encoding." msgstr "Il locale LC_CTYPE del server probabilmente non è compatibile con la codifica del database." @@ -19118,7 +19122,7 @@ msgstr "sintassi di input non valida per il tipo pg_lsn: \"%s\"" msgid "function can only be called when server is in binary upgrade mode" msgstr "la funzione può essere richiamata solo quando il server è in modalità di aggiornamento binario" -#: utils/adt/pgstatfuncs.c:569 +#: utils/adt/pgstatfuncs.c:571 #, c-format msgid "invalid command name: \"%s\"" msgstr "nome di comando non valido: \"%s\"" @@ -19267,7 +19271,7 @@ msgstr "non è possibile accettare un valore del tipo %s" #: utils/adt/pseudotypes.c:647 utils/adt/pseudotypes.c:673 #, c-format msgid "cannot output a value of type %s" -msgstr "non è possibile mostrare un valore del tipo %s" +msgstr "non è possibile emettere un valore del tipo %s" #: utils/adt/rangetypes.c:405 #, c-format @@ -19359,18 +19363,18 @@ msgstr "più di una funzione si chiama \"%s\"" msgid "more than one operator named %s" msgstr "più di un operatore si chiama %s" -#: utils/adt/regproc.c:774 utils/adt/regproc.c:815 gram.y:7292 +#: utils/adt/regproc.c:774 utils/adt/regproc.c:815 gram.y:7302 #, c-format msgid "missing argument" msgstr "argomento mancante" -#: utils/adt/regproc.c:775 utils/adt/regproc.c:816 gram.y:7293 +#: utils/adt/regproc.c:775 utils/adt/regproc.c:816 gram.y:7303 #, c-format msgid "Use NONE to denote the missing argument of a unary operator." msgstr "Usa NONE per indicare l'argomento mancante in un operatore unario." #: utils/adt/regproc.c:779 utils/adt/regproc.c:820 utils/adt/regproc.c:2006 -#: utils/adt/ruleutils.c:8173 utils/adt/ruleutils.c:8298 +#: utils/adt/ruleutils.c:8367 utils/adt/ruleutils.c:8536 #, c-format msgid "too many arguments" msgstr "troppi argomenti" @@ -19407,84 +19411,84 @@ msgstr "era atteso il nome di un tipo" msgid "improper type name" msgstr "il nome del tipo non è corretto" -#: utils/adt/ri_triggers.c:316 utils/adt/ri_triggers.c:373 -#: utils/adt/ri_triggers.c:792 utils/adt/ri_triggers.c:1015 -#: utils/adt/ri_triggers.c:1171 utils/adt/ri_triggers.c:1352 -#: utils/adt/ri_triggers.c:1517 utils/adt/ri_triggers.c:1693 -#: utils/adt/ri_triggers.c:1873 utils/adt/ri_triggers.c:2064 -#: utils/adt/ri_triggers.c:2122 utils/adt/ri_triggers.c:2227 -#: utils/adt/ri_triggers.c:2404 gram.y:3345 +#: utils/adt/ri_triggers.c:314 utils/adt/ri_triggers.c:371 +#: utils/adt/ri_triggers.c:790 utils/adt/ri_triggers.c:1013 +#: utils/adt/ri_triggers.c:1169 utils/adt/ri_triggers.c:1350 +#: utils/adt/ri_triggers.c:1515 utils/adt/ri_triggers.c:1691 +#: utils/adt/ri_triggers.c:1871 utils/adt/ri_triggers.c:2062 +#: utils/adt/ri_triggers.c:2120 utils/adt/ri_triggers.c:2225 +#: utils/adt/ri_triggers.c:2402 gram.y:3343 #, c-format msgid "MATCH PARTIAL not yet implemented" msgstr "il MATCH PARTIAL non è stato ancora implementato" -#: utils/adt/ri_triggers.c:345 utils/adt/ri_triggers.c:2492 -#: utils/adt/ri_triggers.c:3317 +#: utils/adt/ri_triggers.c:343 utils/adt/ri_triggers.c:2490 +#: utils/adt/ri_triggers.c:3315 #, c-format msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\"" msgstr "la INSERT o l'UPDATE sulla tabella \"%s\" viola il vincolo di chiave esterna \"%s\"" -#: utils/adt/ri_triggers.c:348 utils/adt/ri_triggers.c:2495 +#: utils/adt/ri_triggers.c:346 utils/adt/ri_triggers.c:2493 #, c-format msgid "MATCH FULL does not allow mixing of null and nonnull key values." msgstr "MATCH FULL non consente l'uso di valori chiave nulli e non nulli insieme." -#: utils/adt/ri_triggers.c:2734 +#: utils/adt/ri_triggers.c:2732 #, c-format msgid "function \"%s\" must be fired for INSERT" msgstr "la funzione \"%s\" deve essere eseguita per un INSERT" -#: utils/adt/ri_triggers.c:2740 +#: utils/adt/ri_triggers.c:2738 #, c-format msgid "function \"%s\" must be fired for UPDATE" msgstr "la funzione \"%s\" deve essere eseguita per un UPDATE" -#: utils/adt/ri_triggers.c:2746 +#: utils/adt/ri_triggers.c:2744 #, c-format msgid "function \"%s\" must be fired for DELETE" msgstr "la funzione \"%s\" deve essere eseguita per una DELETE" -#: utils/adt/ri_triggers.c:2769 +#: utils/adt/ri_triggers.c:2767 #, c-format msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\"" msgstr "non ci sono elementi pg_constraint per il trigger \"%s\" sulla tabella \"%s\"" -#: utils/adt/ri_triggers.c:2771 +#: utils/adt/ri_triggers.c:2769 #, c-format msgid "Remove this referential integrity trigger and its mates, then do ALTER TABLE ADD CONSTRAINT." msgstr "Rimuovi questo trigger di integrità referenziale e relativi elementi collegati, poi esegui ALTER TABLE ADD CONSTRAINT." -#: utils/adt/ri_triggers.c:3227 +#: utils/adt/ri_triggers.c:3225 #, c-format msgid "referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave unexpected result" msgstr "la query di integrità referenziale su \"%s\" dal vincolo \"%s\" su \"%s\" ha restituito un risultato inatteso" -#: utils/adt/ri_triggers.c:3231 +#: utils/adt/ri_triggers.c:3229 #, c-format msgid "This is most likely due to a rule having rewritten the query." msgstr "Ciò è probabilmente dovuto ad una RULE che ha riscritto la query." -#: utils/adt/ri_triggers.c:3321 +#: utils/adt/ri_triggers.c:3319 #, c-format msgid "Key (%s)=(%s) is not present in table \"%s\"." msgstr "La chiave (%s)=(%s) non è presente nella tabella \"%s\"." -#: utils/adt/ri_triggers.c:3324 +#: utils/adt/ri_triggers.c:3322 #, c-format msgid "Key is not present in table \"%s\"." msgstr "La chiave non è presente nella tabella \"%s\"." -#: utils/adt/ri_triggers.c:3330 +#: utils/adt/ri_triggers.c:3328 #, c-format msgid "update or delete on table \"%s\" violates foreign key constraint \"%s\" on table \"%s\"" msgstr "l'istruzione UPDATE o DELETE sulla tabella \"%s\" viola il vincolo di chiave esterna \"%s\" sulla tabella \"%s\"" -#: utils/adt/ri_triggers.c:3335 +#: utils/adt/ri_triggers.c:3333 #, c-format msgid "Key (%s)=(%s) is still referenced from table \"%s\"." msgstr "La chiave (%s)=(%s) è ancora referenziata dalla tabella \"%s\"." -#: utils/adt/ri_triggers.c:3338 +#: utils/adt/ri_triggers.c:3336 #, c-format msgid "Key is still referenced from table \"%s\"." msgstr "La chiave è ancora referenziata dalla tabella \"%s\"." @@ -19535,29 +19539,29 @@ msgstr "il tipo di dati non è corretto, %u invece di %u" msgid "improper binary format in record column %d" msgstr "il formato binario nella colonna %d del record non è corretto" -#: utils/adt/rowtypes.c:902 utils/adt/rowtypes.c:1142 -#: utils/adt/rowtypes.c:1396 utils/adt/rowtypes.c:1673 +#: utils/adt/rowtypes.c:902 utils/adt/rowtypes.c:1142 utils/adt/rowtypes.c:1396 +#: utils/adt/rowtypes.c:1673 #, c-format msgid "cannot compare dissimilar column types %s and %s at record column %d" msgstr "non è possibile confrontare i tipi di colonne dissimili %s e %s alla colonna %d del record" -#: utils/adt/rowtypes.c:991 utils/adt/rowtypes.c:1213 -#: utils/adt/rowtypes.c:1529 utils/adt/rowtypes.c:1769 +#: utils/adt/rowtypes.c:991 utils/adt/rowtypes.c:1213 utils/adt/rowtypes.c:1529 +#: utils/adt/rowtypes.c:1769 #, c-format msgid "cannot compare record types with different numbers of columns" msgstr "non è possibile confrontare tipi di record con diverso numero di colonne" -#: utils/adt/ruleutils.c:4153 +#: utils/adt/ruleutils.c:4289 #, c-format msgid "rule \"%s\" has unsupported event type %d" msgstr "la regola \"%s\" ha un tipo di evento non supportato %d" -#: utils/adt/selfuncs.c:5314 +#: utils/adt/selfuncs.c:5418 #, c-format msgid "case insensitive matching not supported on type bytea" msgstr "il confronto case insensitive sul tipo bytea non è supportato" -#: utils/adt/selfuncs.c:5417 +#: utils/adt/selfuncs.c:5521 #, c-format msgid "regular-expression matching not supported on type bytea" msgstr "il confronto con espressioni regolari sul tipo bytea non è supportato" @@ -19567,137 +19571,136 @@ msgstr "il confronto con espressioni regolari sul tipo bytea non è supportato" msgid "invalid input syntax for type tid: \"%s\"" msgstr "sintassi di input non valida per il tipo tid: \"%s\"" -#: utils/adt/timestamp.c:99 +#: utils/adt/timestamp.c:100 #, c-format msgid "TIMESTAMP(%d)%s precision must not be negative" msgstr "la precisione di TIMESTAMP(%d)%s non può essere negativa" -#: utils/adt/timestamp.c:105 +#: utils/adt/timestamp.c:106 #, c-format msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d" msgstr "la precisione di TIMESTAMP(%d)%s è stata ridotta al massimo consentito %d" -#: utils/adt/timestamp.c:170 utils/adt/timestamp.c:445 +#: utils/adt/timestamp.c:171 utils/adt/timestamp.c:446 #, c-format msgid "timestamp out of range: \"%s\"" msgstr "timestamp fuori dall'intervallo consentito: \"%s\"" -#: utils/adt/timestamp.c:188 utils/adt/timestamp.c:463 -#: utils/adt/timestamp.c:993 +#: utils/adt/timestamp.c:189 utils/adt/timestamp.c:464 +#: utils/adt/timestamp.c:991 #, c-format msgid "date/time value \"%s\" is no longer supported" msgstr "il valore \"%s\" per i tipi date/time non è più supportato" -#: utils/adt/timestamp.c:258 utils/adt/timestamp.c:754 +#: utils/adt/timestamp.c:259 utils/adt/timestamp.c:755 #, c-format msgid "timestamp cannot be NaN" msgstr "il timestamp non può essere NaN" -#: utils/adt/timestamp.c:380 +#: utils/adt/timestamp.c:381 #, c-format msgid "timestamp(%d) precision must be between %d and %d" msgstr "la precisione di timestamp(%d) deve essere compresa fra %d e %d" -#: utils/adt/timestamp.c:513 +#: utils/adt/timestamp.c:514 #, c-format msgid "invalid input syntax for numeric time zone: \"%s\"" msgstr "sintassi di input non valida per il fuso orario numerico: \"%s\"" -#: utils/adt/timestamp.c:515 +#: utils/adt/timestamp.c:516 #, c-format msgid "Numeric time zones must have \"-\" or \"+\" as first character." msgstr "Il primo carattere dei fusi orari numerici deve essere \"-\" o \"+\"." -#: utils/adt/timestamp.c:528 +#: utils/adt/timestamp.c:529 #, c-format msgid "numeric time zone \"%s\" out of range" msgstr "fuso orario numerico \"%s\" fuori dall'intervallo consentito" -#: utils/adt/timestamp.c:631 utils/adt/timestamp.c:641 -#: utils/adt/timestamp.c:653 +#: utils/adt/timestamp.c:632 utils/adt/timestamp.c:642 +#: utils/adt/timestamp.c:654 #, c-format msgid "timestamp out of range: %d-%02d-%02d %d:%02d:%02g" msgstr "timestamp fuori dall'intervallo consentito: %d-%02d-%02d %d:%02d:%02g" -#: utils/adt/timestamp.c:770 utils/adt/timestamp.c:776 -#: utils/adt/timestamp.c:791 +#: utils/adt/timestamp.c:773 utils/adt/timestamp.c:789 #, c-format msgid "timestamp out of range: \"%g\"" msgstr "timestamp fuori dall'intervallo consentito: \"%g\" " -#: utils/adt/timestamp.c:987 utils/adt/timestamp.c:1558 -#: utils/adt/timestamp.c:2068 utils/adt/timestamp.c:3220 -#: utils/adt/timestamp.c:3225 utils/adt/timestamp.c:3230 -#: utils/adt/timestamp.c:3280 utils/adt/timestamp.c:3287 -#: utils/adt/timestamp.c:3294 utils/adt/timestamp.c:3314 -#: utils/adt/timestamp.c:3321 utils/adt/timestamp.c:3328 -#: utils/adt/timestamp.c:3358 utils/adt/timestamp.c:3366 -#: utils/adt/timestamp.c:3411 utils/adt/timestamp.c:3751 -#: utils/adt/timestamp.c:3880 utils/adt/timestamp.c:4271 +#: utils/adt/timestamp.c:985 utils/adt/timestamp.c:1609 +#: utils/adt/timestamp.c:2122 utils/adt/timestamp.c:3316 +#: utils/adt/timestamp.c:3321 utils/adt/timestamp.c:3326 +#: utils/adt/timestamp.c:3376 utils/adt/timestamp.c:3383 +#: utils/adt/timestamp.c:3390 utils/adt/timestamp.c:3410 +#: utils/adt/timestamp.c:3417 utils/adt/timestamp.c:3424 +#: utils/adt/timestamp.c:3454 utils/adt/timestamp.c:3462 +#: utils/adt/timestamp.c:3507 utils/adt/timestamp.c:3847 +#: utils/adt/timestamp.c:3976 utils/adt/timestamp.c:4367 #, c-format msgid "interval out of range" msgstr "il valore di interval è fuori dall'intervallo consentito" -#: utils/adt/timestamp.c:1128 utils/adt/timestamp.c:1161 +#: utils/adt/timestamp.c:1126 utils/adt/timestamp.c:1159 #, c-format msgid "invalid INTERVAL type modifier" msgstr "il modificatore di tipo su INTERVAL non è valido" -#: utils/adt/timestamp.c:1144 +#: utils/adt/timestamp.c:1142 #, c-format msgid "INTERVAL(%d) precision must not be negative" msgstr "la precisione di INTERVAL(%d) non può essere negativa" -#: utils/adt/timestamp.c:1150 +#: utils/adt/timestamp.c:1148 #, c-format msgid "INTERVAL(%d) precision reduced to maximum allowed, %d" msgstr "la precisione di INTERVAL(%d) è stata ridotta al massimo consentito %d" -#: utils/adt/timestamp.c:1502 +#: utils/adt/timestamp.c:1553 #, c-format msgid "interval(%d) precision must be between %d and %d" msgstr "la precisione di INTERVAL(%d) deve essere compresa fra %d e %d" -#: utils/adt/timestamp.c:2797 +#: utils/adt/timestamp.c:2893 #, c-format msgid "cannot subtract infinite timestamps" msgstr "non è possibile sottrarre valori infiniti di TIMESTAMP" -#: utils/adt/timestamp.c:4006 utils/adt/timestamp.c:4531 -#: utils/adt/timestamp.c:4715 utils/adt/timestamp.c:4740 +#: utils/adt/timestamp.c:4102 utils/adt/timestamp.c:4627 +#: utils/adt/timestamp.c:4811 utils/adt/timestamp.c:4836 #, c-format msgid "timestamp units \"%s\" not supported" msgstr "unità \"%s\" di timestamp non supportata" -#: utils/adt/timestamp.c:4020 utils/adt/timestamp.c:4485 -#: utils/adt/timestamp.c:4750 +#: utils/adt/timestamp.c:4116 utils/adt/timestamp.c:4581 +#: utils/adt/timestamp.c:4846 #, c-format msgid "timestamp units \"%s\" not recognized" msgstr "unità \"%s\" di timestamp non riconosciuta" -#: utils/adt/timestamp.c:4160 utils/adt/timestamp.c:4526 -#: utils/adt/timestamp.c:4937 utils/adt/timestamp.c:4963 +#: utils/adt/timestamp.c:4256 utils/adt/timestamp.c:4622 +#: utils/adt/timestamp.c:5033 utils/adt/timestamp.c:5059 #, c-format msgid "timestamp with time zone units \"%s\" not supported" msgstr "unità \"%s\" di timestamp with time zone non supportata" -#: utils/adt/timestamp.c:4177 utils/adt/timestamp.c:4480 -#: utils/adt/timestamp.c:4972 +#: utils/adt/timestamp.c:4273 utils/adt/timestamp.c:4576 +#: utils/adt/timestamp.c:5068 #, c-format msgid "timestamp with time zone units \"%s\" not recognized" msgstr "unità \"%s\" di timestamp with time zone non riconosciuta" -#: utils/adt/timestamp.c:4258 +#: utils/adt/timestamp.c:4354 #, c-format msgid "interval units \"%s\" not supported because months usually have fractional weeks" msgstr "le unità di intervallo \"%s\" non sono supportate perché generalmente i mesi hanno settimane frazionali" -#: utils/adt/timestamp.c:4264 utils/adt/timestamp.c:5078 +#: utils/adt/timestamp.c:4360 utils/adt/timestamp.c:5174 #, c-format msgid "interval units \"%s\" not supported" msgstr "unità \"%s\" di interval non supportata" -#: utils/adt/timestamp.c:4280 utils/adt/timestamp.c:5105 +#: utils/adt/timestamp.c:4376 utils/adt/timestamp.c:5201 #, c-format msgid "interval units \"%s\" not recognized" msgstr "unità \"%s\" di interval non riconosciuta" @@ -19758,17 +19761,17 @@ msgstr "l'operando in tsquery è troppo lungo: \"%s\"" msgid "word is too long in tsquery: \"%s\"" msgstr "la parola in tsquery è troppo lunga: \"%s\"" -#: utils/adt/tsquery.c:648 +#: utils/adt/tsquery.c:642 #, c-format msgid "text-search query doesn't contain lexemes: \"%s\"" msgstr "la query di ricerca di testo non contiene alcun lessema: \"%s\"" -#: utils/adt/tsquery.c:659 utils/adt/tsquery_util.c:347 +#: utils/adt/tsquery.c:653 utils/adt/tsquery_util.c:375 #, c-format msgid "tsquery is too large" msgstr "tsquery troppo grande" -#: utils/adt/tsquery_cleanup.c:580 +#: utils/adt/tsquery_cleanup.c:407 #, c-format msgid "text-search query contains only stop words or doesn't contain lexemes, ignored" msgstr "la query di ricerca di testo contiene solo stop word o non contiene lessemi, ignorata" @@ -19778,7 +19781,7 @@ msgstr "la query di ricerca di testo contiene solo stop word o non contiene less msgid "distance in phrase operator should be non-negative and less than %d" msgstr "la distanza nell'operatore di frase deve essere non negativa ed inferiore a %d" -#: utils/adt/tsquery_rewrite.c:292 +#: utils/adt/tsquery_rewrite.c:321 #, c-format msgid "ts_rewrite query must return two tsquery columns" msgstr "la query ts_rewrite deve restituire due colonne tsquery" @@ -19798,7 +19801,7 @@ msgstr "l'array dei pesi è troppo corto" msgid "array of weight must not contain nulls" msgstr "l'array dei pesi non può contenere valori nulli" -#: utils/adt/tsrank.c:431 utils/adt/tsrank.c:862 +#: utils/adt/tsrank.c:431 utils/adt/tsrank.c:868 #, c-format msgid "weight out of range" msgstr "il peso è fuori dall'intervallo consentito" @@ -19813,53 +19816,58 @@ msgstr "la lunghezza della parola (%ld byte) eccede il massimo (%ld byte)" msgid "string is too long for tsvector (%ld bytes, max %ld bytes)" msgstr "la lunghezza della stringa (%ld byte) eccede il massimo per un tsvector (%ld byte)" -#: utils/adt/tsvector_op.c:317 utils/adt/tsvector_op.c:565 -#: utils/adt/tsvector_op.c:731 +#: utils/adt/tsvector_op.c:322 utils/adt/tsvector_op.c:609 +#: utils/adt/tsvector_op.c:777 #, c-format msgid "lexeme array may not contain nulls" msgstr "l'array di lessemi non può contenere null" -#: utils/adt/tsvector_op.c:789 +#: utils/adt/tsvector_op.c:852 #, c-format msgid "weight array may not contain nulls" msgstr "l'array dei pesi non può contenere null" -#: utils/adt/tsvector_op.c:1976 +#: utils/adt/tsvector_op.c:876 +#, c-format +msgid "unrecognized weight: \"%c\"" +msgstr "peso non riconosciuto: \"%c\"" + +#: utils/adt/tsvector_op.c:2313 #, c-format msgid "ts_stat query must return one tsvector column" msgstr "la query ts_stat deve restituire una colonna tsvector" -#: utils/adt/tsvector_op.c:2158 +#: utils/adt/tsvector_op.c:2495 #, c-format msgid "tsvector column \"%s\" does not exist" msgstr "la colonna tsvector \"%s\" non esiste" -#: utils/adt/tsvector_op.c:2164 +#: utils/adt/tsvector_op.c:2501 #, c-format msgid "column \"%s\" is not of tsvector type" msgstr "la colonna \"%s\" non è di tipo tsvector" -#: utils/adt/tsvector_op.c:2176 +#: utils/adt/tsvector_op.c:2513 #, c-format msgid "configuration column \"%s\" does not exist" msgstr "la configurazione della colonna \"%s\" non esiste" -#: utils/adt/tsvector_op.c:2182 +#: utils/adt/tsvector_op.c:2519 #, c-format msgid "column \"%s\" is not of regconfig type" msgstr "la colonna \"%s\" non è di tipo regconfig" -#: utils/adt/tsvector_op.c:2189 +#: utils/adt/tsvector_op.c:2526 #, c-format msgid "configuration column \"%s\" must not be null" msgstr "la colonna di configurazione \"%s\" non può essere nulla" -#: utils/adt/tsvector_op.c:2202 +#: utils/adt/tsvector_op.c:2539 #, c-format msgid "text search configuration name \"%s\" must be schema-qualified" msgstr "la configurazione di ricerca di testo \"%s\" deve avere uno schema" -#: utils/adt/tsvector_op.c:2227 +#: utils/adt/tsvector_op.c:2564 #, c-format msgid "column \"%s\" is not of a character type" msgstr "la colonna \"%s\" non è di tipo carattere" @@ -19956,12 +19964,12 @@ msgstr "non è possibile eseguire l'OR fra stringhe di bit di dimensioni diverse msgid "cannot XOR bit strings of different sizes" msgstr "non è possibile eseguire lo XOR fra stringhe di bit di dimensioni diverse" -#: utils/adt/varbit.c:1793 utils/adt/varbit.c:1851 +#: utils/adt/varbit.c:1803 utils/adt/varbit.c:1861 #, c-format msgid "bit index %d out of valid range (0..%d)" msgstr "l'indice %d è fuori dall'intervallo valido (0..%d)" -#: utils/adt/varbit.c:1802 utils/adt/varlena.c:3002 +#: utils/adt/varbit.c:1812 utils/adt/varlena.c:3002 #, c-format msgid "new bit must be 0 or 1" msgstr "il nuovo bit deve essere 0 o 1" @@ -20017,16 +20025,11 @@ msgstr "Per un singolo \"%%\" usa \"%%%%\"." msgid "unrecognized format() type specifier \"%c\"" msgstr "specifica di tipo per format() \"%c\" non riconosciuta" -#: utils/adt/varlena.c:4950 +#: utils/adt/varlena.c:4950 utils/adt/varlena.c:5007 #, c-format msgid "too few arguments for format()" msgstr "numero di argomenti non sufficiente per format()" -#: utils/adt/varlena.c:5007 -#, c-format -msgid "too few arguments for format" -msgstr "troppi pochi argomenti per il formato" - #: utils/adt/varlena.c:5102 utils/adt/varlena.c:5285 #, c-format msgid "number is out of range" @@ -20057,141 +20060,141 @@ msgstr "l'argomento della funzione ntile deve essere maggiore di zero" msgid "argument of nth_value must be greater than zero" msgstr "l'argomento della funzione nth_value deve essere maggiore di zero" -#: utils/adt/xml.c:171 +#: utils/adt/xml.c:175 #, c-format msgid "unsupported XML feature" msgstr "caratteristica XML non supportata" -#: utils/adt/xml.c:172 +#: utils/adt/xml.c:176 #, c-format msgid "This functionality requires the server to be built with libxml support." msgstr "Per questa funzionalità è necessario che il server sia compilato con il supporto a libxml." -#: utils/adt/xml.c:173 +#: utils/adt/xml.c:177 #, c-format msgid "You need to rebuild PostgreSQL using --with-libxml." msgstr "Occorre configurare PostgreSQL con l'opzione --with-libxml e ricompilarlo." -#: utils/adt/xml.c:192 utils/mb/mbutils.c:523 +#: utils/adt/xml.c:196 utils/mb/mbutils.c:523 #, c-format msgid "invalid encoding name \"%s\"" msgstr "nome di codifica non valido \"%s\"" -#: utils/adt/xml.c:435 utils/adt/xml.c:440 +#: utils/adt/xml.c:439 utils/adt/xml.c:444 #, c-format msgid "invalid XML comment" msgstr "commento XML non valido" -#: utils/adt/xml.c:569 +#: utils/adt/xml.c:573 #, c-format msgid "not an XML document" msgstr "non è un documento XML" -#: utils/adt/xml.c:728 utils/adt/xml.c:751 +#: utils/adt/xml.c:732 utils/adt/xml.c:755 #, c-format msgid "invalid XML processing instruction" msgstr "istruzione di elaborazione XML non valida" -#: utils/adt/xml.c:729 +#: utils/adt/xml.c:733 #, c-format msgid "XML processing instruction target name cannot be \"%s\"." msgstr "Il nome di destinazione di un'istruzione di elaborazione XML non può essere \"%s\"." -#: utils/adt/xml.c:752 +#: utils/adt/xml.c:756 #, c-format msgid "XML processing instruction cannot contain \"?>\"." msgstr "Un'istruzione di elaborazione XML non può contenere \"?>\"." -#: utils/adt/xml.c:831 +#: utils/adt/xml.c:835 #, c-format msgid "xmlvalidate is not implemented" msgstr "la funzione xmlvalidate non è implementata" -#: utils/adt/xml.c:910 +#: utils/adt/xml.c:914 #, c-format msgid "could not initialize XML library" msgstr "inizializzazione della libreria XML fallita" -#: utils/adt/xml.c:911 +#: utils/adt/xml.c:915 #, c-format msgid "libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u." msgstr "La libreria libxml2 ha un tipo char non compatibile: sizeof(char)=%u, sizeof(xmlChar)=%u." -#: utils/adt/xml.c:997 +#: utils/adt/xml.c:1001 #, c-format msgid "could not set up XML error handler" msgstr "impostazione del gestore di errori XML fallita" -#: utils/adt/xml.c:998 +#: utils/adt/xml.c:1002 #, c-format msgid "This probably indicates that the version of libxml2 being used is not compatible with the libxml2 header files that PostgreSQL was built with." msgstr "Questo vuol dire probabilmente che la versione di libxml2 in uso non è compatibile con i file di header libxml2 con cui PostgreSQL è stato compilato." -#: utils/adt/xml.c:1737 +#: utils/adt/xml.c:1739 msgid "Invalid character value." msgstr "Valore di carattere non valido." -#: utils/adt/xml.c:1740 +#: utils/adt/xml.c:1742 msgid "Space required." msgstr "È necessario uno spazio." -#: utils/adt/xml.c:1743 +#: utils/adt/xml.c:1745 msgid "standalone accepts only 'yes' or 'no'." msgstr "Solo 'yes' o 'no' sono accettati da standalone." -#: utils/adt/xml.c:1746 +#: utils/adt/xml.c:1748 msgid "Malformed declaration: missing version." msgstr "La dichiarazione non è definita correttamente: manca la versione." -#: utils/adt/xml.c:1749 +#: utils/adt/xml.c:1751 msgid "Missing encoding in text declaration." msgstr "Manca la codifica nella dichiarazione del testo." -#: utils/adt/xml.c:1752 +#: utils/adt/xml.c:1754 msgid "Parsing XML declaration: '?>' expected." msgstr "Durante l'analisi XML è stato riscontrato che manca '?>'." -#: utils/adt/xml.c:1755 +#: utils/adt/xml.c:1757 #, c-format msgid "Unrecognized libxml error code: %d." msgstr "Codice di errore di libxml sconosciuto: %d." -#: utils/adt/xml.c:2030 +#: utils/adt/xml.c:2032 #, c-format msgid "XML does not support infinite date values." msgstr "XML non supporta i valori infiniti per il tipo date." -#: utils/adt/xml.c:2052 utils/adt/xml.c:2079 +#: utils/adt/xml.c:2054 utils/adt/xml.c:2081 #, c-format msgid "XML does not support infinite timestamp values." msgstr "XML non supporta i valori infiniti per il tipo timestamp." -#: utils/adt/xml.c:2470 +#: utils/adt/xml.c:2481 #, c-format msgid "invalid query" msgstr "query non valida" -#: utils/adt/xml.c:3795 +#: utils/adt/xml.c:3806 #, c-format msgid "invalid array for XML namespace mapping" msgstr "l'array per il mapping del namespace XML non è valido" -#: utils/adt/xml.c:3796 +#: utils/adt/xml.c:3807 #, c-format msgid "The array must be two-dimensional with length of the second axis equal to 2." msgstr "L'array deve avere due dimensioni e la lunghezza del secondo asse deve essere pari a 2." -#: utils/adt/xml.c:3820 +#: utils/adt/xml.c:3831 #, c-format msgid "empty XPath expression" msgstr "l'espressione XPath è vuota" -#: utils/adt/xml.c:3869 +#: utils/adt/xml.c:3880 #, c-format msgid "neither namespace name nor URI may be null" msgstr "né il nome del namespace né l'URI possono essere nulli" -#: utils/adt/xml.c:3876 +#: utils/adt/xml.c:3887 #, c-format msgid "could not register XML namespace with name \"%s\" and URI \"%s\"" msgstr "registrazione del namespace XML con nome \"%s\" ed URI \"%s\" fallita" @@ -20212,22 +20215,22 @@ msgstr "nessuna funzione di input disponibile per il tipo %s" msgid "no output function available for type %s" msgstr "nessuna funzione di output disponibile per il tipo %s" -#: utils/cache/plancache.c:745 +#: utils/cache/plancache.c:718 #, c-format msgid "cached plan must not change result type" msgstr "il cached plan non deve cambiare il tipo del risultato" -#: utils/cache/relcache.c:5135 +#: utils/cache/relcache.c:5226 #, c-format msgid "could not create relation-cache initialization file \"%s\": %m" msgstr "creazione del file di inizializzazione della cache delle relazioni \"%s\" fallita: %m" -#: utils/cache/relcache.c:5137 +#: utils/cache/relcache.c:5228 #, c-format msgid "Continuing anyway, but there's something wrong." msgstr "Proseguo in ogni caso, ma c'è qualcosa che non funziona." -#: utils/cache/relcache.c:5365 +#: utils/cache/relcache.c:5502 #, c-format msgid "could not remove cache file \"%s\": %m" msgstr "rimozione del file di cache \"%s\" fallita: %m" @@ -20272,12 +20275,12 @@ msgstr "fsync del file della mappa delle relazioni \"%s\" fallito: %m" msgid "could not close relation mapping file \"%s\": %m" msgstr "chiusura del file della mappa delle relazioni \"%s\" fallita: %m" -#: utils/cache/typcache.c:1211 +#: utils/cache/typcache.c:1207 #, c-format msgid "type %s is not composite" msgstr "il tipo %s non è composito" -#: utils/cache/typcache.c:1225 +#: utils/cache/typcache.c:1221 #, c-format msgid "record type has not been registered" msgstr "il tipo del record non è stato registrato" @@ -20297,96 +20300,96 @@ msgstr "TRAP: %s(\"%s\", File: \"%s\", Linea: %d)\n" msgid "error occurred at %s:%d before error message processing is available\n" msgstr "l'errore è avvenuto a %s:%d prima che fosse possibile processare i messaggi d'errore\n" -#: utils/error/elog.c:1880 +#: utils/error/elog.c:1889 #, c-format msgid "could not reopen file \"%s\" as stderr: %m" msgstr "riapertura del file \"%s\" come stderr fallita: %m" -#: utils/error/elog.c:1893 +#: utils/error/elog.c:1902 #, c-format msgid "could not reopen file \"%s\" as stdout: %m" msgstr "riapertura del file \"%s\" come stdout fallita: %m" -#: utils/error/elog.c:2380 utils/error/elog.c:2397 utils/error/elog.c:2413 +#: utils/error/elog.c:2389 utils/error/elog.c:2406 utils/error/elog.c:2422 msgid "[unknown]" msgstr "[sconosciuto]" -#: utils/error/elog.c:2872 utils/error/elog.c:3171 utils/error/elog.c:3279 +#: utils/error/elog.c:2882 utils/error/elog.c:3185 utils/error/elog.c:3293 msgid "missing error text" msgstr "testo dell'errore mancante" -#: utils/error/elog.c:2875 utils/error/elog.c:2878 utils/error/elog.c:3282 -#: utils/error/elog.c:3285 +#: utils/error/elog.c:2885 utils/error/elog.c:2888 utils/error/elog.c:3296 +#: utils/error/elog.c:3299 #, c-format msgid " at character %d" msgstr " al carattere %d" -#: utils/error/elog.c:2888 utils/error/elog.c:2895 +#: utils/error/elog.c:2898 utils/error/elog.c:2905 msgid "DETAIL: " msgstr "DETTAGLI: " -#: utils/error/elog.c:2902 +#: utils/error/elog.c:2912 msgid "HINT: " msgstr "SUGGERIMENTO: " -#: utils/error/elog.c:2909 +#: utils/error/elog.c:2919 msgid "QUERY: " msgstr "QUERY: " -#: utils/error/elog.c:2916 +#: utils/error/elog.c:2926 msgid "CONTEXT: " msgstr "CONTESTO: " -#: utils/error/elog.c:2926 +#: utils/error/elog.c:2936 #, c-format msgid "LOCATION: %s, %s:%d\n" msgstr "POSIZIONE: %s, %s:%d\n" -#: utils/error/elog.c:2933 +#: utils/error/elog.c:2943 #, c-format msgid "LOCATION: %s:%d\n" msgstr "POSIZIONE: %s:%d\n" -#: utils/error/elog.c:2947 +#: utils/error/elog.c:2957 msgid "STATEMENT: " msgstr "ISTRUZIONE: " #. translator: This string will be truncated at 47 #. characters expanded. -#: utils/error/elog.c:3400 +#: utils/error/elog.c:3414 #, c-format msgid "operating system error %d" msgstr "errore del sistema operativo %d" -#: utils/error/elog.c:3595 +#: utils/error/elog.c:3612 msgid "DEBUG" msgstr "DEBUG" -#: utils/error/elog.c:3599 +#: utils/error/elog.c:3616 msgid "LOG" msgstr "LOG" -#: utils/error/elog.c:3602 +#: utils/error/elog.c:3619 msgid "INFO" msgstr "INFO" -#: utils/error/elog.c:3605 +#: utils/error/elog.c:3622 msgid "NOTICE" msgstr "NOTIFICA" -#: utils/error/elog.c:3608 +#: utils/error/elog.c:3625 msgid "WARNING" msgstr "ATTENZIONE" -#: utils/error/elog.c:3611 +#: utils/error/elog.c:3628 msgid "ERROR" msgstr "ERRORE" -#: utils/error/elog.c:3614 +#: utils/error/elog.c:3631 msgid "FATAL" msgstr "FATALE" -#: utils/error/elog.c:3617 +#: utils/error/elog.c:3634 msgid "PANIC" msgstr "PANICO" @@ -20489,32 +20492,32 @@ msgstr "la funzione interna \"%s\" non è nella tabella interna di lookup" msgid "unrecognized API version %d reported by info function \"%s\"" msgstr "versione API sconosciuto %d riportata dalla funzione info \"%s\"" -#: utils/fmgr/fmgr.c:849 utils/fmgr/fmgr.c:2110 +#: utils/fmgr/fmgr.c:849 utils/fmgr/fmgr.c:2106 #, c-format msgid "function %u has too many arguments (%d, maximum is %d)" msgstr "la funzione %u ha troppo argomenti (%d, il massimo è %d)" -#: utils/fmgr/fmgr.c:2531 +#: utils/fmgr/fmgr.c:2527 #, c-format msgid "language validation function %u called for language %u instead of %u" msgstr "funzione di validazione del linguaggio %u chiamata per il linguaggio %u invece di %u" -#: utils/fmgr/funcapi.c:355 +#: utils/fmgr/funcapi.c:353 #, c-format msgid "could not determine actual result type for function \"%s\" declared to return type %s" msgstr "non è stato possibile determinare il tipo reale di risultato della funzione \"%s\" dichiarata con tipo restituito %s" -#: utils/fmgr/funcapi.c:1342 utils/fmgr/funcapi.c:1373 +#: utils/fmgr/funcapi.c:1340 utils/fmgr/funcapi.c:1371 #, c-format msgid "number of aliases does not match number of columns" msgstr "il numero di alias non corrisponde al numero delle colonne" -#: utils/fmgr/funcapi.c:1367 +#: utils/fmgr/funcapi.c:1365 #, c-format msgid "no column alias was provided" msgstr "non è stato fornito nessun alias colonna" -#: utils/fmgr/funcapi.c:1391 +#: utils/fmgr/funcapi.c:1389 #, c-format msgid "could not determine row description for function returning record" msgstr "non è stato possibile determinare la descrizione della riga per la funzione che restituisce record" @@ -20524,7 +20527,7 @@ msgstr "non è stato possibile determinare la descrizione della riga per la funz msgid "could not change directory to \"%s\": %m" msgstr "spostamento nella directory \"%s\" fallito: %m" -#: utils/init/miscinit.c:449 utils/misc/guc.c:6012 +#: utils/init/miscinit.c:449 utils/misc/guc.c:6016 #, c-format msgid "cannot set parameter \"%s\" within security-restricted operation" msgstr "non è possibile impostare il parametro \"%s\" nell'ambito di operazioni a sicurezza ristretta" @@ -20635,7 +20638,7 @@ msgstr "Sembra che il file sia stato abbandonato accidentalmente, ma non può es msgid "could not write lock file \"%s\": %m" msgstr "scrittura del file di lock \"%s\" fallita: %m" -#: utils/init/miscinit.c:1172 utils/init/miscinit.c:1301 utils/misc/guc.c:8806 +#: utils/init/miscinit.c:1172 utils/init/miscinit.c:1301 utils/misc/guc.c:8818 #, c-format msgid "could not read from file \"%s\": %m" msgstr "lettura dal file \"%s\" fallita: %m" @@ -20680,135 +20683,135 @@ msgstr "La directory dati è stata inizializzata da PostgreSQL versione %ld.%ld, msgid "loaded library \"%s\"" msgstr "libreria \"%s\" caricata" -#: utils/init/postinit.c:252 +#: utils/init/postinit.c:251 #, c-format msgid "replication connection authorized: user=%s SSL enabled (protocol=%s, cipher=%s, compression=%s)" msgstr "connessione di replica autorizzata: utente=%s SSL abilitato (protocollo=%s, cifrario=%s, compressione=%s)" -#: utils/init/postinit.c:254 utils/init/postinit.c:268 +#: utils/init/postinit.c:253 utils/init/postinit.c:267 msgid "off" msgstr "disattivato" -#: utils/init/postinit.c:254 utils/init/postinit.c:268 +#: utils/init/postinit.c:253 utils/init/postinit.c:267 msgid "on" msgstr "attivato" -#: utils/init/postinit.c:258 +#: utils/init/postinit.c:257 #, c-format msgid "replication connection authorized: user=%s" msgstr "connessione di replica autorizzata: utente=%s" -#: utils/init/postinit.c:266 +#: utils/init/postinit.c:265 #, c-format msgid "connection authorized: user=%s database=%s SSL enabled (protocol=%s, cipher=%s, compression=%s)" msgstr "connessione autorizzata: utente=%s database=%s SSL abilitato (protocollo=%s, cifrario=%s, compressione=%s)" -#: utils/init/postinit.c:272 +#: utils/init/postinit.c:271 #, c-format msgid "connection authorized: user=%s database=%s" msgstr "connessione autorizzata: utente=%s database=%s" -#: utils/init/postinit.c:304 +#: utils/init/postinit.c:303 #, c-format msgid "database \"%s\" has disappeared from pg_database" msgstr "il database \"%s\" è scomparso da database pg_database" -#: utils/init/postinit.c:306 +#: utils/init/postinit.c:305 #, c-format msgid "Database OID %u now seems to belong to \"%s\"." msgstr "L'OID %u del database ora sembra appartenere a \"%s\"." -#: utils/init/postinit.c:326 +#: utils/init/postinit.c:325 #, c-format msgid "database \"%s\" is not currently accepting connections" msgstr "il database \"%s\" attualmente non accetta connessioni" -#: utils/init/postinit.c:339 +#: utils/init/postinit.c:338 #, c-format msgid "permission denied for database \"%s\"" msgstr "permesso negato per il database \"%s\"" -#: utils/init/postinit.c:340 +#: utils/init/postinit.c:339 #, c-format msgid "User does not have CONNECT privilege." msgstr "L'utente non ha il privilegio CONNECT." -#: utils/init/postinit.c:357 +#: utils/init/postinit.c:356 #, c-format msgid "too many connections for database \"%s\"" msgstr "troppe connessioni al database \"%s\"" -#: utils/init/postinit.c:379 utils/init/postinit.c:386 +#: utils/init/postinit.c:378 utils/init/postinit.c:385 #, c-format msgid "database locale is incompatible with operating system" msgstr "il locale del database è incompatibile col sistema operativo" -#: utils/init/postinit.c:380 +#: utils/init/postinit.c:379 #, c-format msgid "The database was initialized with LC_COLLATE \"%s\", which is not recognized by setlocale()." msgstr "Il database di database è stato inizializzato con LC_COLLATE \"%s\", che non è riconosciuto da setlocale()." -#: utils/init/postinit.c:382 utils/init/postinit.c:389 +#: utils/init/postinit.c:381 utils/init/postinit.c:388 #, c-format msgid "Recreate the database with another locale or install the missing locale." msgstr "Crea di nuovo il database con un altro locale oppure installa il locale mancante." -#: utils/init/postinit.c:387 +#: utils/init/postinit.c:386 #, c-format msgid "The database was initialized with LC_CTYPE \"%s\", which is not recognized by setlocale()." msgstr "Il database è stato inizializzato con LC_CTYPE \"%s\", che non è riconosciuto da setlocale()." -#: utils/init/postinit.c:715 +#: utils/init/postinit.c:714 #, c-format msgid "no roles are defined in this database system" msgstr "nessun ruolo definito in questo database" -#: utils/init/postinit.c:716 +#: utils/init/postinit.c:715 #, c-format msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;." msgstr "Dovresti eseguire immediatamente CREATE USER \"%s\" SUPERUSER;." -#: utils/init/postinit.c:752 +#: utils/init/postinit.c:751 #, c-format msgid "new replication connections are not allowed during database shutdown" msgstr "non sono accettate nuove connessioni di replica durante lo spegnimento del database" -#: utils/init/postinit.c:756 +#: utils/init/postinit.c:755 #, c-format msgid "must be superuser to connect during database shutdown" msgstr "solo un superutente può connettersi durante lo spegnimento del database" -#: utils/init/postinit.c:766 +#: utils/init/postinit.c:765 #, c-format msgid "must be superuser to connect in binary upgrade mode" msgstr "solo un superutente può connettersi in modalità di aggiornamento binario" -#: utils/init/postinit.c:780 +#: utils/init/postinit.c:779 #, c-format msgid "remaining connection slots are reserved for non-replication superuser connections" msgstr "i rimanenti slot di connessione sono riservati a connessioni di superutenti non di replica" -#: utils/init/postinit.c:790 +#: utils/init/postinit.c:789 #, c-format msgid "must be superuser or replication role to start walsender" msgstr "solo un superutente o il ruolo di replica può avviare walsender" -#: utils/init/postinit.c:859 +#: utils/init/postinit.c:858 #, c-format msgid "database %u does not exist" msgstr "il database %u non esiste" -#: utils/init/postinit.c:945 +#: utils/init/postinit.c:944 #, c-format msgid "It seems to have just been dropped or renamed." msgstr "Sembra sia stato appena eliminato o rinominato." -#: utils/init/postinit.c:963 +#: utils/init/postinit.c:962 #, c-format msgid "The database subdirectory \"%s\" is missing." msgstr "La sottodirectory del database \"%s\" risulta mancante." -#: utils/init/postinit.c:968 +#: utils/init/postinit.c:967 #, c-format msgid "could not access directory \"%s\": %m" msgstr "accesso alla directory \"%s\" fallito: %m" @@ -21120,1266 +21123,1266 @@ msgstr "Abilita l'uso da parte del planner di piani di join ad unione." msgid "Enables the planner's use of hash join plans." msgstr "Abilita l'uso da parte del planner di piani di join basati su hash." -#: utils/misc/guc.c:882 -msgid "Enables use of foreign keys for estimating joins." -msgstr "Abilita l'uso delle chiavi esterne per la stima dei join." - -#: utils/misc/guc.c:892 +#: utils/misc/guc.c:883 msgid "Enables genetic query optimization." msgstr "Abilita l'ottimizzatore genetico di query." -#: utils/misc/guc.c:893 +#: utils/misc/guc.c:884 msgid "This algorithm attempts to do planning without exhaustive searching." msgstr "Questo algoritmo cerca di realizzare piani senza effettuare una ricerca esaustiva." -#: utils/misc/guc.c:903 +#: utils/misc/guc.c:894 msgid "Shows whether the current user is a superuser." msgstr "Mostra se l'utente attuale è un superutente o meno." -#: utils/misc/guc.c:913 +#: utils/misc/guc.c:904 msgid "Enables advertising the server via Bonjour." msgstr "Abilita la pubblicazione del server via Bonjour." -#: utils/misc/guc.c:922 +#: utils/misc/guc.c:913 msgid "Collects transaction commit time." msgstr "Raccogli l'ora di commit delle transazioni." -#: utils/misc/guc.c:931 +#: utils/misc/guc.c:922 msgid "Enables SSL connections." msgstr "Abilita le connessioni SSL." -#: utils/misc/guc.c:940 +#: utils/misc/guc.c:931 msgid "Give priority to server ciphersuite order." msgstr "Dai priorità all'ordine di cifrari del server." -#: utils/misc/guc.c:949 +#: utils/misc/guc.c:940 msgid "Forces synchronization of updates to disk." msgstr "Forza la sincronizzazione degli aggiornamenti sul disco." -#: utils/misc/guc.c:950 +#: utils/misc/guc.c:941 msgid "The server will use the fsync() system call in several places to make sure that updates are physically written to disk. This insures that a database cluster will recover to a consistent state after an operating system or hardware crash." msgstr "Il server userà in diversi punti la chiamata di sistema fsync() per assicurarsi che gli aggiornamenti vengano scritti fisicamente sul disco. Questo assicura che un cluster di database possa essere recuperato in uno stato consistente dopo un crash di sistema o dell'hardware." -#: utils/misc/guc.c:961 +#: utils/misc/guc.c:952 msgid "Continues processing after a checksum failure." msgstr "Condinua l'elaborazione dopo un errore in una somma di controllo." -#: utils/misc/guc.c:962 +#: utils/misc/guc.c:953 msgid "Detection of a checksum failure normally causes PostgreSQL to report an error, aborting the current transaction. Setting ignore_checksum_failure to true causes the system to ignore the failure (but still report a warning), and continue processing. This behavior could cause crashes or other serious problems. Only has an effect if checksums are enabled." msgstr "La rilevazione di un errore in una somma di controllo di solito fa generare a PostgreSQL un errore che fa abortire la transazione corrente. Impostare ignore_checksum_failure a \"true\" fa sì che il sistema ignori l'errore (che viene riportato come un avviso), consentendo al processo di continuare. Questo comportamento potrebbe causare crash o altri problemi gravi. Ha effetto solo se se somme di controllo sono abilitate." -#: utils/misc/guc.c:976 +#: utils/misc/guc.c:967 msgid "Continues processing past damaged page headers." msgstr "Continua l'esecuzione oltre le intestazioni di pagina danneggiate." -#: utils/misc/guc.c:977 +#: utils/misc/guc.c:968 msgid "Detection of a damaged page header normally causes PostgreSQL to report an error, aborting the current transaction. Setting zero_damaged_pages to true causes the system to instead report a warning, zero out the damaged page, and continue processing. This behavior will destroy data, namely all the rows on the damaged page." msgstr "Il rilevamento di una intestazione di pagina danneggiata normalmente fa sì che PostgreSQL segnali un errore, interrompendo la transazione corrente. L'attivazione di zero_damaged_pages fa sì che il sistema invece riporti un warning, azzeri la pagina danneggiata e continui l'esecuzione. Questo comportamento può distruggere dei dati, in particolare tutte quelle righe situate nella pagina danneggiata." -#: utils/misc/guc.c:990 +#: utils/misc/guc.c:981 msgid "Writes full pages to WAL when first modified after a checkpoint." msgstr "Scrivi pagine intere nel WAL non appena modificate dopo un checkpoint." -#: utils/misc/guc.c:991 +#: utils/misc/guc.c:982 msgid "A page write in process during an operating system crash might be only partially written to disk. During recovery, the row changes stored in WAL are not enough to recover. This option writes pages when first modified after a checkpoint to WAL so full recovery is possible." msgstr "La scrittura di una pagina durante un crash del sistema operativo potrebbe essere stata scritta su disco solo parzialmente. Durante il ripristino, le variazioni di riga memorizzate nel WAL non sono sufficienti al ripristino. Questa operazione scrive le pagine nel WAL appena modificate dopo un checkpoint nel WAL in maniera da rendere possibile un ripristino completo." -#: utils/misc/guc.c:1004 +#: utils/misc/guc.c:995 msgid "Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modifications." msgstr "Scrivi pagine complete nel WAL appena modificate dopo un checkpoint, anche dopo modifiche non critiche." -#: utils/misc/guc.c:1014 +#: utils/misc/guc.c:1005 msgid "Compresses full-page writes written in WAL file." msgstr "Comprimi le scritture di pagine complete scritte nel file WAL." -#: utils/misc/guc.c:1024 +#: utils/misc/guc.c:1015 msgid "Logs each checkpoint." msgstr "Registra nel log ogni checkpoint." -#: utils/misc/guc.c:1033 +#: utils/misc/guc.c:1024 msgid "Logs each successful connection." msgstr "Registra nel log tutte le connessioni avvenute con successo." -#: utils/misc/guc.c:1042 +#: utils/misc/guc.c:1033 msgid "Logs end of a session, including duration." msgstr "Registra nel log la fine delle sessioni, compresa la sua durata." -#: utils/misc/guc.c:1051 +#: utils/misc/guc.c:1042 msgid "Logs each replication command." msgstr "Registra nel log ogni comando di replica." -#: utils/misc/guc.c:1060 +#: utils/misc/guc.c:1051 msgid "Shows whether the running server has assertion checks enabled." msgstr "Mostra se il server in esecuzione ha i controlli di assert attivi." -#: utils/misc/guc.c:1075 +#: utils/misc/guc.c:1066 msgid "Terminate session on any error." msgstr "Termina la sessione su qualunque errore." -#: utils/misc/guc.c:1084 +#: utils/misc/guc.c:1075 msgid "Reinitialize server after backend crash." msgstr "Reinizializza il server dopo un crash del backend." -#: utils/misc/guc.c:1094 +#: utils/misc/guc.c:1085 msgid "Logs the duration of each completed SQL statement." msgstr "Registra nel log la durata di ogni istruzione SQL completata." -#: utils/misc/guc.c:1103 +#: utils/misc/guc.c:1094 msgid "Logs each query's parse tree." msgstr "Registra nel log l'albero di parsing di tutte le query." -#: utils/misc/guc.c:1112 +#: utils/misc/guc.c:1103 msgid "Logs each query's rewritten parse tree." msgstr "Registra nel log l'albero di parsing riscritto di tutte le query." -#: utils/misc/guc.c:1121 +#: utils/misc/guc.c:1112 msgid "Logs each query's execution plan." msgstr "Registra nel log il piano di esecuzione di tutte le query." -#: utils/misc/guc.c:1130 +#: utils/misc/guc.c:1121 msgid "Indents parse and plan tree displays." msgstr "Indenta gli alberi di parsing e dei piani di esecuzione." -#: utils/misc/guc.c:1139 +#: utils/misc/guc.c:1130 msgid "Writes parser performance statistics to the server log." msgstr "Registra nel log del server le statistiche sulle prestazioni del parser." -#: utils/misc/guc.c:1148 +#: utils/misc/guc.c:1139 msgid "Writes planner performance statistics to the server log." msgstr "Registra nel log del server le statistiche sulle prestazioni del planner." -#: utils/misc/guc.c:1157 +#: utils/misc/guc.c:1148 msgid "Writes executor performance statistics to the server log." msgstr "Registra nel log del server le statistiche sulle prestazioni dell'esecutore." -#: utils/misc/guc.c:1166 +#: utils/misc/guc.c:1157 msgid "Writes cumulative performance statistics to the server log." msgstr "Registra nel log del server le statistiche sulle prestazioni cumulative." -#: utils/misc/guc.c:1176 +#: utils/misc/guc.c:1167 msgid "Logs system resource usage statistics (memory and CPU) on various B-tree operations." msgstr "Registra nel log statistiche sull'uso di risorse di sistema (memoria e CPU) su varie operazioni B-tree." -#: utils/misc/guc.c:1188 +#: utils/misc/guc.c:1179 msgid "Collects information about executing commands." msgstr "Raccogli informazioni sull'esecuzione dei comandi." -#: utils/misc/guc.c:1189 +#: utils/misc/guc.c:1180 msgid "Enables the collection of information on the currently executing command of each session, along with the time at which that command began execution." msgstr "Abilita la raccolta di informazioni sui comandi in esecuzione per ogni sessione, insieme all'orario in cui l'esecuzione del comando è iniziata." -#: utils/misc/guc.c:1199 +#: utils/misc/guc.c:1190 msgid "Collects statistics on database activity." msgstr "Raccogli statistiche sull'attività del database." -#: utils/misc/guc.c:1208 +#: utils/misc/guc.c:1199 msgid "Collects timing statistics for database I/O activity." msgstr "Raccogli statistiche sull'attività di I/O del database." -#: utils/misc/guc.c:1218 +#: utils/misc/guc.c:1209 msgid "Updates the process title to show the active SQL command." msgstr "Aggiorna il titolo del processo per indicare il comando SQL in esecuzione." -#: utils/misc/guc.c:1219 +#: utils/misc/guc.c:1210 msgid "Enables updating of the process title every time a new SQL command is received by the server." msgstr "Abilita l'aggiornamento del titolo del processo ogni volta che un nuovo comando SQL viene ricevuto dal server." -#: utils/misc/guc.c:1228 +#: utils/misc/guc.c:1223 msgid "Starts the autovacuum subprocess." msgstr "Avvia il sottoprocesso autovacuum." -#: utils/misc/guc.c:1238 +#: utils/misc/guc.c:1233 msgid "Generates debugging output for LISTEN and NOTIFY." msgstr "Genera un output di debug per LISTEN e NOTIFY." -#: utils/misc/guc.c:1250 +#: utils/misc/guc.c:1245 msgid "Emits information about lock usage." msgstr "Emette informazioni sull'uso dei lock." -#: utils/misc/guc.c:1260 +#: utils/misc/guc.c:1255 msgid "Emits information about user lock usage." msgstr "Emette informazioni sull'uso dei lock utente." -#: utils/misc/guc.c:1270 +#: utils/misc/guc.c:1265 msgid "Emits information about lightweight lock usage." msgstr "Emette informazioni sull'uso dei lock leggeri." -#: utils/misc/guc.c:1280 +#: utils/misc/guc.c:1275 msgid "Dumps information about all current locks when a deadlock timeout occurs." msgstr "Emette informazioni su tutti i lock attivi quando avviene un timeout di lock." -#: utils/misc/guc.c:1292 +#: utils/misc/guc.c:1287 msgid "Logs long lock waits." msgstr "Inserisci nel log le attese lunghe su lock." -#: utils/misc/guc.c:1302 +#: utils/misc/guc.c:1297 msgid "Logs the host name in the connection logs." msgstr "Inserisci nel log lo host name delle connessioni." -#: utils/misc/guc.c:1303 +#: utils/misc/guc.c:1298 msgid "By default, connection logs only show the IP address of the connecting host. If you want them to show the host name you can turn this on, but depending on your host name resolution setup it might impose a non-negligible performance penalty." msgstr "Normalmente, viene inserito nel log solo l'indirizzo IP dell'host connesso. Se vuoi mostrare anche il nome host puoi attivando questa parametro ma, a seconda di come è definito il sistema di risoluzione dei nomi, ciò potrebbe comportare una penalizzazione delle prestazioni non trascurabile." -#: utils/misc/guc.c:1314 +#: utils/misc/guc.c:1309 msgid "Causes subtables to be included by default in various commands." msgstr "Fa in modo che le sotto-tabelle vengano incluse in maniera predefinita in vari comandi." -#: utils/misc/guc.c:1323 +#: utils/misc/guc.c:1318 msgid "Encrypt passwords." msgstr "Cripta le password." -#: utils/misc/guc.c:1324 +#: utils/misc/guc.c:1319 msgid "When a password is specified in CREATE USER or ALTER USER without writing either ENCRYPTED or UNENCRYPTED, this parameter determines whether the password is to be encrypted." msgstr "Quando si indica una password in CREATE USER o ALTER USER senza indicare ENCRYPTED o UNENCRYPTED, questo parametro determina se la password debba essere criptata o meno." -#: utils/misc/guc.c:1334 +#: utils/misc/guc.c:1329 msgid "Treats \"expr=NULL\" as \"expr IS NULL\"." msgstr "Tratta l'espressione \"expr=NULL\" come \"expr IS NULL\"." -#: utils/misc/guc.c:1335 +#: utils/misc/guc.c:1330 msgid "When turned on, expressions of the form expr = NULL (or NULL = expr) are treated as expr IS NULL, that is, they return true if expr evaluates to the null value, and false otherwise. The correct behavior of expr = NULL is to always return null (unknown)." msgstr "Se abilitato, le espressioni nella forma expr = NULL (o NULL = expr) vengono trattate come expr IS NULL, in modo cioè che restituiscano TRUE se expr viene valutato con valore NULL e falso in ogni altro caso. Il comportamento corretto prevede che expr = NULL valga sempre NULL (sconosciuto)." -#: utils/misc/guc.c:1347 +#: utils/misc/guc.c:1342 msgid "Enables per-database user names." msgstr "Abilita nomi di utenti diversificati per ogni database." -#: utils/misc/guc.c:1356 +#: utils/misc/guc.c:1351 msgid "Sets the default read-only status of new transactions." msgstr "Imposta lo stato predefinito di sola lettura per le nuove transazioni." -#: utils/misc/guc.c:1365 +#: utils/misc/guc.c:1360 msgid "Sets the current transaction's read-only status." msgstr "Imposta lo stato di sola lettura per la transazione corrente." -#: utils/misc/guc.c:1375 +#: utils/misc/guc.c:1370 msgid "Sets the default deferrable status of new transactions." msgstr "Imposta lo stato predefinito deferibile per le nuove transazioni." -#: utils/misc/guc.c:1384 +#: utils/misc/guc.c:1379 msgid "Whether to defer a read-only serializable transaction until it can be executed with no possible serialization failures." msgstr "Indica se deferire una transazione serializzabile in sola lettura finché possa essere eseguita senza possibili fallimenti di serializzazione." -#: utils/misc/guc.c:1394 +#: utils/misc/guc.c:1389 msgid "Enable row security." msgstr "Abilita la sicurezza delle righe." -#: utils/misc/guc.c:1395 +#: utils/misc/guc.c:1390 msgid "When enabled, row security will be applied to all users." msgstr "Quando abilitata, la sicurezza delle righe verrà applicata a tutti gli utenti." -#: utils/misc/guc.c:1403 +#: utils/misc/guc.c:1398 msgid "Check function bodies during CREATE FUNCTION." msgstr "Esegui un controllo sulla definizione del corpo durante la CREATE FUNCTION." -#: utils/misc/guc.c:1412 +#: utils/misc/guc.c:1407 msgid "Enable input of NULL elements in arrays." msgstr "Abilita l'input di elementi NULL negli array." -#: utils/misc/guc.c:1413 +#: utils/misc/guc.c:1408 msgid "When turned on, unquoted NULL in an array input value means a null value; otherwise it is taken literally." msgstr "Se abilitato, un NULL senza apici come valore di input in un array indica un valore nullo; altrimenti è preso letteralmente." -#: utils/misc/guc.c:1423 +#: utils/misc/guc.c:1418 msgid "Create new tables with OIDs by default." msgstr "Crea le nuove tabella con gli OID in maniera predefinita." -#: utils/misc/guc.c:1432 +#: utils/misc/guc.c:1427 msgid "Start a subprocess to capture stderr output and/or csvlogs into log files." msgstr "Avvia un sottoprocesso per catturare in un file di log l'output di stderr e/o di csvlog." -#: utils/misc/guc.c:1441 +#: utils/misc/guc.c:1436 msgid "Truncate existing log files of same name during log rotation." msgstr "Tronca un file di log esistente con lo stesso nome durante la rotazione dei log." -#: utils/misc/guc.c:1452 +#: utils/misc/guc.c:1447 msgid "Emit information about resource usage in sorting." msgstr "Genera informazioni sull'uso delle risorse durante gli ordinamenti." -#: utils/misc/guc.c:1466 +#: utils/misc/guc.c:1461 msgid "Generate debugging output for synchronized scanning." msgstr "Genera output di debug per le scansioni sincronizzate." -#: utils/misc/guc.c:1481 +#: utils/misc/guc.c:1476 msgid "Enable bounded sorting using heap sort." msgstr "Abilita il bounded sorting usando lo heap sort." -#: utils/misc/guc.c:1494 +#: utils/misc/guc.c:1489 msgid "Emit WAL-related debugging output." msgstr "Genera output di debug relativo al WAL." -#: utils/misc/guc.c:1506 +#: utils/misc/guc.c:1501 msgid "Datetimes are integer based." msgstr "I valori di data e tempo sono basati su interi." -#: utils/misc/guc.c:1521 +#: utils/misc/guc.c:1516 msgid "Sets whether Kerberos and GSSAPI user names should be treated as case-insensitive." msgstr "Imposta se i nomi di utente con Kerberos e GSSAPI debbano essere trattati come case-insensitive." -#: utils/misc/guc.c:1531 +#: utils/misc/guc.c:1526 msgid "Warn about backslash escapes in ordinary string literals." msgstr "Avverti sull'uso degli escape con backslash nei letterali stringa ordinarie." -#: utils/misc/guc.c:1541 +#: utils/misc/guc.c:1536 msgid "Causes '...' strings to treat backslashes literally." msgstr "Fa sì che le stringhe '...' trattino i backslash letteralmente." -#: utils/misc/guc.c:1552 +#: utils/misc/guc.c:1547 msgid "Enable synchronized sequential scans." msgstr "Abilita le scansioni sequenziali sincronizzate." -#: utils/misc/guc.c:1562 +#: utils/misc/guc.c:1557 msgid "Allows connections and queries during recovery." msgstr "Consente connessioni e query durante il recupero" -#: utils/misc/guc.c:1572 +#: utils/misc/guc.c:1567 msgid "Allows feedback from a hot standby to the primary that will avoid query conflicts." msgstr "Consente un feedback da un hot standby al primario che eviterà conflitti di query" -#: utils/misc/guc.c:1582 +#: utils/misc/guc.c:1577 msgid "Allows modifications of the structure of system tables." msgstr "Consente le modifiche alla struttura delle tabelle di sistema." -#: utils/misc/guc.c:1593 +#: utils/misc/guc.c:1588 msgid "Disables reading from system indexes." msgstr "Disabilita la lettura dagli indici di sistema." -#: utils/misc/guc.c:1594 +#: utils/misc/guc.c:1589 msgid "It does not prevent updating the indexes, so it is safe to use. The worst consequence is slowness." msgstr "Non impedisce l'aggiornamento degli indici ed è perciò utilizzabile tranquillamente. Al peggio causa rallentamenti." -#: utils/misc/guc.c:1605 +#: utils/misc/guc.c:1600 msgid "Enables backward compatibility mode for privilege checks on large objects." msgstr "Abilita la modalità compatibile col passato del controllo dei privilegi sui large object." -#: utils/misc/guc.c:1606 +#: utils/misc/guc.c:1601 msgid "Skips privilege checks when reading or modifying large objects, for compatibility with PostgreSQL releases prior to 9.0." msgstr "Evita il controllo dei privilegi quando si leggono o modificano large object, per compatibilità con versioni di PostgreSQL precedenti la 9.0." -#: utils/misc/guc.c:1616 +#: utils/misc/guc.c:1611 msgid "Emit a warning for constructs that changed meaning since PostgreSQL 9.4." msgstr "Emetti un avviso per i costrutti che hanno cambiato significato da PostgreSQL 9.4." -#: utils/misc/guc.c:1626 +#: utils/misc/guc.c:1621 msgid "When generating SQL fragments, quote all identifiers." msgstr "Quando vengono generati frammenti SQL, metti tra virgolette tutti gli identificatori." -#: utils/misc/guc.c:1636 +#: utils/misc/guc.c:1631 msgid "Shows whether data checksums are turned on for this cluster." msgstr "Mostra se i checksum di dati sono attivi in questo cluster." -#: utils/misc/guc.c:1647 +#: utils/misc/guc.c:1642 msgid "Add sequence number to syslog messages to avoid duplicate suppression." msgstr "Aggiungi un numero sequenziale ai messaggi syslog per evitare la soppressione di duplicati." -#: utils/misc/guc.c:1657 +#: utils/misc/guc.c:1652 msgid "Split messages sent to syslog by lines and to fit into 1024 bytes." msgstr "Dividi i messaggi inviati a syslog in linee inferiori a 1024 byte." -#: utils/misc/guc.c:1676 +#: utils/misc/guc.c:1671 msgid "Forces a switch to the next xlog file if a new file has not been started within N seconds." msgstr "Forza il passaggio al successivo file xlog se un nuovo file non è avviato entro N secondi." -#: utils/misc/guc.c:1687 +#: utils/misc/guc.c:1682 msgid "Waits N seconds on connection startup after authentication." msgstr "Attendi N secondi all'avvio della connessione dopo l'autenticazione." -#: utils/misc/guc.c:1688 utils/misc/guc.c:2211 +#: utils/misc/guc.c:1683 utils/misc/guc.c:2206 msgid "This allows attaching a debugger to the process." msgstr "Ciò consente di agganciare un debugger al processo." -#: utils/misc/guc.c:1697 +#: utils/misc/guc.c:1692 msgid "Sets the default statistics target." msgstr "Definisce la destinazione delle statistiche di default." -#: utils/misc/guc.c:1698 +#: utils/misc/guc.c:1693 msgid "This applies to table columns that have not had a column-specific target set via ALTER TABLE SET STATISTICS." msgstr "Questo vale per le colonne di tabelle che non hanno definito una destinazione specifica per colonne per mezzo di un ALTER TABLE SET STATISTICS." -#: utils/misc/guc.c:1707 +#: utils/misc/guc.c:1702 msgid "Sets the FROM-list size beyond which subqueries are not collapsed." msgstr "Definisce la dimensione della lista FROM oltre la quale le sottoquery non vengono ridotte." -#: utils/misc/guc.c:1709 +#: utils/misc/guc.c:1704 msgid "The planner will merge subqueries into upper queries if the resulting FROM list would have no more than this many items." msgstr "Il planner fonderà le sottoquery nelle query superiori se la lista FROM risultante avrebbe non più di questi elementi." -#: utils/misc/guc.c:1719 +#: utils/misc/guc.c:1714 msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened." msgstr "Definisce la dimensione della lista FROM oltre la quale i costrutti JOIN non vengono più appiattiti." -#: utils/misc/guc.c:1721 +#: utils/misc/guc.c:1716 msgid "The planner will flatten explicit JOIN constructs into lists of FROM items whenever a list of no more than this many items would result." msgstr "Il planner appiattisce i costrutti di JOIN espliciti in liste di elementi FROM ogni volta che ne risulterebbe una lista con non più di questi elementi." -#: utils/misc/guc.c:1731 +#: utils/misc/guc.c:1726 msgid "Sets the threshold of FROM items beyond which GEQO is used." msgstr "Definisce la soglia di elementi FROM oltre la quale viene usato il GEQO." -#: utils/misc/guc.c:1740 +#: utils/misc/guc.c:1735 msgid "GEQO: effort is used to set the default for other GEQO parameters." msgstr "GEQO: prova a definire i default per gli altri parametri di GEQO." -#: utils/misc/guc.c:1749 +#: utils/misc/guc.c:1744 msgid "GEQO: number of individuals in the population." msgstr "GEQO: numero di individui nella popolazione." -#: utils/misc/guc.c:1750 utils/misc/guc.c:1759 +#: utils/misc/guc.c:1745 utils/misc/guc.c:1754 msgid "Zero selects a suitable default value." msgstr "Lo zero selezione un valore ammissibile come default." -#: utils/misc/guc.c:1758 +#: utils/misc/guc.c:1753 msgid "GEQO: number of iterations of the algorithm." msgstr "GEQO: numero di iterazioni dell'algoritmo." -#: utils/misc/guc.c:1769 +#: utils/misc/guc.c:1764 msgid "Sets the time to wait on a lock before checking for deadlock." msgstr "Definisce il tempo di attesa su un lock prima di verificare si tratti di un deadlock." -#: utils/misc/guc.c:1780 +#: utils/misc/guc.c:1775 msgid "Sets the maximum delay before canceling queries when a hot standby server is processing archived WAL data." msgstr "Imposta l'intervallo massimo prima di annullare le query quando un server in hot standby sta processando dati da un WAL archiviato." -#: utils/misc/guc.c:1791 +#: utils/misc/guc.c:1786 msgid "Sets the maximum delay before canceling queries when a hot standby server is processing streamed WAL data." msgstr "Imposta l'intervallo massimo prima di annullare le query quando un server in hot standby sta processando dati da un WAL streamed." -#: utils/misc/guc.c:1802 +#: utils/misc/guc.c:1797 msgid "Sets the maximum interval between WAL receiver status reports to the primary." msgstr "Imposta l'intervallo massimo tra i rapporti di stato del ricevitore dei WAL al primario." -#: utils/misc/guc.c:1813 +#: utils/misc/guc.c:1808 msgid "Sets the maximum wait time to receive data from the primary." msgstr "Imposta un tempo massimo di attesa per la ricezione di dati dal primario." -#: utils/misc/guc.c:1824 +#: utils/misc/guc.c:1819 msgid "Sets the maximum number of concurrent connections." msgstr "Imposta il numero massimo di connessioni concorrenti." -#: utils/misc/guc.c:1834 +#: utils/misc/guc.c:1829 msgid "Sets the number of connection slots reserved for superusers." msgstr "Imposta il numero di slot per connessioni riservate ai superutenti." -#: utils/misc/guc.c:1848 +#: utils/misc/guc.c:1843 msgid "Sets the number of shared memory buffers used by the server." msgstr "Imposta il numero di buffer di memoria condivisa usati dal server." -#: utils/misc/guc.c:1859 +#: utils/misc/guc.c:1854 msgid "Sets the maximum number of temporary buffers used by each session." msgstr "Definisce il numero massimo di buffer temporanei usati da ogni sessione." -#: utils/misc/guc.c:1870 +#: utils/misc/guc.c:1865 msgid "Sets the TCP port the server listens on." msgstr "Imposta il numero di porta TCP sulla quale il server è in ascolto." -#: utils/misc/guc.c:1880 +#: utils/misc/guc.c:1875 msgid "Sets the access permissions of the Unix-domain socket." msgstr "Imposta i permessi di accesso del socket di dominio Unix." -#: utils/misc/guc.c:1881 +#: utils/misc/guc.c:1876 msgid "Unix-domain sockets use the usual Unix file system permission set. The parameter value is expected to be a numeric mode specification in the form accepted by the chmod and umask system calls. (To use the customary octal format the number must start with a 0 (zero).)" msgstr "I socket di dominio Unix utilizzano i normali permessi dei file system Unix. Il valore del parametro deve essere la specifica numerica dei permessi nella stessa forma accettata dalle chiamate di sistema chmod e umask. (Per usare il classico formato ottale, il valore numerico deve iniziare con 0 (zero).)" -#: utils/misc/guc.c:1895 +#: utils/misc/guc.c:1890 msgid "Sets the file permissions for log files." msgstr "Imposta i permessi dei file di log." -#: utils/misc/guc.c:1896 +#: utils/misc/guc.c:1891 msgid "The parameter value is expected to be a numeric mode specification in the form accepted by the chmod and umask system calls. (To use the customary octal format the number must start with a 0 (zero).)" msgstr "Il valore del parametro deve essere la specifica numerica dei permessi nella stessa forma accettata dalle chiamate di sistema chmod e umask. (Per usare il classico formato ottale, il valore numerico deve iniziare con 0 (zero).)" -#: utils/misc/guc.c:1909 +#: utils/misc/guc.c:1904 msgid "Sets the maximum memory to be used for query workspaces." msgstr "Imposta la quantità massima di memoria utilizzabile per gli spazi di lavoro delle query." -#: utils/misc/guc.c:1910 +#: utils/misc/guc.c:1905 msgid "This much memory can be used by each internal sort operation and hash table before switching to temporary disk files." msgstr "Questa quantità di memoria può essere utilizzata per ogni operazione di ordinamento interno e per ogni tabella hash prima di passare ai file temporanei su disco." -#: utils/misc/guc.c:1922 +#: utils/misc/guc.c:1917 msgid "Sets the maximum memory to be used for maintenance operations." msgstr "Imposta la quantità massima di memoria utilizzabile per le operazioni di manutenzione." -#: utils/misc/guc.c:1923 +#: utils/misc/guc.c:1918 msgid "This includes operations such as VACUUM and CREATE INDEX." msgstr "Queste includono operazioni quali VACUUM e CREATE INDEX." -#: utils/misc/guc.c:1933 +#: utils/misc/guc.c:1928 msgid "Sets the maximum number of tuples to be sorted using replacement selection." msgstr "Imposta il numero massimo di tuple che possono essere ordinate usando il rimpiazzo della selezione." -#: utils/misc/guc.c:1934 +#: utils/misc/guc.c:1929 msgid "When more tuples than this are present, quicksort will be used." msgstr "Quando un è presente un numero maggiore di tuple verrà usato quicksort." -#: utils/misc/guc.c:1948 +#: utils/misc/guc.c:1943 msgid "Sets the maximum stack depth, in kilobytes." msgstr "Imposta la profondità massima dello stack, in kilobyte." -#: utils/misc/guc.c:1959 -msgid "Limits the total size of all temporary files used by each session." -msgstr "Limita la dimensione totale di tutti i file temporanei usata da ogni sessione" +#: utils/misc/guc.c:1954 +msgid "Limits the total size of all temporary files used by each process." +msgstr "Limita la dimensione totale di tutti i file temporanei usata da ogni processo." -#: utils/misc/guc.c:1960 +#: utils/misc/guc.c:1955 msgid "-1 means no limit." msgstr "-1 vuol dire senza limiti." -#: utils/misc/guc.c:1970 +#: utils/misc/guc.c:1965 msgid "Vacuum cost for a page found in the buffer cache." msgstr "Costo del VACUUM per una pagina trovata nella cache dei buffer." -#: utils/misc/guc.c:1980 +#: utils/misc/guc.c:1975 msgid "Vacuum cost for a page not found in the buffer cache." msgstr "Costo del VACUUM per una pagina non trovata nella cache dei buffer." -#: utils/misc/guc.c:1990 +#: utils/misc/guc.c:1985 msgid "Vacuum cost for a page dirtied by vacuum." msgstr "Costo del VACUUM per una pagina resa sporca dal VACUUM." -#: utils/misc/guc.c:2000 +#: utils/misc/guc.c:1995 msgid "Vacuum cost amount available before napping." msgstr "Costo totale del VACUUM prima della pausa." -#: utils/misc/guc.c:2010 +#: utils/misc/guc.c:2005 msgid "Vacuum cost delay in milliseconds." msgstr "Il costo del VACUUM come ritardo in millisecondi." -#: utils/misc/guc.c:2021 +#: utils/misc/guc.c:2016 msgid "Vacuum cost delay in milliseconds, for autovacuum." msgstr "Il costo del VACUUM come ritardo in millisecondi, per l'autovacuum." -#: utils/misc/guc.c:2032 +#: utils/misc/guc.c:2027 msgid "Vacuum cost amount available before napping, for autovacuum." msgstr "Il costo totale del VACUUM prima della pausa, per l'autovacuum." -#: utils/misc/guc.c:2042 +#: utils/misc/guc.c:2037 msgid "Sets the maximum number of simultaneously open files for each server process." msgstr "Imposta il numero massimo di file aperti contemporaneamente per ogni processo server." -#: utils/misc/guc.c:2055 +#: utils/misc/guc.c:2050 msgid "Sets the maximum number of simultaneously prepared transactions." msgstr "Imposta il numero massimo di transazioni preparate contemporanee." -#: utils/misc/guc.c:2066 +#: utils/misc/guc.c:2061 msgid "Sets the minimum OID of tables for tracking locks." msgstr "Imposta l'OID minimo delle tabelle per tracciare i lock." -#: utils/misc/guc.c:2067 +#: utils/misc/guc.c:2062 msgid "Is used to avoid output on system tables." msgstr "È usato per evitare l'output su tabelle di sistema." -#: utils/misc/guc.c:2076 +#: utils/misc/guc.c:2071 msgid "Sets the OID of the table with unconditionally lock tracing." msgstr "Imposta l'OID delle tabelle con tracciamento dei lock non facoltativo." -#: utils/misc/guc.c:2088 +#: utils/misc/guc.c:2083 msgid "Sets the maximum allowed duration of any statement." msgstr "Imposta la durata massima consentita per qualsiasi istruzione." -#: utils/misc/guc.c:2089 utils/misc/guc.c:2100 utils/misc/guc.c:2111 +#: utils/misc/guc.c:2084 utils/misc/guc.c:2095 utils/misc/guc.c:2106 msgid "A value of 0 turns off the timeout." msgstr "Il valore 0 disabilita il timeout." -#: utils/misc/guc.c:2099 +#: utils/misc/guc.c:2094 msgid "Sets the maximum allowed duration of any wait for a lock." msgstr "Imposta la durata massima consentita di qualsiasi attesa per un lock." -#: utils/misc/guc.c:2110 +#: utils/misc/guc.c:2105 msgid "Sets the maximum allowed duration of any idling transaction." msgstr "Imposta la durata massima permessa per ogni transazione inattiva." -#: utils/misc/guc.c:2121 +#: utils/misc/guc.c:2116 msgid "Minimum age at which VACUUM should freeze a table row." msgstr "Anzianità minima alla quale il VACUUM deve congelare una riga di tabella." -#: utils/misc/guc.c:2131 +#: utils/misc/guc.c:2126 msgid "Age at which VACUUM should scan whole table to freeze tuples." msgstr "Anzianità alla quale il VACUUM deve scandire l'intera tabella per congelarne le tuple." -#: utils/misc/guc.c:2141 +#: utils/misc/guc.c:2136 msgid "Minimum age at which VACUUM should freeze a MultiXactId in a table row." msgstr "Anzianità minima alla quale VACUUM deve congelare un MultiXactId in una riga di tabella." -#: utils/misc/guc.c:2151 +#: utils/misc/guc.c:2146 msgid "Multixact age at which VACUUM should scan whole table to freeze tuples." msgstr "Anzianità del multixact alla quale VACUUM deve scandire tutta la tabella per congelare le tuple." -#: utils/misc/guc.c:2161 +#: utils/misc/guc.c:2156 msgid "Number of transactions by which VACUUM and HOT cleanup should be deferred, if any." msgstr "Numero di transazioni per cui VACUUM e pulizia HOT devono essere deferibili, se impostata." -#: utils/misc/guc.c:2174 +#: utils/misc/guc.c:2169 msgid "Sets the maximum number of locks per transaction." msgstr "Definisce il numero massimo di lock per transazione." -#: utils/misc/guc.c:2175 +#: utils/misc/guc.c:2170 msgid "The shared lock table is sized on the assumption that at most max_locks_per_transaction * max_connections distinct objects will need to be locked at any one time." msgstr "La tabella degli shared lock è dimensionata secondo l'assunzione che al massimo max_locks_per_transaction * max_connections distinti oggetti avranno bisogni di essere lockati in un determinato istante." -#: utils/misc/guc.c:2186 +#: utils/misc/guc.c:2181 msgid "Sets the maximum number of predicate locks per transaction." msgstr "Imposta il numero massimo di lock di predicato per transazione." -#: utils/misc/guc.c:2187 +#: utils/misc/guc.c:2182 msgid "The shared predicate lock table is sized on the assumption that at most max_pred_locks_per_transaction * max_connections distinct objects will need to be locked at any one time." msgstr "La tabella dei lock di predicato è dimensionata secondo l'assunzione che al massimo max_pred_locks_per_transaction * max_connections distinti oggetti avranno bisogni di essere lockati in un determinato istante." -#: utils/misc/guc.c:2198 +#: utils/misc/guc.c:2193 msgid "Sets the maximum allowed time to complete client authentication." msgstr "Imposta il tempo massimo consentito per completare l'autenticazione del client." -#: utils/misc/guc.c:2210 +#: utils/misc/guc.c:2205 msgid "Waits N seconds on connection startup before authentication." msgstr "Attendi N secondi all'avvio della connessione prima dell'autenticazione." -#: utils/misc/guc.c:2221 +#: utils/misc/guc.c:2216 msgid "Sets the number of WAL files held for standby servers." msgstr "Imposta il numero di file WAL trattenuti dai server in standby." -#: utils/misc/guc.c:2231 +#: utils/misc/guc.c:2226 msgid "Sets the minimum size to shrink the WAL to." msgstr "Imposta la dimensione minima a cui ridurre il file WAL." -#: utils/misc/guc.c:2242 +#: utils/misc/guc.c:2237 msgid "Sets the WAL size that triggers a checkpoint." msgstr "Imosta la dimensione del WAL che fa scattare un checkpoint." -#: utils/misc/guc.c:2253 +#: utils/misc/guc.c:2248 msgid "Sets the maximum time between automatic WAL checkpoints." msgstr "Imposta il tempo massimo intercorrente fra due checkpoint automatici del WAL." -#: utils/misc/guc.c:2264 +#: utils/misc/guc.c:2259 msgid "Enables warnings if checkpoint segments are filled more frequently than this." msgstr "Abilita gli avvertimenti se i segmenti dei checkpoint sono riempiti più frequentemente di questo valore." -#: utils/misc/guc.c:2266 +#: utils/misc/guc.c:2261 msgid "Write a message to the server log if checkpoints caused by the filling of checkpoint segment files happens more frequently than this number of seconds. Zero turns off the warning." msgstr "Scrive un messaggio nel log del server se i checkpoint dovuti al riempimento dei file dei segmenti dei checkpoint avvengono più frequentemente di questo numero di secondi. Il valore 0 (zero) disabilita questi avvisi." -#: utils/misc/guc.c:2278 +#: utils/misc/guc.c:2273 utils/misc/guc.c:2430 utils/misc/guc.c:2457 +msgid "Number of pages after which previously performed writes are flushed to disk." +msgstr "Numerp di pagine dopo il quale le scritture effettuate in precedenza sono scaricate su disco." + +#: utils/misc/guc.c:2284 msgid "Sets the number of disk-page buffers in shared memory for WAL." msgstr "Imposta il numero di buffer delle pagine su disco in shared memory per il WAL." -#: utils/misc/guc.c:2289 +#: utils/misc/guc.c:2295 msgid "Time between WAL flushes performed in the WAL writer." msgstr "Tempo tra due flush del WAL effettuati dal processo di scrittura WAL." -#: utils/misc/guc.c:2300 -msgid "Amount of WAL written out by WAL writer triggering a flush." -msgstr "Quantità di WAL emessa dal processo di scrittura che ha fatto scattare un flush." +#: utils/misc/guc.c:2306 +msgid "Amount of WAL written out by WAL writer that triggers a flush." +msgstr "Quantità di WAL da emettere dal processo di scrittura per far scattare un flush." -#: utils/misc/guc.c:2312 +#: utils/misc/guc.c:2318 msgid "Sets the maximum number of simultaneously running WAL sender processes." msgstr "Imposta il numero massimo di processi WAL sender in esecuzione simultanea." -#: utils/misc/guc.c:2323 +#: utils/misc/guc.c:2329 msgid "Sets the maximum number of simultaneously defined replication slots." msgstr "Imposta il numero massimo di slot di replica definiti simultaneamente." -#: utils/misc/guc.c:2333 +#: utils/misc/guc.c:2339 msgid "Sets the maximum time to wait for WAL replication." msgstr "Imposta il tempo di attesa massimo per una replica WAL." -#: utils/misc/guc.c:2344 +#: utils/misc/guc.c:2350 msgid "Sets the delay in microseconds between transaction commit and flushing WAL to disk." msgstr "Imposta il ritardo in microsecondi tra il commit della transazione e il flushing del WAL su disco." -#: utils/misc/guc.c:2356 +#: utils/misc/guc.c:2362 msgid "Sets the minimum concurrent open transactions before performing commit_delay." msgstr "Imposta il numero minimo di transazioni concorrenti aperte prima di eseguire un commit_delay" -#: utils/misc/guc.c:2367 +#: utils/misc/guc.c:2373 msgid "Sets the number of digits displayed for floating-point values." msgstr "Imposta il numero di cifre visualizzate per i valori in virgola mobile." -#: utils/misc/guc.c:2368 +#: utils/misc/guc.c:2374 msgid "This affects real, double precision, and geometric data types. The parameter value is added to the standard number of digits (FLT_DIG or DBL_DIG as appropriate)." msgstr "Ciò ha effetto sui tipi di dati real, double precision e geometrici. Il valore del parametro è sommato al numero standard di cifre (FLT_DIG o DBL_DIG a seconda dei casi)." -#: utils/misc/guc.c:2379 +#: utils/misc/guc.c:2385 msgid "Sets the minimum execution time above which statements will be logged." msgstr "Imposta il tempo minimo di esecuzione oltre il quale le istruzioni vengono registrate nel log." -#: utils/misc/guc.c:2381 +#: utils/misc/guc.c:2387 msgid "Zero prints all queries. -1 turns this feature off." msgstr "Il valore 0 (zero) fa sì che tutte le query siano registrate. Il valore -1 disabilita questa caratteristica." -#: utils/misc/guc.c:2391 +#: utils/misc/guc.c:2397 msgid "Sets the minimum execution time above which autovacuum actions will be logged." msgstr "Imposta il tempo minimo di esecuzione oltre il quale le azioni dell'autovacuum vengono registrate nel log." -#: utils/misc/guc.c:2393 +#: utils/misc/guc.c:2399 msgid "Zero prints all actions. -1 turns autovacuum logging off." msgstr "Il valore 0 (zero) fa sì che tutte le azioni siano registrate. Il valore -1 disabilita il logging dell'autovacuum." -#: utils/misc/guc.c:2403 +#: utils/misc/guc.c:2409 msgid "Background writer sleep time between rounds." msgstr "Il tempo di pausa fra due tornate del background writer." -#: utils/misc/guc.c:2414 +#: utils/misc/guc.c:2420 msgid "Background writer maximum number of LRU pages to flush per round." msgstr "Il numero massimo di pagine LRU che il background writer scarica ad ogni tornata." -#: utils/misc/guc.c:2426 +#: utils/misc/guc.c:2443 msgid "Number of simultaneous requests that can be handled efficiently by the disk subsystem." msgstr "Il numero di richieste simultanee che possono essere gestite con efficienza dal sottosistema a dischi." -#: utils/misc/guc.c:2427 +#: utils/misc/guc.c:2444 msgid "For RAID arrays, this should be approximately the number of drive spindles in the array." msgstr "Per i sistemi RAID, questo valore è pari all'incirca al numero di dischi fisici nell'array." -#: utils/misc/guc.c:2440 utils/misc/guc.c:2452 utils/misc/guc.c:2464 -msgid "Number of pages after which previously performed writes are flushed to disk." -msgstr "Numerp di pagine dopo il quale le scritture effettuate in precedenza sono scaricate su disco." - -#: utils/misc/guc.c:2478 +#: utils/misc/guc.c:2470 msgid "Maximum number of concurrent worker processes." msgstr "Numero massimo di processi worker concorrenti." -#: utils/misc/guc.c:2488 +#: utils/misc/guc.c:2480 msgid "Automatic log file rotation will occur after N minutes." msgstr "La rotazione automatica dei log avviene dopo N minuti." -#: utils/misc/guc.c:2499 +#: utils/misc/guc.c:2491 msgid "Automatic log file rotation will occur after N kilobytes." msgstr "La rotazione automatica dei log avviene dopo N kilobyte." -#: utils/misc/guc.c:2510 +#: utils/misc/guc.c:2502 msgid "Shows the maximum number of function arguments." msgstr "Mostra il numero massimo di argomenti delle funzioni." -#: utils/misc/guc.c:2521 +#: utils/misc/guc.c:2513 msgid "Shows the maximum number of index keys." msgstr "Mostra il numero massimo di chiavi degli indici." -#: utils/misc/guc.c:2532 +#: utils/misc/guc.c:2524 msgid "Shows the maximum identifier length." msgstr "Mostra la lunghezza massima per gli identificatori." -#: utils/misc/guc.c:2543 +#: utils/misc/guc.c:2535 msgid "Shows the size of a disk block." msgstr "Mostra la dimensione di un blocco su disco." -#: utils/misc/guc.c:2554 +#: utils/misc/guc.c:2546 msgid "Shows the number of pages per disk file." msgstr "Mostra il numero di pagine per file su disco." -#: utils/misc/guc.c:2565 +#: utils/misc/guc.c:2557 msgid "Shows the block size in the write ahead log." msgstr "Mostra la dimensione del log di write ahead." -#: utils/misc/guc.c:2576 +#: utils/misc/guc.c:2568 msgid "Sets the time to wait before retrying to retrieve WAL after a failed attempt." msgstr "Imposta il tempo di attesa prima di riprovare a recuperare un WAL dopo un tentativo fallito." -#: utils/misc/guc.c:2588 +#: utils/misc/guc.c:2580 msgid "Shows the number of pages per write ahead log segment." msgstr "Mostra il numero di pagine per un segmento del log di write ahead." -#: utils/misc/guc.c:2601 +#: utils/misc/guc.c:2593 msgid "Time to sleep between autovacuum runs." msgstr "Tempo di pausa fra due esecuzioni di autovacuum." -#: utils/misc/guc.c:2611 +#: utils/misc/guc.c:2603 msgid "Minimum number of tuple updates or deletes prior to vacuum." msgstr "Numero minimo di modifiche o cancellazioni di tuple prima dell'esecuzione di un autovacuum." -#: utils/misc/guc.c:2620 +#: utils/misc/guc.c:2612 msgid "Minimum number of tuple inserts, updates, or deletes prior to analyze." msgstr "Numero minimo di inserimenti, modifiche o cancellazioni di tuple prima dell'esecuzione di un analyze." -#: utils/misc/guc.c:2630 +#: utils/misc/guc.c:2622 msgid "Age at which to autovacuum a table to prevent transaction ID wraparound." msgstr "Anzianità alla quale eseguire un autovacuum su una tabella per prevenire il wraparound dell'ID delle transazioni." -#: utils/misc/guc.c:2641 +#: utils/misc/guc.c:2633 msgid "Multixact age at which to autovacuum a table to prevent multixact wraparound." msgstr "Anzianità multixaxt a cui eseguire l'autovacuum di una tabella per prevenire il wraparound del multixact." -#: utils/misc/guc.c:2651 +#: utils/misc/guc.c:2643 msgid "Sets the maximum number of simultaneously running autovacuum worker processes." msgstr "Imposta il numero massimo dei processi worker dell'autovacuum in esecuzione contemporanea." -#: utils/misc/guc.c:2661 +#: utils/misc/guc.c:2653 msgid "Sets the maximum number of parallel processes per executor node." msgstr "Imposta il numero massimo di processi paralleli per nodo di esecuzione." -#: utils/misc/guc.c:2671 +#: utils/misc/guc.c:2663 msgid "Sets the maximum memory to be used by each autovacuum worker process." msgstr "Imposta la memoria massima utilizzabile da ogni processo autovacuum." -#: utils/misc/guc.c:2682 +#: utils/misc/guc.c:2674 msgid "Time before a snapshot is too old to read pages changed after the snapshot was taken." msgstr "Tempo prima che uno snapshot sia troppo vecchio per leggere le pagine cambiate dopo che era stato effettuato." -#: utils/misc/guc.c:2683 +#: utils/misc/guc.c:2675 msgid "A value of -1 disables this feature." msgstr "Il valore -1 disabilita questa feature." -#: utils/misc/guc.c:2693 +#: utils/misc/guc.c:2685 msgid "Time between issuing TCP keepalives." msgstr "Tempo di attesa fra due keepalive TCP." -#: utils/misc/guc.c:2694 utils/misc/guc.c:2705 +#: utils/misc/guc.c:2686 utils/misc/guc.c:2697 msgid "A value of 0 uses the system default." msgstr "Il valore 0 (zero) fa sì che si applichi il valore predefinito di sistema." -#: utils/misc/guc.c:2704 +#: utils/misc/guc.c:2696 msgid "Time between TCP keepalive retransmits." msgstr "Tempo che intercorre fra due ritrasmissioni del keepalive TCP." -#: utils/misc/guc.c:2715 +#: utils/misc/guc.c:2707 msgid "SSL renegotiation is no longer supported; this can only be 0." msgstr "Il rinegoziamento SSL non è più supportato: può essere solo 0." -#: utils/misc/guc.c:2726 +#: utils/misc/guc.c:2718 msgid "Maximum number of TCP keepalive retransmits." msgstr "Numero massimo di ritrasmissioni del keepalive TCP." -#: utils/misc/guc.c:2727 +#: utils/misc/guc.c:2719 msgid "This controls the number of consecutive keepalive retransmits that can be lost before a connection is considered dead. A value of 0 uses the system default." msgstr "Ciò controlla il numero di ritrasmissioni consecutive del keepalive che possono andare perdute prima che una connessione sia considerata morta. Il valore 0 (zero) fa sì che si applichi il valore predefinito di sistema." -#: utils/misc/guc.c:2738 +#: utils/misc/guc.c:2730 msgid "Sets the maximum allowed result for exact search by GIN." msgstr "Imposta il risultato massimo consentito per le ricerche esatte tramite GIN." -#: utils/misc/guc.c:2749 +#: utils/misc/guc.c:2741 msgid "Sets the planner's assumption about the size of the disk cache." msgstr "Imposta le assunzioni del planner in merito alla dimensione della cache dei dischi." -#: utils/misc/guc.c:2750 +#: utils/misc/guc.c:2742 msgid "That is, the portion of the kernel's disk cache that will be used for PostgreSQL data files. This is measured in disk pages, which are normally 8 kB each." msgstr "Cioè la porzione della cache dei dischi nel kernel che sarà usata per i file dati di PostgreSQL. Viene misurata in pagine disco, che normalmente sono da 8 KB ciascuna." -#: utils/misc/guc.c:2763 +#: utils/misc/guc.c:2754 +msgid "Sets the minimum size of relations to be considered for parallel scan." +msgstr "Imposta la dimensione minima delle relazioni da considerare per una scansione parallela." + +#: utils/misc/guc.c:2766 msgid "Shows the server version as an integer." msgstr "Mostra la versione del server come un intero." -#: utils/misc/guc.c:2774 +#: utils/misc/guc.c:2777 msgid "Log the use of temporary files larger than this number of kilobytes." msgstr "Registra nel log l'uso di file temporanei più grandi di questo numero di kilobyte." -#: utils/misc/guc.c:2775 +#: utils/misc/guc.c:2778 msgid "Zero logs all files. The default is -1 (turning this feature off)." msgstr "Il valore 0 (zero) fa registrare tutti i file. Il default è -1 (che disabilita la registrazione)." -#: utils/misc/guc.c:2785 +#: utils/misc/guc.c:2788 msgid "Sets the size reserved for pg_stat_activity.query, in bytes." msgstr "Imposta la dimensione in byte riservata a pg_stat_activity.query." -#: utils/misc/guc.c:2800 +#: utils/misc/guc.c:2803 msgid "Sets the maximum size of the pending list for GIN index." msgstr "Imposta la dimensione massima della lista di attesa per gli indici GIN." -#: utils/misc/guc.c:2820 +#: utils/misc/guc.c:2823 msgid "Sets the planner's estimate of the cost of a sequentially fetched disk page." msgstr "Imposta la stima del planner del costo di una pagina di disco letta sequenzialmente." -#: utils/misc/guc.c:2830 +#: utils/misc/guc.c:2833 msgid "Sets the planner's estimate of the cost of a nonsequentially fetched disk page." msgstr "Imposta la stima del planner del costo di una pagina di disco letta non sequenzialmente." -#: utils/misc/guc.c:2840 +#: utils/misc/guc.c:2843 msgid "Sets the planner's estimate of the cost of processing each tuple (row)." msgstr "Imposta la stima del planner del costo di elaborazione di ogni tupla (riga)." -#: utils/misc/guc.c:2850 +#: utils/misc/guc.c:2853 msgid "Sets the planner's estimate of the cost of processing each index entry during an index scan." msgstr "Imposta la stima del il planner del costo di elaborazione di un singolo elemento di indice durante una scansione di indice." -#: utils/misc/guc.c:2860 +#: utils/misc/guc.c:2863 msgid "Sets the planner's estimate of the cost of processing each operator or function call." msgstr "Imposta la stima del planner del costo di elaborazione di un singolo operatore o chiamata di funzione." -#: utils/misc/guc.c:2870 +#: utils/misc/guc.c:2873 msgid "Sets the planner's estimate of the cost of passing each tuple (row) from worker to master backend." -msgstr "Imposta la stima del planner del costo di passare ogni tupla (riga) dal lavoratore al backend master." +msgstr "Imposta la stima del planner del costo di passare ogni tupla (riga) dal worker al backend master." -#: utils/misc/guc.c:2880 +#: utils/misc/guc.c:2883 msgid "Sets the planner's estimate of the cost of starting up worker processes for parallel query." msgstr "Imposta la stima del planner del costo di avvio dei processi worker per una query parallela." -#: utils/misc/guc.c:2891 +#: utils/misc/guc.c:2894 msgid "Sets the planner's estimate of the fraction of a cursor's rows that will be retrieved." msgstr "Imposta la stima del planner della frazione delle righe di un cursore che verranno lette." -#: utils/misc/guc.c:2902 +#: utils/misc/guc.c:2905 msgid "GEQO: selective pressure within the population." msgstr "GEQO: pressione selettiva all'interno della popolazione." -#: utils/misc/guc.c:2912 +#: utils/misc/guc.c:2915 msgid "GEQO: seed for random path selection." msgstr "GEQO: seme per la selezione casuale dei percorsi." -#: utils/misc/guc.c:2922 +#: utils/misc/guc.c:2925 msgid "Multiple of the average buffer usage to free per round." msgstr "Multiplo dell'utilizzo medio dei buffer da liberarsi ad ogni giro." -#: utils/misc/guc.c:2932 +#: utils/misc/guc.c:2935 msgid "Sets the seed for random-number generation." msgstr "Imposta il seme per la generazione di numeri casuali." -#: utils/misc/guc.c:2943 +#: utils/misc/guc.c:2946 msgid "Number of tuple updates or deletes prior to vacuum as a fraction of reltuples." msgstr "Il numero di modifiche o cancellazioni di tuple prima di un VACUUM, come frazione di reltuples." -#: utils/misc/guc.c:2952 +#: utils/misc/guc.c:2955 msgid "Number of tuple inserts, updates, or deletes prior to analyze as a fraction of reltuples." msgstr "Numero di inserimenti, modifiche o cancellazioni di tuple prima di un ANALYZE, come frazione di reltuples." -#: utils/misc/guc.c:2962 +#: utils/misc/guc.c:2965 msgid "Time spent flushing dirty buffers during checkpoint, as fraction of checkpoint interval." msgstr "Il tempo speso nell'eseguire il flush dei buffer sporchi durante i checkpoint, come frazione dell'intervallo di checkpoint." -#: utils/misc/guc.c:2981 +#: utils/misc/guc.c:2984 msgid "Sets the shell command that will be called to archive a WAL file." msgstr "Imposta il comando di shell che verrà eseguito per archiviare un file WAL." -#: utils/misc/guc.c:2991 +#: utils/misc/guc.c:2994 msgid "Sets the client's character set encoding." msgstr "Imposta la codifica dei caratteri del client." -#: utils/misc/guc.c:3002 +#: utils/misc/guc.c:3005 msgid "Controls information prefixed to each log line." msgstr "Controlla l'informazione usata come prefisso per ogni riga di log." -#: utils/misc/guc.c:3003 +#: utils/misc/guc.c:3006 msgid "If blank, no prefix is used." msgstr "Se lasciata vuota non sarà usato alcun prefisso." -#: utils/misc/guc.c:3012 +#: utils/misc/guc.c:3015 msgid "Sets the time zone to use in log messages." msgstr "Imposta il fuso orario da usarsi nei messaggi di log." -#: utils/misc/guc.c:3022 +#: utils/misc/guc.c:3025 msgid "Sets the display format for date and time values." msgstr "Imposta il formato per la visualizzazione dei valori di data e ora." -#: utils/misc/guc.c:3023 +#: utils/misc/guc.c:3026 msgid "Also controls interpretation of ambiguous date inputs." msgstr "Controlla anche l'interpretazione di input ambigui per le date." -#: utils/misc/guc.c:3034 +#: utils/misc/guc.c:3037 msgid "Sets the default tablespace to create tables and indexes in." msgstr "Imposta il tablespace di default in cui create tabelle e indici." -#: utils/misc/guc.c:3035 +#: utils/misc/guc.c:3038 msgid "An empty string selects the database's default tablespace." msgstr "Una stringa vuota selezione il tablespace predefinito del database." -#: utils/misc/guc.c:3045 +#: utils/misc/guc.c:3048 msgid "Sets the tablespace(s) to use for temporary tables and sort files." msgstr "Definisce i(l) tablespace da usarsi per le tabelle temporanee e i file di ordinamento." -#: utils/misc/guc.c:3056 +#: utils/misc/guc.c:3059 msgid "Sets the path for dynamically loadable modules." msgstr "Definisce il percorso per i moduli caricabili dinamicamente." -#: utils/misc/guc.c:3057 +#: utils/misc/guc.c:3060 msgid "If a dynamically loadable module needs to be opened and the specified name does not have a directory component (i.e., the name does not contain a slash), the system will search this path for the specified file." msgstr "Se si deve aprire un modulo caricabile dinamicamente e il nome specificato non contiene un percorso di directory (se non contiene uno slash) il sistema cercherà il file specificato in questo percorso." -#: utils/misc/guc.c:3070 +#: utils/misc/guc.c:3073 msgid "Sets the location of the Kerberos server key file." msgstr "Imposta la posizione del key file del server Kerberos." -#: utils/misc/guc.c:3081 +#: utils/misc/guc.c:3084 msgid "Sets the Bonjour service name." msgstr "Imposta il nome del servizio Bonjour." -#: utils/misc/guc.c:3093 +#: utils/misc/guc.c:3096 msgid "Shows the collation order locale." msgstr "Mostra la localizzazione dell'ordine di collazione." -#: utils/misc/guc.c:3104 +#: utils/misc/guc.c:3107 msgid "Shows the character classification and case conversion locale." msgstr "Mostra la localizzazione per la classificazione dei caratteri e la conversione maiuscole/minuscole." -#: utils/misc/guc.c:3115 +#: utils/misc/guc.c:3118 msgid "Sets the language in which messages are displayed." msgstr "Mostra la lingua in cui i messaggi sono visualizzati." -#: utils/misc/guc.c:3125 +#: utils/misc/guc.c:3128 msgid "Sets the locale for formatting monetary amounts." msgstr "Imposta la localizzazione per la formattazione delle quantità monetarie." -#: utils/misc/guc.c:3135 +#: utils/misc/guc.c:3138 msgid "Sets the locale for formatting numbers." msgstr "Imposta la localizzazione per la formattazione dei numeri." -#: utils/misc/guc.c:3145 +#: utils/misc/guc.c:3148 msgid "Sets the locale for formatting date and time values." msgstr "Imposta la localizzazione per la formattazione per i valori di tipo data e ora." -#: utils/misc/guc.c:3155 +#: utils/misc/guc.c:3158 msgid "Lists shared libraries to preload into each backend." msgstr "Imposta la lista delle librerie condivise da precaricare on ogni backend." -#: utils/misc/guc.c:3166 +#: utils/misc/guc.c:3169 msgid "Lists shared libraries to preload into server." msgstr "Imposta la lista delle librerie condivise da precaricare nel server." -#: utils/misc/guc.c:3177 +#: utils/misc/guc.c:3180 msgid "Lists unprivileged shared libraries to preload into each backend." msgstr "Imposta la lista delle librarie condivise non privilegiate da precaricare in ogni backend." -#: utils/misc/guc.c:3188 +#: utils/misc/guc.c:3191 msgid "Sets the schema search order for names that are not schema-qualified." msgstr "Imposta l'ordine di ricerca degli schema per i nomi che non hanno un qualifica di schema." -#: utils/misc/guc.c:3200 +#: utils/misc/guc.c:3203 msgid "Sets the server (database) character set encoding." msgstr "Imposta la codifica del set di caratteri per il server (database)." -#: utils/misc/guc.c:3212 +#: utils/misc/guc.c:3215 msgid "Shows the server version." msgstr "Mostra la versione del server." -#: utils/misc/guc.c:3224 +#: utils/misc/guc.c:3227 msgid "Sets the current role." msgstr "Mostra il ruolo corrente." -#: utils/misc/guc.c:3236 +#: utils/misc/guc.c:3239 msgid "Sets the session user name." msgstr "Mostra il nome dell'utente della sessione." -#: utils/misc/guc.c:3247 +#: utils/misc/guc.c:3250 msgid "Sets the destination for server log output." msgstr "Imposta la destinazione per l'output dei log del server." -#: utils/misc/guc.c:3248 +#: utils/misc/guc.c:3251 msgid "Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and \"eventlog\", depending on the platform." msgstr "I valori validi sono combinazioni di \"stderr\", \"syslog\", \"csvlog\" ed \"eventlog\", a seconda delle piattaforme." -#: utils/misc/guc.c:3259 +#: utils/misc/guc.c:3262 msgid "Sets the destination directory for log files." msgstr "Imposta la directory di destinazione dei file di log." -#: utils/misc/guc.c:3260 +#: utils/misc/guc.c:3263 msgid "Can be specified as relative to the data directory or as absolute path." msgstr "Può essere specificata sia come relativa alla directory data sia come percorso assoluto." -#: utils/misc/guc.c:3270 +#: utils/misc/guc.c:3273 msgid "Sets the file name pattern for log files." msgstr "Imposta il pattern dei nomi dei file di log." -#: utils/misc/guc.c:3281 +#: utils/misc/guc.c:3284 msgid "Sets the program name used to identify PostgreSQL messages in syslog." msgstr "Imposta il nome del programma da utilizzato per identificare i messaggi di PostgreSQL in syslog." -#: utils/misc/guc.c:3292 +#: utils/misc/guc.c:3295 msgid "Sets the application name used to identify PostgreSQL messages in the event log." msgstr "Imposta il nome del programma da usarsi per identificare i messaggi di PostgreSQL nel registro degli eventi." -#: utils/misc/guc.c:3303 +#: utils/misc/guc.c:3306 msgid "Sets the time zone for displaying and interpreting time stamps." msgstr "Imposta il fuso orario per visualizzare ed interpretare gli orari." -#: utils/misc/guc.c:3313 +#: utils/misc/guc.c:3316 msgid "Selects a file of time zone abbreviations." msgstr "Seleziona un file contenente le abbreviazioni dei fusi orari." -#: utils/misc/guc.c:3323 +#: utils/misc/guc.c:3326 msgid "Sets the current transaction's isolation level." msgstr "Imposta il livello di isolamento per la transazione in corso." -#: utils/misc/guc.c:3334 +#: utils/misc/guc.c:3337 msgid "Sets the owning group of the Unix-domain socket." msgstr "Imposta il gruppo di appartenenza per i socket di dominio Unix." -#: utils/misc/guc.c:3335 +#: utils/misc/guc.c:3338 msgid "The owning user of the socket is always the user that starts the server." msgstr "L'utente che possiede il socket è sempre l'utente che ha avviato il server." -#: utils/misc/guc.c:3345 +#: utils/misc/guc.c:3348 msgid "Sets the directories where Unix-domain sockets will be created." msgstr "Imposta la directory dove i socket di dominio Unix verranno creati." -#: utils/misc/guc.c:3360 +#: utils/misc/guc.c:3363 msgid "Sets the host name or IP address(es) to listen to." msgstr "Imposta il nome host o gli indirizzi IP su cui ascoltare." -#: utils/misc/guc.c:3375 +#: utils/misc/guc.c:3378 msgid "Sets the server's data directory." msgstr "Imposta la posizione della directory dati" -#: utils/misc/guc.c:3386 +#: utils/misc/guc.c:3389 msgid "Sets the server's main configuration file." msgstr "Imposta il file primario di configurazione del server." -#: utils/misc/guc.c:3397 +#: utils/misc/guc.c:3400 msgid "Sets the server's \"hba\" configuration file." msgstr "Imposta il file di configurazione \"hba\" del server." -#: utils/misc/guc.c:3408 +#: utils/misc/guc.c:3411 msgid "Sets the server's \"ident\" configuration file." msgstr "Imposta il file di configurazione \"ident\" del server." -#: utils/misc/guc.c:3419 +#: utils/misc/guc.c:3422 msgid "Writes the postmaster PID to the specified file." msgstr "Scrivi il PID del postmaster nel file specificato." -#: utils/misc/guc.c:3430 +#: utils/misc/guc.c:3433 msgid "Location of the SSL server certificate file." msgstr "Posizione del file di certificati del server SSL." -#: utils/misc/guc.c:3440 +#: utils/misc/guc.c:3443 msgid "Location of the SSL server private key file." msgstr "Posizione del file della chiave privata del server SSL." -#: utils/misc/guc.c:3450 +#: utils/misc/guc.c:3453 msgid "Location of the SSL certificate authority file." msgstr "Posizione del file di autorità dei certificati del server SSL." -#: utils/misc/guc.c:3460 +#: utils/misc/guc.c:3463 msgid "Location of the SSL certificate revocation list file." msgstr "Posizione del file della lista di revoche di certificati SSL." -#: utils/misc/guc.c:3470 +#: utils/misc/guc.c:3473 msgid "Writes temporary statistics files to the specified directory." msgstr "Scrive i file di statistiche temporanee nella directory specificata." -#: utils/misc/guc.c:3481 +#: utils/misc/guc.c:3484 msgid "Number of synchronous standbys and list of names of potential synchronous ones." msgstr "Numero di standby sincroni e lista dei nomi di quelli potenziali sincroni." -#: utils/misc/guc.c:3492 +#: utils/misc/guc.c:3495 msgid "Sets default text search configuration." msgstr "Imposta la configurazione di ricerca di testo predefinita." -#: utils/misc/guc.c:3502 +#: utils/misc/guc.c:3505 msgid "Sets the list of allowed SSL ciphers." msgstr "Imposta la lista di codici SSL consentiti." -#: utils/misc/guc.c:3517 +#: utils/misc/guc.c:3520 msgid "Sets the curve to use for ECDH." msgstr "Imposta la curva da usare per l'ECHD." -#: utils/misc/guc.c:3532 +#: utils/misc/guc.c:3535 msgid "Sets the application name to be reported in statistics and logs." msgstr "Imposta il nome dell'applicazione da riportare nelle statistiche e nei log." -#: utils/misc/guc.c:3543 +#: utils/misc/guc.c:3546 msgid "Sets the name of the cluster, which is included in the process title." msgstr "Imposta il nome del cluster, che è incluso nel titolo del processo." -#: utils/misc/guc.c:3563 +#: utils/misc/guc.c:3566 msgid "Sets whether \"\\'\" is allowed in string literals." msgstr "Imposta se \"\\'\" è consentito nei letterali stringa." -#: utils/misc/guc.c:3573 +#: utils/misc/guc.c:3576 msgid "Sets the output format for bytea." msgstr "Imposta il formato di output di bytea." -#: utils/misc/guc.c:3583 +#: utils/misc/guc.c:3586 msgid "Sets the message levels that are sent to the client." msgstr "Imposta quali livelli di messaggi sono inviati al client" -#: utils/misc/guc.c:3584 utils/misc/guc.c:3637 utils/misc/guc.c:3648 -#: utils/misc/guc.c:3714 +#: utils/misc/guc.c:3587 utils/misc/guc.c:3640 utils/misc/guc.c:3651 +#: utils/misc/guc.c:3717 msgid "Each level includes all the levels that follow it. The later the level, the fewer messages are sent." msgstr "Ogni livello include tutti i livelli che lo seguono. Più avanti il livello, meno messaggi sono inviati." -#: utils/misc/guc.c:3594 +#: utils/misc/guc.c:3597 msgid "Enables the planner to use constraints to optimize queries." msgstr "Permette al planner di usare i vincoli per ottimizzare le query." -#: utils/misc/guc.c:3595 +#: utils/misc/guc.c:3598 msgid "Table scans will be skipped if their constraints guarantee that no rows match the query." msgstr "La scansioni delle tabelle saranno evitate se i loro vincoli garantiscono che nessuna riga corrisponda con la query." -#: utils/misc/guc.c:3605 +#: utils/misc/guc.c:3608 msgid "Sets the transaction isolation level of each new transaction." msgstr "Imposta il livello di isolamento predefinito per ogni nuova transazione." -#: utils/misc/guc.c:3615 +#: utils/misc/guc.c:3618 msgid "Sets the display format for interval values." msgstr "Imposta il formato di visualizzazione per intervalli." -#: utils/misc/guc.c:3626 +#: utils/misc/guc.c:3629 msgid "Sets the verbosity of logged messages." msgstr "Imposta la prolissità dei messaggi registrati." -#: utils/misc/guc.c:3636 +#: utils/misc/guc.c:3639 msgid "Sets the message levels that are logged." msgstr "Imposta i livelli dei messaggi registrati." -#: utils/misc/guc.c:3647 +#: utils/misc/guc.c:3650 msgid "Causes all statements generating error at or above this level to be logged." msgstr "Fa in modo che tutti gli eventi che generano errore a questo livello o a un livello superiore siano registrati nel log." -#: utils/misc/guc.c:3658 +#: utils/misc/guc.c:3661 msgid "Sets the type of statements logged." msgstr "Imposta il tipo di istruzioni registrato nel log." -#: utils/misc/guc.c:3668 +#: utils/misc/guc.c:3671 msgid "Sets the syslog \"facility\" to be used when syslog enabled." msgstr "Imposta la \"facility\" da usare quando syslog è abilitato." -#: utils/misc/guc.c:3683 +#: utils/misc/guc.c:3686 msgid "Sets the session's behavior for triggers and rewrite rules." msgstr "Imposta il comportamento delle sessioni per i trigger e le regole di riscrittura." -#: utils/misc/guc.c:3693 +#: utils/misc/guc.c:3696 msgid "Sets the current transaction's synchronization level." msgstr "Imposta il livello di sincronizzazione della transazione corrente." -#: utils/misc/guc.c:3703 +#: utils/misc/guc.c:3706 msgid "Allows archiving of WAL files using archive_command." msgstr "Consente l'archiviazione dei file WAL con l'uso di archive_command." -#: utils/misc/guc.c:3713 +#: utils/misc/guc.c:3716 msgid "Enables logging of recovery-related debugging information." msgstr "Abilita il logging di informazioni di debug relative al recupero." -#: utils/misc/guc.c:3729 +#: utils/misc/guc.c:3732 msgid "Collects function-level statistics on database activity." msgstr "Raccogli statistiche al livello di funzioni sull'attività del database." -#: utils/misc/guc.c:3739 +#: utils/misc/guc.c:3742 msgid "Set the level of information written to the WAL." msgstr "Imposta il livello delle informazioni scritte nel WAL." -#: utils/misc/guc.c:3749 +#: utils/misc/guc.c:3752 msgid "Selects the dynamic shared memory implementation used." msgstr "Seleziona l'implementazione di memoria dinamica condivisa utilizzata." -#: utils/misc/guc.c:3759 +#: utils/misc/guc.c:3762 msgid "Selects the method used for forcing WAL updates to disk." msgstr "Seleziona il metodo usato per forzare aggiornamenti WAL su disco." -#: utils/misc/guc.c:3769 +#: utils/misc/guc.c:3772 msgid "Sets how binary values are to be encoded in XML." msgstr "imposta come i valori binari devono essere codificati nel formato XML." -#: utils/misc/guc.c:3779 +#: utils/misc/guc.c:3782 msgid "Sets whether XML data in implicit parsing and serialization operations is to be considered as documents or content fragments." msgstr "Imposta se qualunque dato XML nelle operazioni di parsing e serializzazione implicite debba essere considerato come un documento o frammento di un contenuto." -#: utils/misc/guc.c:3790 +#: utils/misc/guc.c:3793 msgid "Use of huge pages on Linux." msgstr "Uso delle pagine huge su Linux." -#: utils/misc/guc.c:3800 +#: utils/misc/guc.c:3803 msgid "Forces use of parallel query facilities." msgstr "Forza l'uso delle query parallele." -#: utils/misc/guc.c:3801 +#: utils/misc/guc.c:3804 msgid "If possible, run query using a parallel worker and with parallel restrictions." msgstr "Se possibile, effettua le query usando worker paralleli e con restrizioni di parallelismo." -#: utils/misc/guc.c:4601 +#: utils/misc/guc.c:4604 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: accesso alla directory \"%s\" fallito: %s\n" -#: utils/misc/guc.c:4606 +#: utils/misc/guc.c:4609 #, c-format msgid "Run initdb or pg_basebackup to initialize a PostgreSQL data directory.\n" msgstr "Esegui initdb o pg_basebackup per inizializzare una directory di dati PostgreSQL.\n" -#: utils/misc/guc.c:4626 +#: utils/misc/guc.c:4629 #, c-format msgid "" "%s does not know where to find the server configuration file.\n" @@ -22388,12 +22391,12 @@ msgstr "" "%s non sa dove trovare il file di configurazione del server.\n" "Devi specificare le opzioni --config-file o -D, oppure impostare la variabile d'ambiente PGDATA.\n" -#: utils/misc/guc.c:4645 +#: utils/misc/guc.c:4648 #, c-format msgid "%s: could not access the server configuration file \"%s\": %s\n" msgstr "%s: accesso al file di configurazione del server \"%s\" fallito: %s\n" -#: utils/misc/guc.c:4671 +#: utils/misc/guc.c:4674 #, c-format msgid "" "%s does not know where to find the database system data.\n" @@ -22402,7 +22405,7 @@ msgstr "" "%s non sa dove trovare i dati di sistema del database.\n" "Possono essere specificati come \"data_directory\" in \"%s\", oppure dall'opzione -D, oppure dalla variabile d'ambiente PGDATA.\n" -#: utils/misc/guc.c:4719 +#: utils/misc/guc.c:4722 #, c-format msgid "" "%s does not know where to find the \"hba\" configuration file.\n" @@ -22411,7 +22414,7 @@ msgstr "" "%s non sa dove trovare il file di configurazione \"hba\".\n" "Può essere specificato come \"hba_file\" in \"%s\", oppure dall'opzione -D, oppure dalla variabile d'ambiente PGDATA.\n" -#: utils/misc/guc.c:4742 +#: utils/misc/guc.c:4745 #, c-format msgid "" "%s does not know where to find the \"ident\" configuration file.\n" @@ -22420,145 +22423,145 @@ msgstr "" "%s non sa dove trovare il file di configurazione \"ident\".\n" "Può essere specificato come \"ident_file\" in \"%s\", oppure dall'opzione -D, oppure dalla variabile d'ambiente PGDATA.\n" -#: utils/misc/guc.c:5416 utils/misc/guc.c:5463 +#: utils/misc/guc.c:5419 utils/misc/guc.c:5466 msgid "Value exceeds integer range." msgstr "Il valore non rientra nel limite possibile per gli interi." -#: utils/misc/guc.c:5686 +#: utils/misc/guc.c:5689 #, c-format msgid "parameter \"%s\" requires a numeric value" msgstr "il parametro \"%s\" richiede un valore numerico" -#: utils/misc/guc.c:5695 +#: utils/misc/guc.c:5698 #, c-format msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)" msgstr "%g non è compreso nell'intervallo di validità del il parametro \"%s\" (%g .. %g)" -#: utils/misc/guc.c:5848 utils/misc/guc.c:7190 +#: utils/misc/guc.c:5851 utils/misc/guc.c:7194 #, c-format msgid "cannot set parameters during a parallel operation" msgstr "non è possibile impostare parametri durante un'operazione parallela" -#: utils/misc/guc.c:5855 utils/misc/guc.c:6605 utils/misc/guc.c:6657 -#: utils/misc/guc.c:7018 utils/misc/guc.c:7778 utils/misc/guc.c:7946 -#: utils/misc/guc.c:9603 +#: utils/misc/guc.c:5858 utils/misc/guc.c:6609 utils/misc/guc.c:6661 +#: utils/misc/guc.c:7022 utils/misc/guc.c:7782 utils/misc/guc.c:7950 +#: utils/misc/guc.c:9625 #, c-format msgid "unrecognized configuration parameter \"%s\"" msgstr "parametro di configurazione \"%s\" sconosciuto" -#: utils/misc/guc.c:5870 utils/misc/guc.c:7030 +#: utils/misc/guc.c:5873 utils/misc/guc.c:7034 #, c-format msgid "parameter \"%s\" cannot be changed" msgstr "il parametro \"%s\" non può essere cambiato" -#: utils/misc/guc.c:5893 utils/misc/guc.c:6085 utils/misc/guc.c:6175 -#: utils/misc/guc.c:6265 utils/misc/guc.c:6373 utils/misc/guc.c:6468 -#: guc-file.l:352 +#: utils/misc/guc.c:5896 utils/misc/guc.c:6089 utils/misc/guc.c:6179 +#: utils/misc/guc.c:6269 utils/misc/guc.c:6377 utils/misc/guc.c:6472 +#: guc-file.l:350 #, c-format msgid "parameter \"%s\" cannot be changed without restarting the server" msgstr "il parametro \"%s\" non può essere cambiato senza riavviare il server" -#: utils/misc/guc.c:5903 +#: utils/misc/guc.c:5906 #, c-format msgid "parameter \"%s\" cannot be changed now" msgstr "il parametro \"%s\" non può essere cambiato ora" -#: utils/misc/guc.c:5921 utils/misc/guc.c:5966 utils/misc/guc.c:9619 +#: utils/misc/guc.c:5924 utils/misc/guc.c:5970 utils/misc/guc.c:9641 #, c-format msgid "permission denied to set parameter \"%s\"" msgstr "permesso di impostare il parametro \"%s\" negato" -#: utils/misc/guc.c:5956 +#: utils/misc/guc.c:5960 #, c-format msgid "parameter \"%s\" cannot be set after connection start" msgstr "il parametro \"%s\" non può essere impostato dopo l'avvio della connessione" -#: utils/misc/guc.c:6004 +#: utils/misc/guc.c:6008 #, c-format msgid "cannot set parameter \"%s\" within security-definer function" msgstr "il parametro \"%s\" non può essere impostato da una funzione che ha i privilegi del creatore" -#: utils/misc/guc.c:6613 utils/misc/guc.c:6661 utils/misc/guc.c:7952 +#: utils/misc/guc.c:6617 utils/misc/guc.c:6665 utils/misc/guc.c:7956 #, c-format msgid "must be superuser to examine \"%s\"" msgstr "solo un superutente può esaminare \"%s\"" -#: utils/misc/guc.c:6727 +#: utils/misc/guc.c:6731 #, c-format msgid "SET %s takes only one argument" msgstr "SET %s accetta un unico argomento" -#: utils/misc/guc.c:6978 +#: utils/misc/guc.c:6982 #, c-format msgid "must be superuser to execute ALTER SYSTEM command" msgstr "solo un superutente può eseguire il comando ALTER SYSTEM" -#: utils/misc/guc.c:7063 +#: utils/misc/guc.c:7067 #, c-format msgid "parameter value for ALTER SYSTEM must not contain a newline" msgstr "il valore del parametro di ALTER SYSTEM non può contenere un \"a capo\"" -#: utils/misc/guc.c:7108 +#: utils/misc/guc.c:7112 #, c-format msgid "could not parse contents of file \"%s\"" msgstr "non è possibile analizzare il contenuto del file \"%s\"" -#: utils/misc/guc.c:7266 +#: utils/misc/guc.c:7270 #, c-format msgid "SET LOCAL TRANSACTION SNAPSHOT is not implemented" msgstr "SET LOCAL TRANSACTION SNAPSHOT non è implementato" -#: utils/misc/guc.c:7351 +#: utils/misc/guc.c:7355 #, c-format msgid "SET requires parameter name" msgstr "SET richiede il nome del parametro" -#: utils/misc/guc.c:7475 +#: utils/misc/guc.c:7479 #, c-format msgid "attempt to redefine parameter \"%s\"" msgstr "tentativo di ridefinire il parametro \"%s\"" -#: utils/misc/guc.c:9236 +#: utils/misc/guc.c:9258 #, c-format msgid "parameter \"%s\" could not be set" msgstr "il parametro \"%s\" non può essere impostato" -#: utils/misc/guc.c:9323 +#: utils/misc/guc.c:9345 #, c-format msgid "could not parse setting for parameter \"%s\"" msgstr "non è stato possibile interpretare l'impostazione del parametro \"%s\"" -#: utils/misc/guc.c:9681 utils/misc/guc.c:9715 +#: utils/misc/guc.c:9703 utils/misc/guc.c:9737 #, c-format msgid "invalid value for parameter \"%s\": %d" msgstr "valore non valido per il parametro \"%s\": %d" -#: utils/misc/guc.c:9749 +#: utils/misc/guc.c:9771 #, c-format msgid "invalid value for parameter \"%s\": %g" msgstr "valore non valido per il parametro \"%s\": %g" -#: utils/misc/guc.c:9939 +#: utils/misc/guc.c:9961 #, c-format msgid "\"temp_buffers\" cannot be changed after any temporary tables have been accessed in the session." msgstr "\"temp_buffers\" non può essere modificato dopo che la sessione ha utilizzato qualsiasi tabella temporanea." -#: utils/misc/guc.c:9951 +#: utils/misc/guc.c:9973 #, c-format msgid "Bonjour is not supported by this build" msgstr "Bonjour non è supportato in questo binario" -#: utils/misc/guc.c:9964 +#: utils/misc/guc.c:9986 #, c-format msgid "SSL is not supported by this build" msgstr "SSL non è supportato in questo binario" -#: utils/misc/guc.c:9976 +#: utils/misc/guc.c:9998 #, c-format msgid "Cannot enable parameter when \"log_statement_stats\" is true." msgstr "Non è possibile abilitare il parametro quando \"log_statement_stats\" è abilitato." -#: utils/misc/guc.c:9988 +#: utils/misc/guc.c:10010 #, c-format msgid "Cannot enable \"log_statement_stats\" when \"log_parser_stats\", \"log_planner_stats\", or \"log_executor_stats\" is true." msgstr "Non è possibile abilitare \"log_statement_stats\" quando \"log_parser_stats\", \"log_planner_stats\" o \"log_executor_stats\" sono abilitati." @@ -22653,40 +22656,40 @@ msgstr "la riga è troppo lunga nel file di fusi orari \"%s\", riga %d" msgid "@INCLUDE without file name in time zone file \"%s\", line %d" msgstr "@INCLUDE senza nome del file nel file di fusi orari \"%s\", riga %d" -#: utils/mmgr/aset.c:506 +#: utils/mmgr/aset.c:511 #, c-format msgid "Failed while creating memory context \"%s\"." msgstr "Errore durante la creazione del contesto di memoria \"%s\"." -#: utils/mmgr/mcxt.c:771 utils/mmgr/mcxt.c:806 utils/mmgr/mcxt.c:843 -#: utils/mmgr/mcxt.c:880 utils/mmgr/mcxt.c:914 utils/mmgr/mcxt.c:943 -#: utils/mmgr/mcxt.c:977 utils/mmgr/mcxt.c:1059 utils/mmgr/mcxt.c:1093 -#: utils/mmgr/mcxt.c:1142 +#: utils/mmgr/mcxt.c:768 utils/mmgr/mcxt.c:803 utils/mmgr/mcxt.c:840 +#: utils/mmgr/mcxt.c:877 utils/mmgr/mcxt.c:911 utils/mmgr/mcxt.c:940 +#: utils/mmgr/mcxt.c:974 utils/mmgr/mcxt.c:1056 utils/mmgr/mcxt.c:1090 +#: utils/mmgr/mcxt.c:1139 #, c-format msgid "Failed on request of size %zu." msgstr "Errore durante la richiesta di dimensione %zu." -#: utils/mmgr/portalmem.c:208 +#: utils/mmgr/portalmem.c:207 #, c-format msgid "cursor \"%s\" already exists" msgstr "il cursore \"%s\" esiste già" -#: utils/mmgr/portalmem.c:212 +#: utils/mmgr/portalmem.c:211 #, c-format msgid "closing existing cursor \"%s\"" msgstr "chiusura del cursore esistente \"%s\"" -#: utils/mmgr/portalmem.c:419 +#: utils/mmgr/portalmem.c:415 #, c-format msgid "portal \"%s\" cannot be run" msgstr "il portale \"%s\" non può essere eseguito" -#: utils/mmgr/portalmem.c:499 +#: utils/mmgr/portalmem.c:495 #, c-format msgid "cannot drop active portal \"%s\"" msgstr "non è possibile eliminare il portale attivo \"%s\"" -#: utils/mmgr/portalmem.c:689 +#: utils/mmgr/portalmem.c:699 #, c-format msgid "cannot PREPARE a transaction that has created a cursor WITH HOLD" msgstr "non è possibile eseguire PREPARE in una transazione che ha creato un cursore WITH HOLD" @@ -22696,22 +22699,22 @@ msgstr "non è possibile eseguire PREPARE in una transazione che ha creato un cu msgid "could not read block %ld of temporary file: %m" msgstr "lettura del blocco %ld dal file temporaneo fallita: %m" -#: utils/sort/tuplesort.c:3360 +#: utils/sort/tuplesort.c:3402 #, c-format msgid "cannot have more than %d runs for an external sort" msgstr "non è possibile avere più di %d esecuzioni per un sort esterno" -#: utils/sort/tuplesort.c:4416 +#: utils/sort/tuplesort.c:4474 #, c-format msgid "could not create unique index \"%s\"" msgstr "creazione dell'indice univoco \"%s\" fallita" -#: utils/sort/tuplesort.c:4418 +#: utils/sort/tuplesort.c:4476 #, c-format msgid "Key %s is duplicated." msgstr "La chiave %s è duplicata." -#: utils/sort/tuplesort.c:4419 +#: utils/sort/tuplesort.c:4477 #, c-format msgid "Duplicate keys exist." msgstr "Esistono chiavi duplicate." @@ -22737,52 +22740,52 @@ msgstr "lettura dal file temporaneo tuplestore fallita: %m" msgid "could not write to tuplestore temporary file: %m" msgstr "scrittura nel file temporaneo tuplestore fallita: %m" -#: utils/time/snapmgr.c:536 +#: utils/time/snapmgr.c:618 #, c-format msgid "The source transaction is not running anymore." msgstr "La transazione di origine non è più in esecuzione." # translator: %s represents an SQL statement name -#: utils/time/snapmgr.c:1090 +#: utils/time/snapmgr.c:1190 #, c-format msgid "cannot export a snapshot from a subtransaction" msgstr "non è possibile esportare uno snapshot da una sotto-transazione" -#: utils/time/snapmgr.c:1239 utils/time/snapmgr.c:1244 -#: utils/time/snapmgr.c:1249 utils/time/snapmgr.c:1264 -#: utils/time/snapmgr.c:1269 utils/time/snapmgr.c:1274 -#: utils/time/snapmgr.c:1373 utils/time/snapmgr.c:1389 -#: utils/time/snapmgr.c:1414 +#: utils/time/snapmgr.c:1339 utils/time/snapmgr.c:1344 +#: utils/time/snapmgr.c:1349 utils/time/snapmgr.c:1364 +#: utils/time/snapmgr.c:1369 utils/time/snapmgr.c:1374 +#: utils/time/snapmgr.c:1473 utils/time/snapmgr.c:1489 +#: utils/time/snapmgr.c:1514 #, c-format msgid "invalid snapshot data in file \"%s\"" msgstr "dati dello snapshot non validi nel file \"%s\"" -#: utils/time/snapmgr.c:1311 +#: utils/time/snapmgr.c:1411 #, c-format msgid "SET TRANSACTION SNAPSHOT must be called before any query" msgstr "SET TRANSACTION SNAPSHOT dev'essere invocato prima di qualunque query" -#: utils/time/snapmgr.c:1320 +#: utils/time/snapmgr.c:1420 #, c-format msgid "a snapshot-importing transaction must have isolation level SERIALIZABLE or REPEATABLE READ" msgstr "una transazione che importa uno snapshot deve avere livello di isolamento SERIALIZABLE o REPEATABLE READ" -#: utils/time/snapmgr.c:1329 utils/time/snapmgr.c:1338 +#: utils/time/snapmgr.c:1429 utils/time/snapmgr.c:1438 #, c-format msgid "invalid snapshot identifier: \"%s\"" msgstr "identificativo di snapshot non valido: \"%s\"" -#: utils/time/snapmgr.c:1427 +#: utils/time/snapmgr.c:1527 #, c-format msgid "a serializable transaction cannot import a snapshot from a non-serializable transaction" msgstr "una transazione serializzabile non può importare uno snapshot da una transazione non serializzabile" -#: utils/time/snapmgr.c:1431 +#: utils/time/snapmgr.c:1531 #, c-format msgid "a non-read-only serializable transaction cannot import a snapshot from a read-only transaction" msgstr "una transazione non di sola lettura non può importare uno snapshot da una transazione di sola lettura" -#: utils/time/snapmgr.c:1446 +#: utils/time/snapmgr.c:1546 #, c-format msgid "cannot import a snapshot from a different database" msgstr "non è possibile importare uno snapshot da un database diverso" @@ -22792,303 +22795,308 @@ msgstr "non è possibile importare uno snapshot da un database diverso" msgid "unrecognized role option \"%s\"" msgstr "opzione di ruolo \"%s\" sconosciuta" -#: gram.y:1280 gram.y:1295 +#: gram.y:1278 gram.y:1293 #, c-format msgid "CREATE SCHEMA IF NOT EXISTS cannot include schema elements" msgstr "CREATE SCHEMA IF NOT EXISTS non può includere elementi dello schema" -#: gram.y:1440 +#: gram.y:1438 #, c-format msgid "current database cannot be changed" msgstr "il database corrente non può essere cambiato" -#: gram.y:1564 +#: gram.y:1562 #, c-format msgid "time zone interval must be HOUR or HOUR TO MINUTE" msgstr "l'intervallo della time zone deve essere HOUR o HOUR TO MINUTE" -#: gram.y:2602 gram.y:2631 +#: gram.y:2600 gram.y:2629 #, c-format msgid "STDIN/STDOUT not allowed with PROGRAM" msgstr "STDIN/STDOUT non sono consentiti con PROGRAM" -#: gram.y:2897 gram.y:2904 gram.y:10275 gram.y:10283 +#: gram.y:2895 gram.y:2902 gram.y:10295 gram.y:10303 #, c-format msgid "GLOBAL is deprecated in temporary table creation" msgstr "GLOBAL è deprecato nella creazione di tabelle temporanee" -#: gram.y:4800 +#: gram.y:4809 msgid "duplicate trigger events specified" msgstr "evento del trigger specificato più volte" -#: gram.y:4900 +#: gram.y:4909 #, c-format msgid "conflicting constraint properties" msgstr "proprietà del vincolo in conflitto" -#: gram.y:5032 +#: gram.y:5041 #, c-format msgid "CREATE ASSERTION is not yet implemented" msgstr "CREATE ASSERTION non è stata ancora implementata" -#: gram.y:5048 +#: gram.y:5057 #, c-format msgid "DROP ASSERTION is not yet implemented" msgstr "DROP ASSERTION non è stata ancora implementata" -#: gram.y:5394 +#: gram.y:5403 #, c-format msgid "RECHECK is no longer required" msgstr "RECHECK non è più richiesto" -#: gram.y:5395 +#: gram.y:5404 #, c-format msgid "Update your data type." msgstr "Aggiorna il tuo tipo di dato." -#: gram.y:6973 +#: gram.y:6983 #, c-format msgid "aggregates cannot have output arguments" msgstr "gli aggregati non possono avere argomenti di output" -#: gram.y:8843 gram.y:8861 +#: gram.y:8853 gram.y:8871 #, c-format msgid "WITH CHECK OPTION not supported on recursive views" msgstr "WITH CHECK OPTION non supportato su viste ricorsive" -#: gram.y:10383 +#: gram.y:9389 +#, c-format +msgid "unrecognized VACUUM option \"%s\"" +msgstr "opzione di VACUUM \"%s\" sconosciuta" + +#: gram.y:10403 #, c-format msgid "LIMIT #,# syntax is not supported" msgstr "La sintassi LIMIT #,# non è supportata" -#: gram.y:10384 +#: gram.y:10404 #, c-format msgid "Use separate LIMIT and OFFSET clauses." msgstr "Usa separatamente le clausole LIMIT ed OFFSET." -#: gram.y:10647 gram.y:10672 +#: gram.y:10667 gram.y:10692 #, c-format msgid "VALUES in FROM must have an alias" msgstr "VALUES nel FROM deve avere un alias" -#: gram.y:10648 gram.y:10673 +#: gram.y:10668 gram.y:10693 #, c-format msgid "For example, FROM (VALUES ...) [AS] foo." msgstr "Per esempio, FROM (VALUES ...) [AS] foo." -#: gram.y:10653 gram.y:10678 +#: gram.y:10673 gram.y:10698 #, c-format msgid "subquery in FROM must have an alias" msgstr "la sottoquery in FROM deve avere un alias" -#: gram.y:10654 gram.y:10679 +#: gram.y:10674 gram.y:10699 #, c-format msgid "For example, FROM (SELECT ...) [AS] foo." msgstr "Per esempio, FROM (SELECT ...) [AS] foo." -#: gram.y:11253 +#: gram.y:11273 #, c-format msgid "precision for type float must be at least 1 bit" msgstr "la precisione per il tipo float dev'essere di almeno un bit" -#: gram.y:11262 +#: gram.y:11282 #, c-format msgid "precision for type float must be less than 54 bits" msgstr "la precisione per il tipo float dev'essere inferiore a 54 bit" -#: gram.y:11766 +#: gram.y:11786 #, c-format msgid "wrong number of parameters on left side of OVERLAPS expression" msgstr "numero errato di parametri a sinistra dell'espressione OVERLAPS" -#: gram.y:11771 +#: gram.y:11791 #, c-format msgid "wrong number of parameters on right side of OVERLAPS expression" msgstr "numero errato di parametri a destra dell'espressione OVERLAPS" -#: gram.y:11948 +#: gram.y:11966 #, c-format msgid "UNIQUE predicate is not yet implemented" msgstr "il predicato UNIQUE non è stato ancora implementato" -#: gram.y:12280 +#: gram.y:12300 #, c-format msgid "cannot use multiple ORDER BY clauses with WITHIN GROUP" msgstr "non si può usare più di una clausola ORDER BY con WITHIN GROUOP" -#: gram.y:12285 +#: gram.y:12305 #, c-format msgid "cannot use DISTINCT with WITHIN GROUP" msgstr "non si può usare DISTINCT con WITHIN GROUP" -#: gram.y:12290 +#: gram.y:12310 #, c-format msgid "cannot use VARIADIC with WITHIN GROUP" msgstr "non si può usare VARIADIC con WITHIN GROUP" -#: gram.y:12796 +#: gram.y:12816 #, c-format msgid "RANGE PRECEDING is only supported with UNBOUNDED" msgstr "RANGE PRECEDING è supportato solo con UNBOUNDED" -#: gram.y:12802 +#: gram.y:12822 #, c-format msgid "RANGE FOLLOWING is only supported with UNBOUNDED" msgstr "RANGE FOLLOWING è supportato solo con UNBOUNDED" -#: gram.y:12829 gram.y:12852 +#: gram.y:12849 gram.y:12872 #, c-format msgid "frame start cannot be UNBOUNDED FOLLOWING" msgstr "l'inizio della finestra non può essere UNBOUNDED FOLLOWING" -#: gram.y:12834 +#: gram.y:12854 #, c-format msgid "frame starting from following row cannot end with current row" msgstr "una finestra che inizia dalla riga seguente non può terminare alla riga corrente" -#: gram.y:12857 +#: gram.y:12877 #, c-format msgid "frame end cannot be UNBOUNDED PRECEDING" msgstr "la fine della finestra non può essere UNBOUNDED PRECEDING" -#: gram.y:12863 +#: gram.y:12883 #, c-format msgid "frame starting from current row cannot have preceding rows" msgstr "una finestra che inizia dalla riga corrente non può avere righe precedenti" -#: gram.y:12870 +#: gram.y:12890 #, c-format msgid "frame starting from following row cannot have preceding rows" msgstr "una finestra che inizia dalla riga seguente non può avere righe precedenti" -#: gram.y:13535 +#: gram.y:13555 #, c-format msgid "type modifier cannot have parameter name" msgstr "un modificatore di tipo non può avere un nome di parametro" -#: gram.y:13541 +#: gram.y:13561 #, c-format msgid "type modifier cannot have ORDER BY" msgstr "un modificatore di tipo non può avere ORDER BY" -#: gram.y:13605 gram.y:13611 +#: gram.y:13625 gram.y:13631 #, c-format msgid "%s cannot be used as a role name here" msgstr "%s non può essere usato come nome di ruolo qui" -#: gram.y:14233 gram.y:14422 +#: gram.y:14253 gram.y:14442 msgid "improper use of \"*\"" msgstr "uso improprio di \"*\"" -#: gram.y:14486 +#: gram.y:14506 #, c-format msgid "an ordered-set aggregate with a VARIADIC direct argument must have one VARIADIC aggregated argument of the same data type" msgstr "un aggregato su insiemi ordinati con un argomento diretto VARIADIC deve avere un argomento aggregato VARIADIC sullo stesso tipo" -#: gram.y:14523 +#: gram.y:14543 #, c-format msgid "multiple ORDER BY clauses not allowed" msgstr "non è possibile avere più di una clausola ORDER BY" -#: gram.y:14534 +#: gram.y:14554 #, c-format msgid "multiple OFFSET clauses not allowed" msgstr "non è possibile avere più di una clausola OFFSET" -#: gram.y:14543 +#: gram.y:14563 #, c-format msgid "multiple LIMIT clauses not allowed" msgstr "non è possibile avere più di una clausola LIMIT" -#: gram.y:14552 +#: gram.y:14572 #, c-format msgid "multiple WITH clauses not allowed" msgstr "non è possibile avere più di una clausola WITH" -#: gram.y:14732 +#: gram.y:14764 #, c-format msgid "OUT and INOUT arguments aren't allowed in TABLE functions" msgstr "gli argomenti OUT e INOUT non sono permessi nelle funzioni TABLE" -#: gram.y:14833 +#: gram.y:14865 #, c-format msgid "multiple COLLATE clauses not allowed" msgstr "non è possibile avere più di una clausola COLLATE" #. translator: %s is CHECK, UNIQUE, or similar -#: gram.y:14871 gram.y:14884 +#: gram.y:14903 gram.y:14916 #, c-format msgid "%s constraints cannot be marked DEFERRABLE" msgstr "un vincolo %s non può essere marcato DEFERRABLE" #. translator: %s is CHECK, UNIQUE, or similar -#: gram.y:14897 +#: gram.y:14929 #, c-format msgid "%s constraints cannot be marked NOT VALID" msgstr "un vincolo %s non può essere marcato NOT VALID" #. translator: %s is CHECK, UNIQUE, or similar -#: gram.y:14910 +#: gram.y:14942 #, c-format msgid "%s constraints cannot be marked NO INHERIT" msgstr "un vincolo %s non può essere marcato NO INHERIT" -#: guc-file.l:315 +#: guc-file.l:313 #, c-format msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %u" msgstr "parametro di configurazione \"%s\" sconosciuto nel file \"%s\" riga %u" -#: guc-file.l:388 +#: guc-file.l:386 #, c-format msgid "parameter \"%s\" removed from configuration file, reset to default" msgstr "il parametro \"%s\" è stato rimosso dal file di configurazione, valore predefinito ripristinato" -#: guc-file.l:454 +#: guc-file.l:452 #, c-format msgid "parameter \"%s\" changed to \"%s\"" msgstr "il parametro \"%s\" è stato modificato a \"%s\"" -#: guc-file.l:496 +#: guc-file.l:494 #, c-format msgid "configuration file \"%s\" contains errors" msgstr "il file di configurazione \"%s\" contiene errori" -#: guc-file.l:501 +#: guc-file.l:499 #, c-format msgid "configuration file \"%s\" contains errors; unaffected changes were applied" msgstr "il file di configurazione \"%s\" contiene errori; i cambiamenti senza errori sono stati applicati" -#: guc-file.l:506 +#: guc-file.l:504 #, c-format msgid "configuration file \"%s\" contains errors; no changes were applied" msgstr "il file di configurazione \"%s\" contiene errori; nessun cambiamento effettuato" -#: guc-file.l:579 +#: guc-file.l:577 #, c-format msgid "could not open configuration file \"%s\": maximum nesting depth exceeded" msgstr "apertura del file di configurazione \"%s\" fallita: massima profondità di annidamento raggiunta" -#: guc-file.l:606 +#: guc-file.l:604 #, c-format msgid "skipping missing configuration file \"%s\"" msgstr "file di configurazione mancante \"%s\" saltato" -#: guc-file.l:860 +#: guc-file.l:858 #, c-format msgid "syntax error in file \"%s\" line %u, near end of line" msgstr "errore di sintassi nel file \"%s\" riga %u, vicino alla fine della riga" -#: guc-file.l:870 +#: guc-file.l:868 #, c-format msgid "syntax error in file \"%s\" line %u, near token \"%s\"" msgstr "errore di sintassi nel file \"%s\" riga %u, vicino al token \"%s\"" -#: guc-file.l:890 +#: guc-file.l:888 #, c-format msgid "too many syntax errors found, abandoning file \"%s\"" msgstr "troppi errori di sintassi, file \"%s\" abbandonato" -#: guc-file.l:942 +#: guc-file.l:940 #, c-format msgid "could not open configuration directory \"%s\": %m" msgstr "apertura della directory di configurazione \"%s\" fallita: %m" @@ -23102,7 +23110,7 @@ msgstr "timeline %u non valida" msgid "invalid streaming start location" msgstr "posizione di avvio dello streaming non valida" -#: repl_scanner.l:171 scan.l:671 +#: repl_scanner.l:171 scan.l:670 msgid "unterminated quoted string" msgstr "stringa tra virgolette non terminata" @@ -23111,119 +23119,119 @@ msgstr "stringa tra virgolette non terminata" msgid "syntax error: unexpected character \"%s\"" msgstr "errore di sintassi: carattere \"%s\" inaspettato" -#: scan.l:433 +#: scan.l:432 msgid "unterminated /* comment" msgstr "commento /* non terminato" -#: scan.l:462 +#: scan.l:461 msgid "unterminated bit string literal" msgstr "letterale di stringa di bit non terminato" -#: scan.l:483 +#: scan.l:482 msgid "unterminated hexadecimal string literal" msgstr "letterale di stringa esadecimale non terminato" -#: scan.l:533 +#: scan.l:532 #, c-format msgid "unsafe use of string constant with Unicode escapes" msgstr "uso non sicuro di stringa costante con gli escape Unicode" -#: scan.l:534 +#: scan.l:533 #, c-format msgid "String constants with Unicode escapes cannot be used when standard_conforming_strings is off." msgstr "Le stringhe costanti con escape Unicode non possono essere usate quando standard_conforming_strings è disabilitato." -#: scan.l:580 scan.l:779 +#: scan.l:579 scan.l:778 msgid "invalid Unicode escape character" msgstr "carattere escape Unicode non valido" -#: scan.l:606 scan.l:614 scan.l:622 scan.l:623 scan.l:624 scan.l:1338 -#: scan.l:1365 scan.l:1369 scan.l:1407 scan.l:1411 scan.l:1433 +#: scan.l:605 scan.l:613 scan.l:621 scan.l:622 scan.l:623 scan.l:1337 +#: scan.l:1364 scan.l:1368 scan.l:1406 scan.l:1410 scan.l:1432 scan.l:1442 msgid "invalid Unicode surrogate pair" msgstr "coppia surrogata Unicode non valida" -#: scan.l:628 +#: scan.l:627 #, c-format msgid "invalid Unicode escape" msgstr "escape Unicode non valido" -#: scan.l:629 +#: scan.l:628 #, c-format msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX." msgstr "Gli escape Unicode devono essere \\uXXXX or \\UXXXXXXXX." -#: scan.l:640 +#: scan.l:639 #, c-format msgid "unsafe use of \\' in a string literal" msgstr "uso non sicuro di \\' in una stringa letterale" -#: scan.l:641 +#: scan.l:640 #, c-format msgid "Use '' to write quotes in strings. \\' is insecure in client-only encodings." msgstr "Usa '' per scrivere gli apici in una stringa. \\' non è sicuro in codifiche solo client." -#: scan.l:716 +#: scan.l:715 msgid "unterminated dollar-quoted string" msgstr "stringa delimitata da dollari non terminata" -#: scan.l:733 scan.l:759 scan.l:774 +#: scan.l:732 scan.l:758 scan.l:773 msgid "zero-length delimited identifier" msgstr "identificativo delimitato di lunghezza zero" -#: scan.l:794 +#: scan.l:793 syncrep_scanner.l:84 msgid "unterminated quoted identifier" msgstr "identificativo tra virgolette non terminato" -#: scan.l:925 +#: scan.l:924 msgid "operator too long" msgstr "operatore troppo lungo" #. translator: %s is typically the translation of "syntax error" -#: scan.l:1078 +#: scan.l:1077 #, c-format msgid "%s at end of input" msgstr "%s alla fine dell'input" #. translator: first %s is typically the translation of "syntax error" -#: scan.l:1086 syncrep_scanner.l:115 +#: scan.l:1085 #, c-format msgid "%s at or near \"%s\"" msgstr "%s a o presso \"%s\"" -#: scan.l:1252 scan.l:1284 +#: scan.l:1251 scan.l:1283 msgid "Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8" msgstr "i valori escape Unicode non possono essere usati per code point superiori a 007F se la codifica del server non è UTF8" -#: scan.l:1280 scan.l:1425 +#: scan.l:1279 scan.l:1424 msgid "invalid Unicode escape value" msgstr "valore escape Unicode non valido" -#: scan.l:1482 +#: scan.l:1488 #, c-format msgid "nonstandard use of \\' in a string literal" msgstr "uso non standard di \\' in una stringa letterale" -#: scan.l:1483 +#: scan.l:1489 #, c-format msgid "Use '' to write quotes in strings, or use the escape string syntax (E'...')." msgstr "Usa '' per scrivere gli apici nelle stringhe, oppure usa la sintassi di escape delle stringhe (E'...')." -#: scan.l:1492 +#: scan.l:1498 #, c-format msgid "nonstandard use of \\\\ in a string literal" msgstr "uso non standard di \\\\ in una stringa letterale" -#: scan.l:1493 +#: scan.l:1499 #, c-format msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'." msgstr "Usa la sintassi di escape delle stringhe per i backslash, cioè E'\\\\'." -#: scan.l:1507 +#: scan.l:1513 #, c-format msgid "nonstandard use of escape in a string literal" msgstr "uso non standard dell'escape in una stringa letterale" -#: scan.l:1508 +#: scan.l:1514 #, c-format msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'." msgstr "Usa la sintassi di escape per le stringhe per effettuare gli escape, cioè, E'\\r\\n'." diff --git a/src/backend/po/ko.po b/src/backend/po/ko.po new file mode 100644 index 0000000000..c5225ffa19 --- /dev/null +++ b/src/backend/po/ko.po @@ -0,0 +1,24982 @@ +# Korean message translation file for PostgreSQL server +# Ioseph Kim , 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 9.6\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2017-03-02 11:23+0900\n" +"PO-Revision-Date: 2017-03-02 11:28:26+0900\n" +"Last-Translator: Ioseph Kim \n" +"Language-Team: Korean Team \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" + +#: ../common/config_info.c:131 ../common/config_info.c:139 +#: ../common/config_info.c:147 ../common/config_info.c:155 +#: ../common/config_info.c:163 ../common/config_info.c:171 +#: ../common/config_info.c:179 ../common/config_info.c:187 +#: ../common/config_info.c:195 +msgid "not recorded" +msgstr "기ë¡ë˜ì–´ 있지 않ìŒ" + +#: ../common/controldata_utils.c:52 commands/copy.c:2833 +#: commands/extension.c:3141 utils/adt/genfile.c:134 +#, c-format +msgid "could not open file \"%s\" for reading: %m" +msgstr "\"%s\" íŒŒì¼ ì¼ê¸° 모드로 열기 실패: %m" + +#: ../common/controldata_utils.c:56 +#, c-format +msgid "%s: could not open file \"%s\" for reading: %s\n" +msgstr "%s: \"%s\" íŒŒì¼ ì½ê¸° 모드로 열기 실패: %s\n" + +#: ../common/controldata_utils.c:66 access/transam/timeline.c:346 +#: access/transam/xlog.c:3220 access/transam/xlog.c:10423 +#: access/transam/xlog.c:10436 access/transam/xlog.c:10828 +#: access/transam/xlog.c:10871 access/transam/xlog.c:10910 +#: access/transam/xlog.c:10953 access/transam/xlogfuncs.c:665 +#: access/transam/xlogfuncs.c:684 commands/extension.c:3151 +#: replication/logical/origin.c:665 replication/logical/origin.c:695 +#: replication/logical/reorderbuffer.c:3099 replication/walsender.c:499 +#: storage/file/copydir.c:176 utils/adt/genfile.c:151 +#, c-format +msgid "could not read file \"%s\": %m" +msgstr "\"%s\" 파ì¼ì„ ì½ì„ 수 ì—†ìŒ: %m" + +#: ../common/controldata_utils.c:69 +#, c-format +msgid "%s: could not read file \"%s\": %s\n" +msgstr "%s: \"%s\" 파ì¼ì„ ì½ì„ 수 없습니다: %s\n" + +#: ../common/controldata_utils.c:86 +msgid "calculated CRC checksum does not match value stored in file" +msgstr "ê³„ì‚°ëœ CRC ì²´í¬ì„¬ ê°’ì´ íŒŒì¼ì— ì €ìž¥ëœ ê°’ê³¼ 다름" + +#: ../common/controldata_utils.c:88 +#, c-format +msgid "" +"WARNING: Calculated CRC checksum does not match value stored in file.\n" +"Either the file is corrupt, or it has a different layout than this program\n" +"is expecting. The results below are untrustworthy.\n" +"\n" +msgstr "" +"경고: ê³„ì‚°ëœ CRC ì²´í¬ì„¬ê°’ì´ íŒŒì¼ì— 있는 ê°’ê³¼ 틀립니다.\n" +"ì´ ê²½ìš°ëŠ” 파ì¼ì´ ì†ìƒë˜ì—ˆê±°ë‚˜, ì´ í”„ë¡œê·¸ëž¨ê³¼ 컨트롤 파ì¼ì˜ ë²„ì „ì´ í‹€ë¦°\n" +"경우입니다. ê²°ê³¼ê°’ë“¤ì€ ë¯¿ì§€ 못할 ê°’ë“¤ì´ ì¶œë ¥ë  ìˆ˜ 있습니다.\n" +"\n" + +#: ../common/controldata_utils.c:97 +msgid "byte ordering mismatch" +msgstr "ë°”ì´íЏ 순서 불ì¼ì¹˜" + +#: ../common/controldata_utils.c:99 +#, c-format +msgid "" +"WARNING: possible byte ordering mismatch\n" +"The byte ordering used to store the pg_control file might not match the one\n" +"used by this program. In that case the results below would be incorrect, " +"and\n" +"the PostgreSQL installation would be incompatible with this data directory.\n" +msgstr "" +"경고: ë°”ì´íЏ 순서가 ì¼ì¹˜í•˜ì§€ 않습니다.\n" +"pg_control 파ì¼ì„ 저장하는 ë° ì‚¬ìš©ëœ ë°”ì´íЏ 순서는 \n" +"ì´ í”„ë¡œê·¸ëž¨ì—서 사용하는 순서와 ì¼ì¹˜í•´ì•¼ 합니다. ì´ ê²½ìš° 아래 결과는 올바르" +"ì§€ 않으며\n" +"ì´ ë°ì´í„° ë””ë ‰í„°ë¦¬ì— PostgreSQLì„ ì„¤ì¹˜í•  수 없습니다.\n" + +#: ../common/exec.c:127 ../common/exec.c:241 ../common/exec.c:284 +#, c-format +msgid "could not identify current directory: %s" +msgstr "현재 디렉터리를 파악할 수 ì—†ìŒ: %s" + +#: ../common/exec.c:146 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "ìž˜ëª»ëœ ë°”ì´ë„ˆë¦¬ íŒŒì¼ \"%s\"" + +#: ../common/exec.c:195 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "\"%s\" ë°”ì´ë„ˆë¦¬ 파ì¼ì„ ì½ì„ 수 ì—†ìŒ" + +# translator: %s is IPv4, IPv6, or Unix +#: ../common/exec.c:202 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "\"%s\" 실행 파ì¼ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: ../common/exec.c:257 ../common/exec.c:293 +#, c-format +msgid "could not change directory to \"%s\": %s" +msgstr "\"%s\" 디렉터리로 바꿀 수 ì—†ìŒ: %s" + +#: ../common/exec.c:272 +#, c-format +msgid "could not read symbolic link \"%s\"" +msgstr "\"%s\" 심벌릭 ë§í¬ë¥¼ ì½ì„ 수 ì—†ìŒ" + +#: ../common/exec.c:523 +#, c-format +msgid "pclose failed: %s" +msgstr "pclose 실패: %s" + +#: ../common/fe_memutils.c:35 ../common/fe_memutils.c:75 +#: ../common/fe_memutils.c:98 ../common/psprintf.c:181 ../port/path.c:632 +#: ../port/path.c:670 ../port/path.c:687 +#, c-format +msgid "out of memory\n" +msgstr "메모리 부족\n" + +#: ../common/fe_memutils.c:92 +#, c-format +msgid "cannot duplicate null pointer (internal error)\n" +msgstr "null í¬ì¸í„°ë¥¼ 중복할 수 ì—†ìŒ (ë‚´ë¶€ 오류)\n" + +#: ../common/pgfnames.c:45 +#, c-format +msgid "could not open directory \"%s\": %s\n" +msgstr "\"%s\" 디렉터리 ì—´ 수 ì—†ìŒ: %s\n" + +#: ../common/pgfnames.c:72 +#, c-format +msgid "could not read directory \"%s\": %s\n" +msgstr "\"%s\" 디렉터리를 ì½ì„ 수 ì—†ìŒ: %s\n" + +#: ../common/pgfnames.c:84 +#, c-format +msgid "could not close directory \"%s\": %s\n" +msgstr "\"%s\" 디렉터리를 ë‹«ì„ ìˆ˜ ì—†ìŒ: %s\n" + +#: ../common/psprintf.c:179 ../port/path.c:630 ../port/path.c:668 +#: ../port/path.c:685 access/transam/twophase.c:1262 +#: access/transam/xlog.c:6108 lib/stringinfo.c:258 libpq/auth.c:850 +#: libpq/auth.c:1213 libpq/auth.c:1281 libpq/auth.c:1797 +#: postmaster/bgworker.c:289 postmaster/bgworker.c:796 +#: postmaster/postmaster.c:2335 postmaster/postmaster.c:2366 +#: postmaster/postmaster.c:3899 postmaster/postmaster.c:4589 +#: postmaster/postmaster.c:4664 postmaster/postmaster.c:5339 +#: postmaster/postmaster.c:5603 +#: replication/libpqwalreceiver/libpqwalreceiver.c:143 +#: replication/logical/logical.c:168 storage/buffer/localbuf.c:436 +#: storage/file/fd.c:736 storage/file/fd.c:1164 storage/file/fd.c:1282 +#: storage/file/fd.c:1993 storage/ipc/procarray.c:1061 +#: storage/ipc/procarray.c:1547 storage/ipc/procarray.c:1554 +#: storage/ipc/procarray.c:1968 storage/ipc/procarray.c:2571 +#: utils/adt/formatting.c:1522 utils/adt/formatting.c:1642 +#: utils/adt/formatting.c:1763 utils/adt/pg_locale.c:463 +#: utils/adt/pg_locale.c:647 utils/adt/regexp.c:219 utils/adt/varlena.c:4440 +#: utils/adt/varlena.c:4461 utils/fmgr/dfmgr.c:216 utils/hash/dynahash.c:429 +#: utils/hash/dynahash.c:535 utils/hash/dynahash.c:1047 utils/mb/mbutils.c:376 +#: utils/mb/mbutils.c:709 utils/misc/guc.c:3888 utils/misc/guc.c:3904 +#: utils/misc/guc.c:3917 utils/misc/guc.c:6863 utils/misc/tzparser.c:468 +#: utils/mmgr/aset.c:509 utils/mmgr/mcxt.c:767 utils/mmgr/mcxt.c:802 +#: utils/mmgr/mcxt.c:839 utils/mmgr/mcxt.c:876 utils/mmgr/mcxt.c:910 +#: utils/mmgr/mcxt.c:939 utils/mmgr/mcxt.c:973 utils/mmgr/mcxt.c:1055 +#: utils/mmgr/mcxt.c:1089 utils/mmgr/mcxt.c:1138 +#, c-format +msgid "out of memory" +msgstr "메모리 부족" + +#: ../common/relpath.c:59 +#, c-format +msgid "invalid fork name" +msgstr "ìž˜ëª»ëœ í¬í¬ ì´ë¦„" + +#: ../common/relpath.c:60 +#, c-format +msgid "Valid fork names are \"main\", \"fsm\", \"vm\", and \"init\"." +msgstr "유효한 í¬í¬ ì´ë¦„ì€ \"main\", \"fsm\" ë° \"vm\"입니다." + +#: ../common/restricted_token.c:68 +#, c-format +msgid "%s: WARNING: cannot create restricted tokens on this platform\n" +msgstr "%s: 경고: ì´ ìš´ì˜ì²´ì œì—서 restricted tokenì„ ë§Œë“¤ 수 ì—†ìŒ\n" + +#: ../common/restricted_token.c:77 +#, c-format +msgid "%s: could not open process token: error code %lu\n" +msgstr "%s: 프로세스 토í°ì„ ì—´ 수 ì—†ìŒ: 오류 코드 %lu\n" + +#: ../common/restricted_token.c:90 +#, c-format +msgid "%s: could not allocate SIDs: error code %lu\n" +msgstr "%s: SID를 할당할 수 ì—†ìŒ: 오류 코드 %lu\n" + +#: ../common/restricted_token.c:110 +#, c-format +msgid "%s: could not create restricted token: error code %lu\n" +msgstr "%s: ìƒì†ëœ 토í°ì„ 만들 수 ì—†ìŒ: 오류 코드 %lu\n" + +#: ../common/restricted_token.c:132 +#, c-format +msgid "%s: could not start process for command \"%s\": error code %lu\n" +msgstr "%s: \"%s\" 명령용 프로세스를 시작할 수 ì—†ìŒ: 오류 코드 %lu\n" + +#: ../common/restricted_token.c:170 +#, c-format +msgid "%s: could not re-execute with restricted token: error code %lu\n" +msgstr "%s: ìƒì†ëœ 토í°ìœ¼ë¡œ 재실행할 수 ì—†ìŒ: 오류 코드 %lu\n" + +#: ../common/restricted_token.c:186 +#, c-format +msgid "%s: could not get exit code from subprocess: error code %lu\n" +msgstr "%s: 하위 í”„ë¡œì„¸ìŠ¤ì˜ ì¢…ë£Œ 코드를 구할 수 ì—†ìŒ: 오류 코드 %lu\n" + +#: ../common/rmtree.c:77 +#, c-format +msgid "could not stat file or directory \"%s\": %s\n" +msgstr "\"%s\" 파ì¼ì´ë‚˜ 디렉터리 ìƒíƒœë¥¼ 확ì¸í•  수 ì—†ìŒ: %s\n" + +#: ../common/rmtree.c:104 ../common/rmtree.c:121 +#, c-format +msgid "could not remove file or directory \"%s\": %s\n" +msgstr "\"%s\" 디렉터리를 삭제할 수 ì—†ìŒ: %s\n" + +#: ../common/username.c:45 +#, c-format +msgid "could not look up effective user ID %ld: %s" +msgstr "%ld UID를 ì°¾ì„ ìˆ˜ ì—†ìŒ: %s" + +#: ../common/username.c:47 libpq/auth.c:1744 +msgid "user does not exist" +msgstr "ì‚¬ìš©ìž ì—†ìŒ" + +#: ../common/username.c:62 +#, c-format +msgid "user name lookup failure: error code %lu" +msgstr "ì‚¬ìš©ìž ì´ë¦„ 찾기 실패: 오류 코드 %lu" + +#: ../common/wait_error.c:47 +#, c-format +msgid "command not executable" +msgstr "ëª…ë ¹ì„ ì‹¤í–‰í•  수 ì—†ìŒ" + +#: ../common/wait_error.c:51 +#, c-format +msgid "command not found" +msgstr "해당 명령어 ì—†ìŒ" + +#: ../common/wait_error.c:56 +#, c-format +msgid "child process exited with exit code %d" +msgstr "하위 í”„ë¡œê·¸ëž¨ì€ %d 코드로 마쳤습니다" + +#: ../common/wait_error.c:63 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "0x%X 예외처리로 하위 프로세스가 종료ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: ../common/wait_error.c:73 +#, c-format +msgid "child process was terminated by signal %s" +msgstr "%s 시그ë„ì´ ê°ì§€ë˜ì–´ 하위 프로세스가 종료ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: ../common/wait_error.c:77 +#, c-format +msgid "child process was terminated by signal %d" +msgstr "하위 í”„ë¡œê·¸ëž¨ì€ %d ì‹ í˜¸ì— ì˜í•´ì„œ 종료ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: ../common/wait_error.c:82 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "하위 프로그램 í”„ë¡œê·¸ëž¨ì€ ì˜ˆìƒì¹˜ 못한 %d ìƒíƒœê°’으로 종료ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: ../port/chklocale.c:293 +#, c-format +msgid "could not determine encoding for codeset \"%s\"" +msgstr "\"%s\" 코드 세트 í™˜ê²½ì— ì‚¬ìš©í•  ì¸ì½”ë”©ì„ ê²°ì •í•  수 없습니다" + +#: ../port/chklocale.c:294 ../port/chklocale.c:423 +#: postmaster/postmaster.c:4868 +#, c-format +msgid "Please report this to ." +msgstr "ì´ ë‚´ìš©ì„ ì£¼ì†Œë¡œ 보고하십시오." + +#: ../port/chklocale.c:415 ../port/chklocale.c:421 +#, c-format +msgid "could not determine encoding for locale \"%s\": codeset is \"%s\"" +msgstr "" +"\"%s\" ë¡œì¼€ì¼ í™˜ê²½ì—서 사용할 ì¸ì½”ë”©ì„ ê²°ì •í•  수 없습니다. 코드 세트: \"%s\"" + +#: ../port/dirmod.c:218 +#, c-format +msgid "could not set junction for \"%s\": %s" +msgstr "\"%s\" 디렉터리 ì—°ê²°ì„ í•  수 ì—†ìŒ: %s" + +#: ../port/dirmod.c:221 +#, c-format +msgid "could not set junction for \"%s\": %s\n" +msgstr "\"%s\" 디렉터리 ì—°ê²°ì„ í•  수 ì—†ìŒ: %s\n" + +#: ../port/dirmod.c:295 +#, c-format +msgid "could not get junction for \"%s\": %s" +msgstr "\"%s\" 파ì¼ì˜ ì •ì…˜ì„ êµ¬í•  수 ì—†ìŒ: %s" + +#: ../port/dirmod.c:298 +#, c-format +msgid "could not get junction for \"%s\": %s\n" +msgstr "\"%s\" 파ì¼ì˜ ì •ì…˜ì„ êµ¬í•  수 ì—†ìŒ: %s\n" + +#: ../port/open.c:112 +#, c-format +msgid "could not open file \"%s\": %s" +msgstr "\"%s\" 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s" + +#: ../port/open.c:113 +msgid "lock violation" +msgstr "잠금 위반" + +#: ../port/open.c:113 +msgid "sharing violation" +msgstr "공유 위반" + +#: ../port/open.c:114 +#, c-format +msgid "Continuing to retry for 30 seconds." +msgstr "30ì´ˆ ë™ì•ˆ 계ì†í•´ì„œ 다시 시ë„합니다." + +#: ../port/open.c:115 +#, c-format +msgid "" +"You might have antivirus, backup, or similar software interfering with the " +"database system." +msgstr "" +"ë°”ì´ëŸ¬ìФ 백신 프로그램, 백업 ë˜ëŠ” 유사한 소프트웨어가 ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì„ " +"ë°©í•´í•  수 있습니다." + +#: ../port/path.c:654 +#, c-format +msgid "could not get current working directory: %s\n" +msgstr "현재 작업 디렉터리를 알 수 ì—†ìŒ: %s\n" + +#: ../port/strerror.c:25 +#, c-format +msgid "unrecognized error %d" +msgstr "알 수 없는 오류 %d" + +#: ../port/win32security.c:68 +#, c-format +msgid "could not open process token: error code %lu\n" +msgstr "프로세스 토í°ì„ ì—´ 수 ì—†ìŒ: 오류 코드 %lu\n" + +#: ../port/win32security.c:89 +#, c-format +msgid "could not get SID for Administrators group: error code %lu\n" +msgstr "Administrators ê·¸ë£¹ì˜ SID를 가져올 수 ì—†ìŒ: 오류 코드 %lu\n" + +#: ../port/win32security.c:99 +#, c-format +msgid "could not get SID for PowerUsers group: error code %lu\n" +msgstr "PowerUsers ê·¸ë£¹ì˜ SID를 가져올 수 ì—†ìŒ: 오류 코드 %lu\n" + +#: access/brin/brin.c:810 +#, c-format +msgid "\"%s\" is not a BRIN index" +msgstr "\"%s\" ê°ì²´ëŠ” BRIN ì¸ë±ìŠ¤ê°€ 아닙니다" + +#: access/brin/brin.c:826 +#, c-format +msgid "could not open parent table of index %s" +msgstr "%s ì¸ë±ìŠ¤ì— ëŒ€í•œ ìƒìœ„ í…Œì´ë¸”ì„ ì—´ 수 ì—†ìŒ" + +#: access/brin/brin_pageops.c:76 access/brin/brin_pageops.c:362 +#: access/brin/brin_pageops.c:828 +#, c-format +msgid "index row size %lu exceeds maximum %lu for index \"%s\"" +msgstr "ì¸ë±ìФ í–‰ í¬ê¸° %luì´(ê°€) 최대값 %lu(\"%s\" ì¸ë±ìФ)ì„(를) 초과함" + +#: access/brin/brin_revmap.c:459 +#, c-format +msgid "unexpected page type 0x%04X in BRIN index \"%s\" block %u" +msgstr "예ìƒì¹˜ 못한 0x%04X 페ì´ì§€ 타입: \"%s\" BRIN ì¸ë±ìФ %u 블ë¡" + +#: access/brin/brin_validate.c:115 +#, c-format +msgid "" +"brin operator family \"%s\" contains function %s with invalid support number " +"%d" +msgstr "" +"\"%s\" brin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s 함수가 ìž˜ëª»ëœ ì§€ì› ë²ˆí˜¸(%d)로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: access/brin/brin_validate.c:131 +#, c-format +msgid "" +"brin operator family \"%s\" contains function %s with wrong signature for " +"support number %d" +msgstr "" +"\"%s\" brin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s 함수가 ìž˜ëª»ëœ signature 번호(%d)로 지정ë˜ì—ˆìе" +"니다." + +#: access/brin/brin_validate.c:153 +#, c-format +msgid "" +"brin operator family \"%s\" contains operator %s with invalid strategy " +"number %d" +msgstr "" +"\"%s\" brin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ì „ëžµ 번호(%d)로 지정ë˜ì—ˆìŠµë‹ˆ" +"다." + +#: access/brin/brin_validate.c:182 +#, c-format +msgid "" +"brin operator family \"%s\" contains invalid ORDER BY specification for " +"operator %s" +msgstr "" +"\"%s\" brin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ORDER BY 명세를 사용합니다." + +#: access/brin/brin_validate.c:195 +#, c-format +msgid "brin operator family \"%s\" contains operator %s with wrong signature" +msgstr "\"%s\" brin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ signature를 사용합니다." + +#: access/brin/brin_validate.c:233 +#, c-format +msgid "brin operator family \"%s\" is missing operator(s) for types %s and %s" +msgstr "\"%s\" brin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì—는 %s, %s ìžë£Œí˜•ìš© ì—°ì‚°ìžê°€ 없습니다" + +#: access/brin/brin_validate.c:243 +#, c-format +msgid "" +"brin operator family \"%s\" is missing support function(s) for types %s and " +"%s" +msgstr "\"%s\" brin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì—는 %s, %s ìžë£Œí˜•용으로 쓸 함수가 없습니다" + +#: access/brin/brin_validate.c:256 +#, c-format +msgid "brin operator class \"%s\" is missing operator(s)" +msgstr "\"%s\" brin ì—°ì‚°ìž í´ëž˜ìŠ¤ì— ì—°ì‚°ìžê°€ 빠졌습니다" + +#: access/brin/brin_validate.c:267 +#, c-format +msgid "brin operator class \"%s\" is missing support function %d" +msgstr "\"%s\" brin ì—°ì‚°ìž í´ëž˜ìŠ¤ì— %d ì§€ì› í•¨ìˆ˜ê°€ ì—†ìŒ" + +#: access/common/heaptuple.c:708 access/common/heaptuple.c:1339 +#, c-format +msgid "number of columns (%d) exceeds limit (%d)" +msgstr "ì—´ 수(%d)ê°€ 최대값(%d)ì„ ì´ˆê³¼í–ˆìŠµë‹ˆë‹¤" + +#: access/common/indextuple.c:60 +#, c-format +msgid "number of index columns (%d) exceeds limit (%d)" +msgstr "ì¸ë±ìФ ì—´ 수(%d)ê°€ 최대값(%d)ì„ ì´ˆê³¼í–ˆìŠµë‹ˆë‹¤" + +#: access/common/indextuple.c:176 access/spgist/spgutils.c:642 +#, c-format +msgid "index row requires %zu bytes, maximum size is %zu" +msgstr "ì¸ë±ìФ í–‰(row)ì€ %zu ë°”ì´íŠ¸ë¥¼ 필요로 함, 최대 í¬ê¸°ëŠ” %zu" + +#: access/common/printtup.c:292 tcop/fastpath.c:182 tcop/fastpath.c:544 +#: tcop/postgres.c:1719 +#, c-format +msgid "unsupported format code: %d" +msgstr "ì§€ì›í•˜ì§€ 않는 í¬ë§· 코드: %d" + +#: access/common/reloptions.c:493 +#, c-format +msgid "user-defined relation parameter types limit exceeded" +msgstr "ì‚¬ìš©ìž ì •ì˜ ê´€ê³„ 매개 변수 í˜•ì‹ ì œí•œì„ ì´ˆê³¼í•¨" + +#: access/common/reloptions.c:775 +#, c-format +msgid "RESET must not include values for parameters" +msgstr "매개 ë³€ìˆ˜ì˜ ê°’ìœ¼ë¡œ RESETì€ ì˜¬ 수 ì—†ìŒ" + +#: access/common/reloptions.c:808 +#, c-format +msgid "unrecognized parameter namespace \"%s\"" +msgstr "\"%s\" 매개 변수 네임스페ì´ìŠ¤ë¥¼ ì¸ì‹í•  수 ì—†ìŒ" + +#: access/common/reloptions.c:1050 parser/parse_clause.c:281 +#, c-format +msgid "unrecognized parameter \"%s\"" +msgstr "알 수 없는 환경 설정 ì´ë¦„입니다 \"%s\"" + +#: access/common/reloptions.c:1080 +#, c-format +msgid "parameter \"%s\" specified more than once" +msgstr "\"%s\" 매개 변수가 여러 번 지정ë¨" + +#: access/common/reloptions.c:1096 +#, c-format +msgid "invalid value for boolean option \"%s\": %s" +msgstr "\"%s\" 부울 옵션 ê°’ì´ ìž˜ëª»ë¨: %s" + +#: access/common/reloptions.c:1108 +#, c-format +msgid "invalid value for integer option \"%s\": %s" +msgstr "\"%s\" 정수 옵션 ê°’ì´ ìž˜ëª»ë¨: %s" + +#: access/common/reloptions.c:1114 access/common/reloptions.c:1134 +#, c-format +msgid "value %s out of bounds for option \"%s\"" +msgstr "ê°’ %sì€(는) \"%s\" 옵션 범위를 벗어남" + +#: access/common/reloptions.c:1116 +#, c-format +msgid "Valid values are between \"%d\" and \"%d\"." +msgstr "유효한 ê°’ì€ \"%d\"ì—서 \"%d\" 사ì´ìž…니다." + +#: access/common/reloptions.c:1128 +#, c-format +msgid "invalid value for floating point option \"%s\": %s" +msgstr "\"%s\" ë¶€ë™ ì†Œìˆ˜ì  ì˜µì…˜ ê°’ì´ ìž˜ëª»ë¨: %s" + +#: access/common/reloptions.c:1136 +#, c-format +msgid "Valid values are between \"%f\" and \"%f\"." +msgstr "유효한 ê°’ì€ \"%f\"ì—서 \"%f\" 사ì´ìž…니다." + +#: access/common/tupconvert.c:108 +#, c-format +msgid "Returned type %s does not match expected type %s in column %d." +msgstr "" +"반환 ìžë£Œí˜•으로 %s í˜•ì„ ì§€ì •í–ˆì§€ë§Œ, ì¹¼ëŸ¼ì€ %s ìžë£Œí˜•입니다. 해당 칼럼: %d 번" +"째 칼럼" + +#: access/common/tupconvert.c:136 +#, c-format +msgid "" +"Number of returned columns (%d) does not match expected column count (%d)." +msgstr "반환할 칼럼 수(%d)와 예ìƒë˜ëŠ” 칼럼수(%d)ê°€ 다릅니다." + +#: access/common/tupconvert.c:314 +#, c-format +msgid "" +"Attribute \"%s\" of type %s does not match corresponding attribute of type " +"%s." +msgstr "" +" \"%s\" ì†ì„±(ëŒ€ìƒ ìžë£Œí˜• %s)ì´ %s ìžë£Œí˜•ì˜ ì†ì„± ê°€ìš´ë° ê´€ë ¨ëœ ê²ƒì´ ì—†ìŠµë‹ˆë‹¤" + +#: access/common/tupconvert.c:326 +#, c-format +msgid "Attribute \"%s\" of type %s does not exist in type %s." +msgstr "\"%s\" ì†ì„±(ëŒ€ìƒ ìžë£Œí˜• %s)ì´ %s ìžë£Œí˜•ì—는 없습니다." + +#: access/common/tupdesc.c:635 parser/parse_relation.c:1518 +#, c-format +msgid "column \"%s\" cannot be declared SETOF" +msgstr "\"%s\" ì—´ì€ SETOF를 지정할 수 없습니다" + +#: access/gin/ginbulk.c:44 +#, c-format +msgid "posting list is too long" +msgstr "í¬ìŠ¤íŒ… 목ë¡ì´ 너무 ê¹ë‹ˆë‹¤" + +#: access/gin/ginbulk.c:45 +#, c-format +msgid "Reduce maintenance_work_mem." +msgstr "maintenance_work_mem ì„¤ì •ê°’ì„ ì¤„ì´ì„¸ìš”." + +#: access/gin/ginentrypage.c:109 access/gist/gist.c:1337 +#: access/nbtree/nbtinsert.c:576 access/nbtree/nbtsort.c:488 +#: access/spgist/spgdoinsert.c:1907 +#, c-format +msgid "index row size %zu exceeds maximum %zu for index \"%s\"" +msgstr "ì¸ë±ìФ í–‰ í¬ê¸° %zuì´(ê°€) 최대값 %zu(\"%s\" ì¸ë±ìФ)ì„(를) 초과함" + +#: access/gin/ginfast.c:989 access/transam/xlog.c:9858 +#: access/transam/xlog.c:10362 access/transam/xlogfuncs.c:293 +#: access/transam/xlogfuncs.c:320 access/transam/xlogfuncs.c:359 +#: access/transam/xlogfuncs.c:380 access/transam/xlogfuncs.c:401 +#: access/transam/xlogfuncs.c:471 access/transam/xlogfuncs.c:527 +#, c-format +msgid "recovery is in progress" +msgstr "복구 작업 ì§„í–‰ 중" + +#: access/gin/ginfast.c:990 +#, c-format +msgid "GIN pending list cannot be cleaned up during recovery." +msgstr "GIN 팬딩 목ë¡ì€ 복구 작업 중ì—는 ì •ë¦¬ë  ìˆ˜ 없습니다." + +#: access/gin/ginfast.c:997 +#, c-format +msgid "\"%s\" is not a GIN index" +msgstr "\"%s\" ê°ì²´ëŠ” GIN ì¸ë±ìŠ¤ê°€ 아닙니다" + +#: access/gin/ginfast.c:1008 +#, c-format +msgid "cannot access temporary indexes of other sessions" +msgstr "다른 ì„¸ì…˜ì˜ ìž„ì‹œ ì¸ë±ìŠ¤ëŠ” 접근할 수 ì—†ìŒ" + +#: access/gin/ginscan.c:405 +#, c-format +msgid "old GIN indexes do not support whole-index scans nor searches for nulls" +msgstr "" +"GIN ì¸ë±ìŠ¤ê°€ 옛날 버전ì´ì–´ì„œ ì¸ë±ìФ ì „ì²´ íƒìƒ‰, null íƒìƒ‰ ê¸°ëŠ¥ì„ ì‚¬ìš©í•  수 ì—†" +"습니다." + +#: access/gin/ginscan.c:406 +#, c-format +msgid "To fix this, do REINDEX INDEX \"%s\"." +msgstr "ì´ ë¬¸ì œë¥¼ 고치려면, ë‹¤ìŒ ëª…ë ¹ì„ ìˆ˜í–‰í•˜ì„¸ìš”: REINDEX INDEX \"%s\"" + +#: access/gin/ginvalidate.c:92 +#, c-format +msgid "" +"gin operator family \"%s\" contains support procedure %s with cross-type " +"registration" +msgstr "" +"\"%s\" gin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— cross-type registration 으로 %s ì§€ì› í”„ë¡œì‹œì ¸ê°€ í¬" +"함ë˜ì–´ 있습니다." + +#: access/gin/ginvalidate.c:148 +#, c-format +msgid "" +"gin operator family \"%s\" contains function %s with invalid support number " +"%d" +msgstr "" +"\"%s\" gin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ ì§€ì› ë²ˆí˜¸ %d 로 지정ë˜ì—ˆìе" +"니다." + +#: access/gin/ginvalidate.c:160 +#, c-format +msgid "" +"gin operator family \"%s\" contains function %s with wrong signature for " +"support number %d" +msgstr "" +"\"%s\" gin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ signature ì§€ì› ë²ˆí˜¸ %d 로 " +"지정ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: access/gin/ginvalidate.c:179 +#, c-format +msgid "" +"gin operator family \"%s\" contains operator %s with invalid strategy number " +"%d" +msgstr "" +"\"%s\" gin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s ì—°ì‚°ìžì˜ %d 번 ì „ëžµ 번호가 잘못ë˜ì—ˆìŠµë‹ˆ" +"다." + +#: access/gin/ginvalidate.c:192 +#, c-format +msgid "" +"gin operator family \"%s\" contains invalid ORDER BY specification for " +"operator %s" +msgstr "" +"\"%s\" gin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ORDER BY 명세를 사용합니다." + +#: access/gin/ginvalidate.c:205 +#, c-format +msgid "gin operator family \"%s\" contains operator %s with wrong signature" +msgstr "\"%s\" gin ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ê¸°í˜¸ë¥¼ 사용합니다." + +#: access/gin/ginvalidate.c:246 +#, c-format +msgid "gin operator class \"%s\" is missing support function %d" +msgstr "\"%s\" gin ì—°ì‚°ìž í´ëž˜ìŠ¤ì— %d ì§€ì› í•¨ìˆ˜ê°€ 빠졌습니다." + +#: access/gin/ginvalidate.c:256 +#, c-format +msgid "gin operator class \"%s\" is missing support function %d or %d" +msgstr "\"%s\" gin ì—°ì‚°ìž í´ëž˜ìФì—는 %d ë˜ëŠ” %d ì§€ì› í•¨ìˆ˜ê°€ 빠졌습니다" + +#: access/gist/gist.c:680 access/gist/gistvacuum.c:258 +#, c-format +msgid "index \"%s\" contains an inner tuple marked as invalid" +msgstr "\"%s\" ì¸ë±ìŠ¤ì— ìž˜ëª»ëœ ë‚´ë¶€ íŠœí”Œì´ ìžˆë‹¤ê³  확ì¸ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: access/gist/gist.c:682 access/gist/gistvacuum.c:260 +#, c-format +msgid "" +"This is caused by an incomplete page split at crash recovery before " +"upgrading to PostgreSQL 9.1." +msgstr "" +"ì´ ë¬¸ì œëŠ” PostgreSQL 9.1 버전으로 업그레ì´ë“œ 하기 ì „ì— ìž¥ì•  복구 처리ì—서 잘" +"ëª»ëœ íŽ˜ì´ì§€ 분리 ë•Œë¬¸ì— ë°œìƒí–ˆìŠµë‹ˆë‹¤." + +#: access/gist/gist.c:683 access/gist/gistutil.c:738 +#: access/gist/gistutil.c:749 access/gist/gistvacuum.c:261 +#: access/hash/hashutil.c:172 access/hash/hashutil.c:183 +#: access/hash/hashutil.c:195 access/hash/hashutil.c:216 +#: access/nbtree/nbtpage.c:518 access/nbtree/nbtpage.c:529 +#, c-format +msgid "Please REINDEX it." +msgstr "REINDEX 명령으로 다시 ì¸ë±ìŠ¤ë¥¼ 만드세요" + +#: access/gist/gistbuild.c:249 +#, c-format +msgid "invalid value for \"buffering\" option" +msgstr "\"buffering\" 옵션 ê°’ì´ ì˜¬ë°”ë¥´ì§€ 않습니다" + +#: access/gist/gistbuild.c:250 +#, c-format +msgid "Valid values are \"on\", \"off\", and \"auto\"." +msgstr "유효한 ê°’: \"on\", \"off\", \"auto\"" + +#: access/gist/gistbuildbuffers.c:778 utils/sort/logtape.c:209 +#, c-format +msgid "could not write block %ld of temporary file: %m" +msgstr "임시파ì¼ì˜ %ld ë¸”ëŸ­ì„ ì“¸ 수 ì—†ìŒ: %m" + +#: access/gist/gistsplit.c:446 +#, c-format +msgid "picksplit method for column %d of index \"%s\" failed" +msgstr "%d ì—´(\"%s\" ì¸ë±ìФ)ì— ëŒ€í•œ picksplit 메서드 실패" + +#: access/gist/gistsplit.c:448 +#, c-format +msgid "" +"The index is not optimal. To optimize it, contact a developer, or try to use " +"the column as the second one in the CREATE INDEX command." +msgstr "" +"ì¸ë±ìŠ¤ê°€ 최ì í™”ë˜ì§€ 않았습니다. 최ì í™”하려면 개발ìžì—게 문ì˜í•˜ê±°ë‚˜, CREATE " +"INDEX 명령ì—서 해당 ì—´ì„ ë‘ ë²ˆì§¸ ì¸ë±ìŠ¤ë¡œ 사용하십시오." + +#: access/gist/gistutil.c:735 access/hash/hashutil.c:169 +#: access/nbtree/nbtpage.c:515 +#, c-format +msgid "index \"%s\" contains unexpected zero page at block %u" +msgstr "\"%s\" ì¸ë±ìŠ¤ì˜ %u번째 블럭ì—서 예ìƒì¹˜ ì•Šì€ zero pageê°€ 있습니다" + +#: access/gist/gistutil.c:746 access/hash/hashutil.c:180 +#: access/hash/hashutil.c:192 access/nbtree/nbtpage.c:526 +#, c-format +msgid "index \"%s\" contains corrupted page at block %u" +msgstr "\"%s\" ì¸ë±ìŠ¤íŠ¸ %u번째 ë¸”ëŸ­ì´ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤" + +#: access/gist/gistvalidate.c:92 +#, c-format +msgid "" +"gist operator family \"%s\" contains support procedure %s with cross-type " +"registration" +msgstr "" +"\"%s\" gist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— cross-type registration 으로 %s ì§€ì› í”„ë¡œì‹œì ¸ê°€ " +"í¬í•¨ë˜ì–´ 있습니다." + +#: access/gist/gistvalidate.c:145 +#, c-format +msgid "" +"gist operator family \"%s\" contains function %s with invalid support number " +"%d" +msgstr "" +"\"%s\" gist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ ì§€ì› ë²ˆí˜¸ %d 로 지정ë˜ì—ˆ" +"습니다." + +#: access/gist/gistvalidate.c:157 +#, c-format +msgid "" +"gist operator family \"%s\" contains function %s with wrong signature for " +"support number %d" +msgstr "" +"\"%s\" gist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ signature ì§€ì› ë²ˆí˜¸ %d " +"로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: access/gist/gistvalidate.c:177 +#, c-format +msgid "" +"gist operator family \"%s\" contains operator %s with invalid strategy " +"number %d" +msgstr "" +"\"%s\" gist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s ì—°ì‚°ìžì˜ %d 번 ì „ëžµ 번호가 잘못ë˜ì—ˆìŠµë‹ˆ" +"다." + +#: access/gist/gistvalidate.c:195 +#, c-format +msgid "" +"gist operator family \"%s\" contains unsupported ORDER BY specification for " +"operator %s" +msgstr "" +"\"%s\" gist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ì§€ì›í•˜ì§€ 않는 ORDER BY 명세를 사용합" +"니다." + +#: access/gist/gistvalidate.c:206 +#, c-format +msgid "" +"gist operator family \"%s\" contains incorrect ORDER BY opfamily " +"specification for operator %s" +msgstr "" +"\"%s\" gist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ORDER BY 명세를 사용합니다." + +#: access/gist/gistvalidate.c:225 +#, c-format +msgid "gist operator family \"%s\" contains operator %s with wrong signature" +msgstr "\"%s\" gist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ê¸°í˜¸ë¥¼ 사용합니다." + +#: access/gist/gistvalidate.c:264 +#, c-format +msgid "gist operator class \"%s\" is missing support function %d" +msgstr "\"%s\" gist ì—°ì‚°ìž í´ëž˜ìŠ¤ì— %d ì§€ì› í•¨ìˆ˜ê°€ 빠졌습니다." + +#: access/hash/hashinsert.c:70 +#, c-format +msgid "index row size %zu exceeds hash maximum %zu" +msgstr "ì¸ë±ìФ í–‰ í¬ê¸°ê°€ 초과ë¨: 현재값 %zu, 최대값 %zu" + +#: access/hash/hashinsert.c:72 access/spgist/spgdoinsert.c:1911 +#: access/spgist/spgutils.c:703 +#, c-format +msgid "Values larger than a buffer page cannot be indexed." +msgstr "ë²„í¼ íŽ˜ì´ì§€ë³´ë‹¤ í° ê°’ì€ ì¸ë±ì‹±í•  수 없습니다." + +#: access/hash/hashovfl.c:546 +#, c-format +msgid "out of overflow pages in hash index \"%s\"" +msgstr "\"%s\" 해시 ì¸ë±ìФì—서 오버플로우 페ì´ì§€ 초과" + +#: access/hash/hashsearch.c:153 +#, c-format +msgid "hash indexes do not support whole-index scans" +msgstr "해시 ì¸ë±ìŠ¤ëŠ” whole-index scanì„ ì§€ì›í•˜ì§€ 않ìŒ" + +#: access/hash/hashutil.c:208 +#, c-format +msgid "index \"%s\" is not a hash index" +msgstr "\"%s\" ì¸ë±ìŠ¤ëŠ” 해시 ì¸ë±ìŠ¤ê°€ 아님" + +#: access/hash/hashutil.c:214 +#, c-format +msgid "index \"%s\" has wrong hash version" +msgstr "\"%s\" ì¸ë±ìŠ¤ëŠ” ìž˜ëª»ëœ í•´ì‹œ 버전임" + +#: access/hash/hashvalidate.c:98 +#, c-format +msgid "" +"hash operator family \"%s\" contains support procedure %s with cross-type " +"registration" +msgstr "" +"\"%s\" hash ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— cross-type registration 으로 %s ì§€ì› í”„ë¡œì‹œì ¸ê°€ " +"í¬í•¨ë˜ì–´ 있습니다." + +#: access/hash/hashvalidate.c:113 +#, c-format +msgid "" +"hash operator family \"%s\" contains function %s with wrong signature for " +"support number %d" +msgstr "" +"\"%s\" hash ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ signature ì§€ì› ë²ˆí˜¸ %d " +"로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: access/hash/hashvalidate.c:130 +#, c-format +msgid "" +"hash operator family \"%s\" contains function %s with invalid support number " +"%d" +msgstr "" +"\"%s\" hash ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ ì§€ì› ë²ˆí˜¸ %d 로 지정ë˜ì—ˆ" +"습니다." + +#: access/hash/hashvalidate.c:151 +#, c-format +msgid "" +"hash operator family \"%s\" contains operator %s with invalid strategy " +"number %d" +msgstr "" +"\"%s\" hash ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s ì—°ì‚°ìžì˜ %d 번 ì „ëžµ 번호가 잘못ë˜ì—ˆìŠµë‹ˆ" +"다." + +#: access/hash/hashvalidate.c:164 +#, c-format +msgid "" +"hash operator family \"%s\" contains invalid ORDER BY specification for " +"operator %s" +msgstr "" +"\"%s\" hash ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ORDER BY 명세를 사용합니다." + +#: access/hash/hashvalidate.c:177 +#, c-format +msgid "hash operator family \"%s\" contains operator %s with wrong signature" +msgstr "\"%s\" hash ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ê¸°í˜¸ë¥¼ 사용합니다." + +#: access/hash/hashvalidate.c:189 +#, c-format +msgid "hash operator family \"%s\" lacks support function for operator %s" +msgstr "\"%s\" hash ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžìš© ì§€ì› í•¨ìˆ˜ê°€ ì—†ìŒ" + +#: access/hash/hashvalidate.c:217 +#, c-format +msgid "hash operator family \"%s\" is missing operator(s) for types %s and %s" +msgstr "" +"\"%s\" hash ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ìžë£Œí˜•ê³¼ %s ìžë£Œí˜•ì„ ë‹¤ë£¨ëŠ” ì—°ì‚°ìžê°€ ì—†ìŒ" + +#: access/hash/hashvalidate.c:231 +#, c-format +msgid "hash operator class \"%s\" is missing operator(s)" +msgstr "%s hash ì—°ì‚°ìž í´ëž˜ìŠ¤ì— ì—°ì‚°ìžê°€ 빠졌ìŒ" + +#: access/hash/hashvalidate.c:247 +#, c-format +msgid "hash operator family \"%s\" is missing cross-type operator(s)" +msgstr "%s hash ì—°ì‚°ìž í´ëž˜ìŠ¤ì— cross-type ì—°ì‚°ìžê°€ 빠졌ìŒ" + +#: access/heap/heapam.c:1295 access/heap/heapam.c:1323 +#: access/heap/heapam.c:1355 catalog/aclchk.c:1756 +#, c-format +msgid "\"%s\" is an index" +msgstr "\"%s\" ê°ì²´ëŠ” ì¸ë±ìŠ¤ìž„" + +#: access/heap/heapam.c:1300 access/heap/heapam.c:1328 +#: access/heap/heapam.c:1360 catalog/aclchk.c:1763 commands/tablecmds.c:9081 +#: commands/tablecmds.c:12189 +#, c-format +msgid "\"%s\" is a composite type" +msgstr "\"%s\" ê°ì²´ëŠ” 복합 ìžë£Œí˜•입니다" + +#: access/heap/heapam.c:2567 +#, c-format +msgid "cannot insert tuples during a parallel operation" +msgstr "병렬 작업 중ì—는 íŠœí”Œì„ ì¶”ê°€ í•  수 ì—†ìŒ" + +#: access/heap/heapam.c:3017 +#, c-format +msgid "cannot delete tuples during a parallel operation" +msgstr "병렬 작업 중ì—는 íŠœí”Œì„ ì§€ìš¸ 수 ì—†ìŒ" + +#: access/heap/heapam.c:3063 +#, c-format +msgid "attempted to delete invisible tuple" +msgstr "ë³¼ 수 없는 íŠœí”Œì„ ì‚­ì œ 하려고 함" + +#: access/heap/heapam.c:3489 access/heap/heapam.c:6240 +#, c-format +msgid "cannot update tuples during a parallel operation" +msgstr "병렬 작업 ì¤‘ì— íŠœí”Œ ê°±ì‹ ì€ í•  수 ì—†ìŒ" + +#: access/heap/heapam.c:3611 +#, c-format +msgid "attempted to update invisible tuple" +msgstr "ë³¼ 수 없는 íŠœí”Œì„ ë³€ê²½í•˜ë ¤ê³  함" + +#: access/heap/heapam.c:4963 access/heap/heapam.c:5001 +#: access/heap/heapam.c:5253 executor/execMain.c:2314 +#, c-format +msgid "could not obtain lock on row in relation \"%s\"" +msgstr "\"%s\" 릴레ì´ì…˜ì˜ 잠금 정보를 구할 수 ì—†ìŒ" + +#: access/heap/hio.c:322 access/heap/rewriteheap.c:664 +#, c-format +msgid "row is too big: size %zu, maximum size %zu" +msgstr "ì—´(row)ì´ ë„ˆë¬´ í½ë‹ˆë‹¤: í¬ê¸° %zu, 최대값 %zu" + +#: access/heap/rewriteheap.c:923 +#, c-format +msgid "could not write to file \"%s\", wrote %d of %d: %m" +msgstr "\"%s\" íŒŒì¼ ì“°ê¸° 실패, %d / %d 기ë¡í•¨: %m." + +#: access/heap/rewriteheap.c:963 access/heap/rewriteheap.c:1175 +#: access/heap/rewriteheap.c:1272 access/transam/timeline.c:407 +#: access/transam/timeline.c:483 access/transam/xlog.c:3087 +#: access/transam/xlog.c:3249 replication/logical/snapbuild.c:1605 +#: replication/slot.c:1088 replication/slot.c:1173 storage/file/fd.c:631 +#: storage/file/fd.c:3129 storage/smgr/md.c:1041 storage/smgr/md.c:1274 +#: storage/smgr/md.c:1447 utils/misc/guc.c:6885 +#, c-format +msgid "could not fsync file \"%s\": %m" +msgstr "\"%s\" íŒŒì¼ fsync 실패: %m" + +#: access/heap/rewriteheap.c:1018 access/heap/rewriteheap.c:1138 +#: access/transam/timeline.c:315 access/transam/timeline.c:461 +#: access/transam/xlog.c:3043 access/transam/xlog.c:3192 +#: access/transam/xlog.c:10192 access/transam/xlog.c:10230 +#: access/transam/xlog.c:10603 postmaster/postmaster.c:4364 +#: replication/logical/origin.c:542 replication/slot.c:1045 +#: storage/file/copydir.c:162 storage/smgr/md.c:327 utils/time/snapmgr.c:1275 +#, c-format +msgid "could not create file \"%s\": %m" +msgstr "\"%s\" 파ì¼ì„ 만들 수 ì—†ìŒ: %m" + +#: access/heap/rewriteheap.c:1147 +#, c-format +msgid "could not truncate file \"%s\" to %u: %m" +msgstr "\"%s\" 파ì¼ì„ %u í¬ê¸°ë¡œ 정리할 수 ì—†ìŒ: %m" + +#: access/heap/rewriteheap.c:1154 replication/walsender.c:481 +#: storage/smgr/md.c:1899 +#, c-format +msgid "could not seek to end of file \"%s\": %m" +msgstr "\"%s\" 파ì¼ì˜ ëì„ ì°¾ì„ ìˆ˜ ì—†ìŒ: %m" + +#: access/heap/rewriteheap.c:1165 access/transam/timeline.c:367 +#: access/transam/timeline.c:401 access/transam/timeline.c:477 +#: access/transam/xlog.c:3078 access/transam/xlog.c:3242 +#: postmaster/postmaster.c:4374 postmaster/postmaster.c:4384 +#: replication/logical/origin.c:551 replication/logical/origin.c:587 +#: replication/logical/origin.c:603 replication/logical/snapbuild.c:1589 +#: replication/slot.c:1074 storage/file/copydir.c:187 +#: utils/init/miscinit.c:1228 utils/init/miscinit.c:1237 +#: utils/init/miscinit.c:1244 utils/misc/guc.c:6846 utils/misc/guc.c:6877 +#: utils/misc/guc.c:8727 utils/misc/guc.c:8741 utils/time/snapmgr.c:1280 +#: utils/time/snapmgr.c:1287 +#, c-format +msgid "could not write to file \"%s\": %m" +msgstr "\"%s\" íŒŒì¼ ì“°ê¸° 실패: %m" + +#: access/heap/rewriteheap.c:1248 access/transam/xlog.c:10441 +#: access/transam/xlogarchive.c:114 access/transam/xlogarchive.c:468 +#: replication/logical/origin.c:529 replication/logical/reorderbuffer.c:2632 +#: replication/logical/reorderbuffer.c:2689 +#: replication/logical/snapbuild.c:1533 replication/logical/snapbuild.c:1908 +#: replication/slot.c:1147 storage/ipc/dsm.c:326 storage/smgr/md.c:427 +#: storage/smgr/md.c:476 storage/smgr/md.c:1394 +#, c-format +msgid "could not remove file \"%s\": %m" +msgstr "\"%s\" 파ì¼ì„ 삭제할 수 ì—†ìŒ: %m" + +#: access/heap/rewriteheap.c:1262 access/transam/timeline.c:111 +#: access/transam/timeline.c:236 access/transam/timeline.c:334 +#: access/transam/xlog.c:3019 access/transam/xlog.c:3136 +#: access/transam/xlog.c:3177 access/transam/xlog.c:3450 +#: access/transam/xlog.c:3528 access/transam/xlogutils.c:701 +#: replication/basebackup.c:403 replication/basebackup.c:1150 +#: replication/logical/origin.c:658 replication/logical/reorderbuffer.c:2156 +#: replication/logical/reorderbuffer.c:2402 +#: replication/logical/reorderbuffer.c:3081 +#: replication/logical/snapbuild.c:1582 replication/logical/snapbuild.c:1666 +#: replication/slot.c:1162 replication/walsender.c:474 +#: replication/walsender.c:2100 storage/file/copydir.c:155 +#: storage/file/fd.c:614 storage/file/fd.c:3041 storage/file/fd.c:3108 +#: storage/smgr/md.c:609 utils/error/elog.c:1879 utils/init/miscinit.c:1163 +#: utils/init/miscinit.c:1284 utils/init/miscinit.c:1362 utils/misc/guc.c:7105 +#: utils/misc/guc.c:7138 +#, c-format +msgid "could not open file \"%s\": %m" +msgstr "\"%s\" 파ì¼ì„ ì—´ 수 ì—†ìŒ: %m" + +#: access/index/amapi.c:82 commands/amcmds.c:164 +#, c-format +msgid "access method \"%s\" is not of type %s" +msgstr "\"%s\" ì ‘ê·¼ ë°©ë²•ì€ %s ìžë£Œí˜•ì—는 쓸 수 ì—†ìŒ" + +#: access/index/amapi.c:98 +#, c-format +msgid "index access method \"%s\" does not have a handler" +msgstr "\"%s\" ì¸ë±ìФ ì ‘ê·¼ ë°©ë²•ì— ëŒ€í•œ 핸들러가 ì—†ìŒ" + +#: access/index/indexam.c:155 catalog/objectaddress.c:1196 +#: commands/indexcmds.c:1800 commands/tablecmds.c:242 +#: commands/tablecmds.c:12180 +#, c-format +msgid "\"%s\" is not an index" +msgstr "\"%s\" ê°ì²´ëŠ” ì¸ë±ìŠ¤ê°€ 아닙니다" + +#: access/nbtree/nbtinsert.c:428 +#, c-format +msgid "duplicate key value violates unique constraint \"%s\"" +msgstr "ì¤‘ë³µëœ í‚¤ ê°’ì´ \"%s\" 고유 제약 ì¡°ê±´ì„ ìœ„ë°˜í•¨" + +#: access/nbtree/nbtinsert.c:430 +#, c-format +msgid "Key %s already exists." +msgstr "%s 키가 ì´ë¯¸ 있습니다." + +#: access/nbtree/nbtinsert.c:497 +#, c-format +msgid "failed to re-find tuple within index \"%s\"" +msgstr "\"%s\" ì¸ë±ìФì—서 튜플 재검색 실패" + +#: access/nbtree/nbtinsert.c:499 +#, c-format +msgid "This may be because of a non-immutable index expression." +msgstr "ì´ ë¬¸ì œëŠ” non-immutable ì¸ë±ìФ í‘œí˜„ì‹ ë•Œë¬¸ì¸ë“¯ 합니다." + +#: access/nbtree/nbtinsert.c:579 access/nbtree/nbtsort.c:491 +#, c-format +msgid "" +"Values larger than 1/3 of a buffer page cannot be indexed.\n" +"Consider a function index of an MD5 hash of the value, or use full text " +"indexing." +msgstr "" +"ë²„í¼ íŽ˜ì´ì§€ì˜ 1/3보다 í° ê°’ì€ ì¸ë±ì‹±í•  수 없습니다.\n" +"ê°’ì˜ MD5 해시 함수 ì¸ë±ìŠ¤ë¥¼ 고려하거나 ì „ì²´ í…스트 ì¸ë±ì‹±ì„ 사용하십시오." + +#: access/nbtree/nbtpage.c:168 access/nbtree/nbtpage.c:371 +#: access/nbtree/nbtpage.c:458 parser/parse_utilcmd.c:1702 +#, c-format +msgid "index \"%s\" is not a btree" +msgstr "\"%s\" ì¸ë±ìŠ¤ëŠ” btree ì¸ë±ìŠ¤ê°€ 아닙니다" + +#: access/nbtree/nbtpage.c:174 access/nbtree/nbtpage.c:377 +#: access/nbtree/nbtpage.c:464 +#, c-format +msgid "version mismatch in index \"%s\": file version %d, code version %d" +msgstr "\"%s\" ì¸ë±ìŠ¤ì˜ ë²„ì „ì´ í‹€ë¦½ë‹ˆë‹¤: íŒŒì¼ ë²„ì „ %d, 코드 버전 %d" + +#: access/nbtree/nbtpage.c:1152 +#, c-format +msgid "index \"%s\" contains a half-dead internal page" +msgstr "\"%s\" ì¸ë±ìŠ¤ì— ë°˜ì¯¤ 죽ì€(half-dead) ë‚´ë¶€ 페ì´ì§€ê°€ 있ìŒ" + +#: access/nbtree/nbtpage.c:1154 +#, c-format +msgid "" +"This can be caused by an interrupted VACUUM in version 9.3 or older, before " +"upgrade. Please REINDEX it." +msgstr "" +"ì´ ë¬¸ì œëŠ” 9.3 버전 ì´í•˜ 환경ì—서 VACUUM ìž‘ì—…ì´ ì¤‘ì§€ë˜ê³ , ê·¸ ìƒíƒœë¡œ 업그레ì´ë“œ" +"ë˜ì—ˆì„ ê°€ëŠ¥ì„±ì´ í½ë‹ˆë‹¤. 해당 ì¸ë±ìŠ¤ë¥¼ 다시 만드십시오." + +#: access/nbtree/nbtvalidate.c:100 +#, c-format +msgid "" +"btree operator family \"%s\" contains function %s with invalid support " +"number %d" +msgstr "" +"\"%s\" btree ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ ì§€ì› ë²ˆí˜¸ %d 로 지정ë˜ì—ˆ" +"습니다." + +#: access/nbtree/nbtvalidate.c:112 +#, c-format +msgid "" +"btree operator family \"%s\" contains function %s with wrong signature for " +"support number %d" +msgstr "" +"\"%s\" btree ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ signature ì§€ì› ë²ˆí˜¸ %d " +"로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: access/nbtree/nbtvalidate.c:132 +#, c-format +msgid "" +"btree operator family \"%s\" contains operator %s with invalid strategy " +"number %d" +msgstr "" +"\"%s\" btree ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s ì—°ì‚°ìžì˜ %d 번 ì „ëžµ 번호가 잘못ë˜ì—ˆìе" +"니다." + +#: access/nbtree/nbtvalidate.c:145 +#, c-format +msgid "" +"btree operator family \"%s\" contains invalid ORDER BY specification for " +"operator %s" +msgstr "" +"\"%s\" btree ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ORDER BY 명세를 사용합니다." + +#: access/nbtree/nbtvalidate.c:158 +#, c-format +msgid "btree operator family \"%s\" contains operator %s with wrong signature" +msgstr "\"%s\" btree ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ê¸°í˜¸ë¥¼ 사용합니다." + +#: access/nbtree/nbtvalidate.c:200 +#, c-format +msgid "btree operator family \"%s\" is missing operator(s) for types %s and %s" +msgstr "\"%s\" btree ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì—는 %s ìžë£Œí˜•ê³¼ %s ìžë£Œí˜•ìš© ì—°ì‚°ìžê°€ 빠졌ìŒ" + +#: access/nbtree/nbtvalidate.c:210 +#, c-format +msgid "" +"btree operator family \"%s\" is missing support function for types %s and %s" +msgstr "" +"\"%s\" btree ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì—는 %s ìžë£Œí˜•ê³¼ %s ìžë£Œí˜•ìš© ì§€ì› í•¨ìˆ˜ê°€ 빠졌ìŒ" + +#: access/nbtree/nbtvalidate.c:224 +#, c-format +msgid "btree operator class \"%s\" is missing operator(s)" +msgstr "\"%s\" btree ì—°ì‚°ìž í´ëž˜ìФì—는 ì—°ì‚°ìžê°€ 빠졌ìŒ" + +#: access/nbtree/nbtvalidate.c:241 +#, c-format +msgid "btree operator family \"%s\" is missing cross-type operator(s)" +msgstr "\"%s\" btree ì—°ì‚°ìž í´ëž˜ìФì—는 cross-type ì—°ì‚°ìžê°€ 빠졌ìŒ" + +#: access/spgist/spgutils.c:700 +#, c-format +msgid "SP-GiST inner tuple size %zu exceeds maximum %zu" +msgstr "SP-GiST ë‚´ë¶€ 튜플 í¬ê¸°ê°€ 초과ë¨: 현재값 %zu, 최대값 %zu" + +#: access/spgist/spgvalidate.c:92 +#, c-format +msgid "" +"spgist operator family \"%s\" contains support procedure %s with cross-type " +"registration" +msgstr "" +"\"%s\" spgist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— cross-type registration 으로 %s ì§€ì› í”„ë¡œì‹œì ¸" +"ê°€ í¬í•¨ë˜ì–´ 있습니다." + +#: access/spgist/spgvalidate.c:115 +#, c-format +msgid "" +"spgist operator family \"%s\" contains function %s with invalid support " +"number %d" +msgstr "" +"\"%s\" spgist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ ì§€ì› ë²ˆí˜¸ %d 로 지정ë˜" +"었습니다." + +#: access/spgist/spgvalidate.c:127 +#, c-format +msgid "" +"spgist operator family \"%s\" contains function %s with wrong signature for " +"support number %d" +msgstr "" +"\"%s\" spgist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s 함수가 ìž˜ëª»ëœ signature ì§€ì› ë²ˆí˜¸ %d " +"로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: access/spgist/spgvalidate.c:146 +#, c-format +msgid "" +"spgist operator family \"%s\" contains operator %s with invalid strategy " +"number %d" +msgstr "" +"\"%s\" spgist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— í¬í•¨ëœ %s ì—°ì‚°ìžì˜ %d 번 ì „ëžµ 번호가 잘못ë˜ì—ˆìе" +"니다." + +#: access/spgist/spgvalidate.c:159 +#, c-format +msgid "" +"spgist operator family \"%s\" contains invalid ORDER BY specification for " +"operator %s" +msgstr "" +"\"%s\" spgist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ORDER BY 명세를 사용합니다." + +#: access/spgist/spgvalidate.c:172 +#, c-format +msgid "spgist operator family \"%s\" contains operator %s with wrong signature" +msgstr "\"%s\" spgist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %s ì—°ì‚°ìžê°€ ìž˜ëª»ëœ ê¸°í˜¸ë¥¼ 사용합니다." + +#: access/spgist/spgvalidate.c:200 +#, c-format +msgid "" +"spgist operator family \"%s\" is missing operator(s) for types %s and %s" +msgstr "" +"\"%s\" spgist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì—서 %s ìžë£Œí˜•ê³¼ %s ìžë£Œí˜•ìš© ì—°ì‚°ìžê°€ 빠졌ìŒ" + +#: access/spgist/spgvalidate.c:220 +#, c-format +msgid "" +"spgist operator family \"%s\" is missing support function %d for type %s" +msgstr "\"%s\" spgist ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— %d ì§€ì› í•¨ìˆ˜ê°€ %s ìžë£Œí˜•용으로 없습니다." + +#: access/spgist/spgvalidate.c:233 +#, c-format +msgid "spgist operator class \"%s\" is missing operator(s)" +msgstr "\"%s\" spgist ì—°ì‚°ìž í´ëž˜ìŠ¤ì— ì—°ì‚°ìžê°€ 빠졌ìŒ" + +#: access/tablesample/bernoulli.c:152 access/tablesample/system.c:156 +#, c-format +msgid "sample percentage must be between 0 and 100" +msgstr "샘플 í¼ì„¼íЏ ê°’ì€ 0ì—서 100 사ì´ì—¬ì•¼ 함" + +#: access/transam/commit_ts.c:294 +#, c-format +msgid "cannot retrieve commit timestamp for transaction %u" +msgstr "%u íŠ¸ëžœìž­ì…˜ì˜ ì»¤ë°‹ 타임스탬프를 알 수 ì—†ìŒ" + +#: access/transam/commit_ts.c:392 +#, c-format +msgid "could not get commit timestamp data" +msgstr "커밋 타임스탬프 ìžë£Œë¥¼ ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: access/transam/commit_ts.c:394 +#, c-format +msgid "" +"Make sure the configuration parameter \"%s\" is set on the master server." +msgstr "ìš´ì˜ ì„œë²„ì—서 \"%s\" 환경 설정 매개 ë³€ìˆ˜ê°’ì„ ì§€ì • 하세요." + +#: access/transam/commit_ts.c:396 libpq/hba.c:1439 +#, c-format +msgid "Make sure the configuration parameter \"%s\" is set." +msgstr "\"%s\" 환경 설정 매개 변수를 지정하세요." + +#: access/transam/multixact.c:1000 +#, c-format +msgid "" +"database is not accepting commands that generate new MultiXactIds to avoid " +"wraparound data loss in database \"%s\"" +msgstr "" +"\"%s\" ë°ì´í„°ë² ì´ìФ ìžë£Œ ì†ì‹¤ì„ 막기 위해 새로운 MultiXactId 만드는 ìž‘ì—…ì„ " +"ë” ì´ìƒ í•  수 없습니다." + +#: access/transam/multixact.c:1002 access/transam/multixact.c:1009 +#: access/transam/multixact.c:1033 access/transam/multixact.c:1042 +#, c-format +msgid "" +"Execute a database-wide VACUUM in that database.\n" +"You might also need to commit or roll back old prepared transactions." +msgstr "" +"해당 ë°ì´í„°ë² ì´ìФ 단위로 VACUUM ìž‘ì—…ì„ ì§„í–‰í•˜ì‹­ì‹œì˜¤.\n" +"ë˜í•œ ì˜¤ëž˜ëœ íŠ¸ëžœìž­ì…˜ì„ ì»¤ë°‹í•˜ê±°ë‚˜ 롤백할 필요가 있습니다." + +#: access/transam/multixact.c:1007 +#, c-format +msgid "" +"database is not accepting commands that generate new MultiXactIds to avoid " +"wraparound data loss in database with OID %u" +msgstr "" +"%u OID ë°ì´í„°ë² ì´ìФ ìžë£Œ ì†ì‹¤ì„ 막기 위해 새로운 MultiXactId 만드는 ìž‘ì—…ì„ " +"ë” ì´ìƒ í•  수 없습니다." + +#: access/transam/multixact.c:1028 access/transam/multixact.c:2314 +#, c-format +msgid "database \"%s\" must be vacuumed before %u more MultiXactId is used" +msgid_plural "" +"database \"%s\" must be vacuumed before %u more MultiXactIds are used" +msgstr[0] "" +"\"%s\" ë°ì´í„°ë² ì´ìŠ¤ëŠ” %uë²ˆì˜ íŠ¸ëžœìž­ì…˜ì´ ë°œìƒë˜ê¸° ì „ì— VACUUM ìž‘ì—…ì„ í•´ì•¼ 합니" +"다." + +#: access/transam/multixact.c:1037 access/transam/multixact.c:2323 +#, c-format +msgid "" +"database with OID %u must be vacuumed before %u more MultiXactId is used" +msgid_plural "" +"database with OID %u must be vacuumed before %u more MultiXactIds are used" +msgstr[0] "" +"%u OID ë°ì´í„°ë² ì´ìŠ¤ëŠ” %uë²ˆì˜ íŠ¸ëžœìž­ì…˜ì´ ë°œìƒë˜ê¸° ì „ì— VACUUM ìž‘ì—…ì„ í•´ì•¼ 합니" +"다." + +#: access/transam/multixact.c:1098 +#, c-format +msgid "multixact \"members\" limit exceeded" +msgstr "multixact \"회수\" 초과" + +#: access/transam/multixact.c:1099 +#, c-format +msgid "" +"This command would create a multixact with %u members, but the remaining " +"space is only enough for %u member." +msgid_plural "" +"This command would create a multixact with %u members, but the remaining " +"space is only enough for %u members." +msgstr[0] "" +"ì´ ëª…ë ¹ì€ %u ê°œì˜ multixact를 ì¨ì•¼í•˜ëŠ”ë°, 쓸 수 있는 ê³µê°„ì€ %u ê°œ ë¿ìž…니다." + +#: access/transam/multixact.c:1104 +#, c-format +msgid "" +"Execute a database-wide VACUUM in database with OID %u with reduced " +"vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age " +"settings." +msgstr "" +"vacuum_multixact_freeze_min_age, vacuum_multixact_freeze_table_age ê°’ì„ ì¡°ì •" +"하고, %u OID ë°ì´í„°ë² ì´ìФ 대ìƒìœ¼ë¡œ VACUUM ìž‘ì—…ì„ í•˜ì‹­ì‹œì˜¤." + +#: access/transam/multixact.c:1135 +#, c-format +msgid "" +"database with OID %u must be vacuumed before %d more multixact member is used" +msgid_plural "" +"database with OID %u must be vacuumed before %d more multixact members are " +"used" +msgstr[0] "" +"%u OID ë°ì´í„°ë² ì´ìŠ¤ëŠ” %d ê°œì˜ ë©€í‹°íŠ¸ëžœìž­ì…˜ì„ ì‚¬ìš©í•˜ê¸° ì „ì— vacuum ìž‘ì—…ì„ í•´" +"야 합니다." + +#: access/transam/multixact.c:1140 +#, c-format +msgid "" +"Execute a database-wide VACUUM in that database with reduced " +"vacuum_multixact_freeze_min_age and vacuum_multixact_freeze_table_age " +"settings." +msgstr "" +"vacuum_multixact_freeze_min_age 설정값과 vacuum_multixact_freeze_table_age ê°’" +"ì„ ì¤„ì—¬ì„œ ë°ì´í„°ë² ì´ìФ 단위로 VACUUM ìž‘ì—…ì„ ì§„í–‰í•˜ì„¸ìš”." + +#: access/transam/multixact.c:1277 +#, c-format +msgid "MultiXactId %u does no longer exist -- apparent wraparound" +msgstr "%u번 MultiXactId ë”ì´ìƒ ì—†ìŒ -- 번호 겹침 í˜„ìƒ ë°œìƒ" + +#: access/transam/multixact.c:1285 +#, c-format +msgid "MultiXactId %u has not been created yet -- apparent wraparound" +msgstr "%u번 MultiXactId를 만들 수 ì—†ìŒ -- 번호 겹침 í˜„ìƒ ë°œìƒ" + +#: access/transam/multixact.c:2264 +#, c-format +msgid "MultiXactId wrap limit is %u, limited by database with OID %u" +msgstr "MultiXactId 겹침 한계는 %u 입니다. %u OID ë°ì´í„°ë² ì´ìФì—서 제한ë¨" + +#: access/transam/multixact.c:2319 access/transam/multixact.c:2328 +#: access/transam/varsup.c:146 access/transam/varsup.c:153 +#: access/transam/varsup.c:384 access/transam/varsup.c:391 +#, c-format +msgid "" +"To avoid a database shutdown, execute a database-wide VACUUM in that " +"database.\n" +"You might also need to commit or roll back old prepared transactions." +msgstr "" +"ë°ì´í„°ë² ì´ìŠ¤ê°€ 종료ë˜ì§€ 않ë„ë¡ í•˜ë ¤ë©´ ë°ì´í„°ë² ì´ìФ ìˆ˜ì¤€ì˜ VACUUMì„ ì‹¤í–‰í•˜ì‹­ì‹œ" +"오.\n" +"ë˜í•œ ì˜¤ëž˜ëœ íŠ¸ëžœìž­ì…˜ì„ ì»¤ë°‹í•˜ê±°ë‚˜ 롤백할 필요가 있습니다." + +#: access/transam/multixact.c:2598 +#, c-format +msgid "oldest MultiXactId member is at offset %u" +msgstr "ì œì¼ ì˜¤ëž˜ëœ MultiXactId ê°’ì€ %u ìœ„ì¹˜ì— ìžˆìŒ" + +#: access/transam/multixact.c:2602 +#, c-format +msgid "" +"MultiXact member wraparound protections are disabled because oldest " +"checkpointed MultiXact %u does not exist on disk" +msgstr "" +"가장 ì˜¤ëž˜ëœ ì²´í¬í¬ì¸íЏ ìž‘ì—…ì´ ì™„ë£Œëœ %u 멀티 트랜잭션 번호가 디스í¬ì— 없기 때" +"문ì—, 멀티 트랜잭션 번호 겹침 ë°©ì§€ ê¸°ëŠ¥ì´ ë¹„í™œì„±í™” ë˜ì–´ 있습니다." + +#: access/transam/multixact.c:2624 +#, c-format +msgid "MultiXact member wraparound protections are now enabled" +msgstr "멀티 트랜잭션 번호 겹침 ë°©ì§€ ê¸°ëŠ¥ì´ í™œì„±í™” ë˜ì—ˆìŒ" + +#: access/transam/multixact.c:2626 +#, c-format +msgid "MultiXact member stop limit is now %u based on MultiXact %u" +msgstr "멀티 트랜잭션 중지 제한 번호는 %u 입니다. (%u ë©€í‹°íŠ¸ëžœìž­ì…˜ì— ê¸°ì´ˆí•¨)" + +#: access/transam/multixact.c:3006 +#, c-format +msgid "" +"oldest MultiXact %u not found, earliest MultiXact %u, skipping truncation" +msgstr "" +"가장 ì˜¤ëž˜ëœ ë©€í‹° 트랜잭션 번호는 %u, 가장 최신 ê²ƒì€ %u, truncate 작업 건너뜀" + +#: access/transam/multixact.c:3024 +#, c-format +msgid "" +"cannot truncate up to MultiXact %u because it does not exist on disk, " +"skipping truncation" +msgstr "" +"디스í¬ì— 해당 멀티 트랜잭션 번호가 없어, %u 멀티 트랜잭션 번호로 truncate 못" +"함, truncate 작업 건너뜀" + +#: access/transam/multixact.c:3350 +#, c-format +msgid "invalid MultiXactId: %u" +msgstr "ìž˜ëª»ëœ MultiXactId: %u" + +#: access/transam/parallel.c:589 +#, c-format +msgid "postmaster exited during a parallel transaction" +msgstr "병렬 트랜잭션 처리 중 postmaster 종료ë¨" + +#: access/transam/parallel.c:774 +#, c-format +msgid "lost connection to parallel worker" +msgstr "병렬 처리 ìž‘ì—…ìž í”„ë¡œì„¸ìŠ¤ ì—°ê²° ëŠê¹€" + +#: access/transam/parallel.c:833 access/transam/parallel.c:835 +msgid "parallel worker" +msgstr "병렬 처리 작업ìž" + +#: access/transam/parallel.c:974 +#, c-format +msgid "could not map dynamic shared memory segment" +msgstr "ë™ì  공유 메모리 세그먼트를 할당할 수 ì—†ìŒ" + +#: access/transam/parallel.c:979 +#, c-format +msgid "invalid magic number in dynamic shared memory segment" +msgstr "ë™ì  공유 메모리 ì„¸ê·¸ë¨¼íŠ¸ì— ìž˜ëª»ëœ ë§¤ì§ ë²ˆí˜¸ê°€ 있ìŒ" + +#: access/transam/slru.c:665 +#, c-format +msgid "file \"%s\" doesn't exist, reading as zeroes" +msgstr "\"%s\" íŒŒì¼ ì—†ìŒ, 0으로 ì½ìŒ" + +#: access/transam/slru.c:895 access/transam/slru.c:901 +#: access/transam/slru.c:908 access/transam/slru.c:915 +#: access/transam/slru.c:922 access/transam/slru.c:929 +#, c-format +msgid "could not access status of transaction %u" +msgstr "%u íŠ¸ëžœìž­ì…˜ì˜ ìƒíƒœë¥¼ 액세스할 수 ì—†ìŒ" + +#: access/transam/slru.c:896 +#, c-format +msgid "Could not open file \"%s\": %m." +msgstr "\"%s\" 파ì¼ì„ ì—´ 수 ì—†ìŒ: %m." + +#: access/transam/slru.c:902 +#, c-format +msgid "Could not seek in file \"%s\" to offset %u: %m." +msgstr "\"%s\" 파ì¼ì—서 %u 위치를 ì°¾ì„ ìˆ˜ ì—†ìŒ: %m." + +#: access/transam/slru.c:909 +#, c-format +msgid "Could not read from file \"%s\" at offset %u: %m." +msgstr "\"%s\" 파ì¼ì—서 %u 위치를 ì½ì„ 수 ì—†ìŒ: %m." + +#: access/transam/slru.c:916 +#, c-format +msgid "Could not write to file \"%s\" at offset %u: %m." +msgstr "\"%s\" 파ì¼ì—서 %u ìœ„ì¹˜ì— ì“¸ 수 ì—†ìŒ: %m." + +#: access/transam/slru.c:923 +#, c-format +msgid "Could not fsync file \"%s\": %m." +msgstr "\"%s\" íŒŒì¼ fsync 실패: %m." + +#: access/transam/slru.c:930 +#, c-format +msgid "Could not close file \"%s\": %m." +msgstr "\"%s\" 파ì¼ì„ ë‹«ì„ ìˆ˜ ì—†ìŒ: %m." + +#: access/transam/slru.c:1185 +#, c-format +msgid "could not truncate directory \"%s\": apparent wraparound" +msgstr "\"%s\" 디렉터리를 비울 수 ì—†ìŒ: 랩어ë¼ìš´ë“œ ë°œìƒ" + +#: access/transam/slru.c:1240 access/transam/slru.c:1296 +#, c-format +msgid "removing file \"%s\"" +msgstr "\"%s\" íŒŒì¼ ì‚­ì œ 중" + +#: access/transam/timeline.c:148 access/transam/timeline.c:153 +#, c-format +msgid "syntax error in history file: %s" +msgstr "히스토리 파ì¼ì—서 문법오류: %s" + +#: access/transam/timeline.c:149 +#, c-format +msgid "Expected a numeric timeline ID." +msgstr "ìˆ«ìž íƒ€ìž„ë¼ì¸ IDê°€ 필요합니다." + +#: access/transam/timeline.c:154 +#, c-format +msgid "Expected a transaction log switchpoint location." +msgstr "트랜잭션 로그 전환 위치 ê°’ì´ ìžˆì–´ì•¼ 함" + +#: access/transam/timeline.c:158 +#, c-format +msgid "invalid data in history file: %s" +msgstr "작업내역 파ì¼ì— ìž˜ëª»ëœ ìžë£Œê°€ 있ìŒ: %s" + +#: access/transam/timeline.c:159 +#, c-format +msgid "Timeline IDs must be in increasing sequence." +msgstr "타임ë¼ì¸ ID ê°’ì€ ê·¸ ê°’ì´ ì¦ê°€í•˜ëŠ” 순번값ì´ì–´ì•¼í•©ë‹ˆë‹¤." + +#: access/transam/timeline.c:179 +#, c-format +msgid "invalid data in history file \"%s\"" +msgstr "작업내역 파ì¼ì— ìž˜ëª»ëœ ìžë£Œê°€ 있ìŒ: \"%s\"" + +#: access/transam/timeline.c:180 +#, c-format +msgid "Timeline IDs must be less than child timeline's ID." +msgstr "타임ë¼ì¸ ID는 하위 타임ë¼ì¸ ID보다 작아야 합니다." + +#: access/transam/timeline.c:412 access/transam/timeline.c:488 +#: access/transam/xlog.c:3093 access/transam/xlog.c:3254 +#: access/transam/xlogfuncs.c:690 commands/copy.c:1708 +#: storage/file/copydir.c:201 +#, c-format +msgid "could not close file \"%s\": %m" +msgstr "\"%s\" 파ì¼ì„ ë‹«ì„ ìˆ˜ ì—†ìŒ: %m" + +#: access/transam/timeline.c:570 +#, c-format +msgid "requested timeline %u is not in this server's history" +msgstr "요청한 %u 타ì´ë¼ì¸ì´ ì´ ì„œë²„ ë‚´ì—­ì—는 ì—†ìŒ" + +#: access/transam/twophase.c:363 +#, c-format +msgid "transaction identifier \"%s\" is too long" +msgstr "\"%s\" 트랜잭션 ì‹ë³„ìžê°€ 너무 ê¹ë‹ˆë‹¤" + +#: access/transam/twophase.c:370 +#, c-format +msgid "prepared transactions are disabled" +msgstr "ì¤€ë¹„ëœ íŠ¸ëžœìž­ì…˜ì´ ë¹„í™œì„±í™”ë¨" + +#: access/transam/twophase.c:371 +#, c-format +msgid "Set max_prepared_transactions to a nonzero value." +msgstr "max_prepared_transactions ì„¤ì •ê°’ì„ 0ì´ ì•„ë‹Œ 값으로 설정하십시오." + +#: access/transam/twophase.c:390 +#, c-format +msgid "transaction identifier \"%s\" is already in use" +msgstr "\"%s\" ì´ë¦„ì˜ íŠ¸ëžœìž­ì…˜ ì‹ë³„ìžê°€ ì´ë¯¸ 사용 중입니다" + +#: access/transam/twophase.c:399 +#, c-format +msgid "maximum number of prepared transactions reached" +msgstr "ì¤€ë¹„ëœ íŠ¸ëžœìž­ì…˜ì˜ ìµœëŒ€ 개수를 ëª¨ë‘ ì‚¬ìš©í–ˆìŠµë‹ˆë‹¤" + +#: access/transam/twophase.c:400 +#, c-format +msgid "Increase max_prepared_transactions (currently %d)." +msgstr "max_prepared_transactions ê°’ì„ ëŠ˜ë ¤ì£¼ì„¸ìš” (현재 %d)." + +#: access/transam/twophase.c:540 +#, c-format +msgid "prepared transaction with identifier \"%s\" is busy" +msgstr "\"%s\" ì´ë¦„ì˜ ì¤€ë¹„ëœ íŠ¸ëžœìž­ì…˜ ì‹ë³„ìžê°€ 여러 ê³³ì—서 ì“°ì´ê³  있습니다" + +#: access/transam/twophase.c:546 +#, c-format +msgid "permission denied to finish prepared transaction" +msgstr "ì¤€ë¹„ëœ íŠ¸ëžœìž­ì…˜ ë내기 작업 권한 ì—†ìŒ" + +#: access/transam/twophase.c:547 +#, c-format +msgid "Must be superuser or the user that prepared the transaction." +msgstr "해당 ì¤€ë¹„ëœ íŠ¸ëžœìž­ì…˜ì˜ ì†Œìœ ì£¼ì´ê±°ë‚˜ superuser여야합니다" + +#: access/transam/twophase.c:558 +#, c-format +msgid "prepared transaction belongs to another database" +msgstr "ì¤€ë¹„ëœ íŠ¸ëžœìž­ì…˜ì´ ë‹¤ë¥¸ ë°ì´í„°ë² ì´ìŠ¤ì— ì†í•´ 있ìŒ" + +#: access/transam/twophase.c:559 +#, c-format +msgid "" +"Connect to the database where the transaction was prepared to finish it." +msgstr "ìž‘ì—…ì„ ë§ˆì¹˜ë ¤ë©´ ê·¸ ì¤€ë¹„ëœ íŠ¸ëžœìž­ì…˜ì´ ìžˆëŠ” ë°ì´í„°ë² ì´ìŠ¤ì— ì—°ê²°í•˜ì‹­ì‹œì˜¤." + +#: access/transam/twophase.c:574 +#, c-format +msgid "prepared transaction with identifier \"%s\" does not exist" +msgstr "\"%s\" ì´ë¦„ì˜ ì¤€ë¹„ëœ íŠ¸ëžœìž­ì…˜ì´ ì—†ìŠµë‹ˆë‹¤" + +#: access/transam/twophase.c:1043 +#, c-format +msgid "two-phase state file maximum length exceeded" +msgstr "2단계 ìƒíƒœ íŒŒì¼ ìµœëŒ€ 길ì´ë¥¼ 초과함" + +#: access/transam/twophase.c:1161 +#, c-format +msgid "could not open two-phase state file \"%s\": %m" +msgstr "\"%s\" ì´ë¦„ì˜ two-phase ìƒíƒœì •ë³´ 파ì¼ì„ ì—´ 수 ì—†ìŒ: %m" + +#: access/transam/twophase.c:1178 +#, c-format +msgid "could not stat two-phase state file \"%s\": %m" +msgstr "\"%s\" ì´ë¦„ì˜ two-phase ìƒíƒœì •ë³´ 파ì¼ì˜ 파ì¼ì •보를 알 수 ì—†ìŒ: %m" + +#: access/transam/twophase.c:1210 +#, c-format +msgid "could not read two-phase state file \"%s\": %m" +msgstr "\"%s\" ì´ë¦„ì˜ two-phase ìƒíƒœì •ë³´ 파ì¼ì„ ì½ì„ 수 ì—†ìŒ: %m" + +#: access/transam/twophase.c:1263 access/transam/xlog.c:6109 +#, c-format +msgid "Failed while allocating an XLog reading processor." +msgstr "XLog ì½ê¸° 프로세서를 할당하는 ì¤‘ì— ì˜¤ë¥˜ ë°œìƒ" + +#: access/transam/twophase.c:1269 +#, c-format +msgid "could not read two-phase state from xlog at %X/%X" +msgstr "two-phase ìƒíƒœì •ë³´ì„ ì½ì„ 수 ì—†ìŒ xlog 위치: %X/%X" + +#: access/transam/twophase.c:1277 +#, c-format +msgid "expected two-phase state data is not present in xlog at %X/%X" +msgstr "xlog %X/%X ìœ„ì¹˜ì— 2단계 커밋 ìƒíƒœ ìžë£Œê°€ 없습니다" + +#: access/transam/twophase.c:1512 +#, c-format +msgid "could not remove two-phase state file \"%s\": %m" +msgstr "\"%s\" ì´ë¦„ì˜ two-phase ìƒíƒœì •ë³´ 파ì¼ì„ 삭제할 수 ì—†ìŒ: %m" + +#: access/transam/twophase.c:1542 +#, c-format +msgid "could not recreate two-phase state file \"%s\": %m" +msgstr "\"%s\" ì´ë¦„ì˜ two-phase ìƒíƒœì •ë³´ 파ì¼ì„ 다시 만들 수 ì—†ìŒ: %m" + +#: access/transam/twophase.c:1551 access/transam/twophase.c:1558 +#, c-format +msgid "could not write two-phase state file: %m" +msgstr "two-phase ìƒíƒœì •ë³´ 파ì¼ì„ 쓸 수 ì—†ìŒ: %m" + +#: access/transam/twophase.c:1570 +#, c-format +msgid "could not fsync two-phase state file: %m" +msgstr "two-phase ìƒíƒœì •ë³´ 파ì¼ì˜ fsync 작업 실패: %m" + +#: access/transam/twophase.c:1576 +#, c-format +msgid "could not close two-phase state file: %m" +msgstr "two-phase ìƒíƒœì •ë³´ 파ì¼ì„ ë‹«ì„ ìˆ˜ ì—†ìŒ: %m" + +#: access/transam/twophase.c:1649 +#, c-format +msgid "" +"%u two-phase state file was written for long-running prepared transactions" +msgid_plural "" +"%u two-phase state files were written for long-running prepared transactions" +msgstr[0] "" + +#: access/transam/twophase.c:1713 +#, c-format +msgid "removing future two-phase state file \"%s\"" +msgstr "\"%s\" ì´ë¦„ì˜ future two-phase ìƒíƒœì •ë³´ 파ì¼ì„ 삭제함" + +#: access/transam/twophase.c:1729 access/transam/twophase.c:1740 +#: access/transam/twophase.c:1860 access/transam/twophase.c:1871 +#: access/transam/twophase.c:1948 +#, c-format +msgid "removing corrupt two-phase state file \"%s\"" +msgstr "\"%s\" ì´ë¦„ì˜ ìž˜ëª»ëœ two-phase ìƒíƒœì •ë³´ 파ì¼ì„ 삭제함" + +#: access/transam/twophase.c:1849 access/transam/twophase.c:1937 +#, c-format +msgid "removing stale two-phase state file \"%s\"" +msgstr "\"%s\" ì´ë¦„ì˜ ì˜¤ëž˜ëœ two-phase ìƒíƒœì •ë³´ 파ì¼ì„ 삭제함" + +#: access/transam/twophase.c:1955 +#, c-format +msgid "recovering prepared transaction %u" +msgstr "%u ì¤€ë¹„ëœ íŠ¸ëžœìž­ì…˜ì„ ë³µêµ¬í•¨" + +#: access/transam/varsup.c:124 +#, c-format +msgid "" +"database is not accepting commands to avoid wraparound data loss in database " +"\"%s\"" +msgstr "" +"\"%s\" ë°ì´í„°ë² ì´ìФ 트랜잭션 ID ê²¹ì¹¨ì— ì˜í•œ ìžë£Œ ì†ì‹¤ì„ 방지하기 위해 ë” ì´" +"ìƒ ìžë£Œ ì¡°ìž‘ ìž‘ì—…ì„ í—ˆìš©í•˜ì§€ 않습니다" + +#: access/transam/varsup.c:126 access/transam/varsup.c:133 +#, c-format +msgid "" +"Stop the postmaster and vacuum that database in single-user mode.\n" +"You might also need to commit or roll back old prepared transactions." +msgstr "" +"postmaster를 중지하고 ë‹¨ì¼ ì‚¬ìš©ìž ëª¨ë“œë¡œ 서버를 실행한 ë’¤ VACUUM ìž‘ì—…ì„ í•˜ì‹­" +"시오.\n" +"ë˜í•œ ì˜¤ëž˜ëœ íŠ¸ëžœìž­ì…˜ì„ ì»¤ë°‹í•˜ê±°ë‚˜ 롤백할 필요가 있습니다." + +#: access/transam/varsup.c:131 +#, c-format +msgid "" +"database is not accepting commands to avoid wraparound data loss in database " +"with OID %u" +msgstr "" +"%u OID ë°ì´í„°ë² ì´ìФì—서 ìžë£Œ 겹침으로 ë°œìƒí•  수 있는 ìžë£Œ ì†ì‹¤ì„ 방지하기 위" +"í•´ ëª…ë ¹ì„ ìˆ˜ë½í•˜ì§€ 않ìŒ" + +#: access/transam/varsup.c:143 access/transam/varsup.c:381 +#, c-format +msgid "database \"%s\" must be vacuumed within %u transactions" +msgstr "\"%s\" ë°ì´í„°ë² ì´ìŠ¤ëŠ” %uë²ˆì˜ íŠ¸ëžœìž­ì…˜ì´ ë°œìƒë˜ê¸° ì „ì— ì²­ì†Œí•´ì•¼ 합니다" + +#: access/transam/varsup.c:150 access/transam/varsup.c:388 +#, c-format +msgid "database with OID %u must be vacuumed within %u transactions" +msgstr "%u OID ë°ì´í„°ë² ì´ìŠ¤ëŠ” %uë²ˆì˜ íŠ¸ëžœìž­ì…˜ì´ ë°œìƒë˜ê¸° ì „ì— ì²­ì†Œí•´ì•¼ 합니다" + +#: access/transam/varsup.c:346 +#, c-format +msgid "transaction ID wrap limit is %u, limited by database with OID %u" +msgstr "트랜잭션 ID 겹침 ì œí•œì€ %u번 입니다., %u OID ë°ì´í„°ë² ì´ìФì—서 제한ë¨" + +#: access/transam/xact.c:943 +#, c-format +msgid "cannot have more than 2^32-2 commands in a transaction" +msgstr "í•˜ë‚˜ì˜ íŠ¸ëžœìž­ì…˜ 안ì—서는 2^32-2 ê°œì˜ ëª…ë ¹ì„ ì´ˆê³¼í•  수 ì—†ìŒ" + +#: access/transam/xact.c:1467 +#, c-format +msgid "maximum number of committed subtransactions (%d) exceeded" +msgstr "ì»¤ë°‹ëœ í•˜ìœ„ 트랜잭션 수(%d)ê°€ 최대치를 초과함" + +#: access/transam/xact.c:2263 +#, c-format +msgid "cannot PREPARE a transaction that has operated on temporary tables" +msgstr "임시 í…Œì´ë¸”ì— ëŒ€í•´ ì‹¤í–‰ëœ íŠ¸ëžœìž­ì…˜ì„ PREPAREí•  수 ì—†ìŒ" + +#: access/transam/xact.c:2273 +#, c-format +msgid "cannot PREPARE a transaction that has exported snapshots" +msgstr "스냅샷으로 내보낸 íŠ¸ëžœìž­ì…˜ì€ PREPARE ìž‘ì—…ì„ í•  수 ì—†ìŒ" + +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:3155 +#, c-format +msgid "%s cannot run inside a transaction block" +msgstr "%s ëª…ë ¹ì€ íŠ¸ëžœìž­ì…˜ 블럭안ì—서 실행할 수 ì—†ìŒ" + +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:3165 +#, c-format +msgid "%s cannot run inside a subtransaction" +msgstr "%s ëª…ë ¹ì€ ì„œë¸ŒíŠ¸ëžœìž­ì…˜ 블럭안ì—서 실행할 수 ì—†ìŒ" + +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:3175 +#, c-format +msgid "%s cannot be executed from a function or multi-command string" +msgstr "%s ëª…ë ¹ì€ í•¨ìˆ˜ë‚˜ 다중명령ì—서 실행할 수 ì—†ìŒ" + +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:3246 +#, c-format +msgid "%s can only be used in transaction blocks" +msgstr "%s ëª…ë ¹ì€ íŠ¸ëžœìž­ì…˜ 블럭ì—서만 ì‚¬ìš©ë  ìˆ˜ 있ìŒ" + +#: access/transam/xact.c:3430 +#, c-format +msgid "there is already a transaction in progress" +msgstr "ì´ë¯¸ 트랜잭션 ìž‘ì—…ì´ ì§„í–‰ 중입니다" + +#: access/transam/xact.c:3598 access/transam/xact.c:3701 +#, c-format +msgid "there is no transaction in progress" +msgstr "현재 트랜잭션 ìž‘ì—…ì„ í•˜ì§€ 않고 있습니다" + +#: access/transam/xact.c:3609 +#, c-format +msgid "cannot commit during a parallel operation" +msgstr "ë°ì´í„°ë² ì´ìФ íŠ¸ëžœìž­ì…˜ì„ commit í•  수 ì—†ìŒ" + +#: access/transam/xact.c:3712 +#, c-format +msgid "cannot abort during a parallel operation" +msgstr "병렬 작업 중ì—는 중지 í•  수 ì—†ìŒ" + +#: access/transam/xact.c:3754 +#, c-format +msgid "cannot define savepoints during a parallel operation" +msgstr "병렬 작업 중ì—는 savepoint ì§€ì •ì„ í•  수 ì—†ìŒ" + +#: access/transam/xact.c:3821 +#, c-format +msgid "cannot release savepoints during a parallel operation" +msgstr "병렬 작업 중ì—는 savepoint를 지울 수 ì—†ìŒ" + +#: access/transam/xact.c:3832 access/transam/xact.c:3884 +#: access/transam/xact.c:3890 access/transam/xact.c:3946 +#: access/transam/xact.c:3996 access/transam/xact.c:4002 +#, c-format +msgid "no such savepoint" +msgstr "그런 savepointê°€ 없습니다" + +#: access/transam/xact.c:3934 +#, c-format +msgid "cannot rollback to savepoints during a parallel operation" +msgstr "병렬 작업 중ì—는 savepoint 지정 취소 ìž‘ì—…ì„ í•  수 ì—†ìŒ" + +#: access/transam/xact.c:4062 +#, c-format +msgid "cannot start subtransactions during a parallel operation" +msgstr "병렬 처리 중ì—는 í•˜ìœ„íŠ¸ëžœìž­ì…˜ì„ ì‹œìž‘í•  수 ì—†ìŒ" + +#: access/transam/xact.c:4129 +#, c-format +msgid "cannot commit subtransactions during a parallel operation" +msgstr "병렬 처리 중ì—는 í•˜ìœ„íŠ¸ëžœìž­ì…˜ì„ ì»¤ë°‹í•  수 ì—†ìŒ" + +#: access/transam/xact.c:4737 +#, c-format +msgid "cannot have more than 2^32-1 subtransactions in a transaction" +msgstr "í•˜ë‚˜ì˜ íŠ¸ëžœìž­ì…˜ 안ì—서는 2^32-1 ê°œì˜ í•˜ìœ„íŠ¸ëžœìž­ì…˜ì„ ì´ˆê³¼í•  수 ì—†ìŒ" + +#: access/transam/xlog.c:2299 +#, c-format +msgid "could not seek in log file %s to offset %u: %m" +msgstr "%s 파ì¼ì—서 %u 위치를 ì°¾ì„ ìˆ˜ ì—†ìŒ: %m" + +#: access/transam/xlog.c:2319 +#, c-format +msgid "could not write to log file %s at offset %u, length %zu: %m" +msgstr "%s 로그 íŒŒì¼ ì“°ê¸° 실패, 위치 %u, ê¸¸ì´ %zu: %m" + +#: access/transam/xlog.c:2582 +#, c-format +msgid "updated min recovery point to %X/%X on timeline %u" +msgstr "최소 복구 ì§€ì : %X/%X, 타임ë¼ì¸: %u 변경 완료" + +#: access/transam/xlog.c:3224 +#, c-format +msgid "not enough data in file \"%s\"" +msgstr "\"%s\" 파ì¼ì— ìžë£Œê°€ 불충분합니다" + +#: access/transam/xlog.c:3365 +#, c-format +msgid "could not open transaction log file \"%s\": %m" +msgstr "\"%s\" 트랜잭션 로그 파ì¼ì„ ì—´ 수 ì—†ìŒ: %m" + +#: access/transam/xlog.c:3554 access/transam/xlog.c:5339 +#, c-format +msgid "could not close log file %s: %m" +msgstr "%s 로그 파ì¼ì„ ë‹«ì„ ìˆ˜ ì—†ìŒ: %m" + +#: access/transam/xlog.c:3611 access/transam/xlogutils.c:696 +#: replication/walsender.c:2095 +#, c-format +msgid "requested WAL segment %s has already been removed" +msgstr "요청한 %s WAL ì¡°ê° íŒŒì¼ì€ ì´ë¯¸ 지워졌ìŒ" + +#: access/transam/xlog.c:3671 access/transam/xlog.c:3746 +#: access/transam/xlog.c:3944 +#, c-format +msgid "could not open transaction log directory \"%s\": %m" +msgstr "\"%s\" 트랜잭션 로그 디렉터리 열기 실패: %m" + +#: access/transam/xlog.c:3827 +#, c-format +msgid "recycled transaction log file \"%s\"" +msgstr "\"%s\" 트랜잭션 로그 íŒŒì¼ ìž¬í™œìš©í•¨" + +#: access/transam/xlog.c:3839 +#, c-format +msgid "removing transaction log file \"%s\"" +msgstr "\"%s\" 트랜잭션 로그 íŒŒì¼ ì‚­ì œ 중" + +#: access/transam/xlog.c:3859 +#, c-format +msgid "could not rename old transaction log file \"%s\": %m" +msgstr "ì´ì „ 트랜잭션 로그 íŒŒì¼ \"%s\"ì˜ ì´ë¦„ì„ ë°”ê¿€ 수 ì—†ìŒ: %m" + +#: access/transam/xlog.c:3871 +#, c-format +msgid "could not remove old transaction log file \"%s\": %m" +msgstr "ì´ì „ 트랜잭션 로그 íŒŒì¼ \"%s\"ì„(를) 제거할 수 ì—†ìŒ: %m" + +#: access/transam/xlog.c:3904 access/transam/xlog.c:3914 +#, c-format +msgid "required WAL directory \"%s\" does not exist" +msgstr "필요한 WAL 디렉터리 \"%s\"ì´(ê°€) ì—†ìŒ" + +#: access/transam/xlog.c:3920 +#, c-format +msgid "creating missing WAL directory \"%s\"" +msgstr "누ë½ëœ WAL 디렉터리 \"%s\"ì„(를) 만드는 중" + +#: access/transam/xlog.c:3923 +#, c-format +msgid "could not create missing directory \"%s\": %m" +msgstr "누ë½ëœ \"%s\" 디렉터리를 만들 수 ì—†ìŒ: %m" + +#: access/transam/xlog.c:3954 +#, c-format +msgid "removing transaction log backup history file \"%s\"" +msgstr "\"%s\" 트랜잭션 로그 백업 히스토리 íŒŒì¼ ì‚­ì œ 중" + +#: access/transam/xlog.c:4035 +#, c-format +msgid "unexpected timeline ID %u in log segment %s, offset %u" +msgstr "예ìƒì¹˜ 못한 타임ë¼ì¸ ID %u, 로그 ì¡°ê°: %s, 위치: %u" + +#: access/transam/xlog.c:4157 +#, c-format +msgid "new timeline %u is not a child of database system timeline %u" +msgstr "요청한 %u 타임ë¼ì¸ì€ %u ë°ì´í„°ë² ì´ìФ 시스템 타임ë¼ì¸ì˜ 하위가 아님" + +#: access/transam/xlog.c:4171 +#, c-format +msgid "" +"new timeline %u forked off current database system timeline %u before " +"current recovery point %X/%X" +msgstr "" + +#: access/transam/xlog.c:4190 +#, c-format +msgid "new target timeline is %u" +msgstr "새 ëŒ€ìƒ íƒ€ìž„ë¼ì¸: %u" + +#: access/transam/xlog.c:4270 +#, c-format +msgid "could not create control file \"%s\": %m" +msgstr "\"%s\" 컨트롤 íŒŒì¼ ë§Œë“¤ 수 ì—†ìŒ: %m" + +#: access/transam/xlog.c:4281 access/transam/xlog.c:4517 +#, c-format +msgid "could not write to control file: %m" +msgstr "컨트롤 파ì¼ì„ 쓸 수 ì—†ìŒ: %m" + +#: access/transam/xlog.c:4287 access/transam/xlog.c:4523 +#, c-format +msgid "could not fsync control file: %m" +msgstr "컨트롤 íŒŒì¼ fsync 실패: %m" + +#: access/transam/xlog.c:4292 access/transam/xlog.c:4528 +#, c-format +msgid "could not close control file: %m" +msgstr "컨트롤 íŒŒì¼ ë‹«ê¸° 실패: %m" + +#: access/transam/xlog.c:4310 access/transam/xlog.c:4506 +#, c-format +msgid "could not open control file \"%s\": %m" +msgstr "\"%s\" 컨트롤 íŒŒì¼ ì—´ê¸° 실패: %m" + +#: access/transam/xlog.c:4316 +#, c-format +msgid "could not read from control file: %m" +msgstr "컨트롤 íŒŒì¼ ì½ê¸° 실패: %m" + +#: access/transam/xlog.c:4329 access/transam/xlog.c:4338 +#: access/transam/xlog.c:4362 access/transam/xlog.c:4369 +#: access/transam/xlog.c:4376 access/transam/xlog.c:4381 +#: access/transam/xlog.c:4388 access/transam/xlog.c:4395 +#: access/transam/xlog.c:4402 access/transam/xlog.c:4409 +#: access/transam/xlog.c:4416 access/transam/xlog.c:4423 +#: access/transam/xlog.c:4430 access/transam/xlog.c:4439 +#: access/transam/xlog.c:4446 access/transam/xlog.c:4455 +#: access/transam/xlog.c:4462 access/transam/xlog.c:4471 +#: access/transam/xlog.c:4478 utils/init/miscinit.c:1380 +#, c-format +msgid "database files are incompatible with server" +msgstr "ë°ì´í„°ë² ì´ìФ 파ì¼ë“¤ì´ 서버와 í˜¸í™˜ì„±ì´ ì—†ìŠµë‹ˆë‹¤" + +#: access/transam/xlog.c:4330 +#, c-format +msgid "" +"The database cluster was initialized with PG_CONTROL_VERSION %d (0x%08x), " +"but the server was compiled with PG_CONTROL_VERSION %d (0x%08x)." +msgstr "" +"ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” PG_CONTROL_VERSION %d (0x%08x)(으)로 초기화ë˜ì—ˆì§€ë§Œ " +"서버는 PG_CONTROL_VERSION %d (0x%08x)(으)로 컴파ì¼ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: access/transam/xlog.c:4334 +#, c-format +msgid "" +"This could be a problem of mismatched byte ordering. It looks like you need " +"to initdb." +msgstr "" +"ì´ê²ƒì€ ë°”ì´íЏ 순서 불ì¼ì¹˜ ë¬¸ì œì¼ ìˆ˜ 있습니다. initdb ìž‘ì—…ì´ í•„ìš”í•´ 보입니다." + +#: access/transam/xlog.c:4339 +#, c-format +msgid "" +"The database cluster was initialized with PG_CONTROL_VERSION %d, but the " +"server was compiled with PG_CONTROL_VERSION %d." +msgstr "" +"ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” PG_CONTROL_VERSION %d 버전으로 초기화 ë˜ì—ˆì§€ë§Œ, 서" +"버는 PG_CONTROL_VERSION %d 버전으로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." + +#: access/transam/xlog.c:4342 access/transam/xlog.c:4366 +#: access/transam/xlog.c:4373 access/transam/xlog.c:4378 +#, c-format +msgid "It looks like you need to initdb." +msgstr "initdb ëª…ë ¹ì´ í•„ìš”í•œ 듯 합니다" + +#: access/transam/xlog.c:4353 +#, c-format +msgid "incorrect checksum in control file" +msgstr "컨트롤 파ì¼ì— ìž˜ëª»ëœ ì²´í¬ì„¬ ê°’ì´ ìžˆìŠµë‹ˆë‹¤" + +#: access/transam/xlog.c:4363 +#, c-format +msgid "" +"The database cluster was initialized with CATALOG_VERSION_NO %d, but the " +"server was compiled with CATALOG_VERSION_NO %d." +msgstr "" +"ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” CATALOG_VERSION_NO %d 버전으로 초기화 ë˜ì—ˆì§€ë§Œ, 서" +"버는 CATALOG_VERSION_NO %d 버전으로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." + +#: access/transam/xlog.c:4370 +#, c-format +msgid "" +"The database cluster was initialized with MAXALIGN %d, but the server was " +"compiled with MAXALIGN %d." +msgstr "" +"ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” MAXALIGN %d (으)로 초기화 ë˜ì—ˆì§€ë§Œ, 서버는 " +"MAXALIGN %d (으)로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." + +#: access/transam/xlog.c:4377 +#, c-format +msgid "" +"The database cluster appears to use a different floating-point number format " +"than the server executable." +msgstr "" +"ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ì™€ 서버 실행 파ì¼ì´ 서로 다른 ë¶€ë™ ì†Œìˆ˜ì  ìˆ«ìž í˜•ì‹ì„ 사" +"용하고 있습니다." + +#: access/transam/xlog.c:4382 +#, c-format +msgid "" +"The database cluster was initialized with BLCKSZ %d, but the server was " +"compiled with BLCKSZ %d." +msgstr "" +"ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” BLCKSZ %d (으)로 초기화 ë˜ì—ˆì§€ë§Œ, 서버는 BLCKSZ " +"%d (으)로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." + +#: access/transam/xlog.c:4385 access/transam/xlog.c:4392 +#: access/transam/xlog.c:4399 access/transam/xlog.c:4406 +#: access/transam/xlog.c:4413 access/transam/xlog.c:4420 +#: access/transam/xlog.c:4427 access/transam/xlog.c:4434 +#: access/transam/xlog.c:4442 access/transam/xlog.c:4449 +#: access/transam/xlog.c:4458 access/transam/xlog.c:4465 +#: access/transam/xlog.c:4474 access/transam/xlog.c:4481 +#, c-format +msgid "It looks like you need to recompile or initdb." +msgstr "" +"서버를 새로 ì»´íŒŒì¼ í•˜ê±°ë‚˜ initdb ëª…ë ¹ì„ ì‚¬ìš©í•´ 새로 ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ë¥¼ " +"다시 만들거나 해야할 것 같습니다." + +#: access/transam/xlog.c:4389 +#, c-format +msgid "" +"The database cluster was initialized with RELSEG_SIZE %d, but the server was " +"compiled with RELSEG_SIZE %d." +msgstr "" +"ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” RELSEG_SIZE %d (으)로 초기화 ë˜ì—ˆì§€ë§Œ, 서버는 " +"RELSEG_SIZE %d (으)로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." + +#: access/transam/xlog.c:4396 +#, c-format +msgid "" +"The database cluster was initialized with XLOG_BLCKSZ %d, but the server was " +"compiled with XLOG_BLCKSZ %d." +msgstr "" +"ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” XLOG_BLCKSZ %d (으)로 초기화 ë˜ì—ˆì§€ë§Œ, 서버는 " +"XLOG_BLCKSZ %d (으)로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." + +#: access/transam/xlog.c:4403 +#, c-format +msgid "" +"The database cluster was initialized with XLOG_SEG_SIZE %d, but the server " +"was compiled with XLOG_SEG_SIZE %d." +msgstr "" +"ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” XLOG_SEG_SIZE %d (으)로 초기화 ë˜ì—ˆì§€ë§Œ, 서버는 " +"XLOG_SEG_SIZE %d (으)로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." + +#: access/transam/xlog.c:4410 +#, c-format +msgid "" +"The database cluster was initialized with NAMEDATALEN %d, but the server was " +"compiled with NAMEDATALEN %d." +msgstr "" +"ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” NAMEDATALEN %d (으)로 초기화 ë˜ì—ˆì§€ë§Œ, 서버는 " +"NAMEDATALEN %d (으)로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." + +#: access/transam/xlog.c:4417 +#, c-format +msgid "" +"The database cluster was initialized with INDEX_MAX_KEYS %d, but the server " +"was compiled with INDEX_MAX_KEYS %d." +msgstr "" +"ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” INDEX_MAX_KEYS %d (으)로 초기화 ë˜ì—ˆì§€ë§Œ, 서버는 " +"INDEX_MAX_KEYS %d (으)로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." + +#: access/transam/xlog.c:4424 +#, c-format +msgid "" +"The database cluster was initialized with TOAST_MAX_CHUNK_SIZE %d, but the " +"server was compiled with TOAST_MAX_CHUNK_SIZE %d." +msgstr "" +"ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” TOAST_MAX_CHUNK_SIZE %d(으)로 초기화ë˜ì—ˆì§€ë§Œ 서버는 " +"TOAST_MAX_CHUNK_SIZE %d(으)로 ì»´íŒŒì¼ ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: access/transam/xlog.c:4431 +#, c-format +msgid "" +"The database cluster was initialized with LOBLKSIZE %d, but the server was " +"compiled with LOBLKSIZE %d." +msgstr "" +"ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” LOBLKSIZE %d(으)로 초기화 ë˜ì—ˆì§€ë§Œ, 서버는 " +"LOBLKSIZE %d (으)로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." + +#: access/transam/xlog.c:4440 +#, c-format +msgid "" +"The database cluster was initialized without HAVE_INT64_TIMESTAMP but the " +"server was compiled with HAVE_INT64_TIMESTAMP." +msgstr "" +"ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” HAVE_INT64_TIMESTAMP ê°’ì´ false로 초기화 ë˜ì—ˆì§€" +"ë§Œ, 서버는 HAVE_INT64_TIMESTAMP ê°’ì´ true로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." + +#: access/transam/xlog.c:4447 +#, c-format +msgid "" +"The database cluster was initialized with HAVE_INT64_TIMESTAMP but the " +"server was compiled without HAVE_INT64_TIMESTAMP." +msgstr "" +"ì´ ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” HAVE_INT64_TIMESTAMP ê°’ì´ true로 초기화 ë˜ì—ˆì§€ë§Œ, " +"서버는 HAVE_INT64_TIMESTAMP ê°’ì´ false로 ì»´íŒŒì¼ ë˜ì–´ìžˆìŠµë‹ˆë‹¤." + +#: access/transam/xlog.c:4456 +#, c-format +msgid "" +"The database cluster was initialized without USE_FLOAT4_BYVAL but the server " +"was compiled with USE_FLOAT4_BYVAL." +msgstr "" +"ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” USE_FLOAT4_BYVAL ì—†ì´ ì´ˆê¸°í™”ë˜ì—ˆì§€ë§Œ, 서버는 " +"USE_FLOAT4_BYVALì„ ì‚¬ìš©í•˜ì—¬ 컴파ì¼ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: access/transam/xlog.c:4463 +#, c-format +msgid "" +"The database cluster was initialized with USE_FLOAT4_BYVAL but the server " +"was compiled without USE_FLOAT4_BYVAL." +msgstr "" +"ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” USE_FLOAT4_BYVALì„ ì‚¬ìš©í•˜ì—¬ 초기화ë˜ì—ˆì§€ë§Œ, 서버는 " +"USE_FLOAT4_BYVAL ì—†ì´ ì»´íŒŒì¼ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: access/transam/xlog.c:4472 +#, c-format +msgid "" +"The database cluster was initialized without USE_FLOAT8_BYVAL but the server " +"was compiled with USE_FLOAT8_BYVAL." +msgstr "" +"ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” USE_FLOAT8_BYVAL ì—†ì´ ì´ˆê¸°í™”ë˜ì—ˆì§€ë§Œ, 서버는 " +"USE_FLOAT8_BYVALì„ ì‚¬ìš©í•˜ì—¬ 컴파ì¼ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: access/transam/xlog.c:4479 +#, c-format +msgid "" +"The database cluster was initialized with USE_FLOAT8_BYVAL but the server " +"was compiled without USE_FLOAT8_BYVAL." +msgstr "" +"ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” USE_FLOAT8_BYVALì„ ì‚¬ìš©í•˜ì—¬ 초기화ë˜ì—ˆì§€ë§Œ, 서버는 " +"USE_FLOAT8_BYVAL ì—†ì´ ì»´íŒŒì¼ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: access/transam/xlog.c:4900 +#, c-format +msgid "could not write bootstrap transaction log file: %m" +msgstr "bootstrap 트랜잭션 로그 파ì¼ì„ 쓸 수 ì—†ìŒ: %m" + +#: access/transam/xlog.c:4906 +#, c-format +msgid "could not fsync bootstrap transaction log file: %m" +msgstr "bootstrap 트랜잭션 로그 파ì¼ì„ fsyncí•  수 ì—†ìŒ: %m" + +#: access/transam/xlog.c:4911 +#, c-format +msgid "could not close bootstrap transaction log file: %m" +msgstr "bootstrap 트랜잭션 로그 파ì¼ì„ ë‹«ì„ ìˆ˜ ì—†ìŒ: %m" + +#: access/transam/xlog.c:4986 +#, c-format +msgid "could not open recovery command file \"%s\": %m" +msgstr "복구명령 íŒŒì¼ \"%s\"ì„ ì—´ 수 없습니다: %m" + +#: access/transam/xlog.c:5032 access/transam/xlog.c:5117 +#, c-format +msgid "invalid value for recovery parameter \"%s\": \"%s\"" +msgstr "ìž˜ëª»ëœ \"%s\" 복구 매개 ë³€ìˆ˜ì˜ ê°’: \"%s\"" + +#: access/transam/xlog.c:5035 +#, c-format +msgid "Valid values are \"pause\", \"promote\", and \"shutdown\"." +msgstr "사용할 수 있는 ê°’: \"pause\", \"promote\", \"shutdown\"" + +#: access/transam/xlog.c:5055 +#, c-format +msgid "recovery_target_timeline is not a valid number: \"%s\"" +msgstr "recovery_target_timeline 값으로 ìž˜ëª»ëœ ìˆ«ìž: \"%s\"" + +#: access/transam/xlog.c:5072 +#, c-format +msgid "recovery_target_xid is not a valid number: \"%s\"" +msgstr "recovery_target_xid 값으로 ìž˜ëª»ëœ ìˆ«ìž: \"%s\"" + +#: access/transam/xlog.c:5103 +#, c-format +msgid "recovery_target_name is too long (maximum %d characters)" +msgstr "recovery_target_name ì„¤ì •ê°’ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤ (최대 %d 문ìž)" + +#: access/transam/xlog.c:5120 +#, c-format +msgid "The only allowed value is \"immediate\"." +msgstr "ì´ ê°’ìœ¼ë¡œëŠ” \"immediate\" ë§Œ 허용합니다." + +#: access/transam/xlog.c:5133 access/transam/xlog.c:5144 +#: commands/extension.c:534 commands/extension.c:542 utils/misc/guc.c:5640 +#, c-format +msgid "parameter \"%s\" requires a Boolean value" +msgstr "\"%s\" 매개 ë³€ìˆ˜ì˜ ê°’ì€ boolean ê°’ì´ì–´ì•¼í•©ë‹ˆë‹¤." + +#: access/transam/xlog.c:5179 +#, c-format +msgid "parameter \"%s\" requires a temporal value" +msgstr "\"%s\" 매개 ë³€ìˆ˜ì˜ ê°’ì€ ì‹œê°„ê°’ì´ì–´ì•¼ 합니다." + +#: access/transam/xlog.c:5181 catalog/dependency.c:990 +#: catalog/dependency.c:991 catalog/dependency.c:997 catalog/dependency.c:998 +#: catalog/dependency.c:1009 catalog/dependency.c:1010 +#: catalog/objectaddress.c:1100 commands/tablecmds.c:796 +#: commands/tablecmds.c:9542 commands/user.c:1045 commands/view.c:499 +#: libpq/auth.c:307 replication/syncrep.c:919 storage/lmgr/deadlock.c:1139 +#: storage/lmgr/proc.c:1278 utils/adt/acl.c:5281 utils/misc/guc.c:5662 +#: utils/misc/guc.c:5755 utils/misc/guc.c:9708 utils/misc/guc.c:9742 +#: utils/misc/guc.c:9776 utils/misc/guc.c:9810 utils/misc/guc.c:9845 +#, c-format +msgid "%s" +msgstr "%s" + +#: access/transam/xlog.c:5188 +#, c-format +msgid "unrecognized recovery parameter \"%s\"" +msgstr "알 수 없는 복구 매개 변수 ì´ë¦„: \"%s\"" + +#: access/transam/xlog.c:5199 +#, c-format +msgid "" +"recovery command file \"%s\" specified neither primary_conninfo nor " +"restore_command" +msgstr "" +"복구 명령 íŒŒì¼ \"%s\"ì—서 primary_conninfo 설정ë„, restore_command ì„¤ì •ë„ ì—†" +"습니다." + +#: access/transam/xlog.c:5201 +#, c-format +msgid "" +"The database server will regularly poll the pg_xlog subdirectory to check " +"for files placed there." +msgstr "" +"ë°ì´í„°ë² ì´ìФ 서버는 ì¼ë°˜ì ìœ¼ë¡œ 주 서버ì—서 ë°œìƒí•œ 트랜잭션 로그를 ë°˜ì˜í•˜ê¸° 위" +"í•´ pg_xlog 하위 디렉터리를 조사할 것입니다." + +#: access/transam/xlog.c:5208 +#, c-format +msgid "" +"recovery command file \"%s\" must specify restore_command when standby mode " +"is not enabled" +msgstr "" +"대기 모드를 활성화 하지 않았다면(standby_mode = off), 복구 명령 íŒŒì¼ \"%s\"ì—" +"서 restore_command ì„¤ì •ì€ ë°˜ë“œì‹œ 있어야 합니다." + +#: access/transam/xlog.c:5229 +#, c-format +msgid "standby mode is not supported by single-user servers" +msgstr "ë‹¨ì¼ ì‚¬ìš©ìž ì„œë²„ë¥¼ 대ìƒìœ¼ë¡œ 대기 모드를 사용할 수 없습니다." + +#: access/transam/xlog.c:5248 +#, c-format +msgid "recovery target timeline %u does not exist" +msgstr "%u 복구 ëŒ€ìƒ íƒ€ìž„ë¼ì¸ì´ ì—†ìŒ" + +#: access/transam/xlog.c:5369 +#, c-format +msgid "archive recovery complete" +msgstr "ì•„ì¹´ì´ë¸Œ 복구 완료" + +#: access/transam/xlog.c:5428 access/transam/xlog.c:5656 +#, c-format +msgid "recovery stopping after reaching consistency" +msgstr "ì¼ê´€ì„±ì„ 다 맞추어 복구 ìž‘ì—…ì„ ì¤‘ì§€í•©ë‹ˆë‹¤." + +#: access/transam/xlog.c:5516 +#, c-format +msgid "recovery stopping before commit of transaction %u, time %s" +msgstr "%u 트랜잭션 커밋 ì „ 복구 중지함, 시간 %s" + +#: access/transam/xlog.c:5523 +#, c-format +msgid "recovery stopping before abort of transaction %u, time %s" +msgstr "%u 트랜잭션 중단 ì „ 복구 중지함, 시간 %s" + +#: access/transam/xlog.c:5568 +#, c-format +msgid "recovery stopping at restore point \"%s\", time %s" +msgstr "복구 중지함, 복구 위치 \"%s\", 시간 %s" + +#: access/transam/xlog.c:5636 +#, c-format +msgid "recovery stopping after commit of transaction %u, time %s" +msgstr "%u 트랜잭션 커밋 후 복구 중지함, 시간 %s" + +#: access/transam/xlog.c:5644 +#, c-format +msgid "recovery stopping after abort of transaction %u, time %s" +msgstr "%u 트랜잭션 중단 후 복구 중지함, 시간 %s" + +#: access/transam/xlog.c:5683 +#, c-format +msgid "recovery has paused" +msgstr "복구 ìž‘ì—…ì´ ì¼ì‹œ 중지 ë¨" + +#: access/transam/xlog.c:5684 +#, c-format +msgid "Execute pg_xlog_replay_resume() to continue." +msgstr "ê³„ì† ì§„í–‰í•˜ë ¤ë©´, pg_xlog_replay_resume() 함수를 호출하세요." + +#: access/transam/xlog.c:5891 +#, c-format +msgid "" +"hot standby is not possible because %s = %d is a lower setting than on the " +"master server (its value was %d)" +msgstr "" +"ì½ê¸° ì „ìš© 대기 서버로 ìš´ì˜ì´ 불가능합니다. 현재 %s = %d ì„¤ì •ì€ ì£¼ ì„œë²„ì˜ ì„¤ì •" +"ê°’(%d)보다 낮게 설정 ë˜ì–´ 있기 때문입니다." + +#: access/transam/xlog.c:5917 +#, c-format +msgid "WAL was generated with wal_level=minimal, data may be missing" +msgstr "" +"WAL ë‚´ìš©ì´ wal_level=minimal 설정으로 만들여졌습니다. ìžë£Œê°€ ì†ì‹¤ ë  ìˆ˜ 있습" +"니다." + +#: access/transam/xlog.c:5918 +#, c-format +msgid "" +"This happens if you temporarily set wal_level=minimal without taking a new " +"base backup." +msgstr "" +"ì´ ë¬¸ì œëŠ” 새 ë² ì´ìФ ë°±ì—…ì„ ë°›ì§€ ì•Šì€ ìƒíƒœì—서 서버가 ì¼ì‹œì ìœ¼ë¡œ " +"wal_level=minimal 설정으로 ìš´ì˜ëœ ì ì´ 있다면 ë°œìƒí•©ë‹ˆë‹¤." + +#: access/transam/xlog.c:5929 +#, c-format +msgid "" +"hot standby is not possible because wal_level was not set to \"replica\" or " +"higher on the master server" +msgstr "" +"주 서버 wal_level ì„¤ì •ì´ \"replica\" ë˜ëŠ” ê·¸ ì´ìƒ 수준으로 설정ë˜ì§€ 않아, ì½" +"기 ì „ìš© ë³´ì¡° 서버로 ìš´ì˜ë  수 ì—†ìŒ" + +#: access/transam/xlog.c:5930 +#, c-format +msgid "" +"Either set wal_level to \"replica\" on the master, or turn off hot_standby " +"here." +msgstr "" +"ìš´ì˜ ì„œë²„ì˜ í™˜ê²½ 설정ì—서 wal_leve = \"replica\" 형태로 지정하든가 " +"hot_standby = off 형태로 지정하십시오." + +#: access/transam/xlog.c:5987 +#, c-format +msgid "control file contains invalid data" +msgstr "컨트롤 파ì¼ì— ìž˜ëª»ëœ ë°ì´í„°ê°€ 있습니다" + +#: access/transam/xlog.c:5993 +#, c-format +msgid "database system was shut down at %s" +msgstr "ë°ì´í„°ë² ì´ìФ 시스템 마지막 ê°€ë™ ì¤‘ì§€ 시ê°: %s" + +#: access/transam/xlog.c:5998 +#, c-format +msgid "database system was shut down in recovery at %s" +msgstr "복구 중 ë°ì´í„°ë² ì´ìФ 시스템 마지막 ê°€ë™ ì¤‘ì§€ 시ê°: %s" + +#: access/transam/xlog.c:6002 +#, c-format +msgid "database system shutdown was interrupted; last known up at %s" +msgstr "" +"ë°ì´í„°ë² ì´ìФ 시스템 셧다운 ìž‘ì—…ì´ ë¹„ì •ìƒì ìœ¼ë¡œ 종료ë˜ì—ˆìŒ; 마지막 ìš´ì˜ì‹œê°„: " +"%s" + +#: access/transam/xlog.c:6006 +#, c-format +msgid "database system was interrupted while in recovery at %s" +msgstr "ë°ì´í„°ë² ì´ìФ 시스템 복구하는 ë„중 비정ìƒì ìœ¼ë¡œ ê°€ë™ ì¤‘ì§€ëœ ì‹œê°: %s" + +#: access/transam/xlog.c:6008 +#, c-format +msgid "" +"This probably means that some data is corrupted and you will have to use the " +"last backup for recovery." +msgstr "" +"ì´ ì‚¬íƒœëŠ” 몇몇 ë°ì´í„°ê°€ ì†ìƒë˜ì—ˆì„ ì˜ë¯¸í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 확ì¸í•´ ë³´ê³ , 필요하" +"다면, 마지막 백업 ìžë£Œë¡œ 복구해서 사용하세요." + +#: access/transam/xlog.c:6012 +#, c-format +msgid "database system was interrupted while in recovery at log time %s" +msgstr "ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì´ ë¡œê·¸ 시간 %sì— ë³µêµ¬ ë„중 중지 ë˜ì—ˆìŒ" + +#: access/transam/xlog.c:6014 +#, c-format +msgid "" +"If this has occurred more than once some data might be corrupted and you " +"might need to choose an earlier recovery target." +msgstr "" +"ì´ ì‚¬íƒœë¡œ 몇몇 ìžë£Œê°€ ì†ìƒë˜ì—ˆì„ ìˆ˜ë„ ìžˆëŠ”ë°, ì´ëŸ° 경우ë¼ë©´,확ì¸í•´ ë³´ê³ , í•„ìš”" +"하다면, 마지막 백업 ìžë£Œë¡œ 복구해서 사용하세요." + +#: access/transam/xlog.c:6018 +#, c-format +msgid "database system was interrupted; last known up at %s" +msgstr "ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì´ ë¹„ì •ìƒì ìœ¼ë¡œ 종료ë˜ì—ˆìŒ; 마지막 ìš´ì˜ì‹œê°„: %s" + +#: access/transam/xlog.c:6074 +#, c-format +msgid "entering standby mode" +msgstr "대기 모드로 전환합니다" + +#: access/transam/xlog.c:6077 +#, c-format +msgid "starting point-in-time recovery to XID %u" +msgstr "%u XID까지 ì‹œì  ê¸°ë°˜ 복구 ìž‘ì—…ì„ ì‹œìž‘í•©ë‹ˆë‹¤" + +#: access/transam/xlog.c:6081 +#, c-format +msgid "starting point-in-time recovery to %s" +msgstr "%s 까지 ì‹œì  ë³µêµ¬ ìž‘ì—…ì„ ì‹œìž‘í•©ë‹ˆë‹¤" + +#: access/transam/xlog.c:6085 +#, c-format +msgid "starting point-in-time recovery to \"%s\"" +msgstr "\"%s\" 복구 ëŒ€ìƒ ì´ë¦„까지 ì‹œì  ë³µêµ¬ ìž‘ì—…ì„ ì‹œìž‘í•©ë‹ˆë‹¤" + +#: access/transam/xlog.c:6089 +#, c-format +msgid "starting point-in-time recovery to earliest consistent point" +msgstr "ë™ê¸°í™” í•  수 있는 마지막 ì§€ì ê¹Œì§€ ì‹œì  ë³µêµ¬ ìž‘ì—…ì„ ì‹œìž‘í•©ë‹ˆë‹¤" + +#: access/transam/xlog.c:6092 +#, c-format +msgid "starting archive recovery" +msgstr "ì•„ì¹´ì´ë¸Œ 복구 ìž‘ì—…ì„ ì‹œìž‘í•©ë‹ˆë‹¤" + +#: access/transam/xlog.c:6136 access/transam/xlog.c:6264 +#, c-format +msgid "checkpoint record is at %X/%X" +msgstr "ì²´í¬í¬ì¸íЏ 레코드 위치: %X/%X" + +#: access/transam/xlog.c:6150 +#, c-format +msgid "could not find redo location referenced by checkpoint record" +msgstr "ì²´í¬í¬ì¸íЏ 기ë¡ìœ¼ë¡œ 참조하는 재실행 위치를 ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: access/transam/xlog.c:6151 access/transam/xlog.c:6158 +#, c-format +msgid "" +"If you are not restoring from a backup, try removing the file \"%s/" +"backup_label\"." +msgstr "" +"실시간 백업 ìžë£Œë¡œë¶€í„° 복구 ìž‘ì—…ì„ í•˜ì§€ 않으려면, \"%s/backup_lable\" 파ì¼ì„ " +"ì‚­ì œ 하세요." + +#: access/transam/xlog.c:6157 +#, c-format +msgid "could not locate required checkpoint record" +msgstr "ìš”ì²­ëœ ì²´í¬í¬ì¸íЏ ë ˆì½”ë“œì˜ ìœ„ì¹˜ë¥¼ 바르게 ìž¡ì„ ìˆ˜ ì—†ìŒ" + +#: access/transam/xlog.c:6183 commands/tablespace.c:641 +#, c-format +msgid "could not create symbolic link \"%s\": %m" +msgstr "\"%s\" 심벌릭 ë§í¬ë¥¼ 만들 수 ì—†ìŒ: %m" + +#: access/transam/xlog.c:6215 access/transam/xlog.c:6221 +#, c-format +msgid "ignoring file \"%s\" because no file \"%s\" exists" +msgstr "\"%s\" íŒŒì¼ ë¬´ì‹œí•¨, \"%s\" íŒŒì¼ ì—†ìŒ" + +#: access/transam/xlog.c:6217 access/transam/xlog.c:11032 +#, c-format +msgid "File \"%s\" was renamed to \"%s\"." +msgstr "\"%s\" 파ì¼ì„ \"%s\" 파ì¼ë¡œ ì´ë¦„ì„ ë°”ê¿¨ìŠµë‹ˆë‹¤." + +#: access/transam/xlog.c:6223 +#, c-format +msgid "Could not rename file \"%s\" to \"%s\": %m." +msgstr "\"%s\" 파ì¼ì„ \"%s\" 파ì¼ë¡œ ì´ë¦„ì„ ë°”ê¿€ 수 ì—†ìŒ: %m" + +#: access/transam/xlog.c:6274 access/transam/xlog.c:6289 +#, c-format +msgid "could not locate a valid checkpoint record" +msgstr "ì²´í¬í¬ì¸íЏ ë ˆì½”ë“œì˜ ìœ„ì¹˜ë¥¼ 바르게 ìž¡ì„ ìˆ˜ ì—†ìŒ" + +#: access/transam/xlog.c:6283 +#, c-format +msgid "using previous checkpoint record at %X/%X" +msgstr "ì´ì „ ì²´í¬í¬ì¸íЏ 레코드를 사용함, 위치: %X/%X" + +#: access/transam/xlog.c:6327 +#, c-format +msgid "requested timeline %u is not a child of this server's history" +msgstr "요청한 %u 타임ë¼ì¸ì€ 서버 타임ë¼ì¸ì˜ 하위가 아님" + +#: access/transam/xlog.c:6329 +#, c-format +msgid "" +"Latest checkpoint is at %X/%X on timeline %u, but in the history of the " +"requested timeline, the server forked off from that timeline at %X/%X." +msgstr "" +"마지막 ì²´í¬í¬ì¸íЏ 위치는 %X/%X (%u 타임ë¼ì¸)입니다. 하지만, ìš”ì²­ë°›ì€ íƒ€ìž„ë¼" +"ì¸ ë‚´ì—­íŒŒì¼ì—는 ê·¸ 타임ë¼ì¸ %X/%X 위치ì—서 분기ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: access/transam/xlog.c:6345 +#, c-format +msgid "" +"requested timeline %u does not contain minimum recovery point %X/%X on " +"timeline %u" +msgstr "" +"요청한 %u 타임ë¼ì¸ì€ %X/%X 최소 복구 위치가 없습니다, 기존 타임ë¼ì¸: %u" + +#: access/transam/xlog.c:6376 +#, c-format +msgid "invalid next transaction ID" +msgstr "ìž˜ëª»ëœ ë‹¤ìŒ íŠ¸ëžœìž­ì…˜ ID" + +#: access/transam/xlog.c:6459 +#, c-format +msgid "invalid redo in checkpoint record" +msgstr "ì²´í¬í¬ì¸íЏ 레코드 ì•ˆì— ìž˜ëª»ëœ redo ì •ë³´ê°€ 있ìŒ" + +#: access/transam/xlog.c:6470 +#, c-format +msgid "invalid redo record in shutdown checkpoint" +msgstr "ìš´ì˜ ì¤‘ì§€ ì²´í¬í¬ì¸íЏì—서 ìž˜ëª»ëœ ìž¬ì‹¤í–‰ ì •ë³´ 발견" + +#: access/transam/xlog.c:6498 +#, c-format +msgid "" +"database system was not properly shut down; automatic recovery in progress" +msgstr "" +"ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì´ ì •ìƒì ìœ¼ë¡œ 종료ë˜ì§€ 못했습니다, ìžë™ 복구 ìž‘ì—…ì„ ì§„í–‰í•©" +"니다" + +#: access/transam/xlog.c:6502 +#, c-format +msgid "crash recovery starts in timeline %u and has target timeline %u" +msgstr "" +"%u 타임ë¼ì¸ìœ¼ë¡œ ë¹„ì •ìƒ ì¤‘ì§€ì— ëŒ€í•œ ë³µêµ¬ìž‘ì—…ì„ ì‹œìž‘í•¨, 기존 타임ë¼ì¸: %u" + +#: access/transam/xlog.c:6546 +#, c-format +msgid "backup_label contains data inconsistent with control file" +msgstr "backup_label íŒŒì¼ ì•ˆì— ì»¨íŠ¸ë¡¤ 파ì¼ê³¼ ì¼ê´€ì„±ì´ ë§žì§€ 않는 ìžë£Œê°€ 있ìŒ" + +#: access/transam/xlog.c:6547 +#, c-format +msgid "" +"This means that the backup is corrupted and you will have to use another " +"backup for recovery." +msgstr "" +"ì´ ë¬¸ì œëŠ” 백업 ìžë£Œ ìžì²´ê°€ ì†ìƒ ë˜ì—ˆìŒì„ ë§í•©ë‹ˆë‹¤. 다른 백업본으로 복구 작업" +"ì„ ì§„í–‰í•´ì•¼ 합니다." + +#: access/transam/xlog.c:6621 +#, c-format +msgid "initializing for hot standby" +msgstr "ì½ê¸° ì „ìš© ë³´ì¡° 서버로 초기화 중입니다." + +#: access/transam/xlog.c:6753 +#, c-format +msgid "redo starts at %X/%X" +msgstr "%X/%Xì—서 redo 작업 시작ë¨" + +#: access/transam/xlog.c:6978 +#, c-format +msgid "requested recovery stop point is before consistent recovery point" +msgstr "요청한 복구 중지 ì§€ì ì´ ì¼ì¹˜í•˜ëŠ” 복구 ì§€ì  ì•žì— ìžˆìŒ" + +#: access/transam/xlog.c:7016 +#, c-format +msgid "redo done at %X/%X" +msgstr "%X/%Xì—서 redo 작업 완료" + +#: access/transam/xlog.c:7021 access/transam/xlog.c:8969 +#, c-format +msgid "last completed transaction was at log time %s" +msgstr "마지막 ì™„ë£Œëœ íŠ¸ëžœìž­ì…˜ ê¸°ë¡ ì‹œê°„: %s" + +#: access/transam/xlog.c:7030 +#, c-format +msgid "redo is not required" +msgstr "재반ì˜í•´ì•¼ í•  íŠ¸ëžœìž­ì…˜ì´ ì—†ìŒ" + +#: access/transam/xlog.c:7105 access/transam/xlog.c:7109 +#, c-format +msgid "WAL ends before end of online backup" +msgstr "온ë¼ì¸ 백업 작업 ëë‚˜ê¸°ì „ì— WAL 작업 종료ë¨" + +#: access/transam/xlog.c:7106 +#, c-format +msgid "" +"All WAL generated while online backup was taken must be available at " +"recovery." +msgstr "" +"온ë¼ì¸ 백업 중 만들어진 WAL ì¡°ê° íŒŒì¼ì€ 복구 작업ì—서 반드시 ëª¨ë‘ ìžˆì–´ì•¼ 합니" +"다." + +#: access/transam/xlog.c:7110 +#, c-format +msgid "" +"Online backup started with pg_start_backup() must be ended with " +"pg_stop_backup(), and all WAL up to that point must be available at recovery." +msgstr "" +"pg_start_backup() 함수를 호출해서 시작한 온ë¼ì¸ ë°±ì—…ì€ pg_stop_backup() 함수" +"로 종료ë˜ì–´ì•¼ 하며, ê·¸ ì‚¬ì´ ë§Œë“¤ì–´ì§„ WAL ì¡°ê° íŒŒì¼ì€ 복구 작업ì—서 ëª¨ë‘ í•„ìš”" +"합니다." + +#: access/transam/xlog.c:7113 +#, c-format +msgid "WAL ends before consistent recovery point" +msgstr "WALì´ ì¼ì¹˜í•˜ëŠ” 복구 ì§€ì  ì•žì—서 종료ë¨" + +#: access/transam/xlog.c:7140 +#, c-format +msgid "selected new timeline ID: %u" +msgstr "지정한 새 타임ë¼ì¸ ID: %u" + +#: access/transam/xlog.c:7551 +#, c-format +msgid "consistent recovery state reached at %X/%X" +msgstr "%X/%X 위치ì—서 복구 ì¼ê´€ì„±ì„ 맞춤" + +#: access/transam/xlog.c:7742 +#, c-format +msgid "invalid primary checkpoint link in control file" +msgstr "컨트롤 파ì¼ì—서 ìž˜ëª»ëœ primary checkpoint ë§í¬ 발견" + +#: access/transam/xlog.c:7746 +#, c-format +msgid "invalid secondary checkpoint link in control file" +msgstr "컨트롤 파ì¼ì—서 ìž˜ëª»ëœ secondary checkpoint ë§í¬ 발견" + +#: access/transam/xlog.c:7750 +#, c-format +msgid "invalid checkpoint link in backup_label file" +msgstr "백업 ë¼ë²¨ 파ì¼ì—서 ìž˜ëª»ëœ ì²´í¬í¬ì¸íЏ ë§í¬ 발견" + +#: access/transam/xlog.c:7767 +#, c-format +msgid "invalid primary checkpoint record" +msgstr "ìž˜ëª»ëœ primary checkpoint 레코드" + +#: access/transam/xlog.c:7771 +#, c-format +msgid "invalid secondary checkpoint record" +msgstr "ìž˜ëª»ëœ secondary checkpoint 레코드" + +#: access/transam/xlog.c:7775 +#, c-format +msgid "invalid checkpoint record" +msgstr "ìž˜ëª»ëœ checkpoint 레코드" + +#: access/transam/xlog.c:7786 +#, c-format +msgid "invalid resource manager ID in primary checkpoint record" +msgstr "primary checkpoint 레코드ì—서 ìž˜ëª»ëœ ìžì› ê´€ë¦¬ìž ID 발견" + +#: access/transam/xlog.c:7790 +#, c-format +msgid "invalid resource manager ID in secondary checkpoint record" +msgstr "secondary checkpoint 레코드ì—서 ìž˜ëª»ëœ ìžì› ê´€ë¦¬ìž ID 발견" + +#: access/transam/xlog.c:7794 +#, c-format +msgid "invalid resource manager ID in checkpoint record" +msgstr "checkpoint 레코드ì—서 ìž˜ëª»ëœ ìžì› ê´€ë¦¬ìž ID 발견" + +#: access/transam/xlog.c:7806 +#, c-format +msgid "invalid xl_info in primary checkpoint record" +msgstr "primary checkpoint 레코드ì—서 ìž˜ëª»ëœ xl_info 발견" + +#: access/transam/xlog.c:7810 +#, c-format +msgid "invalid xl_info in secondary checkpoint record" +msgstr "secondary checkpoint 레코드ì—서 ìž˜ëª»ëœ xl_info 발견" + +#: access/transam/xlog.c:7814 +#, c-format +msgid "invalid xl_info in checkpoint record" +msgstr "checkpoint 레코드ì—서 ìž˜ëª»ëœ xl_info 발견" + +#: access/transam/xlog.c:7825 +#, c-format +msgid "invalid length of primary checkpoint record" +msgstr "primary checkpoint 레코드 길ì´ê°€ 잘못ë˜ì—ˆìŒ" + +#: access/transam/xlog.c:7829 +#, c-format +msgid "invalid length of secondary checkpoint record" +msgstr "secondary checkpoint 레코드 길ì´ê°€ 잘못ë˜ì—ˆìŒ" + +#: access/transam/xlog.c:7833 +#, c-format +msgid "invalid length of checkpoint record" +msgstr "checkpoint 레코드 길ì´ê°€ 잘못ë˜ì—ˆìŒ" + +#: access/transam/xlog.c:8001 +#, c-format +msgid "shutting down" +msgstr "서비스를 멈추고 있습니다" + +#: access/transam/xlog.c:8514 +#, c-format +msgid "" +"concurrent transaction log activity while database system is shutting down" +msgstr "ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì´ ì¤‘ì§€ë˜ëŠ” ë™ì•ˆ 현재 트랜잭션 로그가 활성화 ë˜ì—ˆìŒ" + +#: access/transam/xlog.c:8768 +#, c-format +msgid "skipping restartpoint, recovery has already ended" +msgstr "다시 시작 ì§€ì ì„ 건너뜀, 복구가 ì´ë¯¸ 종료ë¨" + +#: access/transam/xlog.c:8791 +#, c-format +msgid "skipping restartpoint, already performed at %X/%X" +msgstr "다시 시작 ì§€ì ì„ 건너뜀, %X/%Xì—서 ì´ë¯¸ 수행ë¨" + +#: access/transam/xlog.c:8967 +#, c-format +msgid "recovery restart point at %X/%X" +msgstr "%X/%Xì—서 복구 작업 시작함" + +#: access/transam/xlog.c:9100 +#, c-format +msgid "restore point \"%s\" created at %X/%X" +msgstr "\"%s\" ì´ë¦„ì˜ ë³µêµ¬ 위치는 %X/%Xì— ë§Œë“¤ì—ˆìŒ" + +#: access/transam/xlog.c:9230 +#, c-format +msgid "" +"unexpected previous timeline ID %u (current timeline ID %u) in checkpoint " +"record" +msgstr "" +"ì²´í¬í¬ì¸íЏ ë ˆì½”ë“œì— ì˜ˆê¸°ì¹˜ ì•Šì€ ì´ì „ 타임ë¼ì¸ID %u(현재 타임ë¼ì¸ID: %u)" + +#: access/transam/xlog.c:9239 +#, c-format +msgid "unexpected timeline ID %u (after %u) in checkpoint record" +msgstr "ì²´í¬í¬ì¸íЏ ë ˆì½”ë“œì— ì˜ˆê¸°ì¹˜ ì•Šì€ íƒ€ìž„ë¼ì¸ ID %uì´(ê°€) 있ìŒ(%u ë’¤)" + +#: access/transam/xlog.c:9255 +#, c-format +msgid "" +"unexpected timeline ID %u in checkpoint record, before reaching minimum " +"recovery point %X/%X on timeline %u" +msgstr "" +"ì²´í¬í¬ì¸íЏ ë‚´ì—­ ì•ˆì— %u 타임ë¼ì¸ IDê°€ 기대한 것과 다릅니다. ë°œìƒ ìœ„ì¹˜: %X/%X " +"(타임ë¼ì¸: %u) 최소 복구 위치 ì´ì „" + +#: access/transam/xlog.c:9326 +#, c-format +msgid "online backup was canceled, recovery cannot continue" +msgstr "온ë¼ì¸ ë°±ì–´ì´ ì·¨ì†Œë˜ì—ˆìŒ, 복구를 ê³„ì† í•  수 ì—†ìŒ" + +#: access/transam/xlog.c:9382 access/transam/xlog.c:9429 +#: access/transam/xlog.c:9452 +#, c-format +msgid "unexpected timeline ID %u (should be %u) in checkpoint record" +msgstr "ì²´í¬í¬ì¸íЏ ë ˆì½”ë“œì— ì˜ˆê¸°ì¹˜ ì•Šì€ íƒ€ìž„ë¼ì¸ ID %uì´(ê°€) 있ìŒ(%uì´ì–´ì•¼ 함)" + +#: access/transam/xlog.c:9727 +#, c-format +msgid "could not fsync log segment %s: %m" +msgstr "%s 로그 ì¡°ê° fsync 실패: %m" + +#: access/transam/xlog.c:9751 +#, c-format +msgid "could not fsync log file %s: %m" +msgstr "\"%s\" 로그 íŒŒì¼ fsync 실패: %m" + +#: access/transam/xlog.c:9759 +#, c-format +msgid "could not fsync write-through log file %s: %m" +msgstr "write-through 로그 파ì¼(%s)ì„ fsyncí•  수 ì—†ìŒ: %m" + +#: access/transam/xlog.c:9768 +#, c-format +msgid "could not fdatasync log file %s: %m" +msgstr "%s 로그파ì¼ì„ fdatasyncí•  수 ì—†ìŒ: %m" + +#: access/transam/xlog.c:9859 access/transam/xlog.c:10363 +#: access/transam/xlogfuncs.c:294 access/transam/xlogfuncs.c:321 +#: access/transam/xlogfuncs.c:360 access/transam/xlogfuncs.c:381 +#: access/transam/xlogfuncs.c:402 +#, c-format +msgid "WAL control functions cannot be executed during recovery." +msgstr "WAL 제어 함수는 복구 작업 중ì—는 실행 ë  ìˆ˜ ì—†ìŒ" + +#: access/transam/xlog.c:9868 access/transam/xlog.c:10372 +#, c-format +msgid "WAL level not sufficient for making an online backup" +msgstr "온ë¼ì¸ 백업 ìž‘ì—…ì„ í•˜ê¸° 위한 WAL ìˆ˜ì¤€ì´ ì¶©ë¶„ì¹˜ 않습니다." + +#: access/transam/xlog.c:9869 access/transam/xlog.c:10373 +#: access/transam/xlogfuncs.c:327 +#, c-format +msgid "wal_level must be set to \"replica\" or \"logical\" at server start." +msgstr "" +"wal_level ê°’ì„ \"replica\" ë˜ëŠ” \"logical\"로 지정하고 서버를 실행하십시오." + +#: access/transam/xlog.c:9874 +#, c-format +msgid "backup label too long (max %d bytes)" +msgstr "백업 ë¼ë²¨ ì´ë¦„ì´ ë„ˆë¬´ 긺(최대 %d ë°”ì´íЏ)" + +#: access/transam/xlog.c:9911 access/transam/xlog.c:10183 +#: access/transam/xlog.c:10221 +#, c-format +msgid "a backup is already in progress" +msgstr "ì´ë¯¸ 백업 ìž‘ì—…ì´ ì§„í–‰ 중입니다" + +#: access/transam/xlog.c:9912 +#, c-format +msgid "Run pg_stop_backup() and try again." +msgstr "pg_stop_backup() 함수를 실행하고 나서 다시 시ë„하세요." + +#: access/transam/xlog.c:10007 +#, c-format +msgid "" +"WAL generated with full_page_writes=off was replayed since last restartpoint" +msgstr "" +"마지막 재시작 위치부터 재반ì˜ëœ WAL ë‚´ìš©ì´ full_page_writes=off 설정으로 만들" +"ì–´ì§„ 내용입니다." + +#: access/transam/xlog.c:10009 access/transam/xlog.c:10554 +#, c-format +msgid "" +"This means that the backup being taken on the standby is corrupt and should " +"not be used. Enable full_page_writes and run CHECKPOINT on the master, and " +"then try an online backup again." +msgstr "" +"ì´ ê²½ìš° 대기 ì„œë²„ì˜ ìžë£Œê°€ ì†ì‹¤ë˜ì—ˆì„ ê°€ëŠ¥ì„±ì´ ìžˆìŠµë‹ˆë‹¤. full_page_writes 설" +"ì •ì„ í™œì„±í™” 하고, 주 서버ì—서 CHECKPOINT ëª…ë ¹ì„ ì‹¤í–‰í•˜ê³ , 온ë¼ì¸ ë°±ì—…ì„ ë‹¤ì‹œ " +"해서 사용하세요." + +#: access/transam/xlog.c:10076 replication/basebackup.c:1026 +#: utils/adt/misc.c:498 +#, c-format +msgid "could not read symbolic link \"%s\": %m" +msgstr "\"%s\" 심볼릭 ë§í¬ 파ì¼ì„ ì½ì„ 수 ì—†ìŒ: %m" + +#: access/transam/xlog.c:10083 replication/basebackup.c:1031 +#: utils/adt/misc.c:503 +#, c-format +msgid "symbolic link \"%s\" target is too long" +msgstr "\"%s\" 심볼릭 ë§í¬ì˜ 대ìƒì´ 너무 긺" + +#: access/transam/xlog.c:10136 commands/tablespace.c:391 +#: commands/tablespace.c:553 replication/basebackup.c:1047 +#: utils/adt/misc.c:511 +#, c-format +msgid "tablespaces are not supported on this platform" +msgstr "í…Œì´ë¸”스페ì´ìФ ê¸°ëŠ¥ì€ ì´ í”Œëž«í¼ì—서는 ì§€ì›í•˜ì§€ 않습니다." + +#: access/transam/xlog.c:10177 access/transam/xlog.c:10215 +#: access/transam/xlog.c:10411 access/transam/xlogarchive.c:106 +#: access/transam/xlogarchive.c:265 commands/copy.c:1815 commands/copy.c:2839 +#: commands/extension.c:3130 commands/tablespace.c:782 +#: commands/tablespace.c:873 replication/basebackup.c:409 +#: replication/basebackup.c:477 replication/logical/snapbuild.c:1491 +#: storage/file/copydir.c:72 storage/file/copydir.c:115 storage/file/fd.c:2903 +#: storage/file/fd.c:2995 utils/adt/dbsize.c:70 utils/adt/dbsize.c:220 +#: utils/adt/dbsize.c:300 utils/adt/genfile.c:114 utils/adt/genfile.c:333 +#: guc-file.l:1002 +#, c-format +msgid "could not stat file \"%s\": %m" +msgstr "\"%s\" 파ì¼ì˜ ìƒíƒœê°’ì„ ì•Œ 수 ì—†ìŒ: %m" + +#: access/transam/xlog.c:10184 access/transam/xlog.c:10222 +#, c-format +msgid "" +"If you're sure there is no backup in progress, remove file \"%s\" and try " +"again." +msgstr "" +"실재로는 백업 ìž‘ì—…ì„ ì•ˆí•˜ê³  있다고 확신한다면, \"%s\" 파ì¼ì„ 삭제하고 다시 시" +"ë„í•´ 보십시오." + +#: access/transam/xlog.c:10201 access/transam/xlog.c:10239 +#: access/transam/xlog.c:10615 +#, c-format +msgid "could not write file \"%s\": %m" +msgstr "\"%s\" íŒŒì¼ ì“°ê¸° 실패: %m" + +#: access/transam/xlog.c:10388 +#, c-format +msgid "exclusive backup not in progress" +msgstr "exclusive 백업 ìž‘ì—…ì„ í•˜ì§€ 않고 있습니다" + +#: access/transam/xlog.c:10415 +#, c-format +msgid "a backup is not in progress" +msgstr "현재 백업 ìž‘ì—…ì„ í•˜ì§€ 않고 있습니다" + +#: access/transam/xlog.c:10489 access/transam/xlog.c:10502 +#: access/transam/xlog.c:10842 access/transam/xlog.c:10848 +#: access/transam/xlog.c:10932 access/transam/xlogfuncs.c:695 +#, c-format +msgid "invalid data in file \"%s\"" +msgstr "\"%s\" 파ì¼ì— 유효하지 ì•Šì€ ìžë£Œê°€ 있습니다" + +#: access/transam/xlog.c:10506 replication/basebackup.c:938 +#, c-format +msgid "the standby was promoted during online backup" +msgstr "대기 서버가 온ë¼ì¸ 백업 중 주 서버로 전환ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: access/transam/xlog.c:10507 replication/basebackup.c:939 +#, c-format +msgid "" +"This means that the backup being taken is corrupt and should not be used. " +"Try taking another online backup." +msgstr "" +"ì´ëŸ° 경우, 해당 백업 ìžë£Œê°€ ì†ìƒë˜ì—ˆì„ ê°€ëŠ¥ì„±ì´ ìžˆìŠµë‹ˆë‹¤. 다른 ë°±ì—…ë³¸ì„ ì´ìš©" +"하세요." + +#: access/transam/xlog.c:10552 +#, c-format +msgid "" +"WAL generated with full_page_writes=off was replayed during online backup" +msgstr "" +"온ë¼ì¸ 백업 ë„중 full_page_writes=off 설정으로 만들어진 WAL ë‚´ìš©ì´ ìž¬ë°˜ì˜ë˜ì—ˆ" +"습니다." + +#: access/transam/xlog.c:10664 +#, c-format +msgid "" +"pg_stop_backup cleanup done, waiting for required WAL segments to be archived" +msgstr "" +"pg_stop_backup ìž‘ì—…ì´ ë났습니다. 필요한 WAL ì¡°ê° íŒŒì¼ì´ ì•„ì¹´ì´ë¸Œ ë˜ê¸¸ 기다리" +"ê³  있습니다." + +#: access/transam/xlog.c:10674 +#, c-format +msgid "" +"pg_stop_backup still waiting for all required WAL segments to be archived " +"(%d seconds elapsed)" +msgstr "pg_stop_backupì—서 ì•„ì¹´ì´ë¹™ì´ 완료ë˜ê¸°ë¥¼ 기다리고 ìžˆìŒ (%dì´ˆ 경과)" + +#: access/transam/xlog.c:10676 +#, c-format +msgid "" +"Check that your archive_command is executing properly. pg_stop_backup can " +"be canceled safely, but the database backup will not be usable without all " +"the WAL segments." +msgstr "" +"archive_command ì„¤ì •ì„ ì‚´íŽ´ë³´ì„¸ìš”. pg_stop_backup ìž‘ì—…ì€ ì•ˆì „í•˜ê²Œ 취소 í•  " +"수 있지만, ë°ì´í„°ë² ì´ìФ ë°±ì—…ì€ ëª¨ë“  WAL ì¡°ê° ì—†ì´ëŠ” ì‚¬ìš©ë  ìˆ˜ 없습니다." + +#: access/transam/xlog.c:10683 +#, c-format +msgid "pg_stop_backup complete, all required WAL segments have been archived" +msgstr "" +"pg_stop_backup ìž‘ì—…ì´ ë났습니다. 모든 필요한 WAL ì¡°ê°ë“¤ì´ ì•„ì¹´ì´ë¸Œ ë˜ì—ˆìŠµë‹ˆ" +"다." + +#: access/transam/xlog.c:10687 +#, c-format +msgid "" +"WAL archiving is not enabled; you must ensure that all required WAL segments " +"are copied through other means to complete the backup" +msgstr "" +"WAL ì•„ì¹´ì´ë¸Œ ê¸°ëŠ¥ì´ ë¹„í™œì„±í™” ë˜ì–´ 있습니다; ì´ ê²½ìš°ëŠ” 백업 ë’¤ ë³µêµ¬ì— í•„ìš”í•œ " +"모든 WAL ì¡°ê° íŒŒì¼ë“¤ì„ ì§ì ‘ 찾아서 따로 보관해 ë‘어야 바르게 복구 í•  수 있습" +"니다." + +#. translator: %s is an XLog record description +#: access/transam/xlog.c:10972 +#, c-format +msgid "xlog redo at %X/%X for %s" +msgstr "xlog redo 위치: %X/%X, 대ìƒ: %s" + +#: access/transam/xlog.c:11021 +#, c-format +msgid "online backup mode was not canceled" +msgstr "온ë¼ì¸ 백업 모드가 취소ë˜ì§€ 않았ìŒ" + +#: access/transam/xlog.c:11022 +#, c-format +msgid "File \"%s\" could not be renamed to \"%s\": %m." +msgstr "\"%s\" 파ì¼ì„ \"%s\" 파ì¼ë¡œ ì´ë¦„ì„ ë°”ê¿€ 수 ì—†ìŒ: %m." + +#: access/transam/xlog.c:11031 access/transam/xlog.c:11043 +#: access/transam/xlog.c:11053 +#, c-format +msgid "online backup mode canceled" +msgstr "온ë¼ì¸ 백업 모드가 취소ë¨" + +#: access/transam/xlog.c:11044 +#, c-format +msgid "" +"Files \"%s\" and \"%s\" were renamed to \"%s\" and \"%s\", respectively." +msgstr "" +"예ìƒí•œ 것처럼, \"%s\", \"%s\" 파ì¼ì„ \"%s\", \"%s\" ì´ë¦„으로 바꿨습니다." + +#: access/transam/xlog.c:11054 +#, c-format +msgid "" +"File \"%s\" was renamed to \"%s\", but file \"%s\" could not be renamed to " +"\"%s\": %m." +msgstr "" +"\"%s\" 파ì¼ì€ \"%s\" ì´ë¦„으로 바꿨지만, \"%s\" 파ì¼ì€ \"%s\" ì´ë¦„으로 바꾸지 " +"못했습니다: %m." + +#: access/transam/xlog.c:11176 access/transam/xlogutils.c:718 +#: replication/walreceiver.c:994 replication/walsender.c:2112 +#, c-format +msgid "could not seek in log segment %s to offset %u: %m" +msgstr "%s 로그 ì¡°ê°ì—서 해당 위치를 ì°¾ì„ ìˆ˜ ì—†ìŒ: %u: %m" + +#: access/transam/xlog.c:11188 +#, c-format +msgid "could not read from log segment %s, offset %u: %m" +msgstr "%s 로그 ì¡°ê°ì—서 ì½ê¸° 실패, 위치: %u: %m" + +#: access/transam/xlog.c:11662 +#, c-format +msgid "received promote request" +msgstr "ìš´ì˜ ì „í™˜ 신호를 받았습니다." + +#: access/transam/xlog.c:11675 +#, c-format +msgid "trigger file found: %s" +msgstr "트리거 파ì¼ì´ 있ìŒ: %s" + +#: access/transam/xlog.c:11684 +#, c-format +msgid "could not stat trigger file \"%s\": %m" +msgstr "\"%s\" 트리거 파ì¼ì˜ ìƒíƒœê°’ì„ ì•Œ 수 ì—†ìŒ: %m" + +#: access/transam/xlogarchive.c:244 +#, c-format +msgid "archive file \"%s\" has wrong size: %lu instead of %lu" +msgstr "\"%s\" ê¸°ë¡ íŒŒì¼ì˜ í¬ê¸°ê°€ ì´ìƒí•©ë‹ˆë‹¤: 현재값 %lu, ì›ëž˜ê°’ %lu" + +#: access/transam/xlogarchive.c:253 +#, c-format +msgid "restored log file \"%s\" from archive" +msgstr "ì•„ì¹´ì´ë¸Œì—서 \"%s\" 로그파ì¼ì„ 복구했ìŒ" + +#: access/transam/xlogarchive.c:303 +#, c-format +msgid "could not restore file \"%s\" from archive: %s" +msgstr "ì•„ì¹´ì´ë¸Œì—서 \"%s\" íŒŒì¼ ë³µì› ì‹¤íŒ¨: %s" + +#. translator: First %s represents a recovery.conf parameter name like +#. "recovery_end_command", the 2nd is the value of that parameter, the +#. third an already translated error message. +#: access/transam/xlogarchive.c:415 +#, c-format +msgid "%s \"%s\": %s" +msgstr "%s \"%s\": %s" + +#: access/transam/xlogarchive.c:458 replication/logical/snapbuild.c:1619 +#: replication/slot.c:480 replication/slot.c:992 replication/slot.c:1100 +#: storage/file/fd.c:642 storage/file/fd.c:700 utils/time/snapmgr.c:1298 +#, c-format +msgid "could not rename file \"%s\" to \"%s\": %m" +msgstr "\"%s\" 파ì¼ì„ \"%s\" 파ì¼ë¡œ ì´ë¦„ì„ ë°”ê¿€ 수 ì—†ìŒ: %m" + +#: access/transam/xlogarchive.c:525 access/transam/xlogarchive.c:589 +#, c-format +msgid "could not create archive status file \"%s\": %m" +msgstr "\"%s\" archive status 파ì¼ì„ 만들 수 없습니다: %m" + +#: access/transam/xlogarchive.c:533 access/transam/xlogarchive.c:597 +#, c-format +msgid "could not write archive status file \"%s\": %m" +msgstr "\"%s\" archive status 파ì¼ì— 쓸 수 없습니다: %m" + +#: access/transam/xlogfuncs.c:58 +#, c-format +msgid "aborting backup due to backend exiting before pg_stop_backup was called" +msgstr "" +"pg_stop_backup ìž‘ì—…ì´ í˜¸ì¶œë˜ê¸° ì „ì— ë°±ì—”ë“œê°€ 종료ë˜ì–´ ë°±ì—…ì„ ì¤‘ì§€í•©ë‹ˆë‹¤." + +#: access/transam/xlogfuncs.c:88 +#, c-format +msgid "a backup is already in progress in this session" +msgstr "ì´ë¯¸ ì´ ì„¸ì…˜ì—서 백업 ìž‘ì—…ì´ ì§„í–‰ 중입니다" + +#: access/transam/xlogfuncs.c:94 commands/tablespace.c:705 +#: commands/tablespace.c:715 postmaster/postmaster.c:1406 +#: replication/basebackup.c:297 replication/basebackup.c:637 +#: storage/file/copydir.c:53 storage/file/copydir.c:96 storage/file/fd.c:2369 +#: storage/file/fd.c:2968 storage/ipc/dsm.c:300 utils/adt/genfile.c:439 +#: utils/adt/misc.c:411 utils/misc/tzparser.c:339 +#, c-format +msgid "could not open directory \"%s\": %m" +msgstr "\"%s\" 디렉터리 ì—´ 수 ì—†ìŒ: %m" + +#: access/transam/xlogfuncs.c:155 access/transam/xlogfuncs.c:229 +#, c-format +msgid "non-exclusive backup in progress" +msgstr "non-exclusive 백업 ì§„í–‰ 중입니다" + +#: access/transam/xlogfuncs.c:156 access/transam/xlogfuncs.c:230 +#, c-format +msgid "Did you mean to use pg_stop_backup('f')?" +msgstr "pg_stop_backup('f') 형태로 함수를 호출했나요?" + +#: access/transam/xlogfuncs.c:200 commands/event_trigger.c:1445 +#: commands/event_trigger.c:1996 commands/extension.c:1729 +#: commands/extension.c:1838 commands/extension.c:2031 commands/prepare.c:702 +#: executor/execQual.c:1757 executor/execQual.c:1782 executor/execQual.c:2157 +#: executor/execQual.c:5438 executor/functions.c:1031 foreign/foreign.c:492 +#: replication/logical/logicalfuncs.c:175 replication/logical/origin.c:1391 +#: replication/slotfuncs.c:189 replication/walsender.c:2761 +#: utils/adt/jsonfuncs.c:1483 utils/adt/jsonfuncs.c:1613 +#: utils/adt/jsonfuncs.c:1801 utils/adt/jsonfuncs.c:1928 +#: utils/adt/jsonfuncs.c:2694 utils/adt/pgstatfuncs.c:554 +#: utils/adt/pgstatfuncs.c:655 utils/fmgr/funcapi.c:61 utils/misc/guc.c:8436 +#: utils/mmgr/portalmem.c:1074 +#, c-format +msgid "set-valued function called in context that cannot accept a set" +msgstr "" +"set-values 함수(í…Œì´ë¸” 리턴 함수)ê°€ set ì •ì˜ ì—†ì´ ì‚¬ìš©ë˜ì—ˆìŠµë‹ˆë‹¤ (í…Œì´ë¸”ê³¼ í•´" +"당 ì—´ alias 지정하세요)" + +#: access/transam/xlogfuncs.c:204 commands/event_trigger.c:1449 +#: commands/event_trigger.c:2000 commands/extension.c:1733 +#: commands/extension.c:1842 commands/extension.c:2035 commands/prepare.c:706 +#: foreign/foreign.c:497 replication/logical/logicalfuncs.c:179 +#: replication/logical/origin.c:1395 replication/slotfuncs.c:193 +#: replication/walsender.c:2765 utils/adt/pgstatfuncs.c:558 +#: utils/adt/pgstatfuncs.c:659 utils/misc/guc.c:8440 utils/misc/pg_config.c:44 +#: utils/mmgr/portalmem.c:1078 +#, c-format +msgid "materialize mode required, but it is not allowed in this context" +msgstr "materialize 모드가 필요합니다만, ì´ êµ¬ë¬¸ì—서는 허용ë˜ì§€ 않습니다" + +#: access/transam/xlogfuncs.c:247 +#, c-format +msgid "non-exclusive backup is not in progress" +msgstr "non-exclusive 백업 ìƒíƒœê°€ 아닙니다" + +#: access/transam/xlogfuncs.c:248 +#, c-format +msgid "Did you mean to use pg_stop_backup('t')?" +msgstr "pg_stop_backup('t') 형태로 함수를 호출했나요?" + +#: access/transam/xlogfuncs.c:326 +#, c-format +msgid "WAL level not sufficient for creating a restore point" +msgstr "WAL ìˆ˜ì¤€ì´ ë³µì› ìœ„ì¹˜ë¥¼ 만들 수 없는 수준입니다" + +#: access/transam/xlogfuncs.c:334 +#, c-format +msgid "value too long for restore point (maximum %d characters)" +msgstr "ë³µì› ìœ„ì¹˜ ì´ë¦„ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤. (최대값, %d 글ìž)" + +#: access/transam/xlogfuncs.c:472 +#, c-format +msgid "pg_xlogfile_name_offset() cannot be executed during recovery." +msgstr "복구 중ì—는 pg_xlogfile_name_offset() 함수를 실행할 수 없습니다." + +#: access/transam/xlogfuncs.c:528 +#, c-format +msgid "pg_xlogfile_name() cannot be executed during recovery." +msgstr "복구 중ì—는 pg_xlogfile_name() 함수를 실행할 수 없습니다." + +#: access/transam/xlogfuncs.c:548 access/transam/xlogfuncs.c:568 +#: access/transam/xlogfuncs.c:585 +#, c-format +msgid "recovery is not in progress" +msgstr "현재 복구 작업 ìƒíƒœê°€ 아닙니다" + +#: access/transam/xlogfuncs.c:549 access/transam/xlogfuncs.c:569 +#: access/transam/xlogfuncs.c:586 +#, c-format +msgid "Recovery control functions can only be executed during recovery." +msgstr "복구 제어 함수는 복구 ìž‘ì—…ì¼ ë•Œë§Œ 실행할 수 있습니다." + +#: access/transam/xlogreader.c:276 +#, c-format +msgid "invalid record offset at %X/%X" +msgstr "ìž˜ëª»ëœ ë ˆì½”ë“œ 위치: %X/%X" + +#: access/transam/xlogreader.c:284 +#, c-format +msgid "contrecord is requested by %X/%X" +msgstr "%X/%Xì—서 contrecord를 필요로 함" + +#: access/transam/xlogreader.c:325 access/transam/xlogreader.c:624 +#, c-format +msgid "invalid record length at %X/%X: wanted %u, got %u" +msgstr "ìž˜ëª»ëœ ë ˆì½”ë“œ 길ì´: %X/%X, 기대값 %u, 실재값 %u" + +#: access/transam/xlogreader.c:340 +#, c-format +msgid "record length %u at %X/%X too long" +msgstr "너무 긴 길ì´(%u)ì˜ ë ˆì½”ë“œê°€ %X/%Xì— ìžˆìŒ" + +#: access/transam/xlogreader.c:381 +#, c-format +msgid "there is no contrecord flag at %X/%X" +msgstr "%X/%X ìœ„ì¹˜ì— contrecord 플래그가 ì—†ìŒ" + +#: access/transam/xlogreader.c:394 +#, c-format +msgid "invalid contrecord length %u at %X/%X" +msgstr "ìž˜ëª»ëœ contrecord ê¸¸ì´ %u, 위치 %X/%X" + +#: access/transam/xlogreader.c:632 +#, c-format +msgid "invalid resource manager ID %u at %X/%X" +msgstr "ìž˜ëª»ëœ ìžì› 관리 ID %u, 위치: %X/%X" + +#: access/transam/xlogreader.c:646 access/transam/xlogreader.c:663 +#, c-format +msgid "record with incorrect prev-link %X/%X at %X/%X" +msgstr "ë ˆì½”ë“œì˜ ìž˜ëª»ëœ í”„ë¦¬ë§í¬ %X/%X, 해당 레코드 %X/%X" + +#: access/transam/xlogreader.c:700 +#, c-format +msgid "incorrect resource manager data checksum in record at %X/%X" +msgstr "ìž˜ëª»ëœ ìžì›ê´€ë¦¬ìž ë°ì´í„° ì²´í¬ì„¬, 위치: %X/%X 레코드" + +#: access/transam/xlogreader.c:733 +#, c-format +msgid "invalid magic number %04X in log segment %s, offset %u" +msgstr "%04X ë§¤ì§ ë²ˆí˜¸ê°€ 잘못ë¨, 로그 íŒŒì¼ %s, 위치 %u" + +#: access/transam/xlogreader.c:747 access/transam/xlogreader.c:798 +#, c-format +msgid "invalid info bits %04X in log segment %s, offset %u" +msgstr "ìž˜ëª»ëœ ì •ë³´ 비트 %04X, 로그 íŒŒì¼ %s, 위치 %u" + +#: access/transam/xlogreader.c:773 +#, c-format +msgid "" +"WAL file is from different database system: WAL file database system " +"identifier is %s, pg_control database system identifier is %s" +msgstr "" +"WAL 파ì¼ì´ 다른 ì‹œìŠ¤í…œì˜ ê²ƒìž…ë‹ˆë‹¤. WAL 파ì¼ì˜ 시스템 ì‹ë³„ìžëŠ” %s, pg_control " +"ì˜ ì‹ë³„ìžëŠ” %s" + +#: access/transam/xlogreader.c:780 +#, c-format +msgid "" +"WAL file is from different database system: incorrect XLOG_SEG_SIZE in page " +"header" +msgstr "" +"WAL 파ì¼ì´ 다른 ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì˜ ê²ƒìž…ë‹ˆë‹¤: 페ì´ì§€ í—¤ë”ì˜ XLOG_SEG_SIZE " +"ê°’ì´ ë°”ë¥´ì§€ 않ìŒ" + +#: access/transam/xlogreader.c:786 +#, c-format +msgid "" +"WAL file is from different database system: incorrect XLOG_BLCKSZ in page " +"header" +msgstr "" +"WAL 파ì¼ì´ 다른 ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì˜ ê²ƒìž…ë‹ˆë‹¤: 페ì´ì§€ í—¤ë”ì˜ XLOG_BLCKSZ ê°’" +"ì´ ë°”ë¥´ì§€ 않ìŒ" + +#: access/transam/xlogreader.c:812 +#, c-format +msgid "unexpected pageaddr %X/%X in log segment %s, offset %u" +msgstr "ìž˜ëª»ëœ íŽ˜ì´ì§€ 주소 %X/%X, 로그 íŒŒì¼ %s, 위치 %u" + +#: access/transam/xlogreader.c:837 +#, c-format +msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u" +msgstr "타임ë¼ì¸ 범위 벗어남 %u (ì´ì „ 번호 %u), 로그 íŒŒì¼ %s, 위치 %u" + +#: access/transam/xlogreader.c:1081 +#, c-format +msgid "out-of-order block_id %u at %X/%X" +msgstr "%u block_id는 범위를 벗어남, 위치 %X/%X" + +#: access/transam/xlogreader.c:1103 +#, c-format +msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" +msgstr "BKPBLOCK_HAS_DATA 지정했지만, %X/%X ì— ìžë£Œê°€ ì—†ìŒ" + +#: access/transam/xlogreader.c:1110 +#, c-format +msgid "BKPBLOCK_HAS_DATA not set, but data length is %u at %X/%X" +msgstr "BKPBLOCK_HAS_DATA 지정 않았지만, %u 길ì´ì˜ ìžë£Œê°€ 있ìŒ, 위치 %X/%X" + +#: access/transam/xlogreader.c:1143 +#, c-format +msgid "" +"BKPIMAGE_HAS_HOLE set, but hole offset %u length %u block image length %u at " +"%X/%X" +msgstr "" +"BKPIMAGE_HAS_HOLE ì„¤ì •ì´ ë˜ì–´ 있지만, 옵셋: %u, 길ì´: %u, ë¸”ë¡ ì´ë¯¸ì§€ 길ì´: " +"%u, 대ìƒ: %X/%X" + +#: access/transam/xlogreader.c:1159 +#, c-format +msgid "BKPIMAGE_HAS_HOLE not set, but hole offset %u length %u at %X/%X" +msgstr "" +"BKPIMAGE_HAS_HOLE ì„¤ì •ì´ ì•ˆë˜ì–´ 있지만, 옵셋: %u, 길ì´: %u, 대ìƒ: %X/%X" + +#: access/transam/xlogreader.c:1174 +#, c-format +msgid "BKPIMAGE_IS_COMPRESSED set, but block image length %u at %X/%X" +msgstr "" +"BKPIMAGE_IS_COMPRESSED ì„¤ì •ì´ ë˜ì–´ 있지만, ë¸”ë¡ ì´ë¯¸ì§€ 길ì´: %u, 대ìƒ: %X/%X" + +#: access/transam/xlogreader.c:1189 +#, c-format +msgid "" +"neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_IS_COMPRESSED set, but block image " +"length is %u at %X/%X" +msgstr "" +"BKPIMAGE_HAS_HOLE, BKPIMAGE_IS_COMPRESSED 지정 안ë˜ì–´ 있으나, ë¸”ë¡ ì´ë¯¸ì§€ 길" +"ì´ëŠ” %u, 대ìƒ: %X/%X" + +#: access/transam/xlogreader.c:1205 +#, c-format +msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" +msgstr "BKPBLOCK_SAME_REL ì„¤ì •ì´ ë˜ì–´ 있지만, %X/%X ì— ì´ì „ 릴레ì´ì…˜ ì—†ìŒ" + +#: access/transam/xlogreader.c:1217 +#, c-format +msgid "invalid block_id %u at %X/%X" +msgstr "ìž˜ëª»ëœ block_id %u, 위치 %X/%X" + +#: access/transam/xlogreader.c:1282 +#, c-format +msgid "record with invalid length at %X/%X" +msgstr "ìž˜ëª»ëœ ë ˆì½”ë“œ 길ì´, 위치 %X/%X" + +#: access/transam/xlogreader.c:1371 +#, c-format +msgid "invalid compressed image at %X/%X, block %d" +msgstr "ìž˜ëª»ëœ ì••ì¶• ì´ë¯¸ì§€, 위치 %X/%X, ë¸”ë¡ %d" + +#: access/transam/xlogutils.c:739 replication/walsender.c:2129 +#, c-format +msgid "could not read from log segment %s, offset %u, length %lu: %m" +msgstr "%s 로그 ì¡°ê° ì½ê¸° 실패, 위치 %u, ê¸¸ì´ %lu: %m" + +#: bootstrap/bootstrap.c:269 postmaster/postmaster.c:793 tcop/postgres.c:3501 +#, c-format +msgid "--%s requires a value" +msgstr "--%s ì˜µì…˜ì€ í•´ë‹¹ ê°’ì„ ì§€ì •í•´ì•¼í•©ë‹ˆë‹¤" + +#: bootstrap/bootstrap.c:274 postmaster/postmaster.c:798 tcop/postgres.c:3506 +#, c-format +msgid "-c %s requires a value" +msgstr "-c %s ì˜µì…˜ì€ í•´ë‹¹ ê°’ì„ ì§€ì •í•´ì•¼í•©ë‹ˆë‹¤" + +#: bootstrap/bootstrap.c:285 postmaster/postmaster.c:810 +#: postmaster/postmaster.c:823 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "ìžì œí•œ ì‚¬í•­ì€ \"%s --help\" 명령으로 살펴보십시오.\n" + +#: bootstrap/bootstrap.c:294 +#, c-format +msgid "%s: invalid command-line arguments\n" +msgstr "%s: ìž˜ëª»ëœ ëª…ë ¹í–‰ ì¸ìž\n" + +#: catalog/aclchk.c:201 +#, c-format +msgid "grant options can only be granted to roles" +msgstr "grant ì˜µì…˜ë“¤ì€ ë¡¤ì—서만 ì§€ì •ë  ìˆ˜ 있습니다" + +#: catalog/aclchk.c:324 +#, c-format +msgid "no privileges were granted for column \"%s\" of relation \"%s\"" +msgstr "\"%s\" 칼럼(해당 릴레ì´ì…˜: \"%s\")ì— ëŒ€í•œ ê¶Œí•œì´ ë¶€ì—¬ë˜ì§€ 않았ìŒ" + +#: catalog/aclchk.c:329 +#, c-format +msgid "no privileges were granted for \"%s\"" +msgstr "\"%s\"ì— ëŒ€í•œ ê¶Œí•œì´ ë¶€ì—¬ë˜ì§€ 않았ìŒ" + +#: catalog/aclchk.c:337 +#, c-format +msgid "not all privileges were granted for column \"%s\" of relation \"%s\"" +msgstr "\"%s\" 칼럼(해당 릴레ì´ì…˜: \"%s\")ì— ëŒ€í•œ ì¼ë¶€ ê¶Œí•œì´ ë¶€ì—¬ë˜ì§€ 않았ìŒ" + +#: catalog/aclchk.c:342 +#, c-format +msgid "not all privileges were granted for \"%s\"" +msgstr "\"%s\"ì— ëŒ€í•œ ì¼ë¶€ ê¶Œí•œì´ ë¶€ì—¬ë˜ì§€ 않았ìŒ" + +#: catalog/aclchk.c:353 +#, c-format +msgid "no privileges could be revoked for column \"%s\" of relation \"%s\"" +msgstr "\"%s\" 칼럼(해당 릴레ì´ì…˜: \"%s\")ì— ëŒ€í•œ ê¶Œí•œì„ ì·¨ì†Œí•  수 ì—†ìŒ" + +#: catalog/aclchk.c:358 +#, c-format +msgid "no privileges could be revoked for \"%s\"" +msgstr "\"%s\"ì— ëŒ€í•œ ê¶Œí•œì„ ì·¨ì†Œí•  수 ì—†ìŒ" + +#: catalog/aclchk.c:366 +#, c-format +msgid "" +"not all privileges could be revoked for column \"%s\" of relation \"%s\"" +msgstr "\"%s\" 칼럼(해당 릴레ì´ì…˜: \"%s\")ì˜ ì¼ë¶€ ê¶Œí•œì„ ë°•íƒˆí•  수 ì—†ìŒ" + +#: catalog/aclchk.c:371 +#, c-format +msgid "not all privileges could be revoked for \"%s\"" +msgstr "\"%s\"ì— ëŒ€í•œ ì¼ë¶€ ê¶Œí•œì„ ì·¨ì†Œí•  수 ì—†ìŒ" + +#: catalog/aclchk.c:453 catalog/aclchk.c:943 +#, c-format +msgid "invalid privilege type %s for relation" +msgstr "릴레ì´ì…˜ì˜ %s ê¶Œí•œì€ ìž˜ëª»ëœ ì¢…ë¥˜ìž„" + +#: catalog/aclchk.c:457 catalog/aclchk.c:947 +#, c-format +msgid "invalid privilege type %s for sequence" +msgstr "ì‹œí€€ìŠ¤ì˜ %s ê¶Œí•œì€ ìž˜ëª»ëœ ì¢…ë¥˜ìž„" + +#: catalog/aclchk.c:461 +#, c-format +msgid "invalid privilege type %s for database" +msgstr "%s ê¶Œí•œì€ ë°ì´í„°ë² ì´ìФì—는 사용할 수 ì—†ì€ ê¶Œí•œ 형태임" + +#: catalog/aclchk.c:465 +#, c-format +msgid "invalid privilege type %s for domain" +msgstr "%s ê¶Œí•œì€ ë„ë©”ì¸ì—서 유효하지 않ìŒ" + +#: catalog/aclchk.c:469 catalog/aclchk.c:951 +#, c-format +msgid "invalid privilege type %s for function" +msgstr "%s ê¶Œí•œì€ í•¨ìˆ˜ì—서 사용할 수 ì—†ì€ ê¶Œí•œ 형태임" + +#: catalog/aclchk.c:473 +#, c-format +msgid "invalid privilege type %s for language" +msgstr "%s ê¶Œí•œì€ í”„ë¡œì‹œì£¼ì–¼ 언어ì—서 사용할 수 ì—†ì€ ê¶Œí•œ 형태임" + +#: catalog/aclchk.c:477 +#, c-format +msgid "invalid privilege type %s for large object" +msgstr "%s ê¶Œí•œì€ ëŒ€í˜• ê°ì²´ì—서 사용할 수 ì—†ì€ ê¶Œí•œ 형태임" + +#: catalog/aclchk.c:481 +#, c-format +msgid "invalid privilege type %s for schema" +msgstr "%s ê¶Œí•œì€ ìŠ¤í‚¤ë§ˆ(schema)ì—서 사용할 수 ì—†ì€ ê¶Œí•œ 형태임" + +#: catalog/aclchk.c:485 +#, c-format +msgid "invalid privilege type %s for tablespace" +msgstr "%s ê¶Œí•œì€ í…Œì´ë¸”스페ì´ìФì—서 사용할 수 ì—†ì€ ê¶Œí•œ 형태임" + +#: catalog/aclchk.c:489 catalog/aclchk.c:955 +#, c-format +msgid "invalid privilege type %s for type" +msgstr "%s ê¶Œí•œì€ ìžë£Œí˜•ì—서 사용할 수 ì—†ì€ ê¶Œí•œ 형태임" + +#: catalog/aclchk.c:493 +#, c-format +msgid "invalid privilege type %s for foreign-data wrapper" +msgstr "%s 권한 형ì‹ì€ 외부 ë°ì´í„° 래í¼ì— 유효하지 않ìŒ" + +#: catalog/aclchk.c:497 +#, c-format +msgid "invalid privilege type %s for foreign server" +msgstr "%s 권한 형ì‹ì€ 외부 ì„œë²„ì— ìœ íš¨í•˜ì§€ 않ìŒ" + +#: catalog/aclchk.c:536 +#, c-format +msgid "column privileges are only valid for relations" +msgstr "칼럼 ê¶Œí•œì€ ë¦´ë ˆì´ì…˜ì—서만 유효함" + +#: catalog/aclchk.c:695 catalog/aclchk.c:3923 catalog/aclchk.c:4705 +#: catalog/objectaddress.c:873 catalog/pg_largeobject.c:113 +#: storage/large_object/inv_api.c:291 +#, c-format +msgid "large object %u does not exist" +msgstr "%u large object ì—†ìŒ" + +#: catalog/aclchk.c:882 catalog/aclchk.c:890 commands/collationcmds.c:92 +#: commands/copy.c:1047 commands/copy.c:1065 commands/copy.c:1073 +#: commands/copy.c:1081 commands/copy.c:1089 commands/copy.c:1097 +#: commands/copy.c:1105 commands/copy.c:1113 commands/copy.c:1121 +#: commands/copy.c:1137 commands/copy.c:1151 commands/copy.c:1170 +#: commands/copy.c:1185 commands/dbcommands.c:155 commands/dbcommands.c:163 +#: commands/dbcommands.c:171 commands/dbcommands.c:179 +#: commands/dbcommands.c:187 commands/dbcommands.c:195 +#: commands/dbcommands.c:203 commands/dbcommands.c:211 +#: commands/dbcommands.c:219 commands/dbcommands.c:1397 +#: commands/dbcommands.c:1405 commands/dbcommands.c:1413 +#: commands/dbcommands.c:1421 commands/extension.c:1219 +#: commands/extension.c:1227 commands/extension.c:1235 +#: commands/extension.c:1243 commands/extension.c:2761 +#: commands/foreigncmds.c:539 commands/foreigncmds.c:548 +#: commands/functioncmds.c:533 commands/functioncmds.c:649 +#: commands/functioncmds.c:657 commands/functioncmds.c:665 +#: commands/functioncmds.c:673 commands/functioncmds.c:2085 +#: commands/functioncmds.c:2093 commands/sequence.c:1189 +#: commands/sequence.c:1197 commands/sequence.c:1205 commands/sequence.c:1213 +#: commands/sequence.c:1221 commands/sequence.c:1229 commands/sequence.c:1237 +#: commands/sequence.c:1245 commands/typecmds.c:295 commands/typecmds.c:1382 +#: commands/typecmds.c:1391 commands/typecmds.c:1399 commands/typecmds.c:1407 +#: commands/typecmds.c:1415 commands/user.c:139 commands/user.c:156 +#: commands/user.c:164 commands/user.c:172 commands/user.c:180 +#: commands/user.c:188 commands/user.c:196 commands/user.c:204 +#: commands/user.c:212 commands/user.c:220 commands/user.c:228 +#: commands/user.c:236 commands/user.c:244 commands/user.c:537 +#: commands/user.c:549 commands/user.c:557 commands/user.c:565 +#: commands/user.c:573 commands/user.c:581 commands/user.c:589 +#: commands/user.c:597 commands/user.c:606 commands/user.c:614 +#: commands/user.c:622 +#, c-format +msgid "conflicting or redundant options" +msgstr "ìƒì¶©í•˜ê±°ë‚˜ ì¤‘ë³µëœ ì˜µì…˜ë“¤" + +#: catalog/aclchk.c:988 +#, c-format +msgid "default privileges cannot be set for columns" +msgstr "default privileges ì„¤ì •ì€ ì¹¼ëŸ¼ 대ìƒìœ¼ë¡œ í•  수 ì—†ìŒ" + +#: catalog/aclchk.c:1502 catalog/objectaddress.c:1390 commands/analyze.c:376 +#: commands/copy.c:4458 commands/sequence.c:1491 commands/tablecmds.c:5198 +#: commands/tablecmds.c:5304 commands/tablecmds.c:5364 +#: commands/tablecmds.c:5477 commands/tablecmds.c:5534 +#: commands/tablecmds.c:5628 commands/tablecmds.c:5724 +#: commands/tablecmds.c:7915 commands/tablecmds.c:8177 +#: commands/tablecmds.c:8597 commands/trigger.c:642 parser/analyze.c:2228 +#: parser/parse_relation.c:2628 parser/parse_relation.c:2690 +#: parser/parse_target.c:951 parser/parse_type.c:127 utils/adt/acl.c:2840 +#: utils/adt/ruleutils.c:1984 +#, c-format +msgid "column \"%s\" of relation \"%s\" does not exist" +msgstr "\"%s\" ì—´ì€ \"%s\" 릴레ì´ì…˜(relation)ì— ì—†ìŒ" + +#: catalog/aclchk.c:1771 catalog/objectaddress.c:1203 commands/sequence.c:1078 +#: commands/tablecmds.c:224 commands/tablecmds.c:12154 utils/adt/acl.c:2076 +#: utils/adt/acl.c:2106 utils/adt/acl.c:2138 utils/adt/acl.c:2170 +#: utils/adt/acl.c:2198 utils/adt/acl.c:2228 +#, c-format +msgid "\"%s\" is not a sequence" +msgstr "\"%s\" 시퀀스가 아님" + +#: catalog/aclchk.c:1809 +#, c-format +msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" +msgstr "\"%s\" 시퀀스는 USAGE, SELECT ë° UPDATE 권한만 ì§€ì›í•¨" + +#: catalog/aclchk.c:1826 +#, c-format +msgid "invalid privilege type USAGE for table" +msgstr "í…Œì´ë¸”ì—서 USAGE ê¶Œí•œì€ ìž˜ëª»ë˜ì—ˆìŒ" + +#: catalog/aclchk.c:1994 +#, c-format +msgid "invalid privilege type %s for column" +msgstr "%s 권한 형ì‹ì€ 칼럼ì—서 유효하지 않ìŒ" + +#: catalog/aclchk.c:2007 +#, c-format +msgid "sequence \"%s\" only supports SELECT column privileges" +msgstr "\"%s\" 시퀀스는 SELECT ì—´ 권한만 ì§€ì›í•¨" + +#: catalog/aclchk.c:2601 +#, c-format +msgid "language \"%s\" is not trusted" +msgstr "\"%s\" 프로시주얼 언어는 안전하지 못합니다" + +#: catalog/aclchk.c:2603 +#, c-format +msgid "" +"GRANT and REVOKE are not allowed on untrusted languages, because only " +"superusers can use untrusted languages." +msgstr "" +"안전하지 ì•Šì€ í”„ë¡œì‹œì ¸ ì–¸ì–´ì— ëŒ€í•´ì„œëŠ” GRANT ë˜ëŠ” REVOKE ìž‘ì—…ì„ í—ˆìš©í•˜ì§€ 않습" +"니다, 안전하지 ì•Šì€ í”„ë¡œì‹œì ¸ 언어는 슈í¼ìœ ì €ë§Œ 사용할 수 있기 때문입니다." + +#: catalog/aclchk.c:3129 +#, c-format +msgid "cannot set privileges of array types" +msgstr "배열형 ìžë£Œí˜•ì— ê¶Œí•œ ì„¤ì •ì„ í•  수 ì—†ìŒ" + +#: catalog/aclchk.c:3130 +#, c-format +msgid "Set the privileges of the element type instead." +msgstr "ê·¸ ë°°ì—´ ìš”ì†Œì— í•´ë‹¹í•˜ëŠ” ìžë£Œí˜•ì— ëŒ€í•´ì„œ ì ‘ê·¼ 권한 ì„¤ì •ì„ í•˜ì„¸ìš”." + +#: catalog/aclchk.c:3137 catalog/objectaddress.c:1523 commands/typecmds.c:3146 +#, c-format +msgid "\"%s\" is not a domain" +msgstr "\"%s\" ì´ë¦„ì˜ ê°ì²´ëŠ” ë„ë©”ì¸ì´ 아닙니다" + +#: catalog/aclchk.c:3260 +#, c-format +msgid "unrecognized privilege type \"%s\"" +msgstr "알 수 없는 권한 타입 \"%s\"" + +#: catalog/aclchk.c:3309 +#, c-format +msgid "permission denied for column %s" +msgstr "%s ì¹¼ëŸ¼ì— ëŒ€í•œ ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3311 +#, c-format +msgid "permission denied for relation %s" +msgstr "%s 릴레ì´ì…˜(relation) ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3313 commands/sequence.c:561 commands/sequence.c:786 +#: commands/sequence.c:828 commands/sequence.c:865 commands/sequence.c:1543 +#, c-format +msgid "permission denied for sequence %s" +msgstr "%s 시퀀스 ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3315 +#, c-format +msgid "permission denied for database %s" +msgstr "%s ë°ì´í„°ë² ì´ìФ ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3317 +#, c-format +msgid "permission denied for function %s" +msgstr "%s 함수 ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3319 +#, c-format +msgid "permission denied for operator %s" +msgstr "%s ì—°ì‚°ìž ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3321 +#, c-format +msgid "permission denied for type %s" +msgstr "%s ìžë£Œí˜• ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3323 +#, c-format +msgid "permission denied for language %s" +msgstr "%s 프로시주얼 언어 ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3325 +#, c-format +msgid "permission denied for large object %s" +msgstr "%s 대형 ê°ì²´ ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3327 +#, c-format +msgid "permission denied for schema %s" +msgstr "%s 스키마(schema) ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3329 +#, c-format +msgid "permission denied for operator class %s" +msgstr "%s ì—°ì‚°ìž í´ëž˜ìФ ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3331 +#, c-format +msgid "permission denied for operator family %s" +msgstr "%s ì—°ì‚°ìž íŒ¨ë°€ë¦¬ ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3333 +#, c-format +msgid "permission denied for collation %s" +msgstr "%s 정렬정ì˜(collation) ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3335 +#, c-format +msgid "permission denied for conversion %s" +msgstr "%s 문ìžì½”드변환규칙(conversion) ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3337 +#, c-format +msgid "permission denied for tablespace %s" +msgstr "%s í…Œì´ë¸”스페ì´ìФ ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3339 +#, c-format +msgid "permission denied for text search dictionary %s" +msgstr "%s 전문 검색 사전 ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3341 +#, c-format +msgid "permission denied for text search configuration %s" +msgstr "%s 전문 검색 구성 ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3343 +#, c-format +msgid "permission denied for foreign-data wrapper %s" +msgstr "%s 외부 ë°ì´í„° ëž˜í¼ ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3345 +#, c-format +msgid "permission denied for foreign server %s" +msgstr "%s 외부 서버 ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3347 +#, c-format +msgid "permission denied for event trigger %s" +msgstr "%s ì´ë²¤íЏ 트리거 ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3349 +#, c-format +msgid "permission denied for extension %s" +msgstr "%s 확장 모듈 ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3355 catalog/aclchk.c:3357 +#, c-format +msgid "must be owner of relation %s" +msgstr "%s 릴레ì´ì…˜(relation)ì˜ ì†Œìœ ì£¼ì—¬ì•¼ë§Œ 합니다" + +#: catalog/aclchk.c:3359 +#, c-format +msgid "must be owner of sequence %s" +msgstr "%s ì‹œí€€ìŠ¤ì˜ ì†Œìœ ì£¼ì—¬ì•¼ë§Œ 합니다" + +#: catalog/aclchk.c:3361 +#, c-format +msgid "must be owner of database %s" +msgstr "%s ë°ì´í„°ë² ì´ìŠ¤ì˜ ì†Œìœ ì£¼ì—¬ì•¼ë§Œ 합니다" + +#: catalog/aclchk.c:3363 +#, c-format +msgid "must be owner of function %s" +msgstr "%s í•¨ìˆ˜ì˜ ì†Œìœ ì£¼ì—¬ì•¼ë§Œ 합니다" + +#: catalog/aclchk.c:3365 +#, c-format +msgid "must be owner of operator %s" +msgstr "%s ì—°ì‚°ìžì˜ 소유주여야만 합니다" + +#: catalog/aclchk.c:3367 +#, c-format +msgid "must be owner of type %s" +msgstr "%s ìžë£Œí˜•ì˜ ì†Œìœ ì£¼ì—¬ì•¼ë§Œ 합니다" + +#: catalog/aclchk.c:3369 +#, c-format +msgid "must be owner of language %s" +msgstr "%s 프로시주얼 ì–¸ì–´ì˜ ì†Œìœ ì£¼ì—¬ì•¼ë§Œ 합니다" + +#: catalog/aclchk.c:3371 +#, c-format +msgid "must be owner of large object %s" +msgstr "%s 대형 ê°ì²´ì˜ 소유주여야만 합니다" + +#: catalog/aclchk.c:3373 +#, c-format +msgid "must be owner of schema %s" +msgstr "%s 스키마(schema)ì˜ ì†Œìœ ì£¼ì—¬ì•¼ë§Œ 합니다" + +#: catalog/aclchk.c:3375 +#, c-format +msgid "must be owner of operator class %s" +msgstr "%s ì—°ì‚°ìž í´ëž˜ìŠ¤ì˜ ì†Œìœ ì£¼ì—¬ì•¼ë§Œ 합니다" + +#: catalog/aclchk.c:3377 +#, c-format +msgid "must be owner of operator family %s" +msgstr "%s ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì˜ ì†Œìœ ì£¼ì—¬ì•¼ 함" + +#: catalog/aclchk.c:3379 +#, c-format +msgid "must be owner of collation %s" +msgstr "%s 정렬정ì˜(collation)ì˜ ì†Œìœ ì£¼ì—¬ì•¼ë§Œ 합니다" + +#: catalog/aclchk.c:3381 +#, c-format +msgid "must be owner of conversion %s" +msgstr "%s 문ìžì½”드변환규칙(conversion)ì˜ ì†Œìœ ì£¼ì—¬ì•¼ë§Œ 합니다" + +#: catalog/aclchk.c:3383 +#, c-format +msgid "must be owner of tablespace %s" +msgstr "%s í…Œì´ë¸”스페ì´ìŠ¤ì˜ ì†Œìœ ì£¼ì—¬ì•¼ë§Œ 합니다" + +#: catalog/aclchk.c:3385 +#, c-format +msgid "must be owner of text search dictionary %s" +msgstr "%s 전문 검색 ì‚¬ì „ì˜ ì†Œìœ ì£¼ì—¬ì•¼ 함" + +#: catalog/aclchk.c:3387 +#, c-format +msgid "must be owner of text search configuration %s" +msgstr "%s 전문 검색 êµ¬ì„±ì˜ ì†Œìœ ì£¼ì—¬ì•¼ 함" + +#: catalog/aclchk.c:3389 +#, c-format +msgid "must be owner of foreign-data wrapper %s" +msgstr "%s 외부 ë°ì´í„° 래í¼ì˜ 소유주여야 함" + +#: catalog/aclchk.c:3391 +#, c-format +msgid "must be owner of foreign server %s" +msgstr "%s 외부 ì„œë²„ì˜ ì†Œìœ ì£¼ì—¬ì•¼ 함" + +#: catalog/aclchk.c:3393 +#, c-format +msgid "must be owner of event trigger %s" +msgstr "%s ì´ë²¤íЏ íŠ¸ë¦¬ê±°ì˜ ì†Œìœ ì£¼ì—¬ì•¼ë§Œ 합니다" + +#: catalog/aclchk.c:3395 +#, c-format +msgid "must be owner of extension %s" +msgstr "%s 확장 ëª¨ë“ˆì˜ ì†Œìœ ì£¼ì—¬ì•¼ë§Œ 합니다" + +#: catalog/aclchk.c:3437 +#, c-format +msgid "permission denied for column \"%s\" of relation \"%s\"" +msgstr "\"%s\" 칼럼(해당 릴레ì´ì…˜: \"%s\") ì ‘ê·¼ 권한 ì—†ìŒ" + +#: catalog/aclchk.c:3556 catalog/aclchk.c:3564 +#, c-format +msgid "attribute %d of relation with OID %u does not exist" +msgstr "%d번째 ì†ì„±(해당 릴레ì´ì…˜ OID: %u)ì´ ì—†ìŒ" + +#: catalog/aclchk.c:3637 catalog/aclchk.c:4556 +#, c-format +msgid "relation with OID %u does not exist" +msgstr "OID %u 릴레ì´ì…˜(relation) ì—†ìŒ" + +#: catalog/aclchk.c:3736 catalog/aclchk.c:4974 +#, c-format +msgid "database with OID %u does not exist" +msgstr "OID %u ë°ì´í„°ë² ì´ìФ ì—†ìŒ" + +#: catalog/aclchk.c:3790 catalog/aclchk.c:4634 tcop/fastpath.c:223 +#, c-format +msgid "function with OID %u does not exist" +msgstr "OID %u 함수 ì—†ìŒ" + +#: catalog/aclchk.c:3844 catalog/aclchk.c:4660 +#, c-format +msgid "language with OID %u does not exist" +msgstr "OID %u 언어 ì—†ìŒ" + +#: catalog/aclchk.c:4008 catalog/aclchk.c:4732 +#, c-format +msgid "schema with OID %u does not exist" +msgstr "OID %u 스키마 ì—†ìŒ" + +#: catalog/aclchk.c:4062 catalog/aclchk.c:4759 +#, c-format +msgid "tablespace with OID %u does not exist" +msgstr "OID %u í…Œì´ë¸”스페ì´ìФ ì—†ìŒ" + +#: catalog/aclchk.c:4121 catalog/aclchk.c:4893 commands/foreigncmds.c:325 +#, c-format +msgid "foreign-data wrapper with OID %u does not exist" +msgstr "OIDê°€ %uì¸ ì™¸ë¶€ ë°ì´í„° 래í¼ê°€ ì—†ìŒ" + +#: catalog/aclchk.c:4183 catalog/aclchk.c:4920 commands/foreigncmds.c:461 +#, c-format +msgid "foreign server with OID %u does not exist" +msgstr "OIDê°€ %uì¸ ì™¸ë¶€ 서버가 ì—†ìŒ" + +#: catalog/aclchk.c:4243 catalog/aclchk.c:4582 +#, c-format +msgid "type with OID %u does not exist" +msgstr "OID %u ìžë£Œí˜• ì—†ìŒ" + +#: catalog/aclchk.c:4608 +#, c-format +msgid "operator with OID %u does not exist" +msgstr "OID %u ì—°ì‚°ìž ì—†ìŒ" + +#: catalog/aclchk.c:4785 +#, c-format +msgid "operator class with OID %u does not exist" +msgstr "OID %u ì—°ì‚°ìž í´ëž˜ìФ ì—†ìŒ" + +#: catalog/aclchk.c:4812 +#, c-format +msgid "operator family with OID %u does not exist" +msgstr "OIDê°€ %uì¸ ì—°ì‚°ìž íŒ¨ë°€ë¦¬ê°€ ì—†ìŒ" + +#: catalog/aclchk.c:4839 +#, c-format +msgid "text search dictionary with OID %u does not exist" +msgstr "OIDê°€ %uì¸ ì „ë¬¸ 검색 ì‚¬ì „ì´ ì—†ìŒ" + +#: catalog/aclchk.c:4866 +#, c-format +msgid "text search configuration with OID %u does not exist" +msgstr "OIDê°€ %uì¸ í…스트 검색 êµ¬ì„±ì´ ì—†ìŒ" + +#: catalog/aclchk.c:4947 commands/event_trigger.c:587 +#, c-format +msgid "event trigger with OID %u does not exist" +msgstr "OID %u ì´ë²¤íЏ 트리거가 ì—†ìŒ" + +#: catalog/aclchk.c:5000 +#, c-format +msgid "collation with OID %u does not exist" +msgstr "OID %u 정렬정ì˜(collation) ì—†ìŒ" + +#: catalog/aclchk.c:5026 +#, c-format +msgid "conversion with OID %u does not exist" +msgstr "OID %u ì¸ì½”딩 변환규칙(conversion) ì—†ìŒ" + +#: catalog/aclchk.c:5067 +#, c-format +msgid "extension with OID %u does not exist" +msgstr "OID %u 확장 ëª¨ë“ˆì´ ì—†ìŒ" + +#: catalog/dependency.c:645 +#, c-format +msgid "cannot drop %s because %s requires it" +msgstr "%s 삭제할 수 ì—†ìŒ, %sì—서 필요로함" + +#: catalog/dependency.c:648 +#, c-format +msgid "You can drop %s instead." +msgstr "대신ì—, drop %s ëª…ë ¹ì„ ì‚¬ìš©í•  수 있ìŒ." + +#: catalog/dependency.c:810 catalog/pg_shdepend.c:576 +#, c-format +msgid "cannot drop %s because it is required by the database system" +msgstr "%s ê°ì²´ëŠ” ë°ì´í„°ë² ì´ìФ 시스템ì—서 필요하기 ë•Œë¬¸ì— ì‚­ì œ ë  ìˆ˜ ì—†ìŒ" + +#: catalog/dependency.c:926 +#, c-format +msgid "drop auto-cascades to %s" +msgstr "%s ê°ì²´ê°€ ìžë™ìœ¼ë¡œ ë©ë‹¬ì•„ ì‚­ì œë¨" + +#: catalog/dependency.c:938 catalog/dependency.c:947 +#, c-format +msgid "%s depends on %s" +msgstr "%s ì˜ì¡´ëŒ€ìƒ: %s" + +#: catalog/dependency.c:959 catalog/dependency.c:968 +#, c-format +msgid "drop cascades to %s" +msgstr "%s ê°ì²´ê°€ ë©ë‹¬ì•„ ì‚­ì œë¨" + +#: catalog/dependency.c:976 catalog/pg_shdepend.c:687 +#, c-format +msgid "" +"\n" +"and %d other object (see server log for list)" +msgid_plural "" +"\n" +"and %d other objects (see server log for list)" +msgstr[0] "" +msgstr[1] "" + +#: catalog/dependency.c:988 +#, c-format +msgid "cannot drop %s because other objects depend on it" +msgstr "기타 다른 ê°ì²´ë“¤ì´ ì´ ê°ì²´ì— ì˜ì¡´í•˜ê³  있어, %s 삭제할 수 ì—†ìŒ" + +#: catalog/dependency.c:992 catalog/dependency.c:999 +#, c-format +msgid "Use DROP ... CASCADE to drop the dependent objects too." +msgstr "" +"ì´ ê°ì²´ì™€ ê´€ê³„ëœ ëª¨ë“  ê°ì²´ë“¤ì„ 함께 삭제하려면 DROP ... CASCADE ëª…ë ¹ì„ ì‚¬ìš©í•˜" +"십시오" + +#: catalog/dependency.c:996 +#, c-format +msgid "cannot drop desired object(s) because other objects depend on them" +msgstr "다른 ê°ì²´ê°€ ì›í•˜ëŠ” ê°ì²´ë¥¼ 사용하고 있으므로 해당 ê°ì²´ë¥¼ 삭제할 수 ì—†ìŒ" + +#. translator: %d always has a value larger than 1 +#: catalog/dependency.c:1005 +#, c-format +msgid "drop cascades to %d other object" +msgid_plural "drop cascades to %d other objects" +msgstr[0] "%dê°œì˜ ë‹¤ë¥¸ ê°ì²´ì— 대한 관련 항목 ì‚­ì œ" + +#: catalog/dependency.c:1633 +#, c-format +msgid "constant of the type \"regrole\" cannot be used here" +msgstr "\"regrole\" ìžë£Œí˜• ìƒìˆ˜ëŠ” 여기서 사용할 수 ì—†ìŒ" + +#: catalog/heap.c:278 +#, c-format +msgid "permission denied to create \"%s.%s\"" +msgstr "\"%s.%s\" 만들 ê¶Œí•œì´ ì—†ìŒ" + +#: catalog/heap.c:280 +#, c-format +msgid "System catalog modifications are currently disallowed." +msgstr "시스템 카탈로그 ë³€ê²½ì€ í˜„ìž¬ 허용하지 않습니다." + +#: catalog/heap.c:415 commands/tablecmds.c:1439 commands/tablecmds.c:1896 +#: commands/tablecmds.c:4820 +#, c-format +msgid "tables can have at most %d columns" +msgstr "한 í…Œì´ë¸”ì— ì§€ì •í•  수 있는 최대 ì—´ 수는 %d입니다" + +#: catalog/heap.c:432 commands/tablecmds.c:5081 +#, c-format +msgid "column name \"%s\" conflicts with a system column name" +msgstr "\"%s\" ì—´ ì´ë¦„ì€ ì‹œìŠ¤í…œ ì—´ ì´ë¦„ê³¼ ì¶©ëŒí•©ë‹ˆë‹¤" + +#: catalog/heap.c:448 +#, c-format +msgid "column name \"%s\" specified more than once" +msgstr "\"%s\" 칼럼 ì´ë¦„ì´ ì—¬ëŸ¬ 번 지정ë¨" + +#: catalog/heap.c:498 +#, c-format +msgid "column \"%s\" has type \"unknown\"" +msgstr "\"%s\" ì—´ì˜ ìžë£Œí˜•ì´ \"unknown\" 입니다" + +#: catalog/heap.c:499 +#, c-format +msgid "Proceeding with relation creation anyway." +msgstr "관계 ìž‘ì„±ì„ ê³„ì†í•©ë‹ˆë‹¤." + +#: catalog/heap.c:512 +#, c-format +msgid "column \"%s\" has pseudo-type %s" +msgstr "\"%s\" ì—´ì€ %s ì˜ì‚¬ ìžë£Œí˜•(pseudo-type)ì„ ì‚¬ìš©í•©ë‹ˆë‹¤" + +#: catalog/heap.c:542 +#, c-format +msgid "composite type %s cannot be made a member of itself" +msgstr "%s 복합 ìžë£Œí˜•ì€ ìžê¸° ìžì‹ ì˜ 구성ì›ìœ¼ë¡œ 만들 수 ì—†ìŒ" + +#: catalog/heap.c:584 commands/createas.c:201 commands/createas.c:498 +#, c-format +msgid "no collation was derived for column \"%s\" with collatable type %s" +msgstr "" +"column \"%s\" ì¹¼ëŸ¼ì— ì‚¬ìš©í•˜ëŠ” %s ìžë£Œí˜•ì—서 사용할 ì •ë ¬ê·œì¹™ì„ ê²°ì •í•  수 없습" +"니다." + +#: catalog/heap.c:586 commands/createas.c:204 commands/createas.c:501 +#: commands/indexcmds.c:1133 commands/view.c:103 regex/regc_pg_locale.c:262 +#: utils/adt/formatting.c:1513 utils/adt/formatting.c:1565 +#: utils/adt/formatting.c:1633 utils/adt/formatting.c:1685 +#: utils/adt/formatting.c:1754 utils/adt/formatting.c:1818 +#: utils/adt/like.c:213 utils/adt/selfuncs.c:5334 utils/adt/varlena.c:1421 +#: utils/adt/varlena.c:1826 +#, c-format +msgid "Use the COLLATE clause to set the collation explicitly." +msgstr "명시ì ìœ¼ë¡œ ì •ë ¬ ê·œì¹™ì„ ì§€ì •í•˜ë ¤ë©´ COLLATE ì ˆì„ ì‚¬ìš©í•˜ì„¸ìš”." + +#: catalog/heap.c:1067 catalog/index.c:792 commands/tablecmds.c:2623 +#, c-format +msgid "relation \"%s\" already exists" +msgstr "\"%s\" ì´ë¦„ì˜ ë¦´ë ˆì´ì…˜(relation)ì´ ì´ë¯¸ 있습니다" + +#: catalog/heap.c:1083 catalog/pg_type.c:412 catalog/pg_type.c:722 +#: commands/typecmds.c:237 commands/typecmds.c:784 commands/typecmds.c:1135 +#: commands/typecmds.c:1357 commands/typecmds.c:2113 +#, c-format +msgid "type \"%s\" already exists" +msgstr "\"%s\" ìžë£Œí˜•ì´ ì´ë¯¸ 있습니다" + +#: catalog/heap.c:1084 +#, c-format +msgid "" +"A relation has an associated type of the same name, so you must use a name " +"that doesn't conflict with any existing type." +msgstr "" +"í•˜ë‚˜ì˜ ë¦´ë ˆì´ì…˜ì€ ê·¸ ì´ë¦„ê³¼ ê°™ì€ ìžë£Œí˜•ê³¼ 관계합니다. 그래서, ì´ë¯¸ ê°™ì€ ì´ë¦„" +"ì˜ ìžë£Œí˜•ì´ ìžˆë‹¤ë©´ 해당 릴레ì´ì…˜ì„ 만들 수 없습니다. 다른 ì´ë¦„ì„ ì‚¬ìš©í•˜ì„¸ìš”." + +#: catalog/heap.c:1112 +#, c-format +msgid "pg_class heap OID value not set when in binary upgrade mode" +msgstr "ì´ì§„ 업그레ì´ë“œ 작업 때, pg_class ìžë£Œ OID ê°’ì´ ì§€ì •ë˜ì§€ 않았습니다" + +#: catalog/heap.c:2291 +#, c-format +msgid "check constraint \"%s\" already exists" +msgstr "\"%s\" ì´ë¦„ì˜ ì²´í¬ ì œì•½ ì¡°ê±´ì´ ì´ë¯¸ 있습니다" + +#: catalog/heap.c:2456 catalog/pg_constraint.c:654 commands/tablecmds.c:6069 +#, c-format +msgid "constraint \"%s\" for relation \"%s\" already exists" +msgstr "" +"\"%s\" 제약 ì¡°ê±´ì´ ì´ë¯¸ \"%s\" 릴레ì´ì…˜(relation)ì—서 사용ë˜ê³  있습니다" + +#: catalog/heap.c:2463 +#, c-format +msgid "" +"constraint \"%s\" conflicts with non-inherited constraint on relation \"%s\"" +msgstr "" +"\"%s\" 제약 ì¡°ê±´ì´ ë¹„ìƒì† 제약 ì¡°ê±´ê³¼ ì¶©ëŒí•©ë‹ˆë‹¤, 해당 릴레ì´ì…˜: \"%s\"" + +#: catalog/heap.c:2474 +#, c-format +msgid "" +"constraint \"%s\" conflicts with inherited constraint on relation \"%s\"" +msgstr "\"%s\" 제약 ì¡°ê±´ì´ ìƒì† 제약 ì¡°ê±´ê³¼ ì¶©ëŒí•©ë‹ˆë‹¤, 해당 릴레ì´ì…˜: \"%s\"" + +#: catalog/heap.c:2484 +#, c-format +msgid "" +"constraint \"%s\" conflicts with NOT VALID constraint on relation \"%s\"" +msgstr "" +"\"%s\" 제약 ì¡°ê±´ì´ NOT VALID 제약 ì¡°ê±´ê³¼ ì¶©ëŒí•©ë‹ˆë‹¤, 해당 릴레ì´ì…˜: \"%s\"" + +#: catalog/heap.c:2489 +#, c-format +msgid "merging constraint \"%s\" with inherited definition" +msgstr "\"%s\" 제약 ì¡°ê±´ì„ ìƒì†ëœ ì •ì˜ì™€ 병합하는 중" + +#: catalog/heap.c:2595 +#, c-format +msgid "cannot use column references in default expression" +msgstr "default 표현ì‹ì—서는 ì—´ reference를 사용할 수 ì—†ìŒ" + +#: catalog/heap.c:2606 +#, c-format +msgid "default expression must not return a set" +msgstr "default 표현ì‹ì€ í•˜ë‚˜ì˜ setì„ ë°˜í™˜í•˜ë©´ 안ë©ë‹ˆë‹¤" + +#: catalog/heap.c:2625 rewrite/rewriteHandler.c:1084 +#, c-format +msgid "column \"%s\" is of type %s but default expression is of type %s" +msgstr "" +"\"%s\" ì—´ì˜ ìžë£Œí˜•ì€ %s ì¸ë°, default 표현ì‹ì—서는 %s ìžë£Œí˜•ì„ ì‚¬ìš©í–ˆìŠµë‹ˆë‹¤" + +#: catalog/heap.c:2630 commands/prepare.c:374 parser/parse_node.c:428 +#: parser/parse_target.c:539 parser/parse_target.c:789 +#: parser/parse_target.c:799 rewrite/rewriteHandler.c:1089 +#, c-format +msgid "You will need to rewrite or cast the expression." +msgstr "다시 ì •ì˜í•˜ê±°ë‚˜ 형변화ìžë¥¼ 사용해보십시오" + +#: catalog/heap.c:2677 +#, c-format +msgid "only table \"%s\" can be referenced in check constraint" +msgstr "\"%s\" í…Œì´ë¸”ë§Œì´ ì²´í¬ ì œì•½ ì¡°ê±´ì—서 ì°¸ì¡°ë  ìˆ˜ 있습니다" + +#: catalog/heap.c:2917 +#, c-format +msgid "unsupported ON COMMIT and foreign key combination" +msgstr "ON COMMIT ë° ì™¸ëž˜ 키 ì¡°í•©ì´ ì§€ì›ë˜ì§€ 않ìŒ" + +#: catalog/heap.c:2918 +#, c-format +msgid "" +"Table \"%s\" references \"%s\", but they do not have the same ON COMMIT " +"setting." +msgstr "" +"\"%s\" í…Œì´ë¸”ì—서 \"%s\" í…Œì´ë¸”ì„ ì°¸ì¡°í•˜ëŠ”ë° ON COMMIT ì„¤ì •ì´ ê°™ì§€ 않습니다." + +#: catalog/heap.c:2923 +#, c-format +msgid "cannot truncate a table referenced in a foreign key constraint" +msgstr "" +"_^_ í…Œì´ë¸” ë‚´ìš©ì„ ëª¨ë‘ ì‚­ì œí•  수 ì—†ìŒ, 참조키(foreign key) 제약 ì¡°ê±´ 안ì—서" + +#: catalog/heap.c:2924 +#, c-format +msgid "Table \"%s\" references \"%s\"." +msgstr "\"%s\" í…Œì´ë¸”ì€ \"%s\" ê°ì²´ë¥¼ 참조합니다." + +#: catalog/heap.c:2926 +#, c-format +msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." +msgstr "" +"\"%s\" í…Œì´ë¸”ë„ í•¨ê»˜ ìžë£Œë¥¼ 지우거나, TRUNCATE ... CASCADE êµ¬ë¬¸ì„ ì‚¬ìš©í•˜ì„¸ìš”." + +#: catalog/index.c:210 parser/parse_utilcmd.c:1473 parser/parse_utilcmd.c:1559 +#, c-format +msgid "multiple primary keys for table \"%s\" are not allowed" +msgstr "\"%s\" í…Œì´ë¸”ì—는 ì´ë¯¸ 기본키가 있습니다" + +#: catalog/index.c:228 +#, c-format +msgid "primary keys cannot be expressions" +msgstr "기본기(primary key)를 표현할 수 ì—†ìŒ" + +#: catalog/index.c:742 catalog/index.c:1160 +#, c-format +msgid "user-defined indexes on system catalog tables are not supported" +msgstr "시스템 카탈로그 í…Œì´ë¸”ì—는 ì‚¬ìš©ìž ì •ì˜ ì¸ë±ìŠ¤ë¥¼ 지정할 수 없습니다" + +#: catalog/index.c:752 +#, c-format +msgid "concurrent index creation on system catalog tables is not supported" +msgstr "시스템 카탈로그 í…Œì´ë¸”ì—서 공존하는 ì¸ë±ìФ 만들기는 ì§€ì›í•˜ì§€ 않습니다" + +#: catalog/index.c:770 +#, c-format +msgid "shared indexes cannot be created after initdb" +msgstr "" +"공유ë˜ëŠ” ì¸ë±ìŠ¤ë“¤ì€ initdb 명령으로 ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ë¥¼ 만든 다ìŒì—는 ë§Œ" +"들 수 없습니다" + +#: catalog/index.c:784 commands/createas.c:249 commands/sequence.c:141 +#: parser/parse_utilcmd.c:191 +#, c-format +msgid "relation \"%s\" already exists, skipping" +msgstr "\"%s\" ì´ë¦„ì˜ ë¦´ë ˆì´ì…˜(relation)ì´ ì´ë¯¸ 있습니다, 건너뜀" + +#: catalog/index.c:820 +#, c-format +msgid "pg_class index OID value not set when in binary upgrade mode" +msgstr "ì´ì§„ 업그레ì´ë“œ 작업 때, pg_class ì¸ë±ìФ OID ê°’ì´ ì§€ì •ë˜ì§€ 않았습니다" + +#: catalog/index.c:1422 +#, c-format +msgid "DROP INDEX CONCURRENTLY must be first action in transaction" +msgstr "DROP INDEX CONCURRENTLY ëª…ë ¹ì€ íŠ¸ëžœìž­ì…˜ ë‚´ 가장 처ìŒì— 있어야 합니다" + +#: catalog/index.c:2004 +#, c-format +msgid "building index \"%s\" on table \"%s\"" +msgstr "\"%s\" ì¸ë±ìŠ¤ë¥¼ \"%s\" í…Œì´ë¸”ì—서 만드는 중" + +#: catalog/index.c:3322 +#, c-format +msgid "cannot reindex temporary tables of other sessions" +msgstr "임시 í…Œì´ë¸”ì˜ ì¸ë±ìФ 재ìƒì„± ìž‘ì—…ì€ ë‹¤ë¥¸ 세션ì—서 í•  수 ì—†ìŒ" + +#: catalog/index.c:3454 +#, c-format +msgid "index \"%s\" was reindexed" +msgstr "\"%s\" ì¸ë±ìŠ¤ê°€ 다시 만들어졌ìŒ" + +#: catalog/index.c:3456 commands/vacuumlazy.c:1338 commands/vacuumlazy.c:1414 +#: commands/vacuumlazy.c:1603 commands/vacuumlazy.c:1813 +#, c-format +msgid "%s." +msgstr "%s." + +#: catalog/namespace.c:249 catalog/namespace.c:447 catalog/namespace.c:541 +#: commands/trigger.c:4523 +#, c-format +msgid "cross-database references are not implemented: \"%s.%s.%s\"" +msgstr "서로 다른 ë°ì´í„°ë² ì´ìŠ¤ê°„ì˜ ì°¸ì¡°ëŠ” 구현ë˜ì–´ìžˆì§€ 않습니다: \"%s.%s.%s\"" + +#: catalog/namespace.c:306 +#, c-format +msgid "temporary tables cannot specify a schema name" +msgstr "임시 í…Œì´ë¸”ì€ ìŠ¤í‚¤ë§ˆ ì´ë¦„ì„ ì§€ì •í•  수 ì—†ìŒ" + +#: catalog/namespace.c:385 +#, c-format +msgid "could not obtain lock on relation \"%s.%s\"" +msgstr "\"%s.%s\" 릴레ì´ì…˜ì˜ 잠금 정보를 구할 수 ì—†ìŒ" + +#: catalog/namespace.c:390 commands/lockcmds.c:146 +#, c-format +msgid "could not obtain lock on relation \"%s\"" +msgstr "\"%s\" 릴레ì´ì…˜ì˜ 잠금 정보를 구할 수 ì—†ìŒ" + +#: catalog/namespace.c:414 parser/parse_relation.c:1138 +#, c-format +msgid "relation \"%s.%s\" does not exist" +msgstr "\"%s.%s\" ì´ë¦„ì˜ ë¦´ë ˆì´ì…˜(relation)ì´ ì—†ìŠµë‹ˆë‹¤" + +#: catalog/namespace.c:419 parser/parse_relation.c:1151 +#: parser/parse_relation.c:1159 utils/adt/regproc.c:1034 +#, c-format +msgid "relation \"%s\" does not exist" +msgstr "\"%s\" ì´ë¦„ì˜ ë¦´ë ˆì´ì…˜(relation)ì´ ì—†ìŠµë‹ˆë‹¤" + +#: catalog/namespace.c:487 catalog/namespace.c:2841 commands/extension.c:1383 +#: commands/extension.c:1389 +#, c-format +msgid "no schema has been selected to create in" +msgstr "ì„ íƒëœ 스키마 ì—†ìŒ, 대ìƒ:" + +#: catalog/namespace.c:639 catalog/namespace.c:652 +#, c-format +msgid "cannot create relations in temporary schemas of other sessions" +msgstr "다른 ì„¸ì…˜ì˜ ìž„ì‹œ 스키마 안ì—는 릴레ì´ì…˜ì„ 만들 수 ì—†ìŒ" + +#: catalog/namespace.c:643 +#, c-format +msgid "cannot create temporary relation in non-temporary schema" +msgstr "임시 스키마가 아닌 ìŠ¤í‚¤ë§ˆì— ìž„ì‹œ 릴레ì´ì…˜ì„ 만들 수 ì—†ìŒ" + +#: catalog/namespace.c:658 +#, c-format +msgid "only temporary relations may be created in temporary schemas" +msgstr "임시 스키마 안ì—는 임시 릴레ì´ì…˜ë§Œ 만들 수 있ìŒ" + +#: catalog/namespace.c:2154 +#, c-format +msgid "text search parser \"%s\" does not exist" +msgstr "\"%s\" 전문 검색 파서가 ì—†ìŒ" + +#: catalog/namespace.c:2280 +#, c-format +msgid "text search dictionary \"%s\" does not exist" +msgstr "\"%s\" 전문 검색 ì‚¬ì „ì´ ì—†ìŒ" + +#: catalog/namespace.c:2407 +#, c-format +msgid "text search template \"%s\" does not exist" +msgstr "\"%s\" 전문 검색 í…œí”Œë¦¿ì´ ì—†ìŒ" + +#: catalog/namespace.c:2533 commands/tsearchcmds.c:1197 +#: utils/cache/ts_cache.c:611 +#, c-format +msgid "text search configuration \"%s\" does not exist" +msgstr "\"%s\" 전문 검색 êµ¬ì„±ì´ ì—†ìŒ" + +#: catalog/namespace.c:2646 parser/parse_expr.c:792 parser/parse_target.c:1141 +#, c-format +msgid "cross-database references are not implemented: %s" +msgstr "서로 다른 ë°ì´í„°ë² ì´ìŠ¤ê°„ì˜ ì°¸ì¡°ëŠ” 구현ë˜ì–´ìžˆì§€ 않습니다: %s" + +#: catalog/namespace.c:2652 parser/parse_expr.c:799 parser/parse_target.c:1148 +#: gram.y:13454 gram.y:14823 +#, c-format +msgid "improper qualified name (too many dotted names): %s" +msgstr "ì ë‹¹í•˜ì§€ ì•Šì€ qualified ì´ë¦„ 입니다 (너무 ë§Žì€ ì ì´ 있네요): %s" + +#: catalog/namespace.c:2783 +#, c-format +msgid "cannot move objects into or out of temporary schemas" +msgstr "임시 스키마로(ì—서) ê°ì²´ë¥¼ ì´ë™í•  수 없습니다" + +#: catalog/namespace.c:2789 +#, c-format +msgid "cannot move objects into or out of TOAST schema" +msgstr "TOAST 스키마로(ì—서) ê°ì²´ë¥¼ ì´ë™í•  수 없습니다" + +#: catalog/namespace.c:2862 commands/schemacmds.c:238 +#: commands/schemacmds.c:317 commands/tablecmds.c:741 +#, c-format +msgid "schema \"%s\" does not exist" +msgstr "\"%s\" 스키마(schema) ì—†ìŒ" + +#: catalog/namespace.c:2893 +#, c-format +msgid "improper relation name (too many dotted names): %s" +msgstr "" +"ì ë‹¹í•˜ì§€ ì•Šì€ ë¦´ë ˆì´ì…˜(relation) ì´ë¦„ 입니다 (너무 ë§Žì€ ì ì´ 있네요): %s" + +#: catalog/namespace.c:3403 +#, c-format +msgid "collation \"%s\" for encoding \"%s\" does not exist" +msgstr "\"%s\" 정렬정ì˜(collation)ê°€ \"%s\" ì¸ì½”딩ì—서는 쓸 수 ì—†ìŒ" + +#: catalog/namespace.c:3458 +#, c-format +msgid "conversion \"%s\" does not exist" +msgstr "\"%s\" 문ìžì½”드변환규칙(conversion) ì—†ìŒ" + +#: catalog/namespace.c:3666 +#, c-format +msgid "permission denied to create temporary tables in database \"%s\"" +msgstr "\"%s\" ë°ì´í„°ë² ì´ìФì—서 임시 파ì¼ì„ 만들 ê¶Œí•œì´ ì—†ìŒ" + +#: catalog/namespace.c:3682 +#, c-format +msgid "cannot create temporary tables during recovery" +msgstr "복구 작업 중ì—는 임시 í…Œì´ë¸”ì„ ë§Œë“¤ 수 ì—†ìŒ" + +#: catalog/namespace.c:3688 +#, c-format +msgid "cannot create temporary tables in parallel mode" +msgstr "병렬 모드ì—서는 임시 í…Œì´ë¸”ì„ ë§Œë“¤ 수 ì—†ìŒ" + +#: catalog/namespace.c:3932 commands/tablespace.c:1173 commands/variable.c:63 +#: utils/misc/guc.c:9875 +#, c-format +msgid "List syntax is invalid." +msgstr "ëª©ë¡ ë¬¸ë²•ì´ í‹€ë ¸ìŠµë‹ˆë‹¤." + +#: catalog/objectaddress.c:1065 +msgid "access method name cannot be qualified" +msgstr "ì ‘ê·¼ 방법 ì´ë¦„ì´ ì ë‹¹ì¹˜ 않습니다" + +#: catalog/objectaddress.c:1068 +msgid "database name cannot be qualified" +msgstr "ë°ì´í„°ë² ì´ìФ ì´ë¦„ì´ ì ë‹¹ì¹˜ 않습니다" + +#: catalog/objectaddress.c:1071 commands/extension.c:2507 +#, c-format +msgid "extension name cannot be qualified" +msgstr "확장 모듈 ì´ë¦„으로 ì ë‹¹í•˜ì§€ 않습니다" + +#: catalog/objectaddress.c:1074 +msgid "tablespace name cannot be qualified" +msgstr "í…Œì´ë¸”스페ì´ìФ ì´ë¦„으로 ì ë‹¹í•˜ì§€ 않습니다" + +#: catalog/objectaddress.c:1077 +msgid "role name cannot be qualified" +msgstr "롤(role)ì´ë¦„으로 ì ë‹¹í•˜ì§€ 않습니다" + +#: catalog/objectaddress.c:1080 +msgid "schema name cannot be qualified" +msgstr "스키마 ì´ë¦„ì´ ì ë‹¹ì¹˜ 않습니다" + +#: catalog/objectaddress.c:1083 +msgid "language name cannot be qualified" +msgstr "프로시주얼 언어 ì´ë¦„ì´ ì ë‹¹ì¹˜ 않습니다" + +#: catalog/objectaddress.c:1086 +msgid "foreign-data wrapper name cannot be qualified" +msgstr "외부ìžë£Œ ëž©í¼ ì´ë¦„ì´ ì ë‹¹ì¹˜ 않습니다" + +#: catalog/objectaddress.c:1089 +msgid "server name cannot be qualified" +msgstr "서버 ì´ë¦„으로 ì ë‹¹í•˜ì§€ 않습니다" + +#: catalog/objectaddress.c:1092 +msgid "event trigger name cannot be qualified" +msgstr "ì´ë²¤íЏ 트리거 ì´ë¦„ì´ ì ë‹¹ì¹˜ 않습니다" + +#: catalog/objectaddress.c:1210 commands/lockcmds.c:94 commands/policy.c:94 +#: commands/policy.c:382 commands/policy.c:471 commands/tablecmds.c:218 +#: commands/tablecmds.c:1300 commands/tablecmds.c:4347 +#: commands/tablecmds.c:8017 +#, c-format +msgid "\"%s\" is not a table" +msgstr "\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”ì´ ì•„ë‹˜" + +#: catalog/objectaddress.c:1217 commands/tablecmds.c:230 +#: commands/tablecmds.c:4377 commands/tablecmds.c:12159 commands/view.c:141 +#, c-format +msgid "\"%s\" is not a view" +msgstr "\"%s\" ê°ì²´ëŠ” ë·°ê°€ 아님" + +#: catalog/objectaddress.c:1224 commands/matview.c:174 +#: commands/tablecmds.c:236 commands/tablecmds.c:12164 +#, c-format +msgid "\"%s\" is not a materialized view" +msgstr "\"%s\" ê°ì²´ëŠ” êµ¬ì²´í™”ëœ ë·°(materialized view)ê°€ 아닙니다" + +#: catalog/objectaddress.c:1231 commands/tablecmds.c:254 +#: commands/tablecmds.c:4380 commands/tablecmds.c:12169 +#, c-format +msgid "\"%s\" is not a foreign table" +msgstr "\"%s\" ê°ì²´ëŠ” 외부 í…Œì´ë¸”ì´ ì•„ë‹˜" + +#: catalog/objectaddress.c:1376 catalog/objectaddress.c:1429 +#, c-format +msgid "column name must be qualified" +msgstr "칼럼 ì´ë¦„으로 ì ë‹¹í•˜ì§€ 않습니다" + +#: catalog/objectaddress.c:1472 +#, c-format +msgid "default value for column \"%s\" of relation \"%s\" does not exist" +msgstr "\"%s\" 칼럼(해당 릴레ì´ì…˜: \"%s\")ì˜ ê¸°ë³¸ê°’ì„ ì§€ì •í•˜ì§€ 않았ìŒ" + +#: catalog/objectaddress.c:1512 commands/functioncmds.c:128 +#: commands/tablecmds.c:246 commands/typecmds.c:3214 parser/parse_type.c:226 +#: parser/parse_type.c:255 parser/parse_type.c:795 utils/adt/acl.c:4374 +#: utils/adt/regproc.c:1225 +#, c-format +msgid "type \"%s\" does not exist" +msgstr "\"%s\" ìžë£Œí˜• ì—†ìŒ" + +#: catalog/objectaddress.c:1629 +#, c-format +msgid "operator %d (%s, %s) of %s does not exist" +msgstr "%d (%s, %s) ì—°ì‚°ìž(ëŒ€ìƒ %s) ì—†ìŒ" + +#: catalog/objectaddress.c:1658 +#, c-format +msgid "function %d (%s, %s) of %s does not exist" +msgstr "%d (%s, %s) 함수(ëŒ€ìƒ %s) ì—†ìŒ" + +#: catalog/objectaddress.c:1707 catalog/objectaddress.c:1733 +#, c-format +msgid "user mapping for user \"%s\" on server \"%s\" does not exist" +msgstr "\"%s\" 사용ìžì— 대한 ì‚¬ìš©ìž ë§µí•‘ ì •ë³´(ëŒ€ìƒ ì„œë²„: \"%s\")ê°€ ì—†ìŒ" + +#: catalog/objectaddress.c:1722 commands/foreigncmds.c:430 +#: commands/foreigncmds.c:997 commands/foreigncmds.c:1359 +#: foreign/foreign.c:692 +#, c-format +msgid "server \"%s\" does not exist" +msgstr "\"%s\" ì´ë¦„ì˜ ì„œë²„ê°€ ì—†ìŒ" + +#: catalog/objectaddress.c:1794 +#, c-format +msgid "unrecognized default ACL object type %c" +msgstr "알 수 없는 기본 ACL ê°ì²´ 타입 %c" + +#: catalog/objectaddress.c:1795 +#, c-format +msgid "Valid object types are \"r\", \"S\", \"f\", and \"T\"." +msgstr "유효한 ê°ì²´ 형태는 \"r\", \"S\", \"f\", \"T\"." + +#: catalog/objectaddress.c:1841 +#, c-format +msgid "default ACL for user \"%s\" in schema \"%s\" on %s does not exist" +msgstr "\"%s\" 사용ìžìš© 기본 ACL ì—†ìŒ. (해당 스키마: \"%s\", 해당 ê°ì²´: %s)" + +#: catalog/objectaddress.c:1846 +#, c-format +msgid "default ACL for user \"%s\" on %s does not exist" +msgstr "\"%s\" 사용ìžìš© 기본 ACL ì—†ìŒ. (해당 ê°ì²´: %s)" + +#: catalog/objectaddress.c:1873 catalog/objectaddress.c:1929 +#: catalog/objectaddress.c:1984 +#, c-format +msgid "name or argument lists may not contain nulls" +msgstr "ì´ë¦„ì´ë‚˜ ì¸ìž 목ë¡ì—는 nullì´ í¬í•¨ë˜ì§€ 않아야 함" + +#: catalog/objectaddress.c:1905 +#, c-format +msgid "unsupported object type \"%s\"" +msgstr "\"%s\" 형 ì§€ì›í•˜ì§€ 않ìŒ" + +#: catalog/objectaddress.c:1925 catalog/objectaddress.c:1943 +#, c-format +msgid "name list length must be exactly %d" +msgstr "ì´ë¦„ ëª©ë¡ ê¸¸ì´ëŠ” %d ì´ì–´ì•¼ 합니다." + +#: catalog/objectaddress.c:1947 +#, c-format +msgid "large object OID may not be null" +msgstr "대형 ê°ì²´ OID는 null ê°’ì„ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: catalog/objectaddress.c:1956 catalog/objectaddress.c:2016 +#: catalog/objectaddress.c:2023 +#, c-format +msgid "name list length must be at least %d" +msgstr "ì´ë¦„ ëª©ë¡ ê¸¸ì´ëŠ” ì ì–´ë„ %d ê°œ ì´ìƒì´ì–´ì•¼ 함" + +#: catalog/objectaddress.c:2009 catalog/objectaddress.c:2029 +#, c-format +msgid "argument list length must be exactly %d" +msgstr "ì¸ìž 목ë¡ì€ %d 개여야 함" + +#: catalog/objectaddress.c:2165 libpq/be-fsstubs.c:350 +#, c-format +msgid "must be owner of large object %u" +msgstr "%u 대경 ê°ì²´ì˜ 소유주여야만 합니다" + +#: catalog/objectaddress.c:2180 commands/functioncmds.c:1426 +#, c-format +msgid "must be owner of type %s or type %s" +msgstr "%s, %s ìžë£Œí˜•ì˜ ì†Œìœ ì£¼ì—¬ì•¼í•©ë‹ˆë‹¤" + +#: catalog/objectaddress.c:2220 catalog/objectaddress.c:2237 +#, c-format +msgid "must be superuser" +msgstr "슈í¼ìœ ì ¸ì—¬ì•¼í•¨" + +#: catalog/objectaddress.c:2227 +#, c-format +msgid "must have CREATEROLE privilege" +msgstr "CREATEROLE ê¶Œí•œì´ ìžˆì–´ì•¼ 함" + +#: catalog/objectaddress.c:2302 +#, c-format +msgid "unrecognized object type \"%s\"" +msgstr "알 수 없는 ê°ì²´ 형태 \"%s\"" + +#: catalog/objectaddress.c:2497 +#, c-format +msgid " column %s" +msgstr " %s ì—´" + +#: catalog/objectaddress.c:2503 +#, c-format +msgid "function %s" +msgstr "%s 함수" + +#: catalog/objectaddress.c:2508 +#, c-format +msgid "type %s" +msgstr "%s ìžë£Œí˜•" + +#: catalog/objectaddress.c:2538 +#, c-format +msgid "cast from %s to %s" +msgstr "%s ìžë£Œí˜•ì„ %s ìžë£Œí˜•으로 바꾸는 작업" + +#: catalog/objectaddress.c:2558 +#, c-format +msgid "collation %s" +msgstr "collation %s" + +#: catalog/objectaddress.c:2582 +#, c-format +msgid "constraint %s on %s" +msgstr "%s 제약 ì¡°ê±´(해당 ê°ì²´: %s)" + +#: catalog/objectaddress.c:2588 +#, c-format +msgid "constraint %s" +msgstr "%s 제약 ì¡°ê±´" + +#: catalog/objectaddress.c:2605 +#, c-format +msgid "conversion %s" +msgstr "%s 문ìžì½”드변환규칙" + +#: catalog/objectaddress.c:2642 +#, c-format +msgid "default for %s" +msgstr "default for %s" + +#: catalog/objectaddress.c:2651 +#, c-format +msgid "language %s" +msgstr "프로시주얼 언어 %s" + +#: catalog/objectaddress.c:2656 +#, c-format +msgid "large object %u" +msgstr "%u 대형 ê°ì²´" + +#: catalog/objectaddress.c:2661 +#, c-format +msgid "operator %s" +msgstr "%s ì—°ì‚°ìž" + +#: catalog/objectaddress.c:2693 +#, c-format +msgid "operator class %s for access method %s" +msgstr "%s ì—°ì‚°ìž í´ëž˜ìФ, %s ì¸ë±ìФ 액세스 방법" + +#. translator: %d is the operator strategy (a number), the +#. first two %s's are data type names, the third %s is the +#. description of the operator family, and the last %s is the +#. textual form of the operator with arguments. +#: catalog/objectaddress.c:2743 +#, c-format +msgid "operator %d (%s, %s) of %s: %s" +msgstr "%d (%s, %s) ì—°ì‚°ìž (ì—°ì‚°ìž ê°€ì¡±: %s): %s" + +#. translator: %d is the function number, the first two %s's +#. are data type names, the third %s is the description of the +#. operator family, and the last %s is the textual form of the +#. function with arguments. +#: catalog/objectaddress.c:2793 +#, c-format +msgid "function %d (%s, %s) of %s: %s" +msgstr "%d (%s, %s) 함수 (ì—°ì‚°ìž ê°€ì¡±: %s): %s" + +#: catalog/objectaddress.c:2833 +#, c-format +msgid "rule %s on " +msgstr "%s 룰(rule), 해당 í…Œì´ë¸”: " + +#: catalog/objectaddress.c:2855 +#, c-format +msgid "transform for %s language %s" +msgstr "%s 형 변환ìž, 대ìƒì–¸ì–´: %s" + +#: catalog/objectaddress.c:2889 +#, c-format +msgid "trigger %s on " +msgstr "%s 트리거, 해당 í…Œì´ë¸”: " + +#: catalog/objectaddress.c:2906 +#, c-format +msgid "schema %s" +msgstr "%s 스키마" + +#: catalog/objectaddress.c:2919 +#, c-format +msgid "text search parser %s" +msgstr "%s 전문 검색 파서" + +#: catalog/objectaddress.c:2934 +#, c-format +msgid "text search dictionary %s" +msgstr "%s 전문 검색 사전" + +#: catalog/objectaddress.c:2949 +#, c-format +msgid "text search template %s" +msgstr "%s 전문 검색 템플릿" + +#: catalog/objectaddress.c:2964 +#, c-format +msgid "text search configuration %s" +msgstr "%s 전문 검색 구성" + +#: catalog/objectaddress.c:2972 +#, c-format +msgid "role %s" +msgstr "%s 롤" + +#: catalog/objectaddress.c:2985 +#, c-format +msgid "database %s" +msgstr "%s ë°ì´í„°ë² ì´ìФ" + +#: catalog/objectaddress.c:2997 +#, c-format +msgid "tablespace %s" +msgstr "%s í…Œì´ë¸”스페ì´ìФ" + +#: catalog/objectaddress.c:3006 +#, c-format +msgid "foreign-data wrapper %s" +msgstr "%s 외부 ë°ì´í„° 래í¼" + +#: catalog/objectaddress.c:3015 +#, c-format +msgid "server %s" +msgstr "%s 서버" + +#: catalog/objectaddress.c:3043 +#, c-format +msgid "user mapping for %s on server %s" +msgstr "%sì— ëŒ€í•œ ì‚¬ìš©ìž ë§¤í•‘, 해당 서버: %s" + +#: catalog/objectaddress.c:3078 +#, c-format +msgid "default privileges on new relations belonging to role %s" +msgstr "%s ë¡¤ì´ ìƒˆ í…Œì´ë¸”ì„ ë§Œë“¤ 때 기본ì ìœ¼ë¡œ 지정할 ì ‘ê·¼ 권한" + +#: catalog/objectaddress.c:3083 +#, c-format +msgid "default privileges on new sequences belonging to role %s" +msgstr "%s ë¡¤ì´ ìƒˆ 시퀀스를 만들 때 기본ì ìœ¼ë¡œ 지정할 ì ‘ê·¼ 권한" + +#: catalog/objectaddress.c:3088 +#, c-format +msgid "default privileges on new functions belonging to role %s" +msgstr "%s ë¡¤ì´ ìƒˆ 함수를 만들 때 기본ì ìœ¼ë¡œ 지정할 ì ‘ê·¼ 권한" + +#: catalog/objectaddress.c:3093 +#, c-format +msgid "default privileges on new types belonging to role %s" +msgstr "%s ë¡¤ì´ ìƒˆ ìžë£Œí˜•ì„ ë§Œë“¤ 때 기본ì ìœ¼ë¡œ 지정할 ì ‘ê·¼ 권한" + +#: catalog/objectaddress.c:3099 +#, c-format +msgid "default privileges belonging to role %s" +msgstr "%s ë¡¤ì˜ ê¸°ë³¸ ì ‘ê·¼ 권한" + +#: catalog/objectaddress.c:3107 +#, c-format +msgid " in schema %s" +msgstr ", ëŒ€ìƒ ìŠ¤í‚¤ë§ˆ: %s" + +#: catalog/objectaddress.c:3124 +#, c-format +msgid "extension %s" +msgstr "%s 확장 모듈" + +#: catalog/objectaddress.c:3137 +#, c-format +msgid "event trigger %s" +msgstr "%s ì´ë²¤íЏ 트리거" + +#: catalog/objectaddress.c:3169 +#, c-format +msgid "policy %s on " +msgstr "%s ì •ì±… " + +#: catalog/objectaddress.c:3187 +#, c-format +msgid "access method %s" +msgstr "%s ì ‘ê·¼ 방법" + +#: catalog/objectaddress.c:3247 +#, c-format +msgid "table %s" +msgstr "%s í…Œì´ë¸”" + +#: catalog/objectaddress.c:3251 +#, c-format +msgid "index %s" +msgstr "%s ì¸ë±ìФ" + +#: catalog/objectaddress.c:3255 +#, c-format +msgid "sequence %s" +msgstr "%s 시퀀스" + +#: catalog/objectaddress.c:3259 +#, c-format +msgid "toast table %s" +msgstr "%s 토스트 í…Œì´ë¸”" + +#: catalog/objectaddress.c:3263 +#, c-format +msgid "view %s" +msgstr "%s ë·°" + +#: catalog/objectaddress.c:3267 +#, c-format +msgid "materialized view %s" +msgstr "%s êµ¬ì²´í™”ëœ ë·°" + +#: catalog/objectaddress.c:3271 +#, c-format +msgid "composite type %s" +msgstr "%s 복합 ìžë£Œí˜•" + +#: catalog/objectaddress.c:3275 +#, c-format +msgid "foreign table %s" +msgstr "%s 외부 í…Œì´ë¸”" + +#: catalog/objectaddress.c:3280 +#, c-format +msgid "relation %s" +msgstr "%s 릴레ì´ì…˜" + +#: catalog/objectaddress.c:3317 +#, c-format +msgid "operator family %s for access method %s" +msgstr "%s ì—°ì‚°ìž íŽ˜ë°€ë¦¬, ì ‘ê·¼ 방법: %s" + +#: catalog/pg_aggregate.c:125 +#, c-format +msgid "aggregates cannot have more than %d argument" +msgid_plural "aggregates cannot have more than %d arguments" +msgstr[0] "집계 함수ì—는 %dê°œ ì´ìƒì˜ ì¸ìžë¥¼ 사용할 수 ì—†ìŒ" + +#: catalog/pg_aggregate.c:148 catalog/pg_aggregate.c:158 +#, c-format +msgid "cannot determine transition data type" +msgstr "처리할(변환할) ìžë£Œí˜•ì„ ê²°ì •í•  수 ì—†ìŒ" + +#: catalog/pg_aggregate.c:149 catalog/pg_aggregate.c:159 +#, c-format +msgid "" +"An aggregate using a polymorphic transition type must have at least one " +"polymorphic argument." +msgstr "" +"다형 변환 형ì‹ì„ 사용하는 집계ì—는 다형 ì¸ìžê°€ 하나 ì´ìƒ 있어야 합니다." + +#: catalog/pg_aggregate.c:172 +#, c-format +msgid "a variadic ordered-set aggregate must use VARIADIC type ANY" +msgstr "variadic 순서있는 세트 집계함수는 VARIADIC ANY í˜•ì„ ì‚¬ìš©í•´ì•¼ 합니다" + +#: catalog/pg_aggregate.c:198 +#, c-format +msgid "" +"a hypothetical-set aggregate must have direct arguments matching its " +"aggregated arguments" +msgstr "" + +#: catalog/pg_aggregate.c:245 catalog/pg_aggregate.c:289 +#, c-format +msgid "return type of transition function %s is not %s" +msgstr "%s ì´ë¦„ì˜ transition í•¨ìˆ˜ì˜ ë¦¬í„´ ìžë£Œí˜•ì´ %s í˜•ì´ ì•„ë‹™ë‹ˆë‹¤" + +#: catalog/pg_aggregate.c:265 catalog/pg_aggregate.c:308 +#, c-format +msgid "" +"must not omit initial value when transition function is strict and " +"transition type is not compatible with input type" +msgstr "" +"변환 함수가 엄격하고 변환 형ì‹ì´ ìž…ë ¥ 형ì‹ê³¼ 호환ë˜ì§€ 않는 경우 ì´ˆê¸°ê°’ì„ ìƒëžµ" +"하면 안ë¨" + +#: catalog/pg_aggregate.c:334 +#, c-format +msgid "return type of inverse transition function %s is not %s" +msgstr "%s inverse transition í•¨ìˆ˜ì˜ ë°˜í™˜ ìžë£Œí˜•ì´ %s í˜•ì´ ì•„ë‹™ë‹ˆë‹¤." + +#: catalog/pg_aggregate.c:351 executor/nodeWindowAgg.c:2334 +#, c-format +msgid "" +"strictness of aggregate's forward and inverse transition functions must match" +msgstr "" + +#: catalog/pg_aggregate.c:395 catalog/pg_aggregate.c:545 +#, c-format +msgid "final function with extra arguments must not be declared STRICT" +msgstr "" + +#: catalog/pg_aggregate.c:425 +#, c-format +msgid "return type of combine function %s is not %s" +msgstr "%s combine í•¨ìˆ˜ì˜ ë°˜í™˜ ìžë£Œí˜•ì´ %s í˜•ì´ ì•„ë‹™ë‹ˆë‹¤" + +#: catalog/pg_aggregate.c:436 +#, c-format +msgid "" +"combine function with \"%s\" transition type must not be declared STRICT" +msgstr "" + +#: catalog/pg_aggregate.c:455 +#, c-format +msgid "return type of serialization function %s is not %s" +msgstr "%s serialization í•¨ìˆ˜ì˜ ë°˜í™˜ ìžë£Œí˜•ì´ %s í˜•ì´ ì•„ë‹™ë‹ˆë‹¤." + +#: catalog/pg_aggregate.c:475 +#, c-format +msgid "return type of deserialization function %s is not %s" +msgstr "%s deserialization í•¨ìˆ˜ì˜ ë°˜í™˜ ìžë£Œí˜•ì´ %s í˜•ì´ ì•„ë‹™ë‹ˆë‹¤" + +#: catalog/pg_aggregate.c:491 catalog/pg_proc.c:246 catalog/pg_proc.c:253 +#, c-format +msgid "cannot determine result data type" +msgstr "ê²°ê³¼ ìžë£Œí˜•ì„ ê²°ì •í•  수 ì—†ìŒ" + +#: catalog/pg_aggregate.c:492 +#, c-format +msgid "" +"An aggregate returning a polymorphic type must have at least one polymorphic " +"argument." +msgstr "" +"다형 ìžë£Œí˜•ì„ ë°˜í™˜í•˜ëŠ” 집계ì—는 다형 ìžë£Œí˜• ì¸ìžê°€ 하나 ì´ìƒ 있어야 합니다." + +#: catalog/pg_aggregate.c:504 catalog/pg_proc.c:259 +#, c-format +msgid "unsafe use of pseudo-type \"internal\"" +msgstr "\"internal\" ì˜ì‚¬-ìžë£Œí˜•ì˜ ì‚¬ìš©ì´ ì•ˆì „í•˜ì§€ 않습니다" + +#: catalog/pg_aggregate.c:505 catalog/pg_proc.c:260 +#, c-format +msgid "" +"A function returning \"internal\" must have at least one \"internal\" " +"argument." +msgstr "" +"\"internal\" ìžë£Œí˜•ì„ ë¦¬í„´í•˜ëŠ” 함수는 ì ì–´ë„ 하나 ì´ìƒì˜ ì¸ìžê°€ \"internal\" " +"ìžë£Œí˜•ì´ì–´ì•¼í•©ë‹ˆë‹¤." + +#: catalog/pg_aggregate.c:558 +#, c-format +msgid "" +"moving-aggregate implementation returns type %s, but plain implementation " +"returns type %s" +msgstr "" + +#: catalog/pg_aggregate.c:569 +#, c-format +msgid "sort operator can only be specified for single-argument aggregates" +msgstr "ì •ë ¬ ì—°ì‚°ìžëŠ” ë‹¨ì¼ ì¸ìž 집계ì—ë§Œ 지정할 수 있ìŒ" + +#: catalog/pg_aggregate.c:812 commands/typecmds.c:1705 +#: commands/typecmds.c:1756 commands/typecmds.c:1787 commands/typecmds.c:1810 +#: commands/typecmds.c:1831 commands/typecmds.c:1858 commands/typecmds.c:1885 +#: commands/typecmds.c:1962 commands/typecmds.c:2004 parser/parse_func.c:364 +#: parser/parse_func.c:393 parser/parse_func.c:418 parser/parse_func.c:432 +#: parser/parse_func.c:507 parser/parse_func.c:518 parser/parse_func.c:1923 +#, c-format +msgid "function %s does not exist" +msgstr "%s ì´ë¦„ì˜ í•¨ìˆ˜ê°€ ì—†ìŒ" + +#: catalog/pg_aggregate.c:818 +#, c-format +msgid "function %s returns a set" +msgstr "%s 함수는 한 setì„ ë¦¬í„´í•¨" + +#: catalog/pg_aggregate.c:833 +#, c-format +msgid "function %s must accept VARIADIC ANY to be used in this aggregate" +msgstr "%s 함수가 ì´ ì§‘ê³„ìž‘ì—…ì— ì‚¬ìš©ë˜ë ¤ë©´ VARIADIC ANY í˜•ì„ ìˆ˜ìš©í•´ì•¼ 합니다." + +#: catalog/pg_aggregate.c:857 +#, c-format +msgid "function %s requires run-time type coercion" +msgstr "%s 함수는 run-time type coercionì„ í•„ìš”ë¡œ 함" + +#: catalog/pg_collation.c:77 +#, c-format +msgid "collation \"%s\" for encoding \"%s\" already exists" +msgstr "\"%s\" ì •ë ¬ê·œì¹™ì´ \"%s\" ì¸ì½”ë”©ì— ì´ë¯¸ 지정ë˜ì–´ 있습니다" + +#: catalog/pg_collation.c:91 +#, c-format +msgid "collation \"%s\" already exists" +msgstr "\"%s\" ì •ë ¬ê·œì¹™ì´ ì´ë¯¸ 있습니다" + +#: catalog/pg_constraint.c:663 +#, c-format +msgid "constraint \"%s\" for domain %s already exists" +msgstr "\"%s\" 제약 ì¡°ê±´ì´ %s ë„ë©”ì¸ì— ì´ë¯¸ 지정ë˜ì–´ 있습니다" + +#: catalog/pg_constraint.c:797 +#, c-format +msgid "table \"%s\" has multiple constraints named \"%s\"" +msgstr "\"%s\" í…Œì´ë¸”ì—는 \"%s\" ì´ë¦„ì˜ ì œì•½ ì¡°ê±´ì´ ì—¬ëŸ¬ê°œ 있습니다" + +#: catalog/pg_constraint.c:809 +#, c-format +msgid "constraint \"%s\" for table \"%s\" does not exist" +msgstr "\"%s\" 제약 ì¡°ê±´ì€ \"%s\" í…Œì´ë¸”ì— ì—†ìŒ" + +#: catalog/pg_constraint.c:855 +#, c-format +msgid "domain \"%s\" has multiple constraints named \"%s\"" +msgstr "\"%s\" ë„ë©”ì¸ì—는 \"%s\" ì´ë¦„ì˜ ì œì•½ ì¡°ê±´ì´ ì—¬ëŸ¬ê°œ 있습니다" + +#: catalog/pg_constraint.c:867 +#, c-format +msgid "constraint \"%s\" for domain \"%s\" does not exist" +msgstr "\"%s\" 제약 ì¡°ê±´ì€ \"%s\" ë„ë©”ì¸ì— ì—†ìŒ" + +#: catalog/pg_conversion.c:66 +#, c-format +msgid "conversion \"%s\" already exists" +msgstr "\"%s\" ì´ë¦„ì˜ ë³€í™˜ê·œì¹™(conversion)ì´ ì´ë¯¸ 있ìŒ" + +#: catalog/pg_conversion.c:79 +#, c-format +msgid "default conversion for %s to %s already exists" +msgstr "%s 코드ì—서 %s 코드로 변환하는 기본 변환규칙(conversion)ì€ ì´ë¯¸ 있ìŒ" + +#: catalog/pg_depend.c:165 commands/extension.c:3029 +#, c-format +msgid "%s is already a member of extension \"%s\"" +msgstr "%s ê°ì²´ëŠ” \"%s\" í™•ìž¥ëª¨ë“ˆì— ì´ë¯¸ 구성ì›ìž…니다" + +#: catalog/pg_depend.c:324 +#, c-format +msgid "cannot remove dependency on %s because it is a system object" +msgstr "%s ì˜ì¡´ê°ì²´ë“¤ì€ 시스템 ê°ì²´ì´ê¸° ë•Œë¬¸ì— ì‚­ì œ ë  ìˆ˜ 없습니다" + +#: catalog/pg_enum.c:115 catalog/pg_enum.c:202 +#, c-format +msgid "invalid enum label \"%s\"" +msgstr "\"%s\" 열거형 ë¼ë²¨ì´ 잘못ë¨" + +#: catalog/pg_enum.c:116 catalog/pg_enum.c:203 +#, c-format +msgid "Labels must be %d characters or less." +msgstr "ë¼ë²¨ì€ %dìž ì´í•˜ì—¬ì•¼ 합니다." + +#: catalog/pg_enum.c:231 +#, c-format +msgid "enum label \"%s\" already exists, skipping" +msgstr "\"%s\" ì´ë¦„ì˜ ì—´ê±°í˜• ë¼ë²¨ì´ ì´ë¯¸ 있ìŒ, 건너뜀" + +#: catalog/pg_enum.c:238 +#, c-format +msgid "enum label \"%s\" already exists" +msgstr "\"%s\" ì´ë¦„ì˜ ì—´ê±°í˜• ë¼ë²¨ì´ ì´ë¯¸ 있ìŒ" + +#: catalog/pg_enum.c:293 +#, c-format +msgid "\"%s\" is not an existing enum label" +msgstr "\"%s\" 열거형 ë¼ë²¨ì´ ì—†ìŒ" + +#: catalog/pg_enum.c:349 +#, c-format +msgid "pg_enum OID value not set when in binary upgrade mode" +msgstr "ì´ì§„ 업그레ì´ë“œ 작업 때 pg_enum OID ê°’ì´ ì§€ì •ë˜ì§€ 않았습니다" + +#: catalog/pg_enum.c:359 +#, c-format +msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade" +msgstr "" +"ALTER TYPE ADD BEFORE/AFTER êµ¬ë¬¸ì€ ì´ì§„ 업그레ì´ë“œ 작업ì—서 호환하지 않습니다" + +#: catalog/pg_namespace.c:61 commands/schemacmds.c:246 +#, c-format +msgid "schema \"%s\" already exists" +msgstr "\"%s\" ì´ë¦„ì˜ ìŠ¤í‚¤ë§ˆ(schema)ê°€ ì´ë¯¸ 있ìŒ" + +#: catalog/pg_operator.c:219 catalog/pg_operator.c:360 +#, c-format +msgid "\"%s\" is not a valid operator name" +msgstr "\"%s\" 타당한 ì—°ì‚°ìž ì´ë¦„ì´ ì•„ë‹˜" + +#: catalog/pg_operator.c:369 +#, c-format +msgid "only binary operators can have commutators" +msgstr "_^_ ë°”ì´ë„ˆë¦¬ ì—°ì‚°ìžë§Œì´ commutator를 가질 수 있ìŒ" + +#: catalog/pg_operator.c:373 commands/operatorcmds.c:485 +#, c-format +msgid "only binary operators can have join selectivity" +msgstr "_^_ ë°”ì´ë„ˆë¦¬ ì—°ì‚°ìžë§Œì´ join selectivity를 가질 수 있ìŒ" + +#: catalog/pg_operator.c:377 +#, c-format +msgid "only binary operators can merge join" +msgstr "_^_ ë°”ì´ë„ˆë¦¬ ì—°ì‚°ìžë§Œì´ merge joiní•  수 있ìŒ" + +#: catalog/pg_operator.c:381 +#, c-format +msgid "only binary operators can hash" +msgstr "_^_ ë°”ì´ë„ˆë¦¬ ì—°ì‚°ìžë§Œì´ 해시할 수 있ìŒ" + +#: catalog/pg_operator.c:392 +#, c-format +msgid "only boolean operators can have negators" +msgstr "부울 ì—°ì‚°ìžë§Œ 부정어를 í¬í•¨í•  수 있ìŒ" + +#: catalog/pg_operator.c:396 commands/operatorcmds.c:493 +#, c-format +msgid "only boolean operators can have restriction selectivity" +msgstr "부울 ì—°ì‚°ìžë§Œ 제한 ì„ íƒì„ í¬í•¨í•  수 있ìŒ" + +#: catalog/pg_operator.c:400 commands/operatorcmds.c:497 +#, c-format +msgid "only boolean operators can have join selectivity" +msgstr "부울 ì—°ì‚°ìžë§Œ ì¡°ì¸ ì„ íƒì„ í¬í•¨í•  수 있ìŒ" + +#: catalog/pg_operator.c:404 +#, c-format +msgid "only boolean operators can merge join" +msgstr "부울 ì—°ì‚°ìžë§Œ 머지 ì¡°ì¸ì„ 지정할 수 있ìŒ" + +#: catalog/pg_operator.c:408 +#, c-format +msgid "only boolean operators can hash" +msgstr "부울 ì—°ì‚°ìžë§Œ 해시를 지정할 수 있ìŒ" + +#: catalog/pg_operator.c:420 +#, c-format +msgid "operator %s already exists" +msgstr "%s ì—°ì‚°ìžê°€ ì´ë¯¸ 있ìŒ" + +#: catalog/pg_operator.c:617 +#, c-format +msgid "operator cannot be its own negator or sort operator" +msgstr "ì—°ì‚°ìžëŠ” ìžì‹ ì˜ negator나 sort ì—°ì‚°ìžê°€ ë  ìˆ˜ 없습니다" + +#: catalog/pg_proc.c:134 parser/parse_func.c:1947 parser/parse_func.c:1987 +#, c-format +msgid "functions cannot have more than %d argument" +msgid_plural "functions cannot have more than %d arguments" +msgstr[0] "함수는 %dê°œ ì´ìƒì˜ ì¸ìžë¥¼ 사용할 수 ì—†ìŒ" + +#: catalog/pg_proc.c:247 +#, c-format +msgid "" +"A function returning a polymorphic type must have at least one polymorphic " +"argument." +msgstr "다형 형ì‹ì„ 반환하는 함수ì—는 다형 ì¸ìžê°€ 하나 ì´ìƒ 있어야 합니다." + +#: catalog/pg_proc.c:254 +#, c-format +msgid "" +"A function returning \"anyrange\" must have at least one \"anyrange\" " +"argument." +msgstr "" +"\"anyrange\" ìžë£Œí˜•ì„ ë°˜í™˜í•˜ëŠ” 함수는 ì ì–´ë„ 하나 ì´ìƒì˜ ì¸ìžê°€ \"anyrange\" " +"ìžë£Œí˜•ì´ì–´ì•¼í•©ë‹ˆë‹¤." + +#: catalog/pg_proc.c:272 +#, c-format +msgid "\"%s\" is already an attribute of type %s" +msgstr "\"%s\"ì€(는) ì´ë¯¸ %s 형ì‹ì˜ ì†ì„±ìž„" + +#: catalog/pg_proc.c:403 +#, c-format +msgid "function \"%s\" already exists with same argument types" +msgstr "ì´ë¯¸ ê°™ì€ ì¸ìž ìžë£Œí˜•ì„ ì‚¬ìš©í•˜ëŠ” \"%s\" 함수가 있습니다" + +#: catalog/pg_proc.c:417 catalog/pg_proc.c:440 +#, c-format +msgid "cannot change return type of existing function" +msgstr "ì´ë¯¸ 있는 í•¨ìˆ˜ì˜ ë¦¬í„´ ìžë£Œí˜•ì€ ë°”ê¿€ 수 없습니다" + +#: catalog/pg_proc.c:418 catalog/pg_proc.c:442 catalog/pg_proc.c:485 +#: catalog/pg_proc.c:509 catalog/pg_proc.c:536 +#, c-format +msgid "Use DROP FUNCTION %s first." +msgstr "먼저 DROP FUNCTION %s 명령으로 함수를 ì‚­ì œ 하세요" + +#: catalog/pg_proc.c:441 +#, c-format +msgid "Row type defined by OUT parameters is different." +msgstr "OUT 매개 ë³€ìˆ˜ì— ì •ì˜ëœ í–‰ 형ì‹ì´ 다릅니다." + +#: catalog/pg_proc.c:483 +#, c-format +msgid "cannot change name of input parameter \"%s\"" +msgstr "\"%s\" ìž…ë ¥ 매개 변수 ì´ë¦„ì„ ë°”ê¿€ 수 ì—†ìŒ" + +#: catalog/pg_proc.c:508 +#, c-format +msgid "cannot remove parameter defaults from existing function" +msgstr "기존 함수ì—서 매개 변수 기본 ê°’ì„ ì œê±°í•  수 ì—†ìŒ" + +#: catalog/pg_proc.c:535 +#, c-format +msgid "cannot change data type of existing parameter default value" +msgstr "기존 매개 변수 기본 ê°’ì˜ ë°ì´í„° 형ì‹ì„ 바꿀 수 ì—†ìŒ" + +#: catalog/pg_proc.c:548 +#, c-format +msgid "function \"%s\" is an aggregate function" +msgstr "\"%s\" 함수는 집계 함수임" + +#: catalog/pg_proc.c:553 +#, c-format +msgid "function \"%s\" is not an aggregate function" +msgstr "\"%s\" 함수는 집계 함수가 아님" + +#: catalog/pg_proc.c:561 +#, c-format +msgid "function \"%s\" is a window function" +msgstr "\"%s\" 함수는 윈ë„ìš° 함수임" + +#: catalog/pg_proc.c:566 +#, c-format +msgid "function \"%s\" is not a window function" +msgstr "\"%s\" 함수는 윈ë„ìš° 함수가 아님" + +#: catalog/pg_proc.c:774 +#, c-format +msgid "there is no built-in function named \"%s\"" +msgstr "\"%s\" ì´ë¦„ì˜ ë‚´ìž¥ 함수가 ì—†ìŒ" + +#: catalog/pg_proc.c:872 +#, c-format +msgid "SQL functions cannot return type %s" +msgstr "SQL 함수는 %s ìžë£Œí˜•ì„ ë¦¬í„´í•  수 ì—†ìŒ" + +#: catalog/pg_proc.c:887 +#, c-format +msgid "SQL functions cannot have arguments of type %s" +msgstr "SQL í•¨ìˆ˜ì˜ ì¸ìžë¡œ %s ìžë£Œí˜•ì€ ì‚¬ìš©ë  ìˆ˜ 없습니다" + +#: catalog/pg_proc.c:973 executor/functions.c:1431 +#, c-format +msgid "SQL function \"%s\"" +msgstr "\"%s\" SQL 함수" + +#: catalog/pg_shdepend.c:694 +#, c-format +msgid "" +"\n" +"and objects in %d other database (see server log for list)" +msgid_plural "" +"\n" +"and objects in %d other databases (see server log for list)" +msgstr[0] "" + +#: catalog/pg_shdepend.c:1006 +#, c-format +msgid "role %u was concurrently dropped" +msgstr "%u ë¡¤ì´ ë™ì‹œì— ì‚­ì œë˜ì—ˆìŒ" + +#: catalog/pg_shdepend.c:1025 +#, c-format +msgid "tablespace %u was concurrently dropped" +msgstr "%u í…Œì´ë¸”스페ì´ìŠ¤ëŠ” 현재 ì‚­ì œë˜ì—ˆìŠµë‹ˆë‹¤" + +#: catalog/pg_shdepend.c:1040 +#, c-format +msgid "database %u was concurrently dropped" +msgstr "%u ë°ì´í„°ë² ì´ìŠ¤ëŠ” 현재 ì‚­ì œë˜ì—ˆìŠµë‹ˆë‹¤" + +#: catalog/pg_shdepend.c:1085 +#, c-format +msgid "owner of %s" +msgstr "%s ê°ì²´ì˜ 소유주" + +#: catalog/pg_shdepend.c:1087 +#, c-format +msgid "privileges for %s" +msgstr "\"%s\"ì— ëŒ€í•œ 권한" + +#: catalog/pg_shdepend.c:1089 +#, c-format +msgid "target of %s" +msgstr "%s ê°ì²´ 대ìƒ" + +#. translator: %s will always be "database %s" +#: catalog/pg_shdepend.c:1097 +#, c-format +msgid "%d object in %s" +msgid_plural "%d objects in %s" +msgstr[0] "%d ê°ì²´(ë°ì´í„°ë² ì´ìФ: %s)" + +#: catalog/pg_shdepend.c:1208 +#, c-format +msgid "" +"cannot drop objects owned by %s because they are required by the database " +"system" +msgstr "" +"%s ì†Œìœ ì£¼ì˜ ê°ì²´ 삭제는 ê·¸ ë°ì´í„°ë² ì´ìФ 시스템ì—서 필요하기 ë•Œë¬¸ì— ì‚­ì œ ë  " +"수 ì—†ìŒ" + +#: catalog/pg_shdepend.c:1323 +#, c-format +msgid "" +"cannot reassign ownership of objects owned by %s because they are required " +"by the database system" +msgstr "" +"%s ì†Œìœ ì£¼ì˜ ê°ì²´ 삭제는 ê·¸ ë°ì´í„°ë² ì´ìФ 시스템ì—서 필요하기 ë•Œë¬¸ì— ì‚­ì œ ë  " +"수 ì—†ìŒ" + +#: catalog/pg_type.c:136 catalog/pg_type.c:454 +#, c-format +msgid "pg_type OID value not set when in binary upgrade mode" +msgstr "ì´ì§„ 업그레ì´ë“œ 작업 때 pg_type OID ê°’ì´ ì§€ì •ë˜ì§€ 않았습니다" + +#: catalog/pg_type.c:253 +#, c-format +msgid "invalid type internal size %d" +msgstr "ìž˜ëª»ëœ ìžë£Œí˜•ì˜ ë‚´ë¶€ í¬ê¸° %d" + +#: catalog/pg_type.c:269 catalog/pg_type.c:277 catalog/pg_type.c:285 +#: catalog/pg_type.c:294 +#, c-format +msgid "alignment \"%c\" is invalid for passed-by-value type of size %d" +msgstr "\"%c\" ì •ë ¬ì€ í¬ê¸°ê°€ %dì¸ ì „ë‹¬ ê°’ 형ì‹ì— 유효하지 않ìŒ" + +#: catalog/pg_type.c:301 +#, c-format +msgid "internal size %d is invalid for passed-by-value type" +msgstr "ë‚´ë¶€ í¬ê¸° %dì€(는) 전달 ê°’ 형ì‹ì— 유효하지 않ìŒ" + +#: catalog/pg_type.c:310 catalog/pg_type.c:316 +#, c-format +msgid "alignment \"%c\" is invalid for variable-length type" +msgstr "\"%c\" ì •ë ¬ì€ ê°€ë³€ ê¸¸ì´ í˜•ì‹ì— 유효하지 않ìŒ" + +#: catalog/pg_type.c:324 +#, c-format +msgid "fixed-size types must have storage PLAIN" +msgstr "_^_ ê³ ì •í¬ê¸° ìžë£Œí˜•ì€ PLAIN ì €ìž¥ë°©ë²•ì„ ê°€ì ¸ì•¼ë§Œ 합니다" + +#: catalog/pg_type.c:789 +#, c-format +msgid "could not form array type name for type \"%s\"" +msgstr "\"%s\" 형ì‹ì˜ ë°°ì—´ í˜•ì‹ ì´ë¦„ì„ ìƒì„±í•  수 ì—†ìŒ" + +#: catalog/toasting.c:105 commands/indexcmds.c:389 commands/tablecmds.c:4359 +#: commands/tablecmds.c:12047 +#, c-format +msgid "\"%s\" is not a table or materialized view" +msgstr "\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”ë„ êµ¬ì²´í™”ëœ ë·°ë„ ì•„ë‹™ë‹ˆë‹¤" + +#: catalog/toasting.c:158 +#, c-format +msgid "shared tables cannot be toasted after initdb" +msgstr "공유ë˜ëŠ” í…Œì´ë¸”ì€ initdb ë’¤ì—는 toast ë  ìˆ˜ 없습니다" + +#: commands/aggregatecmds.c:159 +#, c-format +msgid "only ordered-set aggregates can be hypothetical" +msgstr "순서 있는 세트 집계함수만 가설ì ì¼ 수 있습니다" + +#: commands/aggregatecmds.c:184 +#, c-format +msgid "aggregate attribute \"%s\" not recognized" +msgstr "\"%s\" ì†ì„±ì„ aggregateì—서 알 수 ì—†ìŒ" + +#: commands/aggregatecmds.c:194 +#, c-format +msgid "aggregate stype must be specified" +msgstr "aggregate stype ê°’ì„ ì§€ì •í•˜ì…”ì•¼í•©ë‹ˆë‹¤" + +#: commands/aggregatecmds.c:198 +#, c-format +msgid "aggregate sfunc must be specified" +msgstr "aggregate sfunc ê°’ì„ ì§€ì •í•˜ì…”ì•¼í•©ë‹ˆë‹¤" + +#: commands/aggregatecmds.c:210 +#, c-format +msgid "aggregate msfunc must be specified when mstype is specified" +msgstr "mstype ì˜µì…˜ì„ ì‚¬ìš©í•˜ë©´ msfunc ì˜µì…˜ë„ í•¨ê»˜ 지정 해야 함" + +#: commands/aggregatecmds.c:214 +#, c-format +msgid "aggregate minvfunc must be specified when mstype is specified" +msgstr "mstype ì˜µì…˜ì„ ì‚¬ìš©í•˜ë©´ minvfunc ì˜µì…˜ë„ í•¨ê»˜ 지정 해야 함" + +#: commands/aggregatecmds.c:221 +#, c-format +msgid "aggregate msfunc must not be specified without mstype" +msgstr "msfunc ì˜µì…˜ì€ mstype 옵션과 함께 사용해야 함" + +#: commands/aggregatecmds.c:225 +#, c-format +msgid "aggregate minvfunc must not be specified without mstype" +msgstr "minvfunc ì˜µì…˜ì€ mstype 옵션과 함께 사용해야 함" + +#: commands/aggregatecmds.c:229 +#, c-format +msgid "aggregate mfinalfunc must not be specified without mstype" +msgstr "mfinalfunc ì˜µì…˜ì€ mstype 옵션과 함께 사용해야 함" + +#: commands/aggregatecmds.c:233 +#, c-format +msgid "aggregate msspace must not be specified without mstype" +msgstr "msspace ì˜µì…˜ì€ mstype 옵션과 함께 사용해야 함" + +#: commands/aggregatecmds.c:237 +#, c-format +msgid "aggregate minitcond must not be specified without mstype" +msgstr "minitcond ì˜µì…˜ì€ mstype 옵션과 함께 사용해야 함" + +#: commands/aggregatecmds.c:257 +#, c-format +msgid "aggregate input type must be specified" +msgstr "aggregate ìž…ë ¥ ìžë£Œí˜•ì„ ì§€ì •í•´ì•¼ 합니다" + +#: commands/aggregatecmds.c:287 +#, c-format +msgid "basetype is redundant with aggregate input type specification" +msgstr "집계 ìž…ë ¥ í˜•ì‹ ì§€ì •ì—서 basetypeì´ ì¤‘ë³µë¨" + +#: commands/aggregatecmds.c:328 commands/aggregatecmds.c:369 +#, c-format +msgid "aggregate transition data type cannot be %s" +msgstr "%s ìžë£Œí˜•ì€ aggregate transition ìžë£Œí˜•으로 사용할 수 없습니다" + +#: commands/aggregatecmds.c:340 +#, c-format +msgid "" +"serialization functions may be specified only when the aggregate transition " +"data type is %s" +msgstr "" + +#: commands/aggregatecmds.c:350 +#, c-format +msgid "" +"must specify both or neither of serialization and deserialization functions" +msgstr "" + +#: commands/aggregatecmds.c:415 commands/functioncmds.c:570 +#, c-format +msgid "parameter \"parallel\" must be SAFE, RESTRICTED, or UNSAFE" +msgstr "\"parallel\" 옵션 ê°’ì€ SAFE, RESTRICTED, UNSAFE ë§Œ 지정할 수 있ìŒ" + +#: commands/alter.c:80 commands/event_trigger.c:231 +#, c-format +msgid "event trigger \"%s\" already exists" +msgstr "\"%s\" ì´ë¦„ì˜ ì´ë²¤íЏ 트리거가 ì´ë¯¸ 있ìŒ" + +#: commands/alter.c:83 commands/foreigncmds.c:597 +#, c-format +msgid "foreign-data wrapper \"%s\" already exists" +msgstr "\"%s\" ì´ë¦„ì˜ ì™¸ë¶€ ìžë£Œ 래í¼ê°€ ì´ë¯¸ 있ìŒ" + +#: commands/alter.c:86 commands/foreigncmds.c:890 +#, c-format +msgid "server \"%s\" already exists" +msgstr "\"%s\" ì´ë¦„ì˜ ì„œë²„ê°€ ì´ë¯¸ 있ìŒ" + +#: commands/alter.c:89 commands/proclang.c:366 +#, c-format +msgid "language \"%s\" already exists" +msgstr "\"%s\" ì´ë¦„ì˜ í”„ë¡œì‹œì£¼ì–¼ 언어가 ì´ë¯¸ 있습니다" + +#: commands/alter.c:112 +#, c-format +msgid "conversion \"%s\" already exists in schema \"%s\"" +msgstr "\"%s\" ì´ë¦„ì˜ ë³€í™˜ê·œì¹™(conversin)ì´ \"%s\" ìŠ¤í‚¤ë§ˆì— ì´ë¯¸ 있습니다" + +#: commands/alter.c:116 +#, c-format +msgid "text search parser \"%s\" already exists in schema \"%s\"" +msgstr "\"%s\" 전문 검색 파서가 \"%s\" 스키마 ì•ˆì— ì´ë¯¸ 있ìŒ" + +#: commands/alter.c:120 +#, c-format +msgid "text search dictionary \"%s\" already exists in schema \"%s\"" +msgstr "\"%s\" 전문 검색 ì‚¬ì „ì´ \"%s\" 스키마 ì•ˆì— ì´ë¯¸ 있ìŒ" + +#: commands/alter.c:124 +#, c-format +msgid "text search template \"%s\" already exists in schema \"%s\"" +msgstr "\"%s\" 전문 검색 í…œí”Œë¦¿ì´ \"%s\" 스키마 ì•ˆì— ì´ë¯¸ 있ìŒ" + +#: commands/alter.c:128 +#, c-format +msgid "text search configuration \"%s\" already exists in schema \"%s\"" +msgstr "\"%s\" 전문 검색 êµ¬ì„±ì´ \"%s\" 스키마 ì•ˆì— ì´ë¯¸ 있ìŒ" + +#: commands/alter.c:202 +#, c-format +msgid "must be superuser to rename %s" +msgstr "%s ì´ë¦„ 변경 ìž‘ì—…ì€ ìŠˆí¼ìœ ì €ë§Œ í•  수 있ìŒ" + +#: commands/alter.c:655 +#, c-format +msgid "must be superuser to set schema of %s" +msgstr "%sì˜ ìŠ¤í‚¤ë§ˆ ì§€ì •ì€ ìŠˆí¼ìœ ì ¸ì—¬ì•¼í•©ë‹ˆë‹¤" + +#: commands/amcmds.c:58 +#, c-format +msgid "permission denied to create access method \"%s\"" +msgstr "\"%s\" ì ‘ê·¼ ë°©ë²•ì„ ë§Œë“¤ ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤." + +#: commands/amcmds.c:60 +#, c-format +msgid "Must be superuser to create an access method." +msgstr "슈í¼ìœ ì €ë§Œ ì ‘ê·¼ ë°©ë²•ì„ ë§Œë“¤ 수 있습니다." + +#: commands/amcmds.c:68 +#, c-format +msgid "access method \"%s\" already exists" +msgstr "\"%s\" ì´ë¦„ì˜ ì¸ë±ìФ ì ‘ê·¼ ë°©ë²•ì´ ì´ë¯¸ 있습니다." + +#: commands/amcmds.c:124 +#, c-format +msgid "must be superuser to drop access methods" +msgstr "ì ‘ê·¼ ë°©ë²•ì€ ìŠˆí¼ìœ ì €ë§Œ 삭제할 수 있습니다." + +#: commands/amcmds.c:175 commands/indexcmds.c:164 commands/indexcmds.c:496 +#: commands/opclasscmds.c:365 commands/opclasscmds.c:790 +#, c-format +msgid "access method \"%s\" does not exist" +msgstr "\"%s\" ì¸ë±ìФ ì ‘ê·¼ ë°©ë²•ì´ ì—†ìŠµë‹ˆë‹¤" + +#: commands/amcmds.c:251 +#, c-format +msgid "handler function is not specified" +msgstr "핸들러 함수 ë¶€ë¶„ì´ ë¹ ì¡ŒìŠµë‹ˆë‹¤" + +#: commands/amcmds.c:263 commands/event_trigger.c:240 +#: commands/foreigncmds.c:489 commands/proclang.c:117 commands/proclang.c:288 +#: commands/trigger.c:441 parser/parse_clause.c:761 +#, c-format +msgid "function %s must return type %s" +msgstr "%s 함수는 %s ìžë£Œí˜•ì„ ë°˜í™˜í•´ì•¼ 함" + +#: commands/analyze.c:145 +#, c-format +msgid "skipping analyze of \"%s\" --- lock not available" +msgstr "\"%s\" ë¶„ì„ ê±´ë„ˆëœ€ --- 잠글 수 ì—†ìŒ" + +#: commands/analyze.c:162 +#, c-format +msgid "skipping \"%s\" --- only superuser can analyze it" +msgstr "\"%s\" ë¶„ì„ ê±´ë„ˆëœ€ --- 슈í¼ìœ ì €ë§Œ ë¶„ì„í•  수 있ìŒ" + +#: commands/analyze.c:166 +#, c-format +msgid "skipping \"%s\" --- only superuser or database owner can analyze it" +msgstr "" +"\"%s\" ë¶„ì„ ê±´ë„ˆëœ€ --- 슈í¼ìœ ì € ë˜ëŠ” ë°ì´í„°ë² ì´ìФ 소유주만 ë¶„ì„í•  수 있ìŒ" + +#: commands/analyze.c:170 +#, c-format +msgid "skipping \"%s\" --- only table or database owner can analyze it" +msgstr "\"%s\" 건너뜀 --- í…Œì´ë¸”ì´ë‚˜ ë°ì´í„°ë² ì´ìФ ì†Œìœ ì£¼ë§Œì´ ë¶„ì„í•  수 있ìŒ" + +#: commands/analyze.c:230 +#, c-format +msgid "skipping \"%s\" --- cannot analyze this foreign table" +msgstr "\"%s\" 건너뜀 --- 외부 í…Œì´ë¸”ì€ ë¶„ì„í•  수 ì—†ìŒ" + +#: commands/analyze.c:241 +#, c-format +msgid "skipping \"%s\" --- cannot analyze non-tables or special system tables" +msgstr "" +"\"%s\" 건너뜀 --- í…Œì´ë¸”ì´ ì•„ë‹ˆê±°ë‚˜, 특수 시스템 í…Œì´ë¸”ë“¤ì€ ë¶„ì„í•  수 ì—†ìŒ" + +#: commands/analyze.c:320 +#, c-format +msgid "analyzing \"%s.%s\" inheritance tree" +msgstr "\"%s.%s\" ìƒì† 관계 ë¶„ì„중" + +#: commands/analyze.c:325 +#, c-format +msgid "analyzing \"%s.%s\"" +msgstr "\"%s.%s\" ìžë£Œ 통계 수집 중" + +#: commands/analyze.c:650 +#, c-format +msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s" +msgstr "\"%s.%s.%s\" í…Œì´ë¸”ì˜ ì‹œìŠ¤í…œ 사용 ìžë™ ë¶„ì„: %s" + +#: commands/analyze.c:1204 +#, c-format +msgid "" +"\"%s\": scanned %d of %u pages, containing %.0f live rows and %.0f dead " +"rows; %d rows in sample, %.0f estimated total rows" +msgstr "" +"\"%s\": íƒìƒ‰í•œ 페ì´ì§€: %d, 전체페ì´ì§€: %u, 실ìžë£Œ: %.0fê°œ, 쓰레기ìžë£Œ: %.0f" +"ê°œ; 표본 추출 ìžë£Œ: %dê°œ, 예ìƒí•œ ì´ ìžë£Œ: %.0fê°œ" + +#: commands/analyze.c:1283 +#, c-format +msgid "" +"skipping analyze of \"%s.%s\" inheritance tree --- this inheritance tree " +"contains no child tables" +msgstr "" +"\"%s.%s\" ìƒì† ë‚˜ë¬´ì˜ í†µê³„ 수집 건너뜀 --- ì´ ìƒì† 나무ì—는 하위 í…Œì´ë¸”ì´ ì—†" +"ìŒ" + +#: commands/analyze.c:1372 +#, c-format +msgid "" +"skipping analyze of \"%s.%s\" inheritance tree --- this inheritance tree " +"contains no analyzable child tables" +msgstr "" +"\"%s.%s\" ìƒì† ë‚˜ë¬´ì˜ í†µê³„ 수집 건너뜀 --- ì´ ìƒì† 나무ì—는 통계 수집할 하위 " +"í…Œì´ë¸”ì´ ì—†ìŒ" + +#: commands/analyze.c:1420 commands/tablecmds.c:8079 executor/execQual.c:2927 +msgid "could not convert row type" +msgstr "로우 ìžë£Œí˜•ì„ ë³€í™˜ í•  수 ì—†ìŒ" + +#: commands/async.c:555 +#, c-format +msgid "channel name cannot be empty" +msgstr "ì±„ë„ ì´ë¦„ì€ ë¹„ì›Œë‘˜ 수 ì—†ìŒ" + +#: commands/async.c:560 +#, c-format +msgid "channel name too long" +msgstr "ì±„ë„ ì´ë¦„ì´ ë„ˆë¬´ 긺" + +# # nonun 부분 begin +#: commands/async.c:567 +#, c-format +msgid "payload string too long" +msgstr "payload 문ìžì—´ì´ 너무 긺" + +#: commands/async.c:753 +#, c-format +msgid "" +"cannot PREPARE a transaction that has executed LISTEN, UNLISTEN, or NOTIFY" +msgstr "" +"LISTEN, UNLISTEN ë˜ëŠ” NOTIFY 옵션으로 ì‹¤í–‰ëœ íŠ¸ëžœìž­ì…˜ì„ PREPAREí•  수 ì—†ìŒ" + +#: commands/async.c:856 +#, c-format +msgid "too many notifications in the NOTIFY queue" +msgstr "NOTIFY íì— ë„ˆë¬´ ë§Žì€ ì•Œë¦¼ì´ ìžˆìŠµë‹ˆë‹¤" + +#: commands/async.c:1486 +#, c-format +msgid "NOTIFY queue is %.0f%% full" +msgstr "NOTIFY í 사용률: %.0f%%" + +#: commands/async.c:1488 +#, c-format +msgid "" +"The server process with PID %d is among those with the oldest transactions." +msgstr "%d PID 서버 프로세스가 가장 ì˜¤ëž˜ëœ íŠ¸ëžœìž­ì…˜ì„ ì‚¬ìš©í•˜ê³  있습니다." + +#: commands/async.c:1491 +#, c-format +msgid "" +"The NOTIFY queue cannot be emptied until that process ends its current " +"transaction." +msgstr "" +"ì´ í”„ë¡œì„¸ìŠ¤ì˜ í˜„ìž¬ íŠ¸ëžœìž­ì…˜ì„ ì¢…ë£Œí•˜ì§€ 않으면, NOTIFY í를 비울 수 없습니다" + +#: commands/cluster.c:129 commands/cluster.c:364 +#, c-format +msgid "cannot cluster temporary tables of other sessions" +msgstr "다른 ì„¸ì…˜ì˜ ìž„ì‹œ í…Œì´ë¸”ì€ cluster ìž‘ì—…ì„ í•  수 없습니다" + +#: commands/cluster.c:159 +#, c-format +msgid "there is no previously clustered index for table \"%s\"" +msgstr "\"%s\" í…Œì´ë¸”ì„ ìœ„í•œ previously clustered ì¸ë±ìŠ¤ê°€ ì—†ìŒ" + +#: commands/cluster.c:173 commands/tablecmds.c:9383 commands/tablecmds.c:11143 +#, c-format +msgid "index \"%s\" for table \"%s\" does not exist" +msgstr "\"%s\" ì¸ë±ìŠ¤ëŠ” \"%s\" í…Œì´ë¸”ì— ì—†ìŒ" + +#: commands/cluster.c:353 +#, c-format +msgid "cannot cluster a shared catalog" +msgstr "ê³µìœ ëœ ì¹´íƒˆë¡œê·¸ëŠ” í´ëŸ¬ìŠ¤í„° ìž‘ì—…ì„ í•  수 ì—†ìŒ" + +#: commands/cluster.c:368 +#, c-format +msgid "cannot vacuum temporary tables of other sessions" +msgstr "다른 ì„¸ì…˜ì˜ ìž„ì‹œ í…Œì´ë¸”ì€ vacuum ìž‘ì—…ì„ í•  수 ì—†ìŒ" + +#: commands/cluster.c:431 commands/tablecmds.c:11153 +#, c-format +msgid "\"%s\" is not an index for table \"%s\"" +msgstr "\"%s\" ê°ì²´ëŠ” \"%s\" í…Œì´ë¸”ì„ ìœ„í•œ ì¸ë±ìŠ¤ê°€ 아님" + +#: commands/cluster.c:439 +#, c-format +msgid "" +"cannot cluster on index \"%s\" because access method does not support " +"clustering" +msgstr "" +"\"%s\" ì¸ë±ìŠ¤ëŠ” ìžë£Œ 액세스 ë°©ë²•ì´ cluster ìž‘ì—…ì„ í•  수 없는 방법입니다." + +#: commands/cluster.c:451 +#, c-format +msgid "cannot cluster on partial index \"%s\"" +msgstr "" +"\"%s\" ì¸ë±ìŠ¤ê°€ 부분ì¸ë±ìФ(partial index)ë¼ì„œ cluster ìž‘ì—…ì„ í•  수 없습니다" + +#: commands/cluster.c:465 +#, c-format +msgid "cannot cluster on invalid index \"%s\"" +msgstr "ìž˜ëª»ëœ \"%s\" ì¸ë±ìŠ¤ì— ëŒ€í•´ í´ëŸ¬ìŠ¤í„°ë§í•  수 ì—†ìŒ" + +#: commands/cluster.c:918 +#, c-format +msgid "clustering \"%s.%s\" using index scan on \"%s\"" +msgstr " \"%s.%s\" í´ëŸ¬ìŠ¤í„°ë§ ì¤‘ (사용 ì¸ë±ìФ: \"%s\")" + +#: commands/cluster.c:924 +#, c-format +msgid "clustering \"%s.%s\" using sequential scan and sort" +msgstr "순차 íƒìƒ‰ê³¼ ì •ë ¬ì„ ì´ìš©í•´ì„œ \"%s.%s\" ê°ì²´ í´ëŸ¬ìŠ¤í„°ë§ ì¤‘" + +#: commands/cluster.c:929 commands/vacuumlazy.c:479 +#, c-format +msgid "vacuuming \"%s.%s\"" +msgstr "\"%s.%s\" 청소 중" + +#: commands/cluster.c:1088 +#, c-format +msgid "" +"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages" +msgstr "" +"\"%s\": 삭제가능한 %.0fê°œ, 삭제불가능한 %.0fê°œì˜ í–‰ ë²„ì „ì„ %u 페ì´ì§€ì—서 발견" +"í–ˆìŒ." + +#: commands/cluster.c:1092 +#, c-format +msgid "" +"%.0f dead row versions cannot be removed yet.\n" +"%s." +msgstr "" +"%.0f ê°œì˜ ì‚¬ìš©í•˜ì§€ 않는 로우 ë²„ì „ì„ ì•„ì§ ì§€ìš°ì§€ 못했ìŒ.\n" +"%s." + +#: commands/collationcmds.c:80 +#, c-format +msgid "collation attribute \"%s\" not recognized" +msgstr "\"%s\" ì—°ì‚°ìž ì†ì„±ì„ 처리할 수 ì—†ìŒ" + +#: commands/collationcmds.c:125 +#, c-format +msgid "parameter \"lc_collate\" must be specified" +msgstr "\"lc_collate\" ì˜µì…˜ì„ ì§€ì •í•´ì•¼ 함" + +#: commands/collationcmds.c:130 +#, c-format +msgid "parameter \"lc_ctype\" must be specified" +msgstr "\"lc_ctype\" ì˜µì…˜ì„ ì§€ì •í•´ì•¼ 함" + +#: commands/collationcmds.c:166 +#, c-format +msgid "collation \"%s\" for encoding \"%s\" already exists in schema \"%s\"" +msgstr "\"%s\" 정렬규칙(ëŒ€ìƒ ì¸ì½”딩: \"%s\")ì´ \"%s\" 스키마 ì•ˆì— ì´ë¯¸ 있ìŒ" + +#: commands/collationcmds.c:177 +#, c-format +msgid "collation \"%s\" already exists in schema \"%s\"" +msgstr "\"%s\" ì •ë ¬ê·œì¹™ì´ \"%s\" ìŠ¤í‚¤ë§ˆì— ì´ë¯¸ 있습니다" + +#: commands/comment.c:62 commands/dbcommands.c:797 commands/dbcommands.c:962 +#: commands/dbcommands.c:1067 commands/dbcommands.c:1257 +#: commands/dbcommands.c:1477 commands/dbcommands.c:1594 +#: commands/dbcommands.c:2011 utils/init/postinit.c:841 +#: utils/init/postinit.c:943 utils/init/postinit.c:960 +#, c-format +msgid "database \"%s\" does not exist" +msgstr "\"%s\" ë°ì´í„°ë² ì´ìФ ì—†ìŒ" + +#: commands/comment.c:101 commands/seclabel.c:116 parser/parse_utilcmd.c:753 +#, c-format +msgid "" +"\"%s\" is not a table, view, materialized view, composite type, or foreign " +"table" +msgstr "" +"\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”ë„, ë·°ë„, êµ¬ì²´í™”ëœ ë·°ë„, 복합 ìžë£Œí˜•ë„, 외부 í…Œì´ë¸”ë„ ì•„" +"닙니다." + +#: commands/constraint.c:60 utils/adt/ri_triggers.c:2715 +#, c-format +msgid "function \"%s\" was not called by trigger manager" +msgstr "\"%s\" 함수가 트리거 관리ìžì—서 호출ë˜ì§€ 않았ìŒ" + +#: commands/constraint.c:67 utils/adt/ri_triggers.c:2724 +#, c-format +msgid "function \"%s\" must be fired AFTER ROW" +msgstr "AFTER ROWì—서 \"%s\" 함수를 실행해야 함" + +#: commands/constraint.c:81 +#, c-format +msgid "function \"%s\" must be fired for INSERT or UPDATE" +msgstr "INSERT ë˜ëŠ” UPDATEì— ëŒ€í•´ \"%s\" 함수를 실행해야 함" + +#: commands/conversioncmds.c:67 +#, c-format +msgid "source encoding \"%s\" does not exist" +msgstr "\"%s\" ì›ë³¸ ì¸ì½”딩 ì—†ìŒ" + +#: commands/conversioncmds.c:74 +#, c-format +msgid "destination encoding \"%s\" does not exist" +msgstr "\"%s\" ëŒ€ìƒ ì¸ì½”딩 ì—†ìŒ" + +#: commands/conversioncmds.c:88 +#, c-format +msgid "encoding conversion function %s must return type %s" +msgstr "%s ì¸ì½”딩 변환 함수는 %s í˜•ì„ ë°˜í™˜í•´ì•¼ 함" + +#: commands/copy.c:362 commands/copy.c:374 commands/copy.c:408 +#: commands/copy.c:420 +#, c-format +msgid "COPY BINARY is not supported to stdout or from stdin" +msgstr "COPY BINARY ëª…ë ¹ì€ stdout, stdin ìž…ì¶œë ¥ì„ ì§€ì›í•˜ì§€ 않습니다" + +#: commands/copy.c:520 +#, c-format +msgid "could not write to COPY program: %m" +msgstr "COPY 프로그램으로 파ì¼ì„ 쓸 수 없습니다: %m" + +#: commands/copy.c:525 +#, c-format +msgid "could not write to COPY file: %m" +msgstr "COPY 파ì¼ë¡œë¡œ 파ì¼ì„ 쓸 수 없습니다: %m" + +#: commands/copy.c:538 +#, c-format +msgid "connection lost during COPY to stdout" +msgstr "COPY 명령ì—서 stdout으로 ìžë£Œë¥¼ 내보내는 ë™ì•ˆ ì—°ê²°ì´ ëŠê²¼ìŠµë‹ˆë‹¤" + +#: commands/copy.c:579 +#, c-format +msgid "could not read from COPY file: %m" +msgstr "COPY ëª…ë ¹ì— ì‚¬ìš©í•  파ì¼ì„ ì½ì„ 수 없습니다: %m" + +#: commands/copy.c:595 commands/copy.c:616 commands/copy.c:620 +#: tcop/postgres.c:341 tcop/postgres.c:377 tcop/postgres.c:404 +#, c-format +msgid "unexpected EOF on client connection with an open transaction" +msgstr "열린 트랜잭션과 함께 í´ë¼ì´ì–¸íЏ ì—°ê²°ì—서 예ìƒì¹˜ ì•Šì€ EOF 발견ë¨" + +#: commands/copy.c:633 +#, c-format +msgid "COPY from stdin failed: %s" +msgstr "COPY 명령ì—서 stdin으로 ìžë£Œ 가져오기 실패: %s" + +#: commands/copy.c:649 +#, c-format +msgid "unexpected message type 0x%02X during COPY from stdin" +msgstr "" +"COPY 명령으로 stdin으로 ìžë£Œë¥¼ 가져오는 ë™ì•ˆ 예ìƒì¹˜ ì•Šì€ ë©”ì‹œì§€ 타입 0x%02X " +"발견ë¨" + +#: commands/copy.c:806 +#, c-format +msgid "must be superuser to COPY to or from an external program" +msgstr "외부 í”„ë¡œê·¸ëž¨ì„ ì´ìš©í•˜ëŠ” COPY ìž‘ì—…ì€ ìŠˆí¼ìœ ì €ë§Œ 허용합니다." + +#: commands/copy.c:807 commands/copy.c:813 +#, c-format +msgid "" +"Anyone can COPY to stdout or from stdin. psql's \\copy command also works " +"for anyone." +msgstr "ì¼ë°˜ 사용ìžì¸ë°, ì´ ìž‘ì—…ì´ í•„ìš”í•˜ë©´, psqlì˜ \\copy ëª…ë ¹ì„ ì´ìš©í•˜ì„¸ìš”" + +#: commands/copy.c:812 +#, c-format +msgid "must be superuser to COPY to or from a file" +msgstr "" +"COPY 명령으로 ìžë£Œë¥¼ 파ì¼ë¡œ 내보내거나 파ì¼ì—서 가져오려면, superuser여야만 " +"합니다" + +#: commands/copy.c:879 +#, c-format +msgid "COPY FROM not supported with row-level security" +msgstr "로우 단위 보안 기능으로 COPY FROM ëª…ë ¹ì„ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: commands/copy.c:880 +#, c-format +msgid "Use INSERT statements instead." +msgstr "ëŒ€ì‹ ì— INSERT êµ¬ë¬¸ì„ ì‚¬ìš©í•˜ì‹­ì‹œì˜¤." + +#: commands/copy.c:1058 +#, c-format +msgid "COPY format \"%s\" not recognized" +msgstr "\"%s\" COPY ì–‘ì‹ì€ ì§€ì›í•˜ì§€ 않ìŒ" + +#: commands/copy.c:1129 commands/copy.c:1143 commands/copy.c:1157 +#: commands/copy.c:1177 +#, c-format +msgid "argument to option \"%s\" must be a list of column names" +msgstr "\"%s\" ì˜µì…˜ì— ëŒ€í•œ ì¸ìžëŠ” 칼럼 ì´ë¦„ 목ë¡ì´ì–´ì•¼ 합니다." + +#: commands/copy.c:1190 +#, c-format +msgid "argument to option \"%s\" must be a valid encoding name" +msgstr "\"%s\" ì˜µì…˜ì— ëŒ€í•œ ì¸ìžëŠ” ì¸ì½”딩 ì´ë¦„ì´ì–´ì•¼ 합니다." + +#: commands/copy.c:1196 commands/dbcommands.c:232 commands/dbcommands.c:1427 +#, c-format +msgid "option \"%s\" not recognized" +msgstr "\"%s\" ì˜µì…˜ì€ íƒ€ë‹¹í•˜ì§€ 않습니다." + +#: commands/copy.c:1207 +#, c-format +msgid "cannot specify DELIMITER in BINARY mode" +msgstr "BINARY 모드ì—서는 DELIMITER ê°’ì„ ì§€ì •í•  수 ì—†ìŒ" + +#: commands/copy.c:1212 +#, c-format +msgid "cannot specify NULL in BINARY mode" +msgstr "BINARY 모드ì—서는 NULL ê°’ì„ ì§€ì •í•  수 ì—†ìŒ" + +#: commands/copy.c:1234 +#, c-format +msgid "COPY delimiter must be a single one-byte character" +msgstr "COPY 구분ìžëŠ” 1ë°”ì´íŠ¸ì˜ ë‹¨ì¼ ë¬¸ìžì—¬ì•¼ 함" + +#: commands/copy.c:1241 +#, c-format +msgid "COPY delimiter cannot be newline or carriage return" +msgstr "COPY 명령ì—서 사용할 칼럼 구분ìžë¡œ 줄바꿈 문ìžë“¤ì„ 사용할 수 없습니다" + +#: commands/copy.c:1247 +#, c-format +msgid "COPY null representation cannot use newline or carriage return" +msgstr "COPY null 표현ì—서 줄바꿈 ë˜ëŠ” ìºë¦¬ì§€ ë¦¬í„´ì„ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: commands/copy.c:1264 +#, c-format +msgid "COPY delimiter cannot be \"%s\"" +msgstr "COPY 구분ìžëŠ” \"%s\"ì¼ ìˆ˜ ì—†ìŒ" + +#: commands/copy.c:1270 +#, c-format +msgid "COPY HEADER available only in CSV mode" +msgstr "COPY HEADER는 CSV 모드ì—서만 사용할 수 있ìŒ" + +#: commands/copy.c:1276 +#, c-format +msgid "COPY quote available only in CSV mode" +msgstr "COPY 따옴표는 CSV 모드ì—서만 사용할 수 있ìŒ" + +#: commands/copy.c:1281 +#, c-format +msgid "COPY quote must be a single one-byte character" +msgstr "COPY 따옴표는 1ë°”ì´íŠ¸ì˜ ë‹¨ì¼ ë¬¸ìžì—¬ì•¼ 함" + +#: commands/copy.c:1286 +#, c-format +msgid "COPY delimiter and quote must be different" +msgstr "COPY êµ¬ë¶„ìž ë° ë”°ì˜´í‘œëŠ” 서로 달ë¼ì•¼ 함" + +#: commands/copy.c:1292 +#, c-format +msgid "COPY escape available only in CSV mode" +msgstr "COPY ì´ìŠ¤ì¼€ì´í”„는 CSV 모드ì—서만 사용할 수 있ìŒ" + +#: commands/copy.c:1297 +#, c-format +msgid "COPY escape must be a single one-byte character" +msgstr "COPY ì´ìŠ¤ì¼€ì´í”„는 1ë°”ì´íŠ¸ì˜ ë‹¨ì¼ ë¬¸ìžì—¬ì•¼ 함" + +#: commands/copy.c:1303 +#, c-format +msgid "COPY force quote available only in CSV mode" +msgstr "COPY force quote는 CSV 모드ì—서만 사용할 수 있ìŒ" + +#: commands/copy.c:1307 +#, c-format +msgid "COPY force quote only available using COPY TO" +msgstr "COPY force quote는 COPY TOì—서만 사용할 수 있ìŒ" + +#: commands/copy.c:1313 +#, c-format +msgid "COPY force not null available only in CSV mode" +msgstr "COPY force not nullì€ CSV 모드ì—서만 사용할 수 있ìŒ" + +#: commands/copy.c:1317 +#, c-format +msgid "COPY force not null only available using COPY FROM" +msgstr "COPY force not nullì€ COPY FROMì—서만 사용할 수 있ìŒ" + +#: commands/copy.c:1323 +#, c-format +msgid "COPY force null available only in CSV mode" +msgstr "COPY force nullì€ CSV 모드ì—서만 사용할 수 있ìŒ" + +#: commands/copy.c:1328 +#, c-format +msgid "COPY force null only available using COPY FROM" +msgstr "COPY force nullì€ COPY FROMì—서만 사용할 수 있ìŒ" + +#: commands/copy.c:1334 +#, c-format +msgid "COPY delimiter must not appear in the NULL specification" +msgstr "COPY 구분ìžëŠ” NULL ì§€ì •ì— í‘œì‹œë˜ì§€ 않아야 함" + +#: commands/copy.c:1341 +#, c-format +msgid "CSV quote character must not appear in the NULL specification" +msgstr "CSV 따옴표는 NULL ì§€ì •ì— í‘œì‹œë˜ì§€ 않아야 함" + +#: commands/copy.c:1402 +#, c-format +msgid "table \"%s\" does not have OIDs" +msgstr "" +"\"%s\" í…Œì´ë¸”ì€ without oids ì†ì„±ìœ¼ë¡œ ë§Œë“¤ì–´ì¡Œê¸°ì— OID ê°’ì„ êµ¬í•  수 없습니다" + +#: commands/copy.c:1419 +#, c-format +msgid "COPY (query) WITH OIDS is not supported" +msgstr "COPY (쿼리) WITH OIDS ì§€ì›í•˜ì§€ 않ìŒ" + +#: commands/copy.c:1439 +#, c-format +msgid "DO INSTEAD NOTHING rules are not supported for COPY" +msgstr "DO INSTEAD NOTHING 룰(rule)ì€ COPY 구문ì—서 ì§€ì›í•˜ì§€ 않습니다." + +#: commands/copy.c:1453 +#, c-format +msgid "conditional DO INSTEAD rules are not supported for COPY" +msgstr "ì„ íƒì  DO INSTEAD ë£°ì€ COPY 구문ì—서 ì§€ì›í•˜ì§€ 않ìŒ" + +#: commands/copy.c:1457 +#, c-format +msgid "DO ALSO rules are not supported for the COPY" +msgstr "DO ALSO 룰(rule)ì€ COPY 구문ì—서 ì§€ì›í•˜ì§€ 않습니다." + +#: commands/copy.c:1462 +#, c-format +msgid "multi-statement DO INSTEAD rules are not supported for COPY" +msgstr "다중 구문 DO INSTEAD ë£°ì€ COPY 구문ì—서 ì§€ì›í•˜ì§€ 않ìŒ" + +#: commands/copy.c:1472 +#, c-format +msgid "COPY (SELECT INTO) is not supported" +msgstr "COPY (SELECT INTO) ì§€ì›í•˜ì§€ 않ìŒ" + +#: commands/copy.c:1489 +#, c-format +msgid "COPY query must have a RETURNING clause" +msgstr "COPY 쿼리는 RETURNING ì ˆì´ ìžˆì–´ì•¼ 합니다" + +#: commands/copy.c:1517 +#, c-format +msgid "relation referenced by COPY statement has changed" +msgstr "COPY ë¬¸ì— ì˜í•´ ì°¸ì¡°ëœ ë¦´ë ˆì´ì…˜ì´ 변경 ë˜ì—ˆìŒ" + +#: commands/copy.c:1575 +#, c-format +msgid "FORCE_QUOTE column \"%s\" not referenced by COPY" +msgstr "\"%s\" FORCE_QUOTE ì¹¼ëŸ¼ì€ COPYì—서 참조ë˜ì§€ 않ìŒ" + +#: commands/copy.c:1597 +#, c-format +msgid "FORCE_NOT_NULL column \"%s\" not referenced by COPY" +msgstr "\"%s\" FORCE_NOT_NULL ì¹¼ëŸ¼ì€ COPYì—서 참조ë˜ì§€ 않ìŒ" + +#: commands/copy.c:1619 +#, c-format +msgid "FORCE_NULL column \"%s\" not referenced by COPY" +msgstr "\"%s\" FORCE_NULL ì—´ì€ COPYì—서 참조ë˜ì§€ 않ìŒ" + +#: commands/copy.c:1684 +#, c-format +msgid "could not close pipe to external command: %m" +msgstr "외부 명령으로 파ì´í”„를 ë‹«ì„ ìˆ˜ ì—†ìŒ: %m" + +#: commands/copy.c:1688 +#, c-format +msgid "program \"%s\" failed" +msgstr "\"%s\" 프로그램 실패" + +#: commands/copy.c:1738 +#, c-format +msgid "cannot copy from view \"%s\"" +msgstr "\"%s\" ì´ë¦„ì˜ ê°ì²´ëŠ” ë·°(view)입니다. ìžë£Œë¥¼ 내보낼 수 없습니다" + +#: commands/copy.c:1740 commands/copy.c:1746 commands/copy.c:1752 +#, c-format +msgid "Try the COPY (SELECT ...) TO variant." +msgstr "COPY (SELECT ...) TO ë³€í˜•ì„ ì‹œë„하십시오." + +#: commands/copy.c:1744 +#, c-format +msgid "cannot copy from materialized view \"%s\"" +msgstr "\"%s\" ì´ë¦„ì˜ ê°ì²´ëŠ” êµ¬ì²´í™”ëœ ë·°ìž…ë‹ˆë‹¤. ìžë£Œë¥¼ 내보낼 수 없습니다" + +#: commands/copy.c:1750 +#, c-format +msgid "cannot copy from foreign table \"%s\"" +msgstr "\"%s\" ì´ë¦„ì˜ ê°ì²´ëŠ” 외부 í…Œì´ë¸”입니다. ìžë£Œë¥¼ 내보낼 수 없습니다" + +#: commands/copy.c:1756 +#, c-format +msgid "cannot copy from sequence \"%s\"" +msgstr "\"%s\" ì´ë¦„ì˜ ê°ì²´ëŠ” 시퀀스입니다. ìžë£Œë¥¼ 내보낼 수 없습니다" + +#: commands/copy.c:1761 +#, c-format +msgid "cannot copy from non-table relation \"%s\"" +msgstr "" +"\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”ì´ ì•„ë‹Œ 릴레ì´ì…˜(relation)ì´ê¸°ì— ìžë£Œë¥¼ 내보낼 수 없습니" +"다" + +#: commands/copy.c:1786 commands/copy.c:2822 +#, c-format +msgid "could not execute command \"%s\": %m" +msgstr "\"%s\" ëª…ë ¹ì„ ì‹¤í–‰í•  수 ì—†ìŒ: %m" + +#: commands/copy.c:1801 +#, c-format +msgid "relative path not allowed for COPY to file" +msgstr "COPY ëª…ë ¹ì— ì‚¬ìš©í•  íŒŒì¼ ì´ë¦„으로 ìƒëŒ€ê²½ë¡œëŠ” 사용할 수 없습니다" + +#: commands/copy.c:1809 +#, c-format +msgid "could not open file \"%s\" for writing: %m" +msgstr "\"%s\" íŒŒì¼ ì—´ê¸° 실패: %m" + +#: commands/copy.c:1821 commands/copy.c:2845 +#, c-format +msgid "\"%s\" is a directory" +msgstr "\"%s\" 디렉터리임" + +#: commands/copy.c:2144 +#, c-format +msgid "COPY %s, line %d, column %s" +msgstr "%s 복사, %d번째 줄, %s ì—´" + +#: commands/copy.c:2148 commands/copy.c:2195 +#, c-format +msgid "COPY %s, line %d" +msgstr "%s 복사, %d번째 줄" + +#: commands/copy.c:2159 +#, c-format +msgid "COPY %s, line %d, column %s: \"%s\"" +msgstr "%s 복사, %d번째 줄, %s ì—´: \"%s\"" + +#: commands/copy.c:2167 +#, c-format +msgid "COPY %s, line %d, column %s: null input" +msgstr "COPY %s, %dí–‰, %s ì—´: null ìž…ë ¥" + +#: commands/copy.c:2189 +#, c-format +msgid "COPY %s, line %d: \"%s\"" +msgstr "%s 복사, %d번째 줄: \"%s\"" + +#: commands/copy.c:2273 +#, c-format +msgid "cannot copy to view \"%s\"" +msgstr "\"%s\" ë·°(view)ì— ë³µì‚¬í•  수 ì—†ìŒ" + +#: commands/copy.c:2278 +#, c-format +msgid "cannot copy to materialized view \"%s\"" +msgstr "\"%s\" êµ¬ì²´í™”ëœ ë·°(view)ì— ë³µì‚¬í•  수 ì—†ìŒ" + +#: commands/copy.c:2283 +#, c-format +msgid "cannot copy to foreign table \"%s\"" +msgstr "\"%s\" 외부 í…Œì´ë¸”ì— ë³µì‚¬í•  수 ì—†ìŒ" + +#: commands/copy.c:2288 +#, c-format +msgid "cannot copy to sequence \"%s\"" +msgstr "\"%s\" ì‹œí€€ìŠ¤ì— ë³µì‚¬í•  수 ì—†ìŒ" + +#: commands/copy.c:2293 +#, c-format +msgid "cannot copy to non-table relation \"%s\"" +msgstr "\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”ì´ ì•„ë‹Œ 릴레ì´ì…˜(relation)ì´ê¸°ì— 복사할 수 ì—†ìŒ" + +#: commands/copy.c:2356 +#, c-format +msgid "cannot perform FREEZE because of prior transaction activity" +msgstr "" +"먼저 시작한 다른 íŠ¸ëžœìž­ì…˜ì´ ì•„ì§ í™œì„± ìƒíƒœì—¬ì„œ FREEZE ìž‘ì—…ì€ ì§„í–‰í•  수 ì—†ìŒ" + +#: commands/copy.c:2362 +#, c-format +msgid "" +"cannot perform FREEZE because the table was not created or truncated in the " +"current subtransaction" +msgstr "" +"현재 하위 트랜잭션ì—서 만들어지거나 비워진 í…Œì´ë¸”ì´ ì•„ë‹ˆê¸° ë•Œë¬¸ì— FREEZE 작업" +"ì„ í•  수 ì—†ìŒ" + +#: commands/copy.c:2865 +#, c-format +msgid "COPY file signature not recognized" +msgstr "file signature 복사는 ì¸ì‹ë˜ì§€ 않았ìŒ" + +#: commands/copy.c:2870 +#, c-format +msgid "invalid COPY file header (missing flags)" +msgstr "COPY 명령ì—서 ìž˜ëª»ëœ íŒŒì¼ í—¤ë”를 사용함(플래그 빠졌ìŒ)" + +#: commands/copy.c:2876 +#, c-format +msgid "unrecognized critical flags in COPY file header" +msgstr "_^_ 복사 íŒŒì¼ í—¤ë”ì•ˆì— critical flags ê°’ë“¤ì„ ì¸ì‹í•  수 ì—†ìŒ" + +#: commands/copy.c:2882 +#, c-format +msgid "invalid COPY file header (missing length)" +msgstr "복사 íŒŒì¼ í—¤ë”ì— length ê°’ì´ ë¹ ì¡ŒìŒ" + +#: commands/copy.c:2889 +#, c-format +msgid "invalid COPY file header (wrong length)" +msgstr "복사 íŒŒì¼ í—¤ë”ì— length ê°’ì´ ìž˜ëª»ë˜ì—ˆìŒ" + +#: commands/copy.c:3022 commands/copy.c:3729 commands/copy.c:3959 +#, c-format +msgid "extra data after last expected column" +msgstr "마지막 ì—´ì„ ì´ˆê³¼í•´ì„œ ë˜ ë‹¤ë¥¸ ë°ì´í„°ê°€ 있ìŒ" + +#: commands/copy.c:3032 +#, c-format +msgid "missing data for OID column" +msgstr "OID ì—´ì— ìžë£Œê°€ ì—†ìŒ" + +#: commands/copy.c:3038 +#, c-format +msgid "null OID in COPY data" +msgstr "복사 ë°ì´í„°ì— null OID ê°’ì´ ìžˆìŒ" + +#: commands/copy.c:3048 commands/copy.c:3171 +#, c-format +msgid "invalid OID in COPY data" +msgstr "복사 ë°ì´í„°ì— ìž˜ëª»ëœ OID ê°’ì´ ìžˆìŒ" + +#: commands/copy.c:3063 +#, c-format +msgid "missing data for column \"%s\"" +msgstr "\"%s\" ì—´ì˜ ìžë£Œê°€ 빠졌ìŒ" + +#: commands/copy.c:3146 +#, c-format +msgid "received copy data after EOF marker" +msgstr "EOF 표시 ë’¤ì—ë„ ë³µì‚¬ ë°ì´í„°ë¥¼ 받았ìŒ" + +#: commands/copy.c:3153 +#, c-format +msgid "row field count is %d, expected %d" +msgstr "í–‰(row) 필드 갯수가 %d ìž„, 예ìƒê°’ì€ %d" + +#: commands/copy.c:3493 commands/copy.c:3510 +#, c-format +msgid "literal carriage return found in data" +msgstr "ë°ì´í„°ì— carriage return ê°’ì´ ìž˜ëª»ë˜ì—ˆìŒ" + +#: commands/copy.c:3494 commands/copy.c:3511 +#, c-format +msgid "unquoted carriage return found in data" +msgstr "ë°ì´í„°ì— carriage return ê°’ 표기가 잘못 ë˜ì—ˆìŒ" + +#: commands/copy.c:3496 commands/copy.c:3513 +#, c-format +msgid "Use \"\\r\" to represent carriage return." +msgstr "carriage return값으로 \"\\r\" 문ìžë¥¼ 사용하세요" + +#: commands/copy.c:3497 commands/copy.c:3514 +#, c-format +msgid "Use quoted CSV field to represent carriage return." +msgstr "" +"carriage return 문ìžë¥¼ 그대로 ì ìš©í•˜ë ¤ë©´, quoted CSV 필드를 사용하세요." + +#: commands/copy.c:3526 +#, c-format +msgid "literal newline found in data" +msgstr "ë°ì´í„°ì— newline ê°’ì´ ìž˜ëª»ë˜ì—ˆìŒ" + +#: commands/copy.c:3527 +#, c-format +msgid "unquoted newline found in data" +msgstr "ë°ì´í„°ì— newline ê°’ì´ ìž˜ëª» ë˜ì—ˆìŒ" + +#: commands/copy.c:3529 +#, c-format +msgid "Use \"\\n\" to represent newline." +msgstr "newline 값으로 \"\\n\" 문ìžë¥¼ 사용하세요" + +#: commands/copy.c:3530 +#, c-format +msgid "Use quoted CSV field to represent newline." +msgstr "newline 문ìžë¥¼ 그대로 ì ìš©í•˜ë ¤ë©´, quoted CSV 필드를 사용하세요." + +#: commands/copy.c:3576 commands/copy.c:3612 +#, c-format +msgid "end-of-copy marker does not match previous newline style" +msgstr "end-of-copy 마í¬ëŠ” ì´ì „ newline 모양가 틀립니다" + +#: commands/copy.c:3585 commands/copy.c:3601 +#, c-format +msgid "end-of-copy marker corrupt" +msgstr "end-of-copy 마í¬ê°€ 잘못ë˜ì—ˆìŒ" + +#: commands/copy.c:4043 +#, c-format +msgid "unterminated CSV quoted field" +msgstr "종료ë˜ì§€ ì•Šì€ CSV 따옴표 필드" + +#: commands/copy.c:4120 commands/copy.c:4139 +#, c-format +msgid "unexpected EOF in COPY data" +msgstr "복사 ìžë£Œ ì•ˆì— ì˜ˆìƒì¹˜ ì•Šì€ EOF 발견" + +#: commands/copy.c:4129 +#, c-format +msgid "invalid field size" +msgstr "ìž˜ëª»ëœ í•„ë“œ í¬ê¸°" + +#: commands/copy.c:4152 +#, c-format +msgid "incorrect binary data format" +msgstr "ìž˜ëª»ëœ ë°”ì´ë„ˆë¦¬ ìžë£Œ í¬ë§·" + +#: commands/copy.c:4463 commands/indexcmds.c:1054 commands/tablecmds.c:1464 +#: commands/tablecmds.c:2291 parser/parse_relation.c:3177 +#: parser/parse_relation.c:3197 utils/adt/tsvector_op.c:2559 +#, c-format +msgid "column \"%s\" does not exist" +msgstr "\"%s\" ì´ë¦„ì˜ ì—´ì´ ì—†ìŠµë‹ˆë‹¤" + +#: commands/copy.c:4470 commands/tablecmds.c:1490 commands/trigger.c:651 +#: parser/parse_target.c:967 parser/parse_target.c:978 +#, c-format +msgid "column \"%s\" specified more than once" +msgstr "\"%s\" ì—´ì„ í•˜ë‚˜ ì´ìƒ 지정했ìŒ" + +#: commands/createas.c:213 commands/createas.c:509 +#, c-format +msgid "too many column names were specified" +msgstr "너무 ë§Žì€ ì¹¼ëŸ¼ ì´ë¦„ì„ ì§€ì •í–ˆìŠµë‹ˆë‹¤." + +#: commands/createas.c:550 +#, c-format +msgid "policies not yet implemented for this command" +msgstr "ì´ ëª…ë ¹ì„ ìœ„í•œ ì •ì±…ì€ ì•„ì§ êµ¬í˜„ë˜ì–´ 있지 않습니다" + +#: commands/dbcommands.c:226 +#, c-format +msgid "LOCATION is not supported anymore" +msgstr "LOCATION 예약어는 ì´ì œ ë”ì´ìƒ ì§€ì›í•˜ì§€ 않습니다" + +#: commands/dbcommands.c:227 +#, c-format +msgid "Consider using tablespaces instead." +msgstr "ëŒ€ì‹ ì— í…Œì´ë¸”스페ì´ìŠ¤ë¥¼ ì´ìš©í•˜ì„¸ìš”." + +#: commands/dbcommands.c:251 utils/adt/ascii.c:144 +#, c-format +msgid "%d is not a valid encoding code" +msgstr "%d ê°’ì€ ìž˜ëª»ëœ ì¸ì½”딩 코드임" + +#: commands/dbcommands.c:261 utils/adt/ascii.c:126 +#, c-format +msgid "%s is not a valid encoding name" +msgstr "%s ì´ë¦„ì€ ìž˜ëª»ëœ ì¸ì½”딩 ì´ë¦„ìž„" + +#: commands/dbcommands.c:279 commands/dbcommands.c:1458 commands/user.c:272 +#: commands/user.c:650 +#, c-format +msgid "invalid connection limit: %d" +msgstr "ìž˜ëª»ëœ ì—°ê²° 제한: %d" + +#: commands/dbcommands.c:298 +#, c-format +msgid "permission denied to create database" +msgstr "ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 만들 ê¶Œí•œì´ ì—†ìŒ" + +#: commands/dbcommands.c:321 +#, c-format +msgid "template database \"%s\" does not exist" +msgstr "\"%s\" 템플릿 ë°ì´í„°ë² ì´ìФ ì—†ìŒ" + +#: commands/dbcommands.c:333 +#, c-format +msgid "permission denied to copy database \"%s\"" +msgstr "\"%s\" ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 복사할 ê¶Œí•œì´ ì—†ìŒ" + +#: commands/dbcommands.c:349 +#, c-format +msgid "invalid server encoding %d" +msgstr "ìž˜ëª»ëœ ì„œë²„ ì¸ì½”딩 %d" + +#: commands/dbcommands.c:355 commands/dbcommands.c:360 +#, c-format +msgid "invalid locale name: \"%s\"" +msgstr "\"%s\" ë¡œì¼€ì¼ ì´ë¦„ì´ ìž˜ëª»ë¨" + +#: commands/dbcommands.c:380 +#, c-format +msgid "" +"new encoding (%s) is incompatible with the encoding of the template database " +"(%s)" +msgstr "새 ì¸ì½”딩(%s)ì´ í…œí”Œë¦¿ ë°ì´í„°ë² ì´ìŠ¤ì˜ ì¸ì½”딩(%s)ê³¼ 호환ë˜ì§€ 않ìŒ" + +#: commands/dbcommands.c:383 +#, c-format +msgid "" +"Use the same encoding as in the template database, or use template0 as " +"template." +msgstr "" +"템플릿 ë°ì´í„°ë² ì´ìŠ¤ì™€ ë™ì¼í•œ ì¸ì½”ë”©ì„ ì‚¬ìš©í•˜ê±°ë‚˜ template0ì„ í…œí”Œë¦¿ìœ¼ë¡œ 사용" +"하십시오." + +#: commands/dbcommands.c:388 +#, c-format +msgid "" +"new collation (%s) is incompatible with the collation of the template " +"database (%s)" +msgstr "" +"새 ë°ì´í„° ì •ë ¬ 규칙 (%s)ì´ í…œí”Œë¦¿ ë°ì´í„°ë² ì´ìŠ¤ì˜ ë°ì´í„° ì •ë ¬ 규칙(%s)ê³¼ 호환" +"ë˜ì§€ 않ìŒ" + +#: commands/dbcommands.c:390 +#, c-format +msgid "" +"Use the same collation as in the template database, or use template0 as " +"template." +msgstr "" +"템플릿 ë°ì´í„°ë² ì´ìŠ¤ì™€ ë™ì¼í•œ ë°ì´í„° ì •ë ¬ ê·œì¹™ì„ ì‚¬ìš©í•˜ê±°ë‚˜ template0ì„ í…œí”Œë¦¿" +"으로 사용하십시오." + +#: commands/dbcommands.c:395 +#, c-format +msgid "" +"new LC_CTYPE (%s) is incompatible with the LC_CTYPE of the template database " +"(%s)" +msgstr "새 LC_CTYPE (%s)ì´ í…œí”Œë¦¿ ë°ì´í„°ë² ì´ìŠ¤ì˜ LC_CTYPE (%s)ê³¼ 호환ë˜ì§€ 않ìŒ" + +#: commands/dbcommands.c:397 +#, c-format +msgid "" +"Use the same LC_CTYPE as in the template database, or use template0 as " +"template." +msgstr "" +"템플릿 ë°ì´í„°ë² ì´ìŠ¤ì™€ ë™ì¼í•œ LC_CTYPEì„ ì‚¬ìš©í•˜ê±°ë‚˜ template0ì„ í…œí”Œë¦¿ìœ¼ë¡œ 사" +"용하십시오." + +#: commands/dbcommands.c:419 commands/dbcommands.c:1113 +#, c-format +msgid "pg_global cannot be used as default tablespace" +msgstr "pg_globalì„ ê¸°ë³¸ í…Œì´ë¸”스페ì´ìŠ¤ë¡œ 사용할 수 ì—†ìŒ" + +#: commands/dbcommands.c:445 +#, c-format +msgid "cannot assign new default tablespace \"%s\"" +msgstr "새 \"%s\" í…Œì´ë¸”스페ì´ìŠ¤ë¥¼ 지정할 수 없습니다." + +#: commands/dbcommands.c:447 +#, c-format +msgid "" +"There is a conflict because database \"%s\" already has some tables in this " +"tablespace." +msgstr "" +"\"%s\" ë°ì´í„°ë² ì´ìФ ì†Œì† ëª‡ëª‡ í…Œì´ë¸”ë“¤ì´ ì´ í…Œì´ë¸”스페ì´ìŠ¤ì•ˆì— ìžˆì–´ì„œ ì¶©ëŒì´ " +"ì¼ì–´ë‚©ë‹ˆë‹¤." + +#: commands/dbcommands.c:467 commands/dbcommands.c:982 +#, c-format +msgid "database \"%s\" already exists" +msgstr "\"%s\" ì´ë¦„ì˜ ë°ì´í„°ë² ì´ìŠ¤ëŠ” ì´ë¯¸ 있ìŒ" + +#: commands/dbcommands.c:481 +#, c-format +msgid "source database \"%s\" is being accessed by other users" +msgstr "\"%s\" ì›ë³¸ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 다른 사용ìžê°€ 액세스하기 시작했습니다" + +#: commands/dbcommands.c:726 commands/dbcommands.c:741 +#, c-format +msgid "encoding \"%s\" does not match locale \"%s\"" +msgstr "\"%s\" ì¸ì½”ë”©ì€ \"%s\" 로케ì¼ê³¼ ì¼ì¹˜í•˜ì§€ 않ìŒ" + +#: commands/dbcommands.c:729 +#, c-format +msgid "The chosen LC_CTYPE setting requires encoding \"%s\"." +msgstr "ì„ íƒí•œ LC_CTYPE 설정ì—는 \"%s\" ì¸ì½”ë”©ì´ í•„ìš”í•©ë‹ˆë‹¤." + +#: commands/dbcommands.c:744 +#, c-format +msgid "The chosen LC_COLLATE setting requires encoding \"%s\"." +msgstr "ì„ íƒí•œ LC_COLLATE 설정ì—는 \"%s\" ì¸ì½”ë”©ì´ í•„ìš”í•©ë‹ˆë‹¤." + +#: commands/dbcommands.c:804 +#, c-format +msgid "database \"%s\" does not exist, skipping" +msgstr "\"%s\" ë°ì´í„°ë² ì´ìФ ì—†ìŒ, 건너 뜀" + +#: commands/dbcommands.c:828 +#, c-format +msgid "cannot drop a template database" +msgstr "템플릿 ë°ì´í„°ë² ì´ìŠ¤ëŠ” 삭제할 수 없습니다" + +#: commands/dbcommands.c:834 +#, c-format +msgid "cannot drop the currently open database" +msgstr "현재 ì—´ë ¤ 있는 ë°ì´í„°ë² ì´ìŠ¤ëŠ” 삭제할 수 없습니다" + +#: commands/dbcommands.c:844 +#, c-format +msgid "database \"%s\" is used by a logical replication slot" +msgstr "\"%s\" ë°ì´í„°ë² ì´ìŠ¤ê°€ 논리 복제 슬롯ì—ì˜í•´ 사용ë˜ì—ˆìŒ" + +#: commands/dbcommands.c:846 +#, c-format +msgid "There is %d slot, %d of them active." +msgid_plural "There are %d slots, %d of them active." +msgstr[0] "" + +#: commands/dbcommands.c:860 commands/dbcommands.c:1004 +#: commands/dbcommands.c:1135 +#, c-format +msgid "database \"%s\" is being accessed by other users" +msgstr "\"%s\" ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 다른 사용ìžê°€ 액세스하기 시작했습니다" + +#: commands/dbcommands.c:973 +#, c-format +msgid "permission denied to rename database" +msgstr "ë°ì´í„°ë² ì´ìФ ì´ë¦„ì„ ë°”ê¿€ ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤" + +#: commands/dbcommands.c:993 +#, c-format +msgid "current database cannot be renamed" +msgstr "현재 ë°ì´í„°ë² ì´ìŠ¤ì˜ ì´ë¦„ì„ ë°”ê¿€ 수 ì—†ìŒ" + +#: commands/dbcommands.c:1091 +#, c-format +msgid "cannot change the tablespace of the currently open database" +msgstr "현재 ì—´ë ¤ 있는 ë°ì´í„°ë² ì´ìŠ¤ì˜ í…Œì´ë¸”스페ì´ìŠ¤ë¥¼ 바꿀 수 ì—†ìŒ" + +#: commands/dbcommands.c:1194 +#, c-format +msgid "some relations of database \"%s\" are already in tablespace \"%s\"" +msgstr "" +"\"%s\" ë°ì´í„°ë² ì´ìŠ¤ì˜ ì¼ë¶€ 릴레ì´ì…˜ë“¤ì´ \"%s\" í…Œì´ë¸”스페ì´ìŠ¤ì— ì´ë¯¸ 있ìŒ" + +#: commands/dbcommands.c:1196 +#, c-format +msgid "" +"You must move them back to the database's default tablespace before using " +"this command." +msgstr "" +"ì´ ëª…ë ¹ì„ ì‚¬ìš©í•˜ê¸° ì „ì— ë°ì´í„°ë² ì´ìŠ¤ì˜ ê¸°ë³¸ í…Œì´ë¸”스페ì´ìŠ¤ë¡œ 다시 ì´ë™í•´ì•¼ í•©" +"니다." + +#: commands/dbcommands.c:1325 commands/dbcommands.c:1868 +#: commands/dbcommands.c:2072 commands/dbcommands.c:2120 +#: commands/tablespace.c:606 +#, c-format +msgid "some useless files may be left behind in old database directory \"%s\"" +msgstr "" +"불필요한 ì¼ë¶€ 파ì¼ì´ ì´ì „ ë°ì´í„°ë² ì´ìФ 디렉터리 \"%s\"ì— ë‚¨ì•„ ìžˆì„ ìˆ˜ 있ìŒ" + +#: commands/dbcommands.c:1440 +#, c-format +msgid "option \"%s\" cannot be specified with other options" +msgstr "\"%s\" ì˜µì…˜ì€ ë‹¤ë¥¸ 옵션들과 함께 사용할 수 없습니다." + +#: commands/dbcommands.c:1494 +#, c-format +msgid "cannot disallow connections for current database" +msgstr "현재 ë°ì´í„°ë² ì´ìФ ì—°ê²°ì„ í—ˆìš©í•˜ì§€ 않습니다." + +#: commands/dbcommands.c:1634 +#, c-format +msgid "permission denied to change owner of database" +msgstr "ë°ì´í„°ë² ì´ìФ 소유주를 바꿀 ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤" + +#: commands/dbcommands.c:1955 +#, c-format +msgid "" +"There are %d other session(s) and %d prepared transaction(s) using the " +"database." +msgstr "" +"ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 사용하는 %dê°œì˜ ë‹¤ë¥¸ 세션과 %dê°œì˜ ì¤€ë¹„ëœ íŠ¸ëžœìž­ì…˜ì´ ìžˆìŠµë‹ˆë‹¤." + +#: commands/dbcommands.c:1958 +#, c-format +msgid "There is %d other session using the database." +msgid_plural "There are %d other sessions using the database." +msgstr[0] "ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 사용하는 %dê°œì˜ ë‹¤ë¥¸ ì„¸ì…˜ì´ ìžˆìŠµë‹ˆë‹¤." + +#: commands/dbcommands.c:1963 +#, c-format +msgid "There is %d prepared transaction using the database." +msgid_plural "There are %d prepared transactions using the database." +msgstr[0] "ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 사용하는 %dê°œì˜ ì¤€ë¹„ëœ íŠ¸ëžœìž­ì…˜ì´ ìžˆìŠµë‹ˆë‹¤." + +#: commands/define.c:54 commands/define.c:228 commands/define.c:260 +#: commands/define.c:288 +#, c-format +msgid "%s requires a parameter" +msgstr "%s 매개 변수를 필요로 함" + +#: commands/define.c:90 commands/define.c:101 commands/define.c:195 +#: commands/define.c:213 +#, c-format +msgid "%s requires a numeric value" +msgstr "%s 숫ìžê°’ì„ í•„ìš”ë¡œ 함" + +#: commands/define.c:157 +#, c-format +msgid "%s requires a Boolean value" +msgstr "%s ê°’ì€ boolean ê°’ì´ì–´ì•¼í•©ë‹ˆë‹¤." + +#: commands/define.c:171 commands/define.c:180 commands/define.c:297 +#, c-format +msgid "%s requires an integer value" +msgstr "%s í•˜ë‚˜ì˜ ì •ìˆ˜ê°’ì´ í•„ìš”í•¨" + +#: commands/define.c:242 +#, c-format +msgid "argument of %s must be a name" +msgstr "%sì˜ ì¸ìžëŠ” ì´ë¦„ì´ì–´ì•¼ 합니다" + +#: commands/define.c:272 +#, c-format +msgid "argument of %s must be a type name" +msgstr "%sì˜ ì¸ìžëŠ” ìžë£Œí˜• ì´ë¦„ì´ì–´ì•¼í•©ë‹ˆë‹¤" + +#: commands/define.c:318 +#, c-format +msgid "invalid argument for %s: \"%s\"" +msgstr "%sì˜ ìž˜ëª»ëœ ì¸ìž: \"%s\"" + +#: commands/dropcmds.c:112 commands/functioncmds.c:1203 +#: utils/adt/ruleutils.c:2080 +#, c-format +msgid "\"%s\" is an aggregate function" +msgstr "\"%s\" 함수는 집계 함수입니다" + +#: commands/dropcmds.c:114 +#, c-format +msgid "Use DROP AGGREGATE to drop aggregate functions." +msgstr "집계 함수는 DROP AGGREGATE 명령으로 삭제할 수 있습니다" + +#: commands/dropcmds.c:165 commands/sequence.c:424 commands/tablecmds.c:2378 +#: commands/tablecmds.c:2529 commands/tablecmds.c:2571 +#: commands/tablecmds.c:11524 tcop/utility.c:1119 +#, c-format +msgid "relation \"%s\" does not exist, skipping" +msgstr "\"%s\" 릴레ì´ì…˜ ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:195 commands/dropcmds.c:296 commands/tablecmds.c:746 +#, c-format +msgid "schema \"%s\" does not exist, skipping" +msgstr "\"%s\" 스키마(schema) ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:237 commands/dropcmds.c:276 commands/tablecmds.c:247 +#, c-format +msgid "type \"%s\" does not exist, skipping" +msgstr "\"%s\" ìžë£Œí˜• ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:266 +#, c-format +msgid "access method \"%s\" does not exist, skipping" +msgstr "\"%s\" ì¸ë±ìФ ì ‘ê·¼ 방법 ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:284 +#, c-format +msgid "collation \"%s\" does not exist, skipping" +msgstr "\"%s\" 정렬규칙 ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:291 +#, c-format +msgid "conversion \"%s\" does not exist, skipping" +msgstr "\"%s\" 문ìžì½”드변환규칙(conversion) ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:302 +#, c-format +msgid "text search parser \"%s\" does not exist, skipping" +msgstr "\"%s\" 전문 검색 파서가 ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:309 +#, c-format +msgid "text search dictionary \"%s\" does not exist, skipping" +msgstr "\"%s\" 전문 검색 ì‚¬ì „ì´ ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:316 +#, c-format +msgid "text search template \"%s\" does not exist, skipping" +msgstr "\"%s\" 전문 검색 í…œí”Œë¦¿ì´ ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:323 +#, c-format +msgid "text search configuration \"%s\" does not exist, skipping" +msgstr "\"%s\" 전문 검색 êµ¬ì„±ì´ ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:328 +#, c-format +msgid "extension \"%s\" does not exist, skipping" +msgstr "\"%s\" 확장 모듈 ì—†ìŒ, 건너 뜀" + +#: commands/dropcmds.c:335 +#, c-format +msgid "function %s(%s) does not exist, skipping" +msgstr "%s(%s) 함수가 ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:344 +#, c-format +msgid "aggregate %s(%s) does not exist, skipping" +msgstr "%s(%s) 집계 함수 ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:353 +#, c-format +msgid "operator %s does not exist, skipping" +msgstr "%s ì—°ì‚°ìžê°€ ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:358 +#, c-format +msgid "language \"%s\" does not exist, skipping" +msgstr "\"%s\" 프로시주얼 언어 ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:367 +#, c-format +msgid "cast from type %s to type %s does not exist, skipping" +msgstr "%s 형ì—서 %s 형으로 바꾸는 형변환 규칙(cast)ì´ ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:376 +#, c-format +msgid "transform for type %s language \"%s\" does not exist, skipping" +msgstr "%s í˜•ë³€í™˜ìž (사용언어 \"%s\") ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:384 +#, c-format +msgid "trigger \"%s\" for relation \"%s\" does not exist, skipping" +msgstr " \"%s\" 트리거가 \"%s\" 릴레ì´ì…˜ì— ì§€ì •ëœ ê²ƒì´ ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:393 +#, c-format +msgid "policy \"%s\" for relation \"%s\" does not exist, skipping" +msgstr " \"%s\" ì •ì±…ì´ \"%s\" 릴레ì´ì…˜ì— ì§€ì •ëœ ê²ƒì´ ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:400 +#, c-format +msgid "event trigger \"%s\" does not exist, skipping" +msgstr "\"%s\" ì´ë²¤íЏ 트리거 ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:406 +#, c-format +msgid "rule \"%s\" for relation \"%s\" does not exist, skipping" +msgstr " \"%s\" 룰(rule)ì´ \"%s\" 릴레ì´ì…˜ì— ì§€ì •ëœ ê²ƒì´ ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:413 +#, c-format +msgid "foreign-data wrapper \"%s\" does not exist, skipping" +msgstr "\"%s\" 외부 ìžë£Œ 래í¼ê°€ ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:417 +#, c-format +msgid "server \"%s\" does not exist, skipping" +msgstr "\"%s\" 서버가 ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:426 +#, c-format +msgid "operator class \"%s\" does not exist for access method \"%s\", skipping" +msgstr "" +"\"%s\" ì—°ì‚°ìž í´ëž˜ìŠ¤ëŠ” \"%s\" ì¸ë±ìФ ì ‘ê·¼ 방법ì—서 사용할 수 ì—†ìŒ, 건너뜀" + +#: commands/dropcmds.c:438 +#, c-format +msgid "" +"operator family \"%s\" does not exist for access method \"%s\", skipping" +msgstr "\"%s\" ì—°ì‚°ìž íŒ¨ë°€ë¦¬(\"%s\" ì ‘ê·¼ 방법)ê°€ ì—†ìŒ, 건너뜀" + +#: commands/event_trigger.c:182 +#, c-format +msgid "permission denied to create event trigger \"%s\"" +msgstr "\"%s\" ì´ë²¤íЏ 트리거를 만들 ê¶Œí•œì´ ì—†ìŒ" + +#: commands/event_trigger.c:184 +#, c-format +msgid "Must be superuser to create an event trigger." +msgstr "슈í¼ìœ ì €ë§Œ ì´ë²¤íЏ 트리거를 만들 수 있습니다." + +#: commands/event_trigger.c:193 +#, c-format +msgid "unrecognized event name \"%s\"" +msgstr "알 수 없는 ì´ë²¤íЏ ì´ë¦„: \"%s\"" + +#: commands/event_trigger.c:210 +#, c-format +msgid "unrecognized filter variable \"%s\"" +msgstr "알 수 없는 í•„í„° 변수: \"%s\"" + +#: commands/event_trigger.c:265 +#, c-format +msgid "filter value \"%s\" not recognized for filter variable \"%s\"" +msgstr "\"%s\" í•„í„°ê°’ì€ \"%s\" í•„í„° 변수으로 쓸 수 ì—†ìŒ" + +#. translator: %s represents an SQL statement name +#: commands/event_trigger.c:271 commands/event_trigger.c:341 +#, c-format +msgid "event triggers are not supported for %s" +msgstr "%s ìš© ì´ë²¤íЏ 트리거는 ì§€ì›í•˜ì§€ 않ìŒ" + +#: commands/event_trigger.c:364 +#, c-format +msgid "filter variable \"%s\" specified more than once" +msgstr "\"%s\" í•„í„° 변수가 한 번 ì´ìƒ 사용ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: commands/event_trigger.c:512 commands/event_trigger.c:556 +#: commands/event_trigger.c:649 +#, c-format +msgid "event trigger \"%s\" does not exist" +msgstr "\"%s\" ì´ë²¤íЏ 트리거 ì—†ìŒ" + +#: commands/event_trigger.c:617 +#, c-format +msgid "permission denied to change owner of event trigger \"%s\"" +msgstr "\"%s\" ì´ë²¤íЏ 트리거 소유주를 변경할 ê¶Œí•œì´ ì—†ìŒ" + +#: commands/event_trigger.c:619 +#, c-format +msgid "The owner of an event trigger must be a superuser." +msgstr "ì´ë²¤íЏ 트리거 소유주는 슈í¼ìœ ì €ì—¬ì•¼ 합니다." + +#: commands/event_trigger.c:1438 +#, c-format +msgid "%s can only be called in a sql_drop event trigger function" +msgstr "%s ê°ì²´ëŠ” sql_drop ì´ë²¤íЏ 트리거 함수 안ì—서만 호출 ë˜ì–´ì•¼ 합니다." + +#: commands/event_trigger.c:1558 commands/event_trigger.c:1579 +#, c-format +msgid "%s can only be called in a table_rewrite event trigger function" +msgstr "" +"%s ê°ì²´ëŠ” table_rewrite ì´ë²¤íЏ 트리거 함수 안ì—서만 호출 ë˜ì–´ì•¼ 합니다." + +#: commands/event_trigger.c:1989 +#, c-format +msgid "%s can only be called in an event trigger function" +msgstr "%s ê°ì²´ëŠ” ì´ë²¤íЏ 트리거 함수 안ì—서만 호출 ë˜ì–´ì•¼ 합니다." + +#: commands/explain.c:185 +#, c-format +msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\"" +msgstr "\"%s\" EXPLAIN 옵션ì—서 쓸 수 없는 ê°’: \"%s\"" + +#: commands/explain.c:191 +#, c-format +msgid "unrecognized EXPLAIN option \"%s\"" +msgstr "ìž˜ëª»ëœ EXPLAIN 옵션: \"%s\"" + +#: commands/explain.c:198 +#, c-format +msgid "EXPLAIN option BUFFERS requires ANALYZE" +msgstr "BUFFERS ì˜µì…˜ì€ EXPLAIN ANALYZEì—서만 쓸 수 있습니다." + +#: commands/explain.c:207 +#, c-format +msgid "EXPLAIN option TIMING requires ANALYZE" +msgstr "TIMING ì˜µì…˜ì€ EXPLAIN ANALYZEì—서만 쓸 수 있습니다." + +#: commands/extension.c:155 commands/extension.c:2719 +#, c-format +msgid "extension \"%s\" does not exist" +msgstr "\"%s\" ì´ë¦„ì˜ í™•ìž¥ ëª¨ë“ˆì´ ì—†ìŠµë‹ˆë‹¤" + +#: commands/extension.c:254 commands/extension.c:263 commands/extension.c:275 +#: commands/extension.c:285 +#, c-format +msgid "invalid extension name: \"%s\"" +msgstr "ìž˜ëª»ëœ í™•ìž¥ 모듈 ì´ë¦„: \"%s\"" + +#: commands/extension.c:255 +#, c-format +msgid "Extension names must not be empty." +msgstr "확장 모듈 ì´ë¦„ì„ ì§€ì •í•˜ì„¸ìš”." + +#: commands/extension.c:264 +#, c-format +msgid "Extension names must not contain \"--\"." +msgstr "확장 모듈 ì´ë¦„ì— \"--\" 문ìžê°€ í¬í•¨ë  수 없습니다." + +#: commands/extension.c:276 +#, c-format +msgid "Extension names must not begin or end with \"-\"." +msgstr "확장 모듈 ì´ë¦„ì˜ ì‹œìž‘ê³¼ ëì—는 \"-\" 문ìžë¥¼ 사용할 수 없습니다." + +#: commands/extension.c:286 +#, c-format +msgid "Extension names must not contain directory separator characters." +msgstr "확장 모듈 ì´ë¦„ì—는 디렉터리 구분 문ìžë¥¼ 사용할 수 없습니다." + +#: commands/extension.c:301 commands/extension.c:310 commands/extension.c:319 +#: commands/extension.c:329 +#, c-format +msgid "invalid extension version name: \"%s\"" +msgstr "ìž˜ëª»ëœ í™•ìž¥ 모듈 버전 ì´ë¦„: \"%s\"" + +#: commands/extension.c:302 +#, c-format +msgid "Version names must not be empty." +msgstr "버전 ì´ë¦„ì€ ë¹„ì–´ìžˆìœ¼ë©´ 안ë©ë‹ˆë‹¤" + +#: commands/extension.c:311 +#, c-format +msgid "Version names must not contain \"--\"." +msgstr "버전 ì´ë¦„ì— \"--\" 문ìžê°€ í¬í•¨ë  수 없습니다." + +#: commands/extension.c:320 +#, c-format +msgid "Version names must not begin or end with \"-\"." +msgstr "버전 ì´ë¦„ì˜ ì•ž ë’¤ì— \"-\" 문ìžë¥¼ 쓸 수 없습니다." + +#: commands/extension.c:330 +#, c-format +msgid "Version names must not contain directory separator characters." +msgstr "버전 ì´ë¦„ì—는 디렉터리 분리 문ìžë¥¼ 쓸 수 없습니다." + +#: commands/extension.c:480 +#, c-format +msgid "could not open extension control file \"%s\": %m" +msgstr "\"%s\" 확장 모듈 제어 íŒŒì¼ ì—´ê¸° 실패: %m" + +#: commands/extension.c:502 commands/extension.c:512 +#, c-format +msgid "parameter \"%s\" cannot be set in a secondary extension control file" +msgstr "\"%s\" 매개 변수는 ì´ì°¨ 확장 모듈 제어 파ì¼ì—서는 사용할 수 없습니다." + +#: commands/extension.c:551 +#, c-format +msgid "\"%s\" is not a valid encoding name" +msgstr "\"%s\" ì´ë¦„ì€ ìž˜ëª»ëœ ì¸ì½”딩 ì´ë¦„ìž„" + +#: commands/extension.c:565 +#, c-format +msgid "parameter \"%s\" must be a list of extension names" +msgstr "\"%s\" 매개 변수는 확장 모듈 ì´ë¦„ 목ë¡ì´ì–´ì•¼ 함" + +#: commands/extension.c:572 +#, c-format +msgid "unrecognized parameter \"%s\" in file \"%s\"" +msgstr "알 수 없는 \"%s\" 매개 변수가 \"%s\" íŒŒì¼ ì•ˆì— ìžˆìŠµë‹ˆë‹¤." + +#: commands/extension.c:581 +#, c-format +msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true" +msgstr "" +"\"relocatable\" ê°’ì´ true ì¸ ê²½ìš° \"schema\" 매개 변수는 사용할 수 없습니다." + +#: commands/extension.c:722 +#, c-format +msgid "" +"transaction control statements are not allowed within an extension script" +msgstr "확장 모듈 스í¬ë¦½íЏ 안ì—서는 트랜잭션 제어 êµ¬ë¬¸ì€ ì‚¬ìš©í•  수 없습니다." + +#: commands/extension.c:790 +#, c-format +msgid "permission denied to create extension \"%s\"" +msgstr "\"%s\" 확장 ëª¨ë“ˆì„ ë§Œë“¤ ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤" + +#: commands/extension.c:792 +#, c-format +msgid "Must be superuser to create this extension." +msgstr "확장 ëª¨ë“ˆì€ ìŠˆí¼ìœ ì €ë§Œ 만들 수 있습니다." + +#: commands/extension.c:796 +#, c-format +msgid "permission denied to update extension \"%s\"" +msgstr "\"%s\" 확장 ëª¨ë“ˆì„ ì—…ë°ì´íŠ¸í•  ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤." + +#: commands/extension.c:798 +#, c-format +msgid "Must be superuser to update this extension." +msgstr "슈í¼ìœ ì €ë§Œ 해당 ëª¨ë“ˆì„ ì—…ë°ì´íЏ í•  수 있습니다." + +#: commands/extension.c:1080 +#, c-format +msgid "" +"extension \"%s\" has no update path from version \"%s\" to version \"%s\"" +msgstr "" +"\"%s\" 확장 ëª¨ë“ˆì„ \"%s\" 버전ì—서 \"%s\" 버전으로 ì—…ë°ì´íŠ¸í•  ë°©ë²•ì´ ì—†ìŠµë‹ˆ" +"다." + +#: commands/extension.c:1262 commands/extension.c:2779 +#, c-format +msgid "version to install must be specified" +msgstr "설치할 ë²„ì „ì„ ì§€ì •í•´ì•¼ 합니다." + +#: commands/extension.c:1279 +#, c-format +msgid "FROM version must be different from installation target version \"%s\"" +msgstr "FROM ì ˆì— ì§€ì •í•œ ë²„ì „ì€ ì„¤ì¹˜ëœ \"%s\" 버전과 달ë¼ì•¼ 합니다" + +#: commands/extension.c:1344 +#, c-format +msgid "extension \"%s\" must be installed in schema \"%s\"" +msgstr "\"%s\" 확장 ëª¨ë“ˆì€ \"%s\" 스키마 ì•ˆì— ì„¤ì¹˜ë˜ì–´ì•¼ 합니다." + +#: commands/extension.c:1436 +#, c-format +msgid "cyclic dependency detected between extensions \"%s\" and \"%s\"" +msgstr "\"%s\" 확장 모듈과 \"%s\" 확장 ëª¨ë“ˆì´ ì„œë¡œ ì˜ì¡´ 관계입니다" + +#: commands/extension.c:1441 +#, c-format +msgid "installing required extension \"%s\"" +msgstr "\"%s\" 확장 ëª¨ë“ˆì´ í•„ìš”í•´ì„œ 실치 하는 중" + +#: commands/extension.c:1469 commands/extension.c:2924 +#, c-format +msgid "required extension \"%s\" is not installed" +msgstr "\"%s\" 확장 ëª¨ë“ˆì´ í•„ìš”í•œë°, 설치ë˜ì–´ 있지 않습니다." + +#: commands/extension.c:1471 +#, c-format +msgid "Use CREATE EXTENSION ... CASCADE to install required extensions too." +msgstr "" +"필요한 ëª¨ë“ˆì„ í•¨ê»˜ 설치하려면, CREATE EXTENSION ... CASCADE êµ¬ë¬¸ì„ ì‚¬ìš©í•˜ì„¸" +"ìš”." + +#: commands/extension.c:1535 +#, c-format +msgid "extension \"%s\" already exists, skipping" +msgstr "\"%s\" 확장 ëª¨ë“ˆì´ ì´ë¯¸ 있ìŒ, 건너뜀" + +#: commands/extension.c:1542 +#, c-format +msgid "extension \"%s\" already exists" +msgstr "\"%s\" ì´ë¦„ì˜ í™•ìž¥ ëª¨ë“ˆì´ ì´ë¯¸ 있습니다" + +#: commands/extension.c:1553 +#, c-format +msgid "nested CREATE EXTENSION is not supported" +msgstr "ì¤‘ì²©ëœ CREATE EXTENSION êµ¬ë¬¸ì€ ì§€ì›í•˜ì§€ 않습니다." + +#: commands/extension.c:1681 +#, c-format +msgid "cannot drop extension \"%s\" because it is being modified" +msgstr "%s ì˜ì¡´ê°ì²´ë“¤ì€ 시스템 ê°ì²´ì´ê¸° ë•Œë¬¸ì— ì‚­ì œ ë  ìˆ˜ 없습니다" + +#: commands/extension.c:2152 +#, c-format +msgid "" +"pg_extension_config_dump() can only be called from an SQL script executed by " +"CREATE EXTENSION" +msgstr "" +"pg_extension_config_dump() 함수는 CREATE EXTENSION 명령ì—서 ë‚´ë¶€ì ìœ¼ë¡œ 사용하" +"는 SQL 스í¬ë¦½íЏ ë‚´ì—서만 사용할 수 있습니다." + +#: commands/extension.c:2164 +#, c-format +msgid "OID %u does not refer to a table" +msgstr "%u OID ìžë£Œê°€ í…Œì´ë¸”ì— ì—†ìŠµë‹ˆë‹¤" + +#: commands/extension.c:2169 +#, c-format +msgid "table \"%s\" is not a member of the extension being created" +msgstr "\"%s\" í…Œì´ë¸”ì€ ë§Œë“¤ë ¤ê³  하는 확장 ëª¨ë“ˆì˜ êµ¬ì„± 요소가 아닙니다." + +#: commands/extension.c:2534 +#, c-format +msgid "" +"cannot move extension \"%s\" into schema \"%s\" because the extension " +"contains the schema" +msgstr "\"%s\" 확장 ëª¨ë“ˆì´ \"%s\" ìŠ¤í‚¤ë§ˆì— ì´ë¯¸ 있어 옮길 수 없습니다." + +#: commands/extension.c:2574 commands/extension.c:2637 +#, c-format +msgid "extension \"%s\" does not support SET SCHEMA" +msgstr "\"%s\" 확장 ëª¨ë“ˆì€ SET SCHEMA êµ¬ë¬¸ì„ ì§€ì›í•˜ì§€ 않ìŒ" + +#: commands/extension.c:2639 +#, c-format +msgid "%s is not in the extension's schema \"%s\"" +msgstr "%s ê°ì²´ê°€ 확장 모듈 ìŠ¤í‚¤ë§ˆì¸ \"%s\" ì•ˆì— ì—†ìŒ" + +#: commands/extension.c:2699 +#, c-format +msgid "nested ALTER EXTENSION is not supported" +msgstr "ì¤‘ì²©ëœ ALTER EXTENSION êµ¬ë¬¸ì„ ì§€ì›í•˜ì§€ 않ìŒ" + +#: commands/extension.c:2790 +#, c-format +msgid "version \"%s\" of extension \"%s\" is already installed" +msgstr "\"%s\" ë²„ì „ì˜ \"%s\" 확장 ëª¨ë“ˆì´ ì´ë¯¸ 설치 ë˜ì–´ 있ìŒ" + +#: commands/extension.c:3041 +#, c-format +msgid "" +"cannot add schema \"%s\" to extension \"%s\" because the schema contains the " +"extension" +msgstr "" +"\"%s\" ìŠ¤í‚¤ë§ˆì— \"%s\" 확장 ëª¨ë“ˆì„ ì¶”ê°€í•  수 ì—†ìŒ, ì´ë¯¸ 해당 스키마 ì•ˆì— í¬" +"함ë˜ì–´ 있ìŒ" + +#: commands/extension.c:3069 +#, c-format +msgid "%s is not a member of extension \"%s\"" +msgstr "\"%s\" ê°ì²´ëŠ” \"%s\" 확장 ëª¨ë“ˆì˜ êµ¬ì„± 요소가 아닙니다" + +#: commands/extension.c:3135 +#, c-format +msgid "file \"%s\" is too large" +msgstr "\"%s\" 파ì¼ì´ 너무 í½ë‹ˆë‹¤." + +#: commands/foreigncmds.c:150 commands/foreigncmds.c:159 +#, c-format +msgid "option \"%s\" not found" +msgstr "\"%s\" ì˜µì…˜ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: commands/foreigncmds.c:169 +#, c-format +msgid "option \"%s\" provided more than once" +msgstr "\"%s\" ì˜µì…˜ì´ ì—¬ëŸ¬ 번 제공ë˜ì—ˆìŒ" + +#: commands/foreigncmds.c:223 commands/foreigncmds.c:231 +#, c-format +msgid "permission denied to change owner of foreign-data wrapper \"%s\"" +msgstr "\"%s\" 외부 ìžë£Œ 래í¼ì˜ 소유주를 변경할 ê¶Œí•œì´ ì—†ìŒ" + +#: commands/foreigncmds.c:225 +#, c-format +msgid "Must be superuser to change owner of a foreign-data wrapper." +msgstr "슈í¼ìœ ì €ë§Œ 외부 ìžë£Œ 래í¼ì˜ 소유주를 바꿀 수 있습니다." + +#: commands/foreigncmds.c:233 +#, c-format +msgid "The owner of a foreign-data wrapper must be a superuser." +msgstr "외부 ìžë£Œ 래í¼ì˜ 소유주는 슈í¼ìœ ì €ì—¬ì•¼ 합니다." + +#: commands/foreigncmds.c:292 commands/foreigncmds.c:709 foreign/foreign.c:671 +#, c-format +msgid "foreign-data wrapper \"%s\" does not exist" +msgstr "\"%s\" 외부 ìžë£Œ 래í¼ê°€ ì—†ìŒ" + +#: commands/foreigncmds.c:584 +#, c-format +msgid "permission denied to create foreign-data wrapper \"%s\"" +msgstr "\"%s\" 외부 ìžë£Œ 래í¼ë¥¼ 만들 ê¶Œí•œì´ ì—†ìŒ" + +#: commands/foreigncmds.c:586 +#, c-format +msgid "Must be superuser to create a foreign-data wrapper." +msgstr "슈í¼ìœ ì €ë§Œ 외부 ìžë£Œ 래í¼ë¥¼ 만들 수 있습니다." + +#: commands/foreigncmds.c:699 +#, c-format +msgid "permission denied to alter foreign-data wrapper \"%s\"" +msgstr "\"%s\" 외부 ìžë£Œ 래í¼ë¥¼ 변경할 ê¶Œí•œì´ ì—†ìŒ" + +#: commands/foreigncmds.c:701 +#, c-format +msgid "Must be superuser to alter a foreign-data wrapper." +msgstr "슈í¼ìœ ì €ë§Œ 외부 ìžë£Œ 래í¼ë¥¼ 변경할 수 있습니다." + +#: commands/foreigncmds.c:732 +#, c-format +msgid "" +"changing the foreign-data wrapper handler can change behavior of existing " +"foreign tables" +msgstr "" +"외부 ìžë£Œ ëž©í¼ í•¸ë“¤ëŸ¬ë¥¼ 바꾸면, ê·¸ê²ƒì„ ì‚¬ìš©í•˜ëŠ” 외부 í…Œì´ë¸”ì˜ ë‚´ìš©ì´ ë°”ë€” 수 " +"있습니다." + +#: commands/foreigncmds.c:747 +#, c-format +msgid "" +"changing the foreign-data wrapper validator can cause the options for " +"dependent objects to become invalid" +msgstr "" +"외부 ìžë£Œ ëž˜í¼ ìœ íš¨ì„± 검사기를 바꾸면 ì¢…ì† ê°ì²´ì— 대한 ì˜µì…˜ì´ ìœ íš¨í•˜ì§€ ì•Šì„ " +"수 있ìŒ" + +#: commands/foreigncmds.c:1165 +#, c-format +msgid "user mapping \"%s\" already exists for server %s" +msgstr "\"%s\" ì‚¬ìš©ìž ë§¤í•‘ì´ %s 서버용으로 ì´ë¯¸ 있ìŒ" + +#: commands/foreigncmds.c:1259 commands/foreigncmds.c:1375 +#, c-format +msgid "user mapping \"%s\" does not exist for the server" +msgstr "해당 서버용 \"%s\" ì‚¬ìš©ìž ë§¤í•‘ì´ ì—†ìŒ" + +#: commands/foreigncmds.c:1362 +#, c-format +msgid "server does not exist, skipping" +msgstr "서버가 ì—†ìŒ, 건너뜀" + +#: commands/foreigncmds.c:1380 +#, c-format +msgid "user mapping \"%s\" does not exist for the server, skipping" +msgstr "\"%s\" ì‚¬ìš©ìž ë§¤í•‘ì´ í•´ë‹¹ 서버용으로 ì—†ìŒ, 건너뜀" + +#: commands/foreigncmds.c:1532 foreign/foreign.c:361 +#, c-format +msgid "foreign-data wrapper \"%s\" has no handler" +msgstr "\"%s\" 외부 ìžë£Œ 래í¼ìš© 핸들러가 ì—†ìŒ" + +#: commands/foreigncmds.c:1538 +#, c-format +msgid "foreign-data wrapper \"%s\" does not support IMPORT FOREIGN SCHEMA" +msgstr "\"%s\" 외부 ìžë£Œ 래í¼ëŠ” IMPORT FOREIGN SCHEMA êµ¬ë¬¸ì„ ì§€ì›í•˜ì§€ 않ìŒ" + +#: commands/foreigncmds.c:1631 +#, c-format +msgid "importing foreign table \"%s\"" +msgstr "\"%s\" 외부 í…Œì´ë¸” 가져 오는 중" + +#: commands/functioncmds.c:99 +#, c-format +msgid "SQL function cannot return shell type %s" +msgstr "SQL 함수는 shell type %s 리턴할 수 ì—†ìŒ" + +#: commands/functioncmds.c:104 +#, c-format +msgid "return type %s is only a shell" +msgstr "_^_ %s 리턴 ìžë£Œí˜•ì€ í•˜ë‚˜ì˜ shellë§Œ 있습니다" + +#: commands/functioncmds.c:134 parser/parse_type.c:337 +#, c-format +msgid "type modifier cannot be specified for shell type \"%s\"" +msgstr "\"%s\" ì…¸ 형ì‹ì— 대해 í˜•ì‹ í•œì •ìžë¥¼ 지정할 수 ì—†ìŒ" + +#: commands/functioncmds.c:140 +#, c-format +msgid "type \"%s\" is not yet defined" +msgstr "\"%s\" ìžë£Œí˜•ì´ ì•„ì§ ì •ì˜ë˜ì§€ 않았ìŒ" + +#: commands/functioncmds.c:141 +#, c-format +msgid "Creating a shell type definition." +msgstr "ì…¸ 타입 ì •ì˜ë¥¼ 만들고 있습니다" + +#: commands/functioncmds.c:239 +#, c-format +msgid "SQL function cannot accept shell type %s" +msgstr "SQL 함수는 ì…¸ 타입 %s 수용할 수 ì—†ìŒ" + +#: commands/functioncmds.c:245 +#, c-format +msgid "aggregate cannot accept shell type %s" +msgstr "집계 함수는 ì…¸ 타입 %s 수용할 수 ì—†ìŒ" + +#: commands/functioncmds.c:250 +#, c-format +msgid "argument type %s is only a shell" +msgstr "%s ì¸ìž ìžë£Œí˜•ì€ ë‹¨ì§€ 셸입니다" + +#: commands/functioncmds.c:260 +#, c-format +msgid "type %s does not exist" +msgstr "%s ìžë£Œí˜• ì—†ìŒ" + +#: commands/functioncmds.c:274 +#, c-format +msgid "aggregates cannot accept set arguments" +msgstr "집계 함수는 세트 ì¸ìžë¥¼ ìž…ë ¥ ì¸ìžë¡œ 쓸 수 ì—†ìŒ" + +#: commands/functioncmds.c:278 +#, c-format +msgid "functions cannot accept set arguments" +msgstr "함수는 세트 ì¸ìžë¥¼ ìž…ë ¥ ì¸ìžë¡œ 쓸 수 ì—†ìŒ" + +#: commands/functioncmds.c:288 +#, c-format +msgid "VARIADIC parameter must be the last input parameter" +msgstr "VARIADIC 매개 변수는 마지막 ìž…ë ¥ 매개 변수여야 함" + +#: commands/functioncmds.c:316 +#, c-format +msgid "VARIADIC parameter must be an array" +msgstr "VARIADIC 매개 변수는 ë°°ì—´ì´ì–´ì•¼ 함" + +#: commands/functioncmds.c:356 +#, c-format +msgid "parameter name \"%s\" used more than once" +msgstr "\"%s\" 매개 변수가 여러 번 사용 ë¨" + +#: commands/functioncmds.c:371 +#, c-format +msgid "only input parameters can have default values" +msgstr "ìž…ë ¥ 매개 변수ì—서만 ê¸°ë³¸ê°’ì„ ì‚¬ìš©í•  수 있ìŒ" + +#: commands/functioncmds.c:386 +#, c-format +msgid "cannot use table references in parameter default value" +msgstr "ìž…ë ¥ 매개 변수 초기값으로 í…Œì´ë¸” ì°¸ì¡°í˜•ì€ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: commands/functioncmds.c:410 +#, c-format +msgid "input parameters after one with a default value must also have defaults" +msgstr "" +"기본 ê°’ì´ ìžˆëŠ” ìž…ë ¥ 매개 변수 ë’¤ì— ì˜¤ëŠ” ìž…ë ¥ 매개 변수ì—ë„ ê¸°ë³¸ ê°’ì´ ìžˆì–´ì•¼ " +"함" + +#: commands/functioncmds.c:701 +#, c-format +msgid "no function body specified" +msgstr "함수 본문(body) ë¶€ë¶„ì´ ë¹ ì¡ŒìŠµë‹ˆë‹¤" + +#: commands/functioncmds.c:711 +#, c-format +msgid "no language specified" +msgstr "처리할 프로시주얼 언어를 지정하지 않았습니다" + +#: commands/functioncmds.c:736 commands/functioncmds.c:1243 +#, c-format +msgid "COST must be positive" +msgstr "COST는 양수여야 함" + +#: commands/functioncmds.c:744 commands/functioncmds.c:1251 +#, c-format +msgid "ROWS must be positive" +msgstr "ROWS는 양수여야 함" + +#: commands/functioncmds.c:785 +#, c-format +msgid "unrecognized function attribute \"%s\" ignored" +msgstr "알수 없는 함수 ì†ì„± \"%s\" 무시ë¨" + +#: commands/functioncmds.c:836 +#, c-format +msgid "only one AS item needed for language \"%s\"" +msgstr "\"%s\" 언어ì—는 í•˜ë‚˜ì˜ AS 항목만 필요함" + +#: commands/functioncmds.c:929 commands/functioncmds.c:2119 +#: commands/proclang.c:563 +#, c-format +msgid "language \"%s\" does not exist" +msgstr "\"%s\" 프로시주얼 언어 ì—†ìŒ" + +#: commands/functioncmds.c:931 commands/functioncmds.c:2121 +#, c-format +msgid "Use CREATE LANGUAGE to load the language into the database." +msgstr "" +"ë°ì´í„°ë² ì´ìФ ë‚´ì—서 프로시주얼 언어를 사용하려면 먼저 CREATE LANGUAGE 명령으" +"로 사용할 언어를 등ë¡í•˜ì„¸ìš”." + +#: commands/functioncmds.c:966 commands/functioncmds.c:1235 +#, c-format +msgid "only superuser can define a leakproof function" +msgstr "슈í¼ìœ ì €ë§Œ leakproof 함수를 만들 수 있습니다" + +#: commands/functioncmds.c:1010 +#, c-format +msgid "function result type must be %s because of OUT parameters" +msgstr "OUT 매개 변수로 ì¸í•´ 함수 ê²°ê³¼ 형ì‹ì€ %sì´ì–´ì•¼ 함" + +#: commands/functioncmds.c:1023 +#, c-format +msgid "function result type must be specified" +msgstr "í•¨ìˆ˜ì˜ ë¦¬í„´ ìžë£Œí˜•ì„ ì§€ì •í•´ì•¼ 합니다" + +#: commands/functioncmds.c:1077 commands/functioncmds.c:1255 +#, c-format +msgid "ROWS is not applicable when function does not return a set" +msgstr "함수ì—서 세트를 반환하지 않는 경우 ROWS를 ì ìš©í•  수 ì—†ìŒ" + +#: commands/functioncmds.c:1412 +#, c-format +msgid "source data type %s is a pseudo-type" +msgstr "%s ì›ë³¸ ìžë£Œí˜•ì´ ì˜ì‚¬ìžë£Œí˜•(pseudo-type) 입니다" + +#: commands/functioncmds.c:1418 +#, c-format +msgid "target data type %s is a pseudo-type" +msgstr "%s ëŒ€ìƒ ìžë£Œí˜•ì´ ì˜ì‚¬ìžë£Œí˜•(pseudo-type) 입니다" + +#: commands/functioncmds.c:1442 +#, c-format +msgid "cast will be ignored because the source data type is a domain" +msgstr "ì›ë³¸ ìžë£Œí˜•ì´ ë„ë©”ì¸ì´ì–´ì„œ ìžë£Œí˜• ë³€í™˜ì„ ë¬´ì‹œí•©ë‹ˆë‹¤." + +#: commands/functioncmds.c:1447 +#, c-format +msgid "cast will be ignored because the target data type is a domain" +msgstr "ëŒ€ìƒ ìžë£Œí˜•ì´ ë„ë©”ì¸ì´ì–´ì„œ ìžë£Œí˜• ë³€í™˜ì„ ë¬´ì‹œí•©ë‹ˆë‹¤." + +#: commands/functioncmds.c:1474 +#, c-format +msgid "cast function must take one to three arguments" +msgstr "형변환 함수는 1-3ê°œì˜ ì¸ìžë§Œ 지정할 수 있습니다" + +#: commands/functioncmds.c:1478 +#, c-format +msgid "" +"argument of cast function must match or be binary-coercible from source data " +"type" +msgstr "" +"형변환 í•¨ìˆ˜ì˜ ì¸ìžë¡œ 쓸 ìžë£Œí˜•ì€ ì›ë³¸ ìžë£Œí˜•ê³¼ ì¼ì¹˜í•˜ê±°ë‚˜ ë°”ì´ë„ˆë¦¬ ì°¨ì›ìœ¼ë¡œ " +"ê°™ì€ ìžë£Œí˜•ì´ì–´ì•¼ 함" + +#: commands/functioncmds.c:1482 +#, c-format +msgid "second argument of cast function must be type integer" +msgstr "형변화 í•¨ìˆ˜ì˜ ë‘번째 ì¸ìž ìžë£Œí˜•ì€ ë°˜ë“œì‹œ integer여야합니다" + +#: commands/functioncmds.c:1486 +#, c-format +msgid "third argument of cast function must be type boolean" +msgstr "형변화 í•¨ìˆ˜ì˜ ì„¸ë²ˆì§¸ ì¸ìž ìžë£Œí˜•ì€ ë°˜ë“œì‹œ booleanì´ì—¬ì•¼í•©ë‹ˆë‹¤" + +#: commands/functioncmds.c:1490 +#, c-format +msgid "" +"return data type of cast function must match or be binary-coercible to " +"target data type" +msgstr "" +"형변환 í•¨ìˆ˜ì˜ ë°˜í™˜ ìžë£Œí˜•ì€ ëŒ€ìƒ ìžë£Œí˜•ê³¼ ì¼ì¹˜í•˜ê±°ë‚˜ ë°”ì´ë„ˆë¦¬ ì°¨ì›ìœ¼ë¡œ ê°™ì€ " +"ìžë£Œí˜•ì´ì–´ì•¼ 함" + +#: commands/functioncmds.c:1501 +#, c-format +msgid "cast function must not be volatile" +msgstr "형변환 함수는 volatile íŠ¹ì„±ì´ ì—†ì–´ì•¼í•©ë‹ˆë‹¤" + +#: commands/functioncmds.c:1506 +#, c-format +msgid "cast function must not be an aggregate function" +msgstr "형변환 함수는 집계 함수가 아니여야합니다" + +#: commands/functioncmds.c:1510 +#, c-format +msgid "cast function must not be a window function" +msgstr "형변환 함수는 윈ë„ìš° 함수가 아니여야 함" + +#: commands/functioncmds.c:1514 +#, c-format +msgid "cast function must not return a set" +msgstr "형변환 함수는 세트(set)를 리턴할 수 없습니다" + +#: commands/functioncmds.c:1540 +#, c-format +msgid "must be superuser to create a cast WITHOUT FUNCTION" +msgstr "CREATE CAST ... WITHOUT FUNCTION ëª…ë ¹ì€ ìŠˆí¼ìœ ì €ë§Œ 실행할 수 있습니다" + +#: commands/functioncmds.c:1555 +#, c-format +msgid "source and target data types are not physically compatible" +msgstr "ì›ë³¸ ìžë£Œí˜•ê³¼ ëŒ€ìƒ ìžë£Œí˜•ì´ ì„œë¡œ 논리ì ì¸ í˜¸í™˜ì„±ì´ ì—†ìŠµë‹ˆë‹¤" + +#: commands/functioncmds.c:1570 +#, c-format +msgid "composite data types are not binary-compatible" +msgstr "복합 ìžë£Œí˜•ì€ ë°”ì´ë„ˆë¦¬ì™€ 호환ë˜ì§€ 않ìŒ" + +#: commands/functioncmds.c:1576 +#, c-format +msgid "enum data types are not binary-compatible" +msgstr "ì—´ê±° ìžë£Œí˜•ì€ ë°”ì´ë„ˆë¦¬ì™€ 호환ë˜ì§€ 않ìŒ" + +#: commands/functioncmds.c:1582 +#, c-format +msgid "array data types are not binary-compatible" +msgstr "ë°°ì—´ ìžë£Œí˜•ì€ ë°”ì´ë„ˆë¦¬ì™€ 호환ë˜ì§€ 않ìŒ" + +#: commands/functioncmds.c:1599 +#, c-format +msgid "domain data types must not be marked binary-compatible" +msgstr "ë„ë©”ì¸ ìžë£Œí˜•ì€ ë°”ì´ë„ˆë¦¬ì™€ 호환ë˜ì§€ 않ìŒ" + +#: commands/functioncmds.c:1609 +#, c-format +msgid "source data type and target data type are the same" +msgstr "ì›ë³¸ ìžë£Œí˜•ê³¼ ëŒ€ìƒ ìžë£Œí˜•ì˜ í˜•íƒœê°€ 같습니다" + +#: commands/functioncmds.c:1642 +#, c-format +msgid "cast from type %s to type %s already exists" +msgstr "%s 형ì—서 %s 형으로 변환하는 형변환 규칙(cast)ì´ ì´ë¯¸ 있습니다" + +#: commands/functioncmds.c:1717 +#, c-format +msgid "cast from type %s to type %s does not exist" +msgstr "%s 형ì—서 %s 형으로 바꾸는 형변환 규칙(cast)ê°€ ì—†ìŒ" + +#: commands/functioncmds.c:1756 +#, c-format +msgid "transform function must not be volatile" +msgstr "형변환 함수는 volatile íŠ¹ì„±ì´ ì—†ì–´ì•¼í•©ë‹ˆë‹¤" + +#: commands/functioncmds.c:1760 +#, c-format +msgid "transform function must not be an aggregate function" +msgstr "형변환 함수는 집계 함수가 아니여야합니다" + +#: commands/functioncmds.c:1764 +#, c-format +msgid "transform function must not be a window function" +msgstr "형변환 함수는 윈ë„ìš° 함수가 아니여야 함" + +#: commands/functioncmds.c:1768 +#, c-format +msgid "transform function must not return a set" +msgstr "형변환 함수는 세트(set)를 리턴할 수 없습니다" + +#: commands/functioncmds.c:1772 +#, c-format +msgid "transform function must take one argument" +msgstr "형변환 함수는 1ê°œì˜ ì¸ìžë§Œ 지정할 수 있습니다" + +#: commands/functioncmds.c:1776 +#, c-format +msgid "first argument of transform function must be type \"internal\"" +msgstr "형변화 í•¨ìˆ˜ì˜ ì²«ë²ˆì§¸ ì¸ìž ìžë£Œí˜•ì€ ë°˜ë“œì‹œ \"internal\"ì´ì—¬ì•¼í•©ë‹ˆë‹¤" + +#: commands/functioncmds.c:1813 +#, c-format +msgid "data type %s is a pseudo-type" +msgstr "%s ìžë£Œí˜•ì€ ì˜ì‚¬ìžë£Œí˜•(pseudo-type) 입니다" + +#: commands/functioncmds.c:1819 +#, c-format +msgid "data type %s is a domain" +msgstr "%s ìžë£Œí˜•ì€ ë„ë©”ì¸ìž…니다" + +#: commands/functioncmds.c:1859 +#, c-format +msgid "return data type of FROM SQL function must be \"internal\"" +msgstr "FROM SQL í•¨ìˆ˜ì˜ ë°˜í™˜ ìžë£Œí˜•ì€ \"internal\" ì´ì–´ì•¼ 함" + +#: commands/functioncmds.c:1884 +#, c-format +msgid "return data type of TO SQL function must be the transform data type" +msgstr "TO SQL í•¨ìˆ˜ì˜ ë°˜í™˜ ìžë£Œí˜•ì€ ë³€í™˜ ìžë£Œí˜•ì´ì–´ì•¼ 함" + +#: commands/functioncmds.c:1911 +#, c-format +msgid "transform for type %s language \"%s\" already exists" +msgstr "%s ìžë£Œí˜•(ëŒ€ìƒ ì–¸ì–´: \"%s\")ì„ ìœ„í•œ 형변환 ê·œì¹™ì€ ì´ë¯¸ 있습니다." + +#: commands/functioncmds.c:2002 +#, c-format +msgid "transform for type %s language \"%s\" does not exist" +msgstr "%s ìžë£Œí˜•(ëŒ€ìƒ ì–¸ì–´: \"%s\")ì„ ìœ„í•œ 형변환 ê·œì¹™ì€ ì—†ìŠµë‹ˆë‹¤." + +#: commands/functioncmds.c:2053 +#, c-format +msgid "function %s already exists in schema \"%s\"" +msgstr "%s 함수는 ì´ë¯¸ \"%s\" ìŠ¤í‚¤ë§ˆì•ˆì— ìžˆìŠµë‹ˆë‹¤" + +#: commands/functioncmds.c:2106 +#, c-format +msgid "no inline code specified" +msgstr "내장 코드가 빠졌습니다" + +#: commands/functioncmds.c:2151 +#, c-format +msgid "language \"%s\" does not support inline code execution" +msgstr "\"%s\" 프로시주얼 언어는 내장 코드 실행 ê¸°ëŠ¥ì„ ì§€ì›í•˜ì§€ 않습니다" + +#: commands/indexcmds.c:349 +#, c-format +msgid "must specify at least one column" +msgstr "ì ì–´ë„ 하나 ì´ìƒì˜ ì—´ì„ ì§€ì •í•´ 주십시오" + +#: commands/indexcmds.c:353 +#, c-format +msgid "cannot use more than %d columns in an index" +msgstr "í•˜ë‚˜ì˜ ì¸ë±ìФì—서는 %d개보다 ë§Žì€ ì—´ì„ ì‚¬ìš©í•  수 없습니다" + +#: commands/indexcmds.c:384 +#, c-format +msgid "cannot create index on foreign table \"%s\"" +msgstr "\"%s\" 외부 í…Œì´ë¸” 대ìƒìœ¼ë¡œ ì¸ë±ìŠ¤ë¥¼ 만들 수 ì—†ìŒ" + +#: commands/indexcmds.c:399 +#, c-format +msgid "cannot create indexes on temporary tables of other sessions" +msgstr "다른 ì„¸ì…˜ì˜ ìž„ì‹œ í…Œì´ë¸”ì— ì¸ë±ìŠ¤ë¥¼ 만들 수는 없습니다" + +#: commands/indexcmds.c:455 commands/tablecmds.c:546 commands/tablecmds.c:9694 +#, c-format +msgid "only shared relations can be placed in pg_global tablespace" +msgstr "공유 관계만 pg_global í…Œì´ë¸”스페ì´ìŠ¤ì— ë°°ì¹˜í•  수 있ìŒ" + +#: commands/indexcmds.c:488 +#, c-format +msgid "substituting access method \"gist\" for obsolete method \"rtree\"" +msgstr "사용하지 않는 \"rtree\" ë°©ë²•ì„ \"gist\" 액세스 방법으로 대체하는 중" + +#: commands/indexcmds.c:506 +#, c-format +msgid "hash indexes are not WAL-logged and their use is discouraged" +msgstr "hash ì¸ë±ìŠ¤ëŠ” WAL 기ë¡ì„ 하지 않습니다. ì´ ì‚¬ìš©ì€ ê¶Œìž¥í•˜ì§€ 않습니다" + +#: commands/indexcmds.c:511 +#, c-format +msgid "access method \"%s\" does not support unique indexes" +msgstr "\"%s\" ì¸ë±ìФ 액세스 ë°©ë²•ì€ ê³ ìœ  ì¸ë±ìŠ¤ë¥¼ ì§€ì›í•˜ì§€ 않습니다" + +#: commands/indexcmds.c:516 +#, c-format +msgid "access method \"%s\" does not support multicolumn indexes" +msgstr "\"%s\" ì¸ë±ìФ 액세스 ë°©ë²•ì€ ë‹¤ì¤‘ ì—´ ì¸ë±ìŠ¤ë¥¼ ì§€ì›í•˜ì§€ 않습니다" + +#: commands/indexcmds.c:521 +#, c-format +msgid "access method \"%s\" does not support exclusion constraints" +msgstr "\"%s\" ì¸ë±ìФ ì ‘ê·¼ ë°©ë²•ì€ exclusion 제약 ì¡°ê±´ì„ ì§€ì›í•˜ì§€ 않습니다" + +#: commands/indexcmds.c:591 commands/indexcmds.c:611 +#, c-format +msgid "index creation on system columns is not supported" +msgstr "시스템 카탈로그 í…Œì´ë¸”ì— ëŒ€í•œ ì¸ë±ìФ 만들기는 ì§€ì›í•˜ì§€ 않습니다" + +#: commands/indexcmds.c:636 +#, c-format +msgid "%s %s will create implicit index \"%s\" for table \"%s\"" +msgstr "%s %s 명령으로 \"%s\" ì¸ë±ìŠ¤ë¥¼ \"%s\" í…Œì´ë¸”ì— ìžë™ìœ¼ë¡œ 만들었ìŒ" + +#: commands/indexcmds.c:983 +#, c-format +msgid "functions in index predicate must be marked IMMUTABLE" +msgstr "" +"ì¸ë±ìФ 술어(predicate)ì—서 사용하는 함수는 IMMUTABLE íŠ¹ì„±ì´ ìžˆì–´ì•¼í•©ë‹ˆë‹¤" + +#: commands/indexcmds.c:1049 parser/parse_utilcmd.c:1881 +#, c-format +msgid "column \"%s\" named in key does not exist" +msgstr "키ì—서 지정한 \"%s\" ì—´ì´ ì—†ìŠµë‹ˆë‹¤" + +#: commands/indexcmds.c:1109 +#, c-format +msgid "functions in index expression must be marked IMMUTABLE" +msgstr "ì¸ë±ìФ ì‹(expression)ì— ì‚¬ìš©í•˜ëŠ” 함수는 IMMUTABLE íŠ¹ì„±ì´ ìžˆì–´ì•¼í•©ë‹ˆë‹¤" + +#: commands/indexcmds.c:1132 +#, c-format +msgid "could not determine which collation to use for index expression" +msgstr "해당 ì¸ë±ìФì—서 사용할 정렬규칙(collation)ì„ ê²°ì •í•  수 없습니다." + +#: commands/indexcmds.c:1140 commands/typecmds.c:827 parser/parse_expr.c:2608 +#: parser/parse_type.c:550 parser/parse_utilcmd.c:2807 utils/adt/misc.c:666 +#, c-format +msgid "collations are not supported by type %s" +msgstr "%s ìžë£Œí˜•ì€ collation ì§€ì› ì•ˆí•¨" + +#: commands/indexcmds.c:1178 +#, c-format +msgid "operator %s is not commutative" +msgstr "%s ì—°ì‚°ìžëŠ” êµí™˜ë²•ì¹™ì´ ì„±ë¦½í•˜ì§€ 않습니다" + +#: commands/indexcmds.c:1180 +#, c-format +msgid "Only commutative operators can be used in exclusion constraints." +msgstr "" +"exclude 제약조건용 ì¸ë±ìŠ¤ë¥¼ 만들 때는 êµí™˜ë²•ì¹™ì´ ì„±ë¦½í•˜ëŠ” ì—°ì‚°ìžë§Œ 사용할 수 " +"있습니다." + +#: commands/indexcmds.c:1206 +#, c-format +msgid "operator %s is not a member of operator family \"%s\"" +msgstr "%s ì—°ì‚°ìžëŠ” \"%s\" ì—°ì‚°ìž ê°€ì¡± 구성ì›ì´ 아닙니다." + +#: commands/indexcmds.c:1209 +#, c-format +msgid "" +"The exclusion operator must be related to the index operator class for the " +"constraint." +msgstr "" +"제외 ì—°ì‚°ìžëŠ” 해당 제약 ì¡°ê±´ìš© ì¸ë±ìФ ì—°ì‚°ìž í´ëž˜ìŠ¤ì˜ ì†Œì†ì´ì–´ì•¼ 합니다." + +#: commands/indexcmds.c:1244 +#, c-format +msgid "access method \"%s\" does not support ASC/DESC options" +msgstr "\"%s\" ì ‘ê·¼ ë°©ë²•ì€ ASC/DESC ì˜µì…˜ì„ ì§€ì›í•˜ì§€ 않ìŒ" + +#: commands/indexcmds.c:1249 +#, c-format +msgid "access method \"%s\" does not support NULLS FIRST/LAST options" +msgstr "\"%s\" ì ‘ê·¼ ë°©ë²•ì€ NULLS FIRST/LAST ì˜µì…˜ì„ ì§€ì›í•˜ì§€ 않ìŒ" + +#: commands/indexcmds.c:1305 commands/typecmds.c:1935 +#, c-format +msgid "data type %s has no default operator class for access method \"%s\"" +msgstr "" +"%s ìžë£Œí˜•ì€ \"%s\" ì¸ë±ìФ 액세스 ë°©ë²•ì„ ìœ„í•œ 기본 ì—°ì‚°ìž í´ëž˜ìФ(operator " +"class)ê°€ 없습니다. " + +#: commands/indexcmds.c:1307 +#, c-format +msgid "" +"You must specify an operator class for the index or define a default " +"operator class for the data type." +msgstr "" +"ì´ ì¸ë±ìŠ¤ë¥¼ 위한 ì—°ì‚°ìž í´ëž˜ìŠ¤ë¥¼ 지정하거나 먼저 ì´ ìžë£Œí˜•ì„ ìœ„í•œ 기본 ì—°ì‚°" +"ìž í´ëž˜ìŠ¤ë¥¼ ì •ì˜í•´ ë‘어야합니다" + +#: commands/indexcmds.c:1336 commands/indexcmds.c:1344 +#: commands/opclasscmds.c:205 +#, c-format +msgid "operator class \"%s\" does not exist for access method \"%s\"" +msgstr "" +"\"%s\" ì—°ì‚°ìž í´ëž˜ìŠ¤ëŠ” \"%s\" ì¸ë±ìФ 액세스 방법ì—서 사용할 수 없습니다" + +#: commands/indexcmds.c:1357 commands/typecmds.c:1923 +#, c-format +msgid "operator class \"%s\" does not accept data type %s" +msgstr "\"%s\" ì—°ì‚°ìž í´ëž˜ìŠ¤ëŠ” %s ìžë£Œí˜•ì„ ì‚¬ìš©í•  수 없습니다" + +#: commands/indexcmds.c:1447 +#, c-format +msgid "there are multiple default operator classes for data type %s" +msgstr "%s ìžë£Œí˜•ì„ ìœ„í•œ 기본 ì—°ì‚°ìž í´ëž˜ìŠ¤ê°€ 여러개 있습니다" + +#: commands/indexcmds.c:1838 +#, c-format +msgid "table \"%s\" has no indexes" +msgstr "\"%s\" í…Œì´ë¸”ì—는 사용할 수 있는 ì¸ë±ìŠ¤ê°€ 없습니다" + +#: commands/indexcmds.c:1893 +#, c-format +msgid "can only reindex the currently open database" +msgstr "열려있는 현재 ë°ì´í„°ë² ì´ìФì—서만 reindex ëª…ë ¹ì„ ì‚¬ìš©í•  수 있습니다" + +#: commands/indexcmds.c:1993 +#, c-format +msgid "table \"%s.%s\" was reindexed" +msgstr "\"%s.%s\" í…Œì´ë¸”ì˜ ì¸ë±ìŠ¤ë“¤ì„ ë‹¤ì‹œ 만들었습니다." + +#: commands/matview.c:181 +#, c-format +msgid "CONCURRENTLY cannot be used when the materialized view is not populated" +msgstr "" +"êµ¬ì²´í™”ëœ ë·°ì˜ ìžë£Œê°€ 정리ë˜ê³  ìžˆì„ ë•ŒëŠ” CONCURRENTLY ì˜µì…˜ì„ ì‚¬ìš©í•  수 없습니" +"다." + +#: commands/matview.c:187 +#, c-format +msgid "CONCURRENTLY and WITH NO DATA options cannot be used together" +msgstr "CONCURRENTLY 옵션과, WITH NO DATA ì˜µì…˜ì„ í•¨ê»˜ 사용할 수 없습니다." + +#: commands/matview.c:257 +#, c-format +msgid "cannot refresh materialized view \"%s\" concurrently" +msgstr "\"%s\" êµ¬ì²´í™”ëœ ë·°ë¥¼ ë™ì‹œì— 재갱신 í•  수 없습니다." + +#: commands/matview.c:260 +#, c-format +msgid "" +"Create a unique index with no WHERE clause on one or more columns of the " +"materialized view." +msgstr "" +"êµ¬ì²´í™”ëœ ë·°ì˜ í•˜ë‚˜ ë˜ëŠ” 하나 ì´ìƒì˜ ì¹¼ëŸ¼ì— ëŒ€í•œ WHERE ì ˆ 없는 고유 ì¸ë±ìŠ¤ë¥¼ " +"만드세요." + +#: commands/matview.c:657 +#, c-format +msgid "" +"new data for materialized view \"%s\" contains duplicate rows without any " +"null columns" +msgstr "" +"\"%s\" êµ¬ì²´í™”ëœ ë·°ì˜ ìƒˆ ìžë£Œì— 아무런 null 칼럼 ì—†ì´ ì¤‘ë³µëœ ë¡œìš°ë¥¼ í¬í•¨í•˜ê³  " +"있습니다" + +#: commands/matview.c:659 +#, c-format +msgid "Row: %s" +msgstr "로우: %s" + +#: commands/opclasscmds.c:126 +#, c-format +msgid "operator family \"%s\" does not exist for access method \"%s\"" +msgstr "\"%s\" ì—°ì‚°ìž íŒ¨ë°€ë¦¬ê°€ ì—†ìŒ, 해당 ì ‘ê·¼ 방법: \"%s\"" + +#: commands/opclasscmds.c:264 +#, c-format +msgid "operator family \"%s\" for access method \"%s\" already exists" +msgstr "\"%s\" ì—°ì‚°ìž íŒ¨ë°€ë¦¬ê°€ ì´ë¯¸ 있ìŒ, 해당 ì ‘ê·¼ 방법: \"%s\"" + +#: commands/opclasscmds.c:404 +#, c-format +msgid "must be superuser to create an operator class" +msgstr "ì—°ì‚°ìž í´ëž˜ìŠ¤ëŠ” 슈í¼ìœ ì €ë§Œ 만들 수 있습니다" + +#: commands/opclasscmds.c:478 commands/opclasscmds.c:863 +#: commands/opclasscmds.c:996 +#, c-format +msgid "invalid operator number %d, must be between 1 and %d" +msgstr "ìž˜ëª»ëœ ì—°ì‚°ìž ë²ˆí˜¸: %d, 타당한 번호는 1부터 %d까지 입니다" + +#: commands/opclasscmds.c:529 commands/opclasscmds.c:914 +#: commands/opclasscmds.c:1011 +#, c-format +msgid "invalid procedure number %d, must be between 1 and %d" +msgstr "ìž˜ëª»ëœ í”„ë¡œì‹œì € 번호 %d, ì´ ë²ˆí˜¸ëŠ” 1부터 %d까지입니다" + +#: commands/opclasscmds.c:559 +#, c-format +msgid "storage type specified more than once" +msgstr "저장 ë°©ë²•ì´ ì¤‘ë³µë˜ì—ˆìŠµë‹ˆë‹¤" + +#: commands/opclasscmds.c:586 +#, c-format +msgid "" +"storage type cannot be different from data type for access method \"%s\"" +msgstr "스토리지 ìžë£Œí˜•ì€ \"%s\" ì ‘ê·¼ ë°©ë²•ì˜ ìžë£Œí˜•ê³¼ 같아야 합니다." + +#: commands/opclasscmds.c:602 +#, c-format +msgid "operator class \"%s\" for access method \"%s\" already exists" +msgstr "\"%s\" ì—°ì‚°ìž í´ëž˜ìФì—는 ì´ë¯¸ \"%s\" 액세스 ë°©ë²•ì´ ì‚¬ìš©ë˜ê³  있습니다" + +#: commands/opclasscmds.c:630 +#, c-format +msgid "could not make operator class \"%s\" be default for type %s" +msgstr "\"%s\" ì—°ì‚°ìž í´ëž˜ìŠ¤ë¥¼ %s ìžë£Œí˜•ì˜ ê¸°ë³¸ê°’ìœ¼ë¡œ 지정할 수 없습니다" + +#: commands/opclasscmds.c:633 +#, c-format +msgid "Operator class \"%s\" already is the default." +msgstr "\"%s\" ì—°ì‚°ìž í´ëž˜ìŠ¤ëŠ” ì´ë¯¸ 기본 ì—°ì‚°ìž í´ëž˜ìŠ¤ìž…ë‹ˆë‹¤" + +#: commands/opclasscmds.c:760 +#, c-format +msgid "must be superuser to create an operator family" +msgstr "슈í¼ìœ ì €ë§Œ ì—°ì‚°ìž íŒ¨ë°€ë¦¬ë¥¼ 만들 수 있ìŒ" + +#: commands/opclasscmds.c:816 +#, c-format +msgid "must be superuser to alter an operator family" +msgstr "슈í¼ìœ ì €ë§Œ ì—°ì‚°ìž íŒ¨ë°€ë¦¬ë¥¼ 변경할 수 있ìŒ" + +#: commands/opclasscmds.c:879 +#, c-format +msgid "operator argument types must be specified in ALTER OPERATOR FAMILY" +msgstr "ì—°ì‚°ìž ì¸ìž 형ì‹ì´ ALTER OPERATOR FAMILYì— ì§€ì •ë˜ì–´ 있어야 함" + +#: commands/opclasscmds.c:943 +#, c-format +msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY" +msgstr "ALTER OPERATOR FAMILYì—서 STORAGE를 지정할 수 ì—†ìŒ" + +#: commands/opclasscmds.c:1066 +#, c-format +msgid "one or two argument types must be specified" +msgstr "í•œë‘ ê°œì˜ ì¸ìž 형ì‹ì„ 지정해야 함" + +#: commands/opclasscmds.c:1092 +#, c-format +msgid "index operators must be binary" +msgstr "ì¸ë±ìФ ì—°ì‚°ìžëŠ” ë°”ì´ë„ˆë¦¬ì—¬ì•¼ 함" + +#: commands/opclasscmds.c:1111 +#, c-format +msgid "access method \"%s\" does not support ordering operators" +msgstr "\"%s\" ì ‘ê·¼ ë°©ë²•ì€ ì •ë ¬ ìž‘ì—…ì„ ì§€ì›í•˜ì§€ 않ìŒ" + +#: commands/opclasscmds.c:1122 +#, c-format +msgid "index search operators must return boolean" +msgstr "ì¸ë±ìФ 검색 ì—°ì‚°ìžëŠ” ë¶€ìš¸í˜•ì„ ë°˜í™˜í•´ì•¼ 함" + +#: commands/opclasscmds.c:1164 +#, c-format +msgid "btree comparison procedures must have two arguments" +msgstr "btree ë¹„êµ í”„ë¡œì‹œì €ì—는 ë‘ ê°œì˜ ì¸ìžê°€ 있어야 함" + +#: commands/opclasscmds.c:1168 +#, c-format +msgid "btree comparison procedures must return integer" +msgstr "btree ë¹„êµ í”„ë¡œì‹œì €ëŠ” 반드시 integer ìžë£Œí˜•ì„ ë°˜í™˜í•´ì•¼ 함" + +#: commands/opclasscmds.c:1185 +#, c-format +msgid "btree sort support procedures must accept type \"internal\"" +msgstr "" +"btree ì •ë ¬ ì§€ì› í”„ë¡œì‹œì €ëŠ” 반드시 \"internal\" ìžë£Œí˜• ìž…ë ¥ ì¸ìžë¡œ 사용해야함" + +#: commands/opclasscmds.c:1189 +#, c-format +msgid "btree sort support procedures must return void" +msgstr "btree ì •ë ¬ ì§€ì› í”„ë¡œì‹œì €ëŠ” 반드시 void ê°’ì„ ë°˜í™˜í•´ì•¼ 함" + +#: commands/opclasscmds.c:1201 +#, c-format +msgid "hash procedures must have one argument" +msgstr "해시 프로시저ì—는 í•˜ë‚˜ì˜ ì¸ìžê°€ 있어야 함" + +#: commands/opclasscmds.c:1205 +#, c-format +msgid "hash procedures must return integer" +msgstr "해시 프로시저는 정수를 반환해야 함" + +#: commands/opclasscmds.c:1229 +#, c-format +msgid "associated data types must be specified for index support procedure" +msgstr "ì¸ë±ìФ ì§€ì› í”„ë¡œì‹œì €ì— ëŒ€í•´ 관련 ë°ì´í„° 형ì‹ì„ 지정해야 함" + +#: commands/opclasscmds.c:1254 +#, c-format +msgid "procedure number %d for (%s,%s) appears more than once" +msgstr "프로시저 번호 %dì´(ê°€) (%s,%s)ì— ëŒ€í•´ 여러 번 표시ë¨" + +#: commands/opclasscmds.c:1261 +#, c-format +msgid "operator number %d for (%s,%s) appears more than once" +msgstr "ì—°ì‚°ìž ë²ˆí˜¸ %dì´(ê°€) (%s,%s)ì— ëŒ€í•´ 여러 번 표시ë¨" + +#: commands/opclasscmds.c:1310 +#, c-format +msgid "operator %d(%s,%s) already exists in operator family \"%s\"" +msgstr "%d(%s,%s) ì—°ì‚°ìžê°€ \"%s\" ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— ì´ë¯¸ 있ìŒ" + +#: commands/opclasscmds.c:1426 +#, c-format +msgid "function %d(%s,%s) already exists in operator family \"%s\"" +msgstr "%d(%s,%s) 함수가 \"%s\" ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— ì´ë¯¸ 있ìŒ" + +#: commands/opclasscmds.c:1516 +#, c-format +msgid "operator %d(%s,%s) does not exist in operator family \"%s\"" +msgstr "%d(%s,%s) ì—°ì‚°ìžê°€ \"%s\" ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— ì—†ìŒ" + +#: commands/opclasscmds.c:1556 +#, c-format +msgid "function %d(%s,%s) does not exist in operator family \"%s\"" +msgstr "%d(%s,%s) 함수가 \"%s\" ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì— ì—†ìŒ" + +#: commands/opclasscmds.c:1686 +#, c-format +msgid "" +"operator class \"%s\" for access method \"%s\" already exists in schema \"%s" +"\"" +msgstr "" +"\"%s\" ì—°ì‚°ìž í´ëž˜ìФ(\"%s\" 액세스 ë°©ë²•ì„ ì‚¬ìš©í•˜ëŠ”)는 ì´ë¯¸ \"%s\" 스키마 안" +"ì— ìžˆìŠµë‹ˆë‹¤" + +#: commands/opclasscmds.c:1709 +#, c-format +msgid "" +"operator family \"%s\" for access method \"%s\" already exists in schema \"%s" +"\"" +msgstr "\"%s\" ì—°ì‚°ìž íŒ¨ë°€ë¦¬(ì ‘ê·¼ 방법: \"%s\")ê°€ \"%s\" ìŠ¤í‚¤ë§ˆì— ì´ë¯¸ 있ìŒ" + +#: commands/operatorcmds.c:114 commands/operatorcmds.c:122 +#, c-format +msgid "SETOF type not allowed for operator argument" +msgstr "SETOF 형ì‹ì€ ì—°ì‚°ìž ì¸ìžì— 허용ë˜ì§€ 않ìŒ" + +#: commands/operatorcmds.c:152 commands/operatorcmds.c:457 +#, c-format +msgid "operator attribute \"%s\" not recognized" +msgstr "\"%s\" ì—°ì‚°ìž ì†ì„±ì„ 처리할 수 ì—†ìŒ" + +#: commands/operatorcmds.c:163 +#, c-format +msgid "operator procedure must be specified" +msgstr "ì—°ì‚°ìž í”„ë¡œì‹œì €ëŠ” 반드시 지정해 주어야합니다" + +#: commands/operatorcmds.c:174 +#, c-format +msgid "at least one of leftarg or rightarg must be specified" +msgstr "왼쪽 ì´ë‚˜ 오른쪽 중 ì ì–´ë„ í•˜ë‚˜ì˜ ì¸ìžëŠ” 지정해야 합니다" + +#: commands/operatorcmds.c:278 +#, c-format +msgid "restriction estimator function %s must return type %s" +msgstr "%s 제한 ì˜ˆìƒ í•¨ìˆ˜ëŠ” %s ìžë£Œí˜•ì„ ë°˜í™˜í•´ì•¼ 함" + +#: commands/operatorcmds.c:324 +#, c-format +msgid "join estimator function %s must return type %s" +msgstr "%s ì¡°ì¸ ì˜ˆìƒ í•¨ìˆ˜ëŠ” %s ìžë£Œí˜•ì„ ë°˜í™˜í•´ì•¼ 함" + +#: commands/operatorcmds.c:451 +#, c-format +msgid "operator attribute \"%s\" cannot be changed" +msgstr "\"%s\" ì—°ì‚°ìž ì†ì„± 바꿀 수 ì—†ìŒ" + +#: commands/policy.c:87 commands/policy.c:388 commands/policy.c:477 +#: commands/tablecmds.c:971 commands/tablecmds.c:1313 +#: commands/tablecmds.c:2185 commands/tablecmds.c:4329 +#: commands/tablecmds.c:6280 commands/tablecmds.c:12080 +#: commands/tablecmds.c:12115 commands/trigger.c:241 commands/trigger.c:1125 +#: commands/trigger.c:1233 rewrite/rewriteDefine.c:273 +#: rewrite/rewriteDefine.c:917 +#, c-format +msgid "permission denied: \"%s\" is a system catalog" +msgstr "액세스 권한 ì—†ìŒ: \"%s\" 시스템 카탈로그임" + +#: commands/policy.c:170 +#, c-format +msgid "ignoring specified roles other than PUBLIC" +msgstr "PUBLIC 아닌 지정한 모든 롤 무시함" + +#: commands/policy.c:171 +#, c-format +msgid "All roles are members of the PUBLIC role." +msgstr "모든 ë¡¤ì´ PUBLIC ë¡¤ì˜ ì†Œì†ìž…니다." + +#: commands/policy.c:501 +#, c-format +msgid "role \"%s\" could not be removed from policy \"%s\" on \"%s\"" +msgstr "\"%s\" ë¡¤ì„ \"%s\" ì •ì±… (ëŒ€ìƒ ë¦´ë ˆì´ì…˜: \"%s\")ì—서 ì‚­ì œë  ìˆ˜ ì—†ìŒ" + +#: commands/policy.c:710 +#, c-format +msgid "WITH CHECK cannot be applied to SELECT or DELETE" +msgstr "WITH CHECK ì˜µì…˜ì€ SELECT나 DELETE ìž‘ì—…ì— ì ìš© ë  ìˆ˜ ì—†ìŒ" + +#: commands/policy.c:719 commands/policy.c:1019 +#, c-format +msgid "only WITH CHECK expression allowed for INSERT" +msgstr "INSERT êµ¬ë¬¸ì— ëŒ€í•´ì„œë§Œ WITH CHECK ì˜µì…˜ì„ í—ˆìš©í•©ë‹ˆë‹¤" + +#: commands/policy.c:792 commands/policy.c:1242 +#, c-format +msgid "policy \"%s\" for table \"%s\" already exists" +msgstr "\"%s\" ì •ì±…ì´ \"%s\" í…Œì´ë¸”ì— ì´ë¯¸ 지정ë˜ì–´ìžˆìŠµë‹ˆë‹¤" + +#: commands/policy.c:991 commands/policy.c:1270 commands/policy.c:1345 +#, c-format +msgid "policy \"%s\" for table \"%s\" does not exist" +msgstr "\"%s\" ì •ì±…ì´ \"%s\" í…Œì´ë¸”ì— ì—†ìŒ" + +#: commands/policy.c:1009 +#, c-format +msgid "only USING expression allowed for SELECT, DELETE" +msgstr "USING 구문만 SELECT, DELETE ìž‘ì—…ì— ì“¸ 수 있ìŒ" + +#: commands/portalcmds.c:61 commands/portalcmds.c:160 +#: commands/portalcmds.c:212 +#, c-format +msgid "invalid cursor name: must not be empty" +msgstr "ìž˜ëª»ëœ ì»¤ì„œ ì´ë¦„: 비어있으면 안ë©ë‹ˆë‹¤" + +#: commands/portalcmds.c:168 commands/portalcmds.c:222 +#: executor/execCurrent.c:67 utils/adt/xml.c:2389 utils/adt/xml.c:2556 +#, c-format +msgid "cursor \"%s\" does not exist" +msgstr "\"%s\" ì´ë¦„ì˜ ì»¤ì„œê°€ ì—†ìŒ" + +#: commands/prepare.c:71 +#, c-format +msgid "invalid statement name: must not be empty" +msgstr "ìž˜ëª»ëœ ëª…ë ¹ë¬¸ ì´ë¦„: 비어있으면 안ë©ë‹ˆë‹¤" + +#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1343 +#, c-format +msgid "could not determine data type of parameter $%d" +msgstr "$%d 매개 ë³€ìˆ˜ì˜ ìžë£Œí˜•ì„ ì•Œìˆ˜ê°€ 없습니다." + +#: commands/prepare.c:147 +#, c-format +msgid "utility statements cannot be prepared" +msgstr "utility ëª…ë ¹ë¬¸ë“¤ì€ ë¯¸ë¦¬ 준비할 수 없습니다" + +#: commands/prepare.c:257 commands/prepare.c:264 +#, c-format +msgid "prepared statement is not a SELECT" +msgstr "ì¤€ë¹„ëœ ëª…ë ¹ë¬¸ì´ SELECT êµ¬ë¬¸ì´ ì•„ë‹™ë‹ˆë‹¤." + +#: commands/prepare.c:332 +#, c-format +msgid "wrong number of parameters for prepared statement \"%s\"" +msgstr "prepared statement \"%s\"ì— ë§¤ê°œ 변수 수가 틀렸습니다" + +#: commands/prepare.c:334 +#, c-format +msgid "Expected %d parameters but got %d." +msgstr "%d ê°œì˜ ë§¤ê°œ 변수가 요구ë˜ëŠ”ë° %d ê°œë§Œì´ ì¡´ìž¬í•©ë‹ˆë‹¤" + +#: commands/prepare.c:370 +#, c-format +msgid "parameter $%d of type %s cannot be coerced to the expected type %s" +msgstr "??? parameter $%d of type %s 는 expected type %s 로 강요할 수 없다" + +#: commands/prepare.c:465 +#, c-format +msgid "prepared statement \"%s\" already exists" +msgstr "\"%s\" ì´ë¦„ì˜ ì¤€ë¹„ëœ ëª…ë ¹ë¬¸(prepared statement)ì´ ì´ë¯¸ 있습니다" + +#: commands/prepare.c:504 +#, c-format +msgid "prepared statement \"%s\" does not exist" +msgstr "\"%s\" ì´ë¦„ì˜ ì¤€ë¹„ëœ ëª…ë ¹ë¬¸(prepared statement) ì—†ìŒ" + +#: commands/proclang.c:87 +#, c-format +msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters" +msgstr "CREATE LANGUAGE ì˜ ë§¤ê°œ 변수 ëŒ€ì‹ ì— pg_pltemplate 정보를 ì´ìš©í•˜ì„¸ìš”" + +#: commands/proclang.c:97 +#, c-format +msgid "must be superuser to create procedural language \"%s\"" +msgstr "슈í¼ìœ ì €ë§Œ \"%s\" 프로시저 언어를 만들 수 있ìŒ" + +#: commands/proclang.c:252 +#, c-format +msgid "unsupported language \"%s\"" +msgstr "ì§€ì›í•˜ì§€ 않는 프로시저 언어 \"%s\"" + +#: commands/proclang.c:254 +#, c-format +msgid "The supported languages are listed in the pg_pltemplate system catalog." +msgstr "ì§€ì›í•˜ëŠ” 언어 목ë¡ì€ pg_pltemplate 시스템 ì¹´íƒˆë¡œê·¸ì— ìžˆìŠµë‹ˆë‹¤." + +#: commands/proclang.c:262 +#, c-format +msgid "must be superuser to create custom procedural language" +msgstr "슈í¼ìœ ì €ë§Œ ì‚¬ìš©ìž ì§€ì • 프로시저 언어를 만들 수 있ìŒ" + +#: commands/proclang.c:281 +#, c-format +msgid "" +"changing return type of function %s from \"opaque\" to \"language_handler\"" +msgstr "" +"%s 함수ì—서 \"opaque\" ìžë£Œí˜•ì„ \"language_handler\" ìžë£Œí˜•으로 리턴 ìžë£Œí˜•" +"ì„ ë°”ê¿‰ë‹ˆë‹¤" + +#: commands/schemacmds.c:99 commands/schemacmds.c:262 +#, c-format +msgid "unacceptable schema name \"%s\"" +msgstr "\"%s\" 스키마 ì´ë¦„ì´ ì ë‹¹í•˜ì§€ 못합니다" + +#: commands/schemacmds.c:100 commands/schemacmds.c:263 +#, c-format +msgid "The prefix \"pg_\" is reserved for system schemas." +msgstr "" +"\"pg_\" 문ìžë¡œ 시작하는 스키마는 시스템ì—서 사용하는 ì˜ˆì•½ëœ ìŠ¤í‚¤ë§ˆìž…ë‹ˆë‹¤." + +#: commands/schemacmds.c:114 +#, c-format +msgid "schema \"%s\" already exists, skipping" +msgstr "\"%s\" ì´ë¦„ì˜ ìŠ¤í‚¤ë§ˆ(schema)ê°€ ì´ë¯¸ 있ìŒ, 건너뜀" + +#: commands/seclabel.c:60 +#, c-format +msgid "no security label providers have been loaded" +msgstr "ë¡œë“œëœ ë³´ì•ˆ ë¼ë²¨ 제공ìžê°€ ì—†ìŒ" + +#: commands/seclabel.c:64 +#, c-format +msgid "" +"must specify provider when multiple security label providers have been loaded" +msgstr "다중 보안 ë ˆì´ë¸” 제공ìžê°€ 로드 ë  ë•Œ 제공ìžë¥¼ 지정해야 합니다." + +#: commands/seclabel.c:82 +#, c-format +msgid "security label provider \"%s\" is not loaded" +msgstr "\"%s\" ì´ë¦„ì˜ ë³´ì•ˆ ë¼ë²¨ 제공ìžê°€ 로드ë˜ì–´ 있지 않ìŒ" + +#: commands/sequence.c:127 +#, c-format +msgid "unlogged sequences are not supported" +msgstr "로그를 남기지 않는 시퀀스는 ì§€ì›í•˜ì§€ 않ìŒ" + +#: commands/sequence.c:651 +#, c-format +msgid "nextval: reached maximum value of sequence \"%s\" (%s)" +msgstr "nextval: \"%s\" ì‹œí€€ìŠ¤ì˜ ìµœëŒ€ê°’(%s)ì´ ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: commands/sequence.c:674 +#, c-format +msgid "nextval: reached minimum value of sequence \"%s\" (%s)" +msgstr "nextval: \"%s\" ì‹œí€€ìŠ¤ì˜ ìµœì†Œê°’(%s)ì´ ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: commands/sequence.c:792 +#, c-format +msgid "currval of sequence \"%s\" is not yet defined in this session" +msgstr "\"%s\" ì‹œí€€ìŠ¤ì˜ currval ê°’ì´ í˜„ìž¬ ì„¸ì…˜ì— ì§€ì •ë˜ì–´ 있지 않습니다" + +#: commands/sequence.c:811 commands/sequence.c:817 +#, c-format +msgid "lastval is not yet defined in this session" +msgstr "ì´ ì„¸ì…˜ì—는 lastval ê°’ì´ ì•„ì§ê¹Œì§€ 지정ë˜ì§€ 않았습니다" + +#: commands/sequence.c:893 +#, c-format +msgid "setval: value %s is out of bounds for sequence \"%s\" (%s..%s)" +msgstr "setval: %s ê°’ì€ \"%s\" ì‹œí€€ìŠ¤ì˜ ë²”ìœ„(%s..%s)를 벗어났습니다" + +#: commands/sequence.c:1267 +#, c-format +msgid "INCREMENT must not be zero" +msgstr "INCREMENT ê°’ì€ 0(zero)ì´ ë  ìˆ˜ 없습니다" + +#: commands/sequence.c:1323 +#, c-format +msgid "MINVALUE (%s) must be less than MAXVALUE (%s)" +msgstr "MINVALUE (%s) ê°’ì€ MAXVALUE (%s) 값보다 작아야합니다" + +#: commands/sequence.c:1348 +#, c-format +msgid "START value (%s) cannot be less than MINVALUE (%s)" +msgstr "START ê°’(%s)ì€ MINVALUE(%s)보다 ìž‘ì„ ìˆ˜ ì—†ìŒ" + +#: commands/sequence.c:1360 +#, c-format +msgid "START value (%s) cannot be greater than MAXVALUE (%s)" +msgstr "START ê°’(%s)ì€ MAXVALUE(%s)보다 í´ ìˆ˜ ì—†ìŒ" + +#: commands/sequence.c:1390 +#, c-format +msgid "RESTART value (%s) cannot be less than MINVALUE (%s)" +msgstr "RESTART ê°’(%s)ì€ MINVALUE(%s)보다 ìž‘ì„ ìˆ˜ ì—†ìŒ" + +#: commands/sequence.c:1402 +#, c-format +msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)" +msgstr "RESTART ê°’(%s)ì€ MAXVALUE(%s)보다 í´ ìˆ˜ ì—†ìŒ" + +#: commands/sequence.c:1417 +#, c-format +msgid "CACHE (%s) must be greater than zero" +msgstr "CACHE (%s) ê°’ì€ 0(zero)보다 커야합니다" + +#: commands/sequence.c:1449 +#, c-format +msgid "invalid OWNED BY option" +msgstr "ìž˜ëª»ëœ OWNED BY 옵션" + +#: commands/sequence.c:1450 +#, c-format +msgid "Specify OWNED BY table.column or OWNED BY NONE." +msgstr "OWNED BY í…Œì´ë¸”.ì—´ ë˜ëŠ” OWNED BY NONEì„ ì§€ì •í•˜ì‹­ì‹œì˜¤." + +#: commands/sequence.c:1473 +#, c-format +msgid "referenced relation \"%s\" is not a table or foreign table" +msgstr "참조ë˜ëŠ” \"%s\" 릴레ì´ì…˜ì€ í…Œì´ë¸” ë˜ëŠ” 외부 í…Œì´ë¸”ì´ ì•„ë‹™ë‹ˆë‹¤" + +#: commands/sequence.c:1480 +#, c-format +msgid "sequence must have same owner as table it is linked to" +msgstr "시퀀스 ë° ì´ ì‹œí€€ìŠ¤ê°€ ì—°ê²°ëœ í…Œì´ë¸”ì˜ ì†Œìœ ì£¼ê°€ 같아야 함" + +#: commands/sequence.c:1484 +#, c-format +msgid "sequence must be in same schema as table it is linked to" +msgstr "시퀀스 ë° ì´ ì‹œí€€ìŠ¤ê°€ ì—°ê²°ëœ í…Œì´ë¸”ì´ ê°™ì€ ìŠ¤í‚¤ë§ˆì— ìžˆì–´ì•¼ 함" + +#: commands/tablecmds.c:216 +#, c-format +msgid "table \"%s\" does not exist" +msgstr "\"%s\" í…Œì´ë¸” ì—†ìŒ" + +#: commands/tablecmds.c:217 +#, c-format +msgid "table \"%s\" does not exist, skipping" +msgstr "\"%s\" í…Œì´ë¸” ì—†ìŒ, 무시함" + +#: commands/tablecmds.c:219 +msgid "Use DROP TABLE to remove a table." +msgstr "í…Œì´ë¸”ì„ ì‚­ì œí•˜ë ¤ë©´, DROP TABLE ëª…ë ¹ì„ ì‚¬ìš©í•˜ì„¸ìš”." + +#: commands/tablecmds.c:222 +#, c-format +msgid "sequence \"%s\" does not exist" +msgstr "\"%s\" 시퀀스 ì—†ìŒ" + +#: commands/tablecmds.c:223 +#, c-format +msgid "sequence \"%s\" does not exist, skipping" +msgstr "\"%s\" 시퀀스 ì—†ìŒ, 무시함" + +#: commands/tablecmds.c:225 +msgid "Use DROP SEQUENCE to remove a sequence." +msgstr "시퀀스를 삭제하려면 DROP SEQUENCE ëª…ë ¹ì„ ì‚¬ìš©í•˜ì„¸ìš”." + +#: commands/tablecmds.c:228 +#, c-format +msgid "view \"%s\" does not exist" +msgstr "\"%s\" ë·°(view) ì—†ìŒ" + +#: commands/tablecmds.c:229 +#, c-format +msgid "view \"%s\" does not exist, skipping" +msgstr "\"%s\" ë·°(view) ì—†ìŒ, 무시함" + +#: commands/tablecmds.c:231 +msgid "Use DROP VIEW to remove a view." +msgstr "뷰를 삭제하려면, DROP VIEW ëª…ë ¹ì„ ì‚¬ìš©í•˜ì„¸ìš”." + +#: commands/tablecmds.c:234 +#, c-format +msgid "materialized view \"%s\" does not exist" +msgstr "\"%s\" ì´ë¦„ì˜ êµ¬ì²´í™”ëœ ë·°ê°€ ì—†ìŒ" + +#: commands/tablecmds.c:235 +#, c-format +msgid "materialized view \"%s\" does not exist, skipping" +msgstr "\"%s\" êµ¬ì²´í™”ëœ ë·° ì—†ìŒ, 건너뜀" + +#: commands/tablecmds.c:237 +msgid "Use DROP MATERIALIZED VIEW to remove a materialized view." +msgstr "êµ¬ì²´í™”ëœ ë·°ë¥¼ 삭제하려면, DROP MATERIALIZED VIEW ëª…ë ¹ì„ ì‚¬ìš©í•˜ì„¸ìš”." + +#: commands/tablecmds.c:240 parser/parse_utilcmd.c:1630 +#, c-format +msgid "index \"%s\" does not exist" +msgstr "\"%s\" ì¸ë±ìФ ì—†ìŒ" + +#: commands/tablecmds.c:241 +#, c-format +msgid "index \"%s\" does not exist, skipping" +msgstr "\"%s\" ì¸ë±ìФ ì—†ìŒ, 무시함" + +#: commands/tablecmds.c:243 +msgid "Use DROP INDEX to remove an index." +msgstr "ì¸ë±ìŠ¤ë¥¼ 삭제하려면, DROP INDEX ëª…ë ¹ì„ ì‚¬ìš©í•˜ì„¸ìš”." + +#: commands/tablecmds.c:248 +#, c-format +msgid "\"%s\" is not a type" +msgstr "\"%s\" ê°ì²´ëŠ” ìžë£Œí˜•ì´ ì•„ë‹˜" + +#: commands/tablecmds.c:249 +msgid "Use DROP TYPE to remove a type." +msgstr "ìžë£Œí˜•ì„ ì‚­ì œí•˜ë ¤ë©´ DROP TYPE ëª…ë ¹ì„ ì‚¬ìš©í•˜ì„¸ìš”." + +#: commands/tablecmds.c:252 commands/tablecmds.c:8583 +#: commands/tablecmds.c:11335 +#, c-format +msgid "foreign table \"%s\" does not exist" +msgstr "\"%s\" 외부 í…Œì´ë¸” ì—†ìŒ" + +#: commands/tablecmds.c:253 +#, c-format +msgid "foreign table \"%s\" does not exist, skipping" +msgstr "\"%s\" 외부 í…Œì´ë¸” ì—†ìŒ, 건너뜀" + +#: commands/tablecmds.c:255 +msgid "Use DROP FOREIGN TABLE to remove a foreign table." +msgstr "외부 í…Œì´ë¸”ì„ ì‚­ì œí•˜ë ¤ë©´, DROP FOREIGN TABLE ëª…ë ¹ì„ ì‚¬ìš©í•˜ì„¸ìš”." + +#: commands/tablecmds.c:494 +#, c-format +msgid "ON COMMIT can only be used on temporary tables" +msgstr "ON COMMIT ì˜µì…˜ì€ ìž„ì‹œ í…Œì´ë¸”ì—서만 ì‚¬ìš©ë  ìˆ˜ 있습니다" + +#: commands/tablecmds.c:514 +#, c-format +msgid "cannot create temporary table within security-restricted operation" +msgstr "보안 제한 작업 ë‚´ì—서 임시 í…Œì´ë¸”ì„ ë§Œë“¤ 수 ì—†ìŒ" + +#: commands/tablecmds.c:822 +#, c-format +msgid "DROP INDEX CONCURRENTLY does not support dropping multiple objects" +msgstr "DROP INDEX CONCURRENTLY ëª…ë ¹ì€ í•˜ë‚˜ì˜ ì¸ë±ìŠ¤ë§Œ 지울 수 있습니다" + +#: commands/tablecmds.c:826 +#, c-format +msgid "DROP INDEX CONCURRENTLY does not support CASCADE" +msgstr "DROP INDEX CONCURRENTLY 명령ì—서는 CASCADE ì˜µì…˜ì„ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: commands/tablecmds.c:1085 +#, c-format +msgid "truncate cascades to table \"%s\"" +msgstr "\"%s\" ê°ì²´ì˜ ìžë£Œë„ 함께 ì‚­ì œë¨" + +#: commands/tablecmds.c:1323 +#, c-format +msgid "cannot truncate temporary tables of other sessions" +msgstr "다른 ì„¸ì…˜ì˜ ìž„ì‹œ í…Œì´ë¸” ìžë£ŒëŠ” 비울(truncate) 수 없습니다" + +#: commands/tablecmds.c:1529 parser/parse_utilcmd.c:1844 +#, c-format +msgid "inherited relation \"%s\" is not a table or foreign table" +msgstr "ìƒì†í•  \"%s\" 릴레ì´ì…˜(relation)ì€ í…Œì´ë¸”ë„, 외부 í…Œì´ë¸”ë„ ì•„ë‹™ë‹ˆë‹¤" + +#: commands/tablecmds.c:1536 commands/tablecmds.c:10150 +#, c-format +msgid "cannot inherit from temporary relation \"%s\"" +msgstr "\"%s\" 임시 í…Œì´ë¸”입니다, 그래서 ìƒì† 대ìƒì´ ë  ìˆ˜ 없습니다" + +#: commands/tablecmds.c:1544 commands/tablecmds.c:10158 +#, c-format +msgid "cannot inherit from temporary relation of another session" +msgstr "다른 ì„¸ì…˜ì˜ ìž„ì‹œ í…Œì´ë¸”입니다, 그래서 ìƒì† 대ìƒì´ ë  ìˆ˜ 없습니다" + +#: commands/tablecmds.c:1560 commands/tablecmds.c:10192 +#, c-format +msgid "relation \"%s\" would be inherited from more than once" +msgstr "\"%s\" í…Œì´ë¸”ì´ ì—¬ëŸ¬ 번 ìƒì†ë¨" + +#: commands/tablecmds.c:1608 +#, c-format +msgid "merging multiple inherited definitions of column \"%s\"" +msgstr "\"%s\" ì¹¼ëŸ¼ì´ ì¤‘ë³µë˜ì–´ ìƒì†ë©ë‹ˆë‹¤." + +#: commands/tablecmds.c:1616 +#, c-format +msgid "inherited column \"%s\" has a type conflict" +msgstr "ìƒìœ„ í…Œì´ë¸”ì—서 지정한 \"%s\" ì—´ì˜ ìžë£Œí˜•ë“¤ì´ ì¼ì¹˜í•˜ì§€ 않습니다" + +#: commands/tablecmds.c:1618 commands/tablecmds.c:1641 +#: commands/tablecmds.c:1839 commands/tablecmds.c:1863 +#: parser/parse_coerce.c:1630 parser/parse_coerce.c:1650 +#: parser/parse_coerce.c:1670 parser/parse_coerce.c:1715 +#: parser/parse_coerce.c:1752 parser/parse_param.c:218 +#, c-format +msgid "%s versus %s" +msgstr "%s 형과 %s 형" + +#: commands/tablecmds.c:1627 +#, c-format +msgid "inherited column \"%s\" has a collation conflict" +msgstr "ìƒì† ë°›ì€ \"%s\" ì¹¼ëŸ¼ì˜ ì •ë ¬ê·œì¹™ì—서 ì¶©ëŒí•©ë‹ˆë‹¤." + +#: commands/tablecmds.c:1629 commands/tablecmds.c:1851 +#: commands/tablecmds.c:4767 +#, c-format +msgid "\"%s\" versus \"%s\"" +msgstr "\"%s\" 형과 \"%s\" 형" + +#: commands/tablecmds.c:1639 +#, c-format +msgid "inherited column \"%s\" has a storage parameter conflict" +msgstr "ìƒì† ë°›ì€ \"%s\" ì¹¼ëŸ¼ì˜ ìŠ¤í† ë¦¬ì§€ 설정값ì—서 ì¶©ëŒí•©ë‹ˆë‹¤" + +#: commands/tablecmds.c:1752 commands/tablecmds.c:8088 +#: parser/parse_utilcmd.c:923 parser/parse_utilcmd.c:1274 +#: parser/parse_utilcmd.c:1350 +#, c-format +msgid "cannot convert whole-row table reference" +msgstr "ì „ì²´ 로우 í…Œì´ë¸” 참조형으로 변환할 수 ì—†ìŒ" + +#: commands/tablecmds.c:1753 parser/parse_utilcmd.c:924 +#, c-format +msgid "Constraint \"%s\" contains a whole-row reference to table \"%s\"." +msgstr "\"%s\" ì œì•½ì¡°ê±´ì— \"%s\" í…Œì´ë¸” ì „ì²´ 로우 참조가 있습니다" + +#: commands/tablecmds.c:1825 +#, c-format +msgid "merging column \"%s\" with inherited definition" +msgstr "\"%s\" ì¹¼ëŸ¼ì„ ìƒì†ëœ ì •ì˜ì™€ 병합하는 중" + +#: commands/tablecmds.c:1829 +#, c-format +msgid "moving and merging column \"%s\" with inherited definition" +msgstr "\"%s\" ì¹¼ëŸ¼ì„ ìƒì†ëœ ì •ì˜ì™€ ì´ë™, 병합하는 중" + +#: commands/tablecmds.c:1830 +#, c-format +msgid "User-specified column moved to the position of the inherited column." +msgstr "ì‚¬ìš©ìž ì§€ì • ì¹¼ëŸ¼ì´ ìƒì†ëœ ì¹¼ëŸ¼ì˜ ìœ„ì¹˜ë¡œ ì´ë™ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: commands/tablecmds.c:1837 +#, c-format +msgid "column \"%s\" has a type conflict" +msgstr "\"%s\" ì¹¼ëŸ¼ì˜ ìžë£Œí˜•ì´ ì¶©ëŒí•©ë‹ˆë‹¤" + +#: commands/tablecmds.c:1849 +#, c-format +msgid "column \"%s\" has a collation conflict" +msgstr "\"%s\" ì¹¼ëŸ¼ì˜ ì •ë ¬ê·œì¹™ì´ ì¶©ëŒí•©ë‹ˆë‹¤" + +#: commands/tablecmds.c:1861 +#, c-format +msgid "column \"%s\" has a storage parameter conflict" +msgstr "\"%s\" ì¹¼ëŸ¼ì˜ ìŠ¤í† ë¦¬ì§€ ì„¤ì •ê°’ì´ ì¶©ëŒí•©ë‹ˆë‹¤" + +#: commands/tablecmds.c:1913 +#, c-format +msgid "column \"%s\" inherits conflicting default values" +msgstr "" +"ìƒì† 받는 \"%s\" ì—´ ìžë£Œí˜•ê³¼ ì´ ì—´ì— ì§€ì •í•œ default ê°’ì˜ ìžë£Œí˜•ì´ ì„œë¡œ 다릅니" +"다" + +#: commands/tablecmds.c:1915 +#, c-format +msgid "To resolve the conflict, specify a default explicitly." +msgstr "ì´ ì¶©ëŒì„ 피하려면, default ê°’ì„ ë°”ë¥´ê²Œ 지정하십시오." + +#: commands/tablecmds.c:1962 +#, c-format +msgid "" +"check constraint name \"%s\" appears multiple times but with different " +"expressions" +msgstr "" +"\"%s\" ì²´í¬ ì œì•½ ì¡°ê±´ ì´ë¦„ì´ ì—¬ëŸ¬ 번 나타나지만, ê°ê° 다른 ì‹ìœ¼ë¡œ ë˜ì–´ìžˆìŒ" + +#: commands/tablecmds.c:2156 +#, c-format +msgid "cannot rename column of typed table" +msgstr "칼럼 ì´ë¦„ì„ ë°”ê¿€ 수 ì—†ìŒ" + +#: commands/tablecmds.c:2173 +#, c-format +msgid "" +"\"%s\" is not a table, view, materialized view, composite type, index, or " +"foreign table" +msgstr "" +"\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”ë„, ë·°ë„, êµ¬ì²´í™”ëœ ë·°ë„, 복합 ìžë£Œí˜•ë„, ì¸ë±ìФë„, 외부 í…Œ" +"ì´ë¸”ë„ ì•„ë‹™ë‹ˆë‹¤." + +#: commands/tablecmds.c:2267 +#, c-format +msgid "inherited column \"%s\" must be renamed in child tables too" +msgstr "하위 í…Œì´ë¸”ì—ì„œë„ ìƒì†ëœ \"%s\" ì—´ì˜ ì´ë¦„ì„ ë°”ê¾¸ì–´ì•¼ 함" + +#: commands/tablecmds.c:2299 +#, c-format +msgid "cannot rename system column \"%s\"" +msgstr "\"%s\" ì´ë¦„ì˜ ì—´ì€ ì‹œìŠ¤í…œ 열입니다, ì´ë¦„ì„ ë°”ê¿€ 수 없습니다" + +#: commands/tablecmds.c:2314 +#, c-format +msgid "cannot rename inherited column \"%s\"" +msgstr "\"%s\" ì´ë¦„ì˜ ì—´ì€ ìƒì† ë°›ì€ ì—´ìž…ë‹ˆë‹¤, ì´ë¦„ì„ ë°”ê¿€ 수 없습니다" + +#: commands/tablecmds.c:2469 +#, c-format +msgid "inherited constraint \"%s\" must be renamed in child tables too" +msgstr "" +"하위 í…Œì´ë¸”ì—ì„œë„ ìƒì†ëœ \"%s\" ì œì•½ì¡°ê±´ì€ í•˜ìœ„ í…Œì´ë¸”ì—ì„œë„ ì´ë¦„ì´ ë°”ë€Œì–´ì•¼ " +"함" + +#: commands/tablecmds.c:2476 +#, c-format +msgid "cannot rename inherited constraint \"%s\"" +msgstr "\"%s\" ìƒì†ëœ ì œì•½ì¡°ê±´ì€ ì´ë¦„ì„ ë°”ê¿€ 수 없습니다" + +#. translator: first %s is a SQL command, eg ALTER TABLE +#: commands/tablecmds.c:2702 +#, c-format +msgid "" +"cannot %s \"%s\" because it is being used by active queries in this session" +msgstr "ì´ ì„¸ì…˜ì˜ í™œì„± 쿼리ì—서 사용 중ì´ë¯€ë¡œ %s \"%s\" ìž‘ì—…ì„ í•  수 ì—†ìŒ" + +#. translator: first %s is a SQL command, eg ALTER TABLE +#: commands/tablecmds.c:2711 +#, c-format +msgid "cannot %s \"%s\" because it has pending trigger events" +msgstr "보류 ì¤‘ì¸ íŠ¸ë¦¬ê±° ì´ë²¤íŠ¸ê°€ 있으므로 %s \"%s\" ìž‘ì—…ì„ í•  수 ì—†ìŒ" + +#: commands/tablecmds.c:3785 +#, c-format +msgid "cannot rewrite system relation \"%s\"" +msgstr "\"%s\" 시스템 릴레ì´ì…˜ì„ 다시 쓰기(rewrite) í•  수 ì—†ìŒ" + +#: commands/tablecmds.c:3791 +#, c-format +msgid "cannot rewrite table \"%s\" used as a catalog table" +msgstr "카탈로그 í…Œì´ë¸”로 사용ë˜ì–´ \"%s\" í…Œì´ë¸”ì„ rewrite 못함" + +#: commands/tablecmds.c:3801 +#, c-format +msgid "cannot rewrite temporary tables of other sessions" +msgstr "다른 ì„¸ì…˜ì˜ ìž„ì‹œ í…Œì´ë¸”ì„ ë‹¤ì‹œ 쓰기(rewrite) í•  수 ì—†ìŒ" + +#: commands/tablecmds.c:4069 +#, c-format +msgid "rewriting table \"%s\"" +msgstr "\"%s\" íŒŒì¼ ë‹¤ì‹œ 쓰는 중" + +#: commands/tablecmds.c:4073 +#, c-format +msgid "verifying table \"%s\"" +msgstr "\"%s\" íŒŒì¼ ê²€ì‚¬ 중" + +#: commands/tablecmds.c:4187 +#, c-format +msgid "column \"%s\" contains null values" +msgstr "\"%s\" ì—´ì—는 null ê°’ ìžë£Œê°€ 있습니다" + +#: commands/tablecmds.c:4202 commands/tablecmds.c:7385 +#, c-format +msgid "check constraint \"%s\" is violated by some row" +msgstr "\"%s\" ì²´í¬ ì œì•½ ì¡°ê±´ì„ ìœ„ë°˜í•˜ëŠ” 몇몇 ìžë£Œê°€ ì´ë¯¸ 있습니다" + +#: commands/tablecmds.c:4350 commands/trigger.c:235 +#: rewrite/rewriteDefine.c:267 rewrite/rewriteDefine.c:912 +#, c-format +msgid "\"%s\" is not a table or view" +msgstr "\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”ë„ ë·°ë„ ì•„ë‹™ë‹ˆë‹¤" + +#: commands/tablecmds.c:4353 commands/trigger.c:1119 commands/trigger.c:1224 +#, c-format +msgid "\"%s\" is not a table, view, or foreign table" +msgstr "\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”, ë·°, 외부 í…Œì´ë¸” ê·¸ ì–´ëŠ ê²ƒë„ ì•„ë‹™ë‹ˆë‹¤" + +#: commands/tablecmds.c:4356 +#, c-format +msgid "\"%s\" is not a table, view, materialized view, or index" +msgstr "\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”, ë·°, êµ¬ì²´í™”ëœ ë·°, ì¸ë±ìФ ê·¸ ì–´ëŠ ê²ƒë„ ì•„ë‹™ë‹ˆë‹¤" + +#: commands/tablecmds.c:4362 +#, c-format +msgid "\"%s\" is not a table, materialized view, or index" +msgstr "\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”, êµ¬ì²´í™”ëœ ë·°, ì¸ë±ìФ ê·¸ ì–´ëŠ ê²ƒë„ ì•„ë‹™ë‹ˆë‹¤" + +#: commands/tablecmds.c:4365 +#, c-format +msgid "\"%s\" is not a table, materialized view, or foreign table" +msgstr "\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”, êµ¬ì²´í™”ëœ ë·°, 외부 í…Œì´ë¸” ê·¸ ì–´ëŠ ê²ƒë„ ì•„ë‹™ë‹ˆë‹¤." + +#: commands/tablecmds.c:4368 +#, c-format +msgid "\"%s\" is not a table or foreign table" +msgstr "\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”ë„ ì™¸ë¶€ í…Œì´ë¸”ë„ ì•„ë‹™ë‹ˆë‹¤" + +#: commands/tablecmds.c:4371 +#, c-format +msgid "\"%s\" is not a table, composite type, or foreign table" +msgstr "\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”, 복합 ìžë£Œí˜•, 외부 í…Œì´ë¸” ê·¸ ì–´ëŠ ê²ƒë„ ì•„ë‹™ë‹ˆë‹¤." + +#: commands/tablecmds.c:4374 commands/tablecmds.c:5426 +#, c-format +msgid "\"%s\" is not a table, materialized view, index, or foreign table" +msgstr "" +"\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”, êµ¬ì²´í™”ëœ ë·°, ì¸ë±ìФ, 외부 í…Œì´ë¸” ê·¸ ì–´ëŠ ê²ƒë„ ì•„ë‹™ë‹ˆë‹¤." + +#: commands/tablecmds.c:4384 +#, c-format +msgid "\"%s\" is of the wrong type" +msgstr "\"%s\" ê°ì²´ëŠ” ìž˜ëª»ëœ ê°ì²´í˜•입니다." + +#: commands/tablecmds.c:4536 commands/tablecmds.c:4543 +#, c-format +msgid "cannot alter type \"%s\" because column \"%s.%s\" uses it" +msgstr "\"%s\" ìžë£Œí˜• 변경할 수 ì—†ìŒ(\"%s.%s\" 칼럼ì—서 해당 형ì‹ì„ 사용함)" + +#: commands/tablecmds.c:4550 +#, c-format +msgid "" +"cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type" +msgstr "" +"\"%s\" 외부 í…Œì´ë¸”ì„ ë³€ê²½í•  수 ì—†ìŒ(\"%s.%s\" 칼럼ì—서 해당 로우 í˜•ì„ ì‚¬ìš©í•¨)" + +#: commands/tablecmds.c:4557 +#, c-format +msgid "cannot alter table \"%s\" because column \"%s.%s\" uses its row type" +msgstr "" +"\"%s\" í…Œì´ë¸”ì„ ë³€ê²½í•  수 ì—†ìŒ(\"%s.%s\" 칼럼ì—서 해당 로우 형ì‹ì„ 사용함)" + +#: commands/tablecmds.c:4619 +#, c-format +msgid "cannot alter type \"%s\" because it is the type of a typed table" +msgstr "" +"\"%s\" ìžë£Œí˜•ì„ ë³€ê²½í•  수 ì—†ìŒ, ì´ ìžë£Œí˜•ì€ typed í…Œì´ë¸”ì˜ ìžë£Œí˜•ì´ê¸° 때문" + +#: commands/tablecmds.c:4621 +#, c-format +msgid "Use ALTER ... CASCADE to alter the typed tables too." +msgstr "" +"ì´ ê°ì²´ì™€ ê´€ê³„ëœ ëª¨ë“  ê°ì²´ë“¤ì„ 함께 변경하려면 ALTER ... CASCADE ëª…ë ¹ì„ ì‚¬ìš©" +"하십시오" + +#: commands/tablecmds.c:4665 +#, c-format +msgid "type %s is not a composite type" +msgstr "%s ìžë£Œí˜•ì€ ë³µí•© ìžë£Œí˜•ì´ ì•„ë‹™ë‹ˆë‹¤" + +#: commands/tablecmds.c:4691 +#, c-format +msgid "cannot add column to typed table" +msgstr "typed í…Œì´ë¸”ì—는 ì¹¼ëŸ¼ì„ ì¶”ê°€ í•  수 ì—†ìŒ" + +#: commands/tablecmds.c:4759 commands/tablecmds.c:10351 +#, c-format +msgid "child table \"%s\" has different type for column \"%s\"" +msgstr "" +"\"%s\" ìƒì†ëœ í…Œì´ë¸”ì˜ \"%s\" ì—´ ìžë£Œí˜•ì´ ìƒìœ„ í…Œì´ë¸”ì˜ ìžë£Œí˜•ê³¼ 틀립니다" + +#: commands/tablecmds.c:4765 commands/tablecmds.c:10358 +#, c-format +msgid "child table \"%s\" has different collation for column \"%s\"" +msgstr "" +"\"%s\" ìƒì†ëœ í…Œì´ë¸”ì˜ \"%s\" 칼럼 ì •ë ¬ê·œì¹™ì´ ìƒìœ„ í…Œì´ë¸”ì˜ ì •ë ¬ê·œì¹™ê³¼ 틀립니" +"다" + +#: commands/tablecmds.c:4775 +#, c-format +msgid "child table \"%s\" has a conflicting \"%s\" column" +msgstr "\"%s\" 하위 í…Œì´ë¸”ì— ì¶©ëŒí•˜ëŠ” \"%s\" ì¹¼ëŸ¼ì´ ìžˆìŒ" + +#: commands/tablecmds.c:4787 +#, c-format +msgid "merging definition of column \"%s\" for child \"%s\"" +msgstr "\"%s\" ì—´(\"%s\" 하위)ì˜ ì •ì˜ë¥¼ 병합하는 중" + +#: commands/tablecmds.c:5014 +#, c-format +msgid "column must be added to child tables too" +msgstr "하위 í…Œì´ë¸”ì—ë„ ì—´ì„ ì¶”ê°€í•´ì•¼ 함" + +#: commands/tablecmds.c:5089 +#, c-format +msgid "column \"%s\" of relation \"%s\" already exists, skipping" +msgstr "\"%s\" ì´ë¦„ì˜ ì¹¼ëŸ¼ì´ \"%s\" 릴레ì´ì…˜ì— ì´ë¯¸ 있습니다, 건너뜀" + +#: commands/tablecmds.c:5096 +#, c-format +msgid "column \"%s\" of relation \"%s\" already exists" +msgstr "\"%s\" ì´ë¦„ì˜ ì—´ì´ \"%s\" 릴레ì´ì…˜ì— ì´ë¯¸ 있습니다" + +#: commands/tablecmds.c:5207 commands/tablecmds.c:5313 +#: commands/tablecmds.c:5371 commands/tablecmds.c:5485 +#: commands/tablecmds.c:5542 commands/tablecmds.c:5636 +#: commands/tablecmds.c:7924 commands/tablecmds.c:8606 +#, c-format +msgid "cannot alter system column \"%s\"" +msgstr "\"%s\" ì—´ì€ ì‹œìŠ¤í…œ 열입니다. 그래서 ë³€ê²½ë  ìˆ˜ 없습니다" + +#: commands/tablecmds.c:5243 +#, c-format +msgid "column \"%s\" is in a primary key" +msgstr "\"%s\" ì—´ì€ ê¸°ë³¸í‚¤ 열입니다" + +#: commands/tablecmds.c:5458 +#, c-format +msgid "statistics target %d is too low" +msgstr "ëŒ€ìƒ í†µê³„ê°’(%d)ì´ ë„ˆë¬´ 낮습니다" + +#: commands/tablecmds.c:5466 +#, c-format +msgid "lowering statistics target to %d" +msgstr "%d 값으로 ëŒ€ìƒ í†µê³„ê°’ì„ ë‚®ì¶¥ë‹ˆë‹¤" + +#: commands/tablecmds.c:5616 +#, c-format +msgid "invalid storage type \"%s\"" +msgstr "ìž˜ëª»ëœ STORAGE ê°’: \"%s\"" + +#: commands/tablecmds.c:5648 +#, c-format +msgid "column data type %s can only have storage PLAIN" +msgstr "%s ìžë£Œí˜•ì˜ columnì˜ STORAGE ê°’ì€ ë°˜ë“œì‹œ PLAIN ì´ì–´ì•¼í•©ë‹ˆë‹¤" + +#: commands/tablecmds.c:5686 +#, c-format +msgid "cannot drop column from typed table" +msgstr "typed í…Œì´ë¸”ì—서 ì¹¼ëŸ¼ì„ ì‚­ì œí•  수 ì—†ìŒ" + +#: commands/tablecmds.c:5730 +#, c-format +msgid "column \"%s\" of relation \"%s\" does not exist, skipping" +msgstr "\"%s\" ì¹¼ëŸ¼ì€ \"%s\" 릴레ì´ì…˜ì— ì—†ìŒ, 건너뜀" + +#: commands/tablecmds.c:5743 +#, c-format +msgid "cannot drop system column \"%s\"" +msgstr "\"%s\" ì¹¼ëŸ¼ì€ ì‹œìŠ¤í…œ 칼럼입니다, ì‚­ì œë  ìˆ˜ 없습니다" + +#: commands/tablecmds.c:5750 +#, c-format +msgid "cannot drop inherited column \"%s\"" +msgstr "\"%s\" ì¹¼ëŸ¼ì€ ìƒì†ë°›ì€ 칼럼입니다, ì‚­ì œë  ìˆ˜ 없습니다" + +#: commands/tablecmds.c:5990 +#, c-format +msgid "" +"ALTER TABLE / ADD CONSTRAINT USING INDEX will rename index \"%s\" to \"%s\"" +msgstr "" +"ALTER TABLE / ADD CONSTRAINT USING INDEX ìž‘ì—…ì€ \"%s\" ì¸ë±ìŠ¤ë¥¼ \"%s\" ì´ë¦„으" +"로 바꿀 것입니다." + +#: commands/tablecmds.c:6203 +#, c-format +msgid "constraint must be added to child tables too" +msgstr "하위 í…Œì´ë¸”ì—ë„ ì œì•½ ì¡°ê±´ì„ ì¶”ê°€í•´ì•¼ 함" + +#: commands/tablecmds.c:6274 +#, c-format +msgid "referenced relation \"%s\" is not a table" +msgstr "참조ë˜ëŠ” \"%s\" 릴레ì´ì…˜ì€ í…Œì´ë¸”ì´ ì•„ë‹™ë‹ˆë‹¤" + +#: commands/tablecmds.c:6297 +#, c-format +msgid "constraints on permanent tables may reference only permanent tables" +msgstr "ì˜êµ¬ 저장용 í…Œì´ë¸”ì˜ ì œì•½ ì¡°ê±´ì€ ì˜êµ¬ 저장용 í…Œì´ë¸”ì„ ì°¸ì¡° 합니다." + +#: commands/tablecmds.c:6304 +#, c-format +msgid "" +"constraints on unlogged tables may reference only permanent or unlogged " +"tables" +msgstr "" +"unlogged í…Œì´ë¸”ì˜ ì œì•½ ì¡°ê±´ì€ ì˜êµ¬ 저장용 í…Œì´ë¸” ë˜ëŠ” unlogged í…Œì´ë¸”ì„ ì°¸ì¡°" +"합니다." + +#: commands/tablecmds.c:6310 +#, c-format +msgid "constraints on temporary tables may reference only temporary tables" +msgstr "임시 í…Œì´ë¸”ì˜ ì œì•½ ì¡°ê±´ì€ ìž„ì‹œ í…Œì´ë¸”ì— ëŒ€í•´ì„œë§Œ 참조할 것입니다." + +#: commands/tablecmds.c:6314 +#, c-format +msgid "" +"constraints on temporary tables must involve temporary tables of this session" +msgstr "" +"임시 í…Œì´ë¸”ì˜ ì œì•½ ì¡°ê±´ì€ ì´ ì„¸ì…˜ìš© 임시 í…Œì´ë¸”ì— ëŒ€í•´ì„œë§Œ ì ìš© ë©ë‹ˆë‹¤." + +#: commands/tablecmds.c:6375 +#, c-format +msgid "number of referencing and referenced columns for foreign key disagree" +msgstr "참조키(foreign key) disagree를 위한 참조하는, ë˜ëŠ” 참조ë˜ëŠ” ì—´ 수" + +#: commands/tablecmds.c:6482 +#, c-format +msgid "foreign key constraint \"%s\" cannot be implemented" +msgstr "\"%s\" 참조키(foreign key) 제약 ì¡°ê±´ì€ êµ¬í˜„ë˜ì–´ì§ˆ 수 없습니다" + +#: commands/tablecmds.c:6485 +#, c-format +msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s." +msgstr "" +"\"%s\" ì—´ê³¼ \"%s\" ì—´ ì¸ë±ìŠ¤ëŠ” 함께 사용할 수 없는 ìžë£Œí˜•입니다: %s and %s." + +#: commands/tablecmds.c:6692 commands/tablecmds.c:6860 +#: commands/tablecmds.c:7763 commands/tablecmds.c:7819 +#, c-format +msgid "constraint \"%s\" of relation \"%s\" does not exist" +msgstr "\"%s\" 제약 ì¡°ê±´ì´ \"%s\" 릴레ì´ì…˜ì— 없습니다." + +#: commands/tablecmds.c:6698 +#, c-format +msgid "constraint \"%s\" of relation \"%s\" is not a foreign key constraint" +msgstr "\"%s\" 제약 ì¡°ê±´(해당 í…Œì´ë¸”: \"%s\")ì€ ì°¸ì¡°í‚¤ ì œì•½ì¡°ê±´ì´ ì•„ë‹™ë‹ˆë‹¤." + +#: commands/tablecmds.c:6867 +#, c-format +msgid "" +"constraint \"%s\" of relation \"%s\" is not a foreign key or check constraint" +msgstr "" +"\"%s\" 제약 ì¡°ê±´(해당 í…Œì´ë¸”: \"%s\")ì€ ì°¸ì¡°í‚¤ë„ ì²´í¬ ì œì•½ ì¡°ê±´ë„ ì•„ë‹™ë‹ˆë‹¤." + +#: commands/tablecmds.c:6935 +#, c-format +msgid "constraint must be validated on child tables too" +msgstr "하위 í…Œì´ë¸”ì—ë„ ì œì•½ ì¡°ê±´ì´ ìœ íš¨í•´ì•¼ 함" + +#: commands/tablecmds.c:7004 +#, c-format +msgid "column \"%s\" referenced in foreign key constraint does not exist" +msgstr "참조키(foreign key) 제약 ì¡°ê±´ì—서 참조하는 \"%s\" ì—´ì´ ì—†ìŒ" + +#: commands/tablecmds.c:7009 +#, c-format +msgid "cannot have more than %d keys in a foreign key" +msgstr "참조키(foreign key)ì—서 %d 키 개수보다 ë§Žì´ ê°€ì§ˆ 수 ì—†ìŒ" + +#: commands/tablecmds.c:7074 +#, c-format +msgid "cannot use a deferrable primary key for referenced table \"%s\"" +msgstr "참조ë˜ëŠ” \"%s\" í…Œì´ë¸”ì˜ ì§€ì—° 가능한 기본키를 사용할 수 ì—†ìŒ" + +#: commands/tablecmds.c:7091 +#, c-format +msgid "there is no primary key for referenced table \"%s\"" +msgstr "참조ë˜ëŠ” \"%s\" í…Œì´ë¸”ì—는 기본키(primary key)ê°€ 없습니다" + +#: commands/tablecmds.c:7156 +#, c-format +msgid "foreign key referenced-columns list must not contain duplicates" +msgstr "ì°¸ì¡°í‚¤ì˜ ì°¸ì¡° 칼럼 목ë¡ì— ì¹¼ëŸ¼ì´ ì¤‘ë³µë˜ë©´ 안ë©ë‹ˆë‹¤" + +#: commands/tablecmds.c:7250 +#, c-format +msgid "cannot use a deferrable unique constraint for referenced table \"%s\"" +msgstr "참조ë˜ëŠ” \"%s\" í…Œì´ë¸”ì˜ ì§€ì—° 가능한 ìœ ë‹ˆí¬ ì œì•½ ì¡°ê±´ì„ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: commands/tablecmds.c:7255 +#, c-format +msgid "" +"there is no unique constraint matching given keys for referenced table \"%s\"" +msgstr "" +"참조ë˜ëŠ” \"%s\" í…Œì´ë¸”ì„ ìœ„í•œ 주워진 키와 ì¼ì¹˜í•˜ëŠ” 고유 제약 ì¡°ê±´ì´ ì—†ìŠµë‹ˆë‹¤" + +#: commands/tablecmds.c:7418 +#, c-format +msgid "validating foreign key constraint \"%s\"" +msgstr "\"%s\" 참조키 제약 ì¡°ê±´ 검사 중" + +#: commands/tablecmds.c:7717 +#, c-format +msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" +msgstr "ìƒì†ëœ \"%s\" 제약 ì¡°ê±´(해당 í…Œì´ë¸”: \"%s\")ì„ ì‚­ì œí•  수 ì—†ìŒ" + +#: commands/tablecmds.c:7769 +#, c-format +msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" +msgstr "\"%s\" 제약 ì¡°ê±´(해당 í…Œì´ë¸”: \"%s\")ì´ ì—†ìŒ, 건너뜀" + +#: commands/tablecmds.c:7908 +#, c-format +msgid "cannot alter column type of typed table" +msgstr "typed í…Œì´ë¸”ì˜ ì¹¼ëŸ¼ ìžë£Œí˜•ì€ ë³€ê²½í•  수 ì—†ìŒ" + +#: commands/tablecmds.c:7931 +#, c-format +msgid "cannot alter inherited column \"%s\"" +msgstr "\"%s\" ì´ë¦„ì˜ ì—´ì€ ìƒì† ë°›ì€ ì—´ìž…ë‹ˆë‹¤, ì´ë¦„ì„ ë°”ê¿€ 수 없습니다" + +#: commands/tablecmds.c:7980 +#, c-format +msgid "" +"result of USING clause for column \"%s\" cannot be cast automatically to " +"type %s" +msgstr "" +"\"%s\" 칼럼ì—서 ì“°ì¸ USING ì ˆì˜ ê²°ê³¼ê°€ %s ìžë£Œí˜•으로 ìžë™ í˜•ë³€í™˜ì„ í•  수 ì—†ìŒ" + +#: commands/tablecmds.c:7983 +#, c-format +msgid "You might need to add an explicit cast." +msgstr "ëª…ì‹œì  í˜•ë³€í™˜ì„ í•´ì•¼í•  것 같습니다." + +#: commands/tablecmds.c:7987 +#, c-format +msgid "column \"%s\" cannot be cast automatically to type %s" +msgstr "\"%s\" ì¹¼ëŸ¼ì˜ ìžë£Œí˜•ì„ %s 형으로 형변환할 수 ì—†ìŒ" + +#. translator: USING is SQL, don't translate it +#: commands/tablecmds.c:7990 +#, c-format +msgid "You might need to specify \"USING %s::%s\"." +msgstr "\"USING %s::%s\" êµ¬ë¬¸ì„ ì¶”ê°€í•´ì•¼ í•  것 같습니다." + +#: commands/tablecmds.c:8089 +#, c-format +msgid "USING expression contains a whole-row table reference." +msgstr "USING 표현ì‹ì—서 ì „ì²´ 로우 í…Œì´ë¸” 참조를 í¬í•¨í•˜ê³  있습니다." + +#: commands/tablecmds.c:8100 +#, c-format +msgid "type of inherited column \"%s\" must be changed in child tables too" +msgstr "하위 í…Œì´ë¸”ì—ì„œë„ ìƒì†ëœ \"%s\" ì—´ì˜ í˜•ì‹ì„ 바꾸어야 함" + +#: commands/tablecmds.c:8187 +#, c-format +msgid "cannot alter type of column \"%s\" twice" +msgstr "\"%s\" ì—´ì€ ì‹œìŠ¤í…œ 열입니다. 그래서 ë³€ê²½ë  ìˆ˜ 없습니다" + +#: commands/tablecmds.c:8223 +#, c-format +msgid "default for column \"%s\" cannot be cast automatically to type %s" +msgstr "\"%s\" ì¹¼ëŸ¼ì˜ ê¸°ë³¸ ê°’ì„ %s 형으로 형변환할 수 ì—†ìŒ" + +#: commands/tablecmds.c:8349 +#, c-format +msgid "cannot alter type of a column used by a view or rule" +msgstr "ë·° ë˜ëŠ” 규칙ì—서 사용하는 ì—´ì˜ í˜•ì‹ì„ 변경할 수 ì—†ìŒ" + +#: commands/tablecmds.c:8350 commands/tablecmds.c:8369 +#: commands/tablecmds.c:8387 +#, c-format +msgid "%s depends on column \"%s\"" +msgstr "%s ì˜ì¡´ëŒ€ìƒ ì—´: \"%s\"" + +#: commands/tablecmds.c:8368 +#, c-format +msgid "cannot alter type of a column used in a trigger definition" +msgstr "트리거 ì •ì˜ì—서 사용하는 ì¹¼ëŸ¼ì˜ ìžë£Œí˜•ì„ ë³€ê²½í•  수 ì—†ìŒ" + +#: commands/tablecmds.c:8386 +#, c-format +msgid "cannot alter type of a column used in a policy definition" +msgstr "ì •ì±… ì •ì˜ì—서 사용하는 ì¹¼ëŸ¼ì˜ ìžë£Œí˜•ì„ ë³€ê²½í•  수 ì—†ìŒ" + +#: commands/tablecmds.c:9051 +#, c-format +msgid "cannot change owner of index \"%s\"" +msgstr "\"%s\" ì¸ë±ìŠ¤ì˜ ì†Œìœ ì£¼ë¥¼ 바꿀 수 ì—†ìŒ" + +#: commands/tablecmds.c:9053 +#, c-format +msgid "Change the ownership of the index's table, instead." +msgstr "ëŒ€ì‹ ì— ê·¸ ì¸ë±ìŠ¤ì˜ í•´ë‹¹ í…Œì´ë¸” 소유ìžì„ 변경하세요." + +#: commands/tablecmds.c:9069 +#, c-format +msgid "cannot change owner of sequence \"%s\"" +msgstr "\"%s\" ì‹œí€€ìŠ¤ì˜ ì†Œìœ ì£¼ë¥¼ 바꿀 수 ì—†ìŒ" + +#: commands/tablecmds.c:9071 commands/tablecmds.c:11543 +#, c-format +msgid "Sequence \"%s\" is linked to table \"%s\"." +msgstr "\"%s\" 시퀀스는 \"%s\" í…Œì´ë¸”ì— ì¢…ì†ë˜ì–´ 있습니다." + +#: commands/tablecmds.c:9083 commands/tablecmds.c:12190 +#, c-format +msgid "Use ALTER TYPE instead." +msgstr "대신 ALTER TYPEì„ ì‚¬ìš©í•˜ì‹­ì‹œì˜¤." + +#: commands/tablecmds.c:9092 +#, c-format +msgid "\"%s\" is not a table, view, sequence, or foreign table" +msgstr "\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”, ë·°, 시퀀스, 외부 í…Œì´ë¸” ê·¸ ì–´ëŠ ê²ƒë„ ì•„ë‹™ë‹ˆë‹¤" + +#: commands/tablecmds.c:9435 +#, c-format +msgid "cannot have multiple SET TABLESPACE subcommands" +msgstr "SET TABLESPACE êµ¬ë¬¸ì´ ì¤‘ë³µ 사용ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: commands/tablecmds.c:9508 +#, c-format +msgid "\"%s\" is not a table, view, materialized view, index, or TOAST table" +msgstr "" +"\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”, ë·°, êµ¬ì²´í™”ëœ ë·°, ì¸ë±ìФ, TOAST í…Œì´ë¸” ê·¸ ì–´ëŠ ê²ƒë„ ì•„ë‹™" +"니다." + +#: commands/tablecmds.c:9541 commands/view.c:498 +#, c-format +msgid "WITH CHECK OPTION is supported only on automatically updatable views" +msgstr "" +"WITH CHECK OPTION ì˜µì…˜ì€ ìžë™ 갱신 가능한 ë·°ì— ëŒ€í•´ì„œë§Œ 사용할 수 있습니다" + +#: commands/tablecmds.c:9687 +#, c-format +msgid "cannot move system relation \"%s\"" +msgstr "\"%s\" 시스템 릴레ì´ì…˜ìž…니다. ì´ë™í•  수 없습니다" + +#: commands/tablecmds.c:9703 +#, c-format +msgid "cannot move temporary tables of other sessions" +msgstr "다른 ì„¸ì…˜ì˜ ìž„ì‹œ í…Œì´ë¸”ë“¤ì€ ì´ë™í•  수 없습니다" + +#: commands/tablecmds.c:9840 +#, c-format +msgid "only tables, indexes, and materialized views exist in tablespaces" +msgstr "í…Œì´ë¸”스페ì´ìŠ¤ì— í…Œì´ë¸”ê³¼ ì¸ë±ìŠ¤ì™€ êµ¬ì²´í™”ëœ ë·°ë§Œ 있습니다." + +#: commands/tablecmds.c:9852 +#, c-format +msgid "cannot move relations in to or out of pg_global tablespace" +msgstr "" +"해당 ê°ì²´ë¥¼ pg_global í…Œì´ë¸”스페ì´ìŠ¤ë¡œ 옮기거나 ê·¸ 반대로 작업할 수 ì—†ìŒ" + +#: commands/tablecmds.c:9943 +#, c-format +msgid "aborting because lock on relation \"%s.%s\" is not available" +msgstr "\"%s.%s\" 릴레ì´ì…˜ì„ 잠글 수 없어 중지 중입니다" + +#: commands/tablecmds.c:9959 +#, c-format +msgid "no matching relations in tablespace \"%s\" found" +msgstr "ê²€ìƒ‰ì¡°ê±´ì— ì¼ì¹˜í•˜ëŠ” 릴레ì´ì…˜ì´ \"%s\" í…Œì´ë¸”스페ì´ìŠ¤ì— ì—†ìŒ" + +#: commands/tablecmds.c:10033 storage/buffer/bufmgr.c:915 +#, c-format +msgid "invalid page in block %u of relation %s" +msgstr "%u 블ë¡(해당 릴레ì´ì…˜: %s)ì— ìž˜ëª»ëœ íŽ˜ì´ì§€ê°€ 있ìŒ" + +#: commands/tablecmds.c:10115 +#, c-format +msgid "cannot change inheritance of typed table" +msgstr "typed í…Œì´ë¸”ì˜ ìƒì† 정보는 변경할 수 ì—†ìŒ" + +#: commands/tablecmds.c:10165 +#, c-format +msgid "cannot inherit to temporary relation of another session" +msgstr "다른 ì„¸ì…˜ì˜ ìž„ì‹œ í…Œì´ë¸”ì„ ìƒì†í•  수 ì—†ìŒ" + +#: commands/tablecmds.c:10219 +#, c-format +msgid "circular inheritance not allowed" +msgstr "순환 ë˜ëŠ” ìƒì†ì€ 허용하지 않습니다" + +#: commands/tablecmds.c:10220 +#, c-format +msgid "\"%s\" is already a child of \"%s\"." +msgstr "\"%s\" ê°ì²´ëŠ” ì´ë¯¸ \"%s\" ê°ì²´ë¡œë¶€í„° ìƒì†ë°›ì€ ìƒíƒœìž…니다." + +#: commands/tablecmds.c:10228 +#, c-format +msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs" +msgstr "" +"\"%s\" í…Œì´ë¸”ì´ OID ì—´ ì—†ì´ OID 있는 \"%s\" í…Œì´ë¸”ì—서 ìƒì† ë  ìˆ˜ 없습니다." + +#: commands/tablecmds.c:10369 +#, c-format +msgid "column \"%s\" in child table must be marked NOT NULL" +msgstr "ìžì‹ í…Œì´ë¸”ì˜ \"%s\" ì—´ì€ NOT NULL ì†ì„±ì´ 있어야합니다" + +#: commands/tablecmds.c:10385 commands/tablecmds.c:10418 +#, c-format +msgid "child table is missing column \"%s\"" +msgstr "ìžì‹ í…Œì´ë¸”ì—는 \"%s\" ì—´ì´ ì—†ìŠµë‹ˆë‹¤" + +#: commands/tablecmds.c:10501 +#, c-format +msgid "child table \"%s\" has different definition for check constraint \"%s\"" +msgstr "\"%s\" 하위 í…Œì´ë¸”ì— \"%s\" ì²´í¬ ì œì•½ ì¡°ê±´ì— ëŒ€í•œ 다른 ì •ì˜ê°€ 있ìŒ" + +#: commands/tablecmds.c:10509 +#, c-format +msgid "" +"constraint \"%s\" conflicts with non-inherited constraint on child table \"%s" +"\"" +msgstr "" +"\"%s\" 제약 ì¡°ê±´ì´ \"%s\" 하위 í…Œì´ë¸”ì— ìžˆëŠ” 비 ìƒì† 제약 ì¡°ê±´ê³¼ ì¶©ëŒí•©ë‹ˆë‹¤" + +#: commands/tablecmds.c:10520 +#, c-format +msgid "" +"constraint \"%s\" conflicts with NOT VALID constraint on child table \"%s\"" +msgstr "" +"\"%s\" 제약 ì¡°ê±´ì´ \"%s\" 하위 í…Œì´ë¸”ì— ìžˆëŠ” NOT VALID 제약 ì¡°ê±´ê³¼ ì¶©ëŒí•©ë‹ˆë‹¤" + +#: commands/tablecmds.c:10544 +#, c-format +msgid "child table is missing constraint \"%s\"" +msgstr "ìžì‹ í…Œì´ë¸”ì— \"%s\" 제약 ì¡°ê±´ì´ ì—†ìŠµë‹ˆë‹¤" + +#: commands/tablecmds.c:10628 +#, c-format +msgid "relation \"%s\" is not a parent of relation \"%s\"" +msgstr "\"%s\" 릴레ì´ì…˜ì€ \"%s\" 릴레ì´ì…˜ì˜ 부모가 아닙니다" + +#: commands/tablecmds.c:10862 +#, c-format +msgid "typed tables cannot inherit" +msgstr "typed í…Œì´ë¸”ì€ ìƒì†í•  수 ì—†ìŒ" + +#: commands/tablecmds.c:10893 +#, c-format +msgid "table is missing column \"%s\"" +msgstr "í…Œì´ë¸”ì—는 \"%s\" ì¹¼ëŸ¼ì´ ì—†ìŠµë‹ˆë‹¤" + +#: commands/tablecmds.c:10903 +#, c-format +msgid "table has column \"%s\" where type requires \"%s\"" +msgstr "\"%s\" ì¹¼ëŸ¼ì€ \"%s\" ìžë£Œí˜•입니다." + +#: commands/tablecmds.c:10912 +#, c-format +msgid "table \"%s\" has different type for column \"%s\"" +msgstr "\"%s\" í…Œì´ë¸”ì˜ \"%s\" 칼럼 ìžë£Œí˜• 틀립니다" + +#: commands/tablecmds.c:10925 +#, c-format +msgid "table has extra column \"%s\"" +msgstr "\"%s\" ì¹¼ëŸ¼ì€ í™•ìž¥í˜•ìž…ë‹ˆë‹¤" + +#: commands/tablecmds.c:10977 +#, c-format +msgid "\"%s\" is not a typed table" +msgstr "\"%s\" í…Œì´ë¸”ì€ typed í…Œì´ë¸”ì´ ì•„ë‹™ë‹ˆë‹¤" + +#: commands/tablecmds.c:11161 +#, c-format +msgid "cannot use non-unique index \"%s\" as replica identity" +msgstr "\"%s\" ì¸ë±ìŠ¤ëŠ” ìœ ë‹ˆí¬ ì¸ë±ìŠ¤ê°€ 아니여서, 복제 ì‹ë³„ìžë¡œ 사용할 수 ì—†ìŒ" + +#: commands/tablecmds.c:11167 +#, c-format +msgid "cannot use non-immediate index \"%s\" as replica identity" +msgstr "\"%s\" non-immediate ì¸ë±ìŠ¤ëŠ” 복제 ì‹ë³„ìžë¡œ 사용할 수 ì—†ìŒ" + +#: commands/tablecmds.c:11173 +#, c-format +msgid "cannot use expression index \"%s\" as replica identity" +msgstr "\"%s\" ì¸ë±ìŠ¤ëŠ” expression ì¸ë±ìŠ¤ì—¬ì„œ, 복제 ì‹ë³„ìžë¡œ 사용할 수 ì—†ìŒ" + +#: commands/tablecmds.c:11179 +#, c-format +msgid "cannot use partial index \"%s\" as replica identity" +msgstr "\"%s\" ì¸ë±ìŠ¤ê°€ 부분ì¸ë±ìŠ¤ì—¬ì„œ, 복제 ì‹ë³„ìžë¡œ 사용할 수 ì—†ìŒ" + +#: commands/tablecmds.c:11185 +#, c-format +msgid "cannot use invalid index \"%s\" as replica identity" +msgstr "" +"\"%s\" ì¸ë±ìŠ¤ëŠ” 사용할 수 없는 ì¸ë±ìŠ¤ì—¬ì„œ, 복제 ì‹ë³„ìžë¡œ 사용할 수 ì—†ìŒ" + +#: commands/tablecmds.c:11206 +#, c-format +msgid "" +"index \"%s\" cannot be used as replica identity because column %d is a " +"system column" +msgstr "" +"\"%s\" ì¸ë±ìŠ¤ëŠ” 복제 ì‹ë³„ìžë¡œ 사용할 수 ì—†ìŒ, %d 번째 ì¹¼ëŸ¼ì´ ì‹œìŠ¤í…œ 칼럼임" + +#: commands/tablecmds.c:11213 +#, c-format +msgid "" +"index \"%s\" cannot be used as replica identity because column \"%s\" is " +"nullable" +msgstr "" +"\"%s\" ì¸ë±ìŠ¤ëŠ” 복제 ì‹ë³„ìžë¡œ 사용할 수 ì—†ìŒ, \"%s\" ì¹¼ëŸ¼ì´ null ê°’ 사용가능 " +"ì†ì„±ìž„" + +#: commands/tablecmds.c:11416 +#, c-format +msgid "cannot change logged status of table \"%s\" because it is temporary" +msgstr "\"%s\" í…Œì´ë¸”ì€ ìž„ì‹œ í…Œì´ë¸”ì´ê¸°ì—, 통계 정보를 변경 í•  수 ì—†ìŒ" + +#: commands/tablecmds.c:11475 +#, c-format +msgid "" +"could not change table \"%s\" to logged because it references unlogged table " +"\"%s\"" +msgstr "" +"\"%s\" í…Œì´ë¸”ì´ \"%s\" unlogged í…Œì´ë¸”ì„ ì°¸ì¡°í•˜ê³  있어 logged ì†ì„±ìœ¼ë¡œ 바꿀 " +"수 ì—†ìŒ" + +#: commands/tablecmds.c:11485 +#, c-format +msgid "" +"could not change table \"%s\" to unlogged because it references logged table " +"\"%s\"" +msgstr "" +"\"%s\" í…Œì´ë¸”ì´ \"%s\" logged í…Œì´ë¸”ì„ ì°¸ì¡°í•˜ê³  있어 unlogged ì†ì„±ìœ¼ë¡œ 바꿀 " +"수 ì—†ìŒ" + +#: commands/tablecmds.c:11542 +#, c-format +msgid "cannot move an owned sequence into another schema" +msgstr "ì†Œìœ ëœ ì‹œí€€ìŠ¤ë¥¼ 다른 스키마로 ì´ë™í•  수 ì—†ìŒ" + +#: commands/tablecmds.c:11647 +#, c-format +msgid "relation \"%s\" already exists in schema \"%s\"" +msgstr "\"%s\" 릴레ì´ì…˜ì´ \"%s\" ìŠ¤í‚¤ë§ˆì— ì´ë¯¸ 있습니다" + +#: commands/tablecmds.c:12174 +#, c-format +msgid "\"%s\" is not a composite type" +msgstr "\"%s\" ê°ì²´ëŠ” 복합 ìžë£Œí˜•입니다" + +#: commands/tablecmds.c:12204 +#, c-format +msgid "" +"\"%s\" is not a table, view, materialized view, sequence, or foreign table" +msgstr "" +"\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”, ë·°, êµ¬ì²´í™”ëœ ë·°, 시퀀스, 외부 í…Œì´ë¸” ê·¸ ì–´ëŠ ê²ƒë„ ì•„ë‹™" +"니다" + +#: commands/tablespace.c:162 commands/tablespace.c:179 +#: commands/tablespace.c:190 commands/tablespace.c:198 +#: commands/tablespace.c:625 replication/slot.c:980 storage/file/copydir.c:47 +#, c-format +msgid "could not create directory \"%s\": %m" +msgstr "\"%s\" 디렉터리를 만들 수 ì—†ìŒ: %m" + +#: commands/tablespace.c:209 +#, c-format +msgid "could not stat directory \"%s\": %m" +msgstr "\"%s\" 디렉터리 ìƒíƒœë¥¼ 파악할 수 ì—†ìŒ: %m" + +#: commands/tablespace.c:218 +#, c-format +msgid "\"%s\" exists but is not a directory" +msgstr "\"%s\" 파ì¼ì´ 존재하지만 디렉터리가 아닙니다" + +#: commands/tablespace.c:249 +#, c-format +msgid "permission denied to create tablespace \"%s\"" +msgstr "\"%s\" í…Œì´ë¸”스페ì´ìŠ¤ë¥¼ 만들 ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤" + +#: commands/tablespace.c:251 +#, c-format +msgid "Must be superuser to create a tablespace." +msgstr "í…Œì´ë¸”스페ì´ìŠ¤ëŠ” 슈í¼ìœ ì €ë§Œ 만들 수 있습니다." + +#: commands/tablespace.c:267 +#, c-format +msgid "tablespace location cannot contain single quotes" +msgstr "í…Œì´ë¸”스페ì´ìФ 위치ì—는 ìž‘ì€ ë”°ì˜´í‘œë¥¼ 사용할 수 ì—†ìŒ" + +#: commands/tablespace.c:277 +#, c-format +msgid "tablespace location must be an absolute path" +msgstr "í…Œì´ë¸”스페ì´ìФ 경로는 절대경로여야합니다" + +#: commands/tablespace.c:288 +#, c-format +msgid "tablespace location \"%s\" is too long" +msgstr "í…Œì´ë¸”스페ì´ìФ 경로가 너무 ê¹ë‹ˆë‹¤: \"%s\"" + +#: commands/tablespace.c:295 +#, c-format +msgid "tablespace location should not be inside the data directory" +msgstr "í…Œì´ë¸”스페ì´ìФ 경로는 ë°ì´í„° 디렉토리 ì•ˆì— ìžˆìœ¼ë©´ 안ë©ë‹ˆë‹¤" + +#: commands/tablespace.c:304 commands/tablespace.c:952 +#, c-format +msgid "unacceptable tablespace name \"%s\"" +msgstr "\"%s\" í…Œì´ë¸”스페ì´ìФ ì´ë¦„ì€ ì ë‹¹ì¹˜ 않습니다" + +#: commands/tablespace.c:306 commands/tablespace.c:953 +#, c-format +msgid "The prefix \"pg_\" is reserved for system tablespaces." +msgstr "\"pg_\" 문ìžë¡œ 시작하는 í…Œì´ë¸”스페ì´ìŠ¤ëŠ” 시스템 í…Œì´ë¸”스페ì´ìŠ¤ìž…ë‹ˆë‹¤." + +#: commands/tablespace.c:316 commands/tablespace.c:965 +#, c-format +msgid "tablespace \"%s\" already exists" +msgstr "\"%s\" ì´ë¦„ì˜ í…Œì´ë¸”스페ì´ìŠ¤ëŠ” ì´ë¯¸ 있ìŒ" + +#: commands/tablespace.c:430 commands/tablespace.c:935 +#: commands/tablespace.c:1016 commands/tablespace.c:1085 +#: commands/tablespace.c:1218 commands/tablespace.c:1418 +#, c-format +msgid "tablespace \"%s\" does not exist" +msgstr "\"%s\" í…Œì´ë¸”스페ì´ìФ ì—†ìŒ" + +#: commands/tablespace.c:436 +#, c-format +msgid "tablespace \"%s\" does not exist, skipping" +msgstr "\"%s\" í…Œì´ë¸”스페ì´ìФ ì—†ìŒ, 건너 뜀" + +#: commands/tablespace.c:512 +#, c-format +msgid "tablespace \"%s\" is not empty" +msgstr "\"%s\" í…Œì´ë¸”스페ì´ìŠ¤ëŠ” 비어있지 않ìŒ" + +#: commands/tablespace.c:584 +#, c-format +msgid "directory \"%s\" does not exist" +msgstr "\"%s\" 디렉터리 ì—†ìŒ" + +#: commands/tablespace.c:585 +#, c-format +msgid "Create this directory for the tablespace before restarting the server." +msgstr "ì´ ì„œë²„ë¥¼ 재시작하기 ì „ì— ì´ í…Œì´ë¸”스페ì´ìФ ìš© 디렉터리를 만드세요." + +#: commands/tablespace.c:590 +#, c-format +msgid "could not set permissions on directory \"%s\": %m" +msgstr "\"%s\" 디렉터리 액세스 ê¶Œí•œì„ ì§€ì •í•  수 ì—†ìŒ: %m" + +#: commands/tablespace.c:620 +#, c-format +msgid "directory \"%s\" already in use as a tablespace" +msgstr "\"%s\" 디렉터리는 ì´ë¯¸ í…Œì´ë¸”스페ì´ìŠ¤ë¡œ 사용 중임" + +#: commands/tablespace.c:744 commands/tablespace.c:757 +#: commands/tablespace.c:793 commands/tablespace.c:885 +#, c-format +msgid "could not remove directory \"%s\": %m" +msgstr "\"%s\" 디렉터리를 삭제할 수 ì—†ìŒ: %m" + +#: commands/tablespace.c:806 commands/tablespace.c:894 +#, c-format +msgid "could not remove symbolic link \"%s\": %m" +msgstr "\"%s\" 심벌릭 ë§í¬ë¥¼ 삭제할 수 ì—†ìŒ: %m" + +#: commands/tablespace.c:816 commands/tablespace.c:903 +#, c-format +msgid "\"%s\" is not a directory or symbolic link" +msgstr "\"%s\" 디렉터리ë„, 심볼릭 ë§í¬ë„ 아님" + +#: commands/tablespace.c:1090 +#, c-format +msgid "Tablespace \"%s\" does not exist." +msgstr "\"%s\" í…Œì´ë¸”스페ì´ìФ ì—†ìŒ" + +#: commands/tablespace.c:1517 +#, c-format +msgid "directories for tablespace %u could not be removed" +msgstr "%u OID í…Œì´ë¸”스페ì´ìŠ¤ìš© 디렉터리는 ì‚­ì œë  ìˆ˜ ì—†ìŒ" + +#: commands/tablespace.c:1519 +#, c-format +msgid "You can remove the directories manually if necessary." +msgstr "필요하다면 OS 작업으로 ê·¸ 디레터리를 삭제하세요" + +#: commands/trigger.c:184 +#, c-format +msgid "\"%s\" is a table" +msgstr "\"%s\" ê°ì²´ëŠ” í…Œì´ë¸”입니다." + +#: commands/trigger.c:186 +#, c-format +msgid "Tables cannot have INSTEAD OF triggers." +msgstr "í…Œì´ë¸”ì— INSTEAD OF 트리거는 설정할 수 ì—†ìŒ" + +#: commands/trigger.c:197 commands/trigger.c:204 +#, c-format +msgid "\"%s\" is a view" +msgstr "\"%s\" ê°ì²´ëŠ” 뷰입니다." + +#: commands/trigger.c:199 +#, c-format +msgid "Views cannot have row-level BEFORE or AFTER triggers." +msgstr "ë·°ì— ë¡œìš° 단위 BEFORE, AFTER 트리거는 설정할 수 ì—†ìŒ" + +#: commands/trigger.c:206 +#, c-format +msgid "Views cannot have TRUNCATE triggers." +msgstr "ë·°ì— TRUNCATE 트리거는 설정할 수 ì—†ìŒ" + +#: commands/trigger.c:214 commands/trigger.c:221 commands/trigger.c:228 +#, c-format +msgid "\"%s\" is a foreign table" +msgstr "\"%s\" ê°ì²´ëŠ” 외부 í…Œì´ë¸”입니다." + +#: commands/trigger.c:216 +#, c-format +msgid "Foreign tables cannot have INSTEAD OF triggers." +msgstr "외부테ì´ë¸”ì— INSTEAD OF 트리거는 설정할 수 ì—†ìŒ" + +#: commands/trigger.c:223 +#, c-format +msgid "Foreign tables cannot have TRUNCATE triggers." +msgstr "외부 í…Œì´ë¸”ì—는 TRUNCATE 트리거를 사용할 수 ì—†ìŒ" + +#: commands/trigger.c:230 +#, c-format +msgid "Foreign tables cannot have constraint triggers." +msgstr "외부 í…Œì´ë¸”ì— ì œì•½ ì¡°ê±´ 트리거는 설정할 수 ì—†ìŒ" + +#: commands/trigger.c:293 +#, c-format +msgid "TRUNCATE FOR EACH ROW triggers are not supported" +msgstr "TRUNCATE FOR EACH ROW 트리거는 ì§€ì›ë˜ì§€ 않ìŒ" + +#: commands/trigger.c:301 +#, c-format +msgid "INSTEAD OF triggers must be FOR EACH ROW" +msgstr "INSTEAD OF 트리거는 FOR EACH ROW 옵션으로 설정해야 함" + +#: commands/trigger.c:305 +#, c-format +msgid "INSTEAD OF triggers cannot have WHEN conditions" +msgstr "INSTEAD OF 트리거는 WHEN ì¡°ê±´ì„ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: commands/trigger.c:309 +#, c-format +msgid "INSTEAD OF triggers cannot have column lists" +msgstr "INSTEAD OF 트리거는 칼럼 목ë¡ì„ 사용할 수 ì—†ìŒ" + +#: commands/trigger.c:366 commands/trigger.c:379 +#, c-format +msgid "statement trigger's WHEN condition cannot reference column values" +msgstr "íŠ¸ë¦¬ê±°ì˜ WHEN ì¡°ê±´ì—는 칼럼 ê°’ì„ ì°¸ì¡°í•  수는 ì—†ìŒ" + +#: commands/trigger.c:371 +#, c-format +msgid "INSERT trigger's WHEN condition cannot reference OLD values" +msgstr "INSERT 트리거ì—ì„œì˜ WHEN ì¡°ê±´ì—는 OLD ê°’ì„ ì°¸ì¡°í•  수 ì—†ìŒ" + +#: commands/trigger.c:384 +#, c-format +msgid "DELETE trigger's WHEN condition cannot reference NEW values" +msgstr "DELETE 트리거ì—ì„œì˜ WHEN ì¡°ê±´ì—는 NEW ê°’ì„ ì°¸ì¡°í•  수 ì—†ìŒ" + +#: commands/trigger.c:389 +#, c-format +msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns" +msgstr "WHEN ì¡°ê±´ì ˆì´ ìžˆëŠ” BEFORE 트리거는 NEW 시스템 ì¹¼ëŸ¼ì„ ì°¸ì¡°í•  수 ì—†ìŒ" + +#: commands/trigger.c:434 +#, c-format +msgid "changing return type of function %s from \"opaque\" to \"trigger\"" +msgstr "%s í•¨ìˆ˜ì˜ ë¦¬í„´ ìžë£Œí˜•ì„ \"opaque\"ì—서 \"trigger\"로 바꿉니다" + +#: commands/trigger.c:553 commands/trigger.c:1303 +#, c-format +msgid "trigger \"%s\" for relation \"%s\" already exists" +msgstr "\"%s\" ì´ë¦„ì˜ íŠ¸ë¦¬ê±°ê°€ \"%s\" í…Œì´ë¸”ì— ì´ë¯¸ 있습니다" + +#: commands/trigger.c:838 +msgid "Found referenced table's UPDATE trigger." +msgstr "ì°¸ì¡°ëœ í…Œì´ë¸”ì˜ UPDATE 트리거를 찾았습니다." + +#: commands/trigger.c:839 +msgid "Found referenced table's DELETE trigger." +msgstr "ì°¸ì¡°ëœ í…Œì´ë¸”ì˜ DELETE 트리거를 찾았습니다." + +#: commands/trigger.c:840 +msgid "Found referencing table's trigger." +msgstr "참조 í…Œì´ë¸”ì˜ íŠ¸ë¦¬ê±°ë¥¼ 찾았습니다." + +#: commands/trigger.c:949 commands/trigger.c:965 +#, c-format +msgid "ignoring incomplete trigger group for constraint \"%s\" %s" +msgstr "\"%s\" %s 제약 ì¡°ê±´ì— ëŒ€í•œ 불완전한 트리거 ê·¸ë£¹ì„ ë¬´ì‹œí•˜ëŠ” 중" + +#: commands/trigger.c:977 +#, c-format +msgid "converting trigger group into constraint \"%s\" %s" +msgstr "트리거 ê·¸ë£¹ì„ \"%s\" %s 제약 조건으로 변환하는 중" + +#: commands/trigger.c:1190 commands/trigger.c:1351 commands/trigger.c:1469 +#, c-format +msgid "trigger \"%s\" for table \"%s\" does not exist" +msgstr "\"%s\" 트리거는 \"%s\" í…Œì´ë¸”ì— ì—†ìŒ" + +#: commands/trigger.c:1434 +#, c-format +msgid "permission denied: \"%s\" is a system trigger" +msgstr "액세스 권한 ì—†ìŒ: \"%s\" ê°ì²´ëŠ” 시스템 트리거임" + +#: commands/trigger.c:1930 +#, c-format +msgid "trigger function %u returned null value" +msgstr "%u 트리거 함수가 null ê°’ì„ ë¦¬í„´í–ˆìŠµë‹ˆë‹¤" + +#: commands/trigger.c:1989 commands/trigger.c:2188 commands/trigger.c:2392 +#: commands/trigger.c:2664 +#, c-format +msgid "BEFORE STATEMENT trigger cannot return a value" +msgstr "BEFORE STATEMENT 트리거는 ë¦¬í„´ê°’ì´ ìžˆìœ¼ë©´ 안ë©ë‹ˆë‹¤" + +#: commands/trigger.c:2726 executor/nodeModifyTable.c:679 +#: executor/nodeModifyTable.c:972 +#, c-format +msgid "" +"tuple to be updated was already modified by an operation triggered by the " +"current command" +msgstr "" +"현재 명령으로 ì‹¤í–‰ëœ íŠ¸ë¦¬ê±° 작업으로 변경해야할 ìžë£Œê°€ ì´ë¯¸ 바뀌었습니다." + +#: commands/trigger.c:2727 executor/nodeModifyTable.c:680 +#: executor/nodeModifyTable.c:973 +#, c-format +msgid "" +"Consider using an AFTER trigger instead of a BEFORE trigger to propagate " +"changes to other rows." +msgstr "" +"다른 로우를 변경하는 ì¼ì„ BEFORE 트리거 ëŒ€ì‹ ì— AFTER 트리거 ì‚¬ìš©ì„ ê³ ë ¤í•´ ë³´" +"십시오" + +#: commands/trigger.c:2741 executor/execMain.c:2379 +#: executor/nodeLockRows.c:216 executor/nodeModifyTable.c:213 +#: executor/nodeModifyTable.c:692 executor/nodeModifyTable.c:985 +#: executor/nodeModifyTable.c:1151 +#, c-format +msgid "could not serialize access due to concurrent update" +msgstr "ë™ì‹œ ì—…ë°ì´íЏ ë•Œë¬¸ì— ìˆœì°¨ì  ì•¡ì„¸ìŠ¤ê°€ 불가능합니다" + +#: commands/trigger.c:4575 +#, c-format +msgid "constraint \"%s\" is not deferrable" +msgstr "\"%s\" 제약 ì¡°ê±´ì€ DEFERRABLE ì†ì„±ìœ¼ë¡œ 만들어지지 않았습니다" + +#: commands/trigger.c:4598 +#, c-format +msgid "constraint \"%s\" does not exist" +msgstr "\"%s\" ì´ë¦„ì˜ ì œì•½ ì¡°ê±´ì´ ì—†ìŒ" + +#: commands/tsearchcmds.c:115 commands/tsearchcmds.c:685 +#, c-format +msgid "function %s should return type %s" +msgstr "%s 함수는 %s ìžë£Œí˜•ì„ ë°˜í™˜í•´ì•¼ 함" + +#: commands/tsearchcmds.c:192 +#, c-format +msgid "must be superuser to create text search parsers" +msgstr "슈í¼ìœ ì €ë§Œ 전문 검색 파서를 만들 수 있ìŒ" + +#: commands/tsearchcmds.c:240 +#, c-format +msgid "text search parser parameter \"%s\" not recognized" +msgstr "\"%s\" 전문 검색 파서 매개 변수를 ì¸ì‹í•  수 ì—†ìŒ" + +#: commands/tsearchcmds.c:250 +#, c-format +msgid "text search parser start method is required" +msgstr "í…스트 검색 파서 start 메서드가 필요함" + +#: commands/tsearchcmds.c:255 +#, c-format +msgid "text search parser gettoken method is required" +msgstr "í…스트 검색 파서 gettoken 메서드가 필요함" + +#: commands/tsearchcmds.c:260 +#, c-format +msgid "text search parser end method is required" +msgstr "í…스트 검색 파서 end 메서드가 필요함" + +#: commands/tsearchcmds.c:265 +#, c-format +msgid "text search parser lextypes method is required" +msgstr "í…스트 검색 파서 lextypes 메서드가 필요함" + +#: commands/tsearchcmds.c:386 +#, c-format +msgid "text search template \"%s\" does not accept options" +msgstr "\"%s\" 전문 검색 í…œí”Œë¦¿ì´ ì˜µì…˜ì„ ìˆ˜ë½í•˜ì§€ 않ìŒ" + +#: commands/tsearchcmds.c:460 +#, c-format +msgid "text search template is required" +msgstr "전문 검색 í…œí”Œë¦¿ì´ í•„ìš”í•¨" + +#: commands/tsearchcmds.c:752 +#, c-format +msgid "must be superuser to create text search templates" +msgstr "슈í¼ìœ ì €ë§Œ 전문 검색 í…œí”Œë¦¿ì„ ë§Œë“¤ 수 있ìŒ" + +#: commands/tsearchcmds.c:789 +#, c-format +msgid "text search template parameter \"%s\" not recognized" +msgstr "\"%s\" 전문 검색 템플릿 매개 변수를 ì¸ì‹í•  수 ì—†ìŒ" + +#: commands/tsearchcmds.c:799 +#, c-format +msgid "text search template lexize method is required" +msgstr "전문 검색 템플릿 lexize 메서드가 필요함" + +#: commands/tsearchcmds.c:1008 +#, c-format +msgid "text search configuration parameter \"%s\" not recognized" +msgstr "\"%s\" 전문 검색 구성 매개 변수를 ì¸ì‹í•  수 ì—†ìŒ" + +#: commands/tsearchcmds.c:1015 +#, c-format +msgid "cannot specify both PARSER and COPY options" +msgstr "PARSER 옵션과 COPY ì˜µì…˜ì„ ëª¨ë‘ ì§€ì •í•  수 ì—†ìŒ" + +#: commands/tsearchcmds.c:1051 +#, c-format +msgid "text search parser is required" +msgstr "전문 검색 파서가 필요함" + +#: commands/tsearchcmds.c:1278 +#, c-format +msgid "token type \"%s\" does not exist" +msgstr "\"%s\" í† í° í˜•ì‹ì´ ì—†ìŒ" + +#: commands/tsearchcmds.c:1502 +#, c-format +msgid "mapping for token type \"%s\" does not exist" +msgstr "\"%s\" í† í° í˜•ì‹ì— 대한 ë§¤í•‘ì´ ì—†ìŒ" + +#: commands/tsearchcmds.c:1508 +#, c-format +msgid "mapping for token type \"%s\" does not exist, skipping" +msgstr "\"%s\" í† í° í˜•ì‹ì— 대한 ë§¤í•‘ì´ ì—†ìŒ, 건너뜀" + +#: commands/tsearchcmds.c:1663 commands/tsearchcmds.c:1774 +#, c-format +msgid "invalid parameter list format: \"%s\"" +msgstr "ìž˜ëª»ëœ ë§¤ê°œ 변수 ëª©ë¡ í˜•ì‹: \"%s\"" + +#: commands/typecmds.c:181 +#, c-format +msgid "must be superuser to create a base type" +msgstr "슈í¼ìœ ì €ë§Œ 기본 형ì‹ì„ 만들 수 있ìŒ" + +#: commands/typecmds.c:288 commands/typecmds.c:1421 +#, c-format +msgid "type attribute \"%s\" not recognized" +msgstr "ìž˜ëª»ëœ \"%s\" ì†ì„±ì˜ ìžë£Œí˜•" + +#: commands/typecmds.c:342 +#, c-format +msgid "invalid type category \"%s\": must be simple ASCII" +msgstr "\"%s\" í˜•ì‹ ë²”ì£¼ê°€ 잘못ë¨: 단순 ASCII여야 함" + +#: commands/typecmds.c:361 +#, c-format +msgid "array element type cannot be %s" +msgstr "ë°°ì—´ ìš”ì†Œì˜ ìžë£Œí˜•으로 %s ìžë£Œí˜•ì„ ì‚¬ìš©í•  수 없습니다" + +#: commands/typecmds.c:393 +#, c-format +msgid "alignment \"%s\" not recognized" +msgstr "ìž˜ëª»ëœ ALIGNMENT ê°’: \"%s\"" + +#: commands/typecmds.c:410 +#, c-format +msgid "storage \"%s\" not recognized" +msgstr "ìž˜ëª»ëœ STORAGE ê°’: \"%s\"" + +#: commands/typecmds.c:421 +#, c-format +msgid "type input function must be specified" +msgstr "ìžë£Œí˜• ìž…ë ¥ 함수를 지정하십시오" + +#: commands/typecmds.c:425 +#, c-format +msgid "type output function must be specified" +msgstr "ìžë£Œí˜• 출력 함수를 지정하십시오" + +#: commands/typecmds.c:430 +#, c-format +msgid "" +"type modifier output function is useless without a type modifier input " +"function" +msgstr "í˜•ì‹ í•œì •ìž ìž…ë ¥ 함수가 없으면 í˜•ì‹ í•œì •ìž ì¶œë ¥ 함수는 ì˜ë¯¸ê°€ ì—†ìŒ" + +#: commands/typecmds.c:453 commands/typecmds.c:470 +#, c-format +msgid "changing return type of function %s from %s to %s" +msgstr "%s í•¨ìˆ˜ì˜ ë°˜í™˜ ìžë£Œí˜•ì„ %sì—서 %s ìžë£Œí˜•으로 바꿉니다" + +#: commands/typecmds.c:460 +#, c-format +msgid "type input function %s must return type %s" +msgstr "ìžë£Œí˜• %s ìž…ë ¥ í•¨ìˆ˜ì˜ %s ìžë£Œí˜•ì„ ë°˜í™˜í•´ì•¼í•©ë‹ˆë‹¤" + +#: commands/typecmds.c:477 +#, c-format +msgid "type output function %s must return type %s" +msgstr "%s ìžë£Œí˜• 출력 함수는 %s ìžë£Œí˜•ì„ ë°˜í™˜í•´ì•¼í•©ë‹ˆë‹¤" + +#: commands/typecmds.c:486 +#, c-format +msgid "type receive function %s must return type %s" +msgstr "%s ìžë£Œí˜• receive 함수는 %s ìžë£Œí˜•ì„ ë°˜í™˜í•´ì•¼í•©ë‹ˆë‹¤" + +#: commands/typecmds.c:495 +#, c-format +msgid "type send function %s must return type %s" +msgstr "%s ìžë£Œí˜• 전송 함수는 %s ìžë£Œí˜•ì„ ë°˜í™˜í•´ì•¼í•©ë‹ˆë‹¤" + +#: commands/typecmds.c:560 +#, c-format +msgid "type input function %s should not be volatile" +msgstr "%s ìžë£Œí˜• ìž…ë ¥ 함수는 volatile íŠ¹ì„±ì´ ì—†ì–´ì•¼í•©ë‹ˆë‹¤" + +#: commands/typecmds.c:565 +#, c-format +msgid "type output function %s should not be volatile" +msgstr "%s ìžë£Œí˜• 출력 함수는 volatile íŠ¹ì„±ì´ ì—†ì–´ì•¼í•©ë‹ˆë‹¤" + +#: commands/typecmds.c:570 +#, c-format +msgid "type receive function %s should not be volatile" +msgstr "%s ìžë£Œí˜• 수신 함수는 volatile íŠ¹ì„±ì´ ì—†ì–´ì•¼í•©ë‹ˆë‹¤" + +#: commands/typecmds.c:575 +#, c-format +msgid "type send function %s should not be volatile" +msgstr "%s ìžë£Œí˜• 송신 함수는 volatile íŠ¹ì„±ì´ ì—†ì–´ì•¼í•©ë‹ˆë‹¤" + +#: commands/typecmds.c:580 +#, c-format +msgid "type modifier input function %s should not be volatile" +msgstr "%s ìžë£Œí˜• 형변환 ìž…ë ¥ 함수는 volatile íŠ¹ì„±ì´ ì—†ì–´ì•¼í•©ë‹ˆë‹¤" + +#: commands/typecmds.c:585 +#, c-format +msgid "type modifier output function %s should not be volatile" +msgstr "%s ìžë£Œí˜• 형변환 출력 함수는 volatile íŠ¹ì„±ì´ ì—†ì–´ì•¼í•©ë‹ˆë‹¤" + +#: commands/typecmds.c:807 +#, c-format +msgid "\"%s\" is not a valid base type for a domain" +msgstr "\"%s\" ìžë£Œí˜•ì€ ë„ë©”ì¸ì˜ 기반 ìžë£Œí˜•ì´ ì•„ë‹™ë‹ˆë‹¤" + +#: commands/typecmds.c:893 +#, c-format +msgid "multiple default expressions" +msgstr "default í‘œí˜„ì‹ ì—¬ëŸ¬ê°œ 있ìŒ" + +#: commands/typecmds.c:955 commands/typecmds.c:964 +#, c-format +msgid "conflicting NULL/NOT NULL constraints" +msgstr "NULL/NOT NULL ì¡°ê±´ì´ í•¨ê»˜ 있ìŒ" + +#: commands/typecmds.c:980 +#, c-format +msgid "check constraints for domains cannot be marked NO INHERIT" +msgstr "ë„ë©”ì¸ìš© ì²´í¬ ì œì•½ ì¡°ê±´ì—는 NO INHERIT ì˜µì…˜ì„ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: commands/typecmds.c:989 commands/typecmds.c:2522 +#, c-format +msgid "unique constraints not possible for domains" +msgstr "고유 제약 ì¡°ê±´ì€ ë„ë©”ì¸ ì •ì˜ì— 사용할 수 ì—†ìŒ" + +#: commands/typecmds.c:995 commands/typecmds.c:2528 +#, c-format +msgid "primary key constraints not possible for domains" +msgstr "기본키 제약 ì¡°ê±´ì„ ë„ë©”ì¸ ì •ì˜ì— 사용할 수 ì—†ìŒ" + +#: commands/typecmds.c:1001 commands/typecmds.c:2534 +#, c-format +msgid "exclusion constraints not possible for domains" +msgstr "exclusion 제약 ì¡°ê±´ì€ ë„ë©”ì¸ì—는 사용할 수 ì—†ìŒ" + +#: commands/typecmds.c:1007 commands/typecmds.c:2540 +#, c-format +msgid "foreign key constraints not possible for domains" +msgstr "참조키(foreign key) 제약 ì¡°ê±´ì€ ë„ë©”ì¸(domain) ì •ì˜ì— 사용할 수 ì—†ìŒ" + +#: commands/typecmds.c:1016 commands/typecmds.c:2549 +#, c-format +msgid "specifying constraint deferrability not supported for domains" +msgstr "ë„ë©”ì¸ì— 대해 제약 ì¡°ê±´ ì§€ì—°ì„ ì§€ì •í•  수 ì—†ìŒ" + +#: commands/typecmds.c:1291 utils/cache/typcache.c:1630 +#, c-format +msgid "%s is not an enum" +msgstr "%s ê°ì²´ëŠ” ë‚˜ì—´í˜•ì´ ì•„ë‹˜" + +#: commands/typecmds.c:1429 +#, c-format +msgid "type attribute \"subtype\" is required" +msgstr "\"subtype\" ì†ì„±ì´ 필요함" + +#: commands/typecmds.c:1434 +#, c-format +msgid "range subtype cannot be %s" +msgstr "range subtypeì€ %s 아니여야 함" + +#: commands/typecmds.c:1453 +#, c-format +msgid "range collation specified but subtype does not support collation" +msgstr "" +"range í˜•ì— ì •ë ¬ ê·œì¹™ì„ ì§€ì •í–ˆì§€ë§Œ, ì†Œì† ìžë£Œí˜•ì´ ê·¸ ì •ë ¬ ê·œì¹™ì„ ì§€ì›í•˜ì§€ 않습" +"니다" + +#: commands/typecmds.c:1687 +#, c-format +msgid "changing argument type of function %s from \"opaque\" to \"cstring\"" +msgstr "%s í•¨ìˆ˜ì˜ ì¸ìž ìžë£Œí˜•ì„ \"opaque\"ì—서 \"cstring\"으로 바꿉니다" + +#: commands/typecmds.c:1738 +#, c-format +msgid "changing argument type of function %s from \"opaque\" to %s" +msgstr "%s í•¨ìˆ˜ì˜ ì¸ìž ìžë£Œí˜•ì„ \"opaque\"ì—서 %s ìžë£Œí˜•으로 바꿉니다" + +#: commands/typecmds.c:1837 +#, c-format +msgid "typmod_in function %s must return type %s" +msgstr "%s typmod_in 함수는 %s ìžë£Œí˜•ì„ ë°˜í™˜í•´ì•¼ 함" + +#: commands/typecmds.c:1864 +#, c-format +msgid "typmod_out function %s must return type %s" +msgstr "%s typmod_out 함수는 %s ìžë£Œí˜•ì„ ë°˜í™˜í•´ì•¼ 함" + +#: commands/typecmds.c:1891 +#, c-format +msgid "type analyze function %s must return type %s" +msgstr "%s ìžë£Œí˜• ë¶„ì„ í•¨ìˆ˜ëŠ” %s ìžë£Œí˜•ì„ ë°˜í™˜í•´ì•¼ 함" + +#: commands/typecmds.c:1937 +#, c-format +msgid "" +"You must specify an operator class for the range type or define a default " +"operator class for the subtype." +msgstr "" +"subtypeì„ ìœ„í•œ 기본 ì—°ì‚°ìž í´ëž˜ìŠ¤ë‚˜ range ìžë£Œí˜•ì„ ìœ„í•œ í•˜ë‚˜ì˜ ì—°ì‚°ìž í´ëž˜ìФ" +"를 지정해야 합니다" + +#: commands/typecmds.c:1968 +#, c-format +msgid "range canonical function %s must return range type" +msgstr "%s 범위 기준 함수는 range ìžë£Œí˜•ì„ ë°˜í™˜í•´ì•¼í•©ë‹ˆë‹¤" + +#: commands/typecmds.c:1974 +#, c-format +msgid "range canonical function %s must be immutable" +msgstr "%s 범위 기준 함수는 immutable ì†ì„±ì´ì–´ì•¼ 합니다" + +#: commands/typecmds.c:2010 +#, c-format +msgid "range subtype diff function %s must return type %s" +msgstr "%s 범위 하위 ìžë£Œ ë¹„êµ í•¨ìˆ˜ëŠ” %s ìžë£Œí˜•ì„ ë°˜í™˜í•´ì•¼í•©ë‹ˆë‹¤" + +#: commands/typecmds.c:2017 +#, c-format +msgid "range subtype diff function %s must be immutable" +msgstr "%s 범위 하위 ìžë£Œ ë¹„êµ í•¨ìˆ˜ëŠ” immutable ì†ì„±ì´ì–´ì•¼ 합니다" + +#: commands/typecmds.c:2044 +#, c-format +msgid "pg_type array OID value not set when in binary upgrade mode" +msgstr "ì´ì§„ 업그레ì´ë“œ 작업 때 pg_type ë°°ì—´ OID ê°’ì´ ì§€ì •ë˜ì§€ 않았습니다" + +#: commands/typecmds.c:2348 +#, c-format +msgid "column \"%s\" of table \"%s\" contains null values" +msgstr "\"%s\" ì—´(해당 í…Œì´ë¸” \"%s\")ì˜ ìžë£Œ ê°€ìš´ë° null ê°’ì´ ìžˆìŠµë‹ˆë‹¤" + +#: commands/typecmds.c:2463 commands/typecmds.c:2646 +#, c-format +msgid "constraint \"%s\" of domain \"%s\" does not exist" +msgstr "\"%s\" 제약 ì¡°ê±´ \"%s\" ë„ë©”ì¸ì— í¬í•¨ë˜ì–´ 있지 않습니다." + +#: commands/typecmds.c:2467 +#, c-format +msgid "constraint \"%s\" of domain \"%s\" does not exist, skipping" +msgstr "\"%s\" 제약 ì¡°ê±´ \"%s\" ë„ë©”ì¸ì— í¬í•¨ë˜ì–´ 있지 않ìŒ, 건너뜀" + +#: commands/typecmds.c:2652 +#, c-format +msgid "constraint \"%s\" of domain \"%s\" is not a check constraint" +msgstr "\"%s\" 제약 ì¡°ê±´(해당 ë„ë©”ì¸: \"%s\")ì€ check ì œì•½ì¡°ê±´ì´ ì•„ë‹˜" + +#: commands/typecmds.c:2758 +#, c-format +msgid "" +"column \"%s\" of table \"%s\" contains values that violate the new constraint" +msgstr "" +"\"%s\" ì—´(해당 í…Œì´ë¸” \"%s\")ì˜ ìžë£Œ 중ì—, 새 제약 ì¡°ê±´ì„ ìœ„ë°˜í•˜ëŠ” ìžë£Œê°€ 있" +"습니다" + +#: commands/typecmds.c:2971 commands/typecmds.c:3228 commands/typecmds.c:3417 +#, c-format +msgid "%s is not a domain" +msgstr "\"%s\" ì´ë¦„ì˜ ê°ì²´ëŠ” ë„ë©”ì¸ì´ 아닙니다" + +#: commands/typecmds.c:3005 +#, c-format +msgid "constraint \"%s\" for domain \"%s\" already exists" +msgstr "\"%s\" 제약 ì¡°ê±´ì´ \"%s\" ë„ë©”ì¸ì— ì´ë¯¸ 지정ë˜ì–´ 있습니다" + +#: commands/typecmds.c:3055 +#, c-format +msgid "cannot use table references in domain check constraint" +msgstr "ë„ë©”ì¸ ìš© ì²´í¬ ì œì•½ ì¡°ê±´ì—서는 í…Œì´ë¸” 참조를 사용할 수 없습니다" + +#: commands/typecmds.c:3158 commands/typecmds.c:3240 commands/typecmds.c:3534 +#, c-format +msgid "%s is a table's row type" +msgstr "%s ìžë£Œí˜•ì€ í…Œì´ë¸”ì˜ í–‰ ìžë£Œí˜•(row type)입니다" + +#: commands/typecmds.c:3160 commands/typecmds.c:3242 commands/typecmds.c:3536 +#, c-format +msgid "Use ALTER TABLE instead." +msgstr "대신 ALTER TABLEì„ ì‚¬ìš©í•˜ì‹­ì‹œì˜¤." + +#: commands/typecmds.c:3167 commands/typecmds.c:3249 commands/typecmds.c:3449 +#, c-format +msgid "cannot alter array type %s" +msgstr "%s ë°°ì—´ 형ì‹ì„ 변경할 수 ì—†ìŒ" + +#: commands/typecmds.c:3169 commands/typecmds.c:3251 commands/typecmds.c:3451 +#, c-format +msgid "You can alter type %s, which will alter the array type as well." +msgstr "%s 형ì‹ì„ 변경할 수 있으며, ì´ë ‡ê²Œ 하면 ë°°ì—´ 형ì‹ë„ 변경ë©ë‹ˆë‹¤." + +#: commands/typecmds.c:3519 +#, c-format +msgid "type \"%s\" already exists in schema \"%s\"" +msgstr "%s ìžë£Œí˜•ì´ ì´ë¯¸ \"%s\" 스키마 ì•ˆì— ìžˆìŠµë‹ˆë‹¤" + +#: commands/user.c:149 +#, c-format +msgid "SYSID can no longer be specified" +msgstr "SYSID는 ë” ì´ìƒ 지정할 수 ì—†ìŒ" + +#: commands/user.c:291 +#, c-format +msgid "must be superuser to create superusers" +msgstr "새 슈í¼ìœ ì €ë¥¼ 만드려면 슈í¼ìœ ì ¸ì—¬ì•¼ë§Œ 합니다" + +#: commands/user.c:298 +#, c-format +msgid "must be superuser to create replication users" +msgstr "새 복제작업용 사용ìžë¥¼ 만드려면 슈í¼ìœ ì €ì—¬ì•¼ë§Œ 합니다" + +#: commands/user.c:305 commands/user.c:693 +#, c-format +msgid "must be superuser to change bypassrls attribute" +msgstr "슈í¼ìœ ì €ë§Œ bypassrls ì†ì„±ì„ 바꿀 수 있ìŒ" + +#: commands/user.c:312 +#, c-format +msgid "permission denied to create role" +msgstr "롤 만들 권한 ì—†ìŒ" + +#: commands/user.c:322 commands/user.c:1176 commands/user.c:1183 +#: utils/adt/acl.c:5279 utils/adt/acl.c:5285 gram.y:13619 gram.y:13654 +#, c-format +msgid "role name \"%s\" is reserved" +msgstr "\"%s\" 롤 ì´ë¦„ì€ ë‚´ë¶€ì ìœ¼ë¡œ 사용ë˜ê³  있습니다" + +#: commands/user.c:324 commands/user.c:1178 commands/user.c:1185 +#, c-format +msgid "Role names starting with \"pg_\" are reserved." +msgstr "\"pg_\"로 시작하는 롤 ì´ë¦„ì€ ì‚¬ìš©í•  수 없습니다." + +#: commands/user.c:336 commands/user.c:1191 +#, c-format +msgid "role \"%s\" already exists" +msgstr "\"%s\" 롤 ì´ë¦„ì´ ì´ë¯¸ 있습니다" + +#: commands/user.c:414 +#, c-format +msgid "pg_authid OID value not set when in binary upgrade mode" +msgstr "ì´ì§„ 업그레ì´ë“œ 작업 때 pg_authid OID ê°’ì´ ì§€ì •ë˜ì§€ 않았습니다" + +#: commands/user.c:679 commands/user.c:896 commands/user.c:1432 +#: commands/user.c:1578 +#, c-format +msgid "must be superuser to alter superusers" +msgstr "슈í¼ìœ ì €ì˜ ì†ì„±ì„ 변경하련 슈í¼ìœ ì ¸ì—¬ì•¼ë§Œ 합니다" + +#: commands/user.c:686 +#, c-format +msgid "must be superuser to alter replication users" +msgstr "복제작업용 사용ìžì˜ ì†ì„±ì„ 변경하련 슈í¼ìœ ì ¸ì—¬ì•¼ë§Œ 합니다" + +#: commands/user.c:709 commands/user.c:904 +#, c-format +msgid "permission denied" +msgstr "권한 ì—†ìŒ" + +#: commands/user.c:934 +#, c-format +msgid "must be superuser to alter settings globally" +msgstr "슈í¼ìœ ì €ë§Œ ì „ì—­ 환경 ì„¤ì •ì„ ë°”ê¿€ 수 있습니다." + +#: commands/user.c:956 +#, c-format +msgid "permission denied to drop role" +msgstr "ë¡¤ì„ ì‚­ì œí•  ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤" + +#: commands/user.c:980 +#, c-format +msgid "cannot use special role specifier in DROP ROLE" +msgstr "DROP ROLE 명령으로 삭제할 수 없는 특별한 롤입니다" + +#: commands/user.c:990 commands/user.c:1147 commands/variable.c:825 +#: commands/variable.c:897 utils/adt/acl.c:5121 utils/adt/acl.c:5173 +#: utils/adt/acl.c:5206 utils/adt/acl.c:5224 utils/init/miscinit.c:502 +#, c-format +msgid "role \"%s\" does not exist" +msgstr "\"%s\" 롤(role) ì—†ìŒ" + +#: commands/user.c:995 +#, c-format +msgid "role \"%s\" does not exist, skipping" +msgstr "\"%s\" 룰(rule) ì—†ìŒ, 건너 뜀" + +#: commands/user.c:1007 commands/user.c:1011 +#, c-format +msgid "current user cannot be dropped" +msgstr "현재 사용ìžëŠ” ì‚­ì œ ë  ìˆ˜ 없습니다" + +#: commands/user.c:1015 +#, c-format +msgid "session user cannot be dropped" +msgstr "세션 사용ìžëŠ” ì‚­ì œ ë  ìˆ˜ 없습니다" + +#: commands/user.c:1026 +#, c-format +msgid "must be superuser to drop superusers" +msgstr "superuser를 사용ìžë¥¼ 삭제하려면 superuser여야만 합니다" + +#: commands/user.c:1042 +#, c-format +msgid "role \"%s\" cannot be dropped because some objects depend on it" +msgstr "기타 다른 ê°ì²´ë“¤ì´ ì´ ë¡¤ì— ì˜ì¡´í•˜ê³  있어, \"%s\" ë¡¤ì„ ì‚­ì œí•  수 ì—†ìŒ" + +#: commands/user.c:1163 +#, c-format +msgid "session user cannot be renamed" +msgstr "세션 사용ìžì˜ ì´ë¦„ì€ ë°”ê¿€ 수 없습니다" + +#: commands/user.c:1167 +#, c-format +msgid "current user cannot be renamed" +msgstr "현재 사용ìžì˜ ì´ë¦„ì€ ë°”ê¿€ 수 없습니다" + +#: commands/user.c:1201 +#, c-format +msgid "must be superuser to rename superusers" +msgstr "superuserì˜ ì´ë¦„ì„ ë°”ê¾¸ë ¤ë©´ superuser여야 합니다" + +#: commands/user.c:1208 +#, c-format +msgid "permission denied to rename role" +msgstr "롤 ì´ë¦„ 바꾸기 권한 ì—†ìŒ" + +#: commands/user.c:1229 +#, c-format +msgid "MD5 password cleared because of role rename" +msgstr "롤 ì´ë¦„ì´ ë³€ê²½ ë˜ì–´ MD5 암호를 지웠습니다" + +#: commands/user.c:1291 +#, c-format +msgid "column names cannot be included in GRANT/REVOKE ROLE" +msgstr "GRANT/REVOKE ROLEì— ì—´ ì´ë¦„ì„ í¬í•¨í•  수 ì—†ìŒ" + +#: commands/user.c:1329 +#, c-format +msgid "permission denied to drop objects" +msgstr "ê°ì²´ë¥¼ 삭제할 ê¶Œí•œì´ ì—†ìŒ" + +#: commands/user.c:1356 commands/user.c:1365 +#, c-format +msgid "permission denied to reassign objects" +msgstr "ê°ì²´ ê¶Œí•œì„ ìž¬ 지정할 ê¶Œí•œì´ ì—†ìŒ" + +#: commands/user.c:1440 commands/user.c:1586 +#, c-format +msgid "must have admin option on role \"%s\"" +msgstr "\"%s\" ì—­í• ì— admin ì˜µì…˜ì´ ìžˆì–´ì•¼ 함" + +#: commands/user.c:1457 +#, c-format +msgid "must be superuser to set grantor" +msgstr "grantor(?)를 지정하려면 슈í¼ìœ ì ¸ì—¬ì•¼í•©ë‹ˆë‹¤" + +#: commands/user.c:1482 +#, c-format +msgid "role \"%s\" is a member of role \"%s\"" +msgstr "\"%s\" ë¡¤ì€ \"%s\" ë¡¤ì˜ êµ¬ì„±ì›ìž…니다" + +#: commands/user.c:1497 +#, c-format +msgid "role \"%s\" is already a member of role \"%s\"" +msgstr "role \"%s\" is already a member of role \"%s\"" + +#: commands/user.c:1608 +#, c-format +msgid "role \"%s\" is not a member of role \"%s\"" +msgstr "\"%s\" ë¡¤ì€ \"%s\"ë¡¤ì˜ êµ¬ì„±ì›ì´ 아닙니다" + +#: commands/vacuum.c:185 +#, c-format +msgid "%s cannot be executed from VACUUM or ANALYZE" +msgstr "%s ëª…ë ¹ì€ VACUUM, ANALYZE 명령ì—서 실행 ë  ìˆ˜ ì—†ìŒ" + +#: commands/vacuum.c:195 +#, c-format +msgid "VACUUM option DISABLE_PAGE_SKIPPING cannot be used with FULL" +msgstr "" +"VACUUM 명령ì—서 DISABLE_PAGE_SKIPPING 옵션과 FULL ì˜µì…˜ì„ í•¨ê»˜ 사용할 수 없습" +"니다." + +# # search5 부분 +#: commands/vacuum.c:535 +#, c-format +msgid "oldest xmin is far in the past" +msgstr "가장 ì˜¤ëž˜ëœ xminì´ ë„ˆë¬´ 옛날 것입니다." + +#: commands/vacuum.c:536 +#, c-format +msgid "Close open transactions soon to avoid wraparound problems." +msgstr "" +"트랜잭션ID 최대값 초과로 ìžë£Œê°€ ê²¹ì³ì§€ëŠ” 문제를 피하기 위해서는 지금 즉시 ì—´" +"ë ¤ 있는 모든 íŠ¸ëžœìž­ì…˜ì„ ë‹«ìœ¼ì‹­ì‹œì˜¤." + +# # search5 부분 +#: commands/vacuum.c:575 +#, c-format +msgid "oldest multixact is far in the past" +msgstr "가장 ì˜¤ëž˜ëœ multixact ê°’ì´ ë„ˆë¬´ 옛날 것입니다." + +#: commands/vacuum.c:576 +#, c-format +msgid "" +"Close open transactions with multixacts soon to avoid wraparound problems." +msgstr "" +"멀티 트랜잭션 ID 겹침 사고를 막기 위해 빨리 열린 멀티 íŠ¸ëžœìž­ì…˜ë“¤ì„ ë‹«ìœ¼ì‹­ì‹œ" +"오." + +#: commands/vacuum.c:1146 +#, c-format +msgid "some databases have not been vacuumed in over 2 billion transactions" +msgstr "" +"몇몇 ë°ì´í„°ë² ì´ìŠ¤ê°€ 20ì–µ ì´ìƒì˜ íŠ¸ëžœìž­ì…˜ì„ ì²˜ë¦¬í–ˆìŒì—ë„ ë¶ˆêµ¬í•˜ê³  청소가ë˜ì§€ " +"않았습니다" + +#: commands/vacuum.c:1147 +#, c-format +msgid "You might have already suffered transaction-wraparound data loss." +msgstr "ì´ë¯¸ 트래잭션 ID 겹침 현ìƒìœ¼ë¡œ ìžë£Œ ì†ì‹¤ì´ ë°œìƒí–ˆì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤." + +#: commands/vacuum.c:1268 +#, c-format +msgid "skipping vacuum of \"%s\" --- lock not available" +msgstr "\"%s\" ê°ì²´ vacuum 건너뜀 --- 사용 가능한 ìž ê¸ˆì´ ì—†ìŒ" + +#: commands/vacuum.c:1294 +#, c-format +msgid "skipping \"%s\" --- only superuser can vacuum it" +msgstr "\"%s\" 건너뜀 --- 슈í¼ìœ ì €ë§Œ 청소할 수 있ìŒ" + +#: commands/vacuum.c:1298 +#, c-format +msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" +msgstr "\"%s\" 건너뜀 --- 슈í¼ìœ ì € ë˜ëŠ” ë°ì´í„°ë² ì´ìФ 소유주만 청소할 수 있ìŒ" + +#: commands/vacuum.c:1302 +#, c-format +msgid "skipping \"%s\" --- only table or database owner can vacuum it" +msgstr "\"%s\" 건너뜀 --- ì´ í…Œì´ë¸”ì´ë‚˜ ë°ì´í„°ë² ì´ìŠ¤ì˜ ì†Œìœ ì£¼ë§Œ 청소할 수 있ìŒ" + +#: commands/vacuum.c:1320 +#, c-format +msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables" +msgstr "" +"\"%s\" 건너뜀 --- í…Œì´ë¸”ì´ ì•„ë‹Œ 것 ë˜ëŠ” 특별 시스템 í…Œì´ë¸” ë“±ì€ ì²­ì†Œí•  수 ì—†" +"ìŒ" + +#: commands/vacuumlazy.c:366 +#, c-format +msgid "automatic vacuum of table \"%s.%s.%s\": index scans: %d\n" +msgstr "\"%s.%s.%s\" í…Œì´ë¸” ìžë™ 청소: ì¸ë±ìФ íƒìƒ‰: %d\n" + +#: commands/vacuumlazy.c:371 +#, c-format +msgid "" +"pages: %u removed, %u remain, %u skipped due to pins, %u skipped frozen\n" +msgstr "페ì´ì§€: %u ì‚­ì œë¨, %u 남ìŒ, %u í•€ë‹ìœ¼ë¡œ 건너뜀, %u ë™ê²°ë˜ì–´ 건너뜀\n" + +#: commands/vacuumlazy.c:377 +#, c-format +msgid "" +"tuples: %.0f removed, %.0f remain, %.0f are dead but not yet removable\n" +msgstr "튜플: %.0f ì‚­ì œë¨, %.0f 남ìŒ, %.0f 삭제할 수 없는 ì£½ì€ íŠœí”Œ\n" + +#: commands/vacuumlazy.c:382 +#, c-format +msgid "buffer usage: %d hits, %d misses, %d dirtied\n" +msgstr "ë²„í¼ ì‚¬ìš©ëŸ‰: %d 조회, %d 놓침, %d 변경ë¨\n" + +#: commands/vacuumlazy.c:386 +#, c-format +msgid "avg read rate: %.3f MB/s, avg write rate: %.3f MB/s\n" +msgstr "í‰ê·  ì½ê¸° ì†ë„: %.3f MB/s, í‰ê·  쓰기 ì†ë„: %.3f MB/s\n" + +#: commands/vacuumlazy.c:388 +#, c-format +msgid "system usage: %s" +msgstr "시스템 사용량: %s" + +#: commands/vacuumlazy.c:846 +#, c-format +msgid "relation \"%s\" page %u is uninitialized --- fixing" +msgstr "\"%s\" 릴레ì´ì…˜ %u 페ì´ì§€ëŠ” 초기화ë˜ì§€ ì•Šì•˜ìŒ --- 수정함" + +#: commands/vacuumlazy.c:1316 +#, c-format +msgid "\"%s\": removed %.0f row versions in %u pages" +msgstr "\"%s\": %.0fê°œì˜ í–‰ ë²„ì „ì„ %uê°œ 페ì´ì§€ì—서 삭제했습니다." + +#: commands/vacuumlazy.c:1326 +#, c-format +msgid "%.0f dead row versions cannot be removed yet.\n" +msgstr "%.0fê°œì˜ ì£½ì€ ë¡œìš° ë²„ì „ì„ ì•„ì§ ì§€ìš¸ 수 없습니다.\n" + +#: commands/vacuumlazy.c:1328 +#, c-format +msgid "There were %.0f unused item pointers.\n" +msgstr "%.0fê°œì˜ ì‚¬ìš©ë˜ì§€ ì•Šì€ ì•„ì´í…œ í¬ì¸í„°ê°€ 있습니다.\n" + +#: commands/vacuumlazy.c:1330 +#, c-format +msgid "Skipped %u page due to buffer pins.\n" +msgid_plural "Skipped %u pages due to buffer pins.\n" +msgstr[0] "%u 페ì´ì§€ë¥¼ ë²„í¼ í•€ë‹ìœ¼ë¡œ 건너 뛰었습니다.\n" + +#: commands/vacuumlazy.c:1334 +#, c-format +msgid "%u page is entirely empty.\n" +msgid_plural "%u pages are entirely empty.\n" +msgstr[0] "" + +#: commands/vacuumlazy.c:1342 +#, c-format +msgid "" +"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u " +"pages" +msgstr "" +"\"%s\": 지울 수 있는 ìžë£Œ %.0fê°œ, 지울 수 없는 ìžë£Œ %.0f개를 %u/%uê°œ 페ì´ì§€ì—" +"서 찾았ìŒ" + +#: commands/vacuumlazy.c:1411 +#, c-format +msgid "\"%s\": removed %d row versions in %d pages" +msgstr "\"%s\": %d ê°œ ìžë£Œë¥¼ %d 페ì´ì§€ì—서 삭제했ìŒ" + +#: commands/vacuumlazy.c:1600 +#, c-format +msgid "scanned index \"%s\" to remove %d row versions" +msgstr "\"%s\" ì¸ë±ìŠ¤ë¥¼ 스캔해서 %dê°œì˜ í–‰ ë²„ì „ë“¤ì„ ì§€ì› ìŠµë‹ˆë‹¤" + +#: commands/vacuumlazy.c:1646 +#, c-format +msgid "index \"%s\" now contains %.0f row versions in %u pages" +msgstr "\"%s\" ì¸ë±ìŠ¤ëŠ” %.0f í–‰ ë²„ì „ì„ %u 페ì´ì§€ì—서 í¬í•¨í•˜ê³  있습니다." + +#: commands/vacuumlazy.c:1650 +#, c-format +msgid "" +"%.0f index row versions were removed.\n" +"%u index pages have been deleted, %u are currently reusable.\n" +"%s." +msgstr "" +"%.0fê°œì˜ ì¸ë±ìФ í–‰ ë²„ì „ì„ ì‚­ì œí–ˆìŠµë‹ˆë‹¤.\n" +"%uê°œ ì¸ë±ìФ 페ì´ì§€ë¥¼ 삭제해서, %uê°œ 페ì´ì§€ë¥¼ 다시 사용합니다.\n" +"%s." + +#: commands/vacuumlazy.c:1745 +#, c-format +msgid "\"%s\": stopping truncate due to conflicting lock request" +msgstr "\"%s\": 잠금 요청 ì¶©ëŒë¡œ ìžë£Œ 비우기 ìž‘ì—…ì„ ì¤‘ì§€í•©ë‹ˆë‹¤" + +#: commands/vacuumlazy.c:1810 +#, c-format +msgid "\"%s\": truncated %u to %u pages" +msgstr "\"%s\": %u ì—서 %u 페ì´ì§€ë¡œ 정지했ìŒ" + +#: commands/vacuumlazy.c:1866 +#, c-format +msgid "\"%s\": suspending truncate due to conflicting lock request" +msgstr "\"%s\": 잠금 요청 ì¶©ëŒë¡œ ìžë£Œ 비우기 ìž‘ì—…ì„ ì§€ì—°í•©ë‹ˆë‹¤" + +#: commands/variable.c:164 utils/misc/guc.c:9899 +#, c-format +msgid "Unrecognized key word: \"%s\"." +msgstr "알 수 없는 키워드: \"%s\"" + +#: commands/variable.c:176 +#, c-format +msgid "Conflicting \"datestyle\" specifications." +msgstr "\"datestyle\" ì§€ì •ì´ ì¶©ëŒí•¨" + +#: commands/variable.c:298 +#, c-format +msgid "Cannot specify months in time zone interval." +msgstr "타임 ì¡´ ê°„ê²©ì— ë‹¬ì„ ì§€ì •í•  수 ì—†ìŒ" + +#: commands/variable.c:304 +#, c-format +msgid "Cannot specify days in time zone interval." +msgstr "타임 ì¡´ ê°„ê²©ì— ì¼ì„ 지정할 수 ì—†ìŒ" + +#: commands/variable.c:346 commands/variable.c:428 +#, c-format +msgid "time zone \"%s\" appears to use leap seconds" +msgstr "\"%s\" time zone ì—서 leap second를 사용합니다" + +#: commands/variable.c:348 commands/variable.c:430 +#, c-format +msgid "PostgreSQL does not support leap seconds." +msgstr "PostgreSQLì—서는 leap second를 ì§€ì›í•˜ì§€ 않습니다" + +#: commands/variable.c:357 +#, c-format +msgid "UTC timezone offset is out of range." +msgstr "UTC 타입존 오프세트 범위가 벗어남." + +#: commands/variable.c:497 +#, c-format +msgid "cannot set transaction read-write mode inside a read-only transaction" +msgstr "ì½ê¸° ì „ìš© 트랜잭션 ë‚´ì—서 íŠ¸ëžœìž­ì…˜ì„ ì½ê¸°/쓰기 모드로 설정할 수 ì—†ìŒ" + +#: commands/variable.c:504 +#, c-format +msgid "transaction read-write mode must be set before any query" +msgstr "ì½ê¸°/쓰기 모드 íŠ¸ëžœìž­ì…˜ì€ ëª¨ë“  쿼리 ì•žì— ì§€ì •í•´ì•¼ 합니다." + +#: commands/variable.c:511 +#, c-format +msgid "cannot set transaction read-write mode during recovery" +msgstr "복구 작업 중ì—는 íŠ¸ëžœìž­ì…˜ì„ ì½ê¸°/쓰기 모드로 설정할 수 ì—†ìŒ" + +#: commands/variable.c:560 +#, c-format +msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query" +msgstr "쿼리보다 먼저 SET TRANSACTION ISOLATION LEVELì„ í˜¸ì¶œí•´ì•¼ 함" + +#: commands/variable.c:567 +#, c-format +msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction" +msgstr "하위 트랜잭션ì—서 SET TRANSACTION ISOLATION LEVELì„ í˜¸ì¶œí•˜ì§€ 않아야 함" + +#: commands/variable.c:574 storage/lmgr/predicate.c:1587 +#, c-format +msgid "cannot use serializable mode in a hot standby" +msgstr "ì½ê¸° ì „ìš© ë³´ì¡° 서버 ìƒíƒœì—서는 serializable 모드를 사용할 수 ì—†ìŒ" + +#: commands/variable.c:575 +#, c-format +msgid "You can use REPEATABLE READ instead." +msgstr "대신ì—, REPEATABLE READ ëª…ë ¹ì„ ì‚¬ìš©í•  수 있ìŒ." + +#: commands/variable.c:623 +#, c-format +msgid "" +"SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction" +msgstr "" +"하위 트랜잭션ì—서 SET TRANSACTION [NOT] DEFERRABLE êµ¬ë¬¸ì€ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: commands/variable.c:629 +#, c-format +msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query" +msgstr "모든 쿼리보다 먼저 SET TRANSACTION [NOT] DEFERRABLE êµ¬ë¬¸ì„ ì‚¬ìš©í•´ì•¼ 함" + +#: commands/variable.c:711 +#, c-format +msgid "Conversion between %s and %s is not supported." +msgstr "%s ì¸ì½”딩과 %s ì¸ì½”딩 사ì´ì˜ ë³€í™˜ì€ ì§€ì›í•˜ì§€ 않습니다" + +#: commands/variable.c:718 +#, c-format +msgid "Cannot change \"client_encoding\" now." +msgstr "\"client_encoding\" ê°’ì„ ë°”ê¿€ 수 ì—†ìŒ" + +#: commands/variable.c:779 +#, c-format +msgid "cannot change client_encoding in a parallel worker" +msgstr "병렬 작업ìžì—서는 client_encoding ì„¤ì •ì„ í•  수 ì—†ìŒ" + +#: commands/variable.c:915 +#, c-format +msgid "permission denied to set role \"%s\"" +msgstr "\"%s\" 롤 ê¶Œí•œì„ ì§€ì •í•  수 ì—†ìŒ" + +#: commands/view.c:54 +#, c-format +msgid "invalid value for \"check_option\" option" +msgstr "\"check_option\" ì˜µì…˜ê°’ì´ ìž˜ëª»ë¨" + +#: commands/view.c:55 +#, c-format +msgid "Valid values are \"local\" and \"cascaded\"." +msgstr "사용할 수 있는 ê°’ì€ \"local\" ë˜ëŠ” \"cascaded\" 입니다" + +#: commands/view.c:101 +#, c-format +msgid "could not determine which collation to use for view column \"%s\"" +msgstr "\"%s\" 칼럼 ìžë£Œ 처리를 위한 ì •ë ¬ ê·œì¹™ì„ ê²°ì •í•  수 ì—†ìŒ" + +#: commands/view.c:115 +#, c-format +msgid "view must have at least one column" +msgstr "ë·°ì—는 ì ì–´ë„ 한 ê°œ ì´ìƒì˜ ì¹¼ëŸ¼ì´ ìžˆì–´ì•¼ 합니다" + +#: commands/view.c:280 commands/view.c:292 +#, c-format +msgid "cannot drop columns from view" +msgstr "ë·°ì—서 ì¹¼ëŸ¼ì„ ì‚­ì œí•  수 ì—†ìŒ" + +#: commands/view.c:297 +#, c-format +msgid "cannot change name of view column \"%s\" to \"%s\"" +msgstr "ë·°ì—서 \"%s\" 칼럼 ì´ë¦„ì„ \"%s\"(으)로 바꿀 수 ì—†ìŒ" + +#: commands/view.c:305 +#, c-format +msgid "cannot change data type of view column \"%s\" from %s to %s" +msgstr "ë·°ì—서 \"%s\" 칼럼 ìžë£Œí˜•ì„ì„ %sì—서 %s(으)로 바꿀 수 ì—†ìŒ" + +#: commands/view.c:444 +#, c-format +msgid "views must not contain SELECT INTO" +msgstr "ë·°ì—는 SELECT INTO êµ¬ë¬¸ì„ í¬í•¨í•  수 ì—†ìŒ" + +#: commands/view.c:457 +#, c-format +msgid "views must not contain data-modifying statements in WITH" +msgstr "뷰로 ì‚¬ìš©ë  ì¿¼ë¦¬ì˜ WITH ì ˆì—는 ìžë£Œ 변경 êµ¬ë¬¸ì´ ìžˆìœ¼ë©´ 안ë©ë‹ˆë‹¤." + +#: commands/view.c:528 +#, c-format +msgid "CREATE VIEW specifies more column names than columns" +msgstr "CREATE VIEW 는 columns 보다는 ì¢€ë” ë§Žì€ ì—´ ì´ë¦„ì„ ëª…ì‹œí•´ì•¼ 한다" + +#: commands/view.c:536 +#, c-format +msgid "views cannot be unlogged because they do not have storage" +msgstr "" +"뷰는 저장 ê³µê°„ì„ ì‚¬ìš©í•˜ì§€ 않기 ë•Œë¬¸ì— unlogged ì†ì„±ì„ 지정할 수 없습니다." + +#: commands/view.c:550 +#, c-format +msgid "view \"%s\" will be a temporary view" +msgstr "\"%s\" 뷰는 임시ì ì¸ 뷰로 만들어집니다" + +#: executor/execCurrent.c:76 +#, c-format +msgid "cursor \"%s\" is not a SELECT query" +msgstr "\"%s\" 커서는 SELECT 쿼리가 아님" + +#: executor/execCurrent.c:82 +#, c-format +msgid "cursor \"%s\" is held from a previous transaction" +msgstr "\"%s\" 커서는 ì´ì „ 트랜잭션ì—서 보류ë¨" + +#: executor/execCurrent.c:114 +#, c-format +msgid "cursor \"%s\" has multiple FOR UPDATE/SHARE references to table \"%s\"" +msgstr "" +"\"%s\" 커서ì—는 \"%s\" í…Œì´ë¸”ì— ëŒ€í•œ FOR UPDATE/SHARE 참조가 여러 ê°œ 있ìŒ" + +#: executor/execCurrent.c:123 +#, c-format +msgid "" +"cursor \"%s\" does not have a FOR UPDATE/SHARE reference to table \"%s\"" +msgstr "\"%s\" ì»¤ì„œì— \"%s\" í…Œì´ë¸”ì— ëŒ€í•œ FOR UPDATE/SHARE 참조가 ì—†ìŒ" + +#: executor/execCurrent.c:133 executor/execCurrent.c:179 +#, c-format +msgid "cursor \"%s\" is not positioned on a row" +msgstr "\"%s\" 커서가 ë¡œìš°ì— ë†“ì—¬ 있지 않ìŒ" + +#: executor/execCurrent.c:166 +#, c-format +msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\"" +msgstr "\"%s\" 커서는 \"%s\" í…Œì´ë¸”ì˜ ë‹¨ìˆœ ì—…ë°ì´íЏ 가능한 ìŠ¤ìº”ì´ ì•„ë‹˜" + +#: executor/execCurrent.c:231 executor/execQual.c:1178 +#, c-format +msgid "" +"type of parameter %d (%s) does not match that when preparing the plan (%s)" +msgstr "" +"%d번째 매개 ë³€ìˆ˜ì˜ ìžë£Œí˜•(%s)ì´ ë¯¸ë¦¬ ì¤€ë¹„ëœ ì‹¤í–‰ê³„íšì˜ ìžë£Œí˜•(%s)ê³¼ 다릅니다" + +#: executor/execCurrent.c:243 executor/execQual.c:1190 +#, c-format +msgid "no value found for parameter %d" +msgstr "%d번째 매개 변수 ê°’ì´ ì—†ìŠµë‹ˆë‹¤" + +#: executor/execIndexing.c:544 +#, c-format +msgid "" +"ON CONFLICT does not support deferrable unique constraints/exclusion " +"constraints as arbiters" +msgstr "" +"지연 가능한 고유 제약조건ì´ë‚˜ 제외 제약 ì¡°ê±´ì€ ON CONFLICT íŒë³„ìžë¡œ 사용할 " +"수 없습니다." + +#: executor/execIndexing.c:821 +#, c-format +msgid "could not create exclusion constraint \"%s\"" +msgstr "\"%s\" exclusion 제약 ì¡°ê±´ì„ ë§Œë“¤ 수 ì—†ìŒ" + +#: executor/execIndexing.c:824 +#, c-format +msgid "Key %s conflicts with key %s." +msgstr "%s 키와 %s ê°€ ì¶©ëŒí•¨" + +#: executor/execIndexing.c:826 +#, c-format +msgid "Key conflicts exist." +msgstr "키 ì¶©ëŒ ë°œìƒ" + +#: executor/execIndexing.c:832 +#, c-format +msgid "conflicting key value violates exclusion constraint \"%s\"" +msgstr "\"%s\" exclusion 제약 ì¡°ê±´ì— ë”°ë¼ í‚¤ ê°’ ì¶©ëŒì´ ë°œìƒí–ˆìŠµë‹ˆë‹¤." + +#: executor/execIndexing.c:835 +#, c-format +msgid "Key %s conflicts with existing key %s." +msgstr "%s 키가 ì´ë¯¸ 있는 %s 키와 ì¶©ëŒí•©ë‹ˆë‹¤." + +#: executor/execIndexing.c:837 +#, c-format +msgid "Key conflicts with existing key." +msgstr "키가 기존 키와 ì¶©ëŒí•¨" + +#: executor/execMain.c:1027 +#, c-format +msgid "cannot change sequence \"%s\"" +msgstr "\"%s\" 시퀀스를 바꿀 수 ì—†ìŒ" + +#: executor/execMain.c:1033 +#, c-format +msgid "cannot change TOAST relation \"%s\"" +msgstr "\"%s\" TOAST 릴레ì´ì…˜ì„ 바꿀 수 ì—†ìŒ" + +#: executor/execMain.c:1051 rewrite/rewriteHandler.c:2648 +#, c-format +msgid "cannot insert into view \"%s\"" +msgstr "\"%s\" ë·°ì— ìžë£Œë¥¼ 입력할 수 없습니다" + +#: executor/execMain.c:1053 rewrite/rewriteHandler.c:2651 +#, c-format +msgid "" +"To enable inserting into the view, provide an INSTEAD OF INSERT trigger or " +"an unconditional ON INSERT DO INSTEAD rule." +msgstr "" +"뷰를 통해 ìžë£Œë¥¼ 입력하려면, INSTEAD OF INSERT 트리거나 ON INSERT DO INSTEAD " +"ë£°ì„ ì‚¬ìš©í•˜ì„¸ìš”" + +#: executor/execMain.c:1059 rewrite/rewriteHandler.c:2656 +#, c-format +msgid "cannot update view \"%s\"" +msgstr "\"%s\" 뷰로는 ìžë£Œë¥¼ 갱신할 수 없습니다" + +#: executor/execMain.c:1061 rewrite/rewriteHandler.c:2659 +#, c-format +msgid "" +"To enable updating the view, provide an INSTEAD OF UPDATE trigger or an " +"unconditional ON UPDATE DO INSTEAD rule." +msgstr "" +"ë·° ìžë£Œ 갱신 ê¸°ëŠ¥ì€ INSTEAD OF UPDATE 트리거를 사용하거나, ON UPDATE DO " +"INSTEAD ì†ì„±ìœ¼ë¡œ ë£°ì„ ë§Œë“¤ì–´ì„œ 사용해 보세요." + +#: executor/execMain.c:1067 rewrite/rewriteHandler.c:2664 +#, c-format +msgid "cannot delete from view \"%s\"" +msgstr "\"%s\" 뷰로는 ìžë£Œë¥¼ 삭제할 수 없습니다" + +#: executor/execMain.c:1069 rewrite/rewriteHandler.c:2667 +#, c-format +msgid "" +"To enable deleting from the view, provide an INSTEAD OF DELETE trigger or an " +"unconditional ON DELETE DO INSTEAD rule." +msgstr "" +"ë·° ìžë£Œ ì‚­ì œ ê¸°ëŠ¥ì€ INSTEAD OF DELETE 트리거를 사용하거나, ON DELETE DO " +"INSTEAD ì†ì„±ìœ¼ë¡œ ë£°ì„ ë§Œë“¤ì–´ì„œ 사용해 보세요." + +#: executor/execMain.c:1080 +#, c-format +msgid "cannot change materialized view \"%s\"" +msgstr "\"%s\" êµ¬ì²´í™”ëœ ë·°ë¥¼ 바꿀 수 ì—†ìŒ" + +#: executor/execMain.c:1092 +#, c-format +msgid "cannot insert into foreign table \"%s\"" +msgstr "\"%s\" 외부 í…Œì´ë¸”ì— ìžë£Œë¥¼ 입력할 수 ì—†ìŒ" + +#: executor/execMain.c:1098 +#, c-format +msgid "foreign table \"%s\" does not allow inserts" +msgstr "\"%s\" 외부 í…Œì´ë¸”ì€ ìžë£Œ ìž…ë ¥ì„ í—ˆìš©í•˜ì§€ 않ìŒ" + +#: executor/execMain.c:1105 +#, c-format +msgid "cannot update foreign table \"%s\"" +msgstr "\"%s\" 외부 í…Œì´ë¸”ì— ìžë£Œë¥¼ 변경 í•  수 ì—†ìŒ" + +#: executor/execMain.c:1111 +#, c-format +msgid "foreign table \"%s\" does not allow updates" +msgstr "\"%s\" 외부 í…Œì´ë¸”ì€ ìžë£Œ ë³€ê²½ì„ í—ˆìš©í•˜ì§€ 않ìŒ" + +#: executor/execMain.c:1118 +#, c-format +msgid "cannot delete from foreign table \"%s\"" +msgstr "\"%s\" 외부 í…Œì´ë¸”ì— ìžë£Œë¥¼ ì‚­ì œ í•  수 ì—†ìŒ" + +#: executor/execMain.c:1124 +#, c-format +msgid "foreign table \"%s\" does not allow deletes" +msgstr "\"%s\" 외부 í…Œì´ë¸”ì€ ìžë£Œ 삭제를 허용하지 않ìŒ" + +#: executor/execMain.c:1135 +#, c-format +msgid "cannot change relation \"%s\"" +msgstr "\"%s\" 릴레ì´ì…˜ì„ 바꿀 수 ì—†ìŒ" + +#: executor/execMain.c:1161 +#, c-format +msgid "cannot lock rows in sequence \"%s\"" +msgstr "\"%s\" 시퀀스ì—서 로우를 잠글 수 ì—†ìŒ" + +#: executor/execMain.c:1168 +#, c-format +msgid "cannot lock rows in TOAST relation \"%s\"" +msgstr "\"%s\" TOAST 릴레ì´ì…˜ì—서 로우를 잠글 수 ì—†ìŒ" + +#: executor/execMain.c:1175 +#, c-format +msgid "cannot lock rows in view \"%s\"" +msgstr "\"%s\" ë·°ì—서 로우를 잠글 수 ì—†ìŒ" + +#: executor/execMain.c:1183 +#, c-format +msgid "cannot lock rows in materialized view \"%s\"" +msgstr "\"%s\" êµ¬ì²´í™”ëœ ë·°ì—서 로우를 잠글 수 ì—†ìŒ" + +#: executor/execMain.c:1192 executor/execMain.c:2613 +#: executor/nodeLockRows.c:132 +#, c-format +msgid "cannot lock rows in foreign table \"%s\"" +msgstr "\"%s\" 외부 í…Œì´ë¸”ì—서 로우를 잠글 수 ì—†ìŒ" + +#: executor/execMain.c:1198 +#, c-format +msgid "cannot lock rows in relation \"%s\"" +msgstr "\"%s\" 릴레ì´ì…˜ì—서 로우를 잠글 수 ì—†ìŒ" + +#: executor/execMain.c:1731 +#, c-format +msgid "null value in column \"%s\" violates not-null constraint" +msgstr "\"%s\" ì¹¼ëŸ¼ì˜ null ê°’ì´ not null ì œì•½ì¡°ê±´ì„ ìœ„ë°˜í–ˆìŠµë‹ˆë‹¤." + +#: executor/execMain.c:1733 executor/execMain.c:1759 executor/execMain.c:1848 +#, c-format +msgid "Failing row contains %s." +msgstr "실패한 ìžë£Œ: %s" + +#: executor/execMain.c:1757 +#, c-format +msgid "new row for relation \"%s\" violates check constraint \"%s\"" +msgstr "새 ìžë£Œê°€ \"%s\" 릴레ì´ì…˜ì˜ \"%s\" ì²´í¬ ì œì•½ ì¡°ê±´ì„ ìœ„ë°˜í–ˆìŠµë‹ˆë‹¤" + +#: executor/execMain.c:1846 +#, c-format +msgid "new row violates check option for view \"%s\"" +msgstr "새 ìžë£Œê°€ \"%s\" ë·°ì˜ ì²´í¬ ì œì•½ ì¡°ê±´ì„ ìœ„ë°˜í–ˆìŠµë‹ˆë‹¤" + +#: executor/execMain.c:1856 +#, c-format +msgid "new row violates row-level security policy \"%s\" for table \"%s\"" +msgstr "" +"새 ìžë£Œê°€ \"%s\" 로우 단위 보안 ì •ì±…ì„ ìœ„ë°˜í–ˆìŠµë‹ˆë‹¤, 해당 í…Œì´ë¸”: \"%s\"" + +#: executor/execMain.c:1861 +#, c-format +msgid "new row violates row-level security policy for table \"%s\"" +msgstr "새 ìžë£Œê°€ \"%s\" í…Œì´ë¸”ì˜ ë¡œìš° 단위 보안 ì •ì±…ì„ ìœ„ë°˜í–ˆìŠµë‹ˆë‹¤." + +#: executor/execMain.c:1868 +#, c-format +msgid "" +"new row violates row-level security policy \"%s\" (USING expression) for " +"table \"%s\"" +msgstr "" +"새 ìžë£Œê°€ \"%s\" 로우 단위 보안 ì •ì±…(USING ì ˆ 사용)ì„ ìœ„ë°˜í–ˆìŠµë‹ˆë‹¤, 해당 í…Œì´" +"블: \"%s\"" + +#: executor/execMain.c:1873 +#, c-format +msgid "" +"new row violates row-level security policy (USING expression) for table \"%s" +"\"" +msgstr "" +"새 ìžë£Œê°€ \"%s\" í…Œì´ë¸”ì˜ ë¡œìš° 단위 보안 ì •ì±…(USING ì ˆ 사용)ì„ ìœ„ë°˜í–ˆìŠµë‹ˆë‹¤." + +#: executor/execQual.c:302 executor/execQual.c:339 executor/execQual.c:3236 +#: utils/adt/array_userfuncs.c:484 utils/adt/arrayfuncs.c:260 +#: utils/adt/arrayfuncs.c:558 utils/adt/arrayfuncs.c:1288 +#: utils/adt/arrayfuncs.c:3361 utils/adt/arrayfuncs.c:5241 +#: utils/adt/arrayfuncs.c:5758 +#, c-format +msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" +msgstr "지정한 ë°°ì—´ í¬ê¸°(%d)ê°€ 최대치(%d)를 초과했습니다" + +#: executor/execQual.c:324 executor/execQual.c:360 +#, c-format +msgid "array subscript in assignment must not be null" +msgstr "ë°°ì—´ 하위 스í¬ë¦½íŠ¸ë¡œ 지정하는 값으로 null ê°’ì„ ì‚¬ìš©í•  수 없습니다" + +#: executor/execQual.c:657 executor/execQual.c:4183 +#, c-format +msgid "attribute %d has wrong type" +msgstr "%d ì†ì„±ì˜ 형ì‹ì´ 잘못ë¨" + +#: executor/execQual.c:658 executor/execQual.c:4184 +#, c-format +msgid "Table has type %s, but query expects %s." +msgstr "í…Œì´ë¸”ì—는 %s ìžë£Œí˜•ì´ì§€ë§Œ, 쿼리ì—서는 %s ìžë£Œí˜•입니다." + +#: executor/execQual.c:851 executor/execQual.c:868 executor/execQual.c:1068 +#: executor/nodeModifyTable.c:95 executor/nodeModifyTable.c:105 +#: executor/nodeModifyTable.c:122 executor/nodeModifyTable.c:130 +#, c-format +msgid "table row type and query-specified row type do not match" +msgstr "í…Œì´ë¸” í–‰ 형ì‹ê³¼ 쿼리 지정 í–‰ 형ì‹ì´ ì¼ì¹˜í•˜ì§€ 않ìŒ" + +#: executor/execQual.c:852 +#, c-format +msgid "Table row contains %d attribute, but query expects %d." +msgid_plural "Table row contains %d attributes, but query expects %d." +msgstr[0] "" +"í…Œì´ë¸” í–‰ì—는 %dê°œ ì†ì„±ì´ í¬í•¨ë˜ì–´ ìžˆëŠ”ë° ì¿¼ë¦¬ì—는 %d개가 필요합니다." + +#: executor/execQual.c:869 executor/nodeModifyTable.c:106 +#, c-format +msgid "Table has type %s at ordinal position %d, but query expects %s." +msgstr "" +"í…Œì´ë¸”ì—는 %s 형ì‹ì´ 있는ë°(서수 위치 %d) 쿼리ì—는 %sì´(ê°€) 필요합니다." + +#: executor/execQual.c:1069 executor/execQual.c:1665 +#, c-format +msgid "Physical storage mismatch on dropped attribute at ordinal position %d." +msgstr "서수 위치 %dì˜ ì‚­ì œëœ ì†ì„±ì—서 실제 스토리지 불ì¼ì¹˜ê°€ ë°œìƒí•©ë‹ˆë‹¤." + +#: executor/execQual.c:1344 parser/parse_func.c:115 parser/parse_func.c:542 +#: parser/parse_func.c:897 +#, c-format +msgid "cannot pass more than %d argument to a function" +msgid_plural "cannot pass more than %d arguments to a function" +msgstr[0] "í•¨ìˆ˜ì— ìµœëŒ€ %dê°œì˜ ì¸ìžë¥¼ 전달할 수 있ìŒ" + +#: executor/execQual.c:1533 +#, c-format +msgid "functions and operators can take at most one set argument" +msgstr "함수와 ì—°ì‚°ìžëŠ” set ì¸ìžë¡œëŠ” ì˜¤ì§ í•œ 개만 사용할 수 있습니다" + +#: executor/execQual.c:1583 +#, c-format +msgid "" +"function returning setof record called in context that cannot accept type " +"record" +msgstr "" +"setof 레코드 반환 함수가 type 레코드를 허용하지 않는 컨í…스트ì—서 호출ë¨" + +#: executor/execQual.c:1638 executor/execQual.c:1654 executor/execQual.c:1664 +#, c-format +msgid "function return row and query-specified return row do not match" +msgstr "함수 반환 행과 쿼리 지정 반환 í–‰ì´ ì¼ì¹˜í•˜ì§€ 않ìŒ" + +#: executor/execQual.c:1639 +#, c-format +msgid "Returned row contains %d attribute, but query expects %d." +msgid_plural "Returned row contains %d attributes, but query expects %d." +msgstr[0] "" +"ë°˜í™˜ëœ í–‰ì—는 %dê°œ ì†ì„±ì´ í¬í•¨ë˜ì–´ ìžˆëŠ”ë° ì¿¼ë¦¬ì—는 %d개가 필요합니다." + +#: executor/execQual.c:1655 +#, c-format +msgid "Returned type %s at ordinal position %d, but query expects %s." +msgstr "ë°˜í™˜ëœ í˜•ì‹ì€ %sì¸ë°(서수 위치 %d) 쿼리ì—는 %sì´(ê°€) 필요합니다." + +#: executor/execQual.c:1897 executor/execQual.c:2335 +#, c-format +msgid "table-function protocol for materialize mode was not followed" +msgstr "materialize 모드를 위한 í…Œì´ë¸” 함수 í”„ë¡œí† ì½œì´ ë’¤ì´ì–´ 오지 않았습니다" + +#: executor/execQual.c:1917 executor/execQual.c:2342 +#, c-format +msgid "unrecognized table-function returnMode: %d" +msgstr "알 수 없는 í…Œì´ë¸”-함수 리턴모드: %d" + +#: executor/execQual.c:2287 +#, c-format +msgid "rows returned by function are not all of the same row type" +msgstr "함수 호출로 반환ë˜ëŠ” 로우가 ê°™ì€ ë¡œìš°í˜•ì˜ ì „ë¶€ê°€ 아닙니다" + +#: executor/execQual.c:2522 +#, c-format +msgid "IS DISTINCT FROM does not support set arguments" +msgstr "IS DISTINCT FROM 구문ì—서는 set ì¸ìžë“¤ì„ ì§€ì›í•˜ì§€ 않습니다" + +#: executor/execQual.c:2599 +#, c-format +msgid "op ANY/ALL (array) does not support set arguments" +msgstr "op ANY/ALL (array) ì—서는 set ì¸ìžë“¤ì„ ì§€ì›í•˜ì§€ 않습니다" + +#: executor/execQual.c:3214 +#, c-format +msgid "cannot merge incompatible arrays" +msgstr "ë°°ì—´ 형태가 서로 틀려 병합할 수 없습니다" + +#: executor/execQual.c:3215 +#, c-format +msgid "" +"Array with element type %s cannot be included in ARRAY construct with " +"element type %s." +msgstr "" +"%s ìžë£Œí˜•ì˜ ìš”ì†Œë¡œ êµ¬ì„±ëœ ë°°ì—´ì€ %s ìžë£Œí˜•ì˜ ìš”ì†Œë¡œ êµ¬ì„±ëœ ARRAY êµ¬ë¬¸ì— í¬í•¨" +"ë  ìˆ˜ 없습니다." + +#: executor/execQual.c:3256 executor/execQual.c:3283 +#, c-format +msgid "" +"multidimensional arrays must have array expressions with matching dimensions" +msgstr "ë‹¤ì°¨ì› ë°°ì—´ì—는 ì¼ì¹˜í•˜ëŠ” ì°¨ì›ì´ í¬í•¨ëœ ë°°ì—´ ì‹ì´ 있어야 함" + +#: executor/execQual.c:3798 +#, c-format +msgid "NULLIF does not support set arguments" +msgstr "NULLIF는 set ì¸ìžë“¤ì„ ì§€ì›í•˜ì§€ 않습니다" + +#: executor/execQual.c:4046 utils/adt/domains.c:137 +#, c-format +msgid "domain %s does not allow null values" +msgstr "%s ë„ë©”ì¸ì—서는 null ê°’ì„ í—ˆìš©í•˜ì§€ 않습니다" + +#: executor/execQual.c:4083 utils/adt/domains.c:179 +#, c-format +msgid "value for domain %s violates check constraint \"%s\"" +msgstr "%s ë„ë©”ì¸ìš© ê°’ì´ \"%s\" ì²´í¬ ì œì•½ ì¡°ê±´ì„ ìœ„ë°˜í–ˆìŠµë‹ˆë‹¤" + +#: executor/execQual.c:4438 +#, c-format +msgid "WHERE CURRENT OF is not supported for this table type" +msgstr "WHERE CURRENT OF êµ¬ë¬¸ì€ ì´ í…Œì´ë¸” 형 대ìƒìœ¼ë¡œ ì§€ì›í•˜ì§€ 않습니다." + +#: executor/execQual.c:4627 parser/parse_agg.c:758 +#, c-format +msgid "window function calls cannot be nested" +msgstr "윈ë„ìš° 함수 í˜¸ì¶œì„ ì¤‘ì²©í•  수 ì—†ìŒ" + +#: executor/execQual.c:4839 +#, c-format +msgid "target type is not an array" +msgstr "ëŒ€ìƒ ìžë£Œí˜•ì´ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤." + +#: executor/execQual.c:4956 +#, c-format +msgid "ROW() column has type %s instead of type %s" +msgstr "ROW() ì—´ì€ %s ìžë£Œí˜•ì„ ê°€ì§‘ë‹ˆë‹¤. %s ìžë£Œí˜• 대신ì—" + +#: executor/execQual.c:5091 utils/adt/arrayfuncs.c:3803 +#: utils/adt/arrayfuncs.c:6325 utils/adt/rowtypes.c:927 +#, c-format +msgid "could not identify a comparison function for type %s" +msgstr "%s ìžë£Œí˜•ì—서 사용할 비êµí•¨ìˆ˜ë¥¼ ì°¾ì„ ìˆ˜ 없습니다." + +#: executor/execUtils.c:813 +#, c-format +msgid "materialized view \"%s\" has not been populated" +msgstr "\"%s\" êµ¬ì²´í™”ëœ ë·°ê°€ ì•„ì§ êµ¬ì²´í™”ë˜ì§€ 못했습니다." + +#: executor/execUtils.c:815 +#, c-format +msgid "Use the REFRESH MATERIALIZED VIEW command." +msgstr "REFRESH MATERIALIZED VIEW ëª…ë ¹ì„ ì‚¬ìš©í•˜ì„¸ìš”." + +#: executor/functions.c:225 +#, c-format +msgid "could not determine actual type of argument declared %s" +msgstr "%s ì¸ìžì˜ ìžë£Œí˜•으로 지정한 ìžë£Œí˜•ì˜ ê¸°ë³¸ ìžë£Œí˜•ì„ ì°¾ì„ ìˆ˜ 없습니다" + +#: executor/functions.c:511 +#, c-format +msgid "cannot COPY to/from client in a SQL function" +msgstr "SQL 함수ì—서 í´ë¼ì´ì–¸íЏ ëŒ€ìƒ COPY ìž‘ì—…ì„ í•  수 ì—†ìŒ" + +#. translator: %s is a SQL statement name +#: executor/functions.c:517 +#, c-format +msgid "%s is not allowed in a SQL function" +msgstr "SQL 함수ì—서 %s ì§€ì›ë˜ì§€ 않ìŒ" + +#. translator: %s is a SQL statement name +#: executor/functions.c:524 executor/spi.c:1364 executor/spi.c:2154 +#, c-format +msgid "%s is not allowed in a non-volatile function" +msgstr "%s êµ¬ë¬¸ì€ ë¹„íœ˜ë°œì„± 함수(non-volatile function)ì—서 허용하지 않습니다" + +#: executor/functions.c:650 +#, c-format +msgid "" +"could not determine actual result type for function declared to return type " +"%s" +msgstr "" +"%s ìžë£Œí˜•ì„ ë°˜í™˜í•œë‹¤ê³  ì •ì˜í•œ 함수ì¸ë°, 실재 반환 ìžë£Œí˜•ì„ ê²°ì •í•  수 없습니" +"다." + +#: executor/functions.c:1415 +#, c-format +msgid "SQL function \"%s\" statement %d" +msgstr "SQL 함수 \"%s\"ì˜ ë¬¸ %d" + +#: executor/functions.c:1441 +#, c-format +msgid "SQL function \"%s\" during startup" +msgstr "시작 중 SQL 함수 \"%s\"" + +#: executor/functions.c:1600 executor/functions.c:1637 +#: executor/functions.c:1649 executor/functions.c:1762 +#: executor/functions.c:1795 executor/functions.c:1825 +#, c-format +msgid "return type mismatch in function declared to return %s" +msgstr "리턴 ìžë£Œí˜•ì´ í•¨ìˆ˜ ì •ì˜ì—서 지정한 %s 리턴 ìžë£Œí˜•ê³¼ 틀립니다" + +#: executor/functions.c:1602 +#, c-format +msgid "" +"Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING." +msgstr "" +"함수 ë‚´ìš©ì˜ ë§¨ 마지막 êµ¬ë¬¸ì€ SELECT ë˜ëŠ” INSERT/UPDATE/DELETE RETURNINGì´ì–´" +"야 합니다." + +#: executor/functions.c:1639 +#, c-format +msgid "Final statement must return exactly one column." +msgstr "맨 마지막 êµ¬ë¬¸ì€ ì •í™•ížˆ í•˜ë‚˜ì˜ ì¹¼ëŸ¼ë§Œ 반환해야 합니다." + +#: executor/functions.c:1651 +#, c-format +msgid "Actual return type is %s." +msgstr "실재 반환 ìžë£Œí˜•ì€ %s" + +#: executor/functions.c:1764 +#, c-format +msgid "Final statement returns too many columns." +msgstr "맨 마지막 êµ¬ë¬¸ì´ ë„ˆë¬´ ë§Žì€ ì¹¼ëŸ¼ì„ ë°˜í™˜í•©ë‹ˆë‹¤." + +#: executor/functions.c:1797 +#, c-format +msgid "Final statement returns %s instead of %s at column %d." +msgstr "" +"맨 마지막 êµ¬ë¬¸ì´ %s(기대ë˜ëŠ” ìžë£Œí˜•: %s) ìžë£Œí˜•ì„ %d 번째 칼럼ì—서 반환합니" +"다." + +#: executor/functions.c:1827 +#, c-format +msgid "Final statement returns too few columns." +msgstr "맨 마지막 êµ¬ë¬¸ì´ ë„ˆë¬´ ì ì€ ì¹¼ëŸ¼ì„ ë°˜í™˜í•©ë‹ˆë‹¤." + +#: executor/functions.c:1876 +#, c-format +msgid "return type %s is not supported for SQL functions" +msgstr "반환 ìžë£Œí˜•ì¸ %s ìžë£Œí˜•ì€ SQL 함수ì—서 ì§€ì›ë˜ì§€ 않ìŒ" + +#: executor/nodeAgg.c:3038 +#, c-format +msgid "combine function for aggregate %u must be declared as STRICT" +msgstr "%u OID 집계함수ì—서 쓸 ì¡°í•© 함수는 STRICT ì†ì„±ì„ 가져야 합니다" + +#: executor/nodeAgg.c:3083 executor/nodeWindowAgg.c:2318 +#, c-format +msgid "aggregate %u needs to have compatible input type and transition type" +msgstr "%u OID ì§‘ê³„í•¨ìˆ˜ì— í˜¸í™˜ 가능한 ìž…ë ¥ 형ì‹ê³¼ 변환 형ì‹ì´ 있어야 함" + +#: executor/nodeAgg.c:3149 parser/parse_agg.c:612 parser/parse_agg.c:642 +#, c-format +msgid "aggregate function calls cannot be nested" +msgstr "집계 함수는 중첩ë˜ì–´ 호출 í•  수 ì—†ìŒ" + +#: executor/nodeCustom.c:148 executor/nodeCustom.c:159 +#, c-format +msgid "custom scan \"%s\" does not support MarkPos" +msgstr "\"%s\" ì´ë¦„ì˜ ì¹¼ëŸ¼ íƒìƒ‰ì€ MarkPos ê¸°ëŠ¥ì„ ì§€ì›í•˜ì§€ 않ìŒ" + +#: executor/nodeHashjoin.c:823 executor/nodeHashjoin.c:853 +#, c-format +msgid "could not rewind hash-join temporary file: %m" +msgstr "해시-ì¡°ì¸ ìž„ì‹œ 파ì¼ì„ ë˜ê°ì„ 수 ì—†ìŒ: %m" + +#: executor/nodeHashjoin.c:888 executor/nodeHashjoin.c:894 +#, c-format +msgid "could not write to hash-join temporary file: %m" +msgstr "hash-join 임시 파ì¼ì„ 쓸 수 없습니다: %m" + +#: executor/nodeHashjoin.c:935 executor/nodeHashjoin.c:945 +#, c-format +msgid "could not read from hash-join temporary file: %m" +msgstr "해시-ì¡°ì¸ ìž„ì‹œ 파ì¼ì„ ì½ì„ 수 ì—†ìŒ: %m" + +#: executor/nodeIndexonlyscan.c:179 +#, c-format +msgid "lossy distance functions are not supported in index-only scans" +msgstr "lossy distance í•¨ìˆ˜ë“¤ì€ ì¸ë±ìФ ë‹¨ë… íƒìƒ‰ì„ ì§€ì›í•˜ì§€ 않ìŒ" + +#: executor/nodeLimit.c:253 +#, c-format +msgid "OFFSET must not be negative" +msgstr "OFFSETì€ ìŒìˆ˜ê°€ 아니어야 함" + +#: executor/nodeLimit.c:280 +#, c-format +msgid "LIMIT must not be negative" +msgstr "LIMIT는 ìŒìˆ˜ê°€ 아니어야 함" + +#: executor/nodeMergejoin.c:1584 +#, c-format +msgid "RIGHT JOIN is only supported with merge-joinable join conditions" +msgstr "RIGHT JOINì€ ë³‘í•©-ì¡°ì¸ ê°€ëŠ¥ ì¡°ì¸ ì¡°ê±´ì—서만 ì§€ì›ë¨" + +#: executor/nodeMergejoin.c:1604 +#, c-format +msgid "FULL JOIN is only supported with merge-joinable join conditions" +msgstr "FULL JOINì€ ë³‘í•©-ì¡°ì¸ ê°€ëŠ¥ ì¡°ì¸ ì¡°ê±´ì—서만 ì§€ì›ë¨" + +#: executor/nodeModifyTable.c:96 +#, c-format +msgid "Query has too many columns." +msgstr "ì¿¼ë¦¬ì— ì¹¼ëŸ¼ì´ ë„ˆë¬´ 많습니다." + +#: executor/nodeModifyTable.c:123 +#, c-format +msgid "Query provides a value for a dropped column at ordinal position %d." +msgstr "쿼리ì—서 서수 위치 %dì— ìžˆëŠ” ì‚­ì œëœ ì—´ì˜ ê°’ì„ ì œê³µí•©ë‹ˆë‹¤." + +#: executor/nodeModifyTable.c:131 +#, c-format +msgid "Query has too few columns." +msgstr "ì¿¼ë¦¬ì— ì¹¼ëŸ¼ì´ ë„ˆë¬´ ì ìŠµë‹ˆë‹¤." + +#: executor/nodeModifyTable.c:1132 +#, c-format +msgid "ON CONFLICT DO UPDATE command cannot affect row a second time" +msgstr "" + +#: executor/nodeModifyTable.c:1133 +#, c-format +msgid "" +"Ensure that no rows proposed for insertion within the same command have " +"duplicate constrained values." +msgstr "" + +#: executor/nodeSamplescan.c:307 +#, c-format +msgid "TABLESAMPLE parameter cannot be null" +msgstr "TABLESAMPLE ì ˆì—는 반드시 부가 ì˜µì…˜ê°’ë“¤ì´ ìžˆì–´ì•¼ 합니다" + +#: executor/nodeSamplescan.c:320 +#, c-format +msgid "TABLESAMPLE REPEATABLE parameter cannot be null" +msgstr "TABLESAMPLE REPEATABLE ì ˆì€ ë” ì´ìƒì˜ 부가 ì˜µì…˜ì„ ì“°ë©´ 안ë©ë‹ˆë‹¤." + +#: executor/nodeSubplan.c:345 executor/nodeSubplan.c:384 +#: executor/nodeSubplan.c:1036 +#, c-format +msgid "more than one row returned by a subquery used as an expression" +msgstr "표현ì‹ì— ì‚¬ìš©ëœ ì„œë¸Œì¿¼ë¦¬ 결과가 하나 ì´ìƒì˜ í–‰ì„ ë¦¬í„´í–ˆìŠµë‹ˆë‹¤" + +#: executor/nodeWindowAgg.c:353 +#, c-format +msgid "moving-aggregate transition function must not return null" +msgstr "moving-aggregate transition 함수는 null ê°’ì„ ë°˜í™˜í•˜ë©´ 안ë©ë‹ˆë‹¤." + +#: executor/nodeWindowAgg.c:1642 +#, c-format +msgid "frame starting offset must not be null" +msgstr "프래임 시작 위치값으로 null ê°’ì„ ì‚¬ìš©í•  수 없습니다." + +#: executor/nodeWindowAgg.c:1655 +#, c-format +msgid "frame starting offset must not be negative" +msgstr "프래임 시작 위치으로 ìŒìˆ˜ ê°’ì„ ì‚¬ìš©í•  수 없습니다." + +#: executor/nodeWindowAgg.c:1668 +#, c-format +msgid "frame ending offset must not be null" +msgstr "프래임 ë 위치값으로 null ê°’ì„ ì‚¬ìš©í•  수 없습니다." + +#: executor/nodeWindowAgg.c:1681 +#, c-format +msgid "frame ending offset must not be negative" +msgstr "프래임 ë 위치값으로 ìŒìˆ˜ ê°’ì„ ì‚¬ìš©í•  수 없습니다." + +#: executor/spi.c:210 +#, c-format +msgid "transaction left non-empty SPI stack" +msgstr "íŠ¸ëžœìž­ì…˜ì´ ë¹„ì–´ìžˆì§€ ì•Šì€ SPI 스íƒì„ 남겼습니다" + +#: executor/spi.c:211 executor/spi.c:275 +#, c-format +msgid "Check for missing \"SPI_finish\" calls." +msgstr "\"SPI_finish\" í˜¸ì¶œì´ ë¹ ì¡ŒëŠ”ì§€ 확ì¸í•˜ì„¸ìš”" + +#: executor/spi.c:274 +#, c-format +msgid "subtransaction left non-empty SPI stack" +msgstr "하위 íŠ¸ëžœìž­ì…˜ì´ ë¹„ì–´ìžˆì§€ ì•Šì€ SPI 스íƒì„ 남겼습니다" + +#: executor/spi.c:1225 +#, c-format +msgid "cannot open multi-query plan as cursor" +msgstr "멀티 쿼리를 커서로 ì—´ 수는 없습니다" + +#. translator: %s is name of a SQL command, eg INSERT +#: executor/spi.c:1230 +#, c-format +msgid "cannot open %s query as cursor" +msgstr "%s 쿼리로 커서를 ì—´ 수 ì—†ìŒ." + +#: executor/spi.c:1338 +#, c-format +msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE는 ì§€ì›ë˜ì§€ 않ìŒ" + +#: executor/spi.c:1339 parser/analyze.c:2360 +#, c-format +msgid "Scrollable cursors must be READ ONLY." +msgstr "스í¬ë¡¤ 가능 커서는 READ ONLY여야 합니다." + +#: executor/spi.c:2459 +#, c-format +msgid "SQL statement \"%s\"" +msgstr "SQL 구문: \"%s\"" + +#: executor/tqueue.c:317 +#, c-format +msgid "could not send tuple to shared-memory queue" +msgstr "공유 메모리 í로 íŠœí”Œì„ ë³´ë‚¼ 수 ì—†ìŒ" + +#: foreign/foreign.c:192 +#, c-format +msgid "user mapping not found for \"%s\"" +msgstr "\"%s\"ì— ëŒ€í•œ ì‚¬ìš©ìž ë§¤í•‘ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: foreign/foreign.c:644 +#, c-format +msgid "invalid option \"%s\"" +msgstr "\"%s\" ì˜µì…˜ì´ ìž˜ëª»ë¨" + +#: foreign/foreign.c:645 +#, c-format +msgid "Valid options in this context are: %s" +msgstr "ì´ ì»¨í…스트ì—서 유효한 옵션: %s" + +#: lib/stringinfo.c:259 +#, c-format +msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes." +msgstr "%dë°”ì´íŠ¸ê°€ í¬í•¨ëœ 문ìžì—´ 버í¼ë¥¼ %dë°”ì´íЏ ë” í™•ìž¥í•  수 없습니다." + +#: libpq/auth.c:254 +#, c-format +msgid "authentication failed for user \"%s\": host rejected" +msgstr "ì‚¬ìš©ìž \"%s\"ì˜ ì¸ì¦ì„ 실패했습니다: 호스트 ê±°ë¶€ë¨" + +#: libpq/auth.c:257 +#, c-format +msgid "\"trust\" authentication failed for user \"%s\"" +msgstr "ì‚¬ìš©ìž \"%s\"ì˜ \"trust\" ì¸ì¦ì„ 실패했습니다." + +#: libpq/auth.c:260 +#, c-format +msgid "Ident authentication failed for user \"%s\"" +msgstr "ì‚¬ìš©ìž \"%s\"ì˜ Ident ì¸ì¦ì„ 실패했습니다." + +#: libpq/auth.c:263 +#, c-format +msgid "Peer authentication failed for user \"%s\"" +msgstr "ì‚¬ìš©ìž \"%s\"ì˜ peer ì¸ì¦ì„ 실패했습니다." + +#: libpq/auth.c:267 +#, c-format +msgid "password authentication failed for user \"%s\"" +msgstr "ì‚¬ìš©ìž \"%s\"ì˜ password ì¸ì¦ì„ 실패했습니다" + +#: libpq/auth.c:272 +#, c-format +msgid "GSSAPI authentication failed for user \"%s\"" +msgstr "\"%s\" 사용ìžì— 대한 GSSAPI ì¸ì¦ì„ 실패했습니다." + +#: libpq/auth.c:275 +#, c-format +msgid "SSPI authentication failed for user \"%s\"" +msgstr "\"%s\" 사용ìžì— 대한 SSPI ì¸ì¦ì„ 실패했습니다." + +#: libpq/auth.c:278 +#, c-format +msgid "PAM authentication failed for user \"%s\"" +msgstr "ì‚¬ìš©ìž \"%s\"ì˜ PAM ì¸ì¦ì„ 실패했습니다." + +#: libpq/auth.c:281 +#, c-format +msgid "BSD authentication failed for user \"%s\"" +msgstr "\"%s\" 사용ìžì— 대한 BSD ì¸ì¦ì„ 실패했습니다." + +#: libpq/auth.c:284 +#, c-format +msgid "LDAP authentication failed for user \"%s\"" +msgstr "\"%s\" 사용ìžì˜ LDAP ì¸ì¦ì„ 실패했습니다." + +#: libpq/auth.c:287 +#, c-format +msgid "certificate authentication failed for user \"%s\"" +msgstr "ì‚¬ìš©ìž \"%s\"ì˜ ì¸ì¦ì„œ ì¸ì¦ì„ 실패했습니다" + +#: libpq/auth.c:290 +#, c-format +msgid "RADIUS authentication failed for user \"%s\"" +msgstr "ì‚¬ìš©ìž \"%s\"ì˜ RADIUS ì¸ì¦ì„ 실패했습니다." + +#: libpq/auth.c:293 +#, c-format +msgid "authentication failed for user \"%s\": invalid authentication method" +msgstr "ì‚¬ìš©ìž \"%s\"ì˜ ì¸ì¦ì„ 실패했습니다: ìž˜ëª»ëœ ì¸ì¦ 방법" + +#: libpq/auth.c:297 +#, c-format +msgid "Connection matched pg_hba.conf line %d: \"%s\"" +msgstr "pg_hba.conf 파ì¼ì˜ %d번째 ì¤„ì— ì§€ì •í•œ ì¸ì¦ ì„¤ì •ì´ ì‚¬ìš©ë¨: \"%s\"" + +#: libpq/auth.c:352 +#, c-format +msgid "connection requires a valid client certificate" +msgstr "ì—°ê²°ì— ìœ íš¨í•œ í´ë¼ì´ì–¸íЏ ì¸ì¦ì„œê°€ 필요함" + +#: libpq/auth.c:394 +#, c-format +msgid "" +"pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s" +msgstr "" +"호스트 \"%s\", ì‚¬ìš©ìž \"%s\", %s ì—°ê²°ì´ ë³µì œìš© 연결로는 pg_hba.conf íŒŒì¼ ì„¤ì •" +"ì— ë”°ë¼ ê±°ë¶€ë©ë‹ˆë‹¤" + +#: libpq/auth.c:396 libpq/auth.c:412 libpq/auth.c:470 libpq/auth.c:488 +msgid "SSL off" +msgstr "SSL 중지" + +#: libpq/auth.c:396 libpq/auth.c:412 libpq/auth.c:470 libpq/auth.c:488 +msgid "SSL on" +msgstr "SSL ë™ìž‘" + +#: libpq/auth.c:400 +#, c-format +msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\"" +msgstr "" +"호스트 \"%s\", ì‚¬ìš©ìž \"%s\" ì—°ê²°ì´ ë³µì œìš© 연결로는 pg_hba.conf íŒŒì¼ ì„¤ì •ì— " +"ë”°ë¼ ê±°ë¶€ë©ë‹ˆë‹¤" + +#: libpq/auth.c:409 +#, c-format +msgid "" +"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s" +"\", %s" +msgstr "" +"호스트 \"%s\", ì‚¬ìš©ìž \"%s\", ë°ì´í„°ë² ì´ìФ \"%s\", %s ì—°ê²°ì´ pg_hba.conf 파" +"ì¼ ì„¤ì •ì— ë”°ë¼ ê±°ë¶€ë©ë‹ˆë‹¤" + +#: libpq/auth.c:416 +#, c-format +msgid "" +"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\"" +msgstr "" +"호스트 \"%s\", ì‚¬ìš©ìž \"%s\", ë°ì´í„°ë² ì´ìФ \"%s\" ì—°ê²°ì´ pg_hba.conf íŒŒì¼ ì„¤" +"ì •ì— ë”°ë¼ ê±°ë¶€ë©ë‹ˆë‹¤" + +#: libpq/auth.c:445 +#, c-format +msgid "Client IP address resolved to \"%s\", forward lookup matches." +msgstr "" +"í´ë¼ì´ì–¸íЏ IP 주소가 \"%s\" ì´ë¦„으로 확ì¸ë¨, 호스트 ì´ë¦„ í™•ì¸ ê¸°ëŠ¥ìœ¼ë¡œ ë§žìŒ" + +#: libpq/auth.c:448 +#, c-format +msgid "Client IP address resolved to \"%s\", forward lookup not checked." +msgstr "" +"í´ë¼ì´ì–¸íЏ IP 주소가 \"%s\" ì´ë¦„으로 확ì¸ë¨, 호스트 ì´ë¦„ í™•ì¸ ê¸°ëŠ¥ 사용안함" + +#: libpq/auth.c:451 +#, c-format +msgid "Client IP address resolved to \"%s\", forward lookup does not match." +msgstr "" +"í´ë¼ì´ì–¸íЏ IP 주소가 \"%s\" ì´ë¦„으로 확ì¸ë¨, 호스트 ì´ë¦„ í™•ì¸ ê¸°ëŠ¥ìœ¼ë¡œ 틀림" + +#: libpq/auth.c:454 +#, c-format +msgid "Could not translate client host name \"%s\" to IP address: %s." +msgstr "\"%s\" í´ë¼ì´ì–¸íЏ 호스트 ì´ë¦„ì„ %s IP 주소로 전환할 수 ì—†ìŒ." + +#: libpq/auth.c:459 +#, c-format +msgid "Could not resolve client IP address to a host name: %s." +msgstr "í´ë¼ì´ì–¸íЏ IP 주소를 파악할 수 ì—†ìŒ: ëŒ€ìƒ í˜¸ìŠ¤íŠ¸ ì´ë¦„: %s" + +#: libpq/auth.c:468 +#, c-format +msgid "" +"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s" +"\", %s" +msgstr "" +"호스트 \"%s\", ì‚¬ìš©ìž \"%s\", %s ì—°ê²°ì´ ë³µì œìš© 연결로 pg_hba.conf 파ì¼ì— 설정" +"ë˜ì–´ 있지 않습니다" + +#: libpq/auth.c:475 +#, c-format +msgid "" +"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\"" +msgstr "" +"호스트 \"%s\", ì‚¬ìš©ìž \"%s\" ì—°ê²°ì´ ë³µì œìš© 연결로 pg_hba.conf 파ì¼ì— 설정ë˜" +"ì–´ 있지 않습니다" + +#: libpq/auth.c:485 +#, c-format +msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s" +msgstr "" +"호스트 \"%s\", ì‚¬ìš©ìž \"%s\", ë°ì´í„°ë² ì´ìФ \"%s\", %s ì—°ê²°ì— ëŒ€í•œ ì„¤ì •ì´ " +"pg_hba.conf 파ì¼ì— 없습니다." + +#: libpq/auth.c:493 +#, c-format +msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\"" +msgstr "" +"호스트 \"%s\", ì‚¬ìš©ìž \"%s\", ë°ì´í„°ë² ì´ìФ \"%s\" ì—°ê²°ì— ëŒ€í•œ ì„¤ì •ì´ pg_hba." +"conf 파ì¼ì— 없습니다." + +#: libpq/auth.c:536 libpq/hba.c:1178 +#, c-format +msgid "" +"MD5 authentication is not supported when \"db_user_namespace\" is enabled" +msgstr "\"db_user_namespace\"ê°€ 사용 가능한 경우 MD5 ì¸ì¦ì€ ì§€ì›ë˜ì§€ 않ìŒ" + +#: libpq/auth.c:670 +#, c-format +msgid "expected password response, got message type %d" +msgstr "메시지 타입 %d를 얻는 예ìƒëœ 암호 ì‘답" + +#: libpq/auth.c:698 +#, c-format +msgid "invalid password packet size" +msgstr "유효하지 ì•Šì€ ì•”í˜¸ 패킷 사ì´ì¦ˆ" + +#: libpq/auth.c:828 +#, c-format +msgid "GSSAPI is not supported in protocol version 2" +msgstr "프로토콜 버전 2ì—서는 GSSAPIê°€ ì§€ì›ë˜ì§€ 않ìŒ" + +#: libpq/auth.c:888 +#, c-format +msgid "expected GSS response, got message type %d" +msgstr "GSS ì‘ë‹µì´ í•„ìš”í•œë° ë©”ì‹œì§€ í˜•ì‹ %dì„(를) ë°›ìŒ" + +#: libpq/auth.c:949 +msgid "accepting GSS security context failed" +msgstr "GSS 보안 컨í…스트를 수ë½í•˜ì§€ 못함" + +#: libpq/auth.c:975 +msgid "retrieving GSS user name failed" +msgstr "GSS ì‚¬ìš©ìž ì´ë¦„ì„ ê²€ìƒ‰í•˜ì§€ 못함" + +#: libpq/auth.c:1094 +#, c-format +msgid "SSPI is not supported in protocol version 2" +msgstr "프로토콜 버전 2ì—서는 SSPIê°€ ì§€ì›ë˜ì§€ 않ìŒ" + +#: libpq/auth.c:1109 +msgid "could not acquire SSPI credentials" +msgstr "SSPI ìžê²© ì¦ëª…ì„ ê°€ì ¸ì˜¬ 수 ì—†ìŒ" + +#: libpq/auth.c:1127 +#, c-format +msgid "expected SSPI response, got message type %d" +msgstr "SSPI ì‘ë‹µì´ í•„ìš”í•œë° ë©”ì‹œì§€ í˜•ì‹ %dì„(를) ë°›ìŒ" + +#: libpq/auth.c:1199 +msgid "could not accept SSPI security context" +msgstr "SSPI 보안 컨í…스트를 수ë½í•  수 ì—†ìŒ" + +#: libpq/auth.c:1261 +msgid "could not get token from SSPI security context" +msgstr "SSPI 보안 컨í…스트ì—서 토í°ì„ 가져올 수 ì—†ìŒ" + +#: libpq/auth.c:1380 libpq/auth.c:1399 +#, c-format +msgid "could not translate name" +msgstr "ì´ë¦„ì„ ë³€í™˜í•  수 ì—†ìŒ" + +#: libpq/auth.c:1412 +#, c-format +msgid "realm name too long" +msgstr "realm ì´ë¦„ì´ ë„ˆë¬´ 긺" + +#: libpq/auth.c:1427 +#, c-format +msgid "translated account name too long" +msgstr "ë³€í™˜ëœ ì ‘ì†ìž ì´ë¦„ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤" + +#: libpq/auth.c:1613 +#, c-format +msgid "could not create socket for Ident connection: %m" +msgstr "Ident ì—°ê²°ì— ì†Œì¼“ì„ ìƒì„±í•  수 없습니다: %m" + +#: libpq/auth.c:1628 +#, c-format +msgid "could not bind to local address \"%s\": %m" +msgstr "로컬 주소 \"%s\"ì— ë°”ì¸ë“œí•  수 없습니다: %m" + +#: libpq/auth.c:1640 +#, c-format +msgid "could not connect to Ident server at address \"%s\", port %s: %m" +msgstr "주소 \"%s\", í¬íЏ %sì˜ Ident 서버ì—게 ì—°ê²°í•  수 없습니다: %m" + +#: libpq/auth.c:1662 +#, c-format +msgid "could not send query to Ident server at address \"%s\", port %s: %m" +msgstr "주소 \"%s\", í¬íЏ %sì˜ Ident 서버ì—게 질ì˜ë¥¼ 보낼 수 없습니다: %m" + +#: libpq/auth.c:1679 +#, c-format +msgid "" +"could not receive response from Ident server at address \"%s\", port %s: %m" +msgstr "주소 \"%s\", í¬íЏ %sì˜ Ident 서버로부터 ì‘ë‹µì„ ë°›ì§€ 못했습니다: %m" + +#: libpq/auth.c:1689 +#, c-format +msgid "invalidly formatted response from Ident server: \"%s\"" +msgstr "Ident 서버로부터 ìž˜ëª»ëœ í˜•íƒœì˜ ì‘답를 보냈습니다: \"%s\"" + +#: libpq/auth.c:1729 +#, c-format +msgid "peer authentication is not supported on this platform" +msgstr "ì´ í”Œëž«í¼ì—서는 peer ì¸ì¦ì´ ì§€ì›ë˜ì§€ 않ìŒ" + +#: libpq/auth.c:1733 +#, c-format +msgid "could not get peer credentials: %m" +msgstr "신뢰성 피어를 ì–»ì„ ìˆ˜ 없습니다: %m" + +#: libpq/auth.c:1742 +#, c-format +msgid "could not look up local user ID %ld: %s" +msgstr "UID %ld 해당하는 사용ìžë¥¼ ì°¾ì„ ìˆ˜ ì—†ìŒ: %s" + +#: libpq/auth.c:1826 libpq/auth.c:2152 libpq/auth.c:2512 +#, c-format +msgid "empty password returned by client" +msgstr "비어있는 암호는 í´ë¼ì´ì–¸íŠ¸ì— ì˜í•´ ëŒë ¤ë³´ëƒˆìŠµë‹ˆë‹¤" + +#: libpq/auth.c:1836 +#, c-format +msgid "error from underlying PAM layer: %s" +msgstr "잠재ì ì¸ PAM ë ˆì´ì–´ì—ì„œì˜ ì—러: %s" + +#: libpq/auth.c:1917 +#, c-format +msgid "could not create PAM authenticator: %s" +msgstr "PAM ì¸ì¦ìžë¥¼ ìƒì„±í•  수 없습니다: %s" + +#: libpq/auth.c:1928 +#, c-format +msgid "pam_set_item(PAM_USER) failed: %s" +msgstr "pam_set_item(PAM_USER) 실패: %s" + +#: libpq/auth.c:1939 +#, c-format +msgid "pam_set_item(PAM_RHOST) failed: %s" +msgstr "pam_set_item(PAM_RHOST) 실패: %s" + +#: libpq/auth.c:1950 +#, c-format +msgid "pam_set_item(PAM_CONV) failed: %s" +msgstr "pam_set_item(PAM_CONV) 실패: %s" + +#: libpq/auth.c:1961 +#, c-format +msgid "pam_authenticate failed: %s" +msgstr "PAM ì¸ì¦ 실패: %s" + +#: libpq/auth.c:1972 +#, c-format +msgid "pam_acct_mgmt failed: %s" +msgstr "pam_acct_mgmt 실패: %s" + +#: libpq/auth.c:1983 +#, c-format +msgid "could not release PAM authenticator: %s" +msgstr "PAM ì¸ì¦ìžë¥¼ 릴리즈할 수 없습니다: %s" + +#: libpq/auth.c:2048 +#, c-format +msgid "could not initialize LDAP: %m" +msgstr "LDAP 초기화 실패: %m" + +#: libpq/auth.c:2051 +#, c-format +msgid "could not initialize LDAP: error code %d" +msgstr "LDAP 초기화 실패: 오류번호 %d" + +#: libpq/auth.c:2061 +#, c-format +msgid "could not set LDAP protocol version: %s" +msgstr "LDAP 프로토콜 ë²„ì „ì„ ì§€ì •í•  수 ì—†ìŒ: %s" + +#: libpq/auth.c:2090 +#, c-format +msgid "could not load wldap32.dll" +msgstr "could not load wldap32.dll" + +#: libpq/auth.c:2098 +#, c-format +msgid "could not load function _ldap_start_tls_sA in wldap32.dll" +msgstr "could not load function _ldap_start_tls_sA in wldap32.dll" + +#: libpq/auth.c:2099 +#, c-format +msgid "LDAP over SSL is not supported on this platform." +msgstr "ì´ í”Œëž«í¼ì—서는 SSLì„ ì´ìš©í•œ LDAP ê¸°ëŠ¥ì„ ì§€ì›í•˜ì§€ 않ìŒ." + +#: libpq/auth.c:2114 +#, c-format +msgid "could not start LDAP TLS session: %s" +msgstr "LDAP TLS ì„¸ì…˜ì„ ì‹œìž‘í•  수 ì—†ìŒ: %s" + +#: libpq/auth.c:2136 +#, c-format +msgid "LDAP server not specified" +msgstr "LDAP 서버가 지정ë˜ì§€ 않ìŒ" + +#: libpq/auth.c:2189 +#, c-format +msgid "invalid character in user name for LDAP authentication" +msgstr "LDAP ì¸ì¦ì„ 위한 ì‚¬ìš©ìž ì´ë¦„ì— ì‚¬ìš©í•  수 없는 문ìžê°€ 있습니다" + +#: libpq/auth.c:2204 +#, c-format +msgid "" +"could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": " +"%s" +msgstr "" +"\"%s\" ldapbinddn (해당 서버: \"%s\") ì„¤ì •ì— ëŒ€í•œ LDAP ë°”ì¸ë“œ 초기화를 í•  수 " +"ì—†ìŒ: %s" + +#: libpq/auth.c:2228 +#, c-format +msgid "could not search LDAP for filter \"%s\" on server \"%s\": %s" +msgstr "\"%s\" 필터로 LDAP 검색 실패함, ëŒ€ìƒ ì„œë²„: \"%s\": %s" + +#: libpq/auth.c:2239 +#, c-format +msgid "LDAP user \"%s\" does not exist" +msgstr "\"%s\" LDAP 사용ìžê°€ ì—†ìŒ" + +#: libpq/auth.c:2240 +#, c-format +msgid "LDAP search for filter \"%s\" on server \"%s\" returned no entries." +msgstr "\"%s\" 필터로 \"%s\" 서버ì—서 LDAP ê²€ìƒ‰ì„ í–ˆìœ¼ë‚˜, 해당 ìžë£Œê°€ ì—†ìŒ" + +#: libpq/auth.c:2244 +#, c-format +msgid "LDAP user \"%s\" is not unique" +msgstr "\"%s\" LDAP 사용ìžê°€ 유ì¼í•˜ì§€ 않습니다" + +#: libpq/auth.c:2245 +#, c-format +msgid "LDAP search for filter \"%s\" on server \"%s\" returned %d entry." +msgid_plural "" +"LDAP search for filter \"%s\" on server \"%s\" returned %d entries." +msgstr[0] "\"%s\" 필터로 \"%s\" 서버ì—서 LDAP 검색 ê²°ê³¼ %d í•­ëª©ì„ ë°˜í™˜í•¨" + +#: libpq/auth.c:2263 +#, c-format +msgid "" +"could not get dn for the first entry matching \"%s\" on server \"%s\": %s" +msgstr "\"%s\" 첫번째 항목 조회용 dn ê°’ì„ \"%s\" 서버ì—서 ì°¾ì„ ìˆ˜ ì—†ìŒ: %s" + +#: libpq/auth.c:2283 +#, c-format +msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s" +msgstr "\"%s\" ì‚¬ìš©ìž ê²€ìƒ‰ 후 unbind ìž‘ì—…ì„ \"%s\" 서버ì—서 í•  수 ì—†ìŒ: %s" + +#: libpq/auth.c:2313 +#, c-format +msgid "LDAP login failed for user \"%s\" on server \"%s\": %s" +msgstr "\"%s\" 사용ìžì˜ \"%s\" LDAP 서버 ë¡œê·¸ì¸ ì‹¤íŒ¨: %s" + +#: libpq/auth.c:2341 +#, c-format +msgid "" +"certificate authentication failed for user \"%s\": client certificate " +"contains no user name" +msgstr "" +"\"%s\" 사용ìžì— 대한 ì¸ì¦ì„œ ë¡œê·¸ì¸ ì‹¤íŒ¨: í´ë¼ì´ì–¸íЏ ì¸ì¦ì„œì— ì‚¬ìš©ìž ì´ë¦„ì´ ì—†" +"ìŒ" + +#: libpq/auth.c:2468 +#, c-format +msgid "RADIUS server not specified" +msgstr "RADIUS 서버가 지정ë˜ì§€ 않ìŒ" + +#: libpq/auth.c:2475 +#, c-format +msgid "RADIUS secret not specified" +msgstr "RADIUS 비밀키가 지정ë˜ì§€ 않ìŒ" + +#: libpq/auth.c:2491 libpq/hba.c:1632 +#, c-format +msgid "could not translate RADIUS server name \"%s\" to address: %s" +msgstr "\"%s\" RADIUS 서버 ì´ë¦„ì„ ì£¼ì†Œë¡œ 바꿀 수 ì—†ìŒ: %s" + +#: libpq/auth.c:2519 +#, c-format +msgid "" +"RADIUS authentication does not support passwords longer than %d characters" +msgstr "RADIUS ì¸ì¦ì€ %d ê¸€ìž ë³´ë‹¤ í° ë¹„ë°€ë²ˆí˜¸ ì¸ì¦ì„ ì§€ì›í•˜ì§€ 않습니다" + +#: libpq/auth.c:2531 +#, c-format +msgid "could not generate random encryption vector" +msgstr "무작위 암호화 벡터를 만들 수 ì—†ìŒ" + +#: libpq/auth.c:2569 +#, c-format +msgid "could not perform MD5 encryption of password" +msgstr "ë¹„ë°€ë²ˆí˜¸ì˜ MD5 암호를 만들 수 ì—†ìŒ" + +# translator: %s is IPv4, IPv6, or Unix +#: libpq/auth.c:2594 +#, c-format +msgid "could not create RADIUS socket: %m" +msgstr "RADIUS ì†Œì¼“ì„ ìƒì„±í•  수 없습니다: %m" + +# translator: %s is IPv4, IPv6, or Unix +#: libpq/auth.c:2615 +#, c-format +msgid "could not bind local RADIUS socket: %m" +msgstr "RADIUS ì†Œì¼“ì— ë°”ì¸ë“œí•  수 없습니다: %m" + +#: libpq/auth.c:2625 +#, c-format +msgid "could not send RADIUS packet: %m" +msgstr "RADIUS íŒ¨í‚·ì„ ë³´ë‚¼ 수 ì—†ìŒ: %m" + +#: libpq/auth.c:2658 libpq/auth.c:2683 +#, c-format +msgid "timeout waiting for RADIUS response" +msgstr "서버 ì‹œìž‘ì„ ê¸°ë‹¤ë¦¬ëŠ” ë™ì•ˆ 시간 초과ë¨" + +# translator: %s is IPv4, IPv6, or Unix +#: libpq/auth.c:2676 +#, c-format +msgid "could not check status on RADIUS socket: %m" +msgstr "RADIUS 소켓 ìƒíƒœë¥¼ 확ì¸í•  수 ì—†ìŒ: %m" + +#: libpq/auth.c:2705 +#, c-format +msgid "could not read RADIUS response: %m" +msgstr "RADIUS ì‘ë‹µì„ ì½ì„ 수 ì—†ìŒ: %m" + +#: libpq/auth.c:2717 libpq/auth.c:2721 +#, c-format +msgid "RADIUS response was sent from incorrect port: %d" +msgstr "RADIUS ì‘ë‹µì´ ë°”ë¥´ì§€ ì•Šì€ í¬íŠ¸ë¡œë¶€í„° 보내졌ìŒ: %d" + +#: libpq/auth.c:2730 +#, c-format +msgid "RADIUS response too short: %d" +msgstr "RADIUS ì‘ë‹µì´ ë„ˆë¬´ ì§§ìŒ: %d" + +#: libpq/auth.c:2737 +#, c-format +msgid "RADIUS response has corrupt length: %d (actual length %d)" +msgstr "RADIUS ì‘답 길ì´ê°€ ì´ìƒí•¨: %d (실재 길ì´: %d)" + +#: libpq/auth.c:2745 +#, c-format +msgid "RADIUS response is to a different request: %d (should be %d)" +msgstr "RADIUS ì‘ë‹µì´ ìš”ì²­ê³¼ 다름: %d (기대값: %d)" + +#: libpq/auth.c:2770 +#, c-format +msgid "could not perform MD5 encryption of received packet" +msgstr "ë°›ì€ íŒ¨í‚·ì„ ëŒ€ìƒìœ¼ë¡œ MD5 암호화 작업할 수 ì—†ìŒ" + +#: libpq/auth.c:2779 +#, c-format +msgid "RADIUS response has incorrect MD5 signature" +msgstr "RADIUS ì‘ë‹µì˜ MD5 ê°’ì´ ì´ìƒí•¨" + +#: libpq/auth.c:2796 +#, c-format +msgid "RADIUS response has invalid code (%d) for user \"%s\"" +msgstr "RADIUS ì‘ë‹µì´ ë°”ë¥´ì§€ ì•Šì€ ê°’ìž„ (%d), ëŒ€ìƒ ì‚¬ìš©ìž: \"%s\"" + +#: libpq/be-fsstubs.c:132 libpq/be-fsstubs.c:163 libpq/be-fsstubs.c:197 +#: libpq/be-fsstubs.c:237 libpq/be-fsstubs.c:262 libpq/be-fsstubs.c:310 +#: libpq/be-fsstubs.c:333 libpq/be-fsstubs.c:581 +#, c-format +msgid "invalid large-object descriptor: %d" +msgstr "유효하지 ì•Šì€ ëŒ€í˜• ê°ì²´ 설명: %d" + +#: libpq/be-fsstubs.c:178 libpq/be-fsstubs.c:216 libpq/be-fsstubs.c:600 +#: libpq/be-fsstubs.c:788 +#, c-format +msgid "permission denied for large object %u" +msgstr "%u 대형 ê°ì²´ì— 대한 ì ‘ê·¼ 권한 ì—†ìŒ" + +#: libpq/be-fsstubs.c:203 libpq/be-fsstubs.c:587 +#, c-format +msgid "large object descriptor %d was not opened for writing" +msgstr "%d번 대형 ê°ì²´ 기술ìžê°€ 쓰기 모드로 열려있지 않습니다" + +#: libpq/be-fsstubs.c:245 +#, c-format +msgid "lo_lseek result out of range for large-object descriptor %d" +msgstr "%d번 대형 ê°ì²´ 기술ìžì— 대한 lo_lseek ë°˜í™˜ê°’ì´ ë²”ìœ„ë¥¼ 벗어남" + +#: libpq/be-fsstubs.c:318 +#, c-format +msgid "lo_tell result out of range for large-object descriptor %d" +msgstr "%d번 대형 ê°ì²´ 기술ìžì— 대한 lo_tell ë°˜í™˜ê°’ì´ ë²”ìœ„ë¥¼ 벗어남" + +#: libpq/be-fsstubs.c:455 +#, c-format +msgid "must be superuser to use server-side lo_import()" +msgstr "서버 측 lo_import() í˜¸ì¶œì„ í•˜ë ¤ë©´, 슈í¼ìœ ì €ì—¬ì•¼ 합니다" + +#: libpq/be-fsstubs.c:456 +#, c-format +msgid "Anyone can use the client-side lo_import() provided by libpq." +msgstr "" +"libpq ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ì´ìš©í•œ í´ë¼ì´ì–¸íЏ 측 lo_import() í˜¸ì¶œì€ ì•„ë¬´ë‚˜ í•  수 있습" +"니다." + +#: libpq/be-fsstubs.c:469 +#, c-format +msgid "could not open server file \"%s\": %m" +msgstr "서버 íŒŒì¼ \"%s\"ì„ ì—´ 수 없습니다: %m" + +#: libpq/be-fsstubs.c:491 +#, c-format +msgid "could not read server file \"%s\": %m" +msgstr "서버 íŒŒì¼ \"%s\"ì„ ì½ì„ 수 없습니다: %m" + +#: libpq/be-fsstubs.c:521 +#, c-format +msgid "must be superuser to use server-side lo_export()" +msgstr "서버 측 lo_export()는 슈í¼ìœ ì €ë§Œ 가능하다" + +#: libpq/be-fsstubs.c:522 +#, c-format +msgid "Anyone can use the client-side lo_export() provided by libpq." +msgstr "아무나 libpqì— ì˜í•´ 제공ë˜ëŠ” í´ë¼ì´ì–¸íЏ 측 lo_export 를 사용할 수 있다" + +#: libpq/be-fsstubs.c:547 +#, c-format +msgid "could not create server file \"%s\": %m" +msgstr "서버 íŒŒì¼ \"%s\"ì˜ ìƒì„±ì„ í•  수 없습니다: %m" + +#: libpq/be-fsstubs.c:559 +#, c-format +msgid "could not write server file \"%s\": %m" +msgstr "서버 íŒŒì¼ \"%s\"ì— ì“¸ 수 없습니다: %m" + +#: libpq/be-fsstubs.c:813 +#, c-format +msgid "large object read request is too large" +msgstr "대형 ê°ì²´ ì½ê¸° ìš”ì²­ì´ ë„ˆë¬´ í½ë‹ˆë‹¤" + +#: libpq/be-fsstubs.c:855 utils/adt/genfile.c:211 utils/adt/genfile.c:252 +#, c-format +msgid "requested length cannot be negative" +msgstr "요청한 길ì´ëŠ” ìŒìˆ˜ì¼ 수 ì—†ìŒ" + +#: libpq/be-secure-openssl.c:189 +#, c-format +msgid "could not create SSL context: %s" +msgstr "SSL 컨í…스트 정보를 ìƒì„±í•  수 없습니다: %s" + +#: libpq/be-secure-openssl.c:205 +#, c-format +msgid "could not load server certificate file \"%s\": %s" +msgstr "서버 ì¸ì¦ì„œ íŒŒì¼ \"%s\"ì„ ë¶ˆëŸ¬ë“¤ì¼ ìˆ˜ 없습니다: %s" + +#: libpq/be-secure-openssl.c:211 +#, c-format +msgid "could not access private key file \"%s\": %m" +msgstr "비밀키 \"%s\"ì— ì•¡ì„¸ìŠ¤í•  수 없습니다: %m" + +#: libpq/be-secure-openssl.c:217 +#, c-format +msgid "private key file \"%s\" is not a regular file" +msgstr "\"%s\" ê°œì¸ í‚¤ 파ì¼ì€ ì¼ë°˜ 파ì¼ì´ 아님" + +#: libpq/be-secure-openssl.c:229 +#, c-format +msgid "private key file \"%s\" must be owned by the database user or root" +msgstr "" +"\"%s\" ê°œì¸ í‚¤ 파ì¼ì˜ 소유주는 ë°ì´í„°ë² ì´ìФ 사용ìžì´ê±°ë‚˜ root 여야 합니다." + +#: libpq/be-secure-openssl.c:249 +#, c-format +msgid "private key file \"%s\" has group or world access" +msgstr "\"%s\" ê°œì¸ í‚¤ 파ì¼ì— 그룹 ë˜ëŠ” ìµëª… 액세스 ê¶Œí•œì´ ìžˆìŒ" + +#: libpq/be-secure-openssl.c:251 +#, c-format +msgid "" +"File must have permissions u=rw (0600) or less if owned by the database " +"user, or permissions u=rw,g=r (0640) or less if owned by root." +msgstr "" +"파ì¼ì˜ 소유주가 ë°ì´í„°ë² ì´ìФ 서버 ìš´ì˜ ê³„ì •ê³¼ 같다면, ì ‘ê·¼ ê¶Œí•œì„ u=rw " +"(0600) ë˜ëŠ” ë” ìž‘ê²Œ 설정하고, rootê°€ 소유주ë¼ë©´ u=rw,g=r (0640) 권한으로 지정" +"하세요" + +#: libpq/be-secure-openssl.c:258 +#, c-format +msgid "could not load private key file \"%s\": %s" +msgstr "비밀키 íŒŒì¼ \"%s\"ì„ ë¶ˆëŸ¬ë“¤ì¼ ìˆ˜ 없습니다: %s" + +#: libpq/be-secure-openssl.c:263 +#, c-format +msgid "check of private key failed: %s" +msgstr "ë¹„ë°€í‚¤ì˜ í™•ì¸ ì‹¤íŒ¨: %s" + +#: libpq/be-secure-openssl.c:292 +#, c-format +msgid "could not load root certificate file \"%s\": %s" +msgstr "root ì¸ì¦ì„œ íŒŒì¼ \"%s\"ì„ ë¶ˆëŸ¬ë“¤ì¼ ìˆ˜ 없습니다: %s" + +#: libpq/be-secure-openssl.c:316 +#, c-format +msgid "SSL certificate revocation list file \"%s\" ignored" +msgstr "\"%s\" SSL ì¸ì¦ì„œ 파기 ëª©ë¡ íŒŒì¼ì´ 무시ë˜ì—ˆìŒ" + +#: libpq/be-secure-openssl.c:318 +#, c-format +msgid "SSL library does not support certificate revocation lists." +msgstr "SSL ë¼ì´ë¸ŒëŸ¬ë¦¬ê°€ ì¸ì¦ì„œ 파기 목ë¡ì„ ì§€ì›í•˜ì§€ 않습니다." + +#: libpq/be-secure-openssl.c:323 +#, c-format +msgid "could not load SSL certificate revocation list file \"%s\": %s" +msgstr "\"%s\" SSL ì¸ì¦ì„œ 회수 ëª©ë¡ íŒŒì¼ì„ ë¶ˆëŸ¬ë“¤ì¼ ìˆ˜ 없습니다: %s" + +#: libpq/be-secure-openssl.c:370 +#, c-format +msgid "could not initialize SSL connection: %s" +msgstr "SSLì—°ê²°ì„ ì´ˆê¸°í™”í•  수 없습니다: %s" + +#: libpq/be-secure-openssl.c:378 +#, c-format +msgid "could not set SSL socket: %s" +msgstr "SSL ì†Œì¼“ì„ ì§€ì •í•  수 없습니다: %s" + +#: libpq/be-secure-openssl.c:432 +#, c-format +msgid "could not accept SSL connection: %m" +msgstr "SSL ì—°ê²°ì„ ë°›ì•„ë“œë¦´ 수 없습니다: %m" + +#: libpq/be-secure-openssl.c:436 libpq/be-secure-openssl.c:447 +#, c-format +msgid "could not accept SSL connection: EOF detected" +msgstr "SSL ì—°ê²°ì„ ë°›ì•„ë“œë¦´ 수 없습니다: EOF ê°ì§€ë¨" + +#: libpq/be-secure-openssl.c:441 +#, c-format +msgid "could not accept SSL connection: %s" +msgstr "SSL ì—°ê²°ì„ ë°›ì•„ë“œë¦´ 수 없습니다: %s" + +#: libpq/be-secure-openssl.c:452 libpq/be-secure-openssl.c:593 +#: libpq/be-secure-openssl.c:653 +#, c-format +msgid "unrecognized SSL error code: %d" +msgstr "ì¸ì‹ë˜ì§€ ì•Šì€ SSL ì—러 코드 %d" + +#: libpq/be-secure-openssl.c:496 +#, c-format +msgid "SSL certificate's common name contains embedded null" +msgstr "SSL ì¸ì¦ì„œì˜ ì¼ë°˜ ì´ë¦„ì— í¬í•¨ëœ nullì´ ìžˆìŒ" + +#: libpq/be-secure-openssl.c:507 +#, c-format +msgid "SSL connection from \"%s\"" +msgstr "\"%s\" ë¡œë¶€í„°ì˜ SSL ì—°ê²°" + +#: libpq/be-secure-openssl.c:584 libpq/be-secure-openssl.c:644 +#, c-format +msgid "SSL error: %s" +msgstr "SSL ì—러: %s" + +#: libpq/be-secure-openssl.c:1055 +#, c-format +msgid "ECDH: unrecognized curve name: %s" +msgstr "ECDH: 알 수 없는 curve ì´ë¦„: %s" + +#: libpq/be-secure-openssl.c:1060 +#, c-format +msgid "ECDH: could not create key" +msgstr "ECDH: 키 ìƒì„± 실패" + +#: libpq/be-secure-openssl.c:1084 +msgid "no SSL error reported" +msgstr "SSL 오류 ì—†ìŒ" + +#: libpq/be-secure-openssl.c:1088 +#, c-format +msgid "SSL error code %lu" +msgstr "SSL 오류 번호 %lu" + +#: libpq/be-secure.c:171 libpq/be-secure.c:256 +#, c-format +msgid "terminating connection due to unexpected postmaster exit" +msgstr "postmasterì˜ ì˜ˆìƒì¹˜ 못한 종료로 ì—°ê²°ì„ ì¢…ë£Œí•©ë‹ˆë‹¤" + +#: libpq/crypt.c:54 +#, c-format +msgid "Role \"%s\" does not exist." +msgstr "\"%s\" 롤 ì—†ìŒ" + +#: libpq/crypt.c:64 +#, c-format +msgid "User \"%s\" has no password assigned." +msgstr "\"%s\" ì‚¬ìš©ìž ë¹„ë°€ë²ˆí˜¸ê°€ ì•„ì§ í• ë‹¹ë˜ì§€ 않ìŒ" + +#: libpq/crypt.c:79 +#, c-format +msgid "User \"%s\" has an empty password." +msgstr "\"%s\" ì‚¬ìš©ìž ë¹„ë°€ë²ˆí˜¸ê°€ 설정ë˜ì–´ 있지 않습니다." + +#: libpq/crypt.c:159 +#, c-format +msgid "User \"%s\" has an expired password." +msgstr "\"%s\" ì‚¬ìš©ìž ë¹„ë°€ë²ˆí˜¸ê°€ 기한 만료ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: libpq/crypt.c:167 +#, c-format +msgid "Password does not match for user \"%s\"." +msgstr "\"%s\" 사용ìžì˜ 비밀번호가 틀립니다." + +#: libpq/hba.c:188 +#, c-format +msgid "authentication file token too long, skipping: \"%s\"" +msgstr "ì¸ì¦ 파ì¼ì˜ 토í°ì´ 너무 길어서 건너ëœë‹ˆë‹¤: \"%s\"" + +#: libpq/hba.c:332 +#, c-format +msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m" +msgstr "2ì°¨ ì¸ì¦íŒŒì¼ \"%s\"으로 \"@%s\"를 ì—´ 수 없다: %m" + +#: libpq/hba.c:407 +#, c-format +msgid "authentication file line too long" +msgstr "ì¸ì¦ íŒŒì¼ ì¤„ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤" + +#: libpq/hba.c:408 libpq/hba.c:755 libpq/hba.c:771 libpq/hba.c:801 +#: libpq/hba.c:847 libpq/hba.c:860 libpq/hba.c:882 libpq/hba.c:891 +#: libpq/hba.c:912 libpq/hba.c:924 libpq/hba.c:943 libpq/hba.c:964 +#: libpq/hba.c:975 libpq/hba.c:1030 libpq/hba.c:1048 libpq/hba.c:1060 +#: libpq/hba.c:1077 libpq/hba.c:1087 libpq/hba.c:1101 libpq/hba.c:1117 +#: libpq/hba.c:1132 libpq/hba.c:1143 libpq/hba.c:1179 libpq/hba.c:1217 +#: libpq/hba.c:1228 libpq/hba.c:1248 libpq/hba.c:1259 libpq/hba.c:1276 +#: libpq/hba.c:1325 libpq/hba.c:1362 libpq/hba.c:1372 libpq/hba.c:1428 +#: libpq/hba.c:1440 libpq/hba.c:1453 libpq/hba.c:1545 libpq/hba.c:1634 +#: libpq/hba.c:1652 libpq/hba.c:1673 tsearch/ts_locale.c:182 +#, c-format +msgid "line %d of configuration file \"%s\"" +msgstr "%d번째 줄(\"%s\" 환경 설정 파ì¼)" + +#. translator: the second %s is a list of auth methods +#: libpq/hba.c:753 +#, c-format +msgid "" +"authentication option \"%s\" is only valid for authentication methods %s" +msgstr "\"%s\" ì¸ì¦ ì˜µì…˜ì€ %s ì¸ì¦ 방법ì—ë§Œ 유효함" + +#: libpq/hba.c:769 +#, c-format +msgid "authentication method \"%s\" requires argument \"%s\" to be set" +msgstr "\"%s\" ì¸ì¦ ë°©ë²•ì˜ ê²½ìš° \"%s\" ì¸ìžë¥¼ 설정해야 함" + +#: libpq/hba.c:790 +#, c-format +msgid "missing entry in file \"%s\" at end of line %d" +msgstr "\"%s\" 파ì¼ì˜ %d번째 ì¤„ì˜ ë ë¼ì¸ì— ë¹ ì§„ 엔트리가 있습니다 " + +#: libpq/hba.c:800 +#, c-format +msgid "multiple values in ident field" +msgstr "ident ìžë¦¬ì— 여러 ê°’ì´ ìžˆìŒ" + +#: libpq/hba.c:845 +#, c-format +msgid "multiple values specified for connection type" +msgstr "ì—°ê²° í˜•ì‹ ìžë¦¬ì— 여러 ê°’ì´ ìžˆìŒ" + +#: libpq/hba.c:846 +#, c-format +msgid "Specify exactly one connection type per line." +msgstr "한 ì¤„ì— í•˜ë‚˜ì˜ ì—°ê²° 형태만 지정해야 합니다" + +#: libpq/hba.c:859 +#, c-format +msgid "local connections are not supported by this build" +msgstr "로컬 ì ‘ì† ê¸°ëŠ¥ì„ ëº€ 채로 서버가 만들어졌습니다." + +#: libpq/hba.c:880 +#, c-format +msgid "hostssl requires SSL to be turned on" +msgstr "hostssl ì ‘ì†ì€ SSL ê¸°ëŠ¥ì´ í™œì„±í™” ë˜ì–´ 있어야 합니다" + +#: libpq/hba.c:881 +#, c-format +msgid "Set ssl = on in postgresql.conf." +msgstr "postgresql.conf 파ì¼ì— ssl = on ì„¤ì •ì„ í•˜ì„¸ìš”." + +#: libpq/hba.c:889 +#, c-format +msgid "hostssl is not supported by this build" +msgstr "ì´ ì„œë²„ëŠ” hostssl ì ‘ì† ê¸°ëŠ¥ì„ ì§€ì›í•˜ì§€ 않습니다." + +#: libpq/hba.c:890 +#, c-format +msgid "Compile with --with-openssl to use SSL connections." +msgstr "" +"SSL ì—°ê²°ì„ ì‚¬ìš©í•˜ê¸° 위해 --enable-ssl ì˜µì…˜ì„ ì‚¬ìš©í•´ì„œ 서버를 다시 ì»´íŒŒì¼ í•˜ì„¸" +"ìš”" + +#: libpq/hba.c:910 +#, c-format +msgid "invalid connection type \"%s\"" +msgstr "\"%s\" ê°’ì€ ìž˜ëª»ëœ ì—°ê²° 형ì‹ìž…니다" + +#: libpq/hba.c:923 +#, c-format +msgid "end-of-line before database specification" +msgstr "ë°ì´í„°ë² ì´ìФ 지정 ì „ì— ì¤„ ëì— ë„달함" + +#: libpq/hba.c:942 +#, c-format +msgid "end-of-line before role specification" +msgstr "롤 지정 ì „ì— ì¤„ ëì— ë„달함" + +#: libpq/hba.c:963 +#, c-format +msgid "end-of-line before IP address specification" +msgstr "IP 주소 지정 ì „ì— ì¤„ ëì— ë„달함" + +#: libpq/hba.c:973 +#, c-format +msgid "multiple values specified for host address" +msgstr "호스트 주소 ë¶€ë¶„ì— ì—¬ëŸ¬ ê°’ì´ ì§€ì •ë¨" + +#: libpq/hba.c:974 +#, c-format +msgid "Specify one address range per line." +msgstr "한 ì¤„ì— í•˜ë‚˜ì˜ ì£¼ì†Œ 범위가 있어야 합니다." + +#: libpq/hba.c:1028 +#, c-format +msgid "invalid IP address \"%s\": %s" +msgstr "\"%s\" 형태는 ìž˜ëª»ëœ IP 주소 형태입니다: %s" + +#: libpq/hba.c:1046 +#, c-format +msgid "specifying both host name and CIDR mask is invalid: \"%s\"" +msgstr "호스트 ì´ë¦„ê³¼ CIDR 마스í¬ëŠ” 함께 쓸 수 없습니다: \"%s\"" + +#: libpq/hba.c:1058 +#, c-format +msgid "invalid CIDR mask in address \"%s\"" +msgstr "\"%s\" ì£¼ì†Œì— ìž˜ëª»ëœ CIDR 마스í¬ê°€ 있ìŒ" + +#: libpq/hba.c:1075 +#, c-format +msgid "end-of-line before netmask specification" +msgstr "ë„·ë§ˆìŠ¤í¬ ì§€ì • ì „ì— ì¤„ ëì— ë„달함" + +#: libpq/hba.c:1076 +#, c-format +msgid "" +"Specify an address range in CIDR notation, or provide a separate netmask." +msgstr "주소 범위는 CIDR í‘œê¸°ë²•ì„ ì“°ê±°ë‚˜ ë„·ë§ˆìŠ¤í¬ í‘œê¸°ë²•ì„ ì“°ì„¸ìš”" + +#: libpq/hba.c:1086 +#, c-format +msgid "multiple values specified for netmask" +msgstr "ë„·ë§ˆìŠ¤í¬ ë¶€ë¶„ì— ì—¬ëŸ¬ ê°’ì´ ì§€ì •ë¨" + +#: libpq/hba.c:1099 +#, c-format +msgid "invalid IP mask \"%s\": %s" +msgstr "ìž˜ëª»ëœ IP 마스í¬, \"%s\": %s" + +#: libpq/hba.c:1116 +#, c-format +msgid "IP address and mask do not match" +msgstr "IP 주소와 마스í¬ê°€ ë§žì§€ 않습니다" + +#: libpq/hba.c:1131 +#, c-format +msgid "end-of-line before authentication method" +msgstr "ì¸ì¦ 방법 ì „ì— ì¤„ ëì— ë„달함" + +#: libpq/hba.c:1141 +#, c-format +msgid "multiple values specified for authentication type" +msgstr "ì¸ì¦ 방법 ë¶€ë¶„ì— ì—¬ëŸ¬ ê°’ì´ ì§€ì •ë¨" + +#: libpq/hba.c:1142 +#, c-format +msgid "Specify exactly one authentication type per line." +msgstr "í•˜ë‚˜ì˜ ì¸ì¦ ë°©ë²•ì— ëŒ€í•´ì„œ 한 줄씩 지정해야 합니다" + +#: libpq/hba.c:1215 +#, c-format +msgid "invalid authentication method \"%s\"" +msgstr "\"%s\" ì¸ì¦ ë°©ë²•ì´ ìž˜ëª»ë¨" + +#: libpq/hba.c:1226 +#, c-format +msgid "invalid authentication method \"%s\": not supported by this build" +msgstr "\"%s\" ì¸ì¦ ë°©ë²•ì´ ìž˜ëª»ë¨: ì´ ì„œë²„ì—서 ì§€ì›ë˜ì§€ 않ìŒ" + +#: libpq/hba.c:1247 +#, c-format +msgid "gssapi authentication is not supported on local sockets" +msgstr "gssapi ì¸ì¦ì€ 로컬 소켓ì—서 ì§€ì›ë˜ì§€ 않ìŒ" + +#: libpq/hba.c:1258 +#, c-format +msgid "peer authentication is only supported on local sockets" +msgstr "peer ì¸ì¦ì€ 로컬 소켓ì—서만 ì§€ì›í•¨" + +#: libpq/hba.c:1275 +#, c-format +msgid "cert authentication is only supported on hostssl connections" +msgstr "cert ì¸ì¦ì€ hostssl ì—°ê²°ì—서만 ì§€ì›ë¨" + +#: libpq/hba.c:1324 +#, c-format +msgid "authentication option not in name=value format: %s" +msgstr "ì¸ì¦ ì˜µì…˜ì´ ì´ë¦„=ê°’ 형태가 아님: %s" + +#: libpq/hba.c:1361 +#, c-format +msgid "" +"cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, or " +"ldapurl together with ldapprefix" +msgstr "" +"ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute, ldapurl ì˜µì…˜ì€ " +"ldapprefix 옵션과 함께 사용할 수 ì—†ìŒ" + +#: libpq/hba.c:1371 +#, c-format +msgid "" +"authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix" +"\", or \"ldapsuffix\" to be set" +msgstr "" +"\"ldap\" ì¸ì¦ ë°©ë²•ì˜ ê²½ìš° \"ldapbasedn\", \"ldapprefix\", \"ldapsuffix\"옵션" +"ì´ ìžˆì–´ì•¼ 함" + +#: libpq/hba.c:1414 +msgid "ident, peer, gssapi, sspi, and cert" +msgstr "ident, peer, gssapi, sspi ë° cert" + +#: libpq/hba.c:1427 +#, c-format +msgid "clientcert can only be configured for \"hostssl\" rows" +msgstr "clientcert는 \"hostssl\" í–‰ì— ëŒ€í•´ì„œë§Œ 구성할 수 있ìŒ" + +#: libpq/hba.c:1438 +#, c-format +msgid "" +"client certificates can only be checked if a root certificate store is " +"available" +msgstr "" +"루트 ì¸ì¦ì„œ 저장소가 사용 가능한 경우ì—ë§Œ í´ë¼ì´ì–¸íЏ ì¸ì¦ì„œë¥¼ 검사할 수 있ìŒ" + +#: libpq/hba.c:1452 +#, c-format +msgid "clientcert can not be set to 0 when using \"cert\" authentication" +msgstr "\"cert\" ì¸ì¦ì„ 사용하는 경우 clientcert를 0으로 설정할 수 ì—†ìŒ" + +#: libpq/hba.c:1488 +#, c-format +msgid "could not parse LDAP URL \"%s\": %s" +msgstr "\"%s\" LDAP URLì„ ë¶„ì„í•  수 ì—†ìŒ: %s" + +#: libpq/hba.c:1496 +#, c-format +msgid "unsupported LDAP URL scheme: %s" +msgstr "ì§€ì›í•˜ì§€ 않는 LDAP URL 스킴: %s" + +#: libpq/hba.c:1512 +#, c-format +msgid "filters not supported in LDAP URLs" +msgstr "LDAP URLì—서 í•„í„° ì†ì„±ì„ ì§€ì›í•˜ì§€ 않ìŒ" + +#: libpq/hba.c:1520 +#, c-format +msgid "LDAP URLs not supported on this platform" +msgstr "ì´ í”Œëž«í¼ì—서는 LDAP URL ê¸°ëŠ¥ì„ ì§€ì›í•˜ì§€ 않ìŒ." + +#: libpq/hba.c:1544 +#, c-format +msgid "invalid LDAP port number: \"%s\"" +msgstr "LDAP í¬íЏ 번호가 잘못ë¨: \"%s\"" + +#: libpq/hba.c:1584 libpq/hba.c:1591 +msgid "gssapi and sspi" +msgstr "gssapi ë° sspi" + +#: libpq/hba.c:1600 libpq/hba.c:1609 +msgid "sspi" +msgstr "sspi" + +#: libpq/hba.c:1651 +#, c-format +msgid "invalid RADIUS port number: \"%s\"" +msgstr "RADIUS í¬íЏ 번호가 잘못ë¨: \"%s\"" + +#: libpq/hba.c:1671 +#, c-format +msgid "unrecognized authentication option name: \"%s\"" +msgstr "알 수 없는 ì¸ì¦ 옵션 ì´ë¦„: \"%s\"" + +#: libpq/hba.c:1806 guc-file.l:594 +#, c-format +msgid "could not open configuration file \"%s\": %m" +msgstr "\"%s\" 설정 íŒŒì¼ ì„ ì—´ìˆ˜ 없습니다: %m" + +#: libpq/hba.c:1855 +#, c-format +msgid "configuration file \"%s\" contains no entries" +msgstr "\"%s\" 설정 파ì¼ì— 구성 í•­ëª©ì´ ì—†ìŒ" + +#: libpq/hba.c:1951 +#, c-format +msgid "invalid regular expression \"%s\": %s" +msgstr "\"%s\" ì •ê·œì‹ì´ 잘못ë¨: %s" + +#: libpq/hba.c:2011 +#, c-format +msgid "regular expression match for \"%s\" failed: %s" +msgstr "\"%s\"ì— ëŒ€í•œ ì •ê·œì‹ ì¼ì¹˜ 실패: %s" + +#: libpq/hba.c:2030 +#, c-format +msgid "" +"regular expression \"%s\" has no subexpressions as requested by " +"backreference in \"%s\"" +msgstr "\"%s\" ì •ê·œì‹ì—는 \"%s\"ì˜ backreferenceì—서 ìš”ì²­ëœ í•˜ìœ„ ì‹ì´ ì—†ìŒ" + +#: libpq/hba.c:2127 +#, c-format +msgid "provided user name (%s) and authenticated user name (%s) do not match" +msgstr "ì œê³µëœ ì‚¬ìš©ìž ì´ë¦„(%s) ë° ì¸ì¦ëœ ì‚¬ìš©ìž ì´ë¦„(%s)ì´ ì¼ì¹˜í•˜ì§€ 않ìŒ" + +#: libpq/hba.c:2147 +#, c-format +msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\"" +msgstr "" +"\"%s\" 사용ìžë§µ 파ì¼ì— \"%s\" 사용ìžë¥¼ \"%s\" 사용ìžë¡œ ì¸ì¦í•  ì„¤ì •ì´ ì—†ìŒ" + +#: libpq/hba.c:2182 +#, c-format +msgid "could not open usermap file \"%s\": %m" +msgstr "\"%s\" 사용ìžë§µ 파ì¼ì„ ì—´ 수 없습니다: %m" + +#: libpq/pqcomm.c:202 +#, c-format +msgid "could not set socket to nonblocking mode: %m" +msgstr "ì†Œì¼“ì„ nonblocking 모드로 지정할 수 ì—†ìŒ: %m" + +#: libpq/pqcomm.c:354 +#, c-format +msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)" +msgstr "\"%s\" 유닉스 ë„ë©”ì¸ ì†Œì¼“ 경로가 너무 ê¹ë‹ˆë‹¤ (최대 %d ë°”ì´íЏ)" + +#: libpq/pqcomm.c:375 +#, c-format +msgid "could not translate host name \"%s\", service \"%s\" to address: %s" +msgstr "호스트 ì´ë¦„ \"%s\", 서비스 \"%s\"를 변환할 수 없습니다. 주소 : %s" + +#: libpq/pqcomm.c:379 +#, c-format +msgid "could not translate service \"%s\" to address: %s" +msgstr "서비스 \"%s\"를 변환할 수 없습니다. 주소 : %s" + +#: libpq/pqcomm.c:406 +#, c-format +msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded" +msgstr "최대 ì ‘ì†ìž 수 MAXLISTEN (%d) 초과로 ë” ì´ìƒ ì ‘ì†ì´ 불가능합니다" + +#: libpq/pqcomm.c:415 +msgid "IPv4" +msgstr "IPv4" + +#: libpq/pqcomm.c:419 +msgid "IPv6" +msgstr "IPv6" + +#: libpq/pqcomm.c:424 +msgid "Unix" +msgstr "유닉스" + +#: libpq/pqcomm.c:429 +#, c-format +msgid "unrecognized address family %d" +msgstr "%d는 ì¸ì‹ë˜ì§€ 않는 가족 주소입니다" + +# translator: %s is IPv4, IPv6, or Unix +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:440 +#, c-format +msgid "could not create %s socket: %m" +msgstr "%s ì†Œì¼“ì„ ìƒì„±í•  수 없습니다: %m" + +#: libpq/pqcomm.c:465 +#, c-format +msgid "setsockopt(SO_REUSEADDR) failed: %m" +msgstr "setsockopt(SO_REUSEADDR) 실패: %m" + +#: libpq/pqcomm.c:480 +#, c-format +msgid "setsockopt(IPV6_V6ONLY) failed: %m" +msgstr "setsockopt(IPV6_V6ONLY) 실패: %m" + +# translator: %s is IPv4, IPv6, or Unix +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:499 +#, c-format +msgid "could not bind %s socket: %m" +msgstr "%s ì†Œì¼“ì— ë°”ì¸ë“œí•  수 없습니다: %m" + +#: libpq/pqcomm.c:502 +#, c-format +msgid "" +"Is another postmaster already running on port %d? If not, remove socket file " +"\"%s\" and retry." +msgstr "" +"다른 postmaster ê°€ í¬íЏ %dì—서 ì´ë¯¸ 실행중ì¸ê²ƒ 같습니다? 그렇지 않다면 소켓 " +"íŒŒì¼ \"%s\"ì„ ì œê±°í•˜ê³  다시 시ë„해보십시오" + +#: libpq/pqcomm.c:505 +#, c-format +msgid "" +"Is another postmaster already running on port %d? If not, wait a few seconds " +"and retry." +msgstr "" +"다른 postmaster ê°€ í¬íЏ %dì—서 ì´ë¯¸ 실행중ì¸ê²ƒ 같습니다? 그렇지 않다면 몇 ì´ˆ" +"를 기다렸다가 다시 시ë„해보십시오." + +# translator: %s is IPv4, IPv6, or Unix +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:538 +#, c-format +msgid "could not listen on %s socket: %m" +msgstr "%s ì†Œì¼“ì„ ë“¤ì„ ìˆ˜ 없습니다: %m" + +#: libpq/pqcomm.c:623 +#, c-format +msgid "group \"%s\" does not exist" +msgstr "\"%s\" 그룹 ì—†ìŒ" + +#: libpq/pqcomm.c:633 +#, c-format +msgid "could not set group of file \"%s\": %m" +msgstr "íŒŒì¼ \"%s\" ì˜ ê·¸ë£¹ì„ ì„¸íŒ…í•  수 없습니다: %m" + +#: libpq/pqcomm.c:644 +#, c-format +msgid "could not set permissions of file \"%s\": %m" +msgstr "íŒŒì¼ \"%s\" ì˜ í¼ë¯¸ì…˜ì„ 세팅할 수 없습니다: %m" + +#: libpq/pqcomm.c:674 +#, c-format +msgid "could not accept new connection: %m" +msgstr "새로운 ì—°ê²°ì„ ìƒì„±í•  수 없습니다: %m" + +#: libpq/pqcomm.c:885 +#, c-format +msgid "there is no client connection" +msgstr "í´ë¼ì´ì–¸íЏ ì—°ê²°ì´ ì—†ìŒ" + +#: libpq/pqcomm.c:936 libpq/pqcomm.c:1032 +#, c-format +msgid "could not receive data from client: %m" +msgstr "í´ë¼ì´ì–¸íЏì—게 ë°ì´í„°ë¥¼ ë°›ì„ ìˆ˜ 없습니다: %m" + +#: libpq/pqcomm.c:1177 tcop/postgres.c:3917 +#, c-format +msgid "terminating connection because protocol synchronization was lost" +msgstr "프로토콜 ë™ê¸°í™” 작업 실패로 ì—°ê²°ì„ ì¢…ë£Œí•©ë‹ˆë‹¤" + +#: libpq/pqcomm.c:1243 +#, c-format +msgid "unexpected EOF within message length word" +msgstr "예ìƒì¹˜ 못한 EOFê°€ ë©”ì‹œì§€ì˜ ê¸¸ì´ ì›Œë“œì•ˆì—서 ë°œìƒí–ˆìŠµë‹ˆë‹¤." + +#: libpq/pqcomm.c:1254 +#, c-format +msgid "invalid message length" +msgstr "ë©”ì‹œì§€ì˜ ê¸¸ì´ê°€ 유효하지 않습니다" + +#: libpq/pqcomm.c:1276 libpq/pqcomm.c:1289 +#, c-format +msgid "incomplete message from client" +msgstr "í´ë¼ì´ì–¸íŠ¸ìœ¼ë¡œë¶€í„°ì˜ ì™„ì „í•˜ì§€ 못한 메시지입니다" + +#: libpq/pqcomm.c:1422 +#, c-format +msgid "could not send data to client: %m" +msgstr "í´ë¼ì´ì–¸íЏì—게 ë°ì´í„°ë¥¼ 보낼 수 없습니다: %m" + +#: libpq/pqformat.c:437 +#, c-format +msgid "no data left in message" +msgstr "ë©”ì‹œì§€ì— ì•„ë¬´ëŸ° ë°ì´í„°ê°€ 없습니다" + +#: libpq/pqformat.c:557 libpq/pqformat.c:575 libpq/pqformat.c:596 +#: utils/adt/arrayfuncs.c:1457 utils/adt/rowtypes.c:563 +#, c-format +msgid "insufficient data left in message" +msgstr "부족한 ë°ì´í„°ëŠ” 메시지 ì•ˆì— ë„£ì–´ì ¸ 있습니다" + +#: libpq/pqformat.c:637 libpq/pqformat.c:666 +#, c-format +msgid "invalid string in message" +msgstr "ë©”ì‹œì§€ì•ˆì— ìœ íš¨í•˜ì§€ ì•Šì€ ë¬¸ìžì—´ì´ 있습니다" + +#: libpq/pqformat.c:682 +#, c-format +msgid "invalid message format" +msgstr "메시지 í¬ë§·ì´ 유효하지 않습니다." + +# # search5 ë +# # advance 부분 +#: main/main.c:264 +#, c-format +msgid "%s: WSAStartup failed: %d\n" +msgstr "%s: WSAStartup 작업 실패: %d\n" + +#: main/main.c:328 +#, c-format +msgid "" +"%s is the PostgreSQL server.\n" +"\n" +msgstr "" +"%s í”„ë¡œê·¸ëž¨ì€ PostgreSQL 서버입니다.\n" +"\n" + +#: main/main.c:329 +#, c-format +msgid "" +"Usage:\n" +" %s [OPTION]...\n" +"\n" +msgstr "" +"사용법:\n" +" %s [옵션]...\n" +"\n" + +#: main/main.c:330 +#, c-format +msgid "Options:\n" +msgstr "옵션들:\n" + +#: main/main.c:331 +#, c-format +msgid " -B NBUFFERS number of shared buffers\n" +msgstr " -B NBUFFERS 공유 ë²„í¼ ê°œìˆ˜\n" + +#: main/main.c:332 +#, c-format +msgid " -c NAME=VALUE set run-time parameter\n" +msgstr " -c NAME=VALUE 실시간 매개 변수 지정\n" + +#: main/main.c:333 +#, c-format +msgid " -C NAME print value of run-time parameter, then exit\n" +msgstr " -C NAME 실시간 매개 변수 ê°’ì„ ë³´ì—¬ì£¼ê³  마침\n" + +#: main/main.c:334 +#, c-format +msgid " -d 1-5 debugging level\n" +msgstr " -d 1-5 디버깅 수준\n" + +#: main/main.c:335 +#, c-format +msgid " -D DATADIR database directory\n" +msgstr " -D DATADIR ë°ì´í„° 디렉터리\n" + +#: main/main.c:336 +#, c-format +msgid " -e use European date input format (DMY)\n" +msgstr " -e ë‚ ì§œ ìž…ë ¥ ì–‘ì‹ì´ 유럽형(DMY)ì„ ì‚¬ìš©í•¨\n" + +#: main/main.c:337 +#, c-format +msgid " -F turn fsync off\n" +msgstr " -F fsync 기능 ë”\n" + +#: main/main.c:338 +#, c-format +msgid " -h HOSTNAME host name or IP address to listen on\n" +msgstr " -h HOSTNAME 서버로 사용할 호스트 ì´ë¦„ ë˜ëŠ” IP\n" + +#: main/main.c:339 +#, c-format +msgid " -i enable TCP/IP connections\n" +msgstr " -i TCP/IP ì—°ê²° 사용함\n" + +#: main/main.c:340 +#, c-format +msgid " -k DIRECTORY Unix-domain socket location\n" +msgstr " -k DIRECTORY 유닉스 ë„ë©”ì¸ ì†Œì¼“ 위치\n" + +#: main/main.c:342 +#, c-format +msgid " -l enable SSL connections\n" +msgstr " -l SSL ì—°ê²° 기능 사용함\n" + +#: main/main.c:344 +#, c-format +msgid " -N MAX-CONNECT maximum number of allowed connections\n" +msgstr " -N MAX-CONNECT 최대 ë™ì‹œ ì—°ê²° 개수\n" + +#: main/main.c:345 +#, c-format +msgid "" +" -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n" +msgstr "" +" -o OPTIONS 개별 서버 프로세스를 \"OPTIONS\" 옵션으로 실행 (옛기" +"능)\n" + +#: main/main.c:346 +#, c-format +msgid " -p PORT port number to listen on\n" +msgstr " -p PORT 서버 í¬íЏ 번호\n" + +#: main/main.c:347 +#, c-format +msgid " -s show statistics after each query\n" +msgstr " -s ê° ì¿¼ë¦¬ ë’¤ì— í†µê³„ì •ë³´ë¥¼ 보여줌\n" + +#: main/main.c:348 +#, c-format +msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n" +msgstr " -S WORK-MEM ì •ë ¬ìž‘ì—…ì— ì‚¬ìš©í•  메모리 í¬ê¸°(kb 단위)를 지정\n" + +#: main/main.c:349 +#, c-format +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version 버전 ì •ë³´ 보여주고 마침\n" + +#: main/main.c:350 +#, c-format +msgid " --NAME=VALUE set run-time parameter\n" +msgstr " --NAME=VALUE 실시간 매개 변수 지정\n" + +#: main/main.c:351 +#, c-format +msgid " --describe-config describe configuration parameters, then exit\n" +msgstr " --describe-config 서버 환경 ì„¤ì •ê°’ì— ëŒ€í•œ ì„¤ëª…ì„ ë³´ì—¬ì£¼ê³  마침\n" + +#: main/main.c:352 +#, c-format +msgid " -?, --help show this help, then exit\n" +msgstr " -?, --help ì´ ë„움ë§ì„ 보여주고 마침\n" + +#: main/main.c:354 +#, c-format +msgid "" +"\n" +"Developer options:\n" +msgstr "" +"\n" +"ê°œë°œìž ì˜µì…˜ë“¤:\n" + +#: main/main.c:355 +#, c-format +msgid " -f s|i|n|m|h forbid use of some plan types\n" +msgstr " -f s|i|n|m|h 쿼리최ì í™”ê¸°ì˜ ê¸°ëŠ¥ì„ ì œí•œ 함\n" + +#: main/main.c:356 +#, c-format +msgid "" +" -n do not reinitialize shared memory after abnormal exit\n" +msgstr "" +" -n 비정ìƒì  종료 ë’¤ì— ê³µìœ  메모리를 초기화 하지 않ìŒ\n" + +#: main/main.c:357 +#, c-format +msgid " -O allow system table structure changes\n" +msgstr " -O 시스템 í…Œì´ë¸”ì˜ êµ¬ì¡°ë¥¼ 바꿀 수 있ë„ë¡ í•¨\n" + +#: main/main.c:358 +#, c-format +msgid " -P disable system indexes\n" +msgstr " -P 시스템 ì¸ë±ìŠ¤ë“¤ì„ ì‚¬ìš©í•˜ì§€ 않ìŒ\n" + +#: main/main.c:359 +#, c-format +msgid " -t pa|pl|ex show timings after each query\n" +msgstr " -t pa|pl|ex ê° ì¿¼ë¦¬ ë‹¤ìŒ ìž‘ì—…ì‹œê°„ì„ ë³´ì—¬ì¤Œ\n" + +#: main/main.c:360 +#, c-format +msgid "" +" -T send SIGSTOP to all backend processes if one dies\n" +msgstr "" +" -T í•˜ë‚˜ì˜ í•˜ìœ„ 서버 프로세스가 비정ìƒìœ¼ë¡œ 마치며 모든\n" +" 다른 서버 프로세스ì—게 SIGSTOP 신호를 보냄\n" + +#: main/main.c:361 +#, c-format +msgid " -W NUM wait NUM seconds to allow attach from a debugger\n" +msgstr "" +" -W NUM 디버그 ìž‘ì—…ì„ ìœ„í•´ 지정한 숫ìžì˜ ì´ˆë§Œí¼ ê¸°ë‹¤ë¦°ë‹¤\n" + +#: main/main.c:363 +#, c-format +msgid "" +"\n" +"Options for single-user mode:\n" +msgstr "" +"\n" +"단ì¼ì‚¬ìš©ìž 모드ì—서 사용할 수 있는 옵션들:\n" + +#: main/main.c:364 +#, c-format +msgid "" +" --single selects single-user mode (must be first argument)\n" +msgstr " --single ë‹¨ì¼ ì‚¬ìš©ìž ëª¨ë“œ ì„ íƒ (ì¸ìžì˜ 첫번째로 와야함)\n" + +#: main/main.c:365 +#, c-format +msgid " DBNAME database name (defaults to user name)\n" +msgstr " DBNAME ë°ì´í„°ë² ì´ìФ ì´ë¦„ (초기값: 사용ìžì´ë¦„)\n" + +#: main/main.c:366 +#, c-format +msgid " -d 0-5 override debugging level\n" +msgstr " -d 0-5 디버깅 수준\n" + +#: main/main.c:367 +#, c-format +msgid " -E echo statement before execution\n" +msgstr " -E 실행하기 ì „ì— ìž‘ì—…ëª…ë ¹ì„ ì¶œë ¥í•¨\n" + +#: main/main.c:368 +#, c-format +msgid "" +" -j do not use newline as interactive query delimiter\n" +msgstr "" +" -j 대화형 ì¿¼ë¦¬ì˜ ëª…ë ¹ 실행 구분 문ìžë¡œ 줄바꿈문ìžë¥¼ ì“°ì§€ 않" +"ìŒ\n" + +#: main/main.c:369 main/main.c:374 +#, c-format +msgid " -r FILENAME send stdout and stderr to given file\n" +msgstr "" +" -r FILENAME stdout, stderr 쪽으로 보내는 ë‚´ìš©ì„ FILENAME 파ì¼ë¡œ 저장" +"함\n" + +#: main/main.c:371 +#, c-format +msgid "" +"\n" +"Options for bootstrapping mode:\n" +msgstr "" +"\n" +"부트스트랩 모드ì—서 사용할 수 있는 옵션들:\n" + +#: main/main.c:372 +#, c-format +msgid "" +" --boot selects bootstrapping mode (must be first argument)\n" +msgstr " --boot 부트스트랩 모드로 실행 (첫번째 ì¸ìžë¡œ 와야함)\n" + +#: main/main.c:373 +#, c-format +msgid "" +" DBNAME database name (mandatory argument in bootstrapping " +"mode)\n" +msgstr " DBNAME ë°ì´í„°ë² ì´ìФ ì´ë¦„ (부트스트랩 모드ì—서 필수)\n" + +#: main/main.c:375 +#, c-format +msgid " -x NUM internal use\n" +msgstr " -x NUM ë‚´ë¶€ì ì¸ 옵션\n" + +#: main/main.c:377 +#, c-format +msgid "" +"\n" +"Please read the documentation for the complete list of run-time\n" +"configuration settings and how to set them on the command line or in\n" +"the configuration file.\n" +"\n" +"Report bugs to .\n" +msgstr "" +"\n" +"ì´ ì‹¤ì‹œê°„ 환경 변수용 ì„¤ì •ê°’ë“¤ì˜ ìžì„¸í•œ 사용법과\n" +"서버 환경 설정 파ì¼ì— 어떻게 지정하고 ì‚¬ìš©í•˜ëŠ”ì§€ì— ëŒ€í•œ 사항ì€\n" +"PostgreSQL 문서를 참조하세요.\n" +"\n" +"오류 ë³´ê³ : .\n" + +#: main/main.c:391 +#, c-format +msgid "" +"\"root\" execution of the PostgreSQL server is not permitted.\n" +"The server must be started under an unprivileged user ID to prevent\n" +"possible system security compromise. See the documentation for\n" +"more information on how to properly start the server.\n" +msgstr "" +"시스템 보안 관련 문제로, PostgreSQL server를 \"root\" ID로 실행할 수 없습니" +"다.\n" +"반드시 ì¼ë°˜ ì‚¬ìš©ìž ID(시스템 ê´€ë¦¬ìž ê¶Œí•œì´ ì—†ëŠ” ID)로 서버를 실행하십시오.\n" +"Server를 어떻게 안전하게 기ë™í•˜ëŠ”ê°€ 하는 ê²ƒì€ ë¬¸ì„œë¥¼ 참조하시기 ë°”ëžë‹ˆë‹¤.\n" + +#: main/main.c:408 +#, c-format +msgid "%s: real and effective user IDs must match\n" +msgstr "%s: real ë˜ëŠ” effective user ID ë“¤ì€ ë°˜ë“œì‹œ ì¼ì¹˜ë˜ì–´ì•¼ 한다.\n" + +#: main/main.c:415 +#, c-format +msgid "" +"Execution of PostgreSQL by a user with administrative permissions is not\n" +"permitted.\n" +"The server must be started under an unprivileged user ID to prevent\n" +"possible system security compromises. See the documentation for\n" +"more information on how to properly start the server.\n" +msgstr "" +"시스템 보안 관련 문제로, PostgreSQL server를 시스템 ê´€ë¦¬ìž ID로 실행할 수 ì—†" +"습니다.\n" +"반드시 ì¼ë°˜ ì‚¬ìš©ìž ID(시스템 ê´€ë¦¬ìž ê¶Œí•œì´ ì—†ëŠ” ID)로 서버를 실행하십시오.\n" +"Server를 어떻게 안전하게 기ë™í•˜ëŠ”ê°€ 하는 ê²ƒì€ ë¬¸ì„œë¥¼ 참조하시기 ë°”ëžë‹ˆë‹¤.\n" + +#: nodes/extensible.c:66 +#, c-format +msgid "extensible node type \"%s\" already exists" +msgstr "\"%s\" ì´ë¦„ì˜ í™•ìž¥ê°€ëŠ¥í•œ 노드 í˜•ì´ ì´ë¯¸ 있습니다" + +#: nodes/extensible.c:114 +#, c-format +msgid "ExtensibleNodeMethods \"%s\" was not registered" +msgstr "\"%s\" ExtensibleNodeMethodsê°€ 등ë¡ë˜ì–´ 있지 않ìŒ" + +#: nodes/nodeFuncs.c:124 nodes/nodeFuncs.c:155 parser/parse_coerce.c:1820 +#: parser/parse_coerce.c:1848 parser/parse_coerce.c:1924 +#: parser/parse_expr.c:2019 parser/parse_func.c:597 parser/parse_oper.c:952 +#, c-format +msgid "could not find array type for data type %s" +msgstr "ìžë£Œí˜• %s ì— ëŒ€í•´ì„œëŠ” ë°°ì—´ ìžë£Œí˜•ì„ ì‚¬ìš©í•  수 없습니다" + +#: optimizer/path/allpaths.c:2653 +#, c-format +msgid "WHERE CURRENT OF is not supported on a view with no underlying relation" +msgstr "" +"no underlying 릴레ì´ì…˜ì´ 있는 ë·°ì—서는 WHERE CURRENT OF êµ¬ë¬¸ì„ ì§€ì›í•˜ì§€ 않ìŒ" + +#: optimizer/path/allpaths.c:2658 +#, c-format +msgid "" +"WHERE CURRENT OF is not supported on a view with more than one underlying " +"relation" +msgstr "" +"WHERE CURRENT OF ì˜µì…˜ì€ í•˜ë‚˜ ì´ìƒì˜ 릴레ì´ì…˜ì„ 사용하는 ë·°ì—서는 사용할 수 ì—†" +"ìŒ" + +#: optimizer/path/allpaths.c:2663 +#, c-format +msgid "" +"WHERE CURRENT OF is not supported on a view with grouping or aggregation" +msgstr "WHERE CURRENT OF ì˜µì…˜ì€ ê·¸ë£¹í™”ë‚˜ 집계 작업용 ë·°ì—서는 사용할 수 ì—†ìŒ" + +#: optimizer/path/joinrels.c:802 +#, c-format +msgid "" +"FULL JOIN is only supported with merge-joinable or hash-joinable join " +"conditions" +msgstr "" +"FULL JOIN êµ¬ë¬¸ì€ ë¨¸ì§€ ì¡°ì¸ì´ë‚˜, 해시 ì¡°ì¸ì´ 가능한 ìƒí™©ì—서만 사용할 수 있습" +"니다" + +#. translator: %s is a SQL row locking clause such as FOR UPDATE +#: optimizer/plan/initsplan.c:1124 +#, c-format +msgid "%s cannot be applied to the nullable side of an outer join" +msgstr "" +"%s êµ¬ë¬¸ì€ outer ì¡°ì¸ìœ¼ë¡œ null ê°’ì´ ì˜¬ 수 있는 ìª½ì— ëŒ€í•´ì„œëŠ” ì ìš©í•  수 없습니" +"다" + +#. translator: %s is a SQL row locking clause such as FOR UPDATE +#: optimizer/plan/planner.c:1480 parser/analyze.c:1549 parser/analyze.c:1747 +#: parser/analyze.c:2528 +#, c-format +msgid "%s is not allowed with UNION/INTERSECT/EXCEPT" +msgstr "%s êµ¬ë¬¸ì€ UNION/INTERSECT/EXCEPT 예약어들과 함께 사용할 수 없습니다." + +#: optimizer/plan/planner.c:3809 +#, c-format +msgid "could not implement GROUP BY" +msgstr "GROUP BY를 구현할 수 ì—†ìŒ" + +#: optimizer/plan/planner.c:3810 optimizer/plan/planner.c:4203 +#: optimizer/prep/prepunion.c:929 +#, c-format +msgid "" +"Some of the datatypes only support hashing, while others only support " +"sorting." +msgstr "해싱만 ì§€ì›í•˜ëŠ” ìžë£Œí˜•ë„ ìžˆê³ , 정렬만 ì§€ì›í•˜ëŠ” ìžë£Œí˜•ë„ ìžˆìŠµë‹ˆë‹¤." + +#: optimizer/plan/planner.c:4202 +#, c-format +msgid "could not implement DISTINCT" +msgstr "DISTINCT를 구현할 수 ì—†ìŒ" + +#: optimizer/plan/planner.c:4832 +#, c-format +msgid "could not implement window PARTITION BY" +msgstr "ì°½ PARTITION BY를 구현할 수 ì—†ìŒ" + +#: optimizer/plan/planner.c:4833 +#, c-format +msgid "Window partitioning columns must be of sortable datatypes." +msgstr "ì°½ ë¶„í•  ì—´ì€ ì •ë ¬ 가능한 ë°ì´í„° 형ì‹ì´ì–´ì•¼ 합니다." + +#: optimizer/plan/planner.c:4837 +#, c-format +msgid "could not implement window ORDER BY" +msgstr "ì°½ ORDER BY를 구현할 수 ì—†ìŒ" + +#: optimizer/plan/planner.c:4838 +#, c-format +msgid "Window ordering columns must be of sortable datatypes." +msgstr "ì°½ 순서 지정 ì—´ì€ ì •ë ¬ 가능한 ë°ì´í„° 형ì‹ì´ì–´ì•¼ 합니다." + +#: optimizer/plan/setrefs.c:415 +#, c-format +msgid "too many range table entries" +msgstr "너무 ë§Žì€ í…Œì´ë¸”ì´ ì‚¬ìš©ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: optimizer/prep/prepunion.c:484 +#, c-format +msgid "could not implement recursive UNION" +msgstr "재귀 UNIONì„ êµ¬í˜„í•  수 ì—†ìŒ" + +#: optimizer/prep/prepunion.c:485 +#, c-format +msgid "All column datatypes must be hashable." +msgstr "모든 ì—´ ë°ì´í„° 형ì‹ì€ 해시 가능해야 합니다." + +#. translator: %s is UNION, INTERSECT, or EXCEPT +#: optimizer/prep/prepunion.c:928 +#, c-format +msgid "could not implement %s" +msgstr "%s êµ¬ë¬¸ì€ êµ¬í˜„í•  수 ì—†ìŒ" + +#: optimizer/util/clauses.c:4634 +#, c-format +msgid "SQL function \"%s\" during inlining" +msgstr "" + +#: optimizer/util/plancat.c:114 +#, c-format +msgid "cannot access temporary or unlogged relations during recovery" +msgstr "복구 작업 중ì—는 임시 í…Œì´ë¸”ì´ë‚˜, 언로그드 í…Œì´ë¸”ì„ ì ‘ê·¼í•  수 ì—†ìŒ" + +#: optimizer/util/plancat.c:611 +#, c-format +msgid "whole row unique index inference specifications are not supported" +msgstr "" + +#: optimizer/util/plancat.c:628 +#, c-format +msgid "constraint in ON CONFLICT clause has no associated index" +msgstr "ON CONFLICT 처리를 위해 ê´€ë ¨ëœ ì¸ë±ìŠ¤ê°€ 없습니다" + +#: optimizer/util/plancat.c:679 +#, c-format +msgid "ON CONFLICT DO UPDATE not supported with exclusion constraints" +msgstr "제외 제약 ì¡°ê±´ì´ ìžˆì–´ ON CONFLICT DO UPDATE ìž‘ì—…ì€ í•  수 없습니다" + +#: optimizer/util/plancat.c:784 +#, c-format +msgid "" +"there is no unique or exclusion constraint matching the ON CONFLICT " +"specification" +msgstr "" +"ON CONFLICT ì ˆì„ ì‚¬ìš©í•˜ëŠ” 경우, unique 나 exclude 제약 ì¡°ê±´ì´ ìžˆì–´ì•¼ 함" + +#: parser/analyze.c:663 parser/analyze.c:1321 +#, c-format +msgid "VALUES lists must all be the same length" +msgstr "VALUES 목ë¡ì€ ëª¨ë‘ ê°™ì€ ê¸¸ì´ì—¬ì•¼ 함" + +#: parser/analyze.c:859 +#, c-format +msgid "INSERT has more expressions than target columns" +msgstr "INSERT êµ¬ë¬¸ì— target columns 보다 ë” ë§Žì€ í‘œí˜„ì‹ì´ 존재하고 있다" + +#: parser/analyze.c:877 +#, c-format +msgid "INSERT has more target columns than expressions" +msgstr "" +"INSERT êµ¬ë¬¸ì— target columns 보다 ë” ë§Žì€ í‘œí˜„ì‹(expressions)ì´ ì¡´ìž¬í•˜ê³  있다" + +#: parser/analyze.c:881 +#, c-format +msgid "" +"The insertion source is a row expression containing the same number of " +"columns expected by the INSERT. Did you accidentally use extra parentheses?" +msgstr "" + +#: parser/analyze.c:1142 parser/analyze.c:1522 +#, c-format +msgid "SELECT ... INTO is not allowed here" +msgstr "SELECT ... INTO êµ¬ë¬¸ì€ ì—¬ê¸°ì„œëŠ” 사용할 수 ì—†ìŒ" + +#: parser/analyze.c:1335 +#, c-format +msgid "DEFAULT can only appear in a VALUES list within INSERT" +msgstr "DEFAULT는 INSERT ë‚´ì˜ VALUES 목ë¡ì—ë§Œ í‘œì‹œë  ìˆ˜ 있ìŒ" + +#. translator: %s is a SQL row locking clause such as FOR UPDATE +#: parser/analyze.c:1454 parser/analyze.c:2698 +#, c-format +msgid "%s cannot be applied to VALUES" +msgstr "%s êµ¬ë¬¸ì€ VALUES ì— ì ìš©í•  수 ì—†ìŒ" + +#: parser/analyze.c:1675 +#, c-format +msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" +msgstr "UNION/INTERSECT/EXCEPT ORDER BY ì ˆì´ ìž˜ëª»ë¨" + +#: parser/analyze.c:1676 +#, c-format +msgid "Only result column names can be used, not expressions or functions." +msgstr "ê²°ê³¼ ì—´ ì´ë¦„ë§Œ 사용할 수 있고 ì‹ ë˜ëŠ” 함수는 사용할 수 없습니다." + +#: parser/analyze.c:1677 +#, c-format +msgid "" +"Add the expression/function to every SELECT, or move the UNION into a FROM " +"clause." +msgstr "모든 SELECTì— ì‹/함수를 추가하거나 UNIONì„ FROM 절로 ì´ë™í•˜ì‹­ì‹œì˜¤." + +#: parser/analyze.c:1737 +#, c-format +msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT" +msgstr "INTO 는 UNION/INTERSECT/EXCEPT ì˜ ì²«ë²ˆì§¸ SELECT ì—ë§Œ 허용ëœë‹¤" + +#: parser/analyze.c:1801 +#, c-format +msgid "" +"UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of " +"same query level" +msgstr "" +"UNION/INTERSECT/EXCEPT 멤버 문ì—서 ê°™ì€ ì¿¼ë¦¬ ìˆ˜ì¤€ì˜ ë‹¤ë¥¸ 관계를 참조할 수 ì—†" +"ìŒ" + +#: parser/analyze.c:1890 +#, c-format +msgid "each %s query must have the same number of columns" +msgstr "ê°ê°ì˜ %s query 는 ê°™ì€ ìˆ˜ì˜ columns 를 가져야 한다." + +#: parser/analyze.c:2283 +#, c-format +msgid "RETURNING must have at least one column" +msgstr "RETURNING ì ˆì—는 ì ì–´ë„ 하나 ì´ìƒì˜ ì¹¼ëŸ¼ì´ ìžˆì–´ì•¼ 합니다" + +#: parser/analyze.c:2320 +#, c-format +msgid "cannot specify both SCROLL and NO SCROLL" +msgstr "SCROLL ê³¼ NO SCROLL 둘다를 명시할 수 없다" + +#: parser/analyze.c:2338 +#, c-format +msgid "DECLARE CURSOR must not contain data-modifying statements in WITH" +msgstr "" +"DECLARE CURSOR 구문ì—서 사용하는 WITH ì ˆ 안ì—는 ìžë£Œ 변경 êµ¬ë¬¸ì´ ì—†ì–´ì•¼ 합니" +"다" + +#. translator: %s is a SQL row locking clause such as FOR UPDATE +#: parser/analyze.c:2346 +#, c-format +msgid "DECLARE CURSOR WITH HOLD ... %s is not supported" +msgstr "DECLARE CURSOR WITH HOLD ... %s êµ¬ë¬¸ì€ ì§€ì›ë˜ì§€ 않ìŒ" + +#: parser/analyze.c:2349 +#, c-format +msgid "Holdable cursors must be READ ONLY." +msgstr "보류 가능 커서는 READ ONLY여야 합니다." + +#. translator: %s is a SQL row locking clause such as FOR UPDATE +#: parser/analyze.c:2357 +#, c-format +msgid "DECLARE SCROLL CURSOR ... %s is not supported" +msgstr "DECLARE SCROLL CURSOR ... %s êµ¬ë¬¸ì€ ì§€ì›ë˜ì§€ 않ìŒ" + +#. translator: %s is a SQL row locking clause such as FOR UPDATE +#: parser/analyze.c:2368 +#, c-format +msgid "DECLARE INSENSITIVE CURSOR ... %s is not supported" +msgstr "DECLARE INSENSITIVE CURSOR ... %s êµ¬ë¬¸ì€ ì§€ì›ë˜ì§€ 않ìŒ" + +#: parser/analyze.c:2371 +#, c-format +msgid "Insensitive cursors must be READ ONLY." +msgstr "민ê°í•˜ì§€ ì•Šì€ ì»¤ì„œëŠ” READ ONLY여야 합니다." + +#: parser/analyze.c:2437 +#, c-format +msgid "materialized views must not use data-modifying statements in WITH" +msgstr "" +"êµ¬ì²´í™”ëœ ë·° ì •ì˜ì— 사용한 WITH ì ˆ 안ì—는 ìžë£Œ 변경 êµ¬ë¬¸ì´ ì—†ì–´ì•¼ 합니다" + +#: parser/analyze.c:2447 +#, c-format +msgid "materialized views must not use temporary tables or views" +msgstr "êµ¬ì²´í™”ëœ ë·°ëŠ” 임시 í…Œì´ë¸”ì´ë‚˜ 뷰를 사용할 수 없습니다" + +#: parser/analyze.c:2457 +#, c-format +msgid "materialized views may not be defined using bound parameters" +msgstr "" + +#: parser/analyze.c:2469 +#, c-format +msgid "materialized views cannot be UNLOGGED" +msgstr "êµ¬ì²´í™”ëœ ë·°ëŠ” UNLOGGED ì˜µì…˜ì„ ì‚¬ìš©í•  수 없습니다." + +#. translator: %s is a SQL row locking clause such as FOR UPDATE +#: parser/analyze.c:2535 +#, c-format +msgid "%s is not allowed with DISTINCT clause" +msgstr "%s ì ˆì€ DISTINCT 절과 함께 사용할 수 없습니다" + +#. translator: %s is a SQL row locking clause such as FOR UPDATE +#: parser/analyze.c:2542 +#, c-format +msgid "%s is not allowed with GROUP BY clause" +msgstr "%s ì ˆì€ GROUP BY 절과 함께 사용할 수 없습니다" + +#. translator: %s is a SQL row locking clause such as FOR UPDATE +#: parser/analyze.c:2549 +#, c-format +msgid "%s is not allowed with HAVING clause" +msgstr "%s ì ˆì€ HAVING 절과 함께 사용할 수 없습니다" + +#. translator: %s is a SQL row locking clause such as FOR UPDATE +#: parser/analyze.c:2556 +#, c-format +msgid "%s is not allowed with aggregate functions" +msgstr "%s ì ˆì€ ì§‘ê³„ 함수와 함께 사용할 수 없습니다" + +#. translator: %s is a SQL row locking clause such as FOR UPDATE +#: parser/analyze.c:2563 +#, c-format +msgid "%s is not allowed with window functions" +msgstr "%s ì ˆì€ ìœˆë„ìš° 함수와 함께 사용할 수 없습니다" + +#. translator: %s is a SQL row locking clause such as FOR UPDATE +#: parser/analyze.c:2570 +#, c-format +msgid "%s is not allowed with set-returning functions in the target list" +msgstr "%s ì ˆì€ ëŒ€ìƒ ëª©ë¡ì—서 세트 반환 함수와 함께 사용할 수 없습니다." + +#. translator: %s is a SQL row locking clause such as FOR UPDATE +#: parser/analyze.c:2649 +#, c-format +msgid "%s must specify unqualified relation names" +msgstr "%s ì ˆì—는 unqualified 릴레ì´ì…˜ ì´ë¦„ì„ ì§€ì •í•´ì•¼ 합니다." + +#. translator: %s is a SQL row locking clause such as FOR UPDATE +#: parser/analyze.c:2680 +#, c-format +msgid "%s cannot be applied to a join" +msgstr "%s ì ˆì€ ì¡°ì¸ì„ ì ìš©í•  수 없습니다." + +#. translator: %s is a SQL row locking clause such as FOR UPDATE +#: parser/analyze.c:2689 +#, c-format +msgid "%s cannot be applied to a function" +msgstr "%s ì ˆì€ í•¨ìˆ˜ì— ì ìš©í•  수 없습니다." + +#. translator: %s is a SQL row locking clause such as FOR UPDATE +#: parser/analyze.c:2707 +#, c-format +msgid "%s cannot be applied to a WITH query" +msgstr "%s ì ˆì€ WITH ì¿¼ë¦¬ì— ì ìš©í•  수 ì—†ìŒ" + +#. translator: %s is a SQL row locking clause such as FOR UPDATE +#: parser/analyze.c:2724 +#, c-format +msgid "relation \"%s\" in %s clause not found in FROM clause" +msgstr "\"%s\" 릴레ì´ì…˜ (ëŒ€ìƒ êµ¬ë¬¸: %s) ì´ FROM ì ˆ ë‚´ì— ì—†ìŠµë‹ˆë‹¤" + +#: parser/parse_agg.c:223 parser/parse_oper.c:220 +#, c-format +msgid "could not identify an ordering operator for type %s" +msgstr "%s ìžë£Œí˜•ì—서 사용할 순서 정하는 ì—°ì‚°ìžë¥¼ ì°¾ì„ ìˆ˜ 없습니다." + +#: parser/parse_agg.c:225 +#, c-format +msgid "Aggregates with DISTINCT must be able to sort their inputs." +msgstr "" +"DISTINCT와 함께 작업하는 집계 ìž‘ì—…ì€ ê·¸ ìž…ë ¥ ìžë£Œê°€ ì •ë ¬ë  ìˆ˜ 있어야 합니다" + +#: parser/parse_agg.c:260 +#, c-format +msgid "GROUPING must have fewer than 32 arguments" +msgstr "GROUPING ì¸ìžë¡œëŠ” 32ê°œ ì´ë‚´ë¡œ 지정해야 합니다" + +#: parser/parse_agg.c:363 +msgid "aggregate functions are not allowed in JOIN conditions" +msgstr "JOIN 조건문ì—서는 집계 함수가 허용ë˜ì§€ 않습니다" + +#: parser/parse_agg.c:365 +msgid "grouping operations are not allowed in JOIN conditions" +msgstr "JOIN 조건문ì—서는 그룹핑 ì—°ì‚°ì´ í—ˆìš©ë˜ì§€ 않습니다" + +#: parser/parse_agg.c:377 +msgid "" +"aggregate functions are not allowed in FROM clause of their own query level" +msgstr "집계 함수는 ìžì‹ ì˜ 쿼리 ìˆ˜ì¤€ì˜ FROM ì ˆì—서는 사용할 수 없습니다." + +#: parser/parse_agg.c:379 +msgid "" +"grouping operations are not allowed in FROM clause of their own query level" +msgstr "" + +#: parser/parse_agg.c:384 +msgid "aggregate functions are not allowed in functions in FROM" +msgstr "FROM ì ˆ ë‚´ì˜ í•¨ìˆ˜ í‘œí˜„ì‹ ë‚´ì—서는 집계 함수를 사용할 수 없습니다" + +#: parser/parse_agg.c:386 +msgid "grouping operations are not allowed in functions in FROM" +msgstr "FROM ì ˆ ë‚´ì˜ í•¨ìˆ˜ í‘œí˜„ì‹ ë‚´ì—서는 그룹핑 ì—°ì‚°ì´ í—ˆìš©ë˜ì§€ 않습니다" + +#: parser/parse_agg.c:394 +msgid "aggregate functions are not allowed in policy expressions" +msgstr "ì •ì±… 표현ì‹ì—서는 집계 함수 ì‚¬ìš©ì„ í—ˆìš©í•˜ì§€ 않습니다" + +#: parser/parse_agg.c:396 +msgid "grouping operations are not allowed in policy expressions" +msgstr "ì •ì±… 표현ì‹ì—서는 그룹핑 ì—°ì‚°ì´ í—ˆìš©ë˜ì§€ 않습니다" + +#: parser/parse_agg.c:413 +msgid "aggregate functions are not allowed in window RANGE" +msgstr "윈ë„ìš° RANGE 안ì—서는 집계 함수를 사용할 수 없습니다" + +#: parser/parse_agg.c:415 +msgid "grouping operations are not allowed in window RANGE" +msgstr "윈ë„ìš° RANGE 안ì—서는 그룹핑 ì—°ì‚°ì´ í—ˆìš©ë˜ì§€ 않습니다" + +#: parser/parse_agg.c:420 +msgid "aggregate functions are not allowed in window ROWS" +msgstr "윈ë„ìš° ROWS 안ì—서는 집계 함수를 사용할 수 없습니다" + +#: parser/parse_agg.c:422 +msgid "grouping operations are not allowed in window ROWS" +msgstr "윈ë„ìš° ROWS 안ì—서는 그룹핑 ì—°ì‚°ì´ í—ˆìš©ë˜ì§€ 않습니다" + +#: parser/parse_agg.c:455 +msgid "aggregate functions are not allowed in check constraints" +msgstr "ì²´í¬ ì œì•½ ì¡°ê±´ì—서는 집계 함수를 사용할 수 없습니다" + +#: parser/parse_agg.c:457 +msgid "grouping operations are not allowed in check constraints" +msgstr "ì²´í¬ ì œì•½ ì¡°ê±´ì—서는 그룹핑 ì—°ì‚°ì´ í—ˆìš©ë˜ì§€ 않습니다" + +#: parser/parse_agg.c:464 +msgid "aggregate functions are not allowed in DEFAULT expressions" +msgstr "DEFAULT 표현ì‹ì—서는 집계 함수를 사용할 수 없습니다" + +#: parser/parse_agg.c:466 +msgid "grouping operations are not allowed in DEFAULT expressions" +msgstr "DEFAULT 표현ì‹ì—서는 그룹핑 ì—°ì‚°ì´ í—ˆìš©ë˜ì§€ 않습니다" + +#: parser/parse_agg.c:471 +msgid "aggregate functions are not allowed in index expressions" +msgstr "ì¸ë±ìФ 표현ì‹ì—서는 집계 함수를 사용할 수 없습니다" + +#: parser/parse_agg.c:473 +msgid "grouping operations are not allowed in index expressions" +msgstr "ì¸ë±ìФ 표현ì‹ì—서는 그룹핑 ì—°ì‚°ì´ í—ˆìš©ë˜ì§€ 않습니다" + +#: parser/parse_agg.c:478 +msgid "aggregate functions are not allowed in index predicates" +msgstr "집계 함수는 함수 기반 ì¸ë±ìŠ¤ì˜ í•¨ìˆ˜ë¡œ 사용할 수 없습니다" + +#: parser/parse_agg.c:480 +msgid "grouping operations are not allowed in index predicates" +msgstr "그룹핑 ìž‘ì—…ì€ í•¨ìˆ˜ 기반 ì¸ë±ìŠ¤ì˜ í•¨ìˆ˜ë¡œ 사용할 수 없습니다" + +#: parser/parse_agg.c:485 +msgid "aggregate functions are not allowed in transform expressions" +msgstr "transform ì‹(expression)ì— ì§‘ê³„ 함수를 사용할 수 없습니다" + +#: parser/parse_agg.c:487 +msgid "grouping operations are not allowed in transform expressions" +msgstr "transform ì‹(expression)ì— ê·¸ë£¹í•‘ 작업를 사용할 수 없습니다" + +#: parser/parse_agg.c:492 +msgid "aggregate functions are not allowed in EXECUTE parameters" +msgstr "EXECUTE 매개 변수로 집계 함수를 사용할 수 없습니다" + +#: parser/parse_agg.c:494 +msgid "grouping operations are not allowed in EXECUTE parameters" +msgstr "EXECUTE 매개 변수로 그룹핑 ìž‘ì—…ì„ ì‚¬ìš©í•  수 없습니다" + +#: parser/parse_agg.c:499 +msgid "aggregate functions are not allowed in trigger WHEN conditions" +msgstr "íŠ¸ë¦¬ê±°ì˜ WHEN ì¡°ê±´ì ˆì— ì§‘ê³„ 함수가 허용ë˜ì§€ 않습니다" + +#: parser/parse_agg.c:501 +msgid "grouping operations are not allowed in trigger WHEN conditions" +msgstr "íŠ¸ë¦¬ê±°ì˜ WHEN ì¡°ê±´ì ˆì— ê·¸ë£¹í•‘ ìž‘ì—…ì´ í—ˆìš©ë˜ì§€ 않습니다" + +#. translator: %s is name of a SQL construct, eg GROUP BY +#: parser/parse_agg.c:524 parser/parse_clause.c:1550 +#, c-format +msgid "aggregate functions are not allowed in %s" +msgstr "집계 함수는 %s ì ˆì—서 사용할 수 없습니다." + +#. translator: %s is name of a SQL construct, eg GROUP BY +#: parser/parse_agg.c:527 +#, c-format +msgid "grouping operations are not allowed in %s" +msgstr "그룹핑 ìž‘ì—…ì€ %s ì ˆì—서 사용할 수 없습니다." + +#: parser/parse_agg.c:635 +#, c-format +msgid "" +"outer-level aggregate cannot contain a lower-level variable in its direct " +"arguments" +msgstr "" + +#: parser/parse_agg.c:706 +#, c-format +msgid "aggregate function calls cannot contain window function calls" +msgstr "집계 함수 í˜¸ì¶œì€ ìœˆë„ìš° 함수 í˜¸ì¶œì„ í¬í•¨í•  수 ì—†ìŒ" + +#: parser/parse_agg.c:784 +msgid "window functions are not allowed in JOIN conditions" +msgstr "윈ë„ìš° 함수는 JOIN ì¡°ê±´ì— ì‚¬ìš©í•  수 ì—†ìŒ" + +#: parser/parse_agg.c:791 +msgid "window functions are not allowed in functions in FROM" +msgstr "윈ë„ìš° 함수는 FROM ì ˆì— ìžˆëŠ” 함수로 사용할 수 ì—†ìŒ" + +#: parser/parse_agg.c:797 +msgid "window functions are not allowed in policy expressions" +msgstr "윈ë„ìš° 함수는 ì •ì±… ì‹ì— 사용할 수 ì—†ìŒ" + +#: parser/parse_agg.c:809 +msgid "window functions are not allowed in window definitions" +msgstr "윈ë„ìš° 함수는 윈ë„ìš° 함수 ì •ì˜ì— 사용할 수 ì—†ìŒ" + +#: parser/parse_agg.c:840 +msgid "window functions are not allowed in check constraints" +msgstr "윈ë„ìš° 함수는 check ì œì•½ì¡°ê±´ì— ì‚¬ìš©í•  수 ì—†ìŒ" + +#: parser/parse_agg.c:844 +msgid "window functions are not allowed in DEFAULT expressions" +msgstr "윈ë„ìš° 함수는 DEFAULT ì‹ì—서 사용할 수 ì—†ìŒ" + +#: parser/parse_agg.c:847 +msgid "window functions are not allowed in index expressions" +msgstr "윈ë„ìš° 함수는 ì¸ë±ìФ ì‹ì—서 사용할 수 ì—†ìŒ" + +#: parser/parse_agg.c:850 +msgid "window functions are not allowed in index predicates" +msgstr "윈ë„ìš° 함수는 함수 기반 ì¸ë±ìФì—서 사용할 수 ì—†ìŒ" + +#: parser/parse_agg.c:853 +msgid "window functions are not allowed in transform expressions" +msgstr "윈ë„ìš° 함수는 transform ì‹ì—서 사용할 수 ì—†ìŒ" + +#: parser/parse_agg.c:856 +msgid "window functions are not allowed in EXECUTE parameters" +msgstr "윈ë„ìš° 함수는 EXECUTE 매개 변수 설정 값으로 사용할 수 ì—†ìŒ" + +#: parser/parse_agg.c:859 +msgid "window functions are not allowed in trigger WHEN conditions" +msgstr "윈ë„ìš° 함수는 íŠ¸ë¦¬ê±°ì˜ WHEN ì¡°ê±´ì ˆì—서 사용할 수 ì—†ìŒ" + +#. translator: %s is name of a SQL construct, eg GROUP BY +#: parser/parse_agg.c:879 parser/parse_clause.c:1559 +#, c-format +msgid "window functions are not allowed in %s" +msgstr "%s 안ì—서는 윈ë„ìš° 함수를 사용할 수 ì—†ìŒ" + +#: parser/parse_agg.c:913 parser/parse_clause.c:2396 +#, c-format +msgid "window \"%s\" does not exist" +msgstr "\"%s\" 윈ë„ìš° 함수가 ì—†ìŒ" + +#: parser/parse_agg.c:998 +#, c-format +msgid "too many grouping sets present (maximum 4096)" +msgstr "너무 ë§Žì€ ê·¸ë£¹í•‘ 세트가 있습니다 (최대값 4096)" + +#: parser/parse_agg.c:1147 +#, c-format +msgid "" +"aggregate functions are not allowed in a recursive query's recursive term" +msgstr "집계 함수는 재귀 ì¿¼ë¦¬ì˜ ìž¬ê·€ ì¡°ê±´ì— ì‚¬ìš©í•  수 ì—†ìŒ" + +#: parser/parse_agg.c:1340 +#, c-format +msgid "" +"column \"%s.%s\" must appear in the GROUP BY clause or be used in an " +"aggregate function" +msgstr "" +"column \"%s.%s\" 는 반드시 GROUP BY ì ˆë‚´ì— ìžˆì–´ì•¼ 하ë˜ì§€ ë˜ëŠ” 집계 함수 ë‚´ì—" +"서 사용ë˜ì–´ì ¸ì•¼ 한다" + +#: parser/parse_agg.c:1343 +#, c-format +msgid "" +"Direct arguments of an ordered-set aggregate must use only grouped columns." +msgstr "" + +#: parser/parse_agg.c:1348 +#, c-format +msgid "subquery uses ungrouped column \"%s.%s\" from outer query" +msgstr "" +"subquery ê°€ outer query ì—서 그룹화 ë˜ì§€ ì•Šì€ ì—´ì¸ \"%s.%s\"를 사용합니다" + +#: parser/parse_agg.c:1512 +#, c-format +msgid "" +"arguments to GROUPING must be grouping expressions of the associated query " +"level" +msgstr "" + +#: parser/parse_clause.c:649 +#, c-format +msgid "multiple column definition lists are not allowed for the same function" +msgstr "다중 칼럼 ì •ì˜ ëª©ë¡ì€ ê°™ì€ í•¨ìˆ˜ìš©ìœ¼ë¡œ 허용하지 않ìŒ" + +#: parser/parse_clause.c:682 +#, c-format +msgid "" +"ROWS FROM() with multiple functions cannot have a column definition list" +msgstr "" + +#: parser/parse_clause.c:683 +#, c-format +msgid "" +"Put a separate column definition list for each function inside ROWS FROM()." +msgstr "" + +#: parser/parse_clause.c:689 +#, c-format +msgid "UNNEST() with multiple arguments cannot have a column definition list" +msgstr "" + +#: parser/parse_clause.c:690 +#, c-format +msgid "" +"Use separate UNNEST() calls inside ROWS FROM(), and attach a column " +"definition list to each one." +msgstr "" + +#: parser/parse_clause.c:697 +#, c-format +msgid "WITH ORDINALITY cannot be used with a column definition list" +msgstr "WITH ORDINALITY êµ¬ë¬¸ì€ ì¹¼ëŸ¼ ì •ì˜ ëª©ë¡ê³¼ 함께 쓸 수 없습니다." + +#: parser/parse_clause.c:698 +#, c-format +msgid "Put the column definition list inside ROWS FROM()." +msgstr "ROWS FROM() ì•ˆì— ì¹¼ëŸ¼ ì •ì˜ ëª©ë¡ì„ 넣으세요." + +#: parser/parse_clause.c:753 +#, c-format +msgid "tablesample method %s does not exist" +msgstr "\"%s\" í…Œì´ë¸” ìƒ˜í”Œë§ ë°©ë²•ì´ ì—†ìŠµë‹ˆë‹¤" + +#: parser/parse_clause.c:775 +#, c-format +msgid "tablesample method %s requires %d argument, not %d" +msgid_plural "tablesample method %s requires %d arguments, not %d" +msgstr[0] "\"%s\" í…Œì´ë¸” ìƒ˜í”Œë§ ë°©ë²• %dê°œ ì¸ìžë¥¼ 지정해야함, (현재 %dê°œ)" + +#: parser/parse_clause.c:809 +#, c-format +msgid "tablesample method %s does not support REPEATABLE" +msgstr "\"%s\" í…Œì´ë¸” ìƒ˜í”Œë§ ë°©ë²•ì€ REPEATABLE ì˜µì…˜ì„ ì§€ì›í•˜ì§€ 않ìŒ" + +#: parser/parse_clause.c:940 +#, c-format +msgid "TABLESAMPLE clause can only be applied to tables and materialized views" +msgstr "TABLESAMPLE ì ˆì€ í…Œì´ë¸”ê³¼ êµ¬ì²´í™”ëœ ë·°ì—서만 사용할 수 있습니다" + +#: parser/parse_clause.c:1110 +#, c-format +msgid "column name \"%s\" appears more than once in USING clause" +msgstr "USING ì ˆ ë‚´ì— ì—´ ì´ë¦„ \"%s\" ê°€ 한번 ì´ìƒ 사용ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: parser/parse_clause.c:1125 +#, c-format +msgid "common column name \"%s\" appears more than once in left table" +msgstr "left table ë‚´ì— common column ì´ë¦„ \"%s\" ê°€ 한번 ì´ìƒ 사용ë˜ì—ˆë‹¤" + +#: parser/parse_clause.c:1134 +#, c-format +msgid "column \"%s\" specified in USING clause does not exist in left table" +msgstr "USING ì¡°ê±´ì ˆì—서 지정한 \"%s\" ì—´ì´ ì™¼ìª½ í…Œì´ë¸”ì— ì—†ìŒ" + +#: parser/parse_clause.c:1148 +#, c-format +msgid "common column name \"%s\" appears more than once in right table" +msgstr "common column name \"%s\"ê°€ right table ì— í•œë²ˆ ì´ìƒ 사용ë˜ì—ˆë‹¤" + +#: parser/parse_clause.c:1157 +#, c-format +msgid "column \"%s\" specified in USING clause does not exist in right table" +msgstr "USING ì¡°ê±´ì ˆì—서 지정한 \"%s\" ì—´ì´ ì˜¤ë¥¸ìª½ í…Œì´ë¸”ì— ì—†ìŒ" + +#: parser/parse_clause.c:1211 +#, c-format +msgid "column alias list for \"%s\" has too many entries" +msgstr " \"%s\" 를 위한 ì—´ alias list ì— ë„ˆë¬´ ë§Žì€ entry ê°€ í¬í•¨ë˜ì–´ 있다" + +#. translator: %s is name of a SQL construct, eg LIMIT +#: parser/parse_clause.c:1520 +#, c-format +msgid "argument of %s must not contain variables" +msgstr "%s ì˜ ì¸ìžë¡œ 변수를 í¬í•¨í•  수 없습니다." + +#. translator: first %s is name of a SQL construct, eg ORDER BY +#: parser/parse_clause.c:1685 +#, c-format +msgid "%s \"%s\" is ambiguous" +msgstr "%s \"%s\" ê°€ 명확하지 ì•Šì€ í‘œí˜„ìž…ë‹ˆë‹¤." + +#. translator: %s is name of a SQL construct, eg ORDER BY +#: parser/parse_clause.c:1714 +#, c-format +msgid "non-integer constant in %s" +msgstr "정수가 아닌 ìƒìˆ˜ê°€ %s ì— í¬í•¨ë˜ì–´ 있습니다" + +#. translator: %s is name of a SQL construct, eg ORDER BY +#: parser/parse_clause.c:1736 +#, c-format +msgid "%s position %d is not in select list" +msgstr "%s position %d ê°€ select list ì— í¬í•¨ë˜ì–´ 있지 않습니다" + +#: parser/parse_clause.c:2178 +#, c-format +msgid "CUBE is limited to 12 elements" +msgstr "CUBE ì¸ìžë¡œëŠ” 12ê°œ ì´í•˜ì˜ ì¸ìžë§Œ 허용합니다" + +#: parser/parse_clause.c:2384 +#, c-format +msgid "window \"%s\" is already defined" +msgstr "\"%s\" ì´ë¦„ì˜ ìœˆë„ìš° 함수가 ì´ë¯¸ ì •ì˜ë¨" + +#: parser/parse_clause.c:2446 +#, c-format +msgid "cannot override PARTITION BY clause of window \"%s\"" +msgstr "\"%s\" ì°½ì˜ PARTITION BY ì ˆì„ ìž¬ì •ì˜í•  수 ì—†ìŒ" + +#: parser/parse_clause.c:2458 +#, c-format +msgid "cannot override ORDER BY clause of window \"%s\"" +msgstr "\"%s\" ì°½ì˜ ORDER BY ì ˆì„ ìž¬ì •ì˜í•  수 ì—†ìŒ" + +#: parser/parse_clause.c:2488 parser/parse_clause.c:2494 +#, c-format +msgid "cannot copy window \"%s\" because it has a frame clause" +msgstr "프래임 ì ˆì´ ìžˆì–´, \"%s\" 윈ë„우를 복사할 수 ì—†ìŒ." + +#: parser/parse_clause.c:2496 +#, c-format +msgid "Omit the parentheses in this OVER clause." +msgstr "OVER ì ˆì— ê´„í˜¸ê°€ 빠졌ìŒ" + +#: parser/parse_clause.c:2562 +#, c-format +msgid "" +"in an aggregate with DISTINCT, ORDER BY expressions must appear in argument " +"list" +msgstr "" +"DISTINCT, ORDER BY 표현ì‹ì„ 집계 함수와 쓸 때는, 반드시 select list ì— ë‚˜íƒ€ë‚˜" +"야만 합니다" + +#: parser/parse_clause.c:2563 +#, c-format +msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list" +msgstr "" +"SELECT DISTINCT, ORDER BY 표현ì‹ì„ 위해서 반드시 select list ì— ë‚˜íƒ€ë‚˜ì•¼ë§Œ í•©" +"니다" + +#: parser/parse_clause.c:2596 +#, c-format +msgid "an aggregate with DISTINCT must have at least one argument" +msgstr "DISTINCT 예약어로 집계를 í•  경우 ì ì–´ë„ í•˜ë‚˜ì˜ ì¸ìžëŠ” 있어야 함" + +#: parser/parse_clause.c:2597 +#, c-format +msgid "SELECT DISTINCT must have at least one column" +msgstr "SELECT DISTINCT êµ¬ë¬¸ì€ ì ì–´ë„ 한 ê°œ ì´ìƒì˜ ì¹¼ëŸ¼ì´ ìžˆì–´ì•¼ 합니다" + +#: parser/parse_clause.c:2663 parser/parse_clause.c:2695 +#, c-format +msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions" +msgstr "" +"SELECT DISTINCT ON 표현ì‹ì€ 반드시 초기 ORDER BY 표현ì‹ê³¼ ì¼ì¹˜í•˜ì—¬ì•¼ 한다" + +#: parser/parse_clause.c:2774 +#, c-format +msgid "ASC/DESC is not allowed in ON CONFLICT clause" +msgstr "ASC/DESC 예약어는 ON CONFLICT 절과 함께 사용할 수 없습니다." + +#: parser/parse_clause.c:2780 +#, c-format +msgid "NULLS FIRST/LAST is not allowed in ON CONFLICT clause" +msgstr "NULLS FIRST/LAST ì ˆì€ ON CONFLICT 절과 함께 사용할 수 없습니다." + +#: parser/parse_clause.c:2860 +#, c-format +msgid "" +"ON CONFLICT DO UPDATE requires inference specification or constraint name" +msgstr "" + +#: parser/parse_clause.c:2861 +#, c-format +msgid "For example, ON CONFLICT (column_name)." +msgstr "사용예, ON CONFLICT (칼럼ì´ë¦„)." + +#: parser/parse_clause.c:2872 +#, c-format +msgid "ON CONFLICT is not supported with system catalog tables" +msgstr "ON CONFLICT ì ˆì€ ì‹œìŠ¤í…œ 카탈로그 í…Œì´ë¸”ì—서는 사용할 수 없습니다" + +#: parser/parse_clause.c:2880 +#, c-format +msgid "ON CONFLICT is not supported on table \"%s\" used as a catalog table" +msgstr "" +"\"%s\" í…Œì´ë¸”ì—는 ON CONFLICT ê¸°ëŠ¥ì„ ì‚¬ìš©í•  수 없습니다. ì´ í…Œì´ë¸”ì€ ì¹´íƒˆë¡œ" +"ê·¸ í…Œì´ë¸”로 사용ë©ë‹ˆë‹¤." + +#: parser/parse_clause.c:3012 +#, c-format +msgid "operator %s is not a valid ordering operator" +msgstr "%s ì—°ì‚°ìžëŠ” 유효한 순서 지정 ì—°ì‚°ìžê°€ 아님" + +#: parser/parse_clause.c:3014 +#, c-format +msgid "" +"Ordering operators must be \"<\" or \">\" members of btree operator families." +msgstr "" +"순서 지정 ì—°ì‚°ìžëŠ” btree ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì˜ \"<\" or \">\" 멤버여야 합니다." + +#: parser/parse_coerce.c:971 parser/parse_coerce.c:1001 +#: parser/parse_coerce.c:1019 parser/parse_coerce.c:1034 +#: parser/parse_expr.c:2053 parser/parse_expr.c:2577 parser/parse_target.c:885 +#, c-format +msgid "cannot cast type %s to %s" +msgstr "%s ìžë£Œí˜•ì„ %s ìžë£Œí˜•으로 형변환할 수 없습니다." + +#: parser/parse_coerce.c:1004 +#, c-format +msgid "Input has too few columns." +msgstr "ìž…ë ¥ì— ë„ˆë¬´ ì ì€ ì—´ì„ ì§€ì •í–ˆìŠµë‹ˆë‹¤." + +#: parser/parse_coerce.c:1022 +#, c-format +msgid "Cannot cast type %s to %s in column %d." +msgstr "%s ìžë£Œí˜•ì„ %s ìžë£Œí˜•으로 형변환할 수 없습니다 해당 ì—´ %d." + +#: parser/parse_coerce.c:1037 +#, c-format +msgid "Input has too many columns." +msgstr "ìž…ë ¥ì— ë„ˆë¬´ ë§Žì€ ì—´ì„ ì§€ì •í–ˆìŠµë‹ˆë‹¤." + +#. translator: first %s is name of a SQL construct, eg WHERE +#: parser/parse_coerce.c:1080 +#, c-format +msgid "argument of %s must be type boolean, not type %s" +msgstr "%sì˜ ì¸ìžëŠ” %s ìžë£Œí˜•ì´ ì•„ë‹ˆë¼, boolean ìžë£Œí˜•ì´ì–´ì•¼ 합니다" + +#. translator: %s is name of a SQL construct, eg WHERE +#. translator: %s is name of a SQL construct, eg LIMIT +#: parser/parse_coerce.c:1090 parser/parse_coerce.c:1139 +#, c-format +msgid "argument of %s must not return a set" +msgstr "%s ì˜ ì¸ìžëŠ” set(ì§‘í•©) ì„ return할수 없습니다." + +#. translator: first %s is name of a SQL construct, eg LIMIT +#: parser/parse_coerce.c:1127 +#, c-format +msgid "argument of %s must be type %s, not type %s" +msgstr "%sì˜ ì¸ìžëŠ” %s ìžë£Œí˜•ì´ì–´ì•¼ 함(%s ìžë£Œí˜•ì´ ì•„ë‹˜)" + +#. translator: first %s is name of a SQL construct, eg CASE +#: parser/parse_coerce.c:1260 +#, c-format +msgid "%s types %s and %s cannot be matched" +msgstr "%s ìžë£Œí˜• %s 와 %s 는 서로 매치ë˜ì§€ 않습니다" + +#. translator: first %s is name of a SQL construct, eg CASE +#: parser/parse_coerce.c:1327 +#, c-format +msgid "%s could not convert type %s to %s" +msgstr "%s 는 ìžë£Œí˜• %s ìžë£Œí˜•ì—서 %s ìžë£Œí˜•으로 ë³€í™˜ë  ìˆ˜ 없습니다." + +#: parser/parse_coerce.c:1629 +#, c-format +msgid "arguments declared \"anyelement\" are not all alike" +msgstr "\"anyelement\" 로 ì„ ì–¸ëœ ì¸ìžë“¤ì´ ëª¨ë‘ ê°™ì§€ 않습니다" + +#: parser/parse_coerce.c:1649 +#, c-format +msgid "arguments declared \"anyarray\" are not all alike" +msgstr "\"anyarray\" 로 ì„ ì–¸ëœ ì¸ìžë“¤ì´ ëª¨ë‘ ê°™ì§€ 않습니다." + +#: parser/parse_coerce.c:1669 +#, c-format +msgid "arguments declared \"anyrange\" are not all alike" +msgstr "\"anyarray\" 로 ì„ ì–¸ëœ ì¸ìžë“¤ì´ ëª¨ë‘ ê°™ì§€ 않습니다." + +#: parser/parse_coerce.c:1698 parser/parse_coerce.c:1909 +#: parser/parse_coerce.c:1943 +#, c-format +msgid "argument declared \"anyarray\" is not an array but type %s" +msgstr "\"anyarray\" 로 ì„ ì–¸ëœ ì¸ìžë“¤ì´ array ê°€ 아니고, %s ìžë£Œí˜•입니다" + +#: parser/parse_coerce.c:1714 +#, c-format +msgid "" +"argument declared \"anyarray\" is not consistent with argument declared " +"\"anyelement\"" +msgstr "" +"\"anyarray\" 로 ì„ ì–¸ëœ ì¸ìžë“¤ì´ \"anyelement\" 로 ì„ ì–¸ëœ ì¸ìžë“¤ê³¼ ì¼ê´€ì„±ì´ 있" +"질 않습니다" + +#: parser/parse_coerce.c:1735 parser/parse_coerce.c:1956 +#, c-format +msgid "argument declared \"anyrange\" is not a range type but type %s" +msgstr "\"anyarray\" 로 ì„ ì–¸ëœ ì¸ìžë“¤ì´ range ìžë£Œí˜•ì´ ì•„ë‹ˆê³ , %s ìžë£Œí˜•입니다" + +#: parser/parse_coerce.c:1751 +#, c-format +msgid "" +"argument declared \"anyrange\" is not consistent with argument declared " +"\"anyelement\"" +msgstr "" +"\"anyrange\" 로 ì„ ì–¸ëœ ì¸ìžë“¤ì´ \"anyelement\" 로 ì„ ì–¸ëœ ì¸ìžë“¤ê³¼ ì¼ê´€ì„±ì´ 있" +"질 않습니다" + +#: parser/parse_coerce.c:1771 +#, c-format +msgid "could not determine polymorphic type because input has type \"unknown\"" +msgstr "ìž…ë ¥ì— \"unknown\" 형ì‹ì´ 있으므로 다변 형ì‹ì„ 확ì¸í•  수 ì—†ìŒ" + +#: parser/parse_coerce.c:1781 +#, c-format +msgid "type matched to anynonarray is an array type: %s" +msgstr "anynonarrayì— ì¼ì¹˜ëœ 형ì‹ì´ ë°°ì—´ 형ì‹ìž„: %s" + +#: parser/parse_coerce.c:1791 +#, c-format +msgid "type matched to anyenum is not an enum type: %s" +msgstr "anyenumì— ì¼ì¹˜ëœ 형ì‹ì´ ì—´ê±° 형ì‹ì´ 아님: %s" + +#: parser/parse_coerce.c:1831 parser/parse_coerce.c:1861 +#, c-format +msgid "could not find range type for data type %s" +msgstr "ìžë£Œí˜• %s ì— ëŒ€í•´ì„œëŠ” ë°°ì—´ ìžë£Œí˜•ì„ ì‚¬ìš©í•  수 없습니다" + +#: parser/parse_collate.c:228 parser/parse_collate.c:475 +#: parser/parse_collate.c:986 +#, c-format +msgid "collation mismatch between implicit collations \"%s\" and \"%s\"" +msgstr "" +"암묵ì ìœ¼ë¡œ ì„ íƒëœ \"%s\" ì •ë ¬ 규칙와 \"%s\" ì •ë ¬ ê·œì¹™ì´ ë§¤ì¹­ë˜ì§€ 않습니다" + +#: parser/parse_collate.c:231 parser/parse_collate.c:478 +#: parser/parse_collate.c:989 +#, c-format +msgid "" +"You can choose the collation by applying the COLLATE clause to one or both " +"expressions." +msgstr "한 쪽 ë˜ëŠ” 서로 COLLATE ì ˆì„ ì´ìš©í•´ ì •ë ¬ ê·œì¹™ì„ ì§€ì •í•˜ì„¸ìš”" + +#: parser/parse_collate.c:834 +#, c-format +msgid "collation mismatch between explicit collations \"%s\" and \"%s\"" +msgstr "" +"명시ì ìœ¼ë¡œ 지정한 \"%s\" 정렬규칙와 \"%s\" ì •ë ¬ê·œì¹™ì´ ë§¤ì¹­ë˜ì§€ 않습니다" + +#: parser/parse_cte.c:42 +#, c-format +msgid "" +"recursive reference to query \"%s\" must not appear within its non-recursive " +"term" +msgstr "\"%s\" ì¿¼ë¦¬ì— ëŒ€í•œ 재귀 참조가 비재귀 구문 안ì—는 없어야 함" + +#: parser/parse_cte.c:44 +#, c-format +msgid "recursive reference to query \"%s\" must not appear within a subquery" +msgstr "\"%s\" ì¿¼ë¦¬ì— ëŒ€í•œ 재귀 참조가 하위 쿼리 ë‚´ì— í‘œì‹œë˜ì§€ 않아야 함" + +#: parser/parse_cte.c:46 +#, c-format +msgid "" +"recursive reference to query \"%s\" must not appear within an outer join" +msgstr "\"%s\" ì¿¼ë¦¬ì— ëŒ€í•œ 재귀 참조가 outer join 구문 ì•ˆì— ì—†ì–´ì•¼ 함" + +#: parser/parse_cte.c:48 +#, c-format +msgid "recursive reference to query \"%s\" must not appear within INTERSECT" +msgstr "\"%s\" ì¿¼ë¦¬ì— ëŒ€í•œ 재귀 참조가 INTERSECT ë‚´ì— í‘œì‹œë˜ì§€ 않아야 함" + +#: parser/parse_cte.c:50 +#, c-format +msgid "recursive reference to query \"%s\" must not appear within EXCEPT" +msgstr "\"%s\" ì¿¼ë¦¬ì— ëŒ€í•œ 재귀 참조가 EXCEPT ë‚´ì— í‘œì‹œë˜ì§€ 않아야 함" + +#: parser/parse_cte.c:132 +#, c-format +msgid "WITH query name \"%s\" specified more than once" +msgstr "\"%s\" WITH 쿼리 ì´ë¦„ì´ ì—¬ëŸ¬ 번 지정ë¨" + +#: parser/parse_cte.c:264 +#, c-format +msgid "" +"WITH clause containing a data-modifying statement must be at the top level" +msgstr "ìžë£Œë¥¼ 변경하는 êµ¬ë¬¸ì´ ìžˆëŠ” WITH ì ˆì€ ìµœìƒìœ„ ìˆ˜ì¤€ì— ìžˆì–´ì•¼ 합니다" + +#: parser/parse_cte.c:313 +#, c-format +msgid "" +"recursive query \"%s\" column %d has type %s in non-recursive term but type " +"%s overall" +msgstr "" +"\"%s\" 재귀 ì¿¼ë¦¬ì˜ %d 번째 ì¹¼ëŸ¼ì€ ë¹„ìž¬ê·€ ì¡°ê±´ì— %s ìžë£Œí˜•ì„ í¬í•¨í•˜ëŠ”ë° ì „ì²´ì " +"으로는 %s ìžë£Œí˜•ìž„" + +#: parser/parse_cte.c:319 +#, c-format +msgid "Cast the output of the non-recursive term to the correct type." +msgstr "비재귀 ì¡°ê±´ì˜ ì¶œë ¥ì„ ì˜¬ë°”ë¥¸ 형ì‹ìœ¼ë¡œ 형변환하십시오." + +#: parser/parse_cte.c:324 +#, c-format +msgid "" +"recursive query \"%s\" column %d has collation \"%s\" in non-recursive term " +"but collation \"%s\" overall" +msgstr "" +"\"%s\" 재귀 ì¿¼ë¦¬ì˜ %d 번째 ì¹¼ëŸ¼ì€ ë¹„ìž¬ê·€ ì¡°ê±´ì— %s ìžë£Œí˜•ì„ í¬í•¨í•˜ëŠ”ë° ì „ì²´ì " +"으로는 %s ìžë£Œí˜•ìž„" + +#: parser/parse_cte.c:328 +#, c-format +msgid "Use the COLLATE clause to set the collation of the non-recursive term." +msgstr "" + +#: parser/parse_cte.c:419 +#, c-format +msgid "WITH query \"%s\" has %d columns available but %d columns specified" +msgstr "" +"\"%s\" WITH 쿼리ì—는 %dê°œì˜ ì¹¼ëŸ¼ì„ ì‚¬ìš©í•  수 ìžˆëŠ”ë° %dê°œì˜ ì¹¼ëŸ¼ì´ ì§€ì •ë¨" + +#: parser/parse_cte.c:599 +#, c-format +msgid "mutual recursion between WITH items is not implemented" +msgstr "WITH 항목 ê°„ì˜ ìƒí˜¸ 재귀가 구현ë˜ì§€ 않ìŒ" + +#: parser/parse_cte.c:651 +#, c-format +msgid "recursive query \"%s\" must not contain data-modifying statements" +msgstr "\"%s\" 재귀 ì¿¼ë¦¬ì— ìžë£Œ 변경 êµ¬ë¬¸ì´ í¬í•¨ë  수 없습니다." + +#: parser/parse_cte.c:659 +#, c-format +msgid "" +"recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] " +"recursive-term" +msgstr "\"%s\" 재귀 ì¿¼ë¦¬ì— ë¹„ìž¬ê·€ ì¡°ê±´ í˜•íƒœì˜ UNION [ALL] 재귀 ì¡°ê±´ì´ ì—†ìŒ" + +#: parser/parse_cte.c:703 +#, c-format +msgid "ORDER BY in a recursive query is not implemented" +msgstr "재귀 ì¿¼ë¦¬ì˜ ORDER BYê°€ 구현ë˜ì§€ 않ìŒ" + +#: parser/parse_cte.c:709 +#, c-format +msgid "OFFSET in a recursive query is not implemented" +msgstr "재귀 ì¿¼ë¦¬ì˜ OFFSETì´ êµ¬í˜„ë˜ì§€ 않ìŒ" + +#: parser/parse_cte.c:715 +#, c-format +msgid "LIMIT in a recursive query is not implemented" +msgstr "재귀 ì¿¼ë¦¬ì˜ LIMITê°€ 구현ë˜ì§€ 않ìŒ" + +#: parser/parse_cte.c:721 +#, c-format +msgid "FOR UPDATE/SHARE in a recursive query is not implemented" +msgstr "재귀 ì¿¼ë¦¬ì˜ FOR UPDATE/SHAREê°€ 구현ë˜ì§€ 않ìŒ" + +#: parser/parse_cte.c:778 +#, c-format +msgid "recursive reference to query \"%s\" must not appear more than once" +msgstr "\"%s\" ì¿¼ë¦¬ì— ëŒ€í•œ 재귀 참조가 여러 번 표시ë˜ì§€ 않아야 함" + +#: parser/parse_expr.c:390 parser/parse_relation.c:3176 +#: parser/parse_relation.c:3196 +#, c-format +msgid "column %s.%s does not exist" +msgstr "%s.%s 칼럼 ì—†ìŒ" + +#: parser/parse_expr.c:402 +#, c-format +msgid "column \"%s\" not found in data type %s" +msgstr "\"%s\" ì—´ì€ %s ìžë£Œí˜•ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: parser/parse_expr.c:408 +#, c-format +msgid "could not identify column \"%s\" in record data type" +msgstr "레코드 ë°ì´í„° 형ì‹ì—서 \"%s\" ì—´ì„ ì‹ë³„í•  수 ì—†ìŒ" + +#: parser/parse_expr.c:414 +#, c-format +msgid "column notation .%s applied to type %s, which is not a composite type" +msgstr "" +".%s í‘œí˜„ì´ %s ìžë£Œí˜• 사용ë˜ì—ˆëŠ”ë°, ì´ëŠ” 복소수형 (complex type)ì´ ì•„ë‹™ë‹ˆë‹¤" + +#: parser/parse_expr.c:444 parser/parse_target.c:671 +#, c-format +msgid "row expansion via \"*\" is not supported here" +msgstr "\"*\"를 통한 칼럼 í™•ìž¥ì€ ì—¬ê¸°ì„œ ì§€ì›ë˜ì§€ 않ìŒ" + +#: parser/parse_expr.c:770 parser/parse_relation.c:668 +#: parser/parse_relation.c:768 parser/parse_target.c:1120 +#, c-format +msgid "column reference \"%s\" is ambiguous" +msgstr "칼럼 참조 \"%s\" ê°€ 모호합니다." + +#: parser/parse_expr.c:826 parser/parse_param.c:110 parser/parse_param.c:142 +#: parser/parse_param.c:199 parser/parse_param.c:298 +#, c-format +msgid "there is no parameter $%d" +msgstr "$%d 매개 변수가 없습니다" + +#: parser/parse_expr.c:1067 +#, c-format +msgid "NULLIF requires = operator to yield boolean" +msgstr "NULIF ì ˆì€ boolean ê°’ì„ ì–»ê¸° 위해서 = ì—°ì‚°ìžë¥¼ 필요로 합니다" + +#: parser/parse_expr.c:1501 gram.y:9887 +#, c-format +msgid "number of columns does not match number of values" +msgstr "ì—´ì˜ ê°œìˆ˜ì™€, valuesì˜ ê°œìˆ˜ê°€ 틀립니다" + +#: parser/parse_expr.c:1730 +msgid "cannot use subquery in check constraint" +msgstr "ì²´í¬ ì œì•½ ì¡°ê±´ì—서는 서브쿼리를 사용할 수 없습니다" + +#: parser/parse_expr.c:1734 +msgid "cannot use subquery in DEFAULT expression" +msgstr "DEFAULT ì‹ì—서는 서브쿼리를 사용할 수 없습니다" + +#: parser/parse_expr.c:1737 +msgid "cannot use subquery in index expression" +msgstr "ì¸ë±ìФ ì‹(expression)ì— ì„œë¸Œì¿¼ë¦¬ë¥¼ 사용할 수 없습니다" + +#: parser/parse_expr.c:1740 +msgid "cannot use subquery in index predicate" +msgstr "ì¸ë±ìФ 술어(predicate)ì— ì„œë¸Œì¿¼ë¦¬ë¥¼ 사용할 수 없습니다" + +#: parser/parse_expr.c:1743 +msgid "cannot use subquery in transform expression" +msgstr "transform ì‹(expression)ì— ì„œë¸Œì¿¼ë¦¬ë¥¼ 사용할 수 없습니다" + +#: parser/parse_expr.c:1746 +msgid "cannot use subquery in EXECUTE parameter" +msgstr "EXECUTE 매개 변수로 서브쿼리를 사용할 수 없습니다" + +#: parser/parse_expr.c:1749 +msgid "cannot use subquery in trigger WHEN condition" +msgstr "트리거 WHEN ì¡°ê±´ì ˆì—서는 서브쿼리를 사용할 수 없습니다" + +#: parser/parse_expr.c:1803 +#, c-format +msgid "subquery must return only one column" +msgstr "subquery는 오로지 í•œê°œì˜ ì—´ë§Œì„ ëŒë ¤ 주어야 합니다." + +#: parser/parse_expr.c:1887 +#, c-format +msgid "subquery has too many columns" +msgstr "subquery ì—ê°€ 너무 ë§Žì€ ì—´ì„ ê°€ì§‘ë‹ˆë‹¤" + +#: parser/parse_expr.c:1892 +#, c-format +msgid "subquery has too few columns" +msgstr "subquery ì— ëª…ì‹œëœ ì—´ 수가 너무 ì ë‹¤" + +#: parser/parse_expr.c:1993 +#, c-format +msgid "cannot determine type of empty array" +msgstr "빈 ë°°ì—´ì˜ ìžë£Œí˜•ì„ í™•ì¸í•  수 ì—†ìŒ" + +#: parser/parse_expr.c:1994 +#, c-format +msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]." +msgstr "ì›í•˜ëŠ” 형ì‹ìœ¼ë¡œ 명시ì ìœ¼ë¡œ 형변환하십시오(예: ARRAY[]::integer[])." + +#: parser/parse_expr.c:2008 +#, c-format +msgid "could not find element type for data type %s" +msgstr "%s ìžë£Œí˜•ì˜ ìš”ì†Œ ìžë£Œí˜•ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: parser/parse_expr.c:2231 +#, c-format +msgid "unnamed XML attribute value must be a column reference" +msgstr "ì´ë¦„ì´ ì§€ì •ë˜ì§€ ì•Šì€ XML ì†ì„± ê°’ì€ ì—´ 참조여야 함" + +#: parser/parse_expr.c:2232 +#, c-format +msgid "unnamed XML element value must be a column reference" +msgstr "ì´ë¦„ì´ ì§€ì •ë˜ì§€ ì•Šì€ XML 요소 ê°’ì€ ì—´ 참조여야 함" + +#: parser/parse_expr.c:2247 +#, c-format +msgid "XML attribute name \"%s\" appears more than once" +msgstr "\"%s\" XML ì†ì„± ì´ë¦„ì´ ì—¬ëŸ¬ 번 표시ë¨" + +#: parser/parse_expr.c:2354 +#, c-format +msgid "cannot cast XMLSERIALIZE result to %s" +msgstr "XMLSERIALIZE 결과를 %s 형으로 바꿀 수 ì—†ìŒ" + +#: parser/parse_expr.c:2650 parser/parse_expr.c:2846 +#, c-format +msgid "unequal number of entries in row expressions" +msgstr "í–‰ 표현ì‹ì—서 항목 수가 ì¼ì¹˜í•˜ì§€ 않습니다" + +#: parser/parse_expr.c:2660 +#, c-format +msgid "cannot compare rows of zero length" +msgstr "길ì´ê°€ ì˜(0)ì¸ í–‰ë“¤ì€ ë¹„êµí•  수 없습니다" + +#: parser/parse_expr.c:2685 +#, c-format +msgid "row comparison operator must yield type boolean, not type %s" +msgstr "" +"í–‰ ë¹„êµ ì—°ì‚°ìžëŠ” booleaní˜•ì„ ë¦¬í„´í•´ì•¼í•©ë‹ˆë‹¤. %s ìžë£Œí˜•ì„ ì‚¬ìš©í•  수 없습니다" + +#: parser/parse_expr.c:2692 +#, c-format +msgid "row comparison operator must not return a set" +msgstr "í–‰ ë¹„êµ ì—°ì‚°ìžëŠ” setì„ ë¦¬í„´í•  수 없습니다" + +#: parser/parse_expr.c:2751 parser/parse_expr.c:2792 +#, c-format +msgid "could not determine interpretation of row comparison operator %s" +msgstr "%s í–‰ ë¹„êµ ì—°ì‚°ìžì˜ êµ¬ë¬¸ì„ ë¶„ì„í•  수 없습니다" + +#: parser/parse_expr.c:2753 +#, c-format +msgid "" +"Row comparison operators must be associated with btree operator families." +msgstr "로우 ë¹„êµ ì—°ì‚°ìžë¥¼ btree ì—°ì‚°ìž íŒ¨ë°€ë¦¬ì™€ 연결해야 함" + +#: parser/parse_expr.c:2794 +#, c-format +msgid "There are multiple equally-plausible candidates." +msgstr "여러 가지 등ì‹ë“¤ì´ 성립할 수 있는 ê°€ëŠ¥ì„±ì´ ìžˆìŠµë‹ˆë‹¤" + +#: parser/parse_expr.c:2886 +#, c-format +msgid "IS DISTINCT FROM requires = operator to yield boolean" +msgstr "" +"IS DISTINCT FROM ì ˆì—서 boolean ê°’ì„ ì–»ê¸° 위해서 = ì—°ì‚°ìžë¥¼ 필요로 합니다" + +#: parser/parse_expr.c:3199 parser/parse_expr.c:3217 +#, c-format +msgid "operator precedence change: %s is now lower precedence than %s" +msgstr "ì—°ì‚°ìž ìš°ì„ ìˆœìœ„ 변경ë¨: %s ì—°ì‚°ìž ìš°ì„ ìˆœìœ„ê°€ %s 연산보다 낮습니다" + +#: parser/parse_func.c:174 +#, c-format +msgid "argument name \"%s\" used more than once" +msgstr "\"%s\" ì´ë¦„ì˜ ë§¤ê°œ 변수가 여러 번 사용 ë¨" + +#: parser/parse_func.c:185 +#, c-format +msgid "positional argument cannot follow named argument" +msgstr "" + +#: parser/parse_func.c:270 +#, c-format +msgid "%s(*) specified, but %s is not an aggregate function" +msgstr "%s(*) ê°€ 명시ë˜ì–´ 있는ë°, ì´ %s 함수는 집계 함수가 아닙니다." + +#: parser/parse_func.c:277 +#, c-format +msgid "DISTINCT specified, but %s is not an aggregate function" +msgstr "DISTINCT ê°€ 명시ë˜ì–´ 있는ë°, 그러나 ì´ %s 함수는 집계 함수가 아닙니다" + +#: parser/parse_func.c:283 +#, c-format +msgid "WITHIN GROUP specified, but %s is not an aggregate function" +msgstr "WITHIN GROUP ì ˆì´ ëª…ì‹œë˜ì–´ 있는ë°, ì´ %s 함수는 집계 함수가 아닙니다" + +#: parser/parse_func.c:289 +#, c-format +msgid "ORDER BY specified, but %s is not an aggregate function" +msgstr "ORDER BY ì ˆì´ ëª…ì‹œë˜ì–´ 있는ë°, ì´ %s 함수는 집계 함수가 아닙니다." + +#: parser/parse_func.c:295 +#, c-format +msgid "FILTER specified, but %s is not an aggregate function" +msgstr "FILTER ì ˆì´ ëª…ì‹œë˜ì–´ 있는ë°, ì´ %s 함수는 집계 함수가 아닙니다" + +#: parser/parse_func.c:301 +#, c-format +msgid "" +"OVER specified, but %s is not a window function nor an aggregate function" +msgstr "OVER ì ˆì´ ì§€ì •ë˜ì—ˆëŠ”ë° %s 함수는 윈ë„ìš° 함수 ë˜ëŠ” 집계 함수가 아님" + +#: parser/parse_func.c:331 +#, c-format +msgid "WITHIN GROUP is required for ordered-set aggregate %s" +msgstr "순서가 있는 ì§‘ê³„í•¨ìˆ˜ì¸ %s ë•Œë¬¸ì— WITHIN GROUP ì ˆì´ í•„ìš”í•©ë‹ˆë‹¤" + +#: parser/parse_func.c:337 +#, c-format +msgid "OVER is not supported for ordered-set aggregate %s" +msgstr "OVER ì ˆì—서 ì •ë ¬ëœ ì„¸íŠ¸ 집계 %s 함수를 ì§€ì›í•˜ì§€ 않ìŒ" + +#: parser/parse_func.c:368 parser/parse_func.c:397 +#, c-format +msgid "" +"There is an ordered-set aggregate %s, but it requires %d direct arguments, " +"not %d." +msgstr "" + +#: parser/parse_func.c:422 +#, c-format +msgid "" +"To use the hypothetical-set aggregate %s, the number of hypothetical direct " +"arguments (here %d) must match the number of ordering columns (here %d)." +msgstr "" + +#: parser/parse_func.c:436 +#, c-format +msgid "" +"There is an ordered-set aggregate %s, but it requires at least %d direct " +"arguments." +msgstr "" + +#: parser/parse_func.c:455 +#, c-format +msgid "%s is not an ordered-set aggregate, so it cannot have WITHIN GROUP" +msgstr "" +"%s 함수는 순사가 있는 세트 집계함수가 아니여서 WITHIN GROUP ì ˆì„ ì‚¬ìš©í•  수 ì—†" +"습니다" + +#: parser/parse_func.c:468 +#, c-format +msgid "window function %s requires an OVER clause" +msgstr "%s 윈ë„ìš° 함수 호출ì—는 OVER ì ˆì´ í•„ìš”í•¨" + +#: parser/parse_func.c:475 +#, c-format +msgid "window function %s cannot have WITHIN GROUP" +msgstr "%s 윈ë„ìš° 함수는 WITHIN GROUP ì ˆì„ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: parser/parse_func.c:496 +#, c-format +msgid "function %s is not unique" +msgstr "함수 %s 는 유ì¼ì„±ì„ 가지지 못합니다(not unique)" + +#: parser/parse_func.c:499 +#, c-format +msgid "" +"Could not choose a best candidate function. You might need to add explicit " +"type casts." +msgstr "" +"ì œì¼ ì ë‹¹í•œ 함수를 ì„ íƒí•  수 없습니다. ëª…ì‹œì  í˜•ë³€í™˜ìžë¥¼ 추가해야 í•  ìˆ˜ë„ ìžˆ" +"습니다." + +#: parser/parse_func.c:510 +#, c-format +msgid "" +"No aggregate function matches the given name and argument types. Perhaps you " +"misplaced ORDER BY; ORDER BY must appear after all regular arguments of the " +"aggregate." +msgstr "" +"ì§€ì •ëœ ì´ë¦„ ë° ì¸ìž ìžë£Œí˜•ê³¼ ì¼ì¹˜í•˜ëŠ” 집계 함수가 없습니다. ORDER BY ì ˆì„ ë°”" +"른 ìœ„ì¹˜ì— ì“°ì§€ ì•Šì€ ê²ƒ 같습니다. ORDER BY ì ˆì€ ëª¨ë“  집계용 ì¸ìžë“¤ 맨 ë’¤ì— ìžˆ" +"어야 합니다." + +#: parser/parse_func.c:521 +#, c-format +msgid "" +"No function matches the given name and argument types. You might need to add " +"explicit type casts." +msgstr "" +"ì§€ì •ëœ ì´ë¦„ ë° ì¸ìž ìžë£Œí˜•ê³¼ ì¼ì¹˜í•˜ëŠ” 함수가 없습니다. ëª…ì‹œì  í˜•ë³€í™˜ìžë¥¼ 추가" +"해야 í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤." + +#: parser/parse_func.c:623 +#, c-format +msgid "VARIADIC argument must be an array" +msgstr "VARIADIC 매개 변수는 ë°°ì—´ì´ì–´ì•¼ 함" + +#: parser/parse_func.c:671 parser/parse_func.c:735 +#, c-format +msgid "%s(*) must be used to call a parameterless aggregate function" +msgstr "%s(*) 사용할 때는 ì´ í•¨ìˆ˜ê°€ 매개 변수 없는 집계 함수여야 합니다" + +#: parser/parse_func.c:678 +#, c-format +msgid "aggregates cannot return sets" +msgstr "집계 함수는 세트를 반환할 수 ì—†ìŒ" + +#: parser/parse_func.c:693 +#, c-format +msgid "aggregates cannot use named arguments" +msgstr "집계 함수는 ì¸ìž ì´ë¦„ì„ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: parser/parse_func.c:725 +#, c-format +msgid "DISTINCT is not implemented for window functions" +msgstr "윈ë„ìš° í•¨ìˆ˜ì— ëŒ€í•´ DISTINCTê°€ 구현ë˜ì§€ 않ìŒ" + +#: parser/parse_func.c:745 +#, c-format +msgid "aggregate ORDER BY is not implemented for window functions" +msgstr "윈ë„ìš° í•¨ìˆ˜ì— ëŒ€í•´ 집계용 ORDER BYê°€ 구현ë˜ì§€ 않ìŒ" + +#: parser/parse_func.c:754 +#, c-format +msgid "FILTER is not implemented for non-aggregate window functions" +msgstr "비집계 윈ë„ìš° í•¨ìˆ˜ì— ëŒ€í•´ FILTERê°€ 구현ë˜ì§€ 않ìŒ" + +#: parser/parse_func.c:760 +#, c-format +msgid "window functions cannot return sets" +msgstr "윈ë„ìš° 함수는 세트를 반환할 수 ì—†ìŒ" + +#: parser/parse_func.c:2010 +#, c-format +msgid "aggregate %s(*) does not exist" +msgstr "%s(*) 집계 함수 ì—†ìŒ" + +#: parser/parse_func.c:2015 +#, c-format +msgid "aggregate %s does not exist" +msgstr "%s 집계 함수 ì—†ìŒ" + +#: parser/parse_func.c:2034 +#, c-format +msgid "function %s is not an aggregate" +msgstr "%s 함수는 집계 함수가 아닙니다" + +#: parser/parse_node.c:84 +#, c-format +msgid "target lists can have at most %d entries" +msgstr "ëŒ€ìƒ ëª©ë¡ì€ 최대 %d ê°œì˜ í•­ëª©ì„ ì§€ì •í•  수 있습니다" + +#: parser/parse_node.c:253 +#, c-format +msgid "cannot subscript type %s because it is not an array" +msgstr "" +"ìžë£Œí˜• %s 는 ë°°ì—´ì´ ì•„ë‹ˆê¸° ë•Œë¬¸ì— ë°°ì—´ 하위 스í¬ë¦½íŠ¸ë¥¼ 기술할 수 없습니다." + +#: parser/parse_node.c:356 parser/parse_node.c:393 +#, c-format +msgid "array subscript must have type integer" +msgstr "ë°°ì—´ 하위 스í¬ë¦½íŠ¸ëŠ” 반드시 정수형ì´ì–´ì•¼ 합니다." + +#: parser/parse_node.c:424 +#, c-format +msgid "array assignment requires type %s but expression is of type %s" +msgstr "ë°°ì—´í• ë‹¹ì€ ìžë£Œí˜• %s ê°€ 필요하지만, 현재 표현ì‹ì´ %s ìžë£Œí˜•입니다" + +#: parser/parse_oper.c:125 parser/parse_oper.c:722 utils/adt/regproc.c:583 +#: utils/adt/regproc.c:603 utils/adt/regproc.c:787 +#, c-format +msgid "operator does not exist: %s" +msgstr "ì—°ì‚°ìž ì—†ìŒ: %s" + +#: parser/parse_oper.c:222 +#, c-format +msgid "Use an explicit ordering operator or modify the query." +msgstr "" +"명시ì ìœ¼ë¡œ 순차연산ìž(ordering operator) 를 사용하ë˜ì§€, ë˜ëŠ” query 를 수정하" +"ë„ë¡ í•˜ì„¸ìš”." + +#: parser/parse_oper.c:226 utils/adt/array_userfuncs.c:794 +#: utils/adt/array_userfuncs.c:933 utils/adt/arrayfuncs.c:3639 +#: utils/adt/arrayfuncs.c:4077 utils/adt/arrayfuncs.c:6039 +#: utils/adt/rowtypes.c:1167 +#, c-format +msgid "could not identify an equality operator for type %s" +msgstr "" +"%s ìžë£Œí˜•ì—서 사용할 ë™ë“± ì—°ì‚°ìž(equality operator)를 ì°¾ì„ ìˆ˜ 없습니다." + +#: parser/parse_oper.c:478 +#, c-format +msgid "operator requires run-time type coercion: %s" +msgstr "ì´ ì—°ì‚°ìžëŠ” ì‹¤í–‰ì‹œì— í˜• ê°•ì œì „í™”ì´ í•„ìš”í•©ë‹ˆë‹¤: %s" + +#: parser/parse_oper.c:714 +#, c-format +msgid "operator is not unique: %s" +msgstr "ì—°ì‚°ìžê°€ 고유하지 않습니다: %s" + +#: parser/parse_oper.c:716 +#, c-format +msgid "" +"Could not choose a best candidate operator. You might need to add explicit " +"type casts." +msgstr "" +"가장 ì ë‹¹í•œ ì—°ì‚°ìžë¥¼ ì„ íƒí•  수 없습니다. ëª…ì‹œì  í˜•ë³€í™˜ìžë¥¼ 추가해야 í•  ìˆ˜ë„ " +"있습니다." + +#: parser/parse_oper.c:724 +#, c-format +msgid "" +"No operator matches the given name and argument type(s). You might need to " +"add explicit type casts." +msgstr "" +"ì§€ì •ëœ ì´ë¦„ ë° ì¸ìž 형ì‹ê³¼ ì¼ì¹˜í•˜ëŠ” ì—°ì‚°ìžê°€ 없습니다. ëª…ì‹œì  í˜•ë³€í™˜ìžë¥¼ 추가" +"해야 í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤." + +#: parser/parse_oper.c:783 parser/parse_oper.c:897 +#, c-format +msgid "operator is only a shell: %s" +msgstr "ì—°ì‚°ìžëŠ” ì…¸ì¼ ë¿ìž„: %s" + +#: parser/parse_oper.c:885 +#, c-format +msgid "op ANY/ALL (array) requires array on right side" +msgstr "op ANY/ALL (array) 는 ìš°ì¸¡ì— ë°°ì—´ì´ ìžˆì–´ì•¼ 합니다." + +#: parser/parse_oper.c:927 +#, c-format +msgid "op ANY/ALL (array) requires operator to yield boolean" +msgstr "op ANY/ALL (array) 는 boolean ì„ ì–»ê¸° 위한 ì—°ì‚°ìžê°€ 필요합니다." + +#: parser/parse_oper.c:932 +#, c-format +msgid "op ANY/ALL (array) requires operator not to return a set" +msgstr "op ANY/ALL (array) 는 set ì„ return 하지 않는 ì—°ì‚°ìžê°€ 요구 ë©ë‹ˆë‹¤." + +#: parser/parse_param.c:216 +#, c-format +msgid "inconsistent types deduced for parameter $%d" +msgstr "inconsistent types deduced for parameter $%d" + +#: parser/parse_relation.c:175 +#, c-format +msgid "table reference \"%s\" is ambiguous" +msgstr "í…Œì´ë¸” 참조 \"%s\" ê°€ 명확하지 않습니다 (ambiguous)." + +#: parser/parse_relation.c:219 +#, c-format +msgid "table reference %u is ambiguous" +msgstr "í…Œì´ë¸” 참조 %u ê°€ 명확하지 않습니다 (ambiguous)." + +#: parser/parse_relation.c:398 +#, c-format +msgid "table name \"%s\" specified more than once" +msgstr "í…Œì´ë¸” ì´ë¦„ \"%s\" ê°€ 한번 ì´ìƒ 명시ë˜ì–´ 있습니다." + +#: parser/parse_relation.c:425 parser/parse_relation.c:3116 +#, c-format +msgid "invalid reference to FROM-clause entry for table \"%s\"" +msgstr "\"%s\" í…Œì´ë¸”ì„ ì‚¬ìš©í•˜ëŠ” FROM ì ˆì— ëŒ€í•œ 참조가 잘못 ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: parser/parse_relation.c:428 parser/parse_relation.c:3121 +#, c-format +msgid "" +"There is an entry for table \"%s\", but it cannot be referenced from this " +"part of the query." +msgstr "" +"\"%s\" í…Œì´ë¸”ì— ëŒ€í•œ í•­ëª©ì´ ìžˆì§€ë§Œ ì´ ì¿¼ë¦¬ 부분ì—서 참조할 수 없습니다." + +#: parser/parse_relation.c:430 +#, c-format +msgid "The combining JOIN type must be INNER or LEFT for a LATERAL reference." +msgstr "" + +#: parser/parse_relation.c:706 +#, c-format +msgid "system column \"%s\" reference in check constraint is invalid" +msgstr "제약 ì¡°ê±´ì—서 참조하는 \"%s\" 시스템 ì¹¼ëŸ¼ì´ ì—†ìŒ" + +#: parser/parse_relation.c:1066 parser/parse_relation.c:1346 +#: parser/parse_relation.c:1848 +#, c-format +msgid "table \"%s\" has %d columns available but %d columns specified" +msgstr "í…Œì´ë¸” \"%s\" ì—는 %d ê°œì˜ ì—´ì´ ìžˆëŠ”ë°, %d ê°œì˜ ì—´ë§Œì´ ëª…ì‹œë˜ì—ˆìŠµë‹ˆë‹¤." + +#: parser/parse_relation.c:1153 +#, c-format +msgid "" +"There is a WITH item named \"%s\", but it cannot be referenced from this " +"part of the query." +msgstr "\"%s\"(ì´)ë¼ëŠ” WITH í•­ëª©ì´ ìžˆì§€ë§Œ ì´ ì¿¼ë¦¬ 부분ì—서 참조할 수 없습니다." + +#: parser/parse_relation.c:1155 +#, c-format +msgid "" +"Use WITH RECURSIVE, or re-order the WITH items to remove forward references." +msgstr "" +"WITH RECURSIVE를 사용하거나 WITH í•­ëª©ì˜ ìˆœì„œë¥¼ 변경하여 ì •ë°©í–¥ 참조를 제거하" +"십시오." + +#: parser/parse_relation.c:1466 +#, c-format +msgid "" +"a column definition list is only allowed for functions returning \"record\"" +msgstr "" +"ì—´ ì •ì˜ ë¦¬ìŠ¤íŠ¸ (column definition list) 는 오로지 \"record\" 를 리턴하는 함" +"수 ë‚´ì—서만 허용ë©ë‹ˆë‹¤." + +#: parser/parse_relation.c:1475 +#, c-format +msgid "a column definition list is required for functions returning \"record\"" +msgstr "" +"ì—´ ì •ì˜ ë¦¬ìŠ¤íŠ¸(column definition list)는 \"record\" 를 리턴하는 함수를 í•„ìš”" +"로 합니다" + +#: parser/parse_relation.c:1554 +#, c-format +msgid "function \"%s\" in FROM has unsupported return type %s" +msgstr "" +"FROM ì ˆ ë‚´ì˜ í•¨ìˆ˜ \"%s\" ì— ì§€ì›ë˜ì§€ 않는 return ìžë£Œí˜• %s ì´ ìžˆìŠµë‹ˆë‹¤." + +#: parser/parse_relation.c:1676 +#, c-format +msgid "VALUES lists \"%s\" have %d columns available but %d columns specified" +msgstr "" +"VALUES ë’¤ì— ì˜¤ëŠ” \"%s\" 구문ì—는 %dê°œì˜ ì—´ì´ ìžˆëŠ”ë°, 지정한 ì—´ì€ %dê°œ 입니다" + +#: parser/parse_relation.c:1731 +#, c-format +msgid "joins can have at most %d columns" +msgstr "ì¡°ì¸ì—는 최대 %dê°œì˜ ì¹¼ëŸ¼ì„ í¬í•¨í•  수 있ìŒ" + +#: parser/parse_relation.c:1821 +#, c-format +msgid "WITH query \"%s\" does not have a RETURNING clause" +msgstr "" + +#: parser/parse_relation.c:2738 parser/parse_relation.c:2900 +#, c-format +msgid "column %d of relation \"%s\" does not exist" +msgstr "%d번째 ì—´ì´ ì—†ìŠµë‹ˆë‹¤. 해당 릴레ì´ì…˜: \"%s\"" + +#: parser/parse_relation.c:3119 +#, c-format +msgid "Perhaps you meant to reference the table alias \"%s\"." +msgstr "ì•„ \"%s\" alias를 참조해야 í•  것 같습니다." + +#: parser/parse_relation.c:3127 +#, c-format +msgid "missing FROM-clause entry for table \"%s\"" +msgstr "í…Œì´ë¸” \"%s\"ì— FROM ì ˆì´ ë¹ ì ¸ 있습니다." + +#: parser/parse_relation.c:3179 +#, c-format +msgid "Perhaps you meant to reference the column \"%s.%s\"." +msgstr "아마 \"%s.%s\" ì¹¼ëŸ¼ì„ ì°¸ì¡°í•˜ëŠ” 것 같습니다." + +#: parser/parse_relation.c:3181 +#, c-format +msgid "" +"There is a column named \"%s\" in table \"%s\", but it cannot be referenced " +"from this part of the query." +msgstr "" +"\"%s\" ì´ë¦„ì˜ ì¹¼ëŸ¼ì´ \"%s\" í…Œì´ë¸”ì— ìžˆì§€ë§Œ, ì´ ì¿¼ë¦¬ì˜ ì´ ë¶€ë¶„ì—서는 ì°¸ì¡°ë  " +"수 없습니다." + +#: parser/parse_relation.c:3198 +#, c-format +msgid "" +"Perhaps you meant to reference the column \"%s.%s\" or the column \"%s.%s\"." +msgstr "아마 \"%s.%s\" 칼럼ì´ë‚˜ \"%s.%s\" ì¹¼ëŸ¼ì„ ì°¸ì¡°í•˜ëŠ” 것 같습니다." + +#: parser/parse_target.c:432 parser/parse_target.c:724 +#, c-format +msgid "cannot assign to system column \"%s\"" +msgstr "시스템 ì—´ \"%s\"ì— í• ë‹¹í•  수 없습니다." + +#: parser/parse_target.c:460 +#, c-format +msgid "cannot set an array element to DEFAULT" +msgstr "ë°°ì—´ 요소를 DEFAULT 로 설정할 수 없습니다." + +#: parser/parse_target.c:465 +#, c-format +msgid "cannot set a subfield to DEFAULT" +msgstr "하위필드를 DEFAULT로 설정할 수 없습니다." + +#: parser/parse_target.c:534 +#, c-format +msgid "column \"%s\" is of type %s but expression is of type %s" +msgstr "ì—´ \"%s\"ì€(는) %s ìžë£Œí˜•ì¸ë° 표현ì‹ì€ %s ìžë£Œí˜•입니다." + +#: parser/parse_target.c:708 +#, c-format +msgid "" +"cannot assign to field \"%s\" of column \"%s\" because its type %s is not a " +"composite type" +msgstr "" +"\"%s\" 필드 (ëŒ€ìƒ ì—´ \"%s\")를 지정할 수 ì—†ìŒ, %s ìžë£Œí˜•ì€ ë³µí•©ìžë£Œí˜•ì´ ì•„ë‹ˆ" +"기 때문" + +#: parser/parse_target.c:717 +#, c-format +msgid "" +"cannot assign to field \"%s\" of column \"%s\" because there is no such " +"column in data type %s" +msgstr "" +"\"%s\" 필드 (ëŒ€ìƒ ì—´ \"%s\")를 지정할 수 ì—†ìŒ, %s ìžë£Œí˜•ì—서 그런 ì—´ì„ ì°¾ì„ " +"수 ì—†ìŒ" + +#: parser/parse_target.c:784 +#, c-format +msgid "" +"array assignment to \"%s\" requires type %s but expression is of type %s" +msgstr "" +"\"%s\" ì—´ì— ì‚¬ìš©ëœ ìžë£Œí˜•ì€ %s ê°€ 필요하지만, 현재 표현ì‹ì´ %s ìžë£Œí˜•입니다" + +#: parser/parse_target.c:794 +#, c-format +msgid "subfield \"%s\" is of type %s but expression is of type %s" +msgstr "하위필드 \"%s\" 는 %s ìžë£Œí˜•ì¸ë° 표현ì‹ì€ %s ìžë£Œí˜•입니다." + +#: parser/parse_target.c:1210 +#, c-format +msgid "SELECT * with no tables specified is not valid" +msgstr "í…Œì´ë¸”ì´ ëª…ì‹œë˜ì§€ ì•Šì€ SELECT * êµ¬ë¬¸ì€ ìœ íš¨í•˜ì§€ 않습니다." + +#: parser/parse_type.c:83 +#, c-format +msgid "improper %%TYPE reference (too few dotted names): %s" +msgstr "" +"ì ì ˆí•˜ì§€ ì•Šì€ %%TYPE reference 입니다 (dotted name ì´ ë„ˆë¬´ ì ìŠµë‹ˆë‹¤): %s" + +#: parser/parse_type.c:105 +#, c-format +msgid "improper %%TYPE reference (too many dotted names): %s" +msgstr "" +"ì ì ˆí•˜ì§€ ì•Šì€ %%TYPE reference 입니다 (dotted name ì´ ë„ˆë¬´ 많습니다): %s" + +#: parser/parse_type.c:140 +#, c-format +msgid "type reference %s converted to %s" +msgstr "ype reference %s ê°€ %s 로 변환ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: parser/parse_type.c:261 parser/parse_type.c:805 utils/cache/typcache.c:239 +#, c-format +msgid "type \"%s\" is only a shell" +msgstr "ìžë£Œí˜• \"%s\" 는 오로지 shell ì—ë§Œ 있습니다. " + +#: parser/parse_type.c:346 +#, c-format +msgid "type modifier is not allowed for type \"%s\"" +msgstr "\"%s\" 형ì‹ì—는 í˜•ì‹ í•œì •ìžë¥¼ 사용할 수 ì—†ìŒ" + +#: parser/parse_type.c:388 +#, c-format +msgid "type modifiers must be simple constants or identifiers" +msgstr "ìžë£Œí˜• 한정ìžëŠ” 단순 ìƒìˆ˜ ë˜ëŠ” ì‹ë³„ìžì—¬ì•¼ 함" + +#: parser/parse_type.c:671 parser/parse_type.c:770 +#, c-format +msgid "invalid type name \"%s\"" +msgstr "\"%s\" ìžë£Œí˜• ì´ë¦„ì€ ìœ íš¨í•˜ì§€ ì•Šì€ ìžë£Œí˜•입니다." + +#: parser/parse_utilcmd.c:384 +#, c-format +msgid "array of serial is not implemented" +msgstr "serial ë°°ì—´ì´ êµ¬í˜„ë˜ì§€ 않ìŒ" + +#: parser/parse_utilcmd.c:432 +#, c-format +msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\"" +msgstr "" +"%s 명령으로 \"%s\" 시퀀스가 ìžë™ìœ¼ë¡œ ë§Œë“¤ì–´ì§ (\"%s.%s\" serial ì—´ 때문)" + +#: parser/parse_utilcmd.c:526 parser/parse_utilcmd.c:538 +#, c-format +msgid "" +"conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\"" +msgstr "NULL/NOT NULL ì„ ì–¸ì´ ì„œë¡œ ì¶©ëŒí•©ë‹ˆë‹¤ : column \"%s\" of table \"%s\"" + +#: parser/parse_utilcmd.c:550 +#, c-format +msgid "multiple default values specified for column \"%s\" of table \"%s\"" +msgstr "\"%s\" ì—´(\"%s\" í…Œì´ë¸”)ì— ëŒ€í•´ 여러 ê°œì˜ ê¸°ë³¸ ê°’ì´ ì§€ì •ë¨" + +#: parser/parse_utilcmd.c:567 parser/parse_utilcmd.c:658 +#, c-format +msgid "primary key constraints are not supported on foreign tables" +msgstr "기본키 제약 ì¡°ê±´ì„ ì™¸ë¶€ í…Œì´ë¸”ì—서는 사용할 수 ì—†ìŒ" + +#: parser/parse_utilcmd.c:576 parser/parse_utilcmd.c:668 +#, c-format +msgid "unique constraints are not supported on foreign tables" +msgstr "ìœ ë‹ˆí¬ ì œì•½ ì¡°ê±´ì€ ì™¸ë¶€ í…Œì´ë¸”ì—서는 사용할 수 ì—†ìŒ" + +#: parser/parse_utilcmd.c:593 parser/parse_utilcmd.c:692 +#, c-format +msgid "foreign key constraints are not supported on foreign tables" +msgstr "참조키 제약 ì¡°ê±´ì€ ì™¸ë¶€ í…Œì´ë¸”ì—서는 사용할 수 ì—†ìŒ" + +#: parser/parse_utilcmd.c:678 +#, c-format +msgid "exclusion constraints are not supported on foreign tables" +msgstr "제외 제약 ì¡°ê±´ì€ ì™¸ë¶€ í…Œì´ë¸”ì—서는 사용할 수 ì—†ìŒ" + +#: parser/parse_utilcmd.c:742 +#, c-format +msgid "LIKE is not supported for creating foreign tables" +msgstr "외부 í…Œì´ë¸”ì„ ë§Œë“¤ 때는 LIKE ì˜µì…˜ì„ ì“¸ 수 ì—†ìŒ" + +#: parser/parse_utilcmd.c:1275 parser/parse_utilcmd.c:1351 +#, c-format +msgid "Index \"%s\" contains a whole-row table reference." +msgstr "" + +#: parser/parse_utilcmd.c:1621 +#, c-format +msgid "cannot use an existing index in CREATE TABLE" +msgstr "" + +#: parser/parse_utilcmd.c:1641 +#, c-format +msgid "index \"%s\" is already associated with a constraint" +msgstr "" + +#: parser/parse_utilcmd.c:1649 +#, c-format +msgid "index \"%s\" does not belong to table \"%s\"" +msgstr "\"%s\" ì¸ë±ìŠ¤ê°€ \"%s\" í…Œì´ë¸”ìš©ì´ ì•„ë‹˜" + +#: parser/parse_utilcmd.c:1656 +#, c-format +msgid "index \"%s\" is not valid" +msgstr "\"%s\" ì¸ë±ìŠ¤ëŠ” 사용가능 ìƒíƒœê°€ 아님" + +#: parser/parse_utilcmd.c:1662 +#, c-format +msgid "\"%s\" is not a unique index" +msgstr "\"%s\" ê°ì²´ëŠ” ìœ ë‹ˆí¬ ì¸ë±ìŠ¤ê°€ 아닙니다" + +#: parser/parse_utilcmd.c:1663 parser/parse_utilcmd.c:1670 +#: parser/parse_utilcmd.c:1677 parser/parse_utilcmd.c:1747 +#, c-format +msgid "Cannot create a primary key or unique constraint using such an index." +msgstr "" + +#: parser/parse_utilcmd.c:1669 +#, c-format +msgid "index \"%s\" contains expressions" +msgstr "\"%s\" ì¸ë±ìŠ¤ì— í‘œí˜„ì‹ì´ í¬í•¨ë˜ì–´ 있ìŒ" + +#: parser/parse_utilcmd.c:1676 +#, c-format +msgid "\"%s\" is a partial index" +msgstr "\"%s\" ê°ì²´ëŠ” 부분 ì¸ë±ìŠ¤ìž„" + +#: parser/parse_utilcmd.c:1688 +#, c-format +msgid "\"%s\" is a deferrable index" +msgstr "\"%s\" ê°ì²´ëŠ” 지연가능한 ì¸ë±ìŠ¤ìž„" + +#: parser/parse_utilcmd.c:1689 +#, c-format +msgid "Cannot create a non-deferrable constraint using a deferrable index." +msgstr "" + +#: parser/parse_utilcmd.c:1746 +#, c-format +msgid "index \"%s\" does not have default sorting behavior" +msgstr "\"%s\" ì¸ë±ìŠ¤ëŠ” 기본 ì •ë ¬ ë°©ë²•ì´ ì—†ìŒ" + +#: parser/parse_utilcmd.c:1893 +#, c-format +msgid "column \"%s\" appears twice in primary key constraint" +msgstr "기본키 제약 ì¡°ê±´ì—서 \"%s\" ì—´ì´ ë‘ ë²ˆ 지정ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: parser/parse_utilcmd.c:1899 +#, c-format +msgid "column \"%s\" appears twice in unique constraint" +msgstr "고유 제약 ì¡°ê±´ì—서 \"%s\" ì—´ì´ ë‘ ë²ˆ 지정ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: parser/parse_utilcmd.c:2103 +#, c-format +msgid "index expression cannot return a set" +msgstr "ì¸ë±ìФ ì‹ì€ 세트를 반환할 수 ì—†ìŒ" + +#: parser/parse_utilcmd.c:2114 +#, c-format +msgid "" +"index expressions and predicates can refer only to the table being indexed" +msgstr "ì¸ë±ìФ ì‹ ë° ìˆ ì–´ëŠ” ì¸ë±ì‹±ë˜ëŠ” í…Œì´ë¸”ë§Œ 참조할 수 있ìŒ" + +#: parser/parse_utilcmd.c:2160 +#, c-format +msgid "rules on materialized views are not supported" +msgstr "êµ¬ì²´í™”ëœ ë·°ì—ì„œì˜ ë£°ì€ ì§€ì›í•˜ì§€ 않ìŒ" + +#: parser/parse_utilcmd.c:2221 +#, c-format +msgid "rule WHERE condition cannot contain references to other relations" +msgstr "룰ì—서 지정한 WHERE ì¡°ê±´ì— ë‹¤ë¥¸ 릴레ì´ì…˜ì— 대한 참조를 í¬í•¨í•  수 ì—†ìŒ" + +#: parser/parse_utilcmd.c:2293 +#, c-format +msgid "" +"rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE " +"actions" +msgstr "" +"룰ì—서 지정한 WHERE ì¡°ê±´ì´ ìžˆëŠ” 규칙ì—는 SELECT, INSERT, UPDATE ë˜ëŠ” DELETE " +"작업만 í¬í•¨í•  수 있ìŒ" + +#: parser/parse_utilcmd.c:2311 parser/parse_utilcmd.c:2410 +#: rewrite/rewriteHandler.c:485 rewrite/rewriteManip.c:1015 +#, c-format +msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" +msgstr "conditional UNION/INTERSECT/EXCEPT êµ¬ë¬¸ì€ êµ¬í˜„ë˜ì–´ 있지 않다" + +#: parser/parse_utilcmd.c:2329 +#, c-format +msgid "ON SELECT rule cannot use OLD" +msgstr "ON SELECT ë£°ì€ OLD를 사용할 수 ì—†ìŒ" + +#: parser/parse_utilcmd.c:2333 +#, c-format +msgid "ON SELECT rule cannot use NEW" +msgstr "ON SELECT ë£°ì€ NEW를 사용할 수 ì—†ìŒ" + +#: parser/parse_utilcmd.c:2342 +#, c-format +msgid "ON INSERT rule cannot use OLD" +msgstr "ON INSERT ë£°ì€ OLD를 사용할 수 ì—†ìŒ" + +#: parser/parse_utilcmd.c:2348 +#, c-format +msgid "ON DELETE rule cannot use NEW" +msgstr "ON DELETE ë£°ì€ NEW를 사용할 수 ì—†ìŒ" + +#: parser/parse_utilcmd.c:2376 +#, c-format +msgid "cannot refer to OLD within WITH query" +msgstr "" + +#: parser/parse_utilcmd.c:2383 +#, c-format +msgid "cannot refer to NEW within WITH query" +msgstr "" + +#: parser/parse_utilcmd.c:2586 +#, c-format +msgid "transform expression must not return a set" +msgstr "transform 표현ì‹ì€ í•˜ë‚˜ì˜ ì„¸íŠ¸ë¥¼ 리턴하면 안ë©ë‹ˆë‹¤" + +#: parser/parse_utilcmd.c:2700 +#, c-format +msgid "misplaced DEFERRABLE clause" +msgstr "DEFERABLE ì ˆì´ ìž˜ëª» 놓여져 있습니다" + +#: parser/parse_utilcmd.c:2705 parser/parse_utilcmd.c:2720 +#, c-format +msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" +msgstr "여러 ê°œì˜ DEFERRABLE/NOT DEFERRABLEì ˆì€ ì‚¬ìš©í•  수 없습니다" + +#: parser/parse_utilcmd.c:2715 +#, c-format +msgid "misplaced NOT DEFERRABLE clause" +msgstr "NOT DEFERABLE ì ˆì´ ìž˜ëª» 놓여 있습니다" + +#: parser/parse_utilcmd.c:2728 parser/parse_utilcmd.c:2754 gram.y:4902 +#, c-format +msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" +msgstr "INITIALLY DEFERRED 로 ì„ ì–¸ëœ ì¡°ê±´ë¬¸ì€ ë°˜ë“œì‹œ DEFERABLE 여야만 한다" + +#: parser/parse_utilcmd.c:2736 +#, c-format +msgid "misplaced INITIALLY DEFERRED clause" +msgstr "INITIALLY DEFERRED ì ˆì´ ìž˜ëª» 놓여 있습니다" + +#: parser/parse_utilcmd.c:2741 parser/parse_utilcmd.c:2767 +#, c-format +msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" +msgstr "여러 ê°œì˜ INITIALLY IMMEDIATE/DEFERRED ì ˆì€ í—ˆìš©ë˜ì§€ 않습니다" + +#: parser/parse_utilcmd.c:2762 +#, c-format +msgid "misplaced INITIALLY IMMEDIATE clause" +msgstr "INITIALLY IMMEDIATE ì ˆì´ ìž˜ëª» 놓여 있습니다" + +#: parser/parse_utilcmd.c:2953 +#, c-format +msgid "" +"CREATE specifies a schema (%s) different from the one being created (%s)" +msgstr "CREATE êµ¬ë¬¸ì— ëª…ì‹œëœ schema (%s) ê°€ ìƒì„±ëœ (%s) ì˜ ê²ƒê³¼ 다릅니다" + +#: parser/scansup.c:204 +#, c-format +msgid "identifier \"%s\" will be truncated to \"%s\"" +msgstr "\"%s\" ì‹ë³„ìžëŠ” \"%s\"(으)로 잘림" + +#: port/pg_sema.c:113 port/sysv_sema.c:113 +#, c-format +msgid "could not create semaphores: %m" +msgstr "세마í¬ì–´ë¥¼ 만들 수 ì—†ìŒ: %m" + +#: port/pg_sema.c:114 port/sysv_sema.c:114 +#, c-format +msgid "Failed system call was semget(%lu, %d, 0%o)." +msgstr "semget(%lu, %d, 0%o) í˜¸ì¶œì— ì˜í•œ 시스템 콜 실패" + +#: port/pg_sema.c:118 port/sysv_sema.c:118 +#, c-format +msgid "" +"This error does *not* mean that you have run out of disk space. It occurs " +"when either the system limit for the maximum number of semaphore sets " +"(SEMMNI), or the system wide maximum number of semaphores (SEMMNS), would be " +"exceeded. You need to raise the respective kernel parameter. " +"Alternatively, reduce PostgreSQL's consumption of semaphores by reducing its " +"max_connections parameter.\n" +"The PostgreSQL documentation contains more information about configuring " +"your system for PostgreSQL." +msgstr "" +"ì´ ì˜¤ë¥˜ëŠ” 서버를 ì‹¤í–‰í•˜ëŠ”ë° í•„ìš”í•œ ë””ìŠ¤í¬ ê³µê°„ì´ ë¶€ì¡±í•´ì„œ ë°œìƒí•œ ê²ƒì´ ì•„ë‹™ë‹ˆ" +"다.\n" +"ì´ ì˜¤ë¥˜ëŠ” 시스템ì—서 지정한 최소 세마í¬ì–´ 수(SEMMNI)ê°€ 너무 í¬ê±°ë‚˜, 최대 세마" +"í¬ì–´ 수(SEMMNS)ê°€ 너무 ì ì–´ì„œ 서버를 실행할 수 ì—†ì„ ë•Œ ë°œìƒí•©ë‹ˆë‹¤. ì´ì— ë”°" +"ë¼, ì •ìƒì ìœ¼ë¡œ 서버가 실행ë˜ë ¤ë©´, 시스템 ê°’ë“¤ì„ ì¡°ì •í•  필요가 있습니다. 아니" +"ë©´, 다른 방법으로, PostgreSQLì˜ í™˜ê²½ 설정ì—서 max_connections ê°’ì„ ì¤„ì—¬ì„œ 세" +"마í¬ì–´ 사용 수를 줄여보십시오.\n" +"보다 ìžì„¸í•œ ë‚´ìš©ì€ PostgreSQL ê´€ë¦¬ìž ë©”ë‰´ì–¼ì„ ì°¸ì¡° 하십시오." + +#: port/pg_sema.c:148 port/sysv_sema.c:148 +#, c-format +msgid "" +"You possibly need to raise your kernel's SEMVMX value to be at least %d. " +"Look into the PostgreSQL documentation for details." +msgstr "" +"커ë„ì˜ SEMVMX ê°’ì„ ì ì–´ë„ %d ì •ë„로 늘려야할 필요가 있는 것 같습니다. ìžì„¸" +"한 ê²ƒì€ PostgreSQL 문서를 참조하세요." + +#: port/pg_shmem.c:175 port/sysv_shmem.c:175 +#, c-format +msgid "could not create shared memory segment: %m" +msgstr "공유 메모리 세그먼트를 만들 수 ì—†ìŒ: %m" + +#: port/pg_shmem.c:176 port/sysv_shmem.c:176 +#, c-format +msgid "Failed system call was shmget(key=%lu, size=%zu, 0%o)." +msgstr "shmget(키=%lu, í¬ê¸°=%zu, 0%o) 시스템 콜 실패" + +#: port/pg_shmem.c:180 port/sysv_shmem.c:180 +#, c-format +msgid "" +"This error usually means that PostgreSQL's request for a shared memory " +"segment exceeded your kernel's SHMMAX parameter, or possibly that it is less " +"than your kernel's SHMMIN parameter.\n" +"The PostgreSQL documentation contains more information about shared memory " +"configuration." +msgstr "" +"ì´ ì˜¤ë¥˜ë¥¼ ì¼ë°˜ì ìœ¼ë¡œ PostgreSQLì—서 사용할 공유 메모리 í¬ê¸°ê°€ 커ë„ì˜ SHMMAX " +"값보다 í¬ê±°ë‚˜, SHMMIN 값보다 ì ì€ 경우 ë°œìƒí•©ë‹ˆë‹¤.\n" +"공유 메모리 ì„¤ì •ì— ëŒ€í•œ 보다 ìžì„¸í•œ ë‚´ìš©ì€ PostgreSQL 문서를 참조하십시오." + +#: port/pg_shmem.c:187 port/sysv_shmem.c:187 +#, c-format +msgid "" +"This error usually means that PostgreSQL's request for a shared memory " +"segment exceeded your kernel's SHMALL parameter. You might need to " +"reconfigure the kernel with larger SHMALL.\n" +"The PostgreSQL documentation contains more information about shared memory " +"configuration." +msgstr "" +"ì´ ì˜¤ë¥˜ë¥¼ ì¼ë°˜ì ìœ¼ë¡œ PostgreSQLì—서 사용할 공유 í¬ê¸°ê°€ 커ë„ì˜ SHMALL 값보다 " +"í° ê²½ìš° ë°œìƒí•©ë‹ˆë‹¤. ì»¤ë„ í™˜ê²½ ë³€ìˆ˜ì¸ SHMALL ê°’ì„ ì¢€ ë” í¬ê²Œ 설정하세요.\n" +"공유 메모리 ì„¤ì •ì— ëŒ€í•œ 보다 ìžì„¸í•œ ë‚´ìš©ì€ PostgreSQL 문서를 참조하십시오." + +#: port/pg_shmem.c:193 port/sysv_shmem.c:193 +#, c-format +msgid "" +"This error does *not* mean that you have run out of disk space. It occurs " +"either if all available shared memory IDs have been taken, in which case you " +"need to raise the SHMMNI parameter in your kernel, or because the system's " +"overall limit for shared memory has been reached.\n" +"The PostgreSQL documentation contains more information about shared memory " +"configuration." +msgstr "" +"ì´ ì˜¤ë¥˜ëŠ” 서버를 ì‹¤í–‰í•˜ëŠ”ë° í•„ìš”í•œ ë””ìŠ¤í¬ ê³µê°„ì´ ë¶€ì¡±í•´ì„œ ë°œìƒí•œ ê²ƒì´ ì•„ë‹™ë‹ˆ" +"다. ì´ ì˜¤ë¥˜ëŠ” 서버가 사용할 공유 메모리 ID를 ì„ ì í•˜ì§€ ëª»í–ˆì„ ë•Œ ë°œìƒí•©ë‹ˆ" +"다. ì»¤ë„ í™˜ê²½ ì„¤ì •ê°’ì¸ SHMMNI ê°’ì„ ëŠ˜ë¦¬ê±°ë‚˜, ì‹œìŠ¤í…œì˜ ê°€ìš© 공유 ë©”ëª¨ë¦¬ëŸ‰ì„ " +"확보하세요.\n" +"공유 메모리 ì„¤ì •ì— ëŒ€í•œ 보다 ìžì„¸í•œ ë‚´ìš©ì€ PostgreSQL 문서를 참조하십시오." + +#: port/pg_shmem.c:483 port/sysv_shmem.c:483 +#, c-format +msgid "could not map anonymous shared memory: %m" +msgstr "가용 공유 메모리 확보 실패: %m" + +#: port/pg_shmem.c:485 port/sysv_shmem.c:485 +#, c-format +msgid "" +"This error usually means that PostgreSQL's request for a shared memory " +"segment exceeded available memory, swap space, or huge pages. To reduce the " +"request size (currently %zu bytes), reduce PostgreSQL's shared memory usage, " +"perhaps by reducing shared_buffers or max_connections." +msgstr "" +"ì´ ì˜¤ë¥˜ëŠ” ì¼ë°˜ì ìœ¼ë¡œ PostgreSQLì—서 사용할 공유 메모리를 확보하지 못 í–ˆì„ ë•Œ " +"ë°œìƒí•©ë‹ˆë‹¤(물리 메모리, 스왑, huge page). 현재 요구 í¬ê¸°(%zu ë°”ì´íЏ)를 좀 줄" +"ì—¬ 보십시오. 줄ì´ëŠ” 방법ì€, shared_buffers ê°’ì„ ì¤„ì´ê±°ë‚˜ max_connections ê°’" +"ì„ ì¤„ì—¬ 보십시오." + +#: port/pg_shmem.c:551 port/sysv_shmem.c:551 port/win32_shmem.c:134 +#, c-format +msgid "huge pages not supported on this platform" +msgstr "huge page ê¸°ëŠ¥ì€ ì´ í”Œëž«í¼ì—서 ì§€ì›ë˜ì§€ 않ìŒ" + +#: port/pg_shmem.c:646 port/sysv_shmem.c:646 +#, c-format +msgid "could not stat data directory \"%s\": %m" +msgstr "\"%s\" ë°ì´í„° 디렉터리 ìƒíƒœë¥¼ 파악할 수 ì—†ìŒ: %m" + +#: port/win32/crashdump.c:122 +#, c-format +msgid "could not load dbghelp.dll, cannot write crash dump\n" +msgstr "" + +#: port/win32/crashdump.c:130 +#, c-format +msgid "" +"could not load required functions in dbghelp.dll, cannot write crash dump\n" +msgstr "" + +#: port/win32/crashdump.c:161 +#, c-format +msgid "could not open crash dump file \"%s\" for writing: error code %lu\n" +msgstr "\"%s\" 장애 ë¤í”„ 파ì¼ì„ 쓰기 위해 ì—´ 수 ì—†ìŒ: 오류 번호 %lu\n" + +#: port/win32/crashdump.c:168 +#, c-format +msgid "wrote crash dump to file \"%s\"\n" +msgstr "\"%s\" 장애 ë¤í”„ 파ì¼ì„ 만들었습니다.\n" + +#: port/win32/crashdump.c:170 +#, c-format +msgid "could not write crash dump to file \"%s\": error code %lu\n" +msgstr "\"%s\" 장애 ë¤í”„ 파ì¼ì„ 쓰기 실패: 오류 번호 %lu\n" + +#: port/win32/signal.c:194 +#, c-format +msgid "could not create signal listener pipe for PID %d: error code %lu" +msgstr "%d pid를 위한 ì‹œê·¸ë„ ë¦¬ìŠ¨ë„ˆ 파ì´í”„를 만들 수 ì—†ìŒ: 오류 번호 %lu" + +#: port/win32/signal.c:274 port/win32/signal.c:306 +#, c-format +msgid "could not create signal listener pipe: error code %lu; retrying\n" +msgstr "신호 수신기 파ì´í”„를 만들 수 ì—†ìŒ: 오류 번호 %lu, 다시 시작 중\n" + +#: port/win32/signal.c:317 +#, c-format +msgid "could not create signal dispatch thread: error code %lu\n" +msgstr "ì‹œê·¸ë„ ë””ìŠ¤íŒ¨ì¹˜ 쓰레드를 만들 수 ì—†ìŒ: 오류 번호 %lu\n" + +#: port/win32_sema.c:94 +#, c-format +msgid "could not create semaphore: error code %lu" +msgstr "세마í¬ì–´ë¥¼ 만들 수 ì—†ìŒ: 오류 번호 %lu" + +#: port/win32_sema.c:167 +#, c-format +msgid "could not lock semaphore: error code %lu" +msgstr "세마í¬ì–´ë¥¼ 잠글 수 ì—†ìŒ: 오류 번호 %lu" + +#: port/win32_sema.c:187 +#, c-format +msgid "could not unlock semaphore: error code %lu" +msgstr "세마í¬ì–´ ìž ê¸ˆì„ í•´ì œí•  수 ì—†ìŒ: 오류 번호 %lu" + +#: port/win32_sema.c:216 +#, c-format +msgid "could not try-lock semaphore: error code %lu" +msgstr "세마í¬ì–´ 잠금 ì‹œë„ ì‹¤íŒ¨: 오류 번호 %lu" + +#: port/win32_shmem.c:173 port/win32_shmem.c:208 port/win32_shmem.c:226 +#, c-format +msgid "could not create shared memory segment: error code %lu" +msgstr "공유 메모리 세그먼트를 만들 수 ì—†ìŒ: 오류 번호 %lu" + +#: port/win32_shmem.c:174 +#, c-format +msgid "Failed system call was CreateFileMapping(size=%zu, name=%s)." +msgstr "실패한 시스템 í˜¸ì¶œì€ CreateFileMapping(í¬ê¸°=%zu, ì´ë¦„=%s)입니다." + +#: port/win32_shmem.c:198 +#, c-format +msgid "pre-existing shared memory block is still in use" +msgstr "기존 공유 메모리 블ë¡ì´ 여전히 사용ë˜ê³  있ìŒ" + +#: port/win32_shmem.c:199 +#, c-format +msgid "" +"Check if there are any old server processes still running, and terminate " +"them." +msgstr "실행 ì¤‘ì¸ ì´ì „ 서버 프로세스가 있는지 확ì¸í•˜ê³  종료하십시오." + +#: port/win32_shmem.c:209 +#, c-format +msgid "Failed system call was DuplicateHandle." +msgstr "실패한 시스템 í˜¸ì¶œì€ DuplicateHandle입니다." + +#: port/win32_shmem.c:227 +#, c-format +msgid "Failed system call was MapViewOfFileEx." +msgstr "실패한 시스템 í˜¸ì¶œì€ MapViewOfFileEx입니다." + +#: postmaster/autovacuum.c:380 +#, c-format +msgid "could not fork autovacuum launcher process: %m" +msgstr "autovacuum 실행기 프로세스를 실행할 수 ì—†ìŒ: %m" + +#: postmaster/autovacuum.c:416 +#, c-format +msgid "autovacuum launcher started" +msgstr "autovacuum 실행기가 시작ë¨" + +#: postmaster/autovacuum.c:779 +#, c-format +msgid "autovacuum launcher shutting down" +msgstr "autovacuum 실행기를 종료하는 중" + +#: postmaster/autovacuum.c:1441 +#, c-format +msgid "could not fork autovacuum worker process: %m" +msgstr "autovacuum ìž‘ì—…ìž í”„ë¡œì„¸ìŠ¤ë¥¼ 실행할 수 ì—†ìŒ: %m" + +#: postmaster/autovacuum.c:1639 +#, c-format +msgid "autovacuum: processing database \"%s\"" +msgstr "autovacuum: \"%s\" ë°ì´í„°ë² ì´ìФ 처리 중" + +#: postmaster/autovacuum.c:2052 +#, c-format +msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\"" +msgstr "" +"autovacuum: \"%s\".\"%s\" 사용 않는 임시 í…Œì´ë¸”ì„ \"%s\" ë°ì´í„°ë² ì´ìФì—서 ì‚­" +"제하는 중" + +#: postmaster/autovacuum.c:2064 +#, c-format +msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\"" +msgstr "" +"autovacuum: \"%s\".\"%s\" 사용 않는 임시 í…Œì´ë¸”ì„ \"%s\" ë°ì´í„°ë² ì´ìФì—서 ì°¾" +"았ìŒ" + +#: postmaster/autovacuum.c:2347 +#, c-format +msgid "automatic vacuum of table \"%s.%s.%s\"" +msgstr "\"%s.%s.%s\" í…Œì´ë¸” 대ìƒìœ¼ë¡œ ìžë™ vacuum 작업 함" + +#: postmaster/autovacuum.c:2350 +#, c-format +msgid "automatic analyze of table \"%s.%s.%s\"" +msgstr "\"%s.%s.%s\" í…Œì´ë¸” ìžë™ ë¶„ì„" + +#: postmaster/autovacuum.c:2899 +#, c-format +msgid "autovacuum not started because of misconfiguration" +msgstr "서버 설정 ì •ë³´ê°€ 잘못ë˜ì–´ ìžë™ 청소 ìž‘ì—…ì´ ì‹¤í–‰ë˜ì§€ 못했습니다." + +#: postmaster/autovacuum.c:2900 +#, c-format +msgid "Enable the \"track_counts\" option." +msgstr "\"track_counts\" ì˜µì…˜ì„ ì‚¬ìš©í•˜ì‹­ì‹œì˜¤." + +#: postmaster/bgworker.c:346 postmaster/bgworker.c:745 +#, c-format +msgid "registering background worker \"%s\"" +msgstr "" + +#: postmaster/bgworker.c:375 +#, c-format +msgid "unregistering background worker \"%s\"" +msgstr "" + +#: postmaster/bgworker.c:484 +#, c-format +msgid "" +"background worker \"%s\": must attach to shared memory in order to request a " +"database connection" +msgstr "" + +#: postmaster/bgworker.c:493 +#, c-format +msgid "" +"background worker \"%s\": cannot request database access if starting at " +"postmaster start" +msgstr "" + +#: postmaster/bgworker.c:507 +#, c-format +msgid "background worker \"%s\": invalid restart interval" +msgstr "\"%s\" 백그ë¼ìš´ë“œ 작업ìž: ìž˜ëª»ëœ ìž¬ì‹¤í–‰ 간격" + +#: postmaster/bgworker.c:552 +#, c-format +msgid "terminating background worker \"%s\" due to administrator command" +msgstr "ê´€ë¦¬ìž ëª…ë ¹ì— ì˜í•´ \"%s\" 백그ë¼ìš´ë“œ 작업ìžë¥¼ 종료합니다." + +#: postmaster/bgworker.c:752 +#, c-format +msgid "" +"background worker \"%s\": must be registered in shared_preload_libraries" +msgstr "" +"\"%s\" 백그ë¼ìš´ë“œ 작업ìž: 먼저 shared_preload_libraries 설정값으로 등ë¡ë˜ì–´" +"야 합니다." + +#: postmaster/bgworker.c:764 +#, c-format +msgid "" +"background worker \"%s\": only dynamic background workers can request " +"notification" +msgstr "" +"\"%s\" 백그ë¼ìš´ë“œ 작업ìž: ë™ì  백그ë¼ìš´ë“œ 작업ìžë§Œ ì•Œë¦¼ì„ ìš”ì²­í•  수 있ìŒ" + +#: postmaster/bgworker.c:779 +#, c-format +msgid "too many background workers" +msgstr "백그ë¼ìš´ë“œ 작업ìžê°€ 너무 ë§ŽìŒ" + +#: postmaster/bgworker.c:780 +#, c-format +msgid "Up to %d background worker can be registered with the current settings." +msgid_plural "" +"Up to %d background workers can be registered with the current settings." +msgstr[0] "현재 설정으로는 %dê°œì˜ ë°±ê·¸ë¼ìš´ë“œ 작업ìžë¥¼ 사용할 수 있습니다." + +#: postmaster/bgworker.c:784 +#, c-format +msgid "" +"Consider increasing the configuration parameter \"max_worker_processes\"." +msgstr "\"max_worker_processes\" 환경 매개 변수 ê°’ì„ ì¢€ ëŠë ¤ë³´ì‹­ì‹œì˜¤." + +#: postmaster/checkpointer.c:463 +#, c-format +msgid "checkpoints are occurring too frequently (%d second apart)" +msgid_plural "checkpoints are occurring too frequently (%d seconds apart)" +msgstr[0] "ì²´í¬í¬ì¸íŠ¸ê°€ 너무 ìžì£¼ ë°œìƒí•¨ (%dì´ˆ 간격)" + +#: postmaster/checkpointer.c:467 +#, c-format +msgid "Consider increasing the configuration parameter \"max_wal_size\"." +msgstr "\"max_wal_size\" 환경 매개 변수 ê°’ì„ ì¢€ ëŠë ¤ë³´ì‹­ì‹œì˜¤." + +#: postmaster/checkpointer.c:614 +#, c-format +msgid "transaction log switch forced (archive_timeout=%d)" +msgstr "강제로 트랜잭션 로그를 바꿨습니다 (archive_timeout=%d)" + +#: postmaster/checkpointer.c:1072 +#, c-format +msgid "checkpoint request failed" +msgstr "ì²´í¬í¬ì¸íЏ 요청 실패" + +#: postmaster/checkpointer.c:1073 +#, c-format +msgid "Consult recent messages in the server log for details." +msgstr "ë” ìžì„¸í•œ ê²ƒì€ ì„œë²„ 로그 파ì¼ì„ 살펴보십시오." + +#: postmaster/checkpointer.c:1268 +#, c-format +msgid "compacted fsync request queue from %d entries to %d entries" +msgstr "" + +#: postmaster/pgarch.c:149 +#, c-format +msgid "could not fork archiver: %m" +msgstr "archiver 할당(fork) 실패: %m" + +#: postmaster/pgarch.c:456 +#, c-format +msgid "archive_mode enabled, yet archive_command is not set" +msgstr "archive_modeê°€ 사용 설정ë˜ì—ˆëŠ”ë° archive_commandê°€ 설정ë˜ì§€ 않ìŒ" + +#: postmaster/pgarch.c:484 +#, c-format +msgid "" +"archiving transaction log file \"%s\" failed too many times, will try again " +"later" +msgstr "" +"\"%s\" 트랜잭션 로그 íŒŒì¼ ì•„ì¹´ì´ë¸Œ ìž‘ì—…ì´ ê³„ì† ì‹¤íŒ¨í•˜ê³  있습니다. 다ìŒì— ë˜ " +"시ë„í•  것입니다." + +#: postmaster/pgarch.c:587 +#, c-format +msgid "archive command failed with exit code %d" +msgstr "ì•„ì¹´ì´ë¸Œ 명령 실패, 종료 코드: %d" + +#: postmaster/pgarch.c:589 postmaster/pgarch.c:599 postmaster/pgarch.c:606 +#: postmaster/pgarch.c:612 postmaster/pgarch.c:621 +#, c-format +msgid "The failed archive command was: %s" +msgstr "실패한 ì•„ì¹´ì´ë¸Œ 명령: %s" + +#: postmaster/pgarch.c:596 +#, c-format +msgid "archive command was terminated by exception 0x%X" +msgstr "0x%X 예외로 ì¸í•´ ì•„ì¹´ì´ë¸Œ ëª…ë ¹ì´ ì¢…ë£Œë¨" + +#: postmaster/pgarch.c:598 postmaster/postmaster.c:3491 +#, c-format +msgid "" +"See C include file \"ntstatus.h\" for a description of the hexadecimal value." +msgstr "16진수 ê°’ì— ëŒ€í•œ ì„¤ëª…ì€ C í¬í•¨ íŒŒì¼ \"ntstatus.h\"를 참조하십시오." + +#: postmaster/pgarch.c:603 +#, c-format +msgid "archive command was terminated by signal %d: %s" +msgstr "%d번 시그ë„로 ì¸í•´ ì•„ì¹´ì´ë¸Œ ëª…ë ¹ì´ ì¢…ë£Œë¨: %s" + +#: postmaster/pgarch.c:610 +#, c-format +msgid "archive command was terminated by signal %d" +msgstr "%d번 시그ë„로 ì¸í•´ ì•„ì¹´ì´ë¸Œ ëª…ë ¹ì´ ì¢…ë£Œë¨" + +#: postmaster/pgarch.c:619 +#, c-format +msgid "archive command exited with unrecognized status %d" +msgstr "ì•„ì¹´ì´ë¸Œ ëª…ë ¹ì´ ì¸ì‹í•  수 없는 %d ìƒíƒœë¡œ 종료ë¨" + +#: postmaster/pgarch.c:631 +#, c-format +msgid "archived transaction log file \"%s\"" +msgstr "\"%s\" 트랜잭션 로그파ì¼ì´ ì•„ì¹´ì´ë¸Œ ë¨" + +#: postmaster/pgarch.c:680 +#, c-format +msgid "could not open archive status directory \"%s\": %m" +msgstr "\"%s\" 디렉터리를 ì—´ 수 없습니다: %m" + +#: postmaster/pgstat.c:355 +#, c-format +msgid "could not resolve \"localhost\": %s" +msgstr "\"localhost\" ì´ë¦„ì˜ í˜¸ìŠ¤íŠ¸ IP를 구할 수 없습니다: %s" + +#: postmaster/pgstat.c:378 +#, c-format +msgid "trying another address for the statistics collector" +msgstr "통계 수집기ì—서 사용할 다른 주소를 찾습니다" + +#: postmaster/pgstat.c:387 +#, c-format +msgid "could not create socket for statistics collector: %m" +msgstr "통계 수집기ì—서 사용할 ì†Œì¼“ì„ ë§Œë“¤ 수 없습니다: %m" + +#: postmaster/pgstat.c:399 +#, c-format +msgid "could not bind socket for statistics collector: %m" +msgstr "통계 수집기ì—서 사용할 소켓과 bindí•  수 없습니다: %m" + +#: postmaster/pgstat.c:410 +#, c-format +msgid "could not get address of socket for statistics collector: %m" +msgstr "통계 수집기ì—서 사용할 ì†Œì¼“ì˜ ì£¼ì†Œë¥¼ 구할 수 없습니다: %m" + +#: postmaster/pgstat.c:426 +#, c-format +msgid "could not connect socket for statistics collector: %m" +msgstr "통계 수집기ì—서 사용할 ì†Œì¼“ì— ì—°ê²°í•  수 없습니다: %m" + +#: postmaster/pgstat.c:447 +#, c-format +msgid "could not send test message on socket for statistics collector: %m" +msgstr "통계 수집기ì—서 사용할 소켓으로 테스트 메시지를 보낼 수 없습니다: %m" + +#: postmaster/pgstat.c:473 +#, c-format +msgid "select() failed in statistics collector: %m" +msgstr "통계 수집기ì—서 select() 작업 오류: %m" + +#: postmaster/pgstat.c:488 +#, c-format +msgid "test message did not get through on socket for statistics collector" +msgstr "통계 수집기ì—서 사용할 소켓으로 테스트 메시지를 처리할 수 없습니다" + +#: postmaster/pgstat.c:503 +#, c-format +msgid "could not receive test message on socket for statistics collector: %m" +msgstr "통계 수집기ì—서 사용할 소켓으로 테스트 메시지를 ë°›ì„ ìˆ˜ 없습니다: %m" + +#: postmaster/pgstat.c:513 +#, c-format +msgid "incorrect test message transmission on socket for statistics collector" +msgstr "통계 수집기ì—서 사용할 소켓으로 ìž˜ëª»ëœ í…ŒìŠ¤íŠ¸ 메시지가 전달 ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: postmaster/pgstat.c:536 +#, c-format +msgid "could not set statistics collector socket to nonblocking mode: %m" +msgstr "" +"통계 수집기ì—서 사용하는 소켓 모드를 nonblocking 모드로 지정할 수 없습니다: " +"%m" + +#: postmaster/pgstat.c:546 +#, c-format +msgid "disabling statistics collector for lack of working socket" +msgstr "현재 작업 ì†Œì¼“ì˜ ì›í• í•œ ì†Œí†µì„ ìœ„í•´ 통계 수집기 ê¸°ëŠ¥ì„ ì¤‘ì§€í•©ë‹ˆë‹¤" + +#: postmaster/pgstat.c:693 +#, c-format +msgid "could not fork statistics collector: %m" +msgstr "통계 수집기를 forkí•  수 없습니다: %m" + +#: postmaster/pgstat.c:1261 +#, c-format +msgid "unrecognized reset target: \"%s\"" +msgstr "알 수 없는 리셋 타겟: \"%s\"" + +#: postmaster/pgstat.c:1262 +#, c-format +msgid "Target must be \"archiver\" or \"bgwriter\"." +msgstr "사용 가능한 íƒ€ê²Ÿì€ \"archiver\" ë˜ëŠ” \"bgwriter\"" + +#: postmaster/pgstat.c:3587 +#, c-format +msgid "could not read statistics message: %m" +msgstr "통계 메시지를 ì½ì„ 수 ì—†ìŒ: %m" + +#: postmaster/pgstat.c:3918 postmaster/pgstat.c:4075 +#, c-format +msgid "could not open temporary statistics file \"%s\": %m" +msgstr "\"%s\" 임시 통계 파ì¼ì„ ì—´ 수 ì—†ìŒ: %m" + +#: postmaster/pgstat.c:3985 postmaster/pgstat.c:4120 +#, c-format +msgid "could not write temporary statistics file \"%s\": %m" +msgstr "\"%s\" 임시 통계 파ì¼ì— 쓰기 실패: %m" + +#: postmaster/pgstat.c:3994 postmaster/pgstat.c:4129 +#, c-format +msgid "could not close temporary statistics file \"%s\": %m" +msgstr "\"%s\" 임시 통계 파ì¼ì„ ë‹«ì„ ìˆ˜ 없습니다: %m" + +#: postmaster/pgstat.c:4002 postmaster/pgstat.c:4137 +#, c-format +msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m" +msgstr "\"%s\" 임시 통계 íŒŒì¼ ì´ë¦„ì„ \"%s\" (으)로 바꿀 수 없습니다: %m" + +#: postmaster/pgstat.c:4226 postmaster/pgstat.c:4411 postmaster/pgstat.c:4564 +#, c-format +msgid "could not open statistics file \"%s\": %m" +msgstr "\"%s\" 통계 파ì¼ì„ ì—´ 수 ì—†ìŒ: %m" + +#: postmaster/pgstat.c:4238 postmaster/pgstat.c:4248 postmaster/pgstat.c:4258 +#: postmaster/pgstat.c:4279 postmaster/pgstat.c:4294 postmaster/pgstat.c:4348 +#: postmaster/pgstat.c:4423 postmaster/pgstat.c:4443 postmaster/pgstat.c:4461 +#: postmaster/pgstat.c:4477 postmaster/pgstat.c:4495 postmaster/pgstat.c:4511 +#: postmaster/pgstat.c:4576 postmaster/pgstat.c:4588 postmaster/pgstat.c:4600 +#: postmaster/pgstat.c:4625 postmaster/pgstat.c:4647 +#, c-format +msgid "corrupted statistics file \"%s\"" +msgstr "\"%s\" 통계 파ì¼ì´ ì†ìƒë˜ì—ˆìŒ" + +#: postmaster/pgstat.c:4776 +#, c-format +msgid "" +"using stale statistics instead of current ones because stats collector is " +"not responding" +msgstr "" +"현재 통계 수집기가 ë°˜ì‘하지 않아 부정확한 통계정보가 사용ë˜ê³  있습니다." + +#: postmaster/pgstat.c:5103 +#, c-format +msgid "database hash table corrupted during cleanup --- abort" +msgstr "정리하는 ë™ì•ˆ ë°ì´í„°ë² ì´ìФ 해시 í…Œì´ë¸”ì´ ì†ìƒ ë˜ì—ˆìŠµë‹ˆë‹¤ --- 중지함" + +#: postmaster/postmaster.c:684 +#, c-format +msgid "%s: invalid argument for option -f: \"%s\"\n" +msgstr "%s: -f ì˜µì…˜ì˜ ìž˜ëª»ëœ ì¸ìž: \"%s\"\n" + +#: postmaster/postmaster.c:770 +#, c-format +msgid "%s: invalid argument for option -t: \"%s\"\n" +msgstr "%s: -t ì˜µì…˜ì˜ ìž˜ëª»ëœ ì¸ìž: \"%s\"\n" + +#: postmaster/postmaster.c:821 +#, c-format +msgid "%s: invalid argument: \"%s\"\n" +msgstr "%s: ìž˜ëª»ëœ ì¸ìž: \"%s\"\n" + +#: postmaster/postmaster.c:860 +#, c-format +msgid "%s: superuser_reserved_connections must be less than max_connections\n" +msgstr "" +"%s: superuser_reserved_connections ê°’ì€ max_connections 값보다 작아야합니다\n" + +#: postmaster/postmaster.c:865 +#, c-format +msgid "%s: max_wal_senders must be less than max_connections\n" +msgstr "%s: max_wal_senders ê°’ì€ max_connections 값보다 작아야합니다\n" + +#: postmaster/postmaster.c:870 +#, c-format +msgid "WAL archival cannot be enabled when wal_level is \"minimal\"" +msgstr "wal_level ê°’ì´ \"minimal\"ì¼ ë•ŒëŠ” ì•„ì¹´ì´ë¸Œ ìž‘ì—…ì„ í•  수 없습니다." + +#: postmaster/postmaster.c:873 +#, c-format +msgid "" +"WAL streaming (max_wal_senders > 0) requires wal_level \"replica\" or " +"\"logical\"" +msgstr "" +"WAL ìŠ¤íŠ¸ë¦¬ë° ìž‘ì—…(max_wal_senders > 0 ì¸ê²½ìš°)ì€ wal_level ê°’ì´ \"replica\" ë˜" +"는 \"logical\" ì´ì–´ì•¼ 합니다." + +#: postmaster/postmaster.c:881 +#, c-format +msgid "%s: invalid datetoken tables, please fix\n" +msgstr "%s: ìž˜ëª»ëœ datetoken í…Œì´ë¸”들, 복구하십시오.\n" + +#: postmaster/postmaster.c:973 postmaster/postmaster.c:1071 +#: utils/init/miscinit.c:1429 +#, c-format +msgid "invalid list syntax in parameter \"%s\"" +msgstr "\"%s\" 매개 변수 êµ¬ë¬¸ì´ ìž˜ëª» ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: postmaster/postmaster.c:1004 +#, c-format +msgid "could not create listen socket for \"%s\"" +msgstr "\"%s\" ì‘당 ì†Œì¼“ì„ ë§Œë“¤ 수 없습니다" + +#: postmaster/postmaster.c:1010 +#, c-format +msgid "could not create any TCP/IP sockets" +msgstr "TCP/IP ì†Œì¼“ì„ ë§Œë“¤ 수 없습니다." + +#: postmaster/postmaster.c:1093 +#, c-format +msgid "could not create Unix-domain socket in directory \"%s\"" +msgstr "\"%s\" ë””ë ‰í„°ë¦¬ì— ìœ ë‹‰ìŠ¤ ë„ë©”ì¸ ì†Œì¼“ì„ ë§Œë“¤ 수 없습니다" + +#: postmaster/postmaster.c:1099 +#, c-format +msgid "could not create any Unix-domain sockets" +msgstr "유닉스 ë„ë©”ì¸ ì†Œì¼“ì„ ë§Œë“¤ 수 없습니다" + +#: postmaster/postmaster.c:1111 +#, c-format +msgid "no socket created for listening" +msgstr "서버 ì ‘ì† ëŒ€ê¸° ìž‘ì—…ì„ ìœ„í•œ ì†Œì¼“ì„ ë§Œë“¤ 수 ì—†ìŒ" + +#: postmaster/postmaster.c:1151 +#, c-format +msgid "could not create I/O completion port for child queue" +msgstr "하위 ëŒ€ê¸°ì—´ì— ëŒ€í•´ I/O 완료 í¬íŠ¸ë¥¼ 만들 수 ì—†ìŒ" + +#: postmaster/postmaster.c:1180 +#, c-format +msgid "%s: could not change permissions of external PID file \"%s\": %s\n" +msgstr "%s: \"%s\" 외부 PID 파ì¼ì˜ ì ‘ê·¼ ê¶Œí•œì„ ë°”ê¿€ 수 ì—†ìŒ: %s\n" + +#: postmaster/postmaster.c:1184 +#, c-format +msgid "%s: could not write external PID file \"%s\": %s\n" +msgstr "%s: 외부 pid íŒŒì¼ \"%s\" 를 쓸 수 ì—†ìŒ: %s\n" + +#: postmaster/postmaster.c:1234 +#, c-format +msgid "ending log output to stderr" +msgstr "stderr 쪽 로그 ì¶œë ¥ì„ ì¤‘ì§€í•©ë‹ˆë‹¤." + +#: postmaster/postmaster.c:1235 +#, c-format +msgid "Future log output will go to log destination \"%s\"." +msgstr "ìžì„¸í•œ 로그는 \"%s\" 쪽으로 기ë¡ë©ë‹ˆë‹¤." + +#: postmaster/postmaster.c:1261 utils/init/postinit.c:213 +#, c-format +msgid "could not load pg_hba.conf" +msgstr "pg_hba.conf를 로드할 수 ì—†ìŒ" + +#: postmaster/postmaster.c:1287 +#, c-format +msgid "postmaster became multithreaded during startup" +msgstr "" + +#: postmaster/postmaster.c:1288 +#, c-format +msgid "Set the LC_ALL environment variable to a valid locale." +msgstr "LC_ALL 환경 설정값으로 ì•Œë§žì€ ë¡œì¼€ì¼ ì´ë¦„ì„ ì§€ì •í•˜ì„¸ìš”." + +#: postmaster/postmaster.c:1385 +#, c-format +msgid "%s: could not locate matching postgres executable" +msgstr "%s: 실행가능한 postgres í”„ë¡œê·¸ëž¨ì„ ì°¾ì„ ìˆ˜ 없습니다" + +#: postmaster/postmaster.c:1408 utils/misc/tzparser.c:341 +#, c-format +msgid "" +"This may indicate an incomplete PostgreSQL installation, or that the file " +"\"%s\" has been moved away from its proper location." +msgstr "" +"ì´ ë¬¸ì œëŠ” PostgreSQL 설치가 불완전하게 ë˜ì—ˆê±°ë‚˜, \"%s\" 파ì¼ì´ 올바른 ìœ„ì¹˜ì— " +"있지 않아서 ë°œìƒí–ˆìŠµë‹ˆë‹¤." + +#: postmaster/postmaster.c:1436 +#, c-format +msgid "data directory \"%s\" does not exist" +msgstr "\"%s\" ë°ì´í„° 디렉터리 ì—†ìŒ" + +#: postmaster/postmaster.c:1441 +#, c-format +msgid "could not read permissions of directory \"%s\": %m" +msgstr "\"%s\" 디렉터리 ì½ê¸° 권한 ì—†ìŒ: %m" + +#: postmaster/postmaster.c:1449 +#, c-format +msgid "specified data directory \"%s\" is not a directory" +msgstr "지정한 \"%s\" ë°ì´í„° 디렉터리는 디렉터리가 아님" + +#: postmaster/postmaster.c:1465 +#, c-format +msgid "data directory \"%s\" has wrong ownership" +msgstr "\"%s\" ë°ì´í„° 디렉터리 소유주가 잘못 ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: postmaster/postmaster.c:1467 +#, c-format +msgid "The server must be started by the user that owns the data directory." +msgstr "서버는 지정한 ë°ì´í„° ë””ë ‰í„°ë¦¬ì˜ ì†Œìœ ì£¼ 권한으로 시작ë˜ì–´ì•¼í•©ë‹ˆë‹¤." + +#: postmaster/postmaster.c:1487 +#, c-format +msgid "data directory \"%s\" has group or world access" +msgstr "\"%s\" ë°ì´í„° 디렉터리 액세스 ê¶Œí•œì´ ìž˜ëª» ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: postmaster/postmaster.c:1489 +#, c-format +msgid "Permissions should be u=rwx (0700)." +msgstr "액세스 ê¶Œí•œì€ u=rwx (0700) ê°’ì´ì–´ì•¼ 합니다." + +#: postmaster/postmaster.c:1500 +#, c-format +msgid "" +"%s: could not find the database system\n" +"Expected to find it in the directory \"%s\",\n" +"but could not open file \"%s\": %s\n" +msgstr "" +"%s: ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì„ ì°¾ì„ ìˆ˜ 없습니다\n" +"\"%s\" 디렉터리 ì•ˆì— í•´ë‹¹ ìžë£Œê°€ 있기를 기대했는ë°,\n" +"\"%s\" 파ì¼ì„ ì—´ 수가 없었습니다: %s\n" + +#: postmaster/postmaster.c:1677 +#, c-format +msgid "select() failed in postmaster: %m" +msgstr "postmasterì—서 select() ìž‘ë™ ì‹¤íŒ¨: %m" + +#: postmaster/postmaster.c:1828 +#, c-format +msgid "" +"performing immediate shutdown because data directory lock file is invalid" +msgstr "" + +#: postmaster/postmaster.c:1906 postmaster/postmaster.c:1937 +#, c-format +msgid "incomplete startup packet" +msgstr "ì•„ì§ ì™„ë£Œë˜ì§€ ì•Šì€ ì‹œìž‘ 패킷" + +#: postmaster/postmaster.c:1918 +#, c-format +msgid "invalid length of startup packet" +msgstr "시작 íŒ¨í‚·ì˜ ê¸¸ì´ê°€ 잘못 ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: postmaster/postmaster.c:1976 +#, c-format +msgid "failed to send SSL negotiation response: %m" +msgstr "SSL ì—°ê²° ìž‘ì—…ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤: %m" + +#: postmaster/postmaster.c:2005 +#, c-format +msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u" +msgstr "" +"ì§€ì›í•˜ì§€ 않는 frontend 프로토콜 %u.%u: 서버ì—서 ì§€ì›í•˜ëŠ” 프로토콜 %u.0 .. %u." +"%u" + +#: postmaster/postmaster.c:2068 utils/misc/guc.c:5660 utils/misc/guc.c:5753 +#: utils/misc/guc.c:7051 utils/misc/guc.c:9805 utils/misc/guc.c:9839 +#, c-format +msgid "invalid value for parameter \"%s\": \"%s\"" +msgstr "ìž˜ëª»ëœ \"%s\" 매개 ë³€ìˆ˜ì˜ ê°’: \"%s\"" + +#: postmaster/postmaster.c:2071 +#, c-format +msgid "Valid values are: \"false\", 0, \"true\", 1, \"database\"." +msgstr "" + +#: postmaster/postmaster.c:2091 +#, c-format +msgid "invalid startup packet layout: expected terminator as last byte" +msgstr "ìž˜ëª»ëœ ì‹œìž‘ 패킷 ë ˆì´ì•„웃: 마지막 ë°”ì´íŠ¸ë¡œ 종결문ìžê°€ 발견ë˜ì—ˆìŒ" + +#: postmaster/postmaster.c:2119 +#, c-format +msgid "no PostgreSQL user name specified in startup packet" +msgstr "시작 패킷ì—서 지정한 사용ìžëŠ” PostgreSQL ì‚¬ìš©ìž ì´ë¦„ì´ ì•„ë‹™ë‹ˆë‹¤" + +#: postmaster/postmaster.c:2178 +#, c-format +msgid "the database system is starting up" +msgstr "ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì´ ìƒˆë¡œ ê°€ë™ ì¤‘ìž…ë‹ˆë‹¤." + +#: postmaster/postmaster.c:2183 +#, c-format +msgid "the database system is shutting down" +msgstr "ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì´ ì¤‘ì§€ 중입니다" + +#: postmaster/postmaster.c:2188 +#, c-format +msgid "the database system is in recovery mode" +msgstr "ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì´ ìžë™ 복구 작업 중입니다." + +#: postmaster/postmaster.c:2193 storage/ipc/procarray.c:297 +#: storage/ipc/sinvaladt.c:298 storage/lmgr/proc.c:340 +#, c-format +msgid "sorry, too many clients already" +msgstr "최대 ë™ì‹œ ì ‘ì†ìž 수를 초과했습니다." + +#: postmaster/postmaster.c:2255 +#, c-format +msgid "wrong key in cancel request for process %d" +msgstr "프로세스 %dì— ëŒ€í•œ 취소 ìš”ì²­ì— ìž˜ëª»ëœ í‚¤ê°€ 있ìŒ" + +#: postmaster/postmaster.c:2263 +#, c-format +msgid "PID %d in cancel request did not match any process" +msgstr "취소 ìš”ì²­ì˜ PID %dê³¼(와) ì¼ì¹˜í•˜ëŠ” 프로세스가 ì—†ìŒ" + +#: postmaster/postmaster.c:2483 +#, c-format +msgid "received SIGHUP, reloading configuration files" +msgstr "SIGHUP 신호를 받아서, 환경설정파ì¼ì„ 다시 ì½ê³  있습니다." + +#: postmaster/postmaster.c:2508 +#, c-format +msgid "pg_hba.conf not reloaded" +msgstr "pg_hba.confê°€ 다시 로드ë˜ì§€ 않ìŒ" + +#: postmaster/postmaster.c:2512 +#, c-format +msgid "pg_ident.conf not reloaded" +msgstr "pg_ident.conf 파ì¼ì´ 다시 로드ë˜ì§€ 않ìŒ" + +#: postmaster/postmaster.c:2553 +#, c-format +msgid "received smart shutdown request" +msgstr "smart 중지 ìš”ì²­ì„ ë°›ì•˜ìŠµë‹ˆë‹¤." + +#: postmaster/postmaster.c:2608 +#, c-format +msgid "received fast shutdown request" +msgstr "fast 중지 ìš”ì²­ì„ ë°›ì•˜ìŠµë‹ˆë‹¤." + +#: postmaster/postmaster.c:2638 +#, c-format +msgid "aborting any active transactions" +msgstr "모든 활성화 ë˜ì–´ìžˆëŠ” íŠ¸ëžœìž­ì…˜ì„ ì¤‘ì§€í•˜ê³  있습니다." + +#: postmaster/postmaster.c:2672 +#, c-format +msgid "received immediate shutdown request" +msgstr "immediate 중지 ìš”ì²­ì„ ë°›ì•˜ìŠµë‹ˆë‹¤." + +#: postmaster/postmaster.c:2736 +#, c-format +msgid "shutdown at recovery target" +msgstr "복구 타겟ì—서 중지함" + +#: postmaster/postmaster.c:2752 postmaster/postmaster.c:2775 +msgid "startup process" +msgstr "시작 프로세스" + +#: postmaster/postmaster.c:2755 +#, c-format +msgid "aborting startup due to startup process failure" +msgstr "시작 프로세스 실패 ë•Œë¬¸ì— ì„œë²„ ì‹œìž‘ì´ ì¤‘ì§€ ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: postmaster/postmaster.c:2816 +#, c-format +msgid "database system is ready to accept connections" +msgstr "ì´ì œ ë°ì´í„°ë² ì´ìФ 서버로 ì ‘ì†í•  수 있습니다" + +#: postmaster/postmaster.c:2835 +msgid "background writer process" +msgstr "백그ë¼ìš´ë“œ writer 프로세스" + +#: postmaster/postmaster.c:2889 +msgid "checkpointer process" +msgstr "ì²´í¬í¬ì¸íЏ 프로세스" + +#: postmaster/postmaster.c:2905 +msgid "WAL writer process" +msgstr "WAL 쓰기 프로세스" + +#: postmaster/postmaster.c:2919 +msgid "WAL receiver process" +msgstr "WAL 수신 프로세스" + +#: postmaster/postmaster.c:2934 +msgid "autovacuum launcher process" +msgstr "autovacuum 실행기 프로세스" + +#: postmaster/postmaster.c:2949 +msgid "archiver process" +msgstr "archiver 프로세스" + +#: postmaster/postmaster.c:2965 +msgid "statistics collector process" +msgstr "통계 수집기 프로세스" + +#: postmaster/postmaster.c:2979 +msgid "system logger process" +msgstr "시스템 로그 프로세스" + +#: postmaster/postmaster.c:3041 +msgid "worker process" +msgstr "ìž‘ì—…ìž í”„ë¡œì„¸ìŠ¤" + +#: postmaster/postmaster.c:3124 postmaster/postmaster.c:3144 +#: postmaster/postmaster.c:3151 postmaster/postmaster.c:3169 +msgid "server process" +msgstr "서버 프로세스" + +#: postmaster/postmaster.c:3223 +#, c-format +msgid "terminating any other active server processes" +msgstr "다른 활성화 ë˜ì–´ìžˆëŠ” 서버 프로세스를 마치고 있는 중입니다" + +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:3479 +#, c-format +msgid "%s (PID %d) exited with exit code %d" +msgstr "%s (PID %d) í”„ë¡œê·¸ëž¨ì€ %d 코드로 마쳤습니다" + +#: postmaster/postmaster.c:3481 postmaster/postmaster.c:3492 +#: postmaster/postmaster.c:3503 postmaster/postmaster.c:3512 +#: postmaster/postmaster.c:3522 +#, c-format +msgid "Failed process was running: %s" +msgstr "" + +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:3489 +#, c-format +msgid "%s (PID %d) was terminated by exception 0x%X" +msgstr "%s (PID %d) 프로세스가 0x%X 예외로 ì¸í•´ 종료ë¨" + +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:3499 +#, c-format +msgid "%s (PID %d) was terminated by signal %d: %s" +msgstr "%s (PID %d) 프로세스가 %d번 시그ë„ì„ ë°›ì•„ 종료ë¨: %s" + +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:3510 +#, c-format +msgid "%s (PID %d) was terminated by signal %d" +msgstr "%s (PID %d) 프로세스가 %d번 시그ë„ì„ ë°›ì•„ 종료ë¨" + +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:3520 +#, c-format +msgid "%s (PID %d) exited with unrecognized status %d" +msgstr "%s (PID %d) 프로세스가 ì¸ì‹í•  수 없는 %d ìƒíƒœë¡œ 종료ë¨" + +#: postmaster/postmaster.c:3707 +#, c-format +msgid "abnormal database system shutdown" +msgstr "비정ìƒì ì¸ ë°ì´í„°ë² ì´ìФ 시스템 서비스를 중지" + +#: postmaster/postmaster.c:3747 +#, c-format +msgid "all server processes terminated; reinitializing" +msgstr "모든 서버 프로세스가 중지 ë˜ì—ˆìŠµë‹ˆë‹¤; 재 초기화 중" + +#: postmaster/postmaster.c:3959 +#, c-format +msgid "could not fork new process for connection: %m" +msgstr "ì—°ê²°ì„ ìœ„í•œ 새 프로세스 할당(fork) 실패: %m" + +#: postmaster/postmaster.c:4001 +msgid "could not fork new process for connection: " +msgstr "ì—°ê²°ì„ ìœ„í•œ 새 프로세스 할당(fork) 실패: " + +#: postmaster/postmaster.c:4115 +#, c-format +msgid "connection received: host=%s port=%s" +msgstr "ì ‘ì† ìˆ˜ë½: host=%s port=%s" + +#: postmaster/postmaster.c:4120 +#, c-format +msgid "connection received: host=%s" +msgstr "ì ‘ì† ìˆ˜ë½: host=%s" + +#: postmaster/postmaster.c:4403 +#, c-format +msgid "could not execute server process \"%s\": %m" +msgstr "\"%s\" 서버 프로세스를 실행할 수 ì—†ìŒ: %m" + +#: postmaster/postmaster.c:4947 +#, c-format +msgid "database system is ready to accept read only connections" +msgstr "ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì´ ì½ê¸° 전용으로 ì—°ê²°ì„ ìˆ˜ë½í•  준비가 ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: postmaster/postmaster.c:5238 +#, c-format +msgid "could not fork startup process: %m" +msgstr "시작 프로세스 할당(fork) 실패: %m" + +#: postmaster/postmaster.c:5242 +#, c-format +msgid "could not fork background writer process: %m" +msgstr "백그ë¼ìš´ writer 프로세스를 할당(fork)í•  수 없습니다: %m" + +#: postmaster/postmaster.c:5246 +#, c-format +msgid "could not fork checkpointer process: %m" +msgstr "ì²´í¬í¬ì¸íЏ 프로세스를 할당(fork)í•  수 없습니다: %m" + +#: postmaster/postmaster.c:5250 +#, c-format +msgid "could not fork WAL writer process: %m" +msgstr "WAL 쓰기 프로세스를 할당(fork)í•  수 ì—†ìŒ: %m" + +#: postmaster/postmaster.c:5254 +#, c-format +msgid "could not fork WAL receiver process: %m" +msgstr "WAL 수신 프로세스를 할당(fork)í•  수 ì—†ìŒ: %m" + +#: postmaster/postmaster.c:5258 +#, c-format +msgid "could not fork process: %m" +msgstr "프로세스 할당(fork) 실패: %m" + +#: postmaster/postmaster.c:5420 postmaster/postmaster.c:5443 +#, c-format +msgid "database connection requirement not indicated during registration" +msgstr "" + +#: postmaster/postmaster.c:5427 postmaster/postmaster.c:5450 +#, c-format +msgid "invalid processing mode in background worker" +msgstr "백그ë¼ìš´ë“œ 작업ìžì—서 ìž˜ëª»ëœ í”„ë¡œì„¸ì‹± 모드가 사용ë¨" + +#: postmaster/postmaster.c:5502 +#, c-format +msgid "starting background worker process \"%s\"" +msgstr "\"%s\" 백그ë¼ìš´ë“œ ìž‘ì—…ìž í”„ë¡œì„¸ìŠ¤ë¥¼ 시작합니다." + +#: postmaster/postmaster.c:5513 +#, c-format +msgid "could not fork worker process: %m" +msgstr "ìž‘ì—…ìž í”„ë¡œì„¸ìŠ¤ë¥¼ 할당(fork)í•  수 ì—†ìŒ: %m" + +#: postmaster/postmaster.c:5901 +#, c-format +msgid "could not duplicate socket %d for use in backend: error code %d" +msgstr "백엔드ì—서 사용하기 위해 %d ì†Œì¼“ì„ ë³µì‚¬í•  수 ì—†ìŒ: 오류 코드 %d" + +#: postmaster/postmaster.c:5933 +#, c-format +msgid "could not create inherited socket: error code %d\n" +msgstr "ìƒì†ëœ ì†Œì¼“ì„ ë§Œë“¤ 수 ì—†ìŒ: 오류 코드 %d\n" + +#: postmaster/postmaster.c:5962 +#, c-format +msgid "could not open backend variables file \"%s\": %s\n" +msgstr "\"%s\" 백엔드 변수 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s\n" + +#: postmaster/postmaster.c:5969 +#, c-format +msgid "could not read from backend variables file \"%s\": %s\n" +msgstr "\"%s\" 백엔드 변수 파ì¼ì„ ì½ì„ 수 ì—†ìŒ: %s\n" + +#: postmaster/postmaster.c:5978 +#, c-format +msgid "could not remove file \"%s\": %s\n" +msgstr "\"%s\" 파ì¼ì„ 삭제할 수 ì—†ìŒ: %s\n" + +#: postmaster/postmaster.c:5995 +#, c-format +msgid "could not map view of backend variables: error code %lu\n" +msgstr "백엔드 변수 파ì¼ì˜ view를 mapí•  수 ì—†ìŒ: 오류 코드 %lu\n" + +#: postmaster/postmaster.c:6004 +#, c-format +msgid "could not unmap view of backend variables: error code %lu\n" +msgstr "백엔드 변수 파ì¼ì˜ view를 unmapí•  수 ì—†ìŒ: 오류 코드 %lu\n" + +#: postmaster/postmaster.c:6011 +#, c-format +msgid "could not close handle to backend parameter variables: error code %lu\n" +msgstr "백엔드 변수 파ì¼ì„ ë‹«ì„ ìˆ˜ ì—†ìŒ: 오류 코드 %lu\n" + +#: postmaster/postmaster.c:6172 +#, c-format +msgid "could not read exit code for process\n" +msgstr "í”„ë¡œì„¸ìŠ¤ì˜ ì¢…ë£Œ 코드를 ì½ì„ 수 ì—†ìŒ\n" + +#: postmaster/postmaster.c:6177 +#, c-format +msgid "could not post child completion status\n" +msgstr "하위 완료 ìƒíƒœë¥¼ 게시할 수 ì—†ìŒ\n" + +#: postmaster/syslogger.c:441 postmaster/syslogger.c:1041 +#, c-format +msgid "could not read from logger pipe: %m" +msgstr "로그 파ì´í”„ì—서 ì½ê¸° 실패: %m" + +#: postmaster/syslogger.c:490 +#, c-format +msgid "logger shutting down" +msgstr "로그 작업 ë내는 중" + +#: postmaster/syslogger.c:534 postmaster/syslogger.c:548 +#, c-format +msgid "could not create pipe for syslog: %m" +msgstr "syslogì—서 사용할 파ì´í”„를 만들 수 없습니다: %m" + +#: postmaster/syslogger.c:584 +#, c-format +msgid "could not fork system logger: %m" +msgstr "시스템 로거(logger)를 확보하질 못 했습니다: %m" + +#: postmaster/syslogger.c:620 +#, c-format +msgid "redirecting log output to logging collector process" +msgstr "" + +#: postmaster/syslogger.c:621 +#, c-format +msgid "Future log output will appear in directory \"%s\"." +msgstr "" + +#: postmaster/syslogger.c:629 +#, c-format +msgid "could not redirect stdout: %m" +msgstr "í‘œì¤€ì¶œë ¥ì„ redirect 하지 못했습니다: %m" + +#: postmaster/syslogger.c:634 postmaster/syslogger.c:651 +#, c-format +msgid "could not redirect stderr: %m" +msgstr "표준오류(stderr)를 redirect 하지 못했습니다: %m" + +#: postmaster/syslogger.c:996 +#, c-format +msgid "could not write to log file: %s\n" +msgstr "ë¡œê·¸íŒŒì¼ ì“°ê¸° 실패: %s\n" + +#: postmaster/syslogger.c:1136 +#, c-format +msgid "could not open log file \"%s\": %m" +msgstr "\"%s\" 잠금파ì¼ì„ ì—´ 수 ì—†ìŒ: %m" + +#: postmaster/syslogger.c:1198 postmaster/syslogger.c:1242 +#, c-format +msgid "disabling automatic rotation (use SIGHUP to re-enable)" +msgstr "" +"ë¡œê·¸íŒŒì¼ ìžë™ êµì²´ ê¸°ëŠ¥ì„ ê¸ˆì§€í•©ë‹ˆë‹¤(êµì²´í•˜ë ¤ë©´ SIGHUP 시그ë„ì„ ì‚¬ìš©í•¨)" + +#: regex/regc_pg_locale.c:261 +#, c-format +msgid "could not determine which collation to use for regular expression" +msgstr "ì •ê·œì‹ì„ 사용해서 사용할 정렬규칙(collation)ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: replication/basebackup.c:232 +#, c-format +msgid "could not stat control file \"%s\": %m" +msgstr "\"%s\" 컨트롤 파ì¼ì˜ 정보를 구할 수 ì—†ìŒ: %m" + +#: replication/basebackup.c:341 +#, c-format +msgid "could not find any WAL files" +msgstr "ì–´ë–¤ WAL 파ì¼ë„ ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: replication/basebackup.c:354 replication/basebackup.c:368 +#: replication/basebackup.c:377 +#, c-format +msgid "could not find WAL file \"%s\"" +msgstr "\"%s\" WAL íŒŒì¼ ì°¾ê¸° 실패" + +#: replication/basebackup.c:416 replication/basebackup.c:442 +#, c-format +msgid "unexpected WAL file size \"%s\"" +msgstr "\"%s\" WAL 파ì¼ì˜ í¬ê¸°ê°€ 알맞지 않ìŒ" + +#: replication/basebackup.c:428 replication/basebackup.c:1160 +#, c-format +msgid "base backup could not send data, aborting backup" +msgstr "ë² ì´ìФ 백업ì—서 ìžë£Œë¥¼ 보낼 수 ì—†ìŒ. ë°±ì—…ì„ ì¤‘ì§€í•©ë‹ˆë‹¤." + +#: replication/basebackup.c:530 replication/basebackup.c:539 +#: replication/basebackup.c:548 replication/basebackup.c:557 +#: replication/basebackup.c:566 replication/basebackup.c:577 +#: replication/basebackup.c:594 +#, c-format +msgid "duplicate option \"%s\"" +msgstr "\"%s\" ì˜µì…˜ì„ ë‘ ë²ˆ 지정했습니다" + +#: replication/basebackup.c:583 utils/misc/guc.c:5670 +#, c-format +msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)" +msgstr "" +"%d ê°’ì€ \"%s\" 매개 ë³€ìˆ˜ì˜ ê°’ìœ¼ë¡œ 타당한 범위(%d .. %d)를 벗어났습니다." + +#: replication/basebackup.c:857 replication/basebackup.c:959 +#, c-format +msgid "could not stat file or directory \"%s\": %m" +msgstr "íŒŒì¼ ë˜ëŠ” 디렉터리 \"%s\"ì˜ ìƒíƒœë¥¼ 확ì¸í•  수 ì—†ìŒ: %m" + +#: replication/basebackup.c:1112 +#, c-format +msgid "skipping special file \"%s\"" +msgstr "\"%s\" 특수 파ì¼ì„ 건너뜀" + +#: replication/basebackup.c:1223 +#, c-format +msgid "file name too long for tar format: \"%s\"" +msgstr "tar 파ì¼ë¡œ 묶기ì—는 íŒŒì¼ ì´ë¦„ì´ ë„ˆë¬´ 긺: \"%s\"" + +#: replication/basebackup.c:1228 +#, c-format +msgid "" +"symbolic link target too long for tar format: file name \"%s\", target \"%s\"" +msgstr "" +"tar í¬ë©§ì„ 사용하기ì—는 심볼릭 ë§í¬ì˜ ëŒ€ìƒ ê²½ë¡œê°€ 너무 ê¹ë‹ˆë‹¤: íŒŒì¼ ì´ë¦„ \"%s" +"\", ëŒ€ìƒ \"%s\"" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:119 +#, c-format +msgid "could not connect to the primary server: %s" +msgstr "주 ì„œë²„ì— ì—°ê²° í•  수 ì—†ìŒ: %s" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:142 +#, c-format +msgid "could not parse connection string: %s" +msgstr "ì ‘ì† ë¬¸ìžì—´ì„ ë¶„ì„í•  수 ì—†ìŒ: %s" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:192 +#, c-format +msgid "" +"could not receive database system identifier and timeline ID from the " +"primary server: %s" +msgstr "" +"주 서버ì—서 ë°ì´í„°ë² ì´ìФ 시스템 ì‹ë³„번호와 타임ë¼ì¸ 번호를 ë°›ì„ ìˆ˜ ì—†ìŒ: %s" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:203 +#: replication/libpqwalreceiver/libpqwalreceiver.c:357 +#, c-format +msgid "invalid response from primary server" +msgstr "주 서버ì—서 ìž˜ëª»ëœ ì‘ë‹µì´ ì™”ìŒ" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:204 +#, c-format +msgid "" +"Could not identify system: got %d rows and %d fields, expected %d rows and " +"%d or more fields." +msgstr "" +"ì‹œìŠ¤í…œì„ ì‹ë³„í•  수 ì—†ìŒ: 로우수 %d, 필드수 %d, 예ìƒê°’: 로우수 %d, 필드수 %d " +"ì´ìƒ" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:220 +#, c-format +msgid "database system identifier differs between the primary and standby" +msgstr "ë°ì´í„°ë² ì´ìФ 시스템 ì‹ë³„번호가 주 서버와 대기 서버가 서로 다름" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:221 +#, c-format +msgid "The primary's identifier is %s, the standby's identifier is %s." +msgstr "주 서버: %s, 대기 서버: %s." + +#: replication/libpqwalreceiver/libpqwalreceiver.c:263 +#, c-format +msgid "could not start WAL streaming: %s" +msgstr "WAL ìŠ¤íŠ¸ë¦¬ë° ìž‘ì—…ì„ ì‹œìž‘í•  수 ì—†ìŒ: %s" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:281 +#, c-format +msgid "could not send end-of-streaming message to primary: %s" +msgstr "주 서버로 ìŠ¤íŠ¸ë¦¬ë° ì¢…ë£Œ 메시지를 보낼 수 ì—†ìŒ: %s" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:303 +#, c-format +msgid "unexpected result set after end-of-streaming" +msgstr "ìŠ¤íŠ¸ë¦¬ë° ì¢…ë£Œ ìš”ì²­ì— ëŒ€í•œ ìž˜ëª»ëœ ì‘ë‹µì„ ë°›ìŒ" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:315 +#, c-format +msgid "error reading result of streaming command: %s" +msgstr "ìŠ¤íŠ¸ë¦¬ë° ëª…ë ¹ì— ëŒ€í•œ ê²°ê³¼ 처리ì—서 오류 ë°œìƒ: %s" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:323 +#, c-format +msgid "unexpected result after CommandComplete: %s" +msgstr "CommandComplete 작업 후 예ìƒì¹˜ 못한 결과를 ë°›ìŒ: %s" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:346 +#, c-format +msgid "could not receive timeline history file from the primary server: %s" +msgstr "주 서버ì—서 타임ë¼ì¸ ë‚´ì—­ 파ì¼ì„ ë°›ì„ ìˆ˜ ì—†ìŒ: %s" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:358 +#, c-format +msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields." +msgstr "2ê°œì˜ ì¹¼ëŸ¼ìœ¼ë¡œ ëœ í•˜ë‚˜ì˜ íŠœí”Œì„ ì˜ˆìƒí•˜ì§€ë§Œ, %d 튜플 (%d 칼럼)ì„ ìˆ˜ì‹ í•¨" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:386 +#, c-format +msgid "invalid socket: %s" +msgstr "ìž˜ëª»ëœ ì†Œì¼“: %s" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:426 +#: storage/ipc/latch.c:1280 +#, c-format +msgid "select() failed: %m" +msgstr "select() 실패: %m" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:549 +#: replication/libpqwalreceiver/libpqwalreceiver.c:576 +#: replication/libpqwalreceiver/libpqwalreceiver.c:582 +#, c-format +msgid "could not receive data from WAL stream: %s" +msgstr "WAL 스트림ì—서 ìžë£Œ 받기 실패: %s" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:601 +#, c-format +msgid "could not send data to WAL stream: %s" +msgstr "WAL ìŠ¤íŠ¸ë¦¼ì— ë°ì´í„°ë¥¼ 보낼 수 ì—†ìŒ: %s" + +#: replication/logical/logical.c:83 +#, c-format +msgid "logical decoding requires wal_level >= logical" +msgstr "ë…¼ë¦¬ì  ë””ì½”ë”© ê¸°ëŠ¥ì€ wal_level ê°’ì´ logical ì´ìƒì´ì–´ì•¼ 함" + +#: replication/logical/logical.c:88 +#, c-format +msgid "logical decoding requires a database connection" +msgstr "ë…¼ë¦¬ì  ë””ì½”ë”© ê¸°ëŠ¥ì€ ë°ì´í„°ë² ì´ìФ ì—°ê²°ì´ í•„ìš”í•©ë‹ˆë‹¤" + +#: replication/logical/logical.c:106 +#, c-format +msgid "logical decoding cannot be used while in recovery" +msgstr "ë…¼ë¦¬ì  ë””ì½”ë”© ê¸°ëŠ¥ì€ ë³µêµ¬ ìƒíƒœì—서는 사용할 수 ì—†ìŒ" + +#: replication/logical/logical.c:236 replication/logical/logical.c:348 +#, c-format +msgid "cannot use physical replication slot for logical decoding" +msgstr "ë…¼ë¦¬ì  ë””ì½”ë”©ì—서는 ë¬¼ë¦¬ì  ë³µì œ ìŠ¬ë¡¯ì„ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: replication/logical/logical.c:241 replication/logical/logical.c:353 +#, c-format +msgid "replication slot \"%s\" was not created in this database" +msgstr "\"%s\" 복제 ìŠ¬ë¡¯ì´ ì´ ë°ì´í„°ë² ì´ìФ 만들어져있지 않ìŒ" + +#: replication/logical/logical.c:248 +#, c-format +msgid "" +"cannot create logical replication slot in transaction that has performed " +"writes" +msgstr "" +"ìžë£Œ 변경 ìž‘ì—…ì´ ìžˆëŠ” 트랜잭션 안ì—서는 ë…¼ë¦¬ì  ë³µì œ ìŠ¬ë¡¯ì„ ë§Œë“¤ 수 ì—†ìŒ" + +#: replication/logical/logical.c:390 +#, c-format +msgid "starting logical decoding for slot \"%s\"" +msgstr "\"%s\" ì´ë¦„ì˜ ë…¼ë¦¬ì  ë³µì œ ìŠ¬ë¡¯ì„ ë§Œë“œëŠ” 중" + +#: replication/logical/logical.c:392 +#, c-format +msgid "streaming transactions committing after %X/%X, reading WAL from %X/%X" +msgstr "" + +#: replication/logical/logical.c:527 +#, c-format +msgid "" +"slot \"%s\", output plugin \"%s\", in the %s callback, associated LSN %X/%X" +msgstr "" + +#: replication/logical/logical.c:534 +#, c-format +msgid "slot \"%s\", output plugin \"%s\", in the %s callback" +msgstr "" + +#: replication/logical/logicalfuncs.c:113 replication/slotfuncs.c:32 +#, c-format +msgid "must be superuser or replication role to use replication slots" +msgstr "" +"복제 ìŠ¬ë¡¯ì€ superuser ë˜ëŠ” replication 롤 ì˜µì…˜ì„ í¬í•¨í•œ 사용ìžë§Œ 사용할 수 있" +"습니다." + +#: replication/logical/logicalfuncs.c:152 +#, c-format +msgid "slot name must not be null" +msgstr "슬롯 ì´ë¦„으로 null ê°’ì„ ì‚¬ìš©í•  수 없습니다" + +#: replication/logical/logicalfuncs.c:168 +#, c-format +msgid "options array must not be null" +msgstr "옵션 ë°°ì—´ì€ null ê°’ì„ ì‚¬ìš©í•  수 없습니다." + +#: replication/logical/logicalfuncs.c:199 +#, c-format +msgid "array must be one-dimensional" +msgstr "ë°°ì—´ì€ ì¼ì°¨ì› ë°°ì—´ì´ì–´ì•¼í•©ë‹ˆë‹¤" + +#: replication/logical/logicalfuncs.c:205 +#, c-format +msgid "array must not contain nulls" +msgstr "ë°°ì—´ì—는 null ê°’ì„ í¬í•¨í•  수 없습니다" + +#: replication/logical/logicalfuncs.c:221 utils/adt/json.c:2277 +#: utils/adt/jsonb.c:1356 +#, c-format +msgid "array must have even number of elements" +msgstr "ë°°ì—´ì€ ê·¸ ìš”ì†Œì˜ ê°œìˆ˜ê°€ ì§ìˆ˜ì—¬ì•¼ 함" + +#: replication/logical/logicalfuncs.c:264 +#, c-format +msgid "" +"logical decoding output plugin \"%s\" produces binary output, but function " +"\"%s\" expects textual data" +msgstr "" + +#: replication/logical/origin.c:181 +#, c-format +msgid "only superusers can query or manipulate replication origins" +msgstr "슈í¼ìœ ì €ë§Œ 복제 ì›ë³¸ì— 대한 쿼리나, 관리를 í•  수 있습니다." + +#: replication/logical/origin.c:186 +#, c-format +msgid "" +"cannot query or manipulate replication origin when max_replication_slots = 0" +msgstr "" + +#: replication/logical/origin.c:191 +#, c-format +msgid "cannot manipulate replication origins during recovery" +msgstr "" + +#: replication/logical/origin.c:316 +#, c-format +msgid "could not find free replication origin OID" +msgstr "비어있는 복제 오리진 OID를 ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: replication/logical/origin.c:353 +#, c-format +msgid "could not drop replication origin with OID %d, in use by PID %d" +msgstr "" + +#: replication/logical/origin.c:671 +#, c-format +msgid "replication checkpoint has wrong magic %u instead of %u" +msgstr "복제 ì²´í¬í¬ì¸íŠ¸ì˜ ìž˜ëª»ëœ ë§¤ì§ ë²ˆí˜¸: %u, 기대값: %u" + +#: replication/logical/origin.c:703 +#, c-format +msgid "could not read file \"%s\": read %d of %zu" +msgstr "\"%s\" 파ì¼ì„ ì½ì„ 수 ì—†ìŒ: %d ì½ìŒ, ì „ì²´ %zu" + +#: replication/logical/origin.c:712 +#, c-format +msgid "could not find free replication state, increase max_replication_slots" +msgstr "" +"사용 가능한 복제 ìŠ¬ë¡¯ì´ ë¶€ì¡±í•©ë‹ˆë‹¤. max_replication_slots ê°’ì„ ëŠ˜ë¦¬ì„¸ìš”" + +#: replication/logical/origin.c:730 +#, c-format +msgid "replication slot checkpoint has wrong checksum %u, expected %u" +msgstr "복제 슬롯 ì²´í¬í¬ì¸íŠ¸ì˜ ì²´í¬ì„¬ ê°’ì´ ìž˜ëª»ë¨: %u, 기대값 %u" + +#: replication/logical/origin.c:854 +#, c-format +msgid "replication origin with OID %d is already active for PID %d" +msgstr "" + +#: replication/logical/origin.c:865 replication/logical/origin.c:1045 +#, c-format +msgid "" +"could not find free replication state slot for replication origin with OID %u" +msgstr "%u OID 복제 ì˜¤ë¦¬ì§„ì„ ìœ„í•œ 여유 복제 ìŠ¬ë¡¯ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: replication/logical/origin.c:867 replication/logical/origin.c:1047 +#: replication/slot.c:1299 +#, c-format +msgid "Increase max_replication_slots and try again." +msgstr "max_replication_slots ê°’ì„ ëŠ˜ë¦° 후 다시 시ë„í•´ 보세요" + +#: replication/logical/origin.c:1004 +#, c-format +msgid "cannot setup replication origin when one is already setup" +msgstr "하나가 ì´ë¯¸ 설정ë˜ì–´ ë” ì´ìƒ 복제 오리진 ì„¤ì •ì„ í•  수 ì—†ìŒ" + +#: replication/logical/origin.c:1033 +#, c-format +msgid "replication identifier %d is already active for PID %d" +msgstr "%d번 복제 ì‹ë³„ìžê°€ %d PIDì—서 사용하고 있습니다." + +#: replication/logical/origin.c:1079 replication/logical/origin.c:1274 +#: replication/logical/origin.c:1294 +#, c-format +msgid "no replication origin is configured" +msgstr "복제 오리진 ì„¤ì •ì´ ì—†ìŠµë‹ˆë‹¤" + +#: replication/logical/reorderbuffer.c:2330 +#, c-format +msgid "could not write to data file for XID %u: %m" +msgstr "%u XID ë‚´ìš©ì„ ë°ì´í„° 파ì¼ì— 쓸 수 ì—†ìŒ: %m" + +#: replication/logical/reorderbuffer.c:2426 +#: replication/logical/reorderbuffer.c:2446 +#, c-format +msgid "could not read from reorderbuffer spill file: %m" +msgstr "reorderbuffer 처리용 파ì¼ì—서 ì½ê¸° 실패: %m" + +#: replication/logical/reorderbuffer.c:2430 +#: replication/logical/reorderbuffer.c:2450 +#, c-format +msgid "" +"could not read from reorderbuffer spill file: read %d instead of %u bytes" +msgstr "" +"reorderbuffer 처리용 파ì¼ì—서 ì½ê¸° 실패: %d ë°”ì´íЏ ì½ìŒ, 기대값 %u ë°”ì´íЏ" + +#: replication/logical/reorderbuffer.c:3106 +#, c-format +msgid "could not read from file \"%s\": read %d instead of %d bytes" +msgstr "\"%s\" 파ì¼ì—서 ì½ê¸° 실패: %d ë°”ì´íЏ ì½ìŒ, 기대값 %d ë°”ì´íЏ" + +#: replication/logical/snapbuild.c:598 +#, c-format +msgid "exported logical decoding snapshot: \"%s\" with %u transaction ID" +msgid_plural "" +"exported logical decoding snapshot: \"%s\" with %u transaction IDs" +msgstr[0] "" + +#: replication/logical/snapbuild.c:917 replication/logical/snapbuild.c:1282 +#: replication/logical/snapbuild.c:1813 +#, c-format +msgid "logical decoding found consistent point at %X/%X" +msgstr "ë…¼ë¦¬ì  ë””ì½”ë”© ì´ì–´ì„œ 시작할 위치: %X/%X" + +#: replication/logical/snapbuild.c:919 +#, c-format +msgid "Transaction ID %u finished; no more running transactions." +msgstr "%u 트랜잭션 ID 마침; ë” ì²˜ë¦¬í•  íŠ¸ëžœìž­ì…˜ì´ ì—†ìŒ" + +#: replication/logical/snapbuild.c:1284 +#, c-format +msgid "There are no running transactions." +msgstr "실행할 íŠ¸ëžœìž­ì…˜ì´ ì—†ìŒ" + +#: replication/logical/snapbuild.c:1346 +#, c-format +msgid "logical decoding found initial starting point at %X/%X" +msgstr "ë…¼ë¦¬ì  ë””ì½”ë”© 시작 위치: %X/%X" + +#: replication/logical/snapbuild.c:1348 +#, c-format +msgid "%u transaction needs to finish." +msgid_plural "%u transactions need to finish." +msgstr[0] "마치려면 %uê°œì˜ íŠ¸ëžœìž­ì…˜ì´ í•„ìš”í•©ë‹ˆë‹¤." + +#: replication/logical/snapbuild.c:1687 replication/logical/snapbuild.c:1713 +#: replication/logical/snapbuild.c:1727 replication/logical/snapbuild.c:1741 +#, c-format +msgid "could not read file \"%s\", read %d of %d: %m" +msgstr "\"%s\" 파ì¼ì„ ì½ì„ 수 ì—†ìŒ, %d/%d ë°”ì´íЏ ì½ìŒ: %m" + +#: replication/logical/snapbuild.c:1693 +#, c-format +msgid "snapbuild state file \"%s\" has wrong magic number: %u instead of %u" +msgstr "\"%s\" snapbuild ìƒíƒœ 파ì¼ì˜ ë§¤ì§ ë²ˆí˜¸ê°€ ì´ìƒí•¨: 현재값 %u, 기대값 %u" + +#: replication/logical/snapbuild.c:1698 +#, c-format +msgid "snapbuild state file \"%s\" has unsupported version: %u instead of %u" +msgstr "\"%s\" snapbuild ìƒíƒœ 파ì¼ì˜ ë²„ì „ì´ ì´ìƒí•¨: 현재값 %u, 기대값 %u" + +#: replication/logical/snapbuild.c:1754 +#, c-format +msgid "checksum mismatch for snapbuild state file \"%s\": is %u, should be %u" +msgstr "" + +#: replication/logical/snapbuild.c:1815 +#, c-format +msgid "Logical decoding will begin using saved snapshot." +msgstr "" + +#: replication/logical/snapbuild.c:1888 +#, c-format +msgid "could not parse file name \"%s\"" +msgstr "\"%s\" íŒŒì¼ ì´ë¦„ì„ ë¶„ì„í•  수 ì—†ìŒ" + +#: replication/slot.c:183 +#, c-format +msgid "replication slot name \"%s\" is too short" +msgstr "\"%s\" 복제 슬롯 ì´ë¦„ì´ ë„ˆë¬´ ì§§ìŒ" + +#: replication/slot.c:192 +#, c-format +msgid "replication slot name \"%s\" is too long" +msgstr "\"%s\" 복제 슬롯 ì´ë¦„ì´ ë„ˆë¬´ 긺" + +#: replication/slot.c:205 +#, c-format +msgid "replication slot name \"%s\" contains invalid character" +msgstr "\"%s\" 복제 슬롯 ì´ë¦„ì— ì‚¬ìš©í•  수 없는 문ìžê°€ 있ìŒ" + +#: replication/slot.c:207 +#, c-format +msgid "" +"Replication slot names may only contain lower case letters, numbers, and the " +"underscore character." +msgstr "" +"복제 슬롯 ì´ë¦„으로 사용할 수 있는 문ìžëŠ” ì˜ë¬¸ 소문ìž, 숫ìž, 밑줄(_) 문ìžìž…니" +"다." + +#: replication/slot.c:254 +#, c-format +msgid "replication slot \"%s\" already exists" +msgstr "\"%s\" ì´ë¦„ì˜ ë³µì œ ìŠ¬ë¡¯ì´ ì´ë¯¸ 있습니다." + +#: replication/slot.c:264 +#, c-format +msgid "all replication slots are in use" +msgstr "모든 복제 ìŠ¬ë¡¯ì´ ì‚¬ìš© 중입니다." + +#: replication/slot.c:265 +#, c-format +msgid "Free one or increase max_replication_slots." +msgstr "하나를 비우든지, max_replication_slots ì„¤ì •ê°’ì„ ëŠ˜ë¦¬ì„¸ìš”." + +#: replication/slot.c:361 +#, c-format +msgid "replication slot \"%s\" does not exist" +msgstr "\"%s\" ì´ë¦„ì˜ ë³µì œ ìŠ¬ë¡¯ì´ ì—†ìŠµë‹ˆë‹¤" + +#: replication/slot.c:365 +#, c-format +msgid "replication slot \"%s\" is active for PID %d" +msgstr "\"%s\" ì´ë¦„ì˜ ë³µì œ ìŠ¬ë¡¯ì„ %d PID 프로세스가 사용중입니다." + +#: replication/slot.c:511 replication/slot.c:923 replication/slot.c:1260 +#, c-format +msgid "could not remove directory \"%s\"" +msgstr "\"%s\" 디렉터리를 삭제할 수 ì—†ìŒ" + +#: replication/slot.c:772 +#, c-format +msgid "replication slots can only be used if max_replication_slots > 0" +msgstr "복제 ìŠ¬ë¡¯ì€ max_replication_slots > 0 ìƒíƒœì—서 ì‚¬ìš©ë  ìˆ˜ 있습니다." + +#: replication/slot.c:777 +#, c-format +msgid "replication slots can only be used if wal_level >= replica" +msgstr "복제 ìŠ¬ë¡¯ì€ wal_level >= replica ìƒíƒœì—서 ì‚¬ìš©ë  ìˆ˜ 있습니다." + +#: replication/slot.c:1192 replication/slot.c:1230 +#, c-format +msgid "could not read file \"%s\", read %d of %u: %m" +msgstr "\"%s\" 파ì¼ì„ ì½ì„ 수 ì—†ìŒ, %d/%u ë°”ì´íЏ ì½ìŒ: %m" + +#: replication/slot.c:1201 +#, c-format +msgid "replication slot file \"%s\" has wrong magic number: %u instead of %u" +msgstr "\"%s\" 복제 슬롯 파ì¼ì˜ ë§¤ì§ ë²ˆí˜¸ê°€ ì´ìƒí•©ë‹ˆë‹¤: 현재값 %u, 기대값 %u" + +#: replication/slot.c:1208 +#, c-format +msgid "replication slot file \"%s\" has unsupported version %u" +msgstr "\"%s\" 복제 슬롯 파ì¼ì€ ì§€ì›í•˜ì§€ 않는 %u 버전 파ì¼ìž…니다" + +#: replication/slot.c:1215 +#, c-format +msgid "replication slot file \"%s\" has corrupted length %u" +msgstr "\"%s\" 복제 슬롯 파ì¼ì´ %u 길ì´ë¡œ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤." + +#: replication/slot.c:1245 +#, c-format +msgid "checksum mismatch for replication slot file \"%s\": is %u, should be %u" +msgstr "\"%s\" 복제 슬롯 파ì¼ì˜ ì²´í¬ì„¬ ê°’ì´ ì´ìƒí•©ë‹ˆë‹¤: 현재값 %u, 기대값 %u" + +#: replication/slot.c:1298 +#, c-format +msgid "too many replication slots active before shutdown" +msgstr "서버 중지 ì „ì— ë„ˆë¬´ ë§Žì€ ë³µì œ ìŠ¬ë¡¯ì´ í™œì„±í™” ìƒíƒœìž…니다" + +#: replication/syncrep.c:221 +#, c-format +msgid "" +"canceling the wait for synchronous replication and terminating connection " +"due to administrator command" +msgstr "" +"ê´€ë¦¬ìž ëª…ë ¹ì— ì˜í•´ ë™ê¸°ì‹ ë³µì œì˜ ëŒ€ê¸° 작업과 ì ‘ì† ëŠê¸° ìž‘ì—…ì„ ì·¨ì†Œí•©ë‹ˆë‹¤." + +#: replication/syncrep.c:222 replication/syncrep.c:239 +#, c-format +msgid "" +"The transaction has already committed locally, but might not have been " +"replicated to the standby." +msgstr "" +"주 서버ì—서는 ì´ íŠ¸ëžœìž­ì…˜ì´ ì»¤ë°‹ë˜ì—ˆì§€ë§Œ, 복제용 대기 서버ì—서는 ì•„ì§ ì»¤ë°‹ ë˜" +"ì§€ ì•Šì•˜ì„ ê°€ëŠ¥ì„±ì´ ìžˆìŠµë‹ˆë‹¤." + +#: replication/syncrep.c:238 +#, c-format +msgid "canceling wait for synchronous replication due to user request" +msgstr "ì‚¬ìš©ìž ìš”ì²­ì— ì˜í•´ ë™ê¸°ì‹ 복제 ìž‘ì—…ì„ ì·¨ì†Œí•©ë‹ˆë‹¤." + +#: replication/syncrep.c:368 +#, c-format +msgid "standby \"%s\" now has synchronous standby priority %u" +msgstr "\"%s\" 대기 ì„œë²„ì˜ ë™ê¸°ì‹ 복제 우선순위가 %u 입니다" + +#: replication/syncrep.c:428 +#, c-format +msgid "standby \"%s\" is now a synchronous standby with priority %u" +msgstr "\"%s\" 대기 ì„œë²„ì˜ ë™ê¸°ì‹ 복제 우선순위가 %u 로 변경ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: replication/syncrep.c:921 +#, c-format +msgid "synchronous_standby_names parser failed" +msgstr "synchronous_standby_names ê°’ì„ ë¶„ì„í•  수 ì—†ìŒ" + +#: replication/syncrep.c:927 +#, c-format +msgid "number of synchronous standbys (%d) must be greater than zero" +msgstr "ë™ê¸°ì‹ 대기 서버 수 (%d)는 0보다 커야 합니다." + +#: replication/walreceiver.c:173 +#, c-format +msgid "terminating walreceiver process due to administrator command" +msgstr "ê´€ë¦¬ìž ëª…ë ¹ìœ¼ë¡œ ì¸í•´ WAL 수신기를 종료합니다." + +#: replication/walreceiver.c:344 +#, c-format +msgid "highest timeline %u of the primary is behind recovery timeline %u" +msgstr "" +"주 ì„œë²„ì˜ ì œì¼ ìµœì‹ ì˜ íƒ€ìž„ë¼ì¸ì€ %u ì¸ë°, 복구 타임ë¼ì¸ %u 보다 옛것입니다" + +#: replication/walreceiver.c:377 +#, c-format +msgid "started streaming WAL from primary at %X/%X on timeline %u" +msgstr "주 ì„œë²„ì˜ WAL ìŠ¤íŠ¸ë¦¬ë° ì‹œìž‘ 위치: %X/%X (타임ë¼ì¸ %u)" + +#: replication/walreceiver.c:382 +#, c-format +msgid "restarted WAL streaming at %X/%X on timeline %u" +msgstr "WAL ìŠ¤íŠ¸ë¦¬ë° ìž¬ì‹œìž‘ 위치: %X/%X (타임ë¼ì¸ %u)" + +#: replication/walreceiver.c:411 +#, c-format +msgid "cannot continue WAL streaming, recovery has already ended" +msgstr "WAL ìŠ¤íŠ¸ë¦¬ë° ê³„ì†í•  수 ì—†ìŒ, 복구가 ì´ë¯¸ 종료ë¨" + +#: replication/walreceiver.c:448 +#, c-format +msgid "replication terminated by primary server" +msgstr "주 ì„œë²„ì— ì˜í•´ì„œ 복제가 ë남" + +#: replication/walreceiver.c:449 +#, c-format +msgid "End of WAL reached on timeline %u at %X/%X." +msgstr "타임ë¼ì¸ %u, 위치 %X/%X ì—서 WAL ëì— ë„달함" + +#: replication/walreceiver.c:543 +#, c-format +msgid "terminating walreceiver due to timeout" +msgstr "시간 제한으로 wal 수신기를 중지합니다." + +#: replication/walreceiver.c:583 +#, c-format +msgid "primary server contains no more WAL on requested timeline %u" +msgstr "주 서버ì—는 요청 ë°›ì€ %u 타임ë¼ì¸ì˜ WALê°€ ë” ì´ìƒ 없습니다." + +#: replication/walreceiver.c:598 replication/walreceiver.c:957 +#, c-format +msgid "could not close log segment %s: %m" +msgstr "%s 로그 ì¡°ê° íŒŒì¼ì„ ë‹«ì„ ìˆ˜ ì—†ìŒ: %m" + +#: replication/walreceiver.c:722 +#, c-format +msgid "fetching timeline history file for timeline %u from primary server" +msgstr "주 서버ì—서 %u 타임ë¼ì¸ìš© 타임ë¼ì¸ ë‚´ì—­ 파ì¼ì„ 가져옵니다." + +#: replication/walreceiver.c:1011 +#, c-format +msgid "could not write to log segment %s at offset %u, length %lu: %m" +msgstr "%s 로그 ì¡°ê° íŒŒì¼ ì“°ê¸° 실패: 위치 %u, ê¸¸ì´ %lu: %m" + +#: replication/walsender.c:485 +#, c-format +msgid "could not seek to beginning of file \"%s\": %m" +msgstr "\"%s\" 파ì¼ì—서 시작 위치를 ì°¾ì„ ìˆ˜ ì—†ìŒ: %m" + +#: replication/walsender.c:536 +#, c-format +msgid "cannot use a logical replication slot for physical replication" +msgstr "ë¬¼ë¦¬ì  ë³µì œì—서 ë…¼ë¦¬ì  ë³µì œ ìŠ¬ë¡¯ì„ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: replication/walsender.c:599 +#, c-format +msgid "" +"requested starting point %X/%X on timeline %u is not in this server's history" +msgstr "ìš”ì²­ëœ %X/%X 시작 위치(타임ë¼ì¸ %u)ê°€ ì´ ì„œë²„ ë‚´ì—­ì— ì—†ìŠµë‹ˆë‹¤." + +#: replication/walsender.c:603 +#, c-format +msgid "This server's history forked from timeline %u at %X/%X." +msgstr "ì´ ì„œë²„ì˜ ì‹œìž‘ 위치: 타임ë¼ì¸ %u, 위치 %X/%X" + +#: replication/walsender.c:648 +#, c-format +msgid "" +"requested starting point %X/%X is ahead of the WAL flush position of this " +"server %X/%X" +msgstr "" + +#: replication/walsender.c:972 +#, c-format +msgid "terminating walsender process after promotion" +msgstr "ìš´ì˜ì „환 ë’¤ wal 송신기 프로세스를 중지합니다." + +#: replication/walsender.c:1298 +#, c-format +msgid "received replication command: %s" +msgstr "ìˆ˜ì‹ ëœ ë³µì œ 명령: %s" + +#: replication/walsender.c:1397 replication/walsender.c:1413 +#, c-format +msgid "unexpected EOF on standby connection" +msgstr "대기 서버 ì—°ê²°ì—서 예ìƒì¹˜ 못한 EOF 발견함" + +#: replication/walsender.c:1427 +#, c-format +msgid "unexpected standby message type \"%c\", after receiving CopyDone" +msgstr "" + +#: replication/walsender.c:1465 +#, c-format +msgid "invalid standby message type \"%c\"" +msgstr "ìž˜ëª»ëœ ëŒ€ê¸° 서버 메시지 형태 \"%c\"" + +#: replication/walsender.c:1506 +#, c-format +msgid "unexpected message type \"%c\"" +msgstr "예ìƒì¹˜ 못한 메시지 형태: \"%c\"" + +#: replication/walsender.c:1790 +#, c-format +msgid "terminating walsender process due to replication timeout" +msgstr "복제 시간 제한으로 wal 송신기 프로세스를 종료합니다." + +#: replication/walsender.c:1875 +#, c-format +msgid "standby \"%s\" has now caught up with primary" +msgstr "\"%s\" 대기 서버가 ìš´ì˜ ì„œë²„ë¡œ 전환합니다" + +#: replication/walsender.c:1978 +#, c-format +msgid "" +"number of requested standby connections exceeds max_wal_senders (currently " +"%d)" +msgstr "대기 서버 ì—°ê²° 수가 max_wal_senders 설정값(현재 %d)ì„ ì´ˆê³¼í–ˆìŠµë‹ˆë‹¤" + +#: rewrite/rewriteDefine.c:112 rewrite/rewriteDefine.c:973 +#, c-format +msgid "rule \"%s\" for relation \"%s\" already exists" +msgstr "\"%s\" ì´ë¦„ì˜ ë£°(rule)ì´ \"%s\" í…Œì´ë¸”ì— ì´ë¯¸ 지정ë˜ì–´ìžˆìŠµë‹ˆë‹¤" + +#: rewrite/rewriteDefine.c:297 +#, c-format +msgid "rule actions on OLD are not implemented" +msgstr "OLDì— ëŒ€í•œ 실행 룰(rule)ì€ ì•„ì§ êµ¬í˜„ë˜ì§€ 않았습니다" + +#: rewrite/rewriteDefine.c:298 +#, c-format +msgid "Use views or triggers instead." +msgstr "ëŒ€ì‹ ì— ë·°ë‚˜ 트리거를 사용하십시오." + +#: rewrite/rewriteDefine.c:302 +#, c-format +msgid "rule actions on NEW are not implemented" +msgstr "NEWì— ëŒ€í•œ 실행 룰(rule)ì€ ì•„ì§ êµ¬í˜„ë˜ì§€ 않았습니다" + +#: rewrite/rewriteDefine.c:303 +#, c-format +msgid "Use triggers instead." +msgstr "ëŒ€ì‹ ì— íŠ¸ë¦¬ê±°ë¥¼ 사용하십시오." + +#: rewrite/rewriteDefine.c:316 +#, c-format +msgid "INSTEAD NOTHING rules on SELECT are not implemented" +msgstr "SELECT ì—서 INSTEAD NOTHING 룰(rule)ì€ êµ¬í˜„ë˜ì§€ 않았습니다" + +#: rewrite/rewriteDefine.c:317 +#, c-format +msgid "Use views instead." +msgstr "ëŒ€ì‹ ì— ë·°ë¥¼ 사용하십시오." + +#: rewrite/rewriteDefine.c:325 +#, c-format +msgid "multiple actions for rules on SELECT are not implemented" +msgstr "SELECTì— ëŒ€í•œ 다중 실행 룰(rule)ì€ êµ¬í˜„ë˜ì§€ 않았습니다" + +#: rewrite/rewriteDefine.c:336 +#, c-format +msgid "rules on SELECT must have action INSTEAD SELECT" +msgstr "" +"SELECTì— ëŒ€í•œ 룰(rule)ì€ ê·¸ ì§€ì •ì— INSTEAD SELECT ì‹¤í–‰ê·œì¹™ì„ ì§€ì •í•´ì•¼ë§Œí•©ë‹ˆë‹¤" + +#: rewrite/rewriteDefine.c:344 +#, c-format +msgid "rules on SELECT must not contain data-modifying statements in WITH" +msgstr "" + +#: rewrite/rewriteDefine.c:352 +#, c-format +msgid "event qualifications are not implemented for rules on SELECT" +msgstr "" +"ì´ë²¤íЏ ìžê²©(event qualifications)ì€ SELECT 룰(rule)ì—서 구현ë˜ì§€ 않았습니다" + +#: rewrite/rewriteDefine.c:379 +#, c-format +msgid "\"%s\" is already a view" +msgstr "\"%s\" ì´ë¦„ì˜ ë·°ê°€ ì´ë¯¸ 있습니다" + +#: rewrite/rewriteDefine.c:403 +#, c-format +msgid "view rule for \"%s\" must be named \"%s\"" +msgstr "\"%s\" 위한 ë·° 룰(view rule)ì˜ ì´ë¦„ì€ \"%s\" 여야만합니다" + +#: rewrite/rewriteDefine.c:432 +#, c-format +msgid "could not convert table \"%s\" to a view because it is not empty" +msgstr "\"%s\" í…Œì´ë¸”ì— ìžë£Œê°€ 있기 때문ì—, í…Œì´ë¸”ì„ ë·°ë¡œ 변환할 수 없습니다" + +#: rewrite/rewriteDefine.c:440 +#, c-format +msgid "could not convert table \"%s\" to a view because it has triggers" +msgstr "\"%s\" í…Œì´ë¸”ì— íŠ¸ë¦¬ê±°ê°€ í¬í•¨ë˜ì–´ 있어 뷰로 변환할 수 없습니다" + +#: rewrite/rewriteDefine.c:442 +#, c-format +msgid "" +"In particular, the table cannot be involved in any foreign key relationships." +msgstr "특히 í…Œì´ë¸”ì€ ì°¸ì¡°í‚¤ ê´€ê³„ì— ê´€ë ¨ë  ìˆ˜ 없습니다." + +#: rewrite/rewriteDefine.c:447 +#, c-format +msgid "could not convert table \"%s\" to a view because it has indexes" +msgstr "\"%s\" í…Œì´ë¸”ì— ì¸ë±ìŠ¤ê°€ í¬í•¨ë˜ì–´ 있어 뷰로 변환할 수 없습니다" + +#: rewrite/rewriteDefine.c:453 +#, c-format +msgid "could not convert table \"%s\" to a view because it has child tables" +msgstr "\"%s\" í…Œì´ë¸”ì„ ìƒì† 받는 í…Œì´ë¸”ì´ ìžˆì–´ 뷰로 변활할 수 없습니다" + +#: rewrite/rewriteDefine.c:459 +#, c-format +msgid "" +"could not convert table \"%s\" to a view because it has row security enabled" +msgstr "" +"로우단위 보안 ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ê³  있어 \"%s\" í…Œì´ë¸”ì„ ë·°ë¡œ 변환할 수 없습니다" + +#: rewrite/rewriteDefine.c:465 +#, c-format +msgid "" +"could not convert table \"%s\" to a view because it has row security policies" +msgstr "로우단위 보안 ì„¤ì •ì´ ë˜ì–´ 있어 \"%s\" í…Œì´ë¸”ì„ ë·°ë¡œ 변환할 수 없습니다" + +#: rewrite/rewriteDefine.c:492 +#, c-format +msgid "cannot have multiple RETURNING lists in a rule" +msgstr "í•˜ë‚˜ì˜ ruleì—서 ì—¬ëŸ¬ê°œì˜ RETURNING 목ë¡ì„ 지정할 수 없습니다" + +#: rewrite/rewriteDefine.c:497 +#, c-format +msgid "RETURNING lists are not supported in conditional rules" +msgstr "RETURNING 목ë¡ì€ conditional ruleì—서는 ì§€ì›í•˜ì§€ 않습니다" + +#: rewrite/rewriteDefine.c:501 +#, c-format +msgid "RETURNING lists are not supported in non-INSTEAD rules" +msgstr "RETURNING 목ë¡ì€ non-INSTEAD ruleì—서는 ì§€ì›í•˜ì§€ 않습니다" + +#: rewrite/rewriteDefine.c:667 +#, c-format +msgid "SELECT rule's target list has too many entries" +msgstr "SELECT 룰(rule)ì˜ ëŒ€ìƒ ëª©ë¡ì´ 너무 ë§Žì€ ì—”íŠ¸ë¦¬ë¥¼ 가지고 있습니다" + +#: rewrite/rewriteDefine.c:668 +#, c-format +msgid "RETURNING list has too many entries" +msgstr "RETURNING 목ë¡ì´ 너무 ë§Žì€ í•­ëª©ë¥¼ 가지고 있습니다" + +#: rewrite/rewriteDefine.c:695 +#, c-format +msgid "cannot convert relation containing dropped columns to view" +msgstr "ë·°ì—서 ì‚­ì œëœ ì—´ì„ í¬í•¨í•˜ê³  있는 릴레ì´ì…˜ì„ 변환할 수 없습니다" + +#: rewrite/rewriteDefine.c:696 +#, c-format +msgid "" +"cannot create a RETURNING list for a relation containing dropped columns" +msgstr "" +"릴레ì´ì…˜ì— ì‚­ì œëœ ì—´ì„ í¬í•¨í•˜ê³  있는 RETURNING 목ë¡ì„ 만들 수 없습니다." + +#: rewrite/rewriteDefine.c:702 +#, c-format +msgid "" +"SELECT rule's target entry %d has different column name from column \"%s\"" +msgstr "SELECT 룰(rule)ì˜ ëŒ€ìƒ ì—”íŠ¸ë¦¬ 번호가(%d)ê°€ \"%s\" 칼럼 ì´ë¦„ê³¼ 틀립니다" + +#: rewrite/rewriteDefine.c:704 +#, c-format +msgid "SELECT target entry is named \"%s\"." +msgstr "SELECT ëŒ€ìƒ ì—”íŠ¸ë¦¬ ì´ë¦„ì€ \"%s\" 입니다." + +#: rewrite/rewriteDefine.c:713 +#, c-format +msgid "SELECT rule's target entry %d has different type from column \"%s\"" +msgstr "SELECT 룰(rule)ì˜ ëŒ€ìƒ ì—”íŠ¸ë¦¬ 번호(%d)ê°€ \"%s\" 칼럼 ìžë£Œí˜•ê³¼ 틀립니다" + +#: rewrite/rewriteDefine.c:715 +#, c-format +msgid "RETURNING list's entry %d has different type from column \"%s\"" +msgstr "RETURNING 목ë¡ì˜ %d번째 í•­ëª©ì˜ ìžë£Œí˜•ì´ \"%s\" 칼럼 ìžë£Œí˜•ê³¼ 틀립니다" + +#: rewrite/rewriteDefine.c:718 rewrite/rewriteDefine.c:742 +#, c-format +msgid "SELECT target entry has type %s, but column has type %s." +msgstr "SELECT ëŒ€ìƒ ì—”íŠ¸ë¦¬ ìžë£Œí˜•ì€ %s 형ì´ì§€ë§Œ, 칼럼 ìžë£Œí˜•ì€ %s 형입니다." + +#: rewrite/rewriteDefine.c:721 rewrite/rewriteDefine.c:746 +#, c-format +msgid "RETURNING list entry has type %s, but column has type %s." +msgstr "RETURNING 목ë¡ì€ %s ìžë£Œí˜•ì´ì§€ë§Œ, 칼럼 ìžë£Œí˜•ì€ %s 형입니다." + +#: rewrite/rewriteDefine.c:737 +#, c-format +msgid "SELECT rule's target entry %d has different size from column \"%s\"" +msgstr "SELECT 룰(rule)ì˜ ëŒ€ìƒ ì—”íŠ¸ë¦¬ 번호(%d)ê°€ \"%s\" 칼럼 í¬ê¸°ì™€ 틀립니다" + +#: rewrite/rewriteDefine.c:739 +#, c-format +msgid "RETURNING list's entry %d has different size from column \"%s\"" +msgstr "RETURNING 목ë¡ì˜ %d번째 í•­ëª©ì˜ í¬ê¸°ê°€ \"%s\" 칼럼 í¬ê¸°ì™€ 틀립니다" + +#: rewrite/rewriteDefine.c:756 +#, c-format +msgid "SELECT rule's target list has too few entries" +msgstr "SELECT 룰(rule)ì˜ ëŒ€ìƒ ëª©ë¡ì´ 너무 ì ì€ 엔트리를 가지고 있습니다" + +#: rewrite/rewriteDefine.c:757 +#, c-format +msgid "RETURNING list has too few entries" +msgstr "RETURNING 목ë¡ì— 너무 ì ì€ í•­ëª©ì´ ìžˆìŠµë‹ˆë‹¤" + +#: rewrite/rewriteDefine.c:849 rewrite/rewriteDefine.c:964 +#: rewrite/rewriteSupport.c:112 +#, c-format +msgid "rule \"%s\" for relation \"%s\" does not exist" +msgstr " \"%s\" 룰(rule)ì´ \"%s\" 관계(relation)ì— ì§€ì •ëœ ê²ƒì´ ì—†ìŒ" + +#: rewrite/rewriteDefine.c:983 +#, c-format +msgid "renaming an ON SELECT rule is not allowed" +msgstr "ON SELECT ë£°ì˜ ì´ë¦„ 바꾸기는 허용하지 않습니다" + +#: rewrite/rewriteHandler.c:528 +#, c-format +msgid "" +"WITH query name \"%s\" appears in both a rule action and the query being " +"rewritten" +msgstr "" + +#: rewrite/rewriteHandler.c:588 +#, c-format +msgid "cannot have RETURNING lists in multiple rules" +msgstr "multiple ruleì— RETURNING 목ë¡ì„ 지정할 수 없습니다" + +#: rewrite/rewriteHandler.c:928 rewrite/rewriteHandler.c:946 +#, c-format +msgid "multiple assignments to same column \"%s\"" +msgstr "ê°™ì€ \"%s\" ì—´ì— ì§€ì •ê°’(assignment)ì´ ì¤‘ë³µë˜ì—ˆìŠµë‹ˆë‹¤" + +#: rewrite/rewriteHandler.c:1721 rewrite/rewriteHandler.c:3331 +#, c-format +msgid "infinite recursion detected in rules for relation \"%s\"" +msgstr "" +"\"%s\" 릴레ì´ì…˜(relation)ì—서 ì§€ì •ëœ ë£°ì—서 ìž˜ëª»ëœ ìž¬ê·€í˜¸ì¶œì´ ë°œê²¬ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: rewrite/rewriteHandler.c:1806 +#, c-format +msgid "infinite recursion detected in policy for relation \"%s\"" +msgstr "\"%s\" 릴레ì´ì…˜ì˜ ì •ì±…ì—서 무한 재귀 í˜¸ì¶œì´ ë°œê²¬ ë¨" + +#: rewrite/rewriteHandler.c:2123 +msgid "Junk view columns are not updatable." +msgstr "ì •í¬ ë·° ì¹¼ëŸ¼ì€ ì—…ë°ì´íŠ¸í•  수 없습니다." + +#: rewrite/rewriteHandler.c:2128 +msgid "" +"View columns that are not columns of their base relation are not updatable." +msgstr "" + +#: rewrite/rewriteHandler.c:2131 +msgid "View columns that refer to system columns are not updatable." +msgstr "" + +#: rewrite/rewriteHandler.c:2134 +msgid "View columns that return whole-row references are not updatable." +msgstr "" + +#: rewrite/rewriteHandler.c:2192 +msgid "Views containing DISTINCT are not automatically updatable." +msgstr "" + +#: rewrite/rewriteHandler.c:2195 +msgid "Views containing GROUP BY are not automatically updatable." +msgstr "" + +#: rewrite/rewriteHandler.c:2198 +msgid "Views containing HAVING are not automatically updatable." +msgstr "" + +#: rewrite/rewriteHandler.c:2201 +msgid "" +"Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable." +msgstr "" + +#: rewrite/rewriteHandler.c:2204 +msgid "Views containing WITH are not automatically updatable." +msgstr "" + +#: rewrite/rewriteHandler.c:2207 +msgid "Views containing LIMIT or OFFSET are not automatically updatable." +msgstr "" + +#: rewrite/rewriteHandler.c:2219 +msgid "Views that return aggregate functions are not automatically updatable." +msgstr "" + +#: rewrite/rewriteHandler.c:2222 +msgid "Views that return window functions are not automatically updatable." +msgstr "" + +#: rewrite/rewriteHandler.c:2225 +msgid "" +"Views that return set-returning functions are not automatically updatable." +msgstr "" + +#: rewrite/rewriteHandler.c:2232 rewrite/rewriteHandler.c:2236 +#: rewrite/rewriteHandler.c:2243 +msgid "" +"Views that do not select from a single table or view are not automatically " +"updatable." +msgstr "" + +#: rewrite/rewriteHandler.c:2246 +msgid "Views containing TABLESAMPLE are not automatically updatable." +msgstr "" + +#: rewrite/rewriteHandler.c:2270 +msgid "Views that have no updatable columns are not automatically updatable." +msgstr "" + +#: rewrite/rewriteHandler.c:2724 +#, c-format +msgid "cannot insert into column \"%s\" of view \"%s\"" +msgstr "\"%s\" 칼럼 (해당 ë·°: \"%s\")ì— ìžë£Œë¥¼ 입력할 수 없습니다" + +#: rewrite/rewriteHandler.c:2732 +#, c-format +msgid "cannot update column \"%s\" of view \"%s\"" +msgstr "\"%s\" 칼럼 (해당 ë·°: \"%s\")ì— ìžë£Œë¥¼ 갱신할 수 없습니다" + +#: rewrite/rewriteHandler.c:3130 +#, c-format +msgid "" +"DO INSTEAD NOTHING rules are not supported for data-modifying statements in " +"WITH" +msgstr "" + +#: rewrite/rewriteHandler.c:3144 +#, c-format +msgid "" +"conditional DO INSTEAD rules are not supported for data-modifying statements " +"in WITH" +msgstr "" + +#: rewrite/rewriteHandler.c:3148 +#, c-format +msgid "DO ALSO rules are not supported for data-modifying statements in WITH" +msgstr "" + +#: rewrite/rewriteHandler.c:3153 +#, c-format +msgid "" +"multi-statement DO INSTEAD rules are not supported for data-modifying " +"statements in WITH" +msgstr "" + +#: rewrite/rewriteHandler.c:3368 +#, c-format +msgid "cannot perform INSERT RETURNING on relation \"%s\"" +msgstr "\"%s\" 릴레ì´ì…˜ì—서 INSERT RETURNING ê´€ë ¨ì„ êµ¬ì„±í•  수 ì—†ìŒ" + +#: rewrite/rewriteHandler.c:3370 +#, c-format +msgid "" +"You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." +msgstr "" +"RETURNING ì ˆì—서는 무조건 ON INSERT DO INSTEAD ì†ì„±ìœ¼ë¡œ ruleì´ ì‚¬ìš©ë˜ì–´ì•¼í•©ë‹ˆ" +"다." + +#: rewrite/rewriteHandler.c:3375 +#, c-format +msgid "cannot perform UPDATE RETURNING on relation \"%s\"" +msgstr "\"%s\" 릴레ì´ì…˜ì—서 UPDATE RETURNING ê´€ë ¨ì„ êµ¬ì„±í•  수 없습니다." + +#: rewrite/rewriteHandler.c:3377 +#, c-format +msgid "" +"You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause." +msgstr "" +"RETURNING ì ˆì—서는 무조건 ON UPDATE DO INSTEAD ì†ì„±ìœ¼ë¡œ ruleì´ ì‚¬ìš©ë˜ì–´ì•¼í•©ë‹ˆ" +"다." + +#: rewrite/rewriteHandler.c:3382 +#, c-format +msgid "cannot perform DELETE RETURNING on relation \"%s\"" +msgstr "\"%s\" 릴레ì´ì…˜ì—서 DELETE RETURNING ê´€ë ¨ì„ êµ¬ì„±í•  수 없습니다." + +#: rewrite/rewriteHandler.c:3384 +#, c-format +msgid "" +"You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause." +msgstr "" +"TURNING ì ˆì—서는 무조건 ON DELETE DO INSTEAD ì†ì„±ìœ¼ë¡œ ruleì´ ì‚¬ìš©ë˜ì–´ì•¼í•©ë‹ˆë‹¤" + +#: rewrite/rewriteHandler.c:3402 +#, c-format +msgid "" +"INSERT with ON CONFLICT clause cannot be used with table that has INSERT or " +"UPDATE rules" +msgstr "" + +#: rewrite/rewriteHandler.c:3459 +#, c-format +msgid "" +"WITH cannot be used in a query that is rewritten by rules into multiple " +"queries" +msgstr "" + +#: rewrite/rewriteManip.c:1003 +#, c-format +msgid "conditional utility statements are not implemented" +msgstr "" +"ì¡°ê±´ 유틸리티 명령 구문(conditional utility statement)ì€ êµ¬í˜„ë˜ì–´ìžˆì§€ 않습니" +"다" + +#: rewrite/rewriteManip.c:1169 +#, c-format +msgid "WHERE CURRENT OF on a view is not implemented" +msgstr "ë·°ì— ëŒ€í•œ WHERE CURRENT OF êµ¬ë¬¸ì´ êµ¬í˜„ë˜ì§€ 않ìŒ" + +#: rewrite/rewriteManip.c:1434 +#, c-format +msgid "" +"NEW variables in ON UPDATE rules cannot reference columns that are part of a " +"multiple assignment in the subject UPDATE command" +msgstr "" + +#: rewrite/rewriteSupport.c:154 +#, c-format +msgid "rule \"%s\" does not exist" +msgstr "\"%s\" 룰(rule) ì—†ìŒ" + +#: rewrite/rewriteSupport.c:167 +#, c-format +msgid "there are multiple rules named \"%s\"" +msgstr "\"%s\" ì´ë¦„ì˜ ë£°(rule)ì´ ì—¬ëŸ¬ê°œ 있습니다" + +#: rewrite/rewriteSupport.c:168 +#, c-format +msgid "Specify a relation name as well as a rule name." +msgstr "룰(rule) ì´ë¦„ê³¼ 함께 릴레ì´ì…˜(relation) ì´ë¦„ë„ ì§€ì •í•˜ì‹­ì‹œì˜¤" + +#: snowball/dict_snowball.c:177 +#, c-format +msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\"" +msgstr "\"%s\" 언어 ë° \"%s\" ì¸ì½”ë”©ì— ì‚¬ìš© 가능한 Snowball stemmerê°€ ì—†ìŒ" + +#: snowball/dict_snowball.c:200 tsearch/dict_ispell.c:73 +#: tsearch/dict_simple.c:48 +#, c-format +msgid "multiple StopWords parameters" +msgstr "StopWords 매개 변수가 여러 ê°œ 있ìŒ" + +#: snowball/dict_snowball.c:209 +#, c-format +msgid "multiple Language parameters" +msgstr "여러 ê°œì˜ ì–¸ì–´ 매개 변수가 있ìŒ" + +#: snowball/dict_snowball.c:216 +#, c-format +msgid "unrecognized Snowball parameter: \"%s\"" +msgstr "ì¸ì‹í•  수 없는 Snowball 매개 변수: \"%s\"" + +#: snowball/dict_snowball.c:224 +#, c-format +msgid "missing Language parameter" +msgstr "Language 매개 변수가 누ë½ë¨" + +#: storage/buffer/bufmgr.c:544 storage/buffer/bufmgr.c:657 +#, c-format +msgid "cannot access temporary tables of other sessions" +msgstr "다른 ì„¸ì…˜ì˜ ìž„ì‹œ í…Œì´ë¸”ì— ì•¡ì„¸ìŠ¤í•  수 ì—†ìŒ" + +#: storage/buffer/bufmgr.c:807 +#, c-format +msgid "unexpected data beyond EOF in block %u of relation %s" +msgstr "%u 블ë¡(해당 릴레ì´ì…˜: %s)ì— EOF 범위를 넘는 예기치 ì•Šì€ ë°ì´í„°ê°€ 있ìŒ" + +#: storage/buffer/bufmgr.c:809 +#, c-format +msgid "" +"This has been seen to occur with buggy kernels; consider updating your " +"system." +msgstr "ì´ ë¬¸ì œëŠ” 커ë„ì˜ ë¬¸ì œë¡œ 알려졌습니다. ì‹œìŠ¤í…œì„ ì—…ë°ì´íŠ¸í•˜ì‹­ì‹œì˜¤." + +#: storage/buffer/bufmgr.c:907 +#, c-format +msgid "invalid page in block %u of relation %s; zeroing out page" +msgstr "" +"%u 블ë¡(해당 릴레ì´ì…˜: %s)ì— ìž˜ëª»ëœ íŽ˜ì´ì§€ í—¤ë”ê°€ 있ìŒ, 페ì´ì§€ë¥¼ 삭제하는 중" + +#: storage/buffer/bufmgr.c:3952 +#, c-format +msgid "could not write block %u of %s" +msgstr "%u/%s 블ë¡ì„ 쓸 수 ì—†ìŒ" + +#: storage/buffer/bufmgr.c:3954 +#, c-format +msgid "Multiple failures --- write error might be permanent." +msgstr "여러 번 실패 --- 쓰기 오류가 ì˜êµ¬ì ì¼ 수 있습니다." + +#: storage/buffer/bufmgr.c:3975 storage/buffer/bufmgr.c:3994 +#, c-format +msgid "writing block %u of relation %s" +msgstr "%u 블ë¡(해당 릴레ì´ì…˜: %s)ì„ ì“°ëŠ” 중" + +#: storage/buffer/bufmgr.c:4295 +#, c-format +msgid "snapshot too old" +msgstr "" + +#: storage/buffer/localbuf.c:199 +#, c-format +msgid "no empty local buffer available" +msgstr "비어 있는 로컬 버í¼ê°€ 없습니다" + +#: storage/buffer/localbuf.c:427 +#, c-format +msgid "cannot access temporary tables during a parallel operation" +msgstr "병렬 작업 ì¤‘ì— ìž„ì‹œ í…Œì´ë¸”ì— ì•¡ì„¸ìŠ¤í•  수 ì—†ìŒ" + +#: storage/file/fd.c:443 storage/file/fd.c:515 storage/file/fd.c:551 +#, c-format +msgid "could not flush dirty data: %m" +msgstr "dirty ìžë£Œë¥¼ flush í•  수 ì—†ìŒ: %m" + +#: storage/file/fd.c:473 +#, c-format +msgid "could not determine dirty data size: %m" +msgstr "dirty ìžë£Œ í¬ê¸°ë¥¼ 확ì¸í•  수 ì—†ìŒ: %m" + +#: storage/file/fd.c:525 +#, c-format +msgid "could not munmap() while flushing data: %m" +msgstr "ìžë£Œ flush 작업 ë„중 munmap() 호출 실패: %m" + +#: storage/file/fd.c:689 +#, c-format +msgid "could not link file \"%s\" to \"%s\": %m" +msgstr "\"%s\" 파ì¼ì„ \"%s\" 파ì¼ë¡œ ë§í¬í•  수 ì—†ìŒ: %m" + +#: storage/file/fd.c:783 +#, c-format +msgid "getrlimit failed: %m" +msgstr "getrlimit 실패: %m" + +#: storage/file/fd.c:873 +#, c-format +msgid "insufficient file descriptors available to start server process" +msgstr "" +"서버 프로세스를 실행하기 위해서 열어야할 파ì¼ë“¤ì„ 못 ì—´ê³  있습니다. 다른 프로" +"그램ì—서 너무 ë§Žì€ íŒŒì¼ì„ ì—´ì–´ ë‘ê³  있습니다. 다른 í”„ë¡œê·¸ëž¨ë“¤ì„ ì¢€ ë‹«ê³  다시 " +"시ë„í•´ 보십시오" + +#: storage/file/fd.c:874 +#, c-format +msgid "System allows %d, we need at least %d." +msgstr "시스템 허용치 %d, 서버 최소 허용치 %d." + +#: storage/file/fd.c:915 storage/file/fd.c:2078 storage/file/fd.c:2171 +#: storage/file/fd.c:2319 +#, c-format +msgid "out of file descriptors: %m; release and retry" +msgstr "" +"ì—´ë ¤ 있는 파ì¼ì´ 너무 많습니다: %m; 다른 í”„ë¡œê·¸ëž¨ë“¤ì„ ì¢€ ë‹«ê³  다시 시ë„í•´ ë³´" +"십시오" + +#: storage/file/fd.c:1520 +#, c-format +msgid "temporary file: path \"%s\", size %lu" +msgstr "임시 파ì¼: 경로 \"%s\", í¬ê¸° %lu" + +#: storage/file/fd.c:1717 +#, c-format +msgid "temporary file size exceeds temp_file_limit (%dkB)" +msgstr "임시 íŒŒì¼ í¬ê¸°ê°€ temp_file_limit (%dkB)를 초과했습니다" + +#: storage/file/fd.c:2054 storage/file/fd.c:2104 +#, c-format +msgid "exceeded maxAllocatedDescs (%d) while trying to open file \"%s\"" +msgstr "" + +#: storage/file/fd.c:2144 +#, c-format +msgid "exceeded maxAllocatedDescs (%d) while trying to execute command \"%s\"" +msgstr "" + +#: storage/file/fd.c:2295 +#, c-format +msgid "exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\"" +msgstr "" + +#: storage/file/fd.c:2381 +#, c-format +msgid "could not read directory \"%s\": %m" +msgstr "\"%s\" 디렉터리를 ì½ì„ 수 ì—†ìŒ: %m" + +#: storage/ipc/dsm.c:363 +#, c-format +msgid "dynamic shared memory control segment is corrupt" +msgstr "ë™ì  공유 메모리 제어 ì¡°ê°ì´ ì†ìƒë˜ì—ˆìŒ" + +#: storage/ipc/dsm.c:410 +#, c-format +msgid "dynamic shared memory is disabled" +msgstr "ë™ì  공유 메모리 ê¸°ëŠ¥ì´ ë¹„í™œì„±í™” ë˜ì–´ìžˆìŒ" + +#: storage/ipc/dsm.c:411 +#, c-format +msgid "Set dynamic_shared_memory_type to a value other than \"none\"." +msgstr "dynamic_shared_memory_type ì„¤ì •ê°’ì„ \"none\" 아닌 값으로 지정하세요." + +#: storage/ipc/dsm.c:431 +#, c-format +msgid "dynamic shared memory control segment is not valid" +msgstr "ë™ì  공유 메모리 제어 ì¡°ê°ì´ 타당하지 않ìŒ" + +#: storage/ipc/dsm.c:516 +#, c-format +msgid "too many dynamic shared memory segments" +msgstr "너무 ë§Žì€ ë™ì  공유 메모리 ì¡°ê°ì´ 있ìŒ" + +#: storage/ipc/dsm_impl.c:261 storage/ipc/dsm_impl.c:361 +#: storage/ipc/dsm_impl.c:533 storage/ipc/dsm_impl.c:648 +#: storage/ipc/dsm_impl.c:819 storage/ipc/dsm_impl.c:961 +#, c-format +msgid "could not unmap shared memory segment \"%s\": %m" +msgstr "\"%s\" 공유 메모리 ì¡°ê°ì„ unmap í•  수 ì—†ìŒ: %m" + +#: storage/ipc/dsm_impl.c:271 storage/ipc/dsm_impl.c:543 +#: storage/ipc/dsm_impl.c:658 storage/ipc/dsm_impl.c:829 +#, c-format +msgid "could not remove shared memory segment \"%s\": %m" +msgstr "\"%s\" 공유 메모리 ì¡°ê°ì„ 삭제할 수 ì—†ìŒ: %m" + +#: storage/ipc/dsm_impl.c:292 storage/ipc/dsm_impl.c:729 +#: storage/ipc/dsm_impl.c:843 +#, c-format +msgid "could not open shared memory segment \"%s\": %m" +msgstr "\"%s\" 공유 메모리 ì¡°ê°ì„ ì—´ 수 ì—†ìŒ: %m" + +#: storage/ipc/dsm_impl.c:316 storage/ipc/dsm_impl.c:559 +#: storage/ipc/dsm_impl.c:774 storage/ipc/dsm_impl.c:867 +#, c-format +msgid "could not stat shared memory segment \"%s\": %m" +msgstr "\"%s\" 공유 메모리 ì¡°ê° íŒŒì¼ì˜ ìƒíƒœë¥¼ 알 수 ì—†ìŒ: %m" + +#: storage/ipc/dsm_impl.c:335 storage/ipc/dsm_impl.c:886 +#: storage/ipc/dsm_impl.c:934 +#, c-format +msgid "could not resize shared memory segment \"%s\" to %zu bytes: %m" +msgstr "\"%s\" 공유 메모리 ì¡°ê° íŒŒì¼ì„ %zu ë°”ì´íŠ¸ë¡œ í¬ê¸° ì¡°ì ˆ í•  수 ì—†ìŒ: %m" + +#: storage/ipc/dsm_impl.c:385 storage/ipc/dsm_impl.c:580 +#: storage/ipc/dsm_impl.c:750 storage/ipc/dsm_impl.c:985 +#, c-format +msgid "could not map shared memory segment \"%s\": %m" +msgstr "\"%s\" 공유 메모리 ì¡°ê°ì„ map í•  수 ì—†ìŒ: %m" + +#: storage/ipc/dsm_impl.c:515 +#, c-format +msgid "could not get shared memory segment: %m" +msgstr "공유 메모리 ì¡°ê°ì„ 가져올 수 ì—†ìŒ: %m" + +#: storage/ipc/dsm_impl.c:714 +#, c-format +msgid "could not create shared memory segment \"%s\": %m" +msgstr "\"%s\" 공유 메모리 ì¡°ê°ì„ 만들 수 ì—†ìŒ: %m" + +#: storage/ipc/dsm_impl.c:1026 +#, c-format +msgid "could not duplicate handle for \"%s\": %m" +msgstr "\"%s\" ìš© 헨들러를 ì´ì¤‘í™” í•  수 ì—†ìŒ: %m" + +#: storage/ipc/latch.c:778 +#, c-format +msgid "epoll_ctl() failed: %m" +msgstr "epoll_ctl() 실패: %m" + +#: storage/ipc/latch.c:1002 +#, c-format +msgid "epoll_wait() failed: %m" +msgstr "epoll_wait() 실패: %m" + +#: storage/ipc/latch.c:1122 +#, c-format +msgid "poll() failed: %m" +msgstr "poll() 실패: %m" + +#: storage/ipc/shm_toc.c:108 storage/ipc/shm_toc.c:189 storage/ipc/shmem.c:212 +#: storage/lmgr/lock.c:883 storage/lmgr/lock.c:917 storage/lmgr/lock.c:2682 +#: storage/lmgr/lock.c:4007 storage/lmgr/lock.c:4072 storage/lmgr/lock.c:4364 +#: storage/lmgr/predicate.c:2329 storage/lmgr/predicate.c:2344 +#: storage/lmgr/predicate.c:3736 storage/lmgr/predicate.c:4879 +#: storage/lmgr/proc.c:203 utils/hash/dynahash.c:1043 +#, c-format +msgid "out of shared memory" +msgstr "공유 메모리 부족" + +#: storage/ipc/shmem.c:370 storage/ipc/shmem.c:421 +#, c-format +msgid "" +"not enough shared memory for data structure \"%s\" (%zu bytes requested)" +msgstr "\"%s\" ìžë£Œ 구조체용 공유 메모리가 부족함 (%zu ë°”ì´íŠ¸ê°€ 필요함)" + +#: storage/ipc/shmem.c:389 +#, c-format +msgid "could not create ShmemIndex entry for data structure \"%s\"" +msgstr "\"%s\" ìžë£Œ 구조체용 ShmemIndex í•­ëª©ì„ ë§Œë“¤ 수 ì—†ìŒ" + +#: storage/ipc/shmem.c:404 +#, c-format +msgid "" +"ShmemIndex entry size is wrong for data structure \"%s\": expected %zu, " +"actual %zu" +msgstr "" +"\"%s\" ìžë£Œ 구조체용 ShmemIndex 항목 í¬ê¸°ê°€ 잘못ë¨: 기대값 %zu, 현재값 %zu" + +#: storage/ipc/shmem.c:452 storage/ipc/shmem.c:471 +#, c-format +msgid "requested shared memory size overflows size_t" +msgstr "지정한 공유 메모리 사ì´ì¦ˆê°€ size_t í¬ê¸°ë¥¼ 초과했습니다" + +#: storage/ipc/standby.c:530 tcop/postgres.c:2976 +#, c-format +msgid "canceling statement due to conflict with recovery" +msgstr "복구 작업 중 ì¶©ëŒì´ ë°œìƒí•´ ìž‘ì—…ì„ ì¤‘ì§€í•©ë‹ˆë‹¤." + +#: storage/ipc/standby.c:531 tcop/postgres.c:2263 +#, c-format +msgid "User transaction caused buffer deadlock with recovery." +msgstr "복구 작업 중 ì‚¬ìš©ìž íŠ¸ëžœìž­ì…˜ì´ ë²„í¼ ë°ë“œë½ì„ 만들었습니다." + +#: storage/large_object/inv_api.c:203 +#, c-format +msgid "pg_largeobject entry for OID %u, page %d has invalid data field size %d" +msgstr "" + +#: storage/large_object/inv_api.c:284 +#, c-format +msgid "invalid flags for opening a large object: %d" +msgstr "대형 ê°ì²´ë¥¼ 열기 위한 플래그가 잘못 ë¨: %d" + +#: storage/large_object/inv_api.c:436 +#, c-format +msgid "invalid whence setting: %d" +msgstr "" + +#: storage/large_object/inv_api.c:593 +#, c-format +msgid "invalid large object write request size: %d" +msgstr "유효하지 ì•Šì€ ëŒ€í˜• ê°ì²´ì˜ 쓰기 ìš”ì²­ëœ í¬ê¸°: %d" + +#: storage/lmgr/deadlock.c:1109 +#, c-format +msgid "Process %d waits for %s on %s; blocked by process %d." +msgstr "" +"%d 프로세스가 %s ìƒíƒœë¡œ 지연ë˜ê³  있ìŒ(해당 작업: %s); %d í”„ë¡œì„¸ìŠ¤ì— ì˜í•´ 블ë¡" +"킹ë˜ì—ˆìŒ" + +#: storage/lmgr/deadlock.c:1128 +#, c-format +msgid "Process %d: %s" +msgstr "프로세스 %d: %s" + +#: storage/lmgr/deadlock.c:1137 +#, c-format +msgid "deadlock detected" +msgstr "deadlock ë°œìƒí–ˆìŒ" + +#: storage/lmgr/deadlock.c:1140 +#, c-format +msgid "See server log for query details." +msgstr "쿼리 ìƒì„¸ 정보는 서버 로그를 참조하십시오." + +#: storage/lmgr/lmgr.c:719 +#, c-format +msgid "while updating tuple (%u,%u) in relation \"%s\"" +msgstr "%u,%u 튜플(해당 릴레ì´ì…˜ \"%s\")ì„ ê°±ì‹ í•˜ëŠ” ì¤‘ì— ë°œìƒ" + +#: storage/lmgr/lmgr.c:722 +#, c-format +msgid "while deleting tuple (%u,%u) in relation \"%s\"" +msgstr "%u,%u 튜플(해당 릴레ì´ì…˜ \"%s\")ì„ ì‚­ì œí•˜ëŠ” ì¤‘ì— ë°œìƒ" + +#: storage/lmgr/lmgr.c:725 +#, c-format +msgid "while locking tuple (%u,%u) in relation \"%s\"" +msgstr "%u,%u íŠœí”Œì„ \"%s\" 릴레ì´ì…˜ì—서 잠그는 ì¤‘ì— ë°œìƒ" + +#: storage/lmgr/lmgr.c:728 +#, c-format +msgid "while locking updated version (%u,%u) of tuple in relation \"%s\"" +msgstr "%u,%u ì—…ë°ì´íŠ¸ëœ ë²„ì „ 튜플(해당 릴레ì´ì…˜ \"%s\")ì„ ìž ê·¸ëŠ” ì¤‘ì— ë°œìƒ" + +#: storage/lmgr/lmgr.c:731 +#, c-format +msgid "while inserting index tuple (%u,%u) in relation \"%s\"" +msgstr "%u,%u 튜플 ì¸ë±ìФ(해당 릴레ì´ì…˜ \"%s\")를 삽입하는 ì¤‘ì— ë°œìƒ" + +#: storage/lmgr/lmgr.c:734 +#, c-format +msgid "while checking uniqueness of tuple (%u,%u) in relation \"%s\"" +msgstr "%u,%u 튜플(해당 릴레ì´ì…˜: \"%s\")ì˜ ê³ ìœ ì„±ì„ ê²€ì‚¬í•˜ëŠ” ì¤‘ì— ë°œìƒ" + +#: storage/lmgr/lmgr.c:737 +#, c-format +msgid "while rechecking updated tuple (%u,%u) in relation \"%s\"" +msgstr "%u,%u ê°±ì‹ ëœ íŠœí”Œ(해당 릴레ì´ì…˜: \"%s\")ì„ ìž¬í™•ì¸í•˜ëŠ” ì¤‘ì— ë°œìƒ" + +#: storage/lmgr/lmgr.c:740 +#, c-format +msgid "while checking exclusion constraint on tuple (%u,%u) in relation \"%s\"" +msgstr "" +"%u,%u 튜플(해당 릴레ì´ì…˜: \"%s\")ì˜ ì œì™¸ 제약 ì¡°ê±´ì„ ê²€ì‚¬í•˜ëŠ” ì¤‘ì— ë°œìƒ" + +#: storage/lmgr/lmgr.c:960 +#, c-format +msgid "relation %u of database %u" +msgstr "릴레ì´ì…˜ %u, ë°ì´í„°ë² ì´ìФ %u" + +#: storage/lmgr/lmgr.c:966 +#, c-format +msgid "extension of relation %u of database %u" +msgstr "%u 관계(%u ë°ì´í„°ë² ì´ìФ) 확장" + +#: storage/lmgr/lmgr.c:972 +#, c-format +msgid "page %u of relation %u of database %u" +msgstr "페ì´ì§€ %u, 릴레ì´ì…˜ %u, ë°ì´í„°ë² ì´ìФ %u" + +#: storage/lmgr/lmgr.c:979 +#, c-format +msgid "tuple (%u,%u) of relation %u of database %u" +msgstr "튜플 (%u,%u), 릴레ì´ì…˜ %u, ë°ì´í„°ë² ì´ìФ %u" + +#: storage/lmgr/lmgr.c:987 +#, c-format +msgid "transaction %u" +msgstr "트랜잭션 %u" + +#: storage/lmgr/lmgr.c:992 +#, c-format +msgid "virtual transaction %d/%u" +msgstr "ê°€ìƒ íŠ¸ëžœìž­ì…˜ %d/%u" + +#: storage/lmgr/lmgr.c:998 +#, c-format +msgid "speculative token %u of transaction %u" +msgstr "%u 위험한 토í°, ëŒ€ìƒ íŠ¸ëžœìž­ì…˜ %u" + +#: storage/lmgr/lmgr.c:1004 +#, c-format +msgid "object %u of class %u of database %u" +msgstr "ê°ì²´ %u, í´ëž˜ìФ %u, ë°ì´í„°ë² ì´ìФ %u" + +#: storage/lmgr/lmgr.c:1012 +#, c-format +msgid "user lock [%u,%u,%u]" +msgstr "user lock [%u,%u,%u]" + +#: storage/lmgr/lmgr.c:1019 +#, c-format +msgid "advisory lock [%u,%u,%u,%u]" +msgstr "advisory lock [%u,%u,%u,%u]" + +#: storage/lmgr/lmgr.c:1027 +#, c-format +msgid "unrecognized locktag type %d" +msgstr "알 수 없는 locktag 형태 %d" + +#: storage/lmgr/lock.c:732 +#, c-format +msgid "" +"cannot acquire lock mode %s on database objects while recovery is in progress" +msgstr "" + +#: storage/lmgr/lock.c:734 +#, c-format +msgid "" +"Only RowExclusiveLock or less can be acquired on database objects during " +"recovery." +msgstr "" + +#: storage/lmgr/lock.c:884 storage/lmgr/lock.c:918 storage/lmgr/lock.c:2683 +#: storage/lmgr/lock.c:4008 storage/lmgr/lock.c:4073 storage/lmgr/lock.c:4365 +#, c-format +msgid "You might need to increase max_locks_per_transaction." +msgstr "max_locks_per_transactionì„ ëŠ˜ë ¤ì•¼ í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤." + +#: storage/lmgr/lock.c:3124 storage/lmgr/lock.c:3240 +#, c-format +msgid "" +"cannot PREPARE while holding both session-level and transaction-level locks " +"on the same object" +msgstr "" + +#: storage/lmgr/predicate.c:675 +#, c-format +msgid "not enough elements in RWConflictPool to record a read/write conflict" +msgstr "" + +#: storage/lmgr/predicate.c:676 storage/lmgr/predicate.c:704 +#, c-format +msgid "" +"You might need to run fewer transactions at a time or increase " +"max_connections." +msgstr "" + +#: storage/lmgr/predicate.c:703 +#, c-format +msgid "" +"not enough elements in RWConflictPool to record a potential read/write " +"conflict" +msgstr "" + +#: storage/lmgr/predicate.c:909 +#, c-format +msgid "memory for serializable conflict tracking is nearly exhausted" +msgstr "" + +#: storage/lmgr/predicate.c:910 +#, c-format +msgid "" +"There might be an idle transaction or a forgotten prepared transaction " +"causing this." +msgstr "" + +#: storage/lmgr/predicate.c:1190 storage/lmgr/predicate.c:1261 +#, c-format +msgid "" +"not enough shared memory for elements of data structure \"%s\" (%zu bytes " +"requested)" +msgstr "" + +#: storage/lmgr/predicate.c:1549 +#, c-format +msgid "deferrable snapshot was unsafe; trying a new one" +msgstr "" + +#: storage/lmgr/predicate.c:1588 +#, c-format +msgid "\"default_transaction_isolation\" is set to \"serializable\"." +msgstr "" + +#: storage/lmgr/predicate.c:1589 +#, c-format +msgid "" +"You can use \"SET default_transaction_isolation = 'repeatable read'\" to " +"change the default." +msgstr "" + +#: storage/lmgr/predicate.c:1628 +#, c-format +msgid "a snapshot-importing transaction must not be READ ONLY DEFERRABLE" +msgstr "" + +#: storage/lmgr/predicate.c:1706 utils/time/snapmgr.c:617 +#: utils/time/snapmgr.c:623 +#, c-format +msgid "could not import the requested snapshot" +msgstr "" + +#: storage/lmgr/predicate.c:1707 utils/time/snapmgr.c:624 +#, c-format +msgid "The source transaction %u is not running anymore." +msgstr "%u 소스 íŠ¸ëžœìž­ì…˜ì€ ë”ì´ìƒ 실행 중ì´ì§€ 않습니다." + +#: storage/lmgr/predicate.c:2330 storage/lmgr/predicate.c:2345 +#: storage/lmgr/predicate.c:3737 +#, c-format +msgid "You might need to increase max_pred_locks_per_transaction." +msgstr "max_pred_locks_per_transaction ê°’ì„ ëŠ˜ë ¤ì•¼ í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤." + +#: storage/lmgr/predicate.c:3891 storage/lmgr/predicate.c:3980 +#: storage/lmgr/predicate.c:3988 storage/lmgr/predicate.c:4027 +#: storage/lmgr/predicate.c:4266 storage/lmgr/predicate.c:4603 +#: storage/lmgr/predicate.c:4615 storage/lmgr/predicate.c:4657 +#: storage/lmgr/predicate.c:4695 +#, c-format +msgid "" +"could not serialize access due to read/write dependencies among transactions" +msgstr "트랜잭션간 ì½ê¸°/쓰기 ì˜ì¡´ì„± ë•Œë¬¸ì— serialize ì ‘ê·¼ì„ í•  수 ì—†ìŒ" + +#: storage/lmgr/predicate.c:3893 storage/lmgr/predicate.c:3982 +#: storage/lmgr/predicate.c:3990 storage/lmgr/predicate.c:4029 +#: storage/lmgr/predicate.c:4268 storage/lmgr/predicate.c:4605 +#: storage/lmgr/predicate.c:4617 storage/lmgr/predicate.c:4659 +#: storage/lmgr/predicate.c:4697 +#, c-format +msgid "The transaction might succeed if retried." +msgstr "재시ë„하면 ê·¸ íŠ¸ëžœìž­ì…˜ì´ ì„±ê³µí•  것입니다." + +#: storage/lmgr/proc.c:1265 +#, c-format +msgid "Process %d waits for %s on %s." +msgstr "%d 프로세스가 대기중, 잠금종류: %s, ë‚´ìš©: %s" + +#: storage/lmgr/proc.c:1276 +#, c-format +msgid "sending cancel to blocking autovacuum PID %d" +msgstr "%d PID autovacuum 블럭킹하기 위해 취소 신호를 보냅니다" + +#: storage/lmgr/proc.c:1294 utils/adt/misc.c:270 +#, c-format +msgid "could not send signal to process %d: %m" +msgstr "%d 프로세스로 시스템신호(signal)를 보낼 수 없습니다: %m" + +#: storage/lmgr/proc.c:1396 +#, c-format +msgid "" +"process %d avoided deadlock for %s on %s by rearranging queue order after " +"%ld.%03d ms" +msgstr "" +"%d PID 프로세스는 %s(%s)ì— ëŒ€í•´ êµì°© ìƒíƒœê°€ ë°œìƒí•˜ì§€ 않ë„ë¡ %ld.%03dms í›„ì— " +"대기열 순서를 다시 조정함" + +#: storage/lmgr/proc.c:1411 +#, c-format +msgid "" +"process %d detected deadlock while waiting for %s on %s after %ld.%03d ms" +msgstr "%d PID 프로세스ì—서 %s(%s) 대기중 %ld.%03dms í›„ì— êµì°© ìƒíƒœë¥¼ ê°ì§€í•¨" + +#: storage/lmgr/proc.c:1420 +#, c-format +msgid "process %d still waiting for %s on %s after %ld.%03d ms" +msgstr "%d PID 프로세스ì—서 여전히 %s(%s) ìž‘ì—…ì„ ê¸°ë‹¤ë¦¬ê³  있ìŒ(%ld.%03dms 후)" + +#: storage/lmgr/proc.c:1427 +#, c-format +msgid "process %d acquired %s on %s after %ld.%03d ms" +msgstr "%d PID 프로세스가 %s(%s) ìž‘ì—…ì„ ìœ„í•´ 잠금 ì·¨ë“함(%ld.%03dms 후)" + +#: storage/lmgr/proc.c:1443 +#, c-format +msgid "process %d failed to acquire %s on %s after %ld.%03d ms" +msgstr "프로세스 %dì—서 %s(%s)ì„(를) ì·¨ë“하지 못함(%ld.%03dms 후)" + +#: storage/page/bufpage.c:144 +#, c-format +msgid "page verification failed, calculated checksum %u but expected %u" +msgstr "페ì´ì§€ 검사 실패, ê³„ì‚°ëœ ì²´í¬ì„¬ì€ %u, ê¸°ëŒ€ê°’ì€ %u" + +#: storage/page/bufpage.c:203 storage/page/bufpage.c:522 +#: storage/page/bufpage.c:737 storage/page/bufpage.c:868 +#: storage/page/bufpage.c:968 +#, c-format +msgid "corrupted page pointers: lower = %u, upper = %u, special = %u" +msgstr "ì†ìƒëœ 페ì´ì§€ 위치: 하위값 = %u, ìƒìœ„ê°’ = %u, 특수값 = %u" + +#: storage/page/bufpage.c:566 +#, c-format +msgid "corrupted item pointer: %u" +msgstr "ì†ìƒëœ ì•„ì´í…œ 위치: %u" + +#: storage/page/bufpage.c:577 storage/page/bufpage.c:919 +#: storage/page/bufpage.c:1074 +#, c-format +msgid "corrupted item lengths: total %u, available space %u" +msgstr "ì†ìƒëœ ì•„ì´í…œ 길ì´: ì „ì²´ %u, 사용가능한 공간 %u" + +#: storage/page/bufpage.c:756 storage/page/bufpage.c:892 +#, c-format +msgid "corrupted item pointer: offset = %u, size = %u" +msgstr "ì†ìƒëœ ì•„ì´í…œ 위치: 오프셋 = %u, í¬ê¸° = %u" + +#: storage/page/bufpage.c:997 +#, c-format +msgid "corrupted item pointer: offset = %u, length = %u" +msgstr "ì†ìƒëœ ì•„ì´í…œ 위치: 오프셋 = %u, í¬ê¸° = %u" + +#: storage/smgr/md.c:449 storage/smgr/md.c:971 +#, c-format +msgid "could not truncate file \"%s\": %m" +msgstr "\"%s\" 파ì¼ì„ 비울 수 ì—†ìŒ: %m" + +#: storage/smgr/md.c:516 +#, c-format +msgid "cannot extend file \"%s\" beyond %u blocks" +msgstr "\"%s\" 파ì¼ì„ %uê°œ 블ë¡ì„ 초과하여 확장할 수 ì—†ìŒ" + +#: storage/smgr/md.c:538 storage/smgr/md.c:751 storage/smgr/md.c:827 +#, c-format +msgid "could not seek to block %u in file \"%s\": %m" +msgstr "%u 블ë¡ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ(해당 파ì¼: \"%s\"): %m" + +#: storage/smgr/md.c:546 +#, c-format +msgid "could not extend file \"%s\": %m" +msgstr "\"%s\" 파ì¼ì„ 확장할 수 ì—†ìŒ: %m" + +#: storage/smgr/md.c:548 storage/smgr/md.c:555 storage/smgr/md.c:854 +#, c-format +msgid "Check free disk space." +msgstr "ë””ìŠ¤í¬ ì—¬ìœ  ê³µê°„ì„ í™•ì¸í•´ 주십시오." + +#: storage/smgr/md.c:552 +#, c-format +msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u" +msgstr "\"%s\" 파ì¼ì„ 확장할 수 ì—†ìŒ: %d/%dë°”ì´íŠ¸ë§Œ %u 블ë¡ì— ì¼ìŒ" + +#: storage/smgr/md.c:769 +#, c-format +msgid "could not read block %u in file \"%s\": %m" +msgstr "%u ë¸”ëŸ­ì„ \"%s\" 파ì¼ì—서 ì½ì„ 수 ì—†ìŒ: %m" + +#: storage/smgr/md.c:785 +#, c-format +msgid "could not read block %u in file \"%s\": read only %d of %d bytes" +msgstr "%u ë¸”ëŸ­ì„ \"%s\" 파ì¼ì—서 ì½ì„ 수 ì—†ìŒ: %d / %d ë°”ì´íŠ¸ë§Œ ì½ìŒ" + +#: storage/smgr/md.c:845 +#, c-format +msgid "could not write block %u in file \"%s\": %m" +msgstr "%u ë¸”ëŸ­ì„ \"%s\" 파ì¼ì— 쓸 수 ì—†ìŒ: %m" + +#: storage/smgr/md.c:850 +#, c-format +msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes" +msgstr "%u ë¸”ëŸ­ì„ \"%s\" 파ì¼ì— 쓸 수 ì—†ìŒ: %d / %d ë°”ì´íŠ¸ë§Œ 씀" + +#: storage/smgr/md.c:947 +#, c-format +msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now" +msgstr "\"%s\" 파ì¼ì„ %u 블럭으로 비울 수 ì—†ìŒ: 현재 %u 블럭 ë¿ ìž„" + +#: storage/smgr/md.c:997 +#, c-format +msgid "could not truncate file \"%s\" to %u blocks: %m" +msgstr "\"%s\" 파ì¼ì„ %u 블럭으로 정리할 수 ì—†ìŒ: %m" + +#: storage/smgr/md.c:1279 +#, c-format +msgid "could not fsync file \"%s\" but retrying: %m" +msgstr "\"%s\" íŒŒì¼ fsync 실패, 재시ë„함: %m" + +#: storage/smgr/md.c:1442 +#, c-format +msgid "could not forward fsync request because request queue is full" +msgstr "요청 íê°€ ê°€ë“ì°¨ forward fsync ìš”ì²­ì„ ì²˜ë¦¬í•  수 ì—†ìŒ" + +#: storage/smgr/md.c:1863 +#, c-format +msgid "" +"could not open file \"%s\" (target block %u): previous segment is only %u " +"blocks" +msgstr "\"%s\" 파ì¼ì„ 열기 실패(ëŒ€ìƒ ë¸”ë¡: %u): ì´ì „ ì¡°ê°ì€ %u 블럭 ë¿ìž„" + +#: storage/smgr/md.c:1877 +#, c-format +msgid "could not open file \"%s\" (target block %u): %m" +msgstr "\"%s\" 파ì¼ì„ 열기 실패(ëŒ€ìƒ ë¸”ë¡: %u): %m" + +#: tcop/fastpath.c:111 tcop/fastpath.c:475 tcop/fastpath.c:605 +#, c-format +msgid "invalid argument size %d in function call message" +msgstr "함수 호출 메시지 ì•ˆì— ìžˆëŠ” ìž˜ëª»ëœ %d ì¸ìž í¬ê¸°" + +#: tcop/fastpath.c:291 tcop/postgres.c:992 tcop/postgres.c:1301 +#: tcop/postgres.c:1559 tcop/postgres.c:1964 tcop/postgres.c:2331 +#: tcop/postgres.c:2406 +#, c-format +msgid "" +"current transaction is aborted, commands ignored until end of transaction " +"block" +msgstr "" +"현재 íŠ¸ëžœìž­ì…˜ì€ ì¤‘ì§€ë˜ì–´ 있습니다. ì´ íŠ¸ëžœìž­ì…˜ì„ ì¢…ë£Œí•˜ê¸° 전까지는 모든 명령" +"ì´ ë¬´ì‹œë  ê²ƒìž…ë‹ˆë‹¤" + +#: tcop/fastpath.c:319 +#, c-format +msgid "fastpath function call: \"%s\" (OID %u)" +msgstr "fastpath 함수 호출: \"%s\" (OID %u)" + +#: tcop/fastpath.c:401 tcop/postgres.c:1163 tcop/postgres.c:1426 +#: tcop/postgres.c:1805 tcop/postgres.c:2022 +#, c-format +msgid "duration: %s ms" +msgstr "실행시간: %s ms" + +#: tcop/fastpath.c:405 +#, c-format +msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" +msgstr "작업시간: %s ms fastpath 함수 호출: \"%s\" (OID %u)" + +#: tcop/fastpath.c:443 tcop/fastpath.c:570 +#, c-format +msgid "function call message contains %d arguments but function requires %d" +msgstr "함수 호출 메시지는 %d ì¸ìžë¥¼ 사용하지만, 함수는 %d ì¸ìžê°€ 필요합니다" + +#: tcop/fastpath.c:451 +#, c-format +msgid "function call message contains %d argument formats but %d arguments" +msgstr "함수 호출 메시지는 %d ì¸ìžë¥¼ 사용하지만, 함수는 %d ì¸ìžê°€ 필요합니다" + +#: tcop/fastpath.c:538 tcop/fastpath.c:621 +#, c-format +msgid "incorrect binary data format in function argument %d" +msgstr "함수 ì¸ìž %d ì•ˆì— ìž˜ëª»ëœ ë°”ì´ë„ˆë¦¬ ìžë£Œ í˜•ì‹ ë°œê²¬ë¨" + +#: tcop/postgres.c:352 tcop/postgres.c:388 tcop/postgres.c:415 +#, c-format +msgid "unexpected EOF on client connection" +msgstr "í´ë¼ì´ì–¸íЏ ì—°ê²°ì—서 예ìƒì¹˜ ì•Šì€ EOF 발견ë¨" + +#: tcop/postgres.c:438 tcop/postgres.c:450 tcop/postgres.c:461 +#: tcop/postgres.c:473 tcop/postgres.c:4314 +#, c-format +msgid "invalid frontend message type %d" +msgstr "ìž˜ëª»ëœ frontend 메시지 형태 %d" + +#: tcop/postgres.c:933 +#, c-format +msgid "statement: %s" +msgstr "명령 구문: %s" + +#: tcop/postgres.c:1168 +#, c-format +msgid "duration: %s ms statement: %s" +msgstr "실행시간: %s ms 명령 구문: %s" + +#: tcop/postgres.c:1218 +#, c-format +msgid "parse %s: %s" +msgstr "구문 %s: %s" + +#: tcop/postgres.c:1274 +#, c-format +msgid "cannot insert multiple commands into a prepared statement" +msgstr "ì¤€ë¹„ëœ ëª…ë ¹ 구문ì—는 다중 ëª…ë ¹ì„ ì‚½ìž…í•  수 없습니다" + +#: tcop/postgres.c:1431 +#, c-format +msgid "duration: %s ms parse %s: %s" +msgstr "실행시간: %s ms %s 구문분ì„: %s" + +#: tcop/postgres.c:1476 +#, c-format +msgid "bind %s to %s" +msgstr "ë°”ì¸ë“œ: %s -> %s" + +#: tcop/postgres.c:1495 tcop/postgres.c:2312 +#, c-format +msgid "unnamed prepared statement does not exist" +msgstr "ì´ë¦„없는 ì¤€ë¹„ëœ ëª…ë ¹ 구문(unnamed prepared statement) ì—†ìŒ" + +#: tcop/postgres.c:1537 +#, c-format +msgid "bind message has %d parameter formats but %d parameters" +msgstr "ë°”ì¸ë“œ 메시지는 %d 매개 변수 형태지만, %d 매개 변수여야함" + +#: tcop/postgres.c:1543 +#, c-format +msgid "" +"bind message supplies %d parameters, but prepared statement \"%s\" requires " +"%d" +msgstr "" +"ë°”ì¸ë“œ 메시지는 %dê°œì˜ ë§¤ê°œ 변수를 ì§€ì›í•˜ì§€ë§Œ, \"%s\" ì¤€ë¹„ëœ ëª…ë ¹ 구문" +"(prepared statement)ì—서는%d ê°œì˜ ë§¤ê°œ 변수가 필요합니다" + +#: tcop/postgres.c:1712 +#, c-format +msgid "incorrect binary data format in bind parameter %d" +msgstr "ë°”ì¸ë“œ 매개 변수 %d ì•ˆì— ìž˜ëª»ëœ ë°”ì´ë„ˆë¦¬ ìžë£Œ 형태가 있ìŒ" + +#: tcop/postgres.c:1810 +#, c-format +msgid "duration: %s ms bind %s%s%s: %s" +msgstr "실행시간: %s ms %s%s%s ì ‘ì†: %s" + +#: tcop/postgres.c:1858 tcop/postgres.c:2392 +#, c-format +msgid "portal \"%s\" does not exist" +msgstr "\"%s\" portal ì—†ìŒ" + +#: tcop/postgres.c:1943 +#, c-format +msgid "%s %s%s%s: %s" +msgstr "%s %s%s%s: %s" + +#: tcop/postgres.c:1945 tcop/postgres.c:2030 +msgid "execute fetch from" +msgstr "ìžë£Œë½‘기" + +#: tcop/postgres.c:1946 tcop/postgres.c:2031 +msgid "execute" +msgstr "쿼리실행" + +#: tcop/postgres.c:2027 +#, c-format +msgid "duration: %s ms %s %s%s%s: %s" +msgstr "수행시간: %s ms %s %s%s%s: %s" + +#: tcop/postgres.c:2153 +#, c-format +msgid "prepare: %s" +msgstr "prepare: %s" + +#: tcop/postgres.c:2216 +#, c-format +msgid "parameters: %s" +msgstr "매개 변수: %s" + +#: tcop/postgres.c:2235 +#, c-format +msgid "abort reason: recovery conflict" +msgstr "중지 ì´ìœ : 복구 ì¶©ëŒ" + +#: tcop/postgres.c:2251 +#, c-format +msgid "User was holding shared buffer pin for too long." +msgstr "" + +#: tcop/postgres.c:2254 +#, c-format +msgid "User was holding a relation lock for too long." +msgstr "" + +#: tcop/postgres.c:2257 +#, c-format +msgid "User was or might have been using tablespace that must be dropped." +msgstr "" + +#: tcop/postgres.c:2260 +#, c-format +msgid "User query might have needed to see row versions that must be removed." +msgstr "" + +#: tcop/postgres.c:2266 +#, c-format +msgid "User was connected to a database that must be dropped." +msgstr "ì‚­ì œ ë˜ì–´ì ¸ì•¼í•  ë°ì´í„°ë² ì´ìФ ì‚¬ìš©ìž ì ‘ì†í•´ 있습니다." + +#: tcop/postgres.c:2595 +#, c-format +msgid "terminating connection because of crash of another server process" +msgstr "다른 서버 프로세스가 ì†ìƒì„ ìž…ì–´ 현재 ì—°ê²°ì„ ì¤‘ì§€í•©ë‹ˆë‹¤" + +#: tcop/postgres.c:2596 +#, c-format +msgid "" +"The postmaster has commanded this server process to roll back the current " +"transaction and exit, because another server process exited abnormally and " +"possibly corrupted shared memory." +msgstr "" +"postmaster ì—서 현재 ì´ì„œë²„ 프로세스ì—게 현재 íŠ¸ëžœìž­ì…˜ì„ ì·¨ì†Œí•˜ê³ , í´ë¼ì´ì–¸íЏ" +"ì™€ì˜ ì—°ê²°ì„ ëŠìœ¼ë¼ëŠ” ëª…ë ¹ì„ ë³´ëƒˆìŠµë‹ˆë‹¤. 왜ëƒí•˜ë©´, 다른 서버 프로세스가 비정ìƒ" +"ì ìœ¼ë¡œ 중지ë˜ì–´ 공유 메모리가 ì†ìƒë˜ì—ˆì„ ê°€ëŠ¥ì„±ì´ ìžˆê¸° 때문입니다" + +#: tcop/postgres.c:2600 tcop/postgres.c:2904 +#, c-format +msgid "" +"In a moment you should be able to reconnect to the database and repeat your " +"command." +msgstr "잠시 ë’¤ì— ë‹¤ì‹œ ì—°ê²° 해서 ìž‘ì—…ì„ ê³„ì† í•˜ì‹­ì‹œì˜¤" + +#: tcop/postgres.c:2686 +#, c-format +msgid "floating-point exception" +msgstr "ë¶€ë™ì†Œìˆ˜ì  예외발ìƒ" + +#: tcop/postgres.c:2687 +#, c-format +msgid "" +"An invalid floating-point operation was signaled. This probably means an out-" +"of-range result or an invalid operation, such as division by zero." +msgstr "" +"ìž˜ëª»ëœ ë¶€ë™ì†Œìˆ˜ì  ìž‘ì—…ì´ ê°ì§€ ë˜ì—ˆìŠµë‹ˆë‹¤. ì´ê²ƒì€ ì•„ë§ˆë„ ê²°ê³¼ê°’ 범위초과나 0으" +"로 나누는 작업과 ê°™ì€ ìž˜ëª»ëœ ì—°ì‚° ë•Œë¬¸ì— ë°œìƒí•œ 것 같습니다" + +#: tcop/postgres.c:2849 +#, c-format +msgid "canceling authentication due to timeout" +msgstr "시간 초과로 ì¸ì¦ ìž‘ì—…ì„ ì·¨ì†Œí•©ë‹ˆë‹¤." + +#: tcop/postgres.c:2853 +#, c-format +msgid "terminating autovacuum process due to administrator command" +msgstr "ê´€ë¦¬ìž ëª…ë ¹ìœ¼ë¡œ ì¸í•´ ìžë™ 청소 프로세스를 종료하는 중" + +#: tcop/postgres.c:2859 tcop/postgres.c:2869 tcop/postgres.c:2902 +#, c-format +msgid "terminating connection due to conflict with recovery" +msgstr "복구 작업 중 ì¶©ëŒë¡œ ì—°ê²°ì„ ì¢…ë£Œí•©ë‹ˆë‹¤." + +#: tcop/postgres.c:2875 +#, c-format +msgid "terminating connection due to administrator command" +msgstr "ê´€ë¦¬ìž ìš”ì²­ì— ì˜í•´ì„œ ì—°ê²°ì„ ë냅니다" + +#: tcop/postgres.c:2885 +#, c-format +msgid "connection to client lost" +msgstr "서버로부터 ì—°ê²°ì´ ëŠì–´ì¡ŒìŠµë‹ˆë‹¤." + +#: tcop/postgres.c:2953 +#, c-format +msgid "canceling statement due to lock timeout" +msgstr "잠금 대기 시간 초과로 ìž‘ì—…ì„ ì·¨ì†Œí•©ë‹ˆë‹¤." + +#: tcop/postgres.c:2960 +#, c-format +msgid "canceling statement due to statement timeout" +msgstr "명령실행시간 초과로 ìž‘ì—…ì„ ì·¨ì†Œí•©ë‹ˆë‹¤." + +#: tcop/postgres.c:2967 +#, c-format +msgid "canceling autovacuum task" +msgstr "ìžë™ 청소 ìž‘ì—…ì„ ì·¨ì†Œí•˜ëŠ” 중" + +#: tcop/postgres.c:2990 +#, c-format +msgid "canceling statement due to user request" +msgstr "ì‚¬ìš©ìž ìš”ì²­ì— ì˜í•´ ìž‘ì—…ì„ ì·¨ì†Œí•©ë‹ˆë‹¤." + +#: tcop/postgres.c:3000 +#, c-format +msgid "terminating connection due to idle-in-transaction timeout" +msgstr "idle-in-transaction 시간 초과로 ì—°ê²°ì„ ë냅니다" + +#: tcop/postgres.c:3114 +#, c-format +msgid "stack depth limit exceeded" +msgstr "ìŠ¤íƒ ê¹Šì´ë¥¼ 초과했습니다" + +#: tcop/postgres.c:3115 +#, c-format +msgid "" +"Increase the configuration parameter \"max_stack_depth\" (currently %dkB), " +"after ensuring the platform's stack depth limit is adequate." +msgstr "" +"먼저 OSì—서 ì§€ì›í•˜ëŠ” ìŠ¤íƒ depth ìµœëŒ€ê°’ì„ í™•ì¸í•œ ë’¤, 허용범위 안ì—서 " +"\"max_stack_depth\" (현재값: %dkB) 매개 변수 ê°’ì˜ ì„¤ì •ì¹˜ë¥¼ ì¦ê°€ì‹œí‚¤ì„¸ìš”." + +#: tcop/postgres.c:3178 +#, c-format +msgid "\"max_stack_depth\" must not exceed %ldkB." +msgstr "\"max_stack_depth\" ê°’ì€ %ldkB를 초과할 수 없습니다" + +#: tcop/postgres.c:3180 +#, c-format +msgid "" +"Increase the platform's stack depth limit via \"ulimit -s\" or local " +"equivalent." +msgstr "OSì˜ \"ulimit -s\" 명령과 ê°™ì€ ê²ƒìœ¼ë¡œ ìŠ¤íƒ ê¹Šì´ë¥¼ 늘려주십시오." + +#: tcop/postgres.c:3540 +#, c-format +msgid "invalid command-line argument for server process: %s" +msgstr "서버 í”„ë¡œì„¸ìŠ¤ì˜ ëª…ë ¹í–‰ ì¸ìžê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤: %s" + +#: tcop/postgres.c:3541 tcop/postgres.c:3547 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "ìžì„¸í•œ ì‚¬í•­ì€ \"%s --help\" 명령으로 살펴보세요." + +#: tcop/postgres.c:3545 +#, c-format +msgid "%s: invalid command-line argument: %s" +msgstr "%s: ìž˜ëª»ëœ ëª…ë ¹í–‰ ì¸ìž: %s" + +#: tcop/postgres.c:3607 +#, c-format +msgid "%s: no database nor user name specified" +msgstr "%s: ë°ì´í„°ë² ì´ìŠ¤ì™€ 사용ìžë¥¼ 지정하지 않았습니다" + +#: tcop/postgres.c:4222 +#, c-format +msgid "invalid CLOSE message subtype %d" +msgstr "ìž˜ëª»ëœ CLOSE 메시지 서브타입 %d" + +#: tcop/postgres.c:4257 +#, c-format +msgid "invalid DESCRIBE message subtype %d" +msgstr "ìž˜ëª»ëœ DESCRIBE 메시지 서브타입 %d" + +#: tcop/postgres.c:4335 +#, c-format +msgid "fastpath function calls not supported in a replication connection" +msgstr "복제 ì—°ê²°ì—서는 fastpath 함수 í˜¸ì¶œì„ ì§€ì›í•˜ì§€ 않습니다" + +#: tcop/postgres.c:4339 +#, c-format +msgid "extended query protocol not supported in a replication connection" +msgstr "" + +#: tcop/postgres.c:4509 +#, c-format +msgid "" +"disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s" +"%s" +msgstr "" +"연결종료: 세션 시간: %d:%02d:%02d.%03d 사용ìž=%s ë°ì´í„°ë² ì´ìФ=%s 호스트=%s%s" +"%s" + +#: tcop/pquery.c:665 +#, c-format +msgid "bind message has %d result formats but query has %d columns" +msgstr "" +"ë°”ì¸ë“œ 메시지는 %d ê²°ê³¼ í¬ë©§ì„ 가지고 있고, 쿼리는 %d ì—´ì„ ê°€ì§€ê³  있습니다" + +#: tcop/pquery.c:967 +#, c-format +msgid "cursor can only scan forward" +msgstr "ì´ ì»¤ì„œëŠ” 앞으로 ì´ë™ 전용입니다" + +#: tcop/pquery.c:968 +#, c-format +msgid "Declare it with SCROLL option to enable backward scan." +msgstr "" +"뒤로 ì´ë™ 가능한 커서를 만드려면 SCROLL ì˜µì…˜ì„ ì¶”ê°€í•´ì„œ 커서를 만드세요." + +#. translator: %s is name of a SQL command, eg CREATE +#: tcop/utility.c:235 +#, c-format +msgid "cannot execute %s in a read-only transaction" +msgstr "ì½ê¸° ì „ìš© 트랜잭션ì—서는 %s ëª…ë ¹ì„ ì‹¤í–‰í•  수 없습니다." + +#. translator: %s is name of a SQL command, eg CREATE +#: tcop/utility.c:253 +#, c-format +msgid "cannot execute %s during a parallel operation" +msgstr "병렬 처리 작업ì—서는 %s ëª…ë ¹ì„ ì‹¤í–‰í•  수 없습니다." + +#. translator: %s is name of a SQL command, eg CREATE +#: tcop/utility.c:272 +#, c-format +msgid "cannot execute %s during recovery" +msgstr "복구 작업 중ì—는 %s ëª…ë ¹ì„ ì‹¤í–‰í•  수 없습니다." + +#. translator: %s is name of a SQL command, eg PREPARE +#: tcop/utility.c:290 +#, c-format +msgid "cannot execute %s within security-restricted operation" +msgstr "보안 제한 작업 ë‚´ì—서 %sì„(를) 실행할 수 ì—†ìŒ" + +#: tcop/utility.c:744 +#, c-format +msgid "must be superuser to do CHECKPOINT" +msgstr "CHECKPOINT ëª…ë ¹ì€ ìŠˆí¼ìœ ì €ë§Œ 사용할 수 있습니다" + +#: tsearch/dict_ispell.c:51 tsearch/dict_thesaurus.c:623 +#, c-format +msgid "multiple DictFile parameters" +msgstr "DictFile 매개 변수가 여러 ê°œ 있ìŒ" + +#: tsearch/dict_ispell.c:62 +#, c-format +msgid "multiple AffFile parameters" +msgstr "AffFile 매개 변수가 여러 ê°œ 있ìŒ" + +#: tsearch/dict_ispell.c:81 +#, c-format +msgid "unrecognized Ispell parameter: \"%s\"" +msgstr "ì¸ì‹í•  수 없는 Ispell 매개 변수: \"%s\"" + +#: tsearch/dict_ispell.c:95 +#, c-format +msgid "missing AffFile parameter" +msgstr "AffFile 매개 변수가 누ë½ë¨" + +#: tsearch/dict_ispell.c:101 tsearch/dict_thesaurus.c:647 +#, c-format +msgid "missing DictFile parameter" +msgstr "DictFile 매개 변수가 누ë½ë¨" + +#: tsearch/dict_simple.c:57 +#, c-format +msgid "multiple Accept parameters" +msgstr "Accept 매개 변수가 여러 ê°œ 있ìŒ" + +#: tsearch/dict_simple.c:65 +#, c-format +msgid "unrecognized simple dictionary parameter: \"%s\"" +msgstr "ì¸ì‹í•  수 없는 simple 사전 매개 변수: \"%s\"" + +#: tsearch/dict_synonym.c:117 +#, c-format +msgid "unrecognized synonym parameter: \"%s\"" +msgstr "ì¸ì‹í•  수 없는 synonym 매개 변수: \"%s\"" + +#: tsearch/dict_synonym.c:124 +#, c-format +msgid "missing Synonyms parameter" +msgstr "Synonyms 매개 변수가 누ë½ë¨" + +#: tsearch/dict_synonym.c:131 +#, c-format +msgid "could not open synonym file \"%s\": %m" +msgstr "\"%s\" ë™ì˜ì–´ 파ì¼ì„ ì—´ 수 ì—†ìŒ: %m" + +#: tsearch/dict_thesaurus.c:178 +#, c-format +msgid "could not open thesaurus file \"%s\": %m" +msgstr "\"%s\" 기준어 파ì¼ì„ ì—´ 수 ì—†ìŒ: %m" + +#: tsearch/dict_thesaurus.c:211 +#, c-format +msgid "unexpected delimiter" +msgstr "예기치 ì•Šì€ êµ¬ë¶„ìž" + +#: tsearch/dict_thesaurus.c:261 tsearch/dict_thesaurus.c:277 +#, c-format +msgid "unexpected end of line or lexeme" +msgstr "예기치 ì•Šì€ ì¤„ ë ë˜ëŠ” 어휘소" + +#: tsearch/dict_thesaurus.c:286 +#, c-format +msgid "unexpected end of line" +msgstr "예기치 ì•Šì€ ì¤„ ë" + +#: tsearch/dict_thesaurus.c:296 +#, c-format +msgid "too many lexemes in thesaurus entry" +msgstr "기준어 í•­ëª©ì— ë„ˆë¬´ ë§Žì€ ì–´íœ˜ì†Œê°€ 있ìŒ" + +#: tsearch/dict_thesaurus.c:420 +#, c-format +msgid "" +"thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)" +msgstr "\"%s\" 기준 단어는 하위 사전ì—서 ì¸ì‹í•  수 ì—†ìŒ(규칙 %d)" + +#: tsearch/dict_thesaurus.c:426 +#, c-format +msgid "thesaurus sample word \"%s\" is a stop word (rule %d)" +msgstr "\"%s\" ë™ì˜ì–´ 사전 샘플 단어는 중지 단어임(규칙 %d)" + +#: tsearch/dict_thesaurus.c:429 +#, c-format +msgid "Use \"?\" to represent a stop word within a sample phrase." +msgstr "샘플 구 ë‚´ì—서 중지 단어를 나타내려면 \"?\"를 사용하십시오." + +#: tsearch/dict_thesaurus.c:575 +#, c-format +msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)" +msgstr "\"%s\" ë™ì˜ì–´ 사전 대체 단어는 중지 단어임(규칙 %d)" + +#: tsearch/dict_thesaurus.c:582 +#, c-format +msgid "" +"thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)" +msgstr "\"%s\" ë™ì˜ì–´ 사전 대체 단어는 하위 사전ì—서 ì¸ì‹í•  수 ì—†ìŒ(규칙 %d)" + +#: tsearch/dict_thesaurus.c:594 +#, c-format +msgid "thesaurus substitute phrase is empty (rule %d)" +msgstr "ë™ì˜ì–´ 사전 대체 구가 비어 있ìŒ(규칙 %d)" + +#: tsearch/dict_thesaurus.c:632 +#, c-format +msgid "multiple Dictionary parameters" +msgstr "Dictionary 매개 변수가 여러 ê°œ 있ìŒ" + +#: tsearch/dict_thesaurus.c:639 +#, c-format +msgid "unrecognized Thesaurus parameter: \"%s\"" +msgstr "ì¸ì‹í•  수 없는 Thesaurus 매개 변수: \"%s\"" + +#: tsearch/dict_thesaurus.c:651 +#, c-format +msgid "missing Dictionary parameter" +msgstr "Dictionary 매개 변수가 누ë½ë¨" + +#: tsearch/spell.c:380 tsearch/spell.c:397 tsearch/spell.c:406 +#: tsearch/spell.c:1034 +#, c-format +msgid "invalid affix flag \"%s\"" +msgstr "ìž˜ëª»ëœ affix 플래그: \"%s\"" + +#: tsearch/spell.c:384 tsearch/spell.c:1038 +#, c-format +msgid "affix flag \"%s\" is out of range" +msgstr "affix 플래그 범위 초과: \"%s\"" + +#: tsearch/spell.c:414 +#, c-format +msgid "invalid character in affix flag \"%s\"" +msgstr "affix í”Œëž˜ê·¸ì— ì´ìƒí•œ 문ìžê°€ 있ìŒ: \"%s\"" + +#: tsearch/spell.c:434 +#, c-format +msgid "invalid affix flag \"%s\" with \"long\" flag value" +msgstr "" + +#: tsearch/spell.c:522 +#, c-format +msgid "could not open dictionary file \"%s\": %m" +msgstr "\"%s\" 사전 파ì¼ì„ ì—´ 수 ì—†ìŒ: %m" + +#: tsearch/spell.c:740 utils/adt/regexp.c:204 +#, c-format +msgid "invalid regular expression: %s" +msgstr "ìž˜ëª»ëœ ì •ê·œì‹: %s" + +#: tsearch/spell.c:954 tsearch/spell.c:971 tsearch/spell.c:988 +#: tsearch/spell.c:1005 tsearch/spell.c:1070 gram.y:14405 gram.y:14422 +#, c-format +msgid "syntax error" +msgstr "구문 오류" + +#: tsearch/spell.c:1161 tsearch/spell.c:1721 +#, c-format +msgid "invalid affix alias \"%s\"" +msgstr "ìž˜ëª»ëœ affix 별칭: \"%s\"" + +#: tsearch/spell.c:1211 tsearch/spell.c:1282 tsearch/spell.c:1426 +#, c-format +msgid "could not open affix file \"%s\": %m" +msgstr "\"%s\" affix 파ì¼ì„ ì—´ 수 ì—†ìŒ: %m" + +#: tsearch/spell.c:1265 +#, c-format +msgid "" +"Ispell dictionary supports only \"default\", \"long\", and \"num\" flag " +"values" +msgstr "Ispell ì‚¬ì „ì€ \"default\", \"long\", \"num\" 플래그 ê°’ë§Œ ì§€ì›í•¨" + +#: tsearch/spell.c:1309 +#, c-format +msgid "invalid number of flag vector aliases" +msgstr "ìž˜ëª»ëœ í”Œëž˜ê·¸ 백터 별칭 개수" + +#: tsearch/spell.c:1542 +#, c-format +msgid "affix file contains both old-style and new-style commands" +msgstr "affix 파ì¼ì— 옛방ì‹ê³¼ ìƒˆë°©ì‹ ëª…ë ¹ì´ í•¨ê»˜ 있습니다" + +#: tsearch/to_tsany.c:170 utils/adt/tsvector.c:270 +#: utils/adt/tsvector_op.c:1133 +#, c-format +msgid "string is too long for tsvector (%d bytes, max %d bytes)" +msgstr "" +"문ìžì—´ì´ 너무 길어서 tsvectorì— ì‚¬ìš©í•  수 ì—†ìŒ(%dë°”ì´íЏ, 최대 %dë°”ì´íЏ)" + +#: tsearch/ts_locale.c:177 +#, c-format +msgid "line %d of configuration file \"%s\": \"%s\"" +msgstr "%d번째 줄(해당 파ì¼: \"%s\"): \"%s\"" + +#: tsearch/ts_locale.c:299 +#, c-format +msgid "conversion from wchar_t to server encoding failed: %m" +msgstr "wchar_tì—서 서버 ì¸ì½”딩으로 변환하지 못함: %m" + +#: tsearch/ts_parse.c:390 tsearch/ts_parse.c:397 tsearch/ts_parse.c:566 +#: tsearch/ts_parse.c:573 +#, c-format +msgid "word is too long to be indexed" +msgstr "단어가 너무 길어서 ì¸ë±ì‹±í•  수 ì—†ìŒ" + +#: tsearch/ts_parse.c:391 tsearch/ts_parse.c:398 tsearch/ts_parse.c:567 +#: tsearch/ts_parse.c:574 +#, c-format +msgid "Words longer than %d characters are ignored." +msgstr "%dìžë³´ë‹¤ 긴 단어는 무시ë©ë‹ˆë‹¤." + +#: tsearch/ts_utils.c:51 +#, c-format +msgid "invalid text search configuration file name \"%s\"" +msgstr "\"%s\" 전문 검색 구성 íŒŒì¼ ì´ë¦„ì´ ìž˜ëª»ë¨" + +#: tsearch/ts_utils.c:83 +#, c-format +msgid "could not open stop-word file \"%s\": %m" +msgstr "\"%s\" 중지 단어 파ì¼ì„ ì—´ 수 ì—†ìŒ: %m" + +#: tsearch/wparser.c:306 +#, c-format +msgid "text search parser does not support headline creation" +msgstr "전문 검색 ë¶„ì„기ì—서 헤드ë¼ì¸ ìž‘ì„±ì„ ì§€ì›í•˜ì§€ 않ìŒ" + +#: tsearch/wparser_def.c:2583 +#, c-format +msgid "unrecognized headline parameter: \"%s\"" +msgstr "ì¸ì‹í•  수 없는 headline 매개 변수: \"%s\"" + +#: tsearch/wparser_def.c:2592 +#, c-format +msgid "MinWords should be less than MaxWords" +msgstr "MinWords는 MaxWords보다 작아야 함" + +#: tsearch/wparser_def.c:2596 +#, c-format +msgid "MinWords should be positive" +msgstr "MinWords는 양수여야 함" + +#: tsearch/wparser_def.c:2600 +#, c-format +msgid "ShortWord should be >= 0" +msgstr "ShortWord는 0보다 í¬ê±°ë‚˜ 같아야 함" + +#: tsearch/wparser_def.c:2604 +#, c-format +msgid "MaxFragments should be >= 0" +msgstr "MaxFragments는 0보다 í¬ê±°ë‚˜ 같아야 함" + +# # nonun 부분 begin +#: utils/adt/acl.c:170 utils/adt/name.c:91 +#, c-format +msgid "identifier too long" +msgstr "ì‹ë³„ìž(identifier)ê°€ 너무 ê¹ë‹ˆë‹¤." + +#: utils/adt/acl.c:171 utils/adt/name.c:92 +#, c-format +msgid "Identifier must be less than %d characters." +msgstr "ì‹ë³„ìž(Identifier)는 %d ê¸€ìž ì´ìƒì¼ 수 없습니다." + +#: utils/adt/acl.c:257 +#, c-format +msgid "unrecognized key word: \"%s\"" +msgstr "알 수 없는 ì•Šì€ í‚¤ì›Œë“œ: \"%s\"" + +#: utils/adt/acl.c:258 +#, c-format +msgid "ACL key word must be \"group\" or \"user\"." +msgstr "ACL 키워드는 \"group\" ë˜ëŠ” \"user\" ì¤‘ì— í•˜ë‚˜ì—¬ì•¼ 합니다." + +#: utils/adt/acl.c:263 +#, c-format +msgid "missing name" +msgstr "ì´ë¦„ì´ ë¹ ì¡ŒìŠµë‹ˆë‹¤." + +#: utils/adt/acl.c:264 +#, c-format +msgid "A name must follow the \"group\" or \"user\" key word." +msgstr "ì´ë¦„ì€ \"group\" ë˜ëŠ” \"user\" 키워드 ë’¤ì— ìžˆì–´ì•¼ 합니다." + +#: utils/adt/acl.c:270 +#, c-format +msgid "missing \"=\" sign" +msgstr "\"=\" 기호가 빠졌습니다." + +#: utils/adt/acl.c:323 +#, c-format +msgid "invalid mode character: must be one of \"%s\"" +msgstr "ìž˜ëª»ëœ ì¡°ê±´: \"%s\" ì¤‘ì— í•œ 가지여야 합니다." + +#: utils/adt/acl.c:345 +#, c-format +msgid "a name must follow the \"/\" sign" +msgstr "ì´ë¦„ì€ \"/\"기호 ë’¤ì— ìžˆì–´ì•¼ 합니다." + +#: utils/adt/acl.c:353 +#, c-format +msgid "defaulting grantor to user ID %u" +msgstr "%u ì‚¬ìš©ìž IDì—서 기본 권한ìžë¡œ 할당하고 있습니다" + +#: utils/adt/acl.c:544 +#, c-format +msgid "ACL array contains wrong data type" +msgstr "ACL ë°°ì—´ì— ìž˜ëª»ëœ ìžë£Œí˜•ì„ ì‚¬ìš©í•˜ê³  있습니다" + +#: utils/adt/acl.c:548 +#, c-format +msgid "ACL arrays must be one-dimensional" +msgstr "ACL ë°°ì—´ì€ ì¼ì°¨ì› ë°°ì—´ì´ì–´ì•¼í•©ë‹ˆë‹¤" + +#: utils/adt/acl.c:552 +#, c-format +msgid "ACL arrays must not contain null values" +msgstr "ACL ë°°ì—´ì—는 null ê°’ì„ í¬í•¨í•  수 없습니다" + +#: utils/adt/acl.c:576 +#, c-format +msgid "extra garbage at the end of the ACL specification" +msgstr "ACL 설정 ì •ë³´ ëì— ëì— ì“¸ëª¨ 없는 ë‚´ìš©ë“¤ì´ ë” í¬í•¨ë˜ì–´ìžˆìŠµë‹ˆë‹¤" + +#: utils/adt/acl.c:1196 +#, c-format +msgid "grant options cannot be granted back to your own grantor" +msgstr "부여 ì˜µì…˜ì„ í•´ë‹¹ 부여ìžì—게 다시 부여할 수 ì—†ìŒ" + +#: utils/adt/acl.c:1257 +#, c-format +msgid "dependent privileges exist" +msgstr "???ì˜ì¡´(ì ì¸) ê¶Œí•œì´ ì¡´ìž¬í•©ë‹ˆë‹¤" + +#: utils/adt/acl.c:1258 +#, c-format +msgid "Use CASCADE to revoke them too." +msgstr "ê·¸ê²ƒë“¤ì„ ì·¨ì†Œí•˜ë ¤ë©´ \"CASCADE\"를 사용하세요." + +#: utils/adt/acl.c:1537 +#, c-format +msgid "aclinsert is no longer supported" +msgstr "aclinsert ë”ì´ìƒ ì§€ì›í•˜ì§€ 않ìŒ" + +#: utils/adt/acl.c:1547 +#, c-format +msgid "aclremove is no longer supported" +msgstr "aclremovie ë”ì´ìƒ ì§€ì›í•˜ì§€ 않ìŒ" + +#: utils/adt/acl.c:1633 utils/adt/acl.c:1687 +#, c-format +msgid "unrecognized privilege type: \"%s\"" +msgstr "알 수 없는 권한 타입: \"%s\"" + +#: utils/adt/acl.c:3427 utils/adt/regproc.c:123 utils/adt/regproc.c:144 +#: utils/adt/regproc.c:319 +#, c-format +msgid "function \"%s\" does not exist" +msgstr "\"%s\" 함수가 없습니다." + +#: utils/adt/acl.c:4881 +#, c-format +msgid "must be member of role \"%s\"" +msgstr "\"%s\" ë¡¤ì˜ êµ¬ì„±ì›ì´ì–´ì•¼ 함" + +#: utils/adt/array_expanded.c:274 utils/adt/arrayfuncs.c:931 +#: utils/adt/arrayfuncs.c:1519 utils/adt/arrayfuncs.c:3251 +#: utils/adt/arrayfuncs.c:3389 utils/adt/arrayfuncs.c:5848 +#: utils/adt/arrayfuncs.c:6159 utils/adt/arrayutils.c:93 +#: utils/adt/arrayutils.c:102 utils/adt/arrayutils.c:109 +#, c-format +msgid "array size exceeds the maximum allowed (%d)" +msgstr "ë°°ì—´ í¬ê¸°ê°€ 최대치 (%d)를 초과했습니다" + +#: utils/adt/array_userfuncs.c:79 utils/adt/array_userfuncs.c:541 +#: utils/adt/array_userfuncs.c:621 utils/adt/json.c:1759 utils/adt/json.c:1854 +#: utils/adt/json.c:1892 utils/adt/jsonb.c:1126 utils/adt/jsonb.c:1155 +#: utils/adt/jsonb.c:1591 utils/adt/jsonb.c:1755 utils/adt/jsonb.c:1765 +#, c-format +msgid "could not determine input data type" +msgstr "ìž…ë ¥ ìžë£Œí˜•ì„ ê²°ì •í•  수 ì—†ìŒ" + +#: utils/adt/array_userfuncs.c:84 +#, c-format +msgid "input data type is not an array" +msgstr "ìž…ë ¥ ìžë£Œí˜•ì´ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤." + +#: utils/adt/array_userfuncs.c:132 utils/adt/array_userfuncs.c:186 +#: utils/adt/arrayfuncs.c:1322 utils/adt/float.c:1228 utils/adt/float.c:1287 +#: utils/adt/float.c:3556 utils/adt/float.c:3572 utils/adt/int.c:623 +#: utils/adt/int.c:652 utils/adt/int.c:673 utils/adt/int.c:704 +#: utils/adt/int.c:737 utils/adt/int.c:759 utils/adt/int.c:907 +#: utils/adt/int.c:928 utils/adt/int.c:955 utils/adt/int.c:995 +#: utils/adt/int.c:1016 utils/adt/int.c:1043 utils/adt/int.c:1076 +#: utils/adt/int.c:1159 utils/adt/int8.c:1298 utils/adt/numeric.c:2903 +#: utils/adt/numeric.c:2912 utils/adt/varbit.c:1173 utils/adt/varbit.c:1575 +#: utils/adt/varlena.c:1055 utils/adt/varlena.c:2807 +#, c-format +msgid "integer out of range" +msgstr "정수 범위를 벗어남" + +#: utils/adt/array_userfuncs.c:139 utils/adt/array_userfuncs.c:196 +#, c-format +msgid "argument must be empty or one-dimensional array" +msgstr "ì¸ìžëŠ” 비어있거나 1ì°¨ì› ë°°ì—´ì´ì–´ì•¼ 합니다." + +#: utils/adt/array_userfuncs.c:278 utils/adt/array_userfuncs.c:317 +#: utils/adt/array_userfuncs.c:354 utils/adt/array_userfuncs.c:383 +#: utils/adt/array_userfuncs.c:411 +#, c-format +msgid "cannot concatenate incompatible arrays" +msgstr "ì—°ê²°í•  수 없는 배열들 입니다." + +#: utils/adt/array_userfuncs.c:279 +#, c-format +msgid "" +"Arrays with element types %s and %s are not compatible for concatenation." +msgstr "%s ìžë£Œí˜•ì˜ ë°°ì—´ê³¼ %s ìžë£Œí˜•ì˜ ë°°ì—´ì€ ì—°ê²°í•  수 없습니다." + +#: utils/adt/array_userfuncs.c:318 +#, c-format +msgid "Arrays of %d and %d dimensions are not compatible for concatenation." +msgstr "%dì°¨ì›(ë°°ì—´ 깊ì´) ë°°ì—´ê³¼ %dì°¨ì› ë°°ì—´ì€ ì—°ê²°í•  수 없습니다." + +#: utils/adt/array_userfuncs.c:355 +#, c-format +msgid "" +"Arrays with differing element dimensions are not compatible for " +"concatenation." +msgstr "ì°¨ì›(ë°°ì—´ 깊ì´)ì´ ë‹¤ë¥¸ ë°°ì—´ë“¤ì„ ì„œë¡œ í•©ì¹  수 없습니다" + +#: utils/adt/array_userfuncs.c:384 utils/adt/array_userfuncs.c:412 +#, c-format +msgid "Arrays with differing dimensions are not compatible for concatenation." +msgstr "ì°¨ì›(ë°°ì—´ 깊ì´)ì´ ë‹¤ë¥¸ ë°°ì—´ë“¤ì„ ì„œë¡œ í•©ì¹  수 없습니다" + +#: utils/adt/array_userfuncs.c:480 utils/adt/arrayfuncs.c:1284 +#: utils/adt/arrayfuncs.c:3357 utils/adt/arrayfuncs.c:5754 +#, c-format +msgid "invalid number of dimensions: %d" +msgstr "ìž˜ëª»ëœ ë°°ì—´ ì°¨ì›(ë°°ì—´ 깊ì´): %d" + +#: utils/adt/array_userfuncs.c:737 utils/adt/array_userfuncs.c:889 +#, c-format +msgid "searching for elements in multidimensional arrays is not supported" +msgstr "ë‹¤ì°¨ì› ë°°ì—´ì—서 요소 검색 ê¸°ëŠ¥ì€ ì§€ì›í•˜ì§€ 않ìŒ" + +#: utils/adt/array_userfuncs.c:761 +#, c-format +msgid "initial position must not be null" +msgstr "초기 ìœ„ì¹˜ê°’ì€ nullê°’ì´ ì•„ë‹ˆì—¬ì•¼ 함" + +#: utils/adt/arrayfuncs.c:268 utils/adt/arrayfuncs.c:282 +#: utils/adt/arrayfuncs.c:293 utils/adt/arrayfuncs.c:315 +#: utils/adt/arrayfuncs.c:330 utils/adt/arrayfuncs.c:344 +#: utils/adt/arrayfuncs.c:350 utils/adt/arrayfuncs.c:357 +#: utils/adt/arrayfuncs.c:488 utils/adt/arrayfuncs.c:504 +#: utils/adt/arrayfuncs.c:515 utils/adt/arrayfuncs.c:530 +#: utils/adt/arrayfuncs.c:551 utils/adt/arrayfuncs.c:581 +#: utils/adt/arrayfuncs.c:588 utils/adt/arrayfuncs.c:596 +#: utils/adt/arrayfuncs.c:630 utils/adt/arrayfuncs.c:653 +#: utils/adt/arrayfuncs.c:673 utils/adt/arrayfuncs.c:785 +#: utils/adt/arrayfuncs.c:794 utils/adt/arrayfuncs.c:824 +#: utils/adt/arrayfuncs.c:839 utils/adt/arrayfuncs.c:892 +#, c-format +msgid "malformed array literal: \"%s\"" +msgstr "비정ìƒì ì¸ ë°°ì—´ 문ìž: \"%s\"" + +#: utils/adt/arrayfuncs.c:269 +#, c-format +msgid "\"[\" must introduce explicitly-specified array dimensions." +msgstr "ë°°ì—´ ì°¨ì› ì •ì˜ëŠ” \"[\" 문ìžë¡œ 시작해야 합니다." + +#: utils/adt/arrayfuncs.c:283 +#, c-format +msgid "Missing array dimension value." +msgstr "ë°°ì—´ ì°¨ì›(ë°°ì—´ 깊ì´) ê°’ì´ ë¹ ì¡ŒìŠµë‹ˆë‹¤." + +#: utils/adt/arrayfuncs.c:294 utils/adt/arrayfuncs.c:331 +#, c-format +msgid "Missing \"%s\" after array dimensions." +msgstr "ë°°ì—´ ì°¨ì›(ë°°ì—´ 깊ì´) 표현ì—서 \"%s\" 문ìžê°€ 빠졌습니다." + +#: utils/adt/arrayfuncs.c:303 utils/adt/arrayfuncs.c:2870 +#: utils/adt/arrayfuncs.c:2902 utils/adt/arrayfuncs.c:2917 +#, c-format +msgid "upper bound cannot be less than lower bound" +msgstr "ìƒí•œê°’ì€ í•˜í•œê°’ë³´ë‹¤ ìž‘ì„ ìˆ˜ 없습니다" + +#: utils/adt/arrayfuncs.c:316 +#, c-format +msgid "Array value must start with \"{\" or dimension information." +msgstr "ë°°ì—´ê°’ì€ \"{\" ë˜ëŠ” ë°°ì—´ ê¹Šì´ ì •ë³´ë¡œ 시작ë˜ì–´ì•¼ 합니다" + +#: utils/adt/arrayfuncs.c:345 +#, c-format +msgid "Array contents must start with \"{\"." +msgstr "ë°°ì—´í˜•ì€ \"{\" 문ìžë¡œ 시작해야 합니다." + +#: utils/adt/arrayfuncs.c:351 utils/adt/arrayfuncs.c:358 +#, c-format +msgid "Specified array dimensions do not match array contents." +msgstr "지정한 ë°°ì—´ ì°¨ì›ì— 해당하는 ë°°ì—´ì´ ì—†ìŠµë‹ˆë‹¤." + +#: utils/adt/arrayfuncs.c:489 utils/adt/arrayfuncs.c:516 +#: utils/adt/rangetypes.c:2124 utils/adt/rangetypes.c:2132 +#: utils/adt/rowtypes.c:208 utils/adt/rowtypes.c:216 +#, c-format +msgid "Unexpected end of input." +msgstr "ìž…ë ¥ì˜ ì˜ˆìƒì¹˜ 못한 종료." + +#: utils/adt/arrayfuncs.c:505 utils/adt/arrayfuncs.c:552 +#: utils/adt/arrayfuncs.c:582 utils/adt/arrayfuncs.c:631 +#, c-format +msgid "Unexpected \"%c\" character." +msgstr "예기치 ì•Šì€ \"%c\" 문ìž" + +#: utils/adt/arrayfuncs.c:531 utils/adt/arrayfuncs.c:654 +#, c-format +msgid "Unexpected array element." +msgstr "예기치 ì•Šì€ ë°°ì—´ 요소" + +#: utils/adt/arrayfuncs.c:589 +#, c-format +msgid "Unmatched \"%c\" character." +msgstr "ì§ì´ 안 맞는 \"%c\" 문ìž" + +#: utils/adt/arrayfuncs.c:597 +#, c-format +msgid "Multidimensional arrays must have sub-arrays with matching dimensions." +msgstr "ë‹¤ì°¨ì› ë°°ì—´ì—는 ì¼ì¹˜í•˜ëŠ” ì°¨ì›ì´ í¬í•¨ëœ ë°°ì—´ ì‹ì´ 있어야 함" + +#: utils/adt/arrayfuncs.c:674 +#, c-format +msgid "Junk after closing right brace." +msgstr "오른쪽 닫기 괄호 ë’¤ì— ì •í¬" + +#: utils/adt/arrayfuncs.c:1295 +#, c-format +msgid "invalid array flags" +msgstr "ìž˜ëª»ëœ ë°°ì—´ 플래그" + +#: utils/adt/arrayfuncs.c:1303 +#, c-format +msgid "wrong element type" +msgstr "ìž˜ëª»ëœ ìš”ì†Œ 타입" + +#: utils/adt/arrayfuncs.c:1353 utils/adt/rangetypes.c:334 +#: utils/cache/lsyscache.c:2651 +#, c-format +msgid "no binary input function available for type %s" +msgstr "%s ìžë£Œí˜•ì—서 사용할 ë°”ì´ë„ˆë¦¬ ìž…ë ¥ 함수가 없습니다." + +#: utils/adt/arrayfuncs.c:1493 +#, c-format +msgid "improper binary format in array element %d" +msgstr "%d 번째 ë°°ì—´ ìš”ì†Œì˜ í¬ë§·ì´ ë¶€ì ì ˆí•©ë‹ˆë‹¤." + +#: utils/adt/arrayfuncs.c:1574 utils/adt/rangetypes.c:339 +#: utils/cache/lsyscache.c:2684 +#, c-format +msgid "no binary output function available for type %s" +msgstr "%s ìžë£Œí˜•ì—서 사용할 ë°”ì´ë„ˆë¦¬ 출력 함수가 없습니다." + +#: utils/adt/arrayfuncs.c:2052 +#, c-format +msgid "slices of fixed-length arrays not implemented" +msgstr "특정 í¬ê¸°ë¡œ ë°°ì—´ì„ ì ˆë‹¨í•˜ëŠ” ê¸°ëŠ¥ì€ êµ¬í˜„ë˜ì§€ 않습니다." + +#: utils/adt/arrayfuncs.c:2230 utils/adt/arrayfuncs.c:2252 +#: utils/adt/arrayfuncs.c:2301 utils/adt/arrayfuncs.c:2537 +#: utils/adt/arrayfuncs.c:2848 utils/adt/arrayfuncs.c:5740 +#: utils/adt/arrayfuncs.c:5766 utils/adt/arrayfuncs.c:5777 +#: utils/adt/json.c:2290 utils/adt/json.c:2365 utils/adt/jsonb.c:1369 +#: utils/adt/jsonb.c:1455 utils/adt/jsonfuncs.c:3529 +#: utils/adt/jsonfuncs.c:3574 utils/adt/jsonfuncs.c:3621 +#, c-format +msgid "wrong number of array subscripts" +msgstr "ìž˜ëª»ëœ ë°°ì—´ 하위 스í¬ë¦½íЏ(1,2...ì°¨ì› ë°°ì—´ 표시 문제)" + +#: utils/adt/arrayfuncs.c:2235 utils/adt/arrayfuncs.c:2343 +#: utils/adt/arrayfuncs.c:2601 utils/adt/arrayfuncs.c:2907 +#, c-format +msgid "array subscript out of range" +msgstr "ë°°ì—´ 하위 스í¬ë¦½íЏ 범위를 초과했습니다" + +#: utils/adt/arrayfuncs.c:2240 +#, c-format +msgid "cannot assign null value to an element of a fixed-length array" +msgstr "ê³ ì • ê¸¸ì´ ë°°ì—´ì˜ ìš”ì†Œì— null ê°’ì„ ì§€ì •í•  수 ì—†ìŒ" + +#: utils/adt/arrayfuncs.c:2795 +#, c-format +msgid "updates on slices of fixed-length arrays not implemented" +msgstr "ê³ ì •ëœ í¬ê¸°ì˜ ë°°ì—´ì˜ ì¡°ê°ì„ ì—…ë°ì´íЏ 하는 ê¸°ëŠ¥ì€ êµ¬í˜„ë˜ì§€ 않았습니다." + +#: utils/adt/arrayfuncs.c:2826 +#, c-format +msgid "array slice subscript must provide both boundaries" +msgstr "ë°°ì—´ 나누기 서브스í¬ë¦½íŠ¸ëŠ” 반드시 둘다 ë²”ìœ„ì•ˆì— ìžˆì–´ì•¼ 합니다" + +#: utils/adt/arrayfuncs.c:2827 +#, c-format +msgid "" +"When assigning to a slice of an empty array value, slice boundaries must be " +"fully specified." +msgstr "" + +#: utils/adt/arrayfuncs.c:2838 utils/adt/arrayfuncs.c:2933 +#, c-format +msgid "source array too small" +msgstr "ì›ë³¸ ë°°ì—´ì´ ë„ˆë¬´ 작습니다." + +#: utils/adt/arrayfuncs.c:3513 +#, c-format +msgid "null array element not allowed in this context" +msgstr "ì´ êµ¬ë¬¸ì—서는 ë°°ì—´ì˜ null 요소를 허용하지 않습니다" + +#: utils/adt/arrayfuncs.c:3615 utils/adt/arrayfuncs.c:3786 +#: utils/adt/arrayfuncs.c:4060 +#, c-format +msgid "cannot compare arrays of different element types" +msgstr "ë°°ì—´ 요소 ìžë£Œí˜•ì´ ì„œë¡œ 틀린 ë°°ì—´ì€ ë¹„êµí•  수 없습니다." + +#: utils/adt/arrayfuncs.c:3962 utils/adt/rangetypes.c:1253 +#, c-format +msgid "could not identify a hash function for type %s" +msgstr "%s ìžë£Œí˜•ì—서 사용할 해쉬함수를 ì°¾ì„ ìˆ˜ 없습니다." + +#: utils/adt/arrayfuncs.c:5154 +#, c-format +msgid "data type %s is not an array type" +msgstr "%s ìžë£Œí˜•ì€ ë°°ì—´ì´ ì•„ë‹™ë‹ˆë‹¤." + +#: utils/adt/arrayfuncs.c:5209 +#, c-format +msgid "cannot accumulate null arrays" +msgstr "null ë°°ì—´ì„ ëˆ„ì í•  수 ì—†ìŒ" + +#: utils/adt/arrayfuncs.c:5237 +#, c-format +msgid "cannot accumulate empty arrays" +msgstr "빈 ë°°ì—´ì„ ëˆ„ì í•  수 ì—†ìŒ" + +#: utils/adt/arrayfuncs.c:5266 utils/adt/arrayfuncs.c:5272 +#, c-format +msgid "cannot accumulate arrays of different dimensionality" +msgstr "ë°°ì—´ 차수가 서로 틀린 ë°°ì—´ì€ ëˆ„ì í•  수 ì—†ìŒ" + +#: utils/adt/arrayfuncs.c:5638 utils/adt/arrayfuncs.c:5678 +#, c-format +msgid "dimension array or low bound array cannot be null" +msgstr "ì°¨ì› ë°°ì—´ ë˜ëŠ” 하한 ë°°ì—´ì€ NULLì¼ ìˆ˜ ì—†ìŒ" + +#: utils/adt/arrayfuncs.c:5741 utils/adt/arrayfuncs.c:5767 +#, c-format +msgid "Dimension array must be one dimensional." +msgstr "ì°¨ì› ë°°ì—´ì€ ì¼ì°¨ì› ë°°ì—´ì´ì–´ì•¼ 합니다." + +#: utils/adt/arrayfuncs.c:5746 utils/adt/arrayfuncs.c:5772 +#, c-format +msgid "dimension values cannot be null" +msgstr "ì°¨ì› ê°’ì€ nullì¼ ìˆ˜ ì—†ìŒ" + +#: utils/adt/arrayfuncs.c:5778 +#, c-format +msgid "Low bound array has different size than dimensions array." +msgstr "하한 ë°°ì—´ì˜ í¬ê¸°ê°€ ì°¨ì› ë°°ì—´ê³¼ 다릅니다." + +#: utils/adt/arrayfuncs.c:6024 +#, c-format +msgid "removing elements from multidimensional arrays is not supported" +msgstr "ë‹¤ì°¨ì› ë°°ì—´ì—서 요소 ì‚­ì œê¸°ëŠ¥ì€ ì§€ì›ë˜ì§€ 않ìŒ" + +#: utils/adt/arrayfuncs.c:6301 +#, c-format +msgid "thresholds must be one-dimensional array" +msgstr "threshold ê°’ì€ 1ì°¨ì› ë°°ì—´ì´ì–´ì•¼ 합니다." + +#: utils/adt/arrayfuncs.c:6306 +#, c-format +msgid "thresholds array must not contain NULLs" +msgstr "threshold ë°°ì—´ì—는 nullì´ í¬í•¨ë˜ì§€ 않아야 함" + +#: utils/adt/arrayutils.c:209 +#, c-format +msgid "typmod array must be type cstring[]" +msgstr "typmod ë°°ì—´ì€ cstring[] 형ì‹ì´ì–´ì•¼ 함" + +#: utils/adt/arrayutils.c:214 +#, c-format +msgid "typmod array must be one-dimensional" +msgstr "typmod ë°°ì—´ì€ ì¼ì°¨ì› ë°°ì—´ì´ì–´ì•¼ 함" + +#: utils/adt/arrayutils.c:219 +#, c-format +msgid "typmod array must not contain nulls" +msgstr "typmod ë°°ì—´ì—는 nullì´ í¬í•¨ë˜ì§€ 않아야 함" + +#: utils/adt/ascii.c:75 +#, c-format +msgid "encoding conversion from %s to ASCII not supported" +msgstr "%s ì¸ì½”ë”©ì„ ASCII ì¸ì½”ë”©ìœ¼ë¡œì˜ ë³€í™˜ì€ ì§€ì›í•˜ì§€ 않습니다." + +#: utils/adt/bool.c:153 +#, c-format +msgid "invalid input syntax for type boolean: \"%s\"" +msgstr "boolean ìžë£Œí˜•ì— ëŒ€í•œ ìž˜ëª»ëœ ìž…ë ¥: \"%s\"" + +#: utils/adt/cash.c:246 +#, c-format +msgid "invalid input syntax for type money: \"%s\"" +msgstr "money ìžë£Œí˜•ì— ëŒ€í•œ ìž˜ëª»ëœ ìž…ë ¥: \"%s\"" + +#: utils/adt/cash.c:607 utils/adt/cash.c:657 utils/adt/cash.c:708 +#: utils/adt/cash.c:757 utils/adt/cash.c:809 utils/adt/cash.c:859 +#: utils/adt/float.c:855 utils/adt/float.c:919 utils/adt/float.c:3315 +#: utils/adt/float.c:3378 utils/adt/geo_ops.c:4093 utils/adt/int.c:719 +#: utils/adt/int.c:861 utils/adt/int.c:969 utils/adt/int.c:1058 +#: utils/adt/int.c:1097 utils/adt/int.c:1125 utils/adt/int8.c:597 +#: utils/adt/int8.c:657 utils/adt/int8.c:897 utils/adt/int8.c:1005 +#: utils/adt/int8.c:1094 utils/adt/int8.c:1202 utils/adt/numeric.c:6818 +#: utils/adt/numeric.c:7107 utils/adt/numeric.c:8120 +#: utils/adt/timestamp.c:3499 +#, c-format +msgid "division by zero" +msgstr "0으로는 나눌수 없습니다." + +#: utils/adt/char.c:169 +#, c-format +msgid "\"char\" out of range" +msgstr "\"char\" 범위를 벗어났습니다." + +#: utils/adt/date.c:67 utils/adt/timestamp.c:94 utils/adt/varbit.c:52 +#: utils/adt/varchar.c:45 +#, c-format +msgid "invalid type modifier" +msgstr "ìž˜ëª»ëœ ìžë£Œí˜• 한정ìž" + +#: utils/adt/date.c:72 +#, c-format +msgid "TIME(%d)%s precision must not be negative" +msgstr "TIME(%d)%s ì •ë°€ë„로 ìŒìˆ˜ë¥¼ 사용할 수 없습니다" + +#: utils/adt/date.c:78 +#, c-format +msgid "TIME(%d)%s precision reduced to maximum allowed, %d" +msgstr "TIME(%d)%s ì •ë°€ë„는 최대값(%d)으로 줄였습니다" + +#: utils/adt/date.c:141 utils/adt/datetime.c:1278 utils/adt/datetime.c:2191 +#, c-format +msgid "date/time value \"current\" is no longer supported" +msgstr "ë‚ ìžì™€ 시간 ìž…ë ¥ì„ ìœ„í•œ \"current\" 는 ë”ì´ìƒ ì§€ì›í•˜ì§€ 않습니다." + +#: utils/adt/date.c:167 utils/adt/date.c:175 utils/adt/formatting.c:3529 +#: utils/adt/formatting.c:3538 +#, c-format +msgid "date out of range: \"%s\"" +msgstr "ë‚ ì§œ 범위가 벗어났ìŒ: \"%s\"" + +#: utils/adt/date.c:222 utils/adt/date.c:456 utils/adt/date.c:480 +#: utils/adt/xml.c:2027 +#, c-format +msgid "date out of range" +msgstr "날짜가 범위를 벗어남" + +#: utils/adt/date.c:264 utils/adt/timestamp.c:593 +#, c-format +msgid "date field value out of range: %d-%02d-%02d" +msgstr "ë‚ ì§œ í•„ë“œì˜ ê°’ì´ ë²”ìœ„ë¥¼ 벗어남: %d-%02d-%02d" + +#: utils/adt/date.c:271 utils/adt/date.c:280 utils/adt/timestamp.c:599 +#, c-format +msgid "date out of range: %d-%02d-%02d" +msgstr "ë‚ ì§œ 범위가 벗어났ìŒ: %d-%02d-%02d" + +#: utils/adt/date.c:431 +#, c-format +msgid "cannot subtract infinite dates" +msgstr "무한 날짜를 뺄 수 ì—†ìŒ" + +#: utils/adt/date.c:509 utils/adt/date.c:544 utils/adt/date.c:566 +#: utils/adt/date.c:2629 utils/adt/date.c:2643 +#, c-format +msgid "date out of range for timestamp" +msgstr "날짜가 타임스탬프 범위를 벗어남" + +#: utils/adt/date.c:1022 utils/adt/date.c:1068 utils/adt/date.c:1678 +#: utils/adt/date.c:1714 utils/adt/date.c:1748 utils/adt/date.c:2592 +#: utils/adt/datetime.c:1759 utils/adt/formatting.c:3404 +#: utils/adt/formatting.c:3436 utils/adt/formatting.c:3504 +#: utils/adt/json.c:1534 utils/adt/json.c:1556 utils/adt/jsonb.c:823 +#: utils/adt/jsonb.c:847 utils/adt/nabstime.c:455 utils/adt/nabstime.c:498 +#: utils/adt/nabstime.c:528 utils/adt/nabstime.c:571 utils/adt/timestamp.c:224 +#: utils/adt/timestamp.c:268 utils/adt/timestamp.c:726 +#: utils/adt/timestamp.c:735 utils/adt/timestamp.c:817 +#: utils/adt/timestamp.c:857 utils/adt/timestamp.c:3074 +#: utils/adt/timestamp.c:3095 utils/adt/timestamp.c:3108 +#: utils/adt/timestamp.c:3117 utils/adt/timestamp.c:3125 +#: utils/adt/timestamp.c:3180 utils/adt/timestamp.c:3203 +#: utils/adt/timestamp.c:3216 utils/adt/timestamp.c:3227 +#: utils/adt/timestamp.c:3235 utils/adt/timestamp.c:3809 +#: utils/adt/timestamp.c:3938 utils/adt/timestamp.c:3979 +#: utils/adt/timestamp.c:4067 utils/adt/timestamp.c:4113 +#: utils/adt/timestamp.c:4224 utils/adt/timestamp.c:4631 +#: utils/adt/timestamp.c:4747 utils/adt/timestamp.c:4757 +#: utils/adt/timestamp.c:4853 utils/adt/timestamp.c:4972 +#: utils/adt/timestamp.c:4982 utils/adt/timestamp.c:5234 +#: utils/adt/timestamp.c:5248 utils/adt/timestamp.c:5253 +#: utils/adt/timestamp.c:5267 utils/adt/timestamp.c:5316 +#: utils/adt/timestamp.c:5348 utils/adt/timestamp.c:5355 +#: utils/adt/timestamp.c:5381 utils/adt/timestamp.c:5385 +#: utils/adt/timestamp.c:5454 utils/adt/timestamp.c:5458 +#: utils/adt/timestamp.c:5472 utils/adt/timestamp.c:5510 utils/adt/xml.c:2049 +#: utils/adt/xml.c:2056 utils/adt/xml.c:2076 utils/adt/xml.c:2083 +#, c-format +msgid "timestamp out of range" +msgstr "타임스탬프 범위를 벗어남" + +#: utils/adt/date.c:1094 +#, c-format +msgid "cannot convert reserved abstime value to date" +msgstr "ì˜ˆì•½ëœ abstime ê°’ì„ date로 형변환할 수 없습니다." + +#: utils/adt/date.c:1112 utils/adt/date.c:1118 +#, c-format +msgid "abstime out of range for date" +msgstr "abstimeì˜ ë‚ ì§œê°’ì´ ë²”ìœ„ë¥¼ 벗어남" + +#: utils/adt/date.c:1258 utils/adt/date.c:1265 utils/adt/date.c:2082 +#: utils/adt/date.c:2089 +#, c-format +msgid "time out of range" +msgstr "시간 범위를 벗어남" + +#: utils/adt/date.c:1326 utils/adt/timestamp.c:618 +#, c-format +msgid "time field value out of range: %d:%02d:%02g" +msgstr "시간 í•„ë“œì˜ ê°’ì´ ë²”ìœ„ë¥¼ 벗어남: %d:%02d:%02g" + +#: utils/adt/date.c:1960 utils/adt/date.c:1977 +#, c-format +msgid "\"time\" units \"%s\" not recognized" +msgstr "\"%s\" 는 \"time\" ìžë£Œí˜• 단위가 아닙니다." + +#: utils/adt/date.c:2098 +#, c-format +msgid "time zone displacement out of range" +msgstr "타임 ì¡´ 변위가 범위를 벗어남" + +#: utils/adt/date.c:2740 utils/adt/date.c:2757 +#, c-format +msgid "\"time with time zone\" units \"%s\" not recognized" +msgstr "\"%s\" 는 \"time with time zone\" ìžë£Œí˜•ì˜ ë‹¨ìœ„ê°€ 아닙니다." + +#: utils/adt/date.c:2830 utils/adt/datetime.c:995 utils/adt/datetime.c:1917 +#: utils/adt/datetime.c:4743 utils/adt/timestamp.c:532 +#: utils/adt/timestamp.c:559 utils/adt/timestamp.c:5259 +#: utils/adt/timestamp.c:5464 +#, c-format +msgid "time zone \"%s\" not recognized" +msgstr "\"%s\" ì´ë¦„ì˜ ì‹œê°„ëŒ€ëŠ” 없습니다." + +#: utils/adt/date.c:2870 utils/adt/timestamp.c:5301 utils/adt/timestamp.c:5495 +#, c-format +msgid "interval time zone \"%s\" must not include months or days" +msgstr "" +"\"%s\" 시간대 간격(interval time zone) 값으로 달(month) ë˜ëŠ” ì¼(day)ì„ í¬í•¨" +"í•  수 없습니다" + +#: utils/adt/datetime.c:3878 utils/adt/datetime.c:3885 +#, c-format +msgid "date/time field value out of range: \"%s\"" +msgstr "ë‚ ì§œ/시간 í•„ë“œì˜ ê°’ì´ ë²”ìœ„ë¥¼ 벗어남: \"%s\"" + +#: utils/adt/datetime.c:3887 +#, c-format +msgid "Perhaps you need a different \"datestyle\" setting." +msgstr "ë‚ ì§œ 표현 ë°©ì‹(\"datestyle\")ì„ ë‹¤ë¥¸ 것으로 사용하고 있는 듯 합니다." + +#: utils/adt/datetime.c:3892 +#, c-format +msgid "interval field value out of range: \"%s\"" +msgstr "interval í•„ë“œì˜ ê°’ì´ ë²”ìœ„ë¥¼ 벗어남: \"%s\"" + +#: utils/adt/datetime.c:3898 +#, c-format +msgid "time zone displacement out of range: \"%s\"" +msgstr "표준시간대 범위를 벗어남: \"%s\"" + +#. translator: first %s is inet or cidr +#: utils/adt/datetime.c:3905 utils/adt/float.c:461 utils/adt/float.c:544 +#: utils/adt/float.c:570 utils/adt/geo_ops.c:156 utils/adt/geo_ops.c:166 +#: utils/adt/geo_ops.c:178 utils/adt/geo_ops.c:210 utils/adt/geo_ops.c:255 +#: utils/adt/geo_ops.c:265 utils/adt/geo_ops.c:935 utils/adt/geo_ops.c:1321 +#: utils/adt/geo_ops.c:1356 utils/adt/geo_ops.c:1364 utils/adt/geo_ops.c:3430 +#: utils/adt/geo_ops.c:4563 utils/adt/geo_ops.c:4579 utils/adt/geo_ops.c:4586 +#: utils/adt/network.c:58 +#, c-format +msgid "invalid input syntax for type %s: \"%s\"" +msgstr "%s ìžë£Œí˜• 대한 ìž˜ëª»ëœ ìž…ë ¥: \"%s\"" + +#: utils/adt/datetime.c:4745 +#, c-format +msgid "" +"This time zone name appears in the configuration file for time zone " +"abbreviation \"%s\"." +msgstr "" + +#: utils/adt/datum.c:86 utils/adt/datum.c:98 +#, c-format +msgid "invalid Datum pointer" +msgstr "ìž˜ëª»ëœ Datum í¬ì¸í„°" + +#: utils/adt/dbsize.c:110 +#, c-format +msgid "could not open tablespace directory \"%s\": %m" +msgstr "\"%s\" í…Œì´ë¸” 스페ì´ìФ 디렉터리 ì—´ 수 ì—†ìŒ: %m" + +#: utils/adt/dbsize.c:757 utils/adt/dbsize.c:825 +#, c-format +msgid "invalid size: \"%s\"" +msgstr "ìž˜ëª»ëœ í¬ê¸°: \"%s\"" + +#: utils/adt/dbsize.c:826 +#, c-format +msgid "Invalid size unit: \"%s\"." +msgstr "ìž˜ëª»ëœ í¬ê¸° 단위: \"%s\"" + +#: utils/adt/dbsize.c:827 +#, c-format +msgid "Valid units are \"bytes\", \"kB\", \"MB\", \"GB\", and \"TB\"." +msgstr "" +"ì´ ë§¤ê°œ ë³€ìˆ˜ì— ìœ íš¨í•œ 단위는 \"bytes\",\"kB\", \"MB\", \"GB\", \"TB\"입니다." + +#: utils/adt/domains.c:86 +#, c-format +msgid "type %s is not a domain" +msgstr "%s ìžë£Œí˜•ì€ ë„ë©”ì¸ì´ 아닙니다" + +#: utils/adt/encode.c:55 utils/adt/encode.c:91 +#, c-format +msgid "unrecognized encoding: \"%s\"" +msgstr "알 수 없는 ì¸ì½”딩: \"%s\"" + +#: utils/adt/encode.c:150 +#, c-format +msgid "invalid hexadecimal digit: \"%c\"" +msgstr "ìž˜ëª»ëœ 16진수: \"%c\"" + +#: utils/adt/encode.c:178 +#, c-format +msgid "invalid hexadecimal data: odd number of digits" +msgstr "ìž˜ëª»ëœ 16진수 ë°ì´í„°: ë°ì´í„°ì˜ 길ì´ê°€ 홀수 입니다." + +#: utils/adt/encode.c:295 +#, c-format +msgid "unexpected \"=\" while decoding base64 sequence" +msgstr "base64 ìžë£Œë¥¼ 디코딩 하는 중 예ìƒì¹˜ 못한 \"=\" ë¬¸ìž ë°œê²¬" + +#: utils/adt/encode.c:307 +#, c-format +msgid "invalid symbol \"%c\" while decoding base64 sequence" +msgstr "base64 ìžë£Œë¥¼ 디코딩 하는 중 ìž˜ëª»ëœ \"%c\" 기호 발견" + +#: utils/adt/encode.c:327 +#, c-format +msgid "invalid base64 end sequence" +msgstr "base64 마침 ì¡°í•©ì´ ìž˜ëª»ë˜ì—ˆìŒ" + +#: utils/adt/encode.c:328 +#, c-format +msgid "Input data is missing padding, is truncated, or is otherwise corrupted." +msgstr "ìž…ë ¥ê°’ì— ì—¬ë°± ì²˜ë¦¬ê°’ì´ ë¹ ì¡Œê±°ë‚˜, ìžë£Œê°€ ì†ìƒë˜ì—ˆìŠµë‹ˆë‹¤." + +#: utils/adt/encode.c:442 utils/adt/encode.c:507 utils/adt/varlena.c:297 +#: utils/adt/varlena.c:338 +#, c-format +msgid "invalid input syntax for type bytea" +msgstr "bytea ìžë£Œí˜•ì— ëŒ€í•œ ìž˜ëª»ëœ ìž…ë ¥" + +#: utils/adt/enum.c:48 utils/adt/enum.c:58 utils/adt/enum.c:113 +#: utils/adt/enum.c:123 +#, c-format +msgid "invalid input value for enum %s: \"%s\"" +msgstr "%s ì—´ê±°í˜•ì˜ ìž…ë ¥ ê°’ì´ ìž˜ëª»ë¨: \"%s\"" + +#: utils/adt/enum.c:85 utils/adt/enum.c:148 utils/adt/enum.c:198 +#, c-format +msgid "invalid internal value for enum: %u" +msgstr "ì—´ê±°í˜•ì˜ ë‚´ë¶€ ê°’ì´ ìž˜ëª»ë¨: %u" + +#: utils/adt/enum.c:356 utils/adt/enum.c:385 utils/adt/enum.c:425 +#: utils/adt/enum.c:445 +#, c-format +msgid "could not determine actual enum type" +msgstr "실제 ì—´ê±°í˜•ì˜ ìžë£Œí˜•ì„ í™•ì¸í•  수 ì—†ìŒ" + +#: utils/adt/enum.c:364 utils/adt/enum.c:393 +#, c-format +msgid "enum %s contains no values" +msgstr "\"%s\" 열거형 ìžë£Œì— ê°’ì´ ì—†ìŒ" + +#: utils/adt/float.c:58 +#, c-format +msgid "value out of range: overflow" +msgstr "ê°’ì´ ë²”ìœ„ë¥¼ 벗어남: 오버플로" + +#: utils/adt/float.c:63 +#, c-format +msgid "value out of range: underflow" +msgstr "ê°’ì´ ë²”ìœ„ë¥¼ 벗어남: ì–¸ë”플로" + +#: utils/adt/float.c:244 utils/adt/float.c:318 utils/adt/float.c:342 +#, c-format +msgid "invalid input syntax for type real: \"%s\"" +msgstr "real ìžë£Œí˜•ì— ëŒ€í•œ ìž˜ëª»ëœ ìž…ë ¥: \"%s\"" + +#: utils/adt/float.c:312 +#, c-format +msgid "\"%s\" is out of range for type real" +msgstr "\"%s\"는 real ìžë£Œí˜•ì˜ ë²”ìœ„ë¥¼ 벗어납니다." + +#: utils/adt/float.c:537 +#, c-format +msgid "\"%s\" is out of range for type double precision" +msgstr "\"%s\"는 double precision ìžë£Œí˜•ì˜ ë²”ìœ„ë¥¼ 벗어납니다." + +#: utils/adt/float.c:1246 utils/adt/float.c:1304 utils/adt/int.c:349 +#: utils/adt/int.c:775 utils/adt/int.c:804 utils/adt/int.c:825 +#: utils/adt/int.c:845 utils/adt/int.c:879 utils/adt/int.c:1174 +#: utils/adt/int8.c:1323 utils/adt/numeric.c:3000 utils/adt/numeric.c:3009 +#, c-format +msgid "smallint out of range" +msgstr "smallintì˜ ë²”ìœ„ë¥¼ 벗어났습니다." + +#: utils/adt/float.c:1430 utils/adt/numeric.c:7540 +#, c-format +msgid "cannot take square root of a negative number" +msgstr "ìŒìˆ˜ì˜ ì œê³±ê·¼ì„ êµ¬í•  수 없습니다." + +#: utils/adt/float.c:1472 utils/adt/numeric.c:2803 +#, c-format +msgid "zero raised to a negative power is undefined" +msgstr "0ì˜ ìŒìˆ˜ ê±°ë“­ì œê³±ì´ ì •ì˜ë˜ì–´ 있지 않ìŒ" + +#: utils/adt/float.c:1476 utils/adt/numeric.c:2809 +#, c-format +msgid "a negative number raised to a non-integer power yields a complex result" +msgstr "ìŒìˆ˜ì˜ 비정수 ê±°ë“­ì œê³±ì„ ê³„ì‚°í•˜ë©´ 복잡한 결과가 ìƒì„±ë¨" + +#: utils/adt/float.c:1542 utils/adt/float.c:1572 utils/adt/numeric.c:7806 +#, c-format +msgid "cannot take logarithm of zero" +msgstr "0ì˜ ëŒ€ìˆ˜ë¥¼ 구할 수 없습니다." + +#: utils/adt/float.c:1546 utils/adt/float.c:1576 utils/adt/numeric.c:7810 +#, c-format +msgid "cannot take logarithm of a negative number" +msgstr "ìŒìˆ˜ì˜ 대수를 구할 수 없습니다." + +#: utils/adt/float.c:1606 utils/adt/float.c:1636 utils/adt/float.c:1728 +#: utils/adt/float.c:1754 utils/adt/float.c:1781 utils/adt/float.c:1807 +#: utils/adt/float.c:1954 utils/adt/float.c:1989 utils/adt/float.c:2153 +#: utils/adt/float.c:2207 utils/adt/float.c:2271 utils/adt/float.c:2326 +#, c-format +msgid "input is out of range" +msgstr "ìž…ë ¥ê°’ì´ ë²”ìœ„ë¥¼ 벗어났습니다." + +#: utils/adt/float.c:3532 utils/adt/numeric.c:1443 +#, c-format +msgid "count must be greater than zero" +msgstr "카운트 ê°’ì€ 0 보다 커야합니다" + +#: utils/adt/float.c:3537 utils/adt/numeric.c:1450 +#, c-format +msgid "operand, lower bound, and upper bound cannot be NaN" +msgstr "피연산ìž, 하한 ë° ìƒí•œì€ NaNì¼ ìˆ˜ ì—†ìŒ" + +#: utils/adt/float.c:3543 +#, c-format +msgid "lower and upper bounds must be finite" +msgstr "하한 ë° ìƒí•œì€ 유한한 ê°’ì´ì–´ì•¼ 함" + +#: utils/adt/float.c:3581 utils/adt/numeric.c:1463 +#, c-format +msgid "lower bound cannot equal upper bound" +msgstr "í•˜í•œê°’ì€ ìƒí•œê°’ê³¼ ê°™ì„ ìˆ˜ 없습니다" + +#: utils/adt/formatting.c:485 +#, c-format +msgid "invalid format specification for an interval value" +msgstr "간격 ê°’ì— ëŒ€í•œ í˜•ì‹ ì§€ì •ì´ ìž˜ëª»ë¨" + +#: utils/adt/formatting.c:486 +#, c-format +msgid "Intervals are not tied to specific calendar dates." +msgstr "ê°„ê²©ì´ íŠ¹ì • 달력 ë‚ ì§œì— ì—°ê²°ë˜ì–´ 있지 않습니다." + +#: utils/adt/formatting.c:1058 +#, c-format +msgid "\"EEEE\" must be the last pattern used" +msgstr "" + +#: utils/adt/formatting.c:1066 +#, c-format +msgid "\"9\" must be ahead of \"PR\"" +msgstr "???\"9\"는 \"PR\" 앞ì´ì–´ì•¼ 한다." + +#: utils/adt/formatting.c:1082 +#, c-format +msgid "\"0\" must be ahead of \"PR\"" +msgstr "???\"0\"ì€ \"PR\" 앞ì´ì–´ì•¼ 한다." + +#: utils/adt/formatting.c:1109 +#, c-format +msgid "multiple decimal points" +msgstr "???ì—¬ëŸ¬ê°œì˜ ì†Œìˆ«ì " + +#: utils/adt/formatting.c:1113 utils/adt/formatting.c:1196 +#, c-format +msgid "cannot use \"V\" and decimal point together" +msgstr "\"V\" 와 소숫ì ì„ 함께 쓸 수 없습니다." + +#: utils/adt/formatting.c:1125 +#, c-format +msgid "cannot use \"S\" twice" +msgstr "\"S\"를 ë‘ ë²ˆ 사용할 수 ì—†ìŒ" + +#: utils/adt/formatting.c:1129 +#, c-format +msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together" +msgstr "\"S\" 와 \"PL\"/\"MI\"/\"SG\"/\"PR\" 를 함께 쓸 수 없습니다." + +#: utils/adt/formatting.c:1149 +#, c-format +msgid "cannot use \"S\" and \"MI\" together" +msgstr "\"S\" 와 \"MI\" 를 함께 쓸 수 없습니다." + +#: utils/adt/formatting.c:1159 +#, c-format +msgid "cannot use \"S\" and \"PL\" together" +msgstr "\"S\" 와 \"PL\" 를 함께 쓸 수 없습니다." + +#: utils/adt/formatting.c:1169 +#, c-format +msgid "cannot use \"S\" and \"SG\" together" +msgstr "\"S\" 와 \"SG\" 를 함께 쓸 수 없습니다." + +#: utils/adt/formatting.c:1178 +#, c-format +msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together" +msgstr "\"PR\" 와 \"S\"/\"PL\"/\"MI\"/\"SG\" 를 함께 쓸 수 없습니다." + +#: utils/adt/formatting.c:1204 +#, c-format +msgid "cannot use \"EEEE\" twice" +msgstr "\"EEEE\"를 ë‘ ë²ˆ 사용할 수 ì—†ìŒ" + +#: utils/adt/formatting.c:1210 +#, c-format +msgid "\"EEEE\" is incompatible with other formats" +msgstr "\"EEEE\"는 다른 í¬ë§·ê³¼ 호환하지 않습니다" + +#: utils/adt/formatting.c:1211 +#, c-format +msgid "" +"\"EEEE\" may only be used together with digit and decimal point patterns." +msgstr "" + +#: utils/adt/formatting.c:1411 +#, c-format +msgid "\"%s\" is not a number" +msgstr "\"%s\"는 숫ìžê°€ 아닙니다." + +#: utils/adt/formatting.c:1512 utils/adt/formatting.c:1564 +#, c-format +msgid "could not determine which collation to use for lower() function" +msgstr "lower() 함수ì—서 사용할 정렬규칙(collation)ì„ ê²°ì •í•  수 ì—†ìŒ" + +#: utils/adt/formatting.c:1632 utils/adt/formatting.c:1684 +#, c-format +msgid "could not determine which collation to use for upper() function" +msgstr "upper() 함수ì—서 사용할 정렬규칙(collation)ì„ ê²°ì •í•  수 ì—†ìŒ" + +#: utils/adt/formatting.c:1753 utils/adt/formatting.c:1817 +#, c-format +msgid "could not determine which collation to use for initcap() function" +msgstr "initcap() 함수ì—서 사용할 정렬규칙(collation)ì„ ê²°ì •í•  수 ì—†ìŒ" + +#: utils/adt/formatting.c:2114 +#, c-format +msgid "invalid combination of date conventions" +msgstr "ë‚ ì§œ ë³€í™˜ì„ ìœ„í•œ ìž˜ëª»ëœ ì¡°í•©" + +#: utils/adt/formatting.c:2115 +#, c-format +msgid "" +"Do not mix Gregorian and ISO week date conventions in a formatting template." +msgstr "" +"í˜•ì‹ í…œí”Œë¦¿ì— ê·¸ë ˆê³ ë¦¬ì˜¤ë ¥ê³¼ ISO week date ë³€í™˜ì„ í•¨ê»˜ 사용하지 마십시오." + +#: utils/adt/formatting.c:2132 +#, c-format +msgid "conflicting values for \"%s\" field in formatting string" +msgstr "í˜•ì‹ ë¬¸ìžì—´ì—서 \"%s\" í•„ë“œì˜ ê°’ì´ ì¶©ëŒí•¨" + +#: utils/adt/formatting.c:2134 +#, c-format +msgid "This value contradicts a previous setting for the same field type." +msgstr "ì´ ê°’ì€ ë™ì¼í•œ 필드 형ì‹ì˜ ì´ì „ 설정과 모순ë©ë‹ˆë‹¤." + +#: utils/adt/formatting.c:2195 +#, c-format +msgid "source string too short for \"%s\" formatting field" +msgstr "소스 문ìžì—´ì´ 너무 짧아서 \"%s\" í˜•ì‹ í•„ë“œì— ì‚¬ìš©í•  수 ì—†ìŒ" + +#: utils/adt/formatting.c:2197 +#, c-format +msgid "Field requires %d characters, but only %d remain." +msgstr "í•„ë“œì— %dìžê°€ í•„ìš”í•œë° %dìžë§Œ 남았습니다." + +#: utils/adt/formatting.c:2200 utils/adt/formatting.c:2214 +#, c-format +msgid "" +"If your source string is not fixed-width, try using the \"FM\" modifier." +msgstr "소스 문ìžì—´ì´ ê³ ì • 너비가 아닌 경우 \"FM\" 한정ìžë¥¼ 사용해 보십시오." + +#: utils/adt/formatting.c:2210 utils/adt/formatting.c:2223 +#: utils/adt/formatting.c:2353 +#, c-format +msgid "invalid value \"%s\" for \"%s\"" +msgstr "\"%s\" ê°’ì€ \"%s\"ì— ìœ íš¨í•˜ì§€ 않ìŒ" + +#: utils/adt/formatting.c:2212 +#, c-format +msgid "Field requires %d characters, but only %d could be parsed." +msgstr "í•„ë“œì— %dìžê°€ í•„ìš”í•œë° %dìžë§Œ 구문 ë¶„ì„í•  수 있습니다." + +#: utils/adt/formatting.c:2225 +#, c-format +msgid "Value must be an integer." +msgstr "ê°’ì€ ì •ìˆ˜ì—¬ì•¼ 합니다." + +#: utils/adt/formatting.c:2230 +#, c-format +msgid "value for \"%s\" in source string is out of range" +msgstr "소스 문ìžì—´ì˜ \"%s\" ê°’ì´ ë²”ìœ„ë¥¼ 벗어남" + +#: utils/adt/formatting.c:2232 +#, c-format +msgid "Value must be in the range %d to %d." +msgstr "ê°’ì€ %dì—서 %d 사ì´ì˜ ë²”ìœ„ì— ìžˆì–´ì•¼ 합니다." + +#: utils/adt/formatting.c:2355 +#, c-format +msgid "The given value did not match any of the allowed values for this field." +msgstr "ì§€ì •ëœ ê°’ì´ ì´ í•„ë“œì— í—ˆìš©ë˜ëŠ” ê°’ê³¼ ì¼ì¹˜í•˜ì§€ 않습니다." + +#: utils/adt/formatting.c:2550 utils/adt/formatting.c:2570 +#: utils/adt/formatting.c:2590 utils/adt/formatting.c:2610 +#: utils/adt/formatting.c:2629 utils/adt/formatting.c:2648 +#: utils/adt/formatting.c:2672 utils/adt/formatting.c:2690 +#: utils/adt/formatting.c:2708 utils/adt/formatting.c:2726 +#: utils/adt/formatting.c:2743 utils/adt/formatting.c:2760 +#, c-format +msgid "localized string format value too long" +msgstr "" + +#: utils/adt/formatting.c:3047 +#, c-format +msgid "\"TZ\"/\"tz\"/\"OF\" format patterns are not supported in to_date" +msgstr "\"TZ\"/\"tz\"\"OF\" í˜•ì‹ íŒ¨í„´ì€ to_dateì—서 ì§€ì›ë˜ì§€ 않ìŒ" + +#: utils/adt/formatting.c:3156 +#, c-format +msgid "invalid input string for \"Y,YYY\"" +msgstr "\"Y,YYY\"ì— ëŒ€í•œ ìž…ë ¥ 문ìžì—´ì´ 잘못ë¨" + +#: utils/adt/formatting.c:3668 +#, c-format +msgid "hour \"%d\" is invalid for the 12-hour clock" +msgstr "시간 \"%d\"ì€(는) 12ì‹œê°„ì œì— ìœ íš¨í•˜ì§€ 않ìŒ" + +#: utils/adt/formatting.c:3670 +#, c-format +msgid "Use the 24-hour clock, or give an hour between 1 and 12." +msgstr "24시간제를 사용하거나 1ì—서 12 사ì´ì˜ ì‹œê°„ì„ ì§€ì •í•˜ì‹­ì‹œì˜¤." + +#: utils/adt/formatting.c:3765 +#, c-format +msgid "cannot calculate day of year without year information" +msgstr "ì—°ë„ ì •ë³´ ì—†ì´ ëª‡ë²ˆì§¸ ë‚ (day of year) ì¸ì§€ 계산할 수 없습니다." + +#: utils/adt/formatting.c:4614 +#, c-format +msgid "\"EEEE\" not supported for input" +msgstr "\"EEEE\" ìž…ë ¥ ì–‘ì‹ì€ ì§€ì›ë˜ì§€ 않습니다." + +#: utils/adt/formatting.c:4626 +#, c-format +msgid "\"RN\" not supported for input" +msgstr "\"RN\" ìž…ë ¥ ì–‘ì‹ì€ ì§€ì›ë˜ì§€ 않습니다." + +#: utils/adt/genfile.c:62 +#, c-format +msgid "reference to parent directory (\"..\") not allowed" +msgstr "ìƒìœ„ 디렉터리(\"..\") 참조는 허용ë˜ì§€ 않ìŒ" + +#: utils/adt/genfile.c:73 +#, c-format +msgid "absolute path not allowed" +msgstr "절대 경로는 허용하지 않ìŒ" + +#: utils/adt/genfile.c:78 +#, c-format +msgid "path must be in or below the current directory" +msgstr "경로는 현재 디렉토리와 ê·¸ 하위 디렉터리여야 합니다." + +#: utils/adt/genfile.c:125 utils/adt/oracle_compat.c:184 +#: utils/adt/oracle_compat.c:282 utils/adt/oracle_compat.c:758 +#: utils/adt/oracle_compat.c:1059 +#, c-format +msgid "requested length too large" +msgstr "ìš”ì²­ëœ ê¸¸ì´ê°€ 너무 ê¹ë‹ˆë‹¤" + +#: utils/adt/genfile.c:142 +#, c-format +msgid "could not seek in file \"%s\": %m" +msgstr "\"%s\" 파ì¼ì—서 seek ìž‘ì—…ì„ í•  수 ì—†ìŒ: %m" + +#: utils/adt/genfile.c:200 utils/adt/genfile.c:241 +#, c-format +msgid "must be superuser to read files" +msgstr "파ì¼ì„ ì½ìœ¼ë ¤ë©´ 슈í¼ìœ ì ¸ì—¬ì•¼í•¨" + +#: utils/adt/genfile.c:318 +#, c-format +msgid "must be superuser to get file information" +msgstr "íŒŒì¼ ì •ë³´ë¥¼ 보려면 superuser여야함" + +#: utils/adt/genfile.c:404 +#, c-format +msgid "must be superuser to get directory listings" +msgstr "디렉터리 목ë¡ì„ 보려면 superuser여야함" + +#: utils/adt/geo_ops.c:940 +#, c-format +msgid "invalid line specification: A and B cannot both be zero" +msgstr "ì„  ì •ì˜ê°€ 잘못ë¨: A와 B 둘다 0ì¼ ìˆ˜ëŠ” ì—†ìŒ" + +#: utils/adt/geo_ops.c:948 +#, c-format +msgid "invalid line specification: must be two distinct points" +msgstr "ì„  ì •ì˜ê°€ 잘못ëœ: ë‘ ì ì€ 서로 다른 위치여야 함" + +#: utils/adt/geo_ops.c:1342 utils/adt/geo_ops.c:3440 utils/adt/geo_ops.c:4253 +#: utils/adt/geo_ops.c:5181 +#, c-format +msgid "too many points requested" +msgstr "너무 ë§Žì€ ì ë“¤ì´ 요청ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: utils/adt/geo_ops.c:1404 +#, c-format +msgid "invalid number of points in external \"path\" value" +msgstr "???\"path\" ì˜ ê°’ì— ìž˜ëª»ëœ ê°¯ìˆ˜ì˜ point들" + +#: utils/adt/geo_ops.c:2555 +#, c-format +msgid "function \"dist_lb\" not implemented" +msgstr "\"dist_lb\" 함수는 구현ë˜ì§€ 않았습니다." + +#: utils/adt/geo_ops.c:3015 +#, c-format +msgid "function \"close_sl\" not implemented" +msgstr "\"close_sl\" 함수는 구현ë˜ì§€ 않았습니다." + +#: utils/adt/geo_ops.c:3117 +#, c-format +msgid "function \"close_lb\" not implemented" +msgstr "\"close_lb\" 함수는 구현ë˜ì§€ 않았습니다." + +#: utils/adt/geo_ops.c:3406 +#, c-format +msgid "cannot create bounding box for empty polygon" +msgstr "???í´ë¦¬ê³¤ ì—†ì´ ë‹«ížŒ ìƒìžë¥¼ ìƒì„±í•  수 없습니다." + +#: utils/adt/geo_ops.c:3487 +#, c-format +msgid "invalid number of points in external \"polygon\" value" +msgstr "???\"polygon\" ê°’ì— ìž˜ëª»ëœ ê°¯ìˆ˜ì˜ point들" + +#: utils/adt/geo_ops.c:4012 +#, c-format +msgid "function \"poly_distance\" not implemented" +msgstr "\"poly_distance\" 함수는 구현ë˜ì§€ 않았습니다." + +#: utils/adt/geo_ops.c:4365 +#, c-format +msgid "function \"path_center\" not implemented" +msgstr "\"path_center\" 함수는 구현ë˜ì§€ 않았습니다." + +#: utils/adt/geo_ops.c:4382 +#, c-format +msgid "open path cannot be converted to polygon" +msgstr "닫히지 ì•Šì€ path 는 í´ë¦¬ê³¤ìœ¼ë¡œ 변환할 수 없습니다." + +#: utils/adt/geo_ops.c:4631 +#, c-format +msgid "invalid radius in external \"circle\" value" +msgstr "ë¶€ì ì ˆí•œ \"circle\" ê°’ì˜ ë°˜ì§€ë¦„" + +#: utils/adt/geo_ops.c:5167 +#, c-format +msgid "cannot convert circle with radius zero to polygon" +msgstr "ë°˜ì§€ë¦„ì´ 0ì¸ ì›ì€ í´ë¦¬ê³¤ìœ¼ë¡œ 변환할 수 없습니다." + +#: utils/adt/geo_ops.c:5172 +#, c-format +msgid "must request at least 2 points" +msgstr "ì ì–´ë„ 2ê°œì˜ pointë“¤ì´ í•„ìš”í•©ë‹ˆë‹¤." + +#: utils/adt/geo_ops.c:5216 +#, c-format +msgid "cannot convert empty polygon to circle" +msgstr "비어있는 í´ë¦¬ê³¤ì„ ì›ìœ¼ë¡œ 변환할 수 없습니다." + +#: utils/adt/int.c:162 +#, c-format +msgid "int2vector has too many elements" +msgstr "int2vector 는 너무 ë§Žì€ ìš”ì†Œë¥¼ 가지고 있습니다." + +#: utils/adt/int.c:237 +#, c-format +msgid "invalid int2vector data" +msgstr "ìž˜ëª»ëœ int2vector ìžë£Œ" + +#: utils/adt/int.c:243 utils/adt/oid.c:212 utils/adt/oid.c:293 +#, c-format +msgid "oidvector has too many elements" +msgstr "oidvectorì— ë„ˆë¬´ ë§Žì€ ìš”ì†Œê°€ 있습니다" + +#: utils/adt/int.c:1362 utils/adt/int8.c:1460 utils/adt/numeric.c:1351 +#: utils/adt/timestamp.c:5561 utils/adt/timestamp.c:5642 +#, c-format +msgid "step size cannot equal zero" +msgstr "단계 í¬ê¸°ëŠ” 0ì¼ ìˆ˜ ì—†ìŒ" + +#: utils/adt/int8.c:98 utils/adt/int8.c:133 utils/adt/numutils.c:51 +#: utils/adt/numutils.c:61 utils/adt/numutils.c:103 +#, c-format +msgid "invalid input syntax for integer: \"%s\"" +msgstr "ìž˜ëª»ëœ integer ìžë£Œí˜• ìž…ë ¥ 구문: \"%s\"" + +#: utils/adt/int8.c:114 +#, c-format +msgid "value \"%s\" is out of range for type bigint" +msgstr "입력한 \"%s\" ê°’ì€ bigint ìžë£Œí˜• 범위를 초과했습니다" + +#: utils/adt/int8.c:500 utils/adt/int8.c:529 utils/adt/int8.c:550 +#: utils/adt/int8.c:581 utils/adt/int8.c:615 utils/adt/int8.c:640 +#: utils/adt/int8.c:697 utils/adt/int8.c:714 utils/adt/int8.c:741 +#: utils/adt/int8.c:758 utils/adt/int8.c:834 utils/adt/int8.c:855 +#: utils/adt/int8.c:882 utils/adt/int8.c:915 utils/adt/int8.c:943 +#: utils/adt/int8.c:964 utils/adt/int8.c:991 utils/adt/int8.c:1031 +#: utils/adt/int8.c:1052 utils/adt/int8.c:1079 utils/adt/int8.c:1112 +#: utils/adt/int8.c:1140 utils/adt/int8.c:1161 utils/adt/int8.c:1188 +#: utils/adt/int8.c:1361 utils/adt/int8.c:1400 utils/adt/numeric.c:2955 +#: utils/adt/varbit.c:1655 +#, c-format +msgid "bigint out of range" +msgstr "bigintì˜ ë²”ìœ„ë¥¼ 벗어났습니다." + +#: utils/adt/int8.c:1417 +#, c-format +msgid "OID out of range" +msgstr "OIDì˜ ë²”ìœ„ë¥¼ 벗어났습니다." + +#: utils/adt/json.c:785 utils/adt/json.c:825 utils/adt/json.c:840 +#: utils/adt/json.c:851 utils/adt/json.c:861 utils/adt/json.c:912 +#: utils/adt/json.c:943 utils/adt/json.c:961 utils/adt/json.c:973 +#: utils/adt/json.c:985 utils/adt/json.c:1130 utils/adt/json.c:1144 +#: utils/adt/json.c:1155 utils/adt/json.c:1163 utils/adt/json.c:1171 +#: utils/adt/json.c:1179 utils/adt/json.c:1187 utils/adt/json.c:1195 +#: utils/adt/json.c:1203 utils/adt/json.c:1211 utils/adt/json.c:1241 +#, c-format +msgid "invalid input syntax for type json" +msgstr "json ìžë£Œí˜•ì— ëŒ€í•œ ìž˜ëª»ëœ ìž…ë ¥" + +#: utils/adt/json.c:786 +#, c-format +msgid "Character with value 0x%02x must be escaped." +msgstr "" + +#: utils/adt/json.c:826 +#, c-format +msgid "\"\\u\" must be followed by four hexadecimal digits." +msgstr "\"\\u\" í‘œê¸°ë²•ì€ ë’¤ì— 4ê°œì˜ 16진수가 와야합니다." + +#: utils/adt/json.c:841 +#, c-format +msgid "Unicode high surrogate must not follow a high surrogate." +msgstr "" + +#: utils/adt/json.c:852 utils/adt/json.c:862 utils/adt/json.c:913 +#: utils/adt/json.c:974 utils/adt/json.c:986 +#, c-format +msgid "Unicode low surrogate must follow a high surrogate." +msgstr "" + +#: utils/adt/json.c:877 utils/adt/json.c:900 +#, c-format +msgid "unsupported Unicode escape sequence" +msgstr "ì§€ì›í•˜ì§€ 않는 유니코드 ì´ìŠ¤ì¼€ì´í”„ ì¡°í•©" + +#: utils/adt/json.c:878 +#, c-format +msgid "\\u0000 cannot be converted to text." +msgstr "\\u0000 ê°’ì€ text 형으로 변환할 수 ì—†ìŒ." + +#: utils/adt/json.c:901 +#, c-format +msgid "" +"Unicode escape values cannot be used for code point values above 007F when " +"the server encoding is not UTF8." +msgstr "" +"서버 ì¸ì½”ë”©ì´ UTF8ì´ ì•„ë‹Œ 경우 007F보다 í° ì½”ë“œ ì§€ì  ê°’ì—는 유니코드 ì´ìŠ¤ì¼€ì´" +"프 ê°’ì„ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: utils/adt/json.c:944 utils/adt/json.c:962 +#, c-format +msgid "Escape sequence \"\\%s\" is invalid." +msgstr "ìž˜ëª»ëœ ì´ìŠ¤ì¼€ì´í”„ ì¡°í•©: \"\\%s\"" + +#: utils/adt/json.c:1131 +#, c-format +msgid "The input string ended unexpectedly." +msgstr "ìž…ë ¥ 문ìžì—´ì´ 예ìƒì¹˜ 않게 ë났ìŒ." + +#: utils/adt/json.c:1145 +#, c-format +msgid "Expected end of input, but found \"%s\"." +msgstr "ìž…ë ¥ ìžë£Œì˜ ëì„ ê¸°ëŒ€í–ˆëŠ”ë°, \"%s\" ê°’ì´ ë” ìžˆìŒ." + +#: utils/adt/json.c:1156 +#, c-format +msgid "Expected JSON value, but found \"%s\"." +msgstr "JSON ê°’ì„ ê¸°ëŒ€í–ˆëŠ”ë°, \"%s\" ê°’ìž„" + +#: utils/adt/json.c:1164 utils/adt/json.c:1212 +#, c-format +msgid "Expected string, but found \"%s\"." +msgstr "문ìžì—´ ê°’ì„ ê¸°ëŒ€í–ˆëŠ”ë°, \"%s\" ê°’ìž„" + +#: utils/adt/json.c:1172 +#, c-format +msgid "Expected array element or \"]\", but found \"%s\"." +msgstr "\"]\" ê°€ í•„ìš”í•œë° \"%s\"ì´(ê°€) 있ìŒ" + +#: utils/adt/json.c:1180 +#, c-format +msgid "Expected \",\" or \"]\", but found \"%s\"." +msgstr "\",\" ë˜ëŠ” \"]\"ê°€ í•„ìš”í•œë° \"%s\"ì´(ê°€) 있ìŒ" + +#: utils/adt/json.c:1188 +#, c-format +msgid "Expected string or \"}\", but found \"%s\"." +msgstr "\"}\"ê°€ í•„ìš”í•œë° \"%s\"ì´(ê°€) 있ìŒ" + +#: utils/adt/json.c:1196 +#, c-format +msgid "Expected \":\", but found \"%s\"." +msgstr "\":\"ê°€ í•„ìš”í•œë° \"%s\"ì´(ê°€) 있ìŒ" + +#: utils/adt/json.c:1204 +#, c-format +msgid "Expected \",\" or \"}\", but found \"%s\"." +msgstr "\",\" ë˜ëŠ” \"}\"ê°€ í•„ìš”í•œë° \"%s\"ì´(ê°€) 있ìŒ" + +#: utils/adt/json.c:1242 +#, c-format +msgid "Token \"%s\" is invalid." +msgstr "ìž˜ëª»ëœ í† í°: \"%s\"" + +#: utils/adt/json.c:1314 +#, c-format +msgid "JSON data, line %d: %s%s%s" +msgstr "JSON ìžë£Œ, %d 번째 줄: %s%s%s" + +#: utils/adt/json.c:1469 utils/adt/jsonb.c:724 +#, c-format +msgid "key value must be scalar, not array, composite, or json" +msgstr "" +"키 ê°’ì€ ìŠ¤ì¹¼ë¼ í˜•ì´ì–´ì•¼ 함. ë°°ì—´, 복합 ìžë£Œí˜•, json í˜•ì€ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: utils/adt/json.c:2006 +#, c-format +msgid "could not determine data type for argument 1" +msgstr "첫번째 매개 ë³€ìˆ˜ì˜ ìžë£Œí˜•ì„ ì•Œìˆ˜ê°€ 없습니다." + +#: utils/adt/json.c:2016 +#, c-format +msgid "could not determine data type for argument 2" +msgstr "ë‘번째 매개 ë³€ìˆ˜ì˜ ìžë£Œí˜•ì„ ì•Œìˆ˜ê°€ 없습니다." + +#: utils/adt/json.c:2040 utils/adt/jsonb.c:1781 +#, c-format +msgid "field name must not be null" +msgstr "필드 ì´ë¦„ì´ null ì´ë©´ 안ë©ë‹ˆë‹¤" + +#: utils/adt/json.c:2117 +#, c-format +msgid "argument list must have even number of elements" +msgstr "ì¸ìž 목ë¡ì€ ìš”ì†Œìˆ˜ì˜ ì§ìˆ˜ê°œì—¬ì•¼ 합니다." + +#: utils/adt/json.c:2118 +#, c-format +msgid "" +"The arguments of json_build_object() must consist of alternating keys and " +"values." +msgstr "" +"json_build_object() í•¨ìˆ˜ì˜ ì¸ìžë“¤ì€ ê°ê° key, value ìŒìœ¼ë¡œ 있어야 합니다." + +#: utils/adt/json.c:2142 utils/adt/json.c:2163 utils/adt/json.c:2222 +#, c-format +msgid "could not determine data type for argument %d" +msgstr "%d번째 ì¸ìžì˜ ìžë£Œí˜•ì„ ì•Œìˆ˜ê°€ 없습니다." + +#: utils/adt/json.c:2148 +#, c-format +msgid "argument %d cannot be null" +msgstr "%d 번째 ì¸ìžëŠ” null ì´ë©´ 안ë©ë‹ˆë‹¤" + +#: utils/adt/json.c:2149 +#, c-format +msgid "Object keys should be text." +msgstr "ê°ì²´ 키는 문ìžì—´ì´ì–´ì•¼ 합니다." + +#: utils/adt/json.c:2284 utils/adt/jsonb.c:1363 +#, c-format +msgid "array must have two columns" +msgstr "ë°°ì—´ì€ ë‘ê°œì˜ ì¹¼ëŸ¼ì´ì–´ì•¼ 함" + +#: utils/adt/json.c:2308 utils/adt/json.c:2392 utils/adt/jsonb.c:1387 +#: utils/adt/jsonb.c:1482 +#, c-format +msgid "null value not allowed for object key" +msgstr "ê°ì²´ 키 값으로 null ì„ í—ˆìš©í•˜ì§€ 않ìŒ" + +#: utils/adt/json.c:2381 utils/adt/jsonb.c:1471 +#, c-format +msgid "mismatched array dimensions" +msgstr "ë°°ì—´ 차수가 안맞ìŒ" + +#: utils/adt/jsonb.c:257 +#, c-format +msgid "string too long to represent as jsonb string" +msgstr "jsonb 문ìžì—´ë¡œ 길ì´ë¥¼ 초과함" + +#: utils/adt/jsonb.c:258 +#, c-format +msgid "" +"Due to an implementation restriction, jsonb strings cannot exceed %d bytes." +msgstr "êµ¬í˜„ìƒ ì œí•œìœ¼ë¡œ jsonb 문ìžì—´ì€ %d ë°”ì´íŠ¸ë¥¼ ë„˜ì„ ìˆ˜ 없습니다." + +#: utils/adt/jsonb.c:1182 +#, c-format +msgid "invalid number of arguments: object must be matched key value pairs" +msgstr "ìž˜ëª»ëœ ì¸ìž 번호: ê°ì²´ëŠ” key - value ìŒìœ¼ë¡œ 구성ë˜ì–´ì•¼ 합니다" + +#: utils/adt/jsonb.c:1195 +#, c-format +msgid "argument %d: key must not be null" +msgstr "%d 번째 ì¸ìž: 키 ê°’ì€ nullì´ë©´ 안ë©ë‹ˆë‹¤." + +#: utils/adt/jsonb.c:1214 utils/adt/jsonb.c:1237 utils/adt/jsonb.c:1297 +#, c-format +msgid "argument %d: could not determine data type" +msgstr "%d 번째 ì¸ìž: ìžë£Œí˜•ì„ íŒŒì•…í•  수 ì—†ìŒ" + +#: utils/adt/jsonb.c:1834 +#, c-format +msgid "object keys must be strings" +msgstr "ê°ì²´ 키는 문ìžì—´ì´ì–´ì•¼ 합니다" + +#: utils/adt/jsonb_util.c:656 +#, c-format +msgid "number of jsonb object pairs exceeds the maximum allowed (%zu)" +msgstr "jsonb ê°ì²´ ìŒì˜ 개수가 최대치를 초과함 (%zu)" + +#: utils/adt/jsonb_util.c:697 +#, c-format +msgid "number of jsonb array elements exceeds the maximum allowed (%zu)" +msgstr "jsonb ë°°ì—´ 요소 개수가 최대치를 초과함 (%zu)" + +#: utils/adt/jsonb_util.c:1525 utils/adt/jsonb_util.c:1545 +#, c-format +msgid "total size of jsonb array elements exceeds the maximum of %u bytes" +msgstr "jsonb ë°°ì—´ 요소 ì´ í¬ê¸°ê°€ 최대치를 초과함 (%u ë°”ì´íЏ)" + +#: utils/adt/jsonb_util.c:1606 utils/adt/jsonb_util.c:1641 +#: utils/adt/jsonb_util.c:1661 +#, c-format +msgid "total size of jsonb object elements exceeds the maximum of %u bytes" +msgstr "jsonb ê°ì²´ ìš”ì†Œë“¤ì˜ ì´ í¬ê¸°ê°€ 최대치를 초과함 (%u ë°”ì´íЏ)" + +#: utils/adt/jsonfuncs.c:305 utils/adt/jsonfuncs.c:470 +#: utils/adt/jsonfuncs.c:2057 utils/adt/jsonfuncs.c:2498 +#: utils/adt/jsonfuncs.c:3004 +#, c-format +msgid "cannot call %s on a scalar" +msgstr "스칼ë¼í˜•ì—서는 %s 호출 í•  수 ì—†ìŒ" + +#: utils/adt/jsonfuncs.c:310 utils/adt/jsonfuncs.c:457 +#: utils/adt/jsonfuncs.c:2487 +#, c-format +msgid "cannot call %s on an array" +msgstr "배열형ì—서는 %s 호출 í•  수 ì—†ìŒ" + +#: utils/adt/jsonfuncs.c:1373 utils/adt/jsonfuncs.c:1408 +#, c-format +msgid "cannot get array length of a scalar" +msgstr "스칼ë¼í˜•ì˜ ë°°ì—´ 길ì´ë¥¼ 구할 수 ì—†ìŒ" + +#: utils/adt/jsonfuncs.c:1377 utils/adt/jsonfuncs.c:1396 +#, c-format +msgid "cannot get array length of a non-array" +msgstr "비배열형 ìžë£Œì˜ ë°°ì—´ 길ì´ë¥¼ 구할 수 ì—†ìŒ" + +#: utils/adt/jsonfuncs.c:1473 +#, c-format +msgid "cannot call %s on a non-object" +msgstr "비ê°ì²´í˜•ì—서 %s 호출 í•  수 ì—†ìŒ" + +#: utils/adt/jsonfuncs.c:1491 utils/adt/jsonfuncs.c:2170 +#: utils/adt/jsonfuncs.c:2707 +#, c-format +msgid "" +"function returning record called in context that cannot accept type record" +msgstr "반환 ìžë£Œí˜•ì´ recordì¸ë° 함수가 ê·¸ ìžë£Œí˜•으로 반환하지 않ìŒ" + +#: utils/adt/jsonfuncs.c:1730 +#, c-format +msgid "cannot deconstruct an array as an object" +msgstr "" + +#: utils/adt/jsonfuncs.c:1742 +#, c-format +msgid "cannot deconstruct a scalar" +msgstr "스칼ë¼í˜•으로 재구축할 수 ì—†ìŒ" + +#: utils/adt/jsonfuncs.c:1788 +#, c-format +msgid "cannot extract elements from a scalar" +msgstr "스칼ë¼í˜•ì—서 요소를 추출할 수 ì—†ìŒ" + +#: utils/adt/jsonfuncs.c:1792 +#, c-format +msgid "cannot extract elements from an object" +msgstr "ê°ì²´í˜•ì—서 요소를 추출할 수 ì—†ìŒ" + +#: utils/adt/jsonfuncs.c:2044 utils/adt/jsonfuncs.c:2803 +#, c-format +msgid "cannot call %s on a non-array" +msgstr "비배열형ì—서 %s 호출 í•  수 ì—†ìŒ" + +#: utils/adt/jsonfuncs.c:2131 utils/adt/jsonfuncs.c:2683 +#, c-format +msgid "first argument of %s must be a row type" +msgstr "%sì˜ ì²«ë²ˆì§¸ ì¸ìžëŠ” row 형ì´ì–´ì•¼ 합니다" + +#: utils/adt/jsonfuncs.c:2172 +#, c-format +msgid "" +"Try calling the function in the FROM clause using a column definition list." +msgstr "함수를 호출 í•  때 FROM ì ˆì—서 칼럼 ì •ì˜ ëª©ë¡ë„ 함께 지정해야 합니다." + +#: utils/adt/jsonfuncs.c:2819 utils/adt/jsonfuncs.c:2986 +#, c-format +msgid "argument of %s must be an array of objects" +msgstr "%sì˜ ì¸ìžëŠ” ê°ì²´ì˜ ë°°ì—´ì´ì–´ì•¼ 합니다" + +#: utils/adt/jsonfuncs.c:2843 +#, c-format +msgid "cannot call %s on an object" +msgstr "ê°ì²´ì—서 %s 호출할 수 ì—†ìŒ" + +#: utils/adt/jsonfuncs.c:3410 utils/adt/jsonfuncs.c:3463 +#, c-format +msgid "cannot delete from scalar" +msgstr "스칼ë¼í˜•ì—서 ì‚­ì œ í•  수 ì—†ìŒ" + +#: utils/adt/jsonfuncs.c:3468 +#, c-format +msgid "cannot delete from object using integer index" +msgstr "ì¸ë±ìФ 번호를 사용해서 ê°ì²´ì—서 ì‚­ì œ í•  수 ì—†ìŒ" + +#: utils/adt/jsonfuncs.c:3534 utils/adt/jsonfuncs.c:3626 +#, c-format +msgid "cannot set path in scalar" +msgstr "스칼ë¼í˜•ì—는 path 를 지정할 수 ì—†ìŒ" + +#: utils/adt/jsonfuncs.c:3579 +#, c-format +msgid "cannot delete path in scalar" +msgstr "스칼ë¼í˜•ì—서 path를 지울 수 ì—†ìŒ" + +#: utils/adt/jsonfuncs.c:3749 +#, c-format +msgid "invalid concatenation of jsonb objects" +msgstr "jsonb ê°ì²´ë“¤ì˜ ìž˜ëª»ëœ ê²°í•©" + +#: utils/adt/jsonfuncs.c:3783 +#, c-format +msgid "path element at position %d is null" +msgstr "%d ìœ„ì¹˜ì˜ path 요소는 null 입니다." + +#: utils/adt/jsonfuncs.c:3869 +#, c-format +msgid "cannot replace existing key" +msgstr "ì´ë¯¸ 있는 키로는 대체할 수 ì—†ìŒ" + +#: utils/adt/jsonfuncs.c:3870 +#, c-format +msgid "Try using the function jsonb_set to replace key value." +msgstr "키 ê°’ì„ ë³€ê²½í•˜ë ¤ë©´, jsonb_set 함수를 사용하세요." + +#: utils/adt/jsonfuncs.c:3952 +#, c-format +msgid "path element at position %d is not an integer: \"%s\"" +msgstr "%d 번째 ìœ„ì¹˜ì˜ path 요소는 정수가 아님: \"%s\"" + +#: utils/adt/levenshtein.c:133 +#, c-format +msgid "levenshtein argument exceeds maximum length of %d characters" +msgstr "levenshtein ì¸ìžê°’으로 ê·¸ 길ì´ê°€ %d 문ìžì˜ 최대 길ì´ë¥¼ 초과했ìŒ" + +#: utils/adt/like.c:212 utils/adt/selfuncs.c:5333 +#, c-format +msgid "could not determine which collation to use for ILIKE" +msgstr "ILIKE ì—°ì‚°ì—서 사용할 정렬규칙(collation)ì„ ê²°ì •í•  수 ì—†ìŒ" + +#: utils/adt/like_match.c:107 utils/adt/like_match.c:167 +#, c-format +msgid "LIKE pattern must not end with escape character" +msgstr "LIKE íŒ¨í„´ì€ ì´ìŠ¤ì¼€ì´í”„ 문ìžë¡œ ë나지 않아야 함" + +#: utils/adt/like_match.c:292 utils/adt/regexp.c:698 +#, c-format +msgid "invalid escape string" +msgstr "ìž˜ëª»ëœ ì´ìŠ¤ì¼€ì´í”„ 문ìžì—´" + +#: utils/adt/like_match.c:293 utils/adt/regexp.c:699 +#, c-format +msgid "Escape string must be empty or one character." +msgstr "ì´ìŠ¤ì¼€ì´í”„ 문ìžì—´ì€ 비어있거나 í•œê°œì˜ ë¬¸ìžì—¬ì•¼ 합니다." + +#: utils/adt/lockfuncs.c:545 +#, c-format +msgid "cannot use advisory locks during a parallel operation" +msgstr "병렬 작업 중ì—는 ìžë¬¸ ìžê¸ˆì„ 사용할 없습니다" + +#: utils/adt/mac.c:68 +#, c-format +msgid "invalid input syntax for type macaddr: \"%s\"" +msgstr "macaddr ìžë£Œí˜•ì— ëŒ€í•œ ìž˜ëª»ëœ ìž…ë ¥: \"%s\"" + +#: utils/adt/mac.c:75 +#, c-format +msgid "invalid octet value in \"macaddr\" value: \"%s\"" +msgstr "\"macaddr\"ì— ëŒ€í•œ ìž˜ëª»ëœ ì˜¥í…Ÿ(octet) ê°’: \"%s\"" + +#: utils/adt/misc.c:239 +#, c-format +msgid "PID %d is not a PostgreSQL server process" +msgstr "PID %d í”„ë¡œê·¸ëž¨ì€ PostgreSQL 서버 프로세스가 아닙니다" + +#: utils/adt/misc.c:290 +#, c-format +msgid "must be a superuser to cancel superuser query" +msgstr "슈í¼ìœ ì €ì˜ 쿼리를 중지하려면 슈í¼ìœ ì €ì—¬ì•¼ 합니다." + +#: utils/adt/misc.c:295 +#, c-format +msgid "" +"must be a member of the role whose query is being canceled or member of " +"pg_signal_backend" +msgstr "" +"쿼리 작업 취소하려면 작업ìžì˜ ì†Œì† ë§´ë²„ì´ê±°ë‚˜ pg_signal_backend ì†Œì† ë§´ë²„ì—¬" +"야 합니다" + +#: utils/adt/misc.c:314 +#, c-format +msgid "must be a superuser to terminate superuser process" +msgstr "슈í¼ìœ ì €ì˜ ì„¸ì…˜ì„ ì •ë¦¬í•˜ë ¤ë©´ 슈í¼ìœ ì €ì—¬ì•¼ 합니다." + +#: utils/adt/misc.c:319 +#, c-format +msgid "" +"must be a member of the role whose process is being terminated or member of " +"pg_signal_backend" +msgstr "" +"ì„¸ì…˜ì„ ì¢…ë£Œí•˜ë ¤ë©´ ì ‘ì†ìžì˜ ì†Œì† ë§´ë²„ì´ê±°ë‚˜ pg_signal_backend ì†Œì† ë§´ë²„ì—¬ì•¼ í•©" +"니다" + +#: utils/adt/misc.c:336 +#, c-format +msgid "failed to send signal to postmaster: %m" +msgstr "postmaster로 ì‹œê·¸ë„ ë³´ë‚´ê¸° 실패: %m" + +#: utils/adt/misc.c:356 +#, c-format +msgid "rotation not possible because log collection not active" +msgstr "로그 ìˆ˜ì§‘ì´ í™œì„± ìƒíƒœê°€ 아니므로 회전할 수 ì—†ìŒ" + +#: utils/adt/misc.c:393 +#, c-format +msgid "global tablespace never has databases" +msgstr "ì „ì—­ í…Œì´ë¸”스페ì´ìŠ¤ëŠ” ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ê²°ì½” í¬í•¨í•˜ì§€ 않습니다." + +#: utils/adt/misc.c:414 +#, c-format +msgid "%u is not a tablespace OID" +msgstr "%u í…Œì´ë¸”스페ì´ìФ OIDê°€ 아님" + +#: utils/adt/misc.c:611 +msgid "unreserved" +msgstr "예약ë˜ì§€ 않ìŒ" + +#: utils/adt/misc.c:615 +msgid "unreserved (cannot be function or type name)" +msgstr "예약ë˜ì§€ 않ìŒ(함수, ìžë£Œí˜• ì´ë¦„ì¼ ìˆ˜ ì—†ìŒ)" + +#: utils/adt/misc.c:619 +msgid "reserved (can be function or type name)" +msgstr "예약ë¨(함수, ìžë£Œí˜• ì´ë¦„ì¼ ìˆ˜ 있ìŒ)" + +#: utils/adt/misc.c:623 +msgid "reserved" +msgstr "예약ë¨" + +#: utils/adt/misc.c:797 utils/adt/misc.c:811 utils/adt/misc.c:850 +#: utils/adt/misc.c:856 utils/adt/misc.c:862 utils/adt/misc.c:885 +#, c-format +msgid "string is not a valid identifier: \"%s\"" +msgstr "문ìžì—´ì´ 타당한 ì‹ë³„ìžê°€ 아님: \"%s\"" + +#: utils/adt/misc.c:799 +#, c-format +msgid "String has unclosed double quotes." +msgstr "문ìžì—´ 표기ì—서 í°ë”°ì˜´í‘œ ì§ì´ 안맞습니다." + +#: utils/adt/misc.c:813 +#, c-format +msgid "Quoted identifier must not be empty." +msgstr "ì¸ìš©ë¶€í˜¸ 있는 ì‹ë³„ìž: 비어있으면 안ë©ë‹ˆë‹¤" + +#: utils/adt/misc.c:852 +#, c-format +msgid "No valid identifier before \".\"." +msgstr "\".\" ì „ì— íƒ€ë‹¹í•œ ì‹ë³„ìžê°€ ì—†ìŒ" + +#: utils/adt/misc.c:858 +#, c-format +msgid "No valid identifier after \".\"." +msgstr "\".\" ë’¤ì— íƒ€ë‹¹í•œ ì‹ë³„ìž ì—†ìŒ" + +#: utils/adt/nabstime.c:136 +#, c-format +msgid "invalid time zone name: \"%s\"" +msgstr "ìž˜ëª»ëœ íƒ€ìž„ì¡´ ì´ë¦„: \"%s\"" + +#: utils/adt/nabstime.c:481 utils/adt/nabstime.c:554 +#, c-format +msgid "cannot convert abstime \"invalid\" to timestamp" +msgstr "\"invalid\" abstime ìžë£Œí˜•ì„ timestamp ìžë£Œí˜•으로 변환할 수 없습니다." + +#: utils/adt/nabstime.c:781 +#, c-format +msgid "invalid status in external \"tinterval\" value" +msgstr "외부 \"tinterval\" ê°’ì— ìž˜ëª»ëœ ìƒíƒœê°€ 있ìŒ" + +#: utils/adt/nabstime.c:855 +#, c-format +msgid "cannot convert reltime \"invalid\" to interval" +msgstr "reltime \"invalid\"를 interval로 변환할 수 ì—†ìŒ" + +#: utils/adt/nabstime.c:1550 +#, c-format +msgid "invalid input syntax for type tinterval: \"%s\"" +msgstr "tinterval ìžë£Œí˜•ì— ëŒ€í•œ ìž˜ëª»ëœ ìž…ë ¥: \"%s\"" + +#: utils/adt/network.c:69 +#, c-format +msgid "invalid cidr value: \"%s\"" +msgstr "cidr ìžë£Œí˜•ì— ëŒ€í•œ ìž˜ëª»ëœ ìž…ë ¥: \"%s\"" + +#: utils/adt/network.c:70 utils/adt/network.c:200 +#, c-format +msgid "Value has bits set to right of mask." +msgstr "ë§ˆìŠ¤í¬ ì˜¤ë¥¸ìª½ì— ì„¤ì •ëœ ë¹„íŠ¸ê°€ ê°’ì— í¬í•¨ë˜ì–´ 있습니다." + +#: utils/adt/network.c:111 utils/adt/network.c:607 utils/adt/network.c:632 +#: utils/adt/network.c:657 +#, c-format +msgid "could not format inet value: %m" +msgstr "inet ê°’ì˜ í˜•ì‹ì„ 지정할 수 ì—†ìŒ: %m" + +#. translator: %s is inet or cidr +#: utils/adt/network.c:168 +#, c-format +msgid "invalid address family in external \"%s\" value" +msgstr "잘못 ëœ ì£¼ì†Œêµ° \"%s\"" + +#. translator: %s is inet or cidr +#: utils/adt/network.c:175 +#, c-format +msgid "invalid bits in external \"%s\" value" +msgstr "\"%s\" ê°’ì— ìž˜ëª»ëœ ë¹„íŠ¸ê°€ 있ìŒ" + +#. translator: %s is inet or cidr +#: utils/adt/network.c:184 +#, c-format +msgid "invalid length in external \"%s\" value" +msgstr "외부 \"%s\" ê°’ì˜ ê¸¸ì´ê°€ 잘못 ë˜ì—ˆìŒ" + +#: utils/adt/network.c:199 +#, c-format +msgid "invalid external \"cidr\" value" +msgstr "외부 \"cidr\" ê°’ì´ ìž˜ëª»ë¨" + +#: utils/adt/network.c:321 utils/adt/network.c:348 +#, c-format +msgid "invalid mask length: %d" +msgstr "ìž˜ëª»ëœ ë§ˆìŠ¤í¬ ê¸¸ì´: %d" + +#: utils/adt/network.c:675 +#, c-format +msgid "could not format cidr value: %m" +msgstr "cidr ê°’ì„ ì²˜ë¦¬í•  수 ì—†ìŒ: %m" + +#: utils/adt/network.c:917 +#, c-format +msgid "cannot merge addresses from different families" +msgstr "서로 다른 페밀리ì—서는 주소를 병합할 수 ì—†ìŒ" + +#: utils/adt/network.c:1343 +#, c-format +msgid "cannot AND inet values of different sizes" +msgstr "서로 í¬ê¸°ê°€ 틀린 inet ê°’ë“¤ì€ AND ì—°ì‚°ì„ í•  수 없습니다." + +#: utils/adt/network.c:1375 +#, c-format +msgid "cannot OR inet values of different sizes" +msgstr "서로 í¬ê¸°ê°€ 틀린 inet ê°’ë“¤ì€ OR ì—°ì‚°ì„ í•  수 없습니다." + +#: utils/adt/network.c:1436 utils/adt/network.c:1512 +#, c-format +msgid "result is out of range" +msgstr "결과가 범위를 벗어났습니다." + +#: utils/adt/network.c:1477 +#, c-format +msgid "cannot subtract inet values of different sizes" +msgstr "inet ê°’ì—서 서로 í¬ê¸°ê°€ 틀리게 부분 추출(subtract)í•  수 ì—†ìŒ" + +#: utils/adt/numeric.c:542 utils/adt/numeric.c:569 utils/adt/numeric.c:5405 +#: utils/adt/numeric.c:5428 utils/adt/numeric.c:5452 +#, c-format +msgid "invalid input syntax for type numeric: \"%s\"" +msgstr "수치 ìžë£Œí˜•ì˜ ìž…ë ¥ êµ¬ë¬¸ì— ì˜¤ë¥˜ê°€ 있습니다: \"%s\"" + +#: utils/adt/numeric.c:768 +#, c-format +msgid "invalid sign in external \"numeric\" value" +msgstr "외부 \"numeric\" ê°’ì˜ ë¶€í˜¸ê°€ 잘못ë¨" + +#: utils/adt/numeric.c:774 +#, c-format +msgid "invalid scale in external \"numeric\" value" +msgstr "외부 \"numeric\" ê°’ì˜ ìž˜ëª»ëœ ìŠ¤ì¼€ì¼" + +#: utils/adt/numeric.c:783 +#, c-format +msgid "invalid digit in external \"numeric\" value" +msgstr "외부 \"numeric\" ê°’ì˜ ìˆ«ìžê°€ 잘못ë¨" + +#: utils/adt/numeric.c:974 utils/adt/numeric.c:988 +#, c-format +msgid "NUMERIC precision %d must be between 1 and %d" +msgstr "NUMERIC ì •ë°€ë„ %d ê°’ì€ ë²”ìœ„(1 .. %d)를 벗어났습니다." + +#: utils/adt/numeric.c:979 +#, c-format +msgid "NUMERIC scale %d must be between 0 and precision %d" +msgstr "NUMERIC ìŠ¤ì¼€ì¼ %d ê°’ì€ ì •ë°€ë„ ë²”ìœ„(0 .. %d)를 벗어났습니다." + +#: utils/adt/numeric.c:997 +#, c-format +msgid "invalid NUMERIC type modifier" +msgstr "ìž˜ëª»ëœ NUMERIC í˜•ì‹ í•œì •ìž" + +#: utils/adt/numeric.c:1329 +#, c-format +msgid "start value cannot be NaN" +msgstr "ì‹œìž‘ê°’ì€ NaN ì¼ ìˆ˜ ì—†ìŒ" + +#: utils/adt/numeric.c:1334 +#, c-format +msgid "stop value cannot be NaN" +msgstr "ì¢…ë£Œê°’ì€ NaN ì¼ ìˆ˜ ì—†ìŒ" + +#: utils/adt/numeric.c:1344 +#, c-format +msgid "step size cannot be NaN" +msgstr "단계 í¬ê¸°ëŠ” NaN ì¼ ìˆ˜ ì—†ìŒ" + +#: utils/adt/numeric.c:2539 utils/adt/numeric.c:5467 utils/adt/numeric.c:5912 +#: utils/adt/numeric.c:7616 utils/adt/numeric.c:8041 utils/adt/numeric.c:8156 +#: utils/adt/numeric.c:8229 +#, c-format +msgid "value overflows numeric format" +msgstr "ê°’ì´ ìˆ˜ì¹˜ 형ì‹ì— 넘처남" + +#: utils/adt/numeric.c:2881 +#, c-format +msgid "cannot convert NaN to integer" +msgstr "NaN ê°’ì„ ì •ìˆ˜í˜•ìœ¼ë¡œ 변환할 수 없습니다" + +#: utils/adt/numeric.c:2947 +#, c-format +msgid "cannot convert NaN to bigint" +msgstr "NaN ê°’ì„ bigint형으로 변환할 수 없습니다" + +#: utils/adt/numeric.c:2992 +#, c-format +msgid "cannot convert NaN to smallint" +msgstr "NaN ê°’ì„ smallint형으로 변환할 수 없습니다" + +#: utils/adt/numeric.c:5982 +#, c-format +msgid "numeric field overflow" +msgstr "수치 필드 오버플로우" + +#: utils/adt/numeric.c:5983 +#, c-format +msgid "" +"A field with precision %d, scale %d must round to an absolute value less " +"than %s%d." +msgstr "" +"ì „ì²´ ìžë¦¿ìˆ˜ %d, 소수 ìžë¦¿ìˆ˜ %dì˜ í•„ë“œëŠ” %s%d보다 ìž‘ì€ ì ˆëŒ€ 값으로 반올림해야 " +"합니다." + +#: utils/adt/numeric.c:6254 utils/adt/numeric.c:6280 +#, c-format +msgid "invalid input syntax for type double precision: \"%s\"" +msgstr "double precision ìžë£Œí˜•ì— ëŒ€í•œ ìž˜ëª»ëœ ìž…ë ¥: \"%s\"" + +#: utils/adt/numutils.c:75 +#, c-format +msgid "value \"%s\" is out of range for type integer" +msgstr "입력한 \"%s\" ê°’ì€ integer ìžë£Œí˜• 범위를 초과했습니다" + +#: utils/adt/numutils.c:81 +#, c-format +msgid "value \"%s\" is out of range for type smallint" +msgstr "입력한 \"%s\" ê°’ì€ smallint ìžë£Œí˜• 범위를 초과했습니다" + +#: utils/adt/numutils.c:87 +#, c-format +msgid "value \"%s\" is out of range for 8-bit integer" +msgstr "ê°’ \"%s\"ì€(는) 8비트 ì •ìˆ˜ì˜ ë²”ìœ„ë¥¼ 벗어남" + +#: utils/adt/oid.c:43 utils/adt/oid.c:57 utils/adt/oid.c:63 utils/adt/oid.c:84 +#, c-format +msgid "invalid input syntax for type oid: \"%s\"" +msgstr "ìž˜ëª»ëœ oid ìžë£Œí˜•ì˜ ìž…ë ¥: \"%s\"" + +#: utils/adt/oid.c:69 utils/adt/oid.c:107 +#, c-format +msgid "value \"%s\" is out of range for type oid" +msgstr "입력한 \"%s\" ê°’ì€ oid ìžë£Œí˜• 범위를 초과했습니다" + +#: utils/adt/oid.c:287 +#, c-format +msgid "invalid oidvector data" +msgstr "ìž˜ëª»ëœ oidvector ìžë£Œ" + +#: utils/adt/oracle_compat.c:895 +#, c-format +msgid "requested character too large" +msgstr "ìš”ì²­ëœ ë¬¸ìžê°€ 너무 í¼" + +#: utils/adt/oracle_compat.c:945 utils/adt/oracle_compat.c:1007 +#, c-format +msgid "requested character too large for encoding: %d" +msgstr "요청한 문ìžê°€ 너무 커서 ì¸ì½”딩할 수 ì—†ìŒ: %d" + +#: utils/adt/oracle_compat.c:986 +#, c-format +msgid "requested character not valid for encoding: %d" +msgstr "요청한 문ìžê°€ ì¸ì½”딩용으로 타당치 않ìŒ: %d" + +#: utils/adt/oracle_compat.c:1000 +#, c-format +msgid "null character not permitted" +msgstr "null 문ìžëŠ” 허용ë˜ì§€ 않ìŒ" + +#: utils/adt/orderedsetaggs.c:425 utils/adt/orderedsetaggs.c:530 +#: utils/adt/orderedsetaggs.c:669 +#, c-format +msgid "percentile value %g is not between 0 and 1" +msgstr "%g í¼ì„¼íЏ ê°’ì´ 0ê³¼ 1사ì´ê°€ 아닙니다." + +#: utils/adt/pg_locale.c:1029 +#, c-format +msgid "Apply system library package updates." +msgstr "OS ë¼ì´ë¸ŒëŸ¬ë¦¬ 패키지를 ì—…ë°ì´íЏ 하세요." + +#: utils/adt/pg_locale.c:1234 +#, c-format +msgid "could not create locale \"%s\": %m" +msgstr "\"%s\" 로케ì¼ì„ 만들 수 ì—†ìŒ: %m" + +#: utils/adt/pg_locale.c:1237 +#, c-format +msgid "" +"The operating system could not find any locale data for the locale name \"%s" +"\"." +msgstr "ìš´ì˜ì²´ì œì—서 \"%s\" ë¡œì¼€ì¼ ì´ë¦„ì— ëŒ€í•œ ë¡œì¼€ì¼ íŒŒì¼ì„ ì°¾ì„ ìˆ˜ 없습니다." + +#: utils/adt/pg_locale.c:1324 +#, c-format +msgid "" +"collations with different collate and ctype values are not supported on this " +"platform" +msgstr "" +"ì´ í”Œëž«í¼ì—서는 서로 다른 정렬규칙(collation)ê³¼ 문ìžì§‘í•©(ctype)ì„ í•¨ê»˜ 쓸 수 " +"없습니다." + +#: utils/adt/pg_locale.c:1339 +#, c-format +msgid "nondefault collations are not supported on this platform" +msgstr "" +"ì´ í”Œëž«í¼ì—서는 ê¸°ë³¸ê°’ì´ ì•„ë‹Œ 정렬규칙(collation)ì„ ì‚¬ìš©í•  수 없습니다." + +#: utils/adt/pg_locale.c:1510 +#, c-format +msgid "invalid multibyte character for locale" +msgstr "로케ì¼ì„ 위한 ìž˜ëª»ëœ ë©€í‹°ë°”ì´íЏ 문ìž" + +#: utils/adt/pg_locale.c:1511 +#, c-format +msgid "" +"The server's LC_CTYPE locale is probably incompatible with the database " +"encoding." +msgstr "ì„œë²„ì˜ LC_CTYPE 로케ì¼ì€ ì´ ë°ì´í„°ë² ì´ìФ ì¸ì½”딩과 호환ë˜ì§€ 않습니다." + +#: utils/adt/pg_lsn.c:44 utils/adt/pg_lsn.c:49 +#, c-format +msgid "invalid input syntax for type pg_lsn: \"%s\"" +msgstr "pg_lsn ìžë£Œí˜•ì— ëŒ€í•œ ìž˜ëª»ëœ ìž…ë ¥: \"%s\"" + +#: utils/adt/pg_upgrade_support.c:40 +#, c-format +msgid "function can only be called when server is in binary upgrade mode" +msgstr "함수는 서버가 ì´ì§„ 업그레ì´ë“œ ìƒíƒœì—서만 호출 ë  ìˆ˜ 있습니다" + +#: utils/adt/pgstatfuncs.c:571 +#, c-format +msgid "invalid command name: \"%s\"" +msgstr "ìž˜ëª»ëœ ëª…ë ¹ì–´ ì´ë¦„: \"%s\"" + +#: utils/adt/pseudotypes.c:95 +#, c-format +msgid "cannot accept a value of type any" +msgstr "any 형ì‹ì˜ ê°’ì€ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:108 +#, c-format +msgid "cannot display a value of type any" +msgstr "any 형ì‹ì˜ ê°’ì€ í‘œì‹œí•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:122 utils/adt/pseudotypes.c:150 +#, c-format +msgid "cannot accept a value of type anyarray" +msgstr "anyarray 형ì‹ì˜ ê°’ì€ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:175 +#, c-format +msgid "cannot accept a value of type anyenum" +msgstr "anyenum ìžë£Œí˜• 값으로 사용할 수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:199 +#, c-format +msgid "cannot accept a value of type anyrange" +msgstr "anyrange ìžë£Œí˜• 값으로 사용할 수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:276 +#, c-format +msgid "cannot accept a value of type trigger" +msgstr "trigger ìžë£Œí˜• 값으로 사용할 수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:289 +#, c-format +msgid "cannot display a value of type trigger" +msgstr "trigger ìžë£Œí˜• 값으로 표시할 수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:303 +#, c-format +msgid "cannot accept a value of type event_trigger" +msgstr "event_trigger 형ì‹ì˜ ê°’ì€ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:316 +#, c-format +msgid "cannot display a value of type event_trigger" +msgstr "event_trigger ìžë£Œí˜• ê°’ì€ í‘œì‹œí•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:330 +#, c-format +msgid "cannot accept a value of type language_handler" +msgstr "language_handler ìžë£Œí˜• ê°’ì€ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:343 +#, c-format +msgid "cannot display a value of type language_handler" +msgstr "language_handler ìžë£Œí˜• ê°’ì€ í‘œì‹œí•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:357 +#, c-format +msgid "cannot accept a value of type fdw_handler" +msgstr "fdw_handler ìžë£Œí˜• ê°’ì€ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:370 +#, c-format +msgid "cannot display a value of type fdw_handler" +msgstr "fdw_handler 형ì‹ì˜ ê°’ì€ í‘œì‹œí•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:384 +#, c-format +msgid "cannot accept a value of type index_am_handler" +msgstr "index_am_handler 형ì‹ì˜ ê°’ì€ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:397 +#, c-format +msgid "cannot display a value of type index_am_handler" +msgstr "index_am_handler 형ì‹ì˜ ê°’ì€ í‘œì‹œí•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:411 +#, c-format +msgid "cannot accept a value of type tsm_handler" +msgstr "tsm_handler 형ì‹ì˜ ê°’ì€ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:424 +#, c-format +msgid "cannot display a value of type tsm_handler" +msgstr "tsm_handler 형ì‹ì˜ ê°’ì€ í‘œì‹œí•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:438 +#, c-format +msgid "cannot accept a value of type internal" +msgstr "internal 형ì‹ì˜ ê°’ì€ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:451 +#, c-format +msgid "cannot display a value of type internal" +msgstr "internal 형ì‹ì˜ ê°’ì€ í‘œì‹œí•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:465 +#, c-format +msgid "cannot accept a value of type opaque" +msgstr "opaque 형ì‹ì˜ ê°’ì€ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:478 +#, c-format +msgid "cannot display a value of type opaque" +msgstr "opaque 형ì‹ì˜ ê°’ì€ í‘œì‹œí•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:492 +#, c-format +msgid "cannot accept a value of type anyelement" +msgstr "anyelement 형ì‹ì˜ ê°’ì€ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:505 +#, c-format +msgid "cannot display a value of type anyelement" +msgstr "anyelement 형ì‹ì˜ ê°’ì€ í‘œì‹œí•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:518 +#, c-format +msgid "cannot accept a value of type anynonarray" +msgstr "anynonarray 형ì‹ì˜ ê°’ì€ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:531 +#, c-format +msgid "cannot display a value of type anynonarray" +msgstr "anynonarray 형ì‹ì˜ ê°’ì€ í‘œì‹œí•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:544 +#, c-format +msgid "cannot accept a value of a shell type" +msgstr "ì…¸ 형태 ê°’ì€ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:557 +#, c-format +msgid "cannot display a value of a shell type" +msgstr "shell 형ì‹ì˜ ê°’ì€ í‘œì‹œí•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:579 utils/adt/pseudotypes.c:604 +#: utils/adt/pseudotypes.c:632 utils/adt/pseudotypes.c:660 +#, c-format +msgid "cannot accept a value of type %s" +msgstr "%s 형ì‹ì˜ ê°’ì€ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: utils/adt/pseudotypes.c:647 utils/adt/pseudotypes.c:673 +#, c-format +msgid "cannot output a value of type %s" +msgstr "%s 형ì‹ì˜ ê°’ì€ ì¶œë ¥í•  수 ì—†ìŒ" + +#: utils/adt/rangetypes.c:405 +#, c-format +msgid "range constructor flags argument must not be null" +msgstr "range ìžë£Œí˜• êµ¬ì„±ìž í”Œëž˜ê·¸ ì¸ìžë¡œ nullì„ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: utils/adt/rangetypes.c:992 +#, c-format +msgid "result of range difference would not be contiguous" +msgstr "" + +#: utils/adt/rangetypes.c:1053 +#, c-format +msgid "result of range union would not be contiguous" +msgstr "" + +#: utils/adt/rangetypes.c:1543 +#, c-format +msgid "range lower bound must be less than or equal to range upper bound" +msgstr "range ìžë£Œí˜•ì˜ í•˜í•œê°’ì€ ìƒí•œê°’ê³¼ 같거나 작아야 합니다" + +#: utils/adt/rangetypes.c:1926 utils/adt/rangetypes.c:1939 +#: utils/adt/rangetypes.c:1953 +#, c-format +msgid "invalid range bound flags" +msgstr "ìž˜ëª»ëœ range 구성 플래그" + +#: utils/adt/rangetypes.c:1927 utils/adt/rangetypes.c:1940 +#: utils/adt/rangetypes.c:1954 +#, c-format +msgid "Valid values are \"[]\", \"[)\", \"(]\", and \"()\"." +msgstr "유효한 ê°’ì€ \"[]\", \"[)\", \"(]\", \"()\"." + +#: utils/adt/rangetypes.c:2019 utils/adt/rangetypes.c:2036 +#: utils/adt/rangetypes.c:2049 utils/adt/rangetypes.c:2067 +#: utils/adt/rangetypes.c:2078 utils/adt/rangetypes.c:2122 +#: utils/adt/rangetypes.c:2130 +#, c-format +msgid "malformed range literal: \"%s\"" +msgstr "비정ìƒì ì¸ range 문ìž: \"%s\"" + +#: utils/adt/rangetypes.c:2021 +#, c-format +msgid "Junk after \"empty\" key word." +msgstr " \"empty\" 키워드 ë’¤ì— ì •í¬ê°€ 있ìŒ" + +#: utils/adt/rangetypes.c:2038 +#, c-format +msgid "Missing left parenthesis or bracket." +msgstr "왼쪽 괄호가 빠졌ìŒ" + +#: utils/adt/rangetypes.c:2051 +#, c-format +msgid "Missing comma after lower bound." +msgstr "하한값 ë’¤ì— ì‰¼í‘œê°€ 빠졌ìŒ" + +#: utils/adt/rangetypes.c:2069 +#, c-format +msgid "Too many commas." +msgstr "ì¹¼ëŸ¼ì´ ë„ˆë¬´ 많습니다." + +#: utils/adt/rangetypes.c:2080 +#, c-format +msgid "Junk after right parenthesis or bracket." +msgstr "오른쪽 괄호 다ìŒì— ì •í¬ê°€ 있ìŒ" + +#: utils/adt/regexp.c:285 utils/adt/regexp.c:1288 utils/adt/varlena.c:3829 +#, c-format +msgid "regular expression failed: %s" +msgstr "ìž˜ëª»ëœ ì •ê·œì‹: %s" + +#: utils/adt/regexp.c:422 +#, c-format +msgid "invalid regexp option: \"%c\"" +msgstr "ìž˜ëª»ëœ regexp 옵션: \"%c\"" + +#: utils/adt/regexp.c:948 +#, c-format +msgid "regexp_split does not support the global option" +msgstr "regexp_split는 글로벌 ì˜µì…˜ì„ ì§€ì›í•˜ì§€ 않ìŒ" + +#: utils/adt/regproc.c:128 utils/adt/regproc.c:148 +#, c-format +msgid "more than one function named \"%s\"" +msgstr "\"%s\"(ì´)ë¼ëŠ” 함수가 ë‘ ê°œ ì´ìƒ 있ìŒ" + +#: utils/adt/regproc.c:587 utils/adt/regproc.c:607 +#, c-format +msgid "more than one operator named %s" +msgstr "%s(ì´)ë¼ëŠ” ì—°ì‚°ìžê°€ ë‘ ê°œ ì´ìƒ 있ìŒ" + +#: utils/adt/regproc.c:774 utils/adt/regproc.c:815 gram.y:7302 +#, c-format +msgid "missing argument" +msgstr "ì¸ìžê°€ 빠졌ìŒ" + +#: utils/adt/regproc.c:775 utils/adt/regproc.c:816 gram.y:7303 +#, c-format +msgid "Use NONE to denote the missing argument of a unary operator." +msgstr "단항 ì—°ì‚°ìžì—서 ì¸ìž ì—†ìŒì„ 표시할 때는 NONE ì¸ìžë¥¼ 사용하세요." + +#: utils/adt/regproc.c:779 utils/adt/regproc.c:820 utils/adt/regproc.c:2006 +#: utils/adt/ruleutils.c:8367 utils/adt/ruleutils.c:8536 +#, c-format +msgid "too many arguments" +msgstr "ì¸ìžê°€ 너무 많습니다" + +#: utils/adt/regproc.c:780 utils/adt/regproc.c:821 +#, c-format +msgid "Provide two argument types for operator." +msgstr "ì—°ì‚°ìžë¥¼ 위해서는 ë‘ê°œì˜ ì¸ìž ìžë£Œí˜•ì„ ì§€ì •í•˜ì‹­ì‹œì˜¤." + +#: utils/adt/regproc.c:1594 utils/adt/regproc.c:1618 utils/adt/regproc.c:1715 +#: utils/adt/regproc.c:1739 utils/adt/regproc.c:1841 utils/adt/regproc.c:1846 +#: utils/adt/varlena.c:3084 utils/adt/varlena.c:3089 +#, c-format +msgid "invalid name syntax" +msgstr "ìž˜ëª»ëœ ì´ë¦„ 구문" + +#: utils/adt/regproc.c:1904 +#, c-format +msgid "expected a left parenthesis" +msgstr "왼쪽 괄호가 필요합니다." + +#: utils/adt/regproc.c:1920 +#, c-format +msgid "expected a right parenthesis" +msgstr "오른쪽 괄호가 필요합니다." + +#: utils/adt/regproc.c:1939 +#, c-format +msgid "expected a type name" +msgstr "ìžë£Œí˜• ì´ë¦„ì„ ì§€ì •í•˜ì‹­ì‹œì˜¤" + +#: utils/adt/regproc.c:1971 +#, c-format +msgid "improper type name" +msgstr "ë¶€ì ì ˆí•œ í˜•ì‹ ì´ë¦„" + +#: utils/adt/ri_triggers.c:314 utils/adt/ri_triggers.c:371 +#: utils/adt/ri_triggers.c:790 utils/adt/ri_triggers.c:1013 +#: utils/adt/ri_triggers.c:1169 utils/adt/ri_triggers.c:1350 +#: utils/adt/ri_triggers.c:1515 utils/adt/ri_triggers.c:1691 +#: utils/adt/ri_triggers.c:1871 utils/adt/ri_triggers.c:2062 +#: utils/adt/ri_triggers.c:2120 utils/adt/ri_triggers.c:2225 +#: utils/adt/ri_triggers.c:2402 gram.y:3343 +#, c-format +msgid "MATCH PARTIAL not yet implemented" +msgstr "MATCH PARTIAL ê¸°ëŠ¥ì€ ì•„ì§ êµ¬í˜„ 안ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: utils/adt/ri_triggers.c:343 utils/adt/ri_triggers.c:2490 +#: utils/adt/ri_triggers.c:3315 +#, c-format +msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\"" +msgstr "" +"\"%s\" í…Œì´ë¸”ì—서 ìžë£Œ 추가, 갱신 ìž‘ì—…ì´ \"%s\" 참조키(foreign key) 제약 ì¡°ê±´" +"ì„ ìœ„ë°°í–ˆìŠµë‹ˆë‹¤" + +#: utils/adt/ri_triggers.c:346 utils/adt/ri_triggers.c:2493 +#, c-format +msgid "MATCH FULL does not allow mixing of null and nonnull key values." +msgstr "MATCH FULLì— null 키 ê°’ê³¼ nonnull 키 ê°’ì„ í•¨ê»˜ 사용할 수 없습니다." + +#: utils/adt/ri_triggers.c:2732 +#, c-format +msgid "function \"%s\" must be fired for INSERT" +msgstr "INSERTì— ëŒ€í•´ \"%s\" 함수를 실행해야 함" + +#: utils/adt/ri_triggers.c:2738 +#, c-format +msgid "function \"%s\" must be fired for UPDATE" +msgstr "UPDATEì— ëŒ€í•´ \"%s\" 함수를 실행해야 함" + +#: utils/adt/ri_triggers.c:2744 +#, c-format +msgid "function \"%s\" must be fired for DELETE" +msgstr "DELETEì— ëŒ€í•´ \"%s\" 함수를 실행해야 함" + +#: utils/adt/ri_triggers.c:2767 +#, c-format +msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\"" +msgstr "\"%s\" 트리거(해당 í…Œì´ë¸”: \"%s\")ì— ëŒ€í•œ pg_constraint í•­ëª©ì´ ì—†ìŒ" + +#: utils/adt/ri_triggers.c:2769 +#, c-format +msgid "" +"Remove this referential integrity trigger and its mates, then do ALTER TABLE " +"ADD CONSTRAINT." +msgstr "" +"해당 트리거 관련 ê°ì²´ë¥¼ 제거한 후 ALTER TABLE ADD CONSTRAINT 명령으로 추가하" +"세요" + +#: utils/adt/ri_triggers.c:3225 +#, c-format +msgid "" +"referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave " +"unexpected result" +msgstr "" +"\"%s\"ì— ëŒ€í•œ 참조 무결성 쿼리(제약조건: \"%s\", 해당 릴레ì´ì…˜: \"%s\")를 실" +"행하면 예기치 ì•Šì€ ê²°ê³¼ê°€ ë°œìƒí•¨" + +#: utils/adt/ri_triggers.c:3229 +#, c-format +msgid "This is most likely due to a rule having rewritten the query." +msgstr "ì´ ë¬¸ì œëŠ” 주로 ë£°ì´ ìž¬ìž‘ì„± ë˜ì—ˆì„ 때 ë°œìƒí•©ë‹ˆë‹¤." + +#: utils/adt/ri_triggers.c:3319 +#, c-format +msgid "Key (%s)=(%s) is not present in table \"%s\"." +msgstr "(%s)=(%s) 키가 \"%s\" í…Œì´ë¸”ì— ì—†ìŠµë‹ˆë‹¤." + +#: utils/adt/ri_triggers.c:3322 +#, c-format +msgid "Key is not present in table \"%s\"." +msgstr "\"%s\" í…Œì´ë¸”ì— í‚¤ê°€ 없습니다." + +#: utils/adt/ri_triggers.c:3328 +#, c-format +msgid "" +"update or delete on table \"%s\" violates foreign key constraint \"%s\" on " +"table \"%s\"" +msgstr "" +"\"%s\" í…Œì´ë¸”ì˜ ìžë£Œ 갱신, ì‚­ì œ ìž‘ì—…ì´ \"%s\" 참조키(foreign key) 제약 ì¡°ê±´ " +"- \"%s\" í…Œì´ë¸” - ì„ ìœ„ë°˜í–ˆìŠµë‹ˆë‹¤" + +#: utils/adt/ri_triggers.c:3333 +#, c-format +msgid "Key (%s)=(%s) is still referenced from table \"%s\"." +msgstr "(%s)=(%s) 키가 \"%s\" í…Œì´ë¸”ì—서 여전히 참조ë©ë‹ˆë‹¤." + +#: utils/adt/ri_triggers.c:3336 +#, c-format +msgid "Key is still referenced from table \"%s\"." +msgstr "\"%s\" í…Œì´ë¸”ì—서 키가 여전히 참조ë©ë‹ˆë‹¤." + +#: utils/adt/rowtypes.c:103 utils/adt/rowtypes.c:479 +#, c-format +msgid "input of anonymous composite types is not implemented" +msgstr "ìµëª… 복합 형ì‹ì˜ ìž…ë ¥ì´ êµ¬í˜„ë˜ì–´ 있지 않ìŒ" + +#: utils/adt/rowtypes.c:155 utils/adt/rowtypes.c:183 utils/adt/rowtypes.c:206 +#: utils/adt/rowtypes.c:214 utils/adt/rowtypes.c:266 utils/adt/rowtypes.c:274 +#, c-format +msgid "malformed record literal: \"%s\"" +msgstr "비정ìƒì ì¸ 레코드 문ìž: \"%s\"" + +#: utils/adt/rowtypes.c:156 +#, c-format +msgid "Missing left parenthesis." +msgstr "왼쪽 괄호가 필요합니다." + +#: utils/adt/rowtypes.c:184 +#, c-format +msgid "Too few columns." +msgstr "ì—´ 수가 너무 ì ë‹¤" + +#: utils/adt/rowtypes.c:267 +#, c-format +msgid "Too many columns." +msgstr "ì—´ì´ ë„ˆë¬´ 많습니다." + +#: utils/adt/rowtypes.c:275 +#, c-format +msgid "Junk after right parenthesis." +msgstr "오른쪽 괄호가 필요합니다." + +#: utils/adt/rowtypes.c:528 +#, c-format +msgid "wrong number of columns: %d, expected %d" +msgstr "ì—´ 수(%d)ê°€ 최대값(%d)ì„ ì´ˆê³¼í–ˆìŠµë‹ˆë‹¤" + +#: utils/adt/rowtypes.c:555 +#, c-format +msgid "wrong data type: %u, expected %u" +msgstr "ìž˜ëª»ëœ ìžë£Œí˜•: %u, 예ìƒë˜ëŠ” ìžë£Œí˜• %u" + +#: utils/adt/rowtypes.c:616 +#, c-format +msgid "improper binary format in record column %d" +msgstr "%d 번째 레코드 ì—´ì—서 ìž˜ëª»ëœ ë°”ì´ë„ˆë¦¬ í¬ë§·ì´ 있습니다" + +#: utils/adt/rowtypes.c:902 utils/adt/rowtypes.c:1142 +#: utils/adt/rowtypes.c:1396 utils/adt/rowtypes.c:1673 +#, c-format +msgid "cannot compare dissimilar column types %s and %s at record column %d" +msgstr "서로 다른 ì—´ í˜•ì‹ %sê³¼(와) %s(레코드 ì—´ %d)ì„(를) 비êµí•  수 ì—†ìŒ" + +#: utils/adt/rowtypes.c:991 utils/adt/rowtypes.c:1213 +#: utils/adt/rowtypes.c:1529 utils/adt/rowtypes.c:1769 +#, c-format +msgid "cannot compare record types with different numbers of columns" +msgstr "칼럼 수가 서로 다른 레코드 ìžë£Œí˜•ì„ ë¹„êµí•  수 ì—†ìŒ" + +#: utils/adt/ruleutils.c:4289 +#, c-format +msgid "rule \"%s\" has unsupported event type %d" +msgstr "\"%s\" ë£°ì€ %d ì´ë²¤íЏ 형태를 ì§€ì›í•˜ì§€ 않습니다" + +#: utils/adt/selfuncs.c:5318 +#, c-format +msgid "case insensitive matching not supported on type bytea" +msgstr "bytea 형ì‹ì—서는 대/소문ìžë¥¼ 구분하지 않는 ì¼ì¹˜ê°€ ì§€ì›ë˜ì§€ 않ìŒ" + +#: utils/adt/selfuncs.c:5421 +#, c-format +msgid "regular-expression matching not supported on type bytea" +msgstr "bytea 형ì‹ì—서는 ì •ê·œì‹ ì¼ì¹˜ê°€ ì§€ì›ë˜ì§€ 않ìŒ" + +#: utils/adt/tid.c:71 utils/adt/tid.c:79 utils/adt/tid.c:87 +#, c-format +msgid "invalid input syntax for type tid: \"%s\"" +msgstr "tid 형ì‹ì˜ ìž…ë ¥ êµ¬ë¬¸ì´ ìž˜ëª»ë¨: \"%s\"" + +#: utils/adt/timestamp.c:99 +#, c-format +msgid "TIMESTAMP(%d)%s precision must not be negative" +msgstr "TIMESTAMP(%d)%s ì •ë°€ë„로 ìŒìˆ˜ë¥¼ 사용할 수 없습니다" + +#: utils/adt/timestamp.c:105 +#, c-format +msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d" +msgstr "TIMESTAMP(%d)%s ì •ë°€ë„는 최대값(%d)으로 줄였습니다" + +#: utils/adt/timestamp.c:170 utils/adt/timestamp.c:445 +#, c-format +msgid "timestamp out of range: \"%s\"" +msgstr "타임스탬프 ê°’ì´ ë²”ìœ„ë¥¼ 벗어났ìŒ: \"%s\"" + +#: utils/adt/timestamp.c:188 utils/adt/timestamp.c:463 +#: utils/adt/timestamp.c:990 +#, c-format +msgid "date/time value \"%s\" is no longer supported" +msgstr "ë‚ ì§œ/시간 ê°’ \"%s\"ì€(는) ë” ì´ìƒ ì§€ì›ë˜ì§€ 않ìŒ" + +#: utils/adt/timestamp.c:258 utils/adt/timestamp.c:754 +#, c-format +msgid "timestamp cannot be NaN" +msgstr "타임스탬프 값으로 NaN ê°’ì„ ì§€ì •í•  수 ì—†ìŒ" + +#: utils/adt/timestamp.c:380 +#, c-format +msgid "timestamp(%d) precision must be between %d and %d" +msgstr "타임스탬프(%d) ì •ë°€ë„는 %dì—서 %d 사ì´ì—¬ì•¼ 함" + +#: utils/adt/timestamp.c:513 +#, c-format +msgid "invalid input syntax for numeric time zone: \"%s\"" +msgstr "숫ìží˜• 타임 ì¡´ ìž…ë ¥ì— ë¬¸ë²• 오류가 있ìŒ: \"%s\"" + +#: utils/adt/timestamp.c:515 +#, c-format +msgid "Numeric time zones must have \"-\" or \"+\" as first character." +msgstr "숫ìží˜• 타임 ì¡´ 형ì‹ì€ 처ìŒì— \"-\" ë˜ëŠ” \"+\" 문ìžê°€ 있어야 합니다." + +#: utils/adt/timestamp.c:528 +#, c-format +msgid "numeric time zone \"%s\" out of range" +msgstr "\"%s\" 숫ìží˜• 타임 ì¡´ 범위 벗어남" + +#: utils/adt/timestamp.c:631 utils/adt/timestamp.c:641 +#: utils/adt/timestamp.c:653 +#, c-format +msgid "timestamp out of range: %d-%02d-%02d %d:%02d:%02g" +msgstr "타임스탬프 ê°’ì´ ë²”ìœ„ë¥¼ 벗어났ìŒ: %d-%02d-%02d %d:%02d:%02g" + +#: utils/adt/timestamp.c:772 utils/adt/timestamp.c:788 +#, c-format +msgid "timestamp out of range: \"%g\"" +msgstr "타임스탬프 ê°’ì´ ë²”ìœ„ë¥¼ 벗어났ìŒ: \"%g\"" + +#: utils/adt/timestamp.c:984 utils/adt/timestamp.c:1608 +#: utils/adt/timestamp.c:2121 utils/adt/timestamp.c:3273 +#: utils/adt/timestamp.c:3278 utils/adt/timestamp.c:3283 +#: utils/adt/timestamp.c:3333 utils/adt/timestamp.c:3340 +#: utils/adt/timestamp.c:3347 utils/adt/timestamp.c:3367 +#: utils/adt/timestamp.c:3374 utils/adt/timestamp.c:3381 +#: utils/adt/timestamp.c:3411 utils/adt/timestamp.c:3419 +#: utils/adt/timestamp.c:3464 utils/adt/timestamp.c:3804 +#: utils/adt/timestamp.c:3933 utils/adt/timestamp.c:4324 +#, c-format +msgid "interval out of range" +msgstr "ê°„ê²©ì´ ë²”ìœ„ë¥¼ 벗어남" + +#: utils/adt/timestamp.c:1125 utils/adt/timestamp.c:1158 +#, c-format +msgid "invalid INTERVAL type modifier" +msgstr "ìž˜ëª»ëœ INTERVAL í˜•ì‹ í•œì •ìž" + +#: utils/adt/timestamp.c:1141 +#, c-format +msgid "INTERVAL(%d) precision must not be negative" +msgstr "INTERVAL(%d) ì •ë°€ë„로 ìŒìˆ˜ê°’ì´ ì˜¬ 수 없습니다" + +#: utils/adt/timestamp.c:1147 +#, c-format +msgid "INTERVAL(%d) precision reduced to maximum allowed, %d" +msgstr "INTERVAL(%d) ì •ë°€ë„는 허용 최대치(%d)로 ê°ì†Œ ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: utils/adt/timestamp.c:1552 +#, c-format +msgid "interval(%d) precision must be between %d and %d" +msgstr "간격(%d) ì •ë°€ë„는 %dì—서 %d 사ì´ì—¬ì•¼ 함" + +#: utils/adt/timestamp.c:2850 +#, c-format +msgid "cannot subtract infinite timestamps" +msgstr "타임스탬프 ë¬´í•œê°’ì„ ì¶”ì¶œ í•  수 ì—†ìŒ" + +#: utils/adt/timestamp.c:4059 utils/adt/timestamp.c:4584 +#: utils/adt/timestamp.c:4768 utils/adt/timestamp.c:4793 +#, c-format +msgid "timestamp units \"%s\" not supported" +msgstr "\"%s\" timestamp ìœ ë‹›ì€ ì§€ì›í•˜ì§€ 않습니다" + +#: utils/adt/timestamp.c:4073 utils/adt/timestamp.c:4538 +#: utils/adt/timestamp.c:4803 +#, c-format +msgid "timestamp units \"%s\" not recognized" +msgstr "\"%s\" timestamp ìœ ë‹›ì„ ì²˜ë¦¬í•˜ì§€ 못했습니다" + +#: utils/adt/timestamp.c:4213 utils/adt/timestamp.c:4579 +#: utils/adt/timestamp.c:4990 utils/adt/timestamp.c:5016 +#, c-format +msgid "timestamp with time zone units \"%s\" not supported" +msgstr "\"%s\" 시간대 ìœ ë‹›ì´ ìžˆëŠ” timestamp ìžë£Œí˜•ì€ ì§€ì›í•˜ì§€ 않습니다" + +#: utils/adt/timestamp.c:4230 utils/adt/timestamp.c:4533 +#: utils/adt/timestamp.c:5025 +#, c-format +msgid "timestamp with time zone units \"%s\" not recognized" +msgstr "\"%s\" 시간대 ìœ ë‹›ì´ ìžˆëŠ” timestamp ê°’ì„ ì²˜ë¦¬í•˜ì§€ 못했습니다" + +#: utils/adt/timestamp.c:4311 +#, c-format +msgid "" +"interval units \"%s\" not supported because months usually have fractional " +"weeks" +msgstr "" + +#: utils/adt/timestamp.c:4317 utils/adt/timestamp.c:5131 +#, c-format +msgid "interval units \"%s\" not supported" +msgstr "\"%s\" 유닛 간격(interval units)ì€ ì§€ì›í•˜ì§€ 않습니다" + +#: utils/adt/timestamp.c:4333 utils/adt/timestamp.c:5158 +#, c-format +msgid "interval units \"%s\" not recognized" +msgstr "\"%s\" 유닛 간격(interval units)ì„ ì²˜ë¦¬í•˜ì§€ 못했습니다" + +#: utils/adt/trigfuncs.c:42 +#, c-format +msgid "suppress_redundant_updates_trigger: must be called as trigger" +msgstr "suppress_redundant_updates_trigger: 트리거로 호출ë˜ì–´ì•¼ 함" + +#: utils/adt/trigfuncs.c:48 +#, c-format +msgid "suppress_redundant_updates_trigger: must be called on update" +msgstr "suppress_redundant_updates_trigger: ì—…ë°ì´íЏ 시 호출ë˜ì–´ì•¼ 함" + +#: utils/adt/trigfuncs.c:54 +#, c-format +msgid "suppress_redundant_updates_trigger: must be called before update" +msgstr "suppress_redundant_updates_trigger: ì—…ë°ì´íЏ ì „ì— í˜¸ì¶œë˜ì–´ì•¼ 함" + +#: utils/adt/trigfuncs.c:60 +#, c-format +msgid "suppress_redundant_updates_trigger: must be called for each row" +msgstr "suppress_redundant_updates_trigger: ê° í–‰ì— ëŒ€í•´ 호출ë˜ì–´ì•¼ 함" + +#: utils/adt/tsgistidx.c:99 +#, c-format +msgid "gtsvector_in not implemented" +msgstr "gtsvector_inì´ êµ¬í˜„ë˜ì–´ 있지 않ìŒ" + +#: utils/adt/tsquery.c:166 +#, c-format +msgid "distance in phrase operator should not be greater than %d" +msgstr "ë¶„ì„ ìž‘ì—…ì—서 사용한 ê±°ë¦¬ê°’ì€ %d 보다 í´ ìˆ˜ 없습니다" + +#: utils/adt/tsquery.c:254 utils/adt/tsquery.c:513 +#: utils/adt/tsvector_parser.c:141 +#, c-format +msgid "syntax error in tsquery: \"%s\"" +msgstr "tsqueryì— êµ¬ë¬¸ 오류가 있ìŒ: \"%s\"" + +#: utils/adt/tsquery.c:275 +#, c-format +msgid "no operand in tsquery: \"%s\"" +msgstr "tsqueryì— í”¼ì—°ì‚°ìžê°€ ì—†ìŒ: \"%s\"" + +#: utils/adt/tsquery.c:358 +#, c-format +msgid "value is too big in tsquery: \"%s\"" +msgstr "tsqueryì˜ ê°’ì´ ë„ˆë¬´ í¼: \"%s\"" + +#: utils/adt/tsquery.c:363 +#, c-format +msgid "operand is too long in tsquery: \"%s\"" +msgstr "tsqueryì˜ í”¼ì—°ì‚°ìžê°€ 너무 긺: \"%s\"" + +#: utils/adt/tsquery.c:391 +#, c-format +msgid "word is too long in tsquery: \"%s\"" +msgstr "tsqueryì˜ ë‹¨ì–´ê°€ 너무 긺: \"%s\"" + +#: utils/adt/tsquery.c:642 +#, c-format +msgid "text-search query doesn't contain lexemes: \"%s\"" +msgstr "í…스트 검색 ì¿¼ë¦¬ì— ì–´íœ˜ì†Œê°€ í¬í•¨ë˜ì–´ 있지 않ìŒ: \"%s\"" + +#: utils/adt/tsquery.c:653 utils/adt/tsquery_util.c:375 +#, c-format +msgid "tsquery is too large" +msgstr "tsquery 길ì´ê°€ 너무 ê¹ë‹ˆë‹¤" + +#: utils/adt/tsquery_cleanup.c:407 +#, c-format +msgid "" +"text-search query contains only stop words or doesn't contain lexemes, " +"ignored" +msgstr "" +"í…스트 검색 ì¿¼ë¦¬ì— ì¤‘ì§€ 단어만 í¬í•¨ë˜ì–´ 있거나 어휘소가 í¬í•¨ë˜ì–´ 있지 않ìŒ, " +"무시ë¨" + +#: utils/adt/tsquery_op.c:122 +#, c-format +msgid "distance in phrase operator should be non-negative and less than %d" +msgstr "ë¶„ì„ ìž‘ì—…ì—서 사용한 ê±°ë¦¬ê°’ì€ %d 보다 작고 양수값만 사용할 수 있습니다" + +#: utils/adt/tsquery_rewrite.c:321 +#, c-format +msgid "ts_rewrite query must return two tsquery columns" +msgstr "ts_rewrite 쿼리는 ë‘ ê°œì˜ tsquery ì—´ì„ ë°˜í™˜í•´ì•¼ 함" + +#: utils/adt/tsrank.c:412 +#, c-format +msgid "array of weight must be one-dimensional" +msgstr "가중치 ë°°ì—´ì€ ì¼ì°¨ì› ë°°ì—´ì´ì–´ì•¼ 함" + +#: utils/adt/tsrank.c:417 +#, c-format +msgid "array of weight is too short" +msgstr "가중치 ë°°ì—´ì´ ë„ˆë¬´ ì§§ìŒ" + +#: utils/adt/tsrank.c:422 +#, c-format +msgid "array of weight must not contain nulls" +msgstr "가중치 ë°°ì—´ì—는 nullì´ í¬í•¨ë˜ì§€ 않아야 함" + +#: utils/adt/tsrank.c:431 utils/adt/tsrank.c:868 +#, c-format +msgid "weight out of range" +msgstr "가중치가 범위를 벗어남" + +#: utils/adt/tsvector.c:213 +#, c-format +msgid "word is too long (%ld bytes, max %ld bytes)" +msgstr "단어가 너무 긺(%ldë°”ì´íЏ, 최대 %ldë°”ì´íЏ)" + +#: utils/adt/tsvector.c:220 +#, c-format +msgid "string is too long for tsvector (%ld bytes, max %ld bytes)" +msgstr "" +"문ìžì—´ì´ 너무 길어서 tsvectorì— ì‚¬ìš©í•  수 ì—†ìŒ(%ldë°”ì´íЏ, 최대 %ldë°”ì´íЏ)" + +#: utils/adt/tsvector_op.c:322 utils/adt/tsvector_op.c:609 +#: utils/adt/tsvector_op.c:777 +#, c-format +msgid "lexeme array may not contain nulls" +msgstr "어휘소 ë°°ì—´ì—는 nullì´ í¬í•¨ë˜ì§€ 않아야 함" + +#: utils/adt/tsvector_op.c:852 +#, c-format +msgid "weight array may not contain nulls" +msgstr "가중치 ë°°ì—´ì—는 nullì´ í¬í•¨ë˜ì§€ 않아야 함" + +#: utils/adt/tsvector_op.c:876 +#, c-format +msgid "unrecognized weight: \"%c\"" +msgstr "알 수 없는 가중치: \"%c\"" + +#: utils/adt/tsvector_op.c:2313 +#, c-format +msgid "ts_stat query must return one tsvector column" +msgstr "ts_stat 쿼리는 í•˜ë‚˜ì˜ tsvector ì¹¼ëŸ¼ì„ ë°˜í™˜í•´ì•¼ 함" + +#: utils/adt/tsvector_op.c:2495 +#, c-format +msgid "tsvector column \"%s\" does not exist" +msgstr "\"%s\" tsvector ì¹¼ëŸ¼ì´ ì—†ìŒ" + +#: utils/adt/tsvector_op.c:2501 +#, c-format +msgid "column \"%s\" is not of tsvector type" +msgstr "\"%s\" ì¹¼ëŸ¼ì€ tsvector 형ì‹ì´ 아님" + +#: utils/adt/tsvector_op.c:2513 +#, c-format +msgid "configuration column \"%s\" does not exist" +msgstr "\"%s\" 구성 ì¹¼ëŸ¼ì´ ì—†ìŒ" + +#: utils/adt/tsvector_op.c:2519 +#, c-format +msgid "column \"%s\" is not of regconfig type" +msgstr "\"%s\" ì¹¼ëŸ¼ì€ regconfig í˜•ì´ ì•„ë‹˜" + +#: utils/adt/tsvector_op.c:2526 +#, c-format +msgid "configuration column \"%s\" must not be null" +msgstr "\"%s\" 구성 ì¹¼ëŸ¼ì€ nullì´ ì•„ë‹ˆì–´ì•¼ 함" + +#: utils/adt/tsvector_op.c:2539 +#, c-format +msgid "text search configuration name \"%s\" must be schema-qualified" +msgstr "\"%s\" í…스트 검색 구성 ì´ë¦„ì´ ìŠ¤í‚¤ë§ˆë¡œ 한정ë˜ì–´ì•¼ 함" + +#: utils/adt/tsvector_op.c:2564 +#, c-format +msgid "column \"%s\" is not of a character type" +msgstr "\"%s\" ì¹¼ëŸ¼ì€ ë¬¸ìží˜•ì´ ì•„ë‹˜" + +#: utils/adt/tsvector_parser.c:142 +#, c-format +msgid "syntax error in tsvector: \"%s\"" +msgstr "tsvectorì— êµ¬ë¬¸ 오류가 있ìŒ: \"%s\"" + +#: utils/adt/tsvector_parser.c:207 +#, c-format +msgid "there is no escaped character: \"%s\"" +msgstr "ì´ìŠ¤ì¼€ì´í”„ 문ìžê°€ ì—†ìŒ: \"%s\"" + +#: utils/adt/tsvector_parser.c:324 +#, c-format +msgid "wrong position info in tsvector: \"%s\"" +msgstr "tsvectorì— ìž˜ëª»ëœ ìœ„ì¹˜ ì •ë³´ê°€ 있ìŒ: \"%s\"" + +#: utils/adt/txid.c:339 +#, c-format +msgid "invalid input syntax for type txid_snapshot: \"%s\"" +msgstr "txid_snapshot í˜•ì˜ ìž…ë ¥ êµ¬ë¬¸ì´ ìž˜ëª»ë¨: \"%s\"" + +#: utils/adt/txid.c:534 +#, c-format +msgid "invalid external txid_snapshot data" +msgstr "외부 txid_snapshot ê°’ì´ ìž˜ëª»ë¨" + +#: utils/adt/uuid.c:145 +#, c-format +msgid "invalid input syntax for uuid: \"%s\"" +msgstr "uuidì˜ ìž…ë ¥ êµ¬ë¬¸ì´ ìž˜ëª»ë¨: \"%s\"" + +#: utils/adt/varbit.c:57 utils/adt/varchar.c:50 +#, c-format +msgid "length for type %s must be at least 1" +msgstr "%s ìžë£Œí˜•ì˜ ê¸¸ì´ëŠ” 최소 1 ì´ìƒì´ì–´ì•¼í•©ë‹ˆë‹¤" + +#: utils/adt/varbit.c:62 utils/adt/varchar.c:54 +#, c-format +msgid "length for type %s cannot exceed %d" +msgstr "%s ìžë£Œí˜•ì˜ ê¸¸ì´ëŠ” 최대 %d ì´í•˜ì—¬ì•¼í•©ë‹ˆë‹¤" + +#: utils/adt/varbit.c:163 utils/adt/varbit.c:475 utils/adt/varbit.c:973 +#, c-format +msgid "bit string length exceeds the maximum allowed (%d)" +msgstr "비트 문ìžì—´ 길ì´ê°€ 최대치 (%d)를 초과했습니다" + +#: utils/adt/varbit.c:177 utils/adt/varbit.c:320 utils/adt/varbit.c:377 +#, c-format +msgid "bit string length %d does not match type bit(%d)" +msgstr "" +"길ì´ê°€ %dì¸ ë¹„íŠ¸ 문ìžì—´ ìžë£ŒëŠ” bit(%d) ìžë£Œí˜•ì˜ ê¸¸ì´ì™€ ì¼ì¹˜í•˜ì§€ 않습니다" + +#: utils/adt/varbit.c:199 utils/adt/varbit.c:511 +#, c-format +msgid "\"%c\" is not a valid binary digit" +msgstr "\"%c\" 문ìžëŠ” 2진수 문ìžê°€ 아닙니다" + +#: utils/adt/varbit.c:224 utils/adt/varbit.c:536 +#, c-format +msgid "\"%c\" is not a valid hexadecimal digit" +msgstr "\"%c\" 문ìžëŠ” 16진수 문ìžê°€ 아닙니다" + +#: utils/adt/varbit.c:311 utils/adt/varbit.c:627 +#, c-format +msgid "invalid length in external bit string" +msgstr "외부 비트 문ìžì—´ì˜ 길ì´ê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: utils/adt/varbit.c:489 utils/adt/varbit.c:636 utils/adt/varbit.c:731 +#, c-format +msgid "bit string too long for type bit varying(%d)" +msgstr "비트 문ìžì—´ì´ 너무 ê¹ë‹ˆë‹¤(해당 ìžë£Œí˜• bit varying(%d))" + +#: utils/adt/varbit.c:1066 utils/adt/varbit.c:1168 utils/adt/varlena.c:842 +#: utils/adt/varlena.c:906 utils/adt/varlena.c:1050 utils/adt/varlena.c:2735 +#: utils/adt/varlena.c:2802 +#, c-format +msgid "negative substring length not allowed" +msgstr "substringì—서 ìŒìˆ˜ 길ì´ëŠ” 허용하지 않ìŒ" + +#: utils/adt/varbit.c:1226 +#, c-format +msgid "cannot AND bit strings of different sizes" +msgstr "서로 í¬ê¸°ê°€ 틀린 비트 문ìžì—´ë¡œ AND ì—°ì‚°ì„ í•  수 없습니다." + +#: utils/adt/varbit.c:1268 +#, c-format +msgid "cannot OR bit strings of different sizes" +msgstr "서로 í¬ê¸°ê°€ 틀린 비트 문ìžì—´ë¡œ OR ì—°ì‚°ì„ í•  수 없습니다." + +#: utils/adt/varbit.c:1315 +#, c-format +msgid "cannot XOR bit strings of different sizes" +msgstr "서로 í¬ê¸°ê°€ 틀린 비트 문ìžì—´ì€ XOR ì—°ì‚°ì„ í•  수 없습니다." + +#: utils/adt/varbit.c:1803 utils/adt/varbit.c:1861 +#, c-format +msgid "bit index %d out of valid range (0..%d)" +msgstr "비트 %d ì¸ë±ìŠ¤ì˜ ë²”ìœ„ë¥¼ 벗어남 (0..%d)" + +#: utils/adt/varbit.c:1812 utils/adt/varlena.c:3002 +#, c-format +msgid "new bit must be 0 or 1" +msgstr "새 ë¹„íŠ¸ê°’ì€ 0 ë˜ëŠ” 1 ì´ì–´ì•¼í•©ë‹ˆë‹¤" + +#: utils/adt/varchar.c:154 utils/adt/varchar.c:307 +#, c-format +msgid "value too long for type character(%d)" +msgstr "character(%d) ìžë£Œí˜•ì— ë„ˆë¬´ 긴 ìžë£Œë¥¼ 담으려고 합니다." + +#: utils/adt/varchar.c:469 utils/adt/varchar.c:623 +#, c-format +msgid "value too long for type character varying(%d)" +msgstr "character varying(%d) ìžë£Œí˜•ì— ë„ˆë¬´ 긴 ìžë£Œë¥¼ 담으려고 합니다." + +#: utils/adt/varlena.c:1420 utils/adt/varlena.c:1825 +#, c-format +msgid "could not determine which collation to use for string comparison" +msgstr "문ìžì—´ ë¹„êµ ìž‘ì—…ì— ì‚¬ìš©í•  정렬규칙(collation)ì„ ê²°ì •í•  수 ì—†ìŒ" + +#: utils/adt/varlena.c:1478 utils/adt/varlena.c:1491 +#, c-format +msgid "could not convert string to UTF-16: error code %lu" +msgstr "UTF-16 ì¸ì½”딩으로 문ìžì—´ì„ 변환할 수 ì—†ìŒ: 오류번호 %lu" + +#: utils/adt/varlena.c:1506 +#, c-format +msgid "could not compare Unicode strings: %m" +msgstr "유니코드 문ìžì—´ ë¹„êµ ì‹¤íŒ¨: %m" + +#: utils/adt/varlena.c:2880 utils/adt/varlena.c:2911 utils/adt/varlena.c:2947 +#: utils/adt/varlena.c:2990 +#, c-format +msgid "index %d out of valid range, 0..%d" +msgstr "%d ì¸ë±ìŠ¤ì˜ ë²”ìœ„ë¥¼ 벗어남, 0..%d" + +#: utils/adt/varlena.c:3925 +#, c-format +msgid "field position must be greater than zero" +msgstr "필드 위치 ê°’ì€ 0 보다 커야합니다" + +#: utils/adt/varlena.c:4804 +#, c-format +msgid "unterminated format() type specifier" +msgstr "마무리 ì•ˆëœ format() 형 ì‹ë³„ìž" + +#: utils/adt/varlena.c:4805 utils/adt/varlena.c:4939 utils/adt/varlena.c:5060 +#, c-format +msgid "For a single \"%%\" use \"%%%%\"." +msgstr "í•˜ë‚˜ì˜ \"%%\" 문ìžë¥¼ 표시하려면, \"%%%%\" 형태로 사용하세요" + +#: utils/adt/varlena.c:4937 utils/adt/varlena.c:5058 +#, c-format +msgid "unrecognized format() type specifier \"%c\"" +msgstr "ì¸ì‹í•  수 없는 format() 형 ì‹ë³„ìž \"%c\"" + +#: utils/adt/varlena.c:4950 utils/adt/varlena.c:5007 +#, c-format +msgid "too few arguments for format()" +msgstr "format() ìž‘ì—…ì„ ìœ„í•œ ì¸ìžê°€ 너무 ì ìŒ" + +#: utils/adt/varlena.c:5102 utils/adt/varlena.c:5285 +#, c-format +msgid "number is out of range" +msgstr "수치 범위를 벗어남" + +#: utils/adt/varlena.c:5166 utils/adt/varlena.c:5194 +#, c-format +msgid "format specifies argument 0, but arguments are numbered from 1" +msgstr "" +"format 함수ì—서 사용할 수 있는 ì¸ìž 위치 번호는 0ì´ ì•„ë‹ˆë¼, 1부터 시작합니다" + +#: utils/adt/varlena.c:5187 +#, c-format +msgid "width argument position must be ended by \"$\"" +msgstr "ë„“ì´ ì¸ìž ìœ„ì¹˜ê°’ì€ \"$\" 문ìžë¡œ ë나야 합니다" + +#: utils/adt/varlena.c:5232 +#, c-format +msgid "null values cannot be formatted as an SQL identifier" +msgstr "null ê°’ì€ SQL ì‹ë³„ìžë¡œ í¬ë©§ë  수 ì—†ìŒ" + +#: utils/adt/windowfuncs.c:243 +#, c-format +msgid "argument of ntile must be greater than zero" +msgstr "ntileì˜ ì¸ìžëŠ” 0보다 커야 함" + +#: utils/adt/windowfuncs.c:465 +#, c-format +msgid "argument of nth_value must be greater than zero" +msgstr "nth_valueì˜ ì¸ìžëŠ” 0보다 커야 함" + +#: utils/adt/xml.c:171 +#, c-format +msgid "unsupported XML feature" +msgstr "ì§€ì›ë˜ì§€ 않는 XML 기능" + +#: utils/adt/xml.c:172 +#, c-format +msgid "This functionality requires the server to be built with libxml support." +msgstr "ì´ ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ë ¤ë©´ libxml ì§€ì›ìœ¼ë¡œ 서버를 빌드해야 합니다." + +#: utils/adt/xml.c:173 +#, c-format +msgid "You need to rebuild PostgreSQL using --with-libxml." +msgstr "--with-libxmlì„ ì‚¬ìš©í•˜ì—¬ PostgreSQLì„ ë‹¤ì‹œ 빌드해야 합니다." + +#: utils/adt/xml.c:192 utils/mb/mbutils.c:523 +#, c-format +msgid "invalid encoding name \"%s\"" +msgstr "\"%s\" ì¸ì½”딩 ì´ë¦„ì´ ìž˜ëª»ë¨" + +#: utils/adt/xml.c:435 utils/adt/xml.c:440 +#, c-format +msgid "invalid XML comment" +msgstr "ìž˜ëª»ëœ XML 주ì„" + +#: utils/adt/xml.c:569 +#, c-format +msgid "not an XML document" +msgstr "XML 문서가 아님" + +#: utils/adt/xml.c:728 utils/adt/xml.c:751 +#, c-format +msgid "invalid XML processing instruction" +msgstr "ìž˜ëª»ëœ XML 처리 명령" + +#: utils/adt/xml.c:729 +#, c-format +msgid "XML processing instruction target name cannot be \"%s\"." +msgstr "XML 처리 명령 ëŒ€ìƒ ì´ë¦„ì€ \"%s\"ì¼ ìˆ˜ 없습니다." + +#: utils/adt/xml.c:752 +#, c-format +msgid "XML processing instruction cannot contain \"?>\"." +msgstr "XML 처리 명령ì—는 \"?>\"를 í¬í•¨í•  수 없습니다." + +#: utils/adt/xml.c:831 +#, c-format +msgid "xmlvalidate is not implemented" +msgstr "xmlvalidateê°€ 구현ë˜ì–´ 있지 않ìŒ" + +#: utils/adt/xml.c:910 +#, c-format +msgid "could not initialize XML library" +msgstr "XML ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ 초기화할 수 ì—†ìŒ" + +#: utils/adt/xml.c:911 +#, c-format +msgid "" +"libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u." +msgstr "" +"libxml2ì— í˜¸í™˜ë˜ì§€ 않는 ë¬¸ìž ìžë£Œí˜• 있ìŒ: sizeof(char)=%u, sizeof(xmlChar)=%u" + +#: utils/adt/xml.c:997 +#, c-format +msgid "could not set up XML error handler" +msgstr "XML 오류 핸들러를 설정할 수 ì—†ìŒ" + +#: utils/adt/xml.c:998 +#, c-format +msgid "" +"This probably indicates that the version of libxml2 being used is not " +"compatible with the libxml2 header files that PostgreSQL was built with." +msgstr "" +"ì´ ë¬¸ì œëŠ” PostgreSQL 서버를 만들 때 사용한 libxml2 í—¤ë” íŒŒì¼ì´ í˜¸í™˜ì„±ì´ ì—†ëŠ” " +"것 같습니다." + +#: utils/adt/xml.c:1735 +msgid "Invalid character value." +msgstr "ìž˜ëª»ëœ ë¬¸ìž ê°’ìž…ë‹ˆë‹¤." + +#: utils/adt/xml.c:1738 +msgid "Space required." +msgstr "ê³µê°„ì´ í•„ìš”í•©ë‹ˆë‹¤." + +#: utils/adt/xml.c:1741 +msgid "standalone accepts only 'yes' or 'no'." +msgstr "ë…립 ì‹¤í–‰í˜•ì€ 'yes' ë˜ëŠ” 'no'ë§Œ 허용합니다." + +#: utils/adt/xml.c:1744 +msgid "Malformed declaration: missing version." +msgstr "ì„ ì–¸ 형ì‹ì´ 잘못ë¨: ë²„ì „ì´ ëˆ„ë½ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: utils/adt/xml.c:1747 +msgid "Missing encoding in text declaration." +msgstr "í…스트 ì„ ì–¸ì—서 ì¸ì½”ë”©ì´ ëˆ„ë½ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: utils/adt/xml.c:1750 +msgid "Parsing XML declaration: '?>' expected." +msgstr "XML ì„ ì–¸ 구문 ë¶„ì„ ì¤‘: '?>'ê°€ 필요합니다." + +#: utils/adt/xml.c:1753 +#, c-format +msgid "Unrecognized libxml error code: %d." +msgstr "ì¸ì‹í•  수 없는 libxml 오류 코드: %d." + +#: utils/adt/xml.c:2028 +#, c-format +msgid "XML does not support infinite date values." +msgstr "XMLì€ ë¬´í•œ ë‚ ì§œ ê°’ì„ ì§€ì›í•˜ì§€ 않습니다." + +#: utils/adt/xml.c:2050 utils/adt/xml.c:2077 +#, c-format +msgid "XML does not support infinite timestamp values." +msgstr "XMLì€ ë¬´í•œ 타임스탬프 ê°’ì„ ì§€ì›í•˜ì§€ 않습니다." + +#: utils/adt/xml.c:2468 +#, c-format +msgid "invalid query" +msgstr "ìž˜ëª»ëœ ì¿¼ë¦¬" + +#: utils/adt/xml.c:3793 +#, c-format +msgid "invalid array for XML namespace mapping" +msgstr "XML 네임스페ì´ìФ ë§¤í•‘ì— ì‚¬ìš©í•  ë°°ì—´ì´ ìž˜ëª»ë¨" + +#: utils/adt/xml.c:3794 +#, c-format +msgid "" +"The array must be two-dimensional with length of the second axis equal to 2." +msgstr "" +"ì´ ë°°ì—´ì€ key, value로 êµ¬ì„±ëœ ë°°ì—´ì„ ìš”ì†Œë¡œ 하는 2ì°¨ì› ë°°ì—´ì´ì–´ì•¼ 합니다." + +#: utils/adt/xml.c:3818 +#, c-format +msgid "empty XPath expression" +msgstr "XPath ì‹ì´ 비어 있ìŒ" + +#: utils/adt/xml.c:3867 +#, c-format +msgid "neither namespace name nor URI may be null" +msgstr "네임스페ì´ìФ ì´ë¦„ ë° URI는 nullì¼ ìˆ˜ ì—†ìŒ" + +#: utils/adt/xml.c:3874 +#, c-format +msgid "could not register XML namespace with name \"%s\" and URI \"%s\"" +msgstr "" +"ì´ë¦„ \"%s\" ë° URI \"%s\"ì„(를) 사용하여 XML 네임스페ì´ìŠ¤ë¥¼ 등ë¡í•  수 ì—†ìŒ" + +# # nonun 부분 end +#: utils/cache/lsyscache.c:2580 utils/cache/lsyscache.c:2613 +#: utils/cache/lsyscache.c:2646 utils/cache/lsyscache.c:2679 +#, c-format +msgid "type %s is only a shell" +msgstr "%s 형ì‹ì€ ì…¸ì¼ ë¿ìž„" + +#: utils/cache/lsyscache.c:2585 +#, c-format +msgid "no input function available for type %s" +msgstr "%s ìžë£Œí˜•ì„ ìœ„í•œ ìž…ë ¥ 함수가 없습니다" + +#: utils/cache/lsyscache.c:2618 +#, c-format +msgid "no output function available for type %s" +msgstr "%s ìžë£Œí˜•ì„ ìœ„í•œ 출력 함수가 없습니다" + +#: utils/cache/plancache.c:718 +#, c-format +msgid "cached plan must not change result type" +msgstr "ìºì‹œëœ 계íšì—서 ê²°ê³¼ 형ì‹ì„ 바꾸지 않아야 함" + +#: utils/cache/relcache.c:5226 +#, c-format +msgid "could not create relation-cache initialization file \"%s\": %m" +msgstr "\"%s\" 릴레ì´ì…˜-ìºì‹œ 초기화 파ì¼ì„ 만들 수 ì—†ìŒ: %m" + +#: utils/cache/relcache.c:5228 +#, c-format +msgid "Continuing anyway, but there's something wrong." +msgstr "어쨌든 계ì†í•˜ëŠ”ë°, 뭔가 잘못 ëœ ê²ƒì´ ìžˆìŠµë‹ˆë‹¤." + +#: utils/cache/relcache.c:5502 +#, c-format +msgid "could not remove cache file \"%s\": %m" +msgstr "\"%s\" ìºì‰¬ 파ì¼ì„ 삭제할 수 ì—†ìŒ: %m" + +#: utils/cache/relmapper.c:508 +#, c-format +msgid "cannot PREPARE a transaction that modified relation mapping" +msgstr "릴레ì´ì…˜ ë§µí•‘ì„ ë³€ê²½í•˜ëŠ” íŠ¸ëžœìž­ì…œì„ PREPAREí•  수 ì—†ìŒ" + +#: utils/cache/relmapper.c:651 utils/cache/relmapper.c:751 +#, c-format +msgid "could not open relation mapping file \"%s\": %m" +msgstr "\"%s\" 릴레ì´ì…˜ 맵핑 파ì¼ì„ ì—´ 수 ì—†ìŒ: %m" + +#: utils/cache/relmapper.c:664 +#, c-format +msgid "could not read relation mapping file \"%s\": %m" +msgstr "\"%s\" 릴레ì´ì…˜ 맵핑 파ì¼ì„ ì½ì„ 수 ì—†ìŒ: %m" + +#: utils/cache/relmapper.c:674 +#, c-format +msgid "relation mapping file \"%s\" contains invalid data" +msgstr "\"%s\" 릴레ì´ì…˜ 맵핑 파ì¼ì— ìž˜ëª»ëœ ë°ì´í„°ê°€ 있습니다" + +#: utils/cache/relmapper.c:684 +#, c-format +msgid "relation mapping file \"%s\" contains incorrect checksum" +msgstr "\"%s\" 릴레ì´ì…˜ 맵핑 파ì¼ì— ìž˜ëª»ëœ checksum ê°’ì´ ìžˆìŒ" + +#: utils/cache/relmapper.c:784 +#, c-format +msgid "could not write to relation mapping file \"%s\": %m" +msgstr "\"%s\" 릴레ì´ì…˜ 맵핑 파ì¼ì„ 쓸 수 없습니다: %m" + +#: utils/cache/relmapper.c:797 +#, c-format +msgid "could not fsync relation mapping file \"%s\": %m" +msgstr "\"%s\" 릴레ì´ì…˜ 맵핑 파ì¼ì„ fsync í•  수 ì—†ìŒ: %m" + +#: utils/cache/relmapper.c:803 +#, c-format +msgid "could not close relation mapping file \"%s\": %m" +msgstr "\"%s\" 릴레ì´ì…˜ 맵핑 파ì¼ì„ ë‹«ì„ ìˆ˜ ì—†ìŒ: %m" + +#: utils/cache/typcache.c:1207 +#, c-format +msgid "type %s is not composite" +msgstr "%s ìžë£Œí˜•ì€ ë³µí•© ìžë£Œí˜•ì´ ì•„ë‹™ë‹ˆë‹¤" + +#: utils/cache/typcache.c:1221 +#, c-format +msgid "record type has not been registered" +msgstr "레코드 형ì‹ì´ 등ë¡ë˜ì§€ 않았ìŒ" + +#: utils/error/assert.c:34 +#, c-format +msgid "TRAP: ExceptionalCondition: bad arguments\n" +msgstr "TRAP: ExceptionalCondition: ìž˜ëª»ëœ ì¸ìž\n" + +#: utils/error/assert.c:37 +#, c-format +msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n" +msgstr "TRAP: %s(\"%s\", 파ì¼: \"%s\", 줄: %d)\n" + +#: utils/error/elog.c:322 utils/error/elog.c:1306 +#, c-format +msgid "error occurred at %s:%d before error message processing is available\n" +msgstr "오류 메시지 처리가 활성화 ë˜ê¸° ì „ì— %s:%d ì—서 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤\n" + +#: utils/error/elog.c:1889 +#, c-format +msgid "could not reopen file \"%s\" as stderr: %m" +msgstr "stderr 로 사용하기 위해 \"%s\" íŒŒì¼ ë‹¤ì‹œ 열기 실패: %m" + +#: utils/error/elog.c:1902 +#, c-format +msgid "could not reopen file \"%s\" as stdout: %m" +msgstr "표준출력(stdout)으로 사용하기 위해 \"%s\" 파ì¼ì„ 여는 ë„중 실패: %m" + +#: utils/error/elog.c:2389 utils/error/elog.c:2406 utils/error/elog.c:2422 +msgid "[unknown]" +msgstr "[알수없ìŒ]" + +#: utils/error/elog.c:2882 utils/error/elog.c:3185 utils/error/elog.c:3293 +msgid "missing error text" +msgstr "오류 ë‚´ìš©ì„ ëºë‹ˆë‹¤" + +#: utils/error/elog.c:2885 utils/error/elog.c:2888 utils/error/elog.c:3296 +#: utils/error/elog.c:3299 +#, c-format +msgid " at character %d" +msgstr " %d 번째 ë¬¸ìž ë¶€ê·¼" + +#: utils/error/elog.c:2898 utils/error/elog.c:2905 +msgid "DETAIL: " +msgstr "ìƒì„¸ì •ë³´: " + +#: utils/error/elog.c:2912 +msgid "HINT: " +msgstr "힌트: " + +#: utils/error/elog.c:2919 +msgid "QUERY: " +msgstr "쿼리:" + +#: utils/error/elog.c:2926 +msgid "CONTEXT: " +msgstr "ë‚´ìš©: " + +#: utils/error/elog.c:2936 +#, c-format +msgid "LOCATION: %s, %s:%d\n" +msgstr "위치: %s, %s:%d\n" + +#: utils/error/elog.c:2943 +#, c-format +msgid "LOCATION: %s:%d\n" +msgstr "위치: %s:%d\n" + +#: utils/error/elog.c:2957 +msgid "STATEMENT: " +msgstr "명령 구문: " + +#. translator: This string will be truncated at 47 +#. characters expanded. +#: utils/error/elog.c:3414 +#, c-format +msgid "operating system error %d" +msgstr "ìš´ì˜ì²´ì œ 오류 %d" + +#: utils/error/elog.c:3612 +msgid "DEBUG" +msgstr "디버그" + +#: utils/error/elog.c:3616 +msgid "LOG" +msgstr "로그" + +#: utils/error/elog.c:3619 +msgid "INFO" +msgstr "ì •ë³´" + +#: utils/error/elog.c:3622 +msgid "NOTICE" +msgstr "알림" + +#: utils/error/elog.c:3625 +msgid "WARNING" +msgstr "경고" + +#: utils/error/elog.c:3628 +msgid "ERROR" +msgstr "오류" + +#: utils/error/elog.c:3631 +msgid "FATAL" +msgstr "치명ì ì˜¤ë¥˜" + +#: utils/error/elog.c:3634 +msgid "PANIC" +msgstr "ì†ìƒ" + +#: utils/fmgr/dfmgr.c:117 +#, c-format +msgid "could not find function \"%s\" in file \"%s\"" +msgstr "\"%s\" 함수를 \"%s\" 파ì¼ì—서 ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: utils/fmgr/dfmgr.c:196 utils/fmgr/dfmgr.c:405 utils/fmgr/dfmgr.c:453 +#, c-format +msgid "could not access file \"%s\": %m" +msgstr "\"%s\" 파ì¼ì— 액세스할 수 ì—†ìŒ: %m" + +#: utils/fmgr/dfmgr.c:234 +#, c-format +msgid "could not load library \"%s\": %s" +msgstr "\"%s\" ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ 불러 올 수 ì—†ìŒ: %s" + +#: utils/fmgr/dfmgr.c:266 +#, c-format +msgid "incompatible library \"%s\": missing magic block" +msgstr "\"%s\" ë¼ì´ë¸ŒëŸ¬ë¦¬ëŠ” 사용할 수 없습니다: magic black ì—†ìŒ" + +#: utils/fmgr/dfmgr.c:268 +#, c-format +msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro." +msgstr "확장 ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ 만들 때, PG_MODULE_MAGIC 매í¬ë¡œë¥¼ 사용해서 만드세요." + +#: utils/fmgr/dfmgr.c:304 +#, c-format +msgid "incompatible library \"%s\": version mismatch" +msgstr "\"%s\" ë¼ì´ë¸ŒëŸ¬ë¦¬ëŠ” 사용할 수 없습니다: ë²„ì „ì´ í‹€ë¦¼" + +#: utils/fmgr/dfmgr.c:306 +#, c-format +msgid "Server is version %d.%d, library is version %d.%d." +msgstr "서버 버전 = %d.%d, ë¼ì´ë¸ŒëŸ¬ë¦¬ 버전 %d.%d." + +#: utils/fmgr/dfmgr.c:325 +#, c-format +msgid "Server has FUNC_MAX_ARGS = %d, library has %d." +msgstr "ì„œë²„ì˜ ê²½ìš° FUNC_MAX_ARGS = %dì¸ë° ë¼ì´ë¸ŒëŸ¬ë¦¬ì— %dì´(ê°€) 있습니다." + +#: utils/fmgr/dfmgr.c:334 +#, c-format +msgid "Server has INDEX_MAX_KEYS = %d, library has %d." +msgstr "ì„œë²„ì˜ ê²½ìš° INDEX_MAX_KEYS = %dì¸ë° ë¼ì´ë¸ŒëŸ¬ë¦¬ì— %dì´(ê°€) 있습니다." + +#: utils/fmgr/dfmgr.c:343 +#, c-format +msgid "Server has NAMEDATALEN = %d, library has %d." +msgstr "ì„œë²„ì˜ ê²½ìš° NAMEDATALEN = %dì¸ë° ë¼ì´ë¸ŒëŸ¬ë¦¬ì— %dì´(ê°€) 있습니다." + +#: utils/fmgr/dfmgr.c:352 +#, c-format +msgid "Server has FLOAT4PASSBYVAL = %s, library has %s." +msgstr "ì„œë²„ì˜ ê²½ìš° FLOAT4PASSBYVAL = %sì¸ë° ë¼ì´ë¸ŒëŸ¬ë¦¬ì— %sì´(ê°€) 있습니다." + +#: utils/fmgr/dfmgr.c:361 +#, c-format +msgid "Server has FLOAT8PASSBYVAL = %s, library has %s." +msgstr "ì„œë²„ì˜ ê²½ìš° FLOAT8PASSBYVAL = %sì¸ë° ë¼ì´ë¸ŒëŸ¬ë¦¬ì— %sì´(ê°€) 있습니다." + +#: utils/fmgr/dfmgr.c:368 +msgid "Magic block has unexpected length or padding difference." +msgstr "ë§¤ì§ ë¸”ë¡ì— 예기치 ì•Šì€ ê¸¸ì´ ë˜ëŠ” 여백 ì°¨ì´ê°€ 있습니다." + +#: utils/fmgr/dfmgr.c:371 +#, c-format +msgid "incompatible library \"%s\": magic block mismatch" +msgstr "\"%s\" ë¼ì´ë¸ŒëŸ¬ë¦¬ëŠ” 사용할 수 없습니다: magic black 틀림" + +#: utils/fmgr/dfmgr.c:535 +#, c-format +msgid "access to library \"%s\" is not allowed" +msgstr "\"%s\" ë¼ì´ë¸ŒëŸ¬ë¦¬ ì‚¬ìš©ì´ ê¸ˆì§€ë˜ì–´ìžˆìŠµë‹ˆë‹¤" + +#: utils/fmgr/dfmgr.c:561 +#, c-format +msgid "invalid macro name in dynamic library path: %s" +msgstr "ë™ì  ë¼ì´ë¸ŒëŸ¬ë¦¬ 경로ì—서 ìž˜ëª»ëœ ë§¤í¬ë¡œ ì´ë¦„: %s" + +#: utils/fmgr/dfmgr.c:601 +#, c-format +msgid "zero-length component in parameter \"dynamic_library_path\"" +msgstr "\"dynamic_library_path\" 매개 변수 값으로 길ì´ê°€ 0ì¸ ê°’ì„ ì‚¬ìš©í–ˆìŒ" + +#: utils/fmgr/dfmgr.c:620 +#, c-format +msgid "component in parameter \"dynamic_library_path\" is not an absolute path" +msgstr "\"dynamic_library_path\" 매개 변수 값으로 절대 경로를 사용할 수 ì—†ìŒ" + +#: utils/fmgr/fmgr.c:272 +#, c-format +msgid "internal function \"%s\" is not in internal lookup table" +msgstr "\"%s\" ë‚´ë¶€ 함수를 ë‚´ë¶€ 검색 í…Œì´ë¸”ì—서 ì°¾ì„ ìˆ˜ 없습니다" + +#: utils/fmgr/fmgr.c:479 +#, c-format +msgid "unrecognized API version %d reported by info function \"%s\"" +msgstr "_^_ %d 알수 없는 API ë²„ì „ì´ \"%s\" í•¨ìˆ˜ì— ì˜í•´ì„œ ë³´ê³ ë˜ì—ˆìŒ" + +#: utils/fmgr/fmgr.c:849 utils/fmgr/fmgr.c:2106 +#, c-format +msgid "function %u has too many arguments (%d, maximum is %d)" +msgstr "%u 함수는 너무 ë§Žì€ ì¸ìžë¥¼ 사용하고 ìžˆìŒ (%d, 최대 %d)" + +#: utils/fmgr/fmgr.c:2527 +#, c-format +msgid "language validation function %u called for language %u instead of %u" +msgstr "" +"%u OID 언어 유효성 검사 함수가 %u OID 프로시져 언어용으로 호출ë˜ì—ˆìŒ, ì›ëž˜ ì–¸" +"어는 %u" + +#: utils/fmgr/funcapi.c:353 +#, c-format +msgid "" +"could not determine actual result type for function \"%s\" declared to " +"return type %s" +msgstr "\"%s\" í•¨ìˆ˜ì˜ ì‹¤ìž¬ 리턴 ìžë£Œí˜•ì„ ì•Œ 수 ì—†ìŒ, ì •ì˜ëœ 리턴 ìžë£Œí˜•: %s" + +#: utils/fmgr/funcapi.c:1340 utils/fmgr/funcapi.c:1371 +#, c-format +msgid "number of aliases does not match number of columns" +msgstr "alias 수가 ì—´ 수와 틀립니다" + +#: utils/fmgr/funcapi.c:1365 +#, c-format +msgid "no column alias was provided" +msgstr "ì—´ ë³„ì¹­ì´ ì œê³µë˜ì§€ 않았ìŒ" + +#: utils/fmgr/funcapi.c:1389 +#, c-format +msgid "could not determine row description for function returning record" +msgstr "레코드를 리턴하는 함수를 위한 í–‰(row) 구성 정보를 구할 수 ì—†ìŒ" + +#: utils/init/miscinit.c:121 +#, c-format +msgid "could not change directory to \"%s\": %m" +msgstr "\"%s\" ì´ë¦„ì˜ ë””ë ‰í„°ë¦¬ë¡œ ì´ë™í•  수 없습니다: %m" + +#: utils/init/miscinit.c:449 utils/misc/guc.c:6016 +#, c-format +msgid "cannot set parameter \"%s\" within security-restricted operation" +msgstr "보안 제한 작업 ë‚´ì—서 \"%s\" 매개 변수를 설정할 수 ì—†ìŒ" + +#: utils/init/miscinit.c:510 +#, c-format +msgid "role with OID %u does not exist" +msgstr "%u OID ë¡¤ì´ ì—†ìŒ" + +#: utils/init/miscinit.c:540 +#, c-format +msgid "role \"%s\" is not permitted to log in" +msgstr "\"%s\" ë¡¤ì€ ì ‘ì†ì„ 허용하지 않ìŒ" + +#: utils/init/miscinit.c:558 +#, c-format +msgid "too many connections for role \"%s\"" +msgstr "\"%s\" ë¡¤ì˜ ìµœëŒ€ ë™ì‹œ ì ‘ì†ìˆ˜ë¥¼ 초과했습니다" + +#: utils/init/miscinit.c:618 +#, c-format +msgid "permission denied to set session authorization" +msgstr "세션 ì¸ì¦ì„ 지정하기 위한 ê¶Œí•œì´ ì—†ìŒ" + +#: utils/init/miscinit.c:701 +#, c-format +msgid "invalid role OID: %u" +msgstr "ìž˜ëª»ëœ ë¡¤ OID: %u" + +#: utils/init/miscinit.c:755 +#, c-format +msgid "database system is shut down" +msgstr "ë°ì´í„°ë² ì´ìФ 시스템 서비스를 중지했습니다" + +#: utils/init/miscinit.c:842 +#, c-format +msgid "could not create lock file \"%s\": %m" +msgstr "\"%s\" 잠금 파ì¼ì„ 만들 수 ì—†ìŒ: %m" + +#: utils/init/miscinit.c:856 +#, c-format +msgid "could not open lock file \"%s\": %m" +msgstr "\"%s\" 잠금파ì¼ì„ ì—´ 수 ì—†ìŒ: %m" + +#: utils/init/miscinit.c:862 +#, c-format +msgid "could not read lock file \"%s\": %m" +msgstr "\"%s\" 잠금 파ì¼ì„ ì½ì„ 수 ì—†ìŒ: %m" + +#: utils/init/miscinit.c:870 +#, c-format +msgid "lock file \"%s\" is empty" +msgstr "\"%s\" 잠금 파ì¼ì´ 비었ìŒ" + +#: utils/init/miscinit.c:871 +#, c-format +msgid "" +"Either another server is starting, or the lock file is the remnant of a " +"previous server startup crash." +msgstr "" + +#: utils/init/miscinit.c:918 +#, c-format +msgid "lock file \"%s\" already exists" +msgstr "\"%s\" 잠금 파ì¼ì´ ì´ë¯¸ 있ìŒ" + +#: utils/init/miscinit.c:922 +#, c-format +msgid "Is another postgres (PID %d) running in data directory \"%s\"?" +msgstr "" +"다른 postgres 프로그램(PID %d)ì´ \"%s\" ë°ì´í„° 디렉터리를 사용해서 실행중입니" +"까?" + +#: utils/init/miscinit.c:924 +#, c-format +msgid "Is another postmaster (PID %d) running in data directory \"%s\"?" +msgstr "" +"다른 postmaster 프로그램(PID %d)ì´ \"%s\" ë°ì´í„° 디렉터리를 사용해서 실행중입" +"니까?" + +#: utils/init/miscinit.c:927 +#, c-format +msgid "Is another postgres (PID %d) using socket file \"%s\"?" +msgstr "" +"다른 postgres 프로그램(PID %d)ì´ \"%s\" 소켓 파ì¼ì„ 사용해서 실행중입니까?" + +#: utils/init/miscinit.c:929 +#, c-format +msgid "Is another postmaster (PID %d) using socket file \"%s\"?" +msgstr "" +"다른 postmaster 프로그램(PID %d)ì´ \"%s\" 소켓 파ì¼ì„ 사용해서 실행중입니까?" + +#: utils/init/miscinit.c:965 +#, c-format +msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use" +msgstr "미리 í™•ë³´ëœ ê³µìœ  메모리 ì˜ì—­ (%lu 키, %lu ID)ì´ ì—¬ì „ížˆ 사용중입니다" + +#: utils/init/miscinit.c:968 +#, c-format +msgid "" +"If you're sure there are no old server processes still running, remove the " +"shared memory block or just delete the file \"%s\"." +msgstr "" +"확실하게 공유 메모리를 사용하는 다른 프로세스가 없다고 íŒë‹¨ë˜ë©´, 공유 메모리 " +"ì˜ì—­ì„ 삭제하거나 \"%s\" 파ì¼ì„ 지우십시오." + +#: utils/init/miscinit.c:984 +#, c-format +msgid "could not remove old lock file \"%s\": %m" +msgstr "\"%s\" 옛 잠금 파ì¼ì„ 삭제할 수 ì—†ìŒ: %m" + +#: utils/init/miscinit.c:986 +#, c-format +msgid "" +"The file seems accidentally left over, but it could not be removed. Please " +"remove the file by hand and try again." +msgstr "" +"그파ì¼ì€ 우연찮게 ì™¼ìª½ì„ ë„˜ì–´ê°„ 것(?) 같습지만, ì‚­ì œë  ìˆ˜ëŠ” 없습니다. ì§ì ‘ " +"ì…¸ ëª…ë ¹ì„ ì´ìš©í•´ì„œ 파ì¼ì„ ì‚­ì œ 하고 다시 시ë„í•´ 보십시오. - ë‚´ìš© ì°¸ 거시기 하" +"네" + +#: utils/init/miscinit.c:1022 utils/init/miscinit.c:1033 +#: utils/init/miscinit.c:1043 +#, c-format +msgid "could not write lock file \"%s\": %m" +msgstr "\"%s\" 잠금 파ì¼ì— 쓸 수 ì—†ìŒ: %m" + +#: utils/init/miscinit.c:1172 utils/init/miscinit.c:1301 utils/misc/guc.c:8818 +#, c-format +msgid "could not read from file \"%s\": %m" +msgstr "\"%s\" 파ì¼ì„ ì½ì„ 수 ì—†ìŒ: %m" + +#: utils/init/miscinit.c:1291 +#, c-format +msgid "could not open file \"%s\": %m; continuing anyway" +msgstr "\"%s\" 파ì¼ì„ ì—´ 수 ì—†ìŒ: %m; 어째든 ê³„ì† ì§„í–‰í•¨" + +#: utils/init/miscinit.c:1314 +#, c-format +msgid "lock file \"%s\" contains wrong PID: %ld instead of %ld" +msgstr "\"%s\" 잠금 파ì¼ì— 있는 PID ê°’ì´ ì´ìƒí•©ë‹ˆë‹¤: 현재값 %ld, ì›ëž˜ê°’ %ld" + +#: utils/init/miscinit.c:1356 utils/init/miscinit.c:1369 +#, c-format +msgid "\"%s\" is not a valid data directory" +msgstr "\"%s\" ê°’ì€ ë°”ë¥¸ ë°ì´í„°ë””렉터리가 아닙니다" + +#: utils/init/miscinit.c:1358 +#, c-format +msgid "File \"%s\" is missing." +msgstr "\"%s\" 파ì¼ì´ 없습니다." + +#: utils/init/miscinit.c:1371 +#, c-format +msgid "File \"%s\" does not contain valid data." +msgstr "\"%s\" 파ì¼ì— ìž˜ëª»ëœ ìžë£Œê°€ 기ë¡ë˜ì–´ 있습니다." + +#: utils/init/miscinit.c:1373 +#, c-format +msgid "You might need to initdb." +msgstr "initdb ëª…ë ¹ì„ ì‹¤í–‰í•´ 새 í´ëŸ¬ìŠ¤í„°ë¥¼ 만들어야 í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤." + +#: utils/init/miscinit.c:1381 +#, c-format +msgid "" +"The data directory was initialized by PostgreSQL version %ld.%ld, which is " +"not compatible with this version %s." +msgstr "" +"ì´ ë°ì´í„° 디렉터리는 PostgreSQL %ld.%ld 버전으로 초기화 ë˜ì–´ìžˆëŠ”ë°, ì´ ì„œë²„" +"ì˜ %s ë²„ì „ì€ ì´ ë²„ì „ê³¼ í˜¸í™˜ì„±ì´ ì—†ìŠµë‹ˆë‹¤." + +#: utils/init/miscinit.c:1452 +#, c-format +msgid "loaded library \"%s\"" +msgstr "\"%s\" ë¼ì´ë¸ŒëŸ¬ë¦¬ 로드 완료" + +#: utils/init/postinit.c:251 +#, c-format +msgid "" +"replication connection authorized: user=%s SSL enabled (protocol=%s, cipher=" +"%s, compression=%s)" +msgstr "" +"복제 ì—°ê²° ì¸ì¦: 사용ìž=%s SSL 활성화 (프로토콜=%s, 알고리즘=%s, ì••ì¶•=%s)" + +#: utils/init/postinit.c:253 utils/init/postinit.c:267 +msgid "off" +msgstr "off" + +#: utils/init/postinit.c:253 utils/init/postinit.c:267 +msgid "on" +msgstr "on" + +#: utils/init/postinit.c:257 +#, c-format +msgid "replication connection authorized: user=%s" +msgstr "복제 ì—°ê²° ì¸ì¦: 사용ìž=%s" + +#: utils/init/postinit.c:265 +#, c-format +msgid "" +"connection authorized: user=%s database=%s SSL enabled (protocol=%s, cipher=" +"%s, compression=%s)" +msgstr "" +"ì—°ê²° ì¸ì¦: 사용ìž=%s ë°ì´í„°ë² ì´ìФ=%s SSL 활성화 (프로토콜=%s, 알고리즘=%s, ì••" +"ì¶•=%s)" + +#: utils/init/postinit.c:271 +#, c-format +msgid "connection authorized: user=%s database=%s" +msgstr "ì—°ê²° ì¸ì¦: 사용ìž=%s ë°ì´í„°ë² ì´ìФ=%s" + +#: utils/init/postinit.c:303 +#, c-format +msgid "database \"%s\" has disappeared from pg_database" +msgstr "\"%s\" ë°ì´í„°ë² ì´ìŠ¤ëŠ” pg_database í•­ëª©ì— ì—†ìŠµë‹ˆë‹¤" + +#: utils/init/postinit.c:305 +#, c-format +msgid "Database OID %u now seems to belong to \"%s\"." +msgstr "ë°ì´í„°ë² ì´ìФ OID %uì´(ê°€) 현재 \"%s\"ì— ì†í•´ 있는 것 같습니다." + +#: utils/init/postinit.c:325 +#, c-format +msgid "database \"%s\" is not currently accepting connections" +msgstr "\"%s\" ë°ì´í„°ë² ì´ìŠ¤ëŠ” 현재 ì ‘ì†ì„ 허용하지 않습니다" + +#: utils/init/postinit.c:338 +#, c-format +msgid "permission denied for database \"%s\"" +msgstr "\"%s\" ë°ì´í„°ë² ì´ìФ 액세스 권한 ì—†ìŒ" + +#: utils/init/postinit.c:339 +#, c-format +msgid "User does not have CONNECT privilege." +msgstr "사용ìžì—게 CONNECT ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤." + +#: utils/init/postinit.c:356 +#, c-format +msgid "too many connections for database \"%s\"" +msgstr "\"%s\" ë°ì´í„°ë² ì´ìФ 최대 ì ‘ì†ìˆ˜ë¥¼ 초과했습니다" + +#: utils/init/postinit.c:378 utils/init/postinit.c:385 +#, c-format +msgid "database locale is incompatible with operating system" +msgstr "ë°ì´í„°ë² ì´ìФ 로케ì¼ì´ ìš´ì˜ ì²´ì œì™€ 호환ë˜ì§€ 않ìŒ" + +#: utils/init/postinit.c:379 +#, c-format +msgid "" +"The database was initialized with LC_COLLATE \"%s\", which is not " +"recognized by setlocale()." +msgstr "" +"ë°ì´í„°ë² ì´ìŠ¤ê°€ setlocale()ì—서 ì¸ì‹í•  수 없는 LC_COLLATE \"%s\"(으)로 초기화" +"ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: utils/init/postinit.c:381 utils/init/postinit.c:388 +#, c-format +msgid "" +"Recreate the database with another locale or install the missing locale." +msgstr "" +"다른 로케ì¼ë¡œ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 다시 만들거나 누ë½ëœ 로케ì¼ì„ 설치하십시오." + +#: utils/init/postinit.c:386 +#, c-format +msgid "" +"The database was initialized with LC_CTYPE \"%s\", which is not recognized " +"by setlocale()." +msgstr "" +"setlocale()ì—서 ì¸ì‹í•  수 없는 \"%s\" LC_CTYPE 값으로 ë°ì´í„°ë² ì´ìŠ¤ê°€ 초기화ë˜" +"었습니다." + +#: utils/init/postinit.c:714 +#, c-format +msgid "no roles are defined in this database system" +msgstr "ì´ ë°ì´í„°ë² ì´ìФì—는 어떠한 롤 ì •ì˜ë„ 없습니다" + +#: utils/init/postinit.c:715 +#, c-format +msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;." +msgstr "ë‹¤ìŒ ëª…ë ¹ì„ ë¨¼ì € 실행하십시오: CREATE USER \"%s\" SUPERUSER;." + +#: utils/init/postinit.c:751 +#, c-format +msgid "new replication connections are not allowed during database shutdown" +msgstr "ë°ì´í„°ë² ì´ìФ 중지 중ì—는 새로운 복제 ì—°ê²°ì„ í•  수 없습니다." + +#: utils/init/postinit.c:755 +#, c-format +msgid "must be superuser to connect during database shutdown" +msgstr "슈í¼ìœ ì €ë§Œ ë°ì´í„°ë² ì´ìФ 종료 ì¤‘ì— ì—°ê²°í•  수 있ìŒ" + +#: utils/init/postinit.c:765 +#, c-format +msgid "must be superuser to connect in binary upgrade mode" +msgstr "슈í¼ìœ ì €ë§Œ ë°”ì´ë„ˆë¦¬ 업그레ì´ë“œ 모드 ì¤‘ì— ì—°ê²° í•  수 있ìŒ" + +#: utils/init/postinit.c:779 +#, c-format +msgid "" +"remaining connection slots are reserved for non-replication superuser " +"connections" +msgstr "ë‚¨ì€ ì—°ê²° ìŠ¬ë¡¯ì€ non-replication 슈í¼ìœ ì € 연결용으로 남겨 놓았ìŒ" + +#: utils/init/postinit.c:789 +#, c-format +msgid "must be superuser or replication role to start walsender" +msgstr "" +"superuser ë˜ëŠ” replication ê¶Œí•œì„ ê°€ì§„ 롤만 walsender 프로세스를 시작할 수 있" +"ìŒ" + +#: utils/init/postinit.c:858 +#, c-format +msgid "database %u does not exist" +msgstr "%u ë°ì´í„°ë² ì´ìŠ¤ê°€ ì—†ìŒ" + +#: utils/init/postinit.c:944 +#, c-format +msgid "It seems to have just been dropped or renamed." +msgstr "ì‚­ì œë˜ì—ˆê±°ë‚˜ ì´ë¦„ì´ ë°”ë€ ê²ƒ 같습니다." + +#: utils/init/postinit.c:962 +#, c-format +msgid "The database subdirectory \"%s\" is missing." +msgstr "ë°ì´í„°ë² ì´ìФ ë””ë ‰í„°ë¦¬ì— \"%s\" 하위 디렉터리가 없습니다" + +#: utils/init/postinit.c:967 +#, c-format +msgid "could not access directory \"%s\": %m" +msgstr "\"%s\" 디렉터리를 액세스할 수 없습니다: %m" + +#: utils/mb/conv.c:405 utils/mb/conv.c:591 +#, c-format +msgid "invalid encoding number: %d" +msgstr "ìž˜ëª»ëœ ì¸ì½”딩 번호: %d" + +#: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:137 +#: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:169 +#, c-format +msgid "unexpected encoding ID %d for ISO 8859 character sets" +msgstr "%dì€(는) ISO 8859 ë¬¸ìž ì§‘í•©ì— ëŒ€í•œ 예기치 ì•Šì€ ì¸ì½”딩 IDìž„" + +#: utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c:127 +#: utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c:159 +#, c-format +msgid "unexpected encoding ID %d for WIN character sets" +msgstr "%dì€(는) WIN ë¬¸ìž ì§‘í•©ì— ëŒ€í•œ 예기치 ì•Šì€ ì¸ì½”딩 IDìž„" + +#: utils/mb/encnames.c:496 +#, c-format +msgid "encoding name too long" +msgstr "ì¸ì½”딩 ì´ë¦„ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤" + +#: utils/mb/mbutils.c:307 +#, c-format +msgid "conversion between %s and %s is not supported" +msgstr "%s ì¸ì½”딩과 %s ì¸ì½”딩 사ì´ì˜ ë³€í™˜ì€ ì§€ì›í•˜ì§€ 않습니다" + +#: utils/mb/mbutils.c:366 +#, c-format +msgid "" +"default conversion function for encoding \"%s\" to \"%s\" does not exist" +msgstr "" +"\"%s\" ì¸ì½”ë”©ì„ \"%s\" ì¸ì½”딩으로 변환할 기본 변환규칙(conversion)ì´ ì—†ìŒ" + +#: utils/mb/mbutils.c:377 utils/mb/mbutils.c:710 +#, c-format +msgid "String of %d bytes is too long for encoding conversion." +msgstr "%dë°”ì´íŠ¸ì˜ ë¬¸ìžì—´ì€ 너무 길어서 ì¸ì½”딩 ê·œì¹™ì— ë§žì§€ 않습니다." + +#: utils/mb/mbutils.c:464 +#, c-format +msgid "invalid source encoding name \"%s\"" +msgstr "\"%s\" ì›ë³¸ ì¸ì½”딩 ì´ë¦„ì´ íƒ€ë‹¹ì¹˜ 못함" + +#: utils/mb/mbutils.c:469 +#, c-format +msgid "invalid destination encoding name \"%s\"" +msgstr "\"%s\" ëŒ€ìƒ ì¸ì½”딩 ì´ë¦„ì´ íƒ€ë‹¹ì¹˜ 못함" + +#: utils/mb/mbutils.c:609 +#, c-format +msgid "invalid byte value for encoding \"%s\": 0x%02x" +msgstr "\"%s\" ì¸ì½”딩ì—서 사용할 수 없는 ë°”ì´íЏ: 0x%02x" + +#: utils/mb/mbutils.c:951 +#, c-format +msgid "bind_textdomain_codeset failed" +msgstr "bind_textdomain_codeset 실패" + +#: utils/mb/wchar.c:2015 +#, c-format +msgid "invalid byte sequence for encoding \"%s\": %s" +msgstr "\"%s\" ì¸ì½”딩ì—서 사용할 수 없는 문ìžê°€ 있ìŒ: %s" + +#: utils/mb/wchar.c:2048 +#, c-format +msgid "" +"character with byte sequence %s in encoding \"%s\" has no equivalent in " +"encoding \"%s\"" +msgstr "" +"%s ë°”ì´íŠ¸ë¡œ ì¡°í•©ëœ ë¬¸ìž(ì¸ì½”딩: \"%s\")와 대ì‘ë˜ëŠ” ë¬¸ìž ì½”ë“œê°€ \"%s\" ì¸ì½”딩" +"ì—는 없습니다" + +#: utils/misc/guc.c:548 +msgid "Ungrouped" +msgstr "소ì†ê·¸ë£¹ì—†ìŒ" + +#: utils/misc/guc.c:550 +msgid "File Locations" +msgstr "íŒŒì¼ ìœ„ì¹˜" + +#: utils/misc/guc.c:552 +msgid "Connections and Authentication" +msgstr "ì—°ê²°ê³¼ ì¸ì¦" + +#: utils/misc/guc.c:554 +msgid "Connections and Authentication / Connection Settings" +msgstr "ì—°ê²°ê³¼ ì¸ì¦ / ì—°ê²° 설정값" + +#: utils/misc/guc.c:556 +msgid "Connections and Authentication / Security and Authentication" +msgstr "ì—°ê²°ê³¼ ì•ˆì¦ / 보안과 ì¸ì¦" + +#: utils/misc/guc.c:558 +msgid "Resource Usage" +msgstr "ìžì› 사용량" + +#: utils/misc/guc.c:560 +msgid "Resource Usage / Memory" +msgstr "ìžì› 사용량 / 메모리" + +#: utils/misc/guc.c:562 +msgid "Resource Usage / Disk" +msgstr "ìžì› 사용량 / 디스í¬" + +#: utils/misc/guc.c:564 +msgid "Resource Usage / Kernel Resources" +msgstr "ìžì› 사용량 / ì»¤ë„ ìžì›" + +#: utils/misc/guc.c:566 +msgid "Resource Usage / Cost-Based Vacuum Delay" +msgstr "ìžì› 사용량 / 비용기반 청소 지연" + +#: utils/misc/guc.c:568 +msgid "Resource Usage / Background Writer" +msgstr "ìžì› 사용량 / 백그ë¼ìš´ë“œ 쓰기" + +#: utils/misc/guc.c:570 +msgid "Resource Usage / Asynchronous Behavior" +msgstr "ìžì› 사용량 / 비ë™ê¸° 기능" + +#: utils/misc/guc.c:572 +msgid "Write-Ahead Log" +msgstr "Write-Ahead 로그" + +#: utils/misc/guc.c:574 +msgid "Write-Ahead Log / Settings" +msgstr "Write-Ahead 로그 / 설정값" + +#: utils/misc/guc.c:576 +msgid "Write-Ahead Log / Checkpoints" +msgstr "Write-Ahead 로그 / ì²´í¬í¬ì¸íЏ" + +#: utils/misc/guc.c:578 +msgid "Write-Ahead Log / Archiving" +msgstr "Write-Ahead 로그 / ì•„ì¹´ì´ë¸Œ" + +#: utils/misc/guc.c:580 +msgid "Replication" +msgstr "복제" + +#: utils/misc/guc.c:582 +msgid "Replication / Sending Servers" +msgstr "복제 / 보내기 서버" + +#: utils/misc/guc.c:584 +msgid "Replication / Master Server" +msgstr "복제 / 주 서버" + +#: utils/misc/guc.c:586 +msgid "Replication / Standby Servers" +msgstr "복제 / 대기 서버" + +#: utils/misc/guc.c:588 +msgid "Query Tuning" +msgstr "쿼리 튜ë‹" + +#: utils/misc/guc.c:590 +msgid "Query Tuning / Planner Method Configuration" +msgstr "쿼리 íŠœë‹ / 실행계íšê¸° 메서드 설정" + +#: utils/misc/guc.c:592 +msgid "Query Tuning / Planner Cost Constants" +msgstr "쿼리 íŠœë‹ / 실행계íšê¸° 비용 ìƒìˆ˜" + +#: utils/misc/guc.c:594 +msgid "Query Tuning / Genetic Query Optimizer" +msgstr "쿼리 íŠœë‹ / ì¼ë°˜ì ì¸ 쿼리 최ì í™”기" + +#: utils/misc/guc.c:596 +msgid "Query Tuning / Other Planner Options" +msgstr "쿼리 íŠœë‹ / 기타 실행계íšê¸° 옵션들" + +#: utils/misc/guc.c:598 +msgid "Reporting and Logging" +msgstr "보고와 로그" + +#: utils/misc/guc.c:600 +msgid "Reporting and Logging / Where to Log" +msgstr "보고와 로그 / 로그 위치" + +#: utils/misc/guc.c:602 +msgid "Reporting and Logging / When to Log" +msgstr "보고와 로그 / 로그 시ì " + +#: utils/misc/guc.c:604 +msgid "Reporting and Logging / What to Log" +msgstr "보고와 로그 / 로그 ë‚´ìš©" + +#: utils/misc/guc.c:606 +msgid "Process Title" +msgstr "프로세스 제목" + +#: utils/misc/guc.c:608 +msgid "Statistics" +msgstr "통계" + +#: utils/misc/guc.c:610 +msgid "Statistics / Monitoring" +msgstr "통계 / 모니터ë§" + +#: utils/misc/guc.c:612 +msgid "Statistics / Query and Index Statistics Collector" +msgstr "통계 / 쿼리 ë° ì¸ë±ìФ 사용 통계 수집기" + +#: utils/misc/guc.c:614 +msgid "Autovacuum" +msgstr "Autovacuum" + +#: utils/misc/guc.c:616 +msgid "Client Connection Defaults" +msgstr "í´ë¼ì´ì–¸íЏ ì—°ê²° 초기값" + +#: utils/misc/guc.c:618 +msgid "Client Connection Defaults / Statement Behavior" +msgstr "í´ë¼ì´ì–¸íЏ ì—°ê²° 초기값 / 구문 특성" + +#: utils/misc/guc.c:620 +msgid "Client Connection Defaults / Locale and Formatting" +msgstr "í´ë¼ì´ì–¸íЏ ì—°ê²° 초기값 / 로케ì¼ê³¼ 출력양ì‹" + +#: utils/misc/guc.c:622 +msgid "Client Connection Defaults / Shared Library Preloading" +msgstr "í´ë¼ì´ì–¸íЏ ì—°ê²° 초기값 / 공유 ë¼ì´ë¸ŒëŸ¬ë¦¬ 미리 로딩" + +#: utils/misc/guc.c:624 +msgid "Client Connection Defaults / Other Defaults" +msgstr "í´ë¼ì´ì–¸íЏ ì—°ê²° 초기값 / 기타 초기값" + +#: utils/misc/guc.c:626 +msgid "Lock Management" +msgstr "잠금 관리" + +#: utils/misc/guc.c:628 +msgid "Version and Platform Compatibility" +msgstr "버전과 í”Œëž«í¼ í˜¸í™˜ì„±" + +#: utils/misc/guc.c:630 +msgid "Version and Platform Compatibility / Previous PostgreSQL Versions" +msgstr "버전과 í”Œëž«í¼ í˜¸í™˜ì„± / ì´ì „ PostgreSQL 버전" + +#: utils/misc/guc.c:632 +msgid "Version and Platform Compatibility / Other Platforms and Clients" +msgstr "버전과 í”Œëž«í¼ í˜¸í™˜ì„± / 다른 플랫í¼ê³¼ í´ë¼ì´ì–¸íЏ" + +#: utils/misc/guc.c:634 +msgid "Error Handling" +msgstr "오류 처리" + +#: utils/misc/guc.c:636 +msgid "Preset Options" +msgstr "프리셋 옵션들" + +#: utils/misc/guc.c:638 +msgid "Customized Options" +msgstr "ì‚¬ìš©ìž ì •ì˜ ì˜µì…˜ë“¤" + +#: utils/misc/guc.c:640 +msgid "Developer Options" +msgstr "ê°œë°œìž ì˜µì…˜ë“¤" + +#: utils/misc/guc.c:697 +msgid "Valid units for this parameter are \"kB\", \"MB\", \"GB\", and \"TB\"." +msgstr "ì´ ë§¤ê°œ ë³€ìˆ˜ì— ìœ íš¨í•œ 단위는 \"kB\", \"MB\",\"GB\", \"TB\" 입니다." + +#: utils/misc/guc.c:724 +msgid "" +"Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"." +msgstr "" +"ì´ ë§¤ê°œ ë³€ìˆ˜ì— ìœ íš¨í•œ 단위는 \"ms\", \"s\", \"min\", \"h\", \"d\" 입니다." + +#: utils/misc/guc.c:783 +msgid "Enables the planner's use of sequential-scan plans." +msgstr "실행계íšìžê°€ 순차ì -스캔(sequential-sca) 계íšì„ 사용함" + +#: utils/misc/guc.c:792 +msgid "Enables the planner's use of index-scan plans." +msgstr "실행계íšìžê°€ ì¸ë±ìФ-스캔 계íšì„ 사용함." + +#: utils/misc/guc.c:801 +msgid "Enables the planner's use of index-only-scan plans." +msgstr "실행계íšìžê°€ ì¸ë±ìФ-ì „ìš©-íƒìƒ‰ 계íšì„ 사용함." + +#: utils/misc/guc.c:810 +msgid "Enables the planner's use of bitmap-scan plans." +msgstr "실행계íšê¸°ê°€ bitmap-scan 계íšì„ 사용하ë„ë¡ í•¨" + +#: utils/misc/guc.c:819 +msgid "Enables the planner's use of TID scan plans." +msgstr "실행계íšìžê°€ TID 스캔 계íšì„ 사용함" + +#: utils/misc/guc.c:828 +msgid "Enables the planner's use of explicit sort steps." +msgstr "실행계íšìžê°€ 명시 ì •ë ¬ 단계(explicit sort step)를 사용함" + +#: utils/misc/guc.c:837 +msgid "Enables the planner's use of hashed aggregation plans." +msgstr "실행계íšìžê°€ í•´ì‹œëœ ì§‘ê³„ 계íšì„ 사용함" + +#: utils/misc/guc.c:846 +msgid "Enables the planner's use of materialization." +msgstr "실행계íšìžê°€ materialization 계íšì„ 사용함" + +#: utils/misc/guc.c:855 +msgid "Enables the planner's use of nested-loop join plans." +msgstr "실행계íšìžê°€ 근접순환 ì¡°ì¸(nested-loop join) 계íšì„ 사용함" + +#: utils/misc/guc.c:864 +msgid "Enables the planner's use of merge join plans." +msgstr "실행계íšìžê°€ 병합 ì¡°ì¸(merge join) 계íšì„ 사용함" + +#: utils/misc/guc.c:873 +msgid "Enables the planner's use of hash join plans." +msgstr "실행계íšìžê°€ 해시 ì¡°ì¸(hash join) 계íšì„ 사용함" + +#: utils/misc/guc.c:883 +msgid "Enables genetic query optimization." +msgstr "ìœ ì „ì  ì¿¼ë¦¬ 최ì í™”(GEQO)를 사용함" + +#: utils/misc/guc.c:884 +msgid "This algorithm attempts to do planning without exhaustive searching." +msgstr "ì´ ì•Œê³ ë¦¬ì¦˜ì€ ì‹¤í–‰ê³„íšê¸°ì˜ ê³¼ë„한 작업 ë¹„ìš©ì„ ë‚®ì¶¥ë‹ˆë‹¤" + +#: utils/misc/guc.c:894 +msgid "Shows whether the current user is a superuser." +msgstr "현재 사용ìžê°€ 슈í¼ìœ ì €ì¸ì§€ ë³´ì—¬ì¤ë‹ˆë‹¤." + +#: utils/misc/guc.c:904 +msgid "Enables advertising the server via Bonjour." +msgstr "Bonjour 서버 사용" + +#: utils/misc/guc.c:913 +msgid "Collects transaction commit time." +msgstr "트랜잭션 커밋 ì‹œê°„ì„ ìˆ˜ì§‘í•¨" + +#: utils/misc/guc.c:922 +msgid "Enables SSL connections." +msgstr "SSL ì—°ê²°ì„ ê°€ëŠ¥í•˜ê²Œ 함." + +#: utils/misc/guc.c:931 +msgid "Give priority to server ciphersuite order." +msgstr "SSL ì¸ì¦ 알고리즘 ìš°ì„  순위를 정함" + +#: utils/misc/guc.c:940 +msgid "Forces synchronization of updates to disk." +msgstr "강제로 ë³€ê²½ëœ ë²„í¼ ìžë£Œë¥¼ 디스í¬ì™€ ë™ê¸°í™” 시킴." + +#: utils/misc/guc.c:941 +msgid "" +"The server will use the fsync() system call in several places to make sure " +"that updates are physically written to disk. This insures that a database " +"cluster will recover to a consistent state after an operating system or " +"hardware crash." +msgstr "" +"ì´ ì„œë²„ëŠ” fsync() 시스템 콜 ê¸°ëŠ¥ì„ ì—¬ëŸ¬ ê³³ì—서 사용할 것입니다. ì´ ê¸°ëŠ¥ì€ ë¬¼" +"리ì ìœ¼ë¡œ 디스í¬ì— ë³€ê²½ëœ ìžë£Œë¥¼ 즉ê°ì ìœ¼ë¡œ 기ë¡í•¨ì„ ì˜ë¯¸í•©ë‹ˆë‹¤. ì´ ê¸°ëŠ¥ì€ ì‹œ" +"ìŠ¤í…œì˜ ë¹„ì •ìƒì ì¸ ë™ìž‘ì´ë‚˜, 하드웨어ì—서 오류가 ë°œìƒë˜ì—ˆì„ 경우ì—ë„ ìžë£Œë¥¼ 안" +"전하게 지킬 수 있ë„ë¡ ë„와줄 것입니다." + +#: utils/misc/guc.c:952 +msgid "Continues processing after a checksum failure." +msgstr "ì²´í¬ì„¬ 실패 후 처리 ê³„ì† í•¨" + +#: utils/misc/guc.c:953 +msgid "" +"Detection of a checksum failure normally causes PostgreSQL to report an " +"error, aborting the current transaction. Setting ignore_checksum_failure to " +"true causes the system to ignore the failure (but still report a warning), " +"and continue processing. This behavior could cause crashes or other serious " +"problems. Only has an effect if checksums are enabled." +msgstr "" +"ì¼ë°˜ì ìœ¼ë¡œ ì†ìƒëœ 페ì´ì§€ í—¤ë”를 발견하게 ë˜ë©´, PostgreSQLì—서는 오류를 ë°œìƒí•˜" +"ê³ , 현재 íŠ¸ëžœìž­ì…˜ì„ ì¤‘ì§€í•©ë‹ˆë‹¤. ignore_checksum_failure ê°’ì„ true로 지정하" +"ë©´, ì´ëŸ° ì†ìƒëœ 페ì´ì§€ë¥¼ 발견하면, 경고 메시지를 보여주고, ê³„ì† ì§„í–‰í•©ë‹ˆë‹¤. " +"ì´ ê¸°ëŠ¥ì„ ì‚¬ìš©í•œë‹¤ í•¨ì€ ì„œë²„ ë¹„ì •ìƒ ì¢…ë£Œë‚˜ 기타 심ê°í•œ 문제가 ì¼ì–´ ë‚  수 있습" +"니다. ì´ ì„¤ì •ì€ ë°ì´í„° í´ëŸ¬ìŠ¤í„°ì—서 ì²´í¬ì„¬ ê¸°ëŠ¥ì´ í™œì„±í™” ë˜ì–´ 있는 경우ì—ë§Œ " +"ì˜í–¥ì„ 받습니다." + +#: utils/misc/guc.c:967 +msgid "Continues processing past damaged page headers." +msgstr "ì†ìƒëœ ìžë£Œ í—¤ë” ë°œê²¬ì‹œ 작업 ì§„í–‰ 여부 ì„ íƒ" + +#: utils/misc/guc.c:968 +msgid "" +"Detection of a damaged page header normally causes PostgreSQL to report an " +"error, aborting the current transaction. Setting zero_damaged_pages to true " +"causes the system to instead report a warning, zero out the damaged page, " +"and continue processing. This behavior will destroy data, namely all the " +"rows on the damaged page." +msgstr "" +"ì¼ë°˜ì ìœ¼ë¡œ ì†ìƒëœ 페ì´ì§€ í—¤ë”를 발견하게 ë˜ë©´, PostgreSQLì—서는 오류를 ë°œìƒí•˜" +"ê³ , 현재 íŠ¸ëžœìž­ì…˜ì„ ì¤‘ì§€í•©ë‹ˆë‹¤. ì´ ê°’ì„ true로 지정하면, ì´ëŸ° ì†ìƒëœ 페ì´ì§€" +"를 발견하면, 경고 메시지를 보여주고, ê·¸ 페ì´ì§€ì˜ í¬ê¸°ë¥¼ 0으로 만들고 ìž‘ì—…ì„ " +"ê³„ì† ì§„í–‰í•©ë‹ˆë‹¤. ì´ ê¸°ëŠ¥ì„ ì‚¬ìš©í•œë‹¤ í•¨ì€ ì†ìƒëœ ìžë£Œë¥¼ 없애겠다는 ê²ƒì„ ì˜ë¯¸í•©" +"니다. ì´ê²ƒì€ ê³§ 저장ë˜ì–´ìžˆëŠ” ìžë£Œê°€ ì‚­ì œ ë  ìˆ˜ë„ ìžˆìŒì„ ì˜ë¯¸í•˜ê¸°ë„ 합니다." + +#: utils/misc/guc.c:981 +msgid "Writes full pages to WAL when first modified after a checkpoint." +msgstr "ì²´í¬í¬ì¸íЏ 후 ì²˜ìŒ ìˆ˜ì •í•  때 ì „ì²´ 페ì´ì§€ë¥¼ WALì— ì”니다." + +#: utils/misc/guc.c:982 +msgid "" +"A page write in process during an operating system crash might be only " +"partially written to disk. During recovery, the row changes stored in WAL " +"are not enough to recover. This option writes pages when first modified " +"after a checkpoint to WAL so full recovery is possible." +msgstr "" +"ìš´ì˜ ì²´ì œê°€ ë¹„ì •ìƒ ì¢…ë£Œë˜ëŠ” 경우 처리 ì¤‘ì¸ íŽ˜ì´ì§€ 쓰기는 디스í¬ì— ì¼ë¶€ë§Œ 기ë¡" +"ë  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 복구 중 WALì— ì €ìž¥ëœ ë¡œìš° 변경 ë‚´ìš©ì´ ë¶€ì¡±í•˜ì—¬ 복구할 수 " +"ì—†ì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì´ ì˜µì…˜ì€ ì•ˆì „í•˜ê²Œ 복구가 가능하ë„ë¡ ì²´í¬í¬ì¸íЏ 후 ì²˜ìŒ " +"수정한 페ì´ì§€ëŠ” ê·¸ 페ì´ì§€ 전체를 WALì— ì”니다." + +#: utils/misc/guc.c:995 +msgid "" +"Writes full pages to WAL when first modified after a checkpoint, even for a " +"non-critical modifications." +msgstr "" +"ì²´í¬í¬ì¸íЏ 작업 후 ìžë£Œ 페ì´ì§€ì— 첫 ë³€ê²½ì´ ìžˆëŠ” 경우, WALì— ë³€ê²½ëœ ë‚´ìš©ë§Œ 기" +"ë¡í•˜ëŠ” ê²ƒì´ ì•„ë‹ˆë¼, 해당 페ì´ì§€ 전체를 기ë¡í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1005 +msgid "Compresses full-page writes written in WAL file." +msgstr "WAL 파ì¼ì— 기ë¡ë˜ëŠ” ì „ì²´ 페ì´ì§€ë¥¼ 압축함" + +#: utils/misc/guc.c:1015 +msgid "Logs each checkpoint." +msgstr "ì²´í¬í¬ì¸íЏ 관련 정보를 기ë¡í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1024 +msgid "Logs each successful connection." +msgstr "ì—°ê²° 성공한 정보들 모ë‘를 기ë¡í•¨" + +#: utils/misc/guc.c:1033 +msgid "Logs end of a session, including duration." +msgstr "ê¸°ê°„ì„ í¬í•¨í•˜ì—¬ ì„¸ì…˜ì˜ ëì„ ê¸°ë¡í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1042 +msgid "Logs each replication command." +msgstr "복제 관련 작업 ë‚´ì—­ì„ ê¸°ë¡í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1051 +msgid "Shows whether the running server has assertion checks enabled." +msgstr "서버가 assertion 검사 ê¸°ëŠ¥ì´ í™œì„±í™” ë˜ì–´ 실행ë˜ëŠ”ì§€ ë³´ì—¬ 줌" + +#: utils/misc/guc.c:1066 +msgid "Terminate session on any error." +msgstr "ì–´ë–¤ 오류가 ìƒê¸°ë©´ ì„¸ì…˜ì„ ì¢…ë£Œí•¨" + +#: utils/misc/guc.c:1075 +msgid "Reinitialize server after backend crash." +msgstr "백엔드가 ë¹„ì •ìƒ ì¢…ë£Œë˜ë©´ 서버를 재초기화함" + +#: utils/misc/guc.c:1085 +msgid "Logs the duration of each completed SQL statement." +msgstr "SQL 명령 êµ¬ë¬¸ì˜ ì‹¤í–‰ì™„ë£Œ ì‹œê°„ì„ ê¸°ë¡í•¨" + +#: utils/misc/guc.c:1094 +msgid "Logs each query's parse tree." +msgstr "ê° ì¿¼ë¦¬ì˜ êµ¬ë¬¸ ë¶„ì„ íŠ¸ë¦¬ë¥¼ 기ë¡í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1103 +msgid "Logs each query's rewritten parse tree." +msgstr "ê° ì¿¼ë¦¬ì˜ ìž¬ìž‘ì„±ëœ êµ¬ë¬¸ ë¶„ì„ íŠ¸ë¦¬ë¥¼ 기ë¡í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1112 +msgid "Logs each query's execution plan." +msgstr "ê° ì¿¼ë¦¬ì˜ ì‹¤í–‰ 계íšì„ 기ë¡í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1121 +msgid "Indents parse and plan tree displays." +msgstr "구문과 실행계íšì„ ë³´ì—¬ 줄때, 들여쓰기를 함." + +#: utils/misc/guc.c:1130 +msgid "Writes parser performance statistics to the server log." +msgstr "êµ¬ë¬¸ë¶„ì„ ì„±ëŠ¥ 통계를 서버 ë¡œê·¸ì— ê¸°ë¡í•¨." + +#: utils/misc/guc.c:1139 +msgid "Writes planner performance statistics to the server log." +msgstr "실행계íšìž 성능 통계를 서버 ë¡œê·¸ì— ê¸°ë¡í•¨." + +#: utils/misc/guc.c:1148 +msgid "Writes executor performance statistics to the server log." +msgstr "ì‹¤í–‰ìž ì„±ëŠ¥ 통계를 서버 ë¡œê·¸ì— ê¸°ë¡í•¨." + +#: utils/misc/guc.c:1157 +msgid "Writes cumulative performance statistics to the server log." +msgstr "ëˆ„ì  ì„±ëŠ¥ 통계를 서버 ë¡œê·¸ì— ê¸°ë¡í•¨." + +#: utils/misc/guc.c:1167 +msgid "" +"Logs system resource usage statistics (memory and CPU) on various B-tree " +"operations." +msgstr "다양한 B트리 ìž‘ì—…ì— ìžì›(메모리, CPU) 사용 통계를 기ë¡ì— 남기" + +#: utils/misc/guc.c:1179 +msgid "Collects information about executing commands." +msgstr "명령 ì‹¤í–‰ì— ëŒ€í•œ 정보를 수집함" + +#: utils/misc/guc.c:1180 +msgid "" +"Enables the collection of information on the currently executing command of " +"each session, along with the time at which that command began execution." +msgstr "" +"ê° ì„¸ì…˜ì—서 사용하고 있는 현재 실행 ì¤‘ì¸ ëª…ë ¹ì˜ ìˆ˜í–‰ 시간, 명령 ë‚´ìš©ë“±ì— ëŒ€" +"한 정보를 수집하ë„ë¡ í•¨" + +#: utils/misc/guc.c:1190 +msgid "Collects statistics on database activity." +msgstr "ë°ì´í„°ë² ì´ìФ 활ë™ì— 대한 통계를 수집합니다." + +#: utils/misc/guc.c:1199 +msgid "Collects timing statistics for database I/O activity." +msgstr "ë°ì´í„°ë² ì´ìФ I/O 활ë™ì— 대한 통계를 수집합니다." + +#: utils/misc/guc.c:1209 +msgid "Updates the process title to show the active SQL command." +msgstr "활성 SQL ëª…ë ¹ì„ í‘œì‹œí•˜ë„ë¡ í”„ë¡œì„¸ìŠ¤ ì œëª©ì„ ì—…ë°ì´íŠ¸í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1210 +msgid "" +"Enables updating of the process title every time a new SQL command is " +"received by the server." +msgstr "" +"서버가 새 SQL ëª…ë ¹ì„ ë°›ì„ ë•Œë§ˆë‹¤ 프로세스 ì œëª©ì´ ì—…ë°ì´íŠ¸ë  ìˆ˜ 있ë„ë¡ í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1223 +msgid "Starts the autovacuum subprocess." +msgstr "ìžë™ 청소 하위 프로세스를 실행함" + +#: utils/misc/guc.c:1233 +msgid "Generates debugging output for LISTEN and NOTIFY." +msgstr "LISTEN, NOTIFY 명령 ì‚¬ìš©ì„ ìœ„í•œ 디버깅 ì¶œë ¥ì„ ë§Œë“¦." + +#: utils/misc/guc.c:1245 +msgid "Emits information about lock usage." +msgstr "잠금 사용 정보를 로그로 남김" + +#: utils/misc/guc.c:1255 +msgid "Emits information about user lock usage." +msgstr "ì‚¬ìš©ìž ìž ê¸ˆ 사용 정보를 로그로 남김" + +#: utils/misc/guc.c:1265 +msgid "Emits information about lightweight lock usage." +msgstr "가벼운 잠금 사용 정보를 로그로 남김" + +#: utils/misc/guc.c:1275 +msgid "" +"Dumps information about all current locks when a deadlock timeout occurs." +msgstr "êµì°© 잠금 시간 제한 ìƒí™©ì´ ë°œìƒí•˜ë©´ ê·¸ ë•Œì˜ ëª¨ë“  잠금 정보를 보여줌" + +#: utils/misc/guc.c:1287 +msgid "Logs long lock waits." +msgstr "긴 잠금 대기를 기ë¡í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1297 +msgid "Logs the host name in the connection logs." +msgstr "ì—°ê²° 기ë¡ì—서 호스트 ì´ë¦„ì„ ê¸°ë¡í•¨." + +#: utils/misc/guc.c:1298 +msgid "" +"By default, connection logs only show the IP address of the connecting host. " +"If you want them to show the host name you can turn this on, but depending " +"on your host name resolution setup it might impose a non-negligible " +"performance penalty." +msgstr "" +"ì´ ê¸°ëŠ¥ì€ ê¸°ë³¸ì ìœ¼ë¡œ 연결기ë¡ì—서 기본ì ìœ¼ë¡œ IP 주소만 기ë¡í•©ë‹ˆë‹¤. ì´ ê°’ì„ " +"true로 바꾼다면, ì´ IPì˜ í˜¸ìŠ¤íŠ¸ ì´ë¦„ì„ êµ¬í•´ì„œ ì´ ì´ë¦„ì„ ì‚¬ìš©í•©ë‹ˆë‹¤ ì´ê²ƒì˜ 성" +"ëŠ¥ì€ OSì˜ IPì—서 ì´ë¦„구하기 성능과 관계ë©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1309 +msgid "Causes subtables to be included by default in various commands." +msgstr "" +"다양한 명령들ì—서 기본ì ìœ¼ë¡œ ìƒì†ë˜ëŠ” í…Œì´ë¸”들 함께 사용할 것ì¸ì§€ 정함." + +#: utils/misc/guc.c:1318 +msgid "Encrypt passwords." +msgstr "암호를 암호화 해서 기ë¡í•¨" + +#: utils/misc/guc.c:1319 +msgid "" +"When a password is specified in CREATE USER or ALTER USER without writing " +"either ENCRYPTED or UNENCRYPTED, this parameter determines whether the " +"password is to be encrypted." +msgstr "" +"CREATE USER ë˜ëŠ” ALTER USER 명령ì—서 ENCRYPTED ë˜ëŠ” UNENCRYPTED ì†ì„±ì„ 특별" +"히 지정하지 않았고 ì‚¬ìš©ìž ì•”í˜¸ë¥¼ ì§€ì •í–ˆì„ ë•Œ, ê·¸ 암호를 암호화 해서 저장할 것" +"ì¸ì§€ 아닌지를 지정함" + +#: utils/misc/guc.c:1329 +msgid "Treats \"expr=NULL\" as \"expr IS NULL\"." +msgstr "\"표현=NULL\" ì‹ì„ \"표현 IS NULL\"로 취급함." + +#: utils/misc/guc.c:1330 +msgid "" +"When turned on, expressions of the form expr = NULL (or NULL = expr) are " +"treated as expr IS NULL, that is, they return true if expr evaluates to the " +"null value, and false otherwise. The correct behavior of expr = NULL is to " +"always return null (unknown)." +msgstr "" +"표현 = NULL ì˜ ë°”ë¥¸ 처리는 í•­ìƒ null ê°’ì„ ë¦¬í„´í•´ì•¼í•˜ì§€ë§Œ, 편ì˜ì„±ì„ 위해서 " +"expr = NULL êµ¬ë¬¸ì„ expr IS NULL 구문으로 바꾸어서 처리하ë„ë¡ í•¨ì´ë ‡ê²Œí•˜ë©´, " +"윗 êµ¬ë¬¸ì€ true 를 리턴함" + +#: utils/misc/guc.c:1342 +msgid "Enables per-database user names." +msgstr "per-database ì‚¬ìš©ìž ì´ë¦„ 활성화." + +#: utils/misc/guc.c:1351 +msgid "Sets the default read-only status of new transactions." +msgstr "새로운 íŠ¸ëžœìž­ì…˜ì˜ ìƒíƒœë¥¼ 초기값으로 ì½ê¸°ì „용으로 설정합니다." + +#: utils/misc/guc.c:1360 +msgid "Sets the current transaction's read-only status." +msgstr "현재 íŠ¸ëžœìž­ì…•ì˜ ì½ê¸° ì „ìš© ìƒíƒœë¥¼ 지정합니다." + +#: utils/misc/guc.c:1370 +msgid "Sets the default deferrable status of new transactions." +msgstr "새 íŠ¸ëžœìž­ì…˜ì˜ ê¸°ë³¸ 지연 가능한 ìƒíƒœë¥¼ 지정" + +#: utils/misc/guc.c:1379 +msgid "" +"Whether to defer a read-only serializable transaction until it can be " +"executed with no possible serialization failures." +msgstr "" +"ì½ê¸° ì „ìš© ì§ë ¬í™” 가능한 íŠ¸ëžœìž­ì…˜ì´ ì§ë ¬ 처리ì—서 오류가 ì—†ì„ ë•Œê¹Œì§€ ê·¸ 트랜잭" +"ì…˜ì„ ì§€ì—°í•  것ì´ì§€ 결정함" + +#: utils/misc/guc.c:1389 +msgid "Enable row security." +msgstr "로우 단위 보안 ê¸°ëŠ¥ì„ í™œì„±í™”" + +#: utils/misc/guc.c:1390 +msgid "When enabled, row security will be applied to all users." +msgstr "ì´ ê°’ì´ í™œì„±í™” ë˜ë©´ 로우 단위 보안 ê¸°ëŠ¥ì´ ëª¨ë“  ì‚¬ìš©ìž ëŒ€ìƒìœ¼ë¡œ ì ìš©ë¨" + +#: utils/misc/guc.c:1398 +msgid "Check function bodies during CREATE FUNCTION." +msgstr "" +"CREATE FUNCTION 명령으로 함수를 만들 때, 함수 본문 ë¶€ë¶„ì˜ êµ¬ë¬¸ì„ ê²€ì‚¬í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1407 +msgid "Enable input of NULL elements in arrays." +msgstr "ë°°ì—´ì— NULL 요소가 ìž…ë ¥ë  ìˆ˜ 있ë„ë¡ í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1408 +msgid "" +"When turned on, unquoted NULL in an array input value means a null value; " +"otherwise it is taken literally." +msgstr "" +"ì´ ê°’ì´ onì´ë©´ ë°°ì—´ ìž…ë ¥ ê°’ì— ë”°ì˜´í‘œ ì—†ì´ ìž…ë ¥ëœ NULLì´ null ê°’ì„ ì˜ë¯¸í•˜ê³ , " +"그렇지 않으면 ë¬¸ìž ê·¸ëŒ€ë¡œ 처리ë©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1418 +msgid "Create new tables with OIDs by default." +msgstr "기본ì ìœ¼ë¡œ OID를 사용하여 새 í…Œì´ë¸”ì„ ë§Œë“­ë‹ˆë‹¤." + +#: utils/misc/guc.c:1427 +msgid "" +"Start a subprocess to capture stderr output and/or csvlogs into log files." +msgstr "" +"로그 ê¸°ë¡ í•˜ìœ„ 프로세스를 시작하여 stderr 출력 ë°/ë˜ëŠ” csvlog를 로그 파ì¼ì— " +"ì”니다." + +#: utils/misc/guc.c:1436 +msgid "Truncate existing log files of same name during log rotation." +msgstr "로그 회전 중 ë™ì¼í•œ ì´ë¦„ì˜ ê¸°ì¡´ 로그 파ì¼ì„ ìžë¦…니다." + +#: utils/misc/guc.c:1447 +msgid "Emit information about resource usage in sorting." +msgstr "ì •ë ¬ 시 리소스 사용 정보를 내보냅니다." + +#: utils/misc/guc.c:1461 +msgid "Generate debugging output for synchronized scanning." +msgstr "ë™ê¸°í™”ëœ ìŠ¤ìº”ì„ ìœ„í•´ 디버깅 ì¶œë ¥ì„ ìƒì„±í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1476 +msgid "Enable bounded sorting using heap sort." +msgstr "íž™ ì •ë ¬ì„ í†µí•´ ì œí•œì  ì •ë ¬ì„ ì‚¬ìš©í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1489 +msgid "Emit WAL-related debugging output." +msgstr "WAL 관련 디버깅 ì¶œë ¥ì„ ë‚´ë³´ëƒ…ë‹ˆë‹¤." + +#: utils/misc/guc.c:1501 +msgid "Datetimes are integer based." +msgstr "datetime í˜•ì„ ì •ìˆ˜í˜•ìœ¼ë¡œ 사용함" + +#: utils/misc/guc.c:1516 +msgid "" +"Sets whether Kerberos and GSSAPI user names should be treated as case-" +"insensitive." +msgstr "" +"Kerberos ë° GSSAPI ì‚¬ìš©ìž ì´ë¦„ì—서 대/소문ìžë¥¼ 구분하지 않ì„ì§€ 여부를 설정합" +"니다." + +#: utils/misc/guc.c:1526 +msgid "Warn about backslash escapes in ordinary string literals." +msgstr "ì¼ë°˜ 문ìžì—´ ë¦¬í„°ëŸ´ì˜ ë°±ìŠ¬ëž˜ì‹œ ì´ìŠ¤ì¼€ì´í”„ì— ëŒ€í•´ 경고합니다." + +#: utils/misc/guc.c:1536 +msgid "Causes '...' strings to treat backslashes literally." +msgstr "'...' 문ìžì—´ì—서 백슬래시가 리터럴로 처리ë˜ë„ë¡ í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1547 +msgid "Enable synchronized sequential scans." +msgstr "ë™ê¸°í™”ëœ ìˆœì°¨ì  ìŠ¤ìº”ì„ ì‚¬ìš©í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1557 +msgid "Allows connections and queries during recovery." +msgstr "복구 중ì—ì„œë„ ì ‘ì†ê³¼ 쿼리 ì‚¬ìš©ì„ í—ˆìš©í•¨" + +#: utils/misc/guc.c:1567 +msgid "" +"Allows feedback from a hot standby to the primary that will avoid query " +"conflicts." +msgstr "" +"ì½ê¸° ì „ìš© ë³´ì¡° 서버가 보내는 쿼리 ì¶©ëŒì„ 피하기 위한 í”¼ë“œë°±ì„ ì£¼ 서버가 ë°›ìŒ" + +#: utils/misc/guc.c:1577 +msgid "Allows modifications of the structure of system tables." +msgstr "시스템 í…Œì´ë¸”ì˜ êµ¬ì¡°ë¥¼ 수정할 수 있ë„ë¡ í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1588 +msgid "Disables reading from system indexes." +msgstr "시스템 ì¸ë±ìФ ì½ê¸°ë¥¼ 금지함" + +#: utils/misc/guc.c:1589 +msgid "" +"It does not prevent updating the indexes, so it is safe to use. The worst " +"consequence is slowness." +msgstr "" +"ì´ ì„¤ì •ì´ í™œì„±í™” ë˜ì–´ë„ ê·¸ ì¸ë±ìŠ¤ëŠ” 갱신ë˜ì–´ 사용하는ë°ëŠ” 안전합니다. 하지" +"ë§Œ 서버가 ì „ì²´ì ìœ¼ë¡œ 늦어질 수 있습니다." + +#: utils/misc/guc.c:1600 +msgid "" +"Enables backward compatibility mode for privilege checks on large objects." +msgstr "대형 ê°ì²´ì— 대한 ì ‘ê·¼ 권한 검사를 위한 하위 í˜¸í™˜ì„±ì´ ìžˆê²Œ 함" + +#: utils/misc/guc.c:1601 +msgid "" +"Skips privilege checks when reading or modifying large objects, for " +"compatibility with PostgreSQL releases prior to 9.0." +msgstr "" +"PostgreSQL 9.0 ì´ì „ ë²„ì „ì˜ í˜¸í™˜ì„±ì„ ìœ„í•´ 대형 ê°ì²´ì— 대한 ì½ê¸°, 변경 시 ì ‘ê·¼ " +"권한 검사를 안 하ë„ë¡ ì„¤ì •í•¨" + +#: utils/misc/guc.c:1611 +msgid "" +"Emit a warning for constructs that changed meaning since PostgreSQL 9.4." +msgstr "PostgreSQL 9.4 버전까지 사용ë˜ì—ˆë˜ ìš°ì„  순위가 ì ìš©ë˜ë©´ 경고를 보여줌" + +#: utils/misc/guc.c:1621 +msgid "When generating SQL fragments, quote all identifiers." +msgstr "SQL êµ¬ë¬¸ì„ ë§Œë“¤ 때, 모든 ì‹ë³„ìžëŠ” 따옴표를 사용함" + +#: utils/misc/guc.c:1631 +msgid "Shows whether data checksums are turned on for this cluster." +msgstr "" + +#: utils/misc/guc.c:1642 +msgid "Add sequence number to syslog messages to avoid duplicate suppression." +msgstr "syslog 사용시 메시지 ì¤‘ë³µì„ ë°©ì§€í•˜ê¸° 위해 ì¼ë ¨ 번호를 매ê¹ë‹ˆë‹¤." + +#: utils/misc/guc.c:1652 +msgid "Split messages sent to syslog by lines and to fit into 1024 bytes." +msgstr "syslog 사용시 메시지를 한 ì¤„ì— 1024 ë°”ì´íŠ¸ë§Œ ì“°ë„ë¡ ë‚˜ëˆ•ë‹ˆë‹¤" + +#: utils/misc/guc.c:1671 +msgid "" +"Forces a switch to the next xlog file if a new file has not been started " +"within N seconds." +msgstr "" +"새 파ì¼ì´ Nì´ˆ ë‚´ì— ì‹œìž‘ë˜ì§€ ì•Šì€ ê²½ìš° 강제로 ë‹¤ìŒ xlog 파ì¼ë¡œ 전환합니다." + +#: utils/misc/guc.c:1682 +msgid "Waits N seconds on connection startup after authentication." +msgstr "ì—°ê²° 작업ì—서 ì¸ì¦ì´ ë난 ë’¤ Nì´ˆ 기다림" + +#: utils/misc/guc.c:1683 utils/misc/guc.c:2206 +msgid "This allows attaching a debugger to the process." +msgstr "ì´ë ‡ê²Œ 하면 디버거를 í”„ë¡œì„¸ìŠ¤ì— ì—°ê²°í•  수 있습니다." + +#: utils/misc/guc.c:1692 +msgid "Sets the default statistics target." +msgstr "기본 통계 대ìƒì„ 지정합니다." + +#: utils/misc/guc.c:1693 +msgid "" +"This applies to table columns that have not had a column-specific target set " +"via ALTER TABLE SET STATISTICS." +msgstr "" +"특정 ì—´ì„ ì§€ì •í•˜ì§€ 않고 ALTER TABLE SET STATISTICS ëª…ë ¹ì„ ì‚¬ìš©í–ˆì„ ë•Œ, 통계 " +"대ìƒì´ ë  ì—´ì„ ì§€ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1702 +msgid "Sets the FROM-list size beyond which subqueries are not collapsed." +msgstr "" +"ì´ í¬ê¸°ë¥¼ 초과할 경우 하위 쿼리가 축소ë˜ì§€ 않는 FROM ëª©ë¡ í¬ê¸°ë¥¼ 설정합니다." + +#: utils/misc/guc.c:1704 +msgid "" +"The planner will merge subqueries into upper queries if the resulting FROM " +"list would have no more than this many items." +msgstr "" +"ê²°ê³¼ FROM 목ë¡ì— í¬í•¨ëœ í•­ëª©ì´ ì´ ê°œìˆ˜ë¥¼ 넘지 않는 경우 ê³„íš ê´€ë¦¬ìžê°€ 하" +"위 쿼리를 ìƒìœ„ ì¿¼ë¦¬ì— ë³‘í•©í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1714 +msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened." +msgstr "" +"ì´ í¬ê¸°ë¥¼ 초과할 경우 JOIN êµ¬ë¬¸ì´ ê²°í•©ë˜ì§€ 않는 FROM ëª©ë¡ í¬ê¸°ë¥¼ 설정합니다." + +#: utils/misc/guc.c:1716 +msgid "" +"The planner will flatten explicit JOIN constructs into lists of FROM items " +"whenever a list of no more than this many items would result." +msgstr "" +"ê²°ê³¼ 목ë¡ì— í¬í•¨ëœ í•­ëª©ì´ ì´ ê°œìˆ˜ë¥¼ 넘지 ì•Šì„ ë•Œë§ˆë‹¤ ê³„íš ê´€ë¦¬ìžê°€ 명시" +"ì  JOIN êµ¬ë¬¸ì„ FROM 항목 목ë¡ì— 결합합니다." + +#: utils/misc/guc.c:1726 +msgid "Sets the threshold of FROM items beyond which GEQO is used." +msgstr "" +"ì´ ìž„ê³„ê°’ì„ ì´ˆê³¼í•  경우 GEQOê°€ 사용ë˜ëŠ” FROM í•­ëª©ì˜ ìž„ê³„ê°’ì„ ì„¤ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1735 +msgid "GEQO: effort is used to set the default for other GEQO parameters." +msgstr "GEQO: 다른 GEQO 매개 ë³€ìˆ˜ì˜ ê¸°ë³¸ ê°’ì„ ì„¤ì •í•˜ëŠ” ë° ì‚¬ìš©ë©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1744 +msgid "GEQO: number of individuals in the population." +msgstr "GEQO: ëª¨ì§‘ë‹¨ì˜ ê°œì¸ ìˆ˜ìž…ë‹ˆë‹¤." + +#: utils/misc/guc.c:1745 utils/misc/guc.c:1754 +msgid "Zero selects a suitable default value." +msgstr "0ì„ ì§€ì •í•˜ë©´ ì ì ˆí•œ 기본 ê°’ì´ ì„ íƒë©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1753 +msgid "GEQO: number of iterations of the algorithm." +msgstr "GEQO: ì•Œê³ ë¦¬ì¦˜ì˜ ë°˜ë³µ 수입니다." + +#: utils/misc/guc.c:1764 +msgid "Sets the time to wait on a lock before checking for deadlock." +msgstr "êµì°© ìƒíƒœë¥¼ 확ì¸í•˜ê¸° ì „ì— ìž ê¸ˆì„ ê¸°ë‹¤ë¦´ ì‹œê°„ì„ ì„¤ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1775 +msgid "" +"Sets the maximum delay before canceling queries when a hot standby server is " +"processing archived WAL data." +msgstr "" +"ì½ê¸° ì „ìš© ë³´ì¡° 서버가 ì•„ì¹´ì´ë¸Œëœ WAL ìžë£Œë¥¼ 처리할 때, ì§€ì—°ë  ìˆ˜ 있는 최대 시" +"ê°„" + +#: utils/misc/guc.c:1786 +msgid "" +"Sets the maximum delay before canceling queries when a hot standby server is " +"processing streamed WAL data." +msgstr "" +"ì½ê¸° ì „ìš© ë³´ì¡° 서버가 스트림 WAL ìžë£Œë¥¼ 처리할 때, ì§€ì—°ë  ìˆ˜ 있는 최대 시간" + +#: utils/misc/guc.c:1797 +msgid "" +"Sets the maximum interval between WAL receiver status reports to the primary." +msgstr "주 서버로 WAL 수신기 ìƒíƒœë¥¼ 보고하는 최대 간격" + +#: utils/misc/guc.c:1808 +msgid "Sets the maximum wait time to receive data from the primary." +msgstr "" +"주 서버ì—서 보낸 ìžë£Œë¥¼ 받기위해 기다릴 수 있는 최대 허용 ì‹œê°„ì„ ì„¤ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1819 +msgid "Sets the maximum number of concurrent connections." +msgstr "최대 ë™ì‹œ ì ‘ì†ìˆ˜ë¥¼ 지정합니다." + +#: utils/misc/guc.c:1829 +msgid "Sets the number of connection slots reserved for superusers." +msgstr "superuser ë™ì‹œ ì ‘ì†ìˆ˜ë¥¼ 지정합니다." + +#: utils/misc/guc.c:1843 +msgid "Sets the number of shared memory buffers used by the server." +msgstr "서버ì—서 사용할 공유 ë©”ëª¨ë¦¬ì˜ ê°œìˆ˜ë¥¼ 지정함" + +#: utils/misc/guc.c:1854 +msgid "Sets the maximum number of temporary buffers used by each session." +msgstr "ê° ì„¸ì…˜ì—서 사용하는 임시 버í¼ì˜ 최대 개수를 지정" + +#: utils/misc/guc.c:1865 +msgid "Sets the TCP port the server listens on." +msgstr "TCP í¬íЏ 번호를 지정함." + +#: utils/misc/guc.c:1875 +msgid "Sets the access permissions of the Unix-domain socket." +msgstr "유닉스 ë„ë©”ì¸ ì†Œì¼“ 파ì¼ì˜ 액세스 ê¶Œí•œì„ ì§€ì •í•¨" + +#: utils/misc/guc.c:1876 +msgid "" +"Unix-domain sockets use the usual Unix file system permission set. The " +"parameter value is expected to be a numeric mode specification in the form " +"accepted by the chmod and umask system calls. (To use the customary octal " +"format the number must start with a 0 (zero).)" +msgstr "" +"Unix ë„ë©”ì¸ ì†Œì¼“ì€ ì¼ë°˜ì ì¸ Unix íŒŒì¼ ì‹œìŠ¤í…œ 권한 ì§‘í•©ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. 매개 ë³€" +"수 ê°’ì€ chmod ë° umask 시스템 호출ì—서 수ë½ë˜ëŠ” í˜•íƒœì˜ ìˆ«ìž ëª¨ë“œ 지정ì´ì–´ì•¼ " +"합니다. (ì¼ë°˜ì ì¸ 8진수 형ì‹ì„ 사용하려면 숫ìžê°€ 0으로 시작해야 합니다.)" + +#: utils/misc/guc.c:1890 +msgid "Sets the file permissions for log files." +msgstr "로그 파ì¼ì˜ íŒŒì¼ ì ‘ê·¼ ê¶Œí•œì„ ì§€ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1891 +msgid "" +"The parameter value is expected to be a numeric mode specification in the " +"form accepted by the chmod and umask system calls. (To use the customary " +"octal format the number must start with a 0 (zero).)" +msgstr "" +"매개 변수 ê°’ì€ chmod ë° umask 시스템 호출ì—서 수ë½ë˜ëŠ” í˜•íƒœì˜ ìˆ«ìž ëª¨ë“œ 지정" +"ì´ì–´ì•¼ 합니다. (ì¼ë°˜ì ì¸ 8진수 형ì‹ì„ 사용하려면 숫ìžê°€ 0으로 시작해야 합니" +"다.)" + +#: utils/misc/guc.c:1904 +msgid "Sets the maximum memory to be used for query workspaces." +msgstr "쿼리 ìž‘ì—…ê³µê°„ì„ ìœ„í•´ ì‚¬ìš©ë  ë©”ëª¨ë¦¬ì˜ ìµœëŒ€ê°’ì„ ì§€ì •í•¨." + +#: utils/misc/guc.c:1905 +msgid "" +"This much memory can be used by each internal sort operation and hash table " +"before switching to temporary disk files." +msgstr "" +"임시 ë””ìŠ¤í¬ íŒŒì¼ë¡œ 전환하기 ì „ì— ê° ë‚´ë¶€ ì •ë ¬ 작업과 해시 í…Œì´ë¸”ì—서 ì´ í¬ê¸°" +"ì˜ ë©”ëª¨ë¦¬ë¥¼ 사용할 수 있습니다." + +#: utils/misc/guc.c:1917 +msgid "Sets the maximum memory to be used for maintenance operations." +msgstr "관리 ìž‘ì—…ì„ ìœ„í•´ ì‚¬ìš©ë  ë©”ëª¨ë¦¬ì˜ ìµœëŒ€ê°’ì„ ì§€ì •í•¨." + +#: utils/misc/guc.c:1918 +msgid "This includes operations such as VACUUM and CREATE INDEX." +msgstr "ê´€ë¦¬ìž‘ì—…ì€ VACUUM, CREATE INDEX ê°™ì€ ìž‘ì—…ì„ ëœ»í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1928 +msgid "" +"Sets the maximum number of tuples to be sorted using replacement selection." +msgstr "replacement selection ê¸°ëŠ¥ì„ ì´ìš©í•  최대 튜플 수" + +#: utils/misc/guc.c:1929 +msgid "When more tuples than this are present, quicksort will be used." +msgstr "ì´ íŠœí”Œ 수 보다 많으면, quicksort 를 사용함" + +#: utils/misc/guc.c:1943 +msgid "Sets the maximum stack depth, in kilobytes." +msgstr "스íƒê¹Šì´(KB 단위) ìµœëŒ€ê°’ì„ ì§€ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:1954 +msgid "Limits the total size of all temporary files used by each process." +msgstr "ê° í”„ë¡œì„¸ìŠ¤ì—서 사용하는 모든 임시 파ì¼ì˜ ì´ í¬ê¸° 제한" + +#: utils/misc/guc.c:1955 +msgid "-1 means no limit." +msgstr "-1ì€ ì œí•œ ì—†ìŒ" + +#: utils/misc/guc.c:1965 +msgid "Vacuum cost for a page found in the buffer cache." +msgstr "ë²„í¼ ìºì‹œì— 있는 페ì´ì§€ì˜ 청소 비용입니다." + +#: utils/misc/guc.c:1975 +msgid "Vacuum cost for a page not found in the buffer cache." +msgstr "ë²„í¼ ìºì‹œì— 없는 페ì´ì§€ì˜ 청소 비용입니다." + +#: utils/misc/guc.c:1985 +msgid "Vacuum cost for a page dirtied by vacuum." +msgstr "청소로 페ì´ì§€ 변경 시 부과ë˜ëŠ” 비용입니다." + +#: utils/misc/guc.c:1995 +msgid "Vacuum cost amount available before napping." +msgstr "청소가 중지ë˜ëŠ” 청소 비용 합계입니다." + +#: utils/misc/guc.c:2005 +msgid "Vacuum cost delay in milliseconds." +msgstr "청소 비용 지연(밀리초)입니다." + +#: utils/misc/guc.c:2016 +msgid "Vacuum cost delay in milliseconds, for autovacuum." +msgstr "ìžë™ ì²­ì†Œì— ëŒ€í•œ 청소 비용 지연(밀리초)입니다." + +#: utils/misc/guc.c:2027 +msgid "Vacuum cost amount available before napping, for autovacuum." +msgstr "ìžë™ ì²­ì†Œì— ëŒ€í•œ 청소가 중지ë˜ëŠ” 청소 비용 합계입니다." + +#: utils/misc/guc.c:2037 +msgid "" +"Sets the maximum number of simultaneously open files for each server process." +msgstr "ê°ê°ì˜ 서버 프로세스ì—서 ë™ì‹œì— 열릴 수 있는 최대 íŒŒì¼ ê°¯ìˆ˜ë¥¼ 지정함." + +#: utils/misc/guc.c:2050 +msgid "Sets the maximum number of simultaneously prepared transactions." +msgstr "ë™ì‹œì— ì¤€ë¹„ëœ íŠ¸ëžœìž­ì…˜ 최대 개수 지정" + +#: utils/misc/guc.c:2061 +msgid "Sets the minimum OID of tables for tracking locks." +msgstr "잠금 ì¶”ì ì„ 위한 í…Œì´ë¸”ì˜ ìµœì†Œ OID 지정" + +#: utils/misc/guc.c:2062 +msgid "Is used to avoid output on system tables." +msgstr "" + +#: utils/misc/guc.c:2071 +msgid "Sets the OID of the table with unconditionally lock tracing." +msgstr "" + +#: utils/misc/guc.c:2083 +msgid "Sets the maximum allowed duration of any statement." +msgstr "모든 ì¿¼ë¦¬ë¬¸ì— ì ìš©ë˜ëŠ” 허용ë˜ëŠ” 최대 수행시간" + +#: utils/misc/guc.c:2084 utils/misc/guc.c:2095 utils/misc/guc.c:2106 +msgid "A value of 0 turns off the timeout." +msgstr "ì´ ê°’ì´ 0ì´ë©´ ì´ëŸ° ì œí•œì´ ì—†ìŒ." + +#: utils/misc/guc.c:2094 +msgid "Sets the maximum allowed duration of any wait for a lock." +msgstr "모든 ìž ê¸ˆì— ì ìš©ë˜ëŠ” 기다리는 최대 대기 시간" + +#: utils/misc/guc.c:2105 +msgid "Sets the maximum allowed duration of any idling transaction." +msgstr "idle-in-transaction ìƒíƒœë¡œ ìžˆì„ ìˆ˜ 있는 최대 시간" + +#: utils/misc/guc.c:2116 +msgid "Minimum age at which VACUUM should freeze a table row." +msgstr "VACUUMì—서 í…Œì´ë¸” í–‰ì„ ë™ê²°í•  ë•Œê¹Œì§€ì˜ ìµœì†Œ 기간입니다." + +#: utils/misc/guc.c:2126 +msgid "Age at which VACUUM should scan whole table to freeze tuples." +msgstr "" +"VACUUMì—서 íŠœí”Œì„ ë™ê²°í•˜ê¸° 위해 ì „ì²´ í…Œì´ë¸”ì„ ìŠ¤ìº”í•  ë•Œê¹Œì§€ì˜ ê¸°ê°„ìž…ë‹ˆë‹¤." + +#: utils/misc/guc.c:2136 +msgid "Minimum age at which VACUUM should freeze a MultiXactId in a table row." +msgstr "VACUUMì—서 í…Œì´ë¸” MultiXactId ë™ê²°í•  ë•Œê¹Œì§€ì˜ ìµœì†Œ 기간입니다." + +#: utils/misc/guc.c:2146 +msgid "Multixact age at which VACUUM should scan whole table to freeze tuples." +msgstr "" +"VACUUMì—서 íŠœí”Œì„ ë™ê²°í•˜ê¸° 위해 ì „ì²´ í…Œì´ë¸”ì„ ìŠ¤ìº”í•  ë•Œê¹Œì§€ì˜ ë©€í‹°íŠ¸ëžœìž­ì…˜ 기" +"간입니다." + +#: utils/misc/guc.c:2156 +msgid "" +"Number of transactions by which VACUUM and HOT cleanup should be deferred, " +"if any." +msgstr "" + +#: utils/misc/guc.c:2169 +msgid "Sets the maximum number of locks per transaction." +msgstr "í•˜ë‚˜ì˜ íŠ¸ëžœìž­ì…˜ì—서 사용할 수 있는 최대 잠금 횟수를 지정함." + +#: utils/misc/guc.c:2170 +msgid "" +"The shared lock table is sized on the assumption that at most " +"max_locks_per_transaction * max_connections distinct objects will need to be " +"locked at any one time." +msgstr "" +"공유 잠금 í…Œì´ë¸”ì€ í•œ ë²ˆì— ìž ê¶ˆì•¼ í•  고유 ê°ì²´ 수가 " +"max_locks_per_transaction * max_connections를 넘지 않는다는 가정 í•˜ì— í¬ê¸°ê°€ " +"지정ë©ë‹ˆë‹¤." + +#: utils/misc/guc.c:2181 +msgid "Sets the maximum number of predicate locks per transaction." +msgstr "í•˜ë‚˜ì˜ íŠ¸ëžœìž­ì…˜ì—서 사용할 수 있는 최대 잠금 횟수를 지정함." + +#: utils/misc/guc.c:2182 +msgid "" +"The shared predicate lock table is sized on the assumption that at most " +"max_pred_locks_per_transaction * max_connections distinct objects will need " +"to be locked at any one time." +msgstr "" +"공유 predicate 잠금 í…Œì´ë¸”ì€ í•œ ë²ˆì— ìž ê¶ˆì•¼ í•  고유 ê°ì²´ 수가 " +"max_pred_locks_per_transaction * max_connections를 넘지 않는다는 가정 í•˜ì— í¬" +"기가 지정ë©ë‹ˆë‹¤." + +#: utils/misc/guc.c:2193 +msgid "Sets the maximum allowed time to complete client authentication." +msgstr "í´ë¼ì´ì–¸íЏ ì¸ì¦ì„ 완료할 수 있는 최대 허용 ì‹œê°„ì„ ì„¤ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:2205 +msgid "Waits N seconds on connection startup before authentication." +msgstr "ì¸ì¦ ì „ì— ì—°ê²°ì´ ì‹œìž‘ë˜ë„ë¡ Nì´ˆ ë™ì•ˆ 기다립니다." + +#: utils/misc/guc.c:2216 +msgid "Sets the number of WAL files held for standby servers." +msgstr "대기 서버를 위해 보관하고 ìžˆì„ WAL íŒŒì¼ ê°œìˆ˜ 지정" + +#: utils/misc/guc.c:2226 +msgid "Sets the minimum size to shrink the WAL to." +msgstr "WAL 최소 í¬ê¸°" + +#: utils/misc/guc.c:2237 +msgid "Sets the WAL size that triggers a checkpoint." +msgstr "ì²´í¬í¬ì¸íЏ ìž‘ì—…ì„ í•  WAL í¬ê¸° 지정" + +#: utils/misc/guc.c:2248 +msgid "Sets the maximum time between automatic WAL checkpoints." +msgstr "ìžë™ WAL ì²´í¬í¬ì¸íЏ 사ì´ì˜ 최대 ê°„ê²©ì„ ì„¤ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:2259 +msgid "" +"Enables warnings if checkpoint segments are filled more frequently than this." +msgstr "지정 시간 ì•ˆì— ì²´í¬í¬ì¸íЏ ì¡°ê°ì´ ëª¨ë‘ ì±„ì›Œì§€ë©´ 경고를 냄" + +#: utils/misc/guc.c:2261 +msgid "" +"Write a message to the server log if checkpoints caused by the filling of " +"checkpoint segment files happens more frequently than this number of " +"seconds. Zero turns off the warning." +msgstr "" +"ì²´í¬í¬ì¸íЏ ìž‘ì—…ì´ ì§€ê¸ˆ 지정한 시간(ì´ˆ)보다 ìžì£¼ ì²´í¬í¬ì¸íЏ 세그먼트 파ì¼ì— ë‚´" +"ìš©ì´ ê½‰ 차는 사태가 ë°œìƒí•˜ë©´ 경고 메시지를 서버 ë¡œê·¸ì— ë‚¨ê¹ë‹ˆë‹¤. ì´ ê°’ì„ 0으" +"로 지정하면 ì´ ê¸°ëŠ¥ ì—†ìŒ" + +#: utils/misc/guc.c:2273 utils/misc/guc.c:2430 utils/misc/guc.c:2457 +msgid "" +"Number of pages after which previously performed writes are flushed to disk." +msgstr "" + +#: utils/misc/guc.c:2284 +msgid "Sets the number of disk-page buffers in shared memory for WAL." +msgstr "" +"WAL ê¸°ëŠ¥ì„ ìœ„í•´ 공유 메모리ì—서 사용할 ë””ìŠ¤í¬ íŽ˜ì´ì§€ ë²„í¼ ê°œìˆ˜ë¥¼ 지정함." + +#: utils/misc/guc.c:2295 +msgid "Time between WAL flushes performed in the WAL writer." +msgstr "WAL 기ë¡ìžê°€ 지정 시간 ë§Œí¼ ì‰¬ê³  쓰기 ìž‘ì—…ì„ ë°˜ë³µí•¨" + +#: utils/misc/guc.c:2306 +msgid "Amount of WAL written out by WAL writer that triggers a flush." +msgstr "" + +#: utils/misc/guc.c:2318 +msgid "Sets the maximum number of simultaneously running WAL sender processes." +msgstr "ë™ì‹œì— ìž‘ë™í•  WAL 송신 프로세스 최대 수 지정" + +#: utils/misc/guc.c:2329 +msgid "Sets the maximum number of simultaneously defined replication slots." +msgstr "ë™ì‹œì— 사용할 수 있는 복제 슬롯 최대 수 지정" + +#: utils/misc/guc.c:2339 +msgid "Sets the maximum time to wait for WAL replication." +msgstr "WAL 복제를 위해 기다릴 최대 시간 설정" + +#: utils/misc/guc.c:2350 +msgid "" +"Sets the delay in microseconds between transaction commit and flushing WAL " +"to disk." +msgstr "" +"트랜잭션과 트랜잭션 ë¡œê·¸ì˜ ì ìš© 사ì´ì˜ ê°„ê²©ì„ microsecond 단위로 지정함" + +#: utils/misc/guc.c:2362 +msgid "" +"Sets the minimum concurrent open transactions before performing commit_delay." +msgstr "commit_delay 처리하기 ì „ì— ìžˆëŠ” 최소 ë™ì‹œ ì—´ë ¤ 있는 트랜잭션 개수." + +#: utils/misc/guc.c:2373 +msgid "Sets the number of digits displayed for floating-point values." +msgstr "ë¶€ë™ì†Œìˆ˜í˜• ê°’ì„ í‘œê¸°í•  때 " + +#: utils/misc/guc.c:2374 +msgid "" +"This affects real, double precision, and geometric data types. The parameter " +"value is added to the standard number of digits (FLT_DIG or DBL_DIG as " +"appropriate)." +msgstr "" +"ì´ ê°’ì€ real, duoble ë¶€ë™ ì†Œìˆ«ì ê³¼ 지리정보 ìžë£Œí˜•ì— ì˜í–¥ì„ ë¼ì¹©ë‹ˆë‹¤. ì´ ê°’" +"ì€ ì •ìˆ˜ì—¬ì•¼í•©ë‹ˆë‹¤(FLT_DIG or DBL_DIG as appropriate - 무슨 ë§ì¸ì§€)." + +#: utils/misc/guc.c:2385 +msgid "Sets the minimum execution time above which statements will be logged." +msgstr "" +"ì´ ì‹œê°„ì„ ì´ˆê³¼í•  경우 ì¿¼ë¦¬ë¬¸ì„ ë¡œê·¸ë¡œ 남길 최소 실행 ì‹œê°„ì„ ì„¤ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:2387 +msgid "Zero prints all queries. -1 turns this feature off." +msgstr "" +"0ì„ ì§€ì •í•˜ë©´ 모든 쿼리가 ì¸ì‡„ë©ë‹ˆë‹¤. -1ì„ ì§€ì •í•˜ë©´ ì´ ê¸°ëŠ¥ì´ í•´ì œë©ë‹ˆë‹¤." + +#: utils/misc/guc.c:2397 +msgid "" +"Sets the minimum execution time above which autovacuum actions will be " +"logged." +msgstr "" +"ì´ ì‹œê°„ì„ ì´ˆê³¼í•  경우 ìžë™ 청소 작업 로그를 남길 최소 실행 ì‹œê°„ì„ ì„¤ì •í•©ë‹ˆ" +"다." + +#: utils/misc/guc.c:2399 +msgid "Zero prints all actions. -1 turns autovacuum logging off." +msgstr "" +"0ì„ ì§€ì •í•˜ë©´ 모든 ìž‘ì—…ì´ ì¸ì‡„ë©ë‹ˆë‹¤. -1ì„ ì§€ì •í•˜ë©´ ìžë™ 청소 기ë¡ì´ í•´ì œë©ë‹ˆ" +"다." + +#: utils/misc/guc.c:2409 +msgid "Background writer sleep time between rounds." +msgstr "백그ë¼ìš´ë“œ 기ë¡ìžì˜ ìž ìžëŠ” 시간" + +#: utils/misc/guc.c:2420 +msgid "Background writer maximum number of LRU pages to flush per round." +msgstr "ë¼ìš´ë“œë‹¹ 플러시할 백그ë¼ìš´ë“œ 작성기 최대 LRU 페ì´ì§€ 수입니다." + +#: utils/misc/guc.c:2443 +msgid "" +"Number of simultaneous requests that can be handled efficiently by the disk " +"subsystem." +msgstr "" +"ë””ìŠ¤í¬ í•˜ìœ„ 시스템ì—서 효율ì ìœ¼ë¡œ 처리할 수 있는 ë™ì‹œ 요청 수입니다." + +#: utils/misc/guc.c:2444 +msgid "" +"For RAID arrays, this should be approximately the number of drive spindles " +"in the array." +msgstr "RAID ë°°ì—´ì˜ ê²½ìš° ì´ ê°’ì€ ëŒ€ëžµ ë°°ì—´ì˜ ë“œë¼ì´ë¸Œ 스핀들 수입니다." + +#: utils/misc/guc.c:2470 +msgid "Maximum number of concurrent worker processes." +msgstr "ë™ì‹œ ìž‘ì—…ìž í”„ë¡œì„¸ìŠ¤ì˜ ìµœëŒ€ 수" + +#: utils/misc/guc.c:2480 +msgid "Automatic log file rotation will occur after N minutes." +msgstr "Në¶„ í›„ì— ìžë™ 로그 íŒŒì¼ íšŒì „ì´ ë°œìƒí•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:2491 +msgid "Automatic log file rotation will occur after N kilobytes." +msgstr "N킬로바ì´íЏ í›„ì— ìžë™ 로그 íŒŒì¼ íšŒì „ì´ ë°œìƒí•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:2502 +msgid "Shows the maximum number of function arguments." +msgstr "함수 ì¸ìžì˜ 최대 갯수를 ë³´ì—¬ì¤ë‹ˆë‹¤" + +#: utils/misc/guc.c:2513 +msgid "Shows the maximum number of index keys." +msgstr "ì¸ë±ìФ í‚¤ì˜ ìµœëŒ€ê°œìˆ˜ë¥¼ ë³´ì—¬ì¤ë‹ˆë‹¤." + +#: utils/misc/guc.c:2524 +msgid "Shows the maximum identifier length." +msgstr "최대 ì‹ë³„ìž ê¸¸ì´ë¥¼ 표시합니다." + +#: utils/misc/guc.c:2535 +msgid "Shows the size of a disk block." +msgstr "ë””ìŠ¤í¬ ë¸”ë¡ì˜ í¬ê¸°ë¥¼ 표시합니다." + +#: utils/misc/guc.c:2546 +msgid "Shows the number of pages per disk file." +msgstr "ë””ìŠ¤í¬ íŒŒì¼ë‹¹ 페ì´ì§€ 수를 표시합니다." + +#: utils/misc/guc.c:2557 +msgid "Shows the block size in the write ahead log." +msgstr "미리 쓰기 ë¡œê·¸ì˜ ë¸”ë¡ í¬ê¸°ë¥¼ 표시합니다." + +#: utils/misc/guc.c:2568 +msgid "" +"Sets the time to wait before retrying to retrieve WAL after a failed attempt." +msgstr "" + +#: utils/misc/guc.c:2580 +msgid "Shows the number of pages per write ahead log segment." +msgstr "미리 쓰기 로그 세그먼트당 페ì´ì§€ 수를 표시합니다." + +#: utils/misc/guc.c:2593 +msgid "Time to sleep between autovacuum runs." +msgstr "ìžë™ 청소 실행 사ì´ì˜ 절전 모드 시간입니다." + +#: utils/misc/guc.c:2603 +msgid "Minimum number of tuple updates or deletes prior to vacuum." +msgstr "청소 ì „ì˜ ìµœì†Œ 튜플 ì—…ë°ì´íЏ ë˜ëŠ” ì‚­ì œ 수입니다." + +#: utils/misc/guc.c:2612 +msgid "Minimum number of tuple inserts, updates, or deletes prior to analyze." +msgstr "통계 ì •ë³´ ìˆ˜ì§‘ì„ ìœ„í•œ 최소 튜플 삽입, ì—…ë°ì´íЏ ë˜ëŠ” ì‚­ì œ 수입니다." + +#: utils/misc/guc.c:2622 +msgid "" +"Age at which to autovacuum a table to prevent transaction ID wraparound." +msgstr "" +"트랜잭션 ID 겹침 방지를 위해 í…Œì´ë¸”ì— ëŒ€í•´ autovacuum ìž‘ì—…ì„ ìˆ˜í–‰í•  í…Œì´ë¸” 나" +"ì´ë¥¼ 지정합니다." + +#: utils/misc/guc.c:2633 +msgid "" +"Multixact age at which to autovacuum a table to prevent multixact wraparound." +msgstr "" +"멀티 트랜잭션 ID 겹침 방지를 위해 í…Œì´ë¸”ì— ëŒ€í•´ autovacuum ìž‘ì—…ì„ ìˆ˜í–‰í•  트랜" +"ìž­ì…˜ 나ì´ë¥¼ 지정합니다." + +#: utils/misc/guc.c:2643 +msgid "" +"Sets the maximum number of simultaneously running autovacuum worker " +"processes." +msgstr "ë™ì‹œì— 작업할 수 있는 autovacuum ìž‘ì—…ìž ìµœëŒ€ 수 지정" + +#: utils/misc/guc.c:2653 +msgid "Sets the maximum number of parallel processes per executor node." +msgstr "실행 노드당 최대 병렬 처리 수 지정" + +#: utils/misc/guc.c:2663 +msgid "Sets the maximum memory to be used by each autovacuum worker process." +msgstr "ê° autovacuum ìž‘ì—…ìž í”„ë¡œì„¸ìŠ¤ê°€ 사용할 메모리 최대치" + +#: utils/misc/guc.c:2674 +msgid "" +"Time before a snapshot is too old to read pages changed after the snapshot " +"was taken." +msgstr "" + +#: utils/misc/guc.c:2675 +msgid "A value of -1 disables this feature." +msgstr "ì´ ê°’ì´ -1 ì´ë©´ ì´ ê¸°ëŠ¥ 사용 안함" + +#: utils/misc/guc.c:2685 +msgid "Time between issuing TCP keepalives." +msgstr "TCP ì—°ê²° 유지 실행 간격입니다." + +#: utils/misc/guc.c:2686 utils/misc/guc.c:2697 +msgid "A value of 0 uses the system default." +msgstr "ì´ ê°’ì´ 0ì´ë©´ 시스템 기본 ê°’" + +#: utils/misc/guc.c:2696 +msgid "Time between TCP keepalive retransmits." +msgstr "TCP keepalive 시간 설정" + +#: utils/misc/guc.c:2707 +msgid "SSL renegotiation is no longer supported; this can only be 0." +msgstr "" + +#: utils/misc/guc.c:2718 +msgid "Maximum number of TCP keepalive retransmits." +msgstr "TCP keepalive í™•ì¸ ìµœëŒ€ 횟수" + +#: utils/misc/guc.c:2719 +msgid "" +"This controls the number of consecutive keepalive retransmits that can be " +"lost before a connection is considered dead. A value of 0 uses the system " +"default." +msgstr "" +"ì´ ê°’ì€ ì—°ê²°ì´ ì¤‘ë‹¨ëœ ê²ƒìœ¼ë¡œ 간주ë˜ê¸° ì „ì— ì†ì‹¤ë  수 있는 ì—°ì† ì—°ê²° 유" +"ì§€ 재전송 수를 제어합니다. ê°’ 0ì„ ì§€ì •í•˜ë©´ 시스템 기본 ê°’ì´ ì‚¬ìš©ë©ë‹ˆë‹¤." + +#: utils/misc/guc.c:2730 +msgid "Sets the maximum allowed result for exact search by GIN." +msgstr "정확한 GIN 기준 ê²€ìƒ‰ì— í—ˆìš©ë˜ëŠ” 최대 ê²°ê³¼ 수를 설정합니다." + +#: utils/misc/guc.c:2741 +msgid "Sets the planner's assumption about the size of the disk cache." +msgstr "ë””ìŠ¤í¬ ìºì‹œ í¬ê¸°ì— 대한 ê³„íš ê´€ë¦¬ìžì˜ ê°€ì •ì„ ì„¤ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:2742 +msgid "" +"That is, the portion of the kernel's disk cache that will be used for " +"PostgreSQL data files. This is measured in disk pages, which are normally 8 " +"kB each." +msgstr "" +"즉, PostgreSQL ë°ì´í„° 파ì¼ì— ì‚¬ìš©ë  ì»¤ë„ì˜ ë””ìŠ¤í¬ ìºì‹œ 부분입니다. ì´ ê°’" +"ì€ ë””ìŠ¤í¬ íŽ˜ì´ì§€ 단위로 측정ë˜ë©°, ì¼ë°˜ì ìœ¼ë¡œ ê°ê° 8KB입니다." + +#: utils/misc/guc.c:2754 +msgid "Sets the minimum size of relations to be considered for parallel scan." +msgstr "" + +#: utils/misc/guc.c:2766 +msgid "Shows the server version as an integer." +msgstr "서버 ë²„ì „ì„ ì •ìˆ˜í˜•ìœ¼ë¡œ ë³´ì—¬ì¤ë‹ˆë‹¤" + +#: utils/misc/guc.c:2777 +msgid "Log the use of temporary files larger than this number of kilobytes." +msgstr "ì´ í‚¬ë¡œë°”ì´íЏ 수보다 í° ìž„ì‹œ 파ì¼ì˜ ì‚¬ìš©ì„ ê¸°ë¡í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:2778 +msgid "Zero logs all files. The default is -1 (turning this feature off)." +msgstr "" +"0ì„ ì§€ì •í•˜ë©´ 모든 파ì¼ì´ 기ë¡ë©ë‹ˆë‹¤. 기본 ê°’ì€ -1로, ì´ ê¸°ëŠ¥ì´ í•´ì œë©ë‹ˆë‹¤." + +#: utils/misc/guc.c:2788 +msgid "Sets the size reserved for pg_stat_activity.query, in bytes." +msgstr "pg_stat_activity.queryì— ì˜ˆì•½ë˜ëŠ” í¬ê¸°(ë°”ì´íЏ)를 설정합니다." + +#: utils/misc/guc.c:2803 +msgid "Sets the maximum size of the pending list for GIN index." +msgstr "GIN ì¸ë±ìŠ¤ë¥¼ 위한 팬딩(pending) 목ë¡ì˜ 최대 í¬ê¸° 지정" + +#: utils/misc/guc.c:2823 +msgid "" +"Sets the planner's estimate of the cost of a sequentially fetched disk page." +msgstr "" +"순차ì ìœ¼ë¡œ 접근하는 ë””ìŠ¤í¬ íŽ˜ì´ì§€ì— 대한 ê³„íš ê´€ë¦¬ìžì˜ ì˜ˆìƒ ë¹„ìš©ì„ ì„¤ì •í•©ë‹ˆ" +"다." + +#: utils/misc/guc.c:2833 +msgid "" +"Sets the planner's estimate of the cost of a nonsequentially fetched disk " +"page." +msgstr "" +"비순차ì ìœ¼ë¡œ 접근하는 ë””ìŠ¤í¬ íŽ˜ì´ì§€ì— 대한 ê³„íš ê´€ë¦¬ìžì˜ ì˜ˆìƒ ë¹„ìš©ì„ ì„¤ì •í•©ë‹ˆ" +"다." + +#: utils/misc/guc.c:2843 +msgid "Sets the planner's estimate of the cost of processing each tuple (row)." +msgstr "ê° íŠœí”Œ(í–‰)ì— ëŒ€í•œ ê³„íš ê´€ë¦¬ìžì˜ ì˜ˆìƒ ì²˜ë¦¬ ë¹„ìš©ì„ ì„¤ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:2853 +msgid "" +"Sets the planner's estimate of the cost of processing each index entry " +"during an index scan." +msgstr "" +"실행 계íšê¸°ì˜ 비용 ê³„ì‚°ì— ì‚¬ìš©ë  ì¸ë±ìФ 스캔으로 ê° ì¸ë±ìФ í•­ëª©ì„ ì²˜ë¦¬í•˜ëŠ” 예" +"ìƒ ì²˜ë¦¬ ë¹„ìš©ì„ ì„¤ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:2863 +msgid "" +"Sets the planner's estimate of the cost of processing each operator or " +"function call." +msgstr "" +"실행 계íšê¸°ì˜ 비용 ê³„ì‚°ì— ì‚¬ìš©ë  í•¨ìˆ˜ 호출ì´ë‚˜ ì—°ì‚°ìž ì—°ì‚° 처리하는 ì˜ˆìƒ ì²˜" +"리 ë¹„ìš©ì„ ì„¤ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:2873 +msgid "" +"Sets the planner's estimate of the cost of passing each tuple (row) from " +"worker to master backend." +msgstr "ê° íŠœí”Œ(í–‰)ì— ëŒ€í•œ ê³„íš ê´€ë¦¬ìžì˜ ì˜ˆìƒ ì²˜ë¦¬ ë¹„ìš©ì„ ì„¤ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:2883 +msgid "" +"Sets the planner's estimate of the cost of starting up worker processes for " +"parallel query." +msgstr "" + +#: utils/misc/guc.c:2894 +msgid "" +"Sets the planner's estimate of the fraction of a cursor's rows that will be " +"retrieved." +msgstr "ê²€ìƒ‰ë  ì»¤ì„œ í–‰ì— ëŒ€í•œ ê³„íš ê´€ë¦¬ìžì˜ ì˜ˆìƒ ë¶„ìˆ˜ ê°’ì„ ì„¤ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:2905 +msgid "GEQO: selective pressure within the population." +msgstr "GEQO: 모집단 ë‚´ì˜ ì„ íƒ ì••ë ¥ìž…ë‹ˆë‹¤." + +#: utils/misc/guc.c:2915 +msgid "GEQO: seed for random path selection." +msgstr "GEQO: 무작위 경로 ì„ íƒì„ 위한 씨드" + +#: utils/misc/guc.c:2925 +msgid "Multiple of the average buffer usage to free per round." +msgstr "ë¼ìš´ë“œë‹¹ 해제할 í‰ê·  ë²„í¼ ì‚¬ìš©ì˜ ë°°ìˆ˜ìž…ë‹ˆë‹¤." + +#: utils/misc/guc.c:2935 +msgid "Sets the seed for random-number generation." +msgstr "난수 ìƒì„± ì†ë„를 설정합니다." + +#: utils/misc/guc.c:2946 +msgid "" +"Number of tuple updates or deletes prior to vacuum as a fraction of " +"reltuples." +msgstr "" +"vacuum ìž‘ì—…ì„ ì§„í–‰í•  update, delete ìž‘ì—…ëŸ‰ì„ ì „ì²´ ìžë£Œì— 대한 분수값으로 지정" +"합니다." + +#: utils/misc/guc.c:2955 +msgid "" +"Number of tuple inserts, updates, or deletes prior to analyze as a fraction " +"of reltuples." +msgstr "" +"통계 수집 ìž‘ì—…ì„ ì§„í–‰í•  insert, update, delete ìž‘ì—…ëŸ‰ì„ ì „ì²´ ìžë£Œì— 대한 분수" +"값으로 지정합니다." + +#: utils/misc/guc.c:2965 +msgid "" +"Time spent flushing dirty buffers during checkpoint, as fraction of " +"checkpoint interval." +msgstr "" +"ì²´í¬í¬ì¸íЏ ë„중 ë³€ê²½ëœ ë²„í¼ í”ŒëŸ¬ì‹œì— ì‚¬ìš©ëœ ì‹œê°„ìœ¼ë¡œ, ì²´í¬í¬ì¸íЏ ê°„ê²©ì˜ " +"분수 값입니다." + +#: utils/misc/guc.c:2984 +msgid "Sets the shell command that will be called to archive a WAL file." +msgstr "WAL 파ì¼ì„ ì•„ì¹´ì´ë¹™í•˜ê¸° 위해 í˜¸ì¶œë  ì…¸ ëª…ë ¹ì„ ì„¤ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:2994 +msgid "Sets the client's character set encoding." +msgstr "í´ë¼ì´ì–¸íЏ ë¬¸ìž ì„¸íŠ¸ ì¸ì½”ë”©ì„ ì§€ì •í•¨" + +#: utils/misc/guc.c:3005 +msgid "Controls information prefixed to each log line." +msgstr "ê° ë¡œê·¸ 줄 ì•žì— ì¶”ê°€í•  정보를 제어합니다." + +#: utils/misc/guc.c:3006 +msgid "If blank, no prefix is used." +msgstr "비워 ë‘ë©´ ì ‘ë‘사가 사용ë˜ì§€ 않습니다." + +#: utils/misc/guc.c:3015 +msgid "Sets the time zone to use in log messages." +msgstr "로그 ë©”ì‹œì§€ì— ì‚¬ìš©í•  표준 시간대를 설정합니다." + +#: utils/misc/guc.c:3025 +msgid "Sets the display format for date and time values." +msgstr "날짜와 시간 ê°’ì„ ë‚˜íƒ€ë‚´ëŠ” ëª¨ì–‘ì„ ì§€ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:3026 +msgid "Also controls interpretation of ambiguous date inputs." +msgstr "ë˜í•œ 모호한 ë‚ ì§œ ìž…ë ¥ì˜ í•´ì„ì„ ì œì–´í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:3037 +msgid "Sets the default tablespace to create tables and indexes in." +msgstr "í…Œì´ë¸” ë° ì¸ë±ìŠ¤ë¥¼ 만들 기본 í…Œì´ë¸”스페ì´ìŠ¤ë¥¼ 설정합니다." + +#: utils/misc/guc.c:3038 +msgid "An empty string selects the database's default tablespace." +msgstr "빈 문ìžì—´ì„ 지정하면 ë°ì´í„°ë² ì´ìŠ¤ì˜ ê¸°ë³¸ í…Œì´ë¸”스페ì´ìŠ¤ê°€ ì„ íƒë©ë‹ˆë‹¤." + +#: utils/misc/guc.c:3048 +msgid "Sets the tablespace(s) to use for temporary tables and sort files." +msgstr "임시 í…Œì´ë¸” ë° ì •ë ¬ 파ì¼ì— 사용할 í…Œì´ë¸”스페ì´ìŠ¤ë¥¼ 설정합니다." + +#: utils/misc/guc.c:3059 +msgid "Sets the path for dynamically loadable modules." +msgstr "ë™ì ìœ¼ë¡œ 불러올 수 있는 ëª¨ë“ˆë“¤ì´ ìžˆëŠ” 경로를 지정함." + +#: utils/misc/guc.c:3060 +msgid "" +"If a dynamically loadable module needs to be opened and the specified name " +"does not have a directory component (i.e., the name does not contain a " +"slash), the system will search this path for the specified file." +msgstr "" +"ë™ì ìœ¼ë¡œ 로드 가능한 ëª¨ë“ˆì„ ì—´ì–´ì•¼ í•˜ëŠ”ë° ì§€ì •í•œ ì´ë¦„ì— ë””ë ‰í„°ë¦¬ 구성 ìš”" +"소가 없는 경우(즉, ì´ë¦„ì— ìŠ¬ëž˜ì‹œê°€ ì—†ìŒ) ì‹œìŠ¤í…œì€ ì´ ê²½ë¡œì—서 지정한 파ì¼ì„ " +"검색합니다." + +#: utils/misc/guc.c:3073 +msgid "Sets the location of the Kerberos server key file." +msgstr "Kerberos 서버 키 파ì¼ì˜ 위치를 지정함." + +#: utils/misc/guc.c:3084 +msgid "Sets the Bonjour service name." +msgstr "Bonjour 서비스 ì´ë¦„ì„ ì§€ì •" + +#: utils/misc/guc.c:3096 +msgid "Shows the collation order locale." +msgstr "ë°ì´í„° ì •ë ¬ 순서 로케ì¼ì„ 표시합니다." + +#: utils/misc/guc.c:3107 +msgid "Shows the character classification and case conversion locale." +msgstr "ë¬¸ìž ë¶„ë¥˜ ë° ëŒ€/ì†Œë¬¸ìž ë³€í™˜ 로케ì¼ì„ 표시합니다." + +#: utils/misc/guc.c:3118 +msgid "Sets the language in which messages are displayed." +msgstr "보여질 메시지로 사용할 언어 지정." + +#: utils/misc/guc.c:3128 +msgid "Sets the locale for formatting monetary amounts." +msgstr "통화금액 표현 ì–‘ì‹ìœ¼ë¡œ 사용할 ë¡œì¼€ì¼ ì§€ì •." + +#: utils/misc/guc.c:3138 +msgid "Sets the locale for formatting numbers." +msgstr "ìˆ«ìž í‘œí˜„ ì–‘ì‹ìœ¼ë¡œ 사용할 ë¡œì¼€ì¼ ì§€ì •." + +#: utils/misc/guc.c:3148 +msgid "Sets the locale for formatting date and time values." +msgstr "날짜와 시간 ê°’ì„ í‘œí˜„í•  ì–‘ì‹ìœ¼ë¡œ 사용할 ë¡œì¼€ì¼ ì§€ì •." + +#: utils/misc/guc.c:3158 +msgid "Lists shared libraries to preload into each backend." +msgstr "ê°ê°ì˜ ë°±ì—”ë“œì— ë¯¸ë¦¬ 불러올 공유 ë¼ì´ë¸ŒëŸ¬ë¦¬ë“¤ì„ 지정합니다" + +#: utils/misc/guc.c:3169 +msgid "Lists shared libraries to preload into server." +msgstr "ì„œë²„ì— ë¯¸ë¦¬ 불러올 공유 ë¼ì´ë¸ŒëŸ¬ë¦¬ë“¤ì„ 지정합니다" + +#: utils/misc/guc.c:3180 +msgid "Lists unprivileged shared libraries to preload into each backend." +msgstr "" +"ê°ê°ì˜ ë°±ì—”ë“œì— ë¯¸ë¦¬ 불러올 접근제한 없는 공유 ë¼ì´ë¸ŒëŸ¬ë¦¬ë“¤ì„ 지정합니다" + +#: utils/misc/guc.c:3191 +msgid "Sets the schema search order for names that are not schema-qualified." +msgstr "스키마로 한정ë˜ì§€ ì•Šì€ ì´ë¦„ì˜ ìŠ¤í‚¤ë§ˆ 검색 순서를 설정합니다." + +#: utils/misc/guc.c:3203 +msgid "Sets the server (database) character set encoding." +msgstr "서버 ë¬¸ìž ì½”ë“œ 세트 ì¸ì½”딩 지정." + +#: utils/misc/guc.c:3215 +msgid "Shows the server version." +msgstr "서버 버전 ë³´ìž„." + +#: utils/misc/guc.c:3227 +msgid "Sets the current role." +msgstr "현재 ë¡¤ì„ ì§€ì •" + +#: utils/misc/guc.c:3239 +msgid "Sets the session user name." +msgstr "세션 ì‚¬ìš©ìž ì´ë¦„ 지정." + +#: utils/misc/guc.c:3250 +msgid "Sets the destination for server log output." +msgstr "서버 로그 ì¶œë ¥ì„ ìœ„í•œ 대ìƒì„ 지정합니다." + +#: utils/misc/guc.c:3251 +msgid "" +"Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and " +"\"eventlog\", depending on the platform." +msgstr "" +"유효한 ê°’ì€ í”Œëž«í¼ì— ë”°ë¼ \"stderr\", \"syslog\", \"csvlog\" ë° \"eventlog" +"\"ì˜ ì¡°í•©ìž…ë‹ˆë‹¤." + +#: utils/misc/guc.c:3262 +msgid "Sets the destination directory for log files." +msgstr "로그 파ì¼ì˜ ëŒ€ìƒ ë””ë ‰í„°ë¦¬ë¥¼ 설정합니다." + +#: utils/misc/guc.c:3263 +msgid "Can be specified as relative to the data directory or as absolute path." +msgstr "ë°ì´í„° ë””ë ‰í„°ë¦¬ì˜ ìƒëŒ€ 경로 ë˜ëŠ” 절대 경로로 지정할 수 있습니다." + +#: utils/misc/guc.c:3273 +msgid "Sets the file name pattern for log files." +msgstr "로그 파ì¼ì˜ íŒŒì¼ ì´ë¦„ íŒ¨í„´ì„ ì„¤ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:3284 +msgid "Sets the program name used to identify PostgreSQL messages in syslog." +msgstr "syslogì—서 구분할 PostgreSQL ë©”ì‹œì§€ì— ì‚¬ìš©ë  í”„ë¡œê·¸ëž¨ ì´ë¦„ì„ ì§€ì •." + +#: utils/misc/guc.c:3295 +msgid "" +"Sets the application name used to identify PostgreSQL messages in the event " +"log." +msgstr "" +"ì´ë²¤íЏ 로그ì—서 PostgreSQL 메시지 ì‹ë³„ìžë¡œ 사용할 ì‘용프로그램 ì´ë¦„ 지정" + +#: utils/misc/guc.c:3306 +msgid "Sets the time zone for displaying and interpreting time stamps." +msgstr "시간대(time zone)를 지정함." + +#: utils/misc/guc.c:3316 +msgid "Selects a file of time zone abbreviations." +msgstr "표준 시간대 약어 파ì¼ì„ ì„ íƒí•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:3326 +msgid "Sets the current transaction's isolation level." +msgstr "현재 트랜잭션 ë…립성 수준(isolation level)ì„ ì§€ì •í•¨." + +#: utils/misc/guc.c:3337 +msgid "Sets the owning group of the Unix-domain socket." +msgstr "유닉스 ë„ë©”ì¸ ì†Œì¼“ì˜ ì†Œìœ ì£¼ë¥¼ 지정" + +#: utils/misc/guc.c:3338 +msgid "" +"The owning user of the socket is always the user that starts the server." +msgstr "소켓 소유ìžëŠ” í•­ìƒ ì„œë²„ë¥¼ 시작하는 사용ìžìž…니다." + +#: utils/misc/guc.c:3348 +msgid "Sets the directories where Unix-domain sockets will be created." +msgstr "유닉스 ë„ë©”ì¸ ì†Œì¼“ì„ ë§Œë“¤ 디렉터리를 지정합니다." + +#: utils/misc/guc.c:3363 +msgid "Sets the host name or IP address(es) to listen to." +msgstr "서비스할 호스트ì´ë¦„ì´ë‚˜, IP를 지정함." + +#: utils/misc/guc.c:3378 +msgid "Sets the server's data directory." +msgstr "ì„œë²„ì˜ ë°ì´í„° 디렉터리 위치를 지정합니다." + +#: utils/misc/guc.c:3389 +msgid "Sets the server's main configuration file." +msgstr "ì„œë²„ì˜ ê¸°ë³¸ 환경설정 íŒŒì¼ ê²½ë¡œë¥¼ 지정합니다." + +#: utils/misc/guc.c:3400 +msgid "Sets the server's \"hba\" configuration file." +msgstr "ì„œë²„ì˜ \"hba\" 구성 파ì¼ì„ 설정합니다." + +#: utils/misc/guc.c:3411 +msgid "Sets the server's \"ident\" configuration file." +msgstr "ì„œë²„ì˜ \"ident\" 구성 파ì¼ì„ 설정합니다." + +#: utils/misc/guc.c:3422 +msgid "Writes the postmaster PID to the specified file." +msgstr "postmaster PIDê°€ 기ë¡ëœ 파ì¼ì˜ 경로를 지정합니다." + +#: utils/misc/guc.c:3433 +msgid "Location of the SSL server certificate file." +msgstr "서버 ì¸ì¦ì„œ íŒŒì¼ ìœ„ì¹˜ë¥¼ 지정함" + +#: utils/misc/guc.c:3443 +msgid "Location of the SSL server private key file." +msgstr "SSL 서버 ê°œì¸ í‚¤ 파ì¼ì˜ 위치를 지정함." + +#: utils/misc/guc.c:3453 +msgid "Location of the SSL certificate authority file." +msgstr "" + +#: utils/misc/guc.c:3463 +msgid "Location of the SSL certificate revocation list file." +msgstr "SSL ì¸ì¦ì„œ 파기 ëª©ë¡ íŒŒì¼ì˜ 위치" + +#: utils/misc/guc.c:3473 +msgid "Writes temporary statistics files to the specified directory." +msgstr "지정한 ë””ë ‰í„°ë¦¬ì— ìž„ì‹œ 통계 파ì¼ì„ ì”니다." + +#: utils/misc/guc.c:3484 +msgid "" +"Number of synchronous standbys and list of names of potential synchronous " +"ones." +msgstr "" + +#: utils/misc/guc.c:3495 +msgid "Sets default text search configuration." +msgstr "기본 í…스트 검색 êµ¬ì„±ì„ ì„¤ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:3505 +msgid "Sets the list of allowed SSL ciphers." +msgstr "허용ë˜ëŠ” SSL 암호 목ë¡ì„ 설정합니다." + +#: utils/misc/guc.c:3520 +msgid "Sets the curve to use for ECDH." +msgstr "ECDHì— ì‚¬ìš©í•  curve 설정" + +#: utils/misc/guc.c:3535 +msgid "Sets the application name to be reported in statistics and logs." +msgstr "" + +#: utils/misc/guc.c:3546 +msgid "Sets the name of the cluster, which is included in the process title." +msgstr "" + +#: utils/misc/guc.c:3566 +msgid "Sets whether \"\\'\" is allowed in string literals." +msgstr "문ìžì—´ì—서 \"\\'\" ë¬¸ìž ì‚¬ìš©ì„ í—ˆìš©í•  것ì¸ì§€ë¥¼ 정하세요" + +#: utils/misc/guc.c:3576 +msgid "Sets the output format for bytea." +msgstr "bytea ê°’ì˜ í‘œì‹œ 형ì‹ì„ 설정합니다." + +#: utils/misc/guc.c:3586 +msgid "Sets the message levels that are sent to the client." +msgstr "í´ë¼ì´ì–¸íЏ ì¸¡ì— ë³´ì—¬ì§ˆ 메시지 ìˆ˜ì¤€ì„ ì§€ì •í•¨." + +#: utils/misc/guc.c:3587 utils/misc/guc.c:3640 utils/misc/guc.c:3651 +#: utils/misc/guc.c:3717 +msgid "" +"Each level includes all the levels that follow it. The later the level, the " +"fewer messages are sent." +msgstr "" +"ê° ìˆ˜ì¤€ì—는 ì´ ìˆ˜ì¤€ ë’¤ì— ìžˆëŠ” 모든 ìˆ˜ì¤€ì´ í¬í•¨ë©ë‹ˆë‹¤. ìˆ˜ì¤€ì´ ë’¤ì— ìžˆì„수" +"ë¡ ì „ì†¡ë˜ëŠ” 메시지 수가 ì ìŠµë‹ˆë‹¤." + +#: utils/misc/guc.c:3597 +msgid "Enables the planner to use constraints to optimize queries." +msgstr "실행계íšê¸°ê°€ 쿼리 최ì í™” 작업ì—서 제약 ì¡°ê±´ì„ ì‚¬ìš©í•˜ë„ë¡ í•¨" + +#: utils/misc/guc.c:3598 +msgid "" +"Table scans will be skipped if their constraints guarantee that no rows " +"match the query." +msgstr "" +"제약 ì¡°ê±´ì— ì˜í•´ 쿼리와 ì¼ì¹˜í•˜ëŠ” í–‰ì´ ì—†ëŠ” 경우 í…Œì´ë¸” ìŠ¤ìº”ì„ ê±´ë„ˆëœë‹ˆ" +"다." + +#: utils/misc/guc.c:3608 +msgid "Sets the transaction isolation level of each new transaction." +msgstr "ê° ìƒˆ íŠ¸ëžœìž­ì…˜ì˜ íŠ¸ëžœìž­ì…˜ 격리 ìˆ˜ì¤€ì„ ì„¤ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:3618 +msgid "Sets the display format for interval values." +msgstr "간격 ê°’ì˜ í‘œì‹œ 형ì‹ì„ 설정합니다." + +#: utils/misc/guc.c:3629 +msgid "Sets the verbosity of logged messages." +msgstr "기ë¡ë˜ëŠ” ë©”ì‹œì§€ì˜ ìƒì„¸ ì •ë„를 지정합니다." + +#: utils/misc/guc.c:3639 +msgid "Sets the message levels that are logged." +msgstr "서버 ë¡œê·¸ì— ê¸°ë¡ë  메시지 ìˆ˜ì¤€ì„ ì§€ì •í•¨." + +#: utils/misc/guc.c:3650 +msgid "" +"Causes all statements generating error at or above this level to be logged." +msgstr "" +"오류가 있는 모든 쿼리문ì´ë‚˜ 지정한 로그 레벨 ì´ìƒì˜ ì¿¼ë¦¬ë¬¸ì„ ë¡œê·¸ë¡œ 남김" + +#: utils/misc/guc.c:3661 +msgid "Sets the type of statements logged." +msgstr "ì„œë²„ë¡œê·¸ì— ê¸°ë¡ë  구문 종류를 지정합니다." + +#: utils/misc/guc.c:3671 +msgid "Sets the syslog \"facility\" to be used when syslog enabled." +msgstr "syslog ê¸°ëŠ¥ì„ ì‚¬ìš©í•  때, 사용할 syslog \"facility\" ê°’ì„ ì§€ì •." + +#: utils/misc/guc.c:3686 +msgid "Sets the session's behavior for triggers and rewrite rules." +msgstr "트리거 ë° ë‹¤ì‹œ 쓰기 ê·œì¹™ì— ëŒ€í•œ ì„¸ì…˜ì˜ ë™ìž‘ì„ ì„¤ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:3696 +msgid "Sets the current transaction's synchronization level." +msgstr "현재 트랜잭션 격리 수준(isolation level)ì„ ì§€ì •í•¨." + +#: utils/misc/guc.c:3706 +msgid "Allows archiving of WAL files using archive_command." +msgstr "archive_command를 사용하여 WAL 파ì¼ì„ 따로 보관하ë„ë¡ ì„¤ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:3716 +msgid "Enables logging of recovery-related debugging information." +msgstr "복구 작업과 ê´€ë ¨ëœ ë””ë²„ê¹… 정보를 기ë¡í•˜ë„ë¡ í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:3732 +msgid "Collects function-level statistics on database activity." +msgstr "ë°ì´í„°ë² ì´ìФ 활ë™ì— 대한 함수 수준 통계를 수집합니다." + +#: utils/misc/guc.c:3742 +msgid "Set the level of information written to the WAL." +msgstr "WALì— ì €ìž¥í•  ë‚´ìš© ìˆ˜ì¤€ì„ ì§€ì •í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:3752 +msgid "Selects the dynamic shared memory implementation used." +msgstr "사용할 ë™ì  공유 메모리 관리방ì‹ì„ ì„ íƒí•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:3762 +msgid "Selects the method used for forcing WAL updates to disk." +msgstr "디스í¬ì— 대한 ê°•ì œ WAL ì—…ë°ì´íŠ¸ì— ì‚¬ìš©ë˜ëŠ” ë°©ë²•ì„ ì„ íƒí•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:3772 +msgid "Sets how binary values are to be encoded in XML." +msgstr "XMLì—서 ë°”ì´ë„ˆë¦¬ ê°’ì´ ì¸ì½”딩ë˜ëŠ” ë°©ì‹ì„ 설정합니다." + +#: utils/misc/guc.c:3782 +msgid "" +"Sets whether XML data in implicit parsing and serialization operations is to " +"be considered as documents or content fragments." +msgstr "" +"ì•”ì‹œì  êµ¬ë¬¸ ë¶„ì„ ë° ì§ë ¬í™” ìž‘ì—…ì˜ XML ë°ì´í„°ë¥¼ 문서 ë˜ëŠ” ë‚´ìš© ì¡°ê°ìœ¼ë¡œ 간주할" +"ì§€ 여부를 설정합니다." + +#: utils/misc/guc.c:3793 +msgid "Use of huge pages on Linux." +msgstr "리눅스 huge 페ì´ì§€ 사용 여부" + +#: utils/misc/guc.c:3803 +msgid "Forces use of parallel query facilities." +msgstr "병렬 쿼리 ê¸°ëŠ¥ì„ í™œì„±í™”" + +#: utils/misc/guc.c:3804 +msgid "" +"If possible, run query using a parallel worker and with parallel " +"restrictions." +msgstr "" + +#: utils/misc/guc.c:4604 +#, c-format +msgid "%s: could not access directory \"%s\": %s\n" +msgstr "%s: \"%s\" ë””ë ‰í„°ë¦¬ì— ì•¡ì„¸ìŠ¤í•  수 ì—†ìŒ: %s\n" + +#: utils/misc/guc.c:4609 +#, c-format +msgid "" +"Run initdb or pg_basebackup to initialize a PostgreSQL data directory.\n" +msgstr "" +"initdb 명령ì´ë‚˜, pg_basebackup 명령으로 PostgreSQL ë°ì´í„° 디렉토리를 초기화 " +"하세요.\n" + +#: utils/misc/guc.c:4629 +#, c-format +msgid "" +"%s does not know where to find the server configuration file.\n" +"You must specify the --config-file or -D invocation option or set the PGDATA " +"environment variable.\n" +msgstr "" +"%s í”„ë¡œê·¸ëž¨ì€ ë°ì´í„°ë² ì´ìФ 시스템 환경 설정 파ì¼ì„ 찾지 못했습니다.\n" +"ì§ì ‘ --config-file ë˜ëŠ” -D ì˜µì…˜ì„ ì´ìš©í•´ì„œ ë°ì´í„° 디렉터리를 지정하든지,\n" +"PGDATA ì´ë¦„ì˜ í™˜ê²½ 변수를 만들고 ê·¸ 값으로 해당 디렉터리를 지정한 ë’¤,\n" +"ì´ í”„ë¡œê·¸ëž¨ì„ ë‹¤ì‹œ 실행해 보십시오.\n" + +#: utils/misc/guc.c:4648 +#, c-format +msgid "%s: could not access the server configuration file \"%s\": %s\n" +msgstr "%s: \"%s\" 환경 설정 파ì¼ì„ 접근할 수 없습니다: %s\n" + +#: utils/misc/guc.c:4674 +#, c-format +msgid "" +"%s does not know where to find the database system data.\n" +"This can be specified as \"data_directory\" in \"%s\", or by the -D " +"invocation option, or by the PGDATA environment variable.\n" +msgstr "" +"%s í”„ë¡œê·¸ëž¨ì€ ë°ì´í„°ë² ì´ìФ 시스템 ë°ì´í„° 디렉터리를 찾지 못했습니다.\n" +"\"%s\" 파ì¼ì—서 \"data_directory\" ê°’ì„ ì§€ì •í•˜ë“ ì§€,\n" +"ì§ì ‘ -D ì˜µì…˜ì„ ì´ìš©í•´ì„œ ë°ì´í„° 디렉터리를 지정하든지,\n" +"PGDATA ì´ë¦„ì˜ í™˜ê²½ 변수를 만들고 ê·¸ 값으로 해당 디렉터리를 지정한 ë’¤,\n" +"ì´ í”„ë¡œê·¸ëž¨ì„ ë‹¤ì‹œ 실행해 보십시오.\n" + +#: utils/misc/guc.c:4722 +#, c-format +msgid "" +"%s does not know where to find the \"hba\" configuration file.\n" +"This can be specified as \"hba_file\" in \"%s\", or by the -D invocation " +"option, or by the PGDATA environment variable.\n" +msgstr "" +"%s í”„ë¡œê·¸ëž¨ì€ \"hba\" 환경설정파ì¼ì„ 찾지 못했습니다.\n" +"\"%s\" 파ì¼ì—서 \"hba_file\" ê°’ì„ ì§€ì •í•˜ë“ ì§€,\n" +"ì§ì ‘ -D ì˜µì…˜ì„ ì´ìš©í•´ì„œ ë°ì´í„° 디렉터리를 지정하든지,\n" +"PGDATA ì´ë¦„ì˜ í™˜ê²½ 변수를 만들고 ê·¸ 값으로 해당 디렉터리를 지정한 ë’¤,\n" +"ì´ í”„ë¡œê·¸ëž¨ì„ ë‹¤ì‹œ 실행해 보십시오.\n" + +#: utils/misc/guc.c:4745 +#, c-format +msgid "" +"%s does not know where to find the \"ident\" configuration file.\n" +"This can be specified as \"ident_file\" in \"%s\", or by the -D invocation " +"option, or by the PGDATA environment variable.\n" +msgstr "" +"%s í”„ë¡œê·¸ëž¨ì€ \"ident\" 환경설정파ì¼ì„ 찾지 못했습니다.\n" +"\"%s\" 파ì¼ì—서 \"ident_file\" ê°’ì„ ì§€ì •í•˜ë“ ì§€,\n" +"ì§ì ‘ -D ì˜µì…˜ì„ ì´ìš©í•´ì„œ ë°ì´í„° 디렉터리를 지정하든지,\n" +"PGDATA ì´ë¦„ì˜ í™˜ê²½ 변수를 만들고 ê·¸ 값으로 해당 디렉터리를 지정한 ë’¤,\n" +"ì´ í”„ë¡œê·¸ëž¨ì„ ë‹¤ì‹œ 실행해 보십시오.\n" + +#: utils/misc/guc.c:5419 utils/misc/guc.c:5466 +msgid "Value exceeds integer range." +msgstr "ê°’ì´ ì •ìˆ˜ 범위를 초과합니다." + +#: utils/misc/guc.c:5689 +#, c-format +msgid "parameter \"%s\" requires a numeric value" +msgstr "\"%s\" 매개 ë³€ìˆ˜ì˜ ê°’ì€ ìˆ«ìží˜•ì´ì–´ì•¼í•©ë‹ˆë‹¤." + +#: utils/misc/guc.c:5698 +#, c-format +msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)" +msgstr "" +"%g ê°’ì€ \"%s\" 매개 ë³€ìˆ˜ì˜ ê°’ìœ¼ë¡œ 타당한 범위(%g .. %g)를 벗어났습니다." + +#: utils/misc/guc.c:5851 utils/misc/guc.c:7194 +#, c-format +msgid "cannot set parameters during a parallel operation" +msgstr "병렬 작업 중ì—는 매개 변수를 설정할 수 ì—†ìŒ" + +#: utils/misc/guc.c:5858 utils/misc/guc.c:6609 utils/misc/guc.c:6661 +#: utils/misc/guc.c:7022 utils/misc/guc.c:7782 utils/misc/guc.c:7950 +#: utils/misc/guc.c:9625 +#, c-format +msgid "unrecognized configuration parameter \"%s\"" +msgstr "알 수 없는 환경 매개 변수 ì´ë¦„: \"%s\"" + +#: utils/misc/guc.c:5873 utils/misc/guc.c:7034 +#, c-format +msgid "parameter \"%s\" cannot be changed" +msgstr "\"%s\" 매개 변수는 ë³€ê²½ë  ìˆ˜ ì—†ìŒ" + +#: utils/misc/guc.c:5896 utils/misc/guc.c:6089 utils/misc/guc.c:6179 +#: utils/misc/guc.c:6269 utils/misc/guc.c:6377 utils/misc/guc.c:6472 +#: guc-file.l:351 +#, c-format +msgid "parameter \"%s\" cannot be changed without restarting the server" +msgstr "\"%s\" 매개 변수는 서버 재실행 ì—†ì´ ì§€ê¸ˆ 변경 ë  ìˆ˜ ì—†ìŒ" + +#: utils/misc/guc.c:5906 +#, c-format +msgid "parameter \"%s\" cannot be changed now" +msgstr "\"%s\" 매개 변수는 지금 변경 ë  ìˆ˜ ì—†ìŒ" + +#: utils/misc/guc.c:5924 utils/misc/guc.c:5970 utils/misc/guc.c:9641 +#, c-format +msgid "permission denied to set parameter \"%s\"" +msgstr "\"%s\" 매개 변수를 지정할 ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤." + +#: utils/misc/guc.c:5960 +#, c-format +msgid "parameter \"%s\" cannot be set after connection start" +msgstr "\"%s\" 매개 ë³€ìˆ˜ê°’ì€ ì—°ê²° 시작한 ë’¤ì—는 변경할 수 없습니다" + +#: utils/misc/guc.c:6008 +#, c-format +msgid "cannot set parameter \"%s\" within security-definer function" +msgstr "보안 ì •ì˜ìž 함수 ë‚´ì—서 \"%s\" 매개 변수를 설정할 수 ì—†ìŒ" + +#: utils/misc/guc.c:6617 utils/misc/guc.c:6665 utils/misc/guc.c:7956 +#, c-format +msgid "must be superuser to examine \"%s\"" +msgstr "\"%s\" 검사를 위해서는 superuser여야합니다" + +#: utils/misc/guc.c:6731 +#, c-format +msgid "SET %s takes only one argument" +msgstr "SET %s ëª…ë ¹ì€ í•˜ë‚˜ì˜ ê°’ë§Œ 지정해야합니다" + +#: utils/misc/guc.c:6982 +#, c-format +msgid "must be superuser to execute ALTER SYSTEM command" +msgstr "슈í¼ìœ ì €ë§Œ ALTER SYSTEM ëª…ë ¹ì„ ì‹¤í–‰í•  수 있ìŒ" + +#: utils/misc/guc.c:7067 +#, c-format +msgid "parameter value for ALTER SYSTEM must not contain a newline" +msgstr "" +"ALTER SYSTEM 명령으로 지정하는 매개 변수 ê°’ì—는 줄바꿈 문ìžê°€ 없어야 합니다" + +#: utils/misc/guc.c:7112 +#, c-format +msgid "could not parse contents of file \"%s\"" +msgstr "\"%s\" 파ì¼ì˜ ë‚´ìš©ì„ ë¶„ì„í•  수 ì—†ìŒ" + +#: utils/misc/guc.c:7270 +#, c-format +msgid "SET LOCAL TRANSACTION SNAPSHOT is not implemented" +msgstr "SET LOCAL TRANSACTION SNAPSHOT ëª…ë ¹ì€ ì•„ì§ êµ¬í˜„ ë˜ì§€ 않았습니다" + +#: utils/misc/guc.c:7355 +#, c-format +msgid "SET requires parameter name" +msgstr "SET ëª…ë ¹ì€ ë§¤ê°œ 변수 ì´ë¦„ì´ í•„ìš”í•©ë‹ˆë‹¤" + +#: utils/misc/guc.c:7479 +#, c-format +msgid "attempt to redefine parameter \"%s\"" +msgstr "\"%s\" 매개 변수를 다시 ì •ì˜í•˜ë ¤ê³  함" + +#: utils/misc/guc.c:9258 +#, c-format +msgid "parameter \"%s\" could not be set" +msgstr "\"%s\" 매개 변수는 설정할 수 ì—†ìŒ" + +#: utils/misc/guc.c:9345 +#, c-format +msgid "could not parse setting for parameter \"%s\"" +msgstr "지정한 \"%s\" 매개 ë³€ìˆ˜ê°’ì˜ êµ¬ë¬¸ë¶„ì„ì„ ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." + +#: utils/misc/guc.c:9703 utils/misc/guc.c:9737 +#, c-format +msgid "invalid value for parameter \"%s\": %d" +msgstr "ìž˜ëª»ëœ \"%s\" 매개 ë³€ìˆ˜ì˜ ê°’: %d" + +#: utils/misc/guc.c:9771 +#, c-format +msgid "invalid value for parameter \"%s\": %g" +msgstr "ìž˜ëª»ëœ \"%s\" 매개 ë³€ìˆ˜ì˜ ê°’: %g" + +#: utils/misc/guc.c:9961 +#, c-format +msgid "" +"\"temp_buffers\" cannot be changed after any temporary tables have been " +"accessed in the session." +msgstr "" +"해당 세션ì—서 ì–´ë–¤ 임시 í…Œì´ë¸”ë„ ì‚¬ìš©í•˜ê³  있지 않아야 \"temp_buffers\" 설정" +"ì„ ë³€ê²½í•  수 있습니다." + +#: utils/misc/guc.c:9973 +#, c-format +msgid "Bonjour is not supported by this build" +msgstr "Bonjour ê¸°ëŠ¥ì„ ëº€ 채로 서버가 만들어졌습니다." + +#: utils/misc/guc.c:9986 +#, c-format +msgid "SSL is not supported by this build" +msgstr "SSL ì ‘ì† ê¸°ëŠ¥ì„ ëº€ 채로 서버가 만들어졌습니다." + +#: utils/misc/guc.c:9998 +#, c-format +msgid "Cannot enable parameter when \"log_statement_stats\" is true." +msgstr "\"log_statement_stats\" ê°’ì´ true ì¼ ë•ŒëŠ” ì´ ê°’ì„ í™œì„±í™”í•  수 없습니다" + +#: utils/misc/guc.c:10010 +#, c-format +msgid "" +"Cannot enable \"log_statement_stats\" when \"log_parser_stats\", " +"\"log_planner_stats\", or \"log_executor_stats\" is true." +msgstr "" +"\"log_parser_stats\", \"log_planner_stats\", \"log_executor_stats\" 설정값들 " +"중 하나가 true ì¼ ë•ŒëŠ” \"log_statement_stats\" ì„¤ì •ì„ í™œì„±í™”í•  수 없습니다" + +#: utils/misc/help_config.c:131 +#, c-format +msgid "internal error: unrecognized run-time parameter type\n" +msgstr "ë‚´ë¶€ 오류: 알 수 없는 실시간 서버 설정 변수\n" + +#: utils/misc/pg_config.c:61 +#, c-format +msgid "" +"query-specified return tuple and function return type are not compatible" +msgstr "" + +#: utils/misc/rls.c:127 +#, c-format +msgid "query would be affected by row-level security policy for table \"%s\"" +msgstr "\"%s\" í…Œì´ë¸”ì˜ ë¡œìš° 단위 보안 ì •ì±…ì— ì˜í•´ 쿼리가 ì˜í–¥ì„ ë°›ìŒ" + +#: utils/misc/rls.c:129 +#, c-format +msgid "" +"To disable the policy for the table's owner, use ALTER TABLE NO FORCE ROW " +"LEVEL SECURITY." +msgstr "" +"í…Œì´ë¸” 소유주를 위해 ì •ì±…ì„ ë¹„í™œì„±í•˜ë ¤ë©´, ALTER TABLE NO FORCE ROW LEVEL " +"SECURITY ëª…ë ¹ì„ ì‚¬ìš©í•˜ì„¸ìš”" + +#: utils/misc/timeout.c:388 +#, c-format +msgid "cannot add more timeout reasons" +msgstr "시간 초과로 ë”ì´ìƒ 추가할 수 ì—†ìŒ" + +#: utils/misc/tzparser.c:61 +#, c-format +msgid "" +"time zone abbreviation \"%s\" is too long (maximum %d characters) in time " +"zone file \"%s\", line %d" +msgstr "" +"\"%s\" 타임 ì¡´ ì´ë¦„ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤(최대 %dìž) (\"%s\" 타임 ì¡´ 파ì¼ì˜ %d번째 줄" +"ì— ìžˆìŒ)." + +#: utils/misc/tzparser.c:73 +#, c-format +msgid "time zone offset %d is out of range in time zone file \"%s\", line %d" +msgstr "" +"%d 타임 ì¡´ 오프셋 ê°’ì´ ë²”ìœ„ë¥¼ 벗어났습니다(\"%s\" 타임 ì¡´ 파ì¼ì˜ %d번째 ì¤„ì— " +"있ìŒ)." + +#: utils/misc/tzparser.c:112 +#, c-format +msgid "missing time zone abbreviation in time zone file \"%s\", line %d" +msgstr "\"%s\" time zone 파ì¼ì˜ %d번째 ì¤„ì— time zone ìƒëžµí˜•ì´ ë¹ ì¡ŒìŒ" + +#: utils/misc/tzparser.c:121 +#, c-format +msgid "missing time zone offset in time zone file \"%s\", line %d" +msgstr "\"%s\" time zone 파ì¼ì˜ %d번째 ì¤„ì— time zone ì˜µì…‹ì´ ë¹ ì¡ŒìŒ" + +#: utils/misc/tzparser.c:133 +#, c-format +msgid "invalid number for time zone offset in time zone file \"%s\", line %d" +msgstr "" +"\"%s\" 표준 시간대 파ì¼ì˜ %d번째 줄ì—서 표준 시간대 오프셋 숫ìžê°€ 잘못ë¨" + +#: utils/misc/tzparser.c:169 +#, c-format +msgid "invalid syntax in time zone file \"%s\", line %d" +msgstr "\"%s\" time zone 파ì¼ì˜ %d번째 ì¤„ì— êµ¬ë¬¸ 오류" + +#: utils/misc/tzparser.c:237 +#, c-format +msgid "time zone abbreviation \"%s\" is multiply defined" +msgstr "표준 시간대 약어 \"%s\"ì€(는) 배수로 ì •ì˜ë¨" + +#: utils/misc/tzparser.c:239 +#, c-format +msgid "" +"Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s" +"\", line %d." +msgstr "" +"\"%s\" 타임 ì¡´ 파ì¼ì˜ %d번째 ì¤„ì— ìžˆëŠ” í•­ëª©ì´ \"%s\" 파ì¼ì˜ %d번째 ì¤„ì— ìžˆëŠ” " +"항목과 ì¶©ëŒí•©ë‹ˆë‹¤." + +#: utils/misc/tzparser.c:301 +#, c-format +msgid "invalid time zone file name \"%s\"" +msgstr "ìž˜ëª»ëœ time zone íŒŒì¼ ì´ë¦„: \"%s\"" + +#: utils/misc/tzparser.c:314 +#, c-format +msgid "time zone file recursion limit exceeded in file \"%s\"" +msgstr "\"%s\" 파ì¼ì—서 time zone íŒŒì¼ ìž¬ê·€í˜¸ì¶œ 최대치를 초과했ìŒ" + +#: utils/misc/tzparser.c:353 utils/misc/tzparser.c:366 +#, c-format +msgid "could not read time zone file \"%s\": %m" +msgstr "\"%s\" time zone 파ì¼ì„ ì½ì„ 수 ì—†ìŒ: %m" + +#: utils/misc/tzparser.c:376 +#, c-format +msgid "line is too long in time zone file \"%s\", line %d" +msgstr "\"%s\" 표준 시간대 파ì¼ì˜ %d번째 ì¤„ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤." + +#: utils/misc/tzparser.c:399 +#, c-format +msgid "@INCLUDE without file name in time zone file \"%s\", line %d" +msgstr "\"%s\" 표준 시간대 파ì¼ì˜ %d번째 ì¤„ì— íŒŒì¼ ì´ë¦„ì´ ì—†ëŠ” @INCLUDEê°€ 있ìŒ" + +#: utils/mmgr/aset.c:510 +#, c-format +msgid "Failed while creating memory context \"%s\"." +msgstr "\"%s\" 메모리 컨í…스트를 만드는 ë™ì•ˆ 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤." + +#: utils/mmgr/mcxt.c:768 utils/mmgr/mcxt.c:803 utils/mmgr/mcxt.c:840 +#: utils/mmgr/mcxt.c:877 utils/mmgr/mcxt.c:911 utils/mmgr/mcxt.c:940 +#: utils/mmgr/mcxt.c:974 utils/mmgr/mcxt.c:1056 utils/mmgr/mcxt.c:1090 +#: utils/mmgr/mcxt.c:1139 +#, c-format +msgid "Failed on request of size %zu." +msgstr "í¬ê¸°ê°€ %zuì¸ ìš”ì²­ì—서 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤." + +#: utils/mmgr/portalmem.c:207 +#, c-format +msgid "cursor \"%s\" already exists" +msgstr "\"%s\" ì´ë¦„ì˜ ì»¤ì„œê°€ ì´ë¯¸ 있ìŒ" + +#: utils/mmgr/portalmem.c:211 +#, c-format +msgid "closing existing cursor \"%s\"" +msgstr "ì´ë¯¸ 있는 \"%s\" 커서를 닫습니다" + +#: utils/mmgr/portalmem.c:415 +#, c-format +msgid "portal \"%s\" cannot be run" +msgstr "\"%s\" portal 실행할 수 ì—†ìŒ" + +#: utils/mmgr/portalmem.c:495 +#, c-format +msgid "cannot drop active portal \"%s\"" +msgstr "\"%s\" 활성 í¬í„¸ì„ 삭제할 수 ì—†ìŒ" + +#: utils/mmgr/portalmem.c:699 +#, c-format +msgid "cannot PREPARE a transaction that has created a cursor WITH HOLD" +msgstr "WITH HOLD 옵션으로 커서를 만든 íŠ¸ëžœìž­ì…˜ì„ PREPAREí•  수 ì—†ìŒ" + +#: utils/sort/logtape.c:226 +#, c-format +msgid "could not read block %ld of temporary file: %m" +msgstr "임시 파ì¼ì˜ %ld ë¸”ëŸ­ì„ ì½ì„ 수 ì—†ìŒ: %m" + +#: utils/sort/tuplesort.c:3402 +#, c-format +msgid "cannot have more than %d runs for an external sort" +msgstr "외부 ì •ë ¬ì„ ìœ„í•´ %d ê°œ ì´ìƒì˜ ëŸ°ì„ ë§Œë“¤ 수 ì—†ìŒ" + +#: utils/sort/tuplesort.c:4474 +#, c-format +msgid "could not create unique index \"%s\"" +msgstr "\"%s\" 고유 ì¸ë±ìŠ¤ë¥¼ 만들 수 ì—†ìŒ" + +#: utils/sort/tuplesort.c:4476 +#, c-format +msgid "Key %s is duplicated." +msgstr "%s 키가 중복ë¨" + +#: utils/sort/tuplesort.c:4477 +#, c-format +msgid "Duplicate keys exist." +msgstr "ì¤‘ë³µëœ í‚¤ê°€ 있ìŒ" + +#: utils/sort/tuplestore.c:515 utils/sort/tuplestore.c:525 +#: utils/sort/tuplestore.c:852 utils/sort/tuplestore.c:956 +#: utils/sort/tuplestore.c:1020 utils/sort/tuplestore.c:1037 +#: utils/sort/tuplestore.c:1239 utils/sort/tuplestore.c:1304 +#: utils/sort/tuplestore.c:1313 +#, c-format +msgid "could not seek in tuplestore temporary file: %m" +msgstr "tuplestore 파ì¼ì—서 seek ìž‘ì—…ì„ í•  수 ì—†ìŒ: %m" + +#: utils/sort/tuplestore.c:1460 utils/sort/tuplestore.c:1533 +#: utils/sort/tuplestore.c:1539 +#, c-format +msgid "could not read from tuplestore temporary file: %m" +msgstr "tuplestore 임시 파ì¼ì„ ì½ì„ 수 ì—†ìŒ: %m" + +#: utils/sort/tuplestore.c:1501 utils/sort/tuplestore.c:1506 +#: utils/sort/tuplestore.c:1512 +#, c-format +msgid "could not write to tuplestore temporary file: %m" +msgstr "tuplestore 임시 파ì¼ì„ 쓸 수 없습니다: %m" + +#: utils/time/snapmgr.c:618 +#, c-format +msgid "The source transaction is not running anymore." +msgstr "소스 íŠ¸ëžœìž­ì…˜ì´ ë” ì´ìƒ 실행중ì´ì§€ 않ìŒ" + +#: utils/time/snapmgr.c:1190 +#, c-format +msgid "cannot export a snapshot from a subtransaction" +msgstr "서브트랜잭션ì—서 ìŠ¤ëƒ…ìƒ·ì„ ë‚´ë³´ë‚¼ 수 ì—†ìŒ" + +#: utils/time/snapmgr.c:1339 utils/time/snapmgr.c:1344 +#: utils/time/snapmgr.c:1349 utils/time/snapmgr.c:1364 +#: utils/time/snapmgr.c:1369 utils/time/snapmgr.c:1374 +#: utils/time/snapmgr.c:1473 utils/time/snapmgr.c:1489 +#: utils/time/snapmgr.c:1514 +#, c-format +msgid "invalid snapshot data in file \"%s\"" +msgstr "\"%s\" 파ì¼ì— 유효하지 ì•Šì€ ìŠ¤ëƒ…ìƒ· ìžë£Œê°€ 있습니다" + +#: utils/time/snapmgr.c:1411 +#, c-format +msgid "SET TRANSACTION SNAPSHOT must be called before any query" +msgstr "쿼리보다 먼저 SET TRANSACTION SNAPSHOP ëª…ë ¹ì„ í˜¸ì¶œí•´ì•¼ 함" + +#: utils/time/snapmgr.c:1420 +#, c-format +msgid "" +"a snapshot-importing transaction must have isolation level SERIALIZABLE or " +"REPEATABLE READ" +msgstr "" +"스냅샷 가져오기 íŠ¸ëžœìž­ì…˜ì€ ê·¸ 격리 ìˆ˜ì¤€ì´ SERIALIZABLE ë˜ëŠ” REPEATABLE READ " +"여야 함" + +#: utils/time/snapmgr.c:1429 utils/time/snapmgr.c:1438 +#, c-format +msgid "invalid snapshot identifier: \"%s\"" +msgstr "ìž˜ëª»ëœ ìŠ¤ëƒ…ìƒ· ì‹ë³„ìž: \"%s\"" + +#: utils/time/snapmgr.c:1527 +#, c-format +msgid "" +"a serializable transaction cannot import a snapshot from a non-serializable " +"transaction" +msgstr "" +"ì§ë ¬í™” 가능한 íŠ¸ëžœìž­ì…˜ì€ ì§ë ¬í™” 가능하지 ì•Šì€ íŠ¸ëžœìž­ì…˜ì—서 ìŠ¤ëƒ…ìƒ·ì„ ê°€ì ¸ì˜¬ " +"수 ì—†ìŒ" + +#: utils/time/snapmgr.c:1531 +#, c-format +msgid "" +"a non-read-only serializable transaction cannot import a snapshot from a " +"read-only transaction" +msgstr "" +"ì½ê¸°-쓰기 ì§ë ¬í™”ëœ íŠ¸ëžœìž­ì…˜ì´ ì½ê¸° ì „ìš© íŠ¸ëžœìž­ì…˜ì˜ ìŠ¤ëƒ…ìƒ·ì„ ê°€ì ¸ì˜¬ 수 ì—†ìŒ" + +#: utils/time/snapmgr.c:1546 +#, c-format +msgid "cannot import a snapshot from a different database" +msgstr "서로 다른 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 대ìƒìœ¼ë¡œëŠ” ìŠ¤ëƒ…ìƒ·ì„ ê°€ì ¸ì˜¬ 수 ì—†ìŒ" + +#: gram.y:1004 +#, c-format +msgid "unrecognized role option \"%s\"" +msgstr "ì¸ì‹í•  수 없는 롤 옵션 \"%s\"" + +#: gram.y:1278 gram.y:1293 +#, c-format +msgid "CREATE SCHEMA IF NOT EXISTS cannot include schema elements" +msgstr "" +"CREATE SCHEMA IF NOT EXISTS 구문ì—서는 스키마 ìš”ì†Œë“¤ì„ í¬í•¨í•  수 없습니다." + +#: gram.y:1438 +#, c-format +msgid "current database cannot be changed" +msgstr "현재 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 바꿀 수 ì—†ìŒ" + +#: gram.y:1562 +#, c-format +msgid "time zone interval must be HOUR or HOUR TO MINUTE" +msgstr "" +"지역시간대 간격(time zone interval) ê°’ì€ ì‹œ(HOUR) ë˜ëŠ” 시분(HOUR TO MINUTE) " +"ê°’ì´ì–´ì•¼í•©ë‹ˆë‹¤" + +#: gram.y:2600 gram.y:2629 +#, c-format +msgid "STDIN/STDOUT not allowed with PROGRAM" +msgstr "PROGRAM 옵션과 STDIN/STDOUT ì˜µì…˜ì€ í•¨ê»˜ 쓸 수 없습니다" + +#: gram.y:2895 gram.y:2902 gram.y:10295 gram.y:10303 +#, c-format +msgid "GLOBAL is deprecated in temporary table creation" +msgstr "GLOBAL 예약어는 임시 í…Œì´ë¸” 만들기ì—서 ë” ì´ìƒ 사용하지 않습니다" + +#: gram.y:4809 +msgid "duplicate trigger events specified" +msgstr "중복 트리거 ì´ë²¤íŠ¸ê°€ 지정ë¨" + +#: gram.y:4909 +#, c-format +msgid "conflicting constraint properties" +msgstr "제약조건 ì†ì„±ì´ ì¶©ëŒí•¨" + +#: gram.y:5041 +#, c-format +msgid "CREATE ASSERTION is not yet implemented" +msgstr "CREATE ASSERTION ëª…ë ¹ì€ ì•„ì§ êµ¬í˜„ ë˜ì§€ 않았습니다" + +#: gram.y:5057 +#, c-format +msgid "DROP ASSERTION is not yet implemented" +msgstr "CREATE ASSERTION ëª…ë ¹ì€ ì•„ì§ êµ¬í˜„ ë˜ì§€ 않았습니다" + +#: gram.y:5403 +#, c-format +msgid "RECHECK is no longer required" +msgstr "RECHECK는 ë” ì´ìƒ 필요하지 않ìŒ" + +#: gram.y:5404 +#, c-format +msgid "Update your data type." +msgstr "ìžë£Œí˜•ì„ ì—…ë°ì´íŠ¸í•˜ì‹­ì‹œì˜¤." + +#: gram.y:6983 +#, c-format +msgid "aggregates cannot have output arguments" +msgstr "집계 함수는 output ì¸ìžë¥¼ 지정할 수 ì—†ìŒ" + +#: gram.y:8853 gram.y:8871 +#, c-format +msgid "WITH CHECK OPTION not supported on recursive views" +msgstr "WITH CHECK OPTION êµ¬ë¬¸ì€ ìž¬ê·€ì ì¸ ë·°ì—서 ì§€ì›í•˜ì§€ 않습니다" + +#: gram.y:9389 +#, c-format +msgid "unrecognized VACUUM option \"%s\"" +msgstr "ì¸ì‹í•  수 없는 VACUUM 옵션 \"%s\"" + +#: gram.y:10403 +#, c-format +msgid "LIMIT #,# syntax is not supported" +msgstr "LIMIT #,# êµ¬ë¬¸ì€ ì§€ì›í•˜ì§€ 않습니다." + +#: gram.y:10404 +#, c-format +msgid "Use separate LIMIT and OFFSET clauses." +msgstr "LIMIT # OFFSET # êµ¬ë¬¸ì„ ì‚¬ìš©í•˜ì„¸ìš”." + +#: gram.y:10667 gram.y:10692 +#, c-format +msgid "VALUES in FROM must have an alias" +msgstr "FROM ì•ˆì˜ VALUES는 반드시 aliasê°€ 있어야합니다" + +#: gram.y:10668 gram.y:10693 +#, c-format +msgid "For example, FROM (VALUES ...) [AS] foo." +msgstr "예, FROM (VALUES ...) [AS] foo." + +#: gram.y:10673 gram.y:10698 +#, c-format +msgid "subquery in FROM must have an alias" +msgstr "FROM ì ˆ ë‚´ì˜ subquery ì—는 반드시 alias 를 가져야만 합니다" + +#: gram.y:10674 gram.y:10699 +#, c-format +msgid "For example, FROM (SELECT ...) [AS] foo." +msgstr "예, FROM (SELECT ...) [AS] foo." + +#: gram.y:11273 +#, c-format +msgid "precision for type float must be at least 1 bit" +msgstr "실수형 ìžë£Œì˜ ì •ë°€ë„ ê°’ìœ¼ë¡œëŠ” ì ì–´ë„ 1 bit ì´ìƒì„ 지정해야합니다." + +#: gram.y:11282 +#, c-format +msgid "precision for type float must be less than 54 bits" +msgstr "실수형 ìžë£Œì˜ ì •ë°€ë„ ê°’ìœ¼ë¡œ 최대 54 bit 까지입니다." + +#: gram.y:11786 +#, c-format +msgid "wrong number of parameters on left side of OVERLAPS expression" +msgstr "OVERLAPS ì‹ì˜ ì™¼ìª½ì— ìžˆëŠ” 매개 변수 수가 잘못ë¨" + +#: gram.y:11791 +#, c-format +msgid "wrong number of parameters on right side of OVERLAPS expression" +msgstr "OVERLAPS ì‹ì˜ ì˜¤ë¥¸ìª½ì— ìžˆëŠ” 매개 변수 수가 잘못ë¨" + +#: gram.y:11966 +#, c-format +msgid "UNIQUE predicate is not yet implemented" +msgstr "UNIQUE 술어는 ì•„ì§ êµ¬í˜„ë˜ì§€ 못했습니다" + +#: gram.y:12300 +#, c-format +msgid "cannot use multiple ORDER BY clauses with WITHIN GROUP" +msgstr "WITHIN GROUP 구문 안ì—서 ì¤‘ë³µëœ ORDER BY êµ¬ë¬¸ì€ í—ˆìš©í•˜ì§€ 않습니다" + +#: gram.y:12305 +#, c-format +msgid "cannot use DISTINCT with WITHIN GROUP" +msgstr "DISTINCTê³¼ WITHIN GROUPì„ í•¨ê»˜ 쓸 수 없습니다" + +#: gram.y:12310 +#, c-format +msgid "cannot use VARIADIC with WITHIN GROUP" +msgstr "VARIADICê³¼ WITHIN GROUPì„ í•¨ê»˜ 쓸 수 없습니다" + +#: gram.y:12816 +#, c-format +msgid "RANGE PRECEDING is only supported with UNBOUNDED" +msgstr "RANGE PRECEDINGì€ UNBOUNDED와 함께 사용해야 합니다" + +#: gram.y:12822 +#, c-format +msgid "RANGE FOLLOWING is only supported with UNBOUNDED" +msgstr "RANGE FOLLOWINGì€ UNBOUNDED와 함께 사용해야 합니다" + +#: gram.y:12849 gram.y:12872 +#, c-format +msgid "frame start cannot be UNBOUNDED FOLLOWING" +msgstr "프레임 ì‹œìž‘ì€ UNBOUNDED FOLLOWINGì¼ ìˆ˜ ì—†ìŒ" + +#: gram.y:12854 +#, c-format +msgid "frame starting from following row cannot end with current row" +msgstr "ë”°ë¼ì˜¤ëŠ” ë¡œìš°ì˜ í”„ë ˆìž„ ì‹œìž‘ì€ í˜„ìž¬ ë¡œìš°ì˜ ëì¼ ìˆ˜ 없습니다" + +#: gram.y:12877 +#, c-format +msgid "frame end cannot be UNBOUNDED PRECEDING" +msgstr "프레임 ëì€ UNBOUNDED PRECEDINGì¼ ìˆ˜ ì—†ìŒ" + +#: gram.y:12883 +#, c-format +msgid "frame starting from current row cannot have preceding rows" +msgstr "현재 ë¡œìš°ì˜ í”„ë ˆìž„ ì‹œìž‘ì€ ì„ í–‰í•˜ëŠ” 로우를 가질 수 없습니다" + +#: gram.y:12890 +#, c-format +msgid "frame starting from following row cannot have preceding rows" +msgstr "ë”°ë¼ì˜¤ëŠ” ë¡œìš°ì˜ í”„ë ˆìž„ ì‹œìž‘ì€ ì„ í–‰í•˜ëŠ” 로우를 가질 수 없습니다" + +#: gram.y:13555 +#, c-format +msgid "type modifier cannot have parameter name" +msgstr "ìžë£Œí˜• 한정ìžëŠ” 매개 변수 ì´ë¦„ì„ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: gram.y:13561 +#, c-format +msgid "type modifier cannot have ORDER BY" +msgstr "ìžë£Œí˜• 한정ìžëŠ” ORDER BY êµ¬ë¬¸ì„ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: gram.y:13625 gram.y:13631 +#, c-format +msgid "%s cannot be used as a role name here" +msgstr "%s ì´ë¦„ì€ ì—¬ê¸°ì„œ 롤 ì´ë¦„으로 사용할 수 ì—†ìŒ" + +#: gram.y:14253 gram.y:14442 +msgid "improper use of \"*\"" +msgstr "\"*\" ì‚¬ìš©ì´ ìž˜ëª»ë¨" + +#: gram.y:14506 +#, c-format +msgid "" +"an ordered-set aggregate with a VARIADIC direct argument must have one " +"VARIADIC aggregated argument of the same data type" +msgstr "" + +#: gram.y:14543 +#, c-format +msgid "multiple ORDER BY clauses not allowed" +msgstr "ì¤‘ë³µëœ ORDER BY êµ¬ë¬¸ì€ í—ˆìš©í•˜ì§€ 않습니다" + +#: gram.y:14554 +#, c-format +msgid "multiple OFFSET clauses not allowed" +msgstr "ì¤‘ë³µëœ OFFSET êµ¬ë¬¸ì€ í—ˆìš©í•˜ì§€ 않습니다" + +#: gram.y:14563 +#, c-format +msgid "multiple LIMIT clauses not allowed" +msgstr "ì¤‘ë³µëœ LIMIT êµ¬ë¬¸ì€ í—ˆìš©í•˜ì§€ 않습니다" + +#: gram.y:14572 +#, c-format +msgid "multiple WITH clauses not allowed" +msgstr "ì¤‘ë³µëœ WITH ì ˆì€ í—ˆìš©í•˜ì§€ 않ìŒ" + +#: gram.y:14764 +#, c-format +msgid "OUT and INOUT arguments aren't allowed in TABLE functions" +msgstr "OUT ë° INOUT ì¸ìžëŠ” TABLE í•¨ìˆ˜ì— ì‚¬ìš©í•  수 ì—†ìŒ" + +#: gram.y:14865 +#, c-format +msgid "multiple COLLATE clauses not allowed" +msgstr "ì¤‘ë³µëœ COLLATE êµ¬ë¬¸ì€ í—ˆìš©í•˜ì§€ 않습니다" + +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:14903 gram.y:14916 +#, c-format +msgid "%s constraints cannot be marked DEFERRABLE" +msgstr "%s 제약조건ì—는 DEFERRABLE ì˜µì…˜ì„ ì“¸ 수 ì—†ìŒ" + +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:14929 +#, c-format +msgid "%s constraints cannot be marked NOT VALID" +msgstr "%s 제약조건ì—는 NOT VALID ì˜µì…˜ì„ ì“¸ 수 ì—†ìŒ" + +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:14942 +#, c-format +msgid "%s constraints cannot be marked NO INHERIT" +msgstr "%s 제약조건ì—는 NO INHERIT ì˜µì…˜ì„ ì“¸ 수 ì—†ìŒ" + +#: guc-file.l:314 +#, c-format +msgid "unrecognized configuration parameter \"%s\" in file \"%s\" line %u" +msgstr "알 수 없는 환경 매개 변수 ì´ë¦„: \"%s\", 해당 파ì¼: \"%s\", 줄번호: %u" + +#: guc-file.l:387 +#, c-format +msgid "parameter \"%s\" removed from configuration file, reset to default" +msgstr "환경설정 파ì¼ì— \"%s\" 매개 변수가 빠졌ìŒ, ì´ˆê¸°ê°’ì„ ì‚¬ìš©í•¨" + +#: guc-file.l:453 +#, c-format +msgid "parameter \"%s\" changed to \"%s\"" +msgstr "\"%s\" 매개 변수 ê°’ì„ \"%s\"(으)로 바꿨ìŒ" + +#: guc-file.l:495 +#, c-format +msgid "configuration file \"%s\" contains errors" +msgstr "\"%s\" 환경 설정파ì¼ì— 오류가 있ìŒ" + +#: guc-file.l:500 +#, c-format +msgid "" +"configuration file \"%s\" contains errors; unaffected changes were applied" +msgstr "\"%s\" 환경 설정 파ì¼ì— 오류가 있어 새로 ë³€ê²½ë  ì„¤ì •ì´ ì—†ìŠµë‹ˆë‹¤" + +#: guc-file.l:505 +#, c-format +msgid "configuration file \"%s\" contains errors; no changes were applied" +msgstr "\"%s\" 환경 설정 파ì¼ì— 오류가 있어 아무 ì„¤ì •ë„ ë°˜ì˜ë˜ì§€ 않았습니다." + +#: guc-file.l:578 +#, c-format +msgid "" +"could not open configuration file \"%s\": maximum nesting depth exceeded" +msgstr "설정 íŒŒì¼ \"%s\"ì„ ì—´ 수 없습니다: 최대 디렉터리 깊ì´ë¥¼ 초과했ìŒ" + +#: guc-file.l:605 +#, c-format +msgid "skipping missing configuration file \"%s\"" +msgstr "\"%s\" 환경 설정파ì¼ì´ 없으나 건너뜀" + +#: guc-file.l:859 +#, c-format +msgid "syntax error in file \"%s\" line %u, near end of line" +msgstr "\"%s\" íŒŒì¼ %u 줄 ë부분ì—서 구문 오류 있ìŒ" + +#: guc-file.l:869 +#, c-format +msgid "syntax error in file \"%s\" line %u, near token \"%s\"" +msgstr "\"%s\" íŒŒì¼ %u 줄ì—서 구문 오류 있ìŒ, \"%s\" í† í° ë¶€ê·¼" + +#: guc-file.l:889 +#, c-format +msgid "too many syntax errors found, abandoning file \"%s\"" +msgstr "구문 오류가 너무 많습니다. \"%s\" 파ì¼ì„ 무시합니다" + +#: guc-file.l:941 +#, c-format +msgid "could not open configuration directory \"%s\": %m" +msgstr "\"%s\" 환경 설정 디렉터리를 ì—´ 수 없습니다: %m" + +#: repl_gram.y:260 repl_gram.y:292 +#, c-format +msgid "invalid timeline %u" +msgstr "ìž˜ëª»ëœ íƒ€ìž„ë¼ì¸: %u" + +#: repl_scanner.l:120 +msgid "invalid streaming start location" +msgstr "ìž˜ëª»ëœ ìŠ¤íŠ¸ë¦¬ë° ì‹œìž‘ 위치" + +#: repl_scanner.l:171 scan.l:670 +msgid "unterminated quoted string" +msgstr "마무리 ì•ˆëœ ë”°ì˜´í‘œ ì•ˆì˜ ë¬¸ìžì—´" + +#: repl_scanner.l:181 +#, c-format +msgid "syntax error: unexpected character \"%s\"" +msgstr "구문 오류: \"%s\" 부근" + +# # advance ë +#: scan.l:432 +msgid "unterminated /* comment" +msgstr "마무리 ì•ˆëœ /* 주ì„" + +#: scan.l:461 +msgid "unterminated bit string literal" +msgstr "마무리 ì•ˆëœ ë¹„íŠ¸ 문ìžì—´ 문ìž" + +#: scan.l:482 +msgid "unterminated hexadecimal string literal" +msgstr "마무리 ì•ˆëœ 16진수 문ìžì—´ 문ìž" + +#: scan.l:532 +#, c-format +msgid "unsafe use of string constant with Unicode escapes" +msgstr "유니코드 ì´ìŠ¤ì¼€ì´í”„와 함께 문ìžì—´ ìƒìˆ˜ë¥¼ 사용하는 ê²ƒì€ ì•ˆì „í•˜ì§€ 않ìŒ" + +#: scan.l:533 +#, c-format +msgid "" +"String constants with Unicode escapes cannot be used when " +"standard_conforming_strings is off." +msgstr "" +"standard_conforming_strings = off ì¸ ê²½ìš° 문ìžì—´ ìƒìˆ˜ 표기ì—서 유니코드 ì´ìФ" +"ì¼€ì´í”„를 사용할 수 없습니다." + +#: scan.l:579 scan.l:778 +msgid "invalid Unicode escape character" +msgstr "ìž˜ëª»ëœ ìœ ë‹ˆì½”ë“œ ì´ìŠ¤ì¼€ì´í”„ 문ìž" + +#: scan.l:605 scan.l:613 scan.l:621 scan.l:622 scan.l:623 scan.l:1338 +#: scan.l:1365 scan.l:1369 scan.l:1407 scan.l:1411 scan.l:1433 scan.l:1443 +msgid "invalid Unicode surrogate pair" +msgstr "ìž˜ëª»ëœ ìœ ë‹ˆì½”ë“œ 대리 ìŒ" + +#: scan.l:627 +#, c-format +msgid "invalid Unicode escape" +msgstr "ìž˜ëª»ëœ ìœ ë‹ˆì½”ë“œ ì´ìŠ¤ì¼€ì´í”„ ê°’" + +#: scan.l:628 +#, c-format +msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX." +msgstr "유니코드 ì´ìŠ¤ì¼€ì´í”„는 \\uXXXX ë˜ëŠ” \\UXXXXXXXX 형태여야 합니다." + +#: scan.l:639 +#, c-format +msgid "unsafe use of \\' in a string literal" +msgstr "문ìžì—´ ì•ˆì— \\' ì‚¬ìš©ì´ ì•ˆì „í•˜ì§€ 않습니다" + +#: scan.l:640 +#, c-format +msgid "" +"Use '' to write quotes in strings. \\' is insecure in client-only encodings." +msgstr "" +"ìž‘ì€ ë”°ì˜´í‘œëŠ” '' 형태로 사용하십시오. \\' í‘œê¸°ë²•ì€ í´ë¼ì´ì–¸íЏ ì „ìš© ì¸ì½”딩ì—" +"서 안전하지 않습니다." + +#: scan.l:715 +msgid "unterminated dollar-quoted string" +msgstr "마무리 ì•ˆëœ ë‹¬ëŸ¬-따옴표 ì•ˆì˜ ë¬¸ìžì—´" + +#: scan.l:732 scan.l:758 scan.l:773 +msgid "zero-length delimited identifier" +msgstr "길ì´ê°€ 0ì¸ êµ¬ë¶„ ì‹ë³„ìž" + +#: scan.l:793 syncrep_scanner.l:84 +msgid "unterminated quoted identifier" +msgstr "마무리 ì•ˆëœ ë”°ì˜´í‘œ ì•ˆì˜ ì‹ë³„ìž" + +# # nonun 부분 begin +#: scan.l:924 +msgid "operator too long" +msgstr "ì—°ì‚°ìžê°€ 너무 ê¹ë‹ˆë‹¤." + +#. translator: %s is typically the translation of "syntax error" +#: scan.l:1078 +#, c-format +msgid "%s at end of input" +msgstr "%s, ìž…ë ¥ ë부분" + +#. translator: first %s is typically the translation of "syntax error" +#: scan.l:1086 +#, c-format +msgid "%s at or near \"%s\"" +msgstr "%s, \"%s\" 부근" + +#: scan.l:1252 scan.l:1284 +msgid "" +"Unicode escape values cannot be used for code point values above 007F when " +"the server encoding is not UTF8" +msgstr "" +"서버 ì¸ì½”ë”©ì´ UTF8ì´ ì•„ë‹Œ 경우 007F보다 í° ì½”ë“œ ì§€ì  ê°’ì—는 유니코드 ì´ìŠ¤ì¼€ì´" +"프 ê°’ì„ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: scan.l:1280 scan.l:1425 +msgid "invalid Unicode escape value" +msgstr "ìž˜ëª»ëœ ìœ ë‹ˆì½”ë“œ ì´ìŠ¤ì¼€ì´í”„ ê°’" + +#: scan.l:1489 +#, c-format +msgid "nonstandard use of \\' in a string literal" +msgstr "문ìžì—´ ì•ˆì— ìžˆëŠ” \\' 문ìžëŠ” í‘œì¤€ì´ ì•„ë‹™ë‹ˆë‹¤" + +#: scan.l:1490 +#, c-format +msgid "" +"Use '' to write quotes in strings, or use the escape string syntax (E'...')." +msgstr "ìž‘ì€ ë”°ì˜´í‘œëŠ” '' 형태니, ì¸ìš©ë¶€í˜¸ 표기법(E'...') 형태로 사용하십시오." + +#: scan.l:1499 +#, c-format +msgid "nonstandard use of \\\\ in a string literal" +msgstr "문ìžì—´ ì•ˆì— ìžˆëŠ” \\\\ 문ìžëŠ” í‘œì¤€ì´ ì•„ë‹™ë‹ˆë‹¤" + +#: scan.l:1500 +#, c-format +msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'." +msgstr "백슬래시 표기는 ì¸ìš©ë¶€í˜¸ 표기법으로 사용하세요, 예, E'\\\\'." + +#: scan.l:1514 +#, c-format +msgid "nonstandard use of escape in a string literal" +msgstr "문ìžì—´ ì•ˆì— ë¹„í‘œì¤€ escape 문ìžë¥¼ 사용하고 있습니다" + +#: scan.l:1515 +#, c-format +msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'." +msgstr "ì¸ìš©ë¶€í˜¸ í‘œê¸°ë²•ì„ ì‚¬ìš©í•˜ì„¸ìš”, 예, E'\\r\\n'." diff --git a/src/backend/po/ru.po b/src/backend/po/ru.po index 76b891c7a9..4866037a23 100644 --- a/src/backend/po/ru.po +++ b/src/backend/po/ru.po @@ -4,14 +4,14 @@ # Serguei A. Mokhov , 2001-2005. # Oleg Bartunov , 2004-2005. # Dmitriy Olshevskiy , 2014. -# Alexander Lakhin , 2012-2016. +# Alexander Lakhin , 2012-2017. # msgid "" msgstr "" "Project-Id-Version: postgres (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-25 10:38+0000\n" -"PO-Revision-Date: 2016-09-25 17:55+0300\n" +"POT-Creation-Date: 2017-08-17 17:47+0000\n" +"PO-Revision-Date: 2017-08-23 11:31+0300\n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" @@ -29,8 +29,8 @@ msgstr "" msgid "not recorded" msgstr "не запиÑано" -#: ../common/controldata_utils.c:52 commands/copy.c:2794 -#: commands/extension.c:3120 utils/adt/genfile.c:134 +#: ../common/controldata_utils.c:52 commands/copy.c:2834 +#: commands/extension.c:3144 utils/adt/genfile.c:134 #, c-format msgid "could not open file \"%s\" for reading: %m" msgstr "не удалоÑÑŒ открыть файл \"%s\" Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ: %m" @@ -41,13 +41,13 @@ msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: не удалоÑÑŒ открыть файл \"%s\" Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ: %s\n" #: ../common/controldata_utils.c:66 access/transam/timeline.c:346 -#: access/transam/xlog.c:3191 access/transam/xlog.c:10348 -#: access/transam/xlog.c:10361 access/transam/xlog.c:10724 -#: access/transam/xlog.c:10767 access/transam/xlog.c:10806 -#: access/transam/xlog.c:10849 access/transam/xlogfuncs.c:665 -#: access/transam/xlogfuncs.c:684 commands/extension.c:3130 -#: replication/logical/origin.c:665 replication/logical/origin.c:695 -#: replication/logical/reorderbuffer.c:3093 replication/walsender.c:499 +#: access/transam/xlog.c:3226 access/transam/xlog.c:10453 +#: access/transam/xlog.c:10466 access/transam/xlog.c:10861 +#: access/transam/xlog.c:10904 access/transam/xlog.c:10943 +#: access/transam/xlog.c:10986 access/transam/xlogfuncs.c:660 +#: access/transam/xlogfuncs.c:679 commands/extension.c:3154 +#: replication/logical/origin.c:668 replication/logical/origin.c:698 +#: replication/logical/reorderbuffer.c:3100 replication/walsender.c:504 #: storage/file/copydir.c:176 utils/adt/genfile.c:151 #, c-format msgid "could not read file \"%s\": %m" @@ -159,26 +159,27 @@ msgid "could not close directory \"%s\": %s\n" msgstr "не удалоÑÑŒ закрыть каталог \"%s\": %s\n" #: ../common/psprintf.c:179 ../port/path.c:630 ../port/path.c:668 -#: ../port/path.c:685 access/transam/twophase.c:1261 access/transam/xlog.c:6079 -#: lib/stringinfo.c:258 libpq/auth.c:847 libpq/auth.c:1210 libpq/auth.c:1278 -#: libpq/auth.c:1794 postmaster/bgworker.c:289 postmaster/bgworker.c:797 -#: postmaster/postmaster.c:2334 postmaster/postmaster.c:2365 -#: postmaster/postmaster.c:3898 postmaster/postmaster.c:4588 -#: postmaster/postmaster.c:4656 postmaster/postmaster.c:5359 -#: postmaster/postmaster.c:5623 +#: ../port/path.c:685 access/transam/twophase.c:1262 access/transam/xlog.c:6114 +#: lib/stringinfo.c:258 libpq/auth.c:864 libpq/auth.c:1227 libpq/auth.c:1295 +#: libpq/auth.c:1811 postmaster/bgworker.c:310 postmaster/bgworker.c:813 +#: postmaster/postmaster.c:2357 postmaster/postmaster.c:2388 +#: postmaster/postmaster.c:3922 postmaster/postmaster.c:4620 +#: postmaster/postmaster.c:4695 postmaster/postmaster.c:5368 +#: postmaster/postmaster.c:5690 #: replication/libpqwalreceiver/libpqwalreceiver.c:143 -#: replication/logical/logical.c:168 storage/buffer/localbuf.c:436 -#: storage/file/fd.c:729 storage/file/fd.c:1126 storage/file/fd.c:1244 -#: storage/file/fd.c:1916 storage/ipc/procarray.c:1060 -#: storage/ipc/procarray.c:1546 storage/ipc/procarray.c:1553 -#: storage/ipc/procarray.c:1967 storage/ipc/procarray.c:2570 +#: replication/logical/logical.c:169 storage/buffer/localbuf.c:436 +#: storage/file/fd.c:736 storage/file/fd.c:1164 storage/file/fd.c:1282 +#: storage/file/fd.c:1993 storage/ipc/procarray.c:1062 +#: storage/ipc/procarray.c:1548 storage/ipc/procarray.c:1555 +#: storage/ipc/procarray.c:1969 storage/ipc/procarray.c:2580 #: utils/adt/formatting.c:1522 utils/adt/formatting.c:1642 -#: utils/adt/formatting.c:1763 utils/adt/regexp.c:219 utils/adt/varlena.c:4440 +#: utils/adt/formatting.c:1763 utils/adt/pg_locale.c:463 +#: utils/adt/pg_locale.c:647 utils/adt/regexp.c:219 utils/adt/varlena.c:4440 #: utils/adt/varlena.c:4461 utils/fmgr/dfmgr.c:216 utils/hash/dynahash.c:429 -#: utils/hash/dynahash.c:535 utils/hash/dynahash.c:1047 utils/mb/mbutils.c:376 -#: utils/mb/mbutils.c:709 utils/misc/guc.c:3890 utils/misc/guc.c:3906 -#: utils/misc/guc.c:3919 utils/misc/guc.c:6865 utils/misc/tzparser.c:468 -#: utils/mmgr/aset.c:509 utils/mmgr/mcxt.c:767 utils/mmgr/mcxt.c:802 +#: utils/hash/dynahash.c:535 utils/hash/dynahash.c:1046 utils/mb/mbutils.c:376 +#: utils/mb/mbutils.c:709 utils/misc/guc.c:3888 utils/misc/guc.c:3904 +#: utils/misc/guc.c:3917 utils/misc/guc.c:6863 utils/misc/tzparser.c:468 +#: utils/mmgr/aset.c:510 utils/mmgr/mcxt.c:767 utils/mmgr/mcxt.c:802 #: utils/mmgr/mcxt.c:839 utils/mmgr/mcxt.c:876 utils/mmgr/mcxt.c:910 #: utils/mmgr/mcxt.c:939 utils/mmgr/mcxt.c:973 utils/mmgr/mcxt.c:1055 #: utils/mmgr/mcxt.c:1089 utils/mmgr/mcxt.c:1138 @@ -248,7 +249,7 @@ msgstr "ошибка при удалении файла или каталога msgid "could not look up effective user ID %ld: %s" msgstr "выÑÑнить Ñффективный идентификатор Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (%ld) не удалоÑÑŒ: %s" -#: ../common/username.c:47 libpq/auth.c:1741 +#: ../common/username.c:47 libpq/auth.c:1758 msgid "user does not exist" msgstr "пользователь не ÑущеÑтвует" @@ -297,7 +298,7 @@ msgstr "дочерний процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»ÑÑ Ñ Ð½ÐµÑ€Ð°Ñпоз msgid "could not determine encoding for codeset \"%s\"" msgstr "не удалоÑÑŒ определить кодировку Ð´Ð»Ñ Ð½Ð°Ð±Ð¾Ñ€Ð° Ñимволов \"%s\"" -#: ../port/chklocale.c:294 ../port/chklocale.c:423 postmaster/postmaster.c:4888 +#: ../port/chklocale.c:294 ../port/chklocale.c:423 postmaster/postmaster.c:4899 #, c-format msgid "Please report this to ." msgstr "" @@ -392,83 +393,106 @@ msgstr "\"%s\" - Ñто не Ð¸Ð½Ð´ÐµÐºÑ BRIN" msgid "could not open parent table of index %s" msgstr "не удалоÑÑŒ родительÑкую таблицу индекÑа %s" -#: access/brin/brin_pageops.c:76 access/brin/brin_pageops.c:362 -#: access/brin/brin_pageops.c:828 +#: access/brin/brin_pageops.c:76 access/brin/brin_pageops.c:360 +#: access/brin/brin_pageops.c:824 access/gin/ginentrypage.c:109 +#: access/gist/gist.c:1337 access/nbtree/nbtinsert.c:576 +#: access/nbtree/nbtsort.c:488 access/spgist/spgdoinsert.c:1907 #, c-format -msgid "index row size %lu exceeds maximum %lu for index \"%s\"" +msgid "index row size %zu exceeds maximum %zu for index \"%s\"" msgstr "" -"размер Ñтроки индекÑа (%lu) больше предельного размера (%lu) (Ð¸Ð½Ð´ÐµÐºÑ \"%s\")" +"размер Ñтроки индекÑа (%zu) больше предельного размера (%zu) (Ð¸Ð½Ð´ÐµÐºÑ \"%s\")" #: access/brin/brin_revmap.c:459 #, c-format msgid "unexpected page type 0x%04X in BRIN index \"%s\" block %u" msgstr "неожиданный тип Ñтраницы 0x%04X в BRIN-индекÑе \"%s\" (блок: %u)" -#: access/brin/brin_validate.c:115 +#: access/brin/brin_validate.c:115 access/gin/ginvalidate.c:148 +#: access/gist/gistvalidate.c:145 access/hash/hashvalidate.c:130 +#: access/nbtree/nbtvalidate.c:100 access/spgist/spgvalidate.c:115 #, c-format msgid "" -"brin operator family \"%s\" contains function %s with invalid support number " -"%d" +"operator family \"%s\" of access method %s contains function %s with invalid " +"support number %d" msgstr "" -"ÑемейÑтво операторов brin \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ опорным " -"номером %d" +"ÑемейÑтво операторов \"%s\" метода доÑтупа %s Ñодержит функцию %s Ñ " +"неправильным опорным номером %d" -#: access/brin/brin_validate.c:131 +#: access/brin/brin_validate.c:131 access/gin/ginvalidate.c:160 +#: access/gist/gistvalidate.c:157 access/hash/hashvalidate.c:113 +#: access/nbtree/nbtvalidate.c:112 access/spgist/spgvalidate.c:127 #, c-format msgid "" -"brin operator family \"%s\" contains function %s with wrong signature for " -"support number %d" +"operator family \"%s\" of access method %s contains function %s with wrong " +"signature for support number %d" msgstr "" -"ÑемейÑтво операторов brin \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " -"объÑвлением Ð´Ð»Ñ Ð¾Ð¿Ð¾Ñ€Ð½Ð¾Ð³Ð¾ номера %d" +"ÑемейÑтво операторов \"%s\" метода доÑтупа %s Ñодержит функцию %s Ñ " +"неподходÑщим объÑвлением Ð´Ð»Ñ Ð¾Ð¿Ð¾Ñ€Ð½Ð¾Ð³Ð¾ номера %d" -#: access/brin/brin_validate.c:153 +#: access/brin/brin_validate.c:153 access/gin/ginvalidate.c:179 +#: access/gist/gistvalidate.c:177 access/hash/hashvalidate.c:151 +#: access/nbtree/nbtvalidate.c:132 access/spgist/spgvalidate.c:146 #, c-format msgid "" -"brin operator family \"%s\" contains operator %s with invalid strategy " -"number %d" +"operator family \"%s\" of access method %s contains operator %s with invalid " +"strategy number %d" msgstr "" -"ÑемейÑтво операторов brin \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ номером " -"Ñтратегии %d" +"ÑемейÑтво операторов \"%s\" метода доÑтупа %s Ñодержит оператор %s Ñ " +"неправильным номером Ñтратегии %d" -#: access/brin/brin_validate.c:182 +#: access/brin/brin_validate.c:182 access/gin/ginvalidate.c:192 +#: access/hash/hashvalidate.c:164 access/nbtree/nbtvalidate.c:145 +#: access/spgist/spgvalidate.c:159 #, c-format msgid "" -"brin operator family \"%s\" contains invalid ORDER BY specification for " -"operator %s" +"operator family \"%s\" of access method %s contains invalid ORDER BY " +"specification for operator %s" msgstr "" -"ÑемейÑтво операторов brin \"%s\" Ñодержит некорректное определение ORDER BY " -"Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° %s" +"ÑемейÑтво операторов \"%s\" метода доÑтупа %s Ñодержит некорректное " +"определение ORDER BY Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° %s" -#: access/brin/brin_validate.c:195 +#: access/brin/brin_validate.c:195 access/gin/ginvalidate.c:205 +#: access/gist/gistvalidate.c:225 access/hash/hashvalidate.c:177 +#: access/nbtree/nbtvalidate.c:158 access/spgist/spgvalidate.c:172 #, c-format -msgid "brin operator family \"%s\" contains operator %s with wrong signature" +msgid "" +"operator family \"%s\" of access method %s contains operator %s with wrong " +"signature" msgstr "" -"ÑемейÑтво операторов brin \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " -"объÑвлением" +"ÑемейÑтво операторов \"%s\" метода доÑтупа %s Ñодержит оператор %s Ñ " +"неподходÑщим объÑвлением" -#: access/brin/brin_validate.c:233 +#: access/brin/brin_validate.c:233 access/hash/hashvalidate.c:217 +#: access/nbtree/nbtvalidate.c:200 access/spgist/spgvalidate.c:200 #, c-format -msgid "brin operator family \"%s\" is missing operator(s) for types %s and %s" -msgstr "в ÑемейÑтве операторов brin \"%s\" нет оператора(ов) Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð¾Ð² %s и %s" +msgid "" +"operator family \"%s\" of access method %s is missing operator(s) for types " +"%s and %s" +msgstr "" +"в ÑемейÑтве операторов \"%s\" метода доÑтупа %s нет оператора(ов) Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð¾Ð² " +"%s и %s" #: access/brin/brin_validate.c:243 #, c-format msgid "" -"brin operator family \"%s\" is missing support function(s) for types %s and " -"%s" +"operator family \"%s\" of access method %s is missing support function(s) " +"for types %s and %s" msgstr "" -"в ÑемейÑтве операторов brin \"%s\" нет опорных функций Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð¾Ð² %s и %s" +"в ÑемейÑтве операторов \"%s\" метода доÑтупа %s нет опорных функций Ð´Ð»Ñ " +"типов %s и %s" -#: access/brin/brin_validate.c:256 +#: access/brin/brin_validate.c:256 access/hash/hashvalidate.c:231 +#: access/nbtree/nbtvalidate.c:224 access/spgist/spgvalidate.c:233 #, c-format -msgid "brin operator class \"%s\" is missing operator(s)" -msgstr "в клаÑÑе операторов brin \"%s\" нет оператора(ов)" +msgid "operator class \"%s\" of access method %s is missing operator(s)" +msgstr "в клаÑÑе операторов \"%s\" метода доÑтупа %s нет оператора(ов)" -#: access/brin/brin_validate.c:267 +#: access/brin/brin_validate.c:267 access/gin/ginvalidate.c:246 +#: access/gist/gistvalidate.c:264 #, c-format -msgid "brin operator class \"%s\" is missing support function %d" -msgstr "в клаÑÑе операторов brin \"%s\" нет опорной функции %d" +msgid "" +"operator class \"%s\" of access method %s is missing support function %d" +msgstr "в клаÑÑе операторов \"%s\" метода доÑтупа %s нет опорной функции %d" #: access/common/heaptuple.c:708 access/common/heaptuple.c:1339 #, c-format @@ -485,8 +509,8 @@ msgstr "чиÑло Ñтолбцов индекÑа (%d) превышает пр msgid "index row requires %zu bytes, maximum size is %zu" msgstr "Ñтрока индекÑа требует байт: %zu, при макÑимуме: %zu" -#: access/common/printtup.c:292 tcop/fastpath.c:182 tcop/fastpath.c:544 -#: tcop/postgres.c:1719 +#: access/common/printtup.c:292 tcop/fastpath.c:182 tcop/fastpath.c:532 +#: tcop/postgres.c:1711 #, c-format msgid "unsupported format code: %d" msgstr "неподдерживаемый код формата: %d" @@ -558,7 +582,7 @@ msgid "" msgstr "" "ЧиÑло возвращённых Ñтолбцов (%d) не ÑоответÑтвует ожидаемому чиÑлу (%d)." -#: access/common/tupconvert.c:241 +#: access/common/tupconvert.c:314 #, c-format msgid "" "Attribute \"%s\" of type %s does not match corresponding attribute of type " @@ -566,12 +590,12 @@ msgid "" msgstr "" "Ðтрибут \"%s\" типа %s неÑовмеÑтим Ñ ÑоответÑтвующим атрибутом типа %s." -#: access/common/tupconvert.c:253 +#: access/common/tupconvert.c:326 #, c-format msgid "Attribute \"%s\" of type %s does not exist in type %s." msgstr "Ðтрибут \"%s\" типа %s не ÑущеÑтвует в типе %s." -#: access/common/tupdesc.c:635 parser/parse_relation.c:1517 +#: access/common/tupdesc.c:635 parser/parse_relation.c:1518 #, c-format msgid "column \"%s\" cannot be declared SETOF" msgstr "Ñтолбец \"%s\" не может быть объÑвлен как SETOF" @@ -586,19 +610,11 @@ msgstr "Ñлишком длинный ÑпиÑок указателей" msgid "Reduce maintenance_work_mem." msgstr "Уменьшите maintenance_work_mem." -#: access/gin/ginentrypage.c:109 access/gist/gist.c:1337 -#: access/nbtree/nbtinsert.c:576 access/nbtree/nbtsort.c:488 -#: access/spgist/spgdoinsert.c:1907 -#, c-format -msgid "index row size %zu exceeds maximum %zu for index \"%s\"" -msgstr "" -"размер Ñтроки индекÑа (%zu) больше предельного размера (%zu) (Ð¸Ð½Ð´ÐµÐºÑ \"%s\")" - -#: access/gin/ginfast.c:989 access/transam/xlog.c:9805 -#: access/transam/xlog.c:10276 access/transam/xlogfuncs.c:293 -#: access/transam/xlogfuncs.c:320 access/transam/xlogfuncs.c:359 -#: access/transam/xlogfuncs.c:380 access/transam/xlogfuncs.c:401 -#: access/transam/xlogfuncs.c:471 access/transam/xlogfuncs.c:527 +#: access/gin/ginfast.c:989 access/transam/xlog.c:9875 +#: access/transam/xlog.c:10392 access/transam/xlogfuncs.c:288 +#: access/transam/xlogfuncs.c:315 access/transam/xlogfuncs.c:354 +#: access/transam/xlogfuncs.c:375 access/transam/xlogfuncs.c:396 +#: access/transam/xlogfuncs.c:466 access/transam/xlogfuncs.c:522 #, c-format msgid "recovery is in progress" msgstr "идёт процеÑÑ Ð²Ð¾ÑÑтановлениÑ" @@ -629,67 +645,23 @@ msgstr "" msgid "To fix this, do REINDEX INDEX \"%s\"." msgstr "Ð”Ð»Ñ Ð¸ÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚Ðµ REINDEX INDEX \"%s\"." -#: access/gin/ginvalidate.c:92 -#, c-format -msgid "" -"gin operator family \"%s\" contains support procedure %s with cross-type " -"registration" -msgstr "" -"ÑемейÑтво операторов gin \"%s\" Ñодержит опорную процедуру %s Ñ Ð¼ÐµÐ¶Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ð¹ " -"региÑтрацией" - -#: access/gin/ginvalidate.c:148 -#, c-format -msgid "" -"gin operator family \"%s\" contains function %s with invalid support number " -"%d" -msgstr "" -"ÑемейÑтво операторов gin \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ опорным " -"номером %d" - -#: access/gin/ginvalidate.c:160 +#: access/gin/ginvalidate.c:92 access/gist/gistvalidate.c:92 +#: access/hash/hashvalidate.c:98 access/spgist/spgvalidate.c:92 #, c-format msgid "" -"gin operator family \"%s\" contains function %s with wrong signature for " -"support number %d" +"operator family \"%s\" of access method %s contains support procedure %s " +"with different left and right input types" msgstr "" -"ÑемейÑтво операторов gin \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " -"объÑвлением Ð´Ð»Ñ Ð¾Ð¿Ð¾Ñ€Ð½Ð¾Ð³Ð¾ номера %d" +"ÑемейÑтво операторов \"%s\" метода доÑтупа %s Ñодержит опорную процедуру %s " +"Ñ Ð¼ÐµÐ¶Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ð¹ региÑтрацией" -#: access/gin/ginvalidate.c:179 +#: access/gin/ginvalidate.c:256 #, c-format msgid "" -"gin operator family \"%s\" contains operator %s with invalid strategy number " +"operator class \"%s\" of access method %s is missing support function %d or " "%d" msgstr "" -"ÑемейÑтво операторов gin \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ номером " -"Ñтратегии %d" - -#: access/gin/ginvalidate.c:192 -#, c-format -msgid "" -"gin operator family \"%s\" contains invalid ORDER BY specification for " -"operator %s" -msgstr "" -"ÑемейÑтво операторов gin \"%s\" Ñодержит некорректное определение ORDER BY " -"Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° %s" - -#: access/gin/ginvalidate.c:205 -#, c-format -msgid "gin operator family \"%s\" contains operator %s with wrong signature" -msgstr "" -"ÑемейÑтво операторов gin \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " -"объÑвлением" - -#: access/gin/ginvalidate.c:246 -#, c-format -msgid "gin operator class \"%s\" is missing support function %d" -msgstr "в клаÑÑе операторов gin \"%s\" нет опорной функции %d" - -#: access/gin/ginvalidate.c:256 -#, c-format -msgid "gin operator class \"%s\" is missing support function %d or %d" -msgstr "в клаÑÑе операторов gin \"%s\" нет опорной функции %d или %d" +"в клаÑÑе операторов \"%s\" метода доÑтупа %s нет опорной функции %d или %d" #: access/gist/gist.c:680 access/gist/gistvacuum.c:258 #, c-format @@ -756,78 +728,30 @@ msgstr "в индекÑе \"%s\" неожиданно оказалаÑÑŒ нул msgid "index \"%s\" contains corrupted page at block %u" msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" Ñодержит иÑпорченную Ñтраницу в блоке %u" -#: access/gist/gistvalidate.c:92 -#, c-format -msgid "" -"gist operator family \"%s\" contains support procedure %s with cross-type " -"registration" -msgstr "" -"ÑемейÑтво операторов gist \"%s\" Ñодержит опорную процедуру %s Ñ Ð¼ÐµÐ¶Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ð¹ " -"региÑтрацией" - -#: access/gist/gistvalidate.c:145 -#, c-format -msgid "" -"gist operator family \"%s\" contains function %s with invalid support number " -"%d" -msgstr "" -"ÑемейÑтво операторов gist \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ опорным " -"номером %d" - -#: access/gist/gistvalidate.c:157 -#, c-format -msgid "" -"gist operator family \"%s\" contains function %s with wrong signature for " -"support number %d" -msgstr "" -"ÑемейÑтво операторов gist \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " -"объÑвлением Ð´Ð»Ñ Ð¾Ð¿Ð¾Ñ€Ð½Ð¾Ð³Ð¾ номера %d" - -#: access/gist/gistvalidate.c:177 -#, c-format -msgid "" -"gist operator family \"%s\" contains operator %s with invalid strategy " -"number %d" -msgstr "" -"ÑемейÑтво операторов gist \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ номером " -"Ñтратегии %d" - #: access/gist/gistvalidate.c:195 #, c-format msgid "" -"gist operator family \"%s\" contains unsupported ORDER BY specification for " -"operator %s" +"operator family \"%s\" of access method %s contains unsupported ORDER BY " +"specification for operator %s" msgstr "" -"ÑемейÑтво операторов gist \"%s\" Ñодержит неподдерживаемое определение ORDER " -"BY Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° %s" +"ÑемейÑтво операторов \"%s\" метода доÑтупа %s Ñодержит неподдерживаемое " +"определение ORDER BY Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° %s" #: access/gist/gistvalidate.c:206 #, c-format msgid "" -"gist operator family \"%s\" contains incorrect ORDER BY opfamily " -"specification for operator %s" +"operator family \"%s\" of access method %s contains incorrect ORDER BY " +"opfamily specification for operator %s" msgstr "" -"ÑемейÑтво операторов gist \"%s\" Ñодержит некорректное определение ORDER BY " -"Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° %s" - -#: access/gist/gistvalidate.c:225 -#, c-format -msgid "gist operator family \"%s\" contains operator %s with wrong signature" -msgstr "" -"ÑемейÑтво операторов gist \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " -"объÑвлением" - -#: access/gist/gistvalidate.c:264 -#, c-format -msgid "gist operator class \"%s\" is missing support function %d" -msgstr "в клаÑÑе операторов gist \"%s\" нет опорной функции %d" +"ÑемейÑтво операторов \"%s\" метода доÑтупа %s Ñодержит некорректное " +"определение ORDER BY Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° %s" -#: access/hash/hashinsert.c:68 +#: access/hash/hashinsert.c:70 #, c-format msgid "index row size %zu exceeds hash maximum %zu" msgstr "размер Ñтроки индекÑа (%zu) больше предельного размера хеша (%zu)" -#: access/hash/hashinsert.c:70 access/spgist/spgdoinsert.c:1911 +#: access/hash/hashinsert.c:72 access/spgist/spgdoinsert.c:1911 #: access/spgist/spgutils.c:703 #, c-format msgid "Values larger than a buffer page cannot be indexed." @@ -853,89 +777,31 @@ msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" не ÑвлÑетÑÑ Ñ…ÐµÑˆ-индекÑом" msgid "index \"%s\" has wrong hash version" msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" имеет неправильную верÑию хеша" -#: access/hash/hashvalidate.c:98 -#, c-format -msgid "" -"hash operator family \"%s\" contains support procedure %s with cross-type " -"registration" -msgstr "" -"ÑемейÑтво операторов hash \"%s\" Ñодержит опорную процедуру %s Ñ Ð¼ÐµÐ¶Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ð¹ " -"региÑтрацией" - -#: access/hash/hashvalidate.c:113 -#, c-format -msgid "" -"hash operator family \"%s\" contains function %s with wrong signature for " -"support number %d" -msgstr "" -"ÑемейÑтво операторов hash \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " -"объÑвлением Ð´Ð»Ñ Ð¾Ð¿Ð¾Ñ€Ð½Ð¾Ð³Ð¾ номера %d" - -#: access/hash/hashvalidate.c:130 -#, c-format -msgid "" -"hash operator family \"%s\" contains function %s with invalid support number " -"%d" -msgstr "" -"ÑемейÑтво операторов hash \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ опорным " -"номером %d" - -#: access/hash/hashvalidate.c:151 -#, c-format -msgid "" -"hash operator family \"%s\" contains operator %s with invalid strategy " -"number %d" -msgstr "" -"ÑемейÑтво операторов hash \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ номером " -"Ñтратегии %d" - -#: access/hash/hashvalidate.c:164 +#: access/hash/hashvalidate.c:189 #, c-format msgid "" -"hash operator family \"%s\" contains invalid ORDER BY specification for " +"operator family \"%s\" of access method %s lacks support function for " "operator %s" msgstr "" -"ÑемейÑтво операторов hash \"%s\" Ñодержит некорректное определение ORDER BY " +"в ÑемейÑтве операторов \"%s\" метода доÑтупа %s не хватает опорной функции " "Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° %s" -#: access/hash/hashvalidate.c:177 +#: access/hash/hashvalidate.c:247 access/nbtree/nbtvalidate.c:241 #, c-format -msgid "hash operator family \"%s\" contains operator %s with wrong signature" -msgstr "" -"ÑемейÑтво операторов hash \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " -"объÑвлением" - -#: access/hash/hashvalidate.c:189 -#, c-format -msgid "hash operator family \"%s\" lacks support function for operator %s" +msgid "" +"operator family \"%s\" of access method %s is missing cross-type operator(s)" msgstr "" -"в ÑемейÑтве операторов hash \"%s\" не хватает опорной функции Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° " -"%s" - -#: access/hash/hashvalidate.c:217 -#, c-format -msgid "hash operator family \"%s\" is missing operator(s) for types %s and %s" -msgstr "в ÑемейÑтве операторов hash \"%s\" нет оператора(ов) Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð¾Ð² %s и %s" - -#: access/hash/hashvalidate.c:231 -#, c-format -msgid "hash operator class \"%s\" is missing operator(s)" -msgstr "в клаÑÑе операторов hash \"%s\" нет оператора(ов)" - -#: access/hash/hashvalidate.c:247 -#, c-format -msgid "hash operator family \"%s\" is missing cross-type operator(s)" -msgstr "в ÑемейÑтве операторов hash \"%s\" нет межтипового оператора(ов)" +"в ÑемейÑтве операторов \"%s\" метода доÑтупа %s нет межтипового оператора(ов)" #: access/heap/heapam.c:1295 access/heap/heapam.c:1323 -#: access/heap/heapam.c:1355 catalog/aclchk.c:1748 +#: access/heap/heapam.c:1355 catalog/aclchk.c:1756 #, c-format msgid "\"%s\" is an index" msgstr "\"%s\" - Ñто индекÑ" #: access/heap/heapam.c:1300 access/heap/heapam.c:1328 -#: access/heap/heapam.c:1360 catalog/aclchk.c:1755 commands/tablecmds.c:8984 -#: commands/tablecmds.c:12042 +#: access/heap/heapam.c:1360 catalog/aclchk.c:1763 commands/tablecmds.c:9095 +#: commands/tablecmds.c:12203 #, c-format msgid "\"%s\" is a composite type" msgstr "\"%s\" - Ñто ÑоÑтавной тип" @@ -955,7 +821,7 @@ msgstr "удалÑть кортежи во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð°Ñ€Ð°Ð»Ð»ÐµÐ»ÑŒÐ½Ñ‹Ñ… msgid "attempted to delete invisible tuple" msgstr "попытка ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð½ÐµÐ²Ð¸Ð´Ð¸Ð¼Ð¾Ð³Ð¾ кортежа" -#: access/heap/heapam.c:3489 access/heap/heapam.c:6240 +#: access/heap/heapam.c:3489 access/heap/heapam.c:6274 #, c-format msgid "cannot update tuples during a parallel operation" msgstr "изменÑть кортежи во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð°Ñ€Ð°Ð»Ð»ÐµÐ»ÑŒÐ½Ñ‹Ñ… операций нельзÑ" @@ -965,8 +831,8 @@ msgstr "изменÑть кортежи во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð°Ñ€Ð°Ð»Ð»ÐµÐ»ÑŒÐ½Ñ‹Ñ… msgid "attempted to update invisible tuple" msgstr "попытка Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½ÐµÐ²Ð¸Ð´Ð¸Ð¼Ð¾Ð³Ð¾ кортежа" -#: access/heap/heapam.c:4963 access/heap/heapam.c:5001 -#: access/heap/heapam.c:5253 executor/execMain.c:2312 +#: access/heap/heapam.c:4964 access/heap/heapam.c:5002 +#: access/heap/heapam.c:5254 executor/execMain.c:2314 #, c-format msgid "could not obtain lock on row in relation \"%s\"" msgstr "не удалоÑÑŒ получить блокировку Ñтроки в таблице \"%s\"" @@ -983,22 +849,22 @@ msgstr "не удалоÑÑŒ запиÑать в файл \"%s\" (запиÑан #: access/heap/rewriteheap.c:963 access/heap/rewriteheap.c:1175 #: access/heap/rewriteheap.c:1272 access/transam/timeline.c:407 -#: access/transam/timeline.c:483 access/transam/xlog.c:3058 -#: access/transam/xlog.c:3220 replication/logical/snapbuild.c:1605 -#: replication/slot.c:1088 replication/slot.c:1173 storage/file/fd.c:624 -#: storage/file/fd.c:3052 storage/smgr/md.c:1041 storage/smgr/md.c:1274 -#: storage/smgr/md.c:1447 utils/misc/guc.c:6887 +#: access/transam/timeline.c:483 access/transam/xlog.c:3093 +#: access/transam/xlog.c:3255 replication/logical/snapbuild.c:1605 +#: replication/slot.c:1105 replication/slot.c:1190 storage/file/fd.c:631 +#: storage/file/fd.c:3129 storage/smgr/md.c:1041 storage/smgr/md.c:1274 +#: storage/smgr/md.c:1447 utils/misc/guc.c:6885 #, c-format msgid "could not fsync file \"%s\": %m" msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ файл \"%s\": %m" #: access/heap/rewriteheap.c:1018 access/heap/rewriteheap.c:1138 #: access/transam/timeline.c:315 access/transam/timeline.c:461 -#: access/transam/xlog.c:3014 access/transam/xlog.c:3163 -#: access/transam/xlog.c:10134 access/transam/xlog.c:10172 -#: access/transam/xlog.c:10499 postmaster/postmaster.c:4363 -#: replication/logical/origin.c:542 replication/slot.c:1045 -#: storage/file/copydir.c:162 storage/smgr/md.c:327 utils/time/snapmgr.c:1223 +#: access/transam/xlog.c:3049 access/transam/xlog.c:3198 +#: access/transam/xlog.c:10209 access/transam/xlog.c:10247 +#: access/transam/xlog.c:10636 postmaster/postmaster.c:4387 +#: replication/logical/origin.c:542 replication/slot.c:1062 +#: storage/file/copydir.c:162 storage/smgr/md.c:327 utils/time/snapmgr.c:1275 #, c-format msgid "could not create file \"%s\": %m" msgstr "Ñоздать файл \"%s\" не удалоÑÑŒ: %m" @@ -1008,7 +874,7 @@ msgstr "Ñоздать файл \"%s\" не удалоÑÑŒ: %m" msgid "could not truncate file \"%s\" to %u: %m" msgstr "не удалоÑÑŒ обрезать файл \"%s\" до нужного размера (%u): %m" -#: access/heap/rewriteheap.c:1154 replication/walsender.c:481 +#: access/heap/rewriteheap.c:1154 replication/walsender.c:486 #: storage/smgr/md.c:1899 #, c-format msgid "could not seek to end of file \"%s\": %m" @@ -1016,25 +882,25 @@ msgstr "не удалоÑÑŒ перейти к концу файла \"%s\": %m" #: access/heap/rewriteheap.c:1165 access/transam/timeline.c:367 #: access/transam/timeline.c:401 access/transam/timeline.c:477 -#: access/transam/xlog.c:3049 access/transam/xlog.c:3213 -#: postmaster/postmaster.c:4373 postmaster/postmaster.c:4383 -#: replication/logical/origin.c:551 replication/logical/origin.c:587 -#: replication/logical/origin.c:603 replication/logical/snapbuild.c:1589 -#: replication/slot.c:1074 storage/file/copydir.c:187 +#: access/transam/xlog.c:3084 access/transam/xlog.c:3248 +#: postmaster/postmaster.c:4397 postmaster/postmaster.c:4407 +#: replication/logical/origin.c:551 replication/logical/origin.c:590 +#: replication/logical/origin.c:606 replication/logical/snapbuild.c:1589 +#: replication/slot.c:1091 storage/file/copydir.c:187 #: utils/init/miscinit.c:1228 utils/init/miscinit.c:1237 -#: utils/init/miscinit.c:1244 utils/misc/guc.c:6848 utils/misc/guc.c:6879 -#: utils/misc/guc.c:8721 utils/misc/guc.c:8735 utils/time/snapmgr.c:1228 -#: utils/time/snapmgr.c:1235 +#: utils/init/miscinit.c:1244 utils/misc/guc.c:6846 utils/misc/guc.c:6877 +#: utils/misc/guc.c:8727 utils/misc/guc.c:8741 utils/time/snapmgr.c:1280 +#: utils/time/snapmgr.c:1287 #, c-format msgid "could not write to file \"%s\": %m" msgstr "запиÑать в файл \"%s\" не удалоÑÑŒ: %m" -#: access/heap/rewriteheap.c:1248 access/transam/xlog.c:10366 +#: access/heap/rewriteheap.c:1248 access/transam/xlog.c:10471 #: access/transam/xlogarchive.c:114 access/transam/xlogarchive.c:468 -#: replication/logical/origin.c:529 replication/logical/reorderbuffer.c:2626 -#: replication/logical/reorderbuffer.c:2683 -#: replication/logical/snapbuild.c:1533 replication/logical/snapbuild.c:1908 -#: replication/slot.c:1147 storage/ipc/dsm.c:326 storage/smgr/md.c:427 +#: replication/logical/origin.c:529 replication/logical/reorderbuffer.c:2633 +#: replication/logical/reorderbuffer.c:2690 +#: replication/logical/snapbuild.c:1538 replication/logical/snapbuild.c:1901 +#: replication/slot.c:1164 storage/ipc/dsm.c:326 storage/smgr/md.c:427 #: storage/smgr/md.c:476 storage/smgr/md.c:1394 #, c-format msgid "could not remove file \"%s\": %m" @@ -1042,20 +908,20 @@ msgstr "не удалоÑÑŒ Ñтереть файл \"%s\": %m" #: access/heap/rewriteheap.c:1262 access/transam/timeline.c:111 #: access/transam/timeline.c:236 access/transam/timeline.c:334 -#: access/transam/xlog.c:2990 access/transam/xlog.c:3107 -#: access/transam/xlog.c:3148 access/transam/xlog.c:3421 -#: access/transam/xlog.c:3499 access/transam/xlogutils.c:701 -#: replication/basebackup.c:401 replication/basebackup.c:1162 -#: replication/logical/origin.c:658 replication/logical/reorderbuffer.c:2153 -#: replication/logical/reorderbuffer.c:2396 -#: replication/logical/reorderbuffer.c:3075 +#: access/transam/xlog.c:3025 access/transam/xlog.c:3142 +#: access/transam/xlog.c:3183 access/transam/xlog.c:3456 +#: access/transam/xlog.c:3534 access/transam/xlogutils.c:701 +#: replication/basebackup.c:403 replication/basebackup.c:1150 +#: replication/logical/origin.c:661 replication/logical/reorderbuffer.c:2156 +#: replication/logical/reorderbuffer.c:2403 +#: replication/logical/reorderbuffer.c:3082 #: replication/logical/snapbuild.c:1582 replication/logical/snapbuild.c:1666 -#: replication/slot.c:1162 replication/walsender.c:474 -#: replication/walsender.c:2102 storage/file/copydir.c:155 -#: storage/file/fd.c:607 storage/file/fd.c:2964 storage/file/fd.c:3031 +#: replication/slot.c:1179 replication/walsender.c:479 +#: replication/walsender.c:2144 storage/file/copydir.c:155 +#: storage/file/fd.c:614 storage/file/fd.c:3041 storage/file/fd.c:3108 #: storage/smgr/md.c:609 utils/error/elog.c:1879 utils/init/miscinit.c:1163 -#: utils/init/miscinit.c:1284 utils/init/miscinit.c:1362 utils/misc/guc.c:7107 -#: utils/misc/guc.c:7140 +#: utils/init/miscinit.c:1284 utils/init/miscinit.c:1362 utils/misc/guc.c:7105 +#: utils/misc/guc.c:7138 #, c-format msgid "could not open file \"%s\": %m" msgstr "не удалоÑÑŒ открыть файл \"%s\": %m" @@ -1071,8 +937,8 @@ msgid "index access method \"%s\" does not have a handler" msgstr "Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° доÑтупа индекÑа \"%s\" не задан обработчик" #: access/index/indexam.c:155 catalog/objectaddress.c:1196 -#: commands/indexcmds.c:1799 commands/tablecmds.c:241 -#: commands/tablecmds.c:12033 +#: commands/indexcmds.c:1800 commands/tablecmds.c:242 +#: commands/tablecmds.c:12194 #, c-format msgid "\"%s\" is not an index" msgstr "\"%s\" - Ñто не индекÑ" @@ -1110,7 +976,7 @@ msgstr "" "полнотекÑтовую индекÑацию." #: access/nbtree/nbtpage.c:168 access/nbtree/nbtpage.c:371 -#: access/nbtree/nbtpage.c:458 parser/parse_utilcmd.c:1717 +#: access/nbtree/nbtpage.c:458 parser/parse_utilcmd.c:1703 #, c-format msgid "index \"%s\" is not a btree" msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" не ÑвлÑетÑÑ b-деревом" @@ -1136,172 +1002,52 @@ msgstr "" "Причиной тому могло быть прерывание операции VACUUM в верÑии 9.3 или Ñтарее, " "до обновлениÑ. Этот Ð¸Ð½Ð´ÐµÐºÑ Ð½ÑƒÐ¶Ð½Ð¾ переÑтроить (REINDEX)." -#: access/nbtree/nbtvalidate.c:100 -#, c-format -msgid "" -"btree operator family \"%s\" contains function %s with invalid support " -"number %d" -msgstr "" -"ÑемейÑтво операторов btree \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ опорным " -"номером %d" - -#: access/nbtree/nbtvalidate.c:112 -#, c-format -msgid "" -"btree operator family \"%s\" contains function %s with wrong signature for " -"support number %d" -msgstr "" -"ÑемейÑтво операторов btree \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " -"объÑвлением Ð´Ð»Ñ Ð¾Ð¿Ð¾Ñ€Ð½Ð¾Ð³Ð¾ номера %d" - -#: access/nbtree/nbtvalidate.c:132 -#, c-format -msgid "" -"btree operator family \"%s\" contains operator %s with invalid strategy " -"number %d" -msgstr "" -"ÑемейÑтво операторов btree \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ " -"номером Ñтратегии %d" - -#: access/nbtree/nbtvalidate.c:145 -#, c-format -msgid "" -"btree operator family \"%s\" contains invalid ORDER BY specification for " -"operator %s" -msgstr "" -"ÑемейÑтво операторов btree \"%s\" Ñодержит некорректное определение ORDER BY " -"Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° %s" - -#: access/nbtree/nbtvalidate.c:158 -#, c-format -msgid "btree operator family \"%s\" contains operator %s with wrong signature" -msgstr "" -"ÑемейÑтво операторов btree \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " -"объÑвлением" - -#: access/nbtree/nbtvalidate.c:200 -#, c-format -msgid "btree operator family \"%s\" is missing operator(s) for types %s and %s" -msgstr "" -"в ÑемейÑтве операторов btree \"%s\" нет оператора(ов) Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð¾Ð² %s и %s" - #: access/nbtree/nbtvalidate.c:210 #, c-format msgid "" -"btree operator family \"%s\" is missing support function for types %s and %s" +"operator family \"%s\" of access method %s is missing support function for " +"types %s and %s" msgstr "" -"в ÑемейÑтве операторов btree \"%s\" нет опорных функций Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð¾Ð² %s и %s" - -#: access/nbtree/nbtvalidate.c:224 -#, c-format -msgid "btree operator class \"%s\" is missing operator(s)" -msgstr "в клаÑÑе операторов btree \"%s\" нет оператора(ов)" - -#: access/nbtree/nbtvalidate.c:241 -#, c-format -msgid "btree operator family \"%s\" is missing cross-type operator(s)" -msgstr "в ÑемейÑтве операторов btree \"%s\" нет межтипового оператора(ов)" +"в ÑемейÑтве операторов \"%s\" метода доÑтупа %s нет опорной функции Ð´Ð»Ñ " +"типов %s и %s" #: access/spgist/spgutils.c:700 #, c-format msgid "SP-GiST inner tuple size %zu exceeds maximum %zu" msgstr "внутренний размер кортежа SP-GiST (%zu) превышает макÑимум (%zu)" -#: access/spgist/spgvalidate.c:92 -#, c-format -msgid "" -"spgist operator family \"%s\" contains support procedure %s with cross-type " -"registration" -msgstr "" -"ÑемейÑтво операторов spgist \"%s\" Ñодержит опорную процедуру %s Ñ " -"межтиповой региÑтрацией" - -#: access/spgist/spgvalidate.c:115 -#, c-format -msgid "" -"spgist operator family \"%s\" contains function %s with invalid support " -"number %d" -msgstr "" -"ÑемейÑтво операторов spgist \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ " -"опорным номером %d" - -#: access/spgist/spgvalidate.c:127 -#, c-format -msgid "" -"spgist operator family \"%s\" contains function %s with wrong signature for " -"support number %d" -msgstr "" -"ÑемейÑтво операторов spgist \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " -"объÑвлением Ð´Ð»Ñ Ð¾Ð¿Ð¾Ñ€Ð½Ð¾Ð³Ð¾ номера %d" - -#: access/spgist/spgvalidate.c:146 -#, c-format -msgid "" -"spgist operator family \"%s\" contains operator %s with invalid strategy " -"number %d" -msgstr "" -"ÑемейÑтво операторов spgist \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ " -"номером Ñтратегии %d" - -#: access/spgist/spgvalidate.c:159 -#, c-format -msgid "" -"spgist operator family \"%s\" contains invalid ORDER BY specification for " -"operator %s" -msgstr "" -"ÑемейÑтво операторов spgist \"%s\" Ñодержит некорректное определение ORDER " -"BY Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° %s" - -#: access/spgist/spgvalidate.c:172 -#, c-format -msgid "spgist operator family \"%s\" contains operator %s with wrong signature" -msgstr "" -"ÑемейÑтво операторов spgist \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " -"объÑвлением" - -#: access/spgist/spgvalidate.c:200 -#, c-format -msgid "" -"spgist operator family \"%s\" is missing operator(s) for types %s and %s" -msgstr "" -"в ÑемейÑтве операторов spgist \"%s\" нет оператора(ов) Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð¾Ð² %s и %s" - #: access/spgist/spgvalidate.c:220 #, c-format msgid "" -"spgist operator family \"%s\" is missing support function %d for type %s" +"operator family \"%s\" of access method %s is missing support function %d " +"for type %s" msgstr "" -"в ÑемейÑтве операторов spgist \"%s\" отÑутÑтвует Ð¾Ð¿Ð¾Ñ€Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %d Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° " -"%s" - -#: access/spgist/spgvalidate.c:233 -#, c-format -msgid "spgist operator class \"%s\" is missing operator(s)" -msgstr "в клаÑÑе операторов spgist \"%s\" нет оператора(ов)" +"в ÑемейÑтве операторов \"%s\" метода доÑтупа %s нет опорной функции %d Ð´Ð»Ñ " +"типа %s" #: access/tablesample/bernoulli.c:152 access/tablesample/system.c:156 #, c-format msgid "sample percentage must be between 0 and 100" msgstr "процент выборки должен задаватьÑÑ Ñ‡Ð¸Ñлом от 0 до 100" -#: access/transam/commit_ts.c:295 +#: access/transam/commit_ts.c:294 #, c-format msgid "cannot retrieve commit timestamp for transaction %u" msgstr "не удалоÑÑŒ получить метку времени фикÑации транзакции %u" -#: access/transam/commit_ts.c:385 +#: access/transam/commit_ts.c:392 #, c-format msgid "could not get commit timestamp data" msgstr "не удалоÑÑŒ получить отметку времени фикÑации" -#: access/transam/commit_ts.c:387 +#: access/transam/commit_ts.c:394 #, c-format msgid "" "Make sure the configuration parameter \"%s\" is set on the master server." msgstr "" "УбедитеÑÑŒ, что в конфигурации главного Ñервера уÑтановлен параметр \"%s\"." -#: access/transam/commit_ts.c:389 libpq/hba.c:1439 +#: access/transam/commit_ts.c:396 libpq/hba.c:1439 #, c-format msgid "Make sure the configuration parameter \"%s\" is set." msgstr "УбедитеÑÑŒ, что в конфигурации уÑтановлен параметр \"%s\"." @@ -1504,78 +1250,78 @@ msgstr "" msgid "invalid MultiXactId: %u" msgstr "неверный MultiXactId: %u" -#: access/transam/parallel.c:589 +#: access/transam/parallel.c:610 #, c-format msgid "postmaster exited during a parallel transaction" msgstr "postmaster завершилÑÑ Ð² процеÑÑе параллельной транзакции" -#: access/transam/parallel.c:774 +#: access/transam/parallel.c:799 #, c-format msgid "lost connection to parallel worker" msgstr "потерÑно подключение к параллельному иÑполнителю" -#: access/transam/parallel.c:833 access/transam/parallel.c:835 +#: access/transam/parallel.c:858 access/transam/parallel.c:860 msgid "parallel worker" msgstr "параллельный иÑполнитель" -#: access/transam/parallel.c:974 +#: access/transam/parallel.c:1001 #, c-format msgid "could not map dynamic shared memory segment" msgstr "не удалоÑÑŒ отобразить динамичеÑкий Ñегмент разделÑемой памÑти" -#: access/transam/parallel.c:979 +#: access/transam/parallel.c:1006 #, c-format msgid "invalid magic number in dynamic shared memory segment" msgstr "неверное магичеÑкое чиÑло в динамичеÑком Ñегменте разделÑемой памÑти" -#: access/transam/slru.c:665 +#: access/transam/slru.c:669 #, c-format msgid "file \"%s\" doesn't exist, reading as zeroes" msgstr "файл \"%s\" не ÑущеÑтвует, ÑчитаетÑÑ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼" -#: access/transam/slru.c:895 access/transam/slru.c:901 -#: access/transam/slru.c:908 access/transam/slru.c:915 -#: access/transam/slru.c:922 access/transam/slru.c:929 +#: access/transam/slru.c:899 access/transam/slru.c:905 +#: access/transam/slru.c:912 access/transam/slru.c:919 +#: access/transam/slru.c:926 access/transam/slru.c:933 #, c-format msgid "could not access status of transaction %u" msgstr "не удалоÑÑŒ получить ÑоÑтоÑние транзакции %u" -#: access/transam/slru.c:896 +#: access/transam/slru.c:900 #, c-format msgid "Could not open file \"%s\": %m." msgstr "Ðе удалоÑÑŒ открыть файл \"%s\": %m." -#: access/transam/slru.c:902 +#: access/transam/slru.c:906 #, c-format msgid "Could not seek in file \"%s\" to offset %u: %m." msgstr "Ðе удалоÑÑŒ перемеÑтитьÑÑ Ð² файле \"%s\" к Ñмещению %u: %m." -#: access/transam/slru.c:909 +#: access/transam/slru.c:913 #, c-format msgid "Could not read from file \"%s\" at offset %u: %m." msgstr "Ðе удалоÑÑŒ прочитать файл \"%s\" (по Ñмещению %u): %m." -#: access/transam/slru.c:916 +#: access/transam/slru.c:920 #, c-format msgid "Could not write to file \"%s\" at offset %u: %m." msgstr "Ðе удалоÑÑŒ запиÑать в файл \"%s\" (по Ñмещению %u): %m." -#: access/transam/slru.c:923 +#: access/transam/slru.c:927 #, c-format msgid "Could not fsync file \"%s\": %m." msgstr "Ðе удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ файл \"%s\": %m." -#: access/transam/slru.c:930 +#: access/transam/slru.c:934 #, c-format msgid "Could not close file \"%s\": %m." msgstr "Ðе удалоÑÑŒ закрыть файл \"%s\": %m." -#: access/transam/slru.c:1185 +#: access/transam/slru.c:1189 #, c-format msgid "could not truncate directory \"%s\": apparent wraparound" msgstr "не удалоÑÑŒ очиÑтить каталог \"%s\": видимо, произошло наложение" -#: access/transam/slru.c:1240 access/transam/slru.c:1296 +#: access/transam/slru.c:1244 access/transam/slru.c:1300 #, c-format msgid "removing file \"%s\"" msgstr "удалÑетÑÑ Ñ„Ð°Ð¹Ð» \"%s\"" @@ -1617,8 +1363,8 @@ msgstr "" "Идентификаторы линий времени должны быть меньше идентификатора линии-потомка." #: access/transam/timeline.c:412 access/transam/timeline.c:488 -#: access/transam/xlog.c:3064 access/transam/xlog.c:3225 -#: access/transam/xlogfuncs.c:690 commands/copy.c:1669 +#: access/transam/xlog.c:3099 access/transam/xlog.c:3260 +#: access/transam/xlogfuncs.c:685 commands/copy.c:1709 #: storage/file/copydir.c:201 #, c-format msgid "could not close file \"%s\": %m" @@ -1659,29 +1405,29 @@ msgstr "доÑтигнут предел чиÑла подготовленных msgid "Increase max_prepared_transactions (currently %d)." msgstr "Увеличьте параметр max_prepared_transactions (текущее значение %d)." -#: access/transam/twophase.c:539 +#: access/transam/twophase.c:540 #, c-format msgid "prepared transaction with identifier \"%s\" is busy" msgstr "Ð¿Ð¾Ð´Ð³Ð¾Ñ‚Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð¾Ð¼ \"%s\" занÑта" -#: access/transam/twophase.c:545 +#: access/transam/twophase.c:546 #, c-format msgid "permission denied to finish prepared transaction" -msgstr "нет доÑтупа Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ð³Ð¾Ñ‚Ð¾Ð²Ð»ÐµÐ½Ð½Ð¾Ð¹ транзакции " +msgstr "нет доÑтупа Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ð³Ð¾Ñ‚Ð¾Ð²Ð»ÐµÐ½Ð½Ð¾Ð¹ транзакции" -#: access/transam/twophase.c:546 +#: access/transam/twophase.c:547 #, c-format msgid "Must be superuser or the user that prepared the transaction." msgstr "" "Это разрешено только Ñуперпользователю и пользователю, подготовившему " "транзакцию." -#: access/transam/twophase.c:557 +#: access/transam/twophase.c:558 #, c-format msgid "prepared transaction belongs to another database" msgstr "Ð¿Ð¾Ð´Ð³Ð¾Ñ‚Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð¾Ñ‚Ð½Ð¾ÑитÑÑ Ðº другой базе данных" -#: access/transam/twophase.c:558 +#: access/transam/twophase.c:559 #, c-format msgid "" "Connect to the database where the transaction was prepared to finish it." @@ -1690,74 +1436,74 @@ msgstr "" "подготовлена." # [SM]: TO REVIEW -#: access/transam/twophase.c:573 +#: access/transam/twophase.c:574 #, c-format msgid "prepared transaction with identifier \"%s\" does not exist" msgstr "подготовленной транзакции Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð¾Ð¼ \"%s\" нет" -#: access/transam/twophase.c:1042 +#: access/transam/twophase.c:1043 #, c-format msgid "two-phase state file maximum length exceeded" msgstr "превышен предельный размер файла ÑоÑтоÑÐ½Ð¸Ñ 2PC" -#: access/transam/twophase.c:1160 +#: access/transam/twophase.c:1161 #, c-format msgid "could not open two-phase state file \"%s\": %m" msgstr "не удалоÑÑŒ открыть файл ÑоÑтоÑÐ½Ð¸Ñ 2PC \"%s\": %m" -#: access/transam/twophase.c:1177 +#: access/transam/twophase.c:1178 #, c-format msgid "could not stat two-phase state file \"%s\": %m" msgstr "не удалоÑÑŒ получить информацию о файле ÑоÑтоÑÐ½Ð¸Ñ 2PC \"%s\": %m" -#: access/transam/twophase.c:1209 +#: access/transam/twophase.c:1210 #, c-format msgid "could not read two-phase state file \"%s\": %m" msgstr "не удалоÑÑŒ прочитать файл ÑоÑтоÑÐ½Ð¸Ñ 2PC \"%s\": %m" -#: access/transam/twophase.c:1262 access/transam/xlog.c:6080 +#: access/transam/twophase.c:1263 access/transam/xlog.c:6115 #, c-format msgid "Failed while allocating an XLog reading processor." msgstr "Ðе удалоÑÑŒ размеÑтить обработчик журнала транзакций." -#: access/transam/twophase.c:1268 +#: access/transam/twophase.c:1269 #, c-format msgid "could not read two-phase state from xlog at %X/%X" msgstr "не удалоÑÑŒ прочитать ÑоÑтоÑние 2PC из xlog в позиции %X/%X" -#: access/transam/twophase.c:1276 +#: access/transam/twophase.c:1277 #, c-format msgid "expected two-phase state data is not present in xlog at %X/%X" msgstr "" "ожидаемые данные ÑоÑтоÑÐ½Ð¸Ñ Ð´Ð²ÑƒÑ…Ñ„Ð°Ð·Ð½Ð¾Ð¹ фикÑации отÑутÑтвуют в xlog в позиции " "%X/%X" -#: access/transam/twophase.c:1511 +#: access/transam/twophase.c:1512 #, c-format msgid "could not remove two-phase state file \"%s\": %m" msgstr "не удалоÑÑŒ Ñтереть файл ÑоÑтоÑÐ½Ð¸Ñ 2PC \"%s\": %m" -#: access/transam/twophase.c:1541 +#: access/transam/twophase.c:1542 #, c-format msgid "could not recreate two-phase state file \"%s\": %m" msgstr "не удалоÑÑŒ переÑоздать файл ÑоÑтоÑÐ½Ð¸Ñ 2PC \"%s\": %m" -#: access/transam/twophase.c:1550 access/transam/twophase.c:1557 +#: access/transam/twophase.c:1551 access/transam/twophase.c:1558 #, c-format msgid "could not write two-phase state file: %m" msgstr "не удалоÑÑŒ запиÑать в файл ÑоÑтоÑÐ½Ð¸Ñ 2PC: %m" -#: access/transam/twophase.c:1569 +#: access/transam/twophase.c:1570 #, c-format msgid "could not fsync two-phase state file: %m" msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ файл ÑоÑтоÑÐ½Ð¸Ñ 2PC: %m" -#: access/transam/twophase.c:1575 +#: access/transam/twophase.c:1576 #, c-format msgid "could not close two-phase state file: %m" msgstr "не удалоÑÑŒ закрыть файл ÑоÑтоÑÐ½Ð¸Ñ 2PC: %m" -#: access/transam/twophase.c:1648 +#: access/transam/twophase.c:1649 #, c-format msgid "" "%u two-phase state file was written for long-running prepared transactions" @@ -1770,24 +1516,24 @@ msgstr[1] "" msgstr[2] "" "Ð´Ð»Ñ Ð´Ð»Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… подготовленных транзакций запиÑано файлов ÑоÑтоÑÐ½Ð¸Ñ 2PC: %u" -#: access/transam/twophase.c:1712 +#: access/transam/twophase.c:1713 #, c-format msgid "removing future two-phase state file \"%s\"" msgstr "удаление будущего файла ÑоÑтоÑÐ½Ð¸Ñ 2PC \"%s\"" -#: access/transam/twophase.c:1728 access/transam/twophase.c:1739 -#: access/transam/twophase.c:1859 access/transam/twophase.c:1870 -#: access/transam/twophase.c:1947 +#: access/transam/twophase.c:1729 access/transam/twophase.c:1740 +#: access/transam/twophase.c:1860 access/transam/twophase.c:1871 +#: access/transam/twophase.c:1948 #, c-format msgid "removing corrupt two-phase state file \"%s\"" msgstr "удаление иÑпорченного файла ÑоÑтоÑÐ½Ð¸Ñ 2PC \"%s\"" -#: access/transam/twophase.c:1848 access/transam/twophase.c:1936 +#: access/transam/twophase.c:1849 access/transam/twophase.c:1937 #, c-format msgid "removing stale two-phase state file \"%s\"" msgstr "удаление уÑтаревшего файла ÑоÑтоÑÐ½Ð¸Ñ 2PC \"%s\"" -#: access/transam/twophase.c:1954 +#: access/transam/twophase.c:1955 #, c-format msgid "recovering prepared transaction %u" msgstr "воÑÑтановление подготовленной транзакции %u" @@ -1850,31 +1596,31 @@ msgstr "в одной транзакции не может быть больше msgid "maximum number of committed subtransactions (%d) exceeded" msgstr "превышен предел чиÑла зафикÑированных подтранзакций (%d)" -#: access/transam/xact.c:2263 +#: access/transam/xact.c:2260 #, c-format msgid "cannot PREPARE a transaction that has operated on temporary tables" msgstr "" -"выполнить PREPARE Ð´Ð»Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸, оперирующей Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ð¼Ð¸ таблицами, нельзÑ" +"Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ PREPARE Ð´Ð»Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸, оперирующей Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ð¼Ð¸ таблицами" -#: access/transam/xact.c:2273 +#: access/transam/xact.c:2270 #, c-format msgid "cannot PREPARE a transaction that has exported snapshots" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ PREPARE Ð´Ð»Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸, Ñнимки которой ÑкÑпортированы" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3155 +#: access/transam/xact.c:3148 #, c-format msgid "%s cannot run inside a transaction block" msgstr "%s не может выполнÑтьÑÑ Ð²Ð½ÑƒÑ‚Ñ€Ð¸ блока транзакции" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3165 +#: access/transam/xact.c:3158 #, c-format msgid "%s cannot run inside a subtransaction" msgstr "%s не может выполнÑтьÑÑ Ð²Ð½ÑƒÑ‚Ñ€Ð¸ подтранзакции" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3175 +#: access/transam/xact.c:3168 #, c-format msgid "%s cannot be executed from a function or multi-command string" msgstr "" @@ -1882,162 +1628,162 @@ msgstr "" "команд" #. translator: %s represents an SQL statement name -#: access/transam/xact.c:3246 +#: access/transam/xact.c:3239 #, c-format msgid "%s can only be used in transaction blocks" msgstr "%s может выполнÑтьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ внутри блоков транзакций" -#: access/transam/xact.c:3430 +#: access/transam/xact.c:3423 #, c-format msgid "there is already a transaction in progress" msgstr "Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ ÑƒÐ¶Ðµ выполнÑетÑÑ" -#: access/transam/xact.c:3598 access/transam/xact.c:3701 +#: access/transam/xact.c:3591 access/transam/xact.c:3694 #, c-format msgid "there is no transaction in progress" msgstr "нет незавершённой транзакции" -#: access/transam/xact.c:3609 +#: access/transam/xact.c:3602 #, c-format msgid "cannot commit during a parallel operation" msgstr "фикÑировать транзакции во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð°Ñ€Ð°Ð»Ð»ÐµÐ»ÑŒÐ½Ñ‹Ñ… операций нельзÑ" -#: access/transam/xact.c:3712 +#: access/transam/xact.c:3705 #, c-format msgid "cannot abort during a parallel operation" msgstr "прерывание во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð°Ñ€Ð°Ð»Ð»ÐµÐ»ÑŒÐ½Ñ‹Ñ… операций невозможно" -#: access/transam/xact.c:3754 +#: access/transam/xact.c:3747 #, c-format msgid "cannot define savepoints during a parallel operation" msgstr "определÑть точки ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð°Ñ€Ð°Ð»Ð»ÐµÐ»ÑŒÐ½Ñ‹Ñ… операций нельзÑ" -#: access/transam/xact.c:3821 +#: access/transam/xact.c:3814 #, c-format msgid "cannot release savepoints during a parallel operation" msgstr "выÑвобождать точки ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð°Ñ€Ð°Ð»Ð»ÐµÐ»ÑŒÐ½Ñ‹Ñ… операций нельзÑ" -#: access/transam/xact.c:3832 access/transam/xact.c:3884 -#: access/transam/xact.c:3890 access/transam/xact.c:3946 -#: access/transam/xact.c:3996 access/transam/xact.c:4002 +#: access/transam/xact.c:3825 access/transam/xact.c:3877 +#: access/transam/xact.c:3883 access/transam/xact.c:3939 +#: access/transam/xact.c:3989 access/transam/xact.c:3995 #, c-format msgid "no such savepoint" msgstr "нет такой точки ÑохранениÑ" -#: access/transam/xact.c:3934 +#: access/transam/xact.c:3927 #, c-format msgid "cannot rollback to savepoints during a parallel operation" msgstr "откатитьÑÑ Ðº точке ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð°Ñ€Ð°Ð»Ð»ÐµÐ»ÑŒÐ½Ñ‹Ñ… операций нельзÑ" -#: access/transam/xact.c:4062 +#: access/transam/xact.c:4055 #, c-format msgid "cannot start subtransactions during a parallel operation" msgstr "запуÑкать подтранзакции во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð°Ñ€Ð°Ð»Ð»ÐµÐ»ÑŒÐ½Ñ‹Ñ… операций нельзÑ" -#: access/transam/xact.c:4129 +#: access/transam/xact.c:4122 #, c-format msgid "cannot commit subtransactions during a parallel operation" msgstr "фикÑировать подтранзакции во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð°Ñ€Ð°Ð»Ð»ÐµÐ»ÑŒÐ½Ñ‹Ñ… операций нельзÑ" -#: access/transam/xact.c:4737 +#: access/transam/xact.c:4751 #, c-format msgid "cannot have more than 2^32-1 subtransactions in a transaction" msgstr "в одной транзакции не может быть больше 2^32-1 подтранзакций" -#: access/transam/xlog.c:2270 +#: access/transam/xlog.c:2305 #, c-format msgid "could not seek in log file %s to offset %u: %m" msgstr "не удалоÑÑŒ перемеÑтитьÑÑ Ð² файле журнала %s к Ñмещению %u: %m" -#: access/transam/xlog.c:2290 +#: access/transam/xlog.c:2325 #, c-format msgid "could not write to log file %s at offset %u, length %zu: %m" msgstr "не удалоÑÑŒ запиÑать в файл журнала %s (Ñмещение: %u, длина: %zu): %m" -#: access/transam/xlog.c:2553 +#: access/transam/xlog.c:2588 #, c-format msgid "updated min recovery point to %X/%X on timeline %u" msgstr "Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð° на %X/%X на линии времени %u" -#: access/transam/xlog.c:3195 +#: access/transam/xlog.c:3230 #, c-format msgid "not enough data in file \"%s\"" msgstr "недоÑтаточно данных в файле\"%s\"" -#: access/transam/xlog.c:3336 +#: access/transam/xlog.c:3371 #, c-format msgid "could not open transaction log file \"%s\": %m" msgstr "не удалоÑÑŒ открыть файл журнала транзакций \"%s\": %m" -#: access/transam/xlog.c:3525 access/transam/xlog.c:5310 +#: access/transam/xlog.c:3560 access/transam/xlog.c:5345 #, c-format msgid "could not close log file %s: %m" msgstr "не удалоÑÑŒ закрыть файл журнала \"%s\": %m" -#: access/transam/xlog.c:3582 access/transam/xlogutils.c:696 -#: replication/walsender.c:2097 +#: access/transam/xlog.c:3617 access/transam/xlogutils.c:696 +#: replication/walsender.c:2139 #, c-format msgid "requested WAL segment %s has already been removed" msgstr "запрошенный Ñегмент WAL %s уже удалён" -#: access/transam/xlog.c:3642 access/transam/xlog.c:3717 -#: access/transam/xlog.c:3915 +#: access/transam/xlog.c:3677 access/transam/xlog.c:3752 +#: access/transam/xlog.c:3950 #, c-format msgid "could not open transaction log directory \"%s\": %m" msgstr "не удалоÑÑŒ открыть каталог журнала транзакций \"%s\": %m" -#: access/transam/xlog.c:3798 +#: access/transam/xlog.c:3833 #, c-format msgid "recycled transaction log file \"%s\"" msgstr "файл журнала транзакций \"%s\" иÑпользуетÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾" -#: access/transam/xlog.c:3810 +#: access/transam/xlog.c:3845 #, c-format msgid "removing transaction log file \"%s\"" msgstr "файл журнала транзакций \"%s\" удалÑетÑÑ" -#: access/transam/xlog.c:3830 +#: access/transam/xlog.c:3865 #, c-format msgid "could not rename old transaction log file \"%s\": %m" msgstr "не удалоÑÑŒ переименовать Ñтарый файл журнала транзакций \"%s\": %m" -#: access/transam/xlog.c:3842 +#: access/transam/xlog.c:3877 #, c-format msgid "could not remove old transaction log file \"%s\": %m" msgstr "не удалоÑÑŒ Ñтереть Ñтарый файл журнала транзакций \"%s\": %m" -#: access/transam/xlog.c:3875 access/transam/xlog.c:3885 +#: access/transam/xlog.c:3910 access/transam/xlog.c:3920 #, c-format msgid "required WAL directory \"%s\" does not exist" msgstr "требуемый каталог WAL \"%s\" не ÑущеÑтвует" -#: access/transam/xlog.c:3891 +#: access/transam/xlog.c:3926 #, c-format msgid "creating missing WAL directory \"%s\"" msgstr "ÑоздаётÑÑ Ð¾Ñ‚ÑутÑтвующий каталог WAL \"%s\"" -#: access/transam/xlog.c:3894 +#: access/transam/xlog.c:3929 #, c-format msgid "could not create missing directory \"%s\": %m" msgstr "не удалоÑÑŒ Ñоздать отÑутÑтвующий каталог \"%s\": %m" -#: access/transam/xlog.c:3925 +#: access/transam/xlog.c:3960 #, c-format msgid "removing transaction log backup history file \"%s\"" msgstr "удалÑетÑÑ Ñ„Ð°Ð¹Ð» иÑтории ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ð°: \"%s\"" -#: access/transam/xlog.c:4006 +#: access/transam/xlog.c:4041 #, c-format msgid "unexpected timeline ID %u in log segment %s, offset %u" msgstr "неожиданный ID линии времени %u в Ñегменте журнала %s, Ñмещение %u" -#: access/transam/xlog.c:4128 +#: access/transam/xlog.c:4163 #, c-format msgid "new timeline %u is not a child of database system timeline %u" msgstr "" "Ð½Ð¾Ð²Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ %u не ÑвлÑетÑÑ Ð¾Ñ‚Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ линии времени ÑиÑтемы БД %u" -#: access/transam/xlog.c:4142 +#: access/transam/xlog.c:4177 #, c-format msgid "" "new timeline %u forked off current database system timeline %u before " @@ -2046,56 +1792,56 @@ msgstr "" "Ð½Ð¾Ð²Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ %u ответвилаÑÑŒ от текущей линии времени базы данных %u " "до текущей точки воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ %X/%X" -#: access/transam/xlog.c:4161 +#: access/transam/xlog.c:4196 #, c-format msgid "new target timeline is %u" msgstr "Ð½Ð¾Ð²Ð°Ñ Ñ†ÐµÐ»ÐµÐ²Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ %u" -#: access/transam/xlog.c:4241 +#: access/transam/xlog.c:4276 #, c-format msgid "could not create control file \"%s\": %m" msgstr "не удалоÑÑŒ Ñоздать файл \"%s\": %m" -#: access/transam/xlog.c:4252 access/transam/xlog.c:4488 +#: access/transam/xlog.c:4287 access/transam/xlog.c:4523 #, c-format msgid "could not write to control file: %m" msgstr "не удалоÑÑŒ запиÑать в файл pg_control: %m" -#: access/transam/xlog.c:4258 access/transam/xlog.c:4494 +#: access/transam/xlog.c:4293 access/transam/xlog.c:4529 #, c-format msgid "could not fsync control file: %m" msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ файл pg_control: %m" -#: access/transam/xlog.c:4263 access/transam/xlog.c:4499 +#: access/transam/xlog.c:4298 access/transam/xlog.c:4534 #, c-format msgid "could not close control file: %m" msgstr "не удалоÑÑŒ закрыть файл pg_control: %m" -#: access/transam/xlog.c:4281 access/transam/xlog.c:4477 +#: access/transam/xlog.c:4316 access/transam/xlog.c:4512 #, c-format msgid "could not open control file \"%s\": %m" msgstr "не удалоÑÑŒ открыть файл \"%s\": %m" -#: access/transam/xlog.c:4287 +#: access/transam/xlog.c:4322 #, c-format msgid "could not read from control file: %m" msgstr "не удалоÑÑŒ прочитать файл pg_control: %m" -#: access/transam/xlog.c:4300 access/transam/xlog.c:4309 -#: access/transam/xlog.c:4333 access/transam/xlog.c:4340 -#: access/transam/xlog.c:4347 access/transam/xlog.c:4352 -#: access/transam/xlog.c:4359 access/transam/xlog.c:4366 -#: access/transam/xlog.c:4373 access/transam/xlog.c:4380 -#: access/transam/xlog.c:4387 access/transam/xlog.c:4394 -#: access/transam/xlog.c:4401 access/transam/xlog.c:4410 -#: access/transam/xlog.c:4417 access/transam/xlog.c:4426 -#: access/transam/xlog.c:4433 access/transam/xlog.c:4442 -#: access/transam/xlog.c:4449 utils/init/miscinit.c:1380 +#: access/transam/xlog.c:4335 access/transam/xlog.c:4344 +#: access/transam/xlog.c:4368 access/transam/xlog.c:4375 +#: access/transam/xlog.c:4382 access/transam/xlog.c:4387 +#: access/transam/xlog.c:4394 access/transam/xlog.c:4401 +#: access/transam/xlog.c:4408 access/transam/xlog.c:4415 +#: access/transam/xlog.c:4422 access/transam/xlog.c:4429 +#: access/transam/xlog.c:4436 access/transam/xlog.c:4445 +#: access/transam/xlog.c:4452 access/transam/xlog.c:4461 +#: access/transam/xlog.c:4468 access/transam/xlog.c:4477 +#: access/transam/xlog.c:4484 utils/init/miscinit.c:1380 #, c-format msgid "database files are incompatible with server" msgstr "файлы базы данных не ÑовмеÑтимы Ñ Ñервером" -#: access/transam/xlog.c:4301 +#: access/transam/xlog.c:4336 #, c-format msgid "" "The database cluster was initialized with PG_CONTROL_VERSION %d (0x%08x), " @@ -2104,7 +1850,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ PG_CONTROL_VERSION %d (0x%08x), но " "Ñервер Ñкомпилирован Ñ PG_CONTROL_VERSION %d (0x%08x)." -#: access/transam/xlog.c:4305 +#: access/transam/xlog.c:4340 #, c-format msgid "" "This could be a problem of mismatched byte ordering. It looks like you need " @@ -2113,7 +1859,7 @@ msgstr "" "Возможно, проблема вызвана разным порÑдком байт. КажетÑÑ, вам надо выполнить " "initdb." -#: access/transam/xlog.c:4310 +#: access/transam/xlog.c:4345 #, c-format msgid "" "The database cluster was initialized with PG_CONTROL_VERSION %d, but the " @@ -2122,18 +1868,18 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ PG_CONTROL_VERSION %d, но Ñервер " "Ñкомпилирован Ñ PG_CONTROL_VERSION %d." -#: access/transam/xlog.c:4313 access/transam/xlog.c:4337 -#: access/transam/xlog.c:4344 access/transam/xlog.c:4349 +#: access/transam/xlog.c:4348 access/transam/xlog.c:4372 +#: access/transam/xlog.c:4379 access/transam/xlog.c:4384 #, c-format msgid "It looks like you need to initdb." msgstr "КажетÑÑ, вам надо выполнить initdb." -#: access/transam/xlog.c:4324 +#: access/transam/xlog.c:4359 #, c-format msgid "incorrect checksum in control file" msgstr "ошибка контрольной Ñуммы в файле pg_control" -#: access/transam/xlog.c:4334 +#: access/transam/xlog.c:4369 #, c-format msgid "" "The database cluster was initialized with CATALOG_VERSION_NO %d, but the " @@ -2142,7 +1888,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ CATALOG_VERSION_NO %d, но Ñервер " "Ñкомпилирован Ñ CATALOG_VERSION_NO %d." -#: access/transam/xlog.c:4341 +#: access/transam/xlog.c:4376 #, c-format msgid "" "The database cluster was initialized with MAXALIGN %d, but the server was " @@ -2151,7 +1897,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ MAXALIGN %d, но Ñервер " "Ñкомпилирован Ñ MAXALIGN %d." -#: access/transam/xlog.c:4348 +#: access/transam/xlog.c:4383 #, c-format msgid "" "The database cluster appears to use a different floating-point number format " @@ -2160,7 +1906,7 @@ msgstr "" "КажетÑÑ, в клаÑтере баз данных и в программе Ñервера иÑпользуютÑÑ Ñ€Ð°Ð·Ð½Ñ‹Ðµ " "форматы чиÑел Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой." -#: access/transam/xlog.c:4353 +#: access/transam/xlog.c:4388 #, c-format msgid "" "The database cluster was initialized with BLCKSZ %d, but the server was " @@ -2169,18 +1915,18 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ BLCKSZ %d, но Ñервер Ñкомпилирован " "Ñ BLCKSZ %d." -#: access/transam/xlog.c:4356 access/transam/xlog.c:4363 -#: access/transam/xlog.c:4370 access/transam/xlog.c:4377 -#: access/transam/xlog.c:4384 access/transam/xlog.c:4391 -#: access/transam/xlog.c:4398 access/transam/xlog.c:4405 -#: access/transam/xlog.c:4413 access/transam/xlog.c:4420 -#: access/transam/xlog.c:4429 access/transam/xlog.c:4436 -#: access/transam/xlog.c:4445 access/transam/xlog.c:4452 +#: access/transam/xlog.c:4391 access/transam/xlog.c:4398 +#: access/transam/xlog.c:4405 access/transam/xlog.c:4412 +#: access/transam/xlog.c:4419 access/transam/xlog.c:4426 +#: access/transam/xlog.c:4433 access/transam/xlog.c:4440 +#: access/transam/xlog.c:4448 access/transam/xlog.c:4455 +#: access/transam/xlog.c:4464 access/transam/xlog.c:4471 +#: access/transam/xlog.c:4480 access/transam/xlog.c:4487 #, c-format msgid "It looks like you need to recompile or initdb." msgstr "КажетÑÑ, вам надо перекомпилировать Ñервер или выполнить initdb." -#: access/transam/xlog.c:4360 +#: access/transam/xlog.c:4395 #, c-format msgid "" "The database cluster was initialized with RELSEG_SIZE %d, but the server was " @@ -2189,7 +1935,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ RELSEG_SIZE %d, но Ñервер " "Ñкомпилирован Ñ RELSEG_SIZE %d." -#: access/transam/xlog.c:4367 +#: access/transam/xlog.c:4402 #, c-format msgid "" "The database cluster was initialized with XLOG_BLCKSZ %d, but the server was " @@ -2198,7 +1944,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ XLOG_BLCKSZ %d, но Ñервер " "Ñкомпилирован Ñ XLOG_BLCKSZ %d." -#: access/transam/xlog.c:4374 +#: access/transam/xlog.c:4409 #, c-format msgid "" "The database cluster was initialized with XLOG_SEG_SIZE %d, but the server " @@ -2207,7 +1953,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ XLOG_SEG_SIZE %d, но Ñервер " "Ñкомпилирован Ñ XLOG_SEG_SIZE %d." -#: access/transam/xlog.c:4381 +#: access/transam/xlog.c:4416 #, c-format msgid "" "The database cluster was initialized with NAMEDATALEN %d, but the server was " @@ -2216,7 +1962,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ NAMEDATALEN %d, но Ñервер " "Ñкомпилирован Ñ NAMEDATALEN %d." -#: access/transam/xlog.c:4388 +#: access/transam/xlog.c:4423 #, c-format msgid "" "The database cluster was initialized with INDEX_MAX_KEYS %d, but the server " @@ -2225,7 +1971,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ INDEX_MAX_KEYS %d, но Ñервер " "Ñкомпилирован Ñ INDEX_MAX_KEYS %d." -#: access/transam/xlog.c:4395 +#: access/transam/xlog.c:4430 #, c-format msgid "" "The database cluster was initialized with TOAST_MAX_CHUNK_SIZE %d, but the " @@ -2234,7 +1980,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ TOAST_MAX_CHUNK_SIZE %d, но Ñервер " "Ñкомпилирован Ñ TOAST_MAX_CHUNK_SIZE %d." -#: access/transam/xlog.c:4402 +#: access/transam/xlog.c:4437 #, c-format msgid "" "The database cluster was initialized with LOBLKSIZE %d, but the server was " @@ -2243,7 +1989,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ LOBLKSIZE %d, но Ñервер " "Ñкомпилирован Ñ LOBLKSIZE %d." -#: access/transam/xlog.c:4411 +#: access/transam/xlog.c:4446 #, c-format msgid "" "The database cluster was initialized without HAVE_INT64_TIMESTAMP but the " @@ -2252,7 +1998,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован без HAVE_INT64_TIMESTAMP, но Ñервер " "Ñкомпилирован Ñ HAVE_INT64_TIMESTAMP." -#: access/transam/xlog.c:4418 +#: access/transam/xlog.c:4453 #, c-format msgid "" "The database cluster was initialized with HAVE_INT64_TIMESTAMP but the " @@ -2261,7 +2007,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ HAVE_INT64_TIMESTAMP, но Ñервер " "Ñкомпилирован без HAVE_INT64_TIMESTAMP." -#: access/transam/xlog.c:4427 +#: access/transam/xlog.c:4462 #, c-format msgid "" "The database cluster was initialized without USE_FLOAT4_BYVAL but the server " @@ -2270,7 +2016,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован без USE_FLOAT4_BYVAL, но Ñервер " "Ñкомпилирован Ñ USE_FLOAT4_BYVAL." -#: access/transam/xlog.c:4434 +#: access/transam/xlog.c:4469 #, c-format msgid "" "The database cluster was initialized with USE_FLOAT4_BYVAL but the server " @@ -2279,7 +2025,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ USE_FLOAT4_BYVAL, но Ñервер " "Ñкомпилирован без USE_FLOAT4_BYVAL." -#: access/transam/xlog.c:4443 +#: access/transam/xlog.c:4478 #, c-format msgid "" "The database cluster was initialized without USE_FLOAT8_BYVAL but the server " @@ -2288,7 +2034,7 @@ msgstr "" "КлаÑтер баз данных был инициализирован без USE_FLOAT8_BYVAL, но Ñервер " "Ñкомпилирован Ñ USE_FLOAT8_BYVAL." -#: access/transam/xlog.c:4450 +#: access/transam/xlog.c:4485 #, c-format msgid "" "The database cluster was initialized with USE_FLOAT8_BYVAL but the server " @@ -2297,86 +2043,86 @@ msgstr "" "КлаÑтер баз данных был инициализирован Ñ USE_FLOAT8_BYVAL, но Ñервер был " "Ñкомпилирован без USE_FLOAT8_BYVAL." -#: access/transam/xlog.c:4871 +#: access/transam/xlog.c:4906 #, c-format msgid "could not write bootstrap transaction log file: %m" msgstr "не удалоÑÑŒ запиÑать начальный файл журнала транзакций: %m" -#: access/transam/xlog.c:4877 +#: access/transam/xlog.c:4912 #, c-format msgid "could not fsync bootstrap transaction log file: %m" -msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ начальный файл журнала транзакций: %m" +msgstr "не удалоÑÑŒ ÑброÑить на диÑк начальный файл журнала транзакций: %m" -#: access/transam/xlog.c:4882 +#: access/transam/xlog.c:4917 #, c-format msgid "could not close bootstrap transaction log file: %m" msgstr "не удалоÑÑŒ закрыть начальный файл журнала транзакций: %m" -#: access/transam/xlog.c:4957 +#: access/transam/xlog.c:4992 #, c-format msgid "could not open recovery command file \"%s\": %m" msgstr "не удалоÑÑŒ открыть файл команд воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\": %m" -#: access/transam/xlog.c:5003 access/transam/xlog.c:5088 +#: access/transam/xlog.c:5038 access/transam/xlog.c:5123 #, c-format msgid "invalid value for recovery parameter \"%s\": \"%s\"" msgstr "неверное значение Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\": \"%s\"" -#: access/transam/xlog.c:5006 +#: access/transam/xlog.c:5041 #, c-format msgid "Valid values are \"pause\", \"promote\", and \"shutdown\"." msgstr "ДопуÑтимые значениÑ: \"pause\", \"promote\" и \"shutdown\"." -#: access/transam/xlog.c:5026 +#: access/transam/xlog.c:5061 #, c-format msgid "recovery_target_timeline is not a valid number: \"%s\"" msgstr "recovery_target_timeline не ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимым чиÑлом: \"%s\"" -#: access/transam/xlog.c:5043 +#: access/transam/xlog.c:5078 #, c-format msgid "recovery_target_xid is not a valid number: \"%s\"" msgstr "recovery_target_xid не ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимым чиÑлом: \"%s\"" -#: access/transam/xlog.c:5074 +#: access/transam/xlog.c:5109 #, c-format msgid "recovery_target_name is too long (maximum %d characters)" msgstr "длина recovery_target_name превышает предел (%d)" -#: access/transam/xlog.c:5091 +#: access/transam/xlog.c:5126 #, c-format msgid "The only allowed value is \"immediate\"." msgstr "ЕдинÑтвенное допуÑтимое значение: \"immediate\"." -#: access/transam/xlog.c:5104 access/transam/xlog.c:5115 -#: commands/extension.c:533 commands/extension.c:541 utils/misc/guc.c:5642 +#: access/transam/xlog.c:5139 access/transam/xlog.c:5150 +#: commands/extension.c:534 commands/extension.c:542 utils/misc/guc.c:5640 #, c-format msgid "parameter \"%s\" requires a Boolean value" msgstr "параметр \"%s\" требует логичеÑкое значение" -#: access/transam/xlog.c:5150 +#: access/transam/xlog.c:5185 #, c-format msgid "parameter \"%s\" requires a temporal value" msgstr "параметр \"%s\" требует временное значение" -#: access/transam/xlog.c:5152 catalog/dependency.c:991 catalog/dependency.c:992 -#: catalog/dependency.c:998 catalog/dependency.c:999 catalog/dependency.c:1010 -#: catalog/dependency.c:1011 catalog/objectaddress.c:1100 -#: commands/tablecmds.c:795 commands/tablecmds.c:9445 commands/user.c:1045 -#: commands/view.c:470 libpq/auth.c:304 replication/syncrep.c:919 -#: storage/lmgr/deadlock.c:1139 storage/lmgr/proc.c:1276 utils/adt/acl.c:5281 -#: utils/misc/guc.c:5664 utils/misc/guc.c:5757 utils/misc/guc.c:9692 -#: utils/misc/guc.c:9726 utils/misc/guc.c:9760 utils/misc/guc.c:9794 -#: utils/misc/guc.c:9829 +#: access/transam/xlog.c:5187 catalog/dependency.c:990 catalog/dependency.c:991 +#: catalog/dependency.c:997 catalog/dependency.c:998 catalog/dependency.c:1009 +#: catalog/dependency.c:1010 catalog/objectaddress.c:1100 +#: commands/tablecmds.c:796 commands/tablecmds.c:9556 commands/user.c:1045 +#: commands/view.c:499 libpq/auth.c:307 replication/syncrep.c:929 +#: storage/lmgr/deadlock.c:1139 storage/lmgr/proc.c:1278 utils/adt/acl.c:5281 +#: utils/misc/guc.c:5662 utils/misc/guc.c:5755 utils/misc/guc.c:9708 +#: utils/misc/guc.c:9742 utils/misc/guc.c:9776 utils/misc/guc.c:9810 +#: utils/misc/guc.c:9845 #, c-format msgid "%s" msgstr "%s" -#: access/transam/xlog.c:5159 +#: access/transam/xlog.c:5194 #, c-format msgid "unrecognized recovery parameter \"%s\"" msgstr "нераÑпознанный параметр воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\"" -#: access/transam/xlog.c:5170 +#: access/transam/xlog.c:5205 #, c-format msgid "" "recovery command file \"%s\" specified neither primary_conninfo nor " @@ -2385,7 +2131,7 @@ msgstr "" "в файле команд воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" не указан параметр primary_conninfo или " "restore_command" -#: access/transam/xlog.c:5172 +#: access/transam/xlog.c:5207 #, c-format msgid "" "The database server will regularly poll the pg_xlog subdirectory to check " @@ -2394,7 +2140,7 @@ msgstr "" "Сервер БД будет регулÑрно опрашивать подкаталог pg_xlog и проверÑть " "ÑодержащиеÑÑ Ð² нём файлы." -#: access/transam/xlog.c:5179 +#: access/transam/xlog.c:5214 #, c-format msgid "" "recovery command file \"%s\" must specify restore_command when standby mode " @@ -2403,68 +2149,68 @@ msgstr "" "в файле команд воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" может отÑутÑтвовать restore_command, " "только еÑли Ñто резервный Ñервер" -#: access/transam/xlog.c:5200 +#: access/transam/xlog.c:5235 #, c-format msgid "standby mode is not supported by single-user servers" msgstr "" "режим резервного Ñервера не поддерживаетÑÑ Ð¾Ð´Ð½Ð¾Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÑким Ñервером" -#: access/transam/xlog.c:5219 +#: access/transam/xlog.c:5254 #, c-format msgid "recovery target timeline %u does not exist" msgstr "Ñ†ÐµÐ»ÐµÐ²Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ %u не ÑущеÑтвует" -#: access/transam/xlog.c:5340 +#: access/transam/xlog.c:5375 #, c-format msgid "archive recovery complete" msgstr "воÑÑтановление архива завершено" -#: access/transam/xlog.c:5399 access/transam/xlog.c:5627 +#: access/transam/xlog.c:5434 access/transam/xlog.c:5662 #, c-format msgid "recovery stopping after reaching consistency" msgstr "" "воÑÑтановление оÑтанавливаетÑÑ Ð¿Ð¾Ñле доÑÑ‚Ð¸Ð¶ÐµÐ½Ð¸Ñ ÑоглаÑованного ÑоÑтоÑниÑ" -#: access/transam/xlog.c:5487 +#: access/transam/xlog.c:5522 #, c-format msgid "recovery stopping before commit of transaction %u, time %s" msgstr "" "воÑÑтановление оÑтанавливаетÑÑ Ð¿ÐµÑ€ÐµÐ´ фикÑированием транзакции %u, Ð²Ñ€ÐµÐ¼Ñ %s" -#: access/transam/xlog.c:5494 +#: access/transam/xlog.c:5529 #, c-format msgid "recovery stopping before abort of transaction %u, time %s" msgstr "" "воÑÑтановление оÑтанавливаетÑÑ Ð¿ÐµÑ€ÐµÐ´ прерыванием транзакции %u, Ð²Ñ€ÐµÐ¼Ñ %s" -#: access/transam/xlog.c:5539 +#: access/transam/xlog.c:5574 #, c-format msgid "recovery stopping at restore point \"%s\", time %s" msgstr "воÑÑтановление оÑтанавливаетÑÑ Ð² точке воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\", Ð²Ñ€ÐµÐ¼Ñ %s" -#: access/transam/xlog.c:5607 +#: access/transam/xlog.c:5642 #, c-format msgid "recovery stopping after commit of transaction %u, time %s" msgstr "" "воÑÑтановление оÑтанавливаетÑÑ Ð¿Ð¾Ñле фикÑÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸ %u, Ð²Ñ€ÐµÐ¼Ñ %s" -#: access/transam/xlog.c:5615 +#: access/transam/xlog.c:5650 #, c-format msgid "recovery stopping after abort of transaction %u, time %s" msgstr "" "воÑÑтановление оÑтанавливаетÑÑ Ð¿Ð¾Ñле Ð¿Ñ€ÐµÑ€Ñ‹Ð²Ð°Ð½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸ %u, Ð²Ñ€ÐµÐ¼Ñ %s" -#: access/transam/xlog.c:5654 +#: access/transam/xlog.c:5689 #, c-format msgid "recovery has paused" msgstr "воÑÑтановление приоÑтановлено" -#: access/transam/xlog.c:5655 +#: access/transam/xlog.c:5690 #, c-format msgid "Execute pg_xlog_replay_resume() to continue." msgstr "Выполните pg_xlog_replay_resume() Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ." -#: access/transam/xlog.c:5862 +#: access/transam/xlog.c:5897 #, c-format msgid "" "hot standby is not possible because %s = %d is a lower setting than on the " @@ -2473,12 +2219,12 @@ msgstr "" "режим горÑчего резерва невозможен, так как параметр %s = %d, меньше чем на " "главном Ñервере (на нём было значение %d)" -#: access/transam/xlog.c:5888 +#: access/transam/xlog.c:5923 #, c-format msgid "WAL was generated with wal_level=minimal, data may be missing" msgstr "WAL был Ñоздан Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ wal_level=minimal, возможна Ð¿Ð¾Ñ‚ÐµÑ€Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…" -#: access/transam/xlog.c:5889 +#: access/transam/xlog.c:5924 #, c-format msgid "" "This happens if you temporarily set wal_level=minimal without taking a new " @@ -2487,7 +2233,7 @@ msgstr "" "Это проиÑходит, еÑли вы на Ð²Ñ€ÐµÐ¼Ñ ÑƒÑтановили wal_level=minimal и не Ñделали " "резервную копию базу данных." -#: access/transam/xlog.c:5900 +#: access/transam/xlog.c:5935 #, c-format msgid "" "hot standby is not possible because wal_level was not set to \"replica\" or " @@ -2496,7 +2242,7 @@ msgstr "" "режим горÑчего резерва невозможен, так как на главном Ñервере уÑтановлен " "неподходÑщий wal_level (должен быть \"replica\" или выше)" -#: access/transam/xlog.c:5901 +#: access/transam/xlog.c:5936 #, c-format msgid "" "Either set wal_level to \"replica\" on the master, or turn off hot_standby " @@ -2505,32 +2251,32 @@ msgstr "" "Либо уÑтановите Ð´Ð»Ñ wal_level значение \"replica\" на главном Ñервере, либо " "выключите hot_standby здеÑÑŒ." -#: access/transam/xlog.c:5958 +#: access/transam/xlog.c:5993 #, c-format msgid "control file contains invalid data" msgstr "файл pg_control Ñодержит неверные данные" -#: access/transam/xlog.c:5964 +#: access/transam/xlog.c:5999 #, c-format msgid "database system was shut down at %s" msgstr "ÑиÑтема БД была выключена: %s" -#: access/transam/xlog.c:5969 +#: access/transam/xlog.c:6004 #, c-format msgid "database system was shut down in recovery at %s" msgstr "ÑиÑтема БД была выключена в процеÑÑе воÑÑтановлениÑ: %s" -#: access/transam/xlog.c:5973 +#: access/transam/xlog.c:6008 #, c-format msgid "database system shutdown was interrupted; last known up at %s" msgstr "выключение ÑиÑтемы БД было прервано; поÑледний момент работы: %s" -#: access/transam/xlog.c:5977 +#: access/transam/xlog.c:6012 #, c-format msgid "database system was interrupted while in recovery at %s" msgstr "работа ÑиÑтемы БД была прервана во Ð²Ñ€ÐµÐ¼Ñ Ð²Ð¾ÑÑтановлениÑ: %s" -#: access/transam/xlog.c:5979 +#: access/transam/xlog.c:6014 #, c-format msgid "" "This probably means that some data is corrupted and you will have to use the " @@ -2539,14 +2285,14 @@ msgstr "" "Это Ñкорее вÑего означает, что некоторые данные повреждены и вам придётÑÑ " "воÑÑтановить БД из поÑледней резервной копии." -#: access/transam/xlog.c:5983 +#: access/transam/xlog.c:6018 #, c-format msgid "database system was interrupted while in recovery at log time %s" msgstr "" "работа ÑиÑтемы БД была прервана в процеÑÑе воÑÑтановлениÑ, Ð²Ñ€ÐµÐ¼Ñ Ð² журнале: " "%s" -#: access/transam/xlog.c:5985 +#: access/transam/xlog.c:6020 #, c-format msgid "" "If this has occurred more than once some data might be corrupted and you " @@ -2555,53 +2301,53 @@ msgstr "" "ЕÑли Ñто проиÑходит поÑтоÑнно, возможно, какие-то данные были иÑпорчены и " "Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñтоит выбрать более раннюю точку." -#: access/transam/xlog.c:5989 +#: access/transam/xlog.c:6024 #, c-format msgid "database system was interrupted; last known up at %s" msgstr "работа ÑиÑтемы БД была прервана; поÑледний момент работы: %s" -#: access/transam/xlog.c:6045 +#: access/transam/xlog.c:6080 #, c-format msgid "entering standby mode" msgstr "переход в режим резервного Ñервера" -#: access/transam/xlog.c:6048 +#: access/transam/xlog.c:6083 #, c-format msgid "starting point-in-time recovery to XID %u" msgstr "начинаетÑÑ Ð²Ð¾ÑÑтановление точки во времени до XID %u" -#: access/transam/xlog.c:6052 +#: access/transam/xlog.c:6087 #, c-format msgid "starting point-in-time recovery to %s" msgstr "начинаетÑÑ Ð²Ð¾ÑÑтановление точки во времени до %s" -#: access/transam/xlog.c:6056 +#: access/transam/xlog.c:6091 #, c-format msgid "starting point-in-time recovery to \"%s\"" msgstr "начинаетÑÑ Ð²Ð¾ÑÑтановление точки во времени до \"%s\"" -#: access/transam/xlog.c:6060 +#: access/transam/xlog.c:6095 #, c-format msgid "starting point-in-time recovery to earliest consistent point" msgstr "" "начинаетÑÑ Ð²Ð¾ÑÑтановление точки во времени до первой точки ÑоглаÑованноÑти" -#: access/transam/xlog.c:6063 +#: access/transam/xlog.c:6098 #, c-format msgid "starting archive recovery" msgstr "начинаетÑÑ Ð²Ð¾ÑÑтановление архива" -#: access/transam/xlog.c:6107 access/transam/xlog.c:6235 +#: access/transam/xlog.c:6142 access/transam/xlog.c:6270 #, c-format msgid "checkpoint record is at %X/%X" msgstr "запиÑÑŒ о контрольной точке по Ñмещению %X/%X" -#: access/transam/xlog.c:6121 +#: access/transam/xlog.c:6156 #, c-format msgid "could not find redo location referenced by checkpoint record" msgstr "не удалоÑÑŒ найти положение REDO, указанное запиÑью контрольной точки" -#: access/transam/xlog.c:6122 access/transam/xlog.c:6129 +#: access/transam/xlog.c:6157 access/transam/xlog.c:6164 #, c-format msgid "" "If you are not restoring from a backup, try removing the file \"%s/" @@ -2610,47 +2356,47 @@ msgstr "" "ЕÑли вы не воÑÑтанавливаете БД из резервной копии, попробуйте удалить файл " "\"%s/backup_label\"." -#: access/transam/xlog.c:6128 +#: access/transam/xlog.c:6163 #, c-format msgid "could not locate required checkpoint record" msgstr "не удалоÑÑŒ Ñчитать нужную запиÑÑŒ контрольной точки" -#: access/transam/xlog.c:6154 commands/tablespace.c:641 +#: access/transam/xlog.c:6189 commands/tablespace.c:641 #, c-format msgid "could not create symbolic link \"%s\": %m" msgstr "не удалоÑÑŒ Ñоздать ÑимволичеÑкую ÑÑылку \"%s\": %m" -#: access/transam/xlog.c:6186 access/transam/xlog.c:6192 +#: access/transam/xlog.c:6221 access/transam/xlog.c:6227 #, c-format msgid "ignoring file \"%s\" because no file \"%s\" exists" msgstr "файл \"%s\" игнорируетÑÑ Ð²Ð²Ð¸Ð´Ñƒ отÑутÑÑ‚Ð²Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° \"%s\"" -#: access/transam/xlog.c:6188 access/transam/xlog.c:10928 +#: access/transam/xlog.c:6223 access/transam/xlog.c:11065 #, c-format msgid "File \"%s\" was renamed to \"%s\"." msgstr "Файл \"%s\" был переименован в \"%s\"." -#: access/transam/xlog.c:6194 +#: access/transam/xlog.c:6229 #, c-format msgid "Could not rename file \"%s\" to \"%s\": %m." msgstr "Ðе удалоÑÑŒ переименовать файл \"%s\" в \"%s\" (%m)." -#: access/transam/xlog.c:6245 access/transam/xlog.c:6260 +#: access/transam/xlog.c:6280 access/transam/xlog.c:6295 #, c-format msgid "could not locate a valid checkpoint record" msgstr "не удалоÑÑŒ Ñчитать правильную запиÑÑŒ контрольной точки" -#: access/transam/xlog.c:6254 +#: access/transam/xlog.c:6289 #, c-format msgid "using previous checkpoint record at %X/%X" msgstr "иÑпользуетÑÑ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ контрольной точки по Ñмещению %X/%X" -#: access/transam/xlog.c:6298 +#: access/transam/xlog.c:6333 #, c-format msgid "requested timeline %u is not a child of this server's history" msgstr "в иÑтории Ñервера нет Ð¾Ñ‚Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð¾Ð¹ линии времени %u" -#: access/transam/xlog.c:6300 +#: access/transam/xlog.c:6335 #, c-format msgid "" "Latest checkpoint is at %X/%X on timeline %u, but in the history of the " @@ -2659,7 +2405,7 @@ msgstr "" "ПоÑледнÑÑ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ°: %X/%X на линии времени %u, но в иÑтории " "запрошенной линии времени Ñервер ответвилÑÑ Ñ Ñтой линии в %X/%X." -#: access/transam/xlog.c:6316 +#: access/transam/xlog.c:6351 #, c-format msgid "" "requested timeline %u does not contain minimum recovery point %X/%X on " @@ -2668,22 +2414,22 @@ msgstr "" "Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ %u не Ñодержит минимальную точку воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ %X/" "%X на линии времени %u" -#: access/transam/xlog.c:6347 +#: access/transam/xlog.c:6382 #, c-format msgid "invalid next transaction ID" msgstr "неверный ID Ñледующей транзакции" -#: access/transam/xlog.c:6430 +#: access/transam/xlog.c:6465 #, c-format msgid "invalid redo in checkpoint record" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ REDO в контрольной точке" -#: access/transam/xlog.c:6441 +#: access/transam/xlog.c:6476 #, c-format msgid "invalid redo record in shutdown checkpoint" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ REDO в контрольной точке выключениÑ" -#: access/transam/xlog.c:6469 +#: access/transam/xlog.c:6504 #, c-format msgid "" "database system was not properly shut down; automatic recovery in progress" @@ -2691,19 +2437,19 @@ msgstr "" "ÑиÑтема БД была оÑтановлена нештатно; производитÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкое " "воÑÑтановление" -#: access/transam/xlog.c:6473 +#: access/transam/xlog.c:6508 #, c-format msgid "crash recovery starts in timeline %u and has target timeline %u" msgstr "" "воÑÑтановление поÑле ÑÐ±Ð¾Ñ Ð½Ð°Ñ‡Ð¸Ð½Ð°ÐµÑ‚ÑÑ Ð½Ð° линии времени %u, Ñ†ÐµÐ»ÐµÐ²Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ " "времени: %u" -#: access/transam/xlog.c:6517 +#: access/transam/xlog.c:6552 #, c-format msgid "backup_label contains data inconsistent with control file" msgstr "backup_label Ñодержит данные, не ÑоглаÑованные Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ pg_control" -#: access/transam/xlog.c:6518 +#: access/transam/xlog.c:6553 #, c-format msgid "" "This means that the backup is corrupted and you will have to use another " @@ -2712,44 +2458,44 @@ msgstr "" "Это означает, что Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° и Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð‘Ð” " "придётÑÑ Ð¸Ñпользовать другую копию." -#: access/transam/xlog.c:6592 +#: access/transam/xlog.c:6627 #, c-format msgid "initializing for hot standby" msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ Ð³Ð¾Ñ€Ñчего резерва" -#: access/transam/xlog.c:6724 +#: access/transam/xlog.c:6759 #, c-format msgid "redo starts at %X/%X" msgstr "запиÑÑŒ REDO начинаетÑÑ Ñо ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %X/%X" -#: access/transam/xlog.c:6949 +#: access/transam/xlog.c:6984 #, c-format msgid "requested recovery stop point is before consistent recovery point" msgstr "" "Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° оÑтановки воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´ÑˆÐµÑтвует ÑоглаÑованной точке " "воÑÑтановлениÑ" -#: access/transam/xlog.c:6987 +#: access/transam/xlog.c:7022 #, c-format msgid "redo done at %X/%X" msgstr "запиÑи REDO обработаны до ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %X/%X" -#: access/transam/xlog.c:6992 access/transam/xlog.c:8916 +#: access/transam/xlog.c:7027 access/transam/xlog.c:8986 #, c-format msgid "last completed transaction was at log time %s" msgstr "поÑледнÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½Ð½Ð°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð±Ñ‹Ð»Ð° выполнена в %s" -#: access/transam/xlog.c:7001 +#: access/transam/xlog.c:7036 #, c-format msgid "redo is not required" msgstr "данные REDO не требуютÑÑ" -#: access/transam/xlog.c:7076 access/transam/xlog.c:7080 +#: access/transam/xlog.c:7111 access/transam/xlog.c:7115 #, c-format msgid "WAL ends before end of online backup" msgstr "WAL закончилÑÑ Ð±ÐµÐ· признака Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ" -#: access/transam/xlog.c:7077 +#: access/transam/xlog.c:7112 #, c-format msgid "" "All WAL generated while online backup was taken must be available at " @@ -2758,7 +2504,7 @@ msgstr "" "Ð’Ñе журналы WAL, Ñозданные во Ð²Ñ€ÐµÐ¼Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ \"на ходу\", " "должны быть в наличии Ð´Ð»Ñ Ð²Ð¾ÑÑтановлениÑ." -#: access/transam/xlog.c:7081 +#: access/transam/xlog.c:7116 #, c-format msgid "" "Online backup started with pg_start_backup() must be ended with " @@ -2768,102 +2514,102 @@ msgstr "" "должно закончитьÑÑ pg_stop_backup(), и Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ быть " "доÑтупны вÑе журналы WAL." -#: access/transam/xlog.c:7084 +#: access/transam/xlog.c:7119 #, c-format msgid "WAL ends before consistent recovery point" msgstr "WAL закончилÑÑ Ð´Ð¾ ÑоглаÑованной точки воÑÑтановлениÑ" -#: access/transam/xlog.c:7111 +#: access/transam/xlog.c:7146 #, c-format msgid "selected new timeline ID: %u" msgstr "выбранный ID новой линии времени: %u" -#: access/transam/xlog.c:7522 +#: access/transam/xlog.c:7557 #, c-format msgid "consistent recovery state reached at %X/%X" msgstr "ÑоглаÑованное ÑоÑтоÑние воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ñтигнуто по Ñмещению %X/%X" -#: access/transam/xlog.c:7713 +#: access/transam/xlog.c:7748 #, c-format msgid "invalid primary checkpoint link in control file" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑÑылка на первичную контрольную точку в файле pg_control" -#: access/transam/xlog.c:7717 +#: access/transam/xlog.c:7752 #, c-format msgid "invalid secondary checkpoint link in control file" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑÑылка на вторичную контрольную точку в файле pg_control" -#: access/transam/xlog.c:7721 +#: access/transam/xlog.c:7756 #, c-format msgid "invalid checkpoint link in backup_label file" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑÑылка на контрольную точку в файле backup_label" -#: access/transam/xlog.c:7738 +#: access/transam/xlog.c:7773 #, c-format msgid "invalid primary checkpoint record" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ первичной контрольной точки" -#: access/transam/xlog.c:7742 +#: access/transam/xlog.c:7777 #, c-format msgid "invalid secondary checkpoint record" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ вторичной контрольной точки" -#: access/transam/xlog.c:7746 +#: access/transam/xlog.c:7781 #, c-format msgid "invalid checkpoint record" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ контрольной точки" -#: access/transam/xlog.c:7757 +#: access/transam/xlog.c:7792 #, c-format msgid "invalid resource manager ID in primary checkpoint record" msgstr "неверный ID менеджера реÑурÑов в запиÑи первичной контрольной точки" -#: access/transam/xlog.c:7761 +#: access/transam/xlog.c:7796 #, c-format msgid "invalid resource manager ID in secondary checkpoint record" msgstr "неверный ID менеджера реÑурÑов в запиÑи вторичной контрольной точки" -#: access/transam/xlog.c:7765 +#: access/transam/xlog.c:7800 #, c-format msgid "invalid resource manager ID in checkpoint record" msgstr "неверный ID менеджера реÑурÑов в запиÑи контрольной точки" -#: access/transam/xlog.c:7777 +#: access/transam/xlog.c:7812 #, c-format msgid "invalid xl_info in primary checkpoint record" msgstr "неверные флаги xl_info в запиÑи первичной контрольной точки" -#: access/transam/xlog.c:7781 +#: access/transam/xlog.c:7816 #, c-format msgid "invalid xl_info in secondary checkpoint record" msgstr "неверные флаги xl_info в запиÑи вторичной контрольной точки" -#: access/transam/xlog.c:7785 +#: access/transam/xlog.c:7820 #, c-format msgid "invalid xl_info in checkpoint record" msgstr "неверные флаги xl_info в запиÑи контрольной точки" -#: access/transam/xlog.c:7796 +#: access/transam/xlog.c:7831 #, c-format msgid "invalid length of primary checkpoint record" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° запиÑи первичной контрольной точки" -#: access/transam/xlog.c:7800 +#: access/transam/xlog.c:7835 #, c-format msgid "invalid length of secondary checkpoint record" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° запиÑи вторичной контрольной точки" -#: access/transam/xlog.c:7804 +#: access/transam/xlog.c:7839 #, c-format msgid "invalid length of checkpoint record" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° запиÑи контрольной точки" -#: access/transam/xlog.c:7972 +#: access/transam/xlog.c:8007 #, c-format msgid "shutting down" msgstr "выключение" -#: access/transam/xlog.c:8485 +#: access/transam/xlog.c:8531 #, c-format msgid "" "concurrent transaction log activity while database system is shutting down" @@ -2871,29 +2617,29 @@ msgstr "" "во Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ ÑиÑтемы баз данных отмечена активноÑть в журнале " "транзакций" -#: access/transam/xlog.c:8736 +#: access/transam/xlog.c:8785 #, c-format msgid "skipping restartpoint, recovery has already ended" msgstr "" "Ñоздание точки перезапуÑка пропуÑкаетÑÑ, воÑÑтановление уже закончилоÑÑŒ" -#: access/transam/xlog.c:8759 +#: access/transam/xlog.c:8808 #, c-format msgid "skipping restartpoint, already performed at %X/%X" msgstr "" "Ñоздание точки перезапуÑка пропуÑкаетÑÑ, она уже Ñоздана по Ñмещению %X/%X" -#: access/transam/xlog.c:8914 +#: access/transam/xlog.c:8984 #, c-format msgid "recovery restart point at %X/%X" msgstr "точка перезапуÑка воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ñмещению %X/%X" -#: access/transam/xlog.c:9047 +#: access/transam/xlog.c:9117 #, c-format msgid "restore point \"%s\" created at %X/%X" msgstr "точка воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" Ñоздана по Ñмещению %X/%X" -#: access/transam/xlog.c:9177 +#: access/transam/xlog.c:9247 #, c-format msgid "" "unexpected previous timeline ID %u (current timeline ID %u) in checkpoint " @@ -2902,93 +2648,94 @@ msgstr "" "неожиданный ID предыдущей линии времени %u (ID текущей линии времени %u) в " "запиÑи контрольной точки" -#: access/transam/xlog.c:9186 +#: access/transam/xlog.c:9256 #, c-format msgid "unexpected timeline ID %u (after %u) in checkpoint record" msgstr "неожиданный ID линии времени %u (поÑле %u) в запиÑи контрольной точки" -#: access/transam/xlog.c:9202 +# skip-rule: capital-letter-first +#: access/transam/xlog.c:9272 #, c-format msgid "" "unexpected timeline ID %u in checkpoint record, before reaching minimum " "recovery point %X/%X on timeline %u" msgstr "" "неожиданный ID линии времени %u в запиÑи контрольной точки, до доÑÑ‚Ð¸Ð¶ÐµÐ½Ð¸Ñ " -"минимальной к.Ñ‚. %X/%X на линии времени %u" +"минимальной к. Ñ‚. %X/%X на линии времени %u" -#: access/transam/xlog.c:9273 +#: access/transam/xlog.c:9343 #, c-format msgid "online backup was canceled, recovery cannot continue" msgstr "" "резервное копирование \"на ходу\" было отменено, продолжить воÑÑтановление " "нельзÑ" -#: access/transam/xlog.c:9329 access/transam/xlog.c:9376 -#: access/transam/xlog.c:9399 +#: access/transam/xlog.c:9399 access/transam/xlog.c:9446 +#: access/transam/xlog.c:9469 #, c-format msgid "unexpected timeline ID %u (should be %u) in checkpoint record" msgstr "" "неожиданный ID линии времени %u (должен быть %u) в запиÑи точки " "воÑÑтановлениÑ" -#: access/transam/xlog.c:9674 +#: access/transam/xlog.c:9744 #, c-format msgid "could not fsync log segment %s: %m" msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ Ñегмент журнала %s: %m" -#: access/transam/xlog.c:9698 +#: access/transam/xlog.c:9768 #, c-format msgid "could not fsync log file %s: %m" msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ файл журнала %s: %m" -#: access/transam/xlog.c:9706 +#: access/transam/xlog.c:9776 #, c-format msgid "could not fsync write-through log file %s: %m" msgstr "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ файл журнала Ñквозной запиÑи %s: %m" -#: access/transam/xlog.c:9715 +#: access/transam/xlog.c:9785 #, c-format msgid "could not fdatasync log file %s: %m" msgstr "" "не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ данные (fdatasync) файла журнала %s: %m" -#: access/transam/xlog.c:9806 access/transam/xlog.c:10277 -#: access/transam/xlogfuncs.c:294 access/transam/xlogfuncs.c:321 -#: access/transam/xlogfuncs.c:360 access/transam/xlogfuncs.c:381 -#: access/transam/xlogfuncs.c:402 +#: access/transam/xlog.c:9876 access/transam/xlog.c:10393 +#: access/transam/xlogfuncs.c:289 access/transam/xlogfuncs.c:316 +#: access/transam/xlogfuncs.c:355 access/transam/xlogfuncs.c:376 +#: access/transam/xlogfuncs.c:397 #, c-format msgid "WAL control functions cannot be executed during recovery." msgstr "Функции ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ WAL Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать в процеÑÑе воÑÑтановлениÑ." -#: access/transam/xlog.c:9815 access/transam/xlog.c:10286 +#: access/transam/xlog.c:9885 access/transam/xlog.c:10402 #, c-format msgid "WAL level not sufficient for making an online backup" msgstr "" "Выбранный уровень WAL недоÑтаточен Ð´Ð»Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ \"на ходу\"" -#: access/transam/xlog.c:9816 access/transam/xlog.c:10287 -#: access/transam/xlogfuncs.c:327 +#: access/transam/xlog.c:9886 access/transam/xlog.c:10403 +#: access/transam/xlogfuncs.c:322 #, c-format msgid "wal_level must be set to \"replica\" or \"logical\" at server start." msgstr "УÑтановите wal_level \"replica\" или \"logical\" при запуÑке Ñервера." -#: access/transam/xlog.c:9821 +#: access/transam/xlog.c:9891 #, c-format msgid "backup label too long (max %d bytes)" msgstr "длина метки резервной копии превышает предел (%d байт)" -#: access/transam/xlog.c:9853 access/transam/xlog.c:10125 -#: access/transam/xlog.c:10163 +#: access/transam/xlog.c:9928 access/transam/xlog.c:10200 +#: access/transam/xlog.c:10238 #, c-format msgid "a backup is already in progress" msgstr "резервное копирование уже выполнÑетÑÑ" -#: access/transam/xlog.c:9854 +#: access/transam/xlog.c:9929 #, c-format msgid "Run pg_stop_backup() and try again." msgstr "Выполните pg_stop_backup() и повторите операцию." -#: access/transam/xlog.c:9949 +#: access/transam/xlog.c:10024 #, c-format msgid "" "WAL generated with full_page_writes=off was replayed since last restartpoint" @@ -2996,7 +2743,7 @@ msgstr "" "ПоÑле поÑледней точки перезапуÑка был воÑпроизведён WAL, Ñозданный в режиме " "full_page_writes=off." -#: access/transam/xlog.c:9951 access/transam/xlog.c:10450 +#: access/transam/xlog.c:10026 access/transam/xlog.c:10587 #, c-format msgid "" "This means that the backup being taken on the standby is corrupt and should " @@ -3008,39 +2755,39 @@ msgstr "" "CHECKPOINT на главном Ñервере, а затем попробуйте резервное копирование \"на " "ходу\" ещё раз." -#: access/transam/xlog.c:10018 replication/basebackup.c:1038 +#: access/transam/xlog.c:10093 replication/basebackup.c:1026 #: utils/adt/misc.c:498 #, c-format msgid "could not read symbolic link \"%s\": %m" msgstr "не удалоÑÑŒ прочитать ÑимволичеÑкую ÑÑылку \"%s\": %m" -#: access/transam/xlog.c:10025 replication/basebackup.c:1043 +#: access/transam/xlog.c:10100 replication/basebackup.c:1031 #: utils/adt/misc.c:503 #, c-format msgid "symbolic link \"%s\" target is too long" msgstr "целевой путь ÑимволичеÑкой ÑÑылки \"%s\" Ñлишком длинный" -#: access/transam/xlog.c:10078 commands/tablespace.c:391 -#: commands/tablespace.c:553 replication/basebackup.c:1059 utils/adt/misc.c:511 +#: access/transam/xlog.c:10153 commands/tablespace.c:391 +#: commands/tablespace.c:553 replication/basebackup.c:1047 utils/adt/misc.c:511 #, c-format msgid "tablespaces are not supported on this platform" msgstr "табличные проÑтранÑтва не поддерживаютÑÑ Ð½Ð° Ñтой платформе" -#: access/transam/xlog.c:10119 access/transam/xlog.c:10157 -#: access/transam/xlog.c:10336 access/transam/xlogarchive.c:106 -#: access/transam/xlogarchive.c:265 commands/copy.c:1776 commands/copy.c:2800 -#: commands/extension.c:3109 commands/tablespace.c:782 -#: commands/tablespace.c:873 replication/basebackup.c:407 -#: replication/basebackup.c:475 replication/logical/snapbuild.c:1491 -#: storage/file/copydir.c:72 storage/file/copydir.c:115 storage/file/fd.c:2826 -#: storage/file/fd.c:2918 utils/adt/dbsize.c:70 utils/adt/dbsize.c:220 +#: access/transam/xlog.c:10194 access/transam/xlog.c:10232 +#: access/transam/xlog.c:10441 access/transam/xlogarchive.c:106 +#: access/transam/xlogarchive.c:265 commands/copy.c:1816 commands/copy.c:2840 +#: commands/extension.c:3133 commands/tablespace.c:782 +#: commands/tablespace.c:873 replication/basebackup.c:409 +#: replication/basebackup.c:477 replication/logical/snapbuild.c:1496 +#: storage/file/copydir.c:72 storage/file/copydir.c:115 storage/file/fd.c:2903 +#: storage/file/fd.c:2995 utils/adt/dbsize.c:70 utils/adt/dbsize.c:220 #: utils/adt/dbsize.c:300 utils/adt/genfile.c:114 utils/adt/genfile.c:333 #: guc-file.l:1001 #, c-format msgid "could not stat file \"%s\": %m" msgstr "не удалоÑÑŒ получить информацию о файле \"%s\": %m" -#: access/transam/xlog.c:10126 access/transam/xlog.c:10164 +#: access/transam/xlog.c:10201 access/transam/xlog.c:10239 #, c-format msgid "" "If you're sure there is no backup in progress, remove file \"%s\" and try " @@ -3049,36 +2796,36 @@ msgstr "" "ЕÑли вы Ñчитаете, что Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ резервном копировании неверна, удалите " "файл \"%s\" и попробуйте Ñнова." -#: access/transam/xlog.c:10143 access/transam/xlog.c:10181 -#: access/transam/xlog.c:10511 +#: access/transam/xlog.c:10218 access/transam/xlog.c:10256 +#: access/transam/xlog.c:10648 #, c-format msgid "could not write file \"%s\": %m" msgstr "не удалоÑÑŒ запиÑать файл \"%s\": %m" -#: access/transam/xlog.c:10300 +#: access/transam/xlog.c:10418 #, c-format msgid "exclusive backup not in progress" msgstr "монопольное резервное копирование не выполнÑетÑÑ" -#: access/transam/xlog.c:10340 +#: access/transam/xlog.c:10445 #, c-format msgid "a backup is not in progress" msgstr "резервное копирование не выполнÑетÑÑ" -#: access/transam/xlog.c:10385 access/transam/xlog.c:10398 -#: access/transam/xlog.c:10738 access/transam/xlog.c:10744 -#: access/transam/xlog.c:10828 access/transam/xlogfuncs.c:695 +#: access/transam/xlog.c:10522 access/transam/xlog.c:10535 +#: access/transam/xlog.c:10875 access/transam/xlog.c:10881 +#: access/transam/xlog.c:10965 access/transam/xlogfuncs.c:690 #, c-format msgid "invalid data in file \"%s\"" msgstr "неверные данные в файле \"%s\"" -#: access/transam/xlog.c:10402 replication/basebackup.c:936 +#: access/transam/xlog.c:10539 replication/basebackup.c:938 #, c-format msgid "the standby was promoted during online backup" msgstr "" "дежурный Ñервер был повышен в процеÑÑе резервного ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ \"на ходу\"" -#: access/transam/xlog.c:10403 replication/basebackup.c:937 +#: access/transam/xlog.c:10540 replication/basebackup.c:939 #, c-format msgid "" "This means that the backup being taken is corrupt and should not be used. " @@ -3087,7 +2834,7 @@ msgstr "" "Это означает, что ÑÐ¾Ð·Ð´Ð°Ð²Ð°ÐµÐ¼Ð°Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð¸Ñпорчена и иÑпользовать её не " "Ñледует. Попробуйте резервное копирование \"на ходу\" ещё раз." -#: access/transam/xlog.c:10448 +#: access/transam/xlog.c:10585 #, c-format msgid "" "WAL generated with full_page_writes=off was replayed during online backup" @@ -3095,7 +2842,7 @@ msgstr "" "Ð’ процеÑÑе резервного ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ \"на ходу\" был воÑпроизведён WAL, " "Ñозданный в режиме full_page_writes=off" -#: access/transam/xlog.c:10560 +#: access/transam/xlog.c:10697 #, c-format msgid "" "pg_stop_backup cleanup done, waiting for required WAL segments to be archived" @@ -3103,7 +2850,7 @@ msgstr "" "очиÑтка в pg_stop_backup выполнена, ожидаютÑÑ Ñ‚Ñ€ÐµÐ±ÑƒÐµÐ¼Ñ‹Ðµ Ñегменты WAL Ð´Ð»Ñ " "архивации" -#: access/transam/xlog.c:10570 +#: access/transam/xlog.c:10707 #, c-format msgid "" "pg_stop_backup still waiting for all required WAL segments to be archived " @@ -3112,7 +2859,7 @@ msgstr "" "pg_stop_backup вÑÑ‘ ещё ждёт вÑе требуемые Ñегменты WAL Ð´Ð»Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð°Ñ†Ð¸Ð¸ (прошло " "%d Ñек.)" -#: access/transam/xlog.c:10572 +#: access/transam/xlog.c:10709 #, c-format msgid "" "Check that your archive_command is executing properly. pg_stop_backup can " @@ -3123,13 +2870,13 @@ msgstr "" "можно отменить безопаÑно, но Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð±Ð°Ð·Ñ‹ данных будет непригодна " "без вÑех Ñегментов WAL." -#: access/transam/xlog.c:10579 +#: access/transam/xlog.c:10716 #, c-format msgid "pg_stop_backup complete, all required WAL segments have been archived" msgstr "" "команда pg_stop_backup завершена, вÑе требуемые Ñегменты WAL заархивированы" -#: access/transam/xlog.c:10583 +#: access/transam/xlog.c:10720 #, c-format msgid "" "WAL archiving is not enabled; you must ensure that all required WAL segments " @@ -3139,35 +2886,35 @@ msgstr "" "Ñегментов WAL другими ÑредÑтвами Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¾Ð¹ копии" #. translator: %s is an XLog record description -#: access/transam/xlog.c:10868 +#: access/transam/xlog.c:11005 #, c-format msgid "xlog redo at %X/%X for %s" msgstr "запиÑÑŒ REDO в XLOG в позиции %X/%X Ð´Ð»Ñ %s" -#: access/transam/xlog.c:10917 +#: access/transam/xlog.c:11054 #, c-format msgid "online backup mode was not canceled" msgstr "режим ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ \"на ходу\" не был отменён" -#: access/transam/xlog.c:10918 +#: access/transam/xlog.c:11055 #, c-format msgid "File \"%s\" could not be renamed to \"%s\": %m." msgstr "Ðе удалоÑÑŒ переименовать файл \"%s\" в \"%s\": %m." -#: access/transam/xlog.c:10927 access/transam/xlog.c:10939 -#: access/transam/xlog.c:10949 +#: access/transam/xlog.c:11064 access/transam/xlog.c:11076 +#: access/transam/xlog.c:11086 #, c-format msgid "online backup mode canceled" msgstr "режим ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ \"на ходу\" отменён" -#: access/transam/xlog.c:10940 +#: access/transam/xlog.c:11077 #, c-format msgid "" "Files \"%s\" and \"%s\" were renamed to \"%s\" and \"%s\", respectively." msgstr "" "Файлы \"%s\" и \"%s\" были переименованы в \"%s\" и \"%s\", ÑоответÑтвенно." -#: access/transam/xlog.c:10950 +#: access/transam/xlog.c:11087 #, c-format msgid "" "File \"%s\" was renamed to \"%s\", but file \"%s\" could not be renamed to " @@ -3176,28 +2923,28 @@ msgstr "" "Файл \"%s\" был переименован в \"%s\", но переименовать \"%s\" в \"%s\" не " "удалоÑÑŒ: %m." -#: access/transam/xlog.c:11072 access/transam/xlogutils.c:718 -#: replication/walreceiver.c:994 replication/walsender.c:2114 +#: access/transam/xlog.c:11209 access/transam/xlogutils.c:718 +#: replication/walreceiver.c:994 replication/walsender.c:2156 #, c-format msgid "could not seek in log segment %s to offset %u: %m" msgstr "не удалоÑÑŒ перемеÑтитьÑÑ Ð² Ñегменте журнала %s к Ñмещению %u: %m" -#: access/transam/xlog.c:11084 +#: access/transam/xlog.c:11221 #, c-format msgid "could not read from log segment %s, offset %u: %m" msgstr "не удалоÑÑŒ прочитать Ñегмент журнала %s, Ñмещение %u: %m" -#: access/transam/xlog.c:11558 +#: access/transam/xlog.c:11695 #, c-format msgid "received promote request" msgstr "получен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ ÑтатуÑа" -#: access/transam/xlog.c:11571 +#: access/transam/xlog.c:11708 #, c-format msgid "trigger file found: %s" msgstr "найден файл триггера: %s" -#: access/transam/xlog.c:11580 +#: access/transam/xlog.c:11717 #, c-format msgid "could not stat trigger file \"%s\": %m" msgstr "не удалоÑÑŒ получить информацию о файле триггера \"%s\": %m" @@ -3226,8 +2973,8 @@ msgid "%s \"%s\": %s" msgstr "%s \"%s\": %s" #: access/transam/xlogarchive.c:458 replication/logical/snapbuild.c:1619 -#: replication/slot.c:480 replication/slot.c:992 replication/slot.c:1100 -#: storage/file/fd.c:635 storage/file/fd.c:693 utils/time/snapmgr.c:1246 +#: replication/slot.c:496 replication/slot.c:1009 replication/slot.c:1117 +#: storage/file/fd.c:642 storage/file/fd.c:700 utils/time/snapmgr.c:1298 #, c-format msgid "could not rename file \"%s\" to \"%s\": %m" msgstr "не удалоÑÑŒ переименовать файл \"%s\" в \"%s\": %m" @@ -3242,106 +2989,107 @@ msgstr "не удалоÑÑŒ Ñоздать файл ÑоÑтоÑÐ½Ð¸Ñ Ð°Ñ€Ñ…Ð¸ msgid "could not write archive status file \"%s\": %m" msgstr "не удалоÑÑŒ запиÑать файл ÑоÑтоÑÐ½Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð° \"%s\": %m" -#: access/transam/xlogfuncs.c:58 +#: access/transam/xlogfuncs.c:56 #, c-format msgid "aborting backup due to backend exiting before pg_stop_backup was called" msgstr "" "прерывание резервного ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð·-за Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¾Ð±Ñлуживающего процеÑÑа " "до вызова pg_stop_backup" -#: access/transam/xlogfuncs.c:88 +#: access/transam/xlogfuncs.c:87 #, c-format msgid "a backup is already in progress in this session" msgstr "резервное копирование уже выполнÑетÑÑ Ð² Ñтом ÑеанÑе" -#: access/transam/xlogfuncs.c:94 commands/tablespace.c:705 -#: commands/tablespace.c:715 postmaster/postmaster.c:1406 -#: replication/basebackup.c:295 replication/basebackup.c:635 -#: storage/file/copydir.c:53 storage/file/copydir.c:96 storage/file/fd.c:2292 -#: storage/file/fd.c:2891 storage/ipc/dsm.c:300 utils/adt/genfile.c:439 +#: access/transam/xlogfuncs.c:93 commands/tablespace.c:705 +#: commands/tablespace.c:715 postmaster/postmaster.c:1424 +#: replication/basebackup.c:297 replication/basebackup.c:637 +#: storage/file/copydir.c:53 storage/file/copydir.c:96 storage/file/fd.c:2369 +#: storage/file/fd.c:2968 storage/ipc/dsm.c:300 utils/adt/genfile.c:439 #: utils/adt/misc.c:411 utils/misc/tzparser.c:339 #, c-format msgid "could not open directory \"%s\": %m" msgstr "не удалоÑÑŒ открыть каталог \"%s\": %m" -#: access/transam/xlogfuncs.c:155 access/transam/xlogfuncs.c:229 +#: access/transam/xlogfuncs.c:153 access/transam/xlogfuncs.c:226 #, c-format msgid "non-exclusive backup in progress" msgstr "выполнÑетÑÑ Ð½Ðµ монопольное резервное копирование" -#: access/transam/xlogfuncs.c:156 access/transam/xlogfuncs.c:230 +#: access/transam/xlogfuncs.c:154 access/transam/xlogfuncs.c:227 #, c-format msgid "Did you mean to use pg_stop_backup('f')?" msgstr "ВероÑтно, подразумевалоÑÑŒ pg_stop_backup('f')?" -#: access/transam/xlogfuncs.c:200 commands/event_trigger.c:1445 -#: commands/event_trigger.c:1996 commands/extension.c:1728 -#: commands/extension.c:1837 commands/extension.c:2030 commands/prepare.c:702 +#: access/transam/xlogfuncs.c:197 commands/event_trigger.c:1445 +#: commands/event_trigger.c:1996 commands/extension.c:1732 +#: commands/extension.c:1841 commands/extension.c:2034 commands/prepare.c:702 #: executor/execQual.c:1757 executor/execQual.c:1782 executor/execQual.c:2157 -#: executor/execQual.c:5423 executor/functions.c:1022 foreign/foreign.c:492 -#: replication/logical/logicalfuncs.c:175 replication/logical/origin.c:1391 -#: replication/slotfuncs.c:189 replication/walsender.c:2763 +#: executor/execQual.c:5438 executor/functions.c:1031 foreign/foreign.c:492 +#: replication/logical/logicalfuncs.c:175 replication/logical/origin.c:1394 +#: replication/slotfuncs.c:189 replication/walsender.c:2882 #: utils/adt/jsonfuncs.c:1483 utils/adt/jsonfuncs.c:1613 #: utils/adt/jsonfuncs.c:1801 utils/adt/jsonfuncs.c:1928 #: utils/adt/jsonfuncs.c:2694 utils/adt/pgstatfuncs.c:554 -#: utils/adt/pgstatfuncs.c:655 utils/fmgr/funcapi.c:61 utils/misc/guc.c:8430 -#: utils/mmgr/portalmem.c:1074 +#: utils/adt/pgstatfuncs.c:655 utils/fmgr/funcapi.c:61 utils/misc/guc.c:8436 +#: utils/mmgr/portalmem.c:1088 #, c-format msgid "set-valued function called in context that cannot accept a set" msgstr "" "функциÑ, Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÑŽÑ‰Ð°Ñ Ð¼Ð½Ð¾Ð¶ÐµÑтво, вызвана в контекÑте, где ему нет меÑта" -#: access/transam/xlogfuncs.c:204 commands/event_trigger.c:1449 -#: commands/event_trigger.c:2000 commands/extension.c:1732 -#: commands/extension.c:1841 commands/extension.c:2034 commands/prepare.c:706 +#: access/transam/xlogfuncs.c:201 commands/event_trigger.c:1449 +#: commands/event_trigger.c:2000 commands/extension.c:1736 +#: commands/extension.c:1845 commands/extension.c:2038 commands/prepare.c:706 #: foreign/foreign.c:497 replication/logical/logicalfuncs.c:179 -#: replication/logical/origin.c:1395 replication/slotfuncs.c:193 -#: replication/walsender.c:2767 utils/adt/pgstatfuncs.c:558 -#: utils/adt/pgstatfuncs.c:659 utils/misc/guc.c:8434 utils/misc/pg_config.c:44 -#: utils/mmgr/portalmem.c:1078 +#: replication/logical/origin.c:1398 replication/slotfuncs.c:193 +#: replication/walsender.c:2886 utils/adt/pgstatfuncs.c:558 +#: utils/adt/pgstatfuncs.c:659 utils/misc/guc.c:8440 utils/misc/pg_config.c:44 +#: utils/mmgr/portalmem.c:1092 #, c-format msgid "materialize mode required, but it is not allowed in this context" msgstr "требуетÑÑ Ñ€ÐµÐ¶Ð¸Ð¼ материализации, но он недопуÑтим в Ñтом контекÑте" -#: access/transam/xlogfuncs.c:247 +#: access/transam/xlogfuncs.c:243 #, c-format msgid "non-exclusive backup is not in progress" msgstr "немонопольное резервное копирование не выполнÑетÑÑ" -#: access/transam/xlogfuncs.c:248 +#: access/transam/xlogfuncs.c:244 #, c-format msgid "Did you mean to use pg_stop_backup('t')?" msgstr "ВероÑтно, подразумевалоÑÑŒ pg_stop_backup('t')?" -#: access/transam/xlogfuncs.c:326 +#: access/transam/xlogfuncs.c:321 #, c-format msgid "WAL level not sufficient for creating a restore point" msgstr "Выбранный уровень WAL не доÑтаточен Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ воÑÑтановлениÑ" -#: access/transam/xlogfuncs.c:334 +# well-spelled: Ñимв +#: access/transam/xlogfuncs.c:329 #, c-format msgid "value too long for restore point (maximum %d characters)" msgstr "значение Ð´Ð»Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ предел (%d Ñимв.)" -#: access/transam/xlogfuncs.c:472 +#: access/transam/xlogfuncs.c:467 #, c-format msgid "pg_xlogfile_name_offset() cannot be executed during recovery." msgstr "" "Функцию pg_xlogfile_name_offset() Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ во Ð²Ñ€ÐµÐ¼Ñ Ð²Ð¾ÑÑтановлениÑ." -#: access/transam/xlogfuncs.c:528 +#: access/transam/xlogfuncs.c:523 #, c-format msgid "pg_xlogfile_name() cannot be executed during recovery." msgstr "Функцию pg_xlogfile_name() Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ в процеÑÑе воÑÑтановлениÑ." -#: access/transam/xlogfuncs.c:548 access/transam/xlogfuncs.c:568 -#: access/transam/xlogfuncs.c:585 +#: access/transam/xlogfuncs.c:543 access/transam/xlogfuncs.c:563 +#: access/transam/xlogfuncs.c:580 #, c-format msgid "recovery is not in progress" msgstr "воÑÑтановление не выполнÑетÑÑ" -#: access/transam/xlogfuncs.c:549 access/transam/xlogfuncs.c:569 -#: access/transam/xlogfuncs.c:586 +#: access/transam/xlogfuncs.c:544 access/transam/xlogfuncs.c:564 +#: access/transam/xlogfuncs.c:581 #, c-format msgid "Recovery control functions can only be executed during recovery." msgstr "" @@ -3514,23 +3262,23 @@ msgstr "запиÑÑŒ Ñ Ð½ÐµÐ²ÐµÑ€Ð½Ð¾Ð¹ длиной в позиции %X/%X" msgid "invalid compressed image at %X/%X, block %d" msgstr "неверный Ñжатый образ в позиции %X/%X, блок %d" -#: access/transam/xlogutils.c:739 replication/walsender.c:2131 +#: access/transam/xlogutils.c:739 replication/walsender.c:2173 #, c-format msgid "could not read from log segment %s, offset %u, length %lu: %m" msgstr "не удалоÑÑŒ прочитать Ñегмент журнала %s (Ñмещение %u, длина %lu): %m" -#: bootstrap/bootstrap.c:269 postmaster/postmaster.c:793 tcop/postgres.c:3501 +#: bootstrap/bootstrap.c:269 postmaster/postmaster.c:811 tcop/postgres.c:3499 #, c-format msgid "--%s requires a value" msgstr "Ð´Ð»Ñ --%s требуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ" -#: bootstrap/bootstrap.c:274 postmaster/postmaster.c:798 tcop/postgres.c:3506 +#: bootstrap/bootstrap.c:274 postmaster/postmaster.c:816 tcop/postgres.c:3504 #, c-format msgid "-c %s requires a value" msgstr "Ð´Ð»Ñ -c %s требуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ" -#: bootstrap/bootstrap.c:285 postmaster/postmaster.c:810 -#: postmaster/postmaster.c:823 +#: bootstrap/bootstrap.c:285 postmaster/postmaster.c:828 +#: postmaster/postmaster.c:841 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Ð”Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации попробуйте \"%s --help\".\n" @@ -3540,144 +3288,144 @@ msgstr "Ð”Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации попробу msgid "%s: invalid command-line arguments\n" msgstr "%s: неверные аргументы командной Ñтроки\n" -#: catalog/aclchk.c:193 +#: catalog/aclchk.c:201 #, c-format msgid "grant options can only be granted to roles" msgstr "право Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð² можно давать только ролÑм" -#: catalog/aclchk.c:316 +#: catalog/aclchk.c:324 #, c-format msgid "no privileges were granted for column \"%s\" of relation \"%s\"" msgstr "Ð´Ð»Ñ Ñтолбца \"%s\" Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" не были назначены никакие права" -#: catalog/aclchk.c:321 +#: catalog/aclchk.c:329 #, c-format msgid "no privileges were granted for \"%s\"" msgstr "Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° \"%s\" не были назначены никакие права" -#: catalog/aclchk.c:329 +#: catalog/aclchk.c:337 #, c-format msgid "not all privileges were granted for column \"%s\" of relation \"%s\"" msgstr "" "Ð´Ð»Ñ Ñтолбца \"%s\" Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" были назначены не вÑе запрошенные права" -#: catalog/aclchk.c:334 +#: catalog/aclchk.c:342 #, c-format msgid "not all privileges were granted for \"%s\"" msgstr "Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° \"%s\" были назначены не вÑе запрошенные права" -#: catalog/aclchk.c:345 +#: catalog/aclchk.c:353 #, c-format msgid "no privileges could be revoked for column \"%s\" of relation \"%s\"" msgstr "Ð´Ð»Ñ Ñтолбца \"%s\" Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" не были отозваны никакие права" -#: catalog/aclchk.c:350 +#: catalog/aclchk.c:358 #, c-format msgid "no privileges could be revoked for \"%s\"" msgstr "Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° \"%s\" не были отозваны никакие права" -#: catalog/aclchk.c:358 +#: catalog/aclchk.c:366 #, c-format msgid "" "not all privileges could be revoked for column \"%s\" of relation \"%s\"" msgstr "Ð´Ð»Ñ Ñтолбца \"%s\" Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" были отозваны не вÑе права" -#: catalog/aclchk.c:363 +#: catalog/aclchk.c:371 #, c-format msgid "not all privileges could be revoked for \"%s\"" msgstr "Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° \"%s\" были отозваны не вÑе права" -#: catalog/aclchk.c:445 catalog/aclchk.c:935 +#: catalog/aclchk.c:453 catalog/aclchk.c:943 #, c-format msgid "invalid privilege type %s for relation" msgstr "право %s неприменимо Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ð¹" -#: catalog/aclchk.c:449 catalog/aclchk.c:939 +#: catalog/aclchk.c:457 catalog/aclchk.c:947 #, c-format msgid "invalid privilege type %s for sequence" msgstr "право %s неприменимо Ð´Ð»Ñ Ð¿Ð¾ÑледовательноÑтей" -#: catalog/aclchk.c:453 +#: catalog/aclchk.c:461 #, c-format msgid "invalid privilege type %s for database" msgstr "право %s неприменимо Ð´Ð»Ñ Ð±Ð°Ð· данных" -#: catalog/aclchk.c:457 +#: catalog/aclchk.c:465 #, c-format msgid "invalid privilege type %s for domain" msgstr "право %s неприменимо Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ð°" -#: catalog/aclchk.c:461 catalog/aclchk.c:943 +#: catalog/aclchk.c:469 catalog/aclchk.c:951 #, c-format msgid "invalid privilege type %s for function" msgstr "право %s неприменимо Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹" -#: catalog/aclchk.c:465 +#: catalog/aclchk.c:473 #, c-format msgid "invalid privilege type %s for language" msgstr "право %s неприменимо Ð´Ð»Ñ Ñзыков" -#: catalog/aclchk.c:469 +#: catalog/aclchk.c:477 #, c-format msgid "invalid privilege type %s for large object" msgstr "право %s неприменимо Ð´Ð»Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ñ… объектов" -#: catalog/aclchk.c:473 +#: catalog/aclchk.c:481 #, c-format msgid "invalid privilege type %s for schema" msgstr "право %s неприменимо Ð´Ð»Ñ Ñхем" -#: catalog/aclchk.c:477 +#: catalog/aclchk.c:485 #, c-format msgid "invalid privilege type %s for tablespace" msgstr "право %s неприменимо Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ‡Ð½Ñ‹Ñ… проÑтранÑтв" -#: catalog/aclchk.c:481 catalog/aclchk.c:947 +#: catalog/aclchk.c:489 catalog/aclchk.c:955 #, c-format msgid "invalid privilege type %s for type" msgstr "право %s неприменимо Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð°" -#: catalog/aclchk.c:485 +#: catalog/aclchk.c:493 #, c-format msgid "invalid privilege type %s for foreign-data wrapper" msgstr "право %s неприменимо Ð´Ð»Ñ Ð¾Ð±Ñ‘Ñ€Ñ‚Ð¾Ðº Ñторонних данных" -#: catalog/aclchk.c:489 +#: catalog/aclchk.c:497 #, c-format msgid "invalid privilege type %s for foreign server" msgstr "право %s неприменимо Ð´Ð»Ñ Ñторонних Ñерверов" -#: catalog/aclchk.c:528 +#: catalog/aclchk.c:536 #, c-format msgid "column privileges are only valid for relations" msgstr "права Ð´Ð»Ñ Ñтолбцов применимы только к отношениÑм" -#: catalog/aclchk.c:687 catalog/aclchk.c:3915 catalog/aclchk.c:4697 +#: catalog/aclchk.c:695 catalog/aclchk.c:3923 catalog/aclchk.c:4705 #: catalog/objectaddress.c:873 catalog/pg_largeobject.c:113 #: storage/large_object/inv_api.c:291 #, c-format msgid "large object %u does not exist" msgstr "большой объект %u не ÑущеÑтвует" -#: catalog/aclchk.c:874 catalog/aclchk.c:882 commands/collationcmds.c:92 -#: commands/copy.c:1008 commands/copy.c:1026 commands/copy.c:1034 -#: commands/copy.c:1042 commands/copy.c:1050 commands/copy.c:1058 -#: commands/copy.c:1066 commands/copy.c:1074 commands/copy.c:1082 -#: commands/copy.c:1098 commands/copy.c:1112 commands/copy.c:1131 -#: commands/copy.c:1146 commands/dbcommands.c:155 commands/dbcommands.c:163 +#: catalog/aclchk.c:882 catalog/aclchk.c:890 commands/collationcmds.c:92 +#: commands/copy.c:1048 commands/copy.c:1066 commands/copy.c:1074 +#: commands/copy.c:1082 commands/copy.c:1090 commands/copy.c:1098 +#: commands/copy.c:1106 commands/copy.c:1114 commands/copy.c:1122 +#: commands/copy.c:1138 commands/copy.c:1152 commands/copy.c:1171 +#: commands/copy.c:1186 commands/dbcommands.c:155 commands/dbcommands.c:163 #: commands/dbcommands.c:171 commands/dbcommands.c:179 #: commands/dbcommands.c:187 commands/dbcommands.c:195 #: commands/dbcommands.c:203 commands/dbcommands.c:211 #: commands/dbcommands.c:219 commands/dbcommands.c:1397 #: commands/dbcommands.c:1405 commands/dbcommands.c:1413 -#: commands/dbcommands.c:1421 commands/extension.c:1218 -#: commands/extension.c:1226 commands/extension.c:1234 -#: commands/extension.c:1242 commands/extension.c:2760 +#: commands/dbcommands.c:1421 commands/extension.c:1222 +#: commands/extension.c:1230 commands/extension.c:1238 +#: commands/extension.c:1246 commands/extension.c:2764 #: commands/foreigncmds.c:539 commands/foreigncmds.c:548 #: commands/functioncmds.c:533 commands/functioncmds.c:649 #: commands/functioncmds.c:657 commands/functioncmds.c:665 -#: commands/functioncmds.c:673 commands/functioncmds.c:2085 -#: commands/functioncmds.c:2093 commands/sequence.c:1189 +#: commands/functioncmds.c:673 commands/functioncmds.c:2105 +#: commands/functioncmds.c:2113 commands/sequence.c:1189 #: commands/sequence.c:1197 commands/sequence.c:1205 commands/sequence.c:1213 #: commands/sequence.c:1221 commands/sequence.c:1229 commands/sequence.c:1237 #: commands/sequence.c:1245 commands/typecmds.c:295 commands/typecmds.c:1382 @@ -3695,61 +3443,61 @@ msgstr "большой объект %u не ÑущеÑтвует" msgid "conflicting or redundant options" msgstr "конфликтующие или избыточные параметры" -#: catalog/aclchk.c:980 +#: catalog/aclchk.c:988 #, c-format msgid "default privileges cannot be set for columns" msgstr "права по умолчанию Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ Ð´Ð»Ñ Ñтолбцов" -#: catalog/aclchk.c:1494 catalog/objectaddress.c:1390 commands/analyze.c:376 -#: commands/copy.c:4419 commands/sequence.c:1491 commands/tablecmds.c:5197 -#: commands/tablecmds.c:5303 commands/tablecmds.c:5363 -#: commands/tablecmds.c:5476 commands/tablecmds.c:5533 -#: commands/tablecmds.c:5627 commands/tablecmds.c:5723 -#: commands/tablecmds.c:7875 commands/tablecmds.c:8080 -#: commands/tablecmds.c:8500 commands/trigger.c:642 parser/analyze.c:2231 -#: parser/parse_relation.c:2542 parser/parse_relation.c:2604 -#: parser/parse_target.c:940 parser/parse_type.c:127 utils/adt/acl.c:2840 -#: utils/adt/ruleutils.c:1981 +#: catalog/aclchk.c:1502 catalog/objectaddress.c:1390 commands/analyze.c:376 +#: commands/copy.c:4459 commands/sequence.c:1491 commands/tablecmds.c:5211 +#: commands/tablecmds.c:5317 commands/tablecmds.c:5377 +#: commands/tablecmds.c:5490 commands/tablecmds.c:5547 +#: commands/tablecmds.c:5641 commands/tablecmds.c:5737 +#: commands/tablecmds.c:7929 commands/tablecmds.c:8191 +#: commands/tablecmds.c:8611 commands/trigger.c:642 parser/analyze.c:2228 +#: parser/parse_relation.c:2628 parser/parse_relation.c:2690 +#: parser/parse_target.c:951 parser/parse_type.c:127 utils/adt/acl.c:2840 +#: utils/adt/ruleutils.c:1987 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist" msgstr "Ñтолбец \"%s\" в таблице \"%s\" не ÑущеÑтвует" -#: catalog/aclchk.c:1763 catalog/objectaddress.c:1203 commands/sequence.c:1078 -#: commands/tablecmds.c:223 commands/tablecmds.c:12007 utils/adt/acl.c:2076 +#: catalog/aclchk.c:1771 catalog/objectaddress.c:1203 commands/sequence.c:1078 +#: commands/tablecmds.c:224 commands/tablecmds.c:12168 utils/adt/acl.c:2076 #: utils/adt/acl.c:2106 utils/adt/acl.c:2138 utils/adt/acl.c:2170 #: utils/adt/acl.c:2198 utils/adt/acl.c:2228 #, c-format msgid "\"%s\" is not a sequence" msgstr "\"%s\" - Ñто не поÑледовательноÑть" -#: catalog/aclchk.c:1801 +#: catalog/aclchk.c:1809 #, c-format msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" msgstr "" "Ð´Ð»Ñ Ð¿Ð¾ÑледовательноÑти \"%s\" применимы только права USAGE, SELECT и UPDATE" -#: catalog/aclchk.c:1818 +#: catalog/aclchk.c:1826 #, c-format msgid "invalid privilege type USAGE for table" msgstr "право USAGE неприменимо Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†" -#: catalog/aclchk.c:1986 +#: catalog/aclchk.c:1994 #, c-format msgid "invalid privilege type %s for column" msgstr "право %s неприменимо Ð´Ð»Ñ Ñтолбцов" -#: catalog/aclchk.c:1999 +#: catalog/aclchk.c:2007 #, c-format msgid "sequence \"%s\" only supports SELECT column privileges" msgstr "Ð´Ð»Ñ Ð¿Ð¾ÑледовательноÑти \"%s\" применимо только право SELECT" # TO REVIEW -#: catalog/aclchk.c:2593 +#: catalog/aclchk.c:2601 #, c-format msgid "language \"%s\" is not trusted" msgstr "Ñзык \"%s\" не ÑвлÑетÑÑ Ð´Ð¾Ð²ÐµÑ€ÐµÐ½Ð½Ñ‹Ð¼" -#: catalog/aclchk.c:2595 +#: catalog/aclchk.c:2603 #, c-format msgid "" "GRANT and REVOKE are not allowed on untrusted languages, because only " @@ -3758,363 +3506,363 @@ msgstr "" "GRANT и REVOKE не допуÑкаютÑÑ Ð´Ð»Ñ Ð½ÐµÐ´Ð¾Ð²ÐµÑ€ÐµÐ½Ð½Ñ‹Ñ… Ñзыков, так как иÑпользовать " "такие Ñзыки могут только Ñуперпользователи." -#: catalog/aclchk.c:3121 +#: catalog/aclchk.c:3129 #, c-format msgid "cannot set privileges of array types" msgstr "Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð¾Ð² маÑÑивов Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ права" -#: catalog/aclchk.c:3122 +#: catalog/aclchk.c:3130 #, c-format msgid "Set the privileges of the element type instead." msgstr "ВмеÑто Ñтого уÑтановите права Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° Ñлемента." -#: catalog/aclchk.c:3129 catalog/objectaddress.c:1523 commands/typecmds.c:3146 +#: catalog/aclchk.c:3137 catalog/objectaddress.c:1523 commands/typecmds.c:3161 #, c-format msgid "\"%s\" is not a domain" msgstr "\"%s\" - Ñто не домен" -#: catalog/aclchk.c:3252 +#: catalog/aclchk.c:3260 #, c-format msgid "unrecognized privilege type \"%s\"" msgstr "нераÑпознанное право: \"%s\"" -#: catalog/aclchk.c:3301 +#: catalog/aclchk.c:3309 #, c-format msgid "permission denied for column %s" msgstr "нет доÑтупа к Ñтолбцу %s" -#: catalog/aclchk.c:3303 +#: catalog/aclchk.c:3311 #, c-format msgid "permission denied for relation %s" msgstr "нет доÑтупа к отношению %s" -#: catalog/aclchk.c:3305 commands/sequence.c:561 commands/sequence.c:786 +#: catalog/aclchk.c:3313 commands/sequence.c:561 commands/sequence.c:786 #: commands/sequence.c:828 commands/sequence.c:865 commands/sequence.c:1543 #, c-format msgid "permission denied for sequence %s" msgstr "нет доÑтупа к поÑледовательноÑти %s" -#: catalog/aclchk.c:3307 +#: catalog/aclchk.c:3315 #, c-format msgid "permission denied for database %s" msgstr "нет доÑтупа к базе данных %s" -#: catalog/aclchk.c:3309 +#: catalog/aclchk.c:3317 #, c-format msgid "permission denied for function %s" msgstr "нет доÑтупа к функции %s" -#: catalog/aclchk.c:3311 +#: catalog/aclchk.c:3319 #, c-format msgid "permission denied for operator %s" msgstr "нет доÑтупа к оператору %s" -#: catalog/aclchk.c:3313 +#: catalog/aclchk.c:3321 #, c-format msgid "permission denied for type %s" msgstr "нет доÑтупа к типу %s" -#: catalog/aclchk.c:3315 +#: catalog/aclchk.c:3323 #, c-format msgid "permission denied for language %s" msgstr "нет доÑтупа к Ñзыку %s" -#: catalog/aclchk.c:3317 +#: catalog/aclchk.c:3325 #, c-format msgid "permission denied for large object %s" msgstr "нет доÑтупа к большому объекту %s" -#: catalog/aclchk.c:3319 +#: catalog/aclchk.c:3327 #, c-format msgid "permission denied for schema %s" msgstr "нет доÑтупа к Ñхеме %s" -#: catalog/aclchk.c:3321 +#: catalog/aclchk.c:3329 #, c-format msgid "permission denied for operator class %s" msgstr "нет доÑтупа к клаÑÑу операторов %s" -#: catalog/aclchk.c:3323 +#: catalog/aclchk.c:3331 #, c-format msgid "permission denied for operator family %s" msgstr "нет доÑтупа к ÑемейÑтву операторов %s" -#: catalog/aclchk.c:3325 +#: catalog/aclchk.c:3333 #, c-format msgid "permission denied for collation %s" msgstr "нет доÑтупа к правилу Ñортировки %s" -#: catalog/aclchk.c:3327 +#: catalog/aclchk.c:3335 #, c-format msgid "permission denied for conversion %s" msgstr "нет доÑтупа к преобразованию %s" -#: catalog/aclchk.c:3329 +#: catalog/aclchk.c:3337 #, c-format msgid "permission denied for tablespace %s" msgstr "нет доÑтупа к табличному проÑтранÑтву %s" -#: catalog/aclchk.c:3331 +#: catalog/aclchk.c:3339 #, c-format msgid "permission denied for text search dictionary %s" msgstr "нет доÑтупа к Ñловарю текÑтового поиÑка %s" -#: catalog/aclchk.c:3333 +#: catalog/aclchk.c:3341 #, c-format msgid "permission denied for text search configuration %s" msgstr "нет доÑтупа к конфигурации текÑтового поиÑка %s" -#: catalog/aclchk.c:3335 +#: catalog/aclchk.c:3343 #, c-format msgid "permission denied for foreign-data wrapper %s" msgstr "нет доÑтупа к обёртке Ñторонних данных %s" -#: catalog/aclchk.c:3337 +#: catalog/aclchk.c:3345 #, c-format msgid "permission denied for foreign server %s" msgstr "нет доÑтупа к Ñтороннему Ñерверу %s" -#: catalog/aclchk.c:3339 +#: catalog/aclchk.c:3347 #, c-format msgid "permission denied for event trigger %s" msgstr "нет доÑтупа к Ñобытийному триггеру %s" -#: catalog/aclchk.c:3341 +#: catalog/aclchk.c:3349 #, c-format msgid "permission denied for extension %s" msgstr "нет доÑтупа к раÑширению %s" -#: catalog/aclchk.c:3347 catalog/aclchk.c:3349 +#: catalog/aclchk.c:3355 catalog/aclchk.c:3357 #, c-format msgid "must be owner of relation %s" msgstr "нужно быть владельцем Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ %s" -#: catalog/aclchk.c:3351 +#: catalog/aclchk.c:3359 #, c-format msgid "must be owner of sequence %s" msgstr "нужно быть владельцем поÑледовательноÑти %s" -#: catalog/aclchk.c:3353 +#: catalog/aclchk.c:3361 #, c-format msgid "must be owner of database %s" msgstr "нужно быть владельцем базы %s" -#: catalog/aclchk.c:3355 +#: catalog/aclchk.c:3363 #, c-format msgid "must be owner of function %s" msgstr "нужно быть владельцем функции %s" -#: catalog/aclchk.c:3357 +#: catalog/aclchk.c:3365 #, c-format msgid "must be owner of operator %s" msgstr "нужно быть владельцем оператора %s" -#: catalog/aclchk.c:3359 +#: catalog/aclchk.c:3367 #, c-format msgid "must be owner of type %s" msgstr "нужно быть владельцем типа %s" -#: catalog/aclchk.c:3361 +#: catalog/aclchk.c:3369 #, c-format msgid "must be owner of language %s" msgstr "нужно быть владельцем Ñзыка %s" -#: catalog/aclchk.c:3363 +#: catalog/aclchk.c:3371 #, c-format msgid "must be owner of large object %s" msgstr "нужно быть владельцем большого объекта %s" -#: catalog/aclchk.c:3365 +#: catalog/aclchk.c:3373 #, c-format msgid "must be owner of schema %s" msgstr "нужно быть владельцем Ñхемы %s" -#: catalog/aclchk.c:3367 +#: catalog/aclchk.c:3375 #, c-format msgid "must be owner of operator class %s" msgstr "нужно быть владельцем клаÑÑа операторов %s" -#: catalog/aclchk.c:3369 +#: catalog/aclchk.c:3377 #, c-format msgid "must be owner of operator family %s" msgstr "нужно быть владельцем ÑемейÑтва операторов %s" -#: catalog/aclchk.c:3371 +#: catalog/aclchk.c:3379 #, c-format msgid "must be owner of collation %s" msgstr "нужно быть владельцем правила Ñортировки %s" -#: catalog/aclchk.c:3373 +#: catalog/aclchk.c:3381 #, c-format msgid "must be owner of conversion %s" msgstr "нужно быть владельцем Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ %s" -#: catalog/aclchk.c:3375 +#: catalog/aclchk.c:3383 #, c-format msgid "must be owner of tablespace %s" msgstr "нужно быть владельцем табличного проÑтранÑтва %s" -#: catalog/aclchk.c:3377 +#: catalog/aclchk.c:3385 #, c-format msgid "must be owner of text search dictionary %s" msgstr "нужно быть владельцем ÑÐ»Ð¾Ð²Ð°Ñ€Ñ Ñ‚ÐµÐºÑтового поиÑка %s" -#: catalog/aclchk.c:3379 +#: catalog/aclchk.c:3387 #, c-format msgid "must be owner of text search configuration %s" msgstr "нужно быть владельцем конфигурации текÑтового поиÑка %s" -#: catalog/aclchk.c:3381 +#: catalog/aclchk.c:3389 #, c-format msgid "must be owner of foreign-data wrapper %s" msgstr "нужно быть владельцем обёртки Ñторонних данных %s" -#: catalog/aclchk.c:3383 +#: catalog/aclchk.c:3391 #, c-format msgid "must be owner of foreign server %s" msgstr "нужно быть \"владельцем\" Ñтороннего Ñервера %s" -#: catalog/aclchk.c:3385 +#: catalog/aclchk.c:3393 #, c-format msgid "must be owner of event trigger %s" msgstr "нужно быть владельцем Ñобытийного триггера %s" -#: catalog/aclchk.c:3387 +#: catalog/aclchk.c:3395 #, c-format msgid "must be owner of extension %s" msgstr "нужно быть владельцем раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ %s" -#: catalog/aclchk.c:3429 +#: catalog/aclchk.c:3437 #, c-format msgid "permission denied for column \"%s\" of relation \"%s\"" msgstr "нет доÑтупа к Ñтолбцу \"%s\" Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\"" -#: catalog/aclchk.c:3548 catalog/aclchk.c:3556 +#: catalog/aclchk.c:3556 catalog/aclchk.c:3564 #, c-format msgid "attribute %d of relation with OID %u does not exist" msgstr "атрибут %d Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ñ OID %u не ÑущеÑтвует" -#: catalog/aclchk.c:3629 catalog/aclchk.c:4548 +#: catalog/aclchk.c:3637 catalog/aclchk.c:4556 #, c-format msgid "relation with OID %u does not exist" msgstr "отношение Ñ OID %u не ÑущеÑтвует" -#: catalog/aclchk.c:3728 catalog/aclchk.c:4966 +#: catalog/aclchk.c:3736 catalog/aclchk.c:4974 #, c-format msgid "database with OID %u does not exist" msgstr "база данных Ñ OID %u не ÑущеÑтвует" -#: catalog/aclchk.c:3782 catalog/aclchk.c:4626 tcop/fastpath.c:223 +#: catalog/aclchk.c:3790 catalog/aclchk.c:4634 tcop/fastpath.c:223 #, c-format msgid "function with OID %u does not exist" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ OID %u не ÑущеÑтвует" -#: catalog/aclchk.c:3836 catalog/aclchk.c:4652 +#: catalog/aclchk.c:3844 catalog/aclchk.c:4660 #, c-format msgid "language with OID %u does not exist" msgstr "Ñзык Ñ OID %u не ÑущеÑтвует" -#: catalog/aclchk.c:4000 catalog/aclchk.c:4724 +#: catalog/aclchk.c:4008 catalog/aclchk.c:4732 #, c-format msgid "schema with OID %u does not exist" msgstr "Ñхема Ñ OID %u не ÑущеÑтвует" -#: catalog/aclchk.c:4054 catalog/aclchk.c:4751 +#: catalog/aclchk.c:4062 catalog/aclchk.c:4759 #, c-format msgid "tablespace with OID %u does not exist" msgstr "табличное проÑтранÑтво Ñ OID %u не ÑущеÑтвует" -#: catalog/aclchk.c:4113 catalog/aclchk.c:4885 commands/foreigncmds.c:325 +#: catalog/aclchk.c:4121 catalog/aclchk.c:4893 commands/foreigncmds.c:325 #, c-format msgid "foreign-data wrapper with OID %u does not exist" msgstr "обёртка Ñторонних данных Ñ OID %u не ÑущеÑтвует" -#: catalog/aclchk.c:4175 catalog/aclchk.c:4912 commands/foreigncmds.c:461 +#: catalog/aclchk.c:4183 catalog/aclchk.c:4920 commands/foreigncmds.c:461 #, c-format msgid "foreign server with OID %u does not exist" msgstr "Ñторонний Ñервер Ñ OID %u не ÑущеÑтвует" -#: catalog/aclchk.c:4235 catalog/aclchk.c:4574 +#: catalog/aclchk.c:4243 catalog/aclchk.c:4582 #, c-format msgid "type with OID %u does not exist" msgstr "тип Ñ OID %u не ÑущеÑтвует" -#: catalog/aclchk.c:4600 +#: catalog/aclchk.c:4608 #, c-format msgid "operator with OID %u does not exist" msgstr "оператор Ñ OID %u не ÑущеÑтвует" -#: catalog/aclchk.c:4777 +#: catalog/aclchk.c:4785 #, c-format msgid "operator class with OID %u does not exist" msgstr "клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð² Ñ OID %u не ÑущеÑтвует" -#: catalog/aclchk.c:4804 +#: catalog/aclchk.c:4812 #, c-format msgid "operator family with OID %u does not exist" msgstr "ÑемейÑтво операторов Ñ OID %u не ÑущеÑтвует" -#: catalog/aclchk.c:4831 +#: catalog/aclchk.c:4839 #, c-format msgid "text search dictionary with OID %u does not exist" msgstr "Ñловарь текÑтового поиÑка Ñ OID %u не ÑущеÑтвует" -#: catalog/aclchk.c:4858 +#: catalog/aclchk.c:4866 #, c-format msgid "text search configuration with OID %u does not exist" msgstr "ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñ‚ÐµÐºÑтового поиÑка Ñ OID %u не ÑущеÑтвует" -#: catalog/aclchk.c:4939 commands/event_trigger.c:587 +#: catalog/aclchk.c:4947 commands/event_trigger.c:587 #, c-format msgid "event trigger with OID %u does not exist" msgstr "Ñобытийный триггер Ñ OID %u не ÑущеÑтвует" -#: catalog/aclchk.c:4992 +#: catalog/aclchk.c:5000 #, c-format msgid "collation with OID %u does not exist" msgstr "правило Ñортировки Ñ OID %u не ÑущеÑтвует" -#: catalog/aclchk.c:5018 +#: catalog/aclchk.c:5026 #, c-format msgid "conversion with OID %u does not exist" msgstr "преобразование Ñ OID %u не ÑущеÑтвует" -#: catalog/aclchk.c:5059 +#: catalog/aclchk.c:5067 #, c-format msgid "extension with OID %u does not exist" msgstr "раÑширение Ñ OID %u не ÑущеÑтвует" -#: catalog/dependency.c:646 +#: catalog/dependency.c:645 #, c-format msgid "cannot drop %s because %s requires it" msgstr "удалить объект %s нельзÑ, так как он нужен объекту %s" -#: catalog/dependency.c:649 +#: catalog/dependency.c:648 #, c-format msgid "You can drop %s instead." msgstr "Однако можно удалить %s." -#: catalog/dependency.c:811 catalog/pg_shdepend.c:576 +#: catalog/dependency.c:810 catalog/pg_shdepend.c:576 #, c-format msgid "cannot drop %s because it is required by the database system" msgstr "удалить объект %s нельзÑ, так как он нужен ÑиÑтеме баз данных" -#: catalog/dependency.c:927 +#: catalog/dependency.c:926 #, c-format msgid "drop auto-cascades to %s" msgstr "удаление автоматичеÑки раÑпроÑтранÑетÑÑ Ð½Ð° объект %s" -#: catalog/dependency.c:939 catalog/dependency.c:948 +#: catalog/dependency.c:938 catalog/dependency.c:947 #, c-format msgid "%s depends on %s" msgstr "%s завиÑит от объекта %s" -#: catalog/dependency.c:960 catalog/dependency.c:969 +#: catalog/dependency.c:959 catalog/dependency.c:968 #, c-format msgid "drop cascades to %s" msgstr "удаление раÑпроÑтранÑетÑÑ Ð½Ð° объект %s" -#: catalog/dependency.c:977 catalog/pg_shdepend.c:687 +#: catalog/dependency.c:976 catalog/pg_shdepend.c:687 #, c-format msgid "" "\n" @@ -4132,24 +3880,24 @@ msgstr[2] "" "\n" "и ещё %d объектов (Ñм. ÑпиÑок в протоколе Ñервера)" -#: catalog/dependency.c:989 +#: catalog/dependency.c:988 #, c-format msgid "cannot drop %s because other objects depend on it" msgstr "удалить объект %s нельзÑ, так как от него завиÑÑÑ‚ другие объекты" -#: catalog/dependency.c:993 catalog/dependency.c:1000 +#: catalog/dependency.c:992 catalog/dependency.c:999 #, c-format msgid "Use DROP ... CASCADE to drop the dependent objects too." msgstr "Ð”Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð²Ð¸Ñимых объектов иÑпользуйте DROP ... CASCADE." -#: catalog/dependency.c:997 +#: catalog/dependency.c:996 #, c-format msgid "cannot drop desired object(s) because other objects depend on them" msgstr "" "удалить запрошенные объекты нельзÑ, так как от них завиÑÑÑ‚ другие объекты" #. translator: %d always has a value larger than 1 -#: catalog/dependency.c:1006 +#: catalog/dependency.c:1005 #, c-format msgid "drop cascades to %d other object" msgid_plural "drop cascades to %d other objects" @@ -4157,87 +3905,87 @@ msgstr[0] "удаление раÑпроÑтранÑетÑÑ Ð½Ð° ещё %d об msgstr[1] "удаление раÑпроÑтранÑетÑÑ Ð½Ð° ещё %d объекта" msgstr[2] "удаление раÑпроÑтранÑетÑÑ Ð½Ð° ещё %d объектов" -#: catalog/dependency.c:1634 +#: catalog/dependency.c:1633 #, c-format msgid "constant of the type \"regrole\" cannot be used here" msgstr "конÑтанту типа \"regrole\" здеÑÑŒ иÑпользовать нельзÑ" -#: catalog/heap.c:277 +#: catalog/heap.c:278 #, c-format msgid "permission denied to create \"%s.%s\"" msgstr "нет прав Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s.%s\"" -#: catalog/heap.c:279 +#: catalog/heap.c:280 #, c-format msgid "System catalog modifications are currently disallowed." msgstr "Изменение ÑиÑтемного каталога в текущем ÑоÑтоÑнии запрещено." -#: catalog/heap.c:414 commands/tablecmds.c:1438 commands/tablecmds.c:1895 -#: commands/tablecmds.c:4819 +#: catalog/heap.c:415 commands/tablecmds.c:1439 commands/tablecmds.c:1896 +#: commands/tablecmds.c:4833 #, c-format msgid "tables can have at most %d columns" msgstr "макÑимальное чиÑло Ñтолбцов в таблице: %d" -#: catalog/heap.c:431 commands/tablecmds.c:5080 +#: catalog/heap.c:432 commands/tablecmds.c:5094 #, c-format msgid "column name \"%s\" conflicts with a system column name" msgstr "Ð¸Ð¼Ñ Ñтолбца \"%s\" конфликтует Ñ ÑиÑтемным Ñтолбцом" -#: catalog/heap.c:447 +#: catalog/heap.c:448 #, c-format msgid "column name \"%s\" specified more than once" msgstr "Ð¸Ð¼Ñ Ñтолбца \"%s\" указано неоднократно" -#: catalog/heap.c:497 +#: catalog/heap.c:498 #, c-format msgid "column \"%s\" has type \"unknown\"" msgstr "Ñтолбец \"%s\" имеет неизвеÑтный тип (UNKNOWN)" -#: catalog/heap.c:498 +#: catalog/heap.c:499 #, c-format msgid "Proceeding with relation creation anyway." msgstr "ÐеÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° Ñто, Ñоздание Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶Ð°ÐµÑ‚ÑÑ." -#: catalog/heap.c:511 +#: catalog/heap.c:512 #, c-format msgid "column \"%s\" has pseudo-type %s" msgstr "Ñтолбец \"%s\" имеет пÑевдотип %s" -#: catalog/heap.c:541 +#: catalog/heap.c:542 #, c-format msgid "composite type %s cannot be made a member of itself" msgstr "ÑоÑтавной тип %s не может Ñодержать ÑÐµÐ±Ñ Ð¶Ðµ" -#: catalog/heap.c:583 commands/createas.c:201 commands/createas.c:498 +#: catalog/heap.c:584 commands/createas.c:201 commands/createas.c:498 #, c-format msgid "no collation was derived for column \"%s\" with collatable type %s" msgstr "" "Ð´Ð»Ñ Ñтолбца \"%s\" Ñ Ñортируемым типом %s не удалоÑÑŒ получить правило " "Ñортировки" -#: catalog/heap.c:585 commands/createas.c:204 commands/createas.c:501 -#: commands/indexcmds.c:1132 commands/view.c:105 regex/regc_pg_locale.c:262 +#: catalog/heap.c:586 commands/createas.c:204 commands/createas.c:501 +#: commands/indexcmds.c:1133 commands/view.c:103 regex/regc_pg_locale.c:262 #: utils/adt/formatting.c:1513 utils/adt/formatting.c:1565 #: utils/adt/formatting.c:1633 utils/adt/formatting.c:1685 #: utils/adt/formatting.c:1754 utils/adt/formatting.c:1818 utils/adt/like.c:213 -#: utils/adt/selfuncs.c:5334 utils/adt/varlena.c:1421 utils/adt/varlena.c:1826 +#: utils/adt/selfuncs.c:5434 utils/adt/varlena.c:1421 utils/adt/varlena.c:1826 #, c-format msgid "Use the COLLATE clause to set the collation explicitly." -msgstr "Задайте правило ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ñвно в предложении COLLATE." +msgstr "Задайте правило Ñортировки Ñвно в предложении COLLATE." -#: catalog/heap.c:1066 catalog/index.c:792 commands/tablecmds.c:2622 +#: catalog/heap.c:1067 catalog/index.c:792 commands/tablecmds.c:2623 #, c-format msgid "relation \"%s\" already exists" msgstr "отношение \"%s\" уже ÑущеÑтвует" -#: catalog/heap.c:1082 catalog/pg_type.c:412 catalog/pg_type.c:722 +#: catalog/heap.c:1083 catalog/pg_type.c:412 catalog/pg_type.c:737 #: commands/typecmds.c:237 commands/typecmds.c:784 commands/typecmds.c:1135 #: commands/typecmds.c:1357 commands/typecmds.c:2113 #, c-format msgid "type \"%s\" already exists" msgstr "тип \"%s\" уже ÑущеÑтвует" -#: catalog/heap.c:1083 +#: catalog/heap.c:1084 #, c-format msgid "" "A relation has an associated type of the same name, so you must use a name " @@ -4246,66 +3994,81 @@ msgstr "" "С отношением уже ÑвÑзан тип Ñ Ñ‚Ð°ÐºÐ¸Ð¼ же именем; выберите имÑ, не " "конфликтующее Ñ ÑущеÑтвующими типами." -#: catalog/heap.c:1111 +#: catalog/heap.c:1112 #, c-format msgid "pg_class heap OID value not set when in binary upgrade mode" msgstr "значение OID кучи в pg_class не задано в режиме двоичного обновлениÑ" -#: catalog/heap.c:2289 +#: catalog/heap.c:2291 #, c-format msgid "check constraint \"%s\" already exists" msgstr "ограничение-проверка \"%s\" уже ÑущеÑтвует" -#: catalog/heap.c:2442 catalog/pg_constraint.c:654 commands/tablecmds.c:6068 +#: catalog/heap.c:2456 catalog/pg_constraint.c:654 commands/tablecmds.c:6082 #, c-format msgid "constraint \"%s\" for relation \"%s\" already exists" msgstr "ограничение \"%s\" Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" уже ÑущеÑтвует" -#: catalog/heap.c:2452 +#: catalog/heap.c:2463 #, c-format msgid "" "constraint \"%s\" conflicts with non-inherited constraint on relation \"%s\"" msgstr "" "ограничение \"%s\" конфликтует Ñ Ð½ÐµÐ½Ð°Ñледуемым ограничением таблицы \"%s\"" -#: catalog/heap.c:2466 +#: catalog/heap.c:2474 +#, c-format +msgid "" +"constraint \"%s\" conflicts with inherited constraint on relation \"%s\"" +msgstr "" +"ограничение \"%s\" конфликтует Ñ Ð½Ð°Ñледуемым ограничением таблицы \"%s\"" + +#: catalog/heap.c:2484 +#, c-format +msgid "" +"constraint \"%s\" conflicts with NOT VALID constraint on relation \"%s\"" +msgstr "" +"ограничение \"%s\" конфликтует Ñ Ð½ÐµÐ¿Ñ€Ð¾Ð²ÐµÑ€ÐµÐ½Ð½Ñ‹Ð¼ (NOT VALID) ограничением " +"таблицы \"%s\"" + +#: catalog/heap.c:2489 #, c-format msgid "merging constraint \"%s\" with inherited definition" msgstr "ÑлиÑние Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ \"%s\" Ñ ÑƒÐ½Ð°Ñледованным определением" -#: catalog/heap.c:2559 +#: catalog/heap.c:2595 #, c-format msgid "cannot use column references in default expression" msgstr "в выражении по умолчанию Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð½Ð° Ñтолбцы" -#: catalog/heap.c:2570 +#: catalog/heap.c:2606 #, c-format msgid "default expression must not return a set" msgstr "выражение по умолчанию не может возвращать множеÑтво" -#: catalog/heap.c:2589 rewrite/rewriteHandler.c:1084 +#: catalog/heap.c:2625 rewrite/rewriteHandler.c:1115 #, c-format msgid "column \"%s\" is of type %s but default expression is of type %s" msgstr "Ñтолбец \"%s\" имеет тип %s, но тип Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию %s" -#: catalog/heap.c:2594 commands/prepare.c:374 parser/parse_node.c:428 -#: parser/parse_target.c:528 parser/parse_target.c:778 -#: parser/parse_target.c:788 rewrite/rewriteHandler.c:1089 +#: catalog/heap.c:2630 commands/prepare.c:374 parser/parse_node.c:428 +#: parser/parse_target.c:539 parser/parse_target.c:789 +#: parser/parse_target.c:799 rewrite/rewriteHandler.c:1120 #, c-format msgid "You will need to rewrite or cast the expression." msgstr "Перепишите выражение или преобразуйте его тип." -#: catalog/heap.c:2641 +#: catalog/heap.c:2677 #, c-format msgid "only table \"%s\" can be referenced in check constraint" msgstr "в ограничении-проверке можно ÑÑылатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на таблицу \"%s\"" -#: catalog/heap.c:2881 +#: catalog/heap.c:2917 #, c-format msgid "unsupported ON COMMIT and foreign key combination" msgstr "неподдерживаемое Ñочетание внешнего ключа Ñ ON COMMIT" -#: catalog/heap.c:2882 +#: catalog/heap.c:2918 #, c-format msgid "" "Table \"%s\" references \"%s\", but they do not have the same ON COMMIT " @@ -4313,23 +4076,23 @@ msgid "" msgstr "" "Таблица \"%s\" ÑÑылаетÑÑ Ð½Ð° \"%s\", и Ð´Ð»Ñ Ð½Ð¸Ñ… задан разный режим ON COMMIT." -#: catalog/heap.c:2887 +#: catalog/heap.c:2923 #, c-format msgid "cannot truncate a table referenced in a foreign key constraint" msgstr "опуÑтошить таблицу, на которую ÑÑылаетÑÑ Ð²Ð½ÐµÑˆÐ½Ð¸Ð¹ ключ, нельзÑ" -#: catalog/heap.c:2888 +#: catalog/heap.c:2924 #, c-format msgid "Table \"%s\" references \"%s\"." msgstr "Таблица \"%s\" ÑÑылаетÑÑ Ð½Ð° \"%s\"." -#: catalog/heap.c:2890 +#: catalog/heap.c:2926 #, c-format msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." msgstr "" "ОпуÑтошите таблицу \"%s\" параллельно или иÑпользуйте TRUNCATE ... CASCADE." -#: catalog/index.c:210 parser/parse_utilcmd.c:1488 parser/parse_utilcmd.c:1574 +#: catalog/index.c:210 parser/parse_utilcmd.c:1474 parser/parse_utilcmd.c:1560 #, c-format msgid "multiple primary keys for table \"%s\" are not allowed" msgstr "таблица \"%s\" не может иметь неÑколько первичных ключей" @@ -4389,12 +4152,6 @@ msgstr "переиндекÑировать временные таблицы д msgid "index \"%s\" was reindexed" msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" был переÑтроен" -#: catalog/index.c:3456 commands/vacuumlazy.c:1338 commands/vacuumlazy.c:1414 -#: commands/vacuumlazy.c:1603 commands/vacuumlazy.c:1813 -#, c-format -msgid "%s." -msgstr "%s." - #: catalog/namespace.c:249 catalog/namespace.c:447 catalog/namespace.c:541 #: commands/trigger.c:4523 #, c-format @@ -4416,19 +4173,19 @@ msgstr "не удалоÑÑŒ получить блокировку таблицы msgid "could not obtain lock on relation \"%s\"" msgstr "не удалоÑÑŒ получить блокировку таблицы \"%s\"" -#: catalog/namespace.c:414 parser/parse_relation.c:1137 +#: catalog/namespace.c:414 parser/parse_relation.c:1138 #, c-format msgid "relation \"%s.%s\" does not exist" msgstr "отношение \"%s.%s\" не ÑущеÑтвует" -#: catalog/namespace.c:419 parser/parse_relation.c:1150 -#: parser/parse_relation.c:1158 utils/adt/regproc.c:1034 +#: catalog/namespace.c:419 parser/parse_relation.c:1151 +#: parser/parse_relation.c:1159 utils/adt/regproc.c:1035 #, c-format msgid "relation \"%s\" does not exist" msgstr "отношение \"%s\" не ÑущеÑтвует" -#: catalog/namespace.c:487 catalog/namespace.c:2841 commands/extension.c:1382 -#: commands/extension.c:1388 +#: catalog/namespace.c:487 catalog/namespace.c:2841 commands/extension.c:1386 +#: commands/extension.c:1392 #, c-format msgid "no schema has been selected to create in" msgstr "Ñхема Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð² не выбрана" @@ -4469,13 +4226,13 @@ msgstr "шаблон текÑтового поиÑка \"%s\" не ÑущеÑÑ‚ msgid "text search configuration \"%s\" does not exist" msgstr "ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñ‚ÐµÐºÑтового поиÑка \"%s\" не ÑущеÑтвует" -#: catalog/namespace.c:2646 parser/parse_expr.c:792 parser/parse_target.c:1130 +#: catalog/namespace.c:2646 parser/parse_expr.c:792 parser/parse_target.c:1141 #, c-format msgid "cross-database references are not implemented: %s" msgstr "ÑÑылки между базами не реализованы: %s" -#: catalog/namespace.c:2652 parser/parse_expr.c:799 parser/parse_target.c:1137 -#: gram.y:13441 gram.y:14810 +#: catalog/namespace.c:2652 parser/parse_expr.c:799 parser/parse_target.c:1148 +#: gram.y:13463 gram.y:14832 #, c-format msgid "improper qualified name (too many dotted names): %s" msgstr "неверное полное Ð¸Ð¼Ñ (Ñлишком много компонентов): %s" @@ -4491,7 +4248,7 @@ msgid "cannot move objects into or out of TOAST schema" msgstr "перемещать объекты в/из Ñхем TOAST нельзÑ" #: catalog/namespace.c:2862 commands/schemacmds.c:238 commands/schemacmds.c:317 -#: commands/tablecmds.c:740 +#: commands/tablecmds.c:741 #, c-format msgid "schema \"%s\" does not exist" msgstr "Ñхема \"%s\" не ÑущеÑтвует" @@ -4523,11 +4280,11 @@ msgstr "Ñоздавать временные таблицы в процеÑÑе #: catalog/namespace.c:3688 #, c-format -msgid "cannot create temporary tables in parallel mode" -msgstr "Ñоздавать временные таблицы в параллельном режиме нельзÑ" +msgid "cannot create temporary tables during a parallel operation" +msgstr "Ñоздавать временные таблицы во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð°Ñ€Ð°Ð»Ð»ÐµÐ»ÑŒÐ½Ñ‹Ñ… операций нельзÑ" #: catalog/namespace.c:3932 commands/tablespace.c:1173 commands/variable.c:63 -#: utils/misc/guc.c:9859 +#: utils/misc/guc.c:9875 #, c-format msgid "List syntax is invalid." msgstr "Ошибка ÑинтакÑиÑа в ÑпиÑке." @@ -4540,7 +4297,7 @@ msgstr "Ð¸Ð¼Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° доÑтупа не может быть ÑоÑтав msgid "database name cannot be qualified" msgstr "Ð¸Ð¼Ñ Ð±Ð°Ð·Ñ‹ данных не может быть ÑоÑтавным" -#: catalog/objectaddress.c:1071 commands/extension.c:2506 +#: catalog/objectaddress.c:1071 commands/extension.c:2510 #, c-format msgid "extension name cannot be qualified" msgstr "Ð¸Ð¼Ñ Ñ€Ð°ÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½Ðµ может быть ÑоÑтавным" @@ -4574,27 +4331,27 @@ msgid "event trigger name cannot be qualified" msgstr "Ð¸Ð¼Ñ Ñобытийного триггера не может быть ÑоÑтавным" #: catalog/objectaddress.c:1210 commands/lockcmds.c:94 commands/policy.c:94 -#: commands/policy.c:382 commands/policy.c:471 commands/tablecmds.c:217 -#: commands/tablecmds.c:1299 commands/tablecmds.c:4346 -#: commands/tablecmds.c:7977 +#: commands/policy.c:382 commands/policy.c:471 commands/tablecmds.c:218 +#: commands/tablecmds.c:1300 commands/tablecmds.c:4347 +#: commands/tablecmds.c:8031 #, c-format msgid "\"%s\" is not a table" msgstr "\"%s\" - Ñто не таблица" -#: catalog/objectaddress.c:1217 commands/tablecmds.c:229 -#: commands/tablecmds.c:4376 commands/tablecmds.c:12012 commands/view.c:143 +#: catalog/objectaddress.c:1217 commands/tablecmds.c:230 +#: commands/tablecmds.c:4377 commands/tablecmds.c:12173 commands/view.c:141 #, c-format msgid "\"%s\" is not a view" msgstr "\"%s\" - Ñто не предÑтавление" -#: catalog/objectaddress.c:1224 commands/matview.c:174 commands/tablecmds.c:235 -#: commands/tablecmds.c:12017 +#: catalog/objectaddress.c:1224 commands/matview.c:174 commands/tablecmds.c:236 +#: commands/tablecmds.c:12178 #, c-format msgid "\"%s\" is not a materialized view" msgstr "\"%s\" - Ñто не материализованное предÑтавление" -#: catalog/objectaddress.c:1231 commands/tablecmds.c:253 -#: commands/tablecmds.c:4379 commands/tablecmds.c:12022 +#: catalog/objectaddress.c:1231 commands/tablecmds.c:254 +#: commands/tablecmds.c:4380 commands/tablecmds.c:12183 #, c-format msgid "\"%s\" is not a foreign table" msgstr "\"%s\" - Ñто не ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°" @@ -4611,9 +4368,9 @@ msgstr "" "значение по умолчанию Ð´Ð»Ñ Ñтолбца \"%s\" Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" не ÑущеÑтвует" #: catalog/objectaddress.c:1512 commands/functioncmds.c:128 -#: commands/tablecmds.c:245 commands/typecmds.c:3214 parser/parse_type.c:226 +#: commands/tablecmds.c:246 commands/typecmds.c:3229 parser/parse_type.c:226 #: parser/parse_type.c:255 parser/parse_type.c:795 utils/adt/acl.c:4374 -#: utils/adt/regproc.c:1225 +#: utils/adt/regproc.c:1226 #, c-format msgid "type \"%s\" does not exist" msgstr "тип \"%s\" не ÑущеÑтвует" @@ -4623,163 +4380,163 @@ msgstr "тип \"%s\" не ÑущеÑтвует" msgid "operator %d (%s, %s) of %s does not exist" msgstr "оператор %d (%s, %s) из ÑемейÑтва %s не ÑущеÑтвует" -#: catalog/objectaddress.c:1658 +#: catalog/objectaddress.c:1660 #, c-format msgid "function %d (%s, %s) of %s does not exist" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %d (%s, %s) из ÑемейÑтва %s не ÑущеÑтвует" -#: catalog/objectaddress.c:1707 catalog/objectaddress.c:1733 +#: catalog/objectaddress.c:1711 catalog/objectaddress.c:1737 #, c-format msgid "user mapping for user \"%s\" on server \"%s\" does not exist" msgstr "ÑопоÑтавление Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\" на Ñервере \"%s\" не ÑущеÑтвует" -#: catalog/objectaddress.c:1722 commands/foreigncmds.c:430 +#: catalog/objectaddress.c:1726 commands/foreigncmds.c:430 #: commands/foreigncmds.c:997 commands/foreigncmds.c:1359 foreign/foreign.c:692 #, c-format msgid "server \"%s\" does not exist" msgstr "Ñервер \"%s\" не ÑущеÑтвует" -#: catalog/objectaddress.c:1794 +#: catalog/objectaddress.c:1798 #, c-format msgid "unrecognized default ACL object type %c" msgstr "нераÑпознанный тип объекта ACL по умолчанию: %c" -#: catalog/objectaddress.c:1795 +#: catalog/objectaddress.c:1799 #, c-format msgid "Valid object types are \"r\", \"S\", \"f\", and \"T\"." msgstr "ДопуÑтимые значениÑ: \"r\", \"S\", \"f\" и \"T\"." -#: catalog/objectaddress.c:1841 +#: catalog/objectaddress.c:1845 #, c-format msgid "default ACL for user \"%s\" in schema \"%s\" on %s does not exist" msgstr "" "ACL по умолчанию Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\" в Ñхеме \"%s\" Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %s не " "ÑущеÑтвует" -#: catalog/objectaddress.c:1846 +#: catalog/objectaddress.c:1850 #, c-format msgid "default ACL for user \"%s\" on %s does not exist" msgstr "" "ACL по умолчанию Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\" и Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %s не ÑущеÑтвует" -#: catalog/objectaddress.c:1873 catalog/objectaddress.c:1929 -#: catalog/objectaddress.c:1984 +#: catalog/objectaddress.c:1877 catalog/objectaddress.c:1933 +#: catalog/objectaddress.c:1988 #, c-format msgid "name or argument lists may not contain nulls" msgstr "ÑпиÑки имён и аргументов не должны Ñодержать NULL" -#: catalog/objectaddress.c:1905 +#: catalog/objectaddress.c:1909 #, c-format msgid "unsupported object type \"%s\"" msgstr "неподдерживаемый тип объекта: \"%s\"" -#: catalog/objectaddress.c:1925 catalog/objectaddress.c:1943 +#: catalog/objectaddress.c:1929 catalog/objectaddress.c:1947 #, c-format msgid "name list length must be exactly %d" msgstr "длина ÑпиÑка имён должна быть равна %d" -#: catalog/objectaddress.c:1947 +#: catalog/objectaddress.c:1951 #, c-format msgid "large object OID may not be null" msgstr "OID большого объекта не может быть NULL" -#: catalog/objectaddress.c:1956 catalog/objectaddress.c:2016 -#: catalog/objectaddress.c:2023 +#: catalog/objectaddress.c:1960 catalog/objectaddress.c:2020 +#: catalog/objectaddress.c:2027 #, c-format msgid "name list length must be at least %d" msgstr "длина ÑпиÑка аргументов должна быть не меньше %d" -#: catalog/objectaddress.c:2009 catalog/objectaddress.c:2029 +#: catalog/objectaddress.c:2013 catalog/objectaddress.c:2033 #, c-format msgid "argument list length must be exactly %d" msgstr "длина ÑпиÑка аргументов должна быть равна %d" -#: catalog/objectaddress.c:2165 libpq/be-fsstubs.c:350 +#: catalog/objectaddress.c:2169 libpq/be-fsstubs.c:350 #, c-format msgid "must be owner of large object %u" msgstr "нужно быть владельцем большого объекта %u" -#: catalog/objectaddress.c:2180 commands/functioncmds.c:1426 +#: catalog/objectaddress.c:2184 commands/functioncmds.c:1446 #, c-format msgid "must be owner of type %s or type %s" msgstr "Ñто разрешено только владельцу типа %s или %s" -#: catalog/objectaddress.c:2220 catalog/objectaddress.c:2237 +#: catalog/objectaddress.c:2224 catalog/objectaddress.c:2241 #, c-format msgid "must be superuser" msgstr "требуютÑÑ Ð¿Ñ€Ð°Ð²Ð° ÑуперпользователÑ" -#: catalog/objectaddress.c:2227 +#: catalog/objectaddress.c:2231 #, c-format msgid "must have CREATEROLE privilege" msgstr "требуетÑÑ Ð¿Ñ€Ð°Ð²Ð¾ CREATEROLE" -#: catalog/objectaddress.c:2307 +#: catalog/objectaddress.c:2306 #, c-format msgid "unrecognized object type \"%s\"" msgstr "нераÑпознанный тип объекта \"%s\"" -#: catalog/objectaddress.c:2502 +#: catalog/objectaddress.c:2501 #, c-format msgid " column %s" msgstr " Ñтолбец %s" -#: catalog/objectaddress.c:2508 +#: catalog/objectaddress.c:2507 #, c-format msgid "function %s" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %s" -#: catalog/objectaddress.c:2513 +#: catalog/objectaddress.c:2512 #, c-format msgid "type %s" msgstr "тип %s" -#: catalog/objectaddress.c:2543 +#: catalog/objectaddress.c:2542 #, c-format msgid "cast from %s to %s" msgstr "приведение %s к %s" -#: catalog/objectaddress.c:2563 +#: catalog/objectaddress.c:2562 #, c-format msgid "collation %s" msgstr "правило Ñортировки %s" -#: catalog/objectaddress.c:2587 +#: catalog/objectaddress.c:2586 #, c-format msgid "constraint %s on %s" msgstr "ограничение %s в отношении %s" -#: catalog/objectaddress.c:2593 +#: catalog/objectaddress.c:2592 #, c-format msgid "constraint %s" msgstr "ограничение %s" -#: catalog/objectaddress.c:2610 +#: catalog/objectaddress.c:2609 #, c-format msgid "conversion %s" msgstr "преобразование %s" -#: catalog/objectaddress.c:2647 +#: catalog/objectaddress.c:2646 #, c-format msgid "default for %s" msgstr "значение по умолчанию, %s" -#: catalog/objectaddress.c:2656 +#: catalog/objectaddress.c:2655 #, c-format msgid "language %s" msgstr "Ñзык %s" -#: catalog/objectaddress.c:2661 +#: catalog/objectaddress.c:2660 #, c-format msgid "large object %u" msgstr "большой объект %u" -#: catalog/objectaddress.c:2666 +#: catalog/objectaddress.c:2665 #, c-format msgid "operator %s" msgstr "оператор %s" -#: catalog/objectaddress.c:2698 +#: catalog/objectaddress.c:2697 #, c-format msgid "operator class %s for access method %s" msgstr "клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð² %s Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° доÑтупа %s" @@ -4788,7 +4545,7 @@ msgstr "клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð² %s Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° доÑтупа %s #. first two %s's are data type names, the third %s is the #. description of the operator family, and the last %s is the #. textual form of the operator with arguments. -#: catalog/objectaddress.c:2748 +#: catalog/objectaddress.c:2747 #, c-format msgid "operator %d (%s, %s) of %s: %s" msgstr "оператор %d (%s, %s) из ÑемейÑтва \"%s\": %s" @@ -4797,178 +4554,178 @@ msgstr "оператор %d (%s, %s) из ÑемейÑтва \"%s\": %s" #. are data type names, the third %s is the description of the #. operator family, and the last %s is the textual form of the #. function with arguments. -#: catalog/objectaddress.c:2798 +#: catalog/objectaddress.c:2797 #, c-format msgid "function %d (%s, %s) of %s: %s" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %d (%s, %s) из ÑемейÑтва \"%s\": %s" -#: catalog/objectaddress.c:2838 +#: catalog/objectaddress.c:2837 #, c-format msgid "rule %s on " msgstr "правило %s Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ: " -#: catalog/objectaddress.c:2860 +#: catalog/objectaddress.c:2859 #, c-format msgid "transform for %s language %s" msgstr "преобразование Ð´Ð»Ñ %s, Ñзыка %s" -#: catalog/objectaddress.c:2894 +#: catalog/objectaddress.c:2893 #, c-format msgid "trigger %s on " msgstr "триггер %s в отношении: " -#: catalog/objectaddress.c:2911 +#: catalog/objectaddress.c:2910 #, c-format msgid "schema %s" msgstr "Ñхема %s" -#: catalog/objectaddress.c:2924 +#: catalog/objectaddress.c:2923 #, c-format msgid "text search parser %s" msgstr "анализатор текÑтового поиÑка %s" -#: catalog/objectaddress.c:2939 +#: catalog/objectaddress.c:2938 #, c-format msgid "text search dictionary %s" msgstr "Ñловарь текÑтового поиÑка %s" -#: catalog/objectaddress.c:2954 +#: catalog/objectaddress.c:2953 #, c-format msgid "text search template %s" msgstr "шаблон текÑтового поиÑка %s" -#: catalog/objectaddress.c:2969 +#: catalog/objectaddress.c:2968 #, c-format msgid "text search configuration %s" msgstr "ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñ‚ÐµÐºÑтового поиÑка %s" -#: catalog/objectaddress.c:2977 +#: catalog/objectaddress.c:2976 #, c-format msgid "role %s" msgstr "роль %s" -#: catalog/objectaddress.c:2990 +#: catalog/objectaddress.c:2989 #, c-format msgid "database %s" msgstr "база данных %s" -#: catalog/objectaddress.c:3002 +#: catalog/objectaddress.c:3001 #, c-format msgid "tablespace %s" msgstr "табличное проÑтранÑтво %s" -#: catalog/objectaddress.c:3011 +#: catalog/objectaddress.c:3010 #, c-format msgid "foreign-data wrapper %s" msgstr "обёртка Ñторонних данных %s" -#: catalog/objectaddress.c:3020 +#: catalog/objectaddress.c:3019 #, c-format msgid "server %s" msgstr "Ñервер %s" -#: catalog/objectaddress.c:3048 +#: catalog/objectaddress.c:3047 #, c-format msgid "user mapping for %s on server %s" msgstr "ÑопоÑтавление Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %s на Ñервере %s" -#: catalog/objectaddress.c:3083 +#: catalog/objectaddress.c:3082 #, c-format msgid "default privileges on new relations belonging to role %s" msgstr "права по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… отношений, принадлежащих роли %s" -#: catalog/objectaddress.c:3088 +#: catalog/objectaddress.c:3087 #, c-format msgid "default privileges on new sequences belonging to role %s" msgstr "" "права по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… поÑледовательноÑтей, принадлежащих роли %s" -#: catalog/objectaddress.c:3093 +#: catalog/objectaddress.c:3092 #, c-format msgid "default privileges on new functions belonging to role %s" msgstr "права по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… функций, принадлежащих роли %s" -#: catalog/objectaddress.c:3098 +#: catalog/objectaddress.c:3097 #, c-format msgid "default privileges on new types belonging to role %s" msgstr "права по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… типов, принадлежащих роли %s" -#: catalog/objectaddress.c:3104 +#: catalog/objectaddress.c:3103 #, c-format msgid "default privileges belonging to role %s" msgstr "права по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… объектов, принадлежащих роли %s" -#: catalog/objectaddress.c:3112 +#: catalog/objectaddress.c:3111 #, c-format msgid " in schema %s" msgstr " в Ñхеме %s" -#: catalog/objectaddress.c:3129 +#: catalog/objectaddress.c:3128 #, c-format msgid "extension %s" msgstr "раÑширение %s" -#: catalog/objectaddress.c:3142 +#: catalog/objectaddress.c:3141 #, c-format msgid "event trigger %s" msgstr "Ñобытийный триггер %s" -#: catalog/objectaddress.c:3174 +#: catalog/objectaddress.c:3173 #, c-format msgid "policy %s on " msgstr "политика %s Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ " -#: catalog/objectaddress.c:3192 +#: catalog/objectaddress.c:3191 #, c-format msgid "access method %s" msgstr "метод доÑтупа %s" -#: catalog/objectaddress.c:3252 +#: catalog/objectaddress.c:3251 #, c-format msgid "table %s" msgstr "таблица %s" -#: catalog/objectaddress.c:3256 +#: catalog/objectaddress.c:3255 #, c-format msgid "index %s" msgstr "Ð¸Ð½Ð´ÐµÐºÑ %s" -#: catalog/objectaddress.c:3260 +#: catalog/objectaddress.c:3259 #, c-format msgid "sequence %s" msgstr "поÑледовательноÑть %s" -#: catalog/objectaddress.c:3264 +#: catalog/objectaddress.c:3263 #, c-format msgid "toast table %s" msgstr "TOAST-таблица %s" -#: catalog/objectaddress.c:3268 +#: catalog/objectaddress.c:3267 #, c-format msgid "view %s" msgstr "предÑтавление %s" -#: catalog/objectaddress.c:3272 +#: catalog/objectaddress.c:3271 #, c-format msgid "materialized view %s" msgstr "материализованное предÑтавление %s" -#: catalog/objectaddress.c:3276 +#: catalog/objectaddress.c:3275 #, c-format msgid "composite type %s" msgstr "ÑоÑтавной тип %s" -#: catalog/objectaddress.c:3280 +#: catalog/objectaddress.c:3279 #, c-format msgid "foreign table %s" msgstr "ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° %s" -#: catalog/objectaddress.c:3285 +#: catalog/objectaddress.c:3284 #, c-format msgid "relation %s" msgstr "отношение %s" -#: catalog/objectaddress.c:3322 +#: catalog/objectaddress.c:3321 #, c-format msgid "operator family %s for access method %s" msgstr "ÑемейÑтво операторов %s Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° доÑтупа %s" @@ -5030,7 +4787,7 @@ msgstr "" msgid "return type of inverse transition function %s is not %s" msgstr "Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð° %s должна возвращать тип %s" -#: catalog/pg_aggregate.c:351 executor/nodeWindowAgg.c:2301 +#: catalog/pg_aggregate.c:351 executor/nodeWindowAgg.c:2334 #, c-format msgid "" "strictness of aggregate's forward and inverse transition functions must match" @@ -5051,10 +4808,9 @@ msgstr "ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð¸Ñ€ÑƒÑŽÑ‰Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %s должна возвращ #: catalog/pg_aggregate.c:436 #, c-format -msgid "" -"combine function with \"%s\" transition type must not be declared STRICT" +msgid "combine function with transition type %s must not be declared STRICT" msgstr "" -"ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð¸Ñ€ÑƒÑŽÑ‰Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð½Ñ‹Ð¼ типом \"%s\" не должна объÑвлÑтьÑÑ ÐºÐ°Ðº " +"ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð¸Ñ€ÑƒÑŽÑ‰Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð½Ñ‹Ð¼ типом %s не должна объÑвлÑтьÑÑ ÐºÐ°Ðº " "ÑÑ‚Ñ€Ð¾Ð³Ð°Ñ (STRICT)" #: catalog/pg_aggregate.c:455 @@ -5183,7 +4939,7 @@ msgstr "преобразование \"%s\" уже ÑущеÑтвует" msgid "default conversion for %s to %s already exists" msgstr "преобразование по умолчанию из %s в %s уже ÑущеÑтвует" -#: catalog/pg_depend.c:165 commands/extension.c:3028 +#: catalog/pg_depend.c:165 commands/extension.c:3032 #, c-format msgid "%s is already a member of extension \"%s\"" msgstr "%s уже отноÑитÑÑ Ðº раÑширению \"%s\"" @@ -5407,7 +5163,7 @@ msgstr "SQL-функции не могут возвращать тип %s" msgid "SQL functions cannot have arguments of type %s" msgstr "SQL-функции не могут иметь аргументы типа %s" -#: catalog/pg_proc.c:973 executor/functions.c:1422 +#: catalog/pg_proc.c:973 executor/functions.c:1431 #, c-format msgid "SQL function \"%s\"" msgstr "SQL-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\"" @@ -5520,13 +5276,13 @@ msgstr "выравнивание \"%c\" не подходит Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° п msgid "fixed-size types must have storage PLAIN" msgstr "Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð¾Ð² поÑтоÑнного размера применим только режим Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ PLAIN" -#: catalog/pg_type.c:789 +#: catalog/pg_type.c:809 #, c-format msgid "could not form array type name for type \"%s\"" msgstr "не удалоÑÑŒ Ñформировать Ð¸Ð¼Ñ Ñ‚Ð¸Ð¿Ð° маÑÑива Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° \"%s\"" -#: catalog/toasting.c:105 commands/indexcmds.c:389 commands/tablecmds.c:4358 -#: commands/tablecmds.c:11900 +#: catalog/toasting.c:105 commands/indexcmds.c:389 commands/tablecmds.c:4359 +#: commands/tablecmds.c:12061 #, c-format msgid "\"%s\" is not a table or materialized view" msgstr "\"%s\" - Ñто не таблица и не материализованное предÑтавление" @@ -5702,7 +5458,7 @@ msgstr "метод доÑтупа \"%s\" уже ÑущеÑтвует" msgid "must be superuser to drop access methods" msgstr "Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð¾Ð² доÑтупа нужно быть Ñуперпользователем" -#: commands/amcmds.c:175 commands/indexcmds.c:164 commands/indexcmds.c:495 +#: commands/amcmds.c:175 commands/indexcmds.c:164 commands/indexcmds.c:496 #: commands/opclasscmds.c:365 commands/opclasscmds.c:790 #, c-format msgid "access method \"%s\" does not exist" @@ -5801,7 +5557,7 @@ msgstr "" "пропуÑкаетÑÑ Ð°Ð½Ð°Ð»Ð¸Ð· дерева наÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ \"%s.%s\" --- Ñто дерево " "наÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ Ñодержит анализируемых дочерних таблиц" -#: commands/analyze.c:1420 executor/execQual.c:2927 +#: commands/analyze.c:1420 commands/tablecmds.c:8093 executor/execQual.c:2927 msgid "could not convert row type" msgstr "не удалоÑÑŒ преобразовать тип Ñтроки" @@ -5865,7 +5621,7 @@ msgstr "клаÑтеризовать временные таблицы друг msgid "there is no previously clustered index for table \"%s\"" msgstr "таблица \"%s\" ранее не клаÑтеризовалаÑÑŒ по какому-либо индекÑу" -#: commands/cluster.c:173 commands/tablecmds.c:9286 commands/tablecmds.c:11002 +#: commands/cluster.c:173 commands/tablecmds.c:9397 commands/tablecmds.c:11157 #, c-format msgid "index \"%s\" for table \"%s\" does not exist" msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\" не ÑущеÑтвует" @@ -5880,7 +5636,7 @@ msgstr "клаÑтеризовать разделÑемый каталог не msgid "cannot vacuum temporary tables of other sessions" msgstr "очищать временные таблицы других ÑеанÑов нельзÑ" -#: commands/cluster.c:431 commands/tablecmds.c:11012 +#: commands/cluster.c:431 commands/tablecmds.c:11167 #, c-format msgid "\"%s\" is not an index for table \"%s\"" msgstr "\"%s\" не ÑвлÑетÑÑ Ð¸Ð½Ð´ÐµÐºÑом таблицы \"%s\"" @@ -5903,23 +5659,23 @@ msgstr "клаÑтеризовать по чаÑтичному индекÑу \" msgid "cannot cluster on invalid index \"%s\"" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ ÐºÐ»Ð°Ñтеризовать таблицу по неверному индекÑу \"%s\"" -#: commands/cluster.c:918 +#: commands/cluster.c:920 #, c-format msgid "clustering \"%s.%s\" using index scan on \"%s\"" msgstr "клаÑÑ‚ÐµÑ€Ð¸Ð·Ð°Ñ†Ð¸Ñ \"%s.%s\" путём ÑÐºÐ°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа \"%s\"" -#: commands/cluster.c:924 +#: commands/cluster.c:926 #, c-format msgid "clustering \"%s.%s\" using sequential scan and sort" msgstr "" "клаÑÑ‚ÐµÑ€Ð¸Ð·Ð°Ñ†Ð¸Ñ \"%s.%s\" путём поÑледовательного ÑÐºÐ°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ Ñортировки" -#: commands/cluster.c:929 commands/vacuumlazy.c:479 +#: commands/cluster.c:931 commands/vacuumlazy.c:484 #, c-format msgid "vacuuming \"%s.%s\"" msgstr "очиÑтка \"%s.%s\"" -#: commands/cluster.c:1088 +#: commands/cluster.c:1090 #, c-format msgid "" "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages" @@ -5927,7 +5683,7 @@ msgstr "" "\"%s\": найдено удалÑемых верÑий Ñтрок: %.0f, неудалÑемых - %.0f, " "проÑмотрено Ñтраниц: %u" -#: commands/cluster.c:1092 +#: commands/cluster.c:1094 #, c-format msgid "" "%.0f dead row versions cannot be removed yet.\n" @@ -5971,7 +5727,7 @@ msgstr "правило Ñортировки \"%s\" уже ÑущеÑтвует msgid "database \"%s\" does not exist" msgstr "база данных \"%s\" не ÑущеÑтвует" -#: commands/comment.c:101 commands/seclabel.c:116 parser/parse_utilcmd.c:768 +#: commands/comment.c:101 commands/seclabel.c:116 parser/parse_utilcmd.c:754 #, c-format msgid "" "\"%s\" is not a table, view, materialized view, composite type, or foreign " @@ -5980,12 +5736,12 @@ msgstr "" "\"%s\" - Ñто не таблица, предÑтавление, мат. предÑтавление, ÑоÑтавной тип " "или ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°" -#: commands/constraint.c:60 utils/adt/ri_triggers.c:2717 +#: commands/constraint.c:60 utils/adt/ri_triggers.c:2715 #, c-format msgid "function \"%s\" was not called by trigger manager" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" была вызвана не менеджером триггеров" -#: commands/constraint.c:67 utils/adt/ri_triggers.c:2726 +#: commands/constraint.c:67 utils/adt/ri_triggers.c:2724 #, c-format msgid "function \"%s\" must be fired AFTER ROW" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" должна запуÑкатьÑÑ Ð² триггере AFTER Ð´Ð»Ñ Ñтрок" @@ -6037,7 +5793,7 @@ msgid "could not read from COPY file: %m" msgstr "не удалоÑÑŒ прочитать файл COPY: %m" #: commands/copy.c:595 commands/copy.c:616 commands/copy.c:620 -#: tcop/postgres.c:341 tcop/postgres.c:377 tcop/postgres.c:404 +#: tcop/postgres.c:333 tcop/postgres.c:369 tcop/postgres.c:396 #, c-format msgid "unexpected EOF on client connection with an open transaction" msgstr "неожиданный обрыв ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð¾Ð¼ при открытой транзакции" @@ -6072,317 +5828,317 @@ msgstr "" msgid "must be superuser to COPY to or from a file" msgstr "Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ COPY Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ нужно быть Ñуперпользователем" -#: commands/copy.c:878 +#: commands/copy.c:879 #, c-format msgid "COPY FROM not supported with row-level security" msgstr "COPY FROM не поддерживаетÑÑ Ñ Ð·Ð°Ñ‰Ð¸Ñ‚Ð¾Ð¹ на уровне Ñтрок." -#: commands/copy.c:879 +#: commands/copy.c:880 #, c-format msgid "Use INSERT statements instead." msgstr "ИÑпользуйте операторы INSERT." -#: commands/copy.c:1019 +#: commands/copy.c:1059 #, c-format msgid "COPY format \"%s\" not recognized" msgstr "формат \"%s\" Ð´Ð»Ñ COPY не раÑпознан" -#: commands/copy.c:1090 commands/copy.c:1104 commands/copy.c:1118 -#: commands/copy.c:1138 +#: commands/copy.c:1130 commands/copy.c:1144 commands/copy.c:1158 +#: commands/copy.c:1178 #, c-format msgid "argument to option \"%s\" must be a list of column names" msgstr "аргументом параметра \"%s\" должен быть ÑпиÑок имён Ñтолбцов" -#: commands/copy.c:1151 +#: commands/copy.c:1191 #, c-format msgid "argument to option \"%s\" must be a valid encoding name" msgstr "аргументом параметра \"%s\" должно быть название допуÑтимой кодировки" -#: commands/copy.c:1157 commands/dbcommands.c:232 commands/dbcommands.c:1427 +#: commands/copy.c:1197 commands/dbcommands.c:232 commands/dbcommands.c:1427 #, c-format msgid "option \"%s\" not recognized" msgstr "параметр \"%s\" не раÑпознан" -#: commands/copy.c:1168 +#: commands/copy.c:1208 #, c-format msgid "cannot specify DELIMITER in BINARY mode" msgstr "в режиме BINARY Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ DELIMITER" -#: commands/copy.c:1173 +#: commands/copy.c:1213 #, c-format msgid "cannot specify NULL in BINARY mode" msgstr "в режиме BINARY Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ NULL" -#: commands/copy.c:1195 +#: commands/copy.c:1235 #, c-format msgid "COPY delimiter must be a single one-byte character" msgstr "разделитель Ð´Ð»Ñ COPY должен быть однобайтным Ñимволом" -#: commands/copy.c:1202 +#: commands/copy.c:1242 #, c-format msgid "COPY delimiter cannot be newline or carriage return" msgstr "" "разделителем Ð´Ð»Ñ COPY не может быть Ñимвол новой Ñтроки или возврата каретки" -#: commands/copy.c:1208 +#: commands/copy.c:1248 #, c-format msgid "COPY null representation cannot use newline or carriage return" msgstr "" "предÑтавление NULL Ð´Ð»Ñ COPY не может включать Ñимвол новой Ñтроки или " "возврата каретки" -#: commands/copy.c:1225 +#: commands/copy.c:1265 #, c-format msgid "COPY delimiter cannot be \"%s\"" msgstr "\"%s\" не может быть разделителем Ð´Ð»Ñ COPY" -#: commands/copy.c:1231 +#: commands/copy.c:1271 #, c-format msgid "COPY HEADER available only in CSV mode" msgstr "COPY HEADER можно иÑпользовать только в режиме CSV" -#: commands/copy.c:1237 +#: commands/copy.c:1277 #, c-format msgid "COPY quote available only in CSV mode" msgstr "определить кавычки Ð´Ð»Ñ COPY можно только в режиме CSV" -#: commands/copy.c:1242 +#: commands/copy.c:1282 #, c-format msgid "COPY quote must be a single one-byte character" msgstr "Ñимвол кавычек Ð´Ð»Ñ COPY должен быть однобайтным" -#: commands/copy.c:1247 +#: commands/copy.c:1287 #, c-format msgid "COPY delimiter and quote must be different" msgstr "Ñимвол кавычек Ð´Ð»Ñ COPY должен отличатьÑÑ Ð¾Ñ‚ разделителÑ" -#: commands/copy.c:1253 +#: commands/copy.c:1293 #, c-format msgid "COPY escape available only in CSV mode" msgstr "определить ÑпецÑимвол Ð´Ð»Ñ COPY можно только в режиме CSV" -#: commands/copy.c:1258 +#: commands/copy.c:1298 #, c-format msgid "COPY escape must be a single one-byte character" msgstr "ÑпецÑимвол Ð´Ð»Ñ COPY должен быть однобайтным" -#: commands/copy.c:1264 +#: commands/copy.c:1304 #, c-format msgid "COPY force quote available only in CSV mode" msgstr "параметр force quote Ð´Ð»Ñ COPY можно иÑпользовать только в режиме CSV" -#: commands/copy.c:1268 +#: commands/copy.c:1308 #, c-format msgid "COPY force quote only available using COPY TO" msgstr "параметр force quote Ð´Ð»Ñ COPY можно иÑпользовать только Ñ COPY TO" -#: commands/copy.c:1274 +#: commands/copy.c:1314 #, c-format msgid "COPY force not null available only in CSV mode" msgstr "" "параметр force not null Ð´Ð»Ñ COPY можно иÑпользовать только в режиме CSV" -#: commands/copy.c:1278 +#: commands/copy.c:1318 #, c-format msgid "COPY force not null only available using COPY FROM" msgstr "параметр force not null Ð´Ð»Ñ COPY можно иÑпользовать только Ñ COPY FROM" -#: commands/copy.c:1284 +#: commands/copy.c:1324 #, c-format msgid "COPY force null available only in CSV mode" msgstr "параметр force null Ð´Ð»Ñ COPY можно иÑпользовать только в режиме CSV" -#: commands/copy.c:1289 +#: commands/copy.c:1329 #, c-format msgid "COPY force null only available using COPY FROM" msgstr "параметр force null Ð´Ð»Ñ COPY можно иÑпользовать только Ñ COPY FROM" -#: commands/copy.c:1295 +#: commands/copy.c:1335 #, c-format msgid "COPY delimiter must not appear in the NULL specification" msgstr "разделитель Ð´Ð»Ñ COPY не должен приÑутÑтвовать в предÑтавлении NULL" -#: commands/copy.c:1302 +#: commands/copy.c:1342 #, c-format msgid "CSV quote character must not appear in the NULL specification" msgstr "Ñимвол кавычек в CSV не должен приÑутÑтвовать в предÑтавлении NULL" -#: commands/copy.c:1363 +#: commands/copy.c:1403 #, c-format msgid "table \"%s\" does not have OIDs" msgstr "таблица \"%s\" не Ñодержит OID" -#: commands/copy.c:1380 +#: commands/copy.c:1420 #, c-format msgid "COPY (query) WITH OIDS is not supported" msgstr "COPY (запроÑ) WITH OIDS не поддерживаетÑÑ" -#: commands/copy.c:1400 +#: commands/copy.c:1440 #, c-format msgid "DO INSTEAD NOTHING rules are not supported for COPY" msgstr "правила DO INSTEAD NOTHING не поддерживаютÑÑ Ñ COPY" -#: commands/copy.c:1414 +#: commands/copy.c:1454 #, c-format msgid "conditional DO INSTEAD rules are not supported for COPY" msgstr "уÑловные правила DO INSTEAD не поддерживаютÑÑ Ñ COPY" -#: commands/copy.c:1418 +#: commands/copy.c:1458 #, c-format msgid "DO ALSO rules are not supported for the COPY" msgstr "правила DO ALSO не поддерживаютÑÑ Ñ COPY" -#: commands/copy.c:1423 +#: commands/copy.c:1463 #, c-format msgid "multi-statement DO INSTEAD rules are not supported for COPY" msgstr "ÑоÑтавные правила DO INSTEAD не поддерживаютÑÑ Ñ COPY" -#: commands/copy.c:1433 +#: commands/copy.c:1473 #, c-format msgid "COPY (SELECT INTO) is not supported" msgstr "COPY (SELECT INTO) не поддерживаетÑÑ" -#: commands/copy.c:1450 +#: commands/copy.c:1490 #, c-format msgid "COPY query must have a RETURNING clause" msgstr "в запроÑе COPY должно быть предложение RETURNING" -#: commands/copy.c:1478 +#: commands/copy.c:1518 #, c-format msgid "relation referenced by COPY statement has changed" msgstr "отношение, задейÑтвованное в операторе COPY, изменилоÑÑŒ" -#: commands/copy.c:1536 +#: commands/copy.c:1576 #, c-format msgid "FORCE_QUOTE column \"%s\" not referenced by COPY" msgstr "Ñтолбец FORCE_QUOTE \"%s\" не фигурирует в COPY" -#: commands/copy.c:1558 +#: commands/copy.c:1598 #, c-format msgid "FORCE_NOT_NULL column \"%s\" not referenced by COPY" msgstr "Ñтолбец FORCE_NOT_NULL \"%s\" не фигурирует в COPY" -#: commands/copy.c:1580 +#: commands/copy.c:1620 #, c-format msgid "FORCE_NULL column \"%s\" not referenced by COPY" msgstr "Ñтолбец FORCE_NULL \"%s\" не фигурирует в COPY" -#: commands/copy.c:1645 +#: commands/copy.c:1685 #, c-format msgid "could not close pipe to external command: %m" msgstr "не удалоÑÑŒ закрыть канал Ñообщений Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ¹ командой: %m" -#: commands/copy.c:1649 +#: commands/copy.c:1689 #, c-format msgid "program \"%s\" failed" msgstr "Ñбой программы \"%s\"" -#: commands/copy.c:1699 +#: commands/copy.c:1739 #, c-format msgid "cannot copy from view \"%s\"" msgstr "копировать из предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" нельзÑ" -#: commands/copy.c:1701 commands/copy.c:1707 commands/copy.c:1713 +#: commands/copy.c:1741 commands/copy.c:1747 commands/copy.c:1753 #, c-format msgid "Try the COPY (SELECT ...) TO variant." msgstr "Попробуйте вариацию COPY (SELECT ...) TO." -#: commands/copy.c:1705 +#: commands/copy.c:1745 #, c-format msgid "cannot copy from materialized view \"%s\"" msgstr "копировать из материализованного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" нельзÑ" -#: commands/copy.c:1711 +#: commands/copy.c:1751 #, c-format msgid "cannot copy from foreign table \"%s\"" msgstr "копировать из Ñторонней таблицы \"%s\" нельзÑ" -#: commands/copy.c:1717 +#: commands/copy.c:1757 #, c-format msgid "cannot copy from sequence \"%s\"" msgstr "копировать из поÑледовательноÑти \"%s\" нельзÑ" -#: commands/copy.c:1722 +#: commands/copy.c:1762 #, c-format msgid "cannot copy from non-table relation \"%s\"" msgstr "копировать из Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\", не ÑвлÑющегоÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÐµÐ¹, нельзÑ" -#: commands/copy.c:1747 commands/copy.c:2783 +#: commands/copy.c:1787 commands/copy.c:2823 #, c-format msgid "could not execute command \"%s\": %m" msgstr "не удалоÑÑŒ выполнить команду \"%s\": %m" -#: commands/copy.c:1762 +#: commands/copy.c:1802 #, c-format msgid "relative path not allowed for COPY to file" msgstr "при выполнении COPY в файл Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ отноÑительный путь" -#: commands/copy.c:1770 +#: commands/copy.c:1810 #, c-format msgid "could not open file \"%s\" for writing: %m" msgstr "не удалоÑÑŒ открыть файл \"%s\" Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи: %m" -#: commands/copy.c:1782 commands/copy.c:2806 +#: commands/copy.c:1822 commands/copy.c:2846 #, c-format msgid "\"%s\" is a directory" msgstr "\"%s\" - Ñто каталог" -#: commands/copy.c:2105 +#: commands/copy.c:2145 #, c-format msgid "COPY %s, line %d, column %s" msgstr "COPY %s, Ñтрока %d, Ñтолбец %s" -#: commands/copy.c:2109 commands/copy.c:2156 +#: commands/copy.c:2149 commands/copy.c:2196 #, c-format msgid "COPY %s, line %d" msgstr "COPY %s, Ñтрока %d" -#: commands/copy.c:2120 +#: commands/copy.c:2160 #, c-format msgid "COPY %s, line %d, column %s: \"%s\"" msgstr "COPY %s, Ñтрока %d, Ñтолбец %s: \"%s\"" -#: commands/copy.c:2128 +#: commands/copy.c:2168 #, c-format msgid "COPY %s, line %d, column %s: null input" msgstr "COPY %s, Ñтрока %d, Ñтолбец %s: значение NULL" -#: commands/copy.c:2150 +#: commands/copy.c:2190 #, c-format msgid "COPY %s, line %d: \"%s\"" msgstr "COPY %s, Ñтрока %d: \"%s\"" -#: commands/copy.c:2234 +#: commands/copy.c:2274 #, c-format msgid "cannot copy to view \"%s\"" msgstr "копировать в предÑтавление \"%s\" нельзÑ" -#: commands/copy.c:2239 +#: commands/copy.c:2279 #, c-format msgid "cannot copy to materialized view \"%s\"" msgstr "копировать в материализованное предÑтавление \"%s\" нельзÑ" -#: commands/copy.c:2244 +#: commands/copy.c:2284 #, c-format msgid "cannot copy to foreign table \"%s\"" msgstr "копировать в Ñтороннюю таблицу \"%s\" нельзÑ" -#: commands/copy.c:2249 +#: commands/copy.c:2289 #, c-format msgid "cannot copy to sequence \"%s\"" msgstr "копировать в поÑледовательноÑть \"%s\" нельзÑ" -#: commands/copy.c:2254 +#: commands/copy.c:2294 #, c-format msgid "cannot copy to non-table relation \"%s\"" msgstr "копировать в отношение \"%s\", не ÑвлÑющееÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÐµÐ¹, нельзÑ" -#: commands/copy.c:2317 +#: commands/copy.c:2357 #, c-format msgid "cannot perform FREEZE because of prior transaction activity" msgstr "выполнить FREEZE Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·-за предыдущей активноÑти в транзакции" -#: commands/copy.c:2323 +#: commands/copy.c:2363 #, c-format msgid "" "cannot perform FREEZE because the table was not created or truncated in the " @@ -6391,145 +6147,145 @@ msgstr "" "выполнить FREEZE нельзÑ, так как таблица не была Ñоздана или уÑечена в " "текущей подтранзакции" -#: commands/copy.c:2826 +#: commands/copy.c:2866 #, c-format msgid "COPY file signature not recognized" msgstr "подпиÑÑŒ COPY-файла не раÑпознана" -#: commands/copy.c:2831 +#: commands/copy.c:2871 #, c-format msgid "invalid COPY file header (missing flags)" msgstr "неверный заголовок файла COPY (отÑутÑтвуют флаги)" -#: commands/copy.c:2837 +#: commands/copy.c:2877 #, c-format msgid "unrecognized critical flags in COPY file header" msgstr "не раÑпознаны важные флаги в заголовке файла COPY" -#: commands/copy.c:2843 +#: commands/copy.c:2883 #, c-format msgid "invalid COPY file header (missing length)" msgstr "неверный заголовок файла COPY (отÑутÑтвует длина)" -#: commands/copy.c:2850 +#: commands/copy.c:2890 #, c-format msgid "invalid COPY file header (wrong length)" msgstr "неверный заголовок файла COPY (Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð°)" -#: commands/copy.c:2983 commands/copy.c:3690 commands/copy.c:3920 +#: commands/copy.c:3023 commands/copy.c:3730 commands/copy.c:3960 #, c-format msgid "extra data after last expected column" msgstr "лишние данные поÑле Ñодержимого поÑледнего Ñтолбца" -#: commands/copy.c:2993 +#: commands/copy.c:3033 #, c-format msgid "missing data for OID column" msgstr "нет данных Ð´Ð»Ñ Ñтолбца OID" -#: commands/copy.c:2999 +#: commands/copy.c:3039 #, c-format msgid "null OID in COPY data" msgstr "неверное значение OID (NULL) в данных COPY" -#: commands/copy.c:3009 commands/copy.c:3132 +#: commands/copy.c:3049 commands/copy.c:3172 #, c-format msgid "invalid OID in COPY data" msgstr "неверный OID в данных COPY" -#: commands/copy.c:3024 +#: commands/copy.c:3064 #, c-format msgid "missing data for column \"%s\"" msgstr "нет данных Ð´Ð»Ñ Ñтолбца \"%s\"" -#: commands/copy.c:3107 +#: commands/copy.c:3147 #, c-format msgid "received copy data after EOF marker" msgstr "поÑле маркера конца файла продолжаютÑÑ Ð´Ð°Ð½Ð½Ñ‹Ðµ COPY" -#: commands/copy.c:3114 +#: commands/copy.c:3154 #, c-format msgid "row field count is %d, expected %d" msgstr "количеÑтво полей в Ñтроке: %d, ожидалоÑÑŒ: %d" -#: commands/copy.c:3454 commands/copy.c:3471 +#: commands/copy.c:3494 commands/copy.c:3511 #, c-format msgid "literal carriage return found in data" msgstr "в данных обнаружен Ñвный возврат каретки" -#: commands/copy.c:3455 commands/copy.c:3472 +#: commands/copy.c:3495 commands/copy.c:3512 #, c-format msgid "unquoted carriage return found in data" msgstr "в данных обнаружен возврат каретки не в кавычках" -#: commands/copy.c:3457 commands/copy.c:3474 +#: commands/copy.c:3497 commands/copy.c:3514 #, c-format msgid "Use \"\\r\" to represent carriage return." msgstr "ПредÑтавьте возврат каретки как \"\\r\"." -#: commands/copy.c:3458 commands/copy.c:3475 +#: commands/copy.c:3498 commands/copy.c:3515 #, c-format msgid "Use quoted CSV field to represent carriage return." msgstr "Заключите возврат каретки в кавычки CSV." -#: commands/copy.c:3487 +#: commands/copy.c:3527 #, c-format msgid "literal newline found in data" msgstr "в данных обнаружен Ñвный Ñимвол новой Ñтроки" -#: commands/copy.c:3488 +#: commands/copy.c:3528 #, c-format msgid "unquoted newline found in data" msgstr "в данных обнаружен Ñвный Ñимвол новой Ñтроки не в кавычках" -#: commands/copy.c:3490 +#: commands/copy.c:3530 #, c-format msgid "Use \"\\n\" to represent newline." msgstr "ПредÑтавьте Ñимвол новой Ñтроки как \"\\n\"." -#: commands/copy.c:3491 +#: commands/copy.c:3531 #, c-format msgid "Use quoted CSV field to represent newline." msgstr "Заключите Ñимвол новой Ñтроки в кавычки CSV." -#: commands/copy.c:3537 commands/copy.c:3573 +#: commands/copy.c:3577 commands/copy.c:3613 #, c-format msgid "end-of-copy marker does not match previous newline style" msgstr "маркер \"конец копии\" не ÑоответÑтвует предыдущему Ñтилю новой Ñтроки" -#: commands/copy.c:3546 commands/copy.c:3562 +#: commands/copy.c:3586 commands/copy.c:3602 #, c-format msgid "end-of-copy marker corrupt" msgstr "маркер \"конец копии\" иÑпорчен" -#: commands/copy.c:4004 +#: commands/copy.c:4044 #, c-format msgid "unterminated CSV quoted field" msgstr "незавершённое поле в кавычках CSV" -#: commands/copy.c:4081 commands/copy.c:4100 +#: commands/copy.c:4121 commands/copy.c:4140 #, c-format msgid "unexpected EOF in COPY data" msgstr "неожиданный конец данных COPY" -#: commands/copy.c:4090 +#: commands/copy.c:4130 #, c-format msgid "invalid field size" msgstr "неверный размер полÑ" -#: commands/copy.c:4113 +#: commands/copy.c:4153 #, c-format msgid "incorrect binary data format" msgstr "неверный двоичный формат данных" -#: commands/copy.c:4424 commands/indexcmds.c:1053 commands/tablecmds.c:1463 -#: commands/tablecmds.c:2290 parser/parse_relation.c:3084 -#: parser/parse_relation.c:3104 utils/adt/tsvector_op.c:2307 +#: commands/copy.c:4464 commands/indexcmds.c:1054 commands/tablecmds.c:1464 +#: commands/tablecmds.c:2291 parser/parse_relation.c:3177 +#: parser/parse_relation.c:3197 utils/adt/tsvector_op.c:2559 #, c-format msgid "column \"%s\" does not exist" msgstr "Ñтолбец \"%s\" не ÑущеÑтвует" -#: commands/copy.c:4431 commands/tablecmds.c:1489 commands/trigger.c:651 -#: parser/parse_target.c:956 parser/parse_target.c:967 +#: commands/copy.c:4471 commands/tablecmds.c:1490 commands/trigger.c:651 +#: parser/parse_target.c:967 parser/parse_target.c:978 #, c-format msgid "column \"%s\" specified more than once" msgstr "Ñтолбец \"%s\" указан неоднократно" @@ -6600,7 +6356,8 @@ msgstr "неверное Ð¸Ð¼Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸: \"%s\"" msgid "" "new encoding (%s) is incompatible with the encoding of the template database " "(%s)" -msgstr "Ð½Ð¾Ð²Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ° (%s) неÑовмеÑтима Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¾Ð¹ шаблона базы данных(%s)" +msgstr "" +"Ð½Ð¾Ð²Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ° (%s) неÑовмеÑтима Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¾Ð¹ шаблона базы данных (%s)" #: commands/dbcommands.c:383 #, c-format @@ -6635,7 +6392,8 @@ msgid "" "new LC_CTYPE (%s) is incompatible with the LC_CTYPE of the template database " "(%s)" msgstr "" -"новый параметр LC_CTYPE (%s) неÑовмеÑтим Ñ LC_CTYPE в шаблоне базы данных(%s)" +"новый параметр LC_CTYPE (%s) неÑовмеÑтим Ñ LC_CTYPE в шаблоне базы данных " +"(%s)" #: commands/dbcommands.c:397 #, c-format @@ -6842,7 +6600,7 @@ msgid "invalid argument for %s: \"%s\"" msgstr "неверный аргумент Ð´Ð»Ñ %s: \"%s\"" #: commands/dropcmds.c:112 commands/functioncmds.c:1203 -#: utils/adt/ruleutils.c:2077 +#: utils/adt/ruleutils.c:2083 #, c-format msgid "\"%s\" is an aggregate function" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" ÑвлÑетÑÑ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð¾Ð¹" @@ -6852,19 +6610,19 @@ msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" ÑвлÑетÑÑ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð¾Ð¹" msgid "Use DROP AGGREGATE to drop aggregate functions." msgstr "ИÑпользуйте DROP AGGREGATE Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ñ‹Ñ… функций." -#: commands/dropcmds.c:165 commands/sequence.c:424 commands/tablecmds.c:2377 -#: commands/tablecmds.c:2528 commands/tablecmds.c:2570 -#: commands/tablecmds.c:11377 tcop/utility.c:1119 +#: commands/dropcmds.c:165 commands/sequence.c:424 commands/tablecmds.c:2378 +#: commands/tablecmds.c:2529 commands/tablecmds.c:2571 +#: commands/tablecmds.c:11538 tcop/utility.c:1119 #, c-format msgid "relation \"%s\" does not exist, skipping" msgstr "отношение \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ" -#: commands/dropcmds.c:195 commands/dropcmds.c:296 commands/tablecmds.c:745 +#: commands/dropcmds.c:195 commands/dropcmds.c:296 commands/tablecmds.c:746 #, c-format msgid "schema \"%s\" does not exist, skipping" msgstr "Ñхема \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ" -#: commands/dropcmds.c:237 commands/dropcmds.c:276 commands/tablecmds.c:246 +#: commands/dropcmds.c:237 commands/dropcmds.c:276 commands/tablecmds.c:247 #, c-format msgid "type \"%s\" does not exist, skipping" msgstr "тип \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ" @@ -6897,7 +6655,7 @@ msgstr "Ñловарь текÑтового поиÑка \"%s\" не ÑÑƒÑ‰ÐµÑ #: commands/dropcmds.c:316 #, c-format msgid "text search template \"%s\" does not exist, skipping" -msgstr "шаблон текÑтового поиÑка \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ " +msgstr "шаблон текÑтового поиÑка \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ" #: commands/dropcmds.c:323 #, c-format @@ -7070,123 +6828,123 @@ msgstr "параметр BUFFERS оператора EXPLAIN требует ук msgid "EXPLAIN option TIMING requires ANALYZE" msgstr "параметр TIMING оператора EXPLAIN требует ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ ANALYZE" -#: commands/extension.c:154 commands/extension.c:2718 +#: commands/extension.c:155 commands/extension.c:2722 #, c-format msgid "extension \"%s\" does not exist" msgstr "раÑширение \"%s\" не ÑущеÑтвует" -#: commands/extension.c:253 commands/extension.c:262 commands/extension.c:274 -#: commands/extension.c:284 +#: commands/extension.c:254 commands/extension.c:263 commands/extension.c:275 +#: commands/extension.c:285 #, c-format msgid "invalid extension name: \"%s\"" msgstr "неверное Ð¸Ð¼Ñ Ñ€Ð°ÑширениÑ: \"%s\"" -#: commands/extension.c:254 +#: commands/extension.c:255 #, c-format msgid "Extension names must not be empty." msgstr "Ð˜Ð¼Ñ Ñ€Ð°ÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½Ðµ может быть пуÑтым." -#: commands/extension.c:263 +#: commands/extension.c:264 #, c-format msgid "Extension names must not contain \"--\"." msgstr "Ð˜Ð¼Ñ Ñ€Ð°ÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½Ðµ может Ñодержать \"--\"." -#: commands/extension.c:275 +#: commands/extension.c:276 #, c-format msgid "Extension names must not begin or end with \"-\"." msgstr "Ð˜Ð¼Ñ Ñ€Ð°ÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½Ðµ может начинатьÑÑ Ð¸Ð»Ð¸ заканчиватьÑÑ Ñимволом \"-\"." -#: commands/extension.c:285 +#: commands/extension.c:286 #, c-format msgid "Extension names must not contain directory separator characters." msgstr "Ð˜Ð¼Ñ Ñ€Ð°ÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½Ðµ может Ñодержать разделители пути." -#: commands/extension.c:300 commands/extension.c:309 commands/extension.c:318 -#: commands/extension.c:328 +#: commands/extension.c:301 commands/extension.c:310 commands/extension.c:319 +#: commands/extension.c:329 #, c-format msgid "invalid extension version name: \"%s\"" msgstr "неверный идентификатор верÑии раÑширениÑ: \"%s\"" -#: commands/extension.c:301 +#: commands/extension.c:302 #, c-format msgid "Version names must not be empty." msgstr "Идентификатор верÑии не может быть пуÑтым." -#: commands/extension.c:310 +#: commands/extension.c:311 #, c-format msgid "Version names must not contain \"--\"." msgstr "Идентификатор верÑии не может Ñодержать \"--\"." -#: commands/extension.c:319 +#: commands/extension.c:320 #, c-format msgid "Version names must not begin or end with \"-\"." msgstr "" "Идентификатор верÑии не может начинатьÑÑ Ð¸Ð»Ð¸ заканчиватьÑÑ Ñимволом \"-\"." -#: commands/extension.c:329 +#: commands/extension.c:330 #, c-format msgid "Version names must not contain directory separator characters." msgstr "Идентификатор верÑии не может Ñодержать разделители пути." -#: commands/extension.c:479 +#: commands/extension.c:480 #, c-format msgid "could not open extension control file \"%s\": %m" msgstr "не удалоÑÑŒ открыть управлÑющий файл раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ \"%s\": %m" -#: commands/extension.c:501 commands/extension.c:511 +#: commands/extension.c:502 commands/extension.c:512 #, c-format msgid "parameter \"%s\" cannot be set in a secondary extension control file" msgstr "" "параметр \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð·Ð°Ð´Ð°Ð²Ð°Ñ‚ÑŒ в дополнительном управлÑющем файле раÑширениÑ" -#: commands/extension.c:550 +#: commands/extension.c:551 #, c-format msgid "\"%s\" is not a valid encoding name" msgstr "неверное Ð¸Ð¼Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¸ %s" -#: commands/extension.c:564 +#: commands/extension.c:565 #, c-format msgid "parameter \"%s\" must be a list of extension names" msgstr "параметр \"%s\" должен Ñодержать ÑпиÑок имён раÑширений" -#: commands/extension.c:571 +#: commands/extension.c:572 #, c-format msgid "unrecognized parameter \"%s\" in file \"%s\"" msgstr "нераÑпознанный параметр \"%s\" в файле \"%s\"" -#: commands/extension.c:580 +#: commands/extension.c:581 #, c-format msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true" msgstr "" "параметр \"schema\" не может быть указан вмеÑте Ñ \"relocatable\" = true" -#: commands/extension.c:721 +#: commands/extension.c:725 #, c-format msgid "" "transaction control statements are not allowed within an extension script" msgstr "в Ñкрипте раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½Ðµ должно быть операторов ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñми" -#: commands/extension.c:789 +#: commands/extension.c:793 #, c-format msgid "permission denied to create extension \"%s\"" msgstr "нет прав на Ñоздание раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ \"%s\"" -#: commands/extension.c:791 +#: commands/extension.c:795 #, c-format msgid "Must be superuser to create this extension." msgstr "Ð”Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñтого раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½ÑƒÐ¶Ð½Ð¾ быть Ñуперпользователем." -#: commands/extension.c:795 +#: commands/extension.c:799 #, c-format msgid "permission denied to update extension \"%s\"" msgstr "нет прав на изменение раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ \"%s\"" -#: commands/extension.c:797 +#: commands/extension.c:801 #, c-format msgid "Must be superuser to update this extension." msgstr "Ð”Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñтого раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½ÑƒÐ¶Ð½Ð¾ быть Ñуперпользователем." -#: commands/extension.c:1079 +#: commands/extension.c:1083 #, c-format msgid "" "extension \"%s\" has no update path from version \"%s\" to version \"%s\"" @@ -7194,64 +6952,64 @@ msgstr "" "Ð´Ð»Ñ Ñ€Ð°ÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ \"%s\" не определён путь Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð²ÐµÑ€Ñии \"%s\" до верÑии " "\"%s\"" -#: commands/extension.c:1261 commands/extension.c:2778 +#: commands/extension.c:1265 commands/extension.c:2782 #, c-format msgid "version to install must be specified" msgstr "нужно указать верÑию Ð´Ð»Ñ ÑƒÑтановки" -#: commands/extension.c:1278 +#: commands/extension.c:1282 #, c-format msgid "FROM version must be different from installation target version \"%s\"" msgstr "верÑÐ¸Ñ FROM должна отличатьÑÑ Ð¾Ñ‚ уÑтанавливаемой верÑии \"%s\"" -#: commands/extension.c:1343 +#: commands/extension.c:1347 #, c-format msgid "extension \"%s\" must be installed in schema \"%s\"" msgstr "раÑширение \"%s\" должно уÑтанавливатьÑÑ Ð² Ñхему \"%s\"" -#: commands/extension.c:1435 +#: commands/extension.c:1439 #, c-format msgid "cyclic dependency detected between extensions \"%s\" and \"%s\"" msgstr "выÑвлена цикличеÑÐºÐ°Ñ Ð·Ð°Ð²Ð¸ÑимоÑть между раÑширениÑми \"%s\" и \"%s\"" -#: commands/extension.c:1440 +#: commands/extension.c:1444 #, c-format msgid "installing required extension \"%s\"" msgstr "уÑтановка требуемого раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ \"%s\"" -#: commands/extension.c:1468 commands/extension.c:2923 +#: commands/extension.c:1472 commands/extension.c:2927 #, c-format msgid "required extension \"%s\" is not installed" msgstr "требуемое раÑширение \"%s\" не уÑтановлено" -#: commands/extension.c:1470 +#: commands/extension.c:1474 #, c-format msgid "Use CREATE EXTENSION ... CASCADE to install required extensions too." msgstr "" "Выполните CREATE EXTENSION ... CASCADE, чтобы уÑтановить также требуемые " "раÑширениÑ." -#: commands/extension.c:1534 +#: commands/extension.c:1538 #, c-format msgid "extension \"%s\" already exists, skipping" msgstr "раÑширение \"%s\" уже ÑущеÑтвует, пропуÑкаетÑÑ" -#: commands/extension.c:1541 +#: commands/extension.c:1545 #, c-format msgid "extension \"%s\" already exists" msgstr "раÑширение \"%s\" уже ÑущеÑтвует" -#: commands/extension.c:1552 +#: commands/extension.c:1556 #, c-format msgid "nested CREATE EXTENSION is not supported" msgstr "вложенные операторы CREATE EXTENSION не поддерживаютÑÑ" -#: commands/extension.c:1680 +#: commands/extension.c:1684 #, c-format msgid "cannot drop extension \"%s\" because it is being modified" -msgstr "удалить раÑширение %s в процеÑÑе наÑтройки нельзÑ" +msgstr "удалить раÑширение \"%s\" нельзÑ, так как Ñто модифицируемый объект" -#: commands/extension.c:2151 +#: commands/extension.c:2155 #, c-format msgid "" "pg_extension_config_dump() can only be called from an SQL script executed by " @@ -7260,17 +7018,17 @@ msgstr "" "функцию pg_extension_config_dump() можно вызывать только из SQL-Ñкрипта, " "запуÑкаемого в CREATE EXTENSION" -#: commands/extension.c:2163 +#: commands/extension.c:2167 #, c-format msgid "OID %u does not refer to a table" msgstr "OID %u не отноÑитÑÑ Ðº таблице" -#: commands/extension.c:2168 +#: commands/extension.c:2172 #, c-format msgid "table \"%s\" is not a member of the extension being created" msgstr "таблица \"%s\" не отноÑитÑÑ Ðº Ñозданному раÑширению" -#: commands/extension.c:2533 +#: commands/extension.c:2537 #, c-format msgid "" "cannot move extension \"%s\" into schema \"%s\" because the extension " @@ -7279,27 +7037,27 @@ msgstr "" "перемеÑтить раÑширение \"%s\" в Ñхему \"%s\" нельзÑ, так как оно Ñодержит " "Ñхему" -#: commands/extension.c:2573 commands/extension.c:2636 +#: commands/extension.c:2577 commands/extension.c:2640 #, c-format msgid "extension \"%s\" does not support SET SCHEMA" msgstr "раÑширение \"%s\" не поддерживает SET SCHEMA" -#: commands/extension.c:2638 +#: commands/extension.c:2642 #, c-format msgid "%s is not in the extension's schema \"%s\"" msgstr "объект %s не принадлежит Ñхеме раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ \"%s\"" -#: commands/extension.c:2698 +#: commands/extension.c:2702 #, c-format msgid "nested ALTER EXTENSION is not supported" msgstr "вложенные операторы ALTER EXTENSION не поддерживаютÑÑ" -#: commands/extension.c:2789 +#: commands/extension.c:2793 #, c-format msgid "version \"%s\" of extension \"%s\" is already installed" msgstr "верÑÐ¸Ñ \"%s\" раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ \"%s\" уже уÑтановлена" -#: commands/extension.c:3040 +#: commands/extension.c:3044 #, c-format msgid "" "cannot add schema \"%s\" to extension \"%s\" because the schema contains the " @@ -7308,12 +7066,12 @@ msgstr "" "добавить Ñхему \"%s\" к раÑширению \"%s\" нельзÑ, так как Ñхема Ñодержит " "раÑширение" -#: commands/extension.c:3058 +#: commands/extension.c:3072 #, c-format msgid "%s is not a member of extension \"%s\"" msgstr "%s не отноÑитÑÑ Ðº раÑширению \"%s\"" -#: commands/extension.c:3114 +#: commands/extension.c:3138 #, c-format msgid "file \"%s\" is too large" msgstr "файл \"%s\" Ñлишком большой" @@ -7390,12 +7148,12 @@ msgstr "" #: commands/foreigncmds.c:1165 #, c-format msgid "user mapping \"%s\" already exists for server %s" -msgstr "ÑопоÑтавление пользователей \"%s\" Ð´Ð»Ñ Ñервера \"%s\" уже ÑущеÑтвует" +msgstr "ÑопоÑтавление Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\" Ð´Ð»Ñ Ñервера \"%s\" уже ÑущеÑтвует" #: commands/foreigncmds.c:1259 commands/foreigncmds.c:1375 #, c-format msgid "user mapping \"%s\" does not exist for the server" -msgstr "ÑопоÑтавление пользователей \"%s\" Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ñервера не ÑущеÑтвует" +msgstr "ÑопоÑтавление Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\" Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ñервера не ÑущеÑтвует" #: commands/foreigncmds.c:1362 #, c-format @@ -7406,7 +7164,8 @@ msgstr "Ñервер не ÑущеÑтвует, пропуÑкаетÑÑ" #, c-format msgid "user mapping \"%s\" does not exist for the server, skipping" msgstr "" -"ÑопоÑтавление пользователей \"%s\" не ÑущеÑтвует Ð´Ð»Ñ Ñервера, пропуÑкаетÑÑ" +"ÑопоÑтавление Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\" Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ñервера не ÑущеÑтвует, " +"пропуÑкаетÑÑ" #: commands/foreigncmds.c:1532 foreign/foreign.c:361 #, c-format @@ -7540,13 +7299,13 @@ msgstr "нераÑпознанный атрибут функции \"%s\" --- и msgid "only one AS item needed for language \"%s\"" msgstr "Ð´Ð»Ñ Ñзыка \"%s\" нужно только одно выражение AS" -#: commands/functioncmds.c:929 commands/functioncmds.c:2119 +#: commands/functioncmds.c:929 commands/functioncmds.c:2139 #: commands/proclang.c:563 #, c-format msgid "language \"%s\" does not exist" msgstr "Ñзык \"%s\" не ÑущеÑтвует" -#: commands/functioncmds.c:931 commands/functioncmds.c:2121 +#: commands/functioncmds.c:931 commands/functioncmds.c:2141 #, c-format msgid "Use CREATE LANGUAGE to load the language into the database." msgstr "Выполните CREATE LANGUAGE, чтобы загрузить Ñзык в базу данных." @@ -7573,34 +7332,34 @@ msgstr "необходимо указать тип результата функ msgid "ROWS is not applicable when function does not return a set" msgstr "указание ROWS неприменимо, когда Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ не множеÑтво" -#: commands/functioncmds.c:1412 +#: commands/functioncmds.c:1432 #, c-format msgid "source data type %s is a pseudo-type" msgstr "иÑходный тип данных %s ÑвлÑетÑÑ Ð¿Ñевдотипом" -#: commands/functioncmds.c:1418 +#: commands/functioncmds.c:1438 #, c-format msgid "target data type %s is a pseudo-type" msgstr "целевой тип данных %s ÑвлÑетÑÑ Ð¿Ñевдотипом" -#: commands/functioncmds.c:1442 +#: commands/functioncmds.c:1462 #, c-format msgid "cast will be ignored because the source data type is a domain" msgstr "" "приведение будет проигнорировано, так как иÑходные данные имеют тип домен" -#: commands/functioncmds.c:1447 +#: commands/functioncmds.c:1467 #, c-format msgid "cast will be ignored because the target data type is a domain" msgstr "" "приведение будет проигнорировано, так как целевые данные имеют тип домен" -#: commands/functioncmds.c:1474 +#: commands/functioncmds.c:1494 #, c-format msgid "cast function must take one to three arguments" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° принимать от одного до трёх аргументов" -#: commands/functioncmds.c:1478 +#: commands/functioncmds.c:1498 #, c-format msgid "" "argument of cast function must match or be binary-coercible from source data " @@ -7609,17 +7368,17 @@ msgstr "" "аргумент функции Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ Ñовпадать или быть двоично-ÑовмеÑтимым Ñ " "иÑходным типом данных" -#: commands/functioncmds.c:1482 +#: commands/functioncmds.c:1502 #, c-format msgid "second argument of cast function must be type integer" msgstr "второй аргумент функции Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ быть целого типа" -#: commands/functioncmds.c:1486 +#: commands/functioncmds.c:1506 #, c-format msgid "third argument of cast function must be type boolean" msgstr "третий аргумент функции Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ быть логичеÑкого типа" -#: commands/functioncmds.c:1490 +#: commands/functioncmds.c:1510 #, c-format msgid "" "return data type of cast function must match or be binary-coercible to " @@ -7628,142 +7387,142 @@ msgstr "" "тип возвращаемых данных функции Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ Ñовпадать или быть двоично-" "ÑовмеÑтимым Ñ Ñ†ÐµÐ»ÐµÐ²Ñ‹Ð¼ типом данных" -#: commands/functioncmds.c:1501 +#: commands/functioncmds.c:1521 #, c-format msgid "cast function must not be volatile" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð½Ðµ может быть изменчивой (volatile)" -#: commands/functioncmds.c:1506 +#: commands/functioncmds.c:1526 #, c-format msgid "cast function must not be an aggregate function" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð½Ðµ может быть агрегатной" -#: commands/functioncmds.c:1510 +#: commands/functioncmds.c:1530 #, c-format msgid "cast function must not be a window function" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð½Ðµ может быть оконной" -#: commands/functioncmds.c:1514 +#: commands/functioncmds.c:1534 #, c-format msgid "cast function must not return a set" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð½Ðµ может возвращать множеÑтво" -#: commands/functioncmds.c:1540 +#: commands/functioncmds.c:1560 #, c-format msgid "must be superuser to create a cast WITHOUT FUNCTION" msgstr "Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ WITHOUT FUNCTION нужно быть Ñуперпользователем" -#: commands/functioncmds.c:1555 +#: commands/functioncmds.c:1575 #, c-format msgid "source and target data types are not physically compatible" msgstr "иÑходный и целевой типы данных не ÑовмеÑтимы физичеÑки" -#: commands/functioncmds.c:1570 +#: commands/functioncmds.c:1590 #, c-format msgid "composite data types are not binary-compatible" msgstr "ÑоÑтавные типы данных не ÑовмеÑтимы на двоичном уровне" -#: commands/functioncmds.c:1576 +#: commands/functioncmds.c:1596 #, c-format msgid "enum data types are not binary-compatible" msgstr "типы-перечиÑÐ»ÐµÐ½Ð¸Ñ Ð½Ðµ ÑовмеÑтимы на двоичном уровне" -#: commands/functioncmds.c:1582 +#: commands/functioncmds.c:1602 #, c-format msgid "array data types are not binary-compatible" msgstr "типы-маÑÑивы не ÑовмеÑтимы на двоичном уровне" -#: commands/functioncmds.c:1599 +#: commands/functioncmds.c:1619 #, c-format msgid "domain data types must not be marked binary-compatible" msgstr "типы-домены не могут ÑчитатьÑÑ Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ð¾-ÑовмеÑтимыми" -#: commands/functioncmds.c:1609 +#: commands/functioncmds.c:1629 #, c-format msgid "source data type and target data type are the same" msgstr "иÑходный тип данных Ñовпадает Ñ Ñ†ÐµÐ»ÐµÐ²Ñ‹Ð¼" -#: commands/functioncmds.c:1642 +#: commands/functioncmds.c:1662 #, c-format msgid "cast from type %s to type %s already exists" msgstr "приведение типа %s к типу %s уже ÑущеÑтвует" -#: commands/functioncmds.c:1717 +#: commands/functioncmds.c:1737 #, c-format msgid "cast from type %s to type %s does not exist" msgstr "приведение типа %s к типу %s не ÑущеÑтвует" -#: commands/functioncmds.c:1756 +#: commands/functioncmds.c:1776 #, c-format msgid "transform function must not be volatile" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ может быть изменчивой" -#: commands/functioncmds.c:1760 +#: commands/functioncmds.c:1780 #, c-format msgid "transform function must not be an aggregate function" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ может быть агрегатной" -#: commands/functioncmds.c:1764 +#: commands/functioncmds.c:1784 #, c-format msgid "transform function must not be a window function" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ может быть оконной" -#: commands/functioncmds.c:1768 +#: commands/functioncmds.c:1788 #, c-format msgid "transform function must not return a set" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ может возвращать множеÑтво" -#: commands/functioncmds.c:1772 +#: commands/functioncmds.c:1792 #, c-format msgid "transform function must take one argument" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° принимать один аргумент" -#: commands/functioncmds.c:1776 +#: commands/functioncmds.c:1796 #, c-format msgid "first argument of transform function must be type \"internal\"" msgstr "первый аргумент функции Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ иметь тип \"internal\"" -#: commands/functioncmds.c:1813 +#: commands/functioncmds.c:1833 #, c-format msgid "data type %s is a pseudo-type" msgstr "тип данных %s ÑвлÑетÑÑ Ð¿Ñевдотипом" -#: commands/functioncmds.c:1819 +#: commands/functioncmds.c:1839 #, c-format msgid "data type %s is a domain" msgstr "тип данных \"%s\" ÑвлÑетÑÑ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð¼" -#: commands/functioncmds.c:1859 +#: commands/functioncmds.c:1879 #, c-format msgid "return data type of FROM SQL function must be \"internal\"" msgstr "результат функции FROM SQL должен иметь тип \"internal\"" -#: commands/functioncmds.c:1884 +#: commands/functioncmds.c:1904 #, c-format msgid "return data type of TO SQL function must be the transform data type" msgstr "результат функции TO SQL должен иметь тип данных преобразованиÑ" -#: commands/functioncmds.c:1911 +#: commands/functioncmds.c:1931 #, c-format msgid "transform for type %s language \"%s\" already exists" msgstr "преобразование Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %s, Ñзыка \"%s\" уже ÑущеÑтвует" -#: commands/functioncmds.c:2002 +#: commands/functioncmds.c:2022 #, c-format msgid "transform for type %s language \"%s\" does not exist" msgstr "преобразование Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %s, Ñзыка \"%s\" не ÑущеÑтвует" -#: commands/functioncmds.c:2053 +#: commands/functioncmds.c:2073 #, c-format msgid "function %s already exists in schema \"%s\"" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %s уже ÑущеÑтвует в Ñхеме \"%s\"" -#: commands/functioncmds.c:2106 +#: commands/functioncmds.c:2126 #, c-format msgid "no inline code specified" msgstr "нет внедрённого кода" -#: commands/functioncmds.c:2151 +#: commands/functioncmds.c:2171 #, c-format msgid "language \"%s\" does not support inline code execution" msgstr "Ñзык \"%s\" не поддерживает выполнение внедрённого кода" @@ -7788,91 +7547,91 @@ msgstr "Ñоздать Ð¸Ð½Ð´ÐµÐºÑ Ð² Ñторонней таблице \"%s\" msgid "cannot create indexes on temporary tables of other sessions" msgstr "Ñоздавать индекÑÑ‹ во временных таблицах других ÑеанÑов нельзÑ" -#: commands/indexcmds.c:454 commands/tablecmds.c:545 commands/tablecmds.c:9597 +#: commands/indexcmds.c:455 commands/tablecmds.c:546 commands/tablecmds.c:9708 #, c-format msgid "only shared relations can be placed in pg_global tablespace" msgstr "" "в табличное проÑтранÑтво pg_global можно помеÑтить только разделÑемые таблицы" -#: commands/indexcmds.c:487 +#: commands/indexcmds.c:488 #, c-format msgid "substituting access method \"gist\" for obsolete method \"rtree\"" msgstr "уÑтаревший метод доÑтупа \"rtree\" подменÑетÑÑ Ð¼ÐµÑ‚Ð¾Ð´Ð¾Ð¼ \"gist\"" -#: commands/indexcmds.c:505 +#: commands/indexcmds.c:506 #, c-format msgid "hash indexes are not WAL-logged and their use is discouraged" msgstr "хеш-индекÑÑ‹ не запиÑываютÑÑ Ð² журнал, иÑпользовать их не рекомендуетÑÑ" -#: commands/indexcmds.c:510 +#: commands/indexcmds.c:511 #, c-format msgid "access method \"%s\" does not support unique indexes" msgstr "метод доÑтупа \"%s\" не поддерживает уникальные индекÑÑ‹" -#: commands/indexcmds.c:515 +#: commands/indexcmds.c:516 #, c-format msgid "access method \"%s\" does not support multicolumn indexes" msgstr "метод доÑтупа \"%s\" не поддерживает индекÑÑ‹ по многим Ñтолбцам" -#: commands/indexcmds.c:520 +#: commands/indexcmds.c:521 #, c-format msgid "access method \"%s\" does not support exclusion constraints" msgstr "метод доÑтупа \"%s\" не поддерживает ограничениÑ-иÑключениÑ" -#: commands/indexcmds.c:590 commands/indexcmds.c:610 +#: commands/indexcmds.c:591 commands/indexcmds.c:611 #, c-format msgid "index creation on system columns is not supported" msgstr "Ñоздание индекÑа Ð´Ð»Ñ ÑиÑтемных Ñтолбцов не поддерживаетÑÑ" -#: commands/indexcmds.c:635 +#: commands/indexcmds.c:636 #, c-format msgid "%s %s will create implicit index \"%s\" for table \"%s\"" msgstr "%s %s ÑоздаÑÑ‚ неÑвный Ð¸Ð½Ð´ÐµÐºÑ \"%s\" Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\"" -#: commands/indexcmds.c:982 +#: commands/indexcmds.c:983 #, c-format msgid "functions in index predicate must be marked IMMUTABLE" msgstr "функции в предикате индекÑа должны быть помечены как IMMUTABLE" -#: commands/indexcmds.c:1048 parser/parse_utilcmd.c:1896 +#: commands/indexcmds.c:1049 parser/parse_utilcmd.c:1882 #, c-format msgid "column \"%s\" named in key does not exist" msgstr "указанный в ключе Ñтолбец \"%s\" не ÑущеÑтвует" -#: commands/indexcmds.c:1108 +#: commands/indexcmds.c:1109 #, c-format msgid "functions in index expression must be marked IMMUTABLE" msgstr "функции в индекÑном выражении должны быть помечены как IMMUTABLE" -#: commands/indexcmds.c:1131 +#: commands/indexcmds.c:1132 #, c-format msgid "could not determine which collation to use for index expression" -msgstr "не удалоÑÑŒ определить правило ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑного выражениÑ" +msgstr "не удалоÑÑŒ определить правило Ñортировки Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑного выражениÑ" -#: commands/indexcmds.c:1139 commands/typecmds.c:827 parser/parse_expr.c:2608 -#: parser/parse_type.c:550 parser/parse_utilcmd.c:2822 utils/adt/misc.c:666 +#: commands/indexcmds.c:1140 commands/typecmds.c:827 parser/parse_expr.c:2608 +#: parser/parse_type.c:550 parser/parse_utilcmd.c:2808 utils/adt/misc.c:666 #, c-format msgid "collations are not supported by type %s" msgstr "тип %s не поддерживает Ñортировку (COLLATION)" -#: commands/indexcmds.c:1177 +#: commands/indexcmds.c:1178 #, c-format msgid "operator %s is not commutative" msgstr "оператор %s не коммутативен" -#: commands/indexcmds.c:1179 +#: commands/indexcmds.c:1180 #, c-format msgid "Only commutative operators can be used in exclusion constraints." msgstr "" "Ð’ ограничениÑÑ…-иÑключениÑÑ… могут иÑпользоватьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ коммутативные " "операторы." -#: commands/indexcmds.c:1205 +#: commands/indexcmds.c:1206 #, c-format msgid "operator %s is not a member of operator family \"%s\"" msgstr "оператор \"%s\" не входит в ÑемейÑтво операторов \"%s\"" -#: commands/indexcmds.c:1208 +#: commands/indexcmds.c:1209 #, c-format msgid "" "The exclusion operator must be related to the index operator class for the " @@ -7881,24 +7640,24 @@ msgstr "" "Оператор иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ отноÑитьÑÑ Ðº клаÑÑу операторов " "индекÑа." -#: commands/indexcmds.c:1243 +#: commands/indexcmds.c:1244 #, c-format msgid "access method \"%s\" does not support ASC/DESC options" msgstr "метод доÑтупа \"%s\" не поддерживает Ñортировку ASC/DESC" -#: commands/indexcmds.c:1248 +#: commands/indexcmds.c:1249 #, c-format msgid "access method \"%s\" does not support NULLS FIRST/LAST options" msgstr "метод доÑтупа \"%s\" не поддерживает параметр NULLS FIRST/LAST" -#: commands/indexcmds.c:1304 commands/typecmds.c:1935 +#: commands/indexcmds.c:1305 commands/typecmds.c:1935 #, c-format msgid "data type %s has no default operator class for access method \"%s\"" msgstr "" "Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° данных %s не определён клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð² по умолчанию Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° " "доÑтупа \"%s\"" -#: commands/indexcmds.c:1306 +#: commands/indexcmds.c:1307 #, c-format msgid "" "You must specify an operator class for the index or define a default " @@ -7907,34 +7666,34 @@ msgstr "" "Ð’Ñ‹ должны указать клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð² Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑа или определить клаÑÑ " "операторов по умолчанию Ð´Ð»Ñ Ñтого типа данных." -#: commands/indexcmds.c:1335 commands/indexcmds.c:1343 +#: commands/indexcmds.c:1336 commands/indexcmds.c:1344 #: commands/opclasscmds.c:205 #, c-format msgid "operator class \"%s\" does not exist for access method \"%s\"" msgstr "клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð² \"%s\" Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° доÑтупа \"%s\" не ÑущеÑтвует" -#: commands/indexcmds.c:1356 commands/typecmds.c:1923 +#: commands/indexcmds.c:1357 commands/typecmds.c:1923 #, c-format msgid "operator class \"%s\" does not accept data type %s" msgstr "клаÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð² \"%s\" не принимает тип данных %s" -#: commands/indexcmds.c:1446 +#: commands/indexcmds.c:1447 #, c-format msgid "there are multiple default operator classes for data type %s" msgstr "" "Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° данных %s определено неÑколько клаÑÑов операторов по умолчанию" -#: commands/indexcmds.c:1837 +#: commands/indexcmds.c:1838 #, c-format msgid "table \"%s\" has no indexes" msgstr "таблица \"%s\" не имеет индекÑов" -#: commands/indexcmds.c:1892 +#: commands/indexcmds.c:1893 #, c-format msgid "can only reindex the currently open database" msgstr "переиндекÑировать можно только текущую базу данных" -#: commands/indexcmds.c:1992 +#: commands/indexcmds.c:1993 #, c-format msgid "table \"%s.%s\" was reindexed" msgstr "таблица \"%s.%s\" переиндекÑирована" @@ -8194,9 +7953,9 @@ msgid "operator attribute \"%s\" cannot be changed" msgstr "атрибут оператора \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ" #: commands/policy.c:87 commands/policy.c:388 commands/policy.c:477 -#: commands/tablecmds.c:970 commands/tablecmds.c:1312 commands/tablecmds.c:2184 -#: commands/tablecmds.c:4328 commands/tablecmds.c:6279 -#: commands/tablecmds.c:11933 commands/tablecmds.c:11968 commands/trigger.c:241 +#: commands/tablecmds.c:971 commands/tablecmds.c:1313 commands/tablecmds.c:2185 +#: commands/tablecmds.c:4329 commands/tablecmds.c:6293 +#: commands/tablecmds.c:12094 commands/tablecmds.c:12129 commands/trigger.c:241 #: commands/trigger.c:1125 commands/trigger.c:1233 rewrite/rewriteDefine.c:273 #: rewrite/rewriteDefine.c:917 #, c-format @@ -8249,7 +8008,7 @@ msgid "invalid cursor name: must not be empty" msgstr "Ð¸Ð¼Ñ ÐºÑƒÑ€Ñора не может быть пуÑтым" #: commands/portalcmds.c:168 commands/portalcmds.c:222 -#: executor/execCurrent.c:67 utils/adt/xml.c:2389 utils/adt/xml.c:2556 +#: executor/execCurrent.c:67 utils/adt/xml.c:2399 utils/adt/xml.c:2569 #, c-format msgid "cursor \"%s\" does not exist" msgstr "курÑор \"%s\" не ÑущеÑтвует" @@ -8259,7 +8018,7 @@ msgstr "курÑор \"%s\" не ÑущеÑтвует" msgid "invalid statement name: must not be empty" msgstr "неверный оператор: Ð¸Ð¼Ñ Ð½Ðµ должно быть пуÑтым" -#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1343 +#: commands/prepare.c:129 parser/parse_param.c:304 tcop/postgres.c:1335 #, c-format msgid "could not determine data type of parameter $%d" msgstr "не удалоÑÑŒ определить тип данных параметра $%d" @@ -8442,6 +8201,7 @@ msgstr "значение CACHE (%s) должно быть больше нулÑ" msgid "invalid OWNED BY option" msgstr "неверное указание OWNED BY" +# skip-rule: no-space-after-period #: commands/sequence.c:1450 #, c-format msgid "Specify OWNED BY table.column or OWNED BY NONE." @@ -8466,167 +8226,167 @@ msgstr "" "поÑледовательноÑть должна быть в той же Ñхеме, что и таблица, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¹ она " "ÑвÑзана" -#: commands/tablecmds.c:215 +#: commands/tablecmds.c:216 #, c-format msgid "table \"%s\" does not exist" msgstr "таблица \"%s\" не ÑущеÑтвует" -#: commands/tablecmds.c:216 +#: commands/tablecmds.c:217 #, c-format msgid "table \"%s\" does not exist, skipping" msgstr "таблица \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ" -#: commands/tablecmds.c:218 +#: commands/tablecmds.c:219 msgid "Use DROP TABLE to remove a table." msgstr "Выполните DROP TABLE Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹." -#: commands/tablecmds.c:221 +#: commands/tablecmds.c:222 #, c-format msgid "sequence \"%s\" does not exist" msgstr "поÑледовательноÑть \"%s\" не ÑущеÑтвует" -#: commands/tablecmds.c:222 +#: commands/tablecmds.c:223 #, c-format msgid "sequence \"%s\" does not exist, skipping" msgstr "поÑледовательноÑть \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ" -#: commands/tablecmds.c:224 +#: commands/tablecmds.c:225 msgid "Use DROP SEQUENCE to remove a sequence." msgstr "Выполните DROP SEQUENCE Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑледовательноÑти." -#: commands/tablecmds.c:227 +#: commands/tablecmds.c:228 #, c-format msgid "view \"%s\" does not exist" msgstr "предÑтавление \"%s\" не ÑущеÑтвует" -#: commands/tablecmds.c:228 +#: commands/tablecmds.c:229 #, c-format msgid "view \"%s\" does not exist, skipping" msgstr "предÑтавление \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ" -#: commands/tablecmds.c:230 +#: commands/tablecmds.c:231 msgid "Use DROP VIEW to remove a view." msgstr "Выполните DROP VIEW Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´ÑтавлениÑ." -#: commands/tablecmds.c:233 +#: commands/tablecmds.c:234 #, c-format msgid "materialized view \"%s\" does not exist" msgstr "материализованное предÑтавление \"%s\" не ÑущеÑтвует" -#: commands/tablecmds.c:234 +#: commands/tablecmds.c:235 #, c-format msgid "materialized view \"%s\" does not exist, skipping" msgstr "материализованное предÑтавление \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ" -#: commands/tablecmds.c:236 +#: commands/tablecmds.c:237 msgid "Use DROP MATERIALIZED VIEW to remove a materialized view." msgstr "" "Выполните DROP MATERIALIZED VIEW Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¼Ð°Ñ‚ÐµÑ€Ð¸Ð°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½Ð¾Ð³Ð¾ " "предÑтавлениÑ." -#: commands/tablecmds.c:239 parser/parse_utilcmd.c:1645 +#: commands/tablecmds.c:240 parser/parse_utilcmd.c:1631 #, c-format msgid "index \"%s\" does not exist" msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" не ÑущеÑтвует" -#: commands/tablecmds.c:240 +#: commands/tablecmds.c:241 #, c-format msgid "index \"%s\" does not exist, skipping" msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ" -#: commands/tablecmds.c:242 +#: commands/tablecmds.c:243 msgid "Use DROP INDEX to remove an index." msgstr "Выполните DROP INDEX Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа." -#: commands/tablecmds.c:247 +#: commands/tablecmds.c:248 #, c-format msgid "\"%s\" is not a type" msgstr "\"%s\" - Ñто не тип" -#: commands/tablecmds.c:248 +#: commands/tablecmds.c:249 msgid "Use DROP TYPE to remove a type." msgstr "Выполните DROP TYPE Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð°." -#: commands/tablecmds.c:251 commands/tablecmds.c:8486 -#: commands/tablecmds.c:11194 +#: commands/tablecmds.c:252 commands/tablecmds.c:8597 +#: commands/tablecmds.c:11349 #, c-format msgid "foreign table \"%s\" does not exist" msgstr "ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° \"%s\" не ÑущеÑтвует" -#: commands/tablecmds.c:252 +#: commands/tablecmds.c:253 #, c-format msgid "foreign table \"%s\" does not exist, skipping" msgstr "ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ" -#: commands/tablecmds.c:254 +#: commands/tablecmds.c:255 msgid "Use DROP FOREIGN TABLE to remove a foreign table." msgstr "Выполните DROP FOREIGN TABLE Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñторонней таблицы." -#: commands/tablecmds.c:493 +#: commands/tablecmds.c:494 #, c-format msgid "ON COMMIT can only be used on temporary tables" msgstr "ON COMMIT можно иÑпользовать только Ð´Ð»Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… таблиц" -#: commands/tablecmds.c:513 +#: commands/tablecmds.c:514 #, c-format msgid "cannot create temporary table within security-restricted operation" msgstr "" "в рамках операции Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñми по безопаÑноÑти Ð½ÐµÐ»ÑŒÐ·Ñ Ñоздать временную " "таблицу" -#: commands/tablecmds.c:821 +#: commands/tablecmds.c:822 #, c-format msgid "DROP INDEX CONCURRENTLY does not support dropping multiple objects" msgstr "DROP INDEX CONCURRENTLY не поддерживает удаление неÑкольких объектов" -#: commands/tablecmds.c:825 +#: commands/tablecmds.c:826 #, c-format msgid "DROP INDEX CONCURRENTLY does not support CASCADE" msgstr "DROP INDEX CONCURRENTLY не поддерживает режим CASCADE" -#: commands/tablecmds.c:1084 +#: commands/tablecmds.c:1085 #, c-format msgid "truncate cascades to table \"%s\"" -msgstr "удаление раÑпроÑтранÑетÑÑ Ð½Ð° таблицу %s" +msgstr "опуÑтошение раÑпроÑтранÑетÑÑ Ð½Ð° таблицу %s" -#: commands/tablecmds.c:1322 +#: commands/tablecmds.c:1323 #, c-format msgid "cannot truncate temporary tables of other sessions" -msgstr "временные таблицы других ÑеанÑов Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‡Ð¸Ñтить" +msgstr "временные таблицы других ÑеанÑов Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿ÑƒÑтошить" -#: commands/tablecmds.c:1528 parser/parse_utilcmd.c:1859 +#: commands/tablecmds.c:1529 parser/parse_utilcmd.c:1845 #, c-format msgid "inherited relation \"%s\" is not a table or foreign table" msgstr "" "наÑледуемое отношение \"%s\" не ÑвлÑетÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÐµÐ¹ или Ñторонней таблицей" -#: commands/tablecmds.c:1535 commands/tablecmds.c:10053 +#: commands/tablecmds.c:1536 commands/tablecmds.c:10164 #, c-format msgid "cannot inherit from temporary relation \"%s\"" msgstr "временное отношение \"%s\" не может наÑледоватьÑÑ" -#: commands/tablecmds.c:1543 commands/tablecmds.c:10061 +#: commands/tablecmds.c:1544 commands/tablecmds.c:10172 #, c-format msgid "cannot inherit from temporary relation of another session" msgstr "наÑледование от временного Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ ÑеанÑа невозможно" -#: commands/tablecmds.c:1559 commands/tablecmds.c:10095 +#: commands/tablecmds.c:1560 commands/tablecmds.c:10206 #, c-format msgid "relation \"%s\" would be inherited from more than once" msgstr "отношение \"%s\" наÑледуетÑÑ Ð½ÐµÐ¾Ð´Ð½Ð¾ÐºÑ€Ð°Ñ‚Ð½Ð¾" -#: commands/tablecmds.c:1607 +#: commands/tablecmds.c:1608 #, c-format msgid "merging multiple inherited definitions of column \"%s\"" msgstr "ÑлиÑние неÑкольких наÑледованных определений Ñтолбца \"%s\"" -#: commands/tablecmds.c:1615 +#: commands/tablecmds.c:1616 #, c-format msgid "inherited column \"%s\" has a type conflict" msgstr "конфликт типов в наÑледованном Ñтолбце \"%s\"" -#: commands/tablecmds.c:1617 commands/tablecmds.c:1640 -#: commands/tablecmds.c:1838 commands/tablecmds.c:1862 +#: commands/tablecmds.c:1618 commands/tablecmds.c:1641 +#: commands/tablecmds.c:1839 commands/tablecmds.c:1863 #: parser/parse_coerce.c:1630 parser/parse_coerce.c:1650 #: parser/parse_coerce.c:1670 parser/parse_coerce.c:1715 #: parser/parse_coerce.c:1752 parser/parse_param.c:218 @@ -8634,75 +8394,76 @@ msgstr "конфликт типов в наÑледованном Ñтолбце msgid "%s versus %s" msgstr "%s и %s" -#: commands/tablecmds.c:1626 +#: commands/tablecmds.c:1627 #, c-format msgid "inherited column \"%s\" has a collation conflict" msgstr "конфликт правил Ñортировки в наÑледованном Ñтолбце \"%s\"" -#: commands/tablecmds.c:1628 commands/tablecmds.c:1850 -#: commands/tablecmds.c:4766 +#: commands/tablecmds.c:1629 commands/tablecmds.c:1851 +#: commands/tablecmds.c:4780 #, c-format msgid "\"%s\" versus \"%s\"" msgstr "\"%s\" и \"%s\"" -#: commands/tablecmds.c:1638 +#: commands/tablecmds.c:1639 #, c-format msgid "inherited column \"%s\" has a storage parameter conflict" msgstr "конфликт параметров Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð² наÑледованном Ñтолбце \"%s\"" -#: commands/tablecmds.c:1751 parser/parse_utilcmd.c:938 -#: parser/parse_utilcmd.c:1289 parser/parse_utilcmd.c:1365 +#: commands/tablecmds.c:1752 commands/tablecmds.c:8102 +#: parser/parse_utilcmd.c:924 parser/parse_utilcmd.c:1275 +#: parser/parse_utilcmd.c:1351 #, c-format msgid "cannot convert whole-row table reference" msgstr "преобразовать ÑÑылку на тип вÑей Ñтроки таблицы нельзÑ" -#: commands/tablecmds.c:1752 parser/parse_utilcmd.c:939 +#: commands/tablecmds.c:1753 parser/parse_utilcmd.c:925 #, c-format msgid "Constraint \"%s\" contains a whole-row reference to table \"%s\"." msgstr "Ограничение \"%s\" ÑÑылаетÑÑ Ð½Ð° тип вÑей Ñтроки в таблице \"%s\"." -#: commands/tablecmds.c:1824 +#: commands/tablecmds.c:1825 #, c-format msgid "merging column \"%s\" with inherited definition" msgstr "ÑлиÑние Ñтолбца \"%s\" Ñ Ð½Ð°Ñледованным определением" -#: commands/tablecmds.c:1828 +#: commands/tablecmds.c:1829 #, c-format msgid "moving and merging column \"%s\" with inherited definition" msgstr "перемещение и ÑлиÑние Ñтолбца \"%s\" Ñ Ð½Ð°Ñледуемым определением" -#: commands/tablecmds.c:1829 +#: commands/tablecmds.c:1830 #, c-format msgid "User-specified column moved to the position of the inherited column." msgstr "" "Определённый пользователем Ñтолбец перемещён в позицию наÑледуемого Ñтолбца." -#: commands/tablecmds.c:1836 +#: commands/tablecmds.c:1837 #, c-format msgid "column \"%s\" has a type conflict" msgstr "конфликт типов в Ñтолбце \"%s\"" -#: commands/tablecmds.c:1848 +#: commands/tablecmds.c:1849 #, c-format msgid "column \"%s\" has a collation conflict" msgstr "конфликт правил Ñортировки в Ñтолбце \"%s\"" -#: commands/tablecmds.c:1860 +#: commands/tablecmds.c:1861 #, c-format msgid "column \"%s\" has a storage parameter conflict" msgstr "конфликт параметров Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð² Ñтолбце \"%s\"" -#: commands/tablecmds.c:1912 +#: commands/tablecmds.c:1913 #, c-format msgid "column \"%s\" inherits conflicting default values" msgstr "Ñтолбец \"%s\" наÑледует конфликтующие Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию" -#: commands/tablecmds.c:1914 +#: commands/tablecmds.c:1915 #, c-format msgid "To resolve the conflict, specify a default explicitly." msgstr "Ð”Ð»Ñ Ñ€ÐµÑˆÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚Ð° укажите желаемое значение по умолчанию." -#: commands/tablecmds.c:1961 +#: commands/tablecmds.c:1962 #, c-format msgid "" "check constraint name \"%s\" appears multiple times but with different " @@ -8711,12 +8472,12 @@ msgstr "" "Ð¸Ð¼Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ-проверки \"%s\" фигурирует неÑколько раз, но Ñ Ñ€Ð°Ð·Ð½Ñ‹Ð¼Ð¸ " "выражениÑми" -#: commands/tablecmds.c:2155 +#: commands/tablecmds.c:2156 #, c-format msgid "cannot rename column of typed table" msgstr "переименовать Ñтолбец типизированной таблицы нельзÑ" -#: commands/tablecmds.c:2172 +#: commands/tablecmds.c:2173 #, c-format msgid "" "\"%s\" is not a table, view, materialized view, composite type, index, or " @@ -8725,37 +8486,37 @@ msgstr "" "\"%s\" - Ñто не таблица, предÑтавление, материализованное предÑтавление, " "ÑоÑтавной тип, Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð»Ð¸ ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°" -#: commands/tablecmds.c:2266 +#: commands/tablecmds.c:2267 #, c-format msgid "inherited column \"%s\" must be renamed in child tables too" msgstr "" "наÑледованный Ñтолбец \"%s\" должен быть также переименован в дочерних " "таблицах" -#: commands/tablecmds.c:2298 +#: commands/tablecmds.c:2299 #, c-format msgid "cannot rename system column \"%s\"" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ñ‚ÑŒ ÑиÑтемный Ñтолбец \"%s\"" -#: commands/tablecmds.c:2313 +#: commands/tablecmds.c:2314 #, c-format msgid "cannot rename inherited column \"%s\"" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ñ‚ÑŒ наÑледованный Ñтолбец \"%s\"" -#: commands/tablecmds.c:2468 +#: commands/tablecmds.c:2469 #, c-format msgid "inherited constraint \"%s\" must be renamed in child tables too" msgstr "" "наÑледуемое ограничение \"%s\" должно быть также переименовано в дочерних " "таблицах" -#: commands/tablecmds.c:2475 +#: commands/tablecmds.c:2476 #, c-format msgid "cannot rename inherited constraint \"%s\"" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ñ‚ÑŒ наÑледованное ограничение \"%s\"" #. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2701 +#: commands/tablecmds.c:2702 #, c-format msgid "" "cannot %s \"%s\" because it is being used by active queries in this session" @@ -8764,107 +8525,107 @@ msgstr "" "запроÑами в данном ÑеанÑе" #. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2710 +#: commands/tablecmds.c:2711 #, c-format msgid "cannot %s \"%s\" because it has pending trigger events" msgstr "" "Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ %s \"%s\", так как Ñ Ñтим объектом ÑвÑзаны отложенные " "ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð¾Ð²" -#: commands/tablecmds.c:3784 +#: commands/tablecmds.c:3785 #, c-format msgid "cannot rewrite system relation \"%s\"" msgstr "перезапиÑать ÑиÑтемное отношение \"%s\" нельзÑ" -#: commands/tablecmds.c:3790 +#: commands/tablecmds.c:3791 #, c-format msgid "cannot rewrite table \"%s\" used as a catalog table" msgstr "перезапиÑать таблицу \"%s\", иÑпользуемую как таблицу каталога, нельзÑ" -#: commands/tablecmds.c:3800 +#: commands/tablecmds.c:3801 #, c-format msgid "cannot rewrite temporary tables of other sessions" msgstr "перезапиÑывать временные таблицы других ÑеанÑов нельзÑ" -#: commands/tablecmds.c:4068 +#: commands/tablecmds.c:4069 #, c-format msgid "rewriting table \"%s\"" msgstr "перезапиÑÑŒ таблицы \"%s\"" -#: commands/tablecmds.c:4072 +#: commands/tablecmds.c:4073 #, c-format msgid "verifying table \"%s\"" msgstr "проверка таблицы \"%s\"" -#: commands/tablecmds.c:4186 +#: commands/tablecmds.c:4187 #, c-format msgid "column \"%s\" contains null values" msgstr "Ñтолбец \"%s\" Ñодержит Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ NULL" -#: commands/tablecmds.c:4201 commands/tablecmds.c:7366 +#: commands/tablecmds.c:4202 commands/tablecmds.c:7399 #, c-format msgid "check constraint \"%s\" is violated by some row" msgstr "ограничение-проверку \"%s\" нарушает Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ñтрока" -#: commands/tablecmds.c:4349 commands/trigger.c:235 rewrite/rewriteDefine.c:267 +#: commands/tablecmds.c:4350 commands/trigger.c:235 rewrite/rewriteDefine.c:267 #: rewrite/rewriteDefine.c:912 #, c-format msgid "\"%s\" is not a table or view" msgstr "\"%s\" - Ñто не таблица и не предÑтавление" -#: commands/tablecmds.c:4352 commands/trigger.c:1119 commands/trigger.c:1224 +#: commands/tablecmds.c:4353 commands/trigger.c:1119 commands/trigger.c:1224 #, c-format msgid "\"%s\" is not a table, view, or foreign table" msgstr "\"%s\" - Ñто не таблица, предÑтавление и не ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°" -#: commands/tablecmds.c:4355 +#: commands/tablecmds.c:4356 #, c-format msgid "\"%s\" is not a table, view, materialized view, or index" msgstr "" "\"%s\" - Ñто не таблица, предÑтавление, материализованное предÑтавление или " "индекÑ" -#: commands/tablecmds.c:4361 +#: commands/tablecmds.c:4362 #, c-format msgid "\"%s\" is not a table, materialized view, or index" msgstr "\"%s\" - Ñто не таблица, материализованное предÑтавление или индекÑ" -#: commands/tablecmds.c:4364 +#: commands/tablecmds.c:4365 #, c-format msgid "\"%s\" is not a table, materialized view, or foreign table" msgstr "" "\"%s\" - Ñто не таблица, материализованное предÑтавление или ÑтороннÑÑ " "таблица" -#: commands/tablecmds.c:4367 +#: commands/tablecmds.c:4368 #, c-format msgid "\"%s\" is not a table or foreign table" msgstr "\"%s\" - Ñто не таблица и не ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°" -#: commands/tablecmds.c:4370 +#: commands/tablecmds.c:4371 #, c-format msgid "\"%s\" is not a table, composite type, or foreign table" msgstr "\"%s\" - Ñто не таблица, ÑоÑтавной тип или ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°" -#: commands/tablecmds.c:4373 commands/tablecmds.c:5425 +#: commands/tablecmds.c:4374 commands/tablecmds.c:5439 #, c-format msgid "\"%s\" is not a table, materialized view, index, or foreign table" msgstr "" "\"%s\" - Ñто не таблица, материализованное предÑтавление, Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð»Ð¸ " "ÑтороннÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°" -#: commands/tablecmds.c:4383 +#: commands/tablecmds.c:4384 #, c-format msgid "\"%s\" is of the wrong type" msgstr "неправильный тип \"%s\"" -#: commands/tablecmds.c:4535 commands/tablecmds.c:4542 +#: commands/tablecmds.c:4557 commands/tablecmds.c:4564 #, c-format msgid "cannot alter type \"%s\" because column \"%s.%s\" uses it" msgstr "" "изменить тип \"%s\" нельзÑ, так как он задейÑтвован в Ñтолбце \"%s.%s\"" -#: commands/tablecmds.c:4549 +#: commands/tablecmds.c:4571 #, c-format msgid "" "cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type" @@ -8872,148 +8633,148 @@ msgstr "" "изменить Ñтороннюю таблицу \"%s\" нельзÑ, так как Ñтолбец \"%s.%s\" " "задейÑтвует тип её Ñтроки" -#: commands/tablecmds.c:4556 +#: commands/tablecmds.c:4578 #, c-format msgid "cannot alter table \"%s\" because column \"%s.%s\" uses its row type" msgstr "" "изменить таблицу \"%s\" нельзÑ, так как Ñтолбец \"%s.%s\" задейÑтвует тип её " "Ñтроки" -#: commands/tablecmds.c:4618 +#: commands/tablecmds.c:4632 #, c-format msgid "cannot alter type \"%s\" because it is the type of a typed table" msgstr "изменить тип \"%s\", так как Ñто тип типизированной таблицы" -#: commands/tablecmds.c:4620 +#: commands/tablecmds.c:4634 #, c-format msgid "Use ALTER ... CASCADE to alter the typed tables too." msgstr "" "Чтобы изменить также типизированные таблицы, выполните ALTER ... CASCADE." -#: commands/tablecmds.c:4664 +#: commands/tablecmds.c:4678 #, c-format msgid "type %s is not a composite type" msgstr "тип %s не ÑвлÑетÑÑ ÑоÑтавным" -#: commands/tablecmds.c:4690 +#: commands/tablecmds.c:4704 #, c-format msgid "cannot add column to typed table" msgstr "добавить Ñтолбец в типизированную таблицу нельзÑ" -#: commands/tablecmds.c:4758 commands/tablecmds.c:10254 +#: commands/tablecmds.c:4772 commands/tablecmds.c:10365 #, c-format msgid "child table \"%s\" has different type for column \"%s\"" msgstr "дочернÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° \"%s\" имеет другой тип Ð´Ð»Ñ Ñтолбца \"%s\"" -#: commands/tablecmds.c:4764 commands/tablecmds.c:10261 +#: commands/tablecmds.c:4778 commands/tablecmds.c:10372 #, c-format msgid "child table \"%s\" has different collation for column \"%s\"" msgstr "" "дочернÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° \"%s\" имеет другое правило Ñортировки Ð´Ð»Ñ Ñтолбца \"%s\"" -#: commands/tablecmds.c:4774 +#: commands/tablecmds.c:4788 #, c-format msgid "child table \"%s\" has a conflicting \"%s\" column" msgstr "дочернÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° \"%s\" Ñодержит конфликтующий Ñтолбец \"%s\"" -#: commands/tablecmds.c:4786 +#: commands/tablecmds.c:4800 #, c-format msgid "merging definition of column \"%s\" for child \"%s\"" msgstr "объединение определений Ñтолбца \"%s\" Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ° \"%s\"" -#: commands/tablecmds.c:5013 +#: commands/tablecmds.c:5027 #, c-format msgid "column must be added to child tables too" msgstr "Ñтолбец также должен быть добавлен к дочерним таблицам" -#: commands/tablecmds.c:5088 +#: commands/tablecmds.c:5102 #, c-format msgid "column \"%s\" of relation \"%s\" already exists, skipping" msgstr "Ñтолбец \"%s\" Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" уже ÑущеÑтвует, пропуÑкаетÑÑ" -#: commands/tablecmds.c:5095 +#: commands/tablecmds.c:5109 #, c-format msgid "column \"%s\" of relation \"%s\" already exists" msgstr "Ñтолбец \"%s\" Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" уже ÑущеÑтвует" -#: commands/tablecmds.c:5206 commands/tablecmds.c:5312 -#: commands/tablecmds.c:5370 commands/tablecmds.c:5484 -#: commands/tablecmds.c:5541 commands/tablecmds.c:5635 -#: commands/tablecmds.c:7884 commands/tablecmds.c:8509 +#: commands/tablecmds.c:5220 commands/tablecmds.c:5326 +#: commands/tablecmds.c:5384 commands/tablecmds.c:5498 +#: commands/tablecmds.c:5555 commands/tablecmds.c:5649 +#: commands/tablecmds.c:7938 commands/tablecmds.c:8620 #, c-format msgid "cannot alter system column \"%s\"" msgstr "ÑиÑтемный Ñтолбец \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ" -#: commands/tablecmds.c:5242 +#: commands/tablecmds.c:5256 #, c-format msgid "column \"%s\" is in a primary key" msgstr "Ñтолбец \"%s\" входит в первичный ключ" -#: commands/tablecmds.c:5457 +#: commands/tablecmds.c:5471 #, c-format msgid "statistics target %d is too low" msgstr "целевое ограничение ÑтатиÑтики Ñлишком мало (%d)" -#: commands/tablecmds.c:5465 +#: commands/tablecmds.c:5479 #, c-format msgid "lowering statistics target to %d" msgstr "целевое ограничение ÑтатиÑтики ÑнижаетÑÑ Ð´Ð¾ %d" -#: commands/tablecmds.c:5615 +#: commands/tablecmds.c:5629 #, c-format msgid "invalid storage type \"%s\"" msgstr "неверный тип хранилища \"%s\"" -#: commands/tablecmds.c:5647 +#: commands/tablecmds.c:5661 #, c-format msgid "column data type %s can only have storage PLAIN" msgstr "тип данных Ñтолбца %s ÑовмеÑтим только Ñ Ñ…Ñ€Ð°Ð½Ð¸Ð»Ð¸Ñ‰ÐµÐ¼ PLAIN" -#: commands/tablecmds.c:5685 +#: commands/tablecmds.c:5699 #, c-format msgid "cannot drop column from typed table" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ Ñтолбец в типизированной таблице" -#: commands/tablecmds.c:5729 +#: commands/tablecmds.c:5743 #, c-format msgid "column \"%s\" of relation \"%s\" does not exist, skipping" msgstr "Ñтолбец \"%s\" в таблице\"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ" -#: commands/tablecmds.c:5742 +#: commands/tablecmds.c:5756 #, c-format msgid "cannot drop system column \"%s\"" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ ÑиÑтемный Ñтолбец \"%s\"" -#: commands/tablecmds.c:5749 +#: commands/tablecmds.c:5763 #, c-format msgid "cannot drop inherited column \"%s\"" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ наÑледованный Ñтолбец \"%s\"" -#: commands/tablecmds.c:5989 +#: commands/tablecmds.c:6003 #, c-format msgid "" "ALTER TABLE / ADD CONSTRAINT USING INDEX will rename index \"%s\" to \"%s\"" msgstr "" "ALTER TABLE / ADD CONSTRAINT USING INDEX переименует Ð¸Ð½Ð´ÐµÐºÑ \"%s\" в \"%s\"" -#: commands/tablecmds.c:6202 +#: commands/tablecmds.c:6216 #, c-format msgid "constraint must be added to child tables too" msgstr "ограничение также должно быть добавлено к дочерним таблицам" -#: commands/tablecmds.c:6273 +#: commands/tablecmds.c:6287 #, c-format msgid "referenced relation \"%s\" is not a table" msgstr "указанный объект \"%s\" не ÑвлÑетÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÐµÐ¹" -#: commands/tablecmds.c:6296 +#: commands/tablecmds.c:6310 #, c-format msgid "constraints on permanent tables may reference only permanent tables" msgstr "" "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð² поÑтоÑнных таблицах могут ÑÑылатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на поÑтоÑнные " "таблицы" -#: commands/tablecmds.c:6303 +#: commands/tablecmds.c:6317 #, c-format msgid "" "constraints on unlogged tables may reference only permanent or unlogged " @@ -9022,13 +8783,13 @@ msgstr "" "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð² нежурналируемых таблицах могут ÑÑылатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на поÑтоÑнные " "или нежурналируемые таблицы" -#: commands/tablecmds.c:6309 +#: commands/tablecmds.c:6323 #, c-format msgid "constraints on temporary tables may reference only temporary tables" msgstr "" "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð²Ð¾ временных таблицах могут ÑÑылатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на временные таблицы" -#: commands/tablecmds.c:6313 +#: commands/tablecmds.c:6327 #, c-format msgid "" "constraints on temporary tables must involve temporary tables of this session" @@ -9036,33 +8797,33 @@ msgstr "" "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð²Ð¾ временных таблицах должны ÑÑылатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на временные " "таблицы текущего ÑеанÑа" -#: commands/tablecmds.c:6374 +#: commands/tablecmds.c:6388 #, c-format msgid "number of referencing and referenced columns for foreign key disagree" msgstr "чиÑло Ñтолбцов в иÑточнике и назначении внешнего ключа не Ñовпадает" -#: commands/tablecmds.c:6481 +#: commands/tablecmds.c:6495 #, c-format msgid "foreign key constraint \"%s\" cannot be implemented" msgstr "ограничение внешнего ключа \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ñ‚ÑŒ" -#: commands/tablecmds.c:6484 +#: commands/tablecmds.c:6498 #, c-format msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s." msgstr "Столбцы ключа \"%s\" и \"%s\" имеют неÑовмеÑтимые типы: %s и %s." -#: commands/tablecmds.c:6691 commands/tablecmds.c:6841 -#: commands/tablecmds.c:7723 commands/tablecmds.c:7779 +#: commands/tablecmds.c:6705 commands/tablecmds.c:6873 +#: commands/tablecmds.c:7777 commands/tablecmds.c:7833 #, c-format msgid "constraint \"%s\" of relation \"%s\" does not exist" msgstr "ограничение \"%s\" в таблице \"%s\" не ÑущеÑтвует" -#: commands/tablecmds.c:6697 +#: commands/tablecmds.c:6711 #, c-format msgid "constraint \"%s\" of relation \"%s\" is not a foreign key constraint" msgstr "ограничение \"%s\" в таблице \"%s\" не ÑвлÑетÑÑ Ð²Ð½ÐµÑˆÐ½Ð¸Ð¼ ключом" -#: commands/tablecmds.c:6848 +#: commands/tablecmds.c:6880 #, c-format msgid "" "constraint \"%s\" of relation \"%s\" is not a foreign key or check constraint" @@ -9070,46 +8831,46 @@ msgstr "" "ограничение \"%s\" в таблице \"%s\" не ÑвлÑетÑÑ Ð²Ð½ÐµÑˆÐ½Ð¸Ð¼ ключом или " "ограничением-проверкой" -#: commands/tablecmds.c:6916 +#: commands/tablecmds.c:6949 #, c-format msgid "constraint must be validated on child tables too" msgstr "ограничение также должно ÑоблюдатьÑÑ Ð² дочерних таблицах" -#: commands/tablecmds.c:6985 +#: commands/tablecmds.c:7018 #, c-format msgid "column \"%s\" referenced in foreign key constraint does not exist" msgstr "Ñтолбец \"%s\", указанный в ограничении внешнего ключа, не ÑущеÑтвует" -#: commands/tablecmds.c:6990 +#: commands/tablecmds.c:7023 #, c-format msgid "cannot have more than %d keys in a foreign key" msgstr "во внешнем ключе не может быть больше %d Ñтолбцов" -#: commands/tablecmds.c:7055 +#: commands/tablecmds.c:7088 #, c-format msgid "cannot use a deferrable primary key for referenced table \"%s\"" msgstr "" "иÑпользовать откладываемый первичный ключ в целевой внешней таблице \"%s\" " "нельзÑ" -#: commands/tablecmds.c:7072 +#: commands/tablecmds.c:7105 #, c-format msgid "there is no primary key for referenced table \"%s\"" msgstr "в целевой внешней таблице \"%s\" нет первичного ключа" -#: commands/tablecmds.c:7137 +#: commands/tablecmds.c:7170 #, c-format msgid "foreign key referenced-columns list must not contain duplicates" msgstr "в ÑпиÑке Ñтолбцов внешнего ключа не должно быть повторений" -#: commands/tablecmds.c:7231 +#: commands/tablecmds.c:7264 #, c-format msgid "cannot use a deferrable unique constraint for referenced table \"%s\"" msgstr "" "иÑпользовать откладываемое ограничение уникальноÑти в целевой внешней " "таблице \"%s\" нельзÑ" -#: commands/tablecmds.c:7236 +#: commands/tablecmds.c:7269 #, c-format msgid "" "there is no unique constraint matching given keys for referenced table \"%s\"" @@ -9117,32 +8878,32 @@ msgstr "" "в целевой внешней таблице \"%s\" нет Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ ÑƒÐ½Ð¸ÐºÐ°Ð»ÑŒÐ½Ð¾Ñти, " "ÑоответÑтвующего данным ключам" -#: commands/tablecmds.c:7399 +#: commands/tablecmds.c:7432 #, c-format msgid "validating foreign key constraint \"%s\"" msgstr "проверка Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ ключа \"%s\"" -#: commands/tablecmds.c:7695 +#: commands/tablecmds.c:7731 #, c-format msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" msgstr "удалить наÑледованное ограничение \"%s\" таблицы \"%s\" нельзÑ" -#: commands/tablecmds.c:7729 +#: commands/tablecmds.c:7783 #, c-format msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" msgstr "ограничение \"%s\" в таблице \"%s\" не ÑущеÑтвует, пропуÑкаетÑÑ" -#: commands/tablecmds.c:7868 +#: commands/tablecmds.c:7922 #, c-format msgid "cannot alter column type of typed table" msgstr "изменить тип Ñтолбца в типизированной таблице нельзÑ" -#: commands/tablecmds.c:7891 +#: commands/tablecmds.c:7945 #, c-format msgid "cannot alter inherited column \"%s\"" msgstr "изменить наÑледованный Ñтолбец \"%s\" нельзÑ" -#: commands/tablecmds.c:7940 +#: commands/tablecmds.c:7994 #, c-format msgid "" "result of USING clause for column \"%s\" cannot be cast automatically to " @@ -9150,193 +8911,199 @@ msgid "" msgstr "" "результат USING Ð´Ð»Ñ Ñтолбца \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки привеÑти к типу %s" -#: commands/tablecmds.c:7943 +#: commands/tablecmds.c:7997 #, c-format msgid "You might need to add an explicit cast." msgstr "Возможно, необходимо добавить Ñвное приведение." -#: commands/tablecmds.c:7947 +#: commands/tablecmds.c:8001 #, c-format msgid "column \"%s\" cannot be cast automatically to type %s" msgstr "Ñтолбец \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки привеÑти к типу %s" +# skip-rule: double-colons #. translator: USING is SQL, don't translate it -#: commands/tablecmds.c:7950 +#: commands/tablecmds.c:8004 #, c-format msgid "You might need to specify \"USING %s::%s\"." msgstr "Возможно, необходимо указать \"USING %s::%s\"." -#: commands/tablecmds.c:8003 +#: commands/tablecmds.c:8103 +#, c-format +msgid "USING expression contains a whole-row table reference." +msgstr "Выражение USING ÑÑылаетÑÑ Ð½Ð° тип вÑей Ñтроки таблицы." + +#: commands/tablecmds.c:8114 #, c-format msgid "type of inherited column \"%s\" must be changed in child tables too" msgstr "" "тип наÑледованного Ñтолбца \"%s\" должен быть изменён и в дочерних таблицах" -#: commands/tablecmds.c:8090 +#: commands/tablecmds.c:8201 #, c-format msgid "cannot alter type of column \"%s\" twice" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ тип Ñтолбца \"%s\" дважды" -#: commands/tablecmds.c:8126 +#: commands/tablecmds.c:8237 #, c-format msgid "default for column \"%s\" cannot be cast automatically to type %s" msgstr "" "значение по умолчанию Ð´Ð»Ñ Ñтолбца \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки привеÑти к " "типу %s" -#: commands/tablecmds.c:8252 +#: commands/tablecmds.c:8363 #, c-format msgid "cannot alter type of a column used by a view or rule" msgstr "" "изменить тип Ñтолбца, задейÑтвованного в предÑтавлении или правиле, нельзÑ" -#: commands/tablecmds.c:8253 commands/tablecmds.c:8272 -#: commands/tablecmds.c:8290 +#: commands/tablecmds.c:8364 commands/tablecmds.c:8383 +#: commands/tablecmds.c:8401 #, c-format msgid "%s depends on column \"%s\"" msgstr "%s завиÑит от Ñтолбца \"%s\"" -#: commands/tablecmds.c:8271 +#: commands/tablecmds.c:8382 #, c-format msgid "cannot alter type of a column used in a trigger definition" msgstr "изменить тип Ñтолбца, задейÑтвованного в определении триггера, нельзÑ" -#: commands/tablecmds.c:8289 +#: commands/tablecmds.c:8400 #, c-format msgid "cannot alter type of a column used in a policy definition" msgstr "изменить тип Ñтолбца, задейÑтвованного в определении политики, нельзÑ" -#: commands/tablecmds.c:8954 +#: commands/tablecmds.c:9065 #, c-format msgid "cannot change owner of index \"%s\"" msgstr "Ñменить владельца индекÑа \"%s\" нельзÑ" -#: commands/tablecmds.c:8956 +#: commands/tablecmds.c:9067 #, c-format msgid "Change the ownership of the index's table, instead." msgstr "Однако возможно Ñменить владельца таблицы, Ñодержащей Ñтот индекÑ." -#: commands/tablecmds.c:8972 +#: commands/tablecmds.c:9083 #, c-format msgid "cannot change owner of sequence \"%s\"" msgstr "Ñменить владельца поÑледовательноÑти \"%s\" нельзÑ" -#: commands/tablecmds.c:8974 commands/tablecmds.c:11396 +#: commands/tablecmds.c:9085 commands/tablecmds.c:11557 #, c-format msgid "Sequence \"%s\" is linked to table \"%s\"." msgstr "ПоÑледовательноÑть \"%s\" ÑвÑзана Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÐµÐ¹ \"%s\"." -#: commands/tablecmds.c:8986 commands/tablecmds.c:12043 +#: commands/tablecmds.c:9097 commands/tablecmds.c:12204 #, c-format msgid "Use ALTER TYPE instead." msgstr "ИÑпользуйте ALTER TYPE." -#: commands/tablecmds.c:8995 +#: commands/tablecmds.c:9106 #, c-format msgid "\"%s\" is not a table, view, sequence, or foreign table" msgstr "" "\"%s\" - Ñто не таблица, TOAST-таблица, индекÑ, предÑтавление или " "поÑледовательноÑть" -#: commands/tablecmds.c:9338 +#: commands/tablecmds.c:9449 #, c-format msgid "cannot have multiple SET TABLESPACE subcommands" msgstr "в одной инÑтрукции не может быть неÑколько подкоманд SET TABLESPACE" -#: commands/tablecmds.c:9411 +#: commands/tablecmds.c:9522 #, c-format msgid "\"%s\" is not a table, view, materialized view, index, or TOAST table" msgstr "" "\"%s\" - Ñто не таблица, предÑтавление, материализованное предÑтавление, " "Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð»Ð¸ TOAST-таблица" -#: commands/tablecmds.c:9444 commands/view.c:469 +#: commands/tablecmds.c:9555 commands/view.c:498 #, c-format msgid "WITH CHECK OPTION is supported only on automatically updatable views" msgstr "" "WITH CHECK OPTION поддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ Ð°Ð²Ñ‚Ð¾Ð¾Ð±Ð½Ð¾Ð²Ð»Ñемыми предÑтавлениÑми" -#: commands/tablecmds.c:9590 +#: commands/tablecmds.c:9701 #, c-format msgid "cannot move system relation \"%s\"" msgstr "перемеÑтить ÑиÑтемную таблицу \"%s\" нельзÑ" -#: commands/tablecmds.c:9606 +#: commands/tablecmds.c:9717 #, c-format msgid "cannot move temporary tables of other sessions" msgstr "перемещать временные таблицы других ÑеанÑов нельзÑ" -#: commands/tablecmds.c:9743 +#: commands/tablecmds.c:9854 #, c-format msgid "only tables, indexes, and materialized views exist in tablespaces" msgstr "" "в табличных проÑтранÑтвах еÑть только таблицы, индекÑÑ‹ и материализованные " "предÑтавлениÑ" -#: commands/tablecmds.c:9755 +#: commands/tablecmds.c:9866 #, c-format msgid "cannot move relations in to or out of pg_global tablespace" msgstr "перемещать объекты в/из табличного проÑтранÑтва pg_global нельзÑ" -#: commands/tablecmds.c:9846 +#: commands/tablecmds.c:9957 #, c-format msgid "aborting because lock on relation \"%s.%s\" is not available" msgstr "" "обработка прерываетÑÑ Ð¸Ð·-за невозможноÑти заблокировать отношение \"%s.%s\"" -#: commands/tablecmds.c:9862 +#: commands/tablecmds.c:9973 #, c-format msgid "no matching relations in tablespace \"%s\" found" msgstr "в табличном проÑтранÑтве \"%s\" не найдены подходÑщие отношениÑ" -#: commands/tablecmds.c:9936 storage/buffer/bufmgr.c:915 +#: commands/tablecmds.c:10047 storage/buffer/bufmgr.c:915 #, c-format msgid "invalid page in block %u of relation %s" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñтраница в блоке %u Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ %s" -#: commands/tablecmds.c:10018 +#: commands/tablecmds.c:10129 #, c-format msgid "cannot change inheritance of typed table" msgstr "изменить наÑледование типизированной таблицы нельзÑ" -#: commands/tablecmds.c:10068 +#: commands/tablecmds.c:10179 #, c-format msgid "cannot inherit to temporary relation of another session" msgstr "наÑледование Ð´Ð»Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ ÑеанÑа невозможно" -#: commands/tablecmds.c:10122 +#: commands/tablecmds.c:10233 #, c-format msgid "circular inheritance not allowed" msgstr "цикличеÑкое наÑледование недопуÑтимо" -#: commands/tablecmds.c:10123 +#: commands/tablecmds.c:10234 #, c-format msgid "\"%s\" is already a child of \"%s\"." msgstr "\"%s\" уже ÑвлÑетÑÑ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ¾Ð¼ \"%s\"." -#: commands/tablecmds.c:10131 +#: commands/tablecmds.c:10242 #, c-format msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs" msgstr "таблица \"%s\" без OID не может наÑледоватьÑÑ Ð¾Ñ‚ таблицы \"%s\" Ñ OID" -#: commands/tablecmds.c:10272 +#: commands/tablecmds.c:10383 #, c-format msgid "column \"%s\" in child table must be marked NOT NULL" msgstr "Ñтолбец \"%s\" в дочерней таблице должен быть помечен как NOT NULL" -#: commands/tablecmds.c:10288 +#: commands/tablecmds.c:10399 commands/tablecmds.c:10432 #, c-format msgid "child table is missing column \"%s\"" msgstr "в дочерней таблице не хватает Ñтолбца \"%s\"" -#: commands/tablecmds.c:10371 +#: commands/tablecmds.c:10515 #, c-format msgid "child table \"%s\" has different definition for check constraint \"%s\"" msgstr "" "дочернÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° \"%s\" Ñодержит другое определение ограничениÑ-проверки \"%s" "\"" -#: commands/tablecmds.c:10379 +#: commands/tablecmds.c:10523 #, c-format msgid "" "constraint \"%s\" conflicts with non-inherited constraint on child table \"%s" @@ -9345,76 +9112,84 @@ msgstr "" "ограничение \"%s\" конфликтует Ñ Ð½ÐµÐ½Ð°Ñледуемым ограничением дочерней таблицы " "\"%s\"" -#: commands/tablecmds.c:10403 +#: commands/tablecmds.c:10534 +#, c-format +msgid "" +"constraint \"%s\" conflicts with NOT VALID constraint on child table \"%s\"" +msgstr "" +"ограничение \"%s\" конфликтует Ñ Ð½ÐµÐ¿Ñ€Ð¾Ð²ÐµÑ€ÐµÐ½Ð½Ñ‹Ð¼ (NOT VALID) ограничением " +"дочерней таблицы \"%s\"" + +#: commands/tablecmds.c:10558 #, c-format msgid "child table is missing constraint \"%s\"" msgstr "в дочерней таблице не хватает Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ \"%s\"" -#: commands/tablecmds.c:10487 +#: commands/tablecmds.c:10642 #, c-format msgid "relation \"%s\" is not a parent of relation \"%s\"" msgstr "отношение \"%s\" не ÑвлÑетÑÑ Ð¿Ñ€ÐµÐ´ÐºÐ¾Ð¼ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\"" -#: commands/tablecmds.c:10721 +#: commands/tablecmds.c:10876 #, c-format msgid "typed tables cannot inherit" msgstr "типизированные таблицы не могут наÑледоватьÑÑ" -#: commands/tablecmds.c:10752 +#: commands/tablecmds.c:10907 #, c-format msgid "table is missing column \"%s\"" msgstr "в таблице не хватает Ñтолбца \"%s\"" -#: commands/tablecmds.c:10762 +#: commands/tablecmds.c:10917 #, c-format msgid "table has column \"%s\" where type requires \"%s\"" msgstr "таблица Ñодержит Ñтолбец \"%s\", тогда как тип требует \"%s\"" -#: commands/tablecmds.c:10771 +#: commands/tablecmds.c:10926 #, c-format msgid "table \"%s\" has different type for column \"%s\"" msgstr "таблица \"%s\" Ñодержит Ñтолбец \"%s\" другого типа" -#: commands/tablecmds.c:10784 +#: commands/tablecmds.c:10939 #, c-format msgid "table has extra column \"%s\"" msgstr "таблица Ñодержит лишний Ñтолбец \"%s\"" -#: commands/tablecmds.c:10836 +#: commands/tablecmds.c:10991 #, c-format msgid "\"%s\" is not a typed table" msgstr "\"%s\" - Ñто не Ñ‚Ð¸Ð¿Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°" -#: commands/tablecmds.c:11020 +#: commands/tablecmds.c:11175 #, c-format msgid "cannot use non-unique index \"%s\" as replica identity" msgstr "" "Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ реплики Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать неуникальный Ð¸Ð½Ð´ÐµÐºÑ \"%s\"" -#: commands/tablecmds.c:11026 +#: commands/tablecmds.c:11181 #, c-format msgid "cannot use non-immediate index \"%s\" as replica identity" msgstr "" "Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ реплики Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать не непоÑредÑтвенный Ð¸Ð½Ð´ÐµÐºÑ \"%s" "\"" -#: commands/tablecmds.c:11032 +#: commands/tablecmds.c:11187 #, c-format msgid "cannot use expression index \"%s\" as replica identity" msgstr "" "Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ реплики Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ð¸Ð½Ð´ÐµÐºÑ Ñ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸ÐµÐ¼ \"%s\"" -#: commands/tablecmds.c:11038 +#: commands/tablecmds.c:11193 #, c-format msgid "cannot use partial index \"%s\" as replica identity" msgstr "Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ реплики Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать чаÑтичный Ð¸Ð½Ð´ÐµÐºÑ \"%s\"" -#: commands/tablecmds.c:11044 +#: commands/tablecmds.c:11199 #, c-format msgid "cannot use invalid index \"%s\" as replica identity" msgstr "Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ реплики Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать нерабочий Ð¸Ð½Ð´ÐµÐºÑ \"%s\"" -#: commands/tablecmds.c:11065 +#: commands/tablecmds.c:11220 #, c-format msgid "" "index \"%s\" cannot be used as replica identity because column %d is a " @@ -9423,7 +9198,7 @@ msgstr "" "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ реплики, так как Ñтолбец " "%d - ÑиÑтемный" -#: commands/tablecmds.c:11072 +#: commands/tablecmds.c:11227 #, c-format msgid "" "index \"%s\" cannot be used as replica identity because column \"%s\" is " @@ -9432,13 +9207,13 @@ msgstr "" "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ реплики, так как Ñтолбец " "\"%s\" допуÑкает NULL" -#: commands/tablecmds.c:11269 +#: commands/tablecmds.c:11430 #, c-format msgid "cannot change logged status of table \"%s\" because it is temporary" msgstr "" "изменить ÑоÑтоÑние Ð¶ÑƒÑ€Ð½Ð°Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ %s нельзÑ, так как она временнаÑ" -#: commands/tablecmds.c:11328 +#: commands/tablecmds.c:11489 #, c-format msgid "" "could not change table \"%s\" to logged because it references unlogged table " @@ -9447,7 +9222,7 @@ msgstr "" "не удалоÑÑŒ Ñделать таблицу \"%s\" журналируемой, так как она ÑÑылаетÑÑ Ð½Ð° " "нежурналируемую таблицу \"%s\"" -#: commands/tablecmds.c:11338 +#: commands/tablecmds.c:11499 #, c-format msgid "" "could not change table \"%s\" to unlogged because it references logged table " @@ -9456,22 +9231,22 @@ msgstr "" "не удалоÑÑŒ Ñделать таблицу \"%s\" нежурналируемой, так как она ÑÑылаетÑÑ Ð½Ð° " "журналируемую таблицу \"%s\"" -#: commands/tablecmds.c:11395 +#: commands/tablecmds.c:11556 #, c-format msgid "cannot move an owned sequence into another schema" msgstr "перемеÑтить поÑледовательноÑть Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†ÐµÐ¼ в другую Ñхему нельзÑ" -#: commands/tablecmds.c:11500 +#: commands/tablecmds.c:11661 #, c-format msgid "relation \"%s\" already exists in schema \"%s\"" msgstr "отношение \"%s\" уже ÑущеÑтвует в Ñхеме \"%s\"" -#: commands/tablecmds.c:12027 +#: commands/tablecmds.c:12188 #, c-format msgid "\"%s\" is not a composite type" msgstr "\"%s\" - Ñто не ÑоÑтавной тип" -#: commands/tablecmds.c:12057 +#: commands/tablecmds.c:12218 #, c-format msgid "" "\"%s\" is not a table, view, materialized view, sequence, or foreign table" @@ -9481,7 +9256,7 @@ msgstr "" #: commands/tablespace.c:162 commands/tablespace.c:179 #: commands/tablespace.c:190 commands/tablespace.c:198 -#: commands/tablespace.c:625 replication/slot.c:980 storage/file/copydir.c:47 +#: commands/tablespace.c:625 replication/slot.c:997 storage/file/copydir.c:47 #, c-format msgid "could not create directory \"%s\": %m" msgstr "не удалоÑÑŒ Ñоздать каталог \"%s\": %m" @@ -9751,8 +9526,8 @@ msgstr "Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %u вернула значение N msgid "BEFORE STATEMENT trigger cannot return a value" msgstr "триггер BEFORE STATEMENT не может возвращать значение" -#: commands/trigger.c:2726 executor/nodeModifyTable.c:664 -#: executor/nodeModifyTable.c:957 +#: commands/trigger.c:2726 executor/nodeModifyTable.c:679 +#: executor/nodeModifyTable.c:972 #, c-format msgid "" "tuple to be updated was already modified by an operation triggered by the " @@ -9761,8 +9536,8 @@ msgstr "" "кортеж, который должен быть изменён, уже модифицирован в операции, вызванной " "текущей командой" -#: commands/trigger.c:2727 executor/nodeModifyTable.c:665 -#: executor/nodeModifyTable.c:958 +#: commands/trigger.c:2727 executor/nodeModifyTable.c:680 +#: executor/nodeModifyTable.c:973 #, c-format msgid "" "Consider using an AFTER trigger instead of a BEFORE trigger to propagate " @@ -9771,9 +9546,9 @@ msgstr "" "Возможно, Ð´Ð»Ñ Ñ€Ð°ÑпроÑÑ‚Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ в другие Ñтроки Ñледует иÑпользовать " "триггер AFTER вмеÑто BEFORE." -#: commands/trigger.c:2741 executor/execMain.c:2377 executor/nodeLockRows.c:216 -#: executor/nodeModifyTable.c:200 executor/nodeModifyTable.c:677 -#: executor/nodeModifyTable.c:970 executor/nodeModifyTable.c:1136 +#: commands/trigger.c:2741 executor/execMain.c:2379 executor/nodeLockRows.c:216 +#: executor/nodeModifyTable.c:213 executor/nodeModifyTable.c:692 +#: executor/nodeModifyTable.c:985 executor/nodeModifyTable.c:1151 #, c-format msgid "could not serialize access due to concurrent update" msgstr "не удалоÑÑŒ Ñериализовать доÑтуп из-за параллельного изменениÑ" @@ -10149,42 +9924,42 @@ msgid "" msgstr "" "Ñтолбец \"%s\" таблицы \"%s\" Ñодержит значениÑ, нарушающие новое ограничение" -#: commands/typecmds.c:2971 commands/typecmds.c:3228 commands/typecmds.c:3417 +#: commands/typecmds.c:2986 commands/typecmds.c:3243 commands/typecmds.c:3432 #, c-format msgid "%s is not a domain" msgstr "\"%s\" - Ñто не домен" -#: commands/typecmds.c:3005 +#: commands/typecmds.c:3020 #, c-format msgid "constraint \"%s\" for domain \"%s\" already exists" msgstr "ограничение \"%s\" Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ð° \"%s\" уже ÑущеÑтвует" -#: commands/typecmds.c:3055 +#: commands/typecmds.c:3070 #, c-format msgid "cannot use table references in domain check constraint" msgstr "в ограничении-проверке Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ð° Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð½Ð° таблицы" -#: commands/typecmds.c:3158 commands/typecmds.c:3240 commands/typecmds.c:3534 +#: commands/typecmds.c:3173 commands/typecmds.c:3255 commands/typecmds.c:3549 #, c-format msgid "%s is a table's row type" msgstr "%s - Ñто тип Ñтрок таблицы" -#: commands/typecmds.c:3160 commands/typecmds.c:3242 commands/typecmds.c:3536 +#: commands/typecmds.c:3175 commands/typecmds.c:3257 commands/typecmds.c:3551 #, c-format msgid "Use ALTER TABLE instead." msgstr "Изменить его можно Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ALTER TABLE." -#: commands/typecmds.c:3167 commands/typecmds.c:3249 commands/typecmds.c:3449 +#: commands/typecmds.c:3182 commands/typecmds.c:3264 commands/typecmds.c:3464 #, c-format msgid "cannot alter array type %s" msgstr "изменить тип маÑÑива \"%s\" нельзÑ" -#: commands/typecmds.c:3169 commands/typecmds.c:3251 commands/typecmds.c:3451 +#: commands/typecmds.c:3184 commands/typecmds.c:3266 commands/typecmds.c:3466 #, c-format msgid "You can alter type %s, which will alter the array type as well." msgstr "Однако можно изменить тип %s, что повлечёт изменение типа маÑÑива." -#: commands/typecmds.c:3519 +#: commands/typecmds.c:3534 #, c-format msgid "type \"%s\" already exists in schema \"%s\"" msgstr "тип \"%s\" уже ÑущеÑтвует в Ñхеме \"%s\"" @@ -10215,7 +9990,7 @@ msgid "permission denied to create role" msgstr "нет прав Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ€Ð¾Ð»Ð¸" #: commands/user.c:322 commands/user.c:1176 commands/user.c:1183 -#: utils/adt/acl.c:5279 utils/adt/acl.c:5285 gram.y:13606 gram.y:13641 +#: utils/adt/acl.c:5279 utils/adt/acl.c:5285 gram.y:13628 gram.y:13663 #, c-format msgid "role name \"%s\" is reserved" msgstr "Ð¸Ð¼Ñ Ñ€Ð¾Ð»Ð¸ \"%s\" зарезервировано" @@ -10442,13 +10217,13 @@ msgstr "" "\"%s\" пропуÑкаетÑÑ --- очищать не таблицы или Ñпециальные ÑиÑтемные таблицы " "нельзÑ" -#: commands/vacuumlazy.c:366 +#: commands/vacuumlazy.c:371 #, c-format msgid "automatic vacuum of table \"%s.%s.%s\": index scans: %d\n" msgstr "" "автоматичеÑÐºÐ°Ñ Ð¾Ñ‡Ð¸Ñтка таблицы \"%s.%s.%s\": Ñканирований индекÑа: %d\n" -#: commands/vacuumlazy.c:371 +#: commands/vacuumlazy.c:376 #, c-format msgid "" "pages: %u removed, %u remain, %u skipped due to pins, %u skipped frozen\n" @@ -10456,7 +10231,7 @@ msgstr "" "Ñтраниц удалено: %u, оÑталоÑÑŒ: %u, пропущено закреплённых: %u, пропущено " "замороженных: %u\n" -#: commands/vacuumlazy.c:377 +#: commands/vacuumlazy.c:382 #, c-format msgid "" "tuples: %.0f removed, %.0f remain, %.0f are dead but not yet removable\n" @@ -10464,45 +10239,45 @@ msgstr "" "верÑий Ñтрок: удалено: %.0f, оÑталоÑÑŒ: %.0f, «мёртвых», но ещё не подлежащих " "удалению: %.0f\n" -#: commands/vacuumlazy.c:382 +#: commands/vacuumlazy.c:387 #, c-format msgid "buffer usage: %d hits, %d misses, %d dirtied\n" msgstr "" "иÑпользование буфера: попаданий: %d, промахов: %d, «грÑзных» запиÑей: %d\n" -#: commands/vacuumlazy.c:386 +#: commands/vacuumlazy.c:391 #, c-format msgid "avg read rate: %.3f MB/s, avg write rate: %.3f MB/s\n" msgstr "" "ÑреднÑÑ ÑкороÑть чтениÑ: %.3f МБ/Ñ, ÑреднÑÑ ÑкороÑть запиÑи: %.3f МБ/Ñ\n" -#: commands/vacuumlazy.c:388 +#: commands/vacuumlazy.c:393 #, c-format msgid "system usage: %s" msgstr "нагрузка ÑиÑтемы: %s" -#: commands/vacuumlazy.c:846 +#: commands/vacuumlazy.c:852 #, c-format msgid "relation \"%s\" page %u is uninitialized --- fixing" msgstr "" "в отношении \"%s\" не инициализирована Ñтраница %u --- ÑÐ¸Ñ‚ÑƒÐ°Ñ†Ð¸Ñ Ð¸ÑправлÑетÑÑ" -#: commands/vacuumlazy.c:1316 +#: commands/vacuumlazy.c:1322 #, c-format msgid "\"%s\": removed %.0f row versions in %u pages" msgstr "\"%s\": удалено верÑий Ñтрок: %.0f, обработано Ñтраниц: %u" -#: commands/vacuumlazy.c:1326 +#: commands/vacuumlazy.c:1332 #, c-format msgid "%.0f dead row versions cannot be removed yet.\n" msgstr "Ð’ данный момент Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ \"мёртвых\" Ñтрок: %.0f.\n" -#: commands/vacuumlazy.c:1328 +#: commands/vacuumlazy.c:1334 #, c-format msgid "There were %.0f unused item pointers.\n" msgstr "Ðайдено неиÑпользованных указателей: %.0f.\n" -#: commands/vacuumlazy.c:1330 +#: commands/vacuumlazy.c:1336 #, c-format msgid "Skipped %u page due to buffer pins.\n" msgid_plural "Skipped %u pages due to buffer pins.\n" @@ -10510,7 +10285,7 @@ msgstr[0] "Пропущено Ñтраниц, закреплённых в буф msgstr[1] "Пропущено Ñтраниц, закреплённых в буфере: %u.\n" msgstr[2] "Пропущено Ñтраниц, закреплённых в буфере: %u.\n" -#: commands/vacuumlazy.c:1334 +#: commands/vacuumlazy.c:1340 #, c-format msgid "%u page is entirely empty.\n" msgid_plural "%u pages are entirely empty.\n" @@ -10518,7 +10293,7 @@ msgstr[0] "ПолноÑтью пуÑтых Ñтраниц: %u.\n" msgstr[1] "ПолноÑтью пуÑтых Ñтраниц: %u.\n" msgstr[2] "ПолноÑтью пуÑтых Ñтраниц: %u.\n" -#: commands/vacuumlazy.c:1342 +#: commands/vacuumlazy.c:1347 #, c-format msgid "" "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u " @@ -10527,22 +10302,22 @@ msgstr "" "\"%s\": найдено удалÑемых верÑий Ñтрок: %.0f, неудалÑемых - %.0f, обработано " "Ñтраниц: %u, вÑего Ñтраниц: %u" -#: commands/vacuumlazy.c:1411 +#: commands/vacuumlazy.c:1416 #, c-format msgid "\"%s\": removed %d row versions in %d pages" msgstr "\"%s\": удалено верÑий Ñтрок: %d, обработано Ñтраниц: %d" -#: commands/vacuumlazy.c:1600 +#: commands/vacuumlazy.c:1604 #, c-format msgid "scanned index \"%s\" to remove %d row versions" msgstr "проÑканирован Ð¸Ð½Ð´ÐµÐºÑ \"%s\", удалено верÑий Ñтрок: %d" -#: commands/vacuumlazy.c:1646 +#: commands/vacuumlazy.c:1650 #, c-format msgid "index \"%s\" now contains %.0f row versions in %u pages" msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" теперь Ñодержит верÑий Ñтрок: %.0f, в Ñтраницах: %u" -#: commands/vacuumlazy.c:1650 +#: commands/vacuumlazy.c:1654 #, c-format msgid "" "%.0f index row versions were removed.\n" @@ -10553,22 +10328,22 @@ msgstr "" "Удалено индекÑных Ñтраниц: %u, пригодно Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ иÑпользованиÑ: %u.\n" "%s." -#: commands/vacuumlazy.c:1745 +#: commands/vacuumlazy.c:1749 #, c-format msgid "\"%s\": stopping truncate due to conflicting lock request" msgstr "\"%s\": оÑтановка уÑÐµÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð·-за конфликтующего запроÑа блокировки" -#: commands/vacuumlazy.c:1810 +#: commands/vacuumlazy.c:1814 #, c-format msgid "\"%s\": truncated %u to %u pages" msgstr "\"%s\": уÑечение (было Ñтраниц: %u, Ñтало: %u)" -#: commands/vacuumlazy.c:1866 +#: commands/vacuumlazy.c:1870 #, c-format msgid "\"%s\": suspending truncate due to conflicting lock request" msgstr "\"%s\": приоÑтановка уÑÐµÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð·-за конфликтующего запроÑа блокировки" -#: commands/variable.c:164 utils/misc/guc.c:9883 +#: commands/variable.c:164 utils/misc/guc.c:9899 #, c-format msgid "Unrecognized key word: \"%s\"." msgstr "нераÑпознанное ключевое Ñлово: \"%s\"." @@ -10635,7 +10410,7 @@ msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction" msgstr "" "команда SET TRANSACTION ISOLATION LEVEL не должна вызыватьÑÑ Ð² подтранзакции" -#: commands/variable.c:574 storage/lmgr/predicate.c:1587 +#: commands/variable.c:574 storage/lmgr/predicate.c:1600 #, c-format msgid "cannot use serializable mode in a hot standby" msgstr "иÑпользовать Ñериализуемый режим в горÑчем резерве нельзÑ" @@ -10670,8 +10445,8 @@ msgstr "Изменить клиентÑкую кодировку ÑÐµÐ¹Ñ‡Ð°Ñ Ð½ #: commands/variable.c:779 #, c-format -msgid "cannot change client_encoding in a parallel worker" -msgstr "изменить клиентÑкую кодировку в параллельном иÑполнителе нельзÑ" +msgid "cannot change client_encoding during a parallel operation" +msgstr "изменить клиентÑкую кодировку во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð°Ñ€Ð°Ð»Ð»ÐµÐ»ÑŒÐ½Ð¾Ð¹ операции нельзÑ" #: commands/variable.c:915 #, c-format @@ -10688,54 +10463,54 @@ msgstr "неверное значение Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"check_opti msgid "Valid values are \"local\" and \"cascaded\"." msgstr "ДопуÑкаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ \"local\" и \"cascaded\"." -#: commands/view.c:103 +#: commands/view.c:101 #, c-format msgid "could not determine which collation to use for view column \"%s\"" msgstr "" "не удалоÑÑŒ определить правило Ñортировки Ð´Ð»Ñ Ñтолбца предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\"" -#: commands/view.c:117 +#: commands/view.c:115 #, c-format msgid "view must have at least one column" msgstr "в предÑтавлении должен быть минимум один Ñтолбец" -#: commands/view.c:251 commands/view.c:263 +#: commands/view.c:280 commands/view.c:292 #, c-format msgid "cannot drop columns from view" msgstr "удалÑть Ñтолбцы из предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½ÐµÐ»ÑŒÐ·Ñ" -#: commands/view.c:268 +#: commands/view.c:297 #, c-format msgid "cannot change name of view column \"%s\" to \"%s\"" msgstr "изменить Ð¸Ð¼Ñ Ñтолбца \"%s\" на \"%s\" в предÑтавлении нельзÑ" -#: commands/view.c:276 +#: commands/view.c:305 #, c-format msgid "cannot change data type of view column \"%s\" from %s to %s" msgstr "изменить тип Ñтолбца предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" Ñ %s на %s нельзÑ" -#: commands/view.c:415 +#: commands/view.c:444 #, c-format msgid "views must not contain SELECT INTO" msgstr "предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ должны Ñодержать SELECT INTO" -#: commands/view.c:428 +#: commands/view.c:457 #, c-format msgid "views must not contain data-modifying statements in WITH" msgstr "предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ должны Ñодержать операторы, изменÑющие данные в WITH" -#: commands/view.c:499 +#: commands/view.c:528 #, c-format msgid "CREATE VIEW specifies more column names than columns" msgstr "в CREATE VIEW указано больше имён Ñтолбцов, чем Ñамих Ñтолбцов" -#: commands/view.c:507 +#: commands/view.c:536 #, c-format msgid "views cannot be unlogged because they do not have storage" msgstr "" "предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ могут быть нежурналируемыми, так как они нигде не хранÑÑ‚ÑÑ" -#: commands/view.c:521 +#: commands/view.c:550 #, c-format msgid "view \"%s\" will be a temporary view" msgstr "предÑтавление \"%s\" будет Ñоздано как временное" @@ -10834,26 +10609,26 @@ msgstr "поÑледовательноÑть \"%s\" изменить нельз msgid "cannot change TOAST relation \"%s\"" msgstr "TOAST-отношение \"%s\" изменить нельзÑ" -#: executor/execMain.c:1051 rewrite/rewriteHandler.c:2648 +#: executor/execMain.c:1051 rewrite/rewriteHandler.c:2679 #, c-format msgid "cannot insert into view \"%s\"" msgstr "вÑтавить данные в предÑтавление \"%s\" нельзÑ" -#: executor/execMain.c:1053 rewrite/rewriteHandler.c:2651 +#: executor/execMain.c:1053 rewrite/rewriteHandler.c:2682 #, c-format msgid "" "To enable inserting into the view, provide an INSTEAD OF INSERT trigger or " "an unconditional ON INSERT DO INSTEAD rule." msgstr "" "Чтобы предÑтавление допуÑкало добавление данных, уÑтановите триггер INSTEAD " -"OF INSERT trigger или безуÑловное правило ON INSERT DO INSTEAD." +"OF INSERT или безуÑловное правило ON INSERT DO INSTEAD." -#: executor/execMain.c:1059 rewrite/rewriteHandler.c:2656 +#: executor/execMain.c:1059 rewrite/rewriteHandler.c:2687 #, c-format msgid "cannot update view \"%s\"" msgstr "изменить данные в предÑтавлении \"%s\" нельзÑ" -#: executor/execMain.c:1061 rewrite/rewriteHandler.c:2659 +#: executor/execMain.c:1061 rewrite/rewriteHandler.c:2690 #, c-format msgid "" "To enable updating the view, provide an INSTEAD OF UPDATE trigger or an " @@ -10862,12 +10637,12 @@ msgstr "" "Чтобы предÑтавление допуÑкало изменение данных, уÑтановите триггер INSTEAD " "OF UPDATE или безуÑловное правило ON UPDATE DO INSTEAD." -#: executor/execMain.c:1067 rewrite/rewriteHandler.c:2664 +#: executor/execMain.c:1067 rewrite/rewriteHandler.c:2695 #, c-format msgid "cannot delete from view \"%s\"" msgstr "удалить данные из предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" нельзÑ" -#: executor/execMain.c:1069 rewrite/rewriteHandler.c:2667 +#: executor/execMain.c:1069 rewrite/rewriteHandler.c:2698 #, c-format msgid "" "To enable deleting from the view, provide an INSTEAD OF DELETE trigger or an " @@ -10936,7 +10711,7 @@ msgstr "блокировать Ñтроки в предÑтавлении \"%s\" msgid "cannot lock rows in materialized view \"%s\"" msgstr "блокировать Ñтроки в материализованном предÑтавлении \"%s\" нельзÑ" -#: executor/execMain.c:1192 executor/execMain.c:2611 +#: executor/execMain.c:1192 executor/execMain.c:2613 #: executor/nodeLockRows.c:132 #, c-format msgid "cannot lock rows in foreign table \"%s\"" @@ -10947,40 +10722,40 @@ msgstr "блокировать Ñтроки в Ñторонней таблице msgid "cannot lock rows in relation \"%s\"" msgstr "блокировать Ñтроки в отношении \"%s\" нельзÑ" -#: executor/execMain.c:1729 +#: executor/execMain.c:1731 #, c-format msgid "null value in column \"%s\" violates not-null constraint" msgstr "нулевое значение в Ñтолбце \"%s\" нарушает ограничение NOT NULL" -#: executor/execMain.c:1731 executor/execMain.c:1757 executor/execMain.c:1846 +#: executor/execMain.c:1733 executor/execMain.c:1759 executor/execMain.c:1848 #, c-format msgid "Failing row contains %s." msgstr "ÐžÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ð°Ñ Ñтрока Ñодержит %s." -#: executor/execMain.c:1755 +#: executor/execMain.c:1757 #, c-format msgid "new row for relation \"%s\" violates check constraint \"%s\"" msgstr "Ð½Ð¾Ð²Ð°Ñ Ñтрока в отношении \"%s\" нарушает ограничение-проверку \"%s\"" -#: executor/execMain.c:1844 +#: executor/execMain.c:1846 #, c-format msgid "new row violates check option for view \"%s\"" msgstr "Ð½Ð¾Ð²Ð°Ñ Ñтрока нарушает ограничение-проверку Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\"" -#: executor/execMain.c:1854 +#: executor/execMain.c:1856 #, c-format msgid "new row violates row-level security policy \"%s\" for table \"%s\"" msgstr "" "Ð½Ð¾Ð²Ð°Ñ Ñтрока нарушает политику защиты на уровне Ñтрок \"%s\" Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s" "\"" -#: executor/execMain.c:1859 +#: executor/execMain.c:1861 #, c-format msgid "new row violates row-level security policy for table \"%s\"" msgstr "" "Ð½Ð¾Ð²Ð°Ñ Ñтрока нарушает политику защиты на уровне Ñтрок Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\"" -#: executor/execMain.c:1866 +#: executor/execMain.c:1868 #, c-format msgid "" "new row violates row-level security policy \"%s\" (USING expression) for " @@ -10989,7 +10764,7 @@ msgstr "" "Ð½Ð¾Ð²Ð°Ñ Ñтрока нарушает политику защиты на уровне Ñтрок \"%s\" (выражение " "USING) Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\"" -#: executor/execMain.c:1871 +#: executor/execMain.c:1873 #, c-format msgid "" "new row violates row-level security policy (USING expression) for table \"%s" @@ -10998,11 +10773,11 @@ msgstr "" "Ð½Ð¾Ð²Ð°Ñ Ñтрока нарушает политику защиты на уровне Ñтрок (выражение USING) Ð´Ð»Ñ " "таблицы \"%s\"" -#: executor/execQual.c:302 executor/execQual.c:339 executor/execQual.c:3230 -#: utils/adt/array_userfuncs.c:472 utils/adt/arrayfuncs.c:260 +#: executor/execQual.c:302 executor/execQual.c:339 executor/execQual.c:3236 +#: utils/adt/array_userfuncs.c:484 utils/adt/arrayfuncs.c:260 #: utils/adt/arrayfuncs.c:558 utils/adt/arrayfuncs.c:1288 #: utils/adt/arrayfuncs.c:3361 utils/adt/arrayfuncs.c:5241 -#: utils/adt/arrayfuncs.c:5764 +#: utils/adt/arrayfuncs.c:5758 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" msgstr "чиÑло размерноÑтей маÑÑива (%d) превышает предел (%d)" @@ -11012,12 +10787,12 @@ msgstr "чиÑло размерноÑтей маÑÑива (%d) превышае msgid "array subscript in assignment must not be null" msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ñлемента маÑÑива в приÑваивании не может быть NULL" -#: executor/execQual.c:657 executor/execQual.c:4170 +#: executor/execQual.c:657 executor/execQual.c:4183 #, c-format msgid "attribute %d has wrong type" msgstr "атрибут %d имеет неверный тип" -#: executor/execQual.c:658 executor/execQual.c:4171 +#: executor/execQual.c:658 executor/execQual.c:4184 #, c-format msgid "Table has type %s, but query expects %s." msgstr "Ð’ таблице задан тип %s, а в запроÑе ожидаетÑÑ %s." @@ -11119,12 +10894,12 @@ msgstr "IS DISTINCT FROM не поддерживает аргументы-мно msgid "op ANY/ALL (array) does not support set arguments" msgstr "операторы ANY/ALL (Ñ Ð¼Ð°ÑÑивом) не поддерживают аргументы-множеÑтва" -#: executor/execQual.c:3208 +#: executor/execQual.c:3214 #, c-format msgid "cannot merge incompatible arrays" msgstr "не удалоÑÑŒ объединить неÑовмеÑтимые маÑÑивы" -#: executor/execQual.c:3209 +#: executor/execQual.c:3215 #, c-format msgid "" "Array with element type %s cannot be included in ARRAY construct with " @@ -11133,7 +10908,7 @@ msgstr "" "МаÑÑив Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ Ñлементов %s Ð½ÐµÐ»ÑŒÐ·Ñ Ð²ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ в конÑтрукцию ARRAY Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ " "Ñлементов %s." -#: executor/execQual.c:3250 executor/execQual.c:3277 +#: executor/execQual.c:3256 executor/execQual.c:3283 #, c-format msgid "" "multidimensional arrays must have array expressions with matching dimensions" @@ -11141,43 +10916,43 @@ msgstr "" "Ð´Ð»Ñ Ð¼Ð½Ð¾Ð³Ð¾Ð¼ÐµÑ€Ð½Ñ‹Ñ… маÑÑивов должны задаватьÑÑ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ ÑоответÑтвующими " "размерноÑÑ‚Ñми" -#: executor/execQual.c:3792 +#: executor/execQual.c:3798 #, c-format msgid "NULLIF does not support set arguments" msgstr "NULLIF не поддерживает аргументы-множеÑтва" -#: executor/execQual.c:4040 utils/adt/domains.c:136 +#: executor/execQual.c:4046 utils/adt/domains.c:137 #, c-format msgid "domain %s does not allow null values" msgstr "домен %s не допуÑкает Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ null" -#: executor/execQual.c:4070 utils/adt/domains.c:173 +#: executor/execQual.c:4083 utils/adt/domains.c:179 #, c-format msgid "value for domain %s violates check constraint \"%s\"" msgstr "значение домена %s нарушает ограничение-проверку \"%s\"" -#: executor/execQual.c:4425 +#: executor/execQual.c:4438 #, c-format msgid "WHERE CURRENT OF is not supported for this table type" msgstr "WHERE CURRENT OF Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ† такого типа не поддерживаетÑÑ" -#: executor/execQual.c:4614 parser/parse_agg.c:758 +#: executor/execQual.c:4627 parser/parse_agg.c:758 #, c-format msgid "window function calls cannot be nested" msgstr "вложенные вызовы оконных функций недопуÑтимы" -#: executor/execQual.c:4826 +#: executor/execQual.c:4839 #, c-format msgid "target type is not an array" msgstr "целевой тип не ÑвлÑетÑÑ Ð¼Ð°ÑÑивом" -#: executor/execQual.c:4941 +#: executor/execQual.c:4956 #, c-format msgid "ROW() column has type %s instead of type %s" msgstr "Ñтолбец ROW() имеет тип %s, а должен - %s" -#: executor/execQual.c:5076 utils/adt/arrayfuncs.c:3803 -#: utils/adt/arrayfuncs.c:6337 utils/adt/rowtypes.c:927 +#: executor/execQual.c:5091 utils/adt/arrayfuncs.c:3803 +#: utils/adt/arrayfuncs.c:6325 utils/adt/rowtypes.c:927 #, c-format msgid "could not identify a comparison function for type %s" msgstr "не удалоÑÑŒ найти функцию ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %s" @@ -11197,19 +10972,24 @@ msgstr "Примените команду REFRESH MATERIALIZED VIEW." msgid "could not determine actual type of argument declared %s" msgstr "не удалоÑÑŒ определить фактичеÑкий тип аргумента, объÑвленного как %s" +#: executor/functions.c:511 +#, c-format +msgid "cannot COPY to/from client in a SQL function" +msgstr "в функции SQL Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ COPY Ñ ÑƒÑ‡Ð°Ñтием клиента" + #. translator: %s is a SQL statement name -#: executor/functions.c:508 +#: executor/functions.c:517 #, c-format msgid "%s is not allowed in a SQL function" msgstr "%s Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать в SQL-функции" #. translator: %s is a SQL statement name -#: executor/functions.c:515 executor/spi.c:1364 executor/spi.c:2154 +#: executor/functions.c:524 executor/spi.c:1364 executor/spi.c:2154 #, c-format msgid "%s is not allowed in a non-volatile function" msgstr "%s Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать в не изменчивой (volatile) функции" -#: executor/functions.c:641 +#: executor/functions.c:650 #, c-format msgid "" "could not determine actual result type for function declared to return type " @@ -11218,24 +10998,24 @@ msgstr "" "не удалоÑÑŒ определить фактичеÑкий тип результата Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ (в объÑвлении " "указан тип %s)" -#: executor/functions.c:1406 +#: executor/functions.c:1415 #, c-format msgid "SQL function \"%s\" statement %d" msgstr "SQL-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\", оператор %d" -#: executor/functions.c:1432 +#: executor/functions.c:1441 #, c-format msgid "SQL function \"%s\" during startup" msgstr "SQL-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" (при Ñтарте)" -#: executor/functions.c:1591 executor/functions.c:1628 -#: executor/functions.c:1640 executor/functions.c:1753 -#: executor/functions.c:1786 executor/functions.c:1816 +#: executor/functions.c:1600 executor/functions.c:1637 +#: executor/functions.c:1649 executor/functions.c:1762 +#: executor/functions.c:1795 executor/functions.c:1825 #, c-format msgid "return type mismatch in function declared to return %s" msgstr "неÑовпадение типа возврата в функции (в объÑвлении указан тип %s)" -#: executor/functions.c:1593 +#: executor/functions.c:1602 #, c-format msgid "" "Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING." @@ -11243,49 +11023,49 @@ msgstr "" "ПоÑледним оператором в функции должен быть SELECT или INSERT/UPDATE/DELETE " "RETURNING." -#: executor/functions.c:1630 +#: executor/functions.c:1639 #, c-format msgid "Final statement must return exactly one column." msgstr "ПоÑледний оператор должен возвращать один Ñтолбец." -#: executor/functions.c:1642 +#: executor/functions.c:1651 #, c-format msgid "Actual return type is %s." msgstr "ФактичеÑкий тип возврата: %s." -#: executor/functions.c:1755 +#: executor/functions.c:1764 #, c-format msgid "Final statement returns too many columns." msgstr "ПоÑледний оператор возвращает Ñлишком много Ñтолбцов." -#: executor/functions.c:1788 +#: executor/functions.c:1797 #, c-format msgid "Final statement returns %s instead of %s at column %d." msgstr "ПоÑледний оператор возвращает %s вмеÑто %s Ð´Ð»Ñ Ñтолбца %d." -#: executor/functions.c:1818 +#: executor/functions.c:1827 #, c-format msgid "Final statement returns too few columns." msgstr "ПоÑледний оператор возвращает Ñлишком мало Ñтолбцов." -#: executor/functions.c:1867 +#: executor/functions.c:1876 #, c-format msgid "return type %s is not supported for SQL functions" msgstr "Ð´Ð»Ñ SQL-функций тип возврата %s не поддерживаетÑÑ" -#: executor/nodeAgg.c:2983 +#: executor/nodeAgg.c:3038 #, c-format msgid "combine function for aggregate %u must be declared as STRICT" msgstr "" "ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð¸Ñ€ÑƒÑŽÑ‰Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð´Ð»Ñ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð° %u должна объÑвлÑтьÑÑ ÐºÐ°Ðº ÑÑ‚Ñ€Ð¾Ð³Ð°Ñ (STRICT)" -#: executor/nodeAgg.c:3028 executor/nodeWindowAgg.c:2285 +#: executor/nodeAgg.c:3083 executor/nodeWindowAgg.c:2318 #, c-format msgid "aggregate %u needs to have compatible input type and transition type" msgstr "" "Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %u должна иметь ÑовмеÑтимые входной и переходный типы" -#: executor/nodeAgg.c:3094 parser/parse_agg.c:612 parser/parse_agg.c:642 +#: executor/nodeAgg.c:3149 parser/parse_agg.c:612 parser/parse_agg.c:642 #, c-format msgid "aggregate function calls cannot be nested" msgstr "вложенные вызовы агрегатных функций недопуÑтимы" @@ -11305,7 +11085,7 @@ msgstr "не удалоÑÑŒ перемеÑтитьÑÑ Ð²Ð¾ временном msgid "could not write to hash-join temporary file: %m" msgstr "не удалоÑÑŒ запиÑать во временный файл хеш-ÑоединениÑ: %m" -#: executor/nodeHashjoin.c:928 executor/nodeHashjoin.c:938 +#: executor/nodeHashjoin.c:935 executor/nodeHashjoin.c:945 #, c-format msgid "could not read from hash-join temporary file: %m" msgstr "не удалоÑÑŒ прочитать временный файл хеш-ÑоединениÑ: %m" @@ -11355,12 +11135,12 @@ msgstr "" msgid "Query has too few columns." msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ меньше Ñтолбцов." -#: executor/nodeModifyTable.c:1117 +#: executor/nodeModifyTable.c:1132 #, c-format msgid "ON CONFLICT DO UPDATE command cannot affect row a second time" msgstr "команда ON CONFLICT DO UPDATE не может менÑть Ñтроку повторно" -#: executor/nodeModifyTable.c:1118 +#: executor/nodeModifyTable.c:1133 #, c-format msgid "" "Ensure that no rows proposed for insertion within the same command have " @@ -11390,22 +11170,22 @@ msgstr "Ð¿Ð¾Ð´Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð² выражении вернул больше од msgid "moving-aggregate transition function must not return null" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð° движимого агрегата не должна возвращать NULL" -#: executor/nodeWindowAgg.c:1609 +#: executor/nodeWindowAgg.c:1642 #, c-format msgid "frame starting offset must not be null" msgstr "Ñмещение начала рамки не может быть NULL" -#: executor/nodeWindowAgg.c:1622 +#: executor/nodeWindowAgg.c:1655 #, c-format msgid "frame starting offset must not be negative" msgstr "Ñмещение начала рамки не может быть отрицательным" -#: executor/nodeWindowAgg.c:1635 +#: executor/nodeWindowAgg.c:1668 #, c-format msgid "frame ending offset must not be null" msgstr "Ñмещение конца рамки не может быть NULL" -#: executor/nodeWindowAgg.c:1648 +#: executor/nodeWindowAgg.c:1681 #, c-format msgid "frame ending offset must not be negative" msgstr "Ñмещение конца рамки не может быть отрицательным" @@ -11441,7 +11221,7 @@ msgstr "не удалоÑÑŒ открыть Ð·Ð°Ð¿Ñ€Ð¾Ñ %s как курÑор" msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE не поддерживаетÑÑ" -#: executor/spi.c:1339 parser/analyze.c:2363 +#: executor/spi.c:1339 parser/analyze.c:2360 #, c-format msgid "Scrollable cursors must be READ ONLY." msgstr "Прокручиваемые курÑоры должны быть READ ONLY." @@ -11477,84 +11257,84 @@ msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes." msgstr "" "Ðе удалоÑÑŒ увеличить Ñтроковый буфер (в буфере байт: %d, требовалоÑÑŒ ещё %d)." -#: libpq/auth.c:251 +#: libpq/auth.c:254 #, c-format msgid "authentication failed for user \"%s\": host rejected" msgstr "" -"пользователь \"%s\" не прошёл проверку подлинноÑти: не разрешённый компьютер " +"пользователь \"%s\" не прошёл проверку подлинноÑти: не разрешённый компьютер" -#: libpq/auth.c:254 +#: libpq/auth.c:257 #, c-format msgid "\"trust\" authentication failed for user \"%s\"" msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (\"trust\")" -#: libpq/auth.c:257 +#: libpq/auth.c:260 #, c-format msgid "Ident authentication failed for user \"%s\"" msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (Ident)" -#: libpq/auth.c:260 +#: libpq/auth.c:263 #, c-format msgid "Peer authentication failed for user \"%s\"" msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (Peer)" -#: libpq/auth.c:264 +#: libpq/auth.c:267 #, c-format msgid "password authentication failed for user \"%s\"" msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (по паролю)" -#: libpq/auth.c:269 +#: libpq/auth.c:272 #, c-format msgid "GSSAPI authentication failed for user \"%s\"" msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (GSSAPI)" -#: libpq/auth.c:272 +#: libpq/auth.c:275 #, c-format msgid "SSPI authentication failed for user \"%s\"" msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (SSPI)" -#: libpq/auth.c:275 +#: libpq/auth.c:278 #, c-format msgid "PAM authentication failed for user \"%s\"" msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (PAM)" -#: libpq/auth.c:278 +#: libpq/auth.c:281 #, c-format msgid "BSD authentication failed for user \"%s\"" msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (BSD)" -#: libpq/auth.c:281 +#: libpq/auth.c:284 #, c-format msgid "LDAP authentication failed for user \"%s\"" msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (LDAP)" -#: libpq/auth.c:284 +#: libpq/auth.c:287 #, c-format msgid "certificate authentication failed for user \"%s\"" msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (по Ñертификату)" -#: libpq/auth.c:287 +#: libpq/auth.c:290 #, c-format msgid "RADIUS authentication failed for user \"%s\"" msgstr "пользователь \"%s\" не прошёл проверку подлинноÑти (RADIUS)" -#: libpq/auth.c:290 +#: libpq/auth.c:293 #, c-format msgid "authentication failed for user \"%s\": invalid authentication method" msgstr "" "пользователь \"%s\" не прошёл проверку подлинноÑти: неверный метод проверки" -#: libpq/auth.c:294 +#: libpq/auth.c:297 #, c-format msgid "Connection matched pg_hba.conf line %d: \"%s\"" msgstr "Подключение ÑоответÑтвует Ñтроке %d в pg_hba.conf: \"%s\"" -#: libpq/auth.c:349 +#: libpq/auth.c:352 #, c-format msgid "connection requires a valid client certificate" msgstr "Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ÑÑ Ð³Ð¾Ð´Ð½Ñ‹Ð¹ Ñертификат клиента" -#: libpq/auth.c:391 +#: libpq/auth.c:394 #, c-format msgid "" "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s" @@ -11562,22 +11342,22 @@ msgstr "" "pg_hba.conf отвергает подключение Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸: компьютер \"%s\", " "пользователь \"%s\", \"%s\"" -#: libpq/auth.c:393 libpq/auth.c:409 libpq/auth.c:467 libpq/auth.c:485 +#: libpq/auth.c:396 libpq/auth.c:412 libpq/auth.c:470 libpq/auth.c:488 msgid "SSL off" msgstr "SSL выкл." -#: libpq/auth.c:393 libpq/auth.c:409 libpq/auth.c:467 libpq/auth.c:485 +#: libpq/auth.c:396 libpq/auth.c:412 libpq/auth.c:470 libpq/auth.c:488 msgid "SSL on" msgstr "SSL вкл." -#: libpq/auth.c:397 +#: libpq/auth.c:400 #, c-format msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\"" msgstr "" "pg_hba.conf отвергает подключение Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸: компьютер \"%s\", " "пользователь \"%s\"" -#: libpq/auth.c:406 +#: libpq/auth.c:409 #, c-format msgid "" "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s" @@ -11586,7 +11366,7 @@ msgstr "" "pg_hba.conf отвергает подключение: компьютер \"%s\", пользователь \"%s\", " "база данных \"%s\", %s" -#: libpq/auth.c:413 +#: libpq/auth.c:416 #, c-format msgid "" "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\"" @@ -11594,37 +11374,37 @@ msgstr "" "pg_hba.conf отвергает подключение: компьютер \"%s\", пользователь \"%s\", " "база данных \"%s\"" -#: libpq/auth.c:442 +#: libpq/auth.c:445 #, c-format msgid "Client IP address resolved to \"%s\", forward lookup matches." msgstr "" "IP-Ð°Ð´Ñ€ÐµÑ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð° разрешаетÑÑ Ð² \"%s\", ÑоответÑтвует прÑмому преобразованию." -#: libpq/auth.c:445 +#: libpq/auth.c:448 #, c-format msgid "Client IP address resolved to \"%s\", forward lookup not checked." msgstr "" "IP-Ð°Ð´Ñ€ÐµÑ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð° разрешаетÑÑ Ð² \"%s\", прÑмое преобразование не проверÑлоÑÑŒ." -#: libpq/auth.c:448 +#: libpq/auth.c:451 #, c-format msgid "Client IP address resolved to \"%s\", forward lookup does not match." msgstr "" "IP-Ð°Ð´Ñ€ÐµÑ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð° разрешаетÑÑ Ð² \"%s\", Ñто не ÑоответÑтвует прÑмому " "преобразованию." -#: libpq/auth.c:451 +#: libpq/auth.c:454 #, c-format msgid "Could not translate client host name \"%s\" to IP address: %s." msgstr "" "Преобразовать Ð¸Ð¼Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ñкого компьютера \"%s\" в IP-Ð°Ð´Ñ€ÐµÑ Ð½Ðµ удалоÑÑŒ: %s." -#: libpq/auth.c:456 +#: libpq/auth.c:459 #, c-format msgid "Could not resolve client IP address to a host name: %s." msgstr "Получить Ð¸Ð¼Ñ ÐºÐ¾Ð¼Ð¿ÑŒÑŽÑ‚ÐµÑ€Ð° из IP-адреÑа клиента не удалоÑÑŒ: %s." -#: libpq/auth.c:465 +#: libpq/auth.c:468 #, c-format msgid "" "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s" @@ -11633,7 +11413,7 @@ msgstr "" "в pg_hba.conf нет запиÑи, разрешающей подключение Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ Ñ " "компьютера \"%s\" Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\", %s" -#: libpq/auth.c:472 +#: libpq/auth.c:475 #, c-format msgid "" "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\"" @@ -11641,232 +11421,232 @@ msgstr "" "в pg_hba.conf нет запиÑи, разрешающей подключение Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ Ñ " "компьютера \"%s\" Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\"" -#: libpq/auth.c:482 +#: libpq/auth.c:485 #, c-format msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s" msgstr "" -"в pg_hba.conf нет запиÑи, разрешающей подключение Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ Ñ " -"компьютера \"%s\" Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\", базы данных \"%s\", %s" +"в pg_hba.conf нет запиÑи Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¿ÑŒÑŽÑ‚ÐµÑ€Ð° \"%s\", Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\", базы " +"\"%s\", %s" -#: libpq/auth.c:490 +#: libpq/auth.c:493 #, c-format msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\"" msgstr "" "в pg_hba.conf нет запиÑи Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¿ÑŒÑŽÑ‚ÐµÑ€Ð° \"%s\", Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\", базы " "\"%s\"" -#: libpq/auth.c:533 libpq/hba.c:1178 +#: libpq/auth.c:536 libpq/hba.c:1178 #, c-format msgid "" "MD5 authentication is not supported when \"db_user_namespace\" is enabled" msgstr "" -"проверка подлинноÑти MD5 не поддерживаетÑÑ, когда включен режим " +"проверка подлинноÑти MD5 не поддерживаетÑÑ, когда включён режим " "\"db_user_namespace\"" -#: libpq/auth.c:667 +#: libpq/auth.c:670 #, c-format msgid "expected password response, got message type %d" msgstr "ожидалÑÑ Ð¾Ñ‚Ð²ÐµÑ‚ Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¼, но получено Ñообщение %d" -#: libpq/auth.c:695 +#: libpq/auth.c:698 #, c-format msgid "invalid password packet size" msgstr "неверный размер пакета Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¼" -#: libpq/auth.c:825 +#: libpq/auth.c:712 +#, c-format +msgid "empty password returned by client" +msgstr "клиент возвратил пуÑтой пароль" + +#: libpq/auth.c:842 #, c-format msgid "GSSAPI is not supported in protocol version 2" msgstr "GSSAPI не поддерживаетÑÑ Ð² протоколе верÑии 2" -#: libpq/auth.c:885 +#: libpq/auth.c:902 #, c-format msgid "expected GSS response, got message type %d" msgstr "ожидалÑÑ Ð¾Ñ‚Ð²ÐµÑ‚ GSS, но получено Ñообщение %d" -#: libpq/auth.c:946 +#: libpq/auth.c:963 msgid "accepting GSS security context failed" msgstr "принÑть контекÑÑ‚ безопаÑноÑти GSS не удалоÑÑŒ" -#: libpq/auth.c:972 +#: libpq/auth.c:989 msgid "retrieving GSS user name failed" msgstr "получить Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ GSS не удалоÑÑŒ" -#: libpq/auth.c:1091 +#: libpq/auth.c:1108 #, c-format msgid "SSPI is not supported in protocol version 2" msgstr "SSPI не поддерживаетÑÑ Ð² протоколе верÑии 2" -#: libpq/auth.c:1106 +#: libpq/auth.c:1123 msgid "could not acquire SSPI credentials" msgstr "не удалоÑÑŒ получить удоÑтоверение SSPI" -#: libpq/auth.c:1124 +#: libpq/auth.c:1141 #, c-format msgid "expected SSPI response, got message type %d" msgstr "ожидалÑÑ Ð¾Ñ‚Ð²ÐµÑ‚ SSPI, но получено Ñообщение %d" -#: libpq/auth.c:1196 +#: libpq/auth.c:1213 msgid "could not accept SSPI security context" msgstr "принÑть контекÑÑ‚ безопаÑноÑти SSPI не удалоÑÑŒ" -#: libpq/auth.c:1258 +#: libpq/auth.c:1275 msgid "could not get token from SSPI security context" msgstr "не удалоÑÑŒ получить маркер из контекÑта безопаÑноÑти SSPI" -#: libpq/auth.c:1377 libpq/auth.c:1396 +#: libpq/auth.c:1394 libpq/auth.c:1413 #, c-format msgid "could not translate name" msgstr "не удалоÑÑŒ преобразовать имÑ" -#: libpq/auth.c:1409 +#: libpq/auth.c:1426 #, c-format msgid "realm name too long" msgstr "Ð¸Ð¼Ñ Ð¾Ð±Ð»Ð°Ñти Ñлишком длинное" -#: libpq/auth.c:1424 +#: libpq/auth.c:1441 #, c-format msgid "translated account name too long" msgstr "преобразованное Ð¸Ð¼Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð¾Ð¹ запиÑи Ñлишком длинное" -#: libpq/auth.c:1610 +#: libpq/auth.c:1627 #, c-format msgid "could not create socket for Ident connection: %m" msgstr "не удалоÑÑŒ Ñоздать Ñокет Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº Ñерверу Ident: %m" -#: libpq/auth.c:1625 +#: libpq/auth.c:1642 #, c-format msgid "could not bind to local address \"%s\": %m" msgstr "не удалоÑÑŒ привÑзатьÑÑ Ðº локальному адреÑу \"%s\": %m" -#: libpq/auth.c:1637 +#: libpq/auth.c:1654 #, c-format msgid "could not connect to Ident server at address \"%s\", port %s: %m" msgstr "не удалоÑÑŒ подключитьÑÑ Ðº Ñерверу Ident по адреÑу \"%s\", порт %s: %m" -#: libpq/auth.c:1659 +#: libpq/auth.c:1676 #, c-format msgid "could not send query to Ident server at address \"%s\", port %s: %m" msgstr "" "не удалоÑÑŒ отправить Ð·Ð°Ð¿Ñ€Ð¾Ñ Ñерверу Ident по адреÑу \"%s\", порт %s: %m" -#: libpq/auth.c:1676 +#: libpq/auth.c:1693 #, c-format msgid "" "could not receive response from Ident server at address \"%s\", port %s: %m" msgstr "" "не удалоÑÑŒ получить ответ от Ñервера Ident по адреÑу \"%s\", порт %s: %m" -#: libpq/auth.c:1686 +#: libpq/auth.c:1703 #, c-format msgid "invalidly formatted response from Ident server: \"%s\"" msgstr "неверно форматированный ответ от Ñервера Ident: \"%s\"" -#: libpq/auth.c:1726 +#: libpq/auth.c:1743 #, c-format msgid "peer authentication is not supported on this platform" msgstr "проверка подлинноÑти peer в Ñтой ОС не поддерживаетÑÑ" -#: libpq/auth.c:1730 +#: libpq/auth.c:1747 #, c-format msgid "could not get peer credentials: %m" msgstr "не удалоÑÑŒ получить данные Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ‡ÐµÑ€ÐµÐ· механизм peer: %m" -#: libpq/auth.c:1739 +#: libpq/auth.c:1756 #, c-format msgid "could not look up local user ID %ld: %s" msgstr "найти локального Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¿Ð¾ идентификатору (%ld) не удалоÑÑŒ: %s" -#: libpq/auth.c:1823 libpq/auth.c:2149 libpq/auth.c:2509 -#, c-format -msgid "empty password returned by client" -msgstr "клиент возвратил пуÑтой пароль" - -#: libpq/auth.c:1833 +#: libpq/auth.c:1844 #, c-format msgid "error from underlying PAM layer: %s" msgstr "ошибка в нижележащем Ñлое PAM: %s" -#: libpq/auth.c:1914 +#: libpq/auth.c:1925 #, c-format msgid "could not create PAM authenticator: %s" msgstr "не удалоÑÑŒ Ñоздать аутентификатор PAM: %s" -#: libpq/auth.c:1925 +#: libpq/auth.c:1936 #, c-format msgid "pam_set_item(PAM_USER) failed: %s" msgstr "ошибка в pam_set_item(PAM_USER): %s" -#: libpq/auth.c:1936 +#: libpq/auth.c:1947 #, c-format msgid "pam_set_item(PAM_RHOST) failed: %s" msgstr "ошибка в pam_set_item(PAM_RHOST): %s" -#: libpq/auth.c:1947 +#: libpq/auth.c:1958 #, c-format msgid "pam_set_item(PAM_CONV) failed: %s" msgstr "ошибка в pam_set_item(PAM_CONV): %s" -#: libpq/auth.c:1958 +#: libpq/auth.c:1969 #, c-format msgid "pam_authenticate failed: %s" msgstr "ошибка в pam_authenticate: %s" -#: libpq/auth.c:1969 +#: libpq/auth.c:1980 #, c-format msgid "pam_acct_mgmt failed: %s" msgstr "ошибка в pam_acct_mgmt: %s" -#: libpq/auth.c:1980 +#: libpq/auth.c:1991 #, c-format msgid "could not release PAM authenticator: %s" msgstr "не удалоÑÑŒ оÑвободить аутентификатор PAM: %s" -#: libpq/auth.c:2045 +#: libpq/auth.c:2056 #, c-format msgid "could not initialize LDAP: %m" msgstr "не удалоÑÑŒ инициализировать LDAP: %m" -#: libpq/auth.c:2048 +#: libpq/auth.c:2059 #, c-format msgid "could not initialize LDAP: error code %d" msgstr "не удалоÑÑŒ инициализировать LDAP (код ошибки: %d)" -#: libpq/auth.c:2058 +#: libpq/auth.c:2069 #, c-format msgid "could not set LDAP protocol version: %s" msgstr "не удалоÑÑŒ задать верÑию протокола LDAP: %s" -#: libpq/auth.c:2087 +#: libpq/auth.c:2098 #, c-format msgid "could not load wldap32.dll" msgstr "не удалоÑÑŒ загрузить wldap32.dll" -#: libpq/auth.c:2095 +#: libpq/auth.c:2106 #, c-format msgid "could not load function _ldap_start_tls_sA in wldap32.dll" msgstr "не удалоÑÑŒ найти функцию _ldap_start_tls_sA в wldap32.dll" -#: libpq/auth.c:2096 +#: libpq/auth.c:2107 #, c-format msgid "LDAP over SSL is not supported on this platform." msgstr "LDAP через SSL не поддерживаетÑÑ Ð² Ñтой ОС." -#: libpq/auth.c:2111 +#: libpq/auth.c:2122 #, c-format msgid "could not start LDAP TLS session: %s" msgstr "не удалоÑÑŒ начать ÑÐµÐ°Ð½Ñ LDAP TLS: %s" -#: libpq/auth.c:2133 +#: libpq/auth.c:2144 #, c-format msgid "LDAP server not specified" msgstr "LDAP-Ñервер не определён" -#: libpq/auth.c:2186 +#: libpq/auth.c:2192 #, c-format msgid "invalid character in user name for LDAP authentication" msgstr "недопуÑтимый Ñимвол в имени Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ подлинноÑти LDAP" -#: libpq/auth.c:2201 +#: libpq/auth.c:2207 #, c-format msgid "" "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": " @@ -11875,28 +11655,28 @@ msgstr "" "не удалоÑÑŒ выполнить начальную привÑзку LDAP Ð´Ð»Ñ ldapbinddn \"%s\" на " "Ñервере \"%s\": %s" -#: libpq/auth.c:2225 +#: libpq/auth.c:2231 #, c-format msgid "could not search LDAP for filter \"%s\" on server \"%s\": %s" msgstr "" "не удалоÑÑŒ выполнить LDAP-поиÑк по фильтру \"%s\" на Ñервере \"%s\": %s" -#: libpq/auth.c:2236 +#: libpq/auth.c:2242 #, c-format msgid "LDAP user \"%s\" does not exist" msgstr "в LDAP нет Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\"" -#: libpq/auth.c:2237 +#: libpq/auth.c:2243 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned no entries." msgstr "LDAP-поиÑк по фильтру \"%s\" на Ñервере \"%s\" не вернул результатов" -#: libpq/auth.c:2241 +#: libpq/auth.c:2247 #, c-format msgid "LDAP user \"%s\" is not unique" msgstr "пользователь LDAP \"%s\" не уникален" -#: libpq/auth.c:2242 +#: libpq/auth.c:2248 #, c-format msgid "LDAP search for filter \"%s\" on server \"%s\" returned %d entry." msgid_plural "" @@ -11905,7 +11685,7 @@ msgstr[0] "LDAP-поиÑк по фильтру \"%s\" на Ñервере \"%s\" msgstr[1] "LDAP-поиÑк по фильтру \"%s\" на Ñервере \"%s\" вернул %d запиÑи." msgstr[2] "LDAP-поиÑк по фильтру \"%s\" на Ñервере \"%s\" вернул %d запиÑей." -#: libpq/auth.c:2260 +#: libpq/auth.c:2266 #, c-format msgid "" "could not get dn for the first entry matching \"%s\" on server \"%s\": %s" @@ -11913,19 +11693,19 @@ msgstr "" "не удалоÑÑŒ получить dn Ð´Ð»Ñ Ð¿ÐµÑ€Ð²Ð¾Ð³Ð¾ результата, ÑоответÑтвующего \"%s\" на " "Ñервере \"%s\": %s" -#: libpq/auth.c:2280 +#: libpq/auth.c:2286 #, c-format msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s" msgstr "" "не удалоÑÑŒ отвÑзатьÑÑ Ð¿Ð¾Ñле поиÑка Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\" на Ñервере \"%s\": %s" -#: libpq/auth.c:2310 +#: libpq/auth.c:2316 #, c-format msgid "LDAP login failed for user \"%s\" on server \"%s\": %s" msgstr "" "ошибка при региÑтрации в LDAP Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\" на Ñервере \"%s\": %s" -#: libpq/auth.c:2338 +#: libpq/auth.c:2344 #, c-format msgid "" "certificate authentication failed for user \"%s\": client certificate " @@ -11934,98 +11714,99 @@ msgstr "" "ошибка проверки подлинноÑти Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\" по Ñертификату: Ñертификат " "клиента не Ñодержит Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ" -#: libpq/auth.c:2465 +#: libpq/auth.c:2474 #, c-format msgid "RADIUS server not specified" msgstr "RADIUS-Ñервер не определён" -#: libpq/auth.c:2472 +#: libpq/auth.c:2481 #, c-format msgid "RADIUS secret not specified" msgstr "Ñекрет RADIUS не определён" -#: libpq/auth.c:2488 libpq/hba.c:1632 +#: libpq/auth.c:2497 libpq/hba.c:1632 #, c-format msgid "could not translate RADIUS server name \"%s\" to address: %s" msgstr "не удалоÑÑŒ преобразовать Ð¸Ð¼Ñ Ñервера RADIUS \"%s\" в адреÑ: %s" -#: libpq/auth.c:2516 +# well-spelled: Ñимв +#: libpq/auth.c:2518 #, c-format msgid "" "RADIUS authentication does not support passwords longer than %d characters" msgstr "проверка подлинноÑти RADIUS не поддерживает пароли длиннее %d Ñимв." -#: libpq/auth.c:2528 +#: libpq/auth.c:2530 #, c-format msgid "could not generate random encryption vector" msgstr "не удалоÑÑŒ Ñгенерировать Ñлучайный вектор шифрованиÑ" -#: libpq/auth.c:2566 +#: libpq/auth.c:2568 #, c-format msgid "could not perform MD5 encryption of password" msgstr "не удалоÑÑŒ вычиÑлить MD5-хеш паролÑ" -#: libpq/auth.c:2591 +#: libpq/auth.c:2593 #, c-format msgid "could not create RADIUS socket: %m" msgstr "не удалоÑÑŒ Ñоздать Ñокет RADIUS: %m" -#: libpq/auth.c:2612 +#: libpq/auth.c:2614 #, c-format msgid "could not bind local RADIUS socket: %m" msgstr "не удалоÑÑŒ привÑзатьÑÑ Ðº локальному Ñокету RADIUS: %m" -#: libpq/auth.c:2622 +#: libpq/auth.c:2624 #, c-format msgid "could not send RADIUS packet: %m" msgstr "не удалоÑÑŒ отправить пакет RADIUS: %m" -#: libpq/auth.c:2655 libpq/auth.c:2680 +#: libpq/auth.c:2657 libpq/auth.c:2682 #, c-format msgid "timeout waiting for RADIUS response" msgstr "превышено Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð° RADIUS" -#: libpq/auth.c:2673 +#: libpq/auth.c:2675 #, c-format msgid "could not check status on RADIUS socket: %m" msgstr "не удалоÑÑŒ проверить ÑоÑтоÑние Ñокета RADIUS: %m" -#: libpq/auth.c:2702 +#: libpq/auth.c:2704 #, c-format msgid "could not read RADIUS response: %m" msgstr "не удалоÑÑŒ прочитать ответ RADIUS: %m" -#: libpq/auth.c:2714 libpq/auth.c:2718 +#: libpq/auth.c:2716 libpq/auth.c:2720 #, c-format msgid "RADIUS response was sent from incorrect port: %d" msgstr "ответ RADIUS был отправлен Ñ Ð½ÐµÐ²ÐµÑ€Ð½Ð¾Ð³Ð¾ порта: %d" -#: libpq/auth.c:2727 +#: libpq/auth.c:2729 #, c-format msgid "RADIUS response too short: %d" msgstr "Ñлишком короткий ответ RADIUS: %d" -#: libpq/auth.c:2734 +#: libpq/auth.c:2736 #, c-format msgid "RADIUS response has corrupt length: %d (actual length %d)" msgstr "в ответе RADIUS иÑпорчена длина: %d (фактичеÑÐºÐ°Ñ Ð´Ð»Ð¸Ð½Ð° %d)" -#: libpq/auth.c:2742 +#: libpq/auth.c:2744 #, c-format msgid "RADIUS response is to a different request: %d (should be %d)" msgstr "пришёл ответ RADIUS на другой запроÑ: %d (ожидалÑÑ %d)" -#: libpq/auth.c:2767 +#: libpq/auth.c:2769 #, c-format msgid "could not perform MD5 encryption of received packet" msgstr "не удалоÑÑŒ вычиÑлить MD5 Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð½Ñтого пакета" -#: libpq/auth.c:2776 +#: libpq/auth.c:2778 #, c-format msgid "RADIUS response has incorrect MD5 signature" msgstr "ответ RADIUS Ñодержит неверную подпиÑÑŒ MD5" -#: libpq/auth.c:2793 +#: libpq/auth.c:2795 #, c-format msgid "RADIUS response has invalid code (%d) for user \"%s\"" msgstr "ответ RADIUS Ñодержит неверный код (%d) Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\"" @@ -12038,7 +11819,7 @@ msgid "invalid large-object descriptor: %d" msgstr "неверный деÑкриптор большого объекта: %d" #: libpq/be-fsstubs.c:178 libpq/be-fsstubs.c:216 libpq/be-fsstubs.c:600 -#: libpq/be-fsstubs.c:788 +#: libpq/be-fsstubs.c:788 libpq/be-fsstubs.c:908 #, c-format msgid "permission denied for large object %u" msgstr "нет доÑтупа к большому объекту %u" @@ -12164,88 +11945,88 @@ msgstr "не удалоÑÑŒ загрузить файл закрытого кл msgid "check of private key failed: %s" msgstr "ошибка при проверке закрытого ключа: %s" -#: libpq/be-secure-openssl.c:292 +#: libpq/be-secure-openssl.c:300 #, c-format msgid "could not load root certificate file \"%s\": %s" msgstr "не удалоÑÑŒ загрузить файл корневых Ñертификатов \"%s\": %s" -#: libpq/be-secure-openssl.c:316 +#: libpq/be-secure-openssl.c:324 #, c-format msgid "SSL certificate revocation list file \"%s\" ignored" msgstr "файл Ñо ÑпиÑком отзыва Ñертификатов SSL \"%s\" игнорируетÑÑ" -#: libpq/be-secure-openssl.c:318 +#: libpq/be-secure-openssl.c:326 #, c-format msgid "SSL library does not support certificate revocation lists." msgstr "Библиотека SSL не поддерживает ÑпиÑки отзыва Ñертификатов." -#: libpq/be-secure-openssl.c:323 +#: libpq/be-secure-openssl.c:331 #, c-format msgid "could not load SSL certificate revocation list file \"%s\": %s" msgstr "" "не удалоÑÑŒ загрузить файл Ñо ÑпиÑком отзыва Ñертификатов SSL \"%s\": %s" -#: libpq/be-secure-openssl.c:370 +#: libpq/be-secure-openssl.c:378 #, c-format msgid "could not initialize SSL connection: %s" msgstr "инициализировать SSL-подключение не удалоÑÑŒ: %s" -#: libpq/be-secure-openssl.c:378 +#: libpq/be-secure-openssl.c:386 #, c-format msgid "could not set SSL socket: %s" msgstr "не удалоÑÑŒ Ñоздать SSL-Ñокет: %s" -#: libpq/be-secure-openssl.c:432 +#: libpq/be-secure-openssl.c:440 #, c-format msgid "could not accept SSL connection: %m" msgstr "не удалоÑÑŒ принÑть SSL-подключение: %m" -#: libpq/be-secure-openssl.c:436 libpq/be-secure-openssl.c:447 +#: libpq/be-secure-openssl.c:444 libpq/be-secure-openssl.c:455 #, c-format msgid "could not accept SSL connection: EOF detected" msgstr "не удалоÑÑŒ принÑть SSL-подключение: обрыв данных" -#: libpq/be-secure-openssl.c:441 +#: libpq/be-secure-openssl.c:449 #, c-format msgid "could not accept SSL connection: %s" msgstr "не удалоÑÑŒ принÑть SSL-подключение: %s" -#: libpq/be-secure-openssl.c:452 libpq/be-secure-openssl.c:593 -#: libpq/be-secure-openssl.c:653 +#: libpq/be-secure-openssl.c:460 libpq/be-secure-openssl.c:603 +#: libpq/be-secure-openssl.c:669 #, c-format msgid "unrecognized SSL error code: %d" msgstr "нераÑпознанный код ошибки SSL: %d" -#: libpq/be-secure-openssl.c:496 +#: libpq/be-secure-openssl.c:504 #, c-format msgid "SSL certificate's common name contains embedded null" msgstr "Ð˜Ð¼Ñ SSL-Ñертификата включает нулевой байт" -#: libpq/be-secure-openssl.c:507 +#: libpq/be-secure-openssl.c:515 #, c-format msgid "SSL connection from \"%s\"" msgstr "SSL-подключение от \"%s\"" -#: libpq/be-secure-openssl.c:584 libpq/be-secure-openssl.c:644 +#: libpq/be-secure-openssl.c:592 libpq/be-secure-openssl.c:654 #, c-format msgid "SSL error: %s" msgstr "ошибка SSL: %s" -#: libpq/be-secure-openssl.c:1055 +#: libpq/be-secure-openssl.c:1071 #, c-format msgid "ECDH: unrecognized curve name: %s" msgstr "ECDH: нераÑпознанное Ð¸Ð¼Ñ ÐºÑ€Ð¸Ð²Ð¾Ð¹: %s" -#: libpq/be-secure-openssl.c:1060 +#: libpq/be-secure-openssl.c:1076 #, c-format msgid "ECDH: could not create key" msgstr "ECDH: не удалоÑÑŒ Ñоздать ключ" -#: libpq/be-secure-openssl.c:1084 +#: libpq/be-secure-openssl.c:1100 msgid "no SSL error reported" msgstr "нет ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибке SSL" -#: libpq/be-secure-openssl.c:1088 +#: libpq/be-secure-openssl.c:1104 #, c-format msgid "SSL error code %lu" msgstr "код ошибки SSL: %lu" @@ -12265,17 +12046,17 @@ msgstr "Роль \"%s\" не ÑущеÑтвует." msgid "User \"%s\" has no password assigned." msgstr "Пользователь \"%s\" не имеет паролÑ." -#: libpq/crypt.c:79 +#: libpq/crypt.c:88 libpq/crypt.c:103 #, c-format msgid "User \"%s\" has an empty password." msgstr "У Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\" пуÑтой пароль." -#: libpq/crypt.c:159 +#: libpq/crypt.c:184 #, c-format msgid "User \"%s\" has an expired password." msgstr "Срок Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\" иÑтёк." -#: libpq/crypt.c:167 +#: libpq/crypt.c:192 #, c-format msgid "Password does not match for user \"%s\"." msgstr "Пароль не подходит Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\"." @@ -12624,73 +12405,73 @@ msgstr "" msgid "could not open usermap file \"%s\": %m" msgstr "не удалоÑÑŒ открыть файл ÑопоÑтавлений пользователей \"%s\": %m" -#: libpq/pqcomm.c:202 +#: libpq/pqcomm.c:221 #, c-format msgid "could not set socket to nonblocking mode: %m" msgstr "не удалоÑÑŒ перевеÑти Ñокет в неблокирующий режим: %m" -#: libpq/pqcomm.c:354 +#: libpq/pqcomm.c:373 #, c-format msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)" msgstr "длина пути доменного Ñокета \"%s\" превышает предел (%d байт)" -#: libpq/pqcomm.c:375 +#: libpq/pqcomm.c:394 #, c-format msgid "could not translate host name \"%s\", service \"%s\" to address: %s" msgstr "перевеÑти Ð¸Ð¼Ñ ÑƒÐ·Ð»Ð° \"%s\", Ñлужбы \"%s\" в Ð°Ð´Ñ€ÐµÑ Ð½Ðµ удалоÑÑŒ: %s" -#: libpq/pqcomm.c:379 +#: libpq/pqcomm.c:398 #, c-format msgid "could not translate service \"%s\" to address: %s" msgstr "не удалоÑÑŒ перевеÑти Ð¸Ð¼Ñ Ñлужбы \"%s\" в адреÑ: %s" -#: libpq/pqcomm.c:406 +#: libpq/pqcomm.c:425 #, c-format msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded" msgstr "" "не удалоÑÑŒ привÑзатьÑÑ ÐºÐ¾ вÑем запрошенным адреÑам: превышен предел " "MAXLISTEN (%d)" -#: libpq/pqcomm.c:415 +#: libpq/pqcomm.c:434 msgid "IPv4" msgstr "IPv4" -#: libpq/pqcomm.c:419 +#: libpq/pqcomm.c:438 msgid "IPv6" msgstr "IPv6" -#: libpq/pqcomm.c:424 +#: libpq/pqcomm.c:443 msgid "Unix" msgstr "Unix" -#: libpq/pqcomm.c:429 +#: libpq/pqcomm.c:448 #, c-format msgid "unrecognized address family %d" msgstr "нераÑпознанное ÑемейÑтво адреÑов: %d" #. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:440 +#: libpq/pqcomm.c:459 #, c-format msgid "could not create %s socket: %m" msgstr "не удалоÑÑŒ Ñоздать Ñокет %s: %m" -#: libpq/pqcomm.c:465 +#: libpq/pqcomm.c:484 #, c-format msgid "setsockopt(SO_REUSEADDR) failed: %m" msgstr "ошибка в setsockopt(SO_REUSEADDR): %m" -#: libpq/pqcomm.c:480 +#: libpq/pqcomm.c:499 #, c-format msgid "setsockopt(IPV6_V6ONLY) failed: %m" msgstr "ошибка в setsockopt(IPV6_V6ONLY): %m" #. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:499 +#: libpq/pqcomm.c:518 #, c-format msgid "could not bind %s socket: %m" msgstr "не удалоÑÑŒ привÑзатьÑÑ Ðº Ñокету %s: %m" -#: libpq/pqcomm.c:502 +#: libpq/pqcomm.c:521 #, c-format msgid "" "Is another postmaster already running on port %d? If not, remove socket file " @@ -12699,7 +12480,7 @@ msgstr "" "Возможно порт %d занÑÑ‚ другим процеÑÑом postmaster? ЕÑли нет, удалите файл " "\"%s\" и повторите попытку." -#: libpq/pqcomm.c:505 +#: libpq/pqcomm.c:524 #, c-format msgid "" "Is another postmaster already running on port %d? If not, wait a few seconds " @@ -12709,62 +12490,62 @@ msgstr "" "попытку через неÑколько Ñекунд." #. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:538 +#: libpq/pqcomm.c:557 #, c-format msgid "could not listen on %s socket: %m" msgstr "не удалоÑÑŒ начать приём в Ñокете %s: %m" -#: libpq/pqcomm.c:623 +#: libpq/pqcomm.c:642 #, c-format msgid "group \"%s\" does not exist" msgstr "группа \"%s\" не ÑущеÑтвует" -#: libpq/pqcomm.c:633 +#: libpq/pqcomm.c:652 #, c-format msgid "could not set group of file \"%s\": %m" msgstr "не удалоÑÑŒ уÑтановить группу Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° \"%s\": %m" -#: libpq/pqcomm.c:644 +#: libpq/pqcomm.c:663 #, c-format msgid "could not set permissions of file \"%s\": %m" msgstr "не удалоÑÑŒ уÑтановить права доÑтупа Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° \"%s\": %m" -#: libpq/pqcomm.c:674 +#: libpq/pqcomm.c:693 #, c-format msgid "could not accept new connection: %m" msgstr "не удалоÑÑŒ принÑть новое подключение: %m" -#: libpq/pqcomm.c:885 +#: libpq/pqcomm.c:904 #, c-format msgid "there is no client connection" msgstr "нет клиентÑкого подключениÑ" -#: libpq/pqcomm.c:936 libpq/pqcomm.c:1032 +#: libpq/pqcomm.c:955 libpq/pqcomm.c:1051 #, c-format msgid "could not receive data from client: %m" msgstr "не удалоÑÑŒ получить данные от клиента: %m" -#: libpq/pqcomm.c:1177 tcop/postgres.c:3917 +#: libpq/pqcomm.c:1196 tcop/postgres.c:3915 #, c-format msgid "terminating connection because protocol synchronization was lost" msgstr "закрытие Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð·-за потери Ñинхронизации протокола" -#: libpq/pqcomm.c:1243 +#: libpq/pqcomm.c:1262 #, c-format msgid "unexpected EOF within message length word" msgstr "неожиданный обрыв данных в Ñлове длины ÑообщениÑ" -#: libpq/pqcomm.c:1254 +#: libpq/pqcomm.c:1273 #, c-format msgid "invalid message length" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° ÑообщениÑ" -#: libpq/pqcomm.c:1276 libpq/pqcomm.c:1289 +#: libpq/pqcomm.c:1295 libpq/pqcomm.c:1308 #, c-format msgid "incomplete message from client" msgstr "неполное Ñообщение от клиента" -#: libpq/pqcomm.c:1422 +#: libpq/pqcomm.c:1441 #, c-format msgid "could not send data to client: %m" msgstr "не удалоÑÑŒ поÑлать данные клиенту: %m" @@ -12845,6 +12626,7 @@ msgstr " -d 1-5 уровень отладочных Ñообщен msgid " -D DATADIR database directory\n" msgstr " -D КÐТÐЛОГ каталог Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸\n" +# well-spelled: ДМГ #: main/main.c:336 #, c-format msgid " -e use European date input format (DMY)\n" @@ -12875,6 +12657,7 @@ msgstr " -k КÐТÐЛОГ раÑположение доменных Ñ msgid " -l enable SSL connections\n" msgstr " -l разрешить SSL-подключениÑ\n" +# well-spelled: ПОДКЛ #: main/main.c:344 #, c-format msgid " -N MAX-CONNECT maximum number of allowed connections\n" @@ -13060,7 +12843,7 @@ msgid "" msgstr "" "\n" "Полный ÑпиÑок параметров конфигурации Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¸ варианты\n" -"их наÑтройки через командную Ñтроку или в файле конфигурации\n" +"их уÑтановки через командную Ñтроку или в файле конфигурации\n" "вы можете найти в документации.\n" "\n" "Об ошибках Ñообщайте по адреÑу .\n" @@ -13155,19 +12938,19 @@ msgid "%s cannot be applied to the nullable side of an outer join" msgstr "%s не может применÑтьÑÑ Ðº NULL-Ñодержащей Ñтороне внешнего ÑоединениÑ" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: optimizer/plan/planner.c:1497 parser/analyze.c:1552 parser/analyze.c:1750 -#: parser/analyze.c:2531 +#: optimizer/plan/planner.c:1480 parser/analyze.c:1549 parser/analyze.c:1747 +#: parser/analyze.c:2528 #, c-format msgid "%s is not allowed with UNION/INTERSECT/EXCEPT" msgstr "%s неÑовмеÑтимо Ñ UNION/INTERSECT/EXCEPT" -#: optimizer/plan/planner.c:3826 +#: optimizer/plan/planner.c:3809 #, c-format msgid "could not implement GROUP BY" msgstr "не удалоÑÑŒ реализовать GROUP BY" -#: optimizer/plan/planner.c:3827 optimizer/plan/planner.c:4220 -#: optimizer/prep/prepunion.c:929 +#: optimizer/plan/planner.c:3810 optimizer/plan/planner.c:4203 +#: optimizer/prep/prepunion.c:939 #, c-format msgid "" "Some of the datatypes only support hashing, while others only support " @@ -13176,27 +12959,27 @@ msgstr "" "Одни типы данных поддерживают только хеширование, а другие - только " "Ñортировку." -#: optimizer/plan/planner.c:4219 +#: optimizer/plan/planner.c:4202 #, c-format msgid "could not implement DISTINCT" msgstr "не удалоÑÑŒ реализовать DISTINCT" -#: optimizer/plan/planner.c:4849 +#: optimizer/plan/planner.c:4832 #, c-format msgid "could not implement window PARTITION BY" msgstr "не удалоÑÑŒ реализовать PARTITION BY Ð´Ð»Ñ Ð¾ÐºÐ½Ð°" -#: optimizer/plan/planner.c:4850 +#: optimizer/plan/planner.c:4833 #, c-format msgid "Window partitioning columns must be of sortable datatypes." msgstr "Столбцы, разбивающие окна, должны иметь Ñортируемые типы данных." -#: optimizer/plan/planner.c:4854 +#: optimizer/plan/planner.c:4837 #, c-format msgid "could not implement window ORDER BY" msgstr "не удалоÑÑŒ реализовать ORDER BY Ð´Ð»Ñ Ð¾ÐºÐ½Ð°" -#: optimizer/plan/planner.c:4855 +#: optimizer/plan/planner.c:4838 #, c-format msgid "Window ordering columns must be of sortable datatypes." msgstr "Столбцы, Ñортирующие окна, должны иметь Ñортируемые типы данных." @@ -13206,52 +12989,52 @@ msgstr "Столбцы, Ñортирующие окна, должны иметь msgid "too many range table entries" msgstr "Ñлишком много Ñлементов RTE" -#: optimizer/prep/prepunion.c:484 +#: optimizer/prep/prepunion.c:494 #, c-format msgid "could not implement recursive UNION" msgstr "не удалоÑÑŒ реализовать рекурÑивный UNION" -#: optimizer/prep/prepunion.c:485 +#: optimizer/prep/prepunion.c:495 #, c-format msgid "All column datatypes must be hashable." msgstr "Ð’Ñе Ñтолбцы должны иметь хешируемые типы данных." #. translator: %s is UNION, INTERSECT, or EXCEPT -#: optimizer/prep/prepunion.c:928 +#: optimizer/prep/prepunion.c:938 #, c-format msgid "could not implement %s" msgstr "не удалоÑÑŒ реализовать %s" -#: optimizer/util/clauses.c:4624 +#: optimizer/util/clauses.c:4634 #, c-format msgid "SQL function \"%s\" during inlining" msgstr "Ð²Ð½ÐµÐ´Ñ€Ñ‘Ð½Ð½Ð°Ñ Ð² код SQL-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\"" -#: optimizer/util/plancat.c:113 +#: optimizer/util/plancat.c:114 #, c-format msgid "cannot access temporary or unlogged relations during recovery" msgstr "" "обращатьÑÑ Ðº временным или нежурналируемым отношениÑм в процеÑÑе " "воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½ÐµÐ»ÑŒÐ·Ñ" -#: optimizer/util/plancat.c:598 +#: optimizer/util/plancat.c:611 #, c-format msgid "whole row unique index inference specifications are not supported" msgstr "" "ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñо ÑÑылкой на вÑÑŽ Ñтроку Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° уникального индекÑа не " "поддерживаютÑÑ" -#: optimizer/util/plancat.c:615 +#: optimizer/util/plancat.c:628 #, c-format msgid "constraint in ON CONFLICT clause has no associated index" msgstr "ограничению в ON CONFLICT не ÑоответÑтвует индекÑ" -#: optimizer/util/plancat.c:666 +#: optimizer/util/plancat.c:679 #, c-format msgid "ON CONFLICT DO UPDATE not supported with exclusion constraints" msgstr "ON CONFLICT DO UPDATE не поддерживаетÑÑ Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñми-иÑключениÑми" -#: optimizer/util/plancat.c:771 +#: optimizer/util/plancat.c:784 #, c-format msgid "" "there is no unique or exclusion constraint matching the ON CONFLICT " @@ -13260,7 +13043,7 @@ msgstr "" "нет уникального Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ограничениÑ-иÑключениÑ, ÑоответÑтвующего " "указанию ON CONFLICT" -#: parser/analyze.c:663 parser/analyze.c:1324 +#: parser/analyze.c:663 parser/analyze.c:1321 #, c-format msgid "VALUES lists must all be the same length" msgstr "ÑпиÑки VALUES должны иметь одинаковую длину" @@ -13284,34 +13067,34 @@ msgstr "" "ИÑточником данных ÑвлÑетÑÑ Ñтрока, Ð²ÐºÐ»ÑŽÑ‡Ð°ÑŽÑ‰Ð°Ñ Ñтолько же Ñтолбцов, Ñколько " "требуетÑÑ Ð´Ð»Ñ INSERT. Ð’Ñ‹ намеренно иÑпользовали Ñкобки?" -#: parser/analyze.c:1145 parser/analyze.c:1525 +#: parser/analyze.c:1142 parser/analyze.c:1522 #, c-format msgid "SELECT ... INTO is not allowed here" msgstr "SELECT ... INTO здеÑÑŒ не допуÑкаетÑÑ" -#: parser/analyze.c:1338 +#: parser/analyze.c:1335 #, c-format msgid "DEFAULT can only appear in a VALUES list within INSERT" msgstr "DEFAULT может приÑутÑтвовать в ÑпиÑке VALUES только в контекÑте INSERT" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:1457 parser/analyze.c:2701 +#: parser/analyze.c:1454 parser/analyze.c:2698 #, c-format msgid "%s cannot be applied to VALUES" msgstr "%s Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть к VALUES" -#: parser/analyze.c:1678 +#: parser/analyze.c:1675 #, c-format msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" msgstr "неверное предложение UNION/INTERSECT/EXCEPT ORDER BY" -#: parser/analyze.c:1679 +#: parser/analyze.c:1676 #, c-format msgid "Only result column names can be used, not expressions or functions." msgstr "" "ДопуÑтимо иÑпользование только имён Ñтолбцов, но не выражений или функций." -#: parser/analyze.c:1680 +#: parser/analyze.c:1677 #, c-format msgid "" "Add the expression/function to every SELECT, or move the UNION into a FROM " @@ -13320,12 +13103,12 @@ msgstr "" "Добавьте выражение/функцию в каждый SELECT или перенеÑите UNION в " "предложение FROM." -#: parser/analyze.c:1740 +#: parser/analyze.c:1737 #, c-format msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT" msgstr "INTO можно добавить только в первый SELECT в UNION/INTERSECT/EXCEPT" -#: parser/analyze.c:1804 +#: parser/analyze.c:1801 #, c-format msgid "" "UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of " @@ -13334,143 +13117,143 @@ msgstr "" "оператор, ÑоÑтавлÑющий UNION/INTERSECT/EXCEPT, не может ÑÑылатьÑÑ Ð½Ð° другие " "Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ð½Ð° том же уровне запроÑа" -#: parser/analyze.c:1893 +#: parser/analyze.c:1890 #, c-format msgid "each %s query must have the same number of columns" msgstr "вÑе запроÑÑ‹ в %s должны возвращать одинаковое чиÑло Ñтолбцов" -#: parser/analyze.c:2286 +#: parser/analyze.c:2283 #, c-format msgid "RETURNING must have at least one column" msgstr "в RETURNING должен быть минимум один Ñтолбец" -#: parser/analyze.c:2323 +#: parser/analyze.c:2320 #, c-format msgid "cannot specify both SCROLL and NO SCROLL" msgstr "противоречивые ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ SCROLL и NO SCROLL" -#: parser/analyze.c:2341 +#: parser/analyze.c:2338 #, c-format msgid "DECLARE CURSOR must not contain data-modifying statements in WITH" msgstr "DECLARE CURSOR не может Ñодержать операторы, изменÑющие данные, в WITH" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2349 +#: parser/analyze.c:2346 #, c-format msgid "DECLARE CURSOR WITH HOLD ... %s is not supported" msgstr "DECLARE CURSOR WITH HOLD ... %s не поддерживаетÑÑ" -#: parser/analyze.c:2352 +#: parser/analyze.c:2349 #, c-format msgid "Holdable cursors must be READ ONLY." msgstr "СохранÑемые курÑоры должны быть READ ONLY." #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2360 +#: parser/analyze.c:2357 #, c-format msgid "DECLARE SCROLL CURSOR ... %s is not supported" msgstr "DECLARE SCROLL CURSOR ... %s не поддерживаетÑÑ" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2371 +#: parser/analyze.c:2368 #, c-format msgid "DECLARE INSENSITIVE CURSOR ... %s is not supported" msgstr "DECLARE INSENSITIVE CURSOR ... %s не поддерживаетÑÑ" -#: parser/analyze.c:2374 +#: parser/analyze.c:2371 #, c-format msgid "Insensitive cursors must be READ ONLY." msgstr "ÐезавиÑимые курÑоры должны быть READ ONLY." -#: parser/analyze.c:2440 +#: parser/analyze.c:2437 #, c-format msgid "materialized views must not use data-modifying statements in WITH" msgstr "" "в материализованных предÑтавлениÑÑ… не должны иÑпользоватьÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ñ‹, " "изменÑющие данные в WITH" -#: parser/analyze.c:2450 +#: parser/analyze.c:2447 #, c-format msgid "materialized views must not use temporary tables or views" msgstr "" "в материализованных предÑтавлениÑÑ… не должны иÑпользоватьÑÑ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ðµ " "таблицы и предÑтавлениÑ" -#: parser/analyze.c:2460 +#: parser/analyze.c:2457 #, c-format msgid "materialized views may not be defined using bound parameters" msgstr "" "определÑть материализованные предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñо ÑвÑзанными параметрами нельзÑ" -#: parser/analyze.c:2472 +#: parser/analyze.c:2469 #, c-format msgid "materialized views cannot be UNLOGGED" msgstr "" "материализованные предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ могут быть нежурналируемыми (UNLOGGED)" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2538 +#: parser/analyze.c:2535 #, c-format msgid "%s is not allowed with DISTINCT clause" msgstr "%s неÑовмеÑтимо Ñ Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸ÐµÐ¼ DISTINCT" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2545 +#: parser/analyze.c:2542 #, c-format msgid "%s is not allowed with GROUP BY clause" msgstr "%s неÑовмеÑтимо Ñ Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸ÐµÐ¼ GROUP BY" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2552 +#: parser/analyze.c:2549 #, c-format msgid "%s is not allowed with HAVING clause" msgstr "%s неÑовмеÑтимо Ñ Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸ÐµÐ¼ HAVING" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2559 +#: parser/analyze.c:2556 #, c-format msgid "%s is not allowed with aggregate functions" msgstr "%s неÑовмеÑтимо Ñ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ñ‹Ð¼Ð¸ функциÑми" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2566 +#: parser/analyze.c:2563 #, c-format msgid "%s is not allowed with window functions" msgstr "%s неÑовмеÑтимо Ñ Ð¾ÐºÐ¾Ð½Ð½Ñ‹Ð¼Ð¸ функциÑми" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2573 +#: parser/analyze.c:2570 #, c-format msgid "%s is not allowed with set-returning functions in the target list" msgstr "" "%s не допуÑкаетÑÑ Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñми, возвращающие множеÑтва, в ÑпиÑке результатов" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2652 +#: parser/analyze.c:2649 #, c-format msgid "%s must specify unqualified relation names" msgstr "Ð´Ð»Ñ %s нужно указывать неполные имена отношений" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2683 +#: parser/analyze.c:2680 #, c-format msgid "%s cannot be applied to a join" msgstr "%s Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ к Ñоединению" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2692 +#: parser/analyze.c:2689 #, c-format msgid "%s cannot be applied to a function" msgstr "%s Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ к функции" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2710 +#: parser/analyze.c:2707 #, c-format msgid "%s cannot be applied to a WITH query" msgstr "%s Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ к запроÑу WITH" #. translator: %s is a SQL row locking clause such as FOR UPDATE -#: parser/analyze.c:2727 +#: parser/analyze.c:2724 #, c-format msgid "relation \"%s\" in %s clause not found in FROM clause" msgstr "отношение \"%s\" в определении %s отÑутÑтвует в предложении FROM" @@ -13962,7 +13745,7 @@ msgstr "" #: parser/parse_coerce.c:971 parser/parse_coerce.c:1001 #: parser/parse_coerce.c:1019 parser/parse_coerce.c:1034 -#: parser/parse_expr.c:2053 parser/parse_expr.c:2577 parser/parse_target.c:874 +#: parser/parse_expr.c:2053 parser/parse_expr.c:2577 parser/parse_target.c:885 #, c-format msgid "cannot cast type %s to %s" msgstr "привеÑти тип %s к %s нельзÑ" @@ -14047,8 +13830,7 @@ msgstr "" #: parser/parse_coerce.c:1735 parser/parse_coerce.c:1956 #, c-format msgid "argument declared \"anyrange\" is not a range type but type %s" -msgstr "" -"аргумент, объÑвленный как \"anyrange\", оказалÑÑ Ð½Ðµ диапазоном, а типом %s" +msgstr "аргумент, объÑвленный как \"anyrange\", имеет не диапазонный тип, а %s" #: parser/parse_coerce.c:1751 #, c-format @@ -14158,13 +13940,13 @@ msgid "" "recursive query \"%s\" column %d has type %s in non-recursive term but type " "%s overall" msgstr "" -"в рекурÑивном запроÑе \"%s\" Ñтолбец %d имеет тип %s в не рекурÑивной чаÑти, " +"в рекурÑивном запроÑе \"%s\" Ñтолбец %d имеет тип %s в нерекурÑивной чаÑти, " "но в результате тип %s" #: parser/parse_cte.c:319 #, c-format msgid "Cast the output of the non-recursive term to the correct type." -msgstr "Приведите результат не рекурÑивной чаÑти к правильному типу." +msgstr "Приведите результат нерекурÑивной чаÑти к правильному типу." #: parser/parse_cte.c:324 #, c-format @@ -14179,7 +13961,7 @@ msgstr "" #, c-format msgid "Use the COLLATE clause to set the collation of the non-recursive term." msgstr "" -"Измените правило Ñортировки в не рекурÑивной чаÑти, добавив предложение " +"Измените правило Ñортировки в нерекурÑивной чаÑти, добавив предложение " "COLLATE." #: parser/parse_cte.c:419 @@ -14204,7 +13986,7 @@ msgid "" "recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] " "recursive-term" msgstr "" -"рекурÑивный Ð·Ð°Ð¿Ñ€Ð¾Ñ \"%s\" должен иметь форму {не рекурÑÐ¸Ð²Ð½Ð°Ñ Ñ‡Ð°Ñть} UNION " +"рекурÑивный Ð·Ð°Ð¿Ñ€Ð¾Ñ \"%s\" должен иметь форму {нерекурÑÐ¸Ð²Ð½Ð°Ñ Ñ‡Ð°Ñть} UNION " "[ALL] {рекурÑÐ¸Ð²Ð½Ð°Ñ Ñ‡Ð°Ñть}" #: parser/parse_cte.c:703 @@ -14232,8 +14014,8 @@ msgstr "FOR UPDATE/SHARE в рекурÑивном запроÑе не подд msgid "recursive reference to query \"%s\" must not appear more than once" msgstr "рекурÑÐ¸Ð²Ð½Ð°Ñ ÑÑылка на Ð·Ð°Ð¿Ñ€Ð¾Ñ \"%s\" указана неоднократно" -#: parser/parse_expr.c:390 parser/parse_relation.c:3083 -#: parser/parse_relation.c:3103 +#: parser/parse_expr.c:390 parser/parse_relation.c:3176 +#: parser/parse_relation.c:3196 #, c-format msgid "column %s.%s does not exist" msgstr "Ñтолбец %s.%s не ÑущеÑтвует" @@ -14248,19 +14030,20 @@ msgstr "Ñтолбец \"%s\" не найден в типе данных %s" msgid "could not identify column \"%s\" in record data type" msgstr "не удалоÑÑŒ идентифицировать Ñтолбец \"%s\" в типе запиÑи" +# skip-rule: space-before-period #: parser/parse_expr.c:414 #, c-format msgid "column notation .%s applied to type %s, which is not a composite type" msgstr "" "запиÑÑŒ имени Ñтолбца .%s применена к типу %s, который не ÑвлÑетÑÑ ÑоÑтавным" -#: parser/parse_expr.c:444 parser/parse_target.c:660 +#: parser/parse_expr.c:444 parser/parse_target.c:671 #, c-format msgid "row expansion via \"*\" is not supported here" msgstr "раÑширение Ñтроки через \"*\" здеÑÑŒ не поддерживаетÑÑ" -#: parser/parse_expr.c:770 parser/parse_relation.c:667 -#: parser/parse_relation.c:767 parser/parse_target.c:1109 +#: parser/parse_expr.c:770 parser/parse_relation.c:668 +#: parser/parse_relation.c:768 parser/parse_target.c:1120 #, c-format msgid "column reference \"%s\" is ambiguous" msgstr "Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡Ð½Ð°Ñ ÑÑылка на Ñтолбец \"%s\"" @@ -14276,7 +14059,7 @@ msgstr "параметр $%d не ÑущеÑтвует" msgid "NULLIF requires = operator to yield boolean" msgstr "Ð´Ð»Ñ NULLIF требуетÑÑ, чтобы оператор = возвращал логичеÑкое значение" -#: parser/parse_expr.c:1501 gram.y:9878 +#: parser/parse_expr.c:1501 gram.y:9896 #, c-format msgid "number of columns does not match number of values" msgstr "чиÑло Ñтолбцов не равно чиÑлу значений" @@ -14616,8 +14399,8 @@ msgid "array assignment requires type %s but expression is of type %s" msgstr "" "Ð´Ð»Ñ Ð¿Ñ€Ð¸ÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¼Ð°ÑÑива требуетÑÑ Ñ‚Ð¸Ð¿ %s, однако выражение имеет тип %s" -#: parser/parse_oper.c:125 parser/parse_oper.c:722 utils/adt/regproc.c:583 -#: utils/adt/regproc.c:603 utils/adt/regproc.c:787 +#: parser/parse_oper.c:125 parser/parse_oper.c:722 utils/adt/regproc.c:584 +#: utils/adt/regproc.c:604 utils/adt/regproc.c:788 #, c-format msgid "operator does not exist: %s" msgstr "оператор не ÑущеÑтвует: %s" @@ -14627,9 +14410,9 @@ msgstr "оператор не ÑущеÑтвует: %s" msgid "Use an explicit ordering operator or modify the query." msgstr "ИÑпользуйте Ñвный оператор Ñортировки или измените запроÑ." -#: parser/parse_oper.c:226 utils/adt/array_userfuncs.c:782 -#: utils/adt/array_userfuncs.c:920 utils/adt/arrayfuncs.c:3639 -#: utils/adt/arrayfuncs.c:4077 utils/adt/arrayfuncs.c:6051 +#: parser/parse_oper.c:226 utils/adt/array_userfuncs.c:794 +#: utils/adt/array_userfuncs.c:933 utils/adt/arrayfuncs.c:3639 +#: utils/adt/arrayfuncs.c:4077 utils/adt/arrayfuncs.c:6039 #: utils/adt/rowtypes.c:1167 #, c-format msgid "could not identify an equality operator for type %s" @@ -14692,27 +14475,27 @@ msgstr "" msgid "inconsistent types deduced for parameter $%d" msgstr "Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° $%d выведены неÑоглаÑованные типы" -#: parser/parse_relation.c:174 +#: parser/parse_relation.c:175 #, c-format msgid "table reference \"%s\" is ambiguous" msgstr "ÑÑылка на таблицу \"%s\" неоднозначна" -#: parser/parse_relation.c:218 +#: parser/parse_relation.c:219 #, c-format msgid "table reference %u is ambiguous" msgstr "ÑÑылка на таблицу %u неоднозначна" -#: parser/parse_relation.c:397 +#: parser/parse_relation.c:398 #, c-format msgid "table name \"%s\" specified more than once" msgstr "Ð¸Ð¼Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\" указано больше одного раза" -#: parser/parse_relation.c:424 parser/parse_relation.c:3023 +#: parser/parse_relation.c:425 parser/parse_relation.c:3116 #, c-format msgid "invalid reference to FROM-clause entry for table \"%s\"" msgstr "в Ñлементе Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ FROM Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑÑылка на таблицу \"%s\"" -#: parser/parse_relation.c:427 parser/parse_relation.c:3028 +#: parser/parse_relation.c:428 parser/parse_relation.c:3121 #, c-format msgid "" "There is an entry for table \"%s\", but it cannot be referenced from this " @@ -14721,23 +14504,23 @@ msgstr "" "Таблица \"%s\" приÑутÑтвует в запроÑе, но ÑоÑлатьÑÑ Ð½Ð° неё из Ñтой чаÑти " "запроÑа нельзÑ." -#: parser/parse_relation.c:429 +#: parser/parse_relation.c:430 #, c-format msgid "The combining JOIN type must be INNER or LEFT for a LATERAL reference." msgstr "Ð”Ð»Ñ ÑÑылки LATERAL тип JOIN должен быть INNER или LEFT." -#: parser/parse_relation.c:705 +#: parser/parse_relation.c:706 #, c-format msgid "system column \"%s\" reference in check constraint is invalid" msgstr "в ограничении-проверке указан недопуÑтимый ÑиÑтемный Ñтолбец \"%s\"" -#: parser/parse_relation.c:1065 parser/parse_relation.c:1345 -#: parser/parse_relation.c:1847 +#: parser/parse_relation.c:1066 parser/parse_relation.c:1346 +#: parser/parse_relation.c:1848 #, c-format msgid "table \"%s\" has %d columns available but %d columns specified" msgstr "в таблице \"%s\" ÑодержитÑÑ Ñтолбцов: %d, но указано: %d" -#: parser/parse_relation.c:1152 +#: parser/parse_relation.c:1153 #, c-format msgid "" "There is a WITH item named \"%s\", but it cannot be referenced from this " @@ -14746,7 +14529,7 @@ msgstr "" "Ð’ WITH еÑть Ñлемент \"%s\", но на него Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð¸Ð· Ñтой чаÑти " "запроÑа." -#: parser/parse_relation.c:1154 +#: parser/parse_relation.c:1155 #, c-format msgid "" "Use WITH RECURSIVE, or re-order the WITH items to remove forward references." @@ -14754,7 +14537,7 @@ msgstr "" "ИÑпользуйте WITH RECURSIVE или иÑключите ÑÑылки вперёд, переупорÑдочив " "Ñлементы WITH." -#: parser/parse_relation.c:1465 +#: parser/parse_relation.c:1466 #, c-format msgid "" "a column definition list is only allowed for functions returning \"record\"" @@ -14762,54 +14545,54 @@ msgstr "" "ÑпиÑок Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸ÐµÐ¼ Ñтолбцов может быть только у функций, возвращающих " "запиÑÑŒ" -#: parser/parse_relation.c:1474 +#: parser/parse_relation.c:1475 #, c-format msgid "a column definition list is required for functions returning \"record\"" msgstr "" "у функций, возвращающих запиÑÑŒ, должен быть ÑпиÑок Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸ÐµÐ¼ Ñтолбцов" -#: parser/parse_relation.c:1553 +#: parser/parse_relation.c:1554 #, c-format msgid "function \"%s\" in FROM has unsupported return type %s" msgstr "" "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\", иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð°Ñ Ð²Ð¾ FROM, возвращает неподдерживаемый тип %s" -#: parser/parse_relation.c:1675 +#: parser/parse_relation.c:1676 #, c-format msgid "VALUES lists \"%s\" have %d columns available but %d columns specified" msgstr "в ÑпиÑках VALUES \"%s\" ÑодержитÑÑ Ñтолбцов: %d, но указано: %d" -#: parser/parse_relation.c:1730 +#: parser/parse_relation.c:1731 #, c-format msgid "joins can have at most %d columns" msgstr "чиÑло Ñтолбцов в ÑоединениÑÑ… ограничено %d" -#: parser/parse_relation.c:1820 +#: parser/parse_relation.c:1821 #, c-format msgid "WITH query \"%s\" does not have a RETURNING clause" msgstr "в запроÑе \"%s\" в WITH нет Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ RETURNING" -#: parser/parse_relation.c:2652 parser/parse_relation.c:2807 +#: parser/parse_relation.c:2738 parser/parse_relation.c:2900 #, c-format msgid "column %d of relation \"%s\" does not exist" msgstr "Ñтолбец %d Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" не ÑущеÑтвует" -#: parser/parse_relation.c:3026 +#: parser/parse_relation.c:3119 #, c-format msgid "Perhaps you meant to reference the table alias \"%s\"." msgstr "Возможно, предполагалаÑÑŒ ÑÑылка на пÑевдоним таблицы \"%s\"." -#: parser/parse_relation.c:3034 +#: parser/parse_relation.c:3127 #, c-format msgid "missing FROM-clause entry for table \"%s\"" msgstr "таблица \"%s\" отÑутÑтвует в предложении FROM" -#: parser/parse_relation.c:3086 +#: parser/parse_relation.c:3179 #, c-format msgid "Perhaps you meant to reference the column \"%s.%s\"." msgstr "Возможно, предполагалаÑÑŒ ÑÑылка на Ñтолбец \"%s.%s\"." -#: parser/parse_relation.c:3088 +#: parser/parse_relation.c:3181 #, c-format msgid "" "There is a column named \"%s\" in table \"%s\", but it cannot be referenced " @@ -14818,34 +14601,34 @@ msgstr "" "Столбец \"%s\" еÑть в таблице \"%s\", но на него Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð¸Ð· Ñтой " "чаÑти запроÑа." -#: parser/parse_relation.c:3105 +#: parser/parse_relation.c:3198 #, c-format msgid "" "Perhaps you meant to reference the column \"%s.%s\" or the column \"%s.%s\"." msgstr "" "Возможно, предполагалаÑÑŒ ÑÑылка на Ñтолбец \"%s.%s\" или Ñтолбец \"%s.%s\"." -#: parser/parse_target.c:421 parser/parse_target.c:713 +#: parser/parse_target.c:432 parser/parse_target.c:724 #, c-format msgid "cannot assign to system column \"%s\"" msgstr "приÑвоить значение ÑиÑтемному Ñтолбцу \"%s\" нельзÑ" -#: parser/parse_target.c:449 +#: parser/parse_target.c:460 #, c-format msgid "cannot set an array element to DEFAULT" msgstr "Ñлементу маÑÑива Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ñвоить значение по умолчанию" -#: parser/parse_target.c:454 +#: parser/parse_target.c:465 #, c-format msgid "cannot set a subfield to DEFAULT" msgstr "вложенному полю Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ñвоить значение по умолчанию" -#: parser/parse_target.c:523 +#: parser/parse_target.c:534 #, c-format msgid "column \"%s\" is of type %s but expression is of type %s" msgstr "Ñтолбец \"%s\" имеет тип %s, а выражение - %s" -#: parser/parse_target.c:697 +#: parser/parse_target.c:708 #, c-format msgid "" "cannot assign to field \"%s\" of column \"%s\" because its type %s is not a " @@ -14854,7 +14637,7 @@ msgstr "" "приÑвоить значение полю \"%s\" Ñтолбца \"%s\" нельзÑ, так как тип %s не " "ÑвлÑетÑÑ ÑоÑтавным" -#: parser/parse_target.c:706 +#: parser/parse_target.c:717 #, c-format msgid "" "cannot assign to field \"%s\" of column \"%s\" because there is no such " @@ -14863,7 +14646,7 @@ msgstr "" "приÑвоить значение полю \"%s\" Ñтолбца \"%s\" нельзÑ, так как в типе данных " "%s нет такого Ñтолбца" -#: parser/parse_target.c:773 +#: parser/parse_target.c:784 #, c-format msgid "" "array assignment to \"%s\" requires type %s but expression is of type %s" @@ -14871,12 +14654,12 @@ msgstr "" "Ð´Ð»Ñ Ð¿Ñ€Ð¸ÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¼Ð°ÑÑива полю \"%s\" требуетÑÑ Ñ‚Ð¸Ð¿ %s, однако выражение " "имеет тип %s" -#: parser/parse_target.c:783 +#: parser/parse_target.c:794 #, c-format msgid "subfield \"%s\" is of type %s but expression is of type %s" msgstr "вложенное поле \"%s\" имеет тип %s, а выражение - %s" -#: parser/parse_target.c:1199 +#: parser/parse_target.c:1210 #, c-format msgid "SELECT * with no tables specified is not valid" msgstr "SELECT * должен ÑÑылатьÑÑ Ð½Ð° таблицы" @@ -14916,133 +14699,133 @@ msgstr "модификатором типа должна быть проÑÑ‚Ð°Ñ msgid "invalid type name \"%s\"" msgstr "неверное Ð¸Ð¼Ñ Ñ‚Ð¸Ð¿Ð° \"%s\"" -#: parser/parse_utilcmd.c:399 +#: parser/parse_utilcmd.c:385 #, c-format msgid "array of serial is not implemented" msgstr "маÑÑивы Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ serial не реализованы" -#: parser/parse_utilcmd.c:447 +#: parser/parse_utilcmd.c:433 #, c-format msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\"" msgstr "%s ÑоздаÑÑ‚ поÑледовательноÑть \"%s\" Ð´Ð»Ñ Ñтолбца serial \"%s.%s\"" -#: parser/parse_utilcmd.c:541 parser/parse_utilcmd.c:553 +#: parser/parse_utilcmd.c:527 parser/parse_utilcmd.c:539 #, c-format msgid "" "conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\"" msgstr "конфликт NULL/NOT NULL в объÑвлении Ñтолбца \"%s\" таблицы \"%s\"" -#: parser/parse_utilcmd.c:565 +#: parser/parse_utilcmd.c:551 #, c-format msgid "multiple default values specified for column \"%s\" of table \"%s\"" msgstr "" "Ð´Ð»Ñ Ñтолбца \"%s\" таблицы \"%s\" указано неÑколько значений по умолчанию" -#: parser/parse_utilcmd.c:582 parser/parse_utilcmd.c:673 +#: parser/parse_utilcmd.c:568 parser/parse_utilcmd.c:659 #, c-format msgid "primary key constraints are not supported on foreign tables" msgstr "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€Ð²Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ ключа Ð´Ð»Ñ Ñторонних таблиц не поддерживаютÑÑ" -#: parser/parse_utilcmd.c:591 parser/parse_utilcmd.c:683 +#: parser/parse_utilcmd.c:577 parser/parse_utilcmd.c:669 #, c-format msgid "unique constraints are not supported on foreign tables" msgstr "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ ÑƒÐ½Ð¸ÐºÐ°Ð»ÑŒÐ½Ð¾Ñти Ð´Ð»Ñ Ñторонних таблиц не поддерживаютÑÑ" -#: parser/parse_utilcmd.c:608 parser/parse_utilcmd.c:707 +#: parser/parse_utilcmd.c:594 parser/parse_utilcmd.c:693 #, c-format msgid "foreign key constraints are not supported on foreign tables" msgstr "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ ключа Ð´Ð»Ñ Ñторонних таблиц не поддерживаютÑÑ" -#: parser/parse_utilcmd.c:693 +#: parser/parse_utilcmd.c:679 #, c-format msgid "exclusion constraints are not supported on foreign tables" msgstr "ограничениÑ-иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñторонних таблиц не поддерживаютÑÑ" -#: parser/parse_utilcmd.c:757 +#: parser/parse_utilcmd.c:743 #, c-format msgid "LIKE is not supported for creating foreign tables" msgstr "LIKE при Ñоздании Ñторонних таблиц не поддерживаетÑÑ" -#: parser/parse_utilcmd.c:1290 parser/parse_utilcmd.c:1366 +#: parser/parse_utilcmd.c:1276 parser/parse_utilcmd.c:1352 #, c-format msgid "Index \"%s\" contains a whole-row table reference." msgstr "Ð˜Ð½Ð´ÐµÐºÑ \"%s\" ÑÑылаетÑÑ Ð½Ð° тип вÑей Ñтроки таблицы." -#: parser/parse_utilcmd.c:1636 +#: parser/parse_utilcmd.c:1622 #, c-format msgid "cannot use an existing index in CREATE TABLE" msgstr "в CREATE TABLE Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать ÑущеÑтвующий индекÑ" -#: parser/parse_utilcmd.c:1656 +#: parser/parse_utilcmd.c:1642 #, c-format msgid "index \"%s\" is already associated with a constraint" msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" уже ÑвÑзан Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸ÐµÐ¼" -#: parser/parse_utilcmd.c:1664 +#: parser/parse_utilcmd.c:1650 #, c-format msgid "index \"%s\" does not belong to table \"%s\"" msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" не принадлежит таблице \"%s\"" -#: parser/parse_utilcmd.c:1671 +#: parser/parse_utilcmd.c:1657 #, c-format msgid "index \"%s\" is not valid" msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" - нерабочий" -#: parser/parse_utilcmd.c:1677 +#: parser/parse_utilcmd.c:1663 #, c-format msgid "\"%s\" is not a unique index" msgstr "\"%s\" не ÑвлÑетÑÑ ÑƒÐ½Ð¸ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¼ индекÑом" -#: parser/parse_utilcmd.c:1678 parser/parse_utilcmd.c:1685 -#: parser/parse_utilcmd.c:1692 parser/parse_utilcmd.c:1762 +#: parser/parse_utilcmd.c:1664 parser/parse_utilcmd.c:1671 +#: parser/parse_utilcmd.c:1678 parser/parse_utilcmd.c:1748 #, c-format msgid "Cannot create a primary key or unique constraint using such an index." msgstr "" "Создать первичный ключ или ограничение уникальноÑти Ð´Ð»Ñ Ñ‚Ð°ÐºÐ¾Ð³Ð¾ индекÑа " "нельзÑ." -#: parser/parse_utilcmd.c:1684 +#: parser/parse_utilcmd.c:1670 #, c-format msgid "index \"%s\" contains expressions" msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" Ñодержит выражениÑ" -#: parser/parse_utilcmd.c:1691 +#: parser/parse_utilcmd.c:1677 #, c-format msgid "\"%s\" is a partial index" msgstr "\"%s\" - чаÑтичный индекÑ" -#: parser/parse_utilcmd.c:1703 +#: parser/parse_utilcmd.c:1689 #, c-format msgid "\"%s\" is a deferrable index" msgstr "\"%s\" - откладываемый индекÑ" -#: parser/parse_utilcmd.c:1704 +#: parser/parse_utilcmd.c:1690 #, c-format msgid "Cannot create a non-deferrable constraint using a deferrable index." msgstr "" "Создать не откладываемое ограничение на базе откладываемого индекÑа нельзÑ." -#: parser/parse_utilcmd.c:1761 +#: parser/parse_utilcmd.c:1747 #, c-format msgid "index \"%s\" does not have default sorting behavior" msgstr "Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑа \"%s\" не определено поведение при Ñортировке по умолчанию" -#: parser/parse_utilcmd.c:1908 +#: parser/parse_utilcmd.c:1894 #, c-format msgid "column \"%s\" appears twice in primary key constraint" msgstr "Ñтолбец \"%s\" фигурирует в первичном ключе дважды" -#: parser/parse_utilcmd.c:1914 +#: parser/parse_utilcmd.c:1900 #, c-format msgid "column \"%s\" appears twice in unique constraint" msgstr "Ñтолбец \"%s\" фигурирует в ограничении уникальноÑти дважды" -#: parser/parse_utilcmd.c:2118 +#: parser/parse_utilcmd.c:2104 #, c-format msgid "index expression cannot return a set" msgstr "индекÑное выражение не может возвращать множеÑтво" -#: parser/parse_utilcmd.c:2129 +#: parser/parse_utilcmd.c:2115 #, c-format msgid "" "index expressions and predicates can refer only to the table being indexed" @@ -15050,17 +14833,17 @@ msgstr "" "индекÑные Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¸ предикаты могут ÑÑылатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на индекÑируемую " "таблицу" -#: parser/parse_utilcmd.c:2175 +#: parser/parse_utilcmd.c:2161 #, c-format msgid "rules on materialized views are not supported" msgstr "правила Ð´Ð»Ñ Ð¼Ð°Ñ‚ÐµÑ€Ð¸Ð°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… предÑтавлений не поддерживаютÑÑ" -#: parser/parse_utilcmd.c:2236 +#: parser/parse_utilcmd.c:2222 #, c-format msgid "rule WHERE condition cannot contain references to other relations" msgstr "в уÑловиÑÑ… WHERE Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð» Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð½Ð° другие отношениÑ" -#: parser/parse_utilcmd.c:2308 +#: parser/parse_utilcmd.c:2294 #, c-format msgid "" "rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE " @@ -15069,85 +14852,85 @@ msgstr "" "правила Ñ ÑƒÑловиÑми WHERE могут Ñодержать только дейÑÑ‚Ð²Ð¸Ñ SELECT, INSERT, " "UPDATE или DELETE" -#: parser/parse_utilcmd.c:2326 parser/parse_utilcmd.c:2425 +#: parser/parse_utilcmd.c:2312 parser/parse_utilcmd.c:2411 #: rewrite/rewriteHandler.c:485 rewrite/rewriteManip.c:1015 #, c-format msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" msgstr "уÑловные операторы UNION/INTERSECT/EXCEPT не реализованы" -#: parser/parse_utilcmd.c:2344 +#: parser/parse_utilcmd.c:2330 #, c-format msgid "ON SELECT rule cannot use OLD" msgstr "в правиле ON SELECT Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать OLD" -#: parser/parse_utilcmd.c:2348 +#: parser/parse_utilcmd.c:2334 #, c-format msgid "ON SELECT rule cannot use NEW" msgstr "в правиле ON SELECT Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать NEW" -#: parser/parse_utilcmd.c:2357 +#: parser/parse_utilcmd.c:2343 #, c-format msgid "ON INSERT rule cannot use OLD" msgstr "в правиле ON INSERT Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать OLD" -#: parser/parse_utilcmd.c:2363 +#: parser/parse_utilcmd.c:2349 #, c-format msgid "ON DELETE rule cannot use NEW" msgstr "в правиле ON DELETE Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать NEW" -#: parser/parse_utilcmd.c:2391 +#: parser/parse_utilcmd.c:2377 #, c-format msgid "cannot refer to OLD within WITH query" msgstr "в запроÑе WITH Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð½Ð° OLD" -#: parser/parse_utilcmd.c:2398 +#: parser/parse_utilcmd.c:2384 #, c-format msgid "cannot refer to NEW within WITH query" msgstr "в запроÑе WITH Ð½ÐµÐ»ÑŒÐ·Ñ ÑÑылатьÑÑ Ð½Ð° NEW" -#: parser/parse_utilcmd.c:2601 +#: parser/parse_utilcmd.c:2587 #, c-format msgid "transform expression must not return a set" msgstr "выражение Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ должно возвращать множеÑтво" -#: parser/parse_utilcmd.c:2715 +#: parser/parse_utilcmd.c:2701 #, c-format msgid "misplaced DEFERRABLE clause" msgstr "предложение DEFERRABLE раÑположено неправильно" -#: parser/parse_utilcmd.c:2720 parser/parse_utilcmd.c:2735 +#: parser/parse_utilcmd.c:2706 parser/parse_utilcmd.c:2721 #, c-format msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" msgstr "DEFERRABLE/NOT DEFERRABLE можно указать только один раз" -#: parser/parse_utilcmd.c:2730 +#: parser/parse_utilcmd.c:2716 #, c-format msgid "misplaced NOT DEFERRABLE clause" msgstr "предложение NOT DEFERRABLE раÑположено неправильно" -#: parser/parse_utilcmd.c:2743 parser/parse_utilcmd.c:2769 gram.y:4893 +#: parser/parse_utilcmd.c:2729 parser/parse_utilcmd.c:2755 gram.y:4911 #, c-format msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" msgstr "" "ограничение Ñ Ñ…Ð°Ñ€Ð°ÐºÑ‚ÐµÑ€Ð¸Ñтикой INITIALLY DEFERRED должно быть объÑвлено как " "DEFERRABLE" -#: parser/parse_utilcmd.c:2751 +#: parser/parse_utilcmd.c:2737 #, c-format msgid "misplaced INITIALLY DEFERRED clause" msgstr "предложение INITIALLY DEFERRED раÑположено неправильно" -#: parser/parse_utilcmd.c:2756 parser/parse_utilcmd.c:2782 +#: parser/parse_utilcmd.c:2742 parser/parse_utilcmd.c:2768 #, c-format msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" msgstr "INITIALLY IMMEDIATE/DEFERRED можно указать только один раз" -#: parser/parse_utilcmd.c:2777 +#: parser/parse_utilcmd.c:2763 #, c-format msgid "misplaced INITIALLY IMMEDIATE clause" msgstr "предложение INITIALLY IMMEDIATE раÑположено неправильно" -#: parser/parse_utilcmd.c:2968 +#: parser/parse_utilcmd.c:2954 #, c-format msgid "" "CREATE specifies a schema (%s) different from the one being created (%s)" @@ -15196,17 +14979,17 @@ msgstr "" "Возможно, вам Ñледует увеличить параметр Ñдра SEMVMX минимум до %d. " "Подробнее об Ñтом напиÑано в документации PostgreSQL." -#: port/pg_shmem.c:141 port/sysv_shmem.c:141 +#: port/pg_shmem.c:195 port/sysv_shmem.c:195 #, c-format msgid "could not create shared memory segment: %m" msgstr "не удалоÑÑŒ Ñоздать Ñегмент разделÑемой памÑти: %m" -#: port/pg_shmem.c:142 port/sysv_shmem.c:142 +#: port/pg_shmem.c:196 port/sysv_shmem.c:196 #, c-format msgid "Failed system call was shmget(key=%lu, size=%zu, 0%o)." msgstr "Ошибка в ÑиÑтемном вызове shmget(ключ=%lu, размер=%zu, 0%o)." -#: port/pg_shmem.c:146 port/sysv_shmem.c:146 +#: port/pg_shmem.c:200 port/sysv_shmem.c:200 #, c-format msgid "" "This error usually means that PostgreSQL's request for a shared memory " @@ -15220,7 +15003,7 @@ msgstr "" "ÐŸÐ¾Ð´Ñ€Ð¾Ð±Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ наÑтройке разделÑемой памÑти ÑодержитÑÑ Ð² " "документации PostgreSQL." -#: port/pg_shmem.c:153 port/sysv_shmem.c:153 +#: port/pg_shmem.c:207 port/sysv_shmem.c:207 #, c-format msgid "" "This error usually means that PostgreSQL's request for a shared memory " @@ -15235,7 +15018,7 @@ msgstr "" "ÐŸÐ¾Ð´Ñ€Ð¾Ð±Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ наÑтройке разделÑемой памÑти ÑодержитÑÑ Ð² " "документации PostgreSQL." -#: port/pg_shmem.c:159 port/sysv_shmem.c:159 +#: port/pg_shmem.c:213 port/sysv_shmem.c:213 #, c-format msgid "" "This error does *not* mean that you have run out of disk space. It occurs " @@ -15252,17 +15035,12 @@ msgstr "" "ÐŸÐ¾Ð´Ñ€Ð¾Ð±Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ наÑтройке разделÑемой памÑти ÑодержитÑÑ Ð² " "документации PostgreSQL." -#: port/pg_shmem.c:340 port/sysv_shmem.c:340 -#, c-format -msgid "huge TLB pages not supported on this platform" -msgstr "гигантÑкие Ñтраницы TLB на Ñтой платформе не поддерживаютÑÑ" - -#: port/pg_shmem.c:390 port/sysv_shmem.c:390 +#: port/pg_shmem.c:504 port/sysv_shmem.c:504 #, c-format msgid "could not map anonymous shared memory: %m" msgstr "не удалоÑÑŒ получить анонимную разделÑемую памÑть: %m" -#: port/pg_shmem.c:392 port/sysv_shmem.c:392 +#: port/pg_shmem.c:506 port/sysv_shmem.c:506 #, c-format msgid "" "This error usually means that PostgreSQL's request for a shared memory " @@ -15276,12 +15054,12 @@ msgstr "" "Б) можно Ñнизить иÑпользование разделÑемой памÑти, возможно, уменьшив " "shared_buffers или max_connections." -#: port/pg_shmem.c:439 port/sysv_shmem.c:439 port/win32_shmem.c:134 +#: port/pg_shmem.c:572 port/sysv_shmem.c:572 port/win32_shmem.c:134 #, c-format msgid "huge pages not supported on this platform" msgstr "гигантÑкие Ñтраницы на Ñтой платформе не поддерживаютÑÑ" -#: port/pg_shmem.c:553 port/sysv_shmem.c:553 +#: port/pg_shmem.c:667 port/sysv_shmem.c:667 #, c-format msgid "could not stat data directory \"%s\": %m" msgstr "не удалоÑÑŒ получить информацию о каталоге данных \"%s\": %m" @@ -15411,49 +15189,51 @@ msgstr "не удалоÑÑŒ породить рабочий процеÑÑ Ð°Ð² msgid "autovacuum: processing database \"%s\"" msgstr "автоочиÑтка: обработка базы данных \"%s\"" -#: postmaster/autovacuum.c:2050 +# skip-rule: capital-letter-first +#: postmaster/autovacuum.c:2052 #, c-format msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\"" msgstr "" "автоочиÑтка: удаление уÑтаревшей врем. таблицы \"%s\".\"%s\" в базе \"%s\"" -#: postmaster/autovacuum.c:2062 +# skip-rule: capital-letter-first +#: postmaster/autovacuum.c:2064 #, c-format msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\"" msgstr "" "автоочиÑтка: найдена уÑÑ‚Ð°Ñ€ÐµÐ²ÑˆÐ°Ñ Ð²Ñ€ÐµÐ¼. таблица \"%s\".\"%s\" в базе \"%s\"" -#: postmaster/autovacuum.c:2344 +#: postmaster/autovacuum.c:2347 #, c-format msgid "automatic vacuum of table \"%s.%s.%s\"" msgstr "автоматичеÑÐºÐ°Ñ Ð¾Ñ‡Ð¸Ñтка таблицы \"%s.%s.%s\"" -#: postmaster/autovacuum.c:2347 +#: postmaster/autovacuum.c:2350 #, c-format msgid "automatic analyze of table \"%s.%s.%s\"" msgstr "автоматичеÑкий анализ таблицы \"%s.%s.%s\"" -#: postmaster/autovacuum.c:2877 +#: postmaster/autovacuum.c:2899 #, c-format msgid "autovacuum not started because of misconfiguration" msgstr "автоочиÑтка не запущена из-за неправильной конфигурации" -#: postmaster/autovacuum.c:2878 +#: postmaster/autovacuum.c:2900 #, c-format msgid "Enable the \"track_counts\" option." msgstr "Включите параметр \"track_counts\"." -#: postmaster/bgworker.c:346 postmaster/bgworker.c:746 +#: postmaster/bgworker.c:367 postmaster/bgworker.c:762 #, c-format msgid "registering background worker \"%s\"" msgstr "региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ñ„Ð¾Ð½Ð¾Ð²Ð¾Ð³Ð¾ процеÑÑа \"%s\"" -#: postmaster/bgworker.c:375 +#: postmaster/bgworker.c:396 #, c-format msgid "unregistering background worker \"%s\"" msgstr "разрегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ñ„Ð¾Ð½Ð¾Ð²Ð¾Ð³Ð¾ процеÑÑа \"%s\"" -#: postmaster/bgworker.c:484 +#: postmaster/bgworker.c:505 #, c-format msgid "" "background worker \"%s\": must attach to shared memory in order to request a " @@ -15462,7 +15242,7 @@ msgstr "" "фоновый процеÑÑ \"%s\" должен иметь доÑтуп к общей памÑти, чтобы запроÑить " "подключение к БД" -#: postmaster/bgworker.c:493 +#: postmaster/bgworker.c:514 #, c-format msgid "" "background worker \"%s\": cannot request database access if starting at " @@ -15471,24 +15251,24 @@ msgstr "" "фоновый процеÑÑ \"%s\" не может получить доÑтуп к БД, еÑли он запущен при " "Ñтарте главного процеÑÑа" -#: postmaster/bgworker.c:507 +#: postmaster/bgworker.c:528 #, c-format msgid "background worker \"%s\": invalid restart interval" msgstr "фоновый процеÑÑ \"%s\": неправильный интервал перезапуÑка" -#: postmaster/bgworker.c:552 +#: postmaster/bgworker.c:573 #, c-format msgid "terminating background worker \"%s\" due to administrator command" msgstr "завершение фонового процеÑÑа \"%s\" по команде админиÑтратора" -#: postmaster/bgworker.c:753 +#: postmaster/bgworker.c:769 #, c-format msgid "" "background worker \"%s\": must be registered in shared_preload_libraries" msgstr "" "фоновой процеÑÑ \"%s\" должен быть зарегиÑтрирован в shared_preload_libraries" -#: postmaster/bgworker.c:765 +#: postmaster/bgworker.c:781 #, c-format msgid "" "background worker \"%s\": only dynamic background workers can request " @@ -15497,12 +15277,12 @@ msgstr "" "фоновый процеÑÑ \"%s\": только динамичеÑкие фоновые процеÑÑÑ‹ могут " "запрашивать уведомление" -#: postmaster/bgworker.c:780 +#: postmaster/bgworker.c:796 #, c-format msgid "too many background workers" msgstr "Ñлишком много фоновых процеÑÑов" -#: postmaster/bgworker.c:781 +#: postmaster/bgworker.c:797 #, c-format msgid "Up to %d background worker can be registered with the current settings." msgid_plural "" @@ -15514,7 +15294,7 @@ msgstr[1] "" msgstr[2] "" "МакÑимально возможное чиÑло фоновых процеÑÑов при текущих параметрах: %d." -#: postmaster/bgworker.c:785 +#: postmaster/bgworker.c:801 #, c-format msgid "" "Consider increasing the configuration parameter \"max_worker_processes\"." @@ -15588,7 +15368,7 @@ msgstr "Команда архивации Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹: %s" msgid "archive command was terminated by exception 0x%X" msgstr "команда архивации была прервана иÑключением 0x%X" -#: postmaster/pgarch.c:598 postmaster/postmaster.c:3490 +#: postmaster/pgarch.c:598 postmaster/postmaster.c:3514 #, c-format msgid "" "See C include file \"ntstatus.h\" for a description of the hexadecimal value." @@ -15621,132 +15401,132 @@ msgstr "файл архива журнала транзакций \"%s\"" msgid "could not open archive status directory \"%s\": %m" msgstr "не удалоÑÑŒ открыть каталог ÑоÑтоÑÐ½Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð° \"%s\": %m" -#: postmaster/pgstat.c:352 +#: postmaster/pgstat.c:358 #, c-format msgid "could not resolve \"localhost\": %s" msgstr "не удалоÑÑŒ разрешить \"localhost\": %s" -#: postmaster/pgstat.c:375 +#: postmaster/pgstat.c:381 #, c-format msgid "trying another address for the statistics collector" msgstr "проба другого адреÑа Ð´Ð»Ñ Ñборщика ÑтатиÑтики" -#: postmaster/pgstat.c:384 +#: postmaster/pgstat.c:390 #, c-format msgid "could not create socket for statistics collector: %m" msgstr "не удалоÑÑŒ Ñоздать Ñокет Ð´Ð»Ñ Ñборщика ÑтатиÑтики: %m" -#: postmaster/pgstat.c:396 +#: postmaster/pgstat.c:402 #, c-format msgid "could not bind socket for statistics collector: %m" msgstr "не удалоÑÑŒ привÑзатьÑÑ Ðº Ñокету Ð´Ð»Ñ Ñборщика ÑтатиÑтики: %m" -#: postmaster/pgstat.c:407 +#: postmaster/pgstat.c:413 #, c-format msgid "could not get address of socket for statistics collector: %m" msgstr "не удалоÑÑŒ получить Ð°Ð´Ñ€ÐµÑ Ñокета Ð´Ð»Ñ Ñборщика ÑтатиÑтики: %m" -#: postmaster/pgstat.c:423 +#: postmaster/pgstat.c:429 #, c-format msgid "could not connect socket for statistics collector: %m" msgstr "не удалоÑÑŒ подключить Ñокет Ð´Ð»Ñ Ñборщика ÑтатиÑтики: %m" -#: postmaster/pgstat.c:444 +#: postmaster/pgstat.c:450 #, c-format msgid "could not send test message on socket for statistics collector: %m" msgstr "" "не удалоÑÑŒ поÑлать теÑтовое Ñообщение в Ñокет Ð´Ð»Ñ Ñборщика ÑтатиÑтики: %m" -#: postmaster/pgstat.c:470 +#: postmaster/pgstat.c:476 #, c-format msgid "select() failed in statistics collector: %m" msgstr "Ñбой select() в Ñборщике ÑтатиÑтики: %m" -#: postmaster/pgstat.c:485 +#: postmaster/pgstat.c:491 #, c-format msgid "test message did not get through on socket for statistics collector" msgstr "теÑтовое Ñообщение не прошло через Ñокет Ð´Ð»Ñ Ñборщика ÑтатиÑтики" -#: postmaster/pgstat.c:500 +#: postmaster/pgstat.c:506 #, c-format msgid "could not receive test message on socket for statistics collector: %m" msgstr "" "теÑтовое Ñообщение через Ñокет Ð´Ð»Ñ Ñборщика ÑтатиÑтики получить не удалоÑÑŒ: " "%m" -#: postmaster/pgstat.c:510 +#: postmaster/pgstat.c:516 #, c-format msgid "incorrect test message transmission on socket for statistics collector" msgstr "теÑтовое Ñообщение через Ñокет Ð´Ð»Ñ Ñборщика ÑтатиÑтики прошло неверно" -#: postmaster/pgstat.c:533 +#: postmaster/pgstat.c:539 #, c-format msgid "could not set statistics collector socket to nonblocking mode: %m" msgstr "" "не удалоÑÑŒ переключить Ñокет Ñборщика ÑтатиÑтики в неблокирующий режим: %m" -#: postmaster/pgstat.c:543 +#: postmaster/pgstat.c:578 #, c-format msgid "disabling statistics collector for lack of working socket" msgstr "Ñборщик ÑтатиÑтики отключаетÑÑ Ð¸Ð·-за нехватки рабочего Ñокета" -#: postmaster/pgstat.c:690 +#: postmaster/pgstat.c:725 #, c-format msgid "could not fork statistics collector: %m" msgstr "не удалоÑÑŒ породить процеÑÑ Ñборщика ÑтатиÑтики: %m" -#: postmaster/pgstat.c:1258 +#: postmaster/pgstat.c:1293 #, c-format msgid "unrecognized reset target: \"%s\"" msgstr "запрошен ÑÐ±Ñ€Ð¾Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтного Ñчётчика: \"%s\"" -#: postmaster/pgstat.c:1259 +#: postmaster/pgstat.c:1294 #, c-format msgid "Target must be \"archiver\" or \"bgwriter\"." msgstr "ДопуÑтимый Ñчётчик: \"archiver\" или \"bgwriter\"." -#: postmaster/pgstat.c:3579 +#: postmaster/pgstat.c:3619 #, c-format msgid "could not read statistics message: %m" msgstr "не удалоÑÑŒ прочитать Ñообщение ÑтатиÑтики: %m" -#: postmaster/pgstat.c:3910 postmaster/pgstat.c:4067 +#: postmaster/pgstat.c:3950 postmaster/pgstat.c:4107 #, c-format msgid "could not open temporary statistics file \"%s\": %m" msgstr "не удалоÑÑŒ открыть временный файл ÑтатиÑтики \"%s\": %m" -#: postmaster/pgstat.c:3977 postmaster/pgstat.c:4112 +#: postmaster/pgstat.c:4017 postmaster/pgstat.c:4152 #, c-format msgid "could not write temporary statistics file \"%s\": %m" msgstr "не удалоÑÑŒ запиÑать во временный файл ÑтатиÑтики \"%s\": %m" -#: postmaster/pgstat.c:3986 postmaster/pgstat.c:4121 +#: postmaster/pgstat.c:4026 postmaster/pgstat.c:4161 #, c-format msgid "could not close temporary statistics file \"%s\": %m" msgstr "не удалоÑÑŒ закрыть временный файл ÑтатиÑтики \"%s\": %m" -#: postmaster/pgstat.c:3994 postmaster/pgstat.c:4129 +#: postmaster/pgstat.c:4034 postmaster/pgstat.c:4169 #, c-format msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m" msgstr "" "не удалоÑÑŒ переименовать временный файл ÑтатиÑтики из \"%s\" в \"%s\": %m" -#: postmaster/pgstat.c:4218 postmaster/pgstat.c:4403 postmaster/pgstat.c:4556 +#: postmaster/pgstat.c:4258 postmaster/pgstat.c:4464 postmaster/pgstat.c:4617 #, c-format msgid "could not open statistics file \"%s\": %m" msgstr "не удалоÑÑŒ открыть файл ÑтатиÑтики \"%s\": %m" -#: postmaster/pgstat.c:4230 postmaster/pgstat.c:4240 postmaster/pgstat.c:4250 -#: postmaster/pgstat.c:4271 postmaster/pgstat.c:4286 postmaster/pgstat.c:4340 -#: postmaster/pgstat.c:4415 postmaster/pgstat.c:4435 postmaster/pgstat.c:4453 -#: postmaster/pgstat.c:4469 postmaster/pgstat.c:4487 postmaster/pgstat.c:4503 -#: postmaster/pgstat.c:4568 postmaster/pgstat.c:4580 postmaster/pgstat.c:4592 -#: postmaster/pgstat.c:4617 postmaster/pgstat.c:4639 +#: postmaster/pgstat.c:4270 postmaster/pgstat.c:4280 postmaster/pgstat.c:4301 +#: postmaster/pgstat.c:4323 postmaster/pgstat.c:4338 postmaster/pgstat.c:4401 +#: postmaster/pgstat.c:4476 postmaster/pgstat.c:4496 postmaster/pgstat.c:4514 +#: postmaster/pgstat.c:4530 postmaster/pgstat.c:4548 postmaster/pgstat.c:4564 +#: postmaster/pgstat.c:4629 postmaster/pgstat.c:4641 postmaster/pgstat.c:4653 +#: postmaster/pgstat.c:4678 postmaster/pgstat.c:4700 #, c-format msgid "corrupted statistics file \"%s\"" msgstr "файл ÑтатиÑтики \"%s\" иÑпорчен" -#: postmaster/pgstat.c:4768 +#: postmaster/pgstat.c:4829 #, c-format msgid "" "using stale statistics instead of current ones because stats collector is " @@ -15755,44 +15535,44 @@ msgstr "" "иÑпользуетÑÑ Ð¿Ñ€Ð¾ÑÑ€Ð¾Ñ‡ÐµÐ½Ð½Ð°Ñ ÑтатиÑтика вмеÑто текущей, так как Ñборщик " "ÑтатиÑтики не отвечает" -#: postmaster/pgstat.c:5095 +#: postmaster/pgstat.c:5156 #, c-format msgid "database hash table corrupted during cleanup --- abort" msgstr "таблица хеша базы данных иÑпорчена при очиÑтке --- прерывание" -#: postmaster/postmaster.c:684 +#: postmaster/postmaster.c:702 #, c-format msgid "%s: invalid argument for option -f: \"%s\"\n" msgstr "%s: неверный аргумент Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° -f: \"%s\"\n" -#: postmaster/postmaster.c:770 +#: postmaster/postmaster.c:788 #, c-format msgid "%s: invalid argument for option -t: \"%s\"\n" msgstr "%s: неверный аргумент Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° -t: \"%s\"\n" -#: postmaster/postmaster.c:821 +#: postmaster/postmaster.c:839 #, c-format msgid "%s: invalid argument: \"%s\"\n" msgstr "%s: неверный аргумент: \"%s\"\n" -#: postmaster/postmaster.c:860 +#: postmaster/postmaster.c:878 #, c-format msgid "%s: superuser_reserved_connections must be less than max_connections\n" msgstr "" "%s: параметр superuser_reserved_connections должен быть меньше " "max_connections\n" -#: postmaster/postmaster.c:865 +#: postmaster/postmaster.c:883 #, c-format msgid "%s: max_wal_senders must be less than max_connections\n" msgstr "%s: параметр max_wal_senders должен быть меньше max_connections\n" -#: postmaster/postmaster.c:870 +#: postmaster/postmaster.c:888 #, c-format msgid "WAL archival cannot be enabled when wal_level is \"minimal\"" msgstr "Ðрхивацию WAL Ð½ÐµÐ»ÑŒÐ·Ñ Ð²ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ, еÑли уÑтановлен wal_level \"minimal\"" -#: postmaster/postmaster.c:873 +#: postmaster/postmaster.c:891 #, c-format msgid "" "WAL streaming (max_wal_senders > 0) requires wal_level \"replica\" or " @@ -15801,88 +15581,88 @@ msgstr "" "Ð”Ð»Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ¾Ð²Ð¾Ð¹ транÑлÑции WAL (max_wal_senders > 0) wal_level должен быть " "\"replica\" или \"logical\"" -#: postmaster/postmaster.c:881 +#: postmaster/postmaster.c:899 #, c-format msgid "%s: invalid datetoken tables, please fix\n" msgstr "%s: ошибка в таблицах маркеров времени, требуетÑÑ Ð¸Ñправление\n" -#: postmaster/postmaster.c:973 postmaster/postmaster.c:1071 +#: postmaster/postmaster.c:991 postmaster/postmaster.c:1089 #: utils/init/miscinit.c:1429 #, c-format msgid "invalid list syntax in parameter \"%s\"" msgstr "неверный формат ÑпиÑка в параметре \"%s\"" -#: postmaster/postmaster.c:1004 +#: postmaster/postmaster.c:1022 #, c-format msgid "could not create listen socket for \"%s\"" msgstr "не удалоÑÑŒ Ñоздать принимающий Ñокет Ð´Ð»Ñ \"%s\"" -#: postmaster/postmaster.c:1010 +#: postmaster/postmaster.c:1028 #, c-format msgid "could not create any TCP/IP sockets" msgstr "не удалоÑÑŒ Ñоздать Ñокеты TCP/IP" -#: postmaster/postmaster.c:1093 +#: postmaster/postmaster.c:1111 #, c-format msgid "could not create Unix-domain socket in directory \"%s\"" msgstr "не удалоÑÑŒ Ñоздать доменный Ñокет в каталоге \"%s\"" -#: postmaster/postmaster.c:1099 +#: postmaster/postmaster.c:1117 #, c-format msgid "could not create any Unix-domain sockets" msgstr "ни один доменный Ñокет Ñоздать не удалоÑÑŒ" -#: postmaster/postmaster.c:1111 +#: postmaster/postmaster.c:1129 #, c-format msgid "no socket created for listening" msgstr "отÑутÑтвуют принимающие Ñокеты" -#: postmaster/postmaster.c:1151 +#: postmaster/postmaster.c:1169 #, c-format msgid "could not create I/O completion port for child queue" msgstr "не удалоÑÑŒ Ñоздать порт Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð²Ð²Ð¾Ð´Ð°/вывода Ð´Ð»Ñ Ð¾Ñ‡ÐµÑ€ÐµÐ´Ð¸ потомков" -#: postmaster/postmaster.c:1180 +#: postmaster/postmaster.c:1198 #, c-format msgid "%s: could not change permissions of external PID file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ поменÑть права Ð´Ð»Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ файла PID \"%s\": %s\n" -#: postmaster/postmaster.c:1184 +#: postmaster/postmaster.c:1202 #, c-format msgid "%s: could not write external PID file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ запиÑать внешний файл PID \"%s\": %s\n" -#: postmaster/postmaster.c:1234 +#: postmaster/postmaster.c:1252 #, c-format msgid "ending log output to stderr" msgstr "завершение вывода в stderr" -#: postmaster/postmaster.c:1235 +#: postmaster/postmaster.c:1253 #, c-format msgid "Future log output will go to log destination \"%s\"." msgstr "Ð’ дальнейшем протокол будет выводитьÑÑ Ð² \"%s\"." -#: postmaster/postmaster.c:1261 utils/init/postinit.c:213 +#: postmaster/postmaster.c:1279 utils/init/postinit.c:213 #, c-format msgid "could not load pg_hba.conf" msgstr "не удалоÑÑŒ загрузить pg_hba.conf" -#: postmaster/postmaster.c:1287 +#: postmaster/postmaster.c:1305 #, c-format msgid "postmaster became multithreaded during startup" msgstr "процеÑÑ postmaster Ñтал многопоточным при запуÑке" -#: postmaster/postmaster.c:1288 +#: postmaster/postmaster.c:1306 #, c-format msgid "Set the LC_ALL environment variable to a valid locale." msgstr "УÑтановите в переменной Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ LC_ALL правильную локаль." -#: postmaster/postmaster.c:1385 +#: postmaster/postmaster.c:1403 #, c-format msgid "%s: could not locate matching postgres executable" msgstr "%s: подходÑщий иÑполнÑемый файл postgres не найден" -#: postmaster/postmaster.c:1408 utils/misc/tzparser.c:341 +#: postmaster/postmaster.c:1426 utils/misc/tzparser.c:341 #, c-format msgid "" "This may indicate an incomplete PostgreSQL installation, or that the file " @@ -15891,43 +15671,43 @@ msgstr "" "Возможно, PostgreSQL уÑтановлен не полноÑтью или файла \"%s\" нет в " "положенном меÑте." -#: postmaster/postmaster.c:1436 +#: postmaster/postmaster.c:1454 #, c-format msgid "data directory \"%s\" does not exist" msgstr "каталог данных \"%s\" не ÑущеÑтвует" -#: postmaster/postmaster.c:1441 +#: postmaster/postmaster.c:1459 #, c-format msgid "could not read permissions of directory \"%s\": %m" msgstr "не удалоÑÑŒ Ñчитать права на каталог \"%s\": %m" -#: postmaster/postmaster.c:1449 +#: postmaster/postmaster.c:1467 #, c-format msgid "specified data directory \"%s\" is not a directory" msgstr "указанный каталог данных \"%s\" не ÑущеÑтвует" -#: postmaster/postmaster.c:1465 +#: postmaster/postmaster.c:1483 #, c-format msgid "data directory \"%s\" has wrong ownership" msgstr "владелец каталога данных \"%s\" определён неверно" -#: postmaster/postmaster.c:1467 +#: postmaster/postmaster.c:1485 #, c-format msgid "The server must be started by the user that owns the data directory." msgstr "" "Сервер должен запуÑкать пользователь, ÑвлÑющийÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†ÐµÐ¼ каталога данных." -#: postmaster/postmaster.c:1487 +#: postmaster/postmaster.c:1505 #, c-format msgid "data directory \"%s\" has group or world access" msgstr "к каталогу данных \"%s\" имеют доÑтуп вÑе или группа" -#: postmaster/postmaster.c:1489 +#: postmaster/postmaster.c:1507 #, c-format msgid "Permissions should be u=rwx (0700)." msgstr "Права должны быть: u=rwx (0700)." -#: postmaster/postmaster.c:1500 +#: postmaster/postmaster.c:1518 #, c-format msgid "" "%s: could not find the database system\n" @@ -15938,376 +15718,387 @@ msgstr "" "ОжидалоÑÑŒ найти её в каталоге \"%s\",\n" "но открыть файл \"%s\" не удалоÑÑŒ: %s\n" -#: postmaster/postmaster.c:1677 +#: postmaster/postmaster.c:1695 #, c-format msgid "select() failed in postmaster: %m" msgstr "Ñбой select() в postmaster'е: %m" -#: postmaster/postmaster.c:1827 +#: postmaster/postmaster.c:1850 #, c-format msgid "" "performing immediate shutdown because data directory lock file is invalid" msgstr "" "немедленное отключение из-за ошибочного файла блокировки каталога данных" -#: postmaster/postmaster.c:1905 postmaster/postmaster.c:1936 +#: postmaster/postmaster.c:1928 postmaster/postmaster.c:1959 #, c-format msgid "incomplete startup packet" msgstr "неполный Ñтартовый пакет" -#: postmaster/postmaster.c:1917 +#: postmaster/postmaster.c:1940 #, c-format msgid "invalid length of startup packet" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° Ñтартового пакета" -#: postmaster/postmaster.c:1975 +#: postmaster/postmaster.c:1998 #, c-format msgid "failed to send SSL negotiation response: %m" msgstr "не удалоÑÑŒ отправить ответ в процеÑÑе SSL-ÑоглаÑованиÑ: %m" -#: postmaster/postmaster.c:2004 +#: postmaster/postmaster.c:2027 #, c-format msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u" msgstr "" "неподдерживаемый протокол клиентÑкого Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ %u.%u; Ñервер поддерживает " -"%u.0 - %u.%u " +"%u.0 - %u.%u" -#: postmaster/postmaster.c:2067 utils/misc/guc.c:5662 utils/misc/guc.c:5755 -#: utils/misc/guc.c:7053 utils/misc/guc.c:9789 utils/misc/guc.c:9823 +#: postmaster/postmaster.c:2090 utils/misc/guc.c:5660 utils/misc/guc.c:5753 +#: utils/misc/guc.c:7051 utils/misc/guc.c:9805 utils/misc/guc.c:9839 #, c-format msgid "invalid value for parameter \"%s\": \"%s\"" msgstr "неверное значение Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\": \"%s\"" -#: postmaster/postmaster.c:2070 +#: postmaster/postmaster.c:2093 #, c-format msgid "Valid values are: \"false\", 0, \"true\", 1, \"database\"." msgstr "ДопуÑтимые значениÑ: \"false\", 0, \"true\", 1, \"database\"." -#: postmaster/postmaster.c:2090 +#: postmaster/postmaster.c:2113 #, c-format msgid "invalid startup packet layout: expected terminator as last byte" msgstr "" "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñтруктура Ñтартового пакета: поÑледним байтом должен быть терминатор" -#: postmaster/postmaster.c:2118 +#: postmaster/postmaster.c:2141 #, c-format msgid "no PostgreSQL user name specified in startup packet" msgstr "в Ñтартовом пакете не указано Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ PostgreSQL" -#: postmaster/postmaster.c:2177 +#: postmaster/postmaster.c:2200 #, c-format msgid "the database system is starting up" msgstr "ÑиÑтема баз данных запуÑкаетÑÑ" -#: postmaster/postmaster.c:2182 +#: postmaster/postmaster.c:2205 #, c-format msgid "the database system is shutting down" msgstr "ÑиÑтема баз данных оÑтанавливаетÑÑ" -#: postmaster/postmaster.c:2187 +#: postmaster/postmaster.c:2210 #, c-format msgid "the database system is in recovery mode" msgstr "ÑиÑтема баз данных в режиме воÑÑтановлениÑ" -#: postmaster/postmaster.c:2192 storage/ipc/procarray.c:297 +#: postmaster/postmaster.c:2215 storage/ipc/procarray.c:298 #: storage/ipc/sinvaladt.c:298 storage/lmgr/proc.c:340 #, c-format msgid "sorry, too many clients already" msgstr "извините, уже Ñлишком много клиентов" -#: postmaster/postmaster.c:2254 +#: postmaster/postmaster.c:2277 #, c-format msgid "wrong key in cancel request for process %d" msgstr "неправильный ключ в запроÑе на отмену процеÑÑа %d" -#: postmaster/postmaster.c:2262 +#: postmaster/postmaster.c:2285 #, c-format msgid "PID %d in cancel request did not match any process" msgstr "процеÑÑ Ñ ÐºÐ¾Ð´Ð¾Ð¼ %d, полученным в запроÑе на отмену, не найден" -#: postmaster/postmaster.c:2482 +#: postmaster/postmaster.c:2505 #, c-format msgid "received SIGHUP, reloading configuration files" msgstr "получен SIGHUP, файлы конфигурации перезагружаютÑÑ" -#: postmaster/postmaster.c:2507 +#: postmaster/postmaster.c:2530 #, c-format msgid "pg_hba.conf not reloaded" msgstr "pg_hba.conf не перезагружен" -#: postmaster/postmaster.c:2511 +#: postmaster/postmaster.c:2534 #, c-format msgid "pg_ident.conf not reloaded" msgstr "pg_ident.conf не перезагружен" -#: postmaster/postmaster.c:2552 +#: postmaster/postmaster.c:2575 #, c-format msgid "received smart shutdown request" msgstr "получен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° \"вежливое\" выключение" -#: postmaster/postmaster.c:2607 +#: postmaster/postmaster.c:2630 #, c-format msgid "received fast shutdown request" msgstr "получен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° быÑтрое выключение" -#: postmaster/postmaster.c:2637 +#: postmaster/postmaster.c:2660 #, c-format msgid "aborting any active transactions" msgstr "прерывание вÑех активных транзакций" -#: postmaster/postmaster.c:2671 +#: postmaster/postmaster.c:2694 #, c-format msgid "received immediate shutdown request" msgstr "получен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° немедленное выключение" -#: postmaster/postmaster.c:2735 +#: postmaster/postmaster.c:2758 #, c-format msgid "shutdown at recovery target" msgstr "выключение при доÑтижении цели воÑÑтановлениÑ" -#: postmaster/postmaster.c:2751 postmaster/postmaster.c:2774 +#: postmaster/postmaster.c:2774 postmaster/postmaster.c:2797 msgid "startup process" msgstr "Ñтартовый процеÑÑ" -#: postmaster/postmaster.c:2754 +#: postmaster/postmaster.c:2777 #, c-format msgid "aborting startup due to startup process failure" msgstr "прерывание запуÑка из-за ошибки в Ñтартовом процеÑÑе" -#: postmaster/postmaster.c:2815 +#: postmaster/postmaster.c:2838 #, c-format msgid "database system is ready to accept connections" msgstr "ÑиÑтема БД готова принимать подключениÑ" -#: postmaster/postmaster.c:2834 +#: postmaster/postmaster.c:2857 msgid "background writer process" msgstr "процеÑÑ Ñ„Ð¾Ð½Ð¾Ð²Ð¾Ð¹ запиÑи" -#: postmaster/postmaster.c:2888 +#: postmaster/postmaster.c:2911 msgid "checkpointer process" msgstr "процеÑÑ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ñ‹Ñ… точек" -#: postmaster/postmaster.c:2904 +#: postmaster/postmaster.c:2927 msgid "WAL writer process" msgstr "процеÑÑ Ð·Ð°Ð¿Ð¸Ñи WAL" -#: postmaster/postmaster.c:2918 +#: postmaster/postmaster.c:2942 msgid "WAL receiver process" msgstr "процеÑÑ ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ WAL" -#: postmaster/postmaster.c:2933 +#: postmaster/postmaster.c:2957 msgid "autovacuum launcher process" msgstr "процеÑÑ Ð·Ð°Ð¿ÑƒÑка автоочиÑтки" -#: postmaster/postmaster.c:2948 +#: postmaster/postmaster.c:2972 msgid "archiver process" msgstr "процеÑÑ Ð°Ñ€Ñ…Ð¸Ð²Ð°Ñ†Ð¸Ð¸" -#: postmaster/postmaster.c:2964 +#: postmaster/postmaster.c:2988 msgid "statistics collector process" msgstr "процеÑÑ Ñбора ÑтатиÑтики" -#: postmaster/postmaster.c:2978 +#: postmaster/postmaster.c:3002 msgid "system logger process" msgstr "процеÑÑ ÑиÑтемного протоколированиÑ" -#: postmaster/postmaster.c:3040 +#: postmaster/postmaster.c:3064 msgid "worker process" msgstr "рабочий процеÑÑ" -#: postmaster/postmaster.c:3123 postmaster/postmaster.c:3143 -#: postmaster/postmaster.c:3150 postmaster/postmaster.c:3168 +#: postmaster/postmaster.c:3147 postmaster/postmaster.c:3167 +#: postmaster/postmaster.c:3174 postmaster/postmaster.c:3192 msgid "server process" msgstr "процеÑÑ Ñервера" -#: postmaster/postmaster.c:3222 +#: postmaster/postmaster.c:3246 #, c-format msgid "terminating any other active server processes" msgstr "завершение вÑех оÑтальных активных Ñерверных процеÑÑов" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3478 +#: postmaster/postmaster.c:3502 #, c-format msgid "%s (PID %d) exited with exit code %d" msgstr "%s (PID %d) завершилÑÑ Ñ ÐºÐ¾Ð´Ð¾Ð¼ выхода %d" -#: postmaster/postmaster.c:3480 postmaster/postmaster.c:3491 -#: postmaster/postmaster.c:3502 postmaster/postmaster.c:3511 -#: postmaster/postmaster.c:3521 +#: postmaster/postmaster.c:3504 postmaster/postmaster.c:3515 +#: postmaster/postmaster.c:3526 postmaster/postmaster.c:3535 +#: postmaster/postmaster.c:3545 #, c-format msgid "Failed process was running: %s" msgstr "ЗавершившийÑÑ Ð¿Ñ€Ð¾Ñ†ÐµÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñл дейÑтвие: %s" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3488 +#: postmaster/postmaster.c:3512 #, c-format msgid "%s (PID %d) was terminated by exception 0x%X" msgstr "%s (PID %d) был прерван иÑключением 0x%X" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3498 +#: postmaster/postmaster.c:3522 #, c-format msgid "%s (PID %d) was terminated by signal %d: %s" msgstr "%s (PID %d) был завершён по Ñигналу %d: %s" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3509 +#: postmaster/postmaster.c:3533 #, c-format msgid "%s (PID %d) was terminated by signal %d" msgstr "%s (PID %d) был завершён по Ñигналу %d" #. translator: %s is a noun phrase describing a child process, such as #. "server process" -#: postmaster/postmaster.c:3519 +#: postmaster/postmaster.c:3543 #, c-format msgid "%s (PID %d) exited with unrecognized status %d" msgstr "%s (PID %d) завершилÑÑ Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтным кодом ÑоÑтоÑÐ½Ð¸Ñ %d" -#: postmaster/postmaster.c:3706 +#: postmaster/postmaster.c:3730 #, c-format msgid "abnormal database system shutdown" msgstr "аварийное выключение ÑиÑтемы БД" -#: postmaster/postmaster.c:3746 +#: postmaster/postmaster.c:3770 #, c-format msgid "all server processes terminated; reinitializing" msgstr "вÑе Ñерверные процеÑÑÑ‹ завершены... переинициализациÑ" -#: postmaster/postmaster.c:3958 +#: postmaster/postmaster.c:3982 #, c-format msgid "could not fork new process for connection: %m" msgstr "породить новый процеÑÑ Ð´Ð»Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ðµ удалоÑÑŒ: %m" -#: postmaster/postmaster.c:4000 +#: postmaster/postmaster.c:4024 msgid "could not fork new process for connection: " msgstr "породить новый процеÑÑ Ð´Ð»Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ðµ удалоÑÑŒ: " -#: postmaster/postmaster.c:4114 +#: postmaster/postmaster.c:4138 #, c-format msgid "connection received: host=%s port=%s" msgstr "принÑто подключение: узел=%s порт=%s" -#: postmaster/postmaster.c:4119 +#: postmaster/postmaster.c:4143 #, c-format msgid "connection received: host=%s" msgstr "принÑто подключение: узел=%s" -#: postmaster/postmaster.c:4402 +#: postmaster/postmaster.c:4426 #, c-format msgid "could not execute server process \"%s\": %m" msgstr "запуÑтить Ñерверный процеÑÑ \"%s\" не удалоÑÑŒ: %m" -#: postmaster/postmaster.c:4967 +#: postmaster/postmaster.c:4579 +#, c-format +msgid "giving up after too many tries to reserve shared memory" +msgstr "" +"чиÑло повторных попыток Ñ€ÐµÐ·ÐµÑ€Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ñемой памÑти доÑтигло предела" + +#: postmaster/postmaster.c:4580 +#, c-format +msgid "This might be caused by ASLR or antivirus software." +msgstr "Это может быть вызвано антивируÑным ПО или механизмом ASLR." + +#: postmaster/postmaster.c:4978 #, c-format msgid "database system is ready to accept read only connections" msgstr "ÑиÑтема БД готова к подключениÑм в режиме \"только чтение\"" -#: postmaster/postmaster.c:5258 +#: postmaster/postmaster.c:5267 #, c-format msgid "could not fork startup process: %m" msgstr "породить Ñтартовый процеÑÑ Ð½Ðµ удалоÑÑŒ: %m" -#: postmaster/postmaster.c:5262 +#: postmaster/postmaster.c:5271 #, c-format msgid "could not fork background writer process: %m" msgstr "породить процеÑÑ Ñ„Ð¾Ð½Ð¾Ð²Ð¾Ð¹ запиÑи не удалоÑÑŒ: %m" -#: postmaster/postmaster.c:5266 +#: postmaster/postmaster.c:5275 #, c-format msgid "could not fork checkpointer process: %m" msgstr "породить процеÑÑ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ñ‹Ñ… точек не удалоÑÑŒ: %m" -#: postmaster/postmaster.c:5270 +#: postmaster/postmaster.c:5279 #, c-format msgid "could not fork WAL writer process: %m" msgstr "породить процеÑÑ Ð·Ð°Ð¿Ð¸Ñи WAL не удалоÑÑŒ: %m" -#: postmaster/postmaster.c:5274 +#: postmaster/postmaster.c:5283 #, c-format msgid "could not fork WAL receiver process: %m" msgstr "породить процеÑÑ ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ WAL не удалоÑÑŒ: %m" -#: postmaster/postmaster.c:5278 +#: postmaster/postmaster.c:5287 #, c-format msgid "could not fork process: %m" msgstr "породить процеÑÑ Ð½Ðµ удалоÑÑŒ: %m" -#: postmaster/postmaster.c:5440 postmaster/postmaster.c:5463 +#: postmaster/postmaster.c:5467 postmaster/postmaster.c:5490 #, c-format msgid "database connection requirement not indicated during registration" msgstr "" "при региÑтрации фонового процеÑÑа не указывалоÑÑŒ, что ему требуетÑÑ " "подключение к БД" -#: postmaster/postmaster.c:5447 postmaster/postmaster.c:5470 +#: postmaster/postmaster.c:5474 postmaster/postmaster.c:5497 #, c-format msgid "invalid processing mode in background worker" msgstr "неправильный режим обработки в фоновом процеÑÑе" -#: postmaster/postmaster.c:5522 +#: postmaster/postmaster.c:5569 #, c-format msgid "starting background worker process \"%s\"" msgstr "запуÑк фонового рабочего процеÑÑа \"%s\"" -#: postmaster/postmaster.c:5533 +#: postmaster/postmaster.c:5581 #, c-format msgid "could not fork worker process: %m" msgstr "породить рабочий процеÑÑ Ð½Ðµ удалоÑÑŒ: %m" -#: postmaster/postmaster.c:5921 +#: postmaster/postmaster.c:5998 #, c-format msgid "could not duplicate socket %d for use in backend: error code %d" msgstr "" "продублировать Ñокет %d Ð´Ð»Ñ Ñерверного процеÑÑа не удалоÑÑŒ (код ошибки: %d)" -#: postmaster/postmaster.c:5953 +#: postmaster/postmaster.c:6030 #, c-format msgid "could not create inherited socket: error code %d\n" msgstr "Ñоздать наÑледуемый Ñокет не удалоÑÑŒ (код ошибки: %d)\n" -#: postmaster/postmaster.c:5982 +#: postmaster/postmaster.c:6059 #, c-format msgid "could not open backend variables file \"%s\": %s\n" msgstr "открыть файл Ñерверных переменных \"%s\" не удалоÑÑŒ: %s\n" -#: postmaster/postmaster.c:5989 +#: postmaster/postmaster.c:6066 #, c-format msgid "could not read from backend variables file \"%s\": %s\n" msgstr "прочитать файл Ñерверных переменных \"%s\" не удалоÑÑŒ: %s\n" -#: postmaster/postmaster.c:5998 +#: postmaster/postmaster.c:6075 #, c-format msgid "could not remove file \"%s\": %s\n" msgstr "не удалоÑÑŒ Ñтереть файл \"%s\": %s\n" -#: postmaster/postmaster.c:6015 +#: postmaster/postmaster.c:6092 #, c-format msgid "could not map view of backend variables: error code %lu\n" msgstr "отобразить файл Ñерверных переменных не удалоÑÑŒ (код ошибки: %lu)\n" -#: postmaster/postmaster.c:6024 +#: postmaster/postmaster.c:6101 #, c-format msgid "could not unmap view of backend variables: error code %lu\n" msgstr "" "отключить отображение файла Ñерверных переменных не удалоÑÑŒ (код ошибки: " "%lu)\n" -#: postmaster/postmaster.c:6031 +#: postmaster/postmaster.c:6108 #, c-format msgid "could not close handle to backend parameter variables: error code %lu\n" msgstr "" "закрыть указатель файла Ñерверных переменных не удалоÑÑŒ (код ошибки: %lu)\n" -#: postmaster/postmaster.c:6192 +#: postmaster/postmaster.c:6269 #, c-format msgid "could not read exit code for process\n" msgstr "прочитать код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑа не удалоÑÑŒ\n" -#: postmaster/postmaster.c:6197 +#: postmaster/postmaster.c:6274 #, c-format msgid "could not post child completion status\n" msgstr "отправить ÑоÑтоÑние Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ° не удалоÑÑŒ\n" @@ -16350,7 +16141,7 @@ msgstr "не удалоÑÑŒ перенаправить stdout: %m" #: postmaster/syslogger.c:634 postmaster/syslogger.c:651 #, c-format msgid "could not redirect stderr: %m" -msgstr "не удалоÑÑŒ перенаправить stderr: %m " +msgstr "не удалоÑÑŒ перенаправить stderr: %m" #: postmaster/syslogger.c:996 #, c-format @@ -16374,63 +16165,63 @@ msgstr "" "не удалоÑÑŒ определить, какое правило Ñортировки иÑпользовать Ð´Ð»Ñ Ñ€ÐµÐ³ÑƒÐ»Ñрного " "выражениÑ" -#: replication/basebackup.c:230 +#: replication/basebackup.c:232 #, c-format msgid "could not stat control file \"%s\": %m" msgstr "не удалоÑÑŒ найти управлÑющий файл \"%s\": %m" -#: replication/basebackup.c:339 +#: replication/basebackup.c:341 #, c-format msgid "could not find any WAL files" msgstr "не удалоÑÑŒ найти ни одного файла WAL" -#: replication/basebackup.c:352 replication/basebackup.c:366 -#: replication/basebackup.c:375 +#: replication/basebackup.c:354 replication/basebackup.c:368 +#: replication/basebackup.c:377 #, c-format msgid "could not find WAL file \"%s\"" msgstr "не удалоÑÑŒ найти файл WAL \"%s\"" -#: replication/basebackup.c:414 replication/basebackup.c:440 +#: replication/basebackup.c:416 replication/basebackup.c:442 #, c-format msgid "unexpected WAL file size \"%s\"" msgstr "неприемлемый размер файла WAL \"%s\"" -#: replication/basebackup.c:426 replication/basebackup.c:1172 +#: replication/basebackup.c:428 replication/basebackup.c:1160 #, c-format msgid "base backup could not send data, aborting backup" msgstr "" "в процеÑÑе базового резервного ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ удалоÑÑŒ передать данные, " "копирование прерываетÑÑ" -#: replication/basebackup.c:528 replication/basebackup.c:537 -#: replication/basebackup.c:546 replication/basebackup.c:555 -#: replication/basebackup.c:564 replication/basebackup.c:575 -#: replication/basebackup.c:592 +#: replication/basebackup.c:530 replication/basebackup.c:539 +#: replication/basebackup.c:548 replication/basebackup.c:557 +#: replication/basebackup.c:566 replication/basebackup.c:577 +#: replication/basebackup.c:594 #, c-format msgid "duplicate option \"%s\"" msgstr "повторÑющийÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ \"%s\"" -#: replication/basebackup.c:581 utils/misc/guc.c:5672 +#: replication/basebackup.c:583 utils/misc/guc.c:5670 #, c-format msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)" msgstr "%d вне диапазона, допуÑтимого Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" (%d .. %d)" -#: replication/basebackup.c:855 replication/basebackup.c:957 +#: replication/basebackup.c:857 replication/basebackup.c:959 #, c-format msgid "could not stat file or directory \"%s\": %m" msgstr "не удалоÑÑŒ получить информацию о файле или каталоге \"%s\": %m" -#: replication/basebackup.c:1124 +#: replication/basebackup.c:1112 #, c-format msgid "skipping special file \"%s\"" msgstr "Ñпециальный файл \"%s\" пропуÑкаетÑÑ" -#: replication/basebackup.c:1235 +#: replication/basebackup.c:1223 #, c-format msgid "file name too long for tar format: \"%s\"" msgstr "Ñлишком длинное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° tar: \"%s\"" -#: replication/basebackup.c:1240 +#: replication/basebackup.c:1228 #, c-format msgid "" "symbolic link target too long for tar format: file name \"%s\", target \"%s\"" @@ -16522,19 +16313,19 @@ msgstr "ОжидалÑÑ 1 кортеж Ñ 2 полÑми, однако полу msgid "invalid socket: %s" msgstr "неверный Ñокет: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:426 storage/ipc/latch.c:1277 +#: replication/libpqwalreceiver/libpqwalreceiver.c:426 storage/ipc/latch.c:1343 #, c-format msgid "select() failed: %m" msgstr "ошибка в select(): %m" -#: replication/libpqwalreceiver/libpqwalreceiver.c:549 -#: replication/libpqwalreceiver/libpqwalreceiver.c:576 +#: replication/libpqwalreceiver/libpqwalreceiver.c:555 #: replication/libpqwalreceiver/libpqwalreceiver.c:582 +#: replication/libpqwalreceiver/libpqwalreceiver.c:588 #, c-format msgid "could not receive data from WAL stream: %s" msgstr "не удалоÑÑŒ извлечь данные из потока WAL: %s" -#: replication/libpqwalreceiver/libpqwalreceiver.c:601 +#: replication/libpqwalreceiver/libpqwalreceiver.c:607 #, c-format msgid "could not send data to WAL stream: %s" msgstr "не удалоÑÑŒ отправить данные в поток WAL: %s" @@ -16554,18 +16345,18 @@ msgstr "Ð´Ð»Ñ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑкого Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ msgid "logical decoding cannot be used while in recovery" msgstr "логичеÑкое декодирование Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать в процеÑÑе воÑÑтановлениÑ" -#: replication/logical/logical.c:236 replication/logical/logical.c:348 +#: replication/logical/logical.c:239 replication/logical/logical.c:360 #, c-format msgid "cannot use physical replication slot for logical decoding" msgstr "" "физичеÑкий Ñлот репликации Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ð´Ð»Ñ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑкого декодированиÑ" -#: replication/logical/logical.c:241 replication/logical/logical.c:353 +#: replication/logical/logical.c:244 replication/logical/logical.c:365 #, c-format msgid "replication slot \"%s\" was not created in this database" msgstr "Ñлот репликации \"%s\" Ñоздан не в Ñтой базе данных" -#: replication/logical/logical.c:248 +#: replication/logical/logical.c:251 #, c-format msgid "" "cannot create logical replication slot in transaction that has performed " @@ -16573,24 +16364,24 @@ msgid "" msgstr "" "Ð½ÐµÐ»ÑŒÐ·Ñ Ñоздать логичеÑкий Ñлот репликации в транзакции, оÑущеÑтвлÑющей запиÑÑŒ" -#: replication/logical/logical.c:390 +#: replication/logical/logical.c:402 #, c-format msgid "starting logical decoding for slot \"%s\"" msgstr "начинаетÑÑ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑкое декодирование Ð´Ð»Ñ Ñлота \"%s\"" -#: replication/logical/logical.c:392 +#: replication/logical/logical.c:404 #, c-format msgid "streaming transactions committing after %X/%X, reading WAL from %X/%X" msgstr "передача транзакций, фикÑируемых поÑле %X/%X, чтение WAL Ñ %X/%X" -#: replication/logical/logical.c:527 +#: replication/logical/logical.c:539 #, c-format msgid "" "slot \"%s\", output plugin \"%s\", in the %s callback, associated LSN %X/%X" msgstr "" "Ñлот \"%s\", модуль вывода \"%s\", в обработчике %s, ÑвÑзанный LSN: %X/%X" -#: replication/logical/logical.c:534 +#: replication/logical/logical.c:546 #, c-format msgid "slot \"%s\", output plugin \"%s\", in the %s callback" msgstr "Ñлот \"%s\", модуль вывода \"%s\", в обработчике %s" @@ -16669,37 +16460,37 @@ msgstr "" "удалить иÑточник репликации Ñ OID %d нельзÑ, он иÑпользуетÑÑ Ð¿Ñ€Ð¾Ñ†ÐµÑÑом Ñ PID " "%d" -#: replication/logical/origin.c:671 +#: replication/logical/origin.c:674 #, c-format msgid "replication checkpoint has wrong magic %u instead of %u" msgstr "" "ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° репликации имеет неправильную Ñигнатуру (%u вмеÑто %u)" -#: replication/logical/origin.c:703 +#: replication/logical/origin.c:706 #, c-format msgid "could not read file \"%s\": read %d of %zu" msgstr "не удалоÑÑŒ прочитать файл \"%s\" (прочитано байт: %d из %zu)" -#: replication/logical/origin.c:712 +#: replication/logical/origin.c:715 #, c-format msgid "could not find free replication state, increase max_replication_slots" msgstr "" "не удалоÑÑŒ найти Ñвободную Ñчейку Ð´Ð»Ñ ÑоÑтоÑÐ½Ð¸Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸, увеличьте " "max_replication_slots" -#: replication/logical/origin.c:730 +#: replication/logical/origin.c:733 #, c-format msgid "replication slot checkpoint has wrong checksum %u, expected %u" msgstr "" "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма файла контрольной точки Ð´Ð»Ñ Ñлота репликации (%u " "вмеÑто %u)" -#: replication/logical/origin.c:854 +#: replication/logical/origin.c:857 #, c-format msgid "replication origin with OID %d is already active for PID %d" msgstr "иÑточник репликации Ñ OID %d уже занÑÑ‚ процеÑÑом Ñ PID %d" -#: replication/logical/origin.c:865 replication/logical/origin.c:1045 +#: replication/logical/origin.c:868 replication/logical/origin.c:1048 #, c-format msgid "" "could not find free replication state slot for replication origin with OID %u" @@ -16707,41 +16498,41 @@ msgstr "" "не удалоÑÑŒ найти Ñвободный Ñлот ÑоÑтоÑÐ½Ð¸Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ Ð´Ð»Ñ Ð¸Ñточника " "репликации Ñ OID %u" -#: replication/logical/origin.c:867 replication/logical/origin.c:1047 -#: replication/slot.c:1299 +#: replication/logical/origin.c:870 replication/logical/origin.c:1050 +#: replication/slot.c:1316 #, c-format msgid "Increase max_replication_slots and try again." msgstr "Увеличьте параметр max_replication_slots и повторите попытку." -#: replication/logical/origin.c:1004 +#: replication/logical/origin.c:1007 #, c-format msgid "cannot setup replication origin when one is already setup" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð½Ð°Ñтроить иÑточник репликации, когда он уже наÑтроен" -#: replication/logical/origin.c:1033 +#: replication/logical/origin.c:1036 #, c-format msgid "replication identifier %d is already active for PID %d" msgstr "идентификатор репликации %d уже занÑÑ‚ процеÑÑом Ñ PID %d" -#: replication/logical/origin.c:1079 replication/logical/origin.c:1274 -#: replication/logical/origin.c:1294 +#: replication/logical/origin.c:1082 replication/logical/origin.c:1277 +#: replication/logical/origin.c:1297 #, c-format msgid "no replication origin is configured" msgstr "ни один иÑточник репликации не наÑтроен" -#: replication/logical/reorderbuffer.c:2324 +#: replication/logical/reorderbuffer.c:2331 #, c-format msgid "could not write to data file for XID %u: %m" msgstr "не удалоÑÑŒ запиÑать в файл данных Ð´Ð»Ñ XID %u: %m" -#: replication/logical/reorderbuffer.c:2420 -#: replication/logical/reorderbuffer.c:2440 +#: replication/logical/reorderbuffer.c:2427 +#: replication/logical/reorderbuffer.c:2447 #, c-format msgid "could not read from reorderbuffer spill file: %m" msgstr "не удалоÑÑŒ прочитать из файла подкачки буфера переÑортировки: %m" -#: replication/logical/reorderbuffer.c:2424 -#: replication/logical/reorderbuffer.c:2444 +#: replication/logical/reorderbuffer.c:2431 +#: replication/logical/reorderbuffer.c:2451 #, c-format msgid "" "could not read from reorderbuffer spill file: read %d instead of %u bytes" @@ -16749,13 +16540,14 @@ msgstr "" "не удалоÑÑŒ прочитать из файла подкачки буфера переÑортировки (прочитано " "байт: %d, требовалоÑÑŒ: %u)" -#: replication/logical/reorderbuffer.c:3100 +#: replication/logical/reorderbuffer.c:3107 #, c-format msgid "could not read from file \"%s\": read %d instead of %d bytes" msgstr "" "не удалоÑÑŒ прочитать из файла \"%s\" (прочитано байт: %d, требовалоÑÑŒ: %d)" -#: replication/logical/snapbuild.c:598 +# skip-rule: capital-letter-first +#: replication/logical/snapbuild.c:646 #, c-format msgid "exported logical decoding snapshot: \"%s\" with %u transaction ID" msgid_plural "" @@ -16767,38 +16559,41 @@ msgstr[1] "" msgstr[2] "" "ÑкÑпортирован Ñнимок логичеÑкого декодированиÑ: \"%s\" (ид. транзакций: %u)" -#: replication/logical/snapbuild.c:917 replication/logical/snapbuild.c:1282 -#: replication/logical/snapbuild.c:1813 +#: replication/logical/snapbuild.c:1243 replication/logical/snapbuild.c:1333 +#: replication/logical/snapbuild.c:1808 #, c-format msgid "logical decoding found consistent point at %X/%X" msgstr "процеÑÑ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑкого Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ñтиг точки ÑоглаÑованноÑти в %X/%X" -#: replication/logical/snapbuild.c:919 -#, c-format -msgid "Transaction ID %u finished; no more running transactions." -msgstr "Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ %u завершена, больше активных транзакций нет." - -#: replication/logical/snapbuild.c:1284 +#: replication/logical/snapbuild.c:1245 #, c-format msgid "There are no running transactions." msgstr "Больше активных транзакций нет." -#: replication/logical/snapbuild.c:1346 +#: replication/logical/snapbuild.c:1286 #, c-format msgid "logical decoding found initial starting point at %X/%X" msgstr "" "процеÑÑ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑкого Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð°ÑˆÑ‘Ð» начальную Ñтартовую точку в %X/%X" -#: replication/logical/snapbuild.c:1348 +#: replication/logical/snapbuild.c:1288 replication/logical/snapbuild.c:1311 +#, c-format +msgid "Waiting for transactions (approximately %d) older than %u to end." +msgstr "Ожидание транзакций (примерно %d), Ñтарее %u до конца." + +#: replication/logical/snapbuild.c:1309 +#, c-format +msgid "logical decoding found initial consistent point at %X/%X" +msgstr "" +"при логичеÑком декодировании найдена Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° ÑоглаÑованноÑти в %X/%X" + +#: replication/logical/snapbuild.c:1335 #, c-format -msgid "%u transaction needs to finish." -msgid_plural "%u transactions need to finish." -msgstr[0] "Ðеобходимо дождатьÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¹ (%u)." -msgstr[1] "Ðеобходимо дождатьÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¹ (%u)." -msgstr[2] "Ðеобходимо дождатьÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¹ (%u)." +msgid "There are no old transactions anymore." +msgstr "Больше Ñтарых транзакций нет." #: replication/logical/snapbuild.c:1687 replication/logical/snapbuild.c:1713 -#: replication/logical/snapbuild.c:1727 replication/logical/snapbuild.c:1741 +#: replication/logical/snapbuild.c:1728 replication/logical/snapbuild.c:1742 #, c-format msgid "could not read file \"%s\", read %d of %d: %m" msgstr "не удалоÑÑŒ прочитать файл \"%s\" (прочитано байт: %d из %d): %m" @@ -16815,18 +16610,18 @@ msgid "snapbuild state file \"%s\" has unsupported version: %u instead of %u" msgstr "" "файл ÑоÑтоÑÐ½Ð¸Ñ snapbuild \"%s\" имеет неправильную верÑию (%u вмеÑто %u)" -#: replication/logical/snapbuild.c:1754 +#: replication/logical/snapbuild.c:1755 #, c-format msgid "checksum mismatch for snapbuild state file \"%s\": is %u, should be %u" msgstr "" "в файле ÑоÑтоÑÐ½Ð¸Ñ snapbuild \"%s\" Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма (%u вмеÑто %u)" -#: replication/logical/snapbuild.c:1815 +#: replication/logical/snapbuild.c:1810 #, c-format msgid "Logical decoding will begin using saved snapshot." msgstr "ЛогичеÑкое декодирование начнётÑÑ Ñ Ñохранённого Ñнимка." -#: replication/logical/snapbuild.c:1888 +#: replication/logical/snapbuild.c:1881 #, c-format msgid "could not parse file name \"%s\"" msgstr "не удалоÑÑŒ разобрать Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° \"%s\"" @@ -16880,50 +16675,50 @@ msgstr "Ñлот репликации \"%s\" не ÑущеÑтвует" msgid "replication slot \"%s\" is active for PID %d" msgstr "Ñлот репликации \"%s\" занÑÑ‚ процеÑÑом Ñ PID %d" -#: replication/slot.c:511 replication/slot.c:923 replication/slot.c:1260 +#: replication/slot.c:527 replication/slot.c:940 replication/slot.c:1277 #, c-format msgid "could not remove directory \"%s\"" msgstr "ошибка при удалении каталога \"%s\"" -#: replication/slot.c:772 +#: replication/slot.c:789 #, c-format msgid "replication slots can only be used if max_replication_slots > 0" msgstr "" "Ñлоты репликации можно иÑпользовать, только еÑли max_replication_slots > 0" -#: replication/slot.c:777 +#: replication/slot.c:794 #, c-format msgid "replication slots can only be used if wal_level >= replica" msgstr "Ñлоты репликации можно иÑпользовать, только еÑли wal_level >= replica" -#: replication/slot.c:1192 replication/slot.c:1230 +#: replication/slot.c:1209 replication/slot.c:1247 #, c-format msgid "could not read file \"%s\", read %d of %u: %m" msgstr "не удалоÑÑŒ прочитать файл \"%s\" (прочитано байт: %d из %u): %m" -#: replication/slot.c:1201 +#: replication/slot.c:1218 #, c-format msgid "replication slot file \"%s\" has wrong magic number: %u instead of %u" msgstr "" "файл Ñлота репликации \"%s\" имеет неправильную Ñигнатуру (%u вмеÑто %u)" -#: replication/slot.c:1208 +#: replication/slot.c:1225 #, c-format msgid "replication slot file \"%s\" has unsupported version %u" msgstr "файл ÑоÑтоÑÐ½Ð¸Ñ snapbuild \"%s\" имеет неподдерживаемую верÑию %u" -#: replication/slot.c:1215 +#: replication/slot.c:1232 #, c-format msgid "replication slot file \"%s\" has corrupted length %u" msgstr "у файла Ñлота репликации \"%s\" Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð°: %u" -#: replication/slot.c:1245 +#: replication/slot.c:1262 #, c-format msgid "checksum mismatch for replication slot file \"%s\": is %u, should be %u" msgstr "" "в файле Ñлота репликации \"%s\" Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма (%u вмеÑто %u)" -#: replication/slot.c:1298 +#: replication/slot.c:1315 #, c-format msgid "too many replication slots active before shutdown" msgstr "перед завершением активно Ñлишком много Ñлотов репликации" @@ -16951,22 +16746,27 @@ msgstr "" msgid "canceling wait for synchronous replication due to user request" msgstr "отмена Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ñинхронной репликации по запроÑу пользователÑ" -#: replication/syncrep.c:368 +#: replication/syncrep.c:371 #, c-format msgid "standby \"%s\" now has synchronous standby priority %u" msgstr "" "резервный Ñервер \"%s\" теперь имеет приоритет Ñинхронной репликации %u" -#: replication/syncrep.c:428 +#: replication/syncrep.c:431 #, c-format msgid "standby \"%s\" is now a synchronous standby with priority %u" msgstr "резервный Ñервер \"%s\" Ñтал Ñинхронным Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð¾Ð¼ %u" -#: replication/syncrep.c:921 +#: replication/syncrep.c:931 #, c-format msgid "synchronous_standby_names parser failed" msgstr "ошибка при разборе synchronous_standby_names" +#: replication/syncrep.c:937 +#, c-format +msgid "number of synchronous standbys (%d) must be greater than zero" +msgstr "чиÑло Ñинхронных резервных Ñерверов (%d) должно быть больше нулÑ" + #: replication/walreceiver.c:173 #, c-format msgid "terminating walreceiver process due to administrator command" @@ -17032,30 +16832,30 @@ msgstr "загрузка файла иÑтории Ð´Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ време msgid "could not write to log segment %s at offset %u, length %lu: %m" msgstr "не удалоÑÑŒ запиÑать в Ñегмент журнала %s (Ñмещение %u, длина %lu): %m" -#: replication/walsender.c:485 +#: replication/walsender.c:490 #, c-format msgid "could not seek to beginning of file \"%s\": %m" msgstr "не удалоÑÑŒ перейти к началу файла \"%s\": %m" -#: replication/walsender.c:536 +#: replication/walsender.c:541 #, c-format msgid "cannot use a logical replication slot for physical replication" msgstr "" "логичеÑкий Ñлот репликации Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ð´Ð»Ñ Ñ„Ð¸Ð·Ð¸Ñ‡ÐµÑкой репликации" -#: replication/walsender.c:599 +#: replication/walsender.c:604 #, c-format msgid "" "requested starting point %X/%X on timeline %u is not in this server's history" msgstr "" "в иÑтории Ñервера нет запрошенной начальной точки %X/%X на линии времени %u" -#: replication/walsender.c:603 +#: replication/walsender.c:608 #, c-format msgid "This server's history forked from timeline %u at %X/%X." msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ñтого Ñервера ответвилаÑÑŒ от линии времени %u в %X/%X." -#: replication/walsender.c:648 +#: replication/walsender.c:653 #, c-format msgid "" "requested starting point %X/%X is ahead of the WAL flush position of this " @@ -17064,48 +16864,55 @@ msgstr "" "Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð°Ñ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° %X/%X впереди позиции Ñброшенных данных журнала " "на Ñтом Ñервере (%X/%X)" -#: replication/walsender.c:974 +#: replication/walsender.c:977 #, c-format msgid "terminating walsender process after promotion" msgstr "завершение процеÑÑа передачи журнала поÑле повышениÑ" -#: replication/walsender.c:1300 +#: replication/walsender.c:1333 +#, c-format +msgid "cannot execute new commands while WAL sender is in stopping mode" +msgstr "" +"Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñть новые команды, пока процеÑÑ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ WAL находитÑÑ Ð² режиме " +"оÑтановки" + +#: replication/walsender.c:1341 #, c-format msgid "received replication command: %s" msgstr "получена команда репликации: %s" -#: replication/walsender.c:1391 replication/walsender.c:1407 +#: replication/walsender.c:1440 replication/walsender.c:1456 #, c-format msgid "unexpected EOF on standby connection" msgstr "неожиданный обрыв ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ñ‹Ð¼ Ñервером" -#: replication/walsender.c:1421 +#: replication/walsender.c:1470 #, c-format msgid "unexpected standby message type \"%c\", after receiving CopyDone" msgstr "" "поÑле CopyDone резервный Ñервер передал Ñообщение неожиданного типа \"%c\"" -#: replication/walsender.c:1459 +#: replication/walsender.c:1508 #, c-format msgid "invalid standby message type \"%c\"" msgstr "неверный тип ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¾Ð³Ð¾ Ñервера: \"%c\"" -#: replication/walsender.c:1500 +#: replication/walsender.c:1549 #, c-format msgid "unexpected message type \"%c\"" msgstr "неожиданный тип ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ \"%c\"" -#: replication/walsender.c:1784 +#: replication/walsender.c:1833 #, c-format msgid "terminating walsender process due to replication timeout" msgstr "завершение процеÑÑа передачи журнала из-за таймаута репликации" -#: replication/walsender.c:1877 +#: replication/walsender.c:1919 #, c-format msgid "standby \"%s\" has now caught up with primary" msgstr "резервный Ñервер \"%s\" нагнал главный" -#: replication/walsender.c:1980 +#: replication/walsender.c:2022 #, c-format msgid "" "number of requested standby connections exceeds max_wal_senders (currently " @@ -17184,7 +16991,8 @@ msgstr "правило предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ \"%s\" должно н #, c-format msgid "could not convert table \"%s\" to a view because it is not empty" msgstr "" -"не удалоÑÑŒ преобразовать таблицу \"%s\" в предÑтавление, так как она не пуÑта" +"не удалоÑÑŒ преобразовать таблицу \"%s\" в предÑтавление, так как она не " +"пуÑта1" #: rewrite/rewriteDefine.c:440 #, c-format @@ -17350,87 +17158,87 @@ msgstr "" msgid "cannot have RETURNING lists in multiple rules" msgstr "RETURNING можно определить только Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ правила" -#: rewrite/rewriteHandler.c:928 rewrite/rewriteHandler.c:946 +#: rewrite/rewriteHandler.c:949 rewrite/rewriteHandler.c:967 #, c-format msgid "multiple assignments to same column \"%s\"" msgstr "многочиÑленные приÑÐ²Ð¾ÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð¼Ñƒ Ñтолбцу \"%s\"" -#: rewrite/rewriteHandler.c:1721 rewrite/rewriteHandler.c:3331 +#: rewrite/rewriteHandler.c:1752 rewrite/rewriteHandler.c:3362 #, c-format msgid "infinite recursion detected in rules for relation \"%s\"" msgstr "обнаружена беÑÐºÐ¾Ð½ÐµÑ‡Ð½Ð°Ñ Ñ€ÐµÐºÑƒÑ€ÑÐ¸Ñ Ð² правилах Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\"" -#: rewrite/rewriteHandler.c:1806 +#: rewrite/rewriteHandler.c:1837 #, c-format msgid "infinite recursion detected in policy for relation \"%s\"" msgstr "обнаружена беÑÐºÐ¾Ð½ÐµÑ‡Ð½Ð°Ñ Ñ€ÐµÐºÑƒÑ€ÑÐ¸Ñ Ð² политике Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\"" -#: rewrite/rewriteHandler.c:2123 +#: rewrite/rewriteHandler.c:2154 msgid "Junk view columns are not updatable." msgstr "Утилизируемые Ñтолбцы предÑтавлений не обновлÑÑŽÑ‚ÑÑ." -#: rewrite/rewriteHandler.c:2128 +#: rewrite/rewriteHandler.c:2159 msgid "" "View columns that are not columns of their base relation are not updatable." msgstr "" "Столбцы предÑтавлений, не ÑвлÑющиеÑÑ Ñтолбцами базовых отношений, не " "обновлÑÑŽÑ‚ÑÑ." -#: rewrite/rewriteHandler.c:2131 +#: rewrite/rewriteHandler.c:2162 msgid "View columns that refer to system columns are not updatable." msgstr "" "Столбцы предÑтавлений, ÑÑылающиеÑÑ Ð½Ð° ÑиÑтемные Ñтолбцы, не обновлÑÑŽÑ‚ÑÑ." -#: rewrite/rewriteHandler.c:2134 +#: rewrite/rewriteHandler.c:2165 msgid "View columns that return whole-row references are not updatable." msgstr "" "Столбцы предÑтавлений, возвращающие ÑÑылки на вÑÑŽ Ñтроку, не обновлÑÑŽÑ‚ÑÑ." -#: rewrite/rewriteHandler.c:2192 +#: rewrite/rewriteHandler.c:2223 msgid "Views containing DISTINCT are not automatically updatable." msgstr "ПредÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ DISTINCT не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки." -#: rewrite/rewriteHandler.c:2195 +#: rewrite/rewriteHandler.c:2226 msgid "Views containing GROUP BY are not automatically updatable." msgstr "ПредÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ GROUP BY не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки." -#: rewrite/rewriteHandler.c:2198 +#: rewrite/rewriteHandler.c:2229 msgid "Views containing HAVING are not automatically updatable." msgstr "ПредÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ HAVING не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки." -#: rewrite/rewriteHandler.c:2201 +#: rewrite/rewriteHandler.c:2232 msgid "" "Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable." msgstr "" "ПредÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ UNION, INTERSECT или EXCEPT не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки." -#: rewrite/rewriteHandler.c:2204 +#: rewrite/rewriteHandler.c:2235 msgid "Views containing WITH are not automatically updatable." msgstr "ПредÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ WITH не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки." -#: rewrite/rewriteHandler.c:2207 +#: rewrite/rewriteHandler.c:2238 msgid "Views containing LIMIT or OFFSET are not automatically updatable." msgstr "ПредÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ LIMIT или OFFSET не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки." -#: rewrite/rewriteHandler.c:2219 +#: rewrite/rewriteHandler.c:2250 msgid "Views that return aggregate functions are not automatically updatable." msgstr "" "ПредÑтавлениÑ, возвращающие агрегатные функции, не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки." -#: rewrite/rewriteHandler.c:2222 +#: rewrite/rewriteHandler.c:2253 msgid "Views that return window functions are not automatically updatable." msgstr "" "ПредÑтавлениÑ, возвращающие оконные функции, не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки." -#: rewrite/rewriteHandler.c:2225 +#: rewrite/rewriteHandler.c:2256 msgid "" "Views that return set-returning functions are not automatically updatable." msgstr "" "ПредÑтавлениÑ, возвращающие функции Ñ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ð¾Ð¼-множеÑтвом, не обновлÑÑŽÑ‚ÑÑ " "автоматичеÑки." -#: rewrite/rewriteHandler.c:2232 rewrite/rewriteHandler.c:2236 -#: rewrite/rewriteHandler.c:2243 +#: rewrite/rewriteHandler.c:2263 rewrite/rewriteHandler.c:2267 +#: rewrite/rewriteHandler.c:2274 msgid "" "Views that do not select from a single table or view are not automatically " "updatable." @@ -17438,27 +17246,27 @@ msgstr "" "ПредÑтавлениÑ, выбирающие данные не из одной таблицы или предÑтавлениÑ, не " "обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки." -#: rewrite/rewriteHandler.c:2246 +#: rewrite/rewriteHandler.c:2277 msgid "Views containing TABLESAMPLE are not automatically updatable." msgstr "ПредÑтавлениÑ, Ñодержащие TABLESAMPLE, не обновлÑÑŽÑ‚ÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки." -#: rewrite/rewriteHandler.c:2270 +#: rewrite/rewriteHandler.c:2301 msgid "Views that have no updatable columns are not automatically updatable." msgstr "" "ПредÑтавлениÑ, не Ñодержащие обновлÑемых Ñтолбцов, не обновлÑÑŽÑ‚ÑÑ " "автоматичеÑки." -#: rewrite/rewriteHandler.c:2724 +#: rewrite/rewriteHandler.c:2755 #, c-format msgid "cannot insert into column \"%s\" of view \"%s\"" msgstr "вÑтавить данные в Ñтолбец \"%s\" предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" нельзÑ" -#: rewrite/rewriteHandler.c:2732 +#: rewrite/rewriteHandler.c:2763 #, c-format msgid "cannot update column \"%s\" of view \"%s\"" msgstr "изменить данные в Ñтолбце \"%s\" предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" нельзÑ" -#: rewrite/rewriteHandler.c:3130 +#: rewrite/rewriteHandler.c:3161 #, c-format msgid "" "DO INSTEAD NOTHING rules are not supported for data-modifying statements in " @@ -17467,7 +17275,7 @@ msgstr "" "правила DO INSTEAD NOTHING не поддерживаютÑÑ Ð² операторах, изменÑющих " "данные, в WITH" -#: rewrite/rewriteHandler.c:3144 +#: rewrite/rewriteHandler.c:3175 #, c-format msgid "" "conditional DO INSTEAD rules are not supported for data-modifying statements " @@ -17476,13 +17284,13 @@ msgstr "" "уÑловные правила DO INSTEAD не поддерживаютÑÑ Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð², изменÑющих " "данные, в WITH" -#: rewrite/rewriteHandler.c:3148 +#: rewrite/rewriteHandler.c:3179 #, c-format msgid "DO ALSO rules are not supported for data-modifying statements in WITH" msgstr "" "правила DO ALSO не поддерживаютÑÑ Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð², изменÑющих данные, в WITH" -#: rewrite/rewriteHandler.c:3153 +#: rewrite/rewriteHandler.c:3184 #, c-format msgid "" "multi-statement DO INSTEAD rules are not supported for data-modifying " @@ -17491,43 +17299,43 @@ msgstr "" "ÑоÑтавные правила DO INSTEAD не поддерживаютÑÑ Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð², изменÑющих " "данные, в WITH" -#: rewrite/rewriteHandler.c:3368 +#: rewrite/rewriteHandler.c:3399 #, c-format msgid "cannot perform INSERT RETURNING on relation \"%s\"" msgstr "выполнить INSERT RETURNING Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" нельзÑ" -#: rewrite/rewriteHandler.c:3370 +#: rewrite/rewriteHandler.c:3401 #, c-format msgid "" "You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." msgstr "" "Ðеобходимо безуÑловное правило ON INSERT DO INSTEAD Ñ Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸ÐµÐ¼ RETURNING." -#: rewrite/rewriteHandler.c:3375 +#: rewrite/rewriteHandler.c:3406 #, c-format msgid "cannot perform UPDATE RETURNING on relation \"%s\"" msgstr "выполнить UPDATE RETURNING Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" нельзÑ" -#: rewrite/rewriteHandler.c:3377 +#: rewrite/rewriteHandler.c:3408 #, c-format msgid "" "You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause." msgstr "" "Ðеобходимо безуÑловное правило ON UPDATE DO INSTEAD Ñ Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸ÐµÐ¼ RETURNING." -#: rewrite/rewriteHandler.c:3382 +#: rewrite/rewriteHandler.c:3413 #, c-format msgid "cannot perform DELETE RETURNING on relation \"%s\"" msgstr "выполнить DELETE RETURNING Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ \"%s\" нельзÑ" -#: rewrite/rewriteHandler.c:3384 +#: rewrite/rewriteHandler.c:3415 #, c-format msgid "" "You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause." msgstr "" "Ðеобходимо безуÑловное правило ON DELETE DO INSTEAD Ñ Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸ÐµÐ¼ RETURNING." -#: rewrite/rewriteHandler.c:3402 +#: rewrite/rewriteHandler.c:3433 #, c-format msgid "" "INSERT with ON CONFLICT clause cannot be used with table that has INSERT or " @@ -17536,7 +17344,7 @@ msgstr "" "INSERT c предложением ON CONFLICT Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÐµÐ¹, Ð´Ð»Ñ " "которой заданы правила INSERT или UPDATE" -#: rewrite/rewriteHandler.c:3459 +#: rewrite/rewriteHandler.c:3490 #, c-format msgid "" "WITH cannot be used in a query that is rewritten by rules into multiple " @@ -17629,22 +17437,22 @@ msgstr "" msgid "invalid page in block %u of relation %s; zeroing out page" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñтраница в блоке %u Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ %s; Ñтраница обнулÑетÑÑ" -#: storage/buffer/bufmgr.c:3952 +#: storage/buffer/bufmgr.c:3969 #, c-format msgid "could not write block %u of %s" msgstr "не удалоÑÑŒ запиÑÑŒ блок %u файла %s" -#: storage/buffer/bufmgr.c:3954 +#: storage/buffer/bufmgr.c:3971 #, c-format msgid "Multiple failures --- write error might be permanent." msgstr "МножеÑтвенные Ñбои - возможно, поÑтоÑÐ½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° запиÑи." -#: storage/buffer/bufmgr.c:3975 storage/buffer/bufmgr.c:3994 +#: storage/buffer/bufmgr.c:3992 storage/buffer/bufmgr.c:4011 #, c-format msgid "writing block %u of relation %s" msgstr "запиÑÑŒ блока %u Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ %s" -#: storage/buffer/bufmgr.c:4295 +#: storage/buffer/bufmgr.c:4312 #, c-format msgid "snapshot too old" msgstr "Ñнимок Ñлишком Ñтар" @@ -17659,75 +17467,75 @@ msgstr "нет пуÑтого локального буфера" msgid "cannot access temporary tables during a parallel operation" msgstr "обращатьÑÑ Ðº временным таблицам во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð°Ñ€Ð°Ð»Ð»ÐµÐ»ÑŒÐ½Ñ‹Ñ… операций нельзÑ" -#: storage/file/fd.c:436 storage/file/fd.c:508 storage/file/fd.c:544 +#: storage/file/fd.c:443 storage/file/fd.c:515 storage/file/fd.c:551 #, c-format msgid "could not flush dirty data: %m" msgstr "не удалоÑÑŒ ÑброÑить грÑзные данные: %m" -#: storage/file/fd.c:466 +#: storage/file/fd.c:473 #, c-format msgid "could not determine dirty data size: %m" msgstr "не удалоÑÑŒ определить размер грÑзных данных: %m" -#: storage/file/fd.c:518 +#: storage/file/fd.c:525 #, c-format msgid "could not munmap() while flushing data: %m" msgstr "ошибка в munmap() при ÑброÑе данных на диÑк: %m" -#: storage/file/fd.c:682 +#: storage/file/fd.c:689 #, c-format msgid "could not link file \"%s\" to \"%s\": %m" msgstr "Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° \"%s\" не удалоÑÑŒ Ñоздать ÑÑылку \"%s\": %m" -#: storage/file/fd.c:776 +#: storage/file/fd.c:783 #, c-format msgid "getrlimit failed: %m" msgstr "ошибка в getrlimit(): %m" -#: storage/file/fd.c:866 +#: storage/file/fd.c:873 #, c-format msgid "insufficient file descriptors available to start server process" msgstr "недоÑтаточно деÑкрипторов файлов Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка Ñерверного процеÑÑа" -#: storage/file/fd.c:867 +#: storage/file/fd.c:874 #, c-format msgid "System allows %d, we need at least %d." msgstr "СиÑтема выделÑет: %d, а требуетÑÑ Ð¼Ð¸Ð½Ð¸Ð¼ÑƒÐ¼: %d." -#: storage/file/fd.c:908 storage/file/fd.c:2001 storage/file/fd.c:2094 -#: storage/file/fd.c:2242 +#: storage/file/fd.c:915 storage/file/fd.c:2078 storage/file/fd.c:2171 +#: storage/file/fd.c:2319 #, c-format msgid "out of file descriptors: %m; release and retry" msgstr "нехватка деÑкрипторов файлов: %m; оÑвободите их и повторите попытку" -#: storage/file/fd.c:1482 +#: storage/file/fd.c:1520 #, c-format msgid "temporary file: path \"%s\", size %lu" msgstr "временный файл: путь \"%s\", размер %lu" -#: storage/file/fd.c:1656 +#: storage/file/fd.c:1717 #, c-format msgid "temporary file size exceeds temp_file_limit (%dkB)" msgstr "размер временного файла превышает предел temp_file_limit (%d КБ)" -#: storage/file/fd.c:1977 storage/file/fd.c:2027 +#: storage/file/fd.c:2054 storage/file/fd.c:2104 #, c-format msgid "exceeded maxAllocatedDescs (%d) while trying to open file \"%s\"" msgstr "превышен предел maxAllocatedDescs (%d) при попытке открыть файл \"%s\"" -#: storage/file/fd.c:2067 +#: storage/file/fd.c:2144 #, c-format msgid "exceeded maxAllocatedDescs (%d) while trying to execute command \"%s\"" msgstr "" "превышен предел maxAllocatedDescs (%d) при попытке выполнить команду \"%s\"" -#: storage/file/fd.c:2218 +#: storage/file/fd.c:2295 #, c-format msgid "exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\"" msgstr "" "превышен предел maxAllocatedDescs (%d) при попытке открыть каталог \"%s\"" -#: storage/file/fd.c:2304 +#: storage/file/fd.c:2381 #, c-format msgid "could not read directory \"%s\": %m" msgstr "не удалоÑÑŒ прочитать каталог \"%s\": %m" @@ -17811,17 +17619,17 @@ msgstr "не удалоÑÑŒ Ñоздать Ñегмент разделÑемой msgid "could not duplicate handle for \"%s\": %m" msgstr "не удалоÑÑŒ продублировать указатель Ð´Ð»Ñ \"%s\": %m" -#: storage/ipc/latch.c:775 +#: storage/ipc/latch.c:841 #, c-format msgid "epoll_ctl() failed: %m" msgstr "ошибка в epoll_ctl(): %m" -#: storage/ipc/latch.c:999 +#: storage/ipc/latch.c:1065 #, c-format msgid "epoll_wait() failed: %m" msgstr "ошибка в epoll_wait(): %m" -#: storage/ipc/latch.c:1119 +#: storage/ipc/latch.c:1185 #, c-format msgid "poll() failed: %m" msgstr "ошибка в poll(): %m" @@ -17829,9 +17637,9 @@ msgstr "ошибка в poll(): %m" #: storage/ipc/shm_toc.c:108 storage/ipc/shm_toc.c:189 storage/ipc/shmem.c:212 #: storage/lmgr/lock.c:883 storage/lmgr/lock.c:917 storage/lmgr/lock.c:2682 #: storage/lmgr/lock.c:4007 storage/lmgr/lock.c:4072 storage/lmgr/lock.c:4364 -#: storage/lmgr/predicate.c:2329 storage/lmgr/predicate.c:2344 -#: storage/lmgr/predicate.c:3736 storage/lmgr/predicate.c:4879 -#: storage/lmgr/proc.c:203 utils/hash/dynahash.c:1043 +#: storage/lmgr/predicate.c:2342 storage/lmgr/predicate.c:2357 +#: storage/lmgr/predicate.c:3749 storage/lmgr/predicate.c:4892 +#: storage/lmgr/proc.c:203 utils/hash/dynahash.c:1042 #, c-format msgid "out of shared memory" msgstr "нехватка разделÑемой памÑти" @@ -17863,13 +17671,13 @@ msgstr "" msgid "requested shared memory size overflows size_t" msgstr "запрошенный размер разделÑемой памÑти не умещаетÑÑ Ð² size_t" -#: storage/ipc/standby.c:528 tcop/postgres.c:2976 +#: storage/ipc/standby.c:530 tcop/postgres.c:2974 #, c-format msgid "canceling statement due to conflict with recovery" msgstr "" "выполнение оператора отменено из-за конфликта Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑом воÑÑтановлениÑ" -#: storage/ipc/standby.c:529 tcop/postgres.c:2263 +#: storage/ipc/standby.c:531 tcop/postgres.c:2255 #, c-format msgid "User transaction caused buffer deadlock with recovery." msgstr "" @@ -18069,12 +17877,12 @@ msgstr "" "в пуле недоÑтаточно Ñлементов Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи о потенциальном конфликте чтениÑ/" "запиÑи" -#: storage/lmgr/predicate.c:909 +#: storage/lmgr/predicate.c:910 #, c-format msgid "memory for serializable conflict tracking is nearly exhausted" msgstr "памÑть Ð´Ð»Ñ Ð¾Ñ‚ÑÐ»ÐµÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚Ð¾Ð² Ñериализации практичеÑки иÑчерпана" -#: storage/lmgr/predicate.c:910 +#: storage/lmgr/predicate.c:911 #, c-format msgid "" "There might be an idle transaction or a forgotten prepared transaction " @@ -18083,7 +17891,7 @@ msgstr "" "ВероÑтно, Ñта ÑÐ¸Ñ‚ÑƒÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð·Ð²Ð°Ð½Ð° забытой подготовленной транзакцией или " "транзакцией, проÑтаивающей долгое времÑ." -#: storage/lmgr/predicate.c:1190 storage/lmgr/predicate.c:1261 +#: storage/lmgr/predicate.c:1205 storage/lmgr/predicate.c:1277 #, c-format msgid "" "not enough shared memory for elements of data structure \"%s\" (%zu bytes " @@ -18092,18 +17900,18 @@ msgstr "" "недоÑтаточно разделÑемой памÑти Ð´Ð»Ñ Ñлементов Ñтруктуры данных \"%s" "\" (запрошено байт: %zu)" -#: storage/lmgr/predicate.c:1549 +#: storage/lmgr/predicate.c:1562 #, c-format msgid "deferrable snapshot was unsafe; trying a new one" msgstr "откладываемый Ñнимок был небезопаÑен; пробуем более новый" -#: storage/lmgr/predicate.c:1588 +#: storage/lmgr/predicate.c:1601 #, c-format msgid "\"default_transaction_isolation\" is set to \"serializable\"." msgstr "" "Параметр \"default_transaction_isolation\" имеет значение \"serializable\"." -#: storage/lmgr/predicate.c:1589 +#: storage/lmgr/predicate.c:1602 #, c-format msgid "" "You can use \"SET default_transaction_isolation = 'repeatable read'\" to " @@ -18112,34 +17920,34 @@ msgstr "" "Чтобы изменить режим по умолчанию, выполните \"SET " "default_transaction_isolation = 'repeatable read'\"." -#: storage/lmgr/predicate.c:1628 +#: storage/lmgr/predicate.c:1641 #, c-format msgid "a snapshot-importing transaction must not be READ ONLY DEFERRABLE" msgstr "транзакциÑ, Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÑŽÑ‰Ð°Ñ Ñнимок, не должна быть READ ONLY DEFERRABLE" -#: storage/lmgr/predicate.c:1706 utils/time/snapmgr.c:576 -#: utils/time/snapmgr.c:582 +#: storage/lmgr/predicate.c:1719 utils/time/snapmgr.c:617 +#: utils/time/snapmgr.c:623 #, c-format msgid "could not import the requested snapshot" msgstr "не удалоÑÑŒ импортировать запрошенный Ñнимок" -#: storage/lmgr/predicate.c:1707 utils/time/snapmgr.c:583 +#: storage/lmgr/predicate.c:1720 utils/time/snapmgr.c:624 #, c-format msgid "The source transaction %u is not running anymore." msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ %u уже не выполнÑетÑÑ." -#: storage/lmgr/predicate.c:2330 storage/lmgr/predicate.c:2345 -#: storage/lmgr/predicate.c:3737 +#: storage/lmgr/predicate.c:2343 storage/lmgr/predicate.c:2358 +#: storage/lmgr/predicate.c:3750 #, c-format msgid "You might need to increase max_pred_locks_per_transaction." msgstr "" "Возможно, Ñледует увеличить значение параметра max_locks_per_transaction." -#: storage/lmgr/predicate.c:3891 storage/lmgr/predicate.c:3980 -#: storage/lmgr/predicate.c:3988 storage/lmgr/predicate.c:4027 -#: storage/lmgr/predicate.c:4266 storage/lmgr/predicate.c:4603 -#: storage/lmgr/predicate.c:4615 storage/lmgr/predicate.c:4657 -#: storage/lmgr/predicate.c:4695 +#: storage/lmgr/predicate.c:3904 storage/lmgr/predicate.c:3993 +#: storage/lmgr/predicate.c:4001 storage/lmgr/predicate.c:4040 +#: storage/lmgr/predicate.c:4279 storage/lmgr/predicate.c:4616 +#: storage/lmgr/predicate.c:4628 storage/lmgr/predicate.c:4670 +#: storage/lmgr/predicate.c:4708 #, c-format msgid "" "could not serialize access due to read/write dependencies among transactions" @@ -18147,31 +17955,31 @@ msgstr "" "не удалоÑÑŒ Ñериализовать доÑтуп из-за завиÑимоÑтей чтениÑ/запиÑи между " "транзакциÑми" -#: storage/lmgr/predicate.c:3893 storage/lmgr/predicate.c:3982 -#: storage/lmgr/predicate.c:3990 storage/lmgr/predicate.c:4029 -#: storage/lmgr/predicate.c:4268 storage/lmgr/predicate.c:4605 -#: storage/lmgr/predicate.c:4617 storage/lmgr/predicate.c:4659 -#: storage/lmgr/predicate.c:4697 +#: storage/lmgr/predicate.c:3906 storage/lmgr/predicate.c:3995 +#: storage/lmgr/predicate.c:4003 storage/lmgr/predicate.c:4042 +#: storage/lmgr/predicate.c:4281 storage/lmgr/predicate.c:4618 +#: storage/lmgr/predicate.c:4630 storage/lmgr/predicate.c:4672 +#: storage/lmgr/predicate.c:4710 #, c-format msgid "The transaction might succeed if retried." msgstr "Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ завершитьÑÑ ÑƒÑпешно при Ñледующей попытке." -#: storage/lmgr/proc.c:1263 +#: storage/lmgr/proc.c:1265 #, c-format msgid "Process %d waits for %s on %s." msgstr "ПроцеÑÑ %d ожидает в режиме %s блокировку %s." -#: storage/lmgr/proc.c:1274 +#: storage/lmgr/proc.c:1276 #, c-format msgid "sending cancel to blocking autovacuum PID %d" msgstr "ÑнÑтие блокирующего процеÑÑа автоочиÑтки (PID %d)" -#: storage/lmgr/proc.c:1292 utils/adt/misc.c:270 +#: storage/lmgr/proc.c:1294 utils/adt/misc.c:270 #, c-format msgid "could not send signal to process %d: %m" msgstr "отправить Ñигнал процеÑÑу %d не удалоÑÑŒ: %m" -#: storage/lmgr/proc.c:1394 +#: storage/lmgr/proc.c:1396 #, c-format msgid "" "process %d avoided deadlock for %s on %s by rearranging queue order after " @@ -18180,7 +17988,7 @@ msgstr "" "процеÑÑ %d избежал взаимоблокировки, Ð¾Ð¶Ð¸Ð´Ð°Ñ Ð² режиме %s блокировку \"%s\", " "изменив порÑдок очереди через %ld.%03d мÑ" -#: storage/lmgr/proc.c:1409 +#: storage/lmgr/proc.c:1411 #, c-format msgid "" "process %d detected deadlock while waiting for %s on %s after %ld.%03d ms" @@ -18188,19 +17996,19 @@ msgstr "" "процеÑÑ %d обнаружил взаимоблокировку, Ð¾Ð¶Ð¸Ð´Ð°Ñ Ð² режиме %s блокировку \"%s\" " "в течение %ld.%03d мÑ" -#: storage/lmgr/proc.c:1418 +#: storage/lmgr/proc.c:1420 #, c-format msgid "process %d still waiting for %s on %s after %ld.%03d ms" msgstr "" "процеÑÑ %d продолжает ожидать в режиме %s блокировку \"%s\" в течение %ld." "%03d мÑ" -#: storage/lmgr/proc.c:1425 +#: storage/lmgr/proc.c:1427 #, c-format msgid "process %d acquired %s on %s after %ld.%03d ms" msgstr "процеÑÑ %d получил в режиме %s блокировку \"%s\" через %ld.%03d мÑ" -#: storage/lmgr/proc.c:1441 +#: storage/lmgr/proc.c:1443 #, c-format msgid "process %d failed to acquire %s on %s after %ld.%03d ms" msgstr "" @@ -18210,7 +18018,7 @@ msgstr "" #, c-format msgid "page verification failed, calculated checksum %u but expected %u" msgstr "" -"ошибка проверки Ñтраницы: получена ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма %u, а ожидалаÑÑŒ — %u" +"ошибка проверки Ñтраницы: получена ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма %u, а ожидалаÑÑŒ - %u" #: storage/page/bufpage.c:203 storage/page/bufpage.c:522 #: storage/page/bufpage.c:737 storage/page/bufpage.c:868 @@ -18231,12 +18039,12 @@ msgstr "иÑпорченный указатель Ñлемента: %u" msgid "corrupted item lengths: total %u, available space %u" msgstr "иÑпорченный размер Ñлемента (общий размер: %u, доÑтупно: %u)" -#: storage/page/bufpage.c:756 storage/page/bufpage.c:892 +#: storage/page/bufpage.c:756 #, c-format msgid "corrupted item pointer: offset = %u, size = %u" msgstr "иÑпорченный указатель Ñлемента: Ñмещение = %u, размер = %u" -#: storage/page/bufpage.c:997 +#: storage/page/bufpage.c:892 storage/page/bufpage.c:997 #, c-format msgid "corrupted item pointer: offset = %u, length = %u" msgstr "иÑпорченный указатель Ñлемента: Ñмещение = %u, длина = %u" @@ -18329,14 +18137,14 @@ msgstr "" msgid "could not open file \"%s\" (target block %u): %m" msgstr "не удалоÑÑŒ открыть файл file \"%s\" (целевой блок %u): %m" -#: tcop/fastpath.c:111 tcop/fastpath.c:475 tcop/fastpath.c:605 +#: tcop/fastpath.c:111 tcop/fastpath.c:463 tcop/fastpath.c:593 #, c-format msgid "invalid argument size %d in function call message" msgstr "неверный размер аргумента (%d) в Ñообщении вызова функции" -#: tcop/fastpath.c:291 tcop/postgres.c:992 tcop/postgres.c:1301 -#: tcop/postgres.c:1559 tcop/postgres.c:1964 tcop/postgres.c:2331 -#: tcop/postgres.c:2406 +#: tcop/fastpath.c:281 tcop/postgres.c:984 tcop/postgres.c:1293 +#: tcop/postgres.c:1551 tcop/postgres.c:1956 tcop/postgres.c:2323 +#: tcop/postgres.c:2398 #, c-format msgid "" "current transaction is aborted, commands ignored until end of transaction " @@ -18344,95 +18152,95 @@ msgid "" msgstr "" "Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð¿Ñ€ÐµÑ€Ð²Ð°Ð½Ð°, команды до конца блока транзакции игнорируютÑÑ" -#: tcop/fastpath.c:319 +#: tcop/fastpath.c:309 #, c-format msgid "fastpath function call: \"%s\" (OID %u)" msgstr "вызов функции fastpath: \"%s\" (OID %u)" -#: tcop/fastpath.c:401 tcop/postgres.c:1163 tcop/postgres.c:1426 -#: tcop/postgres.c:1805 tcop/postgres.c:2022 +#: tcop/fastpath.c:391 tcop/postgres.c:1155 tcop/postgres.c:1418 +#: tcop/postgres.c:1797 tcop/postgres.c:2014 #, c-format msgid "duration: %s ms" msgstr "продолжительноÑть: %s мÑ" -#: tcop/fastpath.c:405 +#: tcop/fastpath.c:395 #, c-format msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" msgstr "продолжительноÑть %s мÑ, вызов функции fastpath: \"%s\" (OID %u)" -#: tcop/fastpath.c:443 tcop/fastpath.c:570 +#: tcop/fastpath.c:431 tcop/fastpath.c:558 #, c-format msgid "function call message contains %d arguments but function requires %d" msgstr "" "Ñообщение вызова функции Ñодержит неверное чиÑло аргументов (%d, а требуетÑÑ " "%d)" -#: tcop/fastpath.c:451 +#: tcop/fastpath.c:439 #, c-format msgid "function call message contains %d argument formats but %d arguments" msgstr "" "Ñообщение вызова функции Ñодержит неверное чиÑло форматов (%d, а аргументов " "%d)" -#: tcop/fastpath.c:538 tcop/fastpath.c:621 +#: tcop/fastpath.c:526 tcop/fastpath.c:609 #, c-format msgid "incorrect binary data format in function argument %d" msgstr "неправильный формат двоичных данных в аргументе функции %d" -#: tcop/postgres.c:352 tcop/postgres.c:388 tcop/postgres.c:415 +#: tcop/postgres.c:344 tcop/postgres.c:380 tcop/postgres.c:407 #, c-format msgid "unexpected EOF on client connection" msgstr "неожиданный обрыв ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð¾Ð¼" -#: tcop/postgres.c:438 tcop/postgres.c:450 tcop/postgres.c:461 -#: tcop/postgres.c:473 tcop/postgres.c:4308 +#: tcop/postgres.c:430 tcop/postgres.c:442 tcop/postgres.c:453 +#: tcop/postgres.c:465 tcop/postgres.c:4300 #, c-format msgid "invalid frontend message type %d" msgstr "неправильный тип клиентÑкого ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ %d" -#: tcop/postgres.c:933 +#: tcop/postgres.c:925 #, c-format msgid "statement: %s" msgstr "оператор: %s" -#: tcop/postgres.c:1168 +#: tcop/postgres.c:1160 #, c-format msgid "duration: %s ms statement: %s" msgstr "продолжительноÑть: %s мÑ, оператор: %s" -#: tcop/postgres.c:1218 +#: tcop/postgres.c:1210 #, c-format msgid "parse %s: %s" msgstr "разбор %s: %s" -#: tcop/postgres.c:1274 +#: tcop/postgres.c:1266 #, c-format msgid "cannot insert multiple commands into a prepared statement" msgstr "в подготовленный оператор Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñтавить неÑколько команд" -#: tcop/postgres.c:1431 +#: tcop/postgres.c:1423 #, c-format msgid "duration: %s ms parse %s: %s" msgstr "продолжительноÑть: %s мÑ, разбор %s: %s" -#: tcop/postgres.c:1476 +#: tcop/postgres.c:1468 #, c-format msgid "bind %s to %s" msgstr "привÑзка %s к %s" # [SM]: TO REVIEW -#: tcop/postgres.c:1495 tcop/postgres.c:2312 +#: tcop/postgres.c:1487 tcop/postgres.c:2304 #, c-format msgid "unnamed prepared statement does not exist" msgstr "безымÑнный подготовленный оператор не ÑущеÑтвует" -#: tcop/postgres.c:1537 +#: tcop/postgres.c:1529 #, c-format msgid "bind message has %d parameter formats but %d parameters" msgstr "" "неверное чиÑло форматов параметров в Ñообщении Bind (%d, а параметров %d)" -#: tcop/postgres.c:1543 +#: tcop/postgres.c:1535 #, c-format msgid "" "bind message supplies %d parameters, but prepared statement \"%s\" requires " @@ -18441,88 +18249,88 @@ msgstr "" "в Ñообщении Bind передано неверное чиÑло параметров (%d, а подготовленный " "оператор \"%s\" требует %d)" -#: tcop/postgres.c:1712 +#: tcop/postgres.c:1704 #, c-format msgid "incorrect binary data format in bind parameter %d" -msgstr "неверный формат двоичных данных в параметре Ð’ind %d" +msgstr "неверный формат двоичных данных в параметре Bind %d" -#: tcop/postgres.c:1810 +#: tcop/postgres.c:1802 #, c-format msgid "duration: %s ms bind %s%s%s: %s" msgstr "продолжительноÑть: %s мÑ, Ñообщение Bind %s%s%s: %s" -#: tcop/postgres.c:1858 tcop/postgres.c:2392 +#: tcop/postgres.c:1850 tcop/postgres.c:2384 #, c-format msgid "portal \"%s\" does not exist" msgstr "портал \"%s\" не ÑущеÑтвует" -#: tcop/postgres.c:1943 +#: tcop/postgres.c:1935 #, c-format msgid "%s %s%s%s: %s" msgstr "%s %s%s%s: %s" -#: tcop/postgres.c:1945 tcop/postgres.c:2030 +#: tcop/postgres.c:1937 tcop/postgres.c:2022 msgid "execute fetch from" msgstr "выборка из" -#: tcop/postgres.c:1946 tcop/postgres.c:2031 +#: tcop/postgres.c:1938 tcop/postgres.c:2023 msgid "execute" msgstr "выполнение" -#: tcop/postgres.c:2027 +#: tcop/postgres.c:2019 #, c-format msgid "duration: %s ms %s %s%s%s: %s" msgstr "продолжительноÑть: %s Ð¼Ñ %s %s%s%s: %s" -#: tcop/postgres.c:2153 +#: tcop/postgres.c:2145 #, c-format msgid "prepare: %s" msgstr "подготовка: %s" -#: tcop/postgres.c:2216 +#: tcop/postgres.c:2208 #, c-format msgid "parameters: %s" msgstr "параметры: %s" -#: tcop/postgres.c:2235 +#: tcop/postgres.c:2227 #, c-format msgid "abort reason: recovery conflict" msgstr "причина прерываниÑ: конфликт при воÑÑтановлении" -#: tcop/postgres.c:2251 +#: tcop/postgres.c:2243 #, c-format msgid "User was holding shared buffer pin for too long." msgstr "Пользователь удерживал фикÑатор разделÑемого буфера Ñлишком долго." -#: tcop/postgres.c:2254 +#: tcop/postgres.c:2246 #, c-format msgid "User was holding a relation lock for too long." msgstr "Пользователь удерживал блокировку таблицы Ñлишком долго." -#: tcop/postgres.c:2257 +#: tcop/postgres.c:2249 #, c-format msgid "User was or might have been using tablespace that must be dropped." msgstr "" "Пользователь иÑпользовал табличное проÑтранÑтво, которое должно быть удалено." -#: tcop/postgres.c:2260 +#: tcop/postgres.c:2252 #, c-format msgid "User query might have needed to see row versions that must be removed." msgstr "" "ЗапроÑу Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½ÑƒÐ¶Ð½Ð¾ было видеть верÑии Ñтрок, которые должны быть " "удалены." -#: tcop/postgres.c:2266 +#: tcop/postgres.c:2258 #, c-format msgid "User was connected to a database that must be dropped." -msgstr "Пользователь был подключен к базе данных, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° быть удалена." +msgstr "Пользователь был подключён к базе данных, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° быть удалена." -#: tcop/postgres.c:2595 +#: tcop/postgres.c:2587 #, c-format msgid "terminating connection because of crash of another server process" msgstr "закрытие Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð·-за краха другого Ñерверного процеÑÑа" -#: tcop/postgres.c:2596 +#: tcop/postgres.c:2588 #, c-format msgid "" "The postmaster has commanded this server process to roll back the current " @@ -18533,7 +18341,7 @@ msgstr "" "транзакцию и завершитьÑÑ, так как другой Ñерверный процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»ÑÑ " "аварийно и возможно разрушил разделÑемую памÑть." -#: tcop/postgres.c:2600 tcop/postgres.c:2904 +#: tcop/postgres.c:2592 tcop/postgres.c:2902 #, c-format msgid "" "In a moment you should be able to reconnect to the database and repeat your " @@ -18542,12 +18350,12 @@ msgstr "" "Ð’Ñ‹ Ñможете переподключитьÑÑ Ðº базе данных и повторить вашу команду Ñию " "минуту." -#: tcop/postgres.c:2686 +#: tcop/postgres.c:2678 #, c-format msgid "floating-point exception" msgstr "иÑключение в операции Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой" -#: tcop/postgres.c:2687 +#: tcop/postgres.c:2679 #, c-format msgid "" "An invalid floating-point operation was signaled. This probably means an out-" @@ -18557,62 +18365,62 @@ msgstr "" "оказалÑÑ Ð²Ð½Ðµ допуÑтимых рамок или произошла ошибка вычиÑлениÑ, например, " "деление на ноль." -#: tcop/postgres.c:2849 +#: tcop/postgres.c:2847 #, c-format msgid "canceling authentication due to timeout" msgstr "отмена проверки подлинноÑти из-за таймаута" -#: tcop/postgres.c:2853 +#: tcop/postgres.c:2851 #, c-format msgid "terminating autovacuum process due to administrator command" msgstr "прекращение процеÑÑа автоочиÑтки по команде админиÑтратора" -#: tcop/postgres.c:2859 tcop/postgres.c:2869 tcop/postgres.c:2902 +#: tcop/postgres.c:2857 tcop/postgres.c:2867 tcop/postgres.c:2900 #, c-format msgid "terminating connection due to conflict with recovery" msgstr "закрытие Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð·-за конфликта Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑом воÑÑтановлениÑ" -#: tcop/postgres.c:2875 +#: tcop/postgres.c:2873 #, c-format msgid "terminating connection due to administrator command" msgstr "закрытие Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ команде админиÑтратора" -#: tcop/postgres.c:2885 +#: tcop/postgres.c:2883 #, c-format msgid "connection to client lost" msgstr "подключение к клиенту потерÑно" -#: tcop/postgres.c:2953 +#: tcop/postgres.c:2951 #, c-format msgid "canceling statement due to lock timeout" msgstr "выполнение оператора отменено из-за таймаута блокировки" -#: tcop/postgres.c:2960 +#: tcop/postgres.c:2958 #, c-format msgid "canceling statement due to statement timeout" msgstr "выполнение оператора отменено из-за таймаута" -#: tcop/postgres.c:2967 +#: tcop/postgres.c:2965 #, c-format msgid "canceling autovacuum task" msgstr "отмена задачи автоочиÑтки" -#: tcop/postgres.c:2990 +#: tcop/postgres.c:2988 #, c-format msgid "canceling statement due to user request" msgstr "выполнение оператора отменено по запроÑу пользователÑ" -#: tcop/postgres.c:3000 +#: tcop/postgres.c:2998 #, c-format msgid "terminating connection due to idle-in-transaction timeout" msgstr "закрытие Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð·-за таймаута проÑÑ‚Ð¾Ñ Ð² транзакции" -#: tcop/postgres.c:3114 +#: tcop/postgres.c:3112 #, c-format msgid "stack depth limit exceeded" msgstr "превышен предел глубины Ñтека" -#: tcop/postgres.c:3115 +#: tcop/postgres.c:3113 #, c-format msgid "" "Increase the configuration parameter \"max_stack_depth\" (currently %dkB), " @@ -18622,12 +18430,12 @@ msgstr "" "КБ), предварительно убедившиÑÑŒ, что ОС предоÑтавлÑет доÑтаточный размер " "Ñтека." -#: tcop/postgres.c:3178 +#: tcop/postgres.c:3176 #, c-format msgid "\"max_stack_depth\" must not exceed %ldkB." msgstr "Значение \"max_stack_depth\" не должно превышать %ld КБ." -#: tcop/postgres.c:3180 +#: tcop/postgres.c:3178 #, c-format msgid "" "Increase the platform's stack depth limit via \"ulimit -s\" or local " @@ -18636,48 +18444,48 @@ msgstr "" "Увеличьте предел глубины Ñтека в ÑиÑтеме Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ команды \"ulimit -s\" или " "Ñквивалента в вашей ОС." -#: tcop/postgres.c:3540 +#: tcop/postgres.c:3538 #, c-format msgid "invalid command-line argument for server process: %s" msgstr "неверный аргумент командной Ñтроки Ð´Ð»Ñ Ñерверного процеÑÑа: %s" -#: tcop/postgres.c:3541 tcop/postgres.c:3547 +#: tcop/postgres.c:3539 tcop/postgres.c:3545 #, c-format msgid "Try \"%s --help\" for more information." msgstr "Ð”Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации попробуйте \"%s --help\"." -#: tcop/postgres.c:3545 +#: tcop/postgres.c:3543 #, c-format msgid "%s: invalid command-line argument: %s" msgstr "%s: неверный аргумент командной Ñтроки: %s" -#: tcop/postgres.c:3607 +#: tcop/postgres.c:3605 #, c-format msgid "%s: no database nor user name specified" msgstr "%s: не указаны ни база данных, ни пользователь" -#: tcop/postgres.c:4216 +#: tcop/postgres.c:4208 #, c-format msgid "invalid CLOSE message subtype %d" msgstr "неверный подтип ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ CLOSE: %d" -#: tcop/postgres.c:4251 +#: tcop/postgres.c:4243 #, c-format msgid "invalid DESCRIBE message subtype %d" msgstr "неверный подтип ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ DESCRIBE: %d" -#: tcop/postgres.c:4329 +#: tcop/postgres.c:4321 #, c-format msgid "fastpath function calls not supported in a replication connection" msgstr "вызовы функции fastpath не поддерживаютÑÑ Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸Ñ†Ð¸Ñ€ÑƒÑŽÑ‰Ð¸Ñ… Ñоединений" -#: tcop/postgres.c:4333 +#: tcop/postgres.c:4325 #, c-format msgid "extended query protocol not supported in a replication connection" msgstr "" "протокол раÑширенных запроÑов не поддерживаетÑÑ Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸Ñ†Ð¸Ñ€ÑƒÑŽÑ‰Ð¸Ñ… Ñоединений" -#: tcop/postgres.c:4503 +#: tcop/postgres.c:4495 #, c-format msgid "" "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s" @@ -18690,7 +18498,7 @@ msgstr "" #, c-format msgid "bind message has %d result formats but query has %d columns" msgstr "" -"чиÑло форматов результатов в Ñообщении Ð’ind (%d) не равно чиÑлу Ñтолбцов в " +"чиÑло форматов результатов в Ñообщении Bind (%d) не равно чиÑлу Ñтолбцов в " "запроÑе (%d)" #: tcop/pquery.c:967 @@ -18888,7 +18696,7 @@ msgid "invalid regular expression: %s" msgstr "неверное регулÑрное выражение: %s" #: tsearch/spell.c:954 tsearch/spell.c:971 tsearch/spell.c:988 -#: tsearch/spell.c:1005 tsearch/spell.c:1070 gram.y:14392 gram.y:14409 +#: tsearch/spell.c:1005 tsearch/spell.c:1070 gram.y:14414 gram.y:14431 #, c-format msgid "syntax error" msgstr "ошибка ÑинтакÑиÑа" @@ -18922,7 +18730,7 @@ msgstr "неверное количеÑтво векторов флагов" msgid "affix file contains both old-style and new-style commands" msgstr "файл аффикÑов Ñодержит команды и в Ñтаром, и в новом Ñтиле" -#: tsearch/to_tsany.c:170 utils/adt/tsvector.c:270 utils/adt/tsvector_op.c:1132 +#: tsearch/to_tsany.c:170 utils/adt/tsvector.c:270 utils/adt/tsvector_op.c:1133 #, c-format msgid "string is too long for tsvector (%d bytes, max %d bytes)" msgstr "Ñтрока Ñлишком длинна Ð´Ð»Ñ tsvector (%d Б, при макÑимуме %d)" @@ -19082,15 +18890,15 @@ msgstr "aclinsert больше не поддерживаетÑÑ" #: utils/adt/acl.c:1547 #, c-format msgid "aclremove is no longer supported" -msgstr "aclremove больше не поддерживаетÑÑ " +msgstr "aclremove больше не поддерживаетÑÑ" #: utils/adt/acl.c:1633 utils/adt/acl.c:1687 #, c-format msgid "unrecognized privilege type: \"%s\"" msgstr "нераÑпознанный тип прав: \"%s\"" -#: utils/adt/acl.c:3427 utils/adt/regproc.c:123 utils/adt/regproc.c:144 -#: utils/adt/regproc.c:319 +#: utils/adt/acl.c:3427 utils/adt/regproc.c:124 utils/adt/regproc.c:145 +#: utils/adt/regproc.c:320 #, c-format msgid "function \"%s\" does not exist" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" не ÑущеÑтвует" @@ -19102,27 +18910,27 @@ msgstr "нужно быть членом роли \"%s\"" #: utils/adt/array_expanded.c:274 utils/adt/arrayfuncs.c:931 #: utils/adt/arrayfuncs.c:1519 utils/adt/arrayfuncs.c:3251 -#: utils/adt/arrayfuncs.c:3389 utils/adt/arrayfuncs.c:5860 -#: utils/adt/arrayfuncs.c:6171 utils/adt/arrayutils.c:93 +#: utils/adt/arrayfuncs.c:3389 utils/adt/arrayfuncs.c:5848 +#: utils/adt/arrayfuncs.c:6159 utils/adt/arrayutils.c:93 #: utils/adt/arrayutils.c:102 utils/adt/arrayutils.c:109 #, c-format msgid "array size exceeds the maximum allowed (%d)" msgstr "размер маÑÑива превышает предел (%d)" -#: utils/adt/array_userfuncs.c:67 utils/adt/array_userfuncs.c:529 -#: utils/adt/array_userfuncs.c:609 utils/adt/json.c:1759 utils/adt/json.c:1854 +#: utils/adt/array_userfuncs.c:79 utils/adt/array_userfuncs.c:541 +#: utils/adt/array_userfuncs.c:621 utils/adt/json.c:1759 utils/adt/json.c:1854 #: utils/adt/json.c:1892 utils/adt/jsonb.c:1126 utils/adt/jsonb.c:1155 #: utils/adt/jsonb.c:1591 utils/adt/jsonb.c:1755 utils/adt/jsonb.c:1765 #, c-format msgid "could not determine input data type" msgstr "не удалоÑÑŒ определить тип входных данных" -#: utils/adt/array_userfuncs.c:72 +#: utils/adt/array_userfuncs.c:84 #, c-format msgid "input data type is not an array" msgstr "тип входных данных не ÑвлÑетÑÑ Ð¼Ð°ÑÑивом" -#: utils/adt/array_userfuncs.c:120 utils/adt/array_userfuncs.c:174 +#: utils/adt/array_userfuncs.c:132 utils/adt/array_userfuncs.c:186 #: utils/adt/arrayfuncs.c:1322 utils/adt/float.c:1228 utils/adt/float.c:1287 #: utils/adt/float.c:3556 utils/adt/float.c:3572 utils/adt/int.c:623 #: utils/adt/int.c:652 utils/adt/int.c:673 utils/adt/int.c:704 @@ -19130,59 +18938,59 @@ msgstr "тип входных данных не ÑвлÑетÑÑ Ð¼Ð°ÑÑиво #: utils/adt/int.c:928 utils/adt/int.c:955 utils/adt/int.c:995 #: utils/adt/int.c:1016 utils/adt/int.c:1043 utils/adt/int.c:1076 #: utils/adt/int.c:1159 utils/adt/int8.c:1298 utils/adt/numeric.c:2903 -#: utils/adt/numeric.c:2912 utils/adt/varbit.c:1173 utils/adt/varbit.c:1565 +#: utils/adt/numeric.c:2912 utils/adt/varbit.c:1173 utils/adt/varbit.c:1575 #: utils/adt/varlena.c:1055 utils/adt/varlena.c:2807 #, c-format msgid "integer out of range" msgstr "целое вне диапазона" -#: utils/adt/array_userfuncs.c:127 utils/adt/array_userfuncs.c:184 +#: utils/adt/array_userfuncs.c:139 utils/adt/array_userfuncs.c:196 #, c-format msgid "argument must be empty or one-dimensional array" msgstr "аргумент должен быть одномерным маÑÑивом или пуÑтым" -#: utils/adt/array_userfuncs.c:266 utils/adt/array_userfuncs.c:305 -#: utils/adt/array_userfuncs.c:342 utils/adt/array_userfuncs.c:371 -#: utils/adt/array_userfuncs.c:399 +#: utils/adt/array_userfuncs.c:278 utils/adt/array_userfuncs.c:317 +#: utils/adt/array_userfuncs.c:354 utils/adt/array_userfuncs.c:383 +#: utils/adt/array_userfuncs.c:411 #, c-format msgid "cannot concatenate incompatible arrays" msgstr "ÑоединÑть неÑовмеÑтимые маÑÑивы нельзÑ" -#: utils/adt/array_userfuncs.c:267 +#: utils/adt/array_userfuncs.c:279 #, c-format msgid "" "Arrays with element types %s and %s are not compatible for concatenation." msgstr "МаÑÑивы Ñ Ñлементами типов %s и %s неÑовмеÑтимы Ð´Ð»Ñ ÑоединениÑ." -#: utils/adt/array_userfuncs.c:306 +#: utils/adt/array_userfuncs.c:318 #, c-format msgid "Arrays of %d and %d dimensions are not compatible for concatenation." msgstr "МаÑÑивы Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð½Ð¾ÑÑ‚Ñми %d и %d неÑовмеÑтимы Ð´Ð»Ñ ÑоединениÑ." -#: utils/adt/array_userfuncs.c:343 +#: utils/adt/array_userfuncs.c:355 #, c-format msgid "" "Arrays with differing element dimensions are not compatible for " "concatenation." msgstr "МаÑÑивы Ñ Ñ€Ð°Ð·Ð½Ñ‹Ð¼Ð¸ размерноÑÑ‚Ñми Ñлементов неÑовмеÑтимы Ð´Ð»Ñ ÑоединениÑ." -#: utils/adt/array_userfuncs.c:372 utils/adt/array_userfuncs.c:400 +#: utils/adt/array_userfuncs.c:384 utils/adt/array_userfuncs.c:412 #, c-format msgid "Arrays with differing dimensions are not compatible for concatenation." msgstr "МаÑÑивы Ñ Ñ€Ð°Ð·Ð½Ñ‹Ð¼Ð¸ размерноÑÑ‚Ñми неÑовмеÑтимы Ð´Ð»Ñ ÑоединениÑ." -#: utils/adt/array_userfuncs.c:468 utils/adt/arrayfuncs.c:1284 -#: utils/adt/arrayfuncs.c:3357 utils/adt/arrayfuncs.c:5760 +#: utils/adt/array_userfuncs.c:480 utils/adt/arrayfuncs.c:1284 +#: utils/adt/arrayfuncs.c:3357 utils/adt/arrayfuncs.c:5754 #, c-format msgid "invalid number of dimensions: %d" msgstr "неверное чиÑло размерноÑтей: %d" -#: utils/adt/array_userfuncs.c:725 utils/adt/array_userfuncs.c:876 +#: utils/adt/array_userfuncs.c:737 utils/adt/array_userfuncs.c:889 #, c-format msgid "searching for elements in multidimensional arrays is not supported" msgstr "поиÑк Ñлементов в многомерных маÑÑивах не поддерживаетÑÑ" -#: utils/adt/array_userfuncs.c:749 +#: utils/adt/array_userfuncs.c:761 #, c-format msgid "initial position must not be null" msgstr "Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð½Ðµ может быть NULL" @@ -19309,7 +19117,7 @@ msgstr "разрезание маÑÑивов поÑтоÑнной длины н #: utils/adt/arrayfuncs.c:2230 utils/adt/arrayfuncs.c:2252 #: utils/adt/arrayfuncs.c:2301 utils/adt/arrayfuncs.c:2537 #: utils/adt/arrayfuncs.c:2848 utils/adt/arrayfuncs.c:5740 -#: utils/adt/arrayfuncs.c:5772 utils/adt/arrayfuncs.c:5789 +#: utils/adt/arrayfuncs.c:5766 utils/adt/arrayfuncs.c:5777 #: utils/adt/json.c:2290 utils/adt/json.c:2365 utils/adt/jsonb.c:1369 #: utils/adt/jsonb.c:1455 utils/adt/jsonfuncs.c:3529 utils/adt/jsonfuncs.c:3574 #: utils/adt/jsonfuncs.c:3621 @@ -19393,42 +19201,32 @@ msgstr "аккумулировать маÑÑивы различной разм msgid "dimension array or low bound array cannot be null" msgstr "маÑÑив размерноÑтей или маÑÑив нижних границ не может быть null" -#: utils/adt/arrayfuncs.c:5741 utils/adt/arrayfuncs.c:5773 +#: utils/adt/arrayfuncs.c:5741 utils/adt/arrayfuncs.c:5767 #, c-format msgid "Dimension array must be one dimensional." msgstr "МаÑÑив размерноÑтей должен быть одномерным." -#: utils/adt/arrayfuncs.c:5746 utils/adt/arrayfuncs.c:5778 -#, c-format -msgid "wrong range of array subscripts" -msgstr "неправильный диапазон индекÑов маÑÑивов" - -#: utils/adt/arrayfuncs.c:5747 utils/adt/arrayfuncs.c:5779 -#, c-format -msgid "Lower bound of dimension array must be one." -msgstr "ÐижнÑÑ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ð° маÑÑива размерноÑтей должна быть равна 1." - -#: utils/adt/arrayfuncs.c:5752 utils/adt/arrayfuncs.c:5784 +#: utils/adt/arrayfuncs.c:5746 utils/adt/arrayfuncs.c:5772 #, c-format msgid "dimension values cannot be null" msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð½Ð¾Ñтей не могут быть null" -#: utils/adt/arrayfuncs.c:5790 +#: utils/adt/arrayfuncs.c:5778 #, c-format msgid "Low bound array has different size than dimensions array." msgstr "МаÑÑив нижних границ и маÑÑив размерноÑтей имеют разные размеры." -#: utils/adt/arrayfuncs.c:6036 +#: utils/adt/arrayfuncs.c:6024 #, c-format msgid "removing elements from multidimensional arrays is not supported" msgstr "удаление Ñлементов из многомерных маÑÑивов не поддерживаетÑÑ" -#: utils/adt/arrayfuncs.c:6313 +#: utils/adt/arrayfuncs.c:6301 #, c-format msgid "thresholds must be one-dimensional array" msgstr "границы должны задаватьÑÑ Ð¾Ð´Ð½Ð¾Ð¼ÐµÑ€Ð½Ñ‹Ð¼ маÑÑивом" -#: utils/adt/arrayfuncs.c:6318 +#: utils/adt/arrayfuncs.c:6306 #, c-format msgid "thresholds array must not contain NULLs" msgstr "маÑÑив границ не должен Ñодержать NULL" @@ -19436,7 +19234,7 @@ msgstr "маÑÑив границ не должен Ñодержать NULL" #: utils/adt/arrayutils.c:209 #, c-format msgid "typmod array must be type cstring[]" -msgstr "маÑÑив typmod должен иметь тип cstring[] " +msgstr "маÑÑив typmod должен иметь тип cstring[]" #: utils/adt/arrayutils.c:214 #, c-format @@ -19471,7 +19269,7 @@ msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° money: \"%s\"" #: utils/adt/int.c:1097 utils/adt/int.c:1125 utils/adt/int8.c:597 #: utils/adt/int8.c:657 utils/adt/int8.c:897 utils/adt/int8.c:1005 #: utils/adt/int8.c:1094 utils/adt/int8.c:1202 utils/adt/numeric.c:6818 -#: utils/adt/numeric.c:7107 utils/adt/numeric.c:8120 utils/adt/timestamp.c:3446 +#: utils/adt/numeric.c:7107 utils/adt/numeric.c:8120 utils/adt/timestamp.c:3542 #, c-format msgid "division by zero" msgstr "деление на ноль" @@ -19481,7 +19279,7 @@ msgstr "деление на ноль" msgid "\"char\" out of range" msgstr "значение \"char\" вне диапазона" -#: utils/adt/date.c:67 utils/adt/timestamp.c:94 utils/adt/varbit.c:52 +#: utils/adt/date.c:67 utils/adt/timestamp.c:95 utils/adt/varbit.c:52 #: utils/adt/varchar.c:45 #, c-format msgid "invalid type modifier" @@ -19509,17 +19307,17 @@ msgid "date out of range: \"%s\"" msgstr "дата вне диапазона: \"%s\"" #: utils/adt/date.c:222 utils/adt/date.c:456 utils/adt/date.c:480 -#: utils/adt/xml.c:2027 +#: utils/adt/xml.c:2031 #, c-format msgid "date out of range" msgstr "дата вне диапазона" -#: utils/adt/date.c:264 utils/adt/timestamp.c:593 +#: utils/adt/date.c:264 utils/adt/timestamp.c:594 #, c-format msgid "date field value out of range: %d-%02d-%02d" msgstr "значение Ð¿Ð¾Ð»Ñ Ñ‚Ð¸Ð¿Ð° date вне диапазона: %d-%02d-%02d" -#: utils/adt/date.c:271 utils/adt/date.c:280 utils/adt/timestamp.c:599 +#: utils/adt/date.c:271 utils/adt/date.c:280 utils/adt/timestamp.c:600 #, c-format msgid "date out of range: %d-%02d-%02d" msgstr "дата вне диапазона: %d-%02d-%02d" @@ -19541,28 +19339,28 @@ msgstr "дата вне диапазона Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° timestamp" #: utils/adt/formatting.c:3436 utils/adt/formatting.c:3504 #: utils/adt/json.c:1534 utils/adt/json.c:1556 utils/adt/jsonb.c:823 #: utils/adt/jsonb.c:847 utils/adt/nabstime.c:455 utils/adt/nabstime.c:498 -#: utils/adt/nabstime.c:528 utils/adt/nabstime.c:571 utils/adt/timestamp.c:224 -#: utils/adt/timestamp.c:268 utils/adt/timestamp.c:726 -#: utils/adt/timestamp.c:735 utils/adt/timestamp.c:820 -#: utils/adt/timestamp.c:860 utils/adt/timestamp.c:3021 -#: utils/adt/timestamp.c:3042 utils/adt/timestamp.c:3055 -#: utils/adt/timestamp.c:3064 utils/adt/timestamp.c:3072 -#: utils/adt/timestamp.c:3127 utils/adt/timestamp.c:3150 -#: utils/adt/timestamp.c:3163 utils/adt/timestamp.c:3174 -#: utils/adt/timestamp.c:3182 utils/adt/timestamp.c:3756 -#: utils/adt/timestamp.c:3885 utils/adt/timestamp.c:3926 -#: utils/adt/timestamp.c:4014 utils/adt/timestamp.c:4060 -#: utils/adt/timestamp.c:4171 utils/adt/timestamp.c:4578 -#: utils/adt/timestamp.c:4694 utils/adt/timestamp.c:4704 -#: utils/adt/timestamp.c:4800 utils/adt/timestamp.c:4919 -#: utils/adt/timestamp.c:4929 utils/adt/timestamp.c:5250 -#: utils/adt/timestamp.c:5264 utils/adt/timestamp.c:5269 -#: utils/adt/timestamp.c:5283 utils/adt/timestamp.c:5366 -#: utils/adt/timestamp.c:5398 utils/adt/timestamp.c:5405 -#: utils/adt/timestamp.c:5431 utils/adt/timestamp.c:5435 -#: utils/adt/timestamp.c:5504 utils/adt/timestamp.c:5508 -#: utils/adt/timestamp.c:5522 utils/adt/timestamp.c:5560 utils/adt/xml.c:2049 -#: utils/adt/xml.c:2056 utils/adt/xml.c:2076 utils/adt/xml.c:2083 +#: utils/adt/nabstime.c:528 utils/adt/nabstime.c:571 utils/adt/timestamp.c:225 +#: utils/adt/timestamp.c:269 utils/adt/timestamp.c:727 +#: utils/adt/timestamp.c:736 utils/adt/timestamp.c:818 +#: utils/adt/timestamp.c:858 utils/adt/timestamp.c:3117 +#: utils/adt/timestamp.c:3138 utils/adt/timestamp.c:3151 +#: utils/adt/timestamp.c:3160 utils/adt/timestamp.c:3168 +#: utils/adt/timestamp.c:3223 utils/adt/timestamp.c:3246 +#: utils/adt/timestamp.c:3259 utils/adt/timestamp.c:3270 +#: utils/adt/timestamp.c:3278 utils/adt/timestamp.c:3852 +#: utils/adt/timestamp.c:3981 utils/adt/timestamp.c:4022 +#: utils/adt/timestamp.c:4110 utils/adt/timestamp.c:4156 +#: utils/adt/timestamp.c:4267 utils/adt/timestamp.c:4674 +#: utils/adt/timestamp.c:4790 utils/adt/timestamp.c:4800 +#: utils/adt/timestamp.c:4896 utils/adt/timestamp.c:5015 +#: utils/adt/timestamp.c:5025 utils/adt/timestamp.c:5277 +#: utils/adt/timestamp.c:5291 utils/adt/timestamp.c:5296 +#: utils/adt/timestamp.c:5310 utils/adt/timestamp.c:5359 +#: utils/adt/timestamp.c:5391 utils/adt/timestamp.c:5398 +#: utils/adt/timestamp.c:5424 utils/adt/timestamp.c:5428 +#: utils/adt/timestamp.c:5497 utils/adt/timestamp.c:5501 +#: utils/adt/timestamp.c:5515 utils/adt/timestamp.c:5553 utils/adt/xml.c:2053 +#: utils/adt/xml.c:2060 utils/adt/xml.c:2080 utils/adt/xml.c:2087 #, c-format msgid "timestamp out of range" msgstr "timestamp вне диапазона" @@ -19583,7 +19381,7 @@ msgstr "abstime вне диапазона Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° даты" msgid "time out of range" msgstr "Ð²Ñ€ÐµÐ¼Ñ Ð²Ð½Ðµ диапазона" -#: utils/adt/date.c:1326 utils/adt/timestamp.c:618 +#: utils/adt/date.c:1326 utils/adt/timestamp.c:619 #, c-format msgid "time field value out of range: %d:%02d:%02g" msgstr "значение Ð¿Ð¾Ð»Ñ Ñ‚Ð¸Ð¿Ð° time вне диапазона: %d:%02d:%02g" @@ -19604,14 +19402,14 @@ msgid "\"time with time zone\" units \"%s\" not recognized" msgstr "\"Ð²Ñ€ÐµÐ¼Ñ Ñ Ñ‡Ð°Ñовым поÑÑом\" Ñодержит нераÑпознанные единицы \"%s\"" #: utils/adt/date.c:2830 utils/adt/datetime.c:995 utils/adt/datetime.c:1917 -#: utils/adt/datetime.c:4743 utils/adt/timestamp.c:532 -#: utils/adt/timestamp.c:559 utils/adt/timestamp.c:5275 -#: utils/adt/timestamp.c:5514 +#: utils/adt/datetime.c:4743 utils/adt/timestamp.c:533 +#: utils/adt/timestamp.c:560 utils/adt/timestamp.c:5302 +#: utils/adt/timestamp.c:5507 #, c-format msgid "time zone \"%s\" not recognized" msgstr "чаÑовой поÑÑ \"%s\" не раÑпознан" -#: utils/adt/date.c:2870 utils/adt/timestamp.c:5351 utils/adt/timestamp.c:5545 +#: utils/adt/date.c:2870 utils/adt/timestamp.c:5344 utils/adt/timestamp.c:5538 #, c-format msgid "interval time zone \"%s\" must not include months or days" msgstr "" @@ -19684,7 +19482,7 @@ msgid "Valid units are \"bytes\", \"kB\", \"MB\", \"GB\", and \"TB\"." msgstr "" "ДопуÑтимые единицы измерениÑ: \"bytes\", \"kB\", \"MB\", \"GB\" и \"TB\"." -#: utils/adt/domains.c:85 +#: utils/adt/domains.c:86 #, c-format msgid "type %s is not a domain" msgstr "тип \"%s\" не ÑвлÑетÑÑ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð¼" @@ -20205,7 +20003,7 @@ msgid "oidvector has too many elements" msgstr "oidvector Ñодержит Ñлишком много Ñлементов" #: utils/adt/int.c:1362 utils/adt/int8.c:1460 utils/adt/numeric.c:1351 -#: utils/adt/timestamp.c:5611 utils/adt/timestamp.c:5692 +#: utils/adt/timestamp.c:5604 utils/adt/timestamp.c:5685 #, c-format msgid "step size cannot equal zero" msgstr "размер шага не может быть нулевым" @@ -20230,7 +20028,7 @@ msgstr "значение \"%s\" вне диапазона Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° bigint #: utils/adt/int8.c:1052 utils/adt/int8.c:1079 utils/adt/int8.c:1112 #: utils/adt/int8.c:1140 utils/adt/int8.c:1161 utils/adt/int8.c:1188 #: utils/adt/int8.c:1361 utils/adt/int8.c:1400 utils/adt/numeric.c:2955 -#: utils/adt/varbit.c:1645 +#: utils/adt/varbit.c:1655 #, c-format msgid "bigint out of range" msgstr "bigint вне диапазона" @@ -20358,15 +20156,12 @@ msgid "key value must be scalar, not array, composite, or json" msgstr "" "значением ключа должен быть ÑкалÑÑ€ (не маÑÑив, композитный тип или json)" -#: utils/adt/json.c:2006 -#, c-format -msgid "could not determine data type for argument 1" -msgstr "не удалоÑÑŒ определить тип данных аргумента 1" - -#: utils/adt/json.c:2016 +#: utils/adt/json.c:2006 utils/adt/json.c:2016 utils/adt/json.c:2142 +#: utils/adt/json.c:2163 utils/adt/json.c:2222 utils/adt/jsonb.c:1214 +#: utils/adt/jsonb.c:1237 utils/adt/jsonb.c:1297 #, c-format -msgid "could not determine data type for argument 2" -msgstr "не удалоÑÑŒ определить тип данных аргумента 2" +msgid "could not determine data type for argument %d" +msgstr "не удалоÑÑŒ определить тип данных аргумента %d" #: utils/adt/json.c:2040 utils/adt/jsonb.c:1781 #, c-format @@ -20386,11 +20181,6 @@ msgid "" msgstr "" "Ðргументы json_build_object() должны ÑоÑтоÑть из пар ключей и значений." -#: utils/adt/json.c:2142 utils/adt/json.c:2163 utils/adt/json.c:2222 -#, c-format -msgid "could not determine data type for argument %d" -msgstr "не удалоÑÑŒ определить тип данных аргумента %d" - #: utils/adt/json.c:2148 #, c-format msgid "argument %d cannot be null" @@ -20440,11 +20230,6 @@ msgstr "" msgid "argument %d: key must not be null" msgstr "аргумент %d: ключ не может быть NULL" -#: utils/adt/jsonb.c:1214 utils/adt/jsonb.c:1237 utils/adt/jsonb.c:1297 -#, c-format -msgid "argument %d: could not determine data type" -msgstr "аргумент %d: не удалоÑÑŒ определить тип данных" - #: utils/adt/jsonb.c:1834 #, c-format msgid "object keys must be strings" @@ -20600,12 +20385,13 @@ msgstr "Попробуйте применить функцию jsonb_set Ð´Ð»Ñ msgid "path element at position %d is not an integer: \"%s\"" msgstr "Ñлемент пути в позиции %d - не целочиÑленный: \"%s\"" +# well-spelled: Ñимв #: utils/adt/levenshtein.c:133 #, c-format msgid "levenshtein argument exceeds maximum length of %d characters" msgstr "длина аргумента levenshtein() превышает макÑимум (%d Ñимв.)" -#: utils/adt/like.c:212 utils/adt/selfuncs.c:5333 +#: utils/adt/like.c:212 utils/adt/selfuncs.c:5433 #, c-format msgid "could not determine which collation to use for ILIKE" msgstr "не удалоÑÑŒ определить, какой порÑдок Ñортировки иÑпользовать Ð´Ð»Ñ ILIKE" @@ -20984,24 +20770,24 @@ msgstr "Ñимвол не может быть null" msgid "percentile value %g is not between 0 and 1" msgstr "значение Ð¿ÐµÑ€Ñ†ÐµÐ½Ñ‚Ð¸Ð»Ñ %g лежит не в диапазоне 0..1" -#: utils/adt/pg_locale.c:917 +#: utils/adt/pg_locale.c:1029 #, c-format msgid "Apply system library package updates." msgstr "Обновите пакет Ñ ÑиÑтемной библиотекой." -#: utils/adt/pg_locale.c:1122 +#: utils/adt/pg_locale.c:1234 #, c-format msgid "could not create locale \"%s\": %m" msgstr "не удалоÑÑŒ Ñоздать локаль \"%s\": %m" -#: utils/adt/pg_locale.c:1125 +#: utils/adt/pg_locale.c:1237 #, c-format msgid "" "The operating system could not find any locale data for the locale name \"%s" "\"." msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ ÑиÑтема не может найти данные локали Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ \"%s\"." -#: utils/adt/pg_locale.c:1212 +#: utils/adt/pg_locale.c:1324 #, c-format msgid "" "collations with different collate and ctype values are not supported on this " @@ -21010,17 +20796,17 @@ msgstr "" "правила Ñортировки Ñ Ñ€Ð°Ð·Ð½Ñ‹Ð¼Ð¸ значениÑми collate и ctype не поддерживаютÑÑ Ð½Ð° " "Ñтой платформе" -#: utils/adt/pg_locale.c:1227 +#: utils/adt/pg_locale.c:1339 #, c-format msgid "nondefault collations are not supported on this platform" msgstr "на Ñтой платформе поддерживаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñтандартные правила Ñортировки" -#: utils/adt/pg_locale.c:1398 +#: utils/adt/pg_locale.c:1510 #, c-format msgid "invalid multibyte character for locale" msgstr "неверный многобайтный Ñимвол Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸" -#: utils/adt/pg_locale.c:1399 +#: utils/adt/pg_locale.c:1511 #, c-format msgid "" "The server's LC_CTYPE locale is probably incompatible with the database " @@ -21260,6 +21046,8 @@ msgstr "МуÑор поÑле правой Ñкобки." msgid "regular expression failed: %s" msgstr "ошибка в регулÑрном выражении: %s" +# skip-rule: capital-letter-first +# well-spelled: рег #: utils/adt/regexp.c:422 #, c-format msgid "invalid regexp option: \"%c\"" @@ -21270,110 +21058,109 @@ msgstr "неверный Ñлемент рег. выражениÑ: \"%c\"" msgid "regexp_split does not support the global option" msgstr "regexp_split не поддерживает глобальный поиÑк" -#: utils/adt/regproc.c:128 utils/adt/regproc.c:148 +#: utils/adt/regproc.c:129 utils/adt/regproc.c:149 #, c-format msgid "more than one function named \"%s\"" msgstr "Ð¸Ð¼Ñ \"%s\" имеют неÑколько функций" -#: utils/adt/regproc.c:587 utils/adt/regproc.c:607 +#: utils/adt/regproc.c:588 utils/adt/regproc.c:608 #, c-format msgid "more than one operator named %s" msgstr "Ð¸Ð¼Ñ %s имеют неÑколько операторов" -#: utils/adt/regproc.c:774 utils/adt/regproc.c:815 gram.y:7293 +#: utils/adt/regproc.c:775 utils/adt/regproc.c:816 gram.y:7311 #, c-format msgid "missing argument" msgstr "отÑутÑтвует аргумент" -#: utils/adt/regproc.c:775 utils/adt/regproc.c:816 gram.y:7294 +#: utils/adt/regproc.c:776 utils/adt/regproc.c:817 gram.y:7312 #, c-format msgid "Use NONE to denote the missing argument of a unary operator." msgstr "" "Чтобы обозначить отÑутÑтвующий аргумент унарного оператора, укажите NONE." -#: utils/adt/regproc.c:779 utils/adt/regproc.c:820 utils/adt/regproc.c:2006 -#: utils/adt/ruleutils.c:8364 utils/adt/ruleutils.c:8533 +#: utils/adt/regproc.c:780 utils/adt/regproc.c:821 utils/adt/regproc.c:2007 +#: utils/adt/ruleutils.c:8453 utils/adt/ruleutils.c:8622 #, c-format msgid "too many arguments" msgstr "Ñлишком много аргументов" -#: utils/adt/regproc.c:780 utils/adt/regproc.c:821 +#: utils/adt/regproc.c:781 utils/adt/regproc.c:822 #, c-format msgid "Provide two argument types for operator." msgstr "ПредоÑтавьте Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° два типа аргументов." -#: utils/adt/regproc.c:1594 utils/adt/regproc.c:1618 utils/adt/regproc.c:1715 -#: utils/adt/regproc.c:1739 utils/adt/regproc.c:1841 utils/adt/regproc.c:1846 +#: utils/adt/regproc.c:1595 utils/adt/regproc.c:1619 utils/adt/regproc.c:1716 +#: utils/adt/regproc.c:1740 utils/adt/regproc.c:1842 utils/adt/regproc.c:1847 #: utils/adt/varlena.c:3084 utils/adt/varlena.c:3089 #, c-format msgid "invalid name syntax" msgstr "ошибка ÑинтакÑиÑа в имени" -#: utils/adt/regproc.c:1904 +#: utils/adt/regproc.c:1905 #, c-format msgid "expected a left parenthesis" msgstr "ожидалаÑÑŒ Ð»ÐµÐ²Ð°Ñ Ñкобка" -#: utils/adt/regproc.c:1920 +#: utils/adt/regproc.c:1921 #, c-format msgid "expected a right parenthesis" msgstr "ожидалаÑÑŒ Ð¿Ñ€Ð°Ð²Ð°Ñ Ñкобка" -#: utils/adt/regproc.c:1939 +#: utils/adt/regproc.c:1940 #, c-format msgid "expected a type name" msgstr "ожидалоÑÑŒ Ð¸Ð¼Ñ Ñ‚Ð¸Ð¿Ð°" -#: utils/adt/regproc.c:1971 +#: utils/adt/regproc.c:1972 #, c-format msgid "improper type name" msgstr "ошибочное Ð¸Ð¼Ñ Ñ‚Ð¸Ð¿Ð°" -#: utils/adt/ri_triggers.c:316 utils/adt/ri_triggers.c:373 -#: utils/adt/ri_triggers.c:792 utils/adt/ri_triggers.c:1015 -#: utils/adt/ri_triggers.c:1171 utils/adt/ri_triggers.c:1352 -#: utils/adt/ri_triggers.c:1517 utils/adt/ri_triggers.c:1693 -#: utils/adt/ri_triggers.c:1873 utils/adt/ri_triggers.c:2064 -#: utils/adt/ri_triggers.c:2122 utils/adt/ri_triggers.c:2227 -#: utils/adt/ri_triggers.c:2404 gram.y:3343 +#: utils/adt/ri_triggers.c:314 utils/adt/ri_triggers.c:371 +#: utils/adt/ri_triggers.c:790 utils/adt/ri_triggers.c:1013 +#: utils/adt/ri_triggers.c:1169 utils/adt/ri_triggers.c:1350 +#: utils/adt/ri_triggers.c:1515 utils/adt/ri_triggers.c:1691 +#: utils/adt/ri_triggers.c:1871 utils/adt/ri_triggers.c:2062 +#: utils/adt/ri_triggers.c:2120 utils/adt/ri_triggers.c:2225 +#: utils/adt/ri_triggers.c:2402 gram.y:3351 #, c-format msgid "MATCH PARTIAL not yet implemented" msgstr "выражение MATCH PARTIAL ещё не реализовано" -#: utils/adt/ri_triggers.c:345 utils/adt/ri_triggers.c:2492 -#: utils/adt/ri_triggers.c:3317 +#: utils/adt/ri_triggers.c:343 utils/adt/ri_triggers.c:2490 +#: utils/adt/ri_triggers.c:3315 #, c-format msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\"" msgstr "" -"INSERT или UPDATE в таблице \"%s\" нарушает ограничение внешнего ключа \"%s" -"\" " +"INSERT или UPDATE в таблице \"%s\" нарушает ограничение внешнего ключа \"%s\"" -#: utils/adt/ri_triggers.c:348 utils/adt/ri_triggers.c:2495 +#: utils/adt/ri_triggers.c:346 utils/adt/ri_triggers.c:2493 #, c-format msgid "MATCH FULL does not allow mixing of null and nonnull key values." msgstr "MATCH FULL не позволÑет Ñмешивать в значении ключа null и не null." -#: utils/adt/ri_triggers.c:2734 +#: utils/adt/ri_triggers.c:2732 #, c-format msgid "function \"%s\" must be fired for INSERT" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" должна запуÑкатьÑÑ Ð´Ð»Ñ INSERT" -#: utils/adt/ri_triggers.c:2740 +#: utils/adt/ri_triggers.c:2738 #, c-format msgid "function \"%s\" must be fired for UPDATE" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" должна запуÑкатьÑÑ Ð´Ð»Ñ UPDATE" -#: utils/adt/ri_triggers.c:2746 +#: utils/adt/ri_triggers.c:2744 #, c-format msgid "function \"%s\" must be fired for DELETE" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" должна запуÑкатьÑÑ Ð´Ð»Ñ DELETE" -#: utils/adt/ri_triggers.c:2769 +#: utils/adt/ri_triggers.c:2767 #, c-format msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\"" msgstr "Ð´Ð»Ñ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð° \"%s\" таблицы \"%s\" нет запиÑи pg_constraint" -#: utils/adt/ri_triggers.c:2771 +#: utils/adt/ri_triggers.c:2769 #, c-format msgid "" "Remove this referential integrity trigger and its mates, then do ALTER TABLE " @@ -21382,7 +21169,7 @@ msgstr "" "Удалите Ñтот триггер ÑÑылочной целоÑтноÑти и ÑвÑзанные объекты, а затем " "выполните ALTER TABLE ADD CONSTRAINT." -#: utils/adt/ri_triggers.c:3227 +#: utils/adt/ri_triggers.c:3225 #, c-format msgid "" "referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave " @@ -21391,22 +21178,22 @@ msgstr "" "неожиданный результат запроÑа ÑÑылочной целоÑтноÑти к \"%s\" из Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ " "\"%s\" таблицы \"%s\"" -#: utils/adt/ri_triggers.c:3231 +#: utils/adt/ri_triggers.c:3229 #, c-format msgid "This is most likely due to a rule having rewritten the query." msgstr "Скорее вÑего Ñто вызвано правилом, перепиÑавшим запроÑ." -#: utils/adt/ri_triggers.c:3321 +#: utils/adt/ri_triggers.c:3319 #, c-format msgid "Key (%s)=(%s) is not present in table \"%s\"." msgstr "Ключ (%s)=(%s) отÑутÑтвует в таблице \"%s\"." -#: utils/adt/ri_triggers.c:3324 +#: utils/adt/ri_triggers.c:3322 #, c-format msgid "Key is not present in table \"%s\"." msgstr "Ключ отÑутÑтвует в таблице \"%s\"." -#: utils/adt/ri_triggers.c:3330 +#: utils/adt/ri_triggers.c:3328 #, c-format msgid "" "update or delete on table \"%s\" violates foreign key constraint \"%s\" on " @@ -21415,12 +21202,12 @@ msgstr "" "UPDATE или DELETE в таблице \"%s\" нарушает ограничение внешнего ключа \"%s" "\" таблицы \"%s\"" -#: utils/adt/ri_triggers.c:3335 +#: utils/adt/ri_triggers.c:3333 #, c-format msgid "Key (%s)=(%s) is still referenced from table \"%s\"." msgstr "Ðа ключ (%s)=(%s) вÑÑ‘ ещё еÑть ÑÑылки в таблице \"%s\"." -#: utils/adt/ri_triggers.c:3338 +#: utils/adt/ri_triggers.c:3336 #, c-format msgid "Key is still referenced from table \"%s\"." msgstr "Ðа ключ вÑÑ‘ ещё еÑть ÑÑылки в таблице \"%s\"." @@ -21483,148 +21270,147 @@ msgstr "не удалоÑÑŒ Ñравнить различные типы Ñто msgid "cannot compare record types with different numbers of columns" msgstr "Ñравнивать типы запиÑей Ñ Ñ€Ð°Ð·Ð½Ñ‹Ð¼ чиÑлом Ñтолбцов нельзÑ" -#: utils/adt/ruleutils.c:4286 +#: utils/adt/ruleutils.c:4297 #, c-format msgid "rule \"%s\" has unsupported event type %d" msgstr "правило \"%s\" имеет неподдерживаемый тип Ñобытий %d" -#: utils/adt/selfuncs.c:5318 +#: utils/adt/selfuncs.c:5418 #, c-format msgid "case insensitive matching not supported on type bytea" -msgstr "региÑтро-незавиÑимое Ñравнение не поддерживаетÑÑ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° bytea" +msgstr "региÑтронезавиÑимое Ñравнение не поддерживаетÑÑ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° bytea" -#: utils/adt/selfuncs.c:5421 +#: utils/adt/selfuncs.c:5521 #, c-format msgid "regular-expression matching not supported on type bytea" -msgstr "Ñравнение Ñ Ñ€ÐµÐ³ÑƒÐ»Ñрными выражениÑми не поддерживаетÑÑ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° bytea " +msgstr "Ñравнение Ñ Ñ€ÐµÐ³ÑƒÐ»Ñрными выражениÑми не поддерживаетÑÑ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° bytea" #: utils/adt/tid.c:71 utils/adt/tid.c:79 utils/adt/tid.c:87 #, c-format msgid "invalid input syntax for type tid: \"%s\"" msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° tid: \"%s\"" -#: utils/adt/timestamp.c:99 +#: utils/adt/timestamp.c:100 #, c-format msgid "TIMESTAMP(%d)%s precision must not be negative" msgstr "TIMESTAMP(%d)%s: точноÑть должна быть неотрицательна" -#: utils/adt/timestamp.c:105 +#: utils/adt/timestamp.c:106 #, c-format msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d" msgstr "TIMESTAMP(%d)%s: точноÑть уменьшена до дозволенного макÑимума: %d" -#: utils/adt/timestamp.c:170 utils/adt/timestamp.c:445 +#: utils/adt/timestamp.c:171 utils/adt/timestamp.c:446 #, c-format msgid "timestamp out of range: \"%s\"" msgstr "timestamp вне диапазона: \"%s\"" -#: utils/adt/timestamp.c:188 utils/adt/timestamp.c:463 -#: utils/adt/timestamp.c:993 +#: utils/adt/timestamp.c:189 utils/adt/timestamp.c:464 +#: utils/adt/timestamp.c:991 #, c-format msgid "date/time value \"%s\" is no longer supported" msgstr "значение даты/времени \"%s\" более не поддерживаетÑÑ" -#: utils/adt/timestamp.c:258 utils/adt/timestamp.c:754 +#: utils/adt/timestamp.c:259 utils/adt/timestamp.c:755 #, c-format msgid "timestamp cannot be NaN" msgstr "timestamp не может быть NaN" -#: utils/adt/timestamp.c:380 +#: utils/adt/timestamp.c:381 #, c-format msgid "timestamp(%d) precision must be between %d and %d" msgstr "точноÑть timestamp(%d) должна быть между %d и %d" -#: utils/adt/timestamp.c:513 +#: utils/adt/timestamp.c:514 #, c-format msgid "invalid input syntax for numeric time zone: \"%s\"" msgstr "неверный ÑинтакÑÐ¸Ñ Ð´Ð»Ñ Ñ‡Ð¸Ñлового чаÑового поÑÑа: \"%s\"" -#: utils/adt/timestamp.c:515 +#: utils/adt/timestamp.c:516 #, c-format msgid "Numeric time zones must have \"-\" or \"+\" as first character." msgstr "" "ЗапиÑÑŒ чиÑлового чаÑового поÑÑа должна начинатьÑÑ Ñ Ñимвола \"-\" или \"+\"." -#: utils/adt/timestamp.c:528 +#: utils/adt/timestamp.c:529 #, c-format msgid "numeric time zone \"%s\" out of range" msgstr "чиÑловой чаÑовой поÑÑ \"%s\" вне диапазона" -#: utils/adt/timestamp.c:631 utils/adt/timestamp.c:641 -#: utils/adt/timestamp.c:653 +#: utils/adt/timestamp.c:632 utils/adt/timestamp.c:642 +#: utils/adt/timestamp.c:654 #, c-format msgid "timestamp out of range: %d-%02d-%02d %d:%02d:%02g" msgstr "timestamp вне диапазона: %d-%02d-%02d %d:%02d:%02g" -#: utils/adt/timestamp.c:770 utils/adt/timestamp.c:776 -#: utils/adt/timestamp.c:791 +#: utils/adt/timestamp.c:773 utils/adt/timestamp.c:789 #, c-format msgid "timestamp out of range: \"%g\"" msgstr "timestamp вне диапазона: \"%g\"" -#: utils/adt/timestamp.c:987 utils/adt/timestamp.c:1558 -#: utils/adt/timestamp.c:2068 utils/adt/timestamp.c:3220 -#: utils/adt/timestamp.c:3225 utils/adt/timestamp.c:3230 -#: utils/adt/timestamp.c:3280 utils/adt/timestamp.c:3287 -#: utils/adt/timestamp.c:3294 utils/adt/timestamp.c:3314 -#: utils/adt/timestamp.c:3321 utils/adt/timestamp.c:3328 -#: utils/adt/timestamp.c:3358 utils/adt/timestamp.c:3366 -#: utils/adt/timestamp.c:3411 utils/adt/timestamp.c:3751 -#: utils/adt/timestamp.c:3880 utils/adt/timestamp.c:4271 +#: utils/adt/timestamp.c:985 utils/adt/timestamp.c:1609 +#: utils/adt/timestamp.c:2122 utils/adt/timestamp.c:3316 +#: utils/adt/timestamp.c:3321 utils/adt/timestamp.c:3326 +#: utils/adt/timestamp.c:3376 utils/adt/timestamp.c:3383 +#: utils/adt/timestamp.c:3390 utils/adt/timestamp.c:3410 +#: utils/adt/timestamp.c:3417 utils/adt/timestamp.c:3424 +#: utils/adt/timestamp.c:3454 utils/adt/timestamp.c:3462 +#: utils/adt/timestamp.c:3507 utils/adt/timestamp.c:3847 +#: utils/adt/timestamp.c:3976 utils/adt/timestamp.c:4367 #, c-format msgid "interval out of range" msgstr "interval вне диапазона" -#: utils/adt/timestamp.c:1128 utils/adt/timestamp.c:1161 +#: utils/adt/timestamp.c:1126 utils/adt/timestamp.c:1159 #, c-format msgid "invalid INTERVAL type modifier" msgstr "неверный модификатор типа INTERVAL" -#: utils/adt/timestamp.c:1144 +#: utils/adt/timestamp.c:1142 #, c-format msgid "INTERVAL(%d) precision must not be negative" msgstr "INTERVAL(%d): точноÑть должна быть неотрицательна" -#: utils/adt/timestamp.c:1150 +#: utils/adt/timestamp.c:1148 #, c-format msgid "INTERVAL(%d) precision reduced to maximum allowed, %d" msgstr "INTERVAL(%d): точноÑть уменьшена до макÑимально возможной: %d" -#: utils/adt/timestamp.c:1502 +#: utils/adt/timestamp.c:1553 #, c-format msgid "interval(%d) precision must be between %d and %d" msgstr "точноÑть interval(%d) должна быть между %d и %d" -#: utils/adt/timestamp.c:2797 +#: utils/adt/timestamp.c:2893 #, c-format msgid "cannot subtract infinite timestamps" msgstr "вычитать беÑконечные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ timestamp нельзÑ" -#: utils/adt/timestamp.c:4006 utils/adt/timestamp.c:4531 -#: utils/adt/timestamp.c:4715 utils/adt/timestamp.c:4740 +#: utils/adt/timestamp.c:4102 utils/adt/timestamp.c:4627 +#: utils/adt/timestamp.c:4811 utils/adt/timestamp.c:4836 #, c-format msgid "timestamp units \"%s\" not supported" msgstr "единицы timestamp \"%s\" не поддерживаютÑÑ" -#: utils/adt/timestamp.c:4020 utils/adt/timestamp.c:4485 -#: utils/adt/timestamp.c:4750 +#: utils/adt/timestamp.c:4116 utils/adt/timestamp.c:4581 +#: utils/adt/timestamp.c:4846 #, c-format msgid "timestamp units \"%s\" not recognized" msgstr "единицы timestamp \"%s\" не раÑпознаны" -#: utils/adt/timestamp.c:4160 utils/adt/timestamp.c:4526 -#: utils/adt/timestamp.c:4937 utils/adt/timestamp.c:4963 +#: utils/adt/timestamp.c:4256 utils/adt/timestamp.c:4622 +#: utils/adt/timestamp.c:5033 utils/adt/timestamp.c:5059 #, c-format msgid "timestamp with time zone units \"%s\" not supported" msgstr "единицы timestamp Ñ Ñ‡Ð°Ñовым поÑÑом \"%s\" не поддерживаютÑÑ" -#: utils/adt/timestamp.c:4177 utils/adt/timestamp.c:4480 -#: utils/adt/timestamp.c:4972 +#: utils/adt/timestamp.c:4273 utils/adt/timestamp.c:4576 +#: utils/adt/timestamp.c:5068 #, c-format msgid "timestamp with time zone units \"%s\" not recognized" msgstr "единицы timestamp Ñ Ñ‡Ð°Ñовым поÑÑом \"%s\" не раÑпознаны" -#: utils/adt/timestamp.c:4258 +#: utils/adt/timestamp.c:4354 #, c-format msgid "" "interval units \"%s\" not supported because months usually have fractional " @@ -21633,12 +21419,12 @@ msgstr "" "единицы интервала \"%s\" не поддерживаютÑÑ, так как в меÑÑцах дробное чиÑло " "недель" -#: utils/adt/timestamp.c:4264 utils/adt/timestamp.c:5078 +#: utils/adt/timestamp.c:4360 utils/adt/timestamp.c:5174 #, c-format msgid "interval units \"%s\" not supported" msgstr "единицы interval \"%s\" не поддерживаютÑÑ" -#: utils/adt/timestamp.c:4280 utils/adt/timestamp.c:5105 +#: utils/adt/timestamp.c:4376 utils/adt/timestamp.c:5201 #, c-format msgid "interval units \"%s\" not recognized" msgstr "единицы interval \"%s\" не раÑпознаны" @@ -21705,17 +21491,17 @@ msgstr "Ñлишком длинный операнд в tsquery: \"%s\"" msgid "word is too long in tsquery: \"%s\"" msgstr "Ñлишком длинное Ñлово в tsquery: \"%s\"" -#: utils/adt/tsquery.c:643 +#: utils/adt/tsquery.c:642 #, c-format msgid "text-search query doesn't contain lexemes: \"%s\"" msgstr "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð¾Ð¸Ñка текÑта не Ñодержит лекÑемы: \"%s\"" -#: utils/adt/tsquery.c:654 utils/adt/tsquery_util.c:347 +#: utils/adt/tsquery.c:653 utils/adt/tsquery_util.c:375 #, c-format msgid "tsquery is too large" msgstr "tsquery Ñлишком большой" -#: utils/adt/tsquery_cleanup.c:601 +#: utils/adt/tsquery_cleanup.c:407 #, c-format msgid "" "text-search query contains only stop words or doesn't contain lexemes, " @@ -21730,7 +21516,7 @@ msgid "distance in phrase operator should be non-negative and less than %d" msgstr "" "диÑÑ‚Ð°Ð½Ñ†Ð¸Ñ Ð²Ð¾ фразовом операторе должна быть неотрицательной и меньше %d" -#: utils/adt/tsquery_rewrite.c:292 +#: utils/adt/tsquery_rewrite.c:321 #, c-format msgid "ts_rewrite query must return two tsquery columns" msgstr "Ð·Ð°Ð¿Ñ€Ð¾Ñ ts_rewrite должен вернуть два Ñтолбца типа tsquery" @@ -21765,58 +21551,58 @@ msgstr "Ñлово Ñлишком длинное (%ld Б, при макÑиму msgid "string is too long for tsvector (%ld bytes, max %ld bytes)" msgstr "Ñтрока Ñлишком длинна Ð´Ð»Ñ tsvector (%ld Б, при макÑимуме %ld)" -#: utils/adt/tsvector_op.c:321 utils/adt/tsvector_op.c:608 -#: utils/adt/tsvector_op.c:776 +#: utils/adt/tsvector_op.c:322 utils/adt/tsvector_op.c:609 +#: utils/adt/tsvector_op.c:777 #, c-format msgid "lexeme array may not contain nulls" msgstr "маÑÑив лекÑем не может Ñодержать Ñлементы null" -#: utils/adt/tsvector_op.c:851 +#: utils/adt/tsvector_op.c:852 #, c-format msgid "weight array may not contain nulls" msgstr "маÑÑив веÑов не может Ñодержать Ñлементы null" -#: utils/adt/tsvector_op.c:875 +#: utils/adt/tsvector_op.c:876 #, c-format msgid "unrecognized weight: \"%c\"" msgstr "нераÑпознанный веÑ: \"%c\"" -#: utils/adt/tsvector_op.c:2061 +#: utils/adt/tsvector_op.c:2313 #, c-format msgid "ts_stat query must return one tsvector column" msgstr "Ð·Ð°Ð¿Ñ€Ð¾Ñ ts_stat должен вернуть один Ñтолбец tsvector" -#: utils/adt/tsvector_op.c:2243 +#: utils/adt/tsvector_op.c:2495 #, c-format msgid "tsvector column \"%s\" does not exist" msgstr "Ñтолбец \"%s\" типа tsvector не ÑущеÑтвует" -#: utils/adt/tsvector_op.c:2249 +#: utils/adt/tsvector_op.c:2501 #, c-format msgid "column \"%s\" is not of tsvector type" msgstr "Ñтолбец \"%s\" должен иметь тип tsvector" -#: utils/adt/tsvector_op.c:2261 +#: utils/adt/tsvector_op.c:2513 #, c-format msgid "configuration column \"%s\" does not exist" msgstr "Ñтолбец конфигурации \"%s\" не ÑущеÑтвует" -#: utils/adt/tsvector_op.c:2267 +#: utils/adt/tsvector_op.c:2519 #, c-format msgid "column \"%s\" is not of regconfig type" msgstr "Ñтолбец \"%s\" должен иметь тип regconfig" -#: utils/adt/tsvector_op.c:2274 +#: utils/adt/tsvector_op.c:2526 #, c-format msgid "configuration column \"%s\" must not be null" msgstr "значение Ñтолбца конфигурации \"%s\" не должно быть null" -#: utils/adt/tsvector_op.c:2287 +#: utils/adt/tsvector_op.c:2539 #, c-format msgid "text search configuration name \"%s\" must be schema-qualified" msgstr "Ð¸Ð¼Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸ текÑтового поиÑка \"%s\" должно указыватьÑÑ Ñо Ñхемой" -#: utils/adt/tsvector_op.c:2312 +#: utils/adt/tsvector_op.c:2564 #, c-format msgid "column \"%s\" is not of a character type" msgstr "Ñтолбец \"%s\" имеет не Ñимвольный тип" @@ -21826,6 +21612,7 @@ msgstr "Ñтолбец \"%s\" имеет не Ñимвольный тип" msgid "syntax error in tsvector: \"%s\"" msgstr "ошибка ÑинтакÑиÑа в tsvector: \"%s\"" +# skip-rule: capital-letter-first #: utils/adt/tsvector_parser.c:207 #, c-format msgid "there is no escaped character: \"%s\"" @@ -21914,12 +21701,12 @@ msgid "cannot XOR bit strings of different sizes" msgstr "" "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать \"ИСКЛЮЧÐЮЩЕЕ ИЛИ\" (XOR) Ð´Ð»Ñ Ð±Ð¸Ñ‚Ð¾Ð²Ñ‹Ñ… Ñтрок разной длины" -#: utils/adt/varbit.c:1793 utils/adt/varbit.c:1851 +#: utils/adt/varbit.c:1803 utils/adt/varbit.c:1861 #, c-format msgid "bit index %d out of valid range (0..%d)" msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð±Ð¸Ñ‚Ð° %d вне диапазона 0..%d" -#: utils/adt/varbit.c:1802 utils/adt/varlena.c:3002 +#: utils/adt/varbit.c:1812 utils/adt/varlena.c:3002 #, c-format msgid "new bit must be 0 or 1" msgstr "значением бита должен быть 0 или 1" @@ -22012,73 +21799,73 @@ msgstr "аргумент ntile должен быть больше нулÑ" msgid "argument of nth_value must be greater than zero" msgstr "аргумент nth_value должен быть больше нулÑ" -#: utils/adt/xml.c:171 +#: utils/adt/xml.c:175 #, c-format msgid "unsupported XML feature" msgstr "XML-функции не поддерживаютÑÑ" -#: utils/adt/xml.c:172 +#: utils/adt/xml.c:176 #, c-format msgid "This functionality requires the server to be built with libxml support." msgstr "Ð”Ð»Ñ Ñтой функциональноÑти в Ñервере не хватает поддержки libxml." -#: utils/adt/xml.c:173 +#: utils/adt/xml.c:177 #, c-format msgid "You need to rebuild PostgreSQL using --with-libxml." msgstr "Ðеобходимо перекомпилировать PostgreSQL Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð¼ --with-libxml." -#: utils/adt/xml.c:192 utils/mb/mbutils.c:523 +#: utils/adt/xml.c:196 utils/mb/mbutils.c:523 #, c-format msgid "invalid encoding name \"%s\"" msgstr "неверное Ð¸Ð¼Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¸: \"%s\"" -#: utils/adt/xml.c:435 utils/adt/xml.c:440 +#: utils/adt/xml.c:439 utils/adt/xml.c:444 #, c-format msgid "invalid XML comment" msgstr "ошибка в XML-комментарии" -#: utils/adt/xml.c:569 +#: utils/adt/xml.c:573 #, c-format msgid "not an XML document" msgstr "не XML-документ" -#: utils/adt/xml.c:728 utils/adt/xml.c:751 +#: utils/adt/xml.c:732 utils/adt/xml.c:755 #, c-format msgid "invalid XML processing instruction" msgstr "Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ XML-инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ (PI)" -#: utils/adt/xml.c:729 +#: utils/adt/xml.c:733 #, c-format msgid "XML processing instruction target name cannot be \"%s\"." msgstr "назначением XML-инÑтрукции обработки (PI) не может быть \"%s\"." -#: utils/adt/xml.c:752 +#: utils/adt/xml.c:756 #, c-format msgid "XML processing instruction cannot contain \"?>\"." msgstr "XML-инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ (PI) не может Ñодержать \"?>\"." -#: utils/adt/xml.c:831 +#: utils/adt/xml.c:835 #, c-format msgid "xmlvalidate is not implemented" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ xmlvalidate не реализована" -#: utils/adt/xml.c:910 +#: utils/adt/xml.c:914 #, c-format msgid "could not initialize XML library" msgstr "не удалоÑÑŒ инициализировать библиотеку XML" -#: utils/adt/xml.c:911 +#: utils/adt/xml.c:915 #, c-format msgid "" "libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u." msgstr "другой тип char в libxml2: sizeof(char)=%u, sizeof(xmlChar)=%u." -#: utils/adt/xml.c:997 +#: utils/adt/xml.c:1001 #, c-format msgid "could not set up XML error handler" msgstr "не удалоÑÑŒ уÑтановить обработчик XML-ошибок" -#: utils/adt/xml.c:998 +#: utils/adt/xml.c:1002 #, c-format msgid "" "This probably indicates that the version of libxml2 being used is not " @@ -22087,72 +21874,72 @@ msgstr "" "Возможно Ñто означает, что иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ libxml2 не ÑовмеÑтима Ñ " "заголовочными файлами libxml2, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼Ð¸ был Ñобран PostgreSQL." -#: utils/adt/xml.c:1735 +#: utils/adt/xml.c:1739 msgid "Invalid character value." msgstr "Ðеверный Ñимвол." -#: utils/adt/xml.c:1738 +#: utils/adt/xml.c:1742 msgid "Space required." msgstr "ТребуетÑÑ Ð¿Ñ€Ð¾Ð±ÐµÐ»." -#: utils/adt/xml.c:1741 +#: utils/adt/xml.c:1745 msgid "standalone accepts only 'yes' or 'no'." msgstr "значениÑми атрибута standalone могут быть только 'yes' и 'no'." -#: utils/adt/xml.c:1744 +#: utils/adt/xml.c:1748 msgid "Malformed declaration: missing version." msgstr "Ошибочное объÑвление: не указана верÑиÑ." -#: utils/adt/xml.c:1747 +#: utils/adt/xml.c:1751 msgid "Missing encoding in text declaration." msgstr "Ð’ объÑвлении не указана кодировка." -#: utils/adt/xml.c:1750 +#: utils/adt/xml.c:1754 msgid "Parsing XML declaration: '?>' expected." msgstr "Ошибка при разборе XML-объÑвлениÑ: ожидаетÑÑ '?>'." -#: utils/adt/xml.c:1753 +#: utils/adt/xml.c:1757 #, c-format msgid "Unrecognized libxml error code: %d." msgstr "ÐераÑпознанный код ошибки libxml: %d." -#: utils/adt/xml.c:2028 +#: utils/adt/xml.c:2032 #, c-format msgid "XML does not support infinite date values." msgstr "XML не поддерживает беÑконечноÑть в датах." -#: utils/adt/xml.c:2050 utils/adt/xml.c:2077 +#: utils/adt/xml.c:2054 utils/adt/xml.c:2081 #, c-format msgid "XML does not support infinite timestamp values." msgstr "XML не поддерживает беÑконечноÑть в timestamp." -#: utils/adt/xml.c:2468 +#: utils/adt/xml.c:2481 #, c-format msgid "invalid query" msgstr "неверный запроÑ" -#: utils/adt/xml.c:3793 +#: utils/adt/xml.c:3806 #, c-format msgid "invalid array for XML namespace mapping" msgstr "неправильный маÑÑив Ñ ÑопоÑтавлениÑми проÑтранÑтв имён XML" -#: utils/adt/xml.c:3794 +#: utils/adt/xml.c:3807 #, c-format msgid "" "The array must be two-dimensional with length of the second axis equal to 2." msgstr "МаÑÑив должен быть двухмерным и Ñодержать 2 Ñлемента по второй оÑи." -#: utils/adt/xml.c:3818 +#: utils/adt/xml.c:3831 #, c-format msgid "empty XPath expression" msgstr "пуÑтое выражение XPath" -#: utils/adt/xml.c:3867 +#: utils/adt/xml.c:3880 #, c-format msgid "neither namespace name nor URI may be null" msgstr "ни префикÑ, ни URI проÑтранÑтва имён не может быть null" -#: utils/adt/xml.c:3874 +#: utils/adt/xml.c:3887 #, c-format msgid "could not register XML namespace with name \"%s\" and URI \"%s\"" msgstr "" @@ -22175,22 +21962,22 @@ msgstr "Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %s нет функции ввода" msgid "no output function available for type %s" msgstr "Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° %s нет функции вывода" -#: utils/cache/plancache.c:716 +#: utils/cache/plancache.c:718 #, c-format msgid "cached plan must not change result type" msgstr "в кешированном плане не должен изменÑтьÑÑ Ñ‚Ð¸Ð¿ результата" -#: utils/cache/relcache.c:5199 +#: utils/cache/relcache.c:5226 #, c-format msgid "could not create relation-cache initialization file \"%s\": %m" msgstr "Ñоздать файл инициализации Ð´Ð»Ñ ÐºÐµÑˆÐ° отношений \"%s\" не удалоÑÑŒ: %m" -#: utils/cache/relcache.c:5201 +#: utils/cache/relcache.c:5228 #, c-format msgid "Continuing anyway, but there's something wrong." msgstr "Продолжаем вÑÑ‘ равно, Ñ…Ð¾Ñ‚Ñ Ñ‡Ñ‚Ð¾-то не так." -#: utils/cache/relcache.c:5475 +#: utils/cache/relcache.c:5502 #, c-format msgid "could not remove cache file \"%s\": %m" msgstr "не удалоÑÑŒ Ñтереть файл кеша \"%s\": %m" @@ -22209,7 +21996,7 @@ msgstr "открыть файл ÑопоÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ð¹ \" #: utils/cache/relmapper.c:664 #, c-format msgid "could not read relation mapping file \"%s\": %m" -msgstr "прочитать файл ÑопоÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ð¹ \"%s\" не удалоÑÑŒ: %m " +msgstr "прочитать файл ÑопоÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ð¹ \"%s\" не удалоÑÑŒ: %m" #: utils/cache/relmapper.c:674 #, c-format @@ -22277,82 +22064,82 @@ msgstr "открыть файл \"%s\" как stdout не удалоÑÑŒ: %m" msgid "[unknown]" msgstr "[н/д]" -#: utils/error/elog.c:2881 utils/error/elog.c:3184 utils/error/elog.c:3292 +#: utils/error/elog.c:2882 utils/error/elog.c:3185 utils/error/elog.c:3293 msgid "missing error text" msgstr "отÑутÑтвует текÑÑ‚ ошибки" -#: utils/error/elog.c:2884 utils/error/elog.c:2887 utils/error/elog.c:3295 -#: utils/error/elog.c:3298 +#: utils/error/elog.c:2885 utils/error/elog.c:2888 utils/error/elog.c:3296 +#: utils/error/elog.c:3299 #, c-format msgid " at character %d" msgstr " (Ñимвол %d)" -#: utils/error/elog.c:2897 utils/error/elog.c:2904 +#: utils/error/elog.c:2898 utils/error/elog.c:2905 msgid "DETAIL: " msgstr "ПОДРОБÐОСТИ: " -#: utils/error/elog.c:2911 +#: utils/error/elog.c:2912 msgid "HINT: " msgstr "ПОДСКÐЗКÐ: " -#: utils/error/elog.c:2918 +#: utils/error/elog.c:2919 msgid "QUERY: " msgstr "ЗÐПРОС: " -#: utils/error/elog.c:2925 +#: utils/error/elog.c:2926 msgid "CONTEXT: " msgstr "КОÐТЕКСТ: " -#: utils/error/elog.c:2935 +#: utils/error/elog.c:2936 #, c-format msgid "LOCATION: %s, %s:%d\n" msgstr "ПОЛОЖЕÐИЕ: %s, %s:%d\n" -#: utils/error/elog.c:2942 +#: utils/error/elog.c:2943 #, c-format msgid "LOCATION: %s:%d\n" msgstr "ПОЛОЖЕÐИЕ: %s:%d\n" -#: utils/error/elog.c:2956 +#: utils/error/elog.c:2957 msgid "STATEMENT: " msgstr "ОПЕРÐТОР: " #. translator: This string will be truncated at 47 #. characters expanded. -#: utils/error/elog.c:3413 +#: utils/error/elog.c:3414 #, c-format msgid "operating system error %d" msgstr "ошибка ОС %d" -#: utils/error/elog.c:3611 +#: utils/error/elog.c:3612 msgid "DEBUG" msgstr "ОТЛÐДКÐ" -#: utils/error/elog.c:3615 +#: utils/error/elog.c:3616 msgid "LOG" msgstr "СООБЩЕÐИЕ" -#: utils/error/elog.c:3618 +#: utils/error/elog.c:3619 msgid "INFO" msgstr "ИÐФОРМÐЦИЯ" -#: utils/error/elog.c:3621 +#: utils/error/elog.c:3622 msgid "NOTICE" msgstr "ЗÐМЕЧÐÐИЕ" -#: utils/error/elog.c:3624 +#: utils/error/elog.c:3625 msgid "WARNING" msgstr "ПРЕДУПРЕЖДЕÐИЕ" -#: utils/error/elog.c:3627 +#: utils/error/elog.c:3628 msgid "ERROR" msgstr "ОШИБКÐ" -#: utils/error/elog.c:3630 +#: utils/error/elog.c:3631 msgid "FATAL" msgstr "Ð’ÐЖÐО" -#: utils/error/elog.c:3633 +#: utils/error/elog.c:3634 msgid "PANIC" msgstr "ПÐÐИКÐ" @@ -22497,7 +22284,7 @@ msgstr "не удалоÑÑŒ определить опиÑание Ñтроки msgid "could not change directory to \"%s\": %m" msgstr "не удалоÑÑŒ перейти в каталог \"%s\": %m" -#: utils/init/miscinit.c:449 utils/misc/guc.c:6018 +#: utils/init/miscinit.c:449 utils/misc/guc.c:6016 #, c-format msgid "cannot set parameter \"%s\" within security-restricted operation" msgstr "" @@ -22625,7 +22412,7 @@ msgstr "" msgid "could not write lock file \"%s\": %m" msgstr "не удалоÑÑŒ запиÑать файл блокировки \"%s\": %m" -#: utils/init/miscinit.c:1172 utils/init/miscinit.c:1301 utils/misc/guc.c:8812 +#: utils/init/miscinit.c:1172 utils/init/miscinit.c:1301 utils/misc/guc.c:8818 #, c-format msgid "could not read from file \"%s\": %m" msgstr "не удалоÑÑŒ прочитать файл \"%s\": %m" @@ -22963,7 +22750,7 @@ msgstr "Журнал WAL" #: utils/misc/guc.c:574 msgid "Write-Ahead Log / Settings" -msgstr "Журнал WAL / ÐаÑтройки" +msgstr "Журнал WAL / Параметры" #: utils/misc/guc.c:576 msgid "Write-Ahead Log / Checkpoints" @@ -23500,7 +23287,7 @@ msgid "" "When turned on, unquoted NULL in an array input value means a null value; " "otherwise it is taken literally." msgstr "" -"Когда Ñтот параметр включен, NULL без кавычек при вводе в маÑÑив " +"Когда Ñтот параметр включён, NULL без кавычек при вводе в маÑÑив " "воÑпринимаетÑÑ ÐºÐ°Ðº значение NULL, иначе - как Ñтрока." #: utils/misc/guc.c:1418 @@ -23545,7 +23332,7 @@ msgid "" "Sets whether Kerberos and GSSAPI user names should be treated as case-" "insensitive." msgstr "" -"Включает региÑтро-незавиÑимую обработку имён пользователей Kerberos и GSSAPI." +"Включает региÑтронезавиÑимую обработку имён пользователей Kerberos и GSSAPI." #: utils/misc/guc.c:1526 msgid "Warn about backslash escapes in ordinary string literals." @@ -23789,7 +23576,7 @@ msgid "" msgstr "" "Значение параметра указываетÑÑ Ð² чиÑловом виде, воÑпринимаемом ÑиÑтемными " "функциÑми chmod и umask. (Чтобы иÑпользовать привычный воÑьмеричный формат, " -"добавьте в начало ноль (0).) " +"добавьте в начало ноль (0).)" #: utils/misc/guc.c:1904 msgid "Sets the maximum memory to be used for query workspaces." @@ -24005,41 +23792,41 @@ msgstr "" "переполнением файлов Ñегментов, проиÑходÑÑ‚ за Ñтолько Ñекунд. Ðулевое " "значение отключает Ñти предупреждениÑ." -#: utils/misc/guc.c:2273 utils/misc/guc.c:2431 utils/misc/guc.c:2459 +#: utils/misc/guc.c:2273 utils/misc/guc.c:2430 utils/misc/guc.c:2457 msgid "" "Number of pages after which previously performed writes are flushed to disk." msgstr "" "ЧиÑло Ñтраниц, по доÑтижении которого ранее выполненные операции запиÑи " "ÑбраÑываютÑÑ Ð½Ð° диÑк." -#: utils/misc/guc.c:2285 +#: utils/misc/guc.c:2284 msgid "Sets the number of disk-page buffers in shared memory for WAL." msgstr "Задаёт чиÑло буферов диÑковых Ñтраниц в разделÑемой памÑти Ð´Ð»Ñ WAL." -#: utils/misc/guc.c:2296 +#: utils/misc/guc.c:2295 msgid "Time between WAL flushes performed in the WAL writer." msgstr "Задержка между ÑброÑом WAL в процеÑÑе, запиÑывающем WAL." -#: utils/misc/guc.c:2307 -msgid "Amount of WAL written out by WAL writer triggering a flush." +#: utils/misc/guc.c:2306 +msgid "Amount of WAL written out by WAL writer that triggers a flush." msgstr "" "Объём WAL, обработанный пишущим WAL процеÑÑом, при котором инициируетÑÑ " "ÑÐ±Ñ€Ð¾Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ð° на диÑк." -#: utils/misc/guc.c:2319 +#: utils/misc/guc.c:2318 msgid "Sets the maximum number of simultaneously running WAL sender processes." msgstr "" "Задаёт предельное чиÑло одновременно работающих процеÑÑов передачи WAL." -#: utils/misc/guc.c:2330 +#: utils/misc/guc.c:2329 msgid "Sets the maximum number of simultaneously defined replication slots." msgstr "Задаёт предельное чиÑло одновременно ÑущеÑтвующих Ñлотов репликации." -#: utils/misc/guc.c:2340 +#: utils/misc/guc.c:2339 msgid "Sets the maximum time to wait for WAL replication." msgstr "Задаёт предельное Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ WAL." -#: utils/misc/guc.c:2351 +#: utils/misc/guc.c:2350 msgid "" "Sets the delay in microseconds between transaction commit and flushing WAL " "to disk." @@ -24047,18 +23834,18 @@ msgstr "" "Задаёт задержку в микроÑекундах между фикÑированием транзакций и ÑброÑом WAL " "на диÑк." -#: utils/misc/guc.c:2363 +#: utils/misc/guc.c:2362 msgid "" "Sets the minimum concurrent open transactions before performing commit_delay." msgstr "" "Задаёт минимальное чиÑло одновременно открытых транзакций Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ " "commit_delay." -#: utils/misc/guc.c:2374 +#: utils/misc/guc.c:2373 msgid "Sets the number of digits displayed for floating-point values." msgstr "Задаёт чиÑло выводимых цифр Ð´Ð»Ñ Ñ‡Ð¸Ñел Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой." -#: utils/misc/guc.c:2375 +#: utils/misc/guc.c:2374 msgid "" "This affects real, double precision, and geometric data types. The parameter " "value is added to the standard number of digits (FLT_DIG or DBL_DIG as " @@ -24067,17 +23854,17 @@ msgstr "" "Этот параметр отноÑитÑÑ Ðº типам real, double и geometric. Значение параметра " "добавлÑетÑÑ Ðº Ñтандартному чиÑлу цифр (FLT_DIG или DBL_DIG)." -#: utils/misc/guc.c:2386 +#: utils/misc/guc.c:2385 msgid "Sets the minimum execution time above which statements will be logged." msgstr "" "Задаёт предельное Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð°, при превышении которого он " "фикÑируетÑÑ Ð² протоколе." -#: utils/misc/guc.c:2388 +#: utils/misc/guc.c:2387 msgid "Zero prints all queries. -1 turns this feature off." msgstr "При 0 протоколируютÑÑ Ð²Ñе запроÑÑ‹; -1 отключает Ñти ÑообщениÑ." -#: utils/misc/guc.c:2398 +#: utils/misc/guc.c:2397 msgid "" "Sets the minimum execution time above which autovacuum actions will be " "logged." @@ -24085,22 +23872,22 @@ msgstr "" "Задаёт предельное Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð°Ð²Ñ‚Ð¾Ð¾Ñ‡Ð¸Ñтки, при превышении которого Ñта " "Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ„Ð¸ÐºÑируетÑÑ Ð² протоколе." -#: utils/misc/guc.c:2400 +#: utils/misc/guc.c:2399 msgid "Zero prints all actions. -1 turns autovacuum logging off." msgstr "" "При 0 протоколируютÑÑ Ð²Ñе операции автоочиÑтки; -1 отключает Ñти ÑообщениÑ." -#: utils/misc/guc.c:2410 +#: utils/misc/guc.c:2409 msgid "Background writer sleep time between rounds." msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¾ÑÑ‚Ð¾Ñ Ð² процеÑÑе фоновой запиÑи между подходами." -#: utils/misc/guc.c:2421 +#: utils/misc/guc.c:2420 msgid "Background writer maximum number of LRU pages to flush per round." msgstr "" "МакÑимальное чиÑло LRU-Ñтраниц, ÑбраÑываемых за один подход, в процеÑÑе " "фоновой запиÑи." -#: utils/misc/guc.c:2445 +#: utils/misc/guc.c:2443 msgid "" "Number of simultaneous requests that can be handled efficiently by the disk " "subsystem." @@ -24108,89 +23895,89 @@ msgstr "" "ЧиÑло одновременных запроÑов, которые могут быть Ñффективно обработаны " "диÑковой подÑиÑтемой." -#: utils/misc/guc.c:2446 +#: utils/misc/guc.c:2444 msgid "" "For RAID arrays, this should be approximately the number of drive spindles " "in the array." msgstr "" "Ð”Ð»Ñ RAID-маÑÑивов Ñто примерно равно чиÑлу физичеÑких диÑков в маÑÑиве." -#: utils/misc/guc.c:2472 +#: utils/misc/guc.c:2470 msgid "Maximum number of concurrent worker processes." msgstr "Задаёт макÑимально возможное чиÑло рабочих процеÑÑов." -#: utils/misc/guc.c:2482 +#: utils/misc/guc.c:2480 msgid "Automatic log file rotation will occur after N minutes." msgstr "ÐвтоматичеÑÐºÐ°Ñ Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‚ÐºÐ° файла протокола через каждые N минут." -#: utils/misc/guc.c:2493 +#: utils/misc/guc.c:2491 msgid "Automatic log file rotation will occur after N kilobytes." msgstr "" "ÐвтоматичеÑÐºÐ°Ñ Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‚ÐºÐ° файла протокола при выходе за предел N килобайт." -#: utils/misc/guc.c:2504 +#: utils/misc/guc.c:2502 msgid "Shows the maximum number of function arguments." msgstr "Показывает макÑимально возможное чиÑло аргументов функций." -#: utils/misc/guc.c:2515 +#: utils/misc/guc.c:2513 msgid "Shows the maximum number of index keys." msgstr "Показывает макÑимально возможное чиÑло ключей в индекÑе." -#: utils/misc/guc.c:2526 +#: utils/misc/guc.c:2524 msgid "Shows the maximum identifier length." msgstr "Показывает макÑимально возможную длину идентификатора." -#: utils/misc/guc.c:2537 +#: utils/misc/guc.c:2535 msgid "Shows the size of a disk block." msgstr "Показывает размер диÑкового блока." -#: utils/misc/guc.c:2548 +#: utils/misc/guc.c:2546 msgid "Shows the number of pages per disk file." msgstr "Показывает чиÑло Ñтраниц в одном файле." -#: utils/misc/guc.c:2559 +#: utils/misc/guc.c:2557 msgid "Shows the block size in the write ahead log." msgstr "Показывает размер блока в журнале WAL." -#: utils/misc/guc.c:2570 +#: utils/misc/guc.c:2568 msgid "" "Sets the time to wait before retrying to retrieve WAL after a failed attempt." msgstr "" "Задаёт Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°Ð´ÐµÑ€Ð¶ÐºÐ¸ перед повторной попыткой Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ðº WAL поÑле неудачи." -#: utils/misc/guc.c:2582 +#: utils/misc/guc.c:2580 msgid "Shows the number of pages per write ahead log segment." msgstr "Показывает чиÑло Ñтраниц в одном Ñегменте журнала WAL." -#: utils/misc/guc.c:2595 +#: utils/misc/guc.c:2593 msgid "Time to sleep between autovacuum runs." msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¾ÑÑ‚Ð¾Ñ Ð¼ÐµÐ¶Ð´Ñƒ запуÑками автоочиÑтки." -#: utils/misc/guc.c:2605 +#: utils/misc/guc.c:2603 msgid "Minimum number of tuple updates or deletes prior to vacuum." msgstr "Минимальное чиÑло изменений или удалений кортежей, вызывающее очиÑтку." -#: utils/misc/guc.c:2614 +#: utils/misc/guc.c:2612 msgid "Minimum number of tuple inserts, updates, or deletes prior to analyze." msgstr "" "Минимальное чиÑло добавлений, изменений или удалений кортежей, вызывающее " "анализ." -#: utils/misc/guc.c:2624 +#: utils/misc/guc.c:2622 msgid "" "Age at which to autovacuum a table to prevent transaction ID wraparound." msgstr "" "ВозраÑÑ‚, при котором необходима автоочиÑтка таблицы Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð¾Ñ‚Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ " "наложений ID транзакций." -#: utils/misc/guc.c:2635 +#: utils/misc/guc.c:2633 msgid "" "Multixact age at which to autovacuum a table to prevent multixact wraparound." msgstr "" "ВозраÑÑ‚ multixact, при котором необходима автоочиÑтка таблицы Ð´Ð»Ñ " "Ð¿Ñ€ÐµÐ´Ð¾Ñ‚Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð½Ð°Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ идентификаторов multixact." -#: utils/misc/guc.c:2645 +#: utils/misc/guc.c:2643 msgid "" "Sets the maximum number of simultaneously running autovacuum worker " "processes." @@ -24198,16 +23985,16 @@ msgstr "" "Задаёт предельное чиÑло одновременно выполнÑющихÑÑ Ñ€Ð°Ð±Ð¾Ñ‡Ð¸Ñ… процеÑÑов " "автоочиÑтки." -#: utils/misc/guc.c:2655 +#: utils/misc/guc.c:2653 msgid "Sets the maximum number of parallel processes per executor node." msgstr "Задаёт макÑимальное чиÑло параллельных процеÑÑов на узел иÑполнителÑ." -#: utils/misc/guc.c:2665 +#: utils/misc/guc.c:2663 msgid "Sets the maximum memory to be used by each autovacuum worker process." msgstr "" "Задаёт предельный объём памÑти Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ рабочего процеÑÑа автоочиÑтки." -#: utils/misc/guc.c:2676 +#: utils/misc/guc.c:2674 msgid "" "Time before a snapshot is too old to read pages changed after the snapshot " "was taken." @@ -24215,33 +24002,33 @@ msgstr "" "Срок, по иÑтечении которого Ñнимок ÑчитаетÑÑ Ñлишком Ñтарым Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ " "Ñтраниц, изменённых поÑле ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñнимка." -#: utils/misc/guc.c:2677 +#: utils/misc/guc.c:2675 msgid "A value of -1 disables this feature." msgstr "Значение -1 отключает Ñто поведение." -#: utils/misc/guc.c:2687 +#: utils/misc/guc.c:2685 msgid "Time between issuing TCP keepalives." msgstr "Интервал между TCP-пакетами пульÑа (keep-alive)." -#: utils/misc/guc.c:2688 utils/misc/guc.c:2699 +#: utils/misc/guc.c:2686 utils/misc/guc.c:2697 msgid "A value of 0 uses the system default." msgstr "При нулевом значении дейÑтвует ÑиÑтемный параметр." -#: utils/misc/guc.c:2698 +#: utils/misc/guc.c:2696 msgid "Time between TCP keepalive retransmits." msgstr "Интервал между повторениÑми TCP-пакетов пульÑа (keep-alive)." -#: utils/misc/guc.c:2709 +#: utils/misc/guc.c:2707 msgid "SSL renegotiation is no longer supported; this can only be 0." msgstr "" "Повторное ÑоглаÑование SSL более не поддерживаетÑÑ; единÑтвенное допуÑтимое " "значение - 0." -#: utils/misc/guc.c:2720 +#: utils/misc/guc.c:2718 msgid "Maximum number of TCP keepalive retransmits." msgstr "МакÑимальное чиÑло повторений TCP-пакетов пульÑа (keep-alive)." -#: utils/misc/guc.c:2721 +#: utils/misc/guc.c:2719 msgid "" "This controls the number of consecutive keepalive retransmits that can be " "lost before a connection is considered dead. A value of 0 uses the system " @@ -24251,15 +24038,15 @@ msgstr "" "прежде чем Ñоединение будет ÑчитатьÑÑ Ð¿Ñ€Ð¾Ð¿Ð°Ð²ÑˆÐ¸Ð¼. При нулевом значении " "дейÑтвует ÑиÑтемный параметр." -#: utils/misc/guc.c:2732 +#: utils/misc/guc.c:2730 msgid "Sets the maximum allowed result for exact search by GIN." msgstr "Ограничивает результат точного поиÑка Ñ Ð¸Ñпользованием GIN." -#: utils/misc/guc.c:2743 +#: utils/misc/guc.c:2741 msgid "Sets the planner's assumption about the size of the disk cache." msgstr "ПодÑказывает планировщику примерный размер диÑкового кеша." -#: utils/misc/guc.c:2744 +#: utils/misc/guc.c:2742 msgid "" "That is, the portion of the kernel's disk cache that will be used for " "PostgreSQL data files. This is measured in disk pages, which are normally 8 " @@ -24268,41 +24055,41 @@ msgstr "" "ПодразумеваетÑÑ Ñ‡Ð°Ñть диÑкового кеша в Ñдре ОС, которую займут файлы данных " "PostgreSQL. Размер задаётÑÑ Ð² диÑковых Ñтраницах (обычно Ñто 8 КБ)." -#: utils/misc/guc.c:2756 +#: utils/misc/guc.c:2754 msgid "Sets the minimum size of relations to be considered for parallel scan." msgstr "" "Задаёт минимальный размер отношений, при котором возможно параллельное " "Ñканирование." -#: utils/misc/guc.c:2768 +#: utils/misc/guc.c:2766 msgid "Shows the server version as an integer." msgstr "Показывает верÑию Ñервера в виде целого чиÑла." -#: utils/misc/guc.c:2779 +#: utils/misc/guc.c:2777 msgid "Log the use of temporary files larger than this number of kilobytes." msgstr "" "ФикÑирует в протоколе превышение временными файлами заданного размера (в КБ)." -#: utils/misc/guc.c:2780 +#: utils/misc/guc.c:2778 msgid "Zero logs all files. The default is -1 (turning this feature off)." msgstr "" "При 0 отмечаютÑÑ Ð²Ñе файлы; при -1 Ñти ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡Ð°ÑŽÑ‚ÑÑ (по умолчанию)." -#: utils/misc/guc.c:2790 +#: utils/misc/guc.c:2788 msgid "Sets the size reserved for pg_stat_activity.query, in bytes." msgstr "Задаёт размер, резервируемый Ð´Ð»Ñ pg_stat_activity.query (в байтах)." -#: utils/misc/guc.c:2805 +#: utils/misc/guc.c:2803 msgid "Sets the maximum size of the pending list for GIN index." msgstr "Задаёт макÑимальный размер ÑпиÑка-очереди Ð´Ð»Ñ GIN-индекÑа." -#: utils/misc/guc.c:2825 +#: utils/misc/guc.c:2823 msgid "" "Sets the planner's estimate of the cost of a sequentially fetched disk page." msgstr "" "Задаёт Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ñ‰Ð¸ÐºÐ° ориентир ÑтоимоÑти поÑледовательного Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñтраницы." -#: utils/misc/guc.c:2835 +#: utils/misc/guc.c:2833 msgid "" "Sets the planner's estimate of the cost of a nonsequentially fetched disk " "page." @@ -24310,13 +24097,13 @@ msgstr "" "Задаёт Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ñ‰Ð¸ÐºÐ° ориентир ÑтоимоÑти непоÑледовательного Ñ‡Ñ‚ÐµÐ½Ð¸Ñ " "Ñтраницы." -#: utils/misc/guc.c:2845 +#: utils/misc/guc.c:2843 msgid "Sets the planner's estimate of the cost of processing each tuple (row)." msgstr "" "Задаёт Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ñ‰Ð¸ÐºÐ° ориентир ÑтоимоÑти обработки каждого кортежа " "(Ñтроки)." -#: utils/misc/guc.c:2855 +#: utils/misc/guc.c:2853 msgid "" "Sets the planner's estimate of the cost of processing each index entry " "during an index scan." @@ -24324,7 +24111,7 @@ msgstr "" "Задаёт Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ñ‰Ð¸ÐºÐ° ориентир ÑтоимоÑти обработки каждого Ñлемента " "индекÑа в процеÑÑе ÑÐºÐ°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа." -#: utils/misc/guc.c:2865 +#: utils/misc/guc.c:2863 msgid "" "Sets the planner's estimate of the cost of processing each operator or " "function call." @@ -24332,7 +24119,7 @@ msgstr "" "Задаёт Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ñ‰Ð¸ÐºÐ° ориентир ÑтоимоÑти обработки каждого оператора или " "вызова функции." -#: utils/misc/guc.c:2875 +#: utils/misc/guc.c:2873 msgid "" "Sets the planner's estimate of the cost of passing each tuple (row) from " "worker to master backend." @@ -24340,7 +24127,7 @@ msgstr "" "Задаёт Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ñ‰Ð¸ÐºÐ° ориентир ÑтоимоÑти передачи каждого кортежа (Ñтроки) " "от рабочего процеÑÑа обÑлуживающему." -#: utils/misc/guc.c:2885 +#: utils/misc/guc.c:2883 msgid "" "Sets the planner's estimate of the cost of starting up worker processes for " "parallel query." @@ -24348,32 +24135,32 @@ msgstr "" "Задаёт Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ñ‰Ð¸ÐºÐ° ориентир ÑтоимоÑти запуÑка рабочих процеÑÑов Ð´Ð»Ñ " "параллельного Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñа." -#: utils/misc/guc.c:2896 +#: utils/misc/guc.c:2894 msgid "" "Sets the planner's estimate of the fraction of a cursor's rows that will be " "retrieved." msgstr "" "Задаёт Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ñ‰Ð¸ÐºÐ° ориентир доли требуемых Ñтрок курÑора в общем чиÑле." -#: utils/misc/guc.c:2907 +#: utils/misc/guc.c:2905 msgid "GEQO: selective pressure within the population." msgstr "GEQO: Ñелективное давление в популÑции." -#: utils/misc/guc.c:2917 +#: utils/misc/guc.c:2915 msgid "GEQO: seed for random path selection." msgstr "GEQO: отправное значение Ð´Ð»Ñ Ñлучайного выбора пути." -#: utils/misc/guc.c:2927 +#: utils/misc/guc.c:2925 msgid "Multiple of the average buffer usage to free per round." msgstr "" "Множитель Ð´Ð»Ñ Ñреднего чиÑла иÑпользованных буферов, определÑющий чиÑло " "буферов, оÑвобождаемых за один подход." -#: utils/misc/guc.c:2937 +#: utils/misc/guc.c:2935 msgid "Sets the seed for random-number generation." msgstr "Задаёт отправное значение Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° Ñлучайных чиÑел." -#: utils/misc/guc.c:2948 +#: utils/misc/guc.c:2946 msgid "" "Number of tuple updates or deletes prior to vacuum as a fraction of " "reltuples." @@ -24381,7 +24168,7 @@ msgstr "" "Отношение чиÑла обновлений или удалений кортежей к reltuples, определÑющее " "потребноÑть в очиÑтке." -#: utils/misc/guc.c:2957 +#: utils/misc/guc.c:2955 msgid "" "Number of tuple inserts, updates, or deletes prior to analyze as a fraction " "of reltuples." @@ -24389,7 +24176,7 @@ msgstr "" "Отношение чиÑла добавлений, обновлений или удалений кортежей к reltuples, " "определÑющее потребноÑть в анализе." -#: utils/misc/guc.c:2967 +#: utils/misc/guc.c:2965 msgid "" "Time spent flushing dirty buffers during checkpoint, as fraction of " "checkpoint interval." @@ -24397,53 +24184,53 @@ msgstr "" "Отношение продолжительноÑти ÑброÑа \"грÑзных\" буферов во Ð²Ñ€ÐµÐ¼Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð¾Ð¹ " "точки к интервалу контрольных точек." -#: utils/misc/guc.c:2986 +#: utils/misc/guc.c:2984 msgid "Sets the shell command that will be called to archive a WAL file." msgstr "Задаёт команду оболочки, вызываемую Ð´Ð»Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð°Ñ†Ð¸Ð¸ файла WAL." -#: utils/misc/guc.c:2996 +#: utils/misc/guc.c:2994 msgid "Sets the client's character set encoding." msgstr "Задаёт кодировку Ñимволов, иÑпользуемую клиентом." -#: utils/misc/guc.c:3007 +#: utils/misc/guc.c:3005 msgid "Controls information prefixed to each log line." msgstr "ОпределÑет Ñодержимое префикÑа каждой Ñтроки протокола." -#: utils/misc/guc.c:3008 +#: utils/misc/guc.c:3006 msgid "If blank, no prefix is used." msgstr "При пуÑтом значении Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ñ‚Ð°ÐºÐ¶Ðµ отÑутÑтвует." -#: utils/misc/guc.c:3017 +#: utils/misc/guc.c:3015 msgid "Sets the time zone to use in log messages." msgstr "Задаёт чаÑовой поÑÑ Ð´Ð»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° времени в ÑообщениÑÑ… протокола." -#: utils/misc/guc.c:3027 +#: utils/misc/guc.c:3025 msgid "Sets the display format for date and time values." msgstr "УÑтанавливает формат вывода дат и времени." -#: utils/misc/guc.c:3028 +#: utils/misc/guc.c:3026 msgid "Also controls interpretation of ambiguous date inputs." msgstr "Также помогает разбирать неоднозначно заданные вводимые даты." -#: utils/misc/guc.c:3039 +#: utils/misc/guc.c:3037 msgid "Sets the default tablespace to create tables and indexes in." msgstr "" "Задаёт табличное проÑтранÑтво по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… таблиц и индекÑов." -#: utils/misc/guc.c:3040 +#: utils/misc/guc.c:3038 msgid "An empty string selects the database's default tablespace." msgstr "При пуÑтом значении иÑпользуетÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ‡Ð½Ð¾Ðµ проÑтранÑтво базы данных." -#: utils/misc/guc.c:3050 +#: utils/misc/guc.c:3048 msgid "Sets the tablespace(s) to use for temporary tables and sort files." msgstr "" "Задаёт табличное проÑтранÑтво(а) Ð´Ð»Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… таблиц и файлов Ñортировки." -#: utils/misc/guc.c:3061 +#: utils/misc/guc.c:3059 msgid "Sets the path for dynamically loadable modules." msgstr "Задаёт путь Ð´Ð»Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑки загружаемых модулей." -#: utils/misc/guc.c:3062 +#: utils/misc/guc.c:3060 msgid "" "If a dynamically loadable module needs to be opened and the specified name " "does not have a directory component (i.e., the name does not contain a " @@ -24453,79 +24240,79 @@ msgstr "" "указан путь (нет Ñимвола '/'), ÑиÑтема будет иÑкать Ñтот файл в заданном " "пути." -#: utils/misc/guc.c:3075 +#: utils/misc/guc.c:3073 msgid "Sets the location of the Kerberos server key file." msgstr "Задаёт размещение файла Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð¼ Kerberos Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ñервера." -#: utils/misc/guc.c:3086 +#: utils/misc/guc.c:3084 msgid "Sets the Bonjour service name." msgstr "Задаёт название Ñлужбы Bonjour." -#: utils/misc/guc.c:3098 +#: utils/misc/guc.c:3096 msgid "Shows the collation order locale." msgstr "Показывает правило Ñортировки." -#: utils/misc/guc.c:3109 +#: utils/misc/guc.c:3107 msgid "Shows the character classification and case conversion locale." msgstr "Показывает правило клаÑÑификации Ñимволов и Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ€ÐµÐ³Ð¸Ñтра." -#: utils/misc/guc.c:3120 +#: utils/misc/guc.c:3118 msgid "Sets the language in which messages are displayed." msgstr "Задаёт Ñзык выводимых Ñообщений." -#: utils/misc/guc.c:3130 +#: utils/misc/guc.c:3128 msgid "Sets the locale for formatting monetary amounts." msgstr "Задаёт локаль Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´ÐµÐ½ÐµÐ¶Ð½Ñ‹Ñ… Ñумм." -#: utils/misc/guc.c:3140 +#: utils/misc/guc.c:3138 msgid "Sets the locale for formatting numbers." msgstr "Задаёт локаль Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‡Ð¸Ñел." -#: utils/misc/guc.c:3150 +#: utils/misc/guc.c:3148 msgid "Sets the locale for formatting date and time values." msgstr "Задаёт локаль Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð°Ñ‚ и времени." -#: utils/misc/guc.c:3160 +#: utils/misc/guc.c:3158 msgid "Lists shared libraries to preload into each backend." msgstr "" "СпиÑок разделÑемых библиотек, заранее загружаемых в каждый обÑлуживающий " "процеÑÑ." -#: utils/misc/guc.c:3171 +#: utils/misc/guc.c:3169 msgid "Lists shared libraries to preload into server." msgstr "СпиÑок разделÑемых библиотек, заранее загружаемых в памÑть Ñервера." -#: utils/misc/guc.c:3182 +#: utils/misc/guc.c:3180 msgid "Lists unprivileged shared libraries to preload into each backend." msgstr "" "СпиÑок непривилегированных разделÑемых библиотек, заранее загружаемых в " "каждый обÑлуживающий процеÑÑ." -#: utils/misc/guc.c:3193 +#: utils/misc/guc.c:3191 msgid "Sets the schema search order for names that are not schema-qualified." msgstr "Задаёт порÑдок проÑмотра Ñхемы при поиÑке неполных имён." -#: utils/misc/guc.c:3205 +#: utils/misc/guc.c:3203 msgid "Sets the server (database) character set encoding." msgstr "Задаёт кодировку Ñимволов Ñервера (баз данных)." -#: utils/misc/guc.c:3217 +#: utils/misc/guc.c:3215 msgid "Shows the server version." msgstr "Показывает верÑию Ñервера." -#: utils/misc/guc.c:3229 +#: utils/misc/guc.c:3227 msgid "Sets the current role." msgstr "Задаёт текущую роль." -#: utils/misc/guc.c:3241 +#: utils/misc/guc.c:3239 msgid "Sets the session user name." msgstr "Задаёт Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² ÑеанÑе." -#: utils/misc/guc.c:3252 +#: utils/misc/guc.c:3250 msgid "Sets the destination for server log output." msgstr "ОпределÑет, куда будет выводитьÑÑ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð» Ñервера." -#: utils/misc/guc.c:3253 +#: utils/misc/guc.c:3251 msgid "" "Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and " "\"eventlog\", depending on the platform." @@ -24533,24 +24320,24 @@ msgstr "" "Значение может включать Ñочетание Ñлов \"stderr\", \"syslog\", \"csvlog\" и " "\"eventlog\", в завиÑимоÑти от платформы." -#: utils/misc/guc.c:3264 +#: utils/misc/guc.c:3262 msgid "Sets the destination directory for log files." msgstr "Задаёт целевой каталог Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² протоколов." -#: utils/misc/guc.c:3265 +#: utils/misc/guc.c:3263 msgid "Can be specified as relative to the data directory or as absolute path." msgstr "" "Путь может быть абÑолютным или указыватьÑÑ Ð¾Ñ‚Ð½Ð¾Ñительно каталога данных." -#: utils/misc/guc.c:3275 +#: utils/misc/guc.c:3273 msgid "Sets the file name pattern for log files." msgstr "Задаёт шаблон имени Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² протоколов." -#: utils/misc/guc.c:3286 +#: utils/misc/guc.c:3284 msgid "Sets the program name used to identify PostgreSQL messages in syslog." msgstr "Задаёт Ð¸Ð¼Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹ Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ Ñообщений PostgreSQL в syslog." -#: utils/misc/guc.c:3297 +#: utils/misc/guc.c:3295 msgid "" "Sets the application name used to identify PostgreSQL messages in the event " "log." @@ -24558,119 +24345,119 @@ msgstr "" "Задаёт Ð¸Ð¼Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ Ñообщений PostgreSQL в журнале " "Ñобытий." -#: utils/misc/guc.c:3308 +#: utils/misc/guc.c:3306 msgid "Sets the time zone for displaying and interpreting time stamps." msgstr "" "Задаёт чаÑовой поÑÑ Ð´Ð»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° и разбора Ñтрокового предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸." -#: utils/misc/guc.c:3318 +#: utils/misc/guc.c:3316 msgid "Selects a file of time zone abbreviations." msgstr "Выбирает файл Ñ Ñокращёнными названиÑми чаÑовых поÑÑов." -#: utils/misc/guc.c:3328 +#: utils/misc/guc.c:3326 msgid "Sets the current transaction's isolation level." msgstr "Задаёт текущий уровень изолÑции транзакций." -#: utils/misc/guc.c:3339 +#: utils/misc/guc.c:3337 msgid "Sets the owning group of the Unix-domain socket." msgstr "Задаёт группу-владельца доменного Ñокета Unix." -#: utils/misc/guc.c:3340 +#: utils/misc/guc.c:3338 msgid "" "The owning user of the socket is always the user that starts the server." msgstr "" "СобÑтвенно владельцем Ñокета вÑегда будет пользователь, запуÑкающий Ñервер." -#: utils/misc/guc.c:3350 +#: utils/misc/guc.c:3348 msgid "Sets the directories where Unix-domain sockets will be created." msgstr "Задаёт каталоги, где будут ÑоздаватьÑÑ Ð´Ð¾Ð¼ÐµÐ½Ð½Ñ‹Ðµ Ñокеты Unix." -#: utils/misc/guc.c:3365 +#: utils/misc/guc.c:3363 msgid "Sets the host name or IP address(es) to listen to." msgstr "Задаёт Ð¸Ð¼Ñ ÑƒÐ·Ð»Ð° или IP-адреÑ(а) Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð²Ñзки." -#: utils/misc/guc.c:3380 +#: utils/misc/guc.c:3378 msgid "Sets the server's data directory." msgstr "ОпределÑет каталог данных Ñервера." -#: utils/misc/guc.c:3391 +#: utils/misc/guc.c:3389 msgid "Sets the server's main configuration file." msgstr "ОпределÑет оÑновной файл конфигурации Ñервера." -#: utils/misc/guc.c:3402 +#: utils/misc/guc.c:3400 msgid "Sets the server's \"hba\" configuration file." msgstr "Задаёт путь к файлу конфигурации \"hba\"." -#: utils/misc/guc.c:3413 +#: utils/misc/guc.c:3411 msgid "Sets the server's \"ident\" configuration file." msgstr "Задаёт путь к файлу конфигурации \"ident\"." -#: utils/misc/guc.c:3424 +#: utils/misc/guc.c:3422 msgid "Writes the postmaster PID to the specified file." msgstr "Файл, в который будет запиÑан код процеÑÑа postmaster." -#: utils/misc/guc.c:3435 +#: utils/misc/guc.c:3433 msgid "Location of the SSL server certificate file." msgstr "Размещение файла Ñертификата Ñервера Ð´Ð»Ñ SSL." -#: utils/misc/guc.c:3445 +#: utils/misc/guc.c:3443 msgid "Location of the SSL server private key file." msgstr "Размещение файла Ñ Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¼ ключом Ñервера Ð´Ð»Ñ SSL." -#: utils/misc/guc.c:3455 +#: utils/misc/guc.c:3453 msgid "Location of the SSL certificate authority file." msgstr "Размещение файла центра Ñертификации Ð´Ð»Ñ SSL." -#: utils/misc/guc.c:3465 +#: utils/misc/guc.c:3463 msgid "Location of the SSL certificate revocation list file." msgstr "Размещение файла Ñо ÑпиÑком отзыва Ñертификатов Ð´Ð»Ñ SSL." -#: utils/misc/guc.c:3475 +#: utils/misc/guc.c:3473 msgid "Writes temporary statistics files to the specified directory." msgstr "Каталог, в который будут запиÑыватьÑÑ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ðµ файлы ÑтатиÑтики." -#: utils/misc/guc.c:3486 +#: utils/misc/guc.c:3484 msgid "" "Number of synchronous standbys and list of names of potential synchronous " "ones." msgstr "" "КоличеÑтво потенциально Ñинхронных резервных Ñерверов и ÑпиÑок их имён." -#: utils/misc/guc.c:3497 +#: utils/misc/guc.c:3495 msgid "Sets default text search configuration." msgstr "Задаёт конфигурацию текÑтового поиÑка по умолчанию." -#: utils/misc/guc.c:3507 +#: utils/misc/guc.c:3505 msgid "Sets the list of allowed SSL ciphers." msgstr "Задаёт ÑпиÑок допуÑтимых алгоритмов ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ SSL." -#: utils/misc/guc.c:3522 +#: utils/misc/guc.c:3520 msgid "Sets the curve to use for ECDH." msgstr "Задаёт кривую Ð´Ð»Ñ ECDH." -#: utils/misc/guc.c:3537 +#: utils/misc/guc.c:3535 msgid "Sets the application name to be reported in statistics and logs." msgstr "" "Задаёт Ð¸Ð¼Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ, которое будет выводитьÑÑ Ð² ÑтатиÑтике и протоколах." -#: utils/misc/guc.c:3548 +#: utils/misc/guc.c:3546 msgid "Sets the name of the cluster, which is included in the process title." msgstr "Задаёт Ð¸Ð¼Ñ ÐºÐ»Ð°Ñтера, которое будет добавлÑтьÑÑ Ð² название процеÑÑа." -#: utils/misc/guc.c:3568 +#: utils/misc/guc.c:3566 msgid "Sets whether \"\\'\" is allowed in string literals." msgstr "ОпределÑет, можно ли иÑпользовать \"\\'\" в текÑтовых Ñтроках." -#: utils/misc/guc.c:3578 +#: utils/misc/guc.c:3576 msgid "Sets the output format for bytea." msgstr "Задаёт формат вывода данных типа bytea." -#: utils/misc/guc.c:3588 +#: utils/misc/guc.c:3586 msgid "Sets the message levels that are sent to the client." msgstr "Ограничивает уровень Ñообщений, передаваемых клиенту." -#: utils/misc/guc.c:3589 utils/misc/guc.c:3642 utils/misc/guc.c:3653 -#: utils/misc/guc.c:3719 +#: utils/misc/guc.c:3587 utils/misc/guc.c:3640 utils/misc/guc.c:3651 +#: utils/misc/guc.c:3717 msgid "" "Each level includes all the levels that follow it. The later the level, the " "fewer messages are sent." @@ -24678,12 +24465,12 @@ msgstr "" "Каждый уровень включает вÑе поÑледующие. Чем выше уровень, тем меньше " "Ñообщений." -#: utils/misc/guc.c:3599 +#: utils/misc/guc.c:3597 msgid "Enables the planner to use constraints to optimize queries." msgstr "" "Разрешает планировщику оптимизировать запроÑÑ‹, полагаÑÑÑŒ на ограничениÑ." -#: utils/misc/guc.c:3600 +#: utils/misc/guc.c:3598 msgid "" "Table scans will be skipped if their constraints guarantee that no rows " "match the query." @@ -24691,76 +24478,76 @@ msgstr "" "Сканирование таблицы не будет выполнÑтьÑÑ, еÑли её Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð³Ð°Ñ€Ð°Ð½Ñ‚Ð¸Ñ€ÑƒÑŽÑ‚, " "что запроÑу не удовлетворÑÑŽÑ‚ никакие Ñтроки." -#: utils/misc/guc.c:3610 +#: utils/misc/guc.c:3608 msgid "Sets the transaction isolation level of each new transaction." msgstr "Задаёт уровень изолÑции транзакций Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… транзакций." -#: utils/misc/guc.c:3620 +#: utils/misc/guc.c:3618 msgid "Sets the display format for interval values." msgstr "Задаёт формат Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ñ… значений." -#: utils/misc/guc.c:3631 +#: utils/misc/guc.c:3629 msgid "Sets the verbosity of logged messages." msgstr "Задаёт детализацию протоколируемых Ñообщений." -#: utils/misc/guc.c:3641 +#: utils/misc/guc.c:3639 msgid "Sets the message levels that are logged." msgstr "Ограничивает уровни протоколируемых Ñообщений." -#: utils/misc/guc.c:3652 +#: utils/misc/guc.c:3650 msgid "" "Causes all statements generating error at or above this level to be logged." msgstr "" "Включает протоколирование Ð´Ð»Ñ SQL-операторов, выполненных Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹ Ñтого " "или большего уровнÑ." -#: utils/misc/guc.c:3663 +#: utils/misc/guc.c:3661 msgid "Sets the type of statements logged." msgstr "Задаёт тип протоколируемых операторов." -#: utils/misc/guc.c:3673 +#: utils/misc/guc.c:3671 msgid "Sets the syslog \"facility\" to be used when syslog enabled." msgstr "Задаёт Ð¿Ð¾Ð»ÑƒÑ‡Ð°Ñ‚ÐµÐ»Ñ Ñообщений, отправлÑемых в syslog." -#: utils/misc/guc.c:3688 +#: utils/misc/guc.c:3686 msgid "Sets the session's behavior for triggers and rewrite rules." msgstr "" "Задаёт режим ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð¾Ð² и правил перезапиÑи Ð´Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ ÑеанÑа." -#: utils/misc/guc.c:3698 +#: utils/misc/guc.c:3696 msgid "Sets the current transaction's synchronization level." msgstr "Задаёт уровень Ñинхронизации текущей транзакции." -#: utils/misc/guc.c:3708 +#: utils/misc/guc.c:3706 msgid "Allows archiving of WAL files using archive_command." msgstr "Разрешает архивацию файлов WAL командой archive_command." -#: utils/misc/guc.c:3718 +#: utils/misc/guc.c:3716 msgid "Enables logging of recovery-related debugging information." msgstr "" "Включает протоколирование отладочной информации, ÑвÑзанной Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸ÐµÐ¹." -#: utils/misc/guc.c:3734 +#: utils/misc/guc.c:3732 msgid "Collects function-level statistics on database activity." msgstr "Включает Ñбор ÑтатиÑтики активноÑти в БД на уровне функций." -#: utils/misc/guc.c:3744 +#: utils/misc/guc.c:3742 msgid "Set the level of information written to the WAL." msgstr "Задаёт уровень информации, запиÑываемой в WAL." -#: utils/misc/guc.c:3754 +#: utils/misc/guc.c:3752 msgid "Selects the dynamic shared memory implementation used." msgstr "Выбирает иÑпользуемую реализацию динамичеÑкой разделÑемой памÑти." -#: utils/misc/guc.c:3764 +#: utils/misc/guc.c:3762 msgid "Selects the method used for forcing WAL updates to disk." msgstr "Выбирает метод принудительной запиÑи изменений в WAL на диÑк." -#: utils/misc/guc.c:3774 +#: utils/misc/guc.c:3772 msgid "Sets how binary values are to be encoded in XML." msgstr "ОпределÑет, как должны кодироватьÑÑ Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ñ‹Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² XML." -#: utils/misc/guc.c:3784 +#: utils/misc/guc.c:3782 msgid "" "Sets whether XML data in implicit parsing and serialization operations is to " "be considered as documents or content fragments." @@ -24768,15 +24555,15 @@ msgstr "" "ОпределÑет, Ñледует ли раÑÑматривать XML-данные в неÑвных операциÑÑ… разбора " "и Ñериализации как документы или как фрагменты ÑодержаниÑ." -#: utils/misc/guc.c:3795 +#: utils/misc/guc.c:3793 msgid "Use of huge pages on Linux." msgstr "Включает иÑпользование гигантÑких Ñтраниц в Linux." -#: utils/misc/guc.c:3805 +#: utils/misc/guc.c:3803 msgid "Forces use of parallel query facilities." msgstr "Принудительно включает режим параллельного Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñов." -#: utils/misc/guc.c:3806 +#: utils/misc/guc.c:3804 msgid "" "If possible, run query using a parallel worker and with parallel " "restrictions." @@ -24784,12 +24571,12 @@ msgstr "" "ЕÑли возможно, Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑетÑÑ Ð¿Ð°Ñ€Ð°Ð»Ð»ÐµÐ»ÑŒÐ½Ñ‹Ð¼Ð¸ иÑполнителÑми и Ñ " "ограничениÑми параллельноÑти." -#: utils/misc/guc.c:4606 +#: utils/misc/guc.c:4604 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: ошибка доÑтупа к каталогу \"%s\": %s\n" -#: utils/misc/guc.c:4611 +#: utils/misc/guc.c:4609 #, c-format msgid "" "Run initdb or pg_basebackup to initialize a PostgreSQL data directory.\n" @@ -24797,7 +24584,7 @@ msgstr "" "ЗапуÑтите initdb или pg_basebackup Ð´Ð»Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ каталога данных " "PostgreSQL.\n" -#: utils/misc/guc.c:4631 +#: utils/misc/guc.c:4629 #, c-format msgid "" "%s does not know where to find the server configuration file.\n" @@ -24808,12 +24595,12 @@ msgstr "" "Ð’Ñ‹ должны указать его раÑположение в параметре --config-file или -D, либо " "уÑтановить переменную Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ PGDATA.\n" -#: utils/misc/guc.c:4650 +#: utils/misc/guc.c:4648 #, c-format msgid "%s: could not access the server configuration file \"%s\": %s\n" msgstr "%s не может открыть файл конфигурации Ñервера \"%s\": %s\n" -#: utils/misc/guc.c:4676 +#: utils/misc/guc.c:4674 #, c-format msgid "" "%s does not know where to find the database system data.\n" @@ -24824,7 +24611,7 @@ msgstr "" "Их раÑположение можно задать как значение \"data_directory\" в файле \"%s\", " "либо передать в параметре -D, либо уÑтановить переменную Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ PGDATA.\n" -#: utils/misc/guc.c:4724 +#: utils/misc/guc.c:4722 #, c-format msgid "" "%s does not know where to find the \"hba\" configuration file.\n" @@ -24835,7 +24622,7 @@ msgstr "" "Его раÑположение можно задать как значение \"hba_file\" в файле \"%s\", либо " "передать в параметре -D, либо уÑтановить переменную Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ PGDATA.\n" -#: utils/misc/guc.c:4747 +#: utils/misc/guc.c:4745 #, c-format msgid "" "%s does not know where to find the \"ident\" configuration file.\n" @@ -24846,127 +24633,127 @@ msgstr "" "Его раÑположение можно задать как значение \"ident_file\" в файле \"%s\", " "либо передать в параметре -D, либо уÑтановить переменную Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ PGDATA.\n" -#: utils/misc/guc.c:5421 utils/misc/guc.c:5468 +#: utils/misc/guc.c:5419 utils/misc/guc.c:5466 msgid "Value exceeds integer range." msgstr "Значение выходит за рамки целых чиÑел." -#: utils/misc/guc.c:5691 +#: utils/misc/guc.c:5689 #, c-format msgid "parameter \"%s\" requires a numeric value" msgstr "параметр \"%s\" требует чиÑловое значение" -#: utils/misc/guc.c:5700 +#: utils/misc/guc.c:5698 #, c-format msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)" msgstr "%g вне диапазона, допуÑтимого Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\" (%g .. %g)" -#: utils/misc/guc.c:5853 utils/misc/guc.c:7196 +#: utils/misc/guc.c:5851 utils/misc/guc.c:7194 #, c-format msgid "cannot set parameters during a parallel operation" msgstr "уÑтанавливать параметры во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð°Ñ€Ð°Ð»Ð»ÐµÐ»ÑŒÐ½Ñ‹Ñ… операций нельзÑ" -#: utils/misc/guc.c:5860 utils/misc/guc.c:6611 utils/misc/guc.c:6663 -#: utils/misc/guc.c:7024 utils/misc/guc.c:7784 utils/misc/guc.c:7952 -#: utils/misc/guc.c:9609 +#: utils/misc/guc.c:5858 utils/misc/guc.c:6609 utils/misc/guc.c:6661 +#: utils/misc/guc.c:7022 utils/misc/guc.c:7782 utils/misc/guc.c:7950 +#: utils/misc/guc.c:9625 #, c-format msgid "unrecognized configuration parameter \"%s\"" msgstr "нераÑпознанный параметр конфигурации: \"%s\"" -#: utils/misc/guc.c:5875 utils/misc/guc.c:7036 +#: utils/misc/guc.c:5873 utils/misc/guc.c:7034 #, c-format msgid "parameter \"%s\" cannot be changed" msgstr "параметр \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ" -#: utils/misc/guc.c:5898 utils/misc/guc.c:6091 utils/misc/guc.c:6181 -#: utils/misc/guc.c:6271 utils/misc/guc.c:6379 utils/misc/guc.c:6474 +#: utils/misc/guc.c:5896 utils/misc/guc.c:6089 utils/misc/guc.c:6179 +#: utils/misc/guc.c:6269 utils/misc/guc.c:6377 utils/misc/guc.c:6472 #: guc-file.l:350 #, c-format msgid "parameter \"%s\" cannot be changed without restarting the server" msgstr "параметр \"%s\" изменÑетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ при перезапуÑке Ñервера" -#: utils/misc/guc.c:5908 +#: utils/misc/guc.c:5906 #, c-format msgid "parameter \"%s\" cannot be changed now" msgstr "параметр \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ ÑейчаÑ" -#: utils/misc/guc.c:5926 utils/misc/guc.c:5972 utils/misc/guc.c:9625 +#: utils/misc/guc.c:5924 utils/misc/guc.c:5970 utils/misc/guc.c:9641 #, c-format msgid "permission denied to set parameter \"%s\"" msgstr "нет прав Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"%s\"" -#: utils/misc/guc.c:5962 +#: utils/misc/guc.c:5960 #, c-format msgid "parameter \"%s\" cannot be set after connection start" msgstr "параметр \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð·Ð°Ð´Ð°Ñ‚ÑŒ поÑле уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑоединениÑ" -#: utils/misc/guc.c:6010 +#: utils/misc/guc.c:6008 #, c-format msgid "cannot set parameter \"%s\" within security-definer function" msgstr "" "параметр \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð·Ð°Ð´Ð°Ñ‚ÑŒ в функции Ñ ÐºÐ¾Ð½Ñ‚ÐµÐºÑтом безопаÑноÑти " "определившего" -#: utils/misc/guc.c:6619 utils/misc/guc.c:6667 utils/misc/guc.c:7958 +#: utils/misc/guc.c:6617 utils/misc/guc.c:6665 utils/misc/guc.c:7956 #, c-format msgid "must be superuser to examine \"%s\"" msgstr "прочитать \"%s\" может только Ñуперпользователь" -#: utils/misc/guc.c:6733 +#: utils/misc/guc.c:6731 #, c-format msgid "SET %s takes only one argument" msgstr "SET %s принимает только один аргумент" -#: utils/misc/guc.c:6984 +#: utils/misc/guc.c:6982 #, c-format msgid "must be superuser to execute ALTER SYSTEM command" msgstr "выполнить команду ALTER SYSTEM может только Ñуперпользователь" -#: utils/misc/guc.c:7069 +#: utils/misc/guc.c:7067 #, c-format msgid "parameter value for ALTER SYSTEM must not contain a newline" msgstr "значение параметра Ð´Ð»Ñ ALTER SYSTEM не должно быть многоÑтрочным" -#: utils/misc/guc.c:7114 +#: utils/misc/guc.c:7112 #, c-format msgid "could not parse contents of file \"%s\"" msgstr "не удалоÑÑŒ разобрать Ñодержимое файла \"%s\"" -#: utils/misc/guc.c:7272 +#: utils/misc/guc.c:7270 #, c-format msgid "SET LOCAL TRANSACTION SNAPSHOT is not implemented" msgstr "SET LOCAL TRANSACTION SNAPSHOT не реализовано" -#: utils/misc/guc.c:7357 +#: utils/misc/guc.c:7355 #, c-format msgid "SET requires parameter name" msgstr "SET требует Ð¸Ð¼Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°" -#: utils/misc/guc.c:7481 +#: utils/misc/guc.c:7479 #, c-format msgid "attempt to redefine parameter \"%s\"" msgstr "попытка переопределить параметр \"%s\"" -#: utils/misc/guc.c:9242 +#: utils/misc/guc.c:9258 #, c-format msgid "parameter \"%s\" could not be set" msgstr "параметр \"%s\" Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÑтановить" -#: utils/misc/guc.c:9329 +#: utils/misc/guc.c:9345 #, c-format msgid "could not parse setting for parameter \"%s\"" msgstr "не удалоÑÑŒ разобрать значение параметра \"%s\"" -#: utils/misc/guc.c:9687 utils/misc/guc.c:9721 +#: utils/misc/guc.c:9703 utils/misc/guc.c:9737 #, c-format msgid "invalid value for parameter \"%s\": %d" msgstr "неверное значение параметра \"%s\": %d" -#: utils/misc/guc.c:9755 +#: utils/misc/guc.c:9771 #, c-format msgid "invalid value for parameter \"%s\": %g" msgstr "неверное значение параметра \"%s\": %g" -#: utils/misc/guc.c:9945 +#: utils/misc/guc.c:9961 #, c-format msgid "" "\"temp_buffers\" cannot be changed after any temporary tables have been " @@ -24975,23 +24762,23 @@ msgstr "" "параметр \"temp_buffers\" Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ поÑле Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ðº временным " "таблицам в текущем ÑеанÑе." -#: utils/misc/guc.c:9957 +#: utils/misc/guc.c:9973 #, c-format msgid "Bonjour is not supported by this build" msgstr "Bonjour не поддерживаетÑÑ Ð² данной Ñборке" -#: utils/misc/guc.c:9970 +#: utils/misc/guc.c:9986 #, c-format msgid "SSL is not supported by this build" msgstr "SSL не поддерживаетÑÑ Ð² данной Ñборке" -#: utils/misc/guc.c:9982 +#: utils/misc/guc.c:9998 #, c-format msgid "Cannot enable parameter when \"log_statement_stats\" is true." msgstr "" "Этот параметр Ð½ÐµÐ»ÑŒÐ·Ñ Ð²ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ, когда \"log_statement_stats\" равен true." -#: utils/misc/guc.c:9994 +#: utils/misc/guc.c:10010 #, c-format msgid "" "Cannot enable \"log_statement_stats\" when \"log_parser_stats\", " @@ -25012,6 +24799,12 @@ msgid "" msgstr "" "заданный в запроÑе кортеж результата неÑовмеÑтим Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ результата функции" +#. translator: %d.%02ds is system CPU time, %d.%02du is user CPU time +#: utils/misc/pg_rusage.c:66 +#, c-format +msgid "CPU %d.%02ds/%d.%02du sec elapsed %d.%02d sec" +msgstr "CPU %d.%02ds/%d.%02du Ñ, прошло %d.%02d Ñ" + #: utils/misc/rls.c:127 #, c-format msgid "query would be affected by row-level security policy for table \"%s\"" @@ -25114,7 +24907,7 @@ msgid "@INCLUDE without file name in time zone file \"%s\", line %d" msgstr "" "в @INCLUDE не указано Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° (файл чаÑовых поÑÑов \"%s\", Ñтрока %d)" -#: utils/mmgr/aset.c:510 +#: utils/mmgr/aset.c:511 #, c-format msgid "Failed while creating memory context \"%s\"." msgstr "Ошибка при Ñоздании контекÑта памÑти \"%s\"." @@ -25157,22 +24950,22 @@ msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ PREPARE Ð´Ð»Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸, Ñ msgid "could not read block %ld of temporary file: %m" msgstr "не удалоÑÑŒ Ñчитать блок %ld временного файла: %m" -#: utils/sort/tuplesort.c:3393 +#: utils/sort/tuplesort.c:3402 #, c-format msgid "cannot have more than %d runs for an external sort" msgstr "чиÑло потоков данных Ð´Ð»Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ¹ Ñортировки не может превышать %d" -#: utils/sort/tuplesort.c:4465 +#: utils/sort/tuplesort.c:4479 #, c-format msgid "could not create unique index \"%s\"" msgstr "Ñоздать уникальный Ð¸Ð½Ð´ÐµÐºÑ \"%s\" не удалоÑÑŒ" -#: utils/sort/tuplesort.c:4467 +#: utils/sort/tuplesort.c:4481 #, c-format msgid "Key %s is duplicated." msgstr "Ключ %s дублируетÑÑ." -#: utils/sort/tuplesort.c:4468 +#: utils/sort/tuplesort.c:4482 #, c-format msgid "Duplicate keys exist." msgstr "Данные Ñодержат дублирующиеÑÑ ÐºÐ»ÑŽÑ‡Ð¸." @@ -25184,45 +24977,45 @@ msgstr "Данные Ñодержат дублирующиеÑÑ ÐºÐ»ÑŽÑ‡Ð¸." #: utils/sort/tuplestore.c:1313 #, c-format msgid "could not seek in tuplestore temporary file: %m" -msgstr "не удалоÑÑŒ перемеÑтитьÑÑ Ð² файле временного хранилища кортежей: %m" +msgstr "не удалоÑÑŒ перемеÑтитьÑÑ Ð²Ð¾ временном файле иÑточника кортежей: %m" #: utils/sort/tuplestore.c:1460 utils/sort/tuplestore.c:1533 #: utils/sort/tuplestore.c:1539 #, c-format msgid "could not read from tuplestore temporary file: %m" -msgstr "не удалоÑÑŒ прочитать файл временного хранилища кортежей: %m" +msgstr "не удалоÑÑŒ прочитать временный файл иÑточника кортежей: %m" #: utils/sort/tuplestore.c:1501 utils/sort/tuplestore.c:1506 #: utils/sort/tuplestore.c:1512 #, c-format msgid "could not write to tuplestore temporary file: %m" -msgstr "не удалоÑÑŒ запиÑать в файл временного хранилища кортежей: %m" +msgstr "не удалоÑÑŒ запиÑать во временный файл иÑточника кортежей: %m" -#: utils/time/snapmgr.c:577 +#: utils/time/snapmgr.c:618 #, c-format msgid "The source transaction is not running anymore." msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ ÑƒÐ¶Ðµ не выполнÑетÑÑ." -#: utils/time/snapmgr.c:1138 +#: utils/time/snapmgr.c:1190 #, c-format msgid "cannot export a snapshot from a subtransaction" msgstr "ÑкÑпортировать Ñнимок из вложенной транзакции нельзÑ" -#: utils/time/snapmgr.c:1287 utils/time/snapmgr.c:1292 -#: utils/time/snapmgr.c:1297 utils/time/snapmgr.c:1312 -#: utils/time/snapmgr.c:1317 utils/time/snapmgr.c:1322 -#: utils/time/snapmgr.c:1421 utils/time/snapmgr.c:1437 -#: utils/time/snapmgr.c:1462 +#: utils/time/snapmgr.c:1339 utils/time/snapmgr.c:1344 +#: utils/time/snapmgr.c:1349 utils/time/snapmgr.c:1364 +#: utils/time/snapmgr.c:1369 utils/time/snapmgr.c:1374 +#: utils/time/snapmgr.c:1473 utils/time/snapmgr.c:1489 +#: utils/time/snapmgr.c:1514 #, c-format msgid "invalid snapshot data in file \"%s\"" msgstr "неверные данные Ñнимка в файле \"%s\"" -#: utils/time/snapmgr.c:1359 +#: utils/time/snapmgr.c:1411 #, c-format msgid "SET TRANSACTION SNAPSHOT must be called before any query" msgstr "команда SET TRANSACTION SNAPSHOT должна выполнÑтьÑÑ Ð´Ð¾ запроÑов" -#: utils/time/snapmgr.c:1368 +#: utils/time/snapmgr.c:1420 #, c-format msgid "" "a snapshot-importing transaction must have isolation level SERIALIZABLE or " @@ -25231,12 +25024,12 @@ msgstr "" "транзакциÑ, Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÑŽÑ‰Ð°Ñ Ñнимок, должна иметь уровень изолÑции SERIALIZABLE " "или REPEATABLE READ" -#: utils/time/snapmgr.c:1377 utils/time/snapmgr.c:1386 +#: utils/time/snapmgr.c:1429 utils/time/snapmgr.c:1438 #, c-format msgid "invalid snapshot identifier: \"%s\"" msgstr "неверный идентификатор Ñнимка: \"%s\"" -#: utils/time/snapmgr.c:1475 +#: utils/time/snapmgr.c:1527 #, c-format msgid "" "a serializable transaction cannot import a snapshot from a non-serializable " @@ -25244,7 +25037,7 @@ msgid "" msgstr "" "ÑÐµÑ€Ð¸Ð°Ð»Ð¸Ð·ÑƒÐµÐ¼Ð°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð½Ðµ может импортировать Ñнимок из не Ñериализуемой" -#: utils/time/snapmgr.c:1479 +#: utils/time/snapmgr.c:1531 #, c-format msgid "" "a non-read-only serializable transaction cannot import a snapshot from a " @@ -25253,7 +25046,7 @@ msgstr "" "ÑÐµÑ€Ð¸Ð°Ð»Ð¸Ð·ÑƒÐµÐ¼Ð°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð² режиме \"чтение-запиÑÑŒ\" не может импортировать " "Ñнимок из транзакции в режиме \"только чтение\"" -#: utils/time/snapmgr.c:1494 +#: utils/time/snapmgr.c:1546 #, c-format msgid "cannot import a snapshot from a different database" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñнимок из другой базы данных" @@ -25263,206 +25056,206 @@ msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñнимок из другой msgid "unrecognized role option \"%s\"" msgstr "нераÑпознанный параметр роли \"%s\"" -#: gram.y:1278 gram.y:1293 +#: gram.y:1286 gram.y:1301 #, c-format msgid "CREATE SCHEMA IF NOT EXISTS cannot include schema elements" msgstr "CREATE SCHEMA IF NOT EXISTS не может включать Ñлементы Ñхемы" -#: gram.y:1438 +#: gram.y:1446 #, c-format msgid "current database cannot be changed" msgstr "Ñменить текущую базу данных нельзÑ" -#: gram.y:1562 +#: gram.y:1570 #, c-format msgid "time zone interval must be HOUR or HOUR TO MINUTE" msgstr "" "интервал, задающий чаÑовой поÑÑ, должен иметь точноÑть HOUR или HOUR TO " "MINUTE" -#: gram.y:2600 gram.y:2629 +#: gram.y:2608 gram.y:2637 #, c-format msgid "STDIN/STDOUT not allowed with PROGRAM" msgstr "ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ STDIN/STDOUT неÑовмеÑтимы Ñ PROGRAM" -#: gram.y:2895 gram.y:2902 gram.y:10286 gram.y:10294 +#: gram.y:2903 gram.y:2910 gram.y:10304 gram.y:10312 #, c-format msgid "GLOBAL is deprecated in temporary table creation" msgstr "указание GLOBAL при Ñоздании временных таблиц уÑтарело" -#: gram.y:4800 +#: gram.y:4818 msgid "duplicate trigger events specified" msgstr "ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð° повторÑÑŽÑ‚ÑÑ" -#: gram.y:4900 +#: gram.y:4918 #, c-format msgid "conflicting constraint properties" msgstr "противоречащие характериÑтики ограничениÑ" -#: gram.y:5032 +#: gram.y:5050 #, c-format msgid "CREATE ASSERTION is not yet implemented" msgstr "оператор CREATE ASSERTION ещё не реализован" -#: gram.y:5048 +#: gram.y:5066 #, c-format msgid "DROP ASSERTION is not yet implemented" msgstr "оператор DROP ASSERTION ещё не реализован" -#: gram.y:5394 +#: gram.y:5412 #, c-format msgid "RECHECK is no longer required" msgstr "RECHECK более не требуетÑÑ" -#: gram.y:5395 +#: gram.y:5413 #, c-format msgid "Update your data type." msgstr "Обновите тип данных." -#: gram.y:6974 +#: gram.y:6992 #, c-format msgid "aggregates cannot have output arguments" msgstr "у агрегатных функций не может быть выходных аргументов" -#: gram.y:8844 gram.y:8862 +#: gram.y:8862 gram.y:8880 #, c-format msgid "WITH CHECK OPTION not supported on recursive views" msgstr "" "предложение WITH CHECK OPTION не поддерживаетÑÑ Ð´Ð»Ñ Ñ€ÐµÐºÑƒÑ€Ñивных предÑтавлений" -#: gram.y:9380 +#: gram.y:9398 #, c-format msgid "unrecognized VACUUM option \"%s\"" msgstr "нераÑпознанный параметр VACUUM: \"%s\"" -#: gram.y:10394 +#: gram.y:10412 #, c-format msgid "LIMIT #,# syntax is not supported" msgstr "ÑинтакÑÐ¸Ñ LIMIT #,# не поддерживаетÑÑ" -#: gram.y:10395 +#: gram.y:10413 #, c-format msgid "Use separate LIMIT and OFFSET clauses." msgstr "ИÑпользуйте отдельные Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ LIMIT и OFFSET." -#: gram.y:10658 gram.y:10683 +#: gram.y:10676 gram.y:10701 #, c-format msgid "VALUES in FROM must have an alias" msgstr "ÑпиÑок VALUES во FROM должен иметь пÑевдоним" -#: gram.y:10659 gram.y:10684 +#: gram.y:10677 gram.y:10702 #, c-format msgid "For example, FROM (VALUES ...) [AS] foo." msgstr "Ðапример, FROM (VALUES ...) [AS] foo." -#: gram.y:10664 gram.y:10689 +#: gram.y:10682 gram.y:10707 #, c-format msgid "subquery in FROM must have an alias" msgstr "Ð¿Ð¾Ð´Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð²Ð¾ FROM должен иметь пÑевдоним" -#: gram.y:10665 gram.y:10690 +#: gram.y:10683 gram.y:10708 #, c-format msgid "For example, FROM (SELECT ...) [AS] foo." msgstr "Ðапример, FROM (SELECT ...) [AS] foo." -#: gram.y:11264 +#: gram.y:11282 #, c-format msgid "precision for type float must be at least 1 bit" msgstr "тип float должен иметь точноÑть минимум 1 бит" -#: gram.y:11273 +#: gram.y:11291 #, c-format msgid "precision for type float must be less than 54 bits" msgstr "тип float должен иметь точноÑть меньше 54 бит" -#: gram.y:11777 +#: gram.y:11795 #, c-format msgid "wrong number of parameters on left side of OVERLAPS expression" msgstr "неверное чиÑло параметров в левой чаÑти Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ OVERLAPS" -#: gram.y:11782 +#: gram.y:11800 #, c-format msgid "wrong number of parameters on right side of OVERLAPS expression" msgstr "неверное чиÑло параметров в правой чаÑти Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ OVERLAPS" -#: gram.y:11957 +#: gram.y:11975 #, c-format msgid "UNIQUE predicate is not yet implemented" msgstr "предикат UNIQUE ещё не реализован" -#: gram.y:12287 +#: gram.y:12309 #, c-format msgid "cannot use multiple ORDER BY clauses with WITHIN GROUP" msgstr "ORDER BY Ñ WITHIN GROUP можно указать только один раз" -#: gram.y:12292 +#: gram.y:12314 #, c-format msgid "cannot use DISTINCT with WITHIN GROUP" msgstr "DISTINCT Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ñ WITHIN GROUP" -#: gram.y:12297 +#: gram.y:12319 #, c-format msgid "cannot use VARIADIC with WITHIN GROUP" msgstr "VARIADIC Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ñ WITHIN GROUP" -#: gram.y:12803 +#: gram.y:12825 #, c-format msgid "RANGE PRECEDING is only supported with UNBOUNDED" msgstr "RANGE PRECEDING поддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ UNBOUNDED" -#: gram.y:12809 +#: gram.y:12831 #, c-format msgid "RANGE FOLLOWING is only supported with UNBOUNDED" msgstr "RANGE FOLLOWING поддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ UNBOUNDED" -#: gram.y:12836 gram.y:12859 +#: gram.y:12858 gram.y:12881 #, c-format msgid "frame start cannot be UNBOUNDED FOLLOWING" msgstr "началом рамки не может быть UNBOUNDED FOLLOWING" -#: gram.y:12841 +#: gram.y:12863 #, c-format msgid "frame starting from following row cannot end with current row" msgstr "" "рамка, начинающаÑÑÑ Ñо Ñледующей Ñтроки, не может заканчиватьÑÑ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹" -#: gram.y:12864 +#: gram.y:12886 #, c-format msgid "frame end cannot be UNBOUNDED PRECEDING" msgstr "концом рамки не может быть UNBOUNDED PRECEDING" -#: gram.y:12870 +#: gram.y:12892 #, c-format msgid "frame starting from current row cannot have preceding rows" msgstr "" "рамка, начинающаÑÑÑ Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ Ñтроки, не может иметь предшеÑтвующих Ñтрок" -#: gram.y:12877 +#: gram.y:12899 #, c-format msgid "frame starting from following row cannot have preceding rows" msgstr "" "рамка, начинающаÑÑÑ Ñо Ñледующей Ñтроки, не может иметь предшеÑтвующих Ñтрок" -#: gram.y:13542 +#: gram.y:13564 #, c-format msgid "type modifier cannot have parameter name" msgstr "параметр функции-модификатора типа должен быть безымÑнным" -#: gram.y:13548 +#: gram.y:13570 #, c-format msgid "type modifier cannot have ORDER BY" msgstr "модификатор типа не может включать ORDER BY" -#: gram.y:13612 gram.y:13618 +#: gram.y:13634 gram.y:13640 #, c-format msgid "%s cannot be used as a role name here" msgstr "%s Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать здеÑÑŒ как Ð¸Ð¼Ñ Ñ€Ð¾Ð»Ð¸" -#: gram.y:14240 gram.y:14429 +#: gram.y:14262 gram.y:14451 msgid "improper use of \"*\"" msgstr "недопуÑтимое иÑпользование \"*\"" -#: gram.y:14493 +#: gram.y:14515 #, c-format msgid "" "an ordered-set aggregate with a VARIADIC direct argument must have one " @@ -25471,50 +25264,50 @@ msgstr "" "ÑÐ¾Ñ€Ñ‚Ð¸Ñ€ÑƒÑŽÑ‰Ð°Ñ Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ð½ÐµÐ¿Ð¾ÑредÑтвенным аргументом VARIADIC должна " "иметь один агрегатный аргумент VARIADIC того же типа данных" -#: gram.y:14530 +#: gram.y:14552 #, c-format msgid "multiple ORDER BY clauses not allowed" msgstr "ORDER BY можно указать только один раз" -#: gram.y:14541 +#: gram.y:14563 #, c-format msgid "multiple OFFSET clauses not allowed" msgstr "OFFSET можно указать только один раз" -#: gram.y:14550 +#: gram.y:14572 #, c-format msgid "multiple LIMIT clauses not allowed" msgstr "LIMIT можно указать только один раз" -#: gram.y:14559 +#: gram.y:14581 #, c-format msgid "multiple WITH clauses not allowed" msgstr "WITH можно указать только один раз" -#: gram.y:14751 +#: gram.y:14773 #, c-format msgid "OUT and INOUT arguments aren't allowed in TABLE functions" msgstr "в табличных функциÑÑ… не может быть аргументов OUT и INOUT" -#: gram.y:14852 +#: gram.y:14874 #, c-format msgid "multiple COLLATE clauses not allowed" msgstr "COLLATE можно указать только один раз" #. translator: %s is CHECK, UNIQUE, or similar -#: gram.y:14890 gram.y:14903 +#: gram.y:14912 gram.y:14925 #, c-format msgid "%s constraints cannot be marked DEFERRABLE" msgstr "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ %s не могут иметь характериÑтики DEFERRABLE" #. translator: %s is CHECK, UNIQUE, or similar -#: gram.y:14916 +#: gram.y:14938 #, c-format msgid "%s constraints cannot be marked NOT VALID" msgstr "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ %s не могут иметь характериÑтики NOT VALID" #. translator: %s is CHECK, UNIQUE, or similar -#: gram.y:14929 +#: gram.y:14951 #, c-format msgid "%s constraints cannot be marked NO INHERIT" msgstr "Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ %s не могут иметь характериÑтики NO INHERIT" @@ -25637,7 +25430,7 @@ msgid "invalid Unicode escape character" msgstr "неверный Ñимвол Ñпецкода Unicode" #: scan.l:605 scan.l:613 scan.l:621 scan.l:622 scan.l:623 scan.l:1337 -#: scan.l:1364 scan.l:1368 scan.l:1406 scan.l:1410 scan.l:1432 +#: scan.l:1364 scan.l:1368 scan.l:1406 scan.l:1410 scan.l:1432 scan.l:1442 msgid "invalid Unicode surrogate pair" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑÑƒÑ€Ñ€Ð¾Ð³Ð°Ñ‚Ð½Ð°Ñ Ð¿Ð°Ñ€Ð° Unicode" @@ -25704,12 +25497,12 @@ msgstr "" msgid "invalid Unicode escape value" msgstr "неверное значение Ñпецкода Unicode" -#: scan.l:1481 +#: scan.l:1488 #, c-format msgid "nonstandard use of \\' in a string literal" msgstr "неÑтандартное применение \\' в Ñтроке" -#: scan.l:1482 +#: scan.l:1489 #, c-format msgid "" "Use '' to write quotes in strings, or use the escape string syntax (E'...')." @@ -25717,27 +25510,282 @@ msgstr "" "ЗапиÑывайте апоÑтроф в Ñтроках в виде '' или иÑпользуйте ÑинтакÑÐ¸Ñ ÑпецÑтрок " "(E'...')." -#: scan.l:1491 +#: scan.l:1498 #, c-format msgid "nonstandard use of \\\\ in a string literal" msgstr "неÑтандартное применение \\\\ в Ñтроке" -#: scan.l:1492 +#: scan.l:1499 #, c-format msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'." msgstr "" "ИÑпользуйте Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи обратных ÑлÑшей ÑинтакÑÐ¸Ñ ÑпецÑтрок, например E'\\\\'." -#: scan.l:1506 +#: scan.l:1513 #, c-format msgid "nonstandard use of escape in a string literal" msgstr "неÑтандартное иÑпользование ÑпецÑимвола в Ñтроке" -#: scan.l:1507 +#: scan.l:1514 #, c-format msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'." msgstr "ИÑпользуйте Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи ÑпецÑимволов ÑинтакÑÐ¸Ñ ÑпецÑтрок E'\\r\\n'." +#~ msgid "index row size %lu exceeds maximum %lu for index \"%s\"" +#~ msgstr "" +#~ "размер Ñтроки индекÑа (%lu) больше предельного размера (%lu) (Ð¸Ð½Ð´ÐµÐºÑ \"%s" +#~ "\")" + +#~ msgid "" +#~ "brin operator family \"%s\" contains function %s with invalid support " +#~ "number %d" +#~ msgstr "" +#~ "ÑемейÑтво операторов brin \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ " +#~ "опорным номером %d" + +#~ msgid "" +#~ "brin operator family \"%s\" contains function %s with wrong signature for " +#~ "support number %d" +#~ msgstr "" +#~ "ÑемейÑтво операторов brin \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " +#~ "объÑвлением Ð´Ð»Ñ Ð¾Ð¿Ð¾Ñ€Ð½Ð¾Ð³Ð¾ номера %d" + +#~ msgid "" +#~ "brin operator family \"%s\" contains operator %s with invalid strategy " +#~ "number %d" +#~ msgstr "" +#~ "ÑемейÑтво операторов brin \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ " +#~ "номером Ñтратегии %d" + +#~ msgid "" +#~ "brin operator family \"%s\" contains invalid ORDER BY specification for " +#~ "operator %s" +#~ msgstr "" +#~ "ÑемейÑтво операторов brin \"%s\" Ñодержит некорректное определение ORDER " +#~ "BY Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° %s" + +#~ msgid "" +#~ "brin operator family \"%s\" contains operator %s with wrong signature" +#~ msgstr "" +#~ "ÑемейÑтво операторов brin \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " +#~ "объÑвлением" + +#~ msgid "brin operator class \"%s\" is missing support function %d" +#~ msgstr "в клаÑÑе операторов brin \"%s\" нет опорной функции %d" + +#~ msgid "" +#~ "gist operator family \"%s\" contains support procedure %s with cross-type " +#~ "registration" +#~ msgstr "" +#~ "ÑемейÑтво операторов gist \"%s\" Ñодержит опорную процедуру %s Ñ " +#~ "межтиповой региÑтрацией" + +#~ msgid "" +#~ "gist operator family \"%s\" contains function %s with invalid support " +#~ "number %d" +#~ msgstr "" +#~ "ÑемейÑтво операторов gist \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ " +#~ "опорным номером %d" + +#~ msgid "" +#~ "gist operator family \"%s\" contains function %s with wrong signature for " +#~ "support number %d" +#~ msgstr "" +#~ "ÑемейÑтво операторов gist \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " +#~ "объÑвлением Ð´Ð»Ñ Ð¾Ð¿Ð¾Ñ€Ð½Ð¾Ð³Ð¾ номера %d" + +#~ msgid "" +#~ "gist operator family \"%s\" contains operator %s with invalid strategy " +#~ "number %d" +#~ msgstr "" +#~ "ÑемейÑтво операторов gist \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ " +#~ "номером Ñтратегии %d" + +#~ msgid "" +#~ "gist operator family \"%s\" contains operator %s with wrong signature" +#~ msgstr "" +#~ "ÑемейÑтво операторов gist \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " +#~ "объÑвлением" + +#~ msgid "gist operator class \"%s\" is missing support function %d" +#~ msgstr "в клаÑÑе операторов gist \"%s\" нет опорной функции %d" + +#~ msgid "" +#~ "hash operator family \"%s\" contains support procedure %s with cross-type " +#~ "registration" +#~ msgstr "" +#~ "ÑемейÑтво операторов hash \"%s\" Ñодержит опорную процедуру %s Ñ " +#~ "межтиповой региÑтрацией" + +#~ msgid "" +#~ "hash operator family \"%s\" contains function %s with wrong signature for " +#~ "support number %d" +#~ msgstr "" +#~ "ÑемейÑтво операторов hash \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " +#~ "объÑвлением Ð´Ð»Ñ Ð¾Ð¿Ð¾Ñ€Ð½Ð¾Ð³Ð¾ номера %d" + +#~ msgid "" +#~ "hash operator family \"%s\" contains function %s with invalid support " +#~ "number %d" +#~ msgstr "" +#~ "ÑемейÑтво операторов hash \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ " +#~ "опорным номером %d" + +#~ msgid "" +#~ "hash operator family \"%s\" contains operator %s with invalid strategy " +#~ "number %d" +#~ msgstr "" +#~ "ÑемейÑтво операторов hash \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ " +#~ "номером Ñтратегии %d" + +#~ msgid "" +#~ "hash operator family \"%s\" contains invalid ORDER BY specification for " +#~ "operator %s" +#~ msgstr "" +#~ "ÑемейÑтво операторов hash \"%s\" Ñодержит некорректное определение ORDER " +#~ "BY Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° %s" + +#~ msgid "" +#~ "hash operator family \"%s\" contains operator %s with wrong signature" +#~ msgstr "" +#~ "ÑемейÑтво операторов hash \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " +#~ "объÑвлением" + +#~ msgid "" +#~ "hash operator family \"%s\" is missing operator(s) for types %s and %s" +#~ msgstr "" +#~ "в ÑемейÑтве операторов hash \"%s\" нет оператора(ов) Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð¾Ð² %s и %s" + +#~ msgid "hash operator class \"%s\" is missing operator(s)" +#~ msgstr "в клаÑÑе операторов hash \"%s\" нет оператора(ов)" + +#~ msgid "" +#~ "btree operator family \"%s\" contains function %s with invalid support " +#~ "number %d" +#~ msgstr "" +#~ "ÑемейÑтво операторов btree \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ " +#~ "опорным номером %d" + +#~ msgid "" +#~ "btree operator family \"%s\" contains function %s with wrong signature " +#~ "for support number %d" +#~ msgstr "" +#~ "ÑемейÑтво операторов btree \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " +#~ "объÑвлением Ð´Ð»Ñ Ð¾Ð¿Ð¾Ñ€Ð½Ð¾Ð³Ð¾ номера %d" + +#~ msgid "" +#~ "btree operator family \"%s\" contains operator %s with invalid strategy " +#~ "number %d" +#~ msgstr "" +#~ "ÑемейÑтво операторов btree \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ " +#~ "номером Ñтратегии %d" + +#~ msgid "" +#~ "btree operator family \"%s\" contains invalid ORDER BY specification for " +#~ "operator %s" +#~ msgstr "" +#~ "ÑемейÑтво операторов btree \"%s\" Ñодержит некорректное определение ORDER " +#~ "BY Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° %s" + +#~ msgid "" +#~ "btree operator family \"%s\" contains operator %s with wrong signature" +#~ msgstr "" +#~ "ÑемейÑтво операторов btree \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " +#~ "объÑвлением" + +#~ msgid "" +#~ "btree operator family \"%s\" is missing operator(s) for types %s and %s" +#~ msgstr "" +#~ "в ÑемейÑтве операторов btree \"%s\" нет оператора(ов) Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð¾Ð² %s и %s" + +#~ msgid "btree operator class \"%s\" is missing operator(s)" +#~ msgstr "в клаÑÑе операторов btree \"%s\" нет оператора(ов)" + +#~ msgid "btree operator family \"%s\" is missing cross-type operator(s)" +#~ msgstr "в ÑемейÑтве операторов btree \"%s\" нет межтипового оператора(ов)" + +#~ msgid "" +#~ "spgist operator family \"%s\" contains support procedure %s with cross-" +#~ "type registration" +#~ msgstr "" +#~ "ÑемейÑтво операторов spgist \"%s\" Ñодержит опорную процедуру %s Ñ " +#~ "межтиповой региÑтрацией" + +#~ msgid "" +#~ "spgist operator family \"%s\" contains function %s with invalid support " +#~ "number %d" +#~ msgstr "" +#~ "ÑемейÑтво операторов spgist \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ " +#~ "опорным номером %d" + +#~ msgid "" +#~ "spgist operator family \"%s\" contains function %s with wrong signature " +#~ "for support number %d" +#~ msgstr "" +#~ "ÑемейÑтво операторов spgist \"%s\" Ñодержит функцию %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " +#~ "объÑвлением Ð´Ð»Ñ Ð¾Ð¿Ð¾Ñ€Ð½Ð¾Ð³Ð¾ номера %d" + +#~ msgid "" +#~ "spgist operator family \"%s\" contains operator %s with invalid strategy " +#~ "number %d" +#~ msgstr "" +#~ "ÑемейÑтво операторов spgist \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ " +#~ "номером Ñтратегии %d" + +#~ msgid "" +#~ "spgist operator family \"%s\" contains invalid ORDER BY specification for " +#~ "operator %s" +#~ msgstr "" +#~ "ÑемейÑтво операторов spgist \"%s\" Ñодержит некорректное определение " +#~ "ORDER BY Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° %s" + +#~ msgid "" +#~ "spgist operator family \"%s\" contains operator %s with wrong signature" +#~ msgstr "" +#~ "ÑемейÑтво операторов spgist \"%s\" Ñодержит оператор %s Ñ Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñщим " +#~ "объÑвлением" + +#~ msgid "" +#~ "spgist operator family \"%s\" is missing operator(s) for types %s and %s" +#~ msgstr "" +#~ "в ÑемейÑтве операторов spgist \"%s\" нет оператора(ов) Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð¾Ð² %s и %s" + +#~ msgid "spgist operator class \"%s\" is missing operator(s)" +#~ msgstr "в клаÑÑе операторов spgist \"%s\" нет оператора(ов)" + +#~ msgid "%s." +#~ msgstr "%s." + +#~ msgid "cannot create temporary tables in parallel mode" +#~ msgstr "Ñоздавать временные таблицы в параллельном режиме нельзÑ" + +#~ msgid "could not determine data type for argument 1" +#~ msgstr "не удалоÑÑŒ определить тип данных аргумента 1" + +#~ msgid "could not determine data type for argument 2" +#~ msgstr "не удалоÑÑŒ определить тип данных аргумента 2" + +#~ msgid "argument %d: could not determine data type" +#~ msgstr "аргумент %d: не удалоÑÑŒ определить тип данных" + +#~ msgid "Transaction ID %u finished; no more running transactions." +#~ msgstr "Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ %u завершена, больше активных транзакций нет." + +#~ msgid "%u transaction needs to finish." +#~ msgid_plural "%u transactions need to finish." +#~ msgstr[0] "Ðеобходимо дождатьÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¹ (%u)." +#~ msgstr[1] "Ðеобходимо дождатьÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¹ (%u)." +#~ msgstr[2] "Ðеобходимо дождатьÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¹ (%u)." + +#~ msgid "wrong range of array subscripts" +#~ msgstr "неправильный диапазон индекÑов маÑÑивов" + +#~ msgid "Lower bound of dimension array must be one." +#~ msgstr "ÐижнÑÑ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ð° маÑÑива размерноÑтей должна быть равна 1." + +#~ msgid "huge TLB pages not supported on this platform" +#~ msgstr "гигантÑкие Ñтраницы TLB на Ñтой платформе не поддерживаютÑÑ" + #~ msgid "time zone abbreviation \"%s\" is not used in time zone \"%s\"" #~ msgstr "" #~ "краткое обозначение чаÑового поÑÑа \"%s\" отÑутÑтвует в данных чаÑового " diff --git a/src/backend/port/dynloader/linux.c b/src/backend/port/dynloader/linux.c index 174b29ba1a..2f18dc8950 100644 --- a/src/backend/port/dynloader/linux.c +++ b/src/backend/port/dynloader/linux.c @@ -124,7 +124,7 @@ char * pg_dlerror(void) { #ifndef HAVE_DLD_H - return "dynaloader unspported"; + return "dynaloader unsupported"; #else return dld_strerror(dld_errno); #endif diff --git a/src/backend/port/sysv_shmem.c b/src/backend/port/sysv_shmem.c index 6c442b927a..850eafddc3 100644 --- a/src/backend/port/sysv_shmem.c +++ b/src/backend/port/sysv_shmem.c @@ -3,8 +3,11 @@ * sysv_shmem.c * Implement shared memory using SysV facilities * - * These routines represent a fairly thin layer on top of SysV shared - * memory functionality. + * These routines used to be a fairly thin layer on top of SysV shared + * memory functionality. With the addition of anonymous-shmem logic, + * they're a bit fatter now. We still require a SysV shmem block to + * exist, though, because mmap'd shmem provides no way to find out how + * many processes are attached, which we need for interlocking purposes. * * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California @@ -31,19 +34,50 @@ #include "miscadmin.h" #include "portability/mem.h" #include "storage/dsm.h" +#include "storage/fd.h" #include "storage/ipc.h" #include "storage/pg_shmem.h" #include "utils/guc.h" +/* + * As of PostgreSQL 9.3, we normally allocate only a very small amount of + * System V shared memory, and only for the purposes of providing an + * interlock to protect the data directory. The real shared memory block + * is allocated using mmap(). This works around the problem that many + * systems have very low limits on the amount of System V shared memory + * that can be allocated. Even a limit of a few megabytes will be enough + * to run many copies of PostgreSQL without needing to adjust system settings. + * + * We assume that no one will attempt to run PostgreSQL 9.3 or later on + * systems that are ancient enough that anonymous shared memory is not + * supported, such as pre-2.4 versions of Linux. If that turns out to be + * false, we might need to add compile and/or run-time tests here and do this + * only if the running kernel supports it. + * + * However, we must always disable this logic in the EXEC_BACKEND case, and + * fall back to the old method of allocating the entire segment using System V + * shared memory, because there's no way to attach an anonymous mmap'd segment + * to a process after exec(). Since EXEC_BACKEND is intended only for + * developer use, this shouldn't be a big problem. Because of this, we do + * not worry about supporting anonymous shmem in the EXEC_BACKEND cases below. + */ +#ifndef EXEC_BACKEND +#define USE_ANONYMOUS_SHMEM +#endif + + typedef key_t IpcMemoryKey; /* shared memory key passed to shmget(2) */ typedef int IpcMemoryId; /* shared memory ID returned by shmget(2) */ unsigned long UsedShmemSegID = 0; void *UsedShmemSegAddr = NULL; + +#ifdef USE_ANONYMOUS_SHMEM static Size AnonymousShmemSize; static void *AnonymousShmem = NULL; +#endif static void *InternalIpcMemoryCreate(IpcMemoryKey memKey, Size size); static void IpcMemoryDetach(int status, Datum shmaddr); @@ -68,8 +102,28 @@ static void * InternalIpcMemoryCreate(IpcMemoryKey memKey, Size size) { IpcMemoryId shmid; + void *requestedAddress = NULL; void *memAddress; + /* + * Normally we just pass requestedAddress = NULL to shmat(), allowing the + * system to choose where the segment gets mapped. But in an EXEC_BACKEND + * build, it's possible for whatever is chosen in the postmaster to not + * work for backends, due to variations in address space layout. As a + * rather klugy workaround, allow the user to specify the address to use + * via setting the environment variable PG_SHMEM_ADDR. (If this were of + * interest for anything except debugging, we'd probably create a cleaner + * and better-documented way to set it, such as a GUC.) + */ +#ifdef EXEC_BACKEND + { + char *pg_shmem_addr = getenv("PG_SHMEM_ADDR"); + + if (pg_shmem_addr) + requestedAddress = (void *) strtoul(pg_shmem_addr, NULL, 0); + } +#endif + shmid = shmget(memKey, size, IPC_CREAT | IPC_EXCL | IPCProtection); if (shmid < 0) @@ -169,10 +223,11 @@ InternalIpcMemoryCreate(IpcMemoryKey memKey, Size size) on_shmem_exit(IpcMemoryDelete, Int32GetDatum(shmid)); /* OK, should be able to attach to the segment */ - memAddress = shmat(shmid, NULL, PG_SHMAT_FLAGS); + memAddress = shmat(shmid, requestedAddress, PG_SHMAT_FLAGS); if (memAddress == (void *) -1) - elog(FATAL, "shmat(id=%d) failed: %m", shmid); + elog(FATAL, "shmat(id=%d, addr=%p, flags=0x%x) failed: %m", + shmid, requestedAddress, PG_SHMAT_FLAGS); /* Register on-exit routine to detach new segment before deleting */ on_shmem_exit(IpcMemoryDetach, PointerGetDatum(memAddress)); @@ -204,10 +259,6 @@ IpcMemoryDetach(int status, Datum shmaddr) /* Detach System V shared memory block. */ if (shmdt(DatumGetPointer(shmaddr)) < 0) elog(LOG, "shmdt(%p) failed: %m", DatumGetPointer(shmaddr)); - /* Release anonymous shared memory block, if any. */ - if (AnonymousShmem != NULL - && munmap(AnonymousShmem, AnonymousShmemSize) < 0) - elog(LOG, "munmap(%p) failed: %m", AnonymousShmem); } /****************************************************************************/ @@ -318,6 +369,82 @@ PGSharedMemoryIsInUse(unsigned long id1, unsigned long id2) return true; } +#ifdef USE_ANONYMOUS_SHMEM + +#ifdef MAP_HUGETLB + +/* + * Identify the huge page size to use. + * + * Some Linux kernel versions have a bug causing mmap() to fail on requests + * that are not a multiple of the hugepage size. Versions without that bug + * instead silently round the request up to the next hugepage multiple --- + * and then munmap() fails when we give it a size different from that. + * So we have to round our request up to a multiple of the actual hugepage + * size to avoid trouble. + * + * Doing the round-up ourselves also lets us make use of the extra memory, + * rather than just wasting it. Currently, we just increase the available + * space recorded in the shmem header, which will make the extra usable for + * purposes such as additional locktable entries. Someday, for very large + * hugepage sizes, we might want to think about more invasive strategies, + * such as increasing shared_buffers to absorb the extra space. + * + * Returns the (real or assumed) page size into *hugepagesize, + * and the hugepage-related mmap flags to use into *mmap_flags. + * + * Currently *mmap_flags is always just MAP_HUGETLB. Someday, on systems + * that support it, we might OR in additional bits to specify a particular + * non-default huge page size. + */ +static void +GetHugePageSize(Size *hugepagesize, int *mmap_flags) +{ + /* + * If we fail to find out the system's default huge page size, assume it + * is 2MB. This will work fine when the actual size is less. If it's + * more, we might get mmap() or munmap() failures due to unaligned + * requests; but at this writing, there are no reports of any non-Linux + * systems being picky about that. + */ + *hugepagesize = 2 * 1024 * 1024; + *mmap_flags = MAP_HUGETLB; + + /* + * System-dependent code to find out the default huge page size. + * + * On Linux, read /proc/meminfo looking for a line like "Hugepagesize: + * nnnn kB". Ignore any failures, falling back to the preset default. + */ +#ifdef __linux__ + { + FILE *fp = AllocateFile("/proc/meminfo", "r"); + char buf[128]; + unsigned int sz; + char ch; + + if (fp) + { + while (fgets(buf, sizeof(buf), fp)) + { + if (sscanf(buf, "Hugepagesize: %u %c", &sz, &ch) == 2) + { + if (ch == 'k') + { + *hugepagesize = sz * (Size) 1024; + break; + } + /* We could accept other units besides kB, if needed */ + } + } + FreeFile(fp); + } + } +#endif /* __linux__ */ +} + +#endif /* MAP_HUGETLB */ + /* * Creates an anonymous mmap()ed shared memory segment. * @@ -325,7 +452,6 @@ PGSharedMemoryIsInUse(unsigned long id1, unsigned long id2) * actual size of the allocation, if it ends up allocating a segment that is * larger than requested. */ -#ifndef EXEC_BACKEND static void * CreateAnonymousSegment(Size *size) { @@ -334,47 +460,35 @@ CreateAnonymousSegment(Size *size) int mmap_errno = 0; #ifndef MAP_HUGETLB - if (huge_pages == HUGE_PAGES_ON) - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("huge TLB pages not supported on this platform"))); + /* PGSharedMemoryCreate should have dealt with this case */ + Assert(huge_pages != HUGE_PAGES_ON); #else if (huge_pages == HUGE_PAGES_ON || huge_pages == HUGE_PAGES_TRY) { /* * Round up the request size to a suitable large value. - * - * Some Linux kernel versions are known to have a bug, which causes - * mmap() with MAP_HUGETLB to fail if the request size is not a - * multiple of any supported huge page size. To work around that, we - * round up the request size to nearest 2MB. 2MB is the most common - * huge page page size on affected systems. - * - * Aside from that bug, even with a kernel that does the allocation - * correctly, rounding it up ourselves avoids wasting memory. Without - * it, if we for example make an allocation of 2MB + 1 bytes, the - * kernel might decide to use two 2MB huge pages for that, and waste 2 - * MB - 1 of memory. When we do the rounding ourselves, we can use - * that space for allocations. */ - int hugepagesize = 2 * 1024 * 1024; + Size hugepagesize; + int mmap_flags; + + GetHugePageSize(&hugepagesize, &mmap_flags); if (allocsize % hugepagesize != 0) allocsize += hugepagesize - (allocsize % hugepagesize); ptr = mmap(NULL, allocsize, PROT_READ | PROT_WRITE, - PG_MMAP_FLAGS | MAP_HUGETLB, -1, 0); + PG_MMAP_FLAGS | mmap_flags, -1, 0); mmap_errno = errno; if (huge_pages == HUGE_PAGES_TRY && ptr == MAP_FAILED) - elog(DEBUG1, "mmap with MAP_HUGETLB failed, huge pages disabled: %m"); + elog(DEBUG1, "mmap(%zu) with MAP_HUGETLB failed, huge pages disabled: %m", + allocsize); } #endif - if (huge_pages == HUGE_PAGES_OFF || - (huge_pages == HUGE_PAGES_TRY && ptr == MAP_FAILED)) + if (ptr == MAP_FAILED && huge_pages != HUGE_PAGES_ON) { /* - * use the original size, not the rounded up value, when falling back + * Use the original size, not the rounded-up value, when falling back * to non-huge pages. */ allocsize = *size; @@ -401,7 +515,25 @@ CreateAnonymousSegment(Size *size) *size = allocsize; return ptr; } -#endif + +/* + * AnonymousShmemDetach --- detach from an anonymous mmap'd block + * (called as an on_shmem_exit callback, hence funny argument list) + */ +static void +AnonymousShmemDetach(int status, Datum arg) +{ + /* Release anonymous shared memory block, if any. */ + if (AnonymousShmem != NULL) + { + if (munmap(AnonymousShmem, AnonymousShmemSize) < 0) + elog(LOG, "munmap(%p, %zu) failed: %m", + AnonymousShmem, AnonymousShmemSize); + AnonymousShmem = NULL; + } +} + +#endif /* USE_ANONYMOUS_SHMEM */ /* * PGSharedMemoryCreate @@ -432,7 +564,8 @@ PGSharedMemoryCreate(Size size, bool makePrivate, int port, struct stat statbuf; Size sysvsize; -#if defined(EXEC_BACKEND) || !defined(MAP_HUGETLB) + /* Complain if hugepages demanded but we can't possibly support them */ +#if !defined(USE_ANONYMOUS_SHMEM) || !defined(MAP_HUGETLB) if (huge_pages == HUGE_PAGES_ON) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), @@ -442,32 +575,13 @@ PGSharedMemoryCreate(Size size, bool makePrivate, int port, /* Room for a header? */ Assert(size > MAXALIGN(sizeof(PGShmemHeader))); - /* - * As of PostgreSQL 9.3, we normally allocate only a very small amount of - * System V shared memory, and only for the purposes of providing an - * interlock to protect the data directory. The real shared memory block - * is allocated using mmap(). This works around the problem that many - * systems have very low limits on the amount of System V shared memory - * that can be allocated. Even a limit of a few megabytes will be enough - * to run many copies of PostgreSQL without needing to adjust system - * settings. - * - * We assume that no one will attempt to run PostgreSQL 9.3 or later on - * systems that are ancient enough that anonymous shared memory is not - * supported, such as pre-2.4 versions of Linux. If that turns out to be - * false, we might need to add a run-time test here and do this only if - * the running kernel supports it. - * - * However, we disable this logic in the EXEC_BACKEND case, and fall back - * to the old method of allocating the entire segment using System V - * shared memory, because there's no way to attach an mmap'd segment to a - * process after exec(). Since EXEC_BACKEND is intended only for - * developer use, this shouldn't be a big problem. - */ -#ifndef EXEC_BACKEND +#ifdef USE_ANONYMOUS_SHMEM AnonymousShmem = CreateAnonymousSegment(&size); AnonymousShmemSize = size; + /* Register on-exit routine to unmap the anonymous segment */ + on_shmem_exit(AnonymousShmemDetach, (Datum) 0); + /* Now we need only allocate a minimal-sized SysV shmem block. */ sysvsize = sizeof(PGShmemHeader); #else @@ -572,10 +686,14 @@ PGSharedMemoryCreate(Size size, bool makePrivate, int port, * block. Otherwise, the System V shared memory block is only a shim, and * we must return a pointer to the real block. */ +#ifdef USE_ANONYMOUS_SHMEM if (AnonymousShmem == NULL) return hdr; memcpy(AnonymousShmem, hdr, sizeof(PGShmemHeader)); return (PGShmemHeader *) AnonymousShmem; +#else + return hdr; +#endif } #ifdef EXEC_BACKEND @@ -660,12 +778,12 @@ PGSharedMemoryNoReAttach(void) * * Detach from the shared memory segment, if still attached. This is not * intended to be called explicitly by the process that originally created the - * segment (it will have an on_shmem_exit callback registered to do that). + * segment (it will have on_shmem_exit callback(s) registered to do that). * Rather, this is for subprocesses that have inherited an attachment and want * to get rid of it. * * UsedShmemSegID and UsedShmemSegAddr are implicit parameters to this - * routine. + * routine, also AnonymousShmem and AnonymousShmemSize. */ void PGSharedMemoryDetach(void) @@ -682,10 +800,15 @@ PGSharedMemoryDetach(void) UsedShmemSegAddr = NULL; } - /* Release anonymous shared memory block, if any. */ - if (AnonymousShmem != NULL - && munmap(AnonymousShmem, AnonymousShmemSize) < 0) - elog(LOG, "munmap(%p) failed: %m", AnonymousShmem); +#ifdef USE_ANONYMOUS_SHMEM + if (AnonymousShmem != NULL) + { + if (munmap(AnonymousShmem, AnonymousShmemSize) < 0) + elog(LOG, "munmap(%p, %zu) failed: %m", + AnonymousShmem, AnonymousShmemSize); + AnonymousShmem = NULL; + } +#endif } diff --git a/src/backend/port/win32/socket.c b/src/backend/port/win32/socket.c index 5d8fb7fc91..6cc3ebd982 100644 --- a/src/backend/port/win32/socket.c +++ b/src/backend/port/win32/socket.c @@ -523,11 +523,16 @@ pgwin32_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, c FD_ZERO(&outwritefds); /* - * Write FDs are different in the way that it is only flagged by - * WSASelectEvent() if we have tried to write to them first. So try an - * empty write + * Windows does not guarantee to log an FD_WRITE network event indicating + * that more data can be sent unless the previous send() failed with + * WSAEWOULDBLOCK. While our caller might well have made such a call, we + * cannot assume that here. Therefore, if waiting for write-ready, force + * the issue by doing a dummy send(). If the dummy send() succeeds, + * assume that the socket is in fact write-ready, and return immediately. + * Also, if it fails with something other than WSAEWOULDBLOCK, return a + * write-ready indication to let our caller deal with the error condition. */ - if (writefds) + if (writefds != NULL) { for (i = 0; i < writefds->fd_count; i++) { @@ -539,20 +544,11 @@ pgwin32_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, c buf.len = 0; r = WSASend(writefds->fd_array[i], &buf, 1, &sent, 0, NULL, NULL); - if (r == 0) /* Completed - means things are fine! */ + if (r == 0 || WSAGetLastError() != WSAEWOULDBLOCK) FD_SET(writefds->fd_array[i], &outwritefds); - - else - { /* Not completed */ - if (WSAGetLastError() != WSAEWOULDBLOCK) - - /* - * Not completed, and not just "would block", so an error - * occurred - */ - FD_SET(writefds->fd_array[i], &outwritefds); - } } + + /* If we found any write-ready sockets, just return them immediately */ if (outwritefds.fd_count > 0) { memcpy(writefds, &outwritefds, sizeof(fd_set)); diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c index 1a92ca1deb..b5ab959353 100644 --- a/src/backend/postmaster/autovacuum.c +++ b/src/backend/postmaster/autovacuum.c @@ -1895,6 +1895,8 @@ do_autovacuum(void) ScanKeyData key; TupleDesc pg_class_desc; int effective_multixact_freeze_max_age; + bool did_vacuum = false; + bool found_concurrent_worker = false; /* * StartTransactionCommand and CommitTransactionCommand will automatically @@ -2233,6 +2235,7 @@ do_autovacuum(void) if (worker->wi_tableoid == relid) { skipit = true; + found_concurrent_worker = true; break; } } @@ -2359,6 +2362,8 @@ do_autovacuum(void) } PG_END_TRY(); + did_vacuum = true; + /* the PGXACT flags are reset at the next end of transaction */ /* be tidy */ @@ -2396,8 +2401,25 @@ do_autovacuum(void) /* * Update pg_database.datfrozenxid, and truncate pg_clog if possible. We * only need to do this once, not after each table. + * + * Even if we didn't vacuum anything, it may still be important to do + * this, because one indirect effect of vac_update_datfrozenxid() is to + * update ShmemVariableCache->xidVacLimit. That might need to be done + * even if we haven't vacuumed anything, because relations with older + * relfrozenxid values or other databases with older datfrozenxid values + * might have been dropped, allowing xidVacLimit to advance. + * + * However, it's also important not to do this blindly in all cases, + * because when autovacuum=off this will restart the autovacuum launcher. + * If we're not careful, an infinite loop can result, where workers find + * no work to do and restart the launcher, which starts another worker in + * the same database that finds no work to do. To prevent that, we skip + * this if (1) we found no work to do and (2) we skipped at least one + * table due to concurrent autovacuum activity. In that case, the other + * worker has already done it, or will do so when it finishes. */ - vac_update_datfrozenxid(); + if (did_vacuum || !found_concurrent_worker) + vac_update_datfrozenxid(); /* Finally close out the last transaction. */ CommitTransactionCommand(); diff --git a/src/backend/postmaster/bgworker.c b/src/backend/postmaster/bgworker.c index 699c934240..ff266009fc 100644 --- a/src/backend/postmaster/bgworker.c +++ b/src/backend/postmaster/bgworker.c @@ -16,6 +16,7 @@ #include "miscadmin.h" #include "libpq/pqsignal.h" +#include "access/parallel.h" #include "postmaster/bgworker_internals.h" #include "postmaster/postmaster.h" #include "storage/barrier.h" @@ -93,6 +94,26 @@ struct BackgroundWorkerHandle static BackgroundWorkerArray *BackgroundWorkerData; +/* + * List of internal background worker entry points. We need this for + * reasons explained in LookupBackgroundWorkerFunction(), below. + */ +static const struct +{ + const char *fn_name; + bgworker_main_type fn_addr; +} InternalBGWorkers[] = + +{ + { + "ParallelWorkerMain", ParallelWorkerMain + } +}; + +/* Private functions. */ +static bgworker_main_type LookupBackgroundWorkerFunction(char *libraryname, char *funcname); + + /* * Calculate shared memory needed. */ @@ -601,7 +622,6 @@ StartBackgroundWorker(void) */ if ((worker->bgw_flags & BGWORKER_SHMEM_ACCESS) == 0) { - on_exit_reset(); dsm_detach_all(); PGSharedMemoryDetach(); } @@ -697,21 +717,17 @@ StartBackgroundWorker(void) } /* - * If bgw_main is set, we use that value as the initial entrypoint. - * However, if the library containing the entrypoint wasn't loaded at - * postmaster startup time, passing it as a direct function pointer is not - * possible. To work around that, we allow callers for whom a function - * pointer is not available to pass a library name (which will be loaded, - * if necessary) and a function name (which will be looked up in the named - * library). + * If bgw_main is set, we use that value as the entry point function. + * Passing function addresses across processes is unreliable on many + * platforms, but we'll leave the option in place in 9.x for backwards + * compatibility. Otherwise, look up the entry point function, loading + * its library if necessary. */ if (worker->bgw_main != NULL) entrypt = worker->bgw_main; else - entrypt = (bgworker_main_type) - load_external_function(worker->bgw_library_name, - worker->bgw_function_name, - true, NULL); + entrypt = LookupBackgroundWorkerFunction(worker->bgw_library_name, + worker->bgw_function_name); /* * Note that in normal processes, we would call InitPostgres here. For a @@ -1051,3 +1067,47 @@ TerminateBackgroundWorker(BackgroundWorkerHandle *handle) if (signal_postmaster) SendPostmasterSignal(PMSIGNAL_BACKGROUND_WORKER_CHANGE); } + +/* + * Look up (and possibly load) a bgworker entry point function. + * + * For functions contained in the core code, we use library name "postgres" + * and consult the InternalBGWorkers array. External functions are + * looked up, and loaded if necessary, using load_external_function(). + * + * The point of this is to pass function names as strings across process + * boundaries. We can't pass actual function addresses because of the + * possibility that the function has been loaded at a different address + * in a different process. This is obviously a hazard for functions in + * loadable libraries, but it can happen even for functions in the core code + * on platforms using EXEC_BACKEND (e.g., Windows). + * + * At some point it might be worthwhile to get rid of InternalBGWorkers[] + * in favor of applying load_external_function() for core functions too; + * but that raises portability issues that are not worth addressing now. + */ +static bgworker_main_type +LookupBackgroundWorkerFunction(char *libraryname, char *funcname) +{ + /* + * If the function is to be loaded from postgres itself, search the + * InternalBGWorkers array. + */ + if (strcmp(libraryname, "postgres") == 0) + { + int i; + + for (i = 0; i < lengthof(InternalBGWorkers); i++) + { + if (strcmp(InternalBGWorkers[i].fn_name, funcname) == 0) + return InternalBGWorkers[i].fn_addr; + } + + /* We can only reach this by programming error. */ + elog(ERROR, "internal function \"%s\" not found", funcname); + } + + /* Otherwise load from external library. */ + return (bgworker_main_type) + load_external_function(libraryname, funcname, true, NULL); +} diff --git a/src/backend/postmaster/bgwriter.c b/src/backend/postmaster/bgwriter.c index 10020349a2..aa823d31a9 100644 --- a/src/backend/postmaster/bgwriter.c +++ b/src/backend/postmaster/bgwriter.c @@ -209,7 +209,7 @@ BackgroundWriterMain(void) /* Flush any leaked data in the top-level context */ MemoryContextResetAndDeleteChildren(bgwriter_context); - /* re-initilialize to avoid repeated errors causing problems */ + /* re-initialize to avoid repeated errors causing problems */ WritebackContextInit(&wb_context, &bgwriter_flush_after); /* Now we can allow interrupts again */ diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c index c778194956..d7f9d7f351 100644 --- a/src/backend/postmaster/pgstat.c +++ b/src/backend/postmaster/pgstat.c @@ -92,6 +92,9 @@ #define PGSTAT_POLL_LOOP_COUNT (PGSTAT_MAX_WAIT_TIME / PGSTAT_RETRY_DELAY) #define PGSTAT_INQ_LOOP_COUNT (PGSTAT_INQ_INTERVAL / PGSTAT_RETRY_DELAY) +/* Minimum receive buffer size for the collector's socket. */ +#define PGSTAT_MIN_RCVBUF (100 * 1024) + /* ---------- * The initial size hints for the hash tables used in the collector. @@ -537,6 +540,35 @@ pgstat_init(void) goto startup_failed; } + /* + * Try to ensure that the socket's receive buffer is at least + * PGSTAT_MIN_RCVBUF bytes, so that it won't easily overflow and lose + * data. Use of UDP protocol means that we are willing to lose data under + * heavy load, but we don't want it to happen just because of ridiculously + * small default buffer sizes (such as 8KB on older Windows versions). + */ + { + int old_rcvbuf; + int new_rcvbuf; + ACCEPT_TYPE_ARG3 rcvbufsize = sizeof(old_rcvbuf); + + if (getsockopt(pgStatSock, SOL_SOCKET, SO_RCVBUF, + (char *) &old_rcvbuf, &rcvbufsize) < 0) + { + elog(LOG, "getsockopt(SO_RCVBUF) failed: %m"); + /* if we can't get existing size, always try to set it */ + old_rcvbuf = 0; + } + + new_rcvbuf = PGSTAT_MIN_RCVBUF; + if (old_rcvbuf < new_rcvbuf) + { + if (setsockopt(pgStatSock, SOL_SOCKET, SO_RCVBUF, + (char *) &new_rcvbuf, sizeof(new_rcvbuf)) < 0) + elog(LOG, "setsockopt(SO_RCVBUF) failed: %m"); + } + } + pg_freeaddrinfo_all(hints.ai_family, addrs); return; @@ -569,7 +601,7 @@ pgstat_reset_remove_files(const char *directory) { DIR *dir; struct dirent *entry; - char fname[MAXPGPATH]; + char fname[MAXPGPATH * 2]; dir = AllocateDir(directory); while ((entry = ReadDir(dir, directory)) != NULL) @@ -599,7 +631,7 @@ pgstat_reset_remove_files(const char *directory) strcmp(entry->d_name + nchars, "stat") != 0) continue; - snprintf(fname, MAXPGPATH, "%s/%s", directory, + snprintf(fname, sizeof(fname), "%s/%s", directory, entry->d_name); unlink(fname); } @@ -2408,7 +2440,7 @@ pgstat_fetch_stat_beentry(int beid) /* ---------- * pgstat_fetch_stat_local_beentry() - * - * Like pgstat_fetch_stat_beentry() but with locally computed addtions (like + * Like pgstat_fetch_stat_beentry() but with locally computed additions (like * xid and xmin values of the backend) * * NB: caller is responsible for a check if the user is permitted to see @@ -4248,9 +4280,20 @@ pgstat_read_statsfiles(Oid onlydb, bool permanent, bool deep) { ereport(pgStatRunningInCollector ? LOG : WARNING, (errmsg("corrupted statistics file \"%s\"", statfile))); + memset(&globalStats, 0, sizeof(globalStats)); goto done; } + /* + * In the collector, disregard the timestamp we read from the permanent + * stats file; we should be willing to write a temp stats file immediately + * upon the first request from any backend. This only matters if the old + * file's timestamp is less than PGSTAT_STAT_INTERVAL ago, but that's not + * an unusual scenario. + */ + if (pgStatRunningInCollector) + globalStats.stats_timestamp = 0; + /* * Read archiver stats struct */ @@ -4258,6 +4301,7 @@ pgstat_read_statsfiles(Oid onlydb, bool permanent, bool deep) { ereport(pgStatRunningInCollector ? LOG : WARNING, (errmsg("corrupted statistics file \"%s\"", statfile))); + memset(&archiverStats, 0, sizeof(archiverStats)); goto done; } @@ -4302,6 +4346,15 @@ pgstat_read_statsfiles(Oid onlydb, bool permanent, bool deep) dbentry->tables = NULL; dbentry->functions = NULL; + /* + * In the collector, disregard the timestamp we read from the + * permanent stats file; we should be willing to write a temp + * stats file immediately upon the first request from any + * backend. + */ + if (pgStatRunningInCollector) + dbentry->stats_timestamp = 0; + /* * Don't create tables/functions hashtables for uninteresting * databases. diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index c834d2e304..9b31ddc970 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -354,6 +354,9 @@ static volatile sig_atomic_t start_autovac_launcher = false; /* the launcher needs to be signalled to communicate some condition */ static volatile bool avlauncher_needs_signal = false; +/* received START_WALRECEIVER signal */ +static volatile sig_atomic_t WalReceiverRequested = false; + /* set when there's a worker that needs to be started up */ static volatile bool StartWorkerNeeded = true; static volatile bool HaveCrashedWorker = false; @@ -412,10 +415,12 @@ static void TerminateChildren(int signal); #define SignalChildren(sig) SignalSomeChildren(sig, BACKEND_TYPE_ALL) static int CountChildren(int target); -static void maybe_start_bgworker(void); +static bool assign_backendlist_entry(RegisteredBgWorker *rw); +static void maybe_start_bgworkers(void); static bool CreateOptsFile(int argc, char *argv[], char *fullprogname); static pid_t StartChildProcess(AuxProcType type); static void StartAutovacuumWorker(void); +static void MaybeStartWalReceiver(void); static void InitPostmasterDeathWatchHandle(void); /* @@ -602,6 +607,15 @@ PostmasterMain(int argc, char *argv[]) /* * Set up signal handlers for the postmaster process. * + * In the postmaster, we want to install non-ignored handlers *without* + * SA_RESTART. This is because they'll be blocked at all times except + * when ServerLoop is waiting for something to happen, and during that + * window, we want signals to exit the select(2) wait so that ServerLoop + * can respond if anything interesting happened. On some platforms, + * signals marked SA_RESTART would not cause the select() wait to end. + * Child processes will generally want SA_RESTART, but we expect them to + * set up their own handlers before unblocking signals. + * * CAUTION: when changing this list, check for side-effects on the signal * handling setup of child processes. See tcop/postgres.c, * bootstrap/bootstrap.c, postmaster/bgwriter.c, postmaster/walwriter.c, @@ -612,16 +626,20 @@ PostmasterMain(int argc, char *argv[]) pqinitmask(); PG_SETMASK(&BlockSig); - pqsignal(SIGHUP, SIGHUP_handler); /* reread config file and have - * children do same */ - pqsignal(SIGINT, pmdie); /* send SIGTERM and shut down */ - pqsignal(SIGQUIT, pmdie); /* send SIGQUIT and die */ - pqsignal(SIGTERM, pmdie); /* wait for children and shut down */ + pqsignal_no_restart(SIGHUP, SIGHUP_handler); /* reread config file + * and have children do + * same */ + pqsignal_no_restart(SIGINT, pmdie); /* send SIGTERM and shut down */ + pqsignal_no_restart(SIGQUIT, pmdie); /* send SIGQUIT and die */ + pqsignal_no_restart(SIGTERM, pmdie); /* wait for children and shut + * down */ pqsignal(SIGALRM, SIG_IGN); /* ignored */ pqsignal(SIGPIPE, SIG_IGN); /* ignored */ - pqsignal(SIGUSR1, sigusr1_handler); /* message from child process */ - pqsignal(SIGUSR2, dummy_handler); /* unused, reserve for children */ - pqsignal(SIGCHLD, reaper); /* handle child termination */ + pqsignal_no_restart(SIGUSR1, sigusr1_handler); /* message from child + * process */ + pqsignal_no_restart(SIGUSR2, dummy_handler); /* unused, reserve for + * children */ + pqsignal_no_restart(SIGCHLD, reaper); /* handle child termination */ pqsignal(SIGTTIN, SIG_IGN); /* ignored */ pqsignal(SIGTTOU, SIG_IGN); /* ignored */ /* ignore SIGXFSZ, so that ulimit violations work like disk full */ @@ -1304,7 +1322,7 @@ PostmasterMain(int argc, char *argv[]) pmState = PM_STARTUP; /* Some workers may be scheduled to start now */ - maybe_start_bgworker(); + maybe_start_bgworkers(); status = ServerLoop(); @@ -1753,7 +1771,8 @@ ServerLoop(void) } /* If we have lost the stats collector, try to start a new one */ - if (PgStatPID == 0 && pmState == PM_RUN) + if (PgStatPID == 0 && + (pmState == PM_RUN || pmState == PM_HOT_STANDBY)) PgStatPID = pgstat_start(); /* If we have lost the archiver, try to start a new one. */ @@ -1768,9 +1787,13 @@ ServerLoop(void) kill(AutoVacPID, SIGUSR2); } + /* If we need to start a WAL receiver, try to do that now */ + if (WalReceiverRequested) + MaybeStartWalReceiver(); + /* Get other worker processes running, if needed */ if (StartWorkerNeeded || HaveCrashedWorker) - maybe_start_bgworker(); + maybe_start_bgworkers(); #ifdef HAVE_PTHREAD_IS_THREADED_NP @@ -2808,7 +2831,7 @@ reaper(SIGNAL_ARGS) PgStatPID = pgstat_start(); /* workers may be scheduled to start now */ - maybe_start_bgworker(); + maybe_start_bgworkers(); /* at this point we are really open for business */ ereport(LOG, @@ -2908,7 +2931,8 @@ reaper(SIGNAL_ARGS) /* * Was it the wal receiver? If exit status is zero (normal) or one * (FATAL exit), we assume everything is all right just like normal - * backends. + * backends. (If we need a new wal receiver, we'll start one at the + * next iteration of the postmaster's main loop.) */ if (pid == WalReceiverPID) { @@ -2963,7 +2987,7 @@ reaper(SIGNAL_ARGS) if (!EXIT_STATUS_0(exitstatus)) LogChildExit(LOG, _("statistics collector process"), pid, exitstatus); - if (pmState == PM_RUN) + if (pmState == PM_RUN || pmState == PM_HOT_STANDBY) PgStatPID = pgstat_start(); continue; } @@ -4423,6 +4447,7 @@ internal_forkexec(int argc, char *argv[], Port *port) static pid_t internal_forkexec(int argc, char *argv[], Port *port) { + int retry_count = 0; STARTUPINFO si; PROCESS_INFORMATION pi; int i; @@ -4440,6 +4465,9 @@ internal_forkexec(int argc, char *argv[], Port *port) Assert(strncmp(argv[1], "--fork", 6) == 0); Assert(argv[2] == NULL); + /* Resume here if we need to retry */ +retry: + /* Set up shared memory for parameter passing */ ZeroMemory(&sa, sizeof(sa)); sa.nLength = sizeof(sa); @@ -4531,22 +4559,26 @@ internal_forkexec(int argc, char *argv[], Port *port) /* * Reserve the memory region used by our main shared memory segment before - * we resume the child process. + * we resume the child process. Normally this should succeed, but if ASLR + * is active then it might sometimes fail due to the stack or heap having + * gotten mapped into that range. In that case, just terminate the + * process and retry. */ if (!pgwin32_ReserveSharedMemoryRegion(pi.hProcess)) { - /* - * Failed to reserve the memory, so terminate the newly created - * process and give up. - */ + /* pgwin32_ReserveSharedMemoryRegion already made a log entry */ if (!TerminateProcess(pi.hProcess, 255)) ereport(LOG, (errmsg_internal("could not terminate process that failed to reserve memory: error code %lu", GetLastError()))); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); - return -1; /* logging done made by - * pgwin32_ReserveSharedMemoryRegion() */ + if (++retry_count < 100) + goto retry; + ereport(LOG, + (errmsg("giving up after too many tries to reserve shared memory"), + errhint("This might be caused by ASLR or antivirus software."))); + return -1; } /* @@ -4955,7 +4987,7 @@ sigusr1_handler(SIGNAL_ARGS) } if (StartWorkerNeeded || HaveCrashedWorker) - maybe_start_bgworker(); + maybe_start_bgworkers(); if (CheckPostmasterSignal(PMSIGNAL_WAKEN_ARCHIVER) && PgArchPID != 0) @@ -4996,14 +5028,12 @@ sigusr1_handler(SIGNAL_ARGS) StartAutovacuumWorker(); } - if (CheckPostmasterSignal(PMSIGNAL_START_WALRECEIVER) && - WalReceiverPID == 0 && - (pmState == PM_STARTUP || pmState == PM_RECOVERY || - pmState == PM_HOT_STANDBY || pmState == PM_WAIT_READONLY) && - Shutdown == NoShutdown) + if (CheckPostmasterSignal(PMSIGNAL_START_WALRECEIVER)) { /* Startup Process wants us to start the walreceiver process. */ - WalReceiverPID = StartWalReceiver(); + /* Start immediately if possible, else remember request for later. */ + WalReceiverRequested = true; + MaybeStartWalReceiver(); } if (CheckPostmasterSignal(PMSIGNAL_ADVANCE_STATE_MACHINE) && @@ -5129,7 +5159,7 @@ PostmasterRandom(void) } /* - * Count up number of child processes of specified types (dead_end chidren + * Count up number of child processes of specified types (dead_end children * are always excluded). */ static int @@ -5354,6 +5384,24 @@ StartAutovacuumWorker(void) } } +/* + * MaybeStartWalReceiver + * Start the WAL receiver process, if not running and our state allows. + */ +static void +MaybeStartWalReceiver(void) +{ + if (WalReceiverPID == 0 && + (pmState == PM_STARTUP || pmState == PM_RECOVERY || + pmState == PM_HOT_STANDBY || pmState == PM_WAIT_READONLY) && + Shutdown == NoShutdown) + { + WalReceiverPID = StartWalReceiver(); + WalReceiverRequested = false; + } +} + + /* * Create the opts file */ @@ -5490,13 +5538,33 @@ bgworker_forkexec(int shmem_slot) * Start a new bgworker. * Starting time conditions must have been checked already. * + * Returns true on success, false on failure. + * In either case, update the RegisteredBgWorker's state appropriately. + * * This code is heavily based on autovacuum.c, q.v. */ -static void +static bool do_start_bgworker(RegisteredBgWorker *rw) { pid_t worker_pid; + Assert(rw->rw_pid == 0); + + /* + * Allocate and assign the Backend element. Note we must do this before + * forking, so that we can handle out of memory properly. + * + * Treat failure as though the worker had crashed. That way, the + * postmaster will wait a bit before attempting to start it again; if it + * tried again right away, most likely it'd find itself repeating the + * out-of-memory or fork failure condition. + */ + if (!assign_backendlist_entry(rw)) + { + rw->rw_crashed_at = GetCurrentTimestamp(); + return false; + } + ereport(DEBUG1, (errmsg("starting background worker process \"%s\"", rw->rw_worker.bgw_name))); @@ -5508,9 +5576,17 @@ do_start_bgworker(RegisteredBgWorker *rw) #endif { case -1: + /* in postmaster, fork failed ... */ ereport(LOG, (errmsg("could not fork worker process: %m"))); - return; + /* undo what assign_backendlist_entry did */ + ReleasePostmasterChildSlot(rw->rw_child_slot); + rw->rw_child_slot = 0; + free(rw->rw_backend); + rw->rw_backend = NULL; + /* mark entry as crashed, so we'll try again later */ + rw->rw_crashed_at = GetCurrentTimestamp(); + break; #ifndef EXEC_BACKEND case 0: @@ -5534,14 +5610,24 @@ do_start_bgworker(RegisteredBgWorker *rw) PostmasterContext = NULL; StartBackgroundWorker(); + + exit(1); /* should not get here */ break; #endif default: + /* in postmaster, fork successful ... */ rw->rw_pid = worker_pid; rw->rw_backend->pid = rw->rw_pid; ReportBackgroundWorkerPID(rw); - break; + /* add new worker to lists of backends */ + dlist_push_head(&BackendList, &rw->rw_backend->elem); +#ifdef EXEC_BACKEND + ShmemBackendArrayAdd(rw->rw_backend); +#endif + return true; } + + return false; } /* @@ -5588,6 +5674,8 @@ bgworker_should_start_now(BgWorkerStartTime start_time) * Allocate the Backend struct for a connected background worker, but don't * add it to the list of backends just yet. * + * On failure, return false without changing any worker state. + * * Some info from the Backend is copied into the passed rw. */ static bool @@ -5600,14 +5688,6 @@ assign_backendlist_entry(RegisteredBgWorker *rw) ereport(LOG, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"))); - - /* - * The worker didn't really crash, but setting this nonzero makes - * postmaster wait a bit before attempting to start it again; if it - * tried again right away, most likely it'd find itself under the same - * memory pressure. - */ - rw->rw_crashed_at = GetCurrentTimestamp(); return false; } @@ -5632,25 +5712,37 @@ assign_backendlist_entry(RegisteredBgWorker *rw) } /* - * If the time is right, start one background worker. + * If the time is right, start background worker(s). + * + * As a side effect, the bgworker control variables are set or reset + * depending on whether more workers may need to be started. * - * As a side effect, the bgworker control variables are set or reset whenever - * there are more workers to start after this one, and whenever the overall - * system state requires it. + * We limit the number of workers started per call, to avoid consuming the + * postmaster's attention for too long when many such requests are pending. + * As long as StartWorkerNeeded is true, ServerLoop will not block and will + * call this function again after dealing with any other issues. */ static void -maybe_start_bgworker(void) +maybe_start_bgworkers(void) { - slist_mutable_iter iter; +#define MAX_BGWORKERS_TO_LAUNCH 100 + int num_launched = 0; TimestampTz now = 0; + slist_mutable_iter iter; + /* + * During crash recovery, we have no need to be called until the state + * transition out of recovery. + */ if (FatalError) { StartWorkerNeeded = false; HaveCrashedWorker = false; - return; /* not yet */ + return; } + /* Don't need to be called again unless we find a reason for it below */ + StartWorkerNeeded = false; HaveCrashedWorker = false; slist_foreach_modify(iter, &BackgroundWorkerList) @@ -5659,11 +5751,11 @@ maybe_start_bgworker(void) rw = slist_container(RegisteredBgWorker, rw_lnode, iter.cur); - /* already running? */ + /* ignore if already running */ if (rw->rw_pid != 0) continue; - /* marked for death? */ + /* if marked for death, clean up and remove from list */ if (rw->rw_terminate) { ForgetBackgroundWorker(&iter); @@ -5685,12 +5777,14 @@ maybe_start_bgworker(void) continue; } + /* read system time only when needed */ if (now == 0) now = GetCurrentTimestamp(); if (!TimestampDifferenceExceeds(rw->rw_crashed_at, now, rw->rw_worker.bgw_restart_time * 1000)) { + /* Set flag to remember that we have workers to start later */ HaveCrashedWorker = true; continue; } @@ -5698,35 +5792,39 @@ maybe_start_bgworker(void) if (bgworker_should_start_now(rw->rw_worker.bgw_start_time)) { - /* reset crash time before calling assign_backendlist_entry */ + /* reset crash time before trying to start worker */ rw->rw_crashed_at = 0; /* - * Allocate and assign the Backend element. Note we must do this - * before forking, so that we can handle out of memory properly. + * Try to start the worker. + * + * On failure, give up processing workers for now, but set + * StartWorkerNeeded so we'll come back here on the next iteration + * of ServerLoop to try again. (We don't want to wait, because + * there might be additional ready-to-run workers.) We could set + * HaveCrashedWorker as well, since this worker is now marked + * crashed, but there's no need because the next run of this + * function will do that. */ - if (!assign_backendlist_entry(rw)) + if (!do_start_bgworker(rw)) + { + StartWorkerNeeded = true; return; - - do_start_bgworker(rw); /* sets rw->rw_pid */ - - dlist_push_head(&BackendList, &rw->rw_backend->elem); -#ifdef EXEC_BACKEND - ShmemBackendArrayAdd(rw->rw_backend); -#endif + } /* - * Have ServerLoop call us again. Note that there might not - * actually *be* another runnable worker, but we don't care all - * that much; we will find out the next time we run. + * If we've launched as many workers as allowed, quit, but have + * ServerLoop call us again to look for additional ready-to-run + * workers. There might not be any, but we'll find out the next + * time we run. */ - StartWorkerNeeded = true; - return; + if (++num_launched >= MAX_BGWORKERS_TO_LAUNCH) + { + StartWorkerNeeded = true; + return; + } } } - - /* no runnable worker found */ - StartWorkerNeeded = false; } /* @@ -6213,7 +6311,7 @@ InitPostmasterDeathWatchHandle(void) * write fd. That is taken care of in ClosePostmasterPorts(). */ Assert(MyProcPid == PostmasterPid); - if (pipe(postmaster_alive_fds)) + if (pipe(postmaster_alive_fds) < 0) ereport(FATAL, (errcode_for_file_access(), errmsg_internal("could not create pipe to monitor postmaster death: %m"))); @@ -6222,7 +6320,7 @@ InitPostmasterDeathWatchHandle(void) * Set O_NONBLOCK to allow testing for the fd's presence with a read() * call. */ - if (fcntl(postmaster_alive_fds[POSTMASTER_FD_WATCH], F_SETFL, O_NONBLOCK)) + if (fcntl(postmaster_alive_fds[POSTMASTER_FD_WATCH], F_SETFL, O_NONBLOCK) == -1) ereport(FATAL, (errcode_for_socket_access(), errmsg_internal("could not set postmaster death monitoring pipe to nonblocking mode: %m"))); diff --git a/src/backend/regex/regexport.c b/src/backend/regex/regexport.c index 93da82286f..43fbe98f77 100644 --- a/src/backend/regex/regexport.c +++ b/src/backend/regex/regexport.c @@ -6,8 +6,8 @@ * In this implementation, the NFA defines a necessary but not sufficient * condition for a string to match the regex: that is, there can be strings * that match the NFA but don't match the full regex, but not vice versa. - * Thus, for example, it is okay for the functions below to ignore lookaround - * constraints, which merely constrain the string some more. + * Thus, for example, it is okay for the functions below to treat lookaround + * constraints as no-ops, since they merely constrain the string some more. * * Notice that these functions return info into caller-provided arrays * rather than doing their own malloc's. This simplifies the APIs by @@ -28,6 +28,8 @@ #include "regex/regexport.h" +#include "miscadmin.h" + static void scancolormap(struct colormap * cm, int co, union tree * t, int level, chr partial, pg_wchar **chars, int *chars_len); @@ -76,29 +78,78 @@ pg_reg_getfinalstate(const regex_t *regex) } /* - * Get number of outgoing NFA arcs of state number "st". + * pg_reg_getnumoutarcs() and pg_reg_getoutarcs() mask the existence of LACON + * arcs from the caller, treating any LACON as being automatically satisfied. + * Since the output representation does not support arcs that consume no + * character when traversed, we have to recursively traverse LACON arcs here, + * and report whatever normal arcs are reachable by traversing LACON arcs. + * Note that this wouldn't work if it were possible to reach the final state + * via LACON traversal, but the regex library never builds NFAs that have + * LACON arcs leading directly to the final state. (This is because the + * regex executor is designed to consume one character beyond the nominal + * match end --- possibly an EOS indicator --- so there is always a set of + * ordinary arcs leading to the final state.) * - * Note: LACON arcs are ignored, both here and in pg_reg_getoutarcs(). + * traverse_lacons is a recursive subroutine used by both exported functions + * to count and then emit the reachable regular arcs. *arcs_count is + * incremented by the number of reachable arcs, and as many as will fit in + * arcs_len (possibly 0) are emitted into arcs[]. + */ +static void +traverse_lacons(struct cnfa * cnfa, int st, + int *arcs_count, + regex_arc_t *arcs, int arcs_len) +{ + struct carc *ca; + + /* + * Since this function recurses, it could theoretically be driven to stack + * overflow. In practice, this is mostly useful to backstop against a + * failure of the regex compiler to remove a loop of LACON arcs. + */ + check_stack_depth(); + + for (ca = cnfa->states[st]; ca->co != COLORLESS; ca++) + { + if (ca->co < cnfa->ncolors) + { + /* Ordinary arc, so count and possibly emit it */ + int ndx = (*arcs_count)++; + + if (ndx < arcs_len) + { + arcs[ndx].co = ca->co; + arcs[ndx].to = ca->to; + } + } + else + { + /* LACON arc --- assume it's satisfied and recurse... */ + /* ... but first, assert it doesn't lead directly to post state */ + Assert(ca->to != cnfa->post); + + traverse_lacons(cnfa, ca->to, arcs_count, arcs, arcs_len); + } + } +} + +/* + * Get number of outgoing NFA arcs of state number "st". */ int pg_reg_getnumoutarcs(const regex_t *regex, int st) { struct cnfa *cnfa; - struct carc *ca; - int count; + int arcs_count; assert(regex != NULL && regex->re_magic == REMAGIC); cnfa = &((struct guts *) regex->re_guts)->search; if (st < 0 || st >= cnfa->nstates) return 0; - count = 0; - for (ca = cnfa->states[st]; ca->co != COLORLESS; ca++) - { - if (ca->co < cnfa->ncolors) - count++; - } - return count; + arcs_count = 0; + traverse_lacons(cnfa, st, &arcs_count, NULL, 0); + return arcs_count; } /* @@ -111,24 +162,15 @@ pg_reg_getoutarcs(const regex_t *regex, int st, regex_arc_t *arcs, int arcs_len) { struct cnfa *cnfa; - struct carc *ca; + int arcs_count; assert(regex != NULL && regex->re_magic == REMAGIC); cnfa = &((struct guts *) regex->re_guts)->search; if (st < 0 || st >= cnfa->nstates || arcs_len <= 0) return; - for (ca = cnfa->states[st]; ca->co != COLORLESS; ca++) - { - if (ca->co < cnfa->ncolors) - { - arcs->co = ca->co; - arcs->to = ca->to; - arcs++; - if (--arcs_len == 0) - break; - } - } + arcs_count = 0; + traverse_lacons(cnfa, st, &arcs_count, arcs, arcs_len); } /* diff --git a/src/backend/replication/basebackup.c b/src/backend/replication/basebackup.c index da9b7a6f0d..87a753787f 100644 --- a/src/backend/replication/basebackup.c +++ b/src/backend/replication/basebackup.c @@ -57,6 +57,8 @@ static bool sendFile(char *readfilename, char *tarfilename, static void sendFileWithContent(const char *filename, const char *content); static void _tarWriteHeader(const char *filename, const char *linktarget, struct stat * statbuf); +static int64 _tarWriteDir(const char *pathbuf, int basepathlen, struct stat * statbuf, + bool sizeonly); static void send_int8_string(StringInfoData *buf, int64 intval); static void SendBackupHeader(List *tablespaces); static void base_backup_cleanup(int code, Datum arg); @@ -886,7 +888,7 @@ sendDir(char *path, int basepathlen, bool sizeonly, List *tablespaces, { DIR *dir; struct dirent *de; - char pathbuf[MAXPGPATH]; + char pathbuf[MAXPGPATH * 2]; struct stat statbuf; int64 size = 0; @@ -938,7 +940,7 @@ sendDir(char *path, int basepathlen, bool sizeonly, List *tablespaces, "and should not be used. " "Try taking another online backup."))); - snprintf(pathbuf, MAXPGPATH, "%s/%s", path, de->d_name); + snprintf(pathbuf, sizeof(pathbuf), "%s/%s", path, de->d_name); /* Skip postmaster.pid and postmaster.opts in the data directory */ if (strcmp(pathbuf, "./postmaster.pid") == 0 || @@ -969,9 +971,7 @@ sendDir(char *path, int basepathlen, bool sizeonly, List *tablespaces, if ((statrelpath != NULL && strcmp(pathbuf, statrelpath) == 0) || strncmp(de->d_name, PG_STAT_TMP_DIR, strlen(PG_STAT_TMP_DIR)) == 0) { - if (!sizeonly) - _tarWriteHeader(pathbuf + basepathlen + 1, NULL, &statbuf); - size += 512; + size += _tarWriteDir(pathbuf, basepathlen, &statbuf, sizeonly); continue; } @@ -981,9 +981,7 @@ sendDir(char *path, int basepathlen, bool sizeonly, List *tablespaces, */ if (strcmp(de->d_name, "pg_replslot") == 0) { - if (!sizeonly) - _tarWriteHeader(pathbuf + basepathlen + 1, NULL, &statbuf); - size += 512; /* Size of the header just added */ + size += _tarWriteDir(pathbuf, basepathlen, &statbuf, sizeonly); continue; } @@ -994,18 +992,8 @@ sendDir(char *path, int basepathlen, bool sizeonly, List *tablespaces, */ if (strcmp(pathbuf, "./pg_xlog") == 0) { - if (!sizeonly) - { - /* If pg_xlog is a symlink, write it as a directory anyway */ -#ifndef WIN32 - if (S_ISLNK(statbuf.st_mode)) -#else - if (pgwin32_is_junction(pathbuf)) -#endif - statbuf.st_mode = S_IFDIR | S_IRWXU; - _tarWriteHeader(pathbuf + basepathlen + 1, NULL, &statbuf); - } - size += 512; /* Size of the header just added */ + /* If pg_xlog is a symlink, write it as a directory anyway */ + size += _tarWriteDir(pathbuf, basepathlen, &statbuf, sizeonly); /* * Also send archive_status directory (by hackishly reusing @@ -1247,6 +1235,30 @@ _tarWriteHeader(const char *filename, const char *linktarget, pq_putmessage('d', h, 512); } +/* + * Write tar header for a directory. If the entry in statbuf is a link then + * write it as a directory anyway. + */ +static int64 +_tarWriteDir(const char *pathbuf, int basepathlen, struct stat * statbuf, + bool sizeonly) +{ + if (sizeonly) + /* Directory headers are always 512 bytes */ + return 512; + + /* If symlink, write it as a directory anyway */ +#ifndef WIN32 + if (S_ISLNK(statbuf->st_mode)) +#else + if (pgwin32_is_junction(pathbuf)) +#endif + statbuf->st_mode = S_IFDIR | S_IRWXU; + + _tarWriteHeader(pathbuf + basepathlen + 1, NULL, statbuf); + return 512; +} + /* * Increment the network transfer counter by the given number of bytes, * and sleep if necessary to comply with the requested network transfer @@ -1291,26 +1303,16 @@ throttle(size_t increment) if (wait_result & WL_LATCH_SET) CHECK_FOR_INTERRUPTS(); } - else - { - /* - * The actual transfer rate is below the limit. A negative value - * would distort the adjustment of throttled_last. - */ - wait_result = 0; - sleep = 0; - } /* - * Only a whole multiple of throttling_sample was processed. The rest will - * be done during the next call of this function. + * As we work with integers, only whole multiple of throttling_sample was + * processed. The rest will be done during the next call of this function. */ throttling_counter %= throttling_sample; - /* Once the (possible) sleep has ended, new period starts. */ - if (wait_result & WL_TIMEOUT) - throttled_last += elapsed + sleep; - else if (sleep > 0) - /* Sleep was necessary but might have been interrupted. */ - throttled_last = GetCurrentIntegerTimestamp(); + /* + * Time interval for the remaining amount and possible next increments + * starts now. + */ + throttled_last = GetCurrentIntegerTimestamp(); } diff --git a/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c b/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c index f1c843e868..3e8ae1c12f 100644 --- a/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c +++ b/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c @@ -478,14 +478,20 @@ libpqrcv_PQexec(const char *query) */ if (!libpq_select(-1)) continue; /* interrupted */ + + /* Consume whatever data is available from the socket */ if (PQconsumeInput(streamConn) == 0) - return NULL; /* trouble */ + { + /* trouble; drop whatever we had and return NULL */ + PQclear(lastResult); + return NULL; + } } /* - * Emulate the PQexec()'s behavior of returning the last result when - * there are many. Since walsender will never generate multiple - * results, we skip the concatenation of error messages. + * Emulate PQexec()'s behavior of returning the last result when there + * are many. Since walsender will never generate multiple results, we + * skip the concatenation of error messages. */ result = PQgetResult(streamConn); if (result == NULL) diff --git a/src/backend/replication/logical/decode.c b/src/backend/replication/logical/decode.c index 6c40b8b59c..072187e066 100644 --- a/src/backend/replication/logical/decode.c +++ b/src/backend/replication/logical/decode.c @@ -746,7 +746,7 @@ DecodeAbort(LogicalDecodingContext *ctx, XLogRecordBuffer *buf, xl_xact_parsed_abort *parsed, TransactionId xid) { int i; - XLogRecPtr origin_lsn = InvalidXLogRecPtr; + XLogRecPtr origin_lsn = parsed->origin_lsn; XLogRecPtr commit_time = InvalidXLogRecPtr; RepOriginId origin_id = XLogRecGetOrigin(buf->record); @@ -771,9 +771,6 @@ DecodeAbort(LogicalDecodingContext *ctx, XLogRecordBuffer *buf, return; } - SnapBuildAbortTxn(ctx->snapshot_builder, buf->record->EndRecPtr, xid, - parsed->nsubxacts, parsed->subxacts); - for (i = 0; i < parsed->nsubxacts; i++) { ReorderBufferAbort(ctx->reorder, parsed->subxacts[i], diff --git a/src/backend/replication/logical/logical.c b/src/backend/replication/logical/logical.c index 1512be5322..5d1921ad4f 100644 --- a/src/backend/replication/logical/logical.c +++ b/src/backend/replication/logical/logical.c @@ -114,6 +114,7 @@ static LogicalDecodingContext * StartupDecodingContext(List *output_plugin_options, XLogRecPtr start_lsn, TransactionId xmin_horizon, + bool need_full_snapshot, XLogPageReadCB read_page, LogicalOutputPluginWriterPrepareWrite prepare_write, LogicalOutputPluginWriterWrite do_write) @@ -171,7 +172,8 @@ StartupDecodingContext(List *output_plugin_options, ctx->reorder = ReorderBufferAllocate(); ctx->snapshot_builder = - AllocateSnapshotBuilder(ctx->reorder, xmin_horizon, start_lsn); + AllocateSnapshotBuilder(ctx->reorder, xmin_horizon, start_lsn, + need_full_snapshot); ctx->reorder->private_data = ctx; @@ -210,6 +212,7 @@ StartupDecodingContext(List *output_plugin_options, LogicalDecodingContext * CreateInitDecodingContext(char *plugin, List *output_plugin_options, + bool need_full_snapshot, XLogPageReadCB read_page, LogicalOutputPluginWriterPrepareWrite prepare_write, LogicalOutputPluginWriterWrite do_write) @@ -267,28 +270,37 @@ CreateInitDecodingContext(char *plugin, * the slot machinery about the new limit. Once that's done the * ProcArrayLock can be released as the slot machinery now is * protecting against vacuum. + * + * Note that, temporarily, the data, not just the catalog, xmin has to be + * reserved if a data snapshot is to be exported. Otherwise the initial + * data snapshot created here is not guaranteed to be valid. After that + * the data xmin doesn't need to be managed anymore and the global xmin + * should be recomputed. As we are fine with losing the pegged data xmin + * after crash - no chance a snapshot would get exported anymore - we can + * get away with just setting the slot's + * effective_xmin. ReplicationSlotRelease will reset it again. + * * ---- */ LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE); - slot->effective_catalog_xmin = GetOldestSafeDecodingTransactionId(); - slot->data.catalog_xmin = slot->effective_catalog_xmin; + xmin_horizon = GetOldestSafeDecodingTransactionId(!need_full_snapshot); + + slot->effective_catalog_xmin = xmin_horizon; + slot->data.catalog_xmin = xmin_horizon; + if (need_full_snapshot) + slot->effective_xmin = xmin_horizon; ReplicationSlotsComputeRequiredXmin(true); LWLockRelease(ProcArrayLock); - /* - * tell the snapshot builder to only assemble snapshot once reaching the - * running_xact's record with the respective xmin. - */ - xmin_horizon = slot->data.catalog_xmin; - ReplicationSlotMarkDirty(); ReplicationSlotSave(); ctx = StartupDecodingContext(NIL, InvalidXLogRecPtr, xmin_horizon, - read_page, prepare_write, do_write); + need_full_snapshot, read_page, prepare_write, + do_write); /* call output plugin initialization callback */ old_context = MemoryContextSwitchTo(ctx->context); @@ -377,7 +389,7 @@ CreateDecodingContext(XLogRecPtr start_lsn, } ctx = StartupDecodingContext(output_plugin_options, - start_lsn, InvalidTransactionId, + start_lsn, InvalidTransactionId, false, read_page, prepare_write, do_write); /* call output plugin initialization callback */ @@ -746,6 +758,35 @@ message_cb_wrapper(ReorderBuffer *cache, ReorderBufferTXN *txn, error_context_stack = errcallback.previous; } +void LogicalDecodingCaughtUp(LogicalDecodingContext *ctx) +{ + LogicalErrorCallbackState state; + ErrorContextCallback errcallback; + + if (ctx->callbacks.caughtup_cb == NULL) + return; + + /* Push callback + info on the error context stack */ + state.ctx = ctx; + state.callback_name = "caughtup"; + state.report_location = ctx->reader->EndRecPtr; + errcallback.callback = output_plugin_error_callback; + errcallback.arg = (void *) &state; + errcallback.previous = error_context_stack; + error_context_stack = &errcallback; + + /* set output state */ + ctx->accept_writes = true; + ctx->write_xid = InvalidTransactionId; + ctx->write_location = ctx->reader->EndRecPtr; + + /* do the actual work: call callback */ + ctx->callbacks.caughtup_cb(ctx); + + /* Pop the error context stack */ + error_context_stack = errcallback.previous; +} + /* * Set the required catalog xmin horizon for historic snapshots in the current * replication slot. diff --git a/src/backend/replication/logical/origin.c b/src/backend/replication/logical/origin.c index cc2b513236..0d0aa407ba 100644 --- a/src/backend/replication/logical/origin.c +++ b/src/backend/replication/logical/origin.c @@ -566,6 +566,9 @@ CheckPointReplicationOrigin(void) if (curstate->roident == InvalidRepOriginId) continue; + /* zero, to avoid uninitialized padding bytes */ + memset(&disk_state, 0, sizeof(disk_state)); + LWLockAcquire(&curstate->lock, LW_SHARED); disk_state.roident = curstate->roident; @@ -1257,7 +1260,7 @@ pg_replication_origin_session_is_setup(PG_FUNCTION_ARGS) * Return the replication progress for origin setup in the current session. * * If 'flush' is set to true it is ensured that the returned value corresponds - * to a local transaction that has been flushed. this is useful if asychronous + * to a local transaction that has been flushed. this is useful if asynchronous * commits are used when replaying replicated transactions. */ Datum @@ -1343,7 +1346,7 @@ pg_replication_origin_advance(PG_FUNCTION_ARGS) * Return the replication progress for an individual replication origin. * * If 'flush' is set to true it is ensured that the returned value corresponds - * to a local transaction that has been flushed. this is useful if asychronous + * to a local transaction that has been flushed. this is useful if asynchronous * commits are used when replaying replicated transactions. */ Datum diff --git a/src/backend/replication/logical/reorderbuffer.c b/src/backend/replication/logical/reorderbuffer.c index df642b3eb6..39f656c4c2 100644 --- a/src/backend/replication/logical/reorderbuffer.c +++ b/src/backend/replication/logical/reorderbuffer.c @@ -933,7 +933,7 @@ ReorderBufferIterTXNInit(ReorderBuffer *rb, ReorderBufferTXN *txn) { ReorderBufferChange *cur_change; - if (txn->nentries != txn->nentries_mem) + if (txn->serialized) { /* serialize remaining changes */ ReorderBufferSerializeTXN(rb, txn); @@ -962,7 +962,7 @@ ReorderBufferIterTXNInit(ReorderBuffer *rb, ReorderBufferTXN *txn) { ReorderBufferChange *cur_change; - if (cur_txn->nentries != cur_txn->nentries_mem) + if (cur_txn->serialized) { /* serialize remaining changes */ ReorderBufferSerializeTXN(rb, cur_txn); @@ -1184,7 +1184,7 @@ ReorderBufferCleanupTXN(ReorderBuffer *rb, ReorderBufferTXN *txn) Assert(found); /* remove entries spilled to disk */ - if (txn->nentries != txn->nentries_mem) + if (txn->serialized) ReorderBufferRestoreCleanup(rb, txn); /* deallocate */ @@ -1459,11 +1459,12 @@ ReorderBufferCommit(ReorderBuffer *rb, TransactionId xid, change->data.tp.newtuple == NULL && change->data.tp.oldtuple == NULL) goto change_done; - else if (reloid == InvalidOid) + else if (reloid == InvalidOid) { + Assert(reloid != InvalidOid); elog(ERROR, "could not map filenode \"%s\" to relation OID", relpathperm(change->data.tp.relnode, MAIN_FORKNUM)); - + } relation = RelationIdGetRelation(reloid); if (relation == NULL) @@ -1745,7 +1746,7 @@ ReorderBufferCommitBareXact(ReorderBuffer *rb, TransactionId xid, * * NB: Transactions handled here have to have actively aborted (i.e. have * produced an abort record). Implicitly aborted transactions are handled via - * ReorderBufferAbortOld(); transactions we're just not interesteded in, but + * ReorderBufferAbortOld(); transactions we're just not interested in, but * which have committed are handled in ReorderBufferForget(). * * This function purges this transaction and its contents from memory and @@ -1797,7 +1798,7 @@ ReorderBufferAbortOld(ReorderBuffer *rb, TransactionId oldestRunningXid) if (TransactionIdPrecedes(txn->xid, oldestRunningXid)) { - elog(DEBUG1, "aborting old transaction %u", txn->xid); + elog(DEBUG2, "aborting old transaction %u", txn->xid); /* remove potential on-disk data, and deallocate this tx */ ReorderBufferCleanupTXN(rb, txn); @@ -1813,7 +1814,7 @@ ReorderBufferAbortOld(ReorderBuffer *rb, TransactionId oldestRunningXid) * toplevel xid. * * This is significantly different to ReorderBufferAbort() because - * transactions that have committed need to be treated differenly from aborted + * transactions that have committed need to be treated differently from aborted * ones since they may have modified the catalog. * * Note that this is only allowed to be called in the moment a transaction @@ -2196,6 +2197,7 @@ ReorderBufferSerializeTXN(ReorderBuffer *rb, ReorderBufferTXN *txn) Assert(spilled == txn->nentries_mem); Assert(dlist_is_empty(&txn->changes)); txn->nentries_mem = 0; + txn->serialized = true; if (fd != -1) CloseTransientFile(fd); @@ -2583,7 +2585,7 @@ ReorderBufferRestoreChange(ReorderBuffer *rb, ReorderBufferTXN *txn, Assert(change->data.msg.prefix[prefix_size - 1] == '\0'); data += prefix_size; - /* read the messsage */ + /* read the message */ memcpy(&change->data.msg.message_size, data, sizeof(Size)); data += sizeof(Size); change->data.msg.message = MemoryContextAlloc(rb->context, @@ -2679,7 +2681,7 @@ StartupReorderBuffer(void) while ((logical_de = ReadDir(logical_dir, "pg_replslot")) != NULL) { struct stat statbuf; - char path[MAXPGPATH]; + char path[MAXPGPATH * 2 + 12]; if (strcmp(logical_de->d_name, ".") == 0 || strcmp(logical_de->d_name, "..") == 0) @@ -2691,7 +2693,7 @@ StartupReorderBuffer(void) /* * ok, has to be a surviving logical slot, iterate and delete - * everythign starting with xid-* + * everything starting with xid-* */ sprintf(path, "pg_replslot/%s", logical_de->d_name); diff --git a/src/backend/replication/logical/snapbuild.c b/src/backend/replication/logical/snapbuild.c index a0066f9800..536a752700 100644 --- a/src/backend/replication/logical/snapbuild.c +++ b/src/backend/replication/logical/snapbuild.c @@ -56,23 +56,34 @@ * * * The snapbuild machinery is starting up in several stages, as illustrated - * by the following graph: + * by the following graph describing the SnapBuild->state transitions: + * * +-------------------------+ - * +----|SNAPBUILD_START |-------------+ + * +----| START |-------------+ * | +-------------------------+ | * | | | * | | | - * | running_xacts with running xacts | + * | running_xacts #1 | * | | | * | | | * | v | * | +-------------------------+ v - * | |SNAPBUILD_FULL_SNAPSHOT |------------>| + * | | BUILDING_SNAPSHOT |------------>| * | +-------------------------+ | + * | | | + * | | | + * | running_xacts #2, xacts from #1 finished | + * | | | + * | | | + * | v | + * | +-------------------------+ v + * | | FULL_SNAPSHOT |------------>| + * | +-------------------------+ | + * | | | * running_xacts | saved snapshot * with zero xacts | at running_xacts's lsn * | | | - * | all running toplevel TXNs finished | + * | running_xacts with xacts from #2 finished | * | | | * | v | * | +-------------------------+ | @@ -82,8 +93,8 @@ * Initially the machinery is in the START stage. When an xl_running_xacts * record is read that is sufficiently new (above the safe xmin horizon), * there's a state transition. If there were no running xacts when the - * runnign_xacts record was generated, we'll directly go into CONSISTENT - * state, otherwise we'll switch to the FULL_SNAPSHOT state. Having a full + * running_xacts record was generated, we'll directly go into CONSISTENT + * state, otherwise we'll switch to the BUILDING_SNAPSHOT state. Having a full * snapshot means that all transactions that start henceforth can be decoded * in their entirety, but transactions that started previously can't. In * FULL_SNAPSHOT we'll switch into CONSISTENT once all those previously @@ -164,6 +175,9 @@ struct SnapBuild */ TransactionId initial_xmin_horizon; + /* Indicates if we are building full snapshot or just catalog one .*/ + bool building_full_snapshot; + /* * Snapshot that's valid to see the catalog state seen at this moment. */ @@ -180,26 +194,24 @@ struct SnapBuild ReorderBuffer *reorder; /* - * Information about initially running transactions - * - * When we start building a snapshot there already may be transactions in - * progress. Those are stored in running.xip. We don't have enough - * information about those to decode their contents, so until they are - * finished (xcnt=0) we cannot switch to a CONSISTENT state. + * Outdated: This struct isn't used for its original purpose anymore, but + * can't be removed / changed in a minor version, because it's stored + * on-disk. */ struct { /* - * As long as running.xcnt all XIDs < running.xmin and > running.xmax - * have to be checked whether they still are running. + * NB: This field is misused, until a major version can break on-disk + * compatibility. See SnapBuildNextPhaseAt() / + * SnapBuildStartNextPhaseAt(). */ - TransactionId xmin; - TransactionId xmax; + TransactionId was_xmin; + TransactionId was_xmax; - size_t xcnt; /* number of used xip entries */ - size_t xcnt_space; /* allocated size of xip */ - TransactionId *xip; /* running xacts array, xidComparator-sorted */ - } running; + size_t was_xcnt; /* number of used xip entries */ + size_t was_xcnt_space; /* allocated size of xip */ + TransactionId *was_xip; /* running xacts array, xidComparator-sorted */ + } was_running; /* * Array of transactions which could have catalog changes that committed @@ -245,12 +257,6 @@ struct SnapBuild static ResourceOwner SavedResourceOwnerDuringExport = NULL; static bool ExportInProgress = false; -/* transaction state manipulation functions */ -static void SnapBuildEndTxn(SnapBuild *builder, XLogRecPtr lsn, TransactionId xid); - -/* ->running manipulation */ -static bool SnapBuildTxnIsRunning(SnapBuild *builder, TransactionId xid); - /* ->committed manipulation */ static void SnapBuildPurgeCommittedTxn(SnapBuild *builder); @@ -265,11 +271,39 @@ static void SnapBuildDistributeNewCatalogSnapshot(SnapBuild *builder, XLogRecPtr /* xlog reading helper functions for SnapBuildProcessRecord */ static bool SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *running); +static void SnapBuildWaitSnapshot(xl_running_xacts *running, TransactionId cutoff); /* serialization functions */ static void SnapBuildSerialize(SnapBuild *builder, XLogRecPtr lsn); static bool SnapBuildRestore(SnapBuild *builder, XLogRecPtr lsn); +/* + * Return TransactionId after which the next phase of initial snapshot + * building will happen. + */ +static inline TransactionId +SnapBuildNextPhaseAt(SnapBuild *builder) +{ + /* + * For backward compatibility reasons this has to be stored in the wrongly + * named field. Will be fixed in next major version. + */ + return builder->was_running.was_xmax; +} + +/* + * Set TransactionId after which the next phase of initial snapshot building + * will happen. + */ +static inline void +SnapBuildStartNextPhaseAt(SnapBuild *builder, TransactionId at) +{ + /* + * For backward compatibility reasons this has to be stored in the wrongly + * named field. Will be fixed in next major version. + */ + builder->was_running.was_xmax = at; +} /* * Allocate a new snapshot builder. @@ -280,7 +314,8 @@ static bool SnapBuildRestore(SnapBuild *builder, XLogRecPtr lsn); SnapBuild * AllocateSnapshotBuilder(ReorderBuffer *reorder, TransactionId xmin_horizon, - XLogRecPtr start_lsn) + XLogRecPtr start_lsn, + bool need_full_snapshot) { MemoryContext context; MemoryContext oldcontext; @@ -307,6 +342,7 @@ AllocateSnapshotBuilder(ReorderBuffer *reorder, builder->initial_xmin_horizon = xmin_horizon; builder->start_decoding_at = start_lsn; + builder->building_full_snapshot = need_full_snapshot; MemoryContextSwitchTo(oldcontext); @@ -551,6 +587,18 @@ SnapBuildExportSnapshot(SnapBuild *builder) * mechanism. Due to that we can do this without locks, we're only * changing our own value. */ +#ifdef USE_ASSERT_CHECKING + { + TransactionId safeXid; + + LWLockAcquire(ProcArrayLock, LW_SHARED); + safeXid = GetOldestSafeDecodingTransactionId(false); + LWLockRelease(ProcArrayLock); + + Assert(TransactionIdPrecedesOrEquals(safeXid, snap->xmin)); + } +#endif + MyPgXact->xmin = snap->xmin; /* allocate in transaction context */ @@ -614,7 +662,7 @@ SnapBuildGetOrBuildSnapshot(SnapBuild *builder, TransactionId xid) if (builder->snapshot == NULL) { builder->snapshot = SnapBuildBuildSnapshot(builder, xid); - /* inrease refcount for the snapshot builder */ + /* increase refcount for the snapshot builder */ SnapBuildSnapIncRefcount(builder->snapshot); } @@ -665,7 +713,7 @@ SnapBuildProcessChange(SnapBuild *builder, TransactionId xid, XLogRecPtr lsn) * we got into the SNAPBUILD_FULL_SNAPSHOT state. */ if (builder->state < SNAPBUILD_CONSISTENT && - SnapBuildTxnIsRunning(builder, xid)) + TransactionIdPrecedes(xid, SnapBuildNextPhaseAt(builder))) return false; /* @@ -678,7 +726,7 @@ SnapBuildProcessChange(SnapBuild *builder, TransactionId xid, XLogRecPtr lsn) if (builder->snapshot == NULL) { builder->snapshot = SnapBuildBuildSnapshot(builder, xid); - /* inrease refcount for the snapshot builder */ + /* increase refcount for the snapshot builder */ SnapBuildSnapIncRefcount(builder->snapshot); } @@ -733,38 +781,6 @@ SnapBuildProcessNewCid(SnapBuild *builder, TransactionId xid, ReorderBufferAddNewCommandId(builder->reorder, xid, lsn, cid + 1); } -/* - * Check whether `xid` is currently 'running'. - * - * Running transactions in our parlance are transactions which we didn't - * observe from the start so we can't properly decode their contents. They - * only exist after we freshly started from an < CONSISTENT snapshot. - */ -static bool -SnapBuildTxnIsRunning(SnapBuild *builder, TransactionId xid) -{ - Assert(builder->state < SNAPBUILD_CONSISTENT); - Assert(TransactionIdIsNormal(builder->running.xmin)); - Assert(TransactionIdIsNormal(builder->running.xmax)); - - if (builder->running.xcnt && - NormalTransactionIdFollows(xid, builder->running.xmin) && - NormalTransactionIdPrecedes(xid, builder->running.xmax)) - { - TransactionId *search = - bsearch(&xid, builder->running.xip, builder->running.xcnt_space, - sizeof(TransactionId), xidComparator); - - if (search != NULL) - { - Assert(*search == xid); - return true; - } - } - - return false; -} - /* * Add a new Snapshot to all transactions we're decoding that currently are * in-progress so they can see new catalog contents made by the transaction @@ -886,63 +902,6 @@ SnapBuildPurgeCommittedTxn(SnapBuild *builder) pfree(workspace); } -/* - * Common logic for SnapBuildAbortTxn and SnapBuildCommitTxn dealing with - * keeping track of the amount of running transactions. - */ -static void -SnapBuildEndTxn(SnapBuild *builder, XLogRecPtr lsn, TransactionId xid) -{ - if (builder->state == SNAPBUILD_CONSISTENT) - return; - - /* - * NB: This handles subtransactions correctly even if we started from - * suboverflowed xl_running_xacts because we only keep track of toplevel - * transactions. Since the latter are always allocated before their - * subxids and since they end at the same time it's sufficient to deal - * with them here. - */ - if (SnapBuildTxnIsRunning(builder, xid)) - { - Assert(builder->running.xcnt > 0); - - if (!--builder->running.xcnt) - { - /* - * None of the originally running transaction is running anymore, - * so our incrementaly built snapshot now is consistent. - */ - ereport(LOG, - (errmsg("logical decoding found consistent point at %X/%X", - (uint32) (lsn >> 32), (uint32) lsn), - errdetail("Transaction ID %u finished; no more running transactions.", - xid))); - builder->state = SNAPBUILD_CONSISTENT; - } - } -} - -/* - * Abort a transaction, throw away all state we kept. - */ -void -SnapBuildAbortTxn(SnapBuild *builder, XLogRecPtr lsn, - TransactionId xid, - int nsubxacts, TransactionId *subxacts) -{ - int i; - - for (i = 0; i < nsubxacts; i++) - { - TransactionId subxid = subxacts[i]; - - SnapBuildEndTxn(builder, lsn, subxid); - } - - SnapBuildEndTxn(builder, lsn, xid); -} - /* * Handle everything that needs to be done when a transaction commits */ @@ -952,21 +911,26 @@ SnapBuildCommitTxn(SnapBuild *builder, XLogRecPtr lsn, TransactionId xid, { int nxact; - bool forced_timetravel = false; + bool needs_snapshot = false; + bool needs_timetravel = false; bool sub_needs_timetravel = false; - bool top_needs_timetravel = false; TransactionId xmax = xid; /* - * If we couldn't observe every change of a transaction because it was - * already running at the point we started to observe we have to assume it - * made catalog changes. - * - * This has the positive benefit that we afterwards have enough - * information to build an exportable snapshot that's usable by pg_dump et - * al. + * Transactions preceding BUILDING_SNAPSHOT will neither be decoded, nor + * will they be part of a snapshot. So we don't need to record anything. */ + if (builder->state == SNAPBUILD_START || + (builder->state == SNAPBUILD_BUILDING_SNAPSHOT && + TransactionIdPrecedes(xid, SnapBuildNextPhaseAt(builder)))) + { + /* ensure that only commits after this are getting replayed */ + if (builder->start_decoding_at <= lsn) + builder->start_decoding_at = lsn + 1; + return; + } + if (builder->state < SNAPBUILD_CONSISTENT) { /* ensure that only commits after this are getting replayed */ @@ -974,12 +938,13 @@ SnapBuildCommitTxn(SnapBuild *builder, XLogRecPtr lsn, TransactionId xid, builder->start_decoding_at = lsn + 1; /* - * We could avoid treating !SnapBuildTxnIsRunning transactions as - * timetravel ones, but we want to be able to export a snapshot when - * we reached consistency. + * If building an exportable snapshot, force xid to be tracked, even + * if the transaction didn't modify the catalog. */ - forced_timetravel = true; - elog(DEBUG1, "forced to assume catalog changes for xid %u because it was running too early", xid); + if (builder->building_full_snapshot) + { + needs_timetravel = true; + } } for (nxact = 0; nxact < nsubxacts; nxact++) @@ -987,82 +952,81 @@ SnapBuildCommitTxn(SnapBuild *builder, XLogRecPtr lsn, TransactionId xid, TransactionId subxid = subxacts[nxact]; /* - * make sure txn is not tracked in running txn's anymore, switch state + * Add subtransaction to base snapshot if catalog modifying, we don't + * distinguish to toplevel transactions there. */ - SnapBuildEndTxn(builder, lsn, subxid); - - /* - * If we're forcing timetravel we also need visibility information - * about subtransaction, so keep track of subtransaction's state. - */ - if (forced_timetravel) + if (ReorderBufferXidHasCatalogChanges(builder->reorder, subxid)) { + sub_needs_timetravel = true; + needs_snapshot = true; + + elog(DEBUG1, "found subtransaction %u:%u with catalog changes", + xid, subxid); + SnapBuildAddCommittedTxn(builder, subxid); + if (NormalTransactionIdFollows(subxid, xmax)) xmax = subxid; } - /* - * Add subtransaction to base snapshot if it DDL, we don't distinguish - * to toplevel transactions there. + * If we're forcing timetravel we also need visibility information + * about subtransaction, so keep track of subtransaction's state, even + * if not catalog modifying. Don't need to distribute a snapshot in + * that case. */ - else if (ReorderBufferXidHasCatalogChanges(builder->reorder, subxid)) + else if (needs_timetravel) { - sub_needs_timetravel = true; - - elog(DEBUG1, "found subtransaction %u:%u with catalog changes.", - xid, subxid); - SnapBuildAddCommittedTxn(builder, subxid); - if (NormalTransactionIdFollows(subxid, xmax)) xmax = subxid; } } - /* - * Make sure toplevel txn is not tracked in running txn's anymore, switch - * state to consistent if possible. - */ - if (isCommit) - SnapBuildEndTxn(builder, lsn, xid); - - if (forced_timetravel) + /* if top-level modified catalog, it'll need a snapshot */ + if (ReorderBufferXidHasCatalogChanges(builder->reorder, xid)) { - elog(DEBUG2, "forced transaction %u to do timetravel.", xid); - + elog(DEBUG2, "found top level transaction %u, with catalog changes", + xid); + needs_snapshot = true; + needs_timetravel = true; SnapBuildAddCommittedTxn(builder, xid); } - /* add toplevel transaction to base snapshot */ - else if (ReorderBufferXidHasCatalogChanges(builder->reorder, xid)) + else if (sub_needs_timetravel) { - elog(DEBUG2, "found top level transaction %u, with catalog changes!", - xid); - - top_needs_timetravel = true; + /* track toplevel txn as well, subxact alone isn't meaningful */ SnapBuildAddCommittedTxn(builder, xid); } - else if (sub_needs_timetravel) + else if (needs_timetravel) { - /* mark toplevel txn as timetravel as well */ + elog(DEBUG2, "forced transaction %u to do timetravel", xid); + SnapBuildAddCommittedTxn(builder, xid); } - /* if there's any reason to build a historic snapshot, do so now */ - if (forced_timetravel || top_needs_timetravel || sub_needs_timetravel) + if (!needs_timetravel) { - /* - * Adjust xmax of the snapshot builder, we only do that for committed, - * catalog modifying, transactions, everything else isn't interesting - * for us since we'll never look at the respective rows. - */ - if (!TransactionIdIsValid(builder->xmax) || - TransactionIdFollowsOrEquals(xmax, builder->xmax)) - { - builder->xmax = xmax; - TransactionIdAdvance(builder->xmax); - } + /* record that we cannot export a general snapshot anymore */ + builder->committed.includes_all_transactions = false; + } + + Assert(!needs_snapshot || needs_timetravel); + + /* + * Adjust xmax of the snapshot builder, we only do that for committed, + * catalog modifying, transactions, everything else isn't interesting + * for us since we'll never look at the respective rows. + */ + if (needs_timetravel && + (!TransactionIdIsValid(builder->xmax) || + TransactionIdFollowsOrEquals(xmax, builder->xmax))) + { + builder->xmax = xmax; + TransactionIdAdvance(builder->xmax); + } + /* if there's any reason to build a historic snapshot, do so now */ + if (needs_snapshot) + { /* * If we haven't built a complete snapshot yet there's no need to hand * it out, it wouldn't (and couldn't) be used anyway. @@ -1094,11 +1058,6 @@ SnapBuildCommitTxn(SnapBuild *builder, XLogRecPtr lsn, TransactionId xid, /* add a new Snapshot to all currently running transactions */ SnapBuildDistributeNewCatalogSnapshot(builder, lsn); } - else - { - /* record that we cannot export a general snapshot anymore */ - builder->committed.includes_all_transactions = false; - } } @@ -1216,22 +1175,20 @@ SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *runn * * a) There were no running transactions when the xl_running_xacts record * was inserted, jump to CONSISTENT immediately. We might find such a - * state we were waiting for b) and c). + * state while waiting on c)'s sub-states. * - * b) Wait for all toplevel transactions that were running to end. We - * simply track the number of in-progress toplevel transactions and - * lower it whenever one commits or aborts. When that number - * (builder->running.xcnt) reaches zero, we can go from FULL_SNAPSHOT - * to CONSISTENT. - * NB: We need to search running.xip when seeing a transaction's end to - * make sure it's a toplevel transaction and it's been one of the - * initially running ones. - * Interestingly, in contrast to HS, this allows us not to care about - * subtransactions - and by extension suboverflowed xl_running_xacts - - * at all. + * b) This (in a previous run) or another decoding slot serialized a + * snapshot to disk that we can use. Can't use this method for the + * initial snapshot when slot is being created and needs full snapshot + * for export or direct use, as that snapshot will only contain catalog + * modifying transactions. * - * c) This (in a previous run) or another decoding slot serialized a - * snapshot to disk that we can use. + * c) First incrementally build a snapshot for catalog tuples + * (BUILDING_SNAPSHOT), that requires all, already in-progress, + * transactions to finish. Every transaction starting after that + * (FULL_SNAPSHOT state), has enough information to be decoded. But + * for older running transactions no viable snapshot exists yet, so + * CONSISTENT will only be reached once all of those have finished. * --- */ @@ -1248,16 +1205,23 @@ SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *runn (uint32) (lsn >> 32), (uint32) lsn), errdetail_internal("initial xmin horizon of %u vs the snapshot's %u", builder->initial_xmin_horizon, running->oldestRunningXid))); + + + SnapBuildWaitSnapshot(running, builder->initial_xmin_horizon); + return true; } /* * a) No transaction were running, we can jump to consistent. * + * This is not affected by races around xl_running_xacts, because we can + * miss transaction commits, but currently not transactions starting. + * * NB: We might have already started to incrementally assemble a snapshot, * so we need to be careful to deal with that. */ - if (running->xcnt == 0) + if (running->oldestRunningXid == running->nextXid) { if (builder->start_decoding_at == InvalidXLogRecPtr || builder->start_decoding_at <= lsn) @@ -1272,12 +1236,8 @@ SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *runn Assert(TransactionIdIsNormal(builder->xmin)); Assert(TransactionIdIsNormal(builder->xmax)); - /* no transactions running now */ - builder->running.xcnt = 0; - builder->running.xmin = InvalidTransactionId; - builder->running.xmax = InvalidTransactionId; - builder->state = SNAPBUILD_CONSISTENT; + SnapBuildStartNextPhaseAt(builder, InvalidTransactionId); ereport(LOG, (errmsg("logical decoding found consistent point at %X/%X", @@ -1286,29 +1246,29 @@ SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *runn return false; } - /* c) valid on disk state */ - else if (SnapBuildRestore(builder, lsn)) + /* b) valid on disk state and not building full snapshot */ + else if (!builder->building_full_snapshot && + SnapBuildRestore(builder, lsn)) { /* there won't be any state to cleanup */ return false; } - /* - * b) first encounter of a useable xl_running_xacts record. If we had - * found one earlier we would either track running transactions (i.e. - * builder->running.xcnt != 0) or be consistent (this function wouldn't - * get called). + * c) transition from START to BUILDING_SNAPSHOT. + * + * In START state, and a xl_running_xacts record with running xacts is + * encountered. In that case, switch to BUILDING_SNAPSHOT state, and + * record xl_running_xacts->nextXid. Once all running xacts have finished + * (i.e. they're all >= nextXid), we have a complete catalog snapshot. It + * might look that we could use xl_running_xact's ->xids information to + * get there quicker, but that is problematic because transactions marked + * as running, might already have inserted their commit record - it's + * infeasible to change that with locking. */ - else if (!builder->running.xcnt) + else if (builder->state == SNAPBUILD_START) { - int off; - - /* - * We only care about toplevel xids as those are the ones we - * definitely see in the wal stream. As snapbuild.c tracks committed - * instead of running transactions we don't need to know anything - * about uncommitted subtransactions. - */ + builder->state = SNAPBUILD_BUILDING_SNAPSHOT; + SnapBuildStartNextPhaseAt(builder, running->nextXid); /* * Start with an xmin/xmax that's correct for future, when all the @@ -1322,59 +1282,57 @@ SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *runn Assert(TransactionIdIsNormal(builder->xmin)); Assert(TransactionIdIsNormal(builder->xmax)); - builder->running.xcnt = running->xcnt; - builder->running.xcnt_space = running->xcnt; - builder->running.xip = - MemoryContextAlloc(builder->context, - builder->running.xcnt * sizeof(TransactionId)); - memcpy(builder->running.xip, running->xids, - builder->running.xcnt * sizeof(TransactionId)); - - /* sort so we can do a binary search */ - qsort(builder->running.xip, builder->running.xcnt, - sizeof(TransactionId), xidComparator); - - builder->running.xmin = builder->running.xip[0]; - builder->running.xmax = builder->running.xip[running->xcnt - 1]; - - /* makes comparisons cheaper later */ - TransactionIdRetreat(builder->running.xmin); - TransactionIdAdvance(builder->running.xmax); - - builder->state = SNAPBUILD_FULL_SNAPSHOT; - ereport(LOG, (errmsg("logical decoding found initial starting point at %X/%X", (uint32) (lsn >> 32), (uint32) lsn), - errdetail_plural("%u transaction needs to finish.", - "%u transactions need to finish.", - builder->running.xcnt, - (uint32) builder->running.xcnt))); + errdetail("Waiting for transactions (approximately %d) older than %u to end.", + running->xcnt, running->nextXid))); - /* - * Iterate through all xids, wait for them to finish. - * - * This isn't required for the correctness of decoding, but to allow - * isolationtester to notice that we're currently waiting for - * something. - */ - for (off = 0; off < builder->running.xcnt; off++) - { - TransactionId xid = builder->running.xip[off]; + SnapBuildWaitSnapshot(running, running->nextXid); + } + /* + * c) transition from BUILDING_SNAPSHOT to FULL_SNAPSHOT. + * + * In BUILDING_SNAPSHOT state, and this xl_running_xacts' oldestRunningXid + * is >= than nextXid from when we switched to BUILDING_SNAPSHOT. This + * means all transactions starting afterwards have enough information to + * be decoded. Switch to FULL_SNAPSHOT. + */ + else if (builder->state == SNAPBUILD_BUILDING_SNAPSHOT && + TransactionIdPrecedesOrEquals(SnapBuildNextPhaseAt(builder), + running->oldestRunningXid)) + { + builder->state = SNAPBUILD_FULL_SNAPSHOT; + SnapBuildStartNextPhaseAt(builder, running->nextXid); - /* - * Upper layers should prevent that we ever need to wait on - * ourselves. Check anyway, since failing to do so would either - * result in an endless wait or an Assert() failure. - */ - if (TransactionIdIsCurrentTransactionId(xid)) - elog(ERROR, "waiting for ourselves"); + ereport(LOG, + (errmsg("logical decoding found initial consistent point at %X/%X", + (uint32) (lsn >> 32), (uint32) lsn), + errdetail("Waiting for transactions (approximately %d) older than %u to end.", + running->xcnt, running->nextXid))); - XactLockTableWait(xid, NULL, NULL, XLTW_None); - } + SnapBuildWaitSnapshot(running, running->nextXid); + } + /* + * c) transition from FULL_SNAPSHOT to CONSISTENT. + * + * In FULL_SNAPSHOT state (see d) ), and this xl_running_xacts' + * oldestRunningXid is >= than nextXid from when we switched to + * FULL_SNAPSHOT. This means all transactions that are currently in + * progress have a catalog snapshot, and all their changes have been + * collected. Switch to CONSISTENT. + */ + else if (builder->state == SNAPBUILD_FULL_SNAPSHOT && + TransactionIdPrecedesOrEquals(SnapBuildNextPhaseAt(builder), + running->oldestRunningXid)) + { + builder->state = SNAPBUILD_CONSISTENT; + SnapBuildStartNextPhaseAt(builder, InvalidTransactionId); - /* nothing could have built up so far, so don't perform cleanup */ - return false; + ereport(LOG, + (errmsg("logical decoding found consistent point at %X/%X", + (uint32) (lsn >> 32), (uint32) lsn), + errdetail("There are no old transactions anymore."))); } /* @@ -1383,8 +1341,54 @@ SnapBuildFindSnapshot(SnapBuild *builder, XLogRecPtr lsn, xl_running_xacts *runn * records so incremental cleanup can be performed. */ return true; + } +/* --- + * Iterate through xids in record, wait for all older than the cutoff to + * finish. Then, if possible, log a new xl_running_xacts record. + * + * This isn't required for the correctness of decoding, but to: + * a) allow isolationtester to notice that we're currently waiting for + * something. + * b) log a new xl_running_xacts record where it'd be helpful, without having + * to write for bgwriter or checkpointer. + * --- + */ +static void +SnapBuildWaitSnapshot(xl_running_xacts *running, TransactionId cutoff) +{ + int off; + + for (off = 0; off < running->xcnt; off++) + { + TransactionId xid = running->xids[off]; + + /* + * Upper layers should prevent that we ever need to wait on + * ourselves. Check anyway, since failing to do so would either + * result in an endless wait or an Assert() failure. + */ + if (TransactionIdIsCurrentTransactionId(xid)) + elog(ERROR, "waiting for ourselves"); + + if (TransactionIdFollows(xid, cutoff)) + continue; + + XactLockTableWait(xid, NULL, NULL, XLTW_None); + } + + /* + * All transactions we needed to finish finished - try to ensure there is + * another xl_running_xacts record in a timely manner, without having to + * write for bgwriter or checkpointer to log one. During recovery we + * can't enforce that, so we'll have to wait. + */ + if (!RecoveryInProgress()) + { + LogStandbySnapshot(); + } +} /* ----------------------------------- * Snapshot serialization support @@ -1534,7 +1538,6 @@ SnapBuildSerialize(SnapBuild *builder, XLogRecPtr lsn) errmsg("could not remove file \"%s\": %m", path))); needed_length = sizeof(SnapBuildOnDisk) + - sizeof(TransactionId) * builder->running.xcnt_space + sizeof(TransactionId) * builder->committed.xcnt; ondisk_c = MemoryContextAllocZero(builder->context, needed_length); @@ -1553,18 +1556,14 @@ SnapBuildSerialize(SnapBuild *builder, XLogRecPtr lsn) ondisk->builder.context = NULL; ondisk->builder.snapshot = NULL; ondisk->builder.reorder = NULL; - ondisk->builder.running.xip = NULL; ondisk->builder.committed.xip = NULL; COMP_CRC32C(ondisk->checksum, &ondisk->builder, sizeof(SnapBuild)); - /* copy running xacts */ - sz = sizeof(TransactionId) * builder->running.xcnt_space; - memcpy(ondisk_c, builder->running.xip, sz); - COMP_CRC32C(ondisk->checksum, ondisk_c, sz); - ondisk_c += sz; + /* there shouldn't be any running xacts */ + Assert(builder->was_running.was_xcnt == 0); /* copy committed xacts */ sz = sizeof(TransactionId) * builder->committed.xcnt; @@ -1716,10 +1715,11 @@ SnapBuildRestore(SnapBuild *builder, XLogRecPtr lsn) } COMP_CRC32C(checksum, &ondisk.builder, sizeof(SnapBuild)); - /* restore running xacts information */ - sz = sizeof(TransactionId) * ondisk.builder.running.xcnt_space; - ondisk.builder.running.xip = MemoryContextAllocZero(builder->context, sz); - readBytes = read(fd, ondisk.builder.running.xip, sz); + /* restore running xacts (dead, but kept for backward compat) */ + sz = sizeof(TransactionId) * ondisk.builder.was_running.was_xcnt_space; + ondisk.builder.was_running.was_xip = + MemoryContextAllocZero(builder->context, sz); + readBytes = read(fd, ondisk.builder.was_running.was_xip, sz); if (readBytes != sz) { CloseTransientFile(fd); @@ -1728,7 +1728,7 @@ SnapBuildRestore(SnapBuild *builder, XLogRecPtr lsn) errmsg("could not read file \"%s\", read %d of %d: %m", path, readBytes, (int) sz))); } - COMP_CRC32C(checksum, ondisk.builder.running.xip, sz); + COMP_CRC32C(checksum, ondisk.builder.was_running.was_xip, sz); /* restore committed xacts information */ sz = sizeof(TransactionId) * ondisk.builder.committed.xcnt; @@ -1792,12 +1792,6 @@ SnapBuildRestore(SnapBuild *builder, XLogRecPtr lsn) } ondisk.builder.committed.xip = NULL; - builder->running.xcnt = ondisk.builder.running.xcnt; - if (builder->running.xip) - pfree(builder->running.xip); - builder->running.xcnt_space = ondisk.builder.running.xcnt_space; - builder->running.xip = ondisk.builder.running.xip; - /* our snapshot is not interesting anymore, build a new one */ if (builder->snapshot != NULL) { @@ -1817,8 +1811,6 @@ SnapBuildRestore(SnapBuild *builder, XLogRecPtr lsn) return true; snapshot_not_interesting: - if (ondisk.builder.running.xip != NULL) - pfree(ondisk.builder.running.xip); if (ondisk.builder.committed.xip != NULL) pfree(ondisk.builder.committed.xip); return false; @@ -1839,7 +1831,7 @@ CheckPointSnapBuild(void) XLogRecPtr redo; DIR *snap_dir; struct dirent *snap_de; - char path[MAXPGPATH]; + char path[MAXPGPATH + 21]; /* * We start of with a minimum of the last redo pointer. No new replication @@ -1866,7 +1858,7 @@ CheckPointSnapBuild(void) strcmp(snap_de->d_name, "..") == 0) continue; - snprintf(path, MAXPGPATH, "pg_logical/snapshots/%s", snap_de->d_name); + snprintf(path, sizeof(path), "pg_logical/snapshots/%s", snap_de->d_name); if (lstat(path, &statbuf) == 0 && !S_ISREG(statbuf.st_mode)) { diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c index 33354c399a..9743d3ba4a 100644 --- a/src/backend/replication/slot.c +++ b/src/backend/replication/slot.c @@ -398,6 +398,22 @@ ReplicationSlotRelease(void) SpinLockRelease(&slot->mutex); } + + /* + * If slot needed to temporarily restrain both data and catalog xmin to + * create the catalog snapshot, remove that temporary constraint. + * Snapshots can only be exported while the initial snapshot is still + * acquired. + */ + if (!TransactionIdIsValid(slot->data.xmin) && + TransactionIdIsValid(slot->effective_xmin)) + { + SpinLockAcquire(&slot->mutex); + slot->effective_xmin = InvalidTransactionId; + SpinLockRelease(&slot->mutex); + ReplicationSlotsComputeRequiredXmin(false); + } + MyReplicationSlot = NULL; /* might not have been set when we've been a plain slot */ @@ -575,6 +591,9 @@ ReplicationSlotPersist(void) /* * Compute the oldest xmin across all slots and store it in the ProcArray. + * + * If already_locked is true, ProcArrayLock has already been acquired + * exclusively. */ void ReplicationSlotsComputeRequiredXmin(bool already_locked) @@ -585,8 +604,7 @@ ReplicationSlotsComputeRequiredXmin(bool already_locked) Assert(ReplicationSlotCtl != NULL); - if (!already_locked) - LWLockAcquire(ReplicationSlotControlLock, LW_SHARED); + LWLockAcquire(ReplicationSlotControlLock, LW_SHARED); for (i = 0; i < max_replication_slots; i++) { @@ -615,8 +633,7 @@ ReplicationSlotsComputeRequiredXmin(bool already_locked) agg_catalog_xmin = effective_catalog_xmin; } - if (!already_locked) - LWLockRelease(ReplicationSlotControlLock); + LWLockRelease(ReplicationSlotControlLock); ProcArraySetReplicationSlotXmin(agg_xmin, agg_catalog_xmin, already_locked); } @@ -902,13 +919,13 @@ StartupReplicationSlots(void) while ((replication_de = ReadDir(replication_dir, "pg_replslot")) != NULL) { struct stat statbuf; - char path[MAXPGPATH]; + char path[MAXPGPATH + 12]; if (strcmp(replication_de->d_name, ".") == 0 || strcmp(replication_de->d_name, "..") == 0) continue; - snprintf(path, MAXPGPATH, "pg_replslot/%s", replication_de->d_name); + snprintf(path, sizeof(path), "pg_replslot/%s", replication_de->d_name); /* we're only creating directories here, skip if it's not our's */ if (lstat(path, &statbuf) == 0 && !S_ISDIR(statbuf.st_mode)) @@ -1132,7 +1149,7 @@ RestoreSlotFromDisk(const char *name) { ReplicationSlotOnDisk cp; int i; - char path[MAXPGPATH]; + char path[MAXPGPATH + 22]; int fd; bool restored = false; int readBytes; diff --git a/src/backend/replication/slotfuncs.c b/src/backend/replication/slotfuncs.c index f9087619d2..de8cd2a67e 100644 --- a/src/backend/replication/slotfuncs.c +++ b/src/backend/replication/slotfuncs.c @@ -125,8 +125,8 @@ pg_create_logical_replication_slot(PG_FUNCTION_ARGS) /* * Create logical decoding context, to build the initial snapshot. */ - ctx = CreateInitDecodingContext( - NameStr(*plugin), NIL, + ctx = CreateInitDecodingContext(NameStr(*plugin), NIL, + false, /* do not build snapshot */ logical_read_local_xlog_page, NULL, NULL); /* build initial snapshot, might take a while */ diff --git a/src/backend/replication/syncrep.c b/src/backend/replication/syncrep.c index b442d061ec..04663748ed 100644 --- a/src/backend/replication/syncrep.c +++ b/src/backend/replication/syncrep.c @@ -265,8 +265,11 @@ SyncRepWaitForLSN(XLogRecPtr lsn, bool commit) * WalSender has checked our LSN and has removed us from queue. Clean up * state and leave. It's OK to reset these shared memory fields without * holding SyncRepLock, because any walsenders will ignore us anyway when - * we're not on the queue. + * we're not on the queue. We need a read barrier to make sure we see + * the changes to the queue link (this might be unnecessary without + * assertions, but better safe than sorry). */ + pg_read_barrier(); Assert(SHMQueueIsDetached(&(MyProc->syncRepLinks))); MyProc->syncRepState = SYNC_REP_NOT_WAITING; MyProc->waitLSN = 0; @@ -791,15 +794,22 @@ SyncRepWakeQueue(bool all, int mode) offsetof(PGPROC, syncRepLinks)); /* - * Set state to complete; see SyncRepWaitForLSN() for discussion of - * the various states. + * Remove thisproc from queue. */ - thisproc->syncRepState = SYNC_REP_WAIT_COMPLETE; + SHMQueueDelete(&(thisproc->syncRepLinks)); /* - * Remove thisproc from queue. + * SyncRepWaitForLSN() reads syncRepState without holding the lock, so + * make sure that it sees the queue link being removed before the + * syncRepState change. */ - SHMQueueDelete(&(thisproc->syncRepLinks)); + pg_write_barrier(); + + /* + * Set state to complete; see SyncRepWaitForLSN() for discussion of + * the various states. + */ + thisproc->syncRepState = SYNC_REP_WAIT_COMPLETE; /* * Wake only when we have set state and removed from queue. @@ -922,6 +932,13 @@ check_synchronous_standby_names(char **newval, void **extra, GucSource source) return false; } + if (syncrep_parse_result->num_sync <= 0) + { + GUC_check_errmsg("number of synchronous standbys (%d) must be greater than zero", + syncrep_parse_result->num_sync); + return false; + } + /* GUC extra value must be malloc'd, not palloc'd */ pconf = (SyncRepConfigData *) malloc(syncrep_parse_result->config_size); diff --git a/src/backend/replication/walreceiver.c b/src/backend/replication/walreceiver.c index 413ee3a5c1..e0ab112d31 100644 --- a/src/backend/replication/walreceiver.c +++ b/src/backend/replication/walreceiver.c @@ -1154,7 +1154,10 @@ XLogWalRcvSendReply(bool force, bool requestReply) * in case they don't have a watch. * * If the user disables feedback, send one final message to tell sender - * to forget about the xmin on this standby. + * to forget about the xmin on this standby. We also send this message + * on first connect because a previous connection might have set xmin + * on a replication slot. (If we're not using a slot it's harmless to + * send a feedback message explicitly setting InvalidTransactionId). */ static void XLogWalRcvSendHSFeedback(bool immed) @@ -1164,7 +1167,8 @@ XLogWalRcvSendHSFeedback(bool immed) uint32 nextEpoch; TransactionId xmin; static TimestampTz sendTime = 0; - static bool master_has_standby_xmin = false; + /* initially true so we always send at least one feedback message */ + static bool master_has_standby_xmin = true; /* * If the user doesn't want status to be reported to the master, be sure @@ -1189,14 +1193,17 @@ XLogWalRcvSendHSFeedback(bool immed) } /* - * If Hot Standby is not yet active there is nothing to send. Check this - * after the interval has expired to reduce number of calls. + * If Hot Standby is not yet accepting connections there is nothing to + * send. Check this after the interval has expired to reduce number of + * calls. + * + * Bailing out here also ensures that we don't send feedback until we've + * read our own replication slot state, so we don't tell the master to + * discard needed xmin or catalog_xmin from any slots that may exist + * on this replica. */ if (!HotStandbyActive()) - { - Assert(!master_has_standby_xmin); return; - } /* * Make the expensive call to get the oldest xmin once we are certain diff --git a/src/backend/replication/walreceiverfuncs.c b/src/backend/replication/walreceiverfuncs.c index 5f6e423f1f..719fbe0a55 100644 --- a/src/backend/replication/walreceiverfuncs.c +++ b/src/backend/replication/walreceiverfuncs.c @@ -322,7 +322,7 @@ GetReplicationApplyDelay(void) long secs; int usecs; - TimestampTz chunckReplayStartTime; + TimestampTz chunkReplayStartTime; SpinLockAcquire(&walrcv->mutex); receivePtr = walrcv->receivedUpto; @@ -333,12 +333,12 @@ GetReplicationApplyDelay(void) if (receivePtr == replayPtr) return 0; - chunckReplayStartTime = GetCurrentChunkReplayStartTime(); + chunkReplayStartTime = GetCurrentChunkReplayStartTime(); - if (chunckReplayStartTime == 0) + if (chunkReplayStartTime == 0) return -1; - TimestampDifference(chunckReplayStartTime, + TimestampDifference(chunkReplayStartTime, GetCurrentTimestamp(), &secs, &usecs); diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c index 6acae09131..922502caad 100644 --- a/src/backend/replication/walsender.c +++ b/src/backend/replication/walsender.c @@ -24,11 +24,17 @@ * are treated as not a crash but approximately normal termination; * the walsender will exit quickly without sending any more XLOG records. * - * If the server is shut down, postmaster sends us SIGUSR2 after all - * regular backends have exited and the shutdown checkpoint has been written. - * This instructs walsender to send any outstanding WAL, including the - * shutdown checkpoint record, wait for it to be replicated to the standby, - * and then exit. + * If the server is shut down, checkpointer sends us + * PROCSIG_WALSND_INIT_STOPPING after all regular backends have exited. If + * the backend is idle or runs an SQL query this causes the backend to + * shutdown, if logical replication is in progress all existing WAL records + * are processed followed by a shutdown. Otherwise this causes the walsender + * to switch to the "stopping" state. In this state, the walsender will reject + * any further replication commands. The checkpointer begins the shutdown + * checkpoint once all walsenders are confirmed as stopping. When the shutdown + * checkpoint finishes, the postmaster sends us SIGUSR2. This instructs + * walsender to send any outstanding WAL, including the shutdown checkpoint + * record, wait for it to be replicated to the standby, and then exit. * * * Portions Copyright (c) 2010-2016, PostgreSQL Global Development Group @@ -170,14 +176,14 @@ static bool streamingDoneReceiving; static bool WalSndCaughtUp = false; /* Flags set by signal handlers for later service in main loop */ -static volatile sig_atomic_t got_SIGHUP = false; -static volatile sig_atomic_t walsender_ready_to_stop = false; +static volatile sig_atomic_t got_SIGUSR2 = false; +static volatile sig_atomic_t got_STOPPING = false; /* - * This is set while we are streaming. When not set, SIGUSR2 signal will be - * handled like SIGTERM. When set, the main loop is responsible for checking - * walsender_ready_to_stop and terminating when it's set (after streaming any - * remaining WAL). + * This is set while we are streaming. When not set + * PROCSIG_WALSND_INIT_STOPPING signal will be handled like SIGTERM. When set, + * the main loop is responsible for checking got_STOPPING and terminating when + * it's set (after streaming any remaining WAL). */ static volatile sig_atomic_t replication_active = false; @@ -185,8 +191,6 @@ static LogicalDecodingContext *logical_decoding_ctx = NULL; static XLogRecPtr logical_startptr = InvalidXLogRecPtr; /* Signal handlers */ -static void WalSndSigHupHandler(SIGNAL_ARGS); -static void WalSndXLogSendHandler(SIGNAL_ARGS); static void WalSndLastCycleHandler(SIGNAL_ARGS); /* Prototypes for private functions */ @@ -265,7 +269,8 @@ WalSndErrorCleanup(void) ReplicationSlotRelease(); replication_active = false; - if (walsender_ready_to_stop) + + if (got_STOPPING || got_SIGUSR2) proc_exit(0); /* Revert back to startup state */ @@ -672,7 +677,7 @@ StartReplication(StartReplicationCmd *cmd) WalSndLoop(XLogSendPhysical); replication_active = false; - if (walsender_ready_to_stop) + if (got_STOPPING) proc_exit(0); WalSndSetState(WALSNDSTATE_STARTUP); @@ -759,15 +764,14 @@ logical_read_xlog_page(XLogReaderState *state, XLogRecPtr targetPagePtr, int req /* make sure we have enough WAL available */ flushptr = WalSndWaitForWal(targetPagePtr + reqLen); - /* more than one block available */ - if (targetPagePtr + XLOG_BLCKSZ <= flushptr) - count = XLOG_BLCKSZ; - /* not enough WAL synced, that can happen during shutdown */ - else if (targetPagePtr + reqLen > flushptr) + /* fail if not (implies we are going to shut down) */ + if (flushptr < targetPagePtr + reqLen) return -1; - /* part of the page available */ + + if (targetPagePtr + XLOG_BLCKSZ <= flushptr) + count = XLOG_BLCKSZ; /* more than one block available */ else - count = flushptr - targetPagePtr; + count = flushptr - targetPagePtr; /* part of the page available */ /* now actually read the data, we know it's there */ XLogRead(cur_page, targetPagePtr, XLOG_BLCKSZ); @@ -808,13 +812,12 @@ CreateReplicationSlot(CreateReplicationSlotCmd *cmd) ReplicationSlotCreate(cmd->slotname, true, RS_EPHEMERAL); } - initStringInfo(&output_message); - if (cmd->kind == REPLICATION_KIND_LOGICAL) { LogicalDecodingContext *ctx; ctx = CreateInitDecodingContext(cmd->plugin, NIL, + true, /* build snapshot */ logical_read_xlog_page, WalSndPrepareWrite, WalSndWriteData); @@ -972,7 +975,7 @@ StartLogicalReplication(StartReplicationCmd *cmd) { ereport(LOG, (errmsg("terminating walsender process after promotion"))); - walsender_ready_to_stop = true; + got_STOPPING = true; } WalSndSetState(WALSNDSTATE_CATCHUP); @@ -1028,7 +1031,7 @@ StartLogicalReplication(StartReplicationCmd *cmd) ReplicationSlotRelease(); replication_active = false; - if (walsender_ready_to_stop) + if (got_STOPPING) proc_exit(0); WalSndSetState(WALSNDSTATE_STARTUP); @@ -1115,9 +1118,9 @@ WalSndWriteData(LogicalDecodingContext *ctx, XLogRecPtr lsn, TransactionId xid, CHECK_FOR_INTERRUPTS(); /* Process any requests or signals received recently */ - if (got_SIGHUP) + if (ConfigReloadPending) { - got_SIGHUP = false; + ConfigReloadPending = false; ProcessConfigFile(PGC_SIGHUP); SyncRepInitConfig(); } @@ -1156,7 +1159,11 @@ WalSndWriteData(LogicalDecodingContext *ctx, XLogRecPtr lsn, TransactionId xid, } /* - * Wait till WAL < loc is flushed to disk so it can be safely read. + * Wait till WAL < loc is flushed to disk so it can be safely sent to client. + * + * Returns end LSN of flushed WAL. Normally this will be >= loc, but + * if we detect a shutdown request (either from postmaster or client) + * we will return early, so caller must always check. */ static XLogRecPtr WalSndWaitForWal(XLogRecPtr loc) @@ -1198,9 +1205,9 @@ WalSndWaitForWal(XLogRecPtr loc) CHECK_FOR_INTERRUPTS(); /* Process any requests or signals received recently */ - if (got_SIGHUP) + if (ConfigReloadPending) { - got_SIGHUP = false; + ConfigReloadPending = false; ProcessConfigFile(PGC_SIGHUP); SyncRepInitConfig(); } @@ -1208,6 +1215,14 @@ WalSndWaitForWal(XLogRecPtr loc) /* Check for input from the client */ ProcessRepliesIfAny(); + /* + * If we're shutting down, trigger pending WAL to be written out, + * otherwise we'd possibly end up waiting for WAL that never gets + * written, because walwriter has shut down already. + */ + if (got_STOPPING) + XLogBackgroundFlush(); + /* Update our idea of the currently flushed position. */ if (!RecoveryInProgress()) RecentFlushPtr = GetFlushRecPtr(); @@ -1215,15 +1230,13 @@ WalSndWaitForWal(XLogRecPtr loc) RecentFlushPtr = GetXLogReplayRecPtr(NULL); /* - * If postmaster asked us to stop, don't wait here anymore. This will - * cause the xlogreader to return without reading a full record, which - * is the fastest way to reach the mainloop which then can quit. + * If postmaster asked us to stop, don't wait anymore. * * It's important to do this check after the recomputation of * RecentFlushPtr, so we can send all remaining data before shutting * down. */ - if (walsender_ready_to_stop) + if (got_STOPPING) break; /* @@ -1246,16 +1259,25 @@ WalSndWaitForWal(XLogRecPtr loc) /* Waiting for new WAL. Since we need to wait, we're now caught up. */ WalSndCaughtUp = true; + if (logical_decoding_ctx) { + LogicalDecodingCaughtUp(logical_decoding_ctx); + } /* - * Try to flush pending output to the client. Also wait for the socket - * becoming writable, if there's still pending output after an attempt - * to flush. Otherwise we might just sit on output data while waiting - * for new WAL being generated. + * Try to flush any pending output to the client. */ if (pq_flush_if_writable() != 0) WalSndShutdown(); + /* + * If we have received CopyDone from the client, sent CopyDone + * ourselves, and the output buffer is empty, it's time to exit + * streaming, so fail the current WAL fetch request. + */ + if (streamingDoneReceiving && streamingDoneSending && + !pq_is_send_pending()) + break; + now = GetCurrentTimestamp(); /* die if timeout was reached */ @@ -1264,6 +1286,13 @@ WalSndWaitForWal(XLogRecPtr loc) /* Send keepalive if the time has come */ WalSndKeepaliveIfNecessary(now); + /* + * Sleep until something happens or we time out. Also wait for the + * socket becoming writable, if there's still pending output. + * Otherwise we might sit on sendable output data while waiting for + * new WAL to be generated. (But if we have nothing to send, we don't + * want to wake on socket-writable.) + */ sleeptime = WalSndComputeSleeptime(now); wakeEvents = WL_LATCH_SET | WL_POSTMASTER_DEATH | @@ -1272,7 +1301,6 @@ WalSndWaitForWal(XLogRecPtr loc) if (pq_is_send_pending()) wakeEvents |= WL_SOCKET_WRITEABLE; - /* Sleep until something happens or we time out */ WaitLatchOrSocket(MyLatch, wakeEvents, MyProcPort->sock, sleeptime); } @@ -1293,6 +1321,22 @@ exec_replication_command(const char *cmd_string) MemoryContext cmd_context; MemoryContext old_context; + /* + * If WAL sender has been told that shutdown is getting close, switch its + * status accordingly to handle the next replication commands correctly. + */ + if (got_STOPPING) + WalSndSetState(WALSNDSTATE_STOPPING); + + /* + * Throw error if in stopping mode. We need prevent commands that could + * generate WAL while the shutdown checkpoint is being written. To be + * safe, we just prohibit all new commands. + */ + if (MyWalSnd->state == WALSNDSTATE_STOPPING) + ereport(ERROR, + (errmsg("cannot execute new commands while WAL sender is in stopping mode"))); + /* * Log replication command if log_replication_commands is enabled. Even * when it's disabled, log the command with DEBUG1 level for backward @@ -1324,6 +1368,14 @@ exec_replication_command(const char *cmd_string) cmd_node = replication_parse_result; + /* + * Allocate buffers that will be used for each outgoing and incoming + * message. We do this just once per command to reduce palloc overhead. + */ + initStringInfo(&output_message); + initStringInfo(&reply_message); + initStringInfo(&tmpbuf); + switch (cmd_node->type) { case T_IdentifySystemCmd: @@ -1793,14 +1845,6 @@ WalSndCheckTimeOut(TimestampTz now) static void WalSndLoop(WalSndSendDataCallback send_data) { - /* - * Allocate buffers that will be used for each outgoing and incoming - * message. We do this just once to reduce palloc overhead. - */ - initStringInfo(&output_message); - initStringInfo(&reply_message); - initStringInfo(&tmpbuf); - /* * Initialize the last reply timestamp. That enables timeout processing * from hereon. @@ -1829,9 +1873,9 @@ WalSndLoop(WalSndSendDataCallback send_data) CHECK_FOR_INTERRUPTS(); /* Process any requests or signals received recently */ - if (got_SIGHUP) + if (ConfigReloadPending) { - got_SIGHUP = false; + ConfigReloadPending = false; ProcessConfigFile(PGC_SIGHUP); SyncRepInitConfig(); } @@ -1844,7 +1888,8 @@ WalSndLoop(WalSndSendDataCallback send_data) * ourselves, and the output buffer is empty, it's time to exit * streaming. */ - if (!pq_is_send_pending() && streamingDoneSending && streamingDoneReceiving) + if (streamingDoneReceiving && streamingDoneSending && + !pq_is_send_pending()) break; /* @@ -1888,7 +1933,7 @@ WalSndLoop(WalSndSendDataCallback send_data) * normal termination at shutdown, or a promotion, the walsender * is not sure which. */ - if (walsender_ready_to_stop) + if (got_SIGUSR2) WalSndDone(send_data); } @@ -2197,6 +2242,10 @@ XLogSendPhysical(void) XLogRecPtr endptr; Size nbytes; + /* If requested switch the WAL sender to the stopping state. */ + if (got_STOPPING) + WalSndSetState(WALSNDSTATE_STOPPING); + if (streamingDoneSending) { WalSndCaughtUp = true; @@ -2456,7 +2505,18 @@ XLogSendLogical(void) * point, then we're caught up. */ if (logical_decoding_ctx->reader->EndRecPtr >= GetFlushRecPtr()) + { WalSndCaughtUp = true; + + /* + * Have WalSndLoop() terminate the connection in an orderly + * manner, after writing out all the pending data. + */ + if (got_STOPPING) + got_SIGUSR2 = true; + + LogicalDecodingCaughtUp(logical_decoding_ctx); + } } /* Update shared memory status */ @@ -2567,35 +2627,13 @@ WalSndRqstFileReload(void) } } -/* SIGHUP: set flag to re-read config file at next convenient time */ -static void -WalSndSigHupHandler(SIGNAL_ARGS) -{ - int save_errno = errno; - - got_SIGHUP = true; - - SetLatch(MyLatch); - - errno = save_errno; -} - -/* SIGUSR1: set flag to send WAL records */ -static void -WalSndXLogSendHandler(SIGNAL_ARGS) -{ - int save_errno = errno; - - latch_sigusr1_handler(); - - errno = save_errno; -} - -/* SIGUSR2: set flag to do a last cycle and shut down afterwards */ -static void -WalSndLastCycleHandler(SIGNAL_ARGS) +/* + * Handle PROCSIG_WALSND_INIT_STOPPING signal. + */ +void +HandleWalSndInitStopping(void) { - int save_errno = errno; + Assert(am_walsender); /* * If replication has not yet started, die like with SIGTERM. If @@ -2605,8 +2643,21 @@ WalSndLastCycleHandler(SIGNAL_ARGS) */ if (!replication_active) kill(MyProcPid, SIGTERM); + else + got_STOPPING = true; +} + +/* + * SIGUSR2: set flag to do a last cycle and shut down afterwards. The WAL + * sender should already have been switched to WALSNDSTATE_STOPPING at + * this point. + */ +static void +WalSndLastCycleHandler(SIGNAL_ARGS) +{ + int save_errno = errno; - walsender_ready_to_stop = true; + got_SIGUSR2 = true; SetLatch(MyLatch); errno = save_errno; @@ -2617,14 +2668,14 @@ void WalSndSignals(void) { /* Set up signal handlers */ - pqsignal(SIGHUP, WalSndSigHupHandler); /* set flag to read config + pqsignal(SIGHUP, PostgresSigHupHandler); /* set flag to read config * file */ pqsignal(SIGINT, SIG_IGN); /* not used */ pqsignal(SIGTERM, die); /* request shutdown */ pqsignal(SIGQUIT, quickdie); /* hard crash time */ InitializeTimeouts(); /* establishes SIGALRM handler */ pqsignal(SIGPIPE, SIG_IGN); - pqsignal(SIGUSR1, WalSndXLogSendHandler); /* request WAL sending */ + pqsignal(SIGUSR1, procsignal_sigusr1_handler); pqsignal(SIGUSR2, WalSndLastCycleHandler); /* request a last cycle and * shutdown */ @@ -2704,6 +2755,77 @@ WalSndWakeup(void) } } +/* + * Signal all walsenders to move to stopping state. + * + * This will trigger walsenders to move to a state where no further WAL can be + * generated. See this file's header for details. + */ +void +WalSndInitStopping(void) +{ + int i; + + for (i = 0; i < max_wal_senders; i++) + { + WalSnd *walsnd = &WalSndCtl->walsnds[i]; + pid_t pid; + + SpinLockAcquire(&walsnd->mutex); + pid = walsnd->pid; + SpinLockRelease(&walsnd->mutex); + + if (pid == 0) + continue; + + SendProcSignal(pid, PROCSIG_WALSND_INIT_STOPPING, InvalidBackendId); + } +} + +/* + * Wait that all the WAL senders have quit or reached the stopping state. This + * is used by the checkpointer to control when the shutdown checkpoint can + * safely be performed. + */ +void +WalSndWaitStopping(void) +{ + for (;;) + { + int i; + bool all_stopped = true; + + for (i = 0; i < max_wal_senders; i++) + { + WalSndState state; + WalSnd *walsnd = &WalSndCtl->walsnds[i]; + + SpinLockAcquire(&walsnd->mutex); + + if (walsnd->pid == 0) + { + SpinLockRelease(&walsnd->mutex); + continue; + } + + state = walsnd->state; + SpinLockRelease(&walsnd->mutex); + + if (state != WALSNDSTATE_STOPPING) + { + all_stopped = false; + break; + } + } + + /* safe to leave if confirmation is done for all WAL senders */ + if (all_stopped) + return; + + pg_usleep(10000L); /* wait for 10 msec */ + } +} + /* Set state for current walsender (only called in walsender) */ void WalSndSetState(WalSndState state) @@ -2737,6 +2859,8 @@ WalSndGetStateString(WalSndState state) return "catchup"; case WALSNDSTATE_STREAMING: return "streaming"; + case WALSNDSTATE_STOPPING: + return "stopping"; } return "UNKNOWN"; } diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c index a22a11e2c1..6e799f721d 100644 --- a/src/backend/rewrite/rewriteHandler.c +++ b/src/backend/rewrite/rewriteHandler.c @@ -878,6 +878,7 @@ process_matched_tle(TargetEntry *src_tle, const char *attrName) { TargetEntry *result; + CoerceToDomain *coerce_expr = NULL; Node *src_expr; Node *prior_expr; Node *src_input; @@ -914,10 +915,30 @@ process_matched_tle(TargetEntry *src_tle, * For FieldStore, instead of nesting we can generate a single * FieldStore with multiple target fields. We must nest when * ArrayRefs are involved though. + * + * As a further complication, the destination column might be a domain, + * resulting in each assignment containing a CoerceToDomain node over a + * FieldStore or ArrayRef. These should have matching target domains, + * so we strip them and reconstitute a single CoerceToDomain over the + * combined FieldStore/ArrayRef nodes. (Notice that this has the result + * that the domain's checks are applied only after we do all the field or + * element updates, not after each one. This is arguably desirable.) *---------- */ src_expr = (Node *) src_tle->expr; prior_expr = (Node *) prior_tle->expr; + + if (src_expr && IsA(src_expr, CoerceToDomain) && + prior_expr && IsA(prior_expr, CoerceToDomain) && + ((CoerceToDomain *) src_expr)->resulttype == + ((CoerceToDomain *) prior_expr)->resulttype) + { + /* we assume without checking that resulttypmod/resultcollid match */ + coerce_expr = (CoerceToDomain *) src_expr; + src_expr = (Node *) ((CoerceToDomain *) src_expr)->arg; + prior_expr = (Node *) ((CoerceToDomain *) prior_expr)->arg; + } + src_input = get_assignment_input(src_expr); prior_input = get_assignment_input(prior_expr); if (src_input == NULL || @@ -986,6 +1007,16 @@ process_matched_tle(TargetEntry *src_tle, newexpr = NULL; } + if (coerce_expr) + { + /* put back the CoerceToDomain */ + CoerceToDomain *newcoerce = makeNode(CoerceToDomain); + + memcpy(newcoerce, coerce_expr, sizeof(CoerceToDomain)); + newcoerce->arg = (Expr *) newexpr; + newexpr = (Node *) newcoerce; + } + result = flatCopyTargetEntry(src_tle); result->expr = (Expr *) newexpr; return result; diff --git a/src/backend/rewrite/rowsecurity.c b/src/backend/rewrite/rowsecurity.c index e02911656a..6b34c596f3 100644 --- a/src/backend/rewrite/rowsecurity.c +++ b/src/backend/rewrite/rowsecurity.c @@ -78,7 +78,8 @@ static void add_with_check_options(Relation rel, List *permissive_policies, List *restrictive_policies, List **withCheckOptions, - bool *hasSubLinks); + bool *hasSubLinks, + bool force_using); static bool check_role_for_policy(ArrayType *policy_roles, Oid user_id); @@ -271,7 +272,8 @@ get_row_security_policies(Query *root, RangeTblEntry *rte, int rt_index, permissive_policies, restrictive_policies, withCheckOptions, - hasSubLinks); + hasSubLinks, + false); /* * Get and add ALL/SELECT policies, if SELECT rights are required for @@ -294,7 +296,8 @@ get_row_security_policies(Query *root, RangeTblEntry *rte, int rt_index, select_permissive_policies, select_restrictive_policies, withCheckOptions, - hasSubLinks); + hasSubLinks, + true); } /* @@ -323,7 +326,8 @@ get_row_security_policies(Query *root, RangeTblEntry *rte, int rt_index, conflict_permissive_policies, conflict_restrictive_policies, withCheckOptions, - hasSubLinks); + hasSubLinks, + true); /* * Get and add ALL/SELECT policies, as WCO_RLS_CONFLICT_CHECK WCOs @@ -345,7 +349,8 @@ get_row_security_policies(Query *root, RangeTblEntry *rte, int rt_index, conflict_select_permissive_policies, conflict_select_restrictive_policies, withCheckOptions, - hasSubLinks); + hasSubLinks, + true); } /* Enforce the WITH CHECK clauses of the UPDATE policies */ @@ -354,7 +359,8 @@ get_row_security_policies(Query *root, RangeTblEntry *rte, int rt_index, conflict_permissive_policies, conflict_restrictive_policies, withCheckOptions, - hasSubLinks); + hasSubLinks, + false); } } @@ -645,13 +651,14 @@ add_with_check_options(Relation rel, List *permissive_policies, List *restrictive_policies, List **withCheckOptions, - bool *hasSubLinks) + bool *hasSubLinks, + bool force_using) { ListCell *item; List *permissive_quals = NIL; #define QUAL_FOR_WCO(policy) \ - ( kind != WCO_RLS_CONFLICT_CHECK && \ + ( !force_using && \ (policy)->with_check_qual != NULL ? \ (policy)->with_check_qual : (policy)->qual ) diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c index 2616b2578f..3a300305ec 100644 --- a/src/backend/storage/buffer/bufmgr.c +++ b/src/backend/storage/buffer/bufmgr.c @@ -1292,12 +1292,17 @@ BufferAlloc(SMgrRelation smgr, char relpersistence, ForkNumber forkNum, * paranoia. We also reset the usage_count since any recency of use of * the old content is no longer relevant. (The usage_count starts out at * 1 so that the buffer can survive one clock-sweep pass.) + * + * Make sure BM_PERMANENT is set for buffers that must be written at every + * checkpoint. Unlogged buffers only need to be written at shutdown + * checkpoints, except for their "init" forks, which need to be treated + * just like permanent relations. */ buf->tag = newTag; buf_state &= ~(BM_VALID | BM_DIRTY | BM_JUST_DIRTIED | BM_CHECKPOINT_NEEDED | BM_IO_ERROR | BM_PERMANENT | BUF_USAGECOUNT_MASK); - if (relpersistence == RELPERSISTENCE_PERMANENT) + if (relpersistence == RELPERSISTENCE_PERMANENT || forkNum == INIT_FORKNUM) buf_state |= BM_TAG_VALID | BM_PERMANENT | BUF_USAGECOUNT_ONE; else buf_state |= BM_TAG_VALID | BUF_USAGECOUNT_ONE; @@ -1590,9 +1595,21 @@ PinBuffer(BufferDesc *buf, BufferAccessStrategy strategy) /* increase refcount */ buf_state += BUF_REFCOUNT_ONE; - /* increase usagecount unless already max */ - if (BUF_STATE_GET_USAGECOUNT(buf_state) != BM_MAX_USAGE_COUNT) - buf_state += BUF_USAGECOUNT_ONE; + if (strategy == NULL) + { + /* Default case: increase usagecount unless already max. */ + if (BUF_STATE_GET_USAGECOUNT(buf_state) < BM_MAX_USAGE_COUNT) + buf_state += BUF_USAGECOUNT_ONE; + } + else + { + /* + * Ring buffers shouldn't evict others from pool. Thus we + * don't make usagecount more than 1. + */ + if (BUF_STATE_GET_USAGECOUNT(buf_state) == 0) + buf_state += BUF_USAGECOUNT_ONE; + } if (pg_atomic_compare_exchange_u32(&buf->state, &old_buf_state, buf_state)) diff --git a/src/backend/storage/buffer/freelist.c b/src/backend/storage/buffer/freelist.c index 88b90dc527..a58cb6a36b 100644 --- a/src/backend/storage/buffer/freelist.c +++ b/src/backend/storage/buffer/freelist.c @@ -406,8 +406,8 @@ StrategySyncStart(uint32 *complete_passes, uint32 *num_buf_alloc) /* * StrategyNotifyBgWriter -- set or clear allocation notification latch * - * If bgwriterLatch isn't NULL, the next invocation of StrategyGetBuffer will - * set that latch. Pass NULL to clear the pending notification before it + * If bgwprocno isn't -1, the next invocation of StrategyGetBuffer will + * set that latch. Pass -1 to clear the pending notification before it * happens. This feature is used by the bgwriter process to wake itself up * from hibernation, and is not meant for anybody else to use. */ diff --git a/src/backend/storage/file/copydir.c b/src/backend/storage/file/copydir.c index a51ee81566..a964e47f50 100644 --- a/src/backend/storage/file/copydir.c +++ b/src/backend/storage/file/copydir.c @@ -38,8 +38,8 @@ copydir(char *fromdir, char *todir, bool recurse) { DIR *xldir; struct dirent *xlde; - char fromfile[MAXPGPATH]; - char tofile[MAXPGPATH]; + char fromfile[MAXPGPATH * 2]; + char tofile[MAXPGPATH * 2]; if (mkdir(todir, S_IRWXU) != 0) ereport(ERROR, @@ -63,8 +63,8 @@ copydir(char *fromdir, char *todir, bool recurse) strcmp(xlde->d_name, "..") == 0) continue; - snprintf(fromfile, MAXPGPATH, "%s/%s", fromdir, xlde->d_name); - snprintf(tofile, MAXPGPATH, "%s/%s", todir, xlde->d_name); + snprintf(fromfile, sizeof(fromfile), "%s/%s", fromdir, xlde->d_name); + snprintf(tofile, sizeof(tofile), "%s/%s", todir, xlde->d_name); if (lstat(fromfile, &fst) < 0) ereport(ERROR, @@ -103,7 +103,7 @@ copydir(char *fromdir, char *todir, bool recurse) strcmp(xlde->d_name, "..") == 0) continue; - snprintf(tofile, MAXPGPATH, "%s/%s", todir, xlde->d_name); + snprintf(tofile, sizeof(tofile), "%s/%s", todir, xlde->d_name); /* * We don't need to sync subdirectories here since the recursive diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c index 03143f1133..b07628fd7b 100644 --- a/src/backend/storage/file/fd.c +++ b/src/backend/storage/file/fd.c @@ -160,7 +160,14 @@ int max_safe_fds = 32; /* default if not changed */ #define FileIsNotOpen(file) (VfdCache[file].fd == VFD_CLOSED) +/* + * Note: a VFD's seekPos is normally always valid, but if for some reason + * an lseek() fails, it might become set to FileUnknownPos. We can struggle + * along without knowing the seek position in many cases, but in some places + * we have to fail if we don't have it. + */ #define FileUnknownPos ((off_t) -1) +#define FilePosIsUnknown(pos) ((pos) < 0) /* these are the assigned bits in fdstate below: */ #define FD_TEMPORARY (1 << 0) /* T = delete when closed */ @@ -174,7 +181,7 @@ typedef struct vfd File nextFree; /* link to next free VFD, if in freelist */ File lruMoreRecently; /* doubly linked recency-of-use list */ File lruLessRecently; - off_t seekPos; /* current logical file position */ + off_t seekPos; /* current logical file position, or -1 */ off_t fileSize; /* current size of file (0 if not temporary) */ char *fileName; /* name of file, or NULL for unused VFD */ /* NB: fileName is malloc'd, and must be free'd when closing the VFD */ @@ -967,19 +974,33 @@ LruDelete(File file) vfdP = &VfdCache[file]; - /* delete the vfd record from the LRU ring */ - Delete(file); - - /* save the seek position */ - vfdP->seekPos = lseek(vfdP->fd, (off_t) 0, SEEK_CUR); - Assert(vfdP->seekPos != (off_t) -1); + /* + * Normally we should know the seek position, but if for some reason we + * have lost track of it, try again to get it. If we still can't get it, + * we have a problem: we will be unable to restore the file seek position + * when and if the file is re-opened. But we can't really throw an error + * and refuse to close the file, or activities such as transaction cleanup + * will be broken. + */ + if (FilePosIsUnknown(vfdP->seekPos)) + { + vfdP->seekPos = lseek(vfdP->fd, (off_t) 0, SEEK_CUR); + if (FilePosIsUnknown(vfdP->seekPos)) + elog(LOG, "could not seek file \"%s\" before closing: %m", + vfdP->fileName); + } - /* close the file */ + /* + * Close the file. We aren't expecting this to fail; if it does, better + * to leak the FD than to mess up our internal state. + */ if (close(vfdP->fd)) - elog(ERROR, "could not close file \"%s\": %m", vfdP->fileName); - - --nfile; + elog(LOG, "could not close file \"%s\": %m", vfdP->fileName); vfdP->fd = VFD_CLOSED; + --nfile; + + /* delete the vfd record from the LRU ring */ + Delete(file); } static void @@ -1030,22 +1051,39 @@ LruInsert(File file) vfdP->fileMode); if (vfdP->fd < 0) { - DO_DB(elog(LOG, "RE_OPEN FAILED: %d", errno)); + DO_DB(elog(LOG, "re-open failed: %m")); return -1; } else { - DO_DB(elog(LOG, "RE_OPEN SUCCESS")); ++nfile; } - /* seek to the right position */ + /* + * Seek to the right position. We need no special case for seekPos + * equal to FileUnknownPos, as lseek() will certainly reject that + * (thus completing the logic noted in LruDelete() that we will fail + * to re-open a file if we couldn't get its seek position before + * closing). + */ if (vfdP->seekPos != (off_t) 0) { - off_t returnValue PG_USED_FOR_ASSERTS_ONLY; - - returnValue = lseek(vfdP->fd, vfdP->seekPos, SEEK_SET); - Assert(returnValue != (off_t) -1); + if (lseek(vfdP->fd, vfdP->seekPos, SEEK_SET) < 0) + { + /* + * If we fail to restore the seek position, treat it like an + * open() failure. + */ + int save_errno = errno; + + elog(LOG, "could not seek file \"%s\" after re-opening: %m", + vfdP->fileName); + (void) close(vfdP->fd); + vfdP->fd = VFD_CLOSED; + --nfile; + errno = save_errno; + return -1; + } } } @@ -1428,15 +1466,15 @@ FileClose(File file) if (!FileIsNotOpen(file)) { - /* remove the file from the lru ring */ - Delete(file); - /* close the file */ if (close(vfdP->fd)) - elog(ERROR, "could not close file \"%s\": %m", vfdP->fileName); + elog(LOG, "could not close file \"%s\": %m", vfdP->fileName); --nfile; vfdP->fd = VFD_CLOSED; + + /* remove the file from the lru ring */ + Delete(file); } /* @@ -1566,6 +1604,7 @@ int FileRead(File file, char *buffer, int amount) { int returnCode; + Vfd *vfdP; Assert(FileIsValid(file)); @@ -1578,11 +1617,17 @@ FileRead(File file, char *buffer, int amount) if (returnCode < 0) return returnCode; + vfdP = &VfdCache[file]; + retry: - returnCode = read(VfdCache[file].fd, buffer, amount); + returnCode = read(vfdP->fd, buffer, amount); if (returnCode >= 0) - VfdCache[file].seekPos += returnCode; + { + /* if seekPos is unknown, leave it that way */ + if (!FilePosIsUnknown(vfdP->seekPos)) + vfdP->seekPos += returnCode; + } else { /* @@ -1611,7 +1656,7 @@ FileRead(File file, char *buffer, int amount) goto retry; /* Trouble, so assume we don't know the file position anymore */ - VfdCache[file].seekPos = FileUnknownPos; + vfdP->seekPos = FileUnknownPos; } return returnCode; @@ -1621,6 +1666,7 @@ int FileWrite(File file, char *buffer, int amount) { int returnCode; + Vfd *vfdP; Assert(FileIsValid(file)); @@ -1633,6 +1679,8 @@ FileWrite(File file, char *buffer, int amount) if (returnCode < 0) return returnCode; + vfdP = &VfdCache[file]; + /* * If enforcing temp_file_limit and it's a temp file, check to see if the * write would overrun temp_file_limit, and throw error if so. Note: it's @@ -1641,15 +1689,28 @@ FileWrite(File file, char *buffer, int amount) * message if we do that. All current callers would just throw error * immediately anyway, so this is safe at present. */ - if (temp_file_limit >= 0 && (VfdCache[file].fdstate & FD_TEMPORARY)) + if (temp_file_limit >= 0 && (vfdP->fdstate & FD_TEMPORARY)) { - off_t newPos = VfdCache[file].seekPos + amount; + off_t newPos; - if (newPos > VfdCache[file].fileSize) + /* + * Normally we should know the seek position, but if for some reason + * we have lost track of it, try again to get it. Here, it's fine to + * throw an error if we still can't get it. + */ + if (FilePosIsUnknown(vfdP->seekPos)) + { + vfdP->seekPos = lseek(vfdP->fd, (off_t) 0, SEEK_CUR); + if (FilePosIsUnknown(vfdP->seekPos)) + elog(ERROR, "could not seek file \"%s\": %m", vfdP->fileName); + } + + newPos = vfdP->seekPos + amount; + if (newPos > vfdP->fileSize) { uint64 newTotal = temporary_files_size; - newTotal += newPos - VfdCache[file].fileSize; + newTotal += newPos - vfdP->fileSize; if (newTotal > (uint64) temp_file_limit * (uint64) 1024) ereport(ERROR, (errcode(ERRCODE_CONFIGURATION_LIMIT_EXCEEDED), @@ -1660,7 +1721,7 @@ FileWrite(File file, char *buffer, int amount) retry: errno = 0; - returnCode = write(VfdCache[file].fd, buffer, amount); + returnCode = write(vfdP->fd, buffer, amount); /* if write didn't set errno, assume problem is no disk space */ if (returnCode != amount && errno == 0) @@ -1668,17 +1729,25 @@ FileWrite(File file, char *buffer, int amount) if (returnCode >= 0) { - VfdCache[file].seekPos += returnCode; + /* if seekPos is unknown, leave it that way */ + if (!FilePosIsUnknown(vfdP->seekPos)) + vfdP->seekPos += returnCode; - /* maintain fileSize and temporary_files_size if it's a temp file */ - if (VfdCache[file].fdstate & FD_TEMPORARY) + /* + * Maintain fileSize and temporary_files_size if it's a temp file. + * + * If seekPos is -1 (unknown), this will do nothing; but we could only + * get here in that state if we're not enforcing temporary_files_size, + * so we don't care. + */ + if (vfdP->fdstate & FD_TEMPORARY) { - off_t newPos = VfdCache[file].seekPos; + off_t newPos = vfdP->seekPos; - if (newPos > VfdCache[file].fileSize) + if (newPos > vfdP->fileSize) { - temporary_files_size += newPos - VfdCache[file].fileSize; - VfdCache[file].fileSize = newPos; + temporary_files_size += newPos - vfdP->fileSize; + vfdP->fileSize = newPos; } } } @@ -1706,7 +1775,7 @@ FileWrite(File file, char *buffer, int amount) goto retry; /* Trouble, so assume we don't know the file position anymore */ - VfdCache[file].seekPos = FileUnknownPos; + vfdP->seekPos = FileUnknownPos; } return returnCode; @@ -1732,7 +1801,7 @@ FileSync(File file) off_t FileSeek(File file, off_t offset, int whence) { - int returnCode; + Vfd *vfdP; Assert(FileIsValid(file)); @@ -1741,25 +1810,33 @@ FileSeek(File file, off_t offset, int whence) (int64) VfdCache[file].seekPos, (int64) offset, whence)); + vfdP = &VfdCache[file]; + if (FileIsNotOpen(file)) { switch (whence) { case SEEK_SET: if (offset < 0) - elog(ERROR, "invalid seek offset: " INT64_FORMAT, - (int64) offset); - VfdCache[file].seekPos = offset; + { + errno = EINVAL; + return (off_t) -1; + } + vfdP->seekPos = offset; break; case SEEK_CUR: - VfdCache[file].seekPos += offset; + if (FilePosIsUnknown(vfdP->seekPos) || + vfdP->seekPos + offset < 0) + { + errno = EINVAL; + return (off_t) -1; + } + vfdP->seekPos += offset; break; case SEEK_END: - returnCode = FileAccess(file); - if (returnCode < 0) - return returnCode; - VfdCache[file].seekPos = lseek(VfdCache[file].fd, - offset, whence); + if (FileAccess(file) < 0) + return (off_t) -1; + vfdP->seekPos = lseek(vfdP->fd, offset, whence); break; default: elog(ERROR, "invalid whence: %d", whence); @@ -1772,27 +1849,27 @@ FileSeek(File file, off_t offset, int whence) { case SEEK_SET: if (offset < 0) - elog(ERROR, "invalid seek offset: " INT64_FORMAT, - (int64) offset); - if (VfdCache[file].seekPos != offset) - VfdCache[file].seekPos = lseek(VfdCache[file].fd, - offset, whence); + { + errno = EINVAL; + return (off_t) -1; + } + if (vfdP->seekPos != offset) + vfdP->seekPos = lseek(vfdP->fd, offset, whence); break; case SEEK_CUR: - if (offset != 0 || VfdCache[file].seekPos == FileUnknownPos) - VfdCache[file].seekPos = lseek(VfdCache[file].fd, - offset, whence); + if (offset != 0 || FilePosIsUnknown(vfdP->seekPos)) + vfdP->seekPos = lseek(vfdP->fd, offset, whence); break; case SEEK_END: - VfdCache[file].seekPos = lseek(VfdCache[file].fd, - offset, whence); + vfdP->seekPos = lseek(vfdP->fd, offset, whence); break; default: elog(ERROR, "invalid whence: %d", whence); break; } } - return VfdCache[file].seekPos; + + return vfdP->seekPos; } /* @@ -2577,7 +2654,7 @@ CleanupTempFiles(bool isProcExit) void RemovePgTempFiles(void) { - char temp_path[MAXPGPATH]; + char temp_path[MAXPGPATH + 10 + sizeof(TABLESPACE_VERSION_DIRECTORY) + sizeof(PG_TEMP_FILES_DIR)]; DIR *spc_dir; struct dirent *spc_de; @@ -2625,7 +2702,7 @@ RemovePgTempFilesInDir(const char *tmpdirname) { DIR *temp_dir; struct dirent *temp_de; - char rm_path[MAXPGPATH]; + char rm_path[MAXPGPATH * 2]; temp_dir = AllocateDir(tmpdirname); if (temp_dir == NULL) @@ -2666,7 +2743,7 @@ RemovePgTempRelationFiles(const char *tsdirname) { DIR *ts_dir; struct dirent *de; - char dbspace_path[MAXPGPATH]; + char dbspace_path[MAXPGPATH * 2]; ts_dir = AllocateDir(tsdirname); if (ts_dir == NULL) @@ -2707,7 +2784,7 @@ RemovePgTempRelationFilesInDbspace(const char *dbspacedirname) { DIR *dbspace_dir; struct dirent *de; - char rm_path[MAXPGPATH]; + char rm_path[MAXPGPATH * 2]; dbspace_dir = AllocateDir(dbspacedirname); if (dbspace_dir == NULL) @@ -2894,7 +2971,7 @@ walkdir(const char *path, while ((de = ReadDirExtended(dir, path, elevel)) != NULL) { - char subpath[MAXPGPATH]; + char subpath[MAXPGPATH * 2]; struct stat fst; int sret; @@ -2904,7 +2981,7 @@ walkdir(const char *path, strcmp(de->d_name, "..") == 0) continue; - snprintf(subpath, MAXPGPATH, "%s/%s", path, de->d_name); + snprintf(subpath, sizeof(subpath), "%s/%s", path, de->d_name); if (process_symlinks) sret = stat(subpath, &fst); diff --git a/src/backend/storage/file/reinit.c b/src/backend/storage/file/reinit.c index 6b98131e54..934cac2deb 100644 --- a/src/backend/storage/file/reinit.c +++ b/src/backend/storage/file/reinit.c @@ -48,7 +48,7 @@ typedef struct void ResetUnloggedRelations(int op) { - char temp_path[MAXPGPATH]; + char temp_path[MAXPGPATH + 10 + sizeof(TABLESPACE_VERSION_DIRECTORY)]; DIR *spc_dir; struct dirent *spc_de; MemoryContext tmpctx, @@ -104,7 +104,7 @@ ResetUnloggedRelationsInTablespaceDir(const char *tsdirname, int op) { DIR *ts_dir; struct dirent *de; - char dbspace_path[MAXPGPATH]; + char dbspace_path[MAXPGPATH * 2]; ts_dir = AllocateDir(tsdirname); if (ts_dir == NULL) @@ -145,7 +145,7 @@ ResetUnloggedRelationsInDbspaceDir(const char *dbspacedirname, int op) { DIR *dbspace_dir; struct dirent *de; - char rm_path[MAXPGPATH]; + char rm_path[MAXPGPATH * 2]; /* Caller must specify at least one operation. */ Assert((op & (UNLOGGED_RELATION_CLEANUP | UNLOGGED_RELATION_INIT)) != 0); @@ -308,7 +308,7 @@ ResetUnloggedRelationsInDbspaceDir(const char *dbspacedirname, int op) ForkNumber forkNum; int oidchars; char oidbuf[OIDCHARS + 1]; - char srcpath[MAXPGPATH]; + char srcpath[MAXPGPATH * 2]; char dstpath[MAXPGPATH]; /* Skip anything that doesn't look like a relation data file. */ diff --git a/src/backend/storage/freespace/freespace.c b/src/backend/storage/freespace/freespace.c index bbd90c911a..4138b04839 100644 --- a/src/backend/storage/freespace/freespace.c +++ b/src/backend/storage/freespace/freespace.c @@ -327,8 +327,26 @@ FreeSpaceMapTruncateRel(Relation rel, BlockNumber nblocks) if (!BufferIsValid(buf)) return; /* nothing to do; the FSM was already smaller */ LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE); + + /* NO EREPORT(ERROR) from here till changes are logged */ + START_CRIT_SECTION(); + fsm_truncate_avail(BufferGetPage(buf), first_removed_slot); - MarkBufferDirtyHint(buf, false); + + /* + * Truncation of a relation is WAL-logged at a higher-level, and we + * will be called at WAL replay. But if checksums are enabled, we need + * to still write a WAL record to protect against a torn page, if the + * page is flushed to disk before the truncation WAL record. We cannot + * use MarkBufferDirtyHint here, because that will not dirty the page + * during recovery. + */ + MarkBufferDirty(buf); + if (!InRecovery && RelationNeedsWAL(rel) && XLogHintBitIsNeeded()) + log_newpage_buffer(buf, false); + + END_CRIT_SECTION(); + UnlockReleaseBuffer(buf); new_nfsmblocks = fsm_logical_to_physical(first_removed_address) + 1; diff --git a/src/backend/storage/ipc/dsm.c b/src/backend/storage/ipc/dsm.c index 47f2bea0be..8affe6711d 100644 --- a/src/backend/storage/ipc/dsm.c +++ b/src/backend/storage/ipc/dsm.c @@ -306,9 +306,9 @@ dsm_cleanup_for_mmap(void) if (strncmp(dent->d_name, PG_DYNSHMEM_MMAP_FILE_PREFIX, strlen(PG_DYNSHMEM_MMAP_FILE_PREFIX)) == 0) { - char buf[MAXPGPATH]; + char buf[MAXPGPATH + sizeof(PG_DYNSHMEM_DIR)]; - snprintf(buf, MAXPGPATH, PG_DYNSHMEM_DIR "/%s", dent->d_name); + snprintf(buf, sizeof(buf), PG_DYNSHMEM_DIR "/%s", dent->d_name); elog(DEBUG2, "removing file \"%s\"", buf); diff --git a/src/backend/storage/ipc/dsm_impl.c b/src/backend/storage/ipc/dsm_impl.c index 8c706aee00..1a11d21df0 100644 --- a/src/backend/storage/ipc/dsm_impl.c +++ b/src/backend/storage/ipc/dsm_impl.c @@ -73,6 +73,7 @@ static bool dsm_impl_posix(dsm_op op, dsm_handle handle, Size request_size, void **impl_private, void **mapped_address, Size *mapped_size, int elevel); +static int dsm_impl_posix_resize(int fd, off_t size); #endif #ifdef USE_DSM_SYSV static bool dsm_impl_sysv(dsm_op op, dsm_handle handle, Size request_size, @@ -319,7 +320,8 @@ dsm_impl_posix(dsm_op op, dsm_handle handle, Size request_size, } request_size = st.st_size; } - else if (*mapped_size != request_size && ftruncate(fd, request_size)) + else if (*mapped_size != request_size && + dsm_impl_posix_resize(fd, request_size) != 0) { int save_errno; @@ -392,7 +394,52 @@ dsm_impl_posix(dsm_op op, dsm_handle handle, Size request_size, return true; } -#endif + +/* + * Set the size of a virtual memory region associated with a file descriptor. + * If necessary, also ensure that virtual memory is actually allocated by the + * operating system, to avoid nasty surprises later. + * + * Returns non-zero if either truncation or allocation fails, and sets errno. + */ +static int +dsm_impl_posix_resize(int fd, off_t size) +{ + int rc; + + /* Truncate (or extend) the file to the requested size. */ + rc = ftruncate(fd, size); + + /* + * On Linux, a shm_open fd is backed by a tmpfs file. After resizing with + * ftruncate, the file may contain a hole. Accessing memory backed by a + * hole causes tmpfs to allocate pages, which fails with SIGBUS if there + * is no more tmpfs space available. So we ask tmpfs to allocate pages + * here, so we can fail gracefully with ENOSPC now rather than risking + * SIGBUS later. + */ +#if defined(HAVE_POSIX_FALLOCATE) && defined(__linux__) + if (rc == 0) + { + /* We may get interrupted, if so just retry. */ + do + { + rc = posix_fallocate(fd, 0, size); + } while (rc == EINTR); + + /* + * The caller expects errno to be set, but posix_fallocate() doesn't + * set it. Instead it returns error numbers directly. So set errno, + * even though we'll also return rc to indicate success or failure. + */ + errno = rc; + } +#endif /* HAVE_POSIX_FALLOCATE && __linux__ */ + + return rc; +} + +#endif /* USE_DSM_POSIX */ #ifdef USE_DSM_SYSV /* diff --git a/src/backend/storage/ipc/latch.c b/src/backend/storage/ipc/latch.c index 9def8a12d3..437ee6edc5 100644 --- a/src/backend/storage/ipc/latch.c +++ b/src/backend/storage/ipc/latch.c @@ -130,6 +130,9 @@ static volatile sig_atomic_t waiting = false; static int selfpipe_readfd = -1; static int selfpipe_writefd = -1; +/* Process owning the self-pipe --- needed for checking purposes */ +static int selfpipe_owner_pid = 0; + /* Private function prototypes */ static void sendSelfPipeByte(void); static void drainSelfPipe(void); @@ -158,7 +161,41 @@ InitializeLatchSupport(void) #ifndef WIN32 int pipefd[2]; - Assert(selfpipe_readfd == -1); + if (IsUnderPostmaster) + { + /* + * We might have inherited connections to a self-pipe created by the + * postmaster. It's critical that child processes create their own + * self-pipes, of course, and we really want them to close the + * inherited FDs for safety's sake. + */ + if (selfpipe_owner_pid != 0) + { + /* Assert we go through here but once in a child process */ + Assert(selfpipe_owner_pid != MyProcPid); + /* Release postmaster's pipe FDs; ignore any error */ + (void) close(selfpipe_readfd); + (void) close(selfpipe_writefd); + /* Clean up, just for safety's sake; we'll set these below */ + selfpipe_readfd = selfpipe_writefd = -1; + selfpipe_owner_pid = 0; + } + else + { + /* + * Postmaster didn't create a self-pipe ... or else we're in an + * EXEC_BACKEND build, in which case it doesn't matter since the + * postmaster's pipe FDs were closed by the action of FD_CLOEXEC. + */ + Assert(selfpipe_readfd == -1); + } + } + else + { + /* In postmaster or standalone backend, assert we do this but once */ + Assert(selfpipe_readfd == -1); + Assert(selfpipe_owner_pid == 0); + } /* * Set up the self-pipe that allows a signal handler to wake up the @@ -166,23 +203,30 @@ InitializeLatchSupport(void) * SetLatch won't block if the event has already been set many times * filling the kernel buffer. Make the read-end non-blocking too, so that * we can easily clear the pipe by reading until EAGAIN or EWOULDBLOCK. + * Also, make both FDs close-on-exec, since we surely do not want any + * child processes messing with them. */ if (pipe(pipefd) < 0) elog(FATAL, "pipe() failed: %m"); - if (fcntl(pipefd[0], F_SETFL, O_NONBLOCK) < 0) - elog(FATAL, "fcntl() failed on read-end of self-pipe: %m"); - if (fcntl(pipefd[1], F_SETFL, O_NONBLOCK) < 0) - elog(FATAL, "fcntl() failed on write-end of self-pipe: %m"); + if (fcntl(pipefd[0], F_SETFL, O_NONBLOCK) == -1) + elog(FATAL, "fcntl(F_SETFL) failed on read-end of self-pipe: %m"); + if (fcntl(pipefd[1], F_SETFL, O_NONBLOCK) == -1) + elog(FATAL, "fcntl(F_SETFL) failed on write-end of self-pipe: %m"); + if (fcntl(pipefd[0], F_SETFD, FD_CLOEXEC) == -1) + elog(FATAL, "fcntl(F_SETFD) failed on read-end of self-pipe: %m"); + if (fcntl(pipefd[1], F_SETFD, FD_CLOEXEC) == -1) + elog(FATAL, "fcntl(F_SETFD) failed on write-end of self-pipe: %m"); selfpipe_readfd = pipefd[0]; selfpipe_writefd = pipefd[1]; + selfpipe_owner_pid = MyProcPid; #else /* currently, nothing to do here for Windows */ #endif } /* - * Initialize a backend-local latch. + * Initialize a process-local latch. */ void InitLatch(volatile Latch *latch) @@ -193,7 +237,7 @@ InitLatch(volatile Latch *latch) #ifndef WIN32 /* Assert InitializeLatchSupport has been called in this process */ - Assert(selfpipe_readfd >= 0); + Assert(selfpipe_readfd >= 0 && selfpipe_owner_pid == MyProcPid); #else latch->event = CreateEvent(NULL, TRUE, FALSE, NULL); if (latch->event == NULL) @@ -211,6 +255,10 @@ InitLatch(volatile Latch *latch) * containing the latch with ShmemInitStruct. (The Unix implementation * doesn't actually require that, but the Windows one does.) Because of * this restriction, we have no concurrency issues to worry about here. + * + * Note that other handles created in this module are never marked as + * inheritable. Thus we do not need to worry about cleaning up child + * process references to postmaster-private latches or WaitEventSets. */ void InitSharedLatch(volatile Latch *latch) @@ -256,7 +304,7 @@ OwnLatch(volatile Latch *latch) #ifndef WIN32 /* Assert InitializeLatchSupport has been called in this process */ - Assert(selfpipe_readfd >= 0); + Assert(selfpipe_readfd >= 0 && selfpipe_owner_pid == MyProcPid); #endif if (latch->owner_pid != 0) @@ -289,7 +337,7 @@ DisownLatch(volatile Latch *latch) * is incurred when WL_TIMEOUT is given, so avoid using a timeout if possible. * * The latch must be owned by the current process, ie. it must be a - * backend-local latch initialized with InitLatch, or a shared latch + * process-local latch initialized with InitLatch, or a shared latch * associated with the current process by calling OwnLatch. * * Returns bit mask indicating which condition(s) caused the wake-up. Note @@ -526,9 +574,18 @@ CreateWaitEventSet(MemoryContext context, int nevents) set->nevents_space = nevents; #if defined(WAIT_USE_EPOLL) +#ifdef EPOLL_CLOEXEC + set->epoll_fd = epoll_create1(EPOLL_CLOEXEC); + if (set->epoll_fd < 0) + elog(ERROR, "epoll_create1 failed: %m"); +#else + /* cope with ancient glibc lacking epoll_create1 (e.g., RHEL5) */ set->epoll_fd = epoll_create(nevents); if (set->epoll_fd < 0) elog(ERROR, "epoll_create failed: %m"); + if (fcntl(set->epoll_fd, F_SETFD, FD_CLOEXEC) == -1) + elog(ERROR, "fcntl(F_SETFD) failed on epoll descriptor: %m"); +#endif /* EPOLL_CLOEXEC */ #elif defined(WAIT_USE_WIN32) /* @@ -549,6 +606,12 @@ CreateWaitEventSet(MemoryContext context, int nevents) /* * Free a previously created WaitEventSet. + * + * Note: preferably, this shouldn't have to free any resources that could be + * inherited across an exec(). If it did, we'd likely leak those resources in + * many scenarios. For the epoll case, we ensure that by setting FD_CLOEXEC + * when the FD is created. For the Windows case, we assume that the handles + * involved are non-inheritable. */ void FreeWaitEventSet(WaitEventSet *set) @@ -595,7 +658,7 @@ FreeWaitEventSet(WaitEventSet *set) * used to modify previously added wait events using ModifyWaitEvent(). * * In the WL_LATCH_SET case the latch must be owned by the current process, - * i.e. it must be a backend-local latch initialized with InitLatch, or a + * i.e. it must be a process-local latch initialized with InitLatch, or a * shared latch associated with the current process by calling OwnLatch. * * In the WL_SOCKET_READABLE/WRITEABLE case, EOF and error conditions are @@ -640,6 +703,9 @@ AddWaitEventToSet(WaitEventSet *set, uint32 events, pgsocket fd, Latch *latch, event->fd = fd; event->events = events; event->user_data = user_data; +#ifdef WIN32 + event->reset = false; +#endif if (events == WL_LATCH_SET) { @@ -854,7 +920,7 @@ WaitEventAdjustWin32(WaitEventSet *set, WaitEvent *event) * reached. At most nevents occurred events are returned. * * If timeout = -1, block until an event occurs; if 0, check sockets for - * readiness, but don't block; if > 0, block for at most timeout miliseconds. + * readiness, but don't block; if > 0, block for at most timeout milliseconds. * * Returns the number of events occurred, or 0 if the timeout was reached. * @@ -1381,6 +1447,50 @@ WaitEventSetWaitBlock(WaitEventSet *set, int cur_timeout, DWORD rc; WaitEvent *cur_event; + /* Reset any wait events that need it */ + for (cur_event = set->events; + cur_event < (set->events + set->nevents); + cur_event++) + { + if (cur_event->reset) + { + WaitEventAdjustWin32(set, cur_event); + cur_event->reset = false; + } + + /* + * Windows does not guarantee to log an FD_WRITE network event + * indicating that more data can be sent unless the previous send() + * failed with WSAEWOULDBLOCK. While our caller might well have made + * such a call, we cannot assume that here. Therefore, if waiting for + * write-ready, force the issue by doing a dummy send(). If the dummy + * send() succeeds, assume that the socket is in fact write-ready, and + * return immediately. Also, if it fails with something other than + * WSAEWOULDBLOCK, return a write-ready indication to let our caller + * deal with the error condition. + */ + if (cur_event->events & WL_SOCKET_WRITEABLE) + { + char c; + WSABUF buf; + DWORD sent; + int r; + + buf.buf = &c; + buf.len = 0; + + r = WSASend(cur_event->fd, &buf, 1, &sent, 0, NULL, NULL); + if (r == 0 || WSAGetLastError() != WSAEWOULDBLOCK) + { + occurred_events->pos = cur_event->pos; + occurred_events->user_data = cur_event->user_data; + occurred_events->events = WL_SOCKET_WRITEABLE; + occurred_events->fd = cur_event->fd; + return 1; + } + } + } + /* * Sleep. * @@ -1464,6 +1574,18 @@ WaitEventSetWaitBlock(WaitEventSet *set, int cur_timeout, { /* data available in socket */ occurred_events->events |= WL_SOCKET_READABLE; + + /*------ + * WaitForMultipleObjects doesn't guarantee that a read event will + * be returned if the latch is set at the same time. Even if it + * did, the caller might drop that event expecting it to reoccur + * on next call. So, we must force the event to be reset if this + * WaitEventSet is used again in order to avoid an indefinite + * hang. Refer https://msdn.microsoft.com/en-us/library/windows/desktop/ms741576(v=vs.85).aspx + * for the behavior of socket events. + *------ + */ + cur_event->reset = true; } if ((cur_event->events & WL_SOCKET_WRITEABLE) && (resEvents.lNetworkEvents & FD_WRITE)) diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c index 7520545312..4e5fd48d43 100644 --- a/src/backend/storage/ipc/procarray.c +++ b/src/backend/storage/ipc/procarray.c @@ -240,13 +240,14 @@ CreateSharedProcArray(void) */ procArray->numProcs = 0; procArray->maxProcs = PROCARRAY_MAXPROCS; - procArray->replication_slot_xmin = InvalidTransactionId; procArray->maxKnownAssignedXids = TOTAL_MAX_CACHED_SUBXIDS; procArray->numKnownAssignedXids = 0; procArray->tailKnownAssignedXids = 0; procArray->headKnownAssignedXids = 0; SpinLockInit(&procArray->known_assigned_xids_lck); procArray->lastOverflowedXid = InvalidTransactionId; + procArray->replication_slot_xmin = InvalidTransactionId; + procArray->replication_slot_catalog_xmin = InvalidTransactionId; } allProcs = ProcGlobal->allProcs; @@ -492,7 +493,6 @@ ProcArrayGroupClearXid(PGPROC *proc, TransactionId latestXid) volatile PROC_HDR *procglobal = ProcGlobal; uint32 nextidx; uint32 wakeidx; - int extraWaits = -1; /* We should definitely have an XID to clear. */ Assert(TransactionIdIsValid(allPgXact[proc->pgprocno].xid)); @@ -519,6 +519,8 @@ ProcArrayGroupClearXid(PGPROC *proc, TransactionId latestXid) */ if (nextidx != INVALID_PGPROCNO) { + int extraWaits = 0; + /* Sleep until the leader clears our XID. */ for (;;) { @@ -2113,20 +2115,21 @@ GetOldestActiveTransactionId(void) Assert(!RecoveryInProgress()); - LWLockAcquire(ProcArrayLock, LW_SHARED); - /* - * It's okay to read nextXid without acquiring XidGenLock because (1) we - * assume TransactionIds can be read atomically and (2) we don't care if - * we get a slightly stale value. It can't be very stale anyway, because - * the LWLockAcquire above will have done any necessary memory - * interlocking. + * Read nextXid, as the upper bound of what's still active. + * + * Reading a TransactionId is atomic, but we must grab the lock to make + * sure that all XIDs < nextXid are already present in the proc array (or + * have already completed), when we spin over it. */ + LWLockAcquire(XidGenLock, LW_SHARED); oldestRunningXid = ShmemVariableCache->nextXid; + LWLockRelease(XidGenLock); /* * Spin over procArray collecting all xids and subxids. */ + LWLockAcquire(ProcArrayLock, LW_SHARED); for (index = 0; index < arrayP->numProcs; index++) { int pgprocno = arrayP->pgprocnos[index]; @@ -2148,7 +2151,6 @@ GetOldestActiveTransactionId(void) * smaller than oldestRunningXid */ } - LWLockRelease(ProcArrayLock); return oldestRunningXid; @@ -2171,7 +2173,7 @@ GetOldestActiveTransactionId(void) * that the caller will immediately use the xid to peg the xmin horizon. */ TransactionId -GetOldestSafeDecodingTransactionId(void) +GetOldestSafeDecodingTransactionId(bool catalogOnly) { ProcArrayStruct *arrayP = procArray; TransactionId oldestSafeXid; @@ -2194,9 +2196,17 @@ GetOldestSafeDecodingTransactionId(void) /* * If there's already a slot pegging the xmin horizon, we can start with * that value, it's guaranteed to be safe since it's computed by this - * routine initially and has been enforced since. + * routine initially and has been enforced since. We can always use the + * slot's general xmin horizon, but the catalog horizon is only usable + * when we only catalog data is going to be looked at. */ - if (TransactionIdIsValid(procArray->replication_slot_catalog_xmin) && + if (TransactionIdIsValid(procArray->replication_slot_xmin) && + TransactionIdPrecedes(procArray->replication_slot_xmin, + oldestSafeXid)) + oldestSafeXid = procArray->replication_slot_xmin; + + if (catalogOnly && + TransactionIdIsValid(procArray->replication_slot_catalog_xmin) && TransactionIdPrecedes(procArray->replication_slot_catalog_xmin, oldestSafeXid)) oldestSafeXid = procArray->replication_slot_catalog_xmin; @@ -2769,6 +2779,38 @@ CountDBBackends(Oid databaseid) return count; } +/* + * CountDBConnections --- counts database backends ignoring any background + * worker processes + */ +int +CountDBConnections(Oid databaseid) +{ + ProcArrayStruct *arrayP = procArray; + int count = 0; + int index; + + LWLockAcquire(ProcArrayLock, LW_SHARED); + + for (index = 0; index < arrayP->numProcs; index++) + { + int pgprocno = arrayP->pgprocnos[index]; + volatile PGPROC *proc = &allProcs[pgprocno]; + + if (proc->pid == 0) + continue; /* do not count prepared xacts */ + if (proc->isBackgroundWorker) + continue; /* do not count background workers */ + if (!OidIsValid(databaseid) || + proc->databaseId == databaseid) + count++; + } + + LWLockRelease(ProcArrayLock); + + return count; +} + /* * CancelDBBackends --- cancel backends that are using specified database */ @@ -2828,6 +2870,8 @@ CountUserBackends(Oid roleid) if (proc->pid == 0) continue; /* do not count prepared xacts */ + if (proc->isBackgroundWorker) + continue; /* do not count background workers */ if (proc->roleId == roleid) count++; } diff --git a/src/backend/storage/ipc/procsignal.c b/src/backend/storage/ipc/procsignal.c index a3d6ac5318..7611283eaa 100644 --- a/src/backend/storage/ipc/procsignal.c +++ b/src/backend/storage/ipc/procsignal.c @@ -20,6 +20,7 @@ #include "access/parallel.h" #include "commands/async.h" #include "miscadmin.h" +#include "replication/walsender.h" #include "storage/latch.h" #include "storage/ipc.h" #include "storage/proc.h" @@ -270,6 +271,9 @@ procsignal_sigusr1_handler(SIGNAL_ARGS) if (CheckProcSignal(PROCSIG_PARALLEL_MESSAGE)) HandleParallelMessageInterrupt(); + if (CheckProcSignal(PROCSIG_WALSND_INIT_STOPPING)) + HandleWalSndInitStopping(); + if (CheckProcSignal(PROCSIG_RECOVERY_CONFLICT_DATABASE)) RecoveryConflictInterrupt(PROCSIG_RECOVERY_CONFLICT_DATABASE); diff --git a/src/backend/storage/ipc/shm_mq.c b/src/backend/storage/ipc/shm_mq.c index 5b32782022..3721029d25 100644 --- a/src/backend/storage/ipc/shm_mq.c +++ b/src/backend/storage/ipc/shm_mq.c @@ -500,7 +500,7 @@ shm_mq_sendv(shm_mq_handle *mqh, shm_mq_iovec *iov, int iovcnt, bool nowait) * it will point to a temporary buffer. This mostly avoids data copying in * the hoped-for case where messages are short compared to the buffer size, * while still allowing longer messages. In either case, the return value - * remains valid until the next receive operation is perfomed on the queue. + * remains valid until the next receive operation is performed on the queue. * * When nowait = false, we'll wait on our process latch when the ring buffer * is empty and we have not yet received a full message. The sender will diff --git a/src/backend/storage/ipc/standby.c b/src/backend/storage/ipc/standby.c index 547f1a88fe..8e42e5745f 100644 --- a/src/backend/storage/ipc/standby.c +++ b/src/backend/storage/ipc/standby.c @@ -160,6 +160,8 @@ WaitExceedsMaxStandbyDelay(void) { TimestampTz ltime; + CHECK_FOR_INTERRUPTS(); + /* Are we past the limit time? */ ltime = GetStandbyLimitTime(); if (ltime && GetCurrentTimestamp() >= ltime) @@ -584,14 +586,14 @@ StandbyLockTimeoutHandler(void) * one transaction on one relation. * * We keep a single dynamically expandible list of locks in local memory, - * RelationLockList, so we can keep track of the various entries made by + * RecoveryLockList, so we can keep track of the various entries made by * the Startup process's virtual xid in the shared lock table. * * We record the lock against the top-level xid, rather than individual * subtransaction xids. This means AccessExclusiveLocks held by aborted * subtransactions are not released as early as possible on standbys. * - * List elements use type xl_rel_lock, since the WAL record type exactly + * List elements use type xl_standby_lock, since the WAL record type exactly * matches the information that we need to keep track of. * * We use session locks rather than normal locks so we don't need diff --git a/src/backend/storage/lmgr/lock.c b/src/backend/storage/lmgr/lock.c index 9d7c113f77..adf96dc5af 100644 --- a/src/backend/storage/lmgr/lock.c +++ b/src/backend/storage/lmgr/lock.c @@ -2781,7 +2781,7 @@ GetLockConflicts(const LOCKTAG *locktag, LOCKMODE lockmode) vxids = (VirtualTransactionId *) palloc0(sizeof(VirtualTransactionId) * (MaxBackends + 1)); - /* Compute hash code and partiton lock, and look up conflicting modes. */ + /* Compute hash code and partition lock, and look up conflicting modes. */ hashcode = LockTagHashCode(locktag); partitionLock = LockHashPartitionLock(hashcode); conflictMask = lockMethodTable->conflictTab[lockmode]; diff --git a/src/backend/storage/lmgr/lwlock.c b/src/backend/storage/lmgr/lwlock.c index a814809e57..6b5960dd20 100644 --- a/src/backend/storage/lmgr/lwlock.c +++ b/src/backend/storage/lmgr/lwlock.c @@ -834,7 +834,7 @@ LWLockAttemptLock(LWLock *lock, LWLockMode mode) return false; } else - return true; /* someobdy else has the lock */ + return true; /* somebody else has the lock */ } } pg_unreachable(); @@ -1006,7 +1006,7 @@ LWLockWakeup(LWLock *lock) * that happens before the list unlink happens, the list would end up * being corrupted. * - * The barrier pairs with the LWLockWaitListLock() when enqueing for + * The barrier pairs with the LWLockWaitListLock() when enqueuing for * another lock. */ pg_write_barrier(); @@ -1082,7 +1082,7 @@ LWLockDequeueSelf(LWLock *lock) /* * Can't just remove ourselves from the list, but we need to iterate over - * all entries as somebody else could have unqueued us. + * all entries as somebody else could have dequeued us. */ dlist_foreach_modify(iter, &lock->waiters) { @@ -1781,15 +1781,14 @@ LWLockRelease(LWLock *lock) * be the latest-acquired lock; so search array backwards. */ for (i = num_held_lwlocks; --i >= 0;) - { if (lock == held_lwlocks[i].lock) - { - mode = held_lwlocks[i].mode; break; - } - } + if (i < 0) elog(ERROR, "lock %s %d is not held", T_NAME(lock), T_ID(lock)); + + mode = held_lwlocks[i].mode; + num_held_lwlocks--; for (; i < num_held_lwlocks; i++) held_lwlocks[i] = held_lwlocks[i + 1]; diff --git a/src/backend/storage/lmgr/predicate.c b/src/backend/storage/lmgr/predicate.c index d8eb6f6690..62064afb05 100644 --- a/src/backend/storage/lmgr/predicate.c +++ b/src/backend/storage/lmgr/predicate.c @@ -116,10 +116,12 @@ * than its own active transaction must acquire an exclusive * lock. * - * FirstPredicateLockMgrLock based partition locks + * PredicateLockHashPartitionLock(hashcode) * - The same lock protects a target, all locks on that target, and - * the linked list of locks on the target.. - * - When more than one is needed, acquire in ascending order. + * the linked list of locks on the target. + * - When more than one is needed, acquire in ascending address order. + * - When all are needed (rare), acquire in ascending index order with + * PredicateLockHashPartitionLockByIndex(index). * * SerializableXactHashLock * - Protects both PredXact and SerializableXidHash. @@ -806,6 +808,7 @@ OldSerXidInit(void) oldSerXidControl = (OldSerXidControl) ShmemInitStruct("OldSerXidControlData", sizeof(OldSerXidControlData), &found); + Assert(found == IsUnderPostmaster); if (!found) { /* @@ -1100,6 +1103,10 @@ InitPredicateLocks(void) Size requestSize; bool found; +#ifndef EXEC_BACKEND + Assert(!IsUnderPostmaster); +#endif + /* * Compute size of predicate lock target hashtable. Note these * calculations must agree with PredicateLockShmemSize! @@ -1122,16 +1129,22 @@ InitPredicateLocks(void) HASH_ELEM | HASH_BLOBS | HASH_PARTITION | HASH_FIXED_SIZE); - /* Assume an average of 2 xacts per target */ - max_table_size *= 2; - /* * Reserve a dummy entry in the hash table; we use it to make sure there's * always one entry available when we need to split or combine a page, * because running out of space there could mean aborting a * non-serializable transaction. */ - hash_search(PredicateLockTargetHash, &ScratchTargetTag, HASH_ENTER, NULL); + if (!IsUnderPostmaster) + { + (void) hash_search(PredicateLockTargetHash, &ScratchTargetTag, + HASH_ENTER, &found); + Assert(!found); + } + + /* Pre-calculate the hash and partition lock of the scratch entry */ + ScratchTargetTagHash = PredicateLockTargetTagHashCode(&ScratchTargetTag); + ScratchPartitionLock = PredicateLockHashPartitionLock(ScratchTargetTagHash); /* * Allocate hash table for PREDICATELOCK structs. This stores per @@ -1143,6 +1156,9 @@ InitPredicateLocks(void) info.hash = predicatelock_hash; info.num_partitions = NUM_PREDICATELOCK_PARTITIONS; + /* Assume an average of 2 xacts per target */ + max_table_size *= 2; + PredicateLockHash = ShmemInitHash("PREDICATELOCK hash", max_table_size, max_table_size, @@ -1169,6 +1185,7 @@ InitPredicateLocks(void) PredXact = ShmemInitStruct("PredXactList", PredXactListDataSize, &found); + Assert(found == IsUnderPostmaster); if (!found) { int i; @@ -1247,6 +1264,7 @@ InitPredicateLocks(void) RWConflictPool = ShmemInitStruct("RWConflictPool", RWConflictPoolHeaderDataSize, &found); + Assert(found == IsUnderPostmaster); if (!found) { int i; @@ -1278,6 +1296,7 @@ InitPredicateLocks(void) ShmemInitStruct("FinishedSerializableTransactions", sizeof(SHM_QUEUE), &found); + Assert(found == IsUnderPostmaster); if (!found) SHMQueueInit(FinishedSerializableTransactions); @@ -1286,10 +1305,6 @@ InitPredicateLocks(void) * transactions. */ OldSerXidInit(); - - /* Pre-calculate the hash and partition lock of the scratch entry */ - ScratchTargetTagHash = PredicateLockTargetTagHashCode(&ScratchTargetTag); - ScratchPartitionLock = PredicateLockHashPartitionLock(ScratchTargetTagHash); } /* @@ -3204,7 +3219,7 @@ ReleasePredicateLocks(bool isCommit) /* * We can't trust XactReadOnly here, because a transaction which started * as READ WRITE can show as READ ONLY later, e.g., within - * substransactions. We want to flag a transaction as READ ONLY if it + * subtransactions. We want to flag a transaction as READ ONLY if it * commits without writing so that de facto READ ONLY transactions get the * benefit of some RO optimizations, so we will use this local variable to * get some cleanup logic right which is based on whether the transaction diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c index 0dd0865e15..a2536d60f5 100644 --- a/src/backend/storage/lmgr/proc.c +++ b/src/backend/storage/lmgr/proc.c @@ -372,6 +372,7 @@ InitProcess(void) MyProc->backendId = InvalidBackendId; MyProc->databaseId = InvalidOid; MyProc->roleId = InvalidOid; + MyProc->isBackgroundWorker = IsBackgroundWorker; MyPgXact->delayChkpt = false; MyPgXact->vacuumFlags = 0; /* NB -- autovac launcher intentionally does not set IS_AUTOVACUUM */ @@ -544,6 +545,7 @@ InitAuxiliaryProcess(void) MyProc->backendId = InvalidBackendId; MyProc->databaseId = InvalidOid; MyProc->roleId = InvalidOid; + MyProc->isBackgroundWorker = IsBackgroundWorker; MyPgXact->delayChkpt = false; MyPgXact->vacuumFlags = 0; MyProc->lwWaiting = false; diff --git a/src/backend/storage/page/bufpage.c b/src/backend/storage/page/bufpage.c index f2a07f2111..11607827d8 100644 --- a/src/backend/storage/page/bufpage.c +++ b/src/backend/storage/page/bufpage.c @@ -889,7 +889,7 @@ PageIndexMultiDelete(Page page, OffsetNumber *itemnos, int nitems) offset != MAXALIGN(offset)) ereport(ERROR, (errcode(ERRCODE_DATA_CORRUPTED), - errmsg("corrupted item pointer: offset = %u, size = %u", + errmsg("corrupted item pointer: offset = %u, length = %u", offset, (unsigned int) size))); if (nextitm < nitems && offnum == itemnos[nextitm]) diff --git a/src/backend/tcop/fastpath.c b/src/backend/tcop/fastpath.c index 2cd45e642a..45f81824f6 100644 --- a/src/backend/tcop/fastpath.c +++ b/src/backend/tcop/fastpath.c @@ -249,24 +249,15 @@ fetch_fp_info(Oid func_id, struct fp_info * fip) * This corresponds to the libpq protocol symbol "F". * * INPUT: - * In protocol version 3, postgres.c has already read the message body - * and will pass it in msgBuf. - * In old protocol, the passed msgBuf is empty and we must read the - * message here. - * - * RETURNS: - * 0 if successful completion, EOF if frontend connection lost. - * - * Note: All ordinary errors result in ereport(ERROR,...). However, - * if we lose the frontend connection there is no one to ereport to, - * and no use in proceeding... + * postgres.c has already read the message body and will pass it in + * msgBuf. * * Note: palloc()s done here and in the called function do not need to be * cleaned up explicitly. We are called from PostgresMain() in the * MessageContext memory context, which will be automatically reset when * control returns to PostgresMain. */ -int +void HandleFunctionRequest(StringInfo msgBuf) { Oid fid; @@ -281,9 +272,8 @@ HandleFunctionRequest(StringInfo msgBuf) char msec_str[32]; /* - * Now that we've eaten the input message, check to see if we actually - * want to do the function call or not. It's now safe to ereport(); we - * won't lose sync with the frontend. + * We only accept COMMIT/ABORT if we are in an aborted transaction, and + * COMMIT/ABORT cannot be executed through the fastpath interface. */ if (IsAbortedTransactionBlockState()) ereport(ERROR, @@ -406,8 +396,6 @@ HandleFunctionRequest(StringInfo msgBuf) msec_str, fip->fname, fid))); break; } - - return 0; } /* diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 98ccbbb4d1..f7c6a1b904 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -42,11 +42,13 @@ #include "catalog/pg_type.h" #include "commands/async.h" #include "commands/prepare.h" +#include "commands/defrem.h" #include "libpq/libpq.h" #include "libpq/pqformat.h" #include "libpq/pqsignal.h" #include "miscadmin.h" #include "nodes/print.h" +#include "nodes/nodeFuncs.h" #include "optimizer/planner.h" #include "pgstat.h" #include "pg_trace.h" @@ -69,10 +71,12 @@ #include "tcop/utility.h" #include "utils/lsyscache.h" #include "utils/memutils.h" +#include "utils/builtins.h" #include "utils/ps_status.h" #include "utils/snapmgr.h" #include "utils/timeout.h" #include "utils/timestamp.h" +#include "utils/int8.h" #include "mb/pg_wchar.h" @@ -121,13 +125,6 @@ char *stack_base_ptr = NULL; char *register_stack_base_ptr = NULL; #endif -/* - * Flag to mark SIGHUP. Whenever the main loop comes around it - * will reread the configuration file. (Better than doing the - * reading in the signal handler, ey?) - */ -static volatile sig_atomic_t got_SIGHUP = false; - /* * Flag to keep track of whether we have started a transaction. * For extended query protocol this has to be remembered across messages. @@ -186,8 +183,11 @@ static bool IsTransactionExitStmt(Node *parsetree); static bool IsTransactionExitStmtList(List *parseTrees); static bool IsTransactionStmtList(List *parseTrees); static void drop_unnamed_stmt(void); -static void SigHupHandler(SIGNAL_ARGS); static void log_disconnections(int code, Datum arg); +static bool exec_cached_query(const char* query, List *parsetree_list); +static void exec_prepared_plan(Portal portal, const char *portal_name, long max_rows, CommandDest dest); +static void begin_exec_simple(void); +static void end_exec_simple(void); /* ---------------------------------------------------------------- @@ -844,7 +844,7 @@ pg_plan_queries(List *querytrees, int cursorOptions, ParamListInfo boundParams) foreach(query_list, querytrees) { - Query *query = (Query *) lfirst(query_list); + Query *query = castNode(Query, lfirst(query_list)); Node *stmt; if (query->commandType == CMD_UTILITY) @@ -950,6 +950,19 @@ exec_simple_query(const char *query_string) */ isTopLevel = (list_length(parsetree_list) == 1); + /* + * Inform autoprepare about start of simple query execution to record elapsed time + */ + begin_exec_simple(); + + /* + * Try to find cached plan + */ + if (isTopLevel && autoprepare_threshold != 0 && exec_cached_query(query_string, parsetree_list)) + { + return; + } + /* * Run through the raw parsetree(s) and process each one. */ @@ -1153,6 +1166,11 @@ exec_simple_query(const char *query_string) if (!parsetree_list) NullCommand(dest); + /* + * Inform autoprepare about end of completion of simple query execution to record elapsed time + */ + end_exec_simple(); + /* * Emit duration logging if appropriate. */ @@ -1832,9 +1850,28 @@ exec_bind_message(StringInfo input_message) static void exec_execute_message(const char *portal_name, long max_rows) { - CommandDest dest; + Portal portal = GetPortalByName(portal_name); + CommandDest dest = whereToSendOutput; + + /* Adjust destination to tell printtup.c what to do */ + if (dest == DestRemote) + dest = DestRemoteExecute; + + if (!PortalIsValid(portal)) + ereport(ERROR, + (errcode(ERRCODE_UNDEFINED_CURSOR), + errmsg("portal \"%s\" does not exist", portal_name))); + + exec_prepared_plan(portal, portal_name, max_rows, dest); +} + +/* + * Execute prepared plan. + */ +static void +exec_prepared_plan(Portal portal, const char *portal_name, long max_rows, CommandDest dest) +{ DestReceiver *receiver; - Portal portal; bool completed; char completionTag[COMPLETION_TAG_BUFSIZE]; const char *sourceText; @@ -1846,17 +1883,6 @@ exec_execute_message(const char *portal_name, long max_rows) bool was_logged = false; char msec_str[32]; - /* Adjust destination to tell printtup.c what to do */ - dest = whereToSendOutput; - if (dest == DestRemote) - dest = DestRemoteExecute; - - portal = GetPortalByName(portal_name); - if (!PortalIsValid(portal)) - ereport(ERROR, - (errcode(ERRCODE_UNDEFINED_CURSOR), - errmsg("portal \"%s\" does not exist", portal_name))); - /* * If the original query was a null string, just return * EmptyQueryResponse. @@ -1919,7 +1945,7 @@ exec_execute_message(const char *portal_name, long max_rows) * context, because that may get deleted if portal contains VACUUM). */ receiver = CreateDestReceiver(dest); - if (dest == DestRemoteExecute) + if (dest == DestRemoteExecute || dest == DestRemote) SetRemoteDestReceiverParams(receiver, portal); /* @@ -2689,13 +2715,19 @@ FloatExceptionHandler(SIGNAL_ARGS) "invalid operation, such as division by zero."))); } -/* SIGHUP: set flag to re-read config file at next convenient time */ -static void -SigHupHandler(SIGNAL_ARGS) +/* + * SIGHUP: set flag to re-read config file at next convenient time. + * + * Sets the ConfigReloadPending flag, which should be checked at convenient + * places inside main loops. (Better than doing the reading in the signal + * handler, ey?) + */ +void +PostgresSigHupHandler(SIGNAL_ARGS) { int save_errno = errno; - got_SIGHUP = true; + ConfigReloadPending = true; SetLatch(MyLatch); errno = save_errno; @@ -3633,8 +3665,8 @@ PostgresMain(int argc, char *argv[], WalSndSignals(); else { - pqsignal(SIGHUP, SigHupHandler); /* set flag to read config - * file */ + pqsignal(SIGHUP, PostgresSigHupHandler); /* set flag to read config + * file */ pqsignal(SIGINT, StatementCancelHandler); /* cancel current query */ pqsignal(SIGTERM, die); /* cancel current query and exit */ @@ -3947,6 +3979,12 @@ PostgresMain(int argc, char *argv[], initStringInfo(&input_message); + /* + * Also consider releasing our catalog snapshot if any, so that it's + * not preventing advance of global xmin while we wait for the client. + */ + InvalidateCatalogSnapshotConditionally(); + /* * (1) If we've reached idle state, tell the frontend we're ready for * a new query. @@ -4039,9 +4077,9 @@ PostgresMain(int argc, char *argv[], * (6) check for any other interesting events that happened while we * slept. */ - if (got_SIGHUP) + if (ConfigReloadPending) { - got_SIGHUP = false; + ConfigReloadPending = false; ProcessConfigFile(PGC_SIGHUP); } @@ -4159,19 +4197,7 @@ PostgresMain(int argc, char *argv[], /* switch back to message context */ MemoryContextSwitchTo(MessageContext); - if (HandleFunctionRequest(&input_message) == EOF) - { - /* lost frontend connection during F message input */ - - /* - * Reset whereToSendOutput to prevent ereport from - * attempting to send any more messages to client. - */ - if (whereToSendOutput == DestRemote) - whereToSendOutput = DestNone; - - proc_exit(0); - } + HandleFunctionRequest(&input_message); /* commit the function-invocation transaction */ finish_xact_command(); @@ -4506,3 +4532,885 @@ log_disconnections(int code, Datum arg) port->user_name, port->database_name, port->remote_host, port->remote_port[0] ? " port=" : "", port->remote_port))); } + + +/* + * Autoprepare implementation. + * Autoprepare consists of raw parse tree mutator, hash table of cached plans and exec_cached_query function + * which combines exec_parse_message + exec_bind_message + exec_execute_message + */ + +/* + * Mapping between parameters and replaced literals + */ +typedef struct ParamBinding +{ + A_Const* literal; /* Original literal */ + ParamRef* paramref;/* Constructed parameter reference */ + Param* param; /* Constructed parameter */ + Node** ref; /* Pointer to pointer to literal node (used to revert raw parse tree update) */ + Oid raw_type;/* Parameter raw type */ + Oid type; /* Parameter type after analysis */ + struct ParamBinding* next; /* L1-list of query parameter bindings */ +} ParamBinding; + +/* + * Plan cache entry + */ +typedef struct +{ + Node* parse_tree; /* tree is used as hash key */ + dlist_node lru; /* double linked list to implement LRU */ + int64 exec_count; /* counter of execution of this query */ + CachedPlanSource* plan; + uint32 hash; /* hash calculated for this parsed tree */ + Oid* param_types;/* types of parameters */ + int n_params; /* number of parameters extracted for this query */ + int16 format; /* portal output format */ + bool disable_autoprepare; /* disable preparing of this query */ + uint64 non_prepared_time_sum; /* sum of times of non-prepared query execution (up to autoprepare_threshold measurements) */ + uint64 prepared_time_sum; /* sum of times of prepared query execution (up to autoprepare_threshold measurements) */ + double non_prepared_time_sum2; /* sum of squares of non-prepared query execution (up to autoprepare_threshold measurements) */ + double prepared_time_sum2; /* sum of squares of prepared query execution (up to autoprepare_threshold measurements) */ +} plan_cache_entry; + +static uint32 plan_cache_hash_fn(const void *key, Size keysize) +{ + return ((plan_cache_entry*)key)->hash; +} + +static int plan_cache_match_fn(const void *key1, const void *key2, Size keysize) +{ + plan_cache_entry* e1 = (plan_cache_entry*)key1; + plan_cache_entry* e2 = (plan_cache_entry*)key2; + + return equal(e1->parse_tree, e2->parse_tree) + && memcmp(e1->param_types, e2->param_types, sizeof(Oid)*e1->n_params) == 0 ? 0 : 1; +} + +static void* plan_cache_keycopy_fn(void *dest, const void *src, Size keysize) +{ + plan_cache_entry* dst_entry = (plan_cache_entry*)dest; + plan_cache_entry* src_entry = (plan_cache_entry*)src; + dst_entry->parse_tree = copyObject(src_entry->parse_tree); + dst_entry->param_types = palloc(src_entry->n_params*sizeof(Oid)); + dst_entry->n_params = src_entry->n_params; + memcpy(dst_entry->param_types, src_entry->param_types, src_entry->n_params*sizeof(Oid)); + dst_entry->hash = src_entry->hash; + return dest; +} + +#define PLAN_CACHE_SIZE 113 + +/* + * Plan cache access statistic + */ +size_t autoprepare_hits; +size_t autoprepare_misses; +size_t autoprepare_cached_plans; + +/* + * Currently executed plan entry + */ +static plan_cache_entry* current_plan_entry; +static TimestampTz exec_start_timestamp; + +/* + * Context for raw_expression_tree_mutator + */ +typedef struct { + int n_params; /* Number of extracted parameters */ + uint32 hash; /* We calculate hash for parse tree during plan traversal */ + ParamBinding** param_list_tail; /* pointer to last element "next" field address, used to construct L1 list of parameters */ +} GeneralizerCtx; + + +static HTAB* plan_cache_hash; /* hash table for plan cache */ +static dlist_head plan_cache_lru; /* LRU L2-list for cached queries */ +static MemoryContext plan_cache_context; /* memory context used for plan cache */ + +/* + * Callback called on start of exec_simple_query. + * Clear current_plan_entry which can be set + * exec_cached_query to the current plan entry if this query is executed + * less or equal than autoprepare_threshold times. + */ +static void begin_exec_simple(void) +{ + current_plan_entry = NULL; +} + +/* + * Callback called on end of exec_simple_query. + * Collect time of simple (non-prepared) query execution to compare it with + * time of prepared query execution. + */ +static void end_exec_simple(void) +{ + plan_cache_entry* entry = current_plan_entry; + if (entry != NULL && entry->exec_count <= autoprepare_threshold) + { + long secs; + int usecs; + uint64 elapsed; + TimestampDifference(exec_start_timestamp, + GetCurrentTimestamp(), + &secs, &usecs); + elapsed = secs * USECS_PER_SEC + usecs; + entry->non_prepared_time_sum += elapsed; + entry->non_prepared_time_sum2 += elapsed*elapsed; + } +} + + +/* + * Check if expression is constant (used to eliminate substitution of literals with parameters in such expressions + */ +static bool is_constant_expression(Node* node) +{ + return node != NULL + && (IsA(node, A_Const) + || (IsA(node, A_Expr) + && is_constant_expression(((A_Expr*)node)->lexpr) + && is_constant_expression(((A_Expr*)node)->rexpr))); +} + +/* + * Infer type of literal expression. Null literals should not be replaced with parameters. + */ +static Oid get_literal_type(Value* val) +{ + int64 val64; + switch (val->type) + { + case T_Integer: + return INT4OID; + case T_Float: + /* could be an oversize integer as well as a float ... */ + if (scanint8(strVal(val), true, &val64)) + { + /* + * It might actually fit in int32. Probably only INT_MIN can + * occur, but we'll code the test generally just to be sure. + */ + int32 val32 = (int32) val64; + return (val64 == (int64)val32) ? INT4OID : INT8OID; + } + else + { + return NUMERICOID; + } + case T_BitString: + return BITOID; + case T_String: + return UNKNOWNOID; + default: + Assert(false); + return InvalidOid; + } +} + +static Datum get_param_value(Oid type, Value* val) +{ + if (val->type == T_Integer && type == INT4OID) + { + /* + * Integer constant + */ + return Int32GetDatum((int32)val->val.ival); + } + else + { + /* + * Convert from string literal + */ + Oid typinput; + Oid typioparam; + + getTypeInputInfo(type, &typinput, &typioparam); + return OidInputFunctionCall(typinput, val->val.str, typioparam, -1); + } +} + + +/* + * Callback for raw_expression_tree_mutator performing substitution of literals with parameters + */ +static bool +raw_parse_tree_generalizer(Node** ref, void *context) +{ + Node* node = *ref; + GeneralizerCtx* ctx = (GeneralizerCtx*)context; + if (node == NULL) + { + return false; + } + /* + * Calculate hash for parse tree. We consider only node tags here, precise comparison of trees is done using equal() function. + * Here we calculate hash for original (unpatched) tree, without ParamRef nodes. + * It is non principle, because hash calculation doesn't take in account types and values of Const nodes. So the same generalized queries + * will have the same hash value. There are about 1000 different nodes tags, this is why we rotate hash on 10 bits. + */ + ctx->hash = (ctx->hash << 10) ^ (ctx->hash >> 22) ^ nodeTag(node); + + switch (nodeTag(node)) + { + case T_A_Expr: + { + /* + * Do not perform substitution of literals in constant expression (which is likely to be the same for all queries and optimized by compiler) + */ + if (!is_constant_expression(node)) + { + A_Expr *expr = (A_Expr *) node; + if (raw_parse_tree_generalizer((Node**)&expr->lexpr, context)) + return true; + if (raw_parse_tree_generalizer((Node**)&expr->rexpr, context)) + return true; + } + break; + } + case T_A_Const: + { + /* + * Do substitution of literals with parameters here + */ + A_Const* literal = (A_Const*)node; + if (literal->val.type != T_Null) + { + /* + * Do not substitute null literals with parameters + */ + ParamBinding* cp = palloc0(sizeof(ParamBinding)); + ParamRef* param = makeNode(ParamRef); + param->number = ++ctx->n_params; + param->location = literal->location; + cp->ref = ref; + cp->paramref = param; + cp->literal = literal; + cp->raw_type = get_literal_type(&literal->val); + *ctx->param_list_tail = cp; + ctx->param_list_tail = &cp->next; + *ref = (Node*)param; + } + break; + } + case T_SelectStmt: + { + /* + * Substitute literals only in target list, WHERE, VALUES and WITH clause, + * skipping target and from lists, which is unlikely contains some parameterized values + */ + SelectStmt *stmt = (SelectStmt *) node; + if (stmt->intoClause) + return true; /* Utility statement can not be prepared */ + if (raw_parse_tree_generalizer((Node**)&stmt->targetList, context)) + return true; + if (raw_parse_tree_generalizer((Node**)&stmt->whereClause, context)) + return true; + if (raw_parse_tree_generalizer((Node**)&stmt->valuesLists, context)) + return true; + if (raw_parse_tree_generalizer((Node**)&stmt->withClause, context)) + return true; + if (raw_parse_tree_generalizer((Node**)&stmt->larg, context)) + return true; + if (raw_parse_tree_generalizer((Node**)&stmt->rarg, context)) + return true; + break; + } + case T_TypeName: + case T_SortGroupClause: + case T_SortBy: + case T_A_ArrayExpr: + case T_TypeCast: + /* + * Literals in this clauses should not be replaced with parameters + */ + break; + default: + /* + * Default traversal. raw_expression_tree_mutator returns true for all not recognized nodes, for example right now + * all transaction control statements are not covered by raw_expression_tree_mutator and so will not auto prepared. + * My experiments show that effect of non-preparing start/commit transaction statements is positive. + */ + return raw_expression_tree_mutator(node, raw_parse_tree_generalizer, context); + } + return false; +} + +static Node* +parse_tree_generalizer(Node *node, void *context) +{ + ParamBinding* binding; + ParamBinding* binding_list = (ParamBinding*)context; + if (node == NULL) + { + return NULL; + } + if (IsA(node, Query)) + { + return (Node*)query_tree_mutator((Query*)node, + parse_tree_generalizer, + context, + QTW_DONT_COPY_QUERY); + } + if (IsA(node, Const)) + { + Const* c = (Const*)node; + int paramno = 1; + for (binding = binding_list; binding != NULL && binding->literal->location != c->location; binding = binding->next, paramno++); + if (binding != NULL) + { + if (binding->param != NULL) + { + /* Parameter can be used only once */ + binding->type = UNKNOWNOID; + //return (Node*)binding->param; + } + else + { + Param* param = makeNode(Param); + param->paramkind = PARAM_EXTERN; + param->paramid = paramno; + param->paramtype = c->consttype; + param->paramtypmod = c->consttypmod; + param->paramcollid = c->constcollid; + param->location = c->location; + binding->type = c->consttype; + binding->param = param; + return (Node*)param; + } + } + return node; + } + return expression_tree_mutator(node, parse_tree_generalizer, context); +} + +/* + * Restore original parse tree, replacing all ParamRef back with Const nodes. + * Such undo operation seems to be more efficient than copying the whole parse tree by raw_expression_tree_mutator + */ +static void undo_query_plan_changes(ParamBinding* cp) +{ + while (cp != NULL) { + *cp->ref = (Node*)cp->literal; + cp = cp->next; + } +} + +/* + * Callback for raw_expression_tree_walker dropping parse tree + */ +static bool drop_tree_node(Node* node, void* context) +{ + if (node) { + raw_expression_tree_walker(node, drop_tree_node, NULL); + pfree(node); + } + return false; +} + +/* + * Location of converted literal in query. + * Used for precise error reporting (line number) + */ +static int param_location; + +/* + * Error callback adding information about error location + */ +static void +prepare_error_callback(void *arg) +{ + CachedPlanSource *psrc = (CachedPlanSource*)arg; + /* And pass it to the ereport mechanism */ + if (geterrcode() != ERRCODE_QUERY_CANCELED) { + int pos = pg_mbstrlen_with_len(psrc->query_string, param_location) + 1; + (void)errposition(pos); + } +} +/* + * Try to generalize query, find cached plan for it and execute + */ +static bool exec_cached_query(const char *query_string, List *parsetree_list) +{ + int n_params; + plan_cache_entry *entry; + bool found; + MemoryContext old_context; + CachedPlanSource *psrc; + ParamListInfo params; + int paramno; + CachedPlan *cplan; + Portal portal; + bool snapshot_set = false; + GeneralizerCtx ctx; + ParamBinding* binding; + ParamBinding* binding_list; + plan_cache_entry pattern; + Oid* param_types; + Node *raw_parse_tree; + + raw_parse_tree = linitial(parsetree_list); + + /* + * Substitute literals with parameters and calculate hash for raw parse tree + */ + ctx.param_list_tail = &binding_list; + ctx.n_params = 0; + ctx.hash = 0; + if (raw_parse_tree_generalizer(&raw_parse_tree, &ctx)) + { + *ctx.param_list_tail = NULL; + undo_query_plan_changes(binding_list); + autoprepare_misses += 1; + return false; + } + *ctx.param_list_tail = NULL; + n_params = ctx.n_params; + + /* + * Extract array of parameters types: it is needed for cached plan lookup + */ + param_types = (Oid*)palloc(sizeof(Oid)*n_params); + for (paramno = 0, binding = binding_list; paramno < n_params; paramno++, binding = binding->next) + { + param_types[paramno] = binding->raw_type; + } + + /* + * Construct plan cache context if not constructed yet. + */ + if (plan_cache_context == NULL) + { + plan_cache_context = AllocSetContextCreate(TopMemoryContext, + "plan cache context", + ALLOCSET_DEFAULT_SIZES); + } + /* Manipulations with hash table are performed in plan_cache_context memory context */ + old_context = MemoryContextSwitchTo(plan_cache_context); + + /* + * Initialize hash table if not initialized yet + */ + if (plan_cache_hash == NULL) + { + static HASHCTL info; + info.keysize = sizeof(plan_cache_entry); + info.entrysize = sizeof(plan_cache_entry); + info.hash = plan_cache_hash_fn; + info.match = plan_cache_match_fn; + info.keycopy = plan_cache_keycopy_fn; + plan_cache_hash = hash_create("plan_cache", autoprepare_limit != 0 ? autoprepare_limit : PLAN_CACHE_SIZE, + &info, HASH_ELEM | HASH_FUNCTION | HASH_COMPARE | HASH_KEYCOPY); + dlist_init(&plan_cache_lru); + } + + /* + * Lookup generalized query + */ + pattern.parse_tree = raw_parse_tree; + pattern.hash = ctx.hash; + pattern.n_params = n_params; + pattern.param_types = param_types; + entry = (plan_cache_entry*)hash_search(plan_cache_hash, &pattern, HASH_ENTER, &found); + if (!found) + { + /* Check number of cached queries */ + if (++autoprepare_cached_plans > autoprepare_limit && autoprepare_limit != 0) + { + /* Drop least recently accessed query */ + plan_cache_entry* victim = dlist_container(plan_cache_entry, lru, plan_cache_lru.head.prev); + Node* dropped_tree = victim->parse_tree; + dlist_delete(&victim->lru); + if (victim->plan) + { + DropCachedPlan(victim->plan); + } + pfree(victim->param_types); + hash_search(plan_cache_hash, victim, HASH_REMOVE, NULL); + raw_expression_tree_walker(dropped_tree, drop_tree_node, NULL); + autoprepare_cached_plans -= 1; + } + entry->exec_count = 0; + entry->prepared_time_sum = 0; + entry->non_prepared_time_sum = 0; + entry->prepared_time_sum2 = 0; + entry->non_prepared_time_sum2 = 0; + entry->plan = NULL; + entry->disable_autoprepare = false; + } + else + { + dlist_delete(&entry->lru); /* accessed entry will be moved to the head of LRU list */ + if (entry->plan != NULL && !entry->plan->is_valid) + { + /* Drop invalidated plan: it will be reconstructed later */ + DropCachedPlan(entry->plan); + entry->plan = NULL; + } + } + dlist_insert_after(&plan_cache_lru.head, &entry->lru); /* prepend entry to the head of LRU list */ + MemoryContextSwitchTo(old_context); /* Done with plan_cache_context memory context */ + + + /* + * Prepare query only when it is executed more than autoprepare_threshold times + */ + if (entry->disable_autoprepare || entry->exec_count++ < autoprepare_threshold) + { + undo_query_plan_changes(binding_list); + autoprepare_misses += 1; + + if (!entry->disable_autoprepare) + { + /* + * Store timestamp to calculate average execution time for non-prepared query. + * We collect statistic about autoprepare_threshold exec_simple_query runs. + */ + exec_start_timestamp = GetCurrentTimestamp(); + current_plan_entry = entry; + } + return false; + } + else if (entry->exec_count <= autoprepare_threshold*2) + { + /* + * Measure time of prepared query execution + * if prepared query is executed less or equal than autoprepare_threshold times. + */ + exec_start_timestamp = GetCurrentTimestamp(); + } + + if (entry->plan == NULL) + { + bool snapshot_set = false; + const char *commandTag; + List *querytree_list; + + /* + * Switch to appropriate context for preparing plan. + */ + old_context = MemoryContextSwitchTo(MessageContext); + + /* + * Get the command name for use in status display (it also becomes the + * default completion tag, down inside PortalRun). Set ps_status and + * do any special start-of-SQL-command processing needed by the + * destination. + */ + commandTag = CreateCommandTag(raw_parse_tree); + + /* + * If we are in an aborted transaction, reject all commands except + * COMMIT/ABORT. It is important that this test occur before we try + * to do parse analysis, rewrite, or planning, since all those phases + * try to do database accesses, which may fail in abort state. (It + * might be safe to allow some additional utility commands in this + * state, but not many...) + */ + if (IsAbortedTransactionBlockState() && + !IsTransactionExitStmt(raw_parse_tree)) + ereport(ERROR, + (errcode(ERRCODE_IN_FAILED_SQL_TRANSACTION), + errmsg("current transaction is aborted, " + "commands ignored until end of transaction block"), + errdetail_abort())); + + /* + * Create the CachedPlanSource before we do parse analysis, since it + * needs to see the unmodified raw parse tree. + */ + psrc = CreateCachedPlan(raw_parse_tree, query_string, commandTag); + + /* + * Revert raw plan to use literals + */ + undo_query_plan_changes(binding_list); + + /* + * Set up a snapshot if parse analysis/planning will need one. + */ + if (analyze_requires_snapshot(raw_parse_tree)) + { + PushActiveSnapshot(GetTransactionSnapshot()); + snapshot_set = true; + } + + querytree_list = pg_analyze_and_rewrite(raw_parse_tree, query_string, + NULL, 0); + /* + * Replace Const with Param nodes + */ + (void)query_tree_mutator((Query*)linitial(querytree_list), + parse_tree_generalizer, + binding_list, + QTW_DONT_COPY_QUERY); + + /* Done with the snapshot used for parsing/planning */ + if (snapshot_set) + PopActiveSnapshot(); + + param_types = (Oid*)palloc(sizeof(Oid)*n_params); + psrc->param_types = param_types; + for (paramno = 0, binding = binding_list; paramno < n_params; paramno++, binding = binding->next) + { + if (binding->param == NULL || binding->type == UNKNOWNOID) + { + /* Failed to resolve parameter type */ + entry->disable_autoprepare = true; + autoprepare_misses += 1; + MemoryContextSwitchTo(old_context); + return false; + } + param_types[paramno] = binding->type; + } + + /* Finish filling in the CachedPlanSource */ + CompleteCachedPlan(psrc, + querytree_list, + NULL, + param_types, + n_params, + NULL, + NULL, + CURSOR_OPT_PARALLEL_OK, /* allow parallel mode */ + true); /* fixed result */ + + /* If we got a cancel signal during analysis, quit */ + CHECK_FOR_INTERRUPTS(); + + SaveCachedPlan(psrc); + + /* + * We do NOT close the open transaction command here; that only happens + * when the client sends Sync. Instead, do CommandCounterIncrement just + * in case something happened during parse/plan. + */ + CommandCounterIncrement(); + + MemoryContextSwitchTo(old_context); /* Done with MessageContext memory context */ + + entry->plan = psrc; + + /* + * Determine output format + */ + entry->format = 0; /* TEXT is default */ + if (IsA(raw_parse_tree, FetchStmt)) + { + FetchStmt *stmt = (FetchStmt *)raw_parse_tree; + + if (!stmt->ismove) + { + Portal fportal = GetPortalByName(stmt->portalname); + + if (PortalIsValid(fportal) && + (fportal->cursorOptions & CURSOR_OPT_BINARY)) + entry->format = 1; /* BINARY */ + } + } + } + else + { + /* Plan found */ + psrc = entry->plan; + Assert(n_params == entry->n_params); + } + + /* + * If we are in aborted transaction state, the only portals we can + * actually run are those containing COMMIT or ROLLBACK commands. We + * disallow binding anything else to avoid problems with infrastructure + * that expects to run inside a valid transaction. We also disallow + * binding any parameters, since we can't risk calling user-defined I/O + * functions. + */ + if (IsAbortedTransactionBlockState() && + (!IsTransactionExitStmt(psrc->raw_parse_tree) || + n_params != 0)) + ereport(ERROR, + (errcode(ERRCODE_IN_FAILED_SQL_TRANSACTION), + errmsg("current transaction is aborted, " + "commands ignored until end of transaction block"), + errdetail_abort())); + + /* + * Create unnamed portal to run the query or queries in. If there + * already is one, silently drop it. + */ + portal = CreatePortal("", true, true); + /* Don't display the portal in pg_cursors */ + portal->visible = false; + + /* + * Prepare to copy stuff into the portal's memory context. We do all this + * copying first, because it could possibly fail (out-of-memory) and we + * don't want a failure to occur between GetCachedPlan and + * PortalDefineQuery; that would result in leaking our plancache refcount. + */ + old_context = MemoryContextSwitchTo(PortalGetHeapMemory(portal)); + + /* Copy the plan's query string into the portal */ + query_string = pstrdup(psrc->query_string); + + /* + * Set a snapshot if we have parameters to fetch (since the input + * functions might need it) or the query isn't a utility command (and + * hence could require redoing parse analysis and planning). We keep the + * snapshot active till we're done, so that plancache.c doesn't have to + * take new ones. + */ + if (n_params > 0 || + (psrc->raw_parse_tree && + analyze_requires_snapshot(psrc->raw_parse_tree))) + { + PushActiveSnapshot(GetTransactionSnapshot()); + snapshot_set = true; + } + + /* + * Fetch parameters, if any, and store in the portal's memory context. + */ + if (n_params > 0) + { + ErrorContextCallback errcallback; + + params = (ParamListInfo) palloc0(offsetof(ParamListInfoData, params) + + n_params * sizeof(ParamExternData)); + params->numParams = n_params; + + /* + * Register error callback to precisely report error in case of conversion error while storig parameter value. + */ + errcallback.callback = prepare_error_callback; + errcallback.arg = (void *) psrc; + errcallback.previous = error_context_stack; + error_context_stack = &errcallback; + + for (paramno = 0, binding = binding_list; + paramno < n_params; + paramno++, binding = binding->next) + { + Oid ptype = psrc->param_types[paramno]; + + param_location = binding->literal->location; + + params->params[paramno].isnull = false; + params->params[paramno].value = get_param_value(ptype, &binding->literal->val); + /* + * We mark the params as CONST. This ensures that any custom plan + * makes full use of the parameter values. + */ + params->params[paramno].pflags = PARAM_FLAG_CONST; + params->params[paramno].ptype = ptype; + } + error_context_stack = errcallback.previous; + } + else + { + params = NULL; + } + + /* Done storing stuff in portal's context */ + MemoryContextSwitchTo(old_context); + + /* + * Obtain a plan from the CachedPlanSource. Any cruft from (re)planning + * will be generated in MessageContext. The plan refcount will be + * assigned to the Portal, so it will be released at portal destruction. + */ + cplan = GetCachedPlan(psrc, params, false); + + /* + * Now we can define the portal. + * + * DO NOT put any code that could possibly throw an error between the + * above GetCachedPlan call and here. + */ + PortalDefineQuery(portal, + NULL, + query_string, + psrc->commandTag, + cplan->stmt_list, + cplan); + + /* Done with the snapshot used for parameter I/O and parsing/planning */ + if (snapshot_set) + { + PopActiveSnapshot(); + } + + /* + * And we're ready to start portal execution. + */ + PortalStart(portal, params, 0, InvalidSnapshot); + + /* + * Apply the result format requests to the portal. + */ + PortalSetResultFormat(portal, 1, &entry->format); + + /* + * Finally execute prepared statement + */ + exec_prepared_plan(portal, "", FETCH_ALL, whereToSendOutput); + + /* Collect statistic about time of prepared query execution during autoprepare_threshold runs */ + if (entry->exec_count <= autoprepare_threshold*2) + { + /* Calculate average time of execution of prepared query */ + long secs; + int usecs; + uint64 elapsed; + TimestampDifference(exec_start_timestamp, + GetCurrentTimestamp(), + &secs, &usecs); + elapsed = secs * USECS_PER_SEC + usecs; + entry->prepared_time_sum += elapsed; + entry->prepared_time_sum2 += elapsed*elapsed; + + if (entry->exec_count == autoprepare_threshold*2) + { + /* Now we can compare average times of prepared and non-prepared queries execution */ + int n = autoprepare_threshold; + double prepared_time_deviation = sqrt((entry->prepared_time_sum2 - (double)entry->prepared_time_sum*entry->prepared_time_sum/n)/n); + double non_prepared_time_deviation = sqrt((entry->non_prepared_time_sum2 - (double)entry->non_prepared_time_sum*entry->non_prepared_time_sum/n)/n); + if (entry->prepared_time_sum - prepared_time_deviation*n > entry->non_prepared_time_sum + non_prepared_time_deviation*n) + { + /* + * Disable autoprepare if average time of execution of prepared query + * is worser than of non-prepared query + */ + entry->disable_autoprepare = true; + elog(LOG, "Disable autoprepared plan for %s (generic cost=%lg, avg custom cost=%lg, avg=%lg, dev=%lg) because its worser than non-prepared plan (avg=%lg, dev=%lg)", + query_string, + psrc->generic_cost, psrc->num_custom_plans != 0 ? psrc->total_custom_cost/psrc->num_custom_plans : 0, + (double)entry->prepared_time_sum/n, prepared_time_deviation, + (double)entry->non_prepared_time_sum/n, non_prepared_time_deviation); + } + } + } + + /* + * Close down transaction statement, if one is open. + */ + finish_xact_command(); + + autoprepare_hits += 1; + + return true; +} + + +void ResetAutoprepareCache(void) +{ + if (plan_cache_hash != NULL) + { + hash_destroy(plan_cache_hash); + MemoryContextReset(plan_cache_context); + dlist_init(&plan_cache_lru); + autoprepare_cached_plans = 0; + plan_cache_hash = 0; + } +} diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index 643fdb6479..cb73f11bdf 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -1467,7 +1467,13 @@ ProcessUtilitySlow(Node *parsetree, break; case T_AlterTSConfigurationStmt: - address = AlterTSConfiguration((AlterTSConfigurationStmt *) parsetree); + AlterTSConfiguration((AlterTSConfigurationStmt *) parsetree); + /* + * Commands are stashed in MakeConfigurationMapping and + * DropConfigurationMapping, which are called from + * AlterTSConfiguration + */ + commandCollected = true; break; case T_AlterTableMoveAllStmt: @@ -2858,6 +2864,10 @@ GetCommandLogLevel(Node *parsetree) lev = LOGSTMT_DDL; break; + case T_AlterOperatorStmt: + lev = LOGSTMT_DDL; + break; + case T_AlterTableMoveAllStmt: case T_AlterTableStmt: lev = LOGSTMT_DDL; diff --git a/src/backend/tsearch/spell.c b/src/backend/tsearch/spell.c index 9c7ba85eb5..0274883b5a 100644 --- a/src/backend/tsearch/spell.c +++ b/src/backend/tsearch/spell.c @@ -37,7 +37,7 @@ * Spell field. The AffixData field is initialized if AF parameter is not * defined. * - NISortAffixes(): - * - builds a list of compond affixes from the affix list and stores it + * - builds a list of compound affixes from the affix list and stores it * in the CompoundAffix. * - builds prefix trees (Trie) from the affix list for prefixes and suffixes * and stores them in Suffix and Prefix fields. diff --git a/src/backend/tsearch/ts_parse.c b/src/backend/tsearch/ts_parse.c index f0e4269e84..6c034b28a0 100644 --- a/src/backend/tsearch/ts_parse.c +++ b/src/backend/tsearch/ts_parse.c @@ -179,7 +179,7 @@ LexizeExec(LexizeData *ld, ParsedLex **correspondLexem) if (ld->curDictId == InvalidOid) { /* - * usial mode: dictionary wants only one word, but we should keep in + * usual mode: dictionary wants only one word, but we should keep in * mind that we should go through all stack */ @@ -272,7 +272,7 @@ LexizeExec(LexizeData *ld, ParsedLex **correspondLexem) /* * We should be sure that current type of lexeme is recognized - * by our dictinonary: we just check is it exist in list of + * by our dictionary: we just check is it exist in list of * dictionaries ? */ for (i = 0; i < map->len && !dictExists; i++) @@ -627,7 +627,7 @@ generateHeadline(HeadlineParsedText *prs) /* start of a new fragment */ infrag = 1; numfragments++; - /* add a fragment delimitor if this is after the first one */ + /* add a fragment delimiter if this is after the first one */ if (numfragments > 1) { memcpy(ptr, prs->fragdelim, prs->fragdelimlen); diff --git a/src/backend/tsearch/ts_typanalyze.c b/src/backend/tsearch/ts_typanalyze.c index 817453ce01..fd89ea0eac 100644 --- a/src/backend/tsearch/ts_typanalyze.c +++ b/src/backend/tsearch/ts_typanalyze.c @@ -232,9 +232,7 @@ compute_tsvector_stats(VacAttrStats *stats, /* * We loop through the lexemes in the tsvector and add them to our - * tracking hashtable. Note: the hashtable entries will point into - * the (detoasted) tsvector value, therefore we cannot free that - * storage until we're done. + * tracking hashtable. */ lexemesptr = STRPTR(vector); curentryptr = ARRPTR(vector); @@ -242,7 +240,12 @@ compute_tsvector_stats(VacAttrStats *stats, { bool found; - /* Construct a hash key */ + /* + * Construct a hash key. The key points into the (detoasted) + * tsvector value at this point, but if a new entry is created, we + * make a copy of it. This way we can free the tsvector value + * once we've processed all its lexemes. + */ hash_key.lexeme = lexemesptr + curentryptr->pos; hash_key.length = curentryptr->len; @@ -261,6 +264,9 @@ compute_tsvector_stats(VacAttrStats *stats, /* Initialize new tracking list element */ item->frequency = 1; item->delta = b_current - 1; + + item->key.lexeme = palloc(hash_key.length); + memcpy(item->key.lexeme, hash_key.lexeme, hash_key.length); } /* lexeme_no is the number of elements processed (ie N) */ @@ -276,6 +282,10 @@ compute_tsvector_stats(VacAttrStats *stats, /* Advance to the next WordEntry in the tsvector */ curentryptr++; } + + /* If the vector was toasted, free the detoasted copy. */ + if (TSVectorGetDatum(vector) != value) + pfree(vector); } /* We can only compute real stats if we found some non-null values. */ @@ -447,9 +457,12 @@ prune_lexemes_hashtable(HTAB *lexemes_tab, int b_current) { if (item->frequency + item->delta <= b_current) { + char *lexeme = item->key.lexeme; + if (hash_search(lexemes_tab, (const void *) &item->key, HASH_REMOVE, NULL) == NULL) elog(ERROR, "hash table corrupted"); + pfree(lexeme); } } } diff --git a/src/backend/tsearch/wparser_def.c b/src/backend/tsearch/wparser_def.c index ac1c4d2316..bf9a04a79c 100644 --- a/src/backend/tsearch/wparser_def.c +++ b/src/backend/tsearch/wparser_def.c @@ -2123,7 +2123,7 @@ hlCover(HeadlineParsedText *prs, TSQuery query, int *p, int *q) ch.words = &(prs->words[*p]); ch.len = *q - *p + 1; - if (TS_execute(GETQUERY(query), &ch, false, checkcondition_HL)) + if (TS_execute(GETQUERY(query), &ch, TS_EXEC_EMPTY, checkcondition_HL)) return true; else { @@ -2445,7 +2445,7 @@ mark_hl_words(HeadlineParsedText *prs, TSQuery query, int highlight, break; } if (curlen < min_words && i >= prs->curwords) - { /* got end of text and our cover is shoter + { /* got end of text and our cover is shorter * than min_words */ for (i = p - 1; i >= 0; i--) { diff --git a/src/backend/utils/adt/array_selfuncs.c b/src/backend/utils/adt/array_selfuncs.c index dd44d57e20..a306477397 100644 --- a/src/backend/utils/adt/array_selfuncs.c +++ b/src/backend/utils/adt/array_selfuncs.c @@ -132,7 +132,8 @@ scalararraysel_containment(PlannerInfo *root, useOr = !useOr; /* Get array element stats for var, if available */ - if (HeapTupleIsValid(vardata.statsTuple)) + if (HeapTupleIsValid(vardata.statsTuple) && + statistic_proc_security_check(&vardata, cmpfunc->fn_oid)) { Form_pg_statistic stats; Datum *values; @@ -363,7 +364,8 @@ calc_arraycontsel(VariableStatData *vardata, Datum constval, */ array = DatumGetArrayTypeP(constval); - if (HeapTupleIsValid(vardata->statsTuple)) + if (HeapTupleIsValid(vardata->statsTuple) && + statistic_proc_security_check(vardata, cmpfunc->fn_oid)) { Form_pg_statistic stats; Datum *values; diff --git a/src/backend/utils/adt/array_userfuncs.c b/src/backend/utils/adt/array_userfuncs.c index 1ef15008bb..9eb678add4 100644 --- a/src/backend/utils/adt/array_userfuncs.c +++ b/src/backend/utils/adt/array_userfuncs.c @@ -32,6 +32,10 @@ static Datum array_position_common(FunctionCallInfo fcinfo); * Caution: if the input is a read/write pointer, this returns the input * argument; so callers must be sure that their changes are "safe", that is * they cannot leave the array in a corrupt state. + * + * If we're being called as an aggregate function, make sure any newly-made + * expanded array is allocated in the aggregate state context, so as to save + * copying operations. */ static ExpandedArrayHeader * fetch_array_arg_replace_nulls(FunctionCallInfo fcinfo, int argno) @@ -39,6 +43,7 @@ fetch_array_arg_replace_nulls(FunctionCallInfo fcinfo, int argno) ExpandedArrayHeader *eah; Oid element_type; ArrayMetaState *my_extra; + MemoryContext resultcxt; /* If first time through, create datatype cache struct */ my_extra = (ArrayMetaState *) fcinfo->flinfo->fn_extra; @@ -51,10 +56,17 @@ fetch_array_arg_replace_nulls(FunctionCallInfo fcinfo, int argno) fcinfo->flinfo->fn_extra = my_extra; } + /* Figure out which context we want the result in */ + if (!AggCheckCallContext(fcinfo, &resultcxt)) + resultcxt = CurrentMemoryContext; + /* Now collect the array value */ if (!PG_ARGISNULL(argno)) { + MemoryContext oldcxt = MemoryContextSwitchTo(resultcxt); + eah = PG_GETARG_EXPANDED_ARRAYX(argno, my_extra); + MemoryContextSwitchTo(oldcxt); } else { @@ -72,7 +84,7 @@ fetch_array_arg_replace_nulls(FunctionCallInfo fcinfo, int argno) errmsg("input data type is not an array"))); eah = construct_empty_expanded_array(element_type, - CurrentMemoryContext, + resultcxt, my_extra); } @@ -783,7 +795,8 @@ array_position_common(FunctionCallInfo fcinfo) format_type_be(element_type)))); my_extra->element_type = element_type; - fmgr_info(typentry->eq_opr_finfo.fn_oid, &my_extra->proc); + fmgr_info_cxt(typentry->eq_opr_finfo.fn_oid, &my_extra->proc, + fcinfo->flinfo->fn_mcxt); } /* Examine each array element until we find a match. */ @@ -921,7 +934,8 @@ array_positions(PG_FUNCTION_ARGS) format_type_be(element_type)))); my_extra->element_type = element_type; - fmgr_info(typentry->eq_opr_finfo.fn_oid, &my_extra->proc); + fmgr_info_cxt(typentry->eq_opr_finfo.fn_oid, &my_extra->proc, + fcinfo->flinfo->fn_mcxt); } /* diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c index 1db7bf0a35..5b2ca61c78 100644 --- a/src/backend/utils/adt/arrayfuncs.c +++ b/src/backend/utils/adt/arrayfuncs.c @@ -5734,25 +5734,19 @@ array_fill_internal(ArrayType *dims, ArrayType *lbs, /* * Params checks */ - if (ARR_NDIM(dims) != 1) + if (ARR_NDIM(dims) > 1) ereport(ERROR, (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR), errmsg("wrong number of array subscripts"), errdetail("Dimension array must be one dimensional."))); - if (ARR_LBOUND(dims)[0] != 1) - ereport(ERROR, - (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR), - errmsg("wrong range of array subscripts"), - errdetail("Lower bound of dimension array must be one."))); - if (array_contains_nulls(dims)) ereport(ERROR, (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), errmsg("dimension values cannot be null"))); dimv = (int *) ARR_DATA_PTR(dims); - ndims = ARR_DIMS(dims)[0]; + ndims = (ARR_NDIM(dims) > 0) ? ARR_DIMS(dims)[0] : 0; if (ndims < 0) /* we do allow zero-dimension arrays */ ereport(ERROR, @@ -5766,24 +5760,18 @@ array_fill_internal(ArrayType *dims, ArrayType *lbs, if (lbs != NULL) { - if (ARR_NDIM(lbs) != 1) + if (ARR_NDIM(lbs) > 1) ereport(ERROR, (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR), errmsg("wrong number of array subscripts"), errdetail("Dimension array must be one dimensional."))); - if (ARR_LBOUND(lbs)[0] != 1) - ereport(ERROR, - (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR), - errmsg("wrong range of array subscripts"), - errdetail("Lower bound of dimension array must be one."))); - if (array_contains_nulls(lbs)) ereport(ERROR, (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), errmsg("dimension values cannot be null"))); - if (ARR_DIMS(lbs)[0] != ndims) + if (ndims != ((ARR_NDIM(lbs) > 0) ? ARR_DIMS(lbs)[0] : 0)) ereport(ERROR, (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR), errmsg("wrong number of array subscripts"), @@ -5801,12 +5789,12 @@ array_fill_internal(ArrayType *dims, ArrayType *lbs, lbsv = deflbs; } + nitems = ArrayGetNItems(ndims, dimv); + /* fast track for empty array */ - if (ndims == 0) + if (nitems <= 0) return construct_empty_array(elmtype); - nitems = ArrayGetNItems(ndims, dimv); - /* * We arrange to look up info about element type only once per series of * calls, assuming the element type doesn't change underneath us. diff --git a/src/backend/utils/adt/cash.c b/src/backend/utils/adt/cash.c index b336185df7..d329efaa9a 100644 --- a/src/backend/utils/adt/cash.c +++ b/src/backend/utils/adt/cash.c @@ -621,7 +621,7 @@ cash_mul_flt8(PG_FUNCTION_ARGS) float8 f = PG_GETARG_FLOAT8(1); Cash result; - result = c * f; + result = rint(c * f); PG_RETURN_CASH(result); } @@ -636,7 +636,7 @@ flt8_mul_cash(PG_FUNCTION_ARGS) Cash c = PG_GETARG_CASH(1); Cash result; - result = f * c; + result = rint(f * c); PG_RETURN_CASH(result); } @@ -671,7 +671,7 @@ cash_mul_flt4(PG_FUNCTION_ARGS) float4 f = PG_GETARG_FLOAT4(1); Cash result; - result = c * f; + result = rint(c * (float8) f); PG_RETURN_CASH(result); } @@ -686,7 +686,7 @@ flt4_mul_cash(PG_FUNCTION_ARGS) Cash c = PG_GETARG_CASH(1); Cash result; - result = f * c; + result = rint((float8) f * c); PG_RETURN_CASH(result); } @@ -707,7 +707,7 @@ cash_div_flt4(PG_FUNCTION_ARGS) (errcode(ERRCODE_DIVISION_BY_ZERO), errmsg("division by zero"))); - result = rint(c / f); + result = rint(c / (float8) f); PG_RETURN_CASH(result); } @@ -756,7 +756,7 @@ cash_div_int8(PG_FUNCTION_ARGS) (errcode(ERRCODE_DIVISION_BY_ZERO), errmsg("division by zero"))); - result = rint(c / i); + result = c / i; PG_RETURN_CASH(result); } @@ -808,7 +808,7 @@ cash_div_int4(PG_FUNCTION_ARGS) (errcode(ERRCODE_DIVISION_BY_ZERO), errmsg("division by zero"))); - result = rint(c / i); + result = c / i; PG_RETURN_CASH(result); } @@ -858,7 +858,7 @@ cash_div_int2(PG_FUNCTION_ARGS) (errcode(ERRCODE_DIVISION_BY_ZERO), errmsg("division by zero"))); - result = rint(c / s); + result = c / s; PG_RETURN_CASH(result); } diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 45ba7cd906..6d7fdc3c5e 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -4957,8 +4957,17 @@ pg_timezone_names(PG_FUNCTION_ARGS) &tzoff, &tm, &fsec, &tzn, tz) != 0) continue; /* ignore if conversion fails */ - /* Ignore zic's rather silly "Factory" time zone */ - if (tzn && strcmp(tzn, "Local time zone must be set--see zic manual page") == 0) + /* + * Ignore zic's rather silly "Factory" time zone. The long string + * about "see zic manual page" is used in tzdata versions before + * 2016g; we can drop it someday when we're pretty sure no such data + * exists in the wild on platforms using --with-system-tzdata. In + * 2016g and later, the time zone abbreviation "-00" is used for + * "Factory" as well as some invalid cases, all of which we can + * reasonably omit from the pg_timezone_names view. + */ + if (tzn && (strcmp(tzn, "-00") == 0 || + strcmp(tzn, "Local time zone must be set--see zic manual page") == 0)) continue; /* Found a displayable zone */ diff --git a/src/backend/utils/adt/datum.c b/src/backend/utils/adt/datum.c index c6c296b960..d02e3c8110 100644 --- a/src/backend/utils/adt/datum.c +++ b/src/backend/utils/adt/datum.c @@ -264,11 +264,11 @@ datumEstimateSpace(Datum value, bool isnull, bool typByVal, int typLen) /* no need to use add_size, can't overflow */ if (typByVal) sz += sizeof(Datum); - else if (VARATT_IS_EXTERNAL_EXPANDED(value)) + else if (typLen == -1 && + VARATT_IS_EXTERNAL_EXPANDED(DatumGetPointer(value))) { - ExpandedObjectHeader *eoh = DatumGetEOHP(value); - - sz += EOH_get_flat_size(eoh); + /* Expanded objects need to be flattened, see comment below */ + sz += EOH_get_flat_size(DatumGetEOHP(value)); } else sz += datumGetSize(value, typByVal, typLen); @@ -282,6 +282,13 @@ datumEstimateSpace(Datum value, bool isnull, bool typByVal, int typLen) * * Serialize a possibly-NULL datum into caller-provided storage. * + * Note: "expanded" objects are flattened so as to produce a self-contained + * representation, but other sorts of toast pointers are transferred as-is. + * This is because the intended use of this function is to pass the value + * to another process within the same database server. The other process + * could not access an "expanded" object within this process's memory, but + * we assume it can dereference the same TOAST pointers this one can. + * * The format is as follows: first, we write a 4-byte header word, which * is either the length of a pass-by-reference datum, -1 for a * pass-by-value datum, or -2 for a NULL. If the value is NULL, nothing @@ -306,7 +313,8 @@ datumSerialize(Datum value, bool isnull, bool typByVal, int typLen, header = -2; else if (typByVal) header = -1; - else if (VARATT_IS_EXTERNAL_EXPANDED(value)) + else if (typLen == -1 && + VARATT_IS_EXTERNAL_EXPANDED(DatumGetPointer(value))) { eoh = DatumGetEOHP(value); header = EOH_get_flat_size(eoh); diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c index 3167bad92b..74cdbb0551 100644 --- a/src/backend/utils/adt/dbsize.c +++ b/src/backend/utils/adt/dbsize.c @@ -41,7 +41,7 @@ db_dir_size(const char *path) int64 dirsize = 0; struct dirent *direntry; DIR *dirdesc; - char filename[MAXPGPATH]; + char filename[MAXPGPATH * 2]; dirdesc = AllocateDir(path); @@ -58,7 +58,7 @@ db_dir_size(const char *path) strcmp(direntry->d_name, "..") == 0) continue; - snprintf(filename, MAXPGPATH, "%s/%s", path, direntry->d_name); + snprintf(filename, sizeof(filename), "%s/%s", path, direntry->d_name); if (stat(filename, &fst) < 0) { @@ -86,7 +86,7 @@ calculate_database_size(Oid dbOid) DIR *dirdesc; struct dirent *direntry; char dirpath[MAXPGPATH]; - char pathname[MAXPGPATH]; + char pathname[MAXPGPATH + 12 + sizeof(TABLESPACE_VERSION_DIRECTORY)]; AclResult aclresult; /* User must have connect privilege for target database */ @@ -98,7 +98,7 @@ calculate_database_size(Oid dbOid) /* Shared storage in pg_global is not counted */ /* Include pg_default storage */ - snprintf(pathname, MAXPGPATH, "base/%u", dbOid); + snprintf(pathname, sizeof(pathname), "base/%u", dbOid); totalsize = db_dir_size(pathname); /* Scan the non-default tablespaces */ @@ -118,7 +118,7 @@ calculate_database_size(Oid dbOid) strcmp(direntry->d_name, "..") == 0) continue; - snprintf(pathname, MAXPGPATH, "pg_tblspc/%s/%s/%u", + snprintf(pathname, sizeof(pathname), "pg_tblspc/%s/%s/%u", direntry->d_name, TABLESPACE_VERSION_DIRECTORY, dbOid); totalsize += db_dir_size(pathname); } @@ -166,7 +166,7 @@ static int64 calculate_tablespace_size(Oid tblspcOid) { char tblspcPath[MAXPGPATH]; - char pathname[MAXPGPATH]; + char pathname[MAXPGPATH * 2]; int64 totalsize = 0; DIR *dirdesc; struct dirent *direntry; @@ -208,7 +208,7 @@ calculate_tablespace_size(Oid tblspcOid) strcmp(direntry->d_name, "..") == 0) continue; - snprintf(pathname, MAXPGPATH, "%s/%s", tblspcPath, direntry->d_name); + snprintf(pathname, sizeof(pathname), "%s/%s", tblspcPath, direntry->d_name); if (stat(pathname, &fst) < 0) { diff --git a/src/backend/utils/adt/domains.c b/src/backend/utils/adt/domains.c index 19ee4ce9d1..07f52c55d8 100644 --- a/src/backend/utils/adt/domains.c +++ b/src/backend/utils/adt/domains.c @@ -35,6 +35,7 @@ #include "executor/executor.h" #include "lib/stringinfo.h" #include "utils/builtins.h" +#include "utils/expandeddatum.h" #include "utils/lsyscache.h" #include "utils/syscache.h" #include "utils/typcache.h" @@ -157,9 +158,14 @@ domain_check_input(Datum value, bool isnull, DomainIOData *my_extra) * Set up value to be returned by CoerceToDomainValue * nodes. Unlike ExecEvalCoerceToDomain, this econtext * couldn't be shared with anything else, so no need to - * save and restore fields. + * save and restore fields. But we do need to protect the + * passed-in value against being changed by called + * functions. (It couldn't be a R/W expanded object for + * most uses, but that seems possible for domain_check().) */ - econtext->domainValue_datum = value; + econtext->domainValue_datum = + MakeExpandedObjectReadOnly(value, isnull, + my_extra->constraint_ref.tcache->typlen); econtext->domainValue_isNull = isnull; conResult = ExecEvalExprSwitchContext(con->check_expr, diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c index bbd97dc84b..e56f3258db 100644 --- a/src/backend/utils/adt/formatting.c +++ b/src/backend/utils/adt/formatting.c @@ -2278,7 +2278,7 @@ seq_search(char *name, const char *const * array, int type, int max, int *len) for (last = 0, a = array; *a != NULL; a++) { - /* comperate first chars */ + /* compare first chars */ if (*name != **a) continue; diff --git a/src/backend/utils/adt/geo_spgist.c b/src/backend/utils/adt/geo_spgist.c index 019015656f..27e671ec7a 100644 --- a/src/backend/utils/adt/geo_spgist.c +++ b/src/backend/utils/adt/geo_spgist.c @@ -286,6 +286,14 @@ lower2D(RangeBox *range_box, Range *query) FPlt(range_box->right.low, query->low); } +/* Can any range from range_box not extend to the right side of the query? */ +static bool +overLower2D(RangeBox *range_box, Range *query) +{ + return FPle(range_box->left.low, query->high) && + FPle(range_box->right.low, query->high); +} + /* Can any range from range_box to be higher than this argument? */ static bool higher2D(RangeBox *range_box, Range *query) @@ -294,6 +302,14 @@ higher2D(RangeBox *range_box, Range *query) FPgt(range_box->right.high, query->high); } +/* Can any range from range_box not extend to the left side of the query? */ +static bool +overHigher2D(RangeBox *range_box, Range *query) +{ + return FPge(range_box->left.high, query->low) && + FPge(range_box->right.high, query->low); +} + /* Can any rectangle from rect_box be left of this argument? */ static bool left4D(RectBox *rect_box, RangeBox *query) @@ -305,7 +321,7 @@ left4D(RectBox *rect_box, RangeBox *query) static bool overLeft4D(RectBox *rect_box, RangeBox *query) { - return lower2D(&rect_box->range_box_x, &query->right); + return overLower2D(&rect_box->range_box_x, &query->left); } /* Can any rectangle from rect_box be right of this argument? */ @@ -319,7 +335,7 @@ right4D(RectBox *rect_box, RangeBox *query) static bool overRight4D(RectBox *rect_box, RangeBox *query) { - return higher2D(&rect_box->range_box_x, &query->right); + return overHigher2D(&rect_box->range_box_x, &query->left); } /* Can any rectangle from rect_box be below of this argument? */ @@ -333,7 +349,7 @@ below4D(RectBox *rect_box, RangeBox *query) static bool overBelow4D(RectBox *rect_box, RangeBox *query) { - return lower2D(&rect_box->range_box_y, &query->left); + return overLower2D(&rect_box->range_box_y, &query->right); } /* Can any rectangle from rect_box be above of this argument? */ @@ -347,7 +363,7 @@ above4D(RectBox *rect_box, RangeBox *query) static bool overAbove4D(RectBox *rect_box, RangeBox *query) { - return higher2D(&rect_box->range_box_y, &query->right); + return overHigher2D(&rect_box->range_box_y, &query->right); } /* diff --git a/src/backend/utils/adt/json.c b/src/backend/utils/adt/json.c index f704418603..2b6a8391d8 100644 --- a/src/backend/utils/adt/json.c +++ b/src/backend/utils/adt/json.c @@ -323,7 +323,7 @@ makeJsonLexContextCstringLen(char *json, int len, bool need_escapes) * Publicly visible entry point for the JSON parser. * * lex is a lexing context, set up for the json to be processed by calling - * makeJsonLexContext(). sem is a strucure of function pointers to semantic + * makeJsonLexContext(). sem is a structure of function pointers to semantic * action routines to be called at appropriate spots during parsing, and a * pointer to a state object to be passed to those routines. */ @@ -2003,7 +2003,7 @@ json_object_agg_transfn(PG_FUNCTION_ARGS) if (arg_type == InvalidOid) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("could not determine data type for argument 1"))); + errmsg("could not determine data type for argument %d", 1))); json_categorize_type(arg_type, &state->key_category, &state->key_output_func); @@ -2013,7 +2013,7 @@ json_object_agg_transfn(PG_FUNCTION_ARGS) if (arg_type == InvalidOid) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("could not determine data type for argument 2"))); + errmsg("could not determine data type for argument %d", 2))); json_categorize_type(arg_type, &state->val_category, &state->val_output_func); diff --git a/src/backend/utils/adt/jsonb.c b/src/backend/utils/adt/jsonb.c index 987cfd1862..d560e4edbc 100644 --- a/src/backend/utils/adt/jsonb.c +++ b/src/backend/utils/adt/jsonb.c @@ -1211,7 +1211,7 @@ jsonb_build_object(PG_FUNCTION_ARGS) if (val_type == InvalidOid || val_type == UNKNOWNOID) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("argument %d: could not determine data type", i + 1))); + errmsg("could not determine data type for argument %d", i + 1))); add_jsonb(arg, false, &result, val_type, true); @@ -1234,7 +1234,7 @@ jsonb_build_object(PG_FUNCTION_ARGS) if (val_type == InvalidOid || val_type == UNKNOWNOID) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("argument %d: could not determine data type", i + 2))); + errmsg("could not determine data type for argument %d", i + 2))); add_jsonb(arg, PG_ARGISNULL(i + 1), &result, val_type, false); } @@ -1294,7 +1294,7 @@ jsonb_build_array(PG_FUNCTION_ARGS) if (val_type == InvalidOid || val_type == UNKNOWNOID) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("argument %d: could not determine data type", i + 1))); + errmsg("could not determine data type for argument %d", i + 1))); add_jsonb(arg, PG_ARGISNULL(i), &result, val_type, false); } diff --git a/src/backend/utils/adt/jsonfuncs.c b/src/backend/utils/adt/jsonfuncs.c index 059d570de7..17ee4e40d4 100644 --- a/src/backend/utils/adt/jsonfuncs.c +++ b/src/backend/utils/adt/jsonfuncs.c @@ -3554,7 +3554,7 @@ jsonb_set(PG_FUNCTION_ARGS) /* - * SQL function jsonb_delete(jsonb, text[]) + * SQL function jsonb_delete_path(jsonb, text[]) */ Datum jsonb_delete_path(PG_FUNCTION_ARGS) diff --git a/src/backend/utils/adt/misc.c b/src/backend/utils/adt/misc.c index 5e705e9308..3aff7caf9e 100644 --- a/src/backend/utils/adt/misc.c +++ b/src/backend/utils/adt/misc.c @@ -775,7 +775,7 @@ parse_ident(PG_FUNCTION_ARGS) nextp = qualname_str; /* skip leading whitespace */ - while (isspace((unsigned char) *nextp)) + while (scanner_isspace(*nextp)) nextp++; for (;;) @@ -863,14 +863,14 @@ parse_ident(PG_FUNCTION_ARGS) text_to_cstring(qualname)))); } - while (isspace((unsigned char) *nextp)) + while (scanner_isspace(*nextp)) nextp++; if (*nextp == '.') { after_dot = true; nextp++; - while (isspace((unsigned char) *nextp)) + while (scanner_isspace(*nextp)) nextp++; } else if (*nextp == '\0') diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c index a818023faa..8ac384f294 100644 --- a/src/backend/utils/adt/pg_locale.c +++ b/src/backend/utils/adt/pg_locale.c @@ -382,51 +382,91 @@ assign_locale_messages(const char *newval, void *extra) /* * Frees the malloced content of a struct lconv. (But not the struct - * itself.) + * itself.) It's important that this not throw elog(ERROR). */ static void free_struct_lconv(struct lconv * s) { - if (s->currency_symbol) - free(s->currency_symbol); if (s->decimal_point) free(s->decimal_point); - if (s->grouping) - free(s->grouping); if (s->thousands_sep) free(s->thousands_sep); + if (s->grouping) + free(s->grouping); if (s->int_curr_symbol) free(s->int_curr_symbol); + if (s->currency_symbol) + free(s->currency_symbol); if (s->mon_decimal_point) free(s->mon_decimal_point); - if (s->mon_grouping) - free(s->mon_grouping); if (s->mon_thousands_sep) free(s->mon_thousands_sep); - if (s->negative_sign) - free(s->negative_sign); + if (s->mon_grouping) + free(s->mon_grouping); if (s->positive_sign) free(s->positive_sign); + if (s->negative_sign) + free(s->negative_sign); +} + +/* + * Check that all fields of a struct lconv (or at least, the ones we care + * about) are non-NULL. The field list must match free_struct_lconv(). + */ +static bool +struct_lconv_is_valid(struct lconv * s) +{ + if (s->decimal_point == NULL) + return false; + if (s->thousands_sep == NULL) + return false; + if (s->grouping == NULL) + return false; + if (s->int_curr_symbol == NULL) + return false; + if (s->currency_symbol == NULL) + return false; + if (s->mon_decimal_point == NULL) + return false; + if (s->mon_thousands_sep == NULL) + return false; + if (s->mon_grouping == NULL) + return false; + if (s->positive_sign == NULL) + return false; + if (s->negative_sign == NULL) + return false; + return true; } /* - * Return a strdup'ed string converted from the specified encoding to the + * Convert the strdup'd string at *str from the specified encoding to the * database encoding. */ -static char * -db_encoding_strdup(int encoding, const char *str) +static void +db_encoding_convert(int encoding, char **str) { char *pstr; char *mstr; /* convert the string to the database encoding */ - pstr = pg_any_to_server(str, strlen(str), encoding); + pstr = pg_any_to_server(*str, strlen(*str), encoding); + if (pstr == *str) + return; /* no conversion happened */ + + /* need it malloc'd not palloc'd */ mstr = strdup(pstr); - if (pstr != str) - pfree(pstr); + if (mstr == NULL) + ereport(ERROR, + (errcode(ERRCODE_OUT_OF_MEMORY), + errmsg("out of memory"))); + + /* replace old string */ + free(*str); + *str = mstr; - return mstr; + pfree(pstr); } @@ -440,13 +480,10 @@ PGLC_localeconv(void) static struct lconv CurrentLocaleConv; static bool CurrentLocaleConvAllocated = false; struct lconv *extlconv; + struct lconv worklconv; + bool trouble = false; char *save_lc_monetary; char *save_lc_numeric; - char *decimal_point; - char *grouping; - char *thousands_sep; - int encoding; - #ifdef WIN32 char *save_lc_ctype; #endif @@ -462,6 +499,20 @@ PGLC_localeconv(void) CurrentLocaleConvAllocated = false; } + /* + * This is tricky because we really don't want to risk throwing error + * while the locale is set to other than our usual settings. Therefore, + * the process is: collect the usual settings, set locale to special + * setting, copy relevant data into worklconv using strdup(), restore + * normal settings, convert data to desired encoding, and finally stash + * the collected data in CurrentLocaleConv. This makes it safe if we + * throw an error during encoding conversion or run out of memory anywhere + * in the process. All data pointed to by struct lconv members is + * allocated with strdup, to avoid premature elog(ERROR) and to allow + * using a single cleanup routine. + */ + memset(&worklconv, 0, sizeof(worklconv)); + /* Save user's values of monetary and numeric locales */ save_lc_monetary = setlocale(LC_MONETARY, NULL); if (save_lc_monetary) @@ -477,7 +528,7 @@ PGLC_localeconv(void) * Ideally, monetary and numeric local symbols could be returned in any * server encoding. Unfortunately, the WIN32 API does not allow * setlocale() to return values in a codepage/CTYPE that uses more than - * two bytes per character, like UTF-8: + * two bytes per character, such as UTF-8: * * http://msdn.microsoft.com/en-us/library/x99tb11d.aspx * @@ -487,7 +538,7 @@ PGLC_localeconv(void) * * Therefore, we set LC_CTYPE to match LC_NUMERIC or LC_MONETARY (which * cannot be UTF8), call localeconv(), and then convert from the - * numeric/monitary LC_CTYPE to the server encoding. One example use of + * numeric/monetary LC_CTYPE to the server encoding. One example use of * this is for the Euro symbol. * * Perhaps someday we will use GetLocaleInfoW() which returns values in @@ -499,6 +550,8 @@ PGLC_localeconv(void) if (save_lc_ctype) save_lc_ctype = pstrdup(save_lc_ctype); + /* Here begins the critical section where we must not throw error */ + /* use numeric to set the ctype */ setlocale(LC_CTYPE, locale_numeric); #endif @@ -506,11 +559,11 @@ PGLC_localeconv(void) /* Get formatting information for numeric */ setlocale(LC_NUMERIC, locale_numeric); extlconv = localeconv(); - encoding = pg_get_encoding_from_locale(locale_numeric, true); - decimal_point = db_encoding_strdup(encoding, extlconv->decimal_point); - thousands_sep = db_encoding_strdup(encoding, extlconv->thousands_sep); - grouping = strdup(extlconv->grouping); + /* Must copy data now in case setlocale() overwrites it */ + worklconv.decimal_point = strdup(extlconv->decimal_point); + worklconv.thousands_sep = strdup(extlconv->thousands_sep); + worklconv.grouping = strdup(extlconv->grouping); #ifdef WIN32 /* use monetary to set the ctype */ @@ -520,40 +573,36 @@ PGLC_localeconv(void) /* Get formatting information for monetary */ setlocale(LC_MONETARY, locale_monetary); extlconv = localeconv(); - encoding = pg_get_encoding_from_locale(locale_monetary, true); - /* - * Must copy all values since restoring internal settings may overwrite - * localeconv()'s results. Note that if we were to fail within this - * sequence before reaching "CurrentLocaleConvAllocated = true", we could - * leak some memory --- but not much, so it's not worth agonizing over. - */ - CurrentLocaleConv = *extlconv; - CurrentLocaleConv.decimal_point = decimal_point; - CurrentLocaleConv.grouping = grouping; - CurrentLocaleConv.thousands_sep = thousands_sep; - CurrentLocaleConv.int_curr_symbol = db_encoding_strdup(encoding, extlconv->int_curr_symbol); - CurrentLocaleConv.currency_symbol = db_encoding_strdup(encoding, extlconv->currency_symbol); - CurrentLocaleConv.mon_decimal_point = db_encoding_strdup(encoding, extlconv->mon_decimal_point); - CurrentLocaleConv.mon_grouping = strdup(extlconv->mon_grouping); - CurrentLocaleConv.mon_thousands_sep = db_encoding_strdup(encoding, extlconv->mon_thousands_sep); - CurrentLocaleConv.negative_sign = db_encoding_strdup(encoding, extlconv->negative_sign); - CurrentLocaleConv.positive_sign = db_encoding_strdup(encoding, extlconv->positive_sign); - CurrentLocaleConvAllocated = true; + /* Must copy data now in case setlocale() overwrites it */ + worklconv.int_curr_symbol = strdup(extlconv->int_curr_symbol); + worklconv.currency_symbol = strdup(extlconv->currency_symbol); + worklconv.mon_decimal_point = strdup(extlconv->mon_decimal_point); + worklconv.mon_thousands_sep = strdup(extlconv->mon_thousands_sep); + worklconv.mon_grouping = strdup(extlconv->mon_grouping); + worklconv.positive_sign = strdup(extlconv->positive_sign); + worklconv.negative_sign = strdup(extlconv->negative_sign); + /* Copy scalar fields as well */ + worklconv.int_frac_digits = extlconv->int_frac_digits; + worklconv.frac_digits = extlconv->frac_digits; + worklconv.p_cs_precedes = extlconv->p_cs_precedes; + worklconv.p_sep_by_space = extlconv->p_sep_by_space; + worklconv.n_cs_precedes = extlconv->n_cs_precedes; + worklconv.n_sep_by_space = extlconv->n_sep_by_space; + worklconv.p_sign_posn = extlconv->p_sign_posn; + worklconv.n_sign_posn = extlconv->n_sign_posn; /* Try to restore internal settings */ if (save_lc_monetary) { if (!setlocale(LC_MONETARY, save_lc_monetary)) - elog(WARNING, "failed to restore old locale"); - pfree(save_lc_monetary); + trouble = true; } if (save_lc_numeric) { if (!setlocale(LC_NUMERIC, save_lc_numeric)) - elog(WARNING, "failed to restore old locale"); - pfree(save_lc_numeric); + trouble = true; } #ifdef WIN32 @@ -561,11 +610,74 @@ PGLC_localeconv(void) if (save_lc_ctype) { if (!setlocale(LC_CTYPE, save_lc_ctype)) - elog(WARNING, "failed to restore old locale"); - pfree(save_lc_ctype); + trouble = true; } #endif + /* + * At this point we've done our best to clean up, and can call functions + * that might possibly throw errors with a clean conscience. But let's + * make sure we don't leak any already-strdup'd fields in worklconv. + */ + PG_TRY(); + { + int encoding; + + /* + * Report it if we failed to restore anything. Perhaps this should be + * FATAL, rather than continuing with bad locale settings? + */ + if (trouble) + elog(WARNING, "failed to restore old locale"); + + /* Release the pstrdup'd locale names */ + if (save_lc_monetary) + pfree(save_lc_monetary); + if (save_lc_numeric) + pfree(save_lc_numeric); +#ifdef WIN32 + if (save_lc_ctype) + pfree(save_lc_ctype); +#endif + + /* If any of the preceding strdup calls failed, complain now. */ + if (!struct_lconv_is_valid(&worklconv)) + ereport(ERROR, + (errcode(ERRCODE_OUT_OF_MEMORY), + errmsg("out of memory"))); + + /* + * Now we must perform encoding conversion from whatever's associated + * with the locale into the database encoding. + */ + encoding = pg_get_encoding_from_locale(locale_numeric, true); + + db_encoding_convert(encoding, &worklconv.decimal_point); + db_encoding_convert(encoding, &worklconv.thousands_sep); + /* grouping is not text and does not require conversion */ + + encoding = pg_get_encoding_from_locale(locale_monetary, true); + + db_encoding_convert(encoding, &worklconv.int_curr_symbol); + db_encoding_convert(encoding, &worklconv.currency_symbol); + db_encoding_convert(encoding, &worklconv.mon_decimal_point); + db_encoding_convert(encoding, &worklconv.mon_thousands_sep); + /* mon_grouping is not text and does not require conversion */ + db_encoding_convert(encoding, &worklconv.positive_sign); + db_encoding_convert(encoding, &worklconv.negative_sign); + } + PG_CATCH(); + { + free_struct_lconv(&worklconv); + PG_RE_THROW(); + } + PG_END_TRY(); + + /* + * Everything is good, so save the results. + */ + CurrentLocaleConv = worklconv; + CurrentLocaleConvAllocated = true; CurrentLocaleConvValid = true; return &CurrentLocaleConv; } diff --git a/src/backend/utils/adt/quote.c b/src/backend/utils/adt/quote.c index 9bdde8bf81..a53afc1342 100644 --- a/src/backend/utils/adt/quote.c +++ b/src/backend/utils/adt/quote.c @@ -107,7 +107,7 @@ quote_literal_cstr(const char *rawstr) len = strlen(rawstr); /* We make a worst-case result area; wasting a little space is OK */ - result = palloc(len * 2 + 3); + result = palloc(len * 2 + 3 + 1); newlen = quote_literal_internal(result, rawstr, len); result[newlen] = '\0'; diff --git a/src/backend/utils/adt/rangetypes_selfuncs.c b/src/backend/utils/adt/rangetypes_selfuncs.c index 8595d41e0b..965153108b 100644 --- a/src/backend/utils/adt/rangetypes_selfuncs.c +++ b/src/backend/utils/adt/rangetypes_selfuncs.c @@ -20,6 +20,7 @@ #include "access/htup_details.h" #include "catalog/pg_operator.h" #include "catalog/pg_statistic.h" +#include "catalog/pg_type.h" #include "utils/builtins.h" #include "utils/lsyscache.h" #include "utils/rangetypes.h" @@ -246,8 +247,9 @@ calc_rangesel(TypeCacheEntry *typcache, VariableStatData *vardata, /* Try to get fraction of empty ranges */ if (get_attstatsslot(vardata->statsTuple, - vardata->atttype, vardata->atttypmod, - STATISTIC_KIND_RANGE_LENGTH_HISTOGRAM, InvalidOid, + FLOAT8OID, -1, + STATISTIC_KIND_RANGE_LENGTH_HISTOGRAM, + InvalidOid, NULL, NULL, NULL, &numbers, &nnumbers)) @@ -255,6 +257,7 @@ calc_rangesel(TypeCacheEntry *typcache, VariableStatData *vardata, if (nnumbers != 1) elog(ERROR, "invalid empty fraction statistic"); /* shouldn't happen */ empty_frac = numbers[0]; + free_attstatsslot(FLOAT8OID, NULL, 0, numbers, nnumbers); } else { @@ -373,8 +376,8 @@ calc_hist_selectivity(TypeCacheEntry *typcache, VariableStatData *vardata, { Datum *hist_values; int nhist; - Datum *length_hist_values; - int length_nhist; + Datum *length_hist_values = NULL; + int length_nhist = 0; RangeBound *hist_lower; RangeBound *hist_upper; int i; @@ -383,6 +386,15 @@ calc_hist_selectivity(TypeCacheEntry *typcache, VariableStatData *vardata, bool empty; double hist_selec; + /* Can't use the histogram with insecure range support functions */ + if (!statistic_proc_security_check(vardata, + typcache->rng_cmp_proc_finfo.fn_oid)) + return -1; + if (OidIsValid(typcache->rng_subdiff_finfo.fn_oid) && + !statistic_proc_security_check(vardata, + typcache->rng_subdiff_finfo.fn_oid)) + return -1; + /* Try to get histogram of ranges */ if (!(HeapTupleIsValid(vardata->statsTuple) && get_attstatsslot(vardata->statsTuple, @@ -414,17 +426,25 @@ calc_hist_selectivity(TypeCacheEntry *typcache, VariableStatData *vardata, { if (!(HeapTupleIsValid(vardata->statsTuple) && get_attstatsslot(vardata->statsTuple, - vardata->atttype, vardata->atttypmod, + FLOAT8OID, -1, STATISTIC_KIND_RANGE_LENGTH_HISTOGRAM, InvalidOid, NULL, &length_hist_values, &length_nhist, NULL, NULL))) + { + free_attstatsslot(vardata->atttype, hist_values, nhist, NULL, 0); return -1.0; + } /* check that it's a histogram, not just a dummy entry */ if (length_nhist < 2) + { + free_attstatsslot(FLOAT8OID, + length_hist_values, length_nhist, NULL, 0); + free_attstatsslot(vardata->atttype, hist_values, nhist, NULL, 0); return -1.0; + } } /* Extract the bounds of the constant value. */ @@ -533,7 +553,7 @@ calc_hist_selectivity(TypeCacheEntry *typcache, VariableStatData *vardata, { /* * Lower bound no longer matters. Just estimate the fraction - * with an upper bound <= const uppert bound + * with an upper bound <= const upper bound */ hist_selec = calc_hist_selectivity_scalar(typcache, &const_upper, @@ -560,6 +580,10 @@ calc_hist_selectivity(TypeCacheEntry *typcache, VariableStatData *vardata, break; } + free_attstatsslot(FLOAT8OID, + length_hist_values, length_nhist, NULL, 0); + free_attstatsslot(vardata->atttype, hist_values, nhist, NULL, 0); + return hist_selec; } diff --git a/src/backend/utils/adt/regproc.c b/src/backend/utils/adt/regproc.c index 394042cbba..210253cf42 100644 --- a/src/backend/utils/adt/regproc.c +++ b/src/backend/utils/adt/regproc.c @@ -35,6 +35,7 @@ #include "lib/stringinfo.h" #include "miscadmin.h" #include "parser/parse_type.h" +#include "parser/scansup.h" #include "utils/builtins.h" #include "utils/fmgroids.h" #include "utils/lsyscache.h" @@ -1911,7 +1912,7 @@ parseNameAndArgTypes(const char *string, bool allowNone, List **names, ptr2 = ptr + strlen(ptr); while (--ptr2 > ptr) { - if (!isspace((unsigned char) *ptr2)) + if (!scanner_isspace(*ptr2)) break; } if (*ptr2 != ')') @@ -1928,7 +1929,7 @@ parseNameAndArgTypes(const char *string, bool allowNone, List **names, for (;;) { /* allow leading whitespace */ - while (isspace((unsigned char) *ptr)) + while (scanner_isspace(*ptr)) ptr++; if (*ptr == '\0') { @@ -1984,7 +1985,7 @@ parseNameAndArgTypes(const char *string, bool allowNone, List **names, /* Lop off trailing whitespace */ while (--ptr2 >= typename) { - if (!isspace((unsigned char) *ptr2)) + if (!scanner_isspace(*ptr2)) break; *ptr2 = '\0'; } diff --git a/src/backend/utils/adt/ri_triggers.c b/src/backend/utils/adt/ri_triggers.c index b4765005fe..983f7647d7 100644 --- a/src/backend/utils/adt/ri_triggers.c +++ b/src/backend/utils/adt/ri_triggers.c @@ -44,6 +44,7 @@ #include "parser/parse_coerce.h" #include "parser/parse_relation.h" #include "miscadmin.h" +#include "storage/bufmgr.h" #include "utils/acl.h" #include "utils/builtins.h" #include "utils/fmgroids.h" @@ -286,20 +287,17 @@ RI_FKey_check(TriggerData *trigdata) * We should not even consider checking the row if it is no longer valid, * since it was either deleted (so the deferred check should be skipped) * or updated (in which case only the latest version of the row should be - * checked). Test its liveness according to SnapshotSelf. - * - * NOTE: The normal coding rule is that one must acquire the buffer - * content lock to call HeapTupleSatisfiesVisibility. We can skip that - * here because we know that AfterTriggerExecute just fetched the tuple - * successfully, so there cannot be a VACUUM compaction in progress on the - * page (either heap_fetch would have waited for the VACUUM, or the - * VACUUM's LockBufferForCleanup would be waiting for us to drop pin). And - * since this is a row inserted by our open transaction, no one else can - * be entitled to change its xmin/xmax. - */ - Assert(new_row_buf != InvalidBuffer); + * checked). Test its liveness according to SnapshotSelf. We need pin + * and lock on the buffer to call HeapTupleSatisfiesVisibility. Caller + * should be holding pin, but not lock. + */ + LockBuffer(new_row_buf, BUFFER_LOCK_SHARE); if (!HeapTupleSatisfiesVisibility(new_row, SnapshotSelf, new_row_buf)) + { + LockBuffer(new_row_buf, BUFFER_LOCK_UNLOCK); return PointerGetDatum(NULL); + } + LockBuffer(new_row_buf, BUFFER_LOCK_UNLOCK); /* * Get the relation descriptors of the FK and PK tables. diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index ec966c752e..416c333f3a 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -409,6 +409,9 @@ static void get_rule_expr(Node *node, deparse_context *context, bool showimplicit); static void get_rule_expr_toplevel(Node *node, deparse_context *context, bool showimplicit); +static void get_rule_expr_funccall(Node *node, deparse_context *context, + bool showimplicit); +static bool looks_like_function(Node *node); static void get_oper_expr(OpExpr *expr, deparse_context *context); static void get_func_expr(FuncExpr *expr, deparse_context *context, bool showimplicit); @@ -1038,7 +1041,7 @@ pg_get_triggerdef_worker(Oid trigid, bool pretty) * * Note that the SQL-function versions of this omit any info about the * index tablespace; this is intentional because pg_dump wants it that way. - * However pg_get_indexdef_string() includes index tablespace if not default. + * However pg_get_indexdef_string() includes the index tablespace. * ---------- */ Datum @@ -1079,7 +1082,11 @@ pg_get_indexdef_ext(PG_FUNCTION_ARGS) PG_RETURN_TEXT_P(string_to_text(res)); } -/* Internal version that returns a palloc'd C string; no pretty-printing */ +/* + * Internal version for use by ALTER TABLE. + * Includes a tablespace clause in the result. + * Returns a palloc'd C string; no pretty-printing. + */ char * pg_get_indexdef_string(Oid indexrelid) { @@ -1337,20 +1344,19 @@ pg_get_indexdef_worker(Oid indexrelid, int colno, } /* - * If it's in a nondefault tablespace, say so, but only if requested + * Print tablespace, but only if requested */ if (showTblSpc) { Oid tblspc; tblspc = get_rel_tablespace(indexrelid); - if (OidIsValid(tblspc)) - { - if (isConstraint) - appendStringInfoString(&buf, " USING INDEX"); - appendStringInfo(&buf, " TABLESPACE %s", - quote_identifier(get_tablespace_name(tblspc))); - } + if (!OidIsValid(tblspc)) + tblspc = MyDatabaseTableSpace; + if (isConstraint) + appendStringInfoString(&buf, " USING INDEX"); + appendStringInfo(&buf, " TABLESPACE %s", + quote_identifier(get_tablespace_name(tblspc))); } /* @@ -2501,7 +2507,7 @@ is_input_argument(int nth, const char *argmodes) } /* - * Append used transformated types to specified buffer + * Append used transformed types to specified buffer */ static void print_function_trftypes(StringInfo buf, HeapTuple proctup) @@ -4214,6 +4220,8 @@ make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc, char *ev_qual; char *ev_action; List *actions = NIL; + Relation ev_relation; + TupleDesc viewResultDesc = NULL; int fno; Datum dat; bool isnull; @@ -4250,6 +4258,8 @@ make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc, if (ev_action != NULL) actions = (List *) stringToNode(ev_action); + ev_relation = heap_open(ev_class, AccessShareLock); + /* * Build the rules definition text */ @@ -4266,6 +4276,7 @@ make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc, { case '1': appendStringInfoString(buf, "SELECT"); + viewResultDesc = RelationGetDescr(ev_relation); break; case '2': @@ -4355,7 +4366,7 @@ make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc, foreach(action, actions) { query = (Query *) lfirst(action); - get_query_def(query, buf, NIL, NULL, + get_query_def(query, buf, NIL, viewResultDesc, prettyFlags, WRAP_COLUMN_DEFAULT, 0); if (prettyFlags) appendStringInfoString(buf, ";\n"); @@ -4373,10 +4384,12 @@ make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc, Query *query; query = (Query *) linitial(actions); - get_query_def(query, buf, NIL, NULL, + get_query_def(query, buf, NIL, viewResultDesc, prettyFlags, WRAP_COLUMN_DEFAULT, 0); appendStringInfoChar(buf, ';'); } + + heap_close(ev_relation, AccessShareLock); } @@ -4398,20 +4411,28 @@ make_viewdef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc, List *actions = NIL; Relation ev_relation; int fno; + Datum dat; bool isnull; /* * Get the attribute values from the rules tuple */ fno = SPI_fnumber(rulettc, "ev_type"); - ev_type = (char) SPI_getbinval(ruletup, rulettc, fno, &isnull); + dat = SPI_getbinval(ruletup, rulettc, fno, &isnull); + Assert(!isnull); + ev_type = DatumGetChar(dat); fno = SPI_fnumber(rulettc, "ev_class"); - ev_class = (Oid) SPI_getbinval(ruletup, rulettc, fno, &isnull); + dat = SPI_getbinval(ruletup, rulettc, fno, &isnull); + Assert(!isnull); + ev_class = DatumGetObjectId(dat); fno = SPI_fnumber(rulettc, "is_instead"); - is_instead = (bool) SPI_getbinval(ruletup, rulettc, fno, &isnull); + dat = SPI_getbinval(ruletup, rulettc, fno, &isnull); + Assert(!isnull); + is_instead = DatumGetBool(dat); + /* these could be nulls */ fno = SPI_fnumber(rulettc, "ev_qual"); ev_qual = SPI_getvalue(ruletup, rulettc, fno); @@ -5829,8 +5850,11 @@ get_update_query_targetlist_def(Query *query, List *targetList, /* * We must dig down into the expr to see if it's a PARAM_MULTIEXPR * Param. That could be buried under FieldStores and ArrayRefs - * (cf processIndirection()), and underneath those there could be - * an implicit type coercion. + * and CoerceToDomains (cf processIndirection()), and underneath + * those there could be an implicit type coercion. Because we + * would ignore implicit type coercions anyway, we don't need to + * be as careful as processIndirection() is about descending past + * implicit CoerceToDomains. */ expr = (Node *) tle->expr; while (expr) @@ -5849,6 +5873,14 @@ get_update_query_targetlist_def(Query *query, List *targetList, break; expr = (Node *) aref->refassgnexpr; } + else if (IsA(expr, CoerceToDomain)) + { + CoerceToDomain *cdomain = (CoerceToDomain *) expr; + + if (cdomain->coercionformat != COERCE_IMPLICIT_CAST) + break; + expr = (Node *) cdomain->arg; + } else break; } @@ -8245,6 +8277,63 @@ get_rule_expr_toplevel(Node *node, deparse_context *context, get_rule_expr(node, context, showimplicit); } +/* + * get_rule_expr_funccall - Parse back a function-call expression + * + * Same as get_rule_expr(), except that we guarantee that the output will + * look like a function call, or like one of the things the grammar treats as + * equivalent to a function call (see the func_expr_windowless production). + * This is needed in places where the grammar uses func_expr_windowless and + * you can't substitute a parenthesized a_expr. If what we have isn't going + * to look like a function call, wrap it in a dummy CAST() expression, which + * will satisfy the grammar --- and, indeed, is likely what the user wrote to + * produce such a thing. + */ +static void +get_rule_expr_funccall(Node *node, deparse_context *context, + bool showimplicit) +{ + if (looks_like_function(node)) + get_rule_expr(node, context, showimplicit); + else + { + StringInfo buf = context->buf; + + appendStringInfoString(buf, "CAST("); + /* no point in showing any top-level implicit cast */ + get_rule_expr(node, context, false); + appendStringInfo(buf, " AS %s)", + format_type_with_typemod(exprType(node), + exprTypmod(node))); + } +} + +/* + * Helper function to identify node types that satisfy func_expr_windowless. + * If in doubt, "false" is always a safe answer. + */ +static bool +looks_like_function(Node *node) +{ + if (node == NULL) + return false; /* probably shouldn't happen */ + switch (nodeTag(node)) + { + case T_FuncExpr: + /* OK, unless it's going to deparse as a cast */ + return (((FuncExpr *) node)->funcformat == COERCE_EXPLICIT_CALL); + case T_NullIfExpr: + case T_CoalesceExpr: + case T_MinMaxExpr: + case T_XmlExpr: + /* these are all accepted by func_expr_common_subexpr */ + return true; + default: + break; + } + return false; +} + /* * get_oper_expr - Parse back an OpExpr node @@ -9106,7 +9195,7 @@ get_from_clause_item(Node *jtnode, Query *query, deparse_context *context) if (list_length(rte->functions) == 1 && (rtfunc1->funccolnames == NIL || !rte->funcordinality)) { - get_rule_expr(rtfunc1->funcexpr, context, true); + get_rule_expr_funccall(rtfunc1->funcexpr, context, true); /* we'll print the coldeflist below, if it has one */ } else @@ -9169,7 +9258,7 @@ get_from_clause_item(Node *jtnode, Query *query, deparse_context *context) if (funcno > 0) appendStringInfoString(buf, ", "); - get_rule_expr(rtfunc->funcexpr, context, true); + get_rule_expr_funccall(rtfunc->funcexpr, context, true); if (rtfunc->funccolnames != NIL) { /* Reconstruct the column definition list */ @@ -9354,6 +9443,11 @@ get_from_clause_item(Node *jtnode, Query *query, deparse_context *context) if (!PRETTY_PAREN(context)) appendStringInfoChar(buf, ')'); } + else if (j->jointype != JOIN_INNER) + { + /* If we didn't say CROSS JOIN above, we must provide an ON */ + appendStringInfoString(buf, " ON TRUE"); + } if (!PRETTY_PAREN(context) || j->alias != NULL) appendStringInfoChar(buf, ')'); @@ -9550,13 +9644,17 @@ get_opclass_name(Oid opclass, Oid actual_datatype, * * We strip any top-level FieldStore or assignment ArrayRef nodes that * appear in the input, printing them as decoration for the base column - * name (which we assume the caller just printed). Return the subexpression - * that's to be assigned. + * name (which we assume the caller just printed). We might also need to + * strip CoerceToDomain nodes, but only ones that appear above assignment + * nodes. + * + * Returns the subexpression that's to be assigned. */ static Node * processIndirection(Node *node, deparse_context *context) { StringInfo buf = context->buf; + CoerceToDomain *cdomain = NULL; for (;;) { @@ -9604,10 +9702,28 @@ processIndirection(Node *node, deparse_context *context) */ node = (Node *) aref->refassgnexpr; } + else if (IsA(node, CoerceToDomain)) + { + cdomain = (CoerceToDomain *) node; + /* If it's an explicit domain coercion, we're done */ + if (cdomain->coercionformat != COERCE_IMPLICIT_CAST) + break; + /* Tentatively descend past the CoerceToDomain */ + node = (Node *) cdomain->arg; + } else break; } + /* + * If we descended past a CoerceToDomain whose argument turned out not to + * be a FieldStore or array assignment, back up to the CoerceToDomain. + * (This is not enough to be fully correct if there are nested implicit + * CoerceToDomains, but such cases shouldn't ever occur.) + */ + if (cdomain && node == (Node *) cdomain->arg) + node = (Node *) cdomain; + return node; } diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c index 56943f2a87..6a4f7b19eb 100644 --- a/src/backend/utils/adt/selfuncs.c +++ b/src/backend/utils/adt/selfuncs.c @@ -112,6 +112,7 @@ #include "catalog/pg_type.h" #include "executor/executor.h" #include "mb/pg_wchar.h" +#include "miscadmin.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" #include "optimizer/clauses.h" @@ -125,6 +126,7 @@ #include "parser/parse_clause.h" #include "parser/parse_coerce.h" #include "parser/parsetree.h" +#include "utils/acl.h" #include "utils/builtins.h" #include "utils/bytea.h" #include "utils/date.h" @@ -266,6 +268,7 @@ var_eq_const(VariableStatData *vardata, Oid operator, { double selec; bool isdefault; + Oid opfuncoid; /* * If the constant is NULL, assume operator is strict and return zero, ie, @@ -284,7 +287,9 @@ var_eq_const(VariableStatData *vardata, Oid operator, if (vardata->isunique && vardata->rel && vardata->rel->tuples >= 1.0) return 1.0 / vardata->rel->tuples; - if (HeapTupleIsValid(vardata->statsTuple)) + if (HeapTupleIsValid(vardata->statsTuple) && + statistic_proc_security_check(vardata, + (opfuncoid = get_opcode(operator)))) { Form_pg_statistic stats; Datum *values; @@ -312,7 +317,7 @@ var_eq_const(VariableStatData *vardata, Oid operator, { FmgrInfo eqproc; - fmgr_info(get_opcode(operator), &eqproc); + fmgr_info(opfuncoid, &eqproc); for (i = 0; i < nvalues; i++) { @@ -618,6 +623,7 @@ mcv_selectivity(VariableStatData *vardata, FmgrInfo *opproc, sumcommon = 0.0; if (HeapTupleIsValid(vardata->statsTuple) && + statistic_proc_security_check(vardata, opproc->fn_oid) && get_attstatsslot(vardata->statsTuple, vardata->atttype, vardata->atttypmod, STATISTIC_KIND_MCV, InvalidOid, @@ -694,6 +700,7 @@ histogram_selectivity(VariableStatData *vardata, FmgrInfo *opproc, Assert(min_hist_size > 2 * n_skip); if (HeapTupleIsValid(vardata->statsTuple) && + statistic_proc_security_check(vardata, opproc->fn_oid) && get_attstatsslot(vardata->statsTuple, vardata->atttype, vardata->atttypmod, STATISTIC_KIND_HISTOGRAM, InvalidOid, @@ -771,6 +778,7 @@ ineq_histogram_selectivity(PlannerInfo *root, * the reverse way if isgt is TRUE. */ if (HeapTupleIsValid(vardata->statsTuple) && + statistic_proc_security_check(vardata, opproc->fn_oid) && get_attstatsslot(vardata->statsTuple, vardata->atttype, vardata->atttypmod, STATISTIC_KIND_HISTOGRAM, InvalidOid, @@ -2255,6 +2263,7 @@ eqjoinsel_inner(Oid operator, double nd2; bool isdefault1; bool isdefault2; + Oid opfuncoid; Form_pg_statistic stats1 = NULL; Form_pg_statistic stats2 = NULL; bool have_mcvs1 = false; @@ -2271,30 +2280,36 @@ eqjoinsel_inner(Oid operator, nd1 = get_variable_numdistinct(vardata1, &isdefault1); nd2 = get_variable_numdistinct(vardata2, &isdefault2); + opfuncoid = get_opcode(operator); + if (HeapTupleIsValid(vardata1->statsTuple)) { + /* note we allow use of nullfrac regardless of security check */ stats1 = (Form_pg_statistic) GETSTRUCT(vardata1->statsTuple); - have_mcvs1 = get_attstatsslot(vardata1->statsTuple, - vardata1->atttype, - vardata1->atttypmod, - STATISTIC_KIND_MCV, - InvalidOid, - NULL, - &values1, &nvalues1, - &numbers1, &nnumbers1); + if (statistic_proc_security_check(vardata1, opfuncoid)) + have_mcvs1 = get_attstatsslot(vardata1->statsTuple, + vardata1->atttype, + vardata1->atttypmod, + STATISTIC_KIND_MCV, + InvalidOid, + NULL, + &values1, &nvalues1, + &numbers1, &nnumbers1); } if (HeapTupleIsValid(vardata2->statsTuple)) { + /* note we allow use of nullfrac regardless of security check */ stats2 = (Form_pg_statistic) GETSTRUCT(vardata2->statsTuple); - have_mcvs2 = get_attstatsslot(vardata2->statsTuple, - vardata2->atttype, - vardata2->atttypmod, - STATISTIC_KIND_MCV, - InvalidOid, - NULL, - &values2, &nvalues2, - &numbers2, &nnumbers2); + if (statistic_proc_security_check(vardata2, opfuncoid)) + have_mcvs2 = get_attstatsslot(vardata2->statsTuple, + vardata2->atttype, + vardata2->atttypmod, + STATISTIC_KIND_MCV, + InvalidOid, + NULL, + &values2, &nvalues2, + &numbers2, &nnumbers2); } if (have_mcvs1 && have_mcvs2) @@ -2328,7 +2343,7 @@ eqjoinsel_inner(Oid operator, int i, nmatches; - fmgr_info(get_opcode(operator), &eqproc); + fmgr_info(opfuncoid, &eqproc); hasmatch1 = (bool *) palloc0(nvalues1 * sizeof(bool)); hasmatch2 = (bool *) palloc0(nvalues2 * sizeof(bool)); @@ -2471,6 +2486,7 @@ eqjoinsel_inner(Oid operator, * * (Also used for anti join, which we are supposed to estimate the same way.) * Caller has ensured that vardata1 is the LHS variable. + * Unlike eqjoinsel_inner, we have to cope with operator being InvalidOid. */ static double eqjoinsel_semi(Oid operator, @@ -2482,6 +2498,7 @@ eqjoinsel_semi(Oid operator, double nd2; bool isdefault1; bool isdefault2; + Oid opfuncoid; Form_pg_statistic stats1 = NULL; bool have_mcvs1 = false; Datum *values1 = NULL; @@ -2497,6 +2514,8 @@ eqjoinsel_semi(Oid operator, nd1 = get_variable_numdistinct(vardata1, &isdefault1); nd2 = get_variable_numdistinct(vardata2, &isdefault2); + opfuncoid = OidIsValid(operator) ? get_opcode(operator) : InvalidOid; + /* * We clamp nd2 to be not more than what we estimate the inner relation's * size to be. This is intuitively somewhat reasonable since obviously @@ -2518,18 +2537,21 @@ eqjoinsel_semi(Oid operator, if (HeapTupleIsValid(vardata1->statsTuple)) { + /* note we allow use of nullfrac regardless of security check */ stats1 = (Form_pg_statistic) GETSTRUCT(vardata1->statsTuple); - have_mcvs1 = get_attstatsslot(vardata1->statsTuple, - vardata1->atttype, - vardata1->atttypmod, - STATISTIC_KIND_MCV, - InvalidOid, - NULL, - &values1, &nvalues1, - &numbers1, &nnumbers1); + if (statistic_proc_security_check(vardata1, opfuncoid)) + have_mcvs1 = get_attstatsslot(vardata1->statsTuple, + vardata1->atttype, + vardata1->atttypmod, + STATISTIC_KIND_MCV, + InvalidOid, + NULL, + &values1, &nvalues1, + &numbers1, &nnumbers1); } - if (HeapTupleIsValid(vardata2->statsTuple)) + if (HeapTupleIsValid(vardata2->statsTuple) && + statistic_proc_security_check(vardata2, opfuncoid)) { have_mcvs2 = get_attstatsslot(vardata2->statsTuple, vardata2->atttype, @@ -2571,7 +2593,7 @@ eqjoinsel_semi(Oid operator, */ clamped_nvalues2 = Min(nvalues2, nd2); - fmgr_info(get_opcode(operator), &eqproc); + fmgr_info(opfuncoid, &eqproc); hasmatch1 = (bool *) palloc0(nvalues1 * sizeof(bool)); hasmatch2 = (bool *) palloc0(clamped_nvalues2 * sizeof(bool)); @@ -4387,6 +4409,9 @@ get_join_variables(PlannerInfo *root, List *args, SpecialJoinInfo *sjinfo, * this query. (Caution: this should be trusted for statistical * purposes only, since we do not check indimmediate nor verify that * the exact same definition of equality applies.) + * acl_ok: TRUE if current user has permission to read the column(s) + * underlying the pg_statistic entry. This is consulted by + * statistic_proc_security_check(). * * Caller is responsible for doing ReleaseVariableStats() before exiting. */ @@ -4555,6 +4580,30 @@ examine_variable(PlannerInfo *root, Node *node, int varRelid, Int16GetDatum(pos + 1), BoolGetDatum(false)); vardata->freefunc = ReleaseSysCache; + + if (HeapTupleIsValid(vardata->statsTuple)) + { + /* Get index's table for permission check */ + RangeTblEntry *rte; + + rte = planner_rt_fetch(index->rel->relid, root); + Assert(rte->rtekind == RTE_RELATION); + + /* + * For simplicity, we insist on the whole + * table being selectable, rather than trying + * to identify which column(s) the index + * depends on. + */ + vardata->acl_ok = + (pg_class_aclcheck(rte->relid, GetUserId(), + ACL_SELECT) == ACLCHECK_OK); + } + else + { + /* suppress leakproofness checks later */ + vardata->acl_ok = true; + } } if (vardata->statsTuple) break; @@ -4607,6 +4656,21 @@ examine_simple_variable(PlannerInfo *root, Var *var, Int16GetDatum(var->varattno), BoolGetDatum(rte->inh)); vardata->freefunc = ReleaseSysCache; + + if (HeapTupleIsValid(vardata->statsTuple)) + { + /* check if user has permission to read this column */ + vardata->acl_ok = + (pg_class_aclcheck(rte->relid, GetUserId(), + ACL_SELECT) == ACLCHECK_OK) || + (pg_attribute_aclcheck(rte->relid, var->varattno, GetUserId(), + ACL_SELECT) == ACLCHECK_OK); + } + else + { + /* suppress any possible leakproofness checks later */ + vardata->acl_ok = true; + } } else if (rte->rtekind == RTE_SUBQUERY && !rte->inh) { @@ -4723,6 +4787,30 @@ examine_simple_variable(PlannerInfo *root, Var *var, } } +/* + * Check whether it is permitted to call func_oid passing some of the + * pg_statistic data in vardata. We allow this either if the user has SELECT + * privileges on the table or column underlying the pg_statistic data or if + * the function is marked leak-proof. + */ +bool +statistic_proc_security_check(VariableStatData *vardata, Oid func_oid) +{ + if (vardata->acl_ok) + return true; + + if (!OidIsValid(func_oid)) + return false; + + if (get_func_leakproof(func_oid)) + return true; + + ereport(DEBUG2, + (errmsg_internal("not using statistics because function \"%s\" is not leak-proof", + get_func_name(func_oid)))); + return false; +} + /* * get_variable_numdistinct * Estimate the number of distinct values of a variable. @@ -4865,6 +4953,7 @@ get_variable_range(PlannerInfo *root, VariableStatData *vardata, Oid sortop, bool have_data = false; int16 typLen; bool typByVal; + Oid opfuncoid; Datum *values; int nvalues; int i; @@ -4887,6 +4976,17 @@ get_variable_range(PlannerInfo *root, VariableStatData *vardata, Oid sortop, return false; } + /* + * If we can't apply the sortop to the stats data, just fail. In + * principle, if there's a histogram and no MCVs, we could return the + * histogram endpoints without ever applying the sortop ... but it's + * probably not worth trying, because whatever the caller wants to do with + * the endpoints would likely fail the security check too. + */ + if (!statistic_proc_security_check(vardata, + (opfuncoid = get_opcode(sortop)))) + return false; + get_typlenbyval(vardata->atttype, &typLen, &typByVal); /* @@ -4939,7 +5039,7 @@ get_variable_range(PlannerInfo *root, VariableStatData *vardata, Oid sortop, bool tmax_is_mcv = false; FmgrInfo opproc; - fmgr_info(get_opcode(sortop), &opproc); + fmgr_info(opfuncoid, &opproc); for (i = 0; i < nvalues; i++) { diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index d7ee865cf7..e847d0e452 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -24,6 +24,7 @@ #include "access/hash.h" #include "access/xact.h" #include "catalog/pg_type.h" +#include "common/int128.h" #include "funcapi.h" #include "libpq/pqformat.h" #include "miscadmin.h" @@ -764,12 +765,8 @@ float8_timestamptz(PG_FUNCTION_ARGS) { /* Out of range? */ if (seconds < - (float8) SECS_PER_DAY * (DATETIME_MIN_JULIAN - UNIX_EPOCH_JDATE)) - ereport(ERROR, - (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), - errmsg("timestamp out of range: \"%g\"", seconds))); - - if (seconds >= + (float8) SECS_PER_DAY * (DATETIME_MIN_JULIAN - UNIX_EPOCH_JDATE) + || seconds >= (float8) SECS_PER_DAY * (TIMESTAMP_END_JULIAN - UNIX_EPOCH_JDATE)) ereport(ERROR, (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), @@ -779,7 +776,8 @@ float8_timestamptz(PG_FUNCTION_ARGS) seconds -= ((POSTGRES_EPOCH_JDATE - UNIX_EPOCH_JDATE) * SECS_PER_DAY); #ifdef HAVE_INT64_TIMESTAMP - result = seconds * USECS_PER_SEC; + seconds = rint(seconds * USECS_PER_SEC); + result = (int64) seconds; #else result = seconds; #endif @@ -1241,6 +1239,59 @@ intervaltypmodout(PG_FUNCTION_ARGS) PG_RETURN_CSTRING(res); } +/* + * Given an interval typmod value, return a code for the least-significant + * field that the typmod allows to be nonzero, for instance given + * INTERVAL DAY TO HOUR we want to identify "hour". + * + * The results should be ordered by field significance, which means + * we can't use the dt.h macros YEAR etc, because for some odd reason + * they aren't ordered that way. Instead, arbitrarily represent + * SECOND = 0, MINUTE = 1, HOUR = 2, DAY = 3, MONTH = 4, YEAR = 5. + */ +static int +intervaltypmodleastfield(int32 typmod) +{ + if (typmod < 0) + return 0; /* SECOND */ + + switch (INTERVAL_RANGE(typmod)) + { + case INTERVAL_MASK(YEAR): + return 5; /* YEAR */ + case INTERVAL_MASK(MONTH): + return 4; /* MONTH */ + case INTERVAL_MASK(DAY): + return 3; /* DAY */ + case INTERVAL_MASK(HOUR): + return 2; /* HOUR */ + case INTERVAL_MASK(MINUTE): + return 1; /* MINUTE */ + case INTERVAL_MASK(SECOND): + return 0; /* SECOND */ + case INTERVAL_MASK(YEAR) | INTERVAL_MASK(MONTH): + return 4; /* MONTH */ + case INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR): + return 2; /* HOUR */ + case INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE): + return 1; /* MINUTE */ + case INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND): + return 0; /* SECOND */ + case INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE): + return 1; /* MINUTE */ + case INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND): + return 0; /* SECOND */ + case INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND): + return 0; /* SECOND */ + case INTERVAL_FULL_RANGE: + return 0; /* SECOND */ + default: + elog(ERROR, "invalid INTERVAL typmod: 0x%x", typmod); + break; + } + return 0; /* can't get here, but keep compiler quiet */ +} + /* interval_transform() * Flatten superfluous calls to interval_scale(). The interval typmod is @@ -1262,39 +1313,39 @@ interval_transform(PG_FUNCTION_ARGS) if (IsA(typmod, Const) &&!((Const *) typmod)->constisnull) { Node *source = (Node *) linitial(expr->args); - int32 old_typmod = exprTypmod(source); int32 new_typmod = DatumGetInt32(((Const *) typmod)->constvalue); - int old_range; - int old_precis; - int new_range = INTERVAL_RANGE(new_typmod); - int new_precis = INTERVAL_PRECISION(new_typmod); - int new_range_fls; - int old_range_fls; - - if (old_typmod < 0) - { - old_range = INTERVAL_FULL_RANGE; - old_precis = INTERVAL_FULL_PRECISION; - } + bool noop; + + if (new_typmod < 0) + noop = true; else { - old_range = INTERVAL_RANGE(old_typmod); - old_precis = INTERVAL_PRECISION(old_typmod); - } + int32 old_typmod = exprTypmod(source); + int old_least_field; + int new_least_field; + int old_precis; + int new_precis; + + old_least_field = intervaltypmodleastfield(old_typmod); + new_least_field = intervaltypmodleastfield(new_typmod); + if (old_typmod < 0) + old_precis = INTERVAL_FULL_PRECISION; + else + old_precis = INTERVAL_PRECISION(old_typmod); + new_precis = INTERVAL_PRECISION(new_typmod); - /* - * Temporally-smaller fields occupy higher positions in the range - * bitmap. Since only the temporally-smallest bit matters for length - * coercion purposes, we compare the last-set bits in the ranges. - * Precision, which is to say, sub-second precision, only affects - * ranges that include SECOND. - */ - new_range_fls = fls(new_range); - old_range_fls = fls(old_range); - if (new_typmod < 0 || - ((new_range_fls >= SECOND || new_range_fls >= old_range_fls) && - (old_range_fls < SECOND || new_precis >= MAX_INTERVAL_PRECISION || - new_precis >= old_precis))) + /* + * Cast is a no-op if least field stays the same or decreases + * while precision stays the same or increases. But precision, + * which is to say, sub-second precision, only affects ranges that + * include SECOND. + */ + noop = (new_least_field <= old_least_field) && + (old_least_field > 0 /* SECOND */ || + new_precis >= MAX_INTERVAL_PRECISION || + new_precis >= old_precis); + } + if (noop) ret = relabel_to_typmod(source, new_typmod); } @@ -1561,12 +1612,15 @@ make_interval(PG_FUNCTION_ARGS) result->month = years * MONTHS_PER_YEAR + months; result->day = weeks * 7 + days; - secs += hours * (double) SECS_PER_HOUR + mins * (double) SECS_PER_MINUTE; - #ifdef HAVE_INT64_TIMESTAMP - result->time = (int64) (secs * USECS_PER_SEC); + secs = rint(secs * USECS_PER_SEC); + result->time = hours * ((int64) SECS_PER_HOUR * USECS_PER_SEC) + + mins * ((int64) SECS_PER_MINUTE * USECS_PER_SEC) + + (int64) secs; #else - result->time = secs; + result->time = hours * (double) SECS_PER_HOUR + + mins * (double) SECS_PER_MINUTE + + secs; #endif PG_RETURN_INTERVAL_P(result); @@ -2509,19 +2563,47 @@ timestamptz_cmp_timestamp(PG_FUNCTION_ARGS) /* * interval_relop - is interval1 relop interval2 * - * collate invalid interval at the end + * Interval comparison is based on converting interval values to a linear + * representation expressed in the units of the time field (microseconds, + * in the case of integer timestamps) with days assumed to be always 24 hours + * and months assumed to be always 30 days. To avoid overflow, we need a + * wider-than-int64 datatype for the linear representation, so use INT128 + * with integer timestamps. + * + * In the float8 case, our problems are not with overflow but with precision; + * but it's been like that since day one, so live with it. */ -static inline TimeOffset +#ifdef HAVE_INT64_TIMESTAMP +typedef INT128 IntervalOffset; +#else +typedef TimeOffset IntervalOffset; +#endif + +static inline IntervalOffset interval_cmp_value(const Interval *interval) { - TimeOffset span; - - span = interval->time; + IntervalOffset span; #ifdef HAVE_INT64_TIMESTAMP - span += interval->month * INT64CONST(30) * USECS_PER_DAY; - span += interval->day * INT64CONST(24) * USECS_PER_HOUR; + int64 dayfraction; + int64 days; + + /* + * Separate time field into days and dayfraction, then add the month and + * day fields to the days part. We cannot overflow int64 days here. + */ + dayfraction = interval->time % USECS_PER_DAY; + days = interval->time / USECS_PER_DAY; + days += interval->month * INT64CONST(30); + days += interval->day; + + /* Widen dayfraction to 128 bits */ + span = int64_to_int128(dayfraction); + + /* Scale up days to microseconds, forming a 128-bit product */ + int128_add_int64_mul_int64(&span, days, USECS_PER_DAY); #else + span = interval->time; span += interval->month * ((double) DAYS_PER_MONTH * SECS_PER_DAY); span += interval->day * ((double) HOURS_PER_DAY * SECS_PER_HOUR); #endif @@ -2532,10 +2614,14 @@ interval_cmp_value(const Interval *interval) static int interval_cmp_internal(Interval *interval1, Interval *interval2) { - TimeOffset span1 = interval_cmp_value(interval1); - TimeOffset span2 = interval_cmp_value(interval2); + IntervalOffset span1 = interval_cmp_value(interval1); + IntervalOffset span2 = interval_cmp_value(interval2); +#ifdef HAVE_INT64_TIMESTAMP + return int128_compare(span1, span2); +#else return ((span1 < span2) ? -1 : (span1 > span2) ? 1 : 0); +#endif } Datum @@ -2612,10 +2698,20 @@ Datum interval_hash(PG_FUNCTION_ARGS) { Interval *interval = PG_GETARG_INTERVAL_P(0); - TimeOffset span = interval_cmp_value(interval); + IntervalOffset span = interval_cmp_value(interval); #ifdef HAVE_INT64_TIMESTAMP - return DirectFunctionCall1(hashint8, Int64GetDatumFast(span)); + int64 span64; + + /* + * Use only the least significant 64 bits for hashing. The upper 64 bits + * seldom add any useful information, and besides we must do it like this + * for compatibility with hashes calculated before use of INT128 was + * introduced. + */ + span64 = int128_to_int64(span); + + return DirectFunctionCall1(hashint8, Int64GetDatumFast(span64)); #else return DirectFunctionCall1(hashfloat8, Float8GetDatumFast(span)); #endif @@ -5112,84 +5208,15 @@ interval_part(PG_FUNCTION_ARGS) /* timestamp_zone_transform() - * If the zone argument of a timestamp_zone() or timestamptz_zone() call is a - * plan-time constant denoting a zone equivalent to UTC, the call will always - * return its second argument unchanged. Simplify the expression tree - * accordingly. Civil time zones almost never qualify, because jurisdictions - * that follow UTC today have not done so continuously. + * The original optimization here caused problems by relabeling Vars that + * could be matched to index entries. It might be possible to resurrect it + * at some point by teaching the planner to be less cavalier with RelabelType + * nodes, but that will take careful analysis. */ Datum timestamp_zone_transform(PG_FUNCTION_ARGS) { - Node *func_node = (Node *) PG_GETARG_POINTER(0); - FuncExpr *expr = (FuncExpr *) func_node; - Node *ret = NULL; - Node *zone_node; - - Assert(IsA(expr, FuncExpr)); - Assert(list_length(expr->args) == 2); - - zone_node = (Node *) linitial(expr->args); - - if (IsA(zone_node, Const) &&!((Const *) zone_node)->constisnull) - { - text *zone = DatumGetTextPP(((Const *) zone_node)->constvalue); - char tzname[TZ_STRLEN_MAX + 1]; - char *lowzone; - int type, - abbrev_offset; - pg_tz *tzp; - bool noop = false; - - /* - * If the timezone is forever UTC+0, the FuncExpr function call is a - * no-op for all possible timestamps. This passage mirrors code in - * timestamp_zone(). - */ - text_to_cstring_buffer(zone, tzname, sizeof(tzname)); - lowzone = downcase_truncate_identifier(tzname, - strlen(tzname), - false); - type = DecodeTimezoneAbbrev(0, lowzone, &abbrev_offset, &tzp); - if (type == TZ || type == DTZ) - noop = (abbrev_offset == 0); - else if (type == DYNTZ) - { - /* - * An abbreviation of a single-offset timezone ought not to be - * configured as a DYNTZ, so don't bother checking. - */ - } - else - { - long tzname_offset; - - tzp = pg_tzset(tzname); - if (tzp && pg_get_timezone_offset(tzp, &tzname_offset)) - noop = (tzname_offset == 0); - } - - if (noop) - { - Node *timestamp = (Node *) lsecond(expr->args); - - /* Strip any existing RelabelType node(s) */ - while (timestamp && IsA(timestamp, RelabelType)) - timestamp = (Node *) ((RelabelType *) timestamp)->arg; - - /* - * Replace the FuncExpr with its timestamp argument, relabeled as - * though the function call had computed it. - */ - ret = (Node *) makeRelabelType((Expr *) timestamp, - exprType(func_node), - exprTypmod(func_node), - exprCollation(func_node), - COERCE_EXPLICIT_CAST); - } - } - - PG_RETURN_POINTER(ret); + PG_RETURN_POINTER(NULL); } /* timestamp_zone() @@ -5286,49 +5313,15 @@ timestamp_zone(PG_FUNCTION_ARGS) } /* timestamp_izone_transform() - * If we deduce at plan time that a particular timestamp_izone() or - * timestamptz_izone() call can only compute tz=0, the call will always return - * its second argument unchanged. Simplify the expression tree accordingly. + * The original optimization here caused problems by relabeling Vars that + * could be matched to index entries. It might be possible to resurrect it + * at some point by teaching the planner to be less cavalier with RelabelType + * nodes, but that will take careful analysis. */ Datum timestamp_izone_transform(PG_FUNCTION_ARGS) { - Node *func_node = (Node *) PG_GETARG_POINTER(0); - FuncExpr *expr = (FuncExpr *) func_node; - Node *ret = NULL; - Node *zone_node; - - Assert(IsA(expr, FuncExpr)); - Assert(list_length(expr->args) == 2); - - zone_node = (Node *) linitial(expr->args); - - if (IsA(zone_node, Const) &&!((Const *) zone_node)->constisnull) - { - Interval *zone; - - zone = DatumGetIntervalP(((Const *) zone_node)->constvalue); - if (zone->month == 0 && zone->day == 0 && zone->time == 0) - { - Node *timestamp = (Node *) lsecond(expr->args); - - /* Strip any existing RelabelType node(s) */ - while (timestamp && IsA(timestamp, RelabelType)) - timestamp = (Node *) ((RelabelType *) timestamp)->arg; - - /* - * Replace the FuncExpr with its timestamp argument, relabeled as - * though the function call had computed it. - */ - ret = (Node *) makeRelabelType((Expr *) timestamp, - exprType(func_node), - exprTypmod(func_node), - exprCollation(func_node), - COERCE_EXPLICIT_CAST); - } - } - - PG_RETURN_POINTER(ret); + PG_RETURN_POINTER(NULL); } /* timestamp_izone() diff --git a/src/backend/utils/adt/tsginidx.c b/src/backend/utils/adt/tsginidx.c index c953f531ff..3e0a44459a 100644 --- a/src/backend/utils/adt/tsginidx.c +++ b/src/backend/utils/adt/tsginidx.c @@ -188,7 +188,7 @@ checkcondition_gin_internal(GinChkVal *gcv, QueryOperand *val, ExecPhraseData *d * information then set recheck flag */ if (val->weight != 0 || data != NULL) - *gcv->need_recheck = true; + *(gcv->need_recheck) = true; /* convert item's number to corresponding entry's (operand's) number */ j = gcv->map_item_operand[((QueryItem *) val) - gcv->first_item]; @@ -212,7 +212,7 @@ checkcondition_gin(void *checkval, QueryOperand *val, ExecPhraseData *data) * Evaluate tsquery boolean expression using ternary logic. */ static GinTernaryValue -TS_execute_ternary(GinChkVal *gcv, QueryItem *curitem) +TS_execute_ternary(GinChkVal *gcv, QueryItem *curitem, bool in_phrase) { GinTernaryValue val1, val2, @@ -230,7 +230,10 @@ TS_execute_ternary(GinChkVal *gcv, QueryItem *curitem) switch (curitem->qoperator.oper) { case OP_NOT: - result = TS_execute_ternary(gcv, curitem + 1); + /* In phrase search, always return MAYBE since we lack positions */ + if (in_phrase) + return GIN_MAYBE; + result = TS_execute_ternary(gcv, curitem + 1, in_phrase); if (result == GIN_MAYBE) return result; return !result; @@ -238,17 +241,21 @@ TS_execute_ternary(GinChkVal *gcv, QueryItem *curitem) case OP_PHRASE: /* - * GIN doesn't contain any information about positions, treat + * GIN doesn't contain any information about positions, so treat * OP_PHRASE as OP_AND with recheck requirement */ - *gcv->need_recheck = true; + *(gcv->need_recheck) = true; + /* Pass down in_phrase == true in case there's a NOT below */ + in_phrase = true; + /* FALL THRU */ case OP_AND: - val1 = TS_execute_ternary(gcv, curitem + curitem->qoperator.left); + val1 = TS_execute_ternary(gcv, curitem + curitem->qoperator.left, + in_phrase); if (val1 == GIN_FALSE) return GIN_FALSE; - val2 = TS_execute_ternary(gcv, curitem + 1); + val2 = TS_execute_ternary(gcv, curitem + 1, in_phrase); if (val2 == GIN_FALSE) return GIN_FALSE; if (val1 == GIN_TRUE && val2 == GIN_TRUE) @@ -257,10 +264,11 @@ TS_execute_ternary(GinChkVal *gcv, QueryItem *curitem) return GIN_MAYBE; case OP_OR: - val1 = TS_execute_ternary(gcv, curitem + curitem->qoperator.left); + val1 = TS_execute_ternary(gcv, curitem + curitem->qoperator.left, + in_phrase); if (val1 == GIN_TRUE) return GIN_TRUE; - val2 = TS_execute_ternary(gcv, curitem + 1); + val2 = TS_execute_ternary(gcv, curitem + 1, in_phrase); if (val2 == GIN_TRUE) return GIN_TRUE; if (val1 == GIN_FALSE && val2 == GIN_FALSE) @@ -289,26 +297,25 @@ gin_tsquery_consistent(PG_FUNCTION_ARGS) bool *recheck = (bool *) PG_GETARG_POINTER(5); bool res = FALSE; - /* The query requires recheck only if it involves weights */ + /* Initially assume query doesn't require recheck */ *recheck = false; if (query->size > 0) { - QueryItem *item; GinChkVal gcv; /* * check-parameter array has one entry for each value (operand) in the * query. */ - gcv.first_item = item = GETQUERY(query); + gcv.first_item = GETQUERY(query); gcv.check = check; gcv.map_item_operand = (int *) (extra_data[0]); gcv.need_recheck = recheck; res = TS_execute(GETQUERY(query), &gcv, - TS_EXEC_CALC_NOT | TS_EXEC_PHRASE_AS_AND, + TS_EXEC_CALC_NOT | TS_EXEC_PHRASE_NO_POS, checkcondition_gin); } @@ -328,24 +335,23 @@ gin_tsquery_triconsistent(PG_FUNCTION_ARGS) GinTernaryValue res = GIN_FALSE; bool recheck; - /* The query requires recheck only if it involves weights */ + /* Initially assume query doesn't require recheck */ recheck = false; if (query->size > 0) { - QueryItem *item; GinChkVal gcv; /* * check-parameter array has one entry for each value (operand) in the * query. */ - gcv.first_item = item = GETQUERY(query); + gcv.first_item = GETQUERY(query); gcv.check = check; gcv.map_item_operand = (int *) (extra_data[0]); gcv.need_recheck = &recheck; - res = TS_execute_ternary(&gcv, GETQUERY(query)); + res = TS_execute_ternary(&gcv, GETQUERY(query), false); if (res == GIN_TRUE && recheck) res = GIN_MAYBE; diff --git a/src/backend/utils/adt/tsgistidx.c b/src/backend/utils/adt/tsgistidx.c index 6cdfb13f6d..a4c2bb9cec 100644 --- a/src/backend/utils/adt/tsgistidx.c +++ b/src/backend/utils/adt/tsgistidx.c @@ -359,12 +359,11 @@ gtsvector_consistent(PG_FUNCTION_ARGS) if (ISALLTRUE(key)) PG_RETURN_BOOL(true); - PG_RETURN_BOOL(TS_execute( - GETQUERY(query), + /* since signature is lossy, cannot specify CALC_NOT here */ + PG_RETURN_BOOL(TS_execute(GETQUERY(query), (void *) GETSIGN(key), - TS_EXEC_PHRASE_AS_AND, - checkcondition_bit - )); + TS_EXEC_PHRASE_NO_POS, + checkcondition_bit)); } else { /* only leaf pages */ @@ -372,12 +371,10 @@ gtsvector_consistent(PG_FUNCTION_ARGS) chkval.arrb = GETARR(key); chkval.arre = chkval.arrb + ARRNELEM(key); - PG_RETURN_BOOL(TS_execute( - GETQUERY(query), + PG_RETURN_BOOL(TS_execute(GETQUERY(query), (void *) &chkval, - TS_EXEC_PHRASE_AS_AND | TS_EXEC_CALC_NOT, - checkcondition_arr - )); + TS_EXEC_PHRASE_NO_POS | TS_EXEC_CALC_NOT, + checkcondition_arr)); } } diff --git a/src/backend/utils/adt/tsquery.c b/src/backend/utils/adt/tsquery.c index 3d11a1c208..df75ee4f1e 100644 --- a/src/backend/utils/adt/tsquery.c +++ b/src/backend/utils/adt/tsquery.c @@ -113,7 +113,7 @@ get_modifiers(char *buf, int16 *weight, bool *prefix) * Parse phrase operator. The operator * may take the following forms: * - * a b (distance is no greater than X) + * a b (distance is exactly N lexemes) * a <-> b (default distance = 1) * * The buffer should begin with '<' char @@ -129,10 +129,9 @@ parse_phrase_operator(char *buf, int16 *distance) PHRASE_ERR, PHRASE_FINISH } state = PHRASE_OPEN; - char *ptr = buf; char *endptr; - long l = 1; + long l = 1; /* default distance */ while (*ptr) { @@ -151,16 +150,17 @@ parse_phrase_operator(char *buf, int16 *distance) ptr++; break; } - else if (!t_isdigit(ptr)) + if (!t_isdigit(ptr)) { state = PHRASE_ERR; break; } + errno = 0; l = strtol(ptr, &endptr, 10); if (ptr == endptr) state = PHRASE_ERR; - else if (errno == ERANGE || l > MAXENTRYPOS) + else if (errno == ERANGE || l < 0 || l > MAXENTRYPOS) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("distance in phrase operator should not be greater than %d", @@ -557,13 +557,11 @@ findoprnd_recurse(QueryItem *ptr, uint32 *pos, int nnodes, bool *needcleanup) curitem->oper == OP_OR || curitem->oper == OP_PHRASE); - if (curitem->oper == OP_PHRASE) - *needcleanup = true; /* push OP_PHRASE down later */ - (*pos)++; /* process RIGHT argument */ findoprnd_recurse(ptr, pos, nnodes, needcleanup); + curitem->left = *pos - tmp; /* set LEFT arg's offset */ /* process LEFT argument */ @@ -574,8 +572,9 @@ findoprnd_recurse(QueryItem *ptr, uint32 *pos, int nnodes, bool *needcleanup) /* - * Fills in the left-fields previously left unfilled. The input - * QueryItems must be in polish (prefix) notation. + * Fill in the left-fields previously left unfilled. + * The input QueryItems must be in polish (prefix) notation. + * Also, set *needcleanup to true if there are any QI_VALSTOP nodes. */ static void findoprnd(QueryItem *ptr, int size, bool *needcleanup) @@ -687,15 +686,17 @@ parse_tsquery(char *buf, memcpy((void *) GETOPERAND(query), (void *) state.op, state.sumlen); pfree(state.op); - /* Set left operand pointers for every operator. */ + /* + * Set left operand pointers for every operator. While we're at it, + * detect whether there are any QI_VALSTOP nodes. + */ findoprnd(ptr, query->size, &needcleanup); /* - * QI_VALSTOP nodes should be cleaned and OP_PHRASE should be pushed - * down + * If there are QI_VALSTOP nodes, delete them and simplify the tree. */ if (needcleanup) - return cleanup_fakeval_and_phrase(query); + query = cleanup_tsquery_stopwords(query); return query; } @@ -1088,6 +1089,9 @@ tsqueryrecv(PG_FUNCTION_ARGS) */ findoprnd(item, size, &needcleanup); + /* Can't have found any QI_VALSTOP nodes */ + Assert(!needcleanup); + /* Copy operands to output struct */ for (i = 0; i < size; i++) { @@ -1105,9 +1109,6 @@ tsqueryrecv(PG_FUNCTION_ARGS) SET_VARSIZE(query, len + datalen); - if (needcleanup) - PG_RETURN_TSQUERY(cleanup_fakeval_and_phrase(query)); - PG_RETURN_TSQUERY(query); } diff --git a/src/backend/utils/adt/tsquery_cleanup.c b/src/backend/utils/adt/tsquery_cleanup.c index d9ec8ed431..c10c7ef0aa 100644 --- a/src/backend/utils/adt/tsquery_cleanup.c +++ b/src/backend/utils/adt/tsquery_cleanup.c @@ -25,19 +25,6 @@ typedef struct NODE QueryItem *valnode; } NODE; -/* - * To simplify walking on query tree and pushing down of phrase operator - * we define some fake priority here: phrase operator has highest priority - * of any other operators (and we believe here that OP_PHRASE is a highest - * code of operations) and value node has ever highest priority. - * Priority values of other operations don't matter until they are less than - * phrase operator and value node. - */ -#define VALUE_PRIORITY (OP_COUNT + 1) -#define NODE_PRIORITY(x) \ - ( ((x)->valnode->qoperator.type == QI_OPR) ? \ - (x)->valnode->qoperator.oper : VALUE_PRIORITY ) - /* * make query tree from plain view of query */ @@ -207,45 +194,59 @@ clean_NOT(QueryItem *ptr, int *len) } -#ifdef V_UNKNOWN /* exists in Windows headers */ -#undef V_UNKNOWN -#endif -#ifdef V_FALSE /* exists in Solaris headers */ -#undef V_FALSE -#endif - -/* - * output values for result output parameter of clean_fakeval_intree - */ -#define V_UNKNOWN 0 /* the expression can't be evaluated - * statically */ -#define V_TRUE 1 /* the expression is always true (not - * implemented) */ -#define V_FALSE 2 /* the expression is always false (not - * implemented) */ -#define V_STOP 3 /* the expression is a stop word */ - /* - * Remove QI_VALSTOP (stopword nodes) from query tree. + * Remove QI_VALSTOP (stopword) nodes from query tree. + * + * Returns NULL if the query degenerates to nothing. Input must not be NULL. + * + * When we remove a phrase operator due to removing one or both of its + * arguments, we might need to adjust the distance of a parent phrase + * operator. For example, 'a' is a stopword, so: + * (b <-> a) <-> c should become b <2> c + * b <-> (a <-> c) should become b <2> c + * (b <-> (a <-> a)) <-> c should become b <3> c + * b <-> ((a <-> a) <-> c) should become b <3> c + * To handle that, we define two output parameters: + * ladd: amount to add to a phrase distance to the left of this node + * radd: amount to add to a phrase distance to the right of this node + * We need two outputs because we could need to bubble up adjustments to two + * different parent phrase operators. Consider + * w <-> (((a <-> x) <2> (y <3> a)) <-> z) + * After we've removed the two a's and are considering the <2> node (which is + * now just x <2> y), we have an ladd distance of 1 that needs to propagate + * up to the topmost (leftmost) <->, and an radd distance of 3 that needs to + * propagate to the rightmost <->, so that we'll end up with + * w <2> ((x <2> y) <4> z) + * Near the bottom of the tree, we may have subtrees consisting only of + * stopwords. The distances of any phrase operators within such a subtree are + * summed and propagated to both ladd and radd, since we don't know which side + * of the lowest surviving phrase operator we are in. The rule is that any + * subtree that degenerates to NULL must return equal values of ladd and radd, + * and the parent node dealing with it should incorporate only one of those. + * + * Currently, we only implement this adjustment for adjacent phrase operators. + * Thus for example 'x <-> ((a <-> y) | z)' will become 'x <-> (y | z)', which + * isn't ideal, but there is no way to represent the really desired semantics + * without some redesign of the tsquery structure. Certainly it would not be + * any better to convert that to 'x <2> (y | z)'. Since this is such a weird + * corner case, let it go for now. But we can fix it in cases where the + * intervening non-phrase operator also gets removed, for example + * '((x <-> a) | a) <-> y' will become 'x <2> y'. */ static NODE * -clean_fakeval_intree(NODE *node, char *result, int *adddistance) +clean_stopword_intree(NODE *node, int *ladd, int *radd) { - char lresult = V_UNKNOWN, - rresult = V_UNKNOWN; - /* since this function recurses, it could be driven to stack overflow. */ check_stack_depth(); - if (adddistance) - *adddistance = 0; + /* default output parameters indicate no change in parent distance */ + *ladd = *radd = 0; if (node->valnode->type == QI_VAL) return node; else if (node->valnode->type == QI_VALSTOP) { pfree(node); - *result = V_STOP; return NULL; } @@ -253,10 +254,10 @@ clean_fakeval_intree(NODE *node, char *result, int *adddistance) if (node->valnode->qoperator.oper == OP_NOT) { - node->right = clean_fakeval_intree(node->right, &rresult, NULL); + /* NOT doesn't change pattern width, so just report child distances */ + node->right = clean_stopword_intree(node->right, ladd, radd); if (!node->right) { - *result = V_STOP; freetree(node); return NULL; } @@ -264,292 +265,93 @@ clean_fakeval_intree(NODE *node, char *result, int *adddistance) else { NODE *res = node; + bool isphrase; int ndistance, - ldistance = 0, - rdistance = 0; + lladd, + lradd, + rladd, + rradd; - ndistance = (node->valnode->qoperator.oper == OP_PHRASE) ? - node->valnode->qoperator.distance : - 0; + /* First, recurse */ + node->left = clean_stopword_intree(node->left, &lladd, &lradd); + node->right = clean_stopword_intree(node->right, &rladd, &rradd); - node->left = clean_fakeval_intree(node->left, - &lresult, - ndistance ? &ldistance : NULL); + /* Check if current node is OP_PHRASE, get its distance */ + isphrase = (node->valnode->qoperator.oper == OP_PHRASE); + ndistance = isphrase ? node->valnode->qoperator.distance : 0; - node->right = clean_fakeval_intree(node->right, - &rresult, - ndistance ? &rdistance : NULL); - - /* - * ndistance, ldistance and rdistance are greater than zero if their - * corresponding nodes are OP_PHRASE - */ - - if (lresult == V_STOP && rresult == V_STOP) + if (node->left == NULL && node->right == NULL) { - if (adddistance && ndistance) - *adddistance = ldistance + ndistance + rdistance; + /* + * When we collapse out a phrase node entirely, propagate its own + * distance into both *ladd and *radd; it is the responsibility of + * the parent node to count it only once. Also, for a phrase + * node, distances coming from children are summed and propagated + * up to parent (we assume lladd == lradd and rladd == rradd, else + * rule was broken at a lower level). But if this isn't a phrase + * node, take the larger of the two child distances; that + * corresponds to what TS_execute will do in non-stopword cases. + */ + if (isphrase) + *ladd = *radd = lladd + ndistance + rladd; + else + *ladd = *radd = Max(lladd, rladd); freetree(node); - *result = V_STOP; return NULL; } - else if (lresult == V_STOP) + else if (node->left == NULL) { + /* Removing this operator and left subnode */ + /* lladd and lradd are equal/redundant, don't count both */ + if (isphrase) + { + /* operator's own distance must propagate to left */ + *ladd = lladd + ndistance + rladd; + *radd = rradd; + } + else + { + /* at non-phrase op, just forget the left subnode entirely */ + *ladd = rladd; + *radd = rradd; + } res = node->right; - - /* - * propagate distance from current node to the right upper - * subtree. - */ - if (adddistance && ndistance) - *adddistance = rdistance; pfree(node); } - else if (rresult == V_STOP) + else if (node->right == NULL) { + /* Removing this operator and right subnode */ + /* rladd and rradd are equal/redundant, don't count both */ + if (isphrase) + { + /* operator's own distance must propagate to right */ + *ladd = lladd; + *radd = lradd + ndistance + rradd; + } + else + { + /* at non-phrase op, just forget the right subnode entirely */ + *ladd = lladd; + *radd = lradd; + } res = node->left; - - /* - * propagate distance from current node to the upper tree. - */ - if (adddistance && ndistance) - *adddistance = ndistance + ldistance; pfree(node); } - else if (ndistance) - { - node->valnode->qoperator.distance += ldistance; - if (adddistance) - *adddistance = 0; - } - else if (adddistance) + else if (isphrase) { - *adddistance = 0; + /* Absorb appropriate corrections at this level */ + node->valnode->qoperator.distance += lradd + rladd; + /* Propagate up any unaccounted-for corrections */ + *ladd = lladd; + *radd = rradd; } - - return res; - } - return node; -} - -static NODE * -copyNODE(NODE *node) -{ - NODE *cnode = palloc(sizeof(NODE)); - - /* since this function recurses, it could be driven to stack overflow. */ - check_stack_depth(); - - cnode->valnode = palloc(sizeof(QueryItem)); - *(cnode->valnode) = *(node->valnode); - - if (node->valnode->type == QI_OPR) - { - cnode->right = copyNODE(node->right); - if (node->valnode->qoperator.oper != OP_NOT) - cnode->left = copyNODE(node->left); - } - - return cnode; -} - -static NODE * -makeNODE(int8 op, NODE *left, NODE *right) -{ - NODE *node = palloc(sizeof(NODE)); - - /* zeroing allocation to prevent difference in unused bytes */ - node->valnode = palloc0(sizeof(QueryItem)); - - node->valnode->qoperator.type = QI_OPR; - node->valnode->qoperator.oper = op; - - node->left = left; - node->right = right; - - return node; -} - -/* - * Move operation with high priority to the leaves. This guarantees - * that the phrase operator will be near the bottom of the tree. - * An idea behind is do not store position of lexemes during execution - * of ordinary operations (AND, OR, NOT) because it could be expensive. - * Actual transformation will be performed only on subtrees under the - * <-> () operation since it's needed solely for the phrase operator. - * - * Rules: - * a <-> (b | c) => (a <-> b) | (a <-> c) - * (a | b) <-> c => (a <-> c) | (b <-> c) - * a <-> !b => a & !(a <-> b) - * !a <-> b => b & !(a <-> b) - * - * Warnings for readers: - * a <-> b != b <-> a - * - * a (b c) != (a b) c since the phrase lengths are: - * n 2n-1 - */ -static NODE * -normalize_phrase_tree(NODE *node) -{ - /* there should be no stop words at this point */ - Assert(node->valnode->type != QI_VALSTOP); - - if (node->valnode->type == QI_VAL) - return node; - - /* since this function recurses, it could be driven to stack overflow. */ - check_stack_depth(); - - Assert(node->valnode->type == QI_OPR); - - if (node->valnode->qoperator.oper == OP_NOT) - { - NODE *orignode = node; - - /* eliminate NOT sequence */ - while (node->valnode->type == QI_OPR && - node->valnode->qoperator.oper == node->right->valnode->qoperator.oper) - { - node = node->right->right; - } - - if (orignode != node) - /* current node isn't checked yet */ - node = normalize_phrase_tree(node); else - node->right = normalize_phrase_tree(node->right); - } - else if (node->valnode->qoperator.oper == OP_PHRASE) - { - int16 distance; - NODE *X; - - node->left = normalize_phrase_tree(node->left); - node->right = normalize_phrase_tree(node->right); - - /* - * if subtree contains only nodes with higher "priority" then we are - * done. See comment near NODE_PRIORITY() - */ - if (NODE_PRIORITY(node) <= NODE_PRIORITY(node->right) && - NODE_PRIORITY(node) <= NODE_PRIORITY(node->left)) - return node; - - /* - * We can't swap left-right and works only with left child because of - * a <-> b != b <-> a - */ - - distance = node->valnode->qoperator.distance; - - if (node->right->valnode->type == QI_OPR) - { - switch (node->right->valnode->qoperator.oper) - { - case OP_AND: - /* a <-> (b & c) => (a <-> b) & (a <-> c) */ - node = makeNODE(OP_AND, - makeNODE(OP_PHRASE, - node->left, - node->right->left), - makeNODE(OP_PHRASE, - copyNODE(node->left), - node->right->right)); - node->left->valnode->qoperator.distance = - node->right->valnode->qoperator.distance = distance; - break; - case OP_OR: - /* a <-> (b | c) => (a <-> b) | (a <-> c) */ - node = makeNODE(OP_OR, - makeNODE(OP_PHRASE, - node->left, - node->right->left), - makeNODE(OP_PHRASE, - copyNODE(node->left), - node->right->right)); - node->left->valnode->qoperator.distance = - node->right->valnode->qoperator.distance = distance; - break; - case OP_NOT: - /* a <-> !b => a & !(a <-> b) */ - X = node->right; - node->right = node->right->right; - X->right = node; - node = makeNODE(OP_AND, - copyNODE(node->left), - X); - break; - case OP_PHRASE: - /* no-op */ - break; - default: - elog(ERROR, "Wrong type of tsquery node: %d", - node->right->valnode->qoperator.oper); - } - } - - if (node->left->valnode->type == QI_OPR && - node->valnode->qoperator.oper == OP_PHRASE) { - /* - * if the node is still OP_PHRASE, check the left subtree, - * otherwise the whole node will be transformed later. - */ - switch (node->left->valnode->qoperator.oper) - { - case OP_AND: - /* (a & b) <-> c => (a <-> c) & (b <-> c) */ - node = makeNODE(OP_AND, - makeNODE(OP_PHRASE, - node->left->left, - node->right), - makeNODE(OP_PHRASE, - node->left->right, - copyNODE(node->right))); - node->left->valnode->qoperator.distance = - node->right->valnode->qoperator.distance = distance; - break; - case OP_OR: - /* (a | b) <-> c => (a <-> c) | (b <-> c) */ - node = makeNODE(OP_OR, - makeNODE(OP_PHRASE, - node->left->left, - node->right), - makeNODE(OP_PHRASE, - node->left->right, - copyNODE(node->right))); - node->left->valnode->qoperator.distance = - node->right->valnode->qoperator.distance = distance; - break; - case OP_NOT: - /* !a <-> b => b & !(a <-> b) */ - X = node->left; - node->left = node->left->right; - X->right = node; - node = makeNODE(OP_AND, - X, - copyNODE(node->right)); - break; - case OP_PHRASE: - /* no-op */ - break; - default: - elog(ERROR, "Wrong type of tsquery node: %d", - node->left->valnode->qoperator.oper); - } + /* We're keeping a non-phrase operator, so ladd/radd remain 0 */ } - /* continue transformation */ - node = normalize_phrase_tree(node); - } - else /* AND or OR */ - { - node->left = normalize_phrase_tree(node->left); - node->right = normalize_phrase_tree(node->right); + return res; } - return node; } @@ -577,15 +379,19 @@ calcstrlen(NODE *node) return size; } +/* + * Remove QI_VALSTOP (stopword) nodes from TSQuery. + */ TSQuery -cleanup_fakeval_and_phrase(TSQuery in) +cleanup_tsquery_stopwords(TSQuery in) { int32 len, lenstr, commonlen, i; NODE *root; - char result = V_UNKNOWN; + int ladd, + radd; TSQuery out; QueryItem *items; char *operands; @@ -594,8 +400,8 @@ cleanup_fakeval_and_phrase(TSQuery in) return in; /* eliminate stop words */ - root = clean_fakeval_intree(maketree(GETQUERY(in)), &result, NULL); - if (result != V_UNKNOWN) + root = clean_stopword_intree(maketree(GETQUERY(in)), &ladd, &radd); + if (root == NULL) { ereport(NOTICE, (errmsg("text-search query contains only stop words or doesn't contain lexemes, ignored"))); @@ -605,9 +411,6 @@ cleanup_fakeval_and_phrase(TSQuery in) return out; } - /* push OP_PHRASE nodes down */ - root = normalize_phrase_tree(root); - /* * Build TSQuery from plain view */ diff --git a/src/backend/utils/adt/tsquery_op.c b/src/backend/utils/adt/tsquery_op.c index a574b4b257..8f90ce99e0 100644 --- a/src/backend/utils/adt/tsquery_op.c +++ b/src/backend/utils/adt/tsquery_op.c @@ -104,7 +104,7 @@ tsquery_or(PG_FUNCTION_ARGS) PG_FREE_IF_COPY(a, 0); PG_FREE_IF_COPY(b, 1); - PG_RETURN_POINTER(query); + PG_RETURN_TSQUERY(query); } Datum @@ -140,7 +140,7 @@ tsquery_phrase_distance(PG_FUNCTION_ARGS) PG_FREE_IF_COPY(a, 0); PG_FREE_IF_COPY(b, 1); - PG_RETURN_POINTER(cleanup_fakeval_and_phrase(query)); + PG_RETURN_TSQUERY(query); } Datum diff --git a/src/backend/utils/adt/tsquery_rewrite.c b/src/backend/utils/adt/tsquery_rewrite.c index 28f328ddb3..1e09f59005 100644 --- a/src/backend/utils/adt/tsquery_rewrite.c +++ b/src/backend/utils/adt/tsquery_rewrite.c @@ -21,47 +21,43 @@ #include "utils/builtins.h" -static int -addone(int *counters, int last, int total) -{ - /* since this function recurses, it could be driven to stack overflow. */ - check_stack_depth(); - - counters[last]++; - if (counters[last] >= total) - { - if (last == 0) - return 0; - if (addone(counters, last - 1, total - 1) == 0) - return 0; - counters[last] = counters[last - 1] + 1; - } - return 1; -} - /* - * If node is equal to ex, replace it with subs. Replacement is actually done - * by returning either node or a copy of subs. + * If "node" is equal to "ex", return a copy of "subs" instead. + * If "ex" matches a subset of node's children, return a modified version + * of "node" in which those children are replaced with a copy of "subs". + * Otherwise return "node" unmodified. + * + * The QTN_NOCHANGE bit is set in successfully modified nodes, so that + * we won't uselessly recurse into them. + * Also, set *isfind true if we make a replacement. */ static QTNode * findeq(QTNode *node, QTNode *ex, QTNode *subs, bool *isfind) { + /* Can't match unless signature matches and node type matches. */ if ((node->sign & ex->sign) != ex->sign || node->valnode->type != ex->valnode->type) return node; + /* Ignore nodes marked NOCHANGE, too. */ if (node->flags & QTN_NOCHANGE) return node; if (node->valnode->type == QI_OPR) { + /* Must be same operator. */ if (node->valnode->qoperator.oper != ex->valnode->qoperator.oper) return node; if (node->nchild == ex->nchild) { + /* + * Simple case: when same number of children, match if equal. + * (This is reliable when the children were sorted earlier.) + */ if (QTNEq(node, ex)) { + /* Match; delete node and return a copy of subs instead. */ QTNFree(node); if (subs) { @@ -73,79 +69,98 @@ findeq(QTNode *node, QTNode *ex, QTNode *subs, bool *isfind) *isfind = true; } } - else if (node->nchild > ex->nchild) + else if (node->nchild > ex->nchild && ex->nchild > 0) { /* - * AND and NOT are commutative, so we check if a subset of the - * children match. For example, if tnode is A | B | C, and ex is B - * | C, we have a match after we convert tnode to A | (B | C). + * AND and OR are commutative/associative, so we should check if a + * subset of the children match. For example, if node is A|B|C, + * and ex is B|C, we have a match after we notionally convert node + * to A|(B|C). This does not work for NOT or PHRASE nodes, but we + * can't get here for those node types because they have a fixed + * number of children. + * + * Because we expect that the children are sorted, it suffices to + * make one pass through the two lists to find the matches. */ - int *counters = (int *) palloc(sizeof(int) * node->nchild); - int i; - QTNode *tnode = (QTNode *) palloc(sizeof(QTNode)); - - memset(tnode, 0, sizeof(QTNode)); - tnode->child = (QTNode **) palloc(sizeof(QTNode *) * ex->nchild); - tnode->nchild = ex->nchild; - tnode->valnode = (QueryItem *) palloc(sizeof(QueryItem)); - *(tnode->valnode) = *(ex->valnode); - - for (i = 0; i < ex->nchild; i++) - counters[i] = i; - - do + bool *matched; + int nmatched; + int i, + j; + + /* Assert that the subset rule is OK */ + Assert(node->valnode->qoperator.oper == OP_AND || + node->valnode->qoperator.oper == OP_OR); + + /* matched[] will record which children of node matched */ + matched = (bool *) palloc0(node->nchild * sizeof(bool)); + nmatched = 0; + i = j = 0; + while (i < node->nchild && j < ex->nchild) { - tnode->sign = 0; - for (i = 0; i < ex->nchild; i++) + int cmp = QTNodeCompare(node->child[i], ex->child[j]); + + if (cmp == 0) { - tnode->child[i] = node->child[counters[i]]; - tnode->sign |= tnode->child[i]->sign; + /* match! */ + matched[i] = true; + nmatched++; + i++, j++; } + else if (cmp < 0) + { + /* node->child[i] has no match, ignore it */ + i++; + } + else + { + /* ex->child[j] has no match; we can give up immediately */ + break; + } + } - if (QTNEq(tnode, ex)) + if (nmatched == ex->nchild) + { + /* collapse out the matched children of node */ + j = 0; + for (i = 0; i < node->nchild; i++) { - int j = 0; - - pfree(tnode->valnode); - pfree(tnode->child); - pfree(tnode); - if (subs) - { - tnode = QTNCopy(subs); - tnode->flags = QTN_NOCHANGE | QTN_NEEDFREE; - } + if (matched[i]) + QTNFree(node->child[i]); else - tnode = NULL; - - node->child[counters[0]] = tnode; - - for (i = 1; i < ex->nchild; i++) - node->child[counters[i]] = NULL; - for (i = 0; i < node->nchild; i++) - { - if (node->child[i]) - { - node->child[j] = node->child[i]; - j++; - } - } + node->child[j++] = node->child[i]; + } - node->nchild = j; + /* and instead insert a copy of subs */ + if (subs) + { + subs = QTNCopy(subs); + subs->flags |= QTN_NOCHANGE; + node->child[j++] = subs; + } - *isfind = true; + node->nchild = j; + + /* + * At this point we might have a node with zero or one child, + * which should be simplified. But we leave it to our caller + * (dofindsubquery) to take care of that. + */ + + /* + * Re-sort the node to put new child in the right place. This + * is a bit bogus, because it won't matter for findsubquery's + * remaining processing, and it's insufficient to prepare the + * tree for another search (we would need to re-flatten as + * well, and we don't want to do that because we'd lose the + * QTN_NOCHANGE marking on the new child). But it's needed to + * keep the results the same as the regression tests expect. + */ + QTNSort(node); - break; - } - } while (addone(counters, ex->nchild - 1, node->nchild)); - if (tnode && (tnode->flags & QTN_NOCHANGE) == 0) - { - pfree(tnode->valnode); - pfree(tnode->child); - pfree(tnode); + *isfind = true; } - else - QTNSort(node); - pfree(counters); + + pfree(matched); } } else @@ -173,47 +188,56 @@ findeq(QTNode *node, QTNode *ex, QTNode *subs, bool *isfind) return node; } +/* + * Recursive guts of findsubquery(): attempt to replace "ex" with "subs" + * at the root node, and if we failed to do so, recursively match against + * child nodes. + * + * Delete any void subtrees resulting from the replacement. + * In the following example '5' is replaced by empty operand: + * + * AND -> 6 + * / \ + * 5 OR + * / \ + * 6 5 + */ static QTNode * dofindsubquery(QTNode *root, QTNode *ex, QTNode *subs, bool *isfind) { /* since this function recurses, it could be driven to stack overflow. */ check_stack_depth(); - root = findeq(root, ex, subs, isfind); - - if (root && (root->flags & QTN_NOCHANGE) == 0 && root->valnode->type == QI_OPR) - { - int i; - - for (i = 0; i < root->nchild; i++) - root->child[i] = dofindsubquery(root->child[i], ex, subs, isfind); - } - - return root; -} + /* also, since it's a bit expensive, let's check for query cancel. */ + CHECK_FOR_INTERRUPTS(); -static QTNode * -dropvoidsubtree(QTNode *root) -{ - if (!root) - return NULL; + /* match at the node itself */ + root = findeq(root, ex, subs, isfind); - if (root->valnode->type == QI_OPR) + /* unless we matched here, consider matches at child nodes */ + if (root && (root->flags & QTN_NOCHANGE) == 0 && + root->valnode->type == QI_OPR) { int i, j = 0; + /* + * Any subtrees that are replaced by NULL must be dropped from the + * tree. + */ for (i = 0; i < root->nchild; i++) { - if (root->child[i]) - { - root->child[j] = root->child[i]; + root->child[j] = dofindsubquery(root->child[i], ex, subs, isfind); + if (root->child[j]) j++; - } } root->nchild = j; + /* + * If we have just zero or one remaining child node, simplify out this + * operator node. + */ if (root->nchild == 0) { QTNFree(root); @@ -231,6 +255,14 @@ dropvoidsubtree(QTNode *root) return root; } +/* + * Substitute "subs" for "ex" throughout the QTNode tree at root. + * + * If isfind isn't NULL, set *isfind to show whether we made any substitution. + * + * Both "root" and "ex" must have been through QTNTernary and QTNSort + * to ensure reliable matching. + */ QTNode * findsubquery(QTNode *root, QTNode *ex, QTNode *subs, bool *isfind) { @@ -238,9 +270,6 @@ findsubquery(QTNode *root, QTNode *ex, QTNode *subs, bool *isfind) root = dofindsubquery(root, ex, subs, &DidFind); - if (!subs && DidFind) - root = dropvoidsubtree(root); - if (isfind) *isfind = DidFind; @@ -344,6 +373,7 @@ tsquery_rewrite_query(PG_FUNCTION_ARGS) { /* ready the tree for another pass */ QTNClearFlags(tree, QTN_NOCHANGE); + QTNTernary(tree); QTNSort(tree); } } diff --git a/src/backend/utils/adt/tsquery_util.c b/src/backend/utils/adt/tsquery_util.c index 0f338aa653..9add11f657 100644 --- a/src/backend/utils/adt/tsquery_util.c +++ b/src/backend/utils/adt/tsquery_util.c @@ -17,6 +17,9 @@ #include "tsearch/ts_utils.h" #include "miscadmin.h" +/* + * Build QTNode tree for a tsquery given in QueryItem array format. + */ QTNode * QT2QTN(QueryItem *in, char *operand) { @@ -50,6 +53,12 @@ QT2QTN(QueryItem *in, char *operand) return node; } +/* + * Free a QTNode tree. + * + * Referenced "word" and "valnode" items are freed if marked as transient + * by flags. + */ void QTNFree(QTNode *in) { @@ -62,26 +71,27 @@ QTNFree(QTNode *in) if (in->valnode->type == QI_VAL && in->word && (in->flags & QTN_WORDFREE) != 0) pfree(in->word); - if (in->child) + if (in->valnode->type == QI_OPR) { - if (in->valnode) - { - if (in->valnode->type == QI_OPR && in->nchild > 0) - { - int i; - - for (i = 0; i < in->nchild; i++) - QTNFree(in->child[i]); - } - if (in->flags & QTN_NEEDFREE) - pfree(in->valnode); - } - pfree(in->child); + int i; + + for (i = 0; i < in->nchild; i++) + QTNFree(in->child[i]); } + if (in->child) + pfree(in->child); + + if (in->flags & QTN_NEEDFREE) + pfree(in->valnode); pfree(in); } +/* + * Sort comparator for QTNodes. + * + * The sort order is somewhat arbitrary. + */ int QTNodeCompare(QTNode *an, QTNode *bn) { @@ -135,12 +145,19 @@ QTNodeCompare(QTNode *an, QTNode *bn) } } +/* + * qsort comparator for QTNode pointers. + */ static int cmpQTN(const void *a, const void *b) { return QTNodeCompare(*(QTNode *const *) a, *(QTNode *const *) b); } +/* + * Canonicalize a QTNode tree by sorting the children of AND/OR nodes + * into an arbitrary but well-defined order. + */ void QTNSort(QTNode *in) { @@ -158,13 +175,16 @@ QTNSort(QTNode *in) qsort((void *) in->child, in->nchild, sizeof(QTNode *), cmpQTN); } +/* + * Are two QTNode trees equal according to QTNodeCompare? + */ bool QTNEq(QTNode *a, QTNode *b) { uint32 sign = a->sign & b->sign; if (!(sign == a->sign && sign == b->sign)) - return 0; + return false; return (QTNodeCompare(a, b) == 0) ? true : false; } @@ -190,14 +210,17 @@ QTNTernary(QTNode *in) for (i = 0; i < in->nchild; i++) QTNTernary(in->child[i]); + /* Only AND and OR are associative, so don't flatten other node types */ + if (in->valnode->qoperator.oper != OP_AND && + in->valnode->qoperator.oper != OP_OR) + return; + for (i = 0; i < in->nchild; i++) { QTNode *cc = in->child[i]; - /* OP_Phrase isn't associative */ if (cc->valnode->type == QI_OPR && - in->valnode->qoperator.oper == cc->valnode->qoperator.oper && - in->valnode->qoperator.oper != OP_PHRASE) + in->valnode->qoperator.oper == cc->valnode->qoperator.oper) { int oldnchild = in->nchild; @@ -236,9 +259,6 @@ QTNBinary(QTNode *in) for (i = 0; i < in->nchild; i++) QTNBinary(in->child[i]); - if (in->nchild <= 2) - return; - while (in->nchild > 2) { QTNode *nn = (QTNode *) palloc0(sizeof(QTNode)); @@ -263,8 +283,9 @@ QTNBinary(QTNode *in) } /* - * Count the total length of operand string in tree, including '\0'- - * terminators. + * Count the total length of operand strings in tree (including '\0'- + * terminators) and the total number of nodes. + * Caller must initialize *sumlen and *nnode to zeroes. */ static void cntsize(QTNode *in, int *sumlen, int *nnode) @@ -293,6 +314,10 @@ typedef struct char *curoperand; } QTN2QTState; +/* + * Recursively convert a QTNode tree into flat tsquery format. + * Caller must have allocated arrays of the correct size. + */ static void fillQT(QTN2QTState *state, QTNode *in) { @@ -330,6 +355,9 @@ fillQT(QTN2QTState *state, QTNode *in) } } +/* + * Build flat tsquery from a QTNode tree. + */ TSQuery QTN2QT(QTNode *in) { @@ -358,6 +386,11 @@ QTN2QT(QTNode *in) return out; } +/* + * Copy a QTNode tree. + * + * Modifiable copies of the words and valnodes are made, too. + */ QTNode * QTNCopy(QTNode *in) { @@ -393,6 +426,9 @@ QTNCopy(QTNode *in) return out; } +/* + * Clear the specified flag bit(s) in all nodes of a QTNode tree. + */ void QTNClearFlags(QTNode *in, uint32 flags) { diff --git a/src/backend/utils/adt/tsrank.c b/src/backend/utils/adt/tsrank.c index d887a14d05..63510f58bd 100644 --- a/src/backend/utils/adt/tsrank.c +++ b/src/backend/utils/adt/tsrank.c @@ -898,7 +898,7 @@ calc_rank_cd(const float4 *arrdata, TSVector txt, TSQuery query, int method) /* * if doc are big enough then ext.q may be equal to ext.p due to limit - * of posional information. In this case we approximate number of + * of positional information. In this case we approximate number of * noise word as half cover's length */ nNoise = (ext.q - ext.p) - (ext.end - ext.begin); @@ -907,7 +907,7 @@ calc_rank_cd(const float4 *arrdata, TSVector txt, TSQuery query, int method) Wdoc += Cpos / ((double) (1 + nNoise)); CurExtPos = ((double) (ext.q + ext.p)) / 2.0; - if (NExtent > 0 && CurExtPos > PrevExtPos /* prevent devision by + if (NExtent > 0 && CurExtPos > PrevExtPos /* prevent division by * zero in a case of multiple lexize */ ) SumDist += 1.0 / (CurExtPos - PrevExtPos); diff --git a/src/backend/utils/adt/tsvector_op.c b/src/backend/utils/adt/tsvector_op.c index ad5a254c57..f1d26fcfa8 100644 --- a/src/backend/utils/adt/tsvector_op.c +++ b/src/backend/utils/adt/tsvector_op.c @@ -11,9 +11,10 @@ * *------------------------------------------------------------------------- */ - #include "postgres.h" +#include + #include "access/htup_details.h" #include "catalog/namespace.h" #include "catalog/pg_type.h" @@ -1405,140 +1406,394 @@ checkcondition_str(void *checkval, QueryOperand *val, ExecPhraseData *data) } /* - * Check for phrase condition. Fallback to the AND operation - * if there is no positional information. + * Compute output position list for a tsquery operator in phrase mode. + * + * Merge the position lists in Ldata and Rdata as specified by "emit", + * returning the result list into *data. The input position lists must be + * sorted and unique, and the output will be as well. + * + * data: pointer to initially-all-zeroes output struct, or NULL + * Ldata, Rdata: input position lists + * emit: bitmask of TSPO_XXX flags + * Loffset: offset to be added to Ldata positions before comparing/outputting + * Roffset: offset to be added to Rdata positions before comparing/outputting + * max_npos: maximum possible required size of output position array + * + * Loffset and Roffset should not be negative, else we risk trying to output + * negative positions, which won't fit into WordEntryPos. + * + * Returns true if any positions were emitted to *data; or if data is NULL, + * returns true if any positions would have been emitted. */ +#define TSPO_L_ONLY 0x01 /* emit positions appearing only in L */ +#define TSPO_R_ONLY 0x02 /* emit positions appearing only in R */ +#define TSPO_BOTH 0x04 /* emit positions appearing in both L&R */ + static bool -TS_phrase_execute(QueryItem *curitem, - void *checkval, uint32 flags, ExecPhraseData *data, - bool (*chkcond) (void *, QueryOperand *, ExecPhraseData *)) +TS_phrase_output(ExecPhraseData *data, + ExecPhraseData *Ldata, + ExecPhraseData *Rdata, + int emit, + int Loffset, + int Roffset, + int max_npos) { - /* since this function recurses, it could be driven to stack overflow */ - check_stack_depth(); + int Lindex, + Rindex; - if (curitem->type == QI_VAL) + /* Loop until both inputs are exhausted */ + Lindex = Rindex = 0; + while (Lindex < Ldata->npos || Rindex < Rdata->npos) { - return chkcond(checkval, (QueryOperand *) curitem, data); - } - else - { - ExecPhraseData Ldata = {0, false, NULL}, - Rdata = {0, false, NULL}; - WordEntryPos *Lpos, - *LposStart, - *Rpos, - *pos_iter = NULL; - - Assert(curitem->qoperator.oper == OP_PHRASE); - - if (!TS_phrase_execute(curitem + curitem->qoperator.left, - checkval, flags, &Ldata, chkcond)) - return false; - - if (!TS_phrase_execute(curitem + 1, checkval, flags, &Rdata, chkcond)) - return false; + int Lpos, + Rpos; + int output_pos = 0; /* - * if at least one of the operands has no position information, then - * return false. But if TS_EXEC_PHRASE_AS_AND flag is set then we - * return true as it is a AND operation + * Fetch current values to compare. WEP_GETPOS() is needed because + * ExecPhraseData->data can point to a tsvector's WordEntryPosVector. */ - if (Ldata.npos == 0 || Rdata.npos == 0) - return (flags & TS_EXEC_PHRASE_AS_AND) ? true : false; + if (Lindex < Ldata->npos) + Lpos = WEP_GETPOS(Ldata->pos[Lindex]) + Loffset; + else + { + /* L array exhausted, so we're done if R_ONLY isn't set */ + if (!(emit & TSPO_R_ONLY)) + break; + Lpos = INT_MAX; + } + if (Rindex < Rdata->npos) + Rpos = WEP_GETPOS(Rdata->pos[Rindex]) + Roffset; + else + { + /* R array exhausted, so we're done if L_ONLY isn't set */ + if (!(emit & TSPO_L_ONLY)) + break; + Rpos = INT_MAX; + } - /* - * Result of the operation is a list of the corresponding positions of - * RIGHT operand. - */ - if (data) + /* Merge-join the two input lists */ + if (Lpos < Rpos) + { + /* Lpos is not matched in Rdata, should we output it? */ + if (emit & TSPO_L_ONLY) + output_pos = Lpos; + Lindex++; + } + else if (Lpos == Rpos) { - if (!Rdata.allocated) + /* Lpos and Rpos match ... should we output it? */ + if (emit & TSPO_BOTH) + output_pos = Rpos; + Lindex++; + Rindex++; + } + else /* Lpos > Rpos */ + { + /* Rpos is not matched in Ldata, should we output it? */ + if (emit & TSPO_R_ONLY) + output_pos = Rpos; + Rindex++; + } + if (output_pos > 0) + { + if (data) + { + /* Store position, first allocating output array if needed */ + if (data->pos == NULL) + { + data->pos = (WordEntryPos *) + palloc(max_npos * sizeof(WordEntryPos)); + data->allocated = true; + } + data->pos[data->npos++] = output_pos; + } + else + { /* - * OP_PHRASE is based on the OP_AND, so the number of - * resulting positions could not be greater than the total - * amount of operands. + * Exact positions not needed, so return true as soon as we + * know there is at least one. */ - data->pos = palloc(sizeof(WordEntryPos) * Min(Ldata.npos, Rdata.npos)); - else - data->pos = Rdata.pos; - - data->allocated = true; - data->npos = 0; - pos_iter = data->pos; + return true; + } } + } - /* - * Find matches by distance, WEP_GETPOS() is needed because - * ExecPhraseData->data can point to the tsvector's WordEntryPosVector - */ + if (data && data->npos > 0) + { + /* Let's assert we didn't overrun the array */ + Assert(data->npos <= max_npos); + return true; + } + return false; +} + +/* + * Execute tsquery at or below an OP_PHRASE operator. + * + * This handles tsquery execution at recursion levels where we need to care + * about match locations. + * + * In addition to the same arguments used for TS_execute, the caller may pass + * a preinitialized-to-zeroes ExecPhraseData struct, to be filled with lexeme + * match position info on success. data == NULL if no position data need be + * returned. (In practice, outside callers pass NULL, and only the internal + * recursion cases pass a data pointer.) + * Note: the function assumes data != NULL for operators other than OP_PHRASE. + * This is OK because an outside call always starts from an OP_PHRASE node. + * + * The detailed semantics of the match data, given that the function returned + * "true" (successful match, or possible match), are: + * + * npos > 0, negate = false: + * query is matched at specified position(s) (and only those positions) + * npos > 0, negate = true: + * query is matched at all positions *except* specified position(s) + * npos = 0, negate = false: + * query is possibly matched, matching position(s) are unknown + * (this should only be returned when TS_EXEC_PHRASE_NO_POS flag is set) + * npos = 0, negate = true: + * query is matched at all positions + * + * Successful matches also return a "width" value which is the match width in + * lexemes, less one. Hence, "width" is zero for simple one-lexeme matches, + * and is the sum of the phrase operator distances for phrase matches. Note + * that when width > 0, the listed positions represent the ends of matches not + * the starts. (This unintuitive rule is needed to avoid possibly generating + * negative positions, which wouldn't fit into the WordEntryPos arrays.) + * + * When the function returns "false" (no match), it must return npos = 0, + * negate = false (which is the state initialized by the caller); but the + * "width" output in such cases is undefined. + */ +static bool +TS_phrase_execute(QueryItem *curitem, void *arg, uint32 flags, + TSExecuteCallback chkcond, + ExecPhraseData *data) +{ + ExecPhraseData Ldata, + Rdata; + bool lmatch, + rmatch; + int Loffset, + Roffset, + maxwidth; + + /* since this function recurses, it could be driven to stack overflow */ + check_stack_depth(); + + if (curitem->type == QI_VAL) + return chkcond(arg, (QueryOperand *) curitem, data); + + switch (curitem->qoperator.oper) + { + case OP_NOT: - Rpos = Rdata.pos; - LposStart = Ldata.pos; - while (Rpos < Rdata.pos + Rdata.npos) - { /* - * We need to check all possible distances, so reset Lpos to - * guaranteed not yet satisfied position. + * Because a "true" result with no specific positions is taken as + * uncertain, we need no special care here for !TS_EXEC_CALC_NOT. + * If it's a false positive, the right things happen anyway. + * + * Also, we need not touch data->width, since a NOT operation does + * not change the match width. */ - Lpos = LposStart; - while (Lpos < Ldata.pos + Ldata.npos) + if (TS_phrase_execute(curitem + 1, arg, flags, chkcond, data)) { - if (WEP_GETPOS(*Rpos) - WEP_GETPOS(*Lpos) == - curitem->qoperator.distance) + if (data->npos > 0) { - /* MATCH! */ - if (data) - { - /* Store position for upper phrase operator */ - *pos_iter = WEP_GETPOS(*Rpos); - pos_iter++; - - /* - * Set left start position to next, because current - * one could not satisfy distance for any other right - * position - */ - LposStart = Lpos + 1; - break; - } - else - { - /* - * We are in the root of the phrase tree and hence we - * don't have to store the resulting positions - */ - return true; - } - + /* we have some positions, invert negate flag */ + data->negate = !data->negate; + return true; } - else if (WEP_GETPOS(*Rpos) <= WEP_GETPOS(*Lpos) || - WEP_GETPOS(*Rpos) - WEP_GETPOS(*Lpos) < - curitem->qoperator.distance) + else if (data->negate) { - /* - * Go to the next Rpos, because Lpos is ahead or on less - * distance than required by current operator - */ - break; - + /* change "match everywhere" to "match nowhere" */ + data->negate = false; + return false; } + /* match positions are, and remain, uncertain */ + return true; + } + else + { + /* change "match nowhere" to "match everywhere" */ + Assert(data->npos == 0 && !data->negate); + data->negate = true; + return true; + } + + case OP_PHRASE: + case OP_AND: + memset(&Ldata, 0, sizeof(Ldata)); + memset(&Rdata, 0, sizeof(Rdata)); + + if (!TS_phrase_execute(curitem + curitem->qoperator.left, + arg, flags, chkcond, &Ldata)) + return false; + + if (!TS_phrase_execute(curitem + 1, + arg, flags, chkcond, &Rdata)) + return false; - Lpos++; + /* + * If either operand has no position information, then we can't + * return position data, only a "possible match" result. "Possible + * match" answers are only wanted when TS_EXEC_PHRASE_NO_POS flag + * is set, otherwise return false. + */ + if ((Ldata.npos == 0 && !Ldata.negate) || + (Rdata.npos == 0 && !Rdata.negate)) + return (flags & TS_EXEC_PHRASE_NO_POS) ? true : false; + + if (curitem->qoperator.oper == OP_PHRASE) + { + /* + * Compute Loffset and Roffset suitable for phrase match, and + * compute overall width of whole phrase match. + */ + Loffset = curitem->qoperator.distance + Rdata.width; + Roffset = 0; + if (data) + data->width = curitem->qoperator.distance + + Ldata.width + Rdata.width; + } + else + { + /* + * For OP_AND, set output width and alignment like OP_OR (see + * comment below) + */ + maxwidth = Max(Ldata.width, Rdata.width); + Loffset = maxwidth - Ldata.width; + Roffset = maxwidth - Rdata.width; + if (data) + data->width = maxwidth; } - Rpos++; - } + if (Ldata.negate && Rdata.negate) + { + /* !L & !R: treat as !(L | R) */ + (void) TS_phrase_output(data, &Ldata, &Rdata, + TSPO_BOTH | TSPO_L_ONLY | TSPO_R_ONLY, + Loffset, Roffset, + Ldata.npos + Rdata.npos); + if (data) + data->negate = true; + return true; + } + else if (Ldata.negate) + { + /* !L & R */ + return TS_phrase_output(data, &Ldata, &Rdata, + TSPO_R_ONLY, + Loffset, Roffset, + Rdata.npos); + } + else if (Rdata.negate) + { + /* L & !R */ + return TS_phrase_output(data, &Ldata, &Rdata, + TSPO_L_ONLY, + Loffset, Roffset, + Ldata.npos); + } + else + { + /* straight AND */ + return TS_phrase_output(data, &Ldata, &Rdata, + TSPO_BOTH, + Loffset, Roffset, + Min(Ldata.npos, Rdata.npos)); + } - if (data) - { - data->npos = pos_iter - data->pos; + case OP_OR: + memset(&Ldata, 0, sizeof(Ldata)); + memset(&Rdata, 0, sizeof(Rdata)); - if (data->npos > 0) + lmatch = TS_phrase_execute(curitem + curitem->qoperator.left, + arg, flags, chkcond, &Ldata); + rmatch = TS_phrase_execute(curitem + 1, + arg, flags, chkcond, &Rdata); + + if (!lmatch && !rmatch) + return false; + + /* + * If a valid operand has no position information, then we can't + * return position data, only a "possible match" result. "Possible + * match" answers are only wanted when TS_EXEC_PHRASE_NO_POS flag + * is set, otherwise return false. + */ + if ((lmatch && Ldata.npos == 0 && !Ldata.negate) || + (rmatch && Rdata.npos == 0 && !Rdata.negate)) + return (flags & TS_EXEC_PHRASE_NO_POS) ? true : false; + + /* + * Cope with undefined output width from failed submatch. (This + * takes less code than trying to ensure that all failure returns + * set data->width to zero.) + */ + if (!lmatch) + Ldata.width = 0; + if (!rmatch) + Rdata.width = 0; + + /* + * For OP_AND and OP_OR, report the width of the wider of the two + * inputs, and align the narrower input's positions to the right + * end of that width. This rule deals at least somewhat + * reasonably with cases like "x <-> (y | z <-> q)". + */ + maxwidth = Max(Ldata.width, Rdata.width); + Loffset = maxwidth - Ldata.width; + Roffset = maxwidth - Rdata.width; + data->width = maxwidth; + + if (Ldata.negate && Rdata.negate) + { + /* !L | !R: treat as !(L & R) */ + (void) TS_phrase_output(data, &Ldata, &Rdata, + TSPO_BOTH, + Loffset, Roffset, + Min(Ldata.npos, Rdata.npos)); + data->negate = true; return true; - } + } + else if (Ldata.negate) + { + /* !L | R: treat as !(L & !R) */ + (void) TS_phrase_output(data, &Ldata, &Rdata, + TSPO_L_ONLY, + Loffset, Roffset, + Ldata.npos); + data->negate = true; + return true; + } + else if (Rdata.negate) + { + /* L | !R: treat as !(!L & R) */ + (void) TS_phrase_output(data, &Ldata, &Rdata, + TSPO_R_ONLY, + Loffset, Roffset, + Rdata.npos); + data->negate = true; + return true; + } + else + { + /* straight OR */ + return TS_phrase_output(data, &Ldata, &Rdata, + TSPO_BOTH | TSPO_L_ONLY | TSPO_R_ONLY, + Loffset, Roffset, + Ldata.npos + Rdata.npos); + } + + default: + elog(ERROR, "unrecognized operator: %d", curitem->qoperator.oper); } + /* not reachable, but keep compiler quiet */ return false; } @@ -1546,50 +1801,48 @@ TS_phrase_execute(QueryItem *curitem, /* * Evaluate tsquery boolean expression. * - * chkcond is a callback function used to evaluate each VAL node in the query. - * checkval can be used to pass information to the callback. TS_execute doesn't - * do anything with it. - * It believes that ordinary operators are always closier to root than phrase - * operator, so, TS_execute() may not take care of lexeme's position at all. + * curitem: current tsquery item (initially, the first one) + * arg: opaque value to pass through to callback function + * flags: bitmask of flag bits shown in ts_utils.h + * chkcond: callback function to check whether a primitive value is present + * + * The logic here deals only with operators above any phrase operator, for + * which we do not need to worry about lexeme positions. As soon as we hit an + * OP_PHRASE operator, we pass it off to TS_phrase_execute which does worry. */ bool -TS_execute(QueryItem *curitem, void *checkval, uint32 flags, - bool (*chkcond) (void *checkval, QueryOperand *val, ExecPhraseData *data)) +TS_execute(QueryItem *curitem, void *arg, uint32 flags, + TSExecuteCallback chkcond) { /* since this function recurses, it could be driven to stack overflow */ check_stack_depth(); if (curitem->type == QI_VAL) - return chkcond(checkval, (QueryOperand *) curitem, + return chkcond(arg, (QueryOperand *) curitem, NULL /* we don't need position info */ ); switch (curitem->qoperator.oper) { case OP_NOT: if (flags & TS_EXEC_CALC_NOT) - return !TS_execute(curitem + 1, checkval, flags, chkcond); + return !TS_execute(curitem + 1, arg, flags, chkcond); else return true; case OP_AND: - if (TS_execute(curitem + curitem->qoperator.left, checkval, flags, chkcond)) - return TS_execute(curitem + 1, checkval, flags, chkcond); + if (TS_execute(curitem + curitem->qoperator.left, arg, flags, chkcond)) + return TS_execute(curitem + 1, arg, flags, chkcond); else return false; case OP_OR: - if (TS_execute(curitem + curitem->qoperator.left, checkval, flags, chkcond)) + if (TS_execute(curitem + curitem->qoperator.left, arg, flags, chkcond)) return true; else - return TS_execute(curitem + 1, checkval, flags, chkcond); + return TS_execute(curitem + 1, arg, flags, chkcond); case OP_PHRASE: - - /* - * do not check TS_EXEC_PHRASE_AS_AND here because chkcond() could - * do something more if it's called from TS_phrase_execute() - */ - return TS_phrase_execute(curitem, checkval, flags, NULL, chkcond); + return TS_phrase_execute(curitem, arg, flags, chkcond, NULL); default: elog(ERROR, "unrecognized operator: %d", curitem->qoperator.oper); @@ -1673,7 +1926,8 @@ ts_match_vq(PG_FUNCTION_ARGS) CHKVAL chkval; bool result; - if (!val->size || !query->size) + /* empty query matches nothing */ + if (!query->size) { PG_FREE_IF_COPY(val, 0); PG_FREE_IF_COPY(query, 1); @@ -1684,12 +1938,10 @@ ts_match_vq(PG_FUNCTION_ARGS) chkval.arre = chkval.arrb + val->size; chkval.values = STRPTR(val); chkval.operand = GETOPERAND(query); - result = TS_execute( - GETQUERY(query), + result = TS_execute(GETQUERY(query), &chkval, TS_EXEC_CALC_NOT, - checkcondition_str - ); + checkcondition_str); PG_FREE_IF_COPY(val, 0); PG_FREE_IF_COPY(query, 1); diff --git a/src/backend/utils/adt/varbit.c b/src/backend/utils/adt/varbit.c index 75e6a46476..397eecc564 100644 --- a/src/backend/utils/adt/varbit.c +++ b/src/backend/utils/adt/varbit.c @@ -305,7 +305,7 @@ bit_recv(PG_FUNCTION_ARGS) bits8 mask; bitlen = pq_getmsgint(buf, sizeof(int32)); - if (bitlen < 0) + if (bitlen < 0 || bitlen > VARBITMAXLEN) ereport(ERROR, (errcode(ERRCODE_INVALID_BINARY_REPRESENTATION), errmsg("invalid length in external bit string"))); @@ -368,7 +368,7 @@ bit(PG_FUNCTION_ARGS) bits8 mask; /* No work if typmod is invalid or supplied data matches it already */ - if (len <= 0 || len == VARBITLEN(arg)) + if (len <= 0 || len > VARBITMAXLEN || len == VARBITLEN(arg)) PG_RETURN_VARBIT_P(arg); if (!isExplicit) @@ -621,7 +621,7 @@ varbit_recv(PG_FUNCTION_ARGS) bits8 mask; bitlen = pq_getmsgint(buf, sizeof(int32)); - if (bitlen < 0) + if (bitlen < 0 || bitlen > VARBITMAXLEN) ereport(ERROR, (errcode(ERRCODE_INVALID_BINARY_REPRESENTATION), errmsg("invalid length in external bit string"))); @@ -1387,9 +1387,14 @@ bitshiftleft(PG_FUNCTION_ARGS) /* Negative shift is a shift to the right */ if (shft < 0) + { + /* Prevent integer overflow in negation */ + if (shft < -VARBITMAXLEN) + shft = -VARBITMAXLEN; PG_RETURN_DATUM(DirectFunctionCall2(bitshiftright, VarBitPGetDatum(arg), Int32GetDatum(-shft))); + } result = (VarBit *) palloc(VARSIZE(arg)); SET_VARSIZE(result, VARSIZE(arg)); @@ -1447,9 +1452,14 @@ bitshiftright(PG_FUNCTION_ARGS) /* Negative shift is a shift to the left */ if (shft < 0) + { + /* Prevent integer overflow in negation */ + if (shft < -VARBITMAXLEN) + shft = -VARBITMAXLEN; PG_RETURN_DATUM(DirectFunctionCall2(bitshiftleft, VarBitPGetDatum(arg), Int32GetDatum(-shft))); + } result = (VarBit *) palloc(VARSIZE(arg)); SET_VARSIZE(result, VARSIZE(arg)); @@ -1507,7 +1517,7 @@ bitfromint4(PG_FUNCTION_ARGS) int destbitsleft, srcbitsleft; - if (typmod <= 0) + if (typmod <= 0 || typmod > VARBITMAXLEN) typmod = 1; /* default bit length */ rlen = VARBITTOTALLEN(typmod); @@ -1587,7 +1597,7 @@ bitfromint8(PG_FUNCTION_ARGS) int destbitsleft, srcbitsleft; - if (typmod <= 0) + if (typmod <= 0 || typmod > VARBITMAXLEN) typmod = 1; /* default bit length */ rlen = VARBITTOTALLEN(typmod); diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c index bf7c0cd735..55876bb795 100644 --- a/src/backend/utils/adt/varlena.c +++ b/src/backend/utils/adt/varlena.c @@ -3133,7 +3133,7 @@ SplitIdentifierString(char *rawstring, char separator, *namelist = NIL; - while (isspace((unsigned char) *nextp)) + while (scanner_isspace(*nextp)) nextp++; /* skip leading whitespace */ if (*nextp == '\0') @@ -3171,7 +3171,7 @@ SplitIdentifierString(char *rawstring, char separator, curname = nextp; while (*nextp && *nextp != separator && - !isspace((unsigned char) *nextp)) + !scanner_isspace(*nextp)) nextp++; endp = nextp; if (curname == nextp) @@ -3193,13 +3193,13 @@ SplitIdentifierString(char *rawstring, char separator, pfree(downname); } - while (isspace((unsigned char) *nextp)) + while (scanner_isspace(*nextp)) nextp++; /* skip trailing whitespace */ if (*nextp == separator) { nextp++; - while (isspace((unsigned char) *nextp)) + while (scanner_isspace(*nextp)) nextp++; /* skip leading whitespace for next */ /* we expect another name, so done remains false */ } @@ -3258,7 +3258,7 @@ SplitDirectoriesString(char *rawstring, char separator, *namelist = NIL; - while (isspace((unsigned char) *nextp)) + while (scanner_isspace(*nextp)) nextp++; /* skip leading whitespace */ if (*nextp == '\0') @@ -3295,7 +3295,7 @@ SplitDirectoriesString(char *rawstring, char separator, while (*nextp && *nextp != separator) { /* trailing whitespace should not be included in name */ - if (!isspace((unsigned char) *nextp)) + if (!scanner_isspace(*nextp)) endp = nextp + 1; nextp++; } @@ -3303,13 +3303,13 @@ SplitDirectoriesString(char *rawstring, char separator, return false; /* empty unquoted name not allowed */ } - while (isspace((unsigned char) *nextp)) + while (scanner_isspace(*nextp)) nextp++; /* skip trailing whitespace */ if (*nextp == separator) { nextp++; - while (isspace((unsigned char) *nextp)) + while (scanner_isspace(*nextp)) nextp++; /* skip leading whitespace for next */ /* we expect another name, so done remains false */ } diff --git a/src/backend/utils/adt/windowfuncs.c b/src/backend/utils/adt/windowfuncs.c index 3c1d3cf62d..abab5c11f7 100644 --- a/src/backend/utils/adt/windowfuncs.c +++ b/src/backend/utils/adt/windowfuncs.c @@ -342,7 +342,7 @@ window_lag(PG_FUNCTION_ARGS) /* * lag_with_offset - * returns the value of VE evelulated on a row that is OFFSET + * returns the value of VE evaluated on a row that is OFFSET * rows before the current row within a partition, * per spec. */ diff --git a/src/backend/utils/adt/xid.c b/src/backend/utils/adt/xid.c index 9db5814219..1dad5407f9 100644 --- a/src/backend/utils/adt/xid.c +++ b/src/backend/utils/adt/xid.c @@ -41,13 +41,10 @@ Datum xidout(PG_FUNCTION_ARGS) { TransactionId transactionId = PG_GETARG_TRANSACTIONID(0); + char *result = (char *) palloc(16); - /* maximum 32 bit unsigned integer representation takes 10 chars */ - char *str = palloc(11); - - snprintf(str, 11, "%lu", (unsigned long) transactionId); - - PG_RETURN_CSTRING(str); + snprintf(result, 16, "%lu", (unsigned long) transactionId); + PG_RETURN_CSTRING(result); } /* @@ -160,12 +157,9 @@ xidComparator(const void *arg1, const void *arg2) Datum cidin(PG_FUNCTION_ARGS) { - char *s = PG_GETARG_CSTRING(0); - CommandId c; - - c = atoi(s); + char *str = PG_GETARG_CSTRING(0); - PG_RETURN_COMMANDID(c); + PG_RETURN_COMMANDID((CommandId) strtoul(str, NULL, 0)); } /* @@ -177,7 +171,7 @@ cidout(PG_FUNCTION_ARGS) CommandId c = PG_GETARG_COMMANDID(0); char *result = (char *) palloc(16); - snprintf(result, 16, "%u", (unsigned int) c); + snprintf(result, 16, "%lu", (unsigned long) c); PG_RETURN_CSTRING(result); } diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c index b144920ec6..f5348b3465 100644 --- a/src/backend/utils/adt/xml.c +++ b/src/backend/utils/adt/xml.c @@ -147,6 +147,10 @@ static int xml_xpathobjtoxmlarray(xmlXPathObjectPtr xpathobj, PgXmlErrorContext *xmlerrcxt); #endif /* USE_LIBXML */ +static void xmldata_root_element_start(StringInfo result, const char *eltname, + const char *xmlschema, const char *targetns, + bool top_level); +static void xmldata_root_element_end(StringInfo result, const char *eltname); static StringInfo query_to_xml_internal(const char *query, char *tablename, const char *xmlschema, bool nulls, bool tableforest, const char *targetns, bool top_level); @@ -2381,6 +2385,12 @@ cursor_to_xml(PG_FUNCTION_ARGS) initStringInfo(&result); + if (!tableforest) + { + xmldata_root_element_start(&result, "table", NULL, targetns, true); + appendStringInfoChar(&result, '\n'); + } + SPI_connect(); portal = SPI_cursor_find(name); if (portal == NULL) @@ -2395,6 +2405,9 @@ cursor_to_xml(PG_FUNCTION_ARGS) SPI_finish(); + if (!tableforest) + xmldata_root_element_end(&result, "table"); + PG_RETURN_XML_P(stringinfo_to_xmltype(&result)); } diff --git a/src/backend/utils/cache/catcache.c b/src/backend/utils/cache/catcache.c index db7099fc0e..ed72c254cd 100644 --- a/src/backend/utils/cache/catcache.c +++ b/src/backend/utils/cache/catcache.c @@ -427,7 +427,7 @@ CatCacheRemoveCList(CatCache *cache, CatCList *cl) /* - * CatalogCacheIdInvalidate + * CatCacheInvalidate * * Invalidate entries in the specified cache, given a hash value. * @@ -445,71 +445,57 @@ CatCacheRemoveCList(CatCache *cache, CatCList *cl) * This routine is only quasi-public: it should only be used by inval.c. */ void -CatalogCacheIdInvalidate(int cacheId, uint32 hashValue) +CatCacheInvalidate(CatCache *cache, uint32 hashValue) { - slist_iter cache_iter; + Index hashIndex; + dlist_mutable_iter iter; - CACHE1_elog(DEBUG2, "CatalogCacheIdInvalidate: called"); + CACHE1_elog(DEBUG2, "CatCacheInvalidate: called"); /* - * inspect caches to find the proper cache + * We don't bother to check whether the cache has finished initialization + * yet; if not, there will be no entries in it so no problem. */ - slist_foreach(cache_iter, &CacheHdr->ch_caches) - { - CatCache *ccp = slist_container(CatCache, cc_next, cache_iter.cur); - Index hashIndex; - dlist_mutable_iter iter; - if (cacheId != ccp->id) - continue; - - /* - * We don't bother to check whether the cache has finished - * initialization yet; if not, there will be no entries in it so no - * problem. - */ + /* + * Invalidate *all* CatCLists in this cache; it's too hard to tell which + * searches might still be correct, so just zap 'em all. + */ + dlist_foreach_modify(iter, &cache->cc_lists) + { + CatCList *cl = dlist_container(CatCList, cache_elem, iter.cur); - /* - * Invalidate *all* CatCLists in this cache; it's too hard to tell - * which searches might still be correct, so just zap 'em all. - */ - dlist_foreach_modify(iter, &ccp->cc_lists) - { - CatCList *cl = dlist_container(CatCList, cache_elem, iter.cur); + if (cl->refcount > 0) + cl->dead = true; + else + CatCacheRemoveCList(cache, cl); + } - if (cl->refcount > 0) - cl->dead = true; - else - CatCacheRemoveCList(ccp, cl); - } + /* + * inspect the proper hash bucket for tuple matches + */ + hashIndex = HASH_INDEX(hashValue, cache->cc_nbuckets); + dlist_foreach_modify(iter, &cache->cc_bucket[hashIndex]) + { + CatCTup *ct = dlist_container(CatCTup, cache_elem, iter.cur); - /* - * inspect the proper hash bucket for tuple matches - */ - hashIndex = HASH_INDEX(hashValue, ccp->cc_nbuckets); - dlist_foreach_modify(iter, &ccp->cc_bucket[hashIndex]) + if (hashValue == ct->hash_value) { - CatCTup *ct = dlist_container(CatCTup, cache_elem, iter.cur); - - if (hashValue == ct->hash_value) + if (ct->refcount > 0 || + (ct->c_list && ct->c_list->refcount > 0)) { - if (ct->refcount > 0 || - (ct->c_list && ct->c_list->refcount > 0)) - { - ct->dead = true; - /* list, if any, was marked dead above */ - Assert(ct->c_list == NULL || ct->c_list->dead); - } - else - CatCacheRemoveCTup(ccp, ct); - CACHE1_elog(DEBUG2, "CatalogCacheIdInvalidate: invalidated"); + ct->dead = true; + /* list, if any, was marked dead above */ + Assert(ct->c_list == NULL || ct->c_list->dead); + } + else + CatCacheRemoveCTup(cache, ct); + CACHE1_elog(DEBUG2, "CatCacheInvalidate: invalidated"); #ifdef CATCACHE_STATS - ccp->cc_invals++; + cache->cc_invals++; #endif - /* could be multiple matches, so keep looking! */ - } + /* could be multiple matches, so keep looking! */ } - break; /* need only search this one cache */ } } @@ -540,57 +526,6 @@ CreateCacheMemoryContext(void) } -/* - * AtEOXact_CatCache - * - * Clean up catcaches at end of main transaction (either commit or abort) - * - * As of PostgreSQL 8.1, catcache pins should get released by the - * ResourceOwner mechanism. This routine is just a debugging - * cross-check that no pins remain. - */ -void -AtEOXact_CatCache(bool isCommit) -{ -#ifdef USE_ASSERT_CHECKING - slist_iter cache_iter; - - slist_foreach(cache_iter, &CacheHdr->ch_caches) - { - CatCache *ccp = slist_container(CatCache, cc_next, cache_iter.cur); - dlist_iter iter; - int i; - - /* Check CatCLists */ - dlist_foreach(iter, &ccp->cc_lists) - { - CatCList *cl; - - cl = dlist_container(CatCList, cache_elem, iter.cur); - Assert(cl->cl_magic == CL_MAGIC); - Assert(cl->refcount == 0); - Assert(!cl->dead); - } - - /* Check individual tuples */ - for (i = 0; i < ccp->cc_nbuckets; i++) - { - dlist_head *bucket = &ccp->cc_bucket[i]; - - dlist_foreach(iter, bucket) - { - CatCTup *ct; - - ct = dlist_container(CatCTup, cache_elem, iter.cur); - Assert(ct->ct_magic == CT_MAGIC); - Assert(ct->refcount == 0); - Assert(!ct->dead); - } - } - } -#endif -} - /* * ResetCatalogCache * @@ -1828,7 +1763,7 @@ build_dummy_tuple(CatCache *cache, int nkeys, ScanKey skeys) * the specified relation, find all catcaches it could be in, compute the * correct hash value for each such catcache, and call the specified * function to record the cache id and hash value in inval.c's lists. - * CatalogCacheIdInvalidate will be called later, if appropriate, + * SysCacheInvalidate will be called later, if appropriate, * using the recorded information. * * For an insert or delete, tuple is the target tuple and newtuple is NULL. diff --git a/src/backend/utils/cache/inval.c b/src/backend/utils/cache/inval.c index e406eeb74f..4d4f234eff 100644 --- a/src/backend/utils/cache/inval.c +++ b/src/backend/utils/cache/inval.c @@ -175,19 +175,27 @@ static int maxSharedInvalidMessagesArray; /* * Dynamically-registered callback functions. Current implementation - * assumes there won't be very many of these at once; could improve if needed. + * assumes there won't be enough of these to justify a dynamically resizable + * array; it'd be easy to improve that if needed. + * + * To avoid searching in CallSyscacheCallbacks, all callbacks for a given + * syscache are linked into a list pointed to by syscache_callback_links[id]. + * The link values are syscache_callback_list[] index plus 1, or 0 for none. */ -#define MAX_SYSCACHE_CALLBACKS 32 +#define MAX_SYSCACHE_CALLBACKS 64 #define MAX_RELCACHE_CALLBACKS 10 static struct SYSCACHECALLBACK { int16 id; /* cache number */ + int16 link; /* next callback index+1 for same cache */ SyscacheCallbackFunction function; Datum arg; } syscache_callback_list[MAX_SYSCACHE_CALLBACKS]; +static int16 syscache_callback_links[SysCacheSize]; + static int syscache_callback_count = 0; static struct RELCACHECALLBACK @@ -543,7 +551,7 @@ LocalExecuteInvalidationMessage(SharedInvalidationMessage *msg) { InvalidateCatalogSnapshot(); - CatalogCacheIdInvalidate(msg->cc.id, msg->cc.hashValue); + SysCacheInvalidate(msg->cc.id, msg->cc.hashValue); CallSyscacheCallbacks(msg->cc.id, msg->cc.hashValue); } @@ -1356,10 +1364,28 @@ CacheRegisterSyscacheCallback(int cacheid, SyscacheCallbackFunction func, Datum arg) { + if (cacheid < 0 || cacheid >= SysCacheSize) + elog(FATAL, "invalid cache ID: %d", cacheid); if (syscache_callback_count >= MAX_SYSCACHE_CALLBACKS) elog(FATAL, "out of syscache_callback_list slots"); + if (syscache_callback_links[cacheid] == 0) + { + /* first callback for this cache */ + syscache_callback_links[cacheid] = syscache_callback_count + 1; + } + else + { + /* add to end of chain, so that older callbacks are called first */ + int i = syscache_callback_links[cacheid] - 1; + + while (syscache_callback_list[i].link > 0) + i = syscache_callback_list[i].link - 1; + syscache_callback_list[i].link = syscache_callback_count + 1; + } + syscache_callback_list[syscache_callback_count].id = cacheid; + syscache_callback_list[syscache_callback_count].link = 0; syscache_callback_list[syscache_callback_count].function = func; syscache_callback_list[syscache_callback_count].arg = arg; @@ -1399,11 +1425,16 @@ CallSyscacheCallbacks(int cacheid, uint32 hashvalue) { int i; - for (i = 0; i < syscache_callback_count; i++) + if (cacheid < 0 || cacheid >= SysCacheSize) + elog(ERROR, "invalid cache ID: %d", cacheid); + + i = syscache_callback_links[cacheid] - 1; + while (i >= 0) { struct SYSCACHECALLBACK *ccitem = syscache_callback_list + i; - if (ccitem->id == cacheid) - (*ccitem->function) (ccitem->arg, cacheid, hashvalue); + Assert(ccitem->id == cacheid); + (*ccitem->function) (ccitem->arg, cacheid, hashvalue); + i = ccitem->link - 1; } } diff --git a/src/backend/utils/cache/lsyscache.c b/src/backend/utils/cache/lsyscache.c index 13ae6add03..84464eeaa9 100644 --- a/src/backend/utils/cache/lsyscache.c +++ b/src/backend/utils/cache/lsyscache.c @@ -2832,9 +2832,9 @@ get_attavgwidth(Oid relid, AttrNumber attnum) * that have been provided by a stats hook and didn't really come from * pg_statistic. * - * statstuple: pg_statistics tuple to be examined. - * atttype: type OID of attribute (can be InvalidOid if values == NULL). - * atttypmod: typmod of attribute (can be 0 if values == NULL). + * statstuple: pg_statistic tuple to be examined. + * atttype: type OID of slot's stavalues (can be InvalidOid if values == NULL). + * atttypmod: typmod of slot's stavalues (can be 0 if values == NULL). * reqkind: STAKIND code for desired statistics slot kind. * reqop: STAOP value wanted, or InvalidOid if don't care. * actualop: if not NULL, *actualop receives the actual STAOP value. @@ -2842,7 +2842,7 @@ get_attavgwidth(Oid relid, AttrNumber attnum) * numbers, nnumbers: if not NULL, the slot's stanumbers are extracted. * * If assigned, values and numbers are set to point to palloc'd arrays. - * If the attribute type is pass-by-reference, the values referenced by + * If the stavalues datatype is pass-by-reference, the values referenced by * the values array are themselves palloc'd. The palloc'd stuff can be * freed by calling free_attstatsslot. * @@ -2972,7 +2972,8 @@ get_attstatsslot(HeapTuple statstuple, * free_attstatsslot * Free data allocated by get_attstatsslot * - * atttype need be valid only if values != NULL. + * atttype is the type of the individual values in values[]. + * It need be valid only if values != NULL. */ void free_attstatsslot(Oid atttype, diff --git a/src/backend/utils/cache/plancache.c b/src/backend/utils/cache/plancache.c index c96a86500a..dc18ae7bb7 100644 --- a/src/backend/utils/cache/plancache.c +++ b/src/backend/utils/cache/plancache.c @@ -119,6 +119,8 @@ InitPlanCache(void) CacheRegisterSyscacheCallback(NAMESPACEOID, PlanCacheSysCallback, (Datum) 0); CacheRegisterSyscacheCallback(OPEROID, PlanCacheSysCallback, (Datum) 0); CacheRegisterSyscacheCallback(AMOPOPID, PlanCacheSysCallback, (Datum) 0); + CacheRegisterSyscacheCallback(FOREIGNSERVEROID, PlanCacheSysCallback, (Datum) 0); + CacheRegisterSyscacheCallback(FOREIGNDATAWRAPPEROID, PlanCacheSysCallback, (Datum) 0); } /* @@ -1141,7 +1143,7 @@ CachedPlan * GetCachedPlan(CachedPlanSource *plansource, ParamListInfo boundParams, bool useResOwner) { - CachedPlan *plan; + CachedPlan *plan = NULL; List *qlist; bool customplan; @@ -1223,6 +1225,8 @@ GetCachedPlan(CachedPlanSource *plansource, ParamListInfo boundParams, } } + Assert(plan != NULL); + /* Flag the plan as in use by caller */ if (useResOwner) ResourceOwnerEnlargePlanCacheRefs(CurrentResourceOwner); diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 79e0b1ff48..95ff838cea 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -1125,7 +1125,7 @@ RelationInitPhysicalAddr(Relation relation) * points to the current file since the older file will be gone (or * truncated). The new file will still contain older rows so lookups * in them will work correctly. This wouldn't work correctly if - * rewrites were allowed to change the schema in a noncompatible way, + * rewrites were allowed to change the schema in an incompatible way, * but those are prevented both on catalog tables and on user tables * declared as additional catalog tables. */ @@ -4363,8 +4363,10 @@ RelationGetIndexPredicate(Relation relation) * we can include system attributes (e.g., OID) in the bitmap representation. * * Caller had better hold at least RowExclusiveLock on the target relation - * to ensure that it has a stable set of indexes. This also makes it safe - * (deadlock-free) for us to take locks on the relation's indexes. + * to ensure it is safe (deadlock-free) for us to take locks on the relation's + * indexes. Note that since the introduction of CREATE INDEX CONCURRENTLY, + * that lock level doesn't guarantee a stable set of indexes, so we have to + * be prepared to retry here in case of a change in the set of indexes. * * The returned result is palloc'd in the caller's memory context and should * be bms_free'd when not needed anymore. @@ -4376,6 +4378,7 @@ RelationGetIndexAttrBitmap(Relation relation, IndexAttrBitmapKind attrKind) Bitmapset *uindexattrs; /* columns in unique indexes */ Bitmapset *idindexattrs; /* columns in the replica identity */ List *indexoidlist; + List *newindexoidlist; Oid relreplindex; ListCell *l; MemoryContext oldcxt; @@ -4401,8 +4404,9 @@ RelationGetIndexAttrBitmap(Relation relation, IndexAttrBitmapKind attrKind) return NULL; /* - * Get cached list of index OIDs + * Get cached list of index OIDs. If we have to start over, we do so here. */ +restart: indexoidlist = RelationGetIndexList(relation); /* Fall out if no indexes (but relhasindex was set) */ @@ -4413,8 +4417,7 @@ RelationGetIndexAttrBitmap(Relation relation, IndexAttrBitmapKind attrKind) * Copy the rd_replidindex value computed by RelationGetIndexList before * proceeding. This is needed because a relcache flush could occur inside * index_open below, resetting the fields managed by RelationGetIndexList. - * (The values we're computing will still be valid, assuming that caller - * has a sufficient lock on the relation.) + * We need to do the work with a stable value for relreplindex. */ relreplindex = relation->rd_replidindex; @@ -4482,7 +4485,31 @@ RelationGetIndexAttrBitmap(Relation relation, IndexAttrBitmapKind attrKind) index_close(indexDesc, AccessShareLock); } - list_free(indexoidlist); + /* + * During one of the index_opens in the above loop, we might have received + * a relcache flush event on this relcache entry, which might have been + * signaling a change in the rel's index list. If so, we'd better start + * over to ensure we deliver up-to-date attribute bitmaps. + */ + newindexoidlist = RelationGetIndexList(relation); + if (equal(indexoidlist, newindexoidlist) && + relreplindex == relation->rd_replidindex) + { + /* Still the same index set, so proceed */ + list_free(newindexoidlist); + list_free(indexoidlist); + } + else + { + /* Gotta do it over ... might as well not leak memory */ + list_free(newindexoidlist); + list_free(indexoidlist); + bms_free(uindexattrs); + bms_free(idindexattrs); + bms_free(indexattrs); + + goto restart; + } /* Don't leak the old values of these bitmaps, if any */ bms_free(relation->rd_indexattr); @@ -5498,7 +5525,7 @@ RelationCacheInitFileRemove(void) const char *tblspcdir = "pg_tblspc"; DIR *dir; struct dirent *de; - char path[MAXPGPATH]; + char path[MAXPGPATH + 10 + sizeof(TABLESPACE_VERSION_DIRECTORY)]; /* * We zap the shared cache file too. In theory it can't get out of sync @@ -5540,7 +5567,7 @@ RelationCacheInitFileRemoveInDir(const char *tblspcpath) { DIR *dir; struct dirent *de; - char initfilename[MAXPGPATH]; + char initfilename[MAXPGPATH * 2]; /* Scan the tablespace directory to find per-database directories */ dir = AllocateDir(tblspcpath); diff --git a/src/backend/utils/cache/relfilenodemap.c b/src/backend/utils/cache/relfilenodemap.c index 894dacb5e7..a2b74ad0b0 100644 --- a/src/backend/utils/cache/relfilenodemap.c +++ b/src/backend/utils/cache/relfilenodemap.c @@ -123,7 +123,7 @@ InitializeRelfilenodeMap(void) * error. */ RelfilenodeMapHash = - hash_create("RelfilenodeMap cache", 1024, &ctl, + hash_create("RelfilenodeMap cache", 64, &ctl, HASH_ELEM | HASH_BLOBS | HASH_CONTEXT); /* Watch for invalidation events. */ diff --git a/src/backend/utils/cache/syscache.c b/src/backend/utils/cache/syscache.c index 65ffe84409..9fc1870442 100644 --- a/src/backend/utils/cache/syscache.c +++ b/src/backend/utils/cache/syscache.c @@ -845,8 +845,6 @@ static const struct cachedesc cacheinfo[] = { } }; -#define SysCacheSize ((int) lengthof(cacheinfo)) - static CatCache *SysCache[SysCacheSize]; static bool CacheInitialized = false; @@ -877,6 +875,9 @@ InitCatalogCache(void) int i, j; + StaticAssertStmt(SysCacheSize == (int) lengthof(cacheinfo), + "SysCacheSize does not match syscache.c's array"); + Assert(!CacheInitialized); SysCacheRelationOidSize = SysCacheSupportingRelOidSize = 0; @@ -1212,6 +1213,27 @@ SearchSysCacheList(int cacheId, int nkeys, key1, key2, key3, key4); } +/* + * SysCacheInvalidate + * + * Invalidate entries in the specified cache, given a hash value. + * See CatCacheInvalidate() for more info. + * + * This routine is only quasi-public: it should only be used by inval.c. + */ +void +SysCacheInvalidate(int cacheId, uint32 hashValue) +{ + if (cacheId < 0 || cacheId >= SysCacheSize) + elog(ERROR, "invalid cache ID: %d", cacheId); + + /* if this cache isn't initialized yet, no need to do anything */ + if (!PointerIsValid(SysCache[cacheId])) + return; + + CatCacheInvalidate(SysCache[cacheId], hashValue); +} + /* * Certain relations that do not have system caches send snapshot invalidation * messages in lieu of catcache messages. This is for the benefit of diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index 224ee7801c..eace0ac100 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -2228,7 +2228,7 @@ static void setup_formatted_log_time(void) { pg_time_t stamp_time; - char msbuf[8]; + char msbuf[13]; if (!saved_timeval_set) { @@ -2484,8 +2484,9 @@ log_line_prefix(StringInfo buf, ErrorData *edata) saved_timeval_set = true; } - sprintf(strfbuf, "%ld.%03d", saved_timeval.tv_sec, - (int) (saved_timeval.tv_usec / 1000)); + snprintf(strfbuf, sizeof(strfbuf), "%ld.%03d", + (long) saved_timeval.tv_sec, + (int) (saved_timeval.tv_usec / 1000)); if (padding != 0) appendStringInfo(buf, "%*s", padding, strfbuf); diff --git a/src/backend/utils/fmgr/funcapi.c b/src/backend/utils/fmgr/funcapi.c index 5d49fe5b50..34dfd84074 100644 --- a/src/backend/utils/fmgr/funcapi.c +++ b/src/backend/utils/fmgr/funcapi.c @@ -878,7 +878,7 @@ get_func_arg_info(HeapTuple procTup, /* * get_func_trftypes * - * Returns a number of transformated types used by function. + * Returns the number of transformed types used by function. */ int get_func_trftypes(HeapTuple procTup, diff --git a/src/backend/utils/hash/dynahash.c b/src/backend/utils/hash/dynahash.c index bb835ba946..6a05e34590 100644 --- a/src/backend/utils/hash/dynahash.c +++ b/src/backend/utils/hash/dynahash.c @@ -685,7 +685,7 @@ init_htab(HTAB *hashp, long nelem) hctl->nelem_alloc = choose_nelem_alloc(hctl->entrysize); #if HASH_DEBUG - fprintf(stderr, "init_htab:\n%s%p\n%s%ld\n%s%ld\n%s%d\n%s%ld\n%s%u\n%s%x\n%s%x\n%s%ld\n%s%ld\n", + fprintf(stderr, "init_htab:\n%s%p\n%s%ld\n%s%ld\n%s%d\n%s%ld\n%s%u\n%s%x\n%s%x\n%s%ld\n", "TABLE POINTER ", hashp, "DIRECTORY SIZE ", hctl->dsize, "SEGMENT SIZE ", hctl->ssize, @@ -694,8 +694,7 @@ init_htab(HTAB *hashp, long nelem) "MAX BUCKET ", hctl->max_bucket, "HIGH MASK ", hctl->high_mask, "LOW MASK ", hctl->low_mask, - "NSEGS ", hctl->nsegs, - "NENTRIES ", hash_get_num_entries(hctl)); + "NSEGS ", hctl->nsegs); #endif return true; } diff --git a/src/backend/utils/init/globals.c b/src/backend/utils/init/globals.c index f23208353c..00c323aab2 100644 --- a/src/backend/utils/init/globals.c +++ b/src/backend/utils/init/globals.c @@ -31,6 +31,7 @@ volatile bool QueryCancelPending = false; volatile bool ProcDiePending = false; volatile bool ClientConnectionLost = false; volatile bool IdleInTransactionSessionTimeoutPending = false; +volatile sig_atomic_t ConfigReloadPending = false; volatile uint32 InterruptHoldoffCount = 0; volatile uint32 QueryCancelHoldoffCount = 0; volatile uint32 CritSectionCount = 0; diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c index 824d5abf11..0a4295b418 100644 --- a/src/backend/utils/init/postinit.c +++ b/src/backend/utils/init/postinit.c @@ -350,7 +350,7 @@ CheckMyDatabase(const char *name, bool am_superuser) */ if (dbform->datconnlimit >= 0 && !am_superuser && - CountDBBackends(MyDatabaseId) > dbform->datconnlimit) + CountDBConnections(MyDatabaseId) > dbform->datconnlimit) ereport(FATAL, (errcode(ERRCODE_TOO_MANY_CONNECTIONS), errmsg("too many connections for database \"%s\"", @@ -1108,7 +1108,7 @@ process_settings(Oid databaseid, Oid roleid) relsetting = heap_open(DbRoleSettingRelationId, AccessShareLock); - /* read all the settings under the same snapsot for efficiency */ + /* read all the settings under the same snapshot for efficiency */ snapshot = RegisterSnapshot(GetCatalogSnapshot(DbRoleSettingRelationId)); /* Later settings are ignored if set earlier. */ diff --git a/src/backend/utils/mb/Unicode/Makefile b/src/backend/utils/mb/Unicode/Makefile index 40065c3fbb..032c8086ab 100644 --- a/src/backend/utils/mb/Unicode/Makefile +++ b/src/backend/utils/mb/Unicode/Makefile @@ -42,7 +42,8 @@ GENERICMAPS = $(ISO8859MAPS) $(WINMAPS) \ johab_to_utf8.map utf8_to_johab.map \ uhc_to_utf8.map utf8_to_uhc.map \ gbk_to_utf8.map utf8_to_gbk.map \ - koi8r_to_utf8.map utf8_to_koi8r.map + koi8r_to_utf8.map utf8_to_koi8r.map \ + koi8u_to_utf8.map utf8_to_koi8u.map SPECIALMAPS = euc_cn_to_utf8.map utf8_to_euc_cn.map \ euc_jp_to_utf8.map utf8_to_euc_jp.map \ diff --git a/src/backend/utils/misc/Makefile b/src/backend/utils/misc/Makefile index a5b487d0b6..5c28e97f54 100644 --- a/src/backend/utils/misc/Makefile +++ b/src/backend/utils/misc/Makefile @@ -18,7 +18,7 @@ OBJS = guc.o help_config.o pg_config.o pg_controldata.o pg_rusage.o \ ps_status.o rls.o sampling.o superuser.o timeout.o tzparser.o # This location might depend on the installation directories. Therefore -# we can't subsitute it into pg_config.h. +# we can't substitute it into pg_config.h. ifdef krb_srvtab override CPPFLAGS += -DPG_KRB_SRVTAB='"$(krb_srvtab)"' endif diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 2414b2f1c9..20275aa3c0 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -450,6 +450,10 @@ int tcp_keepalives_idle; int tcp_keepalives_interval; int tcp_keepalives_count; + +int autoprepare_threshold; +int autoprepare_limit; + /* * SSL renegotiation was been removed in PostgreSQL 9.5, but we tolerate it * being set to zero (meaning never renegotiate) for backward compatibility. @@ -1949,6 +1953,28 @@ static struct config_int ConfigureNamesInt[] = check_max_stack_depth, assign_max_stack_depth, NULL }, + /* + * Threshold for implicit preparing of frequently executed queries + */ + { + {"autoprepare_threshold", PGC_USERSET, QUERY_TUNING_OTHER, + gettext_noop("Threshold for autopreparing query."), + gettext_noop("0 value disables autoprepare."), + }, + &autoprepare_threshold, + 0, 0, INT_MAX, + NULL, NULL, NULL + }, + { + {"autoprepare_limit", PGC_USERSET, QUERY_TUNING_OTHER, + gettext_noop("Maximal number of autoprepared queries."), + gettext_noop("0 means unlimited number of autoprepared queries."), + }, + &autoprepare_limit, + 113, 0, INT_MAX, + NULL, NULL, NULL + }, + { {"temp_file_limit", PGC_SUSET, RESOURCES_DISK, gettext_noop("Limits the total size of all temporary files used by each process."), @@ -2275,7 +2301,6 @@ static struct config_int ConfigureNamesInt[] = GUC_UNIT_BLOCKS }, &checkpoint_flush_after, - /* see bufmgr.h: OS dependent default */ DEFAULT_CHECKPOINT_FLUSH_AFTER, 0, WRITEBACK_MAX_PENDING_FLUSHES, NULL, NULL, NULL }, @@ -2304,12 +2329,12 @@ static struct config_int ConfigureNamesInt[] = { {"wal_writer_flush_after", PGC_SIGHUP, WAL_SETTINGS, - gettext_noop("Amount of WAL written out by WAL writer triggering a flush."), + gettext_noop("Amount of WAL written out by WAL writer that triggers a flush."), NULL, GUC_UNIT_XBLOCKS }, &WalWriterFlushAfter, - 128, 0, INT_MAX, + (1024*1024) / XLOG_BLCKSZ, 0, INT_MAX, NULL, NULL, NULL }, @@ -2433,7 +2458,6 @@ static struct config_int ConfigureNamesInt[] = GUC_UNIT_BLOCKS }, &bgwriter_flush_after, - /* see bufmgr.h: OS dependent default */ DEFAULT_BGWRITER_FLUSH_AFTER, 0, WRITEBACK_MAX_PENDING_FLUSHES, NULL, NULL, NULL }, @@ -2461,7 +2485,7 @@ static struct config_int ConfigureNamesInt[] = GUC_UNIT_BLOCKS }, &backend_flush_after, - 0, 0, WRITEBACK_MAX_PENDING_FLUSHES, + DEFAULT_BACKEND_FLUSH_AFTER, 0, WRITEBACK_MAX_PENDING_FLUSHES, NULL, NULL, NULL }, @@ -8885,7 +8909,9 @@ can_skip_gucvar(struct config_generic * gconf) /* * estimate_variable_size: - * Estimate max size for dumping the given GUC variable. + * Compute space needed for dumping the given GUC variable. + * + * It's OK to overestimate, but not to underestimate. */ static Size estimate_variable_size(struct config_generic * gconf) @@ -8896,9 +8922,8 @@ estimate_variable_size(struct config_generic * gconf) if (can_skip_gucvar(gconf)) return 0; - size = 0; - - size = add_size(size, strlen(gconf->name) + 1); + /* Name, plus trailing zero byte. */ + size = strlen(gconf->name) + 1; /* Get the maximum display length of the GUC value. */ switch (gconf->vartype) @@ -8919,7 +8944,7 @@ estimate_variable_size(struct config_generic * gconf) * small values. Maximum value is 2147483647, i.e. 10 chars. * Include one byte for sign. */ - if (abs(*conf->variable) < 1000) + if (Abs(*conf->variable) < 1000) valsize = 3 + 1; else valsize = 10 + 1; @@ -8929,11 +8954,12 @@ estimate_variable_size(struct config_generic * gconf) case PGC_REAL: { /* - * We are going to print it with %.17g. Account for sign, - * decimal point, and e+nnn notation. E.g. - * -3.9932904234000002e+110 + * We are going to print it with %e with REALTYPE_PRECISION + * fractional digits. Account for sign, leading digit, + * decimal point, and exponent with up to 3 digits. E.g. + * -3.99329042340000021e+110 */ - valsize = REALTYPE_PRECISION + 1 + 1 + 5; + valsize = 1 + 1 + 1 + REALTYPE_PRECISION + 5; } break; @@ -8941,7 +8967,15 @@ estimate_variable_size(struct config_generic * gconf) { struct config_string *conf = (struct config_string *) gconf; - valsize = strlen(*conf->variable); + /* + * If the value is NULL, we transmit it as an empty string. + * Although this is not physically the same value, GUC + * generally treats a NULL the same as empty string. + */ + if (*conf->variable) + valsize = strlen(*conf->variable); + else + valsize = 0; } break; @@ -8954,17 +8988,17 @@ estimate_variable_size(struct config_generic * gconf) break; } - /* Allow space for terminating zero-byte */ + /* Allow space for terminating zero-byte for value */ size = add_size(size, valsize + 1); if (gconf->sourcefile) size = add_size(size, strlen(gconf->sourcefile)); - /* Allow space for terminating zero-byte */ + /* Allow space for terminating zero-byte for sourcefile */ size = add_size(size, 1); - /* Include line whenever we include file. */ - if (gconf->sourcefile) + /* Include line whenever file is nonempty. */ + if (gconf->sourcefile && gconf->sourcefile[0]) size = add_size(size, sizeof(gconf->sourceline)); size = add_size(size, sizeof(gconf->source)); @@ -9082,7 +9116,7 @@ serialize_variable(char **destptr, Size *maxbytes, { struct config_real *conf = (struct config_real *) gconf; - do_serialize(destptr, maxbytes, "%.*g", + do_serialize(destptr, maxbytes, "%.*e", REALTYPE_PRECISION, *conf->variable); } break; @@ -9091,7 +9125,9 @@ serialize_variable(char **destptr, Size *maxbytes, { struct config_string *conf = (struct config_string *) gconf; - do_serialize(destptr, maxbytes, "%s", *conf->variable); + /* NULL becomes empty string, see estimate_variable_size() */ + do_serialize(destptr, maxbytes, "%s", + *conf->variable ? *conf->variable : ""); } break; @@ -9108,7 +9144,7 @@ serialize_variable(char **destptr, Size *maxbytes, do_serialize(destptr, maxbytes, "%s", (gconf->sourcefile ? gconf->sourcefile : "")); - if (gconf->sourcefile) + if (gconf->sourcefile && gconf->sourcefile[0]) do_serialize_binary(destptr, maxbytes, &gconf->sourceline, sizeof(gconf->sourceline)); @@ -9175,7 +9211,7 @@ read_gucstate(char **srcptr, char *srcend) for (ptr = *srcptr; ptr < srcend && *ptr != '\0'; ptr++) ; - if (ptr > srcend) + if (ptr >= srcend) elog(ERROR, "could not find null terminator in GUC state"); /* Set the new position to the byte following the terminating NUL */ @@ -9229,9 +9265,7 @@ RestoreGUCState(void *gucstate) { int result; - if ((varname = read_gucstate(&srcptr, srcend)) == NULL) - break; - + varname = read_gucstate(&srcptr, srcend); varvalue = read_gucstate(&srcptr, srcend); varsourcefile = read_gucstate(&srcptr, srcend); if (varsourcefile[0]) diff --git a/src/backend/utils/misc/pg_rusage.c b/src/backend/utils/misc/pg_rusage.c index 8781a383c0..c21b950151 100644 --- a/src/backend/utils/misc/pg_rusage.c +++ b/src/backend/utils/misc/pg_rusage.c @@ -61,7 +61,9 @@ pg_rusage_show(const PGRUsage *ru0) } snprintf(result, sizeof(result), - "CPU %d.%02ds/%d.%02du sec elapsed %d.%02d sec", + /*--- + * translator: %d.%02ds is system CPU time, %d.%02du is user CPU time */ + _("CPU %d.%02ds/%d.%02du sec elapsed %d.%02d sec"), (int) (ru1.ru.ru_stime.tv_sec - ru0->ru.ru_stime.tv_sec), (int) (ru1.ru.ru_stime.tv_usec - ru0->ru.ru_stime.tv_usec) / 10000, (int) (ru1.ru.ru_utime.tv_sec - ru0->ru.ru_utime.tv_sec), diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index ed81e64c0b..9a999c9359 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -131,6 +131,7 @@ # windows # mmap # use none to disable dynamic shared memory + # (change requires restart) # - Disk - @@ -156,8 +157,7 @@ #bgwriter_delay = 200ms # 10-10000ms between rounds #bgwriter_lru_maxpages = 100 # 0-1000 max buffers written/round #bgwriter_lru_multiplier = 2.0 # 0-10.0 multiplier on buffers scanned/round -#bgwriter_flush_after = 0 # 0 disables, - # default is 512kB on linux, 0 otherwise +#bgwriter_flush_after = 0 # measured in pages, 0 disables # - Asynchronous Behavior - @@ -165,8 +165,8 @@ #max_worker_processes = 8 # (change requires restart) #max_parallel_workers_per_gather = 0 # taken from max_worker_processes #old_snapshot_threshold = -1 # 1min-60d; -1 disables; 0 is immediate - # (change requires restart) -#backend_flush_after = 0 # 0 disables, default is 0 + # (change requires restart) +#backend_flush_after = 0 # measured in pages, 0 disables #------------------------------------------------------------------------------ @@ -196,7 +196,7 @@ #wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers # (change requires restart) #wal_writer_delay = 200ms # 1-10000 milliseconds -#wal_writer_flush_after = 1MB # 0 disables +#wal_writer_flush_after = 1MB # measured in pages, 0 disables #commit_delay = 0 # range 0-100000, in microseconds #commit_siblings = 5 # range 1-1000 @@ -207,8 +207,7 @@ #max_wal_size = 1GB #min_wal_size = 80MB #checkpoint_completion_target = 0.5 # checkpoint target duration, 0.0 - 1.0 -#checkpoint_flush_after = 0 # 0 disables, - # default is 256kB on linux, 0 otherwise +#checkpoint_flush_after = 0 # measured in pages, 0 disables #checkpoint_warning = 30s # 0 disables # - Archiving - @@ -369,6 +368,7 @@ #syslog_split_messages = on # This is only relevant when logging to eventlog (win32): +# (change requires restart) #event_source = 'PostgreSQL' # - When to Log - diff --git a/src/backend/utils/mmgr/aset.c b/src/backend/utils/mmgr/aset.c index 43c85234ce..ac305ff9b8 100644 --- a/src/backend/utils/mmgr/aset.c +++ b/src/backend/utils/mmgr/aset.c @@ -201,7 +201,8 @@ typedef AllocSetContext *AllocSet; typedef struct AllocBlockData { AllocSet aset; /* aset that owns this block */ - AllocBlock next; /* next block in aset's blocks list */ + AllocBlock prev; /* prev block in aset's blocks list, if any */ + AllocBlock next; /* next block in aset's blocks list, if any */ char *freeptr; /* start of free space in this block */ char *endptr; /* end of space in this block */ } AllocBlockData; @@ -513,7 +514,10 @@ AllocSetContextCreate(MemoryContext parent, block->aset = set; block->freeptr = ((char *) block) + ALLOC_BLOCKHDRSZ; block->endptr = ((char *) block) + blksize; + block->prev = NULL; block->next = set->blocks; + if (block->next) + block->next->prev = block; set->blocks = block; /* Mark block as not to be released at reset time */ set->keeper = block; @@ -595,6 +599,7 @@ AllocSetReset(MemoryContext context) VALGRIND_MAKE_MEM_NOACCESS(datastart, block->freeptr - datastart); #endif block->freeptr = datastart; + block->prev = NULL; block->next = NULL; } else @@ -701,16 +706,20 @@ AllocSetAlloc(MemoryContext context, Size size) #endif /* - * Stick the new block underneath the active allocation block, so that - * we don't lose the use of the space remaining therein. + * Stick the new block underneath the active allocation block, if any, + * so that we don't lose the use of the space remaining therein. */ if (set->blocks != NULL) { + block->prev = set->blocks; block->next = set->blocks->next; + if (block->next) + block->next->prev = block; set->blocks->next = block; } else { + block->prev = NULL; block->next = NULL; set->blocks = block; } @@ -891,7 +900,10 @@ AllocSetAlloc(MemoryContext context, Size size) VALGRIND_MAKE_MEM_NOACCESS(block->freeptr, blksize - ALLOC_BLOCKHDRSZ); + block->prev = NULL; block->next = set->blocks; + if (block->next) + block->next->prev = block; set->blocks = block; } @@ -951,29 +963,28 @@ AllocSetFree(MemoryContext context, void *pointer) { /* * Big chunks are certain to have been allocated as single-chunk - * blocks. Find the containing block and return it to malloc(). + * blocks. Just unlink that block and return it to malloc(). */ - AllocBlock block = set->blocks; - AllocBlock prevblock = NULL; + AllocBlock block = (AllocBlock) (((char *) chunk) - ALLOC_BLOCKHDRSZ); - while (block != NULL) - { - if (chunk == (AllocChunk) (((char *) block) + ALLOC_BLOCKHDRSZ)) - break; - prevblock = block; - block = block->next; - } - if (block == NULL) + /* + * Try to verify that we have a sane block pointer: it should + * reference the correct aset, and freeptr and endptr should point + * just past the chunk. + */ + if (block->aset != set || + block->freeptr != block->endptr || + block->freeptr != ((char *) block) + + (chunk->size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ)) elog(ERROR, "could not find block containing chunk %p", chunk); - /* let's just make sure chunk is the only one in the block */ - Assert(block->freeptr == ((char *) block) + - (chunk->size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ)); /* OK, remove block from aset's list and free it */ - if (prevblock == NULL) - set->blocks = block->next; + if (block->prev) + block->prev->next = block->next; else - prevblock->next = block->next; + set->blocks = block->next; + if (block->next) + block->next->prev = block->prev; #ifdef CLOBBER_FREED_MEMORY wipe_mem(block, block->freeptr - ((char *) block)); #endif @@ -1079,27 +1090,24 @@ AllocSetRealloc(MemoryContext context, void *pointer, Size size) if (oldsize > set->allocChunkLimit) { /* - * The chunk must have been allocated as a single-chunk block. Find - * the containing block and use realloc() to make it bigger with - * minimum space wastage. + * The chunk must have been allocated as a single-chunk block. Use + * realloc() to make the containing block bigger with minimum space + * wastage. */ - AllocBlock block = set->blocks; - AllocBlock prevblock = NULL; + AllocBlock block = (AllocBlock) (((char *) chunk) - ALLOC_BLOCKHDRSZ); Size chksize; Size blksize; - while (block != NULL) - { - if (chunk == (AllocChunk) (((char *) block) + ALLOC_BLOCKHDRSZ)) - break; - prevblock = block; - block = block->next; - } - if (block == NULL) + /* + * Try to verify that we have a sane block pointer: it should + * reference the correct aset, and freeptr and endptr should point + * just past the chunk. + */ + if (block->aset != set || + block->freeptr != block->endptr || + block->freeptr != ((char *) block) + + (chunk->size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ)) elog(ERROR, "could not find block containing chunk %p", chunk); - /* let's just make sure chunk is the only one in the block */ - Assert(block->freeptr == ((char *) block) + - (chunk->size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ)); /* Do the realloc */ chksize = MAXALIGN(size); @@ -1112,10 +1120,12 @@ AllocSetRealloc(MemoryContext context, void *pointer, Size size) /* Update pointers since block has likely been moved */ chunk = (AllocChunk) (((char *) block) + ALLOC_BLOCKHDRSZ); pointer = AllocChunkGetPointer(chunk); - if (prevblock == NULL) - set->blocks = block; + if (block->prev) + block->prev->next = block; else - prevblock->next = block; + set->blocks = block; + if (block->next) + block->next->prev = block; chunk->size = chksize; #ifdef MEMORY_CONTEXT_CHECKING @@ -1139,7 +1149,7 @@ AllocSetRealloc(MemoryContext context, void *pointer, Size size) /* set mark to catch clobber of "unused" space */ if (size < chunk->size) - set_sentinel(AllocChunkGetPointer(chunk), size); + set_sentinel(pointer, size); #else /* !MEMORY_CONTEXT_CHECKING */ /* @@ -1152,7 +1162,8 @@ AllocSetRealloc(MemoryContext context, void *pointer, Size size) /* Make any trailing alignment padding NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS((char *) pointer + size, chksize - size); - return AllocChunkGetPointer(chunk); + + return pointer; } else { @@ -1306,9 +1317,12 @@ AllocSetCheck(MemoryContext context) { AllocSet set = (AllocSet) context; char *name = set->header.name; + AllocBlock prevblock; AllocBlock block; - for (block = set->blocks; block != NULL; block = block->next) + for (prevblock = NULL, block = set->blocks; + block != NULL; + prevblock = block, block = block->next) { char *bpoz = ((char *) block) + ALLOC_BLOCKHDRSZ; long blk_used = block->freeptr - bpoz; @@ -1325,6 +1339,16 @@ AllocSetCheck(MemoryContext context) name, block); } + /* + * Check block header fields + */ + if (block->aset != set || + block->prev != prevblock || + block->freeptr < bpoz || + block->freeptr > block->endptr) + elog(WARNING, "problem in alloc set %s: corrupt header in block %p", + name, block); + /* * Chunk walker */ diff --git a/src/backend/utils/mmgr/portalmem.c b/src/backend/utils/mmgr/portalmem.c index 8286800380..684cb6a261 100644 --- a/src/backend/utils/mmgr/portalmem.c +++ b/src/backend/utils/mmgr/portalmem.c @@ -436,8 +436,8 @@ MarkPortalDone(Portal portal) * well do that now, since the portal can't be executed any more. * * In some cases involving execution of a ROLLBACK command in an already - * aborted transaction, this prevents an assertion failure caused by - * reaching AtCleanup_Portals with the cleanup hook still unexecuted. + * aborted transaction, this is necessary, or we'd reach AtCleanup_Portals + * with the cleanup hook still unexecuted. */ if (PointerIsValid(portal->cleanup)) { @@ -464,8 +464,8 @@ MarkPortalFailed(Portal portal) * well do that now, since the portal can't be executed any more. * * In some cases involving cleanup of an already aborted transaction, this - * prevents an assertion failure caused by reaching AtCleanup_Portals with - * the cleanup hook still unexecuted. + * is necessary, or we'd reach AtCleanup_Portals with the cleanup hook + * still unexecuted. */ if (PointerIsValid(portal->cleanup)) { @@ -863,8 +863,15 @@ AtCleanup_Portals(void) if (portal->portalPinned) portal->portalPinned = false; - /* We had better not be calling any user-defined code here */ - Assert(portal->cleanup == NULL); + /* + * We had better not call any user-defined code during cleanup, so if + * the cleanup hook hasn't been run yet, too bad; we'll just skip it. + */ + if (PointerIsValid(portal->cleanup)) + { + elog(WARNING, "skipping cleanup for portal \"%s\"", portal->name); + portal->cleanup = NULL; + } /* Zap it. */ PortalDrop(portal, false); @@ -1047,8 +1054,15 @@ AtSubCleanup_Portals(SubTransactionId mySubid) if (portal->portalPinned) portal->portalPinned = false; - /* We had better not be calling any user-defined code here */ - Assert(portal->cleanup == NULL); + /* + * We had better not call any user-defined code during cleanup, so if + * the cleanup hook hasn't been run yet, too bad; we'll just skip it. + */ + if (PointerIsValid(portal->cleanup)) + { + elog(WARNING, "skipping cleanup for portal \"%s\"", portal->name); + portal->cleanup = NULL; + } /* Zap it. */ PortalDrop(portal, false); diff --git a/src/backend/utils/sort/tuplesort.c b/src/backend/utils/sort/tuplesort.c index 92d41cdce2..4dd5407f74 100644 --- a/src/backend/utils/sort/tuplesort.c +++ b/src/backend/utils/sort/tuplesort.c @@ -2045,6 +2045,10 @@ tuplesort_gettuple_common(Tuplesortstate *state, bool forward, * determination of "non-equal tuple" based on simple binary inequality. A * NULL value in leading attribute will set abbreviated value to zeroed * representation, which caller may rely on in abbreviated inequality check. + * + * The slot receives a copied tuple (sometimes allocated in caller memory + * context) that will stay valid regardless of future manipulations of the + * tuplesort's state. */ bool tuplesort_gettupleslot(Tuplesortstate *state, bool forward, @@ -2065,6 +2069,11 @@ tuplesort_gettupleslot(Tuplesortstate *state, bool forward, if (state->sortKeys->abbrev_converter && abbrev) *abbrev = stup.datum1; + if (!should_free) + { + stup.tuple = heap_copy_minimal_tuple((MinimalTuple) stup.tuple); + should_free = true; + } ExecStoreMinimalTuple((MinimalTuple) stup.tuple, slot, should_free); return true; } @@ -3791,7 +3800,7 @@ tuplesort_heap_siftup(Tuplesortstate *state, bool checkIndex) { SortTuple *memtuples = state->memtuples; SortTuple *tuple; - int i, + unsigned int i, n; Assert(!checkIndex || state->currentRun == RUN_FIRST); @@ -3800,12 +3809,17 @@ tuplesort_heap_siftup(Tuplesortstate *state, bool checkIndex) CHECK_FOR_INTERRUPTS(); + /* + * state->memtupcount is "int", but we use "unsigned int" for i, j, n. + * This prevents overflow in the "2 * i + 1" calculation, since at the top + * of the loop we must have i < n <= INT_MAX <= UINT_MAX/2. + */ n = state->memtupcount; tuple = &memtuples[n]; /* tuple that must be reinserted */ i = 0; /* i is where the "hole" is */ for (;;) { - int j = 2 * i + 1; + unsigned int j = 2 * i + 1; if (j >= n) break; diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c index 1ec9f70f0e..de6441b270 100644 --- a/src/backend/utils/time/snapmgr.c +++ b/src/backend/utils/time/snapmgr.c @@ -1,4 +1,5 @@ /*------------------------------------------------------------------------- + * * snapmgr.c * PostgreSQL snapshot manager * @@ -8,7 +9,7 @@ * (tracked by separate refcounts on each snapshot), its memory can be freed. * * The FirstXactSnapshot, if any, is treated a bit specially: we increment its - * regd_count and count it in RegisteredSnapshots, but this reference is not + * regd_count and list it in RegisteredSnapshots, but this reference is not * tracked by a resource owner. We used to use the TopTransactionResourceOwner * to track this snapshot reference, but that introduces logical circularity * and thus makes it impossible to clean up in a sane fashion. It's better to @@ -16,19 +17,22 @@ * module is entirely lower-level than ResourceOwners. * * Likewise, any snapshots that have been exported by pg_export_snapshot - * have regd_count = 1 and are counted in RegisteredSnapshots, but are not + * have regd_count = 1 and are listed in RegisteredSnapshots, but are not * tracked by any resource owner. * + * Likewise, the CatalogSnapshot is listed in RegisteredSnapshots when it + * is valid, but is not tracked by any resource owner. + * * The same is true for historic snapshots used during logical decoding, - * their lifetime is managed separately (as they live longer as one xact.c + * their lifetime is managed separately (as they live longer than one xact.c * transaction). * * These arrangements let us reset MyPgXact->xmin when there are no snapshots - * referenced by this transaction. (One possible improvement would be to be - * able to advance Xmin when the snapshot with the earliest Xmin is no longer - * referenced. That's a bit harder though, it requires more locking, and - * anyway it should be rather uncommon to keep temporary snapshots referenced - * for too long.) + * referenced by this transaction, and advance it when the one with oldest + * Xmin is no longer referenced. For simplicity however, only registered + * snapshots not active snapshots participate in tracking which one is oldest; + * we don't try to change MyPgXact->xmin except when the active-snapshot + * stack is empty. * * * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group @@ -131,7 +135,7 @@ static volatile OldSnapshotControlData *oldSnapshotControl; * SecondarySnapshot is a snapshot that's always up-to-date as of the current * instant, even in transaction-snapshot mode. It should only be used for * special-purpose code (say, RI checking.) CatalogSnapshot points to an - * MVCC snapshot intended to be used for catalog scans; we must refresh it + * MVCC snapshot intended to be used for catalog scans; we must invalidate it * whenever a system catalog change occurs. * * These SnapshotData structs are static to simplify memory allocation @@ -147,11 +151,6 @@ static Snapshot SecondarySnapshot = NULL; static Snapshot CatalogSnapshot = NULL; static Snapshot HistoricSnapshot = NULL; -/* - * Staleness detection for CatalogSnapshot. - */ -static bool CatalogSnapshotStale = true; - /* * These are updated by GetSnapshotData. We initialize them this way * for the convenience of TransactionIdIsInProgress: even in bootstrap @@ -193,8 +192,7 @@ static ActiveSnapshotElt *OldestActiveSnapshot = NULL; /* * Currently registered Snapshots. Ordered in a heap by xmin, so that we can - * quickly find the one with lowest xmin, to advance our MyPgXat->xmin. - * resowner.c also tracks these. + * quickly find the one with lowest xmin, to advance our MyPgXact->xmin. */ static int xmin_cmp(const pairingheap_node *a, const pairingheap_node *b, void *arg); @@ -316,6 +314,12 @@ GetTransactionSnapshot(void) /* First call in transaction? */ if (!FirstSnapshotSet) { + /* + * Don't allow catalog snapshot to be older than xact snapshot. Must + * do this first to allow the empty-heap Assert to succeed. + */ + InvalidateCatalogSnapshot(); + Assert(pairingheap_is_empty(&RegisteredSnapshots)); Assert(FirstXactSnapshot == NULL); @@ -347,9 +351,6 @@ GetTransactionSnapshot(void) else CurrentSnapshot = GetSnapshotData(&CurrentSnapshotData); - /* Don't allow catalog snapshot to be older than xact snapshot. */ - CatalogSnapshotStale = true; - FirstSnapshotSet = true; return CurrentSnapshot; } @@ -358,7 +359,7 @@ GetTransactionSnapshot(void) return CurrentSnapshot; /* Don't allow catalog snapshot to be older than xact snapshot. */ - CatalogSnapshotStale = true; + InvalidateCatalogSnapshot(); CurrentSnapshot = GetSnapshotData(&CurrentSnapshotData); @@ -463,36 +464,72 @@ GetNonHistoricCatalogSnapshot(Oid relid) * scan a relation for which neither catcache nor snapshot invalidations * are sent, we must refresh the snapshot every time. */ - if (!CatalogSnapshotStale && !RelationInvalidatesSnapshotsOnly(relid) && + if (CatalogSnapshot && + !RelationInvalidatesSnapshotsOnly(relid) && !RelationHasSysCache(relid)) - CatalogSnapshotStale = true; + InvalidateCatalogSnapshot(); - if (CatalogSnapshotStale) + if (CatalogSnapshot == NULL) { /* Get new snapshot. */ CatalogSnapshot = GetSnapshotData(&CatalogSnapshotData); /* - * Mark new snapshost as valid. We must do this last, in case an - * ERROR occurs inside GetSnapshotData(). + * Make sure the catalog snapshot will be accounted for in decisions + * about advancing PGXACT->xmin. We could apply RegisterSnapshot, but + * that would result in making a physical copy, which is overkill; and + * it would also create a dependency on some resource owner, which we + * do not want for reasons explained at the head of this file. Instead + * just shove the CatalogSnapshot into the pairing heap manually. This + * has to be reversed in InvalidateCatalogSnapshot, of course. + * + * NB: it had better be impossible for this to throw error, since the + * CatalogSnapshot pointer is already valid. */ - CatalogSnapshotStale = false; + pairingheap_add(&RegisteredSnapshots, &CatalogSnapshot->ph_node); } return CatalogSnapshot; } /* - * Mark the current catalog snapshot as invalid. We could change this API - * to allow the caller to provide more fine-grained invalidation details, so - * that a change to relation A wouldn't prevent us from using our cached - * snapshot to scan relation B, but so far there's no evidence that the CPU - * cycles we spent tracking such fine details would be well-spent. + * InvalidateCatalogSnapshot + * Mark the current catalog snapshot, if any, as invalid + * + * We could change this API to allow the caller to provide more fine-grained + * invalidation details, so that a change to relation A wouldn't prevent us + * from using our cached snapshot to scan relation B, but so far there's no + * evidence that the CPU cycles we spent tracking such fine details would be + * well-spent. */ void InvalidateCatalogSnapshot(void) { - CatalogSnapshotStale = true; + if (CatalogSnapshot) + { + pairingheap_remove(&RegisteredSnapshots, &CatalogSnapshot->ph_node); + CatalogSnapshot = NULL; + SnapshotResetXmin(); + } +} + +/* + * InvalidateCatalogSnapshotConditionally + * Drop catalog snapshot if it's the only one we have + * + * This is called when we are about to wait for client input, so we don't + * want to continue holding the catalog snapshot if it might mean that the + * global xmin horizon can't advance. However, if there are other snapshots + * still active or registered, the catalog snapshot isn't likely to be the + * oldest one, so we might as well keep it. + */ +void +InvalidateCatalogSnapshotConditionally(void) +{ + if (CatalogSnapshot && + ActiveSnapshot == NULL && + pairingheap_is_singular(&RegisteredSnapshots)) + InvalidateCatalogSnapshot(); } /* @@ -509,6 +546,7 @@ SnapshotSetCommandId(CommandId curcid) CurrentSnapshot->curcid = curcid; if (SecondarySnapshot) SecondarySnapshot->curcid = curcid; + /* Should we do the same with CatalogSnapshot? */ } /* @@ -526,6 +564,9 @@ SetTransactionSnapshot(Snapshot sourcesnap, TransactionId sourcexid, /* Caller should have checked this already */ Assert(!FirstSnapshotSet); + /* Better do this to ensure following Assert succeeds. */ + InvalidateCatalogSnapshot(); + Assert(pairingheap_is_empty(&RegisteredSnapshots)); Assert(FirstXactSnapshot == NULL); Assert(!HistoricSnapshotActive()); @@ -918,7 +959,15 @@ xmin_cmp(const pairingheap_node *a, const pairingheap_node *b, void *arg) * Even if there are some remaining snapshots, we may be able to advance our * PGXACT->xmin to some degree. This typically happens when a portal is * dropped. For efficiency, we only consider recomputing PGXACT->xmin when - * the active snapshot stack is empty. + * the active snapshot stack is empty; this allows us not to need to track + * which active snapshot is oldest. + * + * Note: it's tempting to use GetOldestSnapshot() here so that we can include + * active snapshots in the calculation. However, that compares by LSN not + * xmin so it's not entirely clear that it's the same thing. Also, we'd be + * critically dependent on the assumption that the bottommost active snapshot + * stack entry has the oldest xmin. (Current uses of GetOldestSnapshot() are + * not actually critical, but this would be.) */ static void SnapshotResetXmin(void) @@ -1006,7 +1055,7 @@ AtEOXact_Snapshot(bool isCommit) { /* * In transaction-snapshot mode we must release our privately-managed - * reference to the transaction snapshot. We must decrement + * reference to the transaction snapshot. We must remove it from * RegisteredSnapshots to keep the check below happy. But we don't bother * to do FreeSnapshot, for two reasons: the memory will go away with * TopTransactionContext anyway, and if someone has left the snapshot @@ -1046,7 +1095,7 @@ AtEOXact_Snapshot(bool isCommit) /* * As with the FirstXactSnapshot, we needn't spend any effort on * cleaning up the per-snapshot data structures, but we do need to - * unlink them from RegisteredSnapshots to prevent a warning below. + * remove them from RegisteredSnapshots to prevent a warning below. */ foreach(lc, exportedSnapshots) { @@ -1058,6 +1107,9 @@ AtEOXact_Snapshot(bool isCommit) exportedSnapshots = NIL; } + /* Drop catalog snapshot if any */ + InvalidateCatalogSnapshot(); + /* On commit, complain about leftover snapshots */ if (isCommit) { @@ -1517,7 +1569,7 @@ XactHasExportedSnapshots(void) void DeleteAllExportedSnapshotFiles(void) { - char buf[MAXPGPATH]; + char buf[MAXPGPATH + sizeof(SNAPSHOT_EXPORT_DIR)]; DIR *s_dir; struct dirent *s_de; @@ -1538,7 +1590,7 @@ DeleteAllExportedSnapshotFiles(void) strcmp(s_de->d_name, "..") == 0) continue; - snprintf(buf, MAXPGPATH, SNAPSHOT_EXPORT_DIR "/%s", s_de->d_name); + snprintf(buf, sizeof(buf), SNAPSHOT_EXPORT_DIR "/%s", s_de->d_name); /* Again, unlink failure is not worthy of FATAL */ if (unlink(buf)) elog(LOG, "could not unlink file \"%s\": %m", buf); @@ -1960,34 +2012,37 @@ EstimateSnapshotSpace(Snapshot snap) void SerializeSnapshot(Snapshot snapshot, char *start_address) { - SerializedSnapshotData *serialized_snapshot; + SerializedSnapshotData serialized_snapshot; Assert(snapshot->subxcnt >= 0); - serialized_snapshot = (SerializedSnapshotData *) start_address; - /* Copy all required fields */ - serialized_snapshot->xmin = snapshot->xmin; - serialized_snapshot->xmax = snapshot->xmax; - serialized_snapshot->xcnt = snapshot->xcnt; - serialized_snapshot->subxcnt = snapshot->subxcnt; - serialized_snapshot->suboverflowed = snapshot->suboverflowed; - serialized_snapshot->takenDuringRecovery = snapshot->takenDuringRecovery; - serialized_snapshot->curcid = snapshot->curcid; - serialized_snapshot->whenTaken = snapshot->whenTaken; - serialized_snapshot->lsn = snapshot->lsn; + serialized_snapshot.xmin = snapshot->xmin; + serialized_snapshot.xmax = snapshot->xmax; + serialized_snapshot.xcnt = snapshot->xcnt; + serialized_snapshot.subxcnt = snapshot->subxcnt; + serialized_snapshot.suboverflowed = snapshot->suboverflowed; + serialized_snapshot.takenDuringRecovery = snapshot->takenDuringRecovery; + serialized_snapshot.curcid = snapshot->curcid; + serialized_snapshot.whenTaken = snapshot->whenTaken; + serialized_snapshot.lsn = snapshot->lsn; /* * Ignore the SubXID array if it has overflowed, unless the snapshot was * taken during recovey - in that case, top-level XIDs are in subxip as * well, and we mustn't lose them. */ - if (serialized_snapshot->suboverflowed && !snapshot->takenDuringRecovery) - serialized_snapshot->subxcnt = 0; + if (serialized_snapshot.suboverflowed && !snapshot->takenDuringRecovery) + serialized_snapshot.subxcnt = 0; + + /* Copy struct to possibly-unaligned buffer */ + memcpy(start_address, + &serialized_snapshot, sizeof(SerializedSnapshotData)); /* Copy XID array */ if (snapshot->xcnt > 0) - memcpy((TransactionId *) (serialized_snapshot + 1), + memcpy((TransactionId *) (start_address + + sizeof(SerializedSnapshotData)), snapshot->xip, snapshot->xcnt * sizeof(TransactionId)); /* @@ -1996,12 +2051,12 @@ SerializeSnapshot(Snapshot snapshot, char *start_address) * snapshot taken during recovery; all the top-level XIDs are in subxip as * well in that case, so we mustn't lose them. */ - if (serialized_snapshot->subxcnt > 0) + if (serialized_snapshot.subxcnt > 0) { Size subxipoff = sizeof(SerializedSnapshotData) + snapshot->xcnt * sizeof(TransactionId); - memcpy((TransactionId *) ((char *) serialized_snapshot + subxipoff), + memcpy((TransactionId *) (start_address + subxipoff), snapshot->subxip, snapshot->subxcnt * sizeof(TransactionId)); } } @@ -2016,50 +2071,51 @@ SerializeSnapshot(Snapshot snapshot, char *start_address) Snapshot RestoreSnapshot(char *start_address) { - SerializedSnapshotData *serialized_snapshot; + SerializedSnapshotData serialized_snapshot; Size size; Snapshot snapshot; TransactionId *serialized_xids; - serialized_snapshot = (SerializedSnapshotData *) start_address; + memcpy(&serialized_snapshot, start_address, + sizeof(SerializedSnapshotData)); serialized_xids = (TransactionId *) (start_address + sizeof(SerializedSnapshotData)); /* We allocate any XID arrays needed in the same palloc block. */ size = sizeof(SnapshotData) - + serialized_snapshot->xcnt * sizeof(TransactionId) - + serialized_snapshot->subxcnt * sizeof(TransactionId); + + serialized_snapshot.xcnt * sizeof(TransactionId) + + serialized_snapshot.subxcnt * sizeof(TransactionId); /* Copy all required fields */ snapshot = (Snapshot) MemoryContextAlloc(TopTransactionContext, size); snapshot->satisfies = HeapTupleSatisfiesMVCC; - snapshot->xmin = serialized_snapshot->xmin; - snapshot->xmax = serialized_snapshot->xmax; + snapshot->xmin = serialized_snapshot.xmin; + snapshot->xmax = serialized_snapshot.xmax; snapshot->xip = NULL; - snapshot->xcnt = serialized_snapshot->xcnt; + snapshot->xcnt = serialized_snapshot.xcnt; snapshot->subxip = NULL; - snapshot->subxcnt = serialized_snapshot->subxcnt; - snapshot->suboverflowed = serialized_snapshot->suboverflowed; - snapshot->takenDuringRecovery = serialized_snapshot->takenDuringRecovery; - snapshot->curcid = serialized_snapshot->curcid; - snapshot->whenTaken = serialized_snapshot->whenTaken; - snapshot->lsn = serialized_snapshot->lsn; + snapshot->subxcnt = serialized_snapshot.subxcnt; + snapshot->suboverflowed = serialized_snapshot.suboverflowed; + snapshot->takenDuringRecovery = serialized_snapshot.takenDuringRecovery; + snapshot->curcid = serialized_snapshot.curcid; + snapshot->whenTaken = serialized_snapshot.whenTaken; + snapshot->lsn = serialized_snapshot.lsn; /* Copy XIDs, if present. */ - if (serialized_snapshot->xcnt > 0) + if (serialized_snapshot.xcnt > 0) { snapshot->xip = (TransactionId *) (snapshot + 1); memcpy(snapshot->xip, serialized_xids, - serialized_snapshot->xcnt * sizeof(TransactionId)); + serialized_snapshot.xcnt * sizeof(TransactionId)); } /* Copy SubXIDs, if present. */ - if (serialized_snapshot->subxcnt > 0) + if (serialized_snapshot.subxcnt > 0) { snapshot->subxip = ((TransactionId *) (snapshot + 1)) + - serialized_snapshot->xcnt; - memcpy(snapshot->subxip, serialized_xids + serialized_snapshot->xcnt, - serialized_snapshot->subxcnt * sizeof(TransactionId)); + serialized_snapshot.xcnt; + memcpy(snapshot->subxip, serialized_xids + serialized_snapshot.xcnt, + serialized_snapshot.subxcnt * sizeof(TransactionId)); } /* Set the copied flag so that the caller will set refcounts correctly. */ diff --git a/src/backend/utils/time/tqual.c b/src/backend/utils/time/tqual.c index 833beb6e82..1ec6adc54b 100644 --- a/src/backend/utils/time/tqual.c +++ b/src/backend/utils/time/tqual.c @@ -1637,7 +1637,7 @@ HeapTupleHeaderIsOnlyLocked(HeapTupleHeader tuple) } /* - * check whether the transaciont id 'xid' is in the pre-sorted array 'xip'. + * check whether the transaction id 'xid' is in the pre-sorted array 'xip'. */ static bool TransactionIdInArray(TransactionId xid, TransactionId *xip, Size num) diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c index a3ba2240d1..d758a5d596 100644 --- a/src/bin/initdb/initdb.c +++ b/src/bin/initdb/initdb.c @@ -567,7 +567,7 @@ walkdir(const char *path, while (errno = 0, (de = readdir(dir)) != NULL) { - char subpath[MAXPGPATH]; + char subpath[MAXPGPATH * 2]; struct stat fst; int sret; @@ -575,7 +575,7 @@ walkdir(const char *path, strcmp(de->d_name, "..") == 0) continue; - snprintf(subpath, MAXPGPATH, "%s/%s", path, de->d_name); + snprintf(subpath, sizeof(subpath), "%s/%s", path, de->d_name); if (process_symlinks) sret = stat(subpath, &fst); @@ -1287,6 +1287,27 @@ setup_config(void) conflines = replace_token(conflines, "#dynamic_shared_memory_type = posix", repltok); +#if DEFAULT_BACKEND_FLUSH_AFTER > 0 + snprintf(repltok, sizeof(repltok), "#backend_flush_after = %dkB", + DEFAULT_BACKEND_FLUSH_AFTER * (BLCKSZ / 1024)); + conflines = replace_token(conflines, "#backend_flush_after = 0", + repltok); +#endif + +#if DEFAULT_BGWRITER_FLUSH_AFTER > 0 + snprintf(repltok, sizeof(repltok), "#bgwriter_flush_after = %dkB", + DEFAULT_BGWRITER_FLUSH_AFTER * (BLCKSZ / 1024)); + conflines = replace_token(conflines, "#bgwriter_flush_after = 0", + repltok); +#endif + +#if DEFAULT_CHECKPOINT_FLUSH_AFTER > 0 + snprintf(repltok, sizeof(repltok), "#checkpoint_flush_after = %dkB", + DEFAULT_CHECKPOINT_FLUSH_AFTER * (BLCKSZ / 1024)); + conflines = replace_token(conflines, "#checkpoint_flush_after = 0", + repltok); +#endif + #ifndef USE_PREFETCH conflines = replace_token(conflines, "#effective_io_concurrency = 1", diff --git a/src/bin/initdb/po/es.po b/src/bin/initdb/po/es.po index c187b8f5b6..ca89853f58 100644 --- a/src/bin/initdb/po/es.po +++ b/src/bin/initdb/po/es.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: initdb (PostgreSQL 9.6)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-05-02 20:14+0000\n" -"PO-Revision-Date: 2016-05-24 10:42-0500\n" +"POT-Creation-Date: 2017-08-27 21:52+0000\n" +"PO-Revision-Date: 2017-08-28 11:37+0200\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL-es-Ayuda \n" "Language: es\n" @@ -185,109 +185,109 @@ msgstr "no se pudo definir un junction para «%s»: %s\n" msgid "could not get junction for \"%s\": %s\n" msgstr "no se pudo obtener junction para «%s»: %s\n" -#: initdb.c:349 +#: initdb.c:350 #, c-format msgid "%s: out of memory\n" msgstr "%s: memoria agotada\n" -#: initdb.c:459 initdb.c:1589 +#: initdb.c:460 initdb.c:1623 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: no se pudo abrir el archivo «%s» para lectura: %s\n" -#: initdb.c:515 initdb.c:1002 initdb.c:1030 +#: initdb.c:516 initdb.c:1003 initdb.c:1031 #, c-format msgid "%s: could not open file \"%s\" for writing: %s\n" msgstr "%s: no se pudo abrir el archivo «%s» para escritura: %s\n" -#: initdb.c:523 initdb.c:531 initdb.c:1009 initdb.c:1036 +#: initdb.c:524 initdb.c:532 initdb.c:1010 initdb.c:1037 #, c-format msgid "%s: could not write file \"%s\": %s\n" msgstr "%s: no se pudo escribir el archivo «%s»: %s\n" -#: initdb.c:562 +#: initdb.c:563 #, c-format msgid "%s: could not open directory \"%s\": %s\n" msgstr "%s: no se pudo abrir el directorio «%s»: %s\n" -#: initdb.c:586 initdb.c:2334 +#: initdb.c:587 initdb.c:2346 #, c-format msgid "%s: could not stat file \"%s\": %s\n" msgstr "%s: no se pudo hacer stat del archivo «%s»: %s\n" -#: initdb.c:598 +#: initdb.c:599 #, c-format msgid "%s: could not read directory \"%s\": %s\n" msgstr "%s: no se pudo leer el directorio «%s»: %s\n" -#: initdb.c:631 initdb.c:690 +#: initdb.c:632 initdb.c:691 #, c-format msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: no se pudo abrir el archivo «%s»: %s\n" -#: initdb.c:702 +#: initdb.c:703 #, c-format msgid "%s: could not fsync file \"%s\": %s\n" msgstr "%s: no se pudo sincronizar (fsync) el archivo «%s»: %s\n" -#: initdb.c:721 +#: initdb.c:722 #, c-format msgid "%s: could not execute command \"%s\": %s\n" msgstr "%s: no se pudo ejecutar la orden «%s»: %s\n" -#: initdb.c:737 +#: initdb.c:738 #, c-format msgid "%s: removing data directory \"%s\"\n" msgstr "%s: eliminando el directorio de datos «%s»\n" -#: initdb.c:740 +#: initdb.c:741 #, c-format msgid "%s: failed to remove data directory\n" msgstr "%s: no se pudo eliminar el directorio de datos\n" -#: initdb.c:746 +#: initdb.c:747 #, c-format msgid "%s: removing contents of data directory \"%s\"\n" msgstr "%s: eliminando el contenido del directorio «%s»\n" -#: initdb.c:749 +#: initdb.c:750 #, c-format msgid "%s: failed to remove contents of data directory\n" msgstr "%s: no se pudo eliminar el contenido del directorio de datos\n" -#: initdb.c:755 +#: initdb.c:756 #, c-format msgid "%s: removing transaction log directory \"%s\"\n" msgstr "%s: eliminando el directorio de registro de transacciones «%s»\n" -#: initdb.c:758 +#: initdb.c:759 #, c-format msgid "%s: failed to remove transaction log directory\n" msgstr "%s: no se pudo eliminar el directorio de registro de transacciones\n" -#: initdb.c:764 +#: initdb.c:765 #, c-format msgid "%s: removing contents of transaction log directory \"%s\"\n" msgstr "%s: eliminando el contenido del directorio de registro de transacciones «%s»\n" -#: initdb.c:767 +#: initdb.c:768 #, c-format msgid "%s: failed to remove contents of transaction log directory\n" msgstr "%s: no se pudo eliminar el contenido del directorio de registro de transacciones\n" -#: initdb.c:776 +#: initdb.c:777 #, c-format msgid "%s: data directory \"%s\" not removed at user's request\n" msgstr "%s: directorio de datos «%s» no eliminado a petición del usuario\n" -#: initdb.c:781 +#: initdb.c:782 #, c-format msgid "%s: transaction log directory \"%s\" not removed at user's request\n" msgstr "" "%s: el directorio de registro de transacciones «%s» no fue eliminado \n" "a petición del usuario\n" -#: initdb.c:802 +#: initdb.c:803 #, c-format msgid "" "%s: cannot be run as root\n" @@ -298,17 +298,17 @@ msgstr "" "Por favor conéctese (usando, por ejemplo, «su») con un usuario no privilegiado,\n" "quien ejecutará el proceso servidor.\n" -#: initdb.c:838 +#: initdb.c:839 #, c-format msgid "%s: \"%s\" is not a valid server encoding name\n" msgstr "%s: «%s» no es un nombre válido de codificación\n" -#: initdb.c:958 +#: initdb.c:959 #, c-format msgid "%s: file \"%s\" does not exist\n" msgstr "%s: el archivo «%s» no existe\n" -#: initdb.c:960 initdb.c:969 initdb.c:979 +#: initdb.c:961 initdb.c:970 initdb.c:980 #, c-format msgid "" "This might mean you have a corrupted installation or identified\n" @@ -317,46 +317,46 @@ msgstr "" "Esto puede significar que tiene una instalación corrupta o ha\n" "identificado el directorio equivocado con la opción -L.\n" -#: initdb.c:966 +#: initdb.c:967 #, c-format msgid "%s: could not access file \"%s\": %s\n" msgstr "%s: no se pudo acceder al archivo «%s»: %s\n" -#: initdb.c:977 +#: initdb.c:978 #, c-format msgid "%s: file \"%s\" is not a regular file\n" msgstr "%s: el archivo «%s» no es un archivo regular\n" -#: initdb.c:1122 +#: initdb.c:1123 #, c-format msgid "selecting default max_connections ... " msgstr "seleccionando el valor para max_connections ... " -#: initdb.c:1152 +#: initdb.c:1153 #, c-format msgid "selecting default shared_buffers ... " msgstr "seleccionando el valor para shared_buffers ... " -#: initdb.c:1185 +#: initdb.c:1186 #, c-format msgid "selecting dynamic shared memory implementation ... " msgstr "seleccionando implementación de memoria compartida dinámica ..." -#: initdb.c:1203 +#: initdb.c:1204 msgid "creating configuration files ... " msgstr "creando archivos de configuración ... " -#: initdb.c:1300 initdb.c:1320 initdb.c:1404 initdb.c:1420 +#: initdb.c:1328 initdb.c:1348 initdb.c:1432 initdb.c:1448 #, c-format msgid "%s: could not change permissions of \"%s\": %s\n" msgstr "%s: no se pudo cambiar los permisos de «%s»: %s\n" -#: initdb.c:1444 +#: initdb.c:1472 #, c-format msgid "running bootstrap script ... " msgstr "ejecutando script de inicio (bootstrap) ... " -#: initdb.c:1460 +#: initdb.c:1488 #, c-format msgid "" "%s: input file \"%s\" does not belong to PostgreSQL %s\n" @@ -365,94 +365,94 @@ msgstr "" "%s: el archivo de entrada «%s» no pertenece a PostgreSQL %s\n" "Verifique su instalación o especifique la ruta correcta usando la opción -L.\n" -#: initdb.c:1564 +#: initdb.c:1598 msgid "Enter new superuser password: " msgstr "Ingrese la nueva contraseña del superusuario: " -#: initdb.c:1565 +#: initdb.c:1599 msgid "Enter it again: " msgstr "Ingrésela nuevamente: " -#: initdb.c:1568 +#: initdb.c:1602 #, c-format msgid "Passwords didn't match.\n" msgstr "Las constraseñas no coinciden.\n" -#: initdb.c:1596 +#: initdb.c:1630 #, c-format msgid "%s: could not read password from file \"%s\": %s\n" msgstr "%s: no se pudo leer la contraseña desde el archivo «%s»: %s\n" -#: initdb.c:1599 +#: initdb.c:1633 #, c-format msgid "%s: password file \"%s\" is empty\n" msgstr "%s: el archivo de contraseña «%s» está vacío\n" -#: initdb.c:1845 +#: initdb.c:1878 #, c-format msgid "%s: locale name too long, skipped: \"%s\"\n" msgstr "%s: nombre de configuración regional demasiado largo, saltando: «%s»\n" -#: initdb.c:1870 +#: initdb.c:1903 #, c-format msgid "%s: locale name has non-ASCII characters, skipped: \"%s\"\n" msgstr "%s: nombre de configuración regional tiene caracteres no ASCII, saltando: «%s»\n" -#: initdb.c:1943 +#: initdb.c:1976 #, c-format msgid "No usable system locales were found.\n" msgstr "No se encontraron configuraciones regionales utilizables.\n" -#: initdb.c:1944 +#: initdb.c:1977 #, c-format msgid "Use the option \"--debug\" to see details.\n" msgstr "Use la opción «--debug» para ver detalles.\n" -#: initdb.c:2317 +#: initdb.c:2329 msgid "syncing data to disk ... " msgstr "sincronizando los datos a disco ... " -#: initdb.c:2411 +#: initdb.c:2423 #, c-format msgid "caught signal\n" msgstr "se ha capturado una señal\n" -#: initdb.c:2417 +#: initdb.c:2429 #, c-format msgid "could not write to child process: %s\n" msgstr "no se pudo escribir al proceso hijo: %s\n" -#: initdb.c:2425 +#: initdb.c:2437 #, c-format msgid "ok\n" msgstr "hecho\n" -#: initdb.c:2515 +#: initdb.c:2527 #, c-format msgid "%s: setlocale() failed\n" msgstr "%s: setlocale() falló\n" -#: initdb.c:2533 +#: initdb.c:2545 #, c-format msgid "%s: failed to restore old locale \"%s\"\n" msgstr "%s: no se pudo restaurar la configuración regional anterior «%s»\n" -#: initdb.c:2543 +#: initdb.c:2555 #, c-format msgid "%s: invalid locale name \"%s\"\n" msgstr "%s: nombre de configuración regional «%s» no es válido\n" -#: initdb.c:2555 +#: initdb.c:2567 #, c-format msgid "%s: invalid locale settings; check LANG and LC_* environment variables\n" msgstr "%s: configuración regional inválida; revise las variables de entorno LANG y LC_*\n" -#: initdb.c:2583 +#: initdb.c:2595 #, c-format msgid "%s: encoding mismatch\n" msgstr "%s: codificaciones no coinciden\n" -#: initdb.c:2585 +#: initdb.c:2597 #, c-format msgid "" "The encoding you selected (%s) and the encoding that the\n" @@ -467,7 +467,7 @@ msgstr "" "Ejecute %s nuevamente y no especifique una codificación, o bien especifique\n" "una combinación adecuada.\n" -#: initdb.c:2657 +#: initdb.c:2669 #, c-format msgid "" "%s initializes a PostgreSQL database cluster.\n" @@ -476,17 +476,17 @@ msgstr "" "%s inicializa un cluster de base de datos PostgreSQL.\n" "\n" -#: initdb.c:2658 +#: initdb.c:2670 #, c-format msgid "Usage:\n" msgstr "Empleo:\n" -#: initdb.c:2659 +#: initdb.c:2671 #, c-format msgid " %s [OPTION]... [DATADIR]\n" msgstr " %s [OPCIÓN]... [DATADIR]\n" -#: initdb.c:2660 +#: initdb.c:2672 #, c-format msgid "" "\n" @@ -495,45 +495,45 @@ msgstr "" "\n" "Opciones:\n" -#: initdb.c:2661 +#: initdb.c:2673 #, c-format msgid " -A, --auth=METHOD default authentication method for local connections\n" msgstr "" " -A, --auth=MÉTODO método de autentificación por omisión para\n" " conexiones locales\n" -#: initdb.c:2662 +#: initdb.c:2674 #, c-format msgid " --auth-host=METHOD default authentication method for local TCP/IP connections\n" msgstr "" " --auth-host=MÉTODO método de autentificación por omisión para\n" " conexiones locales TCP/IP\n" -#: initdb.c:2663 +#: initdb.c:2675 #, c-format msgid " --auth-local=METHOD default authentication method for local-socket connections\n" msgstr "" " --auth-local=MÉTODO método de autentificación por omisión para\n" " conexiones de socket local\n" -#: initdb.c:2664 +#: initdb.c:2676 #, c-format msgid " [-D, --pgdata=]DATADIR location for this database cluster\n" msgstr " [-D, --pgdata=]DATADIR ubicación para este cluster de bases de datos\n" -#: initdb.c:2665 +#: initdb.c:2677 #, c-format msgid " -E, --encoding=ENCODING set default encoding for new databases\n" msgstr " -E, --encoding=CODIF codificación por omisión para nuevas bases de datos\n" -#: initdb.c:2666 +#: initdb.c:2678 #, c-format msgid " --locale=LOCALE set default locale for new databases\n" msgstr "" " --locale=LOCALE configuración regional por omisión para \n" " nuevas bases de datos\n" -#: initdb.c:2667 +#: initdb.c:2679 #, c-format msgid "" " --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n" @@ -547,17 +547,17 @@ msgstr "" " en la categoría respectiva (el valor por omisión\n" " es tomado de variables de ambiente)\n" -#: initdb.c:2671 +#: initdb.c:2683 #, c-format msgid " --no-locale equivalent to --locale=C\n" msgstr " --no-locale equivalente a --locale=C\n" -#: initdb.c:2672 +#: initdb.c:2684 #, c-format msgid " --pwfile=FILE read password for the new superuser from file\n" msgstr " --pwfile=ARCHIVO leer contraseña del nuevo superusuario del archivo\n" -#: initdb.c:2673 +#: initdb.c:2685 #, c-format msgid "" " -T, --text-search-config=CFG\n" @@ -566,24 +566,24 @@ msgstr "" " -T, --text-search-config=CONF\n" " configuración de búsqueda en texto por omisión\n" -#: initdb.c:2675 +#: initdb.c:2687 #, c-format msgid " -U, --username=NAME database superuser name\n" msgstr " -U, --username=USUARIO nombre del superusuario del cluster\n" -#: initdb.c:2676 +#: initdb.c:2688 #, c-format msgid " -W, --pwprompt prompt for a password for the new superuser\n" msgstr " -W, --pwprompt pedir una contraseña para el nuevo superusuario\n" -#: initdb.c:2677 +#: initdb.c:2689 #, c-format msgid " -X, --xlogdir=XLOGDIR location for the transaction log directory\n" msgstr "" " -X, --xlogdir=XLOGDIR ubicación del directorio del registro de\n" " transacciones\n" -#: initdb.c:2678 +#: initdb.c:2690 #, c-format msgid "" "\n" @@ -592,42 +592,42 @@ msgstr "" "\n" "Opciones menos usadas:\n" -#: initdb.c:2679 +#: initdb.c:2691 #, c-format msgid " -d, --debug generate lots of debugging output\n" msgstr " -d, --debug genera mucha salida de depuración\n" -#: initdb.c:2680 +#: initdb.c:2692 #, c-format msgid " -k, --data-checksums use data page checksums\n" msgstr " -k, --data-checksums activar sumas de verificación en páginas de datos\n" -#: initdb.c:2681 +#: initdb.c:2693 #, c-format msgid " -L DIRECTORY where to find the input files\n" msgstr " -L DIRECTORIO donde encontrar los archivos de entrada\n" -#: initdb.c:2682 +#: initdb.c:2694 #, c-format msgid " -n, --noclean do not clean up after errors\n" msgstr " -n, --noclean no limpiar después de errores\n" -#: initdb.c:2683 +#: initdb.c:2695 #, c-format msgid " -N, --nosync do not wait for changes to be written safely to disk\n" msgstr " -N, --nosync no esperar que los cambios se sincronicen a disco\n" -#: initdb.c:2684 +#: initdb.c:2696 #, c-format msgid " -s, --show show internal settings\n" msgstr " -s, --show muestra variables internas\n" -#: initdb.c:2685 +#: initdb.c:2697 #, c-format msgid " -S, --sync-only only sync data directory\n" msgstr " -S, --sync-only sólo sincronizar el directorio de datos\n" -#: initdb.c:2686 +#: initdb.c:2698 #, c-format msgid "" "\n" @@ -636,17 +636,17 @@ msgstr "" "\n" "Otras opciones:\n" -#: initdb.c:2687 +#: initdb.c:2699 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version mostrar información de version y salir\n" -#: initdb.c:2688 +#: initdb.c:2700 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help mostrar esta ayuda y salir\n" -#: initdb.c:2689 +#: initdb.c:2701 #, c-format msgid "" "\n" @@ -657,7 +657,7 @@ msgstr "" "Si el directorio de datos no es especificado, se usa la variable de\n" "ambiente PGDATA.\n" -#: initdb.c:2691 +#: initdb.c:2703 #, c-format msgid "" "\n" @@ -666,7 +666,7 @@ msgstr "" "\n" "Reporte errores a .\n" -#: initdb.c:2699 +#: initdb.c:2711 msgid "" "\n" "WARNING: enabling \"trust\" authentication for local connections\n" @@ -678,19 +678,19 @@ msgstr "" "Puede cambiar esto editando pg_hba.conf o usando el parámetro -A,\n" "o --auth-local y --auth-host la próxima vez que ejecute initdb.\n" -#: initdb.c:2721 +#: initdb.c:2733 #, c-format msgid "%s: invalid authentication method \"%s\" for \"%s\" connections\n" msgstr "%s: método de autentificación «%s» no válido para conexiones «%s»\n" -#: initdb.c:2735 +#: initdb.c:2747 #, c-format msgid "%s: must specify a password for the superuser to enable %s authentication\n" msgstr "" "%s: debe especificar una contraseña al superusuario para activar\n" "autentificación %s\n" -#: initdb.c:2762 +#: initdb.c:2774 #, c-format msgid "" "%s: no data directory specified\n" @@ -702,7 +702,7 @@ msgstr "" "Debe especificar el directorio donde residirán los datos para este cluster.\n" "Hágalo usando la opción -D o la variable de ambiente PGDATA.\n" -#: initdb.c:2800 +#: initdb.c:2812 #, c-format msgid "" "The program \"postgres\" is needed by %s but was not found in the\n" @@ -713,7 +713,7 @@ msgstr "" "directorio que «%s».\n" "Verifique su instalación.\n" -#: initdb.c:2807 +#: initdb.c:2819 #, c-format msgid "" "The program \"postgres\" was found by \"%s\"\n" @@ -724,17 +724,17 @@ msgstr "" "de la misma versión que «%s».\n" "Verifique su instalación.\n" -#: initdb.c:2826 +#: initdb.c:2838 #, c-format msgid "%s: input file location must be an absolute path\n" msgstr "%s: la ubicación de archivos de entrada debe ser una ruta absoluta\n" -#: initdb.c:2845 +#: initdb.c:2857 #, c-format msgid "The database cluster will be initialized with locale \"%s\".\n" msgstr "El cluster será inicializado con configuración regional «%s».\n" -#: initdb.c:2848 +#: initdb.c:2860 #, c-format msgid "" "The database cluster will be initialized with locales\n" @@ -753,24 +753,24 @@ msgstr "" " NUMERIC: %s\n" " TIME: %s\n" -#: initdb.c:2872 +#: initdb.c:2884 #, c-format msgid "%s: could not find suitable encoding for locale \"%s\"\n" msgstr "" "%s: no se pudo encontrar una codificación apropiada para\n" "la configuración regional «%s»\n" -#: initdb.c:2874 +#: initdb.c:2886 #, c-format msgid "Rerun %s with the -E option.\n" msgstr "Ejecute %s con la opción -E.\n" -#: initdb.c:2875 initdb.c:3498 initdb.c:3519 +#: initdb.c:2887 initdb.c:3508 initdb.c:3529 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Use «%s --help» para obtener mayor información.\n" -#: initdb.c:2887 +#: initdb.c:2899 #, c-format msgid "" "Encoding \"%s\" implied by locale is not allowed as a server-side encoding.\n" @@ -780,12 +780,12 @@ msgstr "" "no puede ser usada como codificación del lado del servidor.\n" "La codificación por omisión será «%s».\n" -#: initdb.c:2895 +#: initdb.c:2907 #, c-format msgid "%s: locale \"%s\" requires unsupported encoding \"%s\"\n" msgstr "%s: la configuración regional «%s» requiere la codificación no soportada «%s»\n" -#: initdb.c:2898 +#: initdb.c:2910 #, c-format msgid "" "Encoding \"%s\" is not allowed as a server-side encoding.\n" @@ -795,63 +795,63 @@ msgstr "" "del servidor.\n" "Ejecute %s nuevamente con una selección de configuración regional diferente.\n" -#: initdb.c:2907 +#: initdb.c:2919 #, c-format msgid "The default database encoding has accordingly been set to \"%s\".\n" msgstr "La codificación por omisión ha sido por lo tanto definida a «%s».\n" -#: initdb.c:2978 +#: initdb.c:2990 #, c-format msgid "%s: could not find suitable text search configuration for locale \"%s\"\n" msgstr "" "%s: no se pudo encontrar una configuración para búsqueda en texto apropiada\n" "para la configuración regional «%s»\n" -#: initdb.c:2989 +#: initdb.c:3001 #, c-format msgid "%s: warning: suitable text search configuration for locale \"%s\" is unknown\n" msgstr "" "%s: atención: la configuración de búsqueda en texto apropiada para\n" "la configuración regional «%s» es desconocida\n" -#: initdb.c:2994 +#: initdb.c:3006 #, c-format msgid "%s: warning: specified text search configuration \"%s\" might not match locale \"%s\"\n" msgstr "" "%s: atención: la configuración de búsqueda en texto «%s» especificada\n" "podría no coincidir con la configuración regional «%s»\n" -#: initdb.c:2999 +#: initdb.c:3011 #, c-format msgid "The default text search configuration will be set to \"%s\".\n" msgstr "La configuración de búsqueda en texto ha sido definida a «%s».\n" -#: initdb.c:3043 initdb.c:3129 +#: initdb.c:3055 initdb.c:3141 #, c-format msgid "creating directory %s ... " msgstr "creando el directorio %s ... " -#: initdb.c:3049 initdb.c:3135 initdb.c:3203 initdb.c:3259 +#: initdb.c:3061 initdb.c:3147 initdb.c:3215 initdb.c:3271 #, c-format msgid "%s: could not create directory \"%s\": %s\n" msgstr "%s: no se pudo crear el directorio «%s»: %s\n" -#: initdb.c:3061 initdb.c:3147 +#: initdb.c:3073 initdb.c:3159 #, c-format msgid "fixing permissions on existing directory %s ... " msgstr "corrigiendo permisos en el directorio existente %s ... " -#: initdb.c:3067 initdb.c:3153 +#: initdb.c:3079 initdb.c:3165 #, c-format msgid "%s: could not change permissions of directory \"%s\": %s\n" msgstr "%s: no se pudo cambiar los permisos del directorio «%s»: %s\n" -#: initdb.c:3082 initdb.c:3168 +#: initdb.c:3094 initdb.c:3180 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" msgstr "%s: el directorio «%s» no está vacío\n" -#: initdb.c:3088 +#: initdb.c:3100 #, c-format msgid "" "If you want to create a new database system, either remove or empty\n" @@ -862,17 +862,17 @@ msgstr "" "el directorio «%s», o ejecute %s\n" "con un argumento distinto de «%s».\n" -#: initdb.c:3096 initdb.c:3181 initdb.c:3532 +#: initdb.c:3108 initdb.c:3193 initdb.c:3542 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: no se pudo acceder al directorio «%s»: %s\n" -#: initdb.c:3120 +#: initdb.c:3132 #, c-format msgid "%s: transaction log directory location must be an absolute path\n" msgstr "%s: la ubicación de archivos de transacción debe ser una ruta absoluta\n" -#: initdb.c:3174 +#: initdb.c:3186 #, c-format msgid "" "If you want to store the transaction log there, either\n" @@ -881,27 +881,27 @@ msgstr "" "Si quiere almacenar el directorio de registro de transacciones ahí,\n" "elimine o vacíe el directorio «%s».\n" -#: initdb.c:3189 +#: initdb.c:3201 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" msgstr "%s: no se pudo crear el enlace simbólico «%s»: %s\n" -#: initdb.c:3194 +#: initdb.c:3206 #, c-format msgid "%s: symlinks are not supported on this platform" msgstr "%s: los enlaces simbólicos no están soportados en esta plataforma" -#: initdb.c:3218 +#: initdb.c:3230 #, c-format msgid "It contains a dot-prefixed/invisible file, perhaps due to it being a mount point.\n" msgstr "Contiene un archivo invisible, quizás por ser un punto de montaje.\n" -#: initdb.c:3221 +#: initdb.c:3233 #, c-format msgid "It contains a lost+found directory, perhaps due to it being a mount point.\n" msgstr "Contiene un directorio lost+found, quizás por ser un punto de montaje.\n" -#: initdb.c:3224 +#: initdb.c:3236 #, c-format msgid "" "Using a mount point directly as the data directory is not recommended.\n" @@ -910,38 +910,43 @@ msgstr "" "Usar un punto de montaje directamente como directorio de datos no es\n" "recomendado. Cree un subdirectorio bajo el punto de montaje.\n" -#: initdb.c:3244 +#: initdb.c:3256 #, c-format msgid "creating subdirectories ... " msgstr "creando subdirectorios ... " -#: initdb.c:3291 +#: initdb.c:3303 msgid "performing post-bootstrap initialization ... " msgstr "realizando inicialización post-bootstrap ... " -#: initdb.c:3442 +#: initdb.c:3452 #, c-format msgid "Running in debug mode.\n" msgstr "Ejecutando en modo de depuración.\n" -#: initdb.c:3446 +#: initdb.c:3456 #, c-format msgid "Running in noclean mode. Mistakes will not be cleaned up.\n" msgstr "Ejecutando en modo sucio. Los errores no serán limpiados.\n" -#: initdb.c:3517 +#: initdb.c:3527 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: demasiados argumentos de línea de órdenes (el primero es «%s»)\n" -#: initdb.c:3543 +#: initdb.c:3553 #, c-format msgid "%s: password prompt and password file cannot be specified together\n" msgstr "" "%s: la petición de contraseña y el archivo de contraseña no pueden\n" "ser especificados simultáneamente\n" -#: initdb.c:3565 +#: initdb.c:3577 +#, c-format +msgid "%s: superuser name \"%s\" is disallowed; role names cannot begin with \"pg_\"\n" +msgstr "%s: nombre de superusuario «%s» no permitido; los nombres de rol no pueden comenzar con «pg_»\n" + +#: initdb.c:3581 #, c-format msgid "" "The files belonging to this database system will be owned by user \"%s\".\n" @@ -952,17 +957,17 @@ msgstr "" "Este usuario también debe ser quien ejecute el proceso servidor.\n" "\n" -#: initdb.c:3581 +#: initdb.c:3597 #, c-format msgid "Data page checksums are enabled.\n" msgstr "Las sumas de verificación en páginas de datos han sido activadas.\n" -#: initdb.c:3583 +#: initdb.c:3599 #, c-format msgid "Data page checksums are disabled.\n" msgstr "Las sumas de verificación en páginas de datos han sido desactivadas.\n" -#: initdb.c:3592 +#: initdb.c:3611 #, c-format msgid "" "\n" @@ -974,7 +979,7 @@ msgstr "" "El directorio de datos podría corromperse si el sistema operativo sufre\n" "una caída.\n" -#: initdb.c:3601 +#: initdb.c:3620 #, c-format msgid "" "\n" @@ -988,51 +993,3 @@ msgstr "" "\n" " %s%s%spg_ctl%s -D %s%s%s -l archivo_de_log start\n" "\n" - -#~ msgid "copying template1 to postgres ... " -#~ msgstr "copiando template1 a postgres ... " - -#~ msgid "copying template1 to template0 ... " -#~ msgstr "copiando template1 a template0 ... " - -#~ msgid "vacuuming database template1 ... " -#~ msgstr "haciendo vacuum a la base de datos template1 ... " - -#~ msgid "loading PL/pgSQL server-side language ... " -#~ msgstr "instalando el lenguaje PL/pgSQL ... " - -#~ msgid "creating information schema ... " -#~ msgstr "creando el esquema de información ... " - -#~ msgid "setting privileges on built-in objects ... " -#~ msgstr "estableciendo privilegios en objetos predefinidos ... " - -#~ msgid "creating dictionaries ... " -#~ msgstr "creando diccionarios ... " - -#~ msgid "creating conversions ... " -#~ msgstr "creando conversiones ... " - -#~ msgid "not supported on this platform\n" -#~ msgstr "no está soportado en esta plataforma\n" - -#~ msgid "creating collations ... " -#~ msgstr "creando algoritmos de ordenamiento ... " - -#~ msgid "loading system objects' descriptions ... " -#~ msgstr "cargando las descripciones de los objetos del sistema ... " - -#~ msgid "creating system views ... " -#~ msgstr "creando las vistas de sistema ... " - -#~ msgid "initializing dependencies ... " -#~ msgstr "inicializando dependencias ... " - -#~ msgid "setting password ... " -#~ msgstr "estableciendo contraseña ... " - -#~ msgid "initializing pg_authid ... " -#~ msgstr "inicializando pg_authid ... " - -#~ msgid "creating template1 database in %s/base/1 ... " -#~ msgstr "creando base de datos template1 en %s/base/1 ... " diff --git a/src/bin/initdb/po/fr.po b/src/bin/initdb/po/fr.po index 120d119fb3..1d4021ea1b 100644 --- a/src/bin/initdb/po/fr.po +++ b/src/bin/initdb/po/fr.po @@ -1,10 +1,10 @@ # translation of initdb.po to fr_fr # french message translation file for initdb # -# Use these quotes: « %s » +# Use these quotes: « %s » # # Guillaume Lelarge , 2004-2009. -# Stéphane Schildknecht , 2009. +# Stéphane Schildknecht , 2009. msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" @@ -15,50 +15,50 @@ msgstr "" "Language-Team: PostgreSQLfr \n" "Language: fr\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.8.7.1\n" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, c-format msgid "could not identify current directory: %s" -msgstr "n'a pas pu identifier le répertoire courant : %s" +msgstr "n'a pas pu identifier le répertoire courant : %s" #: ../../common/exec.c:146 #, c-format msgid "invalid binary \"%s\"" -msgstr "binaire « %s » invalide" +msgstr "binaire « %s » invalide" #: ../../common/exec.c:195 #, c-format msgid "could not read binary \"%s\"" -msgstr "n'a pas pu lire le binaire « %s »" +msgstr "n'a pas pu lire le binaire « %s »" #: ../../common/exec.c:202 #, c-format msgid "could not find a \"%s\" to execute" -msgstr "n'a pas pu trouver un « %s » à exécuter" +msgstr "n'a pas pu trouver un « %s » à exécuter" #: ../../common/exec.c:257 ../../common/exec.c:293 #, c-format msgid "could not change directory to \"%s\": %s" -msgstr "n'a pas pu modifier le répertoire par « %s » : %s" +msgstr "n'a pas pu modifier le répertoire par « %s » : %s" #: ../../common/exec.c:272 #, c-format msgid "could not read symbolic link \"%s\"" -msgstr "n'a pas pu lire le lien symbolique « %s »" +msgstr "n'a pas pu lire le lien symbolique « %s »" #: ../../common/exec.c:523 #, c-format msgid "pclose failed: %s" -msgstr "échec de pclose : %s" +msgstr "échec de pclose : %s" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 #: ../../common/fe_memutils.c:98 #, c-format msgid "out of memory\n" -msgstr "mémoire épuisée\n" +msgstr "mémoire épuisée\n" #: ../../common/fe_memutils.c:92 #, c-format @@ -68,22 +68,22 @@ msgstr "ne peut pas dupliquer un pointeur nul (erreur interne)\n" #: ../../common/pgfnames.c:45 #, c-format msgid "could not open directory \"%s\": %s\n" -msgstr "n'a pas pu ouvrir le répertoire « %s » : %s\n" +msgstr "n'a pas pu ouvrir le répertoire « %s » : %s\n" #: ../../common/pgfnames.c:72 #, c-format msgid "could not read directory \"%s\": %s\n" -msgstr "n'a pas pu lire le répertoire « %s » : %s\n" +msgstr "n'a pas pu lire le répertoire « %s » : %s\n" #: ../../common/pgfnames.c:84 #, c-format msgid "could not close directory \"%s\": %s\n" -msgstr "n'a pas pu fermer le répertoire « %s » : %s\n" +msgstr "n'a pas pu fermer le répertoire « %s » : %s\n" #: ../../common/restricted_token.c:68 #, c-format msgid "%s: WARNING: cannot create restricted tokens on this platform\n" -msgstr "%s : ATTENTION : ne peut pas crér les jetons restreints sur cette plateforme\n" +msgstr "%s : ATTENTION : ne peut pas crér les jetons restreints sur cette plateforme\n" #: ../../common/restricted_token.c:77 #, c-format @@ -98,39 +98,39 @@ msgstr "%s : n'a pas pu allouer les SID : code d'erreur %lu\n" #: ../../common/restricted_token.c:110 #, c-format msgid "%s: could not create restricted token: error code %lu\n" -msgstr "%s : n'a pas pu créer le jeton restreint : code d'erreur %lu\n" +msgstr "%s : n'a pas pu créer le jeton restreint : code d'erreur %lu\n" #: ../../common/restricted_token.c:132 #, c-format msgid "%s: could not start process for command \"%s\": error code %lu\n" -msgstr "%s : n'a pas pu démarrer le processus pour la commande « %s » : code d'erreur %lu\n" +msgstr "%s : n'a pas pu démarrer le processus pour la commande « %s » : code d'erreur %lu\n" #: ../../common/restricted_token.c:170 #, c-format msgid "%s: could not re-execute with restricted token: error code %lu\n" -msgstr "%s : n'a pas pu ré-exécuter le jeton restreint : code d'erreur %lu\n" +msgstr "%s : n'a pas pu ré-exécuter le jeton restreint : code d'erreur %lu\n" #: ../../common/restricted_token.c:186 #, c-format msgid "%s: could not get exit code from subprocess: error code %lu\n" -msgstr "%s : n'a pas pu récupérer le code de statut du sous-processus : code d'erreur %lu\n" +msgstr "%s : n'a pas pu récupérer le code de statut du sous-processus : code d'erreur %lu\n" #: ../../common/rmtree.c:77 #, c-format msgid "could not stat file or directory \"%s\": %s\n" msgstr "" -"n'a pas pu récupérer les informations sur le fichier ou répertoire\n" -"« %s » : %s\n" +"n'a pas pu récupérer les informations sur le fichier ou répertoire\n" +"« %s » : %s\n" #: ../../common/rmtree.c:104 ../../common/rmtree.c:121 #, c-format msgid "could not remove file or directory \"%s\": %s\n" -msgstr "n'a pas pu supprimer le fichier ou répertoire « %s » : %s\n" +msgstr "n'a pas pu supprimer le fichier ou répertoire « %s » : %s\n" #: ../../common/username.c:45 #, 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" +msgstr "n'a pas pu trouver l'identifiant réel %ld de l'utilisateur : %s" #: ../../common/username.c:47 msgid "user does not exist" @@ -139,12 +139,12 @@ msgstr "l'utilisateur n'existe pas" #: ../../common/username.c:62 #, c-format msgid "user name lookup failure: error code %lu" -msgstr "échec de la recherche du nom d'utilisateur : code erreur %lu" +msgstr "échec de la recherche du nom d'utilisateur : code erreur %lu" #: ../../common/wait_error.c:47 #, c-format msgid "command not executable" -msgstr "commande non exécutable" +msgstr "commande non exécutable" #: ../../common/wait_error.c:51 #, c-format @@ -154,138 +154,138 @@ msgstr "commande introuvable" #: ../../common/wait_error.c:56 #, c-format msgid "child process exited with exit code %d" -msgstr "le processus fils a quitté avec le code de sortie %d" +msgstr "le processus fils a quitté avec le code de sortie %d" #: ../../common/wait_error.c:63 #, c-format msgid "child process was terminated by exception 0x%X" -msgstr "le processus fils a été terminé par l'exception 0x%X" +msgstr "le processus fils a été terminé par l'exception 0x%X" #: ../../common/wait_error.c:73 #, c-format msgid "child process was terminated by signal %s" -msgstr "le processus fils a été terminé par le signal %s" +msgstr "le processus fils a été terminé par le signal %s" #: ../../common/wait_error.c:77 #, c-format msgid "child process was terminated by signal %d" -msgstr "le processus fils a été terminé par le signal %d" +msgstr "le processus fils a été terminé par le signal %d" #: ../../common/wait_error.c:82 #, c-format msgid "child process exited with unrecognized status %d" -msgstr "le processus fils a quitté avec un statut %d non reconnu" +msgstr "le processus fils a quitté avec un statut %d non reconnu" #: ../../port/dirmod.c:221 #, c-format msgid "could not set junction for \"%s\": %s\n" -msgstr "n'a pas pu configurer la jonction pour « %s » : %s\n" +msgstr "n'a pas pu configurer la jonction pour « %s » : %s\n" #: ../../port/dirmod.c:298 #, c-format msgid "could not get junction for \"%s\": %s\n" -msgstr "n'a pas pu obtenir la jonction pour « %s » : %s\n" +msgstr "n'a pas pu obtenir la jonction pour « %s » : %s\n" #: initdb.c:349 #, c-format msgid "%s: out of memory\n" -msgstr "%s : mémoire épuisée\n" +msgstr "%s : mémoire épuisée\n" #: initdb.c:459 initdb.c:1589 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" -msgstr "%s : n'a pas pu ouvrir le fichier « %s » en lecture : %s\n" +msgstr "%s : n'a pas pu ouvrir le fichier « %s » en lecture : %s\n" #: initdb.c:515 initdb.c:1002 initdb.c:1030 #, c-format msgid "%s: could not open file \"%s\" for writing: %s\n" -msgstr "%s : n'a pas pu ouvrir le fichier « %s » en écriture : %s\n" +msgstr "%s : n'a pas pu ouvrir le fichier « %s » en écriture : %s\n" #: initdb.c:523 initdb.c:531 initdb.c:1009 initdb.c:1036 #, c-format msgid "%s: could not write file \"%s\": %s\n" -msgstr "%s : n'a pas pu écrire le fichier « %s » : %s\n" +msgstr "%s : n'a pas pu écrire le fichier « %s » : %s\n" #: initdb.c:562 #, c-format msgid "%s: could not open directory \"%s\": %s\n" -msgstr "%s : n'a pas pu ouvrir le répertoire « %s » : %s\n" +msgstr "%s : n'a pas pu ouvrir le répertoire « %s » : %s\n" #: initdb.c:586 initdb.c:2334 #, c-format msgid "%s: could not stat file \"%s\": %s\n" -msgstr "%s : n'a pas pu récupérer les informations sur le fichier « %s » : %s\n" +msgstr "%s : n'a pas pu récupérer les informations sur le fichier « %s » : %s\n" #: initdb.c:598 #, c-format msgid "%s: could not read directory \"%s\": %s\n" -msgstr "%s : n'a pas pu lire le répertoire « %s » : %s\n" +msgstr "%s : n'a pas pu lire le répertoire « %s » : %s\n" #: initdb.c:631 initdb.c:690 #, c-format msgid "%s: could not open file \"%s\": %s\n" -msgstr "%s : n'a pas pu ouvrir le fichier « %s » : %s\n" +msgstr "%s : n'a pas pu ouvrir le fichier « %s » : %s\n" #: initdb.c:702 #, c-format msgid "%s: could not fsync file \"%s\": %s\n" -msgstr "%s : n'a pas pu synchroniser sur disque le fichier « %s » : %s\n" +msgstr "%s : n'a pas pu synchroniser sur disque le fichier « %s » : %s\n" #: initdb.c:721 #, c-format msgid "%s: could not execute command \"%s\": %s\n" -msgstr "%s : n'a pas pu exécuter la commande « %s » : %s\n" +msgstr "%s : n'a pas pu exécuter la commande « %s » : %s\n" #: initdb.c:737 #, c-format msgid "%s: removing data directory \"%s\"\n" -msgstr "%s : suppression du répertoire des données « %s »\n" +msgstr "%s : suppression du répertoire des données « %s »\n" #: initdb.c:740 #, c-format msgid "%s: failed to remove data directory\n" -msgstr "%s : échec de la suppression du répertoire des données\n" +msgstr "%s : échec de la suppression du répertoire des données\n" #: initdb.c:746 #, c-format msgid "%s: removing contents of data directory \"%s\"\n" -msgstr "%s : suppression du contenu du répertoire des données « %s »\n" +msgstr "%s : suppression du contenu du répertoire des données « %s »\n" #: initdb.c:749 #, c-format msgid "%s: failed to remove contents of data directory\n" -msgstr "%s : échec de la suppression du contenu du répertoire des données\n" +msgstr "%s : échec de la suppression du contenu du répertoire des données\n" #: initdb.c:755 #, c-format msgid "%s: removing transaction log directory \"%s\"\n" -msgstr "%s : suppression du répertoire des journaux de transaction « %s »\n" +msgstr "%s : suppression du répertoire des journaux de transaction « %s »\n" #: initdb.c:758 #, c-format msgid "%s: failed to remove transaction log directory\n" -msgstr "%s : échec de la suppression du répertoire des journaux de transaction\n" +msgstr "%s : échec de la suppression du répertoire des journaux de transaction\n" #: initdb.c:764 #, c-format msgid "%s: removing contents of transaction log directory \"%s\"\n" -msgstr "%s : suppression du contenu du répertoire des journaux de transaction « %s »\n" +msgstr "%s : suppression du contenu du répertoire des journaux de transaction « %s »\n" #: initdb.c:767 #, c-format msgid "%s: failed to remove contents of transaction log directory\n" -msgstr "%s : échec de la suppression du contenu du répertoire des journaux de transaction\n" +msgstr "%s : échec de la suppression du contenu du répertoire des journaux de transaction\n" #: initdb.c:776 #, c-format msgid "%s: data directory \"%s\" not removed at user's request\n" -msgstr "%s : répertoire des données « %s » non supprimé à la demande de l'utilisateur\n" +msgstr "%s : répertoire des données « %s » non supprimé à la demande de l'utilisateur\n" #: initdb.c:781 #, c-format msgid "%s: transaction log directory \"%s\" not removed at user's request\n" msgstr "" -"%s : répertoire des journaux de transaction « %s » non supprimé à la demande\n" +"%s : répertoire des journaux de transaction « %s » non supprimé à la demande\n" "de l'utilisateur\n" #: initdb.c:802 @@ -295,19 +295,19 @@ msgid "" "Please log in (using, e.g., \"su\") as the (unprivileged) user that will\n" "own the server process.\n" msgstr "" -"%s : ne peut pas être exécuté en tant qu'utilisateur root\n" -"Connectez-vous (par exemple en utilisant « su ») sous l'utilisateur (non\n" -" privilégié) qui sera propriétaire du processus serveur.\n" +"%s : ne peut pas être exécuté en tant qu'utilisateur root\n" +"Connectez-vous (par exemple en utilisant « su ») sous l'utilisateur (non\n" +" privilégié) qui sera propriétaire du processus serveur.\n" #: initdb.c:838 #, c-format msgid "%s: \"%s\" is not a valid server encoding name\n" -msgstr "%s : « %s » n'est pas un nom d'encodage serveur valide\n" +msgstr "%s : « %s » n'est pas un nom d'encodage serveur valide\n" #: initdb.c:958 #, c-format msgid "%s: file \"%s\" does not exist\n" -msgstr "%s : le fichier « %s » n'existe pas\n" +msgstr "%s : le fichier « %s » n'existe pas\n" #: initdb.c:960 initdb.c:969 initdb.c:979 #, c-format @@ -316,41 +316,41 @@ msgid "" "the wrong directory with the invocation option -L.\n" msgstr "" "Cela peut signifier que votre installation est corrompue ou que vous avez\n" -"identifié le mauvais répertoire avec l'option -L.\n" +"identifié le mauvais répertoire avec l'option -L.\n" #: initdb.c:966 #, c-format msgid "%s: could not access file \"%s\": %s\n" -msgstr "%s : n'a pas pu accéder au fichier « %s » : %s\n" +msgstr "%s : n'a pas pu accéder au fichier « %s » : %s\n" #: initdb.c:977 #, c-format msgid "%s: file \"%s\" is not a regular file\n" -msgstr "%s : « %s » n'est pas un fichier\n" +msgstr "%s : « %s » n'est pas un fichier\n" #: initdb.c:1122 #, c-format msgid "selecting default max_connections ... " -msgstr "sélection de la valeur par défaut de max_connections... " +msgstr "sélection de la valeur par défaut de max_connections... " #: initdb.c:1152 #, c-format msgid "selecting default shared_buffers ... " -msgstr "sélection de la valeur par défaut pour shared_buffers... " +msgstr "sélection de la valeur par défaut pour shared_buffers... " #: initdb.c:1185 #, c-format msgid "selecting dynamic shared memory implementation ... " -msgstr "sélection de l'implémentation de la mémoire partagée dynamique..." +msgstr "sélection de l'implémentation de la mémoire partagée dynamique..." #: initdb.c:1203 msgid "creating configuration files ... " -msgstr "création des fichiers de configuration... " +msgstr "création des fichiers de configuration... " #: initdb.c:1300 initdb.c:1320 initdb.c:1404 initdb.c:1420 #, c-format msgid "%s: could not change permissions of \"%s\": %s\n" -msgstr "%s : n'a pas pu modifier les droits de « %s » : %s\n" +msgstr "%s : n'a pas pu modifier les droits de « %s » : %s\n" #: initdb.c:1444 #, c-format @@ -363,8 +363,8 @@ msgid "" "%s: input file \"%s\" does not belong to PostgreSQL %s\n" "Check your installation or specify the correct path using the option -L.\n" msgstr "" -"%s : le fichier « %s » n'appartient pas à PostgreSQL %s\n" -"Vérifiez votre installation ou indiquez le bon chemin avec l'option -L.\n" +"%s : le fichier « %s » n'appartient pas à PostgreSQL %s\n" +"Vérifiez votre installation ou indiquez le bon chemin avec l'option -L.\n" #: initdb.c:1564 msgid "Enter new superuser password: " @@ -372,7 +372,7 @@ msgstr "Saisissez le nouveau mot de passe du super-utilisateur : " #: initdb.c:1565 msgid "Enter it again: " -msgstr "Saisissez-le à nouveau : " +msgstr "Saisissez-le à nouveau : " #: initdb.c:1568 #, c-format @@ -382,46 +382,46 @@ msgstr "Les mots de passe ne sont pas identiques.\n" #: initdb.c:1596 #, c-format msgid "%s: could not read password from file \"%s\": %s\n" -msgstr "%s : n'a pas pu lire le mot de passe à partir du fichier « %s » : %s\n" +msgstr "%s : n'a pas pu lire le mot de passe à partir du fichier « %s » : %s\n" #: initdb.c:1599 #, c-format msgid "%s: password file \"%s\" is empty\n" -msgstr "%s : le fichier de mots de passe « %s » est vide\n" +msgstr "%s : le fichier de mots de passe « %s » est vide\n" #: initdb.c:1845 #, c-format msgid "%s: locale name too long, skipped: \"%s\"\n" -msgstr "%s : nom de locale trop long, ignoré : « %s »\n" +msgstr "%s : nom de locale trop long, ignoré : « %s »\n" #: initdb.c:1870 #, c-format msgid "%s: locale name has non-ASCII characters, skipped: \"%s\"\n" -msgstr "%s : le nom de la locale contient des caractères non ASCII, ignoré : « %s »\n" +msgstr "%s : le nom de la locale contient des caractères non ASCII, ignoré : « %s »\n" #: initdb.c:1943 #, c-format msgid "No usable system locales were found.\n" -msgstr "Aucune locale système utilisable n'a été trouvée.\n" +msgstr "Aucune locale système utilisable n'a été trouvée.\n" #: initdb.c:1944 #, c-format msgid "Use the option \"--debug\" to see details.\n" -msgstr "Utilisez l'option « --debug » pour voir le détail.\n" +msgstr "Utilisez l'option « --debug » pour voir le détail.\n" #: initdb.c:2317 msgid "syncing data to disk ... " -msgstr "synchronisation des données sur disque" +msgstr "synchronisation des données sur disque" #: initdb.c:2411 #, c-format msgid "caught signal\n" -msgstr "signal reçu\n" +msgstr "signal reçu\n" #: initdb.c:2417 #, c-format msgid "could not write to child process: %s\n" -msgstr "n'a pas pu écrire au processus fils : %s\n" +msgstr "n'a pas pu écrire au processus fils : %s\n" #: initdb.c:2425 #, c-format @@ -431,27 +431,27 @@ msgstr "ok\n" #: initdb.c:2515 #, c-format msgid "%s: setlocale() failed\n" -msgstr "%s : échec de setlocale\n" +msgstr "%s : échec de setlocale\n" #: initdb.c:2533 #, c-format msgid "%s: failed to restore old locale \"%s\"\n" -msgstr "%s : n'a pas pu restaurer l'ancienne locale « %s »\n" +msgstr "%s : n'a pas pu restaurer l'ancienne locale « %s »\n" #: initdb.c:2543 #, c-format msgid "%s: invalid locale name \"%s\"\n" -msgstr "%s : nom de locale invalide (« %s »)\n" +msgstr "%s : nom de locale invalide (« %s »)\n" #: initdb.c:2555 #, c-format msgid "%s: invalid locale settings; check LANG and LC_* environment variables\n" -msgstr "%s : configuration invalide de la locale ; vérifiez les variables d'environnement LANG et LC_*\n" +msgstr "%s : configuration invalide de la locale ; vérifiez les variables d'environnement LANG et LC_*\n" #: initdb.c:2583 #, c-format msgid "%s: encoding mismatch\n" -msgstr "%s : différence d'encodage\n" +msgstr "%s : différence d'encodage\n" #: initdb.c:2585 #, c-format @@ -462,10 +462,10 @@ msgid "" "Rerun %s and either do not specify an encoding explicitly,\n" "or choose a matching combination.\n" msgstr "" -"L'encodage que vous avez sélectionné (%s) et celui que la locale\n" -"sélectionnée utilise (%s) ne sont pas compatibles. Cela peut conduire à\n" -"des erreurs dans les fonctions de manipulation de chaînes de caractères.\n" -"Ré-exécutez %s sans préciser d'encodage, ou en choisissant une combinaison\n" +"L'encodage que vous avez sélectionné (%s) et celui que la locale\n" +"sélectionnée utilise (%s) ne sont pas compatibles. Cela peut conduire à\n" +"des erreurs dans les fonctions de manipulation de chaînes de caractères.\n" +"Ré-exécutez %s sans préciser d'encodage, ou en choisissant une combinaison\n" "compatible.\n" #: initdb.c:2657 @@ -485,7 +485,7 @@ msgstr "Usage :\n" #: initdb.c:2659 #, c-format msgid " %s [OPTION]... [DATADIR]\n" -msgstr " %s [OPTION]... [RÉP_DONNÉES]\n" +msgstr " %s [OPTION]... [RÉP_DONNÉES]\n" #: initdb.c:2660 #, c-format @@ -500,41 +500,41 @@ msgstr "" #, c-format msgid " -A, --auth=METHOD default authentication method for local connections\n" msgstr "" -" -A, --auth=MÉTHODE méthode d'authentification par défaut pour les\n" +" -A, --auth=MÉTHODE méthode d'authentification par défaut pour les\n" " connexions locales\n" #: initdb.c:2662 #, c-format msgid " --auth-host=METHOD default authentication method for local TCP/IP connections\n" msgstr "" -" --auth-host=MÉTHODE méthode d'authentification par défaut pour les\n" +" --auth-host=MÉTHODE méthode d'authentification par défaut pour les\n" " connexions locales TCP/IP\n" #: initdb.c:2663 #, c-format msgid " --auth-local=METHOD default authentication method for local-socket connections\n" msgstr "" -" --auth-local=MÉTHODE méthode d'authentification par défaut pour les\n" +" --auth-local=MÉTHODE méthode d'authentification par défaut pour les\n" " connexions locales socket\n" #: initdb.c:2664 #, c-format msgid " [-D, --pgdata=]DATADIR location for this database cluster\n" -msgstr " [-D, --pgdata=]RÉP_DONNÉES emplacement du cluster\n" +msgstr " [-D, --pgdata=]RÉP_DONNÉES emplacement du cluster\n" #: initdb.c:2665 #, c-format msgid " -E, --encoding=ENCODING set default encoding for new databases\n" msgstr "" -" -E, --encoding=ENCODAGE initialise l'encodage par défaut des nouvelles\n" -" bases de données\n" +" -E, --encoding=ENCODAGE initialise l'encodage par défaut des nouvelles\n" +" bases de données\n" #: initdb.c:2666 #, c-format msgid " --locale=LOCALE set default locale for new databases\n" msgstr "" -" --locale=LOCALE initialise la locale par défaut pour les\n" -" nouvelles bases de données\n" +" --locale=LOCALE initialise la locale par défaut pour les\n" +" nouvelles bases de données\n" #: initdb.c:2667 #, c-format @@ -546,22 +546,22 @@ msgid "" msgstr "" " --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n" " --lc-monetary=, --lc-numeric=, --lc-time=LOCALE\n" -" initialise la locale par défaut dans la\n" -" catégorie respective pour les nouvelles bases\n" -" de données (les valeurs par défaut sont prises\n" +" initialise la locale par défaut dans la\n" +" catégorie respective pour les nouvelles bases\n" +" de données (les valeurs par défaut sont prises\n" " dans l'environnement)\n" #: initdb.c:2671 #, c-format msgid " --no-locale equivalent to --locale=C\n" -msgstr " --no-locale équivalent à --locale=C\n" +msgstr " --no-locale équivalent à --locale=C\n" #: initdb.c:2672 #, c-format msgid " --pwfile=FILE read password for the new superuser from file\n" msgstr "" " --pwfile=NOMFICHIER lit le mot de passe du nouveau\n" -" super-utilisateur à partir de ce fichier\n" +" super-utilisateur à partir de ce fichier\n" #: initdb.c:2673 #, c-format @@ -570,13 +570,13 @@ msgid "" " default text search configuration\n" msgstr "" " -T, --text-search-config=CFG\n" -" configuration par défaut de la recherche plein\n" +" configuration par défaut de la recherche plein\n" " texte\n" #: initdb.c:2675 #, c-format msgid " -U, --username=NAME database superuser name\n" -msgstr " -U, --username=NOM nom du super-utilisateur de la base de données\n" +msgstr " -U, --username=NOM nom du super-utilisateur de la base de données\n" #: initdb.c:2676 #, c-format @@ -588,7 +588,7 @@ msgstr "" #: initdb.c:2677 #, c-format msgid " -X, --xlogdir=XLOGDIR location for the transaction log directory\n" -msgstr " -X, --xlogdir=RÉP_XLOG emplacement du répertoire des transactions\n" +msgstr " -X, --xlogdir=RÉP_XLOG emplacement du répertoire des transactions\n" #: initdb.c:2678 #, c-format @@ -597,24 +597,24 @@ msgid "" "Less commonly used options:\n" msgstr "" "\n" -"Options moins utilisées :\n" +"Options moins utilisées :\n" #: initdb.c:2679 #, c-format msgid " -d, --debug generate lots of debugging output\n" -msgstr " -d, --debug engendre un grand nombre de traces de débogage\n" +msgstr " -d, --debug engendre un grand nombre de traces de débogage\n" #: initdb.c:2680 #, c-format msgid " -k, --data-checksums use data page checksums\n" -msgstr " -k, --data-checksums utilise les sommes de contrôles pour les pages de données\n" +msgstr " -k, --data-checksums utilise les sommes de contrôles pour les pages de données\n" #: initdb.c:2681 #, c-format msgid " -L DIRECTORY where to find the input files\n" msgstr "" -" -L RÉPERTOIRE indique où trouver les fichiers servant à la\n" -" création du cluster\n" +" -L RÉPERTOIRE indique où trouver les fichiers servant à la\n" +" création du cluster\n" #: initdb.c:2682 #, c-format @@ -624,7 +624,7 @@ msgstr " -n, --noclean ne nettoie pas en cas d'erreur\n" #: initdb.c:2683 #, c-format msgid " -N, --nosync do not wait for changes to be written safely to disk\n" -msgstr " -N, --nosync n'attend pas que les modifications sont proprement écrites sur disque\n" +msgstr " -N, --nosync n'attend pas que les modifications sont proprement écrites sur disque\n" #: initdb.c:2684 #, c-format @@ -634,7 +634,7 @@ msgstr " -s, --show affiche la configuration interne\n" #: initdb.c:2685 #, c-format msgid " -S, --sync-only only sync data directory\n" -msgstr " -S, --sync-only synchronise uniquement le répertoire des données\n" +msgstr " -S, --sync-only synchronise uniquement le répertoire des données\n" #: initdb.c:2686 #, c-format @@ -663,8 +663,8 @@ msgid "" "is used.\n" msgstr "" "\n" -"Si le répertoire des données n'est pas indiqué, la variable d'environnement\n" -"PGDATA est utilisée.\n" +"Si le répertoire des données n'est pas indiqué, la variable d'environnement\n" +"PGDATA est utilisée.\n" #: initdb.c:2691 #, c-format @@ -673,7 +673,7 @@ msgid "" "Report bugs to .\n" msgstr "" "\n" -"Rapporter les bogues à .\n" +"Rapporter les bogues à .\n" #: initdb.c:2699 msgid "" @@ -683,16 +683,16 @@ msgid "" "--auth-local and --auth-host, the next time you run initdb.\n" msgstr "" "\n" -"ATTENTION : active l'authentification « trust » pour les connexions\n" +"ATTENTION : active l'authentification « trust » pour les connexions\n" "locales.\n" -"Vous pouvez changer cette configuration en éditant le fichier pg_hba.conf\n" +"Vous pouvez changer cette configuration en éditant le fichier pg_hba.conf\n" "ou en utilisant l'option -A, ou --auth-local et --auth-host au prochain\n" "lancement d'initdb.\n" #: initdb.c:2721 #, c-format msgid "%s: invalid authentication method \"%s\" for \"%s\" connections\n" -msgstr "%s : méthode d'authentification « %s » invalide pour « %s »\n" +msgstr "%s : méthode d'authentification « %s » invalide pour « %s »\n" #: initdb.c:2735 #, c-format @@ -709,9 +709,9 @@ msgid "" "will reside. Do this with either the invocation option -D or the\n" "environment variable PGDATA.\n" msgstr "" -"%s : aucun répertoire de données indiqué\n" -"Vous devez identifier le répertoire où résideront les données pour ce\n" -"système de bases de données. Faites-le soit avec l'option -D soit en\n" +"%s : aucun répertoire de données indiqué\n" +"Vous devez identifier le répertoire où résideront les données pour ce\n" +"système de bases de données. Faites-le soit avec l'option -D soit en\n" "initialisant la variable d'environnement PGDATA.\n" #: initdb.c:2800 @@ -721,9 +721,9 @@ msgid "" "same directory as \"%s\".\n" "Check your installation.\n" msgstr "" -"Le programme « postgres » est nécessaire à %s mais n'a pas été trouvé dans\n" -"le même répertoire que « %s ».\n" -"Vérifiez votre installation.\n" +"Le programme « postgres » est nécessaire à %s mais n'a pas été trouvé dans\n" +"le même répertoire que « %s ».\n" +"Vérifiez votre installation.\n" #: initdb.c:2807 #, c-format @@ -732,21 +732,21 @@ msgid "" "but was not the same version as %s.\n" "Check your installation.\n" msgstr "" -"Le programme « postgres » a été trouvé par « %s » mais n'est pas de la même\n" -"version que « %s ».\n" -"Vérifiez votre installation.\n" +"Le programme « postgres » a été trouvé par « %s » mais n'est pas de la même\n" +"version que « %s ».\n" +"Vérifiez votre installation.\n" #: initdb.c:2826 #, c-format msgid "%s: input file location must be an absolute path\n" msgstr "" -"%s : l'emplacement du fichier d'entrées doit être indiqué avec un chemin\n" +"%s : l'emplacement du fichier d'entrées doit être indiqué avec un chemin\n" "absolu\n" #: initdb.c:2845 #, c-format msgid "The database cluster will be initialized with locale \"%s\".\n" -msgstr "L'instance sera initialisée avec la locale « %s ».\n" +msgstr "L'instance sera initialisée avec la locale « %s ».\n" #: initdb.c:2848 #, c-format @@ -759,7 +759,7 @@ msgid "" " NUMERIC: %s\n" " TIME: %s\n" msgstr "" -"Le cluster sera initialisé avec les locales\n" +"Le cluster sera initialisé avec les locales\n" " COLLATE: %s\n" " CTYPE: %s\n" " MESSAGES: %s\n" @@ -770,7 +770,7 @@ msgstr "" #: initdb.c:2872 #, c-format msgid "%s: could not find suitable encoding for locale \"%s\"\n" -msgstr "%s : n'a pas pu trouver un encodage adéquat pour la locale « %s »\n" +msgstr "%s : n'a pas pu trouver un encodage adéquat pour la locale « %s »\n" #: initdb.c:2874 #, c-format @@ -780,7 +780,7 @@ msgstr "Relancez %s avec l'option -E.\n" #: initdb.c:2875 initdb.c:3498 initdb.c:3519 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Essayer « %s --help » pour plus d'informations.\n" +msgstr "Essayer « %s --help » pour plus d'informations.\n" #: initdb.c:2887 #, c-format @@ -788,13 +788,13 @@ msgid "" "Encoding \"%s\" implied by locale is not allowed as a server-side encoding.\n" "The default database encoding will be set to \"%s\" instead.\n" msgstr "" -"L'encodage « %s » déduit de la locale n'est pas autorisé en tant qu'encodage serveur.\n" -"L'encodage par défaut des bases de données sera configuré à « %s ».\n" +"L'encodage « %s » déduit de la locale n'est pas autorisé en tant qu'encodage serveur.\n" +"L'encodage par défaut des bases de données sera configuré à « %s ».\n" #: initdb.c:2895 #, c-format msgid "%s: locale \"%s\" requires unsupported encoding \"%s\"\n" -msgstr "%s : la locale « %s » nécessite l'encodage « %s » non supporté\n" +msgstr "%s : la locale « %s » nécessite l'encodage « %s » non supporté\n" #: initdb.c:2898 #, c-format @@ -802,66 +802,66 @@ msgid "" "Encoding \"%s\" is not allowed as a server-side encoding.\n" "Rerun %s with a different locale selection.\n" msgstr "" -"L'encodage « %s » n'est pas autorisé en tant qu'encodage serveur.\n" -"Ré-exécuter %s avec une locale différente.\n" +"L'encodage « %s » n'est pas autorisé en tant qu'encodage serveur.\n" +"Ré-exécuter %s avec une locale différente.\n" #: initdb.c:2907 #, c-format msgid "The default database encoding has accordingly been set to \"%s\".\n" msgstr "" -"L'encodage par défaut des bases de données a été configuré en conséquence\n" -"avec « %s ».\n" +"L'encodage par défaut des bases de données a été configuré en conséquence\n" +"avec « %s ».\n" #: initdb.c:2978 #, c-format msgid "%s: could not find suitable text search configuration for locale \"%s\"\n" msgstr "" "%s : n'a pas pu trouver la configuration de la recherche plein texte en\n" -" adéquation avec la locale « %s »\n" +" adéquation avec la locale « %s »\n" #: initdb.c:2989 #, c-format msgid "%s: warning: suitable text search configuration for locale \"%s\" is unknown\n" msgstr "" "%s : attention : pas de configuration de la recherche plein texte connue\n" -"pour la locale « %s »\n" +"pour la locale « %s »\n" #: initdb.c:2994 #, c-format msgid "%s: warning: specified text search configuration \"%s\" might not match locale \"%s\"\n" msgstr "" -"%s : attention : la configuration indiquée pour la recherche plein texte,\n" -"« %s », pourrait ne pas correspondre à la locale « %s »\n" +"%s : attention : la configuration indiquée pour la recherche plein texte,\n" +"« %s », pourrait ne pas correspondre à la locale « %s »\n" #: initdb.c:2999 #, c-format msgid "The default text search configuration will be set to \"%s\".\n" -msgstr "La configuration de la recherche plein texte a été initialisée à « %s ».\n" +msgstr "La configuration de la recherche plein texte a été initialisée à « %s ».\n" #: initdb.c:3043 initdb.c:3129 #, c-format msgid "creating directory %s ... " -msgstr "création du répertoire %s... " +msgstr "création du répertoire %s... " #: initdb.c:3049 initdb.c:3135 initdb.c:3203 initdb.c:3259 #, c-format msgid "%s: could not create directory \"%s\": %s\n" -msgstr "%s : n'a pas pu créer le répertoire « %s » : %s\n" +msgstr "%s : n'a pas pu créer le répertoire « %s » : %s\n" #: initdb.c:3061 initdb.c:3147 #, c-format msgid "fixing permissions on existing directory %s ... " -msgstr "correction des droits sur le répertoire existant %s... " +msgstr "correction des droits sur le répertoire existant %s... " #: initdb.c:3067 initdb.c:3153 #, c-format msgid "%s: could not change permissions of directory \"%s\": %s\n" -msgstr "%s : n'a pas pu modifier les droits du répertoire « %s » : %s\n" +msgstr "%s : n'a pas pu modifier les droits du répertoire « %s » : %s\n" #: initdb.c:3082 initdb.c:3168 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" -msgstr "%s : le répertoire « %s » existe mais n'est pas vide\n" +msgstr "%s : le répertoire « %s » existe mais n'est pas vide\n" #: initdb.c:3088 #, c-format @@ -870,21 +870,21 @@ msgid "" "the directory \"%s\" or run %s\n" "with an argument other than \"%s\".\n" msgstr "" -"Si vous voulez créer un nouveau système de bases de données, supprimez ou\n" -"videz le répertoire « %s ».\n" -"Vous pouvez aussi exécuter %s avec un argument autre que « %s ».\n" +"Si vous voulez créer un nouveau système de bases de données, supprimez ou\n" +"videz le répertoire « %s ».\n" +"Vous pouvez aussi exécuter %s avec un argument autre que « %s ».\n" #: initdb.c:3096 initdb.c:3181 initdb.c:3532 #, c-format msgid "%s: could not access directory \"%s\": %s\n" -msgstr "%s : n'a pas pu accéder au répertoire « %s » : %s\n" +msgstr "%s : n'a pas pu accéder au répertoire « %s » : %s\n" #: initdb.c:3120 #, c-format msgid "%s: transaction log directory location must be an absolute path\n" msgstr "" -"%s : l'emplacement du répertoire des journaux de transactions doit être\n" -"indiqué avec un chemin absolu\n" +"%s : l'emplacement du répertoire des journaux de transactions doit être\n" +"indiqué avec un chemin absolu\n" #: initdb.c:3174 #, c-format @@ -893,27 +893,27 @@ msgid "" "remove or empty the directory \"%s\".\n" msgstr "" "Si vous voulez enregistrer ici le journal des transactions, supprimez ou\n" -"videz le répertoire « %s ».\n" +"videz le répertoire « %s ».\n" #: initdb.c:3189 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" -msgstr "%s : n'a pas pu créer le lien symbolique « %s » : %s\n" +msgstr "%s : n'a pas pu créer le lien symbolique « %s » : %s\n" #: initdb.c:3194 #, c-format msgid "%s: symlinks are not supported on this platform" -msgstr "%s : les liens symboliques ne sont pas supportés sur cette plateforme" +msgstr "%s : les liens symboliques ne sont pas supportés sur cette plateforme" #: initdb.c:3218 #, c-format msgid "It contains a dot-prefixed/invisible file, perhaps due to it being a mount point.\n" -msgstr "Il contient un fichier invisible, peut-être parce qu'il s'agit d'un point de montage.\n" +msgstr "Il contient un fichier invisible, peut-être parce qu'il s'agit d'un point de montage.\n" #: initdb.c:3221 #, c-format msgid "It contains a lost+found directory, perhaps due to it being a mount point.\n" -msgstr "Il contient un répertoire lost+found, peut-être parce qu'il s'agit d'un point de montage.\n" +msgstr "Il contient un répertoire lost+found, peut-être parce qu'il s'agit d'un point de montage.\n" #: initdb.c:3224 #, c-format @@ -921,44 +921,44 @@ msgid "" "Using a mount point directly as the data directory is not recommended.\n" "Create a subdirectory under the mount point.\n" msgstr "" -"Utiliser un point de montage comme répertoire de données n'est pas recommandé.\n" -"Créez un sous-répertoire sous le point de montage.\n" +"Utiliser un point de montage comme répertoire de données n'est pas recommandé.\n" +"Créez un sous-répertoire sous le point de montage.\n" #: initdb.c:3244 #, c-format msgid "creating subdirectories ... " -msgstr "création des sous-répertoires... " +msgstr "création des sous-répertoires... " #: initdb.c:3291 msgid "performing post-bootstrap initialization ... " -msgstr "exécution de l'initialisation après bootstrap..." +msgstr "exécution de l'initialisation après bootstrap..." #: initdb.c:3442 #, c-format msgid "Running in debug mode.\n" -msgstr "Lancé en mode débogage.\n" +msgstr "Lancé en mode débogage.\n" #: initdb.c:3446 #, c-format msgid "Running in noclean mode. Mistakes will not be cleaned up.\n" -msgstr "Lancé en mode « sans nettoyage ». Les erreurs ne seront pas supprimées.\n" +msgstr "Lancé en mode « sans nettoyage ». Les erreurs ne seront pas supprimées.\n" #: initdb.c:3517 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" -msgstr "%s : trop d'arguments en ligne de commande (le premier étant « %s »)\n" +msgstr "%s : trop d'arguments en ligne de commande (le premier étant « %s »)\n" #: initdb.c:3543 #, c-format msgid "%s: password prompt and password file cannot be specified together\n" msgstr "" "%s : les options d'invite du mot de passe et le fichier de mots de passe ne\n" -" peuvent pas être indiquées simultanément\n" +" peuvent pas être indiquées simultanément\n" #: initdb.c:3567 #, c-format msgid "%s: superuser name \"%s\" is disallowed; role names cannot begin with \"pg_\"\n" -msgstr "%s : le nom de superutilisateur « %s » est non autorisé ; les noms de rôle ne peuvent pas commencer avec « pg_ »\n" +msgstr "%s : le nom de superutilisateur « %s » est non autorisé ; les noms de rôle ne peuvent pas commencer avec « pg_ »\n" #: initdb.c:3571 #, c-format @@ -967,19 +967,19 @@ msgid "" "This user must also own the server process.\n" "\n" msgstr "" -"Les fichiers de ce cluster appartiendront à l'utilisateur « %s ».\n" -"Le processus serveur doit également lui appartenir.\n" +"Les fichiers de ce cluster appartiendront à l'utilisateur « %s ».\n" +"Le processus serveur doit également lui appartenir.\n" "\n" #: initdb.c:3587 #, c-format msgid "Data page checksums are enabled.\n" -msgstr "Les sommes de contrôles des pages de données sont activées.\n" +msgstr "Les sommes de contrôles des pages de données sont activées.\n" #: initdb.c:3589 #, c-format msgid "Data page checksums are disabled.\n" -msgstr "Les sommes de contrôles des pages de données sont désactivées.\n" +msgstr "Les sommes de contrôles des pages de données sont désactivées.\n" #: initdb.c:3598 #, c-format @@ -989,8 +989,8 @@ msgid "" "The data directory might become corrupt if the operating system crashes.\n" msgstr "" "\n" -"Synchronisation sur disque ignorée.\n" -"Le répertoire des données pourrait être corrompu si le système d'exploitation s'arrêtait brutalement.\n" +"Synchronisation sur disque ignorée.\n" +"Le répertoire des données pourrait être corrompu si le système d'exploitation s'arrêtait brutalement.\n" #: initdb.c:3607 #, c-format @@ -1002,13 +1002,13 @@ msgid "" "\n" msgstr "" "\n" -"Succès. Vous pouvez maintenant lancer le serveur de bases de données en utilisant :\n" +"Succès. Vous pouvez maintenant lancer le serveur de bases de données en utilisant :\n" "\n" " %s%s%spg_ctl%s -D %s%s%s -l journal_applicatif start\n" "\n" #~ msgid "%s: could not close directory \"%s\": %s\n" -#~ msgstr "%s : n'a pas pu fermer le répertoire « %s » : %s\n" +#~ msgstr "%s : n'a pas pu fermer le répertoire « %s » : %s\n" #~ msgid "%s: could not obtain information about current user: %s\n" #~ msgstr "%s : n'a pas pu obtenir d'informations sur l'utilisateur courant : %s\n" @@ -1017,18 +1017,18 @@ msgstr "" #~ msgstr "%s : n'a pas pu obtenir le nom de l'utilisateur courant : %s\n" #~ msgid "%s: unrecognized authentication method \"%s\"\n" -#~ msgstr "%s : méthode d'authentification « %s » inconnue.\n" +#~ msgstr "%s : méthode d'authentification « %s » inconnue.\n" #~ msgid "%s: could not determine valid short version string\n" -#~ msgstr "%s : n'a pas pu déterminer une chaîne de version courte valide\n" +#~ msgstr "%s : n'a pas pu déterminer une chaîne de version courte valide\n" #~ msgid "%s: The password file was not generated. Please report this problem.\n" #~ msgstr "" -#~ "%s : le fichier de mots de passe n'a pas été créé.\n" -#~ "Merci de rapporter ce problème.\n" +#~ "%s : le fichier de mots de passe n'a pas été créé.\n" +#~ "Merci de rapporter ce problème.\n" #~ msgid "could not change directory to \"%s\"" -#~ msgstr "n'a pas pu accéder au répertoire « %s »" +#~ msgstr "n'a pas pu accéder au répertoire « %s »" #~ msgid "%s: could not to allocate SIDs: error code %lu\n" #~ msgstr "%s : n'a pas pu allouer les SID : code d'erreur %lu\n" @@ -1040,37 +1040,37 @@ msgstr "" #~ msgstr "copie de template1 vers template0... " #~ msgid "vacuuming database template1 ... " -#~ msgstr "lancement du vacuum sur la base de données template1... " +#~ msgstr "lancement du vacuum sur la base de données template1... " #~ msgid "loading PL/pgSQL server-side language ... " #~ msgstr "chargement du langage PL/pgSQL... " #~ msgid "creating information schema ... " -#~ msgstr "création du schéma d'informations... " +#~ msgstr "création du schéma d'informations... " #~ msgid "setting privileges on built-in objects ... " #~ msgstr "initialisation des droits sur les objets internes... " #~ msgid "creating dictionaries ... " -#~ msgstr "création des dictionnaires... " +#~ msgstr "création des dictionnaires... " #~ msgid "creating conversions ... " -#~ msgstr "création des conversions... " +#~ msgstr "création des conversions... " #~ msgid "not supported on this platform\n" -#~ msgstr "non supporté sur cette plateforme\n" +#~ msgstr "non supporté sur cette plateforme\n" #~ msgid "creating collations ... " -#~ msgstr "création des collationnements... " +#~ msgstr "création des collationnements... " #~ msgid "loading system objects' descriptions ... " -#~ msgstr "chargement de la description des objets système... " +#~ msgstr "chargement de la description des objets système... " #~ msgid "creating system views ... " -#~ msgstr "création des vues système... " +#~ msgstr "création des vues système... " #~ msgid "initializing dependencies ... " -#~ msgstr "initialisation des dépendances... " +#~ msgstr "initialisation des dépendances... " #~ msgid "setting password ... " #~ msgstr "initialisation du mot de passe... " @@ -1079,4 +1079,4 @@ msgstr "" #~ msgstr "initialisation de pg_authid... " #~ msgid "creating template1 database in %s/base/1 ... " -#~ msgstr "création de la base de données template1 dans %s/base/1... " +#~ msgstr "création de la base de données template1 dans %s/base/1... " diff --git a/src/bin/initdb/po/it.po b/src/bin/initdb/po/it.po index c6c824f3f6..08fcfab7e1 100644 --- a/src/bin/initdb/po/it.po +++ b/src/bin/initdb/po/it.po @@ -24,8 +24,8 @@ msgid "" msgstr "" "Project-Id-Version: initdb (PostgreSQL) 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-04-17 00:14+0000\n" -"PO-Revision-Date: 2016-04-17 21:10+0100\n" +"POT-Creation-Date: 2017-02-09 21:13+0000\n" +"PO-Revision-Date: 2017-04-23 03:06+0100\n" "Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" "Language: it\n" @@ -34,7 +34,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-SourceCharset: utf-8\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.8.7.1\n" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, c-format @@ -201,107 +201,107 @@ msgstr "non è stato possibile impostare la giunzione per \"%s\": %s\n" msgid "could not get junction for \"%s\": %s\n" msgstr "non è stato possibile ottenere la giunzione per \"%s\": %s\n" -#: initdb.c:349 +#: initdb.c:350 #, c-format msgid "%s: out of memory\n" msgstr "%s: memoria esaurita\n" -#: initdb.c:459 initdb.c:1589 +#: initdb.c:460 initdb.c:1623 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: errore nell'apertura del file \"%s\" per la lettura: %s\n" -#: initdb.c:515 initdb.c:1002 initdb.c:1030 +#: initdb.c:516 initdb.c:1003 initdb.c:1031 #, c-format msgid "%s: could not open file \"%s\" for writing: %s\n" msgstr "%s: errore nell'apertura del file \"%s\" per la scrittura: %s\n" -#: initdb.c:523 initdb.c:531 initdb.c:1009 initdb.c:1036 +#: initdb.c:524 initdb.c:532 initdb.c:1010 initdb.c:1037 #, c-format msgid "%s: could not write file \"%s\": %s\n" msgstr "%s: errore nella scrittura del file \"%s\": %s\n" -#: initdb.c:562 +#: initdb.c:563 #, c-format msgid "%s: could not open directory \"%s\": %s\n" msgstr "%s: apertura della directory \"%s\" fallita: %s\n" -#: initdb.c:586 initdb.c:2334 +#: initdb.c:587 initdb.c:2346 #, c-format msgid "%s: could not stat file \"%s\": %s\n" msgstr "%s: non è stato possibile ottenere informazioni sul file \"%s\": %s\n" -#: initdb.c:598 +#: initdb.c:599 #, c-format msgid "%s: could not read directory \"%s\": %s\n" msgstr "%s: lettura della directory \"%s\" fallita: %s\n" -#: initdb.c:631 initdb.c:690 +#: initdb.c:632 initdb.c:691 #, c-format msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: apertura del file \"%s\" fallita: %s\n" -#: initdb.c:702 +#: initdb.c:703 #, c-format msgid "%s: could not fsync file \"%s\": %s\n" msgstr "%s: fsync del file \"%s\" fallito: %s\n" -#: initdb.c:721 +#: initdb.c:722 #, c-format msgid "%s: could not execute command \"%s\": %s\n" msgstr "%s: esecuzione del comando \"%s\" fallita: %s\n" -#: initdb.c:737 +#: initdb.c:738 #, c-format msgid "%s: removing data directory \"%s\"\n" msgstr "%s: rimozione della directory dati \"%s\"\n" -#: initdb.c:740 +#: initdb.c:741 #, c-format msgid "%s: failed to remove data directory\n" msgstr "%s: rimozione della directory dati fallita\n" -#: initdb.c:746 +#: initdb.c:747 #, c-format msgid "%s: removing contents of data directory \"%s\"\n" msgstr "%s: rimozione dei contenuti della directory dati \"%s\"\n" -#: initdb.c:749 +#: initdb.c:750 #, c-format msgid "%s: failed to remove contents of data directory\n" msgstr "%s: rimozione dei contenuti dalla directory dati fallita\n" -#: initdb.c:755 +#: initdb.c:756 #, c-format msgid "%s: removing transaction log directory \"%s\"\n" msgstr "%s: rimozione della directory dei log delle transazioni \"%s\"\n" -#: initdb.c:758 +#: initdb.c:759 #, c-format msgid "%s: failed to remove transaction log directory\n" msgstr "%s: rimozione della directory dei log delle transazioni fallita\n" -#: initdb.c:764 +#: initdb.c:765 #, c-format msgid "%s: removing contents of transaction log directory \"%s\"\n" msgstr "%s: rimozione dei contenuti della directory dei log delle transazioni \"%s\"\n" -#: initdb.c:767 +#: initdb.c:768 #, c-format msgid "%s: failed to remove contents of transaction log directory\n" msgstr "%s: rimozione dei contenuti della directory dei log delle transazioni fallita\n" -#: initdb.c:776 +#: initdb.c:777 #, c-format msgid "%s: data directory \"%s\" not removed at user's request\n" msgstr "%s: directory dati \"%s\" non rimossa su richiesta dell'utente\n" -#: initdb.c:781 +#: initdb.c:782 #, c-format msgid "%s: transaction log directory \"%s\" not removed at user's request\n" msgstr "%s: directory dei log delle transazioni \"%s\" non rimossa su richiesta dell'utente\n" -#: initdb.c:802 +#: initdb.c:803 #, c-format msgid "" "%s: cannot be run as root\n" @@ -312,17 +312,17 @@ msgstr "" "Effettua il login (usando per esempio \"su\") con l'utente\n" "(non privilegiato) che controllerà il processo server.\n" -#: initdb.c:838 +#: initdb.c:839 #, c-format msgid "%s: \"%s\" is not a valid server encoding name\n" msgstr "%s: \"%s\" non è un nome di codifica per il server valido\n" -#: initdb.c:958 +#: initdb.c:959 #, c-format msgid "%s: file \"%s\" does not exist\n" msgstr "%s: il file \"%s\" non esiste\n" -#: initdb.c:960 initdb.c:969 initdb.c:979 +#: initdb.c:961 initdb.c:970 initdb.c:980 #, c-format msgid "" "This might mean you have a corrupted installation or identified\n" @@ -331,46 +331,46 @@ msgstr "" "Questo potrebbe indica una installazione corrotta oppure\n" "hai indicato la directory errata con l'opzione -L.\n" -#: initdb.c:966 +#: initdb.c:967 #, c-format msgid "%s: could not access file \"%s\": %s\n" msgstr "%s: accesso al file \"%s\" fallito: %s\n" -#: initdb.c:977 +#: initdb.c:978 #, c-format msgid "%s: file \"%s\" is not a regular file\n" msgstr "%s: il file \"%s\" non è un file regolare\n" -#: initdb.c:1122 +#: initdb.c:1123 #, c-format msgid "selecting default max_connections ... " msgstr "selezione del parametro max_connections predefinito ... " -#: initdb.c:1152 +#: initdb.c:1153 #, c-format msgid "selecting default shared_buffers ... " msgstr "selezione di shared_buffers predefinito ... " -#: initdb.c:1185 +#: initdb.c:1186 #, c-format msgid "selecting dynamic shared memory implementation ... " msgstr "selezione dell'implementazione della memoria dinamica ... " -#: initdb.c:1203 +#: initdb.c:1204 msgid "creating configuration files ... " msgstr "creazione dei file di configurazione ... " -#: initdb.c:1300 initdb.c:1320 initdb.c:1404 initdb.c:1420 +#: initdb.c:1328 initdb.c:1348 initdb.c:1432 initdb.c:1448 #, c-format msgid "%s: could not change permissions of \"%s\": %s\n" msgstr "%s: cambio di permesso di \"%s\" fallito: %s\n" -#: initdb.c:1444 +#: initdb.c:1472 #, c-format msgid "running bootstrap script ... " msgstr "esecuzione dello script di bootstrap ... " -#: initdb.c:1460 +#: initdb.c:1488 #, c-format msgid "" "%s: input file \"%s\" does not belong to PostgreSQL %s\n" @@ -380,94 +380,94 @@ msgstr "" "Controlla la correttezza dell'installazione oppure specifica\n" "il percorso corretto con l'opzione -L.\n" -#: initdb.c:1564 +#: initdb.c:1598 msgid "Enter new superuser password: " msgstr "Inserisci la nuova password del superutente: " -#: initdb.c:1565 +#: initdb.c:1599 msgid "Enter it again: " msgstr "Conferma password: " -#: initdb.c:1568 +#: initdb.c:1602 #, c-format msgid "Passwords didn't match.\n" msgstr "Le password non corrispondono.\n" -#: initdb.c:1596 +#: initdb.c:1630 #, c-format msgid "%s: could not read password from file \"%s\": %s\n" msgstr "%s: lettura del file delle password \"%s\" fallita: %s\n" -#: initdb.c:1599 +#: initdb.c:1633 #, c-format msgid "%s: password file \"%s\" is empty\n" msgstr "%s: il file delle password \"%s\" è vuoto\n" -#: initdb.c:1845 +#: initdb.c:1878 #, c-format msgid "%s: locale name too long, skipped: \"%s\"\n" msgstr "%s: nome locale troppo lungo, saltato: \"%s\"\n" -#: initdb.c:1870 +#: initdb.c:1903 #, c-format msgid "%s: locale name has non-ASCII characters, skipped: \"%s\"\n" msgstr "%s: nome locale contiene caratteri non ASCII, saltato: \"%s\"\n" -#: initdb.c:1943 +#: initdb.c:1976 #, c-format msgid "No usable system locales were found.\n" msgstr "Nessun locale di sistema trovato.\n" -#: initdb.c:1944 +#: initdb.c:1977 #, c-format msgid "Use the option \"--debug\" to see details.\n" msgstr "Usa l'opzione \"--debug\" per vedere i dettagli.\n" -#: initdb.c:2317 +#: initdb.c:2329 msgid "syncing data to disk ... " msgstr "sincronizzazione dati sul disco ... " -#: initdb.c:2411 +#: initdb.c:2423 #, c-format msgid "caught signal\n" msgstr "intercettato segnale\n" -#: initdb.c:2417 +#: initdb.c:2429 #, c-format msgid "could not write to child process: %s\n" msgstr "scrittura verso il processo figlio fallita: %s\n" -#: initdb.c:2425 +#: initdb.c:2437 #, c-format msgid "ok\n" msgstr "ok\n" -#: initdb.c:2515 +#: initdb.c:2527 #, c-format msgid "%s: setlocale() failed\n" msgstr "%s: setlocale() fallito\n" -#: initdb.c:2533 +#: initdb.c:2545 #, c-format msgid "%s: failed to restore old locale \"%s\"\n" msgstr "%s: ripristino del locale precedente \"%s\" fallito\n" -#: initdb.c:2543 +#: initdb.c:2555 #, c-format msgid "%s: invalid locale name \"%s\"\n" msgstr "%s: nome locale non valido \"%s\"\n" -#: initdb.c:2555 +#: initdb.c:2567 #, c-format msgid "%s: invalid locale settings; check LANG and LC_* environment variables\n" msgstr "%s: impostazione locale non valida; controlla le variabili d'ambiente LANG e LC_*\n" -#: initdb.c:2583 +#: initdb.c:2595 #, c-format msgid "%s: encoding mismatch\n" msgstr "%s: mancata corrispondenza di codifica\n" -#: initdb.c:2585 +#: initdb.c:2597 #, c-format msgid "" "The encoding you selected (%s) and the encoding that the\n" @@ -482,7 +482,7 @@ msgstr "" "Esegui di nuovo %s senza specificare una codifica esplicitamente\n" "oppure seleziona una combinazione corretta.\n" -#: initdb.c:2657 +#: initdb.c:2669 #, c-format msgid "" "%s initializes a PostgreSQL database cluster.\n" @@ -491,17 +491,17 @@ msgstr "" "%s inizializza un cluster di database PostgreSQL.\n" "\n" -#: initdb.c:2658 +#: initdb.c:2670 #, c-format msgid "Usage:\n" msgstr "Utilizzo:\n" -#: initdb.c:2659 +#: initdb.c:2671 #, c-format msgid " %s [OPTION]... [DATADIR]\n" msgstr " %s [OPZIONE]... [DATADIR]\n" -#: initdb.c:2660 +#: initdb.c:2672 #, c-format msgid "" "\n" @@ -510,47 +510,47 @@ msgstr "" "\n" "Opzioni:\n" -#: initdb.c:2661 +#: initdb.c:2673 #, c-format msgid " -A, --auth=METHOD default authentication method for local connections\n" msgstr "" " -A, --auth=METODO metodo di autenticazione predefinito per le\n" " connessioni locali\n" -#: initdb.c:2662 +#: initdb.c:2674 #, c-format msgid " --auth-host=METHOD default authentication method for local TCP/IP connections\n" msgstr "" " --auth-host=METODO metodo di autenticazione predefinito per le\n" " connessioni TCP/IP\n" -#: initdb.c:2663 +#: initdb.c:2675 #, c-format msgid " --auth-local=METHOD default authentication method for local-socket connections\n" msgstr "" " --auth-local=METODO metodo di autenticazione predefinito per le\n" " connessioni locali\n" -#: initdb.c:2664 +#: initdb.c:2676 #, c-format msgid " [-D, --pgdata=]DATADIR location for this database cluster\n" msgstr " [-D, --pgdata=]DATADIR dove creare questo cluster di database\n" -#: initdb.c:2665 +#: initdb.c:2677 #, c-format msgid " -E, --encoding=ENCODING set default encoding for new databases\n" msgstr "" " -E, --encoding=ENCODING imposta la codifica predefinita per i nuovi\n" " database\n" -#: initdb.c:2666 +#: initdb.c:2678 #, c-format msgid " --locale=LOCALE set default locale for new databases\n" msgstr "" " --locale=LOCALE imposta il locale predefinito per i nuovi\n" " database\n" -#: initdb.c:2667 +#: initdb.c:2679 #, c-format msgid "" " --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n" @@ -565,17 +565,17 @@ msgstr "" " Il valore predefinito viene preso dalle variabili\n" " d'ambiente\n" -#: initdb.c:2671 +#: initdb.c:2683 #, c-format msgid " --no-locale equivalent to --locale=C\n" msgstr " --no-locale equivalente a --locale=C\n" -#: initdb.c:2672 +#: initdb.c:2684 #, c-format msgid " --pwfile=FILE read password for the new superuser from file\n" msgstr " --pwfile=FILE leggi la password per il nuovo superutente dal file\n" -#: initdb.c:2673 +#: initdb.c:2685 #, c-format msgid "" " -T, --text-search-config=CFG\n" @@ -584,24 +584,24 @@ msgstr "" " -T, --text-search-config=CFG\n" " configurazione predefinita per la ricerca di testo\n" -#: initdb.c:2675 +#: initdb.c:2687 #, c-format msgid " -U, --username=NAME database superuser name\n" msgstr " -U, --username=NOME nome del superutente del database\n" -#: initdb.c:2676 +#: initdb.c:2688 #, c-format msgid " -W, --pwprompt prompt for a password for the new superuser\n" msgstr " -W, --pwprompt richiedi la password per il nuovo superutente\n" -#: initdb.c:2677 +#: initdb.c:2689 #, c-format msgid " -X, --xlogdir=XLOGDIR location for the transaction log directory\n" msgstr "" " -X, --xlogdir=XLOGDIR posizione della directory contenente i log\n" " delle transazioni\n" -#: initdb.c:2678 +#: initdb.c:2690 #, c-format msgid "" "\n" @@ -610,44 +610,44 @@ msgstr "" "\n" "Opzioni utilizzate meno frequentemente:\n" -#: initdb.c:2679 +#: initdb.c:2691 #, c-format msgid " -d, --debug generate lots of debugging output\n" msgstr " -d, --debug genera molto output di debug\n" -#: initdb.c:2680 +#: initdb.c:2692 #, c-format msgid " -k, --data-checksums use data page checksums\n" msgstr " -k, --data-checksums usa i checksum delle pagine dati\n" -#: initdb.c:2681 +#: initdb.c:2693 #, c-format msgid " -L DIRECTORY where to find the input files\n" msgstr " -L DIRECTORY dove trovare i file di input\n" -#: initdb.c:2682 +#: initdb.c:2694 #, c-format msgid " -n, --noclean do not clean up after errors\n" msgstr " -n, --noclean non ripulire dopo gli errori\n" -#: initdb.c:2683 +#: initdb.c:2695 #, c-format msgid " -N, --nosync do not wait for changes to be written safely to disk\n" msgstr "" " -N, --nosync non attendere che i cambiamenti siano stati\n" " scritti in sicurezza sul disco\n" -#: initdb.c:2684 +#: initdb.c:2696 #, c-format msgid " -s, --show show internal settings\n" msgstr " -s, --show mostra le impostazioni interne\n" -#: initdb.c:2685 +#: initdb.c:2697 #, c-format msgid " -S, --sync-only only sync data directory\n" msgstr " -S, --sync-only sincronizza solo la directory dei dati\n" -#: initdb.c:2686 +#: initdb.c:2698 #, c-format msgid "" "\n" @@ -656,17 +656,17 @@ msgstr "" "\n" "Altre opzioni:\n" -#: initdb.c:2687 +#: initdb.c:2699 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version mostra informazioni sulla versione ed esci\n" -#: initdb.c:2688 +#: initdb.c:2700 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help mostra questo aiuto ed esci\n" -#: initdb.c:2689 +#: initdb.c:2701 #, c-format msgid "" "\n" @@ -677,7 +677,7 @@ msgstr "" "Se la directory dati non è specificata, viene usata la variabile\n" "d'ambiente PGDATA.\n" -#: initdb.c:2691 +#: initdb.c:2703 #, c-format msgid "" "\n" @@ -686,7 +686,7 @@ msgstr "" "\n" "Puoi segnalare eventuali bug a .\n" -#: initdb.c:2699 +#: initdb.c:2711 msgid "" "\n" "WARNING: enabling \"trust\" authentication for local connections\n" @@ -699,17 +699,17 @@ msgstr "" "pg_hba.conf o utilizzando l'opzione -A oppure --auth-local and --auth-host\n" "alla prossima esecuzione di initdb.\n" -#: initdb.c:2721 +#: initdb.c:2733 #, c-format msgid "%s: invalid authentication method \"%s\" for \"%s\" connections\n" msgstr "%s: metodo di autenticazione \"%s\" non valido per connessioni \"%s\"\n" -#: initdb.c:2735 +#: initdb.c:2747 #, c-format msgid "%s: must specify a password for the superuser to enable %s authentication\n" msgstr "%s: occorre specificare una password per il superutente per abilitare l'autenticazione %s\n" -#: initdb.c:2762 +#: initdb.c:2774 #, c-format msgid "" "%s: no data directory specified\n" @@ -722,7 +722,7 @@ msgstr "" "database. Puoi farlo usando l'opzione -D oppure la variabile globale\n" "PGDATA.\n" -#: initdb.c:2800 +#: initdb.c:2812 #, c-format msgid "" "The program \"postgres\" is needed by %s but was not found in the\n" @@ -733,7 +733,7 @@ msgstr "" "nella stessa directory \"%s\".\n" "Verifica la correttezza dell'installazione.\n" -#: initdb.c:2807 +#: initdb.c:2819 #, c-format msgid "" "The program \"postgres\" was found by \"%s\"\n" @@ -744,17 +744,17 @@ msgstr "" "ma non ha la stessa versione di %s.\n" "Verifica la correttezza dell'installazione.\n" -#: initdb.c:2826 +#: initdb.c:2838 #, c-format msgid "%s: input file location must be an absolute path\n" msgstr "%s: la posizione del file di input deve essere un percorso assoluto\n" -#: initdb.c:2845 +#: initdb.c:2857 #, c-format msgid "The database cluster will be initialized with locale \"%s\".\n" msgstr "Il cluster di database sarà inizializzato con il locale \"%s\".\n" -#: initdb.c:2848 +#: initdb.c:2860 #, c-format msgid "" "The database cluster will be initialized with locales\n" @@ -773,22 +773,22 @@ msgstr "" " NUMERIC: %s\n" " TIME: %s\n" -#: initdb.c:2872 +#: initdb.c:2884 #, c-format msgid "%s: could not find suitable encoding for locale \"%s\"\n" msgstr "%s: nessuna codifica adeguata trovata per il locale \"%s\"\n" -#: initdb.c:2874 +#: initdb.c:2886 #, c-format msgid "Rerun %s with the -E option.\n" msgstr "Esegui di nuovo %s con l'opzione -E.\n" -#: initdb.c:2875 initdb.c:3498 initdb.c:3519 +#: initdb.c:2887 initdb.c:3508 initdb.c:3529 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Prova \"%s --help\" per maggiori informazioni.\n" -#: initdb.c:2887 +#: initdb.c:2899 #, c-format msgid "" "Encoding \"%s\" implied by locale is not allowed as a server-side encoding.\n" @@ -797,12 +797,12 @@ msgstr "" "La codifica \"%s\" implicata dal locale non è consentita come codifica lato server.\n" "La codifica predefinita dei database sarà impostata invece a \"%s\".\n" -#: initdb.c:2895 +#: initdb.c:2907 #, c-format msgid "%s: locale \"%s\" requires unsupported encoding \"%s\"\n" msgstr "%s: il locale \"%s\" richiede la codifica non supportata \"%s\"\n" -#: initdb.c:2898 +#: initdb.c:2910 #, c-format msgid "" "Encoding \"%s\" is not allowed as a server-side encoding.\n" @@ -811,59 +811,59 @@ msgstr "" "La codifica \"%s\" non è disponibile come codifica lato server.\n" "Esegui di nuovo %s con un locale diverso.\n" -#: initdb.c:2907 +#: initdb.c:2919 #, c-format msgid "The default database encoding has accordingly been set to \"%s\".\n" msgstr "La codifica predefinita del database è stata impostata a \"%s\".\n" -#: initdb.c:2978 +#: initdb.c:2990 #, c-format msgid "%s: could not find suitable text search configuration for locale \"%s\"\n" msgstr "%s: nessuna configurazione per la ricerca testo adeguata al locale \"%s\"\n" -#: initdb.c:2989 +#: initdb.c:3001 #, c-format msgid "%s: warning: suitable text search configuration for locale \"%s\" is unknown\n" msgstr "%s: attenzione: non si conosce una configurazione per la ricerca testo adeguata al locale \"%s\"\n" -#: initdb.c:2994 +#: initdb.c:3006 #, c-format msgid "%s: warning: specified text search configuration \"%s\" might not match locale \"%s\"\n" msgstr "" "%s: attenzione: la configurazione specificata per la ricerca testo \"%s\"\n" "potrebbe non corrispondere al locale \"%s\"\n" -#: initdb.c:2999 +#: initdb.c:3011 #, c-format msgid "The default text search configuration will be set to \"%s\".\n" msgstr "La configurazione predefinita di ricerca testo sarà impostata a \"%s\".\n" -#: initdb.c:3043 initdb.c:3129 +#: initdb.c:3055 initdb.c:3141 #, c-format msgid "creating directory %s ... " msgstr "creazione della directory %s ... " -#: initdb.c:3049 initdb.c:3135 initdb.c:3203 initdb.c:3259 +#: initdb.c:3061 initdb.c:3147 initdb.c:3215 initdb.c:3271 #, c-format msgid "%s: could not create directory \"%s\": %s\n" msgstr "%s: creazione della directory \"%s\" fallita: %s\n" -#: initdb.c:3061 initdb.c:3147 +#: initdb.c:3073 initdb.c:3159 #, c-format msgid "fixing permissions on existing directory %s ... " msgstr "correzione dei permessi sulla directory esistente %s ... " -#: initdb.c:3067 initdb.c:3153 +#: initdb.c:3079 initdb.c:3165 #, c-format msgid "%s: could not change permissions of directory \"%s\": %s\n" msgstr "%s: modifica dei permessi della directory \"%s\" fallita: %s\n" -#: initdb.c:3082 initdb.c:3168 +#: initdb.c:3094 initdb.c:3180 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" msgstr "%s: la directory \"%s\" esiste ma non è vuota\n" -#: initdb.c:3088 +#: initdb.c:3100 #, c-format msgid "" "If you want to create a new database system, either remove or empty\n" @@ -874,17 +874,17 @@ msgstr "" "la directory \"%s\" oppure esegui %s\n" "con un argomento diverso da \"%s\".\n" -#: initdb.c:3096 initdb.c:3181 initdb.c:3532 +#: initdb.c:3108 initdb.c:3193 initdb.c:3542 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: accesso alla directory \"%s\" fallito: %s\n" -#: initdb.c:3120 +#: initdb.c:3132 #, c-format msgid "%s: transaction log directory location must be an absolute path\n" msgstr "%s: la directory dei log delle transazioni deve essere un percorso assoluto\n" -#: initdb.c:3174 +#: initdb.c:3186 #, c-format msgid "" "If you want to store the transaction log there, either\n" @@ -893,27 +893,27 @@ msgstr "" "Se vuoi salvare lì i log delle transazioni,\n" "elimina oppure svuota la directory \"%s\".\n" -#: initdb.c:3189 +#: initdb.c:3201 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" msgstr "%s: creazione del link simbolico \"%s\" fallita: %s\n" -#: initdb.c:3194 +#: initdb.c:3206 #, c-format msgid "%s: symlinks are not supported on this platform" msgstr "%s: i link simbolici non sono supportati su questa piattaforma" -#: initdb.c:3218 +#: initdb.c:3230 #, c-format msgid "It contains a dot-prefixed/invisible file, perhaps due to it being a mount point.\n" msgstr "Contiene un file prefissato con punto o invisibile, forse perché è un punto di montaggio.\n" -#: initdb.c:3221 +#: initdb.c:3233 #, c-format msgid "It contains a lost+found directory, perhaps due to it being a mount point.\n" msgstr "Contiene una directory lost+found, forse perché è un punto di montaggio.\n" -#: initdb.c:3224 +#: initdb.c:3236 #, c-format msgid "" "Using a mount point directly as the data directory is not recommended.\n" @@ -922,38 +922,43 @@ msgstr "" "Usare un punto di montaggio direttamente come directory dati non è\n" "consigliato. Crea una sottodirectory sotto il punto di montaggio.\n" -#: initdb.c:3244 +#: initdb.c:3256 #, c-format msgid "creating subdirectories ... " msgstr "creazione delle sottodirectory ... " -#: initdb.c:3291 +#: initdb.c:3303 msgid "performing post-bootstrap initialization ... " msgstr "esecuzione dell'inizializzazione successiva al bootstrap ... " -#: initdb.c:3442 +#: initdb.c:3452 #, c-format msgid "Running in debug mode.\n" msgstr "Esecuzione in modalità debug\n" -#: initdb.c:3446 +#: initdb.c:3456 #, c-format msgid "Running in noclean mode. Mistakes will not be cleaned up.\n" msgstr "Esecuzione in modalità noclean. Gli errori non verranno ripuliti.\n" -#: initdb.c:3517 +#: initdb.c:3527 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: troppi argomenti nella riga di comando (il primo è \"%s\")\n" -#: initdb.c:3543 +#: initdb.c:3553 #, c-format msgid "%s: password prompt and password file cannot be specified together\n" msgstr "" "%s: il prompt della password ed un file contenente la password non\n" "possono essere specificati contemporaneamente\n" -#: initdb.c:3565 +#: initdb.c:3577 +#, c-format +msgid "%s: superuser name \"%s\" is disallowed; role names cannot begin with \"pg_\"\n" +msgstr "%s: il nome per il superutente \"%s\" non è permesso; i nomi dei ruoli non possono iniziare per \"pg_\"\n" + +#: initdb.c:3581 #, c-format msgid "" "The files belonging to this database system will be owned by user \"%s\".\n" @@ -964,17 +969,17 @@ msgstr "" "Questo utente deve inoltre possedere il processo server.\n" "\n" -#: initdb.c:3581 +#: initdb.c:3597 #, c-format msgid "Data page checksums are enabled.\n" msgstr "La somma di controllo dei dati delle pagine è abilitata.\n" -#: initdb.c:3583 +#: initdb.c:3599 #, c-format msgid "Data page checksums are disabled.\n" msgstr "La somma di controllo dei dati delle pagine è disabilitata.\n" -#: initdb.c:3592 +#: initdb.c:3611 #, c-format msgid "" "\n" @@ -985,7 +990,7 @@ msgstr "" "Sync sul disco saltato.\n" "La directory dei dati potrebbe diventare corrotta in caso di crash del sistema operativo.\n" -#: initdb.c:3601 +#: initdb.c:3620 #, c-format msgid "" "\n" diff --git a/src/bin/initdb/po/ko.po b/src/bin/initdb/po/ko.po index bd2078ff06..7415a28ae1 100644 --- a/src/bin/initdb/po/ko.po +++ b/src/bin/initdb/po/ko.po @@ -3,16 +3,16 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.5\n" +"Project-Id-Version: PostgreSQL 9.6 initdb\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2015-12-22 17:10+0900\n" -"PO-Revision-Date: 2015-12-23 13:19+0900\n" +"POT-Creation-Date: 2016-09-26 14:02+0900\n" +"PO-Revision-Date: 2016-09-26 16:16+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" -"Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 @@ -79,7 +79,7 @@ msgstr "\"%s\" 디렉터리를 ë‹«ì„ ìˆ˜ ì—†ìŒ: %s\n" #: ../../common/restricted_token.c:68 #, c-format msgid "%s: WARNING: cannot create restricted tokens on this platform\n" -msgstr "" +msgstr "%s: 경고: ì´ ìš´ì˜ì²´ì œì—서 restricted tokenì„ ë§Œë“¤ 수 ì—†ìŒ\n" #: ../../common/restricted_token.c:77 #, c-format @@ -170,118 +170,118 @@ msgstr "하위 프로세스가 종료ë˜ì—ˆìŒ, ì‹œê·¸ë„ %d" msgid "child process exited with unrecognized status %d" msgstr "하위 프로세스가 종료ë˜ì—ˆìŒ, 알수 없는 ìƒíƒœ %d" -#: ../../port/dirmod.c:219 +#: ../../port/dirmod.c:221 #, c-format msgid "could not set junction for \"%s\": %s\n" msgstr "\"%s\" 파ì¼ì˜ ì—°ê²°ì„ ì„¤ì •í•  수 ì—†ìŒ: %s\n" -#: ../../port/dirmod.c:294 +#: ../../port/dirmod.c:298 #, c-format msgid "could not get junction for \"%s\": %s\n" msgstr "\"%s\" 파ì¼ì˜ ì •ì…˜ì„ êµ¬í•  수 ì—†ìŒ: %s\n" -#: initdb.c:340 +#: initdb.c:349 #, c-format msgid "%s: out of memory\n" msgstr "%s: 메모리 부족\n" -#: initdb.c:450 initdb.c:1620 +#: initdb.c:459 initdb.c:1595 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: \"%s\" íŒŒì¼ ì½ê¸° 모드로 열기 실패: %s\n" -#: initdb.c:506 initdb.c:1016 initdb.c:1044 +#: initdb.c:515 initdb.c:1002 initdb.c:1030 #, c-format msgid "%s: could not open file \"%s\" for writing: %s\n" msgstr "%s: \"%s\" 파ì¼ì„ 쓰기 모드로 열기 실패: %s\n" -#: initdb.c:514 initdb.c:522 initdb.c:1023 initdb.c:1050 +#: initdb.c:523 initdb.c:531 initdb.c:1009 initdb.c:1036 #, c-format msgid "%s: could not write file \"%s\": %s\n" msgstr "%s: \"%s\" íŒŒì¼ ì“°ê¸° 실패: %s\n" -#: initdb.c:553 +#: initdb.c:562 #, c-format msgid "%s: could not open directory \"%s\": %s\n" msgstr "%s: \"%s\" 디렉터리 ì—´ 수 ì—†ìŒ: %s\n" -#: initdb.c:577 initdb.c:2424 +#: initdb.c:586 initdb.c:2321 #, c-format msgid "%s: could not stat file \"%s\": %s\n" msgstr "%s: \"%s\" 파ì¼ì˜ ìƒíƒœë¥¼ 알 수 ì—†ìŒ: %s\n" -#: initdb.c:589 +#: initdb.c:598 #, c-format msgid "%s: could not read directory \"%s\": %s\n" msgstr "%s: \"%s\" 디렉터리를 ì½ì„ 수 ì—†ìŒ: %s\n" -#: initdb.c:622 initdb.c:681 +#: initdb.c:631 initdb.c:690 #, c-format msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: \"%s\" íŒŒì¼ ì—´ 수 ì—†ìŒ: %s\n" -#: initdb.c:693 +#: initdb.c:702 #, c-format msgid "%s: could not fsync file \"%s\": %s\n" msgstr "%s: \"%s\" 파ì¼ì— 대한 fsync ìž‘ì—…ì„ í•  수 ì—†ìŒ: %s\n" -#: initdb.c:712 +#: initdb.c:721 #, c-format msgid "%s: could not execute command \"%s\": %s\n" msgstr "%s: \"%s\" ëª…ë ¹ì„ ì‹¤í–‰í•  수 ì—†ìŒ: %s\n" -#: initdb.c:728 +#: initdb.c:737 #, c-format msgid "%s: removing data directory \"%s\"\n" msgstr "%s: \"%s\" ë°ì´í„° 디렉터리를 지우고 있습니다.\n" -#: initdb.c:731 +#: initdb.c:740 #, c-format msgid "%s: failed to remove data directory\n" msgstr "%s: ë°ì´í„° 디렉터리를 ì§€ìš°ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤\n" -#: initdb.c:737 +#: initdb.c:746 #, c-format msgid "%s: removing contents of data directory \"%s\"\n" msgstr "%s: \"%s\" ë°ì´í„° 디렉터리 ì•ˆì˜ ë‚´ìš©ì„ ì§€ìš°ê³  있습니다.\n" -#: initdb.c:740 +#: initdb.c:749 #, c-format msgid "%s: failed to remove contents of data directory\n" msgstr "%s: ë°ì´í„° 디렉터리 ë‚´ìš©ì„ ì§€ìš°ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤\n" -#: initdb.c:746 +#: initdb.c:755 #, c-format msgid "%s: removing transaction log directory \"%s\"\n" msgstr "%s: \"%s\" 트랜잭션 로그 디렉터리를 지우고 있습니다.\n" -#: initdb.c:749 +#: initdb.c:758 #, c-format msgid "%s: failed to remove transaction log directory\n" msgstr "%s: 트랜잭션 로그 디렉터리를 ì§€ìš°ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤\n" -#: initdb.c:755 +#: initdb.c:764 #, c-format msgid "%s: removing contents of transaction log directory \"%s\"\n" msgstr "%s: \"%s\" 트랜잭션 로그 디렉터리 ì•ˆì˜ ë‚´ìš©ì„ ì§€ìš°ê³  있습니다.\n" -#: initdb.c:758 +#: initdb.c:767 #, c-format msgid "%s: failed to remove contents of transaction log directory\n" msgstr "%s: 트랜잭션 로그 디렉터리 ë‚´ìš©ì„ ì§€ìš°ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤\n" -#: initdb.c:767 +#: initdb.c:776 #, c-format msgid "%s: data directory \"%s\" not removed at user's request\n" msgstr "%s: \"%s\" ë°ì´í„° 디렉터리가 사용ìžì˜ 요청으로 ì‚­ì œë˜ì§€ 않았습니다.\n" -#: initdb.c:772 +#: initdb.c:781 #, c-format msgid "%s: transaction log directory \"%s\" not removed at user's request\n" msgstr "" "%s: \"%s\" 트랜잭션 로그 디렉터리가 사용ìžì˜ 요청으로 ì‚­ì œë˜ì§€ 않았습니다.\n" -#: initdb.c:793 +#: initdb.c:802 #, c-format msgid "" "%s: cannot be run as root\n" @@ -292,22 +292,17 @@ msgstr "" "ì‹œìŠ¤í…œê´€ë¦¬ìž ê¶Œí•œì´ ì—†ëŠ”, ì„œë²„í”„ë¡œì„¸ìŠ¤ì˜ ì†Œìœ ì£¼ê°€ ë  ì¼ë°˜ 사용ìžë¡œ\n" "ë¡œê·¸ì¸ í•´ì„œ(\"su\", \"runas\" ê°™ì€ ëª…ë ¹ ì´ìš©) 실행하십시오.\n" -#: initdb.c:829 +#: initdb.c:838 #, c-format msgid "%s: \"%s\" is not a valid server encoding name\n" msgstr "%s: \"%s\" ì¸ì½”ë”©ì€ ì„œë²„ ì¸ì½”딩 ì´ë¦„ì„ ì‚¬ìš©í•  수 없습니다.\n" -#: initdb.c:943 initdb.c:3217 -#, c-format -msgid "%s: could not create directory \"%s\": %s\n" -msgstr "%s: \"%s\" 디렉터리 만들 수 ì—†ìŒ: %s\n" - -#: initdb.c:972 +#: initdb.c:958 #, c-format msgid "%s: file \"%s\" does not exist\n" msgstr "%s: \"%s\" 파ì¼ì´ ì—†ìŒ\n" -#: initdb.c:974 initdb.c:983 initdb.c:993 +#: initdb.c:960 initdb.c:969 initdb.c:979 #, c-format msgid "" "This might mean you have a corrupted installation or identified\n" @@ -316,46 +311,46 @@ msgstr "" "설치가 잘못ë˜ì—ˆê±°ë‚˜ –L 호출 옵션으로 ì‹ë³„한 디렉터리가\n" "잘못ë˜ì—ˆì„ 수 있습니다.\n" -#: initdb.c:980 +#: initdb.c:966 #, c-format msgid "%s: could not access file \"%s\": %s\n" msgstr "%s: \"%s\" 파ì¼ì— 액세스할 수 ì—†ìŒ: %s\n" -#: initdb.c:991 +#: initdb.c:977 #, c-format msgid "%s: file \"%s\" is not a regular file\n" msgstr "%s: \"%s\" 파ì¼ì€ ì¼ë°˜ 파ì¼ì´ 아님\n" -#: initdb.c:1136 +#: initdb.c:1122 #, c-format msgid "selecting default max_connections ... " msgstr "max_connections ì´ˆê¸°ê°’ì„ ì„ íƒí•˜ëŠ” 중 ..." -#: initdb.c:1166 +#: initdb.c:1152 #, c-format msgid "selecting default shared_buffers ... " msgstr "기본 shared_buffers를 ì„ íƒí•˜ëŠ” 중... " -#: initdb.c:1199 +#: initdb.c:1185 #, c-format msgid "selecting dynamic shared memory implementation ... " -msgstr "" +msgstr "사용할 ë™ì  공유 메모리 관리방ì‹ì„ ì„ íƒí•˜ëŠ” 중 ... " -#: initdb.c:1217 +#: initdb.c:1203 msgid "creating configuration files ... " msgstr "환경설정 파ì¼ì„ 만드는 중 ..." -#: initdb.c:1314 initdb.c:1334 initdb.c:1418 initdb.c:1434 +#: initdb.c:1306 initdb.c:1326 initdb.c:1410 initdb.c:1426 #, c-format msgid "%s: could not change permissions of \"%s\": %s\n" msgstr "%s: \"%s\" ì ‘ê·¼ ê¶Œí•œì„ ë°”ê¿€ 수 ì—†ìŒ: %s\n" -#: initdb.c:1458 +#: initdb.c:1450 #, c-format -msgid "creating template1 database in %s/base/1 ... " -msgstr "%s/base/1 ì•ˆì— template1 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 만드는 중 ..." +msgid "running bootstrap script ... " +msgstr "부트스트랩 스í¬ë¦½íЏ 실행 중 ... " -#: initdb.c:1474 +#: initdb.c:1466 #, c-format msgid "" "%s: input file \"%s\" does not belong to PostgreSQL %s\n" @@ -364,159 +359,98 @@ msgstr "" "%s: \"%s\" ìž…ë ¥ 파ì¼ì€ PostgreSQL %s ìš©ì´ ì•„ë‹™ë‹ˆë‹¤.\n" "설치ìƒíƒœë¥¼ 확ì¸í•´ ë³´ê³ , -L 옵션으로 바른 경로를 지정하십시오.\n" -#: initdb.c:1561 -msgid "initializing pg_authid ... " -msgstr "pg_authid 초기화 중 ..." - -#: initdb.c:1595 +#: initdb.c:1570 msgid "Enter new superuser password: " msgstr "새 superuser 암호를 입력하십시오:" -#: initdb.c:1596 +#: initdb.c:1571 msgid "Enter it again: " msgstr "암호 확ì¸:" -#: initdb.c:1599 +#: initdb.c:1574 #, c-format msgid "Passwords didn't match.\n" msgstr "암호가 서로 틀립니다.\n" -#: initdb.c:1627 +#: initdb.c:1602 #, c-format msgid "%s: could not read password from file \"%s\": %s\n" msgstr "%s: file \"%s\" 파ì¼ì—서 암호를 ì½ì„ 수 없습니다: %s\n" -#: initdb.c:1630 +#: initdb.c:1605 #, c-format msgid "%s: password file \"%s\" is empty\n" msgstr "%s: \"%s\" 패스워드 파ì¼ì´ 비어있ìŒ\n" -#: initdb.c:1643 -#, c-format -msgid "setting password ... " -msgstr "암호 설정 중 ..." - -#: initdb.c:1743 -msgid "initializing dependencies ... " -msgstr "ì˜ì¡´ì„± ì •ë³´ 초기화 중 ..." - -#: initdb.c:1771 -msgid "creating system views ... " -msgstr "시스템 ë·°ë“¤ì„ ë§Œë“œëŠ” 중 ... " - -#: initdb.c:1807 -msgid "loading system objects' descriptions ... " -msgstr "시스템 개체들 설명 ìžë£Œ ìž…ë ¥ 중 ..." - -#: initdb.c:1913 -msgid "creating collations ... " -msgstr "collation 만드는 중 ... " - -#: initdb.c:1946 +#: initdb.c:1853 #, c-format msgid "%s: locale name too long, skipped: \"%s\"\n" msgstr "%s: ë¡œì¼€ì¼ ì´ë¦„ì´ ë„ˆë¬´ 길어 무시함: \"%s\"\n" -#: initdb.c:1971 +#: initdb.c:1878 #, c-format msgid "%s: locale name has non-ASCII characters, skipped: \"%s\"\n" msgstr "%s: ë¡œì¼€ì¼ ì´ë¦„ì´ ASCII 문ìžë¡œ ë˜ì–´ìžˆì§€ 않아 무시함: \"%s\"\n" -#: initdb.c:2040 +#: initdb.c:1951 #, c-format msgid "No usable system locales were found.\n" msgstr "사용 가능한 시스템 로케ì¼ì´ ì—†ìŒ.\n" -#: initdb.c:2041 +#: initdb.c:1952 #, c-format msgid "Use the option \"--debug\" to see details.\n" -msgstr "" - -#: initdb.c:2044 -#, c-format -msgid "not supported on this platform\n" -msgstr "ì´ í”Œëž«í¼ì—서 ì§€ì›ë˜ì§€ 않ìŒ\n" +msgstr "보다 ìžì„¸í•œ ë‚´ìš©ì„ ë³´ë ¤ë©´ \"--debug\" ì˜µì…˜ì„ ì‚¬ìš©í•˜ì„¸ìš”.\n" -#: initdb.c:2059 -msgid "creating conversions ... " -msgstr "ì¸ì½”딩 변환규칙(conversion)ë“¤ì„ ë§Œë“œëŠ” 중 ..." - -#: initdb.c:2094 -msgid "creating dictionaries ... " -msgstr "ì‚¬ì „ì„ ë§Œë“œëŠ” 중... " - -#: initdb.c:2148 -msgid "setting privileges on built-in objects ... " -msgstr "ë‚´ìž¥ê°œì²´ë“¤ì˜ ì•¡ì„¸ìŠ¤ ê¶Œí•œì„ ì„¤ì • 중 ... " - -#: initdb.c:2206 -msgid "creating information schema ... " -msgstr "information schema 만드는 중 ..." - -#: initdb.c:2262 -msgid "loading PL/pgSQL server-side language ... " -msgstr "서버측 ì–¸ì–´ì¸ PL/pgSqL 불러오는 중 ... " - -#: initdb.c:2287 -msgid "vacuuming database template1 ... " -msgstr "template1 ë°ì´í„°ë² ì´ìФ 청소 중 ..." - -#: initdb.c:2340 -msgid "copying template1 to template0 ... " -msgstr "template1 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ template0 ë°ì´í„°ë² ì´ìŠ¤ë¡œ 복사 중 ..." - -#: initdb.c:2372 -msgid "copying template1 to postgres ... " -msgstr "template1 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ postgres ë°ì´í„°ë² ì´ìŠ¤ë¡œ 복사 중 ..." - -#: initdb.c:2407 +#: initdb.c:2304 msgid "syncing data to disk ... " -msgstr "" +msgstr "ìžë£Œë¥¼ 디스í¬ì— ë™ê¸°í™” 하는 중 ... " -#: initdb.c:2501 +#: initdb.c:2398 #, c-format msgid "caught signal\n" msgstr "ì‹œìŠ¤í…œì˜ ê°„ì„­ 신호(signal) 받았ìŒ\n" -#: initdb.c:2507 +#: initdb.c:2404 #, c-format msgid "could not write to child process: %s\n" msgstr "하위 í”„ë¡œì„¸ìŠ¤ì— ì“¸ 수 ì—†ìŒ: %s\n" -#: initdb.c:2515 +#: initdb.c:2412 #, c-format msgid "ok\n" msgstr "완료\n" # # search5 ë # # advance 부분 -#: initdb.c:2605 +#: initdb.c:2502 #, c-format msgid "%s: setlocale() failed\n" msgstr "%s: setlocale() 실패\n" -#: initdb.c:2623 +#: initdb.c:2520 #, c-format msgid "%s: failed to restore old locale \"%s\"\n" msgstr "%s: \"%s\" 옛 로케ì¼ë¡œ ë³µì›í•˜ì§€ 못했ìŒ\n" -#: initdb.c:2633 +#: initdb.c:2530 #, c-format msgid "%s: invalid locale name \"%s\"\n" msgstr "%s: ìž˜ëª»ëœ ë¡œìº˜ ì´ë¦„ \"%s\"\n" -#: initdb.c:2645 +#: initdb.c:2542 #, c-format msgid "" "%s: invalid locale settings; check LANG and LC_* environment variables\n" msgstr "" +"%s: ìž˜ëª»ëœ ë¡œì¼€ì¼ ì„¤ì •; LANG ë˜ëŠ” LC_* OS 환경 변수를 확ì¸í•˜ì„¸ìš”\n" -#: initdb.c:2673 +#: initdb.c:2570 #, c-format msgid "%s: encoding mismatch\n" msgstr "%s: ì¸ì½”딩 불ì¼ì¹˜\n" -#: initdb.c:2675 +#: initdb.c:2572 #, c-format msgid "" "The encoding you selected (%s) and the encoding that the\n" @@ -531,7 +465,7 @@ msgstr "" "%sì„(를) 다시 실행하고 ì¸ì½”ë”©ì„ ëª…ì‹œì ìœ¼ë¡œ 지정하지 않거나\n" "ì¼ì¹˜í•˜ëŠ” ì¡°í•©ì„ ì„ íƒí•˜ì‹­ì‹œì˜¤.\n" -#: initdb.c:2747 +#: initdb.c:2644 #, c-format msgid "" "%s initializes a PostgreSQL database cluster.\n" @@ -540,17 +474,17 @@ msgstr "" "%s PostgreSQL ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ë¥¼ 초기화 하는 프로그램.\n" "\n" -#: initdb.c:2748 +#: initdb.c:2645 #, c-format msgid "Usage:\n" msgstr "사용법:\n" -#: initdb.c:2749 +#: initdb.c:2646 #, c-format msgid " %s [OPTION]... [DATADIR]\n" msgstr " %s [옵션]... [DATADIR]\n" -#: initdb.c:2750 +#: initdb.c:2647 #, c-format msgid "" "\n" @@ -559,45 +493,43 @@ msgstr "" "\n" "옵션들:\n" -#: initdb.c:2751 +#: initdb.c:2648 #, c-format msgid "" " -A, --auth=METHOD default authentication method for local " "connections\n" msgstr " -A, --auth=METHOD 로컬 ì—°ê²°ì˜ ê¸°ë³¸ ì¸ì¦ 방법\n" -#: initdb.c:2752 +#: initdb.c:2649 #, c-format msgid "" " --auth-host=METHOD default authentication method for local TCP/IP " "connections\n" -msgstr "" -" --auth-host=METHOD local TCP/IP ì—°ê²°ì— ëŒ€í•œ 기본 ì¸ì¦ 방법\n" +msgstr " --auth-host=METHOD local TCP/IP ì—°ê²°ì— ëŒ€í•œ 기본 ì¸ì¦ 방법\n" -#: initdb.c:2753 +#: initdb.c:2650 #, c-format msgid "" " --auth-local=METHOD default authentication method for local-socket " "connections\n" -msgstr "" -" --auth-local=METHOD local-socket ì—°ê²°ì— ëŒ€í•œ 기본 ì¸ì¦ 방법\n" +msgstr " --auth-local=METHOD local-socket ì—°ê²°ì— ëŒ€í•œ 기본 ì¸ì¦ 방법\n" -#: initdb.c:2754 +#: initdb.c:2651 #, c-format msgid " [-D, --pgdata=]DATADIR location for this database cluster\n" msgstr " [-D, --pgdata=]DATADIR 새 ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ë¥¼ 만들 디렉터리\n" -#: initdb.c:2755 +#: initdb.c:2652 #, c-format msgid " -E, --encoding=ENCODING set default encoding for new databases\n" msgstr " -E, --encoding=ENCODING 새 ë°ì´í„°ë² ì´ìŠ¤ì˜ ê¸°ë³¸ ì¸ì½”딩\n" -#: initdb.c:2756 +#: initdb.c:2653 #, c-format msgid " --locale=LOCALE set default locale for new databases\n" msgstr " --locale=LOCALE 새 ë°ì´í„°ë² ì´ìŠ¤ì˜ ê¸°ë³¸ 로캘 설정\n" -#: initdb.c:2757 +#: initdb.c:2654 #, c-format msgid "" " --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n" @@ -611,18 +543,18 @@ msgstr "" " 새 ë°ì´í„°ë² ì´ìŠ¤ì˜ ê° ë²”ì£¼ì— ê¸°ë³¸ 로캘 설정\n" " (환경ì—서 가져온 기본 ê°’)\n" -#: initdb.c:2761 +#: initdb.c:2658 #, c-format msgid " --no-locale equivalent to --locale=C\n" msgstr " --no-locale -locale=C와 ê°™ìŒ\n" -#: initdb.c:2762 +#: initdb.c:2659 #, c-format msgid "" " --pwfile=FILE read password for the new superuser from file\n" msgstr " --pwfile=FILE 파ì¼ì—서 새 superuserì˜ ì•”í˜¸ ì½ê¸°\n" -#: initdb.c:2763 +#: initdb.c:2660 #, c-format msgid "" " -T, --text-search-config=CFG\n" @@ -631,24 +563,24 @@ msgstr "" " -T, --text-search-config=CFG\n" " 기본 í…스트 검색 구성\n" -#: initdb.c:2765 +#: initdb.c:2662 #, c-format msgid " -U, --username=NAME database superuser name\n" msgstr " -U, --username=NAME ë°ì´í„°ë² ì´ìФ superuser ì´ë¦„\n" -#: initdb.c:2766 +#: initdb.c:2663 #, c-format msgid "" " -W, --pwprompt prompt for a password for the new superuser\n" msgstr " -W, --pwprompt 새 superuser 암호를 ìž…ë ¥ ë°›ìŒ\n" -#: initdb.c:2767 +#: initdb.c:2664 #, c-format msgid "" " -X, --xlogdir=XLOGDIR location for the transaction log directory\n" msgstr " -X, --xlogdir=XLOGDIR 트랜잭션 로그 디렉터리 위치\n" -#: initdb.c:2768 +#: initdb.c:2665 #, c-format msgid "" "\n" @@ -657,27 +589,27 @@ msgstr "" "\n" "ëœ ì¼ë°˜ì ìœ¼ë¡œ 사용ë˜ëŠ” 옵션들:\n" -#: initdb.c:2769 +#: initdb.c:2666 #, c-format msgid " -d, --debug generate lots of debugging output\n" msgstr " -d, --debug ë””ë²„ê¹…ì— í•„ìš”í•œ ì •ë³´ë“¤ë„ í•¨ê»˜ 출력함\n" -#: initdb.c:2770 +#: initdb.c:2667 #, c-format msgid " -k, --data-checksums use data page checksums\n" -msgstr "" +msgstr " -k, --data-checksums ìžë£Œ 페ì´ì§€ ì²´í¬ì„¬ 사용\n" -#: initdb.c:2771 +#: initdb.c:2668 #, c-format msgid " -L DIRECTORY where to find the input files\n" msgstr " -L DIRECTORY 입력파ì¼ë“¤ì´ 있는 디렉터리\n" -#: initdb.c:2772 +#: initdb.c:2669 #, c-format msgid " -n, --noclean do not clean up after errors\n" msgstr " -n, --noclean 오류가 ë°œìƒë˜ì—ˆì„ 경우 그대로 ë‘ \n" -#: initdb.c:2773 +#: initdb.c:2670 #, c-format msgid "" " -N, --nosync do not wait for changes to be written safely to " @@ -685,17 +617,17 @@ msgid "" msgstr "" " -N, --nosync 작업 완료 ë’¤ ë””ìŠ¤í¬ ë™ê¸°í™” ìž‘ì—…ì„ í•˜ì§€ 않ìŒ\n" -#: initdb.c:2774 +#: initdb.c:2671 #, c-format msgid " -s, --show show internal settings\n" msgstr " -s, --show ë‚´ë¶€ ì„¤ì •ê°’ë“¤ì„ ë³´ì—¬ì¤Œ\n" -#: initdb.c:2775 +#: initdb.c:2672 #, c-format msgid " -S, --sync-only only sync data directory\n" msgstr " -S, --sync-only ë°ì´í„° 디렉터리만 ë™ê¸°í™”\n" -#: initdb.c:2776 +#: initdb.c:2673 #, c-format msgid "" "\n" @@ -704,17 +636,17 @@ msgstr "" "\n" "기타 옵션:\n" -#: initdb.c:2777 +#: initdb.c:2674 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version 버전 정보를 보여주고 마침\n" -#: initdb.c:2778 +#: initdb.c:2675 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help ì´ ë„움ë§ì„ 보여주고 마침\n" -#: initdb.c:2779 +#: initdb.c:2676 #, c-format msgid "" "\n" @@ -724,7 +656,7 @@ msgstr "" "\n" "ë°ì´í„° 디렉터리를 지정하지 않으면, PGDATA 환경 ë³€ìˆ˜ê°’ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.\n" -#: initdb.c:2781 +#: initdb.c:2678 #, c-format msgid "" "\n" @@ -733,7 +665,7 @@ msgstr "" "\n" "오류보고: .\n" -#: initdb.c:2789 +#: initdb.c:2686 msgid "" "\n" "WARNING: enabling \"trust\" authentication for local connections\n" @@ -746,19 +678,19 @@ msgstr "" "다ìŒë²ˆ initdb ëª…ë ¹ì„ ì‚¬ìš©í•  때, -A 옵션 ë˜ëŠ” --auth-local,\n" "--auth-host ì˜µì…˜ì„ ì‚¬ìš©í•´ì„œ ì¸ì¦ ë°©ë²•ì„ ì§€ì •í•  수 있습니다.\n" -#: initdb.c:2811 +#: initdb.c:2708 #, c-format msgid "%s: invalid authentication method \"%s\" for \"%s\" connections\n" msgstr "%s: \"%s\" ì¸ì¦ ë°©ë²•ì€ \"%s\" ì—°ê²°ì—서는 사용할 수 없습니다.\n" -#: initdb.c:2825 +#: initdb.c:2722 #, c-format msgid "" "%s: must specify a password for the superuser to enable %s authentication\n" msgstr "" "%s: %s ì¸ì¦ë°©ì‹ì„ 사용하려면, 반드시 superuserì˜ ì•”í˜¸ë¥¼ 지정해야합니다.\n" -#: initdb.c:2852 +#: initdb.c:2749 #, c-format msgid "" "%s: no data directory specified\n" @@ -771,7 +703,7 @@ msgstr "" "지정하는 ë°©ë²•ì€ -D ì˜µì…˜ì˜ ê°’ì´ë‚˜, PGDATA 환경 변수값으로 지정해 주면 ë©ë‹ˆ" "다.\n" -#: initdb.c:2890 +#: initdb.c:2787 #, c-format msgid "" "The program \"postgres\" is needed by %s but was not found in the\n" @@ -782,7 +714,7 @@ msgstr "" "\"%s\" 파ì¼ì´ 있는 ë””ë ‰í„°ë¦¬ì•ˆì— ì—†ìŠµë‹ˆë‹¤.\n" "설치 ìƒíƒœë¥¼ 확ì¸í•´ 주십시오.\n" -#: initdb.c:2897 +#: initdb.c:2794 #, c-format msgid "" "The program \"postgres\" was found by \"%s\"\n" @@ -793,17 +725,17 @@ msgstr "" "%s í”„ë¡œê·¸ëž¨ì˜ ë²„ì „ê³¼ 틀립니다.\n" "설치 ìƒíƒœë¥¼ 확ì¸í•´ 주십시오.\n" -#: initdb.c:2916 +#: initdb.c:2813 #, c-format msgid "%s: input file location must be an absolute path\n" msgstr "%s: ìž…ë ¥ íŒŒì¼ ìœ„ì¹˜ëŠ” 반드시 절대경로여야합니다.\n" -#: initdb.c:2935 +#: initdb.c:2832 #, c-format msgid "The database cluster will be initialized with locale \"%s\".\n" msgstr "ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ëŠ” \"%s\" 로케ì¼ìœ¼ë¡œ ì´ˆê¸°í™”ë  ê²ƒìž…ë‹ˆë‹¤.\n" -#: initdb.c:2938 +#: initdb.c:2835 #, c-format msgid "" "The database cluster will be initialized with locales\n" @@ -822,22 +754,22 @@ msgstr "" " NUMERIC: %s\n" " TIME: %s\n" -#: initdb.c:2962 +#: initdb.c:2859 #, c-format msgid "%s: could not find suitable encoding for locale \"%s\"\n" msgstr "%s: \"%s\" ë¡œìº˜ì— ì•Œë§žì€ ì¸ì½”ë”©ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ\n" -#: initdb.c:2964 +#: initdb.c:2861 #, c-format msgid "Rerun %s with the -E option.\n" msgstr "-E 옵션으로 %s 지정해 주십시오.\n" -#: initdb.c:2965 initdb.c:3541 initdb.c:3562 +#: initdb.c:2862 initdb.c:3485 initdb.c:3506 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "보다 ìžì„¸í•œ 정보를 보려면 \"%s --help\" ì˜µì…˜ì„ ì‚¬ìš©í•˜ì‹­ì‹œì˜¤.\n" -#: initdb.c:2977 +#: initdb.c:2874 #, c-format msgid "" "Encoding \"%s\" implied by locale is not allowed as a server-side encoding.\n" @@ -846,12 +778,12 @@ msgstr "" "\"%s\" ì¸ì½”ë”©ì„ ì„œë²„ì¸¡ ì¸ì½”딩으로 사용할 수 없습니다.\n" "기본 ë°ì´í„°ë² ì´ìŠ¤ëŠ” \"%s\" ì¸ì½”딩으로 지정ë©ë‹ˆë‹¤.\n" -#: initdb.c:2985 +#: initdb.c:2882 #, c-format msgid "%s: locale \"%s\" requires unsupported encoding \"%s\"\n" msgstr "%s: \"%s\" 로케ì¼ì€ ì§€ì›í•˜ì§€ 않는 \"%s\" ì¸ì½”ë”©ì„ í•„ìš”ë¡œ 함\n" -#: initdb.c:2988 +#: initdb.c:2885 #, c-format msgid "" "Encoding \"%s\" is not allowed as a server-side encoding.\n" @@ -860,25 +792,25 @@ msgstr "" "\"%s\" ì¸ì½”ë”©ì„ ì„œë²„ì¸¡ ì¸ì½”딩으로 사용할 수 없습니다.\n" "다른 ë¡œìº˜ì„ ì„ íƒí•˜ê³  %sì„(를) 다시 실행하십시오.\n" -#: initdb.c:2997 +#: initdb.c:2894 #, c-format msgid "The default database encoding has accordingly been set to \"%s\".\n" msgstr "기본 ë°ì´í„°ë² ì´ìФ ì¸ì½”ë”©ì€ \"%s\" ì¸ì½”딩으로 설정ë˜ì—ˆìŠµë‹ˆë‹¤.\n" -#: initdb.c:3068 +#: initdb.c:2965 #, c-format msgid "" "%s: could not find suitable text search configuration for locale \"%s\"\n" msgstr "%s: \"%s\" 로케ì¼ì— ì•Œë§žì€ ì „ë¬¸ê²€ìƒ‰ ì„¤ì •ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ\n" -#: initdb.c:3079 +#: initdb.c:2976 #, c-format msgid "" "%s: warning: suitable text search configuration for locale \"%s\" is " "unknown\n" msgstr "%s: 경고: \"%s\" ë¡œìº˜ì— ì•Œë§žì€ ì „ë¬¸ê²€ìƒ‰ ì„¤ì •ì„ ì•Œ 수 ì—†ìŒ\n" -#: initdb.c:3084 +#: initdb.c:2981 #, c-format msgid "" "%s: warning: specified text search configuration \"%s\" might not match " @@ -886,32 +818,37 @@ msgid "" msgstr "" "%s: 경고: 지정한 \"%s\" 전문검색 ì„¤ì •ì€ \"%s\" 로케ì¼ê³¼ ì¼ì¹˜í•˜ì§€ 않ìŒ\n" -#: initdb.c:3089 +#: initdb.c:2986 #, c-format msgid "The default text search configuration will be set to \"%s\".\n" msgstr "기본 í…스트 검색 êµ¬ì„±ì´ \"%s\"(으)로 설정ë©ë‹ˆë‹¤.\n" -#: initdb.c:3133 initdb.c:3211 +#: initdb.c:3030 initdb.c:3116 #, c-format msgid "creating directory %s ... " msgstr "%s 디렉터리 만드는 중 ..." -#: initdb.c:3147 initdb.c:3229 +#: initdb.c:3036 initdb.c:3122 initdb.c:3190 initdb.c:3246 +#, c-format +msgid "%s: could not create directory \"%s\": %s\n" +msgstr "%s: \"%s\" 디렉터리 만들 수 ì—†ìŒ: %s\n" + +#: initdb.c:3048 initdb.c:3134 #, c-format msgid "fixing permissions on existing directory %s ... " msgstr "ì´ë¯¸ 있는 %s ë””ë ‰í„°ë¦¬ì˜ ì•¡ì„¸ìŠ¤ ê¶Œí•œì„ ê³ ì¹˜ëŠ” 중 ..." -#: initdb.c:3153 initdb.c:3235 +#: initdb.c:3054 initdb.c:3140 #, c-format msgid "%s: could not change permissions of directory \"%s\": %s\n" msgstr "%s: \"%s\" ë””ë ‰í„°ë¦¬ì˜ ì•¡ì„¸ìŠ¤ ê¶Œí•œì„ ë°”ê¿€ 수 없습니다: %s\n" -#: initdb.c:3168 initdb.c:3250 +#: initdb.c:3069 initdb.c:3155 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" msgstr "%s: \"%s\" 디렉터리가 있지만 비어 있지 않ìŒ\n" -#: initdb.c:3174 +#: initdb.c:3075 #, c-format msgid "" "If you want to create a new database system, either remove or empty\n" @@ -922,17 +859,17 @@ msgstr "" "\"%s\" 디렉터리를 제거하거나 비우십시오. ë˜ëŠ” %sì„(를)\n" "\"%s\" ì´ì™¸ì˜ ì¸ìˆ˜ë¥¼ 사용하여 실행하십시오.\n" -#: initdb.c:3182 initdb.c:3263 initdb.c:3575 +#: initdb.c:3083 initdb.c:3168 initdb.c:3519 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: \"%s\" ë””ë ‰í„°ë¦¬ì— ì•¡ì„¸ìŠ¤í•  수 ì—†ìŒ: %s\n" -#: initdb.c:3202 +#: initdb.c:3107 #, c-format msgid "%s: transaction log directory location must be an absolute path\n" msgstr "%s: 트랜잭션 로그 디렉터리 위치는 절대 경로여야 함\n" -#: initdb.c:3256 +#: initdb.c:3161 #, c-format msgid "" "If you want to store the transaction log there, either\n" @@ -941,64 +878,82 @@ msgstr "" "트랜잭션 로그를 해당 ìœ„ì¹˜ì— ì €ìž¥í•˜ë ¤ë©´\n" "\"%s\" 디렉터리를 제거하거나 비우십시오.\n" -#: initdb.c:3274 +#: initdb.c:3176 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" msgstr "%s: \"%s\" 심벌릭 ë§í¬ë¥¼ 만들 수 ì—†ìŒ: %s\n" -#: initdb.c:3279 +#: initdb.c:3181 #, c-format msgid "%s: symlinks are not supported on this platform" msgstr "%s: ì´ í”Œëž«í¼ì—서는 심볼 ë§í¬ê°€ ì§€ì›ë˜ì§€ 않ìŒ" -#: initdb.c:3292 +#: initdb.c:3205 #, c-format msgid "" "It contains a dot-prefixed/invisible file, perhaps due to it being a mount " "point.\n" msgstr "" +"ì (.)으로 시작하는 ìˆ¨ì€ íŒŒì¼ì´ í¬í•¨ë˜ì–´ 있습니다. 마운트 최ìƒìœ„ 디렉터리 " +"같습니다.\n" -#: initdb.c:3295 +#: initdb.c:3208 #, c-format msgid "" "It contains a lost+found directory, perhaps due to it being a mount point.\n" msgstr "" +"lost-found 디렉터리가 있습니다. 마운트 최ìƒìœ„ 디렉터리 같습니다.\n" -#: initdb.c:3298 +#: initdb.c:3211 #, c-format msgid "" "Using a mount point directly as the data directory is not recommended.\n" "Create a subdirectory under the mount point.\n" msgstr "" +"마운트 최ìƒìœ„ 디렉터리를 ë°ì´í„° 디렉터리로 사용하는 ê²ƒì€ ê¶Œìž¥í•˜ì§€ 않습니다.\n" +"하위 디렉터리를 만들어서 ê·¸ê²ƒì„ ë°ì´í„° 디렉터리로 사용하세요.\n" -#: initdb.c:3317 +#: initdb.c:3231 #, c-format msgid "creating subdirectories ... " msgstr "하위 디렉터리 만드는 중 ..." -#: initdb.c:3485 +#: initdb.c:3278 +msgid "performing post-bootstrap initialization ... " +msgstr "부트스트랩 ë‹¤ìŒ ì´ˆê¸°í™” 작업 중 ... " + +#: initdb.c:3429 #, c-format msgid "Running in debug mode.\n" msgstr "디버그 모드로 실행 중.\n" -#: initdb.c:3489 +#: initdb.c:3433 #, c-format msgid "Running in noclean mode. Mistakes will not be cleaned up.\n" msgstr "지저분 모드로 실행 중. 오류가 ë°œìƒë˜ì–´ë„ 뒷정리를 안합니다.\n" -#: initdb.c:3560 +#: initdb.c:3504 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: 너무 ë§Žì€ ëª…ë ¹í–‰ ì¸ìˆ˜ë¥¼ 지정했습니다. (ì²˜ìŒ \"%s\")\n" -#: initdb.c:3586 +#: initdb.c:3530 #, c-format msgid "%s: password prompt and password file cannot be specified together\n" msgstr "" "%s: 암호를 입력받는 옵션과 암호를 파ì¼ì—서 가져오는 ì˜µì…˜ì€ ë™ì‹œì— ì‚¬ìš©ë  ìˆ˜ " "없습니다\n" -#: initdb.c:3608 +#: initdb.c:3554 +#, c-format +msgid "" +"%s: superuser name \"%s\" is disallowed; role names cannot begin with \"pg_" +"\"\n" +msgstr "" +"%s: \"%s\" 사용ìžëŠ” 슈í¼ìœ ì € ì´ë¦„으로 쓸 수 없습니다. \"pg_\"로 시작하는" +"롤 ì´ë¦„ì€ í—ˆìš©í•˜ì§€ 않습니다.\n" + +#: initdb.c:3558 #, c-format msgid "" "The files belonging to this database system will be owned by user \"%s\".\n" @@ -1009,25 +964,28 @@ msgstr "" "ì§€ì •ë  ê²ƒìž…ë‹ˆë‹¤. ë˜í•œ ì´ ì‚¬ìš©ìžëŠ” 서버 í”„ë¡œì„¸ìŠ¤ì˜ ì†Œìœ ì£¼ê°€ ë©ë‹ˆë‹¤.\n" "\n" -#: initdb.c:3624 +#: initdb.c:3574 #, c-format msgid "Data page checksums are enabled.\n" -msgstr "" +msgstr "ìžë£Œ 페ì´ì§€ ì²´í¬ì„¬ 기능 사용함.\n" -#: initdb.c:3626 +#: initdb.c:3576 #, c-format msgid "Data page checksums are disabled.\n" -msgstr "" +msgstr "ìžë£Œ 페ì´ì§€ ì²´í¬ì„¬ 기능 사용 하지 않ìŒ\n" -#: initdb.c:3635 +#: initdb.c:3585 #, c-format msgid "" "\n" "Sync to disk skipped.\n" "The data directory might become corrupt if the operating system crashes.\n" msgstr "" +"\n" +"ë””ìŠ¤í¬ ë™ê¸°í™” ìž‘ì—…ì€ ìƒëžµí–ˆìŠµë‹ˆë‹¤.\n" +"ì´ ìƒíƒœì—서 OSê°€ ê°‘ìžê¸° 중지 ë˜ë©´ ë°ì´í„° 디렉토리 ì•ˆì— ìžˆëŠ” ìžë£Œê°€ 깨질 수 있습니다.\n" -#: initdb.c:3644 +#: initdb.c:3594 #, c-format msgid "" "\n" diff --git a/src/bin/initdb/po/ru.po b/src/bin/initdb/po/ru.po index bbad90794a..5d1ca25526 100644 --- a/src/bin/initdb/po/ru.po +++ b/src/bin/initdb/po/ru.po @@ -6,14 +6,14 @@ # Sergey Burladyan , 2009. # Andrey Sudnik , 2010. # Dmitriy Olshevskiy , 2014. -# Alexander Lakhin , 2012-2016. +# Alexander Lakhin , 2012-2017. # msgid "" msgstr "" "Project-Id-Version: initdb (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-20 18:14+0000\n" -"PO-Revision-Date: 2016-09-20 12:00+0300\n" +"POT-Creation-Date: 2017-02-09 21:13+0000\n" +"PO-Revision-Date: 2017-03-28 20:31+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -195,7 +195,7 @@ msgstr "не удалоÑÑŒ получить ÑвÑзь Ð´Ð»Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° msgid "%s: out of memory\n" msgstr "%s: нехватка памÑти\n" -#: initdb.c:460 initdb.c:1602 +#: initdb.c:460 initdb.c:1623 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: не удалоÑÑŒ открыть файл \"%s\" Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ: %s\n" @@ -215,7 +215,7 @@ msgstr "%s: не удалоÑÑŒ запиÑать файл \"%s\": %s\n" msgid "%s: could not open directory \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ открыть каталог \"%s\": %s\n" -#: initdb.c:587 initdb.c:2325 +#: initdb.c:587 initdb.c:2346 #, c-format msgid "%s: could not stat file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ получить информацию о файле \"%s\": %s\n" @@ -350,115 +350,116 @@ msgstr "выбор реализации динамичеÑкой Ñ€Ð°Ð·Ð´ÐµÐ»Ñ msgid "creating configuration files ... " msgstr "Ñоздание конфигурационных файлов... " -#: initdb.c:1307 initdb.c:1327 initdb.c:1411 initdb.c:1427 +#: initdb.c:1328 initdb.c:1348 initdb.c:1432 initdb.c:1448 #, c-format msgid "%s: could not change permissions of \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ поменÑть права Ð´Ð»Ñ \"%s\": %s\n" -#: initdb.c:1451 +#: initdb.c:1472 #, c-format msgid "running bootstrap script ... " msgstr "выполнÑетÑÑ Ð¿Ð¾Ð´Ð³Ð¾Ñ‚Ð¾Ð²Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ñкрипт ... " -#: initdb.c:1467 +#: initdb.c:1488 #, c-format msgid "" "%s: input file \"%s\" does not belong to PostgreSQL %s\n" "Check your installation or specify the correct path using the option -L.\n" msgstr "" "%s: входной файл \"%s\" не принадлежит PostgreSQL %s\n" -"Проверьте вашу уÑтановку или укажите правильный путь в параметре -L.\n" +"Проверьте правильноÑть уÑтановки или укажите корректный путь в параметре -" +"L.\n" -#: initdb.c:1577 +#: initdb.c:1598 msgid "Enter new superuser password: " msgstr "Введите новый пароль ÑуперпользователÑ: " -#: initdb.c:1578 +#: initdb.c:1599 msgid "Enter it again: " msgstr "Повторите его: " -#: initdb.c:1581 +#: initdb.c:1602 #, c-format msgid "Passwords didn't match.\n" msgstr "Пароли не Ñовпадают.\n" -#: initdb.c:1609 +#: initdb.c:1630 #, c-format msgid "%s: could not read password from file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ прочитать пароль из файла \"%s\": %s\n" -#: initdb.c:1612 +#: initdb.c:1633 #, c-format msgid "%s: password file \"%s\" is empty\n" msgstr "%s: файл Ð¿Ð°Ñ€Ð¾Ð»Ñ \"%s\" пуÑÑ‚\n" -#: initdb.c:1857 +#: initdb.c:1878 #, c-format msgid "%s: locale name too long, skipped: \"%s\"\n" msgstr "%s: Ñлишком длинное Ð¸Ð¼Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸, пропущено: \"%s\"\n" -#: initdb.c:1882 +#: initdb.c:1903 #, c-format msgid "%s: locale name has non-ASCII characters, skipped: \"%s\"\n" msgstr "%s: Ð¸Ð¼Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ Ñодержит не ASCII-Ñимволы, пропущено: \"%s\"\n" -#: initdb.c:1955 +#: initdb.c:1976 #, c-format msgid "No usable system locales were found.\n" msgstr "Пригодные локали в ÑиÑтеме не найдены.\n" -#: initdb.c:1956 +#: initdb.c:1977 #, c-format msgid "Use the option \"--debug\" to see details.\n" msgstr "Добавьте параметр \"--debug\", чтобы узнать подробноÑти.\n" -#: initdb.c:2308 +#: initdb.c:2329 msgid "syncing data to disk ... " msgstr "Ñохранение данных на диÑке... " -#: initdb.c:2402 +#: initdb.c:2423 #, c-format msgid "caught signal\n" msgstr "получен Ñигнал\n" -#: initdb.c:2408 +#: initdb.c:2429 #, c-format msgid "could not write to child process: %s\n" msgstr "не удалоÑÑŒ запиÑать в поток дочернего процеÑÑа: %s\n" -#: initdb.c:2416 +#: initdb.c:2437 #, c-format msgid "ok\n" msgstr "ок\n" -#: initdb.c:2506 +#: initdb.c:2527 #, c-format msgid "%s: setlocale() failed\n" msgstr "%s: ошибка в setlocale()\n" -#: initdb.c:2524 +#: initdb.c:2545 #, c-format msgid "%s: failed to restore old locale \"%s\"\n" msgstr "%s: не удалоÑÑŒ воÑÑтановить Ñтарую локаль \"%s\"\n" -#: initdb.c:2534 +#: initdb.c:2555 #, c-format msgid "%s: invalid locale name \"%s\"\n" msgstr "%s: ошибочное Ð¸Ð¼Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ \"%s\"\n" -#: initdb.c:2546 +#: initdb.c:2567 #, c-format msgid "" "%s: invalid locale settings; check LANG and LC_* environment variables\n" msgstr "" -"%s: неверные наÑтройки локали; проверьте переменные Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ LANG и LC_*\n" +"%s: неверные уÑтановки локали; проверьте переменные Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ LANG и LC_*\n" -#: initdb.c:2574 +#: initdb.c:2595 #, c-format msgid "%s: encoding mismatch\n" msgstr "%s: неÑоответÑтвие кодировки\n" -#: initdb.c:2576 +#: initdb.c:2597 #, c-format msgid "" "The encoding you selected (%s) and the encoding that the\n" @@ -473,7 +474,7 @@ msgstr "" "Ð”Ð»Ñ Ð¸ÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑтите %s, не ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÑƒ Ñвно, \n" "либо выберите подходÑщее Ñочетание параметров локализации.\n" -#: initdb.c:2648 +#: initdb.c:2669 #, c-format msgid "" "%s initializes a PostgreSQL database cluster.\n" @@ -482,17 +483,17 @@ msgstr "" "%s инициализирует клаÑтер PostgreSQL.\n" "\n" -#: initdb.c:2649 +#: initdb.c:2670 #, c-format msgid "Usage:\n" msgstr "ИÑпользование:\n" -#: initdb.c:2650 +#: initdb.c:2671 #, c-format msgid " %s [OPTION]... [DATADIR]\n" msgstr " %s [ПÐРÐМЕТР]... [КÐТÐЛОГ]\n" -#: initdb.c:2651 +#: initdb.c:2672 #, c-format msgid "" "\n" @@ -501,7 +502,7 @@ msgstr "" "\n" "Параметры:\n" -#: initdb.c:2652 +#: initdb.c:2673 #, c-format msgid "" " -A, --auth=METHOD default authentication method for local " @@ -510,7 +511,7 @@ msgstr "" " -A, --auth=МЕТОД метод проверки подлинноÑти по умолчанию\n" " Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… подключений\n" -#: initdb.c:2653 +#: initdb.c:2674 #, c-format msgid "" " --auth-host=METHOD default authentication method for local TCP/IP " @@ -519,7 +520,7 @@ msgstr "" " --auth-host=МЕТОД метод проверки подлинноÑти по умолчанию\n" " Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… TCP/IP-подключений\n" -#: initdb.c:2654 +#: initdb.c:2675 #, c-format msgid "" " --auth-local=METHOD default authentication method for local-socket " @@ -528,22 +529,22 @@ msgstr "" " --auth-local=МЕТОД метод проверки подлинноÑти по умолчанию\n" " Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… подключений через Ñокет\n" -#: initdb.c:2655 +#: initdb.c:2676 #, c-format msgid " [-D, --pgdata=]DATADIR location for this database cluster\n" msgstr " [-D, --pgdata=]КÐТÐЛОГ раÑположение данных Ñтого клаÑтера БД\n" -#: initdb.c:2656 +#: initdb.c:2677 #, c-format msgid " -E, --encoding=ENCODING set default encoding for new databases\n" msgstr " -E, --encoding=КОДИРОВКРкодировка по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… баз\n" -#: initdb.c:2657 +#: initdb.c:2678 #, c-format msgid " --locale=LOCALE set default locale for new databases\n" msgstr " --locale=ЛОКÐЛЬ локаль по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… баз\n" -#: initdb.c:2658 +#: initdb.c:2679 #, c-format msgid "" " --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n" @@ -557,19 +558,19 @@ msgstr "" " уÑтановить ÑоответÑтвующий параметр локали\n" " Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… баз (вмеÑто Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸Ð· окружениÑ)\n" -#: initdb.c:2662 +#: initdb.c:2683 #, c-format msgid " --no-locale equivalent to --locale=C\n" msgstr " --no-locale Ñквивалентно --locale=C\n" -#: initdb.c:2663 +#: initdb.c:2684 #, c-format msgid "" " --pwfile=FILE read password for the new superuser from file\n" msgstr "" " --pwfile=ФÐЙЛ прочитать пароль ÑÑƒÐ¿ÐµÑ€Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð· файла\n" -#: initdb.c:2664 +#: initdb.c:2685 #, c-format msgid "" " -T, --text-search-config=CFG\n" @@ -578,24 +579,24 @@ msgstr "" " -T, --text-search-config=КОÐФИГУРÐЦИЯ\n" " ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñ‚ÐµÐºÑтового поиÑка по умолчанию\n" -#: initdb.c:2666 +#: initdb.c:2687 #, c-format msgid " -U, --username=NAME database superuser name\n" msgstr " -U, --username=ИМЯ Ð¸Ð¼Ñ ÑÑƒÐ¿ÐµÑ€Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð‘Ð”\n" -#: initdb.c:2667 +#: initdb.c:2688 #, c-format msgid "" " -W, --pwprompt prompt for a password for the new superuser\n" msgstr " -W, --pwprompt запроÑить пароль ÑуперпользователÑ\n" -#: initdb.c:2668 +#: initdb.c:2689 #, c-format msgid "" " -X, --xlogdir=XLOGDIR location for the transaction log directory\n" msgstr " -X, --xlogdir=КÐТÐЛОГ раÑположение журнала транзакций\n" -#: initdb.c:2669 +#: initdb.c:2690 #, c-format msgid "" "\n" @@ -604,27 +605,27 @@ msgstr "" "\n" "Редко иÑпользуемые параметры:\n" -#: initdb.c:2670 +#: initdb.c:2691 #, c-format msgid " -d, --debug generate lots of debugging output\n" msgstr " -d, --debug выдавать много отладочных Ñообщений\n" -#: initdb.c:2671 +#: initdb.c:2692 #, c-format msgid " -k, --data-checksums use data page checksums\n" msgstr " -k, --data-checksums включить контроль целоÑтноÑти Ñтраниц\n" -#: initdb.c:2672 +#: initdb.c:2693 #, c-format msgid " -L DIRECTORY where to find the input files\n" msgstr " -L КÐТÐЛОГ раÑположение входных файлов\n" -#: initdb.c:2673 +#: initdb.c:2694 #, c-format msgid " -n, --noclean do not clean up after errors\n" msgstr " -n, --noclean не очищать поÑле ошибок\n" -#: initdb.c:2674 +#: initdb.c:2695 #, c-format msgid "" " -N, --nosync do not wait for changes to be written safely to " @@ -632,18 +633,18 @@ msgid "" msgstr "" " -N, --nosync не ждать Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… на диÑке\n" -#: initdb.c:2675 +#: initdb.c:2696 #, c-format msgid " -s, --show show internal settings\n" -msgstr " -s, --show показать внутренние наÑтройки\n" +msgstr " -s, --show показать внутренние уÑтановки\n" -#: initdb.c:2676 +#: initdb.c:2697 #, c-format msgid " -S, --sync-only only sync data directory\n" msgstr "" " -S, --sync-only только Ñинхронизировать Ñ Ð¤Ð¡ каталог данных\n" -#: initdb.c:2677 +#: initdb.c:2698 #, c-format msgid "" "\n" @@ -652,17 +653,17 @@ msgstr "" "\n" "Другие параметры:\n" -#: initdb.c:2678 +#: initdb.c:2699 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version показать верÑию и выйти\n" -#: initdb.c:2679 +#: initdb.c:2700 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help показать Ñту Ñправку и выйти\n" -#: initdb.c:2680 +#: initdb.c:2701 #, c-format msgid "" "\n" @@ -672,7 +673,7 @@ msgstr "" "\n" "ЕÑли каталог данных не указан, иÑпользуетÑÑ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ PGDATA.\n" -#: initdb.c:2682 +#: initdb.c:2703 #, c-format msgid "" "\n" @@ -681,7 +682,7 @@ msgstr "" "\n" "Об ошибках Ñообщайте по адреÑу .\n" -#: initdb.c:2690 +#: initdb.c:2711 msgid "" "\n" "WARNING: enabling \"trust\" authentication for local connections\n" @@ -695,20 +696,20 @@ msgstr "" "A,\n" "--auth-local или --auth-host при Ñледующем выполнении initdb.\n" -#: initdb.c:2712 +#: initdb.c:2733 #, c-format msgid "%s: invalid authentication method \"%s\" for \"%s\" connections\n" msgstr "" "%s: нераÑпознанный метод проверки подлинноÑти \"%s\" Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹ \"%s\"\n" -#: initdb.c:2726 +#: initdb.c:2747 #, c-format msgid "" "%s: must specify a password for the superuser to enable %s authentication\n" msgstr "" "%s: Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° %s необходимо указать пароль ÑуперпользователÑ\n" -#: initdb.c:2753 +#: initdb.c:2774 #, c-format msgid "" "%s: no data directory specified\n" @@ -716,12 +717,12 @@ msgid "" "will reside. Do this with either the invocation option -D or the\n" "environment variable PGDATA.\n" msgstr "" -"%s: каталог данных не определён\n" +"%s: каталог данных не определён.\n" "Ð’Ñ‹ должны указать, где будут раÑполагатьÑÑ Ð´Ð°Ð½Ð½Ñ‹Ðµ Ñтой СУБД.\n" "Это можно Ñделать, добавив ключ -D или уÑтановив переменную\n" "Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ PGDATA.\n" -#: initdb.c:2791 +#: initdb.c:2812 #, c-format msgid "" "The program \"postgres\" is needed by %s but was not found in the\n" @@ -730,9 +731,9 @@ msgid "" msgstr "" "Программа \"postgres\" нужна Ð´Ð»Ñ %s, но она не найдена\n" "в каталоге \"%s\".\n" -"Проверьте вашу уÑтановку PostgreSQL.\n" +"Проверьте правильноÑть уÑтановки СУБД.\n" -#: initdb.c:2798 +#: initdb.c:2819 #, c-format msgid "" "The program \"postgres\" was found by \"%s\"\n" @@ -741,19 +742,19 @@ msgid "" msgstr "" "Программа \"postgres\" найдена в \"%s\",\n" "но её верÑÐ¸Ñ Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÐµÑ‚ÑÑ Ð¾Ñ‚ верÑии %s.\n" -"Проверьте вашу уÑтановку PostgreSQL.\n" +"Проверьте правильноÑть уÑтановки СУБД.\n" -#: initdb.c:2817 +#: initdb.c:2838 #, c-format msgid "%s: input file location must be an absolute path\n" msgstr "%s: раÑположение входных файлов должно задаватьÑÑ Ð°Ð±Ñолютным путём\n" -#: initdb.c:2836 +#: initdb.c:2857 #, c-format msgid "The database cluster will be initialized with locale \"%s\".\n" msgstr "КлаÑтер баз данных будет инициализирован Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÑŽ \"%s\".\n" -#: initdb.c:2839 +#: initdb.c:2860 #, c-format msgid "" "The database cluster will be initialized with locales\n" @@ -772,22 +773,22 @@ msgstr "" " NUMERIC: %s\n" " TIME: %s\n" -#: initdb.c:2863 +#: initdb.c:2884 #, c-format msgid "%s: could not find suitable encoding for locale \"%s\"\n" msgstr "%s: не удалоÑÑŒ найти подходÑщую кодировку Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ \"%s\"\n" -#: initdb.c:2865 +#: initdb.c:2886 #, c-format msgid "Rerun %s with the -E option.\n" msgstr "ПерезапуÑтите %s Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -E.\n" -#: initdb.c:2866 initdb.c:3487 initdb.c:3508 +#: initdb.c:2887 initdb.c:3508 initdb.c:3529 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Ð”Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации попробуйте \"%s --help\".\n" -#: initdb.c:2878 +#: initdb.c:2899 #, c-format msgid "" "Encoding \"%s\" implied by locale is not allowed as a server-side encoding.\n" @@ -796,12 +797,12 @@ msgstr "" "Кодировка \"%s\", Ð¿Ð¾Ð´Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ²Ð°ÐµÐ¼Ð°Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÑŽ, не годитÑÑ Ð´Ð»Ñ Ñервера.\n" "ВмеÑто неё в качеÑтве кодировки БД по умолчанию будет выбрана \"%s\".\n" -#: initdb.c:2886 +#: initdb.c:2907 #, c-format msgid "%s: locale \"%s\" requires unsupported encoding \"%s\"\n" msgstr "%s: Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ \"%s\" требуетÑÑ Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ° \"%s\"\n" -#: initdb.c:2889 +#: initdb.c:2910 #, c-format msgid "" "Encoding \"%s\" is not allowed as a server-side encoding.\n" @@ -810,13 +811,13 @@ msgstr "" "Кодировка \"%s\" недопуÑтима в качеÑтве кодировки Ñервера.\n" "ПерезапуÑтите %s, выбрав другую локаль.\n" -#: initdb.c:2898 +#: initdb.c:2919 #, c-format msgid "The default database encoding has accordingly been set to \"%s\".\n" msgstr "" "Кодировка БД по умолчанию, Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð°Ñ Ð² ÑоответÑтвии Ñ Ð½Ð°Ñтройками: \"%s\".\n" -#: initdb.c:2969 +#: initdb.c:2990 #, c-format msgid "" "%s: could not find suitable text search configuration for locale \"%s\"\n" @@ -824,7 +825,7 @@ msgstr "" "%s: не удалоÑÑŒ найти подходÑщую конфигурацию текÑтового поиÑка Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ " "\"%s\"\n" -#: initdb.c:2980 +#: initdb.c:3001 #, c-format msgid "" "%s: warning: suitable text search configuration for locale \"%s\" is " @@ -833,7 +834,7 @@ msgstr "" "%s: внимание: Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ \"%s\" нет извеÑтной конфигурации текÑтового " "поиÑка\n" -#: initdb.c:2985 +#: initdb.c:3006 #, c-format msgid "" "%s: warning: specified text search configuration \"%s\" might not match " @@ -842,37 +843,37 @@ msgstr "" "%s: внимание: ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñ‚ÐµÐºÑтового поиÑка \"%s\" может не " "ÑоответÑтвовать локали \"%s\"\n" -#: initdb.c:2990 +#: initdb.c:3011 #, c-format msgid "The default text search configuration will be set to \"%s\".\n" msgstr "Выбрана ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñ‚ÐµÐºÑтового поиÑка по умолчанию \"%s\".\n" -#: initdb.c:3034 initdb.c:3120 +#: initdb.c:3055 initdb.c:3141 #, c-format msgid "creating directory %s ... " msgstr "Ñоздание каталога %s... " -#: initdb.c:3040 initdb.c:3126 initdb.c:3194 initdb.c:3250 +#: initdb.c:3061 initdb.c:3147 initdb.c:3215 initdb.c:3271 #, c-format msgid "%s: could not create directory \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ Ñоздать каталог \"%s\": %s\n" -#: initdb.c:3052 initdb.c:3138 +#: initdb.c:3073 initdb.c:3159 #, c-format msgid "fixing permissions on existing directory %s ... " msgstr "иÑправление прав Ð´Ð»Ñ ÑущеÑтвующего каталога %s... " -#: initdb.c:3058 initdb.c:3144 +#: initdb.c:3079 initdb.c:3165 #, c-format msgid "%s: could not change permissions of directory \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ поменÑть права Ð´Ð»Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° \"%s\": %s\n" -#: initdb.c:3073 initdb.c:3159 +#: initdb.c:3094 initdb.c:3180 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" msgstr "%s: каталог \"%s\" ÑущеÑтвует, но он не пуÑÑ‚\n" -#: initdb.c:3079 +#: initdb.c:3100 #, c-format msgid "" "If you want to create a new database system, either remove or empty\n" @@ -883,19 +884,19 @@ msgstr "" "удалите или очиÑтите каталог \"%s\",\n" "либо при запуÑке %s в качеÑтве пути укажите не \"%s\".\n" -#: initdb.c:3087 initdb.c:3172 initdb.c:3521 +#: initdb.c:3108 initdb.c:3193 initdb.c:3542 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: нет доÑтупа к каталогу \"%s\": %s\n" -#: initdb.c:3111 +#: initdb.c:3132 #, c-format msgid "%s: transaction log directory location must be an absolute path\n" msgstr "" "%s: раÑположение каталога журнала транзакций должно определÑтьÑÑ Ð°Ð±Ñолютным " "путём\n" -#: initdb.c:3165 +#: initdb.c:3186 #, c-format msgid "" "If you want to store the transaction log there, either\n" @@ -904,17 +905,17 @@ msgstr "" "ЕÑли вы хотите хранить журнал транзакций здеÑÑŒ,\n" "удалите или очиÑтите каталог \"%s\".\n" -#: initdb.c:3180 +#: initdb.c:3201 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ Ñоздать ÑимволичеÑкую ÑÑылку \"%s\": %s\n" -#: initdb.c:3185 +#: initdb.c:3206 #, c-format msgid "%s: symlinks are not supported on this platform" msgstr "%s: ÑимволичеÑкие ÑÑылки не поддерживаютÑÑ Ð² Ñтой ОС" -#: initdb.c:3209 +#: initdb.c:3230 #, c-format msgid "" "It contains a dot-prefixed/invisible file, perhaps due to it being a mount " @@ -922,13 +923,13 @@ msgid "" msgstr "" "Он Ñодержит файл Ñ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹ (невидимый), возможно Ñто точка монтированиÑ.\n" -#: initdb.c:3212 +#: initdb.c:3233 #, c-format msgid "" "It contains a lost+found directory, perhaps due to it being a mount point.\n" msgstr "Он Ñодержит подкаталог lost+found, возможно Ñто точка монтированиÑ.\n" -#: initdb.c:3215 +#: initdb.c:3236 #, c-format msgid "" "Using a mount point directly as the data directory is not recommended.\n" @@ -938,38 +939,38 @@ msgstr "" "рекомендуетÑÑ.\n" "Создайте в монтируемом реÑурÑе подкаталог и иÑпользуйте его.\n" -#: initdb.c:3235 +#: initdb.c:3256 #, c-format msgid "creating subdirectories ... " msgstr "Ñоздание подкаталогов... " -#: initdb.c:3282 +#: initdb.c:3303 msgid "performing post-bootstrap initialization ... " msgstr "выполнÑетÑÑ Ð·Ð°ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ ... " -#: initdb.c:3431 +#: initdb.c:3452 #, c-format msgid "Running in debug mode.\n" msgstr "Программа запущена в режиме отладки.\n" -#: initdb.c:3435 +#: initdb.c:3456 #, c-format msgid "Running in noclean mode. Mistakes will not be cleaned up.\n" msgstr "" "Программа запущена в режим 'noclean' - очиÑтки и иÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾ÑˆÐ¸Ð±Ð¾Ðº не " "будет.\n" -#: initdb.c:3506 +#: initdb.c:3527 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: Ñлишком много аргументов командной Ñтроки (первый: \"%s\")\n" -#: initdb.c:3532 +#: initdb.c:3553 #, c-format msgid "%s: password prompt and password file cannot be specified together\n" msgstr "%s: Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾ запроÑить пароль и прочитать пароль из файла\n" -#: initdb.c:3556 +#: initdb.c:3577 #, c-format msgid "" "%s: superuser name \"%s\" is disallowed; role names cannot begin with \"pg_" @@ -978,7 +979,7 @@ msgstr "" "%s: Ð¸Ð¼Ñ \"%s\" Ð´Ð»Ñ ÑÑƒÐ¿ÐµÑ€Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ допуÑкаетÑÑ; имена ролей не могут " "начинатьÑÑ Ñ \"pg_\"\n" -#: initdb.c:3560 +#: initdb.c:3581 #, c-format msgid "" "The files belonging to this database system will be owned by user \"%s\".\n" @@ -989,17 +990,17 @@ msgstr "" "От его имени также будет запуÑкатьÑÑ Ð¿Ñ€Ð¾Ñ†ÐµÑÑ Ñервера.\n" "\n" -#: initdb.c:3576 +#: initdb.c:3597 #, c-format msgid "Data page checksums are enabled.\n" -msgstr "Контроль целоÑтноÑти Ñтраниц данных включен.\n" +msgstr "Контроль целоÑтноÑти Ñтраниц данных включён.\n" -#: initdb.c:3578 +#: initdb.c:3599 #, c-format msgid "Data page checksums are disabled.\n" -msgstr "Контроль целоÑтноÑти Ñтраниц данных отключен.\n" +msgstr "Контроль целоÑтноÑти Ñтраниц данных отключён.\n" -#: initdb.c:3590 +#: initdb.c:3611 #, c-format msgid "" "\n" @@ -1010,7 +1011,7 @@ msgstr "" "Сохранение данных на диÑк пропуÑкаетÑÑ.\n" "Каталог данных может повредитьÑÑ Ð¿Ñ€Ð¸ Ñбое операционной ÑиÑтемы.\n" -#: initdb.c:3599 +#: initdb.c:3620 #, c-format msgid "" "\n" diff --git a/src/bin/pg_archivecleanup/pg_archivecleanup.c b/src/bin/pg_archivecleanup/pg_archivecleanup.c index 2b3d15dd58..c5ce4ecd3c 100644 --- a/src/bin/pg_archivecleanup/pg_archivecleanup.c +++ b/src/bin/pg_archivecleanup/pg_archivecleanup.c @@ -32,7 +32,7 @@ char *additional_ext = NULL; /* Extension to remove from filenames */ char *archiveLocation; /* where to find the archive? */ char *restartWALFileName; /* the file from which we can restart restore */ -char WALFilePath[MAXPGPATH]; /* the file path including archive */ +char WALFilePath[MAXPGPATH * 2]; /* the file path including archive */ char exclusiveCleanupFileName[MAXFNAMELEN]; /* the oldest file we * want to remain in * archive */ @@ -133,7 +133,7 @@ CleanupPriorWALFiles(void) * extension that might have been chopped off before testing * the sequence. */ - snprintf(WALFilePath, MAXPGPATH, "%s/%s", + snprintf(WALFilePath, sizeof(WALFilePath), "%s/%s", archiveLocation, xlde->d_name); if (dryrun) diff --git a/src/bin/pg_basebackup/pg_basebackup.c b/src/bin/pg_basebackup/pg_basebackup.c index 80d9dd8c5f..4e3a45f989 100644 --- a/src/bin/pg_basebackup/pg_basebackup.c +++ b/src/bin/pg_basebackup/pg_basebackup.c @@ -240,7 +240,7 @@ usage(void) printf(_(" -r, --max-rate=RATE maximum transfer rate to transfer data directory\n" " (in kB/s, or use suffix \"k\" or \"M\")\n")); printf(_(" -R, --write-recovery-conf\n" - " write recovery.conf after backup\n")); + " write recovery.conf for replication\n")); printf(_(" -S, --slot=SLOTNAME replication slot to use\n")); printf(_(" -T, --tablespace-mapping=OLDDIR=NEWDIR\n" " relocate tablespace in OLDDIR to NEWDIR\n")); @@ -806,6 +806,10 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum) */ if (strcmp(basedir, "-") == 0) { +#ifdef WIN32 + _setmode(fileno(stdout), _O_BINARY); +#endif + #ifdef HAVE_LIBZ if (compresslevel != 0) { @@ -1661,6 +1665,14 @@ BaseBackup(void) if (maxrate > 0) maxrate_clause = psprintf("MAX_RATE %u", maxrate); + if (verbose) + fprintf(stderr, + _("%s: initiating base backup, waiting for checkpoint to complete\n"), + progname); + + if (showprogress && !verbose) + fprintf(stderr, "waiting for checkpoint\r"); + basebkp = psprintf("BASE_BACKUP LABEL '%s' %s %s %s %s %s %s", escaped_label, @@ -1698,6 +1710,9 @@ BaseBackup(void) strlcpy(xlogstart, PQgetvalue(res, 0, 0), sizeof(xlogstart)); + if (verbose) + fprintf(stderr, _("%s: checkpoint completed\n"), progname); + /* * 9.3 and later sends the TLI of the starting point. With older servers, * assume it's the same as the latest timeline reported by diff --git a/src/bin/pg_basebackup/pg_receivexlog.c b/src/bin/pg_basebackup/pg_receivexlog.c index 7f7ee9dc9b..11f2b794ff 100644 --- a/src/bin/pg_basebackup/pg_receivexlog.c +++ b/src/bin/pg_basebackup/pg_receivexlog.c @@ -210,7 +210,7 @@ FindStreamingStart(uint32 *tli) if (!ispartial) { struct stat statbuf; - char fullpath[MAXPGPATH]; + char fullpath[MAXPGPATH * 2]; snprintf(fullpath, sizeof(fullpath), "%s/%s", basedir, dirent->d_name); if (stat(fullpath, &statbuf) != 0) diff --git a/src/bin/pg_basebackup/po/de.po b/src/bin/pg_basebackup/po/de.po index 59e12e3698..1d5c3d99d2 100644 --- a/src/bin/pg_basebackup/po/de.po +++ b/src/bin/pg_basebackup/po/de.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-04-12 20:14+0000\n" -"PO-Revision-Date: 2016-04-12 20:49-0400\n" +"POT-Creation-Date: 2017-05-07 21:23+0000\n" +"PO-Revision-Date: 2017-05-08 08:27-0400\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: Peter Eisentraut \n" "Language: de\n" @@ -30,32 +30,32 @@ msgstr "Speicher aufgebraucht\n" msgid "cannot duplicate null pointer (internal error)\n" msgstr "kann NULL-Zeiger nicht kopieren (interner Fehler)\n" -#: pg_basebackup.c:154 +#: pg_basebackup.c:156 #, c-format msgid "%s: directory name too long\n" msgstr "%s: Verzeichnisname zu lang\n" -#: pg_basebackup.c:164 +#: pg_basebackup.c:166 #, c-format msgid "%s: multiple \"=\" signs in tablespace mapping\n" msgstr "%s: mehrere »=«-Zeichen im Tablespace-Mapping\n" -#: pg_basebackup.c:177 +#: pg_basebackup.c:179 #, c-format msgid "%s: invalid tablespace mapping format \"%s\", must be \"OLDDIR=NEWDIR\"\n" msgstr "%s: ungültiges Tablespace-Mapping-Format »%s«, muss »ALTES_VERZ=NEUES_VERZ« sein\n" -#: pg_basebackup.c:190 +#: pg_basebackup.c:192 #, c-format msgid "%s: old directory is not an absolute path in tablespace mapping: %s\n" msgstr "%s: altes Verzeichnis im Tablespace-Mapping ist kein absoluter Pfad: %s\n" -#: pg_basebackup.c:197 +#: pg_basebackup.c:199 #, c-format msgid "%s: new directory is not an absolute path in tablespace mapping: %s\n" msgstr "%s: neues Verzeichnis im Tablespace-Mapping ist kein absoluter Pfad: %s\n" -#: pg_basebackup.c:231 +#: pg_basebackup.c:233 #, c-format msgid "" "%s takes a base backup of a running PostgreSQL server.\n" @@ -64,17 +64,17 @@ msgstr "" "%s erzeugt eine Basissicherung eines laufenden PostgreSQL-Servers.\n" "\n" -#: pg_basebackup.c:233 pg_receivexlog.c:66 pg_recvlogical.c:69 +#: pg_basebackup.c:235 pg_receivexlog.c:66 pg_recvlogical.c:72 #, c-format msgid "Usage:\n" msgstr "Aufruf:\n" -#: pg_basebackup.c:234 pg_receivexlog.c:67 pg_recvlogical.c:70 +#: pg_basebackup.c:236 pg_receivexlog.c:67 pg_recvlogical.c:73 #, c-format msgid " %s [OPTION]...\n" msgstr " %s [OPTION]...\n" -#: pg_basebackup.c:235 +#: pg_basebackup.c:237 #, c-format msgid "" "\n" @@ -83,17 +83,17 @@ msgstr "" "\n" "Optionen, die die Ausgabe kontrollieren:\n" -#: pg_basebackup.c:236 +#: pg_basebackup.c:238 #, c-format msgid " -D, --pgdata=DIRECTORY receive base backup into directory\n" msgstr " -D, --pgdata=VERZ Basissicherung in dieses Verzeichnis empfangen\n" -#: pg_basebackup.c:237 +#: pg_basebackup.c:239 #, c-format msgid " -F, --format=p|t output format (plain (default), tar)\n" msgstr " -F, --format=p|t Ausgabeformat (plain (Voreinstellung), tar)\n" -#: pg_basebackup.c:238 +#: pg_basebackup.c:240 #, c-format msgid "" " -r, --max-rate=RATE maximum transfer rate to transfer data directory\n" @@ -102,21 +102,21 @@ msgstr "" " -r, --max-rate=RATE maximale Transferrate für Übertragung des Datenver-\n" " zeichnisses (in kB/s, oder Suffix »k« oder »M« abgeben)\n" -#: pg_basebackup.c:240 +#: pg_basebackup.c:242 #, c-format msgid "" " -R, --write-recovery-conf\n" -" write recovery.conf after backup\n" +" write recovery.conf for replication\n" msgstr "" " -R, --write-recovery-conf\n" -" recovery.conf schreiben nach der Sicherung\n" +" recovery.conf für Replikation schreiben\n" -#: pg_basebackup.c:242 pg_receivexlog.c:74 +#: pg_basebackup.c:244 pg_receivexlog.c:74 #, c-format msgid " -S, --slot=SLOTNAME replication slot to use\n" msgstr " -S, --slot=SLOTNAME zu verwendender Replikations-Slot\n" -#: pg_basebackup.c:243 +#: pg_basebackup.c:245 #, c-format msgid "" " -T, --tablespace-mapping=OLDDIR=NEWDIR\n" @@ -125,14 +125,14 @@ msgstr "" " -T, --tablespace-mapping=ALTES_VERZ=NEUES_VERZ\n" " Tablespace in ALTES_VERZ nach NEUES_VERZ verlagern\n" -#: pg_basebackup.c:245 +#: pg_basebackup.c:247 #, c-format msgid " -x, --xlog include required WAL files in backup (fetch mode)\n" msgstr "" " -x, --xlog benötigte WAL-Dateien in Sicherung einbeziehen\n" " (Fetch-Modus)\n" -#: pg_basebackup.c:246 +#: pg_basebackup.c:248 #, c-format msgid "" " -X, --xlog-method=fetch|stream\n" @@ -141,22 +141,22 @@ msgstr "" " -X, --xlog-method=fetch|stream\n" " benötigte WAL-Dateien mit angegebener Methode einbeziehen\n" -#: pg_basebackup.c:248 +#: pg_basebackup.c:250 #, c-format msgid " --xlogdir=XLOGDIR location for the transaction log directory\n" msgstr " --xlogdir=XLOGVERZ Verzeichnis für das Transaktionslog\n" -#: pg_basebackup.c:249 +#: pg_basebackup.c:251 #, c-format msgid " -z, --gzip compress tar output\n" msgstr " -z, --gzip Tar-Ausgabe komprimieren\n" -#: pg_basebackup.c:250 +#: pg_basebackup.c:252 #, c-format msgid " -Z, --compress=0-9 compress tar output with given compression level\n" msgstr " -Z, --compress=0-9 Tar-Ausgabe mit angegebenem Niveau komprimieren\n" -#: pg_basebackup.c:251 +#: pg_basebackup.c:253 #, c-format msgid "" "\n" @@ -165,7 +165,7 @@ msgstr "" "\n" "Allgemeine Optionen:\n" -#: pg_basebackup.c:252 +#: pg_basebackup.c:254 #, c-format msgid "" " -c, --checkpoint=fast|spread\n" @@ -174,32 +174,32 @@ msgstr "" " -c, --checkpoint=fast|spread\n" " schnelles oder verteiltes Checkpointing einstellen\n" -#: pg_basebackup.c:254 +#: pg_basebackup.c:256 #, c-format msgid " -l, --label=LABEL set backup label\n" msgstr " -l, --label=LABEL Backup-Label setzen\n" -#: pg_basebackup.c:255 +#: pg_basebackup.c:257 #, c-format msgid " -P, --progress show progress information\n" msgstr " -P, --progress Fortschrittsinformationen zeigen\n" -#: pg_basebackup.c:256 pg_receivexlog.c:76 pg_recvlogical.c:89 +#: pg_basebackup.c:258 pg_receivexlog.c:76 pg_recvlogical.c:92 #, c-format msgid " -v, --verbose output verbose messages\n" msgstr " -v, --verbose »Verbose«-Modus\n" -#: pg_basebackup.c:257 pg_receivexlog.c:77 pg_recvlogical.c:90 +#: pg_basebackup.c:259 pg_receivexlog.c:77 pg_recvlogical.c:93 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version Versionsinformationen anzeigen, dann beenden\n" -#: pg_basebackup.c:258 pg_receivexlog.c:78 pg_recvlogical.c:91 +#: pg_basebackup.c:260 pg_receivexlog.c:78 pg_recvlogical.c:94 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help diese Hilfe anzeigen, dann beenden\n" -#: pg_basebackup.c:259 pg_receivexlog.c:79 pg_recvlogical.c:92 +#: pg_basebackup.c:261 pg_receivexlog.c:79 pg_recvlogical.c:95 #, c-format msgid "" "\n" @@ -208,22 +208,22 @@ msgstr "" "\n" "Verbindungsoptionen:\n" -#: pg_basebackup.c:260 pg_receivexlog.c:80 +#: pg_basebackup.c:262 pg_receivexlog.c:80 #, c-format msgid " -d, --dbname=CONNSTR connection string\n" msgstr " -d, --dbname=VERBDG Verbindungsparameter\n" -#: pg_basebackup.c:261 pg_receivexlog.c:81 pg_recvlogical.c:94 +#: pg_basebackup.c:263 pg_receivexlog.c:81 pg_recvlogical.c:97 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=HOSTNAME Name des Datenbankservers oder Socket-Verzeichnis\n" -#: pg_basebackup.c:262 pg_receivexlog.c:82 pg_recvlogical.c:95 +#: pg_basebackup.c:264 pg_receivexlog.c:82 pg_recvlogical.c:98 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=PORT Portnummer des Datenbankservers\n" -#: pg_basebackup.c:263 +#: pg_basebackup.c:265 #, c-format msgid "" " -s, --status-interval=INTERVAL\n" @@ -232,22 +232,22 @@ msgstr "" " -s, --status-interval=INTERVALL\n" " Zeit zwischen an Server gesendeten Statuspaketen (in Sekunden)\n" -#: pg_basebackup.c:265 pg_receivexlog.c:83 pg_recvlogical.c:96 +#: pg_basebackup.c:267 pg_receivexlog.c:83 pg_recvlogical.c:99 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=NAME Datenbankbenutzername\n" -#: pg_basebackup.c:266 pg_receivexlog.c:84 pg_recvlogical.c:97 +#: pg_basebackup.c:268 pg_receivexlog.c:84 pg_recvlogical.c:100 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password niemals nach Passwort fragen\n" -#: pg_basebackup.c:267 pg_receivexlog.c:85 pg_recvlogical.c:98 +#: pg_basebackup.c:269 pg_receivexlog.c:85 pg_recvlogical.c:101 #, c-format msgid " -W, --password force password prompt (should happen automatically)\n" msgstr " -W, --password nach Passwort fragen (sollte automatisch geschehen)\n" -#: pg_basebackup.c:268 pg_receivexlog.c:89 pg_recvlogical.c:99 +#: pg_basebackup.c:270 pg_receivexlog.c:89 pg_recvlogical.c:102 #, c-format msgid "" "\n" @@ -256,374 +256,384 @@ msgstr "" "\n" "Berichten Sie Fehler an .\n" -#: pg_basebackup.c:311 +#: pg_basebackup.c:313 #, c-format msgid "%s: could not read from ready pipe: %s\n" msgstr "%s: konnte nicht aus bereiter Pipe lesen: %s\n" -#: pg_basebackup.c:319 pg_basebackup.c:422 pg_basebackup.c:1887 -#: streamutil.c:285 +#: pg_basebackup.c:321 pg_basebackup.c:424 pg_basebackup.c:1906 +#: streamutil.c:293 #, c-format msgid "%s: could not parse transaction log location \"%s\"\n" msgstr "%s: konnte Transaktionslogposition »%s« nicht interpretieren\n" -#: pg_basebackup.c:435 +#: pg_basebackup.c:437 #, c-format msgid "%s: could not create pipe for background process: %s\n" msgstr "%s: konnte Pipe für Hintergrundprozess nicht erzeugen: %s\n" -#: pg_basebackup.c:460 pg_basebackup.c:515 pg_basebackup.c:1263 +#: pg_basebackup.c:462 pg_basebackup.c:517 pg_basebackup.c:1265 #, c-format msgid "%s: could not create directory \"%s\": %s\n" msgstr "%s: konnte Verzeichnis »%s« nicht erzeugen: %s\n" -#: pg_basebackup.c:478 +#: pg_basebackup.c:480 #, c-format msgid "%s: could not create background process: %s\n" msgstr "%s: konnte Hintergrundprozess nicht erzeugen: %s\n" -#: pg_basebackup.c:490 +#: pg_basebackup.c:492 #, c-format msgid "%s: could not create background thread: %s\n" msgstr "%s: konnte Hintergrund-Thread nicht erzeugen: %s\n" -#: pg_basebackup.c:534 +#: pg_basebackup.c:536 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" msgstr "%s: Verzeichnis »%s« existiert aber ist nicht leer\n" -#: pg_basebackup.c:542 +#: pg_basebackup.c:544 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: konnte nicht auf Verzeichnis »%s« zugreifen: %s\n" -#: pg_basebackup.c:604 +#: pg_basebackup.c:606 #, c-format msgid "%*s/%s kB (100%%), %d/%d tablespace %*s" msgid_plural "%*s/%s kB (100%%), %d/%d tablespaces %*s" msgstr[0] "%*s/%s kB (100%%), %d/%d Tablespace %*s" msgstr[1] "%*s/%s kB (100%%), %d/%d Tablespaces %*s" -#: pg_basebackup.c:616 +#: pg_basebackup.c:618 #, c-format msgid "%*s/%s kB (%d%%), %d/%d tablespace (%s%-*.*s)" msgid_plural "%*s/%s kB (%d%%), %d/%d tablespaces (%s%-*.*s)" msgstr[0] "%*s/%s kB (%d%%), %d/%d Tablespace (%s%-*.*s)" msgstr[1] "%*s/%s kB (%d%%), %d/%d Tablespaces (%s%-*.*s)" -#: pg_basebackup.c:632 +#: pg_basebackup.c:634 #, c-format msgid "%*s/%s kB (%d%%), %d/%d tablespace" msgid_plural "%*s/%s kB (%d%%), %d/%d tablespaces" msgstr[0] "%*s/%s kB (%d%%), %d/%d Tablespace" msgstr[1] "%*s/%s kB (%d%%), %d/%d Tablespaces" -#: pg_basebackup.c:654 +#: pg_basebackup.c:656 #, c-format msgid "%s: transfer rate \"%s\" is not a valid value\n" msgstr "%s: Transferrate »%s« ist kein gültiger Wert\n" -#: pg_basebackup.c:661 +#: pg_basebackup.c:663 #, c-format msgid "%s: invalid transfer rate \"%s\": %s\n" msgstr "%s: ungültige Transferrate »%s«: %s\n" -#: pg_basebackup.c:671 +#: pg_basebackup.c:673 #, c-format msgid "%s: transfer rate must be greater than zero\n" msgstr "%s: Transferrate muss größer als null sein\n" -#: pg_basebackup.c:705 +#: pg_basebackup.c:707 #, c-format msgid "%s: invalid --max-rate unit: \"%s\"\n" msgstr "%s: ungültige Einheit für --max-rate: »%s«\n" -#: pg_basebackup.c:714 +#: pg_basebackup.c:716 #, c-format msgid "%s: transfer rate \"%s\" exceeds integer range\n" msgstr "%s: Transferrate »%s« überschreitet Bereich für ganze Zahlen\n" -#: pg_basebackup.c:726 +#: pg_basebackup.c:728 #, c-format msgid "%s: transfer rate \"%s\" is out of range\n" msgstr "%s: Transferrate »%s« ist außerhalb des gültigen Bereichs\n" -#: pg_basebackup.c:750 +#: pg_basebackup.c:752 #, c-format msgid "%s: could not write to compressed file \"%s\": %s\n" msgstr "%s: konnte nicht in komprimierte Datei »%s« schreiben: %s\n" -#: pg_basebackup.c:760 pg_basebackup.c:1357 pg_basebackup.c:1582 +#: pg_basebackup.c:762 pg_basebackup.c:1359 pg_basebackup.c:1584 #, c-format msgid "%s: could not write to file \"%s\": %s\n" msgstr "%s: konnte nicht in Datei »%s« schreiben: %s\n" -#: pg_basebackup.c:815 pg_basebackup.c:836 pg_basebackup.c:864 +#: pg_basebackup.c:817 pg_basebackup.c:838 pg_basebackup.c:866 #, c-format msgid "%s: could not set compression level %d: %s\n" msgstr "%s: konnte Komprimierungsniveau %d nicht setzen: %s\n" -#: pg_basebackup.c:885 +#: pg_basebackup.c:887 #, c-format msgid "%s: could not create compressed file \"%s\": %s\n" msgstr "%s: konnte komprimierte Datei »%s« nicht erzeugen: %s\n" -#: pg_basebackup.c:896 pg_basebackup.c:1317 pg_basebackup.c:1575 +#: pg_basebackup.c:898 pg_basebackup.c:1319 pg_basebackup.c:1577 #, c-format msgid "%s: could not create file \"%s\": %s\n" msgstr "%s: konnte Datei »%s« nicht erzeugen: %s\n" -#: pg_basebackup.c:908 pg_basebackup.c:1172 +#: pg_basebackup.c:910 pg_basebackup.c:1174 #, c-format msgid "%s: could not get COPY data stream: %s" msgstr "%s: konnte COPY-Datenstrom nicht empfangen: %s" -#: pg_basebackup.c:965 +#: pg_basebackup.c:967 #, c-format msgid "%s: could not close compressed file \"%s\": %s\n" msgstr "%s: konnte komprimierte Datei »%s« nicht schließen: %s\n" -#: pg_basebackup.c:978 pg_recvlogical.c:577 receivelog.c:203 receivelog.c:351 -#: receivelog.c:738 +#: pg_basebackup.c:980 pg_recvlogical.c:580 receivelog.c:206 receivelog.c:354 +#: receivelog.c:743 #, c-format msgid "%s: could not close file \"%s\": %s\n" msgstr "%s: konnte Datei »%s« nicht schließen: %s\n" -#: pg_basebackup.c:989 pg_basebackup.c:1201 pg_recvlogical.c:443 -#: receivelog.c:1019 +#: pg_basebackup.c:991 pg_basebackup.c:1203 pg_recvlogical.c:446 +#: receivelog.c:1024 #, c-format msgid "%s: could not read COPY data: %s" msgstr "%s: konnte COPY-Daten nicht lesen: %s" -#: pg_basebackup.c:1215 +#: pg_basebackup.c:1217 #, c-format msgid "%s: invalid tar block header size: %d\n" msgstr "%s: ungültige Tar-Block-Kopf-Größe: %d\n" -#: pg_basebackup.c:1271 +#: pg_basebackup.c:1273 #, c-format msgid "%s: could not set permissions on directory \"%s\": %s\n" msgstr "%s: konnte Zugriffsrechte des Verzeichnisses »%s« nicht setzen: %s\n" -#: pg_basebackup.c:1295 +#: pg_basebackup.c:1297 #, c-format msgid "%s: could not create symbolic link from \"%s\" to \"%s\": %s\n" msgstr "%s: konnte symbolische Verknüpfung von »%s« nach »%s« nicht erzeugen: %s\n" -#: pg_basebackup.c:1304 +#: pg_basebackup.c:1306 #, c-format msgid "%s: unrecognized link indicator \"%c\"\n" msgstr "%s: unbekannter Verknüpfungsindikator »%c«\n" -#: pg_basebackup.c:1324 +#: pg_basebackup.c:1326 #, c-format msgid "%s: could not set permissions on file \"%s\": %s\n" msgstr "%s: konnte Rechte der Datei »%s« nicht setzen: %s\n" -#: pg_basebackup.c:1383 +#: pg_basebackup.c:1385 #, c-format msgid "%s: COPY stream ended before last file was finished\n" msgstr "%s: COPY-Strom endete vor dem Ende der letzten Datei\n" -#: pg_basebackup.c:1469 pg_basebackup.c:1489 pg_basebackup.c:1496 -#: pg_basebackup.c:1550 +#: pg_basebackup.c:1471 pg_basebackup.c:1491 pg_basebackup.c:1498 +#: pg_basebackup.c:1552 #, c-format msgid "%s: out of memory\n" msgstr "%s: Speicher aufgebraucht\n" -#: pg_basebackup.c:1627 +#: pg_basebackup.c:1629 #, c-format msgid "%s: incompatible server version %s\n" msgstr "%s: inkompatible Serverversion %s\n" -#: pg_basebackup.c:1674 pg_recvlogical.c:261 receivelog.c:536 receivelog.c:587 -#: receivelog.c:627 streamutil.c:255 streamutil.c:359 streamutil.c:405 +#: pg_basebackup.c:1666 +#, c-format +msgid "%s: initiating base backup, waiting for checkpoint to complete\n" +msgstr "%s: Basissicherung eingeleitet, warte auf Abschluss des Checkpoints\n" + +#: pg_basebackup.c:1684 pg_recvlogical.c:264 receivelog.c:541 receivelog.c:592 +#: receivelog.c:632 streamutil.c:263 streamutil.c:367 streamutil.c:413 #, c-format msgid "%s: could not send replication command \"%s\": %s" msgstr "%s: konnte Replikationsbefehl »%s« nicht senden: %s" -#: pg_basebackup.c:1685 +#: pg_basebackup.c:1695 #, c-format msgid "%s: could not initiate base backup: %s" msgstr "%s: konnte Basissicherung nicht starten: %s" -#: pg_basebackup.c:1692 +#: pg_basebackup.c:1702 #, c-format msgid "%s: server returned unexpected response to BASE_BACKUP command; got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: unerwartete Antwort auf Befehl BASE_BACKUP: %d Zeilen und %d Felder erhalten, %d Zeilen und %d Felder erwartet\n" -#: pg_basebackup.c:1712 +#: pg_basebackup.c:1710 +#, c-format +msgid "%s: checkpoint completed\n" +msgstr "%s: Checkpoint abgeschlossen\n" + +#: pg_basebackup.c:1725 #, c-format msgid "transaction log start point: %s on timeline %u\n" msgstr "Transaktionslog-Startpunkt: %s auf Zeitleiste %u\n" -#: pg_basebackup.c:1721 +#: pg_basebackup.c:1734 #, c-format msgid "%s: could not get backup header: %s" msgstr "%s: konnte Kopf der Sicherung nicht empfangen: %s" -#: pg_basebackup.c:1727 +#: pg_basebackup.c:1740 #, c-format msgid "%s: no data returned from server\n" msgstr "%s: keine Daten vom Server zurückgegeben\n" -#: pg_basebackup.c:1759 +#: pg_basebackup.c:1772 #, c-format msgid "%s: can only write single tablespace to stdout, database has %d\n" msgstr "%s: kann nur einen einzelnen Tablespace auf die Standardausgabe schreiben, Datenbank hat %d\n" -#: pg_basebackup.c:1771 +#: pg_basebackup.c:1784 #, c-format msgid "%s: starting background WAL receiver\n" msgstr "%s: Hintergrund-WAL-Receiver wird gestartet\n" -#: pg_basebackup.c:1802 +#: pg_basebackup.c:1815 #, c-format msgid "%s: could not get transaction log end position from server: %s" msgstr "%s: konnte Transaktionslogendposition nicht vom Server empfangen: %s" -#: pg_basebackup.c:1809 +#: pg_basebackup.c:1822 #, c-format msgid "%s: no transaction log end position returned from server\n" msgstr "%s: kein Transaktionslogendpunkt vom Server zurückgegeben\n" -#: pg_basebackup.c:1821 +#: pg_basebackup.c:1834 #, c-format msgid "%s: final receive failed: %s" msgstr "%s: letztes Empfangen fehlgeschlagen: %s" -#: pg_basebackup.c:1839 +#: pg_basebackup.c:1858 #, c-format msgid "%s: waiting for background process to finish streaming ...\n" msgstr "%s: warte bis Hintergrundprozess Streaming beendet hat ...\n" -#: pg_basebackup.c:1845 +#: pg_basebackup.c:1864 #, c-format msgid "%s: could not send command to background pipe: %s\n" msgstr "%s: konnte Befehl nicht an Hintergrund-Pipe senden: %s\n" -#: pg_basebackup.c:1854 +#: pg_basebackup.c:1873 #, c-format msgid "%s: could not wait for child process: %s\n" msgstr "%s: konnte nicht auf Kindprozess warten: %s\n" -#: pg_basebackup.c:1860 +#: pg_basebackup.c:1879 #, c-format msgid "%s: child %d died, expected %d\n" msgstr "%s: Kindprozess %d endete, aber %d wurde erwartet\n" -#: pg_basebackup.c:1866 +#: pg_basebackup.c:1885 #, c-format msgid "%s: child process did not exit normally\n" msgstr "%s: Kindprozess hat nicht normal beendet\n" -#: pg_basebackup.c:1872 +#: pg_basebackup.c:1891 #, c-format msgid "%s: child process exited with error %d\n" msgstr "%s: Kindprozess hat mit Fehler %d beendet\n" -#: pg_basebackup.c:1899 +#: pg_basebackup.c:1918 #, c-format msgid "%s: could not wait for child thread: %s\n" msgstr "%s: konnte nicht auf Kind-Thread warten: %s\n" -#: pg_basebackup.c:1906 +#: pg_basebackup.c:1925 #, c-format msgid "%s: could not get child thread exit status: %s\n" msgstr "%s: konnte Statuscode des Kind-Threads nicht ermitteln: %s\n" -#: pg_basebackup.c:1912 +#: pg_basebackup.c:1931 #, c-format msgid "%s: child thread exited with error %u\n" msgstr "%s: Kind-Thread hat mit Fehler %u beendet\n" -#: pg_basebackup.c:2002 +#: pg_basebackup.c:2021 #, c-format msgid "%s: invalid output format \"%s\", must be \"plain\" or \"tar\"\n" msgstr "%s: ungültiges Ausgabeformat »%s«, muss »plain« oder »tar« sein\n" -#: pg_basebackup.c:2023 pg_basebackup.c:2035 +#: pg_basebackup.c:2042 pg_basebackup.c:2054 #, c-format msgid "%s: cannot specify both --xlog and --xlog-method\n" msgstr "%s: --xlog und --xlog-method können nicht zusammen verwendet werden\n" -#: pg_basebackup.c:2050 +#: pg_basebackup.c:2069 #, c-format msgid "%s: invalid xlog-method option \"%s\", must be \"fetch\" or \"stream\"\n" msgstr "%s: ungültige Option »%s« für --xlog-method, muss »fetch« oder »stream« sein\n" -#: pg_basebackup.c:2072 +#: pg_basebackup.c:2091 #, c-format msgid "%s: invalid compression level \"%s\"\n" msgstr "%s: ungültiges Komprimierungsniveau »%s«\n" -#: pg_basebackup.c:2084 +#: pg_basebackup.c:2103 #, c-format msgid "%s: invalid checkpoint argument \"%s\", must be \"fast\" or \"spread\"\n" msgstr "%s: ungültiges Checkpoint-Argument »%s«, muss »fast« oder »spread« sein\n" -#: pg_basebackup.c:2111 pg_receivexlog.c:445 pg_recvlogical.c:760 +#: pg_basebackup.c:2130 pg_receivexlog.c:445 pg_recvlogical.c:763 #, c-format msgid "%s: invalid status interval \"%s\"\n" msgstr "%s: ungültiges Statusintervall »%s«\n" -#: pg_basebackup.c:2127 pg_basebackup.c:2141 pg_basebackup.c:2152 -#: pg_basebackup.c:2165 pg_basebackup.c:2175 pg_basebackup.c:2185 -#: pg_basebackup.c:2197 pg_basebackup.c:2208 pg_receivexlog.c:477 +#: pg_basebackup.c:2146 pg_basebackup.c:2160 pg_basebackup.c:2171 +#: pg_basebackup.c:2184 pg_basebackup.c:2194 pg_basebackup.c:2204 +#: pg_basebackup.c:2216 pg_basebackup.c:2227 pg_receivexlog.c:477 #: pg_receivexlog.c:491 pg_receivexlog.c:499 pg_receivexlog.c:509 -#: pg_receivexlog.c:520 pg_recvlogical.c:787 pg_recvlogical.c:801 -#: pg_recvlogical.c:812 pg_recvlogical.c:820 pg_recvlogical.c:828 -#: pg_recvlogical.c:836 pg_recvlogical.c:844 pg_recvlogical.c:852 +#: pg_receivexlog.c:520 pg_recvlogical.c:790 pg_recvlogical.c:804 +#: pg_recvlogical.c:815 pg_recvlogical.c:823 pg_recvlogical.c:831 +#: pg_recvlogical.c:839 pg_recvlogical.c:847 pg_recvlogical.c:855 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Versuchen Sie »%s --help« für weitere Informationen.\n" -#: pg_basebackup.c:2139 pg_receivexlog.c:489 pg_recvlogical.c:799 +#: pg_basebackup.c:2158 pg_receivexlog.c:489 pg_recvlogical.c:802 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: zu viele Kommandozeilenargumente (das erste ist »%s«)\n" -#: pg_basebackup.c:2151 pg_receivexlog.c:519 +#: pg_basebackup.c:2170 pg_receivexlog.c:519 #, c-format msgid "%s: no target directory specified\n" msgstr "%s: kein Zielverzeichnis angegeben\n" -#: pg_basebackup.c:2163 +#: pg_basebackup.c:2182 #, c-format msgid "%s: only tar mode backups can be compressed\n" msgstr "%s: nur Sicherungen im Tar-Modus können komprimiert werden\n" -#: pg_basebackup.c:2173 +#: pg_basebackup.c:2192 #, c-format msgid "%s: WAL streaming can only be used in plain mode\n" msgstr "%s: WAL-Streaming kann nur im »plain«-Modus verwendet werden\n" -#: pg_basebackup.c:2183 +#: pg_basebackup.c:2202 #, c-format msgid "%s: replication slots can only be used with WAL streaming\n" msgstr "%s: Replikations-Slots können nur mit WAL-Streaming verwendet werden\n" -#: pg_basebackup.c:2195 +#: pg_basebackup.c:2214 #, c-format msgid "%s: transaction log directory location can only be specified in plain mode\n" msgstr "%s: Transaktionslogverzeichnis kann nur im »plain«-Modus angegeben werden\n" -#: pg_basebackup.c:2206 +#: pg_basebackup.c:2225 #, c-format msgid "%s: transaction log directory location must be an absolute path\n" msgstr "%s: Transaktionslogverzeichnis muss absoluten Pfad haben\n" -#: pg_basebackup.c:2218 +#: pg_basebackup.c:2237 #, c-format msgid "%s: this build does not support compression\n" msgstr "%s: diese Installation unterstützt keine Komprimierung\n" -#: pg_basebackup.c:2245 +#: pg_basebackup.c:2264 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" msgstr "%s: konnte symbolische Verknüpfung »%s« nicht erzeugen: %s\n" -#: pg_basebackup.c:2250 +#: pg_basebackup.c:2269 #, c-format msgid "%s: symlinks are not supported on this platform\n" msgstr "%s: symbolische Verknüpfungen werden auf dieser Plattform nicht unterstützt\n" @@ -637,7 +647,7 @@ msgstr "" "%s empfängt PostgreSQL-Streaming-Transaktionslogs.\n" "\n" -#: pg_receivexlog.c:68 pg_recvlogical.c:75 +#: pg_receivexlog.c:68 pg_recvlogical.c:78 #, c-format msgid "" "\n" @@ -651,17 +661,17 @@ msgstr "" msgid " -D, --directory=DIR receive transaction log files into this directory\n" msgstr " -D, --directory=VERZ Transaktionslogdateien in dieses Verzeichnis empfangen\n" -#: pg_receivexlog.c:70 pg_recvlogical.c:79 +#: pg_receivexlog.c:70 pg_recvlogical.c:82 #, c-format msgid " --if-not-exists do not error if slot already exists when creating a slot\n" msgstr " --if-not-exists keinen Fehler ausgeben, wenn Slot beim Erzeugen schon existiert\n" -#: pg_receivexlog.c:71 pg_recvlogical.c:81 +#: pg_receivexlog.c:71 pg_recvlogical.c:84 #, c-format msgid " -n, --no-loop do not loop on connection lost\n" msgstr " -n, --no-loop bei Verbindungsverlust nicht erneut probieren\n" -#: pg_receivexlog.c:72 pg_recvlogical.c:86 +#: pg_receivexlog.c:72 pg_recvlogical.c:89 #, c-format msgid "" " -s, --status-interval=SECS\n" @@ -684,12 +694,12 @@ msgstr "" "\n" "Optionale Aktionen:\n" -#: pg_receivexlog.c:87 pg_recvlogical.c:72 +#: pg_receivexlog.c:87 pg_recvlogical.c:75 #, c-format msgid " --create-slot create a new replication slot (for the slot's name see --slot)\n" msgstr " --create-slot neuen Replikations-Slot erzeugen (Slot-Name siehe --slot)\n" -#: pg_receivexlog.c:88 pg_recvlogical.c:73 +#: pg_receivexlog.c:88 pg_recvlogical.c:76 #, c-format msgid " --drop-slot drop the replication slot (for the slot's name see --slot)\n" msgstr " --drop-slot Replikations-Slot löschen (Slot-Name siehe --slot)\n" @@ -719,7 +729,7 @@ msgstr "%s: konnte Verzeichnis »%s« nicht öffnen: %s\n" msgid "%s: could not close directory \"%s\": %s\n" msgstr "%s: konnte Verzeichnis »%s« nicht schließen: %s\n" -#: pg_receivexlog.c:218 pg_recvlogical.c:343 +#: pg_receivexlog.c:218 pg_recvlogical.c:346 #, c-format msgid "%s: could not stat file \"%s\": %s\n" msgstr "%s: konnte »stat« für Datei »%s« nicht ausführen: %s\n" @@ -739,7 +749,7 @@ msgstr "%s: konnte Verzeichnis »%s« nicht lesen: %s\n" msgid "%s: starting log streaming at %X/%X (timeline %u)\n" msgstr "%s: starte Log-Streaming bei %X/%X (Zeitleiste %u)\n" -#: pg_receivexlog.c:426 pg_recvlogical.c:707 +#: pg_receivexlog.c:426 pg_recvlogical.c:710 #, c-format msgid "%s: invalid port number \"%s\"\n" msgstr "%s: ungültige Portnummer »%s«\n" @@ -760,28 +770,28 @@ msgstr "%s: für %s muss ein Slot mit --slot angegeben werden\n" msgid "%s: replication connection using slot \"%s\" is unexpectedly database specific\n" msgstr "%s: Replikationsverbindung, die Slot »%s« verwendet, ist unerwarteterweise datenbankspezifisch\n" -#: pg_receivexlog.c:574 pg_recvlogical.c:892 +#: pg_receivexlog.c:574 pg_recvlogical.c:895 #, c-format msgid "%s: dropping replication slot \"%s\"\n" msgstr "%s: lösche Replikations-Slot »%s«\n" -#: pg_receivexlog.c:587 pg_recvlogical.c:904 +#: pg_receivexlog.c:587 pg_recvlogical.c:907 #, c-format msgid "%s: creating replication slot \"%s\"\n" msgstr "%s: erzeuge Replikations-Slot »%s«\n" -#: pg_receivexlog.c:614 pg_recvlogical.c:930 +#: pg_receivexlog.c:614 pg_recvlogical.c:933 #, c-format msgid "%s: disconnected\n" msgstr "%s: Verbindung beendet\n" #. translator: check source for value for %d -#: pg_receivexlog.c:621 pg_recvlogical.c:937 +#: pg_receivexlog.c:621 pg_recvlogical.c:940 #, c-format msgid "%s: disconnected; waiting %d seconds to try again\n" msgstr "%s: Verbindung beendet; erneuter Versuch in %d Sekunden\n" -#: pg_recvlogical.c:67 +#: pg_recvlogical.c:70 #, c-format msgid "" "%s controls PostgreSQL logical decoding streams.\n" @@ -790,7 +800,7 @@ msgstr "" "%s kontrolliert logische Dekodierungsströme von PostgreSQL.\n" "\n" -#: pg_recvlogical.c:71 +#: pg_recvlogical.c:74 #, c-format msgid "" "\n" @@ -799,17 +809,17 @@ msgstr "" "\n" "Auszuführende Aktion:\n" -#: pg_recvlogical.c:74 +#: pg_recvlogical.c:77 #, c-format msgid " --start start streaming in a replication slot (for the slot's name see --slot)\n" msgstr " --start Streaming in einem Replikations-Slot starten (Slot-Name siehe --slot)\n" -#: pg_recvlogical.c:76 +#: pg_recvlogical.c:79 #, c-format msgid " -f, --file=FILE receive log into this file, - for stdout\n" msgstr " -f, --file=DATEI Log in diese Datei empfangen, - für Standardausgabe\n" -#: pg_recvlogical.c:77 +#: pg_recvlogical.c:80 #, c-format msgid "" " -F --fsync-interval=SECS\n" @@ -818,12 +828,12 @@ msgstr "" " -F --fsync-interval=SEK\n" " Zeit zwischen Fsyncs der Ausgabedatei (Standard: %d)\n" -#: pg_recvlogical.c:80 +#: pg_recvlogical.c:83 #, c-format msgid " -I, --startpos=LSN where in an existing slot should the streaming start\n" msgstr " -I, --startpos=LSN wo in einem bestehenden Slot das Streaming starten soll\n" -#: pg_recvlogical.c:82 +#: pg_recvlogical.c:85 #, c-format msgid "" " -o, --option=NAME[=VALUE]\n" @@ -834,313 +844,313 @@ msgstr "" " Option NAME mit optionalem Wert WERT an den\n" " Ausgabe-Plugin übergeben\n" -#: pg_recvlogical.c:85 +#: pg_recvlogical.c:88 #, c-format msgid " -P, --plugin=PLUGIN use output plugin PLUGIN (default: %s)\n" msgstr " -P, --plugin=PLUGIN Ausgabe-Plugin PLUGIN verwenden (Standard: %s)\n" -#: pg_recvlogical.c:88 +#: pg_recvlogical.c:91 #, c-format msgid " -S, --slot=SLOTNAME name of the logical replication slot\n" msgstr " -S, --slot=SLOTNAME Name des logischen Replikations-Slots\n" -#: pg_recvlogical.c:93 +#: pg_recvlogical.c:96 #, c-format msgid " -d, --dbname=DBNAME database to connect to\n" msgstr " -d, --dbname=DBNAME Datenbank, mit der verbunden werden soll\n" -#: pg_recvlogical.c:126 +#: pg_recvlogical.c:129 #, c-format msgid "%s: confirming write up to %X/%X, flush to %X/%X (slot %s)\n" msgstr "%s: bestätige Schreiben bis %X/%X, Flush bis %X/%X (Slot %s)\n" -#: pg_recvlogical.c:151 receivelog.c:404 +#: pg_recvlogical.c:154 receivelog.c:407 #, c-format msgid "%s: could not send feedback packet: %s" msgstr "%s: konnte Rückmeldungspaket nicht senden: %s" -#: pg_recvlogical.c:190 +#: pg_recvlogical.c:193 #, c-format msgid "%s: could not fsync log file \"%s\": %s\n" msgstr "%s: konnte Logdatei »%s« nicht fsyncen: %s\n" -#: pg_recvlogical.c:229 +#: pg_recvlogical.c:232 #, c-format msgid "%s: starting log streaming at %X/%X (slot %s)\n" msgstr "%s: starte Log-Streaming bei %X/%X (Slot %s)\n" -#: pg_recvlogical.c:271 +#: pg_recvlogical.c:274 #, c-format msgid "%s: streaming initiated\n" msgstr "%s: Streaming eingeleitet\n" -#: pg_recvlogical.c:336 +#: pg_recvlogical.c:339 #, c-format msgid "%s: could not open log file \"%s\": %s\n" msgstr "%s: konnte Logdatei »%s« nicht öffnen: %s\n" -#: pg_recvlogical.c:366 receivelog.c:933 +#: pg_recvlogical.c:369 receivelog.c:938 #, c-format msgid "%s: invalid socket: %s" msgstr "%s: ungültiges Socket: %s" -#: pg_recvlogical.c:420 receivelog.c:955 +#: pg_recvlogical.c:423 receivelog.c:960 #, c-format msgid "%s: select() failed: %s\n" msgstr "%s: select() fehlgeschlagen: %s\n" -#: pg_recvlogical.c:429 receivelog.c:1005 +#: pg_recvlogical.c:432 receivelog.c:1010 #, c-format msgid "%s: could not receive data from WAL stream: %s" msgstr "%s: konnte keine Daten vom WAL-Stream empfangen: %s" -#: pg_recvlogical.c:470 pg_recvlogical.c:509 receivelog.c:1050 -#: receivelog.c:1117 +#: pg_recvlogical.c:473 pg_recvlogical.c:512 receivelog.c:1055 +#: receivelog.c:1122 #, c-format msgid "%s: streaming header too small: %d\n" msgstr "%s: Streaming-Header zu klein: %d\n" -#: pg_recvlogical.c:492 receivelog.c:898 +#: pg_recvlogical.c:495 receivelog.c:903 #, c-format msgid "%s: unrecognized streaming header: \"%c\"\n" msgstr "%s: unbekannter Streaming-Header: »%c«\n" -#: pg_recvlogical.c:538 pg_recvlogical.c:552 +#: pg_recvlogical.c:541 pg_recvlogical.c:555 #, c-format msgid "%s: could not write %u bytes to log file \"%s\": %s\n" msgstr "%s: konnte %u Bytes nicht in Logdatei »%s« schreiben: %s\n" -#: pg_recvlogical.c:563 receivelog.c:691 receivelog.c:729 +#: pg_recvlogical.c:566 receivelog.c:696 receivelog.c:734 #, c-format msgid "%s: unexpected termination of replication stream: %s" msgstr "%s: unerwarteter Abbruch des Replikations-Streams: %s" -#: pg_recvlogical.c:686 +#: pg_recvlogical.c:689 #, c-format msgid "%s: invalid fsync interval \"%s\"\n" msgstr "%s: ungültiges Fsync-Intervall »%s«\n" -#: pg_recvlogical.c:727 +#: pg_recvlogical.c:730 #, c-format msgid "%s: could not parse start position \"%s\"\n" msgstr "%s: konnte Startposition »%s« nicht parsen\n" -#: pg_recvlogical.c:811 +#: pg_recvlogical.c:814 #, c-format msgid "%s: no slot specified\n" msgstr "%s: kein Slot angegeben\n" -#: pg_recvlogical.c:819 +#: pg_recvlogical.c:822 #, c-format msgid "%s: no target file specified\n" msgstr "%s: keine Zieldatei angegeben\n" -#: pg_recvlogical.c:827 +#: pg_recvlogical.c:830 #, c-format msgid "%s: no database specified\n" msgstr "%s: keine Datenbank angegeben\n" -#: pg_recvlogical.c:835 +#: pg_recvlogical.c:838 #, c-format msgid "%s: at least one action needs to be specified\n" msgstr "%s: mindestens eine Aktion muss angegeben werden\n" -#: pg_recvlogical.c:843 +#: pg_recvlogical.c:846 #, c-format msgid "%s: cannot use --create-slot or --start together with --drop-slot\n" msgstr "%s: --create-slot oder --start kann nicht zusammen mit --drop-slot verwendet werden\n" -#: pg_recvlogical.c:851 +#: pg_recvlogical.c:854 #, c-format msgid "%s: cannot use --create-slot or --drop-slot together with --startpos\n" msgstr "%s: --create-slot oder --drop-slot kann nicht zusammen mit --startpos verwendet werden\n" -#: pg_recvlogical.c:882 +#: pg_recvlogical.c:885 #, c-format msgid "%s: could not establish database-specific replication connection\n" msgstr "%s: konnte keine datenbankspezifische Replikationsverbindung herstellen\n" -#: receivelog.c:66 +#: receivelog.c:69 #, c-format msgid "%s: could not create archive status file \"%s\": %s\n" msgstr "%s: konnte Archivstatusdatei »%s« nicht erzeugen: %s\n" -#: receivelog.c:73 receivelog.c:196 receivelog.c:344 receivelog.c:828 -#: receivelog.c:1071 +#: receivelog.c:76 receivelog.c:199 receivelog.c:347 receivelog.c:833 +#: receivelog.c:1076 #, c-format msgid "%s: could not fsync file \"%s\": %s\n" msgstr "%s: konnte Datei »%s« nicht fsyncen: %s\n" -#: receivelog.c:111 +#: receivelog.c:114 #, c-format msgid "%s: could not open transaction log file \"%s\": %s\n" msgstr "%s: konnte Transaktionslogdatei »%s« nicht öffnen: %s\n" -#: receivelog.c:123 +#: receivelog.c:126 #, c-format msgid "%s: could not stat transaction log file \"%s\": %s\n" msgstr "%s: konnte »stat« für Transaktionslogdatei »%s« nicht ausführen: %s\n" -#: receivelog.c:137 +#: receivelog.c:140 #, c-format msgid "%s: transaction log file \"%s\" has %d bytes, should be 0 or %d\n" msgstr "%s: Transaktionslogdatei »%s« hat %d Bytes, sollte 0 oder %d sein\n" -#: receivelog.c:150 +#: receivelog.c:153 #, c-format msgid "%s: could not pad transaction log file \"%s\": %s\n" msgstr "%s: konnte Transaktionslogdatei »%s« nicht auffüllen: %s\n" -#: receivelog.c:163 +#: receivelog.c:166 #, c-format msgid "%s: could not seek to beginning of transaction log file \"%s\": %s\n" msgstr "%s: konnte Positionszeiger nicht an den Anfang der Transaktionslogdatei »%s« setzen: %s\n" -#: receivelog.c:189 +#: receivelog.c:192 #, c-format msgid "%s: could not determine seek position in file \"%s\": %s\n" msgstr "%s: konnte Positionszeiger in Datei »%s« nicht ermitteln: %s\n" -#: receivelog.c:222 +#: receivelog.c:225 #, c-format msgid "%s: could not rename file \"%s\": %s\n" msgstr "%s: konnte Datei »%s« nicht umbenennen: %s\n" -#: receivelog.c:229 +#: receivelog.c:232 #, c-format msgid "%s: not renaming \"%s%s\", segment is not complete\n" msgstr "%s: »%s%s« wird nicht umbenannt, Segment ist noch nicht vollständig\n" -#: receivelog.c:275 +#: receivelog.c:278 #, c-format msgid "%s: could not open timeline history file \"%s\": %s\n" msgstr "%s: konnte Zeitleisten-History-Datei »%s« nicht öffnen: %s\n" -#: receivelog.c:302 +#: receivelog.c:305 #, c-format msgid "%s: server reported unexpected history file name for timeline %u: %s\n" msgstr "%s: Server berichtete unerwarteten History-Dateinamen für Zeitleiste %u: %s\n" -#: receivelog.c:319 +#: receivelog.c:322 #, c-format msgid "%s: could not create timeline history file \"%s\": %s\n" msgstr "%s: konnte Zeitleisten-History-Datei »%s« nicht erzeugen: %s\n" -#: receivelog.c:336 +#: receivelog.c:339 #, c-format msgid "%s: could not write timeline history file \"%s\": %s\n" msgstr "%s: konnte Zeitleisten-History-Datei »%s« nicht schreiben: %s\n" -#: receivelog.c:361 +#: receivelog.c:364 #, c-format msgid "%s: could not rename file \"%s\" to \"%s\": %s\n" msgstr "%s: konnte Datei »%s« nicht in »%s« umbenennen: %s\n" -#: receivelog.c:438 +#: receivelog.c:441 #, c-format msgid "%s: incompatible server version %s; client does not support streaming from server versions older than %s\n" msgstr "%s: inkompatible Serverversion %s; Client unterstützt Streaming nicht mit Serverversionen älter als %s\n" -#: receivelog.c:448 +#: receivelog.c:451 #, c-format msgid "%s: incompatible server version %s; client does not support streaming from server versions newer than %s\n" msgstr "%s: inkompatible Serverversion %s; Client unterstützt Streaming nicht mit Serverversionen neuer als %s\n" -#: receivelog.c:544 streamutil.c:264 streamutil.c:303 +#: receivelog.c:549 streamutil.c:272 streamutil.c:311 #, c-format msgid "%s: could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields\n" msgstr "%s: konnte System nicht identifizieren: %d Zeilen und %d Felder erhalten, %d Zeilen und %d oder mehr Felder erwartet\n" -#: receivelog.c:552 +#: receivelog.c:557 #, c-format msgid "%s: system identifier does not match between base backup and streaming connection\n" msgstr "%s: Systemidentifikator stimmt nicht zwischen Basissicherung und Streaming-Verbindung überein\n" -#: receivelog.c:560 +#: receivelog.c:565 #, c-format msgid "%s: starting timeline %u is not present in the server\n" msgstr "%s: Startzeitleiste %u ist auf dem Server nicht vorhanden\n" -#: receivelog.c:600 +#: receivelog.c:605 #, c-format msgid "%s: unexpected response to TIMELINE_HISTORY command: got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: unerwartete Antwort auf Befehl TIMELINE_HISTORY: %d Zeilen und %d Felder erhalten, %d Zeilen und %d Felder erwartet\n" -#: receivelog.c:672 +#: receivelog.c:677 #, c-format msgid "%s: server reported unexpected next timeline %u, following timeline %u\n" msgstr "%s: Server berichtete unerwartete nächste Zeitleiste %u, folgend auf Zeitleiste %u\n" -#: receivelog.c:679 +#: receivelog.c:684 #, c-format msgid "%s: server stopped streaming timeline %u at %X/%X, but reported next timeline %u to begin at %X/%X\n" msgstr "%s: Server beendete Streaming von Zeitleiste %u bei %X/%X, aber gab an, dass nächste Zeitleiste %u bei %X/%X beginnt\n" -#: receivelog.c:720 +#: receivelog.c:725 #, c-format msgid "%s: replication stream was terminated before stop point\n" msgstr "%s: Replikationsstrom wurde vor Stopppunkt abgebrochen\n" -#: receivelog.c:769 +#: receivelog.c:774 #, c-format msgid "%s: unexpected result set after end-of-timeline: got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: unerwartete Ergebnismenge nach Ende der Zeitleiste: %d Zeilen und %d Felder erhalten, %d Zeilen und %d Felder erwartet\n" -#: receivelog.c:779 +#: receivelog.c:784 #, c-format msgid "%s: could not parse next timeline's starting point \"%s\"\n" msgstr "%s: konnte Startpunkt der nächsten Zeitleiste (»%s«) nicht interpretieren\n" -#: receivelog.c:1136 +#: receivelog.c:1141 #, c-format msgid "%s: received transaction log record for offset %u with no file open\n" msgstr "%s: Transaktionslogeintrag für Offset %u erhalten ohne offene Datei\n" -#: receivelog.c:1148 +#: receivelog.c:1153 #, c-format msgid "%s: got WAL data offset %08x, expected %08x\n" msgstr "%s: WAL-Daten-Offset %08x erhalten, %08x erwartet\n" -#: receivelog.c:1184 +#: receivelog.c:1189 #, c-format msgid "%s: could not write %u bytes to WAL file \"%s\": %s\n" msgstr "%s: konnte %u Bytes nicht in WAL-Datei »%s« schreiben: %s\n" -#: receivelog.c:1209 receivelog.c:1250 receivelog.c:1281 +#: receivelog.c:1214 receivelog.c:1255 receivelog.c:1286 #, c-format msgid "%s: could not send copy-end packet: %s" msgstr "%s: konnte COPY-Ende-Paket nicht senden: %s" -#: streamutil.c:145 +#: streamutil.c:153 msgid "Password: " msgstr "Passwort: " -#: streamutil.c:169 +#: streamutil.c:177 #, c-format msgid "%s: could not connect to server\n" msgstr "%s: konnte nicht mit Server verbinden\n" -#: streamutil.c:187 +#: streamutil.c:195 #, c-format msgid "%s: could not connect to server: %s" msgstr "%s: konnte nicht mit Server verbinden: %s" -#: streamutil.c:211 +#: streamutil.c:219 #, c-format msgid "%s: could not determine server setting for integer_datetimes\n" msgstr "%s: konnte Servereinstellung für integer_datetimes nicht ermitteln\n" -#: streamutil.c:224 +#: streamutil.c:232 #, c-format msgid "%s: integer_datetimes compile flag does not match server\n" msgstr "%s: Kompilieroption »integer_datetimes« stimmt nicht mit Server überein\n" -#: streamutil.c:371 +#: streamutil.c:379 #, c-format msgid "%s: could not create replication slot \"%s\": got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: konnte Replikations-Slot »%s« nicht erzeugen: %d Zeilen und %d Felder erhalten, %d Zeilen und %d Felder erwartet\n" -#: streamutil.c:416 +#: streamutil.c:424 #, c-format msgid "%s: could not drop replication slot \"%s\": got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: konnte Replikations-Slot »%s« nicht löschen: %d Zeilen und %d Felder erhalten, %d Zeilen und %d Felder erwartet\n" diff --git a/src/bin/pg_basebackup/po/es.po b/src/bin/pg_basebackup/po/es.po index 6477959770..45247c4d3f 100644 --- a/src/bin/pg_basebackup/po/es.po +++ b/src/bin/pg_basebackup/po/es.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: pg_basebackup (PostgreSQL 9.6)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-05-02 20:14+0000\n" -"PO-Revision-Date: 2016-05-23 09:26-0500\n" +"POT-Creation-Date: 2017-08-27 21:52+0000\n" +"PO-Revision-Date: 2017-08-28 11:37+0200\n" "Last-Translator: Carlos Chapi \n" "Language-Team: Spanish \n" "Language: es\n" @@ -31,32 +31,32 @@ msgstr "memoria agotada\n" msgid "cannot duplicate null pointer (internal error)\n" msgstr "no se puede duplicar un puntero nulo (error interno)\n" -#: pg_basebackup.c:154 +#: pg_basebackup.c:156 #, c-format msgid "%s: directory name too long\n" msgstr "%s: nombre de directorio demasiado largo\n" -#: pg_basebackup.c:164 +#: pg_basebackup.c:166 #, c-format msgid "%s: multiple \"=\" signs in tablespace mapping\n" msgstr "%s: múltiples signos «=» en mapeo de tablespace\n" -#: pg_basebackup.c:177 +#: pg_basebackup.c:179 #, c-format msgid "%s: invalid tablespace mapping format \"%s\", must be \"OLDDIR=NEWDIR\"\n" msgstr "%s: formato de mapeo de tablespace «%s» no válido, debe ser «ANTIGUO=NUEVO»\n" -#: pg_basebackup.c:190 +#: pg_basebackup.c:192 #, c-format msgid "%s: old directory is not an absolute path in tablespace mapping: %s\n" msgstr "%s: directorio antiguo no es una ruta absoluta en mapeo de tablespace: %s\n" -#: pg_basebackup.c:197 +#: pg_basebackup.c:199 #, c-format msgid "%s: new directory is not an absolute path in tablespace mapping: %s\n" msgstr "%s: directorio nuevo no es una ruta absoluta en mapeo de tablespace: %s\n" -#: pg_basebackup.c:231 +#: pg_basebackup.c:233 #, c-format msgid "" "%s takes a base backup of a running PostgreSQL server.\n" @@ -65,17 +65,17 @@ msgstr "" "%s obtiene un respaldo base a partir de un servidor PostgreSQL en ejecución.\n" "\n" -#: pg_basebackup.c:233 pg_receivexlog.c:66 pg_recvlogical.c:69 +#: pg_basebackup.c:235 pg_receivexlog.c:66 pg_recvlogical.c:72 #, c-format msgid "Usage:\n" msgstr "Empleo:\n" -#: pg_basebackup.c:234 pg_receivexlog.c:67 pg_recvlogical.c:70 +#: pg_basebackup.c:236 pg_receivexlog.c:67 pg_recvlogical.c:73 #, c-format msgid " %s [OPTION]...\n" msgstr " %s [OPCIÓN]...\n" -#: pg_basebackup.c:235 +#: pg_basebackup.c:237 #, c-format msgid "" "\n" @@ -84,17 +84,17 @@ msgstr "" "\n" "Opciones que controlan la salida:\n" -#: pg_basebackup.c:236 +#: pg_basebackup.c:238 #, c-format msgid " -D, --pgdata=DIRECTORY receive base backup into directory\n" msgstr " -D, --pgdata=DIRECTORIO recibir el respaldo base en directorio\n" -#: pg_basebackup.c:237 +#: pg_basebackup.c:239 #, c-format msgid " -F, --format=p|t output format (plain (default), tar)\n" msgstr " -F, --format=p|t formato de salida (plano (por omisión), tar)\n" -#: pg_basebackup.c:238 +#: pg_basebackup.c:240 #, c-format msgid "" " -r, --max-rate=RATE maximum transfer rate to transfer data directory\n" @@ -103,21 +103,21 @@ msgstr "" " -r, --max-rate=TASA máxima tasa a la que transferir el directorio de datos\n" " (en kB/s, o use sufijos «k» o «M»)\n" -#: pg_basebackup.c:240 +#: pg_basebackup.c:242 #, c-format msgid "" " -R, --write-recovery-conf\n" -" write recovery.conf after backup\n" +" write recovery.conf for replication\n" msgstr "" -" -R, --write-recovery-info\n" -" escribe recovery.conf después del respaldo\n" +" -R, --write-recovery-conf\n" +" escribe recovery.conf para replicación\n" -#: pg_basebackup.c:242 pg_receivexlog.c:74 +#: pg_basebackup.c:244 pg_receivexlog.c:74 #, c-format msgid " -S, --slot=SLOTNAME replication slot to use\n" msgstr " -S, --slot=NOMBRE slot de replicación a usar\n" -#: pg_basebackup.c:243 +#: pg_basebackup.c:245 #, c-format msgid "" " -T, --tablespace-mapping=OLDDIR=NEWDIR\n" @@ -126,14 +126,14 @@ msgstr "" " -T, --tablespace-mapping=ANTIGUO=NUEVO\n" " reubicar el directorio de tablespace de ANTIGUO a NUEVO\n" -#: pg_basebackup.c:245 +#: pg_basebackup.c:247 #, c-format msgid " -x, --xlog include required WAL files in backup (fetch mode)\n" msgstr "" " -x, --xlog incluye los archivos WAL necesarios en el respaldo\n" " (modo fetch)\n" -#: pg_basebackup.c:246 +#: pg_basebackup.c:248 #, c-format msgid "" " -X, --xlog-method=fetch|stream\n" @@ -143,22 +143,22 @@ msgstr "" " incluye los archivos WAL necesarios,\n" " en el modo especificado\n" -#: pg_basebackup.c:248 +#: pg_basebackup.c:250 #, c-format msgid " --xlogdir=XLOGDIR location for the transaction log directory\n" msgstr " --xlogdir=DIR ubicación para los archivos del registro transaccional\n" -#: pg_basebackup.c:249 +#: pg_basebackup.c:251 #, c-format msgid " -z, --gzip compress tar output\n" msgstr " -z, --gzip comprimir la salida de tar\n" -#: pg_basebackup.c:250 +#: pg_basebackup.c:252 #, c-format msgid " -Z, --compress=0-9 compress tar output with given compression level\n" msgstr " -Z, --compress=0-9 comprimir salida tar con el nivel de compresión dado\n" -#: pg_basebackup.c:251 +#: pg_basebackup.c:253 #, c-format msgid "" "\n" @@ -167,7 +167,7 @@ msgstr "" "\n" "Opciones generales:\n" -#: pg_basebackup.c:252 +#: pg_basebackup.c:254 #, c-format msgid "" " -c, --checkpoint=fast|spread\n" @@ -176,32 +176,32 @@ msgstr "" " -c, --checkpoint=fast|spread\n" " utilizar checkpoint rápido o extendido\n" -#: pg_basebackup.c:254 +#: pg_basebackup.c:256 #, c-format msgid " -l, --label=LABEL set backup label\n" msgstr " -l, --label=ETIQUETA establecer etiqueta del respaldo\n" -#: pg_basebackup.c:255 +#: pg_basebackup.c:257 #, c-format msgid " -P, --progress show progress information\n" msgstr " -P, --progress mostrar información de progreso\n" -#: pg_basebackup.c:256 pg_receivexlog.c:76 pg_recvlogical.c:89 +#: pg_basebackup.c:258 pg_receivexlog.c:76 pg_recvlogical.c:92 #, c-format msgid " -v, --verbose output verbose messages\n" msgstr " -v, --verbose desplegar mensajes verbosos\n" -#: pg_basebackup.c:257 pg_receivexlog.c:77 pg_recvlogical.c:90 +#: pg_basebackup.c:259 pg_receivexlog.c:77 pg_recvlogical.c:93 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version mostrar información de versión, luego salir\n" -#: pg_basebackup.c:258 pg_receivexlog.c:78 pg_recvlogical.c:91 +#: pg_basebackup.c:260 pg_receivexlog.c:78 pg_recvlogical.c:94 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help mostrar esta ayuda, luego salir\n" -#: pg_basebackup.c:259 pg_receivexlog.c:79 pg_recvlogical.c:92 +#: pg_basebackup.c:261 pg_receivexlog.c:79 pg_recvlogical.c:95 #, c-format msgid "" "\n" @@ -210,22 +210,22 @@ msgstr "" "\n" "Opciones de conexión:\n" -#: pg_basebackup.c:260 pg_receivexlog.c:80 +#: pg_basebackup.c:262 pg_receivexlog.c:80 #, c-format msgid " -d, --dbname=CONNSTR connection string\n" msgstr " -s, --dbname=CONSTR cadena de conexión\n" -#: pg_basebackup.c:261 pg_receivexlog.c:81 pg_recvlogical.c:94 +#: pg_basebackup.c:263 pg_receivexlog.c:81 pg_recvlogical.c:97 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=ANFITRIÓN dirección del servidor o directorio del socket\n" -#: pg_basebackup.c:262 pg_receivexlog.c:82 pg_recvlogical.c:95 +#: pg_basebackup.c:264 pg_receivexlog.c:82 pg_recvlogical.c:98 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=PORT número de port del servidor\n" -#: pg_basebackup.c:263 +#: pg_basebackup.c:265 #, c-format msgid "" " -s, --status-interval=INTERVAL\n" @@ -234,24 +234,24 @@ msgstr "" " -s, --status-interval=INTERVALO (segundos)\n" " tiempo entre envíos de paquetes de estado al servidor\n" -#: pg_basebackup.c:265 pg_receivexlog.c:83 pg_recvlogical.c:96 +#: pg_basebackup.c:267 pg_receivexlog.c:83 pg_recvlogical.c:99 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=NOMBRE conectarse con el usuario especificado\n" -#: pg_basebackup.c:266 pg_receivexlog.c:84 pg_recvlogical.c:97 +#: pg_basebackup.c:268 pg_receivexlog.c:84 pg_recvlogical.c:100 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password nunca pedir contraseña\n" -#: pg_basebackup.c:267 pg_receivexlog.c:85 pg_recvlogical.c:98 +#: pg_basebackup.c:269 pg_receivexlog.c:85 pg_recvlogical.c:101 #, c-format msgid " -W, --password force password prompt (should happen automatically)\n" msgstr "" " -W, --password forzar un prompt para la contraseña\n" " (debería ser automático)\n" -#: pg_basebackup.c:268 pg_receivexlog.c:89 pg_recvlogical.c:99 +#: pg_basebackup.c:270 pg_receivexlog.c:89 pg_recvlogical.c:102 #, c-format msgid "" "\n" @@ -260,374 +260,384 @@ msgstr "" "\n" "Reporte errores a .\n" -#: pg_basebackup.c:311 +#: pg_basebackup.c:313 #, c-format msgid "%s: could not read from ready pipe: %s\n" msgstr "%s: no se pudo leer desde la tubería: %s\n" -#: pg_basebackup.c:319 pg_basebackup.c:422 pg_basebackup.c:1892 -#: streamutil.c:285 +#: pg_basebackup.c:321 pg_basebackup.c:424 pg_basebackup.c:1910 +#: streamutil.c:293 #, c-format msgid "%s: could not parse transaction log location \"%s\"\n" msgstr "%s: no se pudo interpretar la ubicación del registro transaccional «%s»\n" -#: pg_basebackup.c:435 +#: pg_basebackup.c:437 #, c-format msgid "%s: could not create pipe for background process: %s\n" msgstr "%s: no se pudo crear la tubería para el proceso en segundo plano: %s\n" -#: pg_basebackup.c:460 pg_basebackup.c:515 pg_basebackup.c:1263 +#: pg_basebackup.c:462 pg_basebackup.c:517 pg_basebackup.c:1269 #, c-format msgid "%s: could not create directory \"%s\": %s\n" msgstr "%s: no se pudo crear el directorio «%s»: %s\n" -#: pg_basebackup.c:478 +#: pg_basebackup.c:480 #, c-format msgid "%s: could not create background process: %s\n" msgstr "%s: no se pudo lanzar el proceso en segundo plano: %s\n" -#: pg_basebackup.c:490 +#: pg_basebackup.c:492 #, c-format msgid "%s: could not create background thread: %s\n" msgstr "%s: no se pudo lanzar el hilo en segundo plano: %s\n" -#: pg_basebackup.c:534 +#: pg_basebackup.c:536 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" msgstr "%s: el directorio «%s» existe pero no está vacío\n" -#: pg_basebackup.c:542 +#: pg_basebackup.c:544 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: no se pudo acceder al directorio «%s»: %s\n" -#: pg_basebackup.c:604 +#: pg_basebackup.c:606 #, c-format msgid "%*s/%s kB (100%%), %d/%d tablespace %*s" msgid_plural "%*s/%s kB (100%%), %d/%d tablespaces %*s" msgstr[0] "%*s/%s kB (100%%), %d/%d tablespace %*s" msgstr[1] "%*s/%s kB (100%%), %d/%d tablespaces %*s" -#: pg_basebackup.c:616 +#: pg_basebackup.c:618 #, c-format msgid "%*s/%s kB (%d%%), %d/%d tablespace (%s%-*.*s)" msgid_plural "%*s/%s kB (%d%%), %d/%d tablespaces (%s%-*.*s)" msgstr[0] "%*s/%s kB (%d%%), %d/%d tablespace (%s%-*.*s)" msgstr[1] "%*s/%s kB (%d%%), %d/%d tablespaces (%s%-*.*s)" -#: pg_basebackup.c:632 +#: pg_basebackup.c:634 #, c-format msgid "%*s/%s kB (%d%%), %d/%d tablespace" msgid_plural "%*s/%s kB (%d%%), %d/%d tablespaces" msgstr[0] "%*s/%s kB (%d%%), %d/%d tablespace" msgstr[1] "%*s/%s kB (%d%%), %d/%d tablespaces" -#: pg_basebackup.c:654 +#: pg_basebackup.c:656 #, c-format msgid "%s: transfer rate \"%s\" is not a valid value\n" msgstr "%s: tasa de transferencia «%s» no es un valor válido\n" -#: pg_basebackup.c:661 +#: pg_basebackup.c:663 #, c-format msgid "%s: invalid transfer rate \"%s\": %s\n" msgstr "%s: tasa de transferencia «%s» no válida: %s\n" -#: pg_basebackup.c:671 +#: pg_basebackup.c:673 #, c-format msgid "%s: transfer rate must be greater than zero\n" msgstr "%s: tasa de transferencia debe ser mayor que cero\n" -#: pg_basebackup.c:705 +#: pg_basebackup.c:707 #, c-format msgid "%s: invalid --max-rate unit: \"%s\"\n" msgstr "%s: unidad de --max-rato no válida: «%s»\n" -#: pg_basebackup.c:714 +#: pg_basebackup.c:716 #, c-format msgid "%s: transfer rate \"%s\" exceeds integer range\n" msgstr "%s: la tasa de transferencia «%s» excede el rango de enteros\n" -#: pg_basebackup.c:726 +#: pg_basebackup.c:728 #, c-format msgid "%s: transfer rate \"%s\" is out of range\n" msgstr "%s: la tasa de transferencia «%s» está fuera de rango\n" -#: pg_basebackup.c:750 +#: pg_basebackup.c:752 #, c-format msgid "%s: could not write to compressed file \"%s\": %s\n" msgstr "%s: no se pudo escribir al archivo comprimido «%s»: %s\n" -#: pg_basebackup.c:760 pg_basebackup.c:1357 pg_basebackup.c:1582 +#: pg_basebackup.c:762 pg_basebackup.c:1363 pg_basebackup.c:1588 #, c-format msgid "%s: could not write to file \"%s\": %s\n" msgstr "%s: no se pudo escribir al archivo «%s»: %s\n" -#: pg_basebackup.c:815 pg_basebackup.c:836 pg_basebackup.c:864 +#: pg_basebackup.c:821 pg_basebackup.c:842 pg_basebackup.c:870 #, c-format msgid "%s: could not set compression level %d: %s\n" msgstr "%s: no se pudo definir el nivel de compresión %d: %s\n" -#: pg_basebackup.c:885 +#: pg_basebackup.c:891 #, c-format msgid "%s: could not create compressed file \"%s\": %s\n" msgstr "%s: no se pudo crear el archivo comprimido «%s»: %s\n" -#: pg_basebackup.c:896 pg_basebackup.c:1317 pg_basebackup.c:1575 +#: pg_basebackup.c:902 pg_basebackup.c:1323 pg_basebackup.c:1581 #, c-format msgid "%s: could not create file \"%s\": %s\n" msgstr "%s: no se pudo crear el archivo «%s»: %s\n" -#: pg_basebackup.c:908 pg_basebackup.c:1172 +#: pg_basebackup.c:914 pg_basebackup.c:1178 #, c-format msgid "%s: could not get COPY data stream: %s" msgstr "%s: no se pudo obtener un flujo de datos COPY: %s" -#: pg_basebackup.c:965 +#: pg_basebackup.c:971 #, c-format msgid "%s: could not close compressed file \"%s\": %s\n" msgstr "%s: no se pudo cerrar el archivo comprimido «%s»: %s\n" -#: pg_basebackup.c:978 pg_recvlogical.c:577 receivelog.c:203 receivelog.c:351 -#: receivelog.c:738 +#: pg_basebackup.c:984 pg_recvlogical.c:580 receivelog.c:206 receivelog.c:354 +#: receivelog.c:743 #, c-format msgid "%s: could not close file \"%s\": %s\n" msgstr "%s: no se pudo cerrar el archivo «%s»: %s\n" -#: pg_basebackup.c:989 pg_basebackup.c:1201 pg_recvlogical.c:443 -#: receivelog.c:1019 +#: pg_basebackup.c:995 pg_basebackup.c:1207 pg_recvlogical.c:446 +#: receivelog.c:1024 #, c-format msgid "%s: could not read COPY data: %s" msgstr "%s: no fue posible leer datos COPY: %s" -#: pg_basebackup.c:1215 +#: pg_basebackup.c:1221 #, c-format msgid "%s: invalid tar block header size: %d\n" msgstr "%s: tamaño de bloque de cabecera de tar no válido: %d\n" -#: pg_basebackup.c:1271 +#: pg_basebackup.c:1277 #, c-format msgid "%s: could not set permissions on directory \"%s\": %s\n" msgstr "%s: no se pudo definir los permisos en el directorio «%s»: %s\n" -#: pg_basebackup.c:1295 +#: pg_basebackup.c:1301 #, c-format msgid "%s: could not create symbolic link from \"%s\" to \"%s\": %s\n" msgstr "%s: no se pudo crear un enlace simbólico desde «%s» a «%s»: %s\n" -#: pg_basebackup.c:1304 +#: pg_basebackup.c:1310 #, c-format msgid "%s: unrecognized link indicator \"%c\"\n" msgstr "%s: indicador de enlace «%c» no reconocido\n" -#: pg_basebackup.c:1324 +#: pg_basebackup.c:1330 #, c-format msgid "%s: could not set permissions on file \"%s\": %s\n" msgstr "%s: no se pudo definir los permisos al archivo «%s»: %s\n" -#: pg_basebackup.c:1383 +#: pg_basebackup.c:1389 #, c-format msgid "%s: COPY stream ended before last file was finished\n" msgstr "%s: el flujo COPY terminó antes que el último archivo estuviera completo\n" -#: pg_basebackup.c:1469 pg_basebackup.c:1489 pg_basebackup.c:1496 -#: pg_basebackup.c:1550 +#: pg_basebackup.c:1475 pg_basebackup.c:1495 pg_basebackup.c:1502 +#: pg_basebackup.c:1556 #, c-format msgid "%s: out of memory\n" msgstr "%s: memoria agotada\n" -#: pg_basebackup.c:1627 +#: pg_basebackup.c:1633 #, c-format msgid "%s: incompatible server version %s\n" msgstr "%s: versión del servidor %s incompatible\n" -#: pg_basebackup.c:1674 pg_recvlogical.c:261 receivelog.c:536 receivelog.c:587 -#: receivelog.c:627 streamutil.c:255 streamutil.c:359 streamutil.c:405 +#: pg_basebackup.c:1670 +#, c-format +msgid "%s: initiating base backup, waiting for checkpoint to complete\n" +msgstr "%s: iniciando el respaldo base, esperando que el checkpoint se complete\n" + +#: pg_basebackup.c:1688 pg_recvlogical.c:264 receivelog.c:541 receivelog.c:592 +#: receivelog.c:632 streamutil.c:263 streamutil.c:367 streamutil.c:413 #, c-format msgid "%s: could not send replication command \"%s\": %s" msgstr "%s: no se pudo ejecutar la orden de replicación «%s»: %s" -#: pg_basebackup.c:1685 +#: pg_basebackup.c:1699 #, c-format msgid "%s: could not initiate base backup: %s" msgstr "%s: no se pudo iniciar el respaldo base: %s" -#: pg_basebackup.c:1692 +#: pg_basebackup.c:1706 #, c-format msgid "%s: server returned unexpected response to BASE_BACKUP command; got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: el servidor envió una respuesta inesperada a la orden BASE_BACKUP; se obtuvieron %d filas y %d campos, se esperaban %d filas y %d campos\n" -#: pg_basebackup.c:1712 +#: pg_basebackup.c:1714 +#, c-format +msgid "%s: checkpoint completed\n" +msgstr "%s: el checkpoint se ha completado\n" + +#: pg_basebackup.c:1729 #, c-format msgid "transaction log start point: %s on timeline %u\n" msgstr "punto de inicio del registro transaccional: %s en el timeline %u\n" -#: pg_basebackup.c:1721 +#: pg_basebackup.c:1738 #, c-format msgid "%s: could not get backup header: %s" msgstr "%s: no se pudo obtener la cabecera de respaldo: %s" -#: pg_basebackup.c:1727 +#: pg_basebackup.c:1744 #, c-format msgid "%s: no data returned from server\n" msgstr "%s: el servidor no retornó datos\n" -#: pg_basebackup.c:1759 +#: pg_basebackup.c:1776 #, c-format msgid "%s: can only write single tablespace to stdout, database has %d\n" msgstr "%s: sólo se puede escribir un tablespace a stdout, la base de datos tiene %d\n" -#: pg_basebackup.c:1771 +#: pg_basebackup.c:1788 #, c-format msgid "%s: starting background WAL receiver\n" msgstr "%s: iniciando el receptor de WAL en segundo plano\n" -#: pg_basebackup.c:1802 +#: pg_basebackup.c:1819 #, c-format msgid "%s: could not get transaction log end position from server: %s" msgstr "%s: no se pudo obtener la posición final del registro transaccional del servidor: %s" -#: pg_basebackup.c:1809 +#: pg_basebackup.c:1826 #, c-format msgid "%s: no transaction log end position returned from server\n" msgstr "%s: el servidor no retornó la posición final del registro transaccional\n" -#: pg_basebackup.c:1821 +#: pg_basebackup.c:1838 #, c-format msgid "%s: final receive failed: %s" msgstr "%s: la recepción final falló: %s" -#: pg_basebackup.c:1844 +#: pg_basebackup.c:1862 #, c-format msgid "%s: waiting for background process to finish streaming ...\n" msgstr "%s: esperando que el proceso en segundo plano complete el flujo...\n" -#: pg_basebackup.c:1850 +#: pg_basebackup.c:1868 #, c-format msgid "%s: could not send command to background pipe: %s\n" msgstr "%s: no se pudo enviar una orden a la tubería de segundo plano: %s\n" -#: pg_basebackup.c:1859 +#: pg_basebackup.c:1877 #, c-format msgid "%s: could not wait for child process: %s\n" msgstr "%s: no se pudo esperar al proceso hijo: %s\n" -#: pg_basebackup.c:1865 +#: pg_basebackup.c:1883 #, c-format msgid "%s: child %d died, expected %d\n" msgstr "%s: el hijo %d murió, pero se esperaba al %d\n" -#: pg_basebackup.c:1871 +#: pg_basebackup.c:1889 #, c-format msgid "%s: child process did not exit normally\n" msgstr "%s: el proceso hijo no terminó normalmente\n" -#: pg_basebackup.c:1877 +#: pg_basebackup.c:1895 #, c-format msgid "%s: child process exited with error %d\n" msgstr "%s: el proceso hijo terminó con código de salida %d\n" -#: pg_basebackup.c:1904 +#: pg_basebackup.c:1922 #, c-format msgid "%s: could not wait for child thread: %s\n" msgstr "%s: no se pudo esperar el hilo hijo: %s\n" -#: pg_basebackup.c:1911 +#: pg_basebackup.c:1929 #, c-format msgid "%s: could not get child thread exit status: %s\n" msgstr "%s: no se pudo obtener la cabecera de respaldo: %s\n" -#: pg_basebackup.c:1917 +#: pg_basebackup.c:1935 #, c-format msgid "%s: child thread exited with error %u\n" msgstr "%s: el hilo hijo terminó con error %u\n" -#: pg_basebackup.c:2007 +#: pg_basebackup.c:2025 #, c-format msgid "%s: invalid output format \"%s\", must be \"plain\" or \"tar\"\n" msgstr "%s: formato de salida «%s» no válido, debe ser «plain» o «tar»\n" -#: pg_basebackup.c:2028 pg_basebackup.c:2040 +#: pg_basebackup.c:2046 pg_basebackup.c:2058 #, c-format msgid "%s: cannot specify both --xlog and --xlog-method\n" msgstr "%s: no se puede tanto --xlog como --xlog-method\n" -#: pg_basebackup.c:2055 +#: pg_basebackup.c:2073 #, c-format msgid "%s: invalid xlog-method option \"%s\", must be \"fetch\" or \"stream\"\n" msgstr "%s: opción de xlog-method «%s» no válida, debe ser «fetch» o «stream»\n" -#: pg_basebackup.c:2077 +#: pg_basebackup.c:2095 #, c-format msgid "%s: invalid compression level \"%s\"\n" msgstr "%s: valor de compresión «%s» no válido\n" -#: pg_basebackup.c:2089 +#: pg_basebackup.c:2107 #, c-format msgid "%s: invalid checkpoint argument \"%s\", must be \"fast\" or \"spread\"\n" msgstr "%s: argumento de checkpoint «%s» no válido, debe ser «fast» o «spread»\n" -#: pg_basebackup.c:2116 pg_receivexlog.c:445 pg_recvlogical.c:760 +#: pg_basebackup.c:2134 pg_receivexlog.c:445 pg_recvlogical.c:763 #, c-format msgid "%s: invalid status interval \"%s\"\n" msgstr "%s: intervalo de estado «%s» no válido\n" -#: pg_basebackup.c:2132 pg_basebackup.c:2146 pg_basebackup.c:2157 -#: pg_basebackup.c:2170 pg_basebackup.c:2180 pg_basebackup.c:2190 -#: pg_basebackup.c:2202 pg_basebackup.c:2213 pg_receivexlog.c:477 +#: pg_basebackup.c:2150 pg_basebackup.c:2164 pg_basebackup.c:2175 +#: pg_basebackup.c:2188 pg_basebackup.c:2198 pg_basebackup.c:2208 +#: pg_basebackup.c:2220 pg_basebackup.c:2231 pg_receivexlog.c:477 #: pg_receivexlog.c:491 pg_receivexlog.c:499 pg_receivexlog.c:509 -#: pg_receivexlog.c:520 pg_recvlogical.c:787 pg_recvlogical.c:801 -#: pg_recvlogical.c:812 pg_recvlogical.c:820 pg_recvlogical.c:828 -#: pg_recvlogical.c:836 pg_recvlogical.c:844 pg_recvlogical.c:852 +#: pg_receivexlog.c:520 pg_recvlogical.c:790 pg_recvlogical.c:804 +#: pg_recvlogical.c:815 pg_recvlogical.c:823 pg_recvlogical.c:831 +#: pg_recvlogical.c:839 pg_recvlogical.c:847 pg_recvlogical.c:855 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Use «%s --help» para obtener más información.\n" -#: pg_basebackup.c:2144 pg_receivexlog.c:489 pg_recvlogical.c:799 +#: pg_basebackup.c:2162 pg_receivexlog.c:489 pg_recvlogical.c:802 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: demasiados argumentos en la línea de órdenes (el primero es «%s»)\n" -#: pg_basebackup.c:2156 pg_receivexlog.c:519 +#: pg_basebackup.c:2174 pg_receivexlog.c:519 #, c-format msgid "%s: no target directory specified\n" msgstr "%s: no se especificó un directorio de salida\n" -#: pg_basebackup.c:2168 +#: pg_basebackup.c:2186 #, c-format msgid "%s: only tar mode backups can be compressed\n" msgstr "%s: sólo los respaldos de modo tar pueden ser comprimidos\n" -#: pg_basebackup.c:2178 +#: pg_basebackup.c:2196 #, c-format msgid "%s: WAL streaming can only be used in plain mode\n" msgstr "%s: el flujo de WAL sólo puede usar en modo «plain»\n" -#: pg_basebackup.c:2188 +#: pg_basebackup.c:2206 #, c-format msgid "%s: replication slots can only be used with WAL streaming\n" msgstr "%s: los slots de replicación sólo pueden usarse con flujo de WAL\n" -#: pg_basebackup.c:2200 +#: pg_basebackup.c:2218 #, c-format msgid "%s: transaction log directory location can only be specified in plain mode\n" msgstr "%s: la ubicación del registro transaccional sólo puede especificarse en modo «plain»\n" -#: pg_basebackup.c:2211 +#: pg_basebackup.c:2229 #, c-format msgid "%s: transaction log directory location must be an absolute path\n" msgstr "%s: la ubicación del registro transaccional debe ser una ruta absoluta\n" -#: pg_basebackup.c:2223 +#: pg_basebackup.c:2241 #, c-format msgid "%s: this build does not support compression\n" msgstr "%s: esta instalación no soporta compresión\n" -#: pg_basebackup.c:2250 +#: pg_basebackup.c:2268 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" msgstr "%s: no se pudo crear el enlace simbólico «%s»: %s\n" -#: pg_basebackup.c:2255 +#: pg_basebackup.c:2273 #, c-format msgid "%s: symlinks are not supported on this platform\n" msgstr "%s: los enlaces simbólicos no están soportados en esta plataforma\n" @@ -641,7 +651,7 @@ msgstr "" "%s recibe flujos del registro transaccional de PostgreSQL.\n" "\n" -#: pg_receivexlog.c:68 pg_recvlogical.c:75 +#: pg_receivexlog.c:68 pg_recvlogical.c:78 #, c-format msgid "" "\n" @@ -655,17 +665,17 @@ msgstr "" msgid " -D, --directory=DIR receive transaction log files into this directory\n" msgstr " -D, --directory=DIR recibe los archivos de transacción a este directorio\n" -#: pg_receivexlog.c:70 pg_recvlogical.c:79 +#: pg_receivexlog.c:70 pg_recvlogical.c:82 #, c-format msgid " --if-not-exists do not error if slot already exists when creating a slot\n" msgstr " --if-not-exists no abandonar si el slot ya existe al crear un slot\n" -#: pg_receivexlog.c:71 pg_recvlogical.c:81 +#: pg_receivexlog.c:71 pg_recvlogical.c:84 #, c-format msgid " -n, --no-loop do not loop on connection lost\n" msgstr " -n, --no-loop no entrar en bucle al perder la conexión\n" -#: pg_receivexlog.c:72 pg_recvlogical.c:86 +#: pg_receivexlog.c:72 pg_recvlogical.c:89 #, c-format msgid "" " -s, --status-interval=SECS\n" @@ -691,12 +701,12 @@ msgstr "" "\n" "Acciones optativas:\n" -#: pg_receivexlog.c:87 pg_recvlogical.c:72 +#: pg_receivexlog.c:87 pg_recvlogical.c:75 #, c-format msgid " --create-slot create a new replication slot (for the slot's name see --slot)\n" msgstr " --create-slot crea un nuevo slot de replicación (para el nombre, vea --slot)\n" -#: pg_receivexlog.c:88 pg_recvlogical.c:73 +#: pg_receivexlog.c:88 pg_recvlogical.c:76 #, c-format msgid " --drop-slot drop the replication slot (for the slot's name see --slot)\n" msgstr " --drop-slot elimina un slot de replicación (para el nombre, vea --slot)\n" @@ -726,7 +736,7 @@ msgstr "%s: no se pudo abrir el directorio «%s»: %s\n" msgid "%s: could not close directory \"%s\": %s\n" msgstr "%s: no se pudo cerrar el directorio «%s»: %s\n" -#: pg_receivexlog.c:218 pg_recvlogical.c:343 +#: pg_receivexlog.c:218 pg_recvlogical.c:346 #, c-format msgid "%s: could not stat file \"%s\": %s\n" msgstr "%s: no se pudo hacer stat del archivo «%s»: %s\n" @@ -746,7 +756,7 @@ msgstr "%s: no se pudo leer el directorio «%s»: %s\n" msgid "%s: starting log streaming at %X/%X (timeline %u)\n" msgstr "%s: iniciando el flujo de log en %X/%X (timeline %u)\n" -#: pg_receivexlog.c:426 pg_recvlogical.c:707 +#: pg_receivexlog.c:426 pg_recvlogical.c:710 #, c-format msgid "%s: invalid port number \"%s\"\n" msgstr "%s: número de puerto «%s» no válido\n" @@ -767,28 +777,28 @@ msgstr "%s: la opcón %s necesita que se especifique un slot con --slot\n" msgid "%s: replication connection using slot \"%s\" is unexpectedly database specific\n" msgstr "%s: la conexión de replicación usando el slot «%s» es inesperadamente específica a una base de datos\n" -#: pg_receivexlog.c:574 pg_recvlogical.c:892 +#: pg_receivexlog.c:574 pg_recvlogical.c:895 #, c-format msgid "%s: dropping replication slot \"%s\"\n" msgstr "%s: eliminando el slot de replicación «%s»\n" -#: pg_receivexlog.c:587 pg_recvlogical.c:904 +#: pg_receivexlog.c:587 pg_recvlogical.c:907 #, c-format msgid "%s: creating replication slot \"%s\"\n" msgstr "%s: creando el slot de replicación «%s»\n" -#: pg_receivexlog.c:614 pg_recvlogical.c:930 +#: pg_receivexlog.c:614 pg_recvlogical.c:933 #, c-format msgid "%s: disconnected\n" msgstr "%s: desconectado\n" #. translator: check source for value for %d -#: pg_receivexlog.c:621 pg_recvlogical.c:937 +#: pg_receivexlog.c:621 pg_recvlogical.c:940 #, c-format msgid "%s: disconnected; waiting %d seconds to try again\n" msgstr "%s: desconectado; esperando %d segundos para intentar nuevamente\n" -#: pg_recvlogical.c:67 +#: pg_recvlogical.c:70 #, c-format msgid "" "%s controls PostgreSQL logical decoding streams.\n" @@ -797,7 +807,7 @@ msgstr "" "%s controla flujos de decodificación lógica de PostgreSQL.\n" "\n" -#: pg_recvlogical.c:71 +#: pg_recvlogical.c:74 #, c-format msgid "" "\n" @@ -806,17 +816,17 @@ msgstr "" "\n" "Acciones a ejecutar:\n" -#: pg_recvlogical.c:74 +#: pg_recvlogical.c:77 #, c-format msgid " --start start streaming in a replication slot (for the slot's name see --slot)\n" msgstr " --start inicie flujo en un slot de replicación (para el nombre, vea --slot)\n" -#: pg_recvlogical.c:76 +#: pg_recvlogical.c:79 #, c-format msgid " -f, --file=FILE receive log into this file, - for stdout\n" msgstr " -f, --file=ARCHIVO recibe el log en este archivo, - para stdout\n" -#: pg_recvlogical.c:77 +#: pg_recvlogical.c:80 #, c-format msgid "" " -F --fsync-interval=SECS\n" @@ -825,12 +835,12 @@ msgstr "" " -F, --fsync-interval=SEGS\n" " tiempo entre fsyncs del archivo de salida (omisión: %d)\n" -#: pg_recvlogical.c:80 +#: pg_recvlogical.c:83 #, c-format msgid " -I, --startpos=LSN where in an existing slot should the streaming start\n" msgstr " -I, --startpos=LSN dónde en un slot existente debe empezar el flujo\n" -#: pg_recvlogical.c:82 +#: pg_recvlogical.c:85 #, c-format msgid "" " -o, --option=NAME[=VALUE]\n" @@ -841,322 +851,313 @@ msgstr "" " pasar opción NOMBRE con valor opcional VALOR al\n" " plugin de salida\n" -#: pg_recvlogical.c:85 +#: pg_recvlogical.c:88 #, c-format msgid " -P, --plugin=PLUGIN use output plugin PLUGIN (default: %s)\n" msgstr " -P, --plugin=PLUGIN use plugin de salida PLUGIN (omisión: %s)\n" -#: pg_recvlogical.c:88 +#: pg_recvlogical.c:91 #, c-format msgid " -S, --slot=SLOTNAME name of the logical replication slot\n" msgstr " -S, --slot=NOMBRE-SLOT nombre del slot de replicación lógica\n" -#: pg_recvlogical.c:93 +#: pg_recvlogical.c:96 #, c-format msgid " -d, --dbname=DBNAME database to connect to\n" msgstr " -d, --dbname=BASE base de datos a la cual conectarse\n" -#: pg_recvlogical.c:126 +#: pg_recvlogical.c:129 #, c-format msgid "%s: confirming write up to %X/%X, flush to %X/%X (slot %s)\n" msgstr "%s: confirmando escritura hasta %X/%X, fsync hasta %X/%X (slot %s)\n" -#: pg_recvlogical.c:151 receivelog.c:404 +#: pg_recvlogical.c:154 receivelog.c:407 #, c-format msgid "%s: could not send feedback packet: %s" msgstr "%s: no se pudo enviar el paquete de retroalimentación: %s" -#: pg_recvlogical.c:190 +#: pg_recvlogical.c:193 #, c-format msgid "%s: could not fsync log file \"%s\": %s\n" msgstr "%s: no se pudo sincronizar (fsync) el archivo de registro «%s»: %s\n" -#: pg_recvlogical.c:229 +#: pg_recvlogical.c:232 #, c-format msgid "%s: starting log streaming at %X/%X (slot %s)\n" msgstr "%s: iniciando el flujo de log en %X/%X (slot %s)\n" -#: pg_recvlogical.c:271 +#: pg_recvlogical.c:274 #, c-format msgid "%s: streaming initiated\n" msgstr "%s: flujo iniciado\n" -#: pg_recvlogical.c:336 +#: pg_recvlogical.c:339 #, c-format msgid "%s: could not open log file \"%s\": %s\n" msgstr "%s: no se pudo abrir archivo de log «%s»: %s\n" -#: pg_recvlogical.c:366 receivelog.c:933 +#: pg_recvlogical.c:369 receivelog.c:938 #, c-format msgid "%s: invalid socket: %s" msgstr "%s: el socket no es válido: %s" -#: pg_recvlogical.c:420 receivelog.c:955 +#: pg_recvlogical.c:423 receivelog.c:960 #, c-format msgid "%s: select() failed: %s\n" msgstr "%s: select() falló: %s\n" -#: pg_recvlogical.c:429 receivelog.c:1005 +#: pg_recvlogical.c:432 receivelog.c:1010 #, c-format msgid "%s: could not receive data from WAL stream: %s" msgstr "%s: no se pudo recibir datos desde el flujo de WAL: %s" -#: pg_recvlogical.c:470 pg_recvlogical.c:509 receivelog.c:1050 -#: receivelog.c:1117 +#: pg_recvlogical.c:473 pg_recvlogical.c:512 receivelog.c:1055 +#: receivelog.c:1122 #, c-format msgid "%s: streaming header too small: %d\n" msgstr "%s: cabecera de flujo demasiado pequeña: %d\n" -#: pg_recvlogical.c:492 receivelog.c:898 +#: pg_recvlogical.c:495 receivelog.c:903 #, c-format msgid "%s: unrecognized streaming header: \"%c\"\n" msgstr "%s: cabecera de flujo no reconocida: «%c»\n" -#: pg_recvlogical.c:538 pg_recvlogical.c:552 +#: pg_recvlogical.c:541 pg_recvlogical.c:555 #, c-format msgid "%s: could not write %u bytes to log file \"%s\": %s\n" msgstr "%s: no se pudo escribir %u bytes al archivo de registro «%s»: %s\n" -#: pg_recvlogical.c:563 receivelog.c:691 receivelog.c:729 +#: pg_recvlogical.c:566 receivelog.c:696 receivelog.c:734 #, c-format msgid "%s: unexpected termination of replication stream: %s" msgstr "%s: término inesperado del flujo de replicación: %s" -#: pg_recvlogical.c:686 +#: pg_recvlogical.c:689 #, c-format msgid "%s: invalid fsync interval \"%s\"\n" msgstr "%s: intervalo de fsync «%s» no válido\n" -#: pg_recvlogical.c:727 +#: pg_recvlogical.c:730 #, c-format msgid "%s: could not parse start position \"%s\"\n" msgstr "%s: no se pudo interpretar la posición de inicio «%s»\n" -#: pg_recvlogical.c:811 +#: pg_recvlogical.c:814 #, c-format msgid "%s: no slot specified\n" msgstr "%s: no se especificó slot\n" -#: pg_recvlogical.c:819 +#: pg_recvlogical.c:822 #, c-format msgid "%s: no target file specified\n" msgstr "%s: no se especificó un archivo de destino\n" -#: pg_recvlogical.c:827 +#: pg_recvlogical.c:830 #, c-format msgid "%s: no database specified\n" msgstr "%s: no se especificó una base de datos\n" -#: pg_recvlogical.c:835 +#: pg_recvlogical.c:838 #, c-format msgid "%s: at least one action needs to be specified\n" msgstr "%s: debe especificarse al menos una operación\n" -#: pg_recvlogical.c:843 +#: pg_recvlogical.c:846 #, c-format msgid "%s: cannot use --create-slot or --start together with --drop-slot\n" msgstr "%s: no puede usarse --create-slot o --start junto con --drop-slot\n" -#: pg_recvlogical.c:851 +#: pg_recvlogical.c:854 #, c-format msgid "%s: cannot use --create-slot or --drop-slot together with --startpos\n" msgstr "%s: no puede usarse --create-slot o --drop-slot junto con --startpos\n" -#: pg_recvlogical.c:882 +#: pg_recvlogical.c:885 #, c-format msgid "%s: could not establish database-specific replication connection\n" msgstr "%s: no se pudo establecer una conexión de replicación específica a una base de datos\n" -#: receivelog.c:66 +#: receivelog.c:69 #, c-format msgid "%s: could not create archive status file \"%s\": %s\n" msgstr "%s: no se pudo crear el archivo de estado «%s»: %s\n" -#: receivelog.c:73 receivelog.c:196 receivelog.c:344 receivelog.c:828 -#: receivelog.c:1071 +#: receivelog.c:76 receivelog.c:199 receivelog.c:347 receivelog.c:833 +#: receivelog.c:1076 #, c-format msgid "%s: could not fsync file \"%s\": %s\n" msgstr "%s: no se pudo sincronizar (fsync) el archivo «%s»: %s\n" -#: receivelog.c:111 +#: receivelog.c:114 #, c-format msgid "%s: could not open transaction log file \"%s\": %s\n" msgstr "%s: no se pudo abrir el archivo de transacción «%s»: %s\n" -#: receivelog.c:123 +#: receivelog.c:126 #, c-format msgid "%s: could not stat transaction log file \"%s\": %s\n" msgstr "%s: no se pudo hacer stat del archivo de transacción «%s»: %s\n" -#: receivelog.c:137 +#: receivelog.c:140 #, c-format msgid "%s: transaction log file \"%s\" has %d bytes, should be 0 or %d\n" msgstr "%s: el archivo de transacción «%s» mide %d bytes, debería ser 0 o %d\n" -#: receivelog.c:150 +#: receivelog.c:153 #, c-format msgid "%s: could not pad transaction log file \"%s\": %s\n" msgstr "%s: no se pudo rellenar (pad) el archivo de transacción «%s»: %s\n" -#: receivelog.c:163 +#: receivelog.c:166 #, c-format msgid "%s: could not seek to beginning of transaction log file \"%s\": %s\n" msgstr "%s: no se pudo posicionar (seek) al inicio del archivo de transacción «%s»: %s\n" -#: receivelog.c:189 +#: receivelog.c:192 #, c-format msgid "%s: could not determine seek position in file \"%s\": %s\n" msgstr "%s: no se pudo determinar la posición (seek) en el archivo «%s»: %s\n" -#: receivelog.c:222 +#: receivelog.c:225 #, c-format msgid "%s: could not rename file \"%s\": %s\n" msgstr "%s: no se pudo cambiar el nombre al archivo «%s»: %s\n" -#: receivelog.c:229 +#: receivelog.c:232 #, c-format msgid "%s: not renaming \"%s%s\", segment is not complete\n" msgstr "%s: no se cambiará el nombre a «%s%s», el segmento no está completo\n" -#: receivelog.c:275 +#: receivelog.c:278 #, c-format msgid "%s: could not open timeline history file \"%s\": %s\n" msgstr "%s: no se pudo abrir el archivo de historia de timeline «%s»: %s\n" -#: receivelog.c:302 +#: receivelog.c:305 #, c-format msgid "%s: server reported unexpected history file name for timeline %u: %s\n" msgstr "%s: el servidor reportó un nombre inesperado para el archivo de historia de timeline %u: %s\n" -#: receivelog.c:319 +#: receivelog.c:322 #, c-format msgid "%s: could not create timeline history file \"%s\": %s\n" msgstr "%s: no se pudo crear el archivo de historia de timeline «%s»: %s\n" -#: receivelog.c:336 +#: receivelog.c:339 #, c-format msgid "%s: could not write timeline history file \"%s\": %s\n" msgstr "%s: no se pudo escribir al archivo de historia de timeline «%s»: %s\n" -#: receivelog.c:361 +#: receivelog.c:364 #, c-format msgid "%s: could not rename file \"%s\" to \"%s\": %s\n" msgstr "%s: no se pudo cambiar el nombre al archivo «%s» a «%s»: %s\n" -#: receivelog.c:438 +#: receivelog.c:441 #, c-format msgid "%s: incompatible server version %s; client does not support streaming from server versions older than %s\n" msgstr "%s: versión de servidor %s incompatible; el cliente no soporta flujos de servidores anteriores a la versión %s\n" -#: receivelog.c:448 +#: receivelog.c:451 #, c-format msgid "%s: incompatible server version %s; client does not support streaming from server versions newer than %s\n" msgstr "%s: versión de servidor %s incompatible; el cliente no soporta flujos de servidores posteriores a %s\n" -#: receivelog.c:544 streamutil.c:264 streamutil.c:303 +#: receivelog.c:549 streamutil.c:272 streamutil.c:311 #, c-format msgid "%s: could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields\n" msgstr "%s: no se pudo identificar al sistema: se obtuvieron %d filas y %d campos, se esperaban %d filas y %d o más campos\n" -#: receivelog.c:552 +#: receivelog.c:557 #, c-format msgid "%s: system identifier does not match between base backup and streaming connection\n" msgstr "%s: el identificador de sistema no coincide entre el respaldo base y la conexión de flujo\n" -#: receivelog.c:560 +#: receivelog.c:565 #, c-format msgid "%s: starting timeline %u is not present in the server\n" msgstr "%s: el timeline de inicio %u no está presente en el servidor\n" -#: receivelog.c:600 +#: receivelog.c:605 #, c-format msgid "%s: unexpected response to TIMELINE_HISTORY command: got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: respuesta inesperada a la orden TIMELINE_HISTORY: se obtuvieron %d filas y %d campos, se esperaban %d filas y %d campos\n" -#: receivelog.c:672 +#: receivelog.c:677 #, c-format msgid "%s: server reported unexpected next timeline %u, following timeline %u\n" msgstr "%s: el servidor reportó un timeline siguiente %u inesperado, a continuación del timeline %u\n" -#: receivelog.c:679 +#: receivelog.c:684 #, c-format msgid "%s: server stopped streaming timeline %u at %X/%X, but reported next timeline %u to begin at %X/%X\n" msgstr "%s: el servidor paró la transmisión del timeline %u en %X/%X, pero reportó que el siguiente timeline %u comienza en %X/%X\n" -#: receivelog.c:720 +#: receivelog.c:725 #, c-format msgid "%s: replication stream was terminated before stop point\n" msgstr "%s: el flujo de replicación terminó antes del punto de término\n" -#: receivelog.c:769 +#: receivelog.c:774 #, c-format msgid "%s: unexpected result set after end-of-timeline: got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: respuesta inesperada después del fin-de-timeline: se obtuvieron %d filas y %d campos, se esperaban %d filas y %d campos\n" -#: receivelog.c:779 +#: receivelog.c:784 #, c-format msgid "%s: could not parse next timeline's starting point \"%s\"\n" msgstr "%s: no se pudo interpretar el punto de inicio del siguiente timeline «%s»\n" -#: receivelog.c:1136 +#: receivelog.c:1141 #, c-format msgid "%s: received transaction log record for offset %u with no file open\n" msgstr "%s: se recibió un registro transaccional para el desplazamiento %u sin ningún archivo abierto\n" -#: receivelog.c:1148 +#: receivelog.c:1153 #, c-format msgid "%s: got WAL data offset %08x, expected %08x\n" msgstr "%s: se obtuvo desplazamiento de datos WAL %08x, se esperaba %08x\n" -#: receivelog.c:1184 +#: receivelog.c:1189 #, c-format msgid "%s: could not write %u bytes to WAL file \"%s\": %s\n" msgstr "%s: no se pudo escribir %u bytes al archivo WAL «%s»: %s\n" -#: receivelog.c:1209 receivelog.c:1250 receivelog.c:1281 +#: receivelog.c:1214 receivelog.c:1255 receivelog.c:1286 #, c-format msgid "%s: could not send copy-end packet: %s" msgstr "%s: no se pudo enviar el paquete copy-end: %s" -#: streamutil.c:145 +#: streamutil.c:153 msgid "Password: " msgstr "Contraseña: " -#: streamutil.c:169 +#: streamutil.c:177 #, c-format msgid "%s: could not connect to server\n" msgstr "%s: no se pudo conectar al servidor\n" -#: streamutil.c:187 +#: streamutil.c:195 #, c-format msgid "%s: could not connect to server: %s" msgstr "%s: no se pudo conectar al servidor: %s" -#: streamutil.c:211 +#: streamutil.c:219 #, c-format msgid "%s: could not determine server setting for integer_datetimes\n" msgstr "%s: no se pudo determinar la opción integer_datetimes del servidor\n" -#: streamutil.c:224 +#: streamutil.c:232 #, c-format msgid "%s: integer_datetimes compile flag does not match server\n" msgstr "%s: la opción de compilación integer_datetimes no coincide con el servidor\n" -#: streamutil.c:371 +#: streamutil.c:379 #, c-format msgid "%s: could not create replication slot \"%s\": got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: no se pudo create el slot de replicación «%s»: se obtuvieron %d filas y %d campos, se esperaban %d filas y %d campos\n" -#: streamutil.c:416 +#: streamutil.c:424 #, c-format msgid "%s: could not drop replication slot \"%s\": got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: no se pudo eliminar el slot de replicación «%s»: se obtuvieron %d filas y %d campos, se esperaban %d filas y %d campos\n" - -#~ msgid "%s: socket not open" -#~ msgstr "%s: socket no abierto" - -#~ msgid "%s: could not parse file mode\n" -#~ msgstr "%s: nose pudo interpretar el modo del archivo\n" - -#~ msgid "%s: could not parse file size\n" -#~ msgstr "%s: no se pudo interpretar el tamaño del archivo\n" diff --git a/src/bin/pg_basebackup/po/fr.po b/src/bin/pg_basebackup/po/fr.po index f728759f57..425d7fa5c9 100644 --- a/src/bin/pg_basebackup/po/fr.po +++ b/src/bin/pg_basebackup/po/fr.po @@ -7,130 +7,130 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-05-08 21:14+0000\n" -"PO-Revision-Date: 2016-05-09 10:19+0200\n" +"POT-Creation-Date: 2017-06-30 16:23+0000\n" +"PO-Revision-Date: 2017-07-02 17:42+0200\n" "Last-Translator: Guillaume Lelarge \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-15\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 1.8.7.1\n" +"X-Generator: Poedit 1.8.12\n" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 #: ../../common/fe_memutils.c:98 #, c-format msgid "out of memory\n" -msgstr "mémoire épuisée\n" +msgstr "mémoire épuisée\n" #: ../../common/fe_memutils.c:92 #, c-format msgid "cannot duplicate null pointer (internal error)\n" msgstr "ne peut pas dupliquer un pointeur nul (erreur interne)\n" -#: pg_basebackup.c:154 +#: pg_basebackup.c:156 #, c-format msgid "%s: directory name too long\n" -msgstr "%s : nom du répertoire trop long\n" +msgstr "%s : nom du répertoire trop long\n" -#: pg_basebackup.c:164 +#: pg_basebackup.c:166 #, c-format msgid "%s: multiple \"=\" signs in tablespace mapping\n" -msgstr "%s : multiple signes « = » dans la correspondance de tablespace\n" +msgstr "%s : multiple signes « = » dans la correspondance de tablespace\n" -#: pg_basebackup.c:177 +#: pg_basebackup.c:179 #, c-format msgid "%s: invalid tablespace mapping format \"%s\", must be \"OLDDIR=NEWDIR\"\n" -msgstr "%s : format de correspondance de tablespace « %s » invalide, doit être « ANCIENREPERTOIRE=NOUVEAUREPERTOIRE »\n" +msgstr "%s : format de correspondance de tablespace « %s » invalide, doit être « ANCIENREPERTOIRE=NOUVEAUREPERTOIRE »\n" -#: pg_basebackup.c:190 +#: pg_basebackup.c:192 #, c-format msgid "%s: old directory is not an absolute path in tablespace mapping: %s\n" -msgstr "%s : l'ancien répertoire n'est pas un chemin absolu dans la correspondance de tablespace : %s\n" +msgstr "%s : l'ancien répertoire n'est pas un chemin absolu dans la correspondance de tablespace : %s\n" -#: pg_basebackup.c:197 +#: pg_basebackup.c:199 #, c-format msgid "%s: new directory is not an absolute path in tablespace mapping: %s\n" -msgstr "%s : le nouveau répertoire n'est pas un chemin absolu dans la correspondance de tablespace : %s\n" +msgstr "%s : le nouveau répertoire n'est pas un chemin absolu dans la correspondance de tablespace : %s\n" -#: pg_basebackup.c:231 +#: pg_basebackup.c:233 #, c-format msgid "" "%s takes a base backup of a running PostgreSQL server.\n" "\n" msgstr "" -"%s prend une sauvegarde binaire d'un serveur PostgreSQL en cours d'exécution.\n" +"%s prend une sauvegarde binaire d'un serveur PostgreSQL en cours d'exécution.\n" "\n" -#: pg_basebackup.c:233 pg_receivexlog.c:66 pg_recvlogical.c:69 +#: pg_basebackup.c:235 pg_receivexlog.c:66 pg_recvlogical.c:72 #, c-format msgid "Usage:\n" msgstr "Usage :\n" -#: pg_basebackup.c:234 pg_receivexlog.c:67 pg_recvlogical.c:70 +#: pg_basebackup.c:236 pg_receivexlog.c:67 pg_recvlogical.c:73 #, c-format msgid " %s [OPTION]...\n" msgstr " %s [OPTION]...\n" -#: pg_basebackup.c:235 +#: pg_basebackup.c:237 #, c-format msgid "" "\n" "Options controlling the output:\n" msgstr "" "\n" -"Options contrôlant la sortie :\n" +"Options contrôlant la sortie :\n" -#: pg_basebackup.c:236 +#: pg_basebackup.c:238 #, c-format msgid " -D, --pgdata=DIRECTORY receive base backup into directory\n" -msgstr " -D, --pgdata=RÉPERTOIRE reçoit la sauvegarde de base dans ce répertoire\n" +msgstr " -D, --pgdata=RÉPERTOIRE reçoit la sauvegarde de base dans ce répertoire\n" -#: pg_basebackup.c:237 +#: pg_basebackup.c:239 #, c-format msgid " -F, --format=p|t output format (plain (default), tar)\n" -msgstr " -F, --format=p|t format en sortie (plain (par défaut), tar)\n" +msgstr " -F, --format=p|t format en sortie (plain (par défaut), tar)\n" -#: pg_basebackup.c:238 +#: pg_basebackup.c:240 #, c-format msgid "" " -r, --max-rate=RATE maximum transfer rate to transfer data directory\n" " (in kB/s, or use suffix \"k\" or \"M\")\n" msgstr "" -" -r, --max-rate=TAUX taux maximum de transfert du répertoire de\n" -" données (en Ko/s, ou utiliser le suffixe « k »\n" -" ou « M »)\n" +" -r, --max-rate=TAUX taux maximum de transfert du répertoire de\n" +" données (en Ko/s, ou utiliser le suffixe « k »\n" +" ou « M »)\n" -#: pg_basebackup.c:240 +#: pg_basebackup.c:242 #, c-format msgid "" " -R, --write-recovery-conf\n" -" write recovery.conf after backup\n" -msgstr " -R, --write-recovery-conf écrit le recovery.conf après la sauvegarde\n" +" write recovery.conf for replication\n" +msgstr " -R, --write-recovery-conf écrit le recovery.conf pour la réplication\n" -#: pg_basebackup.c:242 pg_receivexlog.c:74 +#: pg_basebackup.c:244 pg_receivexlog.c:74 #, c-format msgid " -S, --slot=SLOTNAME replication slot to use\n" -msgstr " -S, --slot=NOMREP slot de réplication à utiliser\n" +msgstr " -S, --slot=NOMREP slot de réplication à utiliser\n" -#: pg_basebackup.c:243 +#: pg_basebackup.c:245 #, c-format msgid "" " -T, --tablespace-mapping=OLDDIR=NEWDIR\n" " relocate tablespace in OLDDIR to NEWDIR\n" msgstr "" " -T, --tablespace-mapping=ANCIENREP=NOUVEAUREP\n" -" déplacer le répertoire ANCIENREP en NOUVEAUREP\n" +" déplacer le répertoire ANCIENREP en NOUVEAUREP\n" -#: pg_basebackup.c:245 +#: pg_basebackup.c:247 #, c-format msgid " -x, --xlog include required WAL files in backup (fetch mode)\n" msgstr "" -" -x, --xlog inclut les journaux de transactions nécessaires\n" +" -x, --xlog inclut les journaux de transactions nécessaires\n" " dans la sauvegarde (mode fetch)\n" -#: pg_basebackup.c:246 +#: pg_basebackup.c:248 #, c-format msgid "" " -X, --xlog-method=fetch|stream\n" @@ -138,69 +138,69 @@ msgid "" msgstr "" " -X, --xlog-method=fetch|stream\n" " inclut les journaux de transactions requis avec\n" -" la méthode spécifiée\n" +" la méthode spécifiée\n" -#: pg_basebackup.c:248 +#: pg_basebackup.c:250 #, c-format msgid " --xlogdir=XLOGDIR location for the transaction log directory\n" msgstr "" -" -X, --xlogdir=RÉP_XLOG emplacement du répertoire des journaux de\n" +" -X, --xlogdir=RÉP_XLOG emplacement du répertoire des journaux de\n" " transactions\n" -#: pg_basebackup.c:249 +#: pg_basebackup.c:251 #, c-format msgid " -z, --gzip compress tar output\n" msgstr " -z, --gzip compresse la sortie tar\n" -#: pg_basebackup.c:250 +#: pg_basebackup.c:252 #, c-format msgid " -Z, --compress=0-9 compress tar output with given compression level\n" msgstr "" " -Z, --compress=0-9 compresse la sortie tar avec le niveau de\n" -" compression indiqué\n" +" compression indiqué\n" -#: pg_basebackup.c:251 +#: pg_basebackup.c:253 #, c-format msgid "" "\n" "General options:\n" msgstr "" "\n" -"Options générales :\n" +"Options générales :\n" -#: pg_basebackup.c:252 +#: pg_basebackup.c:254 #, c-format msgid "" " -c, --checkpoint=fast|spread\n" " set fast or spread checkpointing\n" -msgstr " -c, --checkpoint=fast|spread exécute un CHECKPOINT rapide ou réparti\n" +msgstr " -c, --checkpoint=fast|spread exécute un CHECKPOINT rapide ou réparti\n" -#: pg_basebackup.c:254 +#: pg_basebackup.c:256 #, c-format msgid " -l, --label=LABEL set backup label\n" msgstr " -l, --label=LABEL configure le label de sauvegarde\n" -#: pg_basebackup.c:255 +#: pg_basebackup.c:257 #, c-format msgid " -P, --progress show progress information\n" msgstr " -P, --progress affiche la progression de la sauvegarde\n" -#: pg_basebackup.c:256 pg_receivexlog.c:76 pg_recvlogical.c:89 +#: pg_basebackup.c:258 pg_receivexlog.c:76 pg_recvlogical.c:92 #, c-format msgid " -v, --verbose output verbose messages\n" msgstr " -v, --verbose affiche des messages verbeux\n" -#: pg_basebackup.c:257 pg_receivexlog.c:77 pg_recvlogical.c:90 +#: pg_basebackup.c:259 pg_receivexlog.c:77 pg_recvlogical.c:93 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version affiche la version puis quitte\n" -#: pg_basebackup.c:258 pg_receivexlog.c:78 pg_recvlogical.c:91 +#: pg_basebackup.c:260 pg_receivexlog.c:78 pg_recvlogical.c:94 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help affiche cette aide puis quitte\n" -#: pg_basebackup.c:259 pg_receivexlog.c:79 pg_recvlogical.c:92 +#: pg_basebackup.c:261 pg_receivexlog.c:79 pg_recvlogical.c:95 #, c-format msgid "" "\n" @@ -209,441 +209,451 @@ msgstr "" "\n" "Options de connexion :\n" -#: pg_basebackup.c:260 pg_receivexlog.c:80 +#: pg_basebackup.c:262 pg_receivexlog.c:80 #, c-format msgid " -d, --dbname=CONNSTR connection string\n" -msgstr " -d, --dbname=CONNSTR chaîne de connexion\n" +msgstr " -d, --dbname=CONNSTR chaîne de connexion\n" -#: pg_basebackup.c:261 pg_receivexlog.c:81 pg_recvlogical.c:94 +#: pg_basebackup.c:263 pg_receivexlog.c:81 pg_recvlogical.c:97 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" -" -h, --host=NOMHÔTE hôte du serveur de bases de données ou\n" -" répertoire des sockets\n" +" -h, --host=NOMHÔTE hôte du serveur de bases de données ou\n" +" répertoire des sockets\n" -#: pg_basebackup.c:262 pg_receivexlog.c:82 pg_recvlogical.c:95 +#: pg_basebackup.c:264 pg_receivexlog.c:82 pg_recvlogical.c:98 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr "" -" -p, --port=PORT numéro de port du serveur de bases de\n" -" données\n" +" -p, --port=PORT numéro de port du serveur de bases de\n" +" données\n" -#: pg_basebackup.c:263 +#: pg_basebackup.c:265 #, c-format msgid "" " -s, --status-interval=INTERVAL\n" " time between status packets sent to server (in seconds)\n" msgstr "" -" -s, --status-interval=INTERVAL durée entre l'envoi de paquets de statut au\n" +" -s, --status-interval=INTERVAL durée entre l'envoi de paquets de statut au\n" " serveur (en secondes)\n" -#: pg_basebackup.c:265 pg_receivexlog.c:83 pg_recvlogical.c:96 +#: pg_basebackup.c:267 pg_receivexlog.c:83 pg_recvlogical.c:99 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=NOM se connecte avec cet utilisateur\n" -#: pg_basebackup.c:266 pg_receivexlog.c:84 pg_recvlogical.c:97 +#: pg_basebackup.c:268 pg_receivexlog.c:84 pg_recvlogical.c:100 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password ne demande jamais le mot de passe\n" -#: pg_basebackup.c:267 pg_receivexlog.c:85 pg_recvlogical.c:98 +#: pg_basebackup.c:269 pg_receivexlog.c:85 pg_recvlogical.c:101 #, c-format msgid " -W, --password force password prompt (should happen automatically)\n" msgstr "" " -W, --password force la demande du mot de passe (devrait arriver\n" " automatiquement)\n" -#: pg_basebackup.c:268 pg_receivexlog.c:89 pg_recvlogical.c:99 +#: pg_basebackup.c:270 pg_receivexlog.c:89 pg_recvlogical.c:102 #, c-format msgid "" "\n" "Report bugs to .\n" msgstr "" "\n" -"Rapporter les bogues à .\n" +"Rapporter les bogues à .\n" -#: pg_basebackup.c:311 +#: pg_basebackup.c:313 #, c-format msgid "%s: could not read from ready pipe: %s\n" -msgstr "%s : n'a pas pu lire à partir du tube : %s\n" +msgstr "%s : n'a pas pu lire à partir du tube : %s\n" -#: pg_basebackup.c:319 pg_basebackup.c:422 pg_basebackup.c:1892 -#: streamutil.c:285 +#: pg_basebackup.c:321 pg_basebackup.c:424 pg_basebackup.c:1906 +#: streamutil.c:293 #, c-format msgid "%s: could not parse transaction log location \"%s\"\n" -msgstr "%s : n'a pas pu analyser l'emplacement du journal des transactions « %s »\n" +msgstr "%s : n'a pas pu analyser l'emplacement du journal des transactions « %s »\n" -#: pg_basebackup.c:435 +#: pg_basebackup.c:437 #, c-format msgid "%s: could not create pipe for background process: %s\n" -msgstr "%s : n'a pas pu créer un tube pour le processus en tâche de fond : %s\n" +msgstr "%s : n'a pas pu créer un tube pour le processus en tâche de fond : %s\n" -#: pg_basebackup.c:460 pg_basebackup.c:515 pg_basebackup.c:1263 +#: pg_basebackup.c:462 pg_basebackup.c:517 pg_basebackup.c:1265 #, c-format msgid "%s: could not create directory \"%s\": %s\n" -msgstr "%s : n'a pas pu créer le répertoire « %s » : %s\n" +msgstr "%s : n'a pas pu créer le répertoire « %s » : %s\n" -#: pg_basebackup.c:478 +#: pg_basebackup.c:480 #, c-format msgid "%s: could not create background process: %s\n" -msgstr "%s : n'a pas pu créer un processus en tâche de fond : %s\n" +msgstr "%s : n'a pas pu créer un processus en tâche de fond : %s\n" -#: pg_basebackup.c:490 +#: pg_basebackup.c:492 #, c-format msgid "%s: could not create background thread: %s\n" -msgstr "%s : n'a pas pu créer un thread en tâche de fond : %s\n" +msgstr "%s : n'a pas pu créer un thread en tâche de fond : %s\n" -#: pg_basebackup.c:534 +#: pg_basebackup.c:536 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" -msgstr "%s : le répertoire « %s » existe mais n'est pas vide\n" +msgstr "%s : le répertoire « %s » existe mais n'est pas vide\n" -#: pg_basebackup.c:542 +#: pg_basebackup.c:544 #, c-format msgid "%s: could not access directory \"%s\": %s\n" -msgstr "%s : n'a pas pu accéder au répertoire « %s » : %s\n" +msgstr "%s : n'a pas pu accéder au répertoire « %s » : %s\n" -#: pg_basebackup.c:604 +#: pg_basebackup.c:606 #, c-format msgid "%*s/%s kB (100%%), %d/%d tablespace %*s" msgid_plural "%*s/%s kB (100%%), %d/%d tablespaces %*s" msgstr[0] "%*s/%s Ko (100%%), %d/%d tablespace %*s" msgstr[1] "%*s/%s Ko (100%%), %d/%d tablespaces %*s" -#: pg_basebackup.c:616 +#: pg_basebackup.c:618 #, c-format msgid "%*s/%s kB (%d%%), %d/%d tablespace (%s%-*.*s)" msgid_plural "%*s/%s kB (%d%%), %d/%d tablespaces (%s%-*.*s)" msgstr[0] "%*s/%s Ko (%d%%), %d/%d tablespace (%s%-*.*s)" msgstr[1] "%*s/%s Ko (%d%%), %d/%d tablespaces (%s%-*.*s)" -#: pg_basebackup.c:632 +#: pg_basebackup.c:634 #, c-format msgid "%*s/%s kB (%d%%), %d/%d tablespace" msgid_plural "%*s/%s kB (%d%%), %d/%d tablespaces" msgstr[0] "%*s/%s Ko (%d%%), %d/%d tablespace" msgstr[1] "%*s/%s Ko (%d%%), %d/%d tablespaces" -#: pg_basebackup.c:654 +#: pg_basebackup.c:656 #, c-format msgid "%s: transfer rate \"%s\" is not a valid value\n" -msgstr "%s : le taux de transfert « %s » ne correspond pas à une valeur valide\n" +msgstr "%s : le taux de transfert « %s » ne correspond pas à une valeur valide\n" -#: pg_basebackup.c:661 +#: pg_basebackup.c:663 #, c-format msgid "%s: invalid transfer rate \"%s\": %s\n" -msgstr "%s : taux de transfert invalide (« %s ») : %s\n" +msgstr "%s : taux de transfert invalide (« %s ») : %s\n" -#: pg_basebackup.c:671 +#: pg_basebackup.c:673 #, c-format msgid "%s: transfer rate must be greater than zero\n" -msgstr "%s : le taux de transfert doit être supérieur à zéro\n" +msgstr "%s : le taux de transfert doit être supérieur à zéro\n" -#: pg_basebackup.c:705 +#: pg_basebackup.c:707 #, c-format msgid "%s: invalid --max-rate unit: \"%s\"\n" -msgstr "%s : unité invalide pour --max-rate : « %s »\n" +msgstr "%s : unité invalide pour --max-rate : « %s »\n" -#: pg_basebackup.c:714 +#: pg_basebackup.c:716 #, c-format msgid "%s: transfer rate \"%s\" exceeds integer range\n" -msgstr "%s : le taux de transfert « %s » dépasse l'échelle des entiers\n" +msgstr "%s : le taux de transfert « %s » dépasse l'échelle des entiers\n" -#: pg_basebackup.c:726 +#: pg_basebackup.c:728 #, c-format msgid "%s: transfer rate \"%s\" is out of range\n" -msgstr "%s : le taux de transfert « %s » est en dehors des limites\n" +msgstr "%s : le taux de transfert « %s » est en dehors des limites\n" -#: pg_basebackup.c:750 +#: pg_basebackup.c:752 #, c-format msgid "%s: could not write to compressed file \"%s\": %s\n" -msgstr "%s : n'a pas pu écrire dans le fichier compressé « %s » : %s\n" +msgstr "%s : n'a pas pu écrire dans le fichier compressé « %s » : %s\n" -#: pg_basebackup.c:760 pg_basebackup.c:1357 pg_basebackup.c:1582 +#: pg_basebackup.c:762 pg_basebackup.c:1359 pg_basebackup.c:1584 #, c-format msgid "%s: could not write to file \"%s\": %s\n" -msgstr "%s : n'a pas pu écrire dans le fichier « %s » : %s\n" +msgstr "%s : n'a pas pu écrire dans le fichier « %s » : %s\n" -#: pg_basebackup.c:815 pg_basebackup.c:836 pg_basebackup.c:864 +#: pg_basebackup.c:817 pg_basebackup.c:838 pg_basebackup.c:866 #, c-format msgid "%s: could not set compression level %d: %s\n" msgstr "%s : n'a pas pu configurer le niveau de compression %d : %s\n" -#: pg_basebackup.c:885 +#: pg_basebackup.c:887 #, c-format msgid "%s: could not create compressed file \"%s\": %s\n" -msgstr "%s : n'a pas pu créer le fichier compressé « %s » : %s\n" +msgstr "%s : n'a pas pu créer le fichier compressé « %s » : %s\n" -#: pg_basebackup.c:896 pg_basebackup.c:1317 pg_basebackup.c:1575 +#: pg_basebackup.c:898 pg_basebackup.c:1319 pg_basebackup.c:1577 #, c-format msgid "%s: could not create file \"%s\": %s\n" -msgstr "%s : n'a pas pu créer le fichier « %s » : %s\n" +msgstr "%s : n'a pas pu créer le fichier « %s » : %s\n" -#: pg_basebackup.c:908 pg_basebackup.c:1172 +#: pg_basebackup.c:910 pg_basebackup.c:1174 #, c-format msgid "%s: could not get COPY data stream: %s" -msgstr "%s : n'a pas pu obtenir le flux de données de COPY : %s" +msgstr "%s : n'a pas pu obtenir le flux de données de COPY : %s" -#: pg_basebackup.c:965 +#: pg_basebackup.c:967 #, c-format msgid "%s: could not close compressed file \"%s\": %s\n" -msgstr "%s : n'a pas pu fermer le fichier compressé « %s » : %s\n" +msgstr "%s : n'a pas pu fermer le fichier compressé « %s » : %s\n" -#: pg_basebackup.c:978 pg_recvlogical.c:577 receivelog.c:203 receivelog.c:351 -#: receivelog.c:738 +#: pg_basebackup.c:980 pg_recvlogical.c:580 receivelog.c:206 receivelog.c:354 +#: receivelog.c:743 #, c-format msgid "%s: could not close file \"%s\": %s\n" -msgstr "%s : n'a pas pu fermer le fichier « %s » : %s\n" +msgstr "%s : n'a pas pu fermer le fichier « %s » : %s\n" -#: pg_basebackup.c:989 pg_basebackup.c:1201 pg_recvlogical.c:443 -#: receivelog.c:1019 +#: pg_basebackup.c:991 pg_basebackup.c:1203 pg_recvlogical.c:446 +#: receivelog.c:1024 #, c-format msgid "%s: could not read COPY data: %s" -msgstr "%s : n'a pas pu lire les données du COPY : %s" +msgstr "%s : n'a pas pu lire les données du COPY : %s" -#: pg_basebackup.c:1215 +#: pg_basebackup.c:1217 #, c-format msgid "%s: invalid tar block header size: %d\n" -msgstr "%s : taille invalide de l'en-tête de bloc du fichier tar : %d\n" +msgstr "%s : taille invalide de l'en-tête de bloc du fichier tar : %d\n" -#: pg_basebackup.c:1271 +#: pg_basebackup.c:1273 #, c-format msgid "%s: could not set permissions on directory \"%s\": %s\n" -msgstr "%s : n'a pas configurer les droits sur le répertoire « %s » : %s\n" +msgstr "%s : n'a pas configurer les droits sur le répertoire « %s » : %s\n" -#: pg_basebackup.c:1295 +#: pg_basebackup.c:1297 #, c-format msgid "%s: could not create symbolic link from \"%s\" to \"%s\": %s\n" -msgstr "%s : n'a pas pu créer le lien symbolique de « %s » vers « %s » : %s\n" +msgstr "%s : n'a pas pu créer le lien symbolique de « %s » vers « %s » : %s\n" -#: pg_basebackup.c:1304 +#: pg_basebackup.c:1306 #, c-format msgid "%s: unrecognized link indicator \"%c\"\n" -msgstr "%s : indicateur de lien « %c » non reconnu\n" +msgstr "%s : indicateur de lien « %c » non reconnu\n" -#: pg_basebackup.c:1324 +#: pg_basebackup.c:1326 #, c-format msgid "%s: could not set permissions on file \"%s\": %s\n" -msgstr "%s : n'a pas pu configurer les droits sur le fichier « %s » : %s\n" +msgstr "%s : n'a pas pu configurer les droits sur le fichier « %s » : %s\n" -#: pg_basebackup.c:1383 +#: pg_basebackup.c:1385 #, c-format msgid "%s: COPY stream ended before last file was finished\n" -msgstr "%s : le flux COPY s'est terminé avant que le dernier fichier soit terminé\n" +msgstr "%s : le flux COPY s'est terminé avant que le dernier fichier soit terminé\n" -#: pg_basebackup.c:1469 pg_basebackup.c:1489 pg_basebackup.c:1496 -#: pg_basebackup.c:1550 +#: pg_basebackup.c:1471 pg_basebackup.c:1491 pg_basebackup.c:1498 +#: pg_basebackup.c:1552 #, c-format msgid "%s: out of memory\n" -msgstr "%s : mémoire épuisée\n" +msgstr "%s : mémoire épuisée\n" -#: pg_basebackup.c:1627 +#: pg_basebackup.c:1629 #, c-format msgid "%s: incompatible server version %s\n" -msgstr "%s : version « %s » du serveur incompatible\n" +msgstr "%s : version « %s » du serveur incompatible\n" -#: pg_basebackup.c:1674 pg_recvlogical.c:261 receivelog.c:536 receivelog.c:587 -#: receivelog.c:627 streamutil.c:255 streamutil.c:359 streamutil.c:405 +#: pg_basebackup.c:1666 +#, c-format +msgid "%s: initiating base backup, waiting for checkpoint to complete\n" +msgstr "%s : initialise la sauvegarde de base, et en attente de la fin du checkpoint\n" + +#: pg_basebackup.c:1684 pg_recvlogical.c:264 receivelog.c:541 receivelog.c:592 +#: receivelog.c:632 streamutil.c:263 streamutil.c:367 streamutil.c:413 #, c-format msgid "%s: could not send replication command \"%s\": %s" -msgstr "%s : n'a pas pu envoyer la commande de réplication « %s » : %s" +msgstr "%s : n'a pas pu envoyer la commande de réplication « %s » : %s" -#: pg_basebackup.c:1685 +#: pg_basebackup.c:1695 #, c-format msgid "%s: could not initiate base backup: %s" msgstr "%s : n'a pas pu initier la sauvegarde de base : %s" -#: pg_basebackup.c:1692 +#: pg_basebackup.c:1702 #, c-format msgid "%s: server returned unexpected response to BASE_BACKUP command; got %d rows and %d fields, expected %d rows and %d fields\n" -msgstr "%s : le serveur a renvoyé une réponse inattendue à la commande BASE_BACKUP ; a récupéré %d lignes et %d champs, alors qu'il attendait %d lignes et %d champs\n" +msgstr "%s : le serveur a renvoyé une réponse inattendue à la commande BASE_BACKUP ; a récupéré %d lignes et %d champs, alors qu'il attendait %d lignes et %d champs\n" -#: pg_basebackup.c:1712 +#: pg_basebackup.c:1710 +#, c-format +msgid "%s: checkpoint completed\n" +msgstr "%s : checkpoint terminé\n" + +#: pg_basebackup.c:1725 #, c-format msgid "transaction log start point: %s on timeline %u\n" -msgstr "point de départ du journal de transactions : %s sur la timeline %u\n" +msgstr "point de départ du journal de transactions : %s sur la timeline %u\n" -#: pg_basebackup.c:1721 +#: pg_basebackup.c:1734 #, c-format msgid "%s: could not get backup header: %s" -msgstr "%s : n'a pas pu obtenir l'en-tête du serveur : %s" +msgstr "%s : n'a pas pu obtenir l'en-tête du serveur : %s" -#: pg_basebackup.c:1727 +#: pg_basebackup.c:1740 #, c-format msgid "%s: no data returned from server\n" -msgstr "%s : aucune donnée renvoyée du serveur\n" +msgstr "%s : aucune donnée renvoyée du serveur\n" -#: pg_basebackup.c:1759 +#: pg_basebackup.c:1772 #, c-format msgid "%s: can only write single tablespace to stdout, database has %d\n" -msgstr "%s : peut seulement écrire un tablespace sur la sortie standard, la base en a %d\n" +msgstr "%s : peut seulement écrire un tablespace sur la sortie standard, la base en a %d\n" -#: pg_basebackup.c:1771 +#: pg_basebackup.c:1784 #, c-format msgid "%s: starting background WAL receiver\n" -msgstr "%s : lance le récepteur de journaux de transactions en tâche de fond\n" +msgstr "%s : lance le récepteur de journaux de transactions en tâche de fond\n" -#: pg_basebackup.c:1802 +#: pg_basebackup.c:1815 #, c-format msgid "%s: could not get transaction log end position from server: %s" msgstr "" -"%s : n'a pas pu obtenir la position finale des journaux de transactions à\n" +"%s : n'a pas pu obtenir la position finale des journaux de transactions à\n" "partir du serveur : %s" -#: pg_basebackup.c:1809 +#: pg_basebackup.c:1822 #, c-format msgid "%s: no transaction log end position returned from server\n" -msgstr "%s : aucune position de fin du journal de transactions renvoyée par le serveur\n" +msgstr "%s : aucune position de fin du journal de transactions renvoyée par le serveur\n" -#: pg_basebackup.c:1821 +#: pg_basebackup.c:1834 #, c-format msgid "%s: final receive failed: %s" -msgstr "%s : échec lors de la réception finale : %s" +msgstr "%s : échec lors de la réception finale : %s" -#: pg_basebackup.c:1844 +#: pg_basebackup.c:1858 #, c-format msgid "%s: waiting for background process to finish streaming ...\n" -msgstr "%s : en attente que le processus en tâche de fond termine le flux...\n" +msgstr "%s : en attente que le processus en tâche de fond termine le flux...\n" -#: pg_basebackup.c:1850 +#: pg_basebackup.c:1864 #, c-format msgid "%s: could not send command to background pipe: %s\n" msgstr "%s : n'a pas pu envoyer la commande au tube du processus : %s\n" -#: pg_basebackup.c:1859 +#: pg_basebackup.c:1873 #, c-format msgid "%s: could not wait for child process: %s\n" msgstr "%s : n'a pas pu attendre le processus fils : %s\n" -#: pg_basebackup.c:1865 +#: pg_basebackup.c:1879 #, c-format msgid "%s: child %d died, expected %d\n" msgstr "%s : le fils %d est mort, %d attendu\n" -#: pg_basebackup.c:1871 +#: pg_basebackup.c:1885 #, c-format msgid "%s: child process did not exit normally\n" -msgstr "%s : le processus fils n'a pas quitté normalement\n" +msgstr "%s : le processus fils n'a pas quitté normalement\n" -#: pg_basebackup.c:1877 +#: pg_basebackup.c:1891 #, c-format msgid "%s: child process exited with error %d\n" -msgstr "%s : le processus fils a quitté avec le code erreur %d\n" +msgstr "%s : le processus fils a quitté avec le code erreur %d\n" -#: pg_basebackup.c:1904 +#: pg_basebackup.c:1918 #, c-format msgid "%s: could not wait for child thread: %s\n" msgstr "%s : n'a pas pu attendre le thread : %s\n" -#: pg_basebackup.c:1911 +#: pg_basebackup.c:1925 #, c-format msgid "%s: could not get child thread exit status: %s\n" msgstr "%s : n'a pas pu obtenir le code de sortie du thread : %s\n" -#: pg_basebackup.c:1917 +#: pg_basebackup.c:1931 #, c-format msgid "%s: child thread exited with error %u\n" -msgstr "%s : le thread a quitté avec le code d'erreur %u\n" +msgstr "%s : le thread a quitté avec le code d'erreur %u\n" -#: pg_basebackup.c:2007 +#: pg_basebackup.c:2021 #, c-format msgid "%s: invalid output format \"%s\", must be \"plain\" or \"tar\"\n" -msgstr "%s : format de sortie « %s » invalide, doit être soit « plain » soit « tar »\n" +msgstr "%s : format de sortie « %s » invalide, doit être soit « plain » soit « tar »\n" -#: pg_basebackup.c:2028 pg_basebackup.c:2040 +#: pg_basebackup.c:2042 pg_basebackup.c:2054 #, c-format msgid "%s: cannot specify both --xlog and --xlog-method\n" -msgstr "%s : ne peut pas spécifier à la fois --xlog et --xlog-method\n" +msgstr "%s : ne peut pas spécifier à la fois --xlog et --xlog-method\n" -#: pg_basebackup.c:2055 +#: pg_basebackup.c:2069 #, c-format msgid "%s: invalid xlog-method option \"%s\", must be \"fetch\" or \"stream\"\n" msgstr "" -"%s : option xlog-method « %s » invalide, doit être soit « fetch » soit « stream »\n" -"soit « stream »\n" +"%s : option xlog-method « %s » invalide, doit être soit « fetch » soit « stream »\n" +"soit « stream »\n" -#: pg_basebackup.c:2077 +#: pg_basebackup.c:2091 #, c-format msgid "%s: invalid compression level \"%s\"\n" -msgstr "%s : niveau de compression « %s » invalide\n" +msgstr "%s : niveau de compression « %s » invalide\n" -#: pg_basebackup.c:2089 +#: pg_basebackup.c:2103 #, c-format msgid "%s: invalid checkpoint argument \"%s\", must be \"fast\" or \"spread\"\n" msgstr "" -"%s : argument « %s » invalide pour le CHECKPOINT, doit être soit « fast »\n" -"soit « spread »\n" +"%s : argument « %s » invalide pour le CHECKPOINT, doit être soit « fast »\n" +"soit « spread »\n" -#: pg_basebackup.c:2116 pg_receivexlog.c:445 pg_recvlogical.c:760 +#: pg_basebackup.c:2130 pg_receivexlog.c:445 pg_recvlogical.c:763 #, c-format msgid "%s: invalid status interval \"%s\"\n" -msgstr "%s : intervalle « %s » invalide du statut\n" +msgstr "%s : intervalle « %s » invalide du statut\n" -#: pg_basebackup.c:2132 pg_basebackup.c:2146 pg_basebackup.c:2157 -#: pg_basebackup.c:2170 pg_basebackup.c:2180 pg_basebackup.c:2190 -#: pg_basebackup.c:2202 pg_basebackup.c:2213 pg_receivexlog.c:477 +#: pg_basebackup.c:2146 pg_basebackup.c:2160 pg_basebackup.c:2171 +#: pg_basebackup.c:2184 pg_basebackup.c:2194 pg_basebackup.c:2204 +#: pg_basebackup.c:2216 pg_basebackup.c:2227 pg_receivexlog.c:477 #: pg_receivexlog.c:491 pg_receivexlog.c:499 pg_receivexlog.c:509 -#: pg_receivexlog.c:520 pg_recvlogical.c:787 pg_recvlogical.c:801 -#: pg_recvlogical.c:812 pg_recvlogical.c:820 pg_recvlogical.c:828 -#: pg_recvlogical.c:836 pg_recvlogical.c:844 pg_recvlogical.c:852 +#: pg_receivexlog.c:520 pg_recvlogical.c:790 pg_recvlogical.c:804 +#: pg_recvlogical.c:815 pg_recvlogical.c:823 pg_recvlogical.c:831 +#: pg_recvlogical.c:839 pg_recvlogical.c:847 pg_recvlogical.c:855 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Essayer « %s --help » pour plus d'informations.\n" +msgstr "Essayer « %s --help » pour plus d'informations.\n" -#: pg_basebackup.c:2144 pg_receivexlog.c:489 pg_recvlogical.c:799 +#: pg_basebackup.c:2158 pg_receivexlog.c:489 pg_recvlogical.c:802 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" -msgstr "%s : trop d'arguments en ligne de commande (le premier étant « %s »)\n" +msgstr "%s : trop d'arguments en ligne de commande (le premier étant « %s »)\n" -#: pg_basebackup.c:2156 pg_receivexlog.c:519 +#: pg_basebackup.c:2170 pg_receivexlog.c:519 #, c-format msgid "%s: no target directory specified\n" -msgstr "%s : aucun répertoire cible indiqué\n" +msgstr "%s : aucun répertoire cible indiqué\n" -#: pg_basebackup.c:2168 +#: pg_basebackup.c:2182 #, c-format msgid "%s: only tar mode backups can be compressed\n" -msgstr "%s : seules les sauvegardes en mode tar peuvent être compressées\n" +msgstr "%s : seules les sauvegardes en mode tar peuvent être compressées\n" -#: pg_basebackup.c:2178 +#: pg_basebackup.c:2192 #, c-format msgid "%s: WAL streaming can only be used in plain mode\n" -msgstr "%s : le flux de journaux de transactions peut seulement être utilisé en mode plain\n" +msgstr "%s : le flux de journaux de transactions peut seulement être utilisé en mode plain\n" -#: pg_basebackup.c:2188 +#: pg_basebackup.c:2202 #, c-format msgid "%s: replication slots can only be used with WAL streaming\n" -msgstr "%s : les slots de réplications peuvent seulement être utilisés avec la réplication en flux des WAL\n" +msgstr "%s : les slots de réplications peuvent seulement être utilisés avec la réplication en flux des WAL\n" -#: pg_basebackup.c:2200 +#: pg_basebackup.c:2214 #, c-format msgid "%s: transaction log directory location can only be specified in plain mode\n" msgstr "" -"%s : l'emplacement du répertoire des journaux de transactions doit être\n" -"indiqué uniquement dans le mode plain\n" +"%s : l'emplacement du répertoire des journaux de transactions doit être\n" +"indiqué uniquement dans le mode plain\n" -#: pg_basebackup.c:2211 +#: pg_basebackup.c:2225 #, c-format msgid "%s: transaction log directory location must be an absolute path\n" msgstr "" -"%s : l'emplacement du répertoire des journaux de transactions doit être\n" -"indiqué avec un chemin absolu\n" +"%s : l'emplacement du répertoire des journaux de transactions doit être\n" +"indiqué avec un chemin absolu\n" -#: pg_basebackup.c:2223 +#: pg_basebackup.c:2237 #, c-format msgid "%s: this build does not support compression\n" msgstr "%s : cette construction ne supporte pas la compression\n" -#: pg_basebackup.c:2250 +#: pg_basebackup.c:2264 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" -msgstr "%s : n'a pas pu créer le lien symbolique « %s » : %s\n" +msgstr "%s : n'a pas pu créer le lien symbolique « %s » : %s\n" -#: pg_basebackup.c:2255 +#: pg_basebackup.c:2269 #, c-format msgid "%s: symlinks are not supported on this platform\n" -msgstr "%s : les liens symboliques ne sont pas supportés sur cette plateforme\n" +msgstr "%s : les liens symboliques ne sont pas supportés sur cette plateforme\n" #: pg_receivexlog.c:64 #, c-format @@ -651,10 +661,10 @@ msgid "" "%s receives PostgreSQL streaming transaction logs.\n" "\n" msgstr "" -"%s reçoit le flux des journaux de transactions PostgreSQL.\n" +"%s reçoit le flux des journaux de transactions PostgreSQL.\n" "\n" -#: pg_receivexlog.c:68 pg_recvlogical.c:75 +#: pg_receivexlog.c:68 pg_recvlogical.c:78 #, c-format msgid "" "\n" @@ -667,36 +677,36 @@ msgstr "" #, c-format msgid " -D, --directory=DIR receive transaction log files into this directory\n" msgstr "" -" -D, --directory=RÉP reçoit les journaux de transactions dans ce\n" -" répertoire\n" +" -D, --directory=RÉP reçoit les journaux de transactions dans ce\n" +" répertoire\n" -#: pg_receivexlog.c:70 pg_recvlogical.c:79 +#: pg_receivexlog.c:70 pg_recvlogical.c:82 #, c-format msgid " --if-not-exists do not error if slot already exists when creating a slot\n" msgstr "" " --if-not-exists ne pas renvoyer une erreur si le slot existe\\n\n" -" déjà lors de sa création\n" +" déjà lors de sa création\n" -#: pg_receivexlog.c:71 pg_recvlogical.c:81 +#: pg_receivexlog.c:71 pg_recvlogical.c:84 #, c-format msgid " -n, --no-loop do not loop on connection lost\n" msgstr " -n, --no-loop ne boucle pas en cas de perte de la connexion\n" -#: pg_receivexlog.c:72 pg_recvlogical.c:86 +#: pg_receivexlog.c:72 pg_recvlogical.c:89 #, c-format msgid "" " -s, --status-interval=SECS\n" " time between status packets sent to server (default: %d)\n" msgstr "" -" -s, --status-interval=SECS durée entre l'envoi de paquets de statut au\n" -" (par défaut %d)\n" +" -s, --status-interval=SECS durée entre l'envoi de paquets de statut au\n" +" (par défaut %d)\n" #: pg_receivexlog.c:75 #, c-format msgid " --synchronous flush transaction log immediately after writing\n" msgstr "" -" --synchronous vider le journal de transactions immédiatement\\n\n" -" après son écriture\n" +" --synchronous vider le journal de transactions immédiatement\\n\n" +" après son écriture\n" #: pg_receivexlog.c:86 #, c-format @@ -707,69 +717,69 @@ msgstr "" "\n" "Actions optionnelles :\n" -#: pg_receivexlog.c:87 pg_recvlogical.c:72 +#: pg_receivexlog.c:87 pg_recvlogical.c:75 #, c-format msgid " --create-slot create a new replication slot (for the slot's name see --slot)\n" msgstr "" -" --create-slot créer un nouveau slot de réplication (pour le\n" +" --create-slot créer un nouveau slot de réplication (pour le\n" " nom du slot, voir --slot)\n" -#: pg_receivexlog.c:88 pg_recvlogical.c:73 +#: pg_receivexlog.c:88 pg_recvlogical.c:76 #, c-format msgid " --drop-slot drop the replication slot (for the slot's name see --slot)\n" msgstr "" -" --drop-slot supprimer un nouveau slot de réplication (pour\n" +" --drop-slot supprimer un nouveau slot de réplication (pour\n" " le nom du slot, voir --slot)\n" #: pg_receivexlog.c:100 #, c-format msgid "%s: finished segment at %X/%X (timeline %u)\n" -msgstr "%s : segment terminé à %X/%X (timeline %u)\n" +msgstr "%s : segment terminé à %X/%X (timeline %u)\n" #: pg_receivexlog.c:113 #, c-format msgid "%s: switched to timeline %u at %X/%X\n" -msgstr "%s : a basculé sur la timeline %u à %X/%X\n" +msgstr "%s : a basculé sur la timeline %u à %X/%X\n" #: pg_receivexlog.c:122 #, c-format msgid "%s: received interrupt signal, exiting\n" -msgstr "%s : a reçu un signal d'interruption, quitte\n" +msgstr "%s : a reçu un signal d'interruption, quitte\n" #: pg_receivexlog.c:142 #, c-format msgid "%s: could not open directory \"%s\": %s\n" -msgstr "%s : n'a pas pu ouvrir le répertoire « %s » : %s\n" +msgstr "%s : n'a pas pu ouvrir le répertoire « %s » : %s\n" #: pg_receivexlog.c:160 #, c-format msgid "%s: could not close directory \"%s\": %s\n" -msgstr "%s : n'a pas pu fermer le répertoire « %s » : %s\n" +msgstr "%s : n'a pas pu fermer le répertoire « %s » : %s\n" -#: pg_receivexlog.c:218 pg_recvlogical.c:343 +#: pg_receivexlog.c:218 pg_recvlogical.c:346 #, c-format msgid "%s: could not stat file \"%s\": %s\n" -msgstr "%s : n'a pas pu récupérer les informations sur le fichier « %s » : %s\n" +msgstr "%s : n'a pas pu récupérer les informations sur le fichier « %s » : %s\n" #: pg_receivexlog.c:226 #, c-format msgid "%s: segment file \"%s\" has incorrect size %d, skipping\n" -msgstr "%s : le segment « %s » a une taille %d incorrecte, ignoré\n" +msgstr "%s : le segment « %s » a une taille %d incorrecte, ignoré\n" #: pg_receivexlog.c:245 #, c-format msgid "%s: could not read directory \"%s\": %s\n" -msgstr "%s : n'a pas pu lire le répertoire « %s » : %s\n" +msgstr "%s : n'a pas pu lire le répertoire « %s » : %s\n" #: pg_receivexlog.c:332 #, c-format msgid "%s: starting log streaming at %X/%X (timeline %u)\n" -msgstr "%s : commence le flux des journaux à %X/%X (timeline %u)\n" +msgstr "%s : commence le flux des journaux à %X/%X (timeline %u)\n" -#: pg_receivexlog.c:426 pg_recvlogical.c:707 +#: pg_receivexlog.c:426 pg_recvlogical.c:710 #, c-format msgid "%s: invalid port number \"%s\"\n" -msgstr "%s : numéro de port invalide : « %s »\n" +msgstr "%s : numéro de port invalide : « %s »\n" #: pg_receivexlog.c:498 #, c-format @@ -786,77 +796,77 @@ msgstr "%s : %s a besoin du slot avec l'option --slot\n" #, c-format msgid "%s: replication connection using slot \"%s\" is unexpectedly database specific\n" msgstr "" -"%s : la connexion de réplication utilisant le slot « %s » est spécifique à\n" +"%s : la connexion de réplication utilisant le slot « %s » est spécifique à\n" "une base, ce qui est inattendu\n" -#: pg_receivexlog.c:574 pg_recvlogical.c:892 +#: pg_receivexlog.c:574 pg_recvlogical.c:895 #, c-format msgid "%s: dropping replication slot \"%s\"\n" -msgstr "%s : suppression du slot de réplication « %s »\n" +msgstr "%s : suppression du slot de réplication « %s »\n" -#: pg_receivexlog.c:587 pg_recvlogical.c:904 +#: pg_receivexlog.c:587 pg_recvlogical.c:907 #, c-format msgid "%s: creating replication slot \"%s\"\n" -msgstr "%s : création du slot de réplication « %s »\n" +msgstr "%s : création du slot de réplication « %s »\n" -#: pg_receivexlog.c:614 pg_recvlogical.c:930 +#: pg_receivexlog.c:614 pg_recvlogical.c:933 #, c-format msgid "%s: disconnected\n" -msgstr "%s : déconnecté\n" +msgstr "%s : déconnecté\n" #. translator: check source for value for %d -#: pg_receivexlog.c:621 pg_recvlogical.c:937 +#: pg_receivexlog.c:621 pg_recvlogical.c:940 #, c-format msgid "%s: disconnected; waiting %d seconds to try again\n" -msgstr "%s : déconnecté, attente de %d secondes avant une nouvelle tentative\n" +msgstr "%s : déconnecté, attente de %d secondes avant une nouvelle tentative\n" -#: pg_recvlogical.c:67 +#: pg_recvlogical.c:70 #, c-format msgid "" "%s controls PostgreSQL logical decoding streams.\n" "\n" msgstr "" -"%s contrôle le flux des modifications logiques de PostgreSQL.\n" +"%s contrôle le flux des modifications logiques de PostgreSQL.\n" "\n" -#: pg_recvlogical.c:71 +#: pg_recvlogical.c:74 #, c-format msgid "" "\n" "Action to be performed:\n" msgstr "" "\n" -"Action à réaliser :\n" +"Action à réaliser :\n" -#: pg_recvlogical.c:74 +#: pg_recvlogical.c:77 #, c-format msgid " --start start streaming in a replication slot (for the slot's name see --slot)\n" msgstr "" -" --start lance le flux dans un slot de réplication (pour\n" +" --start lance le flux dans un slot de réplication (pour\n" " le nom du slot, voir --slot)\n" -#: pg_recvlogical.c:76 +#: pg_recvlogical.c:79 #, c-format msgid " -f, --file=FILE receive log into this file, - for stdout\n" -msgstr " -f, --file=NOMFICHIER trace la réception dans ce fichier, - pour stdout\n" +msgstr " -f, --file=NOMFICHIER trace la réception dans ce fichier, - pour stdout\n" -#: pg_recvlogical.c:77 +#: pg_recvlogical.c:80 #, c-format msgid "" " -F --fsync-interval=SECS\n" " time between fsyncs to the output file (default: %d)\n" msgstr "" -" -F --fsync-interval=SECS durée entre les fsyncs vers le fichier de sortie\n" -" (par défaut %d)\n" +" -F --fsync-interval=SECS durée entre les fsyncs vers le fichier de sortie\n" +" (par défaut %d)\n" -#: pg_recvlogical.c:80 +#: pg_recvlogical.c:83 #, c-format msgid " -I, --startpos=LSN where in an existing slot should the streaming start\n" msgstr "" -" -I, --startpos=LSN position de début du streaming dans le slot\n" +" -I, --startpos=LSN position de début du streaming dans le slot\n" " existant\n" -#: pg_recvlogical.c:82 +#: pg_recvlogical.c:85 #, c-format msgid "" " -o, --option=NAME[=VALUE]\n" @@ -866,400 +876,400 @@ msgstr "" " -o, --option=NOM[=VALEUR] passe l'option NAME avec la valeur optionnelle\n" " VALEUR au plugin en sortie\n" -#: pg_recvlogical.c:85 +#: pg_recvlogical.c:88 #, c-format msgid " -P, --plugin=PLUGIN use output plugin PLUGIN (default: %s)\n" msgstr "" " -P, --plugin=PLUGIN utilise le plugin PLUGIN en sortie\n" -" (par défaut %s)\n" +" (par défaut %s)\n" -#: pg_recvlogical.c:88 +#: pg_recvlogical.c:91 #, c-format msgid " -S, --slot=SLOTNAME name of the logical replication slot\n" -msgstr " -S, --slot=NOMSLOT nom du slot de réplication logique\n" +msgstr " -S, --slot=NOMSLOT nom du slot de réplication logique\n" -#: pg_recvlogical.c:93 +#: pg_recvlogical.c:96 #, c-format msgid " -d, --dbname=DBNAME database to connect to\n" -msgstr " -d, --dbname=NOMBASE base de données de connexion\n" +msgstr " -d, --dbname=NOMBASE base de données de connexion\n" -#: pg_recvlogical.c:126 +#: pg_recvlogical.c:129 #, c-format msgid "%s: confirming write up to %X/%X, flush to %X/%X (slot %s)\n" -msgstr "%s : confirmation d'écriture jusqu'à %X/%X et de synchronisation jusqu'à %X/%X (slot %s)\n" +msgstr "%s : confirmation d'écriture jusqu'à %X/%X et de synchronisation jusqu'à %X/%X (slot %s)\n" -#: pg_recvlogical.c:151 receivelog.c:404 +#: pg_recvlogical.c:154 receivelog.c:407 #, c-format msgid "%s: could not send feedback packet: %s" msgstr "%s : n'a pas pu envoyer le paquet d'informations en retour : %s" -#: pg_recvlogical.c:190 +#: pg_recvlogical.c:193 #, c-format msgid "%s: could not fsync log file \"%s\": %s\n" -msgstr "%s : n'a pas pu synchroniser sur disque le fichier « %s » : %s\n" +msgstr "%s : n'a pas pu synchroniser sur disque le fichier « %s » : %s\n" -#: pg_recvlogical.c:229 +#: pg_recvlogical.c:232 #, c-format msgid "%s: starting log streaming at %X/%X (slot %s)\n" -msgstr "%s : commence le flux des journaux à %X/%X (slot %s)\n" +msgstr "%s : commence le flux des journaux à %X/%X (slot %s)\n" -#: pg_recvlogical.c:271 +#: pg_recvlogical.c:274 #, c-format msgid "%s: streaming initiated\n" -msgstr "%s : flux lancé\n" +msgstr "%s : flux lancé\n" -#: pg_recvlogical.c:336 +#: pg_recvlogical.c:339 #, c-format msgid "%s: could not open log file \"%s\": %s\n" -msgstr "%s : n'a pas pu ouvrir le journal applicatif « %s » : %s\n" +msgstr "%s : n'a pas pu ouvrir le journal applicatif « %s » : %s\n" -#: pg_recvlogical.c:366 receivelog.c:933 +#: pg_recvlogical.c:369 receivelog.c:938 #, c-format msgid "%s: invalid socket: %s" msgstr "%s : socket invalide : %s" -#: pg_recvlogical.c:420 receivelog.c:955 +#: pg_recvlogical.c:423 receivelog.c:960 #, c-format msgid "%s: select() failed: %s\n" -msgstr "%s : échec de select() : %s\n" +msgstr "%s : échec de select() : %s\n" -#: pg_recvlogical.c:429 receivelog.c:1005 +#: pg_recvlogical.c:432 receivelog.c:1010 #, c-format msgid "%s: could not receive data from WAL stream: %s" -msgstr "%s : n'a pas pu recevoir des données du flux de WAL : %s" +msgstr "%s : n'a pas pu recevoir des données du flux de WAL : %s" -#: pg_recvlogical.c:470 pg_recvlogical.c:509 receivelog.c:1050 -#: receivelog.c:1117 +#: pg_recvlogical.c:473 pg_recvlogical.c:512 receivelog.c:1055 +#: receivelog.c:1122 #, c-format msgid "%s: streaming header too small: %d\n" -msgstr "%s : en-tête de flux trop petit : %d\n" +msgstr "%s : en-tête de flux trop petit : %d\n" -#: pg_recvlogical.c:492 receivelog.c:898 +#: pg_recvlogical.c:495 receivelog.c:903 #, c-format msgid "%s: unrecognized streaming header: \"%c\"\n" -msgstr "%s : entête non reconnu du flux : « %c »\n" +msgstr "%s : entête non reconnu du flux : « %c »\n" -#: pg_recvlogical.c:538 pg_recvlogical.c:552 +#: pg_recvlogical.c:541 pg_recvlogical.c:555 #, c-format msgid "%s: could not write %u bytes to log file \"%s\": %s\n" -msgstr "%s : n'a pas pu écrire %u octets dans le journal de transactions « %s » : %s\n" +msgstr "%s : n'a pas pu écrire %u octets dans le journal de transactions « %s » : %s\n" -#: pg_recvlogical.c:563 receivelog.c:691 receivelog.c:729 +#: pg_recvlogical.c:566 receivelog.c:696 receivelog.c:734 #, c-format msgid "%s: unexpected termination of replication stream: %s" -msgstr "%s : fin inattendue du flux de réplication : %s" +msgstr "%s : fin inattendue du flux de réplication : %s" -#: pg_recvlogical.c:686 +#: pg_recvlogical.c:689 #, c-format msgid "%s: invalid fsync interval \"%s\"\n" -msgstr "%s : intervalle fsync « %s » invalide\n" +msgstr "%s : intervalle fsync « %s » invalide\n" -#: pg_recvlogical.c:727 +#: pg_recvlogical.c:730 #, c-format msgid "%s: could not parse start position \"%s\"\n" -msgstr "%s : n'a pas pu analyser la position de départ « %s »\n" +msgstr "%s : n'a pas pu analyser la position de départ « %s »\n" -#: pg_recvlogical.c:811 +#: pg_recvlogical.c:814 #, c-format msgid "%s: no slot specified\n" -msgstr "%s : aucun slot de réplication indiqué\n" +msgstr "%s : aucun slot de réplication indiqué\n" -#: pg_recvlogical.c:819 +#: pg_recvlogical.c:822 #, c-format msgid "%s: no target file specified\n" -msgstr "%s : aucun fichier cible indiqué\n" +msgstr "%s : aucun fichier cible indiqué\n" -#: pg_recvlogical.c:827 +#: pg_recvlogical.c:830 #, c-format msgid "%s: no database specified\n" -msgstr "%s : aucun base de données indiquée\n" +msgstr "%s : aucun base de données indiquée\n" -#: pg_recvlogical.c:835 +#: pg_recvlogical.c:838 #, c-format msgid "%s: at least one action needs to be specified\n" -msgstr "%s : au moins une action doit être indiquée\n" +msgstr "%s : au moins une action doit être indiquée\n" -#: pg_recvlogical.c:843 +#: pg_recvlogical.c:846 #, c-format msgid "%s: cannot use --create-slot or --start together with --drop-slot\n" msgstr "%s : ne peut pas utiliser --create-slot ou --start avec --drop-slot\n" -#: pg_recvlogical.c:851 +#: pg_recvlogical.c:854 #, c-format msgid "%s: cannot use --create-slot or --drop-slot together with --startpos\n" msgstr "%s : ne peut pas utiliser --create-slot ou --drop-slot avec --startpos\n" -#: pg_recvlogical.c:882 +#: pg_recvlogical.c:885 #, c-format msgid "%s: could not establish database-specific replication connection\n" -msgstr "%s : n'a pas pu établir une connexion de réplication spécifique à la base\n" +msgstr "%s : n'a pas pu établir une connexion de réplication spécifique à la base\n" -#: receivelog.c:66 +#: receivelog.c:69 #, c-format msgid "%s: could not create archive status file \"%s\": %s\n" -msgstr "%s : n'a pas pu créer le fichier de statut d'archivage « %s » : %s\n" +msgstr "%s : n'a pas pu créer le fichier de statut d'archivage « %s » : %s\n" -#: receivelog.c:73 receivelog.c:196 receivelog.c:344 receivelog.c:828 -#: receivelog.c:1071 +#: receivelog.c:76 receivelog.c:199 receivelog.c:347 receivelog.c:833 +#: receivelog.c:1076 #, c-format msgid "%s: could not fsync file \"%s\": %s\n" -msgstr "%s : n'a pas pu synchroniser sur disque le fichier « %s » : %s\n" +msgstr "%s : n'a pas pu synchroniser sur disque le fichier « %s » : %s\n" -#: receivelog.c:111 +#: receivelog.c:114 #, c-format msgid "%s: could not open transaction log file \"%s\": %s\n" -msgstr "%s : n'a pas pu ouvrir le journal des transactions « %s » : %s\n" +msgstr "%s : n'a pas pu ouvrir le journal des transactions « %s » : %s\n" -#: receivelog.c:123 +#: receivelog.c:126 #, c-format msgid "%s: could not stat transaction log file \"%s\": %s\n" msgstr "" -"%s : n'a pas pu récupérer les informations sur le journal de transactions\n" -"« %s » : %s\n" +"%s : n'a pas pu récupérer les informations sur le journal de transactions\n" +"« %s » : %s\n" -#: receivelog.c:137 +#: receivelog.c:140 #, c-format msgid "%s: transaction log file \"%s\" has %d bytes, should be 0 or %d\n" msgstr "" -"%s : le segment « %s » du journal de transactions comprend %d octets, cela\n" -"devrait être 0 ou %d\n" +"%s : le segment « %s » du journal de transactions comprend %d octets, cela\n" +"devrait être 0 ou %d\n" -#: receivelog.c:150 +#: receivelog.c:153 #, c-format msgid "%s: could not pad transaction log file \"%s\": %s\n" -msgstr "%s : n'a pas pu remplir de zéros le journal de transactions « %s » : %s\n" +msgstr "%s : n'a pas pu remplir de zéros le journal de transactions « %s » : %s\n" -#: receivelog.c:163 +#: receivelog.c:166 #, c-format msgid "%s: could not seek to beginning of transaction log file \"%s\": %s\n" -msgstr "%s : n'a pas pu rechercher le début du journal de transaction « %s » : %s\n" +msgstr "%s : n'a pas pu rechercher le début du journal de transaction « %s » : %s\n" -#: receivelog.c:189 +#: receivelog.c:192 #, c-format msgid "%s: could not determine seek position in file \"%s\": %s\n" -msgstr "%s : n'a pas pu déterminer la position de recherche dans le fichier d'archive « %s » : %s\n" +msgstr "%s : n'a pas pu déterminer la position de recherche dans le fichier d'archive « %s » : %s\n" -#: receivelog.c:222 +#: receivelog.c:225 #, c-format msgid "%s: could not rename file \"%s\": %s\n" -msgstr "%s : n'a pas pu renommer le fichier « %s » : %s\n" +msgstr "%s : n'a pas pu renommer le fichier « %s » : %s\n" -#: receivelog.c:229 +#: receivelog.c:232 #, c-format msgid "%s: not renaming \"%s%s\", segment is not complete\n" -msgstr "%s : pas de renommage de « %s%s », le segment n'est pas complet\n" +msgstr "%s : pas de renommage de « %s%s », le segment n'est pas complet\n" -#: receivelog.c:275 +#: receivelog.c:278 #, c-format msgid "%s: could not open timeline history file \"%s\": %s\n" -msgstr "%s : n'a pas pu ouvrir le journal historique de la timeline « %s » : %s\n" +msgstr "%s : n'a pas pu ouvrir le journal historique de la timeline « %s » : %s\n" -#: receivelog.c:302 +#: receivelog.c:305 #, c-format msgid "%s: server reported unexpected history file name for timeline %u: %s\n" -msgstr "%s : le serveur a renvoyé un nom de fichier historique inattendu pour la timeline %u : %s\n" +msgstr "%s : le serveur a renvoyé un nom de fichier historique inattendu pour la timeline %u : %s\n" -#: receivelog.c:319 +#: receivelog.c:322 #, c-format msgid "%s: could not create timeline history file \"%s\": %s\n" -msgstr "%s : n'a pas pu créer le fichier historique de la timeline « %s » : %s\n" +msgstr "%s : n'a pas pu créer le fichier historique de la timeline « %s » : %s\n" -#: receivelog.c:336 +#: receivelog.c:339 #, c-format msgid "%s: could not write timeline history file \"%s\": %s\n" -msgstr "%s : n'a pas pu écrire dans le fichier historique de la timeline « %s » : %s\n" +msgstr "%s : n'a pas pu écrire dans le fichier historique de la timeline « %s » : %s\n" -#: receivelog.c:361 +#: receivelog.c:364 #, c-format msgid "%s: could not rename file \"%s\" to \"%s\": %s\n" -msgstr "%s : n'a pas pu renommer le fichier « %s » en « %s » : %s\n" +msgstr "%s : n'a pas pu renommer le fichier « %s » en « %s » : %s\n" -#: receivelog.c:438 +#: receivelog.c:441 #, c-format msgid "%s: incompatible server version %s; client does not support streaming from server versions older than %s\n" msgstr "%s : version %s du serveur incompatible ; le client ne supporte pas le streaming de versions plus anciennes que %s\n" -#: receivelog.c:448 +#: receivelog.c:451 #, c-format msgid "%s: incompatible server version %s; client does not support streaming from server versions newer than %s\n" -msgstr "%s : version %s du serveur incompatible ; le client ne supporte pas le streaming de versions plus récentes que %s\n" +msgstr "%s : version %s du serveur incompatible ; le client ne supporte pas le streaming de versions plus récentes que %s\n" -#: receivelog.c:544 streamutil.c:264 streamutil.c:303 +#: receivelog.c:549 streamutil.c:272 streamutil.c:311 #, c-format msgid "%s: could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields\n" msgstr "" -"%s : n'a pas pu identifier le système, a récupéré %d lignes et %d champs,\n" +"%s : n'a pas pu identifier le système, a récupéré %d lignes et %d champs,\n" "attendait %d lignes et %d champs (ou plus)\n" -#: receivelog.c:552 +#: receivelog.c:557 #, c-format msgid "%s: system identifier does not match between base backup and streaming connection\n" msgstr "" -"%s : l'identifiant système ne correspond pas entre la sauvegarde des fichiers\n" -"et la connexion de réplication\n" +"%s : l'identifiant système ne correspond pas entre la sauvegarde des fichiers\n" +"et la connexion de réplication\n" -#: receivelog.c:560 +#: receivelog.c:565 #, c-format msgid "%s: starting timeline %u is not present in the server\n" -msgstr "%s : la timeline %u de départ n'est pas dans le serveur\n" +msgstr "%s : la timeline %u de départ n'est pas dans le serveur\n" -#: receivelog.c:600 +#: receivelog.c:605 #, c-format msgid "%s: unexpected response to TIMELINE_HISTORY command: got %d rows and %d fields, expected %d rows and %d fields\n" -msgstr "%s : réponse inattendue à la commande TIMELINE_HISTORY : a récupéré %d lignes et %d champs, alors qu'il attendait %d lignes et %d champs\n" +msgstr "%s : réponse inattendue à la commande TIMELINE_HISTORY : a récupéré %d lignes et %d champs, alors qu'il attendait %d lignes et %d champs\n" -#: receivelog.c:672 +#: receivelog.c:677 #, c-format msgid "%s: server reported unexpected next timeline %u, following timeline %u\n" -msgstr "%s: le serveur a renvoyé une timeline suivante %u inattendue, après la timeline %u\n" +msgstr "%s: le serveur a renvoyé une timeline suivante %u inattendue, après la timeline %u\n" -#: receivelog.c:679 +#: receivelog.c:684 #, c-format msgid "%s: server stopped streaming timeline %u at %X/%X, but reported next timeline %u to begin at %X/%X\n" -msgstr "%s : le serveur a arrêté l'envoi de la timeline %u à %X/%X, mais a indiqué que la timeline suivante, %u, commence à %X/%X\n" +msgstr "%s : le serveur a arrêté l'envoi de la timeline %u à %X/%X, mais a indiqué que la timeline suivante, %u, commence à %X/%X\n" -#: receivelog.c:720 +#: receivelog.c:725 #, c-format msgid "%s: replication stream was terminated before stop point\n" -msgstr "%s : le flux de réplication a été abandonné avant d'arriver au point d'arrêt\n" +msgstr "%s : le flux de réplication a été abandonné avant d'arriver au point d'arrêt\n" -#: receivelog.c:769 +#: receivelog.c:774 #, c-format msgid "%s: unexpected result set after end-of-timeline: got %d rows and %d fields, expected %d rows and %d fields\n" -msgstr "%s : ensemble de résultats inattendu après la fin de la timeline : a récupéré %d lignes et %d champs, alors qu'il attendait %d lignes et %d champs\n" +msgstr "%s : ensemble de résultats inattendu après la fin de la timeline : a récupéré %d lignes et %d champs, alors qu'il attendait %d lignes et %d champs\n" -#: receivelog.c:779 +#: receivelog.c:784 #, c-format msgid "%s: could not parse next timeline's starting point \"%s\"\n" -msgstr "%s : n'a pas pu analyser la position de départ de la prochaine timeline « %s »\n" +msgstr "%s : n'a pas pu analyser la position de départ de la prochaine timeline « %s »\n" -#: receivelog.c:1136 +#: receivelog.c:1141 #, c-format msgid "%s: received transaction log record for offset %u with no file open\n" msgstr "" -"%s : a reçu l'enregistrement du journal de transactions pour le décalage %u\n" +"%s : a reçu l'enregistrement du journal de transactions pour le décalage %u\n" "sans fichier ouvert\n" -#: receivelog.c:1148 +#: receivelog.c:1153 #, c-format msgid "%s: got WAL data offset %08x, expected %08x\n" -msgstr "%s : a obtenu le décalage %08x pour les données du journal, attendait %08x\n" +msgstr "%s : a obtenu le décalage %08x pour les données du journal, attendait %08x\n" -#: receivelog.c:1184 +#: receivelog.c:1189 #, c-format msgid "%s: could not write %u bytes to WAL file \"%s\": %s\n" -msgstr "%s : n'a pas pu écrire %u octets dans le journal de transactions « %s » : %s\n" +msgstr "%s : n'a pas pu écrire %u octets dans le journal de transactions « %s » : %s\n" -#: receivelog.c:1209 receivelog.c:1250 receivelog.c:1281 +#: receivelog.c:1214 receivelog.c:1255 receivelog.c:1286 #, c-format msgid "%s: could not send copy-end packet: %s" msgstr "%s : n'a pas pu envoyer le paquet de fin de copie : %s" -#: streamutil.c:145 +#: streamutil.c:153 msgid "Password: " msgstr "Mot de passe : " -#: streamutil.c:169 +#: streamutil.c:177 #, c-format msgid "%s: could not connect to server\n" msgstr "%s : n'a pas pu se connecter au serveur\n" -#: streamutil.c:187 +#: streamutil.c:195 #, c-format msgid "%s: could not connect to server: %s" msgstr "%s : n'a pas pu se connecter au serveur : %s" -#: streamutil.c:211 +#: streamutil.c:219 #, c-format msgid "%s: could not determine server setting for integer_datetimes\n" -msgstr "%s : n'a pas pu déterminer la configuration serveur de integer_datetimes\n" +msgstr "%s : n'a pas pu déterminer la configuration serveur de integer_datetimes\n" -#: streamutil.c:224 +#: streamutil.c:232 #, c-format msgid "%s: integer_datetimes compile flag does not match server\n" msgstr "%s : l'option de compilation integer_datetimes ne correspond pas au serveur\n" -#: streamutil.c:371 +#: streamutil.c:379 #, c-format msgid "%s: could not create replication slot \"%s\": got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "" -"%s : n'a pas pu créer le slot de réplication « %s » : a récupéré %d lignes et %d champs,\n" +"%s : n'a pas pu créer le slot de réplication « %s » : a récupéré %d lignes et %d champs,\n" "attendait %d lignes et %d champs\n" -#: streamutil.c:416 +#: streamutil.c:424 #, c-format msgid "%s: could not drop replication slot \"%s\": got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "" -"%s : n'a pas pu supprimer le slot de réplication « %s » : a récupéré %d lignes et %d champs,\n" +"%s : n'a pas pu supprimer le slot de réplication « %s » : a récupéré %d lignes et %d champs,\n" "attendait %d lignes et %d champs\n" -#~ msgid "%s: could not parse file size\n" -#~ msgstr "%s : n'a pas pu analyser la taille du fichier\n" +#~ msgid "%s: socket not open" +#~ msgstr "%s : socket non ouvert" -#~ msgid "%s: could not parse file mode\n" -#~ msgstr "%s : n'a pas pu analyser le mode du fichier\n" +#~ msgid "%s: no start point returned from server\n" +#~ msgstr "%s : aucun point de redémarrage renvoyé du serveur\n" -#~ msgid "%s: could not parse transaction log file name \"%s\"\n" -#~ msgstr "%s : n'a pas pu analyser le nom du journal de transactions « %s »\n" +#~ msgid "%s: timeline does not match between base backup and streaming connection\n" +#~ msgstr "" +#~ "%s : la timeline ne correspond pas entre la sauvegarde des fichiers et la\n" +#~ "connexion de réplication\n" -#~ msgid "%s: could not close file %s: %s\n" -#~ msgstr "%s : n'a pas pu fermer le fichier %s : %s\n" +#~ msgid "%s: keepalive message has incorrect size %d\n" +#~ msgstr "%s : le message keepalive a une taille %d incorrecte\n" -#~ msgid " -V, --version output version information, then exit\n" -#~ msgstr " -V, --version affiche la version puis quitte\n" +#~ msgid " --version output version information, then exit\n" +#~ msgstr " --version affiche la version et quitte\n" -#~ msgid " -?, --help show this help, then exit\n" -#~ msgstr " -?, --help affiche cette aide puis quitte\n" +#~ msgid " --help show this help, then exit\n" +#~ msgstr " --help affiche cette aide et quitte\n" -#~ msgid "%s: invalid format of xlog location: %s\n" -#~ msgstr "%s : format invalide de l'emplacement du journal de transactions : %s\n" +#~ msgid "%s: could not read copy data: %s\n" +#~ msgstr "%s : n'a pas pu lire les données du COPY : %s\n" -#~ msgid "%s: could not identify system: %s" -#~ msgstr "%s : n'a pas pu identifier le système : %s" +#~ msgid "%s: could not get current position in file %s: %s\n" +#~ msgstr "%s : n'a pas pu obtenir la position courant dans le fichier %s : %s\n" -#~ msgid "%s: could not send base backup command: %s" -#~ msgstr "%s : n'a pas pu envoyer la commande de sauvegarde de base : %s" +#~ msgid "%s: could not seek back to beginning of WAL segment %s: %s\n" +#~ msgstr "%s : n'a pas pu se déplacer au début du segment WAL %s : %s\n" -#~ msgid "%s: could not identify system: %s\n" -#~ msgstr "%s : n'a pas pu identifier le système : %s\n" +#~ msgid "%s: could not pad WAL segment %s: %s\n" +#~ msgstr "%s : n'a pas pu terminer le segment WAL %s : %s\n" -#~ msgid "%s: could not parse log start position from value \"%s\"\n" -#~ msgstr "%s : n'a pas pu analyser la position de départ des WAL à partir de la valeur « %s »\n" +#~ msgid "%s: could not stat WAL segment %s: %s\n" +#~ msgstr "%s : n'a pas pu récupérer les informations sur le segment WAL %s : %s\n" #~ msgid "%s: could not open WAL segment %s: %s\n" #~ msgstr "%s : n'a pas pu ouvrir le segment WAL %s : %s\n" -#~ msgid "%s: could not stat WAL segment %s: %s\n" -#~ msgstr "%s : n'a pas pu récupérer les informations sur le segment WAL %s : %s\n" +#~ msgid "%s: could not parse log start position from value \"%s\"\n" +#~ msgstr "%s : n'a pas pu analyser la position de départ des WAL à partir de la valeur « %s »\n" -#~ msgid "%s: could not pad WAL segment %s: %s\n" -#~ msgstr "%s : n'a pas pu terminer le segment WAL %s : %s\n" +#~ msgid "%s: could not identify system: %s\n" +#~ msgstr "%s : n'a pas pu identifier le système : %s\n" -#~ msgid "%s: could not seek back to beginning of WAL segment %s: %s\n" -#~ msgstr "%s : n'a pas pu se déplacer au début du segment WAL %s : %s\n" +#~ msgid "%s: could not send base backup command: %s" +#~ msgstr "%s : n'a pas pu envoyer la commande de sauvegarde de base : %s" -#~ msgid "%s: could not get current position in file %s: %s\n" -#~ msgstr "%s : n'a pas pu obtenir la position courant dans le fichier %s : %s\n" +#~ msgid "%s: could not identify system: %s" +#~ msgstr "%s : n'a pas pu identifier le système : %s" -#~ msgid "%s: could not read copy data: %s\n" -#~ msgstr "%s : n'a pas pu lire les données du COPY : %s\n" +#~ msgid "%s: invalid format of xlog location: %s\n" +#~ msgstr "%s : format invalide de l'emplacement du journal de transactions : %s\n" -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help affiche cette aide et quitte\n" +#~ msgid " -?, --help show this help, then exit\n" +#~ msgstr " -?, --help affiche cette aide puis quitte\n" -#~ msgid " --version output version information, then exit\n" -#~ msgstr " --version affiche la version et quitte\n" +#~ msgid " -V, --version output version information, then exit\n" +#~ msgstr " -V, --version affiche la version puis quitte\n" -#~ msgid "%s: keepalive message has incorrect size %d\n" -#~ msgstr "%s : le message keepalive a une taille %d incorrecte\n" +#~ msgid "%s: could not close file %s: %s\n" +#~ msgstr "%s : n'a pas pu fermer le fichier %s : %s\n" -#~ msgid "%s: timeline does not match between base backup and streaming connection\n" -#~ msgstr "" -#~ "%s : la timeline ne correspond pas entre la sauvegarde des fichiers et la\n" -#~ "connexion de réplication\n" +#~ msgid "%s: could not parse transaction log file name \"%s\"\n" +#~ msgstr "%s : n'a pas pu analyser le nom du journal de transactions « %s »\n" -#~ msgid "%s: no start point returned from server\n" -#~ msgstr "%s : aucun point de redémarrage renvoyé du serveur\n" +#~ msgid "%s: could not parse file mode\n" +#~ msgstr "%s : n'a pas pu analyser le mode du fichier\n" -#~ msgid "%s: socket not open" -#~ msgstr "%s : socket non ouvert" +#~ msgid "%s: could not parse file size\n" +#~ msgstr "%s : n'a pas pu analyser la taille du fichier\n" diff --git a/src/bin/pg_basebackup/po/it.po b/src/bin/pg_basebackup/po/it.po index a034b5b743..f607cc7b2c 100644 --- a/src/bin/pg_basebackup/po/it.po +++ b/src/bin/pg_basebackup/po/it.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: pg_basebackup (PostgreSQL) 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-04-17 00:14+0000\n" -"PO-Revision-Date: 2016-04-17 20:43+0100\n" +"POT-Creation-Date: 2017-05-22 15:43+0000\n" +"PO-Revision-Date: 2017-05-23 01:51+0100\n" "Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" "Language: it\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.8.7.1\n" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 #: ../../common/fe_memutils.c:98 @@ -29,32 +29,32 @@ msgstr "memoria esaurita\n" msgid "cannot duplicate null pointer (internal error)\n" msgstr "impossibile duplicare il puntatore nullo (errore interno)\n" -#: pg_basebackup.c:154 +#: pg_basebackup.c:156 #, c-format msgid "%s: directory name too long\n" msgstr "%s: nome directory troppo lungo\n" -#: pg_basebackup.c:164 +#: pg_basebackup.c:166 #, c-format msgid "%s: multiple \"=\" signs in tablespace mapping\n" msgstr "%s: più di un segno \"=\" nella mappatura dei tablespace\n" -#: pg_basebackup.c:177 +#: pg_basebackup.c:179 #, c-format msgid "%s: invalid tablespace mapping format \"%s\", must be \"OLDDIR=NEWDIR\"\n" msgstr "%s: formato di mappatura dei tablespace \"%s\" non valido, deve essere \"VECCHIADIR=NUOVADIR\"\n" -#: pg_basebackup.c:190 +#: pg_basebackup.c:192 #, c-format msgid "%s: old directory is not an absolute path in tablespace mapping: %s\n" msgstr "%s: la vecchia directory non è un percorso assoluto nella mappatura dei tablespace: %s\n" -#: pg_basebackup.c:197 +#: pg_basebackup.c:199 #, c-format msgid "%s: new directory is not an absolute path in tablespace mapping: %s\n" msgstr "%s: la nuova directory non è un percorso assoluto nella mappatura dei tablespace: %s\n" -#: pg_basebackup.c:231 +#: pg_basebackup.c:233 #, c-format msgid "" "%s takes a base backup of a running PostgreSQL server.\n" @@ -63,17 +63,17 @@ msgstr "" "%s crea un backup di base di un server PostgreSQL in esecuzione.\n" "\n" -#: pg_basebackup.c:233 pg_receivexlog.c:66 pg_recvlogical.c:69 +#: pg_basebackup.c:235 pg_receivexlog.c:66 pg_recvlogical.c:72 #, c-format msgid "Usage:\n" msgstr "Utilizzo:\n" -#: pg_basebackup.c:234 pg_receivexlog.c:67 pg_recvlogical.c:70 +#: pg_basebackup.c:236 pg_receivexlog.c:67 pg_recvlogical.c:73 #, c-format msgid " %s [OPTION]...\n" msgstr " %s [OPZIONE]...\n" -#: pg_basebackup.c:235 +#: pg_basebackup.c:237 #, c-format msgid "" "\n" @@ -82,17 +82,17 @@ msgstr "" "\n" "Opzioni di controllo del'output:\n" -#: pg_basebackup.c:236 +#: pg_basebackup.c:238 #, c-format msgid " -D, --pgdata=DIRECTORY receive base backup into directory\n" msgstr " -D, --pgdata=DIRECTORY directory in cui ricevere il backup di base\n" -#: pg_basebackup.c:237 +#: pg_basebackup.c:239 #, c-format msgid " -F, --format=p|t output format (plain (default), tar)\n" msgstr " -F, --format=p|t formato di output (plain (default), tar)\n" -#: pg_basebackup.c:238 +#: pg_basebackup.c:240 #, c-format msgid "" " -r, --max-rate=RATE maximum transfer rate to transfer data directory\n" @@ -101,21 +101,21 @@ msgstr "" " -r, --max-rate=RATE transfer rate massimo per trasferire la directory dei dati\n" " (in kB/s, oppure usa i suffissi \"k\" o \"M\")\n" -#: pg_basebackup.c:240 +#: pg_basebackup.c:242 #, c-format msgid "" " -R, --write-recovery-conf\n" -" write recovery.conf after backup\n" +" write recovery.conf for replication\n" msgstr "" " -R, --write-recovery-conf\n" -" scrivi recovery.conf dopo il backup\n" +" scrivi recovery.conf per la replica\n" -#: pg_basebackup.c:242 pg_receivexlog.c:74 +#: pg_basebackup.c:244 pg_receivexlog.c:74 #, c-format msgid " -S, --slot=SLOTNAME replication slot to use\n" msgstr " -S, --slot=NOMESLOT slot di replicazione da usare\n" -#: pg_basebackup.c:243 +#: pg_basebackup.c:245 #, c-format msgid "" " -T, --tablespace-mapping=OLDDIR=NEWDIR\n" @@ -124,14 +124,14 @@ msgstr "" " -T, --tablespace-mapping=VECCHIADIR=NUOVADIR\n" " sposta il tablespace da VECCHIADIR a NUOVADIR\n" -#: pg_basebackup.c:245 +#: pg_basebackup.c:247 #, c-format msgid " -x, --xlog include required WAL files in backup (fetch mode)\n" msgstr "" " -x, --xlog includi i file WAL necessari nel backup\n" " (modalità fetch)\n" -#: pg_basebackup.c:246 +#: pg_basebackup.c:248 #, c-format msgid "" " -X, --xlog-method=fetch|stream\n" @@ -140,22 +140,22 @@ msgstr "" " -X, --xlog-method=fetch|stream\n" " includi i file WAL richiesti col metodo specificato\n" -#: pg_basebackup.c:248 +#: pg_basebackup.c:250 #, c-format msgid " --xlogdir=XLOGDIR location for the transaction log directory\n" msgstr " --xlogdir=XLOGDIR posizione per la directory del log delle transazioni\n" -#: pg_basebackup.c:249 +#: pg_basebackup.c:251 #, c-format msgid " -z, --gzip compress tar output\n" msgstr " -z, --gzip comprimi l'output tar\n" -#: pg_basebackup.c:250 +#: pg_basebackup.c:252 #, c-format msgid " -Z, --compress=0-9 compress tar output with given compression level\n" msgstr " -Z, --compress=0-9 comprimi l'output tar a questo livello di compressione\n" -#: pg_basebackup.c:251 +#: pg_basebackup.c:253 #, c-format msgid "" "\n" @@ -164,7 +164,7 @@ msgstr "" "\n" "Opzioni generali:\n" -#: pg_basebackup.c:252 +#: pg_basebackup.c:254 #, c-format msgid "" " -c, --checkpoint=fast|spread\n" @@ -173,32 +173,32 @@ msgstr "" " -c, --checkpoint=fast|spread\n" " imposta punti di controllo più veloci o più radi\n" -#: pg_basebackup.c:254 +#: pg_basebackup.c:256 #, c-format msgid " -l, --label=LABEL set backup label\n" msgstr " -l, --label=LABEL imposta l'etichetta del backup\n" -#: pg_basebackup.c:255 +#: pg_basebackup.c:257 #, c-format msgid " -P, --progress show progress information\n" msgstr " -P, --progress mostra informazioni sull'esecuzione\n" -#: pg_basebackup.c:256 pg_receivexlog.c:76 pg_recvlogical.c:89 +#: pg_basebackup.c:258 pg_receivexlog.c:76 pg_recvlogical.c:92 #, c-format msgid " -v, --verbose output verbose messages\n" msgstr " -v, --verbose messaggi di output più numerosi\n" -#: pg_basebackup.c:257 pg_receivexlog.c:77 pg_recvlogical.c:90 +#: pg_basebackup.c:259 pg_receivexlog.c:77 pg_recvlogical.c:93 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version mostra informazioni sulla versione ed esci\n" -#: pg_basebackup.c:258 pg_receivexlog.c:78 pg_recvlogical.c:91 +#: pg_basebackup.c:260 pg_receivexlog.c:78 pg_recvlogical.c:94 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help mostra questo aiuto ed esci\n" -#: pg_basebackup.c:259 pg_receivexlog.c:79 pg_recvlogical.c:92 +#: pg_basebackup.c:261 pg_receivexlog.c:79 pg_recvlogical.c:95 #, c-format msgid "" "\n" @@ -207,22 +207,22 @@ msgstr "" "\n" "Opzioni di connessione:\n" -#: pg_basebackup.c:260 pg_receivexlog.c:80 +#: pg_basebackup.c:262 pg_receivexlog.c:80 #, c-format msgid " -d, --dbname=CONNSTR connection string\n" msgstr " -d, --dbname=CONNSTR stringa di connessione\n" -#: pg_basebackup.c:261 pg_receivexlog.c:81 pg_recvlogical.c:94 +#: pg_basebackup.c:263 pg_receivexlog.c:81 pg_recvlogical.c:97 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=HOSTNAME host del server database o directory del socket\n" -#: pg_basebackup.c:262 pg_receivexlog.c:82 pg_recvlogical.c:95 +#: pg_basebackup.c:264 pg_receivexlog.c:82 pg_recvlogical.c:98 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=PORT numero di porta del server database\n" -#: pg_basebackup.c:263 +#: pg_basebackup.c:265 #, c-format msgid "" " -s, --status-interval=INTERVAL\n" @@ -232,24 +232,24 @@ msgstr "" " intervallo tra i pacchetti di stato inviati al server\n" " (in secondi)\n" -#: pg_basebackup.c:265 pg_receivexlog.c:83 pg_recvlogical.c:96 +#: pg_basebackup.c:267 pg_receivexlog.c:83 pg_recvlogical.c:99 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=NAME connettiti al database col nome utente specificato\n" -#: pg_basebackup.c:266 pg_receivexlog.c:84 pg_recvlogical.c:97 +#: pg_basebackup.c:268 pg_receivexlog.c:84 pg_recvlogical.c:100 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password non chiedere mai la password\n" -#: pg_basebackup.c:267 pg_receivexlog.c:85 pg_recvlogical.c:98 +#: pg_basebackup.c:269 pg_receivexlog.c:85 pg_recvlogical.c:101 #, c-format msgid " -W, --password force password prompt (should happen automatically)\n" msgstr "" " -W, --password forza la richiesta della password\n" " (dovrebbe essere automatico)\n" -#: pg_basebackup.c:268 pg_receivexlog.c:89 pg_recvlogical.c:99 +#: pg_basebackup.c:270 pg_receivexlog.c:89 pg_recvlogical.c:102 #, c-format msgid "" "\n" @@ -258,374 +258,384 @@ msgstr "" "\n" "Puoi segnalare eventuali bug a .\n" -#: pg_basebackup.c:311 +#: pg_basebackup.c:313 #, c-format msgid "%s: could not read from ready pipe: %s\n" msgstr "%s: lettura dalla pipe pronta fallita: %s\n" -#: pg_basebackup.c:319 pg_basebackup.c:422 pg_basebackup.c:1887 -#: streamutil.c:285 +#: pg_basebackup.c:321 pg_basebackup.c:424 pg_basebackup.c:1906 +#: streamutil.c:293 #, c-format msgid "%s: could not parse transaction log location \"%s\"\n" msgstr "%s: interpretazione della posizione del log delle transazioni \"%s\" fallita\n" -#: pg_basebackup.c:435 +#: pg_basebackup.c:437 #, c-format msgid "%s: could not create pipe for background process: %s\n" msgstr "%s: creazione della pipe per il processo in background fallita: %s\n" -#: pg_basebackup.c:460 pg_basebackup.c:515 pg_basebackup.c:1263 +#: pg_basebackup.c:462 pg_basebackup.c:517 pg_basebackup.c:1265 #, c-format msgid "%s: could not create directory \"%s\": %s\n" msgstr "%s: creazione della directory \"%s\" fallita: %s\n" -#: pg_basebackup.c:478 +#: pg_basebackup.c:480 #, c-format msgid "%s: could not create background process: %s\n" msgstr "%s: creazione del processo in background fallita: %s\n" -#: pg_basebackup.c:490 +#: pg_basebackup.c:492 #, c-format msgid "%s: could not create background thread: %s\n" msgstr "%s: creazione del thread in background fallita: %s\n" -#: pg_basebackup.c:534 +#: pg_basebackup.c:536 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" msgstr "%s: la directory \"%s\" esiste ma non è vuota\n" -#: pg_basebackup.c:542 +#: pg_basebackup.c:544 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: accesso alla directory \"%s\" fallito: %s\n" -#: pg_basebackup.c:604 +#: pg_basebackup.c:606 #, c-format msgid "%*s/%s kB (100%%), %d/%d tablespace %*s" msgid_plural "%*s/%s kB (100%%), %d/%d tablespaces %*s" msgstr[0] "%*s/%s kB (100%%), %d/%d tablespace %*s" msgstr[1] "%*s/%s kB (100%%), %d/%d tablespace %*s" -#: pg_basebackup.c:616 +#: pg_basebackup.c:618 #, c-format msgid "%*s/%s kB (%d%%), %d/%d tablespace (%s%-*.*s)" msgid_plural "%*s/%s kB (%d%%), %d/%d tablespaces (%s%-*.*s)" msgstr[0] "%*s/%s kB (%d%%), %d/%d tablespace (%s%-*.*s)" msgstr[1] "%*s/%s kB (%d%%), %d/%d tablespace (%s%-*.*s)" -#: pg_basebackup.c:632 +#: pg_basebackup.c:634 #, c-format msgid "%*s/%s kB (%d%%), %d/%d tablespace" msgid_plural "%*s/%s kB (%d%%), %d/%d tablespaces" msgstr[0] "%*s/%s kB (%d%%), %d/%d tablespace" msgstr[1] "%*s/%s kB (%d%%), %d/%d tablespace" -#: pg_basebackup.c:654 +#: pg_basebackup.c:656 #, c-format msgid "%s: transfer rate \"%s\" is not a valid value\n" msgstr "%s: il transfer rate \"%s\" non è un valore valido\n" -#: pg_basebackup.c:661 +#: pg_basebackup.c:663 #, c-format msgid "%s: invalid transfer rate \"%s\": %s\n" msgstr "%s: transfer rate non valido \"%s\": %s\n" -#: pg_basebackup.c:671 +#: pg_basebackup.c:673 #, c-format msgid "%s: transfer rate must be greater than zero\n" msgstr "%s: il transfer rate deve essere maggiore di zero\n" -#: pg_basebackup.c:705 +#: pg_basebackup.c:707 #, c-format msgid "%s: invalid --max-rate unit: \"%s\"\n" msgstr "%s: unità --max-rate non valida: \"%s\"\n" -#: pg_basebackup.c:714 +#: pg_basebackup.c:716 #, c-format msgid "%s: transfer rate \"%s\" exceeds integer range\n" msgstr "%s: il transfer rate \"%s\" eccede l'intervallo degli interi\n" -#: pg_basebackup.c:726 +#: pg_basebackup.c:728 #, c-format msgid "%s: transfer rate \"%s\" is out of range\n" msgstr "%s: il transfer rate \"%s\" è fuori dall'intervallo consentito\n" -#: pg_basebackup.c:750 +#: pg_basebackup.c:752 #, c-format msgid "%s: could not write to compressed file \"%s\": %s\n" msgstr "%s: scrittura nel file compresso \"%s\" fallita: %s\n" -#: pg_basebackup.c:760 pg_basebackup.c:1357 pg_basebackup.c:1582 +#: pg_basebackup.c:762 pg_basebackup.c:1359 pg_basebackup.c:1584 #, c-format msgid "%s: could not write to file \"%s\": %s\n" msgstr "%s: scrittura nel file \"%s\" fallita: %s\n" -#: pg_basebackup.c:815 pg_basebackup.c:836 pg_basebackup.c:864 +#: pg_basebackup.c:817 pg_basebackup.c:838 pg_basebackup.c:866 #, c-format msgid "%s: could not set compression level %d: %s\n" msgstr "%s: impostazione del livello di compressione %d fallito: %s\n" -#: pg_basebackup.c:885 +#: pg_basebackup.c:887 #, c-format msgid "%s: could not create compressed file \"%s\": %s\n" msgstr "%s: creazione del file compresso \"%s\" fallita: %s\n" -#: pg_basebackup.c:896 pg_basebackup.c:1317 pg_basebackup.c:1575 +#: pg_basebackup.c:898 pg_basebackup.c:1319 pg_basebackup.c:1577 #, c-format msgid "%s: could not create file \"%s\": %s\n" msgstr "%s: creazione del file \"%s\" fallita: %s\n" -#: pg_basebackup.c:908 pg_basebackup.c:1172 +#: pg_basebackup.c:910 pg_basebackup.c:1174 #, c-format msgid "%s: could not get COPY data stream: %s" msgstr "%s: non è stato possibile ottenere lo stream di dati COPY: %s" -#: pg_basebackup.c:965 +#: pg_basebackup.c:967 #, c-format msgid "%s: could not close compressed file \"%s\": %s\n" msgstr "%s: chiusura del file compresso \"%s\" fallita: %s\n" -#: pg_basebackup.c:978 pg_recvlogical.c:577 receivelog.c:203 receivelog.c:351 -#: receivelog.c:738 +#: pg_basebackup.c:980 pg_recvlogical.c:580 receivelog.c:206 receivelog.c:354 +#: receivelog.c:743 #, c-format msgid "%s: could not close file \"%s\": %s\n" msgstr "%s: chiusura del file \"%s\" fallita: %s\n" -#: pg_basebackup.c:989 pg_basebackup.c:1201 pg_recvlogical.c:443 -#: receivelog.c:1019 +#: pg_basebackup.c:991 pg_basebackup.c:1203 pg_recvlogical.c:446 +#: receivelog.c:1024 #, c-format msgid "%s: could not read COPY data: %s" msgstr "%s: lettura dei dati COPY fallita: %s" -#: pg_basebackup.c:1215 +#: pg_basebackup.c:1217 #, c-format msgid "%s: invalid tar block header size: %d\n" msgstr "%s: dimensione del blocco di intestazione del file tar non valida: %d\n" -#: pg_basebackup.c:1271 +#: pg_basebackup.c:1273 #, c-format msgid "%s: could not set permissions on directory \"%s\": %s\n" msgstr "%s: impostazione dei permessi sulla directory \"%s\" fallita: %s\n" -#: pg_basebackup.c:1295 +#: pg_basebackup.c:1297 #, c-format msgid "%s: could not create symbolic link from \"%s\" to \"%s\": %s\n" msgstr "%s: creazione del link simbolico da \"%s\" a \"%s\" fallita: %s\n" -#: pg_basebackup.c:1304 +#: pg_basebackup.c:1306 #, c-format msgid "%s: unrecognized link indicator \"%c\"\n" msgstr "%s: indicatore di link sconosciuto \"%c\"\n" -#: pg_basebackup.c:1324 +#: pg_basebackup.c:1326 #, c-format msgid "%s: could not set permissions on file \"%s\": %s\n" msgstr "%s: impostazione dei permessi sul file \"%s\" fallita: %s\n" -#: pg_basebackup.c:1383 +#: pg_basebackup.c:1385 #, c-format msgid "%s: COPY stream ended before last file was finished\n" msgstr "%s: lo stream COPY è terminato prima che l'ultimo file fosse finito\n" -#: pg_basebackup.c:1469 pg_basebackup.c:1489 pg_basebackup.c:1496 -#: pg_basebackup.c:1550 +#: pg_basebackup.c:1471 pg_basebackup.c:1491 pg_basebackup.c:1498 +#: pg_basebackup.c:1552 #, c-format msgid "%s: out of memory\n" msgstr "%s: memoria esaurita\n" -#: pg_basebackup.c:1627 +#: pg_basebackup.c:1629 #, c-format msgid "%s: incompatible server version %s\n" msgstr "%s: versione del server incompatibile %s\n" -#: pg_basebackup.c:1674 pg_recvlogical.c:261 receivelog.c:536 receivelog.c:587 -#: receivelog.c:627 streamutil.c:255 streamutil.c:359 streamutil.c:405 +#: pg_basebackup.c:1666 +#, c-format +msgid "%s: initiating base backup, waiting for checkpoint to complete\n" +msgstr "%s: avvio del backup di base, in attesa del completamento del checkpoint\n" + +#: pg_basebackup.c:1684 pg_recvlogical.c:264 receivelog.c:541 receivelog.c:592 +#: receivelog.c:632 streamutil.c:263 streamutil.c:367 streamutil.c:413 #, c-format msgid "%s: could not send replication command \"%s\": %s" msgstr "%s: invio del comando di replica \"%s\" fallito: %s" -#: pg_basebackup.c:1685 +#: pg_basebackup.c:1695 #, c-format msgid "%s: could not initiate base backup: %s" msgstr "%s: avvio del backup di base fallito: %s" -#: pg_basebackup.c:1692 +#: pg_basebackup.c:1702 #, c-format msgid "%s: server returned unexpected response to BASE_BACKUP command; got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: il server ha restituito una risposta imprevista al comando BASE_BACKUP; ricevute %d righe e %d campi, attese %d righe e %d campi\n" -#: pg_basebackup.c:1712 +#: pg_basebackup.c:1710 +#, c-format +msgid "%s: checkpoint completed\n" +msgstr "%s: checkpoint completato\n" + +#: pg_basebackup.c:1725 #, c-format msgid "transaction log start point: %s on timeline %u\n" msgstr "punto di avvio log delle transazioni: %s sulla timeline %u\n" -#: pg_basebackup.c:1721 +#: pg_basebackup.c:1734 #, c-format msgid "%s: could not get backup header: %s" msgstr "%s: non è stato possibile ottenere l'intestazione del backup: %s" -#: pg_basebackup.c:1727 +#: pg_basebackup.c:1740 #, c-format msgid "%s: no data returned from server\n" msgstr "%s: nessun dato restituito dal server\n" -#: pg_basebackup.c:1759 +#: pg_basebackup.c:1772 #, c-format msgid "%s: can only write single tablespace to stdout, database has %d\n" msgstr "%s: è possibile scrivere solo un singolo tablespace su stdout, il database ne ha %d\n" -#: pg_basebackup.c:1771 +#: pg_basebackup.c:1784 #, c-format msgid "%s: starting background WAL receiver\n" msgstr "%s: avvio del ricevitore dei WAL in background\n" -#: pg_basebackup.c:1802 +#: pg_basebackup.c:1815 #, c-format msgid "%s: could not get transaction log end position from server: %s" msgstr "%s: non è stato possibile ottenere la posizione finale del log delle transazioni dal server: %s" -#: pg_basebackup.c:1809 +#: pg_basebackup.c:1822 #, c-format msgid "%s: no transaction log end position returned from server\n" msgstr "%s: nessuna posizione finale del log delle transazioni restituita dal server\n" -#: pg_basebackup.c:1821 +#: pg_basebackup.c:1834 #, c-format msgid "%s: final receive failed: %s" msgstr "%s: ricezione finale fallita: %s" -#: pg_basebackup.c:1839 +#: pg_basebackup.c:1858 #, c-format msgid "%s: waiting for background process to finish streaming ...\n" msgstr "%s: in attesa che il processo in background finisca lo streaming ...\n" -#: pg_basebackup.c:1845 +#: pg_basebackup.c:1864 #, c-format msgid "%s: could not send command to background pipe: %s\n" msgstr "%s invio del comando alla pipe di background fallita: %s\n" -#: pg_basebackup.c:1854 +#: pg_basebackup.c:1873 #, c-format msgid "%s: could not wait for child process: %s\n" msgstr "%s: errore nell'attesa del processo figlio: %s\n" -#: pg_basebackup.c:1860 +#: pg_basebackup.c:1879 #, c-format msgid "%s: child %d died, expected %d\n" msgstr "%s: il processo figlio %d interrotto, atteso %d\n" -#: pg_basebackup.c:1866 +#: pg_basebackup.c:1885 #, c-format msgid "%s: child process did not exit normally\n" msgstr "%s: il processo figlio non è terminato normalmente\n" -#: pg_basebackup.c:1872 +#: pg_basebackup.c:1891 #, c-format msgid "%s: child process exited with error %d\n" msgstr "%s: il processo figlio è terminato con errore %d\n" -#: pg_basebackup.c:1899 +#: pg_basebackup.c:1918 #, c-format msgid "%s: could not wait for child thread: %s\n" msgstr "%s: errore nell'attesa del thread figlio: %s\n" -#: pg_basebackup.c:1906 +#: pg_basebackup.c:1925 #, c-format msgid "%s: could not get child thread exit status: %s\n" msgstr "%s: non è stato possibile ottenere il codice di uscita del thread figlio: %s\n" -#: pg_basebackup.c:1912 +#: pg_basebackup.c:1931 #, c-format msgid "%s: child thread exited with error %u\n" msgstr "%s: il thread figlio è terminato con errore %u\n" -#: pg_basebackup.c:2002 +#: pg_basebackup.c:2021 #, c-format msgid "%s: invalid output format \"%s\", must be \"plain\" or \"tar\"\n" msgstr "%s: formato di output \"%s\" non valido, deve essere \"plain\" oppure \"tar\"\n" -#: pg_basebackup.c:2023 pg_basebackup.c:2035 +#: pg_basebackup.c:2042 pg_basebackup.c:2054 #, c-format msgid "%s: cannot specify both --xlog and --xlog-method\n" msgstr "%s: non è possibile specificare sia --xlog che --xlog-method\n" -#: pg_basebackup.c:2050 +#: pg_basebackup.c:2069 #, c-format msgid "%s: invalid xlog-method option \"%s\", must be \"fetch\" or \"stream\"\n" msgstr "%s: opzione xlog-method \"%s\" non valida, deve essere \"fetch\" oppure \"stream\"\n" -#: pg_basebackup.c:2072 +#: pg_basebackup.c:2091 #, c-format msgid "%s: invalid compression level \"%s\"\n" msgstr "%s: livello di compressione non valido \"%s\"\n" -#: pg_basebackup.c:2084 +#: pg_basebackup.c:2103 #, c-format msgid "%s: invalid checkpoint argument \"%s\", must be \"fast\" or \"spread\"\n" msgstr "%s: argomento di checkpoint \"%s\" non valido, deve essere \"fast\" oppure \"spread\"\n" -#: pg_basebackup.c:2111 pg_receivexlog.c:445 pg_recvlogical.c:760 +#: pg_basebackup.c:2130 pg_receivexlog.c:445 pg_recvlogical.c:763 #, c-format msgid "%s: invalid status interval \"%s\"\n" msgstr "%s: intervallo di status \"%s\" non valido\n" -#: pg_basebackup.c:2127 pg_basebackup.c:2141 pg_basebackup.c:2152 -#: pg_basebackup.c:2165 pg_basebackup.c:2175 pg_basebackup.c:2185 -#: pg_basebackup.c:2197 pg_basebackup.c:2208 pg_receivexlog.c:477 +#: pg_basebackup.c:2146 pg_basebackup.c:2160 pg_basebackup.c:2171 +#: pg_basebackup.c:2184 pg_basebackup.c:2194 pg_basebackup.c:2204 +#: pg_basebackup.c:2216 pg_basebackup.c:2227 pg_receivexlog.c:477 #: pg_receivexlog.c:491 pg_receivexlog.c:499 pg_receivexlog.c:509 -#: pg_receivexlog.c:520 pg_recvlogical.c:787 pg_recvlogical.c:801 -#: pg_recvlogical.c:812 pg_recvlogical.c:820 pg_recvlogical.c:828 -#: pg_recvlogical.c:836 pg_recvlogical.c:844 pg_recvlogical.c:852 +#: pg_receivexlog.c:520 pg_recvlogical.c:790 pg_recvlogical.c:804 +#: pg_recvlogical.c:815 pg_recvlogical.c:823 pg_recvlogical.c:831 +#: pg_recvlogical.c:839 pg_recvlogical.c:847 pg_recvlogical.c:855 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Prova \"%s --help\" per maggiori informazioni.\n" -#: pg_basebackup.c:2139 pg_receivexlog.c:489 pg_recvlogical.c:799 +#: pg_basebackup.c:2158 pg_receivexlog.c:489 pg_recvlogical.c:802 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: troppi argomenti nella riga di comando (il primo è \"%s\")\n" -#: pg_basebackup.c:2151 pg_receivexlog.c:519 +#: pg_basebackup.c:2170 pg_receivexlog.c:519 #, c-format msgid "%s: no target directory specified\n" msgstr "%s: nessuna directory di destinazione specificata\n" -#: pg_basebackup.c:2163 +#: pg_basebackup.c:2182 #, c-format msgid "%s: only tar mode backups can be compressed\n" msgstr "%s: solo i backup in modalità tar possono essere compressi\n" -#: pg_basebackup.c:2173 +#: pg_basebackup.c:2192 #, c-format msgid "%s: WAL streaming can only be used in plain mode\n" msgstr "%s: lo streaming WAL può essere usato solo in modalità plain\n" -#: pg_basebackup.c:2183 +#: pg_basebackup.c:2202 #, c-format msgid "%s: replication slots can only be used with WAL streaming\n" msgstr "%s: gli slot di replica possono essere usati solo con lo streaming dei WAL\n" -#: pg_basebackup.c:2195 +#: pg_basebackup.c:2214 #, c-format msgid "%s: transaction log directory location can only be specified in plain mode\n" msgstr "%s: la posizione della directory del log delle transazioni può essere specificata solo in modalità plain\n" -#: pg_basebackup.c:2206 +#: pg_basebackup.c:2225 #, c-format msgid "%s: transaction log directory location must be an absolute path\n" msgstr "%s: la posizione della directory del log delle transazioni deve essere un percorso assoluto\n" -#: pg_basebackup.c:2218 +#: pg_basebackup.c:2237 #, c-format msgid "%s: this build does not support compression\n" msgstr "%s: questo binario compilato non supporta la compressione\n" -#: pg_basebackup.c:2245 +#: pg_basebackup.c:2264 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" msgstr "%s: creazione del link simbolico \"%s\" fallita: %s\n" -#: pg_basebackup.c:2250 +#: pg_basebackup.c:2269 #, c-format msgid "%s: symlinks are not supported on this platform\n" msgstr "%s: questa piattaforma non supporta i link simbolici\n" @@ -639,7 +649,7 @@ msgstr "" "%s riceve lo stream del log delle transazioni di PostgreSQL.\n" "\n" -#: pg_receivexlog.c:68 pg_recvlogical.c:75 +#: pg_receivexlog.c:68 pg_recvlogical.c:78 #, c-format msgid "" "\n" @@ -653,17 +663,17 @@ msgstr "" msgid " -D, --directory=DIR receive transaction log files into this directory\n" msgstr " -D, --directory=DIR ricevi i file di log delle transazioni in questa directory\n" -#: pg_receivexlog.c:70 pg_recvlogical.c:79 +#: pg_receivexlog.c:70 pg_recvlogical.c:82 #, c-format msgid " --if-not-exists do not error if slot already exists when creating a slot\n" msgstr " --if-not-exists non dare un errore se esiste già uno slot con lo stesso nome\n" -#: pg_receivexlog.c:71 pg_recvlogical.c:81 +#: pg_receivexlog.c:71 pg_recvlogical.c:84 #, c-format msgid " -n, --no-loop do not loop on connection lost\n" msgstr " -n, --no-loop non ri-eseguire se la connessione è persa\n" -#: pg_receivexlog.c:72 pg_recvlogical.c:86 +#: pg_receivexlog.c:72 pg_recvlogical.c:89 #, c-format msgid "" " -s, --status-interval=SECS\n" @@ -687,12 +697,12 @@ msgstr "" "\n" "Azioni opzionali:\n" -#: pg_receivexlog.c:87 pg_recvlogical.c:72 +#: pg_receivexlog.c:87 pg_recvlogical.c:75 #, c-format msgid " --create-slot create a new replication slot (for the slot's name see --slot)\n" msgstr " --create-slot crea un nuovo slot di replica (per il nome vedi --slot)\n" -#: pg_receivexlog.c:88 pg_recvlogical.c:73 +#: pg_receivexlog.c:88 pg_recvlogical.c:76 #, c-format msgid " --drop-slot drop the replication slot (for the slot's name see --slot)\n" msgstr " --drop-slot elimina lo slot di replica (per il nome vedi --slot)\n" @@ -722,7 +732,7 @@ msgstr "%s: apertura della directory \"%s\" fallita: %s\n" msgid "%s: could not close directory \"%s\": %s\n" msgstr "%s: chiusura della directory \"%s\" fallita: %s\n" -#: pg_receivexlog.c:218 pg_recvlogical.c:343 +#: pg_receivexlog.c:218 pg_recvlogical.c:346 #, c-format msgid "%s: could not stat file \"%s\": %s\n" msgstr "%s: non è stato possibile ottenere informazioni sul file \"%s\": %s\n" @@ -742,7 +752,7 @@ msgstr "%s: lettura della directory \"%s\" fallita: %s\n" msgid "%s: starting log streaming at %X/%X (timeline %u)\n" msgstr "%s: avvio dello streaming dei log a %X/%X (timeline %u)\n" -#: pg_receivexlog.c:426 pg_recvlogical.c:707 +#: pg_receivexlog.c:426 pg_recvlogical.c:710 #, c-format msgid "%s: invalid port number \"%s\"\n" msgstr "%s: numero di porta non valido \"%s\"\n" @@ -763,28 +773,28 @@ msgstr "%s: %s richiede la specifica di uno slot usando --slot\n" msgid "%s: replication connection using slot \"%s\" is unexpectedly database specific\n" msgstr "%s: la replica di connessione usando lo slot \"%s\" è inaspettatamente specifica per il database\n" -#: pg_receivexlog.c:574 pg_recvlogical.c:892 +#: pg_receivexlog.c:574 pg_recvlogical.c:895 #, c-format msgid "%s: dropping replication slot \"%s\"\n" msgstr "%s: eliminazione dello slot di replica \"%s\"\n" -#: pg_receivexlog.c:587 pg_recvlogical.c:904 +#: pg_receivexlog.c:587 pg_recvlogical.c:907 #, c-format msgid "%s: creating replication slot \"%s\"\n" msgstr "%s: creazione dello slot di replica \"%s\"\n" -#: pg_receivexlog.c:614 pg_recvlogical.c:930 +#: pg_receivexlog.c:614 pg_recvlogical.c:933 #, c-format msgid "%s: disconnected\n" msgstr "%s: disconnesso\n" #. translator: check source for value for %d -#: pg_receivexlog.c:621 pg_recvlogical.c:937 +#: pg_receivexlog.c:621 pg_recvlogical.c:940 #, c-format msgid "%s: disconnected; waiting %d seconds to try again\n" msgstr "%s: disconnesso; aspetterò %d secondi prima di riprovare\n" -#: pg_recvlogical.c:67 +#: pg_recvlogical.c:70 #, c-format msgid "" "%s controls PostgreSQL logical decoding streams.\n" @@ -793,7 +803,7 @@ msgstr "" "%s controlla i flussi di decodifica logica di PostgreSQ.\n" "\n" -#: pg_recvlogical.c:71 +#: pg_recvlogical.c:74 #, c-format msgid "" "\n" @@ -802,17 +812,17 @@ msgstr "" "\n" "Azioni da effettuare:\n" -#: pg_recvlogical.c:74 +#: pg_recvlogical.c:77 #, c-format msgid " --start start streaming in a replication slot (for the slot's name see --slot)\n" msgstr " --start avvia lo streaming in uno slot di replica (per il nome vedi --slot)\n" -#: pg_recvlogical.c:76 +#: pg_recvlogical.c:79 #, c-format msgid " -f, --file=FILE receive log into this file, - for stdout\n" msgstr " -f, --file=FILE riceve i log in questo file, - per stdout\n" -#: pg_recvlogical.c:77 +#: pg_recvlogical.c:80 #, c-format msgid "" " -F --fsync-interval=SECS\n" @@ -821,12 +831,12 @@ msgstr "" " -F --fsync-interval=SEC\n" " tempo tra i sync del file di output (default: %d)\n" -#: pg_recvlogical.c:80 +#: pg_recvlogical.c:83 #, c-format msgid " -I, --startpos=LSN where in an existing slot should the streaming start\n" msgstr " -I, --startpos=LSN dove deve partire lo streaming in uno slot esistente\n" -#: pg_recvlogical.c:82 +#: pg_recvlogical.c:85 #, c-format msgid "" " -o, --option=NAME[=VALUE]\n" @@ -837,313 +847,313 @@ msgstr "" " passa l'opzione NOME col valore opzionale VALORE\n" " al plugin di output\n" -#: pg_recvlogical.c:85 +#: pg_recvlogical.c:88 #, c-format msgid " -P, --plugin=PLUGIN use output plugin PLUGIN (default: %s)\n" msgstr " -P, --plugin=PLUGIN usa il plugin di output PLUGIN (default: %s)\n" -#: pg_recvlogical.c:88 +#: pg_recvlogical.c:91 #, c-format msgid " -S, --slot=SLOTNAME name of the logical replication slot\n" msgstr " -S, --slot=NOMESLOT nome dello slot di replica logica\n" -#: pg_recvlogical.c:93 +#: pg_recvlogical.c:96 #, c-format msgid " -d, --dbname=DBNAME database to connect to\n" msgstr " -d, --dbname=NOMEDB database a cui connettersi\n" -#: pg_recvlogical.c:126 +#: pg_recvlogical.c:129 #, c-format msgid "%s: confirming write up to %X/%X, flush to %X/%X (slot %s)\n" msgstr "%s: scritture confermate fino a %X/%X, flush a %X/%X (slot %s)\n" -#: pg_recvlogical.c:151 receivelog.c:404 +#: pg_recvlogical.c:154 receivelog.c:407 #, c-format msgid "%s: could not send feedback packet: %s" msgstr "%s: invio del pacchetto di feedback fallito: %s" -#: pg_recvlogical.c:190 +#: pg_recvlogical.c:193 #, c-format msgid "%s: could not fsync log file \"%s\": %s\n" msgstr "%s: fsync del file di log \"%s\" fallito: %s\n" -#: pg_recvlogical.c:229 +#: pg_recvlogical.c:232 #, c-format msgid "%s: starting log streaming at %X/%X (slot %s)\n" msgstr "%s: inizio dello streaming dei log a %X/%X (slot %s)\n" -#: pg_recvlogical.c:271 +#: pg_recvlogical.c:274 #, c-format msgid "%s: streaming initiated\n" msgstr "%s: streaming iniziato\n" -#: pg_recvlogical.c:336 +#: pg_recvlogical.c:339 #, c-format msgid "%s: could not open log file \"%s\": %s\n" msgstr "%s: apertura del file di log \"%s\" fallita: %s\n" -#: pg_recvlogical.c:366 receivelog.c:933 +#: pg_recvlogical.c:369 receivelog.c:938 #, c-format msgid "%s: invalid socket: %s" msgstr "%s: socket non valido: %s" -#: pg_recvlogical.c:420 receivelog.c:955 +#: pg_recvlogical.c:423 receivelog.c:960 #, c-format msgid "%s: select() failed: %s\n" msgstr "%s: select() fallita: %s\n" -#: pg_recvlogical.c:429 receivelog.c:1005 +#: pg_recvlogical.c:432 receivelog.c:1010 #, c-format msgid "%s: could not receive data from WAL stream: %s" msgstr "%s: ricezione dati dallo stream WAL fallita: %s" -#: pg_recvlogical.c:470 pg_recvlogical.c:509 receivelog.c:1050 -#: receivelog.c:1117 +#: pg_recvlogical.c:473 pg_recvlogical.c:512 receivelog.c:1055 +#: receivelog.c:1122 #, c-format msgid "%s: streaming header too small: %d\n" msgstr "%s: intestazione dello streaming troppo piccola: %d\n" -#: pg_recvlogical.c:492 receivelog.c:898 +#: pg_recvlogical.c:495 receivelog.c:903 #, c-format msgid "%s: unrecognized streaming header: \"%c\"\n" msgstr "%s: intestazione dello streaming sconosciuta: \"%c\"\n" -#: pg_recvlogical.c:538 pg_recvlogical.c:552 +#: pg_recvlogical.c:541 pg_recvlogical.c:555 #, c-format msgid "%s: could not write %u bytes to log file \"%s\": %s\n" msgstr "%s: scrittura di %u byte nel file di log \"%s\" fallita: %s\n" -#: pg_recvlogical.c:563 receivelog.c:691 receivelog.c:729 +#: pg_recvlogical.c:566 receivelog.c:696 receivelog.c:734 #, c-format msgid "%s: unexpected termination of replication stream: %s" msgstr "%s: terminazione inaspettata dello stream di replica: %s" -#: pg_recvlogical.c:686 +#: pg_recvlogical.c:689 #, c-format msgid "%s: invalid fsync interval \"%s\"\n" msgstr "%s: intervallo di fsync \"%s\" non valido\n" -#: pg_recvlogical.c:727 +#: pg_recvlogical.c:730 #, c-format msgid "%s: could not parse start position \"%s\"\n" msgstr "%s: interpretazione della posizione di inizio \"%s\" fallita\n" -#: pg_recvlogical.c:811 +#: pg_recvlogical.c:814 #, c-format msgid "%s: no slot specified\n" msgstr "%s: slot non specificato\n" -#: pg_recvlogical.c:819 +#: pg_recvlogical.c:822 #, c-format msgid "%s: no target file specified\n" msgstr "%s: file di destinazione non specificato\n" -#: pg_recvlogical.c:827 +#: pg_recvlogical.c:830 #, c-format msgid "%s: no database specified\n" msgstr "%s: database non specificato\n" -#: pg_recvlogical.c:835 +#: pg_recvlogical.c:838 #, c-format msgid "%s: at least one action needs to be specified\n" msgstr "%s: occorre specificare almeno una azione\n" -#: pg_recvlogical.c:843 +#: pg_recvlogical.c:846 #, c-format msgid "%s: cannot use --create-slot or --start together with --drop-slot\n" msgstr "%s: --create-slot o --start non possono essere usate con --drop-slot\n" -#: pg_recvlogical.c:851 +#: pg_recvlogical.c:854 #, c-format msgid "%s: cannot use --create-slot or --drop-slot together with --startpos\n" msgstr "%s: --create-slot o --drop-slot non possono essere usate con --startpos\n" -#: pg_recvlogical.c:882 +#: pg_recvlogical.c:885 #, c-format msgid "%s: could not establish database-specific replication connection\n" msgstr "%s: connessione di replica specifica per il database fallita\n" -#: receivelog.c:66 +#: receivelog.c:69 #, c-format msgid "%s: could not create archive status file \"%s\": %s\n" msgstr "%s: creazione del file di stato dell'archivio \"%s\" fallita: %s\n" -#: receivelog.c:73 receivelog.c:196 receivelog.c:344 receivelog.c:828 -#: receivelog.c:1071 +#: receivelog.c:76 receivelog.c:199 receivelog.c:347 receivelog.c:833 +#: receivelog.c:1076 #, c-format msgid "%s: could not fsync file \"%s\": %s\n" msgstr "%s: fsync del file \"%s\" fallito: %s\n" -#: receivelog.c:111 +#: receivelog.c:114 #, c-format msgid "%s: could not open transaction log file \"%s\": %s\n" msgstr "%s: apertura del file di log delle transazioni \"%s\" fallita: %s\n" -#: receivelog.c:123 +#: receivelog.c:126 #, c-format msgid "%s: could not stat transaction log file \"%s\": %s\n" msgstr "%s: non è stato possibile ottenere informazioni sul file di log delle transazioni \"%s\": %s\n" -#: receivelog.c:137 +#: receivelog.c:140 #, c-format msgid "%s: transaction log file \"%s\" has %d bytes, should be 0 or %d\n" msgstr "%s: il file di log delle transazioni \"%s\" ha %d byte, dovrebbero essere 0 or %d\n" -#: receivelog.c:150 +#: receivelog.c:153 #, c-format msgid "%s: could not pad transaction log file \"%s\": %s\n" msgstr "%s: correzione della lunghezza del file di log delle transazioni \"%s\" fallita: %s\n" -#: receivelog.c:163 +#: receivelog.c:166 #, c-format msgid "%s: could not seek to beginning of transaction log file \"%s\": %s\n" msgstr "%s: spostamento all'inizio del file di log delle transazioni \"%s\" fallito: %s\n" -#: receivelog.c:189 +#: receivelog.c:192 #, c-format msgid "%s: could not determine seek position in file \"%s\": %s\n" msgstr "%s: determinazione della posizione dove muoversi nel file \"%s\" fallita: %s\n" -#: receivelog.c:222 +#: receivelog.c:225 #, c-format msgid "%s: could not rename file \"%s\": %s\n" msgstr "%s: non è stato possibile rinominare il file \"%s\": %s\n" -#: receivelog.c:229 +#: receivelog.c:232 #, c-format msgid "%s: not renaming \"%s%s\", segment is not complete\n" msgstr "%s: \"%s%s\" non rinominato, il segmento non è completo\n" -#: receivelog.c:275 +#: receivelog.c:278 #, c-format msgid "%s: could not open timeline history file \"%s\": %s\n" msgstr "%s: apertura del file della storia della timeline \"%s\" fallita: %s\n" -#: receivelog.c:302 +#: receivelog.c:305 #, c-format msgid "%s: server reported unexpected history file name for timeline %u: %s\n" msgstr "%s: il server ha riportato un nome di file della storia imprevisto per la timeline %u: %s\n" -#: receivelog.c:319 +#: receivelog.c:322 #, c-format msgid "%s: could not create timeline history file \"%s\": %s\n" msgstr "%s: creazione del file di storia della timeline \"%s\" fallita: %s\n" -#: receivelog.c:336 +#: receivelog.c:339 #, c-format msgid "%s: could not write timeline history file \"%s\": %s\n" msgstr "%s: scrittura del file di storia della timeline \"%s\" fallita: %s\n" -#: receivelog.c:361 +#: receivelog.c:364 #, c-format msgid "%s: could not rename file \"%s\" to \"%s\": %s\n" msgstr "%s: non è stato possibile rinominare il file di storia della timeline \"%s\" in \"%s\": %s\n" -#: receivelog.c:438 +#: receivelog.c:441 #, c-format msgid "%s: incompatible server version %s; client does not support streaming from server versions older than %s\n" msgstr "%s: server di versione %s non compatibile; il client non supporta lo streaming da server di versione precedente a %s\n" -#: receivelog.c:448 +#: receivelog.c:451 #, c-format msgid "%s: incompatible server version %s; client does not support streaming from server versions newer than %s\n" msgstr "%s: server di versione %s non compatibile; il client non supporta lo streaming da server di versione successiva a %s\n" -#: receivelog.c:544 streamutil.c:264 streamutil.c:303 +#: receivelog.c:549 streamutil.c:272 streamutil.c:311 #, c-format msgid "%s: could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields\n" msgstr "%s: identificazione del sistema fallita: ricevute %d righe e %d campi, attese %d righe e %d campi o più\n" -#: receivelog.c:552 +#: receivelog.c:557 #, c-format msgid "%s: system identifier does not match between base backup and streaming connection\n" msgstr "%s: l'identificativo di sistema non combacia tra il backup di base e la connessione in streaming\n" -#: receivelog.c:560 +#: receivelog.c:565 #, c-format msgid "%s: starting timeline %u is not present in the server\n" msgstr "%s: la timeline di inizio %u non è presente nel server\n" -#: receivelog.c:600 +#: receivelog.c:605 #, c-format msgid "%s: unexpected response to TIMELINE_HISTORY command: got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: risposta inattesa al comando TIMELINE_HISTORY: ricevute %d righe e %d campi, attese %d righe e %d campi\n" -#: receivelog.c:672 +#: receivelog.c:677 #, c-format msgid "%s: server reported unexpected next timeline %u, following timeline %u\n" msgstr "%s: il server ha riportato la timeline successiva imprevista %u, a seguito della timeline %u\n" -#: receivelog.c:679 +#: receivelog.c:684 #, c-format msgid "%s: server stopped streaming timeline %u at %X/%X, but reported next timeline %u to begin at %X/%X\n" msgstr "%s: il server ha interrotto lo streaming della timeline %u a %X/%X, ma ha riportato l'inizio della timeline successiva %u a %X/%X\n" -#: receivelog.c:720 +#: receivelog.c:725 #, c-format msgid "%s: replication stream was terminated before stop point\n" msgstr "%s: lo stream di replica è terminato prima del punto di arresto\n" -#: receivelog.c:769 +#: receivelog.c:774 #, c-format msgid "%s: unexpected result set after end-of-timeline: got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: risultato imprevisto dopo la fine della timeline: ricevute %d righe e %d campi, attese %d righe e %d campi\n" -#: receivelog.c:779 +#: receivelog.c:784 #, c-format msgid "%s: could not parse next timeline's starting point \"%s\"\n" msgstr "%s: interpretazione del punto d'inizio della nuova timeline \"%s\" fallita\n" -#: receivelog.c:1136 +#: receivelog.c:1141 #, c-format msgid "%s: received transaction log record for offset %u with no file open\n" msgstr "%s: ricevuti record di log delle transazioni per offset %u senza alcun file aperto\n" -#: receivelog.c:1148 +#: receivelog.c:1153 #, c-format msgid "%s: got WAL data offset %08x, expected %08x\n" msgstr "%s: ricevuto offset dati WAL %08x, atteso %08x\n" -#: receivelog.c:1184 +#: receivelog.c:1189 #, c-format msgid "%s: could not write %u bytes to WAL file \"%s\": %s\n" msgstr "%s: scrittura di %u byte nel file WAL \"%s\" fallita: %s\n" -#: receivelog.c:1209 receivelog.c:1250 receivelog.c:1281 +#: receivelog.c:1214 receivelog.c:1255 receivelog.c:1286 #, c-format msgid "%s: could not send copy-end packet: %s" msgstr "%s: invio del pacchetto di fine copia fallito: %s" -#: streamutil.c:145 +#: streamutil.c:153 msgid "Password: " msgstr "Password: " -#: streamutil.c:169 +#: streamutil.c:177 #, c-format msgid "%s: could not connect to server\n" msgstr "%s: connessione al server fallita\n" -#: streamutil.c:187 +#: streamutil.c:195 #, c-format msgid "%s: could not connect to server: %s" msgstr "%s: connessione al server fallita: %s" -#: streamutil.c:211 +#: streamutil.c:219 #, c-format msgid "%s: could not determine server setting for integer_datetimes\n" msgstr "%s: non è stato possibile determinare l'impostazione integer_datetimes del server\n" -#: streamutil.c:224 +#: streamutil.c:232 #, c-format msgid "%s: integer_datetimes compile flag does not match server\n" msgstr "%s: l'opzione di compilazione integer_datetimes non combacia con quella del server\n" -#: streamutil.c:371 +#: streamutil.c:379 #, c-format msgid "%s: could not create replication slot \"%s\": got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: creazione dello slot di replica \"%s\" fallita: ricevute %d righe e %d campi, attesi %d righe e %d campi\n" -#: streamutil.c:416 +#: streamutil.c:424 #, c-format msgid "%s: could not drop replication slot \"%s\": got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: eliminazione dello slot di replica \"%s\" fallita: ricevute %d righe e %d campi, attesi %d righe e %d campi\n" diff --git a/src/bin/pg_basebackup/po/ja.po b/src/bin/pg_basebackup/po/ja.po index f866a303fe..4248c053ee 100644 --- a/src/bin/pg_basebackup/po/ja.po +++ b/src/bin/pg_basebackup/po/ja.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-15 20:14+0000\n" +"POT-Creation-Date: 2017-01-30 16:49+0900\n" "PO-Revision-Date: 2013-08-18 11:17+0900\n" "Last-Translator: \n" "Language-Team: jpug-doc \n" @@ -28,51 +28,49 @@ msgstr "メモリä¸è¶³ã§ã™\n" msgid "cannot duplicate null pointer (internal error)\n" msgstr "null ãƒã‚¤ãƒ³ã‚¿ã‚’複製ã§ãã¾ã›ã‚“(内部エラー)。\n" -#: pg_basebackup.c:154 +#: pg_basebackup.c:156 #, c-format -#| msgid "directory name too long: \"%s\"\n" msgid "%s: directory name too long\n" msgstr "%s: ディレクトリã®åå‰ãŒé•·ã™ãŽã¾ã™\n" -#: pg_basebackup.c:164 +#: pg_basebackup.c:166 #, c-format msgid "%s: multiple \"=\" signs in tablespace mapping\n" msgstr "%s: 複数ã®\"=\"記å·ãŒãƒ†ãƒ¼ãƒ–ル空間マッピングã«å­˜åœ¨ã—ã¾ã™\n" -#: pg_basebackup.c:177 +#: pg_basebackup.c:179 #, c-format -#| msgid "%s: invalid output format \"%s\", must be \"plain\" or \"tar\"\n" msgid "%s: invalid tablespace mapping format \"%s\", must be \"OLDDIR=NEWDIR\"\n" msgstr "%s: 無効ãªãƒ†ãƒ¼ãƒ–ル空間マッピング形å¼\"%s\"ã§ã™ã€‚\"OLDDIR=NEWDIR\"ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: pg_basebackup.c:190 +#: pg_basebackup.c:192 #, c-format msgid "%s: old directory is not an absolute path in tablespace mapping: %s\n" msgstr "%s: å¤ã„ディレクトリã¯ãƒ†ãƒ¼ãƒ–ル空間マッピングã§ã¯çµ¶å¯¾ãƒ‘スã§ã¯ã‚りã¾ã›ã‚“: %s\n" -#: pg_basebackup.c:197 +#: pg_basebackup.c:199 #, c-format msgid "%s: new directory is not an absolute path in tablespace mapping: %s\n" msgstr "%s: æ–°ã—ã„ディレクトリã¯ãƒ†ãƒ¼ãƒ–ル空間マッピングã§ã¯çµ¶å¯¾ãƒ‘スã§ã¯ã‚りã¾ã›ã‚“: %s\n" -#: pg_basebackup.c:231 +#: pg_basebackup.c:233 #, c-format msgid "" "%s takes a base backup of a running PostgreSQL server.\n" "\n" msgstr "%sã¯å®Ÿè¡Œä¸­ã®PostgreSQLサーãƒã®ãƒ™ãƒ¼ã‚¹ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã‚’å–å¾—ã—ã¾ã™ã€‚\n" -#: pg_basebackup.c:233 pg_receivexlog.c:66 pg_recvlogical.c:69 +#: pg_basebackup.c:235 pg_receivexlog.c:66 pg_recvlogical.c:72 #, c-format msgid "Usage:\n" msgstr "使用方法:\n" -#: pg_basebackup.c:234 pg_receivexlog.c:67 pg_recvlogical.c:70 +#: pg_basebackup.c:236 pg_receivexlog.c:67 pg_recvlogical.c:73 #, c-format msgid " %s [OPTION]...\n" msgstr " %s [OPTION]...\n" -#: pg_basebackup.c:235 +#: pg_basebackup.c:237 #, c-format msgid "" "\n" @@ -81,17 +79,17 @@ msgstr "" "\n" "出力を制御ã™ã‚‹ã‚ªãƒ—ション:\n" -#: pg_basebackup.c:236 +#: pg_basebackup.c:238 #, c-format msgid " -D, --pgdata=DIRECTORY receive base backup into directory\n" msgstr " -D, --pgdata=DIRECTORY ディレクトリ内ã«ãƒ™ãƒ¼ã‚¹ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã‚’æ ¼ç´ã—ã¾ã™\n" -#: pg_basebackup.c:237 +#: pg_basebackup.c:239 #, c-format msgid " -F, --format=p|t output format (plain (default), tar)\n" msgstr " -F, --format=p|t 出力フォーマット(プレイン(デフォルト)ã¾ãŸã¯tar)\n" -#: pg_basebackup.c:238 +#: pg_basebackup.c:240 #, c-format msgid "" " -r, --max-rate=RATE maximum transfer rate to transfer data directory\n" @@ -100,7 +98,7 @@ msgstr "" " -r, --max-rate=RATE データディレクトリã¸è»¢é€ã™ã‚‹éš›ã®æœ€å¤§è»¢é€é€Ÿåº¦\n" " (kB/s ã§,ã¾ãŸã¯ 接尾辞 \"k\" ã‹\"M\" を使用)\n" -#: pg_basebackup.c:240 +#: pg_basebackup.c:242 #, c-format msgid "" " -R, --write-recovery-conf\n" @@ -109,12 +107,12 @@ msgstr "" " -R, --write-recovery-conf\n" " ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã®å¾Œã«recovery.confを書ã出ã™\n" -#: pg_basebackup.c:242 pg_receivexlog.c:74 +#: pg_basebackup.c:244 pg_receivexlog.c:74 #, c-format msgid " -S, --slot=SLOTNAME replication slot to use\n" msgstr " -S, --slot=スロットå 使用ã™ã‚‹ãƒ¬ãƒ—リケーションスロット\n" -#: pg_basebackup.c:243 +#: pg_basebackup.c:245 #, c-format msgid "" " -T, --tablespace-mapping=OLDDIR=NEWDIR\n" @@ -122,12 +120,13 @@ msgid "" msgstr "" " -T, --tablespace-mapping=å¤ã„ディレクトリ=æ–°ã—ã„ディレクトリ\n" "\n" -#: pg_basebackup.c:245 + +#: pg_basebackup.c:247 #, c-format msgid " -x, --xlog include required WAL files in backup (fetch mode)\n" msgstr " -x, --xlog å¿…è¦ãªWALファイルをãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—内ã«å«ã‚ã¾ã™ï¼ˆãƒ•ェッãƒãƒ¢ãƒ¼ãƒ‰ï¼‰\n" -#: pg_basebackup.c:246 +#: pg_basebackup.c:248 #, c-format msgid "" " -X, --xlog-method=fetch|stream\n" @@ -136,23 +135,22 @@ msgstr "" " -X, --xlog-method=fetch|stream\n" " å¿…è¦ãªWALファイルを指定ã—ãŸæ–¹æ³•ã§å«ã‚ã¾ã™\n" -#: pg_basebackup.c:248 +#: pg_basebackup.c:250 #, c-format -#| msgid " -X, --xlogdir=XLOGDIR location for the transaction log directory\n" msgid " --xlogdir=XLOGDIR location for the transaction log directory\n" msgstr " --xlogdir=XLOGDIR トランザクションログディレクトリã®å ´æ‰€ã§ã™\n" -#: pg_basebackup.c:249 +#: pg_basebackup.c:251 #, c-format msgid " -z, --gzip compress tar output\n" msgstr " -z, --gzip 出力を圧縮ã—ã¾ã™\n" -#: pg_basebackup.c:250 +#: pg_basebackup.c:252 #, c-format msgid " -Z, --compress=0-9 compress tar output with given compression level\n" msgstr " -Z, --compress=0-9 指定ã—ãŸåœ§ç¸®ãƒ¬ãƒ™ãƒ«ã§tar出力を圧縮ã—ã¾ã™\n" -#: pg_basebackup.c:251 +#: pg_basebackup.c:253 #, c-format msgid "" "\n" @@ -161,7 +159,7 @@ msgstr "" "\n" "汎用ã®ã‚ªãƒ—ション:\n" -#: pg_basebackup.c:252 +#: pg_basebackup.c:254 #, c-format msgid "" " -c, --checkpoint=fast|spread\n" @@ -170,32 +168,32 @@ msgstr "" " -c, --checkpoint=fast|spread\n" " 高速ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆå‡¦ç†ã¾ãŸã¯åˆ†æ•£ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆå‡¦ç†ã®è¨­å®š\n" -#: pg_basebackup.c:254 +#: pg_basebackup.c:256 #, c-format msgid " -l, --label=LABEL set backup label\n" msgstr " -l, --label=LABEL ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ラベルã®è¨­å®š\n" -#: pg_basebackup.c:255 +#: pg_basebackup.c:257 #, c-format msgid " -P, --progress show progress information\n" msgstr " -P, --progress 進行状æ³ã®è¡¨ç¤º\n" -#: pg_basebackup.c:256 pg_receivexlog.c:76 pg_recvlogical.c:89 +#: pg_basebackup.c:258 pg_receivexlog.c:76 pg_recvlogical.c:92 #, c-format msgid " -v, --verbose output verbose messages\n" msgstr " -v, --verbose 冗長メッセージã®å‡ºåŠ›\n" -#: pg_basebackup.c:257 pg_receivexlog.c:77 pg_recvlogical.c:90 +#: pg_basebackup.c:259 pg_receivexlog.c:77 pg_recvlogical.c:93 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã€çµ‚了ã—ã¾ã™\n" -#: pg_basebackup.c:258 pg_receivexlog.c:78 pg_recvlogical.c:91 +#: pg_basebackup.c:260 pg_receivexlog.c:78 pg_recvlogical.c:94 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help ã“ã®ãƒ˜ãƒ«ãƒ—を表示ã—ã€çµ‚了ã—ã¾ã™\n" -#: pg_basebackup.c:259 pg_receivexlog.c:79 pg_recvlogical.c:92 +#: pg_basebackup.c:261 pg_receivexlog.c:79 pg_recvlogical.c:95 #, c-format msgid "" "\n" @@ -204,22 +202,22 @@ msgstr "" "\n" "接続オプション:\n" -#: pg_basebackup.c:260 pg_receivexlog.c:80 +#: pg_basebackup.c:262 pg_receivexlog.c:80 #, c-format msgid " -d, --dbname=CONNSTR connection string\n" msgstr " -d, --dbname=CONSTR 接続文字列\n" -#: pg_basebackup.c:261 pg_receivexlog.c:81 pg_recvlogical.c:94 +#: pg_basebackup.c:263 pg_receivexlog.c:81 pg_recvlogical.c:97 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=HOSTNAME データベースサーãƒãƒ›ã‚¹ãƒˆã¾ãŸã¯ã‚½ã‚±ãƒƒãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª\n" -#: pg_basebackup.c:262 pg_receivexlog.c:82 pg_recvlogical.c:95 +#: pg_basebackup.c:264 pg_receivexlog.c:82 pg_recvlogical.c:98 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=PORT データベースサーãƒã®ãƒãƒ¼ãƒˆç•ªå·\n" -#: pg_basebackup.c:263 +#: pg_basebackup.c:265 #, c-format msgid "" " -s, --status-interval=INTERVAL\n" @@ -228,22 +226,22 @@ msgstr "" " -s, --status-interval=INTERVAL\n" " サーãƒã¸çŠ¶æ…‹ãƒ‘ã‚±ãƒƒãƒˆã‚’é€ä¿¡ã™ã‚‹é–“隔(秒å˜ä½ï¼‰\n" -#: pg_basebackup.c:265 pg_receivexlog.c:83 pg_recvlogical.c:96 +#: pg_basebackup.c:267 pg_receivexlog.c:83 pg_recvlogical.c:99 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=NAME 指定ã—ãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ¦ãƒ¼ã‚¶ã§æŽ¥ç¶š\n" -#: pg_basebackup.c:266 pg_receivexlog.c:84 pg_recvlogical.c:97 +#: pg_basebackup.c:268 pg_receivexlog.c:84 pg_recvlogical.c:100 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password パスワード入力を促ã•ãªã„\n" -#: pg_basebackup.c:267 pg_receivexlog.c:85 pg_recvlogical.c:98 +#: pg_basebackup.c:269 pg_receivexlog.c:85 pg_recvlogical.c:101 #, c-format msgid " -W, --password force password prompt (should happen automatically)\n" msgstr " -W, --password 強制的ã«ãƒ‘スワード入力を促ã™ï¼ˆè‡ªå‹•çš„ã«è¡Œã‚れるã¯ãšã§ã™ï¼‰\n" -#: pg_basebackup.c:268 pg_receivexlog.c:89 pg_recvlogical.c:99 +#: pg_basebackup.c:270 pg_receivexlog.c:89 pg_recvlogical.c:102 #, c-format msgid "" "\n" @@ -252,384 +250,375 @@ msgstr "" "\n" "ä¸å…·åˆã¯ã¾ã§å ±å‘Šãã ã•ã„\n" -#: pg_basebackup.c:311 +#: pg_basebackup.c:313 #, c-format msgid "%s: could not read from ready pipe: %s\n" msgstr "%s: 準備ã•れãŸãƒ‘イプã‹ã‚‰èª­ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_basebackup.c:319 pg_basebackup.c:422 pg_basebackup.c:1893 +#: pg_basebackup.c:321 pg_basebackup.c:424 pg_basebackup.c:1895 #: streamutil.c:293 #, c-format msgid "%s: could not parse transaction log location \"%s\"\n" msgstr "%s: トランザクションログä½ç½®\"%s\"ã‚’è§£æžã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_basebackup.c:435 +#: pg_basebackup.c:437 #, c-format msgid "%s: could not create pipe for background process: %s\n" msgstr "%s: ãƒãƒƒã‚¯ã‚°ãƒ©ãƒ³ãƒ‰ãƒ—ロセス用ã®ãƒ‘イプを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: \"%s\"\n" -#: pg_basebackup.c:460 pg_basebackup.c:515 pg_basebackup.c:1263 +#: pg_basebackup.c:462 pg_basebackup.c:517 pg_basebackup.c:1265 #, c-format msgid "%s: could not create directory \"%s\": %s\n" msgstr "%s: \"%s\"ディレクトリを作æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_basebackup.c:478 +#: pg_basebackup.c:480 #, c-format msgid "%s: could not create background process: %s\n" msgstr "%s: ãƒãƒƒã‚¯ã‚°ãƒ©ãƒ³ãƒ‰ãƒ—ロセスを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_basebackup.c:490 +#: pg_basebackup.c:492 #, c-format msgid "%s: could not create background thread: %s\n" msgstr "%s: ãƒãƒƒã‚¯ã‚°ãƒ©ãƒ³ãƒ‰ã‚¹ãƒ¬ãƒƒãƒ‰ã‚’作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_basebackup.c:534 +#: pg_basebackup.c:536 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" msgstr "%s: \"%s\"ディレクトリã¯å­˜åœ¨ã—ã¾ã™ãŒç©ºã§ã¯ã‚りã¾ã›ã‚“\n" -#: pg_basebackup.c:542 +#: pg_basebackup.c:544 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: \"%s\"ディレクトリã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_basebackup.c:604 +#: pg_basebackup.c:606 #, c-format msgid "%*s/%s kB (100%%), %d/%d tablespace %*s" msgid_plural "%*s/%s kB (100%%), %d/%d tablespaces %*s" msgstr[0] "%*s/%s kB (100%%), %d/%d テーブル空間 %*s" msgstr[1] "%*s/%s kB (100%%), %d/%d テーブル空間 %*s" -#: pg_basebackup.c:616 +#: pg_basebackup.c:618 #, c-format msgid "%*s/%s kB (%d%%), %d/%d tablespace (%s%-*.*s)" msgid_plural "%*s/%s kB (%d%%), %d/%d tablespaces (%s%-*.*s)" msgstr[0] "%*s/%s kB (%d%%), %d/%d テーブル空間 (%s%-*.*s)" msgstr[1] "%*s/%s kB (%d%%), %d/%d テーブル空間 (%s%-*.*s)" -#: pg_basebackup.c:632 +#: pg_basebackup.c:634 #, c-format msgid "%*s/%s kB (%d%%), %d/%d tablespace" msgid_plural "%*s/%s kB (%d%%), %d/%d tablespaces" msgstr[0] "%*s/%s kB (%d%%), %d/%d テーブル空間" msgstr[1] "%*s/%s kB (%d%%), %d/%d テーブル空間" -#: pg_basebackup.c:654 +#: pg_basebackup.c:656 #, c-format -#| msgid "%s: \"%s\" is not a valid encoding name\n" msgid "%s: transfer rate \"%s\" is not a valid value\n" msgstr "%s: 転é€é€Ÿåº¦\"%s\"ãŒç„¡åйãªå€¤ã§ã™\n" -#: pg_basebackup.c:661 +#: pg_basebackup.c:663 #, c-format -#| msgid "%s: invalid locale name \"%s\"\n" msgid "%s: invalid transfer rate \"%s\": %s\n" msgstr "%s: 転é€é€Ÿåº¦\"%s\"ãŒç„¡åйãªå€¤ã§ã™: %s\n" -#: pg_basebackup.c:671 +#: pg_basebackup.c:673 #, c-format -#| msgid "count must be greater than zero" msgid "%s: transfer rate must be greater than zero\n" -msgstr "%s: 転é€é€Ÿåº¦ã¯0以上ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" +msgstr "%s: 転é€é€Ÿåº¦ã¯0より大ãããªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: pg_basebackup.c:705 +#: pg_basebackup.c:707 #, c-format -#| msgid "%s: invalid argument: \"%s\"\n" msgid "%s: invalid --max-rate unit: \"%s\"\n" -msgstr "%s: 無効㪠--max-rateユニットã§ã™: \"%s\"\n" +msgstr "%s: 無効㪠--max-rateå˜ä½ã§ã™: \"%s\"\n" -#: pg_basebackup.c:714 +#: pg_basebackup.c:716 #, c-format -#| msgid "argument of lo_write exceeds integer range\n" msgid "%s: transfer rate \"%s\" exceeds integer range\n" msgstr "%s: 転é€é€Ÿåº¦\"%s\"ãŒintegerã®ç¯„囲を超ãˆã¦ã„ã¾ã™\n" -#: pg_basebackup.c:726 +#: pg_basebackup.c:728 #, c-format -#| msgid "result is out of range" msgid "%s: transfer rate \"%s\" is out of range\n" msgstr "%s: 転é€é€Ÿåº¦\"%s\"ãŒç¯„囲外ã§ã™\n" -#: pg_basebackup.c:750 +#: pg_basebackup.c:752 #, c-format msgid "%s: could not write to compressed file \"%s\": %s\n" msgstr "%s: \"%s\"åœ§ç¸®ãƒ•ã‚¡ã‚¤ãƒ«ã«æ›¸ã出ã™ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_basebackup.c:760 pg_basebackup.c:1357 pg_basebackup.c:1582 +#: pg_basebackup.c:762 pg_basebackup.c:1359 pg_basebackup.c:1584 #, c-format msgid "%s: could not write to file \"%s\": %s\n" msgstr "%s: \"%s\"ãƒ•ã‚¡ã‚¤ãƒ«ã«æ›¸ã出ã™ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_basebackup.c:815 pg_basebackup.c:836 pg_basebackup.c:864 +#: pg_basebackup.c:817 pg_basebackup.c:838 pg_basebackup.c:866 #, c-format msgid "%s: could not set compression level %d: %s\n" msgstr "%s: 圧縮レベルを%dã«è¨­å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_basebackup.c:885 +#: pg_basebackup.c:887 #, c-format msgid "%s: could not create compressed file \"%s\": %s\n" msgstr "%s: \"%s\"圧縮ファイルを作æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_basebackup.c:896 pg_basebackup.c:1317 pg_basebackup.c:1575 +#: pg_basebackup.c:898 pg_basebackup.c:1319 pg_basebackup.c:1577 #, c-format msgid "%s: could not create file \"%s\": %s\n" msgstr "%s: \"%s\"ファイルを作æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_basebackup.c:908 pg_basebackup.c:1172 +#: pg_basebackup.c:910 pg_basebackup.c:1174 #, c-format msgid "%s: could not get COPY data stream: %s" msgstr "%s: COPYデータストリームを入手ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: pg_basebackup.c:965 +#: pg_basebackup.c:967 #, c-format msgid "%s: could not close compressed file \"%s\": %s\n" msgstr "%s: \"%s\"圧縮ファイルを閉ã˜ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_basebackup.c:978 pg_recvlogical.c:577 receivelog.c:203 receivelog.c:351 -#: receivelog.c:740 +#: pg_basebackup.c:980 pg_recvlogical.c:580 receivelog.c:206 receivelog.c:354 +#: receivelog.c:743 #, c-format msgid "%s: could not close file \"%s\": %s\n" msgstr "%s: ファイル\"%s\"ã‚’é–‰ã˜ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_basebackup.c:989 pg_basebackup.c:1201 pg_recvlogical.c:443 -#: receivelog.c:1021 +#: pg_basebackup.c:991 pg_basebackup.c:1203 pg_recvlogical.c:446 +#: receivelog.c:1024 #, c-format msgid "%s: could not read COPY data: %s" msgstr "%s: COPYデータを読ã¿å–ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: pg_basebackup.c:1215 +#: pg_basebackup.c:1217 #, c-format msgid "%s: invalid tar block header size: %d\n" msgstr "%s: 無効ãªtarブロックヘッダサイズ: %d\n" -#: pg_basebackup.c:1271 +#: pg_basebackup.c:1273 #, c-format msgid "%s: could not set permissions on directory \"%s\": %s\n" msgstr "%s: \"%s\"ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®æ¨©é™ã‚’設定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_basebackup.c:1295 +#: pg_basebackup.c:1297 #, c-format msgid "%s: could not create symbolic link from \"%s\" to \"%s\": %s\n" msgstr "%s: \"%s\"ã‹ã‚‰\"%s\"ã¸ã®ã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒªãƒ³ã‚¯ã‚’作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_basebackup.c:1304 +#: pg_basebackup.c:1306 #, c-format msgid "%s: unrecognized link indicator \"%c\"\n" msgstr "%s: 未知ã®ãƒªãƒ³ã‚¯æŒ‡ç¤ºå­\"%c\"\n" -#: pg_basebackup.c:1324 +#: pg_basebackup.c:1326 #, c-format msgid "%s: could not set permissions on file \"%s\": %s\n" msgstr "%s: \"%s\"ãƒ•ã‚¡ã‚¤ãƒ«ã®æ¨©é™ã‚’設定ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_basebackup.c:1383 +#: pg_basebackup.c:1385 #, c-format msgid "%s: COPY stream ended before last file was finished\n" msgstr "%s: 最後ã®ãƒ•ァイルãŒçµ‚ã‚ã‚‹å‰ã«COPYストリームãŒå®Œäº†ã—ã¾ã—ãŸ\n" -#: pg_basebackup.c:1469 pg_basebackup.c:1489 pg_basebackup.c:1496 -#: pg_basebackup.c:1550 +#: pg_basebackup.c:1471 pg_basebackup.c:1491 pg_basebackup.c:1498 +#: pg_basebackup.c:1552 #, c-format msgid "%s: out of memory\n" msgstr "%s: メモリä¸è¶³ã§ã™\n" -#: pg_basebackup.c:1627 +#: pg_basebackup.c:1629 #, c-format msgid "%s: incompatible server version %s\n" msgstr "%s: äº’æ›æ€§ãŒãªã„サーãƒãƒãƒ¼ã‚¸ãƒ§ãƒ³\"%s\"\n" -#: pg_basebackup.c:1674 pg_recvlogical.c:261 receivelog.c:538 receivelog.c:589 -#: receivelog.c:629 streamutil.c:263 streamutil.c:367 streamutil.c:413 +#: pg_basebackup.c:1676 pg_recvlogical.c:264 receivelog.c:541 receivelog.c:592 +#: receivelog.c:632 streamutil.c:263 streamutil.c:367 streamutil.c:413 #, c-format msgid "%s: could not send replication command \"%s\": %s" msgstr "%s: レプリケーションコマンド\"%s\"ã‚’é€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: pg_basebackup.c:1685 +#: pg_basebackup.c:1687 #, c-format msgid "%s: could not initiate base backup: %s" msgstr "%s: ベースãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã‚’åˆæœŸåŒ–ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: pg_basebackup.c:1692 +#: pg_basebackup.c:1694 #, c-format msgid "%s: server returned unexpected response to BASE_BACKUP command; got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: サーãƒã¯BASE_BACKUPã‚³ãƒžãƒ³ãƒ‰ã«æƒ³å®šå¤–ã®å¿œç­”ã‚’è¿”ã—ã¾ã—ãŸ: %d行ã¨%dフィールドを入手ã—ã¾ã—ãŸã€‚想定ã§ã¯%d行ã¨%dフィールドã§ã—ãŸ\n" -#: pg_basebackup.c:1712 +#: pg_basebackup.c:1714 #, c-format msgid "transaction log start point: %s on timeline %u\n" msgstr "トランザクションログã®é–‹å§‹ãƒã‚¤ãƒ³ãƒˆ: タイムライン%2$u上ã®%1$s\n" -#: pg_basebackup.c:1721 +#: pg_basebackup.c:1723 #, c-format msgid "%s: could not get backup header: %s" msgstr "%s: ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ヘッダを入手ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: pg_basebackup.c:1727 +#: pg_basebackup.c:1729 #, c-format msgid "%s: no data returned from server\n" msgstr "%s: サーãƒã‹ã‚‰è¿”ã•れるデータãŒã‚りã¾ã›ã‚“\n" -#: pg_basebackup.c:1759 +#: pg_basebackup.c:1761 #, c-format msgid "%s: can only write single tablespace to stdout, database has %d\n" msgstr "%s: データベースã«ã¯%dã‚りã¾ã—ãŸãŒã€ï¼‘ã¤ã®ãƒ†ãƒ¼ãƒ–ル空間ã®ã¿æ¨™æº–å‡ºåŠ›ã«æ›¸ã出ã™ã“ã¨ãŒã§ãã¾ã™\n" -#: pg_basebackup.c:1771 +#: pg_basebackup.c:1773 #, c-format msgid "%s: starting background WAL receiver\n" msgstr "%s: ãƒãƒƒã‚¯ã‚°ãƒ©ãƒ³ãƒ‰WALå—信処ç†ã‚’é–‹å§‹ã—ã¾ã™\n" -#: pg_basebackup.c:1802 +#: pg_basebackup.c:1804 #, c-format msgid "%s: could not get transaction log end position from server: %s" msgstr "%s: サーãƒã‹ã‚‰ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãƒ­ã‚°ã®çµ‚了ä½ç½®ã‚’入手ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: pg_basebackup.c:1809 +#: pg_basebackup.c:1811 #, c-format msgid "%s: no transaction log end position returned from server\n" msgstr "%s: サーãƒã‹ã‚‰ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãƒ­ã‚°ã®çµ‚了ä½ç½®ãŒè¿”ã•れã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_basebackup.c:1821 +#: pg_basebackup.c:1823 #, c-format msgid "%s: final receive failed: %s" msgstr "%s: 最終å—ä¿¡ã«å¤±æ•—ã—ã¾ã—ãŸ: %s" -#: pg_basebackup.c:1845 +#: pg_basebackup.c:1847 #, c-format msgid "%s: waiting for background process to finish streaming ...\n" msgstr "%s: ストリーミング処ç†ãŒçµ‚ã‚ã‚‹ã¾ã§ãƒãƒƒã‚¯ã‚°ãƒ©ãƒ³ãƒ‰ãƒ—ロセスを待機ã—ã¾ã™ ...\n" -#: pg_basebackup.c:1851 +#: pg_basebackup.c:1853 #, c-format msgid "%s: could not send command to background pipe: %s\n" msgstr "%s: ãƒãƒƒã‚¯ã‚°ãƒ©ãƒ³ãƒ‰ãƒ‘イプã«ã‚³ãƒžãƒ³ãƒ‰ã‚’é€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_basebackup.c:1860 +#: pg_basebackup.c:1862 #, c-format msgid "%s: could not wait for child process: %s\n" msgstr "%s: å­ãƒ—ロセスを待機ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_basebackup.c:1866 +#: pg_basebackup.c:1868 #, c-format msgid "%s: child %d died, expected %d\n" msgstr "%s: å­ãƒ—ロセス%d 終了ã€ãã®æœŸå¾…値ã¯%dã§ã™\n" -#: pg_basebackup.c:1872 +#: pg_basebackup.c:1874 #, c-format msgid "%s: child process did not exit normally\n" msgstr "%s: å­ãƒ—ãƒ­ã‚»ã‚¹ãŒæ­£å¸¸ã«çµ‚ã‚りã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_basebackup.c:1878 +#: pg_basebackup.c:1880 #, c-format msgid "%s: child process exited with error %d\n" msgstr "%s: å­ãƒ—ロセスãŒçµ‚了コード%dã§çµ‚了ã—ã¾ã—ãŸ\n" -#: pg_basebackup.c:1905 +#: pg_basebackup.c:1907 #, c-format msgid "%s: could not wait for child thread: %s\n" msgstr "%s: å­ã‚¹ãƒ¬ãƒƒãƒ‰ã‚’待機ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_basebackup.c:1912 +#: pg_basebackup.c:1914 #, c-format msgid "%s: could not get child thread exit status: %s\n" msgstr "%s: å­ã‚¹ãƒ¬ãƒƒãƒ‰ã®çµ‚了ステータスを入手ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_basebackup.c:1918 +#: pg_basebackup.c:1920 #, c-format msgid "%s: child thread exited with error %u\n" msgstr "%s: å­ã‚¹ãƒ¬ãƒƒãƒ‰ãŒã‚¨ãƒ©ãƒ¼%uã§çµ‚了ã—ã¾ã—ãŸ\n" -#: pg_basebackup.c:2008 +#: pg_basebackup.c:2010 #, c-format msgid "%s: invalid output format \"%s\", must be \"plain\" or \"tar\"\n" msgstr "%s: \"%s\"出力フォーマットã¯ç„¡åйã§ã™ã€‚\"plain\"ã‹\"tar\"ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: pg_basebackup.c:2029 pg_basebackup.c:2041 +#: pg_basebackup.c:2031 pg_basebackup.c:2043 #, c-format msgid "%s: cannot specify both --xlog and --xlog-method\n" msgstr "%s: --xlogã¨--xlog-methodã¯åŒæ™‚ã«æŒ‡å®šã§ãã¾ã›ã‚“\n" -#: pg_basebackup.c:2056 +#: pg_basebackup.c:2058 #, c-format msgid "%s: invalid xlog-method option \"%s\", must be \"fetch\" or \"stream\"\n" msgstr "%s: \"%s\" xlogæ–¹å¼ã¯ç„¡åйã§ã™ã€‚\"fetch\"ã€\"stream\"ã®ã„ãšã‚Œã‹ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: pg_basebackup.c:2078 +#: pg_basebackup.c:2080 #, c-format msgid "%s: invalid compression level \"%s\"\n" msgstr "%s: \"%s\"圧縮レベルã¯ç„¡åйã§ã™\n" -#: pg_basebackup.c:2090 +#: pg_basebackup.c:2092 #, c-format msgid "%s: invalid checkpoint argument \"%s\", must be \"fast\" or \"spread\"\n" msgstr "%s: \"%s\"ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆå¼•æ•°ã¯ç„¡åйã§ã™ã€‚\"fast\"ã¾ãŸã¯\"spreadã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: pg_basebackup.c:2117 pg_receivexlog.c:445 pg_recvlogical.c:760 +#: pg_basebackup.c:2119 pg_receivexlog.c:445 pg_recvlogical.c:763 #, c-format msgid "%s: invalid status interval \"%s\"\n" msgstr "%s: \"%s\" 状態間隔ã¯ç„¡åйã§ã™\n" -#: pg_basebackup.c:2133 pg_basebackup.c:2147 pg_basebackup.c:2158 -#: pg_basebackup.c:2171 pg_basebackup.c:2181 pg_basebackup.c:2191 -#: pg_basebackup.c:2203 pg_basebackup.c:2214 pg_receivexlog.c:477 +#: pg_basebackup.c:2135 pg_basebackup.c:2149 pg_basebackup.c:2160 +#: pg_basebackup.c:2173 pg_basebackup.c:2183 pg_basebackup.c:2193 +#: pg_basebackup.c:2205 pg_basebackup.c:2216 pg_receivexlog.c:477 #: pg_receivexlog.c:491 pg_receivexlog.c:499 pg_receivexlog.c:509 -#: pg_receivexlog.c:520 pg_recvlogical.c:787 pg_recvlogical.c:801 -#: pg_recvlogical.c:812 pg_recvlogical.c:820 pg_recvlogical.c:828 -#: pg_recvlogical.c:836 pg_recvlogical.c:844 pg_recvlogical.c:852 +#: pg_receivexlog.c:520 pg_recvlogical.c:790 pg_recvlogical.c:804 +#: pg_recvlogical.c:815 pg_recvlogical.c:823 pg_recvlogical.c:831 +#: pg_recvlogical.c:839 pg_recvlogical.c:847 pg_recvlogical.c:855 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "詳細ã«ã¤ã„ã¦ã¯\"%s --help\"を実行ã—ã¦ãã ã•ã„。\n" -#: pg_basebackup.c:2145 pg_receivexlog.c:489 pg_recvlogical.c:799 +#: pg_basebackup.c:2147 pg_receivexlog.c:489 pg_recvlogical.c:802 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: コマンドライン引数ãŒå¤šéŽãŽã¾ã™(最åˆã¯\"%s\"ã§ã™)\n" -#: pg_basebackup.c:2157 pg_receivexlog.c:519 +#: pg_basebackup.c:2159 pg_receivexlog.c:519 #, c-format msgid "%s: no target directory specified\n" msgstr "%s: å¯¾è±¡ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“\n" -#: pg_basebackup.c:2169 +#: pg_basebackup.c:2171 #, c-format msgid "%s: only tar mode backups can be compressed\n" msgstr "%s: tarモードã®ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã®ã¿åœ§ç¸®ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™\n" -#: pg_basebackup.c:2179 +#: pg_basebackup.c:2181 #, c-format msgid "%s: WAL streaming can only be used in plain mode\n" msgstr "%s: WALストリーミングã¯ãƒ—レインモードã§ã®ã¿ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚\n" -#: pg_basebackup.c:2189 +#: pg_basebackup.c:2191 #, c-format -#| msgid "%s: WAL streaming can only be used in plain mode\n" msgid "%s: replication slots can only be used with WAL streaming\n" msgstr "%s: WAL ストリーミングã¯plainモードã§ã®ã¿ä½¿ç”¨ã§ãã¾ã™\n" -#: pg_basebackup.c:2201 +#: pg_basebackup.c:2203 #, c-format -#| msgid "%s: transaction log directory location must be an absolute path\n" msgid "%s: transaction log directory location can only be specified in plain mode\n" msgstr "%s: ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãƒ­ã‚°ã®æ ¼ç´ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®å ´æ‰€ã¯plainモードã§ã®ã¿æŒ‡å®šã§ãã¾ã™\n" -#: pg_basebackup.c:2212 +#: pg_basebackup.c:2214 #, c-format msgid "%s: transaction log directory location must be an absolute path\n" msgstr "%s: トランザクションログã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ä½ç½®ã¯ã€çµ¶å¯¾ãƒ‘スã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: pg_basebackup.c:2224 +#: pg_basebackup.c:2226 #, c-format msgid "%s: this build does not support compression\n" msgstr "%s: ã“ã®æ§‹ç¯‰ã§ã¯åœ§ç¸®ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“\n" -#: pg_basebackup.c:2251 +#: pg_basebackup.c:2253 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" msgstr "%s: シンボリックリンク\"%s\"を作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_basebackup.c:2256 +#: pg_basebackup.c:2258 #, c-format -#| msgid "%s: symlinks are not supported on this platform" msgid "%s: symlinks are not supported on this platform\n" msgstr "%s: シンボリックリンクã¯ã“ã®ãƒ—ラットフォームã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“\n" @@ -642,7 +631,7 @@ msgstr "" "%sã¯PostgreSQLã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãƒ­ã‚°ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°ã‚’å—ä¿¡ã—ã¾ã™ã€‚\n" "\n" -#: pg_receivexlog.c:68 pg_recvlogical.c:75 +#: pg_receivexlog.c:68 pg_recvlogical.c:78 #, c-format msgid "" "\n" @@ -656,21 +645,18 @@ msgstr "" msgid " -D, --directory=DIR receive transaction log files into this directory\n" msgstr " -D, --directory=DIR å—ä¿¡ã—ãŸãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãƒ­ã‚°ã®æ ¼ç´ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª\n" -#: pg_receivexlog.c:70 pg_recvlogical.c:79 +#: pg_receivexlog.c:70 pg_recvlogical.c:82 #, c-format msgid " --if-not-exists do not error if slot already exists when creating a slot\n" -msgstr "   --if-not-exists スロットを作æˆã—ãŸã¨ãã«ã‚¹ãƒ­ãƒƒãƒˆãŒæ—¢ã«å­˜åœ¨ã—ã¦ã„ã‚‹ãªã‚‰ã‚¨ãƒ©ãƒ¼ã¯ãªã„\n" +msgstr "   --if-not-exists スロットを作æˆã—ãŸã¨ãã«ã‚¹ãƒ­ãƒƒãƒˆãŒæ—¢ã«å­˜åœ¨ã—ã¦ã„ã‚‹ãªã‚‰ã‚¨ãƒ©ãƒ¼ã¨ã—ãªã„\n" -#: pg_receivexlog.c:71 pg_recvlogical.c:81 +#: pg_receivexlog.c:71 pg_recvlogical.c:84 #, c-format msgid " -n, --no-loop do not loop on connection lost\n" msgstr " -n, --no-loop 接続ãŒãªããªã£ãŸæ™‚ã«ç¹°ã‚Šè¿”ã•ãªã„\n" -#: pg_receivexlog.c:72 pg_recvlogical.c:86 +#: pg_receivexlog.c:72 pg_recvlogical.c:89 #, c-format -#| msgid "" -#| " -s, --status-interval=INTERVAL\n" -#| " time between status packets sent to server (in seconds)\n" msgid "" " -s, --status-interval=SECS\n" " time between status packets sent to server (default: %d)\n" @@ -685,9 +671,6 @@ msgstr " --synchronous ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãƒ­ã‚°ã¯æ›¸ã込㿠#: pg_receivexlog.c:86 #, c-format -#| msgid "" -#| "\n" -#| "Options:\n" msgid "" "\n" "Optional actions:\n" @@ -695,15 +678,15 @@ msgstr "" "\n" "追加æ“作:\n" -#: pg_receivexlog.c:87 pg_recvlogical.c:72 +#: pg_receivexlog.c:87 pg_recvlogical.c:75 #, c-format msgid " --create-slot create a new replication slot (for the slot's name see --slot)\n" -msgstr " --create-slot æ–°ã—ã„レプリケーションスロットを作æˆã™ã‚‹(スロットåを見る --slot)\n" +msgstr " --create-slot æ–°ã—ã„レプリケーションスロットを作æˆã™ã‚‹(スロットåã¯--slotã‚’å‚ç…§)\n" -#: pg_receivexlog.c:88 pg_recvlogical.c:73 +#: pg_receivexlog.c:88 pg_recvlogical.c:76 #, c-format msgid " --drop-slot drop the replication slot (for the slot's name see --slot)\n" -msgstr " --drop-slotp レプリケーションスロットを削除ã™ã‚‹ (スロットåを見るã«ã¯ --slot)\n" +msgstr " --drop-slotp レプリケーションスロットを削除ã™ã‚‹ (スロットåã¯--slotã‚’å‚ç…§)\n" #: pg_receivexlog.c:100 #, c-format @@ -727,11 +710,10 @@ msgstr "%s: ディレクトリ\"%s\"をオープンã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\ #: pg_receivexlog.c:160 #, c-format -#| msgid "%s: could not open directory \"%s\": %s\n" msgid "%s: could not close directory \"%s\": %s\n" msgstr "%s: ディレクトリ \"%s\" をクローズã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_receivexlog.c:218 pg_recvlogical.c:343 +#: pg_receivexlog.c:218 pg_recvlogical.c:346 #, c-format msgid "%s: could not stat file \"%s\": %s\n" msgstr "%s: \"%s\"ファイルã®çŠ¶æ…‹ã‚’ç¢ºèªã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" @@ -751,7 +733,7 @@ msgstr "%s: ディレクトリ\"%s\"を読ã¿å–ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ msgid "%s: starting log streaming at %X/%X (timeline %u)\n" msgstr "%s: %X/%X (タイムライン %u)ã§ãƒ­ã‚°ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°ã‚’å§‹ã‚ã¾ã™\n" -#: pg_receivexlog.c:426 pg_recvlogical.c:707 +#: pg_receivexlog.c:426 pg_recvlogical.c:710 #, c-format msgid "%s: invalid port number \"%s\"\n" msgstr "%s: 無効ãªãƒãƒ¼ãƒˆç•ªå·ã§ã™: \"%s\"\n" @@ -772,30 +754,28 @@ msgstr "%s: %sオプションã¯--slot を使用ã—ã¦ã‚¹ãƒ­ãƒƒãƒˆã‚’指定㙠msgid "%s: replication connection using slot \"%s\" is unexpectedly database specific\n" msgstr "%s: スロット \"%s\" を使用ã™ã‚‹ãƒ¬ãƒ—リケーション接続ã¯äºˆæƒ³å¤–ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ç‰¹å®šã§ã™\n" -#: pg_receivexlog.c:574 pg_recvlogical.c:892 +#: pg_receivexlog.c:574 pg_recvlogical.c:895 #, c-format -#| msgid "%s: could not send replication command \"%s\": %s" msgid "%s: dropping replication slot \"%s\"\n" msgstr "%s: レプリケーションスロット\"%s\"を削除ã—ã¦ã„ã¾ã™\n" -#: pg_receivexlog.c:587 pg_recvlogical.c:904 +#: pg_receivexlog.c:587 pg_recvlogical.c:907 #, c-format -#| msgid "%s: unexpected termination of replication stream: %s" msgid "%s: creating replication slot \"%s\"\n" msgstr "%s: レプリケーションスロット\"%s\"を作æˆã—ã¦ã„ã¾ã™\n" -#: pg_receivexlog.c:614 pg_recvlogical.c:930 +#: pg_receivexlog.c:614 pg_recvlogical.c:933 #, c-format msgid "%s: disconnected\n" msgstr "%s: 切断ã—ã¾ã—ãŸ\n" #. translator: check source for value for %d -#: pg_receivexlog.c:621 pg_recvlogical.c:937 +#: pg_receivexlog.c:621 pg_recvlogical.c:940 #, c-format msgid "%s: disconnected; waiting %d seconds to try again\n" msgstr "%s: 切断ã—ã¾ã—ãŸã€‚%d秒待機ã—å†è©¦è¡Œã—ã¾ã™\n" -#: pg_recvlogical.c:67 +#: pg_recvlogical.c:70 #, c-format msgid "" "%s controls PostgreSQL logical decoding streams.\n" @@ -804,7 +784,7 @@ msgstr "" "%s ã¯PostgreSQLロジカルデコーディングストリームを制御ã—ã¾ã™ã€‚\n" "\n" -#: pg_recvlogical.c:71 +#: pg_recvlogical.c:74 #, c-format msgid "" "\n" @@ -813,22 +793,18 @@ msgstr "" "\n" ":実行ã•れるã¹ãæ“作\n" -#: pg_recvlogical.c:74 +#: pg_recvlogical.c:77 #, c-format msgid " --start start streaming in a replication slot (for the slot's name see --slot)\n" -msgstr " --start レプリケーションスロットã§ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°ã‚’é–‹å§‹ã™ã‚‹ (スロットåを見るã«ã¯ --slot)\n" +msgstr " --start レプリケーションスロットã§ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°ã‚’é–‹å§‹ã™ã‚‹ (スロットåã¯--slotã‚’å‚ç…§)\n" -#: pg_recvlogical.c:76 +#: pg_recvlogical.c:79 #, c-format -#| msgid " -f, --file=FILENAME output file or directory name\n" msgid " -f, --file=FILE receive log into this file, - for stdout\n" -msgstr " -f, --file=FILE ã“ã®ãƒ•ァイルã«ãƒ­ã‚°ã‚’å—ã‘å–りã¾ã™ã€‚ stdout ã«å‡º>力ã™ã‚‹ã«ã¯ - を使ã„ã¾ã™\n" +msgstr " -f, --file=FILE ã“ã®ãƒ•ァイルã«ãƒ­ã‚°ã‚’å—ã‘å–りã¾ã™ã€‚ stdout ã«å‡ºåŠ›ã™ã‚‹ã«ã¯ - を使ã„ã¾ã™\n" -#: pg_recvlogical.c:77 +#: pg_recvlogical.c:80 #, c-format -#| msgid "" -#| " -s, --status-interval=INTERVAL\n" -#| " time between status packets sent to server (in seconds)\n" msgid "" " -F --fsync-interval=SECS\n" " time between fsyncs to the output file (default: %d)\n" @@ -836,12 +812,12 @@ msgstr "" " -F --fsync-interval=SECS\n" " 出力ファイルã¸ã®fsyncs 時間間隔(デフォルト: %d)\n" -#: pg_recvlogical.c:80 +#: pg_recvlogical.c:83 #, c-format msgid " -I, --startpos=LSN where in an existing slot should the streaming start\n" msgstr " -I, --startpos=LSN 既存スロットã®ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°ãŒå§‹ã¾ã‚‹ã¹ã場所\n" -#: pg_recvlogical.c:82 +#: pg_recvlogical.c:85 #, c-format msgid "" " -o, --option=NAME[=VALUE]\n" @@ -849,299 +825,282 @@ msgid "" " output plugin\n" msgstr "" " -o, --option=NAME[=VALUE]\n" -" オプションã®å€¤VALUEã¨å…±ã«ã‚ªãƒ—ションåNAMEを出力プラグインã«\n" -" 渡ã—ã¦ãã ã•ã„\n" +" オプションã®å€¤VALUEã¨å…±ã«ã‚ªãƒ—ションåNAMEã‚’\n" +" å‡ºåŠ›ãƒ—ãƒ©ã‚°ã‚¤ãƒ³ã«æ¸¡ã™\n" -#: pg_recvlogical.c:85 +#: pg_recvlogical.c:88 #, c-format msgid " -P, --plugin=PLUGIN use output plugin PLUGIN (default: %s)\n" -msgstr " -P, --plugin=PLUGIN 出力プラグインPLUGINを使用ã—ã¦ãã ã•ã„(デフォルト: %s)\n" +msgstr " -P, --plugin=PLUGIN 出力プラグインPLUGINを使用ã™ã‚‹(デフォルト: %s)\n" -#: pg_recvlogical.c:88 +#: pg_recvlogical.c:91 #, c-format msgid " -S, --slot=SLOTNAME name of the logical replication slot\n" msgstr " -S, --slot=SLOTå ロジカルレプリケーションスロットå\n" -#: pg_recvlogical.c:93 +#: pg_recvlogical.c:96 #, c-format -#| msgid " -d, --dbname=DBNAME database to cluster\n" msgid " -d, --dbname=DBNAME database to connect to\n" msgstr " -d, --dbname=ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å æŽ¥ç¶šã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹\n" -#: pg_recvlogical.c:126 +#: pg_recvlogical.c:129 #, c-format msgid "%s: confirming write up to %X/%X, flush to %X/%X (slot %s)\n" msgstr "%s: %X/%Xã¸ã®æ›¸ã上ã’ã¨, %X/%X (スロット %sã¸ã®ãƒ•ラッシュを確èªã—ã¾ã™\n" -#: pg_recvlogical.c:151 receivelog.c:404 +#: pg_recvlogical.c:154 receivelog.c:407 #, c-format msgid "%s: could not send feedback packet: %s" msgstr "%s: フィードãƒãƒƒã‚¯ãƒ‘ケットをé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: pg_recvlogical.c:190 +#: pg_recvlogical.c:193 #, c-format -#| msgid "%s: could not fsync file \"%s\": %s\n" msgid "%s: could not fsync log file \"%s\": %s\n" msgstr "%s: ログファイル\"%s\"ã‚’fsyncã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_recvlogical.c:229 +#: pg_recvlogical.c:232 #, c-format -#| msgid "%s: starting log streaming at %X/%X (timeline %u)\n" msgid "%s: starting log streaming at %X/%X (slot %s)\n" msgstr "%s: %X/%X (スロット %s)ã§ãƒ­ã‚°ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°ã‚’å§‹ã‚ã¾ã™\n" -#: pg_recvlogical.c:271 +#: pg_recvlogical.c:274 #, c-format -#| msgid "%s: streaming header too small: %d\n" msgid "%s: streaming initiated\n" msgstr "%s: ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°ã‚’åˆæœŸåŒ–ã—ã¾ã—ãŸ\n" -#: pg_recvlogical.c:336 +#: pg_recvlogical.c:339 #, c-format msgid "%s: could not open log file \"%s\": %s\n" msgstr "%s: ログファイル \"%s\" をオープンã§ãã¾ã›ã‚“: %s\n" -#: pg_recvlogical.c:366 receivelog.c:935 +#: pg_recvlogical.c:369 receivelog.c:938 #, c-format -#| msgid "%s: invalid argument: %s\n" msgid "%s: invalid socket: %s" msgstr "%s: 無効ãªã‚½ã‚±ãƒƒãƒˆã§ã™: %s" -#: pg_recvlogical.c:420 receivelog.c:957 +#: pg_recvlogical.c:423 receivelog.c:960 #, c-format msgid "%s: select() failed: %s\n" msgstr "%s: select()ãŒå¤±æ•—ã—ã¾ã—ãŸ: %s\n" -#: pg_recvlogical.c:429 receivelog.c:1007 +#: pg_recvlogical.c:432 receivelog.c:1010 #, c-format msgid "%s: could not receive data from WAL stream: %s" msgstr "%s: WALストリームã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’å—ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: pg_recvlogical.c:470 pg_recvlogical.c:509 receivelog.c:1052 -#: receivelog.c:1119 +#: pg_recvlogical.c:473 pg_recvlogical.c:512 receivelog.c:1055 +#: receivelog.c:1122 #, c-format msgid "%s: streaming header too small: %d\n" msgstr "%s: ストリーミングヘッダãŒå°ã•éŽãŽã¾ã™: %d\n" -#: pg_recvlogical.c:492 receivelog.c:900 +#: pg_recvlogical.c:495 receivelog.c:903 #, c-format msgid "%s: unrecognized streaming header: \"%c\"\n" msgstr "%s: ストリーミングヘッダ\"%c\"ã¯ä¸æ˜Žã§ã™\n" -#: pg_recvlogical.c:538 pg_recvlogical.c:552 +#: pg_recvlogical.c:541 pg_recvlogical.c:555 #, c-format -#| msgid "%s: could not write %u bytes to WAL file \"%s\": %s\n" msgid "%s: could not write %u bytes to log file \"%s\": %s\n" msgstr "%s: %uãƒã‚¤ãƒˆã‚’ログファイル\"%s\"ã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_recvlogical.c:563 receivelog.c:693 receivelog.c:731 +#: pg_recvlogical.c:566 receivelog.c:696 receivelog.c:734 #, c-format msgid "%s: unexpected termination of replication stream: %s" msgstr "%s: ãƒ¬ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚¹ãƒˆãƒªãƒ¼ãƒ ã®æƒ³å®šå¤–ã®çµ‚了: %s" -#: pg_recvlogical.c:686 +#: pg_recvlogical.c:689 #, c-format -#| msgid "%s: invalid status interval \"%s\"\n" msgid "%s: invalid fsync interval \"%s\"\n" msgstr "%s: 無効ãªfsyncã®é–“éš”\"%s\"ã§ã™\n" -#: pg_recvlogical.c:727 +#: pg_recvlogical.c:730 #, c-format -#| msgid "%s: could not parse version \"%s\"\n" msgid "%s: could not parse start position \"%s\"\n" msgstr "%s: é–‹å§‹ä½ç½®\"%s\"ã‚’è§£æžã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_recvlogical.c:811 +#: pg_recvlogical.c:814 #, c-format -#| msgid "%s: no operation specified\n" msgid "%s: no slot specified\n" msgstr "%s: ã‚¹ãƒ­ãƒƒãƒˆãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“\n" -#: pg_recvlogical.c:819 +#: pg_recvlogical.c:822 #, c-format -#| msgid "%s: no target directory specified\n" msgid "%s: no target file specified\n" msgstr "%s: ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãƒ•ã‚¡ã‚¤ãƒ«ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“\n" -#: pg_recvlogical.c:827 +#: pg_recvlogical.c:830 #, c-format -#| msgid "%s: no data directory specified\n" msgid "%s: no database specified\n" msgstr "%s: ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“\n" -#: pg_recvlogical.c:835 +#: pg_recvlogical.c:838 #, c-format -#| msgid "%s: no operation specified\n" msgid "%s: at least one action needs to be specified\n" msgstr "%s: å°‘ãªãã¨ã‚‚一ã¤ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’指定ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™\n" -#: pg_recvlogical.c:843 +#: pg_recvlogical.c:846 #, c-format msgid "%s: cannot use --create-slot or --start together with --drop-slot\n" msgstr "%s: --create-slotã‚„--startã¯--drop-slotã¨å…±ã«ä½¿ç”¨ã§ãã¾ã›ã‚“\n" -#: pg_recvlogical.c:851 +#: pg_recvlogical.c:854 #, c-format msgid "%s: cannot use --create-slot or --drop-slot together with --startpos\n" msgstr "%s: --create-slotã‚„--drop-slotã¯--startposã¨å…±ã«ä½¿ç”¨ã§ãã¾ã›ã‚“\n" -#: pg_recvlogical.c:882 +#: pg_recvlogical.c:885 #, c-format -#| msgid "could not establish SSL connection: %s\n" msgid "%s: could not establish database-specific replication connection\n" msgstr "%s: データベース指定ã®ãƒ¬ãƒ—リケーション接続ãŒç¢ºç«‹ã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: receivelog.c:66 +#: receivelog.c:69 #, c-format -#| msgid "could not create archive status file \"%s\": %m" msgid "%s: could not create archive status file \"%s\": %s\n" msgstr "%s: アーカイブ状態ファイル\"%s\"ã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸ: %s\n" -#: receivelog.c:73 receivelog.c:196 receivelog.c:344 receivelog.c:830 -#: receivelog.c:1073 +#: receivelog.c:76 receivelog.c:199 receivelog.c:347 receivelog.c:833 +#: receivelog.c:1076 #, c-format msgid "%s: could not fsync file \"%s\": %s\n" msgstr "%s: ファイル\"%s\"ã‚’fsyncã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: receivelog.c:111 +#: receivelog.c:114 #, c-format msgid "%s: could not open transaction log file \"%s\": %s\n" msgstr "%s: トランザクションログファイル \"%s\" をオープンã§ãã¾ã›ã‚“: %s\n" -#: receivelog.c:123 +#: receivelog.c:126 #, c-format msgid "%s: could not stat transaction log file \"%s\": %s\n" msgstr "%s: トランザクションログファイル \"%s\" ã®çŠ¶æ…‹ã‚’ç¢ºèªã§ãã¾ã›ã‚“: %s\n" -#: receivelog.c:137 +#: receivelog.c:140 #, c-format msgid "%s: transaction log file \"%s\" has %d bytes, should be 0 or %d\n" msgstr "%s: トランザクションログファイル\"%s\"ã¯%dãƒã‚¤ãƒˆã§ã™ã€‚0ã¾ãŸã¯%dã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: receivelog.c:150 +#: receivelog.c:153 #, c-format msgid "%s: could not pad transaction log file \"%s\": %s\n" msgstr "%s: トランザクションログファイル\"%s\"を埋ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: receivelog.c:163 +#: receivelog.c:166 #, c-format msgid "%s: could not seek to beginning of transaction log file \"%s\": %s\n" msgstr "%s: トランザクションログファイル\"%s\"ã®å…ˆé ­ã«ã‚·ãƒ¼ã‚¯ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: receivelog.c:189 +#: receivelog.c:192 #, c-format msgid "%s: could not determine seek position in file \"%s\": %s\n" msgstr "%s: ファイル\"%s\"ã®ã‚·ãƒ¼ã‚¯ä½ç½®ã‚’決定ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: receivelog.c:222 +#: receivelog.c:225 #, c-format msgid "%s: could not rename file \"%s\": %s\n" msgstr "%s: \"%s\"ファイルã®åå‰ã‚’変更ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: receivelog.c:229 +#: receivelog.c:232 #, c-format msgid "%s: not renaming \"%s%s\", segment is not complete\n" msgstr "%s: \"%s%s\"ã®åå‰ã‚’変更ã—ã¾ã›ã‚“。セグメントãŒå®Œäº†ã—ã¦ã„ã¾ã›ã‚“。\n" -#: receivelog.c:275 +#: receivelog.c:278 #, c-format msgid "%s: could not open timeline history file \"%s\": %s\n" msgstr "%s: タイムライン履歴ファイル \"%s\" をオープンã§ãã¾ã›ã‚“: %s\n" -#: receivelog.c:302 +#: receivelog.c:305 #, c-format msgid "%s: server reported unexpected history file name for timeline %u: %s\n" msgstr "%s: サーãƒã¯ãƒ©ã‚¤ãƒ ãƒ©ã‚¤ãƒ³%u用ã®å±¥æ­´ãƒ•ã‚¡ã‚¤ãƒ«ãŒæƒ³å®šå¤–ã§ã‚ã‚‹ã“ã¨ã‚’報告ã—ã¾ã—ãŸ: %s\n" -#: receivelog.c:319 +#: receivelog.c:322 #, c-format msgid "%s: could not create timeline history file \"%s\": %s\n" msgstr "%s: \"%s\"タイムライン履歴ファイルを作æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: receivelog.c:336 +#: receivelog.c:339 #, c-format msgid "%s: could not write timeline history file \"%s\": %s\n" msgstr "%s: \"%s\"ã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³å±¥æ­´ãƒ•ã‚¡ã‚¤ãƒ«ã«æ›¸ã出ã™ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: receivelog.c:361 +#: receivelog.c:364 #, c-format msgid "%s: could not rename file \"%s\" to \"%s\": %s\n" msgstr "%s: ファイル\"%s\"ã®åå‰ã‚’\"%s\"ã«å¤‰æ›´ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: receivelog.c:438 +#: receivelog.c:441 #, c-format -#| msgid "%s: incompatible server version %s; streaming is only supported with server version %s\n" msgid "%s: incompatible server version %s; client does not support streaming from server versions older than %s\n" msgstr "%s: äº’æ›æ€§ã®ãªã„サーãƒãƒãƒ¼ã‚¸ãƒ§ãƒ³%sã§ã™; クライアントã¯%sよりå¤ã„サーãƒãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‹ã‚‰ã®ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“\n" -#: receivelog.c:448 +#: receivelog.c:451 #, c-format -#| msgid "%s: incompatible server version %s; streaming is only supported with server version %s\n" msgid "%s: incompatible server version %s; client does not support streaming from server versions newer than %s\n" msgstr "%s: äº’æ›æ€§ã®ãªã„サーãƒãƒãƒ¼ã‚¸ãƒ§ãƒ³%sã§ã™; クライアントã¯%sより新ã—ã„サーãƒãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‹ã‚‰ã®ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“\n" -#: receivelog.c:546 streamutil.c:272 streamutil.c:311 +#: receivelog.c:549 streamutil.c:272 streamutil.c:311 #, c-format -#| msgid "%s: could not identify system: got %d rows and %d fields, expected %d rows and %d fields\n" msgid "%s: could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields\n" -msgstr "%s: システムを識別ã§ãã¾ã›ã‚“ã§ã—ãŸ: %d 行ãŠã‚ˆã³ %d ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã€æœŸå¾…ã™ã‚‹%d 行ãŠã‚ˆã³ %d ã¾ãŸã¯ãれ以上ã®ãƒ•ィールド\n" +msgstr "%s: システムを識別ã§ãã¾ã›ã‚“ã§ã—ãŸ: %d行ã¨%dフィールドをå–å¾—ã—ã¾ã—ãŸãŒã€æœŸå¾…ã—ã¦ã„ãŸã®ã¯%d行ã¨%d以上ã®ãƒ•ィールドã§ã™\n" -#: receivelog.c:554 +#: receivelog.c:557 #, c-format msgid "%s: system identifier does not match between base backup and streaming connection\n" msgstr "%s: システム識別å­ãŒãƒ™ãƒ¼ã‚¹ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã¨ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°æŽ¥ç¶šã®é–“ã§ä¸€è‡´ã—ã¾ã›ã‚“\n" -#: receivelog.c:562 +#: receivelog.c:565 #, c-format msgid "%s: starting timeline %u is not present in the server\n" msgstr "%s: é–‹å§‹ã™ã‚‹ã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³%uãŒã‚µãƒ¼ãƒä¸Šã«å­˜åœ¨ã—ã¾ã›ã‚“\n" -#: receivelog.c:602 +#: receivelog.c:605 #, c-format msgid "%s: unexpected response to TIMELINE_HISTORY command: got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: TIMELINE_HISTORYコマンドã¸ã®æƒ³å®šå¤–ã®å¿œç­”: %d行ã¨%dフィールドを入手ã—ã¾ã—ãŸã€‚想定ã§ã¯%d行ã¨%dフィールドã§ã—ãŸ\n" -#: receivelog.c:674 +#: receivelog.c:677 #, c-format msgid "%s: server reported unexpected next timeline %u, following timeline %u\n" msgstr "%1$s: サーãƒãŒã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³%3$uã«ç¶šã次ã®ã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³%2$uãŒæƒ³å®šå¤–ã§ã‚ã‚‹ã“ã¨ã‚’報告ã—ã¾ã—ãŸ\n" -#: receivelog.c:681 +#: receivelog.c:684 #, c-format msgid "%s: server stopped streaming timeline %u at %X/%X, but reported next timeline %u to begin at %X/%X\n" msgstr "%s: サーãƒã¯ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°ã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³%uã‚’%X%Xã§åœæ­¢ã—ã¾ã—ãŸã€‚ã—ã‹ã—次ã®ã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³%uãŒ%X%Xã§å§‹ã¾ã‚Šã¾ã—ãŸ\n" -#: receivelog.c:722 +#: receivelog.c:725 #, c-format msgid "%s: replication stream was terminated before stop point\n" msgstr "%s: レプリケーションストリームãŒã‚¹ãƒˆãƒƒãƒ—ãƒã‚¤ãƒ³ãƒˆã®å‰ã«çµ‚了ã—ã¾ã—ãŸ\n" -#: receivelog.c:771 +#: receivelog.c:774 #, c-format msgid "%s: unexpected result set after end-of-timeline: got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: タイムラインã®çµ‚äº†å¾Œã®æƒ³å®šå¤–ã®çµæžœã‚»ãƒƒãƒˆ: %d行ã€%dフィールドを入手ã—ã¾ã—ãŸãŒã€æƒ³å®šã—ã¦ã„ãŸã®ã¯%d行ã€%dフィールドã§ã—ãŸ\n" -#: receivelog.c:781 +#: receivelog.c:784 #, c-format msgid "%s: could not parse next timeline's starting point \"%s\"\n" msgstr "%s: 次ã®ã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³ã®é–‹å§‹ãƒã‚¤ãƒ³ãƒˆ\"%s\"ã‚’è§£æžã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: receivelog.c:1138 +#: receivelog.c:1141 #, c-format msgid "%s: received transaction log record for offset %u with no file open\n" msgstr "%s: ファイルオープンãŒãªã„オフセット%uã«å¯¾ã™ã‚‹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãƒ­ã‚°ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’å—ä¿¡\n" -#: receivelog.c:1150 +#: receivelog.c:1153 #, c-format msgid "%s: got WAL data offset %08x, expected %08x\n" msgstr "%s: WALデータオフセット%08xを入手。想定値ã¯%08x\n" -#: receivelog.c:1186 +#: receivelog.c:1189 #, c-format msgid "%s: could not write %u bytes to WAL file \"%s\": %s\n" msgstr "%1$s: WALファイル\"%3$s\"ã«%2$uãƒã‚¤ãƒˆæ›¸ã出ã™ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %4$s\n" -#: receivelog.c:1211 receivelog.c:1252 receivelog.c:1283 +#: receivelog.c:1214 receivelog.c:1255 receivelog.c:1286 #, c-format msgid "%s: could not send copy-end packet: %s" msgstr "%s: コピーエンドパケットをé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" @@ -1157,7 +1116,6 @@ msgstr "%s: サーãƒã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸ\n" #: streamutil.c:195 #, c-format -#| msgid "%s: could not connect to server: %s\n" msgid "%s: could not connect to server: %s" msgstr "%s: サーãƒã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" @@ -1173,39 +1131,37 @@ msgstr "%s: integer_datetimesコンパイルフラグãŒã‚µãƒ¼ãƒã¨ä¸€è‡´ã—ã¾ #: streamutil.c:379 #, c-format -#| msgid "%s: could not identify system: got %d rows and %d fields, expected %d rows and %d fields\n" msgid "%s: could not create replication slot \"%s\": got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: レプリケーションスロット\"%s\"を作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ; %d行ã¨%dフィールドをå–å¾—ã—ã¾ã—ãŸãŒã€æœŸå¾…ã—ã¦ã„ãŸã®ã¯%d行ã¨%dフィールドã§ã™\n" #: streamutil.c:424 #, c-format -#| msgid "%s: could not identify system: got %d rows and %d fields, expected %d rows and %d fields\n" msgid "%s: could not drop replication slot \"%s\": got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: レプリケーションスロット\"%s\"を削除ã§ãã¾ã›ã‚“ã§ã—ãŸ; %d行ã¨%dフィールドをå–å¾—ã—ã¾ã—ãŸãŒã€æœŸå¾…ã—ã¦ã„ãŸã®ã¯%d行ã¨%dフィールドã§ã™\n" -#~ msgid "%s: timeline does not match between base backup and streaming connection\n" -#~ msgstr "%s: タイムラインãŒãƒ™ãƒ¼ã‚¹ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã¨ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°æŽ¥ç¶šã®é–“ã§ä¸€è‡´ã—ã¾ã›ã‚“\n" +#~ msgid "%s: could not parse file size\n" +#~ msgstr "%s: ファイルサイズã®è§£æžãŒã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#~ msgid "%s: keepalive message has incorrect size %d\n" -#~ msgstr "%s: キープアライブメッセージã®ã‚µã‚¤ã‚º%dãŒä¸æ­£ã§ã™\n" +#~ msgid "%s: could not parse file mode\n" +#~ msgstr "%s: ファイルモードã®è§£æžãŒã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#~ msgid "%s: no start point returned from server\n" -#~ msgstr "%s: サーãƒã‹ã‚‰ã‚¹ã‚¿ãƒ¼ãƒˆãƒã‚¤ãƒ³ãƒˆãŒè¿”りã¾ã›ã‚“ã§ã—ãŸ\n" +#~ msgid "%s: could not parse transaction log file name \"%s\"\n" +#~ msgstr "%s: トランザクションログファイルå\"%s\"ã‚’è§£æžã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#~ msgid "%s: could not close file %s: %s\n" -#~ msgstr "%s: ファイル%sã‚’é–‰ã˜ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" +#~ msgid " --help show this help, then exit\n" +#~ msgstr " --help ã“ã®ãƒ˜ãƒ«ãƒ—を表示ã—終了ã—ã¾ã™\n" #~ msgid " --version output version information, then exit\n" #~ msgstr " --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を出力ã—終了ã—ã¾ã™\n" -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help ã“ã®ãƒ˜ãƒ«ãƒ—を表示ã—終了ã—ã¾ã™\n" +#~ msgid "%s: could not close file %s: %s\n" +#~ msgstr "%s: ファイル%sã‚’é–‰ã˜ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#~ msgid "%s: could not parse transaction log file name \"%s\"\n" -#~ msgstr "%s: トランザクションログファイルå\"%s\"ã‚’è§£æžã§ãã¾ã›ã‚“ã§ã—ãŸ\n" +#~ msgid "%s: no start point returned from server\n" +#~ msgstr "%s: サーãƒã‹ã‚‰ã‚¹ã‚¿ãƒ¼ãƒˆãƒã‚¤ãƒ³ãƒˆãŒè¿”りã¾ã›ã‚“ã§ã—ãŸ\n" -#~ msgid "%s: could not parse file mode\n" -#~ msgstr "%s: ファイルモードã®è§£æžãŒã§ãã¾ã›ã‚“ã§ã—ãŸ\n" +#~ msgid "%s: keepalive message has incorrect size %d\n" +#~ msgstr "%s: キープアライブメッセージã®ã‚µã‚¤ã‚º%dãŒä¸æ­£ã§ã™\n" -#~ msgid "%s: could not parse file size\n" -#~ msgstr "%s: ファイルサイズã®è§£æžãŒã§ãã¾ã›ã‚“ã§ã—ãŸ\n" +#~ msgid "%s: timeline does not match between base backup and streaming connection\n" +#~ msgstr "%s: タイムラインãŒãƒ™ãƒ¼ã‚¹ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã¨ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°æŽ¥ç¶šã®é–“ã§ä¸€è‡´ã—ã¾ã›ã‚“\n" diff --git a/src/bin/pg_basebackup/po/ko.po b/src/bin/pg_basebackup/po/ko.po index 485703923d..0d9fd117c1 100644 --- a/src/bin/pg_basebackup/po/ko.po +++ b/src/bin/pg_basebackup/po/ko.po @@ -1,14 +1,14 @@ # LANGUAGE message translation file for pg_basebackup # Copyright (C) 2015 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Ioseph Kim , 2015 +# Ioseph Kim , 2016 # msgid "" msgstr "" -"Project-Id-Version: pg_basebackup (PostgreSQL) 9.5\n" +"Project-Id-Version: pg_basebackup (PostgreSQL) 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2015-12-25 19:20+0900\n" -"PO-Revision-Date: 2015-12-25 23:10+0900\n" +"POT-Creation-Date: 2016-09-26 14:02+0900\n" +"PO-Revision-Date: 2016-09-26 16:40+0900\n" "Last-Translator: Ioseph Kim \n" "Language-Team: Korean \n" "Language: ko\n" @@ -114,7 +114,12 @@ msgstr "" " -R, --write-recovery-conf\n" " ë°±ì—…ì´ ë나고 recovery.conf 파ì¼ë„ 만듬\n" -#: pg_basebackup.c:242 +#: pg_basebackup.c:242 pg_receivexlog.c:74 +#, c-format +msgid " -S, --slot=SLOTNAME replication slot to use\n" +msgstr " -S, --slot=슬롯ì´ë¦„ 지정한 복제 ìŠ¬ë¡¯ì„ ì‚¬ìš©í•¨\n" + +#: pg_basebackup.c:243 #, c-format msgid "" " -T, --tablespace-mapping=OLDDIR=NEWDIR\n" @@ -123,14 +128,14 @@ msgstr "" " -T, --tablespace-mapping=옛DIR=새DIR\n" " í…Œì´ë¸”스페ì´ìФ 디렉터리 새 맵핑\n" -#: pg_basebackup.c:244 +#: pg_basebackup.c:245 #, c-format msgid "" " -x, --xlog include required WAL files in backup (fetch mode)\n" msgstr "" " -x, --xlog 백업 ì•ˆì— í•„ìš”í•œ WAL 파ì¼ë„ í¬í•¨í•¨ (fetch mode)\n" -#: pg_basebackup.c:245 +#: pg_basebackup.c:246 #, c-format msgid "" " -X, --xlog-method=fetch|stream\n" @@ -139,23 +144,23 @@ msgstr "" " -X, --xlog-method=fetch|stream\n" " 필요한 WAL 파ì¼ì„ 백업하는 방법\n" -#: pg_basebackup.c:247 +#: pg_basebackup.c:248 #, c-format msgid " --xlogdir=XLOGDIR location for the transaction log directory\n" msgstr " --xlogdir=XLOGDIR 트랜잭션 로그 디렉터리 지정\n" -#: pg_basebackup.c:248 +#: pg_basebackup.c:249 #, c-format msgid " -z, --gzip compress tar output\n" msgstr " -z, --gzip tar ì¶œë ¥ë¬¼ì„ ì••ì¶•\n" -#: pg_basebackup.c:249 +#: pg_basebackup.c:250 #, c-format msgid "" " -Z, --compress=0-9 compress tar output with given compression level\n" msgstr " -Z, --compress=0-9 ì••ì¶•ëœ tar 파ì¼ì˜ ì••ì¶• 수위 지정\n" -#: pg_basebackup.c:250 +#: pg_basebackup.c:251 #, c-format msgid "" "\n" @@ -164,7 +169,7 @@ msgstr "" "\n" "ì¼ë°˜ 옵션들:\n" -#: pg_basebackup.c:251 +#: pg_basebackup.c:252 #, c-format msgid "" " -c, --checkpoint=fast|spread\n" @@ -173,32 +178,32 @@ msgstr "" " -c, --checkpoint=fast|spread\n" " ì²´í¬í¬ì¸íЏ 방법\n" -#: pg_basebackup.c:253 +#: pg_basebackup.c:254 #, c-format msgid " -l, --label=LABEL set backup label\n" msgstr " -l, --label=ë¼ë²¨ 백업 ë¼ë²¨ 지정\n" -#: pg_basebackup.c:254 +#: pg_basebackup.c:255 #, c-format msgid " -P, --progress show progress information\n" msgstr " -P, --progress ì§„í–‰ 과정 보여줌\n" -#: pg_basebackup.c:255 pg_receivexlog.c:76 pg_recvlogical.c:89 +#: pg_basebackup.c:256 pg_receivexlog.c:76 pg_recvlogical.c:89 #, c-format msgid " -v, --verbose output verbose messages\n" msgstr " -v, --verbose ìžì„¸í•œ 작업 메시지 보여줌\n" -#: pg_basebackup.c:256 pg_receivexlog.c:77 pg_recvlogical.c:90 +#: pg_basebackup.c:257 pg_receivexlog.c:77 pg_recvlogical.c:90 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version 버전 ì •ë³´ 보여주고 마침\n" -#: pg_basebackup.c:257 pg_receivexlog.c:78 pg_recvlogical.c:91 +#: pg_basebackup.c:258 pg_receivexlog.c:78 pg_recvlogical.c:91 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help ì´ ë„움ë§ì„ 보여주고 마침\n" -#: pg_basebackup.c:258 pg_receivexlog.c:79 pg_recvlogical.c:92 +#: pg_basebackup.c:259 pg_receivexlog.c:79 pg_recvlogical.c:92 #, c-format msgid "" "\n" @@ -207,22 +212,22 @@ msgstr "" "\n" "ì—°ê²° 옵션들:\n" -#: pg_basebackup.c:259 pg_receivexlog.c:80 +#: pg_basebackup.c:260 pg_receivexlog.c:80 #, c-format msgid " -d, --dbname=CONNSTR connection string\n" msgstr " -d, --dbname=ì ‘ì†ë¬¸ìžì—´ 서버 ì ‘ì† ë¬¸ìžì—´\n" -#: pg_basebackup.c:260 pg_receivexlog.c:81 pg_recvlogical.c:94 +#: pg_basebackup.c:261 pg_receivexlog.c:81 pg_recvlogical.c:94 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=호스트ì´ë¦„ ì ‘ì†í•  ë°ì´í„°ë² ì´ìФ 서버나 소켓 디렉터리\n" -#: pg_basebackup.c:261 pg_receivexlog.c:82 pg_recvlogical.c:95 +#: pg_basebackup.c:262 pg_receivexlog.c:82 pg_recvlogical.c:95 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=í¬íЏ ë°ì´í„°ë² ì´ìФ 서버 í¬íЏ 번호\n" -#: pg_basebackup.c:262 +#: pg_basebackup.c:263 #, c-format msgid "" " -s, --status-interval=INTERVAL\n" @@ -232,17 +237,17 @@ msgstr "" " -s, --status-interval=ì´ˆ\n" " ì´ˆ 단위 매번 서버로 ìƒíƒœ íŒ¨í‚·ì„ ë³´ëƒ„\n" -#: pg_basebackup.c:264 pg_receivexlog.c:83 pg_recvlogical.c:96 +#: pg_basebackup.c:265 pg_receivexlog.c:83 pg_recvlogical.c:96 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=ì‚¬ìš©ìž ì ‘ì†í•  특정 ë°ì´í„°ë² ì´ìФ 사용ìž\n" -#: pg_basebackup.c:265 pg_receivexlog.c:84 pg_recvlogical.c:97 +#: pg_basebackup.c:266 pg_receivexlog.c:84 pg_recvlogical.c:97 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password 비밀번호 물어 ë³´ì§€ 않ìŒ\n" -#: pg_basebackup.c:266 pg_receivexlog.c:85 pg_recvlogical.c:98 +#: pg_basebackup.c:267 pg_receivexlog.c:85 pg_recvlogical.c:98 #, c-format msgid "" " -W, --password force password prompt (should happen " @@ -250,7 +255,7 @@ msgid "" msgstr "" " -W, --password í•­ìƒ ë¹„ë°€ë²ˆí˜¸ 프롬프트 ë³´ìž„ (ìžë™ìœ¼ë¡œ íŒë‹¨ 함)\n" -#: pg_basebackup.c:267 pg_receivexlog.c:89 pg_recvlogical.c:99 +#: pg_basebackup.c:268 pg_receivexlog.c:89 pg_recvlogical.c:99 #, c-format msgid "" "\n" @@ -259,195 +264,195 @@ msgstr "" "\n" "오류보고: .\n" -#: pg_basebackup.c:310 +#: pg_basebackup.c:311 #, c-format msgid "%s: could not read from ready pipe: %s\n" msgstr "%s: ì¤€ë¹„ëœ íŒŒì´í”„로부터 ì½ê¸° 실패: %s\n" -#: pg_basebackup.c:318 pg_basebackup.c:411 pg_basebackup.c:1869 -#: streamutil.c:285 +#: pg_basebackup.c:319 pg_basebackup.c:422 pg_basebackup.c:1893 +#: streamutil.c:293 #, c-format msgid "%s: could not parse transaction log location \"%s\"\n" msgstr "%s: 트랜잭션 로그 위치 \"%s\" ë¶„ì„ ì‹¤íŒ¨\n" -#: pg_basebackup.c:424 +#: pg_basebackup.c:435 #, c-format msgid "%s: could not create pipe for background process: %s\n" msgstr "%s: 백그ë¼ìš´ë“œ 프로세스를 위한 파ì´í”„ 만들기 실패: %s\n" -#: pg_basebackup.c:449 pg_basebackup.c:504 pg_basebackup.c:1252 +#: pg_basebackup.c:460 pg_basebackup.c:515 pg_basebackup.c:1263 #, c-format msgid "%s: could not create directory \"%s\": %s\n" msgstr "%s: \"%s\" 디렉터리 만들 수 ì—†ìŒ: %s\n" -#: pg_basebackup.c:467 +#: pg_basebackup.c:478 #, c-format msgid "%s: could not create background process: %s\n" msgstr "%s: 백그ë¼ìš´ë“œ 프로세스 만들기 실패: %s\n" -#: pg_basebackup.c:479 +#: pg_basebackup.c:490 #, c-format msgid "%s: could not create background thread: %s\n" msgstr "%s: 백그ë¼ìš´ë“œ 스래드 만들기 실패: %s\n" -#: pg_basebackup.c:523 +#: pg_basebackup.c:534 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" msgstr "%s: \"%s\" 디렉터리가 있지만 비어 있지 않ìŒ\n" -#: pg_basebackup.c:531 +#: pg_basebackup.c:542 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: \"%s\" ë””ë ‰í„°ë¦¬ì— ì•¡ì„¸ìŠ¤í•  수 ì—†ìŒ: %s\n" -#: pg_basebackup.c:593 +#: pg_basebackup.c:604 #, c-format msgid "%*s/%s kB (100%%), %d/%d tablespace %*s" msgid_plural "%*s/%s kB (100%%), %d/%d tablespaces %*s" msgstr[0] "%*s/%s kB (100%%), %d/%d í…Œì´ë¸”스페ì´ìФ %*s" -#: pg_basebackup.c:605 +#: pg_basebackup.c:616 #, c-format msgid "%*s/%s kB (%d%%), %d/%d tablespace (%s%-*.*s)" msgid_plural "%*s/%s kB (%d%%), %d/%d tablespaces (%s%-*.*s)" msgstr[0] "%*s/%s kB (%d%%), %d/%d í…Œì´ë¸”스페ì´ìФ (%s%-*.*s)" -#: pg_basebackup.c:621 +#: pg_basebackup.c:632 #, c-format msgid "%*s/%s kB (%d%%), %d/%d tablespace" msgid_plural "%*s/%s kB (%d%%), %d/%d tablespaces" msgstr[0] "%*s/%s kB (%d%%), %d/%d í…Œì´ë¸”스페ì´ìФ" -#: pg_basebackup.c:643 +#: pg_basebackup.c:654 #, c-format msgid "%s: transfer rate \"%s\" is not a valid value\n" msgstr "%s: \"%s\" 전송 ì†ë„는 ìž˜ëª»ëœ ê°’ìž„\n" -#: pg_basebackup.c:650 +#: pg_basebackup.c:661 #, c-format msgid "%s: invalid transfer rate \"%s\": %s\n" msgstr "%s: ìž˜ëª»ëœ ì „ì†¡ ì†ë„ \"%s\": %s\n" -#: pg_basebackup.c:660 +#: pg_basebackup.c:671 #, c-format msgid "%s: transfer rate must be greater than zero\n" msgstr "%s: 전송 ì†ë„는 0보다 커야 함\n" -#: pg_basebackup.c:694 +#: pg_basebackup.c:705 #, c-format msgid "%s: invalid --max-rate unit: \"%s\"\n" msgstr "%s: ìž˜ëª»ëœ --max-rate 단위: \"%s\"\n" -#: pg_basebackup.c:703 +#: pg_basebackup.c:714 #, c-format msgid "%s: transfer rate \"%s\" exceeds integer range\n" msgstr "%s: \"%s\" 전송 ì†ë„는 정수형 범위가 아님\n" -#: pg_basebackup.c:715 +#: pg_basebackup.c:726 #, c-format msgid "%s: transfer rate \"%s\" is out of range\n" msgstr "%s: \"%s\" 전송 ì†ë„는 범위 초과\n" -#: pg_basebackup.c:739 +#: pg_basebackup.c:750 #, c-format msgid "%s: could not write to compressed file \"%s\": %s\n" msgstr "%s: \"%s\" ì••ì¶• íŒŒì¼ ì“°ê¸° 실패: %s\n" -#: pg_basebackup.c:749 pg_basebackup.c:1346 pg_basebackup.c:1564 +#: pg_basebackup.c:760 pg_basebackup.c:1357 pg_basebackup.c:1582 #, c-format msgid "%s: could not write to file \"%s\": %s\n" msgstr "%s: \"%s\" íŒŒì¼ ì“°ê¸° 실패: %s\n" -#: pg_basebackup.c:804 pg_basebackup.c:825 pg_basebackup.c:853 +#: pg_basebackup.c:815 pg_basebackup.c:836 pg_basebackup.c:864 #, c-format msgid "%s: could not set compression level %d: %s\n" msgstr "%s: ìž˜ëª»ëœ ì••ì¶• 수위 %d: %s\n" -#: pg_basebackup.c:874 +#: pg_basebackup.c:885 #, c-format msgid "%s: could not create compressed file \"%s\": %s\n" msgstr "%s: \"%s\" ì••ì¶• íŒŒì¼ ë§Œë“¤ê¸° 실패: %s\n" -#: pg_basebackup.c:885 pg_basebackup.c:1306 pg_basebackup.c:1557 +#: pg_basebackup.c:896 pg_basebackup.c:1317 pg_basebackup.c:1575 #, c-format msgid "%s: could not create file \"%s\": %s\n" msgstr "%s: \"%s\" íŒŒì¼ ë§Œë“¤ê¸° 실패: %s\n" -#: pg_basebackup.c:897 pg_basebackup.c:1161 +#: pg_basebackup.c:908 pg_basebackup.c:1172 #, c-format msgid "%s: could not get COPY data stream: %s" msgstr "%s: COPY ë°ì´í„° ìŠ¤íŠ¸ë¦¼ì„ ì‚¬ìš©í•  수 ì—†ìŒ: %s" -#: pg_basebackup.c:954 +#: pg_basebackup.c:965 #, c-format msgid "%s: could not close compressed file \"%s\": %s\n" msgstr "%s: \"%s\" ì••ì¶• íŒŒì¼ ë‹«ê¸° 실패: %s\n" -#: pg_basebackup.c:967 pg_recvlogical.c:569 receivelog.c:213 receivelog.c:362 -#: receivelog.c:754 +#: pg_basebackup.c:978 pg_recvlogical.c:577 receivelog.c:203 receivelog.c:351 +#: receivelog.c:740 #, c-format msgid "%s: could not close file \"%s\": %s\n" msgstr "%s: \"%s\" íŒŒì¼ ë‹«ê¸° 실패: %s\n" -#: pg_basebackup.c:978 pg_basebackup.c:1190 pg_recvlogical.c:435 -#: receivelog.c:1044 +#: pg_basebackup.c:989 pg_basebackup.c:1201 pg_recvlogical.c:443 +#: receivelog.c:1021 #, c-format msgid "%s: could not read COPY data: %s" msgstr "%s: COPY ìžë£Œë¥¼ ì½ì„ 수 ì—†ìŒ: %s" -#: pg_basebackup.c:1204 +#: pg_basebackup.c:1215 #, c-format msgid "%s: invalid tar block header size: %d\n" msgstr "%s: ìž˜ëª»ëœ ë¸”ëŸ­ í—¤ë” í¬ê¸°: %d\n" -#: pg_basebackup.c:1260 +#: pg_basebackup.c:1271 #, c-format msgid "%s: could not set permissions on directory \"%s\": %s\n" msgstr "%s: \"%s\" ë””ë ‰í„°ë¦¬ì˜ ì ‘ê·¼ ê¶Œí•œì„ ì§€ì •í•  수 ì—†ìŒ: %s\n" -#: pg_basebackup.c:1284 +#: pg_basebackup.c:1295 #, c-format msgid "%s: could not create symbolic link from \"%s\" to \"%s\": %s\n" msgstr "%s: \"%s\" 파ì¼ì„ \"%s\" 심볼릭 ë§í¬ë¡œ 만들 수 ì—†ìŒ: %s\n" -#: pg_basebackup.c:1293 +#: pg_basebackup.c:1304 #, c-format msgid "%s: unrecognized link indicator \"%c\"\n" msgstr "%s: 알 수 없는 ë§í¬ ì§€ì‹œìž \"%c\"\n" -#: pg_basebackup.c:1313 +#: pg_basebackup.c:1324 #, c-format msgid "%s: could not set permissions on file \"%s\": %s\n" msgstr "%s: \"%s\" 파ì¼ì˜ ì ‘ê·¼ê¶Œí•œì„ ì§€ì •í•  수 ì—†ìŒ: %s\n" -#: pg_basebackup.c:1372 +#: pg_basebackup.c:1383 #, c-format msgid "%s: COPY stream ended before last file was finished\n" msgstr "%s: 마지막 파ì¼ì„ ë내기 ì „ì— COPY ìŠ¤íŠ¸ë¦¼ì´ ë났ìŒ\n" -#: pg_basebackup.c:1458 pg_basebackup.c:1478 pg_basebackup.c:1485 -#: pg_basebackup.c:1532 +#: pg_basebackup.c:1469 pg_basebackup.c:1489 pg_basebackup.c:1496 +#: pg_basebackup.c:1550 #, c-format msgid "%s: out of memory\n" msgstr "%s: 메모리 부족\n" -#: pg_basebackup.c:1609 +#: pg_basebackup.c:1627 #, c-format msgid "%s: incompatible server version %s\n" msgstr "%s: 호환하지 않는 서버 버전 %s\n" -#: pg_basebackup.c:1656 pg_recvlogical.c:261 receivelog.c:549 receivelog.c:600 -#: receivelog.c:641 streamutil.c:255 streamutil.c:353 streamutil.c:399 +#: pg_basebackup.c:1674 pg_recvlogical.c:261 receivelog.c:538 receivelog.c:589 +#: receivelog.c:629 streamutil.c:263 streamutil.c:367 streamutil.c:413 #, c-format msgid "%s: could not send replication command \"%s\": %s" msgstr "%s: \"%s\" 복제 ëª…ë ¹ì„ ë³´ë‚¼ 수 ì—†ìŒ: %s" -#: pg_basebackup.c:1667 +#: pg_basebackup.c:1685 #, c-format msgid "%s: could not initiate base backup: %s" msgstr "%s: ë² ì´ìФ ë°±ì—…ì„ ì´ˆê¸°í™” í•  수 ì—†ìŒ: %s" -#: pg_basebackup.c:1674 +#: pg_basebackup.c:1692 #, c-format msgid "" "%s: server returned unexpected response to BASE_BACKUP command; got %d rows " @@ -456,105 +461,105 @@ msgstr "" "%s: 서버가 BASE_BACKUP ëª…ë ¹ì— ëŒ€í•´ì„œ ìž˜ëª»ëœ ì‘ë‹µì„ í–ˆìŠµë‹ˆë‹¤; ì‘답값: %d 로" "ìš°, %d 필드, (기대값: %d 로우, %d 필드)\n" -#: pg_basebackup.c:1694 +#: pg_basebackup.c:1712 #, c-format msgid "transaction log start point: %s on timeline %u\n" msgstr "트랙잭션 로그 시작 위치: %s, 타임ë¼ì¸: %u\n" -#: pg_basebackup.c:1703 +#: pg_basebackup.c:1721 #, c-format msgid "%s: could not get backup header: %s" msgstr "%s: 백업 í—¤ë”를 구할 수 ì—†ìŒ: %s" -#: pg_basebackup.c:1709 +#: pg_basebackup.c:1727 #, c-format msgid "%s: no data returned from server\n" msgstr "%s: 서버가 아무런 ìžë£Œë„ 주지 않았ìŒ\n" -#: pg_basebackup.c:1741 +#: pg_basebackup.c:1759 #, c-format msgid "%s: can only write single tablespace to stdout, database has %d\n" msgstr "" "%s: 표준 출력으로는 í•˜ë‚˜ì˜ í…Œì´ë¸”스페ì´ìŠ¤ë§Œ 쓸 수 있ìŒ, ë°ì´í„°ë² ì´ìŠ¤ëŠ” %d ê°œ" "ì˜ í…Œì´ë¸” 스페ì´ìŠ¤ê°€ 있ìŒ\n" -#: pg_basebackup.c:1753 +#: pg_basebackup.c:1771 #, c-format msgid "%s: starting background WAL receiver\n" msgstr "%s: 백그ë¼ìš´ë“œ WAL ìˆ˜ì‹ ìž ì‹œìž‘ 중\n" -#: pg_basebackup.c:1784 +#: pg_basebackup.c:1802 #, c-format msgid "%s: could not get transaction log end position from server: %s" msgstr "%s: 서버ì—서 트랜잭션 로그 마지막 위치를 구할 수 ì—†ìŒ: %s" -#: pg_basebackup.c:1791 +#: pg_basebackup.c:1809 #, c-format msgid "%s: no transaction log end position returned from server\n" msgstr "%s: 서버ì—서 트랜잭션 로그 마지막 위치가 수신 ë˜ì§€ 않았ìŒ\n" -#: pg_basebackup.c:1803 +#: pg_basebackup.c:1821 #, c-format msgid "%s: final receive failed: %s" msgstr "%s: 수신 작업 마무리 실패: %s" -#: pg_basebackup.c:1821 +#: pg_basebackup.c:1845 #, c-format msgid "%s: waiting for background process to finish streaming ...\n" msgstr "%s: 스트리ë°ì„ ë내기 위해서 백그ë¼ìš´ë“œ 프로세스를 기다리는 중 ...\n" -#: pg_basebackup.c:1827 +#: pg_basebackup.c:1851 #, c-format msgid "%s: could not send command to background pipe: %s\n" msgstr "%s: 백그ë¼ìš´ë“œ 파ì´í”„로 ëª…ë ¹ì„ ë³´ë‚¼ 수 ì—†ìŒ: %s\n" -#: pg_basebackup.c:1836 +#: pg_basebackup.c:1860 #, c-format msgid "%s: could not wait for child process: %s\n" msgstr "%s: 하위 프로세스를 기다릴 수 ì—†ìŒ: %s\n" -#: pg_basebackup.c:1842 +#: pg_basebackup.c:1866 #, c-format msgid "%s: child %d died, expected %d\n" msgstr "%s: %d ê°œì˜ í•˜ìœ„ 프로세스가 종료ë¨, 기대값 %d\n" -#: pg_basebackup.c:1848 +#: pg_basebackup.c:1872 #, c-format msgid "%s: child process did not exit normally\n" msgstr "%s: 하위 프로세스가 ì •ìƒ ì¢…ë£Œë˜ì§€ 못했ìŒ\n" -#: pg_basebackup.c:1854 +#: pg_basebackup.c:1878 #, c-format msgid "%s: child process exited with error %d\n" msgstr "%s: 하위 프로세스가 ë¹„ì •ìƒ ì¢…ë£Œë¨: 오류 코드 %d\n" -#: pg_basebackup.c:1881 +#: pg_basebackup.c:1905 #, c-format msgid "%s: could not wait for child thread: %s\n" msgstr "%s: 하위 스레드를 기다릴 수 ì—†ìŒ: %s\n" -#: pg_basebackup.c:1888 +#: pg_basebackup.c:1912 #, c-format msgid "%s: could not get child thread exit status: %s\n" msgstr "%s: 하위 스레드 종료 ìƒíƒœê°€ ì •ìƒì ì´ì§€ 않ìŒ: %s\n" -#: pg_basebackup.c:1894 +#: pg_basebackup.c:1918 #, c-format msgid "%s: child thread exited with error %u\n" msgstr "%s: 하위 스레드가 ë¹„ì •ìƒ ì¢…ë£Œë¨: 오류 코드 %u\n" -#: pg_basebackup.c:1983 +#: pg_basebackup.c:2008 #, c-format msgid "%s: invalid output format \"%s\", must be \"plain\" or \"tar\"\n" msgstr "" "%s: \"%s\" ê°’ì€ ìž˜ëª»ëœ ì¶œë ¥ 형ì‹, \"plain\" ë˜ëŠ” \"tar\" ë§Œ 사용 가능\n" -#: pg_basebackup.c:2001 pg_basebackup.c:2013 +#: pg_basebackup.c:2029 pg_basebackup.c:2041 #, c-format msgid "%s: cannot specify both --xlog and --xlog-method\n" msgstr "%s: --xlog 옵션과 --xlog-method ì˜µì…˜ì€ í•¨ê»˜ 쓸 수 ì—†ìŒ\n" -#: pg_basebackup.c:2028 +#: pg_basebackup.c:2056 #, c-format msgid "" "%s: invalid xlog-method option \"%s\", must be \"fetch\" or \"stream\"\n" @@ -562,76 +567,80 @@ msgstr "" "%s: \"%s\" ê°’ì€ ìž˜ëª»ëœ xlog-method 옵션값, \"fetch\" ë˜ëŠ” \"stream\" ë§Œ 사용 " "가능\n" -#: pg_basebackup.c:2050 +#: pg_basebackup.c:2078 #, c-format msgid "%s: invalid compression level \"%s\"\n" msgstr "%s: ìž˜ëª»ëœ ì••ì¶• 수위 \"%s\"\n" -#: pg_basebackup.c:2062 +#: pg_basebackup.c:2090 #, c-format msgid "" "%s: invalid checkpoint argument \"%s\", must be \"fast\" or \"spread\"\n" msgstr "" "%s: ìž˜ëª»ëœ ì²´í¬í¬ì¸íЏ 옵션값 \"%s\", \"fast\" ë˜ëŠ” \"spread\"ë§Œ 사용 가능\n" -#: pg_basebackup.c:2089 pg_receivexlog.c:439 pg_recvlogical.c:752 +#: pg_basebackup.c:2117 pg_receivexlog.c:445 pg_recvlogical.c:760 #, c-format msgid "%s: invalid status interval \"%s\"\n" msgstr "%s: ìž˜ëª»ëœ ìƒíƒœê°’ 전단 간격: \"%s\"\n" -#: pg_basebackup.c:2105 pg_basebackup.c:2119 pg_basebackup.c:2130 -#: pg_basebackup.c:2143 pg_basebackup.c:2153 pg_basebackup.c:2165 -#: pg_basebackup.c:2176 pg_receivexlog.c:471 pg_receivexlog.c:485 -#: pg_receivexlog.c:493 pg_receivexlog.c:503 pg_receivexlog.c:514 -#: pg_recvlogical.c:779 pg_recvlogical.c:793 pg_recvlogical.c:804 +#: pg_basebackup.c:2133 pg_basebackup.c:2147 pg_basebackup.c:2158 +#: pg_basebackup.c:2171 pg_basebackup.c:2181 pg_basebackup.c:2191 +#: pg_basebackup.c:2203 pg_basebackup.c:2214 pg_receivexlog.c:477 +#: pg_receivexlog.c:491 pg_receivexlog.c:499 pg_receivexlog.c:509 +#: pg_receivexlog.c:520 pg_recvlogical.c:787 pg_recvlogical.c:801 #: pg_recvlogical.c:812 pg_recvlogical.c:820 pg_recvlogical.c:828 -#: pg_recvlogical.c:836 pg_recvlogical.c:844 +#: pg_recvlogical.c:836 pg_recvlogical.c:844 pg_recvlogical.c:852 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "ìžì œí•œ ì‚¬í•­ì€ \"%s --help\" 명령으로 살펴보십시오.\n" -#: pg_basebackup.c:2117 pg_receivexlog.c:483 pg_recvlogical.c:791 +#: pg_basebackup.c:2145 pg_receivexlog.c:489 pg_recvlogical.c:799 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: 너무 ë§Žì€ ëª…ë ¹í–‰ ì¸ìˆ˜ë¥¼ 지정했습니다. (ì²˜ìŒ \"%s\")\n" -#: pg_basebackup.c:2129 pg_receivexlog.c:513 +#: pg_basebackup.c:2157 pg_receivexlog.c:519 #, c-format msgid "%s: no target directory specified\n" msgstr "%s: ëŒ€ìƒ ë””ë ‰í„°ë¦¬ë¥¼ 지정하지 않ìŒ\n" -#: pg_basebackup.c:2141 +#: pg_basebackup.c:2169 #, c-format msgid "%s: only tar mode backups can be compressed\n" msgstr "%s: tar 형ì‹ë§Œ ì••ì¶•ì„ ì‚¬ìš©í•  수 있ìŒ\n" -#: pg_basebackup.c:2151 +#: pg_basebackup.c:2179 #, c-format msgid "%s: WAL streaming can only be used in plain mode\n" msgstr "%s: WAL 스트리ë°ì€ plain 모드ì—서만 사용할 수 있ìŒ\n" -#: pg_basebackup.c:2163 +#: pg_basebackup.c:2189 +msgid "%s: replication slots can only be used with WAL streaming\n" +msgstr "%s: 복제 ìŠ¬ë¡¯ì€ WAL 스트리ë°ì—서만 사용할 수 있ìŒ\n" + +#: pg_basebackup.c:2201 #, c-format msgid "" "%s: transaction log directory location can only be specified in plain mode\n" msgstr "%s: 트랜잭션 로그 디렉터리 위치는 plain 모드ì—서만 사용할 수 있ìŒ\n" -#: pg_basebackup.c:2174 +#: pg_basebackup.c:2212 #, c-format msgid "%s: transaction log directory location must be an absolute path\n" msgstr "%s: 트랜잭션 로그 디렉터리 위치는 절대 경로여야 함\n" -#: pg_basebackup.c:2186 +#: pg_basebackup.c:2224 #, c-format msgid "%s: this build does not support compression\n" msgstr "%s: ì´ ë²„ì „ì€ ì••ì¶• 하는 ê¸°ëŠ¥ì„ í¬í•¨ 하지 않고 빌드 ë˜ì—ˆìŠµë‹ˆë‹¤.\n" -#: pg_basebackup.c:2213 +#: pg_basebackup.c:2251 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" msgstr "%s: \"%s\" 심벌릭 ë§í¬ë¥¼ 만들 수 ì—†ìŒ: %s\n" -#: pg_basebackup.c:2218 +#: pg_basebackup.c:2256 #, c-format msgid "%s: symlinks are not supported on this platform\n" msgstr "%s: ì´ ìš´ì˜ì²´ì œì—서는 심볼릭 ë§í¬ ê¸°ëŠ¥ì„ ì§€ì›í•˜ì§€ 않습니다.\n" @@ -685,11 +694,6 @@ msgstr "" " 지정한 ì´ˆ 간격으로 서버로 ìƒíƒœ íŒ¨í‚·ì„ ë³´ëƒ„ (초기값: " "%d)\n" -#: pg_receivexlog.c:74 -#, c-format -msgid " -S, --slot=SLOTNAME replication slot to use\n" -msgstr " -S, --slot=슬롯ì´ë¦„ 지정한 복제 ìŠ¬ë¡¯ì„ ì‚¬ìš©í•¨\n" - #: pg_receivexlog.c:75 #, c-format msgid "" @@ -762,28 +766,28 @@ msgstr "%s: \"%s\" ì¡°ê° íŒŒì¼ì€ ìž˜ëª»ëœ í¬ê¸°ìž„: %d, 무시함\n" msgid "%s: could not read directory \"%s\": %s\n" msgstr "%s: \"%s\" 디렉터리를 ì½ì„ 수 ì—†ìŒ: %s\n" -#: pg_receivexlog.c:331 +#: pg_receivexlog.c:332 #, c-format msgid "%s: starting log streaming at %X/%X (timeline %u)\n" msgstr "%s: 로그 ìŠ¤íŠ¸ë¦¬ë° ì‹œìž‘ 위치: %X/%X (타임ë¼ì¸ %u)\n" -#: pg_receivexlog.c:420 pg_recvlogical.c:699 +#: pg_receivexlog.c:426 pg_recvlogical.c:707 #, c-format msgid "%s: invalid port number \"%s\"\n" msgstr "%s: ìž˜ëª»ëœ í¬íЏ 번호 \"%s\"\n" -#: pg_receivexlog.c:492 +#: pg_receivexlog.c:498 #, c-format msgid "%s: cannot use --create-slot together with --drop-slot\n" msgstr "%s: --create-slot 옵션과 --drop-slot ì˜µì…˜ì„ í•¨ê»˜ 사용할 수 ì—†ìŒ\n" #. translator: second %s is an option name -#: pg_receivexlog.c:501 +#: pg_receivexlog.c:507 #, c-format msgid "%s: %s needs a slot to be specified using --slot\n" msgstr "%s: %s ì˜µì…˜ì€ --slot ì˜µì…˜ì„ í•¨ê»˜ 사용해야 함\n" -#: pg_receivexlog.c:556 +#: pg_receivexlog.c:562 #, c-format msgid "" "%s: replication connection using slot \"%s\" is unexpectedly database " @@ -791,23 +795,23 @@ msgid "" msgstr "" "%s: \"%s\" ìŠ¬ë¡¯ì„ ì´ìš©í•œ 복제 ì—°ê²°ì€ ì´ ë°ì´í„°ë² ì´ìФì—서 사용할 수 ì—†ìŒ\n" -#: pg_receivexlog.c:568 pg_recvlogical.c:884 +#: pg_receivexlog.c:574 pg_recvlogical.c:892 #, c-format msgid "%s: dropping replication slot \"%s\"\n" msgstr "%s: \"%s\" ì´ë¦„ì˜ ë³µì œ ìŠ¬ë¡¯ì„ ì‚­ì œ 중\n" -#: pg_receivexlog.c:581 pg_recvlogical.c:896 +#: pg_receivexlog.c:587 pg_recvlogical.c:904 #, c-format msgid "%s: creating replication slot \"%s\"\n" msgstr "%s: \"%s\" ì´ë¦„ì˜ ë³µì œ ìŠ¬ë¡¯ì„ ë§Œë“œëŠ” 중\n" -#: pg_receivexlog.c:608 pg_recvlogical.c:922 +#: pg_receivexlog.c:614 pg_recvlogical.c:930 #, c-format msgid "%s: disconnected\n" msgstr "%s: ì—°ê²° ëŠê¹€\n" #. translator: check source for value for %d -#: pg_receivexlog.c:615 pg_recvlogical.c:929 +#: pg_receivexlog.c:621 pg_recvlogical.c:937 #, c-format msgid "%s: disconnected; waiting %d seconds to try again\n" msgstr "%s: ì—°ê²° ëŠê¹€; 다시 ì—°ê²° 하기 위해 %d 초를 기다리는 중\n" @@ -893,7 +897,7 @@ msgstr " -d, --dbname=디비ì´ë¦„ ì ‘ì†í•  ë°ì´í„°ë² ì´ìФ\n" msgid "%s: confirming write up to %X/%X, flush to %X/%X (slot %s)\n" msgstr "%s: 쓰기 í™•ì¸ ìœ„ì¹˜: %X/%X, 플러시 위치 %X/%X (슬롯 %s)\n" -#: pg_recvlogical.c:151 receivelog.c:415 +#: pg_recvlogical.c:151 receivelog.c:404 #, c-format msgid "%s: could not send feedback packet: %s" msgstr "%s: 피드백 íŒ¨í‚·ì„ ë³´ë‚¼ 수 ì—†ìŒ: %s" @@ -918,164 +922,169 @@ msgstr "%s: ìŠ¤íŠ¸ë¦¬ë° ì´ˆê¸°í™” ë¨\n" msgid "%s: could not open log file \"%s\": %s\n" msgstr "%s: \"%s\" 로그 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s\n" -#: pg_recvlogical.c:412 receivelog.c:980 +#: pg_recvlogical.c:366 receivelog.c:935 +#, c-format +msgid "%s: invalid socket: %s" +msgstr "%s: ìž˜ëª»ëœ ì†Œì¼“: %s" + +#: pg_recvlogical.c:420 receivelog.c:957 #, c-format msgid "%s: select() failed: %s\n" msgstr "%s: select() 실패: %s\n" -#: pg_recvlogical.c:421 receivelog.c:1030 +#: pg_recvlogical.c:429 receivelog.c:1007 #, c-format msgid "%s: could not receive data from WAL stream: %s" msgstr "%s: WAL 스트림ì—서 ìžë£Œ 받기 실패: %s" -#: pg_recvlogical.c:462 pg_recvlogical.c:501 receivelog.c:1075 -#: receivelog.c:1144 +#: pg_recvlogical.c:470 pg_recvlogical.c:509 receivelog.c:1052 +#: receivelog.c:1119 #, c-format msgid "%s: streaming header too small: %d\n" msgstr "%s: ìŠ¤íŠ¸ë¦¬ë° í—¤ë” í¬ê¸°ê°€ 너무 ìž‘ìŒ: %d\n" -#: pg_recvlogical.c:484 receivelog.c:924 +#: pg_recvlogical.c:492 receivelog.c:900 #, c-format msgid "%s: unrecognized streaming header: \"%c\"\n" msgstr "%s: 알 수 없는 ìŠ¤íŠ¸ë¦¬ë° í—¤ë”: \"%c\"\n" -#: pg_recvlogical.c:530 pg_recvlogical.c:544 +#: pg_recvlogical.c:538 pg_recvlogical.c:552 #, c-format msgid "%s: could not write %u bytes to log file \"%s\": %s\n" msgstr "%s: %u ë°”ì´íЏ 쓰기 실패, ë¡œê·¸íŒŒì¼ \"%s\": %s\n" -#: pg_recvlogical.c:555 receivelog.c:707 receivelog.c:745 +#: pg_recvlogical.c:563 receivelog.c:693 receivelog.c:731 #, c-format msgid "%s: unexpected termination of replication stream: %s" msgstr "%s: 복제 ìŠ¤íŠ¸ë¦¼ì˜ ì˜ˆìƒì¹˜ 못한 종료: %s" -#: pg_recvlogical.c:678 +#: pg_recvlogical.c:686 #, c-format msgid "%s: invalid fsync interval \"%s\"\n" msgstr "%s: \"%s\" ê°’ì€ ìž˜ëª»ëœ fsync 반복주기 ìž„\n" -#: pg_recvlogical.c:719 +#: pg_recvlogical.c:727 #, c-format msgid "%s: could not parse start position \"%s\"\n" msgstr "%s: 시작 위치 êµ¬ë¬¸ì´ ìž˜ëª»ë¨ \"%s\"\n" -#: pg_recvlogical.c:803 +#: pg_recvlogical.c:811 #, c-format msgid "%s: no slot specified\n" msgstr "%s: ìŠ¬ë¡¯ì„ ì§€ì •í•˜ì§€ 않았ìŒ\n" -#: pg_recvlogical.c:811 +#: pg_recvlogical.c:819 #, c-format msgid "%s: no target file specified\n" msgstr "%s: ëŒ€ìƒ íŒŒì¼ì„ 지정하지 않았ìŒ\n" -#: pg_recvlogical.c:819 +#: pg_recvlogical.c:827 #, c-format msgid "%s: no database specified\n" msgstr "%s: ë°ì´í„°ë² ì´ìФ 지정하지 않았ìŒ\n" -#: pg_recvlogical.c:827 +#: pg_recvlogical.c:835 #, c-format msgid "%s: at least one action needs to be specified\n" msgstr "%s: ì ì–´ë„ 하나 ì´ìƒì˜ 작업 ë°©ë²•ì„ ì§€ì •í•´ì•¼ 함\n" -#: pg_recvlogical.c:835 +#: pg_recvlogical.c:843 #, c-format msgid "%s: cannot use --create-slot or --start together with --drop-slot\n" msgstr "" "%s: --create-slot 옵션 ë˜ëŠ” --start ì˜µì…˜ì€ --drop-slot 옵션과 함께 사용할 수 " "ì—†ìŒ\n" -#: pg_recvlogical.c:843 +#: pg_recvlogical.c:851 #, c-format msgid "%s: cannot use --create-slot or --drop-slot together with --startpos\n" msgstr "" "%s: --create-slot 옵션ì´ë‚˜ --drop-slot ì˜µì…˜ì€ --startpos 옵션과 함께 쓸 수 ì—†" "ìŒ\n" -#: pg_recvlogical.c:874 +#: pg_recvlogical.c:882 #, c-format msgid "%s: could not establish database-specific replication connection\n" msgstr "%s: ë°ì´í„°ë² ì´ìФ ì˜ì¡´ì ì¸ 복제 ì—°ê²°ì„ í•  수 ì—†ìŒ\n" -#: receivelog.c:75 +#: receivelog.c:66 #, c-format msgid "%s: could not create archive status file \"%s\": %s\n" msgstr "%s: \"%s\" ì•„ì¹´ì´ë¸Œ ìƒíƒœ 파ì¼ì„ 만들 수 ì—†ìŒ: %s\n" -#: receivelog.c:82 receivelog.c:206 receivelog.c:355 receivelog.c:848 -#: receivelog.c:1096 +#: receivelog.c:73 receivelog.c:196 receivelog.c:344 receivelog.c:830 +#: receivelog.c:1073 #, c-format msgid "%s: could not fsync file \"%s\": %s\n" msgstr "%s: \"%s\" 파ì¼ì„ fsync í•  수 ì—†ìŒ: %s\n" -#: receivelog.c:121 +#: receivelog.c:111 #, c-format msgid "%s: could not open transaction log file \"%s\": %s\n" msgstr "%s: \"%s\" 트랜잭션 로그 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s\n" -#: receivelog.c:133 +#: receivelog.c:123 #, c-format msgid "%s: could not stat transaction log file \"%s\": %s\n" msgstr "%s: \"%s\" 트랜잭션 로그 파ì¼ì˜ ìƒíƒœë¥¼ 알 수 ì—†ìŒ: %s\n" -#: receivelog.c:147 +#: receivelog.c:137 #, c-format msgid "%s: transaction log file \"%s\" has %d bytes, should be 0 or %d\n" msgstr "" "%s: \"%s\" 트랜잭션 로그파ì¼ì˜ í¬ê¸°ê°€ %d ë°”ì´íŠ¸ìž„, 0 ë˜ëŠ” %d ë°”ì´íŠ¸ì—¬ì•¼ 함\n" -#: receivelog.c:160 +#: receivelog.c:150 #, c-format msgid "%s: could not pad transaction log file \"%s\": %s\n" msgstr "%s: \"%s\" 트랜잭션 로그 파ì¼ì„ 채울 수 ì—†ìŒ: %s\n" -#: receivelog.c:173 +#: receivelog.c:163 #, c-format msgid "%s: could not seek to beginning of transaction log file \"%s\": %s\n" msgstr "%s: \"%s\" 트랜잭션 로그파ì¼ì˜ 시작위치를 ì°¾ì„ ìˆ˜ ì—†ìŒ: %s\n" -#: receivelog.c:199 +#: receivelog.c:189 #, c-format msgid "%s: could not determine seek position in file \"%s\": %s\n" msgstr "%s: \"%s\" 파ì¼ì˜ 시작 위치를 ê²°ì •í•  수 ì—†ìŒ: %s\n" -#: receivelog.c:232 +#: receivelog.c:222 #, c-format msgid "%s: could not rename file \"%s\": %s\n" msgstr "%s: \"%s\" 파ì¼ì˜ ì´ë¦„ì„ ë°”ê¿€ 수 ì—†ìŒ: %s\n" -#: receivelog.c:239 +#: receivelog.c:229 #, c-format msgid "%s: not renaming \"%s%s\", segment is not complete\n" msgstr "%s: \"%s%s\" ì´ë¦„ 변경 실패, 세그먼트가 완료ë˜ì§€ 않았ìŒ\n" -#: receivelog.c:285 +#: receivelog.c:275 #, c-format msgid "%s: could not open timeline history file \"%s\": %s\n" msgstr "%s: \"%s\" 타임ë¼ì¸ ë‚´ì—­ 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s\n" -#: receivelog.c:313 +#: receivelog.c:302 #, c-format msgid "%s: server reported unexpected history file name for timeline %u: %s\n" msgstr "%s: 타임ë¼ì¸ %u ë²ˆì„ ìœ„í•œ ë‚´ì—­ íŒŒì¼ ì´ë¦„ì´ ìž˜ëª» ë˜ì—ˆìŒ: %s\n" -#: receivelog.c:330 +#: receivelog.c:319 #, c-format msgid "%s: could not create timeline history file \"%s\": %s\n" msgstr "%s: \"%s\" 타임ë¼ì¸ ë‚´ì—­ 파ì¼ì„ 만들 수 ì—†ìŒ: %s\n" -#: receivelog.c:347 +#: receivelog.c:336 #, c-format msgid "%s: could not write timeline history file \"%s\": %s\n" msgstr "%s: \"%s\" 타임ë¼ì¸ ë‚´ì—­ 파ì¼ì— 쓸 수 ì—†ìŒ: %s\n" -#: receivelog.c:372 +#: receivelog.c:361 #, c-format msgid "%s: could not rename file \"%s\" to \"%s\": %s\n" msgstr "%s: \"%s\" 파ì¼ì„ \"%s\" 파ì¼ë¡œ ì´ë¦„ì„ ë°”ê¿€ 수 ì—†ìŒ: %s\n" -#: receivelog.c:449 +#: receivelog.c:438 #, c-format msgid "" "%s: incompatible server version %s; client does not support streaming from " @@ -1084,7 +1093,7 @@ msgstr "" "%s: %s 서버 ë²„ì „ì€ í˜¸í™˜ë˜ì§€ 않ìŒ; í´ë¼ì´ì–¸íŠ¸ëŠ” %s 버전 보다 ì˜¤ëž˜ëœ ì„œë²„ì˜ ìŠ¤" "트리ë°ì€ ì§€ì›í•˜ì§€ 않ìŒ\n" -#: receivelog.c:459 +#: receivelog.c:448 #, c-format msgid "" "%s: incompatible server version %s; client does not support streaming from " @@ -1093,7 +1102,7 @@ msgstr "" "%s: %s 서버 ë²„ì „ì€ í˜¸í™˜ë˜ì§€ 않ìŒ; í´ë¼ì´ì–¸íŠ¸ëŠ” %s 버전 보다 새로운 ì„œë²„ì˜ ìŠ¤" "트리ë°ì€ ì§€ì›í•˜ì§€ 않ìŒ\n" -#: receivelog.c:557 streamutil.c:264 streamutil.c:299 +#: receivelog.c:546 streamutil.c:272 streamutil.c:311 #, c-format msgid "" "%s: could not identify system: got %d rows and %d fields, expected %d rows " @@ -1102,19 +1111,19 @@ msgstr "" "%s: ì‹œìŠ¤í…œì„ ì‹ë³„í•  수 ì—†ìŒ: 로우수 %d, 필드수 %d, 예ìƒê°’: 로우수 %d, 필드수 " "%d ì´ìƒ\n" -#: receivelog.c:565 +#: receivelog.c:554 #, c-format msgid "" "%s: system identifier does not match between base backup and streaming " "connection\n" msgstr "%s: 시스템 ì‹ë³„ìžê°€ ë² ì´ìФ 백업과 ìŠ¤íŠ¸ë¦¬ë° ì—°ê²°ì—서 서로 다름\n" -#: receivelog.c:573 +#: receivelog.c:562 #, c-format msgid "%s: starting timeline %u is not present in the server\n" msgstr "%s: %u 타임ë¼ì¸ìœ¼ë¡œ 시작하는 ê²ƒì„ ì„œë²„ì—서 제공 하지 않ìŒ\n" -#: receivelog.c:613 +#: receivelog.c:602 #, c-format msgid "" "%s: unexpected response to TIMELINE_HISTORY command: got %d rows and %d " @@ -1123,14 +1132,14 @@ msgstr "" "%s: TIMELINE_HISTORY 명령 결과가 잘못ë¨: ë°›ì€ ê°’: 로우수 %d, 필드수 %d, 예ìƒ" "ê°’: 로우수 %d, 필드수 %d\n" -#: receivelog.c:688 +#: receivelog.c:674 #, c-format msgid "" "%s: server reported unexpected next timeline %u, following timeline %u\n" msgstr "" "%s: 서버가 ìž˜ëª»ëœ ë‹¤ìŒ íƒ€ìž„ë¼ì¸ 번호 %u 보고함, ì´ì „ 타임ë¼ì¸ 번호 %u\n" -#: receivelog.c:695 +#: receivelog.c:681 #, c-format msgid "" "%s: server stopped streaming timeline %u at %X/%X, but reported next " @@ -1139,12 +1148,12 @@ msgstr "" "%s: ì„œë²„ì˜ ì¤‘ì§€ 위치: 타임ë¼ì¸ %u, 위치 %X/%X, 하지만 ë³´ê³  ë°›ì€ ìœ„ì¹˜: 타임ë¼" "ì¸ %u 위치 %X/%X\n" -#: receivelog.c:736 +#: receivelog.c:722 #, c-format msgid "%s: replication stream was terminated before stop point\n" msgstr "%s: 복제 ìŠ¤íŠ¸ë¦¼ì´ ì¤‘ì§€ 위치 ì „ì— ì¢…ë£Œ ë˜ì—ˆìŒ\n" -#: receivelog.c:785 +#: receivelog.c:771 #, c-format msgid "" "%s: unexpected result set after end-of-timeline: got %d rows and %d fields, " @@ -1153,61 +1162,56 @@ msgstr "" "%s: 타임ë¼ì¸ ëì— ìž˜ëª»ëœ ê²°ê³¼ê°€ 발견 ë¨: 로우수 %d, 필드수 %d / 예ìƒê°’: 로우" "수 %d, 필드수 %d\n" -#: receivelog.c:795 +#: receivelog.c:781 #, c-format msgid "%s: could not parse next timeline's starting point \"%s\"\n" msgstr "%s: ë‹¤ìŒ íƒ€ìž„ë¼ì¸ 시작 위치 ë¶„ì„ ì‹¤íŒ¨ \"%s\"\n" -#: receivelog.c:959 -#, c-format -msgid "%s: socket not open" -msgstr "%s: 소켓 ì—´ 수 ì—†ìŒ" - -#: receivelog.c:1163 +#: receivelog.c:1138 #, c-format msgid "%s: received transaction log record for offset %u with no file open\n" msgstr "%s: %u ìœ„ì¹˜ì˜ ìˆ˜ì‹ ëœ íŠ¸ëžœìž­ì…˜ 로그 ë ˆì½”ë“œì— íŒŒì¼ì„ ì—´ 수 ì—†ìŒ\n" -#: receivelog.c:1175 +#: receivelog.c:1150 #, c-format msgid "%s: got WAL data offset %08x, expected %08x\n" msgstr "%s: ìž˜ëª»ëœ WAL ìžë£Œ 위치 %08x, 기대값 %08x\n" -#: receivelog.c:1212 +#: receivelog.c:1186 #, c-format msgid "%s: could not write %u bytes to WAL file \"%s\": %s\n" msgstr "%s: %u ë°”ì´íŠ¸ë¥¼ \"%s\" WAL 파ì¼ì— 쓸 수 ì—†ìŒ: %s\n" -#: receivelog.c:1237 receivelog.c:1279 receivelog.c:1311 +#: receivelog.c:1211 receivelog.c:1252 receivelog.c:1283 #, c-format msgid "%s: could not send copy-end packet: %s" msgstr "%s: copy-end íŒ¨í‚·ì„ ë³´ë‚¼ 수 ì—†ìŒ: %s" -#: streamutil.c:145 +#: streamutil.c:153 msgid "Password: " msgstr "암호: " -#: streamutil.c:169 +#: streamutil.c:177 #, c-format msgid "%s: could not connect to server\n" msgstr "%s: ì„œë²„ì— ì ‘ì†í•  수 ì—†ìŒ\n" -#: streamutil.c:187 +#: streamutil.c:195 #, c-format msgid "%s: could not connect to server: %s" msgstr "%s: ì„œë²„ì— ì ‘ì†í•  수 ì—†ìŒ: %s" -#: streamutil.c:211 +#: streamutil.c:219 #, c-format msgid "%s: could not determine server setting for integer_datetimes\n" msgstr "%s: integer_datetimes 서버 ì„¤ì •ì„ ì•Œ 수 ì—†ìŒ\n" -#: streamutil.c:224 +#: streamutil.c:232 #, c-format msgid "%s: integer_datetimes compile flag does not match server\n" msgstr "%s: integer_datetimes ì»´íŒŒì¼ í”Œëž˜ê·¸ê°€ 서버와 ì¼ì¹˜í•˜ì§€ 않ìŒ\n" -#: streamutil.c:365 +#: streamutil.c:379 #, c-format msgid "" "%s: could not create replication slot \"%s\": got %d rows and %d fields, " @@ -1216,7 +1220,7 @@ msgstr "" "%s: \"%s\" 복제 ìŠ¬ë¡¯ì„ ë§Œë“¤ 수 ì—†ìŒ: 로우수 %d, 필드수 %d, 기대값 로우수 %d, " "필드수 %d\n" -#: streamutil.c:410 +#: streamutil.c:424 #, c-format msgid "" "%s: could not drop replication slot \"%s\": got %d rows and %d fields, " @@ -1224,3 +1228,6 @@ msgid "" msgstr "" "%s: \"%s\" 복제 ìŠ¬ë¡¯ì„ ì‚­ì œí•  수 ì—†ìŒ: 로우수 %d, 필드수 %d, 기대값 로우수 " "%d, 필드수 %d\n" + +#~ msgid "%s: socket not open" +#~ msgstr "%s: 소켓 ì—´ 수 ì—†ìŒ" diff --git a/src/bin/pg_basebackup/po/pt_BR.po b/src/bin/pg_basebackup/po/pt_BR.po index 2eeccb08f2..abe53eea1b 100644 --- a/src/bin/pg_basebackup/po/pt_BR.po +++ b/src/bin/pg_basebackup/po/pt_BR.po @@ -1,13 +1,13 @@ # Brazilian Portuguese message translation file for pg_basebackup # Copyright (C) 2011 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Euler Taveira de Oliveira , 2012-2016. +# Euler Taveira de Oliveira , 2012-2017. # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-08-09 22:53-0300\n" +"POT-Creation-Date: 2017-05-10 12:10-0300\n" "PO-Revision-Date: 2011-08-20 23:33-0300\n" "Last-Translator: Euler Taveira de Oliveira \n" "Language-Team: Brazilian Portuguese \n" @@ -28,32 +28,32 @@ msgstr "sem memória\n" msgid "cannot duplicate null pointer (internal error)\n" msgstr "não pode duplicar ponteiro nulo (erro interno)\n" -#: pg_basebackup.c:154 +#: pg_basebackup.c:156 #, c-format msgid "%s: directory name too long\n" msgstr "%s: nome de diretório é muito longo\n" -#: pg_basebackup.c:164 +#: pg_basebackup.c:166 #, c-format msgid "%s: multiple \"=\" signs in tablespace mapping\n" msgstr "%s: múltiplos sinais \"=\" em mapeamento de tablespace\n" -#: pg_basebackup.c:177 +#: pg_basebackup.c:179 #, c-format msgid "%s: invalid tablespace mapping format \"%s\", must be \"OLDDIR=NEWDIR\"\n" msgstr "%s: formato de mapeamento de tablespace \"%s\" é inválido, deve ser \"DIRANTIGO=DIRNOVO\"\n" -#: pg_basebackup.c:190 +#: pg_basebackup.c:192 #, c-format msgid "%s: old directory is not an absolute path in tablespace mapping: %s\n" msgstr "%s: diretório antigo não é um caminho absoluto no mapeamento de tablespace: %s\n" -#: pg_basebackup.c:197 +#: pg_basebackup.c:199 #, c-format msgid "%s: new directory is not an absolute path in tablespace mapping: %s\n" msgstr "%s: diretório novo não é um caminho absoluto no mapeamento de tablespace: %s\n" -#: pg_basebackup.c:231 +#: pg_basebackup.c:233 #, c-format msgid "" "%s takes a base backup of a running PostgreSQL server.\n" @@ -62,17 +62,17 @@ msgstr "" "%s faz uma cópia de segurança base de um servidor PostgreSQL em execução.\n" "\n" -#: pg_basebackup.c:233 pg_receivexlog.c:66 pg_recvlogical.c:69 +#: pg_basebackup.c:235 pg_receivexlog.c:66 pg_recvlogical.c:72 #, c-format msgid "Usage:\n" msgstr "Uso:\n" -#: pg_basebackup.c:234 pg_receivexlog.c:67 pg_recvlogical.c:70 +#: pg_basebackup.c:236 pg_receivexlog.c:67 pg_recvlogical.c:73 #, c-format msgid " %s [OPTION]...\n" msgstr " %s [OPÇÃO]...\n" -#: pg_basebackup.c:235 +#: pg_basebackup.c:237 #, c-format msgid "" "\n" @@ -81,17 +81,17 @@ msgstr "" "\n" "Opções que controlam a saída:\n" -#: pg_basebackup.c:236 +#: pg_basebackup.c:238 #, c-format msgid " -D, --pgdata=DIRECTORY receive base backup into directory\n" msgstr " -D, --pgdata=DIRETÓRIO armazena a cópia de segurança base no diretório\n" -#: pg_basebackup.c:237 +#: pg_basebackup.c:239 #, c-format msgid " -F, --format=p|t output format (plain (default), tar)\n" msgstr " -F, --format=p|t formato de saída (texto (padrão), tar)\n" -#: pg_basebackup.c:238 +#: pg_basebackup.c:240 #, c-format msgid "" " -r, --max-rate=RATE maximum transfer rate to transfer data directory\n" @@ -100,21 +100,21 @@ msgstr "" " -r, --max-rate=TAXA taxa de transferência máxima para enviar diretório de dados\n" " (em kB/s ou utilize sufixo \"k\" ou \"M\")\n" -#: pg_basebackup.c:240 +#: pg_basebackup.c:242 #, c-format msgid "" " -R, --write-recovery-conf\n" -" write recovery.conf after backup\n" +" write recovery.conf for replication\n" msgstr "" " -R, --write-recovery-conf\n" -" escreve recovery.conf após cópia de segurança\n" +" escreve recovery.conf para replicação\n" -#: pg_basebackup.c:242 pg_receivexlog.c:74 +#: pg_basebackup.c:244 pg_receivexlog.c:74 #, c-format msgid " -S, --slot=SLOTNAME replication slot to use\n" msgstr " -S, --slot=NOME entrada de replicação a ser utilizada\n" -#: pg_basebackup.c:243 +#: pg_basebackup.c:245 #, c-format msgid "" " -T, --tablespace-mapping=OLDDIR=NEWDIR\n" @@ -123,12 +123,12 @@ msgstr "" " -T, --tablespace-mapping=DIRANTIGO=DIRNOVO\n" " realoca tablespace de DIRANTIGO para DIRNOVO\n" -#: pg_basebackup.c:245 +#: pg_basebackup.c:247 #, c-format msgid " -x, --xlog include required WAL files in backup (fetch mode)\n" msgstr " -x, --xlog inclui os arquivos do WAL requeridos na cópia de segurança (modo busca)\n" -#: pg_basebackup.c:246 +#: pg_basebackup.c:248 #, c-format msgid "" " -X, --xlog-method=fetch|stream\n" @@ -137,22 +137,22 @@ msgstr "" " -X, --xlog-method=fetch|stream\n" " inclui os arquivos do WAL requeridos na cópia de segurança\n" -#: pg_basebackup.c:248 +#: pg_basebackup.c:250 #, c-format msgid " --xlogdir=XLOGDIR location for the transaction log directory\n" msgstr " --xlogdir=DIRXLOG local do log de transação\n" -#: pg_basebackup.c:249 +#: pg_basebackup.c:251 #, c-format msgid " -z, --gzip compress tar output\n" msgstr " -z, --gzip comprime saída do tar\n" -#: pg_basebackup.c:250 +#: pg_basebackup.c:252 #, c-format msgid " -Z, --compress=0-9 compress tar output with given compression level\n" msgstr " -Z, --compress=0-9 comprime saída do tar com o nível de compressão informado\n" -#: pg_basebackup.c:251 +#: pg_basebackup.c:253 #, c-format msgid "" "\n" @@ -161,7 +161,7 @@ msgstr "" "\n" "Opções gerais:\n" -#: pg_basebackup.c:252 +#: pg_basebackup.c:254 #, c-format msgid "" " -c, --checkpoint=fast|spread\n" @@ -170,32 +170,32 @@ msgstr "" " -c, --checkpoint=fast|spread\n" " define ponto de controle rápido ou distribuído\n" -#: pg_basebackup.c:254 +#: pg_basebackup.c:256 #, c-format msgid " -l, --label=LABEL set backup label\n" msgstr " -l, --label=RÓTULO define rótulo da cópia de segurança\n" -#: pg_basebackup.c:255 +#: pg_basebackup.c:257 #, c-format msgid " -P, --progress show progress information\n" msgstr " -P, --progress mostra informação de progresso\n" -#: pg_basebackup.c:256 pg_receivexlog.c:76 pg_recvlogical.c:89 +#: pg_basebackup.c:258 pg_receivexlog.c:76 pg_recvlogical.c:92 #, c-format msgid " -v, --verbose output verbose messages\n" msgstr " -v, --verbose mostra mensagens de detalhe\n" -#: pg_basebackup.c:257 pg_receivexlog.c:77 pg_recvlogical.c:90 +#: pg_basebackup.c:259 pg_receivexlog.c:77 pg_recvlogical.c:93 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version mostra informação sobre a versão e termina\n" -#: pg_basebackup.c:258 pg_receivexlog.c:78 pg_recvlogical.c:91 +#: pg_basebackup.c:260 pg_receivexlog.c:78 pg_recvlogical.c:94 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help mostra essa ajuda e termina\n" -#: pg_basebackup.c:259 pg_receivexlog.c:79 pg_recvlogical.c:92 +#: pg_basebackup.c:261 pg_receivexlog.c:79 pg_recvlogical.c:95 #, c-format msgid "" "\n" @@ -204,22 +204,22 @@ msgstr "" "\n" "Opções de conexão:\n" -#: pg_basebackup.c:260 pg_receivexlog.c:80 +#: pg_basebackup.c:262 pg_receivexlog.c:80 #, c-format msgid " -d, --dbname=CONNSTR connection string\n" msgstr " -d, --dbname=TEXTO cadeia de caracteres de conexão\n" -#: pg_basebackup.c:261 pg_receivexlog.c:81 pg_recvlogical.c:94 +#: pg_basebackup.c:263 pg_receivexlog.c:81 pg_recvlogical.c:97 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=MÃQUINA máquina do servidor de banco de dados ou diretório do soquete\n" -#: pg_basebackup.c:262 pg_receivexlog.c:82 pg_recvlogical.c:95 +#: pg_basebackup.c:264 pg_receivexlog.c:82 pg_recvlogical.c:98 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=PORTA número da porta do servidor de banco de dados\n" -#: pg_basebackup.c:263 +#: pg_basebackup.c:265 #, c-format msgid "" " -s, --status-interval=INTERVAL\n" @@ -228,22 +228,22 @@ msgstr "" " -s, --status-interval=INTERVALO\n" " tempo entre envio de pacotes de status ao servidor (em segundos)\n" -#: pg_basebackup.c:265 pg_receivexlog.c:83 pg_recvlogical.c:96 +#: pg_basebackup.c:267 pg_receivexlog.c:83 pg_recvlogical.c:99 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=NOME conecta como usuário do banco de dados especificado\n" -#: pg_basebackup.c:266 pg_receivexlog.c:84 pg_recvlogical.c:97 +#: pg_basebackup.c:268 pg_receivexlog.c:84 pg_recvlogical.c:100 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password nunca pergunta senha\n" -#: pg_basebackup.c:267 pg_receivexlog.c:85 pg_recvlogical.c:98 +#: pg_basebackup.c:269 pg_receivexlog.c:85 pg_recvlogical.c:101 #, c-format msgid " -W, --password force password prompt (should happen automatically)\n" msgstr " -W, --password pergunta senha (pode ocorrer automaticamente)\n" -#: pg_basebackup.c:268 pg_receivexlog.c:89 pg_recvlogical.c:99 +#: pg_basebackup.c:270 pg_receivexlog.c:89 pg_recvlogical.c:102 #, c-format msgid "" "\n" @@ -252,374 +252,384 @@ msgstr "" "\n" "Relate erros a .\n" -#: pg_basebackup.c:311 +#: pg_basebackup.c:313 #, c-format msgid "%s: could not read from ready pipe: %s\n" msgstr "%s: não pôde ler do pipe: %s\n" -#: pg_basebackup.c:319 pg_basebackup.c:422 pg_basebackup.c:1893 +#: pg_basebackup.c:321 pg_basebackup.c:424 pg_basebackup.c:1906 #: streamutil.c:293 #, c-format msgid "%s: could not parse transaction log location \"%s\"\n" msgstr "%s: não pôde validar local do log de transação \"%s\"\n" -#: pg_basebackup.c:435 +#: pg_basebackup.c:437 #, c-format msgid "%s: could not create pipe for background process: %s\n" msgstr "%s: não pôde criar pipe para processo em segundo plano: %s\n" -#: pg_basebackup.c:460 pg_basebackup.c:515 pg_basebackup.c:1263 +#: pg_basebackup.c:462 pg_basebackup.c:517 pg_basebackup.c:1265 #, c-format msgid "%s: could not create directory \"%s\": %s\n" msgstr "%s: não pôde criar diretório \"%s\": %s\n" -#: pg_basebackup.c:478 +#: pg_basebackup.c:480 #, c-format msgid "%s: could not create background process: %s\n" msgstr "%s: não pôde criar processo em segundo plano: %s\n" -#: pg_basebackup.c:490 +#: pg_basebackup.c:492 #, c-format msgid "%s: could not create background thread: %s\n" msgstr "%s: não pôde criar thread em segundo plano: %s\n" -#: pg_basebackup.c:534 +#: pg_basebackup.c:536 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" msgstr "%s: diretório \"%s\" existe mas não está vazio\n" -#: pg_basebackup.c:542 +#: pg_basebackup.c:544 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: não pôde acessar diretório \"%s\": %s\n" -#: pg_basebackup.c:604 +#: pg_basebackup.c:606 #, c-format msgid "%*s/%s kB (100%%), %d/%d tablespace %*s" msgid_plural "%*s/%s kB (100%%), %d/%d tablespaces %*s" msgstr[0] "%*s/%s kB (100%%), %d/%d tablespace %*s" msgstr[1] "%*s/%s kB (100%%), %d/%d tablespaces %*s" -#: pg_basebackup.c:616 +#: pg_basebackup.c:618 #, c-format msgid "%*s/%s kB (%d%%), %d/%d tablespace (%s%-*.*s)" msgid_plural "%*s/%s kB (%d%%), %d/%d tablespaces (%s%-*.*s)" msgstr[0] "%*s/%s kB (%d%%), %d/%d tablespace (%s%-*.*s)" msgstr[1] "%*s/%s kB (%d%%), %d/%d tablespaces (%s%-*.*s)" -#: pg_basebackup.c:632 +#: pg_basebackup.c:634 #, c-format msgid "%*s/%s kB (%d%%), %d/%d tablespace" msgid_plural "%*s/%s kB (%d%%), %d/%d tablespaces" msgstr[0] "%*s/%s kB (%d%%), %d/%d tablespace" msgstr[1] "%*s/%s kB (%d%%), %d/%d tablespaces" -#: pg_basebackup.c:654 +#: pg_basebackup.c:656 #, c-format msgid "%s: transfer rate \"%s\" is not a valid value\n" msgstr "%s: taxa de transferência \"%s\" não é um valor válido\n" -#: pg_basebackup.c:661 +#: pg_basebackup.c:663 #, c-format msgid "%s: invalid transfer rate \"%s\": %s\n" msgstr "%s: taxa de transferência \"%s\" é inválida: %s\n" -#: pg_basebackup.c:671 +#: pg_basebackup.c:673 #, c-format msgid "%s: transfer rate must be greater than zero\n" msgstr "%s: taxa de transferência deve ser maior do que zero\n" -#: pg_basebackup.c:705 +#: pg_basebackup.c:707 #, c-format msgid "%s: invalid --max-rate unit: \"%s\"\n" msgstr "%s: unidade de --max-rate é inválida: \"%s\"\n" -#: pg_basebackup.c:714 +#: pg_basebackup.c:716 #, c-format msgid "%s: transfer rate \"%s\" exceeds integer range\n" msgstr "%s: taxa de transferência \"%s\" excede intervalo de inteiros\n" -#: pg_basebackup.c:726 +#: pg_basebackup.c:728 #, c-format msgid "%s: transfer rate \"%s\" is out of range\n" msgstr "%s: taxa de transferência \"%s\" está fora do intervalo\n" -#: pg_basebackup.c:750 +#: pg_basebackup.c:752 #, c-format msgid "%s: could not write to compressed file \"%s\": %s\n" msgstr "%s: não pôde escrever no arquivo comprimido \"%s\": %s\n" -#: pg_basebackup.c:760 pg_basebackup.c:1357 pg_basebackup.c:1582 +#: pg_basebackup.c:762 pg_basebackup.c:1359 pg_basebackup.c:1584 #, c-format msgid "%s: could not write to file \"%s\": %s\n" msgstr "%s: não pôde escrever no arquivo \"%s\": %s\n" -#: pg_basebackup.c:815 pg_basebackup.c:836 pg_basebackup.c:864 +#: pg_basebackup.c:817 pg_basebackup.c:838 pg_basebackup.c:866 #, c-format msgid "%s: could not set compression level %d: %s\n" msgstr "%s: não pôde definir nível de compressão %d: %s\n" -#: pg_basebackup.c:885 +#: pg_basebackup.c:887 #, c-format msgid "%s: could not create compressed file \"%s\": %s\n" msgstr "%s: não pôde criar arquivo comprimido \"%s\": %s\n" -#: pg_basebackup.c:896 pg_basebackup.c:1317 pg_basebackup.c:1575 +#: pg_basebackup.c:898 pg_basebackup.c:1319 pg_basebackup.c:1577 #, c-format msgid "%s: could not create file \"%s\": %s\n" msgstr "%s: não pôde criar arquivo \"%s\": %s\n" -#: pg_basebackup.c:908 pg_basebackup.c:1172 +#: pg_basebackup.c:910 pg_basebackup.c:1174 #, c-format msgid "%s: could not get COPY data stream: %s" msgstr "%s: não pôde obter fluxo de dados do COPY: %s" -#: pg_basebackup.c:965 +#: pg_basebackup.c:967 #, c-format msgid "%s: could not close compressed file \"%s\": %s\n" msgstr "%s: não pôde fechar arquivo comprimido \"%s\": %s\n" -#: pg_basebackup.c:978 pg_recvlogical.c:577 receivelog.c:203 receivelog.c:351 -#: receivelog.c:738 +#: pg_basebackup.c:980 pg_recvlogical.c:580 receivelog.c:206 receivelog.c:354 +#: receivelog.c:743 #, c-format msgid "%s: could not close file \"%s\": %s\n" msgstr "%s: não pôde fechar arquivo \"%s\": %s\n" -#: pg_basebackup.c:989 pg_basebackup.c:1201 pg_recvlogical.c:443 -#: receivelog.c:1019 +#: pg_basebackup.c:991 pg_basebackup.c:1203 pg_recvlogical.c:446 +#: receivelog.c:1024 #, c-format msgid "%s: could not read COPY data: %s" msgstr "%s: não pôde ler dados do COPY: %s" -#: pg_basebackup.c:1215 +#: pg_basebackup.c:1217 #, c-format msgid "%s: invalid tar block header size: %d\n" msgstr "%s: tamanho do cabeçalho do bloco tar é inválido: %d\n" -#: pg_basebackup.c:1271 +#: pg_basebackup.c:1273 #, c-format msgid "%s: could not set permissions on directory \"%s\": %s\n" msgstr "%s: não pôde definir permissões no diretório \"%s\": %s\n" -#: pg_basebackup.c:1295 +#: pg_basebackup.c:1297 #, c-format msgid "%s: could not create symbolic link from \"%s\" to \"%s\": %s\n" msgstr "%s: não pôde criar link simbólico de \"%s\" para \"%s\": %s\n" -#: pg_basebackup.c:1304 +#: pg_basebackup.c:1306 #, c-format msgid "%s: unrecognized link indicator \"%c\"\n" msgstr "%s: indicador de link \"%c\" desconhecido\n" -#: pg_basebackup.c:1324 +#: pg_basebackup.c:1326 #, c-format msgid "%s: could not set permissions on file \"%s\": %s\n" msgstr "%s: não pôde definir permissões no arquivo \"%s\": %s\n" -#: pg_basebackup.c:1383 +#: pg_basebackup.c:1385 #, c-format msgid "%s: COPY stream ended before last file was finished\n" msgstr "%s: fluxo do COPY terminou antes que o último arquivo estivesse completo\n" -#: pg_basebackup.c:1469 pg_basebackup.c:1489 pg_basebackup.c:1496 -#: pg_basebackup.c:1550 +#: pg_basebackup.c:1471 pg_basebackup.c:1491 pg_basebackup.c:1498 +#: pg_basebackup.c:1552 #, c-format msgid "%s: out of memory\n" msgstr "%s: sem memória\n" -#: pg_basebackup.c:1627 +#: pg_basebackup.c:1629 #, c-format msgid "%s: incompatible server version %s\n" msgstr "%s: versão do servidor %s é incompatível\n" -#: pg_basebackup.c:1674 pg_recvlogical.c:261 receivelog.c:536 receivelog.c:587 -#: receivelog.c:627 streamutil.c:263 streamutil.c:367 streamutil.c:413 +#: pg_basebackup.c:1666 +#, c-format +msgid "%s: initiating base backup, waiting for checkpoint to complete\n" +msgstr "%s: iniciando cópia de segurança base, esperando concluir o ponto de controle\n" + +#: pg_basebackup.c:1684 pg_recvlogical.c:264 receivelog.c:541 receivelog.c:592 +#: receivelog.c:632 streamutil.c:263 streamutil.c:367 streamutil.c:413 #, c-format msgid "%s: could not send replication command \"%s\": %s" msgstr "%s: não pôde enviar comando de replicação \"%s\": %s" -#: pg_basebackup.c:1685 +#: pg_basebackup.c:1695 #, c-format msgid "%s: could not initiate base backup: %s" msgstr "%s: não pôde inicializar cópia de segurança base: %s" -#: pg_basebackup.c:1692 +#: pg_basebackup.c:1702 #, c-format msgid "%s: server returned unexpected response to BASE_BACKUP command; got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: servidor retornou resposta inesperada para comando BASE_BACKUP; recebeu %d registros e %d campos, esperado %d registros e %d campos\n" -#: pg_basebackup.c:1712 +#: pg_basebackup.c:1710 +#, c-format +msgid "%s: checkpoint completed\n" +msgstr "%s: ponto de controle concluído\n" + +#: pg_basebackup.c:1725 #, c-format msgid "transaction log start point: %s on timeline %u\n" msgstr "ponto de início do log de transação: %s na linha do tempo %u\n" -#: pg_basebackup.c:1721 +#: pg_basebackup.c:1734 #, c-format msgid "%s: could not get backup header: %s" msgstr "%s: não pôde obter cabeçalho da cópia de segurança: %s" -#: pg_basebackup.c:1727 +#: pg_basebackup.c:1740 #, c-format msgid "%s: no data returned from server\n" msgstr "%s: nenhum dado foi retornado do servidor\n" -#: pg_basebackup.c:1759 +#: pg_basebackup.c:1772 #, c-format msgid "%s: can only write single tablespace to stdout, database has %d\n" msgstr "%s: só pode escrever uma tablespace para saída padrão, banco de dados tem %d\n" -#: pg_basebackup.c:1771 +#: pg_basebackup.c:1784 #, c-format msgid "%s: starting background WAL receiver\n" msgstr "%s: iniciando receptor do WAL em segundo plano\n" -#: pg_basebackup.c:1802 +#: pg_basebackup.c:1815 #, c-format msgid "%s: could not get transaction log end position from server: %s" msgstr "%s: não pôde obter posição final do log de transação do servidor: %s" -#: pg_basebackup.c:1809 +#: pg_basebackup.c:1822 #, c-format msgid "%s: no transaction log end position returned from server\n" msgstr "%s: nenhuma posição final do log de transação foi retornada do servidor\n" -#: pg_basebackup.c:1821 +#: pg_basebackup.c:1834 #, c-format msgid "%s: final receive failed: %s" msgstr "%s: recepção final falhou: %s" -#: pg_basebackup.c:1845 +#: pg_basebackup.c:1858 #, c-format msgid "%s: waiting for background process to finish streaming ...\n" msgstr "%s: esperando processo em segundo plano terminar o envio ...\n" -#: pg_basebackup.c:1851 +#: pg_basebackup.c:1864 #, c-format msgid "%s: could not send command to background pipe: %s\n" msgstr "%s: não pôde enviar comando para pipe em segundo plano: %s\n" -#: pg_basebackup.c:1860 +#: pg_basebackup.c:1873 #, c-format msgid "%s: could not wait for child process: %s\n" msgstr "%s: não pôde esperar por processo filho: %s\n" -#: pg_basebackup.c:1866 +#: pg_basebackup.c:1879 #, c-format msgid "%s: child %d died, expected %d\n" msgstr "%s: processo filho %d morreu, esperado %d\n" -#: pg_basebackup.c:1872 +#: pg_basebackup.c:1885 #, c-format msgid "%s: child process did not exit normally\n" msgstr "%s: processo filho não terminou normalmente\n" -#: pg_basebackup.c:1878 +#: pg_basebackup.c:1891 #, c-format msgid "%s: child process exited with error %d\n" msgstr "%s: processo filho terminou com código de saída %d\n" -#: pg_basebackup.c:1905 +#: pg_basebackup.c:1918 #, c-format msgid "%s: could not wait for child thread: %s\n" msgstr "%s: não pôde esperar por thread filho: %s\n" -#: pg_basebackup.c:1912 +#: pg_basebackup.c:1925 #, c-format msgid "%s: could not get child thread exit status: %s\n" msgstr "%s: não pôde obter status de saída de thread filho: %s\n" -#: pg_basebackup.c:1918 +#: pg_basebackup.c:1931 #, c-format msgid "%s: child thread exited with error %u\n" msgstr "%s: thread filho terminou com erro %u\n" -#: pg_basebackup.c:2008 +#: pg_basebackup.c:2021 #, c-format msgid "%s: invalid output format \"%s\", must be \"plain\" or \"tar\"\n" msgstr "%s: formato de saída \"%s\" é inválido, deve ser \"plain\" ou \"tar\"\n" -#: pg_basebackup.c:2029 pg_basebackup.c:2041 +#: pg_basebackup.c:2042 pg_basebackup.c:2054 #, c-format msgid "%s: cannot specify both --xlog and --xlog-method\n" msgstr "%s: não pode especificar ambas opções --xlog e --xlog-method\n" -#: pg_basebackup.c:2056 +#: pg_basebackup.c:2069 #, c-format msgid "%s: invalid xlog-method option \"%s\", must be \"fetch\" or \"stream\"\n" msgstr "%s: opção de xlog-method \"%s\" é inválida, deve ser \"fetch\" ou \"stream\"\n" -#: pg_basebackup.c:2078 +#: pg_basebackup.c:2091 #, c-format msgid "%s: invalid compression level \"%s\"\n" msgstr "%s: nível de compressão \"%s\" é inválido\n" -#: pg_basebackup.c:2090 +#: pg_basebackup.c:2103 #, c-format msgid "%s: invalid checkpoint argument \"%s\", must be \"fast\" or \"spread\"\n" msgstr "%s: argumento de ponto de controle \"%s\" é inválido, deve ser \"fast\" ou \"spread\"\n" -#: pg_basebackup.c:2117 pg_receivexlog.c:445 pg_recvlogical.c:760 +#: pg_basebackup.c:2130 pg_receivexlog.c:445 pg_recvlogical.c:763 #, c-format msgid "%s: invalid status interval \"%s\"\n" msgstr "%s: intervalo do status \"%s\" é inválido\n" -#: pg_basebackup.c:2133 pg_basebackup.c:2147 pg_basebackup.c:2158 -#: pg_basebackup.c:2171 pg_basebackup.c:2181 pg_basebackup.c:2191 -#: pg_basebackup.c:2203 pg_basebackup.c:2214 pg_receivexlog.c:477 +#: pg_basebackup.c:2146 pg_basebackup.c:2160 pg_basebackup.c:2171 +#: pg_basebackup.c:2184 pg_basebackup.c:2194 pg_basebackup.c:2204 +#: pg_basebackup.c:2216 pg_basebackup.c:2227 pg_receivexlog.c:477 #: pg_receivexlog.c:491 pg_receivexlog.c:499 pg_receivexlog.c:509 -#: pg_receivexlog.c:520 pg_recvlogical.c:787 pg_recvlogical.c:801 -#: pg_recvlogical.c:812 pg_recvlogical.c:820 pg_recvlogical.c:828 -#: pg_recvlogical.c:836 pg_recvlogical.c:844 pg_recvlogical.c:852 +#: pg_receivexlog.c:520 pg_recvlogical.c:790 pg_recvlogical.c:804 +#: pg_recvlogical.c:815 pg_recvlogical.c:823 pg_recvlogical.c:831 +#: pg_recvlogical.c:839 pg_recvlogical.c:847 pg_recvlogical.c:855 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Tente \"%s --help\" para obter informações adicionais.\n" -#: pg_basebackup.c:2145 pg_receivexlog.c:489 pg_recvlogical.c:799 +#: pg_basebackup.c:2158 pg_receivexlog.c:489 pg_recvlogical.c:802 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: muitos argumentos de linha de comando (primeiro é \"%s\")\n" -#: pg_basebackup.c:2157 pg_receivexlog.c:519 +#: pg_basebackup.c:2170 pg_receivexlog.c:519 #, c-format msgid "%s: no target directory specified\n" msgstr "%s: nenhum diretório de destino foi especificado\n" -#: pg_basebackup.c:2169 +#: pg_basebackup.c:2182 #, c-format msgid "%s: only tar mode backups can be compressed\n" msgstr "%s: somente cópias de segurança com modo tar podem ser comprimidas\n" -#: pg_basebackup.c:2179 +#: pg_basebackup.c:2192 #, c-format msgid "%s: WAL streaming can only be used in plain mode\n" msgstr "%s: envio do WAL só pode ser utilizado no modo plain\n" -#: pg_basebackup.c:2189 +#: pg_basebackup.c:2202 #, c-format msgid "%s: replication slots can only be used with WAL streaming\n" msgstr "%s: entradas de replicação só podem ser utilizadas com envio do WAL\n" -#: pg_basebackup.c:2201 +#: pg_basebackup.c:2214 #, c-format msgid "%s: transaction log directory location can only be specified in plain mode\n" msgstr "%s: diretório do log de transação só pode ser especificado no modo plain\n" -#: pg_basebackup.c:2212 +#: pg_basebackup.c:2225 #, c-format msgid "%s: transaction log directory location must be an absolute path\n" msgstr "%s: diretório do log de transação deve ter um caminho absoluto\n" -#: pg_basebackup.c:2224 +#: pg_basebackup.c:2237 #, c-format msgid "%s: this build does not support compression\n" msgstr "%s: esse programa binário não suporta compressão\n" -#: pg_basebackup.c:2251 +#: pg_basebackup.c:2264 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" msgstr "%s: não pôde criar link simbólico \"%s\": %s\n" -#: pg_basebackup.c:2256 +#: pg_basebackup.c:2269 #, c-format msgid "%s: symlinks are not supported on this platform\n" msgstr "%s: links simbólicos não são suportados nessa plataforma\n" @@ -633,7 +643,7 @@ msgstr "" "%s recebe fluxo de logs de transação do PostgreSQL.\n" "\n" -#: pg_receivexlog.c:68 pg_recvlogical.c:75 +#: pg_receivexlog.c:68 pg_recvlogical.c:78 #, c-format msgid "" "\n" @@ -647,17 +657,17 @@ msgstr "" msgid " -D, --directory=DIR receive transaction log files into this directory\n" msgstr " -D, --directory=DIR recebe arquivos de log de transação neste diretório\n" -#: pg_receivexlog.c:70 pg_recvlogical.c:79 +#: pg_receivexlog.c:70 pg_recvlogical.c:82 #, c-format msgid " --if-not-exists do not error if slot already exists when creating a slot\n" msgstr " --if-not-exists não emite erro se a entrada já existe ao criar uma entrada\n" -#: pg_receivexlog.c:71 pg_recvlogical.c:81 +#: pg_receivexlog.c:71 pg_recvlogical.c:84 #, c-format msgid " -n, --no-loop do not loop on connection lost\n" msgstr " -n, --no-loop não tentar novamente ao perder a conexão\n" -#: pg_receivexlog.c:72 pg_recvlogical.c:86 +#: pg_receivexlog.c:72 pg_recvlogical.c:89 #, c-format msgid "" " -s, --status-interval=SECS\n" @@ -680,12 +690,12 @@ msgstr "" "\n" "Ações opcionais:\n" -#: pg_receivexlog.c:87 pg_recvlogical.c:72 +#: pg_receivexlog.c:87 pg_recvlogical.c:75 #, c-format msgid " --create-slot create a new replication slot (for the slot's name see --slot)\n" msgstr " --create-slot cria uma nova entrada de replicação (para nome da entrada veja --slot)\n" -#: pg_receivexlog.c:88 pg_recvlogical.c:73 +#: pg_receivexlog.c:88 pg_recvlogical.c:76 #, c-format msgid " --drop-slot drop the replication slot (for the slot's name see --slot)\n" msgstr " --drop-slot remove a entrada de replicação (para nome da entrada veja --slot)\n" @@ -715,7 +725,7 @@ msgstr "%s: não pôde abrir diretório \"%s\": %s\n" msgid "%s: could not close directory \"%s\": %s\n" msgstr "%s: não pôde fechar diretório \"%s\": %s\n" -#: pg_receivexlog.c:218 pg_recvlogical.c:343 +#: pg_receivexlog.c:218 pg_recvlogical.c:346 #, c-format msgid "%s: could not stat file \"%s\": %s\n" msgstr "%s: não pôde executar stat no arquivo \"%s\": %s\n" @@ -735,7 +745,7 @@ msgstr "%s: não pôde ler diretório \"%s\": %s\n" msgid "%s: starting log streaming at %X/%X (timeline %u)\n" msgstr "%s: iniciando fluxo de log em %X/%X (linha do tempo %u)\n" -#: pg_receivexlog.c:426 pg_recvlogical.c:707 +#: pg_receivexlog.c:426 pg_recvlogical.c:710 #, c-format msgid "%s: invalid port number \"%s\"\n" msgstr "%s: número de porta inválido: \"%s\"\n" @@ -756,28 +766,28 @@ msgstr "%s: %s precisa que uma entrada seja especificada utilizando --slot\n" msgid "%s: replication connection using slot \"%s\" is unexpectedly database specific\n" msgstr "%s: conexão de replicação utilizando entrada \"%s\" é inesperadamente específica a um banco de dados\n" -#: pg_receivexlog.c:574 pg_recvlogical.c:892 +#: pg_receivexlog.c:574 pg_recvlogical.c:895 #, c-format msgid "%s: dropping replication slot \"%s\"\n" msgstr "%s: removendo entrada de replicação \"%s\"\n" -#: pg_receivexlog.c:587 pg_recvlogical.c:904 +#: pg_receivexlog.c:587 pg_recvlogical.c:907 #, c-format msgid "%s: creating replication slot \"%s\"\n" msgstr "%s: criando entrada de replicação \"%s\"\n" -#: pg_receivexlog.c:614 pg_recvlogical.c:930 +#: pg_receivexlog.c:614 pg_recvlogical.c:933 #, c-format msgid "%s: disconnected\n" msgstr "%s: desconectado\n" #. translator: check source for value for %d -#: pg_receivexlog.c:621 pg_recvlogical.c:937 +#: pg_receivexlog.c:621 pg_recvlogical.c:940 #, c-format msgid "%s: disconnected; waiting %d seconds to try again\n" msgstr "%s: desconectado; esperando %d segundos para tentar novamente\n" -#: pg_recvlogical.c:67 +#: pg_recvlogical.c:70 #, c-format msgid "" "%s controls PostgreSQL logical decoding streams.\n" @@ -786,7 +796,7 @@ msgstr "" "%s controla fluxos de replicação lógica do PostgreSQL.\n" "\n" -#: pg_recvlogical.c:71 +#: pg_recvlogical.c:74 #, c-format msgid "" "\n" @@ -795,17 +805,17 @@ msgstr "" "\n" "Ação a ser executada:\n" -#: pg_recvlogical.c:74 +#: pg_recvlogical.c:77 #, c-format msgid " --start start streaming in a replication slot (for the slot's name see --slot)\n" msgstr " --start inicia fluxo na entrada de replicação (para nome da entrada veja --slot)\n" -#: pg_recvlogical.c:76 +#: pg_recvlogical.c:79 #, c-format msgid " -f, --file=FILE receive log into this file, - for stdout\n" msgstr " -f, --file=ARQUIVO recebe log neste arquivo, - para saída padrão\n" -#: pg_recvlogical.c:77 +#: pg_recvlogical.c:80 #, c-format msgid "" " -F --fsync-interval=SECS\n" @@ -814,12 +824,12 @@ msgstr "" " -F, --fsync-interval=SEGS\n" " tempo entre fsyncs no arquivo de saída (padrão: %d)\n" -#: pg_recvlogical.c:80 +#: pg_recvlogical.c:83 #, c-format msgid " -I, --startpos=LSN where in an existing slot should the streaming start\n" msgstr " -I, --startpos=LSN onde o fluxo deve iniciar na entrada existente\n" -#: pg_recvlogical.c:82 +#: pg_recvlogical.c:85 #, c-format msgid "" " -o, --option=NAME[=VALUE]\n" @@ -830,279 +840,279 @@ msgstr "" " passa opção NOME com valor opcional VALOR para o\n" " plugin de saída\n" -#: pg_recvlogical.c:85 +#: pg_recvlogical.c:88 #, c-format msgid " -P, --plugin=PLUGIN use output plugin PLUGIN (default: %s)\n" msgstr " -P, --plugin=PLUGIN utiliza o plugin de saída PLUGIN (padrão: %s)\n" -#: pg_recvlogical.c:88 +#: pg_recvlogical.c:91 #, c-format msgid " -S, --slot=SLOTNAME name of the logical replication slot\n" msgstr " -S, --slot=NOME nome da entrada de replicação lógica\n" -#: pg_recvlogical.c:93 +#: pg_recvlogical.c:96 #, c-format msgid " -d, --dbname=DBNAME database to connect to\n" msgstr " -d, --dbname=NOMEBD banco de dados ao qual quer se conectar\n" -#: pg_recvlogical.c:126 +#: pg_recvlogical.c:129 #, c-format msgid "%s: confirming write up to %X/%X, flush to %X/%X (slot %s)\n" msgstr "%s: confirmando escrita até %X/%X, escrita no disco até %X/%X (entrada %s)\n" -#: pg_recvlogical.c:151 receivelog.c:404 +#: pg_recvlogical.c:154 receivelog.c:407 #, c-format msgid "%s: could not send feedback packet: %s" msgstr "%s: não pôde enviar pacote de retorno: %s" -#: pg_recvlogical.c:190 +#: pg_recvlogical.c:193 #, c-format msgid "%s: could not fsync log file \"%s\": %s\n" msgstr "%s: não pôde executar fsync no arquivo de log \"%s\": %s\n" -#: pg_recvlogical.c:229 +#: pg_recvlogical.c:232 #, c-format msgid "%s: starting log streaming at %X/%X (slot %s)\n" msgstr "%s: iniciando fluxo de log em %X/%X (entrada %s)\n" -#: pg_recvlogical.c:271 +#: pg_recvlogical.c:274 #, c-format msgid "%s: streaming initiated\n" msgstr "%s: fluxo iniciado\n" -#: pg_recvlogical.c:336 +#: pg_recvlogical.c:339 #, c-format msgid "%s: could not open log file \"%s\": %s\n" msgstr "%s: não pôde abrir arquivo de log \"%s\": %s\n" -#: pg_recvlogical.c:366 receivelog.c:933 +#: pg_recvlogical.c:369 receivelog.c:938 #, c-format msgid "%s: invalid socket: %s" msgstr "%s: soquete inválido: %s" -#: pg_recvlogical.c:420 receivelog.c:955 +#: pg_recvlogical.c:423 receivelog.c:960 #, c-format msgid "%s: select() failed: %s\n" msgstr "%s: select() falhou: %s\n" -#: pg_recvlogical.c:429 receivelog.c:1005 +#: pg_recvlogical.c:432 receivelog.c:1010 #, c-format msgid "%s: could not receive data from WAL stream: %s" msgstr "%s: não pôde receber dados do fluxo do WAL: %s" -#: pg_recvlogical.c:470 pg_recvlogical.c:509 receivelog.c:1050 -#: receivelog.c:1117 +#: pg_recvlogical.c:473 pg_recvlogical.c:512 receivelog.c:1055 +#: receivelog.c:1122 #, c-format msgid "%s: streaming header too small: %d\n" msgstr "%s: cabeçalho de fluxo muito pequeno: %d\n" -#: pg_recvlogical.c:492 receivelog.c:898 +#: pg_recvlogical.c:495 receivelog.c:903 #, c-format msgid "%s: unrecognized streaming header: \"%c\"\n" msgstr "%s: cabeçalho de fluxo desconhecido: \"%c\"\n" -#: pg_recvlogical.c:538 pg_recvlogical.c:552 +#: pg_recvlogical.c:541 pg_recvlogical.c:555 #, c-format msgid "%s: could not write %u bytes to log file \"%s\": %s\n" msgstr "%s: não pôde escrever %u bytes no arquivo de log \"%s\": %s\n" -#: pg_recvlogical.c:563 receivelog.c:691 receivelog.c:729 +#: pg_recvlogical.c:566 receivelog.c:696 receivelog.c:734 #, c-format msgid "%s: unexpected termination of replication stream: %s" msgstr "%s: término inesperado do fluxo de replicação: %s" -#: pg_recvlogical.c:686 +#: pg_recvlogical.c:689 #, c-format msgid "%s: invalid fsync interval \"%s\"\n" msgstr "%s: intervalo de fsync \"%s\" é inválido\n" -#: pg_recvlogical.c:727 +#: pg_recvlogical.c:730 #, c-format msgid "%s: could not parse start position \"%s\"\n" msgstr "%s: não pôde validar posição inicial \"%s\"\n" -#: pg_recvlogical.c:811 +#: pg_recvlogical.c:814 #, c-format msgid "%s: no slot specified\n" msgstr "%s: nenhuma entrada especificada\n" -#: pg_recvlogical.c:819 +#: pg_recvlogical.c:822 #, c-format msgid "%s: no target file specified\n" msgstr "%s: nenhum arquivo de destino foi especificado\n" -#: pg_recvlogical.c:827 +#: pg_recvlogical.c:830 #, c-format msgid "%s: no database specified\n" msgstr "%s: nenhum banco de dados especificado\n" -#: pg_recvlogical.c:835 +#: pg_recvlogical.c:838 #, c-format msgid "%s: at least one action needs to be specified\n" msgstr "%s: pelo menos uma ação precisa ser especificada\n" -#: pg_recvlogical.c:843 +#: pg_recvlogical.c:846 #, c-format msgid "%s: cannot use --create-slot or --start together with --drop-slot\n" msgstr "%s: não pode utilizar --create-slot ou --start junto com --drop-slot\n" -#: pg_recvlogical.c:851 +#: pg_recvlogical.c:854 #, c-format msgid "%s: cannot use --create-slot or --drop-slot together with --startpos\n" msgstr "%s: não pode utilizar --create-slot ou --drop-slot junto com --startpos\n" -#: pg_recvlogical.c:882 +#: pg_recvlogical.c:885 #, c-format msgid "%s: could not establish database-specific replication connection\n" msgstr "%s: não pôde estabelecer conexão de replicação a um banco de dados específico\n" -#: receivelog.c:66 +#: receivelog.c:69 #, c-format msgid "%s: could not create archive status file \"%s\": %s\n" msgstr "%s: não pôde criar arquivo de status do arquivador \"%s\": %s\n" -#: receivelog.c:73 receivelog.c:196 receivelog.c:344 receivelog.c:828 -#: receivelog.c:1071 +#: receivelog.c:76 receivelog.c:199 receivelog.c:347 receivelog.c:833 +#: receivelog.c:1076 #, c-format msgid "%s: could not fsync file \"%s\": %s\n" msgstr "%s: não pôde executar fsync no arquivo \"%s\": %s\n" -#: receivelog.c:111 +#: receivelog.c:114 #, c-format msgid "%s: could not open transaction log file \"%s\": %s\n" msgstr "%s: não pôde abrir arquivo de log de transação \"%s\": %s\n" -#: receivelog.c:123 +#: receivelog.c:126 #, c-format msgid "%s: could not stat transaction log file \"%s\": %s\n" msgstr "%s: não pôde executar stat no arquivo de log de transação \"%s\": %s\n" -#: receivelog.c:137 +#: receivelog.c:140 #, c-format msgid "%s: transaction log file \"%s\" has %d bytes, should be 0 or %d\n" msgstr "%s: arquivo de log de transação \"%s\" tem %d bytes, deveria ser 0 ou %d\n" -#: receivelog.c:150 +#: receivelog.c:153 #, c-format msgid "%s: could not pad transaction log file \"%s\": %s\n" msgstr "%s: não pôde preencher arquivo de log de transação \"%s\": %s\n" -#: receivelog.c:163 +#: receivelog.c:166 #, c-format msgid "%s: could not seek to beginning of transaction log file \"%s\": %s\n" msgstr "%s: não pôde buscar início do arquivo de log de transação \"%s\": %s\n" -#: receivelog.c:189 +#: receivelog.c:192 #, c-format msgid "%s: could not determine seek position in file \"%s\": %s\n" msgstr "%s: não pôde determinar posição de busca no arquivo \"%s\": %s\n" -#: receivelog.c:222 +#: receivelog.c:225 #, c-format msgid "%s: could not rename file \"%s\": %s\n" msgstr "%s: não pôde renomear arquivo \"%s\": %s\n" -#: receivelog.c:229 +#: receivelog.c:232 #, c-format msgid "%s: not renaming \"%s%s\", segment is not complete\n" msgstr "%s: não renomeará \"%s%s\", segmento não está completo\n" -#: receivelog.c:275 +#: receivelog.c:278 #, c-format msgid "%s: could not open timeline history file \"%s\": %s\n" msgstr "%s: não pôde abrir arquivo de histórico da linha do tempo \"%s\": %s\n" -#: receivelog.c:302 +#: receivelog.c:305 #, c-format msgid "%s: server reported unexpected history file name for timeline %u: %s\n" msgstr "%s: servidor relatou nome de arquivo de histórico inesperado para linha do tempo %u: %s\n" -#: receivelog.c:319 +#: receivelog.c:322 #, c-format msgid "%s: could not create timeline history file \"%s\": %s\n" msgstr "%s: não pôde criar arquivo de histórico da linha do tempo \"%s\": %s\n" -#: receivelog.c:336 +#: receivelog.c:339 #, c-format msgid "%s: could not write timeline history file \"%s\": %s\n" msgstr "%s: não pôde escrever no arquivo de histórico da linha do tempo \"%s\": %s\n" -#: receivelog.c:361 +#: receivelog.c:364 #, c-format msgid "%s: could not rename file \"%s\" to \"%s\": %s\n" msgstr "%s: não pôde renomear arquivo \"%s\" para \"%s\": %s\n" -#: receivelog.c:438 +#: receivelog.c:441 #, c-format msgid "%s: incompatible server version %s; client does not support streaming from server versions older than %s\n" msgstr "%s: versão do servidor %s é incompatível; cliente não suporta fluxo de versões do servidor mais antigas do que %s\n" -#: receivelog.c:448 +#: receivelog.c:451 #, c-format msgid "%s: incompatible server version %s; client does not support streaming from server versions newer than %s\n" msgstr "%s: versão do servidor %s é incompatível; cliente não suporta fluxo de versões do servidor mais novas do que %s\n" -#: receivelog.c:544 streamutil.c:272 streamutil.c:311 +#: receivelog.c:549 streamutil.c:272 streamutil.c:311 #, c-format msgid "%s: could not identify system: got %d rows and %d fields, expected %d rows and %d or more fields\n" msgstr "%s: não pôde identificar sistema: recebeu %d registros e %d campos, esperado %d registros e %d ou mais campos\n" -#: receivelog.c:552 +#: receivelog.c:557 #, c-format msgid "%s: system identifier does not match between base backup and streaming connection\n" msgstr "%s: identificador do sistema não corresponde entre cópia base e conexão de envio do WAL\n" -#: receivelog.c:560 +#: receivelog.c:565 #, c-format msgid "%s: starting timeline %u is not present in the server\n" msgstr "%s: linha do tempo inicial %u não está presente no servidor\n" -#: receivelog.c:600 +#: receivelog.c:605 #, c-format msgid "%s: unexpected response to TIMELINE_HISTORY command: got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: resposta inesperada para comando TIMELINE_HISTORY: recebeu %d registros e %d campos, esperado %d registros e %d campos\n" -#: receivelog.c:672 +#: receivelog.c:677 #, c-format msgid "%s: server reported unexpected next timeline %u, following timeline %u\n" msgstr "%s: servidor relatou próxima linha do tempo %u inesperada, seguindo linha do tempo %u\n" -#: receivelog.c:679 +#: receivelog.c:684 #, c-format msgid "%s: server stopped streaming timeline %u at %X/%X, but reported next timeline %u to begin at %X/%X\n" msgstr "%s: servidor parou de enviar linha do tempo %u em %X/%X, mas relatou próxima linha do tempo %u começando em %X/%X\n" -#: receivelog.c:720 +#: receivelog.c:725 #, c-format msgid "%s: replication stream was terminated before stop point\n" msgstr "%s: fluxo de replicação foi terminado antes do ponto de parada\n" -#: receivelog.c:769 +#: receivelog.c:774 #, c-format msgid "%s: unexpected result set after end-of-timeline: got %d rows and %d fields, expected %d rows and %d fields\n" msgstr "%s: conjunto de resultados inesperado após fim da linha do tempo: recebeu %d registros e %d campos, esperado %d registros e %d campos\n" -#: receivelog.c:779 +#: receivelog.c:784 #, c-format msgid "%s: could not parse next timeline's starting point \"%s\"\n" msgstr "%s: não pôde validar ponto de partida da próxima linha do tempo \"%s\"\n" -#: receivelog.c:1136 +#: receivelog.c:1141 #, c-format msgid "%s: received transaction log record for offset %u with no file open\n" msgstr "%s: recebeu registro do log de transação para posição %u sem um arquivo aberto\n" -#: receivelog.c:1148 +#: receivelog.c:1153 #, c-format msgid "%s: got WAL data offset %08x, expected %08x\n" msgstr "%s: recebeu dados do WAL da posição %08x, esperada %08x\n" -#: receivelog.c:1184 +#: receivelog.c:1189 #, c-format msgid "%s: could not write %u bytes to WAL file \"%s\": %s\n" msgstr "%s: não pôde escrever %u bytes no arquivo do WAL \"%s\": %s\n" -#: receivelog.c:1209 receivelog.c:1250 receivelog.c:1281 +#: receivelog.c:1214 receivelog.c:1255 receivelog.c:1286 #, c-format msgid "%s: could not send copy-end packet: %s" msgstr "%s: não pôde enviar pacote indicando fim de cópia: %s" diff --git a/src/bin/pg_basebackup/po/ru.po b/src/bin/pg_basebackup/po/ru.po index feb8d64331..db7a1923a9 100644 --- a/src/bin/pg_basebackup/po/ru.po +++ b/src/bin/pg_basebackup/po/ru.po @@ -1,14 +1,14 @@ # Russian message translation file for pg_basebackup # Copyright (C) 2012-2016 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Alexander Lakhin , 2012-2016. +# Alexander Lakhin , 2012-2017. # msgid "" msgstr "" "Project-Id-Version: pg_basebackup (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-20 18:14+0000\n" -"PO-Revision-Date: 2016-09-20 12:00+0300\n" +"POT-Creation-Date: 2017-08-17 17:52+0000\n" +"PO-Revision-Date: 2017-05-27 16:06+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -29,17 +29,17 @@ msgstr "нехватка памÑти\n" msgid "cannot duplicate null pointer (internal error)\n" msgstr "попытка Ð´ÑƒÐ±Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð³Ð¾ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ (внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°)\n" -#: pg_basebackup.c:154 +#: pg_basebackup.c:156 #, c-format msgid "%s: directory name too long\n" msgstr "%s: Ñлишком длинное Ð¸Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°\n" -#: pg_basebackup.c:164 +#: pg_basebackup.c:166 #, c-format msgid "%s: multiple \"=\" signs in tablespace mapping\n" msgstr "%s: неÑколько знаков \"=\" в ÑопоÑтавлении табличного проÑтранÑтва\n" -#: pg_basebackup.c:177 +#: pg_basebackup.c:179 #, c-format msgid "" "%s: invalid tablespace mapping format \"%s\", must be \"OLDDIR=NEWDIR\"\n" @@ -47,21 +47,21 @@ msgstr "" "%s: ÑопоÑтавление табл. проÑтранÑтва запиÑано неверно: \"%s\", должно быть " "\"СТÐРЫЙ_КÐТÐЛОГ=ÐОВЫЙ_КÐТÐЛОГ\"\n" -#: pg_basebackup.c:190 +#: pg_basebackup.c:192 #, c-format msgid "%s: old directory is not an absolute path in tablespace mapping: %s\n" msgstr "" "%s: Ñтарый каталог в ÑопоÑтавлении табл. проÑтранÑтва задан не абÑолютным " "путём: %s\n" -#: pg_basebackup.c:197 +#: pg_basebackup.c:199 #, c-format msgid "%s: new directory is not an absolute path in tablespace mapping: %s\n" msgstr "" "%s: новый каталог в ÑопоÑтавлении табл. проÑтранÑтва задан не абÑолютным " "путём: %s\n" -#: pg_basebackup.c:231 +#: pg_basebackup.c:233 #, c-format msgid "" "%s takes a base backup of a running PostgreSQL server.\n" @@ -70,17 +70,17 @@ msgstr "" "%s делает базовую резервную копию работающего Ñервера PostgreSQL.\n" "\n" -#: pg_basebackup.c:233 pg_receivexlog.c:66 pg_recvlogical.c:69 +#: pg_basebackup.c:235 pg_receivexlog.c:66 pg_recvlogical.c:72 #, c-format msgid "Usage:\n" msgstr "ИÑпользование:\n" -#: pg_basebackup.c:234 pg_receivexlog.c:67 pg_recvlogical.c:70 +#: pg_basebackup.c:236 pg_receivexlog.c:67 pg_recvlogical.c:73 #, c-format msgid " %s [OPTION]...\n" msgstr " %s [ПÐРÐМЕТР]...\n" -#: pg_basebackup.c:235 +#: pg_basebackup.c:237 #, c-format msgid "" "\n" @@ -89,19 +89,19 @@ msgstr "" "\n" "Параметры, управлÑющие выводом:\n" -#: pg_basebackup.c:236 +#: pg_basebackup.c:238 #, c-format msgid " -D, --pgdata=DIRECTORY receive base backup into directory\n" msgstr " -D, --pgdata=КÐТÐЛОГ Ñохранить базовую копию в указанный каталог\n" -#: pg_basebackup.c:237 +#: pg_basebackup.c:239 #, c-format msgid " -F, --format=p|t output format (plain (default), tar)\n" msgstr "" " -F, --format=p|t формат вывода (p (по умолчанию) - проÑтой, t - " "tar)\n" -#: pg_basebackup.c:238 +#: pg_basebackup.c:240 #, c-format msgid "" " -r, --max-rate=RATE maximum transfer rate to transfer data directory\n" @@ -110,21 +110,21 @@ msgstr "" " -r, --max-rate=СКОРОСТЬ макÑ. ÑкороÑть передачи данных в целевой каталог\n" " (в КБ/Ñ, либо добавьте ÑÑƒÑ„Ñ„Ð¸ÐºÑ \"k\" или \"M\")\n" -#: pg_basebackup.c:240 +#: pg_basebackup.c:242 #, c-format msgid "" " -R, --write-recovery-conf\n" -" write recovery.conf after backup\n" +" write recovery.conf for replication\n" msgstr "" " -R, --write-recovery-conf\n" -" запиÑать recovery.conf поÑле копированиÑ\n" +" запиÑать recovery.conf Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸\n" -#: pg_basebackup.c:242 pg_receivexlog.c:74 +#: pg_basebackup.c:244 pg_receivexlog.c:74 #, c-format msgid " -S, --slot=SLOTNAME replication slot to use\n" msgstr " -S, --slot=ИМЯ_СЛОТРиÑпользовать заданный Ñлот репликации\n" -#: pg_basebackup.c:243 +#: pg_basebackup.c:245 #, c-format msgid "" " -T, --tablespace-mapping=OLDDIR=NEWDIR\n" @@ -135,14 +135,14 @@ msgstr "" "каталога\n" " в новый\n" -#: pg_basebackup.c:245 +#: pg_basebackup.c:247 #, c-format msgid "" " -x, --xlog include required WAL files in backup (fetch mode)\n" msgstr "" " -x, --xlog включить в копию требуемые файлы WAL (режим fetch)\n" -#: pg_basebackup.c:246 +#: pg_basebackup.c:248 #, c-format msgid "" " -X, --xlog-method=fetch|stream\n" @@ -152,25 +152,25 @@ msgstr "" " включить в копию требуемые файлы WAL, иÑпользуÑ\n" " заданный метод\n" -#: pg_basebackup.c:248 +#: pg_basebackup.c:250 #, c-format msgid " --xlogdir=XLOGDIR location for the transaction log directory\n" msgstr "" " --xlogdir=КÐТÐЛОГ_XLOG\n" " раÑположение каталога Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ð¾Ð¼ транзакций\n" -#: pg_basebackup.c:249 +#: pg_basebackup.c:251 #, c-format msgid " -z, --gzip compress tar output\n" msgstr " -z, --gzip Ñжать выходной tar\n" -#: pg_basebackup.c:250 +#: pg_basebackup.c:252 #, c-format msgid "" " -Z, --compress=0-9 compress tar output with given compression level\n" msgstr " -Z, --compress=0-9 уÑтановить уровень ÑÐ¶Ð°Ñ‚Ð¸Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ архива\n" -#: pg_basebackup.c:251 +#: pg_basebackup.c:253 #, c-format msgid "" "\n" @@ -179,7 +179,7 @@ msgstr "" "\n" "Общие параметры:\n" -#: pg_basebackup.c:252 +#: pg_basebackup.c:254 #, c-format msgid "" " -c, --checkpoint=fast|spread\n" @@ -188,32 +188,32 @@ msgstr "" " -c, --checkpoint=fast|spread\n" " режим быÑтрых или раÑпределённых контрольных точек\n" -#: pg_basebackup.c:254 +#: pg_basebackup.c:256 #, c-format msgid " -l, --label=LABEL set backup label\n" msgstr " -l, --label=МЕТКРуÑтановить метку резервной копии\n" -#: pg_basebackup.c:255 +#: pg_basebackup.c:257 #, c-format msgid " -P, --progress show progress information\n" msgstr " -P, --progress показывать прогреÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸\n" -#: pg_basebackup.c:256 pg_receivexlog.c:76 pg_recvlogical.c:89 +#: pg_basebackup.c:258 pg_receivexlog.c:76 pg_recvlogical.c:92 #, c-format msgid " -v, --verbose output verbose messages\n" msgstr " -v, --verbose выводить подробные ÑообщениÑ\n" -#: pg_basebackup.c:257 pg_receivexlog.c:77 pg_recvlogical.c:90 +#: pg_basebackup.c:259 pg_receivexlog.c:77 pg_recvlogical.c:93 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version показать верÑию и выйти\n" -#: pg_basebackup.c:258 pg_receivexlog.c:78 pg_recvlogical.c:91 +#: pg_basebackup.c:260 pg_receivexlog.c:78 pg_recvlogical.c:94 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help показать Ñту Ñправку и выйти\n" -#: pg_basebackup.c:259 pg_receivexlog.c:79 pg_recvlogical.c:92 +#: pg_basebackup.c:261 pg_receivexlog.c:79 pg_recvlogical.c:95 #, c-format msgid "" "\n" @@ -222,22 +222,22 @@ msgstr "" "\n" "Параметры подключениÑ:\n" -#: pg_basebackup.c:260 pg_receivexlog.c:80 +#: pg_basebackup.c:262 pg_receivexlog.c:80 #, c-format msgid " -d, --dbname=CONNSTR connection string\n" msgstr " -d, --dbname=СТРОКРÑтрока подключениÑ\n" -#: pg_basebackup.c:261 pg_receivexlog.c:81 pg_recvlogical.c:94 +#: pg_basebackup.c:263 pg_receivexlog.c:81 pg_recvlogical.c:97 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=ИМЯ Ð¸Ð¼Ñ Ñервера баз данных или каталог Ñокетов\n" -#: pg_basebackup.c:262 pg_receivexlog.c:82 pg_recvlogical.c:95 +#: pg_basebackup.c:264 pg_receivexlog.c:82 pg_recvlogical.c:98 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=ПОРТ номер порта Ñервера БД\n" -#: pg_basebackup.c:263 +#: pg_basebackup.c:265 #, c-format msgid "" " -s, --status-interval=INTERVAL\n" @@ -248,19 +248,19 @@ msgstr "" " интервал между передаваемыми Ñерверу\n" " пакетами ÑоÑтоÑÐ½Ð¸Ñ (в Ñекундах)\n" -#: pg_basebackup.c:265 pg_receivexlog.c:83 pg_recvlogical.c:96 +#: pg_basebackup.c:267 pg_receivexlog.c:83 pg_recvlogical.c:99 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr "" " -U, --username=NAME connect as specified database user\n" " -U, --username=ИМЯ Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð±Ð°Ð· данных\n" -#: pg_basebackup.c:266 pg_receivexlog.c:84 pg_recvlogical.c:97 +#: pg_basebackup.c:268 pg_receivexlog.c:84 pg_recvlogical.c:100 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password не запрашивать пароль\n" -#: pg_basebackup.c:267 pg_receivexlog.c:85 pg_recvlogical.c:98 +#: pg_basebackup.c:269 pg_receivexlog.c:85 pg_recvlogical.c:101 #, c-format msgid "" " -W, --password force password prompt (should happen " @@ -268,7 +268,7 @@ msgid "" msgstr "" " -W, --password запрашивать пароль вÑегда (обычно не требуетÑÑ)\n" -#: pg_basebackup.c:268 pg_receivexlog.c:89 pg_recvlogical.c:99 +#: pg_basebackup.c:270 pg_receivexlog.c:89 pg_recvlogical.c:102 #, c-format msgid "" "\n" @@ -277,48 +277,48 @@ msgstr "" "\n" "Об ошибках Ñообщайте по адреÑу .\n" -#: pg_basebackup.c:311 +#: pg_basebackup.c:313 #, c-format msgid "%s: could not read from ready pipe: %s\n" msgstr "%s: не удалоÑÑŒ прочитать из готового канала: %s\n" -#: pg_basebackup.c:319 pg_basebackup.c:422 pg_basebackup.c:1893 +#: pg_basebackup.c:321 pg_basebackup.c:424 pg_basebackup.c:1910 #: streamutil.c:293 #, c-format msgid "%s: could not parse transaction log location \"%s\"\n" msgstr "%s: не удалоÑÑŒ разобрать положение в журнале транзакций \"%s\"\n" -#: pg_basebackup.c:435 +#: pg_basebackup.c:437 #, c-format msgid "%s: could not create pipe for background process: %s\n" msgstr "%s: не удалоÑÑŒ Ñоздать канал Ð´Ð»Ñ Ñ„Ð¾Ð½Ð¾Ð²Ð¾Ð³Ð¾ процеÑÑа: %s\n" -#: pg_basebackup.c:460 pg_basebackup.c:515 pg_basebackup.c:1263 +#: pg_basebackup.c:462 pg_basebackup.c:517 pg_basebackup.c:1269 #, c-format msgid "%s: could not create directory \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ Ñоздать каталог \"%s\": %s\n" -#: pg_basebackup.c:478 +#: pg_basebackup.c:480 #, c-format msgid "%s: could not create background process: %s\n" msgstr "%s: не удалоÑÑŒ Ñоздать фоновый процеÑÑ: %s\n" -#: pg_basebackup.c:490 +#: pg_basebackup.c:492 #, c-format msgid "%s: could not create background thread: %s\n" msgstr "%s: не удалоÑÑŒ Ñоздать фоновый поток выполнениÑ: %s\n" -#: pg_basebackup.c:534 +#: pg_basebackup.c:536 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" msgstr "%s: каталог \"%s\" ÑущеÑтвует, но он не пуÑÑ‚\n" -#: pg_basebackup.c:542 +#: pg_basebackup.c:544 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: нет доÑтупа к каталогу \"%s\": %s\n" -#: pg_basebackup.c:604 +#: pg_basebackup.c:606 #, c-format msgid "%*s/%s kB (100%%), %d/%d tablespace %*s" msgid_plural "%*s/%s kB (100%%), %d/%d tablespaces %*s" @@ -326,7 +326,7 @@ msgstr[0] "%*s/%s КБ (100%%), табличное проÑтранÑтво %d/% msgstr[1] "%*s/%s КБ (100%%), табличное проÑтранÑтво %d/%d %*s" msgstr[2] "%*s/%s КБ (100%%), табличное проÑтранÑтво %d/%d %*s" -#: pg_basebackup.c:616 +#: pg_basebackup.c:618 #, c-format msgid "%*s/%s kB (%d%%), %d/%d tablespace (%s%-*.*s)" msgid_plural "%*s/%s kB (%d%%), %d/%d tablespaces (%s%-*.*s)" @@ -334,7 +334,7 @@ msgstr[0] "%*s/%s КБ (%d%%), табличное проÑтранÑтво %d/%d msgstr[1] "%*s/%s КБ (%d%%), табличное проÑтранÑтво %d/%d (%s%-*.*s)" msgstr[2] "%*s/%s КБ (%d%%), табличное проÑтранÑтво %d/%d (%s%-*.*s)" -#: pg_basebackup.c:632 +#: pg_basebackup.c:634 #, c-format msgid "%*s/%s kB (%d%%), %d/%d tablespace" msgid_plural "%*s/%s kB (%d%%), %d/%d tablespaces" @@ -342,136 +342,143 @@ msgstr[0] "%*s/%s КБ (%d%%), табличное проÑтранÑтво %d/%d msgstr[1] "%*s/%s КБ (%d%%), табличное проÑтранÑтво %d/%d" msgstr[2] "%*s/%s КБ (%d%%), табличное проÑтранÑтво %d/%d" -#: pg_basebackup.c:654 +#: pg_basebackup.c:656 #, c-format msgid "%s: transfer rate \"%s\" is not a valid value\n" msgstr "%s: неверное значение (\"%s\") Ð´Ð»Ñ ÑкороÑти передачи данных\n" -#: pg_basebackup.c:661 +#: pg_basebackup.c:663 #, c-format msgid "%s: invalid transfer rate \"%s\": %s\n" msgstr "%s: Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑкороÑть передачи данных \"%s\": %s\n" -#: pg_basebackup.c:671 +#: pg_basebackup.c:673 #, c-format msgid "%s: transfer rate must be greater than zero\n" msgstr "%s: ÑкороÑть передачи должна быть больше 0\n" -#: pg_basebackup.c:705 +#: pg_basebackup.c:707 #, c-format msgid "%s: invalid --max-rate unit: \"%s\"\n" msgstr "%s: Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÐµÐ´Ð¸Ð½Ð¸Ñ†Ð° Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð² --max-rate: \"%s\"\n" -#: pg_basebackup.c:714 +#: pg_basebackup.c:716 #, c-format msgid "%s: transfer rate \"%s\" exceeds integer range\n" msgstr "%s: ÑкороÑть передачи \"%s\" вне целочиÑленного диапазона\n" -#: pg_basebackup.c:726 +#: pg_basebackup.c:728 #, c-format msgid "%s: transfer rate \"%s\" is out of range\n" msgstr "%s: ÑкороÑть передачи \"%s\" вне диапазона\n" -#: pg_basebackup.c:750 +#: pg_basebackup.c:752 #, c-format msgid "%s: could not write to compressed file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ запиÑать файл Ñжатого архива \"%s\": %s\n" -#: pg_basebackup.c:760 pg_basebackup.c:1357 pg_basebackup.c:1582 +#: pg_basebackup.c:762 pg_basebackup.c:1363 pg_basebackup.c:1588 #, c-format msgid "%s: could not write to file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ запиÑать файл \"%s\": %s\n" -#: pg_basebackup.c:815 pg_basebackup.c:836 pg_basebackup.c:864 +#: pg_basebackup.c:821 pg_basebackup.c:842 pg_basebackup.c:870 #, c-format msgid "%s: could not set compression level %d: %s\n" msgstr "%s: не удалоÑÑŒ уÑтановить уровень ÑÐ¶Ð°Ñ‚Ð¸Ñ %d: %s\n" -#: pg_basebackup.c:885 +#: pg_basebackup.c:891 #, c-format msgid "%s: could not create compressed file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ Ñоздать файл Ñжатого архива \"%s\": %s\n" -#: pg_basebackup.c:896 pg_basebackup.c:1317 pg_basebackup.c:1575 +#: pg_basebackup.c:902 pg_basebackup.c:1323 pg_basebackup.c:1581 #, c-format msgid "%s: could not create file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ Ñоздать файл \"%s\": %s\n" -#: pg_basebackup.c:908 pg_basebackup.c:1172 +#: pg_basebackup.c:914 pg_basebackup.c:1178 #, c-format msgid "%s: could not get COPY data stream: %s" msgstr "%s: не удалоÑÑŒ получить поток данных COPY: %s" -#: pg_basebackup.c:965 +#: pg_basebackup.c:971 #, c-format msgid "%s: could not close compressed file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ закрыть Ñжатый файл \"%s\": %s\n" -#: pg_basebackup.c:978 pg_recvlogical.c:577 receivelog.c:203 receivelog.c:351 -#: receivelog.c:740 +#: pg_basebackup.c:984 pg_recvlogical.c:580 receivelog.c:206 receivelog.c:354 +#: receivelog.c:743 #, c-format msgid "%s: could not close file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ закрыть файл \"%s\": %s\n" -#: pg_basebackup.c:989 pg_basebackup.c:1201 pg_recvlogical.c:443 -#: receivelog.c:1021 +#: pg_basebackup.c:995 pg_basebackup.c:1207 pg_recvlogical.c:446 +#: receivelog.c:1024 #, c-format msgid "%s: could not read COPY data: %s" msgstr "%s: не удалоÑÑŒ прочитать данные COPY: %s" -#: pg_basebackup.c:1215 +#: pg_basebackup.c:1221 #, c-format msgid "%s: invalid tar block header size: %d\n" msgstr "%s: неверный размер заголовка блока tar: %d\n" -#: pg_basebackup.c:1271 +#: pg_basebackup.c:1277 #, c-format msgid "%s: could not set permissions on directory \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ уÑтановить права Ð´Ð»Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° \"%s\": %s\n" -#: pg_basebackup.c:1295 +#: pg_basebackup.c:1301 #, c-format msgid "%s: could not create symbolic link from \"%s\" to \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ Ñоздать ÑимволичеÑкую ÑÑылку \"%s\" в \"%s\": %s\n" -#: pg_basebackup.c:1304 +#: pg_basebackup.c:1310 #, c-format msgid "%s: unrecognized link indicator \"%c\"\n" msgstr "%s: нераÑпознанный индикатор ÑвÑзи \"%c\"\n" -#: pg_basebackup.c:1324 +#: pg_basebackup.c:1330 #, c-format msgid "%s: could not set permissions on file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ уÑтановить права доÑтупа Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° \"%s\": %s\n" -#: pg_basebackup.c:1383 +#: pg_basebackup.c:1389 #, c-format msgid "%s: COPY stream ended before last file was finished\n" msgstr "%s: поток COPY закончилÑÑ Ð´Ð¾ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾Ñледнего файла\n" -#: pg_basebackup.c:1469 pg_basebackup.c:1489 pg_basebackup.c:1496 -#: pg_basebackup.c:1550 +#: pg_basebackup.c:1475 pg_basebackup.c:1495 pg_basebackup.c:1502 +#: pg_basebackup.c:1556 #, c-format msgid "%s: out of memory\n" msgstr "%s: нехватка памÑти\n" -#: pg_basebackup.c:1627 +#: pg_basebackup.c:1633 #, c-format msgid "%s: incompatible server version %s\n" msgstr "%s: неÑовмеÑÑ‚Ð¸Ð¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ñервера %s\n" -#: pg_basebackup.c:1674 pg_recvlogical.c:261 receivelog.c:538 receivelog.c:589 -#: receivelog.c:629 streamutil.c:263 streamutil.c:367 streamutil.c:413 +#: pg_basebackup.c:1670 +#, c-format +msgid "%s: initiating base backup, waiting for checkpoint to complete\n" +msgstr "" +"%s: начинаетÑÑ Ð±Ð°Ð·Ð¾Ð²Ð¾Ðµ резервное копирование, ожидаетÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ðµ " +"контрольной точки\n" + +#: pg_basebackup.c:1688 pg_recvlogical.c:264 receivelog.c:541 receivelog.c:592 +#: receivelog.c:632 streamutil.c:263 streamutil.c:367 streamutil.c:413 #, c-format msgid "%s: could not send replication command \"%s\": %s" msgstr "%s: не удалоÑÑŒ передать команду репликации \"%s\": %s" -#: pg_basebackup.c:1685 +#: pg_basebackup.c:1699 #, c-format msgid "%s: could not initiate base backup: %s" msgstr "%s: не удалоÑÑŒ инициализировать базовое резервное копирование: %s" -#: pg_basebackup.c:1692 +#: pg_basebackup.c:1706 #, c-format msgid "" "%s: server returned unexpected response to BASE_BACKUP command; got %d rows " @@ -480,105 +487,110 @@ msgstr "" "%s: Ñервер вернул неожиданный ответ на команду BASE_BACKUP; получено Ñтрок: " "%d, полей: %d, а ожидалоÑÑŒ Ñтрок: %d, полей: %d\n" -#: pg_basebackup.c:1712 +#: pg_basebackup.c:1714 +#, c-format +msgid "%s: checkpoint completed\n" +msgstr "%s: ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° завершена\n" + +#: pg_basebackup.c:1729 #, c-format msgid "transaction log start point: %s on timeline %u\n" msgstr "ÑÑ‚Ð°Ñ€Ñ‚Ð¾Ð²Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° журнала транзакций: %s на линии времени %u\n" -#: pg_basebackup.c:1721 +#: pg_basebackup.c:1738 #, c-format msgid "%s: could not get backup header: %s" msgstr "%s: не удалоÑÑŒ получить заголовок резервной копии: %s" -#: pg_basebackup.c:1727 +#: pg_basebackup.c:1744 #, c-format msgid "%s: no data returned from server\n" msgstr "%s: Ñервер не вернул данные\n" -#: pg_basebackup.c:1759 +#: pg_basebackup.c:1776 #, c-format msgid "%s: can only write single tablespace to stdout, database has %d\n" msgstr "" "%s: в stdout можно вывеÑти только одно табличное проÑтранÑтво, вÑего в СУБД " "их %d\n" -#: pg_basebackup.c:1771 +#: pg_basebackup.c:1788 #, c-format msgid "%s: starting background WAL receiver\n" msgstr "%s: запуÑк фонового процеÑÑа ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ WAL\n" -#: pg_basebackup.c:1802 +#: pg_basebackup.c:1819 #, c-format msgid "%s: could not get transaction log end position from server: %s" msgstr "" "%s: не удалоÑÑŒ получить конечную позицию в журнале транзакций Ñ Ñервера: %s" -#: pg_basebackup.c:1809 +#: pg_basebackup.c:1826 #, c-format msgid "%s: no transaction log end position returned from server\n" msgstr "%s: Ñервер не вернул конечную позицию в журнале транзакций\n" -#: pg_basebackup.c:1821 +#: pg_basebackup.c:1838 #, c-format msgid "%s: final receive failed: %s" msgstr "%s: ошибка в конце передачи: %s" -#: pg_basebackup.c:1845 +#: pg_basebackup.c:1862 #, c-format msgid "%s: waiting for background process to finish streaming ...\n" msgstr "%s: ожидание Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ¾Ð²Ð¾Ð¹ передачи фоновым процеÑÑом...\n" -#: pg_basebackup.c:1851 +#: pg_basebackup.c:1868 #, c-format msgid "%s: could not send command to background pipe: %s\n" msgstr "%s: не удалоÑÑŒ отправить команду в канал фонового процеÑÑа: %s\n" -#: pg_basebackup.c:1860 +#: pg_basebackup.c:1877 #, c-format msgid "%s: could not wait for child process: %s\n" msgstr "%s: Ñбой при ожидании дочернего процеÑÑа: %s\n" -#: pg_basebackup.c:1866 +#: pg_basebackup.c:1883 #, c-format msgid "%s: child %d died, expected %d\n" msgstr "%s: завершилÑÑ Ð´Ð¾Ñ‡ÐµÑ€Ð½Ð¸Ð¹ процеÑÑ %d вмеÑто ожидаемого %d\n" -#: pg_basebackup.c:1872 +#: pg_basebackup.c:1889 #, c-format msgid "%s: child process did not exit normally\n" msgstr "%s: дочерний процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½ ненормально\n" -#: pg_basebackup.c:1878 +#: pg_basebackup.c:1895 #, c-format msgid "%s: child process exited with error %d\n" msgstr "%s: дочерний процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»ÑÑ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹ %d\n" -#: pg_basebackup.c:1905 +#: pg_basebackup.c:1922 #, c-format msgid "%s: could not wait for child thread: %s\n" msgstr "%s: Ñбой при ожидании дочернего потока: %s\n" -#: pg_basebackup.c:1912 +#: pg_basebackup.c:1929 #, c-format msgid "%s: could not get child thread exit status: %s\n" msgstr "%s: не удалоÑÑŒ получить ÑоÑтоÑние Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð´Ð¾Ñ‡ÐµÑ€Ð½ÐµÐ³Ð¾ потока: %s\n" -#: pg_basebackup.c:1918 +#: pg_basebackup.c:1935 #, c-format msgid "%s: child thread exited with error %u\n" msgstr "%s: дочерний поток завершилÑÑ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹ %u\n" -#: pg_basebackup.c:2008 +#: pg_basebackup.c:2025 #, c-format msgid "%s: invalid output format \"%s\", must be \"plain\" or \"tar\"\n" msgstr "%s: неверный формат вывода \"%s\", должен быть \"plain\" или \"tar\"\n" -#: pg_basebackup.c:2029 pg_basebackup.c:2041 +#: pg_basebackup.c:2046 pg_basebackup.c:2058 #, c-format msgid "%s: cannot specify both --xlog and --xlog-method\n" msgstr "%s: указать и --xlog, и --xlog-method одновременно нельзÑ\n" -#: pg_basebackup.c:2056 +#: pg_basebackup.c:2073 #, c-format msgid "" "%s: invalid xlog-method option \"%s\", must be \"fetch\" or \"stream\"\n" @@ -586,12 +598,12 @@ msgstr "" "%s: неверный аргумент Ð´Ð»Ñ xlog-method - \"%s\", допуÑкаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ \"fetch\" " "или \"stream\"\n" -#: pg_basebackup.c:2078 +#: pg_basebackup.c:2095 #, c-format msgid "%s: invalid compression level \"%s\"\n" msgstr "%s: неверный уровень ÑÐ¶Ð°Ñ‚Ð¸Ñ \"%s\"\n" -#: pg_basebackup.c:2090 +#: pg_basebackup.c:2107 #, c-format msgid "" "%s: invalid checkpoint argument \"%s\", must be \"fast\" or \"spread\"\n" @@ -599,49 +611,49 @@ msgstr "" "%s: неверный аргумент режима контрольных точек \"%s\", должен быть \"fast\" " "или \"spread\"\n" -#: pg_basebackup.c:2117 pg_receivexlog.c:445 pg_recvlogical.c:760 +#: pg_basebackup.c:2134 pg_receivexlog.c:445 pg_recvlogical.c:763 #, c-format msgid "%s: invalid status interval \"%s\"\n" msgstr "%s: неверный интервал Ñообщений о ÑоÑтоÑнии \"%s\"\n" -#: pg_basebackup.c:2133 pg_basebackup.c:2147 pg_basebackup.c:2158 -#: pg_basebackup.c:2171 pg_basebackup.c:2181 pg_basebackup.c:2191 -#: pg_basebackup.c:2203 pg_basebackup.c:2214 pg_receivexlog.c:477 +#: pg_basebackup.c:2150 pg_basebackup.c:2164 pg_basebackup.c:2175 +#: pg_basebackup.c:2188 pg_basebackup.c:2198 pg_basebackup.c:2208 +#: pg_basebackup.c:2220 pg_basebackup.c:2231 pg_receivexlog.c:477 #: pg_receivexlog.c:491 pg_receivexlog.c:499 pg_receivexlog.c:509 -#: pg_receivexlog.c:520 pg_recvlogical.c:787 pg_recvlogical.c:801 -#: pg_recvlogical.c:812 pg_recvlogical.c:820 pg_recvlogical.c:828 -#: pg_recvlogical.c:836 pg_recvlogical.c:844 pg_recvlogical.c:852 +#: pg_receivexlog.c:520 pg_recvlogical.c:790 pg_recvlogical.c:804 +#: pg_recvlogical.c:815 pg_recvlogical.c:823 pg_recvlogical.c:831 +#: pg_recvlogical.c:839 pg_recvlogical.c:847 pg_recvlogical.c:855 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Ð”Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации попробуйте \"%s --help\".\n" -#: pg_basebackup.c:2145 pg_receivexlog.c:489 pg_recvlogical.c:799 +#: pg_basebackup.c:2162 pg_receivexlog.c:489 pg_recvlogical.c:802 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: Ñлишком много аргументов командной Ñтроки (первый: \"%s\")\n" -#: pg_basebackup.c:2157 pg_receivexlog.c:519 +#: pg_basebackup.c:2174 pg_receivexlog.c:519 #, c-format msgid "%s: no target directory specified\n" msgstr "%s: целевой каталог не указан\n" -#: pg_basebackup.c:2169 +#: pg_basebackup.c:2186 #, c-format msgid "%s: only tar mode backups can be compressed\n" msgstr "%s: Ñжимать можно только резервные копии в архиве tar\n" -#: pg_basebackup.c:2179 +#: pg_basebackup.c:2196 #, c-format msgid "%s: WAL streaming can only be used in plain mode\n" msgstr "%s: Ð¿Ð¾Ñ‚Ð¾ÐºÐ¾Ð²Ð°Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð° WAL поддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в режиме plain\n" -#: pg_basebackup.c:2189 +#: pg_basebackup.c:2206 #, c-format msgid "%s: replication slots can only be used with WAL streaming\n" msgstr "" "%s: Ñлоты репликации можно иÑпользовать только при потоковой передаче WAL\n" -#: pg_basebackup.c:2201 +#: pg_basebackup.c:2218 #, c-format msgid "" "%s: transaction log directory location can only be specified in plain mode\n" @@ -649,24 +661,24 @@ msgstr "" "%s: раÑположение каталога журнала транзакций можно указать только в режиме " "plain\n" -#: pg_basebackup.c:2212 +#: pg_basebackup.c:2229 #, c-format msgid "%s: transaction log directory location must be an absolute path\n" msgstr "" "%s: раÑположение каталога журнала транзакций должно определÑтьÑÑ Ð°Ð±Ñолютным " "путём\n" -#: pg_basebackup.c:2224 +#: pg_basebackup.c:2241 #, c-format msgid "%s: this build does not support compression\n" msgstr "%s: Ñта Ñборка программы не поддерживает Ñжатие\n" -#: pg_basebackup.c:2251 +#: pg_basebackup.c:2268 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ Ñоздать ÑимволичеÑкую ÑÑылку \"%s\": %s\n" -#: pg_basebackup.c:2256 +#: pg_basebackup.c:2273 #, c-format msgid "%s: symlinks are not supported on this platform\n" msgstr "%s: ÑимволичеÑкие ÑÑылки не поддерживаютÑÑ Ð² Ñтой ОС\n" @@ -680,7 +692,7 @@ msgstr "" "%s получает транÑлируемые журналы транзакций PostgreSQL.\n" "\n" -#: pg_receivexlog.c:68 pg_recvlogical.c:75 +#: pg_receivexlog.c:68 pg_recvlogical.c:78 #, c-format msgid "" "\n" @@ -694,10 +706,10 @@ msgstr "" msgid "" " -D, --directory=DIR receive transaction log files into this directory\n" msgstr "" -" -D, --directory=ПУТЬ ÑохранÑть файлы журналов транзакций в данный " +" -D, --directory=ПУТЬ ÑохранÑть файлы журнала транзакций в данный " "каталог\n" -#: pg_receivexlog.c:70 pg_recvlogical.c:79 +#: pg_receivexlog.c:70 pg_recvlogical.c:82 #, c-format msgid "" " --if-not-exists do not error if slot already exists when creating a " @@ -706,12 +718,12 @@ msgstr "" " --if-not-exists не выдавать ошибку при попытке Ñоздать уже " "ÑущеÑтвующий Ñлот\n" -#: pg_receivexlog.c:71 pg_recvlogical.c:81 +#: pg_receivexlog.c:71 pg_recvlogical.c:84 #, c-format msgid " -n, --no-loop do not loop on connection lost\n" msgstr " -n, --no-loop прерывать работу при потере ÑоединениÑ\n" -#: pg_receivexlog.c:72 pg_recvlogical.c:86 +#: pg_receivexlog.c:72 pg_recvlogical.c:89 #, c-format msgid "" " -s, --status-interval=SECS\n" @@ -738,7 +750,7 @@ msgstr "" "\n" "Дополнительные дейÑтвиÑ:\n" -#: pg_receivexlog.c:87 pg_recvlogical.c:72 +#: pg_receivexlog.c:87 pg_recvlogical.c:75 #, c-format msgid "" " --create-slot create a new replication slot (for the slot's name " @@ -747,7 +759,7 @@ msgstr "" " --create-slot Ñоздать новый Ñлот репликации (Ð¸Ð¼Ñ Ñлота задаёт " "параметр --slot)\n" -#: pg_receivexlog.c:88 pg_recvlogical.c:73 +#: pg_receivexlog.c:88 pg_recvlogical.c:76 #, c-format msgid "" " --drop-slot drop the replication slot (for the slot's name see " @@ -781,7 +793,7 @@ msgstr "%s: не удалоÑÑŒ открыть каталог \"%s\": %s\n" msgid "%s: could not close directory \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ закрыть каталог \"%s\": %s\n" -#: pg_receivexlog.c:218 pg_recvlogical.c:343 +#: pg_receivexlog.c:218 pg_recvlogical.c:346 #, c-format msgid "%s: could not stat file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ получить информацию о файле \"%s\": %s\n" @@ -802,7 +814,7 @@ msgstr "%s: не удалоÑÑŒ прочитать каталог \"%s\": %s\n" msgid "%s: starting log streaming at %X/%X (timeline %u)\n" msgstr "%s: начало передачи журнала Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸ %X/%X (Ð»Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ %u)\n" -#: pg_receivexlog.c:426 pg_recvlogical.c:707 +#: pg_receivexlog.c:426 pg_recvlogical.c:710 #, c-format msgid "%s: invalid port number \"%s\"\n" msgstr "%s: неверный номер порта \"%s\"\n" @@ -827,28 +839,28 @@ msgstr "" "%s: подключение Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ через Ñлот \"%s\" оказалоÑÑŒ привÑзано к базе " "данных\n" -#: pg_receivexlog.c:574 pg_recvlogical.c:892 +#: pg_receivexlog.c:574 pg_recvlogical.c:895 #, c-format msgid "%s: dropping replication slot \"%s\"\n" msgstr "%s: удаление Ñлота репликации \"%s\"\n" -#: pg_receivexlog.c:587 pg_recvlogical.c:904 +#: pg_receivexlog.c:587 pg_recvlogical.c:907 #, c-format msgid "%s: creating replication slot \"%s\"\n" msgstr "%s: Ñоздание Ñлота репликации \"%s\"\n" -#: pg_receivexlog.c:614 pg_recvlogical.c:930 +#: pg_receivexlog.c:614 pg_recvlogical.c:933 #, c-format msgid "%s: disconnected\n" msgstr "%s: отключение\n" #. translator: check source for value for %d -#: pg_receivexlog.c:621 pg_recvlogical.c:937 +#: pg_receivexlog.c:621 pg_recvlogical.c:940 #, c-format msgid "%s: disconnected; waiting %d seconds to try again\n" msgstr "%s: отключение; через %d Ñек. поÑледует повторное подключение\n" -#: pg_recvlogical.c:67 +#: pg_recvlogical.c:70 #, c-format msgid "" "%s controls PostgreSQL logical decoding streams.\n" @@ -857,7 +869,7 @@ msgstr "" "%s управлÑет потоками логичеÑкого Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ PostgreSQL.\n" "\n" -#: pg_recvlogical.c:71 +#: pg_recvlogical.c:74 #, c-format msgid "" "\n" @@ -866,7 +878,7 @@ msgstr "" "\n" "ДейÑтвие, которое будет выполнено:\n" -#: pg_recvlogical.c:74 +#: pg_recvlogical.c:77 #, c-format msgid "" " --start start streaming in a replication slot (for the " @@ -875,13 +887,13 @@ msgstr "" " --start начать передачу в Ñлоте репликации (Ð¸Ð¼Ñ Ñлота " "задаёт параметр --slot)\n" -#: pg_recvlogical.c:76 +#: pg_recvlogical.c:79 #, c-format msgid " -f, --file=FILE receive log into this file, - for stdout\n" msgstr "" " -f, --file=ФÐЙЛ ÑохранÑть журнал в Ñтот файл, - обозначает stdout\n" -#: pg_recvlogical.c:77 +#: pg_recvlogical.c:80 #, c-format msgid "" " -F --fsync-interval=SECS\n" @@ -892,7 +904,7 @@ msgstr "" " периодичноÑть ÑброÑа на диÑк выходного файла (по " "умолчанию: %d)\n" -#: pg_recvlogical.c:80 +#: pg_recvlogical.c:83 #, c-format msgid "" " -I, --startpos=LSN where in an existing slot should the streaming " @@ -901,7 +913,7 @@ msgstr "" " -I, --startpos=LSN определÑет, Ñ ÐºÐ°ÐºÐ¾Ð¹ позиции в ÑущеÑтвующем Ñлоте " "начнётÑÑ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð°\n" -#: pg_recvlogical.c:82 +#: pg_recvlogical.c:85 #, c-format msgid "" " -o, --option=NAME[=VALUE]\n" @@ -913,218 +925,218 @@ msgstr "" "необÑзательным\n" " значением модулю вывода\n" -#: pg_recvlogical.c:85 +#: pg_recvlogical.c:88 #, c-format msgid " -P, --plugin=PLUGIN use output plugin PLUGIN (default: %s)\n" msgstr "" " -P, --plugin=МОДУЛЬ иÑпользовать заданный модуль вывода (по умолчанию: " "%s)\n" -#: pg_recvlogical.c:88 +#: pg_recvlogical.c:91 #, c-format msgid " -S, --slot=SLOTNAME name of the logical replication slot\n" msgstr " -S, --slot=ИМЯ_Ð¡Ð›ÐžÐ¢Ð Ð¸Ð¼Ñ Ñлота логичеÑкой репликации\n" -#: pg_recvlogical.c:93 +#: pg_recvlogical.c:96 #, c-format msgid " -d, --dbname=DBNAME database to connect to\n" msgstr " -d, --dbname=ИМЯ_БД Ñ†ÐµÐ»ÐµÐ²Ð°Ñ Ð±Ð°Ð·Ð° данных\n" -#: pg_recvlogical.c:126 +#: pg_recvlogical.c:129 #, c-format msgid "%s: confirming write up to %X/%X, flush to %X/%X (slot %s)\n" msgstr "" "%s: подтверждаетÑÑ Ð·Ð°Ð¿Ð¸ÑÑŒ до %X/%X, ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ Ð¤Ð¡ до %X/%X (Ñлот %s)\n" -#: pg_recvlogical.c:151 receivelog.c:404 +#: pg_recvlogical.c:154 receivelog.c:407 #, c-format msgid "%s: could not send feedback packet: %s" msgstr "%s: не удалоÑÑŒ отправить пакет отзыва: %s" -#: pg_recvlogical.c:190 +#: pg_recvlogical.c:193 #, c-format msgid "%s: could not fsync log file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ файл журнала \"%s\": %s\n" -#: pg_recvlogical.c:229 +#: pg_recvlogical.c:232 #, c-format msgid "%s: starting log streaming at %X/%X (slot %s)\n" msgstr "%s: начало передачи журнала Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸ %X/%X (Ñлот %s)\n" -#: pg_recvlogical.c:271 +#: pg_recvlogical.c:274 #, c-format msgid "%s: streaming initiated\n" msgstr "%s: передача запущена\n" -#: pg_recvlogical.c:336 +#: pg_recvlogical.c:339 #, c-format msgid "%s: could not open log file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ открыть файл журнала \"%s\": %s\n" -#: pg_recvlogical.c:366 receivelog.c:935 +#: pg_recvlogical.c:369 receivelog.c:938 #, c-format msgid "%s: invalid socket: %s" msgstr "%s: неверный Ñокет: %s" -#: pg_recvlogical.c:420 receivelog.c:957 +#: pg_recvlogical.c:423 receivelog.c:960 #, c-format msgid "%s: select() failed: %s\n" msgstr "%s: ошибка в select(): %s\n" -#: pg_recvlogical.c:429 receivelog.c:1007 +#: pg_recvlogical.c:432 receivelog.c:1010 #, c-format msgid "%s: could not receive data from WAL stream: %s" msgstr "%s: не удалоÑÑŒ получить данные из потока WAL: %s" -#: pg_recvlogical.c:470 pg_recvlogical.c:509 receivelog.c:1052 -#: receivelog.c:1119 +#: pg_recvlogical.c:473 pg_recvlogical.c:512 receivelog.c:1055 +#: receivelog.c:1122 #, c-format msgid "%s: streaming header too small: %d\n" msgstr "%s: заголовок потока Ñлишком мал: %d\n" -#: pg_recvlogical.c:492 receivelog.c:900 +#: pg_recvlogical.c:495 receivelog.c:903 #, c-format msgid "%s: unrecognized streaming header: \"%c\"\n" msgstr "%s: нераÑпознанный заголовок потока: \"%c\"\n" -#: pg_recvlogical.c:538 pg_recvlogical.c:552 +#: pg_recvlogical.c:541 pg_recvlogical.c:555 #, c-format msgid "%s: could not write %u bytes to log file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ запиÑать %u байт в файл журнала \"%s\": %s\n" -#: pg_recvlogical.c:563 receivelog.c:693 receivelog.c:731 +#: pg_recvlogical.c:566 receivelog.c:696 receivelog.c:734 #, c-format msgid "%s: unexpected termination of replication stream: %s" msgstr "%s: неожиданный конец потока репликации: %s" -#: pg_recvlogical.c:686 +#: pg_recvlogical.c:689 #, c-format msgid "%s: invalid fsync interval \"%s\"\n" msgstr "%s: неверный интервал Ñинхронизации Ñ Ð¤Ð¡ \"%s\"\n" -#: pg_recvlogical.c:727 +#: pg_recvlogical.c:730 #, c-format msgid "%s: could not parse start position \"%s\"\n" msgstr "%s: не удалоÑÑŒ разобрать начальную позицию \"%s\"\n" -#: pg_recvlogical.c:811 +#: pg_recvlogical.c:814 #, c-format msgid "%s: no slot specified\n" msgstr "%s: Ñлот не указан\n" -#: pg_recvlogical.c:819 +#: pg_recvlogical.c:822 #, c-format msgid "%s: no target file specified\n" msgstr "%s: целевой файл не задан\n" -#: pg_recvlogical.c:827 +#: pg_recvlogical.c:830 #, c-format msgid "%s: no database specified\n" msgstr "%s: база данных не задана\n" -#: pg_recvlogical.c:835 +#: pg_recvlogical.c:838 #, c-format msgid "%s: at least one action needs to be specified\n" msgstr "%s: необходимо задать минимум одно дейÑтвие\n" -#: pg_recvlogical.c:843 +#: pg_recvlogical.c:846 #, c-format msgid "%s: cannot use --create-slot or --start together with --drop-slot\n" msgstr "%s: --create-slot или --start Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть вмеÑте Ñ --drop-slot\n" -#: pg_recvlogical.c:851 +#: pg_recvlogical.c:854 #, c-format msgid "%s: cannot use --create-slot or --drop-slot together with --startpos\n" msgstr "" "%s: --create-slot или --drop-slot Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ñть вмеÑте Ñ --startpos\n" -#: pg_recvlogical.c:882 +#: pg_recvlogical.c:885 #, c-format msgid "%s: could not establish database-specific replication connection\n" msgstr "" "%s: не удалоÑÑŒ уÑтановить подключение Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ к определённой базе " "данных\n" -#: receivelog.c:66 +#: receivelog.c:69 #, c-format msgid "%s: could not create archive status file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ Ñоздать файл ÑтатуÑа архива \"%s\": %s\n" -#: receivelog.c:73 receivelog.c:196 receivelog.c:344 receivelog.c:830 -#: receivelog.c:1073 +#: receivelog.c:76 receivelog.c:199 receivelog.c:347 receivelog.c:833 +#: receivelog.c:1076 #, c-format msgid "%s: could not fsync file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ Ñинхронизировать Ñ Ð¤Ð¡ файл \"%s\": %s\n" -#: receivelog.c:111 +#: receivelog.c:114 #, c-format msgid "%s: could not open transaction log file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ открыть файл журнала транзакций \"%s\": %s\n" -#: receivelog.c:123 +#: receivelog.c:126 #, c-format msgid "%s: could not stat transaction log file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ проверить файл журнала транзакций \"%s\": %s\n" -#: receivelog.c:137 +#: receivelog.c:140 #, c-format msgid "%s: transaction log file \"%s\" has %d bytes, should be 0 or %d\n" msgstr "" "%s: файл журнала транзакций \"%s\" имеет размер %d Б, а должен - 0 или %d\n" -#: receivelog.c:150 +#: receivelog.c:153 #, c-format msgid "%s: could not pad transaction log file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ дополнить файл журнала транзакций \"%s\": %s\n" -#: receivelog.c:163 +#: receivelog.c:166 #, c-format msgid "%s: could not seek to beginning of transaction log file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ перейти к началу файла журнала транзакций \"%s\": %s\n" -#: receivelog.c:189 +#: receivelog.c:192 #, c-format msgid "%s: could not determine seek position in file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ определить текущую позицию в файле \"%s\": %s\n" -#: receivelog.c:222 +#: receivelog.c:225 #, c-format msgid "%s: could not rename file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ переименовать файл \"%s\": %s\n" -#: receivelog.c:229 +#: receivelog.c:232 #, c-format msgid "%s: not renaming \"%s%s\", segment is not complete\n" msgstr "" "%s: файл \"%s%s\" не переименовываетÑÑ, так как Ñто не полный Ñегмент\n" -#: receivelog.c:275 +#: receivelog.c:278 #, c-format msgid "%s: could not open timeline history file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ открыть файл иÑтории линии времени \"%s\": %s\n" -#: receivelog.c:302 +#: receivelog.c:305 #, c-format msgid "%s: server reported unexpected history file name for timeline %u: %s\n" msgstr "" "%s: Ñервер Ñообщил неожиданное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° иÑтории Ð´Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ времени %u: %s\n" -#: receivelog.c:319 +#: receivelog.c:322 #, c-format msgid "%s: could not create timeline history file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ Ñоздать файл иÑтории линии времени \"%s\": %s\n" -#: receivelog.c:336 +#: receivelog.c:339 #, c-format msgid "%s: could not write timeline history file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ запиÑать файл иÑтории линии времени \"%s\": %s\n" -#: receivelog.c:361 +#: receivelog.c:364 #, c-format msgid "%s: could not rename file \"%s\" to \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ переименовать файл \"%s\" в \"%s\": %s\n" -#: receivelog.c:438 +#: receivelog.c:441 #, c-format msgid "" "%s: incompatible server version %s; client does not support streaming from " @@ -1133,7 +1145,7 @@ msgstr "" "%s: неÑовмеÑÑ‚Ð¸Ð¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ñервера %s; клиент не поддерживает репликацию Ñ " "Ñерверов верÑии ниже %s\n" -#: receivelog.c:448 +#: receivelog.c:451 #, c-format msgid "" "%s: incompatible server version %s; client does not support streaming from " @@ -1142,7 +1154,7 @@ msgstr "" "%s: неÑовмеÑÑ‚Ð¸Ð¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ñервера %s; клиент не поддерживает репликацию Ñ " "Ñерверов верÑии выше %s\n" -#: receivelog.c:546 streamutil.c:272 streamutil.c:311 +#: receivelog.c:549 streamutil.c:272 streamutil.c:311 #, c-format msgid "" "%s: could not identify system: got %d rows and %d fields, expected %d rows " @@ -1151,7 +1163,7 @@ msgstr "" "%s: не удалоÑÑŒ идентифицировать ÑиÑтему, получено Ñтрок: %d, полей: %d " "(ожидалоÑÑŒ: %d и %d (или более))\n" -#: receivelog.c:554 +#: receivelog.c:557 #, c-format msgid "" "%s: system identifier does not match between base backup and streaming " @@ -1160,12 +1172,12 @@ msgstr "" "%s: ÑиÑтемный идентификатор базовой резервной копии отличаетÑÑ Ð¾Ñ‚ " "идентификатора потоковой передачи\n" -#: receivelog.c:562 +#: receivelog.c:565 #, c-format msgid "%s: starting timeline %u is not present in the server\n" msgstr "%s: на Ñервере нет начальной линии времени %u\n" -#: receivelog.c:602 +#: receivelog.c:605 #, c-format msgid "" "%s: unexpected response to TIMELINE_HISTORY command: got %d rows and %d " @@ -1174,14 +1186,14 @@ msgstr "" "%s: Ñервер вернул неожиданный ответ на команду TIMELINE_HISTORY; получено " "Ñтрок: %d, полей: %d, а ожидалоÑÑŒ Ñтрок: %d, полей: %d\n" -#: receivelog.c:674 +#: receivelog.c:677 #, c-format msgid "" "%s: server reported unexpected next timeline %u, following timeline %u\n" msgstr "" "%s: Ñервер неожиданно Ñообщил линию времени %u поÑле линии времени %u\n" -#: receivelog.c:681 +#: receivelog.c:684 #, c-format msgid "" "%s: server stopped streaming timeline %u at %X/%X, but reported next " @@ -1190,12 +1202,12 @@ msgstr "" "%s: Ñервер прекратил передачу линии времени %u в %X/%X, но Ñообщил, что " "ÑÐ»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð»Ð¸Ð½Ð¸Ð¸ времени %u начнётÑÑ Ð² %X/%X\n" -#: receivelog.c:722 +#: receivelog.c:725 #, c-format msgid "%s: replication stream was terminated before stop point\n" msgstr "%s: поток репликации закончилÑÑ Ð´Ð¾ точки оÑтанова\n" -#: receivelog.c:771 +#: receivelog.c:774 #, c-format msgid "" "%s: unexpected result set after end-of-timeline: got %d rows and %d fields, " @@ -1204,29 +1216,29 @@ msgstr "" "%s: Ñервер вернул неожиданный набор данных поÑле конца линии времени - " "получено Ñтрок: %d, полей: %d, а ожидалоÑÑŒ Ñтрок: %d, полей: %d\n" -#: receivelog.c:781 +#: receivelog.c:784 #, c-format msgid "%s: could not parse next timeline's starting point \"%s\"\n" msgstr "" "%s: не удалоÑÑŒ разобрать начальную точку Ñледующей линии времени \"%s\"\n" -#: receivelog.c:1138 +#: receivelog.c:1141 #, c-format msgid "%s: received transaction log record for offset %u with no file open\n" msgstr "" "%s: получена запиÑÑŒ журнала транзакций по Ñмещению %u, но файл не открыт\n" -#: receivelog.c:1150 +#: receivelog.c:1153 #, c-format msgid "%s: got WAL data offset %08x, expected %08x\n" msgstr "%s: получено Ñмещение данных WAL %08x, но ожидалоÑÑŒ %08x\n" -#: receivelog.c:1186 +#: receivelog.c:1189 #, c-format msgid "%s: could not write %u bytes to WAL file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ запиÑать %u байт в файл WAL \"%s\": %s\n" -#: receivelog.c:1211 receivelog.c:1252 receivelog.c:1283 +#: receivelog.c:1214 receivelog.c:1255 receivelog.c:1286 #, c-format msgid "%s: could not send copy-end packet: %s" msgstr "%s: не удалоÑÑŒ отправить пакет \"конец COPY\": %s" diff --git a/src/bin/pg_basebackup/t/010_pg_basebackup.pl b/src/bin/pg_basebackup/t/010_pg_basebackup.pl index 6c33936d25..3ae2cbc797 100644 --- a/src/bin/pg_basebackup/t/010_pg_basebackup.pl +++ b/src/bin/pg_basebackup/t/010_pg_basebackup.pl @@ -4,7 +4,7 @@ use Config; use PostgresNode; use TestLib; -use Test::More tests => 51; +use Test::More tests => 52; program_help_ok('pg_basebackup'); program_version_ok('pg_basebackup'); @@ -102,7 +102,17 @@ # skip on Windows. SKIP: { - skip "symlinks not supported on Windows", 10 if ($windows_os); + skip "symlinks not supported on Windows", 11 if ($windows_os); + + # Move pg_replslot out of $pgdata and create a symlink to it. + $node->stop; + + rename("$pgdata/pg_replslot", "$tempdir/pg_replslot") + or BAIL_OUT "could not move $pgdata/pg_replslot"; + symlink("$tempdir/pg_replslot", "$pgdata/pg_replslot") + or BAIL_OUT "could not symlink to $pgdata/pg_replslot"; + + $node->start; # Create a temporary directory in the system location and symlink it # to our physical temp location. That way we can use shorter names @@ -140,6 +150,8 @@ "tablespace symlink was updated"); closedir $dh; + ok(-d "$tempdir/backup1/pg_replslot", 'pg_replslot symlink copied as directory'); + mkdir "$tempdir/tbl=spc2"; $node->safe_psql('postgres', "DROP TABLE test1;"); $node->safe_psql('postgres', "DROP TABLESPACE tblspc1;"); @@ -167,16 +179,14 @@ ok(-f "$tempdir/backupR/recovery.conf", 'recovery.conf was created'); my $recovery_conf = slurp_file "$tempdir/backupR/recovery.conf"; -# using a character class for the final "'" here works around an apparent -# bug in several version of the Msys DTK perl my $port = $node->port; like( $recovery_conf, - qr/^standby_mode = 'on[']$/m, + qr/^standby_mode = 'on'\n/m, 'recovery.conf sets standby_mode'); like( $recovery_conf, - qr/^primary_conninfo = '.*port=$port.*'$/m, + qr/^primary_conninfo = '.*port=$port.*'\n/m, 'recovery.conf sets primary_conninfo'); $node->command_ok( @@ -221,5 +231,5 @@ 'pg_basebackup with replication slot and -R runs'); like( slurp_file("$tempdir/backupxs_sl_R/recovery.conf"), - qr/^primary_slot_name = 'slot1'$/m, + qr/^primary_slot_name = 'slot1'\n/m, 'recovery.conf sets primary_slot_name'); diff --git a/src/bin/pg_config/po/es.po b/src/bin/pg_config/po/es.po index 81d2de863a..60a5f9ae8b 100644 --- a/src/bin/pg_config/po/es.po +++ b/src/bin/pg_config/po/es.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: pg_config (PostgreSQL 9.6)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-05-02 20:14+0000\n" +"POT-Creation-Date: 2017-08-27 21:52+0000\n" "PO-Revision-Date: 2016-05-23 09:38-0500\n" "Last-Translator: Carlos Chapi \n" "Language-Team: es \n" diff --git a/src/bin/pg_config/po/fr.po b/src/bin/pg_config/po/fr.po index a23d8548aa..8cb7adae27 100644 --- a/src/bin/pg_config/po/fr.po +++ b/src/bin/pg_config/po/fr.po @@ -1,10 +1,10 @@ # translation of pg_config.po to fr_fr # french message translation file for pg_config # -# Use these quotes: « %s » +# Use these quotes: « %s » # # Guillaume Lelarge , 2004-2009. -# Stéphane Schildknecht , 2009. +# Stéphane Schildknecht , 2009. msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" @@ -15,7 +15,7 @@ msgstr "" "Language-Team: PostgreSQLfr \n" "Language: fr\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.8.7.1\n" @@ -25,42 +25,42 @@ msgstr "" #: ../../common/config_info.c:179 ../../common/config_info.c:187 #: ../../common/config_info.c:195 msgid "not recorded" -msgstr "non enregistré" +msgstr "non enregistré" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, c-format msgid "could not identify current directory: %s" -msgstr "n'a pas pu identifier le répertoire courant : %s" +msgstr "n'a pas pu identifier le répertoire courant : %s" #: ../../common/exec.c:146 #, c-format msgid "invalid binary \"%s\"" -msgstr "binaire « %s » invalide" +msgstr "binaire « %s » invalide" #: ../../common/exec.c:195 #, c-format msgid "could not read binary \"%s\"" -msgstr "n'a pas pu lire le binaire « %s »" +msgstr "n'a pas pu lire le binaire « %s »" #: ../../common/exec.c:202 #, c-format msgid "could not find a \"%s\" to execute" -msgstr "n'a pas pu trouver un « %s » à exécuter" +msgstr "n'a pas pu trouver un « %s » à exécuter" #: ../../common/exec.c:257 ../../common/exec.c:293 #, c-format msgid "could not change directory to \"%s\": %s" -msgstr "n'a pas pu changer le répertoire par « %s » : %s" +msgstr "n'a pas pu changer le répertoire par « %s » : %s" #: ../../common/exec.c:272 #, c-format msgid "could not read symbolic link \"%s\"" -msgstr "n'a pas pu lire le lien symbolique « %s »" +msgstr "n'a pas pu lire le lien symbolique « %s »" #: ../../common/exec.c:523 #, c-format msgid "pclose failed: %s" -msgstr "échec de pclose : %s" +msgstr "échec de pclose : %s" #: pg_config.c:74 #, c-format @@ -70,7 +70,7 @@ msgid "" "\n" msgstr "" "\n" -"%s fournit des informations sur la version installée de PostgreSQL.\n" +"%s fournit des informations sur la version installée de PostgreSQL.\n" "\n" #: pg_config.c:75 @@ -95,7 +95,7 @@ msgstr "Options :\n" #: pg_config.c:78 #, c-format msgid " --bindir show location of user executables\n" -msgstr " --bindir affiche l'emplacement des exécutables utilisateur\n" +msgstr " --bindir affiche l'emplacement des exécutables utilisateur\n" #: pg_config.c:79 #, c-format @@ -115,27 +115,27 @@ msgid "" " --includedir show location of C header files of the client\n" " interfaces\n" msgstr "" -" --includedir affiche l'emplacement des fichiers d'en-tête C\n" +" --includedir affiche l'emplacement des fichiers d'en-tête C\n" " des interfaces client\n" #: pg_config.c:83 #, c-format msgid " --pkgincludedir show location of other C header files\n" msgstr "" -" --pkgincludedir affiche l'emplacement des autres fichiers d'en-tête\n" +" --pkgincludedir affiche l'emplacement des autres fichiers d'en-tête\n" " C\n" #: pg_config.c:84 #, c-format msgid " --includedir-server show location of C header files for the server\n" msgstr "" -" --includedir-server affiche l'emplacement des fichiers d'en-tête C du\n" +" --includedir-server affiche l'emplacement des fichiers d'en-tête C du\n" " serveur\n" #: pg_config.c:85 #, c-format msgid " --libdir show location of object code libraries\n" -msgstr " --libdir affiche l'emplacement des bibliothèques\n" +msgstr " --libdir affiche l'emplacement des bibliothèques\n" #: pg_config.c:86 #, c-format @@ -161,14 +161,14 @@ msgstr " --mandir affiche l'emplacement des pages man\n" msgid " --sharedir show location of architecture-independent support files\n" msgstr "" " --sharedir affiche l'emplacement des fichiers de support\n" -" indépendants de l'architecture\n" +" indépendants de l'architecture\n" #: pg_config.c:90 #, c-format msgid " --sysconfdir show location of system-wide configuration files\n" msgstr "" " --sysconfdir affiche l'emplacement des fichiers de configuration\n" -" globaux du système\n" +" globaux du système\n" #: pg_config.c:91 #, c-format @@ -181,63 +181,63 @@ msgid "" " --configure show options given to \"configure\" script when\n" " PostgreSQL was built\n" msgstr "" -" --configure affiche les options passées au script « configure »\n" -" à la construction de PostgreSQL\n" +" --configure affiche les options passées au script « configure »\n" +" à la construction de PostgreSQL\n" #: pg_config.c:94 #, c-format msgid " --cc show CC value used when PostgreSQL was built\n" msgstr "" -" --cc affiche la valeur de CC utilisée lors de la\n" +" --cc affiche la valeur de CC utilisée lors de la\n" " construction de PostgreSQL\n" #: pg_config.c:95 #, c-format msgid " --cppflags show CPPFLAGS value used when PostgreSQL was built\n" msgstr "" -" --cppflags affiche la valeur de CPPFLAGS utilisée lors de la\n" +" --cppflags affiche la valeur de CPPFLAGS utilisée lors de la\n" " construction de PostgreSQL\n" #: pg_config.c:96 #, c-format msgid " --cflags show CFLAGS value used when PostgreSQL was built\n" msgstr "" -" --cflags affiche la valeur de CFLAGS utilisée lors de la\n" +" --cflags affiche la valeur de CFLAGS utilisée lors de la\n" " construction de PostgreSQL\n" #: pg_config.c:97 #, c-format msgid " --cflags_sl show CFLAGS_SL value used when PostgreSQL was built\n" msgstr "" -" --cflags_sl affiche la valeur de CFLAGS_SL utilisée lors de la\n" +" --cflags_sl affiche la valeur de CFLAGS_SL utilisée lors de la\n" " construction de PostgreSQL\n" #: pg_config.c:98 #, c-format msgid " --ldflags show LDFLAGS value used when PostgreSQL was built\n" msgstr "" -" --ldflags affiche la valeur de LDFLAGS utilisée à lors de la\n" +" --ldflags affiche la valeur de LDFLAGS utilisée à lors de la\n" " construction de PostgreSQL\n" #: pg_config.c:99 #, c-format msgid " --ldflags_ex show LDFLAGS_EX value used when PostgreSQL was built\n" msgstr "" -" --ldflags_ex affiche la valeur de LDFLAGS_EX utilisée lors de la\n" +" --ldflags_ex affiche la valeur de LDFLAGS_EX utilisée lors de la\n" " construction de PostgreSQL\n" #: pg_config.c:100 #, c-format msgid " --ldflags_sl show LDFLAGS_SL value used when PostgreSQL was built\n" msgstr "" -" --ldflags_sl affiche la valeur de LDFLAGS_SL utilisée lors de la\n" +" --ldflags_sl affiche la valeur de LDFLAGS_SL utilisée lors de la\n" " construction de PostgreSQL\n" #: pg_config.c:101 #, c-format msgid " --libs show LIBS value used when PostgreSQL was built\n" msgstr "" -" --libs affiche la valeur de LIBS utilisée lors de la\n" +" --libs affiche la valeur de LIBS utilisée lors de la\n" " construction de PostgreSQL\n" #: pg_config.c:102 @@ -258,23 +258,23 @@ msgid "" "\n" msgstr "" "\n" -"Sans argument, tous les éléments connus sont affichés.\n" +"Sans argument, tous les éléments connus sont affichés.\n" "\n" #: pg_config.c:105 #, c-format msgid "Report bugs to .\n" -msgstr "Rapporter les bogues à .\n" +msgstr "Rapporter les bogues à .\n" #: pg_config.c:111 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Essayer « %s --help » pour plus d'informations.\n" +msgstr "Essayer « %s --help » pour plus d'informations.\n" #: pg_config.c:153 #, c-format msgid "%s: could not find own program executable\n" -msgstr "%s : n'a pas pu trouver son propre exécutable\n" +msgstr "%s : n'a pas pu trouver son propre exécutable\n" #: pg_config.c:180 #, c-format @@ -282,22 +282,22 @@ msgid "%s: invalid argument: %s\n" msgstr "%s : argument invalide : %s\n" #~ msgid "could not change directory to \"%s\"" -#~ msgstr "n'a pas pu accéder au répertoire « %s »" +#~ msgstr "n'a pas pu accéder au répertoire « %s »" #~ msgid "child process exited with exit code %d" -#~ msgstr "le processus fils a quitté avec le code de sortie %d" +#~ msgstr "le processus fils a quitté avec le code de sortie %d" #~ msgid "child process was terminated by exception 0x%X" -#~ msgstr "le processus fils a été terminé par l'exception 0x%X" +#~ msgstr "le processus fils a été terminé par l'exception 0x%X" #~ msgid "child process was terminated by signal %s" -#~ msgstr "le processus fils a été terminé par le signal %s" +#~ msgstr "le processus fils a été terminé par le signal %s" #~ msgid "child process was terminated by signal %d" -#~ msgstr "le processus fils a été terminé par le signal %d" +#~ msgstr "le processus fils a été terminé par le signal %d" #~ msgid "child process exited with unrecognized status %d" -#~ msgstr "le processus fils a quitté avec un statut %d non reconnu" +#~ msgstr "le processus fils a quitté avec un statut %d non reconnu" #~ msgid " --help show this help, then exit\n" #~ msgstr " --help affiche cette aide puis quitte\n" diff --git a/src/bin/pg_config/po/it.po b/src/bin/pg_config/po/it.po index 6a2013fbf0..6491ea42fc 100644 --- a/src/bin/pg_config/po/it.po +++ b/src/bin/pg_config/po/it.po @@ -19,8 +19,8 @@ msgid "" msgstr "" "Project-Id-Version: pg_config (PostgreSQL) 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-04-17 00:14+0000\n" -"PO-Revision-Date: 2012-11-02 13:39+0100\n" +"POT-Creation-Date: 2017-02-09 21:13+0000\n" +"PO-Revision-Date: 2017-04-23 03:04+0100\n" "Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" "Language: it\n" @@ -29,7 +29,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Poedit-SourceCharset: utf-8\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.8.7.1\n" + +#: ../../common/config_info.c:131 ../../common/config_info.c:139 +#: ../../common/config_info.c:147 ../../common/config_info.c:155 +#: ../../common/config_info.c:163 ../../common/config_info.c:171 +#: ../../common/config_info.c:179 ../../common/config_info.c:187 +#: ../../common/config_info.c:195 +msgid "not recorded" +msgstr "non registrato" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, c-format diff --git a/src/bin/pg_config/po/ja.po b/src/bin/pg_config/po/ja.po index ec2b4e584e..e1e2867d6b 100644 --- a/src/bin/pg_config/po/ja.po +++ b/src/bin/pg_config/po/ja.po @@ -5,9 +5,9 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.0 beta 3\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2013-08-18 11:27+0900\n" -"PO-Revision-Date: 2012-08-11 16:53+0900\n" -"Last-Translator: HOTTA Michihide \n" +"POT-Creation-Date: 2017-04-03 13:41+0900\n" +"PO-Revision-Date: 2017-02-01 16:53+0900\n" +"Last-Translator: Ideriha Takeshi \n" "Language-Team: jpug-doc \n" "Language: ja\n" "MIME-Version: 1.0\n" @@ -15,49 +15,50 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ../../port/exec.c:127 ../../port/exec.c:241 ../../port/exec.c:284 +#: ../../common/config_info.c:131 ../../common/config_info.c:139 +#: ../../common/config_info.c:147 ../../common/config_info.c:155 +#: ../../common/config_info.c:163 ../../common/config_info.c:171 +#: ../../common/config_info.c:179 ../../common/config_info.c:187 +#: ../../common/config_info.c:195 +msgid "not recorded" +msgstr "記録ã•れã¦ã„ã¾ã›ã‚“" + +#: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, c-format msgid "could not identify current directory: %s" msgstr "ç¾åœ¨ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’èªè­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: ../../port/exec.c:146 +#: ../../common/exec.c:146 #, c-format msgid "invalid binary \"%s\"" msgstr "ãƒã‚¤ãƒŠãƒª\"%s\"ã¯ç„¡åйã§ã™" -#: ../../port/exec.c:195 +#: ../../common/exec.c:195 #, c-format msgid "could not read binary \"%s\"" msgstr "ãƒã‚¤ãƒŠãƒª\"%s\"を読ã¿å–れã¾ã›ã‚“ã§ã—ãŸ" -#: ../../port/exec.c:202 +#: ../../common/exec.c:202 #, c-format msgid "could not find a \"%s\" to execute" msgstr "実行ã™ã‚‹\"%s\"ãŒã‚りã¾ã›ã‚“ã§ã—ãŸ" -#: ../../port/exec.c:257 ../../port/exec.c:293 +#: ../../common/exec.c:257 ../../common/exec.c:293 #, c-format msgid "could not change directory to \"%s\": %s" msgstr "ディレクトリ\"%s\"ã«ç§»å‹•ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: ../../port/exec.c:272 +#: ../../common/exec.c:272 #, c-format msgid "could not read symbolic link \"%s\"" msgstr "シンボリックリンク\"%s\"を読ã¿å–ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: ../../port/exec.c:523 +#: ../../common/exec.c:523 #, c-format msgid "pclose failed: %s" msgstr "pcloseãŒå¤±æ•—ã—ã¾ã—ãŸ: %s" -#: pg_config.c:243 pg_config.c:259 pg_config.c:275 pg_config.c:291 -#: pg_config.c:307 pg_config.c:323 pg_config.c:339 pg_config.c:355 -#: pg_config.c:371 -#, c-format -msgid "not recorded\n" -msgstr "記録ã•れã¦ã„ã¾ã›ã‚“\n" - -#: pg_config.c:428 +#: pg_config.c:74 #, c-format msgid "" "\n" @@ -68,12 +69,12 @@ msgstr "" "%sã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®PostgreSQLã«é–¢ã™ã‚‹æƒ…報をæä¾›ã—ã¾ã™ã€‚\n" "\n" -#: pg_config.c:429 +#: pg_config.c:75 #, c-format msgid "Usage:\n" msgstr "使用方法:\n" -#: pg_config.c:430 +#: pg_config.c:76 #, c-format msgid "" " %s [OPTION]...\n" @@ -82,136 +83,136 @@ msgstr "" " %s [オプション]...\n" "\n" -#: pg_config.c:431 +#: pg_config.c:77 #, c-format msgid "Options:\n" msgstr "オプション:\n" -#: pg_config.c:432 +#: pg_config.c:78 #, c-format msgid " --bindir show location of user executables\n" msgstr " --bindir ユーザ実行ファイルã®å ´æ‰€ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:433 +#: pg_config.c:79 #, c-format msgid " --docdir show location of documentation files\n" msgstr " --docdir 文書ファイルã®å ´æ‰€ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:434 +#: pg_config.c:80 #, c-format msgid " --htmldir show location of HTML documentation files\n" msgstr " --htmldir html文書ファイルã®å ´æ‰€ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:435 +#: pg_config.c:81 #, c-format msgid "" " --includedir show location of C header files of the client\n" " interfaces\n" msgstr " --includedir クライアントインタフェース用Cヘッダファイルã®å ´æ‰€ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:437 +#: pg_config.c:83 #, c-format msgid " --pkgincludedir show location of other C header files\n" msgstr " --pkgincludedir ãã®ä»–ã®Cヘッダファイルã®å ´æ‰€ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:438 +#: pg_config.c:84 #, c-format msgid " --includedir-server show location of C header files for the server\n" msgstr " --includedir-server サーãƒç”¨Cヘッダファイルã®å ´æ‰€ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:439 +#: pg_config.c:85 #, c-format msgid " --libdir show location of object code libraries\n" msgstr " --libdir オブジェクトコードライブラリã®å ´æ‰€ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:440 +#: pg_config.c:86 #, c-format msgid " --pkglibdir show location of dynamically loadable modules\n" msgstr " --pkglibdir 動的ロードå¯èƒ½ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®å ´æ‰€ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:441 +#: pg_config.c:87 #, c-format msgid " --localedir show location of locale support files\n" msgstr " --localedir ロケールサãƒãƒ¼ãƒˆãƒ•ァイルã®å ´æ‰€ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:442 +#: pg_config.c:88 #, c-format msgid " --mandir show location of manual pages\n" msgstr " --mandir マニュアルページã®å ´æ‰€ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:443 +#: pg_config.c:89 #, c-format msgid " --sharedir show location of architecture-independent support files\n" msgstr " --sharedir アーキテクãƒãƒ£ã«ä¾å­˜ã—ãªã„サãƒãƒ¼ãƒˆãƒ•ァイルã®å ´æ‰€ã‚’表示ã—ã¾ã™ã€‚\n" -#: pg_config.c:444 +#: pg_config.c:90 #, c-format msgid " --sysconfdir show location of system-wide configuration files\n" msgstr " --sysconfdir システム全体ã®è¨­å®šãƒ•ァイルã®å ´æ‰€ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:445 +#: pg_config.c:91 #, c-format msgid " --pgxs show location of extension makefile\n" msgstr " --pgxs æ‹¡å¼µmakefileã®å ´æ‰€ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:446 +#: pg_config.c:92 #, c-format msgid "" " --configure show options given to \"configure\" script when\n" " PostgreSQL was built\n" msgstr " --configure PostgreSQL構築時ã®\"configure\"ã‚¹ã‚¯ãƒªãƒ—ãƒˆã§æŒ‡å®šã—ãŸã‚ªãƒ—ションを表示ã—ã¾ã™\n" -#: pg_config.c:448 +#: pg_config.c:94 #, c-format msgid " --cc show CC value used when PostgreSQL was built\n" msgstr " --cc PostgreSQL構築時ã«ä½¿ç”¨ã—ãŸCCã®å€¤ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:449 +#: pg_config.c:95 #, c-format msgid " --cppflags show CPPFLAGS value used when PostgreSQL was built\n" msgstr " --cppflags PostgreSQL構築時ã«ä½¿ç”¨ã—ãŸCPPFLAGSã®å€¤ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:450 +#: pg_config.c:96 #, c-format msgid " --cflags show CFLAGS value used when PostgreSQL was built\n" msgstr " --cflags PostgreSQL構築時ã«ä½¿ç”¨ã—ãŸCFLAGSã®å€¤ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:451 +#: pg_config.c:97 #, c-format msgid " --cflags_sl show CFLAGS_SL value used when PostgreSQL was built\n" msgstr " --cflags_sl PostgreSQL構築時ã«ä½¿ç”¨ã—ãŸCFLAGS_SLã®å€¤ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:452 +#: pg_config.c:98 #, c-format msgid " --ldflags show LDFLAGS value used when PostgreSQL was built\n" msgstr " --ldflags PostgreSQL構築時ã«ä½¿ç”¨ã—ãŸLDFLAGSã®å€¤ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:453 +#: pg_config.c:99 #, c-format msgid " --ldflags_ex show LDFLAGS_EX value used when PostgreSQL was built\n" msgstr " --ldflags_ex PostgreSQL構築時ã«ä½¿ç”¨ã—ãŸLDFLAGS_EXã®å€¤ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:454 +#: pg_config.c:100 #, c-format msgid " --ldflags_sl show LDFLAGS_SL value used when PostgreSQL was built\n" msgstr " --ldflags_sl PostgreSQL構築時ã«ä½¿ç”¨ã—ãŸLDFLAGS_SLã®å€¤ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:455 +#: pg_config.c:101 #, c-format msgid " --libs show LIBS value used when PostgreSQL was built\n" msgstr " --libs PostgreSQL構築時ã«ä½¿ç”¨ã—ãŸLIBSã®å€¤ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:456 +#: pg_config.c:102 #, c-format msgid " --version show the PostgreSQL version\n" msgstr " --version PostgreSQLã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’表示ã—ã¾ã™\n" -#: pg_config.c:457 +#: pg_config.c:103 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help ã“ã®ãƒ˜ãƒ«ãƒ—を表示ã—ã€çµ‚了ã—ã¾ã™\n" -#: pg_config.c:458 +#: pg_config.c:104 #, c-format msgid "" "\n" @@ -222,43 +223,23 @@ msgstr "" "引数ãŒãªã„å ´åˆã€æ—¢çŸ¥ã®é …目をã™ã¹ã¦è¡¨ç¤ºã—ã¾ã™ã€‚\n" "\n" -#: pg_config.c:459 +#: pg_config.c:105 #, c-format msgid "Report bugs to .\n" msgstr "ä¸å…·åˆã¯ã¾ã§å ±å‘Šã—ã¦ãã ã•ã„。\n" -#: pg_config.c:465 +#: pg_config.c:111 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "詳細ã¯\"%s --help\"を行ã£ã¦ãã ã•ã„\n" -#: pg_config.c:504 +#: pg_config.c:153 #, c-format msgid "%s: could not find own program executable\n" msgstr "%s: 実行ファイル自体ãŒã‚りã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_config.c:527 +#: pg_config.c:180 #, c-format msgid "%s: invalid argument: %s\n" msgstr "%s: 無効ãªå¼•æ•°ã§ã™: %s\n" -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help ヘルプを表示ã—ã€çµ‚了ã—ã¾ã™\n" - -#~ msgid "could not change directory to \"%s\"" -#~ msgstr "ディレクトリ\"%s\"ã«ç§»å‹•ã§ãã¾ã›ã‚“ã§ã—ãŸ" - -#~ msgid "child process was terminated by signal %s" -#~ msgstr "å­ãƒ—ロセスãŒã‚·ã‚°ãƒŠãƒ«%sã§çµ‚了ã—ã¾ã—ãŸ" - -#~ msgid "child process was terminated by exception 0x%X" -#~ msgstr "å­ãƒ—ロセスãŒä¾‹å¤–0x%Xã§çµ‚了ã—ã¾ã—ãŸ" - -#~ msgid "child process exited with exit code %d" -#~ msgstr "å­ãƒ—ロセスãŒçµ‚了コード%dã§çµ‚了ã—ã¾ã—ãŸ" - -#~ msgid "child process exited with unrecognized status %d" -#~ msgstr "å­ãƒ—ãƒ­ã‚»ã‚¹ãŒæœªçŸ¥ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹%dã§çµ‚了ã—ã¾ã—ãŸ" - -#~ msgid "child process was terminated by signal %d" -#~ msgstr "å­ãƒ—ロセスãŒã‚·ã‚°ãƒŠãƒ«%dã§çµ‚了ã—ã¾ã—ãŸ" diff --git a/src/bin/pg_config/po/ko.po b/src/bin/pg_config/po/ko.po index 6a974aa6bb..82a89314b4 100644 --- a/src/bin/pg_config/po/ko.po +++ b/src/bin/pg_config/po/ko.po @@ -1,27 +1,64 @@ # Korean message translation file for PostgreSQL pg_config -# Ioseph Kim , 2004. +# Ioseph Kim , 2016. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 8.4\n" +"Project-Id-Version: PostgreSQL 9.6 pg_config\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-09-09 16:34+0000\n" -"PO-Revision-Date: 2013-09-05 22:34-0400\n" -"Last-Translator: EnterpriseDB translation team \n" -"Language-Team: EnterpriseDB translation team \n" +"POT-Creation-Date: 2016-09-26 14:02+0900\n" +"PO-Revision-Date: 2016-09-26 16:47+0900\n" +"Last-Translator: Ioseph Kim \n" +"Language-Team: Korean team \n" "Language: ko\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=euc-kr\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: pg_config.c:243 pg_config.c:259 pg_config.c:275 pg_config.c:291 -#: pg_config.c:307 pg_config.c:323 pg_config.c:339 pg_config.c:355 +#: ../../common/config_info.c:131 ../../common/config_info.c:139 +#: ../../common/config_info.c:147 ../../common/config_info.c:155 +#: ../../common/config_info.c:163 ../../common/config_info.c:171 +#: ../../common/config_info.c:179 ../../common/config_info.c:187 +#: ../../common/config_info.c:195 +msgid "not recorded" +msgstr "기ë¡ë˜ì–´ 있지 않ìŒ" + +#: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 +#, c-format +msgid "could not identify current directory: %s" +msgstr "현재 디렉터리를 알 수 ì—†ìŒ: %s" + +#: ../../common/exec.c:146 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "ìž˜ëª»ëœ ë°”ì´ë„ˆë¦¬ 파ì¼: \"%s\"" + +#: ../../common/exec.c:195 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "\"%s\" ë°”ì´ë„ˆë¦¬ 파ì¼ì„ ì½ì„ 수 ì—†ìŒ" + +#: ../../common/exec.c:202 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "실행할 \"%s\" íŒŒì¼ ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: ../../common/exec.c:257 ../../common/exec.c:293 +#, c-format +msgid "could not change directory to \"%s\": %s" +msgstr "\"%s\" 디렉터리로 바꿀 수 ì—†ìŒ: %s" + +#: ../../common/exec.c:272 #, c-format -msgid "not recorded\n" -msgstr "ÇØ´ç Á¤º¸ ¾øÀ½\n" +msgid "could not read symbolic link \"%s\"" +msgstr "\"%s\" 심벌릭 ë§í¬ë¥¼ ì½ì„ 수 ì—†ìŒ" -#: pg_config.c:411 +#: ../../common/exec.c:523 +#, c-format +msgid "pclose failed: %s" +msgstr "pclose 실패: %s" + +#: pg_config.c:74 #, c-format msgid "" "\n" @@ -29,15 +66,15 @@ msgid "" "\n" msgstr "" "\n" -"%s ÇÁ·Î±×·¥Àº ¼³Ä¡µÈ PostgreSQL ¹öÀü¿¡ ´ëÇÑ Á¤º¸¸¦ Á¦°øÇÕ´Ï´Ù.\n" +"%s í”„ë¡œê·¸ëž¨ì€ ì„¤ì¹˜ëœ PostgreSQL ë²„ì „ì— ëŒ€í•œ 정보를 제공합니다.\n" "\n" -#: pg_config.c:412 +#: pg_config.c:75 #, c-format msgid "Usage:\n" -msgstr "»ç¿ë¹ý:\n" +msgstr "사용법:\n" -#: pg_config.c:413 +#: pg_config.c:76 #, c-format msgid "" " %s [OPTION]...\n" @@ -46,151 +83,159 @@ msgstr "" " %s [OPTION]...\n" "\n" -#: pg_config.c:414 +#: pg_config.c:77 #, c-format msgid "Options:\n" -msgstr "¿É¼Çµé:\n" +msgstr "옵션들:\n" -#: pg_config.c:415 +#: pg_config.c:78 #, c-format msgid " --bindir show location of user executables\n" msgstr "" -" --bindir »ç¿ëÀÚ°¡ ½ÇÇàÇÒ ¼ö ÀÖ´Â ÀÀ¿ëÇÁ·Î±×·¥µéÀÌ ÀÖ´Â\n" -" °æ·Î¸¦ º¸¿©ÁÜ\n" +" --bindir 사용ìžê°€ 실행할 수 있는 ì‘ìš©í”„ë¡œê·¸ëž¨ë“¤ì´ ìžˆëŠ”\n" +" 경로를 보여줌\n" -#: pg_config.c:416 +#: pg_config.c:79 #, c-format msgid " --docdir show location of documentation files\n" -msgstr " --docdir ¹®¼­ ÆÄÀϵéÀÌ ÀÖ´Â À§Ä¡¸¦ º¸¿©ÁÜ\n" +msgstr " --docdir 문서 파ì¼ë“¤ì´ 있는 위치를 보여줌\n" -#: pg_config.c:417 +#: pg_config.c:80 #, c-format msgid " --htmldir show location of HTML documentation files\n" -msgstr " --htmldir HTML ¹®¼­ ÆÄÀÏÀÇ À§Ä¡¸¦ º¸¿©ÁÜ\n" +msgstr " --htmldir HTML 문서 파ì¼ì˜ 위치를 보여줌\n" -#: pg_config.c:418 +#: pg_config.c:81 #, c-format msgid "" " --includedir show location of C header files of the client\n" " interfaces\n" msgstr "" -" --includedir Ŭ¶óÀÌ¾ðÆ® ÀÎÅÍÆäÀ̽ºÀÇ C Çì´õ ÆÄÀÏÀÌ ÀÖ´Â °æ·Î¸¦\n" -" º¸¿©ÁÜ\n" +" --includedir í´ë¼ì´ì–¸íЏ ì¸í„°íŽ˜ì´ìŠ¤ì˜ C í—¤ë” íŒŒì¼ì´ 있는 경로를\n" +" 보여줌\n" -#: pg_config.c:420 +#: pg_config.c:83 #, c-format msgid " --pkgincludedir show location of other C header files\n" -msgstr " --pkgincludedir ±âŸ C Çì´õ ÆÄÀÏ À§Ä¡¸¦ º¸¿©ÁÜ\n" +msgstr " --pkgincludedir 기타 C í—¤ë” íŒŒì¼ ìœ„ì¹˜ë¥¼ 보여줌\n" -#: pg_config.c:421 +#: pg_config.c:84 #, c-format msgid "" " --includedir-server show location of C header files for the server\n" -msgstr " --includedir-server ¼­¹ö¿ë C Çì´õ ÆÄÀÏ °æ·Î¸¦ º¸¿©ÁÜ\n" +msgstr " --includedir-server 서버용 C í—¤ë” íŒŒì¼ ê²½ë¡œë¥¼ 보여줌\n" -#: pg_config.c:422 +#: pg_config.c:85 #, c-format msgid " --libdir show location of object code libraries\n" -msgstr " --libdir ¶óÀ̺귯¸® °æ·Î¸¦ º¸¿©ÁÜ\n" +msgstr " --libdir ë¼ì´ë¸ŒëŸ¬ë¦¬ 경로를 보여줌\n" -#: pg_config.c:423 +#: pg_config.c:86 #, c-format msgid " --pkglibdir show location of dynamically loadable modules\n" -msgstr " --pkglibdir µ¿Àû È£Ãâ °¡´É ¸ðµâÀÇ °æ·Î¸¦ º¸¿©ÁÜ\n" +msgstr " --pkglibdir ë™ì  호출 가능 ëª¨ë“ˆì˜ ê²½ë¡œë¥¼ 보여줌\n" -#: pg_config.c:424 +#: pg_config.c:87 #, c-format msgid " --localedir show location of locale support files\n" -msgstr " --localedir ·ÎÄÉÀÎ Áö¿ø ÆÄÀϵéÀÇ À§Ä¡¸¦ º¸¿©ÁÜ\n" +msgstr " --localedir ë¡œì¼€ì¸ ì§€ì› íŒŒì¼ë“¤ì˜ 위치를 보여줌\n" -#: pg_config.c:425 +#: pg_config.c:88 #, c-format msgid " --mandir show location of manual pages\n" -msgstr " --mandir ¸ÇÆäÀÌÁö À§Ä¡¸¦ º¸¿©ÁÜ\n" +msgstr " --mandir 맨페ì´ì§€ 위치를 보여줌\n" -#: pg_config.c:426 +#: pg_config.c:89 #, c-format msgid "" " --sharedir show location of architecture-independent support " "files\n" msgstr "" -" --sharedir °¢Á¾ °ø¿ëÀ¸·Î »ç¿ëµÇ´Â share ÆÄÀϵéÀÇ À§Ä¡¸¦ º¸¿©ÁÜ\n" +" --sharedir ê°ì¢… 공용으로 사용ë˜ëŠ” share 파ì¼ë“¤ì˜ 위치를 보여줌\n" -#: pg_config.c:427 +#: pg_config.c:90 #, c-format msgid "" " --sysconfdir show location of system-wide configuration files\n" -msgstr " --sysconfdir ½Ã½ºÅÛ Àü¿ª ȯ°æ ¼³Á¤ ÆÄÀÏÀÇ À§Ä¡¸¦ º¸¿©ÁÜ\n" +msgstr " --sysconfdir 시스템 ì „ì—­ 환경 설정 파ì¼ì˜ 위치를 보여줌\n" -#: pg_config.c:428 +#: pg_config.c:91 #, c-format msgid " --pgxs show location of extension makefile\n" -msgstr " --pgxs È®Àå makefile °æ·Î¸¦ º¸¿©ÁÜ\n" +msgstr " --pgxs 확장 makefile 경로를 보여줌\n" -#: pg_config.c:429 +#: pg_config.c:92 #, c-format msgid "" " --configure show options given to \"configure\" script when\n" " PostgreSQL was built\n" msgstr "" -" --configure PostgreSQL ¸¸µé ¶§ »ç¿ëÇÑ \"configure\" ½ºÅ©¸³Æ®ÀÇ\n" -" ¿É¼ÇµéÀ» º¸¿©ÁÜ\n" +" --configure PostgreSQL 만들 때 사용한 \"configure\" 스í¬ë¦½íЏì˜\n" +" ì˜µì…˜ë“¤ì„ ë³´ì—¬ì¤Œ\n" -#: pg_config.c:431 +#: pg_config.c:94 #, c-format msgid " --cc show CC value used when PostgreSQL was built\n" -msgstr " --cc PostgreSQL ¸¸µé ¶§ »ç¿ëµÈ CC °ªÀ» º¸¿©ÁÜ\n" +msgstr " --cc PostgreSQL 만들 때 ì‚¬ìš©ëœ CC ê°’ì„ ë³´ì—¬ì¤Œ\n" -#: pg_config.c:432 +#: pg_config.c:95 #, c-format msgid "" " --cppflags show CPPFLAGS value used when PostgreSQL was built\n" -msgstr " --cppflags PostgreSQL ¸¸µé ¶§ ÁöÁ¤ÇÑ CPPFLAGS °ª\n" +msgstr " --cppflags PostgreSQL 만들 때 지정한 CPPFLAGS ê°’\n" -#: pg_config.c:433 +#: pg_config.c:96 #, c-format msgid "" " --cflags show CFLAGS value used when PostgreSQL was built\n" msgstr "" -" --cflags PostgreSQL ¸¸µé ¶§, »ç¿ëÇÑ CFLAGS °ªÀ» º¸¿©ÁÜ\n" +" --cflags PostgreSQL 만들 때, 사용한 CFLAGS ê°’ì„ ë³´ì—¬ì¤Œ\n" -#: pg_config.c:434 +#: pg_config.c:97 #, c-format msgid "" " --cflags_sl show CFLAGS_SL value used when PostgreSQL was built\n" -msgstr " --cflags_sl PostgreSQL ¸¸µé ¶§ ÁöÁ¤ÇÑ CFLAGS_SL °ª\n" +msgstr " --cflags_sl PostgreSQL 만들 때 지정한 CFLAGS_SL ê°’\n" -#: pg_config.c:435 +#: pg_config.c:98 #, c-format msgid "" " --ldflags show LDFLAGS value used when PostgreSQL was built\n" msgstr "" -" --ldflags PostgreSQL ¸¸µé ¶§, »ç¿ëÇÑ LDFLAGS °ªÀ» º¸¿©ÁÜ\n" +" --ldflags PostgreSQL 만들 때, 사용한 LDFLAGS ê°’ì„ ë³´ì—¬ì¤Œ\n" -#: pg_config.c:436 +#: pg_config.c:99 +#, c-format +msgid "" +" --ldflags_ex show LDFLAGS_EX value used when PostgreSQL was " +"built\n" +msgstr "" +" --ldflags_ex PostgreSQL 만들 때, 사용한 LDFLAGS_EX ê°’ì„ ë³´ì—¬ì¤Œ\n" + +#: pg_config.c:100 #, c-format msgid "" " --ldflags_sl show LDFLAGS_SL value used when PostgreSQL was " "built\n" -msgstr " --ldflags_sl PostgreSQL ¸¸µé ¶§ ÁöÁ¤ÇÑ LDFLAGS_SL °ª\n" +msgstr " --ldflags_sl PostgreSQL 만들 때 지정한 LDFLAGS_SL ê°’\n" -#: pg_config.c:437 +#: pg_config.c:101 #, c-format msgid "" " --libs show LIBS value used when PostgreSQL was built\n" -msgstr " --libs PostgreSQL ¸¸µé ¶§, »ç¿ëÇÑ LIBS °ªÀ» º¸¿©ÁÜ\n" +msgstr " --libs PostgreSQL 만들 때, 사용한 LIBS ê°’ì„ ë³´ì—¬ì¤Œ\n" -#: pg_config.c:438 +#: pg_config.c:102 #, c-format msgid " --version show the PostgreSQL version\n" -msgstr " --version PostgreSQL ¹öÀüÀ» º¸¿©ÁÜ\n" +msgstr " --version PostgreSQL ë²„ì „ì„ ë³´ì—¬ì¤Œ\n" -#: pg_config.c:439 +#: pg_config.c:103 #, c-format -msgid " --help show this help, then exit\n" -msgstr " --help ÀÌ µµ¿ò¸»À» º¸¿©ÁÖ°í ¸¶Ä§\n" +msgid " -?, --help show this help, then exit\n" +msgstr " -?, --help ì´ ë„움ë§ì„ 보여주고 마침\n" -#: pg_config.c:440 +#: pg_config.c:104 #, c-format msgid "" "\n" @@ -198,80 +243,46 @@ msgid "" "\n" msgstr "" "\n" -"¸í·ÉÇà Àμö°¡ ¾øÀ¸¸é ¸ðµç Ç׸ñ¿¡ ´ëÇÑ Á¤º¸¸¦ º¸¿© ÁÜ\n" +"명령행 ì¸ìˆ˜ê°€ 없으면 모든 í•­ëª©ì— ëŒ€í•œ 정보를 ë³´ì—¬ 줌\n" "\n" -#: pg_config.c:441 +#: pg_config.c:105 #, c-format msgid "Report bugs to .\n" -msgstr "¿À·ùº¸°í: .\n" +msgstr "오류보고: .\n" -#: pg_config.c:447 +#: pg_config.c:111 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "º¸´Ù ÀÚ¼¼ÇÑ Á¤º¸°¡ ÇÊ¿äÇϸé, \"%s --help\"\n" +msgstr "보다 ìžì„¸í•œ ì •ë³´ê°€ 필요하면, \"%s --help\"\n" -#: pg_config.c:486 +#: pg_config.c:153 #, c-format msgid "%s: could not find own program executable\n" -msgstr "%s: ½ÇÇà °¡´ÉÇÑ ÇÁ·Î±×·¥À» ãÀ» ¼ö ¾ø½À´Ï´Ù\n" +msgstr "%s: 실행 가능한 í”„ë¡œê·¸ëž¨ì„ ì°¾ì„ ìˆ˜ 없습니다\n" -#: pg_config.c:509 +#: pg_config.c:180 #, c-format msgid "%s: invalid argument: %s\n" -msgstr "%s: À߸øµÈ Àμö: %s\n" +msgstr "%s: ìž˜ëª»ëœ ì¸ìˆ˜: %s\n" -#: ../../port/exec.c:195 ../../port/exec.c:309 ../../port/exec.c:352 -#, c-format -msgid "could not identify current directory: %s" -msgstr "ÇöÀç µð·ºÅ͸®¸¦ ¾Ë ¼ö ¾øÀ½: %s" +#~ msgid "child process exited with unrecognized status %d" +#~ msgstr "하위 프로세스가 종료ë˜ì—ˆìŒ, 알수 없는 ìƒíƒœ %d" -#: ../../port/exec.c:214 -#, c-format -msgid "invalid binary \"%s\"" -msgstr "À߸øµÈ ¹ÙÀ̳ʸ® ÆÄÀÏ: \"%s\"" +#~ msgid "child process was terminated by signal %d" +#~ msgstr "하위 프로세스가 종료ë˜ì—ˆìŒ, ì‹œê·¸ë„ %d" -#: ../../port/exec.c:263 -#, c-format -msgid "could not read binary \"%s\"" -msgstr "\"%s\" ¹ÙÀ̳ʸ® ÆÄÀÏÀ» ÀÐÀ» ¼ö ¾øÀ½" +#~ msgid "child process was terminated by signal %s" +#~ msgstr "%s 시그ë„ì´ ê°ì§€ë˜ì–´ 하위 프로세스가 종료ë˜ì—ˆìŒ" -#: ../../port/exec.c:270 -#, c-format -msgid "could not find a \"%s\" to execute" -msgstr "½ÇÇàÇÒ \"%s\" ÆÄÀÏ Ã£À» ¼ö ¾øÀ½" +#~ msgid "child process was terminated by exception 0x%X" +#~ msgstr "0x%X ì˜ˆì™¸ì²˜ë¦¬ì— ì˜í•´ 하위 프로세스가 종료ë˜ì—ˆìŒ" -#: ../../port/exec.c:325 ../../port/exec.c:361 -#, c-format -msgid "could not change directory to \"%s\"" -msgstr "\"%s\" µð·ºÅ͸®·Î À̵¿ ÇÒ ¼ö ¾øÀ½" +#~ msgid "child process exited with exit code %d" +#~ msgstr "하위 프로세스가 종료ë˜ì—ˆìŒ, 종료 코드 %d" -#: ../../port/exec.c:340 -#, c-format -msgid "could not read symbolic link \"%s\"" -msgstr "\"%s\" ½É¹ú¸¯ ¸µÅ©¸¦ ÀÐÀ» ¼ö ¾øÀ½" - -#: ../../port/exec.c:586 -#, c-format -msgid "child process exited with exit code %d" -msgstr "ÇÏÀ§ ÇÁ·Î¼¼½º°¡ Á¾·áµÇ¾úÀ½, Á¾·á ÄÚµå %d" - -#: ../../port/exec.c:590 -#, c-format -msgid "child process was terminated by exception 0x%X" -msgstr "0x%X ¿¹¿Ü󸮿¡ ÀÇÇØ ÇÏÀ§ ÇÁ·Î¼¼½º°¡ Á¾·áµÇ¾úÀ½" +#~ msgid "could not change directory to \"%s\"" +#~ msgstr "\"%s\" 디렉터리로 ì´ë™ í•  수 ì—†ìŒ" -#: ../../port/exec.c:599 -#, c-format -msgid "child process was terminated by signal %s" -msgstr "%s ½Ã±×³ÎÀÌ °¨ÁöµÇ¾î ÇÏÀ§ ÇÁ·Î¼¼½º°¡ Á¾·áµÇ¾úÀ½" - -#: ../../port/exec.c:602 -#, c-format -msgid "child process was terminated by signal %d" -msgstr "ÇÏÀ§ ÇÁ·Î¼¼½º°¡ Á¾·áµÇ¾úÀ½, ½Ã±×³Î %d" - -#: ../../port/exec.c:606 -#, c-format -msgid "child process exited with unrecognized status %d" -msgstr "ÇÏÀ§ ÇÁ·Î¼¼½º°¡ Á¾·áµÇ¾úÀ½, ¾Ë¼ö ¾ø´Â »óÅ %d" +#~ msgid " --help show this help, then exit\n" +#~ msgstr " --help ì´ ë„움ë§ì„ 보여주고 마침\n" diff --git a/src/bin/pg_config/po/sv.po b/src/bin/pg_config/po/sv.po index f1abcf24ea..2ccb89c9a4 100644 --- a/src/bin/pg_config/po/sv.po +++ b/src/bin/pg_config/po/sv.po @@ -1,5 +1,5 @@ # Swedish message translation file for pg_config. -# Dennis Björklund , 2004, 2005, 2006. +# Dennis Björklund , 2004, 2005, 2006, 2017. # Mats Erik Andersson , 2014. # msgid "" @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: PostgreSQL 9.4\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" "POT-Creation-Date: 2014-11-17 21:11+0000\n" -"PO-Revision-Date: 2014-11-22 23:54+0100\n" -"Last-Translator: Mats Erik Andersson \n" +"PO-Revision-Date: 2017-07-21 06:14+0200\n" +"Last-Translator: Dennis Björklund \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" @@ -18,17 +18,17 @@ msgstr "" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, c-format msgid "could not identify current directory: %s" -msgstr "kunde inte identifiera aktuella katalogen: %s" +msgstr "kunde inte identifiera aktuell katalog: %s" #: ../../common/exec.c:146 #, c-format msgid "invalid binary \"%s\"" -msgstr "ogiltig binärfil \"%s\"" +msgstr "ogiltig binär \"%s\"" #: ../../common/exec.c:195 #, c-format msgid "could not read binary \"%s\"" -msgstr "kunde inte läsa binärfil \"%s\"" +msgstr "kunde inte läsa binär \"%s\"" #: ../../common/exec.c:202 #, c-format @@ -85,7 +85,7 @@ msgstr "" #: pg_config.c:431 #, c-format msgid "Options:\n" -msgstr "Programväxlar:\n" +msgstr "Flaggor:\n" #: pg_config.c:432 #, c-format @@ -239,9 +239,9 @@ msgstr "Försök med \"%s --help\" för mer information.\n" #: pg_config.c:504 #, c-format msgid "%s: could not find own program executable\n" -msgstr "%s: Kunde inte hitta min egen körbara fil.\n" +msgstr "%s: kunde inte hitta min egen körbara fil.\n" #: pg_config.c:527 #, c-format msgid "%s: invalid argument: %s\n" -msgstr "%s: Ogiltigt argument: %s\n" +msgstr "%s: ogiltigt argument: %s\n" diff --git a/src/bin/pg_controldata/po/es.po b/src/bin/pg_controldata/po/es.po index 446ee55201..e15c5ac8b3 100644 --- a/src/bin/pg_controldata/po/es.po +++ b/src/bin/pg_controldata/po/es.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: pg_controldata (PostgreSQL 9.6)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-05-02 20:15+0000\n" +"POT-Creation-Date: 2017-08-27 21:53+0000\n" "PO-Revision-Date: 2016-05-23 09:44-0500\n" "Last-Translator: Carlos Chapi \n" "Language-Team: Castellano \n" diff --git a/src/bin/pg_controldata/po/fr.po b/src/bin/pg_controldata/po/fr.po index 99fda34bdb..b3aaa7b718 100644 --- a/src/bin/pg_controldata/po/fr.po +++ b/src/bin/pg_controldata/po/fr.po @@ -1,11 +1,11 @@ # translation of pg_controldata.po to fr_fr # french message translation file for pg_controldata # -# Use these quotes: « %s » +# Use these quotes: « %s » # -# Loïc Hennequin , 2002. +# Loïc Hennequin , 2002. # Guillaume Lelarge , 2003-2009. -# Stéphane Schildknecht , 2009. +# Stéphane Schildknecht , 2009. msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" @@ -16,23 +16,23 @@ msgstr "" "Language-Team: PostgreSQLfr \n" "Language: fr\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.8.7.1\n" #: ../../common/controldata_utils.c:56 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" -msgstr "%s : n'a pas pu ouvrir le fichier « %s » en lecture : %s\n" +msgstr "%s : n'a pas pu ouvrir le fichier « %s » en lecture : %s\n" #: ../../common/controldata_utils.c:69 #, c-format msgid "%s: could not read file \"%s\": %s\n" -msgstr "%s : n'a pas pu lire le fichier « %s » : %s\n" +msgstr "%s : n'a pas pu lire le fichier « %s » : %s\n" #: ../../common/controldata_utils.c:86 msgid "calculated CRC checksum does not match value stored in file" -msgstr "la somme de contrôle CRC calculée ne correspond par à la valeur enregistrée dans le fichier" +msgstr "la somme de contrôle CRC calculée ne correspond par à la valeur enregistrée dans le fichier" #: ../../common/controldata_utils.c:88 #, c-format @@ -42,16 +42,16 @@ msgid "" "is expecting. The results below are untrustworthy.\n" "\n" msgstr "" -"ATTENTION : Les sommes de contrôle (CRC) calculées ne correspondent pas aux\n" -"valeurs stockées dans le fichier.\n" -"Soit le fichier est corrompu, soit son organisation diffère de celle\n" +"ATTENTION : Les sommes de contrôle (CRC) calculées ne correspondent pas aux\n" +"valeurs stockées dans le fichier.\n" +"Soit le fichier est corrompu, soit son organisation diffère de celle\n" "attendue par le programme.\n" -"Les résultats ci-dessous ne sont pas dignes de confiance.\n" +"Les résultats ci-dessous ne sont pas dignes de confiance.\n" "\n" #: ../../common/controldata_utils.c:97 msgid "byte ordering mismatch" -msgstr "différence de l'ordre des octets" +msgstr "différence de l'ordre des octets" #: ../../common/controldata_utils.c:99 #, c-format @@ -61,11 +61,11 @@ msgid "" "used by this program. In that case the results below would be incorrect, and\n" "the PostgreSQL installation would be incompatible with this data directory.\n" msgstr "" -"ATTENTION : possible incohérence dans l'ordre des octets\n" -"L'ordre des octets utilisé pour enregistrer le fichier pg_control peut ne\n" -"pas correspondre à celui utilisé par ce programme. Dans ce cas, les\n" -"résultats ci-dessous sont incorrects, et l'installation PostgreSQL\n" -"incompatible avec ce répertoire des données.\n" +"ATTENTION : possible incohérence dans l'ordre des octets\n" +"L'ordre des octets utilisé pour enregistrer le fichier pg_control peut ne\n" +"pas correspondre à celui utilisé par ce programme. Dans ce cas, les\n" +"résultats ci-dessous sont incorrects, et l'installation PostgreSQL\n" +"incompatible avec ce répertoire des données.\n" #: pg_controldata.c:33 #, c-format @@ -73,7 +73,7 @@ msgid "" "%s displays control information of a PostgreSQL database cluster.\n" "\n" msgstr "" -"%s affiche les informations de contrôle du cluster de bases de données\n" +"%s affiche les informations de contrôle du cluster de bases de données\n" "PostgreSQL.\n" "\n" @@ -85,7 +85,7 @@ msgstr "Usage :\n" #: pg_controldata.c:35 #, c-format msgid " %s [OPTION] [DATADIR]\n" -msgstr " %s [OPTION] [RÉP_DONNÉES]\n" +msgstr " %s [OPTION] [RÉP_DONNÉES]\n" #: pg_controldata.c:36 #, c-format @@ -99,7 +99,7 @@ msgstr "" #: pg_controldata.c:37 #, c-format msgid " [-D] DATADIR data directory\n" -msgstr " [-D] RÉPDONNEES répertoire de la base de données\n" +msgstr " [-D] RÉPDONNEES répertoire de la base de données\n" #: pg_controldata.c:38 #, c-format @@ -120,38 +120,38 @@ msgid "" "\n" msgstr "" "\n" -"Si aucun répertoire (RÉP_DONNÉES) n'est indiqué, la variable\n" -"d'environnement PGDATA est utilisée.\n" +"Si aucun répertoire (RÉP_DONNÉES) n'est indiqué, la variable\n" +"d'environnement PGDATA est utilisée.\n" "\n" #: pg_controldata.c:42 #, c-format msgid "Report bugs to .\n" -msgstr "Rapporter les bogues à .\n" +msgstr "Rapporter les bogues à .\n" #: pg_controldata.c:52 msgid "starting up" -msgstr "démarrage en cours" +msgstr "démarrage en cours" #: pg_controldata.c:54 msgid "shut down" -msgstr "arrêt" +msgstr "arrêt" #: pg_controldata.c:56 msgid "shut down in recovery" -msgstr "arrêt pendant la restauration" +msgstr "arrêt pendant la restauration" #: pg_controldata.c:58 msgid "shutting down" -msgstr "arrêt en cours" +msgstr "arrêt en cours" #: pg_controldata.c:60 msgid "in crash recovery" -msgstr "restauration en cours (suite à un arrêt brutal)" +msgstr "restauration en cours (suite à un arrêt brutal)" #: pg_controldata.c:62 msgid "in archive recovery" -msgstr "restauration en cours (à partir des archives)" +msgstr "restauration en cours (à partir des archives)" #: pg_controldata.c:64 msgid "in production" @@ -168,57 +168,57 @@ msgstr "wal_level non reconnu" #: pg_controldata.c:127 pg_controldata.c:145 pg_controldata.c:153 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Essayer « %s --help » pour plus d'informations.\n" +msgstr "Essayer « %s --help » pour plus d'informations.\n" #: pg_controldata.c:143 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" -msgstr "%s : trop d'arguments en ligne de commande (le premier étant « %s »)\n" +msgstr "%s : trop d'arguments en ligne de commande (le premier étant « %s »)\n" #: pg_controldata.c:152 #, c-format msgid "%s: no data directory specified\n" -msgstr "%s : aucun répertoire de données indiqué\n" +msgstr "%s : aucun répertoire de données indiqué\n" #: pg_controldata.c:190 #, c-format msgid "pg_control version number: %u\n" -msgstr "Numéro de version de pg_control : %u\n" +msgstr "Numéro de version de pg_control : %u\n" #: pg_controldata.c:192 #, c-format msgid "Catalog version number: %u\n" -msgstr "Numéro de version du catalogue : %u\n" +msgstr "Numéro de version du catalogue : %u\n" #: pg_controldata.c:194 #, c-format msgid "Database system identifier: %s\n" -msgstr "Identifiant du système de base de données : %s\n" +msgstr "Identifiant du système de base de données : %s\n" #: pg_controldata.c:196 #, c-format msgid "Database cluster state: %s\n" -msgstr "État du cluster de base de données : %s\n" +msgstr "État du cluster de base de données : %s\n" #: pg_controldata.c:198 #, c-format msgid "pg_control last modified: %s\n" -msgstr "Dernière modification de pg_control : %s\n" +msgstr "Dernière modification de pg_control : %s\n" #: pg_controldata.c:200 #, c-format msgid "Latest checkpoint location: %X/%X\n" -msgstr "Dernier point de contrôle : %X/%X\n" +msgstr "Dernier point de contrôle : %X/%X\n" #: pg_controldata.c:203 #, c-format msgid "Prior checkpoint location: %X/%X\n" -msgstr "Point de contrôle précédent : %X/%X\n" +msgstr "Point de contrôle précédent : %X/%X\n" #: pg_controldata.c:206 #, c-format msgid "Latest checkpoint's REDO location: %X/%X\n" -msgstr "Dernier REDO (reprise) du point de contrôle : %X/%X\n" +msgstr "Dernier REDO (reprise) du point de contrôle : %X/%X\n" #: pg_controldata.c:209 #, c-format @@ -228,7 +228,7 @@ msgstr "Dernier fichier WAL du rejeu du point de restauration : %s\n" #: pg_controldata.c:211 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" -msgstr "Dernier TimeLineID du point de contrôle : %u\n" +msgstr "Dernier TimeLineID du point de contrôle : %u\n" #: pg_controldata.c:213 #, c-format @@ -238,50 +238,50 @@ msgstr "Dernier PrevTimeLineID du point de restauration : %u\n" #: pg_controldata.c:215 #, c-format msgid "Latest checkpoint's full_page_writes: %s\n" -msgstr "Dernier full_page_writes du point de contrôle : %s\n" +msgstr "Dernier full_page_writes du point de contrôle : %s\n" #: pg_controldata.c:216 pg_controldata.c:261 pg_controldata.c:271 msgid "off" -msgstr "désactivé" +msgstr "désactivé" #: pg_controldata.c:216 pg_controldata.c:261 pg_controldata.c:271 msgid "on" -msgstr "activé" +msgstr "activé" #: pg_controldata.c:217 #, c-format msgid "Latest checkpoint's NextXID: %u:%u\n" -msgstr "Dernier NextXID du point de contrôle : %u:%u\n" +msgstr "Dernier NextXID du point de contrôle : %u:%u\n" #: pg_controldata.c:220 #, c-format msgid "Latest checkpoint's NextOID: %u\n" -msgstr "Dernier NextOID du point de contrôle : %u\n" +msgstr "Dernier NextOID du point de contrôle : %u\n" #: pg_controldata.c:222 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" -msgstr "Dernier NextMultiXactId du point de contrôle : %u\n" +msgstr "Dernier NextMultiXactId du point de contrôle : %u\n" #: pg_controldata.c:224 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" -msgstr "Dernier NextMultiOffset du point de contrôle : %u\n" +msgstr "Dernier NextMultiOffset du point de contrôle : %u\n" #: pg_controldata.c:226 #, c-format msgid "Latest checkpoint's oldestXID: %u\n" -msgstr "Dernier oldestXID du point de contrôle : %u\n" +msgstr "Dernier oldestXID du point de contrôle : %u\n" #: pg_controldata.c:228 #, c-format msgid "Latest checkpoint's oldestXID's DB: %u\n" -msgstr "Dernier oldestXID du point de contrôle de la base : %u\n" +msgstr "Dernier oldestXID du point de contrôle de la base : %u\n" #: pg_controldata.c:230 #, c-format msgid "Latest checkpoint's oldestActiveXID: %u\n" -msgstr "Dernier oldestActiveXID du point de contrôle : %u\n" +msgstr "Dernier oldestActiveXID du point de contrôle : %u\n" #: pg_controldata.c:232 #, c-format @@ -306,17 +306,17 @@ msgstr "Dernier newestCommitTsXid du point de restauration : %u\n" #: pg_controldata.c:240 #, c-format msgid "Time of latest checkpoint: %s\n" -msgstr "Heure du dernier point de contrôle : %s\n" +msgstr "Heure du dernier point de contrôle : %s\n" #: pg_controldata.c:242 #, c-format msgid "Fake LSN counter for unlogged rels: %X/%X\n" -msgstr "Faux compteur LSN pour les relations non journalisés : %X/%X\n" +msgstr "Faux compteur LSN pour les relations non journalisés : %X/%X\n" #: pg_controldata.c:245 #, c-format msgid "Minimum recovery ending location: %X/%X\n" -msgstr "Emplacement de fin de la récupération minimale : %X/%X\n" +msgstr "Emplacement de fin de la récupération minimale : %X/%X\n" #: pg_controldata.c:248 #, c-format @@ -326,7 +326,7 @@ msgstr "Timeline de l'emplacement de fin de restauration : %u\n" #: pg_controldata.c:250 #, c-format msgid "Backup start location: %X/%X\n" -msgstr "Début de la sauvegarde : %X/%X\n" +msgstr "Début de la sauvegarde : %X/%X\n" #: pg_controldata.c:253 #, c-format @@ -349,47 +349,47 @@ msgstr "oui" #: pg_controldata.c:258 #, c-format msgid "wal_level setting: %s\n" -msgstr "Paramètrage actuel de wal_level : %s\n" +msgstr "Paramètrage actuel de wal_level : %s\n" #: pg_controldata.c:260 #, c-format msgid "wal_log_hints setting: %s\n" -msgstr "Paramétrage actuel de wal_log_hints : %s\n" +msgstr "Paramétrage actuel de wal_log_hints : %s\n" #: pg_controldata.c:262 #, c-format msgid "max_connections setting: %d\n" -msgstr "Paramètrage actuel de max_connections : %d\n" +msgstr "Paramètrage actuel de max_connections : %d\n" #: pg_controldata.c:264 #, c-format msgid "max_worker_processes setting: %d\n" -msgstr "Paramétrage actuel de max_worker_processes : %d\n" +msgstr "Paramétrage actuel de max_worker_processes : %d\n" #: pg_controldata.c:266 #, c-format msgid "max_prepared_xacts setting: %d\n" -msgstr "Paramètrage actuel de max_prepared_xacts : %d\n" +msgstr "Paramètrage actuel de max_prepared_xacts : %d\n" #: pg_controldata.c:268 #, c-format msgid "max_locks_per_xact setting: %d\n" -msgstr "Paramètrage actuel de max_locks_per_xact : %d\n" +msgstr "Paramètrage actuel de max_locks_per_xact : %d\n" #: pg_controldata.c:270 #, c-format msgid "track_commit_timestamp setting: %s\n" -msgstr "Paramètrage actuel de track_commit_timestamp : %s\n" +msgstr "Paramètrage actuel de track_commit_timestamp : %s\n" #: pg_controldata.c:272 #, c-format msgid "Maximum data alignment: %u\n" -msgstr "Alignement maximal des données : %u\n" +msgstr "Alignement maximal des données : %u\n" #: pg_controldata.c:275 #, c-format msgid "Database block size: %u\n" -msgstr "Taille du bloc de la base de données : %u\n" +msgstr "Taille du bloc de la base de données : %u\n" #: pg_controldata.c:277 #, c-format @@ -437,7 +437,7 @@ msgstr "entiers 64-bits" #: pg_controldata.c:292 msgid "floating-point numbers" -msgstr "nombres à virgule flottante" +msgstr "nombres à virgule flottante" #: pg_controldata.c:293 #, c-format @@ -446,7 +446,7 @@ msgstr "Passage d'argument float4 : %s\n" #: pg_controldata.c:294 pg_controldata.c:296 msgid "by reference" -msgstr "par référence" +msgstr "par référence" #: pg_controldata.c:294 pg_controldata.c:296 msgid "by value" @@ -460,7 +460,7 @@ msgstr "Passage d'argument float8 : %s\n" #: pg_controldata.c:297 #, c-format msgid "Data page checksum version: %u\n" -msgstr "Version des sommes de contrôle des pages de données : %u\n" +msgstr "Version des sommes de contrôle des pages de données : %u\n" #~ msgid "" #~ "Usage:\n" @@ -471,7 +471,7 @@ msgstr "Version des sommes de contr #~ " --version output version information, then exit\n" #~ msgstr "" #~ "Usage :\n" -#~ " %s [OPTION] [RÉP_DONNÉES]\n" +#~ " %s [OPTION] [RÉP_DONNÉES]\n" #~ "\n" #~ "Options :\n" #~ " --help affiche cette aide et quitte\n" diff --git a/src/bin/pg_controldata/po/it.po b/src/bin/pg_controldata/po/it.po index 20e1554082..3bdb0deec3 100644 --- a/src/bin/pg_controldata/po/it.po +++ b/src/bin/pg_controldata/po/it.po @@ -23,8 +23,8 @@ msgid "" msgstr "" "Project-Id-Version: pg_controldata (PostgreSQL) 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-04-17 00:15+0000\n" -"PO-Revision-Date: 2016-04-17 20:45+0100\n" +"POT-Creation-Date: 2017-02-09 21:14+0000\n" +"PO-Revision-Date: 2017-04-23 03:02+0100\n" "Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" "Language: it\n" @@ -33,7 +33,52 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-SourceCharset: utf-8\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.8.7.1\n" + +#: ../../common/controldata_utils.c:56 +#, c-format +msgid "%s: could not open file \"%s\" for reading: %s\n" +msgstr "%s: apertura del file \"%s\" per la lettura fallita: %s\n" + +#: ../../common/controldata_utils.c:69 +#, c-format +msgid "%s: could not read file \"%s\": %s\n" +msgstr "%s: lettura del file \"%s\" fallita: %s\n" + +#: ../../common/controldata_utils.c:86 +msgid "calculated CRC checksum does not match value stored in file" +msgstr "il codice di controllo CRC calcolato non combacia con quello memorizzato nel file" + +#: ../../common/controldata_utils.c:88 +#, c-format +msgid "" +"WARNING: Calculated CRC checksum does not match value stored in file.\n" +"Either the file is corrupt, or it has a different layout than this program\n" +"is expecting. The results below are untrustworthy.\n" +"\n" +msgstr "" +"ATTENZIONE: Il codice di controllo CRC calcolato non combacia con quello\n" +"memorizzato nel file. O il file è corrotto o ha un formato diverso da quanto\n" +"questo programma si aspetta. I risultati seguenti non sono affidabili.\n" +"\n" + +#: ../../common/controldata_utils.c:97 +msgid "byte ordering mismatch" +msgstr "ordinamento dei byte non combaciante" + +#: ../../common/controldata_utils.c:99 +#, c-format +msgid "" +"WARNING: possible byte ordering mismatch\n" +"The byte ordering used to store the pg_control file might not match the one\n" +"used by this program. In that case the results below would be incorrect, and\n" +"the PostgreSQL installation would be incompatible with this data directory.\n" +msgstr "" +"ATTENZIONE: possibile differenza nell'ordine dei byte\n" +"L'ordine dei byte usato per memorizzare il file pg_control potrebbe non\n" +"combaciare con quello usato da questo programma. In questo caso i risultati\n" +"seguenti non sarebbero corretti e l'installazione di PostgreSQL sarebbe\n" +"incompatibile con questa directory di dati.\n" #: pg_controldata.c:33 #, c-format diff --git a/src/bin/pg_controldata/po/ja.po b/src/bin/pg_controldata/po/ja.po index 9e3f33215d..cb3ec46eb4 100644 --- a/src/bin/pg_controldata/po/ja.po +++ b/src/bin/pg_controldata/po/ja.po @@ -3,11 +3,11 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0 beta 3\n" +"Project-Id-Version: PostgreSQL 9.6.2 \n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2013-08-18 11:29+0900\n" +"POT-Creation-Date: 2017-04-03 13:37+0900\n" "PO-Revision-Date: 2013-08-18 11:36+0900\n" -"Last-Translator: HOTTA Michihide \n" +"Last-Translator: Ideriah Takeshi \n" "Language-Team: jpug-doc \n" "Language: ja\n" "MIME-Version: 1.0\n" @@ -15,7 +15,51 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: pg_controldata.c:34 +#: ../../common/controldata_utils.c:56 +#, c-format +msgid "%s: could not open file \"%s\" for reading: %s\n" +msgstr "%s: 読ã¿å–り用ã®\"%s\"ファイルã®ã‚ªãƒ¼ãƒ—ンã«å¤±æ•—ã—ã¾ã—ãŸ: %s\n" + +#: ../../common/controldata_utils.c:69 +#, c-format +msgid "%s: could not read file \"%s\": %s\n" +msgstr "%s: \"%s\"ファイルã®èª­ã¿å–りã«å¤±æ•—ã—ã¾ã—ãŸ: %s\n" + +#: ../../common/controldata_utils.c:86 +msgid "calculated CRC checksum does not match value stored in file" +msgstr "" + +#: ../../common/controldata_utils.c:88 +#, c-format +msgid "" +"WARNING: Calculated CRC checksum does not match value stored in file.\n" +"Either the file is corrupt, or it has a different layout than this program\n" +"is expecting. The results below are untrustworthy.\n" +"\n" +msgstr "" +"警告: CRCãƒã‚§ãƒƒã‚¯ã‚µãƒ ã®è¨ˆç®—çµæžœãŒãƒ•ァイル内ã®å€¤ã¨ä¸€è‡´ã—ã¾ã›ã‚“。\n" +"ファイルã®ç ´æã€ã‚ã‚‹ã„ã¯ã€æœ¬ãƒ—ãƒ­ã‚°ãƒ©ãƒ ãŒæƒ³å®šã™ã‚‹ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã¨ç•°ãªã‚‹\n" +"å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚以下ã®çµæžœã¯ä¿¡ç”¨ã§ãã¾ã›ã‚“。\n" +"\n" + +#: ../../common/controldata_utils.c:97 +msgid "byte ordering mismatch" +msgstr "ãƒã‚¤ãƒˆã‚ªãƒ¼ãƒ€ãŒåˆã„ã¾ã›ã‚“" + +#: ../../common/controldata_utils.c:99 +#, c-format +msgid "" +"WARNING: possible byte ordering mismatch\n" +"The byte ordering used to store the pg_control file might not match the one\n" +"used by this program. In that case the results below would be incorrect, and\n" +"the PostgreSQL installation would be incompatible with this data directory.\n" +msgstr "" +"警告:ãƒã‚¤ãƒˆã‚ªãƒ¼ãƒ€ãŒç•°ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚\n" +"pg_controlファイルを格ç´ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ãƒã‚¤ãƒˆã‚ªãƒ¼ãƒ€ãŒæœ¬ãƒ—ログラムã§ä½¿ç”¨\n" +"ã•れるもã®ã¨ç•°ãªã‚Šã¾ã™ã€‚ã“ã®å ´åˆä»¥ä¸‹ã®çµæžœã¯ä¸æ­£ç¢ºã«ãªã‚Šã¾ã™ã€‚ã¾ãŸã€PostgreSQL\n" +"インストレーションã¯ã“ã®ãƒ‡ãƒ¼ã‚¿ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¨äº’æ›æ€§ãŒãªããªã‚Šã¾ã™ã€‚\n" + +#: pg_controldata.c:33 #, c-format msgid "" "%s displays control information of a PostgreSQL database cluster.\n" @@ -24,17 +68,17 @@ msgstr "" "%s ã¯PostgreSQLデータベースクラスタã®åˆ¶å¾¡æƒ…報を表示ã—ã¾ã™ã€‚\n" "\n" -#: pg_controldata.c:35 +#: pg_controldata.c:34 #, c-format msgid "Usage:\n" msgstr "使用方法:\n" -#: pg_controldata.c:36 +#: pg_controldata.c:35 #, c-format msgid " %s [OPTION] [DATADIR]\n" msgstr " %s [OPTION] [DATADIR]\n" -#: pg_controldata.c:37 +#: pg_controldata.c:36 #, c-format msgid "" "\n" @@ -43,6 +87,11 @@ msgstr "" "\n" "オプション:\n" +#: pg_controldata.c:37 +#, c-format +msgid " [-D] DATADIR data directory\n" +msgstr " [-D] DATADIR データディレクトリ\n" + #: pg_controldata.c:38 #, c-format msgid " -V, --version output version information, then exit\n" @@ -106,327 +155,300 @@ msgstr "未知ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚³ãƒ¼ãƒ‰" msgid "unrecognized wal_level" msgstr "wal_level ã‚’èªè­˜ã§ãã¾ã›ã‚“" -#: pg_controldata.c:126 -#, c-format -msgid "%s: no data directory specified\n" -msgstr "%s: ãƒ‡ãƒ¼ã‚¿ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“\n" - -#: pg_controldata.c:127 +#: pg_controldata.c:127 pg_controldata.c:145 pg_controldata.c:153 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "詳細ã¯\"%s --help\"を実行ã—ã¦ãã ã•ã„\n" -#: pg_controldata.c:135 +#: pg_controldata.c:143 #, c-format -msgid "%s: could not open file \"%s\" for reading: %s\n" -msgstr "%s: 読ã¿å–り用ã®\"%s\"ファイルã®ã‚ªãƒ¼ãƒ—ンã«å¤±æ•—ã—ã¾ã—ãŸ: %s\n" +msgid "%s: too many command-line arguments (first is \"%s\")\n" +msgstr "%s: コマンドライン引数ãŒå¤šã™ãŽã¾ã™ã€‚(å§‹ã‚ã¯\"%s\")\n" -#: pg_controldata.c:142 +#: pg_controldata.c:152 #, c-format -msgid "%s: could not read file \"%s\": %s\n" -msgstr "%s: \"%s\"ファイルã®èª­ã¿å–りã«å¤±æ•—ã—ã¾ã—ãŸ: %s\n" - -#: pg_controldata.c:156 -#, c-format -msgid "" -"WARNING: Calculated CRC checksum does not match value stored in file.\n" -"Either the file is corrupt, or it has a different layout than this program\n" -"is expecting. The results below are untrustworthy.\n" -"\n" -msgstr "" -"警告: CRCãƒã‚§ãƒƒã‚¯ã‚µãƒ ã®è¨ˆç®—çµæžœãŒãƒ•ァイル内ã®å€¤ã¨ä¸€è‡´ã—ã¾ã›ã‚“。\n" -"ファイルã®ç ´æã€ã‚ã‚‹ã„ã¯ã€æœ¬ãƒ—ãƒ­ã‚°ãƒ©ãƒ ãŒæƒ³å®šã™ã‚‹ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã¨ç•°ãªã‚‹\n" -"å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚以下ã®çµæžœã¯ä¿¡ç”¨ã§ãã¾ã›ã‚“。\n" -"\n" +msgid "%s: no data directory specified\n" +msgstr "%s: ãƒ‡ãƒ¼ã‚¿ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“\n" #: pg_controldata.c:190 #, c-format msgid "pg_control version number: %u\n" msgstr "pg_controlãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·: %u\n" -#: pg_controldata.c:193 -#, c-format -msgid "" -"WARNING: possible byte ordering mismatch\n" -"The byte ordering used to store the pg_control file might not match the one\n" -"used by this program. In that case the results below would be incorrect, and\n" -"the PostgreSQL installation would be incompatible with this data directory.\n" -msgstr "" -"警告:ãƒã‚¤ãƒˆã‚ªãƒ¼ãƒ€ãŒç•°ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚\n" -"pg_controlファイルを格ç´ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ãƒã‚¤ãƒˆã‚ªãƒ¼ãƒ€ãŒæœ¬ãƒ—ログラムã§ä½¿ç”¨\n" -"ã•れるもã®ã¨ç•°ãªã‚Šã¾ã™ã€‚ã“ã®å ´åˆä»¥ä¸‹ã®çµæžœã¯ä¸æ­£ç¢ºã«ãªã‚Šã¾ã™ã€‚ã¾ãŸã€PostgreSQL\n" -"インストレーションã¯ã“ã®ãƒ‡ãƒ¼ã‚¿ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¨äº’æ›æ€§ãŒãªããªã‚Šã¾ã™ã€‚\n" - -#: pg_controldata.c:197 +#: pg_controldata.c:192 #, c-format msgid "Catalog version number: %u\n" msgstr "カタログãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·: %u\n" -#: pg_controldata.c:199 +#: pg_controldata.c:194 #, c-format msgid "Database system identifier: %s\n" msgstr "データベースシステム識別å­: %s\n" -#: pg_controldata.c:201 +#: pg_controldata.c:196 #, c-format msgid "Database cluster state: %s\n" msgstr "データベースクラスタã®çŠ¶æ…‹: %s\n" -#: pg_controldata.c:203 +#: pg_controldata.c:198 #, c-format msgid "pg_control last modified: %s\n" msgstr "pg_control最終更新: %s\n" -#: pg_controldata.c:205 +#: pg_controldata.c:200 #, c-format msgid "Latest checkpoint location: %X/%X\n" msgstr "最終ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆä½ç½®: %X/%X\n" -#: pg_controldata.c:208 +#: pg_controldata.c:203 #, c-format msgid "Prior checkpoint location: %X/%X\n" msgstr "å‰å›žã®ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆä½ç½®: %X/%X\n" -#: pg_controldata.c:211 +#: pg_controldata.c:206 #, c-format msgid "Latest checkpoint's REDO location: %X/%X\n" msgstr "最終ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆã®REDOä½ç½®: %X/%X\n" -#: pg_controldata.c:214 +#: pg_controldata.c:209 #, c-format -#| msgid "Latest checkpoint's REDO location: %X/%X\n" msgid "Latest checkpoint's REDO WAL file: %s\n" msgstr "最終ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆã®REDO WALファイル: %s\n" -#: pg_controldata.c:216 +#: pg_controldata.c:211 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" msgstr "最終ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆã®æ™‚系列ID: %u\n" -#: pg_controldata.c:218 +#: pg_controldata.c:213 #, c-format -#| msgid "Latest checkpoint's TimeLineID: %u\n" msgid "Latest checkpoint's PrevTimeLineID: %u\n" msgstr "最終ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆã®PrevTimeLineID: %u\n" -#: pg_controldata.c:220 +#: pg_controldata.c:215 #, c-format msgid "Latest checkpoint's full_page_writes: %s\n" msgstr "最終ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆã®full_page_writes %s\n" -#: pg_controldata.c:221 +#: pg_controldata.c:216 pg_controldata.c:261 pg_controldata.c:271 msgid "off" msgstr "オフ" -#: pg_controldata.c:221 +#: pg_controldata.c:216 pg_controldata.c:261 pg_controldata.c:271 msgid "on" msgstr "オン" -#: pg_controldata.c:222 +#: pg_controldata.c:217 #, c-format -msgid "Latest checkpoint's NextXID: %u/%u\n" -msgstr "最終ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆã®NextXID: %u/%u\n" +msgid "Latest checkpoint's NextXID: %u:%u\n" +msgstr "最終ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆã®NextXID: %u:%u\n" -#: pg_controldata.c:225 +#: pg_controldata.c:220 #, c-format msgid "Latest checkpoint's NextOID: %u\n" msgstr "最終ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆã®NextOID: %u\n" -#: pg_controldata.c:227 +#: pg_controldata.c:222 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" msgstr "最終ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆã®NextMultiXactId: %u\n" -#: pg_controldata.c:229 +#: pg_controldata.c:224 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" msgstr "最終ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆã®NextMultiOffset: %u\n" -#: pg_controldata.c:231 +#: pg_controldata.c:226 #, c-format msgid "Latest checkpoint's oldestXID: %u\n" msgstr "最終ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆã®oldestXID: %u\n" -#: pg_controldata.c:233 +#: pg_controldata.c:228 #, c-format msgid "Latest checkpoint's oldestXID's DB: %u\n" msgstr "最終ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆã®oldestXIDã®DB: %u\n" -#: pg_controldata.c:235 +#: pg_controldata.c:230 #, c-format msgid "Latest checkpoint's oldestActiveXID: %u\n" msgstr "最終ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆã®oldestActiveXID: %u\n" -#: pg_controldata.c:237 +#: pg_controldata.c:232 #, c-format -#| msgid "Latest checkpoint's oldestActiveXID: %u\n" msgid "Latest checkpoint's oldestMultiXid: %u\n" msgstr "最終ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆã®oldestMultiXid: %u\n" -#: pg_controldata.c:239 +#: pg_controldata.c:234 #, c-format -#| msgid "Latest checkpoint's oldestXID's DB: %u\n" msgid "Latest checkpoint's oldestMulti's DB: %u\n" msgstr "最終ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆã®oldestMulti'sã®DB: %u\n" -#: pg_controldata.c:241 +#: pg_controldata.c:236 +#, c-format +msgid "Latest checkpoint's oldestCommitTsXid:%u\n" +msgstr "最終ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆã®oldestCommitTsXid:%u\n" + +#: pg_controldata.c:238 +#, c-format +msgid "Latest checkpoint's newestCommitTsXid:%u\n" +msgstr "最終ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆã®newestCommitTsXid:%u\n" + +#: pg_controldata.c:240 #, c-format msgid "Time of latest checkpoint: %s\n" msgstr "最終ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆæ™‚刻: %s\n" -#: pg_controldata.c:243 +#: pg_controldata.c:242 #, c-format msgid "Fake LSN counter for unlogged rels: %X/%X\n" msgstr "ログをå–らãªã„リレーションå‘ã‘ã®å½ã®LSNカウンタ: %X/%X\n" -#: pg_controldata.c:246 +#: pg_controldata.c:245 #, c-format msgid "Minimum recovery ending location: %X/%X\n" msgstr "最å°ãƒªã‚«ãƒãƒªçµ‚了ä½ç½®: %X/%X\n" -#: pg_controldata.c:249 +#: pg_controldata.c:248 #, c-format -#| msgid "Minimum recovery ending location: %X/%X\n" msgid "Min recovery ending loc's timeline: %u\n" msgstr "最å°ãƒªã‚«ãƒãƒªçµ‚了ä½ç½®ã®ã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³: %u\n" -#: pg_controldata.c:251 +#: pg_controldata.c:250 #, c-format msgid "Backup start location: %X/%X\n" msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—é–‹å§‹ä½ç½®: %X/%X\n" -#: pg_controldata.c:254 +#: pg_controldata.c:253 #, c-format msgid "Backup end location: %X/%X\n" msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—終了ä½ç½®: %X/%X\n" -#: pg_controldata.c:257 +#: pg_controldata.c:256 #, c-format msgid "End-of-backup record required: %s\n" msgstr "å¿…è¦ãªãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—最終レコード: %s\n" -#: pg_controldata.c:258 +#: pg_controldata.c:257 msgid "no" msgstr "no" -#: pg_controldata.c:258 +#: pg_controldata.c:257 msgid "yes" msgstr "yes" -#: pg_controldata.c:259 +#: pg_controldata.c:258 #, c-format -msgid "Current wal_level setting: %s\n" -msgstr "wal_level ã®ç¾åœ¨è¨­å®š %s\n" +msgid "wal_level setting: %s\n" +msgstr "wal_level ã®è¨­å®šï¼š %s\n" -#: pg_controldata.c:261 +#: pg_controldata.c:260 #, c-format -msgid "Current max_connections setting: %d\n" -msgstr "max_connections ã®ç¾åœ¨è¨­å®šï¼š %d\n" +msgid "wal_log_hints setting: %s\n" +msgstr "wal_log_hints ã®è¨­å®šï¼š %s\n" -#: pg_controldata.c:263 +#: pg_controldata.c:262 #, c-format -#| msgid "Current max_prepared_xacts setting: %d\n" -msgid "Current max_worker_processes setting: %d\n" -msgstr "max_worker_processesã®ç¾åœ¨è¨­å®šï¼š %d\n" +msgid "max_connections setting: %d\n" +msgstr "max_connections ã®è¨­å®šï¼š %d\n" -#: pg_controldata.c:265 +#: pg_controldata.c:264 #, c-format -msgid "Current max_prepared_xacts setting: %d\n" -msgstr "max_prepared_xacts ã®ç¾åœ¨è¨­å®šï¼š %d\n" +msgid "max_worker_processes setting: %d\n" +msgstr "max_worker_processes ã®è¨­å®šï¼š %d\n" -#: pg_controldata.c:267 +#: pg_controldata.c:266 #, c-format -msgid "Current max_locks_per_xact setting: %d\n" -msgstr "max_locks_per_xact ã®ç¾åœ¨è¨­å®šï¼š %d\n" +msgid "max_prepared_xacts setting: %d\n" +msgstr "max_prepared_xacts ã®è¨­å®šï¼š %d\n" -#: pg_controldata.c:269 +#: pg_controldata.c:268 +#, c-format +msgid "max_locks_per_xact setting: %d\n" +msgstr "max_locks_per_xact ã®è¨­å®šï¼š %d\n" + +#: pg_controldata.c:270 +#, c-format +msgid "track_commit_timestamp setting: %s\n" +msgstr "track_commit_timestamp ã®è¨­å®šï¼š %s\n" + +#: pg_controldata.c:272 #, c-format msgid "Maximum data alignment: %u\n" msgstr "最大データアラインメント %u\n" -#: pg_controldata.c:272 +#: pg_controldata.c:275 #, c-format msgid "Database block size: %u\n" msgstr "データベースã®ãƒ–ロックサイズ: %u\n" -#: pg_controldata.c:274 +#: pg_controldata.c:277 #, c-format msgid "Blocks per segment of large relation: %u\n" msgstr "ラージリレーションã®ã‚»ã‚°ãƒ¡ãƒ³ãƒˆå½“ãŸã‚Šã®ãƒ–ロック数: %u\n" -#: pg_controldata.c:276 +#: pg_controldata.c:279 #, c-format msgid "WAL block size: %u\n" msgstr "WALブロックã®ã‚µã‚¤ã‚º: %u\n" -#: pg_controldata.c:278 +#: pg_controldata.c:281 #, c-format msgid "Bytes per WAL segment: %u\n" msgstr "WALセグメント当ãŸã‚Šã®ãƒã‚¤ãƒˆæ•°: %u\n" -#: pg_controldata.c:280 +#: pg_controldata.c:283 #, c-format msgid "Maximum length of identifiers: %u\n" msgstr "識別å­ã®æœ€å¤§é•·: %u\n" -#: pg_controldata.c:282 +#: pg_controldata.c:285 #, c-format msgid "Maximum columns in an index: %u\n" msgstr "ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹å†…ã®æœ€å¤§åˆ—æ•°: %u\n" -#: pg_controldata.c:284 +#: pg_controldata.c:287 #, c-format msgid "Maximum size of a TOAST chunk: %u\n" msgstr "TOASTãƒãƒ£ãƒ³ã‚¯ã®æœ€å¤§ã‚µã‚¤ã‚º: %u\n" -#: pg_controldata.c:286 +#: pg_controldata.c:289 +#, c-format +msgid "Size of a large-object chunk: %u\n" +msgstr "ラージオブジェクトãƒãƒ£ãƒ³ã‚¯ã®ã‚µã‚¤ã‚º: %u\n" + +#: pg_controldata.c:291 #, c-format msgid "Date/time type storage: %s\n" msgstr "日付/æ™‚åˆ»åž‹ã®æ ¼ç´æ–¹å¼: %s\n" -#: pg_controldata.c:287 +#: pg_controldata.c:292 msgid "64-bit integers" msgstr "64ビット整数" -#: pg_controldata.c:287 +#: pg_controldata.c:292 msgid "floating-point numbers" msgstr "æµ®å‹•å°æ•°ç‚¹æ•°" -#: pg_controldata.c:288 +#: pg_controldata.c:293 #, c-format msgid "Float4 argument passing: %s\n" msgstr "Float4 å¼•æ•°ã®æ¸¡ã—方: %s\n" -#: pg_controldata.c:289 pg_controldata.c:291 +#: pg_controldata.c:294 pg_controldata.c:296 msgid "by reference" msgstr "å‚照渡ã—" -#: pg_controldata.c:289 pg_controldata.c:291 +#: pg_controldata.c:294 pg_controldata.c:296 msgid "by value" msgstr "値渡ã—" -#: pg_controldata.c:290 +#: pg_controldata.c:295 #, c-format msgid "Float8 argument passing: %s\n" msgstr "Float8 å¼•æ•°ã®æ¸¡ã—方: %s\n" -#: pg_controldata.c:292 +#: pg_controldata.c:297 #, c-format -#| msgid "Catalog version number: %u\n" msgid "Data page checksum version: %u\n" msgstr "データベージãƒã‚§ãƒƒã‚¯ã‚µãƒ ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %u\n" -#~ msgid "" -#~ "Usage:\n" -#~ " %s [OPTION] [DATADIR]\n" -#~ "\n" -#~ "Options:\n" -#~ " --help show this help, then exit\n" -#~ " --version output version information, then exit\n" -#~ msgstr "" -#~ "使用方法:\n" -#~ " %s [OPTION] [DATADIR]\n" -#~ "\n" -#~ "オプション:\n" -#~ " --help ヘルプを表示ã—ã€çµ‚了ã—ã¾ã™\n" -#~ " --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã€çµ‚了ã—ã¾ã™\n" diff --git a/src/bin/pg_controldata/po/ko.po b/src/bin/pg_controldata/po/ko.po index 70ca797dbc..2916cea85b 100644 --- a/src/bin/pg_controldata/po/ko.po +++ b/src/bin/pg_controldata/po/ko.po @@ -1,21 +1,67 @@ # Korean message translation file for PostgreSQL pg_controldata -# Ioseph Kim , 2004. +# Ioseph Kim , 2016. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.5\n" +"Project-Id-Version: PostgreSQL 9.6 pg_controldata\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-01-27 10:03+0900\n" -"PO-Revision-Date: 2016-01-27 10:50+0900\n" +"POT-Creation-Date: 2016-09-26 14:02+0900\n" +"PO-Revision-Date: 2016-09-26 16:51+0900\n" "Last-Translator: Ioseph Kim \n" "Language-Team: Korean Team \n" +"Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: pg_controldata.c:35 +#: ../../common/controldata_utils.c:56 +#, c-format +msgid "%s: could not open file \"%s\" for reading: %s\n" +msgstr "%s: \"%s\" 파ì¼ì„ ì½ê¸° 모드로 ì—´ 수 없습니다: %s\n" + +#: ../../common/controldata_utils.c:69 +#, c-format +msgid "%s: could not read file \"%s\": %s\n" +msgstr "%s: \"%s\" 파ì¼ì„ ì½ì„ 수 없습니다: %s\n" + +#: ../../common/controldata_utils.c:86 +msgid "calculated CRC checksum does not match value stored in file" +msgstr "ê³„ì‚°ëœ CRC ì²´í¬ì„¬ ê°’ì´ íŒŒì¼ì— ì €ìž¥ëœ ê°’ê³¼ 다름" + +#: ../../common/controldata_utils.c:88 +#, c-format +msgid "" +"WARNING: Calculated CRC checksum does not match value stored in file.\n" +"Either the file is corrupt, or it has a different layout than this program\n" +"is expecting. The results below are untrustworthy.\n" +"\n" +msgstr "" +"경고: ê³„ì‚°ëœ CRC ì²´í¬ì„¬ê°’ì´ íŒŒì¼ì— 있는 ê°’ê³¼ 틀립니다.\n" +"ì´ ê²½ìš°ëŠ” 파ì¼ì´ ì†ìƒë˜ì—ˆê±°ë‚˜, ì´ í”„ë¡œê·¸ëž¨ê³¼ 컨트롤 파ì¼ì˜ ë²„ì „ì´ í‹€ë¦°\n" +"경우입니다. ê²°ê³¼ê°’ë“¤ì€ ë¯¿ì§€ 못할 ê°’ë“¤ì´ ì¶œë ¥ë  ìˆ˜ 있습니다.\n" +"\n" + +#: ../../common/controldata_utils.c:97 +msgid "byte ordering mismatch" +msgstr "ë°”ì´íЏ 순서 불ì¼ì¹˜" + +#: ../../common/controldata_utils.c:99 +#, c-format +msgid "" +"WARNING: possible byte ordering mismatch\n" +"The byte ordering used to store the pg_control file might not match the one\n" +"used by this program. In that case the results below would be incorrect, " +"and\n" +"the PostgreSQL installation would be incompatible with this data directory.\n" +msgstr "" +"경고: ë°”ì´íЏ 순서가 ì¼ì¹˜í•˜ì§€ 않습니다.\n" +"pg_control 파ì¼ì„ 저장하는 ë° ì‚¬ìš©ëœ ë°”ì´íЏ 순서는 \n" +"ì´ í”„ë¡œê·¸ëž¨ì—서 사용하는 순서와 ì¼ì¹˜í•´ì•¼ 합니다. ì´ ê²½ìš° 아래 결과는 올바르" +"ì§€ 않으며\n" +"ì´ ë°ì´í„° ë””ë ‰í„°ë¦¬ì— PostgreSQLì„ ì„¤ì¹˜í•  수 없습니다.\n" + +#: pg_controldata.c:33 #, c-format msgid "" "%s displays control information of a PostgreSQL database cluster.\n" @@ -24,17 +70,17 @@ msgstr "" "%s í”„ë¡œê·¸ëž¨ì€ PostgreSQL ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„°ì˜ ì œì–´ì •ë³´ë¥¼ 보여줌.\n" "\n" -#: pg_controldata.c:36 +#: pg_controldata.c:34 #, c-format msgid "Usage:\n" msgstr "사용법:\n" -#: pg_controldata.c:37 +#: pg_controldata.c:35 #, c-format msgid " %s [OPTION] [DATADIR]\n" msgstr " %s [옵션] [DATADIR]\n" -#: pg_controldata.c:38 +#: pg_controldata.c:36 #, c-format msgid "" "\n" @@ -43,22 +89,22 @@ msgstr "" "\n" "옵션들:\n" -#: pg_controldata.c:39 +#: pg_controldata.c:37 #, c-format msgid " [-D] DATADIR data directory\n" msgstr " [-D] DATADIR ë°ì´í„° 디렉터리\n" -#: pg_controldata.c:40 +#: pg_controldata.c:38 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version 버전 ì •ë³´ 보여주고 마침\n" -#: pg_controldata.c:41 +#: pg_controldata.c:39 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help ì´ ë„움ë§ì„ 보여주고 마침\n" -#: pg_controldata.c:42 +#: pg_controldata.c:40 #, c-format msgid "" "\n" @@ -72,378 +118,340 @@ msgstr "" "사용합니다.\n" "\n" -#: pg_controldata.c:44 +#: pg_controldata.c:42 #, c-format msgid "Report bugs to .\n" msgstr "오류보고: .\n" -#: pg_controldata.c:54 +#: pg_controldata.c:52 msgid "starting up" msgstr "시작 중" -#: pg_controldata.c:56 +#: pg_controldata.c:54 msgid "shut down" msgstr "중지ë¨" -#: pg_controldata.c:58 +#: pg_controldata.c:56 msgid "shut down in recovery" msgstr "복구 작업 중 중지ë¨" -#: pg_controldata.c:60 +#: pg_controldata.c:58 msgid "shutting down" msgstr "중지 중" -#: pg_controldata.c:62 +#: pg_controldata.c:60 msgid "in crash recovery" msgstr "ë¹„ì •ìƒ ì¢…ë£Œ 복구 중" -#: pg_controldata.c:64 +#: pg_controldata.c:62 msgid "in archive recovery" msgstr "ìžë£Œ 복구 중" -#: pg_controldata.c:66 +#: pg_controldata.c:64 msgid "in production" msgstr "ì •ìƒê°€ë™ì¤‘" -#: pg_controldata.c:68 +#: pg_controldata.c:66 msgid "unrecognized status code" msgstr "알수 없는 ìƒíƒœ 코드" -#: pg_controldata.c:85 +#: pg_controldata.c:81 msgid "unrecognized wal_level" msgstr "알 수 없는 wal_level" -#: pg_controldata.c:134 pg_controldata.c:152 pg_controldata.c:160 +#: pg_controldata.c:127 pg_controldata.c:145 pg_controldata.c:153 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "보다 ìžì„¸í•œ 정보는 \"%s --help\"\n" -#: pg_controldata.c:150 +#: pg_controldata.c:143 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: 너무 ë§Žì€ ëª…ë ¹í–‰ ì¸ìˆ˜ë¥¼ 지정했습니다. (ì²˜ìŒ \"%s\")\n" -#: pg_controldata.c:159 +#: pg_controldata.c:152 #, c-format msgid "%s: no data directory specified\n" msgstr "%s: ë°ì´í„° 디렉터리를 지정하지 않았습니다\n" -#: pg_controldata.c:168 -#, c-format -msgid "%s: could not open file \"%s\" for reading: %s\n" -msgstr "%s: \"%s\" 파ì¼ì„ ì½ê¸° 모드로 ì—´ 수 없습니다: %s\n" - -#: pg_controldata.c:175 -#, c-format -msgid "%s: could not read file \"%s\": %s\n" -msgstr "%s: \"%s\" 파ì¼ì„ ì½ì„ 수 없습니다: %s\n" - -#: pg_controldata.c:189 -#, c-format -msgid "" -"WARNING: Calculated CRC checksum does not match value stored in file.\n" -"Either the file is corrupt, or it has a different layout than this program\n" -"is expecting. The results below are untrustworthy.\n" -"\n" -msgstr "" -"경고: ê³„ì‚°ëœ CRC ì²´í¬ì„¬ê°’ì´ íŒŒì¼ì— 있는 ê°’ê³¼ 틀립니다.\n" -"ì´ ê²½ìš°ëŠ” 파ì¼ì´ ì†ìƒë˜ì—ˆê±°ë‚˜, ì´ í”„ë¡œê·¸ëž¨ê³¼ 컨트롤 파ì¼ì˜ ë²„ì „ì´ í‹€ë¦°\n" -"경우입니다. ê²°ê³¼ê°’ë“¤ì€ ë¯¿ì§€ 못할 ê°’ë“¤ì´ ì¶œë ¥ë  ìˆ˜ 있습니다.\n" -"\n" - -#: pg_controldata.c:223 +#: pg_controldata.c:190 #, c-format msgid "pg_control version number: %u\n" msgstr "pg_control 버전 번호: %u\n" -#: pg_controldata.c:226 -#, c-format -msgid "" -"WARNING: possible byte ordering mismatch\n" -"The byte ordering used to store the pg_control file might not match the one\n" -"used by this program. In that case the results below would be incorrect, " -"and\n" -"the PostgreSQL installation would be incompatible with this data directory.\n" -msgstr "" -"경고: ë°”ì´íЏ 순서가 ì¼ì¹˜í•˜ì§€ 않습니다.\n" -"pg_control 파ì¼ì„ 저장하는 ë° ì‚¬ìš©ëœ ë°”ì´íЏ 순서는 \n" -"ì´ í”„ë¡œê·¸ëž¨ì—서 사용하는 순서와 ì¼ì¹˜í•´ì•¼ 합니다. ì´ ê²½ìš° 아래 결과는 올바르" -"ì§€ 않으며\n" -"ì´ ë°ì´í„° ë””ë ‰í„°ë¦¬ì— PostgreSQLì„ ì„¤ì¹˜í•  수 없습니다.\n" - -#: pg_controldata.c:230 +#: pg_controldata.c:192 #, c-format msgid "Catalog version number: %u\n" msgstr "카탈로그 버전 번호: %u\n" -#: pg_controldata.c:232 +#: pg_controldata.c:194 #, c-format msgid "Database system identifier: %s\n" msgstr "ë°ì´í„°ë² ì´ìФ 시스템 ì‹ë³„ìž: %s\n" -#: pg_controldata.c:234 +#: pg_controldata.c:196 #, c-format msgid "Database cluster state: %s\n" msgstr "ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„° ìƒíƒœ: %s\n" -#: pg_controldata.c:236 +#: pg_controldata.c:198 #, c-format msgid "pg_control last modified: %s\n" msgstr "pg_control 마지막 변경시간: %s\n" -#: pg_controldata.c:238 +#: pg_controldata.c:200 #, c-format msgid "Latest checkpoint location: %X/%X\n" msgstr "마지막 ì²´í¬í¬ì¸íЏ 위치: %X/%X\n" -#: pg_controldata.c:241 +#: pg_controldata.c:203 #, c-format msgid "Prior checkpoint location: %X/%X\n" msgstr "ì´ì „ ì²´í¬í¬ì¸íЏ 위치: %X/%X\n" -#: pg_controldata.c:244 +#: pg_controldata.c:206 #, c-format msgid "Latest checkpoint's REDO location: %X/%X\n" msgstr "마지막 ì²´í¬í¬ì¸íЏ REDO 위치: %X/%X\n" -#: pg_controldata.c:247 +#: pg_controldata.c:209 #, c-format msgid "Latest checkpoint's REDO WAL file: %s\n" msgstr "마지막 ì²´í¬í¬ì¸íЏ REDO WAL 파ì¼: %s\n" -#: pg_controldata.c:249 +#: pg_controldata.c:211 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" msgstr "마지막 ì²´í¬í¬ì¸íЏ TimeLineID: %u\n" -#: pg_controldata.c:251 +#: pg_controldata.c:213 #, c-format msgid "Latest checkpoint's PrevTimeLineID: %u\n" msgstr "마지막 ì²´í¬í¬ì¸íЏ PrevTimeLineID: %u\n" -#: pg_controldata.c:253 +#: pg_controldata.c:215 #, c-format msgid "Latest checkpoint's full_page_writes: %s\n" msgstr "마지막 ì²´í¬í¬ì¸íЏ full_page_writes: %s\n" -#: pg_controldata.c:254 pg_controldata.c:299 pg_controldata.c:309 +#: pg_controldata.c:216 pg_controldata.c:261 pg_controldata.c:271 msgid "off" msgstr "off" -#: pg_controldata.c:254 pg_controldata.c:299 pg_controldata.c:309 +#: pg_controldata.c:216 pg_controldata.c:261 pg_controldata.c:271 msgid "on" msgstr "on" -#: pg_controldata.c:255 +#: pg_controldata.c:217 #, c-format -msgid "Latest checkpoint's NextXID: %u/%u\n" -msgstr "마지막 ì²´í¬í¬ì¸íЏ NextXID: %u/%u\n" +msgid "Latest checkpoint's NextXID: %u:%u\n" +msgstr "마지막 ì²´í¬í¬ì¸íЏ NextXID: %u:%u\n" -#: pg_controldata.c:258 +#: pg_controldata.c:220 #, c-format msgid "Latest checkpoint's NextOID: %u\n" msgstr "마지막 ì²´í¬í¬ì¸íЏ NextOID: %u\n" -#: pg_controldata.c:260 +#: pg_controldata.c:222 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" msgstr "마지막 ì²´í¬í¬ì¸íЏ NextMultiXactId: %u\n" -#: pg_controldata.c:262 +#: pg_controldata.c:224 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" msgstr "마지막 ì²´í¬í¬ì¸íЏ NextMultiOffset: %u\n" -#: pg_controldata.c:264 +#: pg_controldata.c:226 #, c-format msgid "Latest checkpoint's oldestXID: %u\n" msgstr "마지막 ì²´í¬í¬ì¸íЏ ì œì¼ì˜¤ëž˜ëœXID: %u\n" -#: pg_controldata.c:266 +#: pg_controldata.c:228 #, c-format msgid "Latest checkpoint's oldestXID's DB: %u\n" msgstr "마지막 ì²´í¬í¬ì¸íЏ ì œì¼ì˜¤ëž˜ëœXIDì˜ DB: %u\n" -#: pg_controldata.c:268 +#: pg_controldata.c:230 #, c-format msgid "Latest checkpoint's oldestActiveXID: %u\n" msgstr "마지막 ì²´í¬í¬ì¸íЏ ì œì¼ì˜¤ëž˜ëœActiveXID:%u\n" -#: pg_controldata.c:270 +#: pg_controldata.c:232 #, c-format msgid "Latest checkpoint's oldestMultiXid: %u\n" msgstr "마지막 ì²´í¬í¬ì¸íЏ ì œì¼ì˜¤ëž˜ëœMultiXid: %u\n" -#: pg_controldata.c:272 +#: pg_controldata.c:234 #, c-format msgid "Latest checkpoint's oldestMulti's DB: %u\n" msgstr "마지막 ì²´í¬í¬ì¸íЏ ì œì¼ì˜¤ëž˜ëœë©€í‹°Xid DB:%u\n" -#: pg_controldata.c:274 +#: pg_controldata.c:236 #, c-format msgid "Latest checkpoint's oldestCommitTsXid:%u\n" msgstr "마지막 ì²´í¬í¬ì¸íЏ ì œì¼ì˜¤ëž˜ëœCommitTsXid:%u\n" -#: pg_controldata.c:276 +#: pg_controldata.c:238 #, c-format msgid "Latest checkpoint's newestCommitTsXid:%u\n" msgstr "마지막 ì²´í¬í¬ì¸íЏ 최신CommitTsXid: %u\n" -#: pg_controldata.c:278 +#: pg_controldata.c:240 #, c-format msgid "Time of latest checkpoint: %s\n" msgstr "마지막 ì²´í¬í¬ì¸íЏ 시간: %s\n" -#: pg_controldata.c:280 +#: pg_controldata.c:242 #, c-format msgid "Fake LSN counter for unlogged rels: %X/%X\n" msgstr "언로그 릴레ì´ì…˜ì˜ 가짜 LSN ì¹´ìš´í„°: %X/%X\n" -#: pg_controldata.c:283 +#: pg_controldata.c:245 #, c-format msgid "Minimum recovery ending location: %X/%X\n" msgstr "최소 복구 마지막 위치: %X/%X\n" -#: pg_controldata.c:286 +#: pg_controldata.c:248 #, c-format msgid "Min recovery ending loc's timeline: %u\n" msgstr "최소 복구 종료 ìœ„ì¹˜ì˜ íƒ€ìž„ë¼ì¸: %u\n" -#: pg_controldata.c:288 +#: pg_controldata.c:250 #, c-format msgid "Backup start location: %X/%X\n" msgstr "백업 시작 위치: %X/%X\n" -#: pg_controldata.c:291 +#: pg_controldata.c:253 #, c-format msgid "Backup end location: %X/%X\n" msgstr "백업 종료 위치: %X/%X\n" -#: pg_controldata.c:294 +#: pg_controldata.c:256 #, c-format msgid "End-of-backup record required: %s\n" msgstr "백업 종료 레코드 í•„ìš” 여부: %s\n" -#: pg_controldata.c:295 +#: pg_controldata.c:257 msgid "no" msgstr "아니오" -#: pg_controldata.c:295 +#: pg_controldata.c:257 msgid "yes" msgstr "예" -#: pg_controldata.c:296 +#: pg_controldata.c:258 #, c-format msgid "wal_level setting: %s\n" msgstr "wal_level 설정값: %s\n" -#: pg_controldata.c:298 +#: pg_controldata.c:260 #, c-format msgid "wal_log_hints setting: %s\n" msgstr "wal_log_hints 설정값: %s\n" -#: pg_controldata.c:300 +#: pg_controldata.c:262 #, c-format msgid "max_connections setting: %d\n" msgstr "max_connections 설정값: %d\n" -#: pg_controldata.c:302 +#: pg_controldata.c:264 #, c-format msgid "max_worker_processes setting: %d\n" msgstr "max_worker_processes 설정값: %d\n" -#: pg_controldata.c:304 +#: pg_controldata.c:266 #, c-format msgid "max_prepared_xacts setting: %d\n" msgstr "max_prepared_xacts 설정값: %d\n" -#: pg_controldata.c:306 +#: pg_controldata.c:268 #, c-format msgid "max_locks_per_xact setting: %d\n" msgstr "max_locks_per_xact 설정값: %d\n" -#: pg_controldata.c:308 +#: pg_controldata.c:270 #, c-format msgid "track_commit_timestamp setting: %s\n" msgstr "track_commit_timestamp 설정값: %s\n" -#: pg_controldata.c:310 +#: pg_controldata.c:272 #, c-format msgid "Maximum data alignment: %u\n" msgstr "최대 ìžë£Œ ì •ë ¬: %u\n" -#: pg_controldata.c:313 +#: pg_controldata.c:275 #, c-format msgid "Database block size: %u\n" msgstr "ë°ì´í„°ë² ì´ìФ ë¸”ë¡ í¬ê¸°: %u\n" -#: pg_controldata.c:315 +#: pg_controldata.c:277 #, c-format msgid "Blocks per segment of large relation: %u\n" msgstr "대형 릴레ì´ì…˜ì˜ 세그먼트당 블럭 개수: %u\n" -#: pg_controldata.c:317 +#: pg_controldata.c:279 #, c-format msgid "WAL block size: %u\n" msgstr "WAL ë¸”ë¡ í¬ê¸°: %u\n" -#: pg_controldata.c:319 +#: pg_controldata.c:281 #, c-format msgid "Bytes per WAL segment: %u\n" msgstr "WAL ì„¸ê·¸ë¨¼íŠ¸ì˜ í¬ê¸°(byte): %u\n" -#: pg_controldata.c:321 +#: pg_controldata.c:283 #, c-format msgid "Maximum length of identifiers: %u\n" msgstr "ì‹ë³„ìž ìµœëŒ€ 길ì´: %u\n" -#: pg_controldata.c:323 +#: pg_controldata.c:285 #, c-format msgid "Maximum columns in an index: %u\n" msgstr "ì¸ë±ìФì—서 사용하는 최대 ì—´ 수: %u\n" -#: pg_controldata.c:325 +#: pg_controldata.c:287 #, c-format msgid "Maximum size of a TOAST chunk: %u\n" msgstr "TOAST ì²­í¬ ìµœëŒ€ í¬ê¸°: %u\n" -#: pg_controldata.c:327 +#: pg_controldata.c:289 #, c-format msgid "Size of a large-object chunk: %u\n" msgstr "대형 ê°ì²´ ì²­í¬ í¬ê¸°: %u\n" -#: pg_controldata.c:329 +#: pg_controldata.c:291 #, c-format msgid "Date/time type storage: %s\n" msgstr "ë‚ ì§œ/시간형 ìžë£Œì˜ 저장방ì‹: %s\n" -#: pg_controldata.c:330 +#: pg_controldata.c:292 msgid "64-bit integers" msgstr "64-비트 정수" -#: pg_controldata.c:330 +#: pg_controldata.c:292 msgid "floating-point numbers" msgstr "ë¶€ë™ì†Œìˆ˜" -#: pg_controldata.c:331 +#: pg_controldata.c:293 #, c-format msgid "Float4 argument passing: %s\n" msgstr "Float4 ì¸ìˆ˜ 전달: %s\n" -#: pg_controldata.c:332 pg_controldata.c:334 +#: pg_controldata.c:294 pg_controldata.c:296 msgid "by reference" msgstr "참조별" -#: pg_controldata.c:332 pg_controldata.c:334 +#: pg_controldata.c:294 pg_controldata.c:296 msgid "by value" msgstr "값별" -#: pg_controldata.c:333 +#: pg_controldata.c:295 #, c-format msgid "Float8 argument passing: %s\n" msgstr "Float8 ì¸ìˆ˜ 전달: %s\n" -#: pg_controldata.c:335 +#: pg_controldata.c:297 #, c-format msgid "Data page checksum version: %u\n" msgstr "ë°ì´í„° 페ì´ì§€ ì²´í¬ì„¬ 버전: %u\n" diff --git a/src/bin/pg_controldata/po/ru.po b/src/bin/pg_controldata/po/ru.po index f8cd16baf6..20dc403667 100644 --- a/src/bin/pg_controldata/po/ru.po +++ b/src/bin/pg_controldata/po/ru.po @@ -4,14 +4,14 @@ # Serguei A. Mokhov , 2002-2004. # Oleg Bartunov , 2004. # Andrey Sudnik , 2011. -# Alexander Lakhin , 2012-2016. +# Alexander Lakhin , 2012-2017. # msgid "" msgstr "" "Project-Id-Version: pg_controldata (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-20 18:14+0000\n" -"PO-Revision-Date: 2016-09-20 12:00+0300\n" +"POT-Creation-Date: 2017-02-06 22:14+0000\n" +"PO-Revision-Date: 2016-12-20 18:28+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -207,36 +207,43 @@ msgstr "СоÑтоÑние клаÑтера БД: %s\n" msgid "pg_control last modified: %s\n" msgstr "ПоÑледнее обновление pg_control: %s\n" +# skip-rule: capital-letter-first #: pg_controldata.c:200 #, c-format msgid "Latest checkpoint location: %X/%X\n" msgstr "Положение поÑледней конт. точки: %X/%X\n" +# skip-rule: capital-letter-first #: pg_controldata.c:203 #, c-format msgid "Prior checkpoint location: %X/%X\n" msgstr "Положение предыдущей конт. точки: %X/%X\n" +# skip-rule: capital-letter-first #: pg_controldata.c:206 #, c-format msgid "Latest checkpoint's REDO location: %X/%X\n" msgstr "Положение REDO поÑледней конт. точки: %X/%X\n" +# skip-rule: capital-letter-first #: pg_controldata.c:209 #, c-format msgid "Latest checkpoint's REDO WAL file: %s\n" -msgstr "Файл WAL c REDO поÑледней к.Ñ‚.: %s\n" +msgstr "Файл WAL c REDO поÑледней к. Ñ‚.: %s\n" +# skip-rule: capital-letter-first #: pg_controldata.c:211 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" msgstr "Ð›Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ поÑледней конт. точки: %u\n" +# skip-rule: capital-letter-first #: pg_controldata.c:213 #, c-format msgid "Latest checkpoint's PrevTimeLineID: %u\n" -msgstr "Пред. Ð»Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ поÑледней к.Ñ‚.: %u\n" +msgstr "Пред. Ð»Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ поÑледней к. Ñ‚.: %u\n" +# skip-rule: no-space-after-period #: pg_controldata.c:215 #, c-format msgid "Latest checkpoint's full_page_writes: %s\n" @@ -250,56 +257,67 @@ msgstr "выкл." msgid "on" msgstr "вкл." +# skip-rule: capital-letter-first #: pg_controldata.c:217 #, c-format msgid "Latest checkpoint's NextXID: %u:%u\n" msgstr "NextXID поÑледней конт. точки: %u:%u\n" +# skip-rule: capital-letter-first #: pg_controldata.c:220 #, c-format msgid "Latest checkpoint's NextOID: %u\n" msgstr "NextOID поÑледней конт. точки: %u\n" +# skip-rule: capital-letter-first #: pg_controldata.c:222 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" msgstr "NextMultiXactId поÑлед. конт. точки: %u\n" +# skip-rule: capital-letter-first #: pg_controldata.c:224 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" msgstr "NextMultiOffset поÑлед. конт. точки: %u\n" +# skip-rule: capital-letter-first #: pg_controldata.c:226 #, c-format msgid "Latest checkpoint's oldestXID: %u\n" msgstr "oldestXID поÑледней конт. точки: %u\n" +# skip-rule: capital-letter-first #: pg_controldata.c:228 #, c-format msgid "Latest checkpoint's oldestXID's DB: %u\n" msgstr "БД Ñ oldestXID поÑледней конт. точки: %u\n" +# skip-rule: capital-letter-first #: pg_controldata.c:230 #, c-format msgid "Latest checkpoint's oldestActiveXID: %u\n" -msgstr "oldestActiveXID поÑледней к.Ñ‚.: %u\n" +msgstr "oldestActiveXID поÑледней к. Ñ‚.: %u\n" +# skip-rule: capital-letter-first #: pg_controldata.c:232 #, c-format msgid "Latest checkpoint's oldestMultiXid: %u\n" msgstr "oldestMultiXid поÑледней конт. точки: %u\n" +# skip-rule: double-space, capital-letter-first #: pg_controldata.c:234 #, c-format msgid "Latest checkpoint's oldestMulti's DB: %u\n" -msgstr "БД Ñ oldestMulti поÑледней к.Ñ‚.: %u\n" +msgstr "БД Ñ oldestMulti поÑледней к. Ñ‚.: %u\n" +# skip-rule: double-space, capital-letter-first #: pg_controldata.c:236 #, c-format msgid "Latest checkpoint's oldestCommitTsXid:%u\n" msgstr "oldestCommitTsXid поÑледней к. Ñ‚.: %u\n" +# skip-rule: capital-letter-first, double-space #: pg_controldata.c:238 #, c-format msgid "Latest checkpoint's newestCommitTsXid:%u\n" @@ -310,6 +328,8 @@ msgstr "newestCommitTsXid поÑледней к. Ñ‚.: %u\n" msgid "Time of latest checkpoint: %s\n" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ñледней контрольной точки: %s\n" +# skip-rule: capital-letter-first +# well-spelled: нежурналир #: pg_controldata.c:242 #, c-format msgid "Fake LSN counter for unlogged rels: %X/%X\n" @@ -320,10 +340,11 @@ msgstr "Фиктивный LSN Ð´Ð»Ñ Ð½ÐµÐ¶ÑƒÑ€Ð½Ð°Ð»Ð¸Ñ€. таблиц: %X/%X\ msgid "Minimum recovery ending location: %X/%X\n" msgstr "Мин. положение конца воÑÑтановлениÑ: %X/%X\n" +# skip-rule: capital-letter-first #: pg_controldata.c:248 #, c-format msgid "Min recovery ending loc's timeline: %u\n" -msgstr "Ð›Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ мин. Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ðº.в.: %u\n" +msgstr "Ð›Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ мин. Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ðº. в.: %u\n" #: pg_controldata.c:250 #, c-format @@ -393,6 +414,7 @@ msgstr "МакÑ. предел Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…: %u\n" msgid "Database block size: %u\n" msgstr "Размер блока БД: %u\n" +# skip-rule: double-space #: pg_controldata.c:277 #, c-format msgid "Blocks per segment of large relation: %u\n" @@ -416,7 +438,7 @@ msgstr "МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° идентификаторов: %u #: pg_controldata.c:285 #, c-format msgid "Maximum columns in an index: %u\n" -msgstr "МакÑимальное чиÑло Ñтолбцов в индекÑе: %u\n" +msgstr "МакÑ. чиÑло Ñтолбцов в индекÑе: %u\n" #: pg_controldata.c:287 #, c-format diff --git a/src/bin/pg_controldata/po/sv.po b/src/bin/pg_controldata/po/sv.po index b5c8fd028a..3d5da6f2ad 100644 --- a/src/bin/pg_controldata/po/sv.po +++ b/src/bin/pg_controldata/po/sv.po @@ -1,24 +1,70 @@ # Swedish message translation file for pg_controldata # This file is put in the public domain. -# Dennis Björklund , 2002, 2003, 2004, 2005, 2006. +# Dennis Björklund , 2002, 2003, 2004, 2005, 2006, 2017. # Mats Erik Andersson , 2014. # # Use these quotes: "%s" # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.4\n" +"Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2014-11-17 21:12+0000\n" -"PO-Revision-Date: 2014-11-19 23:46+0100\n" -"Last-Translator: Mats Erik Andersson \n" +"POT-Creation-Date: 2017-08-07 21:23+0000\n" +"PO-Revision-Date: 2017-08-08 06:20+0200\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" -#: pg_controldata.c:34 +#: ../../common/controldata_utils.c:56 +#, c-format +msgid "%s: could not open file \"%s\" for reading: %s\n" +msgstr "%s: kunde inte öppna fil \"%s\" för läsning: %s\n" + +#: ../../common/controldata_utils.c:69 +#, c-format +msgid "%s: could not read file \"%s\": %s\n" +msgstr "%s: kunde inte läsa fil \"%s\": %s\n" + +#: ../../common/controldata_utils.c:86 +msgid "calculated CRC checksum does not match value stored in file" +msgstr "" + +#: ../../common/controldata_utils.c:88 +#, c-format +msgid "" +"WARNING: Calculated CRC checksum does not match value stored in file.\n" +"Either the file is corrupt, or it has a different layout than this program\n" +"is expecting. The results below are untrustworthy.\n" +"\n" +msgstr "" +"VARNING: Beräknad CRC-kontrollsumma matchar inte det värde som har sparats i " +"filen.\n" +"Antingen är filen trasig, eller sÃ¥ har den en annan uppbyggnad än vad detta\n" +"program förväntade sig. Resultatet nedan är inte helt tillförlitligt.\n" +"\n" + +#: ../../common/controldata_utils.c:97 +msgid "byte ordering mismatch" +msgstr "byte-ordning stämmer inte" + +#: ../../common/controldata_utils.c:99 +#, c-format +msgid "" +"WARNING: possible byte ordering mismatch\n" +"The byte ordering used to store the pg_control file might not match the one\n" +"used by this program. In that case the results below would be incorrect, " +"and\n" +"the PostgreSQL installation would be incompatible with this data directory.\n" +msgstr "" +"VARNING: möjligt fel i talordning\n" +"Den endian-ordning med vilken pg_control lagrar filer passar kanske\n" +"inte detta program. I sÃ¥ fall kan nedanstÃ¥ende utfall vara oriktigt\n" +"och det installerade PostgreSQL vara oförenligt med databaskatalogen.\n" + +#: pg_controldata.c:33 #, c-format msgid "" "%s displays control information of a PostgreSQL database cluster.\n" @@ -27,24 +73,29 @@ msgstr "" "%s visar kontrollinformation om ett databaskluster för PostgreSQL.\n" "\n" -#: pg_controldata.c:35 +#: pg_controldata.c:34 #, c-format msgid "Usage:\n" msgstr "Användning:\n" -#: pg_controldata.c:36 +#: pg_controldata.c:35 #, c-format msgid " %s [OPTION] [DATADIR]\n" msgstr " %s [FLAGGA] [DATAKATALOG]\n" -#: pg_controldata.c:37 +#: pg_controldata.c:36 #, c-format msgid "" "\n" "Options:\n" msgstr "" "\n" -"Programväxlar:\n" +"Flaggor:\n" + +#: pg_controldata.c:37 +#, c-format +msgid " [-D] DATADIR data directory\n" +msgstr " [-D] DATADIR datakatalog\n" #: pg_controldata.c:38 #, c-format @@ -60,12 +111,14 @@ msgstr " -?, --help visa denna hjälp, avsluta sedan\n" #, c-format msgid "" "\n" -"If no data directory (DATADIR) is specified, the environment variable PGDATA\n" +"If no data directory (DATADIR) is specified, the environment variable " +"PGDATA\n" "is used.\n" "\n" msgstr "" "\n" -"Om ingen datakatalog (DATAKATALOG) har angivits sÃ¥ nyttjas omgivningsvariabeln\n" +"Om ingen datakatalog (DATAKATALOG) har angivits sÃ¥ nyttjas " +"omgivningsvariabeln\n" "PGDATA för detta syfte.\n" "\n" @@ -106,43 +159,24 @@ msgstr "i full drift" msgid "unrecognized status code" msgstr "okänd statuskod" -#: pg_controldata.c:83 +#: pg_controldata.c:81 msgid "unrecognized wal_level" msgstr "okänd wal_level" -#: pg_controldata.c:128 -#, c-format -msgid "%s: no data directory specified\n" -msgstr "%s: Ingen datakatalog angiven.\n" - -#: pg_controldata.c:129 +#: pg_controldata.c:127 pg_controldata.c:145 pg_controldata.c:153 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Försök med '%s --help' för mer information.\n" +msgstr "Försök med \"%s --help\" för mer information.\n" -#: pg_controldata.c:137 +#: pg_controldata.c:143 #, c-format -msgid "%s: could not open file \"%s\" for reading: %s\n" -msgstr "%s: kunde inte öppna filen \"%s\" för läsning: %s\n" +msgid "%s: too many command-line arguments (first is \"%s\")\n" +msgstr "%s: för mÃ¥nga kommandoradsargument (första är \"%s\")\n" -#: pg_controldata.c:144 +#: pg_controldata.c:152 #, c-format -msgid "%s: could not read file \"%s\": %s\n" -msgstr "%s: kunde inte läsa filen \"%s\": %s\n" - -#: pg_controldata.c:158 -#, c-format -msgid "" -"WARNING: Calculated CRC checksum does not match value stored in file.\n" -"Either the file is corrupt, or it has a different layout than this program\n" -"is expecting. The results below are untrustworthy.\n" -"\n" -msgstr "" -"VARNING: Beräknad CRC-kontrollsumma matchar inte det värde som har sparats " -"i filen.\n" -"Antingen är filen trasig, eller sÃ¥ har den en annan uppbyggnad än vad detta\n" -"program förväntade sig. Resultatet nedan är inte helt tillförlitligt.\n" -"\n" +msgid "%s: no data directory specified\n" +msgstr "%s: ingen datakatalog angiven.\n" # Sep. 6th, 2014: # Insert additional spaces in translated strings for the @@ -150,282 +184,284 @@ msgstr "" # used for English is insufficient for Swedish. New indenting # is consistent for all reporting statements: six additional # space characters. -#: pg_controldata.c:192 +#: pg_controldata.c:190 #, c-format msgid "pg_control version number: %u\n" msgstr "Versionsnummer för pg_control: %u\n" -#: pg_controldata.c:195 -#, c-format -msgid "" -"WARNING: possible byte ordering mismatch\n" -"The byte ordering used to store the pg_control file might not match the one\n" -"used by this program. In that case the results below would be incorrect, and\n" -"the PostgreSQL installation would be incompatible with this data directory.\n" -msgstr "" -"VARNING: möjligt fel i talordning\n" -"Den endian-ordning med vilken pg_control lagrar filer passar kanske\n" -"inte detta program. I sÃ¥ fall kan nedanstÃ¥ende utfall vara oriktigt\n" -"och det installerade PostgreSQL vara oförenligt med databaskatalogen.\n" - -#: pg_controldata.c:199 +#: pg_controldata.c:192 #, c-format msgid "Catalog version number: %u\n" msgstr "Katalogversion: %u\n" -#: pg_controldata.c:201 +#: pg_controldata.c:194 #, c-format msgid "Database system identifier: %s\n" msgstr "Databasens systemidentifierare: %s\n" -#: pg_controldata.c:203 +#: pg_controldata.c:196 #, c-format msgid "Database cluster state: %s\n" msgstr "Databasklustrets tillstÃ¥nd: %s\n" -#: pg_controldata.c:205 +#: pg_controldata.c:198 #, c-format msgid "pg_control last modified: %s\n" msgstr "pg_control ändrades senast: %s\n" -#: pg_controldata.c:207 +#: pg_controldata.c:200 #, c-format msgid "Latest checkpoint location: %X/%X\n" -msgstr "Läge för senaste kontrollpunkt: %X/%X\n" +msgstr "Läge för senaste checkpoint: %X/%X\n" -#: pg_controldata.c:210 +#: pg_controldata.c:203 #, c-format msgid "Prior checkpoint location: %X/%X\n" -msgstr "Närmast föregÃ¥ende kontrollpunkt: %X/%X\n" +msgstr "Närmast föregÃ¥ende checkpoint: %X/%X\n" -#: pg_controldata.c:213 +#: pg_controldata.c:206 #, c-format msgid "Latest checkpoint's REDO location: %X/%X\n" -msgstr "REDO-läge för senaste kontrollpunkt: %X/%X\n" +msgstr "REDO-läge för senaste checkpoint: %X/%X\n" -#: pg_controldata.c:216 +#: pg_controldata.c:209 #, c-format msgid "Latest checkpoint's REDO WAL file: %s\n" -msgstr "REDO-WAL-fil vid senaste kontrollpunkt: %s\n" +msgstr "REDO-WAL-fil vid senaste checkpoint: %s\n" -#: pg_controldata.c:218 +#: pg_controldata.c:211 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" -msgstr "TimeLineID vid senaste kontrollpunkt: %u\n" +msgstr "TimeLineID vid senaste checkpoint: %u\n" -#: pg_controldata.c:220 +#: pg_controldata.c:213 #, c-format msgid "Latest checkpoint's PrevTimeLineID: %u\n" -msgstr "PrevTimeLineID vid senaste kontrollpunkt: %u\n" +msgstr "PrevTimeLineID vid senaste checkpoint: %u\n" -#: pg_controldata.c:222 +#: pg_controldata.c:215 #, c-format msgid "Latest checkpoint's full_page_writes: %s\n" -msgstr "Senaste kontrollpunktens full_page_writes: %s\n" +msgstr "Senaste checkpoint:ens full_page_writes: %s\n" -#: pg_controldata.c:223 pg_controldata.c:264 +#: pg_controldata.c:216 pg_controldata.c:261 pg_controldata.c:271 msgid "off" msgstr "av" -#: pg_controldata.c:223 pg_controldata.c:264 +#: pg_controldata.c:216 pg_controldata.c:261 pg_controldata.c:271 msgid "on" msgstr "pÃ¥" -#: pg_controldata.c:224 +#: pg_controldata.c:217 #, c-format -msgid "Latest checkpoint's NextXID: %u/%u\n" -msgstr "NextXID vid senaste kontrollpunkt: %u/%u\n" +msgid "Latest checkpoint's NextXID: %u:%u\n" +msgstr "NextXID vid senaste checkpoint: %u:%u\n" -#: pg_controldata.c:227 +#: pg_controldata.c:220 #, c-format msgid "Latest checkpoint's NextOID: %u\n" -msgstr "NextOID vid senaste kontrollpunkt: %u\n" +msgstr "NextOID vid senaste checkpoint: %u\n" -#: pg_controldata.c:229 +#: pg_controldata.c:222 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" -msgstr "NextMultiXactId vid senaste kontrollpunkt: %u\n" +msgstr "NextMultiXactId vid senaste checkpoint: %u\n" -#: pg_controldata.c:231 +#: pg_controldata.c:224 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" -msgstr "NextMultiOffset vid senaste kontrollpunkt: %u\n" +msgstr "NextMultiOffset vid senaste checkpoint: %u\n" -#: pg_controldata.c:233 +#: pg_controldata.c:226 #, c-format msgid "Latest checkpoint's oldestXID: %u\n" -msgstr "oldestXID vid senaste kontrollpunkt: %u\n" +msgstr "oldestXID vid senaste checkpoint: %u\n" -#: pg_controldata.c:235 +#: pg_controldata.c:228 #, c-format msgid "Latest checkpoint's oldestXID's DB: %u\n" -msgstr "DB för oldestXID vid senaste kontrollpunkt: %u\n" +msgstr "DB för oldestXID vid senaste checkpoint: %u\n" -#: pg_controldata.c:237 +#: pg_controldata.c:230 #, c-format msgid "Latest checkpoint's oldestActiveXID: %u\n" -msgstr "oldestActiveXID vid senaste kontrollpunkt: %u\n" +msgstr "oldestActiveXID vid senaste checkpoint: %u\n" -#: pg_controldata.c:239 +#: pg_controldata.c:232 #, c-format msgid "Latest checkpoint's oldestMultiXid: %u\n" -msgstr "oldestMultiXid vid senaste kontrollpunkt: %u\n" +msgstr "oldestMultiXid vid senaste checkpoint: %u\n" -#: pg_controldata.c:241 +#: pg_controldata.c:234 #, c-format msgid "Latest checkpoint's oldestMulti's DB: %u\n" -msgstr "DB för oldestMulti vid senaste kontrollpkt: %u\n" +msgstr "DB för oldestMulti vid senaste checkpoint: %u\n" + +#: pg_controldata.c:236 +#, c-format +msgid "Latest checkpoint's oldestCommitTsXid:%u\n" +msgstr "oldestCommitTsXid vid senaste checkpoint: %u\n" + +#: pg_controldata.c:238 +#, c-format +msgid "Latest checkpoint's newestCommitTsXid:%u\n" +msgstr "newestCommitTsXid vid senaste checkpoint: %u\n" -#: pg_controldata.c:243 +#: pg_controldata.c:240 #, c-format msgid "Time of latest checkpoint: %s\n" -msgstr "Tidpunkt för senaste kontrollpunkt: %s\n" +msgstr "Tidpunkt för senaste checkpoint: %s\n" -#: pg_controldata.c:245 +#: pg_controldata.c:242 #, c-format msgid "Fake LSN counter for unlogged rels: %X/%X\n" msgstr "Beräknat LSN-tal av ologgade relationer: %X/%X\n" -#: pg_controldata.c:248 +#: pg_controldata.c:245 #, c-format msgid "Minimum recovery ending location: %X/%X\n" -msgstr "Slutläge för minsta Ã¥terställning: %X/%X\n" +msgstr "Minsta slutposition vid Ã¥terställning: %X/%X\n" -#: pg_controldata.c:251 +#: pg_controldata.c:248 #, c-format msgid "Min recovery ending loc's timeline: %u\n" -msgstr "Sluttid för minsta Ã¥terställning: %u\n" +msgstr "Tidslinje för min slutpos vid Ã¥terställning:%u\n" -#: pg_controldata.c:253 +#: pg_controldata.c:250 #, c-format msgid "Backup start location: %X/%X\n" msgstr "Startpunkt för backup: %X/%X\n" -#: pg_controldata.c:256 +#: pg_controldata.c:253 #, c-format msgid "Backup end location: %X/%X\n" msgstr "Slutpunkt för backup: %X/%X\n" -#: pg_controldata.c:259 +#: pg_controldata.c:256 #, c-format msgid "End-of-backup record required: %s\n" msgstr "Tvingande markering av backupslut: %s\n" -#: pg_controldata.c:260 +#: pg_controldata.c:257 msgid "no" msgstr "nej" -#: pg_controldata.c:260 +#: pg_controldata.c:257 msgid "yes" msgstr "ja" -#: pg_controldata.c:261 +#: pg_controldata.c:258 #, c-format -msgid "Current wal_level setting: %s\n" -msgstr "Nuvarande värde pÃ¥ wal_level: %s\n" +msgid "wal_level setting: %s\n" +msgstr "Värde pÃ¥ wal_level: %s\n" -#: pg_controldata.c:263 +#: pg_controldata.c:260 #, c-format -msgid "Current wal_log_hints setting: %s\n" -msgstr "Nuvarande värde pÃ¥ wal_log_hints: %s\n" +msgid "wal_log_hints setting: %s\n" +msgstr "Värde pÃ¥ wal_log_hints: %s\n" -#: pg_controldata.c:265 +#: pg_controldata.c:262 #, c-format -msgid "Current max_connections setting: %d\n" -msgstr "Nuvarande värde pÃ¥ max_connections: %d\n" +msgid "max_connections setting: %d\n" +msgstr "Värde pÃ¥ max_connections: %d\n" -#: pg_controldata.c:267 +#: pg_controldata.c:264 #, c-format -msgid "Current max_worker_processes setting: %d\n" -msgstr "Nuvarande max_worker_processes: %d\n" +msgid "max_worker_processes setting: %d\n" +msgstr "Värde pÃ¥ max_worker_processes: %d\n" -#: pg_controldata.c:269 +#: pg_controldata.c:266 #, c-format -msgid "Current max_prepared_xacts setting: %d\n" -msgstr "Nuvarande max_prepared_xacts: %d\n" +msgid "max_prepared_xacts setting: %d\n" +msgstr "Värde pÃ¥ max_prepared_xacts: %d\n" -#: pg_controldata.c:271 +#: pg_controldata.c:268 #, c-format -msgid "Current max_locks_per_xact setting: %d\n" +msgid "max_locks_per_xact setting: %d\n" msgstr "Nuvarande max_locks_per_xact: %d\n" -#: pg_controldata.c:273 +#: pg_controldata.c:270 +#, c-format +msgid "track_commit_timestamp setting: %s\n" +msgstr "Värde pÃ¥ track_commit_timestamp: %s\n" + +#: pg_controldata.c:272 #, c-format msgid "Maximum data alignment: %u\n" msgstr "Maximal jämkning av data (alignment): %u\n" -#: pg_controldata.c:276 +#: pg_controldata.c:275 #, c-format msgid "Database block size: %u\n" msgstr "Databasens blockstorlek: %u\n" -#: pg_controldata.c:278 +#: pg_controldata.c:277 #, c-format msgid "Blocks per segment of large relation: %u\n" msgstr "Block per segment i en stor relation: %u\n" -#: pg_controldata.c:280 +#: pg_controldata.c:279 #, c-format msgid "WAL block size: %u\n" msgstr "Blockstorlek i transaktionsloggen: %u\n" -#: pg_controldata.c:282 +#: pg_controldata.c:281 #, c-format msgid "Bytes per WAL segment: %u\n" msgstr "Segmentstorlek i transaktionsloggen: %u\n" -#: pg_controldata.c:284 +#: pg_controldata.c:283 #, c-format msgid "Maximum length of identifiers: %u\n" msgstr "Maximal längd för identifierare: %u\n" -#: pg_controldata.c:286 +#: pg_controldata.c:285 #, c-format msgid "Maximum columns in an index: %u\n" msgstr "Maximalt antal kolonner i ett index: %u\n" -#: pg_controldata.c:288 +#: pg_controldata.c:287 #, c-format msgid "Maximum size of a TOAST chunk: %u\n" msgstr "Maximal storlek för en TOAST-enhet: %u\n" -#: pg_controldata.c:290 +#: pg_controldata.c:289 #, c-format msgid "Size of a large-object chunk: %u\n" msgstr "Storlek för large-object-enheter: %u\n" -#: pg_controldata.c:292 +#: pg_controldata.c:291 #, c-format msgid "Date/time type storage: %s\n" msgstr "Representation av dag och tid: %s\n" -#: pg_controldata.c:293 +#: pg_controldata.c:292 msgid "64-bit integers" msgstr "64-bitars heltal" -#: pg_controldata.c:293 +#: pg_controldata.c:292 msgid "floating-point numbers" msgstr "flyttal" -#: pg_controldata.c:294 +#: pg_controldata.c:293 #, c-format msgid "Float4 argument passing: %s\n" -msgstr "Ã…tkomst till float4-argument: %s\n" +msgstr "Överföring av float4-argument: %s\n" -#: pg_controldata.c:295 pg_controldata.c:297 +#: pg_controldata.c:294 pg_controldata.c:296 msgid "by reference" -msgstr "referens" +msgstr "med referens" -#: pg_controldata.c:295 pg_controldata.c:297 +#: pg_controldata.c:294 pg_controldata.c:296 msgid "by value" -msgstr "värdeÃ¥tkomst" +msgstr "med värde" -#: pg_controldata.c:296 +#: pg_controldata.c:295 #, c-format msgid "Float8 argument passing: %s\n" -msgstr "Ã…tkomst till float8-argument: %s\n" +msgstr "Överföring av float8-argument: %s\n" -#: pg_controldata.c:298 +#: pg_controldata.c:297 #, c-format msgid "Data page checksum version: %u\n" msgstr "Checksummaversion för datasidor: %u\n" diff --git a/src/bin/pg_ctl/po/es.po b/src/bin/pg_ctl/po/es.po index 225918a90f..78def253b5 100644 --- a/src/bin/pg_ctl/po/es.po +++ b/src/bin/pg_ctl/po/es.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: pg_ctl (PostgreSQL 9.6)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-05-02 20:14+0000\n" -"PO-Revision-Date: 2016-05-23 09:50-0500\n" +"POT-Creation-Date: 2017-08-27 21:52+0000\n" +"PO-Revision-Date: 2017-08-28 11:37+0200\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL Español \n" "Language: es\n" @@ -843,20 +843,3 @@ msgstr "%s: no se especificó operación\n" #, c-format msgid "%s: no database directory specified and environment variable PGDATA unset\n" msgstr "%s: no se especificó directorio de datos y la variable PGDATA no está definida\n" - -#~ msgid "%s: could not start server: exit code was %d\n" -#~ msgstr "%s: no se pudo iniciar el servidor: el código de retorno fue %d\n" - -#~ msgid "" -#~ "\n" -#~ "%s: this data directory appears to be running a pre-existing postmaster\n" -#~ msgstr "" -#~ "\n" -#~ "%s: este directorio de datos parece estar ejecutando un postmaster pre-existente\n" - -#~ msgid "" -#~ "\n" -#~ "%s: could not stat file \"%s\": %s\n" -#~ msgstr "" -#~ "\n" -#~ "%s: no se pudo hacer «stat» al archivo «%s»: %s\n" diff --git a/src/bin/pg_ctl/po/fr.po b/src/bin/pg_ctl/po/fr.po index c27534e124..769a0107ec 100644 --- a/src/bin/pg_ctl/po/fr.po +++ b/src/bin/pg_ctl/po/fr.po @@ -1,10 +1,10 @@ # translation of pg_ctl.po to fr_fr # french message translation file for pg_ctl # -# Use these quotes: « %s » +# Use these quotes: « %s » # # Guillaume Lelarge , 2003-2009. -# Stéphane Schildknecht , 2009. +# Stéphane Schildknecht , 2009. msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" @@ -15,51 +15,51 @@ msgstr "" "Language-Team: PostgreSQLfr \n" "Language: fr\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.8.6\n" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, c-format msgid "could not identify current directory: %s" -msgstr "n'a pas pu identifier le répertoire courant : %s" +msgstr "n'a pas pu identifier le répertoire courant : %s" #: ../../common/exec.c:146 #, c-format msgid "invalid binary \"%s\"" -msgstr "binaire « %s » invalide" +msgstr "binaire « %s » invalide" #: ../../common/exec.c:195 #, c-format msgid "could not read binary \"%s\"" -msgstr "n'a pas pu lire le binaire « %s »" +msgstr "n'a pas pu lire le binaire « %s »" #: ../../common/exec.c:202 #, c-format msgid "could not find a \"%s\" to execute" -msgstr "n'a pas pu trouver un « %s » à exécuter" +msgstr "n'a pas pu trouver un « %s » à exécuter" #: ../../common/exec.c:257 ../../common/exec.c:293 #, c-format msgid "could not change directory to \"%s\": %s" -msgstr "n'a pas pu modifier le répertoire par « %s » : %s" +msgstr "n'a pas pu modifier le répertoire par « %s » : %s" #: ../../common/exec.c:272 #, c-format msgid "could not read symbolic link \"%s\"" -msgstr "n'a pas pu lire le lien symbolique « %s »" +msgstr "n'a pas pu lire le lien symbolique « %s »" #: ../../common/exec.c:523 #, c-format msgid "pclose failed: %s" -msgstr "échec de pclose : %s" +msgstr "échec de pclose : %s" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 #: ../../common/fe_memutils.c:98 ../../port/path.c:598 ../../port/path.c:636 #: ../../port/path.c:653 #, c-format msgid "out of memory\n" -msgstr "mémoire épuisée\n" +msgstr "mémoire épuisée\n" #: ../../common/fe_memutils.c:92 #, c-format @@ -69,7 +69,7 @@ msgstr "ne peut pas dupliquer un pointeur nul (erreur interne)\n" #: ../../common/wait_error.c:47 #, c-format msgid "command not executable" -msgstr "commande non exécutable" +msgstr "commande non exécutable" #: ../../common/wait_error.c:51 #, c-format @@ -79,72 +79,72 @@ msgstr "commande introuvable" #: ../../common/wait_error.c:56 #, c-format msgid "child process exited with exit code %d" -msgstr "le processus fils a quitté avec le code de sortie %d" +msgstr "le processus fils a quitté avec le code de sortie %d" #: ../../common/wait_error.c:63 #, c-format msgid "child process was terminated by exception 0x%X" -msgstr "le processus fils a été terminé par l'exception 0x%X" +msgstr "le processus fils a été terminé par l'exception 0x%X" #: ../../common/wait_error.c:73 #, c-format msgid "child process was terminated by signal %s" -msgstr "le processus fils a été terminé par le signal %s" +msgstr "le processus fils a été terminé par le signal %s" #: ../../common/wait_error.c:77 #, c-format msgid "child process was terminated by signal %d" -msgstr "le processus fils a été terminé par le signal %d" +msgstr "le processus fils a été terminé par le signal %d" #: ../../common/wait_error.c:82 #, c-format msgid "child process exited with unrecognized status %d" -msgstr "le processus fils a quitté avec un statut %d non reconnu" +msgstr "le processus fils a quitté avec un statut %d non reconnu" #: ../../port/path.c:620 #, c-format msgid "could not get current working directory: %s\n" -msgstr "n'a pas pu obtenir le répertoire de travail : %s\n" +msgstr "n'a pas pu obtenir le répertoire de travail : %s\n" #: pg_ctl.c:263 #, c-format msgid "%s: directory \"%s\" does not exist\n" -msgstr "%s : le répertoire « %s » n'existe pas\n" +msgstr "%s : le répertoire « %s » n'existe pas\n" #: pg_ctl.c:266 #, c-format msgid "%s: could not access directory \"%s\": %s\n" -msgstr "%s : n'a pas pu accéder au répertoire « %s » : %s\n" +msgstr "%s : n'a pas pu accéder au répertoire « %s » : %s\n" #: pg_ctl.c:280 #, c-format msgid "%s: directory \"%s\" is not a database cluster directory\n" -msgstr "%s : le répertoire « %s » n'est pas un répertoire d'instance\n" +msgstr "%s : le répertoire « %s » n'est pas un répertoire d'instance\n" #: pg_ctl.c:293 #, c-format msgid "%s: could not open PID file \"%s\": %s\n" -msgstr "%s : n'a pas pu ouvrir le fichier de PID « %s » : %s\n" +msgstr "%s : n'a pas pu ouvrir le fichier de PID « %s » : %s\n" #: pg_ctl.c:302 #, c-format msgid "%s: the PID file \"%s\" is empty\n" -msgstr "%s : le fichier PID « %s » est vide\n" +msgstr "%s : le fichier PID « %s » est vide\n" #: pg_ctl.c:305 #, c-format msgid "%s: invalid data in PID file \"%s\"\n" -msgstr "%s : données invalides dans le fichier de PID « %s »\n" +msgstr "%s : données invalides dans le fichier de PID « %s »\n" #: pg_ctl.c:455 pg_ctl.c:483 #, c-format msgid "%s: could not start server: %s\n" -msgstr "%s : n'a pas pu démarrer le serveur : %s\n" +msgstr "%s : n'a pas pu démarrer le serveur : %s\n" #: pg_ctl.c:507 #, c-format msgid "%s: could not start server: error code %lu\n" -msgstr "%s : n'a pas pu démarrer le serveur : code d'erreur %lu\n" +msgstr "%s : n'a pas pu démarrer le serveur : code d'erreur %lu\n" #: pg_ctl.c:584 #, c-format @@ -153,7 +153,7 @@ msgid "" "%s: -w option is not supported when starting a pre-9.1 server\n" msgstr "" "\n" -"%s : l'option -w n'est pas supportée lors du démarrage d'un serveur pré-9.1\n" +"%s : l'option -w n'est pas supportée lors du démarrage d'un serveur pré-9.1\n" #: pg_ctl.c:649 #, c-format @@ -162,7 +162,7 @@ msgid "" "%s: -w option cannot use a relative socket directory specification\n" msgstr "" "\n" -"%s : l'option -w ne peut pas utiliser un chemin relatif vers le répertoire de\n" +"%s : l'option -w ne peut pas utiliser un chemin relatif vers le répertoire de\n" "la socket\n" #: pg_ctl.c:751 @@ -175,12 +175,12 @@ msgstr "" #: pg_ctl.c:776 #, c-format msgid "%s: could not read file \"%s\"\n" -msgstr "%s : n'a pas pu lire le fichier « %s »\n" +msgstr "%s : n'a pas pu lire le fichier « %s »\n" #: pg_ctl.c:781 #, c-format msgid "%s: option file \"%s\" must have exactly one line\n" -msgstr "%s : le fichier d'options « %s » ne doit comporter qu'une seule ligne\n" +msgstr "%s : le fichier d'options « %s » ne doit comporter qu'une seule ligne\n" #: pg_ctl.c:832 #, c-format @@ -189,9 +189,9 @@ msgid "" "same directory as \"%s\".\n" "Check your installation.\n" msgstr "" -"Le programme « %s » est nécessaire pour %s, mais n'a pas été trouvé\n" -"dans le même répertoire que « %s ».\n" -"Vérifiez votre installation.\n" +"Le programme « %s » est nécessaire pour %s, mais n'a pas été trouvé\n" +"dans le même répertoire que « %s ».\n" +"Vérifiez votre installation.\n" #: pg_ctl.c:838 #, c-format @@ -200,41 +200,41 @@ msgid "" "but was not the same version as %s.\n" "Check your installation.\n" msgstr "" -"Le programme « %s », trouvé par « %s », n'est pas de la même version\n" +"Le programme « %s », trouvé par « %s », n'est pas de la même version\n" "que %s.\n" -"Vérifiez votre installation.\n" +"Vérifiez votre installation.\n" #: pg_ctl.c:871 #, c-format msgid "%s: database system initialization failed\n" -msgstr "%s : l'initialisation du système a échoué\n" +msgstr "%s : l'initialisation du système a échoué\n" #: pg_ctl.c:886 #, c-format msgid "%s: another server might be running; trying to start server anyway\n" msgstr "" -"%s : un autre serveur semble en cours d'exécution ; le démarrage du serveur\n" -"va toutefois être tenté\n" +"%s : un autre serveur semble en cours d'exécution ; le démarrage du serveur\n" +"va toutefois être tenté\n" #: pg_ctl.c:924 msgid "waiting for server to start..." -msgstr "en attente du démarrage du serveur..." +msgstr "en attente du démarrage du serveur..." #: pg_ctl.c:929 pg_ctl.c:1036 pg_ctl.c:1127 msgid " done\n" -msgstr " effectué\n" +msgstr " effectué\n" #: pg_ctl.c:930 msgid "server started\n" -msgstr "serveur démarré\n" +msgstr "serveur démarré\n" #: pg_ctl.c:933 pg_ctl.c:937 msgid " stopped waiting\n" -msgstr " attente arrêtée\n" +msgstr " attente arrêtée\n" #: pg_ctl.c:934 msgid "server is still starting up\n" -msgstr "le serveur est toujours en cours de démarrage\n" +msgstr "le serveur est toujours en cours de démarrage\n" #: pg_ctl.c:938 #, c-format @@ -242,46 +242,46 @@ msgid "" "%s: could not start server\n" "Examine the log output.\n" msgstr "" -"%s : n'a pas pu démarrer le serveur\n" +"%s : n'a pas pu démarrer le serveur\n" "Examinez le journal applicatif.\n" #: pg_ctl.c:944 pg_ctl.c:1028 pg_ctl.c:1118 msgid " failed\n" -msgstr " a échoué\n" +msgstr " a échoué\n" #: pg_ctl.c:945 #, c-format msgid "%s: could not wait for server because of misconfiguration\n" -msgstr "%s : n'a pas pu attendre le serveur à cause d'une mauvaise configuration\n" +msgstr "%s : n'a pas pu attendre le serveur à cause d'une mauvaise configuration\n" #: pg_ctl.c:951 msgid "server starting\n" -msgstr "serveur en cours de démarrage\n" +msgstr "serveur en cours de démarrage\n" #: pg_ctl.c:972 pg_ctl.c:1058 pg_ctl.c:1148 pg_ctl.c:1188 #, c-format msgid "%s: PID file \"%s\" does not exist\n" -msgstr "%s : le fichier de PID « %s » n'existe pas\n" +msgstr "%s : le fichier de PID « %s » n'existe pas\n" #: pg_ctl.c:973 pg_ctl.c:1060 pg_ctl.c:1149 pg_ctl.c:1189 msgid "Is server running?\n" -msgstr "Le serveur est-il en cours d'exécution ?\n" +msgstr "Le serveur est-il en cours d'exécution ?\n" #: pg_ctl.c:979 #, c-format msgid "%s: cannot stop server; single-user server is running (PID: %ld)\n" msgstr "" -"%s : ne peut pas arrêter le serveur ; le serveur mono-utilisateur est en\n" -"cours d'exécution (PID : %ld)\n" +"%s : ne peut pas arrêter le serveur ; le serveur mono-utilisateur est en\n" +"cours d'exécution (PID : %ld)\n" #: pg_ctl.c:987 pg_ctl.c:1082 #, c-format msgid "%s: could not send stop signal (PID: %ld): %s\n" -msgstr "%s : n'a pas pu envoyer le signal d'arrêt (PID : %ld) : %s\n" +msgstr "%s : n'a pas pu envoyer le signal d'arrêt (PID : %ld) : %s\n" #: pg_ctl.c:994 msgid "server shutting down\n" -msgstr "serveur en cours d'arrêt\n" +msgstr "serveur en cours d'arrêt\n" #: pg_ctl.c:1009 pg_ctl.c:1097 msgid "" @@ -289,57 +289,57 @@ msgid "" "Shutdown will not complete until pg_stop_backup() is called.\n" "\n" msgstr "" -"ATTENTION : le mode de sauvegarde en ligne est activé.\n" -"L'arrêt ne surviendra qu'au moment où pg_stop_backup() sera appelé.\n" +"ATTENTION : le mode de sauvegarde en ligne est activé.\n" +"L'arrêt ne surviendra qu'au moment où pg_stop_backup() sera appelé.\n" "\n" #: pg_ctl.c:1013 pg_ctl.c:1101 msgid "waiting for server to shut down..." -msgstr "en attente de l'arrêt du serveur..." +msgstr "en attente de l'arrêt du serveur..." #: pg_ctl.c:1030 pg_ctl.c:1120 #, c-format msgid "%s: server does not shut down\n" -msgstr "%s : le serveur ne s'est pas arrêté\n" +msgstr "%s : le serveur ne s'est pas arrêté\n" #: pg_ctl.c:1032 pg_ctl.c:1122 msgid "" "HINT: The \"-m fast\" option immediately disconnects sessions rather than\n" "waiting for session-initiated disconnection.\n" msgstr "" -"ASTUCE : l'option « -m fast » déconnecte immédiatement les sessions plutôt que\n" -"d'attendre la déconnexion des sessions déjà présentes.\n" +"ASTUCE : l'option « -m fast » déconnecte immédiatement les sessions plutôt que\n" +"d'attendre la déconnexion des sessions déjà présentes.\n" #: pg_ctl.c:1038 pg_ctl.c:1128 msgid "server stopped\n" -msgstr "serveur arrêté\n" +msgstr "serveur arrêté\n" #: pg_ctl.c:1061 pg_ctl.c:1134 msgid "starting server anyway\n" -msgstr "lancement du serveur malgré tout\n" +msgstr "lancement du serveur malgré tout\n" #: pg_ctl.c:1070 #, c-format msgid "%s: cannot restart server; single-user server is running (PID: %ld)\n" msgstr "" "%s : ne peut pas relancer le serveur ; le serveur mono-utilisateur est en\n" -"cours d'exécution (PID : %ld)\n" +"cours d'exécution (PID : %ld)\n" #: pg_ctl.c:1073 pg_ctl.c:1158 msgid "Please terminate the single-user server and try again.\n" -msgstr "Merci d'arrêter le serveur mono-utilisateur et de réessayer.\n" +msgstr "Merci d'arrêter le serveur mono-utilisateur et de réessayer.\n" #: pg_ctl.c:1132 #, c-format msgid "%s: old server process (PID: %ld) seems to be gone\n" -msgstr "%s : l'ancien processus serveur (PID : %ld) semble être parti\n" +msgstr "%s : l'ancien processus serveur (PID : %ld) semble être parti\n" #: pg_ctl.c:1155 #, c-format msgid "%s: cannot reload server; single-user server is running (PID: %ld)\n" msgstr "" "%s : ne peut pas recharger le serveur ; le serveur mono-utilisateur est en\n" -"cours d'exécution (PID : %ld)\n" +"cours d'exécution (PID : %ld)\n" #: pg_ctl.c:1164 #, c-format @@ -355,7 +355,7 @@ msgstr "envoi d'un signal au serveur\n" msgid "%s: cannot promote server; single-user server is running (PID: %ld)\n" msgstr "" "%s : ne peut pas promouvoir le serveur ; le serveur mono-utilisateur est en\n" -"cours d'exécution (PID : %ld)\n" +"cours d'exécution (PID : %ld)\n" #: pg_ctl.c:1204 #, c-format @@ -365,12 +365,12 @@ msgstr "%s : ne peut pas promouvoir le serveur ; le serveur n'est pas en standby #: pg_ctl.c:1219 #, c-format msgid "%s: could not create promote signal file \"%s\": %s\n" -msgstr "%s : n'a pas pu créer le fichier « %s » signalant la promotion : %s\n" +msgstr "%s : n'a pas pu créer le fichier « %s » signalant la promotion : %s\n" #: pg_ctl.c:1225 #, c-format msgid "%s: could not write promote signal file \"%s\": %s\n" -msgstr "%s : n'a pas pu écrire le fichier « %s » signalant la promotion : %s\n" +msgstr "%s : n'a pas pu écrire le fichier « %s » signalant la promotion : %s\n" #: pg_ctl.c:1233 #, c-format @@ -380,7 +380,7 @@ msgstr "%s : n'a pas pu envoyer le signal de promotion (PID : %ld) : %s\n" #: pg_ctl.c:1236 #, c-format msgid "%s: could not remove promote signal file \"%s\": %s\n" -msgstr "%s : n'a pas pu supprimer le fichier « %s » signalant la promotion : %s\n" +msgstr "%s : n'a pas pu supprimer le fichier « %s » signalant la promotion : %s\n" #: pg_ctl.c:1241 msgid "server promoting\n" @@ -389,17 +389,17 @@ msgstr "serveur en cours de promotion\n" #: pg_ctl.c:1288 #, c-format msgid "%s: single-user server is running (PID: %ld)\n" -msgstr "%s : le serveur mono-utilisateur est en cours d'exécution (PID : %ld)\n" +msgstr "%s : le serveur mono-utilisateur est en cours d'exécution (PID : %ld)\n" #: pg_ctl.c:1301 #, c-format msgid "%s: server is running (PID: %ld)\n" -msgstr "%s : le serveur est en cours d'exécution (PID : %ld)\n" +msgstr "%s : le serveur est en cours d'exécution (PID : %ld)\n" #: pg_ctl.c:1317 #, c-format msgid "%s: no server running\n" -msgstr "%s : aucun serveur en cours d'exécution\n" +msgstr "%s : aucun serveur en cours d'exécution\n" #: pg_ctl.c:1335 #, c-format @@ -409,12 +409,12 @@ msgstr "%s : n'a pas pu envoyer le signal %d (PID : %ld) : %s\n" #: pg_ctl.c:1392 #, c-format msgid "%s: could not find own program executable\n" -msgstr "%s : n'a pas pu trouver l'exécutable du programme\n" +msgstr "%s : n'a pas pu trouver l'exécutable du programme\n" #: pg_ctl.c:1402 #, c-format msgid "%s: could not find postgres program executable\n" -msgstr "%s : n'a pas pu trouver l'exécutable postgres\n" +msgstr "%s : n'a pas pu trouver l'exécutable postgres\n" #: pg_ctl.c:1486 pg_ctl.c:1520 #, c-format @@ -424,49 +424,49 @@ msgstr "%s : n'a pas pu ouvrir le gestionnaire de services\n" #: pg_ctl.c:1492 #, c-format msgid "%s: service \"%s\" already registered\n" -msgstr "%s : le service « %s » est déjà enregistré\n" +msgstr "%s : le service « %s » est déjà enregistré\n" #: pg_ctl.c:1503 #, c-format msgid "%s: could not register service \"%s\": error code %lu\n" -msgstr "%s : n'a pas pu enregistrer le service « %s » : code d'erreur %lu\n" +msgstr "%s : n'a pas pu enregistrer le service « %s » : code d'erreur %lu\n" #: pg_ctl.c:1526 #, c-format msgid "%s: service \"%s\" not registered\n" -msgstr "%s : le service « %s » n'est pas enregistré\n" +msgstr "%s : le service « %s » n'est pas enregistré\n" #: pg_ctl.c:1533 #, c-format msgid "%s: could not open service \"%s\": error code %lu\n" -msgstr "%s : n'a pas pu ouvrir le service « %s » : code d'erreur %lu\n" +msgstr "%s : n'a pas pu ouvrir le service « %s » : code d'erreur %lu\n" #: pg_ctl.c:1542 #, c-format msgid "%s: could not unregister service \"%s\": error code %lu\n" -msgstr "%s : n'a pas pu supprimer le service « %s » : code d'erreur %lu\n" +msgstr "%s : n'a pas pu supprimer le service « %s » : code d'erreur %lu\n" #: pg_ctl.c:1629 msgid "Waiting for server startup...\n" -msgstr "En attente du démarrage du serveur...\n" +msgstr "En attente du démarrage du serveur...\n" #: pg_ctl.c:1632 msgid "Timed out waiting for server startup\n" -msgstr "Dépassement du délai pour le démarrage du serveur\n" +msgstr "Dépassement du délai pour le démarrage du serveur\n" #: pg_ctl.c:1636 msgid "Server started and accepting connections\n" -msgstr "Serveur lancé et acceptant les connexions\n" +msgstr "Serveur lancé et acceptant les connexions\n" #: pg_ctl.c:1691 #, c-format msgid "%s: could not start service \"%s\": error code %lu\n" -msgstr "%s : n'a pas pu démarrer le service « %s » : code d'erreur %lu\n" +msgstr "%s : n'a pas pu démarrer le service « %s » : code d'erreur %lu\n" #: pg_ctl.c:1919 #, c-format msgid "%s: WARNING: cannot create restricted tokens on this platform\n" -msgstr "%s : ATTENTION : ne peut pas crér les jetons restreints sur cette plateforme\n" +msgstr "%s : ATTENTION : ne peut pas crér les jetons restreints sur cette plateforme\n" #: pg_ctl.c:1934 #, c-format @@ -481,17 +481,17 @@ msgstr "%s : n'a pas pu allouer les SID : code d'erreur %lu\n" #: pg_ctl.c:1968 #, c-format msgid "%s: could not create restricted token: error code %lu\n" -msgstr "%s : n'a pas pu créer le jeton restreint : code d'erreur %lu\n" +msgstr "%s : n'a pas pu créer le jeton restreint : code d'erreur %lu\n" #: pg_ctl.c:2002 #, c-format msgid "%s: WARNING: could not locate all job object functions in system API\n" -msgstr "%s : ATTENTION : n'a pas pu localiser toutes les fonctions objet de job dans l'API système\n" +msgstr "%s : ATTENTION : n'a pas pu localiser toutes les fonctions objet de job dans l'API système\n" #: pg_ctl.c:2085 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Essayer « %s --help » pour plus d'informations.\n" +msgstr "Essayer « %s --help » pour plus d'informations.\n" #: pg_ctl.c:2093 #, c-format @@ -499,7 +499,7 @@ msgid "" "%s is a utility to initialize, start, stop, or control a PostgreSQL server.\n" "\n" msgstr "" -"%s est un outil pour initialiser, démarrer, arrêter et contrôler un serveur\n" +"%s est un outil pour initialiser, démarrer, arrêter et contrôler un serveur\n" "PostgreSQL.\n" "\n" @@ -511,19 +511,19 @@ msgstr "Usage :\n" #: pg_ctl.c:2095 #, c-format msgid " %s init[db] [-D DATADIR] [-s] [-o \"OPTIONS\"]\n" -msgstr " %s init[db] [-D RÉP_DONNÉES] [-s] [-o \"OPTIONS\"]\n" +msgstr " %s init[db] [-D RÉP_DONNÉES] [-s] [-o \"OPTIONS\"]\n" #: pg_ctl.c:2096 #, c-format msgid " %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"]\n" msgstr "" -" %s start [-w] [-t SECS] [-D RÉP_DONNÉES] [-s] [-l NOM_FICHIER]\n" +" %s start [-w] [-t SECS] [-D RÉP_DONNÉES] [-s] [-l NOM_FICHIER]\n" " [-o \"OPTIONS\"]\n" #: pg_ctl.c:2097 #, c-format msgid " %s stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" -msgstr " %s stop [-W] [-t SECS] [-D RÉP_DONNÉES] [-s] [-m MODE_ARRET]\n" +msgstr " %s stop [-W] [-t SECS] [-D RÉP_DONNÉES] [-s] [-m MODE_ARRET]\n" #: pg_ctl.c:2098 #, c-format @@ -531,23 +531,23 @@ msgid "" " %s restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" " [-o \"OPTIONS\"]\n" msgstr "" -" %s restart [-w] [-t SECS] [-D RÉP_DONNÉES] [-s] [-m MODE_ARRET]\n" +" %s restart [-w] [-t SECS] [-D RÉP_DONNÉES] [-s] [-m MODE_ARRET]\n" " [-o \"OPTIONS\"]\n" #: pg_ctl.c:2100 #, c-format msgid " %s reload [-D DATADIR] [-s]\n" -msgstr " %s reload [-D RÉP_DONNÉES] [-s]\n" +msgstr " %s reload [-D RÉP_DONNÉES] [-s]\n" #: pg_ctl.c:2101 #, c-format msgid " %s status [-D DATADIR]\n" -msgstr " %s status [-D RÉP_DONNÉES]\n" +msgstr " %s status [-D RÉP_DONNÉES]\n" #: pg_ctl.c:2102 #, c-format msgid " %s promote [-D DATADIR] [-s]\n" -msgstr " %s promote [-D RÉP_DONNÉES] [-s]\n" +msgstr " %s promote [-D RÉP_DONNÉES] [-s]\n" #: pg_ctl.c:2103 #, c-format @@ -561,7 +561,7 @@ msgid "" " [-S START-TYPE] [-w] [-t SECS] [-o \"OPTIONS\"]\n" msgstr "" " %s register [-N NOM_SERVICE] [-U NOM_UTILISATEUR] [-P MOTDEPASSE]\n" -" [-D RÉP_DONNÉES] [-S TYPE_DÉMARRAGE] [-w] [-t SECS] [-o \"OPTIONS\"]\n" +" [-D RÉP_DONNÉES] [-S TYPE_DÉMARRAGE] [-w] [-t SECS] [-o \"OPTIONS\"]\n" #: pg_ctl.c:2107 #, c-format @@ -575,19 +575,19 @@ msgid "" "Common options:\n" msgstr "" "\n" -"Options générales :\n" +"Options générales :\n" #: pg_ctl.c:2111 #, c-format msgid " -D, --pgdata=DATADIR location of the database storage area\n" -msgstr " -D, --pgdata=RÉP_DONNÉES emplacement de stockage du cluster\n" +msgstr " -D, --pgdata=RÉP_DONNÉES emplacement de stockage du cluster\n" #: pg_ctl.c:2113 #, c-format msgid " -e SOURCE event source for logging when running as a service\n" msgstr "" -" -e SOURCE source de l'événement pour la trace lors de\n" -" l'exécution en tant que service\n" +" -e SOURCE source de l'événement pour la trace lors de\n" +" l'exécution en tant que service\n" #: pg_ctl.c:2115 #, c-format @@ -600,7 +600,7 @@ msgstr "" #, c-format msgid " -t, --timeout=SECS seconds to wait when using -w option\n" msgstr "" -" -t, --timeout=SECS durée en secondes à attendre lors de\n" +" -t, --timeout=SECS durée en secondes à attendre lors de\n" " l'utilisation de l'option -w\n" #: pg_ctl.c:2117 @@ -611,12 +611,12 @@ msgstr " -V, --version affiche la version puis quitte\n" #: pg_ctl.c:2118 #, c-format msgid " -w wait until operation completes\n" -msgstr " -w attend la fin de l'opération\n" +msgstr " -w attend la fin de l'opération\n" #: pg_ctl.c:2119 #, c-format msgid " -W do not wait until operation completes\n" -msgstr " -W n'attend pas la fin de l'opération\n" +msgstr " -W n'attend pas la fin de l'opération\n" #: pg_ctl.c:2120 #, c-format @@ -629,14 +629,14 @@ msgid "" "(The default is to wait for shutdown, but not for start or restart.)\n" "\n" msgstr "" -"(Le comportement par défaut attend l'arrêt, pas le démarrage ou le\n" -"redémarrage.)\n" +"(Le comportement par défaut attend l'arrêt, pas le démarrage ou le\n" +"redémarrage.)\n" "\n" #: pg_ctl.c:2122 #, c-format msgid "If the -D option is omitted, the environment variable PGDATA is used.\n" -msgstr "Si l'option -D est omise, la variable d'environnement PGDATA est utilisée.\n" +msgstr "Si l'option -D est omise, la variable d'environnement PGDATA est utilisée.\n" #: pg_ctl.c:2124 #, c-format @@ -645,23 +645,23 @@ msgid "" "Options for start or restart:\n" msgstr "" "\n" -"Options pour le démarrage ou le redémarrage :\n" +"Options pour le démarrage ou le redémarrage :\n" #: pg_ctl.c:2126 #, c-format msgid " -c, --core-files allow postgres to produce core files\n" -msgstr " -c, --core-files autorise postgres à produire des fichiers core\n" +msgstr " -c, --core-files autorise postgres à produire des fichiers core\n" #: pg_ctl.c:2128 #, c-format msgid " -c, --core-files not applicable on this platform\n" -msgstr " -c, --core-files non applicable à cette plateforme\n" +msgstr " -c, --core-files non applicable à cette plateforme\n" #: pg_ctl.c:2130 #, c-format msgid " -l, --log=FILENAME write (or append) server log to FILENAME\n" msgstr "" -" -l, --log=NOM_FICHIER écrit (ou ajoute) le journal du serveur dans\n" +" -l, --log=NOM_FICHIER écrit (ou ajoute) le journal du serveur dans\n" " NOM_FICHIER\n" #: pg_ctl.c:2131 @@ -670,14 +670,14 @@ msgid "" " -o OPTIONS command line options to pass to postgres\n" " (PostgreSQL server executable) or initdb\n" msgstr "" -" -o OPTIONS options de la ligne de commande à passer à\n" -" postgres (exécutable du serveur PostgreSQL)\n" -" ou à initdb\n" +" -o OPTIONS options de la ligne de commande à passer à\n" +" postgres (exécutable du serveur PostgreSQL)\n" +" ou à initdb\n" #: pg_ctl.c:2133 #, c-format msgid " -p PATH-TO-POSTGRES normally not necessary\n" -msgstr " -p CHEMIN_POSTGRES normalement pas nécessaire\n" +msgstr " -p CHEMIN_POSTGRES normalement pas nécessaire\n" #: pg_ctl.c:2134 #, c-format @@ -686,14 +686,14 @@ msgid "" "Options for stop or restart:\n" msgstr "" "\n" -"Options pour l'arrêt ou le redémarrage :\n" +"Options pour l'arrêt ou le redémarrage :\n" #: pg_ctl.c:2135 #, c-format msgid " -m, --mode=MODE MODE can be \"smart\", \"fast\", or \"immediate\"\n" msgstr "" -" -m, --mode=MODE MODE peut valoir « smart », « fast » ou\n" -" « immediate »\n" +" -m, --mode=MODE MODE peut valoir « smart », « fast » ou\n" +" « immediate »\n" #: pg_ctl.c:2137 #, c-format @@ -702,24 +702,24 @@ msgid "" "Shutdown modes are:\n" msgstr "" "\n" -"Les modes d'arrêt sont :\n" +"Les modes d'arrêt sont :\n" #: pg_ctl.c:2138 #, c-format msgid " smart quit after all clients have disconnected\n" -msgstr " smart quitte après déconnexion de tous les clients\n" +msgstr " smart quitte après déconnexion de tous les clients\n" #: pg_ctl.c:2139 #, c-format msgid " fast quit directly, with proper shutdown\n" -msgstr " fast quitte directement, et arrête correctement\n" +msgstr " fast quitte directement, et arrête correctement\n" #: pg_ctl.c:2140 #, c-format msgid " immediate quit without complete shutdown; will lead to recovery on restart\n" msgstr "" -" immediate quitte sans arrêt complet ; entraîne une\n" -" restauration au démarrage suivant\n" +" immediate quitte sans arrêt complet ; entraîne une\n" +" restauration au démarrage suivant\n" #: pg_ctl.c:2142 #, c-format @@ -728,7 +728,7 @@ msgid "" "Allowed signal names for kill:\n" msgstr "" "\n" -"Signaux autorisés pour kill :\n" +"Signaux autorisés pour kill :\n" #: pg_ctl.c:2146 #, c-format @@ -737,34 +737,34 @@ msgid "" "Options for register and unregister:\n" msgstr "" "\n" -"Options d'enregistrement ou de dés-enregistrement :\n" +"Options d'enregistrement ou de dés-enregistrement :\n" #: pg_ctl.c:2147 #, c-format msgid " -N SERVICENAME service name with which to register PostgreSQL server\n" msgstr "" -" -N NOM_SERVICE nom du service utilisé pour l'enregistrement du\n" +" -N NOM_SERVICE nom du service utilisé pour l'enregistrement du\n" " serveur PostgreSQL\n" #: pg_ctl.c:2148 #, c-format msgid " -P PASSWORD password of account to register PostgreSQL server\n" msgstr "" -" -P MOT_DE_PASSE mot de passe du compte utilisé pour\n" +" -P MOT_DE_PASSE mot de passe du compte utilisé pour\n" " l'enregistrement du serveur PostgreSQL\n" #: pg_ctl.c:2149 #, c-format msgid " -U USERNAME user name of account to register PostgreSQL server\n" msgstr "" -" -U NOM_UTILISATEUR nom de l'utilisateur du compte utilisé pour\n" +" -U NOM_UTILISATEUR nom de l'utilisateur du compte utilisé pour\n" " l'enregistrement du serveur PostgreSQL\n" #: pg_ctl.c:2150 #, c-format msgid " -S START-TYPE service start type to register PostgreSQL server\n" msgstr "" -" -S TYPE_DÉMARRAGE type de démarrage du service pour enregistrer le\n" +" -S TYPE_DÉMARRAGE type de démarrage du service pour enregistrer le\n" " serveur PostgreSQL\n" #: pg_ctl.c:2152 @@ -774,19 +774,19 @@ msgid "" "Start types are:\n" msgstr "" "\n" -"Les types de démarrage sont :\n" +"Les types de démarrage sont :\n" #: pg_ctl.c:2153 #, c-format msgid " auto start service automatically during system startup (default)\n" msgstr "" -" auto démarre le service automatiquement lors du démarrage du système\n" -" (par défaut)\n" +" auto démarre le service automatiquement lors du démarrage du système\n" +" (par défaut)\n" #: pg_ctl.c:2154 #, c-format msgid " demand start service on demand\n" -msgstr " demand démarre le service à la demande\n" +msgstr " demand démarre le service à la demande\n" #: pg_ctl.c:2157 #, c-format @@ -795,27 +795,27 @@ msgid "" "Report bugs to .\n" msgstr "" "\n" -"Rapporter les bogues à .\n" +"Rapporter les bogues à .\n" #: pg_ctl.c:2182 #, c-format msgid "%s: unrecognized shutdown mode \"%s\"\n" -msgstr "%s : mode d'arrêt non reconnu « %s »\n" +msgstr "%s : mode d'arrêt non reconnu « %s »\n" #: pg_ctl.c:2214 #, c-format msgid "%s: unrecognized signal name \"%s\"\n" -msgstr "%s : signal non reconnu « %s »\n" +msgstr "%s : signal non reconnu « %s »\n" #: pg_ctl.c:2231 #, c-format msgid "%s: unrecognized start type \"%s\"\n" -msgstr "%s : type de redémarrage « %s » non reconnu\n" +msgstr "%s : type de redémarrage « %s » non reconnu\n" #: pg_ctl.c:2286 #, c-format msgid "%s: could not determine the data directory using command \"%s\"\n" -msgstr "%s : n'a pas déterminer le répertoire des données en utilisant la commande « %s »\n" +msgstr "%s : n'a pas déterminer le répertoire des données en utilisant la commande « %s »\n" #: pg_ctl.c:2359 #, c-format @@ -824,19 +824,19 @@ msgid "" "Please log in (using, e.g., \"su\") as the (unprivileged) user that will\n" "own the server process.\n" msgstr "" -"%s : ne peut pas être exécuté en tant qu'utilisateur root\n" -"Connectez-vous (par exemple en utilisant « su ») sous l'utilisateur (non\n" -" privilégié) qui sera propriétaire du processus serveur.\n" +"%s : ne peut pas être exécuté en tant qu'utilisateur root\n" +"Connectez-vous (par exemple en utilisant « su ») sous l'utilisateur (non\n" +" privilégié) qui sera propriétaire du processus serveur.\n" #: pg_ctl.c:2442 #, c-format msgid "%s: -S option not supported on this platform\n" -msgstr "%s : option -S non supportée sur cette plateforme\n" +msgstr "%s : option -S non supportée sur cette plateforme\n" #: pg_ctl.c:2481 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" -msgstr "%s : trop d'arguments en ligne de commande (le premier étant « %s »)\n" +msgstr "%s : trop d'arguments en ligne de commande (le premier étant « %s »)\n" #: pg_ctl.c:2505 #, c-format @@ -846,41 +846,41 @@ msgstr "%s : arguments manquant pour le mode kill\n" #: pg_ctl.c:2523 #, c-format msgid "%s: unrecognized operation mode \"%s\"\n" -msgstr "%s : mode d'opération « %s » non reconnu\n" +msgstr "%s : mode d'opération « %s » non reconnu\n" #: pg_ctl.c:2533 #, c-format msgid "%s: no operation specified\n" -msgstr "%s : aucune opération indiquée\n" +msgstr "%s : aucune opération indiquée\n" #: pg_ctl.c:2554 #, c-format msgid "%s: no database directory specified and environment variable PGDATA unset\n" msgstr "" -"%s : aucun répertoire de bases de données indiqué et variable\n" -"d'environnement PGDATA non initialisée\n" +"%s : aucun répertoire de bases de données indiqué et variable\n" +"d'environnement PGDATA non initialisée\n" #~ msgid "" #~ "\n" #~ "Options for stop, restart, or promote:\n" #~ msgstr "" #~ "\n" -#~ "Options pour l'arrêt, le redémarrage ou la promotion :\n" +#~ "Options pour l'arrêt, le redémarrage ou la promotion :\n" #~ msgid "could not change directory to \"%s\"" -#~ msgstr "n'a pas pu accéder au répertoire « %s »" +#~ msgstr "n'a pas pu accéder au répertoire « %s »" #~ msgid "%s: out of memory\n" -#~ msgstr "%s : mémoire épuisée\n" +#~ msgstr "%s : mémoire épuisée\n" #~ msgid "" #~ "%s is a utility to start, stop, restart, reload configuration files,\n" #~ "report the status of a PostgreSQL server, or signal a PostgreSQL process.\n" #~ "\n" #~ msgstr "" -#~ "%s est un outil qui permet de démarrer, arrêter, redémarrer, recharger les\n" +#~ "%s est un outil qui permet de démarrer, arrêter, redémarrer, recharger les\n" #~ "les fichiers de configuration, rapporter le statut d'un serveur PostgreSQL\n" -#~ "ou d'envoyer un signal à un processus PostgreSQL\n" +#~ "ou d'envoyer un signal à un processus PostgreSQL\n" #~ "\n" #~ msgid " --version output version information, then exit\n" @@ -893,11 +893,11 @@ msgstr "" #~ msgstr "%s : n'a pas pu ouvrir le jeton du processus : %lu\n" #~ msgid "%s: could not start server: exit code was %d\n" -#~ msgstr "%s : n'a pas pu démarrer le serveur : le code de sortie est %d\n" +#~ msgstr "%s : n'a pas pu démarrer le serveur : le code de sortie est %d\n" #~ msgid "" #~ "\n" #~ "%s: this data directory appears to be running a pre-existing postmaster\n" #~ msgstr "" #~ "\n" -#~ "%s : ce répertoire des données semble être utilisé par un postmaster déjà existant\n" +#~ "%s : ce répertoire des données semble être utilisé par un postmaster déjà existant\n" diff --git a/src/bin/pg_ctl/po/it.po b/src/bin/pg_ctl/po/it.po index d137bb4ad8..63e2473d13 100644 --- a/src/bin/pg_ctl/po/it.po +++ b/src/bin/pg_ctl/po/it.po @@ -20,7 +20,7 @@ msgstr "" "Project-Id-Version: pg_ctl (PostgreSQL) 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" "POT-Creation-Date: 2016-04-17 00:14+0000\n" -"PO-Revision-Date: 2016-04-17 20:44+0100\n" +"PO-Revision-Date: 2017-05-29 17:04+0100\n" "Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" "Language: it\n" @@ -29,7 +29,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-SourceCharset: utf-8\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.8.7.1\n" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, c-format @@ -562,7 +562,7 @@ msgstr "" #: pg_ctl.c:1923 #, c-format msgid " %s unregister [-N SERVICENAME]\n" -msgstr " %s unregister [-N SERVICENAME]\n" +msgstr " %s unregister [-N SERVIZIO]\n" #: pg_ctl.c:1926 #, c-format @@ -591,7 +591,7 @@ msgstr " -s, --silent mostra solo gli errori, non i messaggi di infor #: pg_ctl.c:1932 #, c-format msgid " -t, --timeout=SECS seconds to wait when using -w option\n" -msgstr " -t, --timeout=SECS secondi da aspettare quando si usa l'opzione -w\n" +msgstr " -t, --timeout=SEC secondi da aspettare quando si usa l'opzione -w\n" #: pg_ctl.c:1933 #, c-format @@ -727,7 +727,7 @@ msgstr "" #: pg_ctl.c:1963 #, c-format msgid " -N SERVICENAME service name with which to register PostgreSQL server\n" -msgstr " -N SERVICENAME nome del servizio con cui registrare il server PostgreSQL\n" +msgstr " -N SERVIZIO nome del servizio con cui registrare il server PostgreSQL\n" #: pg_ctl.c:1964 #, c-format @@ -737,12 +737,12 @@ msgstr " -P PASSWORD password per l'account con cui registrare il server Po #: pg_ctl.c:1965 #, c-format msgid " -U USERNAME user name of account to register PostgreSQL server\n" -msgstr " -U USERNAME nome utente dell'account con cui registrare il server PostgreSQL\n" +msgstr " -U UTENTE nome utente dell'account con cui registrare il server PostgreSQL\n" #: pg_ctl.c:1966 #, c-format msgid " -S START-TYPE service start type to register PostgreSQL server\n" -msgstr " -S START-TYPE tipo di avvio del servizio con cui registrare il server PostgreSQL\n" +msgstr " -S TIPO-AVVIO tipo di avvio del servizio con cui registrare il server PostgreSQL\n" #: pg_ctl.c:1968 #, c-format diff --git a/src/bin/pg_ctl/po/ja.po b/src/bin/pg_ctl/po/ja.po index f32ab81a8c..d66a8337e3 100644 --- a/src/bin/pg_ctl/po/ja.po +++ b/src/bin/pg_ctl/po/ja.po @@ -3,11 +3,11 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0 beta 3\n" +"Project-Id-Version: PostgreSQL 9.6.3\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2013-08-18 11:37+0900\n" +"POT-Creation-Date: 2017-04-04 11:59+0900\n" "PO-Revision-Date: 2013-08-18 11:39+0900\n" -"Last-Translator: HOTTA Michihide \n" +"Last-Translator: Daisuke Higuchi \n" "Language-Team: jpug-doc \n" "Language: ja\n" "MIME-Version: 1.0\n" @@ -15,104 +15,134 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ../../common/fe_memutils.c:33 ../../common/fe_memutils.c:60 -#: ../../common/fe_memutils.c:83 -#, c-format -msgid "out of memory\n" -msgstr "メモリä¸è¶³ã§ã™\n" - -#: ../../common/fe_memutils.c:77 -#, c-format -msgid "cannot duplicate null pointer (internal error)\n" -msgstr "null ãƒã‚¤ãƒ³ã‚¿ã‚’複製ã§ãã¾ã›ã‚“(内部エラー)。\n" - -#: ../../port/exec.c:127 ../../port/exec.c:241 ../../port/exec.c:284 +#: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, c-format msgid "could not identify current directory: %s" msgstr "ç¾åœ¨ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’èªè­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: ../../port/exec.c:146 +#: ../../common/exec.c:146 #, c-format msgid "invalid binary \"%s\"" msgstr "ãƒã‚¤ãƒŠãƒª\"%s\"ã¯ç„¡åйã§ã™" -#: ../../port/exec.c:195 +#: ../../common/exec.c:195 #, c-format msgid "could not read binary \"%s\"" msgstr "ãƒã‚¤ãƒŠãƒª\"%s\"を読ã¿å–れã¾ã›ã‚“ã§ã—ãŸ" -#: ../../port/exec.c:202 +#: ../../common/exec.c:202 #, c-format msgid "could not find a \"%s\" to execute" msgstr "実行ã™ã‚‹\"%s\"ãŒã‚りã¾ã›ã‚“ã§ã—ãŸ" -#: ../../port/exec.c:257 ../../port/exec.c:293 +#: ../../common/exec.c:257 ../../common/exec.c:293 #, c-format msgid "could not change directory to \"%s\": %s" msgstr "ディレクトリ\"%s\"ã«ç§»å‹•ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: ../../port/exec.c:272 +#: ../../common/exec.c:272 #, c-format msgid "could not read symbolic link \"%s\"" msgstr "シンボリックリンク\"%s\"ã®èª­ã¿å–りã«å¤±æ•—ã—ã¾ã—ãŸ" -#: ../../port/exec.c:523 +#: ../../common/exec.c:523 #, c-format msgid "pclose failed: %s" msgstr "pcloseãŒå¤±æ•—ã—ã¾ã—ãŸ: %s" -#: ../../port/wait_error.c:47 +#: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 +#: ../../common/fe_memutils.c:98 ../../port/path.c:632 ../../port/path.c:670 +#: ../../port/path.c:687 +#, c-format +msgid "out of memory\n" +msgstr "メモリä¸è¶³ã§ã™\n" + +#: ../../common/fe_memutils.c:92 +#, c-format +msgid "cannot duplicate null pointer (internal error)\n" +msgstr "null ãƒã‚¤ãƒ³ã‚¿ã‚’複製ã§ãã¾ã›ã‚“(内部エラー)。\n" + +#: ../../common/wait_error.c:47 #, c-format msgid "command not executable" msgstr "コマンドã¯å®Ÿè¡Œå½¢å¼ã§ã¯ã‚りã¾ã›ã‚“" -#: ../../port/wait_error.c:51 +#: ../../common/wait_error.c:51 #, c-format msgid "command not found" msgstr "コマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" -#: ../../port/wait_error.c:56 +#: ../../common/wait_error.c:56 #, c-format msgid "child process exited with exit code %d" msgstr "å­ãƒ—ロセスãŒçµ‚了コード%dã§çµ‚了ã—ã¾ã—ãŸ" -#: ../../port/wait_error.c:63 +#: ../../common/wait_error.c:63 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "å­ãƒ—ロセスãŒä¾‹å¤–0x%Xã§çµ‚了ã—ã¾ã—ãŸ" -#: ../../port/wait_error.c:73 +#: ../../common/wait_error.c:73 #, c-format msgid "child process was terminated by signal %s" msgstr "å­ãƒ—ロセスãŒã‚·ã‚°ãƒŠãƒ«%sã§çµ‚了ã—ã¾ã—ãŸ" -#: ../../port/wait_error.c:77 +#: ../../common/wait_error.c:77 #, c-format msgid "child process was terminated by signal %d" msgstr "å­ãƒ—ロセスãŒã‚·ã‚°ãƒŠãƒ«%dã§çµ‚了ã—ã¾ã—ãŸ" -#: ../../port/wait_error.c:82 +#: ../../common/wait_error.c:82 #, c-format msgid "child process exited with unrecognized status %d" msgstr "å­ãƒ—ãƒ­ã‚»ã‚¹ãŒæœªçŸ¥ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹%dã§çµ‚了ã—ã¾ã—ãŸ" -#: pg_ctl.c:253 +#: ../../port/path.c:654 +#, c-format +msgid "could not get current working directory: %s\n" +msgstr "ç¾åœ¨ã®ä½œæ¥­ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’å–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" + +#: pg_ctl.c:252 +#, c-format +msgid "%s: directory \"%s\" does not exist\n" +msgstr "%s: ディレクトリ \"%s\" ã¯å­˜åœ¨ã—ã¾ã›ã‚“\n" + +#: pg_ctl.c:255 +#, c-format +msgid "%s: could not access directory \"%s\": %s\n" +msgstr "%s: ディレクトリ\"%s\"ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" + +#: pg_ctl.c:269 +#, c-format +msgid "%s: directory \"%s\" is not a database cluster directory\n" +msgstr "%s: ディレクトリ \"%s\" ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¯ãƒ©ã‚¹ã‚¿ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã¯ã‚りã¾ã›ã‚“\n" + +#: pg_ctl.c:282 #, c-format msgid "%s: could not open PID file \"%s\": %s\n" msgstr "%s: PIDファイル\"%s\"をオープンã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_ctl.c:262 +#: pg_ctl.c:291 #, c-format -#| msgid "%s: PID file \"%s\" does not exist\n" msgid "%s: the PID file \"%s\" is empty\n" msgstr "%s: PIDファイル\"%s\"ãŒç©ºã§ã™\n" -#: pg_ctl.c:265 +#: pg_ctl.c:294 #, c-format msgid "%s: invalid data in PID file \"%s\"\n" msgstr "%s: PIDファイル\"%s\"内ã«ç„¡åйãªãƒ‡ãƒ¼ã‚¿ãŒã‚りã¾ã™\n" -#: pg_ctl.c:477 +#: pg_ctl.c:444 pg_ctl.c:472 +#, c-format +msgid "%s: could not start server: %s\n" +msgstr "%s: サーãƒã‚’èµ·å‹•ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" + +#: pg_ctl.c:496 +#, c-format +msgid "%s: could not start server: error code %lu\n" +msgstr "%s: サーãƒã®èµ·å‹•ã«å¤±æ•—ã—ã¾ã—ãŸ: エラーコード %lu\n" + +#: pg_ctl.c:573 #, c-format msgid "" "\n" @@ -121,7 +151,7 @@ msgstr "" "\n" "%s: 9.1よりå‰ã®ã‚µãƒ¼ãƒã‚’èµ·å‹•ã™ã‚‹éš›ã«-wオプションã¯ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“\n" -#: pg_ctl.c:547 +#: pg_ctl.c:638 #, c-format msgid "" "\n" @@ -130,31 +160,22 @@ msgstr "" "\n" "%s: -wオプションã§ã¯ç›¸å¯¾ã‚½ã‚±ãƒƒãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªæŒ‡å®šã‚’使用ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“\n" -#: pg_ctl.c:595 -#, c-format -msgid "" -"\n" -"%s: this data directory appears to be running a pre-existing postmaster\n" -msgstr "" -"\n" -"%s: ã“ã®ãƒ‡ãƒ¼ã‚¿ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã¯æ—¢å­˜ã®postmasterãŒå®Ÿè¡Œã—ã¦ã„るよã†ã§ã™ã€‚\n" - -#: pg_ctl.c:645 +#: pg_ctl.c:740 #, c-format msgid "%s: cannot set core file size limit; disallowed by hard limit\n" msgstr "%s: コアファイルã®ã‚µã‚¤ã‚ºåˆ¶é™ã‚’設定ã§ãã¾ã›ã‚“:固定ã®åˆ¶é™ã«ã‚ˆã‚Šè¨±ã•れã¦ã„ã¾ã›ã‚“\n" -#: pg_ctl.c:670 +#: pg_ctl.c:765 #, c-format msgid "%s: could not read file \"%s\"\n" msgstr "%s: ファイル\"%s\"を読ã¿å–ã‚‹ã“ã¨ã«å¤±æ•—ã—ã¾ã—ãŸ\n" -#: pg_ctl.c:675 +#: pg_ctl.c:770 #, c-format msgid "%s: option file \"%s\" must have exactly one line\n" msgstr "%s: オプションファイル\"%s\"ã¯1行ã®ã¿ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: pg_ctl.c:723 +#: pg_ctl.c:821 #, c-format msgid "" "The program \"%s\" is needed by %s but was not found in the\n" @@ -165,7 +186,7 @@ msgstr "" "ã«ã‚りã¾ã›ã‚“ã§ã—ãŸã€‚\n" "インストール状æ³ã‚’確èªã—ã¦ãã ã•ã„。\n" -#: pg_ctl.c:729 +#: pg_ctl.c:827 #, c-format msgid "" "The program \"%s\" was found by \"%s\"\n" @@ -176,42 +197,37 @@ msgstr "" "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ã‚りã¾ã›ã‚“ã§ã—ãŸã€‚\n" "インストレーションを検査ã—ã¦ãã ã•ã„。\n" -#: pg_ctl.c:762 +#: pg_ctl.c:860 #, c-format msgid "%s: database system initialization failed\n" msgstr "%s: データベースシステムãŒåˆæœŸåŒ–ã«å¤±æ•—ã—ã¾ã—ãŸ\n" -#: pg_ctl.c:777 +#: pg_ctl.c:875 #, c-format msgid "%s: another server might be running; trying to start server anyway\n" msgstr "%s: ä»–ã®ã‚µãƒ¼ãƒãŒå‹•作中ã®å¯èƒ½æ€§ãŒã‚りã¾ã™ãŒã€ã¨ã«ã‹ãpostmasterã®èµ·å‹•を試ã¿ã¾ã™ã€‚\n" -#: pg_ctl.c:814 -#, c-format -msgid "%s: could not start server: exit code was %d\n" -msgstr "%s: サーãƒã‚’èµ·å‹•ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚終了コードã¯%dã§ã—ãŸã€‚\n" - -#: pg_ctl.c:821 +#: pg_ctl.c:913 msgid "waiting for server to start..." msgstr "サーãƒã®èµ·å‹•完了を待ã£ã¦ã„ã¾ã™..." -#: pg_ctl.c:826 pg_ctl.c:927 pg_ctl.c:1018 +#: pg_ctl.c:918 pg_ctl.c:1025 pg_ctl.c:1116 msgid " done\n" msgstr "完了\n" -#: pg_ctl.c:827 +#: pg_ctl.c:919 msgid "server started\n" msgstr "サーãƒèµ·å‹•完了\n" -#: pg_ctl.c:830 pg_ctl.c:834 +#: pg_ctl.c:922 pg_ctl.c:926 msgid " stopped waiting\n" msgstr " 待機処ç†ãŒåœæ­¢ã•れã¾ã—ãŸ\n" -#: pg_ctl.c:831 +#: pg_ctl.c:923 msgid "server is still starting up\n" msgstr "サーãƒã¯ä¾ç„¶èµ·å‹•中ã§ã™ã€‚\n" -#: pg_ctl.c:835 +#: pg_ctl.c:927 #, c-format msgid "" "%s: could not start server\n" @@ -220,43 +236,43 @@ msgstr "" "%s: サーãƒã‚’èµ·å‹•ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚\n" "ログ出力を確èªã—ã¦ãã ã•ã„。\n" -#: pg_ctl.c:841 pg_ctl.c:919 pg_ctl.c:1009 +#: pg_ctl.c:933 pg_ctl.c:1017 pg_ctl.c:1107 msgid " failed\n" msgstr "失敗ã—ã¾ã—ãŸ\n" -#: pg_ctl.c:842 +#: pg_ctl.c:934 #, c-format msgid "%s: could not wait for server because of misconfiguration\n" msgstr "%s: 誤設定ã®ãŸã‚サーãƒã‚’待機ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_ctl.c:848 +#: pg_ctl.c:940 msgid "server starting\n" msgstr "サーãƒã¯èµ·å‹•中ã§ã™ã€‚\n" -#: pg_ctl.c:863 pg_ctl.c:949 pg_ctl.c:1039 pg_ctl.c:1079 +#: pg_ctl.c:961 pg_ctl.c:1047 pg_ctl.c:1137 pg_ctl.c:1177 #, c-format msgid "%s: PID file \"%s\" does not exist\n" msgstr "%s: PIDファイル\"%s\"ãŒã‚りã¾ã›ã‚“\n" -#: pg_ctl.c:864 pg_ctl.c:951 pg_ctl.c:1040 pg_ctl.c:1080 +#: pg_ctl.c:962 pg_ctl.c:1049 pg_ctl.c:1138 pg_ctl.c:1178 msgid "Is server running?\n" msgstr "サーãƒãŒå‹•作ã—ã¦ã„ã¾ã™ã‹?\n" -#: pg_ctl.c:870 +#: pg_ctl.c:968 #, c-format msgid "%s: cannot stop server; single-user server is running (PID: %ld)\n" msgstr "%s: サーãƒã‚’åœæ­¢ã§ãã¾ã›ã‚“。シングルユーザサーãƒ(PID: %ld)ãŒå‹•作ã—ã¦ã„ã¾ã™ã€‚\n" -#: pg_ctl.c:878 pg_ctl.c:973 +#: pg_ctl.c:976 pg_ctl.c:1071 #, c-format msgid "%s: could not send stop signal (PID: %ld): %s\n" msgstr "%s: åœæ­¢ã‚·ã‚°ãƒŠãƒ«ã‚’é€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚(PID: %ld): %s\n" -#: pg_ctl.c:885 +#: pg_ctl.c:983 msgid "server shutting down\n" msgstr "サーãƒã®åœæ­¢ä¸­ã§ã™\n" -#: pg_ctl.c:900 pg_ctl.c:988 +#: pg_ctl.c:998 pg_ctl.c:1086 msgid "" "WARNING: online backup mode is active\n" "Shutdown will not complete until pg_stop_backup() is called.\n" @@ -266,16 +282,16 @@ msgstr "" "pg_stop_backup()ãŒå‘¼ã³å‡ºã•れるã¾ã§ã‚·ãƒ£ãƒƒãƒˆãƒ€ã‚¦ãƒ³ã¯å®Œäº†ã—ã¾ã›ã‚“\n" "\n" -#: pg_ctl.c:904 pg_ctl.c:992 +#: pg_ctl.c:1002 pg_ctl.c:1090 msgid "waiting for server to shut down..." msgstr "サーãƒåœæ­¢å‡¦ç†ã®å®Œäº†ã‚’å¾…ã£ã¦ã„ã¾ã™..." -#: pg_ctl.c:921 pg_ctl.c:1011 +#: pg_ctl.c:1019 pg_ctl.c:1109 #, c-format msgid "%s: server does not shut down\n" msgstr "%s: サーãƒã¯åœæ­¢ã—ã¦ã„ã¾ã›ã‚“\n" -#: pg_ctl.c:923 pg_ctl.c:1013 +#: pg_ctl.c:1021 pg_ctl.c:1111 msgid "" "HINT: The \"-m fast\" option immediately disconnects sessions rather than\n" "waiting for session-initiated disconnection.\n" @@ -283,211 +299,211 @@ msgstr "" "ヒント: \"-m fast\"オプションã¯ã€ã‚»ãƒƒã‚·ãƒ§ãƒ³åˆ‡æ–­ãŒå§‹ã¾ã‚‹ã¾ã§å¾…機ã™ã‚‹ã®ã§ã¯ãªã\n" "å³åº§ã«ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’切断ã—ã¾ã™ã€‚\n" -#: pg_ctl.c:929 pg_ctl.c:1019 +#: pg_ctl.c:1027 pg_ctl.c:1117 msgid "server stopped\n" msgstr "サーãƒã¯åœæ­¢ã—ã¾ã—ãŸ\n" -#: pg_ctl.c:952 pg_ctl.c:1025 +#: pg_ctl.c:1050 pg_ctl.c:1123 msgid "starting server anyway\n" msgstr "ã¨ã«ã‹ãサーãƒã‚’èµ·å‹•ã—ã¦ã„ã¾ã™\n" -#: pg_ctl.c:961 +#: pg_ctl.c:1059 #, c-format msgid "%s: cannot restart server; single-user server is running (PID: %ld)\n" msgstr "%s: サーãƒã‚’å†èµ·å‹•ã§ãã¾ã›ã‚“。シングルユーザサーãƒ(PID: %ld)ãŒå‹•作中ã§ã™ã€‚\n" -#: pg_ctl.c:964 pg_ctl.c:1049 +#: pg_ctl.c:1062 pg_ctl.c:1147 msgid "Please terminate the single-user server and try again.\n" msgstr "シングルユーザサーãƒã‚’終了ã•ã›ã¦ã‹ã‚‰ã€å†åº¦å®Ÿè¡Œã—ã¦ãã ã•ã„\n" -#: pg_ctl.c:1023 +#: pg_ctl.c:1121 #, c-format msgid "%s: old server process (PID: %ld) seems to be gone\n" msgstr "%s: å¤ã„サーãƒãƒ—ロセス(PID: %ld)ãŒå‹•作ã—ã¦ã„ãªã„よã†ã§ã™\n" -#: pg_ctl.c:1046 +#: pg_ctl.c:1144 #, c-format msgid "%s: cannot reload server; single-user server is running (PID: %ld)\n" msgstr "%s: サーãƒã‚’リロードã§ãã¾ã›ã‚“。シングルユーザサーãƒ(PID: %ld)ãŒå‹•作中ã§ã™\n" -#: pg_ctl.c:1055 +#: pg_ctl.c:1153 #, c-format msgid "%s: could not send reload signal (PID: %ld): %s\n" msgstr "%s: リロードシグナルをé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚(PID: %ld): %s\n" -#: pg_ctl.c:1060 +#: pg_ctl.c:1158 msgid "server signaled\n" msgstr "サーãƒã«ã‚·ã‚°ãƒŠãƒ«ã‚’é€ä¿¡ã—ã¾ã—ãŸ\n" -#: pg_ctl.c:1086 +#: pg_ctl.c:1184 #, c-format msgid "%s: cannot promote server; single-user server is running (PID: %ld)\n" msgstr "%s: サーãƒã‚’昇進ã§ãã¾ã›ã‚“。シングルユーザサーãƒ(PID: %ld)ãŒå‹•作中ã§ã™\n" -#: pg_ctl.c:1095 +#: pg_ctl.c:1193 #, c-format msgid "%s: cannot promote server; server is not in standby mode\n" msgstr "%s: サーãƒã‚’昇進ã§ãã¾ã›ã‚“。サーãƒã¯ã‚¹ã‚¿ãƒ³ãƒã‚¤ãƒ¢ãƒ¼ãƒ‰ã§ã¯ã‚りã¾ã›ã‚“。\n" -#: pg_ctl.c:1111 +#: pg_ctl.c:1208 #, c-format msgid "%s: could not create promote signal file \"%s\": %s\n" msgstr "%s: \"%s\"昇進通知ファイルを作æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_ctl.c:1117 +#: pg_ctl.c:1214 #, c-format msgid "%s: could not write promote signal file \"%s\": %s\n" msgstr "%s: \"%s\"昇進通知ファイルを書ã出ã™ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_ctl.c:1125 +#: pg_ctl.c:1222 #, c-format msgid "%s: could not send promote signal (PID: %ld): %s\n" msgstr "%s: 昇進シグナルをé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚(PID: %ld): %s\n" -#: pg_ctl.c:1128 +#: pg_ctl.c:1225 #, c-format msgid "%s: could not remove promote signal file \"%s\": %s\n" msgstr "%s: \"%s\"昇進通知ファイルを削除ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_ctl.c:1133 +#: pg_ctl.c:1230 msgid "server promoting\n" msgstr "サーãƒã‚’昇進中ã§ã™ã€‚\n" -#: pg_ctl.c:1180 +#: pg_ctl.c:1277 #, c-format msgid "%s: single-user server is running (PID: %ld)\n" msgstr "%s: シングルユーザサーãƒãŒå‹•作中ã§ã™(PID: %ld)\n" -#: pg_ctl.c:1192 +#: pg_ctl.c:1290 #, c-format msgid "%s: server is running (PID: %ld)\n" msgstr "%s: サーãƒãŒå‹•作中ã§ã™(PID: %ld)\n" -#: pg_ctl.c:1203 +#: pg_ctl.c:1306 #, c-format msgid "%s: no server running\n" msgstr "%s: サーãƒãŒå‹•作ã—ã¦ã„ã¾ã›ã‚“\n" -#: pg_ctl.c:1220 +#: pg_ctl.c:1324 #, c-format msgid "%s: could not send signal %d (PID: %ld): %s\n" msgstr "%s: シグナル%dã‚’é€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸ(PID: %ld): %s\n" -#: pg_ctl.c:1254 +#: pg_ctl.c:1381 #, c-format msgid "%s: could not find own program executable\n" msgstr "%s: 本プログラムã®å®Ÿè¡Œãƒ•ã‚¡ã‚¤ãƒ«ã®æ¤œç´¢ã«å¤±æ•—ã—ã¾ã—ãŸ\n" -#: pg_ctl.c:1264 +#: pg_ctl.c:1391 #, c-format msgid "%s: could not find postgres program executable\n" msgstr "%s: postgres ã®å®Ÿè¡Œãƒ•ァイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n" -#: pg_ctl.c:1329 pg_ctl.c:1361 +#: pg_ctl.c:1461 pg_ctl.c:1495 #, c-format msgid "%s: could not open service manager\n" msgstr "%s: サービスマãƒãƒ¼ã‚¸ãƒ£ã®ã‚ªãƒ¼ãƒ—ンã«å¤±æ•—ã—ã¾ã—ãŸ\n" -#: pg_ctl.c:1335 +#: pg_ctl.c:1467 #, c-format msgid "%s: service \"%s\" already registered\n" msgstr "%s: サービス\\\"%s\\\"ã¯ç™»éŒ²æ¸ˆã¿ã§ã™\n" -#: pg_ctl.c:1346 +#: pg_ctl.c:1478 #, c-format msgid "%s: could not register service \"%s\": error code %lu\n" msgstr "%s: サービス\"%s\"ã®ç™»éŒ²ã«å¤±æ•—ã—ã¾ã—ãŸ: エラーコード %lu\n" -#: pg_ctl.c:1367 +#: pg_ctl.c:1501 #, c-format msgid "%s: service \"%s\" not registered\n" msgstr "%s: サービス\"%s\"ã¯ç™»éŒ²ã•れã¦ã„ã¾ã›ã‚“\n" -#: pg_ctl.c:1374 +#: pg_ctl.c:1508 #, c-format msgid "%s: could not open service \"%s\": error code %lu\n" msgstr "%s: サービス\"%s\"ã®ã‚ªãƒ¼ãƒ—ンã«å¤±æ•—ã—ã¾ã—ãŸ: エラーコード %lu\n" -#: pg_ctl.c:1381 +#: pg_ctl.c:1517 #, c-format msgid "%s: could not unregister service \"%s\": error code %lu\n" msgstr "%s: サービス\"%s\"ã®ç™»éŒ²å‰Šé™¤ã«å¤±æ•—ã—ã¾ã—ãŸ: エラーコード %lu\n" -#: pg_ctl.c:1466 +#: pg_ctl.c:1604 msgid "Waiting for server startup...\n" msgstr "サーãƒã®èµ·å‹•完了を待ã£ã¦ã„ã¾ã™...\n" -#: pg_ctl.c:1469 +#: pg_ctl.c:1607 msgid "Timed out waiting for server startup\n" msgstr "サーãƒã®èµ·å‹•待機ãŒã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã—ã¾ã—ãŸ\n" -#: pg_ctl.c:1473 +#: pg_ctl.c:1611 msgid "Server started and accepting connections\n" msgstr "サーãƒã¯èµ·å‹•ã—ã€æŽ¥ç¶šã‚’å—ã‘付ã‘ã¦ã„ã¾ã™\n" -#: pg_ctl.c:1517 +#: pg_ctl.c:1666 #, c-format msgid "%s: could not start service \"%s\": error code %lu\n" msgstr "%s: サービス\"%s\"ã®èµ·å‹•ã«å¤±æ•—ã—ã¾ã—ãŸ: エラーコード %lu\n" -#: pg_ctl.c:1589 +#: pg_ctl.c:1740 #, c-format msgid "%s: WARNING: cannot create restricted tokens on this platform\n" msgstr "%s: 警告: ã“ã®ãƒ—ラットフォームã§ã¯åˆ¶é™ä»˜ãトークンを作æˆã§ãã¾ã›ã‚“\n" -#: pg_ctl.c:1598 +#: pg_ctl.c:1753 #, c-format msgid "%s: could not open process token: error code %lu\n" msgstr "%s: プロセストークンをオープンã§ãã¾ã›ã‚“ã§ã—ãŸ: エラーコード %lu\n" -#: pg_ctl.c:1611 +#: pg_ctl.c:1767 #, c-format msgid "%s: could not allocate SIDs: error code %lu\n" msgstr "%s: SIDを割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“ã§ã—ãŸ: エラーコード %lu\n" -#: pg_ctl.c:1630 +#: pg_ctl.c:1787 #, c-format msgid "%s: could not create restricted token: error code %lu\n" msgstr "%s: 制é™ä»˜ãトークンを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: エラーコード %lu\n" -#: pg_ctl.c:1668 +#: pg_ctl.c:1818 #, c-format msgid "%s: WARNING: could not locate all job object functions in system API\n" msgstr "%s: 警告: システムAPI内ã«ã™ã¹ã¦ã®ã‚¸ãƒ§ãƒ–オブジェクト関数を格ç´ã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_ctl.c:1754 +#: pg_ctl.c:1901 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "詳細ã¯\"%s --help\"を実行ã—ã¦ãã ã•ã„。\n" -#: pg_ctl.c:1762 +#: pg_ctl.c:1909 #, c-format msgid "" "%s is a utility to initialize, start, stop, or control a PostgreSQL server.\n" "\n" msgstr "%sã¯PostgreSQLサーãƒã®åˆæœŸåŒ–ã€èµ·å‹•ã€åœæ­¢ã€åˆ¶å¾¡ã‚’行ã†ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£ã§ã™ã€‚\n" -#: pg_ctl.c:1763 +#: pg_ctl.c:1910 #, c-format msgid "Usage:\n" msgstr "使用方法:\n" -#: pg_ctl.c:1764 +#: pg_ctl.c:1911 #, c-format msgid " %s init[db] [-D DATADIR] [-s] [-o \"OPTIONS\"]\n" msgstr " %s init[db] [-D DATADIR] [-s] [-o \"オプション\"]\n" -#: pg_ctl.c:1765 +#: pg_ctl.c:1912 #, c-format msgid " %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"]\n" msgstr " %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"]\n" -#: pg_ctl.c:1766 +#: pg_ctl.c:1913 #, c-format msgid " %s stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" msgstr " %s stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" -#: pg_ctl.c:1767 +#: pg_ctl.c:1914 #, c-format msgid "" " %s restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" @@ -496,27 +512,27 @@ msgstr "" " %s restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" " [-o \"OPTIONS\"]\n" -#: pg_ctl.c:1769 +#: pg_ctl.c:1916 #, c-format msgid " %s reload [-D DATADIR] [-s]\n" msgstr " %s reload [-D DATADIR] [-s]\n" -#: pg_ctl.c:1770 +#: pg_ctl.c:1917 #, c-format msgid " %s status [-D DATADIR]\n" msgstr " %s status [-D DATADIR]\n" -#: pg_ctl.c:1771 +#: pg_ctl.c:1918 #, c-format msgid " %s promote [-D DATADIR] [-s]\n" msgstr " %s promote [-D DATADIR] [-s]\n" -#: pg_ctl.c:1772 +#: pg_ctl.c:1919 #, c-format msgid " %s kill SIGNALNAME PID\n" msgstr " %s kill SIGNALNAME PID\n" -#: pg_ctl.c:1774 +#: pg_ctl.c:1921 #, c-format msgid "" " %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" @@ -525,12 +541,12 @@ msgstr "" " %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" " [-S START-TYPE] [-w] [-t SECS] [-o \"OPTIONS\"]\n" -#: pg_ctl.c:1776 +#: pg_ctl.c:1923 #, c-format msgid " %s unregister [-N SERVICENAME]\n" msgstr " %s unregister [-N SERVICENAME]\n" -#: pg_ctl.c:1779 +#: pg_ctl.c:1926 #, c-format msgid "" "\n" @@ -539,42 +555,47 @@ msgstr "" "\n" "一般的ãªã‚ªãƒ—ション:\n" -#: pg_ctl.c:1780 +#: pg_ctl.c:1927 #, c-format msgid " -D, --pgdata=DATADIR location of the database storage area\n" msgstr " -D, --pgdata DATADIR データベース格ç´é ˜åŸŸã®å ´æ‰€ã§ã™\n" -#: pg_ctl.c:1781 +#: pg_ctl.c:1929 +#, c-format +msgid " -e SOURCE event source for logging when running as a service\n" +msgstr " -e SOURCE サービスã¨ã—ã¦å®Ÿè¡Œã™ã‚‹æ™‚ã®ãƒ­ã‚°åŽé›†ã®ãŸã‚ã®ã‚¤ãƒ™ãƒ³ãƒˆã‚½ãƒ¼ã‚¹ã§ã™\n" + +#: pg_ctl.c:1931 #, c-format msgid " -s, --silent only print errors, no informational messages\n" msgstr " -s, --silent エラーメッセージã®ã¿ã‚’表示ã—ã€æƒ…報メッセージã¯è¡¨ç¤ºã—ã¾ã›ã‚“\n" -#: pg_ctl.c:1782 +#: pg_ctl.c:1932 #, c-format msgid " -t, --timeout=SECS seconds to wait when using -w option\n" msgstr " -t, --timeout=SECS -wオプションを使用ã™ã‚‹æ™‚ã«å¾…機ã™ã‚‹ç§’æ•°\n" -#: pg_ctl.c:1783 +#: pg_ctl.c:1933 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã€çµ‚了ã—ã¾ã™\n" -#: pg_ctl.c:1784 +#: pg_ctl.c:1934 #, c-format msgid " -w wait until operation completes\n" msgstr " -w 作業ãŒå®Œäº†ã™ã‚‹ã¾ã§å¾…機ã—ã¾ã™\n" -#: pg_ctl.c:1785 +#: pg_ctl.c:1935 #, c-format msgid " -W do not wait until operation completes\n" msgstr " -W 作業ã®å®Œäº†ã¾ã§å¾…機ã—ã¾ã›ã‚“\n" -#: pg_ctl.c:1786 +#: pg_ctl.c:1936 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help ã“ã®ãƒ˜ãƒ«ãƒ—を表示ã—ã€çµ‚了ã—ã¾ã™\n" -#: pg_ctl.c:1787 +#: pg_ctl.c:1937 #, c-format msgid "" "(The default is to wait for shutdown, but not for start or restart.)\n" @@ -584,36 +605,36 @@ msgstr "" "ã¾ã›ã‚“。)\n" "\n" -#: pg_ctl.c:1788 +#: pg_ctl.c:1938 #, c-format msgid "If the -D option is omitted, the environment variable PGDATA is used.\n" msgstr "-Dオプションã®çœç•¥æ™‚ã€PGDATA環境変数ãŒä½¿ç”¨ã•れã¾ã™ã€‚\n" -#: pg_ctl.c:1790 +#: pg_ctl.c:1940 #, c-format msgid "" "\n" "Options for start or restart:\n" msgstr "" "\n" -"èµ·å‹•ã€å†èµ·å‹•用ã®ã‚ªãƒ—ション\n" +"èµ·å‹•ã€å†èµ·å‹•用ã®ã‚ªãƒ—ション:\n" -#: pg_ctl.c:1792 +#: pg_ctl.c:1942 #, c-format msgid " -c, --core-files allow postgres to produce core files\n" msgstr " -c, --core-files postgresã¯ã‚³ã‚¢ãƒ•ァイルを生æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚\n" -#: pg_ctl.c:1794 +#: pg_ctl.c:1944 #, c-format msgid " -c, --core-files not applicable on this platform\n" msgstr " -c, --core-files ã“ã®ãƒ—ラットフォームã§ã¯å®Ÿè¡Œã§ãã¾ã›ã‚“\n" -#: pg_ctl.c:1796 +#: pg_ctl.c:1946 #, c-format msgid " -l, --log=FILENAME write (or append) server log to FILENAME\n" msgstr " -l, --log FILENAME サーãƒãƒ­ã‚°ã‚’FILENAMEã¸å‡ºåŠ›(ã‚ã‚‹ã„ã¯è¿½åŠ )ã—ã¾ã™\n" -#: pg_ctl.c:1797 +#: pg_ctl.c:1947 #, c-format msgid "" " -o OPTIONS command line options to pass to postgres\n" @@ -622,27 +643,26 @@ msgstr "" " -o オプション postgres(PostgreSQLサーãƒå®Ÿè¡Œãƒ•ァイル)ã¾ãŸã¯\n" " initdb ã«æ¸¡ã™ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‚ªãƒ—ション\n" -#: pg_ctl.c:1799 +#: pg_ctl.c:1949 #, c-format msgid " -p PATH-TO-POSTGRES normally not necessary\n" msgstr " -p PATH-TO-POSTGRES 通常ã¯ä¸è¦ã§ã™\n" -#: pg_ctl.c:1800 +#: pg_ctl.c:1950 #, c-format -#| msgid "" -#| "\n" -#| "Options for stop or restart:\n" msgid "" "\n" -"Options for stop, restart, or promote:\n" -msgstr "\nåœæ­¢ã€å†èµ·å‹•ã€æ˜‡é€²ç”¨ã®ã‚ªãƒ—ション:\n" +"Options for stop or restart:\n" +msgstr "" +"\n" +"åœæ­¢ã€å†èµ·å‹•用ã®ã‚ªãƒ—ション:\n" -#: pg_ctl.c:1801 +#: pg_ctl.c:1951 #, c-format msgid " -m, --mode=MODE MODE can be \"smart\", \"fast\", or \"immediate\"\n" msgstr " -m, --mode=MODE MODEã¯\"smart\"ã€\"fast\"ã€\"immediate\"ã®ã„ãšã‚Œã‹ã§ã™\n" -#: pg_ctl.c:1803 +#: pg_ctl.c:1953 #, c-format msgid "" "\n" @@ -651,22 +671,22 @@ msgstr "" "\n" "シャットダウンモードã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™:\n" -#: pg_ctl.c:1804 +#: pg_ctl.c:1954 #, c-format msgid " smart quit after all clients have disconnected\n" msgstr " smart å…¨ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã®æŽ¥ç¶šåˆ‡æ–­å¾Œã«åœæ­¢ã—ã¾ã™\n" -#: pg_ctl.c:1805 +#: pg_ctl.c:1955 #, c-format msgid " fast quit directly, with proper shutdown\n" msgstr " fast シャットダウン手続ã後ã«åœæ­¢ã—ã¾ã™\n" -#: pg_ctl.c:1806 +#: pg_ctl.c:1956 #, c-format msgid " immediate quit without complete shutdown; will lead to recovery on restart\n" msgstr " immediate シャットダウン手続ãを行ã‚ãšã«åœæ­¢ã—ã¾ã™ã€‚å†èµ·å‹•時ã«ãƒªã‚«ãƒãƒªçŠ¶æ…‹ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™\n" -#: pg_ctl.c:1808 +#: pg_ctl.c:1958 #, c-format msgid "" "\n" @@ -675,7 +695,7 @@ msgstr "" "\n" "killモードã§åˆ©ç”¨ã§ãるシグナルå:\n" -#: pg_ctl.c:1812 +#: pg_ctl.c:1962 #, c-format msgid "" "\n" @@ -684,27 +704,27 @@ msgstr "" "\n" "登録ã€ç™»éŒ²è§£é™¤ç”¨ã®ã‚ªãƒ—ション:\n" -#: pg_ctl.c:1813 +#: pg_ctl.c:1963 #, c-format msgid " -N SERVICENAME service name with which to register PostgreSQL server\n" msgstr " -N SERVICENAME PostgreSQLサーãƒã‚’登録ã™ã‚‹ãŸã‚ã®ã‚µãƒ¼ãƒ“スåã§ã™\n" -#: pg_ctl.c:1814 +#: pg_ctl.c:1964 #, c-format msgid " -P PASSWORD password of account to register PostgreSQL server\n" msgstr " -P PASSWORD PostgreSQLサーãƒã‚’登録ã™ã‚‹ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ãƒ‘スワードã§ã™\n" -#: pg_ctl.c:1815 +#: pg_ctl.c:1965 #, c-format msgid " -U USERNAME user name of account to register PostgreSQL server\n" msgstr " -U USERNAME PostgreSQLサーãƒã‚’登録ã™ã‚‹ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ãƒ¦ãƒ¼ã‚¶åã§ã™\n" -#: pg_ctl.c:1816 +#: pg_ctl.c:1966 #, c-format msgid " -S START-TYPE service start type to register PostgreSQL server\n" msgstr " -S START-TYPE PostgreSQLサーãƒã‚’登録ã™ã‚‹ãŸã‚ã®ã‚µãƒ¼ãƒ“ス起動種類ã§ã™\n" -#: pg_ctl.c:1818 +#: pg_ctl.c:1968 #, c-format msgid "" "\n" @@ -713,17 +733,17 @@ msgstr "" "\n" "起動種類ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™:\n" -#: pg_ctl.c:1819 +#: pg_ctl.c:1969 #, c-format msgid " auto start service automatically during system startup (default)\n" msgstr " auto システムã®èµ·å‹•時ã«ã‚µãƒ¼ãƒ“スを自動的ã«é–‹å§‹ã—ã¾ã™ï¼ˆãƒ‡ãƒ•ォルト)\n" -#: pg_ctl.c:1820 +#: pg_ctl.c:1970 #, c-format msgid " demand start service on demand\n" msgstr " demand å¿…è¦ã«å¿œã˜ã¦ã‚µãƒ¼ãƒ“スを開始ã—ã¾ã™\n" -#: pg_ctl.c:1823 +#: pg_ctl.c:1973 #, c-format msgid "" "\n" @@ -732,27 +752,27 @@ msgstr "" "\n" "ä¸å…·åˆã¯ã¾ã§å ±å‘Šã—ã¦ãã ã•ã„。\n" -#: pg_ctl.c:1848 +#: pg_ctl.c:1998 #, c-format msgid "%s: unrecognized shutdown mode \"%s\"\n" msgstr "%s: シャットダウンモード\"%s\"ã¯ä¸æ˜Žã§ã™\n" -#: pg_ctl.c:1880 +#: pg_ctl.c:2030 #, c-format msgid "%s: unrecognized signal name \"%s\"\n" msgstr "%s: シグナルå\"%s\"ã¯ä¸æ˜Žã§ã™\n" -#: pg_ctl.c:1897 +#: pg_ctl.c:2047 #, c-format msgid "%s: unrecognized start type \"%s\"\n" msgstr "%s: 起動種類\"%s\"ã¯ä¸æ˜Žã§ã™\n" -#: pg_ctl.c:1950 +#: pg_ctl.c:2102 #, c-format msgid "%s: could not determine the data directory using command \"%s\"\n" msgstr "%s: コマンド\"%s\"を使用ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’決定ã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_ctl.c:2022 +#: pg_ctl.c:2175 #, c-format msgid "" "%s: cannot be run as root\n" @@ -763,62 +783,34 @@ msgstr "" "サーãƒãƒ—ãƒ­ã‚»ã‚¹ã®æ‰€æœ‰è€…ã¨ãªã‚‹(éžç‰¹æ¨©)ユーザã¨ã—ã¦(例ãˆã°\"su\"を使用ã—ã¦)\n" "ログインã—ã¦ãã ã•ã„。\n" -#: pg_ctl.c:2093 +#: pg_ctl.c:2258 #, c-format msgid "%s: -S option not supported on this platform\n" msgstr "%s: -Sオプションã¯ã“ã®ãƒ—ラットフォームã§ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“\n" -#: pg_ctl.c:2135 +#: pg_ctl.c:2297 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: コマンドライン引数ãŒå¤šã™ãŽã¾ã™(先頭ã¯\"%s\")\n" -#: pg_ctl.c:2159 +#: pg_ctl.c:2321 #, c-format msgid "%s: missing arguments for kill mode\n" msgstr "%s: killモード用ã®å¼•æ•°ãŒã‚りã¾ã›ã‚“\n" -#: pg_ctl.c:2177 +#: pg_ctl.c:2339 #, c-format msgid "%s: unrecognized operation mode \"%s\"\n" msgstr "%s: æ“作モード\"%s\"ã¯ä¸æ˜Žã§ã™\n" -#: pg_ctl.c:2187 +#: pg_ctl.c:2349 #, c-format msgid "%s: no operation specified\n" msgstr "%s: æ“ä½œãƒ¢ãƒ¼ãƒ‰ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“\n" -#: pg_ctl.c:2208 +#: pg_ctl.c:2370 #, c-format msgid "%s: no database directory specified and environment variable PGDATA unset\n" msgstr "%s: ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®æŒ‡å®šã‚‚ã€PGDATA環境変数ã®è¨­å®šã‚‚ã‚りã¾ã›ã‚“\n" -#~ msgid "%s: could not create restricted token: %lu\n" -#~ msgstr "%s: 制é™ä»˜ãトークンを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %lu\n" - -#~ msgid "could not change directory to \"%s\"" -#~ msgstr "ディレクトリを\"%s\"ã«å¤‰æ›´ã§ãã¾ã›ã‚“ã§ã—ãŸ" - -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help ヘルプを表示ã—ã€çµ‚了ã—ã¾ã™\n" - -#~ msgid "%s: could not open process token: %lu\n" -#~ msgstr "%s: プロセストークンをオープンã§ãã¾ã›ã‚“ã§ã—ãŸ: %lu\n" - -#~ msgid "" -#~ "%s is a utility to start, stop, restart, reload configuration files,\n" -#~ "report the status of a PostgreSQL server, or signal a PostgreSQL process.\n" -#~ "\n" -#~ msgstr "" -#~ "%sã¯PostgreSQLサーãƒã®èµ·å‹•ã€åœæ­¢ã€å†èµ·å‹•ã€è¨­å®šãƒ•ァイルã®ãƒªãƒ­ãƒ¼ãƒ‰ã€çжæ³å ±å‘Š\n" -#~ "を行ã†ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£ã§ã™ã€‚ã¾ãŸã€PostgreSQLプロセスã¸ã‚·ã‚°ãƒŠãƒ«ã‚‚é€ä¿¡ã—ã¾ã™ã€‚\n" -#~ "\n" - -#~ msgid "%s: out of memory\n" -#~ msgstr "%s: メモリä¸è¶³ã§ã™\n" - -#~ msgid "%s: could not allocate SIDs: %lu\n" -#~ msgstr "%s: SIDを割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“ã§ã—ãŸ: %lu\n" -#~ msgid " --version output version information, then exit\n" -#~ msgstr " --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã€çµ‚了ã—ã¾ã™\n" diff --git a/src/bin/pg_ctl/po/ko.po b/src/bin/pg_ctl/po/ko.po index 7cdfe269db..8b545b3952 100644 --- a/src/bin/pg_ctl/po/ko.po +++ b/src/bin/pg_ctl/po/ko.po @@ -3,16 +3,16 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.5\n" +"Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2015-12-21 09:47+0900\n" -"PO-Revision-Date: 2015-12-23 14:04+0900\n" +"POT-Creation-Date: 2016-09-26 14:02+0900\n" +"PO-Revision-Date: 2016-09-26 17:02+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" -"Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 @@ -51,8 +51,8 @@ msgid "pclose failed: %s" msgstr "pclose 실패: %s" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 -#: ../../common/fe_memutils.c:98 ../../port/path.c:598 ../../port/path.c:636 -#: ../../port/path.c:653 +#: ../../common/fe_memutils.c:98 ../../port/path.c:632 ../../port/path.c:670 +#: ../../port/path.c:687 #, c-format msgid "out of memory\n" msgstr "메모리 부족\n" @@ -97,83 +97,87 @@ msgstr "하위 프로세스가 종료ë˜ì—ˆìŒ, ì‹œê·¸ë„ %d" msgid "child process exited with unrecognized status %d" msgstr "하위 프로세스가 종료ë˜ì—ˆìŒ, 알수 없는 ìƒíƒœ %d" -#: ../../port/path.c:620 +#: ../../port/path.c:654 #, c-format msgid "could not get current working directory: %s\n" msgstr "현재 작업 디렉터리를 알 수 ì—†ìŒ: %s\n" -#: pg_ctl.c:258 +#: pg_ctl.c:252 #, c-format msgid "%s: directory \"%s\" does not exist\n" msgstr "%s: \"%s\" 디렉터리 ì—†ìŒ\n" -#: pg_ctl.c:261 +#: pg_ctl.c:255 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: \"%s\" ë””ë ‰í„°ë¦¬ì— ì•¡ì„¸ìŠ¤í•  수 ì—†ìŒ: %s\n" -#: pg_ctl.c:275 +#: pg_ctl.c:269 #, c-format msgid "%s: directory \"%s\" is not a database cluster directory\n" msgstr "%s: 지정한 \"%s\" 디렉터리는 ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤íŠ¸ 디렉터리가 아님\n" -#: pg_ctl.c:288 +#: pg_ctl.c:282 #, c-format msgid "%s: could not open PID file \"%s\": %s\n" msgstr "%s: \"%s\" PID 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s\n" -#: pg_ctl.c:297 +#: pg_ctl.c:291 #, c-format msgid "%s: the PID file \"%s\" is empty\n" msgstr "%s: \"%s\" PID 파ì¼ì— ë‚´ìš©ì´ ì—†ìŠµë‹ˆë‹¤\n" -#: pg_ctl.c:300 +#: pg_ctl.c:294 #, c-format msgid "%s: invalid data in PID file \"%s\"\n" msgstr "%s: \"%s\" PID 파ì¼ì´ 비었ìŒ\n" -#: pg_ctl.c:450 pg_ctl.c:478 +#: pg_ctl.c:444 pg_ctl.c:472 #, c-format msgid "%s: could not start server: %s\n" msgstr "%s: 서버를 시작 í•  수 ì—†ìŒ: %s\n" -#: pg_ctl.c:502 +#: pg_ctl.c:496 #, c-format msgid "%s: could not start server: error code %lu\n" msgstr "%s: 서버를 시작할 수 ì—†ìŒ: 오류 코드 %lu\n" -#: pg_ctl.c:579 +#: pg_ctl.c:573 #, c-format msgid "" "\n" "%s: -w option is not supported when starting a pre-9.1 server\n" msgstr "" +"\n" +"%s: -w ì˜µì…˜ì€ 9.1 ì´ì „ ë²„ì „ì˜ ì„œë²„ë¥¼ 실행할 때는 ì§€ì›í•˜ì§€ 않ìŒ\n" -#: pg_ctl.c:644 +#: pg_ctl.c:638 #, c-format msgid "" "\n" "%s: -w option cannot use a relative socket directory specification\n" msgstr "" +"\n" +"%s: -w ì˜µì…˜ì€ ì†Œì¼“ 디렉터리로 ìƒëŒ€ 경로를 사용할 수 ì—†ìŒ\n" -#: pg_ctl.c:746 +#: pg_ctl.c:740 #, c-format msgid "%s: cannot set core file size limit; disallowed by hard limit\n" msgstr "" "%s: 코어 íŒŒì¼ í¬ê¸° 한ë„를 설정할 수 ì—†ìŒ, 하드 ë””ìŠ¤í¬ ìš©ëŸ‰ 초과로 허용ë˜ì§€ 않" "ìŒ\n" -#: pg_ctl.c:771 +#: pg_ctl.c:765 #, c-format msgid "%s: could not read file \"%s\"\n" msgstr "%s: \"%s\" 파ì¼ì„ ì½ì„ 수 ì—†ìŒ\n" -#: pg_ctl.c:776 +#: pg_ctl.c:770 #, c-format msgid "%s: option file \"%s\" must have exactly one line\n" msgstr "%s: \"%s\" 환경설정파ì¼ì€ 반드시 한 ì¤„ì„ ê°€ì ¸ì•¼í•œë‹¤?\n" -#: pg_ctl.c:827 +#: pg_ctl.c:821 #, c-format msgid "" "The program \"%s\" is needed by %s but was not found in the\n" @@ -184,7 +188,7 @@ msgstr "" "\"%s\" 디렉터리 ì•ˆì— ì—†ìŠµë‹ˆë‹¤.\n" "설치 ìƒíƒœë¥¼ 확ì¸í•´ 주십시오.\n" -#: pg_ctl.c:833 +#: pg_ctl.c:827 #, c-format msgid "" "The program \"%s\" was found by \"%s\"\n" @@ -195,37 +199,37 @@ msgstr "" "%s 버전과 같지 않습니다.\n" "설치 ìƒíƒœë¥¼ 확ì¸í•´ 주십시오.\n" -#: pg_ctl.c:866 +#: pg_ctl.c:860 #, c-format msgid "%s: database system initialization failed\n" msgstr "%s: ë°ì´í„°ë² ì´ìФ 초기화 실패\n" -#: pg_ctl.c:881 +#: pg_ctl.c:875 #, c-format msgid "%s: another server might be running; trying to start server anyway\n" msgstr "%s: 다른 서버가 ê°€ë™ ì¤‘ì¸ ê²ƒ ê°™ìŒ; 어째든 서버 ê°€ë™ì„ 시ë„함\n" -#: pg_ctl.c:919 +#: pg_ctl.c:913 msgid "waiting for server to start..." msgstr "서버를 시작하기 위해 기다리는 중..." -#: pg_ctl.c:924 pg_ctl.c:1031 pg_ctl.c:1122 +#: pg_ctl.c:918 pg_ctl.c:1025 pg_ctl.c:1116 msgid " done\n" msgstr " 완료\n" -#: pg_ctl.c:925 +#: pg_ctl.c:919 msgid "server started\n" msgstr "서버 시작ë¨\n" -#: pg_ctl.c:928 pg_ctl.c:932 +#: pg_ctl.c:922 pg_ctl.c:926 msgid " stopped waiting\n" -msgstr "" +msgstr " 중지 기다리는 중\n" -#: pg_ctl.c:929 +#: pg_ctl.c:923 msgid "server is still starting up\n" msgstr "서버가 여전히 시작 중입니다\n" -#: pg_ctl.c:933 +#: pg_ctl.c:927 #, c-format msgid "" "%s: could not start server\n" @@ -234,43 +238,43 @@ msgstr "" "%s: 서버를 시작 í•  수 ì—†ìŒ\n" "로그 ì¶œë ¥ì„ ì‚´íŽ´ë³´ì‹­ì‹œì˜¤.\n" -#: pg_ctl.c:939 pg_ctl.c:1023 pg_ctl.c:1113 +#: pg_ctl.c:933 pg_ctl.c:1017 pg_ctl.c:1107 msgid " failed\n" msgstr " 실패\n" -#: pg_ctl.c:940 +#: pg_ctl.c:934 #, c-format msgid "%s: could not wait for server because of misconfiguration\n" msgstr "%s: ìž˜ëª»ëœ í™˜ê²½ 설정 ë•Œë¬¸ì— ëŒ€ê¸°ë¥¼ ë” ì´ìƒ í•  수 ì—†ìŒ\n" -#: pg_ctl.c:946 +#: pg_ctl.c:940 msgid "server starting\n" msgstr "서버를 시작합니다\n" -#: pg_ctl.c:967 pg_ctl.c:1053 pg_ctl.c:1143 pg_ctl.c:1183 +#: pg_ctl.c:961 pg_ctl.c:1047 pg_ctl.c:1137 pg_ctl.c:1177 #, c-format msgid "%s: PID file \"%s\" does not exist\n" msgstr "%s: \"%s\" PID 파ì¼ì´ 없습니다\n" -#: pg_ctl.c:968 pg_ctl.c:1055 pg_ctl.c:1144 pg_ctl.c:1184 +#: pg_ctl.c:962 pg_ctl.c:1049 pg_ctl.c:1138 pg_ctl.c:1178 msgid "Is server running?\n" msgstr "서버가 실행 중입니까?\n" -#: pg_ctl.c:974 +#: pg_ctl.c:968 #, c-format msgid "%s: cannot stop server; single-user server is running (PID: %ld)\n" msgstr "%s: 서버 중지 실패; ë‹¨ì¼ ì‚¬ìš©ìž ì„œë²„ê°€ 실행 중 (PID: %ld)\n" -#: pg_ctl.c:982 pg_ctl.c:1077 +#: pg_ctl.c:976 pg_ctl.c:1071 #, c-format msgid "%s: could not send stop signal (PID: %ld): %s\n" msgstr "%s: stop 시그ë„ì„ ë³´ë‚¼ 수 ì—†ìŒ (PID: %ld): %s\n" -#: pg_ctl.c:989 +#: pg_ctl.c:983 msgid "server shutting down\n" msgstr "서버를 멈춥니다\n" -#: pg_ctl.c:1004 pg_ctl.c:1092 +#: pg_ctl.c:998 pg_ctl.c:1086 msgid "" "WARNING: online backup mode is active\n" "Shutdown will not complete until pg_stop_backup() is called.\n" @@ -280,202 +284,204 @@ msgstr "" "pg_stop_backup()ì´ í˜¸ì¶œë  ë•Œê¹Œì§€ 종료가 완료ë˜ì§€ 않습니다.\n" "\n" -#: pg_ctl.c:1008 pg_ctl.c:1096 +#: pg_ctl.c:1002 pg_ctl.c:1090 msgid "waiting for server to shut down..." msgstr "서버를 멈추기 위해 기다리는 중..." -#: pg_ctl.c:1025 pg_ctl.c:1115 +#: pg_ctl.c:1019 pg_ctl.c:1109 #, c-format msgid "%s: server does not shut down\n" msgstr "%s: 서버를 멈추지 못했ìŒ\n" -#: pg_ctl.c:1027 pg_ctl.c:1117 +#: pg_ctl.c:1021 pg_ctl.c:1111 msgid "" "HINT: The \"-m fast\" option immediately disconnects sessions rather than\n" "waiting for session-initiated disconnection.\n" msgstr "" +"힌트: \"-m fast\" ì˜µì…˜ì„ ì‚¬ìš©í•˜ë©´ ì ‘ì†í•œ ì„¸ì…˜ë“¤ì„ ì¦‰ì‹œ 정리합니다.\n" +"ì´ ì˜µì…˜ì„ ì‚¬ìš©í•˜ì§€ 않으면 ì ‘ì†í•œ 세션들 스스로 ëŠì„ 때까지 기다립니다.\n" -#: pg_ctl.c:1033 pg_ctl.c:1123 +#: pg_ctl.c:1027 pg_ctl.c:1117 msgid "server stopped\n" msgstr "서버 멈추었ìŒ\n" -#: pg_ctl.c:1056 pg_ctl.c:1129 +#: pg_ctl.c:1050 pg_ctl.c:1123 msgid "starting server anyway\n" msgstr "어째든 서버를 시작합니다\n" -#: pg_ctl.c:1065 +#: pg_ctl.c:1059 #, c-format msgid "%s: cannot restart server; single-user server is running (PID: %ld)\n" msgstr "" "%s: 서버를 다시 시작 í•  수 ì—†ìŒ; 단ì¼ì‚¬ìš©ìž 서버가 실행 중임 (PID: %ld)\n" -#: pg_ctl.c:1068 pg_ctl.c:1153 +#: pg_ctl.c:1062 pg_ctl.c:1147 msgid "Please terminate the single-user server and try again.\n" msgstr "ë‹¨ì¼ ì‚¬ìš©ìž ì„œë²„ë¥¼ 멈추고 다시 시ë„하십시오.\n" -#: pg_ctl.c:1127 +#: pg_ctl.c:1121 #, c-format msgid "%s: old server process (PID: %ld) seems to be gone\n" msgstr "%s: ì´ì „ 서버 프로세스(PID: %ld)ê°€ 없어졌습니다\n" -#: pg_ctl.c:1150 +#: pg_ctl.c:1144 #, c-format msgid "%s: cannot reload server; single-user server is running (PID: %ld)\n" msgstr "" -"%s: 서버 í™˜ê²½ì„¤ì •ì„ ë‹¤ì‹œ 불러올 수 ì—†ìŒ; ë‹¨ì¼ ì‚¬ìš©ìž ì„œë²„ê°€ 실행 중임 (PID: %" -"ld)\n" +"%s: 서버 í™˜ê²½ì„¤ì •ì„ ë‹¤ì‹œ 불러올 수 ì—†ìŒ; ë‹¨ì¼ ì‚¬ìš©ìž ì„œë²„ê°€ 실행 중임 (PID: " +"%ld)\n" -#: pg_ctl.c:1159 +#: pg_ctl.c:1153 #, c-format msgid "%s: could not send reload signal (PID: %ld): %s\n" msgstr "%s: reload 시그ë„ì„ ë³´ë‚¼ 수 ì—†ìŒ (PID: %ld): %s\n" -#: pg_ctl.c:1164 +#: pg_ctl.c:1158 msgid "server signaled\n" msgstr "서버가 시스템 시그ë„ì„ ë°›ì•˜ìŒ\n" -#: pg_ctl.c:1190 +#: pg_ctl.c:1184 #, c-format msgid "%s: cannot promote server; single-user server is running (PID: %ld)\n" msgstr "%s: ìš´ì˜ì„œë²„ 전환 실패; 단ì¼ì‚¬ìš©ìž 서버가 실행 중(PID: %ld)\n" -#: pg_ctl.c:1199 +#: pg_ctl.c:1193 #, c-format msgid "%s: cannot promote server; server is not in standby mode\n" msgstr "%s: ìš´ì˜ì„œë²„ 전환 실패; 서버가 대기 모드로 ìƒíƒœê°€ 아님\n" -#: pg_ctl.c:1214 +#: pg_ctl.c:1208 #, c-format msgid "%s: could not create promote signal file \"%s\": %s\n" msgstr "%s: ìš´ì˜ì „환 ì‹œê·¸ë„ íŒŒì¼ì¸ \"%s\" 파ì¼ì„ 만들 수 ì—†ìŒ: %s\n" -#: pg_ctl.c:1220 +#: pg_ctl.c:1214 #, c-format msgid "%s: could not write promote signal file \"%s\": %s\n" msgstr "%s: ìš´ì˜ì „환 ì‹œê·¸ë„ íŒŒì¼ì¸ \"%s\" 파ì¼ì— 쓰기 실패: %s\n" -#: pg_ctl.c:1228 +#: pg_ctl.c:1222 #, c-format msgid "%s: could not send promote signal (PID: %ld): %s\n" msgstr "%s: ìš´ì˜ì „환 시그ë„ì„ ì„œë²„(PID: %ld)로 보낼 수 ì—†ìŒ: %s\n" -#: pg_ctl.c:1231 +#: pg_ctl.c:1225 #, c-format msgid "%s: could not remove promote signal file \"%s\": %s\n" msgstr "%s: ìš´ì˜ì „환 ì‹œê·¸ë„ íŒŒì¼ì¸ \"%s\" 파ì¼ì„ 지울 수 ì—†ìŒ: %s\n" -#: pg_ctl.c:1236 +#: pg_ctl.c:1230 msgid "server promoting\n" msgstr "서버를 ìš´ì˜ ëª¨ë“œë¡œ 전환합니다\n" -#: pg_ctl.c:1283 +#: pg_ctl.c:1277 #, c-format msgid "%s: single-user server is running (PID: %ld)\n" msgstr "%s: 단ì¼ì‚¬ìš©ìž 서버가 실행 중임 (PID: %ld)\n" -#: pg_ctl.c:1296 +#: pg_ctl.c:1290 #, c-format msgid "%s: server is running (PID: %ld)\n" msgstr "%s: 서버가 실행 중임 (PID: %ld)\n" -#: pg_ctl.c:1312 +#: pg_ctl.c:1306 #, c-format msgid "%s: no server running\n" msgstr "%s: ê°€ë™ ì¤‘ì¸ ì„œë²„ê°€ ì—†ìŒ\n" -#: pg_ctl.c:1330 +#: pg_ctl.c:1324 #, c-format msgid "%s: could not send signal %d (PID: %ld): %s\n" msgstr "%s: %d 시그ë„ì„ ë³´ë‚¼ 수 ì—†ìŒ (PID: %ld): %s\n" -#: pg_ctl.c:1387 +#: pg_ctl.c:1381 #, c-format msgid "%s: could not find own program executable\n" msgstr "%s: 실행 가능한 í”„ë¡œê·¸ëž¨ì„ ì°¾ì„ ìˆ˜ 없습니다\n" -#: pg_ctl.c:1397 +#: pg_ctl.c:1391 #, c-format msgid "%s: could not find postgres program executable\n" msgstr "%s: 실행 가능한 postgres í”„ë¡œê·¸ëž¨ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ\n" -#: pg_ctl.c:1480 pg_ctl.c:1514 +#: pg_ctl.c:1461 pg_ctl.c:1495 #, c-format msgid "%s: could not open service manager\n" msgstr "%s: 서비스 관리ìžë¥¼ ì—´ 수 ì—†ìŒ\n" -#: pg_ctl.c:1486 +#: pg_ctl.c:1467 #, c-format msgid "%s: service \"%s\" already registered\n" msgstr "%s: \"%s\" 서비스가 ì´ë¯¸ ë“±ë¡ ë˜ì–´ 있ìŒ\n" -#: pg_ctl.c:1497 +#: pg_ctl.c:1478 #, c-format msgid "%s: could not register service \"%s\": error code %lu\n" msgstr "%s: \"%s\" 서비스를 등ë¡í•  수 ì—†ìŒ: 오류 코드 %lu\n" -#: pg_ctl.c:1520 +#: pg_ctl.c:1501 #, c-format msgid "%s: service \"%s\" not registered\n" msgstr "%s: \"%s\" 서비스가 등ë¡ë˜ì–´ 있지 않ìŒ\n" -#: pg_ctl.c:1527 +#: pg_ctl.c:1508 #, c-format msgid "%s: could not open service \"%s\": error code %lu\n" msgstr "%s: \"%s\" 서비스를 ì—´ 수 ì—†ìŒ: 오류 코드 %lu\n" -#: pg_ctl.c:1536 +#: pg_ctl.c:1517 #, c-format msgid "%s: could not unregister service \"%s\": error code %lu\n" msgstr "%s: \"%s\" 서비스를 서비스 목ë¡ì—서 뺄 수 ì—†ìŒ: 오류 코드 %lu\n" -#: pg_ctl.c:1623 +#: pg_ctl.c:1604 msgid "Waiting for server startup...\n" msgstr "서버를 시작하기 위해 기다리는 중...\n" -#: pg_ctl.c:1626 +#: pg_ctl.c:1607 msgid "Timed out waiting for server startup\n" msgstr "서버 ì‹œìž‘ì„ ê¸°ë‹¤ë¦¬ëŠ” ë™ì•ˆ 시간 초과ë¨\n" -#: pg_ctl.c:1630 +#: pg_ctl.c:1611 msgid "Server started and accepting connections\n" msgstr "서버가 시작ë˜ì—ˆìœ¼ë©° ì—°ê²°ì„ í—ˆìš©í•¨\n" -#: pg_ctl.c:1685 +#: pg_ctl.c:1666 #, c-format msgid "%s: could not start service \"%s\": error code %lu\n" msgstr "%s: \"%s\" 서비스를 시작할 수 ì—†ìŒ: 오류 코드 %lu\n" -#: pg_ctl.c:1759 +#: pg_ctl.c:1740 #, c-format msgid "%s: WARNING: cannot create restricted tokens on this platform\n" msgstr "%s: 경고: ì´ ìš´ì˜ì²´ì œì—서 restricted tokenì„ ë§Œë“¤ 수 ì—†ìŒ\n" -#: pg_ctl.c:1774 +#: pg_ctl.c:1753 #, c-format msgid "%s: could not open process token: error code %lu\n" msgstr "%s: 프로세스 토í°ì„ ì—´ 수 ì—†ìŒ: 오류 코드 %lu\n" -#: pg_ctl.c:1788 +#: pg_ctl.c:1767 #, c-format msgid "%s: could not allocate SIDs: error code %lu\n" msgstr "%s: SID를 할당할 수 ì—†ìŒ: 오류 코드 %lu\n" -#: pg_ctl.c:1808 +#: pg_ctl.c:1787 #, c-format msgid "%s: could not create restricted token: error code %lu\n" msgstr "%s: restricted tokenì„ ë§Œë“¤ 수 ì—†ìŒ: 오류 코드 %lu\n" -#: pg_ctl.c:1842 +#: pg_ctl.c:1818 #, c-format msgid "%s: WARNING: could not locate all job object functions in system API\n" -msgstr "" +msgstr "%s: 경고: 시스템 APIì—서 모든 job ê°ì²´ 함수를 ì°¾ì„ ìˆ˜ ì—†ìŒ\n" -#: pg_ctl.c:1925 +#: pg_ctl.c:1901 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "보다 ìžì„¸í•œ ì‚¬ìš©ë²•ì€ \"%s --help\"\n" -#: pg_ctl.c:1933 +#: pg_ctl.c:1909 #, c-format msgid "" "%s is a utility to initialize, start, stop, or control a PostgreSQL server.\n" @@ -484,17 +490,17 @@ msgstr "" "%s í”„ë¡œê·¸ëž¨ì€ PostgreSQL 서버를 초기화, 시작, 중지, 제어하는 ë„구입니다.\n" "\n" -#: pg_ctl.c:1934 +#: pg_ctl.c:1910 #, c-format msgid "Usage:\n" msgstr "사용법:\n" -#: pg_ctl.c:1935 +#: pg_ctl.c:1911 #, c-format msgid " %s init[db] [-D DATADIR] [-s] [-o \"OPTIONS\"]\n" msgstr " %s init[db] [-D ë°ì´í„°ë””렉터리] [-s] [-o \"옵션\"]\n" -#: pg_ctl.c:1936 +#: pg_ctl.c:1912 #, c-format msgid "" " %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS" @@ -503,12 +509,12 @@ msgstr "" " %s start [-w] [-t ì´ˆ] [-D ë°ì´í„°ë””렉터리] [-s] [-l 로그파ì¼] [-o \"옵션" "\"]\n" -#: pg_ctl.c:1937 +#: pg_ctl.c:1913 #, c-format msgid " %s stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" msgstr " %s stop [-W] [-t ì´ˆ] [-D ë°ì´í„°ë””렉터리] [-s] [-m 중지모드]\n" -#: pg_ctl.c:1938 +#: pg_ctl.c:1914 #, c-format msgid "" " %s restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" @@ -517,41 +523,42 @@ msgstr "" " %s restart [-w] [-t ì´ˆ] [-D ë°ì´í„°ë””렉터리] [-s] [-m 중지모드]\n" " [-o \"옵션\"]\n" -#: pg_ctl.c:1940 +#: pg_ctl.c:1916 #, c-format msgid " %s reload [-D DATADIR] [-s]\n" msgstr " %s reload [-D ë°ì´í„°ë””렉터리] [-s]\n" -#: pg_ctl.c:1941 +#: pg_ctl.c:1917 #, c-format msgid " %s status [-D DATADIR]\n" msgstr " %s status [-D ë°ì´í„°ë””렉터리]\n" -#: pg_ctl.c:1942 +#: pg_ctl.c:1918 #, c-format msgid " %s promote [-D DATADIR] [-s]\n" msgstr " %s promote [-D ë°ì´í„°ë””렉터리] [-s]\n" -#: pg_ctl.c:1943 +#: pg_ctl.c:1919 #, c-format msgid " %s kill SIGNALNAME PID\n" msgstr " %s kill 시그ë„ì´ë¦„ PID\n" -#: pg_ctl.c:1945 +#: pg_ctl.c:1921 #, c-format msgid "" " %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" " [-S START-TYPE] [-w] [-t SECS] [-o \"OPTIONS\"]\n" msgstr "" -" %s register [-N 서비스ì´ë¦„] [-U 사용ìžì´ë¦„] [-P 암호] [-D ë°ì´í„°ë””렉터리]\n" +" %s register [-N 서비스ì´ë¦„] [-U 사용ìžì´ë¦„] [-P 암호] [-D ë°ì´í„°ë””렉터" +"리]\n" " [-S 시작형태] [-w] [-t ì´ˆ] [-o \"옵션\"]\n" -#: pg_ctl.c:1947 +#: pg_ctl.c:1923 #, c-format msgid " %s unregister [-N SERVICENAME]\n" msgstr " %s unregister [-N 서비스ì´ë¦„]\n" -#: pg_ctl.c:1950 +#: pg_ctl.c:1926 #, c-format msgid "" "\n" @@ -560,50 +567,51 @@ msgstr "" "\n" "ì¼ë°˜ 옵션들:\n" -#: pg_ctl.c:1951 +#: pg_ctl.c:1927 #, c-format msgid " -D, --pgdata=DATADIR location of the database storage area\n" -msgstr " -D, --pgdata=ë°ì´í„°ë””렉터리 ë°ì´í„°ë² ì´ìФ ìžë£Œê°€ 저장ë˜ì–´ìžˆëŠ” 디렉터리\n" +msgstr "" +" -D, --pgdata=ë°ì´í„°ë””렉터리 ë°ì´í„°ë² ì´ìФ ìžë£Œê°€ 저장ë˜ì–´ìžˆëŠ” 디렉터리\n" -#: pg_ctl.c:1953 +#: pg_ctl.c:1929 #, c-format msgid "" " -e SOURCE event source for logging when running as a service\n" msgstr "" " -e SOURCE 서비스가 실행 중ì¼ë•Œ ìŒ“ì„ ë¡œê·¸ë¥¼ 위한 ì´ë²¤íЏ 소스\n" -#: pg_ctl.c:1955 +#: pg_ctl.c:1931 #, c-format msgid " -s, --silent only print errors, no informational messages\n" msgstr "" " -s, --silent ì¼ë°˜ì ì¸ 메시지는 ë³´ì´ì§€ 않고, 오류만 보여줌\n" -#: pg_ctl.c:1956 +#: pg_ctl.c:1932 #, c-format msgid " -t, --timeout=SECS seconds to wait when using -w option\n" msgstr " -t, --timeout=ì´ˆ -w 옵션 사용 시 대기 시간(ì´ˆ)\n" -#: pg_ctl.c:1957 +#: pg_ctl.c:1933 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version 버전 정보를 보여주고 마침\n" -#: pg_ctl.c:1958 +#: pg_ctl.c:1934 #, c-format msgid " -w wait until operation completes\n" msgstr " -w ìž‘ì—…ì´ ëë‚  때까지 기다림\n" -#: pg_ctl.c:1959 +#: pg_ctl.c:1935 #, c-format msgid " -W do not wait until operation completes\n" msgstr " -W ìž‘ì—…ì´ ëë‚  때까지 기다리지 않ìŒ\n" -#: pg_ctl.c:1960 +#: pg_ctl.c:1936 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help ì´ ë„움ë§ì„ 보여주고 마침\n" -#: pg_ctl.c:1961 +#: pg_ctl.c:1937 #, c-format msgid "" "(The default is to wait for shutdown, but not for start or restart.)\n" @@ -611,12 +619,12 @@ msgid "" msgstr "" "(기본 ì„¤ì •ì€ ì¤‘ì§€ í•  때는 기다리고, 시작ì´ë‚˜ 재시작할 때는 안 기다림.)\n" -#: pg_ctl.c:1962 +#: pg_ctl.c:1938 #, c-format msgid "If the -D option is omitted, the environment variable PGDATA is used.\n" msgstr "-D ì˜µì…˜ì„ ì‚¬ìš©í•˜ì§€ 않으면, PGDATA í™˜ê²½ë³€ìˆ˜ê°’ì„ ì‚¬ìš©í•¨.\n" -#: pg_ctl.c:1964 +#: pg_ctl.c:1940 #, c-format msgid "" "\n" @@ -625,22 +633,22 @@ msgstr "" "\n" "start, restart 때 사용할 수 있는 옵션들:\n" -#: pg_ctl.c:1966 +#: pg_ctl.c:1942 #, c-format msgid " -c, --core-files allow postgres to produce core files\n" msgstr " -c, --core-files 코어 ë¤í”„ 파ì¼ì„ 만듬\n" -#: pg_ctl.c:1968 +#: pg_ctl.c:1944 #, c-format msgid " -c, --core-files not applicable on this platform\n" msgstr " -c, --core-files ì´ í”Œëž«í¼ì—서는 사용할 수 ì—†ìŒ\n" -#: pg_ctl.c:1970 +#: pg_ctl.c:1946 #, c-format msgid " -l, --log=FILENAME write (or append) server log to FILENAME\n" msgstr " -l, --log=ë¡œê·¸íŒŒì¼ ì„œë²„ 로그를 ì´ ë¡œê·¸íŒŒì¼ì— 기ë¡í•¨\n" -#: pg_ctl.c:1971 +#: pg_ctl.c:1947 #, c-format msgid "" " -o OPTIONS command line options to pass to postgres\n" @@ -649,12 +657,12 @@ msgstr "" " -o 옵션들 PostgreSQL ì„œë²„í”„ë¡œê·¸ëž¨ì¸ postgres나 initdb\n" " 명령ì—서 사용할 명령행 옵션들\n" -#: pg_ctl.c:1973 +#: pg_ctl.c:1949 #, c-format msgid " -p PATH-TO-POSTGRES normally not necessary\n" msgstr " -p PATH-TO-POSTGRES ë³´í†µì€ í•„ìš”ì¹˜ 않ìŒ\n" -#: pg_ctl.c:1974 +#: pg_ctl.c:1950 #, c-format msgid "" "\n" @@ -663,14 +671,14 @@ msgstr "" "\n" "stop, restart 때 사용 í•  수 있는 옵션들:\n" -#: pg_ctl.c:1975 +#: pg_ctl.c:1951 #, c-format msgid "" " -m, --mode=MODE MODE can be \"smart\", \"fast\", or \"immediate\"\n" msgstr "" " -m, --mode=모드 모드는 \"smart\", \"fast\", \"immediate\" 중 하나\n" -#: pg_ctl.c:1977 +#: pg_ctl.c:1953 #, c-format msgid "" "\n" @@ -679,17 +687,17 @@ msgstr "" "\n" "중지방법 설명:\n" -#: pg_ctl.c:1978 +#: pg_ctl.c:1954 #, c-format msgid " smart quit after all clients have disconnected\n" msgstr " smart 모든 í´ë¼ì´ì–¸íŠ¸ì˜ ì—°ê²°ì´ ëŠê¸°ê²Œ ë˜ë©´ 중지 ë¨\n" -#: pg_ctl.c:1979 +#: pg_ctl.c:1955 #, c-format msgid " fast quit directly, with proper shutdown\n" msgstr " fast í´ë¼ì´ì–¸íŠ¸ì˜ ì—°ê²°ì„ ê°•ì œë¡œ ëŠê³  ì •ìƒì ìœ¼ë¡œ 중지 ë¨\n" -#: pg_ctl.c:1980 +#: pg_ctl.c:1956 #, c-format msgid "" " immediate quit without complete shutdown; will lead to recovery on " @@ -697,7 +705,7 @@ msgid "" msgstr "" " immediate 그냥 무조건 중지함; 다시 시작할 때 복구 ìž‘ì—…ì„ í•  ìˆ˜ë„ ìžˆìŒ\n" -#: pg_ctl.c:1982 +#: pg_ctl.c:1958 #, c-format msgid "" "\n" @@ -706,7 +714,7 @@ msgstr "" "\n" "사용할 수 있는 중지용(for kill) ì‹œê·¸ë„ ì´ë¦„:\n" -#: pg_ctl.c:1986 +#: pg_ctl.c:1962 #, c-format msgid "" "\n" @@ -715,28 +723,28 @@ msgstr "" "\n" "서비스 등ë¡/제거용 옵션들:\n" -#: pg_ctl.c:1987 +#: pg_ctl.c:1963 #, c-format msgid "" " -N SERVICENAME service name with which to register PostgreSQL server\n" msgstr " -N SERVICENAME 서비스 목ë¡ì— 등ë¡ë  PostgreSQL 서비스 ì´ë¦„\n" -#: pg_ctl.c:1988 +#: pg_ctl.c:1964 #, c-format msgid " -P PASSWORD password of account to register PostgreSQL server\n" msgstr " -P PASSWORD ì´ ì„œë¹„ìŠ¤ë¥¼ 실행할 사용ìžì˜ 암호\n" -#: pg_ctl.c:1989 +#: pg_ctl.c:1965 #, c-format msgid " -U USERNAME user name of account to register PostgreSQL server\n" msgstr " -U USERNAME ì´ ì„œë¹„ìŠ¤ë¥¼ 실행할 ì‚¬ìš©ìž ì´ë¦„\n" -#: pg_ctl.c:1990 +#: pg_ctl.c:1966 #, c-format msgid " -S START-TYPE service start type to register PostgreSQL server\n" msgstr " -S 시작형태 서비스로 등ë¡ëœ PostgreSQL 서버 시작 방법\n" -#: pg_ctl.c:1992 +#: pg_ctl.c:1968 #, c-format msgid "" "\n" @@ -745,19 +753,18 @@ msgstr "" "\n" "시작형태 설명:\n" -#: pg_ctl.c:1993 +#: pg_ctl.c:1969 #, c-format msgid "" " auto start service automatically during system startup (default)\n" -msgstr "" -" auto ì‹œìŠ¤í…œì´ ì‹œìž‘ë˜ë©´ ìžë™ìœ¼ë¡œ 서비스가 ì‹œìž‘ë¨ (초기값)\n" +msgstr " auto ì‹œìŠ¤í…œì´ ì‹œìž‘ë˜ë©´ ìžë™ìœ¼ë¡œ 서비스가 ì‹œìž‘ë¨ (초기값)\n" -#: pg_ctl.c:1994 +#: pg_ctl.c:1970 #, c-format msgid " demand start service on demand\n" msgstr " demand ìˆ˜ë™ ì‹œìž‘\n" -#: pg_ctl.c:1997 +#: pg_ctl.c:1973 #, c-format msgid "" "\n" @@ -766,27 +773,27 @@ msgstr "" "\n" "오류보고: .\n" -#: pg_ctl.c:2022 +#: pg_ctl.c:1998 #, c-format msgid "%s: unrecognized shutdown mode \"%s\"\n" msgstr "%s: ìž˜ëª»ëœ ì¤‘ì§€ 방법 \"%s\"\n" -#: pg_ctl.c:2054 +#: pg_ctl.c:2030 #, c-format msgid "%s: unrecognized signal name \"%s\"\n" msgstr "%s: ìž˜ëª»ëœ ì‹œê·¸ë„ ì´ë¦„ \"%s\"\n" -#: pg_ctl.c:2071 +#: pg_ctl.c:2047 #, c-format msgid "%s: unrecognized start type \"%s\"\n" msgstr "%s: 알 수 없는 시작형태 \"%s\"\n" -#: pg_ctl.c:2126 +#: pg_ctl.c:2102 #, c-format msgid "%s: could not determine the data directory using command \"%s\"\n" msgstr "%s: \"%s\" 명령ì—서 사용할 ë°ì´í„° 디렉터리를 알 수 ì—†ìŒ\n" -#: pg_ctl.c:2198 +#: pg_ctl.c:2175 #, c-format msgid "" "%s: cannot be run as root\n" @@ -797,32 +804,32 @@ msgstr "" "ì‹œìŠ¤í…œê´€ë¦¬ìž ê¶Œí•œì´ ì—†ëŠ”, ì„œë²„í”„ë¡œì„¸ìŠ¤ì˜ ì†Œìœ ì£¼ê°€ ë  ì¼ë°˜ 사용ìžë¡œ\n" "ë¡œê·¸ì¸ í•´ì„œ(\"su\", \"runas\" ê°™ì€ ëª…ë ¹ ì´ìš©) 실행하십시오.\n" -#: pg_ctl.c:2277 +#: pg_ctl.c:2258 #, c-format msgid "%s: -S option not supported on this platform\n" msgstr "%s: -S ì˜µì…˜ì€ ì´ ìš´ì˜ì²´ì œì—서는 ì§€ì›í•˜ì§€ 않ìŒ\n" -#: pg_ctl.c:2315 +#: pg_ctl.c:2297 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: 너무 ë§Žì€ ëª…ë ¹í–‰ ì¸ìˆ˜ë“¤ (시작 \"%s\")\n" -#: pg_ctl.c:2339 +#: pg_ctl.c:2321 #, c-format msgid "%s: missing arguments for kill mode\n" msgstr "%s: kill ìž‘ì—…ì— í•„ìš”í•œ ì¸ìˆ˜ê°€ 빠졌습니다\n" -#: pg_ctl.c:2357 +#: pg_ctl.c:2339 #, c-format msgid "%s: unrecognized operation mode \"%s\"\n" msgstr "%s: 알 수 없는 작업 모드 \"%s\"\n" -#: pg_ctl.c:2367 +#: pg_ctl.c:2349 #, c-format msgid "%s: no operation specified\n" msgstr "%s: 수행할 ìž‘ì—…ì„ ì§€ì •í•˜ì§€ 않았습니다\n" -#: pg_ctl.c:2388 +#: pg_ctl.c:2370 #, c-format msgid "" "%s: no database directory specified and environment variable PGDATA unset\n" diff --git a/src/bin/pg_ctl/po/ru.po b/src/bin/pg_ctl/po/ru.po index c23471d2e1..5b0c8405ae 100644 --- a/src/bin/pg_ctl/po/ru.po +++ b/src/bin/pg_ctl/po/ru.po @@ -6,14 +6,14 @@ # Sergey Burladyan , 2009, 2012. # Andrey Sudnik , 2010. # Dmitriy Olshevskiy , 2014. -# Alexander Lakhin , 2012-2016. +# Alexander Lakhin , 2012-2017. # msgid "" msgstr "" "Project-Id-Version: pg_ctl (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-20 18:14+0000\n" -"PO-Revision-Date: 2016-09-20 12:00+0300\n" +"POT-Creation-Date: 2017-02-01 23:13+0000\n" +"PO-Revision-Date: 2016-11-24 11:51+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -194,7 +194,7 @@ msgid "" msgstr "" "Программа \"%s\" необходима Ð´Ð»Ñ %s, но не найдена\n" "в каталоге \"%s\".\n" -"Проверьте вашу уÑтановку PostgreSQL.\n" +"Проверьте правильноÑть уÑтановки СУБД.\n" #: pg_ctl.c:827 #, c-format @@ -205,7 +205,7 @@ msgid "" msgstr "" "Программа \"%s\" найдена в \"%s\",\n" "но её верÑÐ¸Ñ Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÐµÑ‚ÑÑ Ð¾Ñ‚ верÑии %s.\n" -"Проверьте вашу уÑтановку PostgreSQL.\n" +"Проверьте правильноÑть уÑтановки СУБД.\n" #: pg_ctl.c:860 #, c-format diff --git a/src/bin/pg_dump/Makefile b/src/bin/pg_dump/Makefile index 25336a5f25..f63412e2c5 100644 --- a/src/bin/pg_dump/Makefile +++ b/src/bin/pg_dump/Makefile @@ -17,7 +17,7 @@ top_builddir = ../../.. include $(top_builddir)/src/Makefile.global override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS) -LDFLAGS += -L$(top_builddir)/src/fe_utils -lpgfeutils -lpq +override LDFLAGS := -L$(top_builddir)/src/fe_utils -lpgfeutils $(libpq_pgport) $(LDFLAGS) OBJS= pg_backup_archiver.o pg_backup_db.o pg_backup_custom.o \ pg_backup_null.o pg_backup_tar.o pg_backup_directory.o \ @@ -26,13 +26,13 @@ OBJS= pg_backup_archiver.o pg_backup_db.o pg_backup_custom.o \ all: pg_dump pg_restore pg_dumpall pg_dump: pg_dump.o common.o pg_dump_sort.o $(OBJS) | submake-libpq submake-libpgport submake-libpgfeutils - $(CC) $(CFLAGS) pg_dump.o common.o pg_dump_sort.o $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + $(CC) $(CFLAGS) pg_dump.o common.o pg_dump_sort.o $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) pg_restore: pg_restore.o $(OBJS) | submake-libpq submake-libpgport submake-libpgfeutils - $(CC) $(CFLAGS) pg_restore.o $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + $(CC) $(CFLAGS) pg_restore.o $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) pg_dumpall: pg_dumpall.o dumputils.o | submake-libpq submake-libpgport submake-libpgfeutils - $(CC) $(CFLAGS) pg_dumpall.o dumputils.o $(WIN32RES) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + $(CC) $(CFLAGS) pg_dumpall.o dumputils.o $(WIN32RES) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) install: all installdirs $(INSTALL_PROGRAM) pg_dump$(X) '$(DESTDIR)$(bindir)'/pg_dump$(X) diff --git a/src/bin/pg_dump/compress_io.c b/src/bin/pg_dump/compress_io.c index e0ef9cd60a..eb590c348c 100644 --- a/src/bin/pg_dump/compress_io.c +++ b/src/bin/pg_dump/compress_io.c @@ -592,8 +592,14 @@ cfread(void *ptr, int size, cfp *fp) { ret = gzread(fp->compressedfp, ptr, size); if (ret != size && !gzeof(fp->compressedfp)) + { + int errnum; + const char *errmsg = gzerror(fp->compressedfp, &errnum); + exit_horribly(modulename, - "could not read from input file: %s\n", strerror(errno)); + "could not read from input file: %s\n", + errnum == Z_ERRNO ? strerror(errno) : errmsg); + } } else #endif @@ -695,6 +701,22 @@ cfeof(cfp *fp) return feof(fp->uncompressedfp); } +const char * +get_cfp_error(cfp *fp) +{ +#ifdef HAVE_LIBZ + if (fp->compressedfp) + { + int errnum; + const char *errmsg = gzerror(fp->compressedfp, &errnum); + + if (errnum != Z_ERRNO) + return errmsg; + } +#endif + return strerror(errno); +} + #ifdef HAVE_LIBZ static int hasSuffix(const char *filename, const char *suffix) diff --git a/src/bin/pg_dump/compress_io.h b/src/bin/pg_dump/compress_io.h index 2a45600943..89be583d45 100644 --- a/src/bin/pg_dump/compress_io.h +++ b/src/bin/pg_dump/compress_io.h @@ -65,5 +65,6 @@ extern int cfgetc(cfp *fp); extern char *cfgets(cfp *fp, char *buf, int len); extern int cfclose(cfp *fp); extern int cfeof(cfp *fp); +extern const char *get_cfp_error(cfp *fp); #endif diff --git a/src/bin/pg_dump/dumputils.c b/src/bin/pg_dump/dumputils.c index cd1e8c4a68..c171978060 100644 --- a/src/bin/pg_dump/dumputils.c +++ b/src/bin/pg_dump/dumputils.c @@ -368,11 +368,12 @@ buildACLCommands(const char *name, const char *subname, */ bool buildDefaultACLCommands(const char *type, const char *nspname, - const char *acls, const char *owner, + const char *acls, const char *racls, + const char *initacls, const char *initracls, + const char *owner, int remoteVersion, PQExpBuffer sql) { - bool result; PQExpBuffer prefix; prefix = createPQExpBuffer(); @@ -388,14 +389,28 @@ buildDefaultACLCommands(const char *type, const char *nspname, if (nspname) appendPQExpBuffer(prefix, "IN SCHEMA %s ", fmtId(nspname)); - result = buildACLCommands("", NULL, - type, acls, "", owner, - prefix->data, remoteVersion, - sql); + if (strlen(initacls) != 0 || strlen(initracls) != 0) + { + appendPQExpBuffer(sql, "SELECT pg_catalog.binary_upgrade_set_record_init_privs(true);\n"); + if (!buildACLCommands("", NULL, type, initacls, initracls, owner, + prefix->data, remoteVersion, sql)) + { + destroyPQExpBuffer(prefix); + return false; + } + appendPQExpBuffer(sql, "SELECT pg_catalog.binary_upgrade_set_record_init_privs(false);\n"); + } + + if (!buildACLCommands("", NULL, type, acls, racls, owner, + prefix->data, remoteVersion, sql)) + { + destroyPQExpBuffer(prefix); + return false; + } destroyPQExpBuffer(prefix); - return result; + return true; } /* @@ -714,21 +729,36 @@ buildACLQueries(PQExpBuffer acl_subquery, PQExpBuffer racl_subquery, * We always perform this delta on all ACLs and expect that by the time * these are run the initial privileges will be in place, even in a binary * upgrade situation (see below). + * + * Finally, the order in which privileges are in the ACL string (the order + * they been GRANT'd in, which the backend maintains) must be preserved to + * ensure that GRANTs WITH GRANT OPTION and subsequent GRANTs based on + * those are dumped in the correct order. */ - printfPQExpBuffer(acl_subquery, "(SELECT pg_catalog.array_agg(acl) FROM " - "(SELECT pg_catalog.unnest(coalesce(%s,pg_catalog.acldefault(%s,%s))) AS acl " - "EXCEPT " - "SELECT pg_catalog.unnest(coalesce(pip.initprivs,pg_catalog.acldefault(%s,%s)))) as foo)", + printfPQExpBuffer(acl_subquery, + "(SELECT pg_catalog.array_agg(acl ORDER BY row_n) FROM " + "(SELECT acl, row_n FROM " + "pg_catalog.unnest(coalesce(%s,pg_catalog.acldefault(%s,%s))) " + "WITH ORDINALITY AS perm(acl,row_n) " + "WHERE NOT EXISTS ( " + "SELECT 1 FROM " + "pg_catalog.unnest(coalesce(pip.initprivs,pg_catalog.acldefault(%s,%s))) " + "AS init(init_acl) WHERE acl = init_acl)) as foo)", acl_column, obj_kind, acl_owner, obj_kind, acl_owner); - printfPQExpBuffer(racl_subquery, "(SELECT pg_catalog.array_agg(acl) FROM " - "(SELECT pg_catalog.unnest(coalesce(pip.initprivs,pg_catalog.acldefault(%s,%s))) AS acl " - "EXCEPT " - "SELECT pg_catalog.unnest(coalesce(%s,pg_catalog.acldefault(%s,%s)))) as foo)", + printfPQExpBuffer(racl_subquery, + "(SELECT pg_catalog.array_agg(acl ORDER BY row_n) FROM " + "(SELECT acl, row_n FROM " + "pg_catalog.unnest(coalesce(pip.initprivs,pg_catalog.acldefault(%s,%s))) " + "WITH ORDINALITY AS initp(acl,row_n) " + "WHERE NOT EXISTS ( " + "SELECT 1 FROM " + "pg_catalog.unnest(coalesce(%s,pg_catalog.acldefault(%s,%s))) " + "AS permp(orig_acl) WHERE acl = orig_acl)) as foo)", obj_kind, acl_owner, acl_column, @@ -753,19 +783,25 @@ buildACLQueries(PQExpBuffer acl_subquery, PQExpBuffer racl_subquery, { printfPQExpBuffer(init_acl_subquery, "CASE WHEN privtype = 'e' THEN " - "(SELECT pg_catalog.array_agg(acl) FROM " - "(SELECT pg_catalog.unnest(pip.initprivs) AS acl " - "EXCEPT " - "SELECT pg_catalog.unnest(pg_catalog.acldefault(%s,%s))) as foo) END", + "(SELECT pg_catalog.array_agg(acl ORDER BY row_n) FROM " + "(SELECT acl, row_n FROM pg_catalog.unnest(pip.initprivs) " + "WITH ORDINALITY AS initp(acl,row_n) " + "WHERE NOT EXISTS ( " + "SELECT 1 FROM " + "pg_catalog.unnest(pg_catalog.acldefault(%s,%s)) " + "AS privm(orig_acl) WHERE acl = orig_acl)) as foo) END", obj_kind, acl_owner); printfPQExpBuffer(init_racl_subquery, "CASE WHEN privtype = 'e' THEN " "(SELECT pg_catalog.array_agg(acl) FROM " - "(SELECT pg_catalog.unnest(pg_catalog.acldefault(%s,%s)) AS acl " - "EXCEPT " - "SELECT pg_catalog.unnest(pip.initprivs)) as foo) END", + "(SELECT acl, row_n FROM " + "pg_catalog.unnest(pg_catalog.acldefault(%s,%s)) " + "WITH ORDINALITY AS privp(acl,row_n) " + "WHERE NOT EXISTS ( " + "SELECT 1 FROM pg_catalog.unnest(pip.initprivs) " + "AS initp(init_acl) WHERE acl = init_acl)) as foo) END", obj_kind, acl_owner); } diff --git a/src/bin/pg_dump/dumputils.h b/src/bin/pg_dump/dumputils.h index b2fd7d37d0..caa390b3d3 100644 --- a/src/bin/pg_dump/dumputils.h +++ b/src/bin/pg_dump/dumputils.h @@ -41,7 +41,9 @@ extern bool buildACLCommands(const char *name, const char *subname, const char *owner, const char *prefix, int remoteVersion, PQExpBuffer sql); extern bool buildDefaultACLCommands(const char *type, const char *nspname, - const char *acls, const char *owner, + const char *acls, const char *racls, + const char *initacls, const char *initracls, + const char *owner, int remoteVersion, PQExpBuffer sql); extern void buildShSecLabelQuery(PGconn *conn, const char *catalog_name, diff --git a/src/bin/pg_dump/pg_backup.h b/src/bin/pg_dump/pg_backup.h index 4afa92f5f6..1641861f7a 100644 --- a/src/bin/pg_dump/pg_backup.h +++ b/src/bin/pg_dump/pg_backup.h @@ -117,6 +117,7 @@ typedef struct _restoreOptions bool *idWanted; /* array showing which dump IDs to emit */ int enable_row_security; + int binary_upgrade; } RestoreOptions; typedef struct _dumpOptions diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c index 05bdbdbf02..136445ee59 100644 --- a/src/bin/pg_dump/pg_backup_archiver.c +++ b/src/bin/pg_dump/pg_backup_archiver.c @@ -59,7 +59,7 @@ static ArchiveHandle *_allocAH(const char *FileSpec, const ArchiveFormat fmt, const int compression, ArchiveMode mode, SetupWorkerPtr setupWorkerPtr); static void _getObjectDescription(PQExpBuffer buf, TocEntry *te, ArchiveHandle *AH); -static void _printTocEntry(ArchiveHandle *AH, TocEntry *te, bool isData, bool acl_pass); +static void _printTocEntry(ArchiveHandle *AH, TocEntry *te, bool isData); static char *replace_line_endings(const char *str); static void _doSetFixedOutputState(ArchiveHandle *AH); static void _doSetSessionAuth(ArchiveHandle *AH, const char *user); @@ -72,6 +72,7 @@ static void _selectTablespace(ArchiveHandle *AH, const char *tablespace); static void processEncodingEntry(ArchiveHandle *AH, TocEntry *te); static void processStdStringsEntry(ArchiveHandle *AH, TocEntry *te); static teReqs _tocEntryRequired(TocEntry *te, teSection curSection, RestoreOptions *ropt); +static RestorePass _tocEntryRestorePass(TocEntry *te); static bool _tocEntryIsACL(TocEntry *te); static void _disableTriggersIfNecessary(ArchiveHandle *AH, TocEntry *te); static void _enableTriggersIfNecessary(ArchiveHandle *AH, TocEntry *te); @@ -87,13 +88,18 @@ static OutputContext SaveOutput(ArchiveHandle *AH); static void RestoreOutput(ArchiveHandle *AH, OutputContext savedContext); static int restore_toc_entry(ArchiveHandle *AH, TocEntry *te, bool is_parallel); -static void restore_toc_entries_prefork(ArchiveHandle *AH); -static void restore_toc_entries_parallel(ArchiveHandle *AH, ParallelState *pstate, +static void restore_toc_entries_prefork(ArchiveHandle *AH, + TocEntry *pending_list); +static void restore_toc_entries_parallel(ArchiveHandle *AH, + ParallelState *pstate, + TocEntry *pending_list); +static void restore_toc_entries_postfork(ArchiveHandle *AH, TocEntry *pending_list); -static void restore_toc_entries_postfork(ArchiveHandle *AH, TocEntry *pending_list); static void par_list_header_init(TocEntry *l); static void par_list_append(TocEntry *l, TocEntry *te); static void par_list_remove(TocEntry *te); +static void move_to_ready_list(TocEntry *pending_list, TocEntry *ready_list, + RestorePass pass); static TocEntry *get_next_work_item(ArchiveHandle *AH, TocEntry *ready_list, ParallelState *pstate); @@ -515,7 +521,6 @@ RestoreArchive(Archive *AHX) * knows how to do it, without depending on * te->dropStmt; use that. For other objects we need * to parse the command. - * */ if (strncmp(te->desc, "BLOB", 4) == 0) { @@ -523,10 +528,8 @@ RestoreArchive(Archive *AHX) } else { - char buffer[40]; - char *mark; char *dropStmt = pg_strdup(te->dropStmt); - char *dropStmtPtr = dropStmt; + char *dropStmtOrig = dropStmt; PQExpBuffer ftStmt = createPQExpBuffer(); /* @@ -543,18 +546,28 @@ RestoreArchive(Archive *AHX) /* * ALTER TABLE..ALTER COLUMN..DROP DEFAULT does * not support the IF EXISTS clause, and therefore - * we simply emit the original command for such - * objects. For other objects, we need to extract - * the first part of the DROP which includes the - * object type. Most of the time this matches + * we simply emit the original command for DEFAULT + * objects (modulo the adjustment made above). + * + * If we used CREATE OR REPLACE VIEW as a means of + * quasi-dropping an ON SELECT rule, that should + * be emitted unchanged as well. + * + * For other object types, we need to extract the + * first part of the DROP which includes the + * object type. Most of the time this matches * te->desc, so search for that; however for the * different kinds of CONSTRAINTs, we know to * search for hardcoded "DROP CONSTRAINT" instead. */ - if (strcmp(te->desc, "DEFAULT") == 0) + if (strcmp(te->desc, "DEFAULT") == 0 || + strncmp(dropStmt, "CREATE OR REPLACE VIEW", 22) == 0) appendPQExpBufferStr(ftStmt, dropStmt); else { + char buffer[40]; + char *mark; + if (strcmp(te->desc, "CONSTRAINT") == 0 || strcmp(te->desc, "CHECK CONSTRAINT") == 0 || strcmp(te->desc, "FK CONSTRAINT") == 0) @@ -564,19 +577,28 @@ RestoreArchive(Archive *AHX) te->desc); mark = strstr(dropStmt, buffer); - Assert(mark != NULL); - *mark = '\0'; - appendPQExpBuffer(ftStmt, "%s%s IF EXISTS%s", - dropStmt, buffer, - mark + strlen(buffer)); + if (mark) + { + *mark = '\0'; + appendPQExpBuffer(ftStmt, "%s%s IF EXISTS%s", + dropStmt, buffer, + mark + strlen(buffer)); + } + else + { + /* complain and emit unmodified command */ + write_msg(modulename, + "WARNING: could not find where to insert IF EXISTS in statement \"%s\"\n", + dropStmtOrig); + appendPQExpBufferStr(ftStmt, dropStmt); + } } ahprintf(AH, "%s", ftStmt->data); destroyPQExpBuffer(ftStmt); - - pg_free(dropStmtPtr); + pg_free(dropStmtOrig); } } } @@ -600,20 +622,18 @@ RestoreArchive(Archive *AHX) AH->currSchema = NULL; } - /* - * In serial mode, we now process each non-ACL TOC entry. - * - * In parallel mode, turn control over to the parallel-restore logic. - */ if (parallel_mode) { + /* + * In parallel mode, turn control over to the parallel-restore logic. + */ ParallelState *pstate; TocEntry pending_list; par_list_header_init(&pending_list); /* This runs PRE_DATA items and then disconnects from the database */ - restore_toc_entries_prefork(AH); + restore_toc_entries_prefork(AH, &pending_list); Assert(AH->connection == NULL); /* ParallelBackupStart() will actually fork the processes */ @@ -627,28 +647,51 @@ RestoreArchive(Archive *AHX) } else { + /* + * In serial mode, process everything in three phases: normal items, + * then ACLs, then matview refresh items. We might be able to skip + * one or both extra phases in some cases, eg data-only restores. + */ + bool haveACL = false; + bool haveRefresh = false; + for (te = AH->toc->next; te != AH->toc; te = te->next) - (void) restore_toc_entry(AH, te, false); - } + { + if ((te->reqs & (REQ_SCHEMA | REQ_DATA)) == 0) + continue; /* ignore if not to be dumped at all */ - /* - * Scan TOC again to output ownership commands and ACLs - */ - for (te = AH->toc->next; te != AH->toc; te = te->next) - { - AH->currentTE = te; + switch (_tocEntryRestorePass(te)) + { + case RESTORE_PASS_MAIN: + (void) restore_toc_entry(AH, te, false); + break; + case RESTORE_PASS_ACL: + haveACL = true; + break; + case RESTORE_PASS_REFRESH: + haveRefresh = true; + break; + } + } - /* Both schema and data objects might now have ownership/ACLs */ - if ((te->reqs & (REQ_SCHEMA | REQ_DATA)) != 0) + if (haveACL) { - /* Show namespace if available */ - if (te->namespace) - ahlog(AH, 1, "setting owner and privileges for %s \"%s.%s\"\n", - te->desc, te->namespace, te->tag); - else - ahlog(AH, 1, "setting owner and privileges for %s \"%s\"\n", - te->desc, te->tag); - _printTocEntry(AH, te, false, true); + for (te = AH->toc->next; te != AH->toc; te = te->next) + { + if ((te->reqs & (REQ_SCHEMA | REQ_DATA)) != 0 && + _tocEntryRestorePass(te) == RESTORE_PASS_ACL) + (void) restore_toc_entry(AH, te, false); + } + } + + if (haveRefresh) + { + for (te = AH->toc->next; te != AH->toc; te = te->next) + { + if ((te->reqs & (REQ_SCHEMA | REQ_DATA)) != 0 && + _tocEntryRestorePass(te) == RESTORE_PASS_REFRESH) + (void) restore_toc_entry(AH, te, false); + } } } @@ -695,10 +738,7 @@ restore_toc_entry(ArchiveHandle *AH, TocEntry *te, bool is_parallel) AH->currentTE = te; /* Work out what, if anything, we want from this entry */ - if (_tocEntryIsACL(te)) - reqs = 0; /* ACLs are never restored here */ - else - reqs = te->reqs; + reqs = te->reqs; /* * Ignore DATABASE entry unless we should create it. We must check this @@ -719,17 +759,19 @@ restore_toc_entry(ArchiveHandle *AH, TocEntry *te, bool is_parallel) defnDumped = false; - if ((reqs & REQ_SCHEMA) != 0) /* We want the schema */ + /* + * If it has a schema component that we want, then process that + */ + if ((reqs & REQ_SCHEMA) != 0) { - /* Show namespace if available */ + /* Show namespace in log message if available */ if (te->namespace) ahlog(AH, 1, "creating %s \"%s.%s\"\n", te->desc, te->namespace, te->tag); else ahlog(AH, 1, "creating %s \"%s\"\n", te->desc, te->tag); - - _printTocEntry(AH, te, false, false); + _printTocEntry(AH, te, false); defnDumped = true; if (strcmp(te->desc, "TABLE") == 0) @@ -785,7 +827,7 @@ restore_toc_entry(ArchiveHandle *AH, TocEntry *te, bool is_parallel) } /* - * If we have a data component, then process it + * If it has a data component that we want, then process that */ if ((reqs & REQ_DATA) != 0) { @@ -801,7 +843,7 @@ restore_toc_entry(ArchiveHandle *AH, TocEntry *te, bool is_parallel) */ if (AH->PrintTocDataPtr !=NULL) { - _printTocEntry(AH, te, true, false); + _printTocEntry(AH, te, true); if (strcmp(te->desc, "BLOBS") == 0 || strcmp(te->desc, "BLOB COMMENTS") == 0) @@ -889,7 +931,7 @@ restore_toc_entry(ArchiveHandle *AH, TocEntry *te, bool is_parallel) { /* If we haven't already dumped the defn part, do so now */ ahlog(AH, 1, "executing %s %s\n", te->desc, te->tag); - _printTocEntry(AH, te, false, false); + _printTocEntry(AH, te, false); } } @@ -1083,7 +1125,8 @@ PrintTOCSummary(Archive *AHX) ahprintf(AH, ";\n; Archive created at %s\n", stamp_str); ahprintf(AH, "; dbname: %s\n; TOC Entries: %d\n; Compression: %d\n", - AH->archdbname, AH->tocCount, AH->compression); + replace_line_endings(AH->archdbname), + AH->tocCount, AH->compression); switch (AH->format) { @@ -1120,10 +1163,37 @@ PrintTOCSummary(Archive *AHX) curSection = te->section; if (ropt->verbose || (_tocEntryRequired(te, curSection, ropt) & (REQ_SCHEMA | REQ_DATA)) != 0) + { + char *sanitized_name; + char *sanitized_schema; + char *sanitized_owner; + + /* + * As in _printTocEntry(), sanitize strings that might contain + * newlines, to ensure that each logical output line is in fact + * one physical output line. This prevents confusion when the + * file is read by "pg_restore -L". Note that we currently don't + * bother to quote names, meaning that the name fields aren't + * automatically parseable. "pg_restore -L" doesn't care because + * it only examines the dumpId field, but someday we might want to + * try harder. + */ + sanitized_name = replace_line_endings(te->tag); + if (te->namespace) + sanitized_schema = replace_line_endings(te->namespace); + else + sanitized_schema = pg_strdup("-"); + sanitized_owner = replace_line_endings(te->owner); + ahprintf(AH, "%d; %u %u %s %s %s %s\n", te->dumpId, te->catalogId.tableoid, te->catalogId.oid, - te->desc, te->namespace ? te->namespace : "-", - te->tag, te->owner); + te->desc, sanitized_schema, sanitized_name, + sanitized_owner); + + free(sanitized_name); + free(sanitized_schema); + free(sanitized_owner); + } if (ropt->verbose && te->nDeps > 0) { int i; @@ -2284,18 +2354,18 @@ _allocAH(const char *FileSpec, const ArchiveFormat fmt, AH->OF = stdout; /* - * On Windows, we need to use binary mode to read/write non-text archive - * formats. Force stdin/stdout into binary mode if that is what we are - * using. + * On Windows, we need to use binary mode to read/write non-text files, + * which include all archive formats as well as compressed plain text. + * Force stdin/stdout into binary mode if that is what we are using. */ #ifdef WIN32 - if (fmt != archNull && + if ((fmt != archNull || compression != 0) && (AH->fSpec == NULL || strcmp(AH->fSpec, "") == 0)) { if (mode == archModeWrite) - setmode(fileno(stdout), O_BINARY); + _setmode(fileno(stdout), O_BINARY); else - setmode(fileno(stdin), O_BINARY); + _setmode(fileno(stdin), O_BINARY); } #endif @@ -2826,7 +2896,17 @@ _tocEntryRequired(TocEntry *te, teSection curSection, RestoreOptions *ropt) /* Mask it if we only want schema */ if (ropt->schemaOnly) - res = res & REQ_SCHEMA; + { + /* + * In binary-upgrade mode, even with schema-only set, we do not mask + * out large objects. Only large object definitions, comments and + * other information should be generated in binary-upgrade mode (not + * the actual data). + */ + if (!(ropt->binary_upgrade && strcmp(te->desc,"BLOB") == 0) && + !(ropt->binary_upgrade && strncmp(te->tag,"LARGE OBJECT ", 13) == 0)) + res = res & REQ_SCHEMA; + } /* Mask it if we only want data */ if (ropt->dataOnly) @@ -2843,8 +2923,30 @@ _tocEntryRequired(TocEntry *te, teSection curSection, RestoreOptions *ropt) return res; } +/* + * Identify which pass we should restore this TOC entry in. + * + * See notes with the RestorePass typedef in pg_backup_archiver.h. + */ +static RestorePass +_tocEntryRestorePass(TocEntry *te) +{ + /* "ACL LANGUAGE" was a crock emitted only in PG 7.4 */ + if (strcmp(te->desc, "ACL") == 0 || + strcmp(te->desc, "ACL LANGUAGE") == 0 || + strcmp(te->desc, "DEFAULT ACL") == 0) + return RESTORE_PASS_ACL; + if (strcmp(te->desc, "MATERIALIZED VIEW DATA") == 0) + return RESTORE_PASS_REFRESH; + return RESTORE_PASS_MAIN; +} + /* * Identify TOC entries that are ACLs. + * + * Note: it seems worth duplicating some code here to avoid a hard-wired + * assumption that these are exactly the same entries that we restore during + * the RESTORE_PASS_ACL phase. */ static bool _tocEntryIsACL(TocEntry *te) @@ -3213,6 +3315,7 @@ _getObjectDescription(PQExpBuffer buf, TocEntry *te, ArchiveHandle *AH) strcmp(type, "DATABASE") == 0 || strcmp(type, "PROCEDURAL LANGUAGE") == 0 || strcmp(type, "SCHEMA") == 0 || + strcmp(type, "EVENT TRIGGER") == 0 || strcmp(type, "FOREIGN DATA WRAPPER") == 0 || strcmp(type, "SERVER") == 0 || strcmp(type, "USER MAPPING") == 0) @@ -3257,27 +3360,22 @@ _getObjectDescription(PQExpBuffer buf, TocEntry *te, ArchiveHandle *AH) return; } - write_msg(modulename, "WARNING: don't know how to set owner for object type %s\n", + write_msg(modulename, "WARNING: don't know how to set owner for object type \"%s\"\n", type); } +/* + * Emit the SQL commands to create the object represented by a TOC entry + * + * This now also includes issuing an ALTER OWNER command to restore the + * object's ownership, if wanted. But note that the object's permissions + * will remain at default, until the matching ACL TOC entry is restored. + */ static void -_printTocEntry(ArchiveHandle *AH, TocEntry *te, bool isData, bool acl_pass) +_printTocEntry(ArchiveHandle *AH, TocEntry *te, bool isData) { RestoreOptions *ropt = AH->public.ropt; - /* ACLs are dumped only during acl pass */ - if (acl_pass) - { - if (!_tocEntryIsACL(te)) - return; - } - else - { - if (_tocEntryIsACL(te)) - return; - } - /* * Avoid dumping the public schema, as it will already be created ... * unless we are using --clean mode (and *not* --create mode), in which @@ -3416,6 +3514,7 @@ _printTocEntry(ArchiveHandle *AH, TocEntry *te, bool isData, bool acl_pass) strcmp(te->desc, "OPERATOR FAMILY") == 0 || strcmp(te->desc, "PROCEDURAL LANGUAGE") == 0 || strcmp(te->desc, "SCHEMA") == 0 || + strcmp(te->desc, "EVENT TRIGGER") == 0 || strcmp(te->desc, "TABLE") == 0 || strcmp(te->desc, "TYPE") == 0 || strcmp(te->desc, "VIEW") == 0 || @@ -3451,7 +3550,7 @@ _printTocEntry(ArchiveHandle *AH, TocEntry *te, bool isData, bool acl_pass) } else { - write_msg(modulename, "WARNING: don't know how to set owner for object type %s\n", + write_msg(modulename, "WARNING: don't know how to set owner for object type \"%s\"\n", te->desc); } } @@ -3460,7 +3559,7 @@ _printTocEntry(ArchiveHandle *AH, TocEntry *te, bool isData, bool acl_pass) * If it's an ACL entry, it might contain SET SESSION AUTHORIZATION * commands, so we can no longer assume we know the current auth setting. */ - if (acl_pass) + if (_tocEntryIsACL(te)) { if (AH->currUser) free(AH->currUser); @@ -3469,8 +3568,9 @@ _printTocEntry(ArchiveHandle *AH, TocEntry *te, bool isData, bool acl_pass) } /* - * Sanitize a string to be included in an SQL comment, by replacing any - * newlines with spaces. + * Sanitize a string to be included in an SQL comment or TOC listing, + * by replacing any newlines with spaces. + * The result is a freshly malloc'd string. */ static char * replace_line_endings(const char *str) @@ -3489,6 +3589,9 @@ replace_line_endings(const char *str) return result; } +/* + * Write the file header for a custom-format archive + */ void WriteHead(ArchiveHandle *AH) { @@ -3660,16 +3763,14 @@ dumpTimestamp(ArchiveHandle *AH, const char *msg, time_t tim) /* * Main engine for parallel restore. * - * Work is done in three phases. - * First we process all SECTION_PRE_DATA tocEntries, in a single connection, - * just as for a standard restore. Second we process the remaining non-ACL - * steps in parallel worker children (threads on Windows, processes on Unix), - * each of which connects separately to the database. Finally we process all - * the ACL entries in a single connection (that happens back in - * RestoreArchive). + * Parallel restore is done in three phases. In this first phase, + * we'll process all SECTION_PRE_DATA TOC entries that are allowed to be + * processed in the RESTORE_PASS_MAIN pass. (In practice, that's all + * PRE_DATA items other than ACLs.) Entries we can't process now are + * added to the pending_list for later phases to deal with. */ static void -restore_toc_entries_prefork(ArchiveHandle *AH) +restore_toc_entries_prefork(ArchiveHandle *AH, TocEntry *pending_list) { bool skipped_some; TocEntry *next_work_item; @@ -3687,23 +3788,32 @@ restore_toc_entries_prefork(ArchiveHandle *AH) * about showing all the dependencies of SECTION_PRE_DATA items, so we do * not risk trying to process them out-of-order. * + * Stuff that we can't do immediately gets added to the pending_list. + * Note: we don't yet filter out entries that aren't going to be restored. + * They might participate in dependency chains connecting entries that + * should be restored, so we treat them as live until we actually process + * them. + * * Note: as of 9.2, it should be guaranteed that all PRE_DATA items appear * before DATA items, and all DATA items before POST_DATA items. That is - * not certain to be true in older archives, though, so this loop is coded - * to not assume it. + * not certain to be true in older archives, though, and in any case use + * of a list file would destroy that ordering (cf. SortTocFromFile). So + * this loop cannot assume that it holds. */ + AH->restorePass = RESTORE_PASS_MAIN; skipped_some = false; for (next_work_item = AH->toc->next; next_work_item != AH->toc; next_work_item = next_work_item->next) { - /* NB: process-or-continue logic must be the inverse of loop below */ + bool do_now = true; + if (next_work_item->section != SECTION_PRE_DATA) { /* DATA and POST_DATA items are just ignored for now */ if (next_work_item->section == SECTION_DATA || next_work_item->section == SECTION_POST_DATA) { + do_now = false; skipped_some = true; - continue; } else { @@ -3714,18 +3824,35 @@ restore_toc_entries_prefork(ArchiveHandle *AH) * comment's dependencies are satisfied, so skip it for now. */ if (skipped_some) - continue; + do_now = false; } } - ahlog(AH, 1, "processing item %d %s %s\n", - next_work_item->dumpId, - next_work_item->desc, next_work_item->tag); + /* + * Also skip items that need to be forced into later passes. We need + * not set skipped_some in this case, since by assumption no main-pass + * items could depend on these. + */ + if (_tocEntryRestorePass(next_work_item) != RESTORE_PASS_MAIN) + do_now = false; - (void) restore_toc_entry(AH, next_work_item, false); + if (do_now) + { + /* OK, restore the item and update its dependencies */ + ahlog(AH, 1, "processing item %d %s %s\n", + next_work_item->dumpId, + next_work_item->desc, next_work_item->tag); - /* there should be no touch of ready_list here, so pass NULL */ - reduce_dependencies(AH, next_work_item, NULL); + (void) restore_toc_entry(AH, next_work_item, false); + + /* Reduce dependencies, but don't move anything to ready_list */ + reduce_dependencies(AH, next_work_item, NULL); + } + else + { + /* Nope, so add it to pending_list */ + par_list_append(pending_list, next_work_item); + } } /* @@ -3751,91 +3878,60 @@ restore_toc_entries_prefork(ArchiveHandle *AH) /* * Main engine for parallel restore. * - * Work is done in three phases. - * First we process all SECTION_PRE_DATA tocEntries, in a single connection, - * just as for a standard restore. This is done in restore_toc_entries_prefork(). - * Second we process the remaining non-ACL steps in parallel worker children - * (threads on Windows, processes on Unix), these fork off and set up their - * connections before we call restore_toc_entries_parallel_forked. - * Finally we process all the ACL entries in a single connection (that happens - * back in RestoreArchive). + * Parallel restore is done in three phases. In this second phase, + * we process entries by dispatching them to parallel worker children + * (processes on Unix, threads on Windows), each of which connects + * separately to the database. Inter-entry dependencies are respected, + * and so is the RestorePass multi-pass structure. When we can no longer + * make any entries ready to process, we exit. Normally, there will be + * nothing left to do; but if there is, the third phase will mop up. */ static void restore_toc_entries_parallel(ArchiveHandle *AH, ParallelState *pstate, TocEntry *pending_list) { - int work_status; - bool skipped_some; TocEntry ready_list; TocEntry *next_work_item; - int ret_child; ahlog(AH, 2, "entering restore_toc_entries_parallel\n"); /* - * Initialize the lists of ready items, the list for pending items has - * already been initialized in the caller. After this setup, the pending - * list is everything that needs to be done but is blocked by one or more - * dependencies, while the ready list contains items that have no - * remaining dependencies. Note: we don't yet filter out entries that - * aren't going to be restored. They might participate in dependency - * chains connecting entries that should be restored, so we treat them as - * live until we actually process them. + * The pending_list contains all items that we need to restore. Move all + * items that are available to process immediately into the ready_list. + * After this setup, the pending list is everything that needs to be done + * but is blocked by one or more dependencies, while the ready list + * contains items that have no remaining dependencies and are OK to + * process in the current restore pass. */ par_list_header_init(&ready_list); - skipped_some = false; - for (next_work_item = AH->toc->next; next_work_item != AH->toc; next_work_item = next_work_item->next) - { - /* NB: process-or-continue logic must be the inverse of loop above */ - if (next_work_item->section == SECTION_PRE_DATA) - { - /* All PRE_DATA items were dealt with above */ - continue; - } - if (next_work_item->section == SECTION_DATA || - next_work_item->section == SECTION_POST_DATA) - { - /* set this flag at same point that previous loop did */ - skipped_some = true; - } - else - { - /* SECTION_NONE items must be processed if previous loop didn't */ - if (!skipped_some) - continue; - } - - if (next_work_item->depCount > 0) - par_list_append(pending_list, next_work_item); - else - par_list_append(&ready_list, next_work_item); - } + AH->restorePass = RESTORE_PASS_MAIN; + move_to_ready_list(pending_list, &ready_list, AH->restorePass); /* * main parent loop * * Keep going until there is no worker still running AND there is no work - * left to be done. + * left to be done. Note invariant: at top of loop, there should always + * be at least one worker available to dispatch a job to. */ - ahlog(AH, 1, "entering main parallel loop\n"); - while ((next_work_item = get_next_work_item(AH, &ready_list, pstate)) != NULL || - !IsEveryWorkerIdle(pstate)) + for (;;) { + /* Look for an item ready to be dispatched to a worker */ + next_work_item = get_next_work_item(AH, &ready_list, pstate); if (next_work_item != NULL) { /* If not to be restored, don't waste time launching a worker */ - if ((next_work_item->reqs & (REQ_SCHEMA | REQ_DATA)) == 0 || - _tocEntryIsACL(next_work_item)) + if ((next_work_item->reqs & (REQ_SCHEMA | REQ_DATA)) == 0) { ahlog(AH, 1, "skipping item %d %s %s\n", next_work_item->dumpId, next_work_item->desc, next_work_item->tag); - + /* Drop it from ready_list, and update its dependencies */ par_list_remove(next_work_item); reduce_dependencies(AH, next_work_item, &ready_list); - + /* Loop around to see if anything else can be dispatched */ continue; } @@ -3843,18 +3939,40 @@ restore_toc_entries_parallel(ArchiveHandle *AH, ParallelState *pstate, next_work_item->dumpId, next_work_item->desc, next_work_item->tag); + /* Remove it from ready_list, and dispatch to some worker */ par_list_remove(next_work_item); DispatchJobForTocEntry(AH, pstate, next_work_item, ACT_RESTORE); } + else if (IsEveryWorkerIdle(pstate)) + { + /* + * Nothing is ready and no worker is running, so we're done with + * the current pass or maybe with the whole process. + */ + if (AH->restorePass == RESTORE_PASS_LAST) + break; /* No more parallel processing is possible */ + + /* Advance to next restore pass */ + AH->restorePass++; + /* That probably allows some stuff to be made ready */ + move_to_ready_list(pending_list, &ready_list, AH->restorePass); + /* Loop around to see if anything's now ready */ + continue; + } else { - /* at least one child is working and we have nothing ready. */ + /* + * We have nothing ready, but at least one child is working, so + * wait for some subjob to finish. + */ } for (;;) { int nTerm = 0; + int ret_child; + int work_status; /* * In order to reduce dependencies as soon as possible and @@ -3895,9 +4013,21 @@ restore_toc_entries_parallel(ArchiveHandle *AH, ParallelState *pstate, } } + /* There should now be nothing in ready_list. */ + Assert(ready_list.par_next == &ready_list); + ahlog(AH, 1, "finished main parallel loop\n"); } +/* + * Main engine for parallel restore. + * + * Parallel restore is done in three phases. In this third phase, + * we mop up any remaining TOC entries by processing them serially. + * This phase normally should have nothing to do, but if we've somehow + * gotten stuck due to circular dependencies or some such, this provides + * at least some chance of completing the restore successfully. + */ static void restore_toc_entries_postfork(ArchiveHandle *AH, TocEntry *pending_list) { @@ -3917,9 +4047,10 @@ restore_toc_entries_postfork(ArchiveHandle *AH, TocEntry *pending_list) _doSetFixedOutputState(AH); /* - * Make sure there is no non-ACL work left due to, say, circular - * dependencies, or some other pathological condition. If so, do it in the - * single parent connection. + * Make sure there is no work left due to, say, circular dependencies, or + * some other pathological condition. If so, do it in the single parent + * connection. We don't sweat about RestorePass ordering; it's likely we + * already violated that. */ for (te = pending_list->par_next; te != pending_list; te = te->par_next) { @@ -3927,8 +4058,6 @@ restore_toc_entries_postfork(ArchiveHandle *AH, TocEntry *pending_list) te->dumpId, te->desc, te->tag); (void) restore_toc_entry(AH, te, false); } - - /* The ACLs will be handled back in RestoreArchive. */ } /* @@ -3987,6 +4116,36 @@ par_list_remove(TocEntry *te) } +/* + * Move all immediately-ready items from pending_list to ready_list. + * + * Items are considered ready if they have no remaining dependencies and + * they belong in the current restore pass. (See also reduce_dependencies, + * which applies the same logic one-at-a-time.) + */ +static void +move_to_ready_list(TocEntry *pending_list, TocEntry *ready_list, + RestorePass pass) +{ + TocEntry *te; + TocEntry *next_te; + + for (te = pending_list->par_next; te != pending_list; te = next_te) + { + /* must save list link before possibly moving te to other list */ + next_te = te->par_next; + + if (te->depCount == 0 && + _tocEntryRestorePass(te) == pass) + { + /* Remove it from pending_list ... */ + par_list_remove(te); + /* ... and add to ready_list */ + par_list_append(ready_list, te); + } + } +} + /* * Find the next work item (if any) that is capable of being run now. * @@ -4363,7 +4522,7 @@ identify_locking_dependencies(ArchiveHandle *AH, TocEntry *te) /* * Remove the specified TOC entry from the depCounts of items that depend on * it, thereby possibly making them ready-to-run. Any pending item that - * becomes ready should be moved to the ready list. + * becomes ready should be moved to the ready_list, if that's provided. */ static void reduce_dependencies(ArchiveHandle *AH, TocEntry *te, TocEntry *ready_list) @@ -4376,10 +4535,23 @@ reduce_dependencies(ArchiveHandle *AH, TocEntry *te, TocEntry *ready_list) { TocEntry *otherte = AH->tocsByDumpId[te->revDeps[i]]; + Assert(otherte->depCount > 0); otherte->depCount--; - if (otherte->depCount == 0 && otherte->par_prev != NULL) + + /* + * It's ready if it has no remaining dependencies, and it belongs in + * the current restore pass, and it is currently a member of the + * pending list (that check is needed to prevent double restore in + * some cases where a list-file forces out-of-order restoring). + * However, if ready_list == NULL then caller doesn't want any list + * memberships changed. + */ + if (otherte->depCount == 0 && + _tocEntryRestorePass(otherte) == AH->restorePass && + otherte->par_prev != NULL && + ready_list != NULL) { - /* It must be in the pending list, so remove it ... */ + /* Remove it from pending list ... */ par_list_remove(otherte); /* ... and add to ready_list */ par_list_append(ready_list, otherte); diff --git a/src/bin/pg_dump/pg_backup_archiver.h b/src/bin/pg_dump/pg_backup_archiver.h index 0376f2bff7..5eb1fc4949 100644 --- a/src/bin/pg_dump/pg_backup_archiver.h +++ b/src/bin/pg_dump/pg_backup_archiver.h @@ -200,6 +200,30 @@ typedef enum OUTPUT_OTHERDATA /* writing data as INSERT commands */ } ArchiverOutput; +/* + * For historical reasons, ACL items are interspersed with everything else in + * a dump file's TOC; typically they're right after the object they're for. + * However, we need to restore data before ACLs, as otherwise a read-only + * table (ie one where the owner has revoked her own INSERT privilege) causes + * data restore failures. On the other hand, matview REFRESH commands should + * come out after ACLs, as otherwise non-superuser-owned matviews might not + * be able to execute. (If the permissions at the time of dumping would not + * allow a REFRESH, too bad; we won't fix that for you.) These considerations + * force us to make three passes over the TOC, restoring the appropriate + * subset of items in each pass. We assume that the dependency sort resulted + * in an appropriate ordering of items within each subset. + * XXX This mechanism should be superseded by tracking dependencies on ACLs + * properly; but we'll still need it for old dump files even after that. + */ +typedef enum +{ + RESTORE_PASS_MAIN = 0, /* Main pass (most TOC item types) */ + RESTORE_PASS_ACL, /* ACL item types */ + RESTORE_PASS_REFRESH /* Matview REFRESH items */ + +#define RESTORE_PASS_LAST RESTORE_PASS_REFRESH +} RestorePass; + typedef enum { REQ_SCHEMA = 0x01, /* want schema */ @@ -331,6 +355,7 @@ struct _archiveHandle int noTocComments; ArchiverStage stage; ArchiverStage lastErrorStage; + RestorePass restorePass; /* used only during parallel restore */ struct _tocEntry *currentTE; struct _tocEntry *lastErrorTE; }; diff --git a/src/bin/pg_dump/pg_backup_custom.c b/src/bin/pg_dump/pg_backup_custom.c index 66329dc90c..838e845748 100644 --- a/src/bin/pg_dump/pg_backup_custom.c +++ b/src/bin/pg_dump/pg_backup_custom.c @@ -203,7 +203,7 @@ InitArchiveFmt_Custom(ArchiveHandle *AH) * * Optional. * - * Set up extrac format-related TOC data. + * Set up extract format-related TOC data. */ static void _ArchiveEntry(ArchiveHandle *AH, TocEntry *te) diff --git a/src/bin/pg_dump/pg_backup_db.c b/src/bin/pg_dump/pg_backup_db.c index d2a3de3c5d..1cf5a505e0 100644 --- a/src/bin/pg_dump/pg_backup_db.c +++ b/src/bin/pg_dump/pg_backup_db.c @@ -360,12 +360,12 @@ DisconnectDatabase(Archive *AHX) if (AH->connCancel) { /* - * If we have an active query, send a cancel before closing. This is - * of no use for a normal exit, but might be helpful during - * exit_horribly(). + * If we have an active query, send a cancel before closing, ignoring + * any errors. This is of no use for a normal exit, but might be + * helpful during exit_horribly(). */ if (PQtransactionStatus(AH->connection) == PQTRANS_ACTIVE) - PQcancel(AH->connCancel, errbuf, sizeof(errbuf)); + (void) PQcancel(AH->connCancel, errbuf, sizeof(errbuf)); /* * Prevent signal handler from sending a cancel after this. diff --git a/src/bin/pg_dump/pg_backup_directory.c b/src/bin/pg_dump/pg_backup_directory.c index e52f12258a..6673d4a3cd 100644 --- a/src/bin/pg_dump/pg_backup_directory.c +++ b/src/bin/pg_dump/pg_backup_directory.c @@ -357,7 +357,9 @@ _WriteData(ArchiveHandle *AH, const void *data, size_t dLen) lclContext *ctx = (lclContext *) AH->formatData; if (dLen > 0 && cfwrite(data, dLen, ctx->dataFH) != dLen) - WRITE_ERROR_EXIT; + exit_horribly(modulename, "could not write to output file: %s\n", + get_cfp_error(ctx->dataFH)); + return; } @@ -495,7 +497,8 @@ _WriteByte(ArchiveHandle *AH, const int i) lclContext *ctx = (lclContext *) AH->formatData; if (cfwrite(&c, 1, ctx->dataFH) != 1) - WRITE_ERROR_EXIT; + exit_horribly(modulename, "could not write to output file: %s\n", + get_cfp_error(ctx->dataFH)); return 1; } @@ -524,7 +527,8 @@ _WriteBuf(ArchiveHandle *AH, const void *buf, size_t len) lclContext *ctx = (lclContext *) AH->formatData; if (cfwrite(buf, len, ctx->dataFH) != len) - WRITE_ERROR_EXIT; + exit_horribly(modulename, "could not write to output file: %s\n", + get_cfp_error(ctx->dataFH)); return; } diff --git a/src/bin/pg_dump/pg_backup_tar.c b/src/bin/pg_dump/pg_backup_tar.c index 8dfc6a98de..e9d54354ad 100644 --- a/src/bin/pg_dump/pg_backup_tar.c +++ b/src/bin/pg_dump/pg_backup_tar.c @@ -557,8 +557,20 @@ _tarReadRaw(ArchiveHandle *AH, void *buf, size_t len, TAR_MEMBER *th, FILE *fh) { res = GZREAD(&((char *) buf)[used], 1, len, th->zFH); if (res != len && !GZEOF(th->zFH)) + { +#ifdef HAVE_LIBZ + int errnum; + const char *errmsg = gzerror(th->zFH, &errnum); + exit_horribly(modulename, - "could not read from input file: %s\n", strerror(errno)); + "could not read from input file: %s\n", + errnum == Z_ERRNO ? strerror(errno) : errmsg); +#else + exit_horribly(modulename, + "could not read from input file: %s\n", + strerror(errno)); +#endif + } } else { diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index fde7f59c3d..104a9f14d8 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -96,7 +96,10 @@ bool g_verbose; /* User wants verbose narration of our /* subquery used to convert user ID (eg, datdba) to user name */ static const char *username_subquery; -/* obsolete as of 7.3: */ +/* + * For 8.0 and earlier servers, pulled from pg_database, for 8.1+ we use + * FirstNormalObjectId - 1. + */ static Oid g_last_builtin_oid; /* value of the last builtin oid */ /* The specified names/patterns should to match at least one entity */ @@ -613,7 +616,7 @@ main(int argc, char **argv) || numWorkers > MAXIMUM_WAIT_OBJECTS #endif ) - exit_horribly(NULL, "%s: invalid number of parallel jobs\n", progname); + exit_horribly(NULL, "invalid number of parallel jobs\n"); /* Parallel backup only in the directory archive format so far */ if (archiveFormat != archDirectory && numWorkers > 1) @@ -683,17 +686,24 @@ main(int argc, char **argv) exit_horribly(NULL, "Exported snapshots are not supported by this server version.\n"); - /* Find the last built-in OID, if needed */ - if (fout->remoteVersion < 70300) + /* + * Find the last built-in OID, if needed (prior to 8.1) + * + * With 8.1 and above, we can just use FirstNormalObjectId - 1. + */ + if (fout->remoteVersion < 80100) { if (fout->remoteVersion >= 70100) g_last_builtin_oid = findLastBuiltinOid_V71(fout, PQdb(GetConnection(fout))); else g_last_builtin_oid = findLastBuiltinOid_V70(fout); - if (g_verbose) - write_msg(NULL, "last built-in OID is %u\n", g_last_builtin_oid); } + else + g_last_builtin_oid = FirstNormalObjectId - 1; + + if (g_verbose) + write_msg(NULL, "last built-in OID is %u\n", g_last_builtin_oid); /* Expand schema selection patterns into OID lists */ if (schema_include_patterns.head != NULL) @@ -752,7 +762,15 @@ main(int argc, char **argv) getTableDataFKConstraints(); } - if (dopt.outputBlobs) + /* + * In binary-upgrade mode, we do not have to worry about the actual blob + * data or the associated metadata that resides in the pg_largeobject and + * pg_largeobject_metadata tables, respectivly. + * + * However, we do need to collect blob information as there may be + * comments or other information on blobs that we do need to dump out. + */ + if (dopt.outputBlobs || dopt.binary_upgrade) getBlobs(fout); /* @@ -835,6 +853,7 @@ main(int argc, char **argv) ropt->lockWaitTimeout = dopt.lockWaitTimeout; ropt->include_everything = dopt.include_everything; ropt->enable_row_security = dopt.enable_row_security; + ropt->binary_upgrade = dopt.binary_upgrade; if (compressLevel == -1) ropt->compression = 0; @@ -1209,7 +1228,7 @@ expand_schema_name_patterns(Archive *fout, res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK); if (strict_names && PQntuples(res) == 0) - exit_horribly(NULL, "no matching tables were found for pattern \"%s\"\n", cell->val); + exit_horribly(NULL, "no matching schemas were found for pattern \"%s\"\n", cell->val); for (i = 0; i < PQntuples(res); i++) { @@ -1507,7 +1526,7 @@ selectDumpableCast(CastInfo *cast, Archive *fout) * This would be DUMP_COMPONENT_ACL for from-initdb casts, but they do not * support ACLs currently. */ - if (cast->dobj.catId.oid < (Oid) FirstNormalObjectId) + if (cast->dobj.catId.oid <= (Oid) g_last_builtin_oid) cast->dobj.dump = DUMP_COMPONENT_NONE; else cast->dobj.dump = fout->dopt->include_everything ? @@ -1539,7 +1558,7 @@ selectDumpableProcLang(ProcLangInfo *plang, Archive *fout) plang->dobj.dump = DUMP_COMPONENT_NONE; else { - if (plang->dobj.catId.oid < (Oid) FirstNormalObjectId) + if (plang->dobj.catId.oid <= (Oid) g_last_builtin_oid) plang->dobj.dump = fout->remoteVersion < 90600 ? DUMP_COMPONENT_NONE : DUMP_COMPONENT_ACL; else @@ -1565,7 +1584,7 @@ selectDumpableAccessMethod(AccessMethodInfo *method, Archive *fout) * This would be DUMP_COMPONENT_ACL for from-initdb access methods, but * they do not support ACLs currently. */ - if (method->dobj.catId.oid < (Oid) FirstNormalObjectId) + if (method->dobj.catId.oid <= (Oid) g_last_builtin_oid) method->dobj.dump = DUMP_COMPONENT_NONE; else method->dobj.dump = fout->dopt->include_everything ? @@ -1590,7 +1609,7 @@ selectDumpableExtension(ExtensionInfo *extinfo, DumpOptions *dopt) * change permissions on those objects, if they wish to, and have those * changes preserved. */ - if (dopt->binary_upgrade && extinfo->dobj.catId.oid < (Oid) FirstNormalObjectId) + if (dopt->binary_upgrade && extinfo->dobj.catId.oid <= (Oid) g_last_builtin_oid) extinfo->dobj.dump = extinfo->dobj.dump_contains = DUMP_COMPONENT_ACL; else extinfo->dobj.dump = extinfo->dobj.dump_contains = @@ -2928,6 +2947,20 @@ getBlobs(Archive *fout) PQgetisnull(res, i, i_initlomacl) && PQgetisnull(res, i, i_initrlomacl)) binfo[i].dobj.dump &= ~DUMP_COMPONENT_ACL; + + /* + * In binary-upgrade mode for blobs, we do *not* dump out the data or + * the ACLs, should any exist. The data and ACL (if any) will be + * copied by pg_upgrade, which simply copies the pg_largeobject and + * pg_largeobject_metadata tables. + * + * We *do* dump out the definition of the blob because we need that to + * make the restoration of the comments, and anything else, work since + * pg_upgrade copies the files behind pg_largeobject and + * pg_largeobject_metadata after the dump is restored. + */ + if (dopt->binary_upgrade) + binfo[i].dobj.dump &= ~(DUMP_COMPONENT_DATA | DUMP_COMPONENT_ACL); } /* @@ -3605,13 +3638,38 @@ getNamespaces(Archive *fout, int *numNamespaces) "LEFT JOIN pg_init_privs pip " "ON (n.oid = pip.objoid " "AND pip.classoid = 'pg_namespace'::regclass " - "AND pip.objsubid = 0) ", + "AND pip.objsubid = 0", username_subquery, acl_subquery->data, racl_subquery->data, init_acl_subquery->data, init_racl_subquery->data); + /* + * When we are doing a 'clean' run, we will be dropping and recreating + * the 'public' schema (the only object which has that kind of + * treatment in the backend and which has an entry in pg_init_privs) + * and therefore we should not consider any initial privileges in + * pg_init_privs in that case. + * + * See pg_backup_archiver.c:_printTocEntry() for the details on why + * the public schema is special in this regard. + * + * Note that if the public schema is dropped and re-created, this is + * essentially a no-op because the new public schema won't have an + * entry in pg_init_privs anyway, as the entry will be removed when + * the public schema is dropped. + * + * Further, we have to handle the case where the public schema does + * not exist at all. + */ + if (dopt->outputClean) + appendPQExpBuffer(query," AND pip.objoid <> " + "coalesce((select oid from pg_namespace " + "where nspname = 'public'),0)"); + + appendPQExpBuffer(query,") "); + destroyPQExpBuffer(acl_subquery); destroyPQExpBuffer(racl_subquery); destroyPQExpBuffer(init_acl_subquery); @@ -4968,8 +5026,11 @@ getFuncs(Archive *fout, int *numFuncs) * 3. Otherwise, we normally exclude functions in pg_catalog. However, if * they're members of extensions and we are in binary-upgrade mode then * include them, since we want to dump extension members individually in - * that mode. Also, in 9.6 and up, include functions in pg_catalog if - * they have an ACL different from what's shown in pg_init_privs. + * that mode. Also, if they are used by casts or transforms then we need + * to gather the information about them, though they won't be dumped if + * they are built-in. Also, in 9.6 and up, include functions in + * pg_catalog if they have an ACL different from what's shown in + * pg_init_privs. */ if (fout->remoteVersion >= 90600) { @@ -5003,12 +5064,21 @@ getFuncs(Archive *fout, int *numFuncs) "\n AND (" "\n pronamespace != " "(SELECT oid FROM pg_namespace " - "WHERE nspname = 'pg_catalog')", + "WHERE nspname = 'pg_catalog')" + "\n OR EXISTS (SELECT 1 FROM pg_cast" + "\n WHERE pg_cast.oid > %u " + "\n AND p.oid = pg_cast.castfunc)" + "\n OR EXISTS (SELECT 1 FROM pg_transform" + "\n WHERE pg_transform.oid > %u AND " + "\n (p.oid = pg_transform.trffromsql" + "\n OR p.oid = pg_transform.trftosql))", acl_subquery->data, racl_subquery->data, initacl_subquery->data, initracl_subquery->data, - username_subquery); + username_subquery, + g_last_builtin_oid, + g_last_builtin_oid); if (dopt->binary_upgrade) appendPQExpBufferStr(query, "\n OR EXISTS(SELECT 1 FROM pg_depend WHERE " @@ -5042,11 +5112,24 @@ getFuncs(Archive *fout, int *numFuncs) "\n AND NOT EXISTS (SELECT 1 FROM pg_depend " "WHERE classid = 'pg_proc'::regclass AND " "objid = p.oid AND deptype = 'i')"); - appendPQExpBufferStr(query, + appendPQExpBuffer(query, "\n AND (" "\n pronamespace != " "(SELECT oid FROM pg_namespace " - "WHERE nspname = 'pg_catalog')"); + "WHERE nspname = 'pg_catalog')" + "\n OR EXISTS (SELECT 1 FROM pg_cast" + "\n WHERE pg_cast.oid > '%u'::oid" + "\n AND p.oid = pg_cast.castfunc)", + g_last_builtin_oid); + + if (fout->remoteVersion >= 90500) + appendPQExpBuffer(query, + "\n OR EXISTS (SELECT 1 FROM pg_transform" + "\n WHERE pg_transform.oid > '%u'::oid" + "\n AND (p.oid = pg_transform.trffromsql" + "\n OR p.oid = pg_transform.trftosql))", + g_last_builtin_oid); + if (dopt->binary_upgrade && fout->remoteVersion >= 90100) appendPQExpBufferStr(query, "\n OR EXISTS(SELECT 1 FROM pg_depend WHERE " @@ -6054,6 +6137,9 @@ getOwnedSeqs(Archive *fout, TableInfo tblinfo[], int numTables) continue; /* not an owned sequence */ owning_tab = findTableByOid(seqinfo->owning_tab); + if (owning_tab == NULL) + exit_horribly(NULL, "failed sanity check, parent table OID %u of sequence OID %u not found\n", + seqinfo->owning_tab, seqinfo->dobj.catId.oid); /* * We need to dump the components that are being dumped for the table @@ -7222,7 +7308,7 @@ getProcLangs(Archive *fout, int *numProcLangs) "FROM pg_language l " "LEFT JOIN pg_init_privs pip ON " "(l.oid = pip.objoid " - "AND pip.classoid = 'pg_type'::regclass " + "AND pip.classoid = 'pg_language'::regclass " "AND pip.objsubid = 0) " "WHERE l.lanispl " "ORDER BY l.oid", @@ -8916,6 +9002,9 @@ getDefaultACLs(Archive *fout, int *numDefaultACLs) int i_defaclnamespace; int i_defaclobjtype; int i_defaclacl; + int i_rdefaclacl; + int i_initdefaclacl; + int i_initrdefaclacl; int i, ntups; @@ -8930,13 +9019,50 @@ getDefaultACLs(Archive *fout, int *numDefaultACLs) /* Make sure we are in proper schema */ selectSourceSchema(fout, "pg_catalog"); - appendPQExpBuffer(query, "SELECT oid, tableoid, " - "(%s defaclrole) AS defaclrole, " - "defaclnamespace, " - "defaclobjtype, " - "defaclacl " - "FROM pg_default_acl", - username_subquery); + if (fout->remoteVersion >= 90600) + { + PQExpBuffer acl_subquery = createPQExpBuffer(); + PQExpBuffer racl_subquery = createPQExpBuffer(); + PQExpBuffer initacl_subquery = createPQExpBuffer(); + PQExpBuffer initracl_subquery = createPQExpBuffer(); + + buildACLQueries(acl_subquery, racl_subquery, initacl_subquery, + initracl_subquery, "defaclacl", "defaclrole", + "CASE WHEN defaclobjtype = 'S' THEN 's' ELSE defaclobjtype END::\"char\"", + dopt->binary_upgrade); + + appendPQExpBuffer(query, "SELECT d.oid, d.tableoid, " + "(%s d.defaclrole) AS defaclrole, " + "d.defaclnamespace, " + "d.defaclobjtype, " + "%s AS defaclacl, " + "%s AS rdefaclacl, " + "%s AS initdefaclacl, " + "%s AS initrdefaclacl " + "FROM pg_default_acl d " + "LEFT JOIN pg_init_privs pip ON " + "(d.oid = pip.objoid " + "AND pip.classoid = 'pg_default_acl'::regclass " + "AND pip.objsubid = 0) ", + username_subquery, + acl_subquery->data, + racl_subquery->data, + initacl_subquery->data, + initracl_subquery->data); + } + else + { + appendPQExpBuffer(query, "SELECT oid, tableoid, " + "(%s defaclrole) AS defaclrole, " + "defaclnamespace, " + "defaclobjtype, " + "defaclacl, " + "NULL AS rdefaclacl, " + "NULL AS initdefaclacl, " + "NULL AS initrdefaclacl " + "FROM pg_default_acl", + username_subquery); + } res = ExecuteSqlQuery(fout, query->data, PGRES_TUPLES_OK); @@ -8951,6 +9077,9 @@ getDefaultACLs(Archive *fout, int *numDefaultACLs) i_defaclnamespace = PQfnumber(res, "defaclnamespace"); i_defaclobjtype = PQfnumber(res, "defaclobjtype"); i_defaclacl = PQfnumber(res, "defaclacl"); + i_rdefaclacl = PQfnumber(res, "rdefaclacl"); + i_initdefaclacl = PQfnumber(res, "initdefaclacl"); + i_initrdefaclacl = PQfnumber(res, "initrdefaclacl"); for (i = 0; i < ntups; i++) { @@ -8972,6 +9101,9 @@ getDefaultACLs(Archive *fout, int *numDefaultACLs) daclinfo[i].defaclrole = pg_strdup(PQgetvalue(res, i, i_defaclrole)); daclinfo[i].defaclobjtype = *(PQgetvalue(res, i, i_defaclobjtype)); daclinfo[i].defaclacl = pg_strdup(PQgetvalue(res, i, i_defaclacl)); + daclinfo[i].rdefaclacl = pg_strdup(PQgetvalue(res, i, i_rdefaclacl)); + daclinfo[i].initdefaclacl = pg_strdup(PQgetvalue(res, i, i_initdefaclacl)); + daclinfo[i].initrdefaclacl = pg_strdup(PQgetvalue(res, i, i_initrdefaclacl)); /* Decide whether we want to dump it */ selectDumpableDefaultACL(&(daclinfo[i]), dopt); @@ -9019,7 +9151,8 @@ dumpComment(Archive *fout, const char *target, } else { - if (dopt->schemaOnly) + /* We do dump blob comments in binary-upgrade mode */ + if (dopt->schemaOnly && !dopt->binary_upgrade) return; } @@ -9571,8 +9704,8 @@ dumpExtension(Archive *fout, ExtensionInfo *extinfo) /* * We unconditionally create the extension, so we must drop it if it * exists. This could happen if the user deleted 'plpgsql' and then - * readded it, causing its oid to be greater than FirstNormalObjectId. - * The FirstNormalObjectId test was kept to avoid repeatedly dropping + * readded it, causing its oid to be greater than g_last_builtin_oid. + * The g_last_builtin_oid test was kept to avoid repeatedly dropping * and recreating extensions like 'plpgsql'. */ appendPQExpBuffer(q, "DROP EXTENSION IF EXISTS %s;\n", qextname); @@ -11129,12 +11262,12 @@ dumpProcLang(Archive *fout, ProcLangInfo *plang) /* Dump Proc Lang Comments and Security Labels */ if (plang->dobj.dump & DUMP_COMPONENT_COMMENT) dumpComment(fout, labelq->data, - NULL, "", + lanschema, plang->lanowner, plang->dobj.catId, 0, plang->dobj.dumpId); if (plang->dobj.dump & DUMP_COMPONENT_SECLABEL) dumpSecLabel(fout, labelq->data, - NULL, "", + lanschema, plang->lanowner, plang->dobj.catId, 0, plang->dobj.dumpId); if (plang->lanpltrusted && plang->dobj.dump & DUMP_COMPONENT_ACL) @@ -11861,7 +11994,8 @@ dumpCast(Archive *fout, CastInfo *cast) { funcInfo = findFuncByOid(cast->castfunc); if (funcInfo == NULL) - return; + exit_horribly(NULL, "could not find function definition for function with OID %u\n", + cast->castfunc); } /* @@ -11935,7 +12069,7 @@ dumpCast(Archive *fout, CastInfo *cast) /* Dump Cast Comments */ if (cast->dobj.dump & DUMP_COMPONENT_COMMENT) dumpComment(fout, labelq->data, - NULL, "", + "pg_catalog", "", cast->dobj.catId, 0, cast->dobj.dumpId); free(sourceType); @@ -11970,13 +12104,15 @@ dumpTransform(Archive *fout, TransformInfo *transform) { fromsqlFuncInfo = findFuncByOid(transform->trffromsql); if (fromsqlFuncInfo == NULL) - return; + exit_horribly(NULL, "could not find function definition for function with OID %u\n", + transform->trffromsql); } if (OidIsValid(transform->trftosql)) { tosqlFuncInfo = findFuncByOid(transform->trftosql); if (tosqlFuncInfo == NULL) - return; + exit_horribly(NULL, "could not find function definition for function with OID %u\n", + transform->trftosql); } /* Make sure we are in proper schema (needed for getFormattedTypeName) */ @@ -12057,7 +12193,7 @@ dumpTransform(Archive *fout, TransformInfo *transform) /* Dump Transform Comments */ if (transform->dobj.dump & DUMP_COMPONENT_COMMENT) dumpComment(fout, labelq->data, - NULL, "", + "pg_catalog", "", transform->dobj.catId, 0, transform->dobj.dumpId); free(lanname); @@ -12640,7 +12776,8 @@ dumpOpclass(Archive *fout, OpclassInfo *opcinfo) i_opcfamilynsp = PQfnumber(res, "opcfamilynsp"); i_amname = PQfnumber(res, "amname"); - opcintype = PQgetvalue(res, 0, i_opcintype); + /* opcintype may still be needed after we PQclear res */ + opcintype = pg_strdup(PQgetvalue(res, 0, i_opcintype)); opckeytype = PQgetvalue(res, 0, i_opckeytype); opcdefault = PQgetvalue(res, 0, i_opcdefault); /* opcfamily will still be needed after we PQclear res */ @@ -12874,6 +13011,15 @@ dumpOpclass(Archive *fout, OpclassInfo *opcinfo) PQclear(res); + /* + * If needComma is still false it means we haven't added anything after + * the AS keyword. To avoid printing broken SQL, append a dummy STORAGE + * clause with the same datatype. This isn't sanctioned by the + * documentation, but actually DefineOpClass will treat it as a no-op. + */ + if (!needComma) + appendPQExpBuffer(q, "STORAGE %s", opcintype); + appendPQExpBufferStr(q, ";\n"); appendPQExpBuffer(labelq, "OPERATOR CLASS %s", @@ -12898,9 +13044,11 @@ dumpOpclass(Archive *fout, OpclassInfo *opcinfo) /* Dump Operator Class Comments */ if (opcinfo->dobj.dump & DUMP_COMPONENT_COMMENT) dumpComment(fout, labelq->data, - NULL, opcinfo->rolname, + opcinfo->dobj.namespace->dobj.name, opcinfo->rolname, opcinfo->dobj.catId, 0, opcinfo->dobj.dumpId); + free(opcintype); + free(opcfamily); free(amname); destroyPQExpBuffer(query); destroyPQExpBuffer(q); @@ -13171,7 +13319,7 @@ dumpOpfamily(Archive *fout, OpfamilyInfo *opfinfo) /* Dump Operator Family Comments */ if (opfinfo->dobj.dump & DUMP_COMPONENT_COMMENT) dumpComment(fout, labelq->data, - NULL, opfinfo->rolname, + opfinfo->dobj.namespace->dobj.name, opfinfo->rolname, opfinfo->dobj.catId, 0, opfinfo->dobj.dumpId); free(amname); @@ -13943,7 +14091,7 @@ dumpTSParser(Archive *fout, TSParserInfo *prsinfo) /* Dump Parser Comments */ if (prsinfo->dobj.dump & DUMP_COMPONENT_COMMENT) dumpComment(fout, labelq->data, - NULL, "", + prsinfo->dobj.namespace->dobj.name, "", prsinfo->dobj.catId, 0, prsinfo->dobj.dumpId); destroyPQExpBuffer(q); @@ -14033,7 +14181,7 @@ dumpTSDictionary(Archive *fout, TSDictInfo *dictinfo) /* Dump Dictionary Comments */ if (dictinfo->dobj.dump & DUMP_COMPONENT_COMMENT) dumpComment(fout, labelq->data, - NULL, dictinfo->rolname, + dictinfo->dobj.namespace->dobj.name, dictinfo->rolname, dictinfo->dobj.catId, 0, dictinfo->dobj.dumpId); destroyPQExpBuffer(q); @@ -14102,7 +14250,7 @@ dumpTSTemplate(Archive *fout, TSTemplateInfo *tmplinfo) /* Dump Template Comments */ if (tmplinfo->dobj.dump & DUMP_COMPONENT_COMMENT) dumpComment(fout, labelq->data, - NULL, "", + tmplinfo->dobj.namespace->dobj.name, "", tmplinfo->dobj.catId, 0, tmplinfo->dobj.dumpId); destroyPQExpBuffer(q); @@ -14233,7 +14381,7 @@ dumpTSConfig(Archive *fout, TSConfigInfo *cfginfo) /* Dump Configuration Comments */ if (cfginfo->dobj.dump & DUMP_COMPONENT_COMMENT) dumpComment(fout, labelq->data, - NULL, cfginfo->rolname, + cfginfo->dobj.namespace->dobj.name, cfginfo->rolname, cfginfo->dobj.catId, 0, cfginfo->dobj.dumpId); destroyPQExpBuffer(q); @@ -14574,6 +14722,9 @@ dumpDefaultACL(Archive *fout, DefaultACLInfo *daclinfo) daclinfo->dobj.namespace != NULL ? daclinfo->dobj.namespace->dobj.name : NULL, daclinfo->defaclacl, + daclinfo->rdefaclacl, + daclinfo->initdefaclacl, + daclinfo->initrdefaclacl, daclinfo->defaclrole, fout->remoteVersion, q)) @@ -14608,10 +14759,20 @@ dumpDefaultACL(Archive *fout, DefaultACLInfo *daclinfo) * 'tag' is the tag for the archive entry (typ. unquoted name of object). * 'nspname' is the namespace the object is in (NULL if none). * 'owner' is the owner, NULL if there is no owner (for languages). - * 'acls' is the string read out of the fooacl system catalog field; - * it will be parsed here. - * 'racls' contains any initial ACLs that the object had which have now been - * revoked by the user, it will also be parsed here. + * 'acls' contains the ACL string of the object from the appropriate system + * catalog field; it will be passed to buildACLCommands for building the + * appropriate GRANT commands. + * 'racls' contains the ACL string of any initial-but-now-revoked ACLs of the + * object; it will be passed to buildACLCommands for building the + * appropriate REVOKE commands. + * 'initacls' In binary-upgrade mode, ACL string of the object's initial + * privileges, to be recorded into pg_init_privs + * 'initracls' In binary-upgrade mode, ACL string of the object's + * revoked-from-default privileges, to be recorded into pg_init_privs + * + * NB: initacls/initracls are needed because extensions can set privileges on + * an object during the extension's script file and we record those into + * pg_init_privs as that object's initial privileges. *---------- */ static void @@ -14713,7 +14874,8 @@ dumpSecLabel(Archive *fout, const char *target, } else { - if (dopt->schemaOnly) + /* We do dump blob security labels in binary-upgrade mode */ + if (dopt->schemaOnly && !dopt->binary_upgrade) return; } @@ -16284,10 +16446,10 @@ dumpTableConstraintComment(Archive *fout, ConstraintInfo *coninfo) } /* - * findLastBuiltInOid - + * findLastBuiltinOid - * find the last built in oid * - * For 7.1 and 7.2, we do this by retrieving datlastsysoid from the + * For 7.1 through 8.0, we do this by retrieving datlastsysoid from the * pg_database entry for the current database */ static Oid @@ -16309,7 +16471,7 @@ findLastBuiltinOid_V71(Archive *fout, const char *dbname) } /* - * findLastBuiltInOid - + * findLastBuiltinOid - * find the last built in oid * * For 7.0, we do this by assuming that the last thing that initdb does is to @@ -16499,7 +16661,11 @@ dumpSequence(Archive *fout, TableInfo *tbinfo) { TableInfo *owning_tab = findTableByOid(tbinfo->owning_tab); - if (owning_tab && owning_tab->dobj.dump & DUMP_COMPONENT_DEFINITION) + if (owning_tab == NULL) + exit_horribly(NULL, "failed sanity check, parent table OID %u of sequence OID %u not found\n", + tbinfo->owning_tab, tbinfo->dobj.catId.oid); + + if (owning_tab->dobj.dump & DUMP_COMPONENT_DEFINITION) { resetPQExpBuffer(query); appendPQExpBuffer(query, "ALTER SEQUENCE %s", @@ -16580,7 +16746,7 @@ dumpSequenceData(Archive *fout, TableDataInfo *tdinfo) appendPQExpBuffer(query, ", %s, %s);\n", last, (called ? "true" : "false")); - if (tbinfo->dobj.dump & DUMP_COMPONENT_DATA) + if (tdinfo->dobj.dump & DUMP_COMPONENT_DATA) ArchiveEntry(fout, nilCatalogId, createDumpId(), tbinfo->dobj.name, tbinfo->dobj.namespace->dobj.name, @@ -16822,6 +16988,7 @@ dumpEventTrigger(Archive *fout, EventTriggerInfo *evtinfo) { DumpOptions *dopt = fout->dopt; PQExpBuffer query; + PQExpBuffer delqry; PQExpBuffer labelq; /* Skip if not to be dumped */ @@ -16829,6 +16996,7 @@ dumpEventTrigger(Archive *fout, EventTriggerInfo *evtinfo) return; query = createPQExpBuffer(); + delqry = createPQExpBuffer(); labelq = createPQExpBuffer(); appendPQExpBufferStr(query, "CREATE EVENT TRIGGER "); @@ -16868,14 +17036,21 @@ dumpEventTrigger(Archive *fout, EventTriggerInfo *evtinfo) } appendPQExpBufferStr(query, ";\n"); } + + appendPQExpBuffer(delqry, "DROP EVENT TRIGGER %s;\n", + fmtId(evtinfo->dobj.name)); + appendPQExpBuffer(labelq, "EVENT TRIGGER %s", fmtId(evtinfo->dobj.name)); if (evtinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, evtinfo->dobj.catId, evtinfo->dobj.dumpId, - evtinfo->dobj.name, NULL, NULL, evtinfo->evtowner, false, + evtinfo->dobj.name, NULL, NULL, + evtinfo->evtowner, false, "EVENT TRIGGER", SECTION_POST_DATA, - query->data, "", NULL, NULL, 0, NULL, NULL); + query->data, delqry->data, NULL, + NULL, 0, + NULL, NULL); if (evtinfo->dobj.dump & DUMP_COMPONENT_COMMENT) dumpComment(fout, labelq->data, @@ -16883,6 +17058,7 @@ dumpEventTrigger(Archive *fout, EventTriggerInfo *evtinfo) evtinfo->dobj.catId, 0, evtinfo->dobj.dumpId); destroyPQExpBuffer(query); + destroyPQExpBuffer(delqry); destroyPQExpBuffer(labelq); } diff --git a/src/bin/pg_dump/pg_dump.h b/src/bin/pg_dump/pg_dump.h index 2bfa2d9742..f05cb3ffe1 100644 --- a/src/bin/pg_dump/pg_dump.h +++ b/src/bin/pg_dump/pg_dump.h @@ -524,6 +524,9 @@ typedef struct _defaultACLInfo char *defaclrole; char defaclobjtype; char *defaclacl; + char *rdefaclacl; + char *initdefaclacl; + char *initrdefaclacl; } DefaultACLInfo; typedef struct _blobInfo diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c index 54a9f48200..003a6704c6 100644 --- a/src/bin/pg_dump/pg_dumpall.c +++ b/src/bin/pg_dump/pg_dumpall.c @@ -549,6 +549,7 @@ help(void) printf(_("\nGeneral options:\n")); printf(_(" -f, --file=FILENAME output file name\n")); + printf(_(" -v, --verbose verbose mode\n")); printf(_(" -V, --version output version information, then exit\n")); printf(_(" --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n")); printf(_(" -?, --help show this help, then exit\n")); diff --git a/src/bin/pg_dump/pg_restore.c b/src/bin/pg_dump/pg_restore.c index fb08e6bb8e..41137a1b7d 100644 --- a/src/bin/pg_dump/pg_restore.c +++ b/src/bin/pg_dump/pg_restore.c @@ -325,6 +325,22 @@ main(int argc, char **argv) exit_nicely(1); } + if (numWorkers <= 0) + { + fprintf(stderr, _("%s: invalid number of parallel jobs\n"), progname); + exit(1); + } + + /* See comments in pg_dump.c */ +#ifdef WIN32 + if (numWorkers > MAXIMUM_WAIT_OBJECTS) + { + fprintf(stderr, _("%s: maximum number of parallel jobs is %d\n"), + progname, MAXIMUM_WAIT_OBJECTS); + exit(1); + } +#endif + /* Can't do single-txn mode with multiple connections */ if (opts->single_txn && numWorkers > 1) { @@ -397,16 +413,6 @@ main(int argc, char **argv) if (opts->tocFile) SortTocFromFile(AH); - /* See comments in pg_dump.c */ -#ifdef WIN32 - if (numWorkers > MAXIMUM_WAIT_OBJECTS) - { - fprintf(stderr, _("%s: maximum number of parallel jobs is %d\n"), - progname, MAXIMUM_WAIT_OBJECTS); - exit(1); - } -#endif - AH->numWorkers = numWorkers; if (opts->tocSummary) diff --git a/src/bin/pg_dump/po/de.po b/src/bin/pg_dump/po/de.po index b38ea97815..c73901a2c9 100644 --- a/src/bin/pg_dump/po/de.po +++ b/src/bin/pg_dump/po/de.po @@ -1,5 +1,5 @@ # German message translation file for pg_dump and friends -# Peter Eisentraut , 2001 - 2016. +# Peter Eisentraut , 2001 - 2017. # # Use these quotes: »%s« # @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-06-06 22:14+0000\n" -"PO-Revision-Date: 2016-06-07 06:48-0400\n" +"POT-Creation-Date: 2017-08-07 16:23+0000\n" +"PO-Revision-Date: 2017-08-07 12:56-0400\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" "Language: de\n" @@ -53,8 +53,8 @@ msgid "pclose failed: %s" msgstr "pclose fehlgeschlagen: %s" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 -#: ../../common/fe_memutils.c:98 pg_backup_db.c:156 pg_backup_db.c:207 -#: pg_backup_db.c:264 pg_backup_db.c:306 +#: ../../common/fe_memutils.c:98 pg_backup_db.c:158 pg_backup_db.c:213 +#: pg_backup_db.c:272 pg_backup_db.c:314 #, c-format msgid "out of memory\n" msgstr "Speicher aufgebraucht\n" @@ -325,38 +325,38 @@ msgstr "konnte Daten nicht dekomprimieren: %s\n" msgid "could not close compression library: %s\n" msgstr "konnte Komprimierungsbibliothek nicht schließen: %s\n" -#: compress_io.c:596 compress_io.c:632 pg_backup_custom.c:591 -#: pg_backup_tar.c:561 +#: compress_io.c:600 compress_io.c:638 pg_backup_custom.c:591 +#: pg_backup_tar.c:566 pg_backup_tar.c:570 #, c-format msgid "could not read from input file: %s\n" msgstr "konnte nicht aus Eingabedatei lesen: %s\n" -#: compress_io.c:635 pg_backup_custom.c:588 pg_backup_directory.c:548 -#: pg_backup_tar.c:797 pg_backup_tar.c:821 +#: compress_io.c:641 pg_backup_custom.c:588 pg_backup_directory.c:552 +#: pg_backup_tar.c:809 pg_backup_tar.c:833 #, c-format msgid "could not read from input file: end of file\n" msgstr "konnte nicht aus Eingabedatei lesen: Dateiende\n" -#: parallel.c:163 +#: parallel.c:167 msgid "parallel archiver" msgstr "paralleler Archivierer" -#: parallel.c:227 +#: parallel.c:231 #, c-format msgid "%s: WSAStartup failed: %d\n" msgstr "%s: WSAStartup fehlgeschlagen: %d\n" -#: parallel.c:930 +#: parallel.c:934 #, c-format msgid "could not create communication channels: %s\n" msgstr "konnte Kommunikationskanäle nicht erzeugen: %s\n" -#: parallel.c:993 +#: parallel.c:997 #, c-format msgid "could not create worker process: %s\n" msgstr "konnte Arbeitsprozess nicht erzeugen: %s\n" -#: parallel.c:1188 +#: parallel.c:1192 #, c-format msgid "" "could not obtain lock on relation \"%s\"\n" @@ -365,67 +365,67 @@ msgstr "" "konnte Sperre für Relation »%s« nicht setzen\n" "Das bedeutet meistens, dass jemand eine ACCESS-EXCLUSIVE-Sperre auf die Tabelle gesetzt hat, nachdem der pg-dump-Elternprozess die anfängliche ACCESS-SHARE-Sperre gesetzt hatte.\n" -#: parallel.c:1258 +#: parallel.c:1262 #, c-format msgid "unrecognized command received from master: \"%s\"\n" msgstr "unbekannter Befehl vom Master empfangen: »%s«\n" -#: parallel.c:1296 +#: parallel.c:1300 #, c-format msgid "a worker process died unexpectedly\n" msgstr "ein Arbeitsprozess endete unerwartet\n" -#: parallel.c:1322 parallel.c:1328 +#: parallel.c:1326 parallel.c:1332 #, c-format msgid "invalid message received from worker: \"%s\"\n" msgstr "ungültige Nachricht vom Arbeitsprozess empfangen: »%s«\n" -#: parallel.c:1385 parallel.c:1436 +#: parallel.c:1389 parallel.c:1440 #, c-format msgid "error processing a parallel work item\n" msgstr "Fehler beim Verarbeiten eines parallelen Arbeitselements\n" -#: parallel.c:1465 parallel.c:1583 +#: parallel.c:1469 parallel.c:1587 #, c-format msgid "could not write to the communication channel: %s\n" msgstr "konnte nicht in den Kommunikationskanal schreiben: %s\n" -#: parallel.c:1543 +#: parallel.c:1547 #, c-format msgid "select() failed: %s\n" msgstr "select() fehlgeschlagen: %s\n" -#: parallel.c:1668 +#: parallel.c:1672 #, c-format msgid "pgpipe: could not create socket: error code %d\n" msgstr "pgpipe: konnte Socket nicht erzeugen: Fehlercode %d\n" -#: parallel.c:1679 +#: parallel.c:1683 #, c-format msgid "pgpipe: could not bind: error code %d\n" msgstr "pgpipe: konnte nicht binden: Fehlercode %d\n" -#: parallel.c:1686 +#: parallel.c:1690 #, c-format msgid "pgpipe: could not listen: error code %d\n" msgstr "pgpipe: konnte nicht auf Socket hören: Fehlercode %d\n" -#: parallel.c:1693 +#: parallel.c:1697 #, c-format msgid "pgpipe: getsockname() failed: error code %d\n" msgstr "pgpipe: getsockname() fehlgeschlagen: Fehlercode %d\n" -#: parallel.c:1704 +#: parallel.c:1708 #, c-format msgid "pgpipe: could not create second socket: error code %d\n" msgstr "pgpipe: konnte zweites Socket nicht erzeugen: Fehlercode %d\n" -#: parallel.c:1713 +#: parallel.c:1717 #, c-format msgid "pgpipe: could not connect socket: error code %d\n" msgstr "pgpipe: konnte Socket nicht verbinden: Fehlercode %d\n" -#: parallel.c:1722 +#: parallel.c:1726 #, c-format msgid "pgpipe: could not accept connection: error code %d\n" msgstr "pgpipe: konnte Verbindung nicht annehmen: Fehlercode %d\n" @@ -435,485 +435,480 @@ msgstr "pgpipe: konnte Verbindung nicht annehmen: Fehlercode %d\n" msgid "archiver" msgstr "Archivierer" -#: pg_backup_archiver.c:234 pg_backup_archiver.c:1512 +#: pg_backup_archiver.c:240 pg_backup_archiver.c:1589 #, c-format msgid "could not close output file: %s\n" msgstr "konnte Ausgabedatei nicht schließen: %s\n" -#: pg_backup_archiver.c:280 pg_backup_archiver.c:285 +#: pg_backup_archiver.c:286 pg_backup_archiver.c:291 #, c-format msgid "WARNING: archive items not in correct section order\n" msgstr "WARNUNG: Archivelemente nicht in richtiger Abschnittsreihenfolge\n" -#: pg_backup_archiver.c:291 +#: pg_backup_archiver.c:297 #, c-format msgid "unexpected section code %d\n" msgstr "unerwarteter Abschnittscode %d\n" -#: pg_backup_archiver.c:327 +#: pg_backup_archiver.c:333 #, c-format msgid "-C and -1 are incompatible options\n" msgstr "-C und -1 sind inkompatible Optionen\n" -#: pg_backup_archiver.c:337 +#: pg_backup_archiver.c:343 #, c-format msgid "parallel restore is not supported with this archive file format\n" msgstr "parallele Wiederherstellung wird von diesem Archivdateiformat nicht unterstützt\n" -#: pg_backup_archiver.c:341 +#: pg_backup_archiver.c:347 #, c-format msgid "parallel restore is not supported with archives made by pre-8.0 pg_dump\n" msgstr "parallele Wiederherstellung wird mit Archiven, die mit pg_dump vor 8.0 erstellt worden sind, nicht unterstützt\n" -#: pg_backup_archiver.c:359 +#: pg_backup_archiver.c:365 #, c-format msgid "cannot restore from compressed archive (compression not supported in this installation)\n" msgstr "kann komprimiertes Archiv nicht wiederherstellen (Komprimierung in dieser Installation nicht unterstützt)\n" -#: pg_backup_archiver.c:376 +#: pg_backup_archiver.c:382 #, c-format msgid "connecting to database for restore\n" msgstr "verbinde mit der Datenbank zur Wiederherstellung\n" -#: pg_backup_archiver.c:378 +#: pg_backup_archiver.c:384 #, c-format msgid "direct database connections are not supported in pre-1.3 archives\n" msgstr "direkte Datenbankverbindungen sind in Archiven vor Version 1.3 nicht unterstützt\n" -#: pg_backup_archiver.c:423 +#: pg_backup_archiver.c:429 #, c-format msgid "implied data-only restore\n" msgstr "implizit werden nur Daten wiederhergestellt\n" -#: pg_backup_archiver.c:493 +#: pg_backup_archiver.c:499 #, c-format msgid "dropping %s %s\n" msgstr "entferne %s %s\n" -#: pg_backup_archiver.c:646 +#: pg_backup_archiver.c:592 #, c-format -msgid "setting owner and privileges for %s \"%s.%s\"\n" -msgstr "setze Eigentümer und Privilegien für %s »%s.%s«\n" +msgid "WARNING: could not find where to insert IF EXISTS in statement \"%s\"\n" +msgstr "WARNUNG: konnte nicht bestimmen, wo IF EXISTS in die Anweisung »%s« eingefügt werden soll\n" -#: pg_backup_archiver.c:649 -#, c-format -msgid "setting owner and privileges for %s \"%s\"\n" -msgstr "setze Eigentümer und Privilegien für %s »%s«\n" - -#: pg_backup_archiver.c:715 pg_backup_archiver.c:717 +#: pg_backup_archiver.c:755 pg_backup_archiver.c:757 #, c-format msgid "warning from original dump file: %s\n" msgstr "Warnung aus der ursprünglichen Ausgabedatei: %s\n" -#: pg_backup_archiver.c:726 +#: pg_backup_archiver.c:769 #, c-format msgid "creating %s \"%s.%s\"\n" msgstr "erstelle %s »%s.%s«\n" -#: pg_backup_archiver.c:729 +#: pg_backup_archiver.c:772 #, c-format msgid "creating %s \"%s\"\n" msgstr "erstelle %s »%s«\n" -#: pg_backup_archiver.c:774 +#: pg_backup_archiver.c:823 #, c-format msgid "connecting to new database \"%s\"\n" msgstr "verbinde mit neuer Datenbank »%s«\n" -#: pg_backup_archiver.c:802 +#: pg_backup_archiver.c:851 #, c-format msgid "processing %s\n" msgstr "verarbeite %s\n" -#: pg_backup_archiver.c:822 +#: pg_backup_archiver.c:871 #, c-format msgid "processing data for table \"%s.%s\"\n" msgstr "verarbeite Daten für Tabelle »%s.%s«\n" -#: pg_backup_archiver.c:884 +#: pg_backup_archiver.c:933 #, c-format msgid "executing %s %s\n" msgstr "führe %s %s aus\n" -#: pg_backup_archiver.c:923 +#: pg_backup_archiver.c:972 #, c-format msgid "disabling triggers for %s\n" msgstr "schalte Trigger für %s aus\n" -#: pg_backup_archiver.c:951 +#: pg_backup_archiver.c:1000 #, c-format msgid "enabling triggers for %s\n" msgstr "schalte Trigger für %s ein\n" -#: pg_backup_archiver.c:981 +#: pg_backup_archiver.c:1030 #, c-format msgid "internal error -- WriteData cannot be called outside the context of a DataDumper routine\n" msgstr "interner Fehler -- WriteData kann nicht außerhalb des Kontexts einer DataDumper-Routine aufgerufen werden\n" -#: pg_backup_archiver.c:1150 +#: pg_backup_archiver.c:1227 #, c-format msgid "large-object output not supported in chosen format\n" msgstr "Large-Object-Ausgabe im gewählten Format nicht unterstützt\n" -#: pg_backup_archiver.c:1208 +#: pg_backup_archiver.c:1285 #, c-format msgid "restored %d large object\n" msgid_plural "restored %d large objects\n" msgstr[0] "%d Large Object wiederhergestellt\n" msgstr[1] "%d Large Objects wiederhergestellt\n" -#: pg_backup_archiver.c:1229 pg_backup_tar.c:739 +#: pg_backup_archiver.c:1306 pg_backup_tar.c:751 #, c-format msgid "restoring large object with OID %u\n" msgstr "Wiederherstellung von Large Object mit OID %u\n" -#: pg_backup_archiver.c:1241 +#: pg_backup_archiver.c:1318 #, c-format msgid "could not create large object %u: %s" msgstr "konnte Large Object %u nicht erstellen: %s" -#: pg_backup_archiver.c:1246 pg_dump.c:3048 +#: pg_backup_archiver.c:1323 pg_dump.c:3093 #, c-format msgid "could not open large object %u: %s" msgstr "konnte Large Object %u nicht öffnen: %s" -#: pg_backup_archiver.c:1304 +#: pg_backup_archiver.c:1381 #, c-format msgid "could not open TOC file \"%s\": %s\n" msgstr "konnte Inhaltsverzeichnisdatei »%s« nicht öffnen: %s\n" -#: pg_backup_archiver.c:1345 +#: pg_backup_archiver.c:1422 #, c-format msgid "WARNING: line ignored: %s\n" msgstr "WARNUNG: Zeile ignoriert: %s\n" -#: pg_backup_archiver.c:1352 +#: pg_backup_archiver.c:1429 #, c-format msgid "could not find entry for ID %d\n" msgstr "konnte Eintrag für ID %d nicht finden\n" -#: pg_backup_archiver.c:1373 pg_backup_directory.c:230 -#: pg_backup_directory.c:597 +#: pg_backup_archiver.c:1450 pg_backup_directory.c:230 +#: pg_backup_directory.c:601 #, c-format msgid "could not close TOC file: %s\n" msgstr "konnte Inhaltsverzeichnisdatei nicht finden: %s\n" -#: pg_backup_archiver.c:1482 pg_backup_custom.c:162 pg_backup_directory.c:341 -#: pg_backup_directory.c:583 pg_backup_directory.c:641 -#: pg_backup_directory.c:661 +#: pg_backup_archiver.c:1559 pg_backup_custom.c:162 pg_backup_directory.c:341 +#: pg_backup_directory.c:587 pg_backup_directory.c:645 +#: pg_backup_directory.c:665 #, c-format msgid "could not open output file \"%s\": %s\n" msgstr "konnte Ausgabedatei »%s« nicht öffnen: %s\n" -#: pg_backup_archiver.c:1485 pg_backup_custom.c:169 +#: pg_backup_archiver.c:1562 pg_backup_custom.c:169 #, c-format msgid "could not open output file: %s\n" msgstr "konnte Ausgabedatei nicht öffnen: %s\n" -#: pg_backup_archiver.c:1591 +#: pg_backup_archiver.c:1668 #, c-format msgid "wrote %lu byte of large object data (result = %lu)\n" msgid_plural "wrote %lu bytes of large object data (result = %lu)\n" msgstr[0] "%lu Byte Large-Object-Daten geschrieben (Ergebnis = %lu)\n" msgstr[1] "%lu Bytes Large-Object-Daten geschrieben (Ergebnis = %lu)\n" -#: pg_backup_archiver.c:1597 +#: pg_backup_archiver.c:1674 #, c-format msgid "could not write to large object (result: %lu, expected: %lu)\n" msgstr "konnte Large Object nicht schreiben (Ergebis: %lu, erwartet: %lu)\n" -#: pg_backup_archiver.c:1690 +#: pg_backup_archiver.c:1767 #, c-format msgid "Error while INITIALIZING:\n" msgstr "Fehler in Phase INITIALIZING:\n" -#: pg_backup_archiver.c:1695 +#: pg_backup_archiver.c:1772 #, c-format msgid "Error while PROCESSING TOC:\n" msgstr "Fehler in Phase PROCESSING TOC:\n" -#: pg_backup_archiver.c:1700 +#: pg_backup_archiver.c:1777 #, c-format msgid "Error while FINALIZING:\n" msgstr "Fehler in Phase FINALIZING:\n" -#: pg_backup_archiver.c:1705 +#: pg_backup_archiver.c:1782 #, c-format msgid "Error from TOC entry %d; %u %u %s %s %s\n" msgstr "Fehler in Inhaltsverzeichniseintrag %d; %u %u %s %s %s\n" -#: pg_backup_archiver.c:1778 +#: pg_backup_archiver.c:1855 #, c-format msgid "bad dumpId\n" msgstr "ungültige DumpId\n" -#: pg_backup_archiver.c:1799 +#: pg_backup_archiver.c:1876 #, c-format msgid "bad table dumpId for TABLE DATA item\n" msgstr "ungültige Tabellen-DumpId für »TABLE DATA«-Eintrag\n" -#: pg_backup_archiver.c:1891 +#: pg_backup_archiver.c:1968 #, c-format msgid "unexpected data offset flag %d\n" msgstr "unerwartete Datenoffsetmarkierung %d\n" -#: pg_backup_archiver.c:1904 +#: pg_backup_archiver.c:1981 #, c-format msgid "file offset in dump file is too large\n" msgstr "Dateioffset in Dumpdatei ist zu groß\n" -#: pg_backup_archiver.c:2017 +#: pg_backup_archiver.c:2094 #, c-format msgid "attempting to ascertain archive format\n" msgstr "versuche Archivformat zu ermitteln\n" -#: pg_backup_archiver.c:2043 pg_backup_archiver.c:2053 +#: pg_backup_archiver.c:2120 pg_backup_archiver.c:2130 #, c-format msgid "directory name too long: \"%s\"\n" msgstr "Verzeichnisname zu lang: »%s«\n" -#: pg_backup_archiver.c:2061 +#: pg_backup_archiver.c:2138 #, c-format msgid "directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not exist)\n" msgstr "Verzeichnis »%s« scheint kein gültiges Archiv zu sein (»toc.dat« existiert nicht)\n" -#: pg_backup_archiver.c:2069 pg_backup_custom.c:181 pg_backup_custom.c:770 -#: pg_backup_directory.c:214 pg_backup_directory.c:399 +#: pg_backup_archiver.c:2146 pg_backup_custom.c:181 pg_backup_custom.c:770 +#: pg_backup_directory.c:214 pg_backup_directory.c:401 #, c-format msgid "could not open input file \"%s\": %s\n" msgstr "konnte Eingabedatei »%s« nicht öffnen: %s\n" -#: pg_backup_archiver.c:2077 pg_backup_custom.c:188 +#: pg_backup_archiver.c:2154 pg_backup_custom.c:188 #, c-format msgid "could not open input file: %s\n" msgstr "konnte Eingabedatei nicht öffnen: %s\n" -#: pg_backup_archiver.c:2084 +#: pg_backup_archiver.c:2161 #, c-format msgid "could not read input file: %s\n" msgstr "konnte Eingabedatei nicht lesen: %s\n" -#: pg_backup_archiver.c:2086 +#: pg_backup_archiver.c:2163 #, c-format msgid "input file is too short (read %lu, expected 5)\n" msgstr "Eingabedatei ist zu kurz (gelesen: %lu, erwartet: 5)\n" -#: pg_backup_archiver.c:2169 +#: pg_backup_archiver.c:2246 #, c-format msgid "input file appears to be a text format dump. Please use psql.\n" msgstr "Eingabedatei ist anscheinend ein Dump im Textformat. Bitte verwenden Sie psql.\n" -#: pg_backup_archiver.c:2175 +#: pg_backup_archiver.c:2252 #, c-format msgid "input file does not appear to be a valid archive (too short?)\n" msgstr "Eingabedatei scheint kein gültiges Archiv zu sein (zu kurz?)\n" -#: pg_backup_archiver.c:2181 +#: pg_backup_archiver.c:2258 #, c-format msgid "input file does not appear to be a valid archive\n" msgstr "Eingabedatei scheint kein gültiges Archiv zu sein\n" -#: pg_backup_archiver.c:2201 +#: pg_backup_archiver.c:2278 #, c-format msgid "could not close input file: %s\n" msgstr "konnte Eingabedatei nicht schließen: %s\n" -#: pg_backup_archiver.c:2218 +#: pg_backup_archiver.c:2295 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "erstelle AH für %s, Format %d\n" -#: pg_backup_archiver.c:2323 +#: pg_backup_archiver.c:2400 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "nicht erkanntes Dateiformat »%d«\n" -#: pg_backup_archiver.c:2479 +#: pg_backup_archiver.c:2556 #, c-format msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" msgstr "ID %d des Eintrags außerhalb des gültigen Bereichs -- vielleicht ein verfälschtes Inhaltsverzeichnis\n" -#: pg_backup_archiver.c:2595 +#: pg_backup_archiver.c:2672 #, c-format msgid "read TOC entry %d (ID %d) for %s %s\n" msgstr "Inhaltsverzeichniseintrag %d (ID %d) von %s %s gelesen\n" -#: pg_backup_archiver.c:2629 +#: pg_backup_archiver.c:2706 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "nicht erkannte Kodierung »%s«\n" -#: pg_backup_archiver.c:2634 +#: pg_backup_archiver.c:2711 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "ungültiger ENCODING-Eintrag: %s\n" -#: pg_backup_archiver.c:2652 +#: pg_backup_archiver.c:2729 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "ungültiger STDSTRINGS-Eintrag: %s\n" -#: pg_backup_archiver.c:2667 +#: pg_backup_archiver.c:2744 #, c-format msgid "schema \"%s\" not found\n" msgstr "Schema »%s« nicht gefunden\n" -#: pg_backup_archiver.c:2674 +#: pg_backup_archiver.c:2751 #, c-format msgid "table \"%s\" not found\n" msgstr "Tabelle »%s« nicht gefunden\n" -#: pg_backup_archiver.c:2681 +#: pg_backup_archiver.c:2758 #, c-format msgid "index \"%s\" not found\n" msgstr "Index »%s« nicht gefunden\n" -#: pg_backup_archiver.c:2688 +#: pg_backup_archiver.c:2765 #, c-format msgid "function \"%s\" not found\n" msgstr "Funktion »%s« nicht gefunden\n" -#: pg_backup_archiver.c:2695 +#: pg_backup_archiver.c:2772 #, c-format msgid "trigger \"%s\" not found\n" msgstr "Trigger »%s« nicht gefunden\n" -#: pg_backup_archiver.c:2926 +#: pg_backup_archiver.c:3036 #, c-format msgid "could not set session user to \"%s\": %s" msgstr "konnte Sitzungsbenutzer nicht auf »%s« setzen: %s" -#: pg_backup_archiver.c:2958 +#: pg_backup_archiver.c:3068 #, c-format msgid "could not set default_with_oids: %s" msgstr "konnte default_with_oids nicht setzen: %s" -#: pg_backup_archiver.c:3098 +#: pg_backup_archiver.c:3213 #, c-format msgid "could not set search_path to \"%s\": %s" msgstr "konnte search_path nicht auf »%s« setzen: %s" -#: pg_backup_archiver.c:3160 +#: pg_backup_archiver.c:3275 #, c-format msgid "could not set default_tablespace to %s: %s" msgstr "konnte default_tablespace nicht auf »%s« setzen: %s" -#: pg_backup_archiver.c:3247 pg_backup_archiver.c:3434 +#: pg_backup_archiver.c:3363 pg_backup_archiver.c:3553 #, c-format -msgid "WARNING: don't know how to set owner for object type %s\n" -msgstr "WARNUNG: kann Eigentümer für Objekttyp %s nicht setzen\n" +msgid "WARNING: don't know how to set owner for object type \"%s\"\n" +msgstr "WARNUNG: kann Eigentümer für Objekttyp »%s« nicht setzen\n" -#: pg_backup_archiver.c:3516 +#: pg_backup_archiver.c:3639 #, c-format msgid "did not find magic string in file header\n" msgstr "magische Zeichenkette im Dateikopf nicht gefunden\n" -#: pg_backup_archiver.c:3529 +#: pg_backup_archiver.c:3652 #, c-format msgid "unsupported version (%d.%d) in file header\n" msgstr "nicht unterstützte Version (%d.%d) im Dateikopf\n" -#: pg_backup_archiver.c:3534 +#: pg_backup_archiver.c:3657 #, c-format msgid "sanity check on integer size (%lu) failed\n" msgstr "Prüfung der Integer-Größe (%lu) fehlgeschlagen\n" -#: pg_backup_archiver.c:3538 +#: pg_backup_archiver.c:3661 #, c-format msgid "WARNING: archive was made on a machine with larger integers, some operations might fail\n" msgstr "WARNUNG: Archiv wurde auf einer Maschine mit größeren Integers erstellt; einige Operationen könnten fehlschlagen\n" -#: pg_backup_archiver.c:3548 +#: pg_backup_archiver.c:3671 #, c-format msgid "expected format (%d) differs from format found in file (%d)\n" msgstr "erwartetes Format (%d) ist nicht das gleiche wie das in der Datei gefundene (%d)\n" -#: pg_backup_archiver.c:3564 +#: pg_backup_archiver.c:3687 #, c-format msgid "WARNING: archive is compressed, but this installation does not support compression -- no data will be available\n" msgstr "WARNUNG: Archiv ist komprimiert, aber diese Installation unterstützt keine Komprimierung -- keine Daten verfügbar\n" -#: pg_backup_archiver.c:3582 +#: pg_backup_archiver.c:3705 #, c-format msgid "WARNING: invalid creation date in header\n" msgstr "WARNUNG: ungültiges Erstellungsdatum im Kopf\n" -#: pg_backup_archiver.c:3657 +#: pg_backup_archiver.c:3778 #, c-format msgid "entering restore_toc_entries_prefork\n" msgstr "Eintritt in restore_toc_entries_prefork\n" -#: pg_backup_archiver.c:3701 +#: pg_backup_archiver.c:3841 #, c-format msgid "processing item %d %s %s\n" msgstr "verarbeite Element %d %s %s\n" -#: pg_backup_archiver.c:3753 +#: pg_backup_archiver.c:3895 #, c-format msgid "entering restore_toc_entries_parallel\n" msgstr "Eintritt in restore_toc_entries_parallel\n" -#: pg_backup_archiver.c:3801 +#: pg_backup_archiver.c:3916 #, c-format msgid "entering main parallel loop\n" msgstr "Eintritt in Hauptparallelschleife\n" -#: pg_backup_archiver.c:3812 +#: pg_backup_archiver.c:3927 #, c-format msgid "skipping item %d %s %s\n" msgstr "Element %d %s %s wird übersprungen\n" -#: pg_backup_archiver.c:3822 +#: pg_backup_archiver.c:3937 #, c-format msgid "launching item %d %s %s\n" msgstr "starte Element %d %s %s\n" -#: pg_backup_archiver.c:3878 +#: pg_backup_archiver.c:4018 #, c-format msgid "finished main parallel loop\n" msgstr "Hauptparallelschleife beendet\n" -#: pg_backup_archiver.c:3887 +#: pg_backup_archiver.c:4036 #, c-format msgid "entering restore_toc_entries_postfork\n" msgstr "Eintritt in restore_toc_entries_postfork\n" -#: pg_backup_archiver.c:3906 +#: pg_backup_archiver.c:4056 #, c-format msgid "processing missed item %d %s %s\n" msgstr "verarbeite verpasstes Element %d %s %s\n" -#: pg_backup_archiver.c:4055 +#: pg_backup_archiver.c:4233 #, c-format msgid "no item ready\n" msgstr "kein Element bereit\n" -#: pg_backup_archiver.c:4103 +#: pg_backup_archiver.c:4281 #, c-format msgid "could not find slot of finished worker\n" msgstr "konnte Slot des beendeten Arbeitsprozesses nicht finden\n" -#: pg_backup_archiver.c:4105 +#: pg_backup_archiver.c:4283 #, c-format msgid "finished item %d %s %s\n" msgstr "Element %d %s %s abgeschlossen\n" -#: pg_backup_archiver.c:4118 +#: pg_backup_archiver.c:4296 #, c-format msgid "worker process failed: exit code %d\n" msgstr "Arbeitsprozess fehlgeschlagen: Code %d\n" -#: pg_backup_archiver.c:4280 +#: pg_backup_archiver.c:4458 #, c-format msgid "transferring dependency %d -> %d to %d\n" msgstr "übertrage Abhängigkeit %d -> %d an %d\n" -#: pg_backup_archiver.c:4353 +#: pg_backup_archiver.c:4531 #, c-format msgid "reducing dependencies for %d\n" msgstr "reduziere Abhängigkeiten für %d\n" -#: pg_backup_archiver.c:4392 +#: pg_backup_archiver.c:4579 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "Tabelle »%s« konnte nicht erzeugt werden, ihre Daten werden nicht wiederhergestellt werden\n" @@ -964,7 +959,7 @@ msgid "unrecognized data block type %d while restoring archive\n" msgstr "unerkannter Datenblocktyp %d beim Wiederherstellen des Archivs gefunden\n" #: pg_backup_custom.c:709 pg_backup_custom.c:759 pg_backup_custom.c:908 -#: pg_backup_tar.c:1088 +#: pg_backup_tar.c:1100 #, c-format msgid "could not determine seek position in archive file: %s\n" msgstr "konnte Positionszeiger in Archivdatei nicht ermitteln: %s\n" @@ -1005,121 +1000,121 @@ msgid "WARNING: ftell mismatch with expected position -- ftell used\n" msgstr "WARNUNG: erwartete Dateiposition stimmt nicht mit ftell überein -- benutze ftell\n" #. translator: this is a module name -#: pg_backup_db.c:30 +#: pg_backup_db.c:31 msgid "archiver (db)" msgstr "Archivierer (DB)" -#: pg_backup_db.c:46 +#: pg_backup_db.c:47 #, c-format msgid "could not get server_version from libpq\n" msgstr "konnte server_version nicht von libpq ermitteln\n" -#: pg_backup_db.c:57 pg_dumpall.c:1998 +#: pg_backup_db.c:58 pg_dumpall.c:2068 #, c-format msgid "server version: %s; %s version: %s\n" msgstr "Version des Servers: %s; Version von %s: %s\n" -#: pg_backup_db.c:59 pg_dumpall.c:2000 +#: pg_backup_db.c:60 pg_dumpall.c:2070 #, c-format msgid "aborting because of server version mismatch\n" msgstr "Abbruch wegen unpassender Serverversion\n" -#: pg_backup_db.c:147 +#: pg_backup_db.c:149 #, c-format msgid "connecting to database \"%s\" as user \"%s\"\n" msgstr "verbinde mit Datenbank »%s« als Benutzer »%s«\n" -#: pg_backup_db.c:154 pg_backup_db.c:202 pg_backup_db.c:262 pg_backup_db.c:304 -#: pg_dumpall.c:1828 pg_dumpall.c:1936 +#: pg_backup_db.c:156 pg_backup_db.c:208 pg_backup_db.c:270 pg_backup_db.c:312 +#: pg_dumpall.c:1894 pg_dumpall.c:2006 msgid "Password: " msgstr "Passwort: " -#: pg_backup_db.c:183 +#: pg_backup_db.c:189 #, c-format msgid "failed to reconnect to database\n" msgstr "konnte nicht wieder zur Datenbank verbinden\n" -#: pg_backup_db.c:188 +#: pg_backup_db.c:194 #, c-format msgid "could not reconnect to database: %s" msgstr "konnte nicht wieder zur Datenbank verbinden: %s" -#: pg_backup_db.c:204 +#: pg_backup_db.c:210 #, c-format msgid "connection needs password\n" msgstr "Verbindung benötigt Passwort\n" -#: pg_backup_db.c:256 +#: pg_backup_db.c:264 #, c-format msgid "already connected to a database\n" msgstr "bereits mit einer Datenbank verbunden\n" -#: pg_backup_db.c:296 +#: pg_backup_db.c:304 #, c-format msgid "failed to connect to database\n" msgstr "Verbinden zur Datenbank schlug fehl\n" -#: pg_backup_db.c:313 +#: pg_backup_db.c:321 #, c-format msgid "connection to database \"%s\" failed: %s" msgstr "Verbindung zur Datenbank »%s« fehlgeschlagen: %s" -#: pg_backup_db.c:383 +#: pg_backup_db.c:391 #, c-format msgid "%s" msgstr "%s" -#: pg_backup_db.c:390 +#: pg_backup_db.c:398 #, c-format msgid "query failed: %s" msgstr "Anfrage fehlgeschlagen: %s" -#: pg_backup_db.c:392 +#: pg_backup_db.c:400 #, c-format msgid "query was: %s\n" msgstr "Anfrage war: %s\n" -#: pg_backup_db.c:434 +#: pg_backup_db.c:442 #, c-format msgid "query returned %d row instead of one: %s\n" msgid_plural "query returned %d rows instead of one: %s\n" msgstr[0] "Anfrage ergab %d Zeile anstatt einer: %s\n" msgstr[1] "Anfrage ergab %d Zeilen anstatt einer: %s\n" -#: pg_backup_db.c:479 +#: pg_backup_db.c:487 #, c-format msgid "%s: %s Command was: %s\n" msgstr "%s: %s Die Anweisung war: %s\n" -#: pg_backup_db.c:535 pg_backup_db.c:609 pg_backup_db.c:616 +#: pg_backup_db.c:543 pg_backup_db.c:617 pg_backup_db.c:624 msgid "could not execute query" msgstr "konnte Anfrage nicht ausführen" -#: pg_backup_db.c:588 +#: pg_backup_db.c:596 #, c-format msgid "error returned by PQputCopyData: %s" msgstr "Fehler in PQputCopyData: %s" -#: pg_backup_db.c:637 +#: pg_backup_db.c:645 #, c-format msgid "error returned by PQputCopyEnd: %s" msgstr "Fehler in PQputCopyEnd: %s" -#: pg_backup_db.c:643 +#: pg_backup_db.c:651 #, c-format msgid "COPY failed for table \"%s\": %s" msgstr "COPY fehlgeschlagen für Tabelle »%s«: %s" -#: pg_backup_db.c:649 pg_dump.c:1785 +#: pg_backup_db.c:657 pg_dump.c:1814 #, c-format msgid "WARNING: unexpected extra results during COPY of table \"%s\"\n" msgstr "WARNUNG: unerwartete zusätzliche Ergebnisse während COPY von Tabelle »%s«\n" -#: pg_backup_db.c:661 +#: pg_backup_db.c:669 msgid "could not start database transaction" msgstr "konnte Datenbanktransaktion nicht starten" -#: pg_backup_db.c:669 +#: pg_backup_db.c:677 msgid "could not commit database transaction" msgstr "konnte Datenbanktransaktion nicht beenden" @@ -1148,42 +1143,48 @@ msgstr "konnte Verzeichnis »%s« nicht schließen: %s\n" msgid "could not create directory \"%s\": %s\n" msgstr "konnte Verzeichnis »%s« nicht erzeugen: %s\n" -#: pg_backup_directory.c:412 +#: pg_backup_directory.c:360 pg_backup_directory.c:500 +#: pg_backup_directory.c:530 +#, c-format +msgid "could not write to output file: %s\n" +msgstr "konnte nicht in Ausgabedatei schreiben: %s\n" + +#: pg_backup_directory.c:414 #, c-format msgid "could not close data file: %s\n" msgstr "konnte Datendatei nicht schließen: %s\n" -#: pg_backup_directory.c:453 +#: pg_backup_directory.c:455 #, c-format msgid "could not open large object TOC file \"%s\" for input: %s\n" msgstr "konnte Large-Object-Inhaltsverzeichnisdatei »%s« nicht zur Eingabe öffnen: %s\n" -#: pg_backup_directory.c:464 +#: pg_backup_directory.c:466 #, c-format msgid "invalid line in large object TOC file \"%s\": \"%s\"\n" msgstr "ungültige Zeile in Large-Object-Inhaltsverzeichnisdatei »%s«: %s\n" -#: pg_backup_directory.c:473 +#: pg_backup_directory.c:475 #, c-format msgid "error reading large object TOC file \"%s\"\n" msgstr "Fehler beim Lesen von Large-Object-Inhaltsverzeichnisdatei »%s«\n" -#: pg_backup_directory.c:477 +#: pg_backup_directory.c:479 #, c-format msgid "could not close large object TOC file \"%s\": %s\n" msgstr "konnte Large-Object-Inhaltsverzeichnisdatei »%s« nicht schließen: %s\n" -#: pg_backup_directory.c:684 +#: pg_backup_directory.c:688 #, c-format msgid "could not write to blobs TOC file\n" msgstr "konnte nicht in Blobs-Inhaltsverzeichnisdatei schreiben\n" -#: pg_backup_directory.c:716 +#: pg_backup_directory.c:720 #, c-format msgid "file name too long: \"%s\"\n" msgstr "Dateiname zu lang: »%s«\n" -#: pg_backup_directory.c:802 +#: pg_backup_directory.c:806 #, c-format msgid "error during backup\n" msgstr "Fehler bei der Sicherung\n" @@ -1243,69 +1244,69 @@ msgstr "konnte komprimierte temporäre Datei nicht öffnen\n" msgid "could not close tar member\n" msgstr "konnte Tar-Mitglied nicht schließen\n" -#: pg_backup_tar.c:571 +#: pg_backup_tar.c:583 #, c-format msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" msgstr "interner Fehler -- weder th noch fh in tarReadRaw() angegeben\n" -#: pg_backup_tar.c:694 +#: pg_backup_tar.c:706 #, c-format msgid "unexpected COPY statement syntax: \"%s\"\n" msgstr "unerwartete Syntax der COPY-Anweisung: »%s«\n" -#: pg_backup_tar.c:960 +#: pg_backup_tar.c:972 #, c-format msgid "invalid OID for large object (%u)\n" msgstr "Large Object hat ungültige Oid (%u)\n" -#: pg_backup_tar.c:1104 +#: pg_backup_tar.c:1116 #, c-format msgid "could not close temporary file: %s\n" msgstr "konnte temporäre Datei nicht schließen: %s\n" -#: pg_backup_tar.c:1114 +#: pg_backup_tar.c:1126 #, c-format msgid "actual file length (%s) does not match expected (%s)\n" msgstr "tatsächliche Dateilänge (%s) stimmt nicht mit erwarteter Länge (%s) überein\n" -#: pg_backup_tar.c:1151 +#: pg_backup_tar.c:1163 #, c-format msgid "moving from position %s to next member at file position %s\n" msgstr "bewege Position von %s auf nächstes Mitglied bei Position %s\n" -#: pg_backup_tar.c:1162 +#: pg_backup_tar.c:1174 #, c-format msgid "now at file position %s\n" msgstr "jetzt bei Dateiposition %s\n" -#: pg_backup_tar.c:1171 pg_backup_tar.c:1201 +#: pg_backup_tar.c:1183 pg_backup_tar.c:1213 #, c-format msgid "could not find header for file \"%s\" in tar archive\n" msgstr "konnte Kopf für Datei »%s« im Tar-Archiv nicht finden\n" -#: pg_backup_tar.c:1185 +#: pg_backup_tar.c:1197 #, c-format msgid "skipping tar member %s\n" msgstr "Tar-Mitglied %s übersprungen\n" -#: pg_backup_tar.c:1189 +#: pg_backup_tar.c:1201 #, c-format msgid "restoring data out of order is not supported in this archive format: \"%s\" is required, but comes before \"%s\" in the archive file.\n" msgstr "Ausgabe der Daten in anderer Reihenfolge wird in diesem Archivformat nicht unterstützt: »%s« wird benötigt, aber es kommt vor »%s« in der Archivdatei.\n" -#: pg_backup_tar.c:1235 +#: pg_backup_tar.c:1247 #, c-format msgid "incomplete tar header found (%lu byte)\n" msgid_plural "incomplete tar header found (%lu bytes)\n" msgstr[0] "unvollständiger Tar-Dateikopf gefunden (%lu Byte)\n" msgstr[1] "unvollständiger Tar-Dateikopf gefunden (%lu Bytes)\n" -#: pg_backup_tar.c:1276 +#: pg_backup_tar.c:1288 #, c-format msgid "TOC Entry %s at %s (length %s, checksum %d)\n" msgstr "Inhaltsverzeichniseintrag %s bei %s (Länge %s, Prüfsumme %d)\n" -#: pg_backup_tar.c:1287 +#: pg_backup_tar.c:1299 #, c-format msgid "corrupt tar header found in %s (expected %d, computed %d) file position %s\n" msgstr "beschädigter Tar-Kopf in %s gefunden (%d erwartet, %d berechnet), Dateiposition %s\n" @@ -1315,9 +1316,9 @@ msgstr "beschädigter Tar-Kopf in %s gefunden (%d erwartet, %d berechnet), Datei msgid "%s: unrecognized section name: \"%s\"\n" msgstr "%s: unbekannter Abschnittsname: »%s«\n" -#: pg_backup_utils.c:56 pg_dump.c:533 pg_dump.c:550 pg_dumpall.c:301 -#: pg_dumpall.c:311 pg_dumpall.c:321 pg_dumpall.c:330 pg_dumpall.c:346 -#: pg_dumpall.c:404 pg_restore.c:279 pg_restore.c:295 pg_restore.c:307 +#: pg_backup_utils.c:56 pg_dump.c:536 pg_dump.c:553 pg_dumpall.c:299 +#: pg_dumpall.c:309 pg_dumpall.c:319 pg_dumpall.c:328 pg_dumpall.c:344 +#: pg_dumpall.c:402 pg_restore.c:279 pg_restore.c:295 pg_restore.c:307 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Versuchen Sie »%s --help« für weitere Informationen.\n" @@ -1327,57 +1328,57 @@ msgstr "Versuchen Sie »%s --help« für weitere Informationen.\n" msgid "out of on_exit_nicely slots\n" msgstr "on_exit_nicely-Slots aufgebraucht\n" -#: pg_dump.c:503 +#: pg_dump.c:506 #, c-format msgid "compression level must be in range 0..9\n" msgstr "Komprimierungsniveau muss im Bereich 0..9 sein\n" -#: pg_dump.c:548 pg_dumpall.c:309 pg_restore.c:293 +#: pg_dump.c:551 pg_dumpall.c:307 pg_restore.c:293 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: zu viele Kommandozeilenargumente (das erste ist »%s«)\n" -#: pg_dump.c:561 +#: pg_dump.c:564 #, c-format msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "Optionen -s/--schema-only und -a/--data-only können nicht zusammen verwendet werden\n" -#: pg_dump.c:567 +#: pg_dump.c:570 #, c-format msgid "options -c/--clean and -a/--data-only cannot be used together\n" msgstr "Optionen -c/--clean und -a/--data-only können nicht zusammen verwendet werden\n" -#: pg_dump.c:573 +#: pg_dump.c:576 #, c-format msgid "options --inserts/--column-inserts and -o/--oids cannot be used together\n" msgstr "Optionen --inserts/--column-inserts und -o/--oids können nicht zusammen verwendet werden\n" -#: pg_dump.c:574 +#: pg_dump.c:577 #, c-format msgid "(The INSERT command cannot set OIDs.)\n" msgstr "(Die INSERT-Anweisung kann OIDs nicht setzen.)\n" -#: pg_dump.c:579 +#: pg_dump.c:582 #, c-format msgid "option --if-exists requires option -c/--clean\n" msgstr "Option --if-exists benötigt Option -c/--clean\n" -#: pg_dump.c:601 +#: pg_dump.c:604 #, c-format msgid "WARNING: requested compression not available in this installation -- archive will be uncompressed\n" msgstr "WARNUNG: Komprimierung ist in dieser Installation nicht verfügbar -- Archiv wird nicht komprimiert\n" -#: pg_dump.c:616 +#: pg_dump.c:619 #, c-format -msgid "%s: invalid number of parallel jobs\n" -msgstr "%s: ungültige Anzahl paralleler Jobs\n" +msgid "invalid number of parallel jobs\n" +msgstr "ungültige Anzahl paralleler Jobs\n" -#: pg_dump.c:620 +#: pg_dump.c:623 #, c-format msgid "parallel backup only supported by the directory format\n" msgstr "parallele Sicherung wird nur vom Ausgabeformat »Verzeichnis« unterstützt\n" -#: pg_dump.c:677 +#: pg_dump.c:680 #, c-format msgid "" "Synchronized snapshots are not supported by this server version.\n" @@ -1388,27 +1389,27 @@ msgstr "" "Verwenden Sie --no-synchronized-snapshots, wenn Sie keine synchronisierten\n" "Snapshots benötigen.\n" -#: pg_dump.c:684 +#: pg_dump.c:687 #, c-format msgid "Exported snapshots are not supported by this server version.\n" msgstr "Exportierte Snapshots werden in dieser Serverversion nicht unterstützt.\n" -#: pg_dump.c:695 +#: pg_dump.c:706 #, c-format msgid "last built-in OID is %u\n" msgstr "letzte eingebaute OID ist %u\n" -#: pg_dump.c:705 +#: pg_dump.c:715 #, c-format msgid "no matching schemas were found\n" msgstr "keine passenden Schemas gefunden\n" -#: pg_dump.c:719 +#: pg_dump.c:729 #, c-format msgid "no matching tables were found\n" msgstr "keine passenden Tabellen gefunden\n" -#: pg_dump.c:878 +#: pg_dump.c:897 #, c-format msgid "" "%s dumps a database as a text file or to other formats.\n" @@ -1417,17 +1418,17 @@ msgstr "" "%s gibt eine Datenbank als Textdatei oder in anderen Formaten aus.\n" "\n" -#: pg_dump.c:879 pg_dumpall.c:549 pg_restore.c:437 +#: pg_dump.c:898 pg_dumpall.c:547 pg_restore.c:443 #, c-format msgid "Usage:\n" msgstr "Aufruf:\n" -#: pg_dump.c:880 +#: pg_dump.c:899 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [OPTION]... [DBNAME]\n" -#: pg_dump.c:882 pg_dumpall.c:552 pg_restore.c:440 +#: pg_dump.c:901 pg_dumpall.c:550 pg_restore.c:446 #, c-format msgid "" "\n" @@ -1436,12 +1437,12 @@ msgstr "" "\n" "Allgemeine Optionen:\n" -#: pg_dump.c:883 +#: pg_dump.c:902 #, c-format msgid " -f, --file=FILENAME output file or directory name\n" msgstr " -f, --file=DATEINAME Name der Ausgabedatei oder des -verzeichnisses\n" -#: pg_dump.c:884 +#: pg_dump.c:903 #, c-format msgid "" " -F, --format=c|d|t|p output file format (custom, directory, tar,\n" @@ -1450,37 +1451,37 @@ msgstr "" " -F, --format=c|d|t|p Ausgabeformat (custom, d=Verzeichnis, tar,\n" " plain text)\n" -#: pg_dump.c:886 +#: pg_dump.c:905 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to dump\n" msgstr " -j, --jobs=NUM so viele parallele Jobs zur Sicherung verwenden\n" -#: pg_dump.c:887 +#: pg_dump.c:906 pg_dumpall.c:552 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose »Verbose«-Modus\n" -#: pg_dump.c:888 pg_dumpall.c:554 +#: pg_dump.c:907 pg_dumpall.c:553 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version Versionsinformationen anzeigen, dann beenden\n" -#: pg_dump.c:889 +#: pg_dump.c:908 #, c-format msgid " -Z, --compress=0-9 compression level for compressed formats\n" msgstr " -Z, --compress=0-9 Komprimierungsniveau für komprimierte Formate\n" -#: pg_dump.c:890 pg_dumpall.c:555 +#: pg_dump.c:909 pg_dumpall.c:554 #, c-format msgid " --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" msgstr " --lock-wait-timeout=ZEIT Abbruch nach ZEIT Warten auf Tabellensperre\n" -#: pg_dump.c:891 pg_dumpall.c:556 +#: pg_dump.c:910 pg_dumpall.c:555 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help diese Hilfe anzeigen, dann beenden\n" -#: pg_dump.c:893 pg_dumpall.c:557 +#: pg_dump.c:912 pg_dumpall.c:556 #, c-format msgid "" "\n" @@ -1489,49 +1490,49 @@ msgstr "" "\n" "Optionen die den Inhalt der Ausgabe kontrollieren:\n" -#: pg_dump.c:894 pg_dumpall.c:558 +#: pg_dump.c:913 pg_dumpall.c:557 #, c-format msgid " -a, --data-only dump only the data, not the schema\n" msgstr " -a, --data-only nur Daten ausgeben, nicht das Schema\n" -#: pg_dump.c:895 +#: pg_dump.c:914 #, c-format msgid " -b, --blobs include large objects in dump\n" msgstr " -b, --blobs Large Objects mit ausgeben\n" -#: pg_dump.c:896 pg_restore.c:451 +#: pg_dump.c:915 pg_restore.c:457 #, c-format msgid " -c, --clean clean (drop) database objects before recreating\n" msgstr " -c, --clean Datenbankobjekte vor der Wiedererstellung löschen\n" -#: pg_dump.c:897 +#: pg_dump.c:916 #, c-format msgid " -C, --create include commands to create database in dump\n" msgstr "" " -C, --create Anweisungen zum Erstellen der Datenbank in\n" " Ausgabe einfügen\n" -#: pg_dump.c:898 +#: pg_dump.c:917 #, c-format msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" msgstr " -E, --encoding=KODIERUNG Daten in Kodierung KODIERUNG ausgeben\n" -#: pg_dump.c:899 +#: pg_dump.c:918 #, c-format msgid " -n, --schema=SCHEMA dump the named schema(s) only\n" msgstr " -n, --schema=SCHEMA nur das/die angegebene(n) Schema(s) ausgeben\n" -#: pg_dump.c:900 +#: pg_dump.c:919 #, c-format msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n" msgstr " -N, --exclude-schema=SCHEMA das/die angegebene(n) Schema(s) NICHT ausgeben\n" -#: pg_dump.c:901 pg_dumpall.c:561 +#: pg_dump.c:920 pg_dumpall.c:560 #, c-format msgid " -o, --oids include OIDs in dump\n" msgstr " -o, --oids OIDs mit ausgeben\n" -#: pg_dump.c:902 +#: pg_dump.c:921 #, c-format msgid "" " -O, --no-owner skip restoration of object ownership in\n" @@ -1540,58 +1541,58 @@ msgstr "" " -O, --no-owner Wiederherstellung der Objekteigentümerschaft im\n" " »plain text«-Format auslassen\n" -#: pg_dump.c:904 pg_dumpall.c:564 +#: pg_dump.c:923 pg_dumpall.c:563 #, c-format msgid " -s, --schema-only dump only the schema, no data\n" msgstr " -s, --schema-only nur das Schema, nicht die Daten, ausgeben\n" -#: pg_dump.c:905 +#: pg_dump.c:924 #, c-format msgid " -S, --superuser=NAME superuser user name to use in plain-text format\n" msgstr " -S, --superuser=NAME Superusername für »plain text«-Format\n" -#: pg_dump.c:906 +#: pg_dump.c:925 #, c-format msgid " -t, --table=TABLE dump the named table(s) only\n" msgstr " -t, --table=TABELLE nur die angegebene(n) Tabelle(n) ausgeben\n" -#: pg_dump.c:907 +#: pg_dump.c:926 #, c-format msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n" msgstr " -T, --exclude-table=TABELLE die angegebene(n) Tabelle(n) NICHT ausgeben\n" -#: pg_dump.c:908 pg_dumpall.c:567 +#: pg_dump.c:927 pg_dumpall.c:566 #, c-format msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" msgstr " -x, --no-privileges Zugriffsprivilegien (grant/revoke) nicht ausgeben\n" -#: pg_dump.c:909 pg_dumpall.c:568 +#: pg_dump.c:928 pg_dumpall.c:567 #, c-format msgid " --binary-upgrade for use by upgrade utilities only\n" msgstr " --binary-upgrade wird nur von Upgrade-Programmen verwendet\n" -#: pg_dump.c:910 pg_dumpall.c:569 +#: pg_dump.c:929 pg_dumpall.c:568 #, c-format msgid " --column-inserts dump data as INSERT commands with column names\n" msgstr "" " --column-inserts Daten als INSERT-Anweisungen mit Spaltennamen\n" " ausgeben\n" -#: pg_dump.c:911 pg_dumpall.c:570 +#: pg_dump.c:930 pg_dumpall.c:569 #, c-format msgid " --disable-dollar-quoting disable dollar quoting, use SQL standard quoting\n" msgstr "" " --disable-dollar-quoting Dollar-Quoting abschalten, normales SQL-Quoting\n" " verwenden\n" -#: pg_dump.c:912 pg_dumpall.c:571 pg_restore.c:467 +#: pg_dump.c:931 pg_dumpall.c:570 pg_restore.c:473 #, c-format msgid " --disable-triggers disable triggers during data-only restore\n" msgstr "" " --disable-triggers Trigger während der Datenwiederherstellung\n" " abschalten\n" -#: pg_dump.c:913 +#: pg_dump.c:932 #, c-format msgid "" " --enable-row-security enable row security (dump only content user has\n" @@ -1600,68 +1601,68 @@ msgstr "" " --enable-row-security Sicherheit auf Zeilenebene einschalten (nur Daten\n" " ausgeben, auf die der Benutzer Zugriff hat)\n" -#: pg_dump.c:915 +#: pg_dump.c:934 #, c-format msgid " --exclude-table-data=TABLE do NOT dump data for the named table(s)\n" msgstr " --exclude-table-data=TABELLE Daten der angegebenen Tabelle(n) NICHT ausgeben\n" -#: pg_dump.c:916 pg_dumpall.c:572 pg_restore.c:469 +#: pg_dump.c:935 pg_dumpall.c:571 pg_restore.c:475 #, c-format msgid " --if-exists use IF EXISTS when dropping objects\n" msgstr " --if-exists IF EXISTS verwenden, wenn Objekte gelöscht werden\n" -#: pg_dump.c:917 pg_dumpall.c:573 +#: pg_dump.c:936 pg_dumpall.c:572 #, c-format msgid " --inserts dump data as INSERT commands, rather than COPY\n" msgstr " --inserts Daten als INSERT-Anweisungen statt COPY ausgeben\n" -#: pg_dump.c:918 pg_dumpall.c:574 +#: pg_dump.c:937 pg_dumpall.c:573 #, c-format msgid " --no-security-labels do not dump security label assignments\n" msgstr " --no-security-labels Security-Label-Zuweisungen nicht ausgeben\n" -#: pg_dump.c:919 +#: pg_dump.c:938 #, c-format msgid " --no-synchronized-snapshots do not use synchronized snapshots in parallel jobs\n" msgstr "" " --no-synchronized-snapshots keine synchronisierten Snapshots in parallelen\n" " Jobs verwenden\n" -#: pg_dump.c:920 pg_dumpall.c:575 +#: pg_dump.c:939 pg_dumpall.c:574 #, c-format msgid " --no-tablespaces do not dump tablespace assignments\n" msgstr " --no-tablespaces Tablespace-Zuordnungen nicht ausgeben\n" -#: pg_dump.c:921 pg_dumpall.c:576 +#: pg_dump.c:940 pg_dumpall.c:575 #, c-format msgid " --no-unlogged-table-data do not dump unlogged table data\n" msgstr " --no-unlogged-table-data Daten in ungeloggten Tabellen nicht ausgeben\n" -#: pg_dump.c:922 pg_dumpall.c:577 +#: pg_dump.c:941 pg_dumpall.c:576 #, c-format msgid " --quote-all-identifiers quote all identifiers, even if not key words\n" msgstr "" " --quote-all-identifiers alle Bezeichner in Anführungszeichen, selbst wenn\n" " kein Schlüsselwort\n" -#: pg_dump.c:923 +#: pg_dump.c:942 #, c-format msgid " --section=SECTION dump named section (pre-data, data, or post-data)\n" msgstr "" " --section=ABSCHNITT angegebenen Abschnitt ausgeben (pre-data, data\n" " oder post-data)\n" -#: pg_dump.c:924 +#: pg_dump.c:943 #, c-format msgid " --serializable-deferrable wait until the dump can run without anomalies\n" msgstr " --serializable-deferrable warten bis der Dump ohne Anomalien laufen kann\n" -#: pg_dump.c:925 +#: pg_dump.c:944 #, c-format msgid " --snapshot=SNAPSHOT use given snapshot for the dump\n" msgstr " --snapshot=SNAPSHOT angegebenen Snapshot für den Dump verwenden\n" -#: pg_dump.c:926 pg_restore.c:475 +#: pg_dump.c:945 pg_restore.c:481 #, c-format msgid "" " --strict-names require table and/or schema include patterns to\n" @@ -1670,7 +1671,7 @@ msgstr "" " --strict-names Tabellen- oder Schemamuster müssen auf mindestens\n" " je ein Objekt passen\n" -#: pg_dump.c:928 pg_dumpall.c:578 pg_restore.c:477 +#: pg_dump.c:947 pg_dumpall.c:577 pg_restore.c:483 #, c-format msgid "" " --use-set-session-authorization\n" @@ -1682,7 +1683,7 @@ msgstr "" " OWNER Befehle verwenden, um Eigentümerschaft zu\n" " setzen\n" -#: pg_dump.c:932 pg_dumpall.c:582 pg_restore.c:481 +#: pg_dump.c:951 pg_dumpall.c:581 pg_restore.c:487 #, c-format msgid "" "\n" @@ -1691,42 +1692,42 @@ msgstr "" "\n" "Verbindungsoptionen:\n" -#: pg_dump.c:933 +#: pg_dump.c:952 #, c-format msgid " -d, --dbname=DBNAME database to dump\n" msgstr " -d, --dbname=DBNAME auszugebende Datenbank\n" -#: pg_dump.c:934 pg_dumpall.c:584 pg_restore.c:482 +#: pg_dump.c:953 pg_dumpall.c:583 pg_restore.c:488 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=HOSTNAME Name des Datenbankservers oder Socket-Verzeichnis\n" -#: pg_dump.c:935 pg_dumpall.c:586 pg_restore.c:483 +#: pg_dump.c:954 pg_dumpall.c:585 pg_restore.c:489 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=PORT Portnummer des Datenbankservers\n" -#: pg_dump.c:936 pg_dumpall.c:587 pg_restore.c:484 +#: pg_dump.c:955 pg_dumpall.c:586 pg_restore.c:490 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=NAME Datenbankbenutzername\n" -#: pg_dump.c:937 pg_dumpall.c:588 pg_restore.c:485 +#: pg_dump.c:956 pg_dumpall.c:587 pg_restore.c:491 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password niemals nach Passwort fragen\n" -#: pg_dump.c:938 pg_dumpall.c:589 pg_restore.c:486 +#: pg_dump.c:957 pg_dumpall.c:588 pg_restore.c:492 #, c-format msgid " -W, --password force password prompt (should happen automatically)\n" msgstr " -W, --password nach Passwort fragen (sollte automatisch geschehen)\n" -#: pg_dump.c:939 pg_dumpall.c:590 +#: pg_dump.c:958 pg_dumpall.c:589 #, c-format msgid " --role=ROLENAME do SET ROLE before dump\n" msgstr " --role=ROLLENNAME vor der Ausgabe SET ROLE ausführen\n" -#: pg_dump.c:941 +#: pg_dump.c:960 #, c-format msgid "" "\n" @@ -1739,17 +1740,17 @@ msgstr "" "PGDATABASE verwendet.\n" "\n" -#: pg_dump.c:943 pg_dumpall.c:594 pg_restore.c:493 +#: pg_dump.c:962 pg_dumpall.c:593 pg_restore.c:499 #, c-format msgid "Report bugs to .\n" msgstr "Berichten Sie Fehler an .\n" -#: pg_dump.c:960 +#: pg_dump.c:979 #, c-format msgid "invalid client encoding \"%s\" specified\n" msgstr "ungültige Clientkodierung »%s« angegeben\n" -#: pg_dump.c:1100 +#: pg_dump.c:1121 #, c-format msgid "" "Synchronized snapshots are not supported on standby servers.\n" @@ -1760,366 +1761,381 @@ msgstr "" "Verwenden Sie --no-synchronized-snapshots, wenn Sie keine synchronisierten\n" "Snapshots benötigen.\n" -#: pg_dump.c:1169 +#: pg_dump.c:1190 #, c-format msgid "invalid output format \"%s\" specified\n" msgstr "ungültiges Ausgabeformat »%s« angegeben\n" -#: pg_dump.c:1192 +#: pg_dump.c:1213 #, c-format msgid "server version must be at least 7.3 to use schema selection switches\n" msgstr "Serverversion muss mindestens 7.3 sein um Schemas auswählen zu können\n" -#: pg_dump.c:1210 pg_dump.c:1263 +#: pg_dump.c:1231 +#, c-format +msgid "no matching schemas were found for pattern \"%s\"\n" +msgstr "keine passenden Schemas für Muster »%s« gefunden\n" + +#: pg_dump.c:1284 #, c-format msgid "no matching tables were found for pattern \"%s\"\n" msgstr "keine passenden Tabellen für Muster »%s« gefunden\n" -#: pg_dump.c:1642 +#: pg_dump.c:1671 #, c-format msgid "dumping contents of table \"%s.%s\"\n" msgstr "gebe Inhalt der Tabelle »%s.%s« aus\n" -#: pg_dump.c:1766 +#: pg_dump.c:1795 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" msgstr "Ausgabe des Inhalts der Tabelle »%s« fehlgeschlagen: PQgetCopyData() fehlgeschlagen.\n" -#: pg_dump.c:1767 pg_dump.c:1777 +#: pg_dump.c:1796 pg_dump.c:1806 #, c-format msgid "Error message from server: %s" msgstr "Fehlermeldung vom Server: %s" -#: pg_dump.c:1768 pg_dump.c:1778 +#: pg_dump.c:1797 pg_dump.c:1807 #, c-format msgid "The command was: %s\n" msgstr "Die Anweisung war: %s\n" -#: pg_dump.c:1776 +#: pg_dump.c:1805 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetResult() failed.\n" msgstr "Ausgabe des Inhalts der Tabelle »%s« fehlgeschlagen: PQgetResult() fehlgeschlagen.\n" -#: pg_dump.c:2425 +#: pg_dump.c:2454 #, c-format msgid "saving database definition\n" msgstr "sichere Datenbankdefinition\n" -#: pg_dump.c:2758 +#: pg_dump.c:2788 #, c-format msgid "saving encoding = %s\n" msgstr "sichere Kodierung = %s\n" -#: pg_dump.c:2785 +#: pg_dump.c:2815 #, c-format msgid "saving standard_conforming_strings = %s\n" msgstr "sichere standard_conforming_strings = %s\n" -#: pg_dump.c:2825 +#: pg_dump.c:2855 #, c-format msgid "reading large objects\n" msgstr "lese Large Objects\n" -#: pg_dump.c:3011 +#: pg_dump.c:3056 #, c-format msgid "saving large objects\n" msgstr "sichere Large Objects\n" -#: pg_dump.c:3058 +#: pg_dump.c:3103 #, c-format msgid "error reading large object %u: %s" msgstr "Fehler beim Lesen von Large Object %u: %s" -#: pg_dump.c:3110 +#: pg_dump.c:3155 #, c-format msgid "reading row security enabled for table \"%s.%s\"\n" msgstr "lese Einstellung von Sicherheit auf Zeilenebene für Tabelle »%s.%s«\n" -#: pg_dump.c:3141 +#: pg_dump.c:3186 #, c-format msgid "reading policies for table \"%s.%s\"\n" msgstr "lese Policys von Tabelle »%s.%s«\n" -#: pg_dump.c:3274 +#: pg_dump.c:3319 #, c-format msgid "unexpected policy command type: \"%s\"\n" msgstr "unerwarteter Policy-Befehlstyp: »%s«\n" -#: pg_dump.c:3493 +#: pg_dump.c:3538 #, c-format msgid "could not find parent extension for %s\n" msgstr "konnte Erweiterung, zu der %s gehört, nicht finden\n" -#: pg_dump.c:3661 +#: pg_dump.c:3731 #, c-format msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" msgstr "WARNUNG: Eigentümer des Schemas »%s« scheint ungültig zu sein\n" -#: pg_dump.c:3704 +#: pg_dump.c:3774 #, c-format msgid "schema with OID %u does not exist\n" msgstr "Schema mit OID %u existiert nicht\n" -#: pg_dump.c:4119 +#: pg_dump.c:4189 #, c-format msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" msgstr "WARNUNG: Eigentümer des Datentypen »%s« scheint ungültig zu sein\n" -#: pg_dump.c:4233 +#: pg_dump.c:4303 #, c-format msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" msgstr "WARNUNG: Eigentümer des Operatoren »%s« scheint ungültig zu sein\n" -#: pg_dump.c:4578 +#: pg_dump.c:4648 #, c-format msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" msgstr "WARNUNG: Eigentümer der Operatorklasse »%s« scheint ungültig zu sein\n" -#: pg_dump.c:4669 +#: pg_dump.c:4739 #, c-format msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" msgstr "WARNUNG: Eigentümer der Operatorfamilie »%s« scheint ungültig zu sein\n" -#: pg_dump.c:4870 +#: pg_dump.c:4940 #, c-format msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" msgstr "WARNUNG: Eigentümer der Aggregatfunktion »%s« scheint ungültig zu sein\n" -#: pg_dump.c:5135 +#: pg_dump.c:5237 #, c-format msgid "WARNING: owner of function \"%s\" appears to be invalid\n" msgstr "WARNUNG: Eigentümer der Funktion »%s« scheint ungültig zu sein\n" -#: pg_dump.c:5996 +#: pg_dump.c:6099 #, c-format msgid "WARNING: owner of table \"%s\" appears to be invalid\n" msgstr "WARNUNG: Eigentümer der Tabelle »%s« scheint ungültig zu sein\n" -#: pg_dump.c:6148 +#: pg_dump.c:6141 pg_dump.c:16665 +#, c-format +msgid "failed sanity check, parent table OID %u of sequence OID %u not found\n" +msgstr "Sanity-Check fehlgeschlagen, Elterntabelle mit OID %u von Sequenz mit OID %u nicht gefunden\n" + +#: pg_dump.c:6268 #, c-format msgid "reading indexes for table \"%s.%s\"\n" msgstr "lese Indexe von Tabelle »%s.%s«\n" -#: pg_dump.c:6516 +#: pg_dump.c:6636 #, c-format msgid "reading foreign key constraints for table \"%s.%s\"\n" msgstr "lese Fremdschlüssel-Constraints von Tabelle »%s.%s«\n" -#: pg_dump.c:6762 +#: pg_dump.c:6882 #, c-format msgid "failed sanity check, parent table OID %u of pg_rewrite entry OID %u not found\n" -msgstr "Sanity-Check fehlgeschlagen, Elterntabelle %u von pg_rewrite-Eintrag OID %u nicht gefunden\n" +msgstr "Sanity-Check fehlgeschlagen, Elterntabelle mit OID %u von pg_rewrite-Eintrag mit OID %u nicht gefunden\n" -#: pg_dump.c:6856 +#: pg_dump.c:6976 #, c-format msgid "reading triggers for table \"%s.%s\"\n" msgstr "lese Trigger von Tabelle »%s.%s«\n" -#: pg_dump.c:7021 +#: pg_dump.c:7141 #, c-format msgid "query produced null referenced table name for foreign key trigger \"%s\" on table \"%s\" (OID of table: %u)\n" msgstr "Anfrage ergab NULL als Name der Tabelle auf die sich Fremdschlüssel-Trigger »%s« von Tabelle »%s« bezieht (OID der Tabelle: %u)\n" -#: pg_dump.c:7676 +#: pg_dump.c:7796 #, c-format msgid "finding the columns and types of table \"%s.%s\"\n" msgstr "finde Spalten und Typen von Tabelle »%s.%s«\n" -#: pg_dump.c:7855 +#: pg_dump.c:7975 #, c-format msgid "invalid column numbering in table \"%s\"\n" msgstr "ungültige Spaltennummerierung in Tabelle »%s«\n" -#: pg_dump.c:7889 +#: pg_dump.c:8009 #, c-format msgid "finding default expressions of table \"%s.%s\"\n" msgstr "finde DEFAULT-Ausdrücke von Tabelle »%s.%s«\n" -#: pg_dump.c:7942 +#: pg_dump.c:8062 #, c-format msgid "invalid adnum value %d for table \"%s\"\n" msgstr "ungültiger adnum-Wert %d für Tabelle »%s«\n" -#: pg_dump.c:8014 +#: pg_dump.c:8134 #, c-format msgid "finding check constraints for table \"%s.%s\"\n" msgstr "finde Check-Constraints für Tabelle »%s.%s«\n" -#: pg_dump.c:8110 +#: pg_dump.c:8230 #, c-format msgid "expected %d check constraint on table \"%s\" but found %d\n" msgid_plural "expected %d check constraints on table \"%s\" but found %d\n" msgstr[0] "%d Check-Constraint für Tabelle %s erwartet, aber %d gefunden\n" msgstr[1] "%d Check-Constraints für Tabelle %s erwartet, aber %d gefunden\n" -#: pg_dump.c:8114 +#: pg_dump.c:8234 #, c-format msgid "(The system catalogs might be corrupted.)\n" msgstr "(Die Systemkataloge sind wahrscheinlich verfälscht.)\n" -#: pg_dump.c:9646 +#: pg_dump.c:9813 #, c-format msgid "WARNING: typtype of data type \"%s\" appears to be invalid\n" msgstr "WARNUNG: typtype des Datentypen »%s« scheint ungültig zu sein\n" -#: pg_dump.c:11188 +#: pg_dump.c:11355 #, c-format msgid "WARNING: bogus value in proargmodes array\n" msgstr "WARNUNG: unsinniger Wert in proargmodes-Array\n" -#: pg_dump.c:11566 +#: pg_dump.c:11733 #, c-format msgid "WARNING: could not parse proallargtypes array\n" msgstr "WARNUNG: konnte proallargtypes-Array nicht interpretieren\n" -#: pg_dump.c:11582 +#: pg_dump.c:11749 #, c-format msgid "WARNING: could not parse proargmodes array\n" msgstr "WARNUNG: konnte proargmodes-Array nicht interpretieren\n" -#: pg_dump.c:11596 +#: pg_dump.c:11763 #, c-format msgid "WARNING: could not parse proargnames array\n" msgstr "WARNUNG: konnte proargnames-Array nicht interpretieren\n" -#: pg_dump.c:11607 +#: pg_dump.c:11774 #, c-format msgid "WARNING: could not parse proconfig array\n" msgstr "WARNUNG: konnte proconfig-Array nicht interpretieren\n" -#: pg_dump.c:11678 +#: pg_dump.c:11845 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" msgstr "ungültiger provolatile-Wert für Funktion »%s«\n" -#: pg_dump.c:11722 pg_dump.c:13781 +#: pg_dump.c:11889 pg_dump.c:13950 #, c-format msgid "unrecognized proparallel value for function \"%s\"\n" msgstr "ungültiger proparallel-Wert für Funktion »%s«\n" -#: pg_dump.c:11874 +#: pg_dump.c:11997 pg_dump.c:12107 pg_dump.c:12114 +#, c-format +msgid "could not find function definition for function with OID %u\n" +msgstr "konnte Funktionsdefinition für Funktion mit OID %u nicht finden\n" + +#: pg_dump.c:12042 #, c-format msgid "WARNING: bogus value in pg_cast.castfunc or pg_cast.castmethod field\n" msgstr "WARNUNG: unsinniger Wert in Feld pg_cast.castfunc oder pg_cast.castmethod\n" -#: pg_dump.c:11877 +#: pg_dump.c:12045 #, c-format msgid "WARNING: bogus value in pg_cast.castmethod field\n" msgstr "WARNUNG: unsinniger Wert in Feld pg_cast.castmethod\n" -#: pg_dump.c:11965 +#: pg_dump.c:12135 #, c-format msgid "WARNING: bogus transform definition, at least one of trffromsql and trftosql should be nonzero\n" msgstr "WARNUNG: unsinnige Transformationsdefinition, mindestens eins von trffromsql und trftosql sollte nicht null sein\n" -#: pg_dump.c:11982 +#: pg_dump.c:12152 #, c-format msgid "WARNING: bogus value in pg_transform.trffromsql field\n" msgstr "WARNUNG: unsinniger Wert in Feld pg_transform.trffromsql\n" -#: pg_dump.c:12003 +#: pg_dump.c:12173 #, c-format msgid "WARNING: bogus value in pg_transform.trftosql field\n" msgstr "WARNUNG: unsinniger Wert in Feld pg_transform.trftosql\n" -#: pg_dump.c:12394 +#: pg_dump.c:12564 #, c-format msgid "WARNING: could not find operator with OID %s\n" msgstr "WARNUNG: konnte Operator mit OID %s nicht finden\n" -#: pg_dump.c:12458 +#: pg_dump.c:12628 #, c-format msgid "WARNING: invalid type \"%c\" of access method \"%s\"\n" msgstr "WARNUNG: ungültiger Typ »%c« für Zugriffsmethode »%s«\n" -#: pg_dump.c:13665 +#: pg_dump.c:13841 #, c-format msgid "WARNING: aggregate function %s could not be dumped correctly for this database version; ignored\n" msgstr "WARNUNG: Aggregatfunktion %s konnte für diese Datenbankversion nicht korrekt ausgegeben werden - ignoriert\n" -#: pg_dump.c:14544 +#: pg_dump.c:14713 #, c-format msgid "unrecognized object type in default privileges: %d\n" msgstr "unbekannter Objekttyp in den Vorgabeprivilegien: %d\n" -#: pg_dump.c:14559 +#: pg_dump.c:14731 #, c-format msgid "could not parse default ACL list (%s)\n" msgstr "konnte Vorgabe-ACL-Liste (%s) nicht interpretieren\n" -#: pg_dump.c:14630 +#: pg_dump.c:14812 #, c-format msgid "could not parse initial GRANT ACL list (%s) or initial REVOKE ACL list (%s) for object \"%s\" (%s)\n" msgstr "konnte initiale GRANT-ACL-Liste (%s) oder initiale REVOKE-ACL-Liste (%s) für Objekt »%s« (%s) nicht interpretieren\n" -#: pg_dump.c:14638 +#: pg_dump.c:14820 #, c-format msgid "could not parse GRANT ACL list (%s) or REVOKE ACL list (%s) for object \"%s\" (%s)\n" msgstr "konnte GRANT-ACL-Liste (%s) oder REVOKE-ACL-Liste (%s) für Objekt »%s« (%s) nicht interpretieren\n" -#: pg_dump.c:15122 +#: pg_dump.c:15305 #, c-format msgid "query to obtain definition of view \"%s\" returned no data\n" msgstr "Anfrage um die Definition der Sicht »%s« zu ermitteln lieferte keine Daten\n" -#: pg_dump.c:15125 +#: pg_dump.c:15308 #, c-format msgid "query to obtain definition of view \"%s\" returned more than one definition\n" msgstr "Anfrage um die Definition der Sicht »%s« zu ermitteln lieferte mehr als eine Definition\n" -#: pg_dump.c:15132 +#: pg_dump.c:15315 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)\n" msgstr "Definition der Sicht »%s« scheint leer zu sein (Länge null)\n" -#: pg_dump.c:15891 +#: pg_dump.c:16074 #, c-format msgid "invalid column number %d for table \"%s\"\n" msgstr "ungültige Spaltennummer %d in Tabelle »%s«\n" -#: pg_dump.c:16020 +#: pg_dump.c:16203 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "fehlender Index für Constraint »%s«\n" -#: pg_dump.c:16223 +#: pg_dump.c:16406 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "unbekannter Constraint-Typ: %c\n" -#: pg_dump.c:16377 pg_dump.c:16546 +#: pg_dump.c:16560 pg_dump.c:16733 #, c-format msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" msgid_plural "query to get data of sequence \"%s\" returned %d rows (expected 1)\n" msgstr[0] "Anfrage nach Daten der Sequenz %s ergab %d Zeile (erwartete 1)\n" msgstr[1] "Anfrage nach Daten der Sequenz %s ergab %d Zeilen (erwartete 1)\n" -#: pg_dump.c:16388 +#: pg_dump.c:16571 #, c-format msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" msgstr "Anfrage nach Daten der Sequenz %s ergab Name »%s«\n" -#: pg_dump.c:16644 +#: pg_dump.c:16831 #, c-format msgid "unexpected tgtype value: %d\n" msgstr "unerwarteter tgtype-Wert: %d\n" -#: pg_dump.c:16726 +#: pg_dump.c:16913 #, c-format msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" msgstr "fehlerhafte Argumentzeichenkette (%s) für Trigger »%s« von Tabelle »%s«\n" -#: pg_dump.c:16923 +#: pg_dump.c:17120 #, c-format msgid "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows returned\n" msgstr "Anfrage nach Regel »%s« der Tabelle »%s« fehlgeschlagen: falsche Anzahl Zeilen zurückgegeben\n" -#: pg_dump.c:17312 +#: pg_dump.c:17509 #, c-format msgid "reading dependency data\n" msgstr "lese Abhängigkeitsdaten\n" -#: pg_dump.c:17869 +#: pg_dump.c:18066 #, c-format msgid "WARNING: could not parse reloptions array\n" msgstr "WARNUNG: konnte reloptions-Array nicht interpretieren\n" @@ -2144,34 +2160,34 @@ msgstr "ungültige Abhängigkeit %d\n" msgid "could not identify dependency loop\n" msgstr "konnte Abhängigkeitsschleife nicht bestimmen\n" -#: pg_dump_sort.c:1261 +#: pg_dump_sort.c:1262 #, c-format msgid "NOTICE: there are circular foreign-key constraints on this table:\n" msgid_plural "NOTICE: there are circular foreign-key constraints among these tables:\n" msgstr[0] "HINWEIS: Es gibt zirkuläre Fremdschlüssel-Constraints für diese Tabelle:\n" msgstr[1] "HINWEIS: Es gibt zirkuläre Fremdschlüssel-Constraints zwischen diesen Tabellen:\n" -#: pg_dump_sort.c:1265 pg_dump_sort.c:1285 +#: pg_dump_sort.c:1266 pg_dump_sort.c:1286 #, c-format msgid " %s\n" msgstr " %s\n" -#: pg_dump_sort.c:1266 +#: pg_dump_sort.c:1267 #, c-format msgid "You might not be able to restore the dump without using --disable-triggers or temporarily dropping the constraints.\n" msgstr "Möglicherweise kann der Dump nur wiederhergestellt werden, wenn --disable-triggers verwendet wird oder die Constraints vorübergehend entfernt werden.\n" -#: pg_dump_sort.c:1267 +#: pg_dump_sort.c:1268 #, c-format msgid "Consider using a full dump instead of a --data-only dump to avoid this problem.\n" msgstr "Führen Sie einen vollen Dump statt eines Dumps mit --data-only durch, um dieses Problem zu vermeiden.\n" -#: pg_dump_sort.c:1279 +#: pg_dump_sort.c:1280 #, c-format msgid "WARNING: could not resolve dependency loop among these items:\n" msgstr "WARNUNG: konnte Abhängigkeitsschleife zwischen diesen Elementen nicht auflösen:\n" -#: pg_dumpall.c:182 +#: pg_dumpall.c:180 #, c-format msgid "" "The program \"pg_dump\" is needed by %s but was not found in the\n" @@ -2182,7 +2198,7 @@ msgstr "" "selben Verzeichnis wie »%s« gefunden.\n" "Prüfen Sie Ihre Installation.\n" -#: pg_dumpall.c:189 +#: pg_dumpall.c:187 #, c-format msgid "" "The program \"pg_dump\" was found by \"%s\"\n" @@ -2193,32 +2209,32 @@ msgstr "" "aber war nicht die gleiche Version wie %s.\n" "Prüfen Sie Ihre Installation.\n" -#: pg_dumpall.c:319 +#: pg_dumpall.c:317 #, c-format msgid "%s: options -g/--globals-only and -r/--roles-only cannot be used together\n" msgstr "%s: Optionen -g/--globals-only und -r/--roles-only können nicht zusammen verwendet werden\n" -#: pg_dumpall.c:328 +#: pg_dumpall.c:326 #, c-format msgid "%s: options -g/--globals-only and -t/--tablespaces-only cannot be used together\n" msgstr "%s: Optionen -g/--globals-only und -t/--tablespaces-only können nicht zusammen verwendet werden\n" -#: pg_dumpall.c:337 pg_restore.c:345 +#: pg_dumpall.c:335 pg_restore.c:361 #, c-format msgid "%s: option --if-exists requires option -c/--clean\n" msgstr "%s: Option --if-exists benötigt Option -c/--clean\n" -#: pg_dumpall.c:344 +#: pg_dumpall.c:342 #, c-format msgid "%s: options -r/--roles-only and -t/--tablespaces-only cannot be used together\n" msgstr "%s: Optionen -r/--roles-only und -t/--tablespaces-only können nicht zusammen verwendet werden\n" -#: pg_dumpall.c:386 pg_dumpall.c:1925 +#: pg_dumpall.c:384 pg_dumpall.c:1995 #, c-format msgid "%s: could not connect to database \"%s\"\n" msgstr "%s: konnte nicht mit der Datenbank »%s« verbinden\n" -#: pg_dumpall.c:401 +#: pg_dumpall.c:399 #, c-format msgid "" "%s: could not connect to databases \"postgres\" or \"template1\"\n" @@ -2227,12 +2243,12 @@ msgstr "" "%s: konnte nicht mit Datenbank »postgres« oder »template1« verbinden\n" "Bitte geben Sie eine alternative Datenbank an.\n" -#: pg_dumpall.c:418 +#: pg_dumpall.c:416 #, c-format msgid "%s: could not open the output file \"%s\": %s\n" msgstr "%s: konnte die Ausgabedatei »%s« nicht öffnen: %s\n" -#: pg_dumpall.c:548 +#: pg_dumpall.c:546 #, c-format msgid "" "%s extracts a PostgreSQL database cluster into an SQL script file.\n" @@ -2241,63 +2257,63 @@ msgstr "" "%s gibt einen PostgreSQL-Datenbankcluster in eine SQL-Skriptdatei aus.\n" "\n" -#: pg_dumpall.c:550 +#: pg_dumpall.c:548 #, c-format msgid " %s [OPTION]...\n" msgstr " %s [OPTION]...\n" -#: pg_dumpall.c:553 +#: pg_dumpall.c:551 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=DATEINAME Name der Ausgabedatei\n" -#: pg_dumpall.c:559 +#: pg_dumpall.c:558 #, c-format msgid " -c, --clean clean (drop) databases before recreating\n" msgstr " -c, --clean Datenbanken vor der Wiedererstellung löschen\n" -#: pg_dumpall.c:560 +#: pg_dumpall.c:559 #, c-format msgid " -g, --globals-only dump only global objects, no databases\n" msgstr " -g, --globals-only nur globale Objekte ausgeben, keine Datenbanken\n" -#: pg_dumpall.c:562 pg_restore.c:459 +#: pg_dumpall.c:561 pg_restore.c:465 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr "" " -O, --no-owner Wiederherstellung der Objekteigentümerschaft\n" " auslassen\n" -#: pg_dumpall.c:563 +#: pg_dumpall.c:562 #, c-format msgid " -r, --roles-only dump only roles, no databases or tablespaces\n" msgstr "" " -r, --roles-only nur Rollen ausgeben, keine Datenbanken oder\n" " Tablespaces\n" -#: pg_dumpall.c:565 +#: pg_dumpall.c:564 #, c-format msgid " -S, --superuser=NAME superuser user name to use in the dump\n" msgstr " -S, --superuser=NAME Superusername für den Dump\n" -#: pg_dumpall.c:566 +#: pg_dumpall.c:565 #, c-format msgid " -t, --tablespaces-only dump only tablespaces, no databases or roles\n" msgstr "" " -t, --tablespaces-only nur Tablespaces ausgeben, keine Datenbanken oder\n" " Rollen\n" -#: pg_dumpall.c:583 +#: pg_dumpall.c:582 #, c-format msgid " -d, --dbname=CONNSTR connect using connection string\n" msgstr " -d, --dbname=VERBDG mit angegebenen Verbindungsparametern verbinden\n" -#: pg_dumpall.c:585 +#: pg_dumpall.c:584 #, c-format msgid " -l, --database=DBNAME alternative default database\n" msgstr " -l, --database=DBNAME alternative Standarddatenbank\n" -#: pg_dumpall.c:592 +#: pg_dumpall.c:591 #, c-format msgid "" "\n" @@ -2310,67 +2326,67 @@ msgstr "" "Standardausgabe geschrieben.\n" "\n" -#: pg_dumpall.c:793 +#: pg_dumpall.c:792 #, c-format msgid "%s: role name starting with \"pg_\" skipped (%s)\n" msgstr "%s: mit »pg_« anfangender Rollenname übersprungen (%s)\n" -#: pg_dumpall.c:1144 +#: pg_dumpall.c:1169 #, c-format msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n" msgstr "%s: konnte ACL-Zeichenkette (%s) für Tablespace »%s« nicht interpretieren\n" -#: pg_dumpall.c:1475 +#: pg_dumpall.c:1537 #, c-format msgid "%s: could not parse ACL list (%s) for database \"%s\"\n" msgstr "%s: konnte ACL-Zeichenkette (%s) für Datenbank »%s« nicht interpretieren\n" -#: pg_dumpall.c:1692 +#: pg_dumpall.c:1755 #, c-format msgid "%s: dumping database \"%s\"...\n" msgstr "%s: Ausgabe der Datenbank »%s«...\n" -#: pg_dumpall.c:1713 +#: pg_dumpall.c:1779 #, c-format msgid "%s: pg_dump failed on database \"%s\", exiting\n" msgstr "%s: pg_dump für Datenbank »%s« fehlgeschlagen; beende\n" -#: pg_dumpall.c:1722 +#: pg_dumpall.c:1788 #, c-format msgid "%s: could not re-open the output file \"%s\": %s\n" msgstr "%s: konnte die Ausgabedatei »%s« nicht neu öffnen: %s\n" -#: pg_dumpall.c:1767 +#: pg_dumpall.c:1833 #, c-format msgid "%s: running \"%s\"\n" msgstr "%s: führe »%s« aus\n" -#: pg_dumpall.c:1947 +#: pg_dumpall.c:2017 #, c-format msgid "%s: could not connect to database \"%s\": %s\n" msgstr "%s: konnte nicht mit der Datenbank »%s« verbinden: %s\n" -#: pg_dumpall.c:1977 +#: pg_dumpall.c:2047 #, c-format msgid "%s: could not get server version\n" msgstr "%s: konnte Version des Servers nicht ermitteln\n" -#: pg_dumpall.c:1983 +#: pg_dumpall.c:2053 #, c-format msgid "%s: could not parse server version \"%s\"\n" msgstr "%s: konnte Versionszeichenkette »%s« nicht entziffern\n" -#: pg_dumpall.c:2061 pg_dumpall.c:2087 +#: pg_dumpall.c:2131 pg_dumpall.c:2157 #, c-format msgid "%s: executing %s\n" msgstr "%s: führe %s aus\n" -#: pg_dumpall.c:2067 pg_dumpall.c:2093 +#: pg_dumpall.c:2137 pg_dumpall.c:2163 #, c-format msgid "%s: query failed: %s" msgstr "%s: Anfrage fehlgeschlagen: %s" -#: pg_dumpall.c:2069 pg_dumpall.c:2095 +#: pg_dumpall.c:2139 pg_dumpall.c:2165 #, c-format msgid "%s: query was: %s\n" msgstr "%s: Anfrage war: %s\n" @@ -2390,27 +2406,32 @@ msgstr "%s: Optionen -s/--schema-only und -a/--data-only können nicht zusammen msgid "%s: options -c/--clean and -a/--data-only cannot be used together\n" msgstr "%s: Optionen -c/--clean und -a/--data-only können nicht zusammen verwendet werden\n" -#: pg_restore.c:331 +#: pg_restore.c:330 +#, c-format +msgid "%s: invalid number of parallel jobs\n" +msgstr "%s: ungültige Anzahl paralleler Jobs\n" + +#: pg_restore.c:338 +#, c-format +msgid "%s: maximum number of parallel jobs is %d\n" +msgstr "%s: maximale Anzahl paralleler Jobs ist %d\n" + +#: pg_restore.c:347 #, c-format msgid "%s: cannot specify both --single-transaction and multiple jobs\n" msgstr "%s: --single-transaction und mehrere Jobs können nicht zusammen verwendet werden\n" -#: pg_restore.c:372 +#: pg_restore.c:388 #, c-format msgid "unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"t\"\n" msgstr "unbekanntes Archivformat »%s«; bitte »c«, »d« oder »t« angeben\n" -#: pg_restore.c:404 -#, c-format -msgid "%s: maximum number of parallel jobs is %d\n" -msgstr "%s: maximale Anzahl paralleler Jobs ist %d\n" - -#: pg_restore.c:422 +#: pg_restore.c:428 #, c-format msgid "WARNING: errors ignored on restore: %d\n" msgstr "WARNUNG: bei Wiederherstellung ignorierte Fehler: %d\n" -#: pg_restore.c:436 +#: pg_restore.c:442 #, c-format msgid "" "%s restores a PostgreSQL database from an archive created by pg_dump.\n" @@ -2420,47 +2441,47 @@ msgstr "" "gesichert wurde.\n" "\n" -#: pg_restore.c:438 +#: pg_restore.c:444 #, c-format msgid " %s [OPTION]... [FILE]\n" msgstr " %s [OPTION]... [DATEI]\n" -#: pg_restore.c:441 +#: pg_restore.c:447 #, c-format msgid " -d, --dbname=NAME connect to database name\n" msgstr " -d, --dbname=NAME mit angegebener Datenbank verbinden\n" -#: pg_restore.c:442 +#: pg_restore.c:448 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=DATEINAME Name der Ausgabedatei\n" -#: pg_restore.c:443 +#: pg_restore.c:449 #, c-format msgid " -F, --format=c|d|t backup file format (should be automatic)\n" msgstr " -F, --format=c|d|t Format der Backup-Datei (sollte automatisch gehen)\n" -#: pg_restore.c:444 +#: pg_restore.c:450 #, c-format msgid " -l, --list print summarized TOC of the archive\n" msgstr " -l, --list Inhaltsverzeichnis für dieses Archiv anzeigen\n" -#: pg_restore.c:445 +#: pg_restore.c:451 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose »Verbose«-Modus\n" -#: pg_restore.c:446 +#: pg_restore.c:452 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version Versionsinformationen anzeigen, dann beenden\n" -#: pg_restore.c:447 +#: pg_restore.c:453 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help diese Hilfe anzeigen, dann beenden\n" -#: pg_restore.c:449 +#: pg_restore.c:455 #, c-format msgid "" "\n" @@ -2469,34 +2490,34 @@ msgstr "" "\n" "Optionen die die Wiederherstellung kontrollieren:\n" -#: pg_restore.c:450 +#: pg_restore.c:456 #, c-format msgid " -a, --data-only restore only the data, no schema\n" msgstr " -a, --data-only nur Daten, nicht das Schema, wiederherstellen\n" -#: pg_restore.c:452 +#: pg_restore.c:458 #, c-format msgid " -C, --create create the target database\n" msgstr " -C, --create Zieldatenbank erzeugen\n" -#: pg_restore.c:453 +#: pg_restore.c:459 #, c-format msgid " -e, --exit-on-error exit on error, default is to continue\n" msgstr " -e, --exit-on-error bei Fehler beenden, Voreinstellung ist fortsetzen\n" -#: pg_restore.c:454 +#: pg_restore.c:460 #, c-format msgid " -I, --index=NAME restore named index\n" msgstr " -I, --index=NAME benannten Index wiederherstellen\n" -#: pg_restore.c:455 +#: pg_restore.c:461 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to restore\n" msgstr "" " -j, --jobs=NUM so viele parallele Jobs zur Wiederherstellung\n" " verwenden\n" -#: pg_restore.c:456 +#: pg_restore.c:462 #, c-format msgid "" " -L, --use-list=FILENAME use table of contents from this file for\n" @@ -2506,54 +2527,54 @@ msgstr "" " Inhaltsverzeichnis aus dieser Datei zur Auswahl oder\n" " Sortierung der Ausgabe verwenden\n" -#: pg_restore.c:458 +#: pg_restore.c:464 #, c-format msgid " -n, --schema=NAME restore only objects in this schema\n" msgstr " -n, --schema=NAME nur Objekte in diesem Schema wiederherstellen\n" -#: pg_restore.c:460 +#: pg_restore.c:466 #, c-format msgid " -P, --function=NAME(args) restore named function\n" msgstr " -P, --function=NAME(args) benannte Funktion wiederherstellen\n" -#: pg_restore.c:461 +#: pg_restore.c:467 #, c-format msgid " -s, --schema-only restore only the schema, no data\n" msgstr " -s, --schema-only nur das Schema, nicht die Daten, wiederherstellen\n" -#: pg_restore.c:462 +#: pg_restore.c:468 #, c-format msgid " -S, --superuser=NAME superuser user name to use for disabling triggers\n" msgstr " -S, --superuser=NAME Name des Superusers, um Trigger auszuschalten\n" -#: pg_restore.c:463 +#: pg_restore.c:469 #, c-format msgid " -t, --table=NAME restore named relation (table, view, etc.)\n" msgstr "" " -t, --table=NAME benannte Relation (Tabelle, Sicht, usw.)\n" " wiederherstellen\n" -#: pg_restore.c:464 +#: pg_restore.c:470 #, c-format msgid " -T, --trigger=NAME restore named trigger\n" msgstr " -T, --trigger=NAME benannten Trigger wiederherstellen\n" -#: pg_restore.c:465 +#: pg_restore.c:471 #, c-format msgid " -x, --no-privileges skip restoration of access privileges (grant/revoke)\n" msgstr " -x, --no-privileges Wiederherstellung der Zugriffsprivilegien auslassen\n" -#: pg_restore.c:466 +#: pg_restore.c:472 #, c-format msgid " -1, --single-transaction restore as a single transaction\n" msgstr " -1, --single-transaction Wiederherstellung als eine einzige Transaktion\n" -#: pg_restore.c:468 +#: pg_restore.c:474 #, c-format msgid " --enable-row-security enable row security\n" msgstr " --enable-row-security Sicherheit auf Zeilenebene einschalten\n" -#: pg_restore.c:470 +#: pg_restore.c:476 #, c-format msgid "" " --no-data-for-failed-tables do not restore data of tables that could not be\n" @@ -2562,29 +2583,29 @@ msgstr "" " --no-data-for-failed-tables Daten für Tabellen, die nicht erzeugt werden\n" " konnten, nicht wiederherstellen\n" -#: pg_restore.c:472 +#: pg_restore.c:478 #, c-format msgid " --no-security-labels do not restore security labels\n" msgstr " --no-security-labels Security-Labels nicht wiederherstellen\n" -#: pg_restore.c:473 +#: pg_restore.c:479 #, c-format msgid " --no-tablespaces do not restore tablespace assignments\n" msgstr " --no-tablespaces Tablespace-Zuordnungen nicht wiederherstellen\n" -#: pg_restore.c:474 +#: pg_restore.c:480 #, c-format msgid " --section=SECTION restore named section (pre-data, data, or post-data)\n" msgstr "" " --section=ABSCHNITT angegebenen Abschnitt wiederherstellen (pre-data,\n" " data oder post-data)\n" -#: pg_restore.c:487 +#: pg_restore.c:493 #, c-format msgid " --role=ROLENAME do SET ROLE before restore\n" msgstr " --role=ROLLENNAME vor der Wiederherstellung SET ROLE ausführen\n" -#: pg_restore.c:489 +#: pg_restore.c:495 #, c-format msgid "" "\n" @@ -2595,7 +2616,7 @@ msgstr "" "Die Optionen -I, -n, -P, -t, -T und --section können kombiniert und mehrfach\n" "angegeben werden, um mehrere Objekte auszuwählen.\n" -#: pg_restore.c:492 +#: pg_restore.c:498 #, c-format msgid "" "\n" diff --git a/src/bin/pg_dump/po/es.po b/src/bin/pg_dump/po/es.po index 8b8d928558..2396ea6a7f 100644 --- a/src/bin/pg_dump/po/es.po +++ b/src/bin/pg_dump/po/es.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: pg_dump (PostgreSQL 9.6)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-05-02 20:14+0000\n" -"PO-Revision-Date: 2016-05-24 10:40-0500\n" +"POT-Creation-Date: 2017-08-27 21:52+0000\n" +"PO-Revision-Date: 2017-08-28 11:37+0200\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL Español \n" "Language: es\n" @@ -58,8 +58,8 @@ msgid "pclose failed: %s" msgstr "pclose falló: %s" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 -#: ../../common/fe_memutils.c:98 pg_backup_db.c:137 pg_backup_db.c:188 -#: pg_backup_db.c:245 pg_backup_db.c:287 +#: ../../common/fe_memutils.c:98 pg_backup_db.c:158 pg_backup_db.c:213 +#: pg_backup_db.c:272 pg_backup_db.c:314 #, c-format msgid "out of memory\n" msgstr "memoria agotada\n" @@ -294,88 +294,78 @@ msgid "could not parse numeric array \"%s\": invalid character in number\n" msgstr "no se pudo interpretar el arreglo numérico «%s»: carácter no válido en número\n" #. translator: this is a module name -#: compress_io.c:79 +#: compress_io.c:78 msgid "compress_io" msgstr "compress_io" -#: compress_io.c:115 +#: compress_io.c:114 #, c-format msgid "invalid compression code: %d\n" msgstr "código de compresión no válido: %d\n" -#: compress_io.c:139 compress_io.c:175 compress_io.c:196 compress_io.c:529 -#: compress_io.c:572 +#: compress_io.c:138 compress_io.c:174 compress_io.c:192 compress_io.c:519 +#: compress_io.c:562 #, c-format msgid "not built with zlib support\n" msgstr "no contiene soporte zlib\n" -#: compress_io.c:246 compress_io.c:348 +#: compress_io.c:242 compress_io.c:344 #, c-format msgid "could not initialize compression library: %s\n" msgstr "no se pudo inicializar la biblioteca de compresión: %s\n" -#: compress_io.c:267 +#: compress_io.c:263 #, c-format msgid "could not close compression stream: %s\n" msgstr "no se pudo cerrar el flujo comprimido: %s\n" -#: compress_io.c:285 +#: compress_io.c:281 #, c-format msgid "could not compress data: %s\n" msgstr "no se pudo comprimir datos: %s\n" -#: compress_io.c:368 compress_io.c:384 +#: compress_io.c:361 compress_io.c:377 #, c-format msgid "could not uncompress data: %s\n" msgstr "no se pudo descomprimir datos: %s\n" -#: compress_io.c:392 +#: compress_io.c:385 #, c-format msgid "could not close compression library: %s\n" msgstr "no se pudo cerrar la biblioteca de compresión: %s\n" -#: compress_io.c:606 compress_io.c:642 pg_backup_custom.c:591 -#: pg_backup_tar.c:561 +#: compress_io.c:600 compress_io.c:638 pg_backup_custom.c:591 +#: pg_backup_tar.c:566 pg_backup_tar.c:570 #, c-format msgid "could not read from input file: %s\n" msgstr "no se pudo leer el archivo de entrada: %s\n" -#: compress_io.c:645 pg_backup_custom.c:588 pg_backup_directory.c:552 -#: pg_backup_tar.c:797 pg_backup_tar.c:821 +#: compress_io.c:641 pg_backup_custom.c:588 pg_backup_directory.c:552 +#: pg_backup_tar.c:809 pg_backup_tar.c:833 #, c-format msgid "could not read from input file: end of file\n" msgstr "no se pudo leer desde el archivo de entrada: fin de archivo\n" -#: parallel.c:77 +#: parallel.c:167 msgid "parallel archiver" msgstr "parallel archiver" -#: parallel.c:140 +#: parallel.c:231 #, c-format msgid "%s: WSAStartup failed: %d\n" msgstr "%s: WSAStartup falló: %d\n" -#: parallel.c:340 -#, c-format -msgid "worker is terminating\n" -msgstr "el proceso hijo está terminando\n" - -#: parallel.c:530 +#: parallel.c:934 #, c-format msgid "could not create communication channels: %s\n" msgstr "no se pudo crear los canales de comunicación: %s\n" -#: parallel.c:602 +#: parallel.c:997 #, c-format msgid "could not create worker process: %s\n" msgstr "no se pudo crear el proceso hijo: %s\n" -#: parallel.c:819 -#, c-format -msgid "could not get relation name for OID %u: %s\n" -msgstr "no se pudo obtener un nombre de relación para el OID %u: %s\n" - -#: parallel.c:836 +#: parallel.c:1192 #, c-format msgid "" "could not obtain lock on relation \"%s\"\n" @@ -384,77 +374,67 @@ msgstr "" "no se pudo obtener un lock en la relación «%s»\n" "Esto normalmente significa que alguien solicitó un lock ACCESS EXCLUSIVE en la tabla después de que el proceso pg_dump padre había obtenido el lock ACCESS SHARE en la tabla.\n" -#: parallel.c:920 +#: parallel.c:1262 #, c-format -msgid "unrecognized command on communication channel: %s\n" -msgstr "orden no reconocida en canal de comunicación: %s\n" +msgid "unrecognized command received from master: \"%s\"\n" +msgstr "orden no reconocida recibida del servidor: «%s»\n" -#: parallel.c:953 +#: parallel.c:1300 #, c-format msgid "a worker process died unexpectedly\n" msgstr "un proceso hijo murió inesperadamente\n" -#: parallel.c:980 parallel.c:989 +#: parallel.c:1326 parallel.c:1332 #, c-format -msgid "invalid message received from worker: %s\n" -msgstr "mensaje no válido recibido del proceso hijo: %s\n" +msgid "invalid message received from worker: \"%s\"\n" +msgstr "mensaje no válido recibido del proceso hijo: «%s»\n" -#: parallel.c:986 pg_backup_db.c:355 -#, c-format -msgid "%s" -msgstr "%s" - -#: parallel.c:1038 parallel.c:1082 +#: parallel.c:1389 parallel.c:1440 #, c-format msgid "error processing a parallel work item\n" msgstr "error procesando un elemento de trabajo en paralelo\n" -#: parallel.c:1110 parallel.c:1248 +#: parallel.c:1469 parallel.c:1587 #, c-format msgid "could not write to the communication channel: %s\n" msgstr "no se pudo escribir al canal de comunicación: %s\n" -#: parallel.c:1159 +#: parallel.c:1547 #, c-format -msgid "terminated by user\n" -msgstr "terminado por el usuario\n" +msgid "select() failed: %s\n" +msgstr "select() fallida: %s\n" -#: parallel.c:1211 -#, c-format -msgid "error in ListenToWorkers(): %s\n" -msgstr "error en ListenToWorkers(): %s\n" - -#: parallel.c:1336 +#: parallel.c:1672 #, c-format msgid "pgpipe: could not create socket: error code %d\n" msgstr "pgpipe: no se pudo crear el socket: código de error %d\n" -#: parallel.c:1347 +#: parallel.c:1683 #, c-format msgid "pgpipe: could not bind: error code %d\n" msgstr "pgpipe: no se pudo enlazar: código de error %d\n" -#: parallel.c:1354 +#: parallel.c:1690 #, c-format msgid "pgpipe: could not listen: error code %d\n" msgstr "pgpipe: no se pudo escuchar: código de error %d\n" -#: parallel.c:1361 +#: parallel.c:1697 #, c-format msgid "pgpipe: getsockname() failed: error code %d\n" msgstr "pgpipe: getsockname() falló: código de error %d\n" -#: parallel.c:1372 +#: parallel.c:1708 #, c-format msgid "pgpipe: could not create second socket: error code %d\n" msgstr "pgpipe: no se pudo crear el segundo socket: código de error %d\n" -#: parallel.c:1381 +#: parallel.c:1717 #, c-format msgid "pgpipe: could not connect socket: error code %d\n" msgstr "pgpipe: no se pudo conectar el socket: código de error %d\n" -#: parallel.c:1388 +#: parallel.c:1726 #, c-format msgid "pgpipe: could not accept connection: error code %d\n" msgstr "pgpipe: no se pudo aceptar la conexión: código de error %d\n" @@ -464,504 +444,492 @@ msgstr "pgpipe: no se pudo aceptar la conexión: código de error %d\n" msgid "archiver" msgstr "archiver" -#: pg_backup_archiver.c:234 pg_backup_archiver.c:1512 +#: pg_backup_archiver.c:240 pg_backup_archiver.c:1589 #, c-format msgid "could not close output file: %s\n" msgstr "no se pudo cerrar el archivo de salida: %s\n" -#: pg_backup_archiver.c:280 pg_backup_archiver.c:285 +#: pg_backup_archiver.c:286 pg_backup_archiver.c:291 #, c-format msgid "WARNING: archive items not in correct section order\n" -msgstr "ATENCIÓN: elementos del archivo no están en el orden correcto de secciones\n" +msgstr "PRECAUCIÓN: elementos del archivo no están en el orden correcto de secciones\n" -#: pg_backup_archiver.c:291 +#: pg_backup_archiver.c:297 #, c-format msgid "unexpected section code %d\n" msgstr "código de sección %d inesperado\n" -#: pg_backup_archiver.c:327 +#: pg_backup_archiver.c:333 #, c-format msgid "-C and -1 are incompatible options\n" msgstr "-C y -1 son opciones incompatibles\n" -#: pg_backup_archiver.c:337 +#: pg_backup_archiver.c:343 #, c-format msgid "parallel restore is not supported with this archive file format\n" msgstr "la restauración en paralelo no está soportada con este formato de archivo\n" -#: pg_backup_archiver.c:341 +#: pg_backup_archiver.c:347 #, c-format msgid "parallel restore is not supported with archives made by pre-8.0 pg_dump\n" msgstr "la restauración en paralelo no está soportada con archivos construidos con pg_dump anterior a 8.0\n" -#: pg_backup_archiver.c:359 +#: pg_backup_archiver.c:365 #, c-format msgid "cannot restore from compressed archive (compression not supported in this installation)\n" msgstr "no se puede reestablecer desde un archivo comprimido (la compresión no está soportada en esta instalación)\n" -#: pg_backup_archiver.c:376 +#: pg_backup_archiver.c:382 #, c-format msgid "connecting to database for restore\n" msgstr "conectando a la base de datos para reestablecimiento\n" -#: pg_backup_archiver.c:378 +#: pg_backup_archiver.c:384 #, c-format msgid "direct database connections are not supported in pre-1.3 archives\n" msgstr "" "las conexiones directas a la base de datos no están soportadas en\n" "archivadores pre-1.3\n" -#: pg_backup_archiver.c:423 +#: pg_backup_archiver.c:429 #, c-format msgid "implied data-only restore\n" msgstr "asumiendo reestablecimiento de sólo datos\n" -#: pg_backup_archiver.c:493 +#: pg_backup_archiver.c:499 #, c-format msgid "dropping %s %s\n" msgstr "eliminando %s %s\n" -#: pg_backup_archiver.c:646 -#, c-format -msgid "setting owner and privileges for %s \"%s.%s\"\n" -msgstr "estableciendo dueño y privilegios para %s «%s.%s»\n" - -#: pg_backup_archiver.c:649 +#: pg_backup_archiver.c:592 #, c-format -msgid "setting owner and privileges for %s \"%s\"\n" -msgstr "estableciendo dueño y privilegios para %s «%s»\n" +msgid "WARNING: could not find where to insert IF EXISTS in statement \"%s\"\n" +msgstr "PRECAUCIÓN: no se pudo encontrar dónde insertar IF EXISTS en la sentencia «%s»\n" -#: pg_backup_archiver.c:715 pg_backup_archiver.c:717 +#: pg_backup_archiver.c:755 pg_backup_archiver.c:757 #, c-format msgid "warning from original dump file: %s\n" msgstr "precaución desde el archivo original: %s\n" -#: pg_backup_archiver.c:726 +#: pg_backup_archiver.c:769 #, c-format msgid "creating %s \"%s.%s\"\n" msgstr "creando %s «%s.%s»\n" -#: pg_backup_archiver.c:729 +#: pg_backup_archiver.c:772 #, c-format msgid "creating %s \"%s\"\n" msgstr "creando %s «%s»\n" -#: pg_backup_archiver.c:774 +#: pg_backup_archiver.c:823 #, c-format msgid "connecting to new database \"%s\"\n" msgstr "conectando a nueva base de datos «%s»\n" -#: pg_backup_archiver.c:802 +#: pg_backup_archiver.c:851 #, c-format msgid "processing %s\n" msgstr "procesando %s\n" -#: pg_backup_archiver.c:822 +#: pg_backup_archiver.c:871 #, c-format msgid "processing data for table \"%s.%s\"\n" msgstr "procesando datos de la tabla «%s.%s»\n" -#: pg_backup_archiver.c:884 +#: pg_backup_archiver.c:933 #, c-format msgid "executing %s %s\n" msgstr "ejecutando %s %s\n" -#: pg_backup_archiver.c:923 +#: pg_backup_archiver.c:972 #, c-format msgid "disabling triggers for %s\n" msgstr "deshabilitando disparadores (triggers) para %s\n" -#: pg_backup_archiver.c:951 +#: pg_backup_archiver.c:1000 #, c-format msgid "enabling triggers for %s\n" msgstr "habilitando disparadores (triggers) para %s\n" -#: pg_backup_archiver.c:981 +#: pg_backup_archiver.c:1030 #, c-format msgid "internal error -- WriteData cannot be called outside the context of a DataDumper routine\n" msgstr "" "error interno -- WriteData no puede ser llamada fuera del contexto\n" "de una rutina DataDumper\n" -#: pg_backup_archiver.c:1150 +#: pg_backup_archiver.c:1227 #, c-format msgid "large-object output not supported in chosen format\n" msgstr "" "la extracción de objetos grandes no está soportada en el formato\n" "seleccionado\n" -#: pg_backup_archiver.c:1208 +#: pg_backup_archiver.c:1285 #, c-format msgid "restored %d large object\n" msgid_plural "restored %d large objects\n" msgstr[0] "se reestableció %d objeto grande\n" msgstr[1] "se reestablecieron %d objetos grandes\n" -#: pg_backup_archiver.c:1229 pg_backup_tar.c:739 +#: pg_backup_archiver.c:1306 pg_backup_tar.c:751 #, c-format msgid "restoring large object with OID %u\n" msgstr "reestableciendo objeto grande con OID %u\n" -#: pg_backup_archiver.c:1241 +#: pg_backup_archiver.c:1318 #, c-format msgid "could not create large object %u: %s" msgstr "no se pudo crear el objeto grande %u: %s" -#: pg_backup_archiver.c:1246 pg_dump.c:2997 +#: pg_backup_archiver.c:1323 pg_dump.c:3093 #, c-format msgid "could not open large object %u: %s" msgstr "no se pudo abrir el objeto grande %u: %s" -#: pg_backup_archiver.c:1304 +#: pg_backup_archiver.c:1381 #, c-format msgid "could not open TOC file \"%s\": %s\n" msgstr "no se pudo abrir el archivo TOC «%s»: %s\n" -#: pg_backup_archiver.c:1345 +#: pg_backup_archiver.c:1422 #, c-format msgid "WARNING: line ignored: %s\n" msgstr "PRECAUCIÓN: línea ignorada: %s\n" -#: pg_backup_archiver.c:1352 +#: pg_backup_archiver.c:1429 #, c-format msgid "could not find entry for ID %d\n" msgstr "no se pudo encontrar una entrada para el ID %d\n" -#: pg_backup_archiver.c:1373 pg_backup_directory.c:230 +#: pg_backup_archiver.c:1450 pg_backup_directory.c:230 #: pg_backup_directory.c:601 #, c-format msgid "could not close TOC file: %s\n" msgstr "no se pudo cerrar el archivo TOC: %s\n" -#: pg_backup_archiver.c:1482 pg_backup_custom.c:162 pg_backup_directory.c:341 +#: pg_backup_archiver.c:1559 pg_backup_custom.c:162 pg_backup_directory.c:341 #: pg_backup_directory.c:587 pg_backup_directory.c:645 #: pg_backup_directory.c:665 #, c-format msgid "could not open output file \"%s\": %s\n" msgstr "no se pudo abrir el archivo de salida «%s»: %s\n" -#: pg_backup_archiver.c:1485 pg_backup_custom.c:169 +#: pg_backup_archiver.c:1562 pg_backup_custom.c:169 #, c-format msgid "could not open output file: %s\n" msgstr "no se pudo abrir el archivo de salida: %s\n" -#: pg_backup_archiver.c:1591 +#: pg_backup_archiver.c:1668 #, c-format msgid "wrote %lu byte of large object data (result = %lu)\n" msgid_plural "wrote %lu bytes of large object data (result = %lu)\n" msgstr[0] "se escribió %lu byte de los datos del objeto grande (resultado = %lu)\n" msgstr[1] "se escribieron %lu bytes de los datos del objeto grande (resultado = %lu)\n" -#: pg_backup_archiver.c:1597 +#: pg_backup_archiver.c:1674 #, c-format msgid "could not write to large object (result: %lu, expected: %lu)\n" msgstr "no se pudo escribir al objecto grande (resultado: %lu, esperado: %lu)\n" -#: pg_backup_archiver.c:1690 +#: pg_backup_archiver.c:1767 #, c-format msgid "Error while INITIALIZING:\n" msgstr "Error durante INICIALIZACIÓN:\n" -#: pg_backup_archiver.c:1695 +#: pg_backup_archiver.c:1772 #, c-format msgid "Error while PROCESSING TOC:\n" msgstr "Error durante PROCESAMIENTO DE TABLA DE CONTENIDOS:\n" -#: pg_backup_archiver.c:1700 +#: pg_backup_archiver.c:1777 #, c-format msgid "Error while FINALIZING:\n" msgstr "Error durante FINALIZACIÓN:\n" -#: pg_backup_archiver.c:1705 +#: pg_backup_archiver.c:1782 #, c-format msgid "Error from TOC entry %d; %u %u %s %s %s\n" msgstr "Error en entrada de la tabla de contenidos %d; %u %u %s %s %s\n" -#: pg_backup_archiver.c:1778 +#: pg_backup_archiver.c:1855 #, c-format msgid "bad dumpId\n" msgstr "dumpId incorrecto\n" -#: pg_backup_archiver.c:1799 +#: pg_backup_archiver.c:1876 #, c-format msgid "bad table dumpId for TABLE DATA item\n" msgstr "dumpId de tabla incorrecto para elemento TABLE DATA\n" -#: pg_backup_archiver.c:1891 +#: pg_backup_archiver.c:1968 #, c-format msgid "unexpected data offset flag %d\n" msgstr "bandera de posición inesperada %d\n" -#: pg_backup_archiver.c:1904 +#: pg_backup_archiver.c:1981 #, c-format msgid "file offset in dump file is too large\n" msgstr "el posición en el archivo es demasiado grande\n" -#: pg_backup_archiver.c:2017 +#: pg_backup_archiver.c:2094 #, c-format msgid "attempting to ascertain archive format\n" msgstr "intentando comprobar el formato del archivador\n" -#: pg_backup_archiver.c:2043 pg_backup_archiver.c:2053 +#: pg_backup_archiver.c:2120 pg_backup_archiver.c:2130 #, c-format msgid "directory name too long: \"%s\"\n" msgstr "nombre de directorio demasiado largo: «%s»\n" -#: pg_backup_archiver.c:2061 +#: pg_backup_archiver.c:2138 #, c-format msgid "directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not exist)\n" msgstr "el directorio «%s» no parece ser un archivador válido (no existe «toc.dat»)\n" -#: pg_backup_archiver.c:2069 pg_backup_custom.c:181 pg_backup_custom.c:770 -#: pg_backup_directory.c:214 pg_backup_directory.c:402 +#: pg_backup_archiver.c:2146 pg_backup_custom.c:181 pg_backup_custom.c:770 +#: pg_backup_directory.c:214 pg_backup_directory.c:401 #, c-format msgid "could not open input file \"%s\": %s\n" msgstr "no se pudo abrir el archivo de entrada «%s»: %s\n" -#: pg_backup_archiver.c:2077 pg_backup_custom.c:188 +#: pg_backup_archiver.c:2154 pg_backup_custom.c:188 #, c-format msgid "could not open input file: %s\n" msgstr "no se pudo abrir el archivo de entrada: %s\n" -#: pg_backup_archiver.c:2084 +#: pg_backup_archiver.c:2161 #, c-format msgid "could not read input file: %s\n" msgstr "no se pudo leer el archivo de entrada: %s\n" -#: pg_backup_archiver.c:2086 +#: pg_backup_archiver.c:2163 #, c-format msgid "input file is too short (read %lu, expected 5)\n" msgstr "el archivo de entrada es demasiado corto (leidos %lu, esperados 5)\n" -#: pg_backup_archiver.c:2169 +#: pg_backup_archiver.c:2246 #, c-format msgid "input file appears to be a text format dump. Please use psql.\n" msgstr "el archivo de entrada parece ser un volcado de texto. Por favor use psql.\n" -#: pg_backup_archiver.c:2175 +#: pg_backup_archiver.c:2252 #, c-format msgid "input file does not appear to be a valid archive (too short?)\n" msgstr "el archivo de entrada no parece ser un archivador válido (¿demasiado corto?)\n" -#: pg_backup_archiver.c:2181 +#: pg_backup_archiver.c:2258 #, c-format msgid "input file does not appear to be a valid archive\n" msgstr "el archivo de entrada no parece ser un archivador válido\n" -#: pg_backup_archiver.c:2201 +#: pg_backup_archiver.c:2278 #, c-format msgid "could not close input file: %s\n" msgstr "no se pudo cerrar el archivo de entrada: %s\n" -#: pg_backup_archiver.c:2218 +#: pg_backup_archiver.c:2295 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "reservando AH para %s, formato %d\n" -#: pg_backup_archiver.c:2323 +#: pg_backup_archiver.c:2400 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "formato de archivo no reconocido «%d»\n" -#: pg_backup_archiver.c:2473 +#: pg_backup_archiver.c:2556 #, c-format msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" msgstr "" "la entrada con ID %d está fuera de rango -- tal vez\n" "la tabla de contenido está corrupta\n" -#: pg_backup_archiver.c:2589 +#: pg_backup_archiver.c:2672 #, c-format msgid "read TOC entry %d (ID %d) for %s %s\n" msgstr "leyendo entrada de la tabla de contenidos %d (ID %d) para %s %s\n" -#: pg_backup_archiver.c:2623 +#: pg_backup_archiver.c:2706 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "no se reconoce la codificación: «%s»\n" -#: pg_backup_archiver.c:2628 +#: pg_backup_archiver.c:2711 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "elemento ENCODING no válido: %s\n" -#: pg_backup_archiver.c:2646 +#: pg_backup_archiver.c:2729 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "elemento STDSTRINGS no válido: %s\n" -#: pg_backup_archiver.c:2661 +#: pg_backup_archiver.c:2744 #, c-format msgid "schema \"%s\" not found\n" msgstr "esquema «%s» no encontrado\n" -#: pg_backup_archiver.c:2668 +#: pg_backup_archiver.c:2751 #, c-format msgid "table \"%s\" not found\n" msgstr "tabla «%s» no encontrada\n" -#: pg_backup_archiver.c:2675 +#: pg_backup_archiver.c:2758 #, c-format msgid "index \"%s\" not found\n" msgstr "índice «%s» no encontrado\n" -#: pg_backup_archiver.c:2682 +#: pg_backup_archiver.c:2765 #, c-format msgid "function \"%s\" not found\n" msgstr "función «%s» no encontrada\n" -#: pg_backup_archiver.c:2689 +#: pg_backup_archiver.c:2772 #, c-format msgid "trigger \"%s\" not found\n" msgstr "disparador «%s» no encontrado\n" -#: pg_backup_archiver.c:2920 +#: pg_backup_archiver.c:3036 #, c-format msgid "could not set session user to \"%s\": %s" msgstr "no se pudo establecer el usuario de sesión a «%s»: %s" -#: pg_backup_archiver.c:2952 +#: pg_backup_archiver.c:3068 #, c-format msgid "could not set default_with_oids: %s" msgstr "no se pudo definir default_with_oids: %s" -#: pg_backup_archiver.c:3092 +#: pg_backup_archiver.c:3213 #, c-format msgid "could not set search_path to \"%s\": %s" msgstr "no se pudo establecer search_path a «%s»: %s" -#: pg_backup_archiver.c:3154 +#: pg_backup_archiver.c:3275 #, c-format msgid "could not set default_tablespace to %s: %s" msgstr "no se pudo establecer default_tablespace a %s: %s" -#: pg_backup_archiver.c:3241 pg_backup_archiver.c:3428 -#, c-format -msgid "WARNING: don't know how to set owner for object type %s\n" -msgstr "PRECAUCIÓN: no se sabe cómo establecer el dueño para el objeto de tipo %s\n" - -#: pg_backup_archiver.c:3481 +#: pg_backup_archiver.c:3363 pg_backup_archiver.c:3553 #, c-format -msgid "WARNING: requested compression not available in this installation -- archive will be uncompressed\n" -msgstr "" -"PRECAUCIÓN: la compresión solicitada no está soportada en esta\n" -"instalación -- el archivador no será comprimido\n" +msgid "WARNING: don't know how to set owner for object type \"%s\"\n" +msgstr "PRECAUCIÓN: no se sabe cómo establecer el dueño para el objeto de tipo «%s»\n" -#: pg_backup_archiver.c:3520 +#: pg_backup_archiver.c:3639 #, c-format msgid "did not find magic string in file header\n" msgstr "no se encontró la cadena mágica en el encabezado del archivo\n" -#: pg_backup_archiver.c:3533 +#: pg_backup_archiver.c:3652 #, c-format msgid "unsupported version (%d.%d) in file header\n" msgstr "versión no soportada (%d.%d) en el encabezado del archivo\n" -#: pg_backup_archiver.c:3538 +#: pg_backup_archiver.c:3657 #, c-format msgid "sanity check on integer size (%lu) failed\n" msgstr "revisión de integridad en el tamaño del entero (%lu) falló\n" -#: pg_backup_archiver.c:3542 +#: pg_backup_archiver.c:3661 #, c-format msgid "WARNING: archive was made on a machine with larger integers, some operations might fail\n" msgstr "" "PRECAUCIÓN: el archivador fue hecho en una máquina con enteros más \n" "grandes, algunas operaciones podrían fallar\n" -#: pg_backup_archiver.c:3552 +#: pg_backup_archiver.c:3671 #, c-format msgid "expected format (%d) differs from format found in file (%d)\n" msgstr "el formato esperado (%d) difiere del formato encontrado en el archivo (%d)\n" -#: pg_backup_archiver.c:3568 +#: pg_backup_archiver.c:3687 #, c-format msgid "WARNING: archive is compressed, but this installation does not support compression -- no data will be available\n" msgstr "" "PRECAUCIÓN: el archivador está comprimido, pero esta instalación no soporta\n" "compresión -- no habrá datos disponibles\n" -#: pg_backup_archiver.c:3586 +#: pg_backup_archiver.c:3705 #, c-format msgid "WARNING: invalid creation date in header\n" msgstr "PRECAUCIÓN: la fecha de creación en el encabezado no es válida\n" -#: pg_backup_archiver.c:3661 +#: pg_backup_archiver.c:3778 #, c-format msgid "entering restore_toc_entries_prefork\n" msgstr "ingresando restore_toc_entries_prefork\n" -#: pg_backup_archiver.c:3705 +#: pg_backup_archiver.c:3842 #, c-format msgid "processing item %d %s %s\n" msgstr "procesando el elemento %d %s %s\n" -#: pg_backup_archiver.c:3757 +#: pg_backup_archiver.c:3896 #, c-format msgid "entering restore_toc_entries_parallel\n" msgstr "ingresando restore_toc_entries_parallel\n" -#: pg_backup_archiver.c:3805 +#: pg_backup_archiver.c:3917 #, c-format msgid "entering main parallel loop\n" msgstr "ingresando al bucle paralelo principal\n" -#: pg_backup_archiver.c:3816 +#: pg_backup_archiver.c:3928 #, c-format msgid "skipping item %d %s %s\n" msgstr "saltando el elemento %d %s %s\n" -#: pg_backup_archiver.c:3826 +#: pg_backup_archiver.c:3938 #, c-format msgid "launching item %d %s %s\n" msgstr "lanzando el elemento %d %s %s\n" -#: pg_backup_archiver.c:3884 +#: pg_backup_archiver.c:4019 #, c-format msgid "finished main parallel loop\n" msgstr "terminó el bucle paralelo principal\n" -#: pg_backup_archiver.c:3893 +#: pg_backup_archiver.c:4037 #, c-format msgid "entering restore_toc_entries_postfork\n" msgstr "ingresando restore_toc_entries_postfork\n" -#: pg_backup_archiver.c:3911 +#: pg_backup_archiver.c:4057 #, c-format msgid "processing missed item %d %s %s\n" msgstr "procesando el elemento saltado %d %s %s\n" -#: pg_backup_archiver.c:4060 +#: pg_backup_archiver.c:4234 #, c-format msgid "no item ready\n" msgstr "ningún elemento listo\n" -#: pg_backup_archiver.c:4109 +#: pg_backup_archiver.c:4282 #, c-format msgid "could not find slot of finished worker\n" msgstr "no se pudo localizar la entrada del proceso o hilo que terminó\n" -#: pg_backup_archiver.c:4111 +#: pg_backup_archiver.c:4284 #, c-format msgid "finished item %d %s %s\n" msgstr "terminó el elemento %d %s %s\n" -#: pg_backup_archiver.c:4124 +#: pg_backup_archiver.c:4297 #, c-format msgid "worker process failed: exit code %d\n" msgstr "el proceso hijo falló: código de salida %d\n" -#: pg_backup_archiver.c:4286 +#: pg_backup_archiver.c:4459 #, c-format msgid "transferring dependency %d -> %d to %d\n" msgstr "transferiendo la dependencia %d -> %d a %d\n" -#: pg_backup_archiver.c:4359 +#: pg_backup_archiver.c:4532 #, c-format msgid "reducing dependencies for %d\n" msgstr "reduciendo las dependencias para %d\n" -#: pg_backup_archiver.c:4398 +#: pg_backup_archiver.c:4584 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "la tabla «%s» no pudo ser creada, no se recuperarán sus datos\n" @@ -1014,7 +982,7 @@ msgid "unrecognized data block type %d while restoring archive\n" msgstr "se encontró un bloque tipo %d no reconocido al restablecer el archivador\n" #: pg_backup_custom.c:709 pg_backup_custom.c:759 pg_backup_custom.c:908 -#: pg_backup_tar.c:1088 +#: pg_backup_tar.c:1100 #, c-format msgid "could not determine seek position in archive file: %s\n" msgstr "no se pudo determinar la posición (seek) en el archivo del archivador: %s\n" @@ -1052,107 +1020,124 @@ msgstr "compresor activo\n" #: pg_backup_custom.c:912 #, c-format msgid "WARNING: ftell mismatch with expected position -- ftell used\n" -msgstr "ATENCIÓN: ftell no coincide con la posición esperada -- se usó ftell\n" +msgstr "PRECAUCIÓN: ftell no coincide con la posición esperada -- se usó ftell\n" #. translator: this is a module name -#: pg_backup_db.c:29 +#: pg_backup_db.c:31 msgid "archiver (db)" msgstr "archiver (bd)" -#: pg_backup_db.c:44 +#: pg_backup_db.c:47 #, c-format msgid "could not get server_version from libpq\n" msgstr "no se pudo obtener server_version desde libpq\n" -#: pg_backup_db.c:55 pg_dumpall.c:1982 +#: pg_backup_db.c:58 pg_dumpall.c:2068 #, c-format msgid "server version: %s; %s version: %s\n" msgstr "versión del servidor: %s; versión de %s: %s\n" -#: pg_backup_db.c:57 pg_dumpall.c:1984 +#: pg_backup_db.c:60 pg_dumpall.c:2070 #, c-format msgid "aborting because of server version mismatch\n" msgstr "abortando debido a que no coincide la versión del servidor\n" -#: pg_backup_db.c:128 +#: pg_backup_db.c:149 #, c-format msgid "connecting to database \"%s\" as user \"%s\"\n" msgstr "conectandose a la base de datos \"%s\" como el usuario «%s»\n" -#: pg_backup_db.c:135 pg_backup_db.c:183 pg_backup_db.c:243 pg_backup_db.c:285 -#: pg_dumpall.c:1812 pg_dumpall.c:1920 +#: pg_backup_db.c:156 pg_backup_db.c:208 pg_backup_db.c:270 pg_backup_db.c:312 +#: pg_dumpall.c:1894 pg_dumpall.c:2006 msgid "Password: " msgstr "Contraseña: " -#: pg_backup_db.c:164 +#: pg_backup_db.c:189 #, c-format msgid "failed to reconnect to database\n" msgstr "falló la reconexión a la base de datos\n" -#: pg_backup_db.c:169 +#: pg_backup_db.c:194 #, c-format msgid "could not reconnect to database: %s" msgstr "no se pudo hacer la reconexión a la base de datos: %s" -#: pg_backup_db.c:185 +#: pg_backup_db.c:210 #, c-format msgid "connection needs password\n" msgstr "la conexión necesita contraseña\n" -#: pg_backup_db.c:237 +#: pg_backup_db.c:264 #, c-format msgid "already connected to a database\n" msgstr "ya está conectado a una base de datos\n" -#: pg_backup_db.c:277 +#: pg_backup_db.c:304 #, c-format msgid "failed to connect to database\n" msgstr "falló la conexión a la base de datos\n" -#: pg_backup_db.c:294 +#: pg_backup_db.c:321 #, c-format msgid "connection to database \"%s\" failed: %s" msgstr "falló la conexión a la base de datos «%s»: %s" -#: pg_backup_db.c:362 +#: pg_backup_db.c:391 +#, c-format +msgid "%s" +msgstr "%s" + +#: pg_backup_db.c:398 #, c-format msgid "query failed: %s" msgstr "la consulta falló: %s" -#: pg_backup_db.c:364 +#: pg_backup_db.c:400 #, c-format msgid "query was: %s\n" msgstr "la consulta era: %s\n" -#: pg_backup_db.c:428 +#: pg_backup_db.c:442 +#, c-format +msgid "query returned %d row instead of one: %s\n" +msgid_plural "query returned %d rows instead of one: %s\n" +msgstr[0] "la consulta regresó %d fila en lugar de una: %s\n" +msgstr[1] "la consulta regresó %d filas en lugar de una: %s\n" + +#: pg_backup_db.c:487 #, c-format msgid "%s: %s Command was: %s\n" msgstr "%s: %s La orden era: %s\n" -#: pg_backup_db.c:484 pg_backup_db.c:558 pg_backup_db.c:565 +#: pg_backup_db.c:543 pg_backup_db.c:617 pg_backup_db.c:624 msgid "could not execute query" msgstr "no se pudo ejecutar la consulta" -#: pg_backup_db.c:537 +#: pg_backup_db.c:596 #, c-format msgid "error returned by PQputCopyData: %s" msgstr "PQputCopyData regresó un error: %s" -#: pg_backup_db.c:586 +#: pg_backup_db.c:645 #, c-format msgid "error returned by PQputCopyEnd: %s" msgstr "PQputCopyEnd regresó un error: %s" -#: pg_backup_db.c:592 +#: pg_backup_db.c:651 #, c-format msgid "COPY failed for table \"%s\": %s" msgstr "COPY falló para la tabla «%s»: %s" -#: pg_backup_db.c:605 +#: pg_backup_db.c:657 pg_dump.c:1814 +#, c-format +msgid "WARNING: unexpected extra results during COPY of table \"%s\"\n" +msgstr "PRECAUCIÓN: resultados extra inesperados durante el COPY de la tabla «%s»\n" + +#: pg_backup_db.c:669 msgid "could not start database transaction" msgstr "no se pudo iniciar la transacción en la base de datos" -#: pg_backup_db.c:613 +#: pg_backup_db.c:677 msgid "could not commit database transaction" msgstr "no se pudo terminar la transacción a la base de datos" @@ -1181,27 +1166,33 @@ msgstr "no se pudo cerrar el directorio «%s»: %s\n" msgid "could not create directory \"%s\": %s\n" msgstr "no se pudo crear el directorio «%s»: %s\n" -#: pg_backup_directory.c:413 +#: pg_backup_directory.c:360 pg_backup_directory.c:500 +#: pg_backup_directory.c:530 +#, c-format +msgid "could not write to output file: %s\n" +msgstr "no se pudo escribir al archivo de salida: %s\n" + +#: pg_backup_directory.c:414 #, c-format msgid "could not close data file: %s\n" msgstr "no se pudo cerrar el archivo de datos: %s\n" -#: pg_backup_directory.c:454 +#: pg_backup_directory.c:455 #, c-format msgid "could not open large object TOC file \"%s\" for input: %s\n" msgstr "no se pudo abrir el archivo de la tabla de contenidos de objetos grandes «%s» para su lectura: %s\n" -#: pg_backup_directory.c:465 +#: pg_backup_directory.c:466 #, c-format msgid "invalid line in large object TOC file \"%s\": \"%s\"\n" msgstr "línea no válida en el archivo de la tabla de contenido de objetos grandes «%s»: «%s»\n" -#: pg_backup_directory.c:474 +#: pg_backup_directory.c:475 #, c-format msgid "error reading large object TOC file \"%s\"\n" msgstr "error al leer el archivo de la tabla de contenidos de objetos grandes «%s»\n" -#: pg_backup_directory.c:478 +#: pg_backup_directory.c:479 #, c-format msgid "could not close large object TOC file \"%s\": %s\n" msgstr "no se pudo cerrar el archivo de la tabla de contenido de los objetos grandes «%s»: %s\n" @@ -1276,71 +1267,71 @@ msgstr "no se pudo abrir archivo temporal\n" msgid "could not close tar member\n" msgstr "no se pudo cerrar miembro del archivo tar\n" -#: pg_backup_tar.c:571 +#: pg_backup_tar.c:583 #, c-format msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" msgstr "error interno --- no se especificó th ni fh en tarReadRaw()\n" -#: pg_backup_tar.c:694 +#: pg_backup_tar.c:706 #, c-format msgid "unexpected COPY statement syntax: \"%s\"\n" msgstr "sintaxis de sentencia COPY inesperada: «%s»\n" -#: pg_backup_tar.c:960 +#: pg_backup_tar.c:972 #, c-format msgid "invalid OID for large object (%u)\n" msgstr "el OID del objeto grande no es válido (%u)\n" -#: pg_backup_tar.c:1104 +#: pg_backup_tar.c:1116 #, c-format msgid "could not close temporary file: %s\n" msgstr "no se pudo abrir archivo temporal: %s\n" -#: pg_backup_tar.c:1114 +#: pg_backup_tar.c:1126 #, c-format msgid "actual file length (%s) does not match expected (%s)\n" msgstr "el tamaño real del archivo (%s) no coincide con el esperado (%s)\n" -#: pg_backup_tar.c:1151 +#: pg_backup_tar.c:1163 #, c-format msgid "moving from position %s to next member at file position %s\n" msgstr "moviendo desde la posición %s a la posición del siguiente miembro %s\n" -#: pg_backup_tar.c:1162 +#: pg_backup_tar.c:1174 #, c-format msgid "now at file position %s\n" msgstr "ahora en la posición del archivo %s\n" -#: pg_backup_tar.c:1171 pg_backup_tar.c:1201 +#: pg_backup_tar.c:1183 pg_backup_tar.c:1213 #, c-format msgid "could not find header for file \"%s\" in tar archive\n" msgstr "no se pudo encontrar el encabezado para el archivo «%s» en el archivo tar\n" -#: pg_backup_tar.c:1185 +#: pg_backup_tar.c:1197 #, c-format msgid "skipping tar member %s\n" msgstr "saltando miembro del archivo tar %s\n" -#: pg_backup_tar.c:1189 +#: pg_backup_tar.c:1201 #, c-format msgid "restoring data out of order is not supported in this archive format: \"%s\" is required, but comes before \"%s\" in the archive file.\n" msgstr "" "la extracción de datos fuera de orden no está soportada en este formato:\n" "se requiere «%s», pero viene antes de «%s» en el archivador.\n" -#: pg_backup_tar.c:1235 +#: pg_backup_tar.c:1247 #, c-format msgid "incomplete tar header found (%lu byte)\n" msgid_plural "incomplete tar header found (%lu bytes)\n" msgstr[0] "se encontró un encabezado incompleto (%lu byte)\n" msgstr[1] "se encontró un encabezado incompleto (%lu bytes)\n" -#: pg_backup_tar.c:1276 +#: pg_backup_tar.c:1288 #, c-format msgid "TOC Entry %s at %s (length %s, checksum %d)\n" msgstr "entrada TOC %s en %s (tamaño %s, suma de integridad %d)\n" -#: pg_backup_tar.c:1287 +#: pg_backup_tar.c:1299 #, c-format msgid "corrupt tar header found in %s (expected %d, computed %d) file position %s\n" msgstr "" @@ -1352,64 +1343,71 @@ msgstr "" msgid "%s: unrecognized section name: \"%s\"\n" msgstr "%s: nombre de sección «%s» no reconocido\n" -#: pg_backup_utils.c:56 pg_dump.c:534 pg_dump.c:551 pg_dumpall.c:301 -#: pg_dumpall.c:311 pg_dumpall.c:321 pg_dumpall.c:330 pg_dumpall.c:346 -#: pg_dumpall.c:404 pg_restore.c:279 pg_restore.c:295 pg_restore.c:307 +#: pg_backup_utils.c:56 pg_dump.c:536 pg_dump.c:553 pg_dumpall.c:299 +#: pg_dumpall.c:309 pg_dumpall.c:319 pg_dumpall.c:328 pg_dumpall.c:344 +#: pg_dumpall.c:402 pg_restore.c:279 pg_restore.c:295 pg_restore.c:307 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Prueba «%s --help» para más información.\n" -#: pg_backup_utils.c:101 +#: pg_backup_utils.c:118 #, c-format msgid "out of on_exit_nicely slots\n" msgstr "elementos on_exit_nicely agotados\n" -#: pg_dump.c:504 +#: pg_dump.c:506 #, c-format msgid "compression level must be in range 0..9\n" msgstr "nivel de compresión debe estar en el rango 0..9\n" -#: pg_dump.c:549 pg_dumpall.c:309 pg_restore.c:293 +#: pg_dump.c:551 pg_dumpall.c:307 pg_restore.c:293 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: demasiados argumentos en la línea de órdenes (el primero es «%s»)\n" -#: pg_dump.c:562 +#: pg_dump.c:564 #, c-format msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "las opciones -s/--schema-only y -a/--data-only no pueden usarse juntas\n" -#: pg_dump.c:568 +#: pg_dump.c:570 #, c-format msgid "options -c/--clean and -a/--data-only cannot be used together\n" msgstr "las opciones -c/--clean y -a/--data-only no pueden usarse juntas\n" -#: pg_dump.c:574 +#: pg_dump.c:576 #, c-format msgid "options --inserts/--column-inserts and -o/--oids cannot be used together\n" msgstr "las opciones --inserts/--column-inserts y -o/--oids no pueden usarse juntas\n" -#: pg_dump.c:575 +#: pg_dump.c:577 #, c-format msgid "(The INSERT command cannot set OIDs.)\n" msgstr "(La orden INSERT no puede establecer los OIDs).\n" -#: pg_dump.c:580 +#: pg_dump.c:582 #, c-format msgid "option --if-exists requires option -c/--clean\n" msgstr "la opción --if-exists requiere la opción -c/--clean\n" -#: pg_dump.c:608 +#: pg_dump.c:604 #, c-format -msgid "%s: invalid number of parallel jobs\n" -msgstr "%s: número de trabajos paralelos no válido\n" +msgid "WARNING: requested compression not available in this installation -- archive will be uncompressed\n" +msgstr "" +"PRECAUCIÓN: la compresión solicitada no está soportada en esta\n" +"instalación -- el archivador no será comprimido\n" -#: pg_dump.c:612 +#: pg_dump.c:619 +#, c-format +msgid "invalid number of parallel jobs\n" +msgstr "número no válido de trabajos paralelos\n" + +#: pg_dump.c:623 #, c-format msgid "parallel backup only supported by the directory format\n" msgstr "el volcado en paralelo sólo está soportado por el formato «directory»\n" -#: pg_dump.c:681 +#: pg_dump.c:680 #, c-format msgid "" "Synchronized snapshots are not supported by this server version.\n" @@ -1419,27 +1417,27 @@ msgstr "" "Los snapshots sincronizados no están soportados por esta versión del servidor.\n" "Ejecute con --no-synchronized-snapshots si no los necesita.\n" -#: pg_dump.c:688 +#: pg_dump.c:687 #, c-format msgid "Exported snapshots are not supported by this server version.\n" msgstr "Los snapshot exportados no están soportados por esta versión de servidor.\n" -#: pg_dump.c:699 +#: pg_dump.c:706 #, c-format msgid "last built-in OID is %u\n" msgstr "el último OID interno es %u\n" -#: pg_dump.c:709 +#: pg_dump.c:715 #, c-format msgid "no matching schemas were found\n" msgstr "no se encontraron esquemas coincidentes\n" -#: pg_dump.c:723 +#: pg_dump.c:729 #, c-format msgid "no matching tables were found\n" msgstr "no se encontraron tablas coincidentes\n" -#: pg_dump.c:882 +#: pg_dump.c:897 #, c-format msgid "" "%s dumps a database as a text file or to other formats.\n" @@ -1448,17 +1446,17 @@ msgstr "" "%s extrae una base de datos en formato de texto o en otros formatos.\n" "\n" -#: pg_dump.c:883 pg_dumpall.c:549 pg_restore.c:437 +#: pg_dump.c:898 pg_dumpall.c:547 pg_restore.c:443 #, c-format msgid "Usage:\n" msgstr "Empleo:\n" -#: pg_dump.c:884 +#: pg_dump.c:899 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [OPCIÓN]... [NOMBREDB]\n" -#: pg_dump.c:886 pg_dumpall.c:552 pg_restore.c:440 +#: pg_dump.c:901 pg_dumpall.c:550 pg_restore.c:446 #, c-format msgid "" "\n" @@ -1467,12 +1465,12 @@ msgstr "" "\n" "Opciones generales:\n" -#: pg_dump.c:887 +#: pg_dump.c:902 #, c-format msgid " -f, --file=FILENAME output file or directory name\n" msgstr " -f, --file=ARCHIVO nombre del archivo o directorio de salida\n" -#: pg_dump.c:888 +#: pg_dump.c:903 #, c-format msgid "" " -F, --format=c|d|t|p output file format (custom, directory, tar,\n" @@ -1481,37 +1479,37 @@ msgstr "" " -F, --format=c|d|t|p Formato del archivo de salida (c=personalizado, \n" " d=directorio, t=tar, p=texto (por omisión))\n" -#: pg_dump.c:890 +#: pg_dump.c:905 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to dump\n" msgstr " -j, --jobs=NUM máximo de procesos paralelos para volcar\n" -#: pg_dump.c:891 +#: pg_dump.c:906 pg_dumpall.c:552 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose modo verboso\n" -#: pg_dump.c:892 pg_dumpall.c:554 +#: pg_dump.c:907 pg_dumpall.c:553 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version mostrar información de version y salir\n" -#: pg_dump.c:893 +#: pg_dump.c:908 #, c-format msgid " -Z, --compress=0-9 compression level for compressed formats\n" msgstr " -Z, --compress=0-9 nivel de compresión para formatos comprimidos\n" -#: pg_dump.c:894 pg_dumpall.c:555 +#: pg_dump.c:909 pg_dumpall.c:554 #, c-format msgid " --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" msgstr " --lock-wait-timeout=SEGS espera a lo más SEGS segundos obtener un lock\n" -#: pg_dump.c:895 pg_dumpall.c:556 +#: pg_dump.c:910 pg_dumpall.c:555 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help mostrar esta ayuda y salir\n" -#: pg_dump.c:897 pg_dumpall.c:557 +#: pg_dump.c:912 pg_dumpall.c:556 #, c-format msgid "" "\n" @@ -1520,49 +1518,49 @@ msgstr "" "\n" "Opciones que controlan el contenido de la salida:\n" -#: pg_dump.c:898 pg_dumpall.c:558 +#: pg_dump.c:913 pg_dumpall.c:557 #, c-format msgid " -a, --data-only dump only the data, not the schema\n" msgstr " -a, --data-only extrae sólo los datos, no el esquema\n" -#: pg_dump.c:899 +#: pg_dump.c:914 #, c-format msgid " -b, --blobs include large objects in dump\n" msgstr " -b, --blobs incluye objetos grandes en la extracción\n" -#: pg_dump.c:900 pg_restore.c:451 +#: pg_dump.c:915 pg_restore.c:457 #, c-format msgid " -c, --clean clean (drop) database objects before recreating\n" msgstr " -c, --clean tira (drop) la base de datos antes de crearla\n" -#: pg_dump.c:901 +#: pg_dump.c:916 #, c-format msgid " -C, --create include commands to create database in dump\n" msgstr "" " -C, --create incluye órdenes para crear la base de datos\n" " en la extracción\n" -#: pg_dump.c:902 +#: pg_dump.c:917 #, c-format msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" msgstr " -E, --encoding=CODIF extrae los datos con la codificación CODIF\n" -#: pg_dump.c:903 +#: pg_dump.c:918 #, c-format msgid " -n, --schema=SCHEMA dump the named schema(s) only\n" msgstr " -n, --schema=ESQUEMA extrae sólo el esquema nombrado\n" -#: pg_dump.c:904 +#: pg_dump.c:919 #, c-format msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n" msgstr " -N, --exclude-schema=ESQUEMA NO extrae el o los esquemas nombrados\n" -#: pg_dump.c:905 pg_dumpall.c:561 +#: pg_dump.c:920 pg_dumpall.c:560 #, c-format msgid " -o, --oids include OIDs in dump\n" msgstr " -o, --oids incluye OIDs en la extracción\n" -#: pg_dump.c:906 +#: pg_dump.c:921 #, c-format msgid "" " -O, --no-owner skip restoration of object ownership in\n" @@ -1571,58 +1569,58 @@ msgstr "" " -O, --no-owner en formato de sólo texto, no reestablece\n" " los dueños de los objetos\n" -#: pg_dump.c:908 pg_dumpall.c:564 +#: pg_dump.c:923 pg_dumpall.c:563 #, c-format msgid " -s, --schema-only dump only the schema, no data\n" msgstr " -s, --schema-only extrae sólo el esquema, no los datos\n" -#: pg_dump.c:909 +#: pg_dump.c:924 #, c-format msgid " -S, --superuser=NAME superuser user name to use in plain-text format\n" msgstr " -S, --superuser=NAME superusuario a utilizar en el volcado de texto\n" -#: pg_dump.c:910 +#: pg_dump.c:925 #, c-format msgid " -t, --table=TABLE dump the named table(s) only\n" msgstr " -t, --table=TABLE extrae sólo la o las tablas nombradas\n" -#: pg_dump.c:911 +#: pg_dump.c:926 #, c-format msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n" msgstr " -T, --exclude-table=TABLA NO extrae la(s) tabla(s) nombrada(s)\n" -#: pg_dump.c:912 pg_dumpall.c:567 +#: pg_dump.c:927 pg_dumpall.c:566 #, c-format msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" msgstr " -x, --no-privileges no extrae los privilegios (grant/revoke)\n" -#: pg_dump.c:913 pg_dumpall.c:568 +#: pg_dump.c:928 pg_dumpall.c:567 #, c-format msgid " --binary-upgrade for use by upgrade utilities only\n" msgstr " --binary-upgrade sólo para uso de utilidades de upgrade\n" -#: pg_dump.c:914 pg_dumpall.c:569 +#: pg_dump.c:929 pg_dumpall.c:568 #, c-format msgid " --column-inserts dump data as INSERT commands with column names\n" msgstr "" " --column-inserts extrae los datos usando INSERT con nombres\n" " de columnas\n" -#: pg_dump.c:915 pg_dumpall.c:570 +#: pg_dump.c:930 pg_dumpall.c:569 #, c-format msgid " --disable-dollar-quoting disable dollar quoting, use SQL standard quoting\n" msgstr "" " --disable-dollar-quoting deshabilita el uso de «delimitadores de dólar»,\n" " usa delimitadores de cadena estándares\n" -#: pg_dump.c:916 pg_dumpall.c:571 pg_restore.c:467 +#: pg_dump.c:931 pg_dumpall.c:570 pg_restore.c:473 #, c-format msgid " --disable-triggers disable triggers during data-only restore\n" msgstr "" " --disable-triggers deshabilita los disparadores (triggers) durante el\n" " restablecimiento de la extracción de sólo-datos\n" -#: pg_dump.c:917 +#: pg_dump.c:932 #, c-format msgid "" " --enable-row-security enable row security (dump only content user has\n" @@ -1631,70 +1629,70 @@ msgstr "" " --enable-row-security activa seguridad de filas (volcar sólo el\n" " contenido al que el usuario tiene acceso)\n" -#: pg_dump.c:919 +#: pg_dump.c:934 #, c-format msgid " --exclude-table-data=TABLE do NOT dump data for the named table(s)\n" msgstr " --exclude-table-data=TABLA NO extrae los datos de la(s) tabla(s) nombrada(s)\n" -#: pg_dump.c:920 pg_dumpall.c:572 pg_restore.c:469 +#: pg_dump.c:935 pg_dumpall.c:571 pg_restore.c:475 #, c-format msgid " --if-exists use IF EXISTS when dropping objects\n" msgstr " --if-exists usa IF EXISTS al eliminar objetos\n" -#: pg_dump.c:921 pg_dumpall.c:573 +#: pg_dump.c:936 pg_dumpall.c:572 #, c-format msgid " --inserts dump data as INSERT commands, rather than COPY\n" msgstr " --inserts extrae los datos usando INSERT, en vez de COPY\n" -#: pg_dump.c:922 pg_dumpall.c:574 +#: pg_dump.c:937 pg_dumpall.c:573 #, c-format msgid " --no-security-labels do not dump security label assignments\n" msgstr " --no-security-labels no volcar asignaciones de etiquetas de seguridad\n" -#: pg_dump.c:923 +#: pg_dump.c:938 #, c-format msgid " --no-synchronized-snapshots do not use synchronized snapshots in parallel jobs\n" msgstr "" " --no-synchronized-snapshots no usar snapshots sincronizados en trabajos\n" " en paralelo\n" -#: pg_dump.c:924 pg_dumpall.c:575 +#: pg_dump.c:939 pg_dumpall.c:574 #, c-format msgid " --no-tablespaces do not dump tablespace assignments\n" msgstr " --no-tablespaces no volcar asignaciones de tablespace\n" -#: pg_dump.c:925 pg_dumpall.c:576 +#: pg_dump.c:940 pg_dumpall.c:575 #, c-format msgid " --no-unlogged-table-data do not dump unlogged table data\n" msgstr " --no-unlogged-table-data no volcar datos de tablas unlogged\n" -#: pg_dump.c:926 pg_dumpall.c:577 +#: pg_dump.c:941 pg_dumpall.c:576 #, c-format msgid " --quote-all-identifiers quote all identifiers, even if not key words\n" msgstr "" " --quote-all-identifiers entrecomilla todos los identificadores, incluso\n" " si no son palabras clave\n" -#: pg_dump.c:927 +#: pg_dump.c:942 #, c-format msgid " --section=SECTION dump named section (pre-data, data, or post-data)\n" msgstr "" " --section=SECCIÓN volcar la sección nombrada (pre-data, data,\n" " post-data)\n" -#: pg_dump.c:928 +#: pg_dump.c:943 #, c-format msgid " --serializable-deferrable wait until the dump can run without anomalies\n" msgstr "" " --serializable-deferrable espera hasta que el respaldo pueda completarse\n" " sin anomalías\n" -#: pg_dump.c:929 +#: pg_dump.c:944 #, c-format msgid " --snapshot=SNAPSHOT use given snapshot for the dump\n" msgstr " --snapshot=SNAPSHOT use el snapshot dado para la extracción\n" -#: pg_dump.c:930 pg_restore.c:475 +#: pg_dump.c:945 pg_restore.c:481 #, c-format msgid "" " --strict-names require table and/or schema include patterns to\n" @@ -1703,7 +1701,7 @@ msgstr "" " --strict-names requerir al menos una coincidencia para cada patrón\n" " de nombre de tablas y esquemas\n" -#: pg_dump.c:932 pg_dumpall.c:578 pg_restore.c:477 +#: pg_dump.c:947 pg_dumpall.c:577 pg_restore.c:483 #, c-format msgid "" " --use-set-session-authorization\n" @@ -1714,7 +1712,7 @@ msgstr "" " usa órdenes SESSION AUTHORIZATION en lugar de\n" " ALTER OWNER para cambiar los dueño de los objetos\n" -#: pg_dump.c:936 pg_dumpall.c:582 pg_restore.c:481 +#: pg_dump.c:951 pg_dumpall.c:581 pg_restore.c:487 #, c-format msgid "" "\n" @@ -1723,46 +1721,46 @@ msgstr "" "\n" "Opciones de conexión:\n" -#: pg_dump.c:937 +#: pg_dump.c:952 #, c-format msgid " -d, --dbname=DBNAME database to dump\n" msgstr " -d, --dbname=NOMBRE nombre de la base de datos que volcar\n" -#: pg_dump.c:938 pg_dumpall.c:584 pg_restore.c:482 +#: pg_dump.c:953 pg_dumpall.c:583 pg_restore.c:488 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" " -h, --host=ANFITRIÓN anfitrión de la base de datos o\n" " directorio del enchufe (socket)\n" -#: pg_dump.c:939 pg_dumpall.c:586 pg_restore.c:483 +#: pg_dump.c:954 pg_dumpall.c:585 pg_restore.c:489 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=PUERTO número del puerto de la base de datos\n" -#: pg_dump.c:940 pg_dumpall.c:587 pg_restore.c:484 +#: pg_dump.c:955 pg_dumpall.c:586 pg_restore.c:490 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=USUARIO nombre de usuario con el cual conectarse\n" -#: pg_dump.c:941 pg_dumpall.c:588 pg_restore.c:485 +#: pg_dump.c:956 pg_dumpall.c:587 pg_restore.c:491 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password nunca pedir una contraseña\n" -#: pg_dump.c:942 pg_dumpall.c:589 pg_restore.c:486 +#: pg_dump.c:957 pg_dumpall.c:588 pg_restore.c:492 #, c-format msgid " -W, --password force password prompt (should happen automatically)\n" msgstr "" " -W, --password fuerza un prompt para la contraseña\n" " (debería ser automático)\n" -#: pg_dump.c:943 pg_dumpall.c:590 +#: pg_dump.c:958 pg_dumpall.c:589 #, c-format msgid " --role=ROLENAME do SET ROLE before dump\n" msgstr " --role=ROL ejecuta SET ROLE antes del volcado\n" -#: pg_dump.c:945 +#: pg_dump.c:960 #, c-format msgid "" "\n" @@ -1775,393 +1773,411 @@ msgstr "" "de la variable de ambiente PGDATABASE.\n" "\n" -#: pg_dump.c:947 pg_dumpall.c:594 pg_restore.c:493 +#: pg_dump.c:962 pg_dumpall.c:593 pg_restore.c:499 #, c-format msgid "Report bugs to .\n" msgstr "Reporta errores a .\n" -#: pg_dump.c:967 +#: pg_dump.c:979 #, c-format msgid "invalid client encoding \"%s\" specified\n" msgstr "la codificación de cliente especificada «%s» no es válida\n" -#: pg_dump.c:1152 +#: pg_dump.c:1121 +#, c-format +msgid "" +"Synchronized snapshots are not supported on standby servers.\n" +"Run with --no-synchronized-snapshots instead if you do not need\n" +"synchronized snapshots.\n" +msgstr "" +"Los snapshots sincronizados no están soportados en servidores standby.\n" +"Ejecute con --no-synchronized-snapshots si no los necesita.\n" + +#: pg_dump.c:1190 #, c-format msgid "invalid output format \"%s\" specified\n" msgstr "el formato de salida especificado «%s» no es válido\n" -#: pg_dump.c:1175 +#: pg_dump.c:1213 #, c-format msgid "server version must be at least 7.3 to use schema selection switches\n" msgstr "" "la versión del servidor debe ser al menos 7.3 para usar los parámetros de\n" "selección de esquema\n" -#: pg_dump.c:1193 pg_dump.c:1246 +#: pg_dump.c:1231 +#, c-format +msgid "no matching schemas were found for pattern \"%s\"\n" +msgstr "no se encontraron esquemas coincidentes para el patrón «%s»\n" + +#: pg_dump.c:1284 #, c-format msgid "no matching tables were found for pattern \"%s\"\n" msgstr "no se encontraron tablas coincidentes para el patrón «%s»\n" -#: pg_dump.c:1596 +#: pg_dump.c:1671 #, c-format msgid "dumping contents of table \"%s.%s\"\n" msgstr "extrayendo el contenido de la tabla «%s.%s»\n" -#: pg_dump.c:1720 +#: pg_dump.c:1795 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" msgstr "Falló la extracción del contenido de la tabla «%s»: PQgetCopyData() falló.\n" -#: pg_dump.c:1721 pg_dump.c:1731 +#: pg_dump.c:1796 pg_dump.c:1806 #, c-format msgid "Error message from server: %s" msgstr "Mensaje de error del servidor: %s" -#: pg_dump.c:1722 pg_dump.c:1732 +#: pg_dump.c:1797 pg_dump.c:1807 #, c-format msgid "The command was: %s\n" msgstr "La orden era: %s\n" -#: pg_dump.c:1730 +#: pg_dump.c:1805 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetResult() failed.\n" msgstr "Falló la extracción del contenido de la tabla «%s»: PQgetResult() falló.\n" -#: pg_dump.c:2374 +#: pg_dump.c:2454 #, c-format msgid "saving database definition\n" msgstr "salvando las definiciones de la base de datos\n" -#: pg_dump.c:2707 +#: pg_dump.c:2788 #, c-format msgid "saving encoding = %s\n" msgstr "salvando codificaciones = %s\n" -#: pg_dump.c:2734 +#: pg_dump.c:2815 #, c-format msgid "saving standard_conforming_strings = %s\n" msgstr "salvando standard_conforming_strings = %s\n" -#: pg_dump.c:2774 +#: pg_dump.c:2855 #, c-format msgid "reading large objects\n" msgstr "leyendo objetos grandes\n" -#: pg_dump.c:2960 +#: pg_dump.c:3056 #, c-format msgid "saving large objects\n" msgstr "salvando objetos grandes\n" -#: pg_dump.c:3007 +#: pg_dump.c:3103 #, c-format msgid "error reading large object %u: %s" msgstr "error al leer el objeto grande %u: %s" -#: pg_dump.c:3059 +#: pg_dump.c:3155 #, c-format msgid "reading row security enabled for table \"%s.%s\"\n" msgstr "leyendo si seguridad de filas está activa para la tabla «%s.%s»\n" -#: pg_dump.c:3090 +#: pg_dump.c:3186 #, c-format msgid "reading policies for table \"%s.%s\"\n" msgstr "extrayendo las políticas para la tabla «%s.%s»\n" -#: pg_dump.c:3223 +#: pg_dump.c:3319 #, c-format msgid "unexpected policy command type: \"%s\"\n" msgstr "tipo de orden inesperada en política: «%s»\n" -#: pg_dump.c:3442 +#: pg_dump.c:3538 #, c-format msgid "could not find parent extension for %s\n" msgstr "no se pudo encontrar la extensión padre para %s\n" -#: pg_dump.c:3610 +#: pg_dump.c:3731 #, c-format msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" msgstr "PRECAUCIÓN: el dueño del esquema «%s» parece no ser válido\n" -#: pg_dump.c:3653 +#: pg_dump.c:3774 #, c-format msgid "schema with OID %u does not exist\n" msgstr "el esquema con OID %u no existe\n" -#: pg_dump.c:4068 +#: pg_dump.c:4189 #, c-format msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" msgstr "PRECAUCIÓN: el dueño del tipo «%s» parece no ser válido\n" -#: pg_dump.c:4179 +#: pg_dump.c:4303 #, c-format msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" msgstr "PRECAUCIÓN: el dueño del operador «%s» parece no ser válido\n" -#: pg_dump.c:4512 +#: pg_dump.c:4648 #, c-format msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" msgstr "PRECAUCIÓN: el dueño de la clase de operadores «%s» parece no ser válido\n" -#: pg_dump.c:4600 +#: pg_dump.c:4739 #, c-format msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" msgstr "PRECAUCIÓN: el dueño de la familia de operadores «%s» parece no ser válido\n" -#: pg_dump.c:4805 +#: pg_dump.c:4940 #, c-format msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" msgstr "PRECAUCIÓN: el dueño de la función de agregación «%s» parece no ser válido\n" -#: pg_dump.c:5074 +#: pg_dump.c:5237 #, c-format msgid "WARNING: owner of function \"%s\" appears to be invalid\n" msgstr "PRECAUCIÓN: el dueño de la función «%s» parece no ser válido\n" -#: pg_dump.c:5874 +#: pg_dump.c:6099 #, c-format msgid "WARNING: owner of table \"%s\" appears to be invalid\n" msgstr "PRECAUCIÓN: el dueño de la tabla «%s» parece no ser válido\n" -#: pg_dump.c:6026 +#: pg_dump.c:6141 pg_dump.c:16665 +#, c-format +msgid "failed sanity check, parent table OID %u of sequence OID %u not found\n" +msgstr "falló la revisión de integridad: no se encontró la tabla padre OID %u de la secuencia con OID %u\n" + +#: pg_dump.c:6268 #, c-format msgid "reading indexes for table \"%s.%s\"\n" msgstr "extrayendo los índices para la tabla «%s.%s»\n" -#: pg_dump.c:6394 +#: pg_dump.c:6636 #, c-format msgid "reading foreign key constraints for table \"%s.%s\"\n" msgstr "extrayendo restricciones de llave foránea para la tabla «%s.%s»\n" -#: pg_dump.c:6640 +#: pg_dump.c:6882 #, c-format msgid "failed sanity check, parent table OID %u of pg_rewrite entry OID %u not found\n" msgstr "falló la revisión de integridad: no se encontró la tabla padre OID %u del elemento con OID %u de pg_rewrite\n" -#: pg_dump.c:6734 +#: pg_dump.c:6976 #, c-format msgid "reading triggers for table \"%s.%s\"\n" msgstr "extrayendo los disparadores (triggers) para la tabla «%s.%s»\n" -#: pg_dump.c:6899 +#: pg_dump.c:7141 #, c-format msgid "query produced null referenced table name for foreign key trigger \"%s\" on table \"%s\" (OID of table: %u)\n" msgstr "" "la consulta produjo un nombre de tabla nulo para la llave foránea del \n" "disparador \"%s\" en la tabla «%s» (OID de la tabla: %u)\n" -#: pg_dump.c:7548 +#: pg_dump.c:7796 #, c-format msgid "finding the columns and types of table \"%s.%s\"\n" msgstr "buscando las columnas y tipos de la tabla «%s.%s»\n" -#: pg_dump.c:7727 +#: pg_dump.c:7975 #, c-format msgid "invalid column numbering in table \"%s\"\n" msgstr "numeración de columnas no válida en la tabla «%s»\n" -#: pg_dump.c:7761 +#: pg_dump.c:8009 #, c-format msgid "finding default expressions of table \"%s.%s\"\n" msgstr "buscando expresiones por omisión de la tabla «%s.%s»\n" -#: pg_dump.c:7814 +#: pg_dump.c:8062 #, c-format msgid "invalid adnum value %d for table \"%s\"\n" msgstr "el valor de adnum %d para la tabla «%s» no es válido\n" -#: pg_dump.c:7886 +#: pg_dump.c:8134 #, c-format msgid "finding check constraints for table \"%s.%s\"\n" msgstr "buscando restricciones de revisión (check) para la tabla «%s.%s»\n" -#: pg_dump.c:7982 +#: pg_dump.c:8230 #, c-format msgid "expected %d check constraint on table \"%s\" but found %d\n" msgid_plural "expected %d check constraints on table \"%s\" but found %d\n" msgstr[0] "se esperaban %d restricciones CHECK en la tabla «%s» pero se encontraron %d\n" msgstr[1] "se esperaban %d restricciones CHECK en la tabla «%s» pero se encontraron %d\n" -#: pg_dump.c:7986 +#: pg_dump.c:8234 #, c-format msgid "(The system catalogs might be corrupted.)\n" msgstr "(Los catálogos del sistema podrían estar corruptos)\n" -#: pg_dump.c:9506 +#: pg_dump.c:9813 #, c-format msgid "WARNING: typtype of data type \"%s\" appears to be invalid\n" msgstr "PRECAUCIÓN: el typtype del tipo «%s» parece no ser válido\n" -#: pg_dump.c:11048 +#: pg_dump.c:11355 #, c-format msgid "WARNING: bogus value in proargmodes array\n" msgstr "PRECAUCIÓN: valor no válido en el arreglo proargmodes\n" -#: pg_dump.c:11426 +#: pg_dump.c:11733 #, c-format msgid "WARNING: could not parse proallargtypes array\n" msgstr "PRECAUCIÓN: no se pudo interpretar el arreglo proallargtypes\n" -#: pg_dump.c:11442 +#: pg_dump.c:11749 #, c-format msgid "WARNING: could not parse proargmodes array\n" msgstr "PRECAUCIÓN: no se pudo interpretar el arreglo proargmodes\n" -#: pg_dump.c:11456 +#: pg_dump.c:11763 #, c-format msgid "WARNING: could not parse proargnames array\n" msgstr "PRECAUCIÓN: no se pudo interpretar el arreglo proargnames\n" -#: pg_dump.c:11467 +#: pg_dump.c:11774 #, c-format msgid "WARNING: could not parse proconfig array\n" msgstr "PRECAUCIÓN: no se pudo interpretar el arreglo proconfig\n" -#: pg_dump.c:11538 +#: pg_dump.c:11845 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" msgstr "el valor del atributo «provolatile» para la función «%s» es desconocido\n" -#: pg_dump.c:11582 pg_dump.c:13641 +#: pg_dump.c:11889 pg_dump.c:13950 #, c-format msgid "unrecognized proparallel value for function \"%s\"\n" msgstr "el valor del atributo «proparallel» para la función «%s» es desconocido\n" -#: pg_dump.c:11734 +#: pg_dump.c:11997 pg_dump.c:12107 pg_dump.c:12114 +#, c-format +msgid "could not find function definition for function with OID %u\n" +msgstr "no se encontró la definición de la función con OID %u\n" + +#: pg_dump.c:12042 #, c-format msgid "WARNING: bogus value in pg_cast.castfunc or pg_cast.castmethod field\n" msgstr "PRECAUCIÓN: valor no válido en los campos pg_cast.castfunc o pg_cast.castmethod\n" -#: pg_dump.c:11737 +#: pg_dump.c:12045 #, c-format msgid "WARNING: bogus value in pg_cast.castmethod field\n" msgstr "PRECAUCIÓN: valor no válido en el campo pg_cast.castmethod\n" -#: pg_dump.c:11825 +#: pg_dump.c:12135 #, c-format msgid "WARNING: bogus transform definition, at least one of trffromsql and trftosql should be nonzero\n" msgstr "PRECAUCIÓN: definición errónea de transformación; al menos uno de trffromsql and trftosql debe ser distinto de cero\n" -#: pg_dump.c:11842 +#: pg_dump.c:12152 #, c-format msgid "WARNING: bogus value in pg_transform.trffromsql field\n" msgstr "PRECAUCIÓN: valor erróneo en el campo pg_transform.trffromsql\n" -#: pg_dump.c:11863 +#: pg_dump.c:12173 #, c-format msgid "WARNING: bogus value in pg_transform.trftosql field\n" msgstr "PRECAUCIÓN: valor erróneo en el campo pg_transform.trftosql\n" -#: pg_dump.c:12254 +#: pg_dump.c:12564 #, c-format msgid "WARNING: could not find operator with OID %s\n" msgstr "PRECAUCIÓN: no se pudo encontrar el operador con OID %s\n" -#: pg_dump.c:12318 +#: pg_dump.c:12628 #, c-format msgid "WARNING: invalid type \"%c\" of access method \"%s\"\n" msgstr "PRECAUCIÓN: el tipo «%c» para el método de acceso «%s» no es válido\n" -#: pg_dump.c:13525 +#: pg_dump.c:13841 #, c-format msgid "WARNING: aggregate function %s could not be dumped correctly for this database version; ignored\n" msgstr "" "PRECAUCIÓN: la función de agregación «%s» no se pudo extraer correctamente\n" "para esta versión de la base de datos; ignorada\n" -#: pg_dump.c:14404 +#: pg_dump.c:14713 #, c-format msgid "unrecognized object type in default privileges: %d\n" msgstr "tipo de objeto desconocido en privilegios por omisión: %d\n" -#: pg_dump.c:14419 +#: pg_dump.c:14731 #, c-format msgid "could not parse default ACL list (%s)\n" msgstr "no se pudo interpretar la lista de ACL (%s)\n" -#: pg_dump.c:14490 +#: pg_dump.c:14812 #, c-format msgid "could not parse initial GRANT ACL list (%s) or initial REVOKE ACL list (%s) for object \"%s\" (%s)\n" msgstr "no se pudo interpretar la lista inicial de GRANT ACL (%s) o la lista inicial de REVOKE ACL (%s) para el objeto «%s» (%s)\n" -#: pg_dump.c:14498 +#: pg_dump.c:14820 #, c-format msgid "could not parse GRANT ACL list (%s) or REVOKE ACL list (%s) for object \"%s\" (%s)\n" msgstr "no se pudo interpretar la lista de GRANT ACL (%s) o la lista de REVOKE ACL (%s) para el objeto «%s» (%s)\n" -#: pg_dump.c:14974 +#: pg_dump.c:15305 #, c-format msgid "query to obtain definition of view \"%s\" returned no data\n" msgstr "la consulta para obtener la definición de la vista «%s» no regresó datos\n" -#: pg_dump.c:14977 +#: pg_dump.c:15308 #, c-format msgid "query to obtain definition of view \"%s\" returned more than one definition\n" msgstr "la consulta para obtener la definición de la vista «%s» regresó más de una definición\n" -#: pg_dump.c:14984 +#: pg_dump.c:15315 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)\n" msgstr "la definición de la vista «%s» parece estar vacía (tamaño cero)\n" -#: pg_dump.c:15742 +#: pg_dump.c:16074 #, c-format msgid "invalid column number %d for table \"%s\"\n" msgstr "el número de columna %d no es válido para la tabla «%s»\n" -#: pg_dump.c:15871 +#: pg_dump.c:16203 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "falta un índice para restricción «%s»\n" -#: pg_dump.c:16074 +#: pg_dump.c:16406 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "tipo de restricción inesperado: %c\n" -#: pg_dump.c:16228 pg_dump.c:16397 +#: pg_dump.c:16560 pg_dump.c:16733 #, c-format msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" msgid_plural "query to get data of sequence \"%s\" returned %d rows (expected 1)\n" msgstr[0] "la consulta para obtener los datos de la secuencia «%s» regresó %d entrada, pero se esperaba 1\n" msgstr[1] "la consulta para obtener los datos de la secuencia «%s» regresó %d entradas, pero se esperaba 1\n" -#: pg_dump.c:16239 +#: pg_dump.c:16571 #, c-format msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" msgstr "la consulta para obtener los datos de la secuencia «%s» regresó el nombre «%s»\n" -#: pg_dump.c:16495 +#: pg_dump.c:16831 #, c-format msgid "unexpected tgtype value: %d\n" msgstr "tgtype no esperado: %d\n" -#: pg_dump.c:16577 +#: pg_dump.c:16913 #, c-format msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" msgstr "argumento de cadena (%s) no válido para el disparador (trigger) «%s» en la tabla «%s»\n" -#: pg_dump.c:16774 +#: pg_dump.c:17120 #, c-format msgid "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows returned\n" msgstr "la consulta para obtener la regla «%s» asociada con la tabla «%s» falló: retornó un número incorrecto de renglones\n" -#: pg_dump.c:17163 +#: pg_dump.c:17509 #, c-format msgid "reading dependency data\n" msgstr "obteniendo datos de dependencias\n" -#: pg_dump.c:17724 +#: pg_dump.c:18066 #, c-format msgid "WARNING: could not parse reloptions array\n" msgstr "PRECAUCIÓN: no se pudo interpretar el arreglo reloptions\n" -#: pg_dump.c:17788 -#, c-format -msgid "query returned %d row instead of one: %s\n" -msgid_plural "query returned %d rows instead of one: %s\n" -msgstr[0] "la consulta regresó %d fila en lugar de una: %s\n" -msgstr[1] "la consulta regresó %d filas en lugar de una: %s\n" - #. translator: this is a module name #: pg_dump_sort.c:23 msgid "sorter" @@ -2182,34 +2198,34 @@ msgstr "dependencia %d no válida\n" msgid "could not identify dependency loop\n" msgstr "no se pudo identificar bucle de dependencia\n" -#: pg_dump_sort.c:1261 +#: pg_dump_sort.c:1262 #, c-format msgid "NOTICE: there are circular foreign-key constraints on this table:\n" msgid_plural "NOTICE: there are circular foreign-key constraints among these tables:\n" msgstr[0] "NOTA: hay restricciones de llave foránea circulares en la siguiente tabla:\n" msgstr[1] "NOTA: hay restricciones de llave foránea circulares entre las siguientes tablas:\n" -#: pg_dump_sort.c:1265 pg_dump_sort.c:1285 +#: pg_dump_sort.c:1266 pg_dump_sort.c:1286 #, c-format msgid " %s\n" msgstr " %s\n" -#: pg_dump_sort.c:1266 +#: pg_dump_sort.c:1267 #, c-format msgid "You might not be able to restore the dump without using --disable-triggers or temporarily dropping the constraints.\n" msgstr "Puede no ser capaz de restaurar el respaldo sin usar --disable-triggers o temporalmente eliminar las restricciones.\n" -#: pg_dump_sort.c:1267 +#: pg_dump_sort.c:1268 #, c-format msgid "Consider using a full dump instead of a --data-only dump to avoid this problem.\n" msgstr "Considere usar un volcado completo en lugar de --data-only para evitar este problema.\n" -#: pg_dump_sort.c:1279 +#: pg_dump_sort.c:1280 #, c-format msgid "WARNING: could not resolve dependency loop among these items:\n" msgstr "PRECAUCIÓN: no se pudo resolver el bucle de dependencias entre los siguientes elementos:\n" -#: pg_dumpall.c:182 +#: pg_dumpall.c:180 #, c-format msgid "" "The program \"pg_dump\" is needed by %s but was not found in the\n" @@ -2220,7 +2236,7 @@ msgstr "" "directorio que «%s».\n" "Verifique su instalación.\n" -#: pg_dumpall.c:189 +#: pg_dumpall.c:187 #, c-format msgid "" "The program \"pg_dump\" was found by \"%s\"\n" @@ -2231,32 +2247,32 @@ msgstr "" "pero no es de la misma versión que %s.\n" "Verifique su instalación.\n" -#: pg_dumpall.c:319 +#: pg_dumpall.c:317 #, c-format msgid "%s: options -g/--globals-only and -r/--roles-only cannot be used together\n" msgstr "%s: las opciones -g/--globals-only y -r/--roles-only no pueden usarse juntas\n" -#: pg_dumpall.c:328 +#: pg_dumpall.c:326 #, c-format msgid "%s: options -g/--globals-only and -t/--tablespaces-only cannot be used together\n" msgstr "%s: las opciones -g/--globals-only y -t/--tablespaces-only no pueden usarse juntas\n" -#: pg_dumpall.c:337 pg_restore.c:345 +#: pg_dumpall.c:335 pg_restore.c:361 #, c-format msgid "%s: option --if-exists requires option -c/--clean\n" msgstr "%s: la opción --if-exists requiere la opción -c/--clean\n" -#: pg_dumpall.c:344 +#: pg_dumpall.c:342 #, c-format msgid "%s: options -r/--roles-only and -t/--tablespaces-only cannot be used together\n" msgstr "%s: las opciones -r/--roles-only y -t/--tablespaces-only no pueden usarse juntas\n" -#: pg_dumpall.c:386 pg_dumpall.c:1909 +#: pg_dumpall.c:384 pg_dumpall.c:1995 #, c-format msgid "%s: could not connect to database \"%s\"\n" msgstr "%s: no se pudo establecer la conexión a la base de datos «%s»\n" -#: pg_dumpall.c:401 +#: pg_dumpall.c:399 #, c-format msgid "" "%s: could not connect to databases \"postgres\" or \"template1\"\n" @@ -2265,12 +2281,12 @@ msgstr "" "%s: no se pudo establecer la conexión a las bases de datos «postgres» o\n" "«template1». Por favor especifique una base de datos para conectarse.\n" -#: pg_dumpall.c:418 +#: pg_dumpall.c:416 #, c-format msgid "%s: could not open the output file \"%s\": %s\n" msgstr "%s: no se pudo abrir el archivo de salida «%s»: %s\n" -#: pg_dumpall.c:548 +#: pg_dumpall.c:546 #, c-format msgid "" "%s extracts a PostgreSQL database cluster into an SQL script file.\n" @@ -2280,63 +2296,63 @@ msgstr "" "guión (script) SQL.\n" "\n" -#: pg_dumpall.c:550 +#: pg_dumpall.c:548 #, c-format msgid " %s [OPTION]...\n" msgstr " %s [OPCIÓN]...\n" -#: pg_dumpall.c:553 +#: pg_dumpall.c:551 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=ARCHIVO nombre del archivo de salida\n" -#: pg_dumpall.c:559 +#: pg_dumpall.c:558 #, c-format msgid " -c, --clean clean (drop) databases before recreating\n" msgstr " -c, --clean tira (drop) la base de datos antes de crearla\n" -#: pg_dumpall.c:560 +#: pg_dumpall.c:559 #, c-format msgid " -g, --globals-only dump only global objects, no databases\n" msgstr " -g, --globals-only extrae sólo los objetos globales, no bases de datos\n" -#: pg_dumpall.c:562 pg_restore.c:459 +#: pg_dumpall.c:561 pg_restore.c:465 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr " -O, --no-owner no reestablece los dueños de los objetos\n" -#: pg_dumpall.c:563 +#: pg_dumpall.c:562 #, c-format msgid " -r, --roles-only dump only roles, no databases or tablespaces\n" msgstr "" " -r, --roles-only extrae sólo los roles, no bases de datos\n" " ni tablespaces\n" -#: pg_dumpall.c:565 +#: pg_dumpall.c:564 #, c-format msgid " -S, --superuser=NAME superuser user name to use in the dump\n" msgstr "" " -S, --superuser=NAME especifica el nombre del superusuario a usar en\n" " el volcado\n" -#: pg_dumpall.c:566 +#: pg_dumpall.c:565 #, c-format msgid " -t, --tablespaces-only dump only tablespaces, no databases or roles\n" msgstr "" " -t, --tablespaces-only extrae sólo los tablespaces, no bases de datos\n" " ni roles\n" -#: pg_dumpall.c:583 +#: pg_dumpall.c:582 #, c-format msgid " -d, --dbname=CONNSTR connect using connection string\n" msgstr " -d, --dbname=CONNSTR conectar usando la cadena de conexión\n" -#: pg_dumpall.c:585 +#: pg_dumpall.c:584 #, c-format msgid " -l, --database=DBNAME alternative default database\n" msgstr " -l, --database=NOMBRE especifica la base de datos a la cual conectarse\n" -#: pg_dumpall.c:592 +#: pg_dumpall.c:591 #, c-format msgid "" "\n" @@ -2348,67 +2364,67 @@ msgstr "" "Si no se usa -f/--file, el volcado de SQL será escrito a la salida estándar.\n" "\n" -#: pg_dumpall.c:777 +#: pg_dumpall.c:792 #, c-format msgid "%s: role name starting with \"pg_\" skipped (%s)\n" msgstr "%s: omitido nombre de rol que empieza con «pg_» (%s)\n" -#: pg_dumpall.c:1128 +#: pg_dumpall.c:1169 #, c-format msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n" msgstr "%s: no se pudo interpretar la lista de control de acceso (%s) del tablespace «%s»\n" -#: pg_dumpall.c:1459 +#: pg_dumpall.c:1537 #, c-format msgid "%s: could not parse ACL list (%s) for database \"%s\"\n" msgstr "%s: no se pudo interpretar la lista de control de acceso (%s) de la base de datos «%s»\n" -#: pg_dumpall.c:1676 +#: pg_dumpall.c:1755 #, c-format msgid "%s: dumping database \"%s\"...\n" msgstr "%s: extrayendo base de datos «%s»...\n" -#: pg_dumpall.c:1697 +#: pg_dumpall.c:1779 #, c-format msgid "%s: pg_dump failed on database \"%s\", exiting\n" msgstr "%s: pg_dump falló en la base de datos «%s», saliendo\n" -#: pg_dumpall.c:1706 +#: pg_dumpall.c:1788 #, c-format msgid "%s: could not re-open the output file \"%s\": %s\n" msgstr "%s: no se pudo reabrir el archivo de salida «%s»: %s\n" -#: pg_dumpall.c:1751 +#: pg_dumpall.c:1833 #, c-format msgid "%s: running \"%s\"\n" msgstr "%s: ejecutando «%s»\n" -#: pg_dumpall.c:1931 +#: pg_dumpall.c:2017 #, c-format msgid "%s: could not connect to database \"%s\": %s\n" msgstr "%s: no se pudo establecer la conexión a la base de datos «%s»: %s\n" -#: pg_dumpall.c:1961 +#: pg_dumpall.c:2047 #, c-format msgid "%s: could not get server version\n" msgstr "%s: no se pudo obtener la versión del servidor\n" -#: pg_dumpall.c:1967 +#: pg_dumpall.c:2053 #, c-format msgid "%s: could not parse server version \"%s\"\n" msgstr "%s: no se pudo interpretar la versión del servidor «%s»\n" -#: pg_dumpall.c:2045 pg_dumpall.c:2071 +#: pg_dumpall.c:2131 pg_dumpall.c:2157 #, c-format msgid "%s: executing %s\n" msgstr "%s: ejecutando %s\n" -#: pg_dumpall.c:2051 pg_dumpall.c:2077 +#: pg_dumpall.c:2137 pg_dumpall.c:2163 #, c-format msgid "%s: query failed: %s" msgstr "%s: falló la consulta: %s" -#: pg_dumpall.c:2053 pg_dumpall.c:2079 +#: pg_dumpall.c:2139 pg_dumpall.c:2165 #, c-format msgid "%s: query was: %s\n" msgstr "%s: la consulta era: %s\n" @@ -2428,27 +2444,32 @@ msgstr "%s: las opciones -s/--schema-only y -a/--data-only no pueden usarse junt msgid "%s: options -c/--clean and -a/--data-only cannot be used together\n" msgstr "%s: las opciones -c/--clean y -a/--data-only no pueden usarse juntas\n" -#: pg_restore.c:331 +#: pg_restore.c:330 +#, c-format +msgid "%s: invalid number of parallel jobs\n" +msgstr "%s: número de trabajos paralelos no válido\n" + +#: pg_restore.c:338 +#, c-format +msgid "%s: maximum number of parallel jobs is %d\n" +msgstr "%s: el número máximo de trabajos en paralelo es %d\n" + +#: pg_restore.c:347 #, c-format msgid "%s: cannot specify both --single-transaction and multiple jobs\n" msgstr "%s: no se puede especificar --single-transaction junto con múltiples tareas\n" -#: pg_restore.c:372 +#: pg_restore.c:388 #, c-format msgid "unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"t\"\n" msgstr "formato de archivo «%s» no reconocido; por favor especifique «c», «d» o «t»\n" -#: pg_restore.c:404 -#, c-format -msgid "%s: maximum number of parallel jobs is %d\n" -msgstr "%s: el número máximo de trabajos en paralelo es %d\n" - -#: pg_restore.c:422 +#: pg_restore.c:428 #, c-format msgid "WARNING: errors ignored on restore: %d\n" msgstr "PRECAUCIÓN: errores ignorados durante la recuperación: %d\n" -#: pg_restore.c:436 +#: pg_restore.c:442 #, c-format msgid "" "%s restores a PostgreSQL database from an archive created by pg_dump.\n" @@ -2458,49 +2479,49 @@ msgstr "" "creado por pg_dump.\n" "\n" -#: pg_restore.c:438 +#: pg_restore.c:444 #, c-format msgid " %s [OPTION]... [FILE]\n" msgstr " %s [OPCIÓN]... [ARCHIVO]\n" -#: pg_restore.c:441 +#: pg_restore.c:447 #, c-format msgid " -d, --dbname=NAME connect to database name\n" msgstr " -d, --dbname=NOMBRE nombre de la base de datos a la que conectarse\n" -#: pg_restore.c:442 +#: pg_restore.c:448 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=ARCHIVO nombre del archivo de salida\n" -#: pg_restore.c:443 +#: pg_restore.c:449 #, c-format msgid " -F, --format=c|d|t backup file format (should be automatic)\n" msgstr " -F, --format=c|d|t formato del volcado (debería ser automático)\n" -#: pg_restore.c:444 +#: pg_restore.c:450 #, c-format msgid " -l, --list print summarized TOC of the archive\n" msgstr "" " -l, --list imprime una tabla resumida de contenidos\n" " del archivador\n" -#: pg_restore.c:445 +#: pg_restore.c:451 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose modo verboso\n" -#: pg_restore.c:446 +#: pg_restore.c:452 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version mostrar información de versión y salir\n" -#: pg_restore.c:447 +#: pg_restore.c:453 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help mostrar esta ayuda y salir\n" -#: pg_restore.c:449 +#: pg_restore.c:455 #, c-format msgid "" "\n" @@ -2509,34 +2530,34 @@ msgstr "" "\n" "Opciones que controlan la recuperación:\n" -#: pg_restore.c:450 +#: pg_restore.c:456 #, c-format msgid " -a, --data-only restore only the data, no schema\n" msgstr " -a, --data-only reestablece sólo los datos, no el esquema\n" -#: pg_restore.c:452 +#: pg_restore.c:458 #, c-format msgid " -C, --create create the target database\n" msgstr " -C, --create crea la base de datos de destino\n" -#: pg_restore.c:453 +#: pg_restore.c:459 #, c-format msgid " -e, --exit-on-error exit on error, default is to continue\n" msgstr "" " -e, --exit-on-error abandonar al encontrar un error\n" " por omisión, se continúa la restauración\n" -#: pg_restore.c:454 +#: pg_restore.c:460 #, c-format msgid " -I, --index=NAME restore named index\n" msgstr " -I, --index=NOMBRE reestablece el índice nombrado\n" -#: pg_restore.c:455 +#: pg_restore.c:461 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to restore\n" msgstr " -j, --jobs=NUM máximo de procesos paralelos para restaurar\n" -#: pg_restore.c:456 +#: pg_restore.c:462 #, c-format msgid "" " -L, --use-list=FILENAME use table of contents from this file for\n" @@ -2545,56 +2566,56 @@ msgstr "" " -L, --use-list=ARCHIVO usa la tabla de contenido especificada para ordenar\n" " la salida de este archivo\n" -#: pg_restore.c:458 +#: pg_restore.c:464 #, c-format msgid " -n, --schema=NAME restore only objects in this schema\n" msgstr " -n, --schema=NAME reestablece sólo los objetos en este esquema\n" -#: pg_restore.c:460 +#: pg_restore.c:466 #, c-format msgid " -P, --function=NAME(args) restore named function\n" msgstr "" " -P, --function=NOMBRE(args)\n" " reestablece la función nombrada\n" -#: pg_restore.c:461 +#: pg_restore.c:467 #, c-format msgid " -s, --schema-only restore only the schema, no data\n" msgstr " -s, --schema-only reestablece el esquema únicamente, no los datos\n" -#: pg_restore.c:462 +#: pg_restore.c:468 #, c-format msgid " -S, --superuser=NAME superuser user name to use for disabling triggers\n" msgstr "" " -S, --superuser=NOMBRE especifica el nombre del superusuario que se usa\n" " para deshabilitar los disparadores (triggers)\n" -#: pg_restore.c:463 +#: pg_restore.c:469 #, c-format msgid " -t, --table=NAME restore named relation (table, view, etc.)\n" msgstr " -t, --table=NOMBRE reestablece la relación (tabla, vista, etc.) nombrada\n" -#: pg_restore.c:464 +#: pg_restore.c:470 #, c-format msgid " -T, --trigger=NAME restore named trigger\n" msgstr " -T, --trigger=NOMBRE reestablece el disparador (trigger) nombrado\n" -#: pg_restore.c:465 +#: pg_restore.c:471 #, c-format msgid " -x, --no-privileges skip restoration of access privileges (grant/revoke)\n" msgstr " -x, --no-privileges no reestablece los privilegios (grant/revoke)\n" -#: pg_restore.c:466 +#: pg_restore.c:472 #, c-format msgid " -1, --single-transaction restore as a single transaction\n" msgstr " -1, --single-transaction reestablece en una única transacción\n" -#: pg_restore.c:468 +#: pg_restore.c:474 #, c-format msgid " --enable-row-security enable row security\n" msgstr " --enable-row-security activa seguridad de filas\n" -#: pg_restore.c:470 +#: pg_restore.c:476 #, c-format msgid "" " --no-data-for-failed-tables do not restore data of tables that could not be\n" @@ -2604,29 +2625,29 @@ msgstr "" " no reestablece datos de tablas que no pudieron\n" " ser creadas\n" -#: pg_restore.c:472 +#: pg_restore.c:478 #, c-format msgid " --no-security-labels do not restore security labels\n" msgstr " --no-security-labels no restaura etiquetas de seguridad\n" -#: pg_restore.c:473 +#: pg_restore.c:479 #, c-format msgid " --no-tablespaces do not restore tablespace assignments\n" msgstr " --no-tablespaces no vuelca asignaciones de tablespace\n" -#: pg_restore.c:474 +#: pg_restore.c:480 #, c-format msgid " --section=SECTION restore named section (pre-data, data, or post-data)\n" msgstr "" " --section=SECCIÓN reestablece la sección nombrada (pre-data, data\n" " post-data)\n" -#: pg_restore.c:487 +#: pg_restore.c:493 #, c-format msgid " --role=ROLENAME do SET ROLE before restore\n" msgstr " --role=ROLENAME hace SET ROLE antes de restaurar\n" -#: pg_restore.c:489 +#: pg_restore.c:495 #, c-format msgid "" "\n" @@ -2637,7 +2658,7 @@ msgstr "" "Las opciones -I, -n, -P, -t, -T, y --section pueden ser combinadas y especificadas\n" "varias veces para seleccionar varios objetos.\n" -#: pg_restore.c:492 +#: pg_restore.c:498 #, c-format msgid "" "\n" @@ -2647,9 +2668,3 @@ msgstr "" "\n" "Si no se especifica un archivo de entrada, se usa la entrada estándar.\n" "\n" - -#~ msgid "could not open output file \"%s\" for writing\n" -#~ msgstr "no se pudo abrir el archivo de salida «%s» para escritura\n" - -#~ msgid "archive member too large for tar format\n" -#~ msgstr "el miembro de archivador es demasiado grande para el formato tar\n" diff --git a/src/bin/pg_dump/po/fr.po b/src/bin/pg_dump/po/fr.po index e2e9a6cbfd..faab6e689c 100644 --- a/src/bin/pg_dump/po/fr.po +++ b/src/bin/pg_dump/po/fr.po @@ -1,66 +1,66 @@ # translation of pg_dump.po to fr_fr # french message translation file for pg_dump # -# Use these quotes: « %s » +# Use these quotes: « %s » # # Guillaume Lelarge , 2004-2009. -# Stéphane Schildknecht , 2009. +# Stéphane Schildknecht , 2009. msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-23 20:14+0000\n" -"PO-Revision-Date: 2016-09-24 18:06+0200\n" +"POT-Creation-Date: 2017-07-24 07:24+0000\n" +"PO-Revision-Date: 2017-07-24 21:28+0200\n" "Last-Translator: Guillaume Lelarge \n" "Language-Team: PostgreSQLfr \n" "Language: fr\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-15\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 1.8.7\n" +"X-Generator: Poedit 2.0.2\n" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, c-format msgid "could not identify current directory: %s" -msgstr "n'a pas pu identifier le répertoire courant : %s" +msgstr "n'a pas pu identifier le répertoire courant : %s" #: ../../common/exec.c:146 #, c-format msgid "invalid binary \"%s\"" -msgstr "binaire « %s » invalide" +msgstr "binaire « %s » invalide" #: ../../common/exec.c:195 #, c-format msgid "could not read binary \"%s\"" -msgstr "n'a pas pu lire le binaire « %s »" +msgstr "n'a pas pu lire le binaire « %s »" #: ../../common/exec.c:202 #, c-format msgid "could not find a \"%s\" to execute" -msgstr "n'a pas pu trouver un « %s » à exécuter" +msgstr "n'a pas pu trouver un « %s » à exécuter" #: ../../common/exec.c:257 ../../common/exec.c:293 #, c-format msgid "could not change directory to \"%s\": %s" -msgstr "n'a pas pu changer le répertoire par « %s » : %s" +msgstr "n'a pas pu changer le répertoire par « %s » : %s" #: ../../common/exec.c:272 #, c-format msgid "could not read symbolic link \"%s\"" -msgstr "n'a pas pu lire le lien symbolique « %s »" +msgstr "n'a pas pu lire le lien symbolique « %s »" #: ../../common/exec.c:523 #, c-format msgid "pclose failed: %s" -msgstr "échec de pclose : %s" +msgstr "échec de pclose : %s" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 #: ../../common/fe_memutils.c:98 pg_backup_db.c:158 pg_backup_db.c:213 #: pg_backup_db.c:272 pg_backup_db.c:314 #, c-format msgid "out of memory\n" -msgstr "mémoire épuisée\n" +msgstr "mémoire épuisée\n" #: ../../common/fe_memutils.c:92 #, c-format @@ -70,7 +70,7 @@ msgstr "ne peut pas dupliquer un pointeur nul (erreur interne)\n" #: ../../common/wait_error.c:47 #, c-format msgid "command not executable" -msgstr "commande non exécutable" +msgstr "commande non exécutable" #: ../../common/wait_error.c:51 #, c-format @@ -80,27 +80,27 @@ msgstr "commande introuvable" #: ../../common/wait_error.c:56 #, c-format msgid "child process exited with exit code %d" -msgstr "le processus fils a quitté avec le code de sortie %d" +msgstr "le processus fils a quitté avec le code de sortie %d" #: ../../common/wait_error.c:63 #, c-format msgid "child process was terminated by exception 0x%X" -msgstr "le processus fils a été terminé par l'exception 0x%X" +msgstr "le processus fils a été terminé par l'exception 0x%X" #: ../../common/wait_error.c:73 #, c-format msgid "child process was terminated by signal %s" -msgstr "le processus fils a été terminé par le signal %s" +msgstr "le processus fils a été terminé par le signal %s" #: ../../common/wait_error.c:77 #, c-format msgid "child process was terminated by signal %d" -msgstr "le processus fils a été terminé par le signal %d" +msgstr "le processus fils a été terminé par le signal %d" #: ../../common/wait_error.c:82 #, c-format msgid "child process exited with unrecognized status %d" -msgstr "le processus fils a quitté avec un statut %d non reconnu" +msgstr "le processus fils a quitté avec un statut %d non reconnu" #: common.c:121 #, c-format @@ -115,7 +115,7 @@ msgstr "identification des membres d'extension\n" #: common.c:130 #, c-format msgid "reading schemas\n" -msgstr "lecture des schémas\n" +msgstr "lecture des schémas\n" #: common.c:141 #, c-format @@ -135,32 +135,32 @@ msgstr "lecture des types utilisateur\n" #: common.c:161 #, c-format msgid "reading procedural languages\n" -msgstr "lecture des langages procéduraux\n" +msgstr "lecture des langages procéduraux\n" #: common.c:165 #, c-format msgid "reading user-defined aggregate functions\n" -msgstr "lecture des fonctions d'aggrégats utilisateur\n" +msgstr "lecture des fonctions d'aggrégats utilisateur\n" #: common.c:169 #, c-format msgid "reading user-defined operators\n" -msgstr "lecture des opérateurs utilisateur\n" +msgstr "lecture des opérateurs utilisateur\n" #: common.c:174 #, c-format msgid "reading user-defined access methods\n" -msgstr "lecture des méthodes d'accès définis par les utilisateurs\n" +msgstr "lecture des méthodes d'accès définis par les utilisateurs\n" #: common.c:178 #, c-format msgid "reading user-defined operator classes\n" -msgstr "lecture des classes d'opérateurs utilisateur\n" +msgstr "lecture des classes d'opérateurs utilisateur\n" #: common.c:182 #, c-format msgid "reading user-defined operator families\n" -msgstr "lecture des familles d'opérateurs utilisateur\n" +msgstr "lecture des familles d'opérateurs utilisateur\n" #: common.c:186 #, c-format @@ -170,7 +170,7 @@ msgstr "lecture des analyseurs utilisateur pour la recherche plein texte\n" #: common.c:190 #, c-format msgid "reading user-defined text search templates\n" -msgstr "lecture des modèles utilisateur pour la recherche plein texte\n" +msgstr "lecture des modèles utilisateur pour la recherche plein texte\n" #: common.c:194 #, c-format @@ -186,7 +186,7 @@ msgstr "" #: common.c:202 #, c-format msgid "reading user-defined foreign-data wrappers\n" -msgstr "lecture des wrappers de données distantes utilisateur\n" +msgstr "lecture des wrappers de données distantes utilisateur\n" #: common.c:206 #, c-format @@ -196,7 +196,7 @@ msgstr "lecture des serveurs distants utilisateur\n" #: common.c:210 #, c-format msgid "reading default privileges\n" -msgstr "lecture des droits par défaut\n" +msgstr "lecture des droits par défaut\n" #: common.c:214 #, c-format @@ -221,12 +221,12 @@ msgstr "lecture des transformations\n" #: common.c:231 #, c-format msgid "reading table inheritance information\n" -msgstr "lecture des informations d'héritage des tables\n" +msgstr "lecture des informations d'héritage des tables\n" #: common.c:235 #, c-format msgid "reading event triggers\n" -msgstr "lecture des déclencheurs sur évènement\n" +msgstr "lecture des déclencheurs sur évènement\n" #: common.c:240 #, c-format @@ -236,17 +236,17 @@ msgstr "recherche des tables d'extension\n" #: common.c:245 #, c-format msgid "finding inheritance relationships\n" -msgstr "recherche des relations d'héritage\n" +msgstr "recherche des relations d'héritage\n" #: common.c:249 #, c-format msgid "reading column info for interesting tables\n" -msgstr "lecture des informations de colonnes des tables intéressantes\n" +msgstr "lecture des informations de colonnes des tables intéressantes\n" #: common.c:253 #, c-format msgid "flagging inherited columns in subtables\n" -msgstr "marquage des colonnes héritées dans les sous-tables\n" +msgstr "marquage des colonnes héritées dans les sous-tables\n" #: common.c:257 #, c-format @@ -261,12 +261,12 @@ msgstr "lecture des contraintes\n" #: common.c:265 #, c-format msgid "reading triggers\n" -msgstr "lecture des déclencheurs\n" +msgstr "lecture des déclencheurs\n" #: common.c:269 #, c-format msgid "reading rewrite rules\n" -msgstr "lecture des règles de réécriture\n" +msgstr "lecture des règles de réécriture\n" #: common.c:273 #, c-format @@ -278,19 +278,19 @@ msgstr "lecture des politiques\n" msgid "" "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n" msgstr "" -"vérification échouée, OID %u parent de la table « %s » (OID %u) " +"vérification échouée, OID %u parent de la table « %s » (OID %u) " "introuvable\n" #: common.c:950 #, c-format msgid "could not parse numeric array \"%s\": too many numbers\n" -msgstr "n'a pas pu analyser le tableau numérique « %s » : trop de nombres\n" +msgstr "n'a pas pu analyser le tableau numérique « %s » : trop de nombres\n" #: common.c:965 #, c-format msgid "could not parse numeric array \"%s\": invalid character in number\n" msgstr "" -"n'a pas pu analyser le tableau numérique « %s » : caractère invalide dans\n" +"n'a pas pu analyser le tableau numérique « %s » : caractère invalide dans\n" "le nombre\n" #. translator: this is a module name @@ -312,7 +312,7 @@ msgstr "pas construit avec le support de zlib\n" #: compress_io.c:242 compress_io.c:344 #, c-format msgid "could not initialize compression library: %s\n" -msgstr "n'a pas pu initialiser la bibliothèque de compression : %s\n" +msgstr "n'a pas pu initialiser la bibliothèque de compression : %s\n" #: compress_io.c:263 #, c-format @@ -322,50 +322,50 @@ msgstr "n'a pas pu fermer le flux de compression : %s\n" #: compress_io.c:281 #, c-format msgid "could not compress data: %s\n" -msgstr "n'a pas pu compresser les données : %s\n" +msgstr "n'a pas pu compresser les données : %s\n" #: compress_io.c:361 compress_io.c:377 #, c-format msgid "could not uncompress data: %s\n" -msgstr "n'a pas pu décompresser les données : %s\n" +msgstr "n'a pas pu décompresser les données : %s\n" #: compress_io.c:385 #, c-format msgid "could not close compression library: %s\n" -msgstr "n'a pas pu fermer la bibliothèque de compression : %s\n" +msgstr "n'a pas pu fermer la bibliothèque de compression : %s\n" #: compress_io.c:596 compress_io.c:632 pg_backup_custom.c:591 #: pg_backup_tar.c:561 #, c-format msgid "could not read from input file: %s\n" -msgstr "n'a pas pu lire à partir du fichier en entrée : %s\n" +msgstr "n'a pas pu lire à partir du fichier en entrée : %s\n" #: compress_io.c:635 pg_backup_custom.c:588 pg_backup_directory.c:548 #: pg_backup_tar.c:797 pg_backup_tar.c:821 #, c-format msgid "could not read from input file: end of file\n" -msgstr "n'a pas pu lire à partir du fichier en entrée : fin du fichier\n" +msgstr "n'a pas pu lire à partir du fichier en entrée : fin du fichier\n" -#: parallel.c:163 +#: parallel.c:167 msgid "parallel archiver" -msgstr "archiveur en parallèle" +msgstr "archiveur en parallèle" -#: parallel.c:227 +#: parallel.c:231 #, c-format msgid "%s: WSAStartup failed: %d\n" -msgstr "%s : WSAStartup a échoué : %d\n" +msgstr "%s : WSAStartup a échoué : %d\n" -#: parallel.c:930 +#: parallel.c:934 #, c-format msgid "could not create communication channels: %s\n" -msgstr "n'a pas pu créer le canal de communication : %s\n" +msgstr "n'a pas pu créer le canal de communication : %s\n" -#: parallel.c:993 +#: parallel.c:997 #, c-format msgid "could not create worker process: %s\n" -msgstr "n'a pas pu créer le processus de travail : %s\n" +msgstr "n'a pas pu créer le processus de travail : %s\n" -#: parallel.c:1188 +#: parallel.c:1192 #, c-format msgid "" "could not obtain lock on relation \"%s\"\n" @@ -373,72 +373,72 @@ msgid "" "table after the pg_dump parent process had gotten the initial ACCESS SHARE " "lock on the table.\n" msgstr "" -"impossible d'obtenir un verrou sur la relationn « %s »\n" -"Cela signifie en général que quelqu'un à demandé un verrou ACCESS EXCLUSIVE " -"sur la table après que pg_dump ait obtenu son verrou ACCESS SHARE initial " +"impossible d'obtenir un verrou sur la relationn « %s »\n" +"Cela signifie en général que quelqu'un à demandé un verrou ACCESS EXCLUSIVE " +"sur la table après que pg_dump ait obtenu son verrou ACCESS SHARE initial " "sur la table.\n" -#: parallel.c:1258 +#: parallel.c:1262 #, c-format msgid "unrecognized command received from master: \"%s\"\n" -msgstr "commande non reconnue reçue du maître : « %s »\n" +msgstr "commande non reconnue reçue du maître : « %s »\n" -#: parallel.c:1296 +#: parallel.c:1300 #, c-format msgid "a worker process died unexpectedly\n" -msgstr "un processus worker a subi un arrêt brutal inattendu\n" +msgstr "un processus worker a subi un arrêt brutal inattendu\n" -#: parallel.c:1322 parallel.c:1328 +#: parallel.c:1326 parallel.c:1332 #, c-format msgid "invalid message received from worker: \"%s\"\n" -msgstr "message invalide reçu du worker: « %s »\n" +msgstr "message invalide reçu du worker: « %s »\n" -#: parallel.c:1385 parallel.c:1436 +#: parallel.c:1389 parallel.c:1440 #, c-format msgid "error processing a parallel work item\n" -msgstr "erreur durant le traitement en parallèle d'un item\n" +msgstr "erreur durant le traitement en parallèle d'un item\n" -#: parallel.c:1465 parallel.c:1583 +#: parallel.c:1469 parallel.c:1587 #, c-format msgid "could not write to the communication channel: %s\n" -msgstr "n'a pas pu écrire dans le canal de communication: %s\n" +msgstr "n'a pas pu écrire dans le canal de communication: %s\n" -#: parallel.c:1543 +#: parallel.c:1547 #, c-format msgid "select() failed: %s\n" -msgstr "échec de select() : %s\n" +msgstr "échec de select() : %s\n" -#: parallel.c:1668 +#: parallel.c:1672 #, c-format msgid "pgpipe: could not create socket: error code %d\n" -msgstr "pgpipe: n'a pas pu créer le socket: code d'erreur %d\n" +msgstr "pgpipe: n'a pas pu créer le socket: code d'erreur %d\n" -#: parallel.c:1679 +#: parallel.c:1683 #, c-format msgid "pgpipe: could not bind: error code %d\n" msgstr "pgpipe: n'a pas pu se lier: code d'erreur %d\n" -#: parallel.c:1686 +#: parallel.c:1690 #, c-format msgid "pgpipe: could not listen: error code %d\n" -msgstr "pgpipe : n'a pas pu se mettre en écoute: code d'erreur %d\n" +msgstr "pgpipe : n'a pas pu se mettre en écoute: code d'erreur %d\n" -#: parallel.c:1693 +#: parallel.c:1697 #, c-format msgid "pgpipe: getsockname() failed: error code %d\n" -msgstr "pgpipe: getsocketname() a échoué: code d'erreur %d\n" +msgstr "pgpipe: getsocketname() a échoué: code d'erreur %d\n" -#: parallel.c:1704 +#: parallel.c:1708 #, c-format msgid "pgpipe: could not create second socket: error code %d\n" -msgstr "pgpipe: n'a pas pu créer un deuxième socket: code d'erreur %d\n" +msgstr "pgpipe: n'a pas pu créer un deuxième socket: code d'erreur %d\n" -#: parallel.c:1713 +#: parallel.c:1717 #, c-format msgid "pgpipe: could not connect socket: error code %d\n" msgstr "pgpipe: n'a pas pu de se connecter au socket: code d'erreur %d\n" -#: parallel.c:1722 +#: parallel.c:1726 #, c-format msgid "pgpipe: could not accept connection: error code %d\n" msgstr "pgpipe: n'a pas pu accepter de connexion: code d'erreur %d\n" @@ -448,7 +448,7 @@ msgstr "pgpipe: n'a pas pu accepter de connexion: code d'erreur %d\n" msgid "archiver" msgstr "archiveur" -#: pg_backup_archiver.c:234 pg_backup_archiver.c:1519 +#: pg_backup_archiver.c:234 pg_backup_archiver.c:1563 #, c-format msgid "could not close output file: %s\n" msgstr "n'a pas pu fermer le fichier de sortie : %s\n" @@ -457,7 +457,7 @@ msgstr "n'a pas pu fermer le fichier de sortie : %s\n" #, c-format msgid "WARNING: archive items not in correct section order\n" msgstr "" -"ATTENTION : les éléments de l'archive ne sont pas dans l'ordre correct de " +"ATTENTION : les éléments de l'archive ne sont pas dans l'ordre correct de " "la section\n" #: pg_backup_archiver.c:291 @@ -474,7 +474,7 @@ msgstr "-C et -1 sont des options incompatibles\n" #, c-format msgid "parallel restore is not supported with this archive file format\n" msgstr "" -"la restauration parallèle n'est pas supportée avec ce format de fichier\n" +"la restauration parallèle n'est pas supportée avec ce format de fichier\n" "d'archive\n" #: pg_backup_archiver.c:341 @@ -482,8 +482,8 @@ msgstr "" msgid "" "parallel restore is not supported with archives made by pre-8.0 pg_dump\n" msgstr "" -"la restauration parallèle n'est pas supportée avec les archives réalisées\n" -"par un pg_dump antérieur à la 8.0 d'archive\n" +"la restauration parallèle n'est pas supportée avec les archives réalisées\n" +"par un pg_dump antérieur à la 8.0 d'archive\n" #: pg_backup_archiver.c:359 #, c-format @@ -491,503 +491,511 @@ msgid "" "cannot restore from compressed archive (compression not supported in this " "installation)\n" msgstr "" -"ne peut pas restaurer à partir de l'archive compressée (compression non\n" +"ne peut pas restaurer à partir de l'archive compressée (compression non\n" "disponible dans cette installation)\n" #: pg_backup_archiver.c:376 #, c-format msgid "connecting to database for restore\n" -msgstr "connexion à la base de données pour la restauration\n" +msgstr "connexion à la base de données pour la restauration\n" #: pg_backup_archiver.c:378 #, c-format msgid "direct database connections are not supported in pre-1.3 archives\n" msgstr "" -"les connexions directes à la base de données ne sont pas supportées dans\n" +"les connexions directes à la base de données ne sont pas supportées dans\n" "les archives pre-1.3\n" #: pg_backup_archiver.c:423 #, c-format msgid "implied data-only restore\n" -msgstr "a impliqué une restauration des données uniquement\n" +msgstr "a impliqué une restauration des données uniquement\n" #: pg_backup_archiver.c:493 #, c-format msgid "dropping %s %s\n" msgstr "suppression de %s %s\n" -#: pg_backup_archiver.c:646 +#: pg_backup_archiver.c:586 +#, c-format +msgid "" +"WARNING: could not find where to insert IF EXISTS in statement \"%s\"\n" +msgstr "" +"ATTENTION : n'a pas pu trouver où insérer IF EXISTS dans l'instruction « %s " +"»\n" + +#: pg_backup_archiver.c:662 #, c-format msgid "setting owner and privileges for %s \"%s.%s\"\n" -msgstr "réglage du propriétaire et des droits pour %s « %s.%s»\n" +msgstr "réglage du propriétaire et des droits pour %s « %s.%s»\n" -#: pg_backup_archiver.c:649 +#: pg_backup_archiver.c:665 #, c-format msgid "setting owner and privileges for %s \"%s\"\n" -msgstr "réglage du propriétaire et des droits pour %s « %s »\n" +msgstr "réglage du propriétaire et des droits pour %s « %s »\n" -#: pg_backup_archiver.c:715 pg_backup_archiver.c:717 +#: pg_backup_archiver.c:731 pg_backup_archiver.c:733 #, c-format msgid "warning from original dump file: %s\n" msgstr "message d'avertissement du fichier de sauvegarde original : %s\n" -#: pg_backup_archiver.c:726 +#: pg_backup_archiver.c:742 #, c-format msgid "creating %s \"%s.%s\"\n" -msgstr "création de %s « %s.%s »\n" +msgstr "création de %s « %s.%s »\n" -#: pg_backup_archiver.c:729 +#: pg_backup_archiver.c:745 #, c-format msgid "creating %s \"%s\"\n" -msgstr "création de %s « %s »\n" +msgstr "création de %s « %s »\n" -#: pg_backup_archiver.c:781 +#: pg_backup_archiver.c:797 #, c-format msgid "connecting to new database \"%s\"\n" -msgstr "connexion à la nouvelle base de données « %s »\n" +msgstr "connexion à la nouvelle base de données « %s »\n" -#: pg_backup_archiver.c:809 +#: pg_backup_archiver.c:825 #, c-format msgid "processing %s\n" msgstr "traitement de %s\n" -#: pg_backup_archiver.c:829 +#: pg_backup_archiver.c:845 #, c-format msgid "processing data for table \"%s.%s\"\n" -msgstr "traitement des données de la table « %s.%s »\n" +msgstr "traitement des données de la table « %s.%s »\n" -#: pg_backup_archiver.c:891 +#: pg_backup_archiver.c:907 #, c-format msgid "executing %s %s\n" -msgstr "exécution de %s %s\n" +msgstr "exécution de %s %s\n" -#: pg_backup_archiver.c:930 +#: pg_backup_archiver.c:946 #, c-format msgid "disabling triggers for %s\n" -msgstr "désactivation des déclencheurs pour %s\n" +msgstr "désactivation des déclencheurs pour %s\n" -#: pg_backup_archiver.c:958 +#: pg_backup_archiver.c:974 #, c-format msgid "enabling triggers for %s\n" msgstr "activation des triggers pour %s\n" -#: pg_backup_archiver.c:988 +#: pg_backup_archiver.c:1004 #, c-format msgid "" "internal error -- WriteData cannot be called outside the context of a " "DataDumper routine\n" msgstr "" -"erreur interne -- WriteData ne peut pas être appelé en dehors du contexte\n" +"erreur interne -- WriteData ne peut pas être appelé en dehors du contexte\n" "de la routine DataDumper\n" -#: pg_backup_archiver.c:1157 +#: pg_backup_archiver.c:1201 #, c-format msgid "large-object output not supported in chosen format\n" msgstr "" -"la sauvegarde des « Large Objects » n'est pas supportée dans le format " +"la sauvegarde des « Large Objects » n'est pas supportée dans le format " "choisi\n" -#: pg_backup_archiver.c:1215 +#: pg_backup_archiver.c:1259 #, c-format msgid "restored %d large object\n" msgid_plural "restored %d large objects\n" -msgstr[0] "restauration de %d « Large Object »\n" -msgstr[1] "restauration de %d « Large Objects »\n" +msgstr[0] "restauration de %d « Large Object »\n" +msgstr[1] "restauration de %d « Large Objects »\n" -#: pg_backup_archiver.c:1236 pg_backup_tar.c:739 +#: pg_backup_archiver.c:1280 pg_backup_tar.c:739 #, c-format msgid "restoring large object with OID %u\n" -msgstr "restauration du « Large Object » d'OID %u\n" +msgstr "restauration du « Large Object » d'OID %u\n" -#: pg_backup_archiver.c:1248 +#: pg_backup_archiver.c:1292 #, c-format msgid "could not create large object %u: %s" -msgstr "n'a pas pu créer le « Large Object » %u : %s" +msgstr "n'a pas pu créer le « Large Object » %u : %s" -#: pg_backup_archiver.c:1253 pg_dump.c:3059 +#: pg_backup_archiver.c:1297 pg_dump.c:3093 #, c-format msgid "could not open large object %u: %s" -msgstr "n'a pas pu ouvrir le « Large Object » %u : %s" +msgstr "n'a pas pu ouvrir le « Large Object » %u : %s" -#: pg_backup_archiver.c:1311 +#: pg_backup_archiver.c:1355 #, c-format msgid "could not open TOC file \"%s\": %s\n" -msgstr "n'a pas pu ouvrir le fichier TOC « %s » : %s\n" +msgstr "n'a pas pu ouvrir le fichier TOC « %s » : %s\n" -#: pg_backup_archiver.c:1352 +#: pg_backup_archiver.c:1396 #, c-format msgid "WARNING: line ignored: %s\n" -msgstr "ATTENTION : ligne ignorée : %s\n" +msgstr "ATTENTION : ligne ignorée : %s\n" -#: pg_backup_archiver.c:1359 +#: pg_backup_archiver.c:1403 #, c-format msgid "could not find entry for ID %d\n" -msgstr "n'a pas pu trouver l'entrée pour l'ID %d\n" +msgstr "n'a pas pu trouver l'entrée pour l'ID %d\n" -#: pg_backup_archiver.c:1380 pg_backup_directory.c:230 +#: pg_backup_archiver.c:1424 pg_backup_directory.c:230 #: pg_backup_directory.c:597 #, c-format msgid "could not close TOC file: %s\n" msgstr "n'a pas pu fermer le fichier TOC : %s\n" -#: pg_backup_archiver.c:1489 pg_backup_custom.c:162 pg_backup_directory.c:341 +#: pg_backup_archiver.c:1533 pg_backup_custom.c:162 pg_backup_directory.c:341 #: pg_backup_directory.c:583 pg_backup_directory.c:641 #: pg_backup_directory.c:661 #, c-format msgid "could not open output file \"%s\": %s\n" -msgstr "n'a pas pu ouvrir le fichier de sauvegarde « %s » : %s\n" +msgstr "n'a pas pu ouvrir le fichier de sauvegarde « %s » : %s\n" -#: pg_backup_archiver.c:1492 pg_backup_custom.c:169 +#: pg_backup_archiver.c:1536 pg_backup_custom.c:169 #, c-format msgid "could not open output file: %s\n" msgstr "n'a pas pu ouvrir le fichier de sauvegarde : %s\n" -#: pg_backup_archiver.c:1598 +#: pg_backup_archiver.c:1642 #, c-format msgid "wrote %lu byte of large object data (result = %lu)\n" msgid_plural "wrote %lu bytes of large object data (result = %lu)\n" msgstr[0] "" -"a écrit %lu octet de données d'un « Large Object » (résultat = %lu)\n" +"a écrit %lu octet de données d'un « Large Object » (résultat = %lu)\n" msgstr[1] "" -"a écrit %lu octets de données d'un « Large Object » (résultat = %lu)\n" +"a écrit %lu octets de données d'un « Large Object » (résultat = %lu)\n" -#: pg_backup_archiver.c:1604 +#: pg_backup_archiver.c:1648 #, c-format msgid "could not write to large object (result: %lu, expected: %lu)\n" msgstr "" -"n'a pas pu écrire le « Large Object » (résultat : %lu, attendu : %lu)\n" +"n'a pas pu écrire le « Large Object » (résultat : %lu, attendu : %lu)\n" -#: pg_backup_archiver.c:1697 +#: pg_backup_archiver.c:1741 #, c-format msgid "Error while INITIALIZING:\n" -msgstr "Erreur pendant l'initialisation (« INITIALIZING ») :\n" +msgstr "Erreur pendant l'initialisation (« INITIALIZING ») :\n" -#: pg_backup_archiver.c:1702 +#: pg_backup_archiver.c:1746 #, c-format msgid "Error while PROCESSING TOC:\n" -msgstr "Erreur pendant le traitement de la TOC (« PROCESSING TOC ») :\n" +msgstr "Erreur pendant le traitement de la TOC (« PROCESSING TOC ») :\n" -#: pg_backup_archiver.c:1707 +#: pg_backup_archiver.c:1751 #, c-format msgid "Error while FINALIZING:\n" -msgstr "Erreur pendant la finalisation (« FINALIZING ») :\n" +msgstr "Erreur pendant la finalisation (« FINALIZING ») :\n" -#: pg_backup_archiver.c:1712 +#: pg_backup_archiver.c:1756 #, c-format msgid "Error from TOC entry %d; %u %u %s %s %s\n" -msgstr "Erreur à partir de l'entrée TOC %d ; %u %u %s %s %s\n" +msgstr "Erreur à partir de l'entrée TOC %d ; %u %u %s %s %s\n" -#: pg_backup_archiver.c:1785 +#: pg_backup_archiver.c:1829 #, c-format msgid "bad dumpId\n" msgstr "mauvais dumpId\n" -#: pg_backup_archiver.c:1806 +#: pg_backup_archiver.c:1850 #, c-format msgid "bad table dumpId for TABLE DATA item\n" -msgstr "mauvais dumpId de table pour l'élément TABLE DATA\n" +msgstr "mauvais dumpId de table pour l'élément TABLE DATA\n" -#: pg_backup_archiver.c:1898 +#: pg_backup_archiver.c:1942 #, c-format msgid "unexpected data offset flag %d\n" -msgstr "drapeau de décalage de données inattendu %d\n" +msgstr "drapeau de décalage de données inattendu %d\n" -#: pg_backup_archiver.c:1911 +#: pg_backup_archiver.c:1955 #, c-format msgid "file offset in dump file is too large\n" -msgstr "le décalage dans le fichier de sauvegarde est trop important\n" +msgstr "le décalage dans le fichier de sauvegarde est trop important\n" -#: pg_backup_archiver.c:2024 +#: pg_backup_archiver.c:2068 #, c-format msgid "attempting to ascertain archive format\n" msgstr "tentative d'identification du format de l'archive\n" -#: pg_backup_archiver.c:2050 pg_backup_archiver.c:2060 +#: pg_backup_archiver.c:2094 pg_backup_archiver.c:2104 #, c-format msgid "directory name too long: \"%s\"\n" -msgstr "nom du répertoire trop long : « %s »\n" +msgstr "nom du répertoire trop long : « %s »\n" -#: pg_backup_archiver.c:2068 +#: pg_backup_archiver.c:2112 #, c-format msgid "" "directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does " "not exist)\n" msgstr "" -"le répertoire « %s » ne semble pas être une archive valide (« toc.dat » " +"le répertoire « %s » ne semble pas être une archive valide (« toc.dat » " "n'existe pas)\n" -#: pg_backup_archiver.c:2076 pg_backup_custom.c:181 pg_backup_custom.c:770 +#: pg_backup_archiver.c:2120 pg_backup_custom.c:181 pg_backup_custom.c:770 #: pg_backup_directory.c:214 pg_backup_directory.c:399 #, c-format msgid "could not open input file \"%s\": %s\n" -msgstr "n'a pas pu ouvrir le fichier en entrée « %s » : %s\n" +msgstr "n'a pas pu ouvrir le fichier en entrée « %s » : %s\n" -#: pg_backup_archiver.c:2084 pg_backup_custom.c:188 +#: pg_backup_archiver.c:2128 pg_backup_custom.c:188 #, c-format msgid "could not open input file: %s\n" -msgstr "n'a pas pu ouvrir le fichier en entrée : %s\n" +msgstr "n'a pas pu ouvrir le fichier en entrée : %s\n" -#: pg_backup_archiver.c:2091 +#: pg_backup_archiver.c:2135 #, c-format msgid "could not read input file: %s\n" -msgstr "n'a pas pu lire le fichier en entrée : %s\n" +msgstr "n'a pas pu lire le fichier en entrée : %s\n" -#: pg_backup_archiver.c:2093 +#: pg_backup_archiver.c:2137 #, c-format msgid "input file is too short (read %lu, expected 5)\n" -msgstr "le fichier en entrée est trop petit (%lu lus, 5 attendus)\n" +msgstr "le fichier en entrée est trop petit (%lu lus, 5 attendus)\n" -#: pg_backup_archiver.c:2176 +#: pg_backup_archiver.c:2220 #, c-format msgid "input file appears to be a text format dump. Please use psql.\n" msgstr "" -"Le fichier en entrée semble être une sauvegarde au format texte. Merci " +"Le fichier en entrée semble être une sauvegarde au format texte. Merci " "d'utiliser psql.\n" -#: pg_backup_archiver.c:2182 +#: pg_backup_archiver.c:2226 #, c-format msgid "input file does not appear to be a valid archive (too short?)\n" msgstr "" -"le fichier en entrée ne semble pas être une archive valide (trop petit ?)\n" +"le fichier en entrée ne semble pas être une archive valide (trop petit ?)\n" -#: pg_backup_archiver.c:2188 +#: pg_backup_archiver.c:2232 #, c-format msgid "input file does not appear to be a valid archive\n" -msgstr "le fichier en entrée ne semble pas être une archive valide\n" +msgstr "le fichier en entrée ne semble pas être une archive valide\n" -#: pg_backup_archiver.c:2208 +#: pg_backup_archiver.c:2252 #, c-format msgid "could not close input file: %s\n" -msgstr "n'a pas pu fermer le fichier en entrée : %s\n" +msgstr "n'a pas pu fermer le fichier en entrée : %s\n" -#: pg_backup_archiver.c:2225 +#: pg_backup_archiver.c:2269 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "allocation d'AH pour %s, format %d\n" -#: pg_backup_archiver.c:2330 +#: pg_backup_archiver.c:2374 #, c-format msgid "unrecognized file format \"%d\"\n" -msgstr "format de fichier « %d » non reconnu\n" +msgstr "format de fichier « %d » non reconnu\n" -#: pg_backup_archiver.c:2486 +#: pg_backup_archiver.c:2530 #, c-format msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" msgstr "" -"ID %d de l'entrée en dehors de la plage -- peut-être un TOC corrompu\n" +"ID %d de l'entrée en dehors de la plage -- peut-être un TOC corrompu\n" -#: pg_backup_archiver.c:2602 +#: pg_backup_archiver.c:2646 #, c-format msgid "read TOC entry %d (ID %d) for %s %s\n" -msgstr "lecture de l'entrée %d de la TOC (ID %d) pour %s %s\n" +msgstr "lecture de l'entrée %d de la TOC (ID %d) pour %s %s\n" -#: pg_backup_archiver.c:2636 +#: pg_backup_archiver.c:2680 #, c-format msgid "unrecognized encoding \"%s\"\n" -msgstr "encodage « %s » non reconnu\n" +msgstr "encodage « %s » non reconnu\n" -#: pg_backup_archiver.c:2641 +#: pg_backup_archiver.c:2685 #, c-format msgid "invalid ENCODING item: %s\n" -msgstr "élément ENCODING invalide : %s\n" +msgstr "élément ENCODING invalide : %s\n" -#: pg_backup_archiver.c:2659 +#: pg_backup_archiver.c:2703 #, c-format msgid "invalid STDSTRINGS item: %s\n" -msgstr "élément STDSTRINGS invalide : %s\n" +msgstr "élément STDSTRINGS invalide : %s\n" -#: pg_backup_archiver.c:2674 +#: pg_backup_archiver.c:2718 #, c-format msgid "schema \"%s\" not found\n" -msgstr "schéma « %s » non trouvé\n" +msgstr "schéma « %s » non trouvé\n" -#: pg_backup_archiver.c:2681 +#: pg_backup_archiver.c:2725 #, c-format msgid "table \"%s\" not found\n" -msgstr "table « %s » non trouvée\n" +msgstr "table « %s » non trouvée\n" -#: pg_backup_archiver.c:2688 +#: pg_backup_archiver.c:2732 #, c-format msgid "index \"%s\" not found\n" -msgstr "index « %s » non trouvé\n" +msgstr "index « %s » non trouvé\n" -#: pg_backup_archiver.c:2695 +#: pg_backup_archiver.c:2739 #, c-format msgid "function \"%s\" not found\n" -msgstr "fonction « %s » non trouvée\n" +msgstr "fonction « %s » non trouvée\n" -#: pg_backup_archiver.c:2702 +#: pg_backup_archiver.c:2746 #, c-format msgid "trigger \"%s\" not found\n" -msgstr "trigger « %s » non trouvé\n" +msgstr "trigger « %s » non trouvé\n" -#: pg_backup_archiver.c:2934 +#: pg_backup_archiver.c:2988 #, c-format msgid "could not set session user to \"%s\": %s" -msgstr "n'a pas pu initialiser la session utilisateur à « %s »: %s" +msgstr "n'a pas pu initialiser la session utilisateur à « %s »: %s" -#: pg_backup_archiver.c:2966 +#: pg_backup_archiver.c:3020 #, c-format msgid "could not set default_with_oids: %s" msgstr "n'a pas pu configurer default_with_oids : %s" -#: pg_backup_archiver.c:3111 +#: pg_backup_archiver.c:3165 #, c-format msgid "could not set search_path to \"%s\": %s" -msgstr "n'a pas pu configurer search_path à « %s » : %s" +msgstr "n'a pas pu configurer search_path à « %s » : %s" -#: pg_backup_archiver.c:3173 +#: pg_backup_archiver.c:3227 #, c-format msgid "could not set default_tablespace to %s: %s" -msgstr "n'a pas pu configurer default_tablespace à %s : %s" +msgstr "n'a pas pu configurer default_tablespace à %s : %s" -#: pg_backup_archiver.c:3260 pg_backup_archiver.c:3454 +#: pg_backup_archiver.c:3315 pg_backup_archiver.c:3510 #, c-format -msgid "WARNING: don't know how to set owner for object type %s\n" +msgid "WARNING: don't know how to set owner for object type \"%s\"\n" msgstr "" -"ATTENTION : ne sait pas comment initialiser le propriétaire du type d'objet " -"%s\n" +"ATTENTION : ne sait pas comment initialiser le propriétaire du type d'objet " +"« %s »\n" -#: pg_backup_archiver.c:3536 +#: pg_backup_archiver.c:3593 #, c-format msgid "did not find magic string in file header\n" -msgstr "n'a pas trouver la chaîne magique dans le fichier d'en-tête\n" +msgstr "n'a pas trouver la chaîne magique dans le fichier d'en-tête\n" -#: pg_backup_archiver.c:3549 +#: pg_backup_archiver.c:3606 #, c-format msgid "unsupported version (%d.%d) in file header\n" -msgstr "version non supportée (%d.%d) dans le fichier d'en-tête\n" +msgstr "version non supportée (%d.%d) dans le fichier d'en-tête\n" -#: pg_backup_archiver.c:3554 +#: pg_backup_archiver.c:3611 #, c-format msgid "sanity check on integer size (%lu) failed\n" -msgstr "échec de la vérification sur la taille de l'entier (%lu)\n" +msgstr "échec de la vérification sur la taille de l'entier (%lu)\n" -#: pg_backup_archiver.c:3558 +#: pg_backup_archiver.c:3615 #, c-format msgid "" "WARNING: archive was made on a machine with larger integers, some " "operations might fail\n" msgstr "" -"ATTENTION : l'archive a été créée sur une machine disposant d'entiers plus\n" -"larges, certaines opérations peuvent échouer\n" +"ATTENTION : l'archive a été créée sur une machine disposant d'entiers plus\n" +"larges, certaines opérations peuvent échouer\n" -#: pg_backup_archiver.c:3568 +#: pg_backup_archiver.c:3625 #, c-format msgid "expected format (%d) differs from format found in file (%d)\n" -msgstr "le format attendu (%d) diffère du format du fichier (%d)\n" +msgstr "le format attendu (%d) diffère du format du fichier (%d)\n" -#: pg_backup_archiver.c:3584 +#: pg_backup_archiver.c:3641 #, c-format msgid "" "WARNING: archive is compressed, but this installation does not support " "compression -- no data will be available\n" msgstr "" -"ATTENTION : l'archive est compressée mais cette installation ne supporte\n" -"pas la compression -- aucune donnée ne sera disponible\n" +"ATTENTION : l'archive est compressée mais cette installation ne supporte\n" +"pas la compression -- aucune donnée ne sera disponible\n" -#: pg_backup_archiver.c:3602 +#: pg_backup_archiver.c:3659 #, c-format msgid "WARNING: invalid creation date in header\n" -msgstr "ATTENTION : date de création invalide dans l'en-tête\n" +msgstr "ATTENTION : date de création invalide dans l'en-tête\n" -#: pg_backup_archiver.c:3677 +#: pg_backup_archiver.c:3734 #, c-format msgid "entering restore_toc_entries_prefork\n" -msgstr "entrée dans restore_toc_entries_prefork\n" +msgstr "entrée dans restore_toc_entries_prefork\n" -#: pg_backup_archiver.c:3721 +#: pg_backup_archiver.c:3778 #, c-format msgid "processing item %d %s %s\n" -msgstr "traitement de l'élément %d %s %s\n" +msgstr "traitement de l'élément %d %s %s\n" -#: pg_backup_archiver.c:3773 +#: pg_backup_archiver.c:3830 #, c-format msgid "entering restore_toc_entries_parallel\n" -msgstr "entrée dans restore_toc_entries_parallel\n" +msgstr "entrée dans restore_toc_entries_parallel\n" -#: pg_backup_archiver.c:3821 +#: pg_backup_archiver.c:3878 #, c-format msgid "entering main parallel loop\n" -msgstr "entrée dans la boucle parallèle principale\n" +msgstr "entrée dans la boucle parallèle principale\n" -#: pg_backup_archiver.c:3832 +#: pg_backup_archiver.c:3889 #, c-format msgid "skipping item %d %s %s\n" -msgstr "omission de l'élément %d %s %s\n" +msgstr "omission de l'élément %d %s %s\n" -#: pg_backup_archiver.c:3842 +#: pg_backup_archiver.c:3899 #, c-format msgid "launching item %d %s %s\n" -msgstr "élément de lancement %d %s %s\n" +msgstr "élément de lancement %d %s %s\n" -#: pg_backup_archiver.c:3898 +#: pg_backup_archiver.c:3955 #, c-format msgid "finished main parallel loop\n" -msgstr "fin de la boucle parallèle principale\n" +msgstr "fin de la boucle parallèle principale\n" -#: pg_backup_archiver.c:3907 +#: pg_backup_archiver.c:3964 #, c-format msgid "entering restore_toc_entries_postfork\n" -msgstr "entrée dans restore_toc_entries_prefork\n" +msgstr "entrée dans restore_toc_entries_prefork\n" -#: pg_backup_archiver.c:3926 +#: pg_backup_archiver.c:3983 #, c-format msgid "processing missed item %d %s %s\n" -msgstr "traitement de l'élément manquant %d %s %s\n" +msgstr "traitement de l'élément manquant %d %s %s\n" -#: pg_backup_archiver.c:4075 +#: pg_backup_archiver.c:4132 #, c-format msgid "no item ready\n" -msgstr "aucun élément prêt\n" +msgstr "aucun élément prêt\n" -#: pg_backup_archiver.c:4123 +#: pg_backup_archiver.c:4180 #, c-format msgid "could not find slot of finished worker\n" msgstr "n'a pas pu trouver l'emplacement du worker qui vient de terminer\n" -#: pg_backup_archiver.c:4125 +#: pg_backup_archiver.c:4182 #, c-format msgid "finished item %d %s %s\n" -msgstr "élément terminé %d %s %s\n" +msgstr "élément terminé %d %s %s\n" -#: pg_backup_archiver.c:4138 +#: pg_backup_archiver.c:4195 #, c-format msgid "worker process failed: exit code %d\n" -msgstr "échec du processus de travail : code de sortie %d\n" +msgstr "échec du processus de travail : code de sortie %d\n" -#: pg_backup_archiver.c:4300 +#: pg_backup_archiver.c:4357 #, c-format msgid "transferring dependency %d -> %d to %d\n" -msgstr "transfert de la dépendance %d -> %d vers %d\n" +msgstr "transfert de la dépendance %d -> %d vers %d\n" -#: pg_backup_archiver.c:4373 +#: pg_backup_archiver.c:4430 #, c-format msgid "reducing dependencies for %d\n" -msgstr "réduction des dépendances pour %d\n" +msgstr "réduction des dépendances pour %d\n" -#: pg_backup_archiver.c:4412 +#: pg_backup_archiver.c:4469 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "" -"la table « %s » n'a pas pu être créée, ses données ne seront pas " -"restaurées\n" +"la table « %s » n'a pas pu être créée, ses données ne seront pas " +"restaurées\n" #. translator: this is a module name #: pg_backup_custom.c:94 msgid "custom archiver" -msgstr "programme d'archivage personnalisé" +msgstr "programme d'archivage personnalisé" #: pg_backup_custom.c:384 pg_backup_null.c:150 #, c-format msgid "invalid OID for large object\n" -msgstr "OID invalide pour le « Large Object »\n" +msgstr "OID invalide pour le « Large Object »\n" #: pg_backup_custom.c:455 #, c-format msgid "unrecognized data block type (%d) while searching archive\n" msgstr "" -"type de bloc de données non reconnu (%d) lors de la recherche dans\n" +"type de bloc de données non reconnu (%d) lors de la recherche dans\n" "l'archive\n" #: pg_backup_custom.c:466 @@ -1003,9 +1011,9 @@ msgid "" "archive\n" msgstr "" "n'a pas pu trouver l'identifiant de bloc %d dans l'archive -\n" -"il est possible que cela soit dû à une demande de restauration dans un " +"il est possible que cela soit dû à une demande de restauration dans un " "ordre\n" -"différent, qui n'a pas pu être géré à cause d'un manque d'information de\n" +"différent, qui n'a pas pu être géré à cause d'un manque d'information de\n" "position dans l'archive\n" #: pg_backup_custom.c:481 @@ -1015,9 +1023,9 @@ msgid "" "restore request, which cannot be handled due to non-seekable input file\n" msgstr "" "n'a pas pu trouver l'identifiant de bloc %d dans l'archive -\n" -"il est possible que cela soit dû à une demande de restauration dans un " +"il est possible que cela soit dû à une demande de restauration dans un " "ordre\n" -"différent, ce qui ne peut pas être géré à cause d'un fichier non gérable " +"différent, ce qui ne peut pas être géré à cause d'un fichier non gérable " "en\n" "recherche\n" @@ -1032,13 +1040,13 @@ msgstr "" #, c-format msgid "found unexpected block ID (%d) when reading data -- expected %d\n" msgstr "" -"ID de bloc inattendu (%d) lors de la lecture des données -- %d attendu\n" +"ID de bloc inattendu (%d) lors de la lecture des données -- %d attendu\n" #: pg_backup_custom.c:507 #, c-format msgid "unrecognized data block type %d while restoring archive\n" msgstr "" -"type de bloc de données %d non reconnu lors de la restauration de " +"type de bloc de données %d non reconnu lors de la restauration de " "l'archive\n" #: pg_backup_custom.c:709 pg_backup_custom.c:759 pg_backup_custom.c:908 @@ -1046,7 +1054,7 @@ msgstr "" #, c-format msgid "could not determine seek position in archive file: %s\n" msgstr "" -"n'a pas pu déterminer la position de recherche dans le fichier d'archive : " +"n'a pas pu déterminer la position de recherche dans le fichier d'archive : " "%s\n" #: pg_backup_custom.c:727 pg_backup_custom.c:764 @@ -1057,19 +1065,19 @@ msgstr "n'a pas pu fermer le fichier d'archive : %s\n" #: pg_backup_custom.c:746 #, c-format msgid "can only reopen input archives\n" -msgstr "peut seulement rouvrir l'archive en entrée\n" +msgstr "peut seulement rouvrir l'archive en entrée\n" #: pg_backup_custom.c:753 #, c-format msgid "parallel restore from standard input is not supported\n" -msgstr "la restauration parallélisée n'est pas supportée à partir de stdin\n" +msgstr "la restauration parallélisée n'est pas supportée à partir de stdin\n" #: pg_backup_custom.c:755 #, c-format msgid "parallel restore from non-seekable file is not supported\n" msgstr "" -"la restauration parallélisée n'est pas supportée à partir de fichiers sans " -"table de matière\n" +"la restauration parallélisée n'est pas supportée à partir de fichiers sans " +"table de matière\n" #: pg_backup_custom.c:774 #, c-format @@ -1081,14 +1089,14 @@ msgstr "" #: pg_backup_custom.c:792 #, c-format msgid "compressor active\n" -msgstr "compression activée\n" +msgstr "compression activée\n" #: pg_backup_custom.c:912 #, c-format msgid "WARNING: ftell mismatch with expected position -- ftell used\n" msgstr "" -"ATTENTION : ftell ne correspond pas à la position attendue -- ftell " -"utilisé\n" +"ATTENTION : ftell ne correspond pas à la position attendue -- ftell " +"utilisé\n" #. translator: this is a module name #: pg_backup_db.c:31 @@ -1100,55 +1108,55 @@ msgstr "programme d'archivage (db)" msgid "could not get server_version from libpq\n" msgstr "n'a pas pu obtenir server_version de libpq\n" -#: pg_backup_db.c:58 pg_dumpall.c:2067 +#: pg_backup_db.c:58 pg_dumpall.c:2068 #, c-format msgid "server version: %s; %s version: %s\n" msgstr "version du serveur : %s ; %s version : %s\n" -#: pg_backup_db.c:60 pg_dumpall.c:2069 +#: pg_backup_db.c:60 pg_dumpall.c:2070 #, c-format msgid "aborting because of server version mismatch\n" -msgstr "annulation à cause de la différence des versions\n" +msgstr "annulation à cause de la différence des versions\n" #: pg_backup_db.c:149 #, c-format msgid "connecting to database \"%s\" as user \"%s\"\n" -msgstr "connexion à la base de données « %s » en tant qu'utilisateur « %s »\n" +msgstr "connexion à la base de données « %s » en tant qu'utilisateur « %s »\n" #: pg_backup_db.c:156 pg_backup_db.c:208 pg_backup_db.c:270 pg_backup_db.c:312 -#: pg_dumpall.c:1893 pg_dumpall.c:2005 +#: pg_dumpall.c:1894 pg_dumpall.c:2006 msgid "Password: " msgstr "Mot de passe : " #: pg_backup_db.c:189 #, c-format msgid "failed to reconnect to database\n" -msgstr "la reconnexion à la base de données a échoué\n" +msgstr "la reconnexion à la base de données a échoué\n" #: pg_backup_db.c:194 #, c-format msgid "could not reconnect to database: %s" -msgstr "n'a pas pu se reconnecter à la base de données : %s" +msgstr "n'a pas pu se reconnecter à la base de données : %s" #: pg_backup_db.c:210 #, c-format msgid "connection needs password\n" -msgstr "la connexion nécessite un mot de passe\n" +msgstr "la connexion nécessite un mot de passe\n" #: pg_backup_db.c:264 #, c-format msgid "already connected to a database\n" -msgstr "déjà connecté à une base de données\n" +msgstr "déjà connecté à une base de données\n" #: pg_backup_db.c:304 #, c-format msgid "failed to connect to database\n" -msgstr "n'a pas pu se connecter à la base de données\n" +msgstr "n'a pas pu se connecter à la base de données\n" #: pg_backup_db.c:321 #, c-format msgid "connection to database \"%s\" failed: %s" -msgstr "la connexion à la base de données « %s » a échoué : %s" +msgstr "la connexion à la base de données « %s » a échoué : %s" #: pg_backup_db.c:391 #, c-format @@ -1158,120 +1166,120 @@ msgstr "%s" #: pg_backup_db.c:398 #, c-format msgid "query failed: %s" -msgstr "échec de la requête : %s" +msgstr "échec de la requête : %s" #: pg_backup_db.c:400 #, c-format msgid "query was: %s\n" -msgstr "la requête était : %s\n" +msgstr "la requête était : %s\n" #: pg_backup_db.c:442 #, c-format msgid "query returned %d row instead of one: %s\n" msgid_plural "query returned %d rows instead of one: %s\n" -msgstr[0] "la requête a renvoyé %d ligne au lieu d'une seule : %s\n" -msgstr[1] "la requête a renvoyé %d lignes au lieu d'une seule : %s\n" +msgstr[0] "la requête a renvoyé %d ligne au lieu d'une seule : %s\n" +msgstr[1] "la requête a renvoyé %d lignes au lieu d'une seule : %s\n" #: pg_backup_db.c:487 #, c-format msgid "%s: %s Command was: %s\n" -msgstr "%s: %s La commande était : %s\n" +msgstr "%s: %s La commande était : %s\n" #: pg_backup_db.c:543 pg_backup_db.c:617 pg_backup_db.c:624 msgid "could not execute query" -msgstr "n'a pas pu exécuter la requête" +msgstr "n'a pas pu exécuter la requête" #: pg_backup_db.c:596 #, c-format msgid "error returned by PQputCopyData: %s" -msgstr "erreur renvoyée par PQputCopyData : %s" +msgstr "erreur renvoyée par PQputCopyData : %s" #: pg_backup_db.c:645 #, c-format msgid "error returned by PQputCopyEnd: %s" -msgstr "erreur renvoyée par PQputCopyEnd : %s" +msgstr "erreur renvoyée par PQputCopyEnd : %s" #: pg_backup_db.c:651 #, c-format msgid "COPY failed for table \"%s\": %s" -msgstr "COPY échoué pour la table « %s » : %s" +msgstr "COPY échoué pour la table « %s » : %s" -#: pg_backup_db.c:657 pg_dump.c:1795 +#: pg_backup_db.c:657 pg_dump.c:1814 #, c-format msgid "WARNING: unexpected extra results during COPY of table \"%s\"\n" msgstr "" -"ATTENTION: résultats supplémentaires non attendus durant l'exécution de " -"COPY sur la table « %s »\n" +"ATTENTION: résultats supplémentaires non attendus durant l'exécution de " +"COPY sur la table « %s »\n" #: pg_backup_db.c:669 msgid "could not start database transaction" -msgstr "n'a pas pu démarrer la transaction de la base de données" +msgstr "n'a pas pu démarrer la transaction de la base de données" #: pg_backup_db.c:677 msgid "could not commit database transaction" -msgstr "n'a pas pu valider la transaction de la base de données" +msgstr "n'a pas pu valider la transaction de la base de données" #. translator: this is a module name #: pg_backup_directory.c:64 msgid "directory archiver" -msgstr "archiveur répertoire" +msgstr "archiveur répertoire" #: pg_backup_directory.c:162 #, c-format msgid "no output directory specified\n" -msgstr "aucun répertoire cible indiqué\n" +msgstr "aucun répertoire cible indiqué\n" #: pg_backup_directory.c:191 #, c-format msgid "could not read directory \"%s\": %s\n" -msgstr "n'a pas pu lire le répertoire « %s » : %s\n" +msgstr "n'a pas pu lire le répertoire « %s » : %s\n" #: pg_backup_directory.c:195 #, c-format msgid "could not close directory \"%s\": %s\n" -msgstr "n'a pas pu fermer le répertoire « %s » : %s\n" +msgstr "n'a pas pu fermer le répertoire « %s » : %s\n" #: pg_backup_directory.c:201 #, c-format msgid "could not create directory \"%s\": %s\n" -msgstr "n'a pas pu créer le répertoire « %s » : %s\n" +msgstr "n'a pas pu créer le répertoire « %s » : %s\n" #: pg_backup_directory.c:412 #, c-format msgid "could not close data file: %s\n" -msgstr "n'a pas pu fermer le fichier de données : %s\n" +msgstr "n'a pas pu fermer le fichier de données : %s\n" #: pg_backup_directory.c:453 #, c-format msgid "could not open large object TOC file \"%s\" for input: %s\n" msgstr "" -"n'a pas pu ouvrir le fichier sommaire « %s » du Large Object en entrée : " +"n'a pas pu ouvrir le fichier sommaire « %s » du Large Object en entrée : " "%s\n" #: pg_backup_directory.c:464 #, c-format msgid "invalid line in large object TOC file \"%s\": \"%s\"\n" -msgstr "ligne invalide dans le fichier TOC du Large Object « %s » : « %s »\n" +msgstr "ligne invalide dans le fichier TOC du Large Object « %s » : « %s »\n" #: pg_backup_directory.c:473 #, c-format msgid "error reading large object TOC file \"%s\"\n" -msgstr "erreur lors de la lecture du TOC du fichier Large Object « %s »\n" +msgstr "erreur lors de la lecture du TOC du fichier Large Object « %s »\n" #: pg_backup_directory.c:477 #, c-format msgid "could not close large object TOC file \"%s\": %s\n" -msgstr "n'a pas pu fermer le TOC du Large Object « %s » : %s\n" +msgstr "n'a pas pu fermer le TOC du Large Object « %s » : %s\n" #: pg_backup_directory.c:684 #, c-format msgid "could not write to blobs TOC file\n" -msgstr "n'a pas pu écrire dans le fichier toc des données binaires\n" +msgstr "n'a pas pu écrire dans le fichier toc des données binaires\n" #: pg_backup_directory.c:716 #, c-format msgid "file name too long: \"%s\"\n" -msgstr "nom du fichier trop long : « %s »\n" +msgstr "nom du fichier trop long : « %s »\n" #: pg_backup_directory.c:802 #, c-format @@ -1281,7 +1289,7 @@ msgstr "erreur lors de la sauvegarde\n" #: pg_backup_null.c:75 #, c-format msgid "this format cannot be read\n" -msgstr "ce format ne peut pas être lu\n" +msgstr "ce format ne peut pas être lu\n" #. translator: this is a module name #: pg_backup_tar.c:102 @@ -1291,7 +1299,7 @@ msgstr "archiveur tar" #: pg_backup_tar.c:183 #, c-format msgid "could not open TOC file \"%s\" for output: %s\n" -msgstr "n'a pas pu ouvrir le fichier TOC « %s » en sortie : %s\n" +msgstr "n'a pas pu ouvrir le fichier TOC « %s » en sortie : %s\n" #: pg_backup_tar.c:191 #, c-format @@ -1301,27 +1309,27 @@ msgstr "n'a pas pu ouvrir le fichier TOC en sortie : %s\n" #: pg_backup_tar.c:212 pg_backup_tar.c:368 #, c-format msgid "compression is not supported by tar archive format\n" -msgstr "compression non supportée par le format des archives tar\n" +msgstr "compression non supportée par le format des archives tar\n" #: pg_backup_tar.c:220 #, c-format msgid "could not open TOC file \"%s\" for input: %s\n" -msgstr "n'a pas pu ouvrir le fichier TOC « %s » en entrée : %s\n" +msgstr "n'a pas pu ouvrir le fichier TOC « %s » en entrée : %s\n" #: pg_backup_tar.c:227 #, c-format msgid "could not open TOC file for input: %s\n" -msgstr "n'a pas pu ouvrir le fichier TOC en entrée : %s\n" +msgstr "n'a pas pu ouvrir le fichier TOC en entrée : %s\n" #: pg_backup_tar.c:354 #, c-format msgid "could not find file \"%s\" in archive\n" -msgstr "n'a pas pu trouver le fichier « %s » dans l'archive\n" +msgstr "n'a pas pu trouver le fichier « %s » dans l'archive\n" #: pg_backup_tar.c:420 #, c-format msgid "could not generate temporary file name: %s\n" -msgstr "impossible de créer le nom du fichier temporaire : %s\n" +msgstr "impossible de créer le nom du fichier temporaire : %s\n" #: pg_backup_tar.c:431 #, c-format @@ -1336,17 +1344,17 @@ msgstr "n'a pas pu fermer le membre de tar\n" #: pg_backup_tar.c:571 #, c-format msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" -msgstr "erreur interne -- ni th ni fh ne sont précisés dans tarReadRaw()\n" +msgstr "erreur interne -- ni th ni fh ne sont précisés dans tarReadRaw()\n" #: pg_backup_tar.c:694 #, c-format msgid "unexpected COPY statement syntax: \"%s\"\n" -msgstr "syntaxe inattendue de l'instruction COPY : « %s »\n" +msgstr "syntaxe inattendue de l'instruction COPY : « %s »\n" #: pg_backup_tar.c:960 #, c-format msgid "invalid OID for large object (%u)\n" -msgstr "OID invalide pour le « Large Object » (%u)\n" +msgstr "OID invalide pour le « Large Object » (%u)\n" #: pg_backup_tar.c:1104 #, c-format @@ -1357,7 +1365,7 @@ msgstr "n'a pas pu ouvrir le fichier temporaire : %s\n" #, c-format msgid "actual file length (%s) does not match expected (%s)\n" msgstr "" -"la longueur réelle du fichier (%s) ne correspond pas à ce qui était " +"la longueur réelle du fichier (%s) ne correspond pas à ce qui était " "attendu\n" "(%s)\n" @@ -1365,7 +1373,7 @@ msgstr "" #, c-format msgid "moving from position %s to next member at file position %s\n" msgstr "" -"déplacement de la position %s vers le prochain membre à la position %s du " +"déplacement de la position %s vers le prochain membre à la position %s du " "fichier\n" #: pg_backup_tar.c:1162 @@ -1376,7 +1384,7 @@ msgstr "maintenant en position %s du fichier\n" #: pg_backup_tar.c:1171 pg_backup_tar.c:1201 #, c-format msgid "could not find header for file \"%s\" in tar archive\n" -msgstr "n'a pas pu trouver l'en-tête du fichier « %s » dans l'archive tar\n" +msgstr "n'a pas pu trouver l'en-tête du fichier « %s » dans l'archive tar\n" #: pg_backup_tar.c:1185 #, c-format @@ -1389,473 +1397,473 @@ msgid "" "restoring data out of order is not supported in this archive format: \"%s\" " "is required, but comes before \"%s\" in the archive file.\n" msgstr "" -"la restauration désordonnée de données n'est pas supportée avec ce format\n" -"d'archive : « %s » est requis mais vient avant « %s » dans le fichier\n" +"la restauration désordonnée de données n'est pas supportée avec ce format\n" +"d'archive : « %s » est requis mais vient avant « %s » dans le fichier\n" "d'archive.\n" #: pg_backup_tar.c:1235 #, c-format msgid "incomplete tar header found (%lu byte)\n" msgid_plural "incomplete tar header found (%lu bytes)\n" -msgstr[0] "en-tête incomplet du fichier tar (%lu octet)\n" -msgstr[1] "en-tête incomplet du fichier tar (%lu octets)\n" +msgstr[0] "en-tête incomplet du fichier tar (%lu octet)\n" +msgstr[1] "en-tête incomplet du fichier tar (%lu octets)\n" #: pg_backup_tar.c:1276 #, c-format msgid "TOC Entry %s at %s (length %s, checksum %d)\n" -msgstr "entrée TOC %s à %s (longueur %s, somme de contrôle %d)\n" +msgstr "entrée TOC %s à %s (longueur %s, somme de contrôle %d)\n" #: pg_backup_tar.c:1287 #, c-format msgid "" "corrupt tar header found in %s (expected %d, computed %d) file position %s\n" msgstr "" -"en-tête tar corrompu trouvé dans %s (%d attendu, %d calculé ) à la\n" +"en-tête tar corrompu trouvé dans %s (%d attendu, %d calculé ) à la\n" "position %s du fichier\n" #: pg_backup_utils.c:54 #, c-format msgid "%s: unrecognized section name: \"%s\"\n" -msgstr "%s : nom de section non reconnu : « %s »\n" +msgstr "%s : nom de section non reconnu : « %s »\n" -#: pg_backup_utils.c:56 pg_dump.c:533 pg_dump.c:550 pg_dumpall.c:299 +#: pg_backup_utils.c:56 pg_dump.c:536 pg_dump.c:553 pg_dumpall.c:299 #: pg_dumpall.c:309 pg_dumpall.c:319 pg_dumpall.c:328 pg_dumpall.c:344 #: pg_dumpall.c:402 pg_restore.c:279 pg_restore.c:295 pg_restore.c:307 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Essayer « %s --help » pour plus d'informations.\n" +msgstr "Essayer « %s --help » pour plus d'informations.\n" #: pg_backup_utils.c:118 #, c-format msgid "out of on_exit_nicely slots\n" msgstr "plus d'emplacements on_exit_nicely\n" -#: pg_dump.c:503 +#: pg_dump.c:506 #, c-format msgid "compression level must be in range 0..9\n" -msgstr "le niveau de compression doit être compris entre 0 et 9\n" +msgstr "le niveau de compression doit être compris entre 0 et 9\n" -#: pg_dump.c:548 pg_dumpall.c:307 pg_restore.c:293 +#: pg_dump.c:551 pg_dumpall.c:307 pg_restore.c:293 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "" -"%s : trop d'arguments en ligne de commande (le premier étant « %s »)\n" +"%s : trop d'arguments en ligne de commande (le premier étant « %s »)\n" -#: pg_dump.c:561 +#: pg_dump.c:564 #, c-format msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "" -"les options « -s/--schema-only » et « -a/--data-only » ne peuvent pas être\n" -"utilisées conjointement\n" +"les options « -s/--schema-only » et « -a/--data-only » ne peuvent pas être\n" +"utilisées conjointement\n" -#: pg_dump.c:567 +#: pg_dump.c:570 #, c-format msgid "options -c/--clean and -a/--data-only cannot be used together\n" msgstr "" -"les options « -c/--clean » et « -a/--data-only » ne peuvent pas être\n" -"utilisées conjointement\n" +"les options « -c/--clean » et « -a/--data-only » ne peuvent pas être\n" +"utilisées conjointement\n" -#: pg_dump.c:573 +#: pg_dump.c:576 #, c-format msgid "" "options --inserts/--column-inserts and -o/--oids cannot be used together\n" msgstr "" -"les options « --inserts/--column-inserts » et « -o/--oids » ne\n" -"peuvent pas être utilisées conjointement\n" +"les options « --inserts/--column-inserts » et « -o/--oids » ne\n" +"peuvent pas être utilisées conjointement\n" -#: pg_dump.c:574 +#: pg_dump.c:577 #, c-format msgid "(The INSERT command cannot set OIDs.)\n" msgstr "(La commande INSERT ne peut pas positionner les OID.)\n" -#: pg_dump.c:579 +#: pg_dump.c:582 #, c-format msgid "option --if-exists requires option -c/--clean\n" -msgstr "l'option --if-exists nécessite l'option -c/--clean\n" +msgstr "l'option --if-exists nécessite l'option -c/--clean\n" -#: pg_dump.c:601 +#: pg_dump.c:604 #, c-format msgid "" "WARNING: requested compression not available in this installation -- " "archive will be uncompressed\n" msgstr "" "ATTENTION : la compression requise n'est pas disponible avec cette\n" -"installation -- l'archive ne sera pas compressée\n" +"installation -- l'archive ne sera pas compressée\n" -#: pg_dump.c:616 +#: pg_dump.c:619 #, c-format -msgid "%s: invalid number of parallel jobs\n" -msgstr "%s : nombre de jobs en parallèle invalide\n" +msgid "invalid number of parallel jobs\n" +msgstr "nombre de jobs parallèles invalide\n" -#: pg_dump.c:620 +#: pg_dump.c:623 #, c-format msgid "parallel backup only supported by the directory format\n" msgstr "" -"la sauvegarde parallèle n'est supportée qu'avec le format répertoire\n" +"la sauvegarde parallèle n'est supportée qu'avec le format répertoire\n" -#: pg_dump.c:677 +#: pg_dump.c:680 #, c-format msgid "" "Synchronized snapshots are not supported by this server version.\n" "Run with --no-synchronized-snapshots instead if you do not need\n" "synchronized snapshots.\n" msgstr "" -"Les snapshots synchronisés ne sont pas supportés par cette version " +"Les snapshots synchronisés ne sont pas supportés par cette version " "serveur.\n" -"Lancez avec --no-synchronized-snapshots à la place si vous n'avez pas " +"Lancez avec --no-synchronized-snapshots à la place si vous n'avez pas " "besoin\n" -"de snapshots synchronisés.\n" +"de snapshots synchronisés.\n" -#: pg_dump.c:684 +#: pg_dump.c:687 #, c-format msgid "Exported snapshots are not supported by this server version.\n" msgstr "" -"Les images exportées de la base ne sont pas supportées par cette version du " +"Les images exportées de la base ne sont pas supportées par cette version du " "serveur.\n" "\n" -#: pg_dump.c:695 +#: pg_dump.c:706 #, c-format msgid "last built-in OID is %u\n" msgstr "le dernier OID interne est %u\n" -#: pg_dump.c:705 +#: pg_dump.c:715 #, c-format msgid "no matching schemas were found\n" -msgstr "aucun schéma correspondant n'a été trouvé\n" +msgstr "aucun schéma correspondant n'a été trouvé\n" -#: pg_dump.c:719 +#: pg_dump.c:729 #, c-format msgid "no matching tables were found\n" -msgstr "aucune table correspondante n'a été trouvée\n" +msgstr "aucune table correspondante n'a été trouvée\n" -#: pg_dump.c:878 +#: pg_dump.c:897 #, c-format msgid "" "%s dumps a database as a text file or to other formats.\n" "\n" msgstr "" -"%s exporte une base de données dans un fichier texte ou dans d'autres\n" +"%s exporte une base de données dans un fichier texte ou dans d'autres\n" "formats.\n" "\n" -#: pg_dump.c:879 pg_dumpall.c:547 pg_restore.c:437 +#: pg_dump.c:898 pg_dumpall.c:547 pg_restore.c:443 #, c-format msgid "Usage:\n" msgstr "Usage :\n" -#: pg_dump.c:880 +#: pg_dump.c:899 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [OPTION]... [NOMBASE]\n" -#: pg_dump.c:882 pg_dumpall.c:550 pg_restore.c:440 +#: pg_dump.c:901 pg_dumpall.c:550 pg_restore.c:446 #, c-format msgid "" "\n" "General options:\n" msgstr "" "\n" -"Options générales :\n" +"Options générales :\n" -#: pg_dump.c:883 +#: pg_dump.c:902 #, c-format msgid " -f, --file=FILENAME output file or directory name\n" msgstr "" -" -f, --file=NOMFICHIER nom du fichier ou du répertoire en sortie\n" +" -f, --file=NOMFICHIER nom du fichier ou du répertoire en sortie\n" -#: pg_dump.c:884 +#: pg_dump.c:903 #, c-format msgid "" " -F, --format=c|d|t|p output file format (custom, directory, tar,\n" " plain text (default))\n" msgstr "" -" -F, --format=c|d|t|p format du fichier de sortie (personnalisé,\n" -" répertoire, tar, texte (par défaut))\n" +" -F, --format=c|d|t|p format du fichier de sortie (personnalisé,\n" +" répertoire, tar, texte (par défaut))\n" -#: pg_dump.c:886 +#: pg_dump.c:905 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to dump\n" msgstr "" -" -j, --jobs=NUMERO utilise ce nombre de jobs en parallèle pour\n" +" -j, --jobs=NUMERO utilise ce nombre de jobs en parallèle pour\n" " la sauvegarde\n" -#: pg_dump.c:887 +#: pg_dump.c:906 pg_dumpall.c:552 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose mode verbeux\n" -#: pg_dump.c:888 pg_dumpall.c:552 +#: pg_dump.c:907 pg_dumpall.c:553 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version affiche la version puis quitte\n" -#: pg_dump.c:889 +#: pg_dump.c:908 #, c-format msgid "" " -Z, --compress=0-9 compression level for compressed formats\n" msgstr "" " -Z, --compress=0-9 niveau de compression pour les formats\n" -" compressés\n" +" compressés\n" -#: pg_dump.c:890 pg_dumpall.c:553 +#: pg_dump.c:909 pg_dumpall.c:554 #, c-format msgid "" " --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" msgstr "" -" --lock-wait-timeout=DÉLAI échec après l'attente du DÉLAI pour un " +" --lock-wait-timeout=DÉLAI échec après l'attente du DÉLAI pour un " "verrou\n" " de table\n" -#: pg_dump.c:891 pg_dumpall.c:554 +#: pg_dump.c:910 pg_dumpall.c:555 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help affiche cette aide puis quitte\n" -#: pg_dump.c:893 pg_dumpall.c:555 +#: pg_dump.c:912 pg_dumpall.c:556 #, c-format msgid "" "\n" "Options controlling the output content:\n" msgstr "" "\n" -"Options contrôlant le contenu en sortie :\n" +"Options contrôlant le contenu en sortie :\n" -#: pg_dump.c:894 pg_dumpall.c:556 +#: pg_dump.c:913 pg_dumpall.c:557 #, c-format msgid " -a, --data-only dump only the data, not the schema\n" msgstr "" -" -a, --data-only sauvegarde uniquement les données, pas le\n" -" schéma\n" +" -a, --data-only sauvegarde uniquement les données, pas le\n" +" schéma\n" -#: pg_dump.c:895 +#: pg_dump.c:914 #, c-format msgid " -b, --blobs include large objects in dump\n" msgstr "" -" -b, --blobs inclut les « Large Objects » dans la\n" +" -b, --blobs inclut les « Large Objects » dans la\n" " sauvegarde\n" -#: pg_dump.c:896 pg_restore.c:451 +#: pg_dump.c:915 pg_restore.c:457 #, c-format msgid "" " -c, --clean clean (drop) database objects before " "recreating\n" msgstr "" " -c, --clean nettoie/supprime les objets de la base de\n" -" données avant de les créer\n" +" données avant de les créer\n" -#: pg_dump.c:897 +#: pg_dump.c:916 #, c-format msgid "" " -C, --create include commands to create database in dump\n" msgstr "" -" -C, --create inclut les commandes de création de la base\n" +" -C, --create inclut les commandes de création de la base\n" " dans la sauvegarde\n" -#: pg_dump.c:898 +#: pg_dump.c:917 #, c-format msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" msgstr "" -" -E, --encoding=ENCODAGE sauvegarde les données dans l'encodage\n" +" -E, --encoding=ENCODAGE sauvegarde les données dans l'encodage\n" " ENCODAGE\n" -#: pg_dump.c:899 +#: pg_dump.c:918 #, c-format msgid " -n, --schema=SCHEMA dump the named schema(s) only\n" msgstr "" -" -n, --schema=SCHÉMA sauvegarde uniquement le schéma indiqué\n" +" -n, --schema=SCHÉMA sauvegarde uniquement le schéma indiqué\n" -#: pg_dump.c:900 +#: pg_dump.c:919 #, c-format msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n" -msgstr " -N, --exclude-schema=SCHÉMA ne sauvegarde pas le schéma indiqué\n" +msgstr " -N, --exclude-schema=SCHÉMA ne sauvegarde pas le schéma indiqué\n" -#: pg_dump.c:901 pg_dumpall.c:559 +#: pg_dump.c:920 pg_dumpall.c:560 #, c-format msgid " -o, --oids include OIDs in dump\n" msgstr " -o, --oids inclut les OID dans la sauvegarde\n" -#: pg_dump.c:902 +#: pg_dump.c:921 #, c-format msgid "" " -O, --no-owner skip restoration of object ownership in\n" " plain-text format\n" msgstr "" -" -O, --no-owner ne sauvegarde pas les propriétaires des\n" +" -O, --no-owner ne sauvegarde pas les propriétaires des\n" " objets lors de l'utilisation du format " "texte\n" -#: pg_dump.c:904 pg_dumpall.c:562 +#: pg_dump.c:923 pg_dumpall.c:563 #, c-format msgid " -s, --schema-only dump only the schema, no data\n" msgstr "" " -s, --schema-only sauvegarde uniquement la structure, pas les\n" -" données\n" +" données\n" -#: pg_dump.c:905 +#: pg_dump.c:924 #, c-format msgid "" " -S, --superuser=NAME superuser user name to use in plain-text " "format\n" msgstr "" -" -S, --superuser=NOM indique le nom du super-utilisateur à\n" +" -S, --superuser=NOM indique le nom du super-utilisateur à\n" " utiliser avec le format texte\n" -#: pg_dump.c:906 +#: pg_dump.c:925 #, c-format msgid " -t, --table=TABLE dump the named table(s) only\n" msgstr "" -" -t, --table=TABLE sauvegarde uniquement la table indiquée\n" +" -t, --table=TABLE sauvegarde uniquement la table indiquée\n" -#: pg_dump.c:907 +#: pg_dump.c:926 #, c-format msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n" -msgstr " -T, --exclude-table=TABLE ne sauvegarde pas la table indiquée\n" +msgstr " -T, --exclude-table=TABLE ne sauvegarde pas la table indiquée\n" -#: pg_dump.c:908 pg_dumpall.c:565 +#: pg_dump.c:927 pg_dumpall.c:566 #, c-format msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" msgstr "" " -x, --no-privileges ne sauvegarde pas les droits sur les objets\n" -#: pg_dump.c:909 pg_dumpall.c:566 +#: pg_dump.c:928 pg_dumpall.c:567 #, c-format msgid " --binary-upgrade for use by upgrade utilities only\n" msgstr "" -" --binary-upgrade à n'utiliser que par les outils de mise à\n" +" --binary-upgrade à n'utiliser que par les outils de mise à\n" " jour seulement\n" -#: pg_dump.c:910 pg_dumpall.c:567 +#: pg_dump.c:929 pg_dumpall.c:568 #, c-format msgid "" " --column-inserts dump data as INSERT commands with column " "names\n" msgstr "" -" --column-inserts sauvegarde les données avec des commandes\n" -" INSERT en précisant les noms des colonnes\n" +" --column-inserts sauvegarde les données avec des commandes\n" +" INSERT en précisant les noms des colonnes\n" -#: pg_dump.c:911 pg_dumpall.c:568 +#: pg_dump.c:930 pg_dumpall.c:569 #, c-format msgid "" " --disable-dollar-quoting disable dollar quoting, use SQL standard " "quoting\n" msgstr "" -" --disable-dollar-quoting désactive l'utilisation des guillemets\n" +" --disable-dollar-quoting désactive l'utilisation des guillemets\n" " dollar dans le but de respecter le standard\n" -" SQL en matière de guillemets\n" +" SQL en matière de guillemets\n" -#: pg_dump.c:912 pg_dumpall.c:569 pg_restore.c:467 +#: pg_dump.c:931 pg_dumpall.c:570 pg_restore.c:473 #, c-format msgid "" " --disable-triggers disable triggers during data-only restore\n" msgstr "" -" --disable-triggers désactive les triggers en mode de " +" --disable-triggers désactive les triggers en mode de " "restauration\n" -" des données seules\n" +" des données seules\n" -#: pg_dump.c:913 +#: pg_dump.c:932 #, c-format msgid "" " --enable-row-security enable row security (dump only content user " "has\n" " access to)\n" msgstr "" -" --enable-row-security active la sécurité niveau ligne (et donc\\n\n" +" --enable-row-security active la sécurité niveau ligne (et donc\\n\n" " sauvegarde uniquement le contenu visible par" "\\n\n" " cet utilisateur)\n" -#: pg_dump.c:915 +#: pg_dump.c:934 #, c-format msgid "" " --exclude-table-data=TABLE do NOT dump data for the named table(s)\n" -msgstr " --exclude-table-data=TABLE ne sauvegarde pas la table indiquée\n" +msgstr " --exclude-table-data=TABLE ne sauvegarde pas la table indiquée\n" -#: pg_dump.c:916 pg_dumpall.c:570 pg_restore.c:469 +#: pg_dump.c:935 pg_dumpall.c:571 pg_restore.c:475 #, c-format msgid " --if-exists use IF EXISTS when dropping objects\n" msgstr "" " --if-exists utilise IF EXISTS lors de la suppression des " "objets\n" -#: pg_dump.c:917 pg_dumpall.c:571 +#: pg_dump.c:936 pg_dumpall.c:572 #, c-format msgid "" " --inserts dump data as INSERT commands, rather than " "COPY\n" msgstr "" -" --inserts sauvegarde les données avec des " +" --inserts sauvegarde les données avec des " "instructions\n" -" INSERT plutôt que COPY\n" +" INSERT plutôt que COPY\n" -#: pg_dump.c:918 pg_dumpall.c:572 +#: pg_dump.c:937 pg_dumpall.c:573 #, c-format msgid "" " --no-security-labels do not dump security label assignments\n" msgstr "" " --no-security-labels ne sauvegarde pas les affectations de labels " "de\n" -" sécurité\n" +" sécurité\n" -#: pg_dump.c:919 +#: pg_dump.c:938 #, c-format msgid "" " --no-synchronized-snapshots do not use synchronized snapshots in " "parallel jobs\n" msgstr "" -" --no-synchronized-snapshots n'utilise pas de snapshots synchronisés pour " -"les jobs en parallèle\n" +" --no-synchronized-snapshots n'utilise pas de snapshots synchronisés pour " +"les jobs en parallèle\n" -#: pg_dump.c:920 pg_dumpall.c:573 +#: pg_dump.c:939 pg_dumpall.c:574 #, c-format msgid " --no-tablespaces do not dump tablespace assignments\n" msgstr "" " --no-tablespaces ne sauvegarde pas les affectations de\n" " tablespaces\n" -#: pg_dump.c:921 pg_dumpall.c:574 +#: pg_dump.c:940 pg_dumpall.c:575 #, c-format msgid " --no-unlogged-table-data do not dump unlogged table data\n" msgstr "" -" --no-unlogged-table-data ne sauvegarde pas les données des tables " +" --no-unlogged-table-data ne sauvegarde pas les données des tables " "non\n" -" journalisées\n" +" journalisées\n" -#: pg_dump.c:922 pg_dumpall.c:575 +#: pg_dump.c:941 pg_dumpall.c:576 #, c-format msgid "" " --quote-all-identifiers quote all identifiers, even if not key " "words\n" msgstr "" " --quote-all-identifiers met entre guillemets tous les identifiants\n" -" même s'il ne s'agit pas de mots clés\n" +" même s'il ne s'agit pas de mots clés\n" -#: pg_dump.c:923 +#: pg_dump.c:942 #, c-format msgid "" " --section=SECTION dump named section (pre-data, data, or post-" "data)\n" msgstr "" -" --section=SECTION sauvegarde la section indiquée (pre-data, " +" --section=SECTION sauvegarde la section indiquée (pre-data, " "data\n" " ou post-data)\n" -#: pg_dump.c:924 +#: pg_dump.c:943 #, c-format msgid "" " --serializable-deferrable wait until the dump can run without " "anomalies\n" msgstr "" -" --serializable-deferrable attend jusqu'à ce que la sauvegarde puisse\n" -" s'exécuter sans anomalies\n" +" --serializable-deferrable attend jusqu'à ce que la sauvegarde puisse\n" +" s'exécuter sans anomalies\n" -#: pg_dump.c:925 +#: pg_dump.c:944 #, c-format msgid " --snapshot=SNAPSHOT use given snapshot for the dump\n" msgstr "" -" --snapshot=SNAPSHOT utilise l'image donnée pour la sauvegarde\n" +" --snapshot=SNAPSHOT utilise l'image donnée pour la sauvegarde\n" -#: pg_dump.c:926 pg_restore.c:475 +#: pg_dump.c:945 pg_restore.c:481 #, c-format msgid "" " --strict-names require table and/or schema include patterns " @@ -1863,11 +1871,11 @@ msgid "" " match at least one entity each\n" msgstr "" " --strict-names requiert que le motifs de table et/ou " -"schéma\n" -" correspondent à au moins une entité de " +"schéma\n" +" correspondent à au moins une entité de " "chaque\n" -#: pg_dump.c:928 pg_dumpall.c:576 pg_restore.c:477 +#: pg_dump.c:947 pg_dumpall.c:577 pg_restore.c:483 #, c-format msgid "" " --use-set-session-authorization\n" @@ -1879,9 +1887,9 @@ msgstr "" " utilise les commandes SET SESSION " "AUTHORIZATION\n" " au lieu des commandes ALTER OWNER pour\n" -" modifier les propriétaires\n" +" modifier les propriétaires\n" -#: pg_dump.c:932 pg_dumpall.c:580 pg_restore.c:481 +#: pg_dump.c:951 pg_dumpall.c:581 pg_restore.c:487 #, c-format msgid "" "\n" @@ -1890,50 +1898,50 @@ msgstr "" "\n" "Options de connexion :\n" -#: pg_dump.c:933 +#: pg_dump.c:952 #, c-format msgid " -d, --dbname=DBNAME database to dump\n" -msgstr " -d, --dbname=NOMBASE base de données à sauvegarder\n" +msgstr " -d, --dbname=NOMBASE base de données à sauvegarder\n" -#: pg_dump.c:934 pg_dumpall.c:582 pg_restore.c:482 +#: pg_dump.c:953 pg_dumpall.c:583 pg_restore.c:488 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" -" -h, --host=NOMHÔTE hôte du serveur de bases de données ou\n" -" répertoire des sockets\n" +" -h, --host=NOMHÔTE hôte du serveur de bases de données ou\n" +" répertoire des sockets\n" -#: pg_dump.c:935 pg_dumpall.c:584 pg_restore.c:483 +#: pg_dump.c:954 pg_dumpall.c:585 pg_restore.c:489 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr "" -" -p, --port=PORT numéro de port du serveur de bases de\n" -" données\n" +" -p, --port=PORT numéro de port du serveur de bases de\n" +" données\n" -#: pg_dump.c:936 pg_dumpall.c:585 pg_restore.c:484 +#: pg_dump.c:955 pg_dumpall.c:586 pg_restore.c:490 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=NOM se connecter avec cet utilisateur\n" -#: pg_dump.c:937 pg_dumpall.c:586 pg_restore.c:485 +#: pg_dump.c:956 pg_dumpall.c:587 pg_restore.c:491 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password ne demande jamais le mot de passe\n" -#: pg_dump.c:938 pg_dumpall.c:587 pg_restore.c:486 +#: pg_dump.c:957 pg_dumpall.c:588 pg_restore.c:492 #, c-format msgid "" " -W, --password force password prompt (should happen " "automatically)\n" msgstr "" " -W, --password force la demande du mot de passe (par\n" -" défaut)\n" +" défaut)\n" -#: pg_dump.c:939 pg_dumpall.c:588 +#: pg_dump.c:958 pg_dumpall.c:589 #, c-format msgid " --role=ROLENAME do SET ROLE before dump\n" -msgstr " --role=NOMROLE exécute SET ROLE avant la sauvegarde\n" +msgstr " --role=NOMROLE exécute SET ROLE avant la sauvegarde\n" -#: pg_dump.c:941 +#: pg_dump.c:960 #, c-format msgid "" "\n" @@ -1942,464 +1950,482 @@ msgid "" "\n" msgstr "" "\n" -"Si aucune base de données n'est indiquée, la valeur de la variable\n" -"d'environnement PGDATABASE est alors utilisée.\n" +"Si aucune base de données n'est indiquée, la valeur de la variable\n" +"d'environnement PGDATABASE est alors utilisée.\n" "\n" -#: pg_dump.c:943 pg_dumpall.c:592 pg_restore.c:493 +#: pg_dump.c:962 pg_dumpall.c:593 pg_restore.c:499 #, c-format msgid "Report bugs to .\n" -msgstr "Rapporter les bogues à .\n" +msgstr "Rapporter les bogues à .\n" -#: pg_dump.c:960 +#: pg_dump.c:979 #, c-format msgid "invalid client encoding \"%s\" specified\n" -msgstr "encodage client indiqué (« %s ») invalide\n" +msgstr "encodage client indiqué (« %s ») invalide\n" -#: pg_dump.c:1102 +#: pg_dump.c:1121 #, c-format msgid "" "Synchronized snapshots are not supported on standby servers.\n" "Run with --no-synchronized-snapshots instead if you do not need\n" "synchronized snapshots.\n" msgstr "" -"Les snapshots synchronisés ne sont pas supportés sur les serveurs de " +"Les snapshots synchronisés ne sont pas supportés sur les serveurs de " "stadby.\n" -"Lancez avec --no-synchronized-snapshots à la place si vous n'avez pas " +"Lancez avec --no-synchronized-snapshots à la place si vous n'avez pas " "besoin\n" -"de snapshots synchronisés.\n" +"de snapshots synchronisés.\n" -#: pg_dump.c:1171 +#: pg_dump.c:1190 #, c-format msgid "invalid output format \"%s\" specified\n" -msgstr "format de sortie « %s » invalide\n" +msgstr "format de sortie « %s » invalide\n" -#: pg_dump.c:1194 +#: pg_dump.c:1213 #, c-format msgid "server version must be at least 7.3 to use schema selection switches\n" msgstr "" -"le serveur doit être de version 7.3 ou supérieure pour utiliser les " +"le serveur doit être de version 7.3 ou supérieure pour utiliser les " "options\n" -"de sélection du schéma\n" +"de sélection du schéma\n" + +#: pg_dump.c:1231 +#, c-format +msgid "no matching schemas were found for pattern \"%s\"\n" +msgstr "aucun schéma correspondant n'a été trouvé avec le motif « %s »\n" -#: pg_dump.c:1212 pg_dump.c:1265 +#: pg_dump.c:1284 #, c-format msgid "no matching tables were found for pattern \"%s\"\n" -msgstr "aucune table correspondante n'a été trouvée avec le motif « %s »\n" +msgstr "aucune table correspondante n'a été trouvée avec le motif « %s »\n" -#: pg_dump.c:1652 +#: pg_dump.c:1671 #, c-format msgid "dumping contents of table \"%s.%s\"\n" -msgstr "sauvegarde du contenu de la table « %s.%s »\n" +msgstr "sauvegarde du contenu de la table « %s.%s »\n" -#: pg_dump.c:1776 +#: pg_dump.c:1795 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" msgstr "" -"La sauvegarde du contenu de la table « %s » a échoué : échec de\n" +"La sauvegarde du contenu de la table « %s » a échoué : échec de\n" "PQgetCopyData().\n" -#: pg_dump.c:1777 pg_dump.c:1787 +#: pg_dump.c:1796 pg_dump.c:1806 #, c-format msgid "Error message from server: %s" msgstr "Message d'erreur du serveur : %s" -#: pg_dump.c:1778 pg_dump.c:1788 +#: pg_dump.c:1797 pg_dump.c:1807 #, c-format msgid "The command was: %s\n" -msgstr "La commande était : %s\n" +msgstr "La commande était : %s\n" -#: pg_dump.c:1786 +#: pg_dump.c:1805 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetResult() failed.\n" msgstr "" -"La sauvegarde du contenu de la table « %s » a échoué : échec de\n" +"La sauvegarde du contenu de la table « %s » a échoué : échec de\n" "PQgetResult().\n" -#: pg_dump.c:2435 +#: pg_dump.c:2454 #, c-format msgid "saving database definition\n" -msgstr "sauvegarde de la définition de la base de données\n" +msgstr "sauvegarde de la définition de la base de données\n" -#: pg_dump.c:2769 +#: pg_dump.c:2788 #, c-format msgid "saving encoding = %s\n" msgstr "encodage de la sauvegarde = %s\n" -#: pg_dump.c:2796 +#: pg_dump.c:2815 #, c-format msgid "saving standard_conforming_strings = %s\n" msgstr "standard_conforming_strings de la sauvegarde = %s\n" -#: pg_dump.c:2836 +#: pg_dump.c:2855 #, c-format msgid "reading large objects\n" -msgstr "lecture des « Large Objects »\n" +msgstr "lecture des « Large Objects »\n" -#: pg_dump.c:3022 +#: pg_dump.c:3056 #, c-format msgid "saving large objects\n" -msgstr "sauvegarde des « Large Objects »\n" +msgstr "sauvegarde des « Large Objects »\n" -#: pg_dump.c:3069 +#: pg_dump.c:3103 #, c-format msgid "error reading large object %u: %s" -msgstr "erreur lors de la lecture du « Large Object » %u : %s" +msgstr "erreur lors de la lecture du « Large Object » %u : %s" -#: pg_dump.c:3121 +#: pg_dump.c:3155 #, c-format msgid "reading row security enabled for table \"%s.%s\"\n" msgstr "" -"lecture de l'activation de la sécurité niveau ligne pour la table « %s.%s " -"»\n" +"lecture de l'activation de la sécurité niveau ligne pour la table « %s.%s " +"»\n" -#: pg_dump.c:3152 +#: pg_dump.c:3186 #, c-format msgid "reading policies for table \"%s.%s\"\n" -msgstr "lecture des politiques pour la table « %s.%s »\n" +msgstr "lecture des politiques pour la table « %s.%s »\n" -#: pg_dump.c:3285 +#: pg_dump.c:3319 #, c-format msgid "unexpected policy command type: \"%s\"\n" -msgstr "type de commande inattendu pour la politique : « %s »\n" +msgstr "type de commande inattendu pour la politique : « %s »\n" -#: pg_dump.c:3504 +#: pg_dump.c:3538 #, c-format msgid "could not find parent extension for %s\n" msgstr "n'a pas pu trouver l'extension parent pour %s\n" -#: pg_dump.c:3672 +#: pg_dump.c:3731 #, c-format msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" -msgstr "ATTENTION : le propriétaire du schéma « %s » semble être invalide\n" +msgstr "ATTENTION : le propriétaire du schéma « %s » semble être invalide\n" -#: pg_dump.c:3715 +#: pg_dump.c:3774 #, c-format msgid "schema with OID %u does not exist\n" -msgstr "le schéma d'OID %u n'existe pas\n" +msgstr "le schéma d'OID %u n'existe pas\n" -#: pg_dump.c:4130 +#: pg_dump.c:4189 #, c-format msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" msgstr "" -"ATTENTION : le propriétaire du type de données « %s » semble être invalide\n" +"ATTENTION : le propriétaire du type de données « %s » semble être invalide\n" -#: pg_dump.c:4244 +#: pg_dump.c:4303 #, c-format msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" msgstr "" -"ATTENTION : le propriétaire de l'opérateur « %s » semble être invalide\n" +"ATTENTION : le propriétaire de l'opérateur « %s » semble être invalide\n" -#: pg_dump.c:4589 +#: pg_dump.c:4648 #, c-format msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" msgstr "" -"ATTENTION : le propriétaire de la classe d'opérateur « %s » semble être\n" +"ATTENTION : le propriétaire de la classe d'opérateur « %s » semble être\n" "invalide\n" -#: pg_dump.c:4680 +#: pg_dump.c:4739 #, c-format msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" msgstr "" -"ATTENTION : le propriétaire de la famille d'opérateur « %s » semble être\n" +"ATTENTION : le propriétaire de la famille d'opérateur « %s » semble être\n" "invalide\n" -#: pg_dump.c:4881 +#: pg_dump.c:4940 #, c-format msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" msgstr "" -"ATTENTION : le propriétaire de la fonction d'aggrégat « %s » semble être\n" +"ATTENTION : le propriétaire de la fonction d'aggrégat « %s » semble être\n" "invalide\n" -#: pg_dump.c:5153 +#: pg_dump.c:5237 #, c-format msgid "WARNING: owner of function \"%s\" appears to be invalid\n" msgstr "" -"ATTENTION : le propriétaire de la fonction « %s » semble être invalide\n" +"ATTENTION : le propriétaire de la fonction « %s » semble être invalide\n" -#: pg_dump.c:6015 +#: pg_dump.c:6099 #, c-format msgid "WARNING: owner of table \"%s\" appears to be invalid\n" -msgstr "ATTENTION : le propriétaire de la table « %s » semble être invalide\n" +msgstr "ATTENTION : le propriétaire de la table « %s » semble être invalide\n" -#: pg_dump.c:6181 +#: pg_dump.c:6141 pg_dump.c:16655 +#, c-format +msgid "" +"failed sanity check, parent table OID %u of sequence OID %u not found\n" +msgstr "" +"vérification échouée, OID %u de la table parent de l'OID %u de la séquence " +"introuvable\n" + +#: pg_dump.c:6268 #, c-format msgid "reading indexes for table \"%s.%s\"\n" -msgstr "lecture des index de la table « %s.%s »\n" +msgstr "lecture des index de la table « %s.%s »\n" -#: pg_dump.c:6549 +#: pg_dump.c:6636 #, c-format msgid "reading foreign key constraints for table \"%s.%s\"\n" -msgstr "lecture des contraintes de clés étrangères pour la table « %s.%s »\n" +msgstr "lecture des contraintes de clés étrangères pour la table « %s.%s »\n" -#: pg_dump.c:6795 +#: pg_dump.c:6882 #, c-format msgid "" "failed sanity check, parent table OID %u of pg_rewrite entry OID %u not " "found\n" msgstr "" -"vérification échouée, OID %u de la table parent de l'OID %u de l'entrée de\n" +"vérification échouée, OID %u de la table parent de l'OID %u de l'entrée de\n" "pg_rewrite introuvable\n" -#: pg_dump.c:6889 +#: pg_dump.c:6976 #, c-format msgid "reading triggers for table \"%s.%s\"\n" -msgstr "lecture des triggers pour la table « %s.%s »\n" +msgstr "lecture des triggers pour la table « %s.%s »\n" -#: pg_dump.c:7054 +#: pg_dump.c:7141 #, c-format msgid "" "query produced null referenced table name for foreign key trigger \"%s\" on " "table \"%s\" (OID of table: %u)\n" msgstr "" -"la requête a produit une réference de nom de table null pour le trigger de\n" -"clé étrangère « %s » sur la table « %s » (OID de la table : %u)\n" +"la requête a produit une réference de nom de table null pour le trigger de\n" +"clé étrangère « %s » sur la table « %s » (OID de la table : %u)\n" -#: pg_dump.c:7709 +#: pg_dump.c:7796 #, c-format msgid "finding the columns and types of table \"%s.%s\"\n" -msgstr "recherche des colonnes et types de la table « %s.%s »\n" +msgstr "recherche des colonnes et types de la table « %s.%s »\n" -#: pg_dump.c:7888 +#: pg_dump.c:7975 #, c-format msgid "invalid column numbering in table \"%s\"\n" -msgstr "numérotation des colonnes invalide pour la table « %s »\n" +msgstr "numérotation des colonnes invalide pour la table « %s »\n" -#: pg_dump.c:7922 +#: pg_dump.c:8009 #, c-format msgid "finding default expressions of table \"%s.%s\"\n" -msgstr "recherche des expressions par défaut de la table « %s.%s »\n" +msgstr "recherche des expressions par défaut de la table « %s.%s »\n" -#: pg_dump.c:7975 +#: pg_dump.c:8062 #, c-format msgid "invalid adnum value %d for table \"%s\"\n" -msgstr "valeur adnum %d invalide pour la table « %s »\n" +msgstr "valeur adnum %d invalide pour la table « %s »\n" -#: pg_dump.c:8047 +#: pg_dump.c:8134 #, c-format msgid "finding check constraints for table \"%s.%s\"\n" -msgstr "recherche des contraintes de vérification pour la table « %s.%s »\n" +msgstr "recherche des contraintes de vérification pour la table « %s.%s »\n" -#: pg_dump.c:8143 +#: pg_dump.c:8230 #, c-format msgid "expected %d check constraint on table \"%s\" but found %d\n" msgid_plural "expected %d check constraints on table \"%s\" but found %d\n" msgstr[0] "" -"%d contrainte de vérification attendue pour la table « %s » mais %d\n" -"trouvée\n" +"%d contrainte de vérification attendue pour la table « %s » mais %d\n" +"trouvée\n" msgstr[1] "" -"%d contraintes de vérification attendues pour la table « %s » mais %d\n" -"trouvées\n" +"%d contraintes de vérification attendues pour la table « %s » mais %d\n" +"trouvées\n" -#: pg_dump.c:8147 +#: pg_dump.c:8234 #, c-format msgid "(The system catalogs might be corrupted.)\n" -msgstr "(Les catalogues système sont peut-être corrompus.)\n" +msgstr "(Les catalogues système sont peut-être corrompus.)\n" -#: pg_dump.c:9679 +#: pg_dump.c:9813 #, c-format msgid "WARNING: typtype of data type \"%s\" appears to be invalid\n" msgstr "" -"ATTENTION : la colonne typtype du type de données « %s » semble être " +"ATTENTION : la colonne typtype du type de données « %s » semble être " "invalide\n" -#: pg_dump.c:11221 +#: pg_dump.c:11355 #, c-format msgid "WARNING: bogus value in proargmodes array\n" -msgstr "ATTENTION : valeur erronée dans le tableau proargmodes\n" +msgstr "ATTENTION : valeur erronée dans le tableau proargmodes\n" -#: pg_dump.c:11599 +#: pg_dump.c:11733 #, c-format msgid "WARNING: could not parse proallargtypes array\n" msgstr "ATTENTION : n'a pas pu analyser le tableau proallargtypes\n" -#: pg_dump.c:11615 +#: pg_dump.c:11749 #, c-format msgid "WARNING: could not parse proargmodes array\n" msgstr "ATTENTION : n'a pas pu analyser le tableau proargmodes\n" -#: pg_dump.c:11629 +#: pg_dump.c:11763 #, c-format msgid "WARNING: could not parse proargnames array\n" msgstr "ATTENTION : n'a pas pu analyser le tableau proargnames\n" -#: pg_dump.c:11640 +#: pg_dump.c:11774 #, c-format msgid "WARNING: could not parse proconfig array\n" msgstr "ATTENTION : n'a pas pu analyser le tableau proconfig\n" -#: pg_dump.c:11711 +#: pg_dump.c:11845 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" -msgstr "valeur provolatile non reconnue pour la fonction « %s »\n" +msgstr "valeur provolatile non reconnue pour la fonction « %s »\n" -#: pg_dump.c:11755 pg_dump.c:13798 +#: pg_dump.c:11889 pg_dump.c:13950 #, c-format msgid "unrecognized proparallel value for function \"%s\"\n" -msgstr "valeur proparallel non reconnue pour la fonction « %s »\n" +msgstr "valeur proparallel non reconnue pour la fonction « %s »\n" -#: pg_dump.c:11907 +#: pg_dump.c:11997 pg_dump.c:12107 pg_dump.c:12114 +#, c-format +msgid "could not find function definition for function with OID %u\n" +msgstr "n'a pas pu trouver la définition de la fonction d'OID %u\n" + +#: pg_dump.c:12042 #, c-format msgid "WARNING: bogus value in pg_cast.castfunc or pg_cast.castmethod field\n" msgstr "" -"ATTENTION : valeur erronée dans le champ pg_cast.castfunc ou pg_cast." +"ATTENTION : valeur erronée dans le champ pg_cast.castfunc ou pg_cast." "castmethod\n" -#: pg_dump.c:11910 +#: pg_dump.c:12045 #, c-format msgid "WARNING: bogus value in pg_cast.castmethod field\n" -msgstr "ATTENTION : valeur erronée dans pg_cast.castmethod\n" +msgstr "ATTENTION : valeur erronée dans pg_cast.castmethod\n" -#: pg_dump.c:11998 +#: pg_dump.c:12135 #, c-format msgid "" "WARNING: bogus transform definition, at least one of trffromsql and " "trftosql should be nonzero\n" msgstr "" -"ATTENTION : définition de transformation invalide, au moins un de " +"ATTENTION : définition de transformation invalide, au moins un de " "trffromsql et trftosql ne doit pas valoir 0\n" -#: pg_dump.c:12015 +#: pg_dump.c:12152 #, c-format msgid "WARNING: bogus value in pg_transform.trffromsql field\n" -msgstr "ATTENTION : valeur erronée dans pg_transform.trffromsql\n" +msgstr "ATTENTION : valeur erronée dans pg_transform.trffromsql\n" -#: pg_dump.c:12036 +#: pg_dump.c:12173 #, c-format msgid "WARNING: bogus value in pg_transform.trftosql field\n" -msgstr "ATTENTION : valeur erronée dans pg_transform.trftosql\n" +msgstr "ATTENTION : valeur erronée dans pg_transform.trftosql\n" -#: pg_dump.c:12427 +#: pg_dump.c:12564 #, c-format msgid "WARNING: could not find operator with OID %s\n" -msgstr "ATTENTION : n'a pas pu trouver l'opérateur d'OID %s\n" +msgstr "ATTENTION : n'a pas pu trouver l'opérateur d'OID %s\n" -#: pg_dump.c:12491 +#: pg_dump.c:12628 #, c-format msgid "WARNING: invalid type \"%c\" of access method \"%s\"\n" -msgstr "ATTENTION : type « %c » invalide de la méthode d'accès « %s »\n" +msgstr "ATTENTION : type « %c » invalide de la méthode d'accès « %s »\n" -#: pg_dump.c:13689 +#: pg_dump.c:13841 #, c-format msgid "" "WARNING: aggregate function %s could not be dumped correctly for this " "database version; ignored\n" msgstr "" -"ATTENTION : la fonction d'aggrégat %s n'a pas pu être sauvegardée\n" -" correctement avec cette version de la base de données ; ignorée\n" +"ATTENTION : la fonction d'aggrégat %s n'a pas pu être sauvegardée\n" +" correctement avec cette version de la base de données ; ignorée\n" -#: pg_dump.c:14561 +#: pg_dump.c:14713 #, c-format msgid "unrecognized object type in default privileges: %d\n" -msgstr "type d'objet inconnu dans les droits par défaut : %d\n" +msgstr "type d'objet inconnu dans les droits par défaut : %d\n" -#: pg_dump.c:14576 +#: pg_dump.c:14731 #, c-format msgid "could not parse default ACL list (%s)\n" -msgstr "n'a pas pu analyser la liste ACL par défaut (%s)\n" +msgstr "n'a pas pu analyser la liste ACL par défaut (%s)\n" -#: pg_dump.c:14647 +#: pg_dump.c:14802 #, c-format msgid "" "could not parse initial GRANT ACL list (%s) or initial REVOKE ACL list (%s) " "for object \"%s\" (%s)\n" msgstr "" "n'a pas pu analyser la liste GRANT ACL initiale (%s) ou la liste REVOKE ACL " -"initiale (%s) de l'objet « %s » (%s)\n" +"initiale (%s) de l'objet « %s » (%s)\n" -#: pg_dump.c:14655 +#: pg_dump.c:14810 #, c-format msgid "" "could not parse GRANT ACL list (%s) or REVOKE ACL list (%s) for object \"%s" "\" (%s)\n" msgstr "" -"n'a pas pu analyser la liste GRANT ACL (%s) ou REVOKE ACL (%s) de l'objet « " -"%s » (%s)\n" +"n'a pas pu analyser la liste GRANT ACL (%s) ou REVOKE ACL (%s) de l'objet « " +"%s » (%s)\n" -#: pg_dump.c:15139 +#: pg_dump.c:15295 #, c-format msgid "query to obtain definition of view \"%s\" returned no data\n" msgstr "" -"la requête permettant d'obtenir la définition de la vue « %s » n'a renvoyé\n" -"aucune donnée\n" +"la requête permettant d'obtenir la définition de la vue « %s » n'a renvoyé\n" +"aucune donnée\n" -#: pg_dump.c:15142 +#: pg_dump.c:15298 #, c-format msgid "" "query to obtain definition of view \"%s\" returned more than one " "definition\n" msgstr "" -"la requête permettant d'obtenir la définition de la vue « %s » a renvoyé\n" -" plusieurs définitions\n" +"la requête permettant d'obtenir la définition de la vue « %s » a renvoyé\n" +" plusieurs définitions\n" -#: pg_dump.c:15149 +#: pg_dump.c:15305 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)\n" -msgstr "la définition de la vue « %s » semble être vide (longueur nulle)\n" +msgstr "la définition de la vue « %s » semble être vide (longueur nulle)\n" -#: pg_dump.c:15908 +#: pg_dump.c:16064 #, c-format msgid "invalid column number %d for table \"%s\"\n" -msgstr "numéro de colonne %d invalide pour la table « %s »\n" +msgstr "numéro de colonne %d invalide pour la table « %s »\n" -#: pg_dump.c:16037 +#: pg_dump.c:16193 #, c-format msgid "missing index for constraint \"%s\"\n" -msgstr "index manquant pour la contrainte « %s »\n" +msgstr "index manquant pour la contrainte « %s »\n" -#: pg_dump.c:16240 +#: pg_dump.c:16396 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "type de contrainte inconnu : %c\n" -#: pg_dump.c:16394 pg_dump.c:16563 +#: pg_dump.c:16550 pg_dump.c:16723 #, c-format msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" msgid_plural "" "query to get data of sequence \"%s\" returned %d rows (expected 1)\n" msgstr[0] "" -"la requête permettant d'obtenir les données de la séquence « %s » a " -"renvoyé\n" +"la requête permettant d'obtenir les données de la séquence « %s » a " +"renvoyé\n" "%d ligne (une seule attendue)\n" msgstr[1] "" -"la requête permettant d'obtenir les données de la séquence « %s » a " -"renvoyé\n" +"la requête permettant d'obtenir les données de la séquence « %s » a " +"renvoyé\n" "%d lignes (une seule attendue)\n" -#: pg_dump.c:16405 +#: pg_dump.c:16561 #, c-format msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" msgstr "" -"la requête permettant d'obtenir les données de la séquence « %s » a " -"renvoyé\n" -"le nom « %s »\n" +"la requête permettant d'obtenir les données de la séquence « %s » a " +"renvoyé\n" +"le nom « %s »\n" -#: pg_dump.c:16661 +#: pg_dump.c:16821 #, c-format msgid "unexpected tgtype value: %d\n" msgstr "valeur tgtype inattendue : %d\n" -#: pg_dump.c:16743 +#: pg_dump.c:16903 #, c-format msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" msgstr "" -"chaîne argument invalide (%s) pour le trigger « %s » sur la table « %s »\n" +"chaîne argument invalide (%s) pour le trigger « %s » sur la table « %s »\n" -#: pg_dump.c:16940 +#: pg_dump.c:17110 #, c-format msgid "" "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows " "returned\n" msgstr "" -"la requête permettant d'obtenir la règle « %s » associée à la table « %s »\n" -"a échoué : mauvais nombre de lignes renvoyées\n" +"la requête permettant d'obtenir la règle « %s » associée à la table « %s »\n" +"a échoué : mauvais nombre de lignes renvoyées\n" -#: pg_dump.c:17329 +#: pg_dump.c:17499 #, c-format msgid "reading dependency data\n" -msgstr "lecture des données de dépendance\n" +msgstr "lecture des données de dépendance\n" -#: pg_dump.c:17886 +#: pg_dump.c:18056 #, c-format msgid "WARNING: could not parse reloptions array\n" msgstr "ATTENTION : n'a pas pu analyser le tableau reloptions\n" @@ -2417,12 +2443,12 @@ msgstr "dumpId %d invalide\n" #: pg_dump_sort.c:497 #, c-format msgid "invalid dependency %d\n" -msgstr "dépendance invalide %d\n" +msgstr "dépendance invalide %d\n" #: pg_dump_sort.c:730 #, c-format msgid "could not identify dependency loop\n" -msgstr "n'a pas pu identifier la boucle de dépendance\n" +msgstr "n'a pas pu identifier la boucle de dépendance\n" #: pg_dump_sort.c:1262 #, c-format @@ -2430,10 +2456,10 @@ msgid "NOTICE: there are circular foreign-key constraints on this table:\n" msgid_plural "" "NOTICE: there are circular foreign-key constraints among these tables:\n" msgstr[0] "" -"NOTE : il existe des constraintes de clés étrangères circulaires sur cette " +"NOTE : il existe des constraintes de clés étrangères circulaires sur cette " "table :\n" msgstr[1] "" -"NOTE : il existe des constraintes de clés étrangères circulaires sur ces " +"NOTE : il existe des constraintes de clés étrangères circulaires sur ces " "tables :\n" #: pg_dump_sort.c:1266 pg_dump_sort.c:1286 @@ -2457,16 +2483,16 @@ msgid "" "Consider using a full dump instead of a --data-only dump to avoid this " "problem.\n" msgstr "" -"Considérez l'utilisation d'une sauvegarde complète au lieu d'une " +"Considérez l'utilisation d'une sauvegarde complète au lieu d'une " "sauvegarde\n" -"des données seulement pour éviter ce problème.\n" +"des données seulement pour éviter ce problème.\n" #: pg_dump_sort.c:1280 #, c-format msgid "WARNING: could not resolve dependency loop among these items:\n" msgstr "" -"ATTENTION : n'a pas pu résoudre la boucle de dépendances parmi ces " -"éléments :\n" +"ATTENTION : n'a pas pu résoudre la boucle de dépendances parmi ces " +"éléments :\n" #: pg_dumpall.c:180 #, c-format @@ -2475,10 +2501,10 @@ msgid "" "same directory as \"%s\".\n" "Check your installation.\n" msgstr "" -"Le programme « pg_dump » est nécessaire à %s mais n'a pas été trouvé dans " +"Le programme « pg_dump » est nécessaire à %s mais n'a pas été trouvé dans " "le\n" -"même répertoire que « %s ».\n" -"Vérifiez votre installation.\n" +"même répertoire que « %s ».\n" +"Vérifiez votre installation.\n" #: pg_dumpall.c:187 #, c-format @@ -2487,18 +2513,18 @@ msgid "" "but was not the same version as %s.\n" "Check your installation.\n" msgstr "" -"Le programme « pg_dump » a été trouvé par « %s » mais n'a pas la même\n" +"Le programme « pg_dump » a été trouvé par « %s » mais n'a pas la même\n" "version que %s.\n" -"Vérifiez votre installation.\n" +"Vérifiez votre installation.\n" #: pg_dumpall.c:317 #, c-format msgid "" "%s: options -g/--globals-only and -r/--roles-only cannot be used together\n" msgstr "" -"%s : les options « -g/--globals-only » et « -r/--roles-only » ne peuvent " +"%s : les options « -g/--globals-only » et « -r/--roles-only » ne peuvent " "pas\n" -"être utilisées conjointement\n" +"être utilisées conjointement\n" #: pg_dumpall.c:326 #, c-format @@ -2506,13 +2532,13 @@ msgid "" "%s: options -g/--globals-only and -t/--tablespaces-only cannot be used " "together\n" msgstr "" -"%s : les options « -g/--globals-only » et « -t/--tablespaces-only » ne\n" -"peuvent pas être utilisées conjointement\n" +"%s : les options « -g/--globals-only » et « -t/--tablespaces-only » ne\n" +"peuvent pas être utilisées conjointement\n" -#: pg_dumpall.c:335 pg_restore.c:345 +#: pg_dumpall.c:335 pg_restore.c:361 #, c-format msgid "%s: option --if-exists requires option -c/--clean\n" -msgstr "%s : l'option --if-exists nécessite l'option -c/--clean\n" +msgstr "%s : l'option --if-exists nécessite l'option -c/--clean\n" #: pg_dumpall.c:342 #, c-format @@ -2520,14 +2546,14 @@ msgid "" "%s: options -r/--roles-only and -t/--tablespaces-only cannot be used " "together\n" msgstr "" -"%s : les options « -r/--roles-only » et « -t/--tablespaces-only » ne " +"%s : les options « -r/--roles-only » et « -t/--tablespaces-only » ne " "peuvent\n" -"pas être utilisées conjointement\n" +"pas être utilisées conjointement\n" -#: pg_dumpall.c:384 pg_dumpall.c:1994 +#: pg_dumpall.c:384 pg_dumpall.c:1995 #, c-format msgid "%s: could not connect to database \"%s\"\n" -msgstr "%s : n'a pas pu se connecter à la base de données « %s »\n" +msgstr "%s : n'a pas pu se connecter à la base de données « %s »\n" #: pg_dumpall.c:399 #, c-format @@ -2535,13 +2561,13 @@ msgid "" "%s: could not connect to databases \"postgres\" or \"template1\"\n" "Please specify an alternative database.\n" msgstr "" -"%s : n'a pas pu se connecter aux bases « postgres » et « template1 ».\n" -"Merci de préciser une autre base de données.\n" +"%s : n'a pas pu se connecter aux bases « postgres » et « template1 ».\n" +"Merci de préciser une autre base de données.\n" #: pg_dumpall.c:416 #, c-format msgid "%s: could not open the output file \"%s\": %s\n" -msgstr "%s : n'a pas pu ouvrir le fichier de sauvegarde « %s » : %s\n" +msgstr "%s : n'a pas pu ouvrir le fichier de sauvegarde « %s » : %s\n" #: pg_dumpall.c:546 #, c-format @@ -2549,7 +2575,7 @@ msgid "" "%s extracts a PostgreSQL database cluster into an SQL script file.\n" "\n" msgstr "" -"%s extrait un cluster de bases de données PostgreSQL dans un fichier de\n" +"%s extrait un cluster de bases de données PostgreSQL dans un fichier de\n" "commandes SQL.\n" "\n" @@ -2563,51 +2589,51 @@ msgstr " %s [OPTION]...\n" msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=NOMFICHIER nom du fichier de sortie\n" -#: pg_dumpall.c:557 +#: pg_dumpall.c:558 #, c-format msgid "" " -c, --clean clean (drop) databases before recreating\n" msgstr "" -" -c, --clean nettoie (supprime) les bases de données " +" -c, --clean nettoie (supprime) les bases de données " "avant de\n" -" les créer\n" +" les créer\n" -#: pg_dumpall.c:558 +#: pg_dumpall.c:559 #, c-format msgid "" " -g, --globals-only dump only global objects, no databases\n" msgstr "" -" -g, --globals-only sauvegarde uniquement les objets système, " +" -g, --globals-only sauvegarde uniquement les objets système, " "pas\n" -" le contenu des bases de données\n" +" le contenu des bases de données\n" -#: pg_dumpall.c:560 pg_restore.c:459 +#: pg_dumpall.c:561 pg_restore.c:465 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr "" -" -O, --no-owner omet la restauration des propriétaires des\n" +" -O, --no-owner omet la restauration des propriétaires des\n" " objets\n" -#: pg_dumpall.c:561 +#: pg_dumpall.c:562 #, c-format msgid "" " -r, --roles-only dump only roles, no databases or " "tablespaces\n" msgstr "" -" -r, --roles-only sauvegarde uniquement les rôles, pas les " +" -r, --roles-only sauvegarde uniquement les rôles, pas les " "bases\n" -" de données ni les tablespaces\n" +" de données ni les tablespaces\n" -#: pg_dumpall.c:563 +#: pg_dumpall.c:564 #, c-format msgid "" " -S, --superuser=NAME superuser user name to use in the dump\n" msgstr "" -" -S, --superuser=NOM indique le nom du super-utilisateur à " +" -S, --superuser=NOM indique le nom du super-utilisateur à " "utiliser\n" " avec le format texte\n" -#: pg_dumpall.c:564 +#: pg_dumpall.c:565 #, c-format msgid "" " -t, --tablespaces-only dump only tablespaces, no databases or " @@ -2615,21 +2641,21 @@ msgid "" msgstr "" " -t, --tablespaces-only sauvegarde uniquement les tablespaces, pas " "les\n" -" bases de données ni les rôles\n" +" bases de données ni les rôles\n" -#: pg_dumpall.c:581 +#: pg_dumpall.c:582 #, c-format msgid " -d, --dbname=CONNSTR connect using connection string\n" msgstr "" -" -d, --dbname=CHAINE_CONN connexion à l'aide de la chaîne de " +" -d, --dbname=CHAINE_CONN connexion à l'aide de la chaîne de " "connexion\n" -#: pg_dumpall.c:583 +#: pg_dumpall.c:584 #, c-format msgid " -l, --database=DBNAME alternative default database\n" -msgstr " -l, --database=NOM_BASE indique une autre base par défaut\n" +msgstr " -l, --database=NOM_BASE indique une autre base par défaut\n" -#: pg_dumpall.c:590 +#: pg_dumpall.c:591 #, c-format msgid "" "\n" @@ -2639,275 +2665,280 @@ msgid "" "\n" msgstr "" "\n" -"Si -f/--file n'est pas utilisé, le script SQL sera envoyé sur la sortie\n" +"Si -f/--file n'est pas utilisé, le script SQL sera envoyé sur la sortie\n" "standard.\n" "\n" -#: pg_dumpall.c:791 +#: pg_dumpall.c:792 #, c-format msgid "%s: role name starting with \"pg_\" skipped (%s)\n" -msgstr "%s : nom de rôle commençant par « pg_ » ignoré (« %s »)\n" +msgstr "%s : nom de rôle commençant par « pg_ » ignoré (« %s »)\n" -#: pg_dumpall.c:1168 +#: pg_dumpall.c:1169 #, c-format msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n" msgstr "" -"%s : n'a pas pu analyser la liste d'ACL (%s) pour le tablespace « %s »\n" +"%s : n'a pas pu analyser la liste d'ACL (%s) pour le tablespace « %s »\n" -#: pg_dumpall.c:1536 +#: pg_dumpall.c:1537 #, c-format msgid "%s: could not parse ACL list (%s) for database \"%s\"\n" msgstr "" -"%s : n'a pas pu analyser la liste d'ACL (%s) pour la base de données « %s " -"»\n" +"%s : n'a pas pu analyser la liste d'ACL (%s) pour la base de données « %s " +"»\n" -#: pg_dumpall.c:1754 +#: pg_dumpall.c:1755 #, c-format msgid "%s: dumping database \"%s\"...\n" -msgstr "%s : sauvegarde de la base de données « %s »...\n" +msgstr "%s : sauvegarde de la base de données « %s »...\n" -#: pg_dumpall.c:1778 +#: pg_dumpall.c:1779 #, c-format msgid "%s: pg_dump failed on database \"%s\", exiting\n" -msgstr "%s : échec de pg_dump sur la base de données « %s », quitte\n" +msgstr "%s : échec de pg_dump sur la base de données « %s », quitte\n" -#: pg_dumpall.c:1787 +#: pg_dumpall.c:1788 #, c-format msgid "%s: could not re-open the output file \"%s\": %s\n" -msgstr "%s : n'a pas pu rouvrir le fichier de sortie « %s » : %s\n" +msgstr "%s : n'a pas pu rouvrir le fichier de sortie « %s » : %s\n" -#: pg_dumpall.c:1832 +#: pg_dumpall.c:1833 #, c-format msgid "%s: running \"%s\"\n" -msgstr "%s : exécute « %s »\n" +msgstr "%s : exécute « %s »\n" -#: pg_dumpall.c:2016 +#: pg_dumpall.c:2017 #, c-format msgid "%s: could not connect to database \"%s\": %s\n" -msgstr "%s : n'a pas pu se connecter à la base de données « %s » : %s\n" +msgstr "%s : n'a pas pu se connecter à la base de données « %s » : %s\n" -#: pg_dumpall.c:2046 +#: pg_dumpall.c:2047 #, c-format msgid "%s: could not get server version\n" msgstr "%s : n'a pas pu obtenir la version du serveur\n" -#: pg_dumpall.c:2052 +#: pg_dumpall.c:2053 #, c-format msgid "%s: could not parse server version \"%s\"\n" -msgstr "%s : n'a pas pu analyser la version du serveur « %s »\n" +msgstr "%s : n'a pas pu analyser la version du serveur « %s »\n" -#: pg_dumpall.c:2130 pg_dumpall.c:2156 +#: pg_dumpall.c:2131 pg_dumpall.c:2157 #, c-format msgid "%s: executing %s\n" -msgstr "%s : exécute %s\n" +msgstr "%s : exécute %s\n" -#: pg_dumpall.c:2136 pg_dumpall.c:2162 +#: pg_dumpall.c:2137 pg_dumpall.c:2163 #, c-format msgid "%s: query failed: %s" -msgstr "%s : échec de la requête : %s" +msgstr "%s : échec de la requête : %s" -#: pg_dumpall.c:2138 pg_dumpall.c:2164 +#: pg_dumpall.c:2139 pg_dumpall.c:2165 #, c-format msgid "%s: query was: %s\n" -msgstr "%s : la requête était : %s\n" +msgstr "%s : la requête était : %s\n" #: pg_restore.c:305 #, c-format msgid "%s: options -d/--dbname and -f/--file cannot be used together\n" msgstr "" -"%s : les options « -d/--dbname » et « -f/--file » ne peuvent pas être\n" -"utilisées conjointement\n" +"%s : les options « -d/--dbname » et « -f/--file » ne peuvent pas être\n" +"utilisées conjointement\n" #: pg_restore.c:316 #, c-format msgid "" "%s: options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "" -"%s : les options « -s/--schema-only » et « -a/--data-only » ne peuvent pas " -"être\n" -"utilisées conjointement\n" +"%s : les options « -s/--schema-only » et « -a/--data-only » ne peuvent pas " +"être\n" +"utilisées conjointement\n" #: pg_restore.c:323 #, c-format msgid "%s: options -c/--clean and -a/--data-only cannot be used together\n" msgstr "" -"%s : les options « -c/--clean » et « -a/--data-only » ne peuvent pas être\n" -"utilisées conjointement\n" +"%s : les options « -c/--clean » et « -a/--data-only » ne peuvent pas être\n" +"utilisées conjointement\n" + +#: pg_restore.c:330 +#, c-format +msgid "%s: invalid number of parallel jobs\n" +msgstr "%s : nombre de jobs en parallèle invalide\n" + +#: pg_restore.c:338 +#, c-format +msgid "%s: maximum number of parallel jobs is %d\n" +msgstr "%s: le nombre maximum de jobs en parallèle est %d\n" -#: pg_restore.c:331 +#: pg_restore.c:347 #, c-format msgid "%s: cannot specify both --single-transaction and multiple jobs\n" msgstr "" -"%s : les options --single-transaction et -j ne peuvent pas être indiquées\n" -"simultanément\n" +"%s : les options --single-transaction et -j ne peuvent pas être indiquées\n" +"simultanément\n" -#: pg_restore.c:372 +#: pg_restore.c:388 #, c-format msgid "" "unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"t\"\n" msgstr "" -"format d'archive « %s » non reconnu ; merci d'indiquer « c », « d » ou « t " -"»\n" - -#: pg_restore.c:404 -#, c-format -msgid "%s: maximum number of parallel jobs is %d\n" -msgstr "%s: le nombre maximum de jobs en parallèle est %d\n" +"format d'archive « %s » non reconnu ; merci d'indiquer « c », « d » ou « t " +"»\n" -#: pg_restore.c:422 +#: pg_restore.c:428 #, c-format msgid "WARNING: errors ignored on restore: %d\n" -msgstr "ATTENTION : erreurs ignorées lors de la restauration : %d\n" +msgstr "ATTENTION : erreurs ignorées lors de la restauration : %d\n" -#: pg_restore.c:436 +#: pg_restore.c:442 #, c-format msgid "" "%s restores a PostgreSQL database from an archive created by pg_dump.\n" "\n" msgstr "" -"%s restaure une base de données PostgreSQL à partir d'une archive créée " +"%s restaure une base de données PostgreSQL à partir d'une archive créée " "par\n" "pg_dump.\n" "\n" -#: pg_restore.c:438 +#: pg_restore.c:444 #, c-format msgid " %s [OPTION]... [FILE]\n" msgstr " %s [OPTION]... [FICHIER]\n" -#: pg_restore.c:441 +#: pg_restore.c:447 #, c-format msgid " -d, --dbname=NAME connect to database name\n" msgstr "" -" -d, --dbname=NOM nom de la base de données utilisée pour la\n" +" -d, --dbname=NOM nom de la base de données utilisée pour la\n" " connexion\n" -#: pg_restore.c:442 +#: pg_restore.c:448 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=NOMFICHIER nom du fichier de sortie\n" -#: pg_restore.c:443 +#: pg_restore.c:449 #, c-format msgid " -F, --format=c|d|t backup file format (should be automatic)\n" msgstr "" " -F, --format=c|d|t format du fichier de sauvegarde (devrait " -"être\n" +"être\n" " automatique)\n" -#: pg_restore.c:444 +#: pg_restore.c:450 #, c-format msgid " -l, --list print summarized TOC of the archive\n" msgstr "" -" -l, --list affiche la table des matières de l'archive " +" -l, --list affiche la table des matières de l'archive " "(TOC)\n" -#: pg_restore.c:445 +#: pg_restore.c:451 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose mode verbeux\n" -#: pg_restore.c:446 +#: pg_restore.c:452 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version affiche la version puis quitte\n" -#: pg_restore.c:447 +#: pg_restore.c:453 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help affiche cette aide puis quitte\n" -#: pg_restore.c:449 +#: pg_restore.c:455 #, c-format msgid "" "\n" "Options controlling the restore:\n" msgstr "" "\n" -"Options contrôlant la restauration :\n" +"Options contrôlant la restauration :\n" -#: pg_restore.c:450 +#: pg_restore.c:456 #, c-format msgid " -a, --data-only restore only the data, no schema\n" msgstr "" -" -a, --data-only restaure uniquement les données, pas la\n" +" -a, --data-only restaure uniquement les données, pas la\n" " structure\n" -#: pg_restore.c:452 +#: pg_restore.c:458 #, c-format msgid " -C, --create create the target database\n" -msgstr " -C, --create crée la base de données cible\n" +msgstr " -C, --create crée la base de données cible\n" -#: pg_restore.c:453 +#: pg_restore.c:459 #, c-format msgid " -e, --exit-on-error exit on error, default is to continue\n" msgstr "" -" -e, --exit-on-error quitte en cas d'erreur, continue par défaut\n" +" -e, --exit-on-error quitte en cas d'erreur, continue par défaut\n" -#: pg_restore.c:454 +#: pg_restore.c:460 #, c-format msgid " -I, --index=NAME restore named index\n" -msgstr " -I, --index=NOM restaure l'index indiqué\n" +msgstr " -I, --index=NOM restaure l'index indiqué\n" -#: pg_restore.c:455 +#: pg_restore.c:461 #, c-format msgid "" " -j, --jobs=NUM use this many parallel jobs to restore\n" msgstr "" -" -j, --jobs=NUMERO utilise ce nombre de jobs en parallèle pour\n" +" -j, --jobs=NUMERO utilise ce nombre de jobs en parallèle pour\n" " la restauration\n" -#: pg_restore.c:456 +#: pg_restore.c:462 #, c-format msgid "" " -L, --use-list=FILENAME use table of contents from this file for\n" " selecting/ordering output\n" msgstr "" -" -L, --use-list=NOMFICHIER utilise la table des matières à partir\n" -" de ce fichier pour sélectionner/trier\n" +" -L, --use-list=NOMFICHIER utilise la table des matières à partir\n" +" de ce fichier pour sélectionner/trier\n" " la sortie\n" -#: pg_restore.c:458 +#: pg_restore.c:464 #, c-format msgid " -n, --schema=NAME restore only objects in this schema\n" msgstr "" -" -n, --schema=NOM restaure uniquement les objets de ce schéma\n" +" -n, --schema=NOM restaure uniquement les objets de ce schéma\n" -#: pg_restore.c:460 +#: pg_restore.c:466 #, c-format msgid " -P, --function=NAME(args) restore named function\n" -msgstr " -P, --function=NOM(args) restaure la fonction indiquée\n" +msgstr " -P, --function=NOM(args) restaure la fonction indiquée\n" -#: pg_restore.c:461 +#: pg_restore.c:467 #, c-format msgid " -s, --schema-only restore only the schema, no data\n" msgstr "" " -s, --schema-only restaure uniquement la structure, pas les\n" -" données\n" +" données\n" -#: pg_restore.c:462 +#: pg_restore.c:468 #, c-format msgid "" " -S, --superuser=NAME superuser user name to use for disabling " "triggers\n" msgstr "" -" -S, --superuser=NOM indique le nom du super-utilisateur à\n" -" utiliser pour désactiver les triggers\n" +" -S, --superuser=NOM indique le nom du super-utilisateur à\n" +" utiliser pour désactiver les triggers\n" -#: pg_restore.c:463 +#: pg_restore.c:469 #, c-format msgid "" " -t, --table=NAME restore named relation (table, view, etc.)\n" msgstr "" -" -t, --table=NOM restaure la relation indiquée (table, vue, " +" -t, --table=NOM restaure la relation indiquée (table, vue, " "etc)\n" -#: pg_restore.c:464 +#: pg_restore.c:470 #, c-format msgid " -T, --trigger=NAME restore named trigger\n" -msgstr " -T, --trigger=NOM restaure le trigger indiqué\n" +msgstr " -T, --trigger=NOM restaure le trigger indiqué\n" -#: pg_restore.c:465 +#: pg_restore.c:471 #, c-format msgid "" " -x, --no-privileges skip restoration of access privileges (grant/" @@ -2917,56 +2948,56 @@ msgstr "" "objets\n" " (grant/revoke)\n" -#: pg_restore.c:466 +#: pg_restore.c:472 #, c-format msgid " -1, --single-transaction restore as a single transaction\n" msgstr " -1, --single-transaction restaure dans une seule transaction\n" -#: pg_restore.c:468 +#: pg_restore.c:474 #, c-format msgid " --enable-row-security enable row security\n" -msgstr " --enable-row-security active la sécurité niveau ligne\n" +msgstr " --enable-row-security active la sécurité niveau ligne\n" -#: pg_restore.c:470 +#: pg_restore.c:476 #, c-format msgid "" " --no-data-for-failed-tables do not restore data of tables that could not " "be\n" " created\n" msgstr "" -" --no-data-for-failed-tables ne restaure pas les données des tables qui\n" -" n'ont pas pu être créées\n" +" --no-data-for-failed-tables ne restaure pas les données des tables qui\n" +" n'ont pas pu être créées\n" -#: pg_restore.c:472 +#: pg_restore.c:478 #, c-format msgid " --no-security-labels do not restore security labels\n" msgstr "" -" --no-security-labels ne restaure pas les labels de sécurité\n" +" --no-security-labels ne restaure pas les labels de sécurité\n" -#: pg_restore.c:473 +#: pg_restore.c:479 #, c-format msgid " --no-tablespaces do not restore tablespace assignments\n" msgstr "" " --no-tablespaces ne restaure pas les affectations de\n" " tablespaces\n" -#: pg_restore.c:474 +#: pg_restore.c:480 #, c-format msgid "" " --section=SECTION restore named section (pre-data, data, or " "post-data)\n" msgstr "" -" --section=SECTION restaure la section indiquée (pre-data, " +" --section=SECTION restaure la section indiquée (pre-data, " "data\n" " ou post-data)\n" -#: pg_restore.c:487 +#: pg_restore.c:493 #, c-format msgid " --role=ROLENAME do SET ROLE before restore\n" msgstr "" -" --role=NOMROLE exécute SET ROLE avant la restauration\n" +" --role=NOMROLE exécute SET ROLE avant la restauration\n" -#: pg_restore.c:489 +#: pg_restore.c:495 #, c-format msgid "" "\n" @@ -2975,11 +3006,11 @@ msgid "" "multiple times to select multiple objects.\n" msgstr "" "\n" -"Les options -I, -n, -P, -t, -T et --section peuvent être combinées et " -"indiquées\n" -"plusieurs fois pour sélectionner plusieurs objets.\n" +"Les options -I, -n, -P, -t, -T et --section peuvent être combinées et " +"indiquées\n" +"plusieurs fois pour sélectionner plusieurs objets.\n" -#: pg_restore.c:492 +#: pg_restore.c:498 #, c-format msgid "" "\n" @@ -2987,153 +3018,116 @@ msgid "" "\n" msgstr "" "\n" -"Si aucun nom de fichier n'est fourni en entrée, alors l'entrée standard " +"Si aucun nom de fichier n'est fourni en entrée, alors l'entrée standard " "est\n" -"utilisée.\n" +"utilisée.\n" "\n" -#~ msgid "could not change directory to \"%s\"" -#~ msgstr "n'a pas pu accéder au répertoire « %s »" - -#~ msgid "cannot duplicate null pointer\n" -#~ msgstr "ne peut pas dupliquer un pointeur nul\n" - -#~ msgid "worker process crashed: status %d\n" -#~ msgstr "crash du processus worker : statut %d\n" - -#~ msgid "parallel_restore should not return\n" -#~ msgstr "parallel_restore ne devrait pas retourner\n" - -#~ msgid "could not create worker thread: %s\n" -#~ msgstr "n'a pas pu créer le fil de travail: %s\n" +#~ msgid "worker is terminating\n" +#~ msgstr "le worker est en cours d'arrêt\n" -#~ msgid "could not parse version string \"%s\"\n" -#~ msgstr "n'a pas pu analyser la chaîne de version « %s »\n" +#~ msgid "could not get relation name for OID %u: %s\n" +#~ msgstr "n'a pas pu obtenir le nom de la relation pour l'OID %u: %s\n" -#~ msgid "%s: could not parse version \"%s\"\n" -#~ msgstr "%s : n'a pas pu analyser la version « %s »\n" +#~ msgid "unrecognized command on communication channel: %s\n" +#~ msgstr "commande inconnue sur le canal de communucation: %s\n" -#~ msgid "-C and -c are incompatible options\n" -#~ msgstr "-C et -c sont des options incompatibles\n" +#~ msgid "terminated by user\n" +#~ msgstr "terminé par l'utilisateur\n" -#~ msgid "" -#~ "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n" -#~ msgstr "" -#~ "instruction COPY invalide -- n'a pas pu trouver « copy » dans la chaîne " -#~ "« %s »\n" +#~ msgid "error in ListenToWorkers(): %s\n" +#~ msgstr "erreur dans ListenToWorkers(): %s\n" -#~ msgid "" -#~ "invalid COPY statement -- could not find \"from stdin\" in string \"%s\" " -#~ "starting at position %lu\n" -#~ msgstr "" -#~ "instruction COPY invalide -- n'a pas pu trouver « from stdin » dans la\n" -#~ "chaîne « %s » à partir de la position %lu\n" +#~ msgid "archive member too large for tar format\n" +#~ msgstr "membre de l'archive trop volumineux pour le format tar\n" -#~ msgid "requested %d byte, got %d from lookahead and %d from file\n" -#~ msgid_plural "requested %d bytes, got %d from lookahead and %d from file\n" -#~ msgstr[0] "%d octet requis, %d obtenu de « lookahead » et %d du fichier\n" -#~ msgstr[1] "" -#~ "%d octets requis, %d obtenus de « lookahead » et %d du fichier\n" +#~ msgid "could not open output file \"%s\" for writing\n" +#~ msgstr "n'a pas pu ouvrir le fichier de sauvegarde « %s » en écriture\n" -#~ msgid "read %lu byte into lookahead buffer\n" -#~ msgid_plural "read %lu bytes into lookahead buffer\n" -#~ msgstr[0] "lecture de %lu octet dans le tampon prévisionnel\n" -#~ msgstr[1] "lecture de %lu octets dans le tampon prévisionnel\n" +#~ msgid "could not write to output file: %s\n" +#~ msgstr "n'a pas pu écrire dans le fichier de sauvegarde : %s\n" -#~ msgid "query returned %d rows instead of one: %s\n" -#~ msgstr "la requête a renvoyé %d lignes au lieu d'une seule : %s\n" +#~ msgid "could not write to custom output routine\n" +#~ msgstr "n'a pas pu écrire vers la routine de sauvegarde personnalisée\n" -#~ msgid "no label definitions found for enum ID %u\n" -#~ msgstr "aucune définition de label trouvée pour l'ID enum %u\n" +#~ msgid "unexpected end of file\n" +#~ msgstr "fin de fichier inattendu\n" -#~ msgid "compression support is disabled in this format\n" -#~ msgstr "le support de la compression est désactivé avec ce format\n" +#~ msgid "could not write byte: %s\n" +#~ msgstr "n'a pas pu écrire un octet : %s\n" -#~ msgid "could not parse ACL (%s) for large object %u" -#~ msgstr "n'a pas pu analyser la liste ACL (%s) du « Large Object » %u" +#~ msgid "could not write byte\n" +#~ msgstr "n'a pas pu écrire l'octet\n" -#~ msgid "saving large object properties\n" -#~ msgstr "sauvegarde des propriétés des « Large Objects »\n" +#~ msgid "could not write null block at end of tar archive\n" +#~ msgstr "n'a pas pu écrire le bloc nul à la fin de l'archive tar\n" -#~ msgid "dumpBlobs(): could not open large object %u: %s" -#~ msgstr "dumpBlobs() : n'a pas pu ouvrir le « Large Object » %u : %s" +#~ msgid "could not output padding at end of tar member\n" +#~ msgstr "n'a pas pu remplir la fin du membre de tar\n" -#~ msgid "" -#~ "dumping a specific TOC data block out of order is not supported without " -#~ "ID on this input stream (fseek required)\n" +#~ msgid "mismatch in actual vs. predicted file position (%s vs. %s)\n" #~ msgstr "" -#~ "la sauvegarde d'un bloc de données spécifique du TOC dans le désordre " -#~ "n'est\n" -#~ "pas supporté sans identifiant sur ce flux d'entrée (fseek requis)\n" - -#~ msgid "query returned no rows: %s\n" -#~ msgstr "la requête n'a renvoyé aucune ligne : %s\n" - -#~ msgid "%s: invalid -X option -- %s\n" -#~ msgstr "%s : option -X invalide -- %s\n" +#~ "pas de correspondance entre la position réelle et celle prévue du " +#~ "fichier\n" +#~ "(%s vs. %s)\n" -#~ msgid "cannot reopen non-seekable file\n" -#~ msgstr "ne peut pas rouvrir le fichier non cherchable\n" +#~ msgid " --help show this help, then exit\n" +#~ msgstr " --help affiche cette aide puis quitte\n" -#~ msgid "cannot reopen stdin\n" -#~ msgstr "ne peut pas rouvrir stdin\n" +#~ msgid "" +#~ " --version output version information, then exit\n" +#~ msgstr " --version affiche la version puis quitte\n" -#~ msgid "%s: out of memory\n" -#~ msgstr "%s : mémoire épuisée\n" +#~ msgid "*** aborted because of error\n" +#~ msgstr "*** interrompu du fait d'erreurs\n" -#~ msgid "" -#~ " --use-set-session-authorization\n" -#~ " use SET SESSION AUTHORIZATION commands " -#~ "instead of\n" -#~ " ALTER OWNER commands to set ownership\n" -#~ msgstr "" -#~ " --use-set-session-authorization\n" -#~ " utilise les commandes SET SESSION " -#~ "AUTHORIZATION\n" -#~ " au lieu des commandes ALTER OWNER pour " -#~ "les\n" -#~ " modifier les propriétaires\n" +#~ msgid "missing pg_database entry for database \"%s\"\n" +#~ msgstr "entrée manquante dans pg_database pour la base de données « %s »\n" #~ msgid "" -#~ " --disable-triggers disable triggers during data-only restore\n" +#~ "query returned more than one (%d) pg_database entry for database \"%s\"\n" #~ msgstr "" -#~ " --disable-triggers désactiver les déclencheurs lors de la\n" -#~ " restauration des données seules\n" +#~ "la requête a renvoyé plusieurs (%d) entrées pg_database pour la base de\n" +#~ "données « %s »\n" -#~ msgid " -O, --no-owner skip restoration of object ownership\n" -#~ msgstr "" -#~ " -O, --no-owner omettre la restauration des possessions " -#~ "des\n" -#~ " objets\n" +#~ msgid "dumpDatabase(): could not find pg_largeobject.relfrozenxid\n" +#~ msgstr "dumpDatabase() : n'a pas pu trouver pg_largeobject.relfrozenxid\n" #~ msgid "" -#~ " -c, --clean clean (drop) database objects before " -#~ "recreating\n" +#~ "dumpDatabase(): could not find pg_largeobject_metadata.relfrozenxid\n" #~ msgstr "" -#~ " -c, --clean nettoie/supprime les bases de données avant " -#~ "de\n" -#~ " les créer\n" +#~ "dumpDatabase() : n'a pas pu trouver pg_largeobject_metadata." +#~ "relfrozenxid\n" -#~ msgid " --version output version information, then exit\n" -#~ msgstr " --version affiche la version et quitte\n" +#~ msgid "query returned %d foreign server entry for foreign table \"%s\"\n" +#~ msgid_plural "" +#~ "query returned %d foreign server entries for foreign table \"%s\"\n" +#~ msgstr[0] "" +#~ "la requête a renvoyé %d entrée de serveur distant pour la table distante " +#~ "« %s »\n" +#~ msgstr[1] "" +#~ "la requête a renvoyé %d entrées de serveurs distants pour la table " +#~ "distante « %s »\n" -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help affiche cette aide et quitte\n" +#~ msgid "missing pg_database entry for this database\n" +#~ msgstr "entrée pg_database manquante pour cette base de données\n" -#~ msgid "restoring large object OID %u\n" -#~ msgstr "restauration du « Large Object » d'OID %u\n" +#~ msgid "found more than one pg_database entry for this database\n" +#~ msgstr "" +#~ "a trouvé plusieurs entrées dans pg_database pour cette base de données\n" -#~ msgid "could not close large object file\n" -#~ msgstr "n'a pas pu fermer le fichier du « Large Object »\n" +#~ msgid "could not find entry for pg_indexes in pg_class\n" +#~ msgstr "n'a pas pu trouver l'entrée de pg_indexes dans pg_class\n" -#~ msgid "could not open large object TOC for output: %s\n" -#~ msgstr "n'a pas pu ouvrir la TOC du « Large Object » en sortie : %s\n" +#~ msgid "found more than one entry for pg_indexes in pg_class\n" +#~ msgstr "" +#~ "a trouvé plusieurs entrées pour pg_indexes dans la table pg_class\n" -#~ msgid "could not open large object TOC for input: %s\n" -#~ msgstr "n'a pas pu ouvrir la TOC du « Large Object » en entrée : %s\n" +#~ msgid "SQL command failed\n" +#~ msgstr "la commande SQL a échoué\n" -#~ msgid "could not close data file after reading\n" -#~ msgstr "n'a pas pu fermer le fichier de données après lecture\n" +#~ msgid "file archiver" +#~ msgstr "programme d'archivage de fichiers" #~ msgid "" #~ "WARNING:\n" @@ -3141,113 +3135,150 @@ msgstr "" #~ " normal use. Files will be written in the current working directory.\n" #~ msgstr "" #~ "ATTENTION :\n" -#~ " Ce format est présent dans un but de démonstration ; il n'est pas " -#~ "prévu\n" -#~ " pour une utilisation normale. Les fichiers seront écrits dans le\n" -#~ " répertoire actuel.\n" +#~ " Ce format est présent dans un but de démonstration ; il n'est pas " +#~ "prévu\n" +#~ " pour une utilisation normale. Les fichiers seront écrits dans le\n" +#~ " répertoire actuel.\n" -#~ msgid "file archiver" -#~ msgstr "programme d'archivage de fichiers" +#~ msgid "could not close data file after reading\n" +#~ msgstr "n'a pas pu fermer le fichier de données après lecture\n" -#~ msgid "SQL command failed\n" -#~ msgstr "la commande SQL a échoué\n" +#~ msgid "could not open large object TOC for input: %s\n" +#~ msgstr "n'a pas pu ouvrir la TOC du « Large Object » en entrée : %s\n" -#~ msgid "found more than one entry for pg_indexes in pg_class\n" -#~ msgstr "" -#~ "a trouvé plusieurs entrées pour pg_indexes dans la table pg_class\n" +#~ msgid "could not open large object TOC for output: %s\n" +#~ msgstr "n'a pas pu ouvrir la TOC du « Large Object » en sortie : %s\n" -#~ msgid "could not find entry for pg_indexes in pg_class\n" -#~ msgstr "n'a pas pu trouver l'entrée de pg_indexes dans pg_class\n" +#~ msgid "could not close large object file\n" +#~ msgstr "n'a pas pu fermer le fichier du « Large Object »\n" -#~ msgid "found more than one pg_database entry for this database\n" -#~ msgstr "" -#~ "a trouvé plusieurs entrées dans pg_database pour cette base de données\n" +#~ msgid "restoring large object OID %u\n" +#~ msgstr "restauration du « Large Object » d'OID %u\n" -#~ msgid "missing pg_database entry for this database\n" -#~ msgstr "entrée pg_database manquante pour cette base de données\n" +#~ msgid " --help show this help, then exit\n" +#~ msgstr " --help affiche cette aide et quitte\n" -#~ msgid "query returned %d foreign server entry for foreign table \"%s\"\n" -#~ msgid_plural "" -#~ "query returned %d foreign server entries for foreign table \"%s\"\n" -#~ msgstr[0] "" -#~ "la requête a renvoyé %d entrée de serveur distant pour la table distante " -#~ "« %s »\n" -#~ msgstr[1] "" -#~ "la requête a renvoyé %d entrées de serveurs distants pour la table " -#~ "distante « %s »\n" +#~ msgid " --version output version information, then exit\n" +#~ msgstr " --version affiche la version et quitte\n" #~ msgid "" -#~ "dumpDatabase(): could not find pg_largeobject_metadata.relfrozenxid\n" +#~ " -c, --clean clean (drop) database objects before " +#~ "recreating\n" #~ msgstr "" -#~ "dumpDatabase() : n'a pas pu trouver pg_largeobject_metadata." -#~ "relfrozenxid\n" +#~ " -c, --clean nettoie/supprime les bases de données avant " +#~ "de\n" +#~ " les créer\n" -#~ msgid "dumpDatabase(): could not find pg_largeobject.relfrozenxid\n" -#~ msgstr "dumpDatabase() : n'a pas pu trouver pg_largeobject.relfrozenxid\n" +#~ msgid " -O, --no-owner skip restoration of object ownership\n" +#~ msgstr "" +#~ " -O, --no-owner omettre la restauration des possessions " +#~ "des\n" +#~ " objets\n" #~ msgid "" -#~ "query returned more than one (%d) pg_database entry for database \"%s\"\n" +#~ " --disable-triggers disable triggers during data-only restore\n" #~ msgstr "" -#~ "la requête a renvoyé plusieurs (%d) entrées pg_database pour la base de\n" -#~ "données « %s »\n" +#~ " --disable-triggers désactiver les déclencheurs lors de la\n" +#~ " restauration des données seules\n" -#~ msgid "missing pg_database entry for database \"%s\"\n" -#~ msgstr "entrée manquante dans pg_database pour la base de données « %s »\n" +#~ msgid "" +#~ " --use-set-session-authorization\n" +#~ " use SET SESSION AUTHORIZATION commands " +#~ "instead of\n" +#~ " ALTER OWNER commands to set ownership\n" +#~ msgstr "" +#~ " --use-set-session-authorization\n" +#~ " utilise les commandes SET SESSION " +#~ "AUTHORIZATION\n" +#~ " au lieu des commandes ALTER OWNER pour " +#~ "les\n" +#~ " modifier les propriétaires\n" -#~ msgid "*** aborted because of error\n" -#~ msgstr "*** interrompu du fait d'erreurs\n" +#~ msgid "%s: out of memory\n" +#~ msgstr "%s : mémoire épuisée\n" -#~ msgid "" -#~ " --version output version information, then exit\n" -#~ msgstr " --version affiche la version puis quitte\n" +#~ msgid "cannot reopen stdin\n" +#~ msgstr "ne peut pas rouvrir stdin\n" -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help affiche cette aide puis quitte\n" +#~ msgid "cannot reopen non-seekable file\n" +#~ msgstr "ne peut pas rouvrir le fichier non cherchable\n" -#~ msgid "mismatch in actual vs. predicted file position (%s vs. %s)\n" +#~ msgid "%s: invalid -X option -- %s\n" +#~ msgstr "%s : option -X invalide -- %s\n" + +#~ msgid "query returned no rows: %s\n" +#~ msgstr "la requête n'a renvoyé aucune ligne : %s\n" + +#~ msgid "" +#~ "dumping a specific TOC data block out of order is not supported without " +#~ "ID on this input stream (fseek required)\n" #~ msgstr "" -#~ "pas de correspondance entre la position réelle et celle prévue du " -#~ "fichier\n" -#~ "(%s vs. %s)\n" +#~ "la sauvegarde d'un bloc de données spécifique du TOC dans le désordre " +#~ "n'est\n" +#~ "pas supporté sans identifiant sur ce flux d'entrée (fseek requis)\n" -#~ msgid "could not output padding at end of tar member\n" -#~ msgstr "n'a pas pu remplir la fin du membre de tar\n" +#~ msgid "dumpBlobs(): could not open large object %u: %s" +#~ msgstr "dumpBlobs() : n'a pas pu ouvrir le « Large Object » %u : %s" -#~ msgid "could not write null block at end of tar archive\n" -#~ msgstr "n'a pas pu écrire le bloc nul à la fin de l'archive tar\n" +#~ msgid "saving large object properties\n" +#~ msgstr "sauvegarde des propriétés des « Large Objects »\n" -#~ msgid "could not write byte\n" -#~ msgstr "n'a pas pu écrire l'octet\n" +#~ msgid "could not parse ACL (%s) for large object %u" +#~ msgstr "n'a pas pu analyser la liste ACL (%s) du « Large Object » %u" -#~ msgid "could not write byte: %s\n" -#~ msgstr "n'a pas pu écrire un octet : %s\n" +#~ msgid "compression support is disabled in this format\n" +#~ msgstr "le support de la compression est désactivé avec ce format\n" -#~ msgid "unexpected end of file\n" -#~ msgstr "fin de fichier inattendu\n" +#~ msgid "no label definitions found for enum ID %u\n" +#~ msgstr "aucune définition de label trouvée pour l'ID enum %u\n" -#~ msgid "could not write to custom output routine\n" -#~ msgstr "n'a pas pu écrire vers la routine de sauvegarde personnalisée\n" +#~ msgid "query returned %d rows instead of one: %s\n" +#~ msgstr "la requête a renvoyé %d lignes au lieu d'une seule : %s\n" -#~ msgid "could not write to output file: %s\n" -#~ msgstr "n'a pas pu écrire dans le fichier de sauvegarde : %s\n" +#~ msgid "read %lu byte into lookahead buffer\n" +#~ msgid_plural "read %lu bytes into lookahead buffer\n" +#~ msgstr[0] "lecture de %lu octet dans le tampon prévisionnel\n" +#~ msgstr[1] "lecture de %lu octets dans le tampon prévisionnel\n" -#~ msgid "could not open output file \"%s\" for writing\n" -#~ msgstr "n'a pas pu ouvrir le fichier de sauvegarde « %s » en écriture\n" +#~ msgid "requested %d byte, got %d from lookahead and %d from file\n" +#~ msgid_plural "requested %d bytes, got %d from lookahead and %d from file\n" +#~ msgstr[0] "%d octet requis, %d obtenu de « lookahead » et %d du fichier\n" +#~ msgstr[1] "" +#~ "%d octets requis, %d obtenus de « lookahead » et %d du fichier\n" -#~ msgid "archive member too large for tar format\n" -#~ msgstr "membre de l'archive trop volumineux pour le format tar\n" +#~ msgid "" +#~ "invalid COPY statement -- could not find \"from stdin\" in string \"%s\" " +#~ "starting at position %lu\n" +#~ msgstr "" +#~ "instruction COPY invalide -- n'a pas pu trouver « from stdin » dans la\n" +#~ "chaîne « %s » à partir de la position %lu\n" -#~ msgid "error in ListenToWorkers(): %s\n" -#~ msgstr "erreur dans ListenToWorkers(): %s\n" +#~ msgid "" +#~ "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n" +#~ msgstr "" +#~ "instruction COPY invalide -- n'a pas pu trouver « copy » dans la chaîne " +#~ "« %s »\n" -#~ msgid "terminated by user\n" -#~ msgstr "terminé par l'utilisateur\n" +#~ msgid "-C and -c are incompatible options\n" +#~ msgstr "-C et -c sont des options incompatibles\n" -#~ msgid "unrecognized command on communication channel: %s\n" -#~ msgstr "commande inconnue sur le canal de communucation: %s\n" +#~ msgid "%s: could not parse version \"%s\"\n" +#~ msgstr "%s : n'a pas pu analyser la version « %s »\n" -#~ msgid "could not get relation name for OID %u: %s\n" -#~ msgstr "n'a pas pu obtenir le nom de la relation pour l'OID %u: %s\n" +#~ msgid "could not parse version string \"%s\"\n" +#~ msgstr "n'a pas pu analyser la chaîne de version « %s »\n" -#~ msgid "worker is terminating\n" -#~ msgstr "le worker est en cours d'arrêt\n" +#~ msgid "could not create worker thread: %s\n" +#~ msgstr "n'a pas pu créer le fil de travail: %s\n" + +#~ msgid "parallel_restore should not return\n" +#~ msgstr "parallel_restore ne devrait pas retourner\n" + +#~ msgid "worker process crashed: status %d\n" +#~ msgstr "crash du processus worker : statut %d\n" + +#~ msgid "cannot duplicate null pointer\n" +#~ msgstr "ne peut pas dupliquer un pointeur nul\n" + +#~ msgid "could not change directory to \"%s\"" +#~ msgstr "n'a pas pu accéder au répertoire « %s »" diff --git a/src/bin/pg_dump/po/it.po b/src/bin/pg_dump/po/it.po index d668a63b55..2e4eae9918 100644 --- a/src/bin/pg_dump/po/it.po +++ b/src/bin/pg_dump/po/it.po @@ -24,8 +24,8 @@ msgid "" msgstr "" "Project-Id-Version: pg_dump (Postgresql) 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-04-17 00:14+0000\n" -"PO-Revision-Date: 2016-04-17 20:51+0100\n" +"POT-Creation-Date: 2017-02-09 21:14+0000\n" +"PO-Revision-Date: 2017-04-23 02:51+0100\n" "Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" "Language: it\n" @@ -33,7 +33,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.8.7.1\n" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, c-format @@ -71,8 +71,8 @@ msgid "pclose failed: %s" msgstr "pclose fallita: %s" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 -#: ../../common/fe_memutils.c:98 pg_backup_db.c:137 pg_backup_db.c:188 -#: pg_backup_db.c:245 pg_backup_db.c:287 +#: ../../common/fe_memutils.c:98 pg_backup_db.c:158 pg_backup_db.c:213 +#: pg_backup_db.c:272 pg_backup_db.c:314 #, c-format msgid "out of memory\n" msgstr "memoria esaurita\n" @@ -303,88 +303,78 @@ msgid "could not parse numeric array \"%s\": invalid character in number\n" msgstr "non è stato possibile interpretare l'array numerico \"%s\": caratteri non validi nel numero\n" #. translator: this is a module name -#: compress_io.c:79 +#: compress_io.c:78 msgid "compress_io" msgstr "compress_io" -#: compress_io.c:115 +#: compress_io.c:114 #, c-format msgid "invalid compression code: %d\n" msgstr "codice di compressione non valido: %d\n" -#: compress_io.c:139 compress_io.c:175 compress_io.c:196 compress_io.c:529 -#: compress_io.c:572 +#: compress_io.c:138 compress_io.c:174 compress_io.c:192 compress_io.c:519 +#: compress_io.c:562 #, c-format msgid "not built with zlib support\n" msgstr "compilato senza il supporto a zlib\n" -#: compress_io.c:246 compress_io.c:348 +#: compress_io.c:242 compress_io.c:344 #, c-format msgid "could not initialize compression library: %s\n" msgstr "inizializzazione della libreria di compressione fallita: %s\n" -#: compress_io.c:267 +#: compress_io.c:263 #, c-format msgid "could not close compression stream: %s\n" msgstr "chiusura dello stream di compressione fallita: %s\n" -#: compress_io.c:285 +#: compress_io.c:281 #, c-format msgid "could not compress data: %s\n" msgstr "compressione dei dati fallita: %s\n" -#: compress_io.c:368 compress_io.c:384 +#: compress_io.c:361 compress_io.c:377 #, c-format msgid "could not uncompress data: %s\n" msgstr "decompressione dei dati fallita: %s\n" -#: compress_io.c:392 +#: compress_io.c:385 #, c-format msgid "could not close compression library: %s\n" msgstr "chiusura della libreria di compressione fallita: %s\n" -#: compress_io.c:606 compress_io.c:642 pg_backup_custom.c:591 +#: compress_io.c:596 compress_io.c:632 pg_backup_custom.c:591 #: pg_backup_tar.c:561 #, c-format msgid "could not read from input file: %s\n" msgstr "lettura dal file di input fallita: %s\n" -#: compress_io.c:645 pg_backup_custom.c:588 pg_backup_directory.c:552 +#: compress_io.c:635 pg_backup_custom.c:588 pg_backup_directory.c:548 #: pg_backup_tar.c:797 pg_backup_tar.c:821 #, c-format msgid "could not read from input file: end of file\n" msgstr "lettura dal file di input fallita: fine del file\n" -#: parallel.c:77 +#: parallel.c:167 msgid "parallel archiver" msgstr "archiviatore parallelo" -#: parallel.c:140 +#: parallel.c:231 #, c-format msgid "%s: WSAStartup failed: %d\n" msgstr "%s: WSAStartup fallita: %d\n" -#: parallel.c:340 -#, c-format -msgid "worker is terminating\n" -msgstr "il worker sta terminando\n" - -#: parallel.c:530 +#: parallel.c:934 #, c-format msgid "could not create communication channels: %s\n" msgstr "creazione dei canali di comunicazione fallita: %s\n" -#: parallel.c:602 +#: parallel.c:997 #, c-format msgid "could not create worker process: %s\n" msgstr "creazione del processo worker fallita: %s\n" -#: parallel.c:819 -#, c-format -msgid "could not get relation name for OID %u: %s\n" -msgstr "errore nell'ottenere il nome della relazione per l'OID %u: %s\n" - -#: parallel.c:836 +#: parallel.c:1192 #, c-format msgid "" "could not obtain lock on relation \"%s\"\n" @@ -393,77 +383,67 @@ msgstr "" "errore nell'ottenere un lock sulla relazione \"%s\"\n" "Questo di solito vuol dire che qualcuno ha richiesto un lock ACCESS EXCLUSIVE sulla tabella dopo che il processo padre di pg_dump aveva ottenuto il lock ACCESS SHARE iniziale sulla tabella.\n" -#: parallel.c:920 +#: parallel.c:1262 #, c-format -msgid "unrecognized command on communication channel: %s\n" -msgstr "comando sconosciuto sul canale di comunicazione: %s\n" +msgid "unrecognized command received from master: \"%s\"\n" +msgstr "comando sconosciuto ricevuto dal master: \"%s\"\n" -#: parallel.c:953 +#: parallel.c:1300 #, c-format msgid "a worker process died unexpectedly\n" msgstr "un processo worker è morto inaspettatamente\n" -#: parallel.c:980 parallel.c:989 +#: parallel.c:1326 parallel.c:1332 #, c-format -msgid "invalid message received from worker: %s\n" -msgstr "messaggio non valido ricevuto dal worker: %s\n" +msgid "invalid message received from worker: \"%s\"\n" +msgstr "messaggio non valido ricevuto dal worker: \"%s\"\n" -#: parallel.c:986 pg_backup_db.c:355 -#, c-format -msgid "%s" -msgstr "%s" - -#: parallel.c:1038 parallel.c:1082 +#: parallel.c:1389 parallel.c:1440 #, c-format msgid "error processing a parallel work item\n" msgstr "errore nel processo di una unità di lavoro parallela\n" -#: parallel.c:1110 parallel.c:1248 +#: parallel.c:1469 parallel.c:1587 #, c-format msgid "could not write to the communication channel: %s\n" msgstr "scrittura nel canale di comunicazione fallita: %s\n" -#: parallel.c:1159 +#: parallel.c:1547 #, c-format -msgid "terminated by user\n" -msgstr "terminato dall'utente\n" +msgid "select() failed: %s\n" +msgstr "select() fallita: %s\n" -#: parallel.c:1211 -#, c-format -msgid "error in ListenToWorkers(): %s\n" -msgstr "errore in ListenToWorkers(): %s\n" - -#: parallel.c:1336 +#: parallel.c:1672 #, c-format msgid "pgpipe: could not create socket: error code %d\n" msgstr "pgpipe: errore nella creazione del socket: codice di errore %d\n" -#: parallel.c:1347 +#: parallel.c:1683 #, c-format msgid "pgpipe: could not bind: error code %d\n" msgstr "pgpipe: bind fallito: codice di errore %d\n" -#: parallel.c:1354 +#: parallel.c:1690 #, c-format msgid "pgpipe: could not listen: error code %d\n" msgstr "pgpipe: listen fallito: codice di errore %d\n" -#: parallel.c:1361 +#: parallel.c:1697 #, c-format msgid "pgpipe: getsockname() failed: error code %d\n" msgstr "pgpipe: getsockname() fallito: codice di errore %d\n" -#: parallel.c:1372 +#: parallel.c:1708 #, c-format msgid "pgpipe: could not create second socket: error code %d\n" msgstr "pgpipe: creazione del secondo socket fallita: codice di errore %d\n" -#: parallel.c:1381 +#: parallel.c:1717 #, c-format msgid "pgpipe: could not connect socket: error code %d\n" msgstr "pgpipe: connessione del socket fallita: codice di errore %d\n" -#: parallel.c:1388 +#: parallel.c:1726 #, c-format msgid "pgpipe: could not accept connection: error code %d\n" msgstr "pgpipe: accept della connessione fallito: codice di errore %d\n" @@ -473,7 +453,7 @@ msgstr "pgpipe: accept della connessione fallito: codice di errore %d\n" msgid "archiver" msgstr "archiviatore" -#: pg_backup_archiver.c:234 pg_backup_archiver.c:1512 +#: pg_backup_archiver.c:234 pg_backup_archiver.c:1535 #, c-format msgid "could not close output file: %s\n" msgstr "chiusura del file di output fallita: %s\n" @@ -528,435 +508,435 @@ msgstr "ripristino implicito dei soli dati\n" msgid "dropping %s %s\n" msgstr "cancellazione di %s %s\n" -#: pg_backup_archiver.c:646 +#: pg_backup_archiver.c:586 +#, c-format +msgid "WARNING: could not find where to insert IF EXISTS in statement \"%s\"\n" +msgstr "ATTENZIONE: posizione dove inserire IF EXISTS nell'istruzione \"%s\" non trovata\n" + +#: pg_backup_archiver.c:662 #, c-format msgid "setting owner and privileges for %s \"%s.%s\"\n" msgstr "impostazione di proprietario e permessi per %s \"%s.%s\"\n" -#: pg_backup_archiver.c:649 +#: pg_backup_archiver.c:665 #, c-format msgid "setting owner and privileges for %s \"%s\"\n" msgstr "impostazione di proprietario e permessi per %s \"%s\"\n" -#: pg_backup_archiver.c:715 pg_backup_archiver.c:717 +#: pg_backup_archiver.c:731 pg_backup_archiver.c:733 #, c-format msgid "warning from original dump file: %s\n" msgstr "avvertimento dal file originale scaricato: %s\n" -#: pg_backup_archiver.c:726 +#: pg_backup_archiver.c:742 #, c-format msgid "creating %s \"%s.%s\"\n" msgstr "creazione %s \"%s.%s\"\n" -#: pg_backup_archiver.c:729 +#: pg_backup_archiver.c:745 #, c-format msgid "creating %s \"%s\"\n" msgstr "creazione di %s \"%s\"\n" -#: pg_backup_archiver.c:774 +#: pg_backup_archiver.c:797 #, c-format msgid "connecting to new database \"%s\"\n" msgstr "connessione al nuovo database \"%s\"\n" -#: pg_backup_archiver.c:802 +#: pg_backup_archiver.c:825 #, c-format msgid "processing %s\n" msgstr "elaborazione di %s\n" -#: pg_backup_archiver.c:822 +#: pg_backup_archiver.c:845 #, c-format msgid "processing data for table \"%s.%s\"\n" msgstr "elaborazione dati per la tabella \"%s.%s\".\n" -#: pg_backup_archiver.c:884 +#: pg_backup_archiver.c:907 #, c-format msgid "executing %s %s\n" msgstr "esecuzione di %s %s\n" -#: pg_backup_archiver.c:923 +#: pg_backup_archiver.c:946 #, c-format msgid "disabling triggers for %s\n" msgstr "disabilitazione trigger per %s\n" -#: pg_backup_archiver.c:951 +#: pg_backup_archiver.c:974 #, c-format msgid "enabling triggers for %s\n" msgstr "abilitazione trigger per %s\n" -#: pg_backup_archiver.c:981 +#: pg_backup_archiver.c:1004 #, c-format msgid "internal error -- WriteData cannot be called outside the context of a DataDumper routine\n" msgstr "errore interno -- WriteData non può essere chiamata al di fuori del contesto di una routine DataDumper\n" -#: pg_backup_archiver.c:1150 +#: pg_backup_archiver.c:1173 #, c-format msgid "large-object output not supported in chosen format\n" msgstr "emissione dei large object non supportata nel formato scelto\n" -#: pg_backup_archiver.c:1208 +#: pg_backup_archiver.c:1231 #, c-format msgid "restored %d large object\n" msgid_plural "restored %d large objects\n" msgstr[0] "ripristinato %d large object\n" msgstr[1] "ripristinati %d large object\n" -#: pg_backup_archiver.c:1229 pg_backup_tar.c:739 +#: pg_backup_archiver.c:1252 pg_backup_tar.c:739 #, c-format msgid "restoring large object with OID %u\n" msgstr "ripristino del large object con OID %u\n" -#: pg_backup_archiver.c:1241 +#: pg_backup_archiver.c:1264 #, c-format msgid "could not create large object %u: %s" msgstr "creazione il large object %u fallita: %s" -#: pg_backup_archiver.c:1246 pg_dump.c:2997 +#: pg_backup_archiver.c:1269 pg_dump.c:3070 #, c-format msgid "could not open large object %u: %s" msgstr "apertura del large object %u fallita: %s" -#: pg_backup_archiver.c:1304 +#: pg_backup_archiver.c:1327 #, c-format msgid "could not open TOC file \"%s\": %s\n" msgstr "apertura del file TOC \"%s\" fallita: %s\n" -#: pg_backup_archiver.c:1345 +#: pg_backup_archiver.c:1368 #, c-format msgid "WARNING: line ignored: %s\n" msgstr "ATTENZIONE: la riga è stata ignorata: %s\n" -#: pg_backup_archiver.c:1352 +#: pg_backup_archiver.c:1375 #, c-format msgid "could not find entry for ID %d\n" msgstr "non sono state trovate voci per l'ID %d\n" -#: pg_backup_archiver.c:1373 pg_backup_directory.c:230 -#: pg_backup_directory.c:601 +#: pg_backup_archiver.c:1396 pg_backup_directory.c:230 +#: pg_backup_directory.c:597 #, c-format msgid "could not close TOC file: %s\n" msgstr "chiusura del file TOC fallita: %s\n" -#: pg_backup_archiver.c:1482 pg_backup_custom.c:162 pg_backup_directory.c:341 -#: pg_backup_directory.c:587 pg_backup_directory.c:645 -#: pg_backup_directory.c:665 +#: pg_backup_archiver.c:1505 pg_backup_custom.c:162 pg_backup_directory.c:341 +#: pg_backup_directory.c:583 pg_backup_directory.c:641 +#: pg_backup_directory.c:661 #, c-format msgid "could not open output file \"%s\": %s\n" msgstr "apertura del file di output \"%s\" fallita: %s\n" -#: pg_backup_archiver.c:1485 pg_backup_custom.c:169 +#: pg_backup_archiver.c:1508 pg_backup_custom.c:169 #, c-format msgid "could not open output file: %s\n" msgstr "apertura del file di output fallita: %s\n" -#: pg_backup_archiver.c:1591 +#: pg_backup_archiver.c:1614 #, c-format msgid "wrote %lu byte of large object data (result = %lu)\n" msgid_plural "wrote %lu bytes of large object data (result = %lu)\n" msgstr[0] "scritto %lu byte di dati large object (risultato = %lu)\n" msgstr[1] "scritti %lu byte di dati large object (risultato = %lu)\n" -#: pg_backup_archiver.c:1597 +#: pg_backup_archiver.c:1620 #, c-format msgid "could not write to large object (result: %lu, expected: %lu)\n" msgstr "scrittura del large object fallita (risultato: %lu, previsto: %lu)\n" -#: pg_backup_archiver.c:1690 +#: pg_backup_archiver.c:1713 #, c-format msgid "Error while INITIALIZING:\n" msgstr "Errore durante INIZIALIZZAZIONE:\n" -#: pg_backup_archiver.c:1695 +#: pg_backup_archiver.c:1718 #, c-format msgid "Error while PROCESSING TOC:\n" msgstr "Errore durante ELABORAZIONE TOC:\n" -#: pg_backup_archiver.c:1700 +#: pg_backup_archiver.c:1723 #, c-format msgid "Error while FINALIZING:\n" msgstr "Errore durante FINALIZZAZIONE:\n" -#: pg_backup_archiver.c:1705 +#: pg_backup_archiver.c:1728 #, c-format msgid "Error from TOC entry %d; %u %u %s %s %s\n" msgstr "Errore nella voce TOC %d; %u %u %s %s %s\n" -#: pg_backup_archiver.c:1778 +#: pg_backup_archiver.c:1801 #, c-format msgid "bad dumpId\n" msgstr "dumpId errato\n" -#: pg_backup_archiver.c:1799 +#: pg_backup_archiver.c:1822 #, c-format msgid "bad table dumpId for TABLE DATA item\n" msgstr "dumpId di tabella errato per elemento TABLE DATA\n" -#: pg_backup_archiver.c:1891 +#: pg_backup_archiver.c:1914 #, c-format msgid "unexpected data offset flag %d\n" msgstr "flag di offset dati non previsto %d\n" -#: pg_backup_archiver.c:1904 +#: pg_backup_archiver.c:1927 #, c-format msgid "file offset in dump file is too large\n" msgstr "l'offset del file scaricato è troppo grande\n" -#: pg_backup_archiver.c:2017 +#: pg_backup_archiver.c:2040 #, c-format msgid "attempting to ascertain archive format\n" msgstr "tentativo di accertamento del formato dell'archivio\n" -#: pg_backup_archiver.c:2043 pg_backup_archiver.c:2053 +#: pg_backup_archiver.c:2066 pg_backup_archiver.c:2076 #, c-format msgid "directory name too long: \"%s\"\n" msgstr "nome della directory troppo lungo: \"%s\"\n" -#: pg_backup_archiver.c:2061 +#: pg_backup_archiver.c:2084 #, c-format msgid "directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not exist)\n" msgstr "la directory \"%s\" non sembra un archivio valido (\"toc.dat\" non esiste)\n" -#: pg_backup_archiver.c:2069 pg_backup_custom.c:181 pg_backup_custom.c:770 -#: pg_backup_directory.c:214 pg_backup_directory.c:402 +#: pg_backup_archiver.c:2092 pg_backup_custom.c:181 pg_backup_custom.c:770 +#: pg_backup_directory.c:214 pg_backup_directory.c:399 #, c-format msgid "could not open input file \"%s\": %s\n" msgstr "apertura del file di input \"%s\" fallita: %s\n" -#: pg_backup_archiver.c:2077 pg_backup_custom.c:188 +#: pg_backup_archiver.c:2100 pg_backup_custom.c:188 #, c-format msgid "could not open input file: %s\n" msgstr "apertura del file di input fallita: %s\n" -#: pg_backup_archiver.c:2084 +#: pg_backup_archiver.c:2107 #, c-format msgid "could not read input file: %s\n" msgstr "lettura del file di input fallita: %s\n" -#: pg_backup_archiver.c:2086 +#: pg_backup_archiver.c:2109 #, c-format msgid "input file is too short (read %lu, expected 5)\n" msgstr "il file di input è troppo corto (letti %lu, previsti 5)\n" -#: pg_backup_archiver.c:2169 +#: pg_backup_archiver.c:2192 #, c-format msgid "input file appears to be a text format dump. Please use psql.\n" msgstr "il file di input sembra un dump in formato testo. Prego usare psql.\n" -#: pg_backup_archiver.c:2175 +#: pg_backup_archiver.c:2198 #, c-format msgid "input file does not appear to be a valid archive (too short?)\n" msgstr "il file di input non sembra essere un archivio valido (è troppo corto?)\n" -#: pg_backup_archiver.c:2181 +#: pg_backup_archiver.c:2204 #, c-format msgid "input file does not appear to be a valid archive\n" msgstr "il file di input non sembra essere un archivio valido\n" -#: pg_backup_archiver.c:2201 +#: pg_backup_archiver.c:2224 #, c-format msgid "could not close input file: %s\n" msgstr "chiusura del file di input fallita: %s\n" -#: pg_backup_archiver.c:2218 +#: pg_backup_archiver.c:2241 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "allocazione AH per %s, formato %d\n" -#: pg_backup_archiver.c:2323 +#: pg_backup_archiver.c:2346 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "formato di file \"%d\" sconosciuto\n" -#: pg_backup_archiver.c:2473 +#: pg_backup_archiver.c:2502 #, c-format msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" msgstr "la voce ID %d è fuori dall'intervallo consentito -- possibile corruzione della TOC\n" -#: pg_backup_archiver.c:2589 +#: pg_backup_archiver.c:2618 #, c-format msgid "read TOC entry %d (ID %d) for %s %s\n" msgstr "letta voce TOC %d (ID %d) per %s %s\n" -#: pg_backup_archiver.c:2623 +#: pg_backup_archiver.c:2652 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "codifica sconosciuta \"%s\"\n" -#: pg_backup_archiver.c:2628 +#: pg_backup_archiver.c:2657 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "elemento ENCODING non valido: %s\n" -#: pg_backup_archiver.c:2646 +#: pg_backup_archiver.c:2675 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "elemento STDSTRINGS non valido: %s\n" -#: pg_backup_archiver.c:2661 +#: pg_backup_archiver.c:2690 #, c-format -msgid "Schema \"%s\" not found.\n" -msgstr "Schema \"%s\" non trovato.\n" +msgid "schema \"%s\" not found\n" +msgstr "schema \"%s\" non trovato\n" -#: pg_backup_archiver.c:2668 +#: pg_backup_archiver.c:2697 #, c-format -msgid "Table \"%s\" not found.\n" -msgstr "Tabella \"%s\" non trovata.\n" +msgid "table \"%s\" not found\n" +msgstr "tabella \"%s\" non trovata\n" -#: pg_backup_archiver.c:2675 +#: pg_backup_archiver.c:2704 #, c-format -msgid "Index \"%s\" not found.\n" -msgstr "Indice \"%s\" non trovato.\n" +msgid "index \"%s\" not found\n" +msgstr "indice \"%s\" non trovato\n" -#: pg_backup_archiver.c:2682 +#: pg_backup_archiver.c:2711 #, c-format -msgid "Function \"%s\" not found.\n" -msgstr "Funzione \"%s\" non trovata.\n" +msgid "function \"%s\" not found\n" +msgstr "funzione \"%s\" non trovata\n" -#: pg_backup_archiver.c:2689 +#: pg_backup_archiver.c:2718 #, c-format -msgid "Trigger \"%s\" not found.\n" -msgstr "Trigger \"%s\" non trovato.\n" +msgid "trigger \"%s\" not found\n" +msgstr "trigger \"%s\" non trovato\n" -#: pg_backup_archiver.c:2920 +#: pg_backup_archiver.c:2950 #, c-format msgid "could not set session user to \"%s\": %s" msgstr "impostazione della sessione utente a \"%s\" fallita: %s" -#: pg_backup_archiver.c:2952 +#: pg_backup_archiver.c:2982 #, c-format msgid "could not set default_with_oids: %s" msgstr "impostazione di default_with_oids fallita: %s" -#: pg_backup_archiver.c:3092 +#: pg_backup_archiver.c:3127 #, c-format msgid "could not set search_path to \"%s\": %s" msgstr "impostazione di search_path a \"%s\" fallita: %s" -#: pg_backup_archiver.c:3154 +#: pg_backup_archiver.c:3189 #, c-format msgid "could not set default_tablespace to %s: %s" msgstr "impostazione di default_tablespace a %s fallita: %s" -#: pg_backup_archiver.c:3241 pg_backup_archiver.c:3428 +#: pg_backup_archiver.c:3276 pg_backup_archiver.c:3470 #, c-format msgid "WARNING: don't know how to set owner for object type %s\n" msgstr "ATTENZIONE: non si sa come impostare il proprietario per il tipo di oggetto %s\n" -#: pg_backup_archiver.c:3481 -#, c-format -msgid "WARNING: requested compression not available in this installation -- archive will be uncompressed\n" -msgstr "ATTENZIONE: la compressione richiesta non è disponibile in questa installazione -- l'archivio non sarà compresso\n" - -#: pg_backup_archiver.c:3520 +#: pg_backup_archiver.c:3552 #, c-format msgid "did not find magic string in file header\n" msgstr "magic string non trovata nell'intestazione del file\n" -#: pg_backup_archiver.c:3533 +#: pg_backup_archiver.c:3565 #, c-format msgid "unsupported version (%d.%d) in file header\n" msgstr "versione (%d.%d) non supportata nell'intestazione del file\n" -#: pg_backup_archiver.c:3538 +#: pg_backup_archiver.c:3570 #, c-format msgid "sanity check on integer size (%lu) failed\n" msgstr "verifica sulla dimensione degli interi (%lu) fallita\n" -#: pg_backup_archiver.c:3542 +#: pg_backup_archiver.c:3574 #, c-format msgid "WARNING: archive was made on a machine with larger integers, some operations might fail\n" msgstr "ATTENZIONE: L'archivio è stato creato su una macchina con interi lunghi, alcune operazioni potrebbero fallire\n" -#: pg_backup_archiver.c:3552 +#: pg_backup_archiver.c:3584 #, c-format msgid "expected format (%d) differs from format found in file (%d)\n" msgstr "il formato previsto (%d) differisce dal formato trovato nel file (%d)\n" -#: pg_backup_archiver.c:3568 +#: pg_backup_archiver.c:3600 #, c-format msgid "WARNING: archive is compressed, but this installation does not support compression -- no data will be available\n" msgstr "ATTENZIONE: l'archivio è compresso, ma questa installazione non supporta la compressione -- nessun dato sarà disponibile\n" -#: pg_backup_archiver.c:3586 +#: pg_backup_archiver.c:3618 #, c-format msgid "WARNING: invalid creation date in header\n" msgstr "ATTENZIONE: la data di creazione nell'intestazione non è valida\n" -#: pg_backup_archiver.c:3661 +#: pg_backup_archiver.c:3693 #, c-format msgid "entering restore_toc_entries_prefork\n" msgstr "inizio di restore_toc_entries_prefork\n" -#: pg_backup_archiver.c:3705 +#: pg_backup_archiver.c:3737 #, c-format msgid "processing item %d %s %s\n" msgstr "elaborazione elemento %d %s %s\n" -#: pg_backup_archiver.c:3757 +#: pg_backup_archiver.c:3789 #, c-format msgid "entering restore_toc_entries_parallel\n" msgstr "immissione restore_toc_entries_parallel\n" -#: pg_backup_archiver.c:3805 +#: pg_backup_archiver.c:3837 #, c-format msgid "entering main parallel loop\n" msgstr "inizio del loop principale parallelo\n" -#: pg_backup_archiver.c:3816 +#: pg_backup_archiver.c:3848 #, c-format msgid "skipping item %d %s %s\n" msgstr "saltato l'elemento %d %s %s\n" -#: pg_backup_archiver.c:3826 +#: pg_backup_archiver.c:3858 #, c-format msgid "launching item %d %s %s\n" msgstr "avvio dell'elemento %d %s %s\n" -#: pg_backup_archiver.c:3884 +#: pg_backup_archiver.c:3914 #, c-format msgid "finished main parallel loop\n" msgstr "loop principale parallelo terminato\n" -#: pg_backup_archiver.c:3893 +#: pg_backup_archiver.c:3923 #, c-format msgid "entering restore_toc_entries_postfork\n" msgstr "inizio di restore_toc_entries_postfork\n" -#: pg_backup_archiver.c:3911 +#: pg_backup_archiver.c:3942 #, c-format msgid "processing missed item %d %s %s\n" msgstr "elaborazione dell'elemento perduto %d %s %s\n" -#: pg_backup_archiver.c:4060 +#: pg_backup_archiver.c:4091 #, c-format msgid "no item ready\n" msgstr "nessun elemento pronto\n" -#: pg_backup_archiver.c:4109 +#: pg_backup_archiver.c:4139 #, c-format msgid "could not find slot of finished worker\n" msgstr "non è stato trovato alcuno slot di worker terminati\n" -#: pg_backup_archiver.c:4111 +#: pg_backup_archiver.c:4141 #, c-format msgid "finished item %d %s %s\n" msgstr "elemento %d %s %s terminato\n" -#: pg_backup_archiver.c:4124 +#: pg_backup_archiver.c:4154 #, c-format msgid "worker process failed: exit code %d\n" msgstr "processo worker fallito: codice di uscita %d\n" -#: pg_backup_archiver.c:4286 +#: pg_backup_archiver.c:4316 #, c-format msgid "transferring dependency %d -> %d to %d\n" msgstr "trasferimento di dipendenza %d -> %d a %d\n" -#: pg_backup_archiver.c:4359 +#: pg_backup_archiver.c:4389 #, c-format msgid "reducing dependencies for %d\n" msgstr "riduzione dipendenze per %d\n" -#: pg_backup_archiver.c:4398 +#: pg_backup_archiver.c:4428 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "creazione della tabella \"%s\" fallita, i suoi dati non verranno ripristinati\n" @@ -1048,104 +1028,121 @@ msgid "WARNING: ftell mismatch with expected position -- ftell used\n" msgstr "ATTENZIONE: ftell non corrisponde alla posizione prevista -- verrà usato il valore restituito da ftell\n" #. translator: this is a module name -#: pg_backup_db.c:29 +#: pg_backup_db.c:31 msgid "archiver (db)" msgstr "archiviatore (db)" -#: pg_backup_db.c:44 +#: pg_backup_db.c:47 #, c-format msgid "could not get server_version from libpq\n" msgstr "non è stato possibile ottenere server_version da libpq\n" -#: pg_backup_db.c:55 pg_dumpall.c:1982 +#: pg_backup_db.c:58 pg_dumpall.c:2068 #, c-format msgid "server version: %s; %s version: %s\n" msgstr "versione del server: %s; %s versione: %s\n" -#: pg_backup_db.c:57 pg_dumpall.c:1984 +#: pg_backup_db.c:60 pg_dumpall.c:2070 #, c-format msgid "aborting because of server version mismatch\n" msgstr "abortito perché la versione del server non corrisponde\n" -#: pg_backup_db.c:128 +#: pg_backup_db.c:149 #, c-format msgid "connecting to database \"%s\" as user \"%s\"\n" msgstr "connessione al database \"%s\" come utente \"%s\"\n" -#: pg_backup_db.c:135 pg_backup_db.c:183 pg_backup_db.c:243 pg_backup_db.c:285 -#: pg_dumpall.c:1812 pg_dumpall.c:1920 +#: pg_backup_db.c:156 pg_backup_db.c:208 pg_backup_db.c:270 pg_backup_db.c:312 +#: pg_dumpall.c:1894 pg_dumpall.c:2006 msgid "Password: " msgstr "Password: " -#: pg_backup_db.c:164 +#: pg_backup_db.c:189 #, c-format msgid "failed to reconnect to database\n" msgstr "riconnessione al database fallita\n" -#: pg_backup_db.c:169 +#: pg_backup_db.c:194 #, c-format msgid "could not reconnect to database: %s" msgstr "riconnessione al database fallita: %s" -#: pg_backup_db.c:185 +#: pg_backup_db.c:210 #, c-format msgid "connection needs password\n" msgstr "la connessione richiede la password\n" -#: pg_backup_db.c:237 +#: pg_backup_db.c:264 #, c-format msgid "already connected to a database\n" msgstr "già connesso ad un database\n" -#: pg_backup_db.c:277 +#: pg_backup_db.c:304 #, c-format msgid "failed to connect to database\n" msgstr "connessione al database fallita\n" -#: pg_backup_db.c:294 +#: pg_backup_db.c:321 #, c-format msgid "connection to database \"%s\" failed: %s" msgstr "connessione al database \"%s\" fallita: %s" -#: pg_backup_db.c:362 +#: pg_backup_db.c:391 +#, c-format +msgid "%s" +msgstr "%s" + +#: pg_backup_db.c:398 #, c-format msgid "query failed: %s" msgstr "query fallita: %s" -#: pg_backup_db.c:364 +#: pg_backup_db.c:400 #, c-format msgid "query was: %s\n" msgstr "la query era: %s\n" -#: pg_backup_db.c:428 +#: pg_backup_db.c:442 +#, c-format +msgid "query returned %d row instead of one: %s\n" +msgid_plural "query returned %d rows instead of one: %s\n" +msgstr[0] "la query ha restituito %d riga invece di una: %s\n" +msgstr[1] "la query ha restituito %d righe invece di una: %s\n" + +#: pg_backup_db.c:487 #, c-format msgid "%s: %s Command was: %s\n" msgstr "%s: %s Il comando era: %s\n" -#: pg_backup_db.c:484 pg_backup_db.c:558 pg_backup_db.c:565 +#: pg_backup_db.c:543 pg_backup_db.c:617 pg_backup_db.c:624 msgid "could not execute query" msgstr "esecuzione della query fallita" -#: pg_backup_db.c:537 +#: pg_backup_db.c:596 #, c-format msgid "error returned by PQputCopyData: %s" msgstr "errore restituito da PQputCopyData: %s" -#: pg_backup_db.c:586 +#: pg_backup_db.c:645 #, c-format msgid "error returned by PQputCopyEnd: %s" msgstr "errore restituito da PQputCopyEnd: %s" -#: pg_backup_db.c:592 +#: pg_backup_db.c:651 #, c-format msgid "COPY failed for table \"%s\": %s" msgstr "COPY fallito per la tabella \"%s\": %s" -#: pg_backup_db.c:605 +#: pg_backup_db.c:657 pg_dump.c:1805 +#, c-format +msgid "WARNING: unexpected extra results during COPY of table \"%s\"\n" +msgstr "ATTENZIONE: risultati aggiuntivi inattesi nel COPY della tabella \"%s\"\n" + +#: pg_backup_db.c:669 msgid "could not start database transaction" msgstr "avvio della transazione database fallito" -#: pg_backup_db.c:613 +#: pg_backup_db.c:677 msgid "could not commit database transaction" msgstr "commit della transazione database fallito" @@ -1174,42 +1171,42 @@ msgstr "chiusura della directory \"%s\" fallita: %s\n" msgid "could not create directory \"%s\": %s\n" msgstr "creazione della directory \"%s\" fallita: %s\n" -#: pg_backup_directory.c:413 +#: pg_backup_directory.c:412 #, c-format msgid "could not close data file: %s\n" msgstr "chiusura del file di dati fallita: %s\n" -#: pg_backup_directory.c:454 +#: pg_backup_directory.c:453 #, c-format msgid "could not open large object TOC file \"%s\" for input: %s\n" msgstr "apertura del file TOC dei large object \"%s\" per l'input fallita: %s\n" -#: pg_backup_directory.c:465 +#: pg_backup_directory.c:464 #, c-format msgid "invalid line in large object TOC file \"%s\": \"%s\"\n" msgstr "riga non valida nel file TOC dei large object \"%s\": \"%s\"\n" -#: pg_backup_directory.c:474 +#: pg_backup_directory.c:473 #, c-format msgid "error reading large object TOC file \"%s\"\n" msgstr "errore in lettura del file TOC dei large object \"%s\"\n" -#: pg_backup_directory.c:478 +#: pg_backup_directory.c:477 #, c-format msgid "could not close large object TOC file \"%s\": %s\n" msgstr "chiusura del file TOC dei large object \"%s\" fallita: %s\n" -#: pg_backup_directory.c:688 +#: pg_backup_directory.c:684 #, c-format msgid "could not write to blobs TOC file\n" msgstr "scrittura nel file TOC dei blob fallita\n" -#: pg_backup_directory.c:720 +#: pg_backup_directory.c:716 #, c-format msgid "file name too long: \"%s\"\n" msgstr "nome del file troppo lungo: \"%s\"\n" -#: pg_backup_directory.c:806 +#: pg_backup_directory.c:802 #, c-format msgid "error during backup\n" msgstr "errore durante il backup\n" @@ -1341,64 +1338,69 @@ msgstr "intestazione tar corrotta in %s (previsti %d, calcolati %d) alla posizio msgid "%s: unrecognized section name: \"%s\"\n" msgstr "%s: nome di sezione sconosciuto: \"%s\"\n" -#: pg_backup_utils.c:56 pg_dump.c:534 pg_dump.c:551 pg_dumpall.c:301 -#: pg_dumpall.c:311 pg_dumpall.c:321 pg_dumpall.c:330 pg_dumpall.c:346 -#: pg_dumpall.c:404 pg_restore.c:279 pg_restore.c:295 pg_restore.c:307 +#: pg_backup_utils.c:56 pg_dump.c:536 pg_dump.c:553 pg_dumpall.c:299 +#: pg_dumpall.c:309 pg_dumpall.c:319 pg_dumpall.c:328 pg_dumpall.c:344 +#: pg_dumpall.c:402 pg_restore.c:279 pg_restore.c:295 pg_restore.c:307 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Prova \"%s --help\" per maggiori informazioni.\n" -#: pg_backup_utils.c:101 +#: pg_backup_utils.c:118 #, c-format msgid "out of on_exit_nicely slots\n" msgstr "slot on_exit_nicely terminati\n" -#: pg_dump.c:504 +#: pg_dump.c:506 #, c-format msgid "compression level must be in range 0..9\n" msgstr "il livello di compressione dev'essere tra 0 e 9\n" -#: pg_dump.c:549 pg_dumpall.c:309 pg_restore.c:293 +#: pg_dump.c:551 pg_dumpall.c:307 pg_restore.c:293 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: troppi argomenti nella riga di comando (il primo è \"%s\")\n" -#: pg_dump.c:562 +#: pg_dump.c:564 #, c-format msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "le opzioni -s/--schema-only e -a/--data-only non possono essere usate insieme\n" -#: pg_dump.c:568 +#: pg_dump.c:570 #, c-format msgid "options -c/--clean and -a/--data-only cannot be used together\n" msgstr "le opzioni -c/--clean e -a/--data-only non possono essere usate insieme\n" -#: pg_dump.c:574 +#: pg_dump.c:576 #, c-format msgid "options --inserts/--column-inserts and -o/--oids cannot be used together\n" msgstr "le opzioni --inserts/--column-inserts e -o/--oids non possono essere usate insieme\n" -#: pg_dump.c:575 +#: pg_dump.c:577 #, c-format msgid "(The INSERT command cannot set OIDs.)\n" msgstr "(Il comando INSERT non può impostare OID.)\n" -#: pg_dump.c:580 +#: pg_dump.c:582 #, c-format msgid "option --if-exists requires option -c/--clean\n" msgstr "l'opzione --if-exists richiede l'opzione -c/--clean\n" -#: pg_dump.c:608 +#: pg_dump.c:604 #, c-format -msgid "%s: invalid number of parallel jobs\n" -msgstr "%s: numero di job paralleli non valido\n" +msgid "WARNING: requested compression not available in this installation -- archive will be uncompressed\n" +msgstr "ATTENZIONE: la compressione richiesta non è disponibile in questa installazione -- l'archivio non sarà compresso\n" -#: pg_dump.c:612 +#: pg_dump.c:619 +#, c-format +msgid "invalid number of parallel jobs\n" +msgstr "numero di job paralleli non valido\n" + +#: pg_dump.c:623 #, c-format msgid "parallel backup only supported by the directory format\n" msgstr "il backup parallelo è supportato solo con il formato directory.\n" -#: pg_dump.c:681 +#: pg_dump.c:680 #, c-format msgid "" "Synchronized snapshots are not supported by this server version.\n" @@ -1409,27 +1411,27 @@ msgstr "" "del server. Puoi usare --no-synchronized-snapshots invece se non hai\n" "bisogno di snapshot sincronizzati.\n" -#: pg_dump.c:688 +#: pg_dump.c:687 #, c-format msgid "Exported snapshots are not supported by this server version.\n" msgstr "Gli snapshot esportati non sono supportati da questa versione del server.\n" -#: pg_dump.c:699 +#: pg_dump.c:706 #, c-format msgid "last built-in OID is %u\n" msgstr "l'ultimo OID predefinito è %u\n" -#: pg_dump.c:709 +#: pg_dump.c:715 #, c-format -msgid "No matching schemas were found\n" -msgstr "Non è stato trovato nessuno schema corrispondente\n" +msgid "no matching schemas were found\n" +msgstr "non è stato trovato nessuno schema corrispondente\n" -#: pg_dump.c:723 +#: pg_dump.c:729 #, c-format -msgid "No matching tables were found\n" -msgstr "Non è stata trovata nessuna tabella corrispondente\n" +msgid "no matching tables were found\n" +msgstr "non è stata trovata nessuna tabella corrispondente\n" -#: pg_dump.c:882 +#: pg_dump.c:888 #, c-format msgid "" "%s dumps a database as a text file or to other formats.\n" @@ -1438,17 +1440,17 @@ msgstr "" "%s scarica un database in formato testo o in altri formati.\n" "\n" -#: pg_dump.c:883 pg_dumpall.c:549 pg_restore.c:437 +#: pg_dump.c:889 pg_dumpall.c:547 pg_restore.c:443 #, c-format msgid "Usage:\n" msgstr "Utilizzo:\n" -#: pg_dump.c:884 +#: pg_dump.c:890 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [OPZIONE]... [NOMEDB]\n" -#: pg_dump.c:886 pg_dumpall.c:552 pg_restore.c:440 +#: pg_dump.c:892 pg_dumpall.c:550 pg_restore.c:446 #, c-format msgid "" "\n" @@ -1457,12 +1459,12 @@ msgstr "" "\n" "Opzioni generali:\n" -#: pg_dump.c:887 +#: pg_dump.c:893 #, c-format msgid " -f, --file=FILENAME output file or directory name\n" msgstr " -f, --file=NOMEFILE nome del file o directory di output\n" -#: pg_dump.c:888 +#: pg_dump.c:894 #, c-format msgid "" " -F, --format=c|d|t|p output file format (custom, directory, tar,\n" @@ -1471,39 +1473,39 @@ msgstr "" " -F, --format=c|d|t|p formato del file di output (custom, directory,\n" " tar, testo in chiaro (predefinito))\n" -#: pg_dump.c:890 +#: pg_dump.c:896 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to dump\n" msgstr " -j, --jobs=NUM usa NUM job paralleli per il dump\n" -#: pg_dump.c:891 +#: pg_dump.c:897 pg_dumpall.c:552 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose stampa più informazioni\n" -#: pg_dump.c:892 pg_dumpall.c:554 +#: pg_dump.c:898 pg_dumpall.c:553 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version mostra informazioni sulla versione ed esci\n" -#: pg_dump.c:893 +#: pg_dump.c:899 #, c-format msgid " -Z, --compress=0-9 compression level for compressed formats\n" msgstr " -Z, --compress=0-9 livello di compressione per formati compressi\n" -#: pg_dump.c:894 pg_dumpall.c:555 +#: pg_dump.c:900 pg_dumpall.c:554 #, c-format msgid " --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" msgstr "" " --lock-wait-timeout=TIMEOUT termina con errore dopo un'attesa di TIMEOUT\n" " per un lock di tabella\n" -#: pg_dump.c:895 pg_dumpall.c:556 +#: pg_dump.c:901 pg_dumpall.c:555 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help mostra questo aiuto ed esci\n" -#: pg_dump.c:897 pg_dumpall.c:557 +#: pg_dump.c:903 pg_dumpall.c:556 #, c-format msgid "" "\n" @@ -1512,51 +1514,51 @@ msgstr "" "\n" "Opzioni per il controllo del contenuto dell'output:\n" -#: pg_dump.c:898 pg_dumpall.c:558 +#: pg_dump.c:904 pg_dumpall.c:557 #, c-format msgid " -a, --data-only dump only the data, not the schema\n" msgstr " -a, --data-only scarica solamente i dati, non lo schema\n" -#: pg_dump.c:899 +#: pg_dump.c:905 #, c-format msgid " -b, --blobs include large objects in dump\n" msgstr " -b, --blobs includi nell'archivio i large object\n" -#: pg_dump.c:900 pg_restore.c:451 +#: pg_dump.c:906 pg_restore.c:457 #, c-format msgid " -c, --clean clean (drop) database objects before recreating\n" msgstr "" " -c, --clean svuota (drop) gli oggetti del database prima di\n" " ricrearli\n" -#: pg_dump.c:901 +#: pg_dump.c:907 #, c-format msgid " -C, --create include commands to create database in dump\n" msgstr "" " -C, --create include nell'archivio i comandi per creare\n" " i database\n" -#: pg_dump.c:902 +#: pg_dump.c:908 #, c-format msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" msgstr " -E, --encoding=CODIFICA scarica i dati nella CODIFICA indicata\n" -#: pg_dump.c:903 +#: pg_dump.c:909 #, c-format msgid " -n, --schema=SCHEMA dump the named schema(s) only\n" msgstr " -n, --schema=SCHEMA scarica solo lo schema o gli schemi indicati\n" -#: pg_dump.c:904 +#: pg_dump.c:910 #, c-format msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n" msgstr " -N, --exclude-schema=SCHEMA non scaricare lo schema o gli schemi indicati\n" -#: pg_dump.c:905 pg_dumpall.c:561 +#: pg_dump.c:911 pg_dumpall.c:560 #, c-format msgid " -o, --oids include OIDs in dump\n" msgstr " -o, --oids includi gli OID nel dump\n" -#: pg_dump.c:906 +#: pg_dump.c:912 #, c-format msgid "" " -O, --no-owner skip restoration of object ownership in\n" @@ -1565,60 +1567,60 @@ msgstr "" " -O, --no-owner salta il ripristino del proprietario degli\n" " oggetti nel formato testo in chiaro\n" -#: pg_dump.c:908 pg_dumpall.c:564 +#: pg_dump.c:914 pg_dumpall.c:563 #, c-format msgid " -s, --schema-only dump only the schema, no data\n" msgstr " -s, --schema-only scarica solo lo schema, non i dati\n" -#: pg_dump.c:909 +#: pg_dump.c:915 #, c-format msgid " -S, --superuser=NAME superuser user name to use in plain-text format\n" msgstr "" " -S, --superuser=NOME nome del superutente da usare nel formato testo\n" " in chiaro\n" -#: pg_dump.c:910 +#: pg_dump.c:916 #, c-format msgid " -t, --table=TABLE dump the named table(s) only\n" msgstr " -t, --table=TABELLA scarica solo la tabella o le tabelle indicate\n" -#: pg_dump.c:911 +#: pg_dump.c:917 #, c-format msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n" msgstr " -T, --exclude-table=TABELLA NON scaricare la tabella o le tabelle indicate\n" -#: pg_dump.c:912 pg_dumpall.c:567 +#: pg_dump.c:918 pg_dumpall.c:566 #, c-format msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" msgstr " -x, --no-privileges non scaricare i privilegi (grant/revoke)\n" -#: pg_dump.c:913 pg_dumpall.c:568 +#: pg_dump.c:919 pg_dumpall.c:567 #, c-format msgid " --binary-upgrade for use by upgrade utilities only\n" msgstr " --binary-upgrade da utilizzare solo dall'utilità di aggiornamento\n" -#: pg_dump.c:914 pg_dumpall.c:569 +#: pg_dump.c:920 pg_dumpall.c:568 #, c-format msgid " --column-inserts dump data as INSERT commands with column names\n" msgstr "" " --column-inserts scarica dati come comandi INSERT con nomi\n" " di colonna\n" -#: pg_dump.c:915 pg_dumpall.c:570 +#: pg_dump.c:921 pg_dumpall.c:569 #, c-format msgid " --disable-dollar-quoting disable dollar quoting, use SQL standard quoting\n" msgstr "" " --disable-dollar-quoting disabilita la quotazione con dollari, usa la\n" " quotazione standard SQL\n" -#: pg_dump.c:916 pg_dumpall.c:571 pg_restore.c:467 +#: pg_dump.c:922 pg_dumpall.c:570 pg_restore.c:473 #, c-format msgid " --disable-triggers disable triggers during data-only restore\n" msgstr "" " --disable-triggers disabilita i trigger durante il ripristino\n" " dei soli dati\n" -#: pg_dump.c:917 +#: pg_dump.c:923 #, c-format msgid "" " --enable-row-security enable row security (dump only content user has\n" @@ -1627,70 +1629,70 @@ msgstr "" " --enable-row-security abilita la sicurezza per riga (salva solo i dati\n" " a cui l'utente ha accesso)\n" -#: pg_dump.c:919 +#: pg_dump.c:925 #, c-format msgid " --exclude-table-data=TABLE do NOT dump data for the named table(s)\n" msgstr "" " --exclude-table-data=TABLE NON scaricare i dati per la tabella o le tabelle\n" " indicate\n" -#: pg_dump.c:920 pg_dumpall.c:572 pg_restore.c:469 +#: pg_dump.c:926 pg_dumpall.c:571 pg_restore.c:475 #, c-format msgid " --if-exists use IF EXISTS when dropping objects\n" msgstr " --if-exists usa IF EXISTS nell'eliminare gli oggetti\n" -#: pg_dump.c:921 pg_dumpall.c:573 +#: pg_dump.c:927 pg_dumpall.c:572 #, c-format msgid " --inserts dump data as INSERT commands, rather than COPY\n" msgstr " --inserts scarica i dati come comandi INSERT anziché COPY\n" -#: pg_dump.c:922 pg_dumpall.c:574 +#: pg_dump.c:928 pg_dumpall.c:573 #, c-format msgid " --no-security-labels do not dump security label assignments\n" msgstr " --no-security-labels non scaricare le assegnazioni di sicurezza\n" -#: pg_dump.c:923 +#: pg_dump.c:929 #, c-format msgid " --no-synchronized-snapshots do not use synchronized snapshots in parallel jobs\n" msgstr " --no-synchronized-snapshots non usare snapshot sincronizzati nei job paralleli\n" -#: pg_dump.c:924 pg_dumpall.c:575 +#: pg_dump.c:930 pg_dumpall.c:574 #, c-format msgid " --no-tablespaces do not dump tablespace assignments\n" msgstr " --no-tablespaces non scarica le assegnazioni di tablespace\n" -#: pg_dump.c:925 pg_dumpall.c:576 +#: pg_dump.c:931 pg_dumpall.c:575 #, c-format msgid " --no-unlogged-table-data do not dump unlogged table data\n" msgstr " --no-unlogged-table-data non scaricare i dati delle tabelle non loggate\n" -#: pg_dump.c:926 pg_dumpall.c:577 +#: pg_dump.c:932 pg_dumpall.c:576 #, c-format msgid " --quote-all-identifiers quote all identifiers, even if not key words\n" msgstr "" " --quote-all-identifiers metti tutti gli identificatori tra virgolette,\n" " anche se non sono parole chiave\n" -#: pg_dump.c:927 +#: pg_dump.c:933 #, c-format msgid " --section=SECTION dump named section (pre-data, data, or post-data)\n" msgstr "" " --section=SECTION scarica la sezione con questo nome (pre-data,\n" " data o post-data)\n" -#: pg_dump.c:928 +#: pg_dump.c:934 #, c-format msgid " --serializable-deferrable wait until the dump can run without anomalies\n" msgstr "" " --serializable-deferrable attendi prima che lo scaricamento possa essere\n" " eseguito senza anomalie\n" -#: pg_dump.c:929 +#: pg_dump.c:935 #, c-format msgid " --snapshot=SNAPSHOT use given snapshot for the dump\n" msgstr " --snapshot=SNAPSHOT usa questo snapshot per il salvataggio\n" -#: pg_dump.c:930 pg_restore.c:475 +#: pg_dump.c:936 pg_restore.c:481 #, c-format msgid "" " --strict-names require table and/or schema include patterns to\n" @@ -1699,7 +1701,7 @@ msgstr "" " --strict-names richiede che le tabelle/schemi includano pattern\n" " che combacino con almeno un'entità\n" -#: pg_dump.c:932 pg_dumpall.c:578 pg_restore.c:477 +#: pg_dump.c:938 pg_dumpall.c:577 pg_restore.c:483 #, c-format msgid "" " --use-set-session-authorization\n" @@ -1710,7 +1712,7 @@ msgstr "" " usa i comandi SET SESSION AUTHORIZATION invece\n" " di ALTER OWNER per impostare il proprietario\n" -#: pg_dump.c:936 pg_dumpall.c:582 pg_restore.c:481 +#: pg_dump.c:942 pg_dumpall.c:581 pg_restore.c:487 #, c-format msgid "" "\n" @@ -1719,44 +1721,44 @@ msgstr "" "\n" "Opzioni di connessione:\n" -#: pg_dump.c:937 +#: pg_dump.c:943 #, c-format msgid " -d, --dbname=DBNAME database to dump\n" msgstr " -d, --dbname=NOMEDB database da scaricare\n" -#: pg_dump.c:938 pg_dumpall.c:584 pg_restore.c:482 +#: pg_dump.c:944 pg_dumpall.c:583 pg_restore.c:488 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=NOMEHOST host server del database o directory socket\n" -#: pg_dump.c:939 pg_dumpall.c:586 pg_restore.c:483 +#: pg_dump.c:945 pg_dumpall.c:585 pg_restore.c:489 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=PORTA numero porta del server di database\n" -#: pg_dump.c:940 pg_dumpall.c:587 pg_restore.c:484 +#: pg_dump.c:946 pg_dumpall.c:586 pg_restore.c:490 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=NOME connessione con l'utente di database specificato\n" -#: pg_dump.c:941 pg_dumpall.c:588 pg_restore.c:485 +#: pg_dump.c:947 pg_dumpall.c:587 pg_restore.c:491 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password non chiedere mai le password\n" -#: pg_dump.c:942 pg_dumpall.c:589 pg_restore.c:486 +#: pg_dump.c:948 pg_dumpall.c:588 pg_restore.c:492 #, c-format msgid " -W, --password force password prompt (should happen automatically)\n" msgstr "" " -W, --password forza la richiesta di una password (dovrebbe essere\n" " automatico)\n" -#: pg_dump.c:943 pg_dumpall.c:590 +#: pg_dump.c:949 pg_dumpall.c:589 #, c-format msgid " --role=ROLENAME do SET ROLE before dump\n" msgstr " --role=NOMERUOLO esegui SET ROLE prima di scaricare\n" -#: pg_dump.c:945 +#: pg_dump.c:951 #, c-format msgid "" "\n" @@ -1769,387 +1771,406 @@ msgstr "" "della variabile di ambiente PGDATABASE.\n" "\n" -#: pg_dump.c:947 pg_dumpall.c:594 pg_restore.c:493 +#: pg_dump.c:953 pg_dumpall.c:593 pg_restore.c:499 #, c-format msgid "Report bugs to .\n" msgstr "Puoi segnalare eventuali bug a .\n" -#: pg_dump.c:967 +#: pg_dump.c:970 #, c-format msgid "invalid client encoding \"%s\" specified\n" msgstr "codifica client specificata \"%s\" non valida\n" -#: pg_dump.c:1152 +#: pg_dump.c:1112 +#, c-format +msgid "" +"Synchronized snapshots are not supported on standby servers.\n" +"Run with --no-synchronized-snapshots instead if you do not need\n" +"synchronized snapshots.\n" +msgstr "" +"Gli snapshot sincronizzati non sono supportati sui server di standby.\n" +"Usa --no-synchronized-snapshots se non ti servono snapshot\n" +"sincronizzati.\n" + +#: pg_dump.c:1181 #, c-format msgid "invalid output format \"%s\" specified\n" msgstr "formato di output specificato \"%s\" non valido\n" -#: pg_dump.c:1175 +#: pg_dump.c:1204 #, c-format msgid "server version must be at least 7.3 to use schema selection switches\n" msgstr "per usare le opzioni di selezione schema la versione del server deve essere almeno 7.3\n" -#: pg_dump.c:1193 pg_dump.c:1246 +#: pg_dump.c:1222 #, c-format -msgid "No matching table(s) were found for pattern \"%s\"\n" -msgstr "Nessuna tabella trovata per il pattern \"%s\"\n" +msgid "no matching schemas were found for pattern \"%s\"\n" +msgstr "nessuno schema trovato per il pattern \"%s\"\n" -#: pg_dump.c:1596 +#: pg_dump.c:1275 +#, c-format +msgid "no matching tables were found for pattern \"%s\"\n" +msgstr "nessuna tabella trovata per il pattern \"%s\"\n" + +#: pg_dump.c:1662 #, c-format msgid "dumping contents of table \"%s.%s\"\n" msgstr "salvataggio del contenuto della tabella \"%s.%s\"\n" -#: pg_dump.c:1720 +#: pg_dump.c:1786 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" msgstr "Lo scarico dei contenuti della tabella \"%s\" è fallito: PQgetCopyData() fallito.\n" -#: pg_dump.c:1721 pg_dump.c:1731 +#: pg_dump.c:1787 pg_dump.c:1797 #, c-format msgid "Error message from server: %s" msgstr "Messaggio di errore dal server: %s" -#: pg_dump.c:1722 pg_dump.c:1732 +#: pg_dump.c:1788 pg_dump.c:1798 #, c-format msgid "The command was: %s\n" msgstr "Il comando era: %s\n" -#: pg_dump.c:1730 +#: pg_dump.c:1796 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetResult() failed.\n" msgstr "Scarico dei contenuti della tabella \"%s\" fallito: PQgetResult() fallito.\n" -#: pg_dump.c:2374 +#: pg_dump.c:2445 #, c-format msgid "saving database definition\n" msgstr "salvataggio definizione del database\n" -#: pg_dump.c:2707 +#: pg_dump.c:2779 #, c-format msgid "saving encoding = %s\n" msgstr "salvataggio codifica = %s\n" -#: pg_dump.c:2734 +#: pg_dump.c:2806 #, c-format msgid "saving standard_conforming_strings = %s\n" msgstr "salvataggio standard_conforming_strings = %s\n" -#: pg_dump.c:2774 +#: pg_dump.c:2846 #, c-format msgid "reading large objects\n" msgstr "lettura dei large object\n" -#: pg_dump.c:2960 +#: pg_dump.c:3033 #, c-format msgid "saving large objects\n" msgstr "salvataggio dei large object\n" -#: pg_dump.c:3007 +#: pg_dump.c:3080 #, c-format msgid "error reading large object %u: %s" msgstr "errore di lettura del large object %u: %s" -#: pg_dump.c:3059 +#: pg_dump.c:3132 #, c-format msgid "reading row security enabled for table \"%s.%s\"\n" msgstr "letture delle regole di sicurezza per riga abilitata per la tabella \"%s.%s\"\n" -#: pg_dump.c:3090 +#: pg_dump.c:3163 #, c-format msgid "reading policies for table \"%s.%s\"\n" msgstr "lettura delle regole di sicurezza per la tabella \"%s.%s\"\n" -#: pg_dump.c:3223 +#: pg_dump.c:3296 #, c-format msgid "unexpected policy command type: \"%s\"\n" msgstr "tipo di comando di regola di sicurezza imprevisto: \"%s\"\n" -#: pg_dump.c:3442 +#: pg_dump.c:3515 #, c-format msgid "could not find parent extension for %s\n" msgstr "estensione genitore di %s non trovata\n" -#: pg_dump.c:3610 +#: pg_dump.c:3683 #, c-format msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" msgstr "ATTENZIONE: il proprietario dello schema \"%s\" sembra non essere valido\n" -#: pg_dump.c:3653 +#: pg_dump.c:3726 #, c-format msgid "schema with OID %u does not exist\n" msgstr "lo schema con OID %u non esiste\n" -#: pg_dump.c:4068 +#: pg_dump.c:4141 #, c-format msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" msgstr "ATTENZIONE: il proprietario del tipo dato \"%s\" non sembra essere valido\n" -#: pg_dump.c:4179 +#: pg_dump.c:4255 #, c-format msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" msgstr "ATTENZIONE: il proprietario dell'operatore \"%s\" non sembra essere valido\n" -#: pg_dump.c:4512 +#: pg_dump.c:4600 #, c-format msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" msgstr "ATTENZIONE: il proprietario della classe operatore \"%s\" non sembra essere valido\n" -#: pg_dump.c:4600 +#: pg_dump.c:4691 #, c-format msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" msgstr "ATTENZIONE: il proprietario della famiglia di operatori \"%s\" non sembra essere valido\n" -#: pg_dump.c:4805 +#: pg_dump.c:4892 #, c-format msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" msgstr "ATTENZIONE: il proprietario della funzione di aggregazione \"%s\" non sembra essere valido\n" -#: pg_dump.c:5074 +#: pg_dump.c:5189 #, c-format msgid "WARNING: owner of function \"%s\" appears to be invalid\n" msgstr "ATTENZIONE: il proprietario della funzione \"%s\" non sembra essere valido\n" -#: pg_dump.c:5874 +#: pg_dump.c:6051 #, c-format msgid "WARNING: owner of table \"%s\" appears to be invalid\n" msgstr "ATTENZIONE: il proprietario della tabella \"%s\" non sembra essere valido\n" -#: pg_dump.c:6026 +#: pg_dump.c:6093 pg_dump.c:16593 +#, c-format +msgid "failed sanity check, parent table OID %u of sequence OID %u not found\n" +msgstr "controllo di integrità fallito, tabella con OID %u proprietaria della sequenza con OID %u non trovata\n" + +#: pg_dump.c:6220 #, c-format msgid "reading indexes for table \"%s.%s\"\n" msgstr "lettura degli indici della tabella \"%s.%s\"\n" -#: pg_dump.c:6394 +#: pg_dump.c:6588 #, c-format msgid "reading foreign key constraints for table \"%s.%s\"\n" msgstr "lettura dei vincoli di chiave esterna della tabella \"%s.%s\"\n" -#: pg_dump.c:6640 +#: pg_dump.c:6834 #, c-format msgid "failed sanity check, parent table OID %u of pg_rewrite entry OID %u not found\n" msgstr "controllo integrità fallito, l'OID %u della tabella padre della voce OID %u di pg_rewrite non è stato trovato\n" -#: pg_dump.c:6734 +#: pg_dump.c:6928 #, c-format msgid "reading triggers for table \"%s.%s\"\n" msgstr "lettura dei trigger della tabella \"%s.%s\"\n" -#: pg_dump.c:6899 +#: pg_dump.c:7093 #, c-format msgid "query produced null referenced table name for foreign key trigger \"%s\" on table \"%s\" (OID of table: %u)\n" msgstr "la query non ha prodotto nessun nome di tabella referenziata per il trigger di chiave esterna \"%s\" sulla tabella \"%s\" (OID della tabella: %u)\n" -#: pg_dump.c:7548 +#: pg_dump.c:7748 #, c-format msgid "finding the columns and types of table \"%s.%s\"\n" msgstr "lettura delle colonne e dei tipi della tabella \"%s.%s\"\n" -#: pg_dump.c:7727 +#: pg_dump.c:7927 #, c-format msgid "invalid column numbering in table \"%s\"\n" msgstr "numerazione delle colonne non valida nella tabella \"%s\"\n" -#: pg_dump.c:7761 +#: pg_dump.c:7961 #, c-format msgid "finding default expressions of table \"%s.%s\"\n" msgstr "lettura delle espressioni di default della tabella \"%s.%s\"\n" -#: pg_dump.c:7814 +#: pg_dump.c:8014 #, c-format msgid "invalid adnum value %d for table \"%s\"\n" msgstr "valore adnum %d non valido per la tabella \"%s\"\n" -#: pg_dump.c:7886 +#: pg_dump.c:8086 #, c-format msgid "finding check constraints for table \"%s.%s\"\n" msgstr "ricerca dei vincoli di controllo della tabella \"%s.%s\"\n" -#: pg_dump.c:7982 +#: pg_dump.c:8182 #, c-format msgid "expected %d check constraint on table \"%s\" but found %d\n" msgid_plural "expected %d check constraints on table \"%s\" but found %d\n" msgstr[0] "previsto %d vincolo di controllo sulla tabella \"%s\" ma trovato %d\n" msgstr[1] "previsti %d vincoli di controllo sulla tabella \"%s\" ma trovati %d\n" -#: pg_dump.c:7986 +#: pg_dump.c:8186 #, c-format msgid "(The system catalogs might be corrupted.)\n" msgstr "(I cataloghi di sistema potrebbero essere corrotti.)\n" -#: pg_dump.c:9506 +#: pg_dump.c:9764 #, c-format msgid "WARNING: typtype of data type \"%s\" appears to be invalid\n" msgstr "ATTENZIONE: il \"typtype\" del tipo dato \"%s\" sembra non essere valido\n" -#: pg_dump.c:11048 +#: pg_dump.c:11306 #, c-format msgid "WARNING: bogus value in proargmodes array\n" msgstr "ATTENZIONE: valore errato nell'array proargmode\n" -#: pg_dump.c:11426 +#: pg_dump.c:11684 #, c-format msgid "WARNING: could not parse proallargtypes array\n" msgstr "ATTENZIONE: non è stato possibile analizzare l'array proallargtype\n" -#: pg_dump.c:11442 +#: pg_dump.c:11700 #, c-format msgid "WARNING: could not parse proargmodes array\n" msgstr "ATTENZIONE: non è stato possibile analizzare l'array proargmode\n" -#: pg_dump.c:11456 +#: pg_dump.c:11714 #, c-format msgid "WARNING: could not parse proargnames array\n" msgstr "ATTENZIONE: non è stato possibile analizzare l'array proargname\n" -#: pg_dump.c:11467 +#: pg_dump.c:11725 #, c-format msgid "WARNING: could not parse proconfig array\n" msgstr "ATTENZIONE: non è stato possibile analizzare l'array preconfig\n" -#: pg_dump.c:11538 +#: pg_dump.c:11796 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" msgstr "valore provolatile sconosciuto per la funzione \"%s\"\n" -#: pg_dump.c:11582 +#: pg_dump.c:11840 pg_dump.c:13889 #, c-format msgid "unrecognized proparallel value for function \"%s\"\n" msgstr "valore proparallel non riconosciuto per la funzione \"%s\"\n" -#: pg_dump.c:11734 +#: pg_dump.c:11948 pg_dump.c:12058 pg_dump.c:12065 +#, c-format +msgid "could not find function definition for function with OID %u\n" +msgstr "definizione della funzione con OID %u non trovata\n" + +#: pg_dump.c:11993 #, c-format msgid "WARNING: bogus value in pg_cast.castfunc or pg_cast.castmethod field\n" msgstr "ATTENZIONE: valore non corretto nei campi pg_cast.castfunc o pg_cast.castmethod\n" -#: pg_dump.c:11737 +#: pg_dump.c:11996 #, c-format msgid "WARNING: bogus value in pg_cast.castmethod field\n" msgstr "ATTENZIONE: valore non corretto nel campo pg_cast.castmethod\n" -#: pg_dump.c:11825 +#: pg_dump.c:12086 #, c-format msgid "WARNING: bogus transform definition, at least one of trffromsql and trftosql should be nonzero\n" msgstr "ATTENZIONE: definizione della trasformazione non corretta, almeno uno tra trffromsql e trftosql dovrebbe essere non-zero\n" -#: pg_dump.c:11842 +#: pg_dump.c:12103 #, c-format msgid "WARNING: bogus value in pg_transform.trffromsql field\n" msgstr "ATTENZIONE: valore non corretto nel campo pg_transform.trffromsql\n" -#: pg_dump.c:11863 +#: pg_dump.c:12124 #, c-format msgid "WARNING: bogus value in pg_transform.trftosql field\n" msgstr "ATTENZIONE: valore non corretto nel campo pg_transform.trftosql\n" -#: pg_dump.c:12254 +#: pg_dump.c:12515 #, c-format msgid "WARNING: could not find operator with OID %s\n" msgstr "ATTENZIONE: operatore con OID %s non trovato\n" -#: pg_dump.c:12318 +#: pg_dump.c:12579 #, c-format -msgid "WARNING: invalid type %c of access method %s\n" -msgstr "ATTENZIONE: tipo %c non valido del metodo di accesso %s\n" +msgid "WARNING: invalid type \"%c\" of access method \"%s\"\n" +msgstr "ATTENZIONE: tipo \"%c\" non valido del metodo di accesso \"%s\"\n" -#: pg_dump.c:13516 +#: pg_dump.c:13780 #, c-format msgid "WARNING: aggregate function %s could not be dumped correctly for this database version; ignored\n" msgstr "ATTENZIONE: la funzione di aggregazione %s non può essere scaricata correttamente per questa versione database; ignorata\n" -#: pg_dump.c:14384 +#: pg_dump.c:14652 #, c-format msgid "unrecognized object type in default privileges: %d\n" msgstr "tipo di oggetto sconosciuto nei privilegi predefiniti: %d\n" -#: pg_dump.c:14399 +#: pg_dump.c:14670 #, c-format msgid "could not parse default ACL list (%s)\n" msgstr "non è stato possibile interpretare la ACL predefinita (%s)\n" -#: pg_dump.c:14470 +#: pg_dump.c:14741 #, c-format msgid "could not parse initial GRANT ACL list (%s) or initial REVOKE ACL list (%s) for object \"%s\" (%s)\n" msgstr "non è stato possibile interpretare il GRANT ACL iniziale (%s) o il REVOKE ACL iniziale (%s) per l'oggetto \"%s\" (%s)\n" -#: pg_dump.c:14478 +#: pg_dump.c:14749 #, c-format msgid "could not parse GRANT ACL list (%s) or REVOKE ACL list (%s) for object \"%s\" (%s)\n" msgstr "non è stato possibile interpretare il GRANT ACL (%s) o il REVOKE ACL (%s) per l'oggetto \"%s\" (%s)\n" -#: pg_dump.c:14954 +#: pg_dump.c:15233 #, c-format msgid "query to obtain definition of view \"%s\" returned no data\n" msgstr "la query per ottenere la definizione della vista \"%s\" non ha restituito dati\n" -#: pg_dump.c:14957 +#: pg_dump.c:15236 #, c-format msgid "query to obtain definition of view \"%s\" returned more than one definition\n" msgstr "la query per ottenere la definizione della vista \"%s\" ha restituito più di una definizione\n" -#: pg_dump.c:14964 +#: pg_dump.c:15243 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)\n" msgstr "la definizione della vista \"%s\" sembra essere vuota (lunghezza zero)\n" -#: pg_dump.c:15722 +#: pg_dump.c:16002 #, c-format msgid "invalid column number %d for table \"%s\"\n" msgstr "il numero di colonne %d non è valido per la tabella \"%s\"\n" -#: pg_dump.c:15851 +#: pg_dump.c:16131 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "omesso indice per vincolo \"%s\"\n" -#: pg_dump.c:16054 +#: pg_dump.c:16334 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "tipo di vincolo sconosciuto: %c\n" -#: pg_dump.c:16208 pg_dump.c:16377 +#: pg_dump.c:16488 pg_dump.c:16661 #, c-format msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" msgid_plural "query to get data of sequence \"%s\" returned %d rows (expected 1)\n" msgstr[0] "la query per ottenere i dati della sequenza \"%s\" ha restituito %d riga (prevista 1)\n" msgstr[1] "la query per ottenere i dati della sequenza \"%s\" ha restituito %d righe (prevista 1)\n" -#: pg_dump.c:16219 +#: pg_dump.c:16499 #, c-format msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" msgstr "la query per ottenere dati della sequenza \"%s\" ha restituito il nome \"%s\"\n" -#: pg_dump.c:16475 +#: pg_dump.c:16759 #, c-format msgid "unexpected tgtype value: %d\n" msgstr "valore tgtype inatteso: %d\n" -#: pg_dump.c:16557 +#: pg_dump.c:16841 #, c-format msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" msgstr "la stringa argomento (%s) non è valida per il trigger \"%s\" sulla tabella \"%s\"\n" -#: pg_dump.c:16754 +#: pg_dump.c:17038 #, c-format msgid "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows returned\n" msgstr "la query per ottenere regole \"%s\" per la tabella \"%s\" ha fallito: ha restituito un numero errato di righe\n" -#: pg_dump.c:17143 +#: pg_dump.c:17427 #, c-format msgid "reading dependency data\n" msgstr "lettura dati di dipendenza\n" -#: pg_dump.c:17704 +#: pg_dump.c:17984 #, c-format msgid "WARNING: could not parse reloptions array\n" msgstr "ATTENZIONE: errore di lettura dell'array reloptions\n" -#: pg_dump.c:17768 -#, c-format -msgid "query returned %d row instead of one: %s\n" -msgid_plural "query returned %d rows instead of one: %s\n" -msgstr[0] "la query ha restituito %d riga invece di una: %s\n" -msgstr[1] "la query ha restituito %d righe invece di una: %s\n" - #. translator: this is a module name #: pg_dump_sort.c:23 msgid "sorter" @@ -2170,34 +2191,34 @@ msgstr "dipendenza non valida %d\n" msgid "could not identify dependency loop\n" msgstr "identificazione del ciclo di dipendenze fallito\n" -#: pg_dump_sort.c:1261 +#: pg_dump_sort.c:1262 #, c-format msgid "NOTICE: there are circular foreign-key constraints on this table:\n" msgid_plural "NOTICE: there are circular foreign-key constraints among these tables:\n" msgstr[0] "AVVISO: ci sono vincoli di dipendenza circolari tra chiavi esterne in questa tabella:\n" msgstr[1] "AVVISO: ci sono vincoli di dipendenza circolari tra chiavi esterne tra queste tabelle:\n" -#: pg_dump_sort.c:1265 pg_dump_sort.c:1285 +#: pg_dump_sort.c:1266 pg_dump_sort.c:1286 #, c-format msgid " %s\n" msgstr " %s\n" -#: pg_dump_sort.c:1266 +#: pg_dump_sort.c:1267 #, c-format msgid "You might not be able to restore the dump without using --disable-triggers or temporarily dropping the constraints.\n" msgstr "Potreste non essere in grado di ripristinare l'archivio senza usare --disable-triggers o eliminare temporaneamente i vincoli.\n" -#: pg_dump_sort.c:1267 +#: pg_dump_sort.c:1268 #, c-format msgid "Consider using a full dump instead of a --data-only dump to avoid this problem.\n" msgstr "Considera l'uso di un salvataggio completo invece di uno --data-only per evitare questo problema.\n" -#: pg_dump_sort.c:1279 +#: pg_dump_sort.c:1280 #, c-format msgid "WARNING: could not resolve dependency loop among these items:\n" msgstr "ATTENZIONE: risoluzione del ciclo di dipendenze tra questi elementi fallito:\n" -#: pg_dumpall.c:182 +#: pg_dumpall.c:180 #, c-format msgid "" "The program \"pg_dump\" is needed by %s but was not found in the\n" @@ -2208,7 +2229,7 @@ msgstr "" "stessa directory di \"%s\".\n" "Verifica che l'installazione sia corretta.\n" -#: pg_dumpall.c:189 +#: pg_dumpall.c:187 #, c-format msgid "" "The program \"pg_dump\" was found by \"%s\"\n" @@ -2219,32 +2240,32 @@ msgstr "" "ma non è la stessa versione di %s.\n" "Controllate la vostra installazione.\n" -#: pg_dumpall.c:319 +#: pg_dumpall.c:317 #, c-format msgid "%s: options -g/--globals-only and -r/--roles-only cannot be used together\n" msgstr "%s: le opzioni -g/--globals-only e -r/--roles-only non possono essere usate insieme\n" -#: pg_dumpall.c:328 +#: pg_dumpall.c:326 #, c-format msgid "%s: options -g/--globals-only and -t/--tablespaces-only cannot be used together\n" msgstr "%s: le opzioni -g/--globals-only e -t/--tablespaces-only non possono essere usate insieme\n" -#: pg_dumpall.c:337 pg_restore.c:345 +#: pg_dumpall.c:335 pg_restore.c:361 #, c-format msgid "%s: option --if-exists requires option -c/--clean\n" msgstr "%s: l'opzione --if-exists richiede l'opzione -c/--clean\n" -#: pg_dumpall.c:344 +#: pg_dumpall.c:342 #, c-format msgid "%s: options -r/--roles-only and -t/--tablespaces-only cannot be used together\n" msgstr "%s: la opzioni -r/--roles-only e -t/--tablespaces-only non possono essere usate insieme\n" -#: pg_dumpall.c:386 pg_dumpall.c:1909 +#: pg_dumpall.c:384 pg_dumpall.c:1995 #, c-format msgid "%s: could not connect to database \"%s\"\n" msgstr "%s: connessione al database \"%s\" fallita\n" -#: pg_dumpall.c:401 +#: pg_dumpall.c:399 #, c-format msgid "" "%s: could not connect to databases \"postgres\" or \"template1\"\n" @@ -2253,12 +2274,12 @@ msgstr "" "%s: non stato è possibile connettersi ai database \"postgres\" o \"template1\"\n" "Specificare un database alternativo.\n" -#: pg_dumpall.c:418 +#: pg_dumpall.c:416 #, c-format msgid "%s: could not open the output file \"%s\": %s\n" msgstr "%s: apertura del file di output \"%s\" fallita: %s\n" -#: pg_dumpall.c:548 +#: pg_dumpall.c:546 #, c-format msgid "" "%s extracts a PostgreSQL database cluster into an SQL script file.\n" @@ -2267,57 +2288,57 @@ msgstr "" "%s estrae un cluster di database PostgreSQL in un file script SQL.\n" "\n" -#: pg_dumpall.c:550 +#: pg_dumpall.c:548 #, c-format msgid " %s [OPTION]...\n" msgstr " %s [OPZIONE]...\n" -#: pg_dumpall.c:553 +#: pg_dumpall.c:551 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=NOMEFILE nome file di output\n" -#: pg_dumpall.c:559 +#: pg_dumpall.c:558 #, c-format msgid " -c, --clean clean (drop) databases before recreating\n" msgstr " -c, --clean pulisci (drop) i database prima di ricrearli\n" -#: pg_dumpall.c:560 +#: pg_dumpall.c:559 #, c-format msgid " -g, --globals-only dump only global objects, no databases\n" msgstr " -g, --globals-only scarica solo gli oggetti globali e non i database\n" -#: pg_dumpall.c:562 pg_restore.c:459 +#: pg_dumpall.c:561 pg_restore.c:465 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr " -O, --no-owner salta il ripristino del proprietario degli oggetti\n" -#: pg_dumpall.c:563 +#: pg_dumpall.c:562 #, c-format msgid " -r, --roles-only dump only roles, no databases or tablespaces\n" msgstr " -r, --roles-only scarica solo i ruoli e non i database o i tablespace\n" -#: pg_dumpall.c:565 +#: pg_dumpall.c:564 #, c-format msgid " -S, --superuser=NAME superuser user name to use in the dump\n" msgstr " -S, --superuser=NOME nome del superutente da usare nel dump\n" -#: pg_dumpall.c:566 +#: pg_dumpall.c:565 #, c-format msgid " -t, --tablespaces-only dump only tablespaces, no databases or roles\n" msgstr " -t, --tablespaces-only scarica solo i tablespace e non i database o i ruoli\n" -#: pg_dumpall.c:583 +#: pg_dumpall.c:582 #, c-format msgid " -d, --dbname=CONNSTR connect using connection string\n" msgstr " -d, --dbname=STRCONN connettiti usando la stringa di connessione\n" -#: pg_dumpall.c:585 +#: pg_dumpall.c:584 #, c-format msgid " -l, --database=DBNAME alternative default database\n" msgstr " -l, --database=NOMEDB database predefinito alternativo\n" -#: pg_dumpall.c:592 +#: pg_dumpall.c:591 #, c-format msgid "" "\n" @@ -2330,67 +2351,67 @@ msgstr "" "output.\n" "\n" -#: pg_dumpall.c:777 +#: pg_dumpall.c:792 #, c-format -msgid "%s: role name starting with 'pg_' skipped (%s)\n" -msgstr "%s: nome di ruolo (%s) saltato perché inizia con 'pg_'\n" +msgid "%s: role name starting with \"pg_\" skipped (%s)\n" +msgstr "%s: nome di ruolo (%s) saltato perché inizia con \"pg_\"\n" -#: pg_dumpall.c:1128 +#: pg_dumpall.c:1169 #, c-format msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n" msgstr "%s: non è stato possibile analizzare la lista ACL (%s) per il tablespace \"%s\"\n" -#: pg_dumpall.c:1459 +#: pg_dumpall.c:1537 #, c-format msgid "%s: could not parse ACL list (%s) for database \"%s\"\n" msgstr "%s: non è stato possibile analizzare la lista ACL (%s) per il database \"%s\"\n" -#: pg_dumpall.c:1676 +#: pg_dumpall.c:1755 #, c-format msgid "%s: dumping database \"%s\"...\n" msgstr "%s: scaricamento del database \"%s\"...\n" -#: pg_dumpall.c:1697 +#: pg_dumpall.c:1779 #, c-format msgid "%s: pg_dump failed on database \"%s\", exiting\n" msgstr "%s: pg_dump fallito per il database \"%s\", in uscita\n" -#: pg_dumpall.c:1706 +#: pg_dumpall.c:1788 #, c-format msgid "%s: could not re-open the output file \"%s\": %s\n" msgstr "%s: riapertura del file di output \"%s\" fallita: %s\n" -#: pg_dumpall.c:1751 +#: pg_dumpall.c:1833 #, c-format msgid "%s: running \"%s\"\n" msgstr "%s: in elaborazione \"%s\"\n" -#: pg_dumpall.c:1931 +#: pg_dumpall.c:2017 #, c-format msgid "%s: could not connect to database \"%s\": %s\n" msgstr "%s: connessione al database \"%s\" fallita: %s\n" -#: pg_dumpall.c:1961 +#: pg_dumpall.c:2047 #, c-format msgid "%s: could not get server version\n" msgstr "%s: non è stato possibile ottenere la versione del server\n" -#: pg_dumpall.c:1967 +#: pg_dumpall.c:2053 #, c-format msgid "%s: could not parse server version \"%s\"\n" msgstr "%s: non è stato possibile analizzare la versione del server \"%s\"\n" -#: pg_dumpall.c:2045 pg_dumpall.c:2071 +#: pg_dumpall.c:2131 pg_dumpall.c:2157 #, c-format msgid "%s: executing %s\n" msgstr "%s: esecuzione di %s\n" -#: pg_dumpall.c:2051 pg_dumpall.c:2077 +#: pg_dumpall.c:2137 pg_dumpall.c:2163 #, c-format msgid "%s: query failed: %s" msgstr "%s: query fallita: %s" -#: pg_dumpall.c:2053 pg_dumpall.c:2079 +#: pg_dumpall.c:2139 pg_dumpall.c:2165 #, c-format msgid "%s: query was: %s\n" msgstr "%s: la query era: %s\n" @@ -2410,27 +2431,32 @@ msgstr "%s: le opzioni -s/--schema-only e -a/--data-only non possono essere usat msgid "%s: options -c/--clean and -a/--data-only cannot be used together\n" msgstr "%s: le opzioni -c/--clean e -a/--data-only non possono essere usate insieme\n" -#: pg_restore.c:331 +#: pg_restore.c:330 +#, c-format +msgid "%s: invalid number of parallel jobs\n" +msgstr "%s: numero di job paralleli non valido\n" + +#: pg_restore.c:338 +#, c-format +msgid "%s: maximum number of parallel jobs is %d\n" +msgstr "%s: il numero massimo di job paralleli è %d\n" + +#: pg_restore.c:347 #, c-format msgid "%s: cannot specify both --single-transaction and multiple jobs\n" msgstr "%s: non si può specificare insieme --single-transaction e job multipli\n" -#: pg_restore.c:372 +#: pg_restore.c:388 #, c-format msgid "unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"t\"\n" msgstr "formato di archivio sconosciuto \"%s\"; specificare \"c\", \"d\" o \"t\"\n" -#: pg_restore.c:404 -#, c-format -msgid "%s: maximum number of parallel jobs is %d\n" -msgstr "%s: il numero massimo di job paralleli è %d\n" - -#: pg_restore.c:422 +#: pg_restore.c:428 #, c-format msgid "WARNING: errors ignored on restore: %d\n" msgstr "ATTENZIONE: errore ignorato durante il ripristino: %d\n" -#: pg_restore.c:436 +#: pg_restore.c:442 #, c-format msgid "" "%s restores a PostgreSQL database from an archive created by pg_dump.\n" @@ -2439,47 +2465,47 @@ msgstr "" "%s ripristino di un database PostgreSQL da un archivio creato con pg_dump.\n" "\n" -#: pg_restore.c:438 +#: pg_restore.c:444 #, c-format msgid " %s [OPTION]... [FILE]\n" msgstr " %s [OPZIONE]... [FILE]\n" -#: pg_restore.c:441 +#: pg_restore.c:447 #, c-format msgid " -d, --dbname=NAME connect to database name\n" msgstr " -d, --dbname=NOME nome del database a cui connettersi\n" -#: pg_restore.c:442 +#: pg_restore.c:448 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=NOMEFILE nome del file di output\n" -#: pg_restore.c:443 +#: pg_restore.c:449 #, c-format msgid " -F, --format=c|d|t backup file format (should be automatic)\n" msgstr " -F, --format=c|d|t formato del file di backup (dovrebbe essere automatico)\n" -#: pg_restore.c:444 +#: pg_restore.c:450 #, c-format msgid " -l, --list print summarized TOC of the archive\n" msgstr " -l, --list stampa un riassunto della TOC dell'archivio\n" -#: pg_restore.c:445 +#: pg_restore.c:451 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose stampa più informazioni\n" -#: pg_restore.c:446 +#: pg_restore.c:452 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version mostra informazioni sulla versione ed esci\n" -#: pg_restore.c:447 +#: pg_restore.c:453 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help mostra questo aiuto ed esci\n" -#: pg_restore.c:449 +#: pg_restore.c:455 #, c-format msgid "" "\n" @@ -2488,32 +2514,32 @@ msgstr "" "\n" "Opzioni per il controllo del ripristino:\n" -#: pg_restore.c:450 +#: pg_restore.c:456 #, c-format msgid " -a, --data-only restore only the data, no schema\n" msgstr " -a, --data-only ripristina solo i dati, non gli schemi\n" -#: pg_restore.c:452 +#: pg_restore.c:458 #, c-format msgid " -C, --create create the target database\n" msgstr " -C, --create crea il database in oggetto\n" -#: pg_restore.c:453 +#: pg_restore.c:459 #, c-format msgid " -e, --exit-on-error exit on error, default is to continue\n" msgstr " -e, --exit-on-error esci in caso di errore, il comportamento predefinito è continuare\n" -#: pg_restore.c:454 +#: pg_restore.c:460 #, c-format msgid " -I, --index=NAME restore named index\n" msgstr " -I, --index=NOME ripristina l'indice indicato\n" -#: pg_restore.c:455 +#: pg_restore.c:461 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to restore\n" msgstr " -j, --jobs=NUM per il ripristino usa questo numero di job paralleli\n" -#: pg_restore.c:456 +#: pg_restore.c:462 #, c-format msgid "" " -L, --use-list=FILENAME use table of contents from this file for\n" @@ -2522,52 +2548,52 @@ msgstr "" " -L, --use-list=NOMEFILE utilizza la tabella dei contenuti di questo file per\n" " selezionare/ordinare l'output\n" -#: pg_restore.c:458 +#: pg_restore.c:464 #, c-format msgid " -n, --schema=NAME restore only objects in this schema\n" msgstr " -n, --schema=NOME ripristina solo gli oggetti in questo schema\n" -#: pg_restore.c:460 +#: pg_restore.c:466 #, c-format msgid " -P, --function=NAME(args) restore named function\n" msgstr " -P, --function=NOME(arg) ripristina la funzione indicata\n" -#: pg_restore.c:461 +#: pg_restore.c:467 #, c-format msgid " -s, --schema-only restore only the schema, no data\n" msgstr " -s, --schema-only ripristina solo lo schema e non i dati\n" -#: pg_restore.c:462 +#: pg_restore.c:468 #, c-format msgid " -S, --superuser=NAME superuser user name to use for disabling triggers\n" msgstr " -S, --superuser=NOME nome del superutente da usare per disabilitare i trigger\n" -#: pg_restore.c:463 +#: pg_restore.c:469 #, c-format -msgid " -t, --table=NAME restore named relation (table, view, etc)\n" +msgid " -t, --table=NAME restore named relation (table, view, etc.)\n" msgstr " -t, --table=NOME ripristina la relazione indicata (tabella, vista, ecc.)\n" -#: pg_restore.c:464 +#: pg_restore.c:470 #, c-format msgid " -T, --trigger=NAME restore named trigger\n" msgstr " -T, --trigger=NOME ripristina il trigger indicato\n" -#: pg_restore.c:465 +#: pg_restore.c:471 #, c-format msgid " -x, --no-privileges skip restoration of access privileges (grant/revoke)\n" msgstr " -x, --no-privileges salta il ripristino dei privilegi di accesso (grant/revoke)\n" -#: pg_restore.c:466 +#: pg_restore.c:472 #, c-format msgid " -1, --single-transaction restore as a single transaction\n" msgstr " -1, --single-transaction ripristina in un'unica transazione\n" -#: pg_restore.c:468 +#: pg_restore.c:474 #, c-format msgid " --enable-row-security enable row security\n" msgstr " --enable-row-security abilita la sicurezza per riga\n" -#: pg_restore.c:470 +#: pg_restore.c:476 #, c-format msgid "" " --no-data-for-failed-tables do not restore data of tables that could not be\n" @@ -2576,27 +2602,27 @@ msgstr "" " --no-data-for-failed-tables non ripristinare i dati delle tabelle che non\n" " è stato possibile creare\n" -#: pg_restore.c:472 +#: pg_restore.c:478 #, c-format msgid " --no-security-labels do not restore security labels\n" msgstr " --no-security-labels do ripristinare le etichette di sicurezza\n" -#: pg_restore.c:473 +#: pg_restore.c:479 #, c-format msgid " --no-tablespaces do not restore tablespace assignments\n" msgstr " --no-tablespaces non ripristina le assegnazioni dei tablespace\n" -#: pg_restore.c:474 +#: pg_restore.c:480 #, c-format msgid " --section=SECTION restore named section (pre-data, data, or post-data)\n" msgstr " --section=SEZIONE ripristina la sezione indicata (pre-data, data o post-data)\n" -#: pg_restore.c:487 +#: pg_restore.c:493 #, c-format msgid " --role=ROLENAME do SET ROLE before restore\n" msgstr " --role=NOMERUOLO esegui SET ROLE prima del ripristino\n" -#: pg_restore.c:489 +#: pg_restore.c:495 #, c-format msgid "" "\n" @@ -2607,7 +2633,7 @@ msgstr "" "Le opzioni -I, -n, -P, -t, -T e --section possono essere combinate e specificate\n" "più volte per selezionare più oggetti.\n" -#: pg_restore.c:492 +#: pg_restore.c:498 #, c-format msgid "" "\n" diff --git a/src/bin/pg_dump/po/ja.po b/src/bin/pg_dump/po/ja.po index 980eab6967..0ebce479eb 100644 --- a/src/bin/pg_dump/po/ja.po +++ b/src/bin/pg_dump/po/ja.po @@ -3,11 +3,11 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.1 beta 2\n" +"Project-Id-Version: PostgreSQL 9.6.3\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2013-08-18 11:39+0900\n" +"POT-Creation-Date: 2017-04-04 09:28+0900\n" "PO-Revision-Date: 2013-08-18 12:05+0900\n" -"Last-Translator: HOTTA Michihide \n" +"Last-Translator: Okano Naoki \n" "Language-Team: jpug-doc \n" "Language: ja\n" "MIME-Version: 1.0\n" @@ -15,215 +15,269 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: ../../common/fe_memutils.c:33 ../../common/fe_memutils.c:60 -#: ../../common/fe_memutils.c:83 pg_backup_db.c:134 pg_backup_db.c:189 -#: pg_backup_db.c:233 pg_backup_db.c:279 -#, c-format -msgid "out of memory\n" -msgstr "メモリä¸è¶³ã§ã™\n" - -#: ../../common/fe_memutils.c:77 -#, c-format -msgid "cannot duplicate null pointer (internal error)\n" -msgstr "null ãƒã‚¤ãƒ³ã‚¿ã‚’複製ã§ãã¾ã›ã‚“(内部エラー)。\n" - -#: ../../port/exec.c:127 ../../port/exec.c:241 ../../port/exec.c:284 +#: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, c-format msgid "could not identify current directory: %s" msgstr "ç¾åœ¨ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’èªè­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: ../../port/exec.c:146 +#: ../../common/exec.c:146 #, c-format msgid "invalid binary \"%s\"" msgstr "ãƒã‚¤ãƒŠãƒª\"%s\"ã¯ç„¡åйã§ã™" -#: ../../port/exec.c:195 +#: ../../common/exec.c:195 #, c-format msgid "could not read binary \"%s\"" msgstr "ãƒã‚¤ãƒŠãƒª\"%s\"を読ã¿å–れã¾ã›ã‚“ã§ã—ãŸ" -#: ../../port/exec.c:202 +#: ../../common/exec.c:202 #, c-format msgid "could not find a \"%s\" to execute" msgstr "実行ã™ã‚‹\"%s\"ãŒã‚りã¾ã›ã‚“ã§ã—ãŸ" -#: ../../port/exec.c:257 ../../port/exec.c:293 +#: ../../common/exec.c:257 ../../common/exec.c:293 #, c-format msgid "could not change directory to \"%s\": %s" msgstr "ディレクトリ\"%s\"ã«ç§»å‹•ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: ../../port/exec.c:272 +#: ../../common/exec.c:272 #, c-format msgid "could not read symbolic link \"%s\"" msgstr "シンボリックリンク\"%s\"ã®èª­ã¿å–りã«å¤±æ•—ã—ã¾ã—ãŸ" -#: ../../port/exec.c:523 +#: ../../common/exec.c:523 #, c-format msgid "pclose failed: %s" msgstr "pcloseãŒå¤±æ•—ã—ã¾ã—ãŸ: %s" -#: common.c:105 +#: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 +#: ../../common/fe_memutils.c:98 pg_backup_db.c:158 pg_backup_db.c:213 +#: pg_backup_db.c:272 pg_backup_db.c:314 #, c-format -msgid "reading schemas\n" -msgstr "スキーマを読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" +msgid "out of memory\n" +msgstr "メモリä¸è¶³ã§ã™\n" -#: common.c:116 +#: ../../common/fe_memutils.c:92 #, c-format -msgid "reading user-defined tables\n" -msgstr "ユーザ定義ã®ãƒ†ãƒ¼ãƒ–ルを読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" +msgid "cannot duplicate null pointer (internal error)\n" +msgstr "null ãƒã‚¤ãƒ³ã‚¿ã‚’複製ã§ãã¾ã›ã‚“(内部エラー)。\n" + +#: ../../common/wait_error.c:47 +#, c-format +msgid "command not executable" +msgstr "コマンドã¯å®Ÿè¡Œå½¢å¼ã§ã¯ã‚りã¾ã›ã‚“" + +#: ../../common/wait_error.c:51 +#, c-format +msgid "command not found" +msgstr "コマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" -#: common.c:124 +#: ../../common/wait_error.c:56 +#, c-format +msgid "child process exited with exit code %d" +msgstr "å­ãƒ—ロセスãŒçµ‚了コード%dã§çµ‚了ã—ã¾ã—ãŸ" + +#: ../../common/wait_error.c:63 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "å­ãƒ—ロセスãŒä¾‹å¤–0x%Xã§çµ‚了ã—ã¾ã—ãŸ" + +#: ../../common/wait_error.c:73 +#, c-format +msgid "child process was terminated by signal %s" +msgstr "å­ãƒ—ロセスãŒã‚·ã‚°ãƒŠãƒ«%sã§çµ‚了ã—ã¾ã—ãŸ" + +#: ../../common/wait_error.c:77 +#, c-format +msgid "child process was terminated by signal %d" +msgstr "å­ãƒ—ロセスãŒã‚·ã‚°ãƒŠãƒ«%dã§çµ‚了ã—ã¾ã—ãŸ" + +#: ../../common/wait_error.c:82 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "å­ãƒ—ãƒ­ã‚»ã‚¹ãŒæœªçŸ¥ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹%dã§çµ‚了ã—ã¾ã—ãŸ" + +#: common.c:121 #, c-format msgid "reading extensions\n" msgstr "拡張を読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:128 +#: common.c:126 +#, c-format +msgid "identifying extension members\n" +msgstr "æ‹¡å¼µã®ãƒ¡ãƒ³ãƒã‚’識別ã—ã¦ã„ã¾ã™\n" + +#: common.c:130 +#, c-format +msgid "reading schemas\n" +msgstr "スキーマを読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" + +#: common.c:141 +#, c-format +msgid "reading user-defined tables\n" +msgstr "ユーザ定義ã®ãƒ†ãƒ¼ãƒ–ルを読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" + +#: common.c:149 #, c-format msgid "reading user-defined functions\n" msgstr "ユーザ定義関数を読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:134 +#: common.c:155 #, c-format msgid "reading user-defined types\n" msgstr "ユーザ定義型を読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:140 +#: common.c:161 #, c-format msgid "reading procedural languages\n" msgstr "手続ã言語を読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:144 +#: common.c:165 #, c-format msgid "reading user-defined aggregate functions\n" msgstr "ユーザ定義ã®é›†ç´„関数を読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:148 +#: common.c:169 #, c-format msgid "reading user-defined operators\n" msgstr "ユーザ定義演算å­ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:153 +#: common.c:174 +#, c-format +msgid "reading user-defined access methods\n" +msgstr "ユーザ定義ã®ã‚¢ã‚¯ã‚»ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" + +#: common.c:178 #, c-format msgid "reading user-defined operator classes\n" msgstr "ãƒ¦ãƒ¼ã‚¶å®šç¾©ã®æ¼”ç®—å­ã‚¯ãƒ©ã‚¹ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:157 +#: common.c:182 #, c-format msgid "reading user-defined operator families\n" msgstr "ãƒ¦ãƒ¼ã‚¶å®šç¾©ã®æ¼”ç®—å­ç¾¤ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:161 +#: common.c:186 #, c-format msgid "reading user-defined text search parsers\n" msgstr "ユーザ定義テキスト検索パーサを読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:165 +#: common.c:190 #, c-format msgid "reading user-defined text search templates\n" msgstr "ユーザ定義ã®ãƒ†ã‚­ã‚¹ãƒˆæ¤œç´¢ãƒ†ãƒ³ãƒ—レートを読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:169 +#: common.c:194 #, c-format msgid "reading user-defined text search dictionaries\n" msgstr "ユーザ定義ã®ãƒ†ã‚­ã‚¹ãƒˆæ¤œç´¢è¾žæ›¸ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:173 +#: common.c:198 #, c-format msgid "reading user-defined text search configurations\n" msgstr "ユーザ定義ã®ãƒ†ã‚­ã‚¹ãƒˆæ¤œç´¢è¨­å®šã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:177 +#: common.c:202 #, c-format msgid "reading user-defined foreign-data wrappers\n" msgstr "ユーザ定義ã®å¤–国語データラッパーを読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:181 +#: common.c:206 #, c-format msgid "reading user-defined foreign servers\n" msgstr "ユーザ定義ã®å¤–国語サーãƒãƒ¼ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:185 +#: common.c:210 #, c-format msgid "reading default privileges\n" msgstr "ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®æ¨©é™è¨­å®šã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:189 +#: common.c:214 #, c-format msgid "reading user-defined collations\n" msgstr "ユーザ定義ã®ç…§åˆé †åºã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:194 +#: common.c:219 #, c-format msgid "reading user-defined conversions\n" msgstr "ユーザ定義ã®å¤‰æ›ãƒ«ãƒ¼ãƒãƒ³ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:198 +#: common.c:223 #, c-format msgid "reading type casts\n" msgstr "型キャストを読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:202 +#: common.c:227 +#, c-format +msgid "reading transforms\n" +msgstr "変æ›ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" + +#: common.c:231 #, c-format msgid "reading table inheritance information\n" msgstr "テーブルã®ç¶™æ‰¿æƒ…報を読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:206 +#: common.c:235 #, c-format -#| msgid "reading triggers\n" msgid "reading event triggers\n" msgstr "イベントトリガを読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:215 +#: common.c:240 #, c-format -msgid "finding extension members\n" -msgstr "æ‹¡å¼µã®ãƒ¡ãƒ³ãƒã‚’探ã—ã¦ã„ã¾ã™\n" +msgid "finding extension tables\n" +msgstr "æ‹¡å¼µã®ãƒ†ãƒ¼ãƒ–ルを探ã—ã¦ã„ã¾ã™\n" -#: common.c:220 +#: common.c:245 #, c-format msgid "finding inheritance relationships\n" msgstr "継承関係を検索ã—ã¦ã„ã¾ã™\n" -#: common.c:224 +#: common.c:249 #, c-format msgid "reading column info for interesting tables\n" msgstr "継承テーブル用ã®åˆ—情報を読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:228 +#: common.c:253 #, c-format msgid "flagging inherited columns in subtables\n" msgstr "å­ãƒ†ãƒ¼ãƒ–ルã®ç¶™æ‰¿åˆ—ã«ãƒ•ラグを設定ã—ã¦ã„ã¾ã™\n" -#: common.c:232 +#: common.c:257 #, c-format msgid "reading indexes\n" msgstr "インデックスを読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:236 +#: common.c:261 #, c-format msgid "reading constraints\n" msgstr "制約を読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:240 +#: common.c:265 #, c-format msgid "reading triggers\n" msgstr "トリガを読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:244 +#: common.c:269 #, c-format msgid "reading rewrite rules\n" msgstr "æ›¸ãæ›ãˆãƒ«ãƒ¼ãƒ«ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: common.c:792 +#: common.c:273 +#, c-format +msgid "reading policies\n" +msgstr "ãƒãƒªã‚·ãƒ¼ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" + +#: common.c:908 #, c-format msgid "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n" msgstr "å¥å…¨æ€§æ¤œæŸ»ã«å¤±æ•—ã—ã¾ã—ãŸã€‚テーブル\"%2$s\"(OID %3$u)ã®è¦ªã®OID %1$uãŒã‚りã¾ã›ã‚“ã§ã—ãŸ\n" -#: common.c:834 +#: common.c:950 #, c-format msgid "could not parse numeric array \"%s\": too many numbers\n" msgstr "数値é…列 \"%s\" ã®è§£æžã«å¤±æ•—ã—ã¾ã—ãŸ:æ¡æ•°ãŒå¤§ãã™ãŽã¾ã™\n" -#: common.c:849 +#: common.c:965 #, c-format msgid "could not parse numeric array \"%s\": invalid character in number\n" msgstr "数値é…列 \"%s\" ã®è§£æžã«å¤±æ•—ã—ã¾ã—ãŸ:æ•°ã«ç„¡åŠ¹ãªæ–‡å­—ãŒã‚りã¾ã™\n" @@ -238,78 +292,69 @@ msgstr "compress_io" msgid "invalid compression code: %d\n" msgstr "無効ãªåœ§ç¸®ã‚³ãƒ¼ãƒ‰: %d\n" -#: compress_io.c:138 compress_io.c:174 compress_io.c:195 compress_io.c:528 -#: compress_io.c:555 +#: compress_io.c:138 compress_io.c:174 compress_io.c:192 compress_io.c:519 +#: compress_io.c:562 #, c-format msgid "not built with zlib support\n" msgstr "zlibサãƒãƒ¼ãƒˆãŒãªã„ビルドã§ã™ã€‚\n" -#: compress_io.c:243 compress_io.c:352 +#: compress_io.c:242 compress_io.c:344 #, c-format msgid "could not initialize compression library: %s\n" msgstr "åœ§ç¸®ãƒ©ã‚¤ãƒ–ãƒ©ãƒªã‚’åˆæœŸåŒ–ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: compress_io.c:264 +#: compress_io.c:263 #, c-format msgid "could not close compression stream: %s\n" msgstr "圧縮用ストリームをクローズã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: compress_io.c:282 +#: compress_io.c:281 #, c-format msgid "could not compress data: %s\n" msgstr "データを圧縮ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: compress_io.c:303 compress_io.c:440 pg_backup_archiver.c:1437 -#: pg_backup_archiver.c:1460 pg_backup_custom.c:661 pg_backup_directory.c:529 -#: pg_backup_tar.c:598 pg_backup_tar.c:1087 pg_backup_tar.c:1308 -#, c-format -msgid "could not write to output file: %s\n" -msgstr "å‡ºåŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ: %s\n" - -#: compress_io.c:372 compress_io.c:388 +#: compress_io.c:361 compress_io.c:377 #, c-format msgid "could not uncompress data: %s\n" msgstr "データを伸長ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: compress_io.c:396 +#: compress_io.c:385 #, c-format msgid "could not close compression library: %s\n" msgstr "圧縮ライブラリをクローズã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: parallel.c:77 -#| msgid "tar archiver" +#: compress_io.c:596 compress_io.c:632 pg_backup_custom.c:591 +#: pg_backup_tar.c:561 +#, c-format +msgid "could not read from input file: %s\n" +msgstr "入力ファイルã‹ã‚‰èª­ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ: %s\n" + +#: compress_io.c:635 pg_backup_custom.c:588 pg_backup_directory.c:548 +#: pg_backup_tar.c:797 pg_backup_tar.c:821 +#, c-format +msgid "could not read from input file: end of file\n" +msgstr "入力ファイルã‹ã‚‰èª­ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ: ファイルã®çµ‚了ã§ã™\n" + +#: parallel.c:167 msgid "parallel archiver" msgstr "並行アーカイãƒ" -#: parallel.c:143 +#: parallel.c:231 #, c-format msgid "%s: WSAStartup failed: %d\n" msgstr "%s: WSAStartupãŒå¤±æ•—ã—ã¾ã—ãŸ: %d\n" -#: parallel.c:343 +#: parallel.c:934 #, c-format -#| msgid "server is still starting up\n" -msgid "worker is terminating\n" -msgstr "ワーカを終了ã—ã¦ã„ã¾ã™\n" - -#: parallel.c:535 -#, c-format -#| msgid "could not create SSL context: %s\n" msgid "could not create communication channels: %s\n" msgstr "通信ãƒãƒ£ãƒ³ãƒãƒ«ã‚’作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: parallel.c:605 +#: parallel.c:997 #, c-format msgid "could not create worker process: %s\n" msgstr "ワーカープロセスを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: parallel.c:822 -#, c-format -#| msgid "could not get junction for \"%s\": %s\n" -msgid "could not get relation name for OID %u: %s\n" -msgstr "OID %uã®ãƒªãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³åを入手ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" - -#: parallel.c:839 +#: parallel.c:1192 #, c-format msgid "" "could not obtain lock on relation \"%s\"\n" @@ -318,628 +363,616 @@ msgstr "" "リレーション\"%s\"ã«å¯¾ã™ã‚‹ãƒ­ãƒƒã‚¯ã‚’ç²å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚\n" "通常ã“れã¯ã€pg_dumpã®è¦ªãƒ—ロセスãŒåˆæœŸã®ACCESS SHAREロックを入手ã—ãŸå¾Œã«ã ã‚Œã‹ãŒãƒ†ãƒ¼ãƒ–ルã«å¯¾ã—ã¦ACCESS EXCLUSIVEãƒ­ãƒƒã‚¯ã‚’è¦æ±‚ã—ãŸã“ã¨ã‚’æ„味ã—ã¦ã„ã¾ã™ã€‚\n" -#: parallel.c:923 +#: parallel.c:1262 #, c-format -#| msgid "unrecognized authentication option name: \"%s\"" -msgid "unrecognized command on communication channel: %s\n" -msgstr "通信ãƒãƒ£ãƒ³ãƒãƒ«ä¸Šã§èªè­˜ã§ããªã„コマンド: \"%s\"\n" +msgid "unrecognized command received from master: \"%s\"\n" +msgstr "マスタã‹ã‚‰å—ã‘å–ã£ãŸã‚³ãƒžãƒ³ãƒ‰ãŒä¸æ˜Žã§ã™: \"%s\"\n" -#: parallel.c:956 +#: parallel.c:1300 #, c-format -#| msgid "worker process failed: exit code %d\n" msgid "a worker process died unexpectedly\n" msgstr "ãƒ¯ãƒ¼ã‚«ãƒ¼ãƒ—ãƒ­ã‚»ã‚¹ãŒæƒ³å®šå¤–ã«çµ‚了ã—ã¾ã—ãŸ\n" -#: parallel.c:983 parallel.c:992 +#: parallel.c:1326 parallel.c:1332 #, c-format -#| msgid "could not receive data from server: %s\n" -msgid "invalid message received from worker: %s\n" -msgstr "ワーカã‹ã‚‰ç„¡åйãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’å—ä¿¡ã—ã¾ã—ãŸ: %s\n" +msgid "invalid message received from worker: \"%s\"\n" +msgstr "ワーカã‹ã‚‰ç„¡åйãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’å—ä¿¡ã—ã¾ã—ãŸ: \"%s\"\n" -#: parallel.c:989 pg_backup_db.c:336 -#, c-format -msgid "%s" -msgstr "%s" - -#: parallel.c:1041 parallel.c:1085 +#: parallel.c:1389 parallel.c:1440 #, c-format msgid "error processing a parallel work item\n" msgstr "並行作業項目ã®å‡¦ç†ã§ã‚¨ãƒ©ãƒ¼\n" -#: parallel.c:1113 parallel.c:1251 +#: parallel.c:1469 parallel.c:1587 #, c-format -#| msgid "could not write to output file: %s\n" msgid "could not write to the communication channel: %s\n" msgstr "通信ãƒãƒ£ãƒ³ãƒãƒ«ã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: parallel.c:1162 -#, c-format -#| msgid "unterminated quoted string\n" -msgid "terminated by user\n" -msgstr "ユーザã«ã‚ˆã‚Šçµ‚了ã—ã¾ã—ãŸ\n" - -#: parallel.c:1214 +#: parallel.c:1547 #, c-format -#| msgid "error during file seek: %s\n" -msgid "error in ListenToWorkers(): %s\n" -msgstr "ListenToWorkers()ã§ã®ã‚¨ãƒ©ãƒ¼: %s\n" +msgid "select() failed: %s\n" +msgstr "select()ãŒå¤±æ•—ã—ã¾ã—ãŸ: %s\n" -#: parallel.c:1325 +#: parallel.c:1672 #, c-format -#| msgid "could not create inherited socket: error code %d\n" msgid "pgpipe: could not create socket: error code %d\n" msgstr "pgpipe: ソケットを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: エラーコード %d\n" -#: parallel.c:1336 +#: parallel.c:1683 #, c-format -#| msgid "could not initialize LDAP: error code %d" msgid "pgpipe: could not bind: error code %d\n" msgstr "pgpipe: ãƒã‚¤ãƒ³ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸ: エラーコード %d\n" -#: parallel.c:1343 +#: parallel.c:1690 #, c-format -#| msgid "%s: could not allocate SIDs: error code %lu\n" msgid "pgpipe: could not listen: error code %d\n" msgstr "pgpipe: リッスンã§ãã¾ã›ã‚“ã§ã—ãŸ: エラーコード %d\n" -#: parallel.c:1350 +#: parallel.c:1697 #, c-format -#| msgid "worker process failed: exit code %d\n" msgid "pgpipe: getsockname() failed: error code %d\n" msgstr "pgpipe: getsockname()ãŒå¤±æ•—ã—ã¾ã—ãŸ: エラーコード %d\n" -#: parallel.c:1357 +#: parallel.c:1708 #, c-format -#| msgid "could not create inherited socket: error code %d\n" msgid "pgpipe: could not create second socket: error code %d\n" msgstr "pgpipe: 第二ソケットを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: エラーコード %d\n" -#: parallel.c:1365 +#: parallel.c:1717 #, c-format -#| msgid "could not create inherited socket: error code %d\n" msgid "pgpipe: could not connect socket: error code %d\n" msgstr "pgpipe: ソケットを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: エラーコード %d\n" -#: parallel.c:1372 +#: parallel.c:1726 #, c-format -#| msgid "could not accept SSL connection: %m" msgid "pgpipe: could not accept connection: error code %d\n" msgstr "pgpipe: 接続をå—ã‘付ã‘られã¾ã›ã‚“ã§ã—ãŸ: エラーコード %d\n" #. translator: this is a module name -#: pg_backup_archiver.c:51 +#: pg_backup_archiver.c:55 msgid "archiver" msgstr "アーカイãƒ" -#: pg_backup_archiver.c:169 pg_backup_archiver.c:1300 +#: pg_backup_archiver.c:234 pg_backup_archiver.c:1563 #, c-format msgid "could not close output file: %s\n" msgstr "出力ファイルをクローズã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_backup_archiver.c:204 pg_backup_archiver.c:209 +#: pg_backup_archiver.c:280 pg_backup_archiver.c:285 #, c-format msgid "WARNING: archive items not in correct section order\n" msgstr "警告: ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–é …ç›®ãŒæ­£ç¢ºã«ã‚»ã‚¯ã‚·ãƒ§ãƒ³é †ã§ã¯ã‚りã¾ã›ã‚“\n" -#: pg_backup_archiver.c:215 +#: pg_backup_archiver.c:291 #, c-format msgid "unexpected section code %d\n" msgstr "想定外ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚³ãƒ¼ãƒ‰ %d\n" -#: pg_backup_archiver.c:247 +#: pg_backup_archiver.c:327 #, c-format msgid "-C and -1 are incompatible options\n" msgstr "-C 㨠-1 ã¯äº’æ›æ€§ãŒã‚りã¾ã›ã‚“\n" -#: pg_backup_archiver.c:257 +#: pg_backup_archiver.c:337 #, c-format msgid "parallel restore is not supported with this archive file format\n" msgstr "ã“ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ファイルフォーマットã§ã¯ä¸¦åˆ—リストアをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“\n" -#: pg_backup_archiver.c:261 +#: pg_backup_archiver.c:341 #, c-format msgid "parallel restore is not supported with archives made by pre-8.0 pg_dump\n" msgstr "8.0 以å‰ã® pg_dump ã§ä½œã‚‰ã‚ŒãŸã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã§ã¯ä¸¦åˆ—リストアをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“\n" -#: pg_backup_archiver.c:279 +#: pg_backup_archiver.c:359 #, c-format msgid "cannot restore from compressed archive (compression not supported in this installation)\n" msgstr "圧縮ã•れãŸã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã‹ã‚‰ãƒªã‚¹ãƒˆã‚¢ã§ãã¾ã›ã‚“(å°Žå…¥ã•れãŸãƒã‚¤ãƒŠãƒªã«ã¯åœ§ç¸®æ©Ÿèƒ½ã®ã‚µãƒãƒ¼ãƒˆãŒçµ„ã¿è¾¼ã¾ã‚Œã¦ã„ã¾ã›ã‚“)\n" -#: pg_backup_archiver.c:296 +#: pg_backup_archiver.c:376 #, c-format msgid "connecting to database for restore\n" msgstr "リストアã®ãŸã‚ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æŽ¥ç¶šã—ã¦ã„ã¾ã™\n" -#: pg_backup_archiver.c:298 +#: pg_backup_archiver.c:378 #, c-format msgid "direct database connections are not supported in pre-1.3 archives\n" msgstr "1.3以å‰ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã§ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®ç›´æŽ¥æŽ¥ç¶šã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“\n" -#: pg_backup_archiver.c:339 +#: pg_backup_archiver.c:423 #, c-format msgid "implied data-only restore\n" msgstr "データã®ã¿ã®ãƒªã‚¹ãƒˆã‚¢ã‚’目的ã¨ã—ã¦ã„ã¾ã™\n" -#: pg_backup_archiver.c:408 +#: pg_backup_archiver.c:493 #, c-format msgid "dropping %s %s\n" msgstr "%s %sを削除ã—ã¦ã„ã¾ã™\n" -#: pg_backup_archiver.c:475 +#: pg_backup_archiver.c:586 +#, c-format +msgid "WARNING: could not find where to insert IF EXISTS in statement \"%s\"\n" +msgstr "警告: æ–‡\"%s\"ã«IF EXISTSを挿入ã™ã‚‹å ´æ‰€ãŒã‚りã¾ã›ã‚“ã§ã—ãŸ\n" + +#: pg_backup_archiver.c:662 #, c-format -msgid "setting owner and privileges for %s %s\n" -msgstr "%s %sç”¨ã®æ‰€æœ‰è€…ã¨æ¨©é™ã‚’設定ã—ã¦ã„ã¾ã™\n" +msgid "setting owner and privileges for %s \"%s.%s\"\n" +msgstr "%s \"%s.%s\"ç”¨ã®æ‰€æœ‰è€…ã¨æ¨©é™ã‚’設定ã—ã¦ã„ã¾ã™\n" -#: pg_backup_archiver.c:541 pg_backup_archiver.c:543 +#: pg_backup_archiver.c:665 +#, c-format +msgid "setting owner and privileges for %s \"%s\"\n" +msgstr "%s \"%s\"ç”¨ã®æ‰€æœ‰è€…ã¨æ¨©é™ã‚’設定ã—ã¦ã„ã¾ã™\n" + +#: pg_backup_archiver.c:731 pg_backup_archiver.c:733 #, c-format msgid "warning from original dump file: %s\n" msgstr "オリジナルã®ãƒ€ãƒ³ãƒ—ファイルã®è­¦å‘Š: %s\n" -#: pg_backup_archiver.c:550 +#: pg_backup_archiver.c:742 #, c-format -msgid "creating %s %s\n" -msgstr "%s %sを作æˆã—ã¦ã„ã¾ã™\n" +msgid "creating %s \"%s.%s\"\n" +msgstr "%s \"%s.%s\"を作æˆã—ã¦ã„ã¾ã™\n" -#: pg_backup_archiver.c:594 +#: pg_backup_archiver.c:745 +#, c-format +msgid "creating %s \"%s\"\n" +msgstr "%s \"%s\"を作æˆã—ã¦ã„ã¾ã™\n" + +#: pg_backup_archiver.c:797 #, c-format msgid "connecting to new database \"%s\"\n" msgstr "æ–°ã—ã„データベース\"%s\"ã«æŽ¥ç¶šã—ã¦ã„ã¾ã™\n" -#: pg_backup_archiver.c:622 +#: pg_backup_archiver.c:825 #, c-format -#| msgid "restoring %s\n" msgid "processing %s\n" msgstr "%sを処ç†ã—ã¦ã„ã¾ã™\n" -#: pg_backup_archiver.c:636 +#: pg_backup_archiver.c:845 #, c-format -#| msgid "restoring data for table \"%s\"\n" -msgid "processing data for table \"%s\"\n" -msgstr "テーブル\"%s\"ã®ãƒ‡ãƒ¼ã‚¿ã‚’処ç†ã—ã¦ã„ã¾ã™\n" +msgid "processing data for table \"%s.%s\"\n" +msgstr "テーブル \"%s.%s\"ã®ãƒ‡ãƒ¼ã‚¿ã‚’処ç†ã—ã¦ã„ã¾ã™\n" -#: pg_backup_archiver.c:698 +#: pg_backup_archiver.c:907 #, c-format msgid "executing %s %s\n" msgstr "%s %sを実行ã—ã¦ã„ã¾ã™\n" -#: pg_backup_archiver.c:735 +#: pg_backup_archiver.c:946 #, c-format msgid "disabling triggers for %s\n" msgstr "%sã®ãƒˆãƒªã‚¬ã‚’無効ã«ã—ã¦ã„ã¾ã™\n" -#: pg_backup_archiver.c:761 +#: pg_backup_archiver.c:974 #, c-format msgid "enabling triggers for %s\n" msgstr "%sã®ãƒˆãƒªã‚¬ã‚’有効ã«ã—ã¦ã„ã¾ã™\n" -#: pg_backup_archiver.c:791 +#: pg_backup_archiver.c:1004 #, c-format msgid "internal error -- WriteData cannot be called outside the context of a DataDumper routine\n" msgstr "内部的エラー -- WriteDataã¯DataDumper処ç†ã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆå¤–部ã§ã¯å‘¼ã³å‡ºã™ã“ã¨ãŒã§ãã¾ã›ã‚“\n" -#: pg_backup_archiver.c:948 +#: pg_backup_archiver.c:1201 #, c-format msgid "large-object output not supported in chosen format\n" msgstr "é¸æŠžã—ãŸæ›¸å¼ã§ã¯ãƒ©ãƒ¼ã‚¸ã‚ªãƒ–ジェクト出力をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“\n" -#: pg_backup_archiver.c:1002 +#: pg_backup_archiver.c:1259 #, c-format msgid "restored %d large object\n" msgid_plural "restored %d large objects\n" msgstr[0] "%d個ã®ãƒ©ãƒ¼ã‚¸ã‚ªãƒ–ジェクトをリストアã—ã¾ã—ãŸ\n" msgstr[1] "%d個ã®ãƒ©ãƒ¼ã‚¸ã‚ªãƒ–ジェクトをリストアã—ã¾ã—ãŸ\n" -#: pg_backup_archiver.c:1023 pg_backup_tar.c:731 +#: pg_backup_archiver.c:1280 pg_backup_tar.c:739 #, c-format msgid "restoring large object with OID %u\n" msgstr "OID %uã®ãƒ©ãƒ¼ã‚¸ã‚ªãƒ–ジェクトをリストアã—ã¦ã„ã¾ã™\n" -#: pg_backup_archiver.c:1035 +#: pg_backup_archiver.c:1292 #, c-format msgid "could not create large object %u: %s" msgstr "ラージオブジェクト %u を作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: pg_backup_archiver.c:1040 pg_dump.c:2662 +#: pg_backup_archiver.c:1297 pg_dump.c:3093 #, c-format msgid "could not open large object %u: %s" msgstr "ラージオブジェクト %u をオープンã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: pg_backup_archiver.c:1097 +#: pg_backup_archiver.c:1355 #, c-format msgid "could not open TOC file \"%s\": %s\n" msgstr "TOCファイル\"%s\"をオープンã§ãã¾ã›ã‚“ã§ã—ãŸï¼š%s\n" -#: pg_backup_archiver.c:1138 +#: pg_backup_archiver.c:1396 #, c-format msgid "WARNING: line ignored: %s\n" msgstr "警告: 行を無視ã—ã¾ã—ãŸ: %s\n" -#: pg_backup_archiver.c:1145 +#: pg_backup_archiver.c:1403 #, c-format msgid "could not find entry for ID %d\n" msgstr "ID %dã®ã‚¨ãƒ³ãƒˆãƒªãŒã‚りã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_backup_archiver.c:1166 pg_backup_directory.c:222 -#: pg_backup_directory.c:595 +#: pg_backup_archiver.c:1424 pg_backup_directory.c:230 +#: pg_backup_directory.c:597 #, c-format msgid "could not close TOC file: %s\n" msgstr "TOCファイルをクローズã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_backup_archiver.c:1270 pg_backup_custom.c:161 pg_backup_directory.c:333 -#: pg_backup_directory.c:581 pg_backup_directory.c:639 -#: pg_backup_directory.c:659 +#: pg_backup_archiver.c:1533 pg_backup_custom.c:162 pg_backup_directory.c:341 +#: pg_backup_directory.c:583 pg_backup_directory.c:641 +#: pg_backup_directory.c:661 #, c-format msgid "could not open output file \"%s\": %s\n" msgstr "出力ファイル \"%s\" をオープンã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_backup_archiver.c:1273 pg_backup_custom.c:168 +#: pg_backup_archiver.c:1536 pg_backup_custom.c:169 #, c-format msgid "could not open output file: %s\n" msgstr "出力ファイルをオープンã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_backup_archiver.c:1373 +#: pg_backup_archiver.c:1642 #, c-format msgid "wrote %lu byte of large object data (result = %lu)\n" msgid_plural "wrote %lu bytes of large object data (result = %lu)\n" msgstr[0] "ラージオブジェクトã®%luãƒã‚¤ãƒˆã‚’書ã出ã—ã¾ã—ãŸ(çµæžœã¯%lu)\n" msgstr[1] "ラージオブジェクトã®%luãƒã‚¤ãƒˆã‚’書ã出ã—ã¾ã—ãŸ(çµæžœã¯%lu)\n" -#: pg_backup_archiver.c:1379 +#: pg_backup_archiver.c:1648 #, c-format msgid "could not write to large object (result: %lu, expected: %lu)\n" msgstr "ラージオブジェクトを書ã出ã™ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ(çµæžœã¯%luã€æœŸå¾…値ã¯%lu)\n" -#: pg_backup_archiver.c:1445 -#, c-format -msgid "could not write to custom output routine\n" -msgstr "カスタム出力処ç†ã«æ›¸ã出ã›ã¾ã›ã‚“ã§ã—ãŸ\n" - -#: pg_backup_archiver.c:1483 +#: pg_backup_archiver.c:1741 #, c-format msgid "Error while INITIALIZING:\n" msgstr "åˆæœŸå‡¦ç†ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒã‚りã¾ã—ãŸ:\n" -#: pg_backup_archiver.c:1488 +#: pg_backup_archiver.c:1746 #, c-format msgid "Error while PROCESSING TOC:\n" msgstr "TOC処ç†ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒã‚りã¾ã—ãŸ:\n" -#: pg_backup_archiver.c:1493 +#: pg_backup_archiver.c:1751 #, c-format msgid "Error while FINALIZING:\n" msgstr "後処ç†ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒã‚りã¾ã—ãŸ:\n" -#: pg_backup_archiver.c:1498 +#: pg_backup_archiver.c:1756 #, c-format msgid "Error from TOC entry %d; %u %u %s %s %s\n" msgstr "TOCエントリ%d; %u %u %s %s %sã®ã‚¨ãƒ©ãƒ¼ã§ã™\n" -#: pg_backup_archiver.c:1571 +#: pg_backup_archiver.c:1829 #, c-format msgid "bad dumpId\n" msgstr "ä¸è‰¯dumpId\n" -#: pg_backup_archiver.c:1592 +#: pg_backup_archiver.c:1850 #, c-format msgid "bad table dumpId for TABLE DATA item\n" msgstr "TABLE DATAé …ç›®ã«å¯¾ã™ã‚‹ä¸è‰¯ãƒ†ãƒ¼ãƒ–ルdumpId\n" -#: pg_backup_archiver.c:1684 +#: pg_backup_archiver.c:1942 #, c-format msgid "unexpected data offset flag %d\n" msgstr "想定外ã®ãƒ‡ãƒ¼ã‚¿ã‚ªãƒ•セットフラグ %d ã§ã™\n" -#: pg_backup_archiver.c:1697 +#: pg_backup_archiver.c:1955 #, c-format msgid "file offset in dump file is too large\n" msgstr "ダンプファイルã®ãƒ•ァイルオフセットãŒå¤§ãã™ãŽã¾ã™\n" -#: pg_backup_archiver.c:1791 pg_backup_archiver.c:3224 pg_backup_custom.c:639 -#: pg_backup_directory.c:509 pg_backup_tar.c:787 -#, c-format -msgid "unexpected end of file\n" -msgstr "想定外ã®ãƒ•ァイル終端ã§ã™\n" - -#: pg_backup_archiver.c:1808 +#: pg_backup_archiver.c:2068 #, c-format msgid "attempting to ascertain archive format\n" msgstr "アーカイブ書å¼ã®ç¢ºèªã‚’試んã§ã„ã¾ã™\n" -#: pg_backup_archiver.c:1834 pg_backup_archiver.c:1844 +#: pg_backup_archiver.c:2094 pg_backup_archiver.c:2104 #, c-format msgid "directory name too long: \"%s\"\n" msgstr "ディレクトリåç§°ãŒé•·ã™ãŽã¾ã™: \"%s\"\n" -#: pg_backup_archiver.c:1852 +#: pg_backup_archiver.c:2112 #, c-format msgid "directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not exist)\n" msgstr "\"%s\"ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¯æœ‰åйãªã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã§ã¯ãªã„よã†ã§ã™ï¼ˆ\"\"toc.dat\"ãŒã‚りã¾ã›ã‚“)\n" -#: pg_backup_archiver.c:1860 pg_backup_custom.c:180 pg_backup_custom.c:771 -#: pg_backup_directory.c:206 pg_backup_directory.c:394 +#: pg_backup_archiver.c:2120 pg_backup_custom.c:181 pg_backup_custom.c:770 +#: pg_backup_directory.c:214 pg_backup_directory.c:399 #, c-format msgid "could not open input file \"%s\": %s\n" msgstr "入力ファイル \"%s\" をオープンã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_backup_archiver.c:1868 pg_backup_custom.c:187 +#: pg_backup_archiver.c:2128 pg_backup_custom.c:188 #, c-format msgid "could not open input file: %s\n" msgstr "入力ファイルをオープンã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_backup_archiver.c:1877 +#: pg_backup_archiver.c:2135 #, c-format msgid "could not read input file: %s\n" msgstr "入力ファイルを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_backup_archiver.c:1879 +#: pg_backup_archiver.c:2137 #, c-format msgid "input file is too short (read %lu, expected 5)\n" msgstr "入力ファイルãŒå°ã•ã™ãŽã¾ã™(読ã¿å–り%luã€æœŸå¾…値 5)\n" -#: pg_backup_archiver.c:1944 +#: pg_backup_archiver.c:2220 #, c-format msgid "input file appears to be a text format dump. Please use psql.\n" msgstr "入力ファイルãŒãƒ†ã‚­ã‚¹ãƒˆå½¢å¼ã®ãƒ€ãƒ³ãƒ—ã®ã‚ˆã†ã§ã™ã€‚psqlを使用ã—ã¦ãã ã•ã„\n" -#: pg_backup_archiver.c:1948 +#: pg_backup_archiver.c:2226 #, c-format msgid "input file does not appear to be a valid archive (too short?)\n" msgstr "å…¥åŠ›ãƒ•ã‚¡ã‚¤ãƒ«ãŒæœ‰åйãªã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã§ã¯ãªã„よã†ã§ã™(å°ã•ã™ãŽã‚‹?)\n" -#: pg_backup_archiver.c:1951 +#: pg_backup_archiver.c:2232 #, c-format msgid "input file does not appear to be a valid archive\n" msgstr "å…¥åŠ›ãƒ•ã‚¡ã‚¤ãƒ«ãŒæœ‰åйãªã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã§ã¯ãªã„よã†ã§ã™\n" -#: pg_backup_archiver.c:1971 +#: pg_backup_archiver.c:2252 #, c-format msgid "could not close input file: %s\n" msgstr "入力ファイルをクローズã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_backup_archiver.c:1988 +#: pg_backup_archiver.c:2269 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "%sã«AHを割り当ã¦ã¦ã„ã¾ã™ã€‚書å¼ã¯%dã§ã™\n" -#: pg_backup_archiver.c:2093 +#: pg_backup_archiver.c:2374 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "ファイル書å¼\"%d\"ã¯ä¸æ˜Žã§ã™\n" -#: pg_backup_archiver.c:2243 +#: pg_backup_archiver.c:2530 #, c-format msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" msgstr "エントリID %dã¯ç¯„囲外ã§ã™ -- TOCã®ç ´æã®å¯èƒ½æ€§ãŒã‚りã¾ã™\n" -#: pg_backup_archiver.c:2359 +#: pg_backup_archiver.c:2646 #, c-format msgid "read TOC entry %d (ID %d) for %s %s\n" msgstr "%3$s %4$s用ã«TOCエントリ%1$d(ID %2$d)を読ã¿è¾¼ã¿ã¾ã—ãŸ\n" -#: pg_backup_archiver.c:2393 +#: pg_backup_archiver.c:2680 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "エンコーディング \"%s\" ã‚’èªè­˜ã§ãã¾ã›ã‚“\n" -#: pg_backup_archiver.c:2398 +#: pg_backup_archiver.c:2685 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "無効㪠ENCODING 項目:%s\n" -#: pg_backup_archiver.c:2416 +#: pg_backup_archiver.c:2703 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "無効ãªSTDSTRINGS 項目:%s\n" -#: pg_backup_archiver.c:2633 +#: pg_backup_archiver.c:2718 +#, c-format +msgid "schema \"%s\" not found\n" +msgstr "スキーマ \"%s\" ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n" + +#: pg_backup_archiver.c:2725 +#, c-format +msgid "table \"%s\" not found\n" +msgstr "テーブル \"%s\" ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n" + +#: pg_backup_archiver.c:2732 +#, c-format +msgid "index \"%s\" not found\n" +msgstr "インデックス \"%s\" ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n" + +#: pg_backup_archiver.c:2739 +#, c-format +msgid "function \"%s\" not found\n" +msgstr "関数 \"%s\" ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n" + +#: pg_backup_archiver.c:2746 +#, c-format +msgid "trigger \"%s\" not found\n" +msgstr "トリガ \"%s\" ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n" + +#: pg_backup_archiver.c:2988 #, c-format msgid "could not set session user to \"%s\": %s" msgstr "セッションユーザを\"%s\"ã«è¨­å®šã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: pg_backup_archiver.c:2665 +#: pg_backup_archiver.c:3020 #, c-format msgid "could not set default_with_oids: %s" msgstr "default_with_oidsを設定ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: pg_backup_archiver.c:2803 +#: pg_backup_archiver.c:3165 #, c-format msgid "could not set search_path to \"%s\": %s" msgstr "search_pathã‚’\"%s\"ã«è¨­å®šã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: pg_backup_archiver.c:2864 +#: pg_backup_archiver.c:3227 #, c-format msgid "could not set default_tablespace to %s: %s" msgstr "default_tablespaceã‚’%sã«è¨­å®šã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: pg_backup_archiver.c:2951 pg_backup_archiver.c:3134 +#: pg_backup_archiver.c:3314 pg_backup_archiver.c:3508 #, c-format msgid "WARNING: don't know how to set owner for object type %s\n" msgstr "WARNING: オブジェクト種類%sã«å¯¾ã™ã‚‹æ‰€æœ‰è€…ã®è¨­å®šæ–¹æ³•ãŒä¸æ˜Žã§ã™ã€‚\n" -#: pg_backup_archiver.c:3187 -#, c-format -msgid "WARNING: requested compression not available in this installation -- archive will be uncompressed\n" -msgstr "警告: è¦æ±‚ã•れãŸåœ§ç¸®æ–¹æ³•ã¯ã“ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã§åˆ©ç”¨ã§ãã¾ã›ã‚“ --アーカイブを圧縮ã—ã¾ã›ã‚“\n" - -#: pg_backup_archiver.c:3227 +#: pg_backup_archiver.c:3591 #, c-format msgid "did not find magic string in file header\n" msgstr "ファイルヘッダã«ãƒžã‚¸ãƒƒã‚¯ç•ªå·ãŒã‚りã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_backup_archiver.c:3240 +#: pg_backup_archiver.c:3604 #, c-format msgid "unsupported version (%d.%d) in file header\n" msgstr "ファイルヘッダ内ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³(%d.%d)ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“\n" -#: pg_backup_archiver.c:3245 +#: pg_backup_archiver.c:3609 #, c-format msgid "sanity check on integer size (%lu) failed\n" msgstr "æ•´æ•°ã®ã‚µã‚¤ã‚º(%lu)ã«é–¢ã™ã‚‹å¥å…¨æ€§æ¤œæŸ»ãŒå¤±æ•—ã—ã¾ã—ãŸ\n" -#: pg_backup_archiver.c:3249 +#: pg_backup_archiver.c:3613 #, c-format msgid "WARNING: archive was made on a machine with larger integers, some operations might fail\n" msgstr "警告: アーカイブã¯ã‚ˆã‚Šå¤§ããªã‚µã‚¤ã‚ºã®æ•´æ•°ã‚’æŒã¤ãƒžã‚·ãƒ³ã§ä½œæˆã•れã¾ã—ãŸã€‚ä¸€éƒ¨ã®æ“作ãŒå¤±æ•—ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™\n" -#: pg_backup_archiver.c:3259 +#: pg_backup_archiver.c:3623 #, c-format msgid "expected format (%d) differs from format found in file (%d)\n" msgstr "想定ã—ãŸæ›¸å¼(%d)ã¯ãƒ•ã‚¡ã‚¤ãƒ«å†…ã®æ›¸å¼(%d)ã¨ç•°ãªã‚Šã¾ã™\n" -#: pg_backup_archiver.c:3275 +#: pg_backup_archiver.c:3639 #, c-format msgid "WARNING: archive is compressed, but this installation does not support compression -- no data will be available\n" msgstr "警告: アーカイブã¯åœ§ç¸®ã•れã¦ã„ã¾ã™ãŒã€ã“ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã§ã¯åœ§ç¸®æ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“ -- 利用ã§ãるデータã¯ã‚りã¾ã›ã‚“\n" -#: pg_backup_archiver.c:3293 +#: pg_backup_archiver.c:3657 #, c-format msgid "WARNING: invalid creation date in header\n" msgstr "警告: ヘッダ内ã®ä½œæˆæ—¥ä»˜ãŒç„¡åйã§ã™\n" -#: pg_backup_archiver.c:3382 +#: pg_backup_archiver.c:3732 #, c-format -#| msgid "entering restore_toc_entries_parallel\n" msgid "entering restore_toc_entries_prefork\n" msgstr "restore_toc_entries_prefork ã«å…¥ã‚Šã¾ã™\n" -#: pg_backup_archiver.c:3426 +#: pg_backup_archiver.c:3776 #, c-format msgid "processing item %d %s %s\n" msgstr "%d %s %s を処ç†ã—ã¦ã„ã¾ã™\n" -#: pg_backup_archiver.c:3478 +#: pg_backup_archiver.c:3828 #, c-format msgid "entering restore_toc_entries_parallel\n" msgstr "restore_toc_entries_parallel ã«å…¥ã‚Šã¾ã™\n" -#: pg_backup_archiver.c:3526 +#: pg_backup_archiver.c:3876 #, c-format msgid "entering main parallel loop\n" msgstr "メインã®ä¸¦åˆ—ループã«å…¥ã‚Šã¾ã™\n" -#: pg_backup_archiver.c:3537 +#: pg_backup_archiver.c:3887 #, c-format msgid "skipping item %d %s %s\n" msgstr "é …ç›® %d %s %s をスキップã—ã¦ã„ã¾ã™\n" -#: pg_backup_archiver.c:3547 +#: pg_backup_archiver.c:3897 #, c-format msgid "launching item %d %s %s\n" msgstr "é …ç›® %d %s %s ã«ç€æ‰‹ã—ã¾ã™\n" -#: pg_backup_archiver.c:3605 +#: pg_backup_archiver.c:3953 #, c-format msgid "finished main parallel loop\n" msgstr "メインã®ä¸¦åˆ—ループを終了ã—ã¾ã™\n" -#: pg_backup_archiver.c:3614 +#: pg_backup_archiver.c:3962 #, c-format -#| msgid "entering restore_toc_entries_parallel\n" msgid "entering restore_toc_entries_postfork\n" msgstr "restore_toc_entries_postfork ã«å…¥ã‚Šã¾ã™\n" -#: pg_backup_archiver.c:3632 +#: pg_backup_archiver.c:3981 #, c-format msgid "processing missed item %d %s %s\n" msgstr "見ã¤ã‹ã‚‰ãªã‹ã£ãŸé …ç›® %d %s %s を処ç†ã—ã¦ã„ã¾ã™\n" -#: pg_backup_archiver.c:3781 +#: pg_backup_archiver.c:4130 #, c-format msgid "no item ready\n" msgstr "準備ãŒã§ãã¦ã„ã‚‹é …ç›®ã¯ã‚りã¾ã›ã‚“\n" -#: pg_backup_archiver.c:3831 +#: pg_backup_archiver.c:4178 #, c-format msgid "could not find slot of finished worker\n" msgstr "終了ã—ãŸãƒ¯ãƒ¼ã‚«ãƒ¼ã®ã‚¹ãƒ­ãƒƒãƒˆã®æ¤œç´¢ã«å¤±æ•—ã—ã¾ã—ãŸ\n" -#: pg_backup_archiver.c:3833 +#: pg_backup_archiver.c:4180 #, c-format msgid "finished item %d %s %s\n" msgstr "é …ç›® %d %s %s を完了ã—ã¾ã—ãŸ\n" -#: pg_backup_archiver.c:3846 +#: pg_backup_archiver.c:4193 #, c-format msgid "worker process failed: exit code %d\n" msgstr "ワーカープロセスãŒçµ‚了コード %d ã§çµ‚了ã—ã¾ã—ãŸ\n" -#: pg_backup_archiver.c:4008 +#: pg_backup_archiver.c:4355 #, c-format msgid "transferring dependency %d -> %d to %d\n" msgstr "%d -> %d ã‹ã‚‰ %d ã¸ã®ä¾å­˜é–¢ä¿‚を転é€ã—ã¦ã„ã¾ã™\n" -#: pg_backup_archiver.c:4077 +#: pg_backup_archiver.c:4428 #, c-format msgid "reducing dependencies for %d\n" msgstr "%d ã®ä¾å­˜é–¢ä¿‚を軽減ã—ã¦ã„ã¾ã™\n" -#: pg_backup_archiver.c:4116 +#: pg_backup_archiver.c:4467 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "テーブル \"%s\" を作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ãã®ãƒ‡ãƒ¼ã‚¿ã¯å¾©å…ƒã•れã¾ã›ã‚“\n" #. translator: this is a module name -#: pg_backup_custom.c:93 +#: pg_backup_custom.c:94 msgid "custom archiver" msgstr "カスタムアーカイãƒ" -#: pg_backup_custom.c:382 pg_backup_null.c:152 +#: pg_backup_custom.c:384 pg_backup_null.c:150 #, c-format msgid "invalid OID for large object\n" msgstr "ラージオブジェクトã®OIDãŒç„¡åйã§ã™\n" -#: pg_backup_custom.c:453 +#: pg_backup_custom.c:455 #, c-format msgid "unrecognized data block type (%d) while searching archive\n" msgstr "ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã®æ¤œç´¢ä¸­ã«æœªçŸ¥ã®ãƒ‡ãƒ¼ã‚¿ãƒ–ロック種類(%d)ãŒã‚りã¾ã—ãŸ\n" -#: pg_backup_custom.c:464 +#: pg_backup_custom.c:466 #, c-format msgid "error during file seek: %s\n" msgstr "ファイルシーク中ã«ã‚¨ãƒ©ãƒ¼ãŒã‚りã¾ã—ãŸ: %s\n" -#: pg_backup_custom.c:474 +#: pg_backup_custom.c:476 #, c-format msgid "could not find block ID %d in archive -- possibly due to out-of-order restore request, which cannot be handled due to lack of data offsets in archive\n" msgstr "アーカイブ中ã«ãƒ–ロックID %d ãŒã‚りã¾ã›ã‚“ -- ãŠãらããƒªã‚¹ãƒˆã‚¢è¦æ±‚ã®é †åºãŒèª¤ã£ã¦ã„ã‚‹ãŸã‚ã§ã™ã€‚ã“ã®å ´åˆã€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–中ã«ã‚ªãƒ•ã‚»ãƒƒãƒˆã®æƒ…å ±ãŒãªã„ãŸã‚処ç†ã§ãã¾ã›ã‚“\n" -#: pg_backup_custom.c:479 +#: pg_backup_custom.c:481 #, c-format msgid "could not find block ID %d in archive -- possibly due to out-of-order restore request, which cannot be handled due to non-seekable input file\n" msgstr "アーカイブ中ã«ãƒ–ロックID %d ãŒã‚りã¾ã›ã‚“ -- ãŠãらããƒªã‚¹ãƒˆã‚¢è¦æ±‚ã®é †åºãŒèª¤ã£ã¦ã„ã‚‹ãŸã‚ã§ã™ã€‚ã“ã®å ´åˆã€å…¥åŠ›ãƒ•ã‚¡ã‚¤ãƒ«ãŒã‚·ãƒ¼ã‚¯ä¸èƒ½ã¨ãªã‚‹ã®ã§å‡¦ç†ã§ãã¾ã›ã‚“\n" -#: pg_backup_custom.c:484 +#: pg_backup_custom.c:486 #, c-format msgid "could not find block ID %d in archive -- possibly corrupt archive\n" msgstr "アーカイブ内ã«ãƒ–ロック ID %d ãŒã‚りã¾ã›ã‚“ã§ã—㟠-- ãŠãらãアーカイブãŒå£Šã‚Œã¦ã„ã¾ã™\n" -#: pg_backup_custom.c:491 +#: pg_backup_custom.c:493 #, c-format msgid "found unexpected block ID (%d) when reading data -- expected %d\n" msgstr "データ読ã¿è¾¼ã¿æ™‚ã«æƒ³å®šå¤–ã®ãƒ–ロックID(%d)ãŒã‚りã¾ã—㟠-- 期待値ã¯%d\n" -#: pg_backup_custom.c:505 +#: pg_backup_custom.c:507 #, c-format msgid "unrecognized data block type %d while restoring archive\n" msgstr "アーカイブã®ã‚Šã‚¹ãƒˆã‚¢ä¸­ã«æœªçŸ¥ã®ãƒ‡ãƒ¼ã‚¿ãƒ–ロック種類%dãŒã‚りã¾ã—ãŸ\n" -#: pg_backup_custom.c:587 pg_backup_custom.c:995 +#: pg_backup_custom.c:709 pg_backup_custom.c:759 pg_backup_custom.c:908 +#: pg_backup_tar.c:1088 #, c-format -msgid "could not read from input file: end of file\n" -msgstr "入力ファイルã‹ã‚‰èª­ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ: ファイルã®çµ‚了ã§ã™\n" - -#: pg_backup_custom.c:590 pg_backup_custom.c:998 -#, c-format -msgid "could not read from input file: %s\n" -msgstr "入力ファイルã‹ã‚‰èª­ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ: %s\n" - -#: pg_backup_custom.c:619 -#, c-format -msgid "could not write byte: %s\n" -msgstr "ãƒã‚¤ãƒˆã‚’書ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ: %s\n" +msgid "could not determine seek position in archive file: %s\n" +msgstr "アーカイブファイルã®ã‚·ãƒ¼ã‚¯ä½ç½®ã‚’決定ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_backup_custom.c:727 pg_backup_custom.c:765 +#: pg_backup_custom.c:727 pg_backup_custom.c:764 #, c-format msgid "could not close archive file: %s\n" msgstr "アーカイブファイルをクローズã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" @@ -959,327 +992,323 @@ msgstr "標準入力ã‹ã‚‰ã®ä¸¦è¡Œãƒªã‚¹ãƒˆã‚¢ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã› msgid "parallel restore from non-seekable file is not supported\n" msgstr "シークã§ããªã„ファイルã‹ã‚‰ã®å¹³è¡Œãƒªã‚¹ãƒˆã‚¢ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“\n" -#: pg_backup_custom.c:760 -#, c-format -msgid "could not determine seek position in archive file: %s\n" -msgstr "アーカイブファイルã®ã‚·ãƒ¼ã‚¯ä½ç½®ã‚’決定ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" - -#: pg_backup_custom.c:775 +#: pg_backup_custom.c:774 #, c-format msgid "could not set seek position in archive file: %s\n" msgstr "アーカイブファイルã®ã‚·ãƒ¼ã‚¯ä½ç½®ã‚’セットã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_backup_custom.c:793 +#: pg_backup_custom.c:792 #, c-format msgid "compressor active\n" msgstr "圧縮処ç†ãŒæœ‰åйã§ã™\n" -#: pg_backup_custom.c:903 +#: pg_backup_custom.c:912 #, c-format msgid "WARNING: ftell mismatch with expected position -- ftell used\n" msgstr "警告: ftellã§æƒ³å®šä½ç½®ã¨ã®ä¸æ•´åˆãŒã‚りã¾ã—㟠-- ftellãŒä½¿ç”¨ã•れã¾ã—ãŸ\n" #. translator: this is a module name -#: pg_backup_db.c:28 +#: pg_backup_db.c:31 msgid "archiver (db)" msgstr "アーカイãƒ(db)" -#: pg_backup_db.c:43 +#: pg_backup_db.c:47 #, c-format msgid "could not get server_version from libpq\n" msgstr "libpqã‹ã‚‰server_versionã‚’å–り出ã›ã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_backup_db.c:54 pg_dumpall.c:1894 +#: pg_backup_db.c:58 pg_dumpall.c:2068 #, c-format msgid "server version: %s; %s version: %s\n" msgstr "サーãƒãƒãƒ¼ã‚¸ãƒ§ãƒ³: %sã€%s ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %s\n" -#: pg_backup_db.c:56 pg_dumpall.c:1896 +#: pg_backup_db.c:60 pg_dumpall.c:2070 #, c-format msgid "aborting because of server version mismatch\n" msgstr "サーãƒãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ä¸æ•´åˆã®ãŸã‚処ç†ã‚’中断ã—ã¦ã„ã¾ã™\n" -#: pg_backup_db.c:127 +#: pg_backup_db.c:149 #, c-format msgid "connecting to database \"%s\" as user \"%s\"\n" msgstr "データベース\"%s\"ã«ãƒ¦ãƒ¼ã‚¶\"%s\"ã§æŽ¥ç¶šã—ã¦ã„ã¾ã™\n" -#: pg_backup_db.c:132 pg_backup_db.c:184 pg_backup_db.c:231 pg_backup_db.c:277 -#: pg_dumpall.c:1724 pg_dumpall.c:1832 +#: pg_backup_db.c:156 pg_backup_db.c:208 pg_backup_db.c:270 pg_backup_db.c:312 +#: pg_dumpall.c:1894 pg_dumpall.c:2006 msgid "Password: " msgstr "パスワード: " -#: pg_backup_db.c:165 +#: pg_backup_db.c:189 #, c-format msgid "failed to reconnect to database\n" msgstr "データベースã¸ã®å†æŽ¥ç¶šã«å¤±æ•—ã—ã¾ã—ãŸ\n" -#: pg_backup_db.c:170 +#: pg_backup_db.c:194 #, c-format msgid "could not reconnect to database: %s" msgstr "データベース%sã¸ã®å†æŽ¥ç¶šãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: pg_backup_db.c:186 +#: pg_backup_db.c:210 #, c-format msgid "connection needs password\n" msgstr "ã“ã®æŽ¥ç¶šã«ã¯ãƒ‘スワードãŒå¿…è¦ã§ã™\n" -#: pg_backup_db.c:227 +#: pg_backup_db.c:264 #, c-format msgid "already connected to a database\n" msgstr "ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æŽ¥ç¶šæ¸ˆã¿ã§ã—ãŸ\n" -#: pg_backup_db.c:269 +#: pg_backup_db.c:304 #, c-format msgid "failed to connect to database\n" msgstr "データベースã¸ã®æŽ¥ç¶šã«å¤±æ•—ã—ã¾ã—ãŸ\n" -#: pg_backup_db.c:288 +#: pg_backup_db.c:321 #, c-format msgid "connection to database \"%s\" failed: %s" msgstr "データベース\"%s\"ã¸ã®æŽ¥ç¶šãŒå¤±æ•—ã—ã¾ã—ãŸ: %s" -#: pg_backup_db.c:343 +#: pg_backup_db.c:391 +#, c-format +msgid "%s" +msgstr "%s" + +#: pg_backup_db.c:398 #, c-format msgid "query failed: %s" msgstr "å•ã„åˆã‚ã›ãŒå¤±æ•—ã—ã¾ã—ãŸ: %s" -#: pg_backup_db.c:345 +#: pg_backup_db.c:400 #, c-format msgid "query was: %s\n" msgstr "å•ã„åˆã‚ã›: %s\n" -#: pg_backup_db.c:409 +#: pg_backup_db.c:442 +#, c-format +msgid "query returned %d row instead of one: %s\n" +msgid_plural "query returned %d rows instead of one: %s\n" +msgstr[0] "å•ã„åˆã‚ã›ãŒ1行ã§ã¯ãªã%d行返ã—ã¾ã—ãŸ: %s\n" +msgstr[1] "å•ã„åˆã‚ã›ãŒ1行ã§ã¯ãªã%d行返ã—ã¾ã—ãŸ: %s\n" + +#: pg_backup_db.c:487 #, c-format msgid "%s: %s Command was: %s\n" msgstr "%s: %s コマンド: %s\n" -#: pg_backup_db.c:460 pg_backup_db.c:531 pg_backup_db.c:538 +#: pg_backup_db.c:543 pg_backup_db.c:617 pg_backup_db.c:624 msgid "could not execute query" msgstr "å•ã„åˆã‚ã›ã‚’実行ã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: pg_backup_db.c:511 +#: pg_backup_db.c:596 #, c-format msgid "error returned by PQputCopyData: %s" msgstr "PQputCopyData ã‹ã‚‰ã‚¨ãƒ©ãƒ¼ãŒè¿”ã•れã¾ã—ãŸ: %s" -#: pg_backup_db.c:557 +#: pg_backup_db.c:645 #, c-format msgid "error returned by PQputCopyEnd: %s" msgstr "PQputCopyEnd ã‹ã‚‰ã‚¨ãƒ©ãƒ¼ãŒè¿”ã•れã¾ã—ãŸ: %s" -#: pg_backup_db.c:563 +#: pg_backup_db.c:651 #, c-format msgid "COPY failed for table \"%s\": %s" msgstr "テーブル\"%s\"ã®ã‚³ãƒ”ーã«å¤±æ•—ã—ã¾ã—ãŸ: %s" -#: pg_backup_db.c:574 +#: pg_backup_db.c:657 pg_dump.c:1814 +#, c-format +msgid "WARNING: unexpected extra results during COPY of table \"%s\"\n" +msgstr "警告: テーブル \"%s\" ã®COPYä¸­ã«æƒ³å®šå¤–ã®ä½™åˆ†ãªçµæžœãŒã‚りã¾ã™\n" + +#: pg_backup_db.c:669 msgid "could not start database transaction" msgstr "データベーストランザクションを開始ã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: pg_backup_db.c:580 +#: pg_backup_db.c:677 msgid "could not commit database transaction" msgstr "データベーストランザクションをコミットã§ãã¾ã›ã‚“ã§ã—ãŸ" #. translator: this is a module name -#: pg_backup_directory.c:63 +#: pg_backup_directory.c:64 msgid "directory archiver" msgstr "ディレクトリアーカイãƒ" -#: pg_backup_directory.c:161 +#: pg_backup_directory.c:162 #, c-format msgid "no output directory specified\n" msgstr "å‡ºåŠ›ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“\n" -#: pg_backup_directory.c:193 +#: pg_backup_directory.c:191 +#, c-format +msgid "could not read directory \"%s\": %s\n" +msgstr "ディレクトリ\"%s\"を読ã¿å–れã¾ã›ã‚“ã§ã—ãŸ: %s\n" + +#: pg_backup_directory.c:195 +#, c-format +msgid "could not close directory \"%s\": %s\n" +msgstr "ディレクトリ\"%s\"をクローズã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" + +#: pg_backup_directory.c:201 #, c-format msgid "could not create directory \"%s\": %s\n" msgstr "ディレクトリ\"%s\"を作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_backup_directory.c:405 +#: pg_backup_directory.c:412 #, c-format msgid "could not close data file: %s\n" msgstr "データファイル%sをクローズã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_backup_directory.c:446 +#: pg_backup_directory.c:453 #, c-format msgid "could not open large object TOC file \"%s\" for input: %s\n" msgstr "ラージオブジェクトTOCファイル\"%s\"を入力用ã¨ã—ã¦ã‚ªãƒ¼ãƒ—ンã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_backup_directory.c:456 +#: pg_backup_directory.c:464 #, c-format msgid "invalid line in large object TOC file \"%s\": \"%s\"\n" msgstr "" "ラージオブジェクトTOCファイル\"%s\"ã®ä¸­ã«ç„¡åйãªè¡ŒãŒã‚りã¾ã—ãŸ: \"%s\"\n" "\n" -#: pg_backup_directory.c:465 +#: pg_backup_directory.c:473 #, c-format msgid "error reading large object TOC file \"%s\"\n" msgstr "ラージオブジェクトTOCファイル\"%s\"を読ã¿å–り中ã«ã‚¨ãƒ©ãƒ¼ãŒã‚りã¾ã—ãŸ\n" -#: pg_backup_directory.c:469 +#: pg_backup_directory.c:477 #, c-format msgid "could not close large object TOC file \"%s\": %s\n" msgstr "ラージオブジェクトTOCファイル\"%s\"をクローズã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_backup_directory.c:490 -#, c-format -msgid "could not write byte\n" -msgstr "ãƒã‚¤ãƒˆã‚’書ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ\n" - -#: pg_backup_directory.c:682 +#: pg_backup_directory.c:684 #, c-format msgid "could not write to blobs TOC file\n" msgstr "blobs TOCãƒ•ã‚¡ã‚¤ãƒ«ã«æ›¸ã出ã›ã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_backup_directory.c:714 +#: pg_backup_directory.c:716 #, c-format msgid "file name too long: \"%s\"\n" msgstr "ファイルåãŒé•·ã™ãŽã¾ã™: \"%s\"\n" -#: pg_backup_directory.c:800 +#: pg_backup_directory.c:802 #, c-format -#| msgid "error during file seek: %s\n" msgid "error during backup\n" msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—中ã«ã‚¨ãƒ©ãƒ¼ãŒã‚りã¾ã—ãŸ\n" -#: pg_backup_null.c:77 +#: pg_backup_null.c:75 #, c-format msgid "this format cannot be read\n" msgstr "ã“ã®æ›¸å¼ã¯èª­ã¿è¾¼ã‚ã¾ã›ã‚“\n" #. translator: this is a module name -#: pg_backup_tar.c:109 +#: pg_backup_tar.c:102 msgid "tar archiver" msgstr "tarアーカイãƒ" -#: pg_backup_tar.c:190 +#: pg_backup_tar.c:183 #, c-format msgid "could not open TOC file \"%s\" for output: %s\n" msgstr "出力用ã®TOCファイル\"%s\"をオープンã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_backup_tar.c:198 +#: pg_backup_tar.c:191 #, c-format msgid "could not open TOC file for output: %s\n" msgstr "出力用ã®TOCファイルをオープンã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_backup_tar.c:226 pg_backup_tar.c:382 +#: pg_backup_tar.c:212 pg_backup_tar.c:368 #, c-format msgid "compression is not supported by tar archive format\n" msgstr "tar アーカイブフォーマットã§ã¯åœ§ç¸®ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“\n" -#: pg_backup_tar.c:234 +#: pg_backup_tar.c:220 #, c-format msgid "could not open TOC file \"%s\" for input: %s\n" msgstr "入力用ã®TOCファイル\"%s\"をオープンã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_backup_tar.c:241 +#: pg_backup_tar.c:227 #, c-format msgid "could not open TOC file for input: %s\n" msgstr "入力用ã®TOCファイルをオープンã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_backup_tar.c:368 +#: pg_backup_tar.c:354 #, c-format msgid "could not find file \"%s\" in archive\n" msgstr "アーカイブ内ã«ãƒ•ァイル\"%s\"ãŒã‚りã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_backup_tar.c:424 +#: pg_backup_tar.c:420 #, c-format msgid "could not generate temporary file name: %s\n" msgstr "一時ファイルåを生æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_backup_tar.c:433 +#: pg_backup_tar.c:431 #, c-format msgid "could not open temporary file\n" msgstr "一時ファイルをオープンã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_backup_tar.c:460 +#: pg_backup_tar.c:458 #, c-format msgid "could not close tar member\n" msgstr "tarメンãƒã‚’クローズã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_backup_tar.c:560 +#: pg_backup_tar.c:571 #, c-format msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" msgstr "内部エラー -- tarReadRaw()ã«ã¦thã‚‚fhも指定ã•れã¦ã„ã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_backup_tar.c:686 +#: pg_backup_tar.c:694 #, c-format msgid "unexpected COPY statement syntax: \"%s\"\n" msgstr "想定外ã®COPYæ–‡ã®æ§‹æ–‡: \"%s\"\n" -#: pg_backup_tar.c:889 -#, c-format -msgid "could not write null block at end of tar archive\n" -msgstr "tarã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã®æœ€å¾Œã«ãƒŒãƒ«ãƒ–ロックを書ã出ã›ã¾ã›ã‚“ã§ã—ãŸ\n" - -#: pg_backup_tar.c:944 +#: pg_backup_tar.c:960 #, c-format msgid "invalid OID for large object (%u)\n" msgstr "ラージオブジェクトã®OIDãŒç„¡åйã§ã™(%u)\n" -#: pg_backup_tar.c:1078 -#, c-format -msgid "archive member too large for tar format\n" -msgstr "tar書å¼ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–メンãƒãŒå¤§ãã™ãŽã¾ã™\n" - -#: pg_backup_tar.c:1093 +#: pg_backup_tar.c:1104 #, c-format msgid "could not close temporary file: %s\n" msgstr "一時ファイルを開ã‘ã¾ã›ã‚“ã§ã—ãŸï¼š%s\n" -#: pg_backup_tar.c:1103 +#: pg_backup_tar.c:1114 #, c-format msgid "actual file length (%s) does not match expected (%s)\n" msgstr "実際ã®ãƒ•ァイル長(%s)ãŒæœŸå¾…値(%s)ã¨ä¸€è‡´ã—ã¾ã›ã‚“\n" -#: pg_backup_tar.c:1111 -#, c-format -msgid "could not output padding at end of tar member\n" -msgstr "tarメンãƒã®æœ€å¾Œã«ãƒ‘ディングを出力ã§ãã¾ã›ã‚“ã§ã—ãŸ\n" - -#: pg_backup_tar.c:1140 +#: pg_backup_tar.c:1151 #, c-format msgid "moving from position %s to next member at file position %s\n" msgstr "ä½ç½®%sã‹ã‚‰ãƒ•ァイルä½ç½®%sã®æ¬¡ã®ãƒ¡ãƒ³ãƒã¸ç§»å‹•ã—ã¦ã„ã¾ã™\n" -#: pg_backup_tar.c:1151 +#: pg_backup_tar.c:1162 #, c-format msgid "now at file position %s\n" msgstr "ç¾åœ¨ã®ãƒ•ァイルä½ç½®ã¯%sã§ã™\n" -#: pg_backup_tar.c:1160 pg_backup_tar.c:1190 +#: pg_backup_tar.c:1171 pg_backup_tar.c:1201 #, c-format msgid "could not find header for file \"%s\" in tar archive\n" msgstr "tar アーカイブ内ã§ãƒ•ァイル\"%s\"用ã®ãƒ•ァイルヘッダãŒã‚りã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_backup_tar.c:1174 +#: pg_backup_tar.c:1185 #, c-format msgid "skipping tar member %s\n" msgstr "tarメンãƒ%sを飛ã°ã—ã¦ã„ã¾ã™\n" -#: pg_backup_tar.c:1178 +#: pg_backup_tar.c:1189 #, c-format msgid "restoring data out of order is not supported in this archive format: \"%s\" is required, but comes before \"%s\" in the archive file.\n" msgstr "ã“ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–書å¼ã§ã¯ã€é †åºå¤–ã®ãƒ‡ãƒ¼ã‚¿ã®ãƒ€ãƒ³ãƒ—ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“:\"%s\"を想定ã—ã¦ã„ã¾ã—ãŸãŒã€ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ファイル内ã§ã¯\"%s\"ã®å‰ã«ã‚りã¾ã—ãŸ\n" -#: pg_backup_tar.c:1224 -#, c-format -msgid "mismatch in actual vs. predicted file position (%s vs. %s)\n" -msgstr "実際ã®ãƒ•ァイルä½ç½®ã¨äºˆæ¸¬ãƒ•ァイルä½ç½®ãŒä¸€è‡´ã—ã¾ã›ã‚“(%s vs. %s)\n" - -#: pg_backup_tar.c:1239 +#: pg_backup_tar.c:1235 #, c-format msgid "incomplete tar header found (%lu byte)\n" msgid_plural "incomplete tar header found (%lu bytes)\n" msgstr[0] "ä¸å®Œå…¨ãªtarヘッダãŒã‚りã¾ã—ãŸ(%luãƒã‚¤ãƒˆ)\n" msgstr[1] "ä¸å®Œå…¨ãªtarヘッダãŒã‚りã¾ã—ãŸ(%luãƒã‚¤ãƒˆ)\n" -#: pg_backup_tar.c:1277 +#: pg_backup_tar.c:1276 #, c-format -msgid "TOC Entry %s at %s (length %lu, checksum %d)\n" -msgstr "%2$sã®TOCエントリ%1$s(é•·ã• %3$luã€ãƒã‚§ãƒƒã‚¯ã‚µãƒ  %4$d)\n" +msgid "TOC Entry %s at %s (length %s, checksum %d)\n" +msgstr "%2$s ã®TOCエントリ %1$s (é•·ã• %3$sã€ãƒã‚§ãƒƒã‚¯ã‚µãƒ  %4$d)\n" #: pg_backup_tar.c:1287 #, c-format @@ -1291,24 +1320,29 @@ msgstr "ç ´æã—ãŸtarヘッダãŒãƒ•ァイルä½ç½®%4$sã®%1$sã«ã‚りã¾ã— msgid "%s: unrecognized section name: \"%s\"\n" msgstr "%s: 䏿˜Žãªã‚»ã‚¯ã‚·ãƒ§ãƒ³å: \"%s\"\n" -#: pg_backup_utils.c:56 pg_dump.c:540 pg_dump.c:557 pg_dumpall.c:303 -#: pg_dumpall.c:313 pg_dumpall.c:323 pg_dumpall.c:332 pg_dumpall.c:341 -#: pg_dumpall.c:399 pg_restore.c:282 pg_restore.c:298 pg_restore.c:310 +#: pg_backup_utils.c:56 pg_dump.c:536 pg_dump.c:553 pg_dumpall.c:299 +#: pg_dumpall.c:309 pg_dumpall.c:319 pg_dumpall.c:328 pg_dumpall.c:344 +#: pg_dumpall.c:402 pg_restore.c:279 pg_restore.c:295 pg_restore.c:307 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "詳細㯠\"%s --help\" を実行ã—ã¦ãã ã•ã„\n" -#: pg_backup_utils.c:101 +#: pg_backup_utils.c:118 #, c-format msgid "out of on_exit_nicely slots\n" msgstr "on_exit_nicelyスロットã®ä¸è¶³\n" -#: pg_dump.c:555 pg_dumpall.c:311 pg_restore.c:296 +#: pg_dump.c:506 +#, c-format +msgid "compression level must be in range 0..9\n" +msgstr "圧縮レベル㯠0..9 ã®ç¯„囲ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" + +#: pg_dump.c:551 pg_dumpall.c:307 pg_restore.c:293 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: コマンドライン引数ãŒå¤šã™ãŽã¾ã™(先頭ã¯\"%s\")\n" -#: pg_dump.c:567 +#: pg_dump.c:564 #, c-format msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "-s/--schema-only 㨠-a/--data-only ã¯åŒæ™‚ã«ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“\n" @@ -1318,34 +1352,37 @@ msgstr "-s/--schema-only 㨠-a/--data-only ã¯åŒæ™‚ã«ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“ msgid "options -c/--clean and -a/--data-only cannot be used together\n" msgstr "-c/--clean 㨠-a/--data-only ã¯åŒæ™‚ã«ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“\n" -#: pg_dump.c:574 +#: pg_dump.c:576 #, c-format msgid "options --inserts/--column-inserts and -o/--oids cannot be used together\n" msgstr "\"--inserts/--column-insertsã¨-o/--oidsã¯åŒæ™‚ã«ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“\n" -#: pg_dump.c:575 +#: pg_dump.c:577 #, c-format msgid "(The INSERT command cannot set OIDs.)\n" msgstr "(INSERTコマンドã§ã¯OIDを設定ã§ãã¾ã›ã‚“。)\n" -#: pg_dump.c:605 +#: pg_dump.c:582 #, c-format -#| msgid "%s: invalid port number \"%s\"\n" -msgid "%s: invalid number of parallel jobs\n" -msgstr "%s: 無効ãªä¸¦è¡Œã‚¸ãƒ§ãƒ–æ•°ã§ã™\n" +msgid "option --if-exists requires option -c/--clean\n" +msgstr "--if-exists オプション㯠-c/--clean オプションを必è¦ã¨ã—ã¾ã™\n" -#: pg_dump.c:609 +#: pg_dump.c:604 #, c-format -#| msgid "parallel restore is not supported with this archive file format\n" -msgid "parallel backup only supported by the directory format\n" -msgstr "並行ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã¯ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªæ›¸å¼ã§ã®ã¿ã‚µãƒãƒ¼ãƒˆã•れã¾ã™\n" +msgid "WARNING: requested compression not available in this installation -- archive will be uncompressed\n" +msgstr "警告: è¦æ±‚ã•れãŸåœ§ç¸®æ–¹æ³•ã¯ã“ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã§åˆ©ç”¨ã§ãã¾ã›ã‚“ --アーカイブを圧縮ã—ã¾ã›ã‚“\n" #: pg_dump.c:619 #, c-format -msgid "could not open output file \"%s\" for writing\n" -msgstr "出力ファイル\"%s\"を書ãè¾¼ã¿ç”¨ã«ã‚ªãƒ¼ãƒ—ンã§ãã¾ã›ã‚“ã§ã—ãŸ\n" +msgid "invalid number of parallel jobs\n" +msgstr "無効ãªä¸¦è¡Œã‚¸ãƒ§ãƒ–æ•°ã§ã™\n" + +#: pg_dump.c:623 +#, c-format +msgid "parallel backup only supported by the directory format\n" +msgstr "並行ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã¯ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªæ›¸å¼ã§ã®ã¿ã‚µãƒãƒ¼ãƒˆã•れã¾ã™\n" -#: pg_dump.c:678 +#: pg_dump.c:680 #, c-format msgid "" "Synchronized snapshots are not supported by this server version.\n" @@ -1356,22 +1393,27 @@ msgstr "" "åŒæœŸåŒ–スナップショットãŒä¸è¦ãªã‚‰ã°--no-synchronized-snapshotsを付ã‘ã¦å®Ÿ\n" "行ã—ã¦ãã ã•ã„。\n" -#: pg_dump.c:691 +#: pg_dump.c:687 +#, c-format +msgid "Exported snapshots are not supported by this server version.\n" +msgstr "ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ã‚µãƒ¼ãƒãƒ¼ã§ã¯ã€ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã•れãŸã‚¹ãƒŠãƒƒãƒ—ショットをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" + +#: pg_dump.c:706 #, c-format msgid "last built-in OID is %u\n" msgstr "最終ã®çµ„ã¿è¾¼ã¿OIDã¯%uã§ã™\n" -#: pg_dump.c:700 +#: pg_dump.c:715 #, c-format -msgid "No matching schemas were found\n" +msgid "no matching schemas were found\n" msgstr "マッãƒã™ã‚‹ã‚¹ã‚­ãƒ¼ãƒžãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n" -#: pg_dump.c:712 +#: pg_dump.c:729 #, c-format -msgid "No matching tables were found\n" +msgid "no matching tables were found\n" msgstr "マッãƒã™ã‚‹ãƒ†ãƒ¼ãƒ–ルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n" -#: pg_dump.c:856 +#: pg_dump.c:897 #, c-format msgid "" "%s dumps a database as a text file or to other formats.\n" @@ -1380,17 +1422,17 @@ msgstr "" "%sã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’テキストファイルã¾ãŸã¯ãã®ä»–ã®æ›¸å¼ã§ãƒ€ãƒ³ãƒ—ã—ã¾ã™ã€‚\n" "\n" -#: pg_dump.c:857 pg_dumpall.c:541 pg_restore.c:428 +#: pg_dump.c:898 pg_dumpall.c:547 pg_restore.c:443 #, c-format msgid "Usage:\n" msgstr "使用方法:\n" -#: pg_dump.c:858 +#: pg_dump.c:899 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [OPTION]... [DBNAME]\n" -#: pg_dump.c:860 pg_dumpall.c:544 pg_restore.c:431 +#: pg_dump.c:901 pg_dumpall.c:550 pg_restore.c:446 #, c-format msgid "" "\n" @@ -1399,12 +1441,12 @@ msgstr "" "\n" "一般的ãªã‚ªãƒ—ション;\n" -#: pg_dump.c:861 +#: pg_dump.c:902 #, c-format msgid " -f, --file=FILENAME output file or directory name\n" msgstr " -f, --file=ファイルå 出力ファイルã¾ãŸã¯ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®åå‰\n" -#: pg_dump.c:862 +#: pg_dump.c:903 #, c-format msgid "" " -F, --format=c|d|t|p output file format (custom, directory, tar,\n" @@ -1413,38 +1455,37 @@ msgstr "" " -F, --format=c|d|t|p å‡ºåŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã®æ›¸å¼(custom, directory, tar, \n" " plain text(デフォルト))\n" -#: pg_dump.c:864 +#: pg_dump.c:905 #, c-format -#| msgid " -j, --jobs=NUM use this many parallel jobs to restore\n" msgid " -j, --jobs=NUM use this many parallel jobs to dump\n" msgstr " -j, --jobs=NUM ãƒ€ãƒ³ãƒ—æ™‚ã«æŒ‡å®šã—ãŸæ•°ã®ä¸¦åˆ—ジョブを使用\n" -#: pg_dump.c:865 +#: pg_dump.c:906 pg_dumpall.c:552 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose 冗長モード\n" -#: pg_dump.c:866 pg_dumpall.c:546 +#: pg_dump.c:907 pg_dumpall.c:553 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã€çµ‚了ã—ã¾ã™\n" -#: pg_dump.c:867 +#: pg_dump.c:908 #, c-format msgid " -Z, --compress=0-9 compression level for compressed formats\n" msgstr " -Z, --compress=0-9 圧縮形å¼ã«ãŠã‘る圧縮レベル\n" -#: pg_dump.c:868 pg_dumpall.c:547 +#: pg_dump.c:909 pg_dumpall.c:554 #, c-format msgid " --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" msgstr " --lock-wait-timeout=TIMEOUT テーブルロックをTIMEOUTå¾…ã£ã¦ã‹ã‚‰å¤±æ•—\n" -#: pg_dump.c:869 pg_dumpall.c:548 +#: pg_dump.c:910 pg_dumpall.c:555 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help ã“ã®ãƒ˜ãƒ«ãƒ—を表示ã—ã€çµ‚了ã—ã¾ã™\n" -#: pg_dump.c:871 pg_dumpall.c:549 +#: pg_dump.c:912 pg_dumpall.c:556 #, c-format msgid "" "\n" @@ -1453,47 +1494,47 @@ msgstr "" "\n" "出力内容を制御ã™ã‚‹ãŸã‚ã®ã‚ªãƒ—ション:\n" -#: pg_dump.c:872 pg_dumpall.c:550 +#: pg_dump.c:913 pg_dumpall.c:557 #, c-format msgid " -a, --data-only dump only the data, not the schema\n" msgstr " -a, --data-only データã®ã¿ã‚’ダンプã—ã€ã‚¹ã‚­ãƒ¼ãƒžã‚’ダンプã—ã¾ã›ã‚“\n" -#: pg_dump.c:873 +#: pg_dump.c:914 #, c-format msgid " -b, --blobs include large objects in dump\n" msgstr " -b, --blobs ラージオブジェクトã¨å…±ã«ãƒ€ãƒ³ãƒ—ã—ã¾ã™\n" -#: pg_dump.c:874 pg_restore.c:442 +#: pg_dump.c:915 pg_restore.c:457 #, c-format msgid " -c, --clean clean (drop) database objects before recreating\n" msgstr " -c, --clean å†ä½œæˆå‰ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚ªãƒ–ジェクトを整ç†ï¼ˆå‰Šé™¤ï¼‰\n" -#: pg_dump.c:875 +#: pg_dump.c:916 #, c-format msgid " -C, --create include commands to create database in dump\n" msgstr " -C, --create ダンプã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ç”Ÿæˆç”¨ã‚³ãƒžãƒ³ãƒ‰ã‚’å«ã‚ã¾ã™\n" -#: pg_dump.c:876 +#: pg_dump.c:917 #, c-format msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" msgstr " -E, --encoding=ENCODING ENCODING符å·åŒ–æ–¹å¼ã§ãƒ‡ãƒ¼ã‚¿ã‚’ダンプ\n" -#: pg_dump.c:877 +#: pg_dump.c:918 #, c-format msgid " -n, --schema=SCHEMA dump the named schema(s) only\n" msgstr " -n, --schema=SCHEMA 指åã—ãŸã‚¹ã‚­ãƒ¼ãƒžã®ã¿ã‚’ダンプ\n" -#: pg_dump.c:878 +#: pg_dump.c:919 #, c-format msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n" msgstr " -N, --exclude-schema=SCHEMA 指åã•れãŸã‚¹ã‚­ãƒ¼ãƒžã‚’ダンプã—ã¾ã›ã‚“\n" -#: pg_dump.c:879 pg_dumpall.c:553 +#: pg_dump.c:920 pg_dumpall.c:560 #, c-format msgid " -o, --oids include OIDs in dump\n" msgstr " -o, --oids ダンプã«OIDã‚’å«ã‚ã¾ã™\n" -#: pg_dump.c:880 +#: pg_dump.c:921 #, c-format msgid "" " -O, --no-owner skip restoration of object ownership in\n" @@ -1502,101 +1543,129 @@ msgstr "" " -O, --no-owner プレインテキスト形å¼ã§ã€ã‚ªãƒ–ジェクト所有権ã®\n" " 復元を行ã„ã¾ã›ã‚“\n" -#: pg_dump.c:882 pg_dumpall.c:556 +#: pg_dump.c:923 pg_dumpall.c:563 #, c-format msgid " -s, --schema-only dump only the schema, no data\n" msgstr " -s, --schema-only スキーマã®ã¿ã‚’ダンプã—ã€ãƒ‡ãƒ¼ã‚¿ã¯ãƒ€ãƒ³ãƒ—ã—ã¾ã›ã‚“\n" -#: pg_dump.c:883 +#: pg_dump.c:924 #, c-format msgid " -S, --superuser=NAME superuser user name to use in plain-text format\n" msgstr "" " -S, --superuser=NAME プレインテキスト形å¼ã§ä½¿ç”¨ã™ã‚‹ã‚¹ãƒ¼ãƒ‘ーユーザã®\n" " åå‰\n" -#: pg_dump.c:884 +#: pg_dump.c:925 #, c-format msgid " -t, --table=TABLE dump the named table(s) only\n" msgstr " -t, --table=TABLE 指定ã—ãŸãƒ†ãƒ¼ãƒ–ルã®ã¿ã‚’ダンプ\n" -#: pg_dump.c:885 +#: pg_dump.c:926 #, c-format msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n" msgstr " -T, --exclude-table=TABLE 指定ã—ãŸãƒ†ãƒ¼ãƒ–ルをダンプã—ã¾ã›ã‚“\n" -#: pg_dump.c:886 pg_dumpall.c:559 +#: pg_dump.c:927 pg_dumpall.c:566 #, c-format msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" msgstr " -x, --no-privileges 権é™(grant/revoke)をダンプã—ã¾ã›ã‚“\n" -#: pg_dump.c:887 pg_dumpall.c:560 +#: pg_dump.c:928 pg_dumpall.c:567 #, c-format msgid " --binary-upgrade for use by upgrade utilities only\n" msgstr " --binary-upgrade 用途ã¯ã‚¢ãƒƒãƒ—グレードユーティリティã®ã¿\n" -#: pg_dump.c:888 pg_dumpall.c:561 +#: pg_dump.c:929 pg_dumpall.c:568 #, c-format msgid " --column-inserts dump data as INSERT commands with column names\n" msgstr "--column-inserts 列å付ãã®INSERTコマンドã§ãƒ‡ãƒ¼ã‚¿ã‚’ダンプ\n" -#: pg_dump.c:889 pg_dumpall.c:562 +#: pg_dump.c:930 pg_dumpall.c:569 #, c-format msgid " --disable-dollar-quoting disable dollar quoting, use SQL standard quoting\n" msgstr "" " --disable-dollar-quoting ドル記å·ã«ã‚ˆã‚‹å¼•用符付ã‘を行ã‚ãšã€SQL標準ã®å¼•用符付ã‘を使ã„\n" " ã¾ã™\n" -#: pg_dump.c:890 pg_dumpall.c:563 pg_restore.c:458 +#: pg_dump.c:931 pg_dumpall.c:570 pg_restore.c:473 #, c-format msgid " --disable-triggers disable triggers during data-only restore\n" msgstr " --disable-triggers データã®ã¿ã®ãƒªã‚¹ãƒˆã‚¢ã‚’ã™ã‚‹éš›ã€ãƒˆãƒªã‚¬ã‚’無効ã«ã—ã¾ã™\n" -#: pg_dump.c:891 +#: pg_dump.c:932 +#, c-format +msgid "" +" --enable-row-security enable row security (dump only content user has\n" +" access to)\n" +msgstr "" +" --enable-row-security 行セキュリティを有効化ã—ã¾ã™\n" +" (ç¾åœ¨ã®ãƒ¦ãƒ¼ã‚¶ãŒã‚¢ã‚¯ã‚»ã‚¹ã§ãる部分ã®ã¿ãƒ€ãƒ³ãƒ—ã—ã¾ã™)\n" + +#: pg_dump.c:934 #, c-format msgid " --exclude-table-data=TABLE do NOT dump data for the named table(s)\n" msgstr " --exclude-table-data=TABLE 指定ã—ãŸãƒ†ãƒ¼ãƒ–ルã®ãƒ‡ãƒ¼ã‚¿ã‚’ダンプã—ã¾ã›ã‚“\n" -#: pg_dump.c:892 pg_dumpall.c:564 +#: pg_dump.c:935 pg_dumpall.c:571 pg_restore.c:475 +#, c-format +msgid " --if-exists use IF EXISTS when dropping objects\n" +msgstr " --if-exists オブジェクトを削除ã™ã‚‹å ´åˆã« IF EXISTS を使用ã—ã¾ã™\n" + +#: pg_dump.c:936 pg_dumpall.c:572 #, c-format msgid " --inserts dump data as INSERT commands, rather than COPY\n" -msgstr " --inserts COPYã§ã¯ãªãINSERTコマンドã§ãƒ‡ãƒ¼ã‚¿ã‚’ダンプã—ã¾ã™\n" +msgstr " --inserts COPYã§ã¯ãªãINSERTコマンドã§ãƒ‡ãƒ¼ã‚¿ã‚’ダンプã—ã¾ã™\n" -#: pg_dump.c:893 pg_dumpall.c:565 +#: pg_dump.c:937 pg_dumpall.c:573 #, c-format msgid " --no-security-labels do not dump security label assignments\n" msgstr " --no-security-labels セキュリティラベルã®å‰²ã‚Šå½“ã¦ã‚’ダンプã—ã¾ã›ã‚“\n" -#: pg_dump.c:894 +#: pg_dump.c:938 #, c-format msgid " --no-synchronized-snapshots do not use synchronized snapshots in parallel jobs\n" msgstr " --no-synchronized-snapshots 並行ジョブã«ãŠã„ã¦åŒæœŸåŒ–スナップショットを使用ã—ã¾ã›ã‚“\n" -#: pg_dump.c:895 pg_dumpall.c:566 +#: pg_dump.c:939 pg_dumpall.c:574 #, c-format msgid " --no-tablespaces do not dump tablespace assignments\n" msgstr " --no-tablespaces テーブルスペースã®å‰²ã‚Šå½“ã¦ã‚’ダンプã—ã¾ã›ã‚“\n" -#: pg_dump.c:896 pg_dumpall.c:567 +#: pg_dump.c:940 pg_dumpall.c:575 #, c-format msgid " --no-unlogged-table-data do not dump unlogged table data\n" msgstr " --no-unlogged-table-data ログをå–らãªã„テーブルã®ãƒ‡ãƒ¼ã‚¿ã‚’ダンプã—ã¾ã›ã‚“\n" -#: pg_dump.c:897 pg_dumpall.c:568 +#: pg_dump.c:941 pg_dumpall.c:576 #, c-format msgid " --quote-all-identifiers quote all identifiers, even if not key words\n" msgstr " --quote-all-identifiers ã™ã¹ã¦ã®è­˜åˆ¥å­ã‚’キーワードã§ãªã‹ã£ãŸã¨ã—ã¦ã‚‚引用符ã§ããりã¾ã™\n" -#: pg_dump.c:898 +#: pg_dump.c:942 #, c-format msgid " --section=SECTION dump named section (pre-data, data, or post-data)\n" msgstr " --section=SECTION 指定ã—ãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³ï¼ˆãƒ‡ãƒ¼ã‚¿å‰éƒ¨ã€ãƒ‡ãƒ¼ã‚¿ã€ãƒ‡ãƒ¼ã‚¿å¾Œéƒ¨ï¼‰ã‚’ダンプ\n" -#: pg_dump.c:899 +#: pg_dump.c:943 #, c-format msgid " --serializable-deferrable wait until the dump can run without anomalies\n" msgstr " --serializable-deferrable 例外ãªãダンプを実行ã§ãるよã†ã«ãªã‚‹ã¾ã§å¾…機ã—ã¾ã™\n" -#: pg_dump.c:900 pg_dumpall.c:569 pg_restore.c:464 +#: pg_dump.c:944 +#, c-format +msgid " --snapshot=SNAPSHOT use given snapshot for the dump\n" +msgstr " --snapshot=SNAPSHOT ダンプ用ã«ä¸Žãˆã‚‰ã‚ŒãŸã‚¹ãƒŠãƒƒãƒ—ショットを使用ã—ã¾ã™\n" + +#: pg_dump.c:945 pg_restore.c:481 +#, c-format +msgid "" +" --strict-names require table and/or schema include patterns to\n" +" match at least one entity each\n" +msgstr "" +" --strict-names å°‘ãªãã¨ã‚‚1ã¤ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã¨ãƒžãƒƒãƒã™ã‚‹ãƒ‘ターンをå«ã‚€\n" +" テーブルãŠã‚ˆã³ã‚¹ã‚­ãƒ¼ãƒžãŒå¿…è¦ã§ã™\n" + +#: pg_dump.c:947 pg_dumpall.c:577 pg_restore.c:483 #, c-format msgid "" " --use-set-session-authorization\n" @@ -1604,10 +1673,10 @@ msgid "" " ALTER OWNER commands to set ownership\n" msgstr "" " --use-set-session-authorization\n" -" 所有者をセットã™ã‚‹éš›ã€ALTER OWNER コマンドã®ä»£ã‚り\n" -" ã« SET SESSION AUTHORIZATION コマンドを使用ã™ã‚‹\n" +" 所有者をセットã™ã‚‹éš›ã€ALTER OWNER コマンドã®ä»£ã‚りã«\n" +" SET SESSION AUTHORIZATION コマンドを使用ã—ã¾ã™\n" -#: pg_dump.c:904 pg_dumpall.c:573 pg_restore.c:468 +#: pg_dump.c:951 pg_dumpall.c:581 pg_restore.c:487 #, c-format msgid "" "\n" @@ -1616,45 +1685,44 @@ msgstr "" "\n" "接続オプション:\n" -#: pg_dump.c:905 +#: pg_dump.c:952 #, c-format -#| msgid " -d, --dbname=DBNAME database to cluster\n" msgid " -d, --dbname=DBNAME database to dump\n" msgstr " -d, --dbname=データベースå ダンプã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹\n" -#: pg_dump.c:906 pg_dumpall.c:575 pg_restore.c:469 +#: pg_dump.c:953 pg_dumpall.c:583 pg_restore.c:488 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=HOSTNAME データベースサーãƒã®ãƒ›ã‚¹ãƒˆã¾ãŸã¯ã‚½ã‚±ãƒƒãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã™\n" -#: pg_dump.c:907 pg_dumpall.c:577 pg_restore.c:470 +#: pg_dump.c:954 pg_dumpall.c:585 pg_restore.c:489 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=PORT データベースサーãƒã®ãƒãƒ¼ãƒˆç•ªå·ã§ã™\n" -#: pg_dump.c:908 pg_dumpall.c:578 pg_restore.c:471 +#: pg_dump.c:955 pg_dumpall.c:586 pg_restore.c:490 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=NAME 指定ã—ãŸãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ¦ãƒ¼ã‚¶ã§æŽ¥ç¶šã—ã¾ã™\n" -#: pg_dump.c:909 pg_dumpall.c:579 pg_restore.c:472 +#: pg_dump.c:956 pg_dumpall.c:587 pg_restore.c:491 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰å…¥åŠ›ã‚’è¦æ±‚ã—ãªã„\n" -#: pg_dump.c:910 pg_dumpall.c:580 pg_restore.c:473 +#: pg_dump.c:957 pg_dumpall.c:588 pg_restore.c:492 #, c-format msgid " -W, --password force password prompt (should happen automatically)\n" msgstr "" " -W, --password パスワードプロンプトを強制表示ã—ã¾ã™\n" " (自動的ã«è¡¨ç¤ºã•れるã¯ãšã§ã™ï¼‰\n" -#: pg_dump.c:911 pg_dumpall.c:581 +#: pg_dump.c:958 pg_dumpall.c:589 #, c-format msgid " --role=ROLENAME do SET ROLE before dump\n" msgstr " --role=ROLENAME ダンプã®å‰ã« SET ROLE を行ã„ã¾ã™\n" -#: pg_dump.c:913 +#: pg_dump.c:960 #, c-format msgid "" "\n" @@ -1666,378 +1734,453 @@ msgstr "" "データベースåãŒæŒ‡å®šã•れãªã‹ã£ãŸå ´åˆã€ç’°å¢ƒå¤‰æ•°PGDATABASEãŒä½¿ç”¨ã•れã¾ã™\n" "\n" -#: pg_dump.c:915 pg_dumpall.c:585 pg_restore.c:477 +#: pg_dump.c:962 pg_dumpall.c:593 pg_restore.c:499 #, c-format msgid "Report bugs to .\n" msgstr "ä¸å…·åˆã¯ã¾ã§å ±å‘Šã—ã¦ãã ã•ã„。\n" -#: pg_dump.c:933 +#: pg_dump.c:979 #, c-format msgid "invalid client encoding \"%s\" specified\n" msgstr "クライアントエンコーディング\"%s\"ã¯ç„¡åйã§ã™\n" -#: pg_dump.c:1095 +#: pg_dump.c:1121 +#, c-format +msgid "" +"Synchronized snapshots are not supported on standby servers.\n" +"Run with --no-synchronized-snapshots instead if you do not need\n" +"synchronized snapshots.\n" +msgstr "" +"åŒæœŸåŒ–スナップショットã¯ã‚¹ã‚¿ãƒ³ãƒã‚¤ã‚µãƒ¼ãƒã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。\n" +"åŒæœŸåŒ–スナップショットãŒä¸è¦ãªã‚‰ã°--no-synchronized-snapshotsを付ã‘ã¦\n" +"実行ã—ã¦ãã ã•ã„。\n" + +#: pg_dump.c:1190 #, c-format msgid "invalid output format \"%s\" specified\n" msgstr "䏿˜Žãªå‡ºåŠ›æ›¸å¼\"%s\"ãŒæŒ‡å®šã•れã¾ã—ãŸ\n" -#: pg_dump.c:1117 +#: pg_dump.c:1213 #, c-format msgid "server version must be at least 7.3 to use schema selection switches\n" msgstr "" "ã‚¹ã‚­ãƒ¼ãƒžé¸æŠžã‚¹ã‚¤ãƒƒãƒã‚’使用ã™ã‚‹ã«ã¯ã€ã‚µãƒ¼ãƒã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒ\n" "å°‘ãªãã¨ã‚‚ 7.3 以é™ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚\n" -#: pg_dump.c:1393 +#: pg_dump.c:1231 +#, c-format +msgid "no matching schemas were found for pattern \"%s\"\n" +msgstr "パターン \"%s\" ã«ãƒžãƒƒãƒã™ã‚‹ã‚¹ã‚­ãƒ¼ãƒžãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n" + +#: pg_dump.c:1284 +#, c-format +msgid "no matching tables were found for pattern \"%s\"\n" +msgstr "パターン \"%s\" ã«ãƒžãƒƒãƒã™ã‚‹ãƒ†ãƒ¼ãƒ–ルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n" + +#: pg_dump.c:1671 #, c-format -msgid "dumping contents of table %s\n" -msgstr "テーブル%sã®å†…容をダンプã—ã¦ã„ã¾ã™\n" +msgid "dumping contents of table \"%s.%s\"\n" +msgstr "テーブル \"%s.%s\" ã®å†…容をダンプã—ã¦ã„ã¾ã™\n" -#: pg_dump.c:1516 +#: pg_dump.c:1795 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" msgstr "テーブル\"%s\"ã®å†…容ã®ãƒ€ãƒ³ãƒ—ã«å¤±æ•—: PQgetCopyData()ãŒå¤±æ•—ã—ã¾ã—ãŸã€‚\n" -#: pg_dump.c:1517 pg_dump.c:1527 +#: pg_dump.c:1796 pg_dump.c:1806 #, c-format msgid "Error message from server: %s" msgstr "サーãƒã®ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸: %s" -#: pg_dump.c:1518 pg_dump.c:1528 +#: pg_dump.c:1797 pg_dump.c:1807 #, c-format msgid "The command was: %s\n" msgstr "次ã®ã‚³ãƒžãƒ³ãƒ‰ã§ã—ãŸ: %s\n" -#: pg_dump.c:1526 +#: pg_dump.c:1805 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetResult() failed.\n" msgstr "テーブル\"%s\"ã®å†…容ã®ãƒ€ãƒ³ãƒ—ã«å¤±æ•—: PQgetResult()ãŒå¤±æ•—ã—ã¾ã—ãŸã€‚\n" -#: pg_dump.c:2136 +#: pg_dump.c:2454 #, c-format msgid "saving database definition\n" msgstr "データベース定義をä¿å­˜ã—ã¦ã„ã¾ã™\n" -#: pg_dump.c:2433 +#: pg_dump.c:2788 #, c-format msgid "saving encoding = %s\n" msgstr "encoding = %s ã‚’ä¿å­˜ã—ã¦ã„ã¾ã™\n" -#: pg_dump.c:2460 +#: pg_dump.c:2815 #, c-format msgid "saving standard_conforming_strings = %s\n" msgstr "standard_conforming_strings = %s ã‚’ä¿å­˜ã—ã¦ã„ã¾ã™\n" -#: pg_dump.c:2493 +#: pg_dump.c:2855 #, c-format msgid "reading large objects\n" msgstr "ラージオブジェクトを読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: pg_dump.c:2625 +#: pg_dump.c:3056 #, c-format msgid "saving large objects\n" msgstr "ラージオブジェクトをä¿å­˜ã—ã¦ã„ã¾ã™\n" -#: pg_dump.c:2672 +#: pg_dump.c:3103 #, c-format msgid "error reading large object %u: %s" msgstr "ラージオブジェクト %u を読ã¿å–り中ã«ã‚¨ãƒ©ãƒ¼ãŒã‚りã¾ã—ãŸ: %s" -#: pg_dump.c:2865 +#: pg_dump.c:3155 +#, c-format +msgid "reading row security enabled for table \"%s.%s\"\n" +msgstr "テーブル \"%s.%s\" ã«æœ‰åйãªè¡Œã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" + +#: pg_dump.c:3186 +#, c-format +msgid "reading policies for table \"%s.%s\"\n" +msgstr "テーブル\"%s.%s\"用ã®ãƒãƒªã‚·ãƒ¼ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" + +#: pg_dump.c:3319 +#, c-format +msgid "unexpected policy command type: \"%s\"\n" +msgstr "想定ã—ãªã„ãƒãƒªã‚·ãƒ¼ã‚³ãƒžãƒ³ãƒ‰ã‚¿ã‚¤ãƒ—: \"%s\"\n" + +#: pg_dump.c:3538 #, c-format msgid "could not find parent extension for %s\n" msgstr "%sã®è¦ªæ‹¡å¼µãŒã‚りã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_dump.c:2968 +#: pg_dump.c:3726 #, c-format msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" msgstr "警告: スキーマ\"%s\"ã®æ‰€æœ‰è€…ãŒç„¡åйãªã‚ˆã†ã§ã™\n" -#: pg_dump.c:3011 +#: pg_dump.c:3769 #, c-format msgid "schema with OID %u does not exist\n" msgstr "OID %uã®ã‚¹ã‚­ãƒ¼ãƒžãŒå­˜åœ¨ã—ã¾ã›ã‚“\n" -#: pg_dump.c:3361 +#: pg_dump.c:4184 #, c-format msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" msgstr "警告: データ型\"%s\"ã®æ‰€æœ‰è€…ãŒç„¡åйãªã‚ˆã†ã§ã™\n" -#: pg_dump.c:3472 +#: pg_dump.c:4298 #, c-format msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" msgstr "警告: 演算å­\"%s\"ã®æ‰€æœ‰è€…ãŒç„¡åйãªã‚ˆã†ã§ã™\n" -#: pg_dump.c:3729 +#: pg_dump.c:4643 #, c-format msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" msgstr "警告: 演算å­ã‚¯ãƒ©ã‚¹\"%s\"ã®æ‰€æœ‰è€…ãŒç„¡åйãªã‚ˆã†ã§ã™\n" -#: pg_dump.c:3817 +#: pg_dump.c:4734 #, c-format msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" msgstr "警告: æ¼”ç®—å­æ—\"%s\"ã®æ‰€æœ‰è€…ãŒç„¡åйãªã‚ˆã†ã§ã™\n" -#: pg_dump.c:3976 +#: pg_dump.c:4935 #, c-format msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" msgstr "警告: 集約関数\"%s\"ã®æ‰€æœ‰è€…ãŒç„¡åйãªã‚ˆã†ã§ã™\n" -#: pg_dump.c:4180 +#: pg_dump.c:5232 #, c-format msgid "WARNING: owner of function \"%s\" appears to be invalid\n" msgstr "警告: 関数\"%s\"ã®æ‰€æœ‰è€…ãŒç„¡åйãªã‚ˆã†ã§ã™\n" -#: pg_dump.c:4742 +#: pg_dump.c:6094 #, c-format msgid "WARNING: owner of table \"%s\" appears to be invalid\n" msgstr "警告: テーブル\"%s\"ã®æ‰€æœ‰è€…ãŒç„¡åйãªã‚ˆã†ã§ã™\n" -#: pg_dump.c:4893 +#: pg_dump.c:6136 pg_dump.c:16638 #, c-format -msgid "reading indexes for table \"%s\"\n" -msgstr "テーブル\"%s\"用ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" +msgid "failed sanity check, parent table OID %u of sequence OID %u not found\n" +msgstr "å¥å…¨æ€§æ¤œæŸ»ã«å¤±æ•—ã—ã¾ã—ãŸã€‚シーケンスOID %2$u ã®è¦ªãƒ†ãƒ¼ãƒ–ルOID %1$u ãŒã‚りã¾ã›ã‚“\n" -#: pg_dump.c:5226 +#: pg_dump.c:6263 #, c-format -msgid "reading foreign key constraints for table \"%s\"\n" -msgstr "テーブル\"%s\"用ã®å¤–部キー制約を読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" +msgid "reading indexes for table \"%s.%s\"\n" +msgstr "テーブル\"%s.%s\"用ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: pg_dump.c:5471 +#: pg_dump.c:6631 +#, c-format +msgid "reading foreign key constraints for table \"%s.%s\"\n" +msgstr "テーブル\"%s.%s\"用ã®å¤–部キー制約を読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" + +#: pg_dump.c:6877 #, c-format msgid "failed sanity check, parent table OID %u of pg_rewrite entry OID %u not found\n" -msgstr "å¥å…¨æ€§æ¤œæŸ»ã«å¤±æ•—ã—ã¾ã—ãŸã€‚pg_rewriteé …ç›®OID %1$u ã®è¦ªãƒ†ãƒ¼ãƒ–ルOID %2$u ãŒã‚りã¾ã›ã‚“\n" +msgstr "å¥å…¨æ€§æ¤œæŸ»ã«å¤±æ•—ã—ã¾ã—ãŸã€‚pg_rewriteé …ç›®OID %2$u ã®è¦ªãƒ†ãƒ¼ãƒ–ルOID %1$u ãŒã‚りã¾ã›ã‚“\n" -#: pg_dump.c:5564 +#: pg_dump.c:6971 #, c-format -msgid "reading triggers for table \"%s\"\n" -msgstr "テーブル\"%s\"用ã®ãƒˆãƒªã‚¬ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" +msgid "reading triggers for table \"%s.%s\"\n" +msgstr "テーブル\"%s.%s\"用ã®ãƒˆãƒªã‚¬ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: pg_dump.c:5725 +#: pg_dump.c:7136 #, c-format msgid "query produced null referenced table name for foreign key trigger \"%s\" on table \"%s\" (OID of table: %u)\n" msgstr "テーブル\"%2$s\"上ã®å¤–部キートリガ\"%1$s\"用ã®éžå‚照テーブルåã®å•ã„åˆã‚ã›ãŒNULLã‚’è¿”ã—ã¾ã—ãŸ(テーブルã®OID: %3$u)\n" -#: pg_dump.c:6177 +#: pg_dump.c:7791 #, c-format -msgid "finding the columns and types of table \"%s\"\n" -msgstr "テーブル\"%s\"ã®åˆ—ã¨åž‹ã‚’検索ã—ã¦ã„ã¾ã™\n" +msgid "finding the columns and types of table \"%s.%s\"\n" +msgstr "テーブル\"%s.%s\"ã®åˆ—ã¨åž‹ã‚’検索ã—ã¦ã„ã¾ã™\n" -#: pg_dump.c:6355 +#: pg_dump.c:7970 #, c-format msgid "invalid column numbering in table \"%s\"\n" msgstr "テーブル\"%s\"ã®åˆ—番å·ãŒç„¡åйã§ã™\n" -#: pg_dump.c:6389 +#: pg_dump.c:8004 #, c-format -msgid "finding default expressions of table \"%s\"\n" -msgstr "テーブル\"%s\"ã®ãƒ‡ãƒ•ォルトå¼ã‚’検索ã—ã¦ã„ã¾ã™\n" +msgid "finding default expressions of table \"%s.%s\"\n" +msgstr "テーブル\"%s.%s\"ã®ãƒ‡ãƒ•ォルトå¼ã‚’検索ã—ã¦ã„ã¾ã™\n" -#: pg_dump.c:6441 +#: pg_dump.c:8057 #, c-format msgid "invalid adnum value %d for table \"%s\"\n" msgstr "テーブル\"%2$s\"用ã®adnumã®å€¤%1$dãŒç„¡åйã§ã™\n" -#: pg_dump.c:6513 +#: pg_dump.c:8129 #, c-format -msgid "finding check constraints for table \"%s\"\n" -msgstr "テーブル\"%s\"ã®æ¤œæŸ»åˆ¶ç´„を検索ã—ã¦ã„ã¾ã™\n" +msgid "finding check constraints for table \"%s.%s\"\n" +msgstr "テーブル\"%s.%s\"ã®æ¤œæŸ»åˆ¶ç´„を検索ã—ã¦ã„ã¾ã™\n" -#: pg_dump.c:6608 +#: pg_dump.c:8225 #, c-format msgid "expected %d check constraint on table \"%s\" but found %d\n" msgid_plural "expected %d check constraints on table \"%s\" but found %d\n" msgstr[0] "テーブル\"%2$s\"ã®æ¤œæŸ»åˆ¶ç´„ã¯%1$dã¨æœŸå¾…ã—ã¦ã„ã¾ã—ã¾ã—ãŸãŒã€%3$dã‚りã¾ã—ãŸ\n" msgstr[1] "テーブル\"%2$s\"ã®æ¤œæŸ»åˆ¶ç´„ã¯%1$dã¨æœŸå¾…ã—ã¦ã„ã¾ã—ã¾ã—ãŸãŒã€%3$dã‚りã¾ã—ãŸ\n" -#: pg_dump.c:6612 +#: pg_dump.c:8229 #, c-format msgid "(The system catalogs might be corrupted.)\n" msgstr "(システムカタログãŒç ´æã—ã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™)\n" -#: pg_dump.c:7978 +#: pg_dump.c:9808 #, c-format msgid "WARNING: typtype of data type \"%s\" appears to be invalid\n" msgstr "警告: データ型\"%s\"ã®typtypeãŒç„¡åйãªã‚ˆã†ã§ã™\n" -#: pg_dump.c:9427 +#: pg_dump.c:11350 #, c-format msgid "WARNING: bogus value in proargmodes array\n" msgstr "警告: proargnamesé…列内ã«ãŠã‹ã—ãªå€¤ãŒã‚りã¾ã™\n" -#: pg_dump.c:9755 +#: pg_dump.c:11728 #, c-format msgid "WARNING: could not parse proallargtypes array\n" msgstr "警告: proallargtypesé…列ã®è§£æžãŒã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_dump.c:9771 +#: pg_dump.c:11744 #, c-format msgid "WARNING: could not parse proargmodes array\n" msgstr "警告: proargmodesé…列ã®è§£æžãŒã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_dump.c:9785 +#: pg_dump.c:11758 #, c-format msgid "WARNING: could not parse proargnames array\n" msgstr "警告: proargnamesé…列ã®è§£æžãŒã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_dump.c:9796 +#: pg_dump.c:11769 #, c-format msgid "WARNING: could not parse proconfig array\n" msgstr "警告: proconfigé…列ã®è§£æžãŒã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_dump.c:9853 +#: pg_dump.c:11840 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" msgstr "関数\"%s\"ã®provolatile値ãŒä¸æ˜Žã§ã™\n" -#: pg_dump.c:10073 +#: pg_dump.c:11884 pg_dump.c:13933 +#, c-format +msgid "unrecognized proparallel value for function \"%s\"\n" +msgstr "関数\"%s\"ã®proparallel値ãŒä¸æ˜Žã§ã™\n" + +#: pg_dump.c:11992 pg_dump.c:12102 pg_dump.c:12109 +#, c-format +msgid "could not find function definition for function with OID %u\n" +msgstr "OID %u ã®é–¢æ•°å®šç¾©ã‚’見ã¤ã‘られã¾ã›ã‚“ã§ã—ãŸ\n" + +#: pg_dump.c:12037 #, c-format msgid "WARNING: bogus value in pg_cast.castfunc or pg_cast.castmethod field\n" msgstr "警告: pg_cast.castfuncã¾ãŸã¯pg_cast.castmethodフィールドã«ç„¡åйãªå€¤ãŒã‚りã¾ã™\n" -#: pg_dump.c:10076 +#: pg_dump.c:12040 #, c-format msgid "WARNING: bogus value in pg_cast.castmethod field\n" msgstr "警告: pg_cast.castmethod フィールドã«ç„¡åйãªå€¤ãŒã‚りã¾ã™\n" -#: pg_dump.c:10445 +#: pg_dump.c:12130 +#, c-format +msgid "WARNING: bogus transform definition, at least one of trffromsql and trftosql should be nonzero\n" +msgstr "警告: 無効ãªå¤‰æ›å®šç¾©ãŒã‚りã¾ã™ã€‚trffromsqlã¨trftosqlã®å°‘ãªãã¨ã‚‚ã©ã¡ã‚‰ã‹ã¯éžã‚¼ãƒ­ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" + +#: pg_dump.c:12147 +#, c-format +msgid "WARNING: bogus value in pg_transform.trffromsql field\n" +msgstr "警告: pg_transform.trffromsql フィールドã«ç„¡åйãªå€¤ãŒã‚りã¾ã™\n" + +#: pg_dump.c:12168 +#, c-format +msgid "WARNING: bogus value in pg_transform.trftosql field\n" +msgstr "警告: pg_transform.trftosql フィールドã«ç„¡åйãªå€¤ãŒã‚りã¾ã™\n" + +#: pg_dump.c:12559 #, c-format msgid "WARNING: could not find operator with OID %s\n" msgstr "警告: OID %sã®æ¼”ç®—å­ãŒã‚りã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_dump.c:11507 +#: pg_dump.c:12623 +#, c-format +msgid "WARNING: invalid type \"%c\" of access method \"%s\"\n" +msgstr "警告: アクセスメソッド \"%2$s\" ã®åž‹ \"%1$c\" ã¯ç„¡åйã§ã™\n" + +#: pg_dump.c:13824 #, c-format msgid "WARNING: aggregate function %s could not be dumped correctly for this database version; ignored\n" msgstr "警告: ã“ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®é›†ç´„関数%sを正確ã«ãƒ€ãƒ³ãƒ—ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚(無視ã—ã¾ã™)\n" -#: pg_dump.c:12283 +#: pg_dump.c:14696 #, c-format -#| msgid "unknown object type (%d) in default privileges\n" msgid "unrecognized object type in default privileges: %d\n" msgstr "デフォルト権é™å†…ã®èªè­˜ã§ããªã„オブジェクト型: %d\n" -#: pg_dump.c:12298 +#: pg_dump.c:14714 #, c-format msgid "could not parse default ACL list (%s)\n" msgstr "デフォルト㮠ACL リスト(%s)ã‚’è§£æžã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_dump.c:12353 +#: pg_dump.c:14785 +#, c-format +msgid "could not parse initial GRANT ACL list (%s) or initial REVOKE ACL list (%s) for object \"%s\" (%s)\n" +msgstr "オブジェクト\"%3$s\"(%4$s)用ã®åˆæœŸã®GRANT ACL リスト(%1$s) ã¾ãŸã¯åˆæœŸã®REVOKE ACL リスト(%2$s) ã‚’è§£æžã§ãã¾ã›ã‚“ã§ã—ãŸ\n" + +#: pg_dump.c:14793 #, c-format -msgid "could not parse ACL list (%s) for object \"%s\" (%s)\n" -msgstr "オブジェクト\"%2$s\"(%3$s)用ã®ACLリスト(%1$s)ã‚’è§£æžã§ãã¾ã›ã‚“ã§ã—ãŸ\n" +msgid "could not parse GRANT ACL list (%s) or REVOKE ACL list (%s) for object \"%s\" (%s)\n" +msgstr "オブジェクト\"%3$s\"(%4$s)用ã®GRANT ACL リスト(%1$s) ã¾ãŸã¯REVOKE ACL リスト(%2$s) ã‚’è§£æžã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_dump.c:12771 +#: pg_dump.c:15278 #, c-format msgid "query to obtain definition of view \"%s\" returned no data\n" msgstr "ビュー\"%s\"ã®å®šç¾©ã‚’å–り出ã™ãŸã‚ã®å•ã„åˆã‚ã›ãŒç©ºã‚’è¿”ã—ã¾ã—ãŸ\n" -#: pg_dump.c:12774 +#: pg_dump.c:15281 #, c-format msgid "query to obtain definition of view \"%s\" returned more than one definition\n" msgstr "ビュー\\\"%s\\\"ã®å®šç¾©ã‚’å–り出ã™ãŸã‚ã®å•ã„åˆã‚ã›ãŒè¤‡æ•°ã®å®šç¾©ã‚’è¿”ã—ã¾ã—ãŸ\n" -#: pg_dump.c:12781 +#: pg_dump.c:15288 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)\n" msgstr "ビュー\\\"%s\\\"ã®å®šç¾©ãŒç©º(é•·ã•ãŒ0)ã®ã‚ˆã†ã§ã™\n" -#: pg_dump.c:13493 +#: pg_dump.c:16047 #, c-format msgid "invalid column number %d for table \"%s\"\n" msgstr "テーブル\"%2$s\"ã®åˆ—番å·%1$dã¯ç„¡åйã§ã™\n" -#: pg_dump.c:13608 +#: pg_dump.c:16176 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "制約\"%s\"用ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n" -#: pg_dump.c:13795 +#: pg_dump.c:16379 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "制約種類ãŒä¸æ˜Žã§ã™: %c\n" -#: pg_dump.c:13944 pg_dump.c:14108 +#: pg_dump.c:16533 pg_dump.c:16706 #, c-format msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" msgid_plural "query to get data of sequence \"%s\" returned %d rows (expected 1)\n" msgstr[0] "シーケンス\"%s\"ã®ãƒ‡ãƒ¼ã‚¿ã‚’å¾—ã‚‹ãŸã‚ã®å•ã„åˆã‚ã›ãŒ%d行返ã—ã¾ã—ãŸ(想定行数ã¯1)\n" msgstr[1] "シーケンス\"%s\"ã®ãƒ‡ãƒ¼ã‚¿ã‚’å¾—ã‚‹ãŸã‚ã®å•ã„åˆã‚ã›ãŒ%d行返ã—ã¾ã—ãŸ(想定行数ã¯1)\n" -#: pg_dump.c:13955 +#: pg_dump.c:16544 #, c-format msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" msgstr "シーケンス \"%s\"ã®ãƒ‡ãƒ¼ã‚¿ã‚’å¾—ã‚‹ãŸã‚ã®å•ã„åˆã‚ã›ãŒåå‰ \"%s\" ã‚’è¿”ã—ã¾ã—ãŸ\n" -#: pg_dump.c:14195 +#: pg_dump.c:16804 #, c-format msgid "unexpected tgtype value: %d\n" msgstr "想定外ã®tgtype値: %d\n" -#: pg_dump.c:14277 +#: pg_dump.c:16886 #, c-format msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" msgstr "テーブル\"%3$s\"ã®ãƒˆãƒªã‚¬\"%2$s\"用ã®å¼•数文字列(%1$s)ãŒç„¡åйã§ã™\n" -#: pg_dump.c:14457 +#: pg_dump.c:17083 #, c-format msgid "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows returned\n" msgstr "" "テーブル\"%2$s\"用ã®ãƒ«ãƒ¼ãƒ«\"%1$s\"ã‚’å¾—ã‚‹ãŸã‚ã®å•ã„åˆã‚ã›ã«å¤±æ•—ã—ã¾ã—ãŸ:行数ãŒ\n" "é–“é•ã£ã¦ã„ã¾ã™\n" -#: pg_dump.c:14758 +#: pg_dump.c:17472 #, c-format msgid "reading dependency data\n" msgstr "データã®ä¾å­˜æ€§ã‚’読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: pg_dump.c:15303 +#: pg_dump.c:18029 #, c-format -msgid "query returned %d row instead of one: %s\n" -msgid_plural "query returned %d rows instead of one: %s\n" -msgstr[0] "å•ã„åˆã‚ã›ãŒ1行ã§ã¯ãªã%d行返ã—ã¾ã—ãŸ: %s\n" -msgstr[1] "å•ã„åˆã‚ã›ãŒ1行ã§ã¯ãªã%d行返ã—ã¾ã—ãŸ: %s\n" +msgid "WARNING: could not parse reloptions array\n" +msgstr "警告: reloptionsé…列ã®è§£æžãŒã§ãã¾ã›ã‚“ã§ã—ãŸ\n" #. translator: this is a module name -#: pg_dump_sort.c:21 +#: pg_dump_sort.c:23 msgid "sorter" msgstr "sorter" -#: pg_dump_sort.c:465 +#: pg_dump_sort.c:491 #, c-format msgid "invalid dumpId %d\n" msgstr "無効ãªdumpId %d\n" -#: pg_dump_sort.c:471 +#: pg_dump_sort.c:497 #, c-format msgid "invalid dependency %d\n" msgstr "無効ãªä¾å­˜é–¢ä¿‚ %d\n" -#: pg_dump_sort.c:685 +#: pg_dump_sort.c:730 #, c-format msgid "could not identify dependency loop\n" msgstr "ä¾å­˜é–¢ä¿‚ã®ãƒ«ãƒ¼ãƒ—を識別ã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_dump_sort.c:1135 +#: pg_dump_sort.c:1262 #, c-format -msgid "NOTICE: there are circular foreign-key constraints among these table(s):\n" -msgstr "注æ„: 次ã®ãƒ†ãƒ¼ãƒ–ルã®ä¸­ã§å¤–部キー制約ã®å¾ªç’°ãŒã‚りã¾ã™\n" +msgid "NOTICE: there are circular foreign-key constraints on this table:\n" +msgid_plural "NOTICE: there are circular foreign-key constraints among these tables:\n" +msgstr[0] "注æ„: 次ã®ãƒ†ãƒ¼ãƒ–ルã®ä¸­ã§å¤–部キー制約ã®å¾ªç’°ãŒã‚りã¾ã™\n" +msgstr[1] "注æ„: 次ã®ãƒ†ãƒ¼ãƒ–ルã®ä¸­ã§å¤–部キー制約ã®å¾ªç’°ãŒã‚りã¾ã™\n" -#: pg_dump_sort.c:1137 pg_dump_sort.c:1157 +#: pg_dump_sort.c:1266 pg_dump_sort.c:1286 #, c-format msgid " %s\n" msgstr " %s\n" -#: pg_dump_sort.c:1138 +#: pg_dump_sort.c:1267 #, c-format msgid "You might not be able to restore the dump without using --disable-triggers or temporarily dropping the constraints.\n" msgstr "--disable-triggersã®ä½¿ç”¨ã¾ãŸã¯ä¸€æ™‚çš„ãªåˆ¶ç´„ã®å‰Šé™¤ã‚’行ã‚ãšã«ãƒ€ãƒ³ãƒ—をリストアã™ã‚‹ã“ã¨ã¯ã§ããªã„ã‹ã‚‚ã—れã¾ã›ã‚“。\n" -#: pg_dump_sort.c:1139 +#: pg_dump_sort.c:1268 #, c-format msgid "Consider using a full dump instead of a --data-only dump to avoid this problem.\n" msgstr "ã“ã®å•題を回é¿ã™ã‚‹ãŸã‚ã«--data-onlyダンプã®ä»£ã‚りã«å®Œå…¨ãªãƒ€ãƒ³ãƒ—を使用ã™ã‚‹ã“ã¨ã‚’検討ã—ã¦ãã ã•ã„。\n" -#: pg_dump_sort.c:1151 +#: pg_dump_sort.c:1280 #, c-format msgid "WARNING: could not resolve dependency loop among these items:\n" msgstr "警告: ã“れらã®é …ç›®ã®ä¸­ã®ä¾å­˜é–¢ä¿‚ã®ãƒ«ãƒ¼ãƒ—を識別ã§ãã¾ã›ã‚“ã§ã—ãŸ\n" @@ -2064,31 +2207,36 @@ msgstr "" "ã›ã‚“ã§ã—ãŸã€‚\n" "インストールã®çжæ³ã‚’確èªã—ã¦ãã ã•ã„。\n" -#: pg_dumpall.c:321 +#: pg_dumpall.c:317 #, c-format msgid "%s: options -g/--globals-only and -r/--roles-only cannot be used together\n" msgstr "\"%s: -g/--globals-onlyオプションã¨-r/--roles-onlyオプションã¯åŒæ™‚ã«ä½¿ç”¨ã§ãã¾ã›ã‚“\n" -#: pg_dumpall.c:330 +#: pg_dumpall.c:326 #, c-format msgid "%s: options -g/--globals-only and -t/--tablespaces-only cannot be used together\n" msgstr "" "\"%s: -g/--globals-onlyオプションã¨-t/--tablespaces-onlyオプションã¯åŒæ™‚\n" "ã«ä½¿ç”¨ã§ãã¾ã›ã‚“\n" -#: pg_dumpall.c:339 +#: pg_dumpall.c:335 pg_restore.c:361 +#, c-format +msgid "%s: option --if-exists requires option -c/--clean\n" +msgstr "%s: --if-exists オプション㯠-c/--clean オプションを必è¦ã¨ã—ã¾ã™\n" + +#: pg_dumpall.c:342 #, c-format msgid "%s: options -r/--roles-only and -t/--tablespaces-only cannot be used together\n" msgstr "" "\"%s: -r/--roles-onlyオプションã¨-t/--tablespaces-onlyオプション)ã¯åŒæ™‚\n" "ã«ä½¿ç”¨ã§ãã¾ã›ã‚“\n" -#: pg_dumpall.c:381 pg_dumpall.c:1821 +#: pg_dumpall.c:384 pg_dumpall.c:1995 #, c-format msgid "%s: could not connect to database \"%s\"\n" msgstr "%s: データベース\"%s\"ã¸æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_dumpall.c:396 +#: pg_dumpall.c:399 #, c-format msgid "" "%s: could not connect to databases \"postgres\" or \"template1\"\n" @@ -2097,12 +2245,12 @@ msgstr "" "%s: \"postgres\"ã¾ãŸã¯\"template1\"ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸ\n" "ä»–ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’指定ã—ã¦ãã ã•ã„。\n" -#: pg_dumpall.c:413 +#: pg_dumpall.c:416 #, c-format msgid "%s: could not open the output file \"%s\": %s\n" msgstr "%s: 出力ファイル \"%s\" をオープンã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_dumpall.c:540 +#: pg_dumpall.c:546 #, c-format msgid "" "%s extracts a PostgreSQL database cluster into an SQL script file.\n" @@ -2111,60 +2259,59 @@ msgstr "" "%sã¯PostgreSQLデータベースクラスタをSQLスクリプトファイルã«å±•é–‹ã—ã¾ã™ã€‚\n" "\n" -#: pg_dumpall.c:542 +#: pg_dumpall.c:548 #, c-format msgid " %s [OPTION]...\n" msgstr " %s [OPTION]...\n" -#: pg_dumpall.c:545 +#: pg_dumpall.c:551 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=ファイルå 出力ファイルå\n" -#: pg_dumpall.c:551 +#: pg_dumpall.c:558 #, c-format msgid " -c, --clean clean (drop) databases before recreating\n" msgstr " -c, --clean å†ä½œæˆå‰ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’æ•´ç†ï¼ˆå‰Šé™¤ï¼‰\n" -#: pg_dumpall.c:552 +#: pg_dumpall.c:559 #, c-format msgid " -g, --globals-only dump only global objects, no databases\n" msgstr " -g, --globals-only グローãƒãƒ«ã‚ªãƒ–ジェクトã®ã¿ã‚’ダンプã—ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’ダンプã—ã¾ã›ã‚“\n" -#: pg_dumpall.c:554 pg_restore.c:450 +#: pg_dumpall.c:561 pg_restore.c:465 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr " -O, --no-owner ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ‰€æœ‰æ¨©ã®å¾©å…ƒã‚’çœç•¥\n" -#: pg_dumpall.c:555 +#: pg_dumpall.c:562 #, c-format msgid " -r, --roles-only dump only roles, no databases or tablespaces\n" msgstr "" " -r, --roles-only ロールã®ã¿ã‚’ダンプ。\n" " データベースã¨ãƒ†ãƒ¼ãƒ–ル空間をダンプã—ã¾ã›ã‚“\n" -#: pg_dumpall.c:557 +#: pg_dumpall.c:564 #, c-format msgid " -S, --superuser=NAME superuser user name to use in the dump\n" msgstr " -S, --superuser=NAME ダンプã§ä½¿ç”¨ã™ã‚‹ã‚¹ãƒ¼ãƒ‘ーユーザã®ãƒ¦ãƒ¼ã‚¶åを指定\n" -#: pg_dumpall.c:558 +#: pg_dumpall.c:565 #, c-format msgid " -t, --tablespaces-only dump only tablespaces, no databases or roles\n" msgstr " -t, --tablespaces-only テーブル空間ã®ã¿ã‚’ダンプ。データベースã¨ãƒ­ãƒ¼ãƒ«ã‚’ダンプã—ã¾ã›ã‚“\n" -#: pg_dumpall.c:574 +#: pg_dumpall.c:582 #, c-format -#| msgid " -d, --dbname=CONNSTR connection string\n" msgid " -d, --dbname=CONNSTR connect using connection string\n" msgstr " -d, --dbname=CONSTR 接続文字列を用ã„ãŸæŽ¥ç¶š\n" -#: pg_dumpall.c:576 +#: pg_dumpall.c:584 #, c-format msgid " -l, --database=DBNAME alternative default database\n" msgstr " -l, --database=DBNAME 代替ã®ãƒ‡ãƒ•ォルトデータベースを指定\n" -#: pg_dumpall.c:583 +#: pg_dumpall.c:591 #, c-format msgid "" "\n" @@ -2176,105 +2323,112 @@ msgstr "" "-f/--file ãŒæŒ‡å®šã•れãªã„å ´åˆã€SQLã‚¹ã‚¯ãƒªãƒ—ãƒˆã¯æ¨™æº–å‡ºåŠ›ã«æ›¸ã出ã•れã¾ã™ã€‚\n" "\n" -#: pg_dumpall.c:1083 +#: pg_dumpall.c:792 +#, c-format +msgid "%s: role name starting with \"pg_\" skipped (%s)\n" +msgstr "%s: \"pg_\"ã§å§‹ã¾ã‚‹ãƒ­ãƒ¼ãƒ«å(%s)を飛ã°ã—ã¾ã™\n" + +#: pg_dumpall.c:1169 #, c-format msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n" msgstr "%1$s: テーブル空間\"%3$s\"ã®ACLリスト(%2$s)ã‚’è§£æžã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_dumpall.c:1387 +#: pg_dumpall.c:1537 #, c-format msgid "%s: could not parse ACL list (%s) for database \"%s\"\n" msgstr "%1$s: データベース\"%3$s\"ã®ACLリスト(%2$s)ã‚’è§£æžã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_dumpall.c:1597 +#: pg_dumpall.c:1755 #, c-format msgid "%s: dumping database \"%s\"...\n" msgstr "%s: データベース\"%s\"をダンプã—ã¦ã„ã¾ã™...\n" -#: pg_dumpall.c:1607 +#: pg_dumpall.c:1779 #, c-format msgid "%s: pg_dump failed on database \"%s\", exiting\n" msgstr "%s: データベース\"%s\"ã«å¯¾ã™ã‚‹pg_dumpãŒå¤±æ•—ã—ã¾ã—ãŸã€‚終了ã—ã¾ã™\n" -#: pg_dumpall.c:1616 +#: pg_dumpall.c:1788 #, c-format msgid "%s: could not re-open the output file \"%s\": %s\n" msgstr "%s: 出力ファイル \"%s\" ã‚’å†ã‚ªãƒ¼ãƒ—ンã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_dumpall.c:1663 +#: pg_dumpall.c:1833 #, c-format msgid "%s: running \"%s\"\n" msgstr "%s: \"%s\"を実行ã—ã¦ã„ã¾ã™\n" -#: pg_dumpall.c:1843 +#: pg_dumpall.c:2017 #, c-format msgid "%s: could not connect to database \"%s\": %s\n" msgstr "%s: データベース\"%s\"ã¸æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: pg_dumpall.c:1873 +#: pg_dumpall.c:2047 #, c-format msgid "%s: could not get server version\n" msgstr "%s: サーãƒãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’入手ã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_dumpall.c:1879 +#: pg_dumpall.c:2053 #, c-format msgid "%s: could not parse server version \"%s\"\n" msgstr "%s: サーãƒãƒãƒ¼ã‚¸ãƒ§ãƒ³\"%s\"ã‚’è§£æžã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_dumpall.c:1957 pg_dumpall.c:1983 +#: pg_dumpall.c:2131 pg_dumpall.c:2157 #, c-format msgid "%s: executing %s\n" msgstr "%s: %sを実行ã—ã¦ã„ã¾ã™\n" -#: pg_dumpall.c:1963 pg_dumpall.c:1989 +#: pg_dumpall.c:2137 pg_dumpall.c:2163 #, c-format msgid "%s: query failed: %s" msgstr "%s: å•ã„åˆã‚ã›ãŒå¤±æ•—ã—ã¾ã—ãŸ: %s" -#: pg_dumpall.c:1965 pg_dumpall.c:1991 +#: pg_dumpall.c:2139 pg_dumpall.c:2165 #, c-format msgid "%s: query was: %s\n" msgstr "%s: å•ã„åˆã‚ã›: %s\n" -#: pg_restore.c:308 +#: pg_restore.c:305 #, c-format msgid "%s: options -d/--dbname and -f/--file cannot be used together\n" msgstr "\"%s: -d/--dbnameオプションã¨-f/--fileオプションã¯åŒæ™‚ã«ä½¿ç”¨ã§ãã¾ã›ã‚“\n" -#: pg_restore.c:319 +#: pg_restore.c:316 #, c-format -#| msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" msgid "%s: options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "%s: -s/--schema-only 㨠-a/--data-only ã¯åŒæ™‚ã«ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“\n" -#: pg_restore.c:326 +#: pg_restore.c:323 #, c-format -#| msgid "options -c/--clean and -a/--data-only cannot be used together\n" msgid "%s: options -c/--clean and -a/--data-only cannot be used together\n" msgstr "%s: -c/--clean 㨠-a/--data-only ã¯åŒæ™‚ã«ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“\n" -#: pg_restore.c:334 +#: pg_restore.c:330 +#, c-format +msgid "%s: invalid number of parallel jobs\n" +msgstr "%s: 無効ãªä¸¦è¡Œã‚¸ãƒ§ãƒ–æ•°ã§ã™\n" + +#: pg_restore.c:338 +#, c-format +msgid "%s: maximum number of parallel jobs is %d\n" +msgstr "%s: ä¸¦è¡Œã‚¸ãƒ§ãƒ–ã®æœ€å¤§æ•°ã¯%dã§ã™\n" + +#: pg_restore.c:347 #, c-format msgid "%s: cannot specify both --single-transaction and multiple jobs\n" msgstr "%s: --single-transaction ã¨ä¸¦åˆ—ジョブã¯åŒæ™‚ã«ã¯æŒ‡å®šã§ãã¾ã›ã‚“\n" -#: pg_restore.c:365 +#: pg_restore.c:388 #, c-format msgid "unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"t\"\n" msgstr "未知ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–フォーマット\"%s\"; \"c\"ã€\"d\"ã¾ãŸã¯\"t\"を指定ã—ã¦ãã ã•ã„\n" -#: pg_restore.c:395 -#, c-format -#| msgid "maximum number of prepared transactions reached" -msgid "%s: maximum number of parallel jobs is %d\n" -msgstr "%s: ä¸¦è¡Œã‚¸ãƒ§ãƒ–ã®æœ€å¤§æ•°ã¯%dã§ã™\n" - -#: pg_restore.c:413 +#: pg_restore.c:428 #, c-format msgid "WARNING: errors ignored on restore: %d\n" msgstr "警告: リストアã«ã¦ã‚¨ãƒ©ãƒ¼ã‚’無視ã—ã¾ã—ãŸ: %d\n" -#: pg_restore.c:427 +#: pg_restore.c:442 #, c-format msgid "" "%s restores a PostgreSQL database from an archive created by pg_dump.\n" @@ -2283,49 +2437,49 @@ msgstr "" "%sã¯pg_dumpã§ä½œæˆã—ãŸã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã‹ã‚‰PostgreSQLデータベースをリストアã—ã¾ã™ã€‚\n" "\n" -#: pg_restore.c:429 +#: pg_restore.c:444 #, c-format msgid " %s [OPTION]... [FILE]\n" msgstr " %s [OPTION]... [FILE]\n" -#: pg_restore.c:432 +#: pg_restore.c:447 #, c-format msgid " -d, --dbname=NAME connect to database name\n" msgstr " -d, --dbname=NAME 接続ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å\n" -#: pg_restore.c:433 +#: pg_restore.c:448 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=FILENAME 出力ファイルåã§ã™\n" -#: pg_restore.c:434 +#: pg_restore.c:449 #, c-format msgid " -F, --format=c|d|t backup file format (should be automatic)\n" msgstr "" " -F, --format=c|d|t ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ãƒ•ã‚¡ã‚¤ãƒ«ã®æ›¸å¼\n" " (自動的ã«è¨­å®šã•れるã¯ãšã§ã™ï¼‰\n" -#: pg_restore.c:435 +#: pg_restore.c:450 #, c-format msgid " -l, --list print summarized TOC of the archive\n" msgstr " -l, --list アーカイブã®TOCã®è¦ç´„を表示\n" -#: pg_restore.c:436 +#: pg_restore.c:451 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose 冗長モードã§ã™\n" -#: pg_restore.c:437 +#: pg_restore.c:452 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã€çµ‚了ã—ã¾ã™\n" -#: pg_restore.c:438 +#: pg_restore.c:453 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help ã“ã®ãƒ˜ãƒ«ãƒ—を表示ã—ã€çµ‚了ã—ã¾ã™\n" -#: pg_restore.c:440 +#: pg_restore.c:455 #, c-format msgid "" "\n" @@ -2334,32 +2488,32 @@ msgstr "" "\n" "リストア制御用ã®ã‚ªãƒ—ション:\n" -#: pg_restore.c:441 +#: pg_restore.c:456 #, c-format msgid " -a, --data-only restore only the data, no schema\n" msgstr " -a, --data-only データã®ã¿ã‚’リストア。スキーマをリストアã—ã¾ã›ã‚“\n" -#: pg_restore.c:443 +#: pg_restore.c:458 #, c-format msgid " -C, --create create the target database\n" msgstr " -C, --create 対象ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’作æˆ\n" -#: pg_restore.c:444 +#: pg_restore.c:459 #, c-format msgid " -e, --exit-on-error exit on error, default is to continue\n" msgstr " -e, --exit-on-error エラー時ã«çµ‚了。デフォルトã¯ç¶™ç¶š\n" -#: pg_restore.c:445 +#: pg_restore.c:460 #, c-format msgid " -I, --index=NAME restore named index\n" msgstr " -I, --index=NAME 指åã—ãŸã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’リストア\n" -#: pg_restore.c:446 +#: pg_restore.c:461 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to restore\n" msgstr " -j, --jobs=NUM ãƒªã‚¹ãƒˆã‚¢æ™‚ã«æŒ‡å®šã—ãŸæ•°ã®ä¸¦åˆ—ジョブを使用\n" -#: pg_restore.c:447 +#: pg_restore.c:462 #, c-format msgid "" " -L, --use-list=FILENAME use table of contents from this file for\n" @@ -2368,48 +2522,52 @@ msgstr "" " -L, --use-list=FILENAME ã“ã®ãƒ•ァイルã®å†…容ã«å¾“ã£ã¦ SELECT ã‚„\n" " 出力ã®ã‚½ãƒ¼ãƒˆã‚’行ã„ã¾ã™\n" -#: pg_restore.c:449 +#: pg_restore.c:464 #, c-format msgid " -n, --schema=NAME restore only objects in this schema\n" msgstr " -n, --schema=NAME 指定ã—ãŸã‚¹ã‚­ãƒ¼ãƒžã®ã‚ªãƒ–ジェクトã®ã¿ã‚’リストア\n" -#: pg_restore.c:451 +#: pg_restore.c:466 #, c-format msgid " -P, --function=NAME(args) restore named function\n" msgstr " -P, --function=NAME(args) 指åã•れãŸé–¢æ•°ã‚’リストア\n" -#: pg_restore.c:452 +#: pg_restore.c:467 #, c-format msgid " -s, --schema-only restore only the schema, no data\n" msgstr " -s, --schema-only スキーマã®ã¿ã‚’リストア。データをリストアã—ã¾ã›ã‚“\n" -#: pg_restore.c:453 +#: pg_restore.c:468 #, c-format msgid " -S, --superuser=NAME superuser user name to use for disabling triggers\n" msgstr " -S, --superuser=NAME トリガを無効ã«ã™ã‚‹ãŸã‚ã®ã‚¹ãƒ¼ãƒ‘ーユーザã®åå‰\n" -#: pg_restore.c:454 +#: pg_restore.c:469 #, c-format -#| msgid " -t, --table=NAME restore named table\n" -msgid " -t, --table=NAME restore named table(s)\n" -msgstr " -t, --table=NAME 指åã—ãŸãƒ†ãƒ¼ãƒ–ル(複数å¯)をリストア\n" +msgid " -t, --table=NAME restore named relation (table, view, etc.)\n" +msgstr " -t, --table=NAME 指定ã•れãŸãƒªãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³(テーブルã€ãƒ“ューã€ãªã©)をリストア\n" -#: pg_restore.c:455 +#: pg_restore.c:470 #, c-format msgid " -T, --trigger=NAME restore named trigger\n" msgstr " -T, --trigger=NAME 指åã—ãŸãƒˆãƒªã‚¬ã‚’リストア\n" -#: pg_restore.c:456 +#: pg_restore.c:471 #, c-format msgid " -x, --no-privileges skip restoration of access privileges (grant/revoke)\n" msgstr " -x, --no-privileges アクセス権é™(grant/revoke)ã®å¾©å…ƒã‚’çœç•¥\n" -#: pg_restore.c:457 +#: pg_restore.c:472 #, c-format msgid " -1, --single-transaction restore as a single transaction\n" msgstr " -1, --single-transaction å˜ä¸€ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã¨ã—ã¦ãƒªã‚¹ãƒˆã‚¢\n" -#: pg_restore.c:459 +#: pg_restore.c:474 +#, c-format +msgid " --enable-row-security enable row security\n" +msgstr " --enable-row-security 行セキュリティを有効ã«ã™ã‚‹\n" + +#: pg_restore.c:476 #, c-format msgid "" " --no-data-for-failed-tables do not restore data of tables that could not be\n" @@ -2418,27 +2576,38 @@ msgstr "" " --no-data-for-failed-tables 作æˆã§ããªã‹ã£ãŸãƒ†ãƒ¼ãƒƒãƒ–ルã®ãƒ‡ãƒ¼ã‚¿ã¯ãƒªã‚¹ãƒˆã‚¢\n" " ã—ã¾ã›ã‚“\n" -#: pg_restore.c:461 +#: pg_restore.c:478 #, c-format msgid " --no-security-labels do not restore security labels\n" msgstr " --no-security-labels セキュリティラベルをリストアã—ã¾ã›ã‚“\n" -#: pg_restore.c:462 +#: pg_restore.c:479 #, c-format msgid " --no-tablespaces do not restore tablespace assignments\n" msgstr " --no-tablespaces テーブル空間ã®å‰²ã‚Šå½“ã¦ã‚’リストアã—ã¾ã›ã‚“\n" -#: pg_restore.c:463 +#: pg_restore.c:480 #, c-format msgid " --section=SECTION restore named section (pre-data, data, or post-data)\n" msgstr " --section=SECTION 指定ã•れãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³ï¼ˆãƒ‡ãƒ¼ã‚¿å‰éƒ¨ã€ãƒ‡ãƒ¼ã‚¿ã€ãƒ‡ãƒ¼ã‚¿å¾Œéƒ¨ï¼‰ã‚’リストア\n" -#: pg_restore.c:474 +#: pg_restore.c:493 #, c-format msgid " --role=ROLENAME do SET ROLE before restore\n" msgstr " --role=ROLENAME リストアã«å…ˆç«‹ã£ã¦ SET ROLE ã—ã¾ã™\n" -#: pg_restore.c:476 +#: pg_restore.c:495 +#, c-format +msgid "" +"\n" +"The options -I, -n, -P, -t, -T, and --section can be combined and specified\n" +"multiple times to select multiple objects.\n" +msgstr "" +"\n" +"オプション -I, -n, -P, -t, -T, 㨠--section ã¯è¤‡æ•°ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã™ã‚‹ãŸã‚ã«\n" +"複数回組ã¿åˆã‚ã›ã¦æŒ‡å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚\n" + +#: pg_restore.c:498 #, c-format msgid "" "\n" @@ -2449,151 +2618,3 @@ msgstr "" "入力ファイルåãŒæŒ‡å®šã•れãªã„å ´åˆã€æ¨™æº–入力ãŒä½¿ç”¨ã•れã¾ã™ã€‚\n" "\n" -#~ msgid "child process was terminated by signal %d" -#~ msgstr "å­ãƒ—ロセスãŒã‚·ã‚°ãƒŠãƒ«%dã§çµ‚了ã—ã¾ã—ãŸ" - -#~ msgid "could not change directory to \"%s\"" -#~ msgstr "ディレクトリを\"%s\"ã«å¤‰æ›´ã§ãã¾ã›ã‚“ã§ã—ãŸ" - -#~ msgid " --version output version information, then exit\n" -#~ msgstr " --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã€çµ‚了ã—ã¾ã™\n" - -#~ msgid "file archiver" -#~ msgstr "ファイルアーカイãƒ" - -#~ msgid "could not create worker thread: %s\n" -#~ msgstr "ワーカースレッドを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" - -#~ msgid "*** aborted because of error\n" -#~ msgstr "*** エラーã®ãŸã‚中断\n" - -#~ msgid "found more than one entry for pg_indexes in pg_class\n" -#~ msgstr "pg_class内ã«pg_indexes用ã®ã‚¨ãƒ³ãƒˆãƒªãŒè¤‡æ•°ã‚りã¾ã—ãŸ\n" - -#~ msgid "cannot reopen non-seekable file\n" -#~ msgstr "シークã§ããªã„ファイルをå†ã‚ªãƒ¼ãƒ—ンã§ãã¾ã›ã‚“\n" - -#~ msgid "restoring large object OID %u\n" -#~ msgstr "OID %uã®ãƒ©ãƒ¼ã‚¸ã‚ªãƒ–ジェクトをリストアã—ã¦ã„ã¾ã™\n" - -#~ msgid "cannot reopen stdin\n" -#~ msgstr "標準入力をå†ã‚ªãƒ¼ãƒ—ンã§ãã¾ã›ã‚“\n" - -#~ msgid "could not find entry for pg_indexes in pg_class\n" -#~ msgstr "pg_class内ã«pg_indexes用ã®ã‚¨ãƒ³ãƒˆãƒªãŒã‚りã¾ã›ã‚“ã§ã—ãŸ\n" - -#~ msgid "child process exited with exit code %d" -#~ msgstr "å­ãƒ—ロセスãŒçµ‚了コード%dã§çµ‚了ã—ã¾ã—ãŸ" - -#~ msgid "could not open large object TOC for output: %s\n" -#~ msgstr "出力用ã®ãƒ©ãƒ¼ã‚¸ã‚ªãƒ–ジェクトTOCをオープンã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" - -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help ヘルプを表示ã—ã€çµ‚了ã—ã¾ã™\n" - -#~ msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n" -#~ msgstr "COPYæ–‡ãŒç„¡åйã§ã™ -- 文字列\"%s\"ã«\"copy\"ãŒã‚りã¾ã›ã‚“ã§ã—ãŸ\n" - -#~ msgid "could not open large object TOC for input: %s\n" -#~ msgstr "入力用ã®ãƒ©ãƒ¼ã‚¸ã‚ªãƒ–ジェクトTOCをオープンã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" - -#~ msgid "query returned no rows: %s\n" -#~ msgstr "å•ã„åˆã‚ã›ã®çµæžœè¡ŒãŒã‚りã¾ã›ã‚“ã§ã—ãŸ: %s\n" - -#~ msgid "dumpDatabase(): could not find pg_largeobject.relfrozenxid\n" -#~ msgstr "dumpDatabase(): pg_largeobject.relfrozenxid ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n" - -#~ msgid "missing pg_database entry for database \"%s\"\n" -#~ msgstr "データベース\"%s\"用ã®ã‚¨ãƒ³ãƒˆãƒªãŒpg_databaseã«ã‚りã¾ã›ã‚“\n" - -#~ msgid "%s: invalid -X option -- %s\n" -#~ msgstr "%s: 無効㪠-X オプション -- %s\n" - -#~ msgid "" -#~ "WARNING:\n" -#~ " This format is for demonstration purposes; it is not intended for\n" -#~ " normal use. Files will be written in the current working directory.\n" -#~ msgstr "" -#~ "警告:\n" -#~ "ã“ã®æ›¸å¼ã¯ãƒ‡ãƒ¢ã‚’目的ã¨ã—ãŸã‚‚ã®ã§ã™ã€‚通常ã®ä½¿ç”¨ã‚’æ„図ã—ãŸã‚‚ã®ã§ã¯ã‚りã¾\n" -#~ "ã›ã‚“。ファイルã¯ç¾åœ¨ã®ä½œæ¥­ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«æ›¸ã出ã•れã¾ã™\n" - -#~ msgid "%s: could not parse version \"%s\"\n" -#~ msgstr "%s: ãƒãƒ¼ã‚¸ãƒ§ãƒ³\"%s\"ã‚’è§£æžã§ãã¾ã›ã‚“ã§ã—ãŸ\n" - -#~ msgid "could not close large object file\n" -#~ msgstr "ラージオブジェクトファイルをクローズã§ãã¾ã›ã‚“ã§ã—ãŸ\n" - -#~ msgid "child process was terminated by exception 0x%X" -#~ msgstr "å­ãƒ—ロセスãŒä¾‹å¤–0x%Xã§çµ‚了ã—ã¾ã—ãŸ" - -#~ msgid " -O, --no-owner skip restoration of object ownership\n" -#~ msgstr " -O, --no-owner ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ‰€æœ‰æ¨©ã®å¾©å…ƒã‚’çœç•¥\n" - -#~ msgid "cannot duplicate null pointer\n" -#~ msgstr "null ãƒã‚¤ãƒ³ã‚¿ã‚’複製ã§ãã¾ã›ã‚“\n" - -#~ msgid "" -#~ " --use-set-session-authorization\n" -#~ " use SET SESSION AUTHORIZATION commands instead of\n" -#~ " ALTER OWNER commands to set ownership\n" -#~ msgstr "" -#~ " --use-set-session-authorization\n" -#~ " 所有者をセットã™ã‚‹éš›ã€ALTER OWNER コマンドã®ä»£ã‚Š\n" -#~ " ã« SET SESSION AUTHORIZATION コマンドを使用ã™ã‚‹\n" - -#~ msgid "%s: out of memory\n" -#~ msgstr "%s: メモリä¸è¶³ã§ã™\n" - -#~ msgid " -c, --clean clean (drop) database objects before recreating\n" -#~ msgstr " -c, --clean å†ä½œæˆå‰ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’削除ã—ã¾ã™\n" - -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help ヘルプを表示ã—ã¦çµ‚了\n" - -#~ msgid "SQL command failed\n" -#~ msgstr "SQLコマンドãŒå¤±æ•—ã—ã¾ã—ãŸ\n" - -#~ msgid " --disable-triggers disable triggers during data-only restore\n" -#~ msgstr "" -#~ " --disable-triggers \n" -#~ " データã®ã¿ã®å¾©å…ƒä¸­ã«ãƒˆãƒªã‚¬ã‚’無効ã«ã—ã¾ã™\n" - -#~ msgid "query returned more than one (%d) pg_database entry for database \"%s\"\n" -#~ msgstr "å•ã„åˆã‚ã›ã«ã‚ˆã‚Šã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹\"%2$s\"用ã®ã‚¨ãƒ³ãƒˆãƒªãŒpg_databaseã‹ã‚‰è¤‡æ•°(%1$d)è¿”ã•れã¾ã—ãŸ\n" - -#~ msgid "invalid COPY statement -- could not find \"from stdin\" in string \"%s\" starting at position %lu\n" -#~ msgstr "COPYæ–‡ãŒç„¡åйã§ã™ -- 文字列\"%s\"ã®%luä½ç½®ã‹ã‚‰\"from stdin\"ãŒã‚りã¾ã›ã‚“ã§ã—ãŸ\n" - -#~ msgid "found more than one pg_database entry for this database\n" -#~ msgstr "ã“ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ç”¨ã®pg_databaseエントリãŒè¤‡æ•°ã‚りã¾ã—ãŸ\n" - -#~ msgid "could not parse version string \"%s\"\n" -#~ msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³æ–‡å­—列\"%s\"ã‚’è§£æžã§ãã¾ã›ã‚“ã§ã—ãŸ\n" - -#~ msgid "dumpDatabase(): could not find pg_largeobject_metadata.relfrozenxid\n" -#~ msgstr "dumpDatabase(): pg_largeobject_metadata.relfrozenxidãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n" - -#~ msgid "child process was terminated by signal %s" -#~ msgstr "å­ãƒ—ロセスãŒã‚·ã‚°ãƒŠãƒ«%sã§çµ‚了ã—ã¾ã—ãŸ" - -#~ msgid " --version output version information, then exit\n" -#~ msgstr " --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã¦çµ‚了\n" - -#~ msgid "child process exited with unrecognized status %d" -#~ msgstr "å­ãƒ—ãƒ­ã‚»ã‚¹ãŒæœªçŸ¥ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹%dã§çµ‚了ã—ã¾ã—ãŸ" - -#~ msgid "could not close data file after reading\n" -#~ msgstr "読ã¿è¾¼ã‚“ã å¾Œãƒ‡ãƒ¼ã‚¿ãƒ•ァイルをクローズã§ãã¾ã›ã‚“ã§ã—ãŸ\n" - -#~ msgid "-C and -c are incompatible options\n" -#~ msgstr "オプション-Cã¨-cã¯äº’æ›æ€§ãŒã‚りã¾ã›ã‚“\n" - -#~ msgid "missing pg_database entry for this database\n" -#~ msgstr "ã“ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ç”¨ã®pg_databaseエントリãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n" - -#~ msgid "parallel_restore should not return\n" -#~ msgstr "parallel_restore 㯠return ã—ã¾ã›ã‚“\n" - -#~ msgid "worker process crashed: status %d\n" -#~ msgstr "ワーカープロセスãŒã‚¯ãƒ©ãƒƒã‚·ãƒ¥ã—ã¾ã—ãŸï¼šã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ %d\n" diff --git a/src/bin/pg_dump/po/ko.po b/src/bin/pg_dump/po/ko.po index d566c6b512..45ba3bca78 100644 --- a/src/bin/pg_dump/po/ko.po +++ b/src/bin/pg_dump/po/ko.po @@ -3,16 +3,16 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.5\n" +"Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-01-27 10:03+0900\n" -"PO-Revision-Date: 2016-01-29 17:14+0900\n" +"POT-Creation-Date: 2016-09-26 14:02+0900\n" +"PO-Revision-Date: 2016-09-26 18:26+0900\n" "Last-Translator: Ioseph Kim \n" "Language-Team: Korean Team \n" +"Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 @@ -51,8 +51,8 @@ msgid "pclose failed: %s" msgstr "pclose 실패: %s" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 -#: ../../common/fe_memutils.c:98 pg_backup_db.c:137 pg_backup_db.c:188 -#: pg_backup_db.c:245 pg_backup_db.c:287 +#: ../../common/fe_memutils.c:98 pg_backup_db.c:158 pg_backup_db.c:213 +#: pg_backup_db.c:272 pg_backup_db.c:314 #, c-format msgid "out of memory\n" msgstr "메모리 부족\n" @@ -97,267 +97,267 @@ msgstr "하위 프로세스가 종료ë˜ì—ˆìŒ, ì‹œê·¸ë„ %d" msgid "child process exited with unrecognized status %d" msgstr "하위 프로세스가 종료ë˜ì—ˆìŒ, 알수 없는 ìƒíƒœ %d" -#: common.c:109 +#: common.c:121 +#, c-format +msgid "reading extensions\n" +msgstr "확장 기능 ì½ëŠ” 중\n" + +#: common.c:126 +#, c-format +msgid "identifying extension members\n" +msgstr "확장 멤버를 ì‹ë³„ 중\n" + +#: common.c:130 #, c-format msgid "reading schemas\n" msgstr "ìŠ¤í‚¤ë§ˆë“¤ì„ ì½ëŠ” 중\n" -#: common.c:120 +#: common.c:141 #, c-format msgid "reading user-defined tables\n" msgstr "ì‚¬ìš©ìž ì •ì˜ í…Œì´ë¸”ë“¤ì„ ì½ëŠ” 중\n" -#: common.c:128 -#, c-format -msgid "reading extensions\n" -msgstr "확장 기능 ì½ëŠ” 중\n" - -#: common.c:132 +#: common.c:149 #, c-format msgid "reading user-defined functions\n" msgstr "ì‚¬ìš©ìž ì •ì˜ í•¨ìˆ˜ë“¤ ì½ëŠ” 중\n" -#: common.c:138 +#: common.c:155 #, c-format msgid "reading user-defined types\n" msgstr "ì‚¬ìš©ìž ì •ì˜ ìžë£Œí˜•ì„ ì½ëŠ” 중\n" -#: common.c:144 +#: common.c:161 #, c-format msgid "reading procedural languages\n" msgstr "프로시쥬얼 언어를 ì½ëŠ” 중\n" -#: common.c:148 +#: common.c:165 #, c-format msgid "reading user-defined aggregate functions\n" msgstr "ì‚¬ìš©ìž ì •ì˜ ì§‘ê³„ 함수를 ì½ëŠ” 중\n" -#: common.c:152 +#: common.c:169 #, c-format msgid "reading user-defined operators\n" msgstr "ì‚¬ìš©ìž ì •ì˜ ì—°ì‚°ìžë¥¼ ì½ëŠ” 중\n" -#: common.c:157 +#: common.c:174 +#, c-format +msgid "reading user-defined access methods\n" +msgstr "ì‚¬ìš©ìž ì •ì˜ ì ‘ê·¼ ë°©ë²•ì„ ì½ëŠ” 중\n" + +#: common.c:178 #, c-format msgid "reading user-defined operator classes\n" msgstr "ì‚¬ìš©ìž ì •ì˜ ì—°ì‚°ìž í´ëž˜ìŠ¤ë¥¼ ì½ëŠ” 중\n" -#: common.c:161 +#: common.c:182 #, c-format msgid "reading user-defined operator families\n" msgstr "ì‚¬ìš©ìž ì •ì˜ ì—°ì‚°ìž ë¶€ë¥˜ë“¤ ì½ëŠ” 중\n" -#: common.c:165 +#: common.c:186 #, c-format msgid "reading user-defined text search parsers\n" msgstr "ì‚¬ìš©ìž ì •ì˜ í…스트 검색 파서를 ì½ëŠ” 중\n" -#: common.c:169 +#: common.c:190 #, c-format msgid "reading user-defined text search templates\n" msgstr "ì‚¬ìš©ìž ì •ì˜ í…스트 검색 í…œí”Œë¦¿ì„ ì½ëŠ” 중\n" -#: common.c:173 +#: common.c:194 #, c-format msgid "reading user-defined text search dictionaries\n" msgstr "ì‚¬ìš©ìž ì •ì˜ í…스트 검색 ì‚¬ì „ì„ ì½ëŠ” 중\n" -#: common.c:177 +#: common.c:198 #, c-format msgid "reading user-defined text search configurations\n" msgstr "ì‚¬ìš©ìž ì •ì˜ í…스트 검색 êµ¬ì„±ì„ ì½ëŠ” 중\n" -#: common.c:181 +#: common.c:202 #, c-format msgid "reading user-defined foreign-data wrappers\n" msgstr "ì‚¬ìš©ìž ì •ì˜ ì™¸ë¶€ ë°ì´í„° 래í¼ë¥¼ ì½ëŠ” 중\n" -#: common.c:185 +#: common.c:206 #, c-format msgid "reading user-defined foreign servers\n" msgstr "ì‚¬ìš©ìž ì •ì˜ ì™¸ë¶€ 서버를 ì½ëŠ” 중\n" -#: common.c:189 +#: common.c:210 #, c-format msgid "reading default privileges\n" msgstr "기본 ì ‘ê·¼ 권한 ì½ëŠ” 중\n" -#: common.c:193 +#: common.c:214 #, c-format msgid "reading user-defined collations\n" msgstr "ì‚¬ìš©ìž ì •ì˜ ê¸€ìž ì •ë ¬(collation) ì½ëŠ” 중\n" -#: common.c:198 +#: common.c:219 #, c-format msgid "reading user-defined conversions\n" msgstr "ì‚¬ìš©ìž ì •ì˜ ì¸ì½”딩 ë³€í™˜ê·œì¹™ì„ ì½ëŠ” 중\n" -#: common.c:202 +#: common.c:223 #, c-format msgid "reading type casts\n" msgstr "형변환ìž(type cast)ë“¤ì„ ì½ëŠ” 중\n" -#: common.c:206 +#: common.c:227 #, c-format msgid "reading transforms\n" msgstr "변환ìž(transform) ì½ëŠ” 중\n" -#: common.c:210 +#: common.c:231 #, c-format msgid "reading table inheritance information\n" msgstr "í…Œì´ë¸” ìƒì† 정보를 ì½ëŠ” 중\n" -#: common.c:214 +#: common.c:235 #, c-format msgid "reading event triggers\n" msgstr "ì´ë²¤íЏ íŠ¸ë¦¬ê±°ë“¤ì„ ì½ëŠ” 중\n" -#: common.c:223 +#: common.c:240 #, c-format -msgid "finding extension members\n" -msgstr "확장 기능 개수를 찾는 중\n" +msgid "finding extension tables\n" +msgstr "확장 í…Œì´ë¸”ì„ ì°¾ëŠ” 중\n" -#: common.c:228 +#: common.c:245 #, c-format msgid "finding inheritance relationships\n" msgstr "ìƒì† 관계를 조사중\n" -#: common.c:232 +#: common.c:249 #, c-format msgid "reading column info for interesting tables\n" msgstr "재미난 í…Œì´ë¸”들(interesting tables)ì„ ìœ„í•´ ì—´ 정보를 ì½ëŠ” 중\n" -#: common.c:236 +#: common.c:253 #, c-format msgid "flagging inherited columns in subtables\n" msgstr "하위 í…Œì´ë¸”ì—서 ìƒì†ëœ ì—´ 구분중\n" -#: common.c:240 +#: common.c:257 #, c-format msgid "reading indexes\n" msgstr "ì¸ë±ìŠ¤ë“¤ì„ ì½ëŠ” 중\n" -#: common.c:244 +#: common.c:261 #, c-format msgid "reading constraints\n" msgstr "제약 ì¡°ê±´ë“¤ì„ ì½ëŠ” 중\n" -#: common.c:248 +#: common.c:265 #, c-format msgid "reading triggers\n" msgstr "íŠ¸ë¦¬ê±°ë“¤ì„ ì½ëŠ” 중\n" -#: common.c:252 +#: common.c:269 #, c-format msgid "reading rewrite rules\n" msgstr "룰(rule) ì½ëŠ” 중\n" -#: common.c:256 +#: common.c:273 #, c-format msgid "reading policies\n" msgstr "ì •ì±… ì½ëŠ” 중\n" -#: common.c:804 +#: common.c:908 #, c-format msgid "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n" msgstr "" "안전 검사 실패, OID %uì¸ ë¶€ëª¨ 개체가 ì—†ìŒ. 해당 í…Œì´ë¸” \"%s\" (OID %u)\n" -#: common.c:846 +#: common.c:950 #, c-format msgid "could not parse numeric array \"%s\": too many numbers\n" msgstr "\"%s\" ìˆ«ìž ë°°ì—´ì„ ë¶„ì„í•  수 ì—†ìŒ: 너무 숫ìžê°€ 있습니다\n" -#: common.c:861 +#: common.c:965 #, c-format msgid "could not parse numeric array \"%s\": invalid character in number\n" msgstr "\"%s\" ìˆ«ìž ë°°ì—´ì„ ë¶„ì„í•  수 ì—†ìŒ: 숫ìžì•ˆì— ì´ìƒí•œ 글ìžê°€ 있습니다\n" #. translator: this is a module name -#: compress_io.c:79 +#: compress_io.c:78 msgid "compress_io" -msgstr "" +msgstr "compress_io" -#: compress_io.c:115 +#: compress_io.c:114 #, c-format msgid "invalid compression code: %d\n" msgstr "ìž˜ëª»ëœ ì••ì¶• 수위: %d\n" -#: compress_io.c:139 compress_io.c:175 compress_io.c:196 compress_io.c:529 -#: compress_io.c:572 +#: compress_io.c:138 compress_io.c:174 compress_io.c:192 compress_io.c:519 +#: compress_io.c:562 #, c-format msgid "not built with zlib support\n" -msgstr "" +msgstr "zlib ì§€ì› ê¸°ëŠ¥ì´ ì—†ìŒ\n" -#: compress_io.c:246 compress_io.c:348 +#: compress_io.c:242 compress_io.c:344 #, c-format msgid "could not initialize compression library: %s\n" msgstr "ì••ì¶• ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ 초기화 í•  수 ì—†ìŒ: %s\n" -#: compress_io.c:267 +#: compress_io.c:263 #, c-format msgid "could not close compression stream: %s\n" msgstr "ì••ì¶• ìŠ¤íŠ¸ë¦¼ì„ ë‹«ì„ ìˆ˜ ì—†ìŒ: %s\n" -#: compress_io.c:285 +#: compress_io.c:281 #, c-format msgid "could not compress data: %s\n" msgstr "ìžë£Œë¥¼ ì••ì¶•í•  수 ì—†ìŒ: %s\n" -#: compress_io.c:368 compress_io.c:384 +#: compress_io.c:361 compress_io.c:377 #, c-format msgid "could not uncompress data: %s\n" msgstr "ìžë£Œ ì••ì¶•ì„ í’€ 수 없습니다: %s\n" -#: compress_io.c:392 +#: compress_io.c:385 #, c-format msgid "could not close compression library: %s\n" msgstr "ì••ì¶• ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ë‹«ì„ ìˆ˜ ì—†ìŒ: %s\n" -#: compress_io.c:606 compress_io.c:642 pg_backup_custom.c:591 -#: pg_backup_tar.c:560 +#: compress_io.c:596 compress_io.c:632 pg_backup_custom.c:591 +#: pg_backup_tar.c:561 #, c-format msgid "could not read from input file: %s\n" msgstr "ìž…ë ¥ 파ì¼ì„ ì½ì„ 수 ì—†ìŒ: %s\n" -#: compress_io.c:645 pg_backup_custom.c:588 pg_backup_directory.c:552 -#: pg_backup_tar.c:796 pg_backup_tar.c:820 +#: compress_io.c:635 pg_backup_custom.c:588 pg_backup_directory.c:548 +#: pg_backup_tar.c:797 pg_backup_tar.c:821 #, c-format msgid "could not read from input file: end of file\n" msgstr "ìž…ë ¥ 파ì¼ì„ ì½ì„ 수 ì—†ìŒ: íŒŒì¼ ë\n" -#: parallel.c:78 +#: parallel.c:163 msgid "parallel archiver" msgstr "병렬 ì•„ì¹´ì´ë²„" # # search5 ë # # advance 부분 -#: parallel.c:143 +#: parallel.c:227 #, c-format msgid "%s: WSAStartup failed: %d\n" msgstr "%s: WSAStartup 작업 실패: %d\n" -#: parallel.c:343 -#, c-format -msgid "worker is terminating\n" -msgstr "작업 프로세스 종료 중\n" - -#: parallel.c:537 +#: parallel.c:930 #, c-format msgid "could not create communication channels: %s\n" msgstr "통신 ì²´ë„ì„ ë§Œë“¤ 수 ì—†ìŒ: %s\n" -#: parallel.c:611 +#: parallel.c:993 #, c-format msgid "could not create worker process: %s\n" msgstr "ìž‘ì—…ìž í”„ë¡œì„¸ìŠ¤ë¥¼ 만들 수 ì—†ìŒ: %s\n" -#: parallel.c:828 -#, c-format -msgid "could not get relation name for OID %u: %s\n" -msgstr "%u OIDì— ëŒ€ì‘하는 릴레ì´ì…˜ ì´ë¦„ì„ ì•Œ 수 ì—†ìŒ: %s\n" - -#: parallel.c:845 +#: parallel.c:1188 #, c-format msgid "" "could not obtain lock on relation \"%s\"\n" @@ -365,119 +365,112 @@ msgid "" "table after the pg_dump parent process had gotten the initial ACCESS SHARE " "lock on the table.\n" msgstr "" +"\"%s\" 릴레ì´ì…˜ì„ ì„ ì í•  수 ì—†ìŒ\n" +"ì´ ìƒí™©ì€ ì¼ë°˜ì ìœ¼ë¡œ 다른 세션ì—서 해당 í…Œì´ë¸”ì„ ì´ë¯¸ ë¤í”„하고 있거나 " +"기타 다른 ì´ìœ ë¡œ 다른 ì„¸ì…˜ì— ì˜í•´ì„œ ì„ ì  ëœ ê²½ìš°ìž…ë‹ˆë‹¤.\n" -#: parallel.c:929 +#: parallel.c:1258 #, c-format -msgid "unrecognized command on communication channel: %s\n" -msgstr "통신 ì²´ë„ì—서 알 수 없는 명령: %s\n" +msgid "unrecognized command received from master: \"%s\"\n" +msgstr "마스터ì—서 알 수 없는 ëª…ë ¹ì„ ë°›ìŒ: \"%s\"\n" -#: parallel.c:962 +#: parallel.c:1296 #, c-format msgid "a worker process died unexpectedly\n" msgstr "작업 프로세스가 예ìƒì¹˜ 않게 종료ë¨\n" -#: parallel.c:989 parallel.c:998 +#: parallel.c:1322 parallel.c:1328 #, c-format -msgid "invalid message received from worker: %s\n" -msgstr "작업 프로세스로부터 ìž˜ëª»ëœ ë©”ì‹œì§€ë¥¼ ë°›ìŒ: %s\n" +msgid "invalid message received from worker: \"%s\"\n" +msgstr "작업 프로세스로부터 ìž˜ëª»ëœ ë©”ì‹œì§€ë¥¼ ë°›ìŒ: \"%s\"\n" -#: parallel.c:995 pg_backup_db.c:355 -#, c-format -msgid "%s" -msgstr "%s" - -#: parallel.c:1047 parallel.c:1091 +#: parallel.c:1385 parallel.c:1436 #, c-format msgid "error processing a parallel work item\n" -msgstr "" +msgstr "병렬 작업 ì•„ì´í…œ 처리 오류\n" -#: parallel.c:1119 parallel.c:1257 +#: parallel.c:1465 parallel.c:1583 #, c-format msgid "could not write to the communication channel: %s\n" msgstr "통신 ì²´ë„ì—ì— ì“¸ 수 ì—†ìŒ: %s\n" -#: parallel.c:1168 +#: parallel.c:1543 #, c-format -msgid "terminated by user\n" -msgstr "사용ìžì— ì˜í•´ 종료ë¨\n" +msgid "select() failed: %s\n" +msgstr "select() 실패: %s\n" -#: parallel.c:1220 -#, c-format -msgid "error in ListenToWorkers(): %s\n" -msgstr "ListenToWorkers()ì—서 오류 ë°œìƒ: %s\n" - -#: parallel.c:1345 +#: parallel.c:1668 #, c-format msgid "pgpipe: could not create socket: error code %d\n" msgstr "pgpipe: ì†Œì¼“ì„ ë§Œë“¤ 수 ì—†ìŒ: 오류 코드 %d\n" -#: parallel.c:1356 +#: parallel.c:1679 #, c-format msgid "pgpipe: could not bind: error code %d\n" msgstr "pgpipe: ë°”ì¸ë”© í•  수 ì—†ìŒ: 오류 코드 %d\n" -#: parallel.c:1363 +#: parallel.c:1686 #, c-format msgid "pgpipe: could not listen: error code %d\n" msgstr "pgpipe: 리슨 í•  수 ì—†ìŒ: 오류 코드 %d\n" -#: parallel.c:1370 +#: parallel.c:1693 #, c-format msgid "pgpipe: getsockname() failed: error code %d\n" msgstr "pgpipe: getsockname() 실패: 오류 코드 %d\n" -#: parallel.c:1381 +#: parallel.c:1704 #, c-format msgid "pgpipe: could not create second socket: error code %d\n" msgstr "pgpipe: ë‘번째 ì†Œì¼“ì„ ë§Œë“¤ 수 ì—†ìŒ: 오류 코드 %d\n" -#: parallel.c:1390 +#: parallel.c:1713 #, c-format msgid "pgpipe: could not connect socket: error code %d\n" msgstr "pgpipe: 소켓 ì ‘ì† ì‹¤íŒ¨: 오류 코드 %d\n" -#: parallel.c:1397 +#: parallel.c:1722 #, c-format msgid "pgpipe: could not accept connection: error code %d\n" msgstr "pgpipe: ì ‘ì†ì„ 승ì¸í•  수 ì—†ìŒ: 오류 코드 %d\n" #. translator: this is a module name -#: pg_backup_archiver.c:53 +#: pg_backup_archiver.c:55 msgid "archiver" msgstr "ì•„ì¹´ì´ë²„" -#: pg_backup_archiver.c:230 pg_backup_archiver.c:1479 +#: pg_backup_archiver.c:234 pg_backup_archiver.c:1519 #, c-format msgid "could not close output file: %s\n" msgstr "출력 파ì¼ì„ ë‹«ì„ ìˆ˜ ì—†ìŒ: %s\n" -#: pg_backup_archiver.c:265 pg_backup_archiver.c:270 +#: pg_backup_archiver.c:280 pg_backup_archiver.c:285 #, c-format msgid "WARNING: archive items not in correct section order\n" -msgstr "" +msgstr "경고: ì•„ì¹´ì´ë¸Œ ì•„ì´í…œì˜ 순서가 섹션ì—서 비정ìƒì ìž„\n" -#: pg_backup_archiver.c:276 +#: pg_backup_archiver.c:291 #, c-format msgid "unexpected section code %d\n" msgstr "예ìƒì¹˜ 못한 섹션 코드 %d\n" -#: pg_backup_archiver.c:308 +#: pg_backup_archiver.c:327 #, c-format msgid "-C and -1 are incompatible options\n" msgstr "-C와 -1ì€ í•¨ê»˜ 사용할 수 ì—†ìŒ\n" -#: pg_backup_archiver.c:318 +#: pg_backup_archiver.c:337 #, c-format msgid "parallel restore is not supported with this archive file format\n" msgstr "ì´ ì•„ì¹´ì´ë¸Œ íŒŒì¼ í˜•ì‹ì—서는 병렬 ë³µì›ì´ ì§€ì›ë˜ì§€ 않ìŒ\n" -#: pg_backup_archiver.c:322 +#: pg_backup_archiver.c:341 #, c-format msgid "" "parallel restore is not supported with archives made by pre-8.0 pg_dump\n" msgstr "8.0 ì´ì „ pg_dump로 만든 ì•„ì¹´ì´ë¸Œì—서는 병렬 ë³µì›ì´ ì§€ì›ë˜ì§€ 않ìŒ\n" -#: pg_backup_archiver.c:340 +#: pg_backup_archiver.c:359 #, c-format msgid "" "cannot restore from compressed archive (compression not supported in this " @@ -486,82 +479,82 @@ msgstr "" "ì••ì¶•ëœ ìžë£ŒíŒŒì¼ì„ ë³µì›ìš©ìœ¼ë¡œ 사용할 수 없습니다(ì••ì¶•ê¸°ëŠ¥ì„ ì§€ì›í•˜ì§€ 않고 컴파" "ì¼ë˜ì—ˆìŒ)\n" -#: pg_backup_archiver.c:357 +#: pg_backup_archiver.c:376 #, c-format msgid "connecting to database for restore\n" msgstr "리스토어 ìž‘ì—…ì„ ìœ„í•´ ë°ì´í„°ë² ì´ìŠ¤ì— ì ‘ì†í•©ë‹ˆë‹¤\n" -#: pg_backup_archiver.c:359 +#: pg_backup_archiver.c:378 #, c-format msgid "direct database connections are not supported in pre-1.3 archives\n" msgstr "pre-1.3 archiveì—서 ì§í†µ ë°ì´í„°ë² ì´ìФ ì ‘ì†ì€ ì§€ì›ë˜ì§€ 않습니다\n" -#: pg_backup_archiver.c:404 +#: pg_backup_archiver.c:423 #, c-format msgid "implied data-only restore\n" msgstr "ì•”ì‹œëœ ìžë£Œë§Œ ë³µì›í•˜ê¸° - 아주 ë‚˜ìœ ë²ˆì—­\n" -#: pg_backup_archiver.c:474 +#: pg_backup_archiver.c:493 #, c-format msgid "dropping %s %s\n" msgstr "%s %s 삭제하는 중\n" -#: pg_backup_archiver.c:627 +#: pg_backup_archiver.c:646 #, c-format msgid "setting owner and privileges for %s \"%s.%s\"\n" msgstr "%s \"%s.%s\" ê°ì²´ì˜ 소유주와 ì ‘ê·¼ ê¶Œí•œì„ ì§€ì •í•˜ëŠ” 중\n" -#: pg_backup_archiver.c:630 +#: pg_backup_archiver.c:649 #, c-format msgid "setting owner and privileges for %s \"%s\"\n" msgstr "%s \"%s\" ê°ì²´ì˜ 소유주와 ì ‘ê·¼ ê¶Œí•œì„ ì§€ì •í•˜ëŠ” 중\n" -#: pg_backup_archiver.c:696 pg_backup_archiver.c:698 +#: pg_backup_archiver.c:715 pg_backup_archiver.c:717 #, c-format msgid "warning from original dump file: %s\n" msgstr "ì›ë³¸ ë¤í”„ 파ì¼ì—서 ë°œìƒí•œ 경고: %s\n" -#: pg_backup_archiver.c:707 +#: pg_backup_archiver.c:726 #, c-format msgid "creating %s \"%s.%s\"\n" msgstr "%s \"%s.%s\" 만드는 중\n" -#: pg_backup_archiver.c:710 +#: pg_backup_archiver.c:729 #, c-format msgid "creating %s \"%s\"\n" msgstr "%s \"%s\" 만드는 중\n" -#: pg_backup_archiver.c:755 +#: pg_backup_archiver.c:781 #, c-format msgid "connecting to new database \"%s\"\n" msgstr "\"%s\" 새 ë°ì´í„°ë² ì´ìŠ¤ì— ì ‘ì†í•©ë‹ˆë‹¤\n" -#: pg_backup_archiver.c:783 +#: pg_backup_archiver.c:809 #, c-format msgid "processing %s\n" msgstr "%s 처리 중\n" -#: pg_backup_archiver.c:803 +#: pg_backup_archiver.c:829 #, c-format msgid "processing data for table \"%s.%s\"\n" msgstr "\"%s.%s\" í…Œì´ë¸”ì˜ ìžë£Œë¥¼ 처리 중\n" -#: pg_backup_archiver.c:865 +#: pg_backup_archiver.c:891 #, c-format msgid "executing %s %s\n" msgstr "실행중: %s %s\n" -#: pg_backup_archiver.c:902 +#: pg_backup_archiver.c:930 #, c-format msgid "disabling triggers for %s\n" msgstr "%s ìžë£Œ ë³µì›ì„ 하면서 트리거 ìž‘ë™ì„ 비활성화 합니다\n" -#: pg_backup_archiver.c:928 +#: pg_backup_archiver.c:958 #, c-format msgid "enabling triggers for %s\n" msgstr "%s 트리거 ìž‘ë™ì„ 활성화 합니다\n" -#: pg_backup_archiver.c:958 +#: pg_backup_archiver.c:988 #, c-format msgid "" "internal error -- WriteData cannot be called outside the context of a " @@ -569,260 +562,275 @@ msgid "" msgstr "" "ë‚´ë¶€ 오류 -- WriteDataê°€ DataDumper 루틴 ì˜ì—­ ë°–ì—서 호출 ë  ìˆ˜ 없습니다\n" -#: pg_backup_archiver.c:1122 +#: pg_backup_archiver.c:1157 #, c-format msgid "large-object output not supported in chosen format\n" msgstr "ì„ íƒí•œ íŒŒì¼ í˜•íƒœë¡œëŠ” large-object를 ë¤í”„í•  수 없습니다\n" -#: pg_backup_archiver.c:1176 +#: pg_backup_archiver.c:1215 #, c-format msgid "restored %d large object\n" msgid_plural "restored %d large objects\n" msgstr[0] "%dê°œì˜ í° ê°œì²´ê°€ ë³µì›ë¨\n" -#: pg_backup_archiver.c:1197 pg_backup_tar.c:738 +#: pg_backup_archiver.c:1236 pg_backup_tar.c:739 #, c-format msgid "restoring large object with OID %u\n" msgstr "%u OID large object를 ë³µì›ì¤‘\n" -#: pg_backup_archiver.c:1209 +#: pg_backup_archiver.c:1248 #, c-format msgid "could not create large object %u: %s" msgstr "%u large object를 만들 수 ì—†ìŒ: %s" -#: pg_backup_archiver.c:1214 pg_dump.c:2777 +#: pg_backup_archiver.c:1253 pg_dump.c:3050 #, c-format msgid "could not open large object %u: %s" msgstr "%u large object를 ì—´ 수 ì—†ìŒ: %s" -#: pg_backup_archiver.c:1271 +#: pg_backup_archiver.c:1311 #, c-format msgid "could not open TOC file \"%s\": %s\n" msgstr "TOC íŒŒì¼ \"%s\"ì„(를) ì—´ 수 ì—†ìŒ: %s\n" -#: pg_backup_archiver.c:1312 +#: pg_backup_archiver.c:1352 #, c-format msgid "WARNING: line ignored: %s\n" msgstr "경고: 줄 무시ë¨: %s\n" -#: pg_backup_archiver.c:1319 +#: pg_backup_archiver.c:1359 #, c-format msgid "could not find entry for ID %d\n" msgstr "%d IDì— ëŒ€í•œ í•­ëª©ì„ ì°¾ì§€ 못했ìŒ\n" -#: pg_backup_archiver.c:1340 pg_backup_directory.c:230 -#: pg_backup_directory.c:601 +#: pg_backup_archiver.c:1380 pg_backup_directory.c:230 +#: pg_backup_directory.c:597 #, c-format msgid "could not close TOC file: %s\n" msgstr "TOC 파ì¼ì„ ë‹«ì„ ìˆ˜ ì—†ìŒ: %s\n" -#: pg_backup_archiver.c:1449 pg_backup_custom.c:162 pg_backup_directory.c:341 -#: pg_backup_directory.c:587 pg_backup_directory.c:645 -#: pg_backup_directory.c:665 +#: pg_backup_archiver.c:1489 pg_backup_custom.c:162 pg_backup_directory.c:341 +#: pg_backup_directory.c:583 pg_backup_directory.c:641 +#: pg_backup_directory.c:661 #, c-format msgid "could not open output file \"%s\": %s\n" msgstr "\"%s\" 출력 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s\n" -#: pg_backup_archiver.c:1452 pg_backup_custom.c:169 +#: pg_backup_archiver.c:1492 pg_backup_custom.c:169 #, c-format msgid "could not open output file: %s\n" msgstr "출력 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s\n" -#: pg_backup_archiver.c:1556 +#: pg_backup_archiver.c:1598 #, c-format msgid "wrote %lu byte of large object data (result = %lu)\n" msgid_plural "wrote %lu bytes of large object data (result = %lu)\n" msgstr[0] "%luë°”ì´íŠ¸ì˜ í° ê°œì²´ ë°ì´í„°ë¥¼ 씀(ê²°ê³¼ = %lu)\n" -#: pg_backup_archiver.c:1562 +#: pg_backup_archiver.c:1604 #, c-format msgid "could not write to large object (result: %lu, expected: %lu)\n" msgstr "large object를 쓸 수 ì—†ìŒ (결과값: %lu, 예ìƒê°’: %lu)\n" -#: pg_backup_archiver.c:1655 +#: pg_backup_archiver.c:1697 #, c-format msgid "Error while INITIALIZING:\n" msgstr "초기화 작업 중 오류:\n" -#: pg_backup_archiver.c:1660 +#: pg_backup_archiver.c:1702 #, c-format msgid "Error while PROCESSING TOC:\n" msgstr "TOC 처리하는 중 오류:\n" -#: pg_backup_archiver.c:1665 +#: pg_backup_archiver.c:1707 #, c-format msgid "Error while FINALIZING:\n" msgstr "ë’· 마무리 작업 중 오류:\n" -#: pg_backup_archiver.c:1670 +#: pg_backup_archiver.c:1712 #, c-format msgid "Error from TOC entry %d; %u %u %s %s %s\n" msgstr "%d TOC 항목ì—서 오류발견; %u %u %s %s %s\n" -#: pg_backup_archiver.c:1743 +#: pg_backup_archiver.c:1785 #, c-format msgid "bad dumpId\n" -msgstr "" +msgstr "ìž˜ëª»ëœ dumpID\n" -#: pg_backup_archiver.c:1764 +#: pg_backup_archiver.c:1806 #, c-format msgid "bad table dumpId for TABLE DATA item\n" -msgstr "" +msgstr "TABLE DATA ì•„ì´í…œì— 대한 ìž˜ëª»ëœ í…Œì´ë¸” dumpId\n" -#: pg_backup_archiver.c:1856 +#: pg_backup_archiver.c:1898 #, c-format msgid "unexpected data offset flag %d\n" msgstr "예ìƒì¹˜ 못한 ìžë£Œ 옵셋 플래그 %d\n" -#: pg_backup_archiver.c:1869 +#: pg_backup_archiver.c:1911 #, c-format msgid "file offset in dump file is too large\n" msgstr "ë¤í”„ 파ì¼ì—서 íŒŒì¼ ì˜µì…‹ ê°’ì´ ë„ˆë¬´ í½ë‹ˆë‹¤\n" -#: pg_backup_archiver.c:1982 +#: pg_backup_archiver.c:2024 #, c-format msgid "attempting to ascertain archive format\n" msgstr "ì•„ì¹´ì´ë¸Œ í¬ë©§ì„ 결정합니다\n" -#: pg_backup_archiver.c:2008 pg_backup_archiver.c:2018 +#: pg_backup_archiver.c:2050 pg_backup_archiver.c:2060 #, c-format msgid "directory name too long: \"%s\"\n" msgstr "디렉터리 ì´ë¦„ì´ ë„ˆë¬´ 긺: \"%s\"\n" -#: pg_backup_archiver.c:2026 +#: pg_backup_archiver.c:2068 #, c-format msgid "" "directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not " "exist)\n" -msgstr "" -"\"%s\" 디렉터리가 ì•Œë§žì€ ì•„ì¹´ì´ë¸Œìš©ì´ 아님 (\"toc.dat\" 파ì¼ì´ ì—†ìŒ)\n" +msgstr "\"%s\" 디렉터리가 ì•Œë§žì€ ì•„ì¹´ì´ë¸Œìš©ì´ 아님 (\"toc.dat\" 파ì¼ì´ ì—†ìŒ)\n" -#: pg_backup_archiver.c:2034 pg_backup_custom.c:181 pg_backup_custom.c:770 -#: pg_backup_directory.c:214 pg_backup_directory.c:402 +#: pg_backup_archiver.c:2076 pg_backup_custom.c:181 pg_backup_custom.c:770 +#: pg_backup_directory.c:214 pg_backup_directory.c:399 #, c-format msgid "could not open input file \"%s\": %s\n" msgstr "\"%s\" ìž…ë ¥ 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s\n" -#: pg_backup_archiver.c:2042 pg_backup_custom.c:188 +#: pg_backup_archiver.c:2084 pg_backup_custom.c:188 #, c-format msgid "could not open input file: %s\n" msgstr "ìž…ë ¥ 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s\n" -#: pg_backup_archiver.c:2049 +#: pg_backup_archiver.c:2091 #, c-format msgid "could not read input file: %s\n" msgstr "ìž…ë ¥ 파ì¼ì„ ì½ì„ 수 ì—†ìŒ: %s\n" -#: pg_backup_archiver.c:2051 +#: pg_backup_archiver.c:2093 #, c-format msgid "input file is too short (read %lu, expected 5)\n" msgstr "ìž…ë ¥ 파ì¼ì´ 너무 짧습니다 (%lu ì½ì—ˆìŒ, 예ìƒì¹˜ 5)\n" -#: pg_backup_archiver.c:2134 +#: pg_backup_archiver.c:2176 #, c-format msgid "input file appears to be a text format dump. Please use psql.\n" -msgstr "" +msgstr "ìž…ë ¥ 파ì¼ì€ ì¼ë°˜ í…스트 ë¤í”„ 파ì¼ìž…니다. psql ëª…ë ¹ì„ ì‚¬ìš©í•˜ì„¸ìš”.\n" -#: pg_backup_archiver.c:2140 +#: pg_backup_archiver.c:2182 #, c-format msgid "input file does not appear to be a valid archive (too short?)\n" msgstr "ìž…ë ¥ 파ì¼ì—서 타당한 ì•„ì¹´ì´ë¸Œë¥¼ ì°¾ì„ ìˆ˜ 없습니다(너무 ì§§ì€ì§€?)\n" -#: pg_backup_archiver.c:2146 +#: pg_backup_archiver.c:2188 #, c-format msgid "input file does not appear to be a valid archive\n" msgstr "ìž…ë ¥ 파ì¼ì—서 타당한 ì•„ì¹´ì´ë¸Œë¥¼ ì°¾ì„ ìˆ˜ 없습니다\n" -#: pg_backup_archiver.c:2166 +#: pg_backup_archiver.c:2208 #, c-format msgid "could not close input file: %s\n" msgstr "ìž…ë ¥ 파ì¼ì„ ë‹«ì„ ìˆ˜ ì—†ìŒ: %s\n" -#: pg_backup_archiver.c:2183 +#: pg_backup_archiver.c:2225 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "%s 위한 AH를 할당하는 중, í¬ë©§ %d\n" -#: pg_backup_archiver.c:2288 +#: pg_backup_archiver.c:2330 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "알 수 없는 íŒŒì¼ í¬ë©§: \"%d\"\n" -#: pg_backup_archiver.c:2438 +#: pg_backup_archiver.c:2486 #, c-format msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" msgstr "%d ID í•­ëª©ì€ ë²”ìœ„ë¥¼ ë²—ì–´ë‚¬ìŒ -- TOC ì •ë³´ê°€ ì†ìƒëœ 듯 합니다\n" -#: pg_backup_archiver.c:2554 +#: pg_backup_archiver.c:2602 #, c-format msgid "read TOC entry %d (ID %d) for %s %s\n" msgstr "%d TOC 항목 (%d ID) ì½ê¸°, 해당개체: %s %s\n" -#: pg_backup_archiver.c:2588 +#: pg_backup_archiver.c:2636 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "알 수 없는 ì¸ì½”딩: \"%s\"\n" -#: pg_backup_archiver.c:2593 +#: pg_backup_archiver.c:2641 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "ìž˜ëª»ëœ ENCODING 항목: %s\n" -#: pg_backup_archiver.c:2611 +#: pg_backup_archiver.c:2659 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "ìž˜ëª»ëœ STDSTRINGS 항목: %s\n" -#: pg_backup_archiver.c:2834 +#: pg_backup_archiver.c:2674 +#, c-format +msgid "schema \"%s\" not found\n" +msgstr "\"%s\" 스키마를 ì°¾ì„ ìˆ˜ ì—†ìŒ\n" + +#: pg_backup_archiver.c:2681 +#, c-format +msgid "table \"%s\" not found\n" +msgstr "\"%s\" í…Œì´ë¸”ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ\n" + +#: pg_backup_archiver.c:2688 +#, c-format +msgid "index \"%s\" not found\n" +msgstr "\"%s\" ì¸ë±ìŠ¤ë¥¼ ì°¾ì„ ìˆ˜ ì—†ìŒ\n" + +#: pg_backup_archiver.c:2695 +#, c-format +msgid "function \"%s\" not found\n" +msgstr "\"%s\" 함수를 ì°¾ì„ ìˆ˜ ì—†ìŒ\n" + +#: pg_backup_archiver.c:2702 +#, c-format +msgid "trigger \"%s\" not found\n" +msgstr "\"%s\" 트리거를 ì°¾ì„ ìˆ˜ ì—†ìŒ\n" + +#: pg_backup_archiver.c:2934 #, c-format msgid "could not set session user to \"%s\": %s" msgstr "\"%s\" 사용ìžë¡œ 세션 사용ìžë¥¼ 지정할 수 ì—†ìŒ: %s" -#: pg_backup_archiver.c:2866 +#: pg_backup_archiver.c:2966 #, c-format msgid "could not set default_with_oids: %s" msgstr "default_with_oids 설정 í•  수 ì—†ìŒ: %s" -#: pg_backup_archiver.c:3004 +#: pg_backup_archiver.c:3111 #, c-format msgid "could not set search_path to \"%s\": %s" msgstr "search_path를 \"%s\"(으)로 지정할 수 ì—†ìŒ: %s" -#: pg_backup_archiver.c:3065 +#: pg_backup_archiver.c:3173 #, c-format msgid "could not set default_tablespace to %s: %s" msgstr "default_tablespace로 %s(으)로 지정할 수 ì—†ìŒ: %s" -#: pg_backup_archiver.c:3152 pg_backup_archiver.c:3337 +#: pg_backup_archiver.c:3260 pg_backup_archiver.c:3454 #, c-format msgid "WARNING: don't know how to set owner for object type %s\n" msgstr "경고: %s ê°œì²´ì˜ ì†Œìœ ì£¼ë¥¼ 지정할 수 없습니다\n" -#: pg_backup_archiver.c:3390 -#, c-format -msgid "" -"WARNING: requested compression not available in this installation -- archive " -"will be uncompressed\n" -msgstr "" -"경고: 요청한 ì••ì¶• ê¸°ëŠ¥ì€ ì´ ì„¤ì¹˜íŒì—서는 사용할 수 없습니다 -- ìžë£Œ 파ì¼ì€ ì••" -"ì¶• ì—†ì´ ë§Œë“¤ì–´ì§ˆ 것입니다\n" - -#: pg_backup_archiver.c:3429 +#: pg_backup_archiver.c:3536 #, c-format msgid "did not find magic string in file header\n" msgstr "íŒŒì¼ í—¤ë”ì—서 ë§¤ì§ ë¬¸ìžì—´ì„ 찾지 못했습니다\n" -#: pg_backup_archiver.c:3442 +#: pg_backup_archiver.c:3549 #, c-format msgid "unsupported version (%d.%d) in file header\n" msgstr "íŒŒì¼ í—¤ë”ì— ìžˆëŠ” %d.%d ë²„ì „ì€ ì§€ì›ë˜ì§€ 않습니다\n" -#: pg_backup_archiver.c:3447 +#: pg_backup_archiver.c:3554 #, c-format msgid "sanity check on integer size (%lu) failed\n" msgstr "정수 í¬ê¸° (%lu) 안전성 검사 실패\n" -#: pg_backup_archiver.c:3451 +#: pg_backup_archiver.c:3558 #, c-format msgid "" "WARNING: archive was made on a machine with larger integers, some operations " @@ -831,12 +839,12 @@ msgstr "" "경고: ì´ ì•„ì¹´ì´ë¸ŒëŠ” í° ì •ìˆ˜ë¥¼ ì§€ì›í•˜ëŠ” 시스템ì—서 만들어졌습니다. 그래서 몇 " "ë™ìž‘ì´ ì‹¤íŒ¨í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤\n" -#: pg_backup_archiver.c:3461 +#: pg_backup_archiver.c:3568 #, c-format msgid "expected format (%d) differs from format found in file (%d)\n" msgstr "예ìƒë˜ëŠ” í¬ë©§ (%d)와 ë°œê²¬ëœ íŒŒì¼ í¬ë©§ (%d)ì´ ì„œë¡œ 틀립니다\n" -#: pg_backup_archiver.c:3477 +#: pg_backup_archiver.c:3584 #, c-format msgid "" "WARNING: archive is compressed, but this installation does not support " @@ -845,87 +853,87 @@ msgstr "" "경고: ì•„ì¹´ì´ë¸ŒëŠ” ì••ì¶•ë˜ì–´ìžˆì§€ë§Œ, ì´ í”„ë¡œê·¸ëž¨ì—서는 ì••ì¶•ê¸°ëŠ¥ì„ ì§€ì›í•˜ì§€ 못합니" "다 -- ì´ ì•ˆì— ìžˆëŠ” ìžë£Œë¥¼ ëª¨ë‘ ì‚¬ìš©í•  수 없습니다.\n" -#: pg_backup_archiver.c:3495 +#: pg_backup_archiver.c:3602 #, c-format msgid "WARNING: invalid creation date in header\n" msgstr "경고: í—¤ë”ì— ìž˜ëª»ëœ ìƒì„± 날짜가 있ìŒ\n" -#: pg_backup_archiver.c:3571 +#: pg_backup_archiver.c:3677 #, c-format msgid "entering restore_toc_entries_prefork\n" msgstr "restore_toc_entries_prefork 시작 함\n" -#: pg_backup_archiver.c:3615 +#: pg_backup_archiver.c:3721 #, c-format msgid "processing item %d %s %s\n" msgstr "%d %s %s í•­ëª©ì„ ì²˜ë¦¬í•˜ëŠ” 중\n" -#: pg_backup_archiver.c:3667 +#: pg_backup_archiver.c:3773 #, c-format msgid "entering restore_toc_entries_parallel\n" msgstr "restore_toc_entries_parallelì„ ì‹œìž‘í•˜ëŠ” 중\n" -#: pg_backup_archiver.c:3715 +#: pg_backup_archiver.c:3821 #, c-format msgid "entering main parallel loop\n" msgstr "기본 병렬 루프를 시작하는 중\n" -#: pg_backup_archiver.c:3726 +#: pg_backup_archiver.c:3832 #, c-format msgid "skipping item %d %s %s\n" msgstr "%d %s %s í•­ëª©ì„ ê±´ë„ˆë›°ëŠ” 중\n" -#: pg_backup_archiver.c:3736 +#: pg_backup_archiver.c:3842 #, c-format msgid "launching item %d %s %s\n" msgstr "%d %s %s í•­ëª©ì„ ì‹œìž‘í•˜ëŠ” 중\n" -#: pg_backup_archiver.c:3794 +#: pg_backup_archiver.c:3898 #, c-format msgid "finished main parallel loop\n" msgstr "기본 병렬 루프 마침\n" -#: pg_backup_archiver.c:3803 +#: pg_backup_archiver.c:3907 #, c-format msgid "entering restore_toc_entries_postfork\n" msgstr "restore_toc_entries_postfork 시작하는 중\n" -#: pg_backup_archiver.c:3821 +#: pg_backup_archiver.c:3926 #, c-format msgid "processing missed item %d %s %s\n" msgstr "누ë½ëœ 항목 %d %s %sì„(를) 처리하는 중\n" -#: pg_backup_archiver.c:3970 +#: pg_backup_archiver.c:4075 #, c-format msgid "no item ready\n" msgstr "ì¤€ë¹„ëœ í•­ëª©ì´ ì—†ìŒ\n" -#: pg_backup_archiver.c:4020 +#: pg_backup_archiver.c:4123 #, c-format msgid "could not find slot of finished worker\n" msgstr "ì™„ë£Œëœ ìž‘ì—…ìžì˜ ìŠ¬ë¡¯ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ\n" -#: pg_backup_archiver.c:4022 +#: pg_backup_archiver.c:4125 #, c-format msgid "finished item %d %s %s\n" msgstr "%d %s %s 항목 마침\n" -#: pg_backup_archiver.c:4035 +#: pg_backup_archiver.c:4138 #, c-format msgid "worker process failed: exit code %d\n" msgstr "ìž‘ì—…ìž í”„ë¡œì„¸ìŠ¤ 실패: 종료 코드 %d\n" -#: pg_backup_archiver.c:4197 +#: pg_backup_archiver.c:4300 #, c-format msgid "transferring dependency %d -> %d to %d\n" msgstr "%d -> %d - %d(으)로 종ì†ì„± 변경 중\n" -#: pg_backup_archiver.c:4270 +#: pg_backup_archiver.c:4373 #, c-format msgid "reducing dependencies for %d\n" msgstr "%dì— ëŒ€í•œ 종ì†ì„±ì„ 줄ì´ëŠ” 중\n" -#: pg_backup_archiver.c:4309 +#: pg_backup_archiver.c:4412 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "\"%s\" í…Œì´ë¸”ì„ ë§Œë“¤ 수 없어, 해당 ìžë£ŒëŠ” ë³µì›ë˜ì§€ ì•Šì„ ê²ƒìž…ë‹ˆë‹¤\n" @@ -935,7 +943,7 @@ msgstr "\"%s\" í…Œì´ë¸”ì„ ë§Œë“¤ 수 없어, 해당 ìžë£ŒëŠ” ë³µì›ë˜ì§€ 않 msgid "custom archiver" msgstr "custom ì•„ì¹´ì´ë²„" -#: pg_backup_custom.c:384 pg_backup_null.c:149 +#: pg_backup_custom.c:384 pg_backup_null.c:150 #, c-format msgid "invalid OID for large object\n" msgstr "ìž˜ëª»ëœ large objectìš© OID\n" @@ -987,7 +995,7 @@ msgid "unrecognized data block type %d while restoring archive\n" msgstr "ì•„ì¹´ì´ë¸Œ ë³µì›í•˜ëŠ” 중ì—, 알 수 없는 ìžë£Œ 블럭 형태 %d 를 발견함\n" #: pg_backup_custom.c:709 pg_backup_custom.c:759 pg_backup_custom.c:908 -#: pg_backup_tar.c:1083 +#: pg_backup_tar.c:1088 #, c-format msgid "could not determine seek position in archive file: %s\n" msgstr "ì•„ì¹´ì´ë¸Œ 파ì¼ì—서 검색 위치를 확ì¸í•  수 ì—†ìŒ: %s\n" @@ -1005,12 +1013,12 @@ msgstr "ìž…ë ¥ ì•„ì¹´ì´ë¸Œë§Œ 다시 ì—´ 수 있ìŒ\n" #: pg_backup_custom.c:753 #, c-format msgid "parallel restore from standard input is not supported\n" -msgstr "" +msgstr "표준 ìž…ë ¥ì„ ì´ìš©í•œ 병렬 ë³µì› ìž‘ì—…ì€ ì§€ì›í•˜ì§€ 않습니다\n" #: pg_backup_custom.c:755 #, c-format msgid "parallel restore from non-seekable file is not supported\n" -msgstr "" +msgstr "시작 위치를 ìž„ì˜ë¡œ 지정할 수 없는 파ì¼ë¡œëŠ” 병렬 ë³µì› ìž‘ì—…ì„ í•  수 없습니다.\n" #: pg_backup_custom.c:774 #, c-format @@ -1020,7 +1028,7 @@ msgstr "ì•„ì¹´ì´ë¸Œ 파ì¼ì—서 검색 위치를 설정할 수 ì—†ìŒ: %s\n" #: pg_backup_custom.c:792 #, c-format msgid "compressor active\n" -msgstr "" +msgstr "압축기 사용\n" #: pg_backup_custom.c:912 #, c-format @@ -1028,104 +1036,120 @@ msgid "WARNING: ftell mismatch with expected position -- ftell used\n" msgstr "경고: ftell ê°’ê³¼, 예ìƒë˜ëŠ” ìœ„ì¹˜ê°’ì´ í‹€ë¦¼ -- ftell ê°’ì´ ì‚¬ìš©ë¨\n" #. translator: this is a module name -#: pg_backup_db.c:29 +#: pg_backup_db.c:31 msgid "archiver (db)" msgstr "ë¤í”„ë°›ì„ DB" -#: pg_backup_db.c:44 +#: pg_backup_db.c:47 #, c-format msgid "could not get server_version from libpq\n" msgstr "libpqì—서 server_verion ê°’ì„ êµ¬í•  수 ì—†ìŒ\n" -#: pg_backup_db.c:55 pg_dumpall.c:1965 +#: pg_backup_db.c:58 pg_dumpall.c:2067 #, c-format msgid "server version: %s; %s version: %s\n" msgstr "서버 버전: %s; %s 버전: %s\n" -#: pg_backup_db.c:57 pg_dumpall.c:1967 +#: pg_backup_db.c:60 pg_dumpall.c:2069 #, c-format msgid "aborting because of server version mismatch\n" msgstr "서버 ë²„ì „ì´ ì¼ì¹˜í•˜ì§€ 않아 중단하는 중\n" -#: pg_backup_db.c:128 +#: pg_backup_db.c:149 #, c-format msgid "connecting to database \"%s\" as user \"%s\"\n" msgstr "\"%s\" ë°ì´í„°ë² ì´ìŠ¤ë¥¼ \"%s\" 사용ìžë¡œ ì ‘ì†í•©ë‹ˆë‹¤\n" -#: pg_backup_db.c:135 pg_backup_db.c:183 pg_backup_db.c:243 pg_backup_db.c:285 -#: pg_dumpall.c:1795 pg_dumpall.c:1903 +#: pg_backup_db.c:156 pg_backup_db.c:208 pg_backup_db.c:270 pg_backup_db.c:312 +#: pg_dumpall.c:1893 pg_dumpall.c:2005 msgid "Password: " msgstr "암호: " -#: pg_backup_db.c:164 +#: pg_backup_db.c:189 #, c-format msgid "failed to reconnect to database\n" msgstr "ë°ì´í„°ë² ì´ìФ ìž¬ì ‘ì† ì‹¤íŒ¨\n" -#: pg_backup_db.c:169 +#: pg_backup_db.c:194 #, c-format msgid "could not reconnect to database: %s" msgstr "ë°ì´í„°ë² ì´ìФ 재접ì†ì„ í•  수 ì—†ìŒ: %s" -#: pg_backup_db.c:185 +#: pg_backup_db.c:210 #, c-format msgid "connection needs password\n" msgstr "연결하려면 암호 í•„ìš”\n" -#: pg_backup_db.c:237 +#: pg_backup_db.c:264 #, c-format msgid "already connected to a database\n" msgstr "ë°ì´í„°ë² ì´ìŠ¤ì— ì´ë¯¸ ì ‘ì†í•´ 있ìŒ\n" -#: pg_backup_db.c:277 +#: pg_backup_db.c:304 #, c-format msgid "failed to connect to database\n" msgstr "ë°ì´í„°ë² ì´ìФ ì ‘ì† ì‹¤íŒ¨\n" -#: pg_backup_db.c:294 +#: pg_backup_db.c:321 #, c-format msgid "connection to database \"%s\" failed: %s" msgstr "\"%s\" ë°ì´í„°ë² ì´ìŠ¤ì— ì ‘ì† í•  수 ì—†ìŒ: %s" -#: pg_backup_db.c:362 +#: pg_backup_db.c:391 +#, c-format +msgid "%s" +msgstr "%s" + +#: pg_backup_db.c:398 #, c-format msgid "query failed: %s" msgstr "쿼리 실패: %s" -#: pg_backup_db.c:364 +#: pg_backup_db.c:400 #, c-format msgid "query was: %s\n" msgstr "사용한 쿼리: %s\n" -#: pg_backup_db.c:428 +#: pg_backup_db.c:442 +#, c-format +msgid "query returned %d row instead of one: %s\n" +msgid_plural "query returned %d rows instead of one: %s\n" +msgstr[0] "쿼리ì—서 한 개가 아닌 %dê°œì˜ í–‰ì„ ë°˜í™˜: %s\n" + +#: pg_backup_db.c:487 #, c-format msgid "%s: %s Command was: %s\n" msgstr "%s: %s ì‚¬ìš©ëœ ëª…ë ¹: %s\n" -#: pg_backup_db.c:484 pg_backup_db.c:558 pg_backup_db.c:565 +#: pg_backup_db.c:543 pg_backup_db.c:617 pg_backup_db.c:624 msgid "could not execute query" msgstr "쿼리를 실행 í•  수 ì—†ìŒ" -#: pg_backup_db.c:537 +#: pg_backup_db.c:596 #, c-format msgid "error returned by PQputCopyData: %s" msgstr "PQputCopyDataì— ì˜í•´ì„œ 오류가 반환ë˜ì—ˆìŒ: %s" -#: pg_backup_db.c:586 +#: pg_backup_db.c:645 #, c-format msgid "error returned by PQputCopyEnd: %s" msgstr "PQputCopyEndì— ì˜í•´ì„œ 오류가 반환ë˜ì—ˆìŒ: %s" -#: pg_backup_db.c:592 +#: pg_backup_db.c:651 #, c-format msgid "COPY failed for table \"%s\": %s" msgstr "\"%s\" í…Œì´ë¸”ì„ ìœ„í•œ COPY 실패: %s" -#: pg_backup_db.c:605 +#: pg_backup_db.c:657 pg_dump.c:1787 +#, c-format +msgid "WARNING: unexpected extra results during COPY of table \"%s\"\n" +msgstr "경고: \"%s\" í…Œì´ë¸” COPY 작업 중 ìž˜ëª»ëœ ë¶€ê°€ 결과가 있ìŒ\n" + +#: pg_backup_db.c:669 msgid "could not start database transaction" msgstr "ë°ì´í„°ë² ì´ìФ íŠ¸ëžœìž­ì…˜ì„ ì‹œìž‘í•  수 ì—†ìŒ" -#: pg_backup_db.c:613 +#: pg_backup_db.c:677 msgid "could not commit database transaction" msgstr "ë°ì´í„°ë² ì´ìФ íŠ¸ëžœìž­ì…˜ì„ commit í•  수 ì—†ìŒ" @@ -1154,167 +1178,167 @@ msgstr "\"%s\" 디렉터리를 ë‹«ì„ ìˆ˜ ì—†ìŒ: %s\n" msgid "could not create directory \"%s\": %s\n" msgstr "\"%s\" 디렉터리를 만들 수 ì—†ìŒ: %s\n" -#: pg_backup_directory.c:413 +#: pg_backup_directory.c:412 #, c-format msgid "could not close data file: %s\n" msgstr "ìžë£Œ 파ì¼ì„ ë‹«ì„ ìˆ˜ ì—†ìŒ: %s\n" -#: pg_backup_directory.c:454 +#: pg_backup_directory.c:453 #, c-format msgid "could not open large object TOC file \"%s\" for input: %s\n" msgstr "입력용 large object TOC 파ì¼(\"%s\")ì„ ì—´ 수 ì—†ìŒ: %s\n" -#: pg_backup_directory.c:465 +#: pg_backup_directory.c:464 #, c-format msgid "invalid line in large object TOC file \"%s\": \"%s\"\n" msgstr "large object TOC 파ì¼(\"%s\")ì„ ë‹«ì„ ìˆ˜ ì—†ìŒ: \"%s\"\n" -#: pg_backup_directory.c:474 +#: pg_backup_directory.c:473 #, c-format msgid "error reading large object TOC file \"%s\"\n" msgstr "large object TOC 파ì¼(\"%s\")ì„ ë‹«ì„ ìˆ˜ ì—†ìŒ\n" -#: pg_backup_directory.c:478 +#: pg_backup_directory.c:477 #, c-format msgid "could not close large object TOC file \"%s\": %s\n" msgstr "large object TOC 파ì¼(\"%s\")ì„ ë‹«ì„ ìˆ˜ ì—†ìŒ: %s\n" -#: pg_backup_directory.c:688 +#: pg_backup_directory.c:684 #, c-format msgid "could not write to blobs TOC file\n" msgstr "blob TOC 파ì¼ì— 쓸 수 ì—†ìŒ\n" -#: pg_backup_directory.c:720 +#: pg_backup_directory.c:716 #, c-format msgid "file name too long: \"%s\"\n" msgstr "íŒŒì¼ ì´ë¦„ì´ ë„ˆë¬´ 긺: \"%s\"\n" -#: pg_backup_directory.c:806 +#: pg_backup_directory.c:802 #, c-format msgid "error during backup\n" msgstr "백업 중 오류\n" -#: pg_backup_null.c:74 +#: pg_backup_null.c:75 #, c-format msgid "this format cannot be read\n" msgstr "ì´ íŒŒì¼ í˜•íƒœëŠ” ì½ì„ 수 ì—†ìŒ\n" #. translator: this is a module name -#: pg_backup_tar.c:101 +#: pg_backup_tar.c:102 msgid "tar archiver" msgstr "tar ì•„ì¹´ì´ë²„" -#: pg_backup_tar.c:182 +#: pg_backup_tar.c:183 #, c-format msgid "could not open TOC file \"%s\" for output: %s\n" msgstr "출력용 TOC íŒŒì¼ \"%s\"ì„(를) ì—´ 수 ì—†ìŒ: %s\n" -#: pg_backup_tar.c:190 +#: pg_backup_tar.c:191 #, c-format msgid "could not open TOC file for output: %s\n" msgstr "출력용 TOC 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s\n" -#: pg_backup_tar.c:211 pg_backup_tar.c:367 +#: pg_backup_tar.c:212 pg_backup_tar.c:368 #, c-format msgid "compression is not supported by tar archive format\n" msgstr "tar 출력 í¬ë©§ì—서 ì••ì¶• ê¸°ëŠ¥ì„ ì§€ì›í•˜ì§€ 않ìŒ\n" -#: pg_backup_tar.c:219 +#: pg_backup_tar.c:220 #, c-format msgid "could not open TOC file \"%s\" for input: %s\n" msgstr "입력용 TOC 파ì¼(\"%s\")ì„ ì—´ 수 ì—†ìŒ: %s\n" -#: pg_backup_tar.c:226 +#: pg_backup_tar.c:227 #, c-format msgid "could not open TOC file for input: %s\n" msgstr "입력용 TOC 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s\n" -#: pg_backup_tar.c:353 +#: pg_backup_tar.c:354 #, c-format msgid "could not find file \"%s\" in archive\n" msgstr "ì•„ì¹´ì´ë¸Œì—서 \"%s\" 파ì¼ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ\n" -#: pg_backup_tar.c:419 +#: pg_backup_tar.c:420 #, c-format msgid "could not generate temporary file name: %s\n" msgstr "임시 íŒŒì¼ ì´ë¦„ì„ ì§“ì§€ 못했습니다: %s\n" -#: pg_backup_tar.c:430 +#: pg_backup_tar.c:431 #, c-format msgid "could not open temporary file\n" msgstr "임시 파ì¼ì„ ì—´ 수 ì—†ìŒ\n" -#: pg_backup_tar.c:457 +#: pg_backup_tar.c:458 #, c-format msgid "could not close tar member\n" msgstr "tar 맴버를 ë‹«ì§€ 못했습니다\n" -#: pg_backup_tar.c:570 +#: pg_backup_tar.c:571 #, c-format msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" msgstr "ë‚´ë¶€ 오류 - tarReadRaw()ì—서 th, fh 둘다 지정하지 않았ìŒ\n" -#: pg_backup_tar.c:693 +#: pg_backup_tar.c:694 #, c-format msgid "unexpected COPY statement syntax: \"%s\"\n" -msgstr "" +msgstr "COPY 구문 오류: \"%s\"\n" -#: pg_backup_tar.c:955 +#: pg_backup_tar.c:960 #, c-format msgid "invalid OID for large object (%u)\n" msgstr "ìž˜ëª»ëœ large object OID: %u\n" -#: pg_backup_tar.c:1099 +#: pg_backup_tar.c:1104 #, c-format msgid "could not close temporary file: %s\n" msgstr "임시 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s\n" -#: pg_backup_tar.c:1109 +#: pg_backup_tar.c:1114 #, c-format msgid "actual file length (%s) does not match expected (%s)\n" msgstr "실재 íŒŒì¼ ê¸¸ì´(%s)와 예ìƒë˜ëŠ” ê°’(%s)ì´ í‹€ë¦½ë‹ˆë‹¤\n" -#: pg_backup_tar.c:1146 +#: pg_backup_tar.c:1151 #, c-format msgid "moving from position %s to next member at file position %s\n" msgstr "%s 위치ì—서 ë‹¤ìŒ ë§´ë²„ë¡œ ì´ë™í•©ë‹ˆë‹¤, 해당 íŒŒì¼ ìœ„ì¹˜ %s\n" -#: pg_backup_tar.c:1157 +#: pg_backup_tar.c:1162 #, c-format msgid "now at file position %s\n" msgstr "새로 ì´ë™ëœ íŒŒì¼ ìœ„ì¹˜: %s\n" -#: pg_backup_tar.c:1166 pg_backup_tar.c:1196 +#: pg_backup_tar.c:1171 pg_backup_tar.c:1201 #, c-format msgid "could not find header for file \"%s\" in tar archive\n" msgstr "tar ì•„ì¹´ì´ë¸Œì—서 \"%s\" 파ì¼ì„ 위한 í—¤ë”를 ì°¾ì„ ìˆ˜ ì—†ìŒ\n" -#: pg_backup_tar.c:1180 +#: pg_backup_tar.c:1185 #, c-format msgid "skipping tar member %s\n" msgstr "%s tar 맴버는 건너ëœë‹ˆë‹¤\n" -#: pg_backup_tar.c:1184 +#: pg_backup_tar.c:1189 #, c-format msgid "" "restoring data out of order is not supported in this archive format: \"%s\" " "is required, but comes before \"%s\" in the archive file.\n" msgstr "" -"순서를 넘어서는 ìžë£Œ ë¤í”„ ìž‘ì—…ì€ ì´ ì•„ì¹´ì´ë¸Œ í¬ë©§ì—서는 ì§€ì›í•˜ì§€ 않습니다: \"%s\"" -" 요구ë˜ì—ˆì§€ë§Œ, ì´ ì•„ì¹´ì´ë¸Œ 파ì¼ì—서는 \"%s\" ì „ì— ì˜µë‹ˆë‹¤.\n" +"순서를 넘어서는 ìžë£Œ ë¤í”„ ìž‘ì—…ì€ ì´ ì•„ì¹´ì´ë¸Œ í¬ë©§ì—서는 ì§€ì›í•˜ì§€ 않습니다: " +"\"%s\" 요구ë˜ì—ˆì§€ë§Œ, ì´ ì•„ì¹´ì´ë¸Œ 파ì¼ì—서는 \"%s\" ì „ì— ì˜µë‹ˆë‹¤.\n" -#: pg_backup_tar.c:1230 +#: pg_backup_tar.c:1235 #, c-format msgid "incomplete tar header found (%lu byte)\n" msgid_plural "incomplete tar header found (%lu bytes)\n" msgstr[0] "불완전한 tar í—¤ë”ê°€ 있ìŒ(%luë°”ì´íЏ)\n" -#: pg_backup_tar.c:1271 +#: pg_backup_tar.c:1276 #, c-format msgid "TOC Entry %s at %s (length %s, checksum %d)\n" msgstr "TOC Entry %s at %s (length %s, checksum %d)\n" -#: pg_backup_tar.c:1282 +#: pg_backup_tar.c:1287 #, c-format msgid "" "corrupt tar header found in %s (expected %d, computed %d) file position %s\n" @@ -1325,98 +1349,105 @@ msgstr "%s ì•ˆì— ì†ìƒëœ tar í—¤ë” ë°œê²¬ (예ìƒì¹˜ %d, ê³„ì‚°ëœ ê°’ %d), msgid "%s: unrecognized section name: \"%s\"\n" msgstr "%s: ìž˜ëª»ëœ ì„¹ì…˜ ì´ë¦„: \"%s\"\n" -#: pg_backup_utils.c:56 pg_dump.c:524 pg_dump.c:541 pg_dumpall.c:300 -#: pg_dumpall.c:310 pg_dumpall.c:320 pg_dumpall.c:329 pg_dumpall.c:345 -#: pg_dumpall.c:403 pg_restore.c:277 pg_restore.c:293 pg_restore.c:305 +#: pg_backup_utils.c:56 pg_dump.c:533 pg_dump.c:550 pg_dumpall.c:299 +#: pg_dumpall.c:309 pg_dumpall.c:319 pg_dumpall.c:328 pg_dumpall.c:344 +#: pg_dumpall.c:402 pg_restore.c:279 pg_restore.c:295 pg_restore.c:307 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "보다 ìžì„¸í•œ ì‚¬ìš©ë²•ì€ \"%s --help\"\n" -#: pg_backup_utils.c:101 +#: pg_backup_utils.c:118 #, c-format msgid "out of on_exit_nicely slots\n" -msgstr "" +msgstr "on_exit_nicely 슬롯 범위 벗어남\n" -#: pg_dump.c:494 +#: pg_dump.c:503 #, c-format msgid "compression level must be in range 0..9\n" msgstr "ì••ì¶• 수위는 0부터 9까지 지정할 수 있습니다.\n" -#: pg_dump.c:539 pg_dumpall.c:308 pg_restore.c:291 +#: pg_dump.c:548 pg_dumpall.c:307 pg_restore.c:293 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: 너무 ë§Žì€ ëª…ë ¹í–‰ ì¸ìˆ˜ë“¤ (시작 \"%s\")\n" -#: pg_dump.c:552 +#: pg_dump.c:561 #, c-format msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "-s/--schema-only ë° -a/--data-only ì˜µì…˜ì€ í•¨ê»˜ 사용할 수 ì—†ìŒ\n" -#: pg_dump.c:558 +#: pg_dump.c:567 #, c-format msgid "options -c/--clean and -a/--data-only cannot be used together\n" msgstr "-c/--clean ë° -a/--data-only ì˜µì…˜ì€ í•¨ê»˜ 사용할 수 ì—†ìŒ\n" -#: pg_dump.c:564 +#: pg_dump.c:573 #, c-format msgid "" "options --inserts/--column-inserts and -o/--oids cannot be used together\n" msgstr "--inserts/--column-inserts ë° -o/--oids ì˜µì…˜ì€ í•¨ê»˜ 사용할 수 ì—†ìŒ\n" -#: pg_dump.c:565 +#: pg_dump.c:574 #, c-format msgid "(The INSERT command cannot set OIDs.)\n" msgstr "(INSERT 명령으로는 OID ê°’ì„ ìž…ë ¥í•  수 ì—†ìŒ.)\n" -#: pg_dump.c:570 +#: pg_dump.c:579 #, c-format msgid "option --if-exists requires option -c/--clean\n" +msgstr "--if-exists ì˜µì…˜ì€ -c/--clean 옵션과 함께 사용해야 함\n" + +#: pg_dump.c:601 +#, c-format +msgid "" +"WARNING: requested compression not available in this installation -- archive " +"will be uncompressed\n" msgstr "" +"경고: 요청한 ì••ì¶• ê¸°ëŠ¥ì€ ì´ ì„¤ì¹˜íŒì—서는 사용할 수 없습니다 -- ìžë£Œ 파ì¼ì€ ì••" +"ì¶• ì—†ì´ ë§Œë“¤ì–´ì§ˆ 것입니다\n" -#: pg_dump.c:598 +#: pg_dump.c:616 #, c-format msgid "%s: invalid number of parallel jobs\n" msgstr "%s: ìž˜ëª»ëœ ë³‘ë ¬ 작업 수\n" -#: pg_dump.c:602 +#: pg_dump.c:620 #, c-format msgid "parallel backup only supported by the directory format\n" msgstr "병렬 ë°±ì—…ì€ ë””ë ‰í„°ë¦¬ 기반 ì¶œë ¥ì¼ ë•Œë§Œ 사용할 수 없습니다.\n" -#: pg_dump.c:612 -#, c-format -msgid "could not open output file \"%s\" for writing\n" -msgstr "\"%s\" 파ì¼ì„ 쓰기 모드로 ì—´ 수 ì—†ìŒ\n" - -#: pg_dump.c:671 +#: pg_dump.c:677 #, c-format msgid "" "Synchronized snapshots are not supported by this server version.\n" "Run with --no-synchronized-snapshots instead if you do not need\n" "synchronized snapshots.\n" msgstr "" +"ì´ ì„œë²„ 버전ì—서는 ë™ê¸°í™”ëœ ìŠ¤ëƒ…ìƒ· ê¸°ëŠ¥ì„ ì‚¬ìš©í•  수 ì—†ìŒ.\n" +"ë™ê¸°í™”ëœ ìŠ¤ëƒ…ìƒ· ê¸°ëŠ¥ì´ í•„ìš” 없다면, --no-synchronized-snapshots\n" +"ì˜µì…˜ì„ ì§€ì •í•´ì„œ ë¤í”„í•  수 있습니다.\n" -#: pg_dump.c:678 +#: pg_dump.c:684 #, c-format msgid "Exported snapshots are not supported by this server version.\n" msgstr "ì´ ì„œë²„ëŠ” exported snapshot를 ì§€ì›í•˜ì§€ 않ìŒ.\n" -#: pg_dump.c:689 +#: pg_dump.c:695 #, c-format msgid "last built-in OID is %u\n" msgstr "마지막 내장 OID는 %u\n" -#: pg_dump.c:698 +#: pg_dump.c:705 #, c-format -msgid "No matching schemas were found\n" -msgstr "검색 ì¡°ê±´ì— ë§Œì¡±í•˜ëŠ” 스키마가 없습니다\n" +msgid "no matching schemas were found\n" +msgstr "ì¡°ê±´ì— ë§žëŠ” 스키마가 없습니다\n" -#: pg_dump.c:710 +#: pg_dump.c:719 #, c-format -msgid "No matching tables were found\n" -msgstr "검색 ì¡°ê±´ì— ë§Œì¡±í•˜ëŠ” í…Œì´ë¸”ì´ ì—†ìŠµë‹ˆë‹¤\n" +msgid "no matching tables were found\n" +msgstr "ì¡°ê±´ì— ë§žëŠ” í…Œì´ë¸”ì´ ì—†ìŠµë‹ˆë‹¤\n" -#: pg_dump.c:864 +#: pg_dump.c:878 #, c-format msgid "" "%s dumps a database as a text file or to other formats.\n" @@ -1426,17 +1457,17 @@ msgstr "" "다른 í˜•íƒœì˜ íŒŒì¼ë¡œ ë¤í”„합니다.\n" "\n" -#: pg_dump.c:865 pg_dumpall.c:548 pg_restore.c:432 +#: pg_dump.c:879 pg_dumpall.c:547 pg_restore.c:437 #, c-format msgid "Usage:\n" msgstr "사용법:\n" -#: pg_dump.c:866 +#: pg_dump.c:880 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [옵션]... [DBì´ë¦„]\n" -#: pg_dump.c:868 pg_dumpall.c:551 pg_restore.c:435 +#: pg_dump.c:882 pg_dumpall.c:550 pg_restore.c:440 #, c-format msgid "" "\n" @@ -1445,12 +1476,12 @@ msgstr "" "\n" "ì¼ë°˜ 옵션들:\n" -#: pg_dump.c:869 +#: pg_dump.c:883 #, c-format msgid " -f, --file=FILENAME output file or directory name\n" msgstr " -f, --file=파ì¼ì´ë¦„ 출력 íŒŒì¼ ë˜ëŠ” 디렉터리 ì´ë¦„\n" -#: pg_dump.c:870 +#: pg_dump.c:884 #, c-format msgid "" " -F, --format=c|d|t|p output file format (custom, directory, tar,\n" @@ -1459,41 +1490,40 @@ msgstr "" " -F, --format=c|d|t|p 출력 íŒŒì¼ í˜•ì‹(ì‚¬ìš©ìž ì§€ì •, 디렉터리, tar,\n" " ì¼ë°˜ í…스트(초기값))\n" -#: pg_dump.c:872 +#: pg_dump.c:886 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to dump\n" msgstr " -j, --jobs=개수 ë¤í”„ ìž‘ì—…ì„ ë³‘ë ¬ 처리 함\n" -#: pg_dump.c:873 +#: pg_dump.c:887 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose 작업 ë‚´ì—­ì„ ìžì„¸ížˆ ë´„\n" -#: pg_dump.c:874 pg_dumpall.c:553 +#: pg_dump.c:888 pg_dumpall.c:552 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version 버전 정보를 보여주고 마침\n" -#: pg_dump.c:875 +#: pg_dump.c:889 #, c-format msgid "" " -Z, --compress=0-9 compression level for compressed formats\n" -msgstr "" -" -Z, --compress=0-9 출력 ìžë£Œ ì••ì¶• 수위\n" +msgstr " -Z, --compress=0-9 출력 ìžë£Œ ì••ì¶• 수위\n" -#: pg_dump.c:876 pg_dumpall.c:554 +#: pg_dump.c:890 pg_dumpall.c:553 #, c-format msgid "" " --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" msgstr "" " --lock-wait-timeout=ì´ˆ í…Œì´ë¸” 잠금 시 지정한 ì´ˆë§Œí¼ ê¸°ë‹¤ë¦° 후 실패\n" -#: pg_dump.c:877 pg_dumpall.c:555 +#: pg_dump.c:891 pg_dumpall.c:554 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help ì´ ë„움ë§ì„ 보여주고 마침\n" -#: pg_dump.c:879 pg_dumpall.c:556 +#: pg_dump.c:893 pg_dumpall.c:555 #, c-format msgid "" "\n" @@ -1502,17 +1532,17 @@ msgstr "" "\n" "출력 ë‚´ìš©ì„ ë‹¤ë£¨ëŠ” 옵션들:\n" -#: pg_dump.c:880 pg_dumpall.c:557 +#: pg_dump.c:894 pg_dumpall.c:556 #, c-format msgid " -a, --data-only dump only the data, not the schema\n" msgstr " -a, --data-only 스키마 빼고 ìžë£Œë§Œ ë¤í”„\n" -#: pg_dump.c:881 +#: pg_dump.c:895 #, c-format msgid " -b, --blobs include large objects in dump\n" msgstr " -b, --blobs Large Objectë“¤ë„ í•¨ê»˜ ë¤í”„함\n" -#: pg_dump.c:882 pg_restore.c:446 +#: pg_dump.c:896 pg_restore.c:451 #, c-format msgid "" " -c, --clean clean (drop) database objects before " @@ -1521,34 +1551,34 @@ msgstr "" " -c, --clean 다시 만들기 ì „ì— ë°ì´í„°ë² ì´ìФ 개체 지우기(ì‚­" "ì œ)\n" -#: pg_dump.c:883 +#: pg_dump.c:897 #, c-format msgid "" " -C, --create include commands to create database in dump\n" msgstr "" " -C, --create ë°ì´í„°ë² ì´ìФ 만드는 ëª…ë ¹êµ¬ë¬¸ë„ í¬í•¨ì‹œí‚´\n" -#: pg_dump.c:884 +#: pg_dump.c:898 #, c-format msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" msgstr " -E, --encoding=ì¸ì½”딩 지정한 ì¸ì½”딩으로 ìžë£Œë¥¼ ë¤í”„ 함\n" -#: pg_dump.c:885 +#: pg_dump.c:899 #, c-format msgid " -n, --schema=SCHEMA dump the named schema(s) only\n" msgstr " -n, --schema=SCHEMA 지정한 SCHEMA들 ìžë£Œë§Œ ë¤í”„\n" -#: pg_dump.c:886 +#: pg_dump.c:900 #, c-format msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n" msgstr " -N, --exclude-schema=SCHEMA 지정한 SCHEMA들만 빼고 ëª¨ë‘ ë¤í”„\n" -#: pg_dump.c:887 pg_dumpall.c:560 +#: pg_dump.c:901 pg_dumpall.c:559 #, c-format msgid " -o, --oids include OIDs in dump\n" msgstr " -o, --oids OID í¬í•¨í•´ì„œ ë¤í”„\n" -#: pg_dump.c:888 +#: pg_dump.c:902 #, c-format msgid "" " -O, --no-owner skip restoration of object ownership in\n" @@ -1557,12 +1587,12 @@ msgstr "" " -O, --no-owner ì¼ë°˜ í…스트 형ì‹ì—서\n" " 개체 소유권 ë³µì› ê±´ë„ˆë›°ê¸°\n" -#: pg_dump.c:890 pg_dumpall.c:563 +#: pg_dump.c:904 pg_dumpall.c:562 #, c-format msgid " -s, --schema-only dump only the schema, no data\n" msgstr " -s, --schema-only ìžë£Œêµ¬ì¡°(스키마)ë§Œ ë¤í”„\n" -#: pg_dump.c:891 +#: pg_dump.c:905 #, c-format msgid "" " -S, --superuser=NAME superuser user name to use in plain-text " @@ -1571,27 +1601,28 @@ msgstr "" " -S, --superuser=NAME ì¼ë°˜ í…스트 형ì‹ì—서 사용할 슈í¼ìœ ì € ì‚¬ìš©ìž ì´" "름\n" -#: pg_dump.c:892 +#: pg_dump.c:906 #, c-format msgid " -t, --table=TABLE dump the named table(s) only\n" msgstr " -t, --table=TABLE 지정한 ì´ë¦„ì˜ í…Œì´ë¸”들만 ë¤í”„\n" -#: pg_dump.c:893 +#: pg_dump.c:907 #, c-format msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n" msgstr " -T, --exclude-table=TABLE 지정한 í…Œì´ë¸”들만 빼고 ë¤í”„\n" -#: pg_dump.c:894 pg_dumpall.c:566 +#: pg_dump.c:908 pg_dumpall.c:565 #, c-format msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" -msgstr " -x, --no-privileges ì ‘ê·¼ 권한 (grant/revoke) 정보는 ë¤í”„ 안 함\n" +msgstr "" +" -x, --no-privileges ì ‘ê·¼ 권한 (grant/revoke) 정보는 ë¤í”„ 안 함\n" -#: pg_dump.c:895 pg_dumpall.c:567 +#: pg_dump.c:909 pg_dumpall.c:566 #, c-format msgid " --binary-upgrade for use by upgrade utilities only\n" msgstr " --binary-upgrade 업그레ì´ë“œ 유틸리티 ì „ìš©\n" -#: pg_dump.c:896 pg_dumpall.c:568 +#: pg_dump.c:910 pg_dumpall.c:567 #, c-format msgid "" " --column-inserts dump data as INSERT commands with column " @@ -1599,7 +1630,7 @@ msgid "" msgstr "" " --column-inserts 칼럼 ì´ë¦„ê³¼ 함께 INSERT 명령으로 ìžë£Œ ë¤í”„\n" -#: pg_dump.c:897 pg_dumpall.c:569 +#: pg_dump.c:911 pg_dumpall.c:568 #, c-format msgid "" " --disable-dollar-quoting disable dollar quoting, use SQL standard " @@ -1607,13 +1638,13 @@ msgid "" msgstr "" " --disable-dollar-quoting $ ì¸ìš© 구문 사용안함, SQL 표준 따옴표 사용\n" -#: pg_dump.c:898 pg_dumpall.c:570 pg_restore.c:462 +#: pg_dump.c:912 pg_dumpall.c:569 pg_restore.c:467 #, c-format msgid "" " --disable-triggers disable triggers during data-only restore\n" msgstr " --disable-triggers ìžë£Œë§Œ ë³µì›í•  때 트리거 ì‚¬ìš©ì„ ì•ˆí•¨\n" -#: pg_dump.c:899 +#: pg_dump.c:913 #, c-format msgid "" " --enable-row-security enable row security (dump only content user " @@ -1623,32 +1654,30 @@ msgstr "" " --enable-row-security 로우 보안 활성화 (현재 작업ìžê°€ 접근할 수\n" " 있는 ìžë£Œë§Œ ë¤í”„ 함)\n" -#: pg_dump.c:901 +#: pg_dump.c:915 #, c-format msgid "" " --exclude-table-data=TABLE do NOT dump data for the named table(s)\n" -msgstr "" -" --exclude-table-data=í…Œì´ë¸” 해당 í…Œì´ë¸” ìžë£ŒëŠ” ë¤í”„ 안함\n" +msgstr " --exclude-table-data=í…Œì´ë¸” 해당 í…Œì´ë¸” ìžë£ŒëŠ” ë¤í”„ 안함\n" -#: pg_dump.c:902 pg_dumpall.c:571 pg_restore.c:464 +#: pg_dump.c:916 pg_dumpall.c:570 pg_restore.c:469 #, c-format msgid " --if-exists use IF EXISTS when dropping objects\n" msgstr " --if-exists ê°ì²´ ì‚­ì œ 시 IF EXISTS 구문 사용\n" -#: pg_dump.c:903 pg_dumpall.c:572 +#: pg_dump.c:917 pg_dumpall.c:571 #, c-format msgid "" " --inserts dump data as INSERT commands, rather than " "COPY\n" -msgstr "" -" --inserts COPY 대신 INSERT 명령으로 ìžë£Œ ë¤í”„\n" +msgstr " --inserts COPY 대신 INSERT 명령으로 ìžë£Œ ë¤í”„\n" -#: pg_dump.c:904 pg_dumpall.c:573 +#: pg_dump.c:918 pg_dumpall.c:572 #, c-format msgid " --no-security-labels do not dump security label assignments\n" msgstr " --no-security-labels 보안 ë¼ë²¨ í• ë‹¹ì„ ë¤í”„ 하지 않ìŒ\n" -#: pg_dump.c:905 +#: pg_dump.c:919 #, c-format msgid "" " --no-synchronized-snapshots do not use synchronized snapshots in parallel " @@ -1656,24 +1685,24 @@ msgid "" msgstr "" " --no-synchronized-snapshots 병렬 작업ì—서 스냅샷 ì¼ê´€ì„±ì„ 맞추지 않ìŒ\n" -#: pg_dump.c:906 pg_dumpall.c:574 +#: pg_dump.c:920 pg_dumpall.c:573 #, c-format msgid " --no-tablespaces do not dump tablespace assignments\n" msgstr " --no-tablespaces í…Œì´ë¸”스페ì´ìФ í• ë‹¹ì„ ë¤í”„하지 않ìŒ\n" -#: pg_dump.c:907 pg_dumpall.c:575 +#: pg_dump.c:921 pg_dumpall.c:574 #, c-format msgid " --no-unlogged-table-data do not dump unlogged table data\n" msgstr " --no-unlogged-table-data 언로그드 í…Œì´ë¸” ìžë£ŒëŠ” ë¤í”„하지 않ìŒ\n" -#: pg_dump.c:908 pg_dumpall.c:576 +#: pg_dump.c:922 pg_dumpall.c:575 #, c-format msgid "" " --quote-all-identifiers quote all identifiers, even if not key words\n" msgstr "" " --quote-all-identifiers 예약어가 ì•„ë‹ˆì—¬ë„ ëª¨ë“  ì‹ë³„ìžëŠ” 따옴표를 씀\n" -#: pg_dump.c:909 +#: pg_dump.c:923 #, c-format msgid "" " --section=SECTION dump named section (pre-data, data, or post-" @@ -1681,7 +1710,7 @@ msgid "" msgstr "" " --section=SECTION 해당 섹션(pre-data, data, post-data)ë§Œ ë¤í”„\n" -#: pg_dump.c:910 +#: pg_dump.c:924 #, c-format msgid "" " --serializable-deferrable wait until the dump can run without " @@ -1690,12 +1719,22 @@ msgstr "" " --serializable-deferrable ìžë£Œ ì •í•©ì„±ì„ ë³´ìž¥í•˜ê¸° 위해 ë¤í”„ 작업ì„\n" " ì§ë ¬í™” 가능한 트랜잭션으로 처리 함\n" -#: pg_dump.c:911 +#: pg_dump.c:925 #, c-format msgid " --snapshot=SNAPSHOT use given snapshot for the dump\n" msgstr " --snapshot=SNAPSHOT 지정한 ìŠ¤ëƒ…ìƒ·ì„ ë¤í”„ 함\n" -#: pg_dump.c:912 pg_dumpall.c:577 pg_restore.c:470 +#: pg_dump.c:926 pg_restore.c:475 +#, c-format +msgid "" +" --strict-names require table and/or schema include patterns " +"to\n" +" match at least one entity each\n" +msgstr "" +" --strict-names í…Œì´ë¸”ì´ë‚˜ 스키마를 ì§€ì •í–ˆì„ ë•Œ ê·¸ íŒ¨í„´ì— ë§žëŠ”\n" +" ê°ì²´ê°€ ì ì–´ë„ 하나 ì´ìƒ 있어야 함\n" + +#: pg_dump.c:928 pg_dumpall.c:576 pg_restore.c:477 #, c-format msgid "" " --use-set-session-authorization\n" @@ -1704,11 +1743,11 @@ msgid "" " ALTER OWNER commands to set ownership\n" msgstr "" " --use-set-session-authorization\n" -" SET SESSION AUTHORIZATION ëª…ë ¹ì„ ALTER OWNER 명" -"ë ¹\n" +" SET SESSION AUTHORIZATION ëª…ë ¹ì„ ALTER OWNER " +"명령\n" " 대신 사용하여 소유권 설정\n" -#: pg_dump.c:916 pg_dumpall.c:581 pg_restore.c:474 +#: pg_dump.c:932 pg_dumpall.c:580 pg_restore.c:481 #, c-format msgid "" "\n" @@ -1717,45 +1756,45 @@ msgstr "" "\n" "ì—°ê²° 옵션들:\n" -#: pg_dump.c:917 +#: pg_dump.c:933 #, c-format msgid " -d, --dbname=DBNAME database to dump\n" msgstr " -d, --dbname=DBNAME ë¤í”„í•  ë°ì´í„°ë² ì´ìФ\n" -#: pg_dump.c:918 pg_dumpall.c:583 pg_restore.c:475 +#: pg_dump.c:934 pg_dumpall.c:582 pg_restore.c:482 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" " -h, --host=HOSTNAME ì ‘ì†í•  ë°ì´í„°ë² ì´ìФ 서버 ë˜ëŠ” 소켓 디렉터리\n" -#: pg_dump.c:919 pg_dumpall.c:585 pg_restore.c:476 +#: pg_dump.c:935 pg_dumpall.c:584 pg_restore.c:483 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=PORT ë°ì´í„°ë² ì´ìФ ì„œë²„ì˜ í¬íЏ 번호\n" -#: pg_dump.c:920 pg_dumpall.c:586 pg_restore.c:477 +#: pg_dump.c:936 pg_dumpall.c:585 pg_restore.c:484 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=NAME ì—°ê²°í•  ë°ì´í„°ë² ì´ìФ 사용ìž\n" -#: pg_dump.c:921 pg_dumpall.c:587 pg_restore.c:478 +#: pg_dump.c:937 pg_dumpall.c:586 pg_restore.c:485 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password 암호 프롬프트 표시 안 함\n" -#: pg_dump.c:922 pg_dumpall.c:588 pg_restore.c:479 +#: pg_dump.c:938 pg_dumpall.c:587 pg_restore.c:486 #, c-format msgid "" " -W, --password force password prompt (should happen " "automatically)\n" msgstr " -W, --password 암호 ìž…ë ¥ 프롬프트 ë³´ìž„(ìžë™ìœ¼ë¡œ 처리함)\n" -#: pg_dump.c:923 pg_dumpall.c:589 +#: pg_dump.c:939 pg_dumpall.c:588 #, c-format msgid " --role=ROLENAME do SET ROLE before dump\n" msgstr " --role=ROLENAME ë¤í”„ ì „ì— SET ROLE 수행\n" -#: pg_dump.c:925 +#: pg_dump.c:941 #, c-format msgid "" "\n" @@ -1768,157 +1807,173 @@ msgstr "" "사용합니다.\n" "\n" -#: pg_dump.c:927 pg_dumpall.c:593 pg_restore.c:486 +#: pg_dump.c:943 pg_dumpall.c:592 pg_restore.c:493 #, c-format msgid "Report bugs to .\n" msgstr "오류보고: .\n" -#: pg_dump.c:946 +#: pg_dump.c:960 #, c-format msgid "invalid client encoding \"%s\" specified\n" msgstr "í´ë¼ì´ì–¸íЏ ì¸ì½”딩 ê°’ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤: \"%s\"\n" -#: pg_dump.c:1131 +#: pg_dump.c:1102 +#, c-format +msgid "" +"Synchronized snapshots are not supported on standby servers.\n" +"Run with --no-synchronized-snapshots instead if you do not need\n" +"synchronized snapshots.\n" +msgstr "" +"대기 서버ì—서는 ë™ê¸°í™”ëœ ìŠ¤ëƒ…ìƒ· ê¸°ëŠ¥ì„ ì‚¬ìš©í•  수 ì—†ìŒ.\n" +"ë™ê¸°í™”ëœ ìŠ¤ëƒ…ìƒ· ê¸°ëŠ¥ì´ í•„ìš” 없다면, --no-synchronized-snapshots\n" +"ì˜µì…˜ì„ ì§€ì •í•´ì„œ ë¤í”„í•  수 있습니다.\n" + +#: pg_dump.c:1171 #, c-format msgid "invalid output format \"%s\" specified\n" msgstr "\"%s\" ê°’ì€ ìž˜ëª»ëœ ì¶œë ¥ íŒŒì¼ í˜•íƒœìž…ë‹ˆë‹¤.\n" -#: pg_dump.c:1153 +#: pg_dump.c:1194 #, c-format msgid "server version must be at least 7.3 to use schema selection switches\n" msgstr "스키마 ì„ íƒ ì˜µì…˜ì„ ì‚¬ìš©í•˜ë ¤ë©´ 서버 ë²„ì „ì´ 7.3 ì´ìƒì´ì–´ì•¼í•©ë‹ˆë‹¤\n" -#: pg_dump.c:1442 +#: pg_dump.c:1212 pg_dump.c:1265 +#, c-format +msgid "no matching tables were found for pattern \"%s\"\n" +msgstr "\"%s\" 검색 ì¡°ê±´ì— ë§Œì¡±í•˜ëŠ” í…Œì´ë¸”ì´ ì—†ìŠµë‹ˆë‹¤\n" + +#: pg_dump.c:1644 #, c-format msgid "dumping contents of table \"%s.%s\"\n" msgstr "\"%s.%s\" í…Œì´ë¸”ì˜ ë‚´ìš© ë¤í”„ 중\n" -#: pg_dump.c:1566 +#: pg_dump.c:1768 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" msgstr "\"%s\" í…Œì´ë¸” ë‚´ìš©ì„ ë¤í”„하면서 오류 ë°œìƒ: PQgetCopyData() 실패.\n" -#: pg_dump.c:1567 pg_dump.c:1577 +#: pg_dump.c:1769 pg_dump.c:1779 #, c-format msgid "Error message from server: %s" msgstr "서버ì—서 보낸 오류 메시지: %s" -#: pg_dump.c:1568 pg_dump.c:1578 +#: pg_dump.c:1770 pg_dump.c:1780 #, c-format msgid "The command was: %s\n" msgstr "ì‚¬ìš©ëœ ëª…ë ¹: %s\n" -#: pg_dump.c:1576 +#: pg_dump.c:1778 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetResult() failed.\n" msgstr "\"%s\" í…Œì´ë¸” ë‚´ìš©ì„ ë¤í”„하면서 오류 ë°œìƒ: PQgetResult() 실패.\n" -#: pg_dump.c:2215 +#: pg_dump.c:2427 #, c-format msgid "saving database definition\n" msgstr "ë°ì´í„°ë² ì´ìФ 구성정보를 저장중입니다\n" -#: pg_dump.c:2548 +#: pg_dump.c:2760 #, c-format msgid "saving encoding = %s\n" msgstr "ì¸ì½”딩 = %s 저장중\n" -#: pg_dump.c:2575 +#: pg_dump.c:2787 #, c-format msgid "saving standard_conforming_strings = %s\n" msgstr "standard_conforming_strings = %s 저장함\n" -#: pg_dump.c:2608 +#: pg_dump.c:2827 #, c-format msgid "reading large objects\n" msgstr "large object ì½ëŠ” 중\n" -#: pg_dump.c:2740 +#: pg_dump.c:3013 #, c-format msgid "saving large objects\n" msgstr "large objectë“¤ì„ ì €ìž¥ 중입니다\n" -#: pg_dump.c:2787 +#: pg_dump.c:3060 #, c-format msgid "error reading large object %u: %s" msgstr "%u large object ì½ëŠ” 중 오류: %s" -#: pg_dump.c:2839 +#: pg_dump.c:3112 #, c-format msgid "reading row security enabled for table \"%s.%s\"\n" msgstr "\"%s.%s\" í…Œì´ë¸”ì„ ìœ„í•œ 로우 보안 활성화를 ì½ëŠ” 중\n" -#: pg_dump.c:2870 +#: pg_dump.c:3143 #, c-format msgid "reading policies for table \"%s.%s\"\n" msgstr "\"%s.%s\" í…Œì´ë¸”ì„ ìœ„í•œ ì •ì±… ì½ëŠ” 중\n" -#: pg_dump.c:3000 +#: pg_dump.c:3276 #, c-format msgid "unexpected policy command type: \"%s\"\n" msgstr "예ìƒì¹˜ 못한 ì •ì±… 명령 형태: \"%s\"\n" -#: pg_dump.c:3215 +#: pg_dump.c:3495 #, c-format msgid "could not find parent extension for %s\n" msgstr "%s ê°ì²´ì™€ ê´€ë ¨ëœ ìƒìœ„ 확장 ê¸°ëŠ¥ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ\n" -#: pg_dump.c:3318 +#: pg_dump.c:3663 #, c-format msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" msgstr "경고: \"%s\" ìŠ¤í‚¤ë§ˆì˜ ì†Œìœ ì£¼ê°€ 바르지 않습니다\n" -#: pg_dump.c:3361 +#: pg_dump.c:3706 #, c-format msgid "schema with OID %u does not exist\n" msgstr "OIDê°€ %u ì¸ ìŠ¤í‚¤ë§ˆê°€ 없습니다.\n" -#: pg_dump.c:3711 +#: pg_dump.c:4121 #, c-format msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" msgstr "경고: \"%s\" ìžë£Œí˜•ì˜ ì†Œìœ ì£¼ê°€ ì ë‹¹í•˜ì§€ 않습니다.\n" -#: pg_dump.c:3822 +#: pg_dump.c:4235 #, c-format msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" msgstr "경고: \"%s\" ì—°ì‚°ìžì˜ 소유주가 ì ë‹¹í•˜ì§€ 않습니다.\n" -#: pg_dump.c:4081 +#: pg_dump.c:4580 #, c-format msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" msgstr "WARNING: \"%s\" ì—°ì‚°ìž í´ëž˜ìŠ¤ì˜ ì†Œìœ ì£¼ê°€ ì ë‹¹í•˜ì§€ 않습니다.\n" -#: pg_dump.c:4169 +#: pg_dump.c:4671 #, c-format msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" msgstr "경고: \"%s\" ì—°ì‚°ìž ë¶€ë¥˜ì˜ ì†Œìœ ì£¼ê°€ ì ë‹¹í•˜ì§€ 않습니다.\n" -#: pg_dump.c:4307 +#: pg_dump.c:4872 #, c-format msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" msgstr "WARNING: \"%s\" 집계 í•¨ìˆ˜ì˜ ì†Œìœ ì£¼ê°€ ì ë‹¹í•˜ì§€ 않습니다.\n" -#: pg_dump.c:4489 +#: pg_dump.c:5137 #, c-format msgid "WARNING: owner of function \"%s\" appears to be invalid\n" msgstr "WARNING: \"%s\" í•¨ìˆ˜ì˜ ì†Œìœ ì£¼ê°€ ì ë‹¹í•˜ì§€ 않습니다.\n" -#: pg_dump.c:5176 +#: pg_dump.c:5999 #, c-format msgid "WARNING: owner of table \"%s\" appears to be invalid\n" msgstr "WARNING: \"%s\" í…Œì´ë¸”ì˜ ì†Œìœ ì£¼ê°€ ì ë‹¹í•˜ì§€ 않습니다.\n" -#: pg_dump.c:5328 +#: pg_dump.c:6165 #, c-format msgid "reading indexes for table \"%s.%s\"\n" msgstr "\"%s.%s\" í…Œì´ë¸”ì—서 사용하는 ì¸ë±ìŠ¤ë“¤ì„ ì½ëŠ” 중\n" -#: pg_dump.c:5695 +#: pg_dump.c:6533 #, c-format msgid "reading foreign key constraints for table \"%s.%s\"\n" msgstr "\"%s.%s\" í…Œì´ë¸”ì—서 사용하는 참조키 ì œì•½ì¡°ê±´ì„ ì½ëŠ” 중\n" -#: pg_dump.c:5941 +#: pg_dump.c:6779 #, c-format msgid "" "failed sanity check, parent table OID %u of pg_rewrite entry OID %u not " @@ -1926,12 +1981,12 @@ msgid "" msgstr "" "ì˜ì¡´ì„± 검사 실패, 부모 í…Œì´ë¸” OID %u ì—†ìŒ. 해당 pg_rewrite 개체 OID %u\n" -#: pg_dump.c:6034 +#: pg_dump.c:6873 #, c-format msgid "reading triggers for table \"%s.%s\"\n" msgstr "\"%s.%s\" í…Œì´ë¸”ì—서 사용하는 íŠ¸ë¦¬ê±°ë“¤ì„ ì½ëŠ” 중\n" -#: pg_dump.c:6196 +#: pg_dump.c:7038 #, c-format msgid "" "query produced null referenced table name for foreign key trigger \"%s\" on " @@ -1940,110 +1995,122 @@ msgstr "" "쿼리가 참조테ì´ë¸” ì •ë³´ê°€ 없는 \"%s\" 참조키 트리거를 \"%s\" (해당 OID: %u) í…Œ" "ì´ë¸”ì—서 만들었습니다.\n" -#: pg_dump.c:6768 +#: pg_dump.c:7693 #, c-format msgid "finding the columns and types of table \"%s.%s\"\n" msgstr "\"%s.%s\" í…Œì´ë¸”ì˜ ì¹¼ëŸ¼ê³¼ ìžë£Œí˜•ì„ ì°¾ëŠ” 중\n" -#: pg_dump.c:6947 +#: pg_dump.c:7872 #, c-format msgid "invalid column numbering in table \"%s\"\n" msgstr "\"%s\" í…Œì´ë¸”ì— ë§¤ê²¨ì ¸ 있는 ì—´ 번호가 잘못ë˜ì—ˆìŠµë‹ˆë‹¤\n" -#: pg_dump.c:6981 +#: pg_dump.c:7906 #, c-format msgid "finding default expressions of table \"%s.%s\"\n" msgstr "\"%s.%s\" í…Œì´ë¸”ì—서 default 표현들 찾는 중\n" -#: pg_dump.c:7034 +#: pg_dump.c:7959 #, c-format msgid "invalid adnum value %d for table \"%s\"\n" msgstr "ì ë‹¹í•˜ì§€ 않는 adnum ê°’: %d, 해당 í…Œì´ë¸” \"%s\"\n" -#: pg_dump.c:7106 +#: pg_dump.c:8031 #, c-format msgid "finding check constraints for table \"%s.%s\"\n" msgstr "\"%s.%s\" í…Œì´ë¸”ì—서 사용하는 ì²´í¬ ì œì•½ ì¡°ê±´ì„ ì°¾ëŠ” 중\n" -#: pg_dump.c:7202 +#: pg_dump.c:8127 #, c-format msgid "expected %d check constraint on table \"%s\" but found %d\n" msgid_plural "expected %d check constraints on table \"%s\" but found %d\n" msgstr[0] "%d 제약 ì¡°ê±´ 확ì¸ì´ \"%s\" í…Œì´ë¸”ì— í•„ìš”í•œë° %dì´(ê°€) 있ìŒ\n" -#: pg_dump.c:7206 +#: pg_dump.c:8131 #, c-format msgid "(The system catalogs might be corrupted.)\n" msgstr "(시스템 카탈로그가 ì†ìƒë˜ì—ˆëŠ” 것 같습니다)\n" -#: pg_dump.c:8583 +#: pg_dump.c:9663 #, c-format msgid "WARNING: typtype of data type \"%s\" appears to be invalid\n" msgstr "경고: \"%s\" ìžë£Œí˜•ì˜ typtypeê°€ 잘못 ë˜ì–´ 있ìŒ\n" -#: pg_dump.c:10109 +#: pg_dump.c:11205 #, c-format msgid "WARNING: bogus value in proargmodes array\n" msgstr "경고: proargmodes ë°°ì—´ì— ìž˜ëª»ëœ ê°’ì´ ìžˆìŒ\n" -#: pg_dump.c:10460 +#: pg_dump.c:11583 #, c-format msgid "WARNING: could not parse proallargtypes array\n" msgstr "경고: proallargtypes ë°°ì—´ì„ ë¶„ì„í•  수 없습니다\n" -#: pg_dump.c:10476 +#: pg_dump.c:11599 #, c-format msgid "WARNING: could not parse proargmodes array\n" msgstr "경고: proargmodes ë°°ì—´ì„ ë¶„ì„í•  수 없습니다\n" -#: pg_dump.c:10490 +#: pg_dump.c:11613 #, c-format msgid "WARNING: could not parse proargnames array\n" msgstr "경고: proargnames ë°°ì—´ì„ ë¶„ì„í•  수 없습니다\n" -#: pg_dump.c:10501 +#: pg_dump.c:11624 #, c-format msgid "WARNING: could not parse proconfig array\n" msgstr "경고: proconfig ë°°ì—´ì„ êµ¬ë¬¸ ë¶„ì„í•  수 ì—†ìŒ\n" -#: pg_dump.c:10572 +#: pg_dump.c:11695 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" msgstr "\"%s\" í•¨ìˆ˜ì˜ provolatile ê°’ì´ ìž˜ëª» ë˜ì—ˆìŠµë‹ˆë‹¤\n" -#: pg_dump.c:10748 +#: pg_dump.c:11739 pg_dump.c:13782 +#, c-format +msgid "unrecognized proparallel value for function \"%s\"\n" +msgstr "\"%s\" í•¨ìˆ˜ì˜ proparallel ê°’ì´ ìž˜ëª» ë˜ì—ˆìŠµë‹ˆë‹¤\n" + +#: pg_dump.c:11891 #, c-format msgid "WARNING: bogus value in pg_cast.castfunc or pg_cast.castmethod field\n" -msgstr "경고: pg_cast.castfunc ë˜ëŠ” pg_cast.castmethod í•„ë“œì— ìž˜ëª»ëœ ê°’ì´ ìžˆìŒ\n" +msgstr "" +"경고: pg_cast.castfunc ë˜ëŠ” pg_cast.castmethod í•„ë“œì— ìž˜ëª»ëœ ê°’ì´ ìžˆìŒ\n" -#: pg_dump.c:10751 +#: pg_dump.c:11894 #, c-format msgid "WARNING: bogus value in pg_cast.castmethod field\n" msgstr "경고: pg_cast.castmethod í•„ë“œì— ìž˜ëª»ëœ ê°’ì´ ìžˆìŒ\n" -#: pg_dump.c:10834 +#: pg_dump.c:11982 #, c-format msgid "" "WARNING: bogus transform definition, at least one of trffromsql and trftosql " "should be nonzero\n" msgstr "" +"경고: ìž˜ëª»ëœ ì „ì†¡ ì •ì˜, trffromsql ë˜ëŠ” trftosql 중 하나는 비어 있으면 안ë¨\n" -#: pg_dump.c:10851 +#: pg_dump.c:11999 #, c-format msgid "WARNING: bogus value in pg_transform.trffromsql field\n" msgstr "경고: pg_transform.trffromsql í•„ë“œì— ìž˜ëª»ëœ ê°’ì´ ìžˆìŒ\n" -#: pg_dump.c:10872 +#: pg_dump.c:12020 #, c-format msgid "WARNING: bogus value in pg_transform.trftosql field\n" msgstr "경고: pg_transform.trftosql í•„ë“œì— ìž˜ëª»ëœ ê°’ì´ ìžˆìŒ\n" -#: pg_dump.c:11258 +#: pg_dump.c:12411 #, c-format msgid "WARNING: could not find operator with OID %s\n" msgstr "경고: %s OIDì˜ ì—°ì‚°ìžë¥¼ ì°¾ì„ ìˆ˜ ì—†ìŒ\n" -#: pg_dump.c:12433 +#: pg_dump.c:12475 +#, c-format +msgid "WARNING: invalid type \"%c\" of access method \"%s\"\n" +msgstr "경고: \"%c\" ìž˜ëª»ëœ ìžë£Œí˜•, 해당 ì ‘ê·¼ 방법: \"%s\"\n" + +#: pg_dump.c:13673 #, c-format msgid "" "WARNING: aggregate function %s could not be dumped correctly for this " @@ -2052,53 +2119,66 @@ msgstr "" "경고: %s 집계 함수는 ì´ ë°ì´í„°ë² ì´ìФ 버전ì—서는 바르게 ë¤í”„ë˜ì§ˆ 못했습니다; " "무시함\n" -#: pg_dump.c:13258 +#: pg_dump.c:14545 #, c-format msgid "unrecognized object type in default privileges: %d\n" msgstr "기본 ì ‘ê·¼ 권한ì—서 알 수 없는 ê°ì²´í˜•ì´ ìžˆìŒ: %d\n" -#: pg_dump.c:13273 +#: pg_dump.c:14560 #, c-format msgid "could not parse default ACL list (%s)\n" msgstr "기본 ACL ëª©ë¡ (%s)ì„ ë¶„ì„í•  수 ì—†ìŒ\n" -#: pg_dump.c:13328 +#: pg_dump.c:14631 #, c-format -msgid "could not parse ACL list (%s) for object \"%s\" (%s)\n" -msgstr "ACL ëª©ë¡ (%s)ì„ ë¶„ì„í•  수 ì—†ìŒ, 해당 개체: \"%s\" (%s)\n" +msgid "" +"could not parse initial GRANT ACL list (%s) or initial REVOKE ACL list (%s) " +"for object \"%s\" (%s)\n" +msgstr "" +"GRANT ACL ëª©ë¡ ì´ˆê¸°ê°’ (%s) ë˜ëŠ” REVOKE ACL ëª©ë¡ ì´ˆê¸°ê°’ (%s) " +"ë¶„ì„í•  수 ì—†ìŒ, 해당 ê°ì²´: \"%s\" (%s)\n" + +#: pg_dump.c:14639 +#, c-format +msgid "" +"could not parse GRANT ACL list (%s) or REVOKE ACL list (%s) for object \"%s" +"\" (%s)\n" +msgstr "" +"GRANT ACL ëª©ë¡ (%s) ë˜ëŠ” REVOKE ACL ëª©ë¡ (%s) " +"ë¶„ì„í•  수 ì—†ìŒ, 해당 ê°ì²´: \"%s\" (%s)\n" -#: pg_dump.c:13745 +#: pg_dump.c:15123 #, c-format msgid "query to obtain definition of view \"%s\" returned no data\n" msgstr "\"%s\" ë·° ì •ì˜ ì •ë³´ê°€ 없습니다\n" -#: pg_dump.c:13748 +#: pg_dump.c:15126 #, c-format msgid "" "query to obtain definition of view \"%s\" returned more than one definition\n" msgstr "\"%s\" ë·° ì •ì˜ ì •ë³´ê°€ 하나 ì´ìƒ 있습니다.\n" -#: pg_dump.c:13755 +#: pg_dump.c:15133 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)\n" msgstr "\"%s\" ë·°ì˜ ì •ì˜ ë‚´ìš©ì´ ë¹„ì–´ìžˆìŠµë‹ˆë‹¤\n" -#: pg_dump.c:14501 +#: pg_dump.c:15892 #, c-format msgid "invalid column number %d for table \"%s\"\n" msgstr "ìž˜ëª»ëœ ì—´ 번호 %d, 해당 í…Œì´ë¸” \"%s\"\n" -#: pg_dump.c:14625 +#: pg_dump.c:16021 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "\"%s\" 제약 ì¡°ê±´ì„ ìœ„í•œ ì¸ë±ìŠ¤ê°€ 빠졌습니다\n" -#: pg_dump.c:14816 +#: pg_dump.c:16224 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "알 수 없는 제약 ì¡°ê±´ 종류: %c\n" -#: pg_dump.c:14965 pg_dump.c:15129 +#: pg_dump.c:16378 pg_dump.c:16547 #, c-format msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" msgid_plural "" @@ -2106,22 +2186,22 @@ msgid_plural "" msgstr[0] "" "\"%s\" ì‹œí€€ìŠ¤ì˜ ë°ì´í„°ë¥¼ 가져오기 위한 쿼리ì—서 %dê°œì˜ í–‰ 반환(1ê°œ í•„ìš”)\n" -#: pg_dump.c:14976 +#: pg_dump.c:16389 #, c-format msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" msgstr "\"%s\" ì‹œí€€ìŠ¤ì˜ ìžë£Œë¥¼ 구하는 쿼리가 \"%s\" ì´ë¦„ì„ ë¦¬í„´í–ˆìŒ\n" -#: pg_dump.c:15224 +#: pg_dump.c:16645 #, c-format msgid "unexpected tgtype value: %d\n" msgstr "기대ë˜ì§€ ì•Šì€ tgtype ê°’: %d\n" -#: pg_dump.c:15306 +#: pg_dump.c:16727 #, c-format msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" msgstr "ìž˜ëª»ëœ ì¸ìˆ˜ 문ìžì—´ (%s), 해당 트리거 \"%s\", 사용ë˜ëŠ” í…Œì´ë¸” \"%s\"\n" -#: pg_dump.c:15493 +#: pg_dump.c:16924 #, c-format msgid "" "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows " @@ -2129,75 +2209,71 @@ msgid "" msgstr "" "\"%s\" 규칙(\"%s\" í…Œì´ë¸”)ì„(를) 가져오기 위한 쿼리 실패: ìž˜ëª»ëœ í–‰ 수 반환\n" -#: pg_dump.c:15873 +#: pg_dump.c:17313 #, c-format msgid "reading dependency data\n" msgstr "ì˜ì¡´ 관계 ìžë£Œ ì½ëŠ” 중\n" -#: pg_dump.c:16433 +#: pg_dump.c:17870 #, c-format msgid "WARNING: could not parse reloptions array\n" msgstr "경고: reloptions ë°°ì—´ì„ ë¶„ì„í•  수 ì—†ìŒ\n" -#: pg_dump.c:16497 -#, c-format -msgid "query returned %d row instead of one: %s\n" -msgid_plural "query returned %d rows instead of one: %s\n" -msgstr[0] "쿼리ì—서 한 개가 아닌 %dê°œì˜ í–‰ì„ ë°˜í™˜: %s\n" - #. translator: this is a module name #: pg_dump_sort.c:23 msgid "sorter" -msgstr "" +msgstr "sorter" -#: pg_dump_sort.c:489 +#: pg_dump_sort.c:491 #, c-format msgid "invalid dumpId %d\n" -msgstr "" +msgstr "ìž˜ëª»ëœ dumpId %d\n" -#: pg_dump_sort.c:495 +#: pg_dump_sort.c:497 #, c-format msgid "invalid dependency %d\n" msgstr "ìž˜ëª»ëœ ì˜ì¡´ì„± %d\n" -#: pg_dump_sort.c:728 +#: pg_dump_sort.c:730 #, c-format msgid "could not identify dependency loop\n" msgstr "ì˜ì¡´ 관계를 ì‹ë³„ í•  수 ì—†ìŒ\n" -#: pg_dump_sort.c:1250 +#: pg_dump_sort.c:1262 #, c-format msgid "NOTICE: there are circular foreign-key constraints on this table:\n" msgid_plural "" "NOTICE: there are circular foreign-key constraints among these tables:\n" -msgstr[0] "" -"주ì˜: ë‹¤ìŒ ë°ì´ë¸” ê°„ 참조키가 서로 êµì°¨í•˜ê³  있ìŒ:\n" +msgstr[0] "주ì˜: ë‹¤ìŒ ë°ì´ë¸” ê°„ 참조키가 서로 êµì°¨í•˜ê³  있ìŒ:\n" -#: pg_dump_sort.c:1254 pg_dump_sort.c:1274 +#: pg_dump_sort.c:1266 pg_dump_sort.c:1286 #, c-format msgid " %s\n" msgstr " %s\n" -#: pg_dump_sort.c:1255 +#: pg_dump_sort.c:1267 #, c-format msgid "" "You might not be able to restore the dump without using --disable-triggers " "or temporarily dropping the constraints.\n" msgstr "" +"--disable-triggers 옵션으로 ë³µì›í•  수 있습니다. ë˜ëŠ” 임시로 " +"제약 ì¡°ê±´ì„ ì‚­ì œí•˜ê³  ë³µì›í•˜ì„¸ìš”.\n" -#: pg_dump_sort.c:1256 +#: pg_dump_sort.c:1268 #, c-format msgid "" "Consider using a full dump instead of a --data-only dump to avoid this " "problem.\n" msgstr "" +"ì´ ë¬¸ì œë¥¼ 피하려면, --data-only ë¤í”„ ëŒ€ì‹ ì— ëª¨ë“  ë¤í”„를 사용하길 권합니다.\n" -#: pg_dump_sort.c:1268 +#: pg_dump_sort.c:1280 #, c-format msgid "WARNING: could not resolve dependency loop among these items:\n" msgstr "경고: ë‹¤ìŒ í•­ëª© ê°„ ì˜ì¡´ 관계를 ë¶„ì„í•  수 ì—†ìŒ:\n" -#: pg_dumpall.c:181 +#: pg_dumpall.c:180 #, c-format msgid "" "The program \"pg_dump\" is needed by %s but was not found in the\n" @@ -2208,7 +2284,7 @@ msgstr "" "있는 ê°™ì€ ë””ë ‰í„°ë¦¬ì—서 ì°¾ì„ ìˆ˜ 없습니다.\n" "설치 ìƒíƒœë¥¼ 살펴 보십시오.\n" -#: pg_dumpall.c:188 +#: pg_dumpall.c:187 #, c-format msgid "" "The program \"pg_dump\" was found by \"%s\"\n" @@ -2219,13 +2295,13 @@ msgstr "" "%s 버전과 서로 틀립니다.\n" "설치 ìƒíƒœë¥¼ 살펴 보십시오.\n" -#: pg_dumpall.c:318 +#: pg_dumpall.c:317 #, c-format msgid "" "%s: options -g/--globals-only and -r/--roles-only cannot be used together\n" msgstr "%s: -g/--globals-only ë° -r/--roles-only ì˜µì…˜ì€ í•¨ê»˜ 사용할 수 ì—†ìŒ\n" -#: pg_dumpall.c:327 +#: pg_dumpall.c:326 #, c-format msgid "" "%s: options -g/--globals-only and -t/--tablespaces-only cannot be used " @@ -2233,12 +2309,12 @@ msgid "" msgstr "" "%s: -g/--globals-only ë° -t/--tablespaces-only ì˜µì…˜ì€ í•¨ê»˜ 사용할 수 ì—†ìŒ\n" -#: pg_dumpall.c:336 pg_restore.c:343 +#: pg_dumpall.c:335 pg_restore.c:345 #, c-format msgid "%s: option --if-exists requires option -c/--clean\n" -msgstr "" +msgstr "%s: --if-exists ì˜µì…˜ì€ -c/--clean 옵션과 함께 사용해야 함\n" -#: pg_dumpall.c:343 +#: pg_dumpall.c:342 #, c-format msgid "" "%s: options -r/--roles-only and -t/--tablespaces-only cannot be used " @@ -2246,12 +2322,12 @@ msgid "" msgstr "" "%s: -r/--roles-only ë° -t/--tablespaces-only ì˜µì…˜ì€ í•¨ê»˜ 사용할 수 ì—†ìŒ\n" -#: pg_dumpall.c:385 pg_dumpall.c:1892 +#: pg_dumpall.c:384 pg_dumpall.c:1994 #, c-format msgid "%s: could not connect to database \"%s\"\n" msgstr "%s: \"%s\" ë°ì´í„°ë² ì´ìŠ¤ì— ì ‘ì†í•  수 ì—†ìŒ\n" -#: pg_dumpall.c:400 +#: pg_dumpall.c:399 #, c-format msgid "" "%s: could not connect to databases \"postgres\" or \"template1\"\n" @@ -2260,12 +2336,12 @@ msgstr "" "%s: \"postgres\" ë˜ëŠ” \"template1\" ë°ì´í„°ë² ì´ìŠ¤ì— ì—°ê²°í•  수 없습니다.\n" "다른 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 지정하십시오.\n" -#: pg_dumpall.c:417 +#: pg_dumpall.c:416 #, c-format msgid "%s: could not open the output file \"%s\": %s\n" msgstr "%s: 출력 íŒŒì¼ \"%s\"ì„(를) ì—´ 수 ì—†ìŒ: %s\n" -#: pg_dumpall.c:547 +#: pg_dumpall.c:546 #, c-format msgid "" "%s extracts a PostgreSQL database cluster into an SQL script file.\n" @@ -2275,35 +2351,35 @@ msgstr "" "추출하는 프로그램입니다.\n" "\n" -#: pg_dumpall.c:549 +#: pg_dumpall.c:548 #, c-format msgid " %s [OPTION]...\n" msgstr " %s [옵션]...\n" -#: pg_dumpall.c:552 +#: pg_dumpall.c:551 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=파ì¼ì´ë¦„ 출력 íŒŒì¼ ì´ë¦„\n" -#: pg_dumpall.c:558 +#: pg_dumpall.c:557 #, c-format msgid "" " -c, --clean clean (drop) databases before recreating\n" msgstr "" " -c, --clean 다시 만들기 ì „ì— ë°ì´í„°ë² ì´ìФ 지우기(ì‚­ì œ)\n" -#: pg_dumpall.c:559 +#: pg_dumpall.c:558 #, c-format msgid " -g, --globals-only dump only global objects, no databases\n" msgstr "" " -g, --globals-only ë°ì´í„°ë² ì´ìŠ¤ëŠ” 제외하고 글로벌 개체만 ë¤í”„\n" -#: pg_dumpall.c:561 pg_restore.c:454 +#: pg_dumpall.c:560 pg_restore.c:459 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr " -O, --no-owner 개체 소유권 ë³µì› ê±´ë„ˆë›°ê¸°\n" -#: pg_dumpall.c:562 +#: pg_dumpall.c:561 #, c-format msgid "" " -r, --roles-only dump only roles, no databases or tablespaces\n" @@ -2311,12 +2387,12 @@ msgstr "" " -r, --roles-only ë°ì´í„°ë² ì´ìŠ¤ë‚˜ í…Œì´ë¸”스페ì´ìŠ¤ëŠ” 제외하고 ì—­í• " "ë§Œ ë¤í”„\n" -#: pg_dumpall.c:564 +#: pg_dumpall.c:563 #, c-format msgid " -S, --superuser=NAME superuser user name to use in the dump\n" msgstr " -S, --superuser=NAME ë¤í”„ì— ì‚¬ìš©í•  슈í¼ìœ ì € ì‚¬ìš©ìž ì´ë¦„\n" -#: pg_dumpall.c:565 +#: pg_dumpall.c:564 #, c-format msgid "" " -t, --tablespaces-only dump only tablespaces, no databases or roles\n" @@ -2324,17 +2400,17 @@ msgstr "" " -t, --tablespaces-only ë°ì´í„°ë² ì´ìŠ¤ë‚˜ ì—­í• ì€ ì œì™¸í•˜ê³  í…Œì´ë¸”스페ì´ìФ" "ë§Œ ë¤í”„\n" -#: pg_dumpall.c:582 +#: pg_dumpall.c:581 #, c-format msgid " -d, --dbname=CONNSTR connect using connection string\n" msgstr " -d, --dbname=ì ‘ì†ë¬¸ìžì—´ 서버 ì ‘ì† ë¬¸ìžì—´\n" -#: pg_dumpall.c:584 +#: pg_dumpall.c:583 #, c-format msgid " -l, --database=DBNAME alternative default database\n" msgstr " -l, --database=DBNAME 대체용 기본 ë°ì´í„°ë² ì´ìФ\n" -#: pg_dumpall.c:591 +#: pg_dumpall.c:590 #, c-format msgid "" "\n" @@ -2348,107 +2424,112 @@ msgstr "" "ì¶œë ¥ì— ì“°ì—¬ì§‘ë‹ˆë‹¤.\n" "\n" -#: pg_dumpall.c:1118 +#: pg_dumpall.c:791 +#, c-format +msgid "%s: role name starting with \"pg_\" skipped (%s)\n" +msgstr "%s: 롤 ì´ë¦„ì´ \"pg_\"로 시작함, 무시함: (%s)\n" + +#: pg_dumpall.c:1168 #, c-format msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n" msgstr "" "%s: í…Œì´ë¸”스페ì´ìФ ìš© ACL ëª©ë¡ (%s)ì„ ë¶„ì„í•  수 ì—†ìŒ, 해당개체 \"%s\"\n" -#: pg_dumpall.c:1449 +#: pg_dumpall.c:1536 #, c-format msgid "%s: could not parse ACL list (%s) for database \"%s\"\n" msgstr "%s: ë°ì´í„°ë² ì´ìФ ìš© ACL ëª©ë¡ (%s)ì„ ë¶„ì„í•  수 ì—†ìŒ, 해당개체: \"%s\"\n" -#: pg_dumpall.c:1659 +#: pg_dumpall.c:1754 #, c-format msgid "%s: dumping database \"%s\"...\n" msgstr "%s: \"%s\" ë°ì´í„°ë² ì´ìФ ë¤í”„ 중...\n" -#: pg_dumpall.c:1680 +#: pg_dumpall.c:1778 #, c-format msgid "%s: pg_dump failed on database \"%s\", exiting\n" msgstr "%s: \"%s\" ë°ì´í„°ë² ì´ìФì—서 pg_dump 작업 ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒ, ë냅니다.\n" -#: pg_dumpall.c:1689 +#: pg_dumpall.c:1787 #, c-format msgid "%s: could not re-open the output file \"%s\": %s\n" msgstr "%s: 출력 íŒŒì¼ \"%s\"ì„(를) 다시 ì—´ 수 ì—†ìŒ: %s\n" -#: pg_dumpall.c:1734 +#: pg_dumpall.c:1832 #, c-format msgid "%s: running \"%s\"\n" msgstr "%s: \"%s\" ê°€ë™ì¤‘\n" -#: pg_dumpall.c:1914 +#: pg_dumpall.c:2016 #, c-format msgid "%s: could not connect to database \"%s\": %s\n" msgstr "%s: \"%s\" ë°ì´í„°ë² ì´ìŠ¤ì— ì ‘ì†í•  수 ì—†ìŒ: %s\n" -#: pg_dumpall.c:1944 +#: pg_dumpall.c:2046 #, c-format msgid "%s: could not get server version\n" msgstr "%s: 서버 ë²„ì „ì„ ì•Œ 수 ì—†ìŒ\n" -#: pg_dumpall.c:1950 +#: pg_dumpall.c:2052 #, c-format msgid "%s: could not parse server version \"%s\"\n" msgstr "%s: \"%s\" 서버 ë²„ì „ì„ ë¶„ì„í•  수 ì—†ìŒ\n" -#: pg_dumpall.c:2028 pg_dumpall.c:2054 +#: pg_dumpall.c:2130 pg_dumpall.c:2156 #, c-format msgid "%s: executing %s\n" msgstr "%s: %s 실행중\n" -#: pg_dumpall.c:2034 pg_dumpall.c:2060 +#: pg_dumpall.c:2136 pg_dumpall.c:2162 #, c-format msgid "%s: query failed: %s" msgstr "%s: 쿼리 실패: %s" -#: pg_dumpall.c:2036 pg_dumpall.c:2062 +#: pg_dumpall.c:2138 pg_dumpall.c:2164 #, c-format msgid "%s: query was: %s\n" msgstr "%s: 사용한 쿼리: %s\n" -#: pg_restore.c:303 +#: pg_restore.c:305 #, c-format msgid "%s: options -d/--dbname and -f/--file cannot be used together\n" msgstr "%s: -d/--dbname ë° -f/--file ì˜µì…˜ì€ í•¨ê»˜ 사용할 수 ì—†ìŒ\n" -#: pg_restore.c:314 +#: pg_restore.c:316 #, c-format msgid "" "%s: options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "" "%s: -s/--schema-only 옵션과 -a/--data-only ì˜µì…˜ì€ í•¨ê»˜ 사용할 수 ì—†ìŒ\n" -#: pg_restore.c:321 +#: pg_restore.c:323 #, c-format msgid "%s: options -c/--clean and -a/--data-only cannot be used together\n" msgstr "%s: -c/--clean 옵션과 -a/--data-only ì˜µì…˜ì€ í•¨ê»˜ 사용할 수 ì—†ìŒ\n" -#: pg_restore.c:329 +#: pg_restore.c:331 #, c-format msgid "%s: cannot specify both --single-transaction and multiple jobs\n" msgstr "%s: --single-transaction ë° ì—¬ëŸ¬ ìž‘ì—…ì„ ëª¨ë‘ ì§€ì •í•  수는 ì—†ìŒ\n" -#: pg_restore.c:369 +#: pg_restore.c:372 #, c-format msgid "" "unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"t\"\n" msgstr "" "알 수 없는 ì•„ì¹´ì´ë¸Œ 형ì‹: \"%s\"; 사용할 수 있는 ê°’: \"c\", \"d\", \"t\"\n" -#: pg_restore.c:399 +#: pg_restore.c:404 #, c-format msgid "%s: maximum number of parallel jobs is %d\n" msgstr "%s: 병렬 작업 최대수는 %d 입니다.\n" -#: pg_restore.c:417 +#: pg_restore.c:422 #, c-format msgid "WARNING: errors ignored on restore: %d\n" msgstr "경고: ë³µì›ìž‘ì—…ì—ì„œì˜ ì˜¤ë¥˜ë“¤ì´ ë¬´ì‹œë˜ì—ˆìŒ: %d\n" -#: pg_restore.c:431 +#: pg_restore.c:436 #, c-format msgid "" "%s restores a PostgreSQL database from an archive created by pg_dump.\n" @@ -2458,47 +2539,47 @@ msgstr "" "ê·¸ ìžë£Œë¥¼ ì¼ê´„ 입력합니다.\n" "\n" -#: pg_restore.c:433 +#: pg_restore.c:438 #, c-format msgid " %s [OPTION]... [FILE]\n" msgstr " %s [옵션]... [파ì¼]\n" -#: pg_restore.c:436 +#: pg_restore.c:441 #, c-format msgid " -d, --dbname=NAME connect to database name\n" msgstr " -d, --dbname=NAME ì ‘ì†í•  ë°ì´í„°ë² ì´ìФ ì´ë¦„\n" -#: pg_restore.c:437 +#: pg_restore.c:442 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=FILENAME 출력 íŒŒì¼ ì´ë¦„\n" -#: pg_restore.c:438 +#: pg_restore.c:443 #, c-format msgid " -F, --format=c|d|t backup file format (should be automatic)\n" msgstr " -F, --format=c|d|t 백업 íŒŒì¼ í˜•ì‹ (지정하지 않으면 ìžë™ë¶„ì„)\n" -#: pg_restore.c:439 +#: pg_restore.c:444 #, c-format msgid " -l, --list print summarized TOC of the archive\n" msgstr " -l, --list ìžë£Œì˜ ìš”ì•½ëœ ëª©ì°¨ë¥¼ 보여줌\n" -#: pg_restore.c:440 +#: pg_restore.c:445 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose ìžì„¸í•œ ì •ë³´ 보여줌\n" -#: pg_restore.c:441 +#: pg_restore.c:446 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version 버전 정보를 보여주고 마침\n" -#: pg_restore.c:442 +#: pg_restore.c:447 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help ì´ ë„움ë§ì„ 보여주고 마침\n" -#: pg_restore.c:444 +#: pg_restore.c:449 #, c-format msgid "" "\n" @@ -2507,32 +2588,33 @@ msgstr "" "\n" "리스토어 처리를 위한 옵션들:\n" -#: pg_restore.c:445 +#: pg_restore.c:450 #, c-format msgid " -a, --data-only restore only the data, no schema\n" msgstr " -a, --data-only 스키마는 빼고 ìžë£Œë§Œ 입력함\n" -#: pg_restore.c:447 +#: pg_restore.c:452 #, c-format msgid " -C, --create create the target database\n" msgstr " -C, --create 작업 ëŒ€ìƒ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 만듦\n" -#: pg_restore.c:448 +#: pg_restore.c:453 #, c-format msgid " -e, --exit-on-error exit on error, default is to continue\n" -msgstr " -e, --exit-on-error 오류가 ìƒê¸°ë©´ ë냄, ê¸°ë³¸ì€ ê³„ì† ì§„í–‰í•¨\n" +msgstr "" +" -e, --exit-on-error 오류가 ìƒê¸°ë©´ ë냄, ê¸°ë³¸ì€ ê³„ì† ì§„í–‰í•¨\n" -#: pg_restore.c:449 +#: pg_restore.c:454 #, c-format msgid " -I, --index=NAME restore named index\n" msgstr " -I, --index=NAME 지정한 ì¸ë±ìФ 만듦\n" -#: pg_restore.c:450 +#: pg_restore.c:455 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to restore\n" msgstr " -j, --jobs=NUM 여러 병렬 ìž‘ì—…ì„ ì‚¬ìš©í•˜ì—¬ ë³µì›\n" -#: pg_restore.c:451 +#: pg_restore.c:456 #, c-format msgid "" " -L, --use-list=FILENAME use table of contents from this file for\n" @@ -2541,22 +2623,22 @@ msgstr "" " -L, --use-list=FILENAME ì¶œë ¥ì„ ì„ íƒí•˜ê³  해당 순서를 지정하기 위해\n" " ì´ íŒŒì¼ì˜ 목차 사용\n" -#: pg_restore.c:453 +#: pg_restore.c:458 #, c-format msgid " -n, --schema=NAME restore only objects in this schema\n" msgstr " -n, --schema=NAME 해당 ìŠ¤í‚¤ë§ˆì˜ ê°œì²´ë“¤ë§Œ ë³µì›í•¨\n" -#: pg_restore.c:455 +#: pg_restore.c:460 #, c-format msgid " -P, --function=NAME(args) restore named function\n" msgstr " -P, --function=NAME(args) 지정한 함수 만듦\n" -#: pg_restore.c:456 +#: pg_restore.c:461 #, c-format msgid " -s, --schema-only restore only the schema, no data\n" msgstr " -s, --schema-only ìžë£Œêµ¬ì¡°(스키마)ë§Œ 만듦\n" -#: pg_restore.c:457 +#: pg_restore.c:462 #, c-format msgid "" " -S, --superuser=NAME superuser user name to use for disabling " @@ -2565,55 +2647,56 @@ msgstr "" " -S, --superuser=NAME 트리거를 사용하지 않기 위해 사용할 슈í¼ìœ ì €\n" " ì‚¬ìš©ìž ì´ë¦„\n" -#: pg_restore.c:458 +#: pg_restore.c:463 #, c-format -msgid " -t, --table=NAME restore named table\n" -msgstr " -t, --table=NAME 지정한 í…Œì´ë¸” 만들고 ìžë£Œ 입력함\n" +msgid "" +" -t, --table=NAME restore named relation (table, view, etc.)\n" +msgstr "" +" -t, --table=NAME ë³µì›í•  ê°ì²´ ì´ë¦„ (í…Œì´ë¸”, ë·°, 기타)\n" -#: pg_restore.c:459 +#: pg_restore.c:464 #, c-format msgid " -T, --trigger=NAME restore named trigger\n" msgstr " -T, --trigger=NAME 지정한 트리거 만듦\n" -#: pg_restore.c:460 +#: pg_restore.c:465 #, c-format msgid "" " -x, --no-privileges skip restoration of access privileges (grant/" "revoke)\n" -msgstr "" -" -x, --no-privileges ì ‘ê·¼ 권한(grant/revoke) 지정 안함\n" +msgstr " -x, --no-privileges ì ‘ê·¼ 권한(grant/revoke) 지정 안함\n" -#: pg_restore.c:461 +#: pg_restore.c:466 #, c-format msgid " -1, --single-transaction restore as a single transaction\n" msgstr " -1, --single-transaction í•˜ë‚˜ì˜ íŠ¸ëžœìž­ì…˜ 작업으로 ë³µì›í•¨\n" -#: pg_restore.c:463 +#: pg_restore.c:468 #, c-format msgid " --enable-row-security enable row security\n" msgstr " --enable-row-security 로우 보안 활성화\n" -#: pg_restore.c:465 +#: pg_restore.c:470 #, c-format msgid "" " --no-data-for-failed-tables do not restore data of tables that could not " "be\n" " created\n" msgstr "" -" --no-data-for-failed-tables 만들 수 없는 í…Œì´ë¸”ì— ëŒ€í•´ì„œëŠ” ìžë£Œë¥¼ ë¤í”„하지 않" -"ìŒ\n" +" --no-data-for-failed-tables 만들 수 없는 í…Œì´ë¸”ì— ëŒ€í•´ì„œëŠ” ìžë£Œë¥¼ ë¤í”„하" +"ì§€ 않ìŒ\n" -#: pg_restore.c:467 +#: pg_restore.c:472 #, c-format msgid " --no-security-labels do not restore security labels\n" msgstr " --no-security-labels 보안 ë¼ë²¨ì„ ë³µì›í•˜ì§€ 않ìŒ\n" -#: pg_restore.c:468 +#: pg_restore.c:473 #, c-format msgid " --no-tablespaces do not restore tablespace assignments\n" msgstr " --no-tablespaces í…Œì´ë¸”스페ì´ìФ í• ë‹¹ì„ ë³µì›í•˜ì§€ 않ìŒ\n" -#: pg_restore.c:469 +#: pg_restore.c:474 #, c-format msgid "" " --section=SECTION restore named section (pre-data, data, or " @@ -2622,12 +2705,12 @@ msgstr "" " --section=SECTION 지정한 섹션만 ë³µì›í•¨\n" " 섹션 종류: pre-data, data, post-data\n" -#: pg_restore.c:480 +#: pg_restore.c:487 #, c-format msgid " --role=ROLENAME do SET ROLE before restore\n" msgstr " --role=ROLENAME ë³µì› ì „ì— SET ROLE 수행\n" -#: pg_restore.c:482 +#: pg_restore.c:489 #, c-format msgid "" "\n" @@ -2638,7 +2721,7 @@ msgstr "" "-I, -n, -P, -t, -T, --section ì˜µì…˜ì€ ê·¸ 대ìƒì´ ë˜ëŠ” ê°ì²´ë¥¼ 복수로 지정하기\n" "위해서 여러번 사용할 수 있습니다.\n" -#: pg_restore.c:485 +#: pg_restore.c:492 #, c-format msgid "" "\n" @@ -2648,3 +2731,21 @@ msgstr "" "\n" "사용할 ìž…ë ¥ 파ì¼ì„ 지정하지 않았다면, 표준 ìž…ë ¥(stdin)ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.\n" "\n" + +#~ msgid "could not open output file \"%s\" for writing\n" +#~ msgstr "\"%s\" 파ì¼ì„ 쓰기 모드로 ì—´ 수 ì—†ìŒ\n" + +#~ msgid "error in ListenToWorkers(): %s\n" +#~ msgstr "ListenToWorkers()ì—서 오류 ë°œìƒ: %s\n" + +#~ msgid "terminated by user\n" +#~ msgstr "사용ìžì— ì˜í•´ 종료ë¨\n" + +#~ msgid "unrecognized command on communication channel: %s\n" +#~ msgstr "통신 ì²´ë„ì—서 알 수 없는 명령: %s\n" + +#~ msgid "could not get relation name for OID %u: %s\n" +#~ msgstr "%u OIDì— ëŒ€ì‘하는 릴레ì´ì…˜ ì´ë¦„ì„ ì•Œ 수 ì—†ìŒ: %s\n" + +#~ msgid "worker is terminating\n" +#~ msgstr "작업 프로세스 종료 중\n" diff --git a/src/bin/pg_dump/po/pt_BR.po b/src/bin/pg_dump/po/pt_BR.po index 30fdaff1cd..e1d0bd9a70 100644 --- a/src/bin/pg_dump/po/pt_BR.po +++ b/src/bin/pg_dump/po/pt_BR.po @@ -2,13 +2,13 @@ # Copyright (C) 2009 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # Roberto Mello , 2002. -# Euler Taveira de Oliveira , 2003-2016. +# Euler Taveira de Oliveira , 2003-2017. # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-08-29 16:48-0300\n" +"POT-Creation-Date: 2017-08-06 01:59-0300\n" "PO-Revision-Date: 2005-10-04 23:16-0300\n" "Last-Translator: Euler Taveira de Oliveira \n" "Language-Team: Brazilian Portuguese \n" @@ -326,38 +326,38 @@ msgstr "não pôde descomprimir dados: %s\n" msgid "could not close compression library: %s\n" msgstr "não pôde fechar biblioteca de compressão: %s\n" -#: compress_io.c:596 compress_io.c:632 pg_backup_custom.c:591 -#: pg_backup_tar.c:561 +#: compress_io.c:600 compress_io.c:638 pg_backup_custom.c:591 +#: pg_backup_tar.c:566 pg_backup_tar.c:570 #, c-format msgid "could not read from input file: %s\n" msgstr "não pôde ler arquivo de entrada: %s\n" -#: compress_io.c:635 pg_backup_custom.c:588 pg_backup_directory.c:548 -#: pg_backup_tar.c:797 pg_backup_tar.c:821 +#: compress_io.c:641 pg_backup_custom.c:588 pg_backup_directory.c:552 +#: pg_backup_tar.c:809 pg_backup_tar.c:833 #, c-format msgid "could not read from input file: end of file\n" msgstr "não pôde ler arquivo de entrada: fim do arquivo\n" -#: parallel.c:163 +#: parallel.c:167 msgid "parallel archiver" msgstr "arquivador paralelo" -#: parallel.c:227 +#: parallel.c:231 #, c-format msgid "%s: WSAStartup failed: %d\n" msgstr "%s: WSAStartup falhou: %d\n" -#: parallel.c:930 +#: parallel.c:934 #, c-format msgid "could not create communication channels: %s\n" msgstr "não pôde criar canais de comunicação: %s\n" -#: parallel.c:993 +#: parallel.c:997 #, c-format msgid "could not create worker process: %s\n" msgstr "não pôde criar processo filho: %s\n" -#: parallel.c:1188 +#: parallel.c:1192 #, c-format msgid "" "could not obtain lock on relation \"%s\"\n" @@ -366,67 +366,67 @@ msgstr "" "não pôde obter bloqueio na relação \"%s\"\n" "Isso geralmente significa que alguém solicitou um bloqueio ACCESS EXCLUSIVE na tabela após o processo pai do pg_dump ter obtido o bloqueio ACCESS SHARE inicial na tabela.\n" -#: parallel.c:1258 +#: parallel.c:1262 #, c-format msgid "unrecognized command received from master: \"%s\"\n" msgstr "comando desconhecido recebido do processo principal: \"%s\"\n" -#: parallel.c:1296 +#: parallel.c:1300 #, c-format msgid "a worker process died unexpectedly\n" msgstr "um processo filho morreu inesperadamente\n" -#: parallel.c:1322 parallel.c:1328 +#: parallel.c:1326 parallel.c:1332 #, c-format msgid "invalid message received from worker: \"%s\"\n" msgstr "mensagem inválida recebida do processo filho: \"%s\"\n" -#: parallel.c:1385 parallel.c:1436 +#: parallel.c:1389 parallel.c:1440 #, c-format msgid "error processing a parallel work item\n" msgstr "erro ao processar um item de trabalho paralelo\n" -#: parallel.c:1465 parallel.c:1583 +#: parallel.c:1469 parallel.c:1587 #, c-format msgid "could not write to the communication channel: %s\n" msgstr "não pôde escrever no canal de comunicação: %s\n" -#: parallel.c:1543 +#: parallel.c:1547 #, c-format msgid "select() failed: %s\n" msgstr "select() falhou: %s\n" -#: parallel.c:1668 +#: parallel.c:1672 #, c-format msgid "pgpipe: could not create socket: error code %d\n" msgstr "pgpipe: não pôde criar soquete: código de erro %d\n" -#: parallel.c:1679 +#: parallel.c:1683 #, c-format msgid "pgpipe: could not bind: error code %d\n" msgstr "pgpipe: não pôde se ligar: código de erro %d\n" -#: parallel.c:1686 +#: parallel.c:1690 #, c-format msgid "pgpipe: could not listen: error code %d\n" msgstr "pgpipe: não pôde escutar: código de erro %d\n" -#: parallel.c:1693 +#: parallel.c:1697 #, c-format msgid "pgpipe: getsockname() failed: error code %d\n" msgstr "pgpipe: getsockname() falhou: código de erro %d\n" -#: parallel.c:1704 +#: parallel.c:1708 #, c-format msgid "pgpipe: could not create second socket: error code %d\n" msgstr "pgpipe: não pôde criar segundo soquete: código de erro %d\n" -#: parallel.c:1713 +#: parallel.c:1717 #, c-format msgid "pgpipe: could not connect socket: error code %d\n" msgstr "pgpipe: não pôde se conectar ao soquete: código de erro %d\n" -#: parallel.c:1722 +#: parallel.c:1726 #, c-format msgid "pgpipe: could not accept connection: error code %d\n" msgstr "pgpipe: não pôde aceitar conexão: código de erro %d\n" @@ -436,485 +436,480 @@ msgstr "pgpipe: não pôde aceitar conexão: código de erro %d\n" msgid "archiver" msgstr "arquivador" -#: pg_backup_archiver.c:234 pg_backup_archiver.c:1519 +#: pg_backup_archiver.c:240 pg_backup_archiver.c:1589 #, c-format msgid "could not close output file: %s\n" msgstr "não pôde fechar arquivo de saída: %s\n" -#: pg_backup_archiver.c:280 pg_backup_archiver.c:285 +#: pg_backup_archiver.c:286 pg_backup_archiver.c:291 #, c-format msgid "WARNING: archive items not in correct section order\n" msgstr "AVISO: itens do archive não estão na ordem correta de seções\n" -#: pg_backup_archiver.c:291 +#: pg_backup_archiver.c:297 #, c-format msgid "unexpected section code %d\n" msgstr "código de seção %d inesperado\n" -#: pg_backup_archiver.c:327 +#: pg_backup_archiver.c:333 #, c-format msgid "-C and -1 are incompatible options\n" msgstr "-C e -1 são opções incompatíveis\n" -#: pg_backup_archiver.c:337 +#: pg_backup_archiver.c:343 #, c-format msgid "parallel restore is not supported with this archive file format\n" msgstr "restauração paralela não é suportada por este formato de arquivo\n" -#: pg_backup_archiver.c:341 +#: pg_backup_archiver.c:347 #, c-format msgid "parallel restore is not supported with archives made by pre-8.0 pg_dump\n" msgstr "restauração paralela não é suportada por arquivos produzidos por pg_dum anterior a 8.0\n" -#: pg_backup_archiver.c:359 +#: pg_backup_archiver.c:365 #, c-format msgid "cannot restore from compressed archive (compression not supported in this installation)\n" msgstr "não pode recuperar arquivo comprimido (compressão não é suportada nesta instalação)\n" -#: pg_backup_archiver.c:376 +#: pg_backup_archiver.c:382 #, c-format msgid "connecting to database for restore\n" msgstr "conectando ao banco de dados para restauração\n" -#: pg_backup_archiver.c:378 +#: pg_backup_archiver.c:384 #, c-format msgid "direct database connections are not supported in pre-1.3 archives\n" msgstr "conexões diretas ao banco de dados não são suportadas em arquivos anteriores a versão 1.3\n" -#: pg_backup_archiver.c:423 +#: pg_backup_archiver.c:429 #, c-format msgid "implied data-only restore\n" msgstr "restauração do tipo somente dados implícita\n" -#: pg_backup_archiver.c:493 +#: pg_backup_archiver.c:499 #, c-format msgid "dropping %s %s\n" msgstr "removendo %s %s\n" -#: pg_backup_archiver.c:646 +#: pg_backup_archiver.c:592 #, c-format -msgid "setting owner and privileges for %s \"%s.%s\"\n" -msgstr "definindo dono e privilégios para %s \"%s.%s\"\n" +msgid "WARNING: could not find where to insert IF EXISTS in statement \"%s\"\n" +msgstr "AVISO: não pôde encontrar onde inserir IF EXISTS no comando \"%s\"\n" -#: pg_backup_archiver.c:649 -#, c-format -msgid "setting owner and privileges for %s \"%s\"\n" -msgstr "definindo dono e privilégios para %s \"%s\"\n" - -#: pg_backup_archiver.c:715 pg_backup_archiver.c:717 +#: pg_backup_archiver.c:755 pg_backup_archiver.c:757 #, c-format msgid "warning from original dump file: %s\n" msgstr "aviso do arquivo de cópia de segurança: %s\n" -#: pg_backup_archiver.c:726 +#: pg_backup_archiver.c:769 #, c-format msgid "creating %s \"%s.%s\"\n" msgstr "criando %s \"%s.%s\"\n" -#: pg_backup_archiver.c:729 +#: pg_backup_archiver.c:772 #, c-format msgid "creating %s \"%s\"\n" msgstr "criando %s \"%s\"\n" -#: pg_backup_archiver.c:781 +#: pg_backup_archiver.c:823 #, c-format msgid "connecting to new database \"%s\"\n" msgstr "conectando ao novo banco de dados \"%s\"\n" -#: pg_backup_archiver.c:809 +#: pg_backup_archiver.c:851 #, c-format msgid "processing %s\n" msgstr "processando %s\n" -#: pg_backup_archiver.c:829 +#: pg_backup_archiver.c:871 #, c-format msgid "processing data for table \"%s.%s\"\n" msgstr "processando dados da tabela \"%s.%s\"\n" -#: pg_backup_archiver.c:891 +#: pg_backup_archiver.c:933 #, c-format msgid "executing %s %s\n" msgstr "executando %s %s\n" -#: pg_backup_archiver.c:930 +#: pg_backup_archiver.c:972 #, c-format msgid "disabling triggers for %s\n" msgstr "desabilitando gatilhos para %s\n" -#: pg_backup_archiver.c:958 +#: pg_backup_archiver.c:1000 #, c-format msgid "enabling triggers for %s\n" msgstr "habilitando gatilhos para %s\n" -#: pg_backup_archiver.c:988 +#: pg_backup_archiver.c:1030 #, c-format msgid "internal error -- WriteData cannot be called outside the context of a DataDumper routine\n" msgstr "erro interno -- WriteData não pode ser chamada fora do contexto de uma rotina DataDumper\n" -#: pg_backup_archiver.c:1157 +#: pg_backup_archiver.c:1227 #, c-format msgid "large-object output not supported in chosen format\n" msgstr "cópia de segurança de objetos grandes não é suportada no formato escolhido\n" -#: pg_backup_archiver.c:1215 +#: pg_backup_archiver.c:1285 #, c-format msgid "restored %d large object\n" msgid_plural "restored %d large objects\n" msgstr[0] "restaurado %d objeto grande\n" msgstr[1] "restaurado %d objetos grandes\n" -#: pg_backup_archiver.c:1236 pg_backup_tar.c:739 +#: pg_backup_archiver.c:1306 pg_backup_tar.c:751 #, c-format msgid "restoring large object with OID %u\n" msgstr "restaurando objeto grande com OID %u\n" -#: pg_backup_archiver.c:1248 +#: pg_backup_archiver.c:1318 #, c-format msgid "could not create large object %u: %s" msgstr "não pôde criar objeto grande %u: %s" -#: pg_backup_archiver.c:1253 pg_dump.c:3050 +#: pg_backup_archiver.c:1323 pg_dump.c:3093 #, c-format msgid "could not open large object %u: %s" msgstr "não pôde abrir objeto grande %u: %s" -#: pg_backup_archiver.c:1311 +#: pg_backup_archiver.c:1381 #, c-format msgid "could not open TOC file \"%s\": %s\n" msgstr "não pôde abrir arquivo TOC \"%s\": %s\n" -#: pg_backup_archiver.c:1352 +#: pg_backup_archiver.c:1422 #, c-format msgid "WARNING: line ignored: %s\n" msgstr "AVISO: linha ignorada: %s\n" -#: pg_backup_archiver.c:1359 +#: pg_backup_archiver.c:1429 #, c-format msgid "could not find entry for ID %d\n" msgstr "não pôde encontrar registro para ID %d\n" -#: pg_backup_archiver.c:1380 pg_backup_directory.c:230 -#: pg_backup_directory.c:597 +#: pg_backup_archiver.c:1450 pg_backup_directory.c:230 +#: pg_backup_directory.c:601 #, c-format msgid "could not close TOC file: %s\n" msgstr "não pôde fechar arquivo TOC: %s\n" -#: pg_backup_archiver.c:1489 pg_backup_custom.c:162 pg_backup_directory.c:341 -#: pg_backup_directory.c:583 pg_backup_directory.c:641 -#: pg_backup_directory.c:661 +#: pg_backup_archiver.c:1559 pg_backup_custom.c:162 pg_backup_directory.c:341 +#: pg_backup_directory.c:587 pg_backup_directory.c:645 +#: pg_backup_directory.c:665 #, c-format msgid "could not open output file \"%s\": %s\n" msgstr "não pôde abrir arquivo de saída \"%s\": %s\n" -#: pg_backup_archiver.c:1492 pg_backup_custom.c:169 +#: pg_backup_archiver.c:1562 pg_backup_custom.c:169 #, c-format msgid "could not open output file: %s\n" msgstr "não pôde abrir arquivo de saída: %s\n" -#: pg_backup_archiver.c:1598 +#: pg_backup_archiver.c:1668 #, c-format msgid "wrote %lu byte of large object data (result = %lu)\n" msgid_plural "wrote %lu bytes of large object data (result = %lu)\n" msgstr[0] "escreveu %lu byte de dados de objeto grande (resultado = %lu)\n" msgstr[1] "escreveu %lu bytes de dados de objeto grande (resultado = %lu)\n" -#: pg_backup_archiver.c:1604 +#: pg_backup_archiver.c:1674 #, c-format msgid "could not write to large object (result: %lu, expected: %lu)\n" msgstr "não pôde escrever objeto grande (resultado: %lu, esperado %lu)\n" -#: pg_backup_archiver.c:1697 +#: pg_backup_archiver.c:1767 #, c-format msgid "Error while INITIALIZING:\n" msgstr "Erro ao INICIALIZAR:\n" -#: pg_backup_archiver.c:1702 +#: pg_backup_archiver.c:1772 #, c-format msgid "Error while PROCESSING TOC:\n" msgstr "Erro ao PROCESSAR TOC:\n" -#: pg_backup_archiver.c:1707 +#: pg_backup_archiver.c:1777 #, c-format msgid "Error while FINALIZING:\n" msgstr "Erro ao FINALIZAR:\n" -#: pg_backup_archiver.c:1712 +#: pg_backup_archiver.c:1782 #, c-format msgid "Error from TOC entry %d; %u %u %s %s %s\n" msgstr "Erro no registro do TOC %d; %u %u %s %s %s\n" -#: pg_backup_archiver.c:1785 +#: pg_backup_archiver.c:1855 #, c-format msgid "bad dumpId\n" msgstr "dumpId inválido\n" -#: pg_backup_archiver.c:1806 +#: pg_backup_archiver.c:1876 #, c-format msgid "bad table dumpId for TABLE DATA item\n" msgstr "dumpId de tabela inválido para item TABLE DATA\n" -#: pg_backup_archiver.c:1898 +#: pg_backup_archiver.c:1968 #, c-format msgid "unexpected data offset flag %d\n" msgstr "Marcador de deslocamento de dado %d é inesperado\n" -#: pg_backup_archiver.c:1911 +#: pg_backup_archiver.c:1981 #, c-format msgid "file offset in dump file is too large\n" msgstr "deslocamento no arquivo de cópia de segurança é muito grande\n" -#: pg_backup_archiver.c:2024 +#: pg_backup_archiver.c:2094 #, c-format msgid "attempting to ascertain archive format\n" msgstr "tentando verificar formato de arquivo\n" -#: pg_backup_archiver.c:2050 pg_backup_archiver.c:2060 +#: pg_backup_archiver.c:2120 pg_backup_archiver.c:2130 #, c-format msgid "directory name too long: \"%s\"\n" msgstr "nome de diretório é muito longo: \"%s\"\n" -#: pg_backup_archiver.c:2068 +#: pg_backup_archiver.c:2138 #, c-format msgid "directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not exist)\n" msgstr "diretório \"%s\" não parece ser um archive válido (\"toc.dat\" não existe)\n" -#: pg_backup_archiver.c:2076 pg_backup_custom.c:181 pg_backup_custom.c:770 -#: pg_backup_directory.c:214 pg_backup_directory.c:399 +#: pg_backup_archiver.c:2146 pg_backup_custom.c:181 pg_backup_custom.c:770 +#: pg_backup_directory.c:214 pg_backup_directory.c:401 #, c-format msgid "could not open input file \"%s\": %s\n" msgstr "não pôde abrir arquivo de entrada \"%s\": %s\n" -#: pg_backup_archiver.c:2084 pg_backup_custom.c:188 +#: pg_backup_archiver.c:2154 pg_backup_custom.c:188 #, c-format msgid "could not open input file: %s\n" msgstr "não pôde abrir arquivo de entrada: %s\n" -#: pg_backup_archiver.c:2091 +#: pg_backup_archiver.c:2161 #, c-format msgid "could not read input file: %s\n" msgstr "não pôde ler arquivo de entrada: %s\n" -#: pg_backup_archiver.c:2093 +#: pg_backup_archiver.c:2163 #, c-format msgid "input file is too short (read %lu, expected 5)\n" msgstr "arquivo de entrada é muito pequeno (lido %lu, esperado 5)\n" -#: pg_backup_archiver.c:2176 +#: pg_backup_archiver.c:2246 #, c-format msgid "input file appears to be a text format dump. Please use psql.\n" msgstr "arquivo de entrada parece estar no formato texto. Por favor utilize o psql.\n" -#: pg_backup_archiver.c:2182 +#: pg_backup_archiver.c:2252 #, c-format msgid "input file does not appear to be a valid archive (too short?)\n" msgstr "arquivo de entrada não parece ser um arquivo válido (muito pequeno?)\n" -#: pg_backup_archiver.c:2188 +#: pg_backup_archiver.c:2258 #, c-format msgid "input file does not appear to be a valid archive\n" msgstr "arquivo de entrada não parece ser um arquivo válido\n" -#: pg_backup_archiver.c:2208 +#: pg_backup_archiver.c:2278 #, c-format msgid "could not close input file: %s\n" msgstr "não pôde fechar arquivo de entrada: %s\n" -#: pg_backup_archiver.c:2225 +#: pg_backup_archiver.c:2295 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "alocando AH para %s, formato %d\n" -#: pg_backup_archiver.c:2330 +#: pg_backup_archiver.c:2400 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "formato de arquivo \"%d\" é desconhecido\n" -#: pg_backup_archiver.c:2486 +#: pg_backup_archiver.c:2556 #, c-format msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" msgstr "ID do registro %d fora do intervalo -- talvez o TOC esteja corrompido\n" -#: pg_backup_archiver.c:2602 +#: pg_backup_archiver.c:2672 #, c-format msgid "read TOC entry %d (ID %d) for %s %s\n" msgstr "lendo registro do TOC %d (ID %d) de %s %s\n" -#: pg_backup_archiver.c:2636 +#: pg_backup_archiver.c:2706 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "codificação \"%s\" é desconhecida\n" -#: pg_backup_archiver.c:2641 +#: pg_backup_archiver.c:2711 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "item ENCODING inválido: %s\n" -#: pg_backup_archiver.c:2659 +#: pg_backup_archiver.c:2729 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "item STDSTRINGS inválido: %s\n" -#: pg_backup_archiver.c:2674 +#: pg_backup_archiver.c:2744 #, c-format msgid "schema \"%s\" not found\n" msgstr "esquema \"%s\" não foi encontrado\n" -#: pg_backup_archiver.c:2681 +#: pg_backup_archiver.c:2751 #, c-format msgid "table \"%s\" not found\n" msgstr "tabela \"%s\" não foi encontrada\n" -#: pg_backup_archiver.c:2688 +#: pg_backup_archiver.c:2758 #, c-format msgid "index \"%s\" not found\n" msgstr "índice \"%s\" não foi encontrado\n" -#: pg_backup_archiver.c:2695 +#: pg_backup_archiver.c:2765 #, c-format msgid "function \"%s\" not found\n" msgstr "função \"%s\" não foi encontrada\n" -#: pg_backup_archiver.c:2702 +#: pg_backup_archiver.c:2772 #, c-format msgid "trigger \"%s\" not found\n" msgstr "gatilho \"%s\" não foi encontrado\n" -#: pg_backup_archiver.c:2934 +#: pg_backup_archiver.c:3036 #, c-format msgid "could not set session user to \"%s\": %s" msgstr "não pôde definir \"%s\" como usuário da sessão: %s" -#: pg_backup_archiver.c:2966 +#: pg_backup_archiver.c:3068 #, c-format msgid "could not set default_with_oids: %s" msgstr "não pôde definir default_with_oids: %s" -#: pg_backup_archiver.c:3111 +#: pg_backup_archiver.c:3213 #, c-format msgid "could not set search_path to \"%s\": %s" msgstr "não pôde definir search_path para \"%s\": %s" -#: pg_backup_archiver.c:3173 +#: pg_backup_archiver.c:3275 #, c-format msgid "could not set default_tablespace to %s: %s" msgstr "não pôde definir default_tablespace para %s: %s" -#: pg_backup_archiver.c:3260 pg_backup_archiver.c:3454 +#: pg_backup_archiver.c:3363 pg_backup_archiver.c:3553 #, c-format -msgid "WARNING: don't know how to set owner for object type %s\n" -msgstr "AVISO: não se sabe como definir o dono para tipo de objeto %s\n" +msgid "WARNING: don't know how to set owner for object type \"%s\"\n" +msgstr "AVISO: não se sabe como definir o dono para tipo de objeto \"%s\"\n" -#: pg_backup_archiver.c:3536 +#: pg_backup_archiver.c:3639 #, c-format msgid "did not find magic string in file header\n" msgstr "não encontrou cadeia de caracteres mágica no cabeçalho do arquivo\n" -#: pg_backup_archiver.c:3549 +#: pg_backup_archiver.c:3652 #, c-format msgid "unsupported version (%d.%d) in file header\n" msgstr "versão não é suportada (%d.%d) no cabeçalho do arquivo\n" -#: pg_backup_archiver.c:3554 +#: pg_backup_archiver.c:3657 #, c-format msgid "sanity check on integer size (%lu) failed\n" msgstr "verificação de sanidade no tamanho do inteiro (%lu) falhou\n" -#: pg_backup_archiver.c:3558 +#: pg_backup_archiver.c:3661 #, c-format msgid "WARNING: archive was made on a machine with larger integers, some operations might fail\n" msgstr "AVISO: arquivo foi feito em uma máquina com inteiros longos, algumas operações podem falhar\n" -#: pg_backup_archiver.c:3568 +#: pg_backup_archiver.c:3671 #, c-format msgid "expected format (%d) differs from format found in file (%d)\n" msgstr "formato esperado (%d) difere do formato encontrado no arquivo (%d)\n" -#: pg_backup_archiver.c:3584 +#: pg_backup_archiver.c:3687 #, c-format msgid "WARNING: archive is compressed, but this installation does not support compression -- no data will be available\n" msgstr "AVISO: arquivo está comprimido, mas esta instalação não suporta compressão -- nenhum dado está disponível\n" -#: pg_backup_archiver.c:3602 +#: pg_backup_archiver.c:3705 #, c-format msgid "WARNING: invalid creation date in header\n" msgstr "AVISO: data de criação inválida no cabeçalho\n" -#: pg_backup_archiver.c:3677 +#: pg_backup_archiver.c:3778 #, c-format msgid "entering restore_toc_entries_prefork\n" msgstr "executando restore_toc_entries_prefork\n" -#: pg_backup_archiver.c:3721 +#: pg_backup_archiver.c:3841 #, c-format msgid "processing item %d %s %s\n" msgstr "processando item %d %s %s\n" -#: pg_backup_archiver.c:3773 +#: pg_backup_archiver.c:3895 #, c-format msgid "entering restore_toc_entries_parallel\n" msgstr "executando restore_toc_entries_parallel\n" -#: pg_backup_archiver.c:3821 +#: pg_backup_archiver.c:3916 #, c-format msgid "entering main parallel loop\n" msgstr "executando laço paralelo principal\n" -#: pg_backup_archiver.c:3832 +#: pg_backup_archiver.c:3927 #, c-format msgid "skipping item %d %s %s\n" msgstr "ignorando item %d %s %s\n" -#: pg_backup_archiver.c:3842 +#: pg_backup_archiver.c:3937 #, c-format msgid "launching item %d %s %s\n" msgstr "iniciando item %d %s %s\n" -#: pg_backup_archiver.c:3898 +#: pg_backup_archiver.c:4018 #, c-format msgid "finished main parallel loop\n" msgstr "laço paralelo principal terminado\n" -#: pg_backup_archiver.c:3907 +#: pg_backup_archiver.c:4036 #, c-format msgid "entering restore_toc_entries_postfork\n" msgstr "executando restore_toc_entries_postfork\n" -#: pg_backup_archiver.c:3926 +#: pg_backup_archiver.c:4056 #, c-format msgid "processing missed item %d %s %s\n" msgstr "iniciando item adiado %d %s %s\n" -#: pg_backup_archiver.c:4075 +#: pg_backup_archiver.c:4233 #, c-format msgid "no item ready\n" msgstr "nenhum item está pronto\n" -#: pg_backup_archiver.c:4123 +#: pg_backup_archiver.c:4281 #, c-format msgid "could not find slot of finished worker\n" msgstr "não pôde encontrar entrada do processo filho terminado\n" -#: pg_backup_archiver.c:4125 +#: pg_backup_archiver.c:4283 #, c-format msgid "finished item %d %s %s\n" msgstr "item terminado %d %s %s\n" -#: pg_backup_archiver.c:4138 +#: pg_backup_archiver.c:4296 #, c-format msgid "worker process failed: exit code %d\n" msgstr "processo filho falhou: código de saída %d\n" -#: pg_backup_archiver.c:4300 +#: pg_backup_archiver.c:4458 #, c-format msgid "transferring dependency %d -> %d to %d\n" msgstr "tranferindo dependência %d -> %d para %d\n" -#: pg_backup_archiver.c:4373 +#: pg_backup_archiver.c:4531 #, c-format msgid "reducing dependencies for %d\n" msgstr "reduzindo dependências para %d\n" -#: pg_backup_archiver.c:4412 +#: pg_backup_archiver.c:4579 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "tabela \"%s\" não pôde ser criada, não restaurará os seus dados\n" @@ -965,7 +960,7 @@ msgid "unrecognized data block type %d while restoring archive\n" msgstr "tipo de bloco de dados desconhecido %d durante restauração do arquivo\n" #: pg_backup_custom.c:709 pg_backup_custom.c:759 pg_backup_custom.c:908 -#: pg_backup_tar.c:1088 +#: pg_backup_tar.c:1100 #, c-format msgid "could not determine seek position in archive file: %s\n" msgstr "não pôde determinar posição de busca no arquivo: %s\n" @@ -1015,12 +1010,12 @@ msgstr "arquivador (bd)" msgid "could not get server_version from libpq\n" msgstr "não pôde obter versão do servidor a partir da libpq\n" -#: pg_backup_db.c:58 pg_dumpall.c:2067 +#: pg_backup_db.c:58 pg_dumpall.c:2068 #, c-format msgid "server version: %s; %s version: %s\n" msgstr "versão do servidor: %s; versão do %s: %s\n" -#: pg_backup_db.c:60 pg_dumpall.c:2069 +#: pg_backup_db.c:60 pg_dumpall.c:2070 #, c-format msgid "aborting because of server version mismatch\n" msgstr "interrompendo porque a versão do servidor não corresponde\n" @@ -1031,7 +1026,7 @@ msgid "connecting to database \"%s\" as user \"%s\"\n" msgstr "conectando ao banco de dados \"%s\" como usuário \"%s\"\n" #: pg_backup_db.c:156 pg_backup_db.c:208 pg_backup_db.c:270 pg_backup_db.c:312 -#: pg_dumpall.c:1893 pg_dumpall.c:2005 +#: pg_dumpall.c:1894 pg_dumpall.c:2006 msgid "Password: " msgstr "Senha: " @@ -1111,7 +1106,7 @@ msgstr "erro retornado pelo PQputCopyEnd: %s" msgid "COPY failed for table \"%s\": %s" msgstr "COPY falhou para tabela \"%s\": %s" -#: pg_backup_db.c:657 pg_dump.c:1787 +#: pg_backup_db.c:657 pg_dump.c:1814 #, c-format msgid "WARNING: unexpected extra results during COPY of table \"%s\"\n" msgstr "AVISO: resultados extra inesperados durante COPY da tabela \"%s\"\n" @@ -1149,42 +1144,48 @@ msgstr "não pôde fechar diretório \"%s\": %s\n" msgid "could not create directory \"%s\": %s\n" msgstr "não pôde criar diretório \"%s\": %s\n" -#: pg_backup_directory.c:412 +#: pg_backup_directory.c:360 pg_backup_directory.c:500 +#: pg_backup_directory.c:530 +#, c-format +msgid "could not write to output file: %s\n" +msgstr "não pôde escrever em arquivo de saída: %s\n" + +#: pg_backup_directory.c:414 #, c-format msgid "could not close data file: %s\n" msgstr "não pôde fechar arquivo de dados: %s\n" -#: pg_backup_directory.c:453 +#: pg_backup_directory.c:455 #, c-format msgid "could not open large object TOC file \"%s\" for input: %s\n" msgstr "não pôde abrir arquivo TOC de objetos grandes \"%s\" para entrada: %s\n" -#: pg_backup_directory.c:464 +#: pg_backup_directory.c:466 #, c-format msgid "invalid line in large object TOC file \"%s\": \"%s\"\n" msgstr "linha inválida em arquivo TOC de objetos grandes \"%s\": \"%s\"\n" -#: pg_backup_directory.c:473 +#: pg_backup_directory.c:475 #, c-format msgid "error reading large object TOC file \"%s\"\n" msgstr "erro ao ler arquivo TOC de objetos grandes \"%s\"\n" -#: pg_backup_directory.c:477 +#: pg_backup_directory.c:479 #, c-format msgid "could not close large object TOC file \"%s\": %s\n" msgstr "não pôde fechar arquivo TOC de objetos grandes \"%s\": %s\n" -#: pg_backup_directory.c:684 +#: pg_backup_directory.c:688 #, c-format msgid "could not write to blobs TOC file\n" msgstr "não pôde escrever em arquivo TOC de objetos grandes\n" -#: pg_backup_directory.c:716 +#: pg_backup_directory.c:720 #, c-format msgid "file name too long: \"%s\"\n" msgstr "nome de arquivo muito longo: \"%s\"\n" -#: pg_backup_directory.c:802 +#: pg_backup_directory.c:806 #, c-format msgid "error during backup\n" msgstr "erro durante cópia de segurança\n" @@ -1244,69 +1245,69 @@ msgstr "não pôde abrir arquivo temporário\n" msgid "could not close tar member\n" msgstr "não pôde fechar membro tar\n" -#: pg_backup_tar.c:571 +#: pg_backup_tar.c:583 #, c-format msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" msgstr "erro interno -- th e fh não foram especificados em tarReadRaw()\n" -#: pg_backup_tar.c:694 +#: pg_backup_tar.c:706 #, c-format msgid "unexpected COPY statement syntax: \"%s\"\n" msgstr "sintaxe do comando COPY inesperada: \"%s\"\n" -#: pg_backup_tar.c:960 +#: pg_backup_tar.c:972 #, c-format msgid "invalid OID for large object (%u)\n" msgstr "OID inválido para objeto grande (%u)\n" -#: pg_backup_tar.c:1104 +#: pg_backup_tar.c:1116 #, c-format msgid "could not close temporary file: %s\n" msgstr "não pôde fechar arquivo temporário: %s\n" -#: pg_backup_tar.c:1114 +#: pg_backup_tar.c:1126 #, c-format msgid "actual file length (%s) does not match expected (%s)\n" msgstr "tamanho do arquivo atual (%s) não corresponde ao esperado (%s)\n" -#: pg_backup_tar.c:1151 +#: pg_backup_tar.c:1163 #, c-format msgid "moving from position %s to next member at file position %s\n" msgstr "movendo da posição %s para próximo membro na posição %s do arquivo\n" -#: pg_backup_tar.c:1162 +#: pg_backup_tar.c:1174 #, c-format msgid "now at file position %s\n" msgstr "agora na posição %s do arquivo\n" -#: pg_backup_tar.c:1171 pg_backup_tar.c:1201 +#: pg_backup_tar.c:1183 pg_backup_tar.c:1213 #, c-format msgid "could not find header for file \"%s\" in tar archive\n" msgstr "não pôde encontrar cabeçalho do arquivo \"%s\" no arquivo tar\n" -#: pg_backup_tar.c:1185 +#: pg_backup_tar.c:1197 #, c-format msgid "skipping tar member %s\n" msgstr "ignorando membro tar %s\n" -#: pg_backup_tar.c:1189 +#: pg_backup_tar.c:1201 #, c-format msgid "restoring data out of order is not supported in this archive format: \"%s\" is required, but comes before \"%s\" in the archive file.\n" msgstr "restaurar dados fora da ordem não é suportado neste formato de arquivo: \"%s\" é requerido, mas vem antes de \"%s\" no arquivo.\n" -#: pg_backup_tar.c:1235 +#: pg_backup_tar.c:1247 #, c-format msgid "incomplete tar header found (%lu byte)\n" msgid_plural "incomplete tar header found (%lu bytes)\n" msgstr[0] "cabeçalho tar incompleto encontrado (%lu byte)\n" msgstr[1] "cabeçalho tar incompleto encontrado (%lu bytes)\n" -#: pg_backup_tar.c:1276 +#: pg_backup_tar.c:1288 #, c-format msgid "TOC Entry %s at %s (length %s, checksum %d)\n" msgstr "Registro TOC %s em %s (tamanho %s, soma de verificação %d)\n" -#: pg_backup_tar.c:1287 +#: pg_backup_tar.c:1299 #, c-format msgid "corrupt tar header found in %s (expected %d, computed %d) file position %s\n" msgstr "cabeçalho tar corrompido foi encontrado em %s (esperado %d, computado %d) na posição %s do arquivo\n" @@ -1316,7 +1317,7 @@ msgstr "cabeçalho tar corrompido foi encontrado em %s (esperado %d, computado % msgid "%s: unrecognized section name: \"%s\"\n" msgstr "%s: nome de seção desconhecido: \"%s\"\n" -#: pg_backup_utils.c:56 pg_dump.c:533 pg_dump.c:550 pg_dumpall.c:299 +#: pg_backup_utils.c:56 pg_dump.c:536 pg_dump.c:553 pg_dumpall.c:299 #: pg_dumpall.c:309 pg_dumpall.c:319 pg_dumpall.c:328 pg_dumpall.c:344 #: pg_dumpall.c:402 pg_restore.c:279 pg_restore.c:295 pg_restore.c:307 #, c-format @@ -1328,57 +1329,57 @@ msgstr "Tente \"%s --help\" para obter informações adicionais.\n" msgid "out of on_exit_nicely slots\n" msgstr "acabaram os elementos para on_exit_nicely\n" -#: pg_dump.c:503 +#: pg_dump.c:506 #, c-format msgid "compression level must be in range 0..9\n" msgstr "nível de compressão deve estar no intervalo de 0..9\n" -#: pg_dump.c:548 pg_dumpall.c:307 pg_restore.c:293 +#: pg_dump.c:551 pg_dumpall.c:307 pg_restore.c:293 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: muitos argumentos de linha de comando (primeiro é \"%s\")\n" -#: pg_dump.c:561 +#: pg_dump.c:564 #, c-format msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "opções -s/--schema-only e -a/--data-only não podem ser utilizadas juntas\n" -#: pg_dump.c:567 +#: pg_dump.c:570 #, c-format msgid "options -c/--clean and -a/--data-only cannot be used together\n" msgstr "opções -c/--clean e -a/--data-only não podem ser utilizadas juntas\n" -#: pg_dump.c:573 +#: pg_dump.c:576 #, c-format msgid "options --inserts/--column-inserts and -o/--oids cannot be used together\n" msgstr "opções --inserts/--column-inserts e -o/--oids não podem ser utilizadas juntas\n" -#: pg_dump.c:574 +#: pg_dump.c:577 #, c-format msgid "(The INSERT command cannot set OIDs.)\n" msgstr "(O comando INSERT não pode definir OIDs.)\n" -#: pg_dump.c:579 +#: pg_dump.c:582 #, c-format msgid "option --if-exists requires option -c/--clean\n" msgstr "opção --if-exists requer opção -c/--clean\n" -#: pg_dump.c:601 +#: pg_dump.c:604 #, c-format msgid "WARNING: requested compression not available in this installation -- archive will be uncompressed\n" msgstr "AVISO: compressão requerida não está disponível nesta instalação -- arquivo será descomprimido\n" -#: pg_dump.c:616 +#: pg_dump.c:619 #, c-format -msgid "%s: invalid number of parallel jobs\n" -msgstr "%s: número de tarefas paralelas inválido\n" +msgid "invalid number of parallel jobs\n" +msgstr "número de tarefas paralelas inválido\n" -#: pg_dump.c:620 +#: pg_dump.c:623 #, c-format msgid "parallel backup only supported by the directory format\n" msgstr "cópia de segurança paralela somente é suportada pelo formato diretório\n" -#: pg_dump.c:677 +#: pg_dump.c:680 #, c-format msgid "" "Synchronized snapshots are not supported by this server version.\n" @@ -1389,27 +1390,27 @@ msgstr "" "Execute com --no-synchronized-snapshots se você não precisa de\n" "instantâneos sincronizados.\n" -#: pg_dump.c:684 +#: pg_dump.c:687 #, c-format msgid "Exported snapshots are not supported by this server version.\n" msgstr "Instantâneos exportados não são suportados por esta versão do servidor.\n" -#: pg_dump.c:695 +#: pg_dump.c:706 #, c-format msgid "last built-in OID is %u\n" msgstr "último OID interno é %u\n" -#: pg_dump.c:705 +#: pg_dump.c:715 #, c-format msgid "no matching schemas were found\n" msgstr "nenhum esquema correspondente foi encontrado\n" -#: pg_dump.c:719 +#: pg_dump.c:729 #, c-format msgid "no matching tables were found\n" msgstr "nenhuma tabela correspondente foi encontrada\n" -#: pg_dump.c:878 +#: pg_dump.c:897 #, c-format msgid "" "%s dumps a database as a text file or to other formats.\n" @@ -1418,17 +1419,17 @@ msgstr "" "%s salva um banco de dados em um arquivo texto ou em outros formatos.\n" "\n" -#: pg_dump.c:879 pg_dumpall.c:547 pg_restore.c:437 +#: pg_dump.c:898 pg_dumpall.c:547 pg_restore.c:443 #, c-format msgid "Usage:\n" msgstr "Uso:\n" -#: pg_dump.c:880 +#: pg_dump.c:899 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [OPÇÃO]... [NOMEBD]\n" -#: pg_dump.c:882 pg_dumpall.c:550 pg_restore.c:440 +#: pg_dump.c:901 pg_dumpall.c:550 pg_restore.c:446 #, c-format msgid "" "\n" @@ -1437,12 +1438,12 @@ msgstr "" "\n" "Opções gerais:\n" -#: pg_dump.c:883 +#: pg_dump.c:902 #, c-format msgid " -f, --file=FILENAME output file or directory name\n" msgstr " -f, --file=ARQUIVO nome do arquivo ou diretório de saída\n" -#: pg_dump.c:884 +#: pg_dump.c:903 #, c-format msgid "" " -F, --format=c|d|t|p output file format (custom, directory, tar,\n" @@ -1451,37 +1452,37 @@ msgstr "" " -F, --format=c|d|t|p formato do arquivo de saída (personalizado, diretório,\n" " tar, texto (padrão))\n" -#: pg_dump.c:886 +#: pg_dump.c:905 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to dump\n" msgstr " -j, --jobs=NUM use esse número de tarefas paralelas para copiar\n" -#: pg_dump.c:887 +#: pg_dump.c:906 pg_dumpall.c:552 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose modo informações detalhadas\n" -#: pg_dump.c:888 pg_dumpall.c:552 +#: pg_dump.c:907 pg_dumpall.c:553 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version mostra informação sobre a versão e termina\n" -#: pg_dump.c:889 +#: pg_dump.c:908 #, c-format msgid " -Z, --compress=0-9 compression level for compressed formats\n" msgstr " -Z, --compress=0-9 nível de compressão para formatos comprimidos\n" -#: pg_dump.c:890 pg_dumpall.c:553 +#: pg_dump.c:909 pg_dumpall.c:554 #, c-format msgid " --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" msgstr " --lock-wait-timeout=TEMPO falha após esperar TEMPO por um travamento de tabela\n" -#: pg_dump.c:891 pg_dumpall.c:554 +#: pg_dump.c:910 pg_dumpall.c:555 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help mostra essa ajuda e termina\n" -#: pg_dump.c:893 pg_dumpall.c:555 +#: pg_dump.c:912 pg_dumpall.c:556 #, c-format msgid "" "\n" @@ -1490,47 +1491,47 @@ msgstr "" "\n" "Opções que controlam a saída do conteúdo:\n" -#: pg_dump.c:894 pg_dumpall.c:556 +#: pg_dump.c:913 pg_dumpall.c:557 #, c-format msgid " -a, --data-only dump only the data, not the schema\n" msgstr " -a, --data-only copia somente os dados, não o esquema\n" -#: pg_dump.c:895 +#: pg_dump.c:914 #, c-format msgid " -b, --blobs include large objects in dump\n" msgstr " -b, --blobs inclui objetos grandes na cópia de segurança\n" -#: pg_dump.c:896 pg_restore.c:451 +#: pg_dump.c:915 pg_restore.c:457 #, c-format msgid " -c, --clean clean (drop) database objects before recreating\n" msgstr " -c, --clean exclui (remove) bancos de dados antes de criá-lo novamente\n" -#: pg_dump.c:897 +#: pg_dump.c:916 #, c-format msgid " -C, --create include commands to create database in dump\n" msgstr " -C, --create inclui comandos para criação dos bancos de dados na cópia de segurança\n" -#: pg_dump.c:898 +#: pg_dump.c:917 #, c-format msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" msgstr " -E, --encoding=CODIFICAÇÃO copia dados na codificação CODIFICAÇÃO\n" -#: pg_dump.c:899 +#: pg_dump.c:918 #, c-format msgid " -n, --schema=SCHEMA dump the named schema(s) only\n" msgstr " -n, --schema=ESQUEMA copia somente o(s) esquema(s) especificado(s)\n" -#: pg_dump.c:900 +#: pg_dump.c:919 #, c-format msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n" msgstr " -N, --exclude-schema=ESQUEMA NÃO copia o(s) esquema(s) especificado(s)\n" -#: pg_dump.c:901 pg_dumpall.c:559 +#: pg_dump.c:920 pg_dumpall.c:560 #, c-format msgid " -o, --oids include OIDs in dump\n" msgstr " -o, --oids inclui OIDs na cópia de segurança\n" -#: pg_dump.c:902 +#: pg_dump.c:921 #, c-format msgid "" " -O, --no-owner skip restoration of object ownership in\n" @@ -1539,52 +1540,52 @@ msgstr "" " -O, --no-owner ignora restauração do dono dos objetos\n" " no formato texto\n" -#: pg_dump.c:904 pg_dumpall.c:562 +#: pg_dump.c:923 pg_dumpall.c:563 #, c-format msgid " -s, --schema-only dump only the schema, no data\n" msgstr " -s, --schema-only copia somente o esquema, e não os dados\n" -#: pg_dump.c:905 +#: pg_dump.c:924 #, c-format msgid " -S, --superuser=NAME superuser user name to use in plain-text format\n" msgstr " -S, --superuser=NOME nome de super-usuário a ser usado no formato texto\n" -#: pg_dump.c:906 +#: pg_dump.c:925 #, c-format msgid " -t, --table=TABLE dump the named table(s) only\n" msgstr " -t, --table=TABELA copia somente a(s) tabela(s) especificada(s)\n" -#: pg_dump.c:907 +#: pg_dump.c:926 #, c-format msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n" msgstr " -T, --exclude-table=TABELA NÃO copia a(s) tabela(s) especificada(s)\n" -#: pg_dump.c:908 pg_dumpall.c:565 +#: pg_dump.c:927 pg_dumpall.c:566 #, c-format msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" msgstr " -x, --no-privileges não copia os privilégios (grant/revoke)\n" -#: pg_dump.c:909 pg_dumpall.c:566 +#: pg_dump.c:928 pg_dumpall.c:567 #, c-format msgid " --binary-upgrade for use by upgrade utilities only\n" msgstr " --binary-upgrade usado somente por utilitários de atualização\n" -#: pg_dump.c:910 pg_dumpall.c:567 +#: pg_dump.c:929 pg_dumpall.c:568 #, c-format msgid " --column-inserts dump data as INSERT commands with column names\n" msgstr " --column-inserts copia dados utilizando comandos INSERT com nomes das colunas\n" -#: pg_dump.c:911 pg_dumpall.c:568 +#: pg_dump.c:930 pg_dumpall.c:569 #, c-format msgid " --disable-dollar-quoting disable dollar quoting, use SQL standard quoting\n" msgstr " --disable-dollar-quoting desabilita delimitação por cifrão, usa delimitadores do padrão SQL\n" -#: pg_dump.c:912 pg_dumpall.c:569 pg_restore.c:467 +#: pg_dump.c:931 pg_dumpall.c:570 pg_restore.c:473 #, c-format msgid " --disable-triggers disable triggers during data-only restore\n" msgstr " --disable-triggers desabilita gatilhos durante a restauração do tipo somente dados\n" -#: pg_dump.c:913 +#: pg_dump.c:932 #, c-format msgid "" " --enable-row-security enable row security (dump only content user has\n" @@ -1593,62 +1594,62 @@ msgstr "" " --enable-row-security habilita segurança de registros (copia somente conteúdo\n" " que usuário tenha acesso)\n" -#: pg_dump.c:915 +#: pg_dump.c:934 #, c-format msgid " --exclude-table-data=TABLE do NOT dump data for the named table(s)\n" msgstr " --exclude-table-data=TABELA NÃO copia os dados da(s) tabela(s) especificada(s)\n" -#: pg_dump.c:916 pg_dumpall.c:570 pg_restore.c:469 +#: pg_dump.c:935 pg_dumpall.c:571 pg_restore.c:475 #, c-format msgid " --if-exists use IF EXISTS when dropping objects\n" msgstr " --if-exists use IF EXISTS ao remover objetos\n" -#: pg_dump.c:917 pg_dumpall.c:571 +#: pg_dump.c:936 pg_dumpall.c:572 #, c-format msgid " --inserts dump data as INSERT commands, rather than COPY\n" msgstr " --inserts copia dados utilizando comandos INSERT, ao invés de comandos COPY\n" -#: pg_dump.c:918 pg_dumpall.c:572 +#: pg_dump.c:937 pg_dumpall.c:573 #, c-format msgid " --no-security-labels do not dump security label assignments\n" msgstr " --no-security-labels não copia atribuições de rótulos de segurança\n" -#: pg_dump.c:919 +#: pg_dump.c:938 #, c-format msgid " --no-synchronized-snapshots do not use synchronized snapshots in parallel jobs\n" msgstr " --no-synchronized-snapshots não utiliza instantâneos sincronizados em tarefas paralelas\n" -#: pg_dump.c:920 pg_dumpall.c:573 +#: pg_dump.c:939 pg_dumpall.c:574 #, c-format msgid " --no-tablespaces do not dump tablespace assignments\n" msgstr " --no-tablespaces não copia atribuições de tablespaces\n" -#: pg_dump.c:921 pg_dumpall.c:574 +#: pg_dump.c:940 pg_dumpall.c:575 #, c-format msgid " --no-unlogged-table-data do not dump unlogged table data\n" msgstr " --no-unlogged-table-data não copia dados de tabelas unlogged\n" -#: pg_dump.c:922 pg_dumpall.c:575 +#: pg_dump.c:941 pg_dumpall.c:576 #, c-format msgid " --quote-all-identifiers quote all identifiers, even if not key words\n" msgstr " --quote-all-identifiers todos os identificadores entre aspas, mesmo que não sejam palavras chave\n" -#: pg_dump.c:923 +#: pg_dump.c:942 #, c-format msgid " --section=SECTION dump named section (pre-data, data, or post-data)\n" msgstr " --section=SEÇÃO copia seção especificada (pre-data, data ou post-data)\n" -#: pg_dump.c:924 +#: pg_dump.c:943 #, c-format msgid " --serializable-deferrable wait until the dump can run without anomalies\n" msgstr " --serializable-deferrable espera até que a cópia seja executada sem anomalias\n" -#: pg_dump.c:925 +#: pg_dump.c:944 #, c-format msgid " --snapshot=SNAPSHOT use given snapshot for the dump\n" msgstr " --snapshot=INSTANTÂNEO utiliza instantâneo informado para a cópia\n" -#: pg_dump.c:926 pg_restore.c:475 +#: pg_dump.c:945 pg_restore.c:481 #, c-format msgid "" " --strict-names require table and/or schema include patterns to\n" @@ -1657,7 +1658,7 @@ msgstr "" " --strict-names requer tabela e/ou esquema incluir padrões que\n" " correspondem pelo menos a uma entidade de cada\n" -#: pg_dump.c:928 pg_dumpall.c:576 pg_restore.c:477 +#: pg_dump.c:947 pg_dumpall.c:577 pg_restore.c:483 #, c-format msgid "" " --use-set-session-authorization\n" @@ -1668,7 +1669,7 @@ msgstr "" " usa comandos SET SESSION AUTHORIZATION ao invés de\n" " comandos ALTER OWNER para definir o dono\n" -#: pg_dump.c:932 pg_dumpall.c:580 pg_restore.c:481 +#: pg_dump.c:951 pg_dumpall.c:581 pg_restore.c:487 #, c-format msgid "" "\n" @@ -1677,42 +1678,42 @@ msgstr "" "\n" "Opções de conexão:\n" -#: pg_dump.c:933 +#: pg_dump.c:952 #, c-format msgid " -d, --dbname=DBNAME database to dump\n" msgstr " -d, --dbname=NOMEBD banco de dados a ser copiado\n" -#: pg_dump.c:934 pg_dumpall.c:582 pg_restore.c:482 +#: pg_dump.c:953 pg_dumpall.c:583 pg_restore.c:488 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=MÃQUINA máquina do servidor de banco de dados ou diretório do soquete\n" -#: pg_dump.c:935 pg_dumpall.c:584 pg_restore.c:483 +#: pg_dump.c:954 pg_dumpall.c:585 pg_restore.c:489 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=PORTA número da porta do servidor de banco de dados\n" -#: pg_dump.c:936 pg_dumpall.c:585 pg_restore.c:484 +#: pg_dump.c:955 pg_dumpall.c:586 pg_restore.c:490 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=NOME conecta como usuário do banco de dados especificado\n" -#: pg_dump.c:937 pg_dumpall.c:586 pg_restore.c:485 +#: pg_dump.c:956 pg_dumpall.c:587 pg_restore.c:491 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password nunca pergunta senha\n" -#: pg_dump.c:938 pg_dumpall.c:587 pg_restore.c:486 +#: pg_dump.c:957 pg_dumpall.c:588 pg_restore.c:492 #, c-format msgid " -W, --password force password prompt (should happen automatically)\n" msgstr " -W, --password pergunta senha (pode ocorrer automaticamente)\n" -#: pg_dump.c:939 pg_dumpall.c:588 +#: pg_dump.c:958 pg_dumpall.c:589 #, c-format msgid " --role=ROLENAME do SET ROLE before dump\n" msgstr " --role=NOMEROLE executa SET ROLE antes da cópia de segurança\n" -#: pg_dump.c:941 +#: pg_dump.c:960 #, c-format msgid "" "\n" @@ -1725,17 +1726,17 @@ msgstr "" "PGDATABASE é utilizada.\n" "\n" -#: pg_dump.c:943 pg_dumpall.c:592 pg_restore.c:493 +#: pg_dump.c:962 pg_dumpall.c:593 pg_restore.c:499 #, c-format msgid "Report bugs to .\n" msgstr "Relate erros a .\n" -#: pg_dump.c:960 +#: pg_dump.c:979 #, c-format msgid "invalid client encoding \"%s\" specified\n" msgstr "codificação de cliente \"%s\" especificada é inválida\n" -#: pg_dump.c:1102 +#: pg_dump.c:1121 #, c-format msgid "" "Synchronized snapshots are not supported on standby servers.\n" @@ -1746,366 +1747,381 @@ msgstr "" "Execute com --no-synchronized-snapshots se você não precisa de\n" "instantâneos sincronizados.\n" -#: pg_dump.c:1171 +#: pg_dump.c:1190 #, c-format msgid "invalid output format \"%s\" specified\n" msgstr "formato de saída especificado \"%s\" é inválido\n" -#: pg_dump.c:1194 +#: pg_dump.c:1213 #, c-format msgid "server version must be at least 7.3 to use schema selection switches\n" msgstr "versão do servidor deve ser pelo menos versão 7.3 para utilizar opções com esquemas\n" -#: pg_dump.c:1212 pg_dump.c:1265 +#: pg_dump.c:1231 +#, c-format +msgid "no matching schemas were found for pattern \"%s\"\n" +msgstr "nenhum esquema correspondente foi encontrado para padrão \"%s\"\n" + +#: pg_dump.c:1284 #, c-format msgid "no matching tables were found for pattern \"%s\"\n" msgstr "nenhuma tabela correspondente foi encontrada para padrão \"%s\"\n" -#: pg_dump.c:1644 +#: pg_dump.c:1671 #, c-format msgid "dumping contents of table \"%s.%s\"\n" msgstr "copiando conteúdo da tabela \"%s.%s\"\n" -#: pg_dump.c:1768 +#: pg_dump.c:1795 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" msgstr "Cópia do conteúdo da tabela \"%s\" falhou: PQgetCopyData() falhou.\n" -#: pg_dump.c:1769 pg_dump.c:1779 +#: pg_dump.c:1796 pg_dump.c:1806 #, c-format msgid "Error message from server: %s" msgstr "Mensagem de erro do servidor: %s" -#: pg_dump.c:1770 pg_dump.c:1780 +#: pg_dump.c:1797 pg_dump.c:1807 #, c-format msgid "The command was: %s\n" msgstr "O comando foi: %s\n" -#: pg_dump.c:1778 +#: pg_dump.c:1805 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetResult() failed.\n" msgstr "Cópia do conteúdo da tabela \"%s\" falhou: PQgetResult() falhou.\n" -#: pg_dump.c:2427 +#: pg_dump.c:2454 #, c-format msgid "saving database definition\n" msgstr "salvando definição do banco de dados\n" -#: pg_dump.c:2760 +#: pg_dump.c:2788 #, c-format msgid "saving encoding = %s\n" msgstr "salvando codificação = %s\n" -#: pg_dump.c:2787 +#: pg_dump.c:2815 #, c-format msgid "saving standard_conforming_strings = %s\n" msgstr "salvando padrão de escape de cadeia de caracteres = %s\n" -#: pg_dump.c:2827 +#: pg_dump.c:2855 #, c-format msgid "reading large objects\n" msgstr "lendo objetos grandes\n" -#: pg_dump.c:3013 +#: pg_dump.c:3056 #, c-format msgid "saving large objects\n" msgstr "salvando objetos grandes\n" -#: pg_dump.c:3060 +#: pg_dump.c:3103 #, c-format msgid "error reading large object %u: %s" msgstr "erro ao ler objeto grande %u: %s" -#: pg_dump.c:3112 +#: pg_dump.c:3155 #, c-format msgid "reading row security enabled for table \"%s.%s\"\n" msgstr "lendo informação de segurança de registros da tabela \"%s.%s\"\n" -#: pg_dump.c:3143 +#: pg_dump.c:3186 #, c-format msgid "reading policies for table \"%s.%s\"\n" msgstr "lendo políticas de segurança da tabela \"%s.%s\"\n" -#: pg_dump.c:3276 +#: pg_dump.c:3319 #, c-format msgid "unexpected policy command type: \"%s\"\n" msgstr "tipo de comando da política de segurança inesperado: \"%s\"\n" -#: pg_dump.c:3495 +#: pg_dump.c:3538 #, c-format msgid "could not find parent extension for %s\n" msgstr "não pôde encontrar extensão pai para %s\n" -#: pg_dump.c:3663 +#: pg_dump.c:3731 #, c-format msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" msgstr "AVISO: dono do esquema \"%s\" parece ser inválido\n" -#: pg_dump.c:3706 +#: pg_dump.c:3774 #, c-format msgid "schema with OID %u does not exist\n" msgstr "esquema com OID %u não existe\n" -#: pg_dump.c:4121 +#: pg_dump.c:4189 #, c-format msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" msgstr "AVISO: dono do tipo de dado \"%s\" parece ser inválido\n" -#: pg_dump.c:4235 +#: pg_dump.c:4303 #, c-format msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" msgstr "AVISO: dono do operador \"%s\" parece ser inválido\n" -#: pg_dump.c:4580 +#: pg_dump.c:4648 #, c-format msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" msgstr "AVISO: dono da classe de operadores \"%s\" parece ser inválido\n" -#: pg_dump.c:4671 +#: pg_dump.c:4739 #, c-format msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" msgstr "AVISO: dono da família de operadores \"%s\" parece ser inválido\n" -#: pg_dump.c:4872 +#: pg_dump.c:4940 #, c-format msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" msgstr "AVISO: dono da função de agregação \"%s\" parece ser inválido\n" -#: pg_dump.c:5137 +#: pg_dump.c:5237 #, c-format msgid "WARNING: owner of function \"%s\" appears to be invalid\n" msgstr "AVISO: dono da função \"%s\" parece ser inválido\n" -#: pg_dump.c:5999 +#: pg_dump.c:6099 #, c-format msgid "WARNING: owner of table \"%s\" appears to be invalid\n" msgstr "AVISO: dono da tabela \"%s\" parece ser inválido\n" -#: pg_dump.c:6165 +#: pg_dump.c:6141 pg_dump.c:16665 +#, c-format +msgid "failed sanity check, parent table OID %u of sequence OID %u not found\n" +msgstr "verificação de sanidade falhou, OID %u da sequência com OID %u não foi encontrado\n" + +#: pg_dump.c:6268 #, c-format msgid "reading indexes for table \"%s.%s\"\n" msgstr "lendo índices da tabela \"%s.%s\"\n" -#: pg_dump.c:6533 +#: pg_dump.c:6636 #, c-format msgid "reading foreign key constraints for table \"%s.%s\"\n" msgstr "lendo restrições de chave estrangeira da tabela \"%s.%s\"\n" -#: pg_dump.c:6779 +#: pg_dump.c:6882 #, c-format msgid "failed sanity check, parent table OID %u of pg_rewrite entry OID %u not found\n" msgstr "verificação de sanidade falhou, OID %u da tabela pai de pg_rewrite com OID %u não foi encontrado\n" -#: pg_dump.c:6873 +#: pg_dump.c:6976 #, c-format msgid "reading triggers for table \"%s.%s\"\n" msgstr "lendo gatilhos da tabela \"%s.%s\"\n" -#: pg_dump.c:7038 +#: pg_dump.c:7141 #, c-format msgid "query produced null referenced table name for foreign key trigger \"%s\" on table \"%s\" (OID of table: %u)\n" msgstr "consulta produziu nome nulo da tabela referenciada pelo gatilho de chave estrangeira \"%s\" na tabela \"%s\" (OID da tabela: %u)\n" -#: pg_dump.c:7693 +#: pg_dump.c:7796 #, c-format msgid "finding the columns and types of table \"%s.%s\"\n" msgstr "encontrando as colunas e tipos da tabela \"%s.%s\"\n" -#: pg_dump.c:7872 +#: pg_dump.c:7975 #, c-format msgid "invalid column numbering in table \"%s\"\n" msgstr "numeração de coluna inválida para tabela \"%s\"\n" -#: pg_dump.c:7906 +#: pg_dump.c:8009 #, c-format msgid "finding default expressions of table \"%s.%s\"\n" msgstr "encontrando expressões padrão da tabela \"%s.%s\"\n" -#: pg_dump.c:7959 +#: pg_dump.c:8062 #, c-format msgid "invalid adnum value %d for table \"%s\"\n" msgstr "valor %d do número da coluna é inválido para tabela \"%s\"\n" -#: pg_dump.c:8031 +#: pg_dump.c:8134 #, c-format msgid "finding check constraints for table \"%s.%s\"\n" msgstr "encontrando restrições de verificação para tabela \"%s.%s\"\n" -#: pg_dump.c:8127 +#: pg_dump.c:8230 #, c-format msgid "expected %d check constraint on table \"%s\" but found %d\n" msgid_plural "expected %d check constraints on table \"%s\" but found %d\n" msgstr[0] "esperado %d restrição de verificação na tabela \"%s\" mas encontrou %d\n" msgstr[1] "esperado %d restrições de verificação na tabela \"%s\" mas encontrou %d\n" -#: pg_dump.c:8131 +#: pg_dump.c:8234 #, c-format msgid "(The system catalogs might be corrupted.)\n" msgstr "(O catálogo do sistema pode estar corrompido).\n" -#: pg_dump.c:9663 +#: pg_dump.c:9813 #, c-format msgid "WARNING: typtype of data type \"%s\" appears to be invalid\n" msgstr "AVISO: typtype do tipo de dado \"%s\" parece ser inválido\n" -#: pg_dump.c:11205 +#: pg_dump.c:11355 #, c-format msgid "WARNING: bogus value in proargmodes array\n" msgstr "AVISO: valor inválido na matriz proargmodes\n" -#: pg_dump.c:11583 +#: pg_dump.c:11733 #, c-format msgid "WARNING: could not parse proallargtypes array\n" msgstr "AVISO: não pôde validar matriz proallargtypes\n" -#: pg_dump.c:11599 +#: pg_dump.c:11749 #, c-format msgid "WARNING: could not parse proargmodes array\n" msgstr "AVISO: não pôde validar matriz proargmodes\n" -#: pg_dump.c:11613 +#: pg_dump.c:11763 #, c-format msgid "WARNING: could not parse proargnames array\n" msgstr "AVISO: não pôde validar matriz proargnames\n" -#: pg_dump.c:11624 +#: pg_dump.c:11774 #, c-format msgid "WARNING: could not parse proconfig array\n" msgstr "AVISO: não pôde validar matriz proconfig\n" -#: pg_dump.c:11695 +#: pg_dump.c:11845 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" msgstr "valor de provolatile desconhecido para função \"%s\"\n" -#: pg_dump.c:11739 pg_dump.c:13782 +#: pg_dump.c:11889 pg_dump.c:13950 #, c-format msgid "unrecognized proparallel value for function \"%s\"\n" msgstr "valor de proparallel desconhecido para função \"%s\"\n" -#: pg_dump.c:11891 +#: pg_dump.c:11997 pg_dump.c:12107 pg_dump.c:12114 +#, c-format +msgid "could not find function definition for function with OID %u\n" +msgstr "não foi possível encontrar definição da função para OID %u\n" + +#: pg_dump.c:12042 #, c-format msgid "WARNING: bogus value in pg_cast.castfunc or pg_cast.castmethod field\n" msgstr "AVISO: valor inválido no campo pg_cast.castfunc ou pg_cast.castmethod\n" -#: pg_dump.c:11894 +#: pg_dump.c:12045 #, c-format msgid "WARNING: bogus value in pg_cast.castmethod field\n" msgstr "AVISO: valor inválido no campo pg_cast.castmethod\n" -#: pg_dump.c:11982 +#: pg_dump.c:12135 #, c-format msgid "WARNING: bogus transform definition, at least one of trffromsql and trftosql should be nonzero\n" msgstr "AVISO: definição de transformação inválida, pelo menos um dos trffromsql e trftosql não devem ser zero\n" -#: pg_dump.c:11999 +#: pg_dump.c:12152 #, c-format msgid "WARNING: bogus value in pg_transform.trffromsql field\n" msgstr "AVISO: valor inválido no campo pg_transform.trffromsql\n" -#: pg_dump.c:12020 +#: pg_dump.c:12173 #, c-format msgid "WARNING: bogus value in pg_transform.trftosql field\n" msgstr "AVISO: valor inválido no campo pg_cast.trftosql\n" -#: pg_dump.c:12411 +#: pg_dump.c:12564 #, c-format msgid "WARNING: could not find operator with OID %s\n" msgstr "AVISO: não pôde encontrar operador com OID %s\n" -#: pg_dump.c:12475 +#: pg_dump.c:12628 #, c-format msgid "WARNING: invalid type \"%c\" of access method \"%s\"\n" msgstr "AVISO: tipo inválido \"%c\" do método de acesso \"%s\"\n" -#: pg_dump.c:13673 +#: pg_dump.c:13841 #, c-format msgid "WARNING: aggregate function %s could not be dumped correctly for this database version; ignored\n" msgstr "AVISO: função de agregação %s não pôde ser copiada corretamente para esta versão do banco de dados; ignorado\n" -#: pg_dump.c:14545 +#: pg_dump.c:14713 #, c-format msgid "unrecognized object type in default privileges: %d\n" msgstr "tipo de objeto desconhecido em privilégios padrão: %d\n" -#: pg_dump.c:14560 +#: pg_dump.c:14731 #, c-format msgid "could not parse default ACL list (%s)\n" msgstr "não pôde validar a lista ACL (%s)\n" -#: pg_dump.c:14631 +#: pg_dump.c:14812 #, c-format msgid "could not parse initial GRANT ACL list (%s) or initial REVOKE ACL list (%s) for object \"%s\" (%s)\n" msgstr "não pôde validar a lista inicial ACL do GRANT (%s) ou lista inicial ACL do REVOKE (%s) para objeto \"%s\" (%s)\n" -#: pg_dump.c:14639 +#: pg_dump.c:14820 #, c-format msgid "could not parse GRANT ACL list (%s) or REVOKE ACL list (%s) for object \"%s\" (%s)\n" msgstr "não pôde validar a lista ACL do GRANT (%s) ou lista ACL do REVOKE (%s) para objeto \"%s\" (%s)\n" -#: pg_dump.c:15123 +#: pg_dump.c:15305 #, c-format msgid "query to obtain definition of view \"%s\" returned no data\n" msgstr "consulta para obter definição da visão \"%s\" não retornou dados\n" -#: pg_dump.c:15126 +#: pg_dump.c:15308 #, c-format msgid "query to obtain definition of view \"%s\" returned more than one definition\n" msgstr "consulta para obter definição da visão \"%s\" retornou mais de uma definição\n" -#: pg_dump.c:15133 +#: pg_dump.c:15315 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)\n" msgstr "definição da visão \"%s\" parece estar vazia (tamanho zero)\n" -#: pg_dump.c:15892 +#: pg_dump.c:16074 #, c-format msgid "invalid column number %d for table \"%s\"\n" msgstr "número de colunas %d é inválido para tabela \"%s\"\n" -#: pg_dump.c:16021 +#: pg_dump.c:16203 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "faltando índice para restrição \"%s\"\n" -#: pg_dump.c:16224 +#: pg_dump.c:16406 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "tipo de restrição é desconhecido: %c\n" -#: pg_dump.c:16378 pg_dump.c:16547 +#: pg_dump.c:16560 pg_dump.c:16733 #, c-format msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" msgid_plural "query to get data of sequence \"%s\" returned %d rows (expected 1)\n" msgstr[0] "consulta para obter dados da sequência \"%s\" retornou %d linha (esperado 1)\n" msgstr[1] "consulta para obter dados da sequência \"%s\" retornou %d linhas (esperado 1)\n" -#: pg_dump.c:16389 +#: pg_dump.c:16571 #, c-format msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" msgstr "consulta para obter dados sobre sequência \"%s\" retornou nome \"%s\"\n" -#: pg_dump.c:16645 +#: pg_dump.c:16831 #, c-format msgid "unexpected tgtype value: %d\n" msgstr "valor tgtype inesperado: %d\n" -#: pg_dump.c:16727 +#: pg_dump.c:16913 #, c-format msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" msgstr "argumento inválido (%s) para gatilho \"%s\" na tabela \"%s\"\n" -#: pg_dump.c:16924 +#: pg_dump.c:17120 #, c-format msgid "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows returned\n" msgstr "consulta para obter regra \"%s\" para tabela \"%s\" falhou: número incorreto de registros foi retornado\n" -#: pg_dump.c:17313 +#: pg_dump.c:17509 #, c-format msgid "reading dependency data\n" msgstr "lendo dados sobre dependência\n" -#: pg_dump.c:17870 +#: pg_dump.c:18066 #, c-format msgid "WARNING: could not parse reloptions array\n" msgstr "AVISO: não pôde validar matriz reloptions\n" @@ -2189,7 +2205,7 @@ msgstr "%s: opções -g/--globals-only e -r/--roles-only não podem ser utilizad msgid "%s: options -g/--globals-only and -t/--tablespaces-only cannot be used together\n" msgstr "%s: opções -g/--globals-only e -t/--tablespaces-only não podem ser utilizadas juntas\n" -#: pg_dumpall.c:335 pg_restore.c:345 +#: pg_dumpall.c:335 pg_restore.c:361 #, c-format msgid "%s: option --if-exists requires option -c/--clean\n" msgstr "%s: opção --if-exists requer opção -c/--clean\n" @@ -2199,7 +2215,7 @@ msgstr "%s: opção --if-exists requer opção -c/--clean\n" msgid "%s: options -r/--roles-only and -t/--tablespaces-only cannot be used together\n" msgstr "%s: opções -r/--roles-only e -t/--tablespaces-only não podem ser utilizadas juntas\n" -#: pg_dumpall.c:384 pg_dumpall.c:1994 +#: pg_dumpall.c:384 pg_dumpall.c:1995 #, c-format msgid "%s: could not connect to database \"%s\"\n" msgstr "%s: não pôde conectar ao banco de dados \"%s\"\n" @@ -2237,47 +2253,47 @@ msgstr " %s [OPÇÃO]...\n" msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=ARQUIVO nome do arquivo de saída\n" -#: pg_dumpall.c:557 +#: pg_dumpall.c:558 #, c-format msgid " -c, --clean clean (drop) databases before recreating\n" msgstr " -c, --clean exclui (remove) bancos de dados antes de criá-los novamente\n" -#: pg_dumpall.c:558 +#: pg_dumpall.c:559 #, c-format msgid " -g, --globals-only dump only global objects, no databases\n" msgstr " -g, --globals-only copia somente objetos globais, e não bancos de dados\n" -#: pg_dumpall.c:560 pg_restore.c:459 +#: pg_dumpall.c:561 pg_restore.c:465 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr " -O, --no-owner ignora restauração dos donos dos objetos\n" -#: pg_dumpall.c:561 +#: pg_dumpall.c:562 #, c-format msgid " -r, --roles-only dump only roles, no databases or tablespaces\n" msgstr " -r, --roles-only copia somente roles, e não bancos de dados ou tablespaces\n" -#: pg_dumpall.c:563 +#: pg_dumpall.c:564 #, c-format msgid " -S, --superuser=NAME superuser user name to use in the dump\n" msgstr " -S, --superuser=NOME especifica o nome do super-usuário a ser usado na cópia de segurança\n" -#: pg_dumpall.c:564 +#: pg_dumpall.c:565 #, c-format msgid " -t, --tablespaces-only dump only tablespaces, no databases or roles\n" msgstr " -t, --tablespaces-only copia somente tablespaces, e não bancos de dados ou roles\n" -#: pg_dumpall.c:581 +#: pg_dumpall.c:582 #, c-format msgid " -d, --dbname=CONNSTR connect using connection string\n" msgstr " -d, --dbname=TEXTO cadeia de caracteres de conexão\n" -#: pg_dumpall.c:583 +#: pg_dumpall.c:584 #, c-format msgid " -l, --database=DBNAME alternative default database\n" msgstr " -l, --database=NOMEBD especifica um banco de dados padrão alternativo\n" -#: pg_dumpall.c:590 +#: pg_dumpall.c:591 #, c-format msgid "" "\n" @@ -2290,67 +2306,67 @@ msgstr "" " padrão.\n" "\n" -#: pg_dumpall.c:791 +#: pg_dumpall.c:792 #, c-format msgid "%s: role name starting with \"pg_\" skipped (%s)\n" msgstr "%s: nome de role iniciando com \"pg_\" foi ignorada (%s)\n" -#: pg_dumpall.c:1168 +#: pg_dumpall.c:1169 #, c-format msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n" msgstr "%s: não pôde validar lista ACL (%s) da tablespace \"%s\"\n" -#: pg_dumpall.c:1536 +#: pg_dumpall.c:1537 #, c-format msgid "%s: could not parse ACL list (%s) for database \"%s\"\n" msgstr "%s: não pôde validar lista ACL (%s) do banco de dados \"%s\"\n" -#: pg_dumpall.c:1754 +#: pg_dumpall.c:1755 #, c-format msgid "%s: dumping database \"%s\"...\n" msgstr "%s: copiando banco de dados \"%s\"...\n" -#: pg_dumpall.c:1778 +#: pg_dumpall.c:1779 #, c-format msgid "%s: pg_dump failed on database \"%s\", exiting\n" msgstr "%s: pg_dump falhou no banco de dados \"%s\", terminando\n" -#: pg_dumpall.c:1787 +#: pg_dumpall.c:1788 #, c-format msgid "%s: could not re-open the output file \"%s\": %s\n" msgstr "%s: não pôde abrir o arquivo de saída \"%s\" novamente: %s\n" -#: pg_dumpall.c:1832 +#: pg_dumpall.c:1833 #, c-format msgid "%s: running \"%s\"\n" msgstr "%s: executando \"%s\"\n" -#: pg_dumpall.c:2016 +#: pg_dumpall.c:2017 #, c-format msgid "%s: could not connect to database \"%s\": %s\n" msgstr "%s: não pôde conectar ao banco de dados \"%s\": %s\n" -#: pg_dumpall.c:2046 +#: pg_dumpall.c:2047 #, c-format msgid "%s: could not get server version\n" msgstr "%s: não pôde obter a versão do servidor\n" -#: pg_dumpall.c:2052 +#: pg_dumpall.c:2053 #, c-format msgid "%s: could not parse server version \"%s\"\n" msgstr "%s: não pôde validar a versão do servidor \"%s\"\n" -#: pg_dumpall.c:2130 pg_dumpall.c:2156 +#: pg_dumpall.c:2131 pg_dumpall.c:2157 #, c-format msgid "%s: executing %s\n" msgstr "%s: executando %s\n" -#: pg_dumpall.c:2136 pg_dumpall.c:2162 +#: pg_dumpall.c:2137 pg_dumpall.c:2163 #, c-format msgid "%s: query failed: %s" msgstr "%s: consulta falhou: %s" -#: pg_dumpall.c:2138 pg_dumpall.c:2164 +#: pg_dumpall.c:2139 pg_dumpall.c:2165 #, c-format msgid "%s: query was: %s\n" msgstr "%s: consulta foi: %s\n" @@ -2370,27 +2386,32 @@ msgstr "%s: opções -s/--schema-only e -a/--data-only não podem ser utilizada msgid "%s: options -c/--clean and -a/--data-only cannot be used together\n" msgstr "%s: opções -c/--clean e -a/--data-only não podem ser utilizadas juntas\n" -#: pg_restore.c:331 +#: pg_restore.c:330 +#, c-format +msgid "%s: invalid number of parallel jobs\n" +msgstr "%s: número de tarefas paralelas inválido\n" + +#: pg_restore.c:338 +#, c-format +msgid "%s: maximum number of parallel jobs is %d\n" +msgstr "%s: número máximo de tarefas paralelas é %d\n" + +#: pg_restore.c:347 #, c-format msgid "%s: cannot specify both --single-transaction and multiple jobs\n" msgstr "%s: não pode especificar ambas opções --single-transaction e múltiplas tarefas\n" -#: pg_restore.c:372 +#: pg_restore.c:388 #, c-format msgid "unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"t\"\n" msgstr "formato de archive desconhecido \"%s\"; por favor especifique \"c\", \"d\" ou \"t\"\n" -#: pg_restore.c:404 -#, c-format -msgid "%s: maximum number of parallel jobs is %d\n" -msgstr "%s: número máximo de tarefas paralelas é %d\n" - -#: pg_restore.c:422 +#: pg_restore.c:428 #, c-format msgid "WARNING: errors ignored on restore: %d\n" msgstr "AVISO: erros ignorados durante restauração: %d\n" -#: pg_restore.c:436 +#: pg_restore.c:442 #, c-format msgid "" "%s restores a PostgreSQL database from an archive created by pg_dump.\n" @@ -2399,47 +2420,47 @@ msgstr "" "%s restaura um banco de dados PostgreSQL a partir de um arquivo criado pelo pg_dump.\n" "\n" -#: pg_restore.c:438 +#: pg_restore.c:444 #, c-format msgid " %s [OPTION]... [FILE]\n" msgstr " %s [OPÇÃO]... [ARQUIVO]\n" -#: pg_restore.c:441 +#: pg_restore.c:447 #, c-format msgid " -d, --dbname=NAME connect to database name\n" msgstr " -d, --dbname=NOME conecta ao banco de dados informado\n" -#: pg_restore.c:442 +#: pg_restore.c:448 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=ARQUIVO nome do arquivo de saída\n" -#: pg_restore.c:443 +#: pg_restore.c:449 #, c-format msgid " -F, --format=c|d|t backup file format (should be automatic)\n" msgstr " -F, --format=c|d|t formato de arquivo de cópia de segurança (deve ser automático)\n" -#: pg_restore.c:444 +#: pg_restore.c:450 #, c-format msgid " -l, --list print summarized TOC of the archive\n" msgstr " -l, --list mostra TOC resumido do arquivo\n" -#: pg_restore.c:445 +#: pg_restore.c:451 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose modo de detalhe\n" -#: pg_restore.c:446 +#: pg_restore.c:452 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version mostra informação sobre a versão e termina\n" -#: pg_restore.c:447 +#: pg_restore.c:453 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help mostra essa ajuda e termina\n" -#: pg_restore.c:449 +#: pg_restore.c:455 #, c-format msgid "" "\n" @@ -2448,32 +2469,32 @@ msgstr "" "\n" "Opções que controlam a restauração:\n" -#: pg_restore.c:450 +#: pg_restore.c:456 #, c-format msgid " -a, --data-only restore only the data, no schema\n" msgstr " -a, --data-only restaura somente os dados, não o esquema\n" -#: pg_restore.c:452 +#: pg_restore.c:458 #, c-format msgid " -C, --create create the target database\n" msgstr " -C, --create cria o banco de dados informado\n" -#: pg_restore.c:453 +#: pg_restore.c:459 #, c-format msgid " -e, --exit-on-error exit on error, default is to continue\n" msgstr " -e, --exit-on-error termina se houver erro, padrão é continuar\n" -#: pg_restore.c:454 +#: pg_restore.c:460 #, c-format msgid " -I, --index=NAME restore named index\n" msgstr " -I, --index=NOME restaura o índice especificado\n" -#: pg_restore.c:455 +#: pg_restore.c:461 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to restore\n" msgstr " -j, --jobs=NUM use esse número de tarefas paralelas para restaurar\n" -#: pg_restore.c:456 +#: pg_restore.c:462 #, c-format msgid "" " -L, --use-list=FILENAME use table of contents from this file for\n" @@ -2482,52 +2503,52 @@ msgstr "" " -L, --use-list=ARQUIVO usa tabela de conteúdo deste arquivo para\n" " selecionar/ordenar saída\n" -#: pg_restore.c:458 +#: pg_restore.c:464 #, c-format msgid " -n, --schema=NAME restore only objects in this schema\n" msgstr " -n, --schema=NOME restaura somente objetos neste esquema\n" -#: pg_restore.c:460 +#: pg_restore.c:466 #, c-format msgid " -P, --function=NAME(args) restore named function\n" msgstr " -P, --function=NOME(args) restaura função especificada\n" -#: pg_restore.c:461 +#: pg_restore.c:467 #, c-format msgid " -s, --schema-only restore only the schema, no data\n" msgstr " -s, --schema-only restaura somente o esquema, e não os dados\n" -#: pg_restore.c:462 +#: pg_restore.c:468 #, c-format msgid " -S, --superuser=NAME superuser user name to use for disabling triggers\n" msgstr " -S, --superuser=NOME nome do super-usuário usado para desabilitar os gatilhos\n" -#: pg_restore.c:463 +#: pg_restore.c:469 #, c-format msgid " -t, --table=NAME restore named relation (table, view, etc.)\n" msgstr " -t, --table=NOME restaura tabela especificada (tabela, visão, etc)\n" -#: pg_restore.c:464 +#: pg_restore.c:470 #, c-format msgid " -T, --trigger=NAME restore named trigger\n" msgstr " -T, --trigger=NOME restaura gatilho especificado\n" -#: pg_restore.c:465 +#: pg_restore.c:471 #, c-format msgid " -x, --no-privileges skip restoration of access privileges (grant/revoke)\n" msgstr " -x, --no-privileges ignora restauração dos privilégios de acesso (grant/revoke)\n" -#: pg_restore.c:466 +#: pg_restore.c:472 #, c-format msgid " -1, --single-transaction restore as a single transaction\n" msgstr " -1, --single-transaction restaura como uma transação única\n" -#: pg_restore.c:468 +#: pg_restore.c:474 #, c-format msgid " --enable-row-security enable row security\n" msgstr " --enable-row-security habilita segurança de registros\n" -#: pg_restore.c:470 +#: pg_restore.c:476 #, c-format msgid "" " --no-data-for-failed-tables do not restore data of tables that could not be\n" @@ -2536,27 +2557,27 @@ msgstr "" " --no-data-for-failed-tables não restaura dados de tabelas que não puderam ser\n" " criadas\n" -#: pg_restore.c:472 +#: pg_restore.c:478 #, c-format msgid " --no-security-labels do not restore security labels\n" msgstr " --no-security-labels não restaura as atribuições de rótulos de segurança\n" -#: pg_restore.c:473 +#: pg_restore.c:479 #, c-format msgid " --no-tablespaces do not restore tablespace assignments\n" msgstr " --no-tablespaces não restaura as atribuições de tablespaces\n" -#: pg_restore.c:474 +#: pg_restore.c:480 #, c-format msgid " --section=SECTION restore named section (pre-data, data, or post-data)\n" msgstr " --section=SEÇÃO restaura seção especificada (pre-data, data ou post-data)\n" -#: pg_restore.c:487 +#: pg_restore.c:493 #, c-format msgid " --role=ROLENAME do SET ROLE before restore\n" msgstr " --role=NOMEROLE executa SET ROLE antes da restauração\n" -#: pg_restore.c:489 +#: pg_restore.c:495 #, c-format msgid "" "\n" @@ -2567,7 +2588,7 @@ msgstr "" "As opções -I, -n, -P, -t, -T e --section podem ser combinadas e especificadas\n" "múltiplas vezes para selecionar múltiplos objetos.\n" -#: pg_restore.c:492 +#: pg_restore.c:498 #, c-format msgid "" "\n" diff --git a/src/bin/pg_dump/po/ru.po b/src/bin/pg_dump/po/ru.po index d50768aa66..a10bd257b4 100644 --- a/src/bin/pg_dump/po/ru.po +++ b/src/bin/pg_dump/po/ru.po @@ -5,15 +5,14 @@ # Oleg Bartunov , 2004. # Sergey Burladyan , 2012. # Dmitriy Olshevskiy , 2014. -# Alexander Lakhin , 2012-2016. +# Alexander Lakhin , 2012-2017. # msgid "" msgstr "" "Project-Id-Version: pg_dump (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-25 10:44+0000\n" -"PO-Revision-Date: 2016-09-20 12:00+0300\n" -"Last-Translator: Alexander Lakhin \n" +"POT-Creation-Date: 2017-08-17 17:53+0000\n" +"PO-Revision-Date: 2017-08-21 06:16+0300\n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" @@ -21,6 +20,7 @@ msgstr "" "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" +"Last-Translator: Alexander Lakhin \n" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, c-format @@ -277,7 +277,9 @@ msgstr "чтение политик\n" #: common.c:908 #, c-format msgid "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n" -msgstr "родительÑÐºÐ°Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ OID %u Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\" (OID %u) не найдена\n" +msgstr "" +"нарушение целоÑтноÑти: родительÑÐºÐ°Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ OID %u Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\" (OID " +"%u) не найдена\n" #: common.c:950 #, c-format @@ -330,38 +332,38 @@ msgstr "не удалоÑÑŒ раÑпаковать данные: %s\n" msgid "could not close compression library: %s\n" msgstr "не удалоÑÑŒ закрыть библиотеку ÑжатиÑ: %s\n" -#: compress_io.c:596 compress_io.c:632 pg_backup_custom.c:591 -#: pg_backup_tar.c:561 +#: compress_io.c:600 compress_io.c:638 pg_backup_custom.c:591 +#: pg_backup_tar.c:566 pg_backup_tar.c:570 #, c-format msgid "could not read from input file: %s\n" msgstr "не удалоÑÑŒ прочитать входной файл: %s\n" -#: compress_io.c:635 pg_backup_custom.c:588 pg_backup_directory.c:548 -#: pg_backup_tar.c:797 pg_backup_tar.c:821 +#: compress_io.c:641 pg_backup_custom.c:588 pg_backup_directory.c:552 +#: pg_backup_tar.c:809 pg_backup_tar.c:833 #, c-format msgid "could not read from input file: end of file\n" msgstr "не удалоÑÑŒ прочитать входной файл: конец файла\n" -#: parallel.c:163 +#: parallel.c:167 msgid "parallel archiver" msgstr "параллельный архиватор" -#: parallel.c:227 +#: parallel.c:231 #, c-format msgid "%s: WSAStartup failed: %d\n" msgstr "%s: ошибка WSAStartup: %d\n" -#: parallel.c:930 +#: parallel.c:934 #, c-format msgid "could not create communication channels: %s\n" msgstr "не удалоÑÑŒ Ñоздать каналы межпроцеÑÑного взаимодейÑтвиÑ: %s\n" -#: parallel.c:993 +#: parallel.c:997 #, c-format msgid "could not create worker process: %s\n" msgstr "не удалоÑÑŒ Ñоздать рабочий процеÑÑ: %s\n" -#: parallel.c:1188 +#: parallel.c:1192 #, c-format msgid "" "could not obtain lock on relation \"%s\"\n" @@ -374,67 +376,67 @@ msgstr "" "Ñтой таблицы поÑле того, как родительÑкий процеÑÑ pg_dump получил Ð´Ð»Ñ Ð½ÐµÑ‘ " "начальную блокировку ACCESS SHARE.\n" -#: parallel.c:1258 +#: parallel.c:1262 #, c-format msgid "unrecognized command received from master: \"%s\"\n" msgstr "от ведущего получена нераÑÐ¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°: \"%s\"\n" -#: parallel.c:1296 +#: parallel.c:1300 #, c-format msgid "a worker process died unexpectedly\n" msgstr "рабочий процеÑÑ Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾ прекратилÑÑ\n" -#: parallel.c:1322 parallel.c:1328 +#: parallel.c:1326 parallel.c:1332 #, c-format msgid "invalid message received from worker: \"%s\"\n" msgstr "от рабочего процеÑÑа получено ошибочное Ñообщение: \"%s\"\n" -#: parallel.c:1385 parallel.c:1436 +#: parallel.c:1389 parallel.c:1440 #, c-format msgid "error processing a parallel work item\n" msgstr "ошибка Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñ‡Ð°Ñти параллельной работы\n" -#: parallel.c:1465 parallel.c:1583 +#: parallel.c:1469 parallel.c:1587 #, c-format msgid "could not write to the communication channel: %s\n" msgstr "не удалоÑÑŒ запиÑать в канал взаимодейÑтвиÑ: %s\n" -#: parallel.c:1543 +#: parallel.c:1547 #, c-format msgid "select() failed: %s\n" msgstr "ошибка в select(): %s\n" -#: parallel.c:1668 +#: parallel.c:1672 #, c-format msgid "pgpipe: could not create socket: error code %d\n" msgstr "pgpipe: не удалоÑÑŒ Ñоздать Ñокет (код ошибки: %d)\n" -#: parallel.c:1679 +#: parallel.c:1683 #, c-format msgid "pgpipe: could not bind: error code %d\n" msgstr "pgpipe: не удалоÑÑŒ привÑзатьÑÑ Ðº Ñокету (код ошибки: %d)\n" -#: parallel.c:1686 +#: parallel.c:1690 #, c-format msgid "pgpipe: could not listen: error code %d\n" msgstr "pgpipe: не удалоÑÑŒ начать приём (код ошибки: %d)\n" -#: parallel.c:1693 +#: parallel.c:1697 #, c-format msgid "pgpipe: getsockname() failed: error code %d\n" msgstr "pgpipe: ошибка в getsockname() (код ошибки: %d)\n" -#: parallel.c:1704 +#: parallel.c:1708 #, c-format msgid "pgpipe: could not create second socket: error code %d\n" msgstr "pgpipe: не удалоÑÑŒ Ñоздать второй Ñокет (код ошибки: %d)\n" -#: parallel.c:1713 +#: parallel.c:1717 #, c-format msgid "pgpipe: could not connect socket: error code %d\n" msgstr "pgpipe: не удалоÑÑŒ подключить Ñокет (код ошибки: %d)\n" -#: parallel.c:1722 +#: parallel.c:1726 #, c-format msgid "pgpipe: could not accept connection: error code %d\n" msgstr "pgpipe: не удалоÑÑŒ принÑть Ñоединение (код ошибки: %d)\n" @@ -444,36 +446,36 @@ msgstr "pgpipe: не удалоÑÑŒ принÑть Ñоединение (код msgid "archiver" msgstr "архиватор" -#: pg_backup_archiver.c:234 pg_backup_archiver.c:1519 +#: pg_backup_archiver.c:240 pg_backup_archiver.c:1589 #, c-format msgid "could not close output file: %s\n" msgstr "не удалоÑÑŒ закрыть выходной файл: %s\n" -#: pg_backup_archiver.c:280 pg_backup_archiver.c:285 +#: pg_backup_archiver.c:286 pg_backup_archiver.c:291 #, c-format msgid "WARNING: archive items not in correct section order\n" msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: в поÑледовательноÑти Ñлементов архива нарушен порÑдок " "разделов\n" -#: pg_backup_archiver.c:291 +#: pg_backup_archiver.c:297 #, c-format msgid "unexpected section code %d\n" msgstr "неожиданный код раздела %d\n" -#: pg_backup_archiver.c:327 +#: pg_backup_archiver.c:333 #, c-format msgid "-C and -1 are incompatible options\n" msgstr "Параметры -C и -1 неÑовмеÑтимы\n" -#: pg_backup_archiver.c:337 +#: pg_backup_archiver.c:343 #, c-format msgid "parallel restore is not supported with this archive file format\n" msgstr "" "параллельное воÑÑтановление не поддерживаетÑÑ Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¼ форматом архивного " "файла\n" -#: pg_backup_archiver.c:341 +#: pg_backup_archiver.c:347 #, c-format msgid "" "parallel restore is not supported with archives made by pre-8.0 pg_dump\n" @@ -481,7 +483,7 @@ msgstr "" "параллельное воÑÑтановление возможно только Ð´Ð»Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð¾Ð², Ñозданных pg_dump " "верÑии 8.0 и новее\n" -#: pg_backup_archiver.c:359 +#: pg_backup_archiver.c:365 #, c-format msgid "" "cannot restore from compressed archive (compression not supported in this " @@ -490,83 +492,80 @@ msgstr "" "воÑÑтановить данные из Ñжатого архива Ð½ÐµÐ»ÑŒÐ·Ñ (уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð½Ðµ " "поддерживает Ñжатие)\n" -#: pg_backup_archiver.c:376 +#: pg_backup_archiver.c:382 #, c-format msgid "connecting to database for restore\n" msgstr "подключение к базе данных Ð´Ð»Ñ Ð²Ð¾ÑÑтановлениÑ\n" -#: pg_backup_archiver.c:378 +#: pg_backup_archiver.c:384 #, c-format msgid "direct database connections are not supported in pre-1.3 archives\n" msgstr "" "прÑмые Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº базе данных не поддерживаютÑÑ Ð² архивах до верÑии 1.3\n" -#: pg_backup_archiver.c:423 +#: pg_backup_archiver.c:429 #, c-format msgid "implied data-only restore\n" msgstr "подразумеваетÑÑ Ð²Ð¾ÑÑтановление только данных\n" -#: pg_backup_archiver.c:493 +#: pg_backup_archiver.c:499 #, c-format msgid "dropping %s %s\n" msgstr "удалÑетÑÑ %s %s\n" -#: pg_backup_archiver.c:646 +#: pg_backup_archiver.c:592 #, c-format -msgid "setting owner and privileges for %s \"%s.%s\"\n" -msgstr "уÑтановка владельца и прав: %s \"%s.%s\"\n" - -#: pg_backup_archiver.c:649 -#, c-format -msgid "setting owner and privileges for %s \"%s\"\n" -msgstr "уÑтановка владельца и прав: %s \"%s\"\n" +msgid "WARNING: could not find where to insert IF EXISTS in statement \"%s\"\n" +msgstr "" +"ПРЕДУПРЕЖДЕÐИЕ: не удалоÑÑŒ определить, куда добавить IF EXISTS в оператор " +"\"%s\"\n" -#: pg_backup_archiver.c:715 pg_backup_archiver.c:717 +#: pg_backup_archiver.c:755 pg_backup_archiver.c:757 #, c-format msgid "warning from original dump file: %s\n" msgstr "предупреждение из иÑходного файла: %s\n" -#: pg_backup_archiver.c:726 +#: pg_backup_archiver.c:769 #, c-format msgid "creating %s \"%s.%s\"\n" msgstr "ÑоздаётÑÑ %s \"%s.%s\"\n" -#: pg_backup_archiver.c:729 +#: pg_backup_archiver.c:772 #, c-format msgid "creating %s \"%s\"\n" msgstr "ÑоздаётÑÑ %s \"%s\"\n" -#: pg_backup_archiver.c:781 +#: pg_backup_archiver.c:823 #, c-format msgid "connecting to new database \"%s\"\n" msgstr "подключение к новой базе данных \"%s\"\n" -#: pg_backup_archiver.c:809 +#: pg_backup_archiver.c:851 #, c-format msgid "processing %s\n" msgstr "обрабатываетÑÑ %s\n" -#: pg_backup_archiver.c:829 +#: pg_backup_archiver.c:871 #, c-format msgid "processing data for table \"%s.%s\"\n" msgstr "обрабатываютÑÑ Ð´Ð°Ð½Ð½Ñ‹Ðµ таблицы \"%s.%s\"\n" -#: pg_backup_archiver.c:891 +#: pg_backup_archiver.c:933 #, c-format msgid "executing %s %s\n" msgstr "выполнÑетÑÑ %s %s\n" -#: pg_backup_archiver.c:930 +#: pg_backup_archiver.c:972 #, c-format msgid "disabling triggers for %s\n" msgstr "отключаютÑÑ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ñ‹ таблицы %s\n" -#: pg_backup_archiver.c:958 +#: pg_backup_archiver.c:1000 #, c-format msgid "enabling triggers for %s\n" msgstr "включаютÑÑ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ñ‹ таблицы %s\n" -#: pg_backup_archiver.c:988 +#: pg_backup_archiver.c:1030 #, c-format msgid "" "internal error -- WriteData cannot be called outside the context of a " @@ -575,12 +574,12 @@ msgstr "" "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° -- WriteData Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ вне контекÑта процедуры " "DataDumper\n" -#: pg_backup_archiver.c:1157 +#: pg_backup_archiver.c:1227 #, c-format msgid "large-object output not supported in chosen format\n" msgstr "выбранный формат не поддерживает выгрузку больших объектов\n" -#: pg_backup_archiver.c:1215 +#: pg_backup_archiver.c:1285 #, c-format msgid "restored %d large object\n" msgid_plural "restored %d large objects\n" @@ -588,55 +587,55 @@ msgstr[0] "воÑÑтановлен %d большой объект\n" msgstr[1] "воÑÑтановлено %d больших объекта\n" msgstr[2] "воÑÑтановлено %d больших объектов\n" -#: pg_backup_archiver.c:1236 pg_backup_tar.c:739 +#: pg_backup_archiver.c:1306 pg_backup_tar.c:751 #, c-format msgid "restoring large object with OID %u\n" msgstr "воÑÑтановление большого объекта Ñ OID %u\n" -#: pg_backup_archiver.c:1248 +#: pg_backup_archiver.c:1318 #, c-format msgid "could not create large object %u: %s" msgstr "не удалоÑÑŒ Ñоздать большой объект %u: %s" -#: pg_backup_archiver.c:1253 pg_dump.c:3059 +#: pg_backup_archiver.c:1323 pg_dump.c:3093 #, c-format msgid "could not open large object %u: %s" msgstr "не удалоÑÑŒ открыть большой объект %u: %s" -#: pg_backup_archiver.c:1311 +#: pg_backup_archiver.c:1381 #, c-format msgid "could not open TOC file \"%s\": %s\n" msgstr "не удалоÑÑŒ открыть файл Ð¾Ð³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\": %s\n" -#: pg_backup_archiver.c:1352 +#: pg_backup_archiver.c:1422 #, c-format msgid "WARNING: line ignored: %s\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: Ñтрока проигнорирована: %s\n" -#: pg_backup_archiver.c:1359 +#: pg_backup_archiver.c:1429 #, c-format msgid "could not find entry for ID %d\n" msgstr "не найдена запиÑÑŒ Ð´Ð»Ñ ID %d\n" -#: pg_backup_archiver.c:1380 pg_backup_directory.c:230 -#: pg_backup_directory.c:597 +#: pg_backup_archiver.c:1450 pg_backup_directory.c:230 +#: pg_backup_directory.c:601 #, c-format msgid "could not close TOC file: %s\n" msgstr "не удалоÑÑŒ закрыть файл оглавлениÑ: %s\n" -#: pg_backup_archiver.c:1489 pg_backup_custom.c:162 pg_backup_directory.c:341 -#: pg_backup_directory.c:583 pg_backup_directory.c:641 -#: pg_backup_directory.c:661 +#: pg_backup_archiver.c:1559 pg_backup_custom.c:162 pg_backup_directory.c:341 +#: pg_backup_directory.c:587 pg_backup_directory.c:645 +#: pg_backup_directory.c:665 #, c-format msgid "could not open output file \"%s\": %s\n" msgstr "не удалоÑÑŒ открыть выходной файл \"%s\": %s\n" -#: pg_backup_archiver.c:1492 pg_backup_custom.c:169 +#: pg_backup_archiver.c:1562 pg_backup_custom.c:169 #, c-format msgid "could not open output file: %s\n" msgstr "не удалоÑÑŒ открыть выходной файл: %s\n" -#: pg_backup_archiver.c:1598 +#: pg_backup_archiver.c:1668 #, c-format msgid "wrote %lu byte of large object data (result = %lu)\n" msgid_plural "wrote %lu bytes of large object data (result = %lu)\n" @@ -644,212 +643,212 @@ msgstr[0] "запиÑан %lu байт данных большого объек msgstr[1] "запиÑано %lu байта данных большого объекта (результат = %lu)\n" msgstr[2] "запиÑано %lu байт данных большого объекта (результат = %lu)\n" -#: pg_backup_archiver.c:1604 +#: pg_backup_archiver.c:1674 #, c-format msgid "could not write to large object (result: %lu, expected: %lu)\n" msgstr "не удалоÑÑŒ запиÑать большой объект (результат: %lu, ожидалоÑÑŒ: %lu)\n" -#: pg_backup_archiver.c:1697 +#: pg_backup_archiver.c:1767 #, c-format msgid "Error while INITIALIZING:\n" msgstr "Ошибка при инициализации:\n" -#: pg_backup_archiver.c:1702 +#: pg_backup_archiver.c:1772 #, c-format msgid "Error while PROCESSING TOC:\n" msgstr "Ошибка при обработке оглавлениÑ:\n" -#: pg_backup_archiver.c:1707 +#: pg_backup_archiver.c:1777 #, c-format msgid "Error while FINALIZING:\n" msgstr "Ошибка при завершении:\n" -#: pg_backup_archiver.c:1712 +#: pg_backup_archiver.c:1782 #, c-format msgid "Error from TOC entry %d; %u %u %s %s %s\n" msgstr "Ошибка из запиÑи Ð¾Ð³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ñ %d; %u %u %s %s %s\n" -#: pg_backup_archiver.c:1785 +#: pg_backup_archiver.c:1855 #, c-format msgid "bad dumpId\n" msgstr "неверный dumpId\n" -#: pg_backup_archiver.c:1806 +#: pg_backup_archiver.c:1876 #, c-format msgid "bad table dumpId for TABLE DATA item\n" msgstr "неверный dumpId таблицы в Ñлементе TABLE DATA\n" -#: pg_backup_archiver.c:1898 +#: pg_backup_archiver.c:1968 #, c-format msgid "unexpected data offset flag %d\n" msgstr "неожиданный флаг ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…: %d\n" -#: pg_backup_archiver.c:1911 +#: pg_backup_archiver.c:1981 #, c-format msgid "file offset in dump file is too large\n" msgstr "Ñлишком большое Ñмещение в файле вывода\n" -#: pg_backup_archiver.c:2024 +#: pg_backup_archiver.c:2094 #, c-format msgid "attempting to ascertain archive format\n" msgstr "попытка выÑÑнить формат архива\n" -#: pg_backup_archiver.c:2050 pg_backup_archiver.c:2060 +#: pg_backup_archiver.c:2120 pg_backup_archiver.c:2130 #, c-format msgid "directory name too long: \"%s\"\n" msgstr "Ñлишком длинное Ð¸Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°: \"%s\"\n" -#: pg_backup_archiver.c:2068 +#: pg_backup_archiver.c:2138 #, c-format msgid "" "directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not " "exist)\n" msgstr "каталог \"%s\" не похож на архивный (в нём отÑутÑтвует \"toc.dat\")\n" -#: pg_backup_archiver.c:2076 pg_backup_custom.c:181 pg_backup_custom.c:770 -#: pg_backup_directory.c:214 pg_backup_directory.c:399 +#: pg_backup_archiver.c:2146 pg_backup_custom.c:181 pg_backup_custom.c:770 +#: pg_backup_directory.c:214 pg_backup_directory.c:401 #, c-format msgid "could not open input file \"%s\": %s\n" msgstr "не удалоÑÑŒ открыть входной файл \"%s\": %s\n" -#: pg_backup_archiver.c:2084 pg_backup_custom.c:188 +#: pg_backup_archiver.c:2154 pg_backup_custom.c:188 #, c-format msgid "could not open input file: %s\n" msgstr "не удалоÑÑŒ открыть входной файл: %s\n" -#: pg_backup_archiver.c:2091 +#: pg_backup_archiver.c:2161 #, c-format msgid "could not read input file: %s\n" msgstr "не удалоÑÑŒ прочитать входной файл: %s\n" -#: pg_backup_archiver.c:2093 +#: pg_backup_archiver.c:2163 #, c-format msgid "input file is too short (read %lu, expected 5)\n" msgstr "входной файл Ñлишком короткий (прочитано байт: %lu, ожидалоÑÑŒ: 5)\n" -#: pg_backup_archiver.c:2176 +#: pg_backup_archiver.c:2246 #, c-format msgid "input file appears to be a text format dump. Please use psql.\n" msgstr "" "входной файл похоже имеет текÑтовый формат. Загрузите его Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ psql.\n" -#: pg_backup_archiver.c:2182 +#: pg_backup_archiver.c:2252 #, c-format msgid "input file does not appear to be a valid archive (too short?)\n" msgstr "входной файл не похож на архив (возможно, Ñлишком мал?)\n" -#: pg_backup_archiver.c:2188 +#: pg_backup_archiver.c:2258 #, c-format msgid "input file does not appear to be a valid archive\n" msgstr "входной файл не похож на архив\n" -#: pg_backup_archiver.c:2208 +#: pg_backup_archiver.c:2278 #, c-format msgid "could not close input file: %s\n" msgstr "не удалоÑÑŒ закрыть входной файл: %s\n" -#: pg_backup_archiver.c:2225 +#: pg_backup_archiver.c:2295 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "выделение Ñтруктуры AH Ð´Ð»Ñ %s, формат %d\n" -#: pg_backup_archiver.c:2330 +#: pg_backup_archiver.c:2400 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "неопознанный формат файла: \"%d\"\n" -#: pg_backup_archiver.c:2486 +#: pg_backup_archiver.c:2556 #, c-format msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" msgstr "ID запиÑи %d вне диапазона - возможно повреждено оглавление\n" -#: pg_backup_archiver.c:2602 +#: pg_backup_archiver.c:2672 #, c-format msgid "read TOC entry %d (ID %d) for %s %s\n" msgstr "прочитана запиÑÑŒ Ð¾Ð³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ñ %d (ID %d): %s %s\n" -#: pg_backup_archiver.c:2636 +#: pg_backup_archiver.c:2706 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "нераÑÐ¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ° \"%s\"\n" -#: pg_backup_archiver.c:2641 +#: pg_backup_archiver.c:2711 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "неверный Ñлемент ENCODING: %s\n" -#: pg_backup_archiver.c:2659 +#: pg_backup_archiver.c:2729 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "неверный Ñлемент STDSTRINGS: %s\n" -#: pg_backup_archiver.c:2674 +#: pg_backup_archiver.c:2744 #, c-format msgid "schema \"%s\" not found\n" msgstr "Ñхема \"%s\" не найдена\n" -#: pg_backup_archiver.c:2681 +#: pg_backup_archiver.c:2751 #, c-format msgid "table \"%s\" not found\n" msgstr "таблица \"%s\" не найдена\n" -#: pg_backup_archiver.c:2688 +#: pg_backup_archiver.c:2758 #, c-format msgid "index \"%s\" not found\n" msgstr "Ð¸Ð½Ð´ÐµÐºÑ \"%s\" не найден\n" -#: pg_backup_archiver.c:2695 +#: pg_backup_archiver.c:2765 #, c-format msgid "function \"%s\" not found\n" msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ \"%s\" не найдена\n" -#: pg_backup_archiver.c:2702 +#: pg_backup_archiver.c:2772 #, c-format msgid "trigger \"%s\" not found\n" msgstr "триггер \"%s\" не найден\n" -#: pg_backup_archiver.c:2934 +#: pg_backup_archiver.c:3036 #, c-format msgid "could not set session user to \"%s\": %s" msgstr "не удалоÑÑŒ переключить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑеÑÑии на \"%s\": %s" -#: pg_backup_archiver.c:2966 +#: pg_backup_archiver.c:3068 #, c-format msgid "could not set default_with_oids: %s" msgstr "не удалоÑÑŒ уÑтановить параметр default_with_oids: %s" -#: pg_backup_archiver.c:3111 +#: pg_backup_archiver.c:3213 #, c-format msgid "could not set search_path to \"%s\": %s" msgstr "не удалоÑÑŒ приÑвоить search_path значение \"%s\": %s" -#: pg_backup_archiver.c:3173 +#: pg_backup_archiver.c:3275 #, c-format msgid "could not set default_tablespace to %s: %s" msgstr "не удалоÑÑŒ задать Ð´Ð»Ñ default_tablespace значение %s: %s" -#: pg_backup_archiver.c:3260 pg_backup_archiver.c:3454 +#: pg_backup_archiver.c:3363 pg_backup_archiver.c:3553 #, c-format -msgid "WARNING: don't know how to set owner for object type %s\n" +msgid "WARNING: don't know how to set owner for object type \"%s\"\n" msgstr "" -"ПРЕДУПРЕЖДЕÐИЕ: неизвеÑтно, как назначить владельца Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° типа %s\n" +"ПРЕДУПРЕЖДЕÐИЕ: неизвеÑтно, как назначить владельца Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° типа \"%s\"\n" -#: pg_backup_archiver.c:3536 +#: pg_backup_archiver.c:3639 #, c-format msgid "did not find magic string in file header\n" msgstr "в файле заголовка не найдена магичеÑÐºÐ°Ñ Ñтрока\n" -#: pg_backup_archiver.c:3549 +#: pg_backup_archiver.c:3652 #, c-format msgid "unsupported version (%d.%d) in file header\n" msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ (%d.%d) в заголовке файла\n" -#: pg_backup_archiver.c:3554 +#: pg_backup_archiver.c:3657 #, c-format msgid "sanity check on integer size (%lu) failed\n" msgstr "неÑоответÑтвие размера integer (%lu)\n" -#: pg_backup_archiver.c:3558 +#: pg_backup_archiver.c:3661 #, c-format msgid "" "WARNING: archive was made on a machine with larger integers, some operations " @@ -858,12 +857,12 @@ msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: архив был Ñделан на компьютере большей разрÑдноÑти -- " "возможен Ñбой некоторых операций\n" -#: pg_backup_archiver.c:3568 +#: pg_backup_archiver.c:3671 #, c-format msgid "expected format (%d) differs from format found in file (%d)\n" msgstr "ожидаемый формат (%d) отличаетÑÑ Ð¾Ñ‚ формата, указанного в файле (%d)\n" -#: pg_backup_archiver.c:3584 +#: pg_backup_archiver.c:3687 #, c-format msgid "" "WARNING: archive is compressed, but this installation does not support " @@ -872,87 +871,87 @@ msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: архив Ñжат, но уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð½Ðµ поддерживает Ñжатие " "-- данные недоÑтупны\n" -#: pg_backup_archiver.c:3602 +#: pg_backup_archiver.c:3705 #, c-format msgid "WARNING: invalid creation date in header\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð°Ñ‚Ð° ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð² заголовке\n" -#: pg_backup_archiver.c:3677 +#: pg_backup_archiver.c:3778 #, c-format msgid "entering restore_toc_entries_prefork\n" msgstr "вход в restore_toc_entries_prefork\n" -#: pg_backup_archiver.c:3721 +#: pg_backup_archiver.c:3841 #, c-format msgid "processing item %d %s %s\n" msgstr "обработка объекта %d %s %s\n" -#: pg_backup_archiver.c:3773 +#: pg_backup_archiver.c:3895 #, c-format msgid "entering restore_toc_entries_parallel\n" msgstr "вход в restore_toc_entries_parallel\n" -#: pg_backup_archiver.c:3821 +#: pg_backup_archiver.c:3916 #, c-format msgid "entering main parallel loop\n" msgstr "вход в оÑновной параллельный цикл\n" -#: pg_backup_archiver.c:3832 +#: pg_backup_archiver.c:3927 #, c-format msgid "skipping item %d %s %s\n" msgstr "объект %d %s %s пропуÑкаетÑÑ\n" -#: pg_backup_archiver.c:3842 +#: pg_backup_archiver.c:3937 #, c-format msgid "launching item %d %s %s\n" msgstr "объект %d %s %s запуÑкаетÑÑ\n" -#: pg_backup_archiver.c:3898 +#: pg_backup_archiver.c:4018 #, c-format msgid "finished main parallel loop\n" msgstr "оÑновной параллельный цикл закончен\n" -#: pg_backup_archiver.c:3907 +#: pg_backup_archiver.c:4036 #, c-format msgid "entering restore_toc_entries_postfork\n" msgstr "вход в restore_toc_entries_postfork\n" -#: pg_backup_archiver.c:3926 +#: pg_backup_archiver.c:4056 #, c-format msgid "processing missed item %d %s %s\n" msgstr "обработка пропущенного объекта %d %s %s\n" -#: pg_backup_archiver.c:4075 +#: pg_backup_archiver.c:4233 #, c-format msgid "no item ready\n" msgstr "Ñлемент не готов\n" -#: pg_backup_archiver.c:4123 +#: pg_backup_archiver.c:4281 #, c-format msgid "could not find slot of finished worker\n" msgstr "не удалоÑÑŒ найти Ñлот законченного рабочего объекта\n" -#: pg_backup_archiver.c:4125 +#: pg_backup_archiver.c:4283 #, c-format msgid "finished item %d %s %s\n" msgstr "закончен объект %d %s %s\n" -#: pg_backup_archiver.c:4138 +#: pg_backup_archiver.c:4296 #, c-format msgid "worker process failed: exit code %d\n" msgstr "рабочий процеÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»ÑÑ Ñ ÐºÐ¾Ð´Ð¾Ð¼ возврата %d\n" -#: pg_backup_archiver.c:4300 +#: pg_backup_archiver.c:4458 #, c-format msgid "transferring dependency %d -> %d to %d\n" msgstr "переключение завиÑимоÑти %d -> %d на %d\n" -#: pg_backup_archiver.c:4373 +#: pg_backup_archiver.c:4531 #, c-format msgid "reducing dependencies for %d\n" msgstr "уменьшение завиÑимоÑтей Ð´Ð»Ñ %d\n" -#: pg_backup_archiver.c:4412 +#: pg_backup_archiver.c:4579 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "Ñоздать таблицу \"%s\" не удалоÑÑŒ, её данные не будут воÑÑтановлены\n" @@ -1014,7 +1013,7 @@ msgid "unrecognized data block type %d while restoring archive\n" msgstr "нераÑпознанный тип блока данных %d при воÑÑтановлении архива\n" #: pg_backup_custom.c:709 pg_backup_custom.c:759 pg_backup_custom.c:908 -#: pg_backup_tar.c:1088 +#: pg_backup_tar.c:1100 #, c-format msgid "could not determine seek position in archive file: %s\n" msgstr "не удалоÑÑŒ определить позицию в файле архива: %s\n" @@ -1067,12 +1066,12 @@ msgstr "архиватор (БД)" msgid "could not get server_version from libpq\n" msgstr "не удалоÑÑŒ получить верÑию Ñервера из libpq\n" -#: pg_backup_db.c:58 pg_dumpall.c:2067 +#: pg_backup_db.c:58 pg_dumpall.c:2068 #, c-format msgid "server version: %s; %s version: %s\n" msgstr "верÑÐ¸Ñ Ñервера: %s; верÑÐ¸Ñ %s: %s\n" -#: pg_backup_db.c:60 pg_dumpall.c:2069 +#: pg_backup_db.c:60 pg_dumpall.c:2070 #, c-format msgid "aborting because of server version mismatch\n" msgstr "продолжение работы Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð¹ верÑией Ñервера невозможно\n" @@ -1083,7 +1082,7 @@ msgid "connecting to database \"%s\" as user \"%s\"\n" msgstr "подключение к базе \"%s\" Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ \"%s\"\n" #: pg_backup_db.c:156 pg_backup_db.c:208 pg_backup_db.c:270 pg_backup_db.c:312 -#: pg_dumpall.c:1893 pg_dumpall.c:2005 +#: pg_dumpall.c:1894 pg_dumpall.c:2006 msgid "Password: " msgstr "Пароль: " @@ -1164,7 +1163,7 @@ msgstr "ошибка в PQputCopyEnd: %s" msgid "COPY failed for table \"%s\": %s" msgstr "Ñбой команды COPY Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\": %s" -#: pg_backup_db.c:657 pg_dump.c:1795 +#: pg_backup_db.c:657 pg_dump.c:1814 #, c-format msgid "WARNING: unexpected extra results during COPY of table \"%s\"\n" msgstr "" @@ -1204,43 +1203,49 @@ msgstr "не удалоÑÑŒ закрыть каталог \"%s\": %s\n" msgid "could not create directory \"%s\": %s\n" msgstr "Ñоздать каталог \"%s\" не удалоÑÑŒ: %s\n" -#: pg_backup_directory.c:412 +#: pg_backup_directory.c:360 pg_backup_directory.c:500 +#: pg_backup_directory.c:530 +#, c-format +msgid "could not write to output file: %s\n" +msgstr "не удалоÑÑŒ запиÑать в выходной файл: %s\n" + +#: pg_backup_directory.c:414 #, c-format msgid "could not close data file: %s\n" msgstr "не удалоÑÑŒ закрыть файл данных: %s\n" -#: pg_backup_directory.c:453 +#: pg_backup_directory.c:455 #, c-format msgid "could not open large object TOC file \"%s\" for input: %s\n" msgstr "" "не удалоÑÑŒ открыть Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð» Ð¾Ð³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ñ… объектов \"%s\": %s\n" -#: pg_backup_directory.c:464 +#: pg_backup_directory.c:466 #, c-format msgid "invalid line in large object TOC file \"%s\": \"%s\"\n" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñтрока в файле Ð¾Ð³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ñ… объектов \"%s\": \"%s\"\n" -#: pg_backup_directory.c:473 +#: pg_backup_directory.c:475 #, c-format msgid "error reading large object TOC file \"%s\"\n" msgstr "ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° Ð¾Ð³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ñ… объектов \"%s\"\n" -#: pg_backup_directory.c:477 +#: pg_backup_directory.c:479 #, c-format msgid "could not close large object TOC file \"%s\": %s\n" msgstr "не удалоÑÑŒ закрыть файл Ð¾Ð³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ñ… объектов \"%s\": %s\n" -#: pg_backup_directory.c:684 +#: pg_backup_directory.c:688 #, c-format msgid "could not write to blobs TOC file\n" msgstr "не удалоÑÑŒ запиÑать в файл Ð¾Ð³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ñ… объектов\n" -#: pg_backup_directory.c:716 +#: pg_backup_directory.c:720 #, c-format msgid "file name too long: \"%s\"\n" msgstr "Ñлишком длинное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°: \"%s\"\n" -#: pg_backup_directory.c:802 +#: pg_backup_directory.c:806 #, c-format msgid "error during backup\n" msgstr "ошибка в процеÑÑе резервного копированиÑ\n" @@ -1300,52 +1305,52 @@ msgstr "не удалоÑÑŒ открыть временный файл\n" msgid "could not close tar member\n" msgstr "не удалоÑÑŒ закрыть компонент tar-архива\n" -#: pg_backup_tar.c:571 +#: pg_backup_tar.c:583 #, c-format msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° -- в tarReadRaw() не указан ни th, ни fh\n" -#: pg_backup_tar.c:694 +#: pg_backup_tar.c:706 #, c-format msgid "unexpected COPY statement syntax: \"%s\"\n" msgstr "недопуÑтимый ÑинтакÑÐ¸Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° COPY: \"%s\"\n" -#: pg_backup_tar.c:960 +#: pg_backup_tar.c:972 #, c-format msgid "invalid OID for large object (%u)\n" msgstr "неверный OID Ð´Ð»Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð³Ð¾ объекта (%u)\n" -#: pg_backup_tar.c:1104 +#: pg_backup_tar.c:1116 #, c-format msgid "could not close temporary file: %s\n" msgstr "не удалоÑÑŒ закрыть временный файл: %s\n" -#: pg_backup_tar.c:1114 +#: pg_backup_tar.c:1126 #, c-format msgid "actual file length (%s) does not match expected (%s)\n" msgstr "дейÑÑ‚Ð²Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° файла (%s) не равна ожидаемой (%s)\n" -#: pg_backup_tar.c:1151 +#: pg_backup_tar.c:1163 #, c-format msgid "moving from position %s to next member at file position %s\n" msgstr "переход от позиции %s к Ñледующему компоненту в позиции %s\n" -#: pg_backup_tar.c:1162 +#: pg_backup_tar.c:1174 #, c-format msgid "now at file position %s\n" msgstr "Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð² файле %s\n" -#: pg_backup_tar.c:1171 pg_backup_tar.c:1201 +#: pg_backup_tar.c:1183 pg_backup_tar.c:1213 #, c-format msgid "could not find header for file \"%s\" in tar archive\n" msgstr "в архиве tar не найден заголовок Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° \"%s\"\n" -#: pg_backup_tar.c:1185 +#: pg_backup_tar.c:1197 #, c-format msgid "skipping tar member %s\n" msgstr "пропуÑкаетÑÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚ tar %s\n" -#: pg_backup_tar.c:1189 +#: pg_backup_tar.c:1201 #, c-format msgid "" "restoring data out of order is not supported in this archive format: \"%s\" " @@ -1355,7 +1360,7 @@ msgstr "" "поддерживаетÑÑ: требуетÑÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚ \"%s\", но в файле архива прежде идёт " "\"%s\".\n" -#: pg_backup_tar.c:1235 +#: pg_backup_tar.c:1247 #, c-format msgid "incomplete tar header found (%lu byte)\n" msgid_plural "incomplete tar header found (%lu bytes)\n" @@ -1363,12 +1368,13 @@ msgstr[0] "найден неполный tar-заголовок (размер %l msgstr[1] "найден неполный tar-заголовок (размер %lu байта)\n" msgstr[2] "найден неполный tar-заголовок (размер %lu байтов)\n" -#: pg_backup_tar.c:1276 +# skip-rule: capital-letter-first +#: pg_backup_tar.c:1288 #, c-format msgid "TOC Entry %s at %s (length %s, checksum %d)\n" msgstr "ЗапиÑÑŒ Ð¾Ð³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ñ %s в %s (длина: %s, контр. Ñумма: %d)\n" -#: pg_backup_tar.c:1287 +#: pg_backup_tar.c:1299 #, c-format msgid "" "corrupt tar header found in %s (expected %d, computed %d) file position %s\n" @@ -1381,7 +1387,7 @@ msgstr "" msgid "%s: unrecognized section name: \"%s\"\n" msgstr "%s: нераÑпознанное Ð¸Ð¼Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°: \"%s\"\n" -#: pg_backup_utils.c:56 pg_dump.c:533 pg_dump.c:550 pg_dumpall.c:299 +#: pg_backup_utils.c:56 pg_dump.c:536 pg_dump.c:553 pg_dumpall.c:299 #: pg_dumpall.c:309 pg_dumpall.c:319 pg_dumpall.c:328 pg_dumpall.c:344 #: pg_dumpall.c:402 pg_restore.c:279 pg_restore.c:295 pg_restore.c:307 #, c-format @@ -1393,44 +1399,44 @@ msgstr "Ð”Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации попробу msgid "out of on_exit_nicely slots\n" msgstr "превышен предел обработчиков штатного выхода\n" -#: pg_dump.c:503 +#: pg_dump.c:506 #, c-format msgid "compression level must be in range 0..9\n" msgstr "уровень ÑÐ¶Ð°Ñ‚Ð¸Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ быть в диапазоне 0..9\n" -#: pg_dump.c:548 pg_dumpall.c:307 pg_restore.c:293 +#: pg_dump.c:551 pg_dumpall.c:307 pg_restore.c:293 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: Ñлишком много аргументов командной Ñтроки (первый: \"%s\")\n" -#: pg_dump.c:561 +#: pg_dump.c:564 #, c-format msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "параметры -s/--schema-only и -a/--data-only иÑключают друг друга\n" -#: pg_dump.c:567 +#: pg_dump.c:570 #, c-format msgid "options -c/--clean and -a/--data-only cannot be used together\n" msgstr "параметры -c/--clean и -a/--data-only иÑключают друг друга\n" -#: pg_dump.c:573 +#: pg_dump.c:576 #, c-format msgid "" "options --inserts/--column-inserts and -o/--oids cannot be used together\n" msgstr "" "параметры --inserts/--column-inserts и -o/--oids иÑключают друг друга\n" -#: pg_dump.c:574 +#: pg_dump.c:577 #, c-format msgid "(The INSERT command cannot set OIDs.)\n" msgstr "(Ð’ INSERT Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñть OID.)\n" -#: pg_dump.c:579 +#: pg_dump.c:582 #, c-format msgid "option --if-exists requires option -c/--clean\n" msgstr "параметру --if-exists требуетÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ -c/--clean\n" -#: pg_dump.c:601 +#: pg_dump.c:604 #, c-format msgid "" "WARNING: requested compression not available in this installation -- archive " @@ -1439,19 +1445,19 @@ msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹ не поддерживает Ñжатие -- " "архив не будет ÑжиматьÑÑ\n" -#: pg_dump.c:616 +#: pg_dump.c:619 #, c-format -msgid "%s: invalid number of parallel jobs\n" -msgstr "%s: неверное чиÑло параллельных заданий\n" +msgid "invalid number of parallel jobs\n" +msgstr "неверное чиÑло параллельных заданий\n" -#: pg_dump.c:620 +#: pg_dump.c:623 #, c-format msgid "parallel backup only supported by the directory format\n" msgstr "" "параллельное резервное копирование поддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¾Ð¼ \"каталог" "\"\n" -#: pg_dump.c:677 +#: pg_dump.c:680 #, c-format msgid "" "Synchronized snapshots are not supported by this server version.\n" @@ -1462,27 +1468,27 @@ msgstr "" "ЕÑли они вам не нужны, укажите при запуÑке ключ\n" "--no-synchronized-snapshots.\n" -#: pg_dump.c:684 +#: pg_dump.c:687 #, c-format msgid "Exported snapshots are not supported by this server version.\n" msgstr "ЭкÑпортированные Ñнимки не поддерживаютÑÑ Ñтой верÑией Ñервера.\n" -#: pg_dump.c:695 +#: pg_dump.c:706 #, c-format msgid "last built-in OID is %u\n" msgstr "поÑледний ÑиÑтемный OID: %u\n" -#: pg_dump.c:705 +#: pg_dump.c:715 #, c-format msgid "no matching schemas were found\n" msgstr "ÑоответÑтвующие Ñхемы не найдены\n" -#: pg_dump.c:719 +#: pg_dump.c:729 #, c-format msgid "no matching tables were found\n" msgstr "ÑоответÑтвующие таблицы не найдены\n" -#: pg_dump.c:878 +#: pg_dump.c:897 #, c-format msgid "" "%s dumps a database as a text file or to other formats.\n" @@ -1491,17 +1497,17 @@ msgstr "" "%s ÑохранÑет резервную копию БД в текÑтовом файле или другом виде.\n" "\n" -#: pg_dump.c:879 pg_dumpall.c:547 pg_restore.c:437 +#: pg_dump.c:898 pg_dumpall.c:547 pg_restore.c:443 #, c-format msgid "Usage:\n" msgstr "ИÑпользование:\n" -#: pg_dump.c:880 +#: pg_dump.c:899 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [ПÐРÐМЕТР]... [ИМЯ_БД]\n" -#: pg_dump.c:882 pg_dumpall.c:550 pg_restore.c:440 +#: pg_dump.c:901 pg_dumpall.c:550 pg_restore.c:446 #, c-format msgid "" "\n" @@ -1510,12 +1516,12 @@ msgstr "" "\n" "Общие параметры:\n" -#: pg_dump.c:883 +#: pg_dump.c:902 #, c-format msgid " -f, --file=FILENAME output file or directory name\n" msgstr " -f, --file=ИМЯ Ð¸Ð¼Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ файла или каталога\n" -#: pg_dump.c:884 +#: pg_dump.c:903 #, c-format msgid "" " -F, --format=c|d|t|p output file format (custom, directory, tar,\n" @@ -1525,7 +1531,7 @@ msgstr "" " (пользовательÑкий | каталог | tar |\n" " текÑтовый (по умолчанию))\n" -#: pg_dump.c:886 +#: pg_dump.c:905 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to dump\n" msgstr "" @@ -1533,23 +1539,23 @@ msgstr "" "чиÑло\n" " заданий\n" -#: pg_dump.c:887 +#: pg_dump.c:906 pg_dumpall.c:552 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose режим подробных Ñообщений\n" -#: pg_dump.c:888 pg_dumpall.c:552 +#: pg_dump.c:907 pg_dumpall.c:553 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version показать верÑию и выйти\n" -#: pg_dump.c:889 +#: pg_dump.c:908 #, c-format msgid "" " -Z, --compress=0-9 compression level for compressed formats\n" msgstr " -Z, --compress=0-9 уровень ÑÐ¶Ð°Ñ‚Ð¸Ñ Ð¿Ñ€Ð¸ архивации\n" -#: pg_dump.c:890 pg_dumpall.c:553 +#: pg_dump.c:909 pg_dumpall.c:554 #, c-format msgid "" " --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" @@ -1557,12 +1563,12 @@ msgstr "" " --lock-wait-timeout=ТÐЙМÐУТ прервать операцию при таймауте блокировки " "таблицы\n" -#: pg_dump.c:891 pg_dumpall.c:554 +#: pg_dump.c:910 pg_dumpall.c:555 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help показать Ñту Ñправку и выйти\n" -#: pg_dump.c:893 pg_dumpall.c:555 +#: pg_dump.c:912 pg_dumpall.c:556 #, c-format msgid "" "\n" @@ -1571,17 +1577,17 @@ msgstr "" "\n" "Параметры, управлÑющие выводом:\n" -#: pg_dump.c:894 pg_dumpall.c:556 +#: pg_dump.c:913 pg_dumpall.c:557 #, c-format msgid " -a, --data-only dump only the data, not the schema\n" msgstr " -a, --data-only выгрузить только данные, без Ñхемы\n" -#: pg_dump.c:895 +#: pg_dump.c:914 #, c-format msgid " -b, --blobs include large objects in dump\n" msgstr " -b, --blobs выгрузить также большие объекты\n" -#: pg_dump.c:896 pg_restore.c:451 +#: pg_dump.c:915 pg_restore.c:457 #, c-format msgid "" " -c, --clean clean (drop) database objects before " @@ -1590,7 +1596,7 @@ msgstr "" " -c, --clean очиÑтить (удалить) объекты БД при " "воÑÑтановлении\n" -#: pg_dump.c:897 +#: pg_dump.c:916 #, c-format msgid "" " -C, --create include commands to create database in dump\n" @@ -1598,27 +1604,27 @@ msgstr "" " -C, --create добавить в копию команды ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð±Ð°Ð·Ñ‹ " "данных\n" -#: pg_dump.c:898 +#: pg_dump.c:917 #, c-format msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" msgstr " -E, --encoding=КОДИРОВКРвыгружать данные в заданной кодировке\n" -#: pg_dump.c:899 +#: pg_dump.c:918 #, c-format msgid " -n, --schema=SCHEMA dump the named schema(s) only\n" msgstr " -n, --schema=СХЕМРвыгрузить только указанную Ñхему(Ñ‹)\n" -#: pg_dump.c:900 +#: pg_dump.c:919 #, c-format msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n" msgstr " -N, --exclude-schema=СХЕМРÐЕ выгружать указанную Ñхему(Ñ‹)\n" -#: pg_dump.c:901 pg_dumpall.c:559 +#: pg_dump.c:920 pg_dumpall.c:560 #, c-format msgid " -o, --oids include OIDs in dump\n" msgstr " -o, --oids выгружать данные Ñ OID\n" -#: pg_dump.c:902 +#: pg_dump.c:921 #, c-format msgid "" " -O, --no-owner skip restoration of object ownership in\n" @@ -1627,12 +1633,12 @@ msgstr "" " -O, --no-owner не воÑÑтанавливать владение объектами\n" " при иÑпользовании текÑтового формата\n" -#: pg_dump.c:904 pg_dumpall.c:562 +#: pg_dump.c:923 pg_dumpall.c:563 #, c-format msgid " -s, --schema-only dump only the schema, no data\n" msgstr " -s, --schema-only выгрузить только Ñхему, без данных\n" -#: pg_dump.c:905 +#: pg_dump.c:924 #, c-format msgid "" " -S, --superuser=NAME superuser user name to use in plain-text " @@ -1641,27 +1647,27 @@ msgstr "" " -S, --superuser=ИМЯ Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, который будет задейÑтвован\n" " при воÑÑтановлении из текÑтового формата\n" -#: pg_dump.c:906 +#: pg_dump.c:925 #, c-format msgid " -t, --table=TABLE dump the named table(s) only\n" msgstr " -t, --table=ТÐБЛИЦРвыгрузить только указанную таблицу(Ñ‹)\n" -#: pg_dump.c:907 +#: pg_dump.c:926 #, c-format msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n" msgstr " -T, --exclude-table=ТÐБЛИЦРÐЕ выгружать указанную таблицу(Ñ‹)\n" -#: pg_dump.c:908 pg_dumpall.c:565 +#: pg_dump.c:927 pg_dumpall.c:566 #, c-format msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" msgstr " -x, --no-privileges не выгружать права (назначение/отзыв)\n" -#: pg_dump.c:909 pg_dumpall.c:566 +#: pg_dump.c:928 pg_dumpall.c:567 #, c-format msgid " --binary-upgrade for use by upgrade utilities only\n" msgstr " --binary-upgrade только Ð´Ð»Ñ ÑƒÑ‚Ð¸Ð»Ð¸Ñ‚ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð‘Ð”\n" -#: pg_dump.c:910 pg_dumpall.c:567 +#: pg_dump.c:929 pg_dumpall.c:568 #, c-format msgid "" " --column-inserts dump data as INSERT commands with column " @@ -1670,7 +1676,7 @@ msgstr "" " --column-inserts выгружать данные в виде INSERT Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸ " "Ñтолбцов\n" -#: pg_dump.c:911 pg_dumpall.c:568 +#: pg_dump.c:930 pg_dumpall.c:569 #, c-format msgid "" " --disable-dollar-quoting disable dollar quoting, use SQL standard " @@ -1679,7 +1685,7 @@ msgstr "" " --disable-dollar-quoting отключить ÑпецÑтроки Ñ $, выводить Ñтроки\n" " по Ñтандарту SQL\n" -#: pg_dump.c:912 pg_dumpall.c:569 pg_restore.c:467 +#: pg_dump.c:931 pg_dumpall.c:570 pg_restore.c:473 #, c-format msgid "" " --disable-triggers disable triggers during data-only restore\n" @@ -1687,7 +1693,7 @@ msgstr "" " --disable-triggers отключить триггеры при воÑÑтановлении\n" " только данных, без Ñхемы\n" -#: pg_dump.c:913 +#: pg_dump.c:932 #, c-format msgid "" " --enable-row-security enable row security (dump only content user " @@ -1698,19 +1704,19 @@ msgstr "" "только\n" " те данные, которые доÑтупны пользователю)\n" -#: pg_dump.c:915 +#: pg_dump.c:934 #, c-format msgid "" " --exclude-table-data=TABLE do NOT dump data for the named table(s)\n" msgstr " --exclude-table-data=ТÐБЛИЦРÐЕ выгружать указанную таблицу(Ñ‹)\n" -#: pg_dump.c:916 pg_dumpall.c:570 pg_restore.c:469 +#: pg_dump.c:935 pg_dumpall.c:571 pg_restore.c:475 #, c-format msgid " --if-exists use IF EXISTS when dropping objects\n" msgstr "" " --if-exists применÑть IF EXISTS при удалении объектов\n" -#: pg_dump.c:917 pg_dumpall.c:571 +#: pg_dump.c:936 pg_dumpall.c:572 #, c-format msgid "" " --inserts dump data as INSERT commands, rather than " @@ -1719,13 +1725,13 @@ msgstr "" " --inserts выгрузить данные в виде команд INSERT, не " "COPY\n" -#: pg_dump.c:918 pg_dumpall.c:572 +#: pg_dump.c:937 pg_dumpall.c:573 #, c-format msgid " --no-security-labels do not dump security label assignments\n" msgstr "" " --no-security-labels не выгружать Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ðº безопаÑноÑти\n" -#: pg_dump.c:919 +#: pg_dump.c:938 #, c-format msgid "" " --no-synchronized-snapshots do not use synchronized snapshots in parallel " @@ -1734,20 +1740,20 @@ msgstr "" " --no-synchronized-snapshots не иÑпользовать Ñинхронизированные Ñнимки\n" " в параллельных заданиÑÑ…\n" -#: pg_dump.c:920 pg_dumpall.c:573 +#: pg_dump.c:939 pg_dumpall.c:574 #, c-format msgid " --no-tablespaces do not dump tablespace assignments\n" msgstr "" " --no-tablespaces не выгружать Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ‡Ð½Ñ‹Ñ… " "проÑтранÑтв\n" -#: pg_dump.c:921 pg_dumpall.c:574 +#: pg_dump.c:940 pg_dumpall.c:575 #, c-format msgid " --no-unlogged-table-data do not dump unlogged table data\n" msgstr "" " --no-unlogged-table-data не выгружать данные нежурналируемых таблиц\n" -#: pg_dump.c:922 pg_dumpall.c:575 +#: pg_dump.c:941 pg_dumpall.c:576 #, c-format msgid "" " --quote-all-identifiers quote all identifiers, even if not key words\n" @@ -1755,7 +1761,7 @@ msgstr "" " --quote-all-identifiers заключать в кавычки вÑе идентификаторы,\n" " а не только ключевые Ñлова\n" -#: pg_dump.c:923 +#: pg_dump.c:942 #, c-format msgid "" " --section=SECTION dump named section (pre-data, data, or post-" @@ -1764,7 +1770,7 @@ msgstr "" " --section=РÐЗДЕЛ выгрузить заданный раздел\n" " (pre-data, data или post-data)\n" -#: pg_dump.c:924 +#: pg_dump.c:943 #, c-format msgid "" " --serializable-deferrable wait until the dump can run without " @@ -1773,13 +1779,13 @@ msgstr "" " --serializable-deferrable дождатьÑÑ Ð¼Ð¾Ð¼ÐµÐ½Ñ‚Ð° Ð´Ð»Ñ Ð²Ñ‹Ð³Ñ€ÑƒÐ·ÐºÐ¸ данных без " "аномалий\n" -#: pg_dump.c:925 +#: pg_dump.c:944 #, c-format msgid " --snapshot=SNAPSHOT use given snapshot for the dump\n" msgstr "" " --snapshot=СÐИМОК иÑпользовать при выгрузке заданный Ñнимок\n" -#: pg_dump.c:926 pg_restore.c:475 +#: pg_dump.c:945 pg_restore.c:481 #, c-format msgid "" " --strict-names require table and/or schema include patterns " @@ -1792,7 +1798,7 @@ msgstr "" "минимум\n" " один объект\n" -#: pg_dump.c:928 pg_dumpall.c:576 pg_restore.c:477 +#: pg_dump.c:947 pg_dumpall.c:577 pg_restore.c:483 #, c-format msgid "" " --use-set-session-authorization\n" @@ -1804,7 +1810,7 @@ msgstr "" " уÑтанавливать владельца, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹\n" " SET SESSION AUTHORIZATION вмеÑто ALTER OWNER\n" -#: pg_dump.c:932 pg_dumpall.c:580 pg_restore.c:481 +#: pg_dump.c:951 pg_dumpall.c:581 pg_restore.c:487 #, c-format msgid "" "\n" @@ -1813,33 +1819,33 @@ msgstr "" "\n" "Параметры подключениÑ:\n" -#: pg_dump.c:933 +#: pg_dump.c:952 #, c-format msgid " -d, --dbname=DBNAME database to dump\n" msgstr " -d, --dbname=БД Ð¸Ð¼Ñ Ð±Ð°Ð·Ñ‹ данных Ð´Ð»Ñ Ð²Ñ‹Ð³Ñ€ÑƒÐ·ÐºÐ¸\n" -#: pg_dump.c:934 pg_dumpall.c:582 pg_restore.c:482 +#: pg_dump.c:953 pg_dumpall.c:583 pg_restore.c:488 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" " -h, --host=ИМЯ Ð¸Ð¼Ñ Ñервера баз данных или каталог Ñокетов\n" -#: pg_dump.c:935 pg_dumpall.c:584 pg_restore.c:483 +#: pg_dump.c:954 pg_dumpall.c:585 pg_restore.c:489 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=ПОРТ номер порта Ñервера БД\n" -#: pg_dump.c:936 pg_dumpall.c:585 pg_restore.c:484 +#: pg_dump.c:955 pg_dumpall.c:586 pg_restore.c:490 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=ИМЯ Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð±Ð°Ð· данных\n" -#: pg_dump.c:937 pg_dumpall.c:586 pg_restore.c:485 +#: pg_dump.c:956 pg_dumpall.c:587 pg_restore.c:491 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password не запрашивать пароль\n" -#: pg_dump.c:938 pg_dumpall.c:587 pg_restore.c:486 +#: pg_dump.c:957 pg_dumpall.c:588 pg_restore.c:492 #, c-format msgid "" " -W, --password force password prompt (should happen " @@ -1847,12 +1853,12 @@ msgid "" msgstr "" " -W, --password запрашивать пароль вÑегда (обычно не требуетÑÑ)\n" -#: pg_dump.c:939 pg_dumpall.c:588 +#: pg_dump.c:958 pg_dumpall.c:589 #, c-format msgid " --role=ROLENAME do SET ROLE before dump\n" msgstr " --role=ИМЯ_РОЛИ выполнить SET ROLE перед выгрузкой\n" -#: pg_dump.c:941 +#: pg_dump.c:960 #, c-format msgid "" "\n" @@ -1865,196 +1871,208 @@ msgstr "" "PGDATABASE.\n" "\n" -#: pg_dump.c:943 pg_dumpall.c:592 pg_restore.c:493 +#: pg_dump.c:962 pg_dumpall.c:593 pg_restore.c:499 #, c-format msgid "Report bugs to .\n" msgstr "Об ошибках Ñообщайте по адреÑу .\n" -#: pg_dump.c:960 +#: pg_dump.c:979 #, c-format msgid "invalid client encoding \"%s\" specified\n" msgstr "указана Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚ÑÐºÐ°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ° \"%s\"\n" -#: pg_dump.c:1102 +#: pg_dump.c:1121 #, c-format msgid "" "Synchronized snapshots are not supported on standby servers.\n" "Run with --no-synchronized-snapshots instead if you do not need\n" "synchronized snapshots.\n" msgstr "" -"Ðа резервных Ñерверах Ñинхронизированные Ñнимки не поддерживаютÑÑ.\n" +"Ðа ведомых Ñерверах Ñинхронизированные Ñнимки не поддерживаютÑÑ.\n" "ЕÑли они вам не нужны, укажите при запуÑке ключ\n" "--no-synchronized-snapshots.\n" -#: pg_dump.c:1171 +#: pg_dump.c:1190 #, c-format msgid "invalid output format \"%s\" specified\n" msgstr "указан неверный формат вывода: \"%s\"\n" -#: pg_dump.c:1194 +#: pg_dump.c:1213 #, c-format msgid "server version must be at least 7.3 to use schema selection switches\n" msgstr "" "Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð² выбора Ñхемы нужен Ñервер верÑии 7.3 или новее\n" -#: pg_dump.c:1212 pg_dump.c:1265 +#: pg_dump.c:1231 +#, c-format +msgid "no matching schemas were found for pattern \"%s\"\n" +msgstr "Ñхемы, ÑоответÑтвующие шаблону \"%s\", не найдены\n" + +#: pg_dump.c:1284 #, c-format msgid "no matching tables were found for pattern \"%s\"\n" msgstr "таблицы, ÑоответÑтвующие шаблону \"%s\", не найдены\n" -#: pg_dump.c:1652 +#: pg_dump.c:1671 #, c-format msgid "dumping contents of table \"%s.%s\"\n" msgstr "выгрузка Ñодержимого таблицы \"%s.%s\"\n" -#: pg_dump.c:1776 +#: pg_dump.c:1795 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" msgstr "Ошибка выгрузки таблицы \"%s\": Ñбой в PQendcopy().\n" -#: pg_dump.c:1777 pg_dump.c:1787 +#: pg_dump.c:1796 pg_dump.c:1806 #, c-format msgid "Error message from server: %s" msgstr "Сообщение об ошибке Ñ Ñервера: %s" -#: pg_dump.c:1778 pg_dump.c:1788 +#: pg_dump.c:1797 pg_dump.c:1807 #, c-format msgid "The command was: %s\n" msgstr "ВыполнÑлаÑÑŒ команда: %s\n" -#: pg_dump.c:1786 +#: pg_dump.c:1805 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetResult() failed.\n" msgstr "Ошибка выгрузки таблицы \"%s\": Ñбой в PQgetResult().\n" -#: pg_dump.c:2435 +#: pg_dump.c:2454 #, c-format msgid "saving database definition\n" msgstr "Ñохранение Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð±Ð°Ð·Ñ‹ данных\n" -#: pg_dump.c:2769 +#: pg_dump.c:2788 #, c-format msgid "saving encoding = %s\n" msgstr "Ñохранение кодировки (%s)\n" -#: pg_dump.c:2796 +#: pg_dump.c:2815 #, c-format msgid "saving standard_conforming_strings = %s\n" msgstr "Ñохранение standard_conforming_strings (%s)\n" -#: pg_dump.c:2836 +#: pg_dump.c:2855 #, c-format msgid "reading large objects\n" msgstr "чтение больших объектов\n" -#: pg_dump.c:3022 +#: pg_dump.c:3056 #, c-format msgid "saving large objects\n" msgstr "Ñохранение больших объектов\n" -#: pg_dump.c:3069 +#: pg_dump.c:3103 #, c-format msgid "error reading large object %u: %s" msgstr "ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð³Ð¾ объекта %u: %s" -#: pg_dump.c:3121 +#: pg_dump.c:3155 #, c-format msgid "reading row security enabled for table \"%s.%s\"\n" msgstr "чтение информации о защите Ñтрок Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s.%s\"\n" -#: pg_dump.c:3152 +#: pg_dump.c:3186 #, c-format msgid "reading policies for table \"%s.%s\"\n" msgstr "чтение политик таблицы \"%s.%s\"\n" -#: pg_dump.c:3285 +#: pg_dump.c:3319 #, c-format msgid "unexpected policy command type: \"%s\"\n" msgstr "нераÑпознанный тип команды в политике: \"%s\"\n" -#: pg_dump.c:3504 +#: pg_dump.c:3538 #, c-format msgid "could not find parent extension for %s\n" msgstr "не удалоÑÑŒ найти родительÑкое раÑширение Ð´Ð»Ñ %s\n" # TO REVIEW -#: pg_dump.c:3672 +#: pg_dump.c:3731 #, c-format msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: у Ñхемы \"%s\" по-видимому неправильный владелец\n" -#: pg_dump.c:3715 +#: pg_dump.c:3774 #, c-format msgid "schema with OID %u does not exist\n" msgstr "Ñхема Ñ OID %u не ÑущеÑтвует\n" -#: pg_dump.c:4130 +#: pg_dump.c:4189 #, c-format msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: у типа данных \"%s\" по-видимому неправильный владелец\n" -#: pg_dump.c:4244 +#: pg_dump.c:4303 #, c-format msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: у оператора \"%s\" по-видимому неправильный владелец\n" -#: pg_dump.c:4589 +#: pg_dump.c:4648 #, c-format msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: у клаÑÑа операторов \"%s\" по-видимому неправильный " "владелец\n" -#: pg_dump.c:4680 +#: pg_dump.c:4739 #, c-format msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: у ÑемейÑтва операторов \"%s\" по-видимому неправильный " "владелец\n" -#: pg_dump.c:4881 +#: pg_dump.c:4940 #, c-format msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: у агрегатной функции \"%s\" по-видимому неправильный " "владелец\n" -#: pg_dump.c:5153 +#: pg_dump.c:5237 #, c-format msgid "WARNING: owner of function \"%s\" appears to be invalid\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: у функции \"%s\" по-видимому неправильный владелец\n" -#: pg_dump.c:6015 +#: pg_dump.c:6099 #, c-format msgid "WARNING: owner of table \"%s\" appears to be invalid\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: у таблицы \"%s\" по-видимому неправильный владелец\n" -#: pg_dump.c:6181 +#: pg_dump.c:6141 pg_dump.c:16665 +#, c-format +msgid "failed sanity check, parent table OID %u of sequence OID %u not found\n" +msgstr "" +"нарушение целоÑтноÑти: по OID %u не удалоÑÑŒ найти родительÑкую таблицу " +"поÑледовательноÑти Ñ OID %u\n" + +#: pg_dump.c:6268 #, c-format msgid "reading indexes for table \"%s.%s\"\n" msgstr "чтение индекÑов таблицы \"%s.%s\"\n" -#: pg_dump.c:6549 +#: pg_dump.c:6636 #, c-format msgid "reading foreign key constraints for table \"%s.%s\"\n" msgstr "чтение ограничений внешних ключей таблицы \"%s.%s\"\n" -#: pg_dump.c:6795 +#: pg_dump.c:6882 #, c-format msgid "" "failed sanity check, parent table OID %u of pg_rewrite entry OID %u not " "found\n" msgstr "" -"по OID %u не удалоÑÑŒ найти родительÑкую таблицу Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи pg_rewrite Ñ OID " -"%u\n" +"нарушение целоÑтноÑти: по OID %u не удалоÑÑŒ найти родительÑкую таблицу Ð´Ð»Ñ " +"запиÑи pg_rewrite Ñ OID %u\n" -#: pg_dump.c:6889 +#: pg_dump.c:6976 #, c-format msgid "reading triggers for table \"%s.%s\"\n" msgstr "чтение триггеров таблицы \"%s.%s\"\n" -#: pg_dump.c:7054 +#: pg_dump.c:7141 #, c-format msgid "" "query produced null referenced table name for foreign key trigger \"%s\" on " @@ -2063,32 +2081,32 @@ msgstr "" "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ вернул Ð¸Ð¼Ñ Ñ†ÐµÐ»ÐµÐ²Ð¾Ð¹ таблицы Ð´Ð»Ñ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð° внешнего ключа \"%s\" в " "таблице \"%s\" (OID целевой таблицы: %u)\n" -#: pg_dump.c:7709 +#: pg_dump.c:7796 #, c-format msgid "finding the columns and types of table \"%s.%s\"\n" msgstr "поиÑк Ñтолбцов и типов таблицы \"%s.%s\"\n" -#: pg_dump.c:7888 +#: pg_dump.c:7975 #, c-format msgid "invalid column numbering in table \"%s\"\n" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð½ÑƒÐ¼ÐµÑ€Ð°Ñ†Ð¸Ñ Ñтолбцов в таблице \"%s\"\n" -#: pg_dump.c:7922 +#: pg_dump.c:8009 #, c-format msgid "finding default expressions of table \"%s.%s\"\n" msgstr "поиÑк выражений по умолчанию Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s.%s\"\n" -#: pg_dump.c:7975 +#: pg_dump.c:8062 #, c-format msgid "invalid adnum value %d for table \"%s\"\n" msgstr "неверное значение adnum (%d) в таблице \"%s\"\n" -#: pg_dump.c:8047 +#: pg_dump.c:8134 #, c-format msgid "finding check constraints for table \"%s.%s\"\n" msgstr "поиÑк ограничений-проверок Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s.%s\"\n" -#: pg_dump.c:8143 +#: pg_dump.c:8230 #, c-format msgid "expected %d check constraint on table \"%s\" but found %d\n" msgid_plural "expected %d check constraints on table \"%s\" but found %d\n" @@ -2099,67 +2117,72 @@ msgstr[1] "" msgstr[2] "" "ожидалоÑÑŒ %d ограничений-проверок Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\", но найдено: %d\n" -#: pg_dump.c:8147 +#: pg_dump.c:8234 #, c-format msgid "(The system catalogs might be corrupted.)\n" msgstr "(Возможно повреждены ÑиÑтемные каталоги.)\n" -#: pg_dump.c:9679 +#: pg_dump.c:9813 #, c-format msgid "WARNING: typtype of data type \"%s\" appears to be invalid\n" msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: у типа данных \"%s\" по-видимому неправильный тип типа\n" -#: pg_dump.c:11221 +#: pg_dump.c:11355 #, c-format msgid "WARNING: bogus value in proargmodes array\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: неприемлемое значение в маÑÑиве proargmodes\n" -#: pg_dump.c:11599 +#: pg_dump.c:11733 #, c-format msgid "WARNING: could not parse proallargtypes array\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: не удалоÑÑŒ разобрать маÑÑив proallargtypes\n" -#: pg_dump.c:11615 +#: pg_dump.c:11749 #, c-format msgid "WARNING: could not parse proargmodes array\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: не удалоÑÑŒ разобрать маÑÑив proargmodes\n" -#: pg_dump.c:11629 +#: pg_dump.c:11763 #, c-format msgid "WARNING: could not parse proargnames array\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: не удалоÑÑŒ разобрать маÑÑив proargnames\n" -#: pg_dump.c:11640 +#: pg_dump.c:11774 #, c-format msgid "WARNING: could not parse proconfig array\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: не удалоÑÑŒ разобрать маÑÑив proconfig\n" # TO REVEIW -#: pg_dump.c:11711 +#: pg_dump.c:11845 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" msgstr "недопуÑтимое значение provolatile Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ \"%s\"\n" # TO REVEIW -#: pg_dump.c:11755 pg_dump.c:13798 +#: pg_dump.c:11889 pg_dump.c:13950 #, c-format msgid "unrecognized proparallel value for function \"%s\"\n" msgstr "недопуÑтимое значение proparallel Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ \"%s\"\n" -#: pg_dump.c:11907 +#: pg_dump.c:11997 pg_dump.c:12107 pg_dump.c:12114 +#, c-format +msgid "could not find function definition for function with OID %u\n" +msgstr "не удалоÑÑŒ найти определение функции Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Ñ OID %u\n" + +#: pg_dump.c:12042 #, c-format msgid "WARNING: bogus value in pg_cast.castfunc or pg_cast.castmethod field\n" msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: неприемлемое значение в поле pg_cast.castfunc или pg_cast." "castmethod\n" -#: pg_dump.c:11910 +#: pg_dump.c:12045 #, c-format msgid "WARNING: bogus value in pg_cast.castmethod field\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: неприемлемое значение в поле pg_cast.castmethod\n" -#: pg_dump.c:11998 +#: pg_dump.c:12135 #, c-format msgid "" "WARNING: bogus transform definition, at least one of trffromsql and trftosql " @@ -2168,27 +2191,27 @@ msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: неприемлемое определение Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ (trffromsql или " "trftosql должно быть ненулевым)\n" -#: pg_dump.c:12015 +#: pg_dump.c:12152 #, c-format msgid "WARNING: bogus value in pg_transform.trffromsql field\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: неприемлемое значение в поле pg_transform.trffromsql\n" -#: pg_dump.c:12036 +#: pg_dump.c:12173 #, c-format msgid "WARNING: bogus value in pg_transform.trftosql field\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: неприемлемое значение в поле pg_transform.trftosql\n" -#: pg_dump.c:12427 +#: pg_dump.c:12564 #, c-format msgid "WARNING: could not find operator with OID %s\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: оператор Ñ OID %s не найден\n" -#: pg_dump.c:12491 +#: pg_dump.c:12628 #, c-format msgid "WARNING: invalid type \"%c\" of access method \"%s\"\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: неверный тип \"%c\" метода доÑтупа \"%s\"\n" -#: pg_dump.c:13689 +#: pg_dump.c:13841 #, c-format msgid "" "WARNING: aggregate function %s could not be dumped correctly for this " @@ -2197,17 +2220,17 @@ msgstr "" "ПРЕДУПРЕЖДЕÐИЕ: Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ %s не может быть правильно выгружена Ð´Ð»Ñ " "Ñтой верÑии базы данных; Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€Ð¾Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð°\n" -#: pg_dump.c:14561 +#: pg_dump.c:14713 #, c-format msgid "unrecognized object type in default privileges: %d\n" msgstr "нераÑпознанный тип объекта в определении прав по умолчанию: %d)\n" -#: pg_dump.c:14576 +#: pg_dump.c:14731 #, c-format msgid "could not parse default ACL list (%s)\n" msgstr "не удалоÑÑŒ разобрать ÑпиÑок прав по умолчанию (%s)\n" -#: pg_dump.c:14647 +#: pg_dump.c:14812 #, c-format msgid "" "could not parse initial GRANT ACL list (%s) or initial REVOKE ACL list (%s) " @@ -2216,7 +2239,7 @@ msgstr "" "не удалоÑÑŒ разобрать изначальный ÑпиÑок GRANT ACL (%s) или изначальный " "ÑпиÑок REVOKE ACL (%s) Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° \"%s\" (%s)\n" -#: pg_dump.c:14655 +#: pg_dump.c:14820 #, c-format msgid "" "could not parse GRANT ACL list (%s) or REVOKE ACL list (%s) for object \"%s" @@ -2225,13 +2248,13 @@ msgstr "" "не удалоÑÑŒ разобрать ÑпиÑок GRANT ACL (%s) или ÑпиÑок REVOKE ACL (%s) Ð´Ð»Ñ " "объекта \"%s\" (%s)\n" -#: pg_dump.c:15139 +#: pg_dump.c:15305 #, c-format msgid "query to obtain definition of view \"%s\" returned no data\n" msgstr "" "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° получение Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" не возвратил данные\n" -#: pg_dump.c:15142 +#: pg_dump.c:15308 #, c-format msgid "" "query to obtain definition of view \"%s\" returned more than one definition\n" @@ -2239,27 +2262,27 @@ msgstr "" "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" возвратил неÑколько " "определений\n" -#: pg_dump.c:15149 +#: pg_dump.c:15315 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)\n" msgstr "определение предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"%s\" пуÑтое (длина равна нулю)\n" -#: pg_dump.c:15908 +#: pg_dump.c:16074 #, c-format msgid "invalid column number %d for table \"%s\"\n" msgstr "неверный номер Ñтолбца %d Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\"\n" -#: pg_dump.c:16037 +#: pg_dump.c:16203 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "отÑутÑтвует Ð¸Ð½Ð´ÐµÐºÑ Ð´Ð»Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ \"%s\"\n" -#: pg_dump.c:16240 +#: pg_dump.c:16406 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "нераÑпознанный тип ограничениÑ: %c\n" -#: pg_dump.c:16394 pg_dump.c:16563 +#: pg_dump.c:16560 pg_dump.c:16733 #, c-format msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" msgid_plural "" @@ -2274,23 +2297,23 @@ msgstr[2] "" "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° получение данных поÑледовательноÑти \"%s\" вернул %d Ñтрок " "(ожидалаÑÑŒ 1)\n" -#: pg_dump.c:16405 +#: pg_dump.c:16571 #, c-format msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" msgstr "" "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° получение данных поÑледовательноÑти \"%s\" вернул Ð¸Ð¼Ñ \"%s\"\n" -#: pg_dump.c:16661 +#: pg_dump.c:16831 #, c-format msgid "unexpected tgtype value: %d\n" msgstr "неожиданное значение tgtype: %d\n" -#: pg_dump.c:16743 +#: pg_dump.c:16913 #, c-format msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñтрока аргументов (%s) Ð´Ð»Ñ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð° \"%s\" таблицы \"%s\"\n" -#: pg_dump.c:16940 +#: pg_dump.c:17120 #, c-format msgid "" "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows " @@ -2299,12 +2322,12 @@ msgstr "" "Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° получение правила \"%s\" Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ \"%s\" возвратил неверное " "чиÑло Ñтрок\n" -#: pg_dump.c:17329 +#: pg_dump.c:17509 #, c-format msgid "reading dependency data\n" msgstr "чтение данных о завиÑимоÑÑ‚ÑÑ…\n" -#: pg_dump.c:17886 +#: pg_dump.c:18066 #, c-format msgid "WARNING: could not parse reloptions array\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: не удалоÑÑŒ разобрать маÑÑив reloptions\n" @@ -2380,7 +2403,7 @@ msgid "" msgstr "" "Ð”Ð»Ñ %s необходима программа \"pg_dump\", но она не найдена\n" "в каталоге \"%s\".\n" -"Проверьте вашу уÑтановку PostgreSQL.\n" +"Проверьте правильноÑть уÑтановки СУБД.\n" #: pg_dumpall.c:187 #, c-format @@ -2391,7 +2414,7 @@ msgid "" msgstr "" "Программа \"pg_dump\" найдена в \"%s\",\n" "но её верÑÐ¸Ñ Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÐµÑ‚ÑÑ Ð¾Ñ‚ верÑии %s.\n" -"Проверьте вашу уÑтановку PostgreSQL.\n" +"Проверьте правильноÑть уÑтановки СУБД.\n" #: pg_dumpall.c:317 #, c-format @@ -2409,7 +2432,7 @@ msgstr "" "%s: параметры -g/--globals-only и -t/--tablespaces-only иÑключают друг " "друга\n" -#: pg_dumpall.c:335 pg_restore.c:345 +#: pg_dumpall.c:335 pg_restore.c:361 #, c-format msgid "%s: option --if-exists requires option -c/--clean\n" msgstr "%s: параметру --if-exists требуетÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ -c/--clean\n" @@ -2422,7 +2445,7 @@ msgid "" msgstr "" "%s: параметры -r/--roles-only и -t/--tablespaces-only иÑключают друг друга\n" -#: pg_dumpall.c:384 pg_dumpall.c:1994 +#: pg_dumpall.c:384 pg_dumpall.c:1995 #, c-format msgid "%s: could not connect to database \"%s\"\n" msgstr "%s: не удалоÑÑŒ подключитьÑÑ Ðº базе данных: \"%s\"\n" @@ -2460,7 +2483,7 @@ msgstr " %s [ПÐРÐМЕТР]...\n" msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=ИМЯ_ФÐÐ™Ð›Ð Ð¸Ð¼Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ файла\n" -#: pg_dumpall.c:557 +#: pg_dumpall.c:558 #, c-format msgid "" " -c, --clean clean (drop) databases before recreating\n" @@ -2468,18 +2491,18 @@ msgstr "" " -c, --clean очиÑтить (удалить) базы данных перед\n" " воÑÑтановлением\n" -#: pg_dumpall.c:558 +#: pg_dumpall.c:559 #, c-format msgid " -g, --globals-only dump only global objects, no databases\n" msgstr "" " -g, --globals-only выгрузить только глобальные объекты, без баз\n" -#: pg_dumpall.c:560 pg_restore.c:459 +#: pg_dumpall.c:561 pg_restore.c:465 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr " -O, --no-owner не воÑÑтанавливать владение объектами\n" -#: pg_dumpall.c:561 +#: pg_dumpall.c:562 #, c-format msgid "" " -r, --roles-only dump only roles, no databases or tablespaces\n" @@ -2487,13 +2510,13 @@ msgstr "" " -r, --roles-only выгрузить только роли, без баз данных\n" " и табличных проÑтранÑтв\n" -#: pg_dumpall.c:563 +#: pg_dumpall.c:564 #, c-format msgid " -S, --superuser=NAME superuser user name to use in the dump\n" msgstr "" " -S, --superuser=ИМЯ Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð²Ñ‹Ð³Ñ€ÑƒÐ·ÐºÐ¸\n" -#: pg_dumpall.c:564 +#: pg_dumpall.c:565 #, c-format msgid "" " -t, --tablespaces-only dump only tablespaces, no databases or roles\n" @@ -2501,17 +2524,17 @@ msgstr "" " -t, --tablespaces-only выгружать только табличные проÑтранÑтва,\n" " без баз данных и ролей\n" -#: pg_dumpall.c:581 +#: pg_dumpall.c:582 #, c-format msgid " -d, --dbname=CONNSTR connect using connection string\n" msgstr " -d, --dbname=СТРОКРподключитьÑÑ Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ Ñтрокой подключениÑ\n" -#: pg_dumpall.c:583 +#: pg_dumpall.c:584 #, c-format msgid " -l, --database=DBNAME alternative default database\n" msgstr " -l, --database=ИМЯ_БД выбор другой базы данных по умолчанию\n" -#: pg_dumpall.c:590 +#: pg_dumpall.c:591 #, c-format msgid "" "\n" @@ -2525,71 +2548,71 @@ msgstr "" "вывод.\n" "\n" -#: pg_dumpall.c:791 +#: pg_dumpall.c:792 #, c-format msgid "%s: role name starting with \"pg_\" skipped (%s)\n" msgstr "%s: Ð¸Ð¼Ñ Ñ€Ð¾Ð»Ð¸, начинающееÑÑ Ñ \"pg_\", пропущено (%s)\n" -#: pg_dumpall.c:1168 +#: pg_dumpall.c:1169 #, c-format msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n" msgstr "" "%s: не удалоÑÑŒ разобрать ÑпиÑок ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ñтупом (%s) Ð´Ð»Ñ Ñ‚Ð°Ð±Ð». " "проÑтранÑтва \"%s\"\n" -#: pg_dumpall.c:1536 +#: pg_dumpall.c:1537 #, c-format msgid "%s: could not parse ACL list (%s) for database \"%s\"\n" msgstr "" "%s: не удалоÑÑŒ разобрать ÑпиÑок ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ñтупом (%s) Ð´Ð»Ñ Ð±Ð°Ð·Ñ‹ данных \"%s" "\"\n" -#: pg_dumpall.c:1754 +#: pg_dumpall.c:1755 #, c-format msgid "%s: dumping database \"%s\"...\n" msgstr "%s: выгрузка базы данных \"%s\"...\n" -#: pg_dumpall.c:1778 +#: pg_dumpall.c:1779 #, c-format msgid "%s: pg_dump failed on database \"%s\", exiting\n" msgstr "%s: ошибка pg_dump Ð´Ð»Ñ Ð±Ð°Ð·Ñ‹ данных \"%s\", выход...\n" -#: pg_dumpall.c:1787 +#: pg_dumpall.c:1788 #, c-format msgid "%s: could not re-open the output file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ повторно открыть выходной файл \"%s\": %s\n" -#: pg_dumpall.c:1832 +#: pg_dumpall.c:1833 #, c-format msgid "%s: running \"%s\"\n" msgstr "%s: выполнÑетÑÑ \"%s\"\n" -#: pg_dumpall.c:2016 +#: pg_dumpall.c:2017 #, c-format msgid "%s: could not connect to database \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ подключитьÑÑ Ðº базе \"%s\": %s\n" -#: pg_dumpall.c:2046 +#: pg_dumpall.c:2047 #, c-format msgid "%s: could not get server version\n" msgstr "%s: не удалоÑÑŒ узнать верÑию Ñервера\n" -#: pg_dumpall.c:2052 +#: pg_dumpall.c:2053 #, c-format msgid "%s: could not parse server version \"%s\"\n" msgstr "%s: не удалоÑÑŒ разобрать Ñтроку верÑии Ñервера \"%s\"\n" -#: pg_dumpall.c:2130 pg_dumpall.c:2156 +#: pg_dumpall.c:2131 pg_dumpall.c:2157 #, c-format msgid "%s: executing %s\n" msgstr "%s: выполнÑетÑÑ %s\n" -#: pg_dumpall.c:2136 pg_dumpall.c:2162 +#: pg_dumpall.c:2137 pg_dumpall.c:2163 #, c-format msgid "%s: query failed: %s" msgstr "%s: ошибка при выполнении запроÑа: %s" -#: pg_dumpall.c:2138 pg_dumpall.c:2164 +#: pg_dumpall.c:2139 pg_dumpall.c:2165 #, c-format msgid "%s: query was: %s\n" msgstr "%s: запроÑ: %s\n" @@ -2611,29 +2634,34 @@ msgstr "%s: параметры -s/--schema-only и -a/--data-only иÑключа msgid "%s: options -c/--clean and -a/--data-only cannot be used together\n" msgstr "%s: параметры -c/--clean and -a/--data-only иÑключают друг друга\n" -#: pg_restore.c:331 +#: pg_restore.c:330 +#, c-format +msgid "%s: invalid number of parallel jobs\n" +msgstr "%s: неверное чиÑло параллельных заданий\n" + +#: pg_restore.c:338 +#, c-format +msgid "%s: maximum number of parallel jobs is %d\n" +msgstr "%s: макÑимальное чиÑло параллельных заданий равно %d\n" + +#: pg_restore.c:347 #, c-format msgid "%s: cannot specify both --single-transaction and multiple jobs\n" msgstr "" "%s: параметр --single-transaction допуÑкаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ Ð¾Ð´Ð½Ð¸Ð¼ заданием\n" -#: pg_restore.c:372 +#: pg_restore.c:388 #, c-format msgid "" "unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"t\"\n" msgstr "нераÑпознанный формат архива \"%s\"; укажите \"c\", \"d\" или \"t\"\n" -#: pg_restore.c:404 -#, c-format -msgid "%s: maximum number of parallel jobs is %d\n" -msgstr "%s: макÑимальное чиÑло параллельных заданий равно %d\n" - -#: pg_restore.c:422 +#: pg_restore.c:428 #, c-format msgid "WARNING: errors ignored on restore: %d\n" msgstr "ПРЕДУПРЕЖДЕÐИЕ: при воÑÑтановлении проигнорировано ошибок: %d\n" -#: pg_restore.c:436 +#: pg_restore.c:442 #, c-format msgid "" "%s restores a PostgreSQL database from an archive created by pg_dump.\n" @@ -2643,48 +2671,48 @@ msgstr "" "pg_dump.\n" "\n" -#: pg_restore.c:438 +#: pg_restore.c:444 #, c-format msgid " %s [OPTION]... [FILE]\n" msgstr " %s [ПÐРÐМЕТР]... [ФÐЙЛ]\n" -#: pg_restore.c:441 +#: pg_restore.c:447 #, c-format msgid " -d, --dbname=NAME connect to database name\n" msgstr " -d, --dbname=БД подключитьÑÑ Ðº указанной базе данных\n" -#: pg_restore.c:442 +#: pg_restore.c:448 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=ИМЯ_ФÐÐ™Ð›Ð Ð¸Ð¼Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ файла\n" -#: pg_restore.c:443 +#: pg_restore.c:449 #, c-format msgid " -F, --format=c|d|t backup file format (should be automatic)\n" msgstr "" " -F, --format=c|d|t формат файла (должен определÑтьÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки)\n" -#: pg_restore.c:444 +#: pg_restore.c:450 #, c-format msgid " -l, --list print summarized TOC of the archive\n" msgstr " -l, --list вывеÑти краткое оглавление архива\n" -#: pg_restore.c:445 +#: pg_restore.c:451 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose выводить подробные ÑообщениÑ\n" -#: pg_restore.c:446 +#: pg_restore.c:452 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version показать верÑию и выйти\n" -#: pg_restore.c:447 +#: pg_restore.c:453 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help показать Ñту Ñправку и выйти\n" -#: pg_restore.c:449 +#: pg_restore.c:455 #, c-format msgid "" "\n" @@ -2693,35 +2721,35 @@ msgstr "" "\n" "Параметры, управлÑющие воÑÑтановлением:\n" -#: pg_restore.c:450 +#: pg_restore.c:456 #, c-format msgid " -a, --data-only restore only the data, no schema\n" msgstr " -a, --data-only воÑÑтановить только данные, без Ñхемы\n" -#: pg_restore.c:452 +#: pg_restore.c:458 #, c-format msgid " -C, --create create the target database\n" msgstr " -C, --create Ñоздать целевую базу данных\n" -#: pg_restore.c:453 +#: pg_restore.c:459 #, c-format msgid " -e, --exit-on-error exit on error, default is to continue\n" msgstr "" " -e, --exit-on-error выйти при ошибке (по умолчанию - продолжать)\n" -#: pg_restore.c:454 +#: pg_restore.c:460 #, c-format msgid " -I, --index=NAME restore named index\n" msgstr " -I, --index=ИМЯ воÑÑтановить указанный индекÑ\n" -#: pg_restore.c:455 +#: pg_restore.c:461 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to restore\n" msgstr "" " -j, --jobs=ЧИСЛО раÑпараллелить воÑÑтановление на указанное " "чиÑло заданий\n" -#: pg_restore.c:456 +#: pg_restore.c:462 #, c-format msgid "" " -L, --use-list=FILENAME use table of contents from this file for\n" @@ -2730,23 +2758,25 @@ msgstr "" " -L, --use-list=ИМЯ_ФÐЙЛРиÑпользовать оглавление из Ñтого файла длÑ\n" " чтениÑ/упорÑÐ´Ð¾Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…\n" -#: pg_restore.c:458 +#: pg_restore.c:464 #, c-format msgid " -n, --schema=NAME restore only objects in this schema\n" msgstr "" " -n, --schema=ИМЯ воÑÑтановить объекты только в Ñтой Ñхеме\n" -#: pg_restore.c:460 +# skip-rule: no-space-before-parentheses +# well-spelled: арг +#: pg_restore.c:466 #, c-format msgid " -P, --function=NAME(args) restore named function\n" msgstr " -P, --function=ИМЯ(арг-ты) воÑÑтановить заданную функцию\n" -#: pg_restore.c:461 +#: pg_restore.c:467 #, c-format msgid " -s, --schema-only restore only the schema, no data\n" msgstr " -s, --schema-only воÑÑтановить только Ñхему, без данных\n" -#: pg_restore.c:462 +#: pg_restore.c:468 #, c-format msgid "" " -S, --superuser=NAME superuser user name to use for disabling " @@ -2755,20 +2785,20 @@ msgstr "" " -S, --superuser=ИМЯ Ð¸Ð¼Ñ ÑÑƒÐ¿ÐµÑ€Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ " "триггеров\n" -#: pg_restore.c:463 +#: pg_restore.c:469 #, c-format msgid "" " -t, --table=NAME restore named relation (table, view, etc.)\n" msgstr "" " -t, --table=ИМЯ воÑÑтановить заданное отношение (таблицу, " -"предÑтавление и Ñ‚.п.)\n" +"предÑтавление и Ñ‚. п.)\n" -#: pg_restore.c:464 +#: pg_restore.c:470 #, c-format msgid " -T, --trigger=NAME restore named trigger\n" msgstr " -T, --trigger=ИМЯ воÑÑтановить заданный триггер\n" -#: pg_restore.c:465 +#: pg_restore.c:471 #, c-format msgid "" " -x, --no-privileges skip restoration of access privileges (grant/" @@ -2777,18 +2807,18 @@ msgstr "" " -x, --no-privileges не воÑÑтанавливать права доÑтупа\n" " (назначение/отзыв)\n" -#: pg_restore.c:466 +#: pg_restore.c:472 #, c-format msgid " -1, --single-transaction restore as a single transaction\n" msgstr "" " -1, --single-transaction выполнить воÑÑтановление в одной транзакции\n" -#: pg_restore.c:468 +#: pg_restore.c:474 #, c-format msgid " --enable-row-security enable row security\n" msgstr " --enable-row-security включить защиту на уровне Ñтрок\n" -#: pg_restore.c:470 +#: pg_restore.c:476 #, c-format msgid "" " --no-data-for-failed-tables do not restore data of tables that could not " @@ -2798,19 +2828,19 @@ msgstr "" " --no-data-for-failed-tables не воÑÑтанавливать данные таблиц, которые\n" " не удалоÑÑŒ Ñоздать\n" -#: pg_restore.c:472 +#: pg_restore.c:478 #, c-format msgid " --no-security-labels do not restore security labels\n" msgstr " --no-security-labels не воÑÑтанавливать метки безопаÑноÑти\n" -#: pg_restore.c:473 +#: pg_restore.c:479 #, c-format msgid " --no-tablespaces do not restore tablespace assignments\n" msgstr "" " --no-tablespaces не воÑÑтанавливать Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ‚Ð°Ð±Ð». " "проÑтранÑтв\n" -#: pg_restore.c:474 +#: pg_restore.c:480 #, c-format msgid "" " --section=SECTION restore named section (pre-data, data, or " @@ -2819,12 +2849,12 @@ msgstr "" " --section=РÐЗДЕЛ воÑÑтановить заданный раздел\n" " (pre-data, data или post-data)\n" -#: pg_restore.c:487 +#: pg_restore.c:493 #, c-format msgid " --role=ROLENAME do SET ROLE before restore\n" msgstr " --role=ИМЯ_РОЛИ выполнить SET ROLE перед воÑÑтановлением\n" -#: pg_restore.c:489 +#: pg_restore.c:495 #, c-format msgid "" "\n" @@ -2835,7 +2865,7 @@ msgstr "" "Параметры -I, -n, -P, -t, -T и --section можно комбинировать и указывать\n" "неÑколько раз Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° неÑкольких объектов.\n" -#: pg_restore.c:492 +#: pg_restore.c:498 #, c-format msgid "" "\n" @@ -2847,6 +2877,12 @@ msgstr "" "ввода.\n" "\n" +#~ msgid "setting owner and privileges for %s \"%s.%s\"\n" +#~ msgstr "уÑтановка владельца и прав: %s \"%s.%s\"\n" + +#~ msgid "setting owner and privileges for %s \"%s\"\n" +#~ msgstr "уÑтановка владельца и прав: %s \"%s\"\n" + #~ msgid "could not get relation name for OID %u: %s\n" #~ msgstr "не удалоÑÑŒ получить Ð¸Ð¼Ñ Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ñ OID %u: %s\n" @@ -2868,9 +2904,6 @@ msgstr "" #~ msgid "archive member too large for tar format\n" #~ msgstr "компонент архива Ñлишком велик Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° tar\n" -#~ msgid "could not write to output file: %s\n" -#~ msgstr "не удалоÑÑŒ запиÑать в выходной файл: %s\n" - #~ msgid "could not write to custom output routine\n" #~ msgstr "не удалоÑÑŒ вывеÑти данную в пользовательÑкую процедуру\n" diff --git a/src/bin/pg_dump/t/002_pg_dump.pl b/src/bin/pg_dump/t/002_pg_dump.pl index 37cbdcdaa5..d5bfbc797c 100644 --- a/src/bin/pg_dump/t/002_pg_dump.pl +++ b/src/bin/pg_dump/t/002_pg_dump.pl @@ -516,18 +516,19 @@ only_dump_test_table => 1, test_schema_plus_blobs => 1, }, }, - # catch-all for ALTER ... OWNER (except LARGE OBJECTs) - 'ALTER ... OWNER commands (except LARGE OBJECTs)' => { - regexp => qr/^ALTER (?!LARGE OBJECT)(.*) OWNER TO .*;/m, + # catch-all for ALTER ... OWNER (except post-data objects) + 'ALTER ... OWNER commands (except post-data objects)' => { + regexp => qr/^ALTER (?!EVENT TRIGGER|LARGE OBJECT)(.*) OWNER TO .*;/m, like => {}, # use more-specific options above unlike => { column_inserts => 1, data_only => 1, - section_data => 1, }, }, + section_data => 1, + section_post_data => 1, }, }, - # catch-all for ALTER TABLE ... + # catch-all for ALTER TABLE ... (except OWNER TO) 'ALTER TABLE ... commands' => { - regexp => qr/^ALTER TABLE .*;/m, + regexp => qr/^ALTER TABLE .* (?!OWNER TO)(.*);/m, like => {}, # use more-specific options above unlike => { column_inserts => 1, @@ -543,8 +544,7 @@ unlike => { no_owner => 1, pg_dumpall_globals => 1, - pg_dumpall_globals_clean => 1, - section_post_data => 1, }, }, + pg_dumpall_globals_clean => 1, }, }, # 'BLOB load (contents are of test_table)' => { # create_order => 14, @@ -913,6 +913,32 @@ section_pre_data => 1, section_post_data => 1, test_schema_plus_blobs => 1, }, }, + 'CREATE CAST FOR timestamptz' => { + create_order => 51, + create_sql => 'CREATE CAST (timestamptz AS interval) WITH FUNCTION age(timestamptz) AS ASSIGNMENT;', + regexp => qr/CREATE CAST \(timestamp with time zone AS interval\) WITH FUNCTION pg_catalog\.age\(timestamp with time zone\) AS ASSIGNMENT;/m, + like => { + binary_upgrade => 1, + clean => 1, + clean_if_exists => 1, + createdb => 1, + defaults => 1, + exclude_dump_test_schema => 1, + exclude_test_table => 1, + exclude_test_table_data => 1, + no_blobs => 1, + no_privs => 1, + no_owner => 1, + pg_dumpall_dbprivs => 1, + schema_only => 1, + section_pre_data => 1, + }, + unlike => { + only_dump_test_schema => 1, + only_dump_test_table => 1, + pg_dumpall_globals => 1, + section_post_data => 1, + test_schema_plus_blobs => 1, }, }, 'CREATE DATABASE postgres' => { regexp => qr/^ \QCREATE DATABASE postgres WITH TEMPLATE = template0 \E @@ -1515,37 +1541,31 @@ pg_dumpall_globals_clean => 1, section_post_data => 1, test_schema_plus_blobs => 1, }, }, -####################################### - # Currently broken. -####################################### -# -# 'CREATE TRANSFORM FOR int' => { -# create_order => 34, -# create_sql => 'CREATE TRANSFORM FOR int LANGUAGE SQL (FROM SQL WITH FUNCTION varchar_transform(internal), TO SQL WITH FUNCTION int4recv(internal));', -# regexp => qr/CREATE TRANSFORM FOR int LANGUAGE SQL \(FROM SQL WITH FUNCTION varchar_transform\(internal\), TO SQL WITH FUNCTION int4recv\(internal\)\);/m, -# like => { -# binary_upgrade => 1, -# clean => 1, -# clean_if_exists => 1, -# createdb => 1, -# defaults => 1, -# exclude_dump_test_schema => 1, -# exclude_test_table => 1, -# exclude_test_table_data => 1, -# no_privs => 1, -# no_owner => 1, -# pg_dumpall_dbprivs => 1, -# schema_only => 1, -# section_post_data => 1, -# }, -# unlike => { -# section_pre_data => 1, -# only_dump_test_schema => 1, -# only_dump_test_table => 1, -# pg_dumpall_globals => 1, -# test_schema_plus_blobs => 1, -# }, -# }, + 'CREATE TRANSFORM FOR int' => { + create_order => 34, + create_sql => 'CREATE TRANSFORM FOR int LANGUAGE SQL (FROM SQL WITH FUNCTION varchar_transform(internal), TO SQL WITH FUNCTION int4recv(internal));', + regexp => qr/CREATE TRANSFORM FOR integer LANGUAGE sql \(FROM SQL WITH FUNCTION pg_catalog\.varchar_transform\(internal\), TO SQL WITH FUNCTION pg_catalog\.int4recv\(internal\)\);/m, + like => { + binary_upgrade => 1, + clean => 1, + clean_if_exists => 1, + createdb => 1, + defaults => 1, + exclude_dump_test_schema => 1, + exclude_test_table => 1, + exclude_test_table_data => 1, + no_privs => 1, + no_owner => 1, + pg_dumpall_dbprivs => 1, + schema_only => 1, + section_pre_data => 1, + }, + unlike => { + only_dump_test_schema => 1, + only_dump_test_table => 1, + pg_dumpall_globals => 1, + section_post_data => 1, + test_schema_plus_blobs => 1, }, }, 'CREATE LANGUAGE pltestlang' => { create_order => 18, create_sql => 'CREATE LANGUAGE pltestlang @@ -2423,6 +2443,28 @@ only_dump_test_schema => 1, only_dump_test_table => 1, test_schema_plus_blobs => 1, }, }, + 'GRANT USAGE ON SCHEMA public TO public' => { + regexp => qr/^ + \Q--\E\n\n + \QGRANT USAGE ON SCHEMA public TO PUBLIC;\E + /xm, + like => { + clean => 1, + clean_if_exists => 1, }, + unlike => { + binary_upgrade => 1, + createdb => 1, + defaults => 1, + exclude_dump_test_schema => 1, + exclude_test_table => 1, + exclude_test_table_data => 1, + no_owner => 1, + pg_dumpall_dbprivs => 1, + schema_only => 1, + section_pre_data => 1, + only_dump_test_schema => 1, + only_dump_test_table => 1, + test_schema_plus_blobs => 1, }, }, 'GRANT commands' => { # catch-all for GRANT commands regexp => qr/^GRANT /m, like => {}, # use more-specific options above @@ -2556,8 +2598,6 @@ /xm, like => { binary_upgrade => 1, - clean => 1, - clean_if_exists => 1, createdb => 1, defaults => 1, exclude_dump_test_schema => 1, @@ -2568,6 +2608,8 @@ schema_only => 1, section_pre_data => 1, }, unlike => { + clean => 1, + clean_if_exists => 1, only_dump_test_schema => 1, only_dump_test_table => 1, test_schema_plus_blobs => 1, }, }, diff --git a/src/bin/pg_resetxlog/pg_resetxlog.c b/src/bin/pg_resetxlog/pg_resetxlog.c index 525b82ba7a..fdd75044de 100644 --- a/src/bin/pg_resetxlog/pg_resetxlog.c +++ b/src/bin/pg_resetxlog/pg_resetxlog.c @@ -72,6 +72,7 @@ static MultiXactOffset set_mxoff = (MultiXactOffset) -1; static uint32 minXlogTli = 0; static XLogSegNo minXlogSegNo = 0; +static void CheckDataVersion(void); static bool ReadControlFile(void); static void GuessControlValues(void); static void PrintControlValues(bool guessed); @@ -320,6 +321,9 @@ main(int argc, char *argv[]) exit(1); } + /* Check that data directory matches our server version */ + CheckDataVersion(); + /* * Check for a postmaster lock file --- if there is one, refuse to * proceed, on grounds we might be interfering with a live installation. @@ -453,6 +457,70 @@ main(int argc, char *argv[]) } +/* + * Look at the version string stored in PG_VERSION and decide if this utility + * can be run safely or not. + * + * We don't want to inject pg_control and WAL files that are for a different + * major version; that can't do anything good. Note that we don't treat + * mismatching version info in pg_control as a reason to bail out, because + * recovering from a corrupted pg_control is one of the main reasons for this + * program to exist at all. However, PG_VERSION is unlikely to get corrupted, + * and if it were it would be easy to fix by hand. So let's make this check + * to prevent simple user errors. + */ +static void +CheckDataVersion(void) +{ + const char *ver_file = "PG_VERSION"; + FILE *ver_fd; + char rawline[64]; + int len; + + if ((ver_fd = fopen(ver_file, "r")) == NULL) + { + fprintf(stderr, _("%s: could not open file \"%s\" for reading: %s\n"), + progname, ver_file, strerror(errno)); + exit(1); + } + + /* version number has to be the first line read */ + if (!fgets(rawline, sizeof(rawline), ver_fd)) + { + if (!ferror(ver_fd)) + { + fprintf(stderr, _("%s: unexpected empty file \"%s\"\n"), + progname, ver_file); + } + else + { + fprintf(stderr, _("%s: could not read file \"%s\": %s\n"), + progname, ver_file, strerror(errno)); + } + exit(1); + } + + /* remove trailing newline, handling Windows newlines as well */ + len = strlen(rawline); + if (len > 0 && rawline[len - 1] == '\n') + { + rawline[--len] = '\0'; + if (len > 0 && rawline[len - 1] == '\r') + rawline[--len] = '\0'; + } + + if (strcmp(rawline, PG_MAJORVERSION) != 0) + { + fprintf(stderr, _("%s: data directory is of wrong version\n" + "File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\".\n"), + progname, ver_file, rawline, PG_MAJORVERSION); + exit(1); + } + + fclose(ver_fd); +} + + /* * Try to read the existing pg_control file. * @@ -522,7 +590,7 @@ ReadControlFile(void) } /* Looks like it's a mess. */ - fprintf(stderr, _("%s: pg_control exists but is broken or unknown version; ignoring it\n"), + fprintf(stderr, _("%s: pg_control exists but is broken or wrong version; ignoring it\n"), progname); return false; } @@ -963,7 +1031,7 @@ KillExistingXLOG(void) { DIR *xldir; struct dirent *xlde; - char path[MAXPGPATH]; + char path[MAXPGPATH + sizeof(XLOGDIR)]; xldir = opendir(XLOGDIR); if (xldir == NULL) @@ -978,7 +1046,7 @@ KillExistingXLOG(void) if (IsXLogFileName(xlde->d_name) || IsPartialXLogFileName(xlde->d_name)) { - snprintf(path, MAXPGPATH, "%s/%s", XLOGDIR, xlde->d_name); + snprintf(path, sizeof(path), "%s/%s", XLOGDIR, xlde->d_name); if (unlink(path) < 0) { fprintf(stderr, _("%s: could not delete file \"%s\": %s\n"), @@ -1010,11 +1078,11 @@ KillExistingXLOG(void) static void KillExistingArchiveStatus(void) { +#define ARCHSTATDIR XLOGDIR "/archive_status" + DIR *xldir; struct dirent *xlde; - char path[MAXPGPATH]; - -#define ARCHSTATDIR XLOGDIR "/archive_status" + char path[MAXPGPATH + sizeof(ARCHSTATDIR)]; xldir = opendir(ARCHSTATDIR); if (xldir == NULL) @@ -1032,7 +1100,7 @@ KillExistingArchiveStatus(void) strcmp(xlde->d_name + XLOG_FNAME_LEN, ".partial.ready") == 0 || strcmp(xlde->d_name + XLOG_FNAME_LEN, ".partial.done") == 0)) { - snprintf(path, MAXPGPATH, "%s/%s", ARCHSTATDIR, xlde->d_name); + snprintf(path, sizeof(path), "%s/%s", ARCHSTATDIR, xlde->d_name); if (unlink(path) < 0) { fprintf(stderr, _("%s: could not delete file \"%s\": %s\n"), @@ -1100,7 +1168,7 @@ WriteEmptyXLOG(void) record->xl_rmid = RM_XLOG_ID; recptr += SizeOfXLogRecord; - *(recptr++) = XLR_BLOCK_ID_DATA_SHORT; + *(recptr++) = (char) XLR_BLOCK_ID_DATA_SHORT; *(recptr++) = sizeof(CheckPoint); memcpy(recptr, &ControlFile.checkPointCopy, sizeof(CheckPoint)); diff --git a/src/bin/pg_resetxlog/po/de.po b/src/bin/pg_resetxlog/po/de.po index fb6324d1e2..102c4b2490 100644 --- a/src/bin/pg_resetxlog/po/de.po +++ b/src/bin/pg_resetxlog/po/de.po @@ -1,5 +1,5 @@ # German message translation file for pg_resetxlog -# Peter Eisentraut , 2002 - 2016. +# Peter Eisentraut , 2002 - 2017. # # Use these quotes: »%s« # @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-04-12 20:14+0000\n" -"PO-Revision-Date: 2016-04-12 18:28-0400\n" +"POT-Creation-Date: 2017-08-07 16:22+0000\n" +"PO-Revision-Date: 2017-08-07 12:59-0400\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" "Language: de\n" @@ -52,86 +52,86 @@ msgid "%s: could not get exit code from subprocess: error code %lu\n" msgstr "%s: konnte Statuscode des Subprozesses nicht ermitteln: Fehlercode %lu\n" #. translator: the second %s is a command line argument (-e, etc) -#: pg_resetxlog.c:140 pg_resetxlog.c:155 pg_resetxlog.c:170 pg_resetxlog.c:177 -#: pg_resetxlog.c:201 pg_resetxlog.c:216 pg_resetxlog.c:224 pg_resetxlog.c:250 -#: pg_resetxlog.c:264 +#: pg_resetxlog.c:141 pg_resetxlog.c:156 pg_resetxlog.c:171 pg_resetxlog.c:178 +#: pg_resetxlog.c:202 pg_resetxlog.c:217 pg_resetxlog.c:225 pg_resetxlog.c:251 +#: pg_resetxlog.c:265 #, c-format msgid "%s: invalid argument for option %s\n" msgstr "%s: ungültiges Argument für Option %s\n" -#: pg_resetxlog.c:141 pg_resetxlog.c:156 pg_resetxlog.c:171 pg_resetxlog.c:178 -#: pg_resetxlog.c:202 pg_resetxlog.c:217 pg_resetxlog.c:225 pg_resetxlog.c:251 -#: pg_resetxlog.c:265 pg_resetxlog.c:272 pg_resetxlog.c:285 pg_resetxlog.c:293 +#: pg_resetxlog.c:142 pg_resetxlog.c:157 pg_resetxlog.c:172 pg_resetxlog.c:179 +#: pg_resetxlog.c:203 pg_resetxlog.c:218 pg_resetxlog.c:226 pg_resetxlog.c:252 +#: pg_resetxlog.c:266 pg_resetxlog.c:273 pg_resetxlog.c:286 pg_resetxlog.c:294 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Versuchen Sie »%s --help« für weitere Informationen.\n" -#: pg_resetxlog.c:146 +#: pg_resetxlog.c:147 #, c-format msgid "%s: transaction ID epoch (-e) must not be -1\n" msgstr "%s: Transaktions-ID-Epoche (-e) darf nicht -1 sein\n" -#: pg_resetxlog.c:161 +#: pg_resetxlog.c:162 #, c-format msgid "%s: transaction ID (-x) must not be 0\n" msgstr "%s: Transaktions-ID (-x) darf nicht 0 sein\n" -#: pg_resetxlog.c:185 pg_resetxlog.c:192 +#: pg_resetxlog.c:186 pg_resetxlog.c:193 #, c-format msgid "%s: transaction ID (-c) must be either 0 or greater than or equal to 2\n" msgstr "%s: Transaktions-ID (-c) muss entweder 0 oder größer oder gleich 2 sein\n" -#: pg_resetxlog.c:207 +#: pg_resetxlog.c:208 #, c-format msgid "%s: OID (-o) must not be 0\n" msgstr "%s: OID (-o) darf nicht 0 sein\n" -#: pg_resetxlog.c:230 +#: pg_resetxlog.c:231 #, c-format msgid "%s: multitransaction ID (-m) must not be 0\n" msgstr "%s: Multitransaktions-ID (-m) darf nicht 0 sein\n" -#: pg_resetxlog.c:240 +#: pg_resetxlog.c:241 #, c-format msgid "%s: oldest multitransaction ID (-m) must not be 0\n" msgstr "%s: älteste Multitransaktions-ID (-m) darf nicht 0 sein\n" -#: pg_resetxlog.c:256 +#: pg_resetxlog.c:257 #, c-format msgid "%s: multitransaction offset (-O) must not be -1\n" msgstr "%s: Multitransaktions-Offset (-O) darf nicht -1 sein\n" -#: pg_resetxlog.c:283 +#: pg_resetxlog.c:284 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: zu viele Kommandozeilenargumente (das erste ist »%s«)\n" -#: pg_resetxlog.c:292 +#: pg_resetxlog.c:293 #, c-format msgid "%s: no data directory specified\n" msgstr "%s: kein Datenverzeichnis angegeben\n" -#: pg_resetxlog.c:306 +#: pg_resetxlog.c:307 #, c-format msgid "%s: cannot be executed by \"root\"\n" msgstr "%s: kann nicht von »root« ausgeführt werden\n" -#: pg_resetxlog.c:308 +#: pg_resetxlog.c:309 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" msgstr "Sie müssen %s als PostgreSQL-Superuser ausführen.\n" -#: pg_resetxlog.c:318 +#: pg_resetxlog.c:319 #, c-format msgid "%s: could not change directory to \"%s\": %s\n" msgstr "%s: konnte nicht in Verzeichnis »%s« wechseln: %s\n" -#: pg_resetxlog.c:331 pg_resetxlog.c:477 +#: pg_resetxlog.c:335 pg_resetxlog.c:482 pg_resetxlog.c:545 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: konnte Datei »%s« nicht zum Lesen öffnen: %s\n" -#: pg_resetxlog.c:338 +#: pg_resetxlog.c:342 #, c-format msgid "" "%s: lock file \"%s\" exists\n" @@ -140,7 +140,7 @@ msgstr "" "%s: Sperrdatei »%s« existiert bereits\n" "Läuft der Server? Wenn nicht, dann Sperrdatei löschen und nochmal versuchen.\n" -#: pg_resetxlog.c:425 +#: pg_resetxlog.c:429 #, c-format msgid "" "\n" @@ -150,7 +150,7 @@ msgstr "" "Wenn diese Werte akzeptabel scheinen, dann benutzen Sie -f um das\n" "Zurücksetzen zu erzwingen.\n" -#: pg_resetxlog.c:437 +#: pg_resetxlog.c:441 #, c-format msgid "" "The database server was not shut down cleanly.\n" @@ -162,12 +162,31 @@ msgstr "" "Wenn Sie trotzdem weiter machen wollen, benutzen Sie -f, um das\n" "Zurücksetzen zu erzwingen.\n" -#: pg_resetxlog.c:451 +#: pg_resetxlog.c:455 #, c-format msgid "Transaction log reset\n" msgstr "Transaktionslog wurde zurück gesetzt\n" -#: pg_resetxlog.c:480 +#: pg_resetxlog.c:492 +#, c-format +msgid "%s: unexpected empty file \"%s\"\n" +msgstr "%s: unerwartete leere Datei »%s«\n" + +#: pg_resetxlog.c:497 pg_resetxlog.c:561 +#, c-format +msgid "%s: could not read file \"%s\": %s\n" +msgstr "%s: konnte Datei »%s« nicht lesen: %s\n" + +#: pg_resetxlog.c:514 +#, c-format +msgid "" +"%s: data directory is of wrong version\n" +"File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\".\n" +msgstr "" +"%s: Datenverzeichnis hat falsche Version\n" +"Datei »%s« enthält »%s«, was nicht mit der Version dieses Programms »%s« kompatibel ist.\n" + +#: pg_resetxlog.c:548 #, c-format msgid "" "If you are sure the data directory path is correct, execute\n" @@ -178,22 +197,17 @@ msgstr "" " touch %s\n" "aus und versuchen Sie es erneut.\n" -#: pg_resetxlog.c:493 -#, c-format -msgid "%s: could not read file \"%s\": %s\n" -msgstr "%s: konnte Datei »%s« nicht lesen: %s\n" - -#: pg_resetxlog.c:516 +#: pg_resetxlog.c:584 #, c-format msgid "%s: pg_control exists but has invalid CRC; proceed with caution\n" msgstr "%s: pg_control existiert, aber mit ungültiger CRC; mit Vorsicht fortfahren\n" -#: pg_resetxlog.c:525 +#: pg_resetxlog.c:593 #, c-format -msgid "%s: pg_control exists but is broken or unknown version; ignoring it\n" -msgstr "%s: pg_control existiert, aber ist kaputt oder hat unbekannte Version; wird ignoriert\n" +msgid "%s: pg_control exists but is broken or wrong version; ignoring it\n" +msgstr "%s: pg_control existiert, aber ist kaputt oder hat falsche Version; wird ignoriert\n" -#: pg_resetxlog.c:628 +#: pg_resetxlog.c:696 #, c-format msgid "" "Guessed pg_control values:\n" @@ -202,7 +216,7 @@ msgstr "" "Geschätzte pg_control-Werte:\n" "\n" -#: pg_resetxlog.c:630 +#: pg_resetxlog.c:698 #, c-format msgid "" "Current pg_control values:\n" @@ -211,176 +225,176 @@ msgstr "" "Aktuelle pg_control-Werte:\n" "\n" -#: pg_resetxlog.c:639 +#: pg_resetxlog.c:707 #, c-format msgid "pg_control version number: %u\n" msgstr "pg_control-Versionsnummer: %u\n" -#: pg_resetxlog.c:641 +#: pg_resetxlog.c:709 #, c-format msgid "Catalog version number: %u\n" msgstr "Katalogversionsnummer: %u\n" -#: pg_resetxlog.c:643 +#: pg_resetxlog.c:711 #, c-format msgid "Database system identifier: %s\n" msgstr "Datenbanksystemidentifikation: %s\n" -#: pg_resetxlog.c:645 +#: pg_resetxlog.c:713 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" msgstr "TimeLineID des letzten Checkpoints: %u\n" -#: pg_resetxlog.c:647 +#: pg_resetxlog.c:715 #, c-format msgid "Latest checkpoint's full_page_writes: %s\n" msgstr "full_page_writes des letzten Checkpoints: %s\n" -#: pg_resetxlog.c:648 +#: pg_resetxlog.c:716 msgid "off" msgstr "aus" -#: pg_resetxlog.c:648 +#: pg_resetxlog.c:716 msgid "on" msgstr "an" -#: pg_resetxlog.c:649 +#: pg_resetxlog.c:717 #, c-format msgid "Latest checkpoint's NextXID: %u:%u\n" msgstr "NextXID des letzten Checkpoints: %u:%u\n" -#: pg_resetxlog.c:652 +#: pg_resetxlog.c:720 #, c-format msgid "Latest checkpoint's NextOID: %u\n" msgstr "NextOID des letzten Checkpoints: %u\n" -#: pg_resetxlog.c:654 +#: pg_resetxlog.c:722 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" msgstr "NextMultiXactId des letzten Checkpoints: %u\n" -#: pg_resetxlog.c:656 +#: pg_resetxlog.c:724 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" msgstr "NextMultiOffset des letzten Checkpoints: %u\n" -#: pg_resetxlog.c:658 +#: pg_resetxlog.c:726 #, c-format msgid "Latest checkpoint's oldestXID: %u\n" msgstr "oldestXID des letzten Checkpoints: %u\n" -#: pg_resetxlog.c:660 +#: pg_resetxlog.c:728 #, c-format msgid "Latest checkpoint's oldestXID's DB: %u\n" msgstr "DB der oldestXID des letzten Checkpoints: %u\n" -#: pg_resetxlog.c:662 +#: pg_resetxlog.c:730 #, c-format msgid "Latest checkpoint's oldestActiveXID: %u\n" msgstr "oldestActiveXID des letzten Checkpoints: %u\n" -#: pg_resetxlog.c:664 +#: pg_resetxlog.c:732 #, c-format msgid "Latest checkpoint's oldestMultiXid: %u\n" msgstr "oldestMultiXid des letzten Checkpoints: %u\n" -#: pg_resetxlog.c:666 +#: pg_resetxlog.c:734 #, c-format msgid "Latest checkpoint's oldestMulti's DB: %u\n" msgstr "DB des oldestMulti des letzten Checkpoints: %u\n" -#: pg_resetxlog.c:668 +#: pg_resetxlog.c:736 #, c-format msgid "Latest checkpoint's oldestCommitTsXid:%u\n" msgstr "oldestCommitTsXid des letzten Checkpoints: %u\n" -#: pg_resetxlog.c:670 +#: pg_resetxlog.c:738 #, c-format msgid "Latest checkpoint's newestCommitTsXid:%u\n" msgstr "newestCommitTsXid des letzten Checkpoints: %u\n" -#: pg_resetxlog.c:672 +#: pg_resetxlog.c:740 #, c-format msgid "Maximum data alignment: %u\n" msgstr "Maximale Datenausrichtung (Alignment): %u\n" -#: pg_resetxlog.c:675 +#: pg_resetxlog.c:743 #, c-format msgid "Database block size: %u\n" msgstr "Datenbankblockgröße: %u\n" -#: pg_resetxlog.c:677 +#: pg_resetxlog.c:745 #, c-format msgid "Blocks per segment of large relation: %u\n" msgstr "Blöcke pro Segment: %u\n" -#: pg_resetxlog.c:679 +#: pg_resetxlog.c:747 #, c-format msgid "WAL block size: %u\n" msgstr "WAL-Blockgröße: %u\n" -#: pg_resetxlog.c:681 +#: pg_resetxlog.c:749 #, c-format msgid "Bytes per WAL segment: %u\n" msgstr "Bytes pro WAL-Segment: %u\n" -#: pg_resetxlog.c:683 +#: pg_resetxlog.c:751 #, c-format msgid "Maximum length of identifiers: %u\n" msgstr "Maximale Bezeichnerlänge: %u\n" -#: pg_resetxlog.c:685 +#: pg_resetxlog.c:753 #, c-format msgid "Maximum columns in an index: %u\n" msgstr "Maximale Spalten in einem Index: %u\n" -#: pg_resetxlog.c:687 +#: pg_resetxlog.c:755 #, c-format msgid "Maximum size of a TOAST chunk: %u\n" msgstr "Maximale Größe eines Stücks TOAST: %u\n" -#: pg_resetxlog.c:689 +#: pg_resetxlog.c:757 #, c-format msgid "Size of a large-object chunk: %u\n" msgstr "Größe eines Large-Object-Chunks: %u\n" -#: pg_resetxlog.c:691 +#: pg_resetxlog.c:759 #, c-format msgid "Date/time type storage: %s\n" msgstr "Speicherung von Datum/Zeit-Typen: %s\n" -#: pg_resetxlog.c:692 +#: pg_resetxlog.c:760 msgid "64-bit integers" msgstr "64-Bit-Ganzzahlen" -#: pg_resetxlog.c:692 +#: pg_resetxlog.c:760 msgid "floating-point numbers" msgstr "Gleitkommazahlen" -#: pg_resetxlog.c:693 +#: pg_resetxlog.c:761 #, c-format msgid "Float4 argument passing: %s\n" msgstr "Übergabe von Float4-Argumenten: %s\n" -#: pg_resetxlog.c:694 pg_resetxlog.c:696 +#: pg_resetxlog.c:762 pg_resetxlog.c:764 msgid "by reference" msgstr "Referenz" -#: pg_resetxlog.c:694 pg_resetxlog.c:696 +#: pg_resetxlog.c:762 pg_resetxlog.c:764 msgid "by value" msgstr "Wert" -#: pg_resetxlog.c:695 +#: pg_resetxlog.c:763 #, c-format msgid "Float8 argument passing: %s\n" msgstr "Übergabe von Float8-Argumenten: %s\n" -#: pg_resetxlog.c:697 +#: pg_resetxlog.c:765 #, c-format msgid "Data page checksum version: %u\n" msgstr "Datenseitenprüfsummenversion: %u\n" -#: pg_resetxlog.c:711 +#: pg_resetxlog.c:779 #, c-format msgid "" "\n" @@ -393,117 +407,117 @@ msgstr "" "Zu ändernde Werte:\n" "\n" -#: pg_resetxlog.c:714 +#: pg_resetxlog.c:782 #, c-format msgid "First log segment after reset: %s\n" msgstr "Erstes Logdateisegment nach Zurücksetzen: %s\n" -#: pg_resetxlog.c:718 +#: pg_resetxlog.c:786 #, c-format msgid "NextMultiXactId: %u\n" msgstr "NextMultiXactId: %u\n" -#: pg_resetxlog.c:720 +#: pg_resetxlog.c:788 #, c-format msgid "OldestMultiXid: %u\n" msgstr "OldestMultiXid: %u\n" -#: pg_resetxlog.c:722 +#: pg_resetxlog.c:790 #, c-format msgid "OldestMulti's DB: %u\n" msgstr "OldestMulti's DB: %u\n" -#: pg_resetxlog.c:728 +#: pg_resetxlog.c:796 #, c-format msgid "NextMultiOffset: %u\n" msgstr "NextMultiOffset: %u\n" -#: pg_resetxlog.c:734 +#: pg_resetxlog.c:802 #, c-format msgid "NextOID: %u\n" msgstr "NextOID: %u\n" -#: pg_resetxlog.c:740 +#: pg_resetxlog.c:808 #, c-format msgid "NextXID: %u\n" msgstr "NextXID: %u\n" -#: pg_resetxlog.c:742 +#: pg_resetxlog.c:810 #, c-format msgid "OldestXID: %u\n" msgstr "OldestXID: %u\n" -#: pg_resetxlog.c:744 +#: pg_resetxlog.c:812 #, c-format msgid "OldestXID's DB: %u\n" msgstr "OldestXID's DB: %u\n" -#: pg_resetxlog.c:750 +#: pg_resetxlog.c:818 #, c-format msgid "NextXID epoch: %u\n" msgstr "NextXID-Epoche: %u\n" -#: pg_resetxlog.c:756 +#: pg_resetxlog.c:824 #, c-format msgid "oldestCommitTsXid: %u\n" msgstr "oldestCommitTsXid: %u\n" -#: pg_resetxlog.c:761 +#: pg_resetxlog.c:829 #, c-format msgid "newestCommitTsXid: %u\n" msgstr "newestCommitTsXid: %u\n" -#: pg_resetxlog.c:827 +#: pg_resetxlog.c:895 #, c-format msgid "%s: internal error -- sizeof(ControlFileData) is too large ... fix PG_CONTROL_SIZE\n" msgstr "%s: interner Fehler -- sizeof(ControlFileData) ist zu groß ... PG_CONTROL_SIZE reparieren\n" -#: pg_resetxlog.c:842 +#: pg_resetxlog.c:910 #, c-format msgid "%s: could not create pg_control file: %s\n" msgstr "%s: konnte pg_control-Datei nicht erstellen: %s\n" -#: pg_resetxlog.c:853 +#: pg_resetxlog.c:921 #, c-format msgid "%s: could not write pg_control file: %s\n" msgstr "%sL konnte pg_control-Datei nicht schreiben: %s\n" -#: pg_resetxlog.c:860 pg_resetxlog.c:1156 +#: pg_resetxlog.c:928 pg_resetxlog.c:1224 #, c-format msgid "%s: fsync error: %s\n" msgstr "%s: fsync-Fehler: %s\n" -#: pg_resetxlog.c:900 pg_resetxlog.c:971 pg_resetxlog.c:1022 +#: pg_resetxlog.c:968 pg_resetxlog.c:1039 pg_resetxlog.c:1090 #, c-format msgid "%s: could not open directory \"%s\": %s\n" msgstr "%s: konnte Verzeichnis »%s« nicht öffnen: %s\n" -#: pg_resetxlog.c:936 pg_resetxlog.c:993 pg_resetxlog.c:1047 +#: pg_resetxlog.c:1004 pg_resetxlog.c:1061 pg_resetxlog.c:1115 #, c-format msgid "%s: could not read directory \"%s\": %s\n" msgstr "%s: konnte Verzeichnis »%s« nicht lesen: %s\n" -#: pg_resetxlog.c:943 pg_resetxlog.c:1000 pg_resetxlog.c:1054 +#: pg_resetxlog.c:1011 pg_resetxlog.c:1068 pg_resetxlog.c:1122 #, c-format msgid "%s: could not close directory \"%s\": %s\n" msgstr "%s: konnte Verzeichnis »%s« nicht schließen: %s\n" -#: pg_resetxlog.c:984 pg_resetxlog.c:1038 +#: pg_resetxlog.c:1052 pg_resetxlog.c:1106 #, c-format msgid "%s: could not delete file \"%s\": %s\n" msgstr "%s: konnte Datei »%s« nicht löschen: %s\n" -#: pg_resetxlog.c:1123 +#: pg_resetxlog.c:1191 #, c-format msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: konnte Datei »%s« nicht öffnen: %s\n" -#: pg_resetxlog.c:1134 pg_resetxlog.c:1148 +#: pg_resetxlog.c:1202 pg_resetxlog.c:1216 #, c-format msgid "%s: could not write file \"%s\": %s\n" msgstr "%s: konnte Datei »%s« nicht schreiben: %s\n" -#: pg_resetxlog.c:1167 +#: pg_resetxlog.c:1235 #, c-format msgid "" "%s resets the PostgreSQL transaction log.\n" @@ -512,7 +526,7 @@ msgstr "" "%s setzt den PostgreSQL-Transaktionslog zurück.\n" "\n" -#: pg_resetxlog.c:1168 +#: pg_resetxlog.c:1236 #, c-format msgid "" "Usage:\n" @@ -523,79 +537,79 @@ msgstr "" " %s [OPTION]... DATENVERZEICHNIS\n" "\n" -#: pg_resetxlog.c:1169 +#: pg_resetxlog.c:1237 #, c-format msgid "Options:\n" msgstr "Optionen:\n" -#: pg_resetxlog.c:1170 +#: pg_resetxlog.c:1238 #, c-format msgid " -c XID,XID set oldest and newest transactions bearing commit timestamp\n" msgstr " -c XID,XID älteste und neuste Transaktion mit Commit-Timestamp setzen\n" -#: pg_resetxlog.c:1171 +#: pg_resetxlog.c:1239 #, c-format msgid " (zero in either value means no change)\n" msgstr " (Null in einem Wert bedeutet keine Änderung)\n" -#: pg_resetxlog.c:1172 +#: pg_resetxlog.c:1240 #, c-format msgid " [-D] DATADIR data directory\n" msgstr " [-D] DATENVERZ Datenbankverzeichnis\n" -#: pg_resetxlog.c:1173 +#: pg_resetxlog.c:1241 #, c-format msgid " -e XIDEPOCH set next transaction ID epoch\n" msgstr " -e XIDEPOCHE nächste Transaktions-ID-Epoche setzen\n" -#: pg_resetxlog.c:1174 +#: pg_resetxlog.c:1242 #, c-format msgid " -f force update to be done\n" msgstr " -f Änderung erzwingen\n" -#: pg_resetxlog.c:1175 +#: pg_resetxlog.c:1243 #, c-format msgid " -l XLOGFILE force minimum WAL starting location for new transaction log\n" msgstr " -l XLOGDATEI minimale WAL-Startposition für neuen Log erzwingen\n" -#: pg_resetxlog.c:1176 +#: pg_resetxlog.c:1244 #, c-format msgid " -m MXID,MXID set next and oldest multitransaction ID\n" msgstr " -m MXID,MXID nächste und älteste Multitransaktions-ID setzen\n" -#: pg_resetxlog.c:1177 +#: pg_resetxlog.c:1245 #, c-format msgid " -n no update, just show what would be done (for testing)\n" msgstr "" " -n keine Änderungen; nur zeigen, was gemacht werden würde (zum\n" " Testen)\n" -#: pg_resetxlog.c:1178 +#: pg_resetxlog.c:1246 #, c-format msgid " -o OID set next OID\n" msgstr " -o OID nächste OID setzen\n" -#: pg_resetxlog.c:1179 +#: pg_resetxlog.c:1247 #, c-format msgid " -O OFFSET set next multitransaction offset\n" msgstr " -O OFFSET nächsten Multitransaktions-Offset setzen\n" -#: pg_resetxlog.c:1180 +#: pg_resetxlog.c:1248 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version Versionsinformationen anzeigen, dann beenden\n" -#: pg_resetxlog.c:1181 +#: pg_resetxlog.c:1249 #, c-format msgid " -x XID set next transaction ID\n" msgstr " -x XID nächste Transaktions-ID setzen\n" -#: pg_resetxlog.c:1182 +#: pg_resetxlog.c:1250 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help diese Hilfe anzeigen, dann beenden\n" -#: pg_resetxlog.c:1183 +#: pg_resetxlog.c:1251 #, c-format msgid "" "\n" diff --git a/src/bin/pg_resetxlog/po/es.po b/src/bin/pg_resetxlog/po/es.po index fec8ea973c..d305a2b601 100644 --- a/src/bin/pg_resetxlog/po/es.po +++ b/src/bin/pg_resetxlog/po/es.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: pg_resetxlog (PostgreSQL 9.6)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-05-02 20:14+0000\n" -"PO-Revision-Date: 2016-05-24 10:56-0500\n" +"POT-Creation-Date: 2017-08-27 21:52+0000\n" +"PO-Revision-Date: 2017-08-28 11:04+0200\n" "Last-Translator: Carlos Chapi \n" "Language-Team: Español \n" "Language: es\n" @@ -58,86 +58,86 @@ msgid "%s: could not get exit code from subprocess: error code %lu\n" msgstr "%s: no se pudo obtener el código de salida del subproceso»: código de error %lu\n" #. translator: the second %s is a command line argument (-e, etc) -#: pg_resetxlog.c:140 pg_resetxlog.c:155 pg_resetxlog.c:170 pg_resetxlog.c:177 -#: pg_resetxlog.c:201 pg_resetxlog.c:216 pg_resetxlog.c:224 pg_resetxlog.c:250 -#: pg_resetxlog.c:264 +#: pg_resetxlog.c:141 pg_resetxlog.c:156 pg_resetxlog.c:171 pg_resetxlog.c:178 +#: pg_resetxlog.c:202 pg_resetxlog.c:217 pg_resetxlog.c:225 pg_resetxlog.c:251 +#: pg_resetxlog.c:265 #, c-format msgid "%s: invalid argument for option %s\n" msgstr "%s: argumento no válido para la opción %s\n" -#: pg_resetxlog.c:141 pg_resetxlog.c:156 pg_resetxlog.c:171 pg_resetxlog.c:178 -#: pg_resetxlog.c:202 pg_resetxlog.c:217 pg_resetxlog.c:225 pg_resetxlog.c:251 -#: pg_resetxlog.c:265 pg_resetxlog.c:272 pg_resetxlog.c:285 pg_resetxlog.c:293 +#: pg_resetxlog.c:142 pg_resetxlog.c:157 pg_resetxlog.c:172 pg_resetxlog.c:179 +#: pg_resetxlog.c:203 pg_resetxlog.c:218 pg_resetxlog.c:226 pg_resetxlog.c:252 +#: pg_resetxlog.c:266 pg_resetxlog.c:273 pg_resetxlog.c:286 pg_resetxlog.c:294 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Prueba con «%s --help» para más información\n" -#: pg_resetxlog.c:146 +#: pg_resetxlog.c:147 #, c-format msgid "%s: transaction ID epoch (-e) must not be -1\n" msgstr "%s: el «epoch» de ID de transacción (-e) no debe ser -1\n" -#: pg_resetxlog.c:161 +#: pg_resetxlog.c:162 #, c-format msgid "%s: transaction ID (-x) must not be 0\n" msgstr "%s: el ID de transacción (-x) no debe ser 0\n" -#: pg_resetxlog.c:185 pg_resetxlog.c:192 +#: pg_resetxlog.c:186 pg_resetxlog.c:193 #, c-format msgid "%s: transaction ID (-c) must be either 0 or greater than or equal to 2\n" msgstr "%s: el ID de transacción (-c) debe ser 0 o bien mayor o igual a 2\n" -#: pg_resetxlog.c:207 +#: pg_resetxlog.c:208 #, c-format msgid "%s: OID (-o) must not be 0\n" msgstr "%s: OID (-o) no debe ser cero\n" -#: pg_resetxlog.c:230 +#: pg_resetxlog.c:231 #, c-format msgid "%s: multitransaction ID (-m) must not be 0\n" msgstr "%s: el ID de multitransacción (-m) no debe ser 0\n" -#: pg_resetxlog.c:240 +#: pg_resetxlog.c:241 #, c-format msgid "%s: oldest multitransaction ID (-m) must not be 0\n" msgstr "%s: el ID de multitransacción más antiguo (-m) no debe ser 0\n" -#: pg_resetxlog.c:256 +#: pg_resetxlog.c:257 #, c-format msgid "%s: multitransaction offset (-O) must not be -1\n" msgstr "%s: la posición de multitransacción (-O) no debe ser -1\n" -#: pg_resetxlog.c:283 +#: pg_resetxlog.c:284 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: demasiados argumentos de línea de órdenes (el primero es «%s»)\n" -#: pg_resetxlog.c:292 +#: pg_resetxlog.c:293 #, c-format msgid "%s: no data directory specified\n" msgstr "%s: directorio de datos no especificado\n" -#: pg_resetxlog.c:306 +#: pg_resetxlog.c:307 #, c-format msgid "%s: cannot be executed by \"root\"\n" msgstr "%s: no puede ser ejecutado con el usuario «root»\n" -#: pg_resetxlog.c:308 +#: pg_resetxlog.c:309 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" msgstr "Debe ejecutar %s con el superusuario de PostgreSQL.\n" -#: pg_resetxlog.c:318 +#: pg_resetxlog.c:319 #, c-format msgid "%s: could not change directory to \"%s\": %s\n" msgstr "%s: no se pudo cambiar al directorio «%s»: %s\n" -#: pg_resetxlog.c:331 pg_resetxlog.c:477 +#: pg_resetxlog.c:335 pg_resetxlog.c:482 pg_resetxlog.c:545 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: no se pudo abrir el archivo «%s» para lectura: %s\n" -#: pg_resetxlog.c:338 +#: pg_resetxlog.c:342 #, c-format msgid "" "%s: lock file \"%s\" exists\n" @@ -146,7 +146,7 @@ msgstr "" "%s: el archivo candado «%s» existe\n" "¿Hay un servidor corriendo? Si no, borre el archivo candado e inténtelo de nuevo\n" -#: pg_resetxlog.c:425 +#: pg_resetxlog.c:429 #, c-format msgid "" "\n" @@ -155,7 +155,7 @@ msgstr "" "\n" "Si estos valores parecen aceptables, use -f para forzar reinicio.\n" -#: pg_resetxlog.c:437 +#: pg_resetxlog.c:441 #, c-format msgid "" "The database server was not shut down cleanly.\n" @@ -166,12 +166,31 @@ msgstr "" "Reiniciar la bitácora de transacciones puede causar pérdida de datos.\n" "Si de todas formas quiere proceder, use -f para forzar su reinicio.\n" -#: pg_resetxlog.c:451 +#: pg_resetxlog.c:455 #, c-format msgid "Transaction log reset\n" msgstr "Bitácora de transacciones reiniciada\n" -#: pg_resetxlog.c:480 +#: pg_resetxlog.c:492 +#, c-format +msgid "%s: unexpected empty file \"%s\"\n" +msgstr "%s: archivo vacío «%s» inesperado\n" + +#: pg_resetxlog.c:497 pg_resetxlog.c:561 +#, c-format +msgid "%s: could not read file \"%s\": %s\n" +msgstr "%s: no se pudo leer el archivo «%s»: %s\n" + +#: pg_resetxlog.c:514 +#, c-format +msgid "" +"%s: data directory is of wrong version\n" +"File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\".\n" +msgstr "" +"%s: el directorio de datos es de la versión incorrecta\n" +"El archivo «%s» contiene «%s», que no es compatible con esta versión «%s».\n" + +#: pg_resetxlog.c:548 #, c-format msgid "" "If you are sure the data directory path is correct, execute\n" @@ -182,22 +201,17 @@ msgstr "" " touch %s\n" "y pruebe de nuevo.\n" -#: pg_resetxlog.c:493 -#, c-format -msgid "%s: could not read file \"%s\": %s\n" -msgstr "%s: no se pudo leer el archivo «%s»: %s\n" - -#: pg_resetxlog.c:516 +#: pg_resetxlog.c:584 #, c-format msgid "%s: pg_control exists but has invalid CRC; proceed with caution\n" msgstr "%s: existe pg_control pero tiene un CRC no válido, proceda con precaución\n" -#: pg_resetxlog.c:525 +#: pg_resetxlog.c:593 #, c-format -msgid "%s: pg_control exists but is broken or unknown version; ignoring it\n" -msgstr "%s: existe pg_control pero está roto o se desconoce su versión; ignorándolo\n" +msgid "%s: pg_control exists but is broken or wrong version; ignoring it\n" +msgstr "%s: pg_control existe pero está roto o su versión es incorrecta; ignorándolo\n" -#: pg_resetxlog.c:628 +#: pg_resetxlog.c:696 #, c-format msgid "" "Guessed pg_control values:\n" @@ -206,7 +220,7 @@ msgstr "" "Valores de pg_control asumidos:\n" "\n" -#: pg_resetxlog.c:630 +#: pg_resetxlog.c:698 #, c-format msgid "" "Current pg_control values:\n" @@ -215,176 +229,176 @@ msgstr "" "Valores actuales de pg_control:\n" "\n" -#: pg_resetxlog.c:639 +#: pg_resetxlog.c:707 #, c-format msgid "pg_control version number: %u\n" msgstr "Número de versión de pg_control: %u\n" -#: pg_resetxlog.c:641 +#: pg_resetxlog.c:709 #, c-format msgid "Catalog version number: %u\n" msgstr "Número de versión de catálogo: %u\n" -#: pg_resetxlog.c:643 +#: pg_resetxlog.c:711 #, c-format msgid "Database system identifier: %s\n" msgstr "Identificador de sistema: %s\n" -#: pg_resetxlog.c:645 +#: pg_resetxlog.c:713 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" msgstr "TimeLineID del checkpoint más reciente: %u\n" -#: pg_resetxlog.c:647 +#: pg_resetxlog.c:715 #, c-format msgid "Latest checkpoint's full_page_writes: %s\n" msgstr "full_page_writes del checkpoint más reciente: %s\n" -#: pg_resetxlog.c:648 +#: pg_resetxlog.c:716 msgid "off" msgstr "desactivado" -#: pg_resetxlog.c:648 +#: pg_resetxlog.c:716 msgid "on" msgstr "activado" -#: pg_resetxlog.c:649 +#: pg_resetxlog.c:717 #, c-format msgid "Latest checkpoint's NextXID: %u:%u\n" msgstr "NextXID del checkpoint más reciente: %u:%u\n" -#: pg_resetxlog.c:652 +#: pg_resetxlog.c:720 #, c-format msgid "Latest checkpoint's NextOID: %u\n" msgstr "NextOID del checkpoint más reciente: %u\n" -#: pg_resetxlog.c:654 +#: pg_resetxlog.c:722 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" msgstr "NextMultiXactId del checkpoint más reciente: %u\n" -#: pg_resetxlog.c:656 +#: pg_resetxlog.c:724 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" msgstr "NextMultiOffset del checkpoint más reciente: %u\n" -#: pg_resetxlog.c:658 +#: pg_resetxlog.c:726 #, c-format msgid "Latest checkpoint's oldestXID: %u\n" msgstr "oldestXID del checkpoint más reciente: %u\n" -#: pg_resetxlog.c:660 +#: pg_resetxlog.c:728 #, c-format msgid "Latest checkpoint's oldestXID's DB: %u\n" msgstr "BD del oldestXID del checkpoint más reciente: %u\n" -#: pg_resetxlog.c:662 +#: pg_resetxlog.c:730 #, c-format msgid "Latest checkpoint's oldestActiveXID: %u\n" msgstr "oldestActiveXID del checkpoint más reciente: %u\n" -#: pg_resetxlog.c:664 +#: pg_resetxlog.c:732 #, c-format msgid "Latest checkpoint's oldestMultiXid: %u\n" msgstr "oldestMultiXid del checkpoint más reciente: %u\n" -#: pg_resetxlog.c:666 +#: pg_resetxlog.c:734 #, c-format msgid "Latest checkpoint's oldestMulti's DB: %u\n" msgstr "BD del oldestMultiXid del checkpt. más reciente: %u\n" -#: pg_resetxlog.c:668 +#: pg_resetxlog.c:736 #, c-format msgid "Latest checkpoint's oldestCommitTsXid:%u\n" msgstr "oldestCommitTsXid del último checkpoint: %u\n" -#: pg_resetxlog.c:670 +#: pg_resetxlog.c:738 #, c-format msgid "Latest checkpoint's newestCommitTsXid:%u\n" msgstr "newestCommitTsXid del último checkpoint: %u\n" -#: pg_resetxlog.c:672 +#: pg_resetxlog.c:740 #, c-format msgid "Maximum data alignment: %u\n" msgstr "Máximo alineamiento de datos: %u\n" -#: pg_resetxlog.c:675 +#: pg_resetxlog.c:743 #, c-format msgid "Database block size: %u\n" msgstr "Tamaño del bloque de la base de datos: %u\n" -#: pg_resetxlog.c:677 +#: pg_resetxlog.c:745 #, c-format msgid "Blocks per segment of large relation: %u\n" msgstr "Bloques por segmento de relación grande: %u\n" -#: pg_resetxlog.c:679 +#: pg_resetxlog.c:747 #, c-format msgid "WAL block size: %u\n" msgstr "Tamaño del bloque de WAL: %u\n" -#: pg_resetxlog.c:681 +#: pg_resetxlog.c:749 #, c-format msgid "Bytes per WAL segment: %u\n" msgstr "Bytes por segmento WAL: %u\n" -#: pg_resetxlog.c:683 +#: pg_resetxlog.c:751 #, c-format msgid "Maximum length of identifiers: %u\n" msgstr "Longitud máxima de identificadores: %u\n" -#: pg_resetxlog.c:685 +#: pg_resetxlog.c:753 #, c-format msgid "Maximum columns in an index: %u\n" msgstr "Máximo número de columnas en un índice: %u\n" -#: pg_resetxlog.c:687 +#: pg_resetxlog.c:755 #, c-format msgid "Maximum size of a TOAST chunk: %u\n" msgstr "Longitud máxima de un trozo TOAST: %u\n" -#: pg_resetxlog.c:689 +#: pg_resetxlog.c:757 #, c-format msgid "Size of a large-object chunk: %u\n" msgstr "Longitud máxima de un trozo de objeto grande: %u\n" -#: pg_resetxlog.c:691 +#: pg_resetxlog.c:759 #, c-format msgid "Date/time type storage: %s\n" msgstr "Tipo de almacenamiento hora/fecha: %s\n" -#: pg_resetxlog.c:692 +#: pg_resetxlog.c:760 msgid "64-bit integers" msgstr "enteros de 64 bits" -#: pg_resetxlog.c:692 +#: pg_resetxlog.c:760 msgid "floating-point numbers" msgstr "números de coma flotante" -#: pg_resetxlog.c:693 +#: pg_resetxlog.c:761 #, c-format msgid "Float4 argument passing: %s\n" msgstr "Paso de parámetros float4: %s\n" -#: pg_resetxlog.c:694 pg_resetxlog.c:696 +#: pg_resetxlog.c:762 pg_resetxlog.c:764 msgid "by reference" msgstr "por referencia" -#: pg_resetxlog.c:694 pg_resetxlog.c:696 +#: pg_resetxlog.c:762 pg_resetxlog.c:764 msgid "by value" msgstr "por valor" -#: pg_resetxlog.c:695 +#: pg_resetxlog.c:763 #, c-format msgid "Float8 argument passing: %s\n" msgstr "Paso de parámetros float8: %s\n" -#: pg_resetxlog.c:697 +#: pg_resetxlog.c:765 #, c-format msgid "Data page checksum version: %u\n" msgstr "Versión de suma de verificación de datos: %u\n" -#: pg_resetxlog.c:711 +#: pg_resetxlog.c:779 #, c-format msgid "" "\n" @@ -397,117 +411,117 @@ msgstr "" "Valores a cambiar:\n" "\n" -#: pg_resetxlog.c:714 +#: pg_resetxlog.c:782 #, c-format msgid "First log segment after reset: %s\n" msgstr "Primer segmento de log después de reiniciar: %s\n" -#: pg_resetxlog.c:718 +#: pg_resetxlog.c:786 #, c-format msgid "NextMultiXactId: %u\n" msgstr "NextMultiXactId: %u\n" -#: pg_resetxlog.c:720 +#: pg_resetxlog.c:788 #, c-format msgid "OldestMultiXid: %u\n" msgstr "OldestMultiXid: %u\n" -#: pg_resetxlog.c:722 +#: pg_resetxlog.c:790 #, c-format msgid "OldestMulti's DB: %u\n" msgstr "Base de datos del OldestMulti: %u\n" -#: pg_resetxlog.c:728 +#: pg_resetxlog.c:796 #, c-format msgid "NextMultiOffset: %u\n" msgstr "NextMultiOffset: %u\n" -#: pg_resetxlog.c:734 +#: pg_resetxlog.c:802 #, c-format msgid "NextOID: %u\n" msgstr "NextOID: %u\n" -#: pg_resetxlog.c:740 +#: pg_resetxlog.c:808 #, c-format msgid "NextXID: %u\n" msgstr "NextXID: %u\n" -#: pg_resetxlog.c:742 +#: pg_resetxlog.c:810 #, c-format msgid "OldestXID: %u\n" msgstr "OldestXID: %u\n" -#: pg_resetxlog.c:744 +#: pg_resetxlog.c:812 #, c-format msgid "OldestXID's DB: %u\n" msgstr "Base de datos del OldestXID: %u\n" -#: pg_resetxlog.c:750 +#: pg_resetxlog.c:818 #, c-format msgid "NextXID epoch: %u\n" msgstr "Epoch del NextXID: %u\n" -#: pg_resetxlog.c:756 +#: pg_resetxlog.c:824 #, c-format msgid "oldestCommitTsXid: %u\n" msgstr "oldestCommitTsXid: %u\n" -#: pg_resetxlog.c:761 +#: pg_resetxlog.c:829 #, c-format msgid "newestCommitTsXid: %u\n" msgstr "newestCommitTsXid: %u\n" -#: pg_resetxlog.c:827 +#: pg_resetxlog.c:895 #, c-format msgid "%s: internal error -- sizeof(ControlFileData) is too large ... fix PG_CONTROL_SIZE\n" msgstr "%s: error interno -- sizeof(ControlFileData) es demasiado grande ... corrija PG_CONTROL_SIZE\n" -#: pg_resetxlog.c:842 +#: pg_resetxlog.c:910 #, c-format msgid "%s: could not create pg_control file: %s\n" msgstr "%s: no se pudo crear el archivo pg_control: %s\n" -#: pg_resetxlog.c:853 +#: pg_resetxlog.c:921 #, c-format msgid "%s: could not write pg_control file: %s\n" msgstr "%s: no se pudo escribir el archivo pg_control: %s\n" -#: pg_resetxlog.c:860 pg_resetxlog.c:1156 +#: pg_resetxlog.c:928 pg_resetxlog.c:1224 #, c-format msgid "%s: fsync error: %s\n" msgstr "%s: error de fsync: %s\n" -#: pg_resetxlog.c:900 pg_resetxlog.c:971 pg_resetxlog.c:1022 +#: pg_resetxlog.c:968 pg_resetxlog.c:1039 pg_resetxlog.c:1090 #, c-format msgid "%s: could not open directory \"%s\": %s\n" msgstr "%s: no se pudo abrir el directorio «%s»: %s\n" -#: pg_resetxlog.c:936 pg_resetxlog.c:993 pg_resetxlog.c:1047 +#: pg_resetxlog.c:1004 pg_resetxlog.c:1061 pg_resetxlog.c:1115 #, c-format msgid "%s: could not read directory \"%s\": %s\n" msgstr "%s: no se pudo leer el directorio «%s»: %s\n" -#: pg_resetxlog.c:943 pg_resetxlog.c:1000 pg_resetxlog.c:1054 +#: pg_resetxlog.c:1011 pg_resetxlog.c:1068 pg_resetxlog.c:1122 #, c-format msgid "%s: could not close directory \"%s\": %s\n" msgstr "%s: no se pudo cerrar el directorio «%s»: %s\n" -#: pg_resetxlog.c:984 pg_resetxlog.c:1038 +#: pg_resetxlog.c:1052 pg_resetxlog.c:1106 #, c-format msgid "%s: could not delete file \"%s\": %s\n" msgstr "%s: no se pudo borrar el archivo «%s»: %s\n" -#: pg_resetxlog.c:1123 +#: pg_resetxlog.c:1191 #, c-format msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: no se pudo abrir el archivo «%s»: %s\n" -#: pg_resetxlog.c:1134 pg_resetxlog.c:1148 +#: pg_resetxlog.c:1202 pg_resetxlog.c:1216 #, c-format msgid "%s: could not write file \"%s\": %s\n" msgstr "%s: no se pudo escribir en el archivo «%s»: %s\n" -#: pg_resetxlog.c:1167 +#: pg_resetxlog.c:1235 #, c-format msgid "" "%s resets the PostgreSQL transaction log.\n" @@ -516,7 +530,7 @@ msgstr "" "%s reinicia la bitácora de transacciones de PostgreSQL.\n" "\n" -#: pg_resetxlog.c:1168 +#: pg_resetxlog.c:1236 #, c-format msgid "" "Usage:\n" @@ -527,81 +541,81 @@ msgstr "" " %s [OPCIÓN]... DATADIR\n" "\n" -#: pg_resetxlog.c:1169 +#: pg_resetxlog.c:1237 #, c-format msgid "Options:\n" msgstr "Opciones:\n" -#: pg_resetxlog.c:1170 +#: pg_resetxlog.c:1238 #, c-format msgid " -c XID,XID set oldest and newest transactions bearing commit timestamp\n" msgstr "" " -c XID,XID asigna los ID de transacciones más antiguo y más nuevo que llevan\n" " timestamp de commit\n" -#: pg_resetxlog.c:1171 +#: pg_resetxlog.c:1239 #, c-format msgid " (zero in either value means no change)\n" msgstr " (cero en cualquiera de ellos significa no cambiar)\n" -#: pg_resetxlog.c:1172 +#: pg_resetxlog.c:1240 #, c-format msgid " [-D] DATADIR data directory\n" msgstr " [-D] DATADIR directorio de datos\n" -#: pg_resetxlog.c:1173 +#: pg_resetxlog.c:1241 #, c-format msgid " -e XIDEPOCH set next transaction ID epoch\n" msgstr " -e XIDEPOCH asigna el siguiente «epoch» de ID de transacción\n" -#: pg_resetxlog.c:1174 +#: pg_resetxlog.c:1242 #, c-format msgid " -f force update to be done\n" msgstr " -f fuerza que la actualización sea hecha\n" -#: pg_resetxlog.c:1175 +#: pg_resetxlog.c:1243 #, c-format msgid " -l XLOGFILE force minimum WAL starting location for new transaction log\n" msgstr "" " -l XLOGFILE fuerza una posición mínima de inicio de WAL para una\n" " nueva transacción\n" -#: pg_resetxlog.c:1176 +#: pg_resetxlog.c:1244 #, c-format msgid " -m MXID,MXID set next and oldest multitransaction ID\n" msgstr " -m MXID,MXID asigna el siguiente ID de multitransacción y el más antiguo\n" -#: pg_resetxlog.c:1177 +#: pg_resetxlog.c:1245 #, c-format msgid " -n no update, just show what would be done (for testing)\n" msgstr " -n no actualiza, sólo muestra lo que va a hacer (para pruebas)\n" -#: pg_resetxlog.c:1178 +#: pg_resetxlog.c:1246 #, c-format msgid " -o OID set next OID\n" msgstr " -o OID asigna el siguiente OID\n" -#: pg_resetxlog.c:1179 +#: pg_resetxlog.c:1247 #, c-format msgid " -O OFFSET set next multitransaction offset\n" msgstr " -O OFFSET asigna la siguiente posición de multitransacción\n" -#: pg_resetxlog.c:1180 +#: pg_resetxlog.c:1248 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version muestra información de la versión, luego sale\n" -#: pg_resetxlog.c:1181 +#: pg_resetxlog.c:1249 #, c-format msgid " -x XID set next transaction ID\n" msgstr " -x XID asigna el siguiente ID de transacción\n" -#: pg_resetxlog.c:1182 +#: pg_resetxlog.c:1250 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help muestra esta ayuda, luego sale\n" -#: pg_resetxlog.c:1183 +#: pg_resetxlog.c:1251 #, c-format msgid "" "\n" diff --git a/src/bin/pg_resetxlog/po/fr.po b/src/bin/pg_resetxlog/po/fr.po index 1a9a57f77f..ce19d2e13e 100644 --- a/src/bin/pg_resetxlog/po/fr.po +++ b/src/bin/pg_resetxlog/po/fr.po @@ -1,28 +1,28 @@ # translation of pg_resetxlog.po to fr_fr # french message translation file for pg_resetxlog # -# Use these quotes: « %s » +# Use these quotes: « %s » # # Guillaume Lelarge , 2003-2009. -# Stéphane Schildknecht , 2009. +# Stéphane Schildknecht , 2009. msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-05-08 21:14+0000\n" -"PO-Revision-Date: 2016-05-09 10:28+0200\n" +"POT-Creation-Date: 2017-06-30 16:23+0000\n" +"PO-Revision-Date: 2017-07-02 17:36+0200\n" "Last-Translator: Guillaume Lelarge \n" "Language-Team: PostgreSQLfr \n" "Language: fr\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.7.1\n" +"X-Generator: Poedit 1.8.12\n" #: ../../common/restricted_token.c:68 #, c-format msgid "%s: WARNING: cannot create restricted tokens on this platform\n" -msgstr "%s : ATTENTION : ne peut pas crér les jetons restreints sur cette plateforme\n" +msgstr "%s : ATTENTION : ne peut pas crér les jetons restreints sur cette plateforme\n" #: ../../common/restricted_token.c:77 #, c-format @@ -37,115 +37,115 @@ msgstr "%s : n'a pas pu allouer les SID : code d'erreur %lu\n" #: ../../common/restricted_token.c:110 #, c-format msgid "%s: could not create restricted token: error code %lu\n" -msgstr "%s : n'a pas pu créer le jeton restreint : code d'erreur %lu\n" +msgstr "%s : n'a pas pu créer le jeton restreint : code d'erreur %lu\n" #: ../../common/restricted_token.c:132 #, c-format msgid "%s: could not start process for command \"%s\": error code %lu\n" -msgstr "%s : n'a pas pu démarrer le processus pour la commande « %s » : code d'erreur %lu\n" +msgstr "%s : n'a pas pu démarrer le processus pour la commande « %s » : code d'erreur %lu\n" #: ../../common/restricted_token.c:170 #, c-format msgid "%s: could not re-execute with restricted token: error code %lu\n" -msgstr "%s : n'a pas pu ré-exécuter le jeton restreint : code d'erreur %lu\n" +msgstr "%s : n'a pas pu ré-exécuter le jeton restreint : code d'erreur %lu\n" #: ../../common/restricted_token.c:186 #, c-format msgid "%s: could not get exit code from subprocess: error code %lu\n" -msgstr "%s : n'a pas pu récupérer le code de statut du sous-processus : code d'erreur %lu\n" +msgstr "%s : n'a pas pu récupérer le code de statut du sous-processus : code d'erreur %lu\n" #. translator: the second %s is a command line argument (-e, etc) -#: pg_resetxlog.c:140 pg_resetxlog.c:155 pg_resetxlog.c:170 pg_resetxlog.c:177 -#: pg_resetxlog.c:201 pg_resetxlog.c:216 pg_resetxlog.c:224 pg_resetxlog.c:250 -#: pg_resetxlog.c:264 +#: pg_resetxlog.c:141 pg_resetxlog.c:156 pg_resetxlog.c:171 pg_resetxlog.c:178 +#: pg_resetxlog.c:202 pg_resetxlog.c:217 pg_resetxlog.c:225 pg_resetxlog.c:251 +#: pg_resetxlog.c:265 #, c-format msgid "%s: invalid argument for option %s\n" msgstr "%s : argument invalide pour l'option %s\n" -#: pg_resetxlog.c:141 pg_resetxlog.c:156 pg_resetxlog.c:171 pg_resetxlog.c:178 -#: pg_resetxlog.c:202 pg_resetxlog.c:217 pg_resetxlog.c:225 pg_resetxlog.c:251 -#: pg_resetxlog.c:265 pg_resetxlog.c:272 pg_resetxlog.c:285 pg_resetxlog.c:293 +#: pg_resetxlog.c:142 pg_resetxlog.c:157 pg_resetxlog.c:172 pg_resetxlog.c:179 +#: pg_resetxlog.c:203 pg_resetxlog.c:218 pg_resetxlog.c:226 pg_resetxlog.c:252 +#: pg_resetxlog.c:266 pg_resetxlog.c:273 pg_resetxlog.c:286 pg_resetxlog.c:294 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Essayer « %s --help » pour plus d'informations.\n" +msgstr "Essayer « %s --help » pour plus d'informations.\n" -#: pg_resetxlog.c:146 +#: pg_resetxlog.c:147 #, c-format msgid "%s: transaction ID epoch (-e) must not be -1\n" msgstr "" -"%s : la valeur epoch de l'identifiant de transaction (-e) ne doit pas être\n" +"%s : la valeur epoch de l'identifiant de transaction (-e) ne doit pas être\n" "-1\n" -#: pg_resetxlog.c:161 +#: pg_resetxlog.c:162 #, c-format msgid "%s: transaction ID (-x) must not be 0\n" -msgstr "%s : l'identifiant de la transaction (-x) ne doit pas être 0\n" +msgstr "%s : l'identifiant de la transaction (-x) ne doit pas être 0\n" -#: pg_resetxlog.c:185 pg_resetxlog.c:192 +#: pg_resetxlog.c:186 pg_resetxlog.c:193 #, c-format msgid "%s: transaction ID (-c) must be either 0 or greater than or equal to 2\n" -msgstr "%s : l'identifiant de transaction (-c) doit être 0 ou supérieur ou égal à 2\n" +msgstr "%s : l'identifiant de transaction (-c) doit être 0 ou supérieur ou égal à 2\n" -#: pg_resetxlog.c:207 +#: pg_resetxlog.c:208 #, c-format msgid "%s: OID (-o) must not be 0\n" -msgstr "%s : l'OID (-o) ne doit pas être 0\n" +msgstr "%s : l'OID (-o) ne doit pas être 0\n" -#: pg_resetxlog.c:230 +#: pg_resetxlog.c:231 #, c-format msgid "%s: multitransaction ID (-m) must not be 0\n" -msgstr "%s : l'identifiant de multi-transaction (-m) ne doit pas être 0\n" +msgstr "%s : l'identifiant de multi-transaction (-m) ne doit pas être 0\n" -#: pg_resetxlog.c:240 +#: pg_resetxlog.c:241 #, c-format msgid "%s: oldest multitransaction ID (-m) must not be 0\n" -msgstr "%s : l'identifiant de multi-transaction le plus ancien (-m) ne doit pas être 0\n" +msgstr "%s : l'identifiant de multi-transaction le plus ancien (-m) ne doit pas être 0\n" -#: pg_resetxlog.c:256 +#: pg_resetxlog.c:257 #, c-format msgid "%s: multitransaction offset (-O) must not be -1\n" -msgstr "%s : le décalage de multi-transaction (-O) ne doit pas être -1\n" +msgstr "%s : le décalage de multi-transaction (-O) ne doit pas être -1\n" -#: pg_resetxlog.c:283 +#: pg_resetxlog.c:284 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" -msgstr "%s : trop d'arguments en ligne de commande (le premier étant « %s »)\n" +msgstr "%s : trop d'arguments en ligne de commande (le premier étant « %s »)\n" -#: pg_resetxlog.c:292 +#: pg_resetxlog.c:293 #, c-format msgid "%s: no data directory specified\n" -msgstr "%s : aucun répertoire de données indiqué\n" +msgstr "%s : aucun répertoire de données indiqué\n" -#: pg_resetxlog.c:306 +#: pg_resetxlog.c:307 #, c-format msgid "%s: cannot be executed by \"root\"\n" -msgstr "%s : ne peut pas être exécuté par « root »\n" +msgstr "%s : ne peut pas être exécuté par « root »\n" -#: pg_resetxlog.c:308 +#: pg_resetxlog.c:309 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" -msgstr "Vous devez exécuter %s en tant que super-utilisateur PostgreSQL.\n" +msgstr "Vous devez exécuter %s en tant que super-utilisateur PostgreSQL.\n" -#: pg_resetxlog.c:318 +#: pg_resetxlog.c:319 #, c-format msgid "%s: could not change directory to \"%s\": %s\n" -msgstr "%s : n'a pas pu accéder au répertoire « %s » : %s\n" +msgstr "%s : n'a pas pu accéder au répertoire « %s » : %s\n" -#: pg_resetxlog.c:331 pg_resetxlog.c:477 +#: pg_resetxlog.c:335 pg_resetxlog.c:482 pg_resetxlog.c:545 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" -msgstr "%s : n'a pas pu ouvrir le fichier « %s » en lecture : %s\n" +msgstr "%s : n'a pas pu ouvrir le fichier « %s » en lecture : %s\n" -#: pg_resetxlog.c:338 +#: pg_resetxlog.c:342 #, c-format msgid "" "%s: lock file \"%s\" exists\n" "Is a server running? If not, delete the lock file and try again.\n" msgstr "" -"%s : le verrou « %s » existe\n" -"Le serveur est-il démarré ? Sinon, supprimer le fichier verrou et réessayer.\n" +"%s : le verrou « %s » existe\n" +"Le serveur est-il démarré ? Sinon, supprimer le fichier verrou et réessayer.\n" -#: pg_resetxlog.c:425 +#: pg_resetxlog.c:429 #, c-format msgid "" "\n" @@ -153,62 +153,74 @@ msgid "" msgstr "" "\n" "Si ces valeurs semblent acceptables, utiliser -f pour forcer la\n" -"réinitialisation.\n" +"réinitialisation.\n" -#: pg_resetxlog.c:437 +#: pg_resetxlog.c:441 #, c-format msgid "" "The database server was not shut down cleanly.\n" "Resetting the transaction log might cause data to be lost.\n" "If you want to proceed anyway, use -f to force reset.\n" msgstr "" -"Le serveur de bases de données n'a pas été arrêté proprement.\n" -"Ré-initialiser le journal des transactions peut occasionner des pertes de\n" -"données.\n" -"Pour continuer malgré tout, utiliser -f pour forcer la\n" -"réinitialisation.\n" +"Le serveur de bases de données n'a pas été arrêté proprement.\n" +"Ré-initialiser le journal des transactions peut occasionner des pertes de\n" +"données.\n" +"Pour continuer malgré tout, utiliser -f pour forcer la\n" +"réinitialisation.\n" -#: pg_resetxlog.c:451 +#: pg_resetxlog.c:455 #, c-format msgid "Transaction log reset\n" -msgstr "Réinitialisation du journal des transactions\n" +msgstr "Réinitialisation du journal des transactions\n" -#: pg_resetxlog.c:480 +#: pg_resetxlog.c:492 +#, c-format +msgid "%s: unexpected empty file \"%s\"\n" +msgstr "%s : fichier vide « %s» inattendu\n" + +#: pg_resetxlog.c:497 pg_resetxlog.c:561 +#, c-format +msgid "%s: could not read file \"%s\": %s\n" +msgstr "%s : n'a pas pu lire le fichier « %s » : %s\n" + +#: pg_resetxlog.c:514 +#, c-format +msgid "" +"%s: data directory is of wrong version\n" +"File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\".\n" +msgstr "%s : le répertoire des données n'est pas de la bonne version. Le fichier « %s » contient « %s », qui n'est pas compatible avec la version « %s » de ce programme.\n" + +#: pg_resetxlog.c:548 #, c-format msgid "" "If you are sure the data directory path is correct, execute\n" " touch %s\n" "and try again.\n" msgstr "" -"Si le chemin du répertoire de données est correct, exécuter\n" +"Si le chemin du répertoire de données est correct, exécuter\n" " touch %s\n" -"et réessayer.\n" - -#: pg_resetxlog.c:493 -#, c-format -msgid "%s: could not read file \"%s\": %s\n" -msgstr "%s : n'a pas pu lire le fichier « %s » : %s\n" +"et réessayer.\n" -#: pg_resetxlog.c:516 +#: pg_resetxlog.c:584 #, c-format msgid "%s: pg_control exists but has invalid CRC; proceed with caution\n" -msgstr "%s : pg_control existe mais son CRC est invalide ; agir avec précaution\n" +msgstr "%s : pg_control existe mais son CRC est invalide ; agir avec précaution\n" -#: pg_resetxlog.c:525 +#: pg_resetxlog.c:593 #, c-format -msgid "%s: pg_control exists but is broken or unknown version; ignoring it\n" -msgstr "%s : pg_control existe mais est corrompu ou de version inconnue ; ignoré\n" +msgid "%s: pg_control exists but is broken or wrong version; ignoring it\n" +msgstr "%s : pg_control existe mais est corrompu ou d'une mauvaise version ; ignoré\n" -#: pg_resetxlog.c:628 +#: pg_resetxlog.c:696 #, c-format msgid "" "Guessed pg_control values:\n" "\n" msgstr "" -"Valeurs de pg_control devinées :\n" +"Valeurs de pg_control devinées :\n" "\n" -#: pg_resetxlog.c:630 +#: pg_resetxlog.c:698 #, c-format msgid "" "Current pg_control values:\n" @@ -217,176 +229,176 @@ msgstr "" "Valeurs actuelles de pg_control :\n" "\n" -#: pg_resetxlog.c:639 +#: pg_resetxlog.c:707 #, c-format msgid "pg_control version number: %u\n" -msgstr "Numéro de version de pg_control : %u\n" +msgstr "Numéro de version de pg_control : %u\n" -#: pg_resetxlog.c:641 +#: pg_resetxlog.c:709 #, c-format msgid "Catalog version number: %u\n" -msgstr "Numéro de version du catalogue : %u\n" +msgstr "Numéro de version du catalogue : %u\n" -#: pg_resetxlog.c:643 +#: pg_resetxlog.c:711 #, c-format msgid "Database system identifier: %s\n" -msgstr "Identifiant du système de base de données : %s\n" +msgstr "Identifiant du système de base de données : %s\n" -#: pg_resetxlog.c:645 +#: pg_resetxlog.c:713 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" -msgstr "Dernier TimeLineID du point de contrôle : %u\n" +msgstr "Dernier TimeLineID du point de contrôle : %u\n" -#: pg_resetxlog.c:647 +#: pg_resetxlog.c:715 #, c-format msgid "Latest checkpoint's full_page_writes: %s\n" -msgstr "Dernier full_page_writes du point de contrôle : %s\n" +msgstr "Dernier full_page_writes du point de contrôle : %s\n" -#: pg_resetxlog.c:648 +#: pg_resetxlog.c:716 msgid "off" -msgstr "désactivé" +msgstr "désactivé" -#: pg_resetxlog.c:648 +#: pg_resetxlog.c:716 msgid "on" -msgstr "activé" +msgstr "activé" -#: pg_resetxlog.c:649 +#: pg_resetxlog.c:717 #, c-format msgid "Latest checkpoint's NextXID: %u:%u\n" -msgstr "Dernier NextXID du point de contrôle : %u:%u\n" +msgstr "Dernier NextXID du point de contrôle : %u:%u\n" -#: pg_resetxlog.c:652 +#: pg_resetxlog.c:720 #, c-format msgid "Latest checkpoint's NextOID: %u\n" -msgstr "Dernier NextOID du point de contrôle : %u\n" +msgstr "Dernier NextOID du point de contrôle : %u\n" -#: pg_resetxlog.c:654 +#: pg_resetxlog.c:722 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" -msgstr "Dernier NextMultiXactId du point de contrôle : %u\n" +msgstr "Dernier NextMultiXactId du point de contrôle : %u\n" -#: pg_resetxlog.c:656 +#: pg_resetxlog.c:724 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" -msgstr "Dernier NextMultiOffset du point de contrôle : %u\n" +msgstr "Dernier NextMultiOffset du point de contrôle : %u\n" -#: pg_resetxlog.c:658 +#: pg_resetxlog.c:726 #, c-format msgid "Latest checkpoint's oldestXID: %u\n" -msgstr "Dernier oldestXID du point de contrôle : %u\n" +msgstr "Dernier oldestXID du point de contrôle : %u\n" -#: pg_resetxlog.c:660 +#: pg_resetxlog.c:728 #, c-format msgid "Latest checkpoint's oldestXID's DB: %u\n" -msgstr "Dernier oldestXID du point de contrôle de la base : %u\n" +msgstr "Dernier oldestXID du point de contrôle de la base : %u\n" -#: pg_resetxlog.c:662 +#: pg_resetxlog.c:730 #, c-format msgid "Latest checkpoint's oldestActiveXID: %u\n" -msgstr "Dernier oldestActiveXID du point de contrôle : %u\n" +msgstr "Dernier oldestActiveXID du point de contrôle : %u\n" -#: pg_resetxlog.c:664 +#: pg_resetxlog.c:732 #, c-format msgid "Latest checkpoint's oldestMultiXid: %u\n" -msgstr "Dernier oldestMultiXID du point de contrôle : %u\n" +msgstr "Dernier oldestMultiXID du point de contrôle : %u\n" -#: pg_resetxlog.c:666 +#: pg_resetxlog.c:734 #, c-format msgid "Latest checkpoint's oldestMulti's DB: %u\n" -msgstr "Dernier oldestMulti du point de contrôle de la base : %u\n" +msgstr "Dernier oldestMulti du point de contrôle de la base : %u\n" -#: pg_resetxlog.c:668 +#: pg_resetxlog.c:736 #, c-format msgid "Latest checkpoint's oldestCommitTsXid:%u\n" -msgstr "Dernier oldestCommitTsXid du point de contrôle : %u\n" +msgstr "Dernier oldestCommitTsXid du point de contrôle : %u\n" -#: pg_resetxlog.c:670 +#: pg_resetxlog.c:738 #, c-format msgid "Latest checkpoint's newestCommitTsXid:%u\n" -msgstr "Dernier newestCommitTsXid du point de contrôle : %u\n" +msgstr "Dernier newestCommitTsXid du point de contrôle : %u\n" -#: pg_resetxlog.c:672 +#: pg_resetxlog.c:740 #, c-format msgid "Maximum data alignment: %u\n" -msgstr "Alignement maximal des données : %u\n" +msgstr "Alignement maximal des données : %u\n" -#: pg_resetxlog.c:675 +#: pg_resetxlog.c:743 #, c-format msgid "Database block size: %u\n" -msgstr "Taille du bloc de la base de données : %u\n" +msgstr "Taille du bloc de la base de données : %u\n" -#: pg_resetxlog.c:677 +#: pg_resetxlog.c:745 #, c-format msgid "Blocks per segment of large relation: %u\n" msgstr "Blocs par segment des relations volumineuses : %u\n" -#: pg_resetxlog.c:679 +#: pg_resetxlog.c:747 #, c-format msgid "WAL block size: %u\n" msgstr "Taille de bloc du journal de transaction : %u\n" -#: pg_resetxlog.c:681 +#: pg_resetxlog.c:749 #, c-format msgid "Bytes per WAL segment: %u\n" msgstr "Octets par segment du journal de transaction : %u\n" -#: pg_resetxlog.c:683 +#: pg_resetxlog.c:751 #, c-format msgid "Maximum length of identifiers: %u\n" msgstr "Longueur maximale des identifiants : %u\n" -#: pg_resetxlog.c:685 +#: pg_resetxlog.c:753 #, c-format msgid "Maximum columns in an index: %u\n" msgstr "Nombre maximal de colonnes d'un index: %u\n" -#: pg_resetxlog.c:687 +#: pg_resetxlog.c:755 #, c-format msgid "Maximum size of a TOAST chunk: %u\n" msgstr "Longueur maximale d'un morceau TOAST : %u\n" -#: pg_resetxlog.c:689 +#: pg_resetxlog.c:757 #, c-format msgid "Size of a large-object chunk: %u\n" msgstr "Taille d'un morceau de Large Object : %u\n" -#: pg_resetxlog.c:691 +#: pg_resetxlog.c:759 #, c-format msgid "Date/time type storage: %s\n" msgstr "Stockage du type date/heure : %s\n" -#: pg_resetxlog.c:692 +#: pg_resetxlog.c:760 msgid "64-bit integers" msgstr "entiers 64-bits" -#: pg_resetxlog.c:692 +#: pg_resetxlog.c:760 msgid "floating-point numbers" -msgstr "nombres à virgule flottante" +msgstr "nombres à virgule flottante" -#: pg_resetxlog.c:693 +#: pg_resetxlog.c:761 #, c-format msgid "Float4 argument passing: %s\n" msgstr "Passage d'argument float4 : %s\n" -#: pg_resetxlog.c:694 pg_resetxlog.c:696 +#: pg_resetxlog.c:762 pg_resetxlog.c:764 msgid "by reference" -msgstr "par référence" +msgstr "par référence" -#: pg_resetxlog.c:694 pg_resetxlog.c:696 +#: pg_resetxlog.c:762 pg_resetxlog.c:764 msgid "by value" msgstr "par valeur" -#: pg_resetxlog.c:695 +#: pg_resetxlog.c:763 #, c-format msgid "Float8 argument passing: %s\n" msgstr "Passage d'argument float8 : %s\n" -#: pg_resetxlog.c:697 +#: pg_resetxlog.c:765 #, c-format msgid "Data page checksum version: %u\n" -msgstr "Version des sommes de contrôle des pages de données : %u\n" +msgstr "Version des sommes de contrôle des pages de données : %u\n" -#: pg_resetxlog.c:711 +#: pg_resetxlog.c:779 #, c-format msgid "" "\n" @@ -396,131 +408,131 @@ msgid "" msgstr "" "\n" "\n" -"Valeurs à changer :\n" +"Valeurs à changer :\n" "\n" -#: pg_resetxlog.c:714 +#: pg_resetxlog.c:782 #, c-format msgid "First log segment after reset: %s\n" -msgstr "Premier segment du journal après réinitialisation : %s\n" +msgstr "Premier segment du journal après réinitialisation : %s\n" -#: pg_resetxlog.c:718 +#: pg_resetxlog.c:786 #, c-format msgid "NextMultiXactId: %u\n" msgstr "NextMultiXactId: %u\n" -#: pg_resetxlog.c:720 +#: pg_resetxlog.c:788 #, c-format msgid "OldestMultiXid: %u\n" msgstr "OldestMultiXid: %u\n" -#: pg_resetxlog.c:722 +#: pg_resetxlog.c:790 #, c-format msgid "OldestMulti's DB: %u\n" msgstr "OldestMulti's DB: %u\n" -#: pg_resetxlog.c:728 +#: pg_resetxlog.c:796 #, c-format msgid "NextMultiOffset: %u\n" msgstr "NextMultiOffset: %u\n" -#: pg_resetxlog.c:734 +#: pg_resetxlog.c:802 #, c-format msgid "NextOID: %u\n" msgstr "NextOID: %u\n" -#: pg_resetxlog.c:740 +#: pg_resetxlog.c:808 #, c-format msgid "NextXID: %u\n" msgstr "NextXID: %u\n" -#: pg_resetxlog.c:742 +#: pg_resetxlog.c:810 #, c-format msgid "OldestXID: %u\n" msgstr "OldestXID: %u\n" -#: pg_resetxlog.c:744 +#: pg_resetxlog.c:812 #, c-format msgid "OldestXID's DB: %u\n" msgstr "OldestXID's DB: %u\n" -#: pg_resetxlog.c:750 +#: pg_resetxlog.c:818 #, c-format msgid "NextXID epoch: %u\n" msgstr "NextXID Epoch: %u\n" -#: pg_resetxlog.c:756 +#: pg_resetxlog.c:824 #, c-format msgid "oldestCommitTsXid: %u\n" msgstr "oldestCommitTsXid: %u\n" -#: pg_resetxlog.c:761 +#: pg_resetxlog.c:829 #, c-format msgid "newestCommitTsXid: %u\n" msgstr "newestCommitTsXid: %u\n" -#: pg_resetxlog.c:827 +#: pg_resetxlog.c:895 #, c-format msgid "%s: internal error -- sizeof(ControlFileData) is too large ... fix PG_CONTROL_SIZE\n" msgstr "" "%s : erreur interne -- sizeof(ControlFileData) est trop important...\n" "corrigez PG_CONTROL_SIZE\n" -#: pg_resetxlog.c:842 +#: pg_resetxlog.c:910 #, c-format msgid "%s: could not create pg_control file: %s\n" -msgstr "%s : n'a pas pu créer le fichier pg_control : %s\n" +msgstr "%s : n'a pas pu créer le fichier pg_control : %s\n" -#: pg_resetxlog.c:853 +#: pg_resetxlog.c:921 #, c-format msgid "%s: could not write pg_control file: %s\n" -msgstr "%s : n'a pas pu écrire le fichier pg_control : %s\n" +msgstr "%s : n'a pas pu écrire le fichier pg_control : %s\n" -#: pg_resetxlog.c:860 pg_resetxlog.c:1156 +#: pg_resetxlog.c:928 pg_resetxlog.c:1224 #, c-format msgid "%s: fsync error: %s\n" msgstr "%s : erreur fsync : %s\n" -#: pg_resetxlog.c:900 pg_resetxlog.c:971 pg_resetxlog.c:1022 +#: pg_resetxlog.c:968 pg_resetxlog.c:1039 pg_resetxlog.c:1090 #, c-format msgid "%s: could not open directory \"%s\": %s\n" -msgstr "%s : n'a pas pu ouvrir le répertoire « %s » : %s\n" +msgstr "%s : n'a pas pu ouvrir le répertoire « %s » : %s\n" -#: pg_resetxlog.c:936 pg_resetxlog.c:993 pg_resetxlog.c:1047 +#: pg_resetxlog.c:1004 pg_resetxlog.c:1061 pg_resetxlog.c:1115 #, c-format msgid "%s: could not read directory \"%s\": %s\n" -msgstr "%s : n'a pas pu lire le répertoire « %s » : %s\n" +msgstr "%s : n'a pas pu lire le répertoire « %s » : %s\n" -#: pg_resetxlog.c:943 pg_resetxlog.c:1000 pg_resetxlog.c:1054 +#: pg_resetxlog.c:1011 pg_resetxlog.c:1068 pg_resetxlog.c:1122 #, c-format msgid "%s: could not close directory \"%s\": %s\n" -msgstr "%s : n'a pas pu fermer le répertoire « %s » : %s\n" +msgstr "%s : n'a pas pu fermer le répertoire « %s » : %s\n" -#: pg_resetxlog.c:984 pg_resetxlog.c:1038 +#: pg_resetxlog.c:1052 pg_resetxlog.c:1106 #, c-format msgid "%s: could not delete file \"%s\": %s\n" -msgstr "%s : n'a pas pu supprimer le fichier « %s » : %s\n" +msgstr "%s : n'a pas pu supprimer le fichier « %s » : %s\n" -#: pg_resetxlog.c:1123 +#: pg_resetxlog.c:1191 #, c-format msgid "%s: could not open file \"%s\": %s\n" -msgstr "%s : n'a pas pu ouvrir le fichier « %s » : %s\n" +msgstr "%s : n'a pas pu ouvrir le fichier « %s » : %s\n" -#: pg_resetxlog.c:1134 pg_resetxlog.c:1148 +#: pg_resetxlog.c:1202 pg_resetxlog.c:1216 #, c-format msgid "%s: could not write file \"%s\": %s\n" -msgstr "%s : n'a pas pu écrire le fichier « %s » : %s\n" +msgstr "%s : n'a pas pu écrire le fichier « %s » : %s\n" -#: pg_resetxlog.c:1167 +#: pg_resetxlog.c:1235 #, c-format msgid "" "%s resets the PostgreSQL transaction log.\n" "\n" msgstr "" -"%s réinitialise le journal des transactions PostgreSQL.\n" +"%s réinitialise le journal des transactions PostgreSQL.\n" "\n" -#: pg_resetxlog.c:1168 +#: pg_resetxlog.c:1236 #, c-format msgid "" "Usage:\n" @@ -528,117 +540,117 @@ msgid "" "\n" msgstr "" "Usage :\n" -" %s [OPTION]... RÉP_DONNÉES\n" +" %s [OPTION]... RÉP_DONNÉES\n" "\n" -#: pg_resetxlog.c:1169 +#: pg_resetxlog.c:1237 #, c-format msgid "Options:\n" msgstr "Options :\n" -#: pg_resetxlog.c:1170 +#: pg_resetxlog.c:1238 #, c-format msgid " -c XID,XID set oldest and newest transactions bearing commit timestamp\n" -msgstr " -c XID,XID configure la plus ancienne et la plus récente transaction\n" +msgstr " -c XID,XID configure la plus ancienne et la plus récente transaction\n" -#: pg_resetxlog.c:1171 +#: pg_resetxlog.c:1239 #, c-format msgid " (zero in either value means no change)\n" -msgstr " (zéro dans l'une des deux valeurs signifie aucun changement)\n" +msgstr " (zéro dans l'une des deux valeurs signifie aucun changement)\n" -#: pg_resetxlog.c:1172 +#: pg_resetxlog.c:1240 #, c-format msgid " [-D] DATADIR data directory\n" -msgstr " [-D] RÉPDONNEES répertoire de la base de données\n" +msgstr " [-D] RÉPDONNEES répertoire de la base de données\n" -#: pg_resetxlog.c:1173 +#: pg_resetxlog.c:1241 #, c-format msgid " -e XIDEPOCH set next transaction ID epoch\n" msgstr "" " -e XIDEPOCH fixe la valeur epoch du prochain identifiant de\n" " transaction\n" -#: pg_resetxlog.c:1174 +#: pg_resetxlog.c:1242 #, c-format msgid " -f force update to be done\n" -msgstr " -f force la mise à jour\n" +msgstr " -f force la mise à jour\n" -#: pg_resetxlog.c:1175 +#: pg_resetxlog.c:1243 #, c-format msgid " -l XLOGFILE force minimum WAL starting location for new transaction log\n" msgstr "" -" -l FICHIERXLOG force l'emplacement minimal de début des WAL du nouveau\n" +" -l FICHIERXLOG force l'emplacement minimal de début des WAL du nouveau\n" " journal de transactions\n" -#: pg_resetxlog.c:1176 +#: pg_resetxlog.c:1244 #, c-format msgid " -m MXID,MXID set next and oldest multitransaction ID\n" msgstr " -m MXID,MXID fixe le prochain identifiant multi-transaction\n" -#: pg_resetxlog.c:1177 +#: pg_resetxlog.c:1245 #, c-format msgid " -n no update, just show what would be done (for testing)\n" msgstr "" -" -n pas de mise à jour, affiche simplement ce qui sera fait\n" +" -n pas de mise à jour, affiche simplement ce qui sera fait\n" " (pour test)\n" -#: pg_resetxlog.c:1178 +#: pg_resetxlog.c:1246 #, c-format msgid " -o OID set next OID\n" msgstr " -o OID fixe le prochain OID\n" -#: pg_resetxlog.c:1179 +#: pg_resetxlog.c:1247 #, c-format msgid " -O OFFSET set next multitransaction offset\n" -msgstr " -O DÉCALAGE fixe le décalage de la prochaine multi-transaction\n" +msgstr " -O DÉCALAGE fixe le décalage de la prochaine multi-transaction\n" -#: pg_resetxlog.c:1180 +#: pg_resetxlog.c:1248 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version affiche la version et quitte\n" -#: pg_resetxlog.c:1181 +#: pg_resetxlog.c:1249 #, c-format msgid " -x XID set next transaction ID\n" msgstr " -x XID fixe le prochain identifiant de transaction\n" -#: pg_resetxlog.c:1182 +#: pg_resetxlog.c:1250 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help affiche cette aide et quitte\n" -#: pg_resetxlog.c:1183 +#: pg_resetxlog.c:1251 #, c-format msgid "" "\n" "Report bugs to .\n" msgstr "" "\n" -"Rapporter les bogues à .\n" +"Rapporter les bogues à .\n" -#~ msgid "%s: invalid argument for option -x\n" -#~ msgstr "%s : argument invalide pour l'option -x\n" +#~ msgid "First log file ID after reset: %u\n" +#~ msgstr "Premier identifiant du journal après réinitialisation : %u\n" -#~ msgid "%s: invalid argument for option -o\n" -#~ msgstr "%s : argument invalide pour l'option -o\n" +#~ msgid " --version output version information, then exit\n" +#~ msgstr " --version afficherla version et quitte\n" -#~ msgid "%s: invalid argument for option -m\n" -#~ msgstr "%s : argument invalide pour l'option -m\n" +#~ msgid " --help show this help, then exit\n" +#~ msgstr " --help affiche cette aide et quitte\n" -#~ msgid "%s: invalid argument for option -O\n" -#~ msgstr "%s : argument invalide pour l'option -O\n" +#~ msgid "%s: could not read from directory \"%s\": %s\n" +#~ msgstr "%s : n'a pas pu lire le répertoire « %s » : %s\n" #~ msgid "%s: invalid argument for option -l\n" #~ msgstr "%s : argument invalide pour l'option -l\n" -#~ msgid "%s: could not read from directory \"%s\": %s\n" -#~ msgstr "%s : n'a pas pu lire le répertoire « %s » : %s\n" +#~ msgid "%s: invalid argument for option -O\n" +#~ msgstr "%s : argument invalide pour l'option -O\n" -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help affiche cette aide et quitte\n" +#~ msgid "%s: invalid argument for option -m\n" +#~ msgstr "%s : argument invalide pour l'option -m\n" -#~ msgid " --version output version information, then exit\n" -#~ msgstr " --version afficherla version et quitte\n" +#~ msgid "%s: invalid argument for option -o\n" +#~ msgstr "%s : argument invalide pour l'option -o\n" -#~ msgid "First log file ID after reset: %u\n" -#~ msgstr "Premier identifiant du journal après réinitialisation : %u\n" +#~ msgid "%s: invalid argument for option -x\n" +#~ msgstr "%s : argument invalide pour l'option -x\n" diff --git a/src/bin/pg_resetxlog/po/ja.po b/src/bin/pg_resetxlog/po/ja.po index cabfe527ac..4214f3d869 100644 --- a/src/bin/pg_resetxlog/po/ja.po +++ b/src/bin/pg_resetxlog/po/ja.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-20 16:55+0900\n" +"POT-Creation-Date: 2017-01-30 16:42+0900\n" "PO-Revision-Date: 2013-08-18 12:10+0900\n" "Last-Translator: Okano Naoki \n" "Language-Team: jpug-doc \n" @@ -529,7 +529,7 @@ msgstr "オプション:\n" #: pg_resetxlog.c:1170 #, c-format msgid " -c XID,XID set oldest and newest transactions bearing commit timestamp\n" -msgstr " -c XID,XID コミットタイムスタンプを作æˆã™ã‚‹æœ€ã‚‚å¤ã„ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã¨æœ€ã‚‚æ–°ã—ã„トランザクションを設定ã—ã¾ã™\n" +msgstr " -c XID,XID ã‚³ãƒŸãƒƒãƒˆã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ã‚’ä¿æŒã™ã‚‹æœ€ã‚‚å¤ã„ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã¨æœ€ã‚‚æ–°ã—ã„トランザクションを設定ã—ã¾ã™\n" #: pg_resetxlog.c:1171 #, c-format @@ -601,30 +601,3 @@ msgid "" msgstr "" "\n" "ä¸å…·åˆã¯ã¾ã§å ±å‘Šã—ã¦ãã ã•ã„。\n" - -#~ msgid "First log file ID after reset: %u\n" -#~ msgstr "リセット後ã€ç¾åœ¨ã®ãƒ­ã‚°ãƒ•ァイルID: %u\n" - -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help ヘルプを表示ã—ã€çµ‚了ã—ã¾ã™\n" - -#~ msgid " --version output version information, then exit\n" -#~ msgstr " --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã€çµ‚了ã—ã¾ã™\n" - -#~ msgid "%s: could not read from directory \"%s\": %s\n" -#~ msgstr "%s: ディレクトリ\"%s\"ã‹ã‚‰èª­ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ: %s\n" - -#~ msgid "%s: invalid argument for option -l\n" -#~ msgstr "%s: オプション-lã®å¼•æ•°ãŒç„¡åйã§ã™\n" - -#~ msgid "%s: invalid argument for option -O\n" -#~ msgstr "%s: オプション-Oã®å¼•æ•°ãŒç„¡åйã§ã™\n" - -#~ msgid "%s: invalid argument for option -m\n" -#~ msgstr "%s: オプション-mã®å¼•æ•°ãŒç„¡åйã§ã™\n" - -#~ msgid "%s: invalid argument for option -o\n" -#~ msgstr "%s: オプション-oã®å¼•æ•°ãŒç„¡åйã§ã™\n" - -#~ msgid "%s: invalid argument for option -x\n" -#~ msgstr "%s: オプション-xã®å¼•æ•°ãŒç„¡åйã§ã™\n" diff --git a/src/bin/pg_resetxlog/po/ko.po b/src/bin/pg_resetxlog/po/ko.po index 47d83c3a97..763a51d457 100644 --- a/src/bin/pg_resetxlog/po/ko.po +++ b/src/bin/pg_resetxlog/po/ko.po @@ -3,16 +3,16 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.5\n" +"Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-01-27 10:03+0900\n" -"PO-Revision-Date: 2016-01-29 13:45+0900\n" +"POT-Creation-Date: 2016-09-26 14:02+0900\n" +"PO-Revision-Date: 2016-09-26 18:37+0900\n" "Last-Translator: Ioseph Kim \n" "Language-Team: Korean Team \n" +"Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../../common/restricted_token.c:68 @@ -79,8 +79,7 @@ msgstr "%s: 트랜잭션 ID (-x) ê°’ì€ 0ì´ ì•„ë‹ˆì—¬ì•¼í•¨\n" #, c-format msgid "" "%s: transaction ID (-c) must be either 0 or greater than or equal to 2\n" -msgstr "" -"%s: -c 옵션으로 지정한 트랜잭션 ID는 0ì´ê±°ë‚˜ 2ì´ìƒì´ì–´ì•¼ 함\n" +msgstr "%s: -c 옵션으로 지정한 트랜잭션 ID는 0ì´ê±°ë‚˜ 2ì´ìƒì´ì–´ì•¼ 함\n" #: pg_resetxlog.c:207 #, c-format @@ -247,8 +246,8 @@ msgstr "on" #: pg_resetxlog.c:649 #, c-format -msgid "Latest checkpoint's NextXID: %u/%u\n" -msgstr "마지막 ì²´í¬í¬ì¸íЏ NextXID: %u/%u\n" +msgid "Latest checkpoint's NextXID: %u:%u\n" +msgstr "마지막 ì²´í¬í¬ì¸íЏ NextXID: %u:%u\n" #: pg_resetxlog.c:652 #, c-format diff --git a/src/bin/pg_resetxlog/po/pt_BR.po b/src/bin/pg_resetxlog/po/pt_BR.po index 491e8b67d8..031b10bd81 100644 --- a/src/bin/pg_resetxlog/po/pt_BR.po +++ b/src/bin/pg_resetxlog/po/pt_BR.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PostgreSQL package. # Cesar Suga , 2002. # Roberto Mello , 2002. -# Euler Taveira de Oliveira , 2003-2016. +# Euler Taveira de Oliveira , 2003-2017. # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-08-09 22:53-0300\n" +"POT-Creation-Date: 2017-08-06 01:59-0300\n" "PO-Revision-Date: 2005-10-04 22:55-0300\n" "Last-Translator: Euler Taveira de Oliveira \n" "Language-Team: Brazilian Portuguese \n" @@ -54,86 +54,86 @@ msgid "%s: could not get exit code from subprocess: error code %lu\n" msgstr "%s: não pôde obter código de saída de subprocesso: código de erro %lu\n" #. translator: the second %s is a command line argument (-e, etc) -#: pg_resetxlog.c:140 pg_resetxlog.c:155 pg_resetxlog.c:170 pg_resetxlog.c:177 -#: pg_resetxlog.c:201 pg_resetxlog.c:216 pg_resetxlog.c:224 pg_resetxlog.c:250 -#: pg_resetxlog.c:264 +#: pg_resetxlog.c:141 pg_resetxlog.c:156 pg_resetxlog.c:171 pg_resetxlog.c:178 +#: pg_resetxlog.c:202 pg_resetxlog.c:217 pg_resetxlog.c:225 pg_resetxlog.c:251 +#: pg_resetxlog.c:265 #, c-format msgid "%s: invalid argument for option %s\n" msgstr "%s: argumento inválido para opção %s\n" -#: pg_resetxlog.c:141 pg_resetxlog.c:156 pg_resetxlog.c:171 pg_resetxlog.c:178 -#: pg_resetxlog.c:202 pg_resetxlog.c:217 pg_resetxlog.c:225 pg_resetxlog.c:251 -#: pg_resetxlog.c:265 pg_resetxlog.c:272 pg_resetxlog.c:285 pg_resetxlog.c:293 +#: pg_resetxlog.c:142 pg_resetxlog.c:157 pg_resetxlog.c:172 pg_resetxlog.c:179 +#: pg_resetxlog.c:203 pg_resetxlog.c:218 pg_resetxlog.c:226 pg_resetxlog.c:252 +#: pg_resetxlog.c:266 pg_resetxlog.c:273 pg_resetxlog.c:286 pg_resetxlog.c:294 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Tente \"%s --help\" para obter informações adicionais.\n" -#: pg_resetxlog.c:146 +#: pg_resetxlog.c:147 #, c-format msgid "%s: transaction ID epoch (-e) must not be -1\n" msgstr "%s: época do ID da transação (-e) não deve ser -1\n" -#: pg_resetxlog.c:161 +#: pg_resetxlog.c:162 #, c-format msgid "%s: transaction ID (-x) must not be 0\n" msgstr "%s: ID da transação (-x) não deve ser 0\n" -#: pg_resetxlog.c:185 pg_resetxlog.c:192 +#: pg_resetxlog.c:186 pg_resetxlog.c:193 #, c-format msgid "%s: transaction ID (-c) must be either 0 or greater than or equal to 2\n" msgstr "%s: ID de transação (-c) deve ser 0 ou maior ou igual a 2\n" -#: pg_resetxlog.c:207 +#: pg_resetxlog.c:208 #, c-format msgid "%s: OID (-o) must not be 0\n" msgstr "%s: OID (-o) não deve ser 0\n" -#: pg_resetxlog.c:230 +#: pg_resetxlog.c:231 #, c-format msgid "%s: multitransaction ID (-m) must not be 0\n" msgstr "%s: ID de transação múltipla (-m) não deve ser 0\n" -#: pg_resetxlog.c:240 +#: pg_resetxlog.c:241 #, c-format msgid "%s: oldest multitransaction ID (-m) must not be 0\n" msgstr "%s: ID de transação múltipla mais velho (-m) não deve ser 0\n" -#: pg_resetxlog.c:256 +#: pg_resetxlog.c:257 #, c-format msgid "%s: multitransaction offset (-O) must not be -1\n" msgstr "%s: deslocamento da transação múltipla (-O) não deve ser -1\n" -#: pg_resetxlog.c:283 +#: pg_resetxlog.c:284 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: muitos argumentos de linha de comando (primeiro é \"%s\")\n" -#: pg_resetxlog.c:292 +#: pg_resetxlog.c:293 #, c-format msgid "%s: no data directory specified\n" msgstr "%s: nenhum diretório de dados foi especificado\n" -#: pg_resetxlog.c:306 +#: pg_resetxlog.c:307 #, c-format msgid "%s: cannot be executed by \"root\"\n" msgstr "%s: não pode ser executado pelo \"root\"\n" -#: pg_resetxlog.c:308 +#: pg_resetxlog.c:309 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" msgstr "Você deve executar %s como um super-usuário do PostgreSQL.\n" -#: pg_resetxlog.c:318 +#: pg_resetxlog.c:319 #, c-format msgid "%s: could not change directory to \"%s\": %s\n" msgstr "%s: não pôde mudar diretório para \"%s\": %s\n" -#: pg_resetxlog.c:331 pg_resetxlog.c:477 +#: pg_resetxlog.c:335 pg_resetxlog.c:482 pg_resetxlog.c:545 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: não pôde abrir arquivo \"%s\" para leitura: %s\n" -#: pg_resetxlog.c:338 +#: pg_resetxlog.c:342 #, c-format msgid "" "%s: lock file \"%s\" exists\n" @@ -142,7 +142,7 @@ msgstr "" "%s: arquivo de bloqueio \"%s\" existe\n" "O servidor está executando? Se não, apague o arquivo de bloqueio e tente novamente.\n" -#: pg_resetxlog.c:425 +#: pg_resetxlog.c:429 #, c-format msgid "" "\n" @@ -151,7 +151,7 @@ msgstr "" "\n" "Se estes valores lhe parecem aceitáveis, use -f para forçar o reinício.\n" -#: pg_resetxlog.c:437 +#: pg_resetxlog.c:441 #, c-format msgid "" "The database server was not shut down cleanly.\n" @@ -162,12 +162,31 @@ msgstr "" "Reiniciar o log de transação pode causar perda de dados.\n" "Se você quer continuar mesmo assim, use -f para forçar o reinício.\n" -#: pg_resetxlog.c:451 +#: pg_resetxlog.c:455 #, c-format msgid "Transaction log reset\n" msgstr "Log de transação reiniciado\n" -#: pg_resetxlog.c:480 +#: pg_resetxlog.c:492 +#, c-format +msgid "%s: unexpected empty file \"%s\"\n" +msgstr "%s: arquivo vazio \"%s\" inesperado\n" + +#: pg_resetxlog.c:497 pg_resetxlog.c:561 +#, c-format +msgid "%s: could not read file \"%s\": %s\n" +msgstr "%s: não pôde ler arquivo \"%s\": %s\n" + +#: pg_resetxlog.c:514 +#, c-format +msgid "" +"%s: data directory is of wrong version\n" +"File \"%s\" contains \"%s\", which is not compatible with this program's version \"%s\".\n" +msgstr "" +"%s: diretório de dados é da versão incorreta\n" +"Arquivo \"%s\" contém \"%s\", que não é compatível com a versão \"%s\" deste programa.\n" + +#: pg_resetxlog.c:548 #, c-format msgid "" "If you are sure the data directory path is correct, execute\n" @@ -178,22 +197,17 @@ msgstr "" " touch %s\n" "e tente novamente.\n" -#: pg_resetxlog.c:493 -#, c-format -msgid "%s: could not read file \"%s\": %s\n" -msgstr "%s: não pôde ler arquivo \"%s\": %s\n" - -#: pg_resetxlog.c:516 +#: pg_resetxlog.c:584 #, c-format msgid "%s: pg_control exists but has invalid CRC; proceed with caution\n" msgstr "%s: pg_control existe mas tem CRC inválido: prossiga com cuidado\n" -#: pg_resetxlog.c:525 +#: pg_resetxlog.c:593 #, c-format -msgid "%s: pg_control exists but is broken or unknown version; ignoring it\n" -msgstr "%s: pg_control existe mas não funciona ou sua versão é desconhecida; ignorando-o\n" +msgid "%s: pg_control exists but is broken or wrong version; ignoring it\n" +msgstr "%s: pg_control existe mas não funciona ou sua versão está incorreta; ignorando-o\n" -#: pg_resetxlog.c:628 +#: pg_resetxlog.c:696 #, c-format msgid "" "Guessed pg_control values:\n" @@ -202,7 +216,7 @@ msgstr "" "Valores supostos do pg_control:\n" "\n" -#: pg_resetxlog.c:630 +#: pg_resetxlog.c:698 #, c-format msgid "" "Current pg_control values:\n" @@ -211,176 +225,176 @@ msgstr "" "Valores atuais do pg_control:\n" "\n" -#: pg_resetxlog.c:639 +#: pg_resetxlog.c:707 #, c-format msgid "pg_control version number: %u\n" msgstr "número da versão do pg_control: %u\n" -#: pg_resetxlog.c:641 +#: pg_resetxlog.c:709 #, c-format msgid "Catalog version number: %u\n" msgstr "Número da versão do catálogo: %u\n" -#: pg_resetxlog.c:643 +#: pg_resetxlog.c:711 #, c-format msgid "Database system identifier: %s\n" msgstr "Identificador do sistema de banco de dados: %s\n" -#: pg_resetxlog.c:645 +#: pg_resetxlog.c:713 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" msgstr "TimeLineID do último ponto de controle: %u\n" -#: pg_resetxlog.c:647 +#: pg_resetxlog.c:715 #, c-format msgid "Latest checkpoint's full_page_writes: %s\n" msgstr "full_page_writes do último ponto de controle: %s\n" -#: pg_resetxlog.c:648 +#: pg_resetxlog.c:716 msgid "off" msgstr "desabilitado" -#: pg_resetxlog.c:648 +#: pg_resetxlog.c:716 msgid "on" msgstr "habilitado" -#: pg_resetxlog.c:649 +#: pg_resetxlog.c:717 #, c-format msgid "Latest checkpoint's NextXID: %u:%u\n" msgstr "NextXID do último ponto de controle: %u:%u\n" -#: pg_resetxlog.c:652 +#: pg_resetxlog.c:720 #, c-format msgid "Latest checkpoint's NextOID: %u\n" msgstr "NextOID do último ponto de controle: %u\n" -#: pg_resetxlog.c:654 +#: pg_resetxlog.c:722 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" msgstr "NextMultiXactId do último ponto de controle: %u\n" -#: pg_resetxlog.c:656 +#: pg_resetxlog.c:724 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" msgstr "NextMultiOffset do último ponto de controle: %u\n" -#: pg_resetxlog.c:658 +#: pg_resetxlog.c:726 #, c-format msgid "Latest checkpoint's oldestXID: %u\n" msgstr "oldestXID do último ponto de controle: %u\n" -#: pg_resetxlog.c:660 +#: pg_resetxlog.c:728 #, c-format msgid "Latest checkpoint's oldestXID's DB: %u\n" msgstr "BD do oldestXID do último ponto de controle: %u\n" -#: pg_resetxlog.c:662 +#: pg_resetxlog.c:730 #, c-format msgid "Latest checkpoint's oldestActiveXID: %u\n" msgstr "oldestActiveXID do último ponto de controle: %u\n" -#: pg_resetxlog.c:664 +#: pg_resetxlog.c:732 #, c-format msgid "Latest checkpoint's oldestMultiXid: %u\n" msgstr "oldestMultiXid do último ponto de controle: %u\n" -#: pg_resetxlog.c:666 +#: pg_resetxlog.c:734 #, c-format msgid "Latest checkpoint's oldestMulti's DB: %u\n" msgstr "BD do oldestMulti do último ponto de controle: %u\n" -#: pg_resetxlog.c:668 +#: pg_resetxlog.c:736 #, c-format msgid "Latest checkpoint's oldestCommitTsXid:%u\n" msgstr "oldestCommitTsXid do último ponto de controle: %u\n" -#: pg_resetxlog.c:670 +#: pg_resetxlog.c:738 #, c-format msgid "Latest checkpoint's newestCommitTsXid:%u\n" msgstr "newestCommitTsXid do último ponto de controle: %u\n" -#: pg_resetxlog.c:672 +#: pg_resetxlog.c:740 #, c-format msgid "Maximum data alignment: %u\n" msgstr "Máximo alinhamento de dado: %u\n" -#: pg_resetxlog.c:675 +#: pg_resetxlog.c:743 #, c-format msgid "Database block size: %u\n" msgstr "Tamanho do bloco do banco de dados: %u\n" -#: pg_resetxlog.c:677 +#: pg_resetxlog.c:745 #, c-format msgid "Blocks per segment of large relation: %u\n" msgstr "Blocos por segmento da relação grande: %u\n" -#: pg_resetxlog.c:679 +#: pg_resetxlog.c:747 #, c-format msgid "WAL block size: %u\n" msgstr "Tamanho do bloco do WAL: %u\n" -#: pg_resetxlog.c:681 +#: pg_resetxlog.c:749 #, c-format msgid "Bytes per WAL segment: %u\n" msgstr "Bytes por segmento do WAL: %u\n" -#: pg_resetxlog.c:683 +#: pg_resetxlog.c:751 #, c-format msgid "Maximum length of identifiers: %u\n" msgstr "Tamanho máximo de identificadores: %u\n" -#: pg_resetxlog.c:685 +#: pg_resetxlog.c:753 #, c-format msgid "Maximum columns in an index: %u\n" msgstr "Máximo de colunas em um índice: %u\n" -#: pg_resetxlog.c:687 +#: pg_resetxlog.c:755 #, c-format msgid "Maximum size of a TOAST chunk: %u\n" msgstr "Tamanho máximo do bloco TOAST: %u\n" -#: pg_resetxlog.c:689 +#: pg_resetxlog.c:757 #, c-format msgid "Size of a large-object chunk: %u\n" msgstr "Tamanho do bloco de um objeto grande: %u\n" -#: pg_resetxlog.c:691 +#: pg_resetxlog.c:759 #, c-format msgid "Date/time type storage: %s\n" msgstr "Tipo de data/hora do repositório: %s\n" -#: pg_resetxlog.c:692 +#: pg_resetxlog.c:760 msgid "64-bit integers" msgstr "inteiros de 64 bits" -#: pg_resetxlog.c:692 +#: pg_resetxlog.c:760 msgid "floating-point numbers" msgstr "números de ponto flutuante" -#: pg_resetxlog.c:693 +#: pg_resetxlog.c:761 #, c-format msgid "Float4 argument passing: %s\n" msgstr "Passagem de argumento float4: %s\n" -#: pg_resetxlog.c:694 pg_resetxlog.c:696 +#: pg_resetxlog.c:762 pg_resetxlog.c:764 msgid "by reference" msgstr "por referência" -#: pg_resetxlog.c:694 pg_resetxlog.c:696 +#: pg_resetxlog.c:762 pg_resetxlog.c:764 msgid "by value" msgstr "por valor" -#: pg_resetxlog.c:695 +#: pg_resetxlog.c:763 #, c-format msgid "Float8 argument passing: %s\n" msgstr "Passagem de argumento float8: %s\n" -#: pg_resetxlog.c:697 +#: pg_resetxlog.c:765 #, c-format msgid "Data page checksum version: %u\n" msgstr "Versão da verificação de páginas de dados: %u\n" -#: pg_resetxlog.c:711 +#: pg_resetxlog.c:779 #, c-format msgid "" "\n" @@ -393,117 +407,117 @@ msgstr "" "Valores a serem alterados:\n" "\n" -#: pg_resetxlog.c:714 +#: pg_resetxlog.c:782 #, c-format msgid "First log segment after reset: %s\n" msgstr "Primeiro segmento do arquivo de log após reinício: %s\n" -#: pg_resetxlog.c:718 +#: pg_resetxlog.c:786 #, c-format msgid "NextMultiXactId: %u\n" msgstr "NextMultiXactId: %u\n" -#: pg_resetxlog.c:720 +#: pg_resetxlog.c:788 #, c-format msgid "OldestMultiXid: %u\n" msgstr "OldestMultiXid: %u\n" -#: pg_resetxlog.c:722 +#: pg_resetxlog.c:790 #, c-format msgid "OldestMulti's DB: %u\n" msgstr "BD do OldestMulti: %u\n" -#: pg_resetxlog.c:728 +#: pg_resetxlog.c:796 #, c-format msgid "NextMultiOffset: %u\n" msgstr "NextMultiOffset: %u\n" -#: pg_resetxlog.c:734 +#: pg_resetxlog.c:802 #, c-format msgid "NextOID: %u\n" msgstr "NextOID: %u\n" -#: pg_resetxlog.c:740 +#: pg_resetxlog.c:808 #, c-format msgid "NextXID: %u\n" msgstr "NextXID: %u\n" -#: pg_resetxlog.c:742 +#: pg_resetxlog.c:810 #, c-format msgid "OldestXID: %u\n" msgstr "OldestXID: %u\n" -#: pg_resetxlog.c:744 +#: pg_resetxlog.c:812 #, c-format msgid "OldestXID's DB: %u\n" msgstr "BD do OldestXID: %u\n" -#: pg_resetxlog.c:750 +#: pg_resetxlog.c:818 #, c-format msgid "NextXID epoch: %u\n" msgstr "época do NextXID: %u\n" -#: pg_resetxlog.c:756 +#: pg_resetxlog.c:824 #, c-format msgid "oldestCommitTsXid: %u\n" msgstr "oldestCommitTsXid: %u\n" -#: pg_resetxlog.c:761 +#: pg_resetxlog.c:829 #, c-format msgid "newestCommitTsXid: %u\n" msgstr "newestCommitTsXid: %u\n" -#: pg_resetxlog.c:827 +#: pg_resetxlog.c:895 #, c-format msgid "%s: internal error -- sizeof(ControlFileData) is too large ... fix PG_CONTROL_SIZE\n" msgstr "%s: erro interno -- sizeof(ControlFileData) é muito grande ... conserte o PG_CONTROL_SIZE\n" -#: pg_resetxlog.c:842 +#: pg_resetxlog.c:910 #, c-format msgid "%s: could not create pg_control file: %s\n" msgstr "%s: não pôde criar arquivo do pg_control: %s\n" -#: pg_resetxlog.c:853 +#: pg_resetxlog.c:921 #, c-format msgid "%s: could not write pg_control file: %s\n" msgstr "%s: não pôde escrever no arquivo do pg_control: %s\n" -#: pg_resetxlog.c:860 pg_resetxlog.c:1156 +#: pg_resetxlog.c:928 pg_resetxlog.c:1224 #, c-format msgid "%s: fsync error: %s\n" msgstr "%s: erro ao executar fsync: %s\n" -#: pg_resetxlog.c:900 pg_resetxlog.c:971 pg_resetxlog.c:1022 +#: pg_resetxlog.c:968 pg_resetxlog.c:1039 pg_resetxlog.c:1090 #, c-format msgid "%s: could not open directory \"%s\": %s\n" msgstr "%s: não pôde abrir diretório \"%s\": %s\n" -#: pg_resetxlog.c:936 pg_resetxlog.c:993 pg_resetxlog.c:1047 +#: pg_resetxlog.c:1004 pg_resetxlog.c:1061 pg_resetxlog.c:1115 #, c-format msgid "%s: could not read directory \"%s\": %s\n" msgstr "%s: não pôde ler diretório \"%s\": %s\n" -#: pg_resetxlog.c:943 pg_resetxlog.c:1000 pg_resetxlog.c:1054 +#: pg_resetxlog.c:1011 pg_resetxlog.c:1068 pg_resetxlog.c:1122 #, c-format msgid "%s: could not close directory \"%s\": %s\n" msgstr "%s: não pôde fechar diretório \"%s\": %s\n" -#: pg_resetxlog.c:984 pg_resetxlog.c:1038 +#: pg_resetxlog.c:1052 pg_resetxlog.c:1106 #, c-format msgid "%s: could not delete file \"%s\": %s\n" msgstr "%s: não pôde apagar arquivo \"%s\": %s\n" -#: pg_resetxlog.c:1123 +#: pg_resetxlog.c:1191 #, c-format msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: não pôde abrir arquivo \"%s\": %s\n" -#: pg_resetxlog.c:1134 pg_resetxlog.c:1148 +#: pg_resetxlog.c:1202 pg_resetxlog.c:1216 #, c-format msgid "%s: could not write file \"%s\": %s\n" msgstr "%s: não pôde escrever no arquivo \"%s\": %s\n" -#: pg_resetxlog.c:1167 +#: pg_resetxlog.c:1235 #, c-format msgid "" "%s resets the PostgreSQL transaction log.\n" @@ -512,7 +526,7 @@ msgstr "" "%s reinicia o log de transação do PostgreSQL.\n" "\n" -#: pg_resetxlog.c:1168 +#: pg_resetxlog.c:1236 #, c-format msgid "" "Usage:\n" @@ -523,77 +537,77 @@ msgstr "" " %s [OPÇÃO]... DIRDADOS\n" "\n" -#: pg_resetxlog.c:1169 +#: pg_resetxlog.c:1237 #, c-format msgid "Options:\n" msgstr "Opções:\n" -#: pg_resetxlog.c:1170 +#: pg_resetxlog.c:1238 #, c-format msgid " -c XID,XID set oldest and newest transactions bearing commit timestamp\n" msgstr " -c XID,XID define transações mais velha e mais nova contendo timestamp de efetivação\n" -#: pg_resetxlog.c:1171 +#: pg_resetxlog.c:1239 #, c-format msgid " (zero in either value means no change)\n" msgstr " (zero em qualquer valor significa nenhuma mudança)\n" -#: pg_resetxlog.c:1172 +#: pg_resetxlog.c:1240 #, c-format msgid " [-D] DATADIR data directory\n" msgstr " [-D] DIRDADOS diretório de dados\n" -#: pg_resetxlog.c:1173 +#: pg_resetxlog.c:1241 #, c-format msgid " -e XIDEPOCH set next transaction ID epoch\n" msgstr " -e ÉPOCA_XID define próxima época do ID de transação\n" -#: pg_resetxlog.c:1174 +#: pg_resetxlog.c:1242 #, c-format msgid " -f force update to be done\n" msgstr " -f força atualização ser feita\n" -#: pg_resetxlog.c:1175 +#: pg_resetxlog.c:1243 #, c-format msgid " -l XLOGFILE force minimum WAL starting location for new transaction log\n" msgstr " -l XLOGFILE força local inicial mínimo do WAL para novo log de transação\n" -#: pg_resetxlog.c:1176 +#: pg_resetxlog.c:1244 #, c-format msgid " -m MXID,MXID set next and oldest multitransaction ID\n" msgstr " -m MXID,MXID define próximo e mais velho ID de transação múltipla\n" -#: pg_resetxlog.c:1177 +#: pg_resetxlog.c:1245 #, c-format msgid " -n no update, just show what would be done (for testing)\n" msgstr " -n sem atualização, mostra o que seria feito (para teste)\n" -#: pg_resetxlog.c:1178 +#: pg_resetxlog.c:1246 #, c-format msgid " -o OID set next OID\n" msgstr " -o OID define próximo OID\n" -#: pg_resetxlog.c:1179 +#: pg_resetxlog.c:1247 #, c-format msgid " -O OFFSET set next multitransaction offset\n" msgstr " -O OFFSET define próxima posição de transação múltipla\n" -#: pg_resetxlog.c:1180 +#: pg_resetxlog.c:1248 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version mostra informação sobre a versão e termina\n" -#: pg_resetxlog.c:1181 +#: pg_resetxlog.c:1249 #, c-format msgid " -x XID set next transaction ID\n" msgstr " -x XID define próximo ID de transação\n" -#: pg_resetxlog.c:1182 +#: pg_resetxlog.c:1250 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help mostra essa ajuda e termina\n" -#: pg_resetxlog.c:1183 +#: pg_resetxlog.c:1251 #, c-format msgid "" "\n" diff --git a/src/bin/pg_resetxlog/po/ru.po b/src/bin/pg_resetxlog/po/ru.po index 174787a433..233c7ab95e 100644 --- a/src/bin/pg_resetxlog/po/ru.po +++ b/src/bin/pg_resetxlog/po/ru.po @@ -5,15 +5,14 @@ # Oleg Bartunov , 2004. # Sergey Burladyan , 2009. # Dmitriy Olshevskiy , 2014. -# Alexander Lakhin , 2012-2016. +# Alexander Lakhin , 2012-2016, 2017. # msgid "" msgstr "" "Project-Id-Version: pg_resetxlog (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-20 18:14+0000\n" -"PO-Revision-Date: 2016-09-20 12:00+0300\n" -"Last-Translator: Alexander Lakhin \n" +"POT-Creation-Date: 2017-08-17 17:52+0000\n" +"PO-Revision-Date: 2017-08-21 08:21+0300\n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" @@ -21,6 +20,7 @@ msgstr "" "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" +"Last-Translator: Alexander Lakhin \n" #: ../../common/restricted_token.c:68 #, c-format @@ -60,87 +60,87 @@ msgid "%s: could not get exit code from subprocess: error code %lu\n" msgstr "%s: не удалоÑÑŒ получить код выхода от подпроцеÑÑа (код ошибки: %lu)\n" #. translator: the second %s is a command line argument (-e, etc) -#: pg_resetxlog.c:140 pg_resetxlog.c:155 pg_resetxlog.c:170 pg_resetxlog.c:177 -#: pg_resetxlog.c:201 pg_resetxlog.c:216 pg_resetxlog.c:224 pg_resetxlog.c:250 -#: pg_resetxlog.c:264 +#: pg_resetxlog.c:141 pg_resetxlog.c:156 pg_resetxlog.c:171 pg_resetxlog.c:178 +#: pg_resetxlog.c:202 pg_resetxlog.c:217 pg_resetxlog.c:225 pg_resetxlog.c:251 +#: pg_resetxlog.c:265 #, c-format msgid "%s: invalid argument for option %s\n" msgstr "%s: недопуÑтимый аргумент параметра %s\n" -#: pg_resetxlog.c:141 pg_resetxlog.c:156 pg_resetxlog.c:171 pg_resetxlog.c:178 -#: pg_resetxlog.c:202 pg_resetxlog.c:217 pg_resetxlog.c:225 pg_resetxlog.c:251 -#: pg_resetxlog.c:265 pg_resetxlog.c:272 pg_resetxlog.c:285 pg_resetxlog.c:293 +#: pg_resetxlog.c:142 pg_resetxlog.c:157 pg_resetxlog.c:172 pg_resetxlog.c:179 +#: pg_resetxlog.c:203 pg_resetxlog.c:218 pg_resetxlog.c:226 pg_resetxlog.c:252 +#: pg_resetxlog.c:266 pg_resetxlog.c:273 pg_resetxlog.c:286 pg_resetxlog.c:294 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Ð”Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации попробуйте \"%s --help\".\n" -#: pg_resetxlog.c:146 +#: pg_resetxlog.c:147 #, c-format msgid "%s: transaction ID epoch (-e) must not be -1\n" msgstr "%s: Ñпоха ID транзакции (-e) не должна быть равна -1\n" -#: pg_resetxlog.c:161 +#: pg_resetxlog.c:162 #, c-format msgid "%s: transaction ID (-x) must not be 0\n" msgstr "%s: ID транзакции (-x) не должен быть равен 0\n" -#: pg_resetxlog.c:185 pg_resetxlog.c:192 +#: pg_resetxlog.c:186 pg_resetxlog.c:193 #, c-format msgid "" "%s: transaction ID (-c) must be either 0 or greater than or equal to 2\n" msgstr "%s: ID транзакции (-c) должен быть равен 0, либо больше или равен 2\n" -#: pg_resetxlog.c:207 +#: pg_resetxlog.c:208 #, c-format msgid "%s: OID (-o) must not be 0\n" msgstr "%s: OID (-o) не должен быть равен 0\n" -#: pg_resetxlog.c:230 +#: pg_resetxlog.c:231 #, c-format msgid "%s: multitransaction ID (-m) must not be 0\n" msgstr "%s: ID мультитранзакции (-m) не должен быть равен 0\n" -#: pg_resetxlog.c:240 +#: pg_resetxlog.c:241 #, c-format msgid "%s: oldest multitransaction ID (-m) must not be 0\n" msgstr "%s: ID Ñтарейшей мультитранзакции (-m) не должен быть равен 0\n" -#: pg_resetxlog.c:256 +#: pg_resetxlog.c:257 #, c-format msgid "%s: multitransaction offset (-O) must not be -1\n" msgstr "%s: Ñмещение мультитранзакции (-O) не должно быть равно -1\n" -#: pg_resetxlog.c:283 +#: pg_resetxlog.c:284 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: Ñлишком много аргументов командной Ñтроки (первый: \"%s\")\n" -#: pg_resetxlog.c:292 +#: pg_resetxlog.c:293 #, c-format msgid "%s: no data directory specified\n" msgstr "%s: каталог данных не указан\n" -#: pg_resetxlog.c:306 +#: pg_resetxlog.c:307 #, c-format msgid "%s: cannot be executed by \"root\"\n" msgstr "%s: программу не должен запуÑкать root\n" -#: pg_resetxlog.c:308 +#: pg_resetxlog.c:309 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" msgstr "ЗапуÑкать %s нужно от имени ÑÑƒÐ¿ÐµÑ€Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ PostgreSQL.\n" -#: pg_resetxlog.c:318 +#: pg_resetxlog.c:319 #, c-format msgid "%s: could not change directory to \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ перейти в каталог \"%s\": %s\n" -#: pg_resetxlog.c:331 pg_resetxlog.c:477 +#: pg_resetxlog.c:335 pg_resetxlog.c:482 pg_resetxlog.c:545 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: не удалоÑÑŒ открыть файл \"%s\" Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ: %s\n" -#: pg_resetxlog.c:338 +#: pg_resetxlog.c:342 #, c-format msgid "" "%s: lock file \"%s\" exists\n" @@ -149,7 +149,7 @@ msgstr "" "%s: обнаружен файл блокировки \"%s\"\n" "Возможно, Ñервер запущен? ЕÑли нет, удалите Ñтот файл и попробуйте Ñнова.\n" -#: pg_resetxlog.c:425 +#: pg_resetxlog.c:429 #, c-format msgid "" "\n" @@ -159,7 +159,7 @@ msgstr "" "ЕÑли Ñти Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ÐµÐ¼Ð»ÐµÐ¼Ñ‹, выполните ÑÐ±Ñ€Ð¾Ñ Ð¿Ñ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾, добавив ключ -" "f.\n" -#: pg_resetxlog.c:437 +#: pg_resetxlog.c:441 #, c-format msgid "" "The database server was not shut down cleanly.\n" @@ -170,12 +170,32 @@ msgstr "" "Ð¡Ð±Ñ€Ð¾Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ð° транзакций может привеÑти к потере данных.\n" "ЕÑли вы хотите ÑброÑить его, неÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° Ñто, добавьте ключ -f.\n" -#: pg_resetxlog.c:451 +#: pg_resetxlog.c:455 #, c-format msgid "Transaction log reset\n" msgstr "Журнал транзакций Ñброшен\n" -#: pg_resetxlog.c:480 +#: pg_resetxlog.c:492 +#, c-format +msgid "%s: unexpected empty file \"%s\"\n" +msgstr "%s: файл \"%s\" оказалÑÑ Ð¿ÑƒÑтым\n" + +#: pg_resetxlog.c:497 pg_resetxlog.c:561 +#, c-format +msgid "%s: could not read file \"%s\": %s\n" +msgstr "%s: не удалоÑÑŒ прочитать файл \"%s\": %s\n" + +#: pg_resetxlog.c:514 +#, c-format +msgid "" +"%s: data directory is of wrong version\n" +"File \"%s\" contains \"%s\", which is not compatible with this program's " +"version \"%s\".\n" +msgstr "" +"%s: каталог данных неверной верÑии\n" +"Файл \"%s\" Ñодержит Ñтроку \"%s\", а ожидаетÑÑ Ð²ÐµÑ€ÑÐ¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹ \"%s\".\n" + +#: pg_resetxlog.c:548 #, c-format msgid "" "If you are sure the data directory path is correct, execute\n" @@ -186,25 +206,21 @@ msgstr "" " touch %s\n" "и повторите попытку.\n" -#: pg_resetxlog.c:493 -#, c-format -msgid "%s: could not read file \"%s\": %s\n" -msgstr "%s: не удалоÑÑŒ прочитать файл \"%s\": %s\n" - -#: pg_resetxlog.c:516 +#: pg_resetxlog.c:584 #, c-format msgid "%s: pg_control exists but has invalid CRC; proceed with caution\n" msgstr "" "%s: pg_control ÑущеÑтвует, но его ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма неверна; продолжайте Ñ " "оÑторожноÑтью\n" -#: pg_resetxlog.c:525 +#: pg_resetxlog.c:593 #, c-format -msgid "%s: pg_control exists but is broken or unknown version; ignoring it\n" +msgid "%s: pg_control exists but is broken or wrong version; ignoring it\n" msgstr "" -"%s: pg_control иÑпорчен или имеет неизвеÑтную верÑию; игнорируетÑÑ...\n" +"%s: pg_control иÑпорчен или имеет неизвеÑтную либо недопуÑтимую верÑию; " +"игнорируетÑÑ...\n" -#: pg_resetxlog.c:628 +#: pg_resetxlog.c:696 #, c-format msgid "" "Guessed pg_control values:\n" @@ -213,7 +229,7 @@ msgstr "" "Предполагаемые Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ pg_control:\n" "\n" -#: pg_resetxlog.c:630 +#: pg_resetxlog.c:698 #, c-format msgid "" "Current pg_control values:\n" @@ -222,176 +238,190 @@ msgstr "" "Текущие Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ pg_control:\n" "\n" -#: pg_resetxlog.c:639 +#: pg_resetxlog.c:707 #, c-format msgid "pg_control version number: %u\n" msgstr "Ðомер верÑии pg_control: %u\n" -#: pg_resetxlog.c:641 +#: pg_resetxlog.c:709 #, c-format msgid "Catalog version number: %u\n" msgstr "Ðомер верÑии каталога: %u\n" -#: pg_resetxlog.c:643 +#: pg_resetxlog.c:711 #, c-format msgid "Database system identifier: %s\n" msgstr "Идентификатор ÑиÑтемы баз данных: %s\n" -#: pg_resetxlog.c:645 +# skip-rule: capital-letter-first +#: pg_resetxlog.c:713 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" msgstr "Ð›Ð¸Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ поÑледней конт. точки: %u\n" -#: pg_resetxlog.c:647 +# skip-rule: no-space-after-period +#: pg_resetxlog.c:715 #, c-format msgid "Latest checkpoint's full_page_writes: %s\n" msgstr "Режим full_page_writes поÑледней к.Ñ‚: %s\n" -#: pg_resetxlog.c:648 +#: pg_resetxlog.c:716 msgid "off" msgstr "выкл." -#: pg_resetxlog.c:648 +#: pg_resetxlog.c:716 msgid "on" msgstr "вкл." -#: pg_resetxlog.c:649 +# skip-rule: capital-letter-first +#: pg_resetxlog.c:717 #, c-format msgid "Latest checkpoint's NextXID: %u:%u\n" msgstr "NextXID поÑледней конт. точки: %u:%u\n" -#: pg_resetxlog.c:652 +# skip-rule: capital-letter-first +#: pg_resetxlog.c:720 #, c-format msgid "Latest checkpoint's NextOID: %u\n" msgstr "NextOID поÑледней конт. точки: %u\n" -#: pg_resetxlog.c:654 +# skip-rule: capital-letter-first +#: pg_resetxlog.c:722 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" msgstr "NextMultiXactId поÑлед. конт. точки: %u\n" -#: pg_resetxlog.c:656 +# skip-rule: capital-letter-first +#: pg_resetxlog.c:724 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" msgstr "NextMultiOffset поÑлед. конт. точки: %u\n" -#: pg_resetxlog.c:658 +# skip-rule: capital-letter-first +#: pg_resetxlog.c:726 #, c-format msgid "Latest checkpoint's oldestXID: %u\n" msgstr "oldestXID поÑледней конт. точки: %u\n" -#: pg_resetxlog.c:660 +# skip-rule: capital-letter-first +#: pg_resetxlog.c:728 #, c-format msgid "Latest checkpoint's oldestXID's DB: %u\n" msgstr "БД Ñ oldestXID поÑледней конт. точки: %u\n" -#: pg_resetxlog.c:662 +# skip-rule: capital-letter-first +#: pg_resetxlog.c:730 #, c-format msgid "Latest checkpoint's oldestActiveXID: %u\n" -msgstr "oldestActiveXID поÑледней к.Ñ‚.: %u\n" +msgstr "oldestActiveXID поÑледней к. Ñ‚.: %u\n" -#: pg_resetxlog.c:664 +# skip-rule: capital-letter-first +#: pg_resetxlog.c:732 #, c-format msgid "Latest checkpoint's oldestMultiXid: %u\n" msgstr "oldestMultiXid поÑледней конт. точки: %u\n" -#: pg_resetxlog.c:666 +# skip-rule: capital-letter-first, double-space +#: pg_resetxlog.c:734 #, c-format msgid "Latest checkpoint's oldestMulti's DB: %u\n" -msgstr "БД Ñ oldestMulti поÑледней к.Ñ‚.: %u\n" +msgstr "БД Ñ oldestMulti поÑледней к. Ñ‚.: %u\n" -#: pg_resetxlog.c:668 +# skip-rule: capital-letter-first, double-space +#: pg_resetxlog.c:736 #, c-format msgid "Latest checkpoint's oldestCommitTsXid:%u\n" msgstr "oldestCommitTsXid поÑледней к. Ñ‚.: %u\n" -#: pg_resetxlog.c:670 +# skip-rule: capital-letter-first, double-space +#: pg_resetxlog.c:738 #, c-format msgid "Latest checkpoint's newestCommitTsXid:%u\n" msgstr "newestCommitTsXid поÑледней к. Ñ‚.: %u\n" -#: pg_resetxlog.c:672 +#: pg_resetxlog.c:740 #, c-format msgid "Maximum data alignment: %u\n" msgstr "МакÑ. предел Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…: %u\n" -#: pg_resetxlog.c:675 +#: pg_resetxlog.c:743 #, c-format msgid "Database block size: %u\n" msgstr "Размер блока БД: %u\n" -#: pg_resetxlog.c:677 +# skip-rule: double-space +#: pg_resetxlog.c:745 #, c-format msgid "Blocks per segment of large relation: %u\n" msgstr "Блоков в макÑ. Ñегменте отношений: %u\n" -#: pg_resetxlog.c:679 +#: pg_resetxlog.c:747 #, c-format msgid "WAL block size: %u\n" msgstr "Размер блока WAL: %u\n" -#: pg_resetxlog.c:681 +#: pg_resetxlog.c:749 #, c-format msgid "Bytes per WAL segment: %u\n" msgstr "Байт в Ñегменте WAL: %u\n" -#: pg_resetxlog.c:683 +#: pg_resetxlog.c:751 #, c-format msgid "Maximum length of identifiers: %u\n" msgstr "МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° идентификаторов: %u\n" -#: pg_resetxlog.c:685 +#: pg_resetxlog.c:753 #, c-format msgid "Maximum columns in an index: %u\n" msgstr "МакÑимальное чиÑло Ñтолбцов в индекÑе: %u\n" -#: pg_resetxlog.c:687 +#: pg_resetxlog.c:755 #, c-format msgid "Maximum size of a TOAST chunk: %u\n" msgstr "МакÑимальный размер порции TOAST: %u\n" -#: pg_resetxlog.c:689 +#: pg_resetxlog.c:757 #, c-format msgid "Size of a large-object chunk: %u\n" msgstr "Размер порции большого объекта: %u\n" -#: pg_resetxlog.c:691 +#: pg_resetxlog.c:759 #, c-format msgid "Date/time type storage: %s\n" msgstr "Формат Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ñ‚Ñ‹/времени: %s\n" -#: pg_resetxlog.c:692 +#: pg_resetxlog.c:760 msgid "64-bit integers" msgstr "64-битные целые" -#: pg_resetxlog.c:692 +#: pg_resetxlog.c:760 msgid "floating-point numbers" msgstr "чиÑла Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой" -#: pg_resetxlog.c:693 +#: pg_resetxlog.c:761 #, c-format msgid "Float4 argument passing: %s\n" msgstr "Передача аргумента Float4: %s\n" -#: pg_resetxlog.c:694 pg_resetxlog.c:696 +#: pg_resetxlog.c:762 pg_resetxlog.c:764 msgid "by reference" msgstr "по ÑÑылке" -#: pg_resetxlog.c:694 pg_resetxlog.c:696 +#: pg_resetxlog.c:762 pg_resetxlog.c:764 msgid "by value" msgstr "по значению" -#: pg_resetxlog.c:695 +#: pg_resetxlog.c:763 #, c-format msgid "Float8 argument passing: %s\n" msgstr "Передача аргумента Float8: %s\n" -#: pg_resetxlog.c:697 +#: pg_resetxlog.c:765 #, c-format msgid "Data page checksum version: %u\n" msgstr "ВерÑÐ¸Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ñ‹Ñ… Ñумм Ñтраниц: %u\n" -#: pg_resetxlog.c:711 +#: pg_resetxlog.c:779 #, c-format msgid "" "\n" @@ -404,67 +434,67 @@ msgstr "" "ЗначениÑ, которые будут изменены:\n" "\n" -#: pg_resetxlog.c:714 +#: pg_resetxlog.c:782 #, c-format msgid "First log segment after reset: %s\n" msgstr "Первый Ñегмент журнала поÑле ÑброÑа: %s\n" -#: pg_resetxlog.c:718 +#: pg_resetxlog.c:786 #, c-format msgid "NextMultiXactId: %u\n" msgstr "NextMultiXactId: %u\n" -#: pg_resetxlog.c:720 +#: pg_resetxlog.c:788 #, c-format msgid "OldestMultiXid: %u\n" msgstr "OldestMultiXid: %u\n" -#: pg_resetxlog.c:722 +#: pg_resetxlog.c:790 #, c-format msgid "OldestMulti's DB: %u\n" msgstr "БД Ñ oldestMultiXid: %u\n" -#: pg_resetxlog.c:728 +#: pg_resetxlog.c:796 #, c-format msgid "NextMultiOffset: %u\n" msgstr "NextMultiOffset: %u\n" -#: pg_resetxlog.c:734 +#: pg_resetxlog.c:802 #, c-format msgid "NextOID: %u\n" msgstr "NextOID: %u\n" -#: pg_resetxlog.c:740 +#: pg_resetxlog.c:808 #, c-format msgid "NextXID: %u\n" msgstr "NextXID: %u\n" -#: pg_resetxlog.c:742 +#: pg_resetxlog.c:810 #, c-format msgid "OldestXID: %u\n" msgstr "OldestXID: %u\n" -#: pg_resetxlog.c:744 +#: pg_resetxlog.c:812 #, c-format msgid "OldestXID's DB: %u\n" msgstr "БД Ñ oldestXID: %u\n" -#: pg_resetxlog.c:750 +#: pg_resetxlog.c:818 #, c-format msgid "NextXID epoch: %u\n" msgstr "Эпоха NextXID: %u\n" -#: pg_resetxlog.c:756 +#: pg_resetxlog.c:824 #, c-format msgid "oldestCommitTsXid: %u\n" msgstr "oldestCommitTsXid: %u\n" -#: pg_resetxlog.c:761 +#: pg_resetxlog.c:829 #, c-format msgid "newestCommitTsXid: %u\n" msgstr "newestCommitTsXid: %u\n" -#: pg_resetxlog.c:827 +#: pg_resetxlog.c:895 #, c-format msgid "" "%s: internal error -- sizeof(ControlFileData) is too large ... fix " @@ -473,52 +503,52 @@ msgstr "" "%s: внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° -- размер ControlFileData Ñлишком велик -- иÑправьте " "PG_CONTROL_SIZE\n" -#: pg_resetxlog.c:842 +#: pg_resetxlog.c:910 #, c-format msgid "%s: could not create pg_control file: %s\n" msgstr "%s: не удалоÑÑŒ Ñоздать файл pg_control: %s\n" -#: pg_resetxlog.c:853 +#: pg_resetxlog.c:921 #, c-format msgid "%s: could not write pg_control file: %s\n" msgstr "%s: не удалоÑÑŒ запиÑать файл pg_control: %s\n" -#: pg_resetxlog.c:860 pg_resetxlog.c:1156 +#: pg_resetxlog.c:928 pg_resetxlog.c:1224 #, c-format msgid "%s: fsync error: %s\n" msgstr "%s: ошибка Ñинхронизации Ñ Ð¤Ð¡: %s\n" -#: pg_resetxlog.c:900 pg_resetxlog.c:971 pg_resetxlog.c:1022 +#: pg_resetxlog.c:968 pg_resetxlog.c:1039 pg_resetxlog.c:1090 #, c-format msgid "%s: could not open directory \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ открыть каталог \"%s\": %s\n" -#: pg_resetxlog.c:936 pg_resetxlog.c:993 pg_resetxlog.c:1047 +#: pg_resetxlog.c:1004 pg_resetxlog.c:1061 pg_resetxlog.c:1115 #, c-format msgid "%s: could not read directory \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ прочитать каталог \"%s\": %s\n" -#: pg_resetxlog.c:943 pg_resetxlog.c:1000 pg_resetxlog.c:1054 +#: pg_resetxlog.c:1011 pg_resetxlog.c:1068 pg_resetxlog.c:1122 #, c-format msgid "%s: could not close directory \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ закрыть каталог \"%s\": %s\n" -#: pg_resetxlog.c:984 pg_resetxlog.c:1038 +#: pg_resetxlog.c:1052 pg_resetxlog.c:1106 #, c-format msgid "%s: could not delete file \"%s\": %s\n" msgstr "%s: ошибка при удалении файла \"%s\": %s\n" -#: pg_resetxlog.c:1123 +#: pg_resetxlog.c:1191 #, c-format msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ открыть файл \"%s\": %s\n" -#: pg_resetxlog.c:1134 pg_resetxlog.c:1148 +#: pg_resetxlog.c:1202 pg_resetxlog.c:1216 #, c-format msgid "%s: could not write file \"%s\": %s\n" msgstr "%s: не удалоÑÑŒ запиÑать файл \"%s\": %s\n" -#: pg_resetxlog.c:1167 +#: pg_resetxlog.c:1235 #, c-format msgid "" "%s resets the PostgreSQL transaction log.\n" @@ -527,23 +557,23 @@ msgstr "" "%s ÑбраÑывает журнал транзакций PostgreSQL.\n" "\n" -#: pg_resetxlog.c:1168 +#: pg_resetxlog.c:1236 #, c-format msgid "" "Usage:\n" " %s [OPTION]... DATADIR\n" "\n" msgstr "" -"Usage:\n" +"ИÑпользование:\n" " %s [ПÐРÐМЕТР]... КÐТ_ДÐÐÐЫХ\n" "\n" -#: pg_resetxlog.c:1169 +#: pg_resetxlog.c:1237 #, c-format msgid "Options:\n" msgstr "Параметры:\n" -#: pg_resetxlog.c:1170 +#: pg_resetxlog.c:1238 #, c-format msgid "" " -c XID,XID set oldest and newest transactions bearing commit " @@ -552,27 +582,27 @@ msgstr "" " -c XID,XID задать Ñтарейшую и новейшую транзакции, неÑущие метку " "времени фикÑации\n" -#: pg_resetxlog.c:1171 +#: pg_resetxlog.c:1239 #, c-format msgid " (zero in either value means no change)\n" msgstr " (0 в любом из аргументов игнорируетÑÑ)\n" -#: pg_resetxlog.c:1172 +#: pg_resetxlog.c:1240 #, c-format msgid " [-D] DATADIR data directory\n" msgstr " [-D] КÐТ_ДÐÐÐЫХ каталог данных\n" -#: pg_resetxlog.c:1173 +#: pg_resetxlog.c:1241 #, c-format msgid " -e XIDEPOCH set next transaction ID epoch\n" msgstr " -e XIDEPOCH задать Ñпоху в ID Ñледующей транзакции\n" -#: pg_resetxlog.c:1174 +#: pg_resetxlog.c:1242 #, c-format msgid " -f force update to be done\n" msgstr " -f принудительное выполнение операции\n" -#: pg_resetxlog.c:1175 +#: pg_resetxlog.c:1243 #, c-format msgid "" " -l XLOGFILE force minimum WAL starting location for new transaction " @@ -581,12 +611,12 @@ msgstr "" " -l XLOGFILE задать минимальное начальное положение WAL Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾\n" " журнала транзакций\n" -#: pg_resetxlog.c:1176 +#: pg_resetxlog.c:1244 #, c-format msgid " -m MXID,MXID set next and oldest multitransaction ID\n" msgstr " -m MXID,MXID задать ID Ñледующей и Ñтарейшей мультитранзакции\n" -#: pg_resetxlog.c:1177 +#: pg_resetxlog.c:1245 #, c-format msgid "" " -n no update, just show what would be done (for testing)\n" @@ -595,32 +625,32 @@ msgstr "" "их\n" " (Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸)\n" -#: pg_resetxlog.c:1178 +#: pg_resetxlog.c:1246 #, c-format msgid " -o OID set next OID\n" msgstr " -o OID задать Ñледующий OID\n" -#: pg_resetxlog.c:1179 +#: pg_resetxlog.c:1247 #, c-format msgid " -O OFFSET set next multitransaction offset\n" msgstr " -O СМЕЩЕÐИЕ задать Ñмещение Ñледующей мультитранзакции\n" -#: pg_resetxlog.c:1180 +#: pg_resetxlog.c:1248 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version показать верÑию и выйти\n" -#: pg_resetxlog.c:1181 +#: pg_resetxlog.c:1249 #, c-format msgid " -x XID set next transaction ID\n" msgstr " -x XID задать ID Ñледующей транзакции\n" -#: pg_resetxlog.c:1182 +#: pg_resetxlog.c:1250 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help показать Ñту Ñправку и выйти\n" -#: pg_resetxlog.c:1183 +#: pg_resetxlog.c:1251 #, c-format msgid "" "\n" diff --git a/src/bin/pg_rewind/Makefile b/src/bin/pg_rewind/Makefile index d03a0a2eae..8c8d8e0578 100644 --- a/src/bin/pg_rewind/Makefile +++ b/src/bin/pg_rewind/Makefile @@ -15,10 +15,8 @@ subdir = src/bin/pg_rewind top_builddir = ../../.. include $(top_builddir)/src/Makefile.global -PG_CPPFLAGS = -I$(libpq_srcdir) -PG_LIBS = $(libpq_pgport) - override CPPFLAGS := -I$(libpq_srcdir) -DFRONTEND $(CPPFLAGS) +override LDFLAGS := $(libpq_pgport) $(LDFLAGS) OBJS = pg_rewind.o parsexlog.o xlogreader.o datapagemap.o timeline.o \ fetch.o file_ops.o copy_fetch.o libpq_fetch.o filemap.o logging.o \ @@ -29,7 +27,7 @@ EXTRA_CLEAN = xlogreader.c all: pg_rewind pg_rewind: $(OBJS) | submake-libpq submake-libpgport - $(CC) $(CFLAGS) $^ $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + $(CC) $(CFLAGS) $^ $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) xlogreader.c: % : $(top_srcdir)/src/backend/access/transam/% rm -f $@ && $(LN_S) $< . diff --git a/src/bin/pg_rewind/copy_fetch.c b/src/bin/pg_rewind/copy_fetch.c index 327e7ef541..d7ce8ef2fc 100644 --- a/src/bin/pg_rewind/copy_fetch.c +++ b/src/bin/pg_rewind/copy_fetch.c @@ -67,14 +67,14 @@ recurse_dir(const char *datadir, const char *parentpath, while (errno = 0, (xlde = readdir(xldir)) != NULL) { struct stat fst; - char fullpath[MAXPGPATH]; - char path[MAXPGPATH]; + char fullpath[MAXPGPATH * 2]; + char path[MAXPGPATH * 2]; if (strcmp(xlde->d_name, ".") == 0 || strcmp(xlde->d_name, "..") == 0) continue; - snprintf(fullpath, MAXPGPATH, "%s/%s", fullparentpath, xlde->d_name); + snprintf(fullpath, sizeof(fullpath), "%s/%s", fullparentpath, xlde->d_name); if (lstat(fullpath, &fst) < 0) { @@ -95,9 +95,9 @@ recurse_dir(const char *datadir, const char *parentpath, } if (parentpath) - snprintf(path, MAXPGPATH, "%s/%s", parentpath, xlde->d_name); + snprintf(path, sizeof(path), "%s/%s", parentpath, xlde->d_name); else - snprintf(path, MAXPGPATH, "%s", xlde->d_name); + snprintf(path, sizeof(path), "%s", xlde->d_name); if (S_ISREG(fst.st_mode)) callback(path, FILE_TYPE_REGULAR, fst.st_size, NULL); diff --git a/src/bin/pg_rewind/libpq_fetch.c b/src/bin/pg_rewind/libpq_fetch.c index 5128e1c250..189853b3f1 100644 --- a/src/bin/pg_rewind/libpq_fetch.c +++ b/src/bin/pg_rewind/libpq_fetch.c @@ -195,7 +195,7 @@ libpqProcessFileList(void) for (i = 0; i < PQntuples(res); i++) { char *path = PQgetvalue(res, i, 0); - int filesize = atoi(PQgetvalue(res, i, 1)); + int64 filesize = atol(PQgetvalue(res, i, 1)); bool isdir = (strcmp(PQgetvalue(res, i, 2), "t") == 0); char *link_target = PQgetvalue(res, i, 3); file_type_t type; @@ -221,13 +221,35 @@ libpqProcessFileList(void) PQclear(res); } +/* + * Converts an int64 from network byte order to native format. + */ +static int64 +pg_recvint64(int64 value) +{ + union + { + int64 i64; + uint32 i32[2]; + } swap; + int64 result; + + swap.i64 = value; + + result = (uint32) ntohl(swap.i32[0]); + result <<= 32; + result |= (uint32) ntohl(swap.i32[1]); + + return result; +} + /*---- * Runs a query, which returns pieces of files from the remote source data * directory, and overwrites the corresponding parts of target files with * the received parts. The result set is expected to be of format: * * path text -- path in the data directory, e.g "base/1/123" - * begin int4 -- offset within the file + * begin int8 -- offset within the file * chunk bytea -- file content *---- */ @@ -248,7 +270,8 @@ receiveFileChunks(const char *sql) { char *filename; int filenamelen; - int chunkoff; + int64 chunkoff; + char chunkoff_str[32]; int chunksize; char *chunk; @@ -270,8 +293,8 @@ receiveFileChunks(const char *sql) if (PQnfields(res) != 3 || PQntuples(res) != 1) pg_fatal("unexpected result set size while fetching remote files\n"); - if (PQftype(res, 0) != TEXTOID && - PQftype(res, 1) != INT4OID && + if (PQftype(res, 0) != TEXTOID || + PQftype(res, 1) != INT8OID || PQftype(res, 2) != BYTEAOID) { pg_fatal("unexpected data types in result set while fetching remote files: %u %u %u\n", @@ -291,12 +314,12 @@ receiveFileChunks(const char *sql) pg_fatal("unexpected null values in result while fetching remote files\n"); } - if (PQgetlength(res, 0, 1) != sizeof(int32)) + if (PQgetlength(res, 0, 1) != sizeof(int64)) pg_fatal("unexpected result length while fetching remote files\n"); /* Read result set to local variables */ - memcpy(&chunkoff, PQgetvalue(res, 0, 1), sizeof(int32)); - chunkoff = ntohl(chunkoff); + memcpy(&chunkoff, PQgetvalue(res, 0, 1), sizeof(int64)); + chunkoff = pg_recvint64(chunkoff); chunksize = PQgetlength(res, 0, 2); filenamelen = PQgetlength(res, 0, 0); @@ -321,8 +344,13 @@ receiveFileChunks(const char *sql) continue; } - pg_log(PG_DEBUG, "received chunk for file \"%s\", offset %d, size %d\n", - filename, chunkoff, chunksize); + /* + * Separate step to keep platform-dependent format code out of + * translatable strings. + */ + snprintf(chunkoff_str, sizeof(chunkoff_str), INT64_FORMAT, chunkoff); + pg_log(PG_DEBUG, "received chunk for file \"%s\", offset %s, size %d\n", + filename, chunkoff_str, chunksize); open_target_file(filename, false); @@ -381,7 +409,7 @@ libpqGetFile(const char *filename, size_t *filesize) * function to actually fetch the data. */ static void -fetch_file_range(const char *path, unsigned int begin, unsigned int end) +fetch_file_range(const char *path, uint64 begin, uint64 end) { char linebuf[MAXPGPATH + 23]; @@ -390,12 +418,13 @@ fetch_file_range(const char *path, unsigned int begin, unsigned int end) { unsigned int len; + /* Fine as long as CHUNKSIZE is not bigger than UINT32_MAX */ if (end - begin > CHUNKSIZE) len = CHUNKSIZE; else - len = end - begin; + len = (unsigned int) (end - begin); - snprintf(linebuf, sizeof(linebuf), "%s\t%u\t%u\n", path, begin, len); + snprintf(linebuf, sizeof(linebuf), "%s\t" UINT64_FORMAT "\t%u\n", path, begin, len); if (PQputCopyData(conn, linebuf, strlen(linebuf)) != 1) pg_fatal("could not send COPY data: %s", @@ -420,7 +449,7 @@ libpq_executeFileMap(filemap_t *map) * First create a temporary table, and load it with the blocks that we * need to fetch. */ - sql = "CREATE TEMPORARY TABLE fetchchunks(path text, begin int4, len int4);"; + sql = "CREATE TEMPORARY TABLE fetchchunks(path text, begin int8, len int4);"; res = PQexec(conn, sql); if (PQresultStatus(res) != PGRES_COMMAND_OK) diff --git a/src/bin/pg_rewind/logging.c b/src/bin/pg_rewind/logging.c index a232abb39f..0ac1b7add4 100644 --- a/src/bin/pg_rewind/logging.c +++ b/src/bin/pg_rewind/logging.c @@ -34,26 +34,26 @@ pg_log_v(eLogType type, const char *fmt, va_list ap) { char message[QUERY_ALLOC]; - vsnprintf(message, sizeof(message), fmt, ap); + vsnprintf(message, sizeof(message), _(fmt), ap); switch (type) { case PG_DEBUG: if (debug) - printf("%s", _(message)); + printf("%s", message); break; case PG_PROGRESS: if (showprogress) - printf("%s", _(message)); + printf("%s", message); break; case PG_WARNING: - printf("%s", _(message)); + printf("%s", message); break; case PG_FATAL: - printf("\n%s", _(message)); + printf("\n%s", message); printf("%s", _("Failure, exiting\n")); exit(1); break; diff --git a/src/bin/pg_rewind/po/de.po b/src/bin/pg_rewind/po/de.po index b0c81900e9..104c44cef5 100644 --- a/src/bin/pg_rewind/po/de.po +++ b/src/bin/pg_rewind/po/de.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: pg_rewind (PostgreSQL) 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-06-17 17:14+0000\n" -"PO-Revision-Date: 2016-06-17 15:16-0400\n" +"POT-Creation-Date: 2016-10-24 07:44+0000\n" +"PO-Revision-Date: 2016-10-24 08:50-0400\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" "Language: de\n" @@ -229,142 +229,147 @@ msgstr "unerwartete Seitenänderung für Verzeichnis oder symbolische Verknüpfu msgid "%s (%s)\n" msgstr "%s (%s)\n" -#: libpq_fetch.c:55 +#: libpq_fetch.c:56 #, c-format msgid "could not connect to server: %s" msgstr "konnte nicht mit Server verbinden: %s" -#: libpq_fetch.c:58 +#: libpq_fetch.c:59 #, c-format msgid "connected to server\n" msgstr "mit Server verbunden\n" -#: libpq_fetch.c:68 +#: libpq_fetch.c:69 #, c-format msgid "source server must not be in recovery mode\n" msgstr "Quell-Server darf nicht im Wiederherstellungsmodus sein\n" -#: libpq_fetch.c:78 +#: libpq_fetch.c:79 #, c-format msgid "full_page_writes must be enabled in the source server\n" msgstr "full_page_writes muss im Quell-Server eingeschaltet sein\n" -#: libpq_fetch.c:95 +#: libpq_fetch.c:91 +#, c-format +msgid "could not set up connection context: %s" +msgstr "konnte Verbindungskontext nicht einrichten: %s" + +#: libpq_fetch.c:109 #, c-format msgid "error running query (%s) in source server: %s" msgstr "Fehler beim Ausführen einer Anfrage (%s) im Quellserver: %s" -#: libpq_fetch.c:100 +#: libpq_fetch.c:114 #, c-format msgid "unexpected result set from query\n" msgstr "Anfrage ergab unerwartete Ergebnismenge\n" -#: libpq_fetch.c:123 +#: libpq_fetch.c:137 #, c-format msgid "unrecognized result \"%s\" for current WAL insert location\n" msgstr "unbekanntes Ergebnis »%s« für aktuelle WAL-Einfügeposition\n" -#: libpq_fetch.c:173 +#: libpq_fetch.c:187 #, c-format msgid "could not fetch file list: %s" msgstr "konnte Dateiliste nicht holen: %s" -#: libpq_fetch.c:178 +#: libpq_fetch.c:192 #, c-format msgid "unexpected result set while fetching file list\n" msgstr "unerwartete Ergebnismenge beim Holen der Dateiliste\n" -#: libpq_fetch.c:226 +#: libpq_fetch.c:240 #, c-format msgid "could not send query: %s" msgstr "konnte Anfrage nicht senden: %s" -#: libpq_fetch.c:228 +#: libpq_fetch.c:242 #, c-format msgid "getting file chunks\n" msgstr "hole Dateistücke\n" -#: libpq_fetch.c:231 +#: libpq_fetch.c:245 #, c-format msgid "could not set libpq connection to single row mode\n" msgstr "konnte libpq-Verbindung nicht in den Einzelzeilenmodus setzen\n" -#: libpq_fetch.c:251 +#: libpq_fetch.c:265 #, c-format msgid "unexpected result while fetching remote files: %s" msgstr "unerwartetes Ergebnis beim Holen von fernen Dateien: %s" -#: libpq_fetch.c:257 +#: libpq_fetch.c:271 #, c-format msgid "unexpected result set size while fetching remote files\n" msgstr "unerwartete Ergebnismengengröße beim Holen von fernen Dateien\n" -#: libpq_fetch.c:263 +#: libpq_fetch.c:277 #, c-format msgid "unexpected data types in result set while fetching remote files: %u %u %u\n" msgstr "unerwartete Datentypen in Ergebnismenge beim Holen von fernen Dateien: %u %u %u\n" -#: libpq_fetch.c:271 +#: libpq_fetch.c:285 #, c-format msgid "unexpected result format while fetching remote files\n" msgstr "unerwartetes Ergebnisformat beim Holen von fernen Dateien\n" -#: libpq_fetch.c:277 +#: libpq_fetch.c:291 #, c-format msgid "unexpected null values in result while fetching remote files\n" msgstr "unerwartete NULL-Werte im Ergebnis beim Holen von fernen Dateien\n" -#: libpq_fetch.c:281 +#: libpq_fetch.c:295 #, c-format msgid "unexpected result length while fetching remote files\n" msgstr "unerwartete Ergebnislänge beim Holen von fernen Dateien\n" -#: libpq_fetch.c:303 +#: libpq_fetch.c:317 #, c-format msgid "received null value for chunk for file \"%s\", file has been deleted\n" msgstr "NULL-Wert für Stück von Datei »%s« empfangen, Datei wurde gelöscht\n" -#: libpq_fetch.c:310 +#: libpq_fetch.c:324 #, c-format msgid "received chunk for file \"%s\", offset %d, size %d\n" msgstr "Stück von Datei »%s« empfangen, Offset %d, Größe %d\n" -#: libpq_fetch.c:339 +#: libpq_fetch.c:353 #, c-format msgid "could not fetch remote file \"%s\": %s" msgstr "konnte ferne Datei »%s« nicht holen: %s" -#: libpq_fetch.c:344 +#: libpq_fetch.c:358 #, c-format msgid "unexpected result set while fetching remote file \"%s\"\n" msgstr "unerwartete Ergebnismenge beim Holen der fernen Datei »%s«\n" -#: libpq_fetch.c:355 +#: libpq_fetch.c:369 #, c-format msgid "fetched file \"%s\", length %d\n" msgstr "Datei »%s« geholt, Länge %d\n" -#: libpq_fetch.c:387 +#: libpq_fetch.c:401 #, c-format msgid "could not send COPY data: %s" msgstr "konnte COPY-Daten nicht senden: %s" -#: libpq_fetch.c:413 +#: libpq_fetch.c:427 #, c-format msgid "could not create temporary table: %s" msgstr "konnte temporäre Tabelle nicht erzeugen: %s" -#: libpq_fetch.c:421 +#: libpq_fetch.c:435 #, c-format msgid "could not send file list: %s" msgstr "konnte Dateiliste nicht senden: %s" -#: libpq_fetch.c:463 +#: libpq_fetch.c:477 #, c-format msgid "could not send end-of-COPY: %s" msgstr "konnte COPY-Ende nicht senden: %s" -#: libpq_fetch.c:469 +#: libpq_fetch.c:483 #, c-format msgid "unexpected result while sending file list: %s" msgstr "unerwartetes Ergebnis beim Senden der Dateiliste: %s" @@ -498,7 +503,8 @@ msgstr "" "\n" "Berichten Sie Fehler an .\n" -#: pg_rewind.c:130 pg_rewind.c:161 pg_rewind.c:168 pg_rewind.c:176 +#: pg_rewind.c:130 pg_rewind.c:161 pg_rewind.c:168 pg_rewind.c:175 +#: pg_rewind.c:183 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Versuchen Sie »%s --help« für weitere Informationen.\n" @@ -510,65 +516,70 @@ msgstr "%s: keine Quelle angegeben (--source-pgdata oder --source-server)\n" #: pg_rewind.c:167 #, c-format +msgid "%s: only one of --source-pgdata or --source-server can be specified\n" +msgstr "%s: --source-pgdata und --source-server können nicht zusammen angegeben werden\n" + +#: pg_rewind.c:174 +#, c-format msgid "%s: no target data directory specified (--target-pgdata)\n" msgstr "%s: kein Zielverzeichnis angegeben (--target-pgdata)\n" -#: pg_rewind.c:174 +#: pg_rewind.c:181 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: zu viele Kommandozeilenargumente (das erste ist »%s«)\n" -#: pg_rewind.c:189 +#: pg_rewind.c:196 #, c-format msgid "cannot be executed by \"root\"\n" msgstr "kann nicht von »root« ausgeführt werden\n" -#: pg_rewind.c:190 +#: pg_rewind.c:197 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" msgstr "Sie müssen %s als PostgreSQL-Superuser ausführen.\n" -#: pg_rewind.c:221 +#: pg_rewind.c:228 #, c-format msgid "source and target cluster are on the same timeline\n" msgstr "Quell- und Ziel-Cluster sind auf der gleichen Zeitleiste\n" -#: pg_rewind.c:227 +#: pg_rewind.c:234 #, c-format msgid "servers diverged at WAL position %X/%X on timeline %u\n" msgstr "Server divergierten bei WAL-Position %X/%X auf Zeitleiste %u\n" -#: pg_rewind.c:264 +#: pg_rewind.c:271 #, c-format msgid "no rewind required\n" msgstr "kein Rückspulen nötig\n" -#: pg_rewind.c:271 +#: pg_rewind.c:278 #, c-format msgid "rewinding from last common checkpoint at %X/%X on timeline %u\n" msgstr "Rückspulen ab letztem gemeinsamen Checkpoint bei %X/%X auf Zeitleiste %u\n" -#: pg_rewind.c:279 +#: pg_rewind.c:286 #, c-format msgid "reading source file list\n" msgstr "lese Quelldateiliste\n" -#: pg_rewind.c:281 +#: pg_rewind.c:288 #, c-format msgid "reading target file list\n" msgstr "lese Zieldateiliste\n" -#: pg_rewind.c:291 +#: pg_rewind.c:298 #, c-format msgid "reading WAL in target\n" msgstr "lese WAL im Ziel-Cluster\n" -#: pg_rewind.c:308 +#: pg_rewind.c:315 #, c-format msgid "need to copy %lu MB (total source directory size is %lu MB)\n" msgstr "%lu MB müssen kopiert werden (Gesamtgröße des Quellverzeichnisses ist %lu MB)\n" -#: pg_rewind.c:325 +#: pg_rewind.c:332 #, c-format msgid "" "\n" @@ -577,83 +588,83 @@ msgstr "" "\n" "erzeuge Backup-Label und aktualisiere Kontrolldatei\n" -#: pg_rewind.c:353 +#: pg_rewind.c:360 #, c-format msgid "syncing target data directory\n" msgstr "synchronisiere Zieldatenverzeichnis\n" -#: pg_rewind.c:356 +#: pg_rewind.c:363 #, c-format msgid "Done!\n" msgstr "Fertig!\n" -#: pg_rewind.c:368 +#: pg_rewind.c:375 #, c-format msgid "source and target clusters are from different systems\n" msgstr "Quell- und Ziel-Cluster sind von verschiedenen Systemen\n" -#: pg_rewind.c:376 +#: pg_rewind.c:383 #, c-format msgid "clusters are not compatible with this version of pg_rewind\n" msgstr "die Cluster sind nicht mit dieser Version von pg_rewind kompatibel\n" -#: pg_rewind.c:386 +#: pg_rewind.c:393 #, c-format msgid "target server needs to use either data checksums or \"wal_log_hints = on\"\n" msgstr "Zielserver muss entweder Datenprüfsummen oder »wal_log_hints = on« verwenden\n" -#: pg_rewind.c:397 +#: pg_rewind.c:404 #, c-format msgid "target server must be shut down cleanly\n" msgstr "Zielserver muss sauber heruntergefahren worden sein\n" -#: pg_rewind.c:407 +#: pg_rewind.c:414 #, c-format msgid "source data directory must be shut down cleanly\n" msgstr "Quelldatenverzeichnis muss sauber heruntergefahren worden sein\n" -#: pg_rewind.c:462 +#: pg_rewind.c:469 #, c-format msgid "invalid control file" msgstr "ungültige Kontrolldatei" -#: pg_rewind.c:473 +#: pg_rewind.c:480 #, c-format msgid "Source timeline history:\n" msgstr "Verlauf der Quellzeitleiste:\n" -#: pg_rewind.c:475 +#: pg_rewind.c:482 #, c-format msgid "Target timeline history:\n" msgstr "Verlauf der Zielzeitleiste:\n" #. translator: %d is a timeline number, others are LSN positions -#: pg_rewind.c:489 +#: pg_rewind.c:496 #, c-format msgid "%d: %X/%X - %X/%X\n" msgstr "%d: %X/%X - %X/%X\n" -#: pg_rewind.c:548 +#: pg_rewind.c:555 #, c-format msgid "could not find common ancestor of the source and target cluster's timelines\n" msgstr "konnte keinen gemeinsamen Anfangspunkt in den Zeitleisten von Quell- und Ziel-Cluster finden\n" -#: pg_rewind.c:589 +#: pg_rewind.c:596 #, c-format msgid "backup label buffer too small\n" msgstr "Puffer für Backup-Label ist zu klein\n" -#: pg_rewind.c:612 +#: pg_rewind.c:619 #, c-format msgid "unexpected control file CRC\n" msgstr "unerwartete CRC in Kontrolldatei\n" -#: pg_rewind.c:622 +#: pg_rewind.c:629 #, c-format msgid "unexpected control file size %d, expected %d\n" msgstr "unerwartete Kontrolldateigröße %d, erwartet wurde %d\n" -#: pg_rewind.c:689 +#: pg_rewind.c:696 #, c-format msgid "" "The program \"initdb\" is needed by %s but was\n" @@ -664,7 +675,7 @@ msgstr "" "selben Verzeichnis wie »%s« gefunden.\n" "Prüfen Sie Ihre Installation.\n" -#: pg_rewind.c:693 +#: pg_rewind.c:700 #, c-format msgid "" "The program \"initdb\" was found by \"%s\"\n" @@ -675,7 +686,7 @@ msgstr "" "aber es hatte nicht die gleiche Version wie %s.\n" "Prüfen Sie Ihre Installation.\n" -#: pg_rewind.c:711 +#: pg_rewind.c:718 #, c-format msgid "sync of target directory failed\n" msgstr "Synchronisieren des Zielverzeichnisses fehlgeschlagen\n" @@ -795,57 +806,57 @@ msgstr "unerwartete Pageaddr %X/%X in Logsegment %s, Offset %u" msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u" msgstr "Zeitleisten-ID %u außer der Reihe (nach %u) in Logsegment %s, Offset %u" -#: xlogreader.c:1044 +#: xlogreader.c:1081 #, c-format msgid "out-of-order block_id %u at %X/%X" msgstr "block_id %u außer der Reihe bei %X/%X" -#: xlogreader.c:1066 +#: xlogreader.c:1103 #, c-format msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" msgstr "BKPBLOCK_HAS_DATA gesetzt, aber keine Daten enthalten bei %X/%X" -#: xlogreader.c:1073 +#: xlogreader.c:1110 #, c-format msgid "BKPBLOCK_HAS_DATA not set, but data length is %u at %X/%X" msgstr "BKPBLOCK_HAS_DATA nicht gesetzt, aber Datenlänge ist %u bei %X/%X" -#: xlogreader.c:1106 +#: xlogreader.c:1143 #, c-format msgid "BKPIMAGE_HAS_HOLE set, but hole offset %u length %u block image length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE gesetzt, aber Loch Offset %u Länge %u Block-Abbild-Länge %u bei %X/%X" -#: xlogreader.c:1122 +#: xlogreader.c:1159 #, c-format msgid "BKPIMAGE_HAS_HOLE not set, but hole offset %u length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE nicht gesetzt, aber Loch Offset %u Länge %u bei %X/%X" -#: xlogreader.c:1137 +#: xlogreader.c:1174 #, c-format msgid "BKPIMAGE_IS_COMPRESSED set, but block image length %u at %X/%X" msgstr "BKPIMAGE_IS_COMPRESSED gesetzt, aber Block-Abbild-Länge %u bei %X/%X" -#: xlogreader.c:1152 +#: xlogreader.c:1189 #, c-format msgid "neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_IS_COMPRESSED set, but block image length is %u at %X/%X" msgstr "weder BKPIMAGE_HAS_HOLE noch BKPIMAGE_IS_COMPRESSED gesetzt, aber Block-Abbild-Länge ist %u bei %X/%X" -#: xlogreader.c:1168 +#: xlogreader.c:1205 #, c-format msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" msgstr "BKPBLOCK_SAME_REL gesetzt, aber keine vorangehende Relation bei %X/%X" -#: xlogreader.c:1180 +#: xlogreader.c:1217 #, c-format msgid "invalid block_id %u at %X/%X" msgstr "ungültige block_id %u bei %X/%X" -#: xlogreader.c:1245 +#: xlogreader.c:1282 #, c-format msgid "record with invalid length at %X/%X" msgstr "Datensatz mit ungültiger Länge bei %X/%X" -#: xlogreader.c:1334 +#: xlogreader.c:1371 #, c-format msgid "invalid compressed image at %X/%X, block %d" msgstr "ungültiges komprimiertes Abbild bei %X/%X, Block %d" diff --git a/src/bin/pg_rewind/po/es.po b/src/bin/pg_rewind/po/es.po index afd9e2be9d..454ce5e0ab 100644 --- a/src/bin/pg_rewind/po/es.po +++ b/src/bin/pg_rewind/po/es.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: pg_rewind (PostgreSQL) 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-05-02 20:14+0000\n" -"PO-Revision-Date: 2016-05-24 12:18-0500\n" +"POT-Creation-Date: 2017-08-27 21:53+0000\n" +"PO-Revision-Date: 2017-05-20 21:25-0400\n" "Last-Translator: Carlos Chapi \n" "Language-Team: PgSQL Español \n" "Language: es\n" @@ -229,142 +229,147 @@ msgstr "modificación de página inesperada para el directorio o link simbólico msgid "%s (%s)\n" msgstr "%s (%s)\n" -#: libpq_fetch.c:55 +#: libpq_fetch.c:56 #, c-format msgid "could not connect to server: %s" msgstr "no se pudo conectar al servidor: %s" -#: libpq_fetch.c:58 +#: libpq_fetch.c:59 #, c-format msgid "connected to server\n" msgstr "conectado al servidor\n" -#: libpq_fetch.c:68 +#: libpq_fetch.c:69 #, c-format msgid "source server must not be in recovery mode\n" msgstr "el servidor de origen no debe estar en modo de recuperación\n" -#: libpq_fetch.c:78 +#: libpq_fetch.c:79 #, c-format msgid "full_page_writes must be enabled in the source server\n" msgstr "full_page_writes debe estar activado en el servidor de origen\n" -#: libpq_fetch.c:95 +#: libpq_fetch.c:91 +#, c-format +msgid "could not set up connection context: %s" +msgstr "no se pudo establecer el contexto de conexión: %s" + +#: libpq_fetch.c:109 #, c-format msgid "error running query (%s) in source server: %s" msgstr "error ejecutando consulta (%s) en el servidor de origen: %s" -#: libpq_fetch.c:100 +#: libpq_fetch.c:114 #, c-format msgid "unexpected result set from query\n" msgstr "conjunto de resultados inesperados de la consulta\n" -#: libpq_fetch.c:123 +#: libpq_fetch.c:137 #, c-format msgid "unrecognized result \"%s\" for current WAL insert location\n" msgstr "resultado «%s» no reconocido para la ubicación de inserción WAL actual\n" -#: libpq_fetch.c:173 +#: libpq_fetch.c:187 #, c-format msgid "could not fetch file list: %s" msgstr "no se pudo obtener el listado de archivos: %s" -#: libpq_fetch.c:178 +#: libpq_fetch.c:192 #, c-format msgid "unexpected result set while fetching file list\n" msgstr "conjunto de resultados inesperado mientras se obtenía el listado de archivos\n" -#: libpq_fetch.c:226 +#: libpq_fetch.c:262 #, c-format msgid "could not send query: %s" msgstr "no se pudo enviar la consulta: %s" -#: libpq_fetch.c:228 +#: libpq_fetch.c:264 #, c-format msgid "getting file chunks\n" msgstr "obteniendo trozos de archivos\n" -#: libpq_fetch.c:231 +#: libpq_fetch.c:267 #, c-format msgid "could not set libpq connection to single row mode\n" msgstr "no se pudo establecer la coneción libpq a modo «single row»\n" -#: libpq_fetch.c:251 +#: libpq_fetch.c:287 #, c-format msgid "unexpected result while fetching remote files: %s" msgstr "resultados inesperados mientras se obtenían archivos remotos: %s" -#: libpq_fetch.c:257 +#: libpq_fetch.c:293 #, c-format msgid "unexpected result set size while fetching remote files\n" msgstr "tamaño del conjunto de resultados inesperado mientras se obtenían archivos remotos\n" -#: libpq_fetch.c:263 +#: libpq_fetch.c:299 #, c-format msgid "unexpected data types in result set while fetching remote files: %u %u %u\n" msgstr "tipos de dato inesperados en el conjunto de resultados mientras se obtenían archivos remotos: %u %u %u\n" -#: libpq_fetch.c:271 +#: libpq_fetch.c:307 #, c-format msgid "unexpected result format while fetching remote files\n" msgstr "formato de resultados inesperado mientras se obtenían archivos remotos\n" -#: libpq_fetch.c:277 +#: libpq_fetch.c:313 #, c-format msgid "unexpected null values in result while fetching remote files\n" msgstr "valores nulos inesperados en el resultado mientras se obtenían archivos remotos\n" -#: libpq_fetch.c:281 +#: libpq_fetch.c:317 #, c-format msgid "unexpected result length while fetching remote files\n" msgstr "largo del resultado inesperado mientras se obtenían los archivos remotos\n" -#: libpq_fetch.c:303 +#: libpq_fetch.c:339 #, c-format msgid "received null value for chunk for file \"%s\", file has been deleted\n" msgstr "recibido un valor NULL para un trozo del archivo «%s», el archivo ha sido borrado\n" -#: libpq_fetch.c:310 -#, c-format -msgid "received chunk for file \"%s\", offset %d, size %d\n" +#: libpq_fetch.c:346 +#, fuzzy, c-format +msgid "received chunk for file \"%s\", offset " msgstr "recibido un trozo para el archivo «%s», posición %d, tamaño %d\n" -#: libpq_fetch.c:339 +#: libpq_fetch.c:375 #, c-format msgid "could not fetch remote file \"%s\": %s" msgstr "no se pudo obtener el archivo remoto «%s»: %s" -#: libpq_fetch.c:344 +#: libpq_fetch.c:380 #, c-format msgid "unexpected result set while fetching remote file \"%s\"\n" msgstr "conjunto de resultados inesperado mientras se obtenía el archivo remoto «%s»\n" -#: libpq_fetch.c:355 +#: libpq_fetch.c:391 #, c-format msgid "fetched file \"%s\", length %d\n" msgstr "obtenido archivo «%s», largo %d\n" -#: libpq_fetch.c:387 +#: libpq_fetch.c:424 #, c-format msgid "could not send COPY data: %s" msgstr "no se pudo enviar datos COPY: %s" -#: libpq_fetch.c:413 +#: libpq_fetch.c:450 #, c-format msgid "could not create temporary table: %s" msgstr "no se pudo crear tabla temporal: %s" -#: libpq_fetch.c:421 +#: libpq_fetch.c:458 #, c-format msgid "could not send file list: %s" msgstr "no se pudo enviar el listado de archivos: %s" -#: libpq_fetch.c:463 +#: libpq_fetch.c:500 #, c-format msgid "could not send end-of-COPY: %s" msgstr "no se pudo enviar fin-de-COPY: %s" -#: libpq_fetch.c:469 +#: libpq_fetch.c:506 #, c-format msgid "unexpected result while sending file list: %s" msgstr "resultados inesperados mientras se enviaba el listado de archivos: %s" @@ -496,7 +501,8 @@ msgstr "" "\n" "Reporte errores a .\n" -#: pg_rewind.c:130 pg_rewind.c:161 pg_rewind.c:168 pg_rewind.c:176 +#: pg_rewind.c:130 pg_rewind.c:161 pg_rewind.c:168 pg_rewind.c:175 +#: pg_rewind.c:183 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Pruebe «%s --help» para mayor información.\n" @@ -508,65 +514,70 @@ msgstr "%s: no se especificó origen (--source-pgdata o --source-server)\n" #: pg_rewind.c:167 #, c-format +msgid "%s: only one of --source-pgdata or --source-server can be specified\n" +msgstr "%s: sólo uno de --source-pgdata o --source-server puede ser especificado\n" + +#: pg_rewind.c:174 +#, c-format msgid "%s: no target data directory specified (--target-pgdata)\n" msgstr "%s: no se especificó directorio de datos de destino (--target-pgdata)\n" -#: pg_rewind.c:174 +#: pg_rewind.c:181 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: demasiados argumentos de línea de órdenes (el primero es «%s»)\n" -#: pg_rewind.c:189 +#: pg_rewind.c:196 #, c-format msgid "cannot be executed by \"root\"\n" msgstr "no puede ser ejecutado por «root»\n" -#: pg_rewind.c:190 +#: pg_rewind.c:197 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" msgstr "Debe ejecutar %s con el superusuario de PostgreSQL.\n" -#: pg_rewind.c:221 +#: pg_rewind.c:228 #, c-format msgid "source and target cluster are on the same timeline\n" msgstr "el cluster de origen y destino están en el mismo timeline\n" -#: pg_rewind.c:227 +#: pg_rewind.c:234 #, c-format msgid "servers diverged at WAL position %X/%X on timeline %u\n" msgstr "servidores divergieron en la posición de WAL %X/%X del timeline %u\n" -#: pg_rewind.c:264 +#: pg_rewind.c:271 #, c-format msgid "no rewind required\n" msgstr "no se requiere rebobinar\n" -#: pg_rewind.c:271 +#: pg_rewind.c:278 #, c-format msgid "rewinding from last common checkpoint at %X/%X on timeline %u\n" msgstr "rebobinando desde el último checkpoint común en %X/%X en el timeline %u\n" -#: pg_rewind.c:279 +#: pg_rewind.c:286 #, c-format msgid "reading source file list\n" msgstr "leyendo la lista de archivos de origen\n" -#: pg_rewind.c:281 +#: pg_rewind.c:288 #, c-format msgid "reading target file list\n" msgstr "leyendo la lista de archivos de destino\n" -#: pg_rewind.c:291 +#: pg_rewind.c:298 #, c-format msgid "reading WAL in target\n" msgstr "leyendo WAL en destino\n" -#: pg_rewind.c:308 +#: pg_rewind.c:315 #, c-format msgid "need to copy %lu MB (total source directory size is %lu MB)\n" msgstr "se necesitan copiar %lu MB (tamaño total de directorio de origen es %lu MB)\n" -#: pg_rewind.c:325 +#: pg_rewind.c:332 #, c-format msgid "" "\n" @@ -575,94 +586,94 @@ msgstr "" "\n" "creando etiqueta de respaldo y actualizando archivo de control\n" -#: pg_rewind.c:353 +#: pg_rewind.c:360 #, c-format msgid "syncing target data directory\n" msgstr "sincronizando directorio de datos de destino\n" -#: pg_rewind.c:356 +#: pg_rewind.c:363 #, c-format msgid "Done!\n" msgstr "¡Listo!\n" -#: pg_rewind.c:368 +#: pg_rewind.c:375 #, c-format msgid "source and target clusters are from different systems\n" msgstr "clusters de origen y destino son de sistemas diferentes\n" -#: pg_rewind.c:376 +#: pg_rewind.c:383 #, c-format msgid "clusters are not compatible with this version of pg_rewind\n" msgstr "los clusters no son compatibles con esta versión de pg_rewind\n" -#: pg_rewind.c:386 +#: pg_rewind.c:393 #, c-format msgid "target server needs to use either data checksums or \"wal_log_hints = on\"\n" msgstr "el servidor de destino necesita tener sumas de verificación de datos o «wal_log_hints» activados\n" -#: pg_rewind.c:397 +#: pg_rewind.c:404 #, c-format msgid "target server must be shut down cleanly\n" msgstr "el directorio de destino debe estar apagado limpiamente\n" -#: pg_rewind.c:407 +#: pg_rewind.c:414 #, c-format msgid "source data directory must be shut down cleanly\n" msgstr "el directorio de origen debe estar apagado limpiamente\n" -#: pg_rewind.c:462 +#: pg_rewind.c:469 #, c-format -msgid "Invalid control file" -msgstr "Archivo de control no válido." +msgid "invalid control file" +msgstr "archivo de control no válido" -#: pg_rewind.c:473 +#: pg_rewind.c:480 #, c-format msgid "Source timeline history:\n" msgstr "Historia de timeline origen:\n" -#: pg_rewind.c:475 +#: pg_rewind.c:482 #, c-format msgid "Target timeline history:\n" msgstr "Historia de timeline destino:\n" #. translator: %d is a timeline number, others are LSN positions -#: pg_rewind.c:489 +#: pg_rewind.c:496 #, c-format msgid "%d: %X/%X - %X/%X\n" msgstr "%d: %X/%X - %X/%X\n" -#: pg_rewind.c:547 +#: pg_rewind.c:555 #, c-format msgid "could not find common ancestor of the source and target cluster's timelines\n" msgstr "no se pudo encontrar un ancestro común en el timeline de los clusters de origen y destino\n" -#: pg_rewind.c:588 +#: pg_rewind.c:596 #, c-format msgid "backup label buffer too small\n" msgstr "el búfer del backup label es demasiado pequeño\n" -#: pg_rewind.c:611 +#: pg_rewind.c:619 #, c-format msgid "unexpected control file CRC\n" msgstr "CRC de archivo de control inesperado\n" -#: pg_rewind.c:621 +#: pg_rewind.c:629 #, c-format msgid "unexpected control file size %d, expected %d\n" msgstr "tamaño del archivo de control %d inesperado, se esperaba %d\n" -#: pg_rewind.c:688 +#: pg_rewind.c:696 #, c-format msgid "" -"The program \"initdb\" is needed by %s but was \n" +"The program \"initdb\" is needed by %s but was\n" "not found in the same directory as \"%s\".\n" "Check your installation.\n" msgstr "" -"%s necesita el programa «initdb», pero no pudo encontrarlo en el mismo\n" +"%s necesita el programa «initdb», pero no pudo ser encontrado en el mismo\n" "directorio que «%s».\n" "Verifique su instalación.\n" -#: pg_rewind.c:692 +#: pg_rewind.c:700 #, c-format msgid "" "The program \"initdb\" was found by \"%s\"\n" @@ -673,7 +684,7 @@ msgstr "" "de la misma versión que %s.\n" "Verifique su instalación.\n" -#: pg_rewind.c:710 +#: pg_rewind.c:718 #, c-format msgid "sync of target directory failed\n" msgstr "falló sincronización de directorio destino\n" @@ -713,137 +724,137 @@ msgstr "datos no válidos en archivo de historia\n" msgid "Timeline IDs must be less than child timeline's ID.\n" msgstr "IDs de timeline deben ser menores que los ID de timelines «hijos».\n" -#: xlogreader.c:285 +#: xlogreader.c:276 #, c-format msgid "invalid record offset at %X/%X" msgstr "posición de registro no válida en %X/%X" -#: xlogreader.c:293 +#: xlogreader.c:284 #, c-format msgid "contrecord is requested by %X/%X" msgstr "contrecord solicitado por %X/%X" -#: xlogreader.c:334 xlogreader.c:633 +#: xlogreader.c:325 xlogreader.c:624 #, c-format msgid "invalid record length at %X/%X: wanted %u, got %u" msgstr "largo de registro no válido en %X/%X: se esperaba %u, se obtuvo %u" -#: xlogreader.c:349 +#: xlogreader.c:340 #, c-format msgid "record length %u at %X/%X too long" msgstr "largo de registro %u en %X/%X demasiado largo" -#: xlogreader.c:390 +#: xlogreader.c:381 #, c-format msgid "there is no contrecord flag at %X/%X" msgstr "no hay bandera de contrecord en %X/%X" -#: xlogreader.c:403 +#: xlogreader.c:394 #, c-format msgid "invalid contrecord length %u at %X/%X" msgstr "largo de contrecord %u no válido en %X/%X" -#: xlogreader.c:641 +#: xlogreader.c:632 #, c-format msgid "invalid resource manager ID %u at %X/%X" msgstr "ID de gestor de recursos %u no válido en %X/%X" -#: xlogreader.c:655 xlogreader.c:672 +#: xlogreader.c:646 xlogreader.c:663 #, c-format msgid "record with incorrect prev-link %X/%X at %X/%X" msgstr "registro con prev-link %X/%X incorrecto en %X/%X" -#: xlogreader.c:709 +#: xlogreader.c:700 #, c-format msgid "incorrect resource manager data checksum in record at %X/%X" msgstr "suma de verificación de los datos del gestor de recursos incorrecta en el registro en %X/%X" -#: xlogreader.c:742 +#: xlogreader.c:733 #, c-format msgid "invalid magic number %04X in log segment %s, offset %u" msgstr "número mágico %04X no válido en archivo %s, posición %u" -#: xlogreader.c:756 xlogreader.c:807 +#: xlogreader.c:747 xlogreader.c:798 #, c-format msgid "invalid info bits %04X in log segment %s, offset %u" msgstr "info bits %04X no válidos en archivo %s, posición %u" -#: xlogreader.c:782 +#: xlogreader.c:773 #, c-format msgid "WAL file is from different database system: WAL file database system identifier is %s, pg_control database system identifier is %s" msgstr "archivo WAL es de un sistema de bases de datos distinto: identificador de sistema en archivo WAL es %s, identificador en pg_control es %s" -#: xlogreader.c:789 +#: xlogreader.c:780 #, c-format msgid "WAL file is from different database system: incorrect XLOG_SEG_SIZE in page header" msgstr "archivo WAL es de un sistema de bases de datos distinto: XLOG_SEG_SIZE incorrecto en cabecera de página" -#: xlogreader.c:795 +#: xlogreader.c:786 #, c-format msgid "WAL file is from different database system: incorrect XLOG_BLCKSZ in page header" msgstr "archivo WAL es de un sistema de bases de datos distinto: XLOG_BLCKSZ incorrecto en cabecera de paǵina" -#: xlogreader.c:821 +#: xlogreader.c:812 #, c-format msgid "unexpected pageaddr %X/%X in log segment %s, offset %u" msgstr "pageaddr %X/%X inesperado en archivo %s, posición %u" -#: xlogreader.c:846 +#: xlogreader.c:837 #, c-format msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u" msgstr "ID de timeline %u fuera de secuencia (después de %u) en archivo %s, posición %u" -#: xlogreader.c:1053 +#: xlogreader.c:1081 #, c-format msgid "out-of-order block_id %u at %X/%X" msgstr "block_id %u fuera de orden en %X/%X" -#: xlogreader.c:1075 +#: xlogreader.c:1103 #, c-format msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" msgstr "BKPBLOCK_HAS_DATA está definido, pero no hay datos en %X/%X" -#: xlogreader.c:1082 +#: xlogreader.c:1110 #, c-format msgid "BKPBLOCK_HAS_DATA not set, but data length is %u at %X/%X" msgstr "BKPBLOCK_HAS_DATA no está definido, pero el largo de los datos es %u en %X/%X" -#: xlogreader.c:1115 +#: xlogreader.c:1143 #, c-format msgid "BKPIMAGE_HAS_HOLE set, but hole offset %u length %u block image length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE está definido, pero posición del agujero es %u largo %u largo de imagen %u en %X/%X" -#: xlogreader.c:1131 +#: xlogreader.c:1159 #, c-format msgid "BKPIMAGE_HAS_HOLE not set, but hole offset %u length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE no está definido, pero posición del agujero es %u largo %u en %X/%X" -#: xlogreader.c:1146 +#: xlogreader.c:1174 #, c-format msgid "BKPIMAGE_IS_COMPRESSED set, but block image length %u at %X/%X" msgstr "BKPIMAGE_IS_COMPRESSED definido, pero largo de imagen de bloque es %u en %X/%X" -#: xlogreader.c:1161 +#: xlogreader.c:1189 #, c-format msgid "neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_IS_COMPRESSED set, but block image length is %u at %X/%X" msgstr "ni BKPIMAGE_HAS_HOLE ni BKPIMAGE_IS_COMPRESSED está definido, pero largo de imagen de bloque es %u en %X/%X" -#: xlogreader.c:1177 +#: xlogreader.c:1205 #, c-format msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" msgstr "BKPBLOCK_SAME_REL está definido, pero no hay «rel» anterior en %X/%X " -#: xlogreader.c:1189 +#: xlogreader.c:1217 #, c-format msgid "invalid block_id %u at %X/%X" msgstr "block_id %u no válido en %X/%X" -#: xlogreader.c:1254 +#: xlogreader.c:1282 #, c-format msgid "record with invalid length at %X/%X" msgstr "registro con largo no válido en %X/%X" -#: xlogreader.c:1343 +#: xlogreader.c:1371 #, c-format msgid "invalid compressed image at %X/%X, block %d" msgstr "imagen comprimida no válida en %X/%X, bloque %d" diff --git a/src/bin/pg_rewind/po/fr.po b/src/bin/pg_rewind/po/fr.po index 339fecc306..00b0881e5d 100644 --- a/src/bin/pg_rewind/po/fr.po +++ b/src/bin/pg_rewind/po/fr.po @@ -7,15 +7,15 @@ msgid "" msgstr "" "Project-Id-Version: pg_rewind (PostgreSQL) 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-23 20:14+0000\n" -"PO-Revision-Date: 2016-09-24 18:08+0200\n" +"POT-Creation-Date: 2017-07-24 07:24+0000\n" +"PO-Revision-Date: 2017-07-24 21:29+0200\n" "Last-Translator: Guillaume Lelarge \n" "Language-Team: \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.7\n" +"X-Generator: Poedit 2.0.2\n" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 #: ../../common/fe_memutils.c:98 parsexlog.c:74 parsexlog.c:127 parsexlog.c:179 @@ -229,142 +229,147 @@ msgstr "modification inattendue de page pour le répertoire ou le lien symboliqu msgid "%s (%s)\n" msgstr "%s (%s)\n" -#: libpq_fetch.c:55 +#: libpq_fetch.c:56 #, c-format msgid "could not connect to server: %s" msgstr "n'a pas pu se connecter au serveur : %s" -#: libpq_fetch.c:58 +#: libpq_fetch.c:59 #, c-format msgid "connected to server\n" msgstr "connecté au serveur\n" -#: libpq_fetch.c:68 +#: libpq_fetch.c:69 #, c-format msgid "source server must not be in recovery mode\n" msgstr "le serveur source ne doit pas être en mode restauration\n" -#: libpq_fetch.c:78 +#: libpq_fetch.c:79 #, c-format msgid "full_page_writes must be enabled in the source server\n" msgstr "full_page_writes doit être activé sur le serveur source\n" -#: libpq_fetch.c:95 +#: libpq_fetch.c:91 +#, c-format +msgid "could not set up connection context: %s" +msgstr "n'a pas pu initialiser le contexte de connexion : « %s »" + +#: libpq_fetch.c:109 #, c-format msgid "error running query (%s) in source server: %s" msgstr "erreur lors de l'exécution de la requête (%s) dans le serveur source : %s" -#: libpq_fetch.c:100 +#: libpq_fetch.c:114 #, c-format msgid "unexpected result set from query\n" msgstr "ensemble de résultats inattendu de la requête\n" -#: libpq_fetch.c:123 +#: libpq_fetch.c:137 #, c-format msgid "unrecognized result \"%s\" for current WAL insert location\n" msgstr "résultat non reconnu « %s » pour l'emplacement d'insertion actuel dans les WAL\n" -#: libpq_fetch.c:173 +#: libpq_fetch.c:187 #, c-format msgid "could not fetch file list: %s" msgstr "n'a pas pu récupérer la liste des fichiers : %s" -#: libpq_fetch.c:178 +#: libpq_fetch.c:192 #, c-format msgid "unexpected result set while fetching file list\n" msgstr "ensemble de résultats inattendu lors de la récupération de la liste des fichiers\n" -#: libpq_fetch.c:226 +#: libpq_fetch.c:262 #, c-format msgid "could not send query: %s" msgstr "n'a pas pu envoyer la requête : %s" -#: libpq_fetch.c:228 +#: libpq_fetch.c:264 #, c-format msgid "getting file chunks\n" msgstr "récupération des parties de fichier\n" -#: libpq_fetch.c:231 +#: libpq_fetch.c:267 #, c-format msgid "could not set libpq connection to single row mode\n" msgstr "n'a pas pu configurer la connexion libpq en mode ligne seule\n" -#: libpq_fetch.c:251 +#: libpq_fetch.c:287 #, c-format msgid "unexpected result while fetching remote files: %s" msgstr "résultat inattendu lors de la récupération des fichiers cibles : %s" -#: libpq_fetch.c:257 +#: libpq_fetch.c:293 #, c-format msgid "unexpected result set size while fetching remote files\n" msgstr "taille inattendue de l'ensemble de résultats lors de la récupération des fichiers distants\n" -#: libpq_fetch.c:263 +#: libpq_fetch.c:299 #, c-format msgid "unexpected data types in result set while fetching remote files: %u %u %u\n" msgstr "types de données inattendus dans l'ensemble de résultats lors de la récupération des fichiers distants : %u %u %u\n" -#: libpq_fetch.c:271 +#: libpq_fetch.c:307 #, c-format msgid "unexpected result format while fetching remote files\n" msgstr "format de résultat inattendu lors de la récupération des fichiers distants\n" -#: libpq_fetch.c:277 +#: libpq_fetch.c:313 #, c-format msgid "unexpected null values in result while fetching remote files\n" msgstr "valeurs NULL inattendues dans le résultat lors de la récupération des fichiers distants\n" -#: libpq_fetch.c:281 +#: libpq_fetch.c:317 #, c-format msgid "unexpected result length while fetching remote files\n" msgstr "longueur de résultats inattendu lors de la récupération des fichiers distants\n" -#: libpq_fetch.c:303 +#: libpq_fetch.c:339 #, c-format msgid "received null value for chunk for file \"%s\", file has been deleted\n" msgstr "a reçu une valeur NULL pour une partie du fichier « %s », le fichier a été supprimé\n" -#: libpq_fetch.c:310 +#: libpq_fetch.c:346 #, c-format -msgid "received chunk for file \"%s\", offset %d, size %d\n" -msgstr "récupération d'une partie du fichier « %s », décalage %d, taille %d\n" +msgid "received chunk for file \"%s\", offset " +msgstr "récupération d'une partie du fichier « %s », décalage " -#: libpq_fetch.c:339 +#: libpq_fetch.c:375 #, c-format msgid "could not fetch remote file \"%s\": %s" msgstr "n'a pas pu récupérer le fichier distant « %s » : %s" -#: libpq_fetch.c:344 +#: libpq_fetch.c:380 #, c-format msgid "unexpected result set while fetching remote file \"%s\"\n" msgstr "ensemble de résultats inattendu lors de la récupération du fichier distant « %s »\n" -#: libpq_fetch.c:355 +#: libpq_fetch.c:391 #, c-format msgid "fetched file \"%s\", length %d\n" msgstr "fichier récupéré « %s », longueur %d\n" -#: libpq_fetch.c:387 +#: libpq_fetch.c:424 #, c-format msgid "could not send COPY data: %s" msgstr "n'a pas pu envoyer les données COPY : %s" -#: libpq_fetch.c:413 +#: libpq_fetch.c:450 #, c-format msgid "could not create temporary table: %s" msgstr "n'a pas pu créer la table temporaire : %s" -#: libpq_fetch.c:421 +#: libpq_fetch.c:458 #, c-format msgid "could not send file list: %s" msgstr "n'a pas pu envoyer la liste de fichiers : %s" -#: libpq_fetch.c:463 +#: libpq_fetch.c:500 #, c-format msgid "could not send end-of-COPY: %s" msgstr "n'a pas pu envoyer end-of-COPY : %s" -#: libpq_fetch.c:469 +#: libpq_fetch.c:506 #, c-format msgid "unexpected result while sending file list: %s" msgstr "résultat inattendu lors de l'envoi de la liste de fichiers : %s" @@ -496,7 +501,8 @@ msgstr "" "\n" "Rapporter les bogues à .\n" -#: pg_rewind.c:130 pg_rewind.c:161 pg_rewind.c:168 pg_rewind.c:176 +#: pg_rewind.c:130 pg_rewind.c:161 pg_rewind.c:168 pg_rewind.c:175 +#: pg_rewind.c:183 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Essayez « %s --help » pour plus d'informations.\n" @@ -508,65 +514,70 @@ msgstr "%s : aucune source indiquée (--source-pgdata ou --source-server)\n" #: pg_rewind.c:167 #, c-format +msgid "%s: only one of --source-pgdata or --source-server can be specified\n" +msgstr "%s : une seule des options --source-pgdata et --source-server peut être indiquée\n" + +#: pg_rewind.c:174 +#, c-format msgid "%s: no target data directory specified (--target-pgdata)\n" msgstr "%s : aucun répertoire de données cible indiqué (--target-pgdata)\n" -#: pg_rewind.c:174 +#: pg_rewind.c:181 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s : trop d'arguments en ligne de commande (le premier étant « %s »)\n" -#: pg_rewind.c:189 +#: pg_rewind.c:196 #, c-format msgid "cannot be executed by \"root\"\n" msgstr "ne peut pas être exécuté par « root »\n" -#: pg_rewind.c:190 +#: pg_rewind.c:197 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" msgstr "Vous devez exécuter %s en tant que super-utilisateur PostgreSQL.\n" -#: pg_rewind.c:221 +#: pg_rewind.c:228 #, c-format msgid "source and target cluster are on the same timeline\n" msgstr "les instances source et cible sont sur la même ligne de temps\n" -#: pg_rewind.c:227 +#: pg_rewind.c:234 #, c-format msgid "servers diverged at WAL position %X/%X on timeline %u\n" msgstr "les serveurs ont divergé à la position %X/%X des WAL sur la timeline %u\n" -#: pg_rewind.c:264 +#: pg_rewind.c:271 #, c-format msgid "no rewind required\n" msgstr "pas de retour en arrière requis\n" -#: pg_rewind.c:271 +#: pg_rewind.c:278 #, c-format msgid "rewinding from last common checkpoint at %X/%X on timeline %u\n" msgstr "retour en arrière depuis le dernier checkpoint commun à %X/%X sur la ligne de temps %u\n" -#: pg_rewind.c:279 +#: pg_rewind.c:286 #, c-format msgid "reading source file list\n" msgstr "lecture de la liste des fichiers sources\n" -#: pg_rewind.c:281 +#: pg_rewind.c:288 #, c-format msgid "reading target file list\n" msgstr "lecture de la liste des fichiers cibles\n" -#: pg_rewind.c:291 +#: pg_rewind.c:298 #, c-format msgid "reading WAL in target\n" msgstr "lecture du WAL dans la cible\n" -#: pg_rewind.c:308 +#: pg_rewind.c:315 #, c-format msgid "need to copy %lu MB (total source directory size is %lu MB)\n" msgstr "a besoin de copier %lu Mo (la taille totale du répertoire source est %lu Mo)\n" -#: pg_rewind.c:325 +#: pg_rewind.c:332 #, c-format msgid "" "\n" @@ -575,88 +586,84 @@ msgstr "" "\n" "création du fichier backup_label et mise à jour du fichier contrôle\n" -#: pg_rewind.c:353 +#: pg_rewind.c:360 #, c-format msgid "syncing target data directory\n" msgstr "synchronisation du répertoire des données cible\n" -#: pg_rewind.c:356 +#: pg_rewind.c:363 #, c-format msgid "Done!\n" msgstr "Terminé !\n" -#: pg_rewind.c:368 +#: pg_rewind.c:375 #, c-format msgid "source and target clusters are from different systems\n" msgstr "les instances source et cible proviennent de systèmes différents\n" -#: pg_rewind.c:376 +#: pg_rewind.c:383 #, c-format msgid "clusters are not compatible with this version of pg_rewind\n" msgstr "les instances ne sont pas compatibles avec cette version de pg_rewind\n" -#: pg_rewind.c:386 +#: pg_rewind.c:393 #, c-format msgid "target server needs to use either data checksums or \"wal_log_hints = on\"\n" msgstr "le serveur cible doit soit utiliser les sommes de contrôle sur les données soit avoir wal_log_hints configuré à on\n" -#: pg_rewind.c:397 +#: pg_rewind.c:404 #, c-format msgid "target server must be shut down cleanly\n" msgstr "le serveur cible doit être arrêté proprement\n" -#: pg_rewind.c:407 +#: pg_rewind.c:414 #, c-format msgid "source data directory must be shut down cleanly\n" msgstr "le répertoire de données source doit être arrêté proprement\n" -#: pg_rewind.c:462 +#: pg_rewind.c:469 #, c-format msgid "invalid control file" msgstr "Fichier de contrôle invalide" -#: pg_rewind.c:473 +#: pg_rewind.c:480 #, c-format msgid "Source timeline history:\n" msgstr "Historique de la ligne de temps source :\n" -#: pg_rewind.c:475 +#: pg_rewind.c:482 #, c-format msgid "Target timeline history:\n" msgstr "Historique de la ligne de temps cible :\n" #. translator: %d is a timeline number, others are LSN positions -#: pg_rewind.c:489 +#: pg_rewind.c:496 #, c-format msgid "%d: %X/%X - %X/%X\n" msgstr "%d : %X/%X - %X/%X\n" -#: pg_rewind.c:548 +#: pg_rewind.c:555 #, c-format msgid "could not find common ancestor of the source and target cluster's timelines\n" msgstr "n'a pas pu trouver l'ancêtre commun des lignes de temps des instances source et cible\n" -#: pg_rewind.c:589 +#: pg_rewind.c:596 #, c-format msgid "backup label buffer too small\n" msgstr "tampon du label de sauvegarde trop petit\n" -#: pg_rewind.c:612 +#: pg_rewind.c:619 #, c-format msgid "unexpected control file CRC\n" msgstr "CRC inattendu pour le fichier de contrôle\n" -#: pg_rewind.c:622 +#: pg_rewind.c:629 #, c-format msgid "unexpected control file size %d, expected %d\n" msgstr "taille %d inattendue du fichier de contrôle, %d attendu\n" -#: pg_rewind.c:689 -#, fuzzy, c-format -#| msgid "" -#| "The program \"initdb\" is needed by %s but was \n" -#| "not found in the same directory as \"%s\".\n" -#| "Check your installation.\n" +#: pg_rewind.c:696 +#, c-format msgid "" "The program \"initdb\" is needed by %s but was\n" "not found in the same directory as \"%s\".\n" @@ -666,7 +673,7 @@ msgstr "" "dans le même répertoire que « %s ».\n" "Vérifiez votre installation.\n" -#: pg_rewind.c:693 +#: pg_rewind.c:700 #, c-format msgid "" "The program \"initdb\" was found by \"%s\"\n" @@ -677,7 +684,7 @@ msgstr "" "que %s.\n" "Vérifiez votre installation.\n" -#: pg_rewind.c:711 +#: pg_rewind.c:718 #, c-format msgid "sync of target directory failed\n" msgstr "échec de la synchronisation du répertoire cible\n" diff --git a/src/bin/pg_rewind/po/it.po b/src/bin/pg_rewind/po/it.po index 7e9ba4e627..b6124ba5d6 100644 --- a/src/bin/pg_rewind/po/it.po +++ b/src/bin/pg_rewind/po/it.po @@ -15,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: pg_rewind (PostgreSQL) 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-04-17 00:15+0000\n" -"PO-Revision-Date: 2016-04-17 20:53+0100\n" +"POT-Creation-Date: 2017-02-09 21:14+0000\n" +"PO-Revision-Date: 2017-04-23 02:54+0100\n" "Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" "Language: it\n" @@ -25,11 +25,10 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Poedit-SourceCharset: utf-8\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.8.7.1\n" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 -#: ../../common/fe_memutils.c:98 parsexlog.c:74 parsexlog.c:127 -#: parsexlog.c:179 +#: ../../common/fe_memutils.c:98 parsexlog.c:74 parsexlog.c:127 parsexlog.c:179 #, c-format msgid "out of memory\n" msgstr "memoria esaurita\n" @@ -240,142 +239,147 @@ msgstr "modifica di pagina imprevista per la directory o il link simbolico \"%s\ msgid "%s (%s)\n" msgstr "%s (%s)\n" -#: libpq_fetch.c:55 +#: libpq_fetch.c:56 #, c-format msgid "could not connect to server: %s" msgstr "connessione al server fallita: %s" -#: libpq_fetch.c:58 +#: libpq_fetch.c:59 #, c-format msgid "connected to server\n" msgstr "connesso al server\n" -#: libpq_fetch.c:68 +#: libpq_fetch.c:69 #, c-format msgid "source server must not be in recovery mode\n" msgstr "il server di origine non dev'essere in modalità di recupero\n" -#: libpq_fetch.c:78 +#: libpq_fetch.c:79 #, c-format msgid "full_page_writes must be enabled in the source server\n" msgstr "full_page_writes dev'essere abilitato nel server di origine\n" -#: libpq_fetch.c:95 +#: libpq_fetch.c:91 +#, c-format +msgid "could not set up connection context: %s" +msgstr "preparazione del contesto di connessione fallita: %s" + +#: libpq_fetch.c:109 #, c-format msgid "error running query (%s) in source server: %s" msgstr "errore nell'esecuzione della query (%s) nel server di origine: %s" -#: libpq_fetch.c:100 +#: libpq_fetch.c:114 #, c-format msgid "unexpected result set from query\n" msgstr "risultato imprevisto dalla query\n" -#: libpq_fetch.c:123 +#: libpq_fetch.c:137 #, c-format msgid "unrecognized result \"%s\" for current WAL insert location\n" msgstr "risultato \"%s\" non riconosciuto per la locazione di inserimento WAL corrente\n" -#: libpq_fetch.c:173 +#: libpq_fetch.c:187 #, c-format msgid "could not fetch file list: %s" msgstr "ricezione della lista dei file fallita: %s" -#: libpq_fetch.c:178 +#: libpq_fetch.c:192 #, c-format msgid "unexpected result set while fetching file list\n" msgstr "risultato imprevisto ricevendo la lista dei file\n" -#: libpq_fetch.c:226 +#: libpq_fetch.c:240 #, c-format msgid "could not send query: %s" msgstr "invio della query non riuscito: %s" -#: libpq_fetch.c:228 +#: libpq_fetch.c:242 #, c-format msgid "getting file chunks\n" msgstr "ricezione blocchi del file\n" -#: libpq_fetch.c:231 +#: libpq_fetch.c:245 #, c-format msgid "could not set libpq connection to single row mode\n" msgstr "impostazione della connessione libpq in modalità riga singola fallita\n" -#: libpq_fetch.c:251 +#: libpq_fetch.c:265 #, c-format msgid "unexpected result while fetching remote files: %s" msgstr "risultato imprevisto ricevendo i file remoti: %s" -#: libpq_fetch.c:257 +#: libpq_fetch.c:271 #, c-format msgid "unexpected result set size while fetching remote files\n" msgstr "dimensione del risultato imprevisto ricevendo i file remoti\n" -#: libpq_fetch.c:263 +#: libpq_fetch.c:277 #, c-format msgid "unexpected data types in result set while fetching remote files: %u %u %u\n" msgstr "tipo di dati imprevisto nel risultato ricevendo i file remoti: %u %u %u\n" -#: libpq_fetch.c:271 +#: libpq_fetch.c:285 #, c-format msgid "unexpected result format while fetching remote files\n" msgstr "formato del risultato imprevisto ricevendo i file remoti\n" -#: libpq_fetch.c:277 +#: libpq_fetch.c:291 #, c-format msgid "unexpected null values in result while fetching remote files\n" msgstr "valori null non previsti nel risultato ricevendo i file remoti\n" -#: libpq_fetch.c:281 +#: libpq_fetch.c:295 #, c-format msgid "unexpected result length while fetching remote files\n" msgstr "lunghezza del risultato non prevista ricevendo i file remoti\n" -#: libpq_fetch.c:303 +#: libpq_fetch.c:317 #, c-format msgid "received null value for chunk for file \"%s\", file has been deleted\n" msgstr "ricevuto valore null per il blocco del file \"%s\", il file è stato cancellato\n" -#: libpq_fetch.c:310 +#: libpq_fetch.c:324 #, c-format msgid "received chunk for file \"%s\", offset %d, size %d\n" msgstr "ricevuto blocco per il file \"%s\", offset %d, dimensione %d\n" -#: libpq_fetch.c:339 +#: libpq_fetch.c:353 #, c-format msgid "could not fetch remote file \"%s\": %s" msgstr "ricezione del file remoto \"%s\" fallita: %s" -#: libpq_fetch.c:344 +#: libpq_fetch.c:358 #, c-format msgid "unexpected result set while fetching remote file \"%s\"\n" msgstr "risultato inatteso leggendo il file remoto \"%s\"\n" -#: libpq_fetch.c:355 +#: libpq_fetch.c:369 #, c-format msgid "fetched file \"%s\", length %d\n" msgstr "ricevuto il file \"%s\", lunghezza %d\n" -#: libpq_fetch.c:387 +#: libpq_fetch.c:401 #, c-format msgid "could not send COPY data: %s" msgstr "invio dei dati di COPY fallito: %s" -#: libpq_fetch.c:413 +#: libpq_fetch.c:427 #, c-format msgid "could not create temporary table: %s" msgstr "creazione della tabella temporanea fallita: %s" -#: libpq_fetch.c:421 +#: libpq_fetch.c:435 #, c-format msgid "could not send file list: %s" msgstr "invio della lista dei file fallito: %s" -#: libpq_fetch.c:463 +#: libpq_fetch.c:477 #, c-format msgid "could not send end-of-COPY: %s" msgstr "invio del fine-COPY fallito: %s" -#: libpq_fetch.c:469 +#: libpq_fetch.c:483 #, c-format msgid "unexpected result while sending file list: %s" msgstr "risultato imprevisto inviando la lista dei file: %s" @@ -507,7 +511,8 @@ msgstr "" "\n" "Puoi segnalare eventuali bug a .\n" -#: pg_rewind.c:130 pg_rewind.c:161 pg_rewind.c:168 pg_rewind.c:176 +#: pg_rewind.c:130 pg_rewind.c:161 pg_rewind.c:168 pg_rewind.c:175 +#: pg_rewind.c:183 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Prova \"%s --help\" per maggiori informazioni.\n" @@ -519,65 +524,70 @@ msgstr "%s: nessuna origine specificata (--source-pgdata o --source-server)\n" #: pg_rewind.c:167 #, c-format +msgid "%s: only one of --source-pgdata or --source-server can be specified\n" +msgstr "%s: è possibile specificare solo uno tra --source-pgdata e --source-server\n" + +#: pg_rewind.c:174 +#, c-format msgid "%s: no target data directory specified (--target-pgdata)\n" msgstr "%s: nessuna directory di dati di destinazione specificata (--target-pgdata)\n" -#: pg_rewind.c:174 +#: pg_rewind.c:181 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: troppi argomenti nella riga di comando (il primo è \"%s\")\n" -#: pg_rewind.c:189 +#: pg_rewind.c:196 #, c-format msgid "cannot be executed by \"root\"\n" msgstr "non può essere eseguito da \"root\"\n" -#: pg_rewind.c:190 +#: pg_rewind.c:197 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" msgstr "È obbligatorio eseguire %s come superutente di PostgreSQL.\n" -#: pg_rewind.c:221 +#: pg_rewind.c:228 #, c-format msgid "source and target cluster are on the same timeline\n" msgstr "i cluster di origine e di destinazione sono sulla stessa linea temporale\n" -#: pg_rewind.c:227 +#: pg_rewind.c:234 #, c-format msgid "servers diverged at WAL position %X/%X on timeline %u\n" msgstr "i server sono andati a divergere alla posizione WAL %X/%X sulla timeline %u\n" -#: pg_rewind.c:264 +#: pg_rewind.c:271 #, c-format msgid "no rewind required\n" msgstr "rewind non richiesto\n" -#: pg_rewind.c:271 +#: pg_rewind.c:278 #, c-format msgid "rewinding from last common checkpoint at %X/%X on timeline %u\n" msgstr "riavvolgimento dall'ultimo checkpoint comune a %X/%X sulla timeline %u\n" -#: pg_rewind.c:279 +#: pg_rewind.c:286 #, c-format msgid "reading source file list\n" msgstr "lettura della lista dei file di origine\n" -#: pg_rewind.c:281 +#: pg_rewind.c:288 #, c-format msgid "reading target file list\n" msgstr "lettura della lista dei file di destinazione\n" -#: pg_rewind.c:291 +#: pg_rewind.c:298 #, c-format msgid "reading WAL in target\n" msgstr "lettura del WAL nella destinazione\n" -#: pg_rewind.c:308 +#: pg_rewind.c:315 #, c-format msgid "need to copy %lu MB (total source directory size is %lu MB)\n" msgstr "è necessario copiare %lu MB (la dimensione totale della directory di origine è di %lu MB)\n" -#: pg_rewind.c:325 +#: pg_rewind.c:332 #, c-format msgid "" "\n" @@ -586,94 +596,94 @@ msgstr "" "\n" "creazione dell'etichetta di backup e aggiornamento del file di controllo\n" -#: pg_rewind.c:353 +#: pg_rewind.c:360 #, c-format msgid "syncing target data directory\n" msgstr "sincronizzazione della directory dati di destinazione\n" -#: pg_rewind.c:356 +#: pg_rewind.c:363 #, c-format msgid "Done!\n" msgstr "Fatto!\n" -#: pg_rewind.c:368 +#: pg_rewind.c:375 #, c-format msgid "source and target clusters are from different systems\n" msgstr "i cluster di origine e di destinazione sono di sistemi diversi\n" -#: pg_rewind.c:376 +#: pg_rewind.c:383 #, c-format msgid "clusters are not compatible with this version of pg_rewind\n" msgstr "i cluster non sono compatibili con questa versione di pg_rewind\n" -#: pg_rewind.c:386 +#: pg_rewind.c:393 #, c-format msgid "target server needs to use either data checksums or \"wal_log_hints = on\"\n" msgstr "il server di destinazione deve usare o il checksum dei dati o \"wal_log_hints = on\"\n" -#: pg_rewind.c:397 +#: pg_rewind.c:404 #, c-format msgid "target server must be shut down cleanly\n" msgstr "il server di destinazione dev'essere arrestato in maniera pulita\n" -#: pg_rewind.c:407 +#: pg_rewind.c:414 #, c-format msgid "source data directory must be shut down cleanly\n" msgstr "la directory dei dati di origine deve essere arrestata in maniera pulita\n" -#: pg_rewind.c:462 +#: pg_rewind.c:469 #, c-format -msgid "Invalid control file" +msgid "invalid control file" msgstr "file di controllo non valido" -#: pg_rewind.c:473 +#: pg_rewind.c:480 #, c-format msgid "Source timeline history:\n" msgstr "Storia della timeline di origine:\n" -#: pg_rewind.c:475 +#: pg_rewind.c:482 #, c-format msgid "Target timeline history:\n" msgstr "Storia della timeline di destinazione:\n" #. translator: %d is a timeline number, others are LSN positions -#: pg_rewind.c:489 +#: pg_rewind.c:496 #, c-format msgid "%d: %X/%X - %X/%X\n" msgstr "%d: %X/%X - %X/%X\n" -#: pg_rewind.c:547 +#: pg_rewind.c:555 #, c-format msgid "could not find common ancestor of the source and target cluster's timelines\n" msgstr "impossibile trovare un antenato comune nelle timeline dei cluster di origine e di destinazione\n" -#: pg_rewind.c:588 +#: pg_rewind.c:596 #, c-format msgid "backup label buffer too small\n" msgstr "buffer dell'etichetta di backup troppo piccolo\n" -#: pg_rewind.c:611 +#: pg_rewind.c:619 #, c-format msgid "unexpected control file CRC\n" msgstr "CRC del file di controllo imprevisto\n" -#: pg_rewind.c:621 +#: pg_rewind.c:629 #, c-format msgid "unexpected control file size %d, expected %d\n" msgstr "dimensione del file di controllo %d imprevista, atteso %d\n" -#: pg_rewind.c:688 +#: pg_rewind.c:696 #, c-format msgid "" -"The program \"initdb\" is needed by %s but was \n" +"The program \"initdb\" is needed by %s but was\n" "not found in the same directory as \"%s\".\n" "Check your installation.\n" msgstr "" -"Il programma \"initdb\" è richiesto da %s ma non è \n" +"Il programma \"initdb\" è richiesto da %s ma non è\n" "stato tro vato nella stessa directory di \"%s\".\n" "Controlla la tua installazione.\n" -#: pg_rewind.c:692 +#: pg_rewind.c:700 #, c-format msgid "" "The program \"initdb\" was found by \"%s\"\n" @@ -684,7 +694,7 @@ msgstr "" "ma non è la stessa versione di %s.\n" "Controlla la tua installazione.\n" -#: pg_rewind.c:710 +#: pg_rewind.c:718 #, c-format msgid "sync of target directory failed\n" msgstr "sincronizzazione della directory di destinazione fallita\n" @@ -724,137 +734,137 @@ msgstr "dati non validi nel file di storia\n" msgid "Timeline IDs must be less than child timeline's ID.\n" msgstr "Gli ID della timeline devono essere meno dell'ID della timeline del figlio.\n" -#: xlogreader.c:285 +#: xlogreader.c:276 #, c-format msgid "invalid record offset at %X/%X" msgstr "offset del record non valido a %X/%X" -#: xlogreader.c:293 +#: xlogreader.c:284 #, c-format msgid "contrecord is requested by %X/%X" msgstr "contrecord richiesto da %X/%X" -#: xlogreader.c:334 xlogreader.c:633 +#: xlogreader.c:325 xlogreader.c:624 #, c-format msgid "invalid record length at %X/%X: wanted %u, got %u" msgstr "lunghezza del record a %X/%X non valida: attesa %u, ricevuta %u" -#: xlogreader.c:349 +#: xlogreader.c:340 #, c-format msgid "record length %u at %X/%X too long" msgstr "lunghezza del record %u a %X/%X eccessiva" -#: xlogreader.c:390 +#: xlogreader.c:381 #, c-format msgid "there is no contrecord flag at %X/%X" msgstr "non c'è un flag di contrecord a %X/%X" -#: xlogreader.c:403 +#: xlogreader.c:394 #, c-format msgid "invalid contrecord length %u at %X/%X" msgstr "lunghezza di contrecord %u non valida a %X/%X" -#: xlogreader.c:641 +#: xlogreader.c:632 #, c-format msgid "invalid resource manager ID %u at %X/%X" msgstr "ID di gestione risorse %u non valido a %X/%X" -#: xlogreader.c:655 xlogreader.c:672 +#: xlogreader.c:646 xlogreader.c:663 #, c-format msgid "record with incorrect prev-link %X/%X at %X/%X" msgstr "record con link-precedente %X/%X non corretto a %X/%X" -#: xlogreader.c:709 +#: xlogreader.c:700 #, c-format msgid "incorrect resource manager data checksum in record at %X/%X" msgstr "checksum dei dati del manager di risorse non corretto nel record a %X/%X" -#: xlogreader.c:742 +#: xlogreader.c:733 #, c-format msgid "invalid magic number %04X in log segment %s, offset %u" msgstr "numero magico %04X non valido nel segmento di log %s, offset %u" -#: xlogreader.c:756 xlogreader.c:807 +#: xlogreader.c:747 xlogreader.c:798 #, c-format msgid "invalid info bits %04X in log segment %s, offset %u" msgstr "bit di info %04X non validi nel segmento di log %s, offset %u" -#: xlogreader.c:782 +#: xlogreader.c:773 #, c-format msgid "WAL file is from different database system: WAL file database system identifier is %s, pg_control database system identifier is %s" msgstr "il file WAL è di un database diverso: l'identificativo del database del file WAL è %s, quello del database di pg_control è %s" -#: xlogreader.c:789 +#: xlogreader.c:780 #, c-format msgid "WAL file is from different database system: incorrect XLOG_SEG_SIZE in page header" msgstr "il file WAL è di un database diverso: XLOG_SEG_SIZE non corretto nell'header di pagina" -#: xlogreader.c:795 +#: xlogreader.c:786 #, c-format msgid "WAL file is from different database system: incorrect XLOG_BLCKSZ in page header" msgstr "il file WAL è di un database diverso: XLOG_BLCKSZ non corretto nell'header di pagina" -#: xlogreader.c:821 +#: xlogreader.c:812 #, c-format msgid "unexpected pageaddr %X/%X in log segment %s, offset %u" msgstr "pageaddr inaspettato %X/%X nel segmento di log %s, offset %u" -#: xlogreader.c:846 +#: xlogreader.c:837 #, c-format msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u" msgstr "ID della timeline %u (dopo %u) fuori sequenza nel segmento di log %s, offset %u" -#: xlogreader.c:1053 +#: xlogreader.c:1081 #, c-format msgid "out-of-order block_id %u at %X/%X" msgstr "block_id fuori sequenza %u a %X/%X" -#: xlogreader.c:1075 +#: xlogreader.c:1103 #, c-format msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" msgstr "BKPBLOCK_HAS_DATA impostato, ma dati non inclusi a %X/%X" -#: xlogreader.c:1082 +#: xlogreader.c:1110 #, c-format msgid "BKPBLOCK_HAS_DATA not set, but data length is %u at %X/%X" msgstr "BKPBLOCK_HAS_DATA non impostato, ma la lunghezza dei dati è %u a %X/%X" -#: xlogreader.c:1115 +#: xlogreader.c:1143 #, c-format msgid "BKPIMAGE_HAS_HOLE set, but hole offset %u length %u block image length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE impostato, ma offset buco %u lunghezza %u lunghezza dell'immagine del blocco %u a %X/%X" -#: xlogreader.c:1131 +#: xlogreader.c:1159 #, c-format msgid "BKPIMAGE_HAS_HOLE not set, but hole offset %u length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE non impostato, ma offset buco %u lunghezza %u a %X/%X" -#: xlogreader.c:1146 +#: xlogreader.c:1174 #, c-format msgid "BKPIMAGE_IS_COMPRESSED set, but block image length %u at %X/%X" msgstr "BKPIMAGE_IS_COMPRESSED impostato, ma la lunghezza dell'immagine del blocco è %u a %X/%X" -#: xlogreader.c:1161 +#: xlogreader.c:1189 #, c-format msgid "neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_IS_COMPRESSED set, but block image length is %u at %X/%X" msgstr "né BKPIMAGE_HAS_HOLE né BKPIMAGE_IS_COMPRESSED impostati, ma la lunghezza dell'immagine del blocco è %u a %X/%X" -#: xlogreader.c:1177 +#: xlogreader.c:1205 #, c-format msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" msgstr "BKPBLOCK_SAME_REL impostato ma non c'è un rel precedente a %X/%X" -#: xlogreader.c:1189 +#: xlogreader.c:1217 #, c-format msgid "invalid block_id %u at %X/%X" msgstr "block_id %u non valido a %X/%X" -#: xlogreader.c:1254 +#: xlogreader.c:1282 #, c-format msgid "record with invalid length at %X/%X" msgstr "record con lunghezza non valida a %X/%X" -#: xlogreader.c:1343 +#: xlogreader.c:1371 #, c-format msgid "invalid compressed image at %X/%X, block %d" msgstr "immagine compressa non valida a %X/%X, blocco %d" diff --git a/src/bin/pg_rewind/po/ja.po b/src/bin/pg_rewind/po/ja.po index 0343ff45ac..a8ef0c3cba 100644 --- a/src/bin/pg_rewind/po/ja.po +++ b/src/bin/pg_rewind/po/ja.po @@ -3,14 +3,13 @@ # This file is distributed under the same license as the PostgreSQL package. # FIRST AUTHOR , 2016. # - msgid "" msgstr "" -"Project-Id-Version: pg_rewind (PostgreSQL) 9.6\n" +"Project-Id-Version: pg_rewind (PostgreSQL) 9.6.3\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-21 12:34+0900\n" +"POT-Creation-Date: 2017-04-04 11:59+0900\n" "PO-Revision-Date: 2016-MO-DA HO:MI+ZONE\n" -"Last-Translator: IDERIHA Takeshi \n" +"Last-Translator: Daisuke Higuchi \n" "Language-Team: jpug-doc \n" "Language: ja\n" "MIME-Version: 1.0\n" @@ -230,142 +229,147 @@ msgstr "ディレクトリã¾ãŸã¯ã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒªãƒ³ã‚¯\"%s\"ã«å¯¾ã™ã‚‹ msgid "%s (%s)\n" msgstr "%s (%s)\n" -#: libpq_fetch.c:55 +#: libpq_fetch.c:56 #, c-format msgid "could not connect to server: %s" msgstr "サーãƒã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: libpq_fetch.c:58 +#: libpq_fetch.c:59 #, c-format msgid "connected to server\n" msgstr "サーãƒã¸æŽ¥ç¶šã—ã¾ã—ãŸ\n" -#: libpq_fetch.c:68 +#: libpq_fetch.c:69 #, c-format msgid "source server must not be in recovery mode\n" msgstr "ソースサーãƒã¯ãƒªã‚«ãƒãƒªãƒ¢ãƒ¼ãƒ‰ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: libpq_fetch.c:78 +#: libpq_fetch.c:79 #, c-format msgid "full_page_writes must be enabled in the source server\n" msgstr "ソースサーãƒã§ã¯full_pate_writesã¯æœ‰åйã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: libpq_fetch.c:95 +#: libpq_fetch.c:91 +#, c-format +msgid "could not set up connection context: %s" +msgstr "接続コンテキストを設定ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" + +#: libpq_fetch.c:109 #, c-format msgid "error running query (%s) in source server: %s" msgstr "ソースサーãƒã®å®Ÿè¡Œä¸­ã®ã‚¯ã‚¨ãƒª(%s)ã§ã‚¨ãƒ©ãƒ¼ï¼š%s" -#: libpq_fetch.c:100 +#: libpq_fetch.c:114 #, c-format msgid "unexpected result set from query\n" msgstr "クエリã‹ã‚‰æƒ³å®šå¤–ã®çµæžœã‚»ãƒƒãƒˆ\n" -#: libpq_fetch.c:123 +#: libpq_fetch.c:137 #, c-format msgid "unrecognized result \"%s\" for current WAL insert location\n" msgstr "ç¾åœ¨ã®WALã®æŒ¿å…¥å ´æ‰€ã«å¯¾ã™ã‚‹æœªçŸ¥ã®çµæžœ \"%s\" \n" -#: libpq_fetch.c:173 +#: libpq_fetch.c:187 #, c-format msgid "could not fetch file list: %s" msgstr "ファイルリストをフェッãƒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: libpq_fetch.c:178 +#: libpq_fetch.c:192 #, c-format msgid "unexpected result set while fetching file list\n" msgstr "ファイルリストをフェッãƒä¸­ã«æƒ³å®šå¤–ã®çµæžœã‚»ãƒƒãƒˆ\n" -#: libpq_fetch.c:226 +#: libpq_fetch.c:240 #, c-format msgid "could not send query: %s" msgstr "クエリをé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: libpq_fetch.c:228 +#: libpq_fetch.c:242 #, c-format msgid "getting file chunks\n" msgstr "ファイルãƒãƒ£ãƒ³ã‚¯ã®å–å¾—\n" -#: libpq_fetch.c:231 +#: libpq_fetch.c:245 #, c-format msgid "could not set libpq connection to single row mode\n" msgstr "libpq接続をå˜ä¸€è¡Œãƒ¢ãƒ¼ãƒ‰ã«è¨­å®šã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: libpq_fetch.c:251 +#: libpq_fetch.c:265 #, c-format msgid "unexpected result while fetching remote files: %s" msgstr "リモートファイルをフェッãƒä¸­ã«æƒ³å®šå¤–ã®çµæžœ: %s" -#: libpq_fetch.c:257 +#: libpq_fetch.c:271 #, c-format msgid "unexpected result set size while fetching remote files\n" msgstr "リモートファイルをフェッãƒä¸­ã«æƒ³å®šå¤–ã®çµæžœã‚»ãƒƒãƒˆã‚µã‚¤ã‚º\n" -#: libpq_fetch.c:263 +#: libpq_fetch.c:277 #, c-format msgid "unexpected data types in result set while fetching remote files: %u %u %u\n" msgstr "リモートファイルをフェッãƒä¸­ã®çµæžœã‚»ãƒƒãƒˆã«æƒ³å®šå¤–ã®ãƒ‡ãƒ¼ã‚¿åž‹: %u %u %u\n" -#: libpq_fetch.c:271 +#: libpq_fetch.c:285 #, c-format msgid "unexpected result format while fetching remote files\n" msgstr "リモートファイルをフェッãƒä¸­ã«æƒ³å®šå¤–ã®çµæžœå½¢å¼\n" -#: libpq_fetch.c:277 +#: libpq_fetch.c:291 #, c-format msgid "unexpected null values in result while fetching remote files\n" msgstr "リモートファイルをフェッãƒä¸­ã®çµæžœã«æƒ³å®šå¤–ã®NULL値\n" -#: libpq_fetch.c:281 +#: libpq_fetch.c:295 #, c-format msgid "unexpected result length while fetching remote files\n" msgstr "リモートファイルをフェッãƒä¸­ã«æƒ³å®šå¤–ã®çµæžœã®é•·ã•\n" -#: libpq_fetch.c:303 +#: libpq_fetch.c:317 #, c-format msgid "received null value for chunk for file \"%s\", file has been deleted\n" msgstr "ファイル\"%s\"ã®NULL値ã®ãƒãƒ£ãƒ³ã‚¯ã‚’å—ã‘å–りã¾ã—ãŸã€‚ファイルã¯å‰Šé™¤ã•れã¾ã—ãŸã€‚\n" -#: libpq_fetch.c:310 +#: libpq_fetch.c:324 #, c-format msgid "received chunk for file \"%s\", offset %d, size %d\n" msgstr "ファイル \"%s\",オフセット %d, サイズ %dã®ãƒãƒ£ãƒ³ã‚¯ã‚’å—ã‘å–りã¾ã—ãŸ\n" -#: libpq_fetch.c:339 +#: libpq_fetch.c:353 #, c-format msgid "could not fetch remote file \"%s\": %s" msgstr "リモートファイル\"%s\"をフェッãƒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: libpq_fetch.c:344 +#: libpq_fetch.c:358 #, c-format msgid "unexpected result set while fetching remote file \"%s\"\n" msgstr "リモートファイル \"%s\"をフェッãƒä¸­ã«æƒ³å®šå¤–ã®çµæžœã‚»ãƒƒãƒˆ\n" -#: libpq_fetch.c:355 +#: libpq_fetch.c:369 #, c-format msgid "fetched file \"%s\", length %d\n" msgstr "フェッãƒã—ãŸãƒ•ァイル \"%s\",é•·ã• %d\n" -#: libpq_fetch.c:387 +#: libpq_fetch.c:401 #, c-format msgid "could not send COPY data: %s" msgstr "COPY 対象データをé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸï¼š%s" -#: libpq_fetch.c:413 +#: libpq_fetch.c:427 #, c-format msgid "could not create temporary table: %s" msgstr "一時テーブルを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸï¼š%s" -#: libpq_fetch.c:421 +#: libpq_fetch.c:435 #, c-format msgid "could not send file list: %s" msgstr "ファイルリストをé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸï¼š%s" -#: libpq_fetch.c:463 +#: libpq_fetch.c:477 #, c-format msgid "could not send end-of-COPY: %s" msgstr "コピー終端をé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸï¼š%s" -#: libpq_fetch.c:469 +#: libpq_fetch.c:483 #, c-format msgid "unexpected result while sending file list: %s" msgstr "ファイルリストをé€ä¿¡ä¸­ã«æƒ³å®šå¤–ã®çµæžœ: %s" @@ -497,7 +501,8 @@ msgstr "" "\n" "ä¸å…·åˆã¯ã¾ã§å ±å‘Šã—ã¦ãã ã•ã„。\n" -#: pg_rewind.c:130 pg_rewind.c:161 pg_rewind.c:168 pg_rewind.c:176 +#: pg_rewind.c:130 pg_rewind.c:161 pg_rewind.c:168 pg_rewind.c:175 +#: pg_rewind.c:183 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "詳細ã¯\"%s --help\"を実行ã—ã¦ãã ã•ã„。\n" @@ -509,65 +514,70 @@ msgstr "%s: ソースãŒç‰¹å®šã•れã¦ã„ã¾ã›ã‚“(--source-pgdata or --sourc #: pg_rewind.c:167 #, c-format +msgid "%s: only one of --source-pgdata or --source-server can be specified\n" +msgstr "%s: --source-pgdata ã‹ --source-server ã®ã„ãšã‚Œã‹ã®ã¿ã‚’指定ã—ã¦ãã ã•ã„\n" + +#: pg_rewind.c:174 +#, c-format msgid "%s: no target data directory specified (--target-pgdata)\n" msgstr "%s: ãƒ‡ãƒ¼ã‚¿ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå¯¾è±¡ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“ (--target-pgdata)\n" -#: pg_rewind.c:174 +#: pg_rewind.c:181 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: コマンドライン引数ãŒå¤šã™ãŽã¾ã™ã€‚(å§‹ã‚ã¯\"%s\")\n" -#: pg_rewind.c:189 +#: pg_rewind.c:196 #, c-format msgid "cannot be executed by \"root\"\n" msgstr "\"root\"ã§ã¯å®Ÿè¡Œã§ãã¾ã›ã‚“\n" -#: pg_rewind.c:190 +#: pg_rewind.c:197 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" msgstr "PostgreSQLã®ã‚¹ãƒ¼ãƒ‘ーユーザã§%sを実行ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: pg_rewind.c:221 +#: pg_rewind.c:228 #, c-format msgid "source and target cluster are on the same timeline\n" msgstr "変æ›å…ƒã¨å¤‰æ›å…ˆã®ã‚¯ãƒ©ã‚¹ã‚¿ãŒåŒä¸€ã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³ã«ã‚りã¾ã™\n" -#: pg_rewind.c:227 +#: pg_rewind.c:234 #, c-format msgid "servers diverged at WAL position %X/%X on timeline %u\n" msgstr "タイムライン%3$uã® WALã®ä½ç½® %1$X/%2$Xã§ã‚µãƒ¼ãƒãŒåˆ†å²ã—ã¦ã„ã¾ã™\n" -#: pg_rewind.c:264 +#: pg_rewind.c:271 #, c-format msgid "no rewind required\n" msgstr "å·»ãæˆ»ã—ã¯å¿…è¦ã§ã¯ã‚りã¾ã›ã‚“\n" -#: pg_rewind.c:271 +#: pg_rewind.c:278 #, c-format msgid "rewinding from last common checkpoint at %X/%X on timeline %u\n" msgstr "タイムライン%3$uã® %1$X/%2$X ã§æœ€æ–°ã®å…±é€šãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆã‹ã‚‰å·»ã戻ã—ã¦ã„ã¾ã™\n" -#: pg_rewind.c:279 +#: pg_rewind.c:286 #, c-format msgid "reading source file list\n" msgstr "ソースファイルリストを読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: pg_rewind.c:281 +#: pg_rewind.c:288 #, c-format msgid "reading target file list\n" msgstr "ターゲットファイルリストを読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: pg_rewind.c:291 +#: pg_rewind.c:298 #, c-format msgid "reading WAL in target\n" msgstr "ターゲットã§WALを読ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" -#: pg_rewind.c:308 +#: pg_rewind.c:315 #, c-format msgid "need to copy %lu MB (total source directory size is %lu MB)\n" msgstr "%lu MBをコピーã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼ˆã‚½ãƒ¼ã‚¹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚µã‚¤ã‚ºã®åˆè¨ˆã¯%lu MBã§ã™ï¼‰\n" -#: pg_rewind.c:325 +#: pg_rewind.c:332 #, c-format msgid "" "\n" @@ -576,83 +586,83 @@ msgstr "" "\n" "backup labelを作æˆã—ã¦åˆ¶å¾¡ãƒ•ァイルを更新ã—ã¦ã„ã¾ã™\n" -#: pg_rewind.c:353 +#: pg_rewind.c:360 #, c-format msgid "syncing target data directory\n" msgstr "åŒæœŸã—ã¦ã„るターゲットデータディレクトリ\n" -#: pg_rewind.c:356 +#: pg_rewind.c:363 #, c-format msgid "Done!\n" msgstr "完了ï¼\n" -#: pg_rewind.c:368 +#: pg_rewind.c:375 #, c-format msgid "source and target clusters are from different systems\n" msgstr "ソースクラスタã¨ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚¯ãƒ©ã‚¹ã‚¿ã¯ç•°ãªã‚‹ã‚·ã‚¹ãƒ†ãƒ ã®ã‚‚ã®ã§ã™\n" -#: pg_rewind.c:376 +#: pg_rewind.c:383 #, c-format msgid "clusters are not compatible with this version of pg_rewind\n" msgstr "クラスタãŒã€pg_rewindã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨ä¸€è‡´ã—ã¾ã›ã‚“\n" -#: pg_rewind.c:386 +#: pg_rewind.c:393 #, c-format msgid "target server needs to use either data checksums or \"wal_log_hints = on\"\n" msgstr "ターゲットサーãƒã¯ãƒ‡ãƒ¼ã‚¿ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã‚’利用ã™ã‚‹ã‚ã‚‹ã„ã¯\"wal_log_hints = onã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™\n" -#: pg_rewind.c:397 +#: pg_rewind.c:404 #, c-format msgid "target server must be shut down cleanly\n" msgstr "ターゲットサーãƒã¯ãれã„ã«ã‚·ãƒ£ãƒƒãƒˆãƒ€ã‚¦ãƒ³ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: pg_rewind.c:407 +#: pg_rewind.c:414 #, c-format msgid "source data directory must be shut down cleanly\n" msgstr "ソースデータディレクトリã¯ãれã„ã«ã‚·ãƒ£ãƒƒãƒˆãƒ€ã‚¦ãƒ³ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: pg_rewind.c:462 +#: pg_rewind.c:469 #, c-format msgid "invalid control file" msgstr "無効ãªåˆ¶å¾¡ãƒ•ァイル" -#: pg_rewind.c:473 +#: pg_rewind.c:480 #, c-format msgid "Source timeline history:\n" msgstr "ソースタイムラインã®å±¥æ­´\n" -#: pg_rewind.c:475 +#: pg_rewind.c:482 #, c-format msgid "Target timeline history:\n" msgstr "ターゲットタイムラインã®å±¥æ­´:\n" #. translator: %d is a timeline number, others are LSN positions -#: pg_rewind.c:489 +#: pg_rewind.c:496 #, c-format msgid "%d: %X/%X - %X/%X\n" msgstr "%d: %X/%X - %X/%X\n" -#: pg_rewind.c:548 +#: pg_rewind.c:555 #, c-format msgid "could not find common ancestor of the source and target cluster's timelines\n" msgstr "ソースクラスタã€ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚¯ãƒ©ã‚¹ã‚¿ã®ã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³ã®å…±é€šã®ç¥–先を見ã¤ã‘られã¾ã›ã‚“\n" -#: pg_rewind.c:589 +#: pg_rewind.c:596 #, c-format msgid "backup label buffer too small\n" msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ラベルã®ãƒãƒƒãƒ•ã‚¡ãŒå°ã•ã™ãŽã¾ã™\n" -#: pg_rewind.c:612 +#: pg_rewind.c:619 #, c-format msgid "unexpected control file CRC\n" msgstr "想定外ã®åˆ¶å¾¡ãƒ•ァイル CRC ã§ã™\n" -#: pg_rewind.c:622 +#: pg_rewind.c:629 #, c-format msgid "unexpected control file size %d, expected %d\n" msgstr "想定外ã®åˆ¶å¾¡ãƒ•ァイルã®ã‚µã‚¤ã‚º%dã§ã™ã€ãã®æœŸå¾…値ã¯%dã§ã™\n" -#: pg_rewind.c:689 +#: pg_rewind.c:696 #, c-format msgid "" "The program \"initdb\" is needed by %s but was\n" @@ -663,7 +673,7 @@ msgstr "" "ã«ã‚りã¾ã›ã‚“ã§ã—ãŸã€‚\n" "インストール状æ³ã‚’確èªã—ã¦ãã ã•ã„。\n" -#: pg_rewind.c:693 +#: pg_rewind.c:700 #, c-format msgid "" "The program \"initdb\" was found by \"%s\"\n" @@ -674,7 +684,7 @@ msgstr "" "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ã‚りã¾ã›ã‚“ã§ã—ãŸã€‚\n" "インストレーションを検査ã—ã¦ãã ã•ã„。\n" -#: pg_rewind.c:711 +#: pg_rewind.c:718 #, c-format msgid "sync of target directory failed\n" msgstr "ターゲットディレクトリã®åŒæœŸãŒå¤±æ•—ã—ã¾ã—ãŸ\n" diff --git a/src/bin/pg_rewind/po/ko.po b/src/bin/pg_rewind/po/ko.po index a0aec81353..36f7c1ca87 100644 --- a/src/bin/pg_rewind/po/ko.po +++ b/src/bin/pg_rewind/po/ko.po @@ -1,14 +1,14 @@ # LANGUAGE message translation file for pg_rewind # Copyright (C) 2015 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# FIRST AUTHOR , 2015. +# Ioseph Kim , 2015. # msgid "" msgstr "" -"Project-Id-Version: pg_rewind (PostgreSQL) 9.5\n" +"Project-Id-Version: pg_rewind (PostgreSQL) 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2015-12-25 23:16+0900\n" -"PO-Revision-Date: 2015-12-27 23:49+0900\n" +"POT-Creation-Date: 2016-09-26 14:02+0900\n" +"PO-Revision-Date: 2016-09-26 18:50+0900\n" "Last-Translator: Ioseph Kim \n" "Language-Team: Korean \n" "Language: ko\n" @@ -112,7 +112,7 @@ msgstr "\"%s\" ì›ë³¸ 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s\n" msgid "could not seek in source file: %s\n" msgstr "ì›ë³¸ 파ì¼ì—서 seek ìž‘ì—…ì„ í•  수 ì—†ìŒ: %s\n" -#: copy_fetch.c:192 file_ops.c:301 +#: copy_fetch.c:192 file_ops.c:300 #, c-format msgid "could not read file \"%s\": %s\n" msgstr "\"%s\" 파ì¼ì„ ì½ì„ 수 ì—†ìŒ: %s\n" @@ -127,6 +127,11 @@ msgstr "\"%s\" 파ì¼ì„ ì½ëŠ” 중 예ìƒì¹˜ 못한 EOF\n" msgid "could not close file \"%s\": %s\n" msgstr "\"%s\" 파ì¼ì„ ë‹«ì„ ìˆ˜ ì—†ìŒ: %s\n" +#: datapagemap.c:124 +#, c-format +msgid " block %u\n" +msgstr " ë¸”ë¡ %u\n" + #: file_ops.c:64 #, c-format msgid "could not open target file \"%s\": %s\n" @@ -137,57 +142,57 @@ msgstr "\"%s\" ëŒ€ìƒ íŒŒì¼ì„ ì—´ 수 ì—†ìŒ: %s\n" msgid "could not close target file \"%s\": %s\n" msgstr "\"%s\" ëŒ€ìƒ íŒŒì¼ì„ ë‹«ì„ ìˆ˜ ì—†ìŒ: %s\n" -#: file_ops.c:99 +#: file_ops.c:98 #, c-format msgid "could not seek in target file \"%s\": %s\n" msgstr "\"%s\" ëŒ€ìƒ íŒŒì¼ì—서 seek ìž‘ì—…ì„ í•  수 ì—†ìŒ: %s\n" -#: file_ops.c:115 +#: file_ops.c:114 #, c-format msgid "could not write file \"%s\": %s\n" msgstr "\"%s\" íŒŒì¼ ì“°ê¸° 실패: %s\n" -#: file_ops.c:165 +#: file_ops.c:164 #, c-format msgid "invalid action (CREATE) for regular file\n" msgstr "ì¼ë°˜ 파ì¼ì— 대한 잘못 ëœ ìž‘ì—… (CREATE)\n" -#: file_ops.c:180 +#: file_ops.c:179 #, c-format msgid "could not remove file \"%s\": %s\n" msgstr "\"%s\" 파ì¼ì„ 삭제할 수 ì—†ìŒ: %s\n" -#: file_ops.c:197 +#: file_ops.c:196 #, c-format msgid "could not open file \"%s\" for truncation: %s\n" msgstr "íŠ¸ëž™ìž­ì…˜ì„ ìœ„í•œ \"%s\" 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s\n" -#: file_ops.c:201 +#: file_ops.c:200 #, c-format msgid "could not truncate file \"%s\" to %u: %s\n" msgstr "\"%s\" 파ì¼ì„ %u í¬ê¸°ë¡œ 정리할 수 ì—†ìŒ: %s\n" -#: file_ops.c:217 +#: file_ops.c:216 #, c-format msgid "could not create directory \"%s\": %s\n" msgstr "\"%s\" 디렉터리를 만들 수 ì—†ìŒ: %s\n" -#: file_ops.c:231 +#: file_ops.c:230 #, c-format msgid "could not remove directory \"%s\": %s\n" msgstr "\"%s\" 디렉터리를 ì‚­ì œ í•  수 ì—†ìŒ: %s\n" -#: file_ops.c:245 +#: file_ops.c:244 #, c-format msgid "could not create symbolic link at \"%s\": %s\n" msgstr "\"%s\"ì— ëŒ€í•œ 심볼릭 ë§í¬ë¥¼ 만들 수 ì—†ìŒ: %s\n" -#: file_ops.c:259 +#: file_ops.c:258 #, c-format msgid "could not remove symbolic link \"%s\": %s\n" msgstr "\"%s\" 심볼릭 ë§í¬ë¥¼ ì‚­ì œ í•  수 ì—†ìŒ: %s\n" -#: file_ops.c:289 file_ops.c:293 +#: file_ops.c:288 file_ops.c:292 #, c-format msgid "could not open file \"%s\" for reading: %s\n" msgstr "ì½ê¸°ë¥¼ 위한 \"%s\" 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s\n" @@ -222,6 +227,12 @@ msgstr "ì›ë³¸ íŒŒì¼ ëª©ë¡ì´ 비었ìŒ\n" msgid "unexpected page modification for directory or symbolic link \"%s\"\n" msgstr "ë””í…터리나 심볼릭 ë§í¬ \"%s\" ì˜ íŽ˜ì´ì§€ 변경 ì •ë³´ê°€ 잘못 ë¨\n" +#. translator: first %s is a file path, second is a keyword such as COPY +#: filemap.c:537 +#, c-format +msgid "%s (%s)\n" +msgstr "%s (%s)\n" + #: libpq_fetch.c:55 #, c-format msgid "could not connect to server: %s" @@ -392,22 +403,22 @@ msgstr "%X/%X 위치ì—서 ì´ì „ WAL 레코드를 ì°¾ì„ ìˆ˜ ì—†ìŒ: %s\n" msgid "could not find previous WAL record at %X/%X\n" msgstr "%X/%X 위치ì—서 ì´ì „ WAL 레코드를 ì°¾ì„ ìˆ˜ ì—†ìŒ\n" -#: parsexlog.c:268 +#: parsexlog.c:283 #, c-format msgid "could not open file \"%s\": %s\n" msgstr "\"%s\" 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s\n" -#: parsexlog.c:282 +#: parsexlog.c:297 #, c-format msgid "could not seek in file \"%s\": %s\n" msgstr "\"%s\" 파ì¼ì˜ seek ìž‘ì—…ì„ í•  수 ì—†ìŒ: %s\n" -#: parsexlog.c:289 +#: parsexlog.c:304 #, c-format msgid "could not read from file \"%s\": %s\n" msgstr "\"%s\" 파ì¼ì„ ì½ì„ 수 ì—†ìŒ: %s\n" -#: parsexlog.c:357 +#: parsexlog.c:372 #, c-format msgid "" "WAL record modifies a relation, but record type is not recognized\n" @@ -416,7 +427,7 @@ msgstr "" "WAL 레코드가 릴레ì´ì…˜ì„ 변경하려고 하지만, 레코드 형태가 올바르지 않ìŒ\n" "lsn: %X/%X, rmgr: %s, info: %02X\n" -#: pg_rewind.c:59 +#: pg_rewind.c:64 #, c-format msgid "" "%s resynchronizes a PostgreSQL cluster with another copy of the cluster.\n" @@ -426,7 +437,7 @@ msgstr "" "니다.\n" "\n" -#: pg_rewind.c:60 +#: pg_rewind.c:65 #, c-format msgid "" "Usage:\n" @@ -437,54 +448,54 @@ msgstr "" " %s [옵션]...\n" "\n" -#: pg_rewind.c:61 +#: pg_rewind.c:66 #, c-format msgid "Options:\n" msgstr "옵션들:\n" -#: pg_rewind.c:62 +#: pg_rewind.c:67 #, c-format msgid " -D, --target-pgdata=DIRECTORY existing data directory to modify\n" msgstr " -D, --target-pgdata=디렉터리 변경하려는 ë°ì´í„° 디렉터리\n" -#: pg_rewind.c:63 +#: pg_rewind.c:68 #, c-format msgid "" " --source-pgdata=DIRECTORY source data directory to synchronize with\n" msgstr " --source-pgdata=디렉터리 ë™ê¸°í™” ì›ë³¸ì´ ë˜ëŠ” ë°ì´í„° 디렉터리\n" -#: pg_rewind.c:64 +#: pg_rewind.c:69 #, c-format msgid " --source-server=CONNSTR source server to synchronize with\n" msgstr " --source-server=연결문ìžì—´ ì›ë³¸ 서버 ì ‘ì† ì •ë³´\n" -#: pg_rewind.c:65 +#: pg_rewind.c:70 #, c-format msgid " -n, --dry-run stop before modifying anything\n" msgstr " -n, --dry-run 변경 작업 ì „ì— ë©ˆì¶¤(검사, 확ì¸ìš©)\n" -#: pg_rewind.c:66 +#: pg_rewind.c:71 #, c-format msgid " -P, --progress write progress messages\n" msgstr " -P, --progress ì§„í–‰ 과정 메시지를 보여줌\n" -#: pg_rewind.c:67 +#: pg_rewind.c:72 #, c-format msgid " --debug write a lot of debug messages\n" msgstr " --debug 디버그 메시지를 보여줌\n" -#: pg_rewind.c:68 +#: pg_rewind.c:73 #, c-format msgid "" " -V, --version output version information, then exit\n" msgstr " -V, --version 버전 정보를 보여주고 마침\n" -#: pg_rewind.c:69 +#: pg_rewind.c:74 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help ì´ ë„움ë§ì„ 보여주고 마침\n" -#: pg_rewind.c:70 +#: pg_rewind.c:75 #, c-format msgid "" "\n" @@ -493,80 +504,80 @@ msgstr "" "\n" "오류보고: .\n" -#: pg_rewind.c:125 pg_rewind.c:156 pg_rewind.c:163 pg_rewind.c:171 +#: pg_rewind.c:130 pg_rewind.c:161 pg_rewind.c:168 pg_rewind.c:176 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "ìžì œí•œ ì‚¬í•­ì€ \"%s --help\" 명령으로 살펴보십시오.\n" -#: pg_rewind.c:155 +#: pg_rewind.c:160 #, c-format msgid "%s: no source specified (--source-pgdata or --source-server)\n" msgstr "" "%s: ì›ë³¸ì„ 지정하지 ì•Šì•˜ìŒ (--source-pgdata ë˜ëŠ” --source-server ì˜µì…˜ì„ ì§€ì • " "해야 함)\n" -#: pg_rewind.c:162 +#: pg_rewind.c:167 #, c-format msgid "%s: no target data directory specified (--target-pgdata)\n" msgstr "" "%s: ëŒ€ìƒ ë°ì´í„° 디렉토리가 지정ë˜ì§€ ì•Šì•˜ìŒ (--target-pgdata 옵션 사용)\n" -#: pg_rewind.c:169 +#: pg_rewind.c:174 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: 너무 ë§Žì€ ëª…ë ¹í–‰ ì¸ìˆ˜ë¥¼ 지정했습니다. (ì²˜ìŒ \"%s\")\n" -#: pg_rewind.c:184 +#: pg_rewind.c:189 #, c-format msgid "cannot be executed by \"root\"\n" msgstr "\"root\" 계정으로는 실행 í•  수 ì—†ìŒ\n" -#: pg_rewind.c:185 +#: pg_rewind.c:190 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" msgstr "PostgreSQL superuser로 %s í”„ë¡œê·¸ëž¨ì„ ì‹¤í–‰í•˜ì‹­ì‹œì˜¤.\n" -#: pg_rewind.c:216 +#: pg_rewind.c:221 #, c-format msgid "source and target cluster are on the same timeline\n" msgstr "ì›ë³¸ê³¼ ëŒ€ìƒ í´ëŸ¬ìŠ¤í„°ì˜ íƒ€ìž„ë¼ì¸ì´ ê°™ìŒ\n" -#: pg_rewind.c:222 +#: pg_rewind.c:227 #, c-format msgid "servers diverged at WAL position %X/%X on timeline %u\n" msgstr "서버 분기 위치: %X/%X, 타임ë¼ì¸ %u\n" -#: pg_rewind.c:258 +#: pg_rewind.c:264 #, c-format msgid "no rewind required\n" msgstr "ë˜ê°ì„ í•„ìš” ì—†ìŒ\n" -#: pg_rewind.c:264 +#: pg_rewind.c:271 #, c-format msgid "rewinding from last common checkpoint at %X/%X on timeline %u\n" msgstr "재ë™ê¸°í™” 시작함, 마지막 ì²´í¬í¬ì¸íЏ 위치 %X/%X, 타임ë¼ì¸ %u\n" -#: pg_rewind.c:272 +#: pg_rewind.c:279 #, c-format msgid "reading source file list\n" msgstr "ì›ë³¸ íŒŒì¼ ëª©ë¡ ì½ëŠ” 중\n" -#: pg_rewind.c:274 +#: pg_rewind.c:281 #, c-format msgid "reading target file list\n" msgstr "ëŒ€ìƒ íŒŒì¼ ëª©ë¡ ì½ëŠ” 중\n" -#: pg_rewind.c:284 +#: pg_rewind.c:291 #, c-format msgid "reading WAL in target\n" msgstr "ëŒ€ìƒ ì„œë²„ì—서 WAL ì½ëŠ” 중\n" -#: pg_rewind.c:301 +#: pg_rewind.c:308 #, c-format msgid "need to copy %lu MB (total source directory size is %lu MB)\n" msgstr "복사를 위해서 %lu MB 필요함 (ì›ë³¸ 디렉토리 ì „ì²´ í¬ê¸°ëŠ” %lu MB)\n" -#: pg_rewind.c:318 +#: pg_rewind.c:325 #, c-format msgid "" "\n" @@ -575,22 +586,27 @@ msgstr "" "\n" "백업 ë¼ë²¨ì„ 만들고, 컨트롤 파ì¼ì„ 갱신 중\n" -#: pg_rewind.c:346 +#: pg_rewind.c:353 +#, c-format +msgid "syncing target data directory\n" +msgstr "ëŒ€ìƒ ë°ì´í„° 디렉터리 ë™ê¸°í™” 중\n" + +#: pg_rewind.c:356 #, c-format msgid "Done!\n" msgstr "완료!\n" -#: pg_rewind.c:358 +#: pg_rewind.c:368 #, c-format msgid "source and target clusters are from different systems\n" msgstr "ì›ë³¸ê³¼ ëŒ€ìƒ í´ëŸ¬ìŠ¤í„°ì˜ ë°ì´í„° í´ëŸ¬ìŠ¤í„°ì˜ ì‹ë³„ 번호가 다름\n" -#: pg_rewind.c:366 +#: pg_rewind.c:376 #, c-format msgid "clusters are not compatible with this version of pg_rewind\n" msgstr "해당 í´ëŸ¬ìŠ¤í„°ëŠ” ì´ pg_rewind 버전으로 작업할 수 ì—†ìŒ\n" -#: pg_rewind.c:376 +#: pg_rewind.c:386 #, c-format msgid "" "target server needs to use either data checksums or \"wal_log_hints = on\"\n" @@ -598,37 +614,85 @@ msgstr "" "ëŒ€ìƒ ì„œë²„ì˜ ë°ì´í„° í´ëŸ¬ìŠ¤í„°ê°€ ë°ì´í„° ì²´í¬ì„¬ ê¸°ëŠ¥ì„ ì¼°ê±°ë‚˜, \"wal_log_hints " "= on\" ì„¤ì •ì´ ë˜ì–´ì•¼ 함\n" -#: pg_rewind.c:387 +#: pg_rewind.c:397 #, c-format msgid "target server must be shut down cleanly\n" msgstr "ëŒ€ìƒ ì„œë²„ëŠ” ì •ìƒ ì¢…ë£Œë˜ì–´ì•¼ 함\n" -#: pg_rewind.c:397 +#: pg_rewind.c:407 #, c-format msgid "source data directory must be shut down cleanly\n" msgstr "ì›ë³¸ ë°ì´í„° 디렉토리는 ì •ìƒì ìœ¼ë¡œ 종료ë˜ì–´ì•¼ 함\n" -#: pg_rewind.c:464 +#: pg_rewind.c:462 +#, c-format +msgid "invalid control file" +msgstr "ìž˜ëª»ëœ ì»¨íŠ¸ë¡¤ 파ì¼" + +#: pg_rewind.c:473 +#, c-format +msgid "Source timeline history:\n" +msgstr "ì›ë³¸ 타임ë¼ì¸ ë‚´ì—­:\n" + +#: pg_rewind.c:475 +#, c-format +msgid "Target timeline history:\n" +msgstr "ëŒ€ìƒ íƒ€ìž„ë¼ì¸ ë‚´ì—­:\n" + +#. translator: %d is a timeline number, others are LSN positions +#: pg_rewind.c:489 +#, c-format +msgid "%d: %X/%X - %X/%X\n" +msgstr "%d: %X/%X - %X/%X\n" + +#: pg_rewind.c:548 #, c-format msgid "" "could not find common ancestor of the source and target cluster's timelines\n" msgstr "ì›ë³¸ê³¼ ëŒ€ìƒ ì„œë²„ì˜ ê³µí†µëœ ìƒìœ„ 타임ë¼ì¸ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ\n" -#: pg_rewind.c:504 +#: pg_rewind.c:589 #, c-format msgid "backup label buffer too small\n" msgstr "백업 ë¼ë²¨ 버í¼ê°€ 너무 ìž‘ìŒ\n" -#: pg_rewind.c:526 +#: pg_rewind.c:612 #, c-format msgid "unexpected control file CRC\n" msgstr "컨트롤 íŒŒì¼ CRC 오류\n" -#: pg_rewind.c:536 +#: pg_rewind.c:622 #, c-format msgid "unexpected control file size %d, expected %d\n" msgstr "컨트롤 파ì¼ì˜ í¬ê¸°ê°€ %d 로 비정ìƒ, ì •ìƒê°’ %d\n" +#: pg_rewind.c:689 +#, c-format +msgid "" +"The program \"initdb\" is needed by %s but was\n" +"not found in the same directory as \"%s\".\n" +"Check your installation.\n" +msgstr "" +"%s í”„ë¡œê·¸ëž¨ì€ \"initdb\" í”„ë¡œê·¸ëž¨ì´ í•„ìš”í•˜ì§€ë§Œ\n" +"\"%s\" 디렉터리 ì•ˆì— ì—†ìŠµë‹ˆë‹¤.\n" +"설치 ìƒíƒœë¥¼ 확ì¸í•´ 주십시오.\n" + +#: pg_rewind.c:693 +#, c-format +msgid "" +"The program \"initdb\" was found by \"%s\"\n" +"but was not the same version as %s.\n" +"Check your installation.\n" +msgstr "" +"\"%s\" í”„ë¡œê·¸ëž¨ì€ \"initdb\" í”„ë¡œê·¸ëž¨ì´ í•„ìš”í•´ì„œ 찾았지만 ì´ íŒŒì¼ì€\n" +"%s 버전과 같지 않습니다.\n" +"설치 ìƒíƒœë¥¼ 확ì¸í•´ 주십시오.\n" + +#: pg_rewind.c:711 +#, c-format +msgid "sync of target directory failed\n" +msgstr "ëŒ€ìƒ ë””ë ‰í„°ë¦¬ ë™ê¸°í™” 실패\n" + #: timeline.c:76 timeline.c:82 #, c-format msgid "syntax error in history file: %s\n" @@ -664,62 +728,62 @@ msgstr "ë‚´ì—­ 파ì¼ì— ìž˜ëª»ëœ ìžë£Œê°€ 있ìŒ\n" msgid "Timeline IDs must be less than child timeline's ID.\n" msgstr "타임ë¼ì¸ ID는 하위 타임ë¼ì¸ ID보다 ì ì–´ì•¼ 함\n" -#: xlogreader.c:264 +#: xlogreader.c:276 #, c-format msgid "invalid record offset at %X/%X" msgstr "ìž˜ëª»ëœ ë ˆì½”ë“œ 위치: %X/%X" -#: xlogreader.c:272 +#: xlogreader.c:284 #, c-format msgid "contrecord is requested by %X/%X" msgstr "%X/%Xì—서 contrecord를 필요로 함" -#: xlogreader.c:312 xlogreader.c:603 +#: xlogreader.c:325 xlogreader.c:624 #, c-format -msgid "invalid record length at %X/%X" -msgstr "ìž˜ëª»ëœ ë ˆì½”ë“œ 길ì´: %X/%X" +msgid "invalid record length at %X/%X: wanted %u, got %u" +msgstr "ìž˜ëª»ëœ ë ˆì½”ë“œ 길ì´: %X/%X, 기대값 %u, 실재값 %u" -#: xlogreader.c:326 +#: xlogreader.c:340 #, c-format msgid "record length %u at %X/%X too long" msgstr "너무 긴 길ì´(%u)ì˜ ë ˆì½”ë“œê°€ %X/%Xì— ìžˆìŒ" -#: xlogreader.c:367 +#: xlogreader.c:381 #, c-format msgid "there is no contrecord flag at %X/%X" msgstr "%X/%X ìœ„ì¹˜ì— contrecord 플래그가 ì—†ìŒ" -#: xlogreader.c:380 +#: xlogreader.c:394 #, c-format msgid "invalid contrecord length %u at %X/%X" msgstr "ìž˜ëª»ëœ contrecord ê¸¸ì´ %u, 위치 %X/%X" -#: xlogreader.c:610 +#: xlogreader.c:632 #, c-format msgid "invalid resource manager ID %u at %X/%X" msgstr "ìž˜ëª»ëœ ìžì› 관리 ID %u, 위치: %X/%X" -#: xlogreader.c:624 xlogreader.c:641 +#: xlogreader.c:646 xlogreader.c:663 #, c-format msgid "record with incorrect prev-link %X/%X at %X/%X" msgstr "ë ˆì½”ë“œì˜ ìž˜ëª»ëœ í”„ë¦¬ë§í¬ %X/%X, 해당 레코드 %X/%X" -#: xlogreader.c:678 +#: xlogreader.c:700 #, c-format msgid "incorrect resource manager data checksum in record at %X/%X" msgstr "ìž˜ëª»ëœ ìžì›ê´€ë¦¬ìž ë°ì´í„° ì²´í¬ì„¬, 위치: %X/%X 레코드" -#: xlogreader.c:711 +#: xlogreader.c:733 #, c-format msgid "invalid magic number %04X in log segment %s, offset %u" msgstr "%04X ë§¤ì§ ë²ˆí˜¸ê°€ 잘못ë¨, 로그 íŒŒì¼ %s, 위치 %u" -#: xlogreader.c:725 xlogreader.c:776 +#: xlogreader.c:747 xlogreader.c:798 #, c-format msgid "invalid info bits %04X in log segment %s, offset %u" msgstr "ìž˜ëª»ëœ ì •ë³´ 비트 %04X, 로그 íŒŒì¼ %s, 위치 %u" -#: xlogreader.c:751 +#: xlogreader.c:773 #, c-format msgid "" "WAL file is from different database system: WAL file database system " @@ -728,7 +792,7 @@ msgstr "" "WAL 파ì¼ì´ 다른 ì‹œìŠ¤í…œì˜ ê²ƒìž…ë‹ˆë‹¤. WAL 파ì¼ì˜ 시스템 ì‹ë³„ìžëŠ” %s, pg_control " "ì˜ ì‹ë³„ìžëŠ” %s" -#: xlogreader.c:758 +#: xlogreader.c:780 #, c-format msgid "" "WAL file is from different database system: incorrect XLOG_SEG_SIZE in page " @@ -737,7 +801,7 @@ msgstr "" "WAL 파ì¼ì´ 다른 ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì˜ ê²ƒìž…ë‹ˆë‹¤: 페ì´ì§€ í—¤ë”ì˜ XLOG_SEG_SIZE " "ê°’ì´ ë°”ë¥´ì§€ 않ìŒ" -#: xlogreader.c:764 +#: xlogreader.c:786 #, c-format msgid "" "WAL file is from different database system: incorrect XLOG_BLCKSZ in page " @@ -746,71 +810,73 @@ msgstr "" "WAL 파ì¼ì´ 다른 ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì˜ ê²ƒìž…ë‹ˆë‹¤: 페ì´ì§€ í—¤ë”ì˜ XLOG_BLCKSZ ê°’" "ì´ ë°”ë¥´ì§€ 않ìŒ" -#: xlogreader.c:790 +#: xlogreader.c:812 #, c-format msgid "unexpected pageaddr %X/%X in log segment %s, offset %u" msgstr "ìž˜ëª»ëœ íŽ˜ì´ì§€ 주소 %X/%X, 로그 íŒŒì¼ %s, 위치 %u" -#: xlogreader.c:815 +#: xlogreader.c:837 #, c-format msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u" msgstr "타임ë¼ì¸ 범위 벗어남 %u (ì´ì „ 번호 %u), 로그 íŒŒì¼ %s, 위치 %u" -#: xlogreader.c:1024 +#: xlogreader.c:1081 #, c-format msgid "out-of-order block_id %u at %X/%X" msgstr "%u block_id는 범위를 벗어남, 위치 %X/%X" -#: xlogreader.c:1046 +#: xlogreader.c:1103 #, c-format msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" msgstr "BKPBLOCK_HAS_DATA 지정했지만, %X/%X ì— ìžë£Œê°€ ì—†ìŒ" -#: xlogreader.c:1053 +#: xlogreader.c:1110 #, c-format msgid "BKPBLOCK_HAS_DATA not set, but data length is %u at %X/%X" msgstr "BKPBLOCK_HAS_DATA 지정 않았지만, %u 길ì´ì˜ ìžë£Œê°€ 있ìŒ, 위치 %X/%X" -#: xlogreader.c:1086 +#: xlogreader.c:1143 #, c-format msgid "" "BKPIMAGE_HAS_HOLE set, but hole offset %u length %u block image length %u at " "%X/%X" -msgstr "" +msgstr "BKPIMAGE_HAS_HOLE ì„¤ì •ì´ ë˜ì–´ 있지만, 옵셋: %u, 길ì´: %u, " +"ë¸”ë¡ ì´ë¯¸ì§€ 길ì´: %u, 대ìƒ: %X/%X" -#: xlogreader.c:1102 +#: xlogreader.c:1159 #, c-format msgid "BKPIMAGE_HAS_HOLE not set, but hole offset %u length %u at %X/%X" -msgstr "" +msgstr "BKPIMAGE_HAS_HOLE ì„¤ì •ì´ ì•ˆë˜ì–´ 있지만, 옵셋: %u, 길ì´: %u, 대ìƒ: %X/%X" -#: xlogreader.c:1117 +#: xlogreader.c:1174 #, c-format msgid "BKPIMAGE_IS_COMPRESSED set, but block image length %u at %X/%X" -msgstr "" +msgstr "BKPIMAGE_IS_COMPRESSED ì„¤ì •ì´ ë˜ì–´ 있지만, ë¸”ë¡ ì´ë¯¸ì§€ 길ì´: %u, 대ìƒ: %X/%X" -#: xlogreader.c:1132 +#: xlogreader.c:1189 #, c-format msgid "" "neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_IS_COMPRESSED set, but block image " "length is %u at %X/%X" -msgstr "" +msgstr "BKPIMAGE_HAS_HOLE, BKPIMAGE_IS_COMPRESSED 지정 안ë˜ì–´ 있으나, ë¸”ë¡ " +"ì´ë¯¸ì§€ 길ì´ëŠ” %u, 대ìƒ: %X/%X" -#: xlogreader.c:1148 +#: xlogreader.c:1205 #, c-format msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" -msgstr "" +msgstr "BKPBLOCK_SAME_REL ì„¤ì •ì´ ë˜ì–´ 있지만, %X/%X ì— ì´ì „ 릴레ì´ì…˜ ì—†ìŒ" -#: xlogreader.c:1160 +#: xlogreader.c:1217 #, c-format msgid "invalid block_id %u at %X/%X" msgstr "ìž˜ëª»ëœ block_id %u, 위치 %X/%X" -#: xlogreader.c:1225 +#: xlogreader.c:1282 #, c-format msgid "record with invalid length at %X/%X" msgstr "ìž˜ëª»ëœ ë ˆì½”ë“œ 길ì´, 위치 %X/%X" -#: xlogreader.c:1314 +#: xlogreader.c:1371 #, c-format msgid "invalid compressed image at %X/%X, block %d" msgstr "ìž˜ëª»ëœ ì••ì¶• ì´ë¯¸ì§€, 위치 %X/%X, ë¸”ë¡ %d" diff --git a/src/bin/pg_rewind/po/pt_BR.po b/src/bin/pg_rewind/po/pt_BR.po index 18ad37e9cb..00f3f81129 100644 --- a/src/bin/pg_rewind/po/pt_BR.po +++ b/src/bin/pg_rewind/po/pt_BR.po @@ -1,13 +1,13 @@ # Brazilian Portuguese message translation file for pg_rewind # Copyright (C) 2016 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Euler Taveira de Oliveira , 2016. +# Euler Taveira de Oliveira , 2016-2017. # msgid "" msgstr "" "Project-Id-Version: pg_rewind (PostgreSQL) 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-08-10 00:16-0300\n" +"POT-Creation-Date: 2017-08-06 01:59-0300\n" "PO-Revision-Date: 2015-10-04 16:36-0300\n" "Last-Translator: Euler Taveira de Oliveira \n" "Language-Team: Brazilian Portuguese \n" @@ -230,142 +230,147 @@ msgstr "modificação de página inesperada em diretório ou link simbólico \"% msgid "%s (%s)\n" msgstr "%s (%s)\n" -#: libpq_fetch.c:55 +#: libpq_fetch.c:56 #, c-format msgid "could not connect to server: %s" msgstr "não pôde conectar ao servidor: %s" -#: libpq_fetch.c:58 +#: libpq_fetch.c:59 #, c-format msgid "connected to server\n" msgstr "conectado ao servidor\n" -#: libpq_fetch.c:68 +#: libpq_fetch.c:69 #, c-format msgid "source server must not be in recovery mode\n" msgstr "servidor de origem não deve estar em modo de recuperação\n" -#: libpq_fetch.c:78 +#: libpq_fetch.c:79 #, c-format msgid "full_page_writes must be enabled in the source server\n" msgstr "full_page_writes deve estar habilitado no servidor de origem\n" -#: libpq_fetch.c:95 +#: libpq_fetch.c:91 +#, c-format +msgid "could not set up connection context: %s" +msgstr "não pôde configurar contexto de conexão: %s" + +#: libpq_fetch.c:109 #, c-format msgid "error running query (%s) in source server: %s" msgstr "erro ao executar consulta (%s) no servidor de origem: %s" -#: libpq_fetch.c:100 +#: libpq_fetch.c:114 #, c-format msgid "unexpected result set from query\n" msgstr "conjunto de resultados inesperado da consulta\n" -#: libpq_fetch.c:123 +#: libpq_fetch.c:137 #, c-format msgid "unrecognized result \"%s\" for current WAL insert location\n" msgstr "resultado desconhecido \"%s\" para local de inserção atual no WAL\n" -#: libpq_fetch.c:173 +#: libpq_fetch.c:187 #, c-format msgid "could not fetch file list: %s" msgstr "não pôde obter lista de arquivos: %s" -#: libpq_fetch.c:178 +#: libpq_fetch.c:192 #, c-format msgid "unexpected result set while fetching file list\n" msgstr "conjunto de resultados inesperado ao obter lista de arquivos\n" -#: libpq_fetch.c:226 +#: libpq_fetch.c:262 #, c-format msgid "could not send query: %s" msgstr "não pôde enviar consulta: %s" -#: libpq_fetch.c:228 +#: libpq_fetch.c:264 #, c-format msgid "getting file chunks\n" msgstr "obtendo blocos do arquivo\n" -#: libpq_fetch.c:231 +#: libpq_fetch.c:267 #, c-format msgid "could not set libpq connection to single row mode\n" msgstr "não pôde definir conexão libpq para modo de registro único\n" -#: libpq_fetch.c:251 +#: libpq_fetch.c:287 #, c-format msgid "unexpected result while fetching remote files: %s" msgstr "resultado inesperado ao obter arquivos remotos: %s" -#: libpq_fetch.c:257 +#: libpq_fetch.c:293 #, c-format msgid "unexpected result set size while fetching remote files\n" msgstr "tamanho do conjunto de resultados inesperado ao obter arquivos remotos\n" -#: libpq_fetch.c:263 +#: libpq_fetch.c:299 #, c-format msgid "unexpected data types in result set while fetching remote files: %u %u %u\n" msgstr "tipos de daos inesperados no conjunto de resultados ao obter arquivos remotos: %u %u %u\n" -#: libpq_fetch.c:271 +#: libpq_fetch.c:307 #, c-format msgid "unexpected result format while fetching remote files\n" msgstr "formato de resultado inesperado ao obter arquivos remotos\n" -#: libpq_fetch.c:277 +#: libpq_fetch.c:313 #, c-format msgid "unexpected null values in result while fetching remote files\n" msgstr "valores nulos inesperados em resultado ao obter arquivos remotos\n" -#: libpq_fetch.c:281 +#: libpq_fetch.c:317 #, c-format msgid "unexpected result length while fetching remote files\n" msgstr "tamanho de resultado inesperado ao obter arquivos remotos\n" -#: libpq_fetch.c:303 +#: libpq_fetch.c:339 #, c-format msgid "received null value for chunk for file \"%s\", file has been deleted\n" msgstr "valor nulo recebido para bloco do arquivo \"%s\", arquivo foi removido\n" -#: libpq_fetch.c:310 +#: libpq_fetch.c:346 #, c-format -msgid "received chunk for file \"%s\", offset %d, size %d\n" -msgstr "bloco recebido para arquivo \"%s\", posição %d, tamanho %d\n" +msgid "received chunk for file \"%s\", offset " +msgstr "bloco recebido para arquivo \"%s\", posição " -#: libpq_fetch.c:339 +#: libpq_fetch.c:375 #, c-format msgid "could not fetch remote file \"%s\": %s" msgstr "não pôde obter arquivo remoto \"%s\": %s" -#: libpq_fetch.c:344 +#: libpq_fetch.c:380 #, c-format msgid "unexpected result set while fetching remote file \"%s\"\n" msgstr "conjunto de resultados inesperado ao obter arquivo remoto \"%s\"\n" -#: libpq_fetch.c:355 +#: libpq_fetch.c:391 #, c-format msgid "fetched file \"%s\", length %d\n" msgstr "arquivo \"%s\" obtido, tamanho %d\n" -#: libpq_fetch.c:387 +#: libpq_fetch.c:424 #, c-format msgid "could not send COPY data: %s" msgstr "não pôde enviar dados do COPY: %s" -#: libpq_fetch.c:413 +#: libpq_fetch.c:450 #, c-format msgid "could not create temporary table: %s" msgstr "não pôde criar tabela temporária: %s" -#: libpq_fetch.c:421 +#: libpq_fetch.c:458 #, c-format msgid "could not send file list: %s" msgstr "não pôde enviar lista de arquivos: %s" -#: libpq_fetch.c:463 +#: libpq_fetch.c:500 #, c-format msgid "could not send end-of-COPY: %s" msgstr "não pôde enviar fim do COPY: %s" -#: libpq_fetch.c:469 +#: libpq_fetch.c:506 #, c-format msgid "unexpected result while sending file list: %s" msgstr "resultado inesperado ao enviar lista de arquivos: %s" @@ -495,7 +500,8 @@ msgstr "" "\n" "Relate erros a .\n" -#: pg_rewind.c:130 pg_rewind.c:161 pg_rewind.c:168 pg_rewind.c:176 +#: pg_rewind.c:130 pg_rewind.c:161 pg_rewind.c:168 pg_rewind.c:175 +#: pg_rewind.c:183 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Tente \"%s --help\" para obter informações adicionais.\n" @@ -507,65 +513,70 @@ msgstr "%s: nenhuma origem especificada (--source-pgdata ou --source-server)\n" #: pg_rewind.c:167 #, c-format +msgid "%s: only one of --source-pgdata or --source-server can be specified\n" +msgstr "%s: somente uma das opções --source-pgdata ou --source-server pode ser especificada\n" + +#: pg_rewind.c:174 +#, c-format msgid "%s: no target data directory specified (--target-pgdata)\n" msgstr "%s: nenhum diretório de dados de destino especificado (--target-pgdata)\n" -#: pg_rewind.c:174 +#: pg_rewind.c:181 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: muitos argumentos de linha de comando (primeiro é \"%s\")\n" -#: pg_rewind.c:189 +#: pg_rewind.c:196 #, c-format msgid "cannot be executed by \"root\"\n" msgstr "não pode ser executado pelo \"root\"\n" -#: pg_rewind.c:190 +#: pg_rewind.c:197 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" msgstr "Você deve executar %s como um super-usuário do PostgreSQL.\n" -#: pg_rewind.c:221 +#: pg_rewind.c:228 #, c-format msgid "source and target cluster are on the same timeline\n" msgstr "agrupamentos de origem e destino estão na mesma linha do tempo\n" -#: pg_rewind.c:227 +#: pg_rewind.c:234 #, c-format msgid "servers diverged at WAL position %X/%X on timeline %u\n" msgstr "servidores divergem na posição do WAL %X/%X na linha do tempo %u\n" -#: pg_rewind.c:264 +#: pg_rewind.c:271 #, c-format msgid "no rewind required\n" msgstr "nenhuma sincronização é necessária\n" -#: pg_rewind.c:271 +#: pg_rewind.c:278 #, c-format msgid "rewinding from last common checkpoint at %X/%X on timeline %u\n" msgstr "sincronizando a partir do último ponto de controle em comum em %X/%X na linha do tempo %u\n" -#: pg_rewind.c:279 +#: pg_rewind.c:286 #, c-format msgid "reading source file list\n" msgstr "lendo lista de arquivos da origem\n" -#: pg_rewind.c:281 +#: pg_rewind.c:288 #, c-format msgid "reading target file list\n" msgstr "lendo lista de arquivos do destino\n" -#: pg_rewind.c:291 +#: pg_rewind.c:298 #, c-format msgid "reading WAL in target\n" msgstr "lendo WAL no destino\n" -#: pg_rewind.c:308 +#: pg_rewind.c:315 #, c-format msgid "need to copy %lu MB (total source directory size is %lu MB)\n" msgstr "precisa copiar %lu MB (tamanho total do diretório de origem é %lu MB)\n" -#: pg_rewind.c:325 +#: pg_rewind.c:332 #, c-format msgid "" "\n" @@ -574,83 +585,83 @@ msgstr "" "\n" "criando rótulo de cópia de segurança e atualizando arquivo de controle\n" -#: pg_rewind.c:353 +#: pg_rewind.c:360 #, c-format msgid "syncing target data directory\n" msgstr "sincronizando diretório de dados de destino\n" -#: pg_rewind.c:356 +#: pg_rewind.c:363 #, c-format msgid "Done!\n" msgstr "Feito!\n" -#: pg_rewind.c:368 +#: pg_rewind.c:375 #, c-format msgid "source and target clusters are from different systems\n" msgstr "agrupamentos de origem e destino são de sistemas diferentes\n" -#: pg_rewind.c:376 +#: pg_rewind.c:383 #, c-format msgid "clusters are not compatible with this version of pg_rewind\n" msgstr "agrupamentos não são compatíveis com esta versão do pg_rewind\n" -#: pg_rewind.c:386 +#: pg_rewind.c:393 #, c-format msgid "target server needs to use either data checksums or \"wal_log_hints = on\"\n" msgstr "servidor de destino precisa utilizar soma de verificação de dados ou \"wal_log_hints = on\"\n" -#: pg_rewind.c:397 +#: pg_rewind.c:404 #, c-format msgid "target server must be shut down cleanly\n" msgstr "servidor de destino deve ser desligado corretamente\n" -#: pg_rewind.c:407 +#: pg_rewind.c:414 #, c-format msgid "source data directory must be shut down cleanly\n" msgstr "diretório de dados de origem deve ser desligado corretamente\n" -#: pg_rewind.c:462 +#: pg_rewind.c:469 #, c-format msgid "invalid control file" msgstr "arquivo de controle inválido" -#: pg_rewind.c:473 +#: pg_rewind.c:480 #, c-format msgid "Source timeline history:\n" msgstr "Histórico da linha do tempo de origem:\n" -#: pg_rewind.c:475 +#: pg_rewind.c:482 #, c-format msgid "Target timeline history:\n" msgstr "Histórico da linha do tempo de destino:\n" #. translator: %d is a timeline number, others are LSN positions -#: pg_rewind.c:489 +#: pg_rewind.c:496 #, c-format msgid "%d: %X/%X - %X/%X\n" msgstr "%d: %X/%X - %X/%X\n" -#: pg_rewind.c:548 +#: pg_rewind.c:555 #, c-format msgid "could not find common ancestor of the source and target cluster's timelines\n" msgstr "não pôde encontrar antecessor comum das linhas do tempo dos agrupamentos de origem e destino\n" -#: pg_rewind.c:589 +#: pg_rewind.c:596 #, c-format msgid "backup label buffer too small\n" msgstr "buffer do rótulo da cópia de segurança é muito pequeno\n" -#: pg_rewind.c:612 +#: pg_rewind.c:619 #, c-format msgid "unexpected control file CRC\n" msgstr "CRC do arquivo de controle inesperado\n" -#: pg_rewind.c:622 +#: pg_rewind.c:629 #, c-format msgid "unexpected control file size %d, expected %d\n" msgstr "tamanho de arquivo de controle inesperado %d, esperado %d\n" -#: pg_rewind.c:689 +#: pg_rewind.c:696 #, c-format msgid "" "The program \"initdb\" is needed by %s but was\n" @@ -661,7 +672,7 @@ msgstr "" "foi encontrado no mesmo diretório que \"%s\".\n" "Verifique sua instalação.\n" -#: pg_rewind.c:693 +#: pg_rewind.c:700 #, c-format msgid "" "The program \"initdb\" was found by \"%s\"\n" @@ -672,7 +683,7 @@ msgstr "" "mas não tem a mesma versão que %s.\n" "Verifique sua instalação.\n" -#: pg_rewind.c:711 +#: pg_rewind.c:718 #, c-format msgid "sync of target directory failed\n" msgstr "sincronia do diretório de destino falhou\n" @@ -792,57 +803,57 @@ msgstr "endereço da página %X/%X inesperado no arquivo de log %s, posição %u msgid "out-of-sequence timeline ID %u (after %u) in log segment %s, offset %u" msgstr "ID de linha do tempo %u fora de sequência (após %u) no arquivo de log %s, posição %u" -#: xlogreader.c:1044 +#: xlogreader.c:1081 #, c-format msgid "out-of-order block_id %u at %X/%X" msgstr "block_id %u fora de ordem em %X/%X" -#: xlogreader.c:1066 +#: xlogreader.c:1103 #, c-format msgid "BKPBLOCK_HAS_DATA set, but no data included at %X/%X" msgstr "BKPBLOCK_HAS_DATA definido mas nenhum dado incluído em %X/%X" -#: xlogreader.c:1073 +#: xlogreader.c:1110 #, c-format msgid "BKPBLOCK_HAS_DATA not set, but data length is %u at %X/%X" msgstr "BKPBLOCK_HAS_DATA não foi definido mas tamanho do dado é %u em %X/%X" -#: xlogreader.c:1106 +#: xlogreader.c:1143 #, c-format msgid "BKPIMAGE_HAS_HOLE set, but hole offset %u length %u block image length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE definido mas posição do espaço livre %u tamanho %u tamanho da imagem do bloco %u em %X/%X" -#: xlogreader.c:1122 +#: xlogreader.c:1159 #, c-format msgid "BKPIMAGE_HAS_HOLE not set, but hole offset %u length %u at %X/%X" msgstr "BKPIMAGE_HAS_HOLE não foi definido mas posição do espaço livre %u tamanho %u em %X/%X" -#: xlogreader.c:1137 +#: xlogreader.c:1174 #, c-format msgid "BKPIMAGE_IS_COMPRESSED set, but block image length %u at %X/%X" msgstr "BKPIMAGE_IS_COMPRESSED definido mas tamanho da imagem do bloco %u em %X/%X" -#: xlogreader.c:1152 +#: xlogreader.c:1189 #, c-format msgid "neither BKPIMAGE_HAS_HOLE nor BKPIMAGE_IS_COMPRESSED set, but block image length is %u at %X/%X" msgstr "nem BKPIMAGE_HAS_HOLE nem BKPIMAGE_IS_COMPRESSED foi definido mas tamanho da imagem do bloco é %u em %X/%X" -#: xlogreader.c:1168 +#: xlogreader.c:1205 #, c-format msgid "BKPBLOCK_SAME_REL set but no previous rel at %X/%X" msgstr "BKPBLOCK_SAME_REL definido mas não há relação anterior em %X/%X" -#: xlogreader.c:1180 +#: xlogreader.c:1217 #, c-format msgid "invalid block_id %u at %X/%X" msgstr "block_id %u é inválido em %X/%X" -#: xlogreader.c:1245 +#: xlogreader.c:1282 #, c-format msgid "record with invalid length at %X/%X" msgstr "registro com tamanho inválido em %X/%X" -#: xlogreader.c:1334 +#: xlogreader.c:1371 #, c-format msgid "invalid compressed image at %X/%X, block %d" msgstr "imagem compactada é inválida em %X/%X, bloco %d" diff --git a/src/bin/pg_rewind/po/ru.po b/src/bin/pg_rewind/po/ru.po index 144e535c0b..fcdcda836d 100644 --- a/src/bin/pg_rewind/po/ru.po +++ b/src/bin/pg_rewind/po/ru.po @@ -1,15 +1,14 @@ # Russian message translation file for pg_rewind # Copyright (C) 2015-2016 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Alexander Lakhin , 2015-2016. +# Alexander Lakhin , 2015-2017. # msgid "" msgstr "" "Project-Id-Version: pg_rewind (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-20 18:14+0000\n" -"PO-Revision-Date: 2016-09-20 12:00+0300\n" -"Last-Translator: Alexander Lakhin \n" +"POT-Creation-Date: 2017-08-17 17:53+0000\n" +"PO-Revision-Date: 2017-08-23 10:02+0300\n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" @@ -17,6 +16,7 @@ msgstr "" "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" +"Last-Translator: Alexander Lakhin \n" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 #: ../../common/fe_memutils.c:98 parsexlog.c:74 parsexlog.c:127 parsexlog.c:179 @@ -238,78 +238,83 @@ msgstr "" msgid "%s (%s)\n" msgstr "%s (%s)\n" -#: libpq_fetch.c:55 +#: libpq_fetch.c:56 #, c-format msgid "could not connect to server: %s" msgstr "не удалоÑÑŒ подключитьÑÑ Ðº Ñерверу: %s" -#: libpq_fetch.c:58 +#: libpq_fetch.c:59 #, c-format msgid "connected to server\n" msgstr "подключение к Ñерверу уÑтановлено\n" -#: libpq_fetch.c:68 +#: libpq_fetch.c:69 #, c-format msgid "source server must not be in recovery mode\n" msgstr "иÑходный Ñервер должен быть в режиме воÑÑтановлениÑ\n" -#: libpq_fetch.c:78 +#: libpq_fetch.c:79 #, c-format msgid "full_page_writes must be enabled in the source server\n" -msgstr "на иÑходном Ñервере должен быть включен режим full_page_writes\n" +msgstr "на иÑходном Ñервере должен быть включён режим full_page_writes\n" + +#: libpq_fetch.c:91 +#, c-format +msgid "could not set up connection context: %s" +msgstr "не удалоÑÑŒ наÑтроить контекÑÑ‚ подключениÑ: %s" -#: libpq_fetch.c:95 +#: libpq_fetch.c:109 #, c-format msgid "error running query (%s) in source server: %s" msgstr "ошибка Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñа (%s) на иÑходном Ñервере: %s" -#: libpq_fetch.c:100 +#: libpq_fetch.c:114 #, c-format msgid "unexpected result set from query\n" msgstr "неожиданный результат запроÑа\n" -#: libpq_fetch.c:123 +#: libpq_fetch.c:137 #, c-format msgid "unrecognized result \"%s\" for current WAL insert location\n" msgstr "" "нераÑпознанный результат \"%s\" вмеÑто текущей позиции Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² WAL\n" -#: libpq_fetch.c:173 +#: libpq_fetch.c:187 #, c-format msgid "could not fetch file list: %s" msgstr "не удалоÑÑŒ получить ÑпиÑок файлов: %s" -#: libpq_fetch.c:178 +#: libpq_fetch.c:192 #, c-format msgid "unexpected result set while fetching file list\n" msgstr "неожиданный результат при получении ÑпиÑка файлов\n" -#: libpq_fetch.c:226 +#: libpq_fetch.c:262 #, c-format msgid "could not send query: %s" msgstr "не удалоÑÑŒ отправить запроÑ: %s" -#: libpq_fetch.c:228 +#: libpq_fetch.c:264 #, c-format msgid "getting file chunks\n" msgstr "получение Ñегментов файлов\n" -#: libpq_fetch.c:231 +#: libpq_fetch.c:267 #, c-format msgid "could not set libpq connection to single row mode\n" msgstr "не удалоÑÑŒ перевеÑти подключение libpq в одноÑтрочный режим\n" -#: libpq_fetch.c:251 +#: libpq_fetch.c:287 #, c-format msgid "unexpected result while fetching remote files: %s" msgstr "неожиданный результат при получении удалённых файлов: %s" -#: libpq_fetch.c:257 +#: libpq_fetch.c:293 #, c-format msgid "unexpected result set size while fetching remote files\n" msgstr "неожиданный размер набора результатов при получении удалённых файлов\n" -#: libpq_fetch.c:263 +#: libpq_fetch.c:299 #, c-format msgid "" "unexpected data types in result set while fetching remote files: %u %u %u\n" @@ -317,68 +322,68 @@ msgstr "" "неожиданные типы данных в наборе результатов при получении удалённых файлов: " "%u %u %u\n" -#: libpq_fetch.c:271 +#: libpq_fetch.c:307 #, c-format msgid "unexpected result format while fetching remote files\n" msgstr "неожиданный формат результата при получении удалённых файлов\n" -#: libpq_fetch.c:277 +#: libpq_fetch.c:313 #, c-format msgid "unexpected null values in result while fetching remote files\n" msgstr "" "неожиданные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ NULL в результате при получении удалённых файлов\n" -#: libpq_fetch.c:281 +#: libpq_fetch.c:317 #, c-format msgid "unexpected result length while fetching remote files\n" msgstr "Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° результата при получении удалённых файлов\n" -#: libpq_fetch.c:303 +#: libpq_fetch.c:339 #, c-format msgid "received null value for chunk for file \"%s\", file has been deleted\n" msgstr "Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° \"%s\" вмеÑто Ñегмента получено NULL-значение, файл удалён\n" -#: libpq_fetch.c:310 +#: libpq_fetch.c:346 #, c-format -msgid "received chunk for file \"%s\", offset %d, size %d\n" -msgstr "получен Ñегмент файла \"%s\": Ñмещение %d, размер %d\n" +msgid "received chunk for file \"%s\", offset " +msgstr "получен Ñегмент файла \"%s\": Ñмещение " -#: libpq_fetch.c:339 +#: libpq_fetch.c:375 #, c-format msgid "could not fetch remote file \"%s\": %s" msgstr "не удалоÑÑŒ получить удалённый файл \"%s\": %s" -#: libpq_fetch.c:344 +#: libpq_fetch.c:380 #, c-format msgid "unexpected result set while fetching remote file \"%s\"\n" msgstr "неожиданный набор результатов при получении удалённого файла \"%s\"\n" -#: libpq_fetch.c:355 +#: libpq_fetch.c:391 #, c-format msgid "fetched file \"%s\", length %d\n" msgstr "получен файл \"%s\", длина %d\n" -#: libpq_fetch.c:387 +#: libpq_fetch.c:424 #, c-format msgid "could not send COPY data: %s" msgstr "не удалоÑÑŒ отправить данные COPY: %s" -#: libpq_fetch.c:413 +#: libpq_fetch.c:450 #, c-format msgid "could not create temporary table: %s" msgstr "не удалоÑÑŒ Ñоздать временную таблицу: %s" -#: libpq_fetch.c:421 +#: libpq_fetch.c:458 #, c-format msgid "could not send file list: %s" msgstr "не удалоÑÑŒ отправить ÑпиÑок файлов: %s" -#: libpq_fetch.c:463 +#: libpq_fetch.c:500 #, c-format msgid "could not send end-of-COPY: %s" msgstr "не удалоÑÑŒ отправить Ñообщение о завершении копированиÑ: %s" -#: libpq_fetch.c:469 +#: libpq_fetch.c:506 #, c-format msgid "unexpected result while sending file list: %s" msgstr "неожиданный результат при передаче ÑпиÑка: %s" @@ -476,6 +481,7 @@ msgstr "" " --source-pgdata=КÐТÐЛОГ иÑходный каталог, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼ будет проведена " "ÑинхронизациÑ\n" +# well-spelled: ПОДКЛ #: pg_rewind.c:69 #, c-format msgid " --source-server=CONNSTR source server to synchronize with\n" @@ -521,7 +527,8 @@ msgstr "" "\n" "Об ошибках Ñообщайте по адреÑу .\n" -#: pg_rewind.c:130 pg_rewind.c:161 pg_rewind.c:168 pg_rewind.c:176 +#: pg_rewind.c:130 pg_rewind.c:161 pg_rewind.c:168 pg_rewind.c:175 +#: pg_rewind.c:183 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Ð”Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации попробуйте \"%s --help\".\n" @@ -534,68 +541,73 @@ msgstr "" #: pg_rewind.c:167 #, c-format +msgid "%s: only one of --source-pgdata or --source-server can be specified\n" +msgstr "%s: указать можно только --source-pgdata либо --source-server\n" + +#: pg_rewind.c:174 +#, c-format msgid "%s: no target data directory specified (--target-pgdata)\n" msgstr "%s: целевой каталог данных не указан (--target-pgdata)\n" -#: pg_rewind.c:174 +#: pg_rewind.c:181 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: Ñлишком много аргументов командной Ñтроки (первый: \"%s\")\n" -#: pg_rewind.c:189 +#: pg_rewind.c:196 #, c-format msgid "cannot be executed by \"root\"\n" msgstr "программу не должен запуÑкать root\n" -#: pg_rewind.c:190 +#: pg_rewind.c:197 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" msgstr "ЗапуÑкать %s нужно от имени ÑÑƒÐ¿ÐµÑ€Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ PostgreSQL.\n" -#: pg_rewind.c:221 +#: pg_rewind.c:228 #, c-format msgid "source and target cluster are on the same timeline\n" msgstr "иÑходный и целевой клаÑтер уже на одной линии времени\n" -#: pg_rewind.c:227 +#: pg_rewind.c:234 #, c-format msgid "servers diverged at WAL position %X/%X on timeline %u\n" msgstr "Серверы разошлиÑÑŒ в позиции WAL %X/%X на линии времени %u.\n" -#: pg_rewind.c:264 +#: pg_rewind.c:271 #, c-format msgid "no rewind required\n" msgstr "перемотка не требуетÑÑ.\n" -#: pg_rewind.c:271 +#: pg_rewind.c:278 #, c-format msgid "rewinding from last common checkpoint at %X/%X on timeline %u\n" msgstr "" "перемотка от поÑледней общей контрольной точки в позиции %X/%X на линии " "времени %u\n" -#: pg_rewind.c:279 +#: pg_rewind.c:286 #, c-format msgid "reading source file list\n" msgstr "чтение ÑпиÑка иÑходных файлов\n" -#: pg_rewind.c:281 +#: pg_rewind.c:288 #, c-format msgid "reading target file list\n" msgstr "чтение ÑпиÑка целевых файлов\n" -#: pg_rewind.c:291 +#: pg_rewind.c:298 #, c-format msgid "reading WAL in target\n" msgstr "чтение WAL в целевом клаÑтере\n" -#: pg_rewind.c:308 +#: pg_rewind.c:315 #, c-format msgid "need to copy %lu MB (total source directory size is %lu MB)\n" msgstr "" "требуетÑÑ Ñкопировать %lu МБ (общий размер иÑходного каталога: %lu МБ)\n" -#: pg_rewind.c:325 +#: pg_rewind.c:332 #, c-format msgid "" "\n" @@ -604,27 +616,27 @@ msgstr "" "\n" "Ñоздание метки копии и Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñющего файла\n" -#: pg_rewind.c:353 +#: pg_rewind.c:360 #, c-format msgid "syncing target data directory\n" msgstr "ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ†ÐµÐ»ÐµÐ²Ð¾Ð³Ð¾ каталога данных\n" -#: pg_rewind.c:356 +#: pg_rewind.c:363 #, c-format msgid "Done!\n" msgstr "Готово!\n" -#: pg_rewind.c:368 +#: pg_rewind.c:375 #, c-format msgid "source and target clusters are from different systems\n" msgstr "иÑходный и целевой клаÑтеры отноÑÑÑ‚ÑÑ Ðº разным ÑиÑтемам\n" -#: pg_rewind.c:376 +#: pg_rewind.c:383 #, c-format msgid "clusters are not compatible with this version of pg_rewind\n" msgstr "клаÑтеры неÑовмеÑтимы Ñ Ñтой верÑией pg_rewind\n" -#: pg_rewind.c:386 +#: pg_rewind.c:393 #, c-format msgid "" "target server needs to use either data checksums or \"wal_log_hints = on\"\n" @@ -632,60 +644,60 @@ msgstr "" "на целевом Ñервере должны быть контрольные Ñуммы данных или \"wal_log_hints " "= on\"\n" -#: pg_rewind.c:397 +#: pg_rewind.c:404 #, c-format msgid "target server must be shut down cleanly\n" msgstr "целевой Ñервер должен быть выключен штатно\n" -#: pg_rewind.c:407 +#: pg_rewind.c:414 #, c-format msgid "source data directory must be shut down cleanly\n" msgstr "работа Ñ Ð¸Ñходным каталогом данных должна быть завершена штатно\n" -#: pg_rewind.c:462 +#: pg_rewind.c:469 #, c-format msgid "invalid control file" msgstr "неверный управлÑющий файл" -#: pg_rewind.c:473 +#: pg_rewind.c:480 #, c-format msgid "Source timeline history:\n" msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð»Ð¸Ð½Ð¸Ð¸ времени иÑточника:\n" -#: pg_rewind.c:475 +#: pg_rewind.c:482 #, c-format msgid "Target timeline history:\n" msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð»Ð¸Ð½Ð¸Ð¸ времени получателÑ:\n" #. translator: %d is a timeline number, others are LSN positions -#: pg_rewind.c:489 +#: pg_rewind.c:496 #, c-format msgid "%d: %X/%X - %X/%X\n" msgstr "%d: %X/%X - %X/%X\n" -#: pg_rewind.c:548 +#: pg_rewind.c:555 #, c-format msgid "" "could not find common ancestor of the source and target cluster's timelines\n" msgstr "" "не удалоÑÑŒ найти общего предка линий времени иÑходного и целевого клаÑтеров\n" -#: pg_rewind.c:589 +#: pg_rewind.c:596 #, c-format msgid "backup label buffer too small\n" msgstr "буфер Ð´Ð»Ñ Ð¼ÐµÑ‚ÐºÐ¸ копии Ñлишком мал\n" -#: pg_rewind.c:612 +#: pg_rewind.c:619 #, c-format msgid "unexpected control file CRC\n" msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма управлÑющего файла\n" -#: pg_rewind.c:622 +#: pg_rewind.c:629 #, c-format msgid "unexpected control file size %d, expected %d\n" msgstr "неверный размер управлÑющего файла (%d), ожидалоÑÑŒ: %d\n" -#: pg_rewind.c:689 +#: pg_rewind.c:696 #, c-format msgid "" "The program \"initdb\" is needed by %s but was\n" @@ -694,9 +706,9 @@ msgid "" msgstr "" "Ð”Ð»Ñ %s необходима программа \"initdb\", но она не найдена\n" "в каталоге \"%s\".\n" -"Проверьте вашу уÑтановку PostgreSQL.\n" +"Проверьте правильноÑть уÑтановки СУБД.\n" -#: pg_rewind.c:693 +#: pg_rewind.c:700 #, c-format msgid "" "The program \"initdb\" was found by \"%s\"\n" @@ -705,9 +717,9 @@ msgid "" msgstr "" "Программа \"initdb\" найдена в \"%s\",\n" "но её верÑÐ¸Ñ Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÐµÑ‚ÑÑ Ð¾Ñ‚ верÑии %s.\n" -"Проверьте вашу уÑтановку PostgreSQL.\n" +"Проверьте правильноÑть уÑтановки СУБД.\n" -#: pg_rewind.c:711 +#: pg_rewind.c:718 #, c-format msgid "sync of target directory failed\n" msgstr "Ñбой Ñинхронизации целевого каталога\n" diff --git a/src/bin/pg_test_fsync/pg_test_fsync.c b/src/bin/pg_test_fsync/pg_test_fsync.c index c8427623d2..b4f3551b94 100644 --- a/src/bin/pg_test_fsync/pg_test_fsync.c +++ b/src/bin/pg_test_fsync/pg_test_fsync.c @@ -7,6 +7,7 @@ #include #include +#include #include #include #include diff --git a/src/bin/pg_upgrade/Makefile b/src/bin/pg_upgrade/Makefile index 8823288708..737740cda1 100644 --- a/src/bin/pg_upgrade/Makefile +++ b/src/bin/pg_upgrade/Makefile @@ -12,13 +12,13 @@ OBJS = check.o controldata.o dump.o exec.o file.o function.o info.o \ tablespace.o util.o version.o $(WIN32RES) override CPPFLAGS := -DDLSUFFIX=\"$(DLSUFFIX)\" -I$(srcdir) -I$(libpq_srcdir) $(CPPFLAGS) -LDFLAGS += -L$(top_builddir)/src/fe_utils -lpgfeutils -lpq +override LDFLAGS := -L$(top_builddir)/src/fe_utils -lpgfeutils $(libpq_pgport) $(LDFLAGS) all: pg_upgrade pg_upgrade: $(OBJS) | submake-libpq submake-libpgport submake-libpgfeutils - $(CC) $(CFLAGS) $^ $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + $(CC) $(CFLAGS) $^ $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) install: all installdirs $(INSTALL_PROGRAM) pg_upgrade$(X) '$(DESTDIR)$(bindir)/pg_upgrade$(X)' diff --git a/src/bin/pg_upgrade/check.c b/src/bin/pg_upgrade/check.c index a3ee116a8c..a26e55ca7f 100644 --- a/src/bin/pg_upgrade/check.c +++ b/src/bin/pg_upgrade/check.c @@ -164,15 +164,21 @@ report_clusters_compatible(void) void -issue_warnings(void) +issue_warnings_and_set_wal_level(void) { + /* + * We unconditionally start/stop the new server because pg_resetwal -o + * set wal_level to 'minimum'. If the user is upgrading standby + * servers using the rsync instructions, they will need pg_upgrade + * to write its final WAL record showing wal_level as 'replica'. + */ + start_postmaster(&new_cluster, true); + /* Create dummy large object permissions for old < PG 9.0? */ if (GET_MAJOR_VERSION(old_cluster.major_version) <= 804) - { - start_postmaster(&new_cluster, true); new_9_0_populate_pg_largeobject_metadata(&new_cluster, false); - stop_postmaster(false); - } + + stop_postmaster(false); } diff --git a/src/bin/pg_upgrade/pg_upgrade.c b/src/bin/pg_upgrade/pg_upgrade.c index 90c07205bf..710b8efb87 100644 --- a/src/bin/pg_upgrade/pg_upgrade.c +++ b/src/bin/pg_upgrade/pg_upgrade.c @@ -160,7 +160,7 @@ main(int argc, char **argv) create_script_for_cluster_analyze(&analyze_script_file_name); create_script_for_old_cluster_deletion(&deletion_script_file_name); - issue_warnings(); + issue_warnings_and_set_wal_level(); pg_log(PG_REPORT, "\nUpgrade Complete\n"); pg_log(PG_REPORT, "----------------\n"); diff --git a/src/bin/pg_upgrade/pg_upgrade.h b/src/bin/pg_upgrade/pg_upgrade.h index 19dca83386..439552c5da 100644 --- a/src/bin/pg_upgrade/pg_upgrade.h +++ b/src/bin/pg_upgrade/pg_upgrade.h @@ -334,7 +334,7 @@ void output_check_banner(bool live_check); void check_and_dump_old_cluster(bool live_check); void check_new_cluster(void); void report_clusters_compatible(void); -void issue_warnings(void); +void issue_warnings_and_set_wal_level(void); void output_completion_banner(char *analyze_script_file_name, char *deletion_script_file_name); void check_cluster_versions(void); diff --git a/src/bin/pg_upgrade/server.c b/src/bin/pg_upgrade/server.c index 830335f501..dd46e9f881 100644 --- a/src/bin/pg_upgrade/server.c +++ b/src/bin/pg_upgrade/server.c @@ -320,7 +320,7 @@ stop_postmaster(bool fast) "\"%s/pg_ctl\" -w -D \"%s\" -o \"%s\" %s stop", cluster->bindir, cluster->pgconfig, cluster->pgopts ? cluster->pgopts : "", - fast ? "-m fast" : ""); + fast ? "-m fast" : "-m smart"); os_info.running_cluster = NULL; } diff --git a/src/bin/pg_upgrade/util.c b/src/bin/pg_upgrade/util.c index aadc1cdd9d..52e891219b 100644 --- a/src/bin/pg_upgrade/util.c +++ b/src/bin/pg_upgrade/util.c @@ -89,7 +89,7 @@ pg_log_v(eLogType type, const char *fmt, va_list ap) { char message[QUERY_ALLOC]; - vsnprintf(message, sizeof(message), fmt, ap); + vsnprintf(message, sizeof(message), _(fmt), ap); /* PG_VERBOSE and PG_STATUS are only output in verbose mode */ /* fopen() on log_opts.internal might have failed, so check it */ @@ -108,7 +108,7 @@ pg_log_v(eLogType type, const char *fmt, va_list ap) { case PG_VERBOSE: if (log_opts.verbose) - printf("%s", _(message)); + printf("%s", message); break; case PG_STATUS: @@ -123,16 +123,16 @@ pg_log_v(eLogType type, const char *fmt, va_list ap) strlen(message) <= MESSAGE_WIDTH - 2 ? message : message + strlen(message) - MESSAGE_WIDTH + 3 + 2); else - printf(" %s\n", _(message)); + printf(" %s\n", message); break; case PG_REPORT: case PG_WARNING: - printf("%s", _(message)); + printf("%s", message); break; case PG_FATAL: - printf("\n%s", _(message)); + printf("\n%s", message); printf("Failure, exiting\n"); exit(1); break; diff --git a/src/bin/pg_xlogdump/pg_xlogdump.c b/src/bin/pg_xlogdump/pg_xlogdump.c index 9ad9321e1f..afd5a72058 100644 --- a/src/bin/pg_xlogdump/pg_xlogdump.c +++ b/src/bin/pg_xlogdump/pg_xlogdump.c @@ -18,10 +18,12 @@ #include "access/xlogreader.h" #include "access/xlogrecord.h" #include "access/xlog_internal.h" +#include "access/xact.h" #include "access/transam.h" #include "common/fe_memutils.h" #include "getopt_long.h" #include "rmgrdesc.h" +#include "replication/origin.h" static const char *progname; @@ -42,6 +44,7 @@ typedef struct XLogDumpConfig int stop_after_records; int already_displayed_records; bool follow; + bool dump_origin; bool stats; bool stats_per_record; @@ -363,23 +366,13 @@ XLogDumpReadPage(XLogReaderState *state, XLogRecPtr targetPagePtr, int reqLen, } /* - * Store per-rmgr and per-record statistics for a given record. + * Calculate the size of a record, split into !FPI and FPI parts. */ static void -XLogDumpCountRecord(XLogDumpConfig *config, XLogDumpStats *stats, - XLogReaderState *record) +XLogDumpRecordLen(XLogReaderState *record, uint32 *rec_len, uint32 *fpi_len) { - RmgrId rmid; - uint8 recid; - uint32 rec_len; - uint32 fpi_len; int block_id; - stats->count++; - - rmid = XLogRecGetRmid(record); - rec_len = XLogRecGetDataLen(record) + SizeOfXLogRecord; - /* * Calculate the amount of FPI data in the record. * @@ -387,13 +380,38 @@ XLogDumpCountRecord(XLogDumpConfig *config, XLogDumpStats *stats, * bimg_len indicating the length of FPI data. It doesn't seem worth it to * add an accessor macro for this. */ - fpi_len = 0; + *fpi_len = 0; for (block_id = 0; block_id <= record->max_block_id; block_id++) { if (XLogRecHasBlockImage(record, block_id)) - fpi_len += record->blocks[block_id].bimg_len; + *fpi_len += record->blocks[block_id].bimg_len; } + /* + * Calculate the length of the record as the total length - the length of + * all the block images. + */ + *rec_len = XLogRecGetTotalLen(record) - *fpi_len; +} + +/* + * Store per-rmgr and per-record statistics for a given record. + */ +static void +XLogDumpCountRecord(XLogDumpConfig *config, XLogDumpStats *stats, + XLogReaderState *record) +{ + RmgrId rmid; + uint8 recid; + uint32 rec_len; + uint32 fpi_len; + + stats->count++; + + rmid = XLogRecGetRmid(record); + + XLogDumpRecordLen(record, &rec_len, &fpi_len); + /* Update per-rmgr statistics */ stats->rmgr_stats[rmid].count++; @@ -422,6 +440,8 @@ XLogDumpDisplayRecord(XLogDumpConfig *config, XLogReaderState *record) { const char *id; const RmgrDescData *desc = &RmgrDescTable[XLogRecGetRmid(record)]; + uint32 rec_len; + uint32 fpi_len; RelFileNode rnode; ForkNumber forknum; BlockNumber blk; @@ -429,16 +449,47 @@ XLogDumpDisplayRecord(XLogDumpConfig *config, XLogReaderState *record) uint8 info = XLogRecGetInfo(record); XLogRecPtr xl_prev = XLogRecGetPrev(record); + XLogDumpRecordLen(record, &rec_len, &fpi_len); + id = desc->rm_identify(info); if (id == NULL) id = psprintf("UNKNOWN (%x)", info & ~XLR_INFO_MASK); printf("rmgr: %-11s len (rec/tot): %6u/%6u, tx: %10u, lsn: %X/%08X, prev %X/%08X, ", desc->rm_name, - XLogRecGetDataLen(record), XLogRecGetTotalLen(record), + rec_len, XLogRecGetTotalLen(record), XLogRecGetXid(record), (uint32) (record->ReadRecPtr >> 32), (uint32) record->ReadRecPtr, (uint32) (xl_prev >> 32), (uint32) xl_prev); + + if (config->dump_origin && XLogRecGetOrigin(record) != InvalidRepOriginId) { + switch (info & XLOG_XACT_OPMASK) { + case XLOG_XACT_COMMIT: + case XLOG_XACT_COMMIT_PREPARED: + { + xl_xact_commit *xlrec; + xl_xact_parsed_commit parsed; + + xlrec = (xl_xact_commit *) XLogRecGetData(record); + ParseCommitRecord(info, xlrec, &parsed); + printf("gid=%s, origin_id=%d, origin_lsn=%llx, ", parsed.twophase_gid, XLogRecGetOrigin(record), (long long)parsed.origin_lsn); + break; + } + case XLOG_XACT_ABORT: + case XLOG_XACT_ABORT_PREPARED: + { + xl_xact_abort *xlrec; + xl_xact_parsed_abort parsed; + + xlrec = (xl_xact_abort *) XLogRecGetData(record); + ParseAbortRecord(info, xlrec, &parsed); + + printf("gid=%s, origin_id=%d, origin_lsn=%llx, ", parsed.twophase_gid, XLogRecGetOrigin(record), (long long)parsed.origin_lsn); + break; + } + } + } + printf("desc: %s ", id); /* the desc routine will printf the description directly to stdout */ @@ -678,9 +729,11 @@ usage(void) printf(" -b, --bkp-details output detailed information about backup blocks\n"); printf(" -e, --end=RECPTR stop reading at log position RECPTR\n"); printf(" -f, --follow keep retrying after reaching end of WAL\n"); + printf(" -o, --origin dump origins\n"); printf(" -n, --limit=N number of records to display\n"); - printf(" -p, --path=PATH directory in which to find log segment files\n"); - printf(" (default: ./pg_xlog)\n"); + printf(" -p, --path=PATH directory in which to find log segment files or a\n"); + printf(" directory with a ./pg_xlog that contains such files\n" + " (default: current directory, ./pg_xlog, PGDATA/pg_xlog)\n"); printf(" -r, --rmgr=RMGR only show records generated by resource manager RMGR\n"); printf(" use --rmgr=list to list valid resource manager names\n"); printf(" -s, --start=RECPTR start reading at log position RECPTR\n"); @@ -710,6 +763,7 @@ main(int argc, char **argv) {"bkp-details", no_argument, NULL, 'b'}, {"end", required_argument, NULL, 'e'}, {"follow", no_argument, NULL, 'f'}, + {"origin", no_argument, NULL, 'o'}, {"help", no_argument, NULL, '?'}, {"limit", required_argument, NULL, 'n'}, {"path", required_argument, NULL, 'p'}, @@ -740,6 +794,7 @@ main(int argc, char **argv) config.stop_after_records = -1; config.already_displayed_records = 0; config.follow = false; + config.dump_origin = false; config.filter_by_rmgr = -1; config.filter_by_xid = InvalidTransactionId; config.filter_by_xid_enabled = false; @@ -752,7 +807,7 @@ main(int argc, char **argv) goto bad_argument; } - while ((option = getopt_long(argc, argv, "be:?fn:p:r:s:t:Vx:z", + while ((option = getopt_long(argc, argv, "be:?f?on:p:r:s:t:Vx:z", long_options, &optindex)) != -1) { switch (option) @@ -772,6 +827,9 @@ main(int argc, char **argv) case 'f': config.follow = true; break; + case 'o': + config.dump_origin = true; + break; case '?': usage(); exit(EXIT_SUCCESS); @@ -1047,7 +1105,7 @@ main(int argc, char **argv) XLogDumpDisplayStats(&config, &stats); if (errormsg) - fatal_error("error in WAL record at %X/%X: %s\n", + fatal_error("error in WAL record at %X/%X: %s", (uint32) (xlogreader_state->ReadRecPtr >> 32), (uint32) xlogreader_state->ReadRecPtr, errormsg); diff --git a/src/bin/pgbench/Makefile b/src/bin/pgbench/Makefile index 1503d00e12..8a8e516896 100644 --- a/src/bin/pgbench/Makefile +++ b/src/bin/pgbench/Makefile @@ -10,17 +10,18 @@ include $(top_builddir)/src/Makefile.global OBJS = pgbench.o exprparse.o $(WIN32RES) override CPPFLAGS := -I. -I$(srcdir) -I$(libpq_srcdir) $(CPPFLAGS) -LDFLAGS += -L$(top_builddir)/src/fe_utils -lpgfeutils -lpq +override LDFLAGS := -L$(top_builddir)/src/fe_utils -lpgfeutils $(libpq_pgport) $(LDFLAGS) ifneq ($(PORTNAME), win32) override CFLAGS += $(PTHREAD_CFLAGS) endif +LIBS += $(PTHREAD_LIBS) all: pgbench pgbench: $(OBJS) | submake-libpq submake-libpgport submake-libpgfeutils - $(CC) $(CFLAGS) $^ $(libpq_pgport) $(PTHREAD_LIBS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + $(CC) $(CFLAGS) $^ $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) # exprscan is compiled as part of exprparse exprparse.o: exprscan.c diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c index 531671a00b..163dcad137 100644 --- a/src/bin/pgbench/pgbench.c +++ b/src/bin/pgbench/pgbench.c @@ -1967,7 +1967,6 @@ doCustom(TState *thread, CState *st, StatsData *agg) st->listen = false; st->sleeping = false; st->throttling = false; - st->is_throttled = false; memset(st->prepared, 0, sizeof(st->prepared)); } @@ -3369,7 +3368,7 @@ main(int argc, char **argv) { static struct option long_options[] = { /* systematic long/short named options */ - {"tpc-b", no_argument, NULL, 'b'}, + {"builtin", required_argument, NULL, 'b'}, {"client", required_argument, NULL, 'c'}, {"connect", no_argument, NULL, 'C'}, {"debug", no_argument, NULL, 'd'}, @@ -4345,6 +4344,12 @@ threadRun(void *arg) remains--; /* I've aborted */ } } + else if (is_connect && st->sleeping) + { + /* it is sleeping for throttling, maybe it is done, let us try */ + if (!doCustom(thread, st, &aggs)) + remains--; + } if (st->ecnt > prev_ecnt && commands[st->state]->type == META_COMMAND) { diff --git a/src/bin/psql/Makefile b/src/bin/psql/Makefile index 1f6a289ea0..4295154cae 100644 --- a/src/bin/psql/Makefile +++ b/src/bin/psql/Makefile @@ -19,7 +19,7 @@ include $(top_builddir)/src/Makefile.global REFDOCDIR= $(top_srcdir)/doc/src/sgml/ref override CPPFLAGS := -I. -I$(srcdir) -I$(libpq_srcdir) $(CPPFLAGS) -LDFLAGS += -L$(top_builddir)/src/fe_utils -lpgfeutils -lpq +override LDFLAGS := -L$(top_builddir)/src/fe_utils -lpgfeutils $(libpq_pgport) $(LDFLAGS) OBJS= command.o common.o help.o input.o stringutils.o mainloop.o copy.o \ startup.o prompt.o variables.o large_obj.o describe.o \ @@ -31,7 +31,7 @@ OBJS= command.o common.o help.o input.o stringutils.o mainloop.o copy.o \ all: psql psql: $(OBJS) | submake-libpq submake-libpgport submake-libpgfeutils - $(CC) $(CFLAGS) $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) help.o: sql_help.h diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c index 7399950284..edccc80631 100644 --- a/src/bin/psql/common.c +++ b/src/bin/psql/common.c @@ -776,7 +776,7 @@ StoreQueryTuple(const PGresult *result) char *varname; char *value; - /* concate prefix and column name */ + /* concatenate prefix and column name */ varname = psprintf("%s%s", pset.gset_prefix, colname); if (!PQgetisnull(result, 0, i)) diff --git a/src/bin/psql/copy.c b/src/bin/psql/copy.c index 942264fbf9..827f4df3b2 100644 --- a/src/bin/psql/copy.c +++ b/src/bin/psql/copy.c @@ -540,7 +540,7 @@ handleCopyIn(PGconn *conn, FILE *copystream, bool isbinary, PGresult **res) 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.")); + "End with a backslash and a period on a line by itself, or an EOF signal.")); } else showprompt = false; @@ -673,6 +673,16 @@ handleCopyIn(PGconn *conn, FILE *copystream, bool isbinary, PGresult **res) 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. * diff --git a/src/bin/psql/crosstabview.c b/src/bin/psql/crosstabview.c index b283c24e3c..945cb2a3ff 100644 --- a/src/bin/psql/crosstabview.c +++ b/src/bin/psql/crosstabview.c @@ -352,7 +352,8 @@ printCrosstab(const PGresult *results, { int row_number; int col_number; - pivot_field *p; + pivot_field *rp, + *cp; pivot_field elt; /* Find target row */ @@ -360,13 +361,13 @@ printCrosstab(const PGresult *results, elt.name = PQgetvalue(results, rn, field_for_rows); else elt.name = NULL; - p = (pivot_field *) bsearch(&elt, - piv_rows, - num_rows, - sizeof(pivot_field), - pivotFieldCompare); - Assert(p != NULL); - row_number = p->rank; + rp = (pivot_field *) bsearch(&elt, + piv_rows, + num_rows, + sizeof(pivot_field), + pivotFieldCompare); + Assert(rp != NULL); + row_number = rp->rank; /* Find target column */ if (!PQgetisnull(results, rn, field_for_columns)) @@ -374,13 +375,13 @@ printCrosstab(const PGresult *results, else elt.name = NULL; - p = (pivot_field *) bsearch(&elt, - piv_columns, - num_columns, - sizeof(pivot_field), - pivotFieldCompare); - Assert(p != NULL); - col_number = p->rank; + 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) @@ -396,10 +397,10 @@ printCrosstab(const PGresult *results, if (cont.cells[idx] != NULL) { psql_error("\\crosstabview: query result contains multiple data values for row \"%s\", column \"%s\"\n", - piv_rows[row_number].name ? piv_rows[row_number].name : - popt.nullPrint ? popt.nullPrint : "(null)", - piv_columns[col_number].name ? piv_columns[col_number].name : - popt.nullPrint ? popt.nullPrint : "(null)"); + rp->name ? rp->name : + (popt.nullPrint ? popt.nullPrint : "(null)"), + cp->name ? cp->name : + (popt.nullPrint ? popt.nullPrint : "(null)")); goto error; } @@ -694,8 +695,8 @@ indexOfColumn(char *arg, const PGresult *res) static int pivotFieldCompare(const void *a, const void *b) { - pivot_field *pa = (pivot_field *) a; - pivot_field *pb = (pivot_field *) b; + const pivot_field *pa = (const pivot_field *) a; + const pivot_field *pb = (const pivot_field *) b; /* test null values */ if (!pb->name) @@ -704,12 +705,11 @@ pivotFieldCompare(const void *a, const void *b) return 1; /* non-null values */ - return strcmp(((pivot_field *) a)->name, - ((pivot_field *) b)->name); + return strcmp(pa->name, pb->name); } static int rankCompare(const void *a, const void *b) { - return *((int *) a) - *((int *) b); + return *((const int *) a) - *((const int *) b); } diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index 6275a688c7..8f4008183d 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -1553,8 +1553,8 @@ describeOneTableDetails(const char *schemaname, appendPQExpBufferStr(&buf, ",\n NULL AS indexdef"); if (tableinfo.relkind == 'f' && pset.sversion >= 90200) appendPQExpBufferStr(&buf, ",\n CASE WHEN attfdwoptions IS NULL THEN '' ELSE " - " '(' || array_to_string(ARRAY(SELECT quote_ident(option_name) || ' ' || quote_literal(option_value) FROM " - " pg_options_to_table(attfdwoptions)), ', ') || ')' END AS attfdwoptions"); + " '(' || 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"); else appendPQExpBufferStr(&buf, ",\n NULL AS attfdwoptions"); if (verbose) @@ -1904,7 +1904,7 @@ describeOneTableDetails(const char *schemaname, "\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.objid='%s'" "\n AND d.deptype='a'", oid); @@ -2060,7 +2060,7 @@ describeOneTableDetails(const char *schemaname, printTableAddFooter(&cont, _("Check constraints:")); for (i = 0; i < tuples; i++) { - /* untranslated contraint name and def */ + /* untranslated constraint name and def */ printfPQExpBuffer(&buf, " \"%s\" %s", PQgetvalue(result, i, 0), PQgetvalue(result, i, 1)); @@ -2138,7 +2138,7 @@ describeOneTableDetails(const char *schemaname, { printfPQExpBuffer(&buf, "SELECT pol.polname,\n" - "CASE WHEN pol.polroles = '{0}' THEN NULL ELSE array_to_string(array(select rolname from pg_roles where oid = any (pol.polroles) order by 1),',') END,\n" + "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" @@ -2498,13 +2498,13 @@ describeOneTableDetails(const char *schemaname, /* Footer information about foreign table */ printfPQExpBuffer(&buf, "SELECT s.srvname,\n" - " array_to_string(ARRAY(SELECT " - " quote_ident(option_name) || ' ' || " - " quote_literal(option_value) FROM " - " pg_options_to_table(ftoptions)), ', ') " + " 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;", + "WHERE f.ftrelid = '%s' AND s.oid = f.ftserver;", oid); result = PSQLexec(buf.data); if (!result) @@ -2516,7 +2516,7 @@ describeOneTableDetails(const char *schemaname, } /* Print server name */ - printfPQExpBuffer(&buf, "Server: %s", + printfPQExpBuffer(&buf, _("Server: %s"), PQgetvalue(result, 0, 0)); printTableAddFooter(&cont, buf.data); @@ -2524,7 +2524,7 @@ describeOneTableDetails(const char *schemaname, ftoptions = PQgetvalue(result, 0, 1); if (ftoptions && ftoptions[0] != '\0') { - printfPQExpBuffer(&buf, "FDW Options: (%s)", ftoptions); + printfPQExpBuffer(&buf, _("FDW Options: (%s)"), ftoptions); printTableAddFooter(&cont, buf.data); } PQclear(result); @@ -2935,16 +2935,16 @@ listDbRoleSettings(const char *pattern, const char *pattern2) printfPQExpBuffer(&buf, "SELECT rolname AS \"%s\", datname AS \"%s\",\n" "pg_catalog.array_to_string(setconfig, E'\\n') AS \"%s\"\n" - "FROM pg_db_role_setting AS s\n" - "LEFT JOIN pg_database ON pg_database.oid = setdatabase\n" - "LEFT JOIN pg_roles ON pg_roles.oid = setrole\n", + "FROM pg_catalog.pg_db_role_setting s\n" + "LEFT JOIN pg_catalog.pg_database d ON d.oid = setdatabase\n" + "LEFT JOIN pg_catalog.pg_roles r ON r.oid = setrole\n", gettext_noop("Role"), gettext_noop("Database"), gettext_noop("Settings")); havewhere = processSQLNamePattern(pset.db, &buf, pattern, false, false, - NULL, "pg_roles.rolname", NULL, NULL); + NULL, "r.rolname", NULL, NULL); processSQLNamePattern(pset.db, &buf, pattern2, havewhere, false, - NULL, "pg_database.datname", NULL, NULL); + NULL, "d.datname", NULL, NULL); appendPQExpBufferStr(&buf, "ORDER BY 1, 2;"); } else @@ -2993,7 +2993,6 @@ listDbRoleSettings(const char *pattern, const char *pattern2) * s - sequences * E - foreign table (Note: different from 'f', the relkind value) * (any order of the above is fine) - * If tabtypes is empty, we default to \dtvsE. */ bool listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSystem) @@ -3010,6 +3009,7 @@ listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSys printQueryOpt myopt = pset.popt; static const bool translate_columns[] = {false, false, true, 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; @@ -3052,7 +3052,7 @@ listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSys if (verbose) { /* - * As of PostgreSQL 9.0, use pg_table_size() to show a more acurate + * As of PostgreSQL 9.0, use pg_table_size() to show a more accurate * size of a table, including FSM, VM and TOAST tables. */ if (pset.sversion >= 90000) @@ -3173,13 +3173,13 @@ listLanguages(const char *pattern, bool verbose, bool showSystem) { appendPQExpBuffer(&buf, ",\n NOT l.lanispl AS \"%s\",\n" - " l.lanplcallfoid::regprocedure AS \"%s\",\n" - " l.lanvalidator::regprocedure AS \"%s\",\n ", + " l.lanplcallfoid::pg_catalog.regprocedure AS \"%s\",\n" + " l.lanvalidator::pg_catalog.regprocedure AS \"%s\",\n ", gettext_noop("Internal Language"), gettext_noop("Call Handler"), gettext_noop("Validator")); if (pset.sversion >= 90000) - appendPQExpBuffer(&buf, "l.laninline::regprocedure AS \"%s\",\n ", + appendPQExpBuffer(&buf, "l.laninline::pg_catalog.regprocedure AS \"%s\",\n ", gettext_noop("Inline Handler")); printACLColumn(&buf, "l.lanacl"); } @@ -4304,10 +4304,10 @@ listForeignDataWrappers(const char *pattern, bool verbose) printACLColumn(&buf, "fdwacl"); appendPQExpBuffer(&buf, ",\n CASE WHEN fdwoptions IS NULL THEN '' ELSE " - " '(' || array_to_string(ARRAY(SELECT " - " quote_ident(option_name) || ' ' || " - " quote_literal(option_value) FROM " - " pg_options_to_table(fdwoptions)), ', ') || ')' " + " '(' || pg_catalog.array_to_string(ARRAY(SELECT " + " pg_catalog.quote_ident(option_name) || ' ' || " + " pg_catalog.quote_literal(option_value) FROM " + " pg_catalog.pg_options_to_table(fdwoptions)), ', ') || ')' " " END AS \"%s\"", gettext_noop("FDW Options")); @@ -4385,10 +4385,10 @@ listForeignServers(const char *pattern, bool verbose) " s.srvtype AS \"%s\",\n" " s.srvversion AS \"%s\",\n" " CASE WHEN srvoptions IS NULL THEN '' ELSE " - " '(' || array_to_string(ARRAY(SELECT " - " quote_ident(option_name) || ' ' || " - " quote_literal(option_value) FROM " - " pg_options_to_table(srvoptions)), ', ') || ')' " + " '(' || 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"), @@ -4403,7 +4403,7 @@ listForeignServers(const char *pattern, bool verbose) if (verbose) appendPQExpBufferStr(&buf, - "LEFT JOIN pg_description d\n " + "LEFT JOIN pg_catalog.pg_description d\n " "ON d.classoid = s.tableoid AND d.objoid = s.oid " "AND d.objsubid = 0\n"); @@ -4459,10 +4459,10 @@ listUserMappings(const char *pattern, bool verbose) if (verbose) appendPQExpBuffer(&buf, ",\n CASE WHEN umoptions IS NULL THEN '' ELSE " - " '(' || array_to_string(ARRAY(SELECT " - " quote_ident(option_name) || ' ' || " - " quote_literal(option_value) FROM " - " pg_options_to_table(umoptions)), ', ') || ')' " + " '(' || 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")); @@ -4522,10 +4522,10 @@ listForeignTables(const char *pattern, bool verbose) if (verbose) appendPQExpBuffer(&buf, ",\n CASE WHEN ftoptions IS NULL THEN '' ELSE " - " '(' || array_to_string(ARRAY(SELECT " - " quote_ident(option_name) || ' ' || " - " quote_literal(option_value) FROM " - " pg_options_to_table(ftoptions)), ', ') || ')' " + " '(' || 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"), diff --git a/src/bin/psql/nls.mk b/src/bin/psql/nls.mk index 671c78a2b8..e0d7eb4c95 100644 --- a/src/bin/psql/nls.mk +++ b/src/bin/psql/nls.mk @@ -1,6 +1,6 @@ # src/bin/psql/nls.mk CATALOG_NAME = psql -AVAIL_LANGUAGES = cs de es fr it ja pl pt_BR ru zh_CN zh_TW +AVAIL_LANGUAGES = cs de es fr it ja ko pl pt_BR ru sv zh_CN zh_TW 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 \ diff --git a/src/bin/psql/po/de.po b/src/bin/psql/po/de.po index d9c70068bb..22289b3148 100644 --- a/src/bin/psql/po/de.po +++ b/src/bin/psql/po/de.po @@ -1,5 +1,5 @@ # German message translation file for psql -# Peter Eisentraut , 2001 - 2016. +# Peter Eisentraut , 2001 - 2017. # # Use these quotes: »%s« # @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-08-29 11:43+0000\n" -"PO-Revision-Date: 2016-08-29 08:49-0400\n" +"POT-Creation-Date: 2017-08-07 16:22+0000\n" +"PO-Revision-Date: 2017-08-07 13:02-0400\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" "Language: de\n" @@ -120,22 +120,22 @@ msgid_plural "(%lu rows)" msgstr[0] "(%lu Zeile)" msgstr[1] "(%lu Zeilen)" -#: ../../fe_utils/print.c:2906 +#: ../../fe_utils/print.c:2914 #, c-format msgid "Interrupted\n" msgstr "Unterbrochen\n" -#: ../../fe_utils/print.c:2970 +#: ../../fe_utils/print.c:2978 #, 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:3010 +#: ../../fe_utils/print.c:3018 #, 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:3259 +#: ../../fe_utils/print.c:3267 #, c-format msgid "invalid output format (internal error): %d" msgstr "ungültiges Ausgabeformat (interner Fehler): %d" @@ -216,7 +216,7 @@ msgstr "%s: ungültiger Kodierungsname oder Umwandlungsprozedur nicht gefunden\n #: command.c:871 command.c:1962 command.c:3649 common.c:153 common.c:200 #: common.c:497 common.c:1190 common.c:1218 common.c:1319 copy.c:489 -#: copy.c:699 large_obj.c:156 large_obj.c:191 large_obj.c:253 +#: copy.c:709 large_obj.c:156 large_obj.c:191 large_obj.c:253 #, c-format msgid "%s" msgstr "%s" @@ -803,16 +803,16 @@ msgstr "vom Benutzer abgebrochen" #: copy.c:542 msgid "" "Enter data to be copied followed by a newline.\n" -"End with a backslash and a period on a line by itself." +"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." +"Beenden Sie mit einem Backslash und einem Punkt alleine auf einer Zeile, oder einem EOF-Signal." #: copy.c:671 msgid "aborted because of read failure" msgstr "abgebrochen wegen Lesenfehlers" -#: copy.c:695 +#: copy.c:705 msgid "trying to exit copy mode" msgstr "versuche, den COPY-Modus zu verlassen" @@ -841,22 +841,22 @@ msgstr "\\crosstabview: Datenspalte muss angegeben werden, wenn die Anfrage mehr msgid "\\crosstabview: maximum number of columns (%d) exceeded\n" msgstr "\\crosstabview: maximale Anzahl Spalten (%d) überschritten\n" -#: crosstabview.c:398 +#: crosstabview.c:399 #, c-format msgid "\\crosstabview: query result contains multiple data values for row \"%s\", column \"%s\"\n" msgstr "\\crosstabview: Anfrageergebnis enthält mehrfache Datenwerte für Zeile »%s«, Spalte »%s«\n" -#: crosstabview.c:646 +#: crosstabview.c:647 #, c-format msgid "\\crosstabview: column number %d is out of range 1..%d\n" msgstr "\\crosstabview: Spaltennummer %d ist außerhalb des zulässigen Bereichs 1..%d\n" -#: crosstabview.c:671 +#: crosstabview.c:672 #, c-format msgid "\\crosstabview: ambiguous column name: \"%s\"\n" msgstr "\\crosstabview: zweideutiger Spaltenname: »%s«\n" -#: crosstabview.c:679 +#: crosstabview.c:680 #, c-format msgid "\\crosstabview: column name not found: \"%s\"\n" msgstr "\\crosstabview: Spaltenname nicht gefunden: »%s«\n" @@ -1402,6 +1402,16 @@ msgstr "Trigger, die immer aktiv werden:" msgid "Triggers firing on replica only:" msgstr "Trigger, die nur im Replikat aktiv werden:" +#: describe.c:2519 +#, c-format +msgid "Server: %s" +msgstr "Server: %s" + +#: describe.c:2527 +#, c-format +msgid "FDW Options: (%s)" +msgstr "FDW-Optionen: (%s)" + #: describe.c:2541 msgid "Inherits" msgstr "Erbt von" @@ -3280,12 +3290,12 @@ msgstr "%s: Speicher aufgebraucht\n" #: sql_help.c:126 sql_help.c:128 sql_help.c:221 sql_help.c:223 sql_help.c:224 #: sql_help.c:226 sql_help.c:228 sql_help.c:231 sql_help.c:233 sql_help.c:235 #: sql_help.c:237 sql_help.c:249 sql_help.c:250 sql_help.c:251 sql_help.c:253 -#: sql_help.c:299 sql_help.c:301 sql_help.c:303 sql_help.c:305 sql_help.c:365 -#: sql_help.c:370 sql_help.c:372 sql_help.c:415 sql_help.c:417 sql_help.c:420 -#: sql_help.c:422 sql_help.c:489 sql_help.c:494 sql_help.c:499 sql_help.c:504 -#: sql_help.c:509 sql_help.c:558 sql_help.c:560 sql_help.c:562 sql_help.c:564 -#: sql_help.c:567 sql_help.c:569 sql_help.c:580 sql_help.c:582 sql_help.c:624 -#: sql_help.c:626 sql_help.c:628 sql_help.c:631 sql_help.c:633 sql_help.c:635 +#: sql_help.c:300 sql_help.c:302 sql_help.c:304 sql_help.c:306 sql_help.c:367 +#: sql_help.c:372 sql_help.c:374 sql_help.c:417 sql_help.c:419 sql_help.c:422 +#: sql_help.c:424 sql_help.c:491 sql_help.c:496 sql_help.c:501 sql_help.c:506 +#: sql_help.c:511 sql_help.c:560 sql_help.c:562 sql_help.c:564 sql_help.c:566 +#: sql_help.c:569 sql_help.c:571 sql_help.c:582 sql_help.c:584 sql_help.c:625 +#: sql_help.c:627 sql_help.c:629 sql_help.c:632 sql_help.c:634 sql_help.c:636 #: sql_help.c:669 sql_help.c:673 sql_help.c:677 sql_help.c:696 sql_help.c:699 #: sql_help.c:702 sql_help.c:731 sql_help.c:743 sql_help.c:751 sql_help.c:754 #: sql_help.c:757 sql_help.c:772 sql_help.c:775 sql_help.c:819 sql_help.c:842 @@ -3299,145 +3309,145 @@ msgstr "%s: Speicher aufgebraucht\n" #: sql_help.c:1138 sql_help.c:1140 sql_help.c:1150 sql_help.c:1152 #: sql_help.c:1162 sql_help.c:1165 sql_help.c:1186 sql_help.c:1188 #: sql_help.c:1190 sql_help.c:1193 sql_help.c:1195 sql_help.c:1197 -#: sql_help.c:1247 sql_help.c:1285 sql_help.c:1288 sql_help.c:1290 -#: sql_help.c:1292 sql_help.c:1294 sql_help.c:1296 sql_help.c:1299 -#: sql_help.c:1339 sql_help.c:1544 sql_help.c:1608 sql_help.c:1627 -#: sql_help.c:1640 sql_help.c:1694 sql_help.c:1698 sql_help.c:1708 -#: sql_help.c:1728 sql_help.c:1753 sql_help.c:1771 sql_help.c:1800 -#: sql_help.c:1875 sql_help.c:1917 sql_help.c:1939 sql_help.c:1959 -#: sql_help.c:1960 sql_help.c:1995 sql_help.c:2015 sql_help.c:2037 -#: sql_help.c:2050 sql_help.c:2081 sql_help.c:2106 sql_help.c:2150 -#: sql_help.c:2336 sql_help.c:2349 sql_help.c:2366 sql_help.c:2382 -#: sql_help.c:2421 sql_help.c:2472 sql_help.c:2476 sql_help.c:2478 -#: sql_help.c:2484 sql_help.c:2502 sql_help.c:2529 sql_help.c:2564 -#: sql_help.c:2576 sql_help.c:2585 sql_help.c:2629 sql_help.c:2643 -#: sql_help.c:2671 sql_help.c:2679 sql_help.c:2687 sql_help.c:2695 -#: sql_help.c:2703 sql_help.c:2711 sql_help.c:2719 sql_help.c:2727 -#: sql_help.c:2736 sql_help.c:2747 sql_help.c:2755 sql_help.c:2763 -#: sql_help.c:2771 sql_help.c:2779 sql_help.c:2789 sql_help.c:2798 -#: sql_help.c:2807 sql_help.c:2815 sql_help.c:2824 sql_help.c:2832 -#: sql_help.c:2841 sql_help.c:2849 sql_help.c:2857 sql_help.c:2865 -#: sql_help.c:2873 sql_help.c:2881 sql_help.c:2889 sql_help.c:2897 -#: sql_help.c:2905 sql_help.c:2922 sql_help.c:2931 sql_help.c:2939 -#: sql_help.c:2956 sql_help.c:2971 sql_help.c:3236 sql_help.c:3287 -#: sql_help.c:3316 sql_help.c:3324 sql_help.c:3743 sql_help.c:3791 -#: sql_help.c:3932 +#: sql_help.c:1247 sql_help.c:1289 sql_help.c:1292 sql_help.c:1294 +#: sql_help.c:1296 sql_help.c:1298 sql_help.c:1300 sql_help.c:1303 +#: sql_help.c:1343 sql_help.c:1548 sql_help.c:1612 sql_help.c:1631 +#: sql_help.c:1644 sql_help.c:1698 sql_help.c:1702 sql_help.c:1712 +#: sql_help.c:1732 sql_help.c:1757 sql_help.c:1775 sql_help.c:1804 +#: sql_help.c:1879 sql_help.c:1921 sql_help.c:1943 sql_help.c:1963 +#: sql_help.c:1964 sql_help.c:1999 sql_help.c:2019 sql_help.c:2041 +#: sql_help.c:2054 sql_help.c:2085 sql_help.c:2110 sql_help.c:2154 +#: sql_help.c:2340 sql_help.c:2353 sql_help.c:2370 sql_help.c:2386 +#: sql_help.c:2425 sql_help.c:2476 sql_help.c:2480 sql_help.c:2482 +#: sql_help.c:2488 sql_help.c:2506 sql_help.c:2533 sql_help.c:2568 +#: sql_help.c:2580 sql_help.c:2589 sql_help.c:2633 sql_help.c:2647 +#: sql_help.c:2675 sql_help.c:2683 sql_help.c:2691 sql_help.c:2699 +#: sql_help.c:2707 sql_help.c:2715 sql_help.c:2723 sql_help.c:2731 +#: sql_help.c:2740 sql_help.c:2751 sql_help.c:2759 sql_help.c:2767 +#: sql_help.c:2775 sql_help.c:2783 sql_help.c:2793 sql_help.c:2802 +#: sql_help.c:2811 sql_help.c:2819 sql_help.c:2828 sql_help.c:2836 +#: sql_help.c:2845 sql_help.c:2853 sql_help.c:2861 sql_help.c:2869 +#: sql_help.c:2877 sql_help.c:2885 sql_help.c:2893 sql_help.c:2901 +#: sql_help.c:2909 sql_help.c:2926 sql_help.c:2935 sql_help.c:2943 +#: sql_help.c:2960 sql_help.c:2975 sql_help.c:3240 sql_help.c:3291 +#: sql_help.c:3320 sql_help.c:3328 sql_help.c:3747 sql_help.c:3795 +#: sql_help.c:3936 msgid "name" msgstr "Name" -#: sql_help.c:37 sql_help.c:40 sql_help.c:43 sql_help.c:309 sql_help.c:1405 -#: sql_help.c:2644 sql_help.c:3539 +#: sql_help.c:37 sql_help.c:40 sql_help.c:43 sql_help.c:311 sql_help.c:1409 +#: sql_help.c:2648 sql_help.c:3543 msgid "aggregate_signature" msgstr "Aggregatsignatur" #: sql_help.c:38 sql_help.c:65 sql_help.c:80 sql_help.c:116 sql_help.c:236 -#: sql_help.c:254 sql_help.c:373 sql_help.c:421 sql_help.c:498 sql_help.c:544 -#: sql_help.c:559 sql_help.c:581 sql_help.c:632 sql_help.c:698 sql_help.c:753 +#: sql_help.c:254 sql_help.c:375 sql_help.c:423 sql_help.c:500 sql_help.c:546 +#: sql_help.c:561 sql_help.c:583 sql_help.c:633 sql_help.c:698 sql_help.c:753 #: sql_help.c:774 sql_help.c:820 sql_help.c:844 sql_help.c:854 sql_help.c:884 #: sql_help.c:904 sql_help.c:996 sql_help.c:1061 sql_help.c:1104 #: sql_help.c:1125 sql_help.c:1139 sql_help.c:1151 sql_help.c:1164 -#: sql_help.c:1194 sql_help.c:1248 sql_help.c:1293 +#: sql_help.c:1194 sql_help.c:1248 sql_help.c:1297 msgid "new_name" msgstr "neuer_Name" #: sql_help.c:41 sql_help.c:67 sql_help.c:82 sql_help.c:118 sql_help.c:234 -#: sql_help.c:252 sql_help.c:371 sql_help.c:457 sql_help.c:503 sql_help.c:583 -#: sql_help.c:592 sql_help.c:651 sql_help.c:672 sql_help.c:701 sql_help.c:756 +#: sql_help.c:252 sql_help.c:373 sql_help.c:459 sql_help.c:505 sql_help.c:585 +#: sql_help.c:594 sql_help.c:652 sql_help.c:672 sql_help.c:701 sql_help.c:756 #: sql_help.c:856 sql_help.c:882 sql_help.c:902 sql_help.c:1045 #: sql_help.c:1063 sql_help.c:1106 sql_help.c:1127 sql_help.c:1189 -#: sql_help.c:1291 sql_help.c:2322 +#: sql_help.c:1295 sql_help.c:2326 msgid "new_owner" msgstr "neuer_Eigentümer" -#: sql_help.c:44 sql_help.c:69 sql_help.c:84 sql_help.c:238 sql_help.c:302 -#: sql_help.c:423 sql_help.c:508 sql_help.c:634 sql_help.c:676 sql_help.c:704 +#: sql_help.c:44 sql_help.c:69 sql_help.c:84 sql_help.c:238 sql_help.c:303 +#: sql_help.c:425 sql_help.c:510 sql_help.c:635 sql_help.c:676 sql_help.c:704 #: sql_help.c:759 sql_help.c:886 sql_help.c:998 sql_help.c:1108 #: sql_help.c:1129 sql_help.c:1141 sql_help.c:1153 sql_help.c:1196 -#: sql_help.c:1295 +#: sql_help.c:1299 msgid "new_schema" msgstr "neues_Schema" -#: sql_help.c:45 sql_help.c:1458 sql_help.c:2645 sql_help.c:3558 +#: sql_help.c:45 sql_help.c:1462 sql_help.c:2649 sql_help.c:3562 msgid "where aggregate_signature is:" msgstr "wobei Aggregatsignatur Folgendes ist:" -#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:319 sql_help.c:344 -#: sql_help.c:347 sql_help.c:350 sql_help.c:490 sql_help.c:495 sql_help.c:500 -#: sql_help.c:505 sql_help.c:510 sql_help.c:1423 sql_help.c:1459 -#: sql_help.c:1462 sql_help.c:1465 sql_help.c:1609 sql_help.c:1628 -#: sql_help.c:1631 sql_help.c:1876 sql_help.c:2646 sql_help.c:2649 -#: sql_help.c:2652 sql_help.c:2737 sql_help.c:3122 sql_help.c:3454 -#: sql_help.c:3545 sql_help.c:3559 sql_help.c:3562 sql_help.c:3565 +#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:321 sql_help.c:346 +#: sql_help.c:349 sql_help.c:352 sql_help.c:492 sql_help.c:497 sql_help.c:502 +#: sql_help.c:507 sql_help.c:512 sql_help.c:1427 sql_help.c:1463 +#: sql_help.c:1466 sql_help.c:1469 sql_help.c:1613 sql_help.c:1632 +#: sql_help.c:1635 sql_help.c:1880 sql_help.c:2650 sql_help.c:2653 +#: sql_help.c:2656 sql_help.c:2741 sql_help.c:3126 sql_help.c:3458 +#: sql_help.c:3549 sql_help.c:3563 sql_help.c:3566 sql_help.c:3569 msgid "argmode" msgstr "Argmodus" -#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:320 sql_help.c:345 -#: sql_help.c:348 sql_help.c:351 sql_help.c:491 sql_help.c:496 sql_help.c:501 -#: sql_help.c:506 sql_help.c:511 sql_help.c:1424 sql_help.c:1460 -#: sql_help.c:1463 sql_help.c:1466 sql_help.c:1610 sql_help.c:1629 -#: sql_help.c:1632 sql_help.c:1877 sql_help.c:2647 sql_help.c:2650 -#: sql_help.c:2653 sql_help.c:2738 sql_help.c:3546 sql_help.c:3560 -#: sql_help.c:3563 sql_help.c:3566 +#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:322 sql_help.c:347 +#: sql_help.c:350 sql_help.c:353 sql_help.c:493 sql_help.c:498 sql_help.c:503 +#: sql_help.c:508 sql_help.c:513 sql_help.c:1428 sql_help.c:1464 +#: sql_help.c:1467 sql_help.c:1470 sql_help.c:1614 sql_help.c:1633 +#: sql_help.c:1636 sql_help.c:1881 sql_help.c:2651 sql_help.c:2654 +#: sql_help.c:2657 sql_help.c:2742 sql_help.c:3550 sql_help.c:3564 +#: sql_help.c:3567 sql_help.c:3570 msgid "argname" msgstr "Argname" -#: sql_help.c:48 sql_help.c:51 sql_help.c:54 sql_help.c:321 sql_help.c:346 -#: sql_help.c:349 sql_help.c:352 sql_help.c:492 sql_help.c:497 sql_help.c:502 -#: sql_help.c:507 sql_help.c:512 sql_help.c:1425 sql_help.c:1461 -#: sql_help.c:1464 sql_help.c:1467 sql_help.c:1878 sql_help.c:2648 -#: sql_help.c:2651 sql_help.c:2654 sql_help.c:2739 sql_help.c:3547 -#: sql_help.c:3561 sql_help.c:3564 sql_help.c:3567 +#: sql_help.c:48 sql_help.c:51 sql_help.c:54 sql_help.c:323 sql_help.c:348 +#: sql_help.c:351 sql_help.c:354 sql_help.c:494 sql_help.c:499 sql_help.c:504 +#: sql_help.c:509 sql_help.c:514 sql_help.c:1429 sql_help.c:1465 +#: sql_help.c:1468 sql_help.c:1471 sql_help.c:1882 sql_help.c:2652 +#: sql_help.c:2655 sql_help.c:2658 sql_help.c:2743 sql_help.c:3551 +#: sql_help.c:3565 sql_help.c:3568 sql_help.c:3571 msgid "argtype" msgstr "Argtyp" -#: sql_help.c:110 sql_help.c:368 sql_help.c:446 sql_help.c:458 sql_help.c:814 -#: sql_help.c:899 sql_help.c:1122 sql_help.c:1242 sql_help.c:1270 -#: sql_help.c:1515 sql_help.c:1521 sql_help.c:1803 sql_help.c:1835 -#: sql_help.c:1842 sql_help.c:1918 sql_help.c:2082 sql_help.c:2171 -#: sql_help.c:2351 sql_help.c:2530 sql_help.c:2552 sql_help.c:2990 -#: sql_help.c:3156 +#: sql_help.c:110 sql_help.c:370 sql_help.c:448 sql_help.c:460 sql_help.c:814 +#: sql_help.c:899 sql_help.c:1122 sql_help.c:1242 sql_help.c:1274 +#: sql_help.c:1519 sql_help.c:1525 sql_help.c:1807 sql_help.c:1839 +#: sql_help.c:1846 sql_help.c:1922 sql_help.c:2086 sql_help.c:2175 +#: sql_help.c:2355 sql_help.c:2534 sql_help.c:2556 sql_help.c:2994 +#: sql_help.c:3160 msgid "option" msgstr "Option" -#: sql_help.c:111 sql_help.c:815 sql_help.c:1243 sql_help.c:1919 -#: sql_help.c:2083 sql_help.c:2531 +#: sql_help.c:111 sql_help.c:815 sql_help.c:1243 sql_help.c:1923 +#: sql_help.c:2087 sql_help.c:2535 msgid "where option can be:" msgstr "wobei Option Folgendes sein kann:" -#: sql_help.c:112 sql_help.c:1735 +#: sql_help.c:112 sql_help.c:1739 msgid "allowconn" msgstr "allowconn" -#: sql_help.c:113 sql_help.c:816 sql_help.c:1244 sql_help.c:1736 -#: sql_help.c:2084 sql_help.c:2532 +#: sql_help.c:113 sql_help.c:816 sql_help.c:1244 sql_help.c:1740 +#: sql_help.c:2088 sql_help.c:2536 msgid "connlimit" msgstr "Verbindungslimit" -#: sql_help.c:114 sql_help.c:1737 +#: sql_help.c:114 sql_help.c:1741 msgid "istemplate" msgstr "istemplate" -#: sql_help.c:120 sql_help.c:571 sql_help.c:637 sql_help.c:652 sql_help.c:1001 +#: sql_help.c:120 sql_help.c:573 sql_help.c:638 sql_help.c:1001 #: sql_help.c:1038 msgid "new_tablespace" msgstr "neuer_Tablespace" -#: sql_help.c:122 sql_help.c:125 sql_help.c:127 sql_help.c:517 sql_help.c:519 -#: sql_help.c:520 sql_help.c:823 sql_help.c:827 sql_help.c:830 sql_help.c:915 -#: sql_help.c:918 sql_help.c:1250 sql_help.c:1253 sql_help.c:1255 -#: sql_help.c:1887 sql_help.c:3341 sql_help.c:3732 +#: sql_help.c:122 sql_help.c:125 sql_help.c:127 sql_help.c:519 sql_help.c:521 +#: sql_help.c:522 sql_help.c:823 sql_help.c:827 sql_help.c:830 sql_help.c:915 +#: sql_help.c:918 sql_help.c:1251 sql_help.c:1255 sql_help.c:1258 +#: sql_help.c:1891 sql_help.c:3345 sql_help.c:3736 msgid "configuration_parameter" msgstr "Konfigurationsparameter" -#: sql_help.c:123 sql_help.c:369 sql_help.c:441 sql_help.c:447 sql_help.c:459 -#: sql_help.c:518 sql_help.c:566 sql_help.c:643 sql_help.c:649 sql_help.c:824 +#: sql_help.c:123 sql_help.c:371 sql_help.c:443 sql_help.c:449 sql_help.c:461 +#: sql_help.c:520 sql_help.c:568 sql_help.c:644 sql_help.c:650 sql_help.c:824 #: sql_help.c:900 sql_help.c:916 sql_help.c:917 sql_help.c:1020 -#: sql_help.c:1040 sql_help.c:1066 sql_help.c:1123 sql_help.c:1251 -#: sql_help.c:1271 sql_help.c:1804 sql_help.c:1836 sql_help.c:1843 -#: sql_help.c:1888 sql_help.c:1889 sql_help.c:1947 sql_help.c:1979 -#: sql_help.c:2172 sql_help.c:2246 sql_help.c:2254 sql_help.c:2286 -#: sql_help.c:2308 sql_help.c:2325 sql_help.c:2352 sql_help.c:2553 -#: sql_help.c:3157 sql_help.c:3733 sql_help.c:3734 +#: sql_help.c:1040 sql_help.c:1066 sql_help.c:1123 sql_help.c:1252 +#: sql_help.c:1275 sql_help.c:1808 sql_help.c:1840 sql_help.c:1847 +#: sql_help.c:1892 sql_help.c:1893 sql_help.c:1951 sql_help.c:1983 +#: sql_help.c:2176 sql_help.c:2250 sql_help.c:2258 sql_help.c:2290 +#: sql_help.c:2312 sql_help.c:2329 sql_help.c:2356 sql_help.c:2557 +#: sql_help.c:3161 sql_help.c:3737 sql_help.c:3738 msgid "value" msgstr "Wert" @@ -3445,9 +3455,9 @@ msgstr "Wert" msgid "target_role" msgstr "Zielrolle" -#: sql_help.c:186 sql_help.c:1787 sql_help.c:2130 sql_help.c:2135 -#: sql_help.c:3104 sql_help.c:3111 sql_help.c:3125 sql_help.c:3131 -#: sql_help.c:3436 sql_help.c:3443 sql_help.c:3457 sql_help.c:3463 +#: sql_help.c:186 sql_help.c:1791 sql_help.c:2134 sql_help.c:2139 +#: sql_help.c:3108 sql_help.c:3115 sql_help.c:3129 sql_help.c:3135 +#: sql_help.c:3440 sql_help.c:3447 sql_help.c:3461 sql_help.c:3467 msgid "schema_name" msgstr "Schemaname" @@ -3460,33 +3470,33 @@ msgid "where abbreviated_grant_or_revoke is one of:" msgstr "wobei abgekürztes_Grant_oder_Revoke Folgendes sein kann:" #: sql_help.c:189 sql_help.c:190 sql_help.c:191 sql_help.c:192 sql_help.c:193 -#: sql_help.c:194 sql_help.c:195 sql_help.c:196 sql_help.c:542 sql_help.c:570 -#: sql_help.c:636 sql_help.c:777 sql_help.c:834 sql_help.c:1000 -#: sql_help.c:1258 sql_help.c:1922 sql_help.c:1923 sql_help.c:1924 -#: sql_help.c:1925 sql_help.c:1926 sql_help.c:2052 sql_help.c:2087 -#: sql_help.c:2088 sql_help.c:2089 sql_help.c:2090 sql_help.c:2091 -#: sql_help.c:2535 sql_help.c:2536 sql_help.c:2537 sql_help.c:2538 -#: sql_help.c:2539 sql_help.c:3138 sql_help.c:3139 sql_help.c:3140 -#: sql_help.c:3437 sql_help.c:3441 sql_help.c:3444 sql_help.c:3446 -#: sql_help.c:3448 sql_help.c:3450 sql_help.c:3452 sql_help.c:3458 -#: sql_help.c:3460 sql_help.c:3462 sql_help.c:3464 sql_help.c:3466 -#: sql_help.c:3468 sql_help.c:3469 sql_help.c:3470 sql_help.c:3753 +#: sql_help.c:194 sql_help.c:195 sql_help.c:196 sql_help.c:544 sql_help.c:572 +#: sql_help.c:637 sql_help.c:777 sql_help.c:834 sql_help.c:1000 +#: sql_help.c:1262 sql_help.c:1926 sql_help.c:1927 sql_help.c:1928 +#: sql_help.c:1929 sql_help.c:1930 sql_help.c:2056 sql_help.c:2091 +#: sql_help.c:2092 sql_help.c:2093 sql_help.c:2094 sql_help.c:2095 +#: sql_help.c:2539 sql_help.c:2540 sql_help.c:2541 sql_help.c:2542 +#: sql_help.c:2543 sql_help.c:3142 sql_help.c:3143 sql_help.c:3144 +#: sql_help.c:3441 sql_help.c:3445 sql_help.c:3448 sql_help.c:3450 +#: sql_help.c:3452 sql_help.c:3454 sql_help.c:3456 sql_help.c:3462 +#: sql_help.c:3464 sql_help.c:3466 sql_help.c:3468 sql_help.c:3470 +#: sql_help.c:3472 sql_help.c:3473 sql_help.c:3474 sql_help.c:3757 msgid "role_name" msgstr "Rollenname" -#: sql_help.c:222 sql_help.c:434 sql_help.c:1011 sql_help.c:1013 -#: sql_help.c:1287 sql_help.c:1756 sql_help.c:1760 sql_help.c:1846 -#: sql_help.c:1850 sql_help.c:1943 sql_help.c:2258 sql_help.c:2268 -#: sql_help.c:2290 sql_help.c:3187 sql_help.c:3202 sql_help.c:3204 -#: sql_help.c:3618 sql_help.c:3619 sql_help.c:3628 sql_help.c:3669 -#: sql_help.c:3670 sql_help.c:3671 sql_help.c:3672 sql_help.c:3673 -#: sql_help.c:3674 sql_help.c:3707 sql_help.c:3708 sql_help.c:3713 -#: sql_help.c:3718 sql_help.c:3857 sql_help.c:3858 sql_help.c:3867 -#: sql_help.c:3908 sql_help.c:3909 sql_help.c:3910 sql_help.c:3911 -#: sql_help.c:3912 sql_help.c:3913 sql_help.c:3960 sql_help.c:3962 -#: sql_help.c:3995 sql_help.c:4051 sql_help.c:4052 sql_help.c:4061 -#: sql_help.c:4102 sql_help.c:4103 sql_help.c:4104 sql_help.c:4105 -#: sql_help.c:4106 sql_help.c:4107 +#: sql_help.c:222 sql_help.c:436 sql_help.c:1011 sql_help.c:1013 +#: sql_help.c:1291 sql_help.c:1760 sql_help.c:1764 sql_help.c:1850 +#: sql_help.c:1854 sql_help.c:1947 sql_help.c:2262 sql_help.c:2272 +#: sql_help.c:2294 sql_help.c:3191 sql_help.c:3206 sql_help.c:3208 +#: sql_help.c:3622 sql_help.c:3623 sql_help.c:3632 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:3711 sql_help.c:3712 sql_help.c:3717 +#: sql_help.c:3722 sql_help.c:3861 sql_help.c:3862 sql_help.c:3871 +#: sql_help.c:3912 sql_help.c:3913 sql_help.c:3914 sql_help.c:3915 +#: sql_help.c:3916 sql_help.c:3917 sql_help.c:3964 sql_help.c:3966 +#: sql_help.c:3999 sql_help.c:4055 sql_help.c:4056 sql_help.c:4065 +#: sql_help.c:4106 sql_help.c:4107 sql_help.c:4108 sql_help.c:4109 +#: sql_help.c:4110 sql_help.c:4111 msgid "expression" msgstr "Ausdruck" @@ -3494,11 +3504,11 @@ msgstr "Ausdruck" msgid "domain_constraint" msgstr "Domänen-Constraint" -#: sql_help.c:227 sql_help.c:229 sql_help.c:232 sql_help.c:449 sql_help.c:450 +#: sql_help.c:227 sql_help.c:229 sql_help.c:232 sql_help.c:451 sql_help.c:452 #: sql_help.c:993 sql_help.c:1026 sql_help.c:1027 sql_help.c:1028 -#: sql_help.c:1048 sql_help.c:1411 sql_help.c:1413 sql_help.c:1759 -#: sql_help.c:1845 sql_help.c:1849 sql_help.c:2257 sql_help.c:2267 -#: sql_help.c:3199 +#: sql_help.c:1048 sql_help.c:1415 sql_help.c:1417 sql_help.c:1763 +#: sql_help.c:1849 sql_help.c:1853 sql_help.c:2261 sql_help.c:2271 +#: sql_help.c:3203 msgid "constraint_name" msgstr "Constraint-Name" @@ -3506,319 +3516,320 @@ msgstr "Constraint-Name" msgid "new_constraint_name" msgstr "neuer_Constraint-Name" -#: sql_help.c:300 sql_help.c:898 +#: sql_help.c:301 sql_help.c:898 msgid "new_version" msgstr "neue_Version" -#: sql_help.c:304 sql_help.c:306 +#: sql_help.c:305 sql_help.c:307 msgid "member_object" msgstr "Elementobjekt" -#: sql_help.c:307 +#: sql_help.c:308 msgid "where member_object is:" msgstr "wobei Elementobjekt Folgendes ist:" -#: sql_help.c:308 sql_help.c:1404 sql_help.c:3538 +#: sql_help.c:309 sql_help.c:314 sql_help.c:315 sql_help.c:316 sql_help.c:317 +#: sql_help.c:318 sql_help.c:319 sql_help.c:324 sql_help.c:328 sql_help.c:330 +#: sql_help.c:332 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:339 sql_help.c:340 sql_help.c:343 +#: sql_help.c:344 sql_help.c:1407 sql_help.c:1412 sql_help.c:1419 +#: sql_help.c:1420 sql_help.c:1421 sql_help.c:1422 sql_help.c:1423 +#: sql_help.c:1424 sql_help.c:1425 sql_help.c:1430 sql_help.c:1432 +#: sql_help.c:1436 sql_help.c:1438 sql_help.c:1442 sql_help.c:1443 +#: sql_help.c:1446 sql_help.c:1447 sql_help.c:1448 sql_help.c:1449 +#: sql_help.c:1450 sql_help.c:1451 sql_help.c:1452 sql_help.c:1453 +#: sql_help.c:1454 sql_help.c:1459 sql_help.c:1460 sql_help.c:3539 +#: sql_help.c:3544 sql_help.c:3545 sql_help.c:3546 sql_help.c:3547 +#: sql_help.c:3553 sql_help.c:3554 sql_help.c:3555 sql_help.c:3556 +#: sql_help.c:3557 sql_help.c:3558 sql_help.c:3559 sql_help.c:3560 +msgid "object_name" +msgstr "Objektname" + +#: sql_help.c:310 sql_help.c:1408 sql_help.c:3542 msgid "aggregate_name" msgstr "Aggregatname" -#: sql_help.c:310 sql_help.c:1406 sql_help.c:1674 sql_help.c:1678 -#: sql_help.c:1680 sql_help.c:2662 +#: sql_help.c:312 sql_help.c:1410 sql_help.c:1678 sql_help.c:1682 +#: sql_help.c:1684 sql_help.c:2666 msgid "source_type" msgstr "Quelltyp" -#: sql_help.c:311 sql_help.c:1407 sql_help.c:1675 sql_help.c:1679 -#: sql_help.c:1681 sql_help.c:2663 +#: sql_help.c:313 sql_help.c:1411 sql_help.c:1679 sql_help.c:1683 +#: sql_help.c:1685 sql_help.c:2667 msgid "target_type" msgstr "Zieltyp" -#: sql_help.c:312 sql_help.c:313 sql_help.c:314 sql_help.c:315 sql_help.c:316 -#: sql_help.c:317 sql_help.c:322 sql_help.c:326 sql_help.c:328 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:336 sql_help.c:337 sql_help.c:338 sql_help.c:341 sql_help.c:342 -#: sql_help.c:1403 sql_help.c:1408 sql_help.c:1415 sql_help.c:1416 -#: sql_help.c:1417 sql_help.c:1418 sql_help.c:1419 sql_help.c:1420 -#: sql_help.c:1421 sql_help.c:1426 sql_help.c:1428 sql_help.c:1432 -#: sql_help.c:1434 sql_help.c:1438 sql_help.c:1439 sql_help.c:1442 -#: sql_help.c:1443 sql_help.c:1444 sql_help.c:1445 sql_help.c:1446 -#: sql_help.c:1447 sql_help.c:1448 sql_help.c:1449 sql_help.c:1450 -#: sql_help.c:1455 sql_help.c:1456 sql_help.c:3535 sql_help.c:3540 -#: sql_help.c:3541 sql_help.c:3542 sql_help.c:3543 sql_help.c:3549 -#: sql_help.c:3550 sql_help.c:3551 sql_help.c:3552 sql_help.c:3553 -#: sql_help.c:3554 sql_help.c:3555 sql_help.c:3556 -msgid "object_name" -msgstr "Objektname" - -#: sql_help.c:318 sql_help.c:741 sql_help.c:1422 sql_help.c:1676 -#: sql_help.c:1711 sql_help.c:1774 sql_help.c:1996 sql_help.c:2027 -#: sql_help.c:2426 sql_help.c:3121 sql_help.c:3453 sql_help.c:3544 -#: sql_help.c:3647 sql_help.c:3651 sql_help.c:3655 sql_help.c:3658 -#: sql_help.c:3886 sql_help.c:3890 sql_help.c:3894 sql_help.c:3897 -#: sql_help.c:4080 sql_help.c:4084 sql_help.c:4088 sql_help.c:4091 +#: sql_help.c:320 sql_help.c:741 sql_help.c:1426 sql_help.c:1680 +#: sql_help.c:1715 sql_help.c:1778 sql_help.c:2000 sql_help.c:2031 +#: sql_help.c:2430 sql_help.c:3125 sql_help.c:3457 sql_help.c:3548 +#: sql_help.c:3651 sql_help.c:3655 sql_help.c:3659 sql_help.c:3662 +#: sql_help.c:3890 sql_help.c:3894 sql_help.c:3898 sql_help.c:3901 +#: sql_help.c:4084 sql_help.c:4088 sql_help.c:4092 sql_help.c:4095 msgid "function_name" msgstr "Funktionsname" -#: sql_help.c:323 sql_help.c:734 sql_help.c:1429 sql_help.c:2020 +#: sql_help.c:325 sql_help.c:734 sql_help.c:1433 sql_help.c:2024 msgid "operator_name" msgstr "Operatorname" -#: sql_help.c:324 sql_help.c:670 sql_help.c:674 sql_help.c:678 sql_help.c:1430 -#: sql_help.c:1997 sql_help.c:2780 +#: sql_help.c:326 sql_help.c:670 sql_help.c:674 sql_help.c:678 sql_help.c:1434 +#: sql_help.c:2001 sql_help.c:2784 msgid "left_type" msgstr "linker_Typ" -#: sql_help.c:325 sql_help.c:671 sql_help.c:675 sql_help.c:679 sql_help.c:1431 -#: sql_help.c:1998 sql_help.c:2781 +#: sql_help.c:327 sql_help.c:671 sql_help.c:675 sql_help.c:679 sql_help.c:1435 +#: sql_help.c:2002 sql_help.c:2785 msgid "right_type" msgstr "rechter_Typ" -#: sql_help.c:327 sql_help.c:329 sql_help.c:697 sql_help.c:700 sql_help.c:703 +#: sql_help.c:329 sql_help.c:331 sql_help.c:697 sql_help.c:700 sql_help.c:703 #: sql_help.c:732 sql_help.c:744 sql_help.c:752 sql_help.c:755 sql_help.c:758 -#: sql_help.c:1433 sql_help.c:1435 sql_help.c:2017 sql_help.c:2038 -#: sql_help.c:2273 sql_help.c:2790 sql_help.c:2799 +#: sql_help.c:1437 sql_help.c:1439 sql_help.c:2021 sql_help.c:2042 +#: sql_help.c:2277 sql_help.c:2794 sql_help.c:2803 msgid "index_method" msgstr "Indexmethode" -#: sql_help.c:339 sql_help.c:1044 sql_help.c:1451 sql_help.c:1884 -#: sql_help.c:2249 sql_help.c:2395 sql_help.c:2913 sql_help.c:3135 -#: sql_help.c:3467 +#: sql_help.c:341 sql_help.c:1044 sql_help.c:1455 sql_help.c:1888 +#: sql_help.c:2253 sql_help.c:2399 sql_help.c:2917 sql_help.c:3139 +#: sql_help.c:3471 msgid "type_name" msgstr "Typname" -#: sql_help.c:340 sql_help.c:1452 sql_help.c:1883 sql_help.c:2396 -#: sql_help.c:2620 sql_help.c:2914 sql_help.c:3127 sql_help.c:3459 +#: sql_help.c:342 sql_help.c:1456 sql_help.c:1887 sql_help.c:2400 +#: sql_help.c:2624 sql_help.c:2918 sql_help.c:3131 sql_help.c:3463 msgid "lang_name" msgstr "Sprachname" -#: sql_help.c:343 +#: sql_help.c:345 msgid "and aggregate_signature is:" msgstr "und Aggregatsignatur Folgendes ist:" -#: sql_help.c:366 sql_help.c:1546 sql_help.c:1801 +#: sql_help.c:368 sql_help.c:1550 sql_help.c:1805 msgid "handler_function" msgstr "Handler-Funktion" -#: sql_help.c:367 sql_help.c:1802 +#: sql_help.c:369 sql_help.c:1806 msgid "validator_function" msgstr "Validator-Funktion" -#: sql_help.c:416 sql_help.c:493 sql_help.c:625 sql_help.c:988 sql_help.c:1187 -#: sql_help.c:2264 sql_help.c:2265 sql_help.c:2281 sql_help.c:2282 +#: sql_help.c:418 sql_help.c:495 sql_help.c:626 sql_help.c:988 sql_help.c:1187 +#: sql_help.c:2268 sql_help.c:2269 sql_help.c:2285 sql_help.c:2286 msgid "action" msgstr "Aktion" -#: sql_help.c:418 sql_help.c:425 sql_help.c:429 sql_help.c:430 sql_help.c:433 -#: sql_help.c:435 sql_help.c:436 sql_help.c:437 sql_help.c:439 sql_help.c:442 -#: sql_help.c:444 sql_help.c:445 sql_help.c:629 sql_help.c:639 sql_help.c:641 -#: sql_help.c:644 sql_help.c:646 sql_help.c:880 sql_help.c:990 sql_help.c:1003 +#: sql_help.c:420 sql_help.c:427 sql_help.c:431 sql_help.c:432 sql_help.c:435 +#: sql_help.c:437 sql_help.c:438 sql_help.c:439 sql_help.c:441 sql_help.c:444 +#: sql_help.c:446 sql_help.c:447 sql_help.c:630 sql_help.c:640 sql_help.c:642 +#: sql_help.c:645 sql_help.c:647 sql_help.c:880 sql_help.c:990 sql_help.c:1003 #: sql_help.c:1007 sql_help.c:1008 sql_help.c:1012 sql_help.c:1014 #: sql_help.c:1015 sql_help.c:1016 sql_help.c:1018 sql_help.c:1021 -#: sql_help.c:1023 sql_help.c:1286 sql_help.c:1289 sql_help.c:1309 -#: sql_help.c:1410 sql_help.c:1512 sql_help.c:1517 sql_help.c:1531 -#: sql_help.c:1532 sql_help.c:1533 sql_help.c:1833 sql_help.c:1881 -#: sql_help.c:1942 sql_help.c:1977 sql_help.c:2157 sql_help.c:2237 -#: sql_help.c:2250 sql_help.c:2269 sql_help.c:2271 sql_help.c:2278 -#: sql_help.c:2289 sql_help.c:2306 sql_help.c:2429 sql_help.c:2565 -#: sql_help.c:3106 sql_help.c:3107 sql_help.c:3186 sql_help.c:3201 -#: sql_help.c:3203 sql_help.c:3205 sql_help.c:3438 sql_help.c:3439 -#: sql_help.c:3537 sql_help.c:3678 sql_help.c:3917 sql_help.c:3959 -#: sql_help.c:3961 sql_help.c:3963 sql_help.c:3980 sql_help.c:3983 -#: sql_help.c:4111 +#: sql_help.c:1023 sql_help.c:1290 sql_help.c:1293 sql_help.c:1313 +#: sql_help.c:1414 sql_help.c:1516 sql_help.c:1521 sql_help.c:1535 +#: sql_help.c:1536 sql_help.c:1537 sql_help.c:1837 sql_help.c:1885 +#: sql_help.c:1946 sql_help.c:1981 sql_help.c:2161 sql_help.c:2241 +#: sql_help.c:2254 sql_help.c:2273 sql_help.c:2275 sql_help.c:2282 +#: sql_help.c:2293 sql_help.c:2310 sql_help.c:2433 sql_help.c:2569 +#: sql_help.c:3110 sql_help.c:3111 sql_help.c:3190 sql_help.c:3205 +#: sql_help.c:3207 sql_help.c:3209 sql_help.c:3442 sql_help.c:3443 +#: sql_help.c:3541 sql_help.c:3682 sql_help.c:3921 sql_help.c:3963 +#: sql_help.c:3965 sql_help.c:3967 sql_help.c:3984 sql_help.c:3987 +#: sql_help.c:4115 msgid "column_name" msgstr "Spaltenname" -#: sql_help.c:419 sql_help.c:630 sql_help.c:991 +#: sql_help.c:421 sql_help.c:631 sql_help.c:991 msgid "new_column_name" msgstr "neuer_Spaltenname" -#: sql_help.c:424 sql_help.c:514 sql_help.c:638 sql_help.c:1002 +#: sql_help.c:426 sql_help.c:516 sql_help.c:639 sql_help.c:1002 #: sql_help.c:1200 msgid "where action is one of:" msgstr "wobei Aktion Folgendes sein kann:" -#: sql_help.c:426 sql_help.c:431 sql_help.c:1004 sql_help.c:1009 -#: sql_help.c:1202 sql_help.c:1206 sql_help.c:1754 sql_help.c:1834 -#: sql_help.c:2016 sql_help.c:2238 sql_help.c:2474 sql_help.c:3288 +#: sql_help.c:428 sql_help.c:433 sql_help.c:1004 sql_help.c:1009 +#: sql_help.c:1202 sql_help.c:1206 sql_help.c:1758 sql_help.c:1838 +#: sql_help.c:2020 sql_help.c:2242 sql_help.c:2478 sql_help.c:3292 msgid "data_type" msgstr "Datentyp" -#: sql_help.c:427 sql_help.c:432 sql_help.c:1005 sql_help.c:1010 -#: sql_help.c:1203 sql_help.c:1207 sql_help.c:1755 sql_help.c:1837 -#: sql_help.c:1944 sql_help.c:2239 sql_help.c:2475 sql_help.c:2481 -#: sql_help.c:3196 +#: sql_help.c:429 sql_help.c:434 sql_help.c:1005 sql_help.c:1010 +#: sql_help.c:1203 sql_help.c:1207 sql_help.c:1759 sql_help.c:1841 +#: sql_help.c:1948 sql_help.c:2243 sql_help.c:2479 sql_help.c:2485 +#: sql_help.c:3200 msgid "collation" msgstr "Sortierfolge" -#: sql_help.c:428 sql_help.c:1006 sql_help.c:1838 sql_help.c:2240 -#: sql_help.c:2251 +#: sql_help.c:430 sql_help.c:1006 sql_help.c:1842 sql_help.c:2244 +#: sql_help.c:2255 msgid "column_constraint" msgstr "Spalten-Constraint" -#: sql_help.c:438 sql_help.c:640 sql_help.c:1017 +#: sql_help.c:440 sql_help.c:641 sql_help.c:1017 msgid "integer" msgstr "ganze_Zahl" -#: sql_help.c:440 sql_help.c:443 sql_help.c:642 sql_help.c:645 sql_help.c:1019 +#: sql_help.c:442 sql_help.c:445 sql_help.c:643 sql_help.c:646 sql_help.c:1019 #: sql_help.c:1022 msgid "attribute_option" msgstr "Attributoption" -#: sql_help.c:448 sql_help.c:1024 sql_help.c:1839 sql_help.c:2241 -#: sql_help.c:2252 +#: sql_help.c:450 sql_help.c:1024 sql_help.c:1843 sql_help.c:2245 +#: sql_help.c:2256 msgid "table_constraint" msgstr "Tabellen-Constraint" -#: sql_help.c:451 sql_help.c:452 sql_help.c:453 sql_help.c:454 sql_help.c:1029 -#: sql_help.c:1030 sql_help.c:1031 sql_help.c:1032 sql_help.c:1453 +#: sql_help.c:453 sql_help.c:454 sql_help.c:455 sql_help.c:456 sql_help.c:1029 +#: sql_help.c:1030 sql_help.c:1031 sql_help.c:1032 sql_help.c:1457 msgid "trigger_name" msgstr "Triggername" -#: sql_help.c:455 sql_help.c:456 sql_help.c:1042 sql_help.c:1043 -#: sql_help.c:1840 sql_help.c:2244 +#: sql_help.c:457 sql_help.c:458 sql_help.c:1042 sql_help.c:1043 +#: sql_help.c:1844 sql_help.c:2248 msgid "parent_table" msgstr "Elterntabelle" -#: sql_help.c:513 sql_help.c:563 sql_help.c:627 sql_help.c:1167 -#: sql_help.c:1786 +#: sql_help.c:515 sql_help.c:565 sql_help.c:628 sql_help.c:1167 +#: sql_help.c:1790 msgid "extension_name" msgstr "Erweiterungsname" -#: sql_help.c:515 sql_help.c:1885 +#: sql_help.c:517 sql_help.c:1889 msgid "execution_cost" msgstr "Ausführungskosten" -#: sql_help.c:516 sql_help.c:1886 +#: sql_help.c:518 sql_help.c:1890 msgid "result_rows" msgstr "Ergebniszeilen" -#: sql_help.c:537 sql_help.c:539 sql_help.c:813 sql_help.c:821 sql_help.c:825 +#: sql_help.c:539 sql_help.c:541 sql_help.c:813 sql_help.c:821 sql_help.c:825 #: sql_help.c:828 sql_help.c:831 sql_help.c:1241 sql_help.c:1249 -#: sql_help.c:1252 sql_help.c:1254 sql_help.c:1256 sql_help.c:2131 -#: sql_help.c:2133 sql_help.c:2136 sql_help.c:2137 sql_help.c:3105 -#: sql_help.c:3109 sql_help.c:3112 sql_help.c:3114 sql_help.c:3116 -#: sql_help.c:3118 sql_help.c:3120 sql_help.c:3126 sql_help.c:3128 -#: sql_help.c:3130 sql_help.c:3132 sql_help.c:3134 sql_help.c:3136 +#: sql_help.c:1253 sql_help.c:1256 sql_help.c:1259 sql_help.c:2135 +#: sql_help.c:2137 sql_help.c:2140 sql_help.c:2141 sql_help.c:3109 +#: sql_help.c:3113 sql_help.c:3116 sql_help.c:3118 sql_help.c:3120 +#: sql_help.c:3122 sql_help.c:3124 sql_help.c:3130 sql_help.c:3132 +#: sql_help.c:3134 sql_help.c:3136 sql_help.c:3138 sql_help.c:3140 msgid "role_specification" msgstr "Rollenangabe" -#: sql_help.c:538 sql_help.c:540 sql_help.c:1268 sql_help.c:1729 -#: sql_help.c:2139 sql_help.c:2550 sql_help.c:2947 sql_help.c:3763 +#: sql_help.c:540 sql_help.c:542 sql_help.c:1272 sql_help.c:1733 +#: sql_help.c:2143 sql_help.c:2554 sql_help.c:2951 sql_help.c:3767 msgid "user_name" msgstr "Benutzername" -#: sql_help.c:541 sql_help.c:833 sql_help.c:1257 sql_help.c:2138 -#: sql_help.c:3137 +#: sql_help.c:543 sql_help.c:833 sql_help.c:1261 sql_help.c:2142 +#: sql_help.c:3141 msgid "where role_specification can be:" msgstr "wobei Rollenangabe Folgendes sein kann:" -#: sql_help.c:543 +#: sql_help.c:545 msgid "group_name" msgstr "Gruppenname" -#: sql_help.c:561 sql_help.c:1734 sql_help.c:1948 sql_help.c:1980 -#: sql_help.c:2247 sql_help.c:2255 sql_help.c:2287 sql_help.c:2309 -#: sql_help.c:2321 sql_help.c:3133 sql_help.c:3465 +#: sql_help.c:563 sql_help.c:1738 sql_help.c:1952 sql_help.c:1984 +#: sql_help.c:2251 sql_help.c:2259 sql_help.c:2291 sql_help.c:2313 +#: sql_help.c:2325 sql_help.c:3137 sql_help.c:3469 msgid "tablespace_name" msgstr "Tablespace-Name" -#: sql_help.c:565 sql_help.c:568 sql_help.c:648 sql_help.c:650 sql_help.c:1039 -#: sql_help.c:1041 sql_help.c:1946 sql_help.c:1978 sql_help.c:2245 -#: sql_help.c:2253 sql_help.c:2285 sql_help.c:2307 +#: sql_help.c:567 sql_help.c:570 sql_help.c:649 sql_help.c:651 sql_help.c:1039 +#: sql_help.c:1041 sql_help.c:1950 sql_help.c:1982 sql_help.c:2249 +#: sql_help.c:2257 sql_help.c:2289 sql_help.c:2311 msgid "storage_parameter" msgstr "Storage-Parameter" -#: sql_help.c:591 sql_help.c:1427 sql_help.c:3548 +#: sql_help.c:593 sql_help.c:1431 sql_help.c:3552 msgid "large_object_oid" msgstr "Large-Object-OID" -#: sql_help.c:647 sql_help.c:1037 sql_help.c:1046 sql_help.c:1049 -#: sql_help.c:1349 +#: sql_help.c:648 sql_help.c:1037 sql_help.c:1046 sql_help.c:1049 +#: sql_help.c:1353 msgid "index_name" msgstr "Indexname" -#: sql_help.c:680 sql_help.c:2001 +#: sql_help.c:680 sql_help.c:2005 msgid "res_proc" msgstr "Res-Funktion" -#: sql_help.c:681 sql_help.c:2002 +#: sql_help.c:681 sql_help.c:2006 msgid "join_proc" msgstr "Join-Funktion" -#: sql_help.c:733 sql_help.c:745 sql_help.c:2019 +#: sql_help.c:733 sql_help.c:745 sql_help.c:2023 msgid "strategy_number" msgstr "Strategienummer" #: sql_help.c:735 sql_help.c:736 sql_help.c:739 sql_help.c:740 sql_help.c:746 -#: sql_help.c:747 sql_help.c:749 sql_help.c:750 sql_help.c:2021 -#: sql_help.c:2022 sql_help.c:2025 sql_help.c:2026 +#: sql_help.c:747 sql_help.c:749 sql_help.c:750 sql_help.c:2025 +#: sql_help.c:2026 sql_help.c:2029 sql_help.c:2030 msgid "op_type" msgstr "Optyp" -#: sql_help.c:737 sql_help.c:2023 +#: sql_help.c:737 sql_help.c:2027 msgid "sort_family_name" msgstr "Sortierfamilienname" -#: sql_help.c:738 sql_help.c:748 sql_help.c:2024 +#: sql_help.c:738 sql_help.c:748 sql_help.c:2028 msgid "support_number" msgstr "Unterst-Nummer" -#: sql_help.c:742 sql_help.c:1677 sql_help.c:2028 sql_help.c:2398 -#: sql_help.c:2400 +#: sql_help.c:742 sql_help.c:1681 sql_help.c:2032 sql_help.c:2402 +#: sql_help.c:2404 msgid "argument_type" msgstr "Argumenttyp" #: sql_help.c:773 sql_help.c:776 sql_help.c:843 sql_help.c:879 sql_help.c:1163 -#: sql_help.c:1166 sql_help.c:1308 sql_help.c:1348 sql_help.c:1412 -#: sql_help.c:1437 sql_help.c:1441 sql_help.c:1454 sql_help.c:1511 -#: sql_help.c:1516 sql_help.c:1832 sql_help.c:1940 sql_help.c:1976 -#: sql_help.c:2051 sql_help.c:2108 sql_help.c:2156 sql_help.c:2236 -#: sql_help.c:2248 sql_help.c:2305 sql_help.c:2423 sql_help.c:2599 -#: sql_help.c:2816 sql_help.c:2833 sql_help.c:2923 sql_help.c:3103 -#: sql_help.c:3108 sql_help.c:3153 sql_help.c:3184 sql_help.c:3435 -#: sql_help.c:3440 sql_help.c:3536 sql_help.c:3633 sql_help.c:3635 -#: sql_help.c:3684 sql_help.c:3723 sql_help.c:3872 sql_help.c:3874 -#: sql_help.c:3923 sql_help.c:3957 sql_help.c:3979 sql_help.c:3981 -#: sql_help.c:3982 sql_help.c:4066 sql_help.c:4068 sql_help.c:4117 +#: sql_help.c:1166 sql_help.c:1312 sql_help.c:1352 sql_help.c:1416 +#: sql_help.c:1441 sql_help.c:1445 sql_help.c:1458 sql_help.c:1515 +#: sql_help.c:1520 sql_help.c:1836 sql_help.c:1944 sql_help.c:1980 +#: sql_help.c:2055 sql_help.c:2112 sql_help.c:2160 sql_help.c:2240 +#: sql_help.c:2252 sql_help.c:2309 sql_help.c:2427 sql_help.c:2603 +#: sql_help.c:2820 sql_help.c:2837 sql_help.c:2927 sql_help.c:3107 +#: sql_help.c:3112 sql_help.c:3157 sql_help.c:3188 sql_help.c:3439 +#: sql_help.c:3444 sql_help.c:3540 sql_help.c:3637 sql_help.c:3639 +#: sql_help.c:3688 sql_help.c:3727 sql_help.c:3876 sql_help.c:3878 +#: sql_help.c:3927 sql_help.c:3961 sql_help.c:3983 sql_help.c:3985 +#: sql_help.c:3986 sql_help.c:4070 sql_help.c:4072 sql_help.c:4121 msgid "table_name" msgstr "Tabellenname" -#: sql_help.c:778 sql_help.c:2053 +#: sql_help.c:778 sql_help.c:2057 msgid "using_expression" msgstr "Using-Ausdruck" -#: sql_help.c:779 sql_help.c:2054 +#: sql_help.c:779 sql_help.c:2058 msgid "check_expression" msgstr "Check-Ausdruck" -#: sql_help.c:817 sql_help.c:1245 sql_help.c:1920 sql_help.c:2085 -#: sql_help.c:2533 +#: sql_help.c:817 sql_help.c:1245 sql_help.c:1924 sql_help.c:2089 +#: sql_help.c:2537 msgid "password" msgstr "Passwort" -#: sql_help.c:818 sql_help.c:1246 sql_help.c:1921 sql_help.c:2086 -#: sql_help.c:2534 +#: sql_help.c:818 sql_help.c:1246 sql_help.c:1925 sql_help.c:2090 +#: sql_help.c:2538 msgid "timestamp" msgstr "Zeit" -#: sql_help.c:822 sql_help.c:826 sql_help.c:829 sql_help.c:832 sql_help.c:3113 -#: sql_help.c:3445 +#: sql_help.c:822 sql_help.c:826 sql_help.c:829 sql_help.c:832 sql_help.c:1250 +#: sql_help.c:1254 sql_help.c:1257 sql_help.c:1260 sql_help.c:3117 +#: sql_help.c:3449 msgid "database_name" msgstr "Datenbankname" -#: sql_help.c:873 sql_help.c:2151 +#: sql_help.c:873 sql_help.c:2155 msgid "increment" msgstr "Inkrement" -#: sql_help.c:874 sql_help.c:2152 +#: sql_help.c:874 sql_help.c:2156 msgid "minvalue" msgstr "Minwert" -#: sql_help.c:875 sql_help.c:2153 +#: sql_help.c:875 sql_help.c:2157 msgid "maxvalue" msgstr "Maxwert" -#: sql_help.c:876 sql_help.c:2154 sql_help.c:3631 sql_help.c:3721 -#: sql_help.c:3870 sql_help.c:3999 sql_help.c:4064 +#: sql_help.c:876 sql_help.c:2158 sql_help.c:3635 sql_help.c:3725 +#: sql_help.c:3874 sql_help.c:4003 sql_help.c:4068 msgid "start" msgstr "Start" @@ -3826,7 +3837,7 @@ msgstr "Start" msgid "restart" msgstr "Restart" -#: sql_help.c:878 sql_help.c:2155 +#: sql_help.c:878 sql_help.c:2159 msgid "cache" msgstr "Cache" @@ -3842,7 +3853,7 @@ msgstr "Regelname" msgid "and table_constraint_using_index is:" msgstr "und Tabellen-Constraint-für-Index Folgendes ist:" -#: sql_help.c:1065 sql_help.c:1068 sql_help.c:2324 +#: sql_help.c:1065 sql_help.c:1068 sql_help.c:2328 msgid "tablespace_option" msgstr "Tablespace-Option" @@ -3863,7 +3874,7 @@ msgid "new_dictionary" msgstr "neues_Wörterbuch" #: sql_help.c:1191 sql_help.c:1201 sql_help.c:1204 sql_help.c:1205 -#: sql_help.c:2473 +#: sql_help.c:2477 msgid "attribute_name" msgstr "Attributname" @@ -3879,1417 +3890,1417 @@ msgstr "neuer_Enum-Wert" msgid "existing_enum_value" msgstr "existierender_Enum-Wert" -#: sql_help.c:1269 sql_help.c:1841 sql_help.c:2167 sql_help.c:2551 -#: sql_help.c:2948 sql_help.c:3119 sql_help.c:3154 sql_help.c:3451 +#: sql_help.c:1273 sql_help.c:1845 sql_help.c:2171 sql_help.c:2555 +#: sql_help.c:2952 sql_help.c:3123 sql_help.c:3158 sql_help.c:3455 msgid "server_name" msgstr "Servername" -#: sql_help.c:1297 sql_help.c:1300 sql_help.c:2566 +#: sql_help.c:1301 sql_help.c:1304 sql_help.c:2570 msgid "view_option_name" msgstr "Sichtoptionsname" -#: sql_help.c:1298 sql_help.c:2567 +#: sql_help.c:1302 sql_help.c:2571 msgid "view_option_value" msgstr "Sichtoptionswert" -#: sql_help.c:1323 sql_help.c:3779 sql_help.c:3781 sql_help.c:3805 +#: sql_help.c:1327 sql_help.c:3783 sql_help.c:3785 sql_help.c:3809 msgid "transaction_mode" msgstr "Transaktionsmodus" -#: sql_help.c:1324 sql_help.c:3782 sql_help.c:3806 +#: sql_help.c:1328 sql_help.c:3786 sql_help.c:3810 msgid "where transaction_mode is one of:" msgstr "wobei Transaktionsmodus Folgendes sein kann:" -#: sql_help.c:1409 +#: sql_help.c:1413 msgid "relation_name" msgstr "Relationsname" -#: sql_help.c:1414 sql_help.c:3115 sql_help.c:3447 +#: sql_help.c:1418 sql_help.c:3119 sql_help.c:3451 msgid "domain_name" msgstr "Domänenname" -#: sql_help.c:1436 +#: sql_help.c:1440 msgid "policy_name" msgstr "Policy-Name" -#: sql_help.c:1440 +#: sql_help.c:1444 msgid "rule_name" msgstr "Regelname" -#: sql_help.c:1457 +#: sql_help.c:1461 msgid "text" msgstr "Text" -#: sql_help.c:1482 sql_help.c:3297 sql_help.c:3485 +#: sql_help.c:1486 sql_help.c:3301 sql_help.c:3489 msgid "transaction_id" msgstr "Transaktions-ID" -#: sql_help.c:1513 sql_help.c:1519 sql_help.c:3223 +#: sql_help.c:1517 sql_help.c:1523 sql_help.c:3227 msgid "filename" msgstr "Dateiname" -#: sql_help.c:1514 sql_help.c:1520 sql_help.c:2110 sql_help.c:2111 -#: sql_help.c:2112 +#: sql_help.c:1518 sql_help.c:1524 sql_help.c:2114 sql_help.c:2115 +#: sql_help.c:2116 msgid "command" msgstr "Befehl" -#: sql_help.c:1518 sql_help.c:1981 sql_help.c:2310 sql_help.c:2568 -#: sql_help.c:2586 sql_help.c:3188 +#: sql_help.c:1522 sql_help.c:1985 sql_help.c:2314 sql_help.c:2572 +#: sql_help.c:2590 sql_help.c:3192 msgid "query" msgstr "Anfrage" -#: sql_help.c:1522 sql_help.c:2993 +#: sql_help.c:1526 sql_help.c:2997 msgid "where option can be one of:" msgstr "wobei Option eine der folgenden sein kann:" -#: sql_help.c:1523 +#: sql_help.c:1527 msgid "format_name" msgstr "Formatname" -#: sql_help.c:1524 sql_help.c:1525 sql_help.c:1528 sql_help.c:2994 -#: sql_help.c:2995 sql_help.c:2996 sql_help.c:2997 sql_help.c:2998 +#: sql_help.c:1528 sql_help.c:1529 sql_help.c:1532 sql_help.c:2998 +#: sql_help.c:2999 sql_help.c:3000 sql_help.c:3001 sql_help.c:3002 msgid "boolean" msgstr "boolean" -#: sql_help.c:1526 +#: sql_help.c:1530 msgid "delimiter_character" msgstr "Trennzeichen" -#: sql_help.c:1527 +#: sql_help.c:1531 msgid "null_string" msgstr "Null-Zeichenkette" -#: sql_help.c:1529 +#: sql_help.c:1533 msgid "quote_character" msgstr "Quote-Zeichen" -#: sql_help.c:1530 +#: sql_help.c:1534 msgid "escape_character" msgstr "Escape-Zeichen" -#: sql_help.c:1534 +#: sql_help.c:1538 msgid "encoding_name" msgstr "Kodierungsname" -#: sql_help.c:1545 +#: sql_help.c:1549 msgid "access_method_type" msgstr "Zugriffsmethodentyp" -#: sql_help.c:1611 sql_help.c:1630 sql_help.c:1633 +#: sql_help.c:1615 sql_help.c:1634 sql_help.c:1637 msgid "arg_data_type" msgstr "Arg-Datentyp" -#: sql_help.c:1612 sql_help.c:1634 sql_help.c:1642 +#: sql_help.c:1616 sql_help.c:1638 sql_help.c:1646 msgid "sfunc" msgstr "Übergangsfunktion" -#: sql_help.c:1613 sql_help.c:1635 sql_help.c:1643 +#: sql_help.c:1617 sql_help.c:1639 sql_help.c:1647 msgid "state_data_type" msgstr "Zustandsdatentyp" -#: sql_help.c:1614 sql_help.c:1636 sql_help.c:1644 +#: sql_help.c:1618 sql_help.c:1640 sql_help.c:1648 msgid "state_data_size" msgstr "Zustandsdatengröße" -#: sql_help.c:1615 sql_help.c:1637 sql_help.c:1645 +#: sql_help.c:1619 sql_help.c:1641 sql_help.c:1649 msgid "ffunc" msgstr "Abschlussfunktion" -#: sql_help.c:1616 sql_help.c:1646 +#: sql_help.c:1620 sql_help.c:1650 msgid "combinefunc" msgstr "Combine-Funktion" -#: sql_help.c:1617 sql_help.c:1647 +#: sql_help.c:1621 sql_help.c:1651 msgid "serialfunc" msgstr "Serialisierungsfunktion" -#: sql_help.c:1618 sql_help.c:1648 +#: sql_help.c:1622 sql_help.c:1652 msgid "deserialfunc" msgstr "Deserialisierungsfunktion" -#: sql_help.c:1619 sql_help.c:1638 sql_help.c:1649 +#: sql_help.c:1623 sql_help.c:1642 sql_help.c:1653 msgid "initial_condition" msgstr "Anfangswert" -#: sql_help.c:1620 sql_help.c:1650 +#: sql_help.c:1624 sql_help.c:1654 msgid "msfunc" msgstr "Moving-Übergangsfunktion" -#: sql_help.c:1621 sql_help.c:1651 +#: sql_help.c:1625 sql_help.c:1655 msgid "minvfunc" msgstr "Moving-Inversfunktion" -#: sql_help.c:1622 sql_help.c:1652 +#: sql_help.c:1626 sql_help.c:1656 msgid "mstate_data_type" msgstr "Moving-Zustandsdatentyp" -#: sql_help.c:1623 sql_help.c:1653 +#: sql_help.c:1627 sql_help.c:1657 msgid "mstate_data_size" msgstr "Moving-Zustandsdatengröße" -#: sql_help.c:1624 sql_help.c:1654 +#: sql_help.c:1628 sql_help.c:1658 msgid "mffunc" msgstr "Moving-Abschlussfunktion" -#: sql_help.c:1625 sql_help.c:1655 +#: sql_help.c:1629 sql_help.c:1659 msgid "minitial_condition" msgstr "Moving-Anfangswert" -#: sql_help.c:1626 sql_help.c:1656 +#: sql_help.c:1630 sql_help.c:1660 msgid "sort_operator" msgstr "Sortieroperator" -#: sql_help.c:1639 +#: sql_help.c:1643 msgid "or the old syntax" msgstr "oder die alte Syntax" -#: sql_help.c:1641 +#: sql_help.c:1645 msgid "base_type" msgstr "Basistyp" -#: sql_help.c:1695 +#: sql_help.c:1699 msgid "locale" msgstr "Locale" -#: sql_help.c:1696 sql_help.c:1732 +#: sql_help.c:1700 sql_help.c:1736 msgid "lc_collate" msgstr "lc_collate" -#: sql_help.c:1697 sql_help.c:1733 +#: sql_help.c:1701 sql_help.c:1737 msgid "lc_ctype" msgstr "lc_ctype" -#: sql_help.c:1699 +#: sql_help.c:1703 msgid "existing_collation" msgstr "existierende_Sortierfolge" -#: sql_help.c:1709 +#: sql_help.c:1713 msgid "source_encoding" msgstr "Quellkodierung" -#: sql_help.c:1710 +#: sql_help.c:1714 msgid "dest_encoding" msgstr "Zielkodierung" -#: sql_help.c:1730 sql_help.c:2350 +#: sql_help.c:1734 sql_help.c:2354 msgid "template" msgstr "Vorlage" -#: sql_help.c:1731 +#: sql_help.c:1735 msgid "encoding" msgstr "Kodierung" -#: sql_help.c:1757 +#: sql_help.c:1761 msgid "constraint" msgstr "Constraint" -#: sql_help.c:1758 +#: sql_help.c:1762 msgid "where constraint is:" msgstr "wobei Constraint Folgendes ist:" -#: sql_help.c:1772 sql_help.c:2107 sql_help.c:2422 +#: sql_help.c:1776 sql_help.c:2111 sql_help.c:2426 msgid "event" msgstr "Ereignis" -#: sql_help.c:1773 +#: sql_help.c:1777 msgid "filter_variable" msgstr "Filtervariable" -#: sql_help.c:1788 +#: sql_help.c:1792 msgid "version" msgstr "Version" -#: sql_help.c:1789 +#: sql_help.c:1793 msgid "old_version" msgstr "alte_Version" -#: sql_help.c:1844 sql_help.c:2256 +#: sql_help.c:1848 sql_help.c:2260 msgid "where column_constraint is:" msgstr "wobei Spalten-Constraint Folgendes ist:" -#: sql_help.c:1847 sql_help.c:1879 sql_help.c:2259 +#: sql_help.c:1851 sql_help.c:1883 sql_help.c:2263 msgid "default_expr" msgstr "Vorgabeausdruck" -#: sql_help.c:1848 sql_help.c:2266 +#: sql_help.c:1852 sql_help.c:2270 msgid "and table_constraint is:" msgstr "und Tabellen-Constraint Folgendes ist:" -#: sql_help.c:1880 +#: sql_help.c:1884 msgid "rettype" msgstr "Rückgabetyp" -#: sql_help.c:1882 +#: sql_help.c:1886 msgid "column_type" msgstr "Spaltentyp" -#: sql_help.c:1890 +#: sql_help.c:1894 msgid "definition" msgstr "Definition" -#: sql_help.c:1891 +#: sql_help.c:1895 msgid "obj_file" msgstr "Objektdatei" -#: sql_help.c:1892 +#: sql_help.c:1896 msgid "link_symbol" msgstr "Linksymbol" -#: sql_help.c:1893 +#: sql_help.c:1897 msgid "attribute" msgstr "Attribut" -#: sql_help.c:1927 sql_help.c:2092 sql_help.c:2540 +#: sql_help.c:1931 sql_help.c:2096 sql_help.c:2544 msgid "uid" msgstr "Uid" -#: sql_help.c:1941 +#: sql_help.c:1945 msgid "method" msgstr "Methode" -#: sql_help.c:1945 sql_help.c:2291 sql_help.c:3197 +#: sql_help.c:1949 sql_help.c:2295 sql_help.c:3201 msgid "opclass" msgstr "Opklasse" -#: sql_help.c:1949 sql_help.c:2277 +#: sql_help.c:1953 sql_help.c:2281 msgid "predicate" msgstr "Prädikat" -#: sql_help.c:1961 +#: sql_help.c:1965 msgid "call_handler" msgstr "Handler" -#: sql_help.c:1962 +#: sql_help.c:1966 msgid "inline_handler" msgstr "Inline-Handler" -#: sql_help.c:1963 +#: sql_help.c:1967 msgid "valfunction" msgstr "Valfunktion" -#: sql_help.c:1999 +#: sql_help.c:2003 msgid "com_op" msgstr "Kommutator-Op" -#: sql_help.c:2000 +#: sql_help.c:2004 msgid "neg_op" msgstr "Umkehrungs-Op" -#: sql_help.c:2018 +#: sql_help.c:2022 msgid "family_name" msgstr "Familienname" -#: sql_help.c:2029 +#: sql_help.c:2033 msgid "storage_type" msgstr "Storage-Typ" -#: sql_help.c:2109 sql_help.c:2425 sql_help.c:2602 sql_help.c:3207 -#: sql_help.c:3622 sql_help.c:3624 sql_help.c:3712 sql_help.c:3714 -#: sql_help.c:3861 sql_help.c:3863 sql_help.c:3966 sql_help.c:4055 -#: sql_help.c:4057 +#: sql_help.c:2113 sql_help.c:2429 sql_help.c:2606 sql_help.c:3211 +#: sql_help.c:3626 sql_help.c:3628 sql_help.c:3716 sql_help.c:3718 +#: sql_help.c:3865 sql_help.c:3867 sql_help.c:3970 sql_help.c:4059 +#: sql_help.c:4061 msgid "condition" msgstr "Bedingung" -#: sql_help.c:2113 sql_help.c:2428 +#: sql_help.c:2117 sql_help.c:2432 msgid "where event can be one of:" msgstr "wobei Ereignis eins der folgenden sein kann:" -#: sql_help.c:2132 sql_help.c:2134 +#: sql_help.c:2136 sql_help.c:2138 msgid "schema_element" msgstr "Schemaelement" -#: sql_help.c:2168 +#: sql_help.c:2172 msgid "server_type" msgstr "Servertyp" -#: sql_help.c:2169 +#: sql_help.c:2173 msgid "server_version" msgstr "Serverversion" -#: sql_help.c:2170 sql_help.c:3117 sql_help.c:3449 +#: sql_help.c:2174 sql_help.c:3121 sql_help.c:3453 msgid "fdw_name" msgstr "FDW-Name" -#: sql_help.c:2242 +#: sql_help.c:2246 msgid "source_table" msgstr "Quelltabelle" -#: sql_help.c:2243 +#: sql_help.c:2247 msgid "like_option" msgstr "Like-Option" -#: sql_help.c:2260 sql_help.c:2261 sql_help.c:2270 sql_help.c:2272 -#: sql_help.c:2276 +#: sql_help.c:2264 sql_help.c:2265 sql_help.c:2274 sql_help.c:2276 +#: sql_help.c:2280 msgid "index_parameters" msgstr "Indexparameter" -#: sql_help.c:2262 sql_help.c:2279 +#: sql_help.c:2266 sql_help.c:2283 msgid "reftable" msgstr "Reftabelle" -#: sql_help.c:2263 sql_help.c:2280 +#: sql_help.c:2267 sql_help.c:2284 msgid "refcolumn" msgstr "Refspalte" -#: sql_help.c:2274 +#: sql_help.c:2278 msgid "exclude_element" msgstr "Exclude-Element" -#: sql_help.c:2275 sql_help.c:3629 sql_help.c:3719 sql_help.c:3868 -#: sql_help.c:3997 sql_help.c:4062 +#: sql_help.c:2279 sql_help.c:3633 sql_help.c:3723 sql_help.c:3872 +#: sql_help.c:4001 sql_help.c:4066 msgid "operator" msgstr "Operator" -#: sql_help.c:2283 +#: sql_help.c:2287 msgid "and like_option is:" msgstr "und Like-Option Folgendes ist:" -#: sql_help.c:2284 +#: sql_help.c:2288 msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" msgstr "Indexparameter bei UNIQUE-, PRIMARY KEY- und EXCLUDE-Constraints sind:" -#: sql_help.c:2288 +#: sql_help.c:2292 msgid "exclude_element in an EXCLUDE constraint is:" msgstr "Exclude-Element in einem EXCLUDE-Constraint ist:" -#: sql_help.c:2323 +#: sql_help.c:2327 msgid "directory" msgstr "Verzeichnis" -#: sql_help.c:2337 +#: sql_help.c:2341 msgid "parser_name" msgstr "Parser-Name" -#: sql_help.c:2338 +#: sql_help.c:2342 msgid "source_config" msgstr "Quellkonfig" -#: sql_help.c:2367 +#: sql_help.c:2371 msgid "start_function" msgstr "Startfunktion" -#: sql_help.c:2368 +#: sql_help.c:2372 msgid "gettoken_function" msgstr "Gettext-Funktion" -#: sql_help.c:2369 +#: sql_help.c:2373 msgid "end_function" msgstr "Endfunktion" -#: sql_help.c:2370 +#: sql_help.c:2374 msgid "lextypes_function" msgstr "Lextypenfunktion" -#: sql_help.c:2371 +#: sql_help.c:2375 msgid "headline_function" msgstr "Headline-Funktion" -#: sql_help.c:2383 +#: sql_help.c:2387 msgid "init_function" msgstr "Init-Funktion" -#: sql_help.c:2384 +#: sql_help.c:2388 msgid "lexize_function" msgstr "Lexize-Funktion" -#: sql_help.c:2397 +#: sql_help.c:2401 msgid "from_sql_function_name" msgstr "From-SQL-Funktionsname" -#: sql_help.c:2399 +#: sql_help.c:2403 msgid "to_sql_function_name" msgstr "To-SQL-Funktionsname" -#: sql_help.c:2424 +#: sql_help.c:2428 msgid "referenced_table_name" msgstr "verwiesener_Tabellenname" -#: sql_help.c:2427 +#: sql_help.c:2431 msgid "arguments" msgstr "Argumente" -#: sql_help.c:2477 sql_help.c:3557 +#: sql_help.c:2481 sql_help.c:3561 msgid "label" msgstr "Label" -#: sql_help.c:2479 +#: sql_help.c:2483 msgid "subtype" msgstr "Untertyp" -#: sql_help.c:2480 +#: sql_help.c:2484 msgid "subtype_operator_class" msgstr "Untertyp-Operatorklasse" -#: sql_help.c:2482 +#: sql_help.c:2486 msgid "canonical_function" msgstr "Canonical-Funktion" -#: sql_help.c:2483 +#: sql_help.c:2487 msgid "subtype_diff_function" msgstr "Untertyp-Diff-Funktion" -#: sql_help.c:2485 +#: sql_help.c:2489 msgid "input_function" msgstr "Eingabefunktion" -#: sql_help.c:2486 +#: sql_help.c:2490 msgid "output_function" msgstr "Ausgabefunktion" -#: sql_help.c:2487 +#: sql_help.c:2491 msgid "receive_function" msgstr "Empfangsfunktion" -#: sql_help.c:2488 +#: sql_help.c:2492 msgid "send_function" msgstr "Sendefunktion" -#: sql_help.c:2489 +#: sql_help.c:2493 msgid "type_modifier_input_function" msgstr "Typmod-Eingabefunktion" -#: sql_help.c:2490 +#: sql_help.c:2494 msgid "type_modifier_output_function" msgstr "Typmod-Ausgabefunktion" -#: sql_help.c:2491 +#: sql_help.c:2495 msgid "analyze_function" msgstr "Analyze-Funktion" -#: sql_help.c:2492 +#: sql_help.c:2496 msgid "internallength" msgstr "interne_Länge" -#: sql_help.c:2493 +#: sql_help.c:2497 msgid "alignment" msgstr "Ausrichtung" -#: sql_help.c:2494 +#: sql_help.c:2498 msgid "storage" msgstr "Speicherung" -#: sql_help.c:2495 +#: sql_help.c:2499 msgid "like_type" msgstr "wie_Typ" -#: sql_help.c:2496 +#: sql_help.c:2500 msgid "category" msgstr "Kategorie" -#: sql_help.c:2497 +#: sql_help.c:2501 msgid "preferred" msgstr "bevorzugt" -#: sql_help.c:2498 +#: sql_help.c:2502 msgid "default" msgstr "Vorgabewert" -#: sql_help.c:2499 +#: sql_help.c:2503 msgid "element" msgstr "Element" -#: sql_help.c:2500 +#: sql_help.c:2504 msgid "delimiter" msgstr "Trennzeichen" -#: sql_help.c:2501 +#: sql_help.c:2505 msgid "collatable" msgstr "sortierbar" -#: sql_help.c:2598 sql_help.c:3183 sql_help.c:3617 sql_help.c:3706 -#: sql_help.c:3856 sql_help.c:3956 sql_help.c:4050 +#: sql_help.c:2602 sql_help.c:3187 sql_help.c:3621 sql_help.c:3710 +#: sql_help.c:3860 sql_help.c:3960 sql_help.c:4054 msgid "with_query" msgstr "With-Anfrage" -#: sql_help.c:2600 sql_help.c:3185 sql_help.c:3636 sql_help.c:3642 -#: sql_help.c:3645 sql_help.c:3649 sql_help.c:3653 sql_help.c:3661 -#: sql_help.c:3875 sql_help.c:3881 sql_help.c:3884 sql_help.c:3888 -#: sql_help.c:3892 sql_help.c:3900 sql_help.c:3958 sql_help.c:4069 -#: sql_help.c:4075 sql_help.c:4078 sql_help.c:4082 sql_help.c:4086 -#: sql_help.c:4094 +#: sql_help.c:2604 sql_help.c:3189 sql_help.c:3640 sql_help.c:3646 +#: sql_help.c:3649 sql_help.c:3653 sql_help.c:3657 sql_help.c:3665 +#: sql_help.c:3879 sql_help.c:3885 sql_help.c:3888 sql_help.c:3892 +#: sql_help.c:3896 sql_help.c:3904 sql_help.c:3962 sql_help.c:4073 +#: sql_help.c:4079 sql_help.c:4082 sql_help.c:4086 sql_help.c:4090 +#: sql_help.c:4098 msgid "alias" msgstr "Alias" -#: sql_help.c:2601 +#: sql_help.c:2605 msgid "using_list" msgstr "Using-Liste" -#: sql_help.c:2603 sql_help.c:3024 sql_help.c:3264 sql_help.c:3967 +#: sql_help.c:2607 sql_help.c:3028 sql_help.c:3268 sql_help.c:3971 msgid "cursor_name" msgstr "Cursor-Name" -#: sql_help.c:2604 sql_help.c:3191 sql_help.c:3968 +#: sql_help.c:2608 sql_help.c:3195 sql_help.c:3972 msgid "output_expression" msgstr "Ausgabeausdruck" -#: sql_help.c:2605 sql_help.c:3192 sql_help.c:3620 sql_help.c:3709 -#: sql_help.c:3859 sql_help.c:3969 sql_help.c:4053 +#: sql_help.c:2609 sql_help.c:3196 sql_help.c:3624 sql_help.c:3713 +#: sql_help.c:3863 sql_help.c:3973 sql_help.c:4057 msgid "output_name" msgstr "Ausgabename" -#: sql_help.c:2621 +#: sql_help.c:2625 msgid "code" msgstr "Code" -#: sql_help.c:2972 +#: sql_help.c:2976 msgid "parameter" msgstr "Parameter" -#: sql_help.c:2991 sql_help.c:2992 sql_help.c:3289 +#: sql_help.c:2995 sql_help.c:2996 sql_help.c:3293 msgid "statement" msgstr "Anweisung" -#: sql_help.c:3023 sql_help.c:3263 +#: sql_help.c:3027 sql_help.c:3267 msgid "direction" msgstr "Richtung" -#: sql_help.c:3025 sql_help.c:3265 +#: sql_help.c:3029 sql_help.c:3269 msgid "where direction can be empty or one of:" msgstr "wobei Richtung leer sein kann oder Folgendes:" -#: sql_help.c:3026 sql_help.c:3027 sql_help.c:3028 sql_help.c:3029 -#: sql_help.c:3030 sql_help.c:3266 sql_help.c:3267 sql_help.c:3268 -#: sql_help.c:3269 sql_help.c:3270 sql_help.c:3630 sql_help.c:3632 -#: sql_help.c:3720 sql_help.c:3722 sql_help.c:3869 sql_help.c:3871 -#: sql_help.c:3998 sql_help.c:4000 sql_help.c:4063 sql_help.c:4065 +#: sql_help.c:3030 sql_help.c:3031 sql_help.c:3032 sql_help.c:3033 +#: sql_help.c:3034 sql_help.c:3270 sql_help.c:3271 sql_help.c:3272 +#: sql_help.c:3273 sql_help.c:3274 sql_help.c:3634 sql_help.c:3636 +#: sql_help.c:3724 sql_help.c:3726 sql_help.c:3873 sql_help.c:3875 +#: sql_help.c:4002 sql_help.c:4004 sql_help.c:4067 sql_help.c:4069 msgid "count" msgstr "Anzahl" -#: sql_help.c:3110 sql_help.c:3442 +#: sql_help.c:3114 sql_help.c:3446 msgid "sequence_name" msgstr "Sequenzname" -#: sql_help.c:3123 sql_help.c:3455 +#: sql_help.c:3127 sql_help.c:3459 msgid "arg_name" msgstr "Argname" -#: sql_help.c:3124 sql_help.c:3456 +#: sql_help.c:3128 sql_help.c:3460 msgid "arg_type" msgstr "Argtyp" -#: sql_help.c:3129 sql_help.c:3461 +#: sql_help.c:3133 sql_help.c:3465 msgid "loid" msgstr "Large-Object-OID" -#: sql_help.c:3152 +#: sql_help.c:3156 msgid "remote_schema" msgstr "fernes_Schema" -#: sql_help.c:3155 +#: sql_help.c:3159 msgid "local_schema" msgstr "lokales_Schema" -#: sql_help.c:3189 +#: sql_help.c:3193 msgid "conflict_target" msgstr "Konfliktziel" -#: sql_help.c:3190 +#: sql_help.c:3194 msgid "conflict_action" msgstr "Konfliktaktion" -#: sql_help.c:3193 +#: sql_help.c:3197 msgid "where conflict_target can be one of:" msgstr "wobei Konfliktziel Folgendes sein kann:" -#: sql_help.c:3194 +#: sql_help.c:3198 msgid "index_column_name" msgstr "Indexspaltenname" -#: sql_help.c:3195 +#: sql_help.c:3199 msgid "index_expression" msgstr "Indexausdruck" -#: sql_help.c:3198 +#: sql_help.c:3202 msgid "index_predicate" msgstr "Indexprädikat" -#: sql_help.c:3200 +#: sql_help.c:3204 msgid "and conflict_action is one of:" msgstr "und Konfliktaktion Folgendes sein kann:" -#: sql_help.c:3206 sql_help.c:3964 +#: sql_help.c:3210 sql_help.c:3968 msgid "sub-SELECT" msgstr "Sub-SELECT" -#: sql_help.c:3215 sql_help.c:3278 sql_help.c:3940 +#: sql_help.c:3219 sql_help.c:3282 sql_help.c:3944 msgid "channel" msgstr "Kanal" -#: sql_help.c:3237 +#: sql_help.c:3241 msgid "lockmode" msgstr "Sperrmodus" -#: sql_help.c:3238 +#: sql_help.c:3242 msgid "where lockmode is one of:" msgstr "wobei Sperrmodus Folgendes sein kann:" -#: sql_help.c:3279 +#: sql_help.c:3283 msgid "payload" msgstr "Payload" -#: sql_help.c:3306 +#: sql_help.c:3310 msgid "old_role" msgstr "alte_Rolle" -#: sql_help.c:3307 +#: sql_help.c:3311 msgid "new_role" msgstr "neue_Rolle" -#: sql_help.c:3332 sql_help.c:3493 sql_help.c:3501 +#: sql_help.c:3336 sql_help.c:3497 sql_help.c:3505 msgid "savepoint_name" msgstr "Sicherungspunktsname" -#: sql_help.c:3534 +#: sql_help.c:3538 msgid "provider" msgstr "Provider" -#: sql_help.c:3621 sql_help.c:3663 sql_help.c:3665 sql_help.c:3711 -#: sql_help.c:3860 sql_help.c:3902 sql_help.c:3904 sql_help.c:4054 -#: sql_help.c:4096 sql_help.c:4098 +#: sql_help.c:3625 sql_help.c:3667 sql_help.c:3669 sql_help.c:3715 +#: sql_help.c:3864 sql_help.c:3906 sql_help.c:3908 sql_help.c:4058 +#: sql_help.c:4100 sql_help.c:4102 msgid "from_item" msgstr "From-Element" -#: sql_help.c:3623 sql_help.c:3675 sql_help.c:3862 sql_help.c:3914 -#: sql_help.c:4056 sql_help.c:4108 +#: sql_help.c:3627 sql_help.c:3679 sql_help.c:3866 sql_help.c:3918 +#: sql_help.c:4060 sql_help.c:4112 msgid "grouping_element" msgstr "Gruppierelement" -#: sql_help.c:3625 sql_help.c:3715 sql_help.c:3864 sql_help.c:4058 +#: sql_help.c:3629 sql_help.c:3719 sql_help.c:3868 sql_help.c:4062 msgid "window_name" msgstr "Fenstername" -#: sql_help.c:3626 sql_help.c:3716 sql_help.c:3865 sql_help.c:4059 +#: sql_help.c:3630 sql_help.c:3720 sql_help.c:3869 sql_help.c:4063 msgid "window_definition" msgstr "Fensterdefinition" -#: sql_help.c:3627 sql_help.c:3641 sql_help.c:3679 sql_help.c:3717 -#: sql_help.c:3866 sql_help.c:3880 sql_help.c:3918 sql_help.c:4060 -#: sql_help.c:4074 sql_help.c:4112 +#: sql_help.c:3631 sql_help.c:3645 sql_help.c:3683 sql_help.c:3721 +#: sql_help.c:3870 sql_help.c:3884 sql_help.c:3922 sql_help.c:4064 +#: sql_help.c:4078 sql_help.c:4116 msgid "select" msgstr "Select" -#: sql_help.c:3634 sql_help.c:3873 sql_help.c:4067 +#: sql_help.c:3638 sql_help.c:3877 sql_help.c:4071 msgid "where from_item can be one of:" msgstr "wobei From-Element Folgendes sein kann:" -#: sql_help.c:3637 sql_help.c:3643 sql_help.c:3646 sql_help.c:3650 -#: sql_help.c:3662 sql_help.c:3876 sql_help.c:3882 sql_help.c:3885 -#: sql_help.c:3889 sql_help.c:3901 sql_help.c:4070 sql_help.c:4076 -#: sql_help.c:4079 sql_help.c:4083 sql_help.c:4095 +#: sql_help.c:3641 sql_help.c:3647 sql_help.c:3650 sql_help.c:3654 +#: sql_help.c:3666 sql_help.c:3880 sql_help.c:3886 sql_help.c:3889 +#: sql_help.c:3893 sql_help.c:3905 sql_help.c:4074 sql_help.c:4080 +#: sql_help.c:4083 sql_help.c:4087 sql_help.c:4099 msgid "column_alias" msgstr "Spaltenalias" -#: sql_help.c:3638 sql_help.c:3877 sql_help.c:4071 +#: sql_help.c:3642 sql_help.c:3881 sql_help.c:4075 msgid "sampling_method" msgstr "Stichprobenmethode" -#: sql_help.c:3639 sql_help.c:3648 sql_help.c:3652 sql_help.c:3656 -#: sql_help.c:3659 sql_help.c:3878 sql_help.c:3887 sql_help.c:3891 -#: sql_help.c:3895 sql_help.c:3898 sql_help.c:4072 sql_help.c:4081 -#: sql_help.c:4085 sql_help.c:4089 sql_help.c:4092 +#: sql_help.c:3643 sql_help.c:3652 sql_help.c:3656 sql_help.c:3660 +#: sql_help.c:3663 sql_help.c:3882 sql_help.c:3891 sql_help.c:3895 +#: sql_help.c:3899 sql_help.c:3902 sql_help.c:4076 sql_help.c:4085 +#: sql_help.c:4089 sql_help.c:4093 sql_help.c:4096 msgid "argument" msgstr "Argument" -#: sql_help.c:3640 sql_help.c:3879 sql_help.c:4073 +#: sql_help.c:3644 sql_help.c:3883 sql_help.c:4077 msgid "seed" msgstr "Startwert" -#: sql_help.c:3644 sql_help.c:3677 sql_help.c:3883 sql_help.c:3916 -#: sql_help.c:4077 sql_help.c:4110 +#: sql_help.c:3648 sql_help.c:3681 sql_help.c:3887 sql_help.c:3920 +#: sql_help.c:4081 sql_help.c:4114 msgid "with_query_name" msgstr "With-Anfragename" -#: sql_help.c:3654 sql_help.c:3657 sql_help.c:3660 sql_help.c:3893 -#: sql_help.c:3896 sql_help.c:3899 sql_help.c:4087 sql_help.c:4090 -#: sql_help.c:4093 +#: sql_help.c:3658 sql_help.c:3661 sql_help.c:3664 sql_help.c:3897 +#: sql_help.c:3900 sql_help.c:3903 sql_help.c:4091 sql_help.c:4094 +#: sql_help.c:4097 msgid "column_definition" msgstr "Spaltendefinition" -#: sql_help.c:3664 sql_help.c:3903 sql_help.c:4097 +#: sql_help.c:3668 sql_help.c:3907 sql_help.c:4101 msgid "join_type" msgstr "Verbundtyp" -#: sql_help.c:3666 sql_help.c:3905 sql_help.c:4099 +#: sql_help.c:3670 sql_help.c:3909 sql_help.c:4103 msgid "join_condition" msgstr "Verbundbedingung" -#: sql_help.c:3667 sql_help.c:3906 sql_help.c:4100 +#: sql_help.c:3671 sql_help.c:3910 sql_help.c:4104 msgid "join_column" msgstr "Verbundspalte" -#: sql_help.c:3668 sql_help.c:3907 sql_help.c:4101 +#: sql_help.c:3672 sql_help.c:3911 sql_help.c:4105 msgid "and grouping_element can be one of:" msgstr "und Gruppierelement eins der folgenden sein kann:" -#: sql_help.c:3676 sql_help.c:3915 sql_help.c:4109 +#: sql_help.c:3680 sql_help.c:3919 sql_help.c:4113 msgid "and with_query is:" msgstr "und With-Anfrage ist:" -#: sql_help.c:3680 sql_help.c:3919 sql_help.c:4113 +#: sql_help.c:3684 sql_help.c:3923 sql_help.c:4117 msgid "values" msgstr "values" -#: sql_help.c:3681 sql_help.c:3920 sql_help.c:4114 +#: sql_help.c:3685 sql_help.c:3924 sql_help.c:4118 msgid "insert" msgstr "insert" -#: sql_help.c:3682 sql_help.c:3921 sql_help.c:4115 +#: sql_help.c:3686 sql_help.c:3925 sql_help.c:4119 msgid "update" msgstr "update" -#: sql_help.c:3683 sql_help.c:3922 sql_help.c:4116 +#: sql_help.c:3687 sql_help.c:3926 sql_help.c:4120 msgid "delete" msgstr "delete" -#: sql_help.c:3710 +#: sql_help.c:3714 msgid "new_table" msgstr "neue_Tabelle" -#: sql_help.c:3735 +#: sql_help.c:3739 msgid "timezone" msgstr "Zeitzone" -#: sql_help.c:3780 +#: sql_help.c:3784 msgid "snapshot_id" msgstr "Snapshot-ID" -#: sql_help.c:3965 +#: sql_help.c:3969 msgid "from_list" msgstr "From-Liste" -#: sql_help.c:3996 +#: sql_help.c:4000 msgid "sort_expression" msgstr "Sortierausdruck" -#: sql_help.c:4123 sql_help.c:4863 +#: sql_help.c:4127 sql_help.c:4867 msgid "abort the current transaction" msgstr "bricht die aktuelle Transaktion ab" -#: sql_help.c:4128 +#: sql_help.c:4132 msgid "change the definition of an aggregate function" msgstr "ändert die Definition einer Aggregatfunktion" -#: sql_help.c:4133 +#: sql_help.c:4137 msgid "change the definition of a collation" msgstr "ändert die Definition einer Sortierfolge" -#: sql_help.c:4138 +#: sql_help.c:4142 msgid "change the definition of a conversion" msgstr "ändert die Definition einer Zeichensatzkonversion" -#: sql_help.c:4143 +#: sql_help.c:4147 msgid "change a database" msgstr "ändert eine Datenbank" -#: sql_help.c:4148 +#: sql_help.c:4152 msgid "define default access privileges" msgstr "definiert vorgegebene Zugriffsprivilegien" -#: sql_help.c:4153 +#: sql_help.c:4157 msgid "change the definition of a domain" msgstr "ändert die Definition einer Domäne" -#: sql_help.c:4158 +#: sql_help.c:4162 msgid "change the definition of an event trigger" msgstr "ändert die Definition eines Ereignistriggers" -#: sql_help.c:4163 +#: sql_help.c:4167 msgid "change the definition of an extension" msgstr "ändert die Definition einer Erweiterung" -#: sql_help.c:4168 +#: sql_help.c:4172 msgid "change the definition of a foreign-data wrapper" msgstr "ändert die Definition eines Fremddaten-Wrappers" -#: sql_help.c:4173 +#: sql_help.c:4177 msgid "change the definition of a foreign table" msgstr "ändert die Definition einer Fremdtabelle" -#: sql_help.c:4178 +#: sql_help.c:4182 msgid "change the definition of a function" msgstr "ändert die Definition einer Funktion" -#: sql_help.c:4183 +#: sql_help.c:4187 msgid "change role name or membership" msgstr "ändert Rollenname oder -mitglieder" -#: sql_help.c:4188 +#: sql_help.c:4192 msgid "change the definition of an index" msgstr "ändert die Definition eines Index" -#: sql_help.c:4193 +#: sql_help.c:4197 msgid "change the definition of a procedural language" msgstr "ändert die Definition einer prozeduralen Sprache" -#: sql_help.c:4198 +#: sql_help.c:4202 msgid "change the definition of a large object" msgstr "ändert die Definition eines Large Object" -#: sql_help.c:4203 +#: sql_help.c:4207 msgid "change the definition of a materialized view" msgstr "ändert die Definition einer materialisierten Sicht" -#: sql_help.c:4208 +#: sql_help.c:4212 msgid "change the definition of an operator" msgstr "ändert die Definition eines Operators" -#: sql_help.c:4213 +#: sql_help.c:4217 msgid "change the definition of an operator class" msgstr "ändert die Definition einer Operatorklasse" -#: sql_help.c:4218 +#: sql_help.c:4222 msgid "change the definition of an operator family" msgstr "ändert die Definition einer Operatorfamilie" -#: sql_help.c:4223 +#: sql_help.c:4227 msgid "change the definition of a row level security policy" msgstr "ändert die Definition einer Policy für Sicherheit auf Zeilenebene" -#: sql_help.c:4228 sql_help.c:4298 +#: sql_help.c:4232 sql_help.c:4302 msgid "change a database role" msgstr "ändert eine Datenbankrolle" -#: sql_help.c:4233 +#: sql_help.c:4237 msgid "change the definition of a rule" msgstr "ändert die Definition einer Regel" -#: sql_help.c:4238 +#: sql_help.c:4242 msgid "change the definition of a schema" msgstr "ändert die Definition eines Schemas" -#: sql_help.c:4243 +#: sql_help.c:4247 msgid "change the definition of a sequence generator" msgstr "ändert die Definition eines Sequenzgenerators" -#: sql_help.c:4248 +#: sql_help.c:4252 msgid "change the definition of a foreign server" msgstr "ändert die Definition eines Fremdservers" -#: sql_help.c:4253 +#: sql_help.c:4257 msgid "change a server configuration parameter" msgstr "ändert einen Server-Konfigurationsparameter" -#: sql_help.c:4258 +#: sql_help.c:4262 msgid "change the definition of a table" msgstr "ändert die Definition einer Tabelle" -#: sql_help.c:4263 +#: sql_help.c:4267 msgid "change the definition of a tablespace" msgstr "ändert die Definition eines Tablespace" -#: sql_help.c:4268 +#: sql_help.c:4272 msgid "change the definition of a text search configuration" msgstr "ändert die Definition einer Textsuchekonfiguration" -#: sql_help.c:4273 +#: sql_help.c:4277 msgid "change the definition of a text search dictionary" msgstr "ändert die Definition eines Textsuchewörterbuchs" -#: sql_help.c:4278 +#: sql_help.c:4282 msgid "change the definition of a text search parser" msgstr "ändert die Definition eines Textsucheparsers" -#: sql_help.c:4283 +#: sql_help.c:4287 msgid "change the definition of a text search template" msgstr "ändert die Definition einer Textsuchevorlage" -#: sql_help.c:4288 +#: sql_help.c:4292 msgid "change the definition of a trigger" msgstr "ändert die Definition eines Triggers" -#: sql_help.c:4293 +#: sql_help.c:4297 msgid "change the definition of a type" msgstr "ändert die Definition eines Typs" -#: sql_help.c:4303 +#: sql_help.c:4307 msgid "change the definition of a user mapping" msgstr "ändert die Definition einer Benutzerabbildung" -#: sql_help.c:4308 +#: sql_help.c:4312 msgid "change the definition of a view" msgstr "ändert die Definition einer Sicht" -#: sql_help.c:4313 +#: sql_help.c:4317 msgid "collect statistics about a database" msgstr "sammelt Statistiken über eine Datenbank" -#: sql_help.c:4318 sql_help.c:4928 +#: sql_help.c:4322 sql_help.c:4932 msgid "start a transaction block" msgstr "startet einen Transaktionsblock" -#: sql_help.c:4323 +#: sql_help.c:4327 msgid "force a transaction log checkpoint" msgstr "erzwingt einen Checkpoint im Transaktionslog" -#: sql_help.c:4328 +#: sql_help.c:4332 msgid "close a cursor" msgstr "schließt einen Cursor" -#: sql_help.c:4333 +#: sql_help.c:4337 msgid "cluster a table according to an index" msgstr "clustert eine Tabelle nach einem Index" -#: sql_help.c:4338 +#: sql_help.c:4342 msgid "define or change the comment of an object" msgstr "definiert oder ändert den Kommentar eines Objektes" -#: sql_help.c:4343 sql_help.c:4763 +#: sql_help.c:4347 sql_help.c:4767 msgid "commit the current transaction" msgstr "schließt die aktuelle Transaktion ab" -#: sql_help.c:4348 +#: sql_help.c:4352 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:4353 +#: sql_help.c:4357 msgid "copy data between a file and a table" msgstr "kopiert Daten zwischen einer Datei und einer Tabelle" -#: sql_help.c:4358 +#: sql_help.c:4362 msgid "define a new access method" msgstr "definiert eine neue Zugriffsmethode" -#: sql_help.c:4363 +#: sql_help.c:4367 msgid "define a new aggregate function" msgstr "definiert eine neue Aggregatfunktion" -#: sql_help.c:4368 +#: sql_help.c:4372 msgid "define a new cast" msgstr "definiert eine neue Typumwandlung" -#: sql_help.c:4373 +#: sql_help.c:4377 msgid "define a new collation" msgstr "definiert eine neue Sortierfolge" -#: sql_help.c:4378 +#: sql_help.c:4382 msgid "define a new encoding conversion" msgstr "definiert eine neue Kodierungskonversion" -#: sql_help.c:4383 +#: sql_help.c:4387 msgid "create a new database" msgstr "erzeugt eine neue Datenbank" -#: sql_help.c:4388 +#: sql_help.c:4392 msgid "define a new domain" msgstr "definiert eine neue Domäne" -#: sql_help.c:4393 +#: sql_help.c:4397 msgid "define a new event trigger" msgstr "definiert einen neuen Ereignistrigger" -#: sql_help.c:4398 +#: sql_help.c:4402 msgid "install an extension" msgstr "installiert eine Erweiterung" -#: sql_help.c:4403 +#: sql_help.c:4407 msgid "define a new foreign-data wrapper" msgstr "definiert einen neuen Fremddaten-Wrapper" -#: sql_help.c:4408 +#: sql_help.c:4412 msgid "define a new foreign table" msgstr "definiert eine neue Fremdtabelle" -#: sql_help.c:4413 +#: sql_help.c:4417 msgid "define a new function" msgstr "definiert eine neue Funktion" -#: sql_help.c:4418 sql_help.c:4458 sql_help.c:4533 +#: sql_help.c:4422 sql_help.c:4462 sql_help.c:4537 msgid "define a new database role" msgstr "definiert eine neue Datenbankrolle" -#: sql_help.c:4423 +#: sql_help.c:4427 msgid "define a new index" msgstr "definiert einen neuen Index" -#: sql_help.c:4428 +#: sql_help.c:4432 msgid "define a new procedural language" msgstr "definiert eine neue prozedurale Sprache" -#: sql_help.c:4433 +#: sql_help.c:4437 msgid "define a new materialized view" msgstr "definiert eine neue materialisierte Sicht" -#: sql_help.c:4438 +#: sql_help.c:4442 msgid "define a new operator" msgstr "definiert einen neuen Operator" -#: sql_help.c:4443 +#: sql_help.c:4447 msgid "define a new operator class" msgstr "definiert eine neue Operatorklasse" -#: sql_help.c:4448 +#: sql_help.c:4452 msgid "define a new operator family" msgstr "definiert eine neue Operatorfamilie" -#: sql_help.c:4453 +#: sql_help.c:4457 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:4463 +#: sql_help.c:4467 msgid "define a new rewrite rule" msgstr "definiert eine neue Umschreiberegel" -#: sql_help.c:4468 +#: sql_help.c:4472 msgid "define a new schema" msgstr "definiert ein neues Schema" -#: sql_help.c:4473 +#: sql_help.c:4477 msgid "define a new sequence generator" msgstr "definiert einen neuen Sequenzgenerator" -#: sql_help.c:4478 +#: sql_help.c:4482 msgid "define a new foreign server" msgstr "definiert einen neuen Fremdserver" -#: sql_help.c:4483 +#: sql_help.c:4487 msgid "define a new table" msgstr "definiert eine neue Tabelle" -#: sql_help.c:4488 sql_help.c:4893 +#: sql_help.c:4492 sql_help.c:4897 msgid "define a new table from the results of a query" msgstr "definiert eine neue Tabelle aus den Ergebnissen einer Anfrage" -#: sql_help.c:4493 +#: sql_help.c:4497 msgid "define a new tablespace" msgstr "definiert einen neuen Tablespace" -#: sql_help.c:4498 +#: sql_help.c:4502 msgid "define a new text search configuration" msgstr "definiert eine neue Textsuchekonfiguration" -#: sql_help.c:4503 +#: sql_help.c:4507 msgid "define a new text search dictionary" msgstr "definiert ein neues Textsuchewörterbuch" -#: sql_help.c:4508 +#: sql_help.c:4512 msgid "define a new text search parser" msgstr "definiert einen neuen Textsucheparser" -#: sql_help.c:4513 +#: sql_help.c:4517 msgid "define a new text search template" msgstr "definiert eine neue Textsuchevorlage" -#: sql_help.c:4518 +#: sql_help.c:4522 msgid "define a new transform" msgstr "definiert eine neue Transformation" -#: sql_help.c:4523 +#: sql_help.c:4527 msgid "define a new trigger" msgstr "definiert einen neuen Trigger" -#: sql_help.c:4528 +#: sql_help.c:4532 msgid "define a new data type" msgstr "definiert einen neuen Datentyp" -#: sql_help.c:4538 +#: sql_help.c:4542 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:4543 +#: sql_help.c:4547 msgid "define a new view" msgstr "definiert eine neue Sicht" -#: sql_help.c:4548 +#: sql_help.c:4552 msgid "deallocate a prepared statement" msgstr "gibt einen vorbereiteten Befehl frei" -#: sql_help.c:4553 +#: sql_help.c:4557 msgid "define a cursor" msgstr "definiert einen Cursor" -#: sql_help.c:4558 +#: sql_help.c:4562 msgid "delete rows of a table" msgstr "löscht Zeilen einer Tabelle" -#: sql_help.c:4563 +#: sql_help.c:4567 msgid "discard session state" msgstr "verwirft den Sitzungszustand" -#: sql_help.c:4568 +#: sql_help.c:4572 msgid "execute an anonymous code block" msgstr "führt einen anonymen Codeblock aus" -#: sql_help.c:4573 +#: sql_help.c:4577 msgid "remove an access method" msgstr "entfernt eine Zugriffsmethode" -#: sql_help.c:4578 +#: sql_help.c:4582 msgid "remove an aggregate function" msgstr "entfernt eine Aggregatfunktion" -#: sql_help.c:4583 +#: sql_help.c:4587 msgid "remove a cast" msgstr "entfernt eine Typumwandlung" -#: sql_help.c:4588 +#: sql_help.c:4592 msgid "remove a collation" msgstr "entfernt eine Sortierfolge" -#: sql_help.c:4593 +#: sql_help.c:4597 msgid "remove a conversion" msgstr "entfernt eine Zeichensatzkonversion" -#: sql_help.c:4598 +#: sql_help.c:4602 msgid "remove a database" msgstr "entfernt eine Datenbank" -#: sql_help.c:4603 +#: sql_help.c:4607 msgid "remove a domain" msgstr "entfernt eine Domäne" -#: sql_help.c:4608 +#: sql_help.c:4612 msgid "remove an event trigger" msgstr "entfernt einen Ereignistrigger" -#: sql_help.c:4613 +#: sql_help.c:4617 msgid "remove an extension" msgstr "entfernt eine Erweiterung" -#: sql_help.c:4618 +#: sql_help.c:4622 msgid "remove a foreign-data wrapper" msgstr "entfernt einen Fremddaten-Wrapper" -#: sql_help.c:4623 +#: sql_help.c:4627 msgid "remove a foreign table" msgstr "entfernt eine Fremdtabelle" -#: sql_help.c:4628 +#: sql_help.c:4632 msgid "remove a function" msgstr "entfernt eine Funktion" -#: sql_help.c:4633 sql_help.c:4678 sql_help.c:4748 +#: sql_help.c:4637 sql_help.c:4682 sql_help.c:4752 msgid "remove a database role" msgstr "entfernt eine Datenbankrolle" -#: sql_help.c:4638 +#: sql_help.c:4642 msgid "remove an index" msgstr "entfernt einen Index" -#: sql_help.c:4643 +#: sql_help.c:4647 msgid "remove a procedural language" msgstr "entfernt eine prozedurale Sprache" -#: sql_help.c:4648 +#: sql_help.c:4652 msgid "remove a materialized view" msgstr "entfernt eine materialisierte Sicht" -#: sql_help.c:4653 +#: sql_help.c:4657 msgid "remove an operator" msgstr "entfernt einen Operator" -#: sql_help.c:4658 +#: sql_help.c:4662 msgid "remove an operator class" msgstr "entfernt eine Operatorklasse" -#: sql_help.c:4663 +#: sql_help.c:4667 msgid "remove an operator family" msgstr "entfernt eine Operatorfamilie" -#: sql_help.c:4668 +#: sql_help.c:4672 msgid "remove database objects owned by a database role" msgstr "entfernt die einer Datenbankrolle gehörenden Datenbankobjekte" -#: sql_help.c:4673 +#: sql_help.c:4677 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:4683 +#: sql_help.c:4687 msgid "remove a rewrite rule" msgstr "entfernt eine Umschreiberegel" -#: sql_help.c:4688 +#: sql_help.c:4692 msgid "remove a schema" msgstr "entfernt ein Schema" -#: sql_help.c:4693 +#: sql_help.c:4697 msgid "remove a sequence" msgstr "entfernt eine Sequenz" -#: sql_help.c:4698 +#: sql_help.c:4702 msgid "remove a foreign server descriptor" msgstr "entfernt einen Fremdserverdeskriptor" -#: sql_help.c:4703 +#: sql_help.c:4707 msgid "remove a table" msgstr "entfernt eine Tabelle" -#: sql_help.c:4708 +#: sql_help.c:4712 msgid "remove a tablespace" msgstr "entfernt einen Tablespace" -#: sql_help.c:4713 +#: sql_help.c:4717 msgid "remove a text search configuration" msgstr "entfernt eine Textsuchekonfiguration" -#: sql_help.c:4718 +#: sql_help.c:4722 msgid "remove a text search dictionary" msgstr "entfernt ein Textsuchewörterbuch" -#: sql_help.c:4723 +#: sql_help.c:4727 msgid "remove a text search parser" msgstr "entfernt einen Textsucheparser" -#: sql_help.c:4728 +#: sql_help.c:4732 msgid "remove a text search template" msgstr "entfernt eine Textsuchevorlage" -#: sql_help.c:4733 +#: sql_help.c:4737 msgid "remove a transform" msgstr "entfernt eine Transformation" -#: sql_help.c:4738 +#: sql_help.c:4742 msgid "remove a trigger" msgstr "entfernt einen Trigger" -#: sql_help.c:4743 +#: sql_help.c:4747 msgid "remove a data type" msgstr "entfernt einen Datentyp" -#: sql_help.c:4753 +#: sql_help.c:4757 msgid "remove a user mapping for a foreign server" msgstr "entfernt eine Benutzerabbildung für einen Fremdserver" -#: sql_help.c:4758 +#: sql_help.c:4762 msgid "remove a view" msgstr "entfernt eine Sicht" -#: sql_help.c:4768 +#: sql_help.c:4772 msgid "execute a prepared statement" msgstr "führt einen vorbereiteten Befehl aus" -#: sql_help.c:4773 +#: sql_help.c:4777 msgid "show the execution plan of a statement" msgstr "zeigt den Ausführungsplan eines Befehls" -#: sql_help.c:4778 +#: sql_help.c:4782 msgid "retrieve rows from a query using a cursor" msgstr "liest Zeilen aus einer Anfrage mit einem Cursor" -#: sql_help.c:4783 +#: sql_help.c:4787 msgid "define access privileges" msgstr "definiert Zugriffsprivilegien" -#: sql_help.c:4788 +#: sql_help.c:4792 msgid "import table definitions from a foreign server" msgstr "importiert Tabellendefinitionen von einem Fremdserver" -#: sql_help.c:4793 +#: sql_help.c:4797 msgid "create new rows in a table" msgstr "erzeugt neue Zeilen in einer Tabelle" -#: sql_help.c:4798 +#: sql_help.c:4802 msgid "listen for a notification" msgstr "hört auf eine Benachrichtigung" -#: sql_help.c:4803 +#: sql_help.c:4807 msgid "load a shared library file" msgstr "lädt eine dynamische Bibliotheksdatei" -#: sql_help.c:4808 +#: sql_help.c:4812 msgid "lock a table" msgstr "sperrt eine Tabelle" -#: sql_help.c:4813 +#: sql_help.c:4817 msgid "position a cursor" msgstr "positioniert einen Cursor" -#: sql_help.c:4818 +#: sql_help.c:4822 msgid "generate a notification" msgstr "erzeugt eine Benachrichtigung" -#: sql_help.c:4823 +#: sql_help.c:4827 msgid "prepare a statement for execution" msgstr "bereitet einen Befehl zur Ausführung vor" -#: sql_help.c:4828 +#: sql_help.c:4832 msgid "prepare the current transaction for two-phase commit" msgstr "bereitet die aktuelle Transaktion für Two-Phase-Commit vor" -#: sql_help.c:4833 +#: sql_help.c:4837 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:4838 +#: sql_help.c:4842 msgid "replace the contents of a materialized view" msgstr "ersetzt den Inhalt einer materialisierten Sicht" -#: sql_help.c:4843 +#: sql_help.c:4847 msgid "rebuild indexes" msgstr "baut Indexe neu" -#: sql_help.c:4848 +#: sql_help.c:4852 msgid "destroy a previously defined savepoint" msgstr "gibt einen zuvor definierten Sicherungspunkt frei" -#: sql_help.c:4853 +#: sql_help.c:4857 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:4858 +#: sql_help.c:4862 msgid "remove access privileges" msgstr "entfernt Zugriffsprivilegien" -#: sql_help.c:4868 +#: sql_help.c:4872 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:4873 +#: sql_help.c:4877 msgid "roll back to a savepoint" msgstr "rollt eine Transaktion bis zu einem Sicherungspunkt zurück" -#: sql_help.c:4878 +#: sql_help.c:4882 msgid "define a new savepoint within the current transaction" msgstr "definiert einen neuen Sicherungspunkt in der aktuellen Transaktion" -#: sql_help.c:4883 +#: sql_help.c:4887 msgid "define or change a security label applied to an object" msgstr "definiert oder ändert ein Security-Label eines Objektes" -#: sql_help.c:4888 sql_help.c:4933 sql_help.c:4963 +#: sql_help.c:4892 sql_help.c:4937 sql_help.c:4967 msgid "retrieve rows from a table or view" msgstr "liest Zeilen aus einer Tabelle oder Sicht" -#: sql_help.c:4898 +#: sql_help.c:4902 msgid "change a run-time parameter" msgstr "ändert einen Konfigurationsparameter" -#: sql_help.c:4903 +#: sql_help.c:4907 msgid "set constraint check timing for the current transaction" msgstr "setzt die Zeitsteuerung für Check-Constraints in der aktuellen Transaktion" -#: sql_help.c:4908 +#: sql_help.c:4912 msgid "set the current user identifier of the current session" msgstr "setzt den aktuellen Benutzernamen der aktuellen Sitzung" -#: sql_help.c:4913 +#: sql_help.c:4917 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:4918 +#: sql_help.c:4922 msgid "set the characteristics of the current transaction" msgstr "setzt die Charakteristika der aktuellen Transaktion" -#: sql_help.c:4923 +#: sql_help.c:4927 msgid "show the value of a run-time parameter" msgstr "zeigt den Wert eines Konfigurationsparameters" -#: sql_help.c:4938 +#: sql_help.c:4942 msgid "empty a table or set of tables" msgstr "leert eine oder mehrere Tabellen" -#: sql_help.c:4943 +#: sql_help.c:4947 msgid "stop listening for a notification" msgstr "beendet das Hören auf eine Benachrichtigung" -#: sql_help.c:4948 +#: sql_help.c:4952 msgid "update rows of a table" msgstr "aktualisiert Zeilen einer Tabelle" -#: sql_help.c:4953 +#: sql_help.c:4957 msgid "garbage-collect and optionally analyze a database" msgstr "säubert und analysiert eine Datenbank" -#: sql_help.c:4958 +#: sql_help.c:4962 msgid "compute a set of rows" msgstr "berechnet eine Zeilenmenge" @@ -5348,7 +5359,7 @@ msgstr "%s: konnte eigene Programmdatei nicht finden\n" msgid "unrecognized value \"%s\" for \"%s\"; assuming \"%s\"\n" msgstr "unbekannter Wert »%s« für »%s«; »%s« wird angenommen\n" -#: tab-complete.c:3704 +#: tab-complete.c:3740 #, c-format msgid "" "tab completion query failed: %s\n" diff --git a/src/bin/psql/po/es.po b/src/bin/psql/po/es.po index a9aba505eb..b6f749a36b 100644 --- a/src/bin/psql/po/es.po +++ b/src/bin/psql/po/es.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: psql (PostgreSQL 9.6)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-05-02 20:13+0000\n" -"PO-Revision-Date: 2016-07-12 09:16-0400\n" +"POT-Creation-Date: 2017-08-27 21:52+0000\n" +"PO-Revision-Date: 2017-05-20 23:08-0400\n" "Last-Translator: Ãlvaro Herrera \n" "Language-Team: PgSQL Español \n" "Language: es\n" @@ -57,7 +57,7 @@ msgid "pclose failed: %s" msgstr "pclose falló: %s" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 -#: ../../common/fe_memutils.c:98 command.c:330 input.c:227 mainloop.c:80 +#: ../../common/fe_memutils.c:98 command.c:342 input.c:227 mainloop.c:80 #: mainloop.c:261 #, c-format msgid "out of memory\n" @@ -73,7 +73,7 @@ msgstr "no se puede duplicar un puntero nulo (error interno)\n" 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:47 command.c:287 +#: ../../common/username.c:47 command.c:299 msgid "user does not exist" msgstr "el usuario no existe" @@ -124,22 +124,22 @@ msgid_plural "(%lu rows)" msgstr[0] "(%lu fila)" msgstr[1] "(%lu filas)" -#: ../../fe_utils/print.c:2906 +#: ../../fe_utils/print.c:2914 #, c-format msgid "Interrupted\n" msgstr "Interrumpido\n" -#: ../../fe_utils/print.c:2970 +#: ../../fe_utils/print.c:2978 #, 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:3010 +#: ../../fe_utils/print.c:3018 #, 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:3259 +#: ../../fe_utils/print.c:3267 #, c-format msgid "invalid output format (internal error): %d" msgstr "formato de salida no válido (error interno): %d" @@ -149,255 +149,252 @@ msgstr "formato de salida no válido (error interno): %d" msgid "skipping recursive expansion of variable \"%s\"\n" msgstr "saltando expansión recursiva de la variable «%s»\n" -#: command.c:128 +#: command.c:129 #, c-format msgid "Invalid command \\%s. Try \\? for help.\n" msgstr "Orden \\%s no válida. Use \\? para obtener ayuda.\n" -#: command.c:130 +#: command.c:131 #, c-format msgid "invalid command \\%s\n" msgstr "orden \\%s no válida\n" -#: command.c:141 +#: command.c:142 #, c-format msgid "\\%s: extra argument \"%s\" ignored\n" msgstr "\\%s: argumento extra «%s» ignorado\n" -#: command.c:285 +#: command.c:297 #, c-format msgid "could not get home directory for user ID %ld: %s\n" msgstr "no se pudo obtener directorio home para el usuario de ID %ld: %s\n" -#: command.c:303 +#: command.c:315 #, c-format msgid "\\%s: could not change directory to \"%s\": %s\n" msgstr "\\%s: no se pudo cambiar directorio a «%s»: %s\n" -#: command.c:318 common.c:548 common.c:606 common.c:1139 +#: command.c:330 common.c:553 common.c:611 common.c:1144 #, c-format msgid "You are currently not connected to a database.\n" msgstr "No está conectado a una base de datos.\n" -#: command.c:343 +#: command.c:355 #, 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:346 +#: command.c:358 #, 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:559 command.c:629 command.c:725 command.c:1557 +#: command.c:574 command.c:647 command.c:746 command.c:1584 #, c-format msgid "no query buffer\n" msgstr "no hay búfer de consulta\n" -#: command.c:592 command.c:3408 +#: command.c:607 command.c:3547 #, c-format msgid "invalid line number: %s\n" msgstr "número de línea no válido: %s\n" -#: command.c:623 +#: command.c:640 #, c-format -msgid "The server (version %d.%d) does not support editing function source.\n" -msgstr "El servidor (versión %d.%d) no soporta la edición del código fuente de funciones.\n" +msgid "The server (version %s) does not support editing function source.\n" +msgstr "El servidor (versión %s) no soporta la edición del código fuente de funciones.\n" -#: command.c:703 command.c:771 +#: command.c:721 command.c:792 msgid "No changes" msgstr "Sin cambios" -#: command.c:719 -#, fuzzy, c-format -#| msgid "The server (version %d.%d) does not support editing function source.\n" -msgid "The server (version %d.%d) does not support editing view definitions.\n" -msgstr "El servidor (versión %d.%d) no soporta la edición del código fuente de funciones.\n" +#: command.c:739 +#, c-format +msgid "The server (version %s) does not support editing view definitions.\n" +msgstr "El servidor (versión %s) no soporta la edición de vistas.\n" -#: command.c:825 +#: command.c:846 #, c-format msgid "%s: invalid encoding name or conversion procedure not found\n" msgstr "" "%s: nombre de codificación no válido o procedimiento de conversión\n" "no encontrado\n" -#: command.c:850 command.c:1897 command.c:3510 common.c:152 common.c:199 -#: common.c:492 common.c:1185 common.c:1210 common.c:1311 copy.c:489 -#: copy.c:699 large_obj.c:156 large_obj.c:191 large_obj.c:253 +#: command.c:871 command.c:1962 command.c:3649 common.c:153 common.c:200 +#: common.c:497 common.c:1190 common.c:1218 common.c:1319 copy.c:489 copy.c:709 +#: large_obj.c:156 large_obj.c:191 large_obj.c:253 #, c-format msgid "%s" msgstr "%s" -#: command.c:854 +#: command.c:875 msgid "out of memory" msgstr "memoria agotada" -#: command.c:857 -msgid "There was no previous error." -msgstr "" +#: command.c:878 +msgid "There is no previous error." +msgstr "No hay error anterior." -#: command.c:951 command.c:1001 command.c:1015 command.c:1032 command.c:1139 -#: command.c:1303 command.c:1537 command.c:1568 +#: command.c:972 command.c:1022 command.c:1036 command.c:1053 command.c:1160 +#: command.c:1324 command.c:1564 command.c:1595 #, c-format msgid "\\%s: missing required argument\n" msgstr "\\%s: falta argumento requerido\n" -#: command.c:1064 +#: command.c:1085 msgid "Query buffer is empty." msgstr "El búfer de consulta está vacío." -#: command.c:1074 +#: command.c:1095 msgid "Enter new password: " msgstr "Ingrese la nueva contraseña: " -#: command.c:1075 +#: command.c:1096 msgid "Enter it again: " msgstr "Ingrésela nuevamente: " -#: command.c:1079 +#: command.c:1100 #, c-format msgid "Passwords didn't match.\n" msgstr "Las constraseñas no coinciden.\n" -#: command.c:1097 +#: command.c:1118 #, c-format msgid "Password encryption failed.\n" msgstr "El cifrado de la contraseña falló.\n" -#: command.c:1168 command.c:1284 command.c:1542 +#: command.c:1189 command.c:1305 command.c:1569 #, c-format msgid "\\%s: error while setting variable\n" msgstr "\\%s: error mientras se definía la variable\n" -#: command.c:1231 +#: command.c:1252 msgid "Query buffer reset (cleared)." msgstr "El búfer de consulta ha sido reiniciado (limpiado)." -#: command.c:1243 +#: command.c:1264 #, c-format msgid "Wrote history to file \"%s\".\n" msgstr "Se escribió la historia en el archivo «%s».\n" -#: command.c:1308 +#: command.c:1329 #, c-format msgid "\\%s: environment variable name must not contain \"=\"\n" msgstr "\\%s: el nombre de variable de ambiente no debe contener «=»\n" -#: command.c:1350 +#: command.c:1373 #, c-format -msgid "The server (version %d.%d) does not support showing function source.\n" -msgstr "El servidor (versión %d.%d) no soporta el despliegue del código fuente de funciones.\n" +msgid "The server (version %s) does not support showing function source.\n" +msgstr "El servidor (versión %s) no soporta el despliegue del código fuente de funciones.\n" -#: command.c:1356 +#: command.c:1380 #, c-format msgid "function name is required\n" msgstr "el nombre de la función es requerido\n" -#: command.c:1429 -#, fuzzy, c-format -#| msgid "The server (version %d.%d) does not support showing function source.\n" -msgid "The server (version %d.%d) does not support showing view definitions.\n" -msgstr "El servidor (versión %d.%d) no soporta el despliegue del código fuente de funciones.\n" +#: command.c:1455 +#, c-format +msgid "The server (version %s) does not support showing view definitions.\n" +msgstr "El servidor (versión %s) no soporta el despliegue de definiciones de vistas.\n" -#: command.c:1435 -#, fuzzy, c-format -#| msgid "function name is required\n" +#: command.c:1462 +#, c-format msgid "view name is required\n" -msgstr "el nombre de la función es requerido\n" +msgstr "el nombre de la vista es requerido\n" -#: command.c:1522 +#: command.c:1549 msgid "Timing is on." msgstr "El despliegue de duración está activado." -#: command.c:1524 +#: command.c:1551 msgid "Timing is off." msgstr "El despliegue de duración está desactivado." -#: command.c:1586 command.c:1606 command.c:2240 command.c:2243 command.c:2246 -#: command.c:2252 command.c:2254 command.c:2262 command.c:2272 command.c:2281 -#: command.c:2295 command.c:2312 command.c:2370 common.c:67 copy.c:332 -#: copy.c:392 copy.c:405 psqlscanslash.l:710 psqlscanslash.l:721 -#: psqlscanslash.l:731 +#: command.c:1613 command.c:1633 command.c:2311 command.c:2314 command.c:2317 +#: command.c:2323 command.c:2325 command.c:2333 command.c:2343 command.c:2352 +#: command.c:2366 command.c:2383 command.c:2441 common.c:68 copy.c:332 +#: copy.c:392 copy.c:405 psqlscanslash.l:711 psqlscanslash.l:722 +#: psqlscanslash.l:732 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" -#: command.c:1700 +#: command.c:1727 #, c-format msgid "+ opt(%d) = |%s|\n" msgstr "+ opt(%d) = |%s|\n" -#: command.c:1726 startup.c:207 +#: command.c:1753 startup.c:207 msgid "Password: " msgstr "Contraseña: " -#: command.c:1731 startup.c:209 +#: command.c:1758 startup.c:209 #, c-format msgid "Password for user %s: " msgstr "Contraseña para usuario %s: " -#: command.c:1778 +#: command.c:1809 #, c-format msgid "All connection parameters must be supplied because no database connection exists\n" msgstr "Debe proveer todos los parámetros de conexión porque no existe conexión a una base de datos\n" -#: command.c:1901 +#: command.c:1966 #, c-format msgid "Previous connection kept\n" msgstr "Se ha mantenido la conexión anterior\n" -#: command.c:1905 +#: command.c:1970 #, c-format msgid "\\connect: %s" msgstr "\\connect: %s" -#: command.c:1937 +#: command.c:2006 #, 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:1940 +#: command.c:2009 #, 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:1944 +#: command.c:2013 #, 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:1978 +#: command.c:2046 #, c-format msgid "%s (%s, server %s)\n" msgstr "%s (%s, servidor %s)\n" -#: command.c:1986 +#: command.c:2054 #, c-format msgid "" -"WARNING: %s major version %d.%d, server major version %d.%d.\n" +"WARNING: %s major version %s, server major version %s.\n" " Some psql features might not work.\n" msgstr "" -"ADVERTENCIA: %s versión %d.%d, servidor versión %d.%d.\n" +"ADVERTENCIA: %s versión mayor %s, servidor versión mayor %s.\n" " Algunas características de psql podrían no funcionar.\n" -#: command.c:2020 +#: command.c:2091 #, c-format msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n" msgstr "conexión SSL (protocolo: %s, cifrado: %s, bits: %s, compresión: %s)\n" -#: command.c:2021 command.c:2022 command.c:2023 +#: command.c:2092 command.c:2093 command.c:2094 msgid "unknown" msgstr "desconocido" -#: command.c:2024 help.c:46 +#: command.c:2095 help.c:46 msgid "off" msgstr "desactivado" -#: command.c:2024 help.c:46 +#: command.c:2095 help.c:46 msgid "on" msgstr "activado" -#: command.c:2044 +#: command.c:2115 #, c-format msgid "" "WARNING: Console code page (%u) differs from Windows code page (%u)\n" @@ -410,248 +407,239 @@ msgstr "" " Vea la página de referencia de psql «Notes for Windows users»\n" " para obtener más detalles.\n" -#: command.c:2129 +#: command.c:2200 #, c-format msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number\n" msgstr "la variable de ambiente PSQL_EDITOR_LINENUMBER_SWITCH debe estar definida para poder especificar un número de línea\n" -#: command.c:2158 +#: command.c:2229 #, c-format msgid "could not start editor \"%s\"\n" msgstr "no se pudo iniciar el editor «%s»\n" -#: command.c:2160 +#: command.c:2231 #, c-format msgid "could not start /bin/sh\n" msgstr "no se pudo iniciar /bin/sh\n" -#: command.c:2198 +#: command.c:2269 #, c-format msgid "could not locate temporary directory: %s\n" msgstr "no se pudo ubicar el directorio temporal: %s\n" -#: command.c:2225 +#: command.c:2296 #, c-format msgid "could not open temporary file \"%s\": %s\n" msgstr "no se pudo abrir archivo temporal «%s»: %s\n" -#: command.c:2499 +#: command.c:2570 #, c-format msgid "\\pset: allowed formats are unaligned, aligned, wrapped, html, asciidoc, latex, latex-longtable, troff-ms\n" msgstr "\\pset: formatos permitidos son unaligned, aligned, wrapped, html, asciidoc, latex, latex-longtable, troff-ms\n" -#: command.c:2518 +#: command.c:2589 #, c-format msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" msgstr "\\pset: estilos de línea permitidos son ascii, old-ascii, unicode\n" -#: command.c:2534 -#, fuzzy, c-format -#| msgid "\\pset: allowed unicode border linestyle are single, double\n" +#: command.c:2605 +#, c-format msgid "\\pset: allowed Unicode border line styles are single, double\n" -msgstr "\\pset: estilos de línea unicode de borde permitidos son single, double\n" +msgstr "\\pset: estilos de línea Unicode de borde permitidos son single, double\n" -#: command.c:2549 -#, fuzzy, c-format -#| msgid "\\pset: allowed unicode column linestyle are single, double\n" +#: command.c:2620 +#, c-format msgid "\\pset: allowed Unicode column line styles are single, double\n" -msgstr "\\pset: estilos de línea unicode de columna permitidos son single, double\n" +msgstr "\\pset: estilos de línea Unicode de columna permitidos son single, double\n" -#: command.c:2564 -#, fuzzy, c-format -#| msgid "\\pset: allowed unicode header linestyle are single, double\n" +#: command.c:2635 +#, c-format msgid "\\pset: allowed Unicode header line styles are single, double\n" -msgstr "\\pset: estilos de línea unicode de encabezado permitidos son single, double\n" +msgstr "\\pset: estilos de línea Unicode de encabezado permitidos son single, double\n" -#: command.c:2716 command.c:2895 +#: command.c:2787 command.c:2966 #, c-format msgid "\\pset: unknown option: %s\n" msgstr "\\pset: opción desconocida: %s\n" -#: command.c:2734 +#: command.c:2805 #, c-format msgid "Border style is %d.\n" msgstr "El estilo de borde es %d.\n" -#: command.c:2740 +#: command.c:2811 #, c-format msgid "Target width is unset.\n" msgstr "El ancho no está definido.\n" -#: command.c:2742 +#: command.c:2813 #, c-format msgid "Target width is %d.\n" msgstr "El ancho es %d.\n" -#: command.c:2749 +#: command.c:2820 #, c-format msgid "Expanded display is on.\n" msgstr "Se ha activado el despliegue expandido.\n" -#: command.c:2751 +#: command.c:2822 #, c-format msgid "Expanded display is used automatically.\n" msgstr "El despliegue expandido se usa automáticamente.\n" -#: command.c:2753 +#: command.c:2824 #, c-format msgid "Expanded display is off.\n" msgstr "Se ha desactivado el despliegue expandido.\n" -#: command.c:2760 command.c:2768 +#: command.c:2831 command.c:2839 #, c-format msgid "Field separator is zero byte.\n" msgstr "El separador de campos es el byte cero.\n" -#: command.c:2762 +#: command.c:2833 #, c-format msgid "Field separator is \"%s\".\n" msgstr "El separador de campos es «%s».\n" -#: command.c:2775 +#: command.c:2846 #, c-format msgid "Default footer is on.\n" msgstr "El pie por omisión está activo.\n" -#: command.c:2777 +#: command.c:2848 #, c-format msgid "Default footer is off.\n" msgstr "El pie de página por omisión está desactivado.\n" -#: command.c:2783 +#: command.c:2854 #, c-format msgid "Output format is %s.\n" msgstr "El formato de salida es %s.\n" -#: command.c:2789 +#: command.c:2860 #, c-format msgid "Line style is %s.\n" msgstr "El estilo de línea es %s.\n" -#: command.c:2796 +#: command.c:2867 #, c-format msgid "Null display is \"%s\".\n" msgstr "Despliegue de nulos es «%s».\n" -#: command.c:2804 +#: command.c:2875 #, c-format msgid "Locale-adjusted numeric output is on.\n" msgstr "La salida numérica ajustada localmente está habilitada.\n" -#: command.c:2806 +#: command.c:2877 #, c-format msgid "Locale-adjusted numeric output is off.\n" msgstr "La salida numérica ajustada localmente está deshabilitada.\n" -#: command.c:2813 +#: command.c:2884 #, c-format msgid "Pager is used for long output.\n" msgstr "El paginador se usará para salida larga.\n" -#: command.c:2815 +#: command.c:2886 #, c-format msgid "Pager is always used.\n" msgstr "El paginador se usará siempre.\n" -#: command.c:2817 +#: command.c:2888 #, c-format msgid "Pager usage is off.\n" msgstr "El paginador no se usará.\n" -#: command.c:2823 -#, fuzzy, c-format -#| msgid "Pager won't be used for less than %d lines\n" +#: command.c:2894 +#, 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íneas\n" -msgstr[1] "El paginador no se usará para menos de %d líneas\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:2833 command.c:2843 +#: command.c:2904 command.c:2914 #, c-format msgid "Record separator is zero byte.\n" msgstr "El separador de filas es el byte cero.\n" -#: command.c:2835 +#: command.c:2906 #, c-format msgid "Record separator is .\n" msgstr "El separador de filas es .\n" -#: command.c:2837 +#: command.c:2908 #, c-format msgid "Record separator is \"%s\".\n" msgstr "El separador de filas es «%s».\n" -#: command.c:2850 +#: command.c:2921 #, c-format msgid "Table attributes are \"%s\".\n" msgstr "Los atributos de tabla son «%s».\n" -#: command.c:2853 +#: command.c:2924 #, c-format msgid "Table attributes unset.\n" msgstr "Los atributos de tabla han sido indefinidos.\n" -#: command.c:2860 +#: command.c:2931 #, c-format msgid "Title is \"%s\".\n" msgstr "El título es «%s».\n" -#: command.c:2862 +#: command.c:2933 #, c-format msgid "Title is unset.\n" msgstr "El título ha sido indefinido.\n" -#: command.c:2869 +#: command.c:2940 #, c-format msgid "Tuples only is on.\n" msgstr "Mostrar sólo filas está activado.\n" -#: command.c:2871 +#: command.c:2942 #, c-format msgid "Tuples only is off.\n" msgstr "Mostrar sólo filas está desactivado.\n" -#: command.c:2877 -#, fuzzy, c-format -#| msgid "Unicode border linestyle is \"%s\".\n" +#: command.c:2948 +#, c-format msgid "Unicode border line style is \"%s\".\n" -msgstr "El estilo unicode de borde es «%s».\n" +msgstr "El estilo Unicode de borde es «%s».\n" -#: command.c:2883 -#, fuzzy, c-format -#| msgid "Unicode column linestyle is \"%s\".\n" +#: command.c:2954 +#, c-format msgid "Unicode column line style is \"%s\".\n" -msgstr "El estilo de línea unicode de columna es «%s».\n" +msgstr "El estilo de línea Unicode de columna es «%s».\n" -#: command.c:2889 -#, fuzzy, c-format -#| msgid "Unicode border linestyle is \"%s\".\n" +#: command.c:2960 +#, c-format msgid "Unicode header line style is \"%s\".\n" -msgstr "El estilo unicode de borde es «%s».\n" +msgstr "El estilo de línea Unicode de encabezado es «%s».\n" -#: command.c:3049 +#: command.c:3120 #, c-format msgid "\\!: failed\n" msgstr "\\!: falló\n" -#: command.c:3073 common.c:654 +#: command.c:3145 common.c:659 #, c-format msgid "\\watch cannot be used with an empty query\n" msgstr "\\watch no puede ser usado con una consulta vacía\n" -#: command.c:3110 -#, fuzzy, c-format -#| msgid "%s (%s, server %s)\n" +#: command.c:3186 +#, c-format msgid "%s\t%s (every %gs)\n" -msgstr "%s (%s, servidor %s)\n" +msgstr "%s\t%s (cada %gs)\n" -#: command.c:3113 -#, fuzzy, c-format -#| msgid "%s (%s, server %s)\n" +#: command.c:3189 +#, c-format msgid "%s (every %gs)\n" -msgstr "%s (%s, servidor %s)\n" +msgstr "%s (cada %gs)\n" -#: command.c:3167 command.c:3174 common.c:554 common.c:561 common.c:1168 +#: command.c:3243 command.c:3250 common.c:559 common.c:566 common.c:1173 #, c-format msgid "" "********* QUERY **********\n" @@ -664,83 +652,87 @@ msgstr "" "**************************\n" "\n" -#: command.c:3325 -#, fuzzy, c-format -#| msgid "\"%s\" is not a view" -msgid "%s.%s is not a view\n" -msgstr "«%s» no es una vista" +#: command.c:3442 +#, c-format +msgid "\"%s.%s\" is not a view\n" +msgstr "«%s.%s» no es una vista\n" + +#: command.c:3458 +#, c-format +msgid "could not parse reloptions array\n" +msgstr "no se pudo interpretar el array reloptions\n" -#: common.c:137 +#: common.c:138 #, c-format -msgid "can't escape without active connection\n" +msgid "cannot escape without active connection\n" msgstr "no se puede escapar sin una conexión activa\n" -#: common.c:366 +#: common.c:371 #, c-format msgid "connection to server was lost\n" msgstr "se ha perdido la conexión al servidor\n" -#: common.c:370 +#: common.c:375 #, 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:375 +#: common.c:380 #, c-format msgid "Failed.\n" msgstr "falló.\n" -#: common.c:382 +#: common.c:387 #, c-format msgid "Succeeded.\n" msgstr "con éxito.\n" -#: common.c:482 common.c:931 common.c:1103 +#: common.c:487 common.c:936 common.c:1108 #, c-format msgid "unexpected PQresultStatus: %d\n" msgstr "PQresultStatus no esperado: %d\n" -#: common.c:661 +#: common.c:666 #, c-format msgid "\\watch cannot be used with COPY\n" msgstr "no se puede usar \\watch con COPY\n" -#: common.c:666 +#: common.c:671 #, c-format msgid "unexpected result status for \\watch\n" msgstr "Estado de resultado inesperado de \\watch\n" -#: common.c:677 common.c:1327 +#: common.c:682 common.c:1335 #, c-format msgid "Time: %.3f ms\n" msgstr "Duración: %.3f ms\n" -#: common.c:695 +#: common.c:700 #, 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:698 +#: common.c:703 #, 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:756 +#: common.c:761 #, c-format msgid "no rows returned for \\gset\n" msgstr "\\gset no retornó renglón alguno\n" -#: common.c:761 +#: common.c:766 #, c-format msgid "more than one row returned for \\gset\n" msgstr "\\gset retornó más de un renglón\n" -#: common.c:787 +#: common.c:792 #, c-format msgid "could not set variable \"%s\"\n" msgstr "no se pudo definir la variable «%s»\n" -#: common.c:1148 +#: common.c:1153 #, c-format msgid "" "***(Single step mode: verify command)*******************************************\n" @@ -751,17 +743,17 @@ msgstr "" "%s\n" "***(presione enter para continuar, o x y enter para cancelar)*******************\n" -#: common.c:1201 +#: common.c:1208 #, c-format -msgid "The server (version %d.%d) does not support savepoints for ON_ERROR_ROLLBACK.\n" -msgstr "El servidor (versión %d.%d) no soporta savepoints para ON_ERROR_ROLLBACK.\n" +msgid "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK.\n" +msgstr "El servidor (versión %s) no soporta savepoints para ON_ERROR_ROLLBACK.\n" -#: common.c:1256 +#: common.c:1264 #, c-format msgid "STATEMENT: %s\n" msgstr "SENTENCIA: %s\n" -#: common.c:1299 +#: common.c:1307 #, c-format msgid "unexpected transaction status (%d)\n" msgstr "estado de transacción inesperado (%d)\n" @@ -818,53 +810,98 @@ msgstr "cancelada por el usuario" #: copy.c:542 msgid "" "Enter data to be copied followed by a newline.\n" -"End with a backslash and a period on a line by itself." +"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." +"Termine con un backslash y un punto, o una señal EOF." #: copy.c:671 msgid "aborted because of read failure" msgstr "se abortó por un error de lectura" -#: copy.c:695 +#: copy.c:705 msgid "trying to exit copy mode" msgstr "tratando de salir del modo copy" -#: describe.c:71 describe.c:264 describe.c:496 describe.c:626 describe.c:769 -#: describe.c:886 describe.c:956 describe.c:2931 describe.c:3136 -#: describe.c:3226 describe.c:3471 describe.c:3608 describe.c:3837 -#: describe.c:3909 describe.c:3920 describe.c:3979 describe.c:4387 -#: describe.c:4467 +#: crosstabview.c:125 +#, c-format +msgid "\\crosstabview: statement did not return a result set\n" +msgstr "\\crosstabview: la sentencia no produjo un conjunto de resultados\n" + +#: crosstabview.c:131 +#, c-format +msgid "\\crosstabview: query must return at least three columns\n" +msgstr "\\crosstabview: la consulta debe retornar al menos tres columnas\n" + +#: crosstabview.c:158 +#, c-format +msgid "\\crosstabview: vertical and horizontal headers must be different columns\n" +msgstr "\\crosstabview: los encabezados verticales y horizontales deben ser columnas distintas\n" + +#: crosstabview.c:174 +#, c-format +msgid "\\crosstabview: data column must be specified when query returns more than three columns\n" +msgstr "\\crosstabview: la columna de datos debe ser especificada cuando la consulta retorna más de tres columnas\n" + +#: crosstabview.c:230 +#, c-format +msgid "\\crosstabview: maximum number of columns (%d) exceeded\n" +msgstr "\\crosstabview: se superó el número máximo de columnas (%d)\n" + +#: crosstabview.c:399 +#, c-format +msgid "\\crosstabview: query result contains multiple data values for row \"%s\", column \"%s\"\n" +msgstr "\\crosstabview: el resultado de la consulta contiene múltiples valores para la fila «%s», columna «%s»\n" + +#: crosstabview.c:647 +#, c-format +msgid "\\crosstabview: column number %d is out of range 1..%d\n" +msgstr "\\crosstabview: el número de columna %d está fuera del rango 1..%d\n" + +#: crosstabview.c:672 +#, c-format +msgid "\\crosstabview: ambiguous column name: \"%s\"\n" +msgstr "\\crosstabview: nombre de columna «%s» ambiguo\n" + +#: crosstabview.c:680 +#, c-format +msgid "\\crosstabview: column name not found: \"%s\"\n" +msgstr "\\crosstabview: nombre de columna «%s» no encontrado\n" + +#: describe.c:71 describe.c:340 describe.c:597 describe.c:727 describe.c:870 +#: describe.c:990 describe.c:1060 describe.c:3035 describe.c:3240 +#: describe.c:3330 describe.c:3578 describe.c:3718 describe.c:3950 +#: describe.c:4025 describe.c:4036 describe.c:4098 describe.c:4518 +#: describe.c:4601 msgid "Schema" msgstr "Esquema" -#: describe.c:72 describe.c:156 describe.c:164 describe.c:265 describe.c:497 -#: describe.c:627 describe.c:688 describe.c:770 describe.c:957 describe.c:2932 -#: describe.c:3058 describe.c:3137 describe.c:3227 describe.c:3306 -#: describe.c:3472 describe.c:3536 describe.c:3609 describe.c:3838 -#: describe.c:3910 describe.c:3921 describe.c:3980 describe.c:4169 -#: describe.c:4250 describe.c:4465 +#: describe.c:72 describe.c:160 describe.c:226 describe.c:234 describe.c:341 +#: describe.c:598 describe.c:728 describe.c:789 describe.c:871 describe.c:1061 +#: describe.c:3036 describe.c:3162 describe.c:3241 describe.c:3331 +#: describe.c:3410 describe.c:3579 describe.c:3643 describe.c:3719 +#: describe.c:3951 describe.c:4026 describe.c:4037 describe.c:4099 +#: describe.c:4291 describe.c:4375 describe.c:4599 msgid "Name" msgstr "Nombre" -#: describe.c:73 describe.c:277 describe.c:323 describe.c:340 +#: describe.c:73 describe.c:353 describe.c:399 describe.c:416 msgid "Result data type" msgstr "Tipo de dato de salida" -#: describe.c:81 describe.c:94 describe.c:98 describe.c:278 describe.c:324 -#: describe.c:341 +#: describe.c:81 describe.c:94 describe.c:98 describe.c:354 describe.c:400 +#: describe.c:417 msgid "Argument data types" msgstr "Tipos de datos de argumentos" -#: describe.c:105 describe.c:187 describe.c:370 describe.c:545 describe.c:642 -#: describe.c:713 describe.c:959 describe.c:1572 describe.c:2732 -#: describe.c:2965 describe.c:3089 describe.c:3163 describe.c:3236 -#: describe.c:3319 describe.c:3387 describe.c:3479 describe.c:3545 -#: describe.c:3610 describe.c:3746 describe.c:3786 describe.c:3854 -#: describe.c:3913 describe.c:3922 describe.c:3981 describe.c:4195 -#: describe.c:4272 describe.c:4401 describe.c:4468 large_obj.c:289 -#: large_obj.c:299 +#: describe.c:105 describe.c:170 describe.c:257 describe.c:462 describe.c:646 +#: describe.c:743 describe.c:814 describe.c:1063 describe.c:1676 +#: describe.c:2836 describe.c:3069 describe.c:3193 describe.c:3267 +#: describe.c:3340 describe.c:3423 describe.c:3491 describe.c:3586 +#: describe.c:3652 describe.c:3720 describe.c:3856 describe.c:3896 +#: describe.c:3967 describe.c:4029 describe.c:4038 describe.c:4100 +#: describe.c:4317 describe.c:4397 describe.c:4532 describe.c:4602 +#: large_obj.c:289 large_obj.c:299 msgid "Description" msgstr "Descripción" @@ -872,877 +909,912 @@ msgstr "Descripción" msgid "List of aggregate functions" msgstr "Listado de funciones de agregación" -#: describe.c:144 +#: describe.c:147 +#, c-format +msgid "The server (version %s) does not support access methods.\n" +msgstr "El servidor (versión %s) no soporta métodos de acceso.\n" + +#: describe.c:161 +msgid "Index" +msgstr "Indice" + +#: describe.c:162 describe.c:360 describe.c:405 describe.c:422 describe.c:877 +#: describe.c:999 describe.c:1645 describe.c:3044 describe.c:3242 +#: describe.c:4394 +msgid "Type" +msgstr "Tipo" + +#: describe.c:169 describe.c:4296 +msgid "Handler" +msgstr "Manejador" + +#: describe.c:188 +msgid "List of access methods" +msgstr "Lista de métodos de acceso" + +#: describe.c:213 #, c-format -msgid "The server (version %d.%d) does not support tablespaces.\n" -msgstr "El servidor (versión %d.%d) no soporta tablespaces.\n" +msgid "The server (version %s) does not support tablespaces.\n" +msgstr "El servidor (versión %s) no soporta tablespaces.\n" -#: describe.c:157 describe.c:165 describe.c:367 describe.c:535 describe.c:689 -#: describe.c:885 describe.c:2941 describe.c:3062 describe.c:3308 -#: describe.c:3537 describe.c:4170 describe.c:4251 large_obj.c:288 +#: describe.c:227 describe.c:235 describe.c:450 describe.c:636 describe.c:790 +#: describe.c:989 describe.c:3045 describe.c:3166 describe.c:3412 +#: describe.c:3644 describe.c:4292 describe.c:4376 large_obj.c:288 msgid "Owner" msgstr "Dueño" -#: describe.c:158 describe.c:166 +#: describe.c:228 describe.c:236 msgid "Location" msgstr "Ubicación" -#: describe.c:177 describe.c:2543 +#: describe.c:247 describe.c:2647 msgid "Options" msgstr "Opciones" -#: describe.c:182 describe.c:508 describe.c:705 describe.c:2957 -#: describe.c:2961 +#: describe.c:252 describe.c:609 describe.c:806 describe.c:3061 describe.c:3065 msgid "Size" msgstr "Tamaño" -#: describe.c:204 +#: describe.c:274 msgid "List of tablespaces" msgstr "Listado de tablespaces" -#: describe.c:241 +#: describe.c:314 #, c-format msgid "\\df only takes [antwS+] as options\n" msgstr "\\df sólo acepta las opciones [antwS+]\n" -#: describe.c:247 +#: describe.c:322 #, c-format -msgid "\\df does not take a \"w\" option with server version %d.%d\n" -msgstr "\\df no acepta la opción «w» en un servidor versión %d.%d\n" +msgid "\\df does not take a \"w\" option with server version %s\n" +msgstr "\\df no acepta la opción «w» en un servidor versión %s\n" #. translator: "agg" is short for "aggregate" -#: describe.c:280 describe.c:326 describe.c:343 +#: describe.c:356 describe.c:402 describe.c:419 msgid "agg" msgstr "agg" -#: describe.c:281 +#: describe.c:357 msgid "window" msgstr "ventana" -#: describe.c:282 describe.c:327 describe.c:344 describe.c:1093 +#: describe.c:358 describe.c:403 describe.c:420 describe.c:1197 msgid "trigger" msgstr "disparador" -#: describe.c:283 describe.c:328 describe.c:345 +#: describe.c:359 describe.c:404 describe.c:421 msgid "normal" msgstr "normal" -#: describe.c:284 describe.c:329 describe.c:346 describe.c:776 describe.c:895 -#: describe.c:1541 describe.c:2940 describe.c:3138 describe.c:4269 -msgid "Type" -msgstr "Tipo" - -#: describe.c:360 -msgid "definer" -msgstr "definidor" - -#: describe.c:361 -msgid "invoker" -msgstr "invocador" - -#: describe.c:362 -msgid "Security" -msgstr "Seguridad" - -#: describe.c:363 +#: describe.c:432 msgid "immutable" msgstr "inmutable" -#: describe.c:364 +#: describe.c:433 msgid "stable" msgstr "estable" -#: describe.c:365 +#: describe.c:434 msgid "volatile" msgstr "volátil" -#: describe.c:366 +#: describe.c:435 msgid "Volatility" msgstr "Volatilidad" -#: describe.c:368 +#: describe.c:443 +msgid "restricted" +msgstr "restringida" + +#: describe.c:444 +msgid "safe" +msgstr "segura" + +#: describe.c:445 +msgid "unsafe" +msgstr "insegura" + +#: describe.c:446 +msgid "Parallel" +msgstr "Paralelismo" + +#: describe.c:451 +msgid "definer" +msgstr "definidor" + +#: describe.c:452 +msgid "invoker" +msgstr "invocador" + +#: describe.c:453 +msgid "Security" +msgstr "Seguridad" + +#: describe.c:460 msgid "Language" msgstr "Lenguaje" -#: describe.c:369 +#: describe.c:461 msgid "Source code" msgstr "Código fuente" -#: describe.c:467 +#: describe.c:560 msgid "List of functions" msgstr "Listado de funciones" -#: describe.c:507 +#: describe.c:608 msgid "Internal name" msgstr "Nombre interno" -#: describe.c:529 +#: describe.c:630 msgid "Elements" msgstr "Elementos" -#: describe.c:585 +#: describe.c:686 msgid "List of data types" msgstr "Listado de tipos de dato" -#: describe.c:628 +#: describe.c:729 msgid "Left arg type" msgstr "Tipo arg izq" -#: describe.c:629 +#: describe.c:730 msgid "Right arg type" msgstr "Tipo arg der" -#: describe.c:630 +#: describe.c:731 msgid "Result type" msgstr "Tipo resultado" -#: describe.c:635 describe.c:3378 describe.c:3745 +#: describe.c:736 describe.c:3482 describe.c:3855 msgid "Function" msgstr "Función" -#: describe.c:660 +#: describe.c:761 msgid "List of operators" msgstr "Listado de operadores" -#: describe.c:690 +#: describe.c:791 msgid "Encoding" msgstr "Codificación" -#: describe.c:695 describe.c:3473 +#: describe.c:796 describe.c:3580 msgid "Collate" msgstr "Collate" -#: describe.c:696 describe.c:3474 +#: describe.c:797 describe.c:3581 msgid "Ctype" msgstr "Ctype" -#: describe.c:709 +#: describe.c:810 msgid "Tablespace" msgstr "Tablespace" -#: describe.c:731 +#: describe.c:832 msgid "List of databases" msgstr "Listado de base de datos" -#: describe.c:771 describe.c:888 describe.c:2933 +#: describe.c:872 describe.c:992 describe.c:3037 msgid "table" msgstr "tabla" -#: describe.c:772 describe.c:2934 +#: describe.c:873 describe.c:3038 msgid "view" msgstr "vista" -#: describe.c:773 describe.c:2935 +#: describe.c:874 describe.c:3039 msgid "materialized view" msgstr "vistas materializadas" -#: describe.c:774 describe.c:890 describe.c:2937 +#: describe.c:875 describe.c:994 describe.c:3041 msgid "sequence" msgstr "secuencia" -#: describe.c:775 describe.c:2939 +#: describe.c:876 describe.c:3043 msgid "foreign table" msgstr "tabla foránea" -#: describe.c:787 +#: describe.c:888 msgid "Column privileges" msgstr "Privilegios de acceso a columnas" -#: describe.c:818 +#: describe.c:919 msgid "Policies" msgstr "Políticas" -#: describe.c:844 describe.c:4612 describe.c:4616 +#: describe.c:945 describe.c:4749 describe.c:4753 msgid "Access privileges" msgstr "Privilegios" -#: describe.c:873 +#: describe.c:976 #, c-format -msgid "The server (version %d.%d) does not support altering default privileges.\n" -msgstr "El servidor (versión %d.%d) no soporta la alteración de privilegios por omisión.\n" +msgid "The server (version %s) does not support altering default privileges.\n" +msgstr "El servidor (versión %s) no soporta la alteración de privilegios por omisión.\n" -#: describe.c:892 +#: describe.c:996 msgid "function" msgstr "función" -#: describe.c:894 +#: describe.c:998 msgid "type" msgstr "tipo" -#: describe.c:918 +#: describe.c:1022 msgid "Default access privileges" msgstr "Privilegios de acceso por omisión" -#: describe.c:958 +#: describe.c:1062 msgid "Object" msgstr "Objeto" -#: describe.c:972 +#: describe.c:1076 msgid "table constraint" msgstr "restricción de tabla" -#: describe.c:994 +#: describe.c:1098 msgid "domain constraint" msgstr "restricción de dominio" -#: describe.c:1022 +#: describe.c:1126 msgid "operator class" msgstr "clase de operadores" -#: describe.c:1051 +#: describe.c:1155 msgid "operator family" msgstr "familia de operadores" -#: describe.c:1073 +#: describe.c:1177 msgid "rule" msgstr "regla" -#: describe.c:1115 +#: describe.c:1219 msgid "Object descriptions" msgstr "Descripciones de objetos" -#: describe.c:1169 +#: describe.c:1273 #, c-format msgid "Did not find any relation named \"%s\".\n" msgstr "No se encontró relación llamada «%s».\n" -#: describe.c:1379 +#: describe.c:1483 #, c-format msgid "Did not find any relation with OID %s.\n" msgstr "No se encontró relación con OID %s.\n" -#: describe.c:1485 +#: describe.c:1589 #, c-format msgid "Unlogged table \"%s.%s\"" msgstr "Tabla unlogged «%s.%s»" -#: describe.c:1488 +#: describe.c:1592 #, c-format msgid "Table \"%s.%s\"" msgstr "Tabla «%s.%s»" -#: describe.c:1492 +#: describe.c:1596 #, c-format msgid "View \"%s.%s\"" msgstr "Vista «%s.%s»" -#: describe.c:1497 +#: describe.c:1601 #, c-format msgid "Unlogged materialized view \"%s.%s\"" msgstr "Vista materializada unlogged «%s.%s»" -#: describe.c:1500 +#: describe.c:1604 #, c-format msgid "Materialized view \"%s.%s\"" msgstr "Vista materializada \"%s.%s\"" -#: describe.c:1504 +#: describe.c:1608 #, c-format msgid "Sequence \"%s.%s\"" msgstr "Secuencia «%s.%s»" -#: describe.c:1509 +#: describe.c:1613 #, c-format msgid "Unlogged index \"%s.%s\"" msgstr "Ãndice unlogged «%s.%s»" -#: describe.c:1512 +#: describe.c:1616 #, c-format msgid "Index \"%s.%s\"" msgstr "Ãndice «%s.%s»" -#: describe.c:1517 +#: describe.c:1621 #, c-format msgid "Special relation \"%s.%s\"" msgstr "Relación especial «%s.%s»" -#: describe.c:1521 +#: describe.c:1625 #, c-format msgid "TOAST table \"%s.%s\"" msgstr "Tabla TOAST «%s.%s»" -#: describe.c:1525 +#: describe.c:1629 #, c-format msgid "Composite type \"%s.%s\"" msgstr "Tipo compuesto «%s.%s»" -#: describe.c:1529 +#: describe.c:1633 #, c-format msgid "Foreign table \"%s.%s\"" msgstr "Tabla foránea «%s.%s»" -#: describe.c:1540 +#: describe.c:1644 msgid "Column" msgstr "Columna" -#: describe.c:1549 +#: describe.c:1653 msgid "Modifiers" msgstr "Modificadores" -#: describe.c:1554 +#: describe.c:1658 msgid "Value" msgstr "Valor" -#: describe.c:1557 +#: describe.c:1661 msgid "Definition" msgstr "Definición" -#: describe.c:1560 describe.c:4190 describe.c:4271 describe.c:4339 -#: describe.c:4400 +#: describe.c:1664 describe.c:4312 describe.c:4396 describe.c:4467 +#: describe.c:4531 msgid "FDW Options" msgstr "Opciones de FDW" -#: describe.c:1564 +#: describe.c:1668 msgid "Storage" msgstr "Almacenamiento" -#: describe.c:1567 +#: describe.c:1671 msgid "Stats target" msgstr "Estadísticas" -#: describe.c:1617 +#: describe.c:1721 #, c-format msgid "collate %s" msgstr "collate %s" -#: describe.c:1625 +#: describe.c:1729 msgid "not null" msgstr "not null" #. translator: default values of column definitions -#: describe.c:1635 +#: describe.c:1739 #, c-format msgid "default %s" msgstr "valor por omisión %s" -#: describe.c:1750 +#: describe.c:1854 msgid "primary key, " msgstr "llave primaria, " -#: describe.c:1752 +#: describe.c:1856 msgid "unique, " msgstr "único, " -#: describe.c:1758 +#: describe.c:1862 #, c-format msgid "for table \"%s.%s\"" msgstr "de tabla «%s.%s»" -#: describe.c:1762 +#: describe.c:1866 #, c-format msgid ", predicate (%s)" msgstr ", predicado (%s)" -#: describe.c:1765 +#: describe.c:1869 msgid ", clustered" msgstr ", clustered" -#: describe.c:1768 +#: describe.c:1872 msgid ", invalid" msgstr ", no válido" -#: describe.c:1771 +#: describe.c:1875 msgid ", deferrable" msgstr ", postergable" -#: describe.c:1774 +#: describe.c:1878 msgid ", initially deferred" msgstr ", inicialmente postergada" -#: describe.c:1777 +#: describe.c:1881 msgid ", replica identity" msgstr ", identidad de replicación" -#: describe.c:1812 +#: describe.c:1916 #, c-format msgid "Owned by: %s" msgstr "Asociada a: %s" -#: describe.c:1872 +#: describe.c:1976 msgid "Indexes:" msgstr "Ãndices:" -#: describe.c:1956 +#: describe.c:2060 msgid "Check constraints:" msgstr "Restricciones CHECK:" -#: describe.c:1987 +#: describe.c:2091 msgid "Foreign-key constraints:" msgstr "Restricciones de llave foránea:" -#: describe.c:2018 +#: describe.c:2122 msgid "Referenced by:" msgstr "Referenciada por:" -#: describe.c:2063 +#: describe.c:2167 msgid "Policies:" msgstr "Políticas:" -#: describe.c:2066 -#, fuzzy -#| msgid "Policies (Row Security Disabled):" +#: describe.c:2170 msgid "Policies (forced row security enabled):" -msgstr "Políticas (Seguridad de filas inactiva):" +msgstr "Políticas (seguridad de registros forzada):" -#: describe.c:2069 -#, fuzzy -#| msgid "Policies (Row Security Enabled): (None)" +#: describe.c:2173 msgid "Policies (row security enabled): (none)" -msgstr "Políticas (Seguridad de filas activa): (Ninguna)" +msgstr "Políticas (seguridad de filas activa): (ninguna)" -#: describe.c:2072 -#, fuzzy -#| msgid "Policies (Row Security Enabled): (None)" +#: describe.c:2176 msgid "Policies (forced row security enabled): (none)" -msgstr "Políticas (Seguridad de filas activa): (Ninguna)" +msgstr "Políticas (seguridad de filas forzada): (ninguna)" -#: describe.c:2075 -#, fuzzy -#| msgid "Policies (Row Security Disabled):" +#: describe.c:2179 msgid "Policies (row security disabled):" -msgstr "Políticas (Seguridad de filas inactiva):" +msgstr "Políticas (seguridad de filas inactiva):" -#: describe.c:2175 describe.c:2225 +#: describe.c:2279 describe.c:2329 msgid "Rules:" msgstr "Reglas:" -#: describe.c:2178 +#: describe.c:2282 msgid "Disabled rules:" msgstr "Reglas deshabilitadas:" -#: describe.c:2181 +#: describe.c:2285 msgid "Rules firing always:" msgstr "Reglas que se activan siempre:" -#: describe.c:2184 +#: describe.c:2288 msgid "Rules firing on replica only:" msgstr "Reglas que se activan sólo en las réplicas:" -#: describe.c:2208 +#: describe.c:2312 msgid "View definition:" msgstr "Definición de vista:" -#: describe.c:2343 +#: describe.c:2447 msgid "Triggers:" msgstr "Triggers:" -#: describe.c:2347 +#: describe.c:2451 msgid "Disabled user triggers:" msgstr "Disparadores de usuario deshabilitados:" -#: describe.c:2349 +#: describe.c:2453 msgid "Disabled triggers:" msgstr "Disparadores deshabilitados:" -#: describe.c:2352 +#: describe.c:2456 msgid "Disabled internal triggers:" msgstr "Disparadores internos deshabilitados:" -#: describe.c:2355 +#: describe.c:2459 msgid "Triggers firing always:" msgstr "Disparadores que siempre se ejecutan:" -#: describe.c:2358 +#: describe.c:2462 msgid "Triggers firing on replica only:" msgstr "Disparadores que se ejecutan sólo en las réplicas:" -#: describe.c:2437 +#: describe.c:2519 +#, c-format +msgid "Server: %s" +msgstr "Servidor: %s" + +#: describe.c:2527 +#, c-format +msgid "FDW Options: (%s)" +msgstr "Opciones de FDW: (%s)" + +#: describe.c:2541 msgid "Inherits" msgstr "Hereda" -#: describe.c:2476 +#: describe.c:2580 #, 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:2483 +#: describe.c:2587 msgid "Child tables" msgstr "Tablas hijas" -#: describe.c:2505 +#: describe.c:2609 #, c-format msgid "Typed table of type: %s" msgstr "Tabla tipada de tipo: %s" -#: describe.c:2519 +#: describe.c:2623 msgid "Replica Identity" msgstr "Identidad de replicación" -#: describe.c:2532 +#: describe.c:2636 msgid "Has OIDs: yes" msgstr "Tiene OIDs: sí" -#: describe.c:2620 +#: describe.c:2724 #, 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:2632 +#: describe.c:2736 #, c-format msgid ", tablespace \"%s\"" msgstr ", tablespace «%s»" -#: describe.c:2725 +#: describe.c:2829 msgid "List of roles" msgstr "Lista de roles" -#: describe.c:2727 +#: describe.c:2831 msgid "Role name" msgstr "Nombre de rol" -#: describe.c:2728 +#: describe.c:2832 msgid "Attributes" msgstr "Atributos" -#: describe.c:2729 +#: describe.c:2833 msgid "Member of" msgstr "Miembro de" -#: describe.c:2740 +#: describe.c:2844 msgid "Superuser" msgstr "Superusuario" -#: describe.c:2743 +#: describe.c:2847 msgid "No inheritance" msgstr "Sin herencia" -#: describe.c:2746 +#: describe.c:2850 msgid "Create role" msgstr "Crear rol" -#: describe.c:2749 +#: describe.c:2853 msgid "Create DB" msgstr "Crear BD" -#: describe.c:2752 +#: describe.c:2856 msgid "Cannot login" msgstr "No puede conectarse" -#: describe.c:2756 +#: describe.c:2860 msgid "Replication" msgstr "Replicación" -#: describe.c:2760 +#: describe.c:2864 msgid "Bypass RLS" msgstr "Ignora RLS" -#: describe.c:2769 +#: describe.c:2873 msgid "No connections" msgstr "Ninguna conexión" -#: describe.c:2771 +#: describe.c:2875 #, c-format msgid "%d connection" msgid_plural "%d connections" msgstr[0] "%d conexión" msgstr[1] "%d conexiones" -#: describe.c:2781 +#: describe.c:2885 msgid "Password valid until " msgstr "Constraseña válida hasta " -#: describe.c:2837 +#: describe.c:2941 msgid "Role" msgstr "Nombre de rol" -#: describe.c:2838 +#: describe.c:2942 msgid "Database" msgstr "Base de Datos" -#: describe.c:2839 +#: describe.c:2943 msgid "Settings" -msgstr "Seteos" +msgstr "Parámetros" -#: describe.c:2849 +#: describe.c:2953 #, c-format msgid "No per-database role settings support in this server version.\n" msgstr "Este servidor no permite parámetros por usuario por base de datos.\n" -#: describe.c:2860 +#: describe.c:2964 #, c-format msgid "No matching settings found.\n" msgstr "No se encontraron parámetros coincidentes.\n" -#: describe.c:2862 +#: describe.c:2966 #, c-format msgid "No settings found.\n" msgstr "No se encontraron parámetros.\n" -#: describe.c:2867 +#: describe.c:2971 msgid "List of settings" msgstr "Listado de parámetros" -#: describe.c:2936 +#: describe.c:3040 msgid "index" msgstr "índice" -#: describe.c:2938 +#: describe.c:3042 msgid "special" msgstr "especial" -#: describe.c:2946 describe.c:4388 +#: describe.c:3050 describe.c:4519 msgid "Table" msgstr "Tabla" -#: describe.c:3022 +#: describe.c:3126 #, c-format msgid "No matching relations found.\n" msgstr "No se encontraron relaciones coincidentes.\n" -#: describe.c:3024 +#: describe.c:3128 #, c-format msgid "No relations found.\n" msgstr "No se encontraron relaciones.\n" -#: describe.c:3029 +#: describe.c:3133 msgid "List of relations" msgstr "Listado de relaciones" -#: describe.c:3066 +#: describe.c:3170 msgid "Trusted" msgstr "Confiable" -#: describe.c:3074 +#: describe.c:3178 msgid "Internal Language" msgstr "Lenguaje interno" -#: describe.c:3075 +#: describe.c:3179 msgid "Call Handler" msgstr "Manejador de llamada" -#: describe.c:3076 describe.c:4177 +#: describe.c:3180 describe.c:4299 msgid "Validator" msgstr "Validador" -#: describe.c:3079 +#: describe.c:3183 msgid "Inline Handler" msgstr "Manejador en línea" -#: describe.c:3107 +#: describe.c:3211 msgid "List of languages" msgstr "Lista de lenguajes" -#: describe.c:3151 +#: describe.c:3255 msgid "Modifier" msgstr "Modificador" -#: describe.c:3152 +#: describe.c:3256 msgid "Check" msgstr "Check" -#: describe.c:3194 +#: describe.c:3298 msgid "List of domains" msgstr "Listado de dominios" -#: describe.c:3228 +#: describe.c:3332 msgid "Source" msgstr "Fuente" -#: describe.c:3229 +#: describe.c:3333 msgid "Destination" msgstr "Destino" -#: describe.c:3230 describe.c:3379 +#: describe.c:3334 describe.c:3483 msgid "no" msgstr "no" -#: describe.c:3230 describe.c:3381 +#: describe.c:3334 describe.c:3485 msgid "yes" msgstr "sí" -#: describe.c:3231 +#: describe.c:3335 msgid "Default?" msgstr "Por omisión?" -#: describe.c:3268 +#: describe.c:3372 msgid "List of conversions" msgstr "Listado de conversiones" -#: describe.c:3307 +#: describe.c:3411 msgid "Event" msgstr "Evento" -#: describe.c:3309 +#: describe.c:3413 msgid "enabled" msgstr "activo" -#: describe.c:3310 +#: describe.c:3414 msgid "replica" msgstr "réplica" -#: describe.c:3311 +#: describe.c:3415 msgid "always" msgstr "siempre" -#: describe.c:3312 +#: describe.c:3416 msgid "disabled" msgstr "inactivo" -#: describe.c:3313 +#: describe.c:3417 msgid "Enabled" msgstr "Activo" -#: describe.c:3314 +#: describe.c:3418 msgid "Procedure" msgstr "Procedimiento" -#: describe.c:3315 +#: describe.c:3419 msgid "Tags" msgstr "Etiquetas" -#: describe.c:3334 +#: describe.c:3438 msgid "List of event triggers" msgstr "Listado de disparadores por eventos" -#: describe.c:3376 +#: describe.c:3480 msgid "Source type" msgstr "Tipo fuente" -#: describe.c:3377 +#: describe.c:3481 msgid "Target type" msgstr "Tipo destino" -#: describe.c:3380 +#: describe.c:3484 msgid "in assignment" msgstr "en asignación" -#: describe.c:3382 +#: describe.c:3486 msgid "Implicit?" msgstr "Implícito?" -#: describe.c:3433 +#: describe.c:3537 msgid "List of casts" msgstr "Listado de conversiones de tipo (casts)" -#: describe.c:3459 +#: describe.c:3565 #, c-format -msgid "The server (version %d.%d) does not support collations.\n" -msgstr "El servidor (versión %d.%d) no soporta «collations».\n" +msgid "The server (version %s) does not support collations.\n" +msgstr "El servidor (versión %s) no soporta «collations».\n" -#: describe.c:3509 +#: describe.c:3616 msgid "List of collations" msgstr "Listado de ordenamientos" -#: describe.c:3568 +#: describe.c:3675 msgid "List of schemas" msgstr "Listado de esquemas" -#: describe.c:3591 describe.c:3826 describe.c:3894 describe.c:3962 +#: describe.c:3700 describe.c:3938 describe.c:4009 describe.c:4080 #, c-format -msgid "The server (version %d.%d) does not support full text search.\n" -msgstr "El servidor (versión %d.%d) no soporta búsqueda en texto.\n" +msgid "The server (version %s) does not support full text search.\n" +msgstr "El servidor (versión %s) no soporta búsqueda en texto.\n" -#: describe.c:3625 +#: describe.c:3735 msgid "List of text search parsers" msgstr "Listado de analizadores de búsqueda en texto" -#: describe.c:3668 +#: describe.c:3778 #, c-format msgid "Did not find any text search parser named \"%s\".\n" msgstr "No se encontró ningún analizador de búsqueda en texto llamado «%s».\n" -#: describe.c:3743 +#: describe.c:3853 msgid "Start parse" msgstr "Inicio de parse" -#: describe.c:3744 +#: describe.c:3854 msgid "Method" msgstr "Método" -#: describe.c:3748 +#: describe.c:3858 msgid "Get next token" msgstr "Obtener siguiente elemento" -#: describe.c:3750 +#: describe.c:3860 msgid "End parse" msgstr "Fin de parse" -#: describe.c:3752 +#: describe.c:3862 msgid "Get headline" msgstr "Obtener encabezado" -#: describe.c:3754 +#: describe.c:3864 msgid "Get token types" msgstr "Obtener tipos de elemento" -#: describe.c:3764 +#: describe.c:3874 #, c-format msgid "Text search parser \"%s.%s\"" msgstr "Analizador de búsqueda en texto «%s.%s»" -#: describe.c:3766 +#: describe.c:3876 #, c-format msgid "Text search parser \"%s\"" msgstr "Analizador de búsqueda en texto «%s»" -#: describe.c:3785 +#: describe.c:3895 msgid "Token name" msgstr "Nombre de elemento" -#: describe.c:3796 +#: describe.c:3906 #, c-format msgid "Token types for parser \"%s.%s\"" msgstr "Tipos de elemento para el analizador «%s.%s»" -#: describe.c:3798 +#: describe.c:3908 #, c-format msgid "Token types for parser \"%s\"" msgstr "Tipos de elemento para el analizador «%s»" -#: describe.c:3848 +#: describe.c:3961 msgid "Template" msgstr "Plantilla" -#: describe.c:3849 +#: describe.c:3962 msgid "Init options" msgstr "Opciones de inicialización" -#: describe.c:3871 +#: describe.c:3984 msgid "List of text search dictionaries" msgstr "Listado de diccionarios de búsqueda en texto" -#: describe.c:3911 +#: describe.c:4027 msgid "Init" msgstr "Inicializador" -#: describe.c:3912 +#: describe.c:4028 msgid "Lexize" msgstr "Fn. análisis léx." -#: describe.c:3939 +#: describe.c:4055 msgid "List of text search templates" msgstr "Listado de plantillas de búsqueda en texto" -#: describe.c:3996 +#: describe.c:4115 msgid "List of text search configurations" msgstr "Listado de configuraciones de búsqueda en texto" -#: describe.c:4040 +#: describe.c:4159 #, c-format msgid "Did not find any text search configuration named \"%s\".\n" msgstr "No se encontró una configuración de búsqueda en texto llamada «%s».\n" -#: describe.c:4106 +#: describe.c:4225 msgid "Token" msgstr "Elemento" -#: describe.c:4107 +#: describe.c:4226 msgid "Dictionaries" msgstr "Diccionarios" -#: describe.c:4118 +#: describe.c:4237 #, c-format msgid "Text search configuration \"%s.%s\"" msgstr "Configuración de búsqueda en texto «%s.%s»" -#: describe.c:4121 +#: describe.c:4240 #, c-format msgid "Text search configuration \"%s\"" msgstr "Configuración de búsqueda en texto «%s»" -#: describe.c:4125 +#: describe.c:4244 #, c-format msgid "" "\n" @@ -1751,7 +1823,7 @@ msgstr "" "\n" "Analizador: «%s.%s»" -#: describe.c:4128 +#: describe.c:4247 #, c-format msgid "" "\n" @@ -1760,86 +1832,82 @@ msgstr "" "\n" "Analizador: «%s»" -#: describe.c:4160 +#: describe.c:4281 #, c-format -msgid "The server (version %d.%d) does not support foreign-data wrappers.\n" -msgstr "El servidor (versión %d.%d) no soporta conectores de datos externos.\n" - -#: describe.c:4174 -msgid "Handler" -msgstr "Manejador" +msgid "The server (version %s) does not support foreign-data wrappers.\n" +msgstr "El servidor (versión %s) no soporta conectores de datos externos.\n" -#: describe.c:4217 +#: describe.c:4339 msgid "List of foreign-data wrappers" msgstr "Listado de conectores de datos externos" -#: describe.c:4240 +#: describe.c:4364 #, c-format -msgid "The server (version %d.%d) does not support foreign servers.\n" -msgstr "El servidor (versión %d.%d) no soporta servidores foráneos.\n" +msgid "The server (version %s) does not support foreign servers.\n" +msgstr "El servidor (versión %s) no soporta servidores foráneos.\n" -#: describe.c:4252 +#: describe.c:4377 msgid "Foreign-data wrapper" msgstr "Conectores de datos externos" -#: describe.c:4270 describe.c:4466 +#: describe.c:4395 describe.c:4600 msgid "Version" msgstr "Versión" -#: describe.c:4296 +#: describe.c:4421 msgid "List of foreign servers" msgstr "Listado de servidores foráneos" -#: describe.c:4319 +#: describe.c:4446 #, c-format -msgid "The server (version %d.%d) does not support user mappings.\n" -msgstr "El servidor (versión %d.%d) no soporta mapeos de usuario.\n" +msgid "The server (version %s) does not support user mappings.\n" +msgstr "El servidor (versión %s) no soporta mapeos de usuario.\n" -#: describe.c:4328 describe.c:4389 +#: describe.c:4456 describe.c:4520 msgid "Server" msgstr "Servidor" -#: describe.c:4329 +#: describe.c:4457 msgid "User name" msgstr "Nombre de usuario" -#: describe.c:4354 +#: describe.c:4482 msgid "List of user mappings" msgstr "Listado de mapeos de usuario" -#: describe.c:4377 +#: describe.c:4507 #, c-format -msgid "The server (version %d.%d) does not support foreign tables.\n" -msgstr "El servidor (versión %d.%d) no soporta tablas foráneas.\n" +msgid "The server (version %s) does not support foreign tables.\n" +msgstr "El servidor (versión %s) no soporta tablas foráneas.\n" -#: describe.c:4429 +#: describe.c:4560 msgid "List of foreign tables" msgstr "Listado de tablas foráneas" -#: describe.c:4452 describe.c:4506 +#: describe.c:4585 describe.c:4642 #, c-format -msgid "The server (version %d.%d) does not support extensions.\n" -msgstr "El servidor (versión %d.%d) no soporta extensiones.\n" +msgid "The server (version %s) does not support extensions.\n" +msgstr "El servidor (versión %s) no soporta extensiones.\n" -#: describe.c:4483 +#: describe.c:4617 msgid "List of installed extensions" msgstr "Listado de extensiones instaladas" -#: describe.c:4533 +#: describe.c:4670 #, c-format msgid "Did not find any extension named \"%s\".\n" msgstr "No se encontró extensión llamada «%s».\n" -#: describe.c:4536 +#: describe.c:4673 #, c-format msgid "Did not find any extensions.\n" msgstr "No se encontró ninguna extensión.\n" -#: describe.c:4580 +#: describe.c:4717 msgid "Object Description" msgstr "Descripciones de objetos" -#: describe.c:4589 +#: describe.c:4726 #, c-format msgid "Objects in extension \"%s\"" msgstr "Objetos en extensión «%s»" @@ -1858,7 +1926,7 @@ msgstr "" "psql es el terminal interactivo de PostgreSQL.\n" "\n" -#: help.c:75 help.c:332 help.c:366 help.c:393 +#: help.c:75 help.c:333 help.c:367 help.c:394 #, c-format msgid "Usage:\n" msgstr "Empleo:\n" @@ -2055,7 +2123,7 @@ msgstr " -t, --tuples-only sólo muestra registros\n" 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" +" definir atributos de tag «table» en formato «html»\n" #: help.c:121 #, c-format @@ -2069,7 +2137,7 @@ msgid "" " 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" +" separador de campos en formato «unaligned» es byte cero\n" #: help.c:124 #, c-format @@ -2078,7 +2146,7 @@ msgid "" " 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" +" separador de filas en formato «unaligned» es byte cero\n" #: help.c:127 #, c-format @@ -2157,7 +2225,7 @@ msgstr " \\copyright mostrar términos de uso y distribución de PostgreSQ #: help.c:175 #, c-format msgid " \\errverbose show most recent error message at maximum verbosity\n" -msgstr "" +msgstr " \\errverbose mostrar error más reciente en máxima verbosidad\n" #: help.c:176 #, c-format @@ -2167,12 +2235,9 @@ msgstr "" " (y resultados a archivo u |orden)\n" #: help.c:177 -#, fuzzy, c-format -#| msgid " \\gset [PREFIX] execute query and store results in psql variables\n" +#, c-format msgid " \\gexec execute query, then execute each value in its result\n" -msgstr "" -" \\gset [PREFIJO] ejecutar la consulta y almacenar los resultados en variables\n" -" de psql\n" +msgstr " \\gexec ejecutar la consulta, luego ejecuta cada valor del resultado\n" #: help.c:178 #, c-format @@ -2189,7 +2254,7 @@ msgstr " \\q salir de psql\n" #: help.c:180 #, c-format msgid " \\crosstabview [COLUMNS] execute query and display results in crosstab\n" -msgstr "" +msgstr " \\crosstabview [COLUMNAS] ejecutar la consulta y desplegar en «crosstab»\n" #: help.c:181 #, c-format @@ -2202,29 +2267,24 @@ msgid "Help\n" msgstr "Ayuda\n" #: help.c:186 -#, fuzzy, c-format -#| msgid " \\? [commands] description of all psql backslash commands\n" +#, c-format msgid " \\? [commands] show help on backslash commands\n" -msgstr " \\? [commands] descripción de todas las órdenes backslash de psql\n" +msgstr " \\? [commands] desplegar ayuda sobre las órdenes backslash\n" #: help.c:187 -#, fuzzy, c-format -#| msgid " \\? options description of all psql commandline options\n" +#, c-format msgid " \\? options show help on psql command-line options\n" -msgstr " \\? options descripción de las opciones de línea de órdenes de psql\n" +msgstr " \\? options desplegar ayuda sobre opciones de línea de órdenes\n" #: help.c:188 -#, fuzzy, c-format -#| msgid " \\? variables description of all psql configuration variables\n" +#, c-format msgid " \\? variables show help on special variables\n" -msgstr " \\? variables descripción de las variables de configuración de psql\n" +msgstr " \\? variables desplegar ayuda sobre variables especiales\n" #: help.c:189 #, c-format msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n" -msgstr "" -" \\h [NOMBRE] mostrar ayuda de sintaxis de órdenes SQL;\n" -" use «*» para todas las órdenes\n" +msgstr " \\h [NOMBRE] desplegar sintaxis de órdenes SQL, use * para mostrar todas\n" #: help.c:192 #, c-format @@ -2246,12 +2306,11 @@ msgstr "" " editar una función con editor externo\n" #: help.c:195 -#, fuzzy, c-format -#| msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" +#, c-format msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n" msgstr "" -" \\ef [NOMBRE-FUNCIÓN [LÃNEA]]\n" -" editar una función con editor externo\n" +" \\ev [NOMBRE-VISTA [LÃNEA]]\n" +" editar definición de una vista con editor externo\n" #: help.c:196 #, c-format @@ -2335,221 +2394,222 @@ msgstr " \\da[S] [PATRÓN] listar funciones de agregación\n" #: help.c:218 #, c-format +msgid " \\dA[+] [PATTERN] list access methods\n" +msgstr " \\dA[+] [PATRÓN] listar métodos de acceso\n" + +#: help.c:219 +#, c-format msgid " \\db[+] [PATTERN] list tablespaces\n" msgstr " \\db[+] [PATRÓN] listar tablespaces\n" -#: help.c:219 +#: help.c:220 #, c-format msgid " \\dc[S+] [PATTERN] list conversions\n" msgstr " \\dc[S+] [PATRÓN] listar conversiones\n" -#: help.c:220 +#: help.c:221 #, c-format msgid " \\dC[+] [PATTERN] list casts\n" msgstr " \\dC[+] [PATRÓN] listar conversiones de tipo (casts)\n" -#: help.c:221 +#: help.c:222 #, c-format msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n" msgstr " \\dd[S] [PATRÓN] listar comentarios de objetos que no aparecen en otra parte\n" -#: help.c:222 +#: help.c:223 #, c-format msgid " \\ddp [PATTERN] list default privileges\n" msgstr " \\ddp [PATRÓN] listar privilegios por omisión\n" -#: help.c:223 +#: help.c:224 #, c-format msgid " \\dD[S+] [PATTERN] list domains\n" msgstr " \\dD[S+] [PATRÓN] listar dominios\n" -#: help.c:224 +#: help.c:225 #, c-format msgid " \\det[+] [PATTERN] list foreign tables\n" msgstr " \\det[+] [PATRÓN] listar tablas foráneas\n" -#: help.c:225 +#: help.c:226 #, c-format msgid " \\des[+] [PATTERN] list foreign servers\n" msgstr " \\des[+] [PATRÓN] listar servidores foráneos\n" -#: help.c:226 +#: help.c:227 #, c-format msgid " \\deu[+] [PATTERN] list user mappings\n" msgstr " \\deu[+] [PATRÓN] listar mapeos de usuario\n" -#: help.c:227 +#: help.c:228 #, c-format msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" msgstr " \\dew[+] [PATRÓN] listar conectores de datos externos\n" -#: help.c:228 +#: help.c:229 #, c-format msgid " \\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions\n" msgstr " \\df[antw][S+] [PATRÓN] listar funciones [sólo ag./normal/trigger/ventana]\n" -#: help.c:229 +#: help.c:230 #, c-format msgid " \\dF[+] [PATTERN] list text search configurations\n" msgstr " \\dF[+] [PATRÓN] listar configuraciones de búsqueda en texto\n" -#: help.c:230 +#: help.c:231 #, c-format msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" msgstr " \\dFd[+] [PATRÓN] listar diccionarios de búsqueda en texto\n" -#: help.c:231 +#: help.c:232 #, c-format msgid " \\dFp[+] [PATTERN] list text search parsers\n" msgstr " \\dFp[+] [PATRÓN] listar analizadores (parsers) de búsq. en texto\n" -#: help.c:232 +#: help.c:233 #, c-format msgid " \\dFt[+] [PATTERN] list text search templates\n" msgstr " \\dFt[+] [PATRÓN] listar plantillas de búsqueda en texto\n" -#: help.c:233 -#, fuzzy, c-format -#| msgid " \\dg[+] [PATTERN] list roles\n" +#: help.c:234 +#, c-format msgid " \\dg[S+] [PATTERN] list roles\n" -msgstr " \\dg[+] [PATRÓN] listar roles\n" +msgstr " \\dg[S+] [PATRÓN] listar roles\n" -#: help.c:234 +#: help.c:235 #, c-format msgid " \\di[S+] [PATTERN] list indexes\n" msgstr " \\di[S+] [PATRÓN] listar índices\n" -#: help.c:235 +#: help.c:236 #, c-format msgid " \\dl list large objects, same as \\lo_list\n" msgstr " \\dl listar objetos grandes, lo mismo que \\lo_list\n" -#: help.c:236 +#: help.c:237 #, c-format msgid " \\dL[S+] [PATTERN] list procedural languages\n" msgstr " \\dL[S+] [PATRÓN] listar lenguajes procedurales\n" -#: help.c:237 +#: help.c:238 #, c-format msgid " \\dm[S+] [PATTERN] list materialized views\n" msgstr " \\dm[S+] [PATRÓN] listar vistas materializadas\n" -#: help.c:238 +#: help.c:239 #, c-format msgid " \\dn[S+] [PATTERN] list schemas\n" msgstr " \\dn[S+] [PATRÓN] listar esquemas\n" -#: help.c:239 +#: help.c:240 #, c-format msgid " \\do[S] [PATTERN] list operators\n" msgstr " \\do[S] [PATRÓN] listar operadores\n" -#: help.c:240 +#: help.c:241 #, c-format msgid " \\dO[S+] [PATTERN] list collations\n" msgstr " \\dO[S] [PATRÓN] listar ordenamientos (collations)\n" -#: help.c:241 +#: help.c:242 #, c-format msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n" msgstr " \\dp [PATRÓN] listar privilegios de acceso a tablas, vistas y secuencias\n" -#: help.c:242 +#: help.c:243 #, c-format msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n" msgstr " \\drds [PAT1 [PAT2]] listar parámetros de rol por base de datos\n" -#: help.c:243 +#: help.c:244 #, c-format msgid " \\ds[S+] [PATTERN] list sequences\n" msgstr " \\ds[S+] [PATRÓN] listar secuencias\n" -#: help.c:244 +#: help.c:245 #, c-format msgid " \\dt[S+] [PATTERN] list tables\n" msgstr " \\dt[S+] [PATRÓN] listar tablas\n" -#: help.c:245 +#: help.c:246 #, c-format msgid " \\dT[S+] [PATTERN] list data types\n" msgstr " \\dT[S+] [PATRÓN] listar tipos de dato\n" -#: help.c:246 -#, fuzzy, c-format -#| msgid " \\du[+] [PATTERN] list roles\n" +#: help.c:247 +#, c-format msgid " \\du[S+] [PATTERN] list roles\n" -msgstr " \\du[+] [PATRÓN] listar roles\n" +msgstr " \\du[S+] [PATRÓN] listar roles\n" -#: help.c:247 +#: help.c:248 #, c-format msgid " \\dv[S+] [PATTERN] list views\n" msgstr " \\dv[S+] [PATRÓN] listar vistas\n" -#: help.c:248 +#: help.c:249 #, c-format msgid " \\dE[S+] [PATTERN] list foreign tables\n" msgstr " \\dE[S+] [PATRÓN] listar tablas foráneas\n" -#: help.c:249 +#: help.c:250 #, c-format msgid " \\dx[+] [PATTERN] list extensions\n" msgstr " \\dx[+] [PATRÓN] listar extensiones\n" -#: help.c:250 +#: help.c:251 #, c-format msgid " \\dy [PATTERN] list event triggers\n" -msgstr " \\dy [PATRÓN] listar disparadores por eventos\n" +msgstr " \\dy [PATRÓN] listar disparadores por eventos\n" -#: help.c:251 +#: help.c:252 #, c-format msgid " \\l[+] [PATTERN] list databases\n" -msgstr " \\l[+] [PATRÓN] listar bases de datos\n" +msgstr " \\l[+] [PATRÓN] listar bases de datos\n" -#: help.c:252 -#, fuzzy, c-format -#| msgid " \\sf[+] FUNCNAME show a function's definition\n" +#: help.c:253 +#, c-format msgid " \\sf[+] FUNCNAME show a function's definition\n" -msgstr " \\sf[+] FUNCIÓN mostrar la definición de una función\n" +msgstr " \\sf[+] FUNCIÓN mostrar la definición de una función\n" -#: help.c:253 -#, fuzzy, c-format -#| msgid " \\sf[+] FUNCNAME show a function's definition\n" +#: help.c:254 +#, c-format msgid " \\sv[+] VIEWNAME show a view's definition\n" -msgstr " \\sf[+] FUNCIÓN mostrar la definición de una función\n" +msgstr " \\sv[+] VISTA mostrar la definición de una vista\n" -#: help.c:254 +#: help.c:255 #, c-format msgid " \\z [PATTERN] same as \\dp\n" msgstr " \\z [PATRÓN] lo mismo que \\dp\n" -#: help.c:257 +#: help.c:258 #, c-format msgid "Formatting\n" msgstr "Formato\n" -#: help.c:258 +#: help.c:259 #, c-format msgid " \\a toggle between unaligned and aligned output mode\n" msgstr " \\a cambiar entre modo de salida alineado y sin alinear\n" -#: help.c:259 +#: help.c:260 #, c-format msgid " \\C [STRING] set table title, or unset if none\n" msgstr " \\C [CADENA] definir título de tabla, o indefinir si es vacío\n" -#: help.c:260 +#: help.c:261 #, c-format msgid " \\f [STRING] show or set field separator for unaligned query output\n" msgstr "" " \\f [CADENA] mostrar o definir separador de campos para\n" " modo de salida sin alinear\n" -#: help.c:261 +#: help.c:262 #, c-format msgid " \\H toggle HTML output mode (currently %s)\n" msgstr " \\H cambiar modo de salida HTML (actualmente %s)\n" -#: help.c:263 +#: help.c:264 #, c-format msgid "" " \\pset [NAME [VALUE]] set table output option\n" @@ -2558,31 +2618,32 @@ msgid "" " unicode_border_linestyle|unicode_column_linestyle|unicode_header_linestyle})\n" msgstr "" " \\pset [NOMBRE [VALOR]] define opción de salida de tabla\n" -" (NOMBRE := {format|border|expanded|fieldsep|fieldsep_zero|footer|null|\n" -" numericlocale|recordsep|recordsep_zero|tuples_only|title|tableattr|pager|\n" -" unicode_border_linestyle|unicode_column_linestyle|unicode_header_linestyle})\n" +" (NOMBRE := {format|border|expanded|fieldsep|fieldsep_zero|footer|null|\n" +" numericlocale|recordsep|recordsep_zero|tuples_only|title|\n" +" tableattr|pager|unicode_border_linestyle|\n" +" unicode_column_linestyle|unicode_header_linestyle})\n" -#: help.c:267 +#: help.c:268 #, 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:269 +#: help.c:270 #, c-format 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:270 +#: help.c:271 #, 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:274 +#: help.c:275 #, c-format msgid "Connection\n" msgstr "Conexiones\n" -#: help.c:276 +#: help.c:277 #, c-format msgid "" " \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" @@ -2591,7 +2652,7 @@ msgstr "" " \\c[onnect] [BASE-DE-DATOS|- USUARIO|- ANFITRIÓN|- PUERTO|- | conninfo]\n" " conectar a una nueva base de datos (actual: «%s»)\n" -#: help.c:280 +#: help.c:281 #, c-format msgid "" " \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" @@ -2600,84 +2661,84 @@ 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:282 +#: help.c:283 #, c-format msgid " \\encoding [ENCODING] show or set client encoding\n" msgstr "" " \\encoding [CODIFICACIÓN]\n" " mostrar o definir codificación del cliente\n" -#: help.c:283 +#: help.c:284 #, c-format msgid " \\password [USERNAME] securely change the password for a user\n" msgstr "" " \\password [USUARIO]\n" " cambiar la contraseña para un usuario en forma segura\n" -#: help.c:284 +#: help.c:285 #, c-format msgid " \\conninfo display information about current connection\n" msgstr " \\conninfo despliega la información sobre la conexión actual\n" -#: help.c:287 +#: help.c:288 #, c-format msgid "Operating System\n" msgstr "Sistema Operativo\n" -#: help.c:288 +#: help.c:289 #, c-format msgid " \\cd [DIR] change the current working directory\n" msgstr " \\cd [DIR] cambiar el directorio de trabajo actual\n" -#: help.c:289 +#: help.c:290 #, c-format msgid " \\setenv NAME [VALUE] set or unset environment variable\n" msgstr "" " \\setenv NOMBRE [VALOR]\n" " definir o indefinir variable de ambiente\n" -#: help.c:290 +#: help.c:291 #, 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:292 +#: help.c:293 #, c-format msgid " \\! [COMMAND] execute command in shell or start interactive shell\n" msgstr "" " \\! [ORDEN] ejecutar orden en intérprete de órdenes (shell),\n" " o iniciar intérprete interactivo\n" -#: help.c:295 +#: help.c:296 #, c-format msgid "Variables\n" msgstr "Variables\n" -#: help.c:296 +#: help.c:297 #, c-format msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" msgstr " \\prompt [TEXTO] NOMBRE preguntar al usuario el valor de la variable\n" -#: help.c:297 +#: help.c:298 #, c-format msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n" msgstr "" " \\set [NOMBRE [VALOR]] definir variables internas,\n" " listar todas si no se dan parámetros\n" -#: help.c:298 +#: help.c:299 #, c-format msgid " \\unset NAME unset (delete) internal variable\n" msgstr " \\unset NOMBRE indefinir (eliminar) variable interna\n" -#: help.c:301 +#: help.c:302 #, c-format msgid "Large Objects\n" msgstr "Objetos Grandes\n" -#: help.c:302 +#: help.c:303 #, c-format msgid "" " \\lo_export LOBOID FILE\n" @@ -2690,45 +2751,39 @@ msgstr "" " \\lo_list\n" " \\lo_unlink LOBOID operaciones con objetos grandes\n" -#: help.c:329 -#, fuzzy, c-format -#| msgid "List of specially treated variables.\n" +#: help.c:330 +#, c-format msgid "" "List of specially treated variables\n" "\n" -msgstr "Lista de variables con tratamiento especial.\n" +msgstr "" +"Lista de variables con tratamiento especial\n" +"\n" -#: help.c:331 +#: help.c:332 #, c-format msgid "psql variables:\n" msgstr "Variables psql:\n" -#: help.c:333 -#, fuzzy, c-format -#| msgid "" -#| " psql --set=NAME=VALUE\n" -#| " or \\set NAME VALUE in interactive mode\n" -#| "\n" +#: help.c:334 +#, c-format msgid "" " psql --set=NAME=VALUE\n" " or \\set NAME VALUE inside psql\n" "\n" msgstr "" " psql --set=NOMBRE=VALOR\n" -" o \\set NOMBRE VALOR en modo interactivo\n" +" o \\set NOMBRE VALOR dentro de psql\n" -#: help.c:335 +#: help.c:336 #, c-format msgid " AUTOCOMMIT 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:336 -#, fuzzy, c-format -#| msgid "" -#| " COMP_KEYWORD_CASE determine the case used to complete SQL keywords\n" -#| " [lower, upper, preserve-lower, preserve-upper]\n" +#: help.c:337 +#, c-format msgid "" " COMP_KEYWORD_CASE determines the case used to complete SQL key words\n" " [lower, upper, preserve-lower, preserve-upper]\n" @@ -2736,16 +2791,13 @@ msgstr "" " COMP_KEYWORD_CASE determina si usar mayúsculas al completar palabras SQL\n" " [lower, upper, preserve-lower, preserve-upper]\n" -#: help.c:338 +#: help.c:339 #, c-format msgid " DBNAME the currently connected database name\n" msgstr " DBNAME la base de datos actualmente conectada\n" -#: help.c:339 -#, fuzzy, c-format -#| msgid "" -#| " ECHO control what input is written to standard output\n" -#| " [all, errors, none, queries]\n" +#: help.c:340 +#, c-format msgid "" " ECHO controls what input is written to standard output\n" " [all, errors, none, queries]\n" @@ -2753,11 +2805,8 @@ msgstr "" " ECHO controla qué entrada se escribe a la salida estándar\n" " [all, errors, none, queries]\n" -#: help.c:341 -#, fuzzy, c-format -#| msgid "" -#| " ECHO_HIDDEN display internal queries executed by backslash commands when it is set\n" -#| " or with [noexec] just show without execution\n" +#: help.c:342 +#, c-format msgid "" " ECHO_HIDDEN if set, display internal queries executed by backslash commands;\n" " if set to \"noexec\", just show without execution\n" @@ -2765,185 +2814,166 @@ msgstr "" " ECHO_HIDDEN muestra consultas internas usadas por órdenes backslash\n" " con [noexec] sólo las muestra sin ejecutarlas\n" -#: help.c:343 +#: help.c:344 #, c-format msgid " ENCODING current client character set encoding\n" msgstr " ENCODING codificación actual del cliente\n" -#: help.c:344 +#: help.c:345 #, c-format msgid "" " FETCH_COUNT the number of result rows to fetch and display at a time\n" " (default: 0=unlimited)\n" msgstr "" -" FETCH_COUNT número de filas del resultado que extraer y mostrar cada vez\n" +" FETCH_COUNT número de filas del resultado que traer y mostrar cada vez\n" " (por omisión: 0=sin límite)\n" -#: help.c:346 -#, fuzzy, c-format -#| msgid " HISTCONTROL control history list [ignorespace, ignoredups, ignoreboth]\n" +#: help.c:347 +#, c-format msgid " HISTCONTROL controls command history [ignorespace, ignoredups, ignoreboth]\n" msgstr "" -" HISTCONTROL controla la lista de historia\n" +" HISTCONTROL controla la lista de historia de órdenes\n" " [ignorespace, ignoredups, ignoreboth]\n" -#: help.c:347 -#, fuzzy, c-format -#| msgid " HISTFILE file name used to store the history list\n" +#: help.c:348 +#, c-format msgid " HISTFILE file name used to store the command history\n" -msgstr " HISTFILE nombre de archivo usado para almacenar la historia\n" +msgstr " HISTFILE nombre de archivo para almacenar historia de órdenes\n" -#: help.c:348 +#: help.c:349 #, c-format msgid " HISTSIZE the 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:349 -#, fuzzy, c-format -#| msgid " HOST the currently connected database server\n" +#: help.c:350 +#, c-format msgid " HOST the currently connected database server host\n" msgstr " HOST el servidor actualmente conectado\n" -#: help.c:350 +#: help.c:351 #, c-format msgid " IGNOREEOF if unset, sending an EOF to interactive session terminates application\n" msgstr "" -" IGNOREEOF set no está definida, enviar un EOF a sesión interactiva\n" +" IGNOREEOF si no está definida, enviar un EOF a sesión interactiva\n" " termina la aplicación\n" -#: help.c:351 -#, fuzzy, c-format -#| msgid " LASTOID the value of last affected OID\n" +#: help.c:352 +#, c-format msgid " LASTOID value of the last affected OID\n" msgstr " LASTOID el valor del último OID afectado\n" -#: help.c:352 -#, fuzzy, c-format -#| msgid " ON_ERROR_ROLLBACK if set, an error doesn't stop a transaction (uses implicit SAVEPOINTs)\n" +#: help.c:353 +#, c-format msgid " ON_ERROR_ROLLBACK 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" +" (usa «savepoints» implícitos)\n" -#: help.c:353 +#: help.c:354 #, c-format msgid " ON_ERROR_STOP stop batch execution after error\n" msgstr " ON_ERROR_STOP detiene ejecución por lotes al ocurrir un error\n" -#: help.c:354 +#: help.c:355 #, c-format msgid " PORT server port of the current connection\n" msgstr " PORT puerto del servidor de la conexión actual\n" -#: help.c:355 -#, fuzzy, c-format -#| msgid " PROMPT1 specify the standard psql prompt\n" +#: help.c:356 +#, c-format msgid " PROMPT1 specifies the standard psql prompt\n" msgstr " PROMPT1 especifica el prompt estándar de psql\n" -#: help.c:356 -#, fuzzy, c-format -#| msgid " PROMPT2 specify the prompt used when a statement continues from a previous line\n" +#: help.c:357 +#, c-format msgid " PROMPT2 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:357 -#, fuzzy, c-format -#| msgid " PROMPT3 specify the prompt used during COPY ... FROM STDIN\n" +#: help.c:358 +#, c-format msgid " PROMPT3 specifies the prompt used during COPY ... FROM STDIN\n" msgstr " PROMPT3 especifica el prompt usado durante COPY ... FROM STDIN\n" -#: help.c:358 +#: help.c:359 #, c-format msgid " QUIET run quietly (same as -q option)\n" msgstr " QUIET ejecuta silenciosamente (igual que -q)\n" -#: help.c:359 +#: help.c:360 #, c-format msgid " SHOW_CONTEXT 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:360 +#: help.c:361 #, c-format msgid " SINGLELINE end of line terminates SQL command mode (same as -S option)\n" msgstr " SINGLELINE fin de línea termina modo de órdenes SQL (igual que -S)\n" -#: help.c:361 +#: help.c:362 #, c-format msgid " SINGLESTEP single-step mode (same as -s option)\n" msgstr " SINGLESTEP modo paso a paso (igual que -s)\n" -#: help.c:362 +#: help.c:363 #, c-format msgid " USER the currently connected database user\n" msgstr " USER el usuario actualmente conectado\n" -#: help.c:363 -#, fuzzy, c-format -#| msgid " VERBOSITY control verbosity of error reports [default, verbose, terse]\n" +#: help.c:364 +#, c-format msgid " VERBOSITY controls verbosity of error reports [default, verbose, terse]\n" msgstr " VERBOSITY controla la verbosidad de errores [default, verbose, terse]\n" -#: help.c:365 -#, fuzzy, c-format -#| msgid "List of settings" +#: help.c:366 +#, c-format msgid "" "\n" "Display settings:\n" -msgstr "Listado de parámetros" +msgstr "" +"\n" +"Parámetros de despliegue:\n" -#: help.c:367 -#, fuzzy, c-format -#| msgid "" -#| " psql --pset=NAME[=VALUE]\n" -#| " or \\pset NAME [VALUE] in interactive mode\n" -#| "\n" +#: help.c:368 +#, c-format msgid "" " psql --pset=NAME[=VALUE]\n" " or \\pset NAME [VALUE] inside psql\n" "\n" msgstr "" " psql --pset=NOMBRE[=VALOR]\n" -" o \\pset NOMBRE [VALOR] en modo interactivo\n" +" o \\pset NOMBRE [VALOR] dentro de psql\n" "\n" -#: help.c:369 +#: help.c:370 #, c-format msgid " border border style (number)\n" msgstr " border estilo de borde (número)\n" -#: help.c:370 -#, fuzzy, c-format -#| msgid " columns set the target width for the wrapped format\n" +#: help.c:371 +#, c-format msgid " columns target width for the wrapped format\n" msgstr " columns define el ancho para formato «wrapped»\n" -#: help.c:371 -#, fuzzy, c-format -#| msgid " expanded (or x) toggle expanded output\n" +#: help.c:372 +#, c-format msgid " expanded (or x) expanded output [on, off, auto]\n" -msgstr " expanded (o x) cambia el modo expandido\n" +msgstr " expanded (o x) salida expandida [on, off, auto]\n" -#: help.c:372 -#, fuzzy, c-format -#| msgid " fieldsep field separator for unaligned output (default '|')\n" +#: help.c:373 +#, c-format msgid " fieldsep field separator for unaligned output (default \"%s\")\n" msgstr "" -" fieldsep separador de campos para salida desalineada\n" -" (por omisión: «|»)\n" - -#: help.c:373 -#, fuzzy, c-format -#| msgid " fieldsep_zero set field separator in unaligned mode to zero\n" -msgid " fieldsep_zero set field separator for unaligned output to zero byte\n" -msgstr " fieldsep_zero define el separador de campos a cero\n" +" fieldsep separador de campos para formato «unaligned»\n" +" (por omisión: «%s»)\n" #: help.c:374 #, c-format -msgid " format set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n" -msgstr " format define el formato de salida [unaligned, aligned, wrapped, html, asciidoc, ...]\n" +msgid " fieldsep_zero set field separator for unaligned output to zero byte\n" +msgstr " fieldsep_zero separador de campos en «unaligned» es byte cero\n" #: help.c:375 #, c-format @@ -2952,78 +2982,80 @@ msgstr " footer activa o desactiva el pie de tabla [on, off]\n" #: help.c:376 #, c-format -msgid " linestyle 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" +msgid " format set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n" +msgstr "" +" format define el formato de salida\n" +" [unaligned, aligned, wrapped, html, asciidoc, ...]\n" #: help.c:377 #, c-format +msgid " linestyle set the border line drawing style [ascii, old-ascii, unicode]\n" +msgstr " linestyle define el estilo de dibujo de líneas [unicode, ascii, ...]\n" + +#: help.c:378 +#, c-format msgid " null 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:378 +#: help.c:379 #, c-format msgid "" " numericlocale enable or disable display of a locale-specific character to separate\n" " groups of digits [on, off]\n" msgstr "" -" numericlocale activa o desactiva despliegue de carácter específico del lenguaje para\n" +" numericlocale desplegar de carácter específico del lenguaje para\n" " separar grupos de dígitos [on, off]\n" -#: help.c:380 +#: help.c:381 #, c-format msgid " pager 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" +msgstr " pager controla si se usará paginador externo [yes, no, always]\n" -#: help.c:381 -#, fuzzy, c-format -#| msgid " recordsep specify the record (line) separator to use in unaligned output format\n" +#: help.c:382 +#, c-format msgid " recordsep record (line) separator for unaligned output\n" -msgstr " recordsep especifica el separador de registros a usar en formato de salida «unaligned»\n" +msgstr " recordsep separador de registros (líneas) para formato «unaligned»\n" -#: help.c:382 -#, fuzzy, c-format -#| msgid " recordsep_zero set the record separator to use in unaligned output format to a zero byte.\n" +#: help.c:383 +#, c-format msgid " recordsep_zero set record separator for unaligned output to zero byte\n" -msgstr " recordsep_zero define el separador de registros en formato «unaligned» al byte cero\n" +msgstr " recordsep_zero separador de registros en «unaligned» es byte cero\n" # XXX WTF does this mean? -#: help.c:383 -#, fuzzy, c-format -#| msgid "" -#| " tableattr (or T) specify attributes for table tag in html format or proportional\n" -#| " column width of left aligned data type in latex format\n" +#: help.c:384 +#, c-format msgid "" " tableattr (or T) 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», o ancho proporcional\n" -" de columnas de tipos de dato alineados a la izquierda en formato «latex»\n" +" 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:385 +#: help.c:386 #, c-format msgid " title set the table title for any subsequently printed tables\n" msgstr " title define el título de tablas\n" -#: help.c:386 +#: help.c:387 #, c-format msgid " tuples_only 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:387 -#, fuzzy, c-format -#| msgid "" -#| " unicode_header_linestyle\n" -#| " set the style of unicode line drawing [single, double]\n" +#: help.c:388 +#, c-format msgid "" " unicode_border_linestyle\n" " unicode_column_linestyle\n" " unicode_header_linestyle\n" " set the style of Unicode line drawing [single, double]\n" msgstr "" +" unicode_border_linestyle\n" +" unicode_column_linestyle\n" " unicode_header_linestyle\n" -" define el estilo de líneas «unicode» [single, double]\n" +" define el estilo de líneas Unicode [single, double]\n" -#: help.c:392 +#: help.c:393 #, c-format msgid "" "\n" @@ -3032,27 +3064,18 @@ msgstr "" "\n" "Variables de ambiente:\n" -#: help.c:396 -#, fuzzy, c-format -#| msgid "" -#| " NAME=VALUE [NAME=VALUE] psql ...\n" -#| " or \\setenv NAME [VALUE] in interactive mode\n" -#| "\n" +#: help.c:397 +#, c-format msgid "" " NAME=VALUE [NAME=VALUE] psql ...\n" " or \\setenv NAME [VALUE] inside psql\n" "\n" msgstr "" " NOMBRE=VALOR [NOMBRE=VALOR] psql ...\n" -" o \\setenv NOMBRE [VALOR] en modo interactivo\n" - -#: help.c:398 -#, fuzzy, c-format -#| msgid "" -#| " set NAME=VALUE\n" -#| " psql ...\n" -#| " or \\setenv NAME VALUE in interactive mode\n" -#| "\n" +" o \\setenv NOMBRE [VALOR] dentro de psql\n" + +#: help.c:399 +#, c-format msgid "" " set NAME=VALUE\n" " psql ...\n" @@ -3061,66 +3084,63 @@ msgid "" msgstr "" " set NOMBRE=VALOR\n" " psql ...\n" -" o \\setenv NOMBRE VALOR en modo interactivo\n" +" o \\setenv NOMBRE [VALOR] dentro de psql\n" -#: help.c:401 +#: help.c:402 #, c-format msgid " COLUMNS number of columns for wrapped format\n" msgstr " COLUMNS número de columnas para formato «wrapped»\n" -#: help.c:402 +#: help.c:403 #, c-format msgid " PAGER name of external pager program\n" msgstr " PAGER nombre de programa paginador externo\n" -#: help.c:403 +#: help.c:404 #, c-format msgid " PGAPPNAME same as the application_name connection parameter\n" msgstr " PGAPPNAME igual que el parámetro de conexión application_name\n" -#: help.c:404 +#: help.c:405 #, c-format msgid " PGDATABASE same as the dbname connection parameter\n" msgstr " PGDATABASE igual que el parámetro de conexión dbname\n" -#: help.c:405 +#: help.c:406 #, c-format msgid " PGHOST same as the host connection parameter\n" msgstr " PGHOST igual que el parámetro de conexión host\n" -#: help.c:406 +#: help.c:407 #, c-format msgid " PGPORT same as the port connection parameter\n" msgstr " PGPORT igual que el parámetro de conexión port\n" -#: help.c:407 +#: help.c:408 #, c-format msgid " PGUSER same as the user connection parameter\n" msgstr " PGUSER igual que el parámetro de conexión user\n" -#: help.c:408 +#: help.c:409 #, c-format msgid " PGPASSWORD connection password (not recommended)\n" msgstr " PGPASSWORD contraseña de la conexión (no recomendado)\n" -#: help.c:409 +#: help.c:410 #, c-format msgid " PGPASSFILE password file name\n" msgstr " PGPASSFILE nombre de archivo de contraseñas\n" -#: help.c:410 -#, fuzzy, c-format -#| msgid "" -#| " PSQL_EDITOR, EDITOR, VISUAL\n" -#| " editor used by the \\e and \\ef commands\n" +#: help.c:411 +#, c-format msgid "" " PSQL_EDITOR, EDITOR, VISUAL\n" " editor used by the \\e, \\ef, and \\ev commands\n" msgstr "" " PSQL_EDITOR, EDITOR, VISUAL\n" -" editor usado por órdenes \\e y \\ef\n" +" editor usado por órdenes \\e, \\ef, y \\ev\n" -#: help.c:412 +#: help.c:413 #, c-format msgid "" " PSQL_EDITOR_LINENUMBER_ARG\n" @@ -3129,31 +3149,31 @@ msgstr "" " PSQL_EDITOR_LINENUMBER_ARGS\n" " cómo especificar número de línea al invocar al editor\n" -#: help.c:414 +#: help.c:415 #, c-format msgid " PSQL_HISTORY alternative location for the command history file\n" msgstr " PSQL_HISTORY ubicación alternativa del archivo de historia de órdenes\n" -#: help.c:415 +#: help.c:416 #, c-format msgid " PSQLRC alternative location for the user's .psqlrc file\n" msgstr " PSQLRC ubicación alternativa para el archivo .psqlrc del usuario\n" -#: help.c:416 +#: help.c:417 #, c-format msgid " SHELL shell used by the \\! command\n" msgstr " SHELL intérprete usado por la orden \\!\n" -#: help.c:417 +#: help.c:418 #, c-format msgid " TMPDIR directory for temporary files\n" msgstr " TMPDIR directorio para archivos temporales\n" -#: help.c:460 +#: help.c:461 msgid "Available help:\n" msgstr "Ayuda disponible:\n" -#: help.c:544 +#: help.c:545 #, c-format msgid "" "Command: %s\n" @@ -3168,7 +3188,7 @@ msgstr "" "%s\n" "\n" -#: help.c:560 +#: help.c:561 #, c-format msgid "" "No help available for \"%s\".\n" @@ -3252,7 +3272,7 @@ msgstr "" msgid "unterminated quoted string\n" msgstr "cadena en comillas sin terminar\n" -#: psqlscanslash.l:737 +#: psqlscanslash.l:738 #, c-format msgid "%s: out of memory\n" msgstr "%s: memoria agotada\n" @@ -3263,12 +3283,12 @@ msgstr "%s: memoria agotada\n" #: sql_help.c:126 sql_help.c:128 sql_help.c:221 sql_help.c:223 sql_help.c:224 #: sql_help.c:226 sql_help.c:228 sql_help.c:231 sql_help.c:233 sql_help.c:235 #: sql_help.c:237 sql_help.c:249 sql_help.c:250 sql_help.c:251 sql_help.c:253 -#: sql_help.c:299 sql_help.c:301 sql_help.c:303 sql_help.c:305 sql_help.c:365 -#: sql_help.c:370 sql_help.c:372 sql_help.c:415 sql_help.c:417 sql_help.c:420 -#: sql_help.c:422 sql_help.c:489 sql_help.c:494 sql_help.c:499 sql_help.c:504 -#: sql_help.c:509 sql_help.c:558 sql_help.c:560 sql_help.c:562 sql_help.c:564 -#: sql_help.c:567 sql_help.c:569 sql_help.c:580 sql_help.c:582 sql_help.c:624 -#: sql_help.c:626 sql_help.c:628 sql_help.c:631 sql_help.c:633 sql_help.c:635 +#: sql_help.c:300 sql_help.c:302 sql_help.c:304 sql_help.c:306 sql_help.c:367 +#: sql_help.c:372 sql_help.c:374 sql_help.c:417 sql_help.c:419 sql_help.c:422 +#: sql_help.c:424 sql_help.c:491 sql_help.c:496 sql_help.c:501 sql_help.c:506 +#: sql_help.c:511 sql_help.c:560 sql_help.c:562 sql_help.c:564 sql_help.c:566 +#: sql_help.c:569 sql_help.c:571 sql_help.c:582 sql_help.c:584 sql_help.c:625 +#: sql_help.c:627 sql_help.c:629 sql_help.c:632 sql_help.c:634 sql_help.c:636 #: sql_help.c:669 sql_help.c:673 sql_help.c:677 sql_help.c:696 sql_help.c:699 #: sql_help.c:702 sql_help.c:731 sql_help.c:743 sql_help.c:751 sql_help.c:754 #: sql_help.c:757 sql_help.c:772 sql_help.c:775 sql_help.c:819 sql_help.c:842 @@ -3282,145 +3302,143 @@ msgstr "%s: memoria agotada\n" #: sql_help.c:1138 sql_help.c:1140 sql_help.c:1150 sql_help.c:1152 #: sql_help.c:1162 sql_help.c:1165 sql_help.c:1186 sql_help.c:1188 #: sql_help.c:1190 sql_help.c:1193 sql_help.c:1195 sql_help.c:1197 -#: sql_help.c:1247 sql_help.c:1285 sql_help.c:1288 sql_help.c:1290 -#: sql_help.c:1292 sql_help.c:1294 sql_help.c:1296 sql_help.c:1299 -#: sql_help.c:1339 sql_help.c:1542 sql_help.c:1613 sql_help.c:1633 -#: sql_help.c:1650 sql_help.c:1705 sql_help.c:1709 sql_help.c:1719 -#: sql_help.c:1739 sql_help.c:1764 sql_help.c:1782 sql_help.c:1811 -#: sql_help.c:1886 sql_help.c:1928 sql_help.c:1950 sql_help.c:1970 -#: sql_help.c:1971 sql_help.c:2006 sql_help.c:2026 sql_help.c:2048 -#: sql_help.c:2061 sql_help.c:2092 sql_help.c:2117 sql_help.c:2161 -#: sql_help.c:2347 sql_help.c:2360 sql_help.c:2377 sql_help.c:2393 -#: sql_help.c:2432 sql_help.c:2483 sql_help.c:2487 sql_help.c:2489 -#: sql_help.c:2495 sql_help.c:2513 sql_help.c:2540 sql_help.c:2575 -#: sql_help.c:2587 sql_help.c:2596 sql_help.c:2640 sql_help.c:2654 -#: sql_help.c:2682 sql_help.c:2690 sql_help.c:2698 sql_help.c:2706 -#: sql_help.c:2714 sql_help.c:2722 sql_help.c:2730 sql_help.c:2738 -#: sql_help.c:2747 sql_help.c:2758 sql_help.c:2766 sql_help.c:2774 -#: sql_help.c:2782 sql_help.c:2790 sql_help.c:2800 sql_help.c:2809 -#: sql_help.c:2818 sql_help.c:2826 sql_help.c:2835 sql_help.c:2843 -#: sql_help.c:2852 sql_help.c:2860 sql_help.c:2868 sql_help.c:2876 -#: sql_help.c:2884 sql_help.c:2892 sql_help.c:2900 sql_help.c:2908 -#: sql_help.c:2916 sql_help.c:2933 sql_help.c:2942 sql_help.c:2950 -#: sql_help.c:2967 sql_help.c:2982 sql_help.c:3247 sql_help.c:3298 -#: sql_help.c:3327 sql_help.c:3335 sql_help.c:3754 sql_help.c:3802 -#: sql_help.c:3943 +#: sql_help.c:1247 sql_help.c:1289 sql_help.c:1292 sql_help.c:1294 +#: sql_help.c:1296 sql_help.c:1298 sql_help.c:1300 sql_help.c:1303 +#: sql_help.c:1343 sql_help.c:1548 sql_help.c:1612 sql_help.c:1631 +#: sql_help.c:1644 sql_help.c:1698 sql_help.c:1702 sql_help.c:1712 +#: sql_help.c:1732 sql_help.c:1757 sql_help.c:1775 sql_help.c:1804 +#: sql_help.c:1879 sql_help.c:1921 sql_help.c:1943 sql_help.c:1963 +#: sql_help.c:1964 sql_help.c:1999 sql_help.c:2019 sql_help.c:2041 +#: sql_help.c:2054 sql_help.c:2085 sql_help.c:2110 sql_help.c:2154 +#: sql_help.c:2340 sql_help.c:2353 sql_help.c:2370 sql_help.c:2386 +#: sql_help.c:2425 sql_help.c:2476 sql_help.c:2480 sql_help.c:2482 +#: sql_help.c:2488 sql_help.c:2506 sql_help.c:2533 sql_help.c:2568 +#: sql_help.c:2580 sql_help.c:2589 sql_help.c:2633 sql_help.c:2647 +#: sql_help.c:2675 sql_help.c:2683 sql_help.c:2691 sql_help.c:2699 +#: sql_help.c:2707 sql_help.c:2715 sql_help.c:2723 sql_help.c:2731 +#: sql_help.c:2740 sql_help.c:2751 sql_help.c:2759 sql_help.c:2767 +#: sql_help.c:2775 sql_help.c:2783 sql_help.c:2793 sql_help.c:2802 +#: sql_help.c:2811 sql_help.c:2819 sql_help.c:2828 sql_help.c:2836 +#: sql_help.c:2845 sql_help.c:2853 sql_help.c:2861 sql_help.c:2869 +#: sql_help.c:2877 sql_help.c:2885 sql_help.c:2893 sql_help.c:2901 +#: sql_help.c:2909 sql_help.c:2926 sql_help.c:2935 sql_help.c:2943 +#: sql_help.c:2960 sql_help.c:2975 sql_help.c:3240 sql_help.c:3291 +#: sql_help.c:3320 sql_help.c:3328 sql_help.c:3747 sql_help.c:3795 +#: sql_help.c:3936 msgid "name" msgstr "nombre" -#: sql_help.c:37 sql_help.c:40 sql_help.c:43 sql_help.c:309 sql_help.c:1403 -#: sql_help.c:2655 sql_help.c:3550 +#: sql_help.c:37 sql_help.c:40 sql_help.c:43 sql_help.c:311 sql_help.c:1409 +#: sql_help.c:2648 sql_help.c:3543 msgid "aggregate_signature" msgstr "signatura_func_agregación" #: sql_help.c:38 sql_help.c:65 sql_help.c:80 sql_help.c:116 sql_help.c:236 -#: sql_help.c:254 sql_help.c:373 sql_help.c:421 sql_help.c:498 sql_help.c:544 -#: sql_help.c:559 sql_help.c:581 sql_help.c:632 sql_help.c:698 sql_help.c:753 +#: sql_help.c:254 sql_help.c:375 sql_help.c:423 sql_help.c:500 sql_help.c:546 +#: sql_help.c:561 sql_help.c:583 sql_help.c:633 sql_help.c:698 sql_help.c:753 #: sql_help.c:774 sql_help.c:820 sql_help.c:844 sql_help.c:854 sql_help.c:884 #: sql_help.c:904 sql_help.c:996 sql_help.c:1061 sql_help.c:1104 #: sql_help.c:1125 sql_help.c:1139 sql_help.c:1151 sql_help.c:1164 -#: sql_help.c:1194 sql_help.c:1248 sql_help.c:1293 +#: sql_help.c:1194 sql_help.c:1248 sql_help.c:1297 msgid "new_name" msgstr "nuevo_nombre" #: sql_help.c:41 sql_help.c:67 sql_help.c:82 sql_help.c:118 sql_help.c:234 -#: sql_help.c:252 sql_help.c:371 sql_help.c:457 sql_help.c:503 sql_help.c:583 -#: sql_help.c:592 sql_help.c:651 sql_help.c:672 sql_help.c:701 sql_help.c:756 -#: sql_help.c:856 sql_help.c:882 sql_help.c:902 sql_help.c:1045 -#: sql_help.c:1063 sql_help.c:1106 sql_help.c:1127 sql_help.c:1189 -#: sql_help.c:1291 sql_help.c:2333 +#: sql_help.c:252 sql_help.c:373 sql_help.c:459 sql_help.c:505 sql_help.c:585 +#: sql_help.c:594 sql_help.c:652 sql_help.c:672 sql_help.c:701 sql_help.c:756 +#: sql_help.c:856 sql_help.c:882 sql_help.c:902 sql_help.c:1045 sql_help.c:1063 +#: sql_help.c:1106 sql_help.c:1127 sql_help.c:1189 sql_help.c:1295 +#: sql_help.c:2326 msgid "new_owner" msgstr "nuevo_dueño" -#: sql_help.c:44 sql_help.c:69 sql_help.c:84 sql_help.c:238 sql_help.c:302 -#: sql_help.c:423 sql_help.c:508 sql_help.c:634 sql_help.c:676 sql_help.c:704 -#: sql_help.c:759 sql_help.c:886 sql_help.c:998 sql_help.c:1108 -#: sql_help.c:1129 sql_help.c:1141 sql_help.c:1153 sql_help.c:1196 -#: sql_help.c:1295 +#: sql_help.c:44 sql_help.c:69 sql_help.c:84 sql_help.c:238 sql_help.c:303 +#: sql_help.c:425 sql_help.c:510 sql_help.c:635 sql_help.c:676 sql_help.c:704 +#: sql_help.c:759 sql_help.c:886 sql_help.c:998 sql_help.c:1108 sql_help.c:1129 +#: sql_help.c:1141 sql_help.c:1153 sql_help.c:1196 sql_help.c:1299 msgid "new_schema" msgstr "nuevo_esquema" -#: sql_help.c:45 sql_help.c:1456 sql_help.c:2656 sql_help.c:3569 +#: sql_help.c:45 sql_help.c:1462 sql_help.c:2649 sql_help.c:3562 msgid "where aggregate_signature is:" msgstr "donde signatura_func_agregación es:" -#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:319 sql_help.c:344 -#: sql_help.c:347 sql_help.c:350 sql_help.c:490 sql_help.c:495 sql_help.c:500 -#: sql_help.c:505 sql_help.c:510 sql_help.c:1421 sql_help.c:1457 -#: sql_help.c:1460 sql_help.c:1463 sql_help.c:1614 sql_help.c:1634 -#: sql_help.c:1637 sql_help.c:1887 sql_help.c:2657 sql_help.c:2660 -#: sql_help.c:2663 sql_help.c:2748 sql_help.c:3133 sql_help.c:3465 -#: sql_help.c:3556 sql_help.c:3570 sql_help.c:3573 sql_help.c:3576 +#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:321 sql_help.c:346 +#: sql_help.c:349 sql_help.c:352 sql_help.c:492 sql_help.c:497 sql_help.c:502 +#: sql_help.c:507 sql_help.c:512 sql_help.c:1427 sql_help.c:1463 +#: sql_help.c:1466 sql_help.c:1469 sql_help.c:1613 sql_help.c:1632 +#: sql_help.c:1635 sql_help.c:1880 sql_help.c:2650 sql_help.c:2653 +#: sql_help.c:2656 sql_help.c:2741 sql_help.c:3126 sql_help.c:3458 +#: sql_help.c:3549 sql_help.c:3563 sql_help.c:3566 sql_help.c:3569 msgid "argmode" msgstr "modo_arg" -#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:320 sql_help.c:345 -#: sql_help.c:348 sql_help.c:351 sql_help.c:491 sql_help.c:496 sql_help.c:501 -#: sql_help.c:506 sql_help.c:511 sql_help.c:1422 sql_help.c:1458 -#: sql_help.c:1461 sql_help.c:1464 sql_help.c:1615 sql_help.c:1635 -#: sql_help.c:1638 sql_help.c:1888 sql_help.c:2658 sql_help.c:2661 -#: sql_help.c:2664 sql_help.c:2749 sql_help.c:3557 sql_help.c:3571 -#: sql_help.c:3574 sql_help.c:3577 +#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:322 sql_help.c:347 +#: sql_help.c:350 sql_help.c:353 sql_help.c:493 sql_help.c:498 sql_help.c:503 +#: sql_help.c:508 sql_help.c:513 sql_help.c:1428 sql_help.c:1464 +#: sql_help.c:1467 sql_help.c:1470 sql_help.c:1614 sql_help.c:1633 +#: sql_help.c:1636 sql_help.c:1881 sql_help.c:2651 sql_help.c:2654 +#: sql_help.c:2657 sql_help.c:2742 sql_help.c:3550 sql_help.c:3564 +#: sql_help.c:3567 sql_help.c:3570 msgid "argname" msgstr "nombre_arg" -#: sql_help.c:48 sql_help.c:51 sql_help.c:54 sql_help.c:321 sql_help.c:346 -#: sql_help.c:349 sql_help.c:352 sql_help.c:492 sql_help.c:497 sql_help.c:502 -#: sql_help.c:507 sql_help.c:512 sql_help.c:1423 sql_help.c:1459 -#: sql_help.c:1462 sql_help.c:1465 sql_help.c:1889 sql_help.c:2659 -#: sql_help.c:2662 sql_help.c:2665 sql_help.c:2750 sql_help.c:3558 -#: sql_help.c:3572 sql_help.c:3575 sql_help.c:3578 +#: sql_help.c:48 sql_help.c:51 sql_help.c:54 sql_help.c:323 sql_help.c:348 +#: sql_help.c:351 sql_help.c:354 sql_help.c:494 sql_help.c:499 sql_help.c:504 +#: sql_help.c:509 sql_help.c:514 sql_help.c:1429 sql_help.c:1465 +#: sql_help.c:1468 sql_help.c:1471 sql_help.c:1882 sql_help.c:2652 +#: sql_help.c:2655 sql_help.c:2658 sql_help.c:2743 sql_help.c:3551 +#: sql_help.c:3565 sql_help.c:3568 sql_help.c:3571 msgid "argtype" msgstr "tipo_arg" -#: sql_help.c:110 sql_help.c:368 sql_help.c:446 sql_help.c:458 sql_help.c:814 -#: sql_help.c:899 sql_help.c:1122 sql_help.c:1242 sql_help.c:1270 -#: sql_help.c:1513 sql_help.c:1519 sql_help.c:1814 sql_help.c:1846 -#: sql_help.c:1853 sql_help.c:1929 sql_help.c:2093 sql_help.c:2182 -#: sql_help.c:2362 sql_help.c:2541 sql_help.c:2563 sql_help.c:3001 -#: sql_help.c:3167 +#: sql_help.c:110 sql_help.c:370 sql_help.c:448 sql_help.c:460 sql_help.c:814 +#: sql_help.c:899 sql_help.c:1122 sql_help.c:1242 sql_help.c:1274 +#: sql_help.c:1519 sql_help.c:1525 sql_help.c:1807 sql_help.c:1839 +#: sql_help.c:1846 sql_help.c:1922 sql_help.c:2086 sql_help.c:2175 +#: sql_help.c:2355 sql_help.c:2534 sql_help.c:2556 sql_help.c:2994 +#: sql_help.c:3160 msgid "option" msgstr "opción" -#: sql_help.c:111 sql_help.c:815 sql_help.c:1243 sql_help.c:1930 -#: sql_help.c:2094 sql_help.c:2542 +#: sql_help.c:111 sql_help.c:815 sql_help.c:1243 sql_help.c:1923 +#: sql_help.c:2087 sql_help.c:2535 msgid "where option can be:" msgstr "donde opción puede ser:" -#: sql_help.c:112 sql_help.c:1746 +#: sql_help.c:112 sql_help.c:1739 msgid "allowconn" msgstr "allowconn" -#: sql_help.c:113 sql_help.c:816 sql_help.c:1244 sql_help.c:1747 -#: sql_help.c:2095 sql_help.c:2543 +#: sql_help.c:113 sql_help.c:816 sql_help.c:1244 sql_help.c:1740 +#: sql_help.c:2088 sql_help.c:2536 msgid "connlimit" msgstr "límite_conexiones" -#: sql_help.c:114 sql_help.c:1748 +#: sql_help.c:114 sql_help.c:1741 msgid "istemplate" msgstr "esplantilla" -#: sql_help.c:120 sql_help.c:571 sql_help.c:637 sql_help.c:652 sql_help.c:1001 -#: sql_help.c:1038 +#: sql_help.c:120 sql_help.c:573 sql_help.c:638 sql_help.c:1001 sql_help.c:1038 msgid "new_tablespace" msgstr "nuevo_tablespace" -#: sql_help.c:122 sql_help.c:125 sql_help.c:127 sql_help.c:517 sql_help.c:519 -#: sql_help.c:520 sql_help.c:823 sql_help.c:827 sql_help.c:830 sql_help.c:915 -#: sql_help.c:918 sql_help.c:1250 sql_help.c:1253 sql_help.c:1255 -#: sql_help.c:1898 sql_help.c:3352 sql_help.c:3743 +#: sql_help.c:122 sql_help.c:125 sql_help.c:127 sql_help.c:519 sql_help.c:521 +#: sql_help.c:522 sql_help.c:823 sql_help.c:827 sql_help.c:830 sql_help.c:915 +#: sql_help.c:918 sql_help.c:1251 sql_help.c:1255 sql_help.c:1258 +#: sql_help.c:1891 sql_help.c:3345 sql_help.c:3736 msgid "configuration_parameter" msgstr "parámetro_de_configuración" -#: sql_help.c:123 sql_help.c:369 sql_help.c:441 sql_help.c:447 sql_help.c:459 -#: sql_help.c:518 sql_help.c:566 sql_help.c:643 sql_help.c:649 sql_help.c:824 -#: sql_help.c:900 sql_help.c:916 sql_help.c:917 sql_help.c:1020 -#: sql_help.c:1040 sql_help.c:1066 sql_help.c:1123 sql_help.c:1251 -#: sql_help.c:1271 sql_help.c:1815 sql_help.c:1847 sql_help.c:1854 -#: sql_help.c:1899 sql_help.c:1900 sql_help.c:1958 sql_help.c:1990 -#: sql_help.c:2183 sql_help.c:2257 sql_help.c:2265 sql_help.c:2297 -#: sql_help.c:2319 sql_help.c:2336 sql_help.c:2363 sql_help.c:2564 -#: sql_help.c:3168 sql_help.c:3744 sql_help.c:3745 +#: sql_help.c:123 sql_help.c:371 sql_help.c:443 sql_help.c:449 sql_help.c:461 +#: sql_help.c:520 sql_help.c:568 sql_help.c:644 sql_help.c:650 sql_help.c:824 +#: sql_help.c:900 sql_help.c:916 sql_help.c:917 sql_help.c:1020 sql_help.c:1040 +#: sql_help.c:1066 sql_help.c:1123 sql_help.c:1252 sql_help.c:1275 +#: sql_help.c:1808 sql_help.c:1840 sql_help.c:1847 sql_help.c:1892 +#: sql_help.c:1893 sql_help.c:1951 sql_help.c:1983 sql_help.c:2176 +#: sql_help.c:2250 sql_help.c:2258 sql_help.c:2290 sql_help.c:2312 +#: sql_help.c:2329 sql_help.c:2356 sql_help.c:2557 sql_help.c:3161 +#: sql_help.c:3737 sql_help.c:3738 msgid "value" msgstr "valor" @@ -3428,9 +3446,9 @@ msgstr "valor" msgid "target_role" msgstr "rol_destino" -#: sql_help.c:186 sql_help.c:1798 sql_help.c:2141 sql_help.c:2146 -#: sql_help.c:3115 sql_help.c:3122 sql_help.c:3136 sql_help.c:3142 -#: sql_help.c:3447 sql_help.c:3454 sql_help.c:3468 sql_help.c:3474 +#: sql_help.c:186 sql_help.c:1791 sql_help.c:2134 sql_help.c:2139 +#: sql_help.c:3108 sql_help.c:3115 sql_help.c:3129 sql_help.c:3135 +#: sql_help.c:3440 sql_help.c:3447 sql_help.c:3461 sql_help.c:3467 msgid "schema_name" msgstr "nombre_de_esquema" @@ -3443,33 +3461,33 @@ msgid "where abbreviated_grant_or_revoke is one of:" msgstr "donde grant_o_revoke_abreviado es uno de:" #: sql_help.c:189 sql_help.c:190 sql_help.c:191 sql_help.c:192 sql_help.c:193 -#: sql_help.c:194 sql_help.c:195 sql_help.c:196 sql_help.c:542 sql_help.c:570 -#: sql_help.c:636 sql_help.c:777 sql_help.c:834 sql_help.c:1000 -#: sql_help.c:1258 sql_help.c:1933 sql_help.c:1934 sql_help.c:1935 -#: sql_help.c:1936 sql_help.c:1937 sql_help.c:2063 sql_help.c:2098 -#: sql_help.c:2099 sql_help.c:2100 sql_help.c:2101 sql_help.c:2102 -#: sql_help.c:2546 sql_help.c:2547 sql_help.c:2548 sql_help.c:2549 -#: sql_help.c:2550 sql_help.c:3149 sql_help.c:3150 sql_help.c:3151 -#: sql_help.c:3448 sql_help.c:3452 sql_help.c:3455 sql_help.c:3457 -#: sql_help.c:3459 sql_help.c:3461 sql_help.c:3463 sql_help.c:3469 -#: sql_help.c:3471 sql_help.c:3473 sql_help.c:3475 sql_help.c:3477 -#: sql_help.c:3479 sql_help.c:3480 sql_help.c:3481 sql_help.c:3764 +#: sql_help.c:194 sql_help.c:195 sql_help.c:196 sql_help.c:544 sql_help.c:572 +#: sql_help.c:637 sql_help.c:777 sql_help.c:834 sql_help.c:1000 sql_help.c:1262 +#: sql_help.c:1926 sql_help.c:1927 sql_help.c:1928 sql_help.c:1929 +#: sql_help.c:1930 sql_help.c:2056 sql_help.c:2091 sql_help.c:2092 +#: sql_help.c:2093 sql_help.c:2094 sql_help.c:2095 sql_help.c:2539 +#: sql_help.c:2540 sql_help.c:2541 sql_help.c:2542 sql_help.c:2543 +#: sql_help.c:3142 sql_help.c:3143 sql_help.c:3144 sql_help.c:3441 +#: sql_help.c:3445 sql_help.c:3448 sql_help.c:3450 sql_help.c:3452 +#: sql_help.c:3454 sql_help.c:3456 sql_help.c:3462 sql_help.c:3464 +#: sql_help.c:3466 sql_help.c:3468 sql_help.c:3470 sql_help.c:3472 +#: sql_help.c:3473 sql_help.c:3474 sql_help.c:3757 msgid "role_name" msgstr "nombre_de_rol" -#: sql_help.c:222 sql_help.c:434 sql_help.c:1011 sql_help.c:1013 -#: sql_help.c:1287 sql_help.c:1767 sql_help.c:1771 sql_help.c:1857 -#: sql_help.c:1861 sql_help.c:1954 sql_help.c:2269 sql_help.c:2279 -#: sql_help.c:2301 sql_help.c:3198 sql_help.c:3213 sql_help.c:3215 -#: sql_help.c:3629 sql_help.c:3630 sql_help.c:3639 sql_help.c:3680 -#: sql_help.c:3681 sql_help.c:3682 sql_help.c:3683 sql_help.c:3684 -#: sql_help.c:3685 sql_help.c:3718 sql_help.c:3719 sql_help.c:3724 -#: sql_help.c:3729 sql_help.c:3868 sql_help.c:3869 sql_help.c:3878 -#: sql_help.c:3919 sql_help.c:3920 sql_help.c:3921 sql_help.c:3922 -#: sql_help.c:3923 sql_help.c:3924 sql_help.c:3971 sql_help.c:3973 -#: sql_help.c:4006 sql_help.c:4062 sql_help.c:4063 sql_help.c:4072 -#: sql_help.c:4113 sql_help.c:4114 sql_help.c:4115 sql_help.c:4116 -#: sql_help.c:4117 sql_help.c:4118 +#: sql_help.c:222 sql_help.c:436 sql_help.c:1011 sql_help.c:1013 +#: sql_help.c:1291 sql_help.c:1760 sql_help.c:1764 sql_help.c:1850 +#: sql_help.c:1854 sql_help.c:1947 sql_help.c:2262 sql_help.c:2272 +#: sql_help.c:2294 sql_help.c:3191 sql_help.c:3206 sql_help.c:3208 +#: sql_help.c:3622 sql_help.c:3623 sql_help.c:3632 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:3711 sql_help.c:3712 sql_help.c:3717 +#: sql_help.c:3722 sql_help.c:3861 sql_help.c:3862 sql_help.c:3871 +#: sql_help.c:3912 sql_help.c:3913 sql_help.c:3914 sql_help.c:3915 +#: sql_help.c:3916 sql_help.c:3917 sql_help.c:3964 sql_help.c:3966 +#: sql_help.c:3999 sql_help.c:4055 sql_help.c:4056 sql_help.c:4065 +#: sql_help.c:4106 sql_help.c:4107 sql_help.c:4108 sql_help.c:4109 +#: sql_help.c:4110 sql_help.c:4111 msgid "expression" msgstr "expresión" @@ -3477,11 +3495,11 @@ msgstr "expresión" msgid "domain_constraint" msgstr "restricción_de_dominio" -#: sql_help.c:227 sql_help.c:229 sql_help.c:232 sql_help.c:449 sql_help.c:450 +#: sql_help.c:227 sql_help.c:229 sql_help.c:232 sql_help.c:451 sql_help.c:452 #: sql_help.c:993 sql_help.c:1026 sql_help.c:1027 sql_help.c:1028 -#: sql_help.c:1048 sql_help.c:1409 sql_help.c:1411 sql_help.c:1770 -#: sql_help.c:1856 sql_help.c:1860 sql_help.c:2268 sql_help.c:2278 -#: sql_help.c:3210 +#: sql_help.c:1048 sql_help.c:1415 sql_help.c:1417 sql_help.c:1763 +#: sql_help.c:1849 sql_help.c:1853 sql_help.c:2261 sql_help.c:2271 +#: sql_help.c:3203 msgid "constraint_name" msgstr "nombre_restricción" @@ -3489,319 +3507,318 @@ msgstr "nombre_restricción" msgid "new_constraint_name" msgstr "nuevo_nombre_restricción" -#: sql_help.c:300 sql_help.c:898 +#: sql_help.c:301 sql_help.c:898 msgid "new_version" msgstr "nueva_versión" -#: sql_help.c:304 sql_help.c:306 +#: sql_help.c:305 sql_help.c:307 msgid "member_object" msgstr "objeto_miembro" -#: sql_help.c:307 +#: sql_help.c:308 msgid "where member_object is:" msgstr "dondo objeto_miembro es:" -#: sql_help.c:308 sql_help.c:1402 sql_help.c:3549 +#: sql_help.c:309 sql_help.c:314 sql_help.c:315 sql_help.c:316 sql_help.c:317 +#: sql_help.c:318 sql_help.c:319 sql_help.c:324 sql_help.c:328 sql_help.c:330 +#: sql_help.c:332 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:339 sql_help.c:340 sql_help.c:343 +#: sql_help.c:344 sql_help.c:1407 sql_help.c:1412 sql_help.c:1419 +#: sql_help.c:1420 sql_help.c:1421 sql_help.c:1422 sql_help.c:1423 +#: sql_help.c:1424 sql_help.c:1425 sql_help.c:1430 sql_help.c:1432 +#: sql_help.c:1436 sql_help.c:1438 sql_help.c:1442 sql_help.c:1443 +#: sql_help.c:1446 sql_help.c:1447 sql_help.c:1448 sql_help.c:1449 +#: sql_help.c:1450 sql_help.c:1451 sql_help.c:1452 sql_help.c:1453 +#: sql_help.c:1454 sql_help.c:1459 sql_help.c:1460 sql_help.c:3539 +#: sql_help.c:3544 sql_help.c:3545 sql_help.c:3546 sql_help.c:3547 +#: sql_help.c:3553 sql_help.c:3554 sql_help.c:3555 sql_help.c:3556 +#: sql_help.c:3557 sql_help.c:3558 sql_help.c:3559 sql_help.c:3560 +msgid "object_name" +msgstr "nombre_de_objeto" + +#: sql_help.c:310 sql_help.c:1408 sql_help.c:3542 msgid "aggregate_name" msgstr "nombre_función_agregación" -#: sql_help.c:310 sql_help.c:1404 sql_help.c:1685 sql_help.c:1689 -#: sql_help.c:1691 sql_help.c:2673 +#: sql_help.c:312 sql_help.c:1410 sql_help.c:1678 sql_help.c:1682 +#: sql_help.c:1684 sql_help.c:2666 msgid "source_type" msgstr "tipo_fuente" -#: sql_help.c:311 sql_help.c:1405 sql_help.c:1686 sql_help.c:1690 -#: sql_help.c:1692 sql_help.c:2674 +#: sql_help.c:313 sql_help.c:1411 sql_help.c:1679 sql_help.c:1683 +#: sql_help.c:1685 sql_help.c:2667 msgid "target_type" msgstr "tipo_destino" -#: sql_help.c:312 sql_help.c:313 sql_help.c:314 sql_help.c:315 sql_help.c:316 -#: sql_help.c:317 sql_help.c:322 sql_help.c:326 sql_help.c:328 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:336 sql_help.c:337 sql_help.c:338 sql_help.c:341 sql_help.c:342 -#: sql_help.c:1406 sql_help.c:1413 sql_help.c:1414 sql_help.c:1415 -#: sql_help.c:1416 sql_help.c:1417 sql_help.c:1418 sql_help.c:1419 -#: sql_help.c:1424 sql_help.c:1426 sql_help.c:1430 sql_help.c:1432 -#: sql_help.c:1436 sql_help.c:1437 sql_help.c:1440 sql_help.c:1441 -#: sql_help.c:1442 sql_help.c:1443 sql_help.c:1444 sql_help.c:1445 -#: sql_help.c:1446 sql_help.c:1447 sql_help.c:1448 sql_help.c:1453 -#: sql_help.c:1454 sql_help.c:3546 sql_help.c:3551 sql_help.c:3552 -#: sql_help.c:3553 sql_help.c:3554 sql_help.c:3560 sql_help.c:3561 -#: sql_help.c:3562 sql_help.c:3563 sql_help.c:3564 sql_help.c:3565 -#: sql_help.c:3566 sql_help.c:3567 -msgid "object_name" -msgstr "nombre_de_objeto" - -#: sql_help.c:318 sql_help.c:741 sql_help.c:1420 sql_help.c:1687 -#: sql_help.c:1722 sql_help.c:1785 sql_help.c:2007 sql_help.c:2038 -#: sql_help.c:2437 sql_help.c:3132 sql_help.c:3464 sql_help.c:3555 -#: sql_help.c:3658 sql_help.c:3662 sql_help.c:3666 sql_help.c:3669 -#: sql_help.c:3897 sql_help.c:3901 sql_help.c:3905 sql_help.c:3908 -#: sql_help.c:4091 sql_help.c:4095 sql_help.c:4099 sql_help.c:4102 +#: sql_help.c:320 sql_help.c:741 sql_help.c:1426 sql_help.c:1680 +#: sql_help.c:1715 sql_help.c:1778 sql_help.c:2000 sql_help.c:2031 +#: sql_help.c:2430 sql_help.c:3125 sql_help.c:3457 sql_help.c:3548 +#: sql_help.c:3651 sql_help.c:3655 sql_help.c:3659 sql_help.c:3662 +#: sql_help.c:3890 sql_help.c:3894 sql_help.c:3898 sql_help.c:3901 +#: sql_help.c:4084 sql_help.c:4088 sql_help.c:4092 sql_help.c:4095 msgid "function_name" msgstr "nombre_de_función" -#: sql_help.c:323 sql_help.c:734 sql_help.c:1427 sql_help.c:2031 +#: sql_help.c:325 sql_help.c:734 sql_help.c:1433 sql_help.c:2024 msgid "operator_name" msgstr "nombre_operador" -#: sql_help.c:324 sql_help.c:670 sql_help.c:674 sql_help.c:678 sql_help.c:1428 -#: sql_help.c:2008 sql_help.c:2791 +#: sql_help.c:326 sql_help.c:670 sql_help.c:674 sql_help.c:678 sql_help.c:1434 +#: sql_help.c:2001 sql_help.c:2784 msgid "left_type" msgstr "tipo_izq" -#: sql_help.c:325 sql_help.c:671 sql_help.c:675 sql_help.c:679 sql_help.c:1429 -#: sql_help.c:2009 sql_help.c:2792 +#: sql_help.c:327 sql_help.c:671 sql_help.c:675 sql_help.c:679 sql_help.c:1435 +#: sql_help.c:2002 sql_help.c:2785 msgid "right_type" msgstr "tipo_der" -#: sql_help.c:327 sql_help.c:329 sql_help.c:697 sql_help.c:700 sql_help.c:703 +#: sql_help.c:329 sql_help.c:331 sql_help.c:697 sql_help.c:700 sql_help.c:703 #: sql_help.c:732 sql_help.c:744 sql_help.c:752 sql_help.c:755 sql_help.c:758 -#: sql_help.c:1431 sql_help.c:1433 sql_help.c:2028 sql_help.c:2049 -#: sql_help.c:2284 sql_help.c:2801 sql_help.c:2810 +#: sql_help.c:1437 sql_help.c:1439 sql_help.c:2021 sql_help.c:2042 +#: sql_help.c:2277 sql_help.c:2794 sql_help.c:2803 msgid "index_method" msgstr "método_de_índice" -#: sql_help.c:339 sql_help.c:1044 sql_help.c:1449 sql_help.c:1895 -#: sql_help.c:2260 sql_help.c:2406 sql_help.c:2924 sql_help.c:3146 -#: sql_help.c:3478 +#: sql_help.c:341 sql_help.c:1044 sql_help.c:1455 sql_help.c:1888 +#: sql_help.c:2253 sql_help.c:2399 sql_help.c:2917 sql_help.c:3139 +#: sql_help.c:3471 msgid "type_name" msgstr "nombre_de_tipo" -#: sql_help.c:340 sql_help.c:1450 sql_help.c:1894 sql_help.c:2407 -#: sql_help.c:2631 sql_help.c:2925 sql_help.c:3138 sql_help.c:3470 +#: sql_help.c:342 sql_help.c:1456 sql_help.c:1887 sql_help.c:2400 +#: sql_help.c:2624 sql_help.c:2918 sql_help.c:3131 sql_help.c:3463 msgid "lang_name" msgstr "nombre_lenguaje" -#: sql_help.c:343 +#: sql_help.c:345 msgid "and aggregate_signature is:" msgstr "y signatura_func_agregación es:" -#: sql_help.c:366 sql_help.c:1544 sql_help.c:1812 +#: sql_help.c:368 sql_help.c:1550 sql_help.c:1805 msgid "handler_function" msgstr "función_manejadora" -#: sql_help.c:367 sql_help.c:1813 +#: sql_help.c:369 sql_help.c:1806 msgid "validator_function" msgstr "función_validadora" -#: sql_help.c:416 sql_help.c:493 sql_help.c:625 sql_help.c:988 sql_help.c:1187 -#: sql_help.c:2275 sql_help.c:2276 sql_help.c:2292 sql_help.c:2293 +#: sql_help.c:418 sql_help.c:495 sql_help.c:626 sql_help.c:988 sql_help.c:1187 +#: sql_help.c:2268 sql_help.c:2269 sql_help.c:2285 sql_help.c:2286 msgid "action" msgstr "acción" -#: sql_help.c:418 sql_help.c:425 sql_help.c:429 sql_help.c:430 sql_help.c:433 -#: sql_help.c:435 sql_help.c:436 sql_help.c:437 sql_help.c:439 sql_help.c:442 -#: sql_help.c:444 sql_help.c:445 sql_help.c:629 sql_help.c:639 sql_help.c:641 -#: sql_help.c:644 sql_help.c:646 sql_help.c:880 sql_help.c:990 sql_help.c:1003 +#: sql_help.c:420 sql_help.c:427 sql_help.c:431 sql_help.c:432 sql_help.c:435 +#: sql_help.c:437 sql_help.c:438 sql_help.c:439 sql_help.c:441 sql_help.c:444 +#: sql_help.c:446 sql_help.c:447 sql_help.c:630 sql_help.c:640 sql_help.c:642 +#: sql_help.c:645 sql_help.c:647 sql_help.c:880 sql_help.c:990 sql_help.c:1003 #: sql_help.c:1007 sql_help.c:1008 sql_help.c:1012 sql_help.c:1014 #: sql_help.c:1015 sql_help.c:1016 sql_help.c:1018 sql_help.c:1021 -#: sql_help.c:1023 sql_help.c:1286 sql_help.c:1289 sql_help.c:1309 -#: sql_help.c:1408 sql_help.c:1510 sql_help.c:1515 sql_help.c:1529 -#: sql_help.c:1530 sql_help.c:1531 sql_help.c:1844 sql_help.c:1892 -#: sql_help.c:1953 sql_help.c:1988 sql_help.c:2168 sql_help.c:2248 -#: sql_help.c:2261 sql_help.c:2280 sql_help.c:2282 sql_help.c:2289 -#: sql_help.c:2300 sql_help.c:2317 sql_help.c:2440 sql_help.c:2576 -#: sql_help.c:3117 sql_help.c:3118 sql_help.c:3197 sql_help.c:3212 -#: sql_help.c:3214 sql_help.c:3216 sql_help.c:3449 sql_help.c:3450 -#: sql_help.c:3548 sql_help.c:3689 sql_help.c:3928 sql_help.c:3970 -#: sql_help.c:3972 sql_help.c:3974 sql_help.c:3991 sql_help.c:3994 -#: sql_help.c:4122 +#: sql_help.c:1023 sql_help.c:1290 sql_help.c:1293 sql_help.c:1313 +#: sql_help.c:1414 sql_help.c:1516 sql_help.c:1521 sql_help.c:1535 +#: sql_help.c:1536 sql_help.c:1537 sql_help.c:1837 sql_help.c:1885 +#: sql_help.c:1946 sql_help.c:1981 sql_help.c:2161 sql_help.c:2241 +#: sql_help.c:2254 sql_help.c:2273 sql_help.c:2275 sql_help.c:2282 +#: sql_help.c:2293 sql_help.c:2310 sql_help.c:2433 sql_help.c:2569 +#: sql_help.c:3110 sql_help.c:3111 sql_help.c:3190 sql_help.c:3205 +#: sql_help.c:3207 sql_help.c:3209 sql_help.c:3442 sql_help.c:3443 +#: sql_help.c:3541 sql_help.c:3682 sql_help.c:3921 sql_help.c:3963 +#: sql_help.c:3965 sql_help.c:3967 sql_help.c:3984 sql_help.c:3987 +#: sql_help.c:4115 msgid "column_name" msgstr "nombre_de_columna" -#: sql_help.c:419 sql_help.c:630 sql_help.c:991 +#: sql_help.c:421 sql_help.c:631 sql_help.c:991 msgid "new_column_name" msgstr "nuevo_nombre_de_columna" -#: sql_help.c:424 sql_help.c:514 sql_help.c:638 sql_help.c:1002 -#: sql_help.c:1200 +#: sql_help.c:426 sql_help.c:516 sql_help.c:639 sql_help.c:1002 sql_help.c:1200 msgid "where action is one of:" msgstr "donde acción es una de:" -#: sql_help.c:426 sql_help.c:431 sql_help.c:1004 sql_help.c:1009 -#: sql_help.c:1202 sql_help.c:1206 sql_help.c:1765 sql_help.c:1845 -#: sql_help.c:2027 sql_help.c:2249 sql_help.c:2485 sql_help.c:3299 +#: sql_help.c:428 sql_help.c:433 sql_help.c:1004 sql_help.c:1009 +#: sql_help.c:1202 sql_help.c:1206 sql_help.c:1758 sql_help.c:1838 +#: sql_help.c:2020 sql_help.c:2242 sql_help.c:2478 sql_help.c:3292 msgid "data_type" msgstr "tipo_de_dato" -#: sql_help.c:427 sql_help.c:432 sql_help.c:1005 sql_help.c:1010 -#: sql_help.c:1203 sql_help.c:1207 sql_help.c:1766 sql_help.c:1848 -#: sql_help.c:1955 sql_help.c:2250 sql_help.c:2486 sql_help.c:2492 -#: sql_help.c:3207 +#: sql_help.c:429 sql_help.c:434 sql_help.c:1005 sql_help.c:1010 +#: sql_help.c:1203 sql_help.c:1207 sql_help.c:1759 sql_help.c:1841 +#: sql_help.c:1948 sql_help.c:2243 sql_help.c:2479 sql_help.c:2485 +#: sql_help.c:3200 msgid "collation" msgstr "ordenamiento" -#: sql_help.c:428 sql_help.c:1006 sql_help.c:1849 sql_help.c:2251 -#: sql_help.c:2262 +#: sql_help.c:430 sql_help.c:1006 sql_help.c:1842 sql_help.c:2244 +#: sql_help.c:2255 msgid "column_constraint" msgstr "restricción_de_columna" -#: sql_help.c:438 sql_help.c:640 sql_help.c:1017 +#: sql_help.c:440 sql_help.c:641 sql_help.c:1017 msgid "integer" msgstr "entero" -#: sql_help.c:440 sql_help.c:443 sql_help.c:642 sql_help.c:645 sql_help.c:1019 +#: sql_help.c:442 sql_help.c:445 sql_help.c:643 sql_help.c:646 sql_help.c:1019 #: sql_help.c:1022 msgid "attribute_option" msgstr "opción_de_atributo" -#: sql_help.c:448 sql_help.c:1024 sql_help.c:1850 sql_help.c:2252 -#: sql_help.c:2263 +#: sql_help.c:450 sql_help.c:1024 sql_help.c:1843 sql_help.c:2245 +#: sql_help.c:2256 msgid "table_constraint" msgstr "restricción_de_tabla" -#: sql_help.c:451 sql_help.c:452 sql_help.c:453 sql_help.c:454 sql_help.c:1029 -#: sql_help.c:1030 sql_help.c:1031 sql_help.c:1032 sql_help.c:1451 +#: sql_help.c:453 sql_help.c:454 sql_help.c:455 sql_help.c:456 sql_help.c:1029 +#: sql_help.c:1030 sql_help.c:1031 sql_help.c:1032 sql_help.c:1457 msgid "trigger_name" msgstr "nombre_disparador" -#: sql_help.c:455 sql_help.c:456 sql_help.c:1042 sql_help.c:1043 -#: sql_help.c:1851 sql_help.c:2255 +#: sql_help.c:457 sql_help.c:458 sql_help.c:1042 sql_help.c:1043 +#: sql_help.c:1844 sql_help.c:2248 msgid "parent_table" msgstr "tabla_padre" -#: sql_help.c:513 sql_help.c:563 sql_help.c:627 sql_help.c:1167 -#: sql_help.c:1797 +#: sql_help.c:515 sql_help.c:565 sql_help.c:628 sql_help.c:1167 sql_help.c:1790 msgid "extension_name" msgstr "nombre_de_extensión" -#: sql_help.c:515 sql_help.c:1896 +#: sql_help.c:517 sql_help.c:1889 msgid "execution_cost" msgstr "costo_de_ejecución" -#: sql_help.c:516 sql_help.c:1897 +#: sql_help.c:518 sql_help.c:1890 msgid "result_rows" msgstr "núm_de_filas" -#: sql_help.c:537 sql_help.c:539 sql_help.c:813 sql_help.c:821 sql_help.c:825 +#: sql_help.c:539 sql_help.c:541 sql_help.c:813 sql_help.c:821 sql_help.c:825 #: sql_help.c:828 sql_help.c:831 sql_help.c:1241 sql_help.c:1249 -#: sql_help.c:1252 sql_help.c:1254 sql_help.c:1256 sql_help.c:2142 -#: sql_help.c:2144 sql_help.c:2147 sql_help.c:2148 sql_help.c:3116 -#: sql_help.c:3120 sql_help.c:3123 sql_help.c:3125 sql_help.c:3127 -#: sql_help.c:3129 sql_help.c:3131 sql_help.c:3137 sql_help.c:3139 -#: sql_help.c:3141 sql_help.c:3143 sql_help.c:3145 sql_help.c:3147 +#: sql_help.c:1253 sql_help.c:1256 sql_help.c:1259 sql_help.c:2135 +#: sql_help.c:2137 sql_help.c:2140 sql_help.c:2141 sql_help.c:3109 +#: sql_help.c:3113 sql_help.c:3116 sql_help.c:3118 sql_help.c:3120 +#: sql_help.c:3122 sql_help.c:3124 sql_help.c:3130 sql_help.c:3132 +#: sql_help.c:3134 sql_help.c:3136 sql_help.c:3138 sql_help.c:3140 msgid "role_specification" msgstr "especificación_de_rol" -#: sql_help.c:538 sql_help.c:540 sql_help.c:1268 sql_help.c:1740 -#: sql_help.c:2150 sql_help.c:2561 sql_help.c:2958 sql_help.c:3774 +#: sql_help.c:540 sql_help.c:542 sql_help.c:1272 sql_help.c:1733 +#: sql_help.c:2143 sql_help.c:2554 sql_help.c:2951 sql_help.c:3767 msgid "user_name" msgstr "nombre_de_usuario" -#: sql_help.c:541 sql_help.c:833 sql_help.c:1257 sql_help.c:2149 -#: sql_help.c:3148 +#: sql_help.c:543 sql_help.c:833 sql_help.c:1261 sql_help.c:2142 +#: sql_help.c:3141 msgid "where role_specification can be:" msgstr "donde especificación_de_rol puede ser:" -#: sql_help.c:543 +#: sql_help.c:545 msgid "group_name" msgstr "nombre_de_grupo" -#: sql_help.c:561 sql_help.c:1745 sql_help.c:1959 sql_help.c:1991 -#: sql_help.c:2258 sql_help.c:2266 sql_help.c:2298 sql_help.c:2320 -#: sql_help.c:2332 sql_help.c:3144 sql_help.c:3476 +#: sql_help.c:563 sql_help.c:1738 sql_help.c:1952 sql_help.c:1984 +#: sql_help.c:2251 sql_help.c:2259 sql_help.c:2291 sql_help.c:2313 +#: sql_help.c:2325 sql_help.c:3137 sql_help.c:3469 msgid "tablespace_name" msgstr "nombre_de_tablespace" -#: sql_help.c:565 sql_help.c:568 sql_help.c:648 sql_help.c:650 sql_help.c:1039 -#: sql_help.c:1041 sql_help.c:1957 sql_help.c:1989 sql_help.c:2256 -#: sql_help.c:2264 sql_help.c:2296 sql_help.c:2318 +#: sql_help.c:567 sql_help.c:570 sql_help.c:649 sql_help.c:651 sql_help.c:1039 +#: sql_help.c:1041 sql_help.c:1950 sql_help.c:1982 sql_help.c:2249 +#: sql_help.c:2257 sql_help.c:2289 sql_help.c:2311 msgid "storage_parameter" msgstr "parámetro_de_almacenamiento" -#: sql_help.c:591 sql_help.c:1425 sql_help.c:3559 +#: sql_help.c:593 sql_help.c:1431 sql_help.c:3552 msgid "large_object_oid" msgstr "oid_de_objeto_grande" -#: sql_help.c:647 sql_help.c:1037 sql_help.c:1046 sql_help.c:1049 -#: sql_help.c:1349 +#: sql_help.c:648 sql_help.c:1037 sql_help.c:1046 sql_help.c:1049 +#: sql_help.c:1353 msgid "index_name" msgstr "nombre_índice" -#: sql_help.c:680 sql_help.c:2012 +#: sql_help.c:680 sql_help.c:2005 msgid "res_proc" msgstr "proc_res" -#: sql_help.c:681 sql_help.c:2013 +#: sql_help.c:681 sql_help.c:2006 msgid "join_proc" msgstr "proc_join" -#: sql_help.c:733 sql_help.c:745 sql_help.c:2030 +#: sql_help.c:733 sql_help.c:745 sql_help.c:2023 msgid "strategy_number" msgstr "número_de_estrategia" #: sql_help.c:735 sql_help.c:736 sql_help.c:739 sql_help.c:740 sql_help.c:746 -#: sql_help.c:747 sql_help.c:749 sql_help.c:750 sql_help.c:2032 -#: sql_help.c:2033 sql_help.c:2036 sql_help.c:2037 +#: sql_help.c:747 sql_help.c:749 sql_help.c:750 sql_help.c:2025 sql_help.c:2026 +#: sql_help.c:2029 sql_help.c:2030 msgid "op_type" msgstr "tipo_op" -#: sql_help.c:737 sql_help.c:2034 +#: sql_help.c:737 sql_help.c:2027 msgid "sort_family_name" msgstr "nombre_familia_ordenamiento" -#: sql_help.c:738 sql_help.c:748 sql_help.c:2035 +#: sql_help.c:738 sql_help.c:748 sql_help.c:2028 msgid "support_number" msgstr "número_de_soporte" -#: sql_help.c:742 sql_help.c:1688 sql_help.c:2039 sql_help.c:2409 -#: sql_help.c:2411 +#: sql_help.c:742 sql_help.c:1681 sql_help.c:2032 sql_help.c:2402 +#: sql_help.c:2404 msgid "argument_type" msgstr "tipo_argumento" #: sql_help.c:773 sql_help.c:776 sql_help.c:843 sql_help.c:879 sql_help.c:1163 -#: sql_help.c:1166 sql_help.c:1308 sql_help.c:1348 sql_help.c:1410 -#: sql_help.c:1435 sql_help.c:1439 sql_help.c:1452 sql_help.c:1509 -#: sql_help.c:1514 sql_help.c:1843 sql_help.c:1951 sql_help.c:1987 -#: sql_help.c:2062 sql_help.c:2119 sql_help.c:2167 sql_help.c:2247 -#: sql_help.c:2259 sql_help.c:2316 sql_help.c:2434 sql_help.c:2610 -#: sql_help.c:2827 sql_help.c:2844 sql_help.c:2934 sql_help.c:3114 -#: sql_help.c:3119 sql_help.c:3164 sql_help.c:3195 sql_help.c:3446 -#: sql_help.c:3451 sql_help.c:3547 sql_help.c:3644 sql_help.c:3646 -#: sql_help.c:3695 sql_help.c:3734 sql_help.c:3883 sql_help.c:3885 -#: sql_help.c:3934 sql_help.c:3968 sql_help.c:3990 sql_help.c:3992 -#: sql_help.c:3993 sql_help.c:4077 sql_help.c:4079 sql_help.c:4128 +#: sql_help.c:1166 sql_help.c:1312 sql_help.c:1352 sql_help.c:1416 +#: sql_help.c:1441 sql_help.c:1445 sql_help.c:1458 sql_help.c:1515 +#: sql_help.c:1520 sql_help.c:1836 sql_help.c:1944 sql_help.c:1980 +#: sql_help.c:2055 sql_help.c:2112 sql_help.c:2160 sql_help.c:2240 +#: sql_help.c:2252 sql_help.c:2309 sql_help.c:2427 sql_help.c:2603 +#: sql_help.c:2820 sql_help.c:2837 sql_help.c:2927 sql_help.c:3107 +#: sql_help.c:3112 sql_help.c:3157 sql_help.c:3188 sql_help.c:3439 +#: sql_help.c:3444 sql_help.c:3540 sql_help.c:3637 sql_help.c:3639 +#: sql_help.c:3688 sql_help.c:3727 sql_help.c:3876 sql_help.c:3878 +#: sql_help.c:3927 sql_help.c:3961 sql_help.c:3983 sql_help.c:3985 +#: sql_help.c:3986 sql_help.c:4070 sql_help.c:4072 sql_help.c:4121 msgid "table_name" msgstr "nombre_de_tabla" -#: sql_help.c:778 sql_help.c:2064 +#: sql_help.c:778 sql_help.c:2057 msgid "using_expression" msgstr "expresión_using" -#: sql_help.c:779 sql_help.c:2065 +#: sql_help.c:779 sql_help.c:2058 msgid "check_expression" msgstr "expresión_check" -#: sql_help.c:817 sql_help.c:1245 sql_help.c:1931 sql_help.c:2096 -#: sql_help.c:2544 +#: sql_help.c:817 sql_help.c:1245 sql_help.c:1924 sql_help.c:2089 +#: sql_help.c:2537 msgid "password" msgstr "contraseña" -#: sql_help.c:818 sql_help.c:1246 sql_help.c:1932 sql_help.c:2097 -#: sql_help.c:2545 +#: sql_help.c:818 sql_help.c:1246 sql_help.c:1925 sql_help.c:2090 +#: sql_help.c:2538 msgid "timestamp" msgstr "fecha_hora" -#: sql_help.c:822 sql_help.c:826 sql_help.c:829 sql_help.c:832 sql_help.c:3124 -#: sql_help.c:3456 +#: sql_help.c:822 sql_help.c:826 sql_help.c:829 sql_help.c:832 sql_help.c:1250 +#: sql_help.c:1254 sql_help.c:1257 sql_help.c:1260 sql_help.c:3117 +#: sql_help.c:3449 msgid "database_name" msgstr "nombre_de_base_de_datos" -#: sql_help.c:873 sql_help.c:2162 +#: sql_help.c:873 sql_help.c:2155 msgid "increment" msgstr "incremento" -#: sql_help.c:874 sql_help.c:2163 +#: sql_help.c:874 sql_help.c:2156 msgid "minvalue" msgstr "valormin" -#: sql_help.c:875 sql_help.c:2164 +#: sql_help.c:875 sql_help.c:2157 msgid "maxvalue" msgstr "valormax" -#: sql_help.c:876 sql_help.c:2165 sql_help.c:3642 sql_help.c:3732 -#: sql_help.c:3881 sql_help.c:4010 sql_help.c:4075 +#: sql_help.c:876 sql_help.c:2158 sql_help.c:3635 sql_help.c:3725 +#: sql_help.c:3874 sql_help.c:4003 sql_help.c:4068 msgid "start" msgstr "inicio" @@ -3809,7 +3826,7 @@ msgstr "inicio" msgid "restart" msgstr "reinicio" -#: sql_help.c:878 sql_help.c:2166 +#: sql_help.c:878 sql_help.c:2159 msgid "cache" msgstr "cache" @@ -3825,7 +3842,7 @@ msgstr "nombre_regla_de_reescritura" msgid "and table_constraint_using_index is:" msgstr "y restricción_de_tabla_con_índice es:" -#: sql_help.c:1065 sql_help.c:1068 sql_help.c:2335 +#: sql_help.c:1065 sql_help.c:1068 sql_help.c:2328 msgid "tablespace_option" msgstr "opción_de_tablespace" @@ -3846,7 +3863,7 @@ msgid "new_dictionary" msgstr "diccionario_nuevo" #: sql_help.c:1191 sql_help.c:1201 sql_help.c:1204 sql_help.c:1205 -#: sql_help.c:2484 +#: sql_help.c:2477 msgid "attribute_name" msgstr "nombre_atributo" @@ -3862,1443 +3879,1419 @@ msgstr "nuevo_valor_enum" msgid "existing_enum_value" msgstr "valor_enum_existente" -#: sql_help.c:1269 sql_help.c:1852 sql_help.c:2178 sql_help.c:2562 -#: sql_help.c:2959 sql_help.c:3130 sql_help.c:3165 sql_help.c:3462 +#: sql_help.c:1273 sql_help.c:1845 sql_help.c:2171 sql_help.c:2555 +#: sql_help.c:2952 sql_help.c:3123 sql_help.c:3158 sql_help.c:3455 msgid "server_name" msgstr "nombre_de_servidor" -#: sql_help.c:1297 sql_help.c:1300 sql_help.c:2577 +#: sql_help.c:1301 sql_help.c:1304 sql_help.c:2570 msgid "view_option_name" msgstr "nombre_opción_de_vista" -#: sql_help.c:1298 sql_help.c:2578 +#: sql_help.c:1302 sql_help.c:2571 msgid "view_option_value" msgstr "valor_opción_de_vista" -#: sql_help.c:1323 sql_help.c:3790 sql_help.c:3792 sql_help.c:3816 +#: sql_help.c:1327 sql_help.c:3783 sql_help.c:3785 sql_help.c:3809 msgid "transaction_mode" msgstr "modo_de_transacción" -#: sql_help.c:1324 sql_help.c:3793 sql_help.c:3817 +#: sql_help.c:1328 sql_help.c:3786 sql_help.c:3810 msgid "where transaction_mode is one of:" msgstr "donde modo_de_transacción es uno de:" -#: sql_help.c:1407 +#: sql_help.c:1413 msgid "relation_name" msgstr "nombre_relación" -#: sql_help.c:1412 sql_help.c:3126 sql_help.c:3458 +#: sql_help.c:1418 sql_help.c:3119 sql_help.c:3451 msgid "domain_name" msgstr "nombre_de_dominio" -#: sql_help.c:1434 +#: sql_help.c:1440 msgid "policy_name" msgstr "nombre_de_política" -#: sql_help.c:1438 +#: sql_help.c:1444 msgid "rule_name" msgstr "nombre_regla" -#: sql_help.c:1455 +#: sql_help.c:1461 msgid "text" msgstr "texto" -#: sql_help.c:1480 sql_help.c:3308 sql_help.c:3496 +#: sql_help.c:1486 sql_help.c:3301 sql_help.c:3489 msgid "transaction_id" msgstr "id_de_transacción" -#: sql_help.c:1511 sql_help.c:1517 sql_help.c:3234 +#: sql_help.c:1517 sql_help.c:1523 sql_help.c:3227 msgid "filename" msgstr "nombre_de_archivo" -#: sql_help.c:1512 sql_help.c:1518 sql_help.c:2121 sql_help.c:2122 -#: sql_help.c:2123 +#: sql_help.c:1518 sql_help.c:1524 sql_help.c:2114 sql_help.c:2115 +#: sql_help.c:2116 msgid "command" msgstr "orden" -#: sql_help.c:1516 sql_help.c:1992 sql_help.c:2321 sql_help.c:2579 -#: sql_help.c:2597 sql_help.c:3199 +#: sql_help.c:1522 sql_help.c:1985 sql_help.c:2314 sql_help.c:2572 +#: sql_help.c:2590 sql_help.c:3192 msgid "query" msgstr "consulta" -#: sql_help.c:1520 sql_help.c:3004 +#: sql_help.c:1526 sql_help.c:2997 msgid "where option can be one of:" msgstr "donde opción puede ser una de:" -#: sql_help.c:1521 +#: sql_help.c:1527 msgid "format_name" msgstr "nombre_de_formato" -#: sql_help.c:1522 sql_help.c:1523 sql_help.c:1526 sql_help.c:3005 -#: sql_help.c:3006 sql_help.c:3007 sql_help.c:3008 sql_help.c:3009 +#: sql_help.c:1528 sql_help.c:1529 sql_help.c:1532 sql_help.c:2998 +#: sql_help.c:2999 sql_help.c:3000 sql_help.c:3001 sql_help.c:3002 msgid "boolean" msgstr "booleano" -#: sql_help.c:1524 +#: sql_help.c:1530 msgid "delimiter_character" msgstr "carácter_delimitador" -#: sql_help.c:1525 +#: sql_help.c:1531 msgid "null_string" msgstr "cadena_null" -#: sql_help.c:1527 +#: sql_help.c:1533 msgid "quote_character" msgstr "carácter_de_comilla" -#: sql_help.c:1528 +#: sql_help.c:1534 msgid "escape_character" msgstr "carácter_de_escape" -#: sql_help.c:1532 +#: sql_help.c:1538 msgid "encoding_name" msgstr "nombre_codificación" -#: sql_help.c:1543 +#: sql_help.c:1549 msgid "access_method_type" -msgstr "" +msgstr "tipo_de_método_de_acceso" -#: sql_help.c:1616 sql_help.c:1636 sql_help.c:1639 +#: sql_help.c:1615 sql_help.c:1634 sql_help.c:1637 msgid "arg_data_type" msgstr "tipo_de_dato_arg" -#: sql_help.c:1617 sql_help.c:1640 sql_help.c:1652 +#: sql_help.c:1616 sql_help.c:1638 sql_help.c:1646 msgid "sfunc" msgstr "func_transición" -#: sql_help.c:1618 sql_help.c:1641 sql_help.c:1653 +#: sql_help.c:1617 sql_help.c:1639 sql_help.c:1647 msgid "state_data_type" msgstr "tipo_de_dato_de_estado" -#: sql_help.c:1619 sql_help.c:1642 sql_help.c:1654 +#: sql_help.c:1618 sql_help.c:1640 sql_help.c:1648 msgid "state_data_size" msgstr "tamaño_de_dato_de_estado" -#: sql_help.c:1620 sql_help.c:1643 sql_help.c:1655 +#: sql_help.c:1619 sql_help.c:1641 sql_help.c:1649 msgid "ffunc" msgstr "func_final" -#: sql_help.c:1621 sql_help.c:1644 sql_help.c:1656 -#, fuzzy -#| msgid "minvfunc" +#: sql_help.c:1620 sql_help.c:1650 msgid "combinefunc" -msgstr "func_inv_m" +msgstr "func_combinación" -#: sql_help.c:1622 sql_help.c:1645 sql_help.c:1657 -#, fuzzy -#| msgid "sfunc" +#: sql_help.c:1621 sql_help.c:1651 msgid "serialfunc" -msgstr "func_transición" +msgstr "func_serial" -#: sql_help.c:1623 sql_help.c:1646 sql_help.c:1658 +#: sql_help.c:1622 sql_help.c:1652 msgid "deserialfunc" -msgstr "" - -#: sql_help.c:1624 sql_help.c:1647 sql_help.c:1659 -#, fuzzy -#| msgid "server_type" -msgid "serialtype" -msgstr "tipo_de_servidor" +msgstr "func_deserial" -#: sql_help.c:1625 sql_help.c:1648 sql_help.c:1660 +#: sql_help.c:1623 sql_help.c:1642 sql_help.c:1653 msgid "initial_condition" msgstr "condición_inicial" -#: sql_help.c:1626 sql_help.c:1661 +#: sql_help.c:1624 sql_help.c:1654 msgid "msfunc" msgstr "func_transición_m" -#: sql_help.c:1627 sql_help.c:1662 +#: sql_help.c:1625 sql_help.c:1655 msgid "minvfunc" msgstr "func_inv_m" -#: sql_help.c:1628 sql_help.c:1663 +#: sql_help.c:1626 sql_help.c:1656 msgid "mstate_data_type" msgstr "tipo_de_dato_de_estado_m" -#: sql_help.c:1629 sql_help.c:1664 +#: sql_help.c:1627 sql_help.c:1657 msgid "mstate_data_size" msgstr "tamaño_de_dato_de_estado_m" -#: sql_help.c:1630 sql_help.c:1665 +#: sql_help.c:1628 sql_help.c:1658 msgid "mffunc" msgstr "func_final_m" -#: sql_help.c:1631 sql_help.c:1666 +#: sql_help.c:1629 sql_help.c:1659 msgid "minitial_condition" msgstr "condición_inicial_m" -#: sql_help.c:1632 sql_help.c:1667 +#: sql_help.c:1630 sql_help.c:1660 msgid "sort_operator" msgstr "operador_de_ordenamiento" -#: sql_help.c:1649 +#: sql_help.c:1643 msgid "or the old syntax" msgstr "o la sintaxis antigua" -#: sql_help.c:1651 +#: sql_help.c:1645 msgid "base_type" msgstr "tipo_base" -#: sql_help.c:1706 +#: sql_help.c:1699 msgid "locale" msgstr "configuración regional" -#: sql_help.c:1707 sql_help.c:1743 +#: sql_help.c:1700 sql_help.c:1736 msgid "lc_collate" msgstr "lc_collate" -#: sql_help.c:1708 sql_help.c:1744 +#: sql_help.c:1701 sql_help.c:1737 msgid "lc_ctype" msgstr "lc_ctype" -#: sql_help.c:1710 +#: sql_help.c:1703 msgid "existing_collation" msgstr "ordenamiento_existente" -#: sql_help.c:1720 +#: sql_help.c:1713 msgid "source_encoding" msgstr "codificación_origen" -#: sql_help.c:1721 +#: sql_help.c:1714 msgid "dest_encoding" msgstr "codificación_destino" -#: sql_help.c:1741 sql_help.c:2361 +#: sql_help.c:1734 sql_help.c:2354 msgid "template" msgstr "plantilla" -#: sql_help.c:1742 +#: sql_help.c:1735 msgid "encoding" msgstr "codificación" -#: sql_help.c:1768 +#: sql_help.c:1761 msgid "constraint" msgstr "restricción" -#: sql_help.c:1769 +#: sql_help.c:1762 msgid "where constraint is:" msgstr "donde restricción es:" -#: sql_help.c:1783 sql_help.c:2118 sql_help.c:2433 +#: sql_help.c:1776 sql_help.c:2111 sql_help.c:2426 msgid "event" msgstr "evento" -#: sql_help.c:1784 +#: sql_help.c:1777 msgid "filter_variable" msgstr "variable_de_filtrado" -#: sql_help.c:1799 +#: sql_help.c:1792 msgid "version" msgstr "versión" -#: sql_help.c:1800 +#: sql_help.c:1793 msgid "old_version" msgstr "versión_antigua" -#: sql_help.c:1855 sql_help.c:2267 +#: sql_help.c:1848 sql_help.c:2260 msgid "where column_constraint is:" msgstr "donde restricción_de_columna es:" -#: sql_help.c:1858 sql_help.c:1890 sql_help.c:2270 +#: sql_help.c:1851 sql_help.c:1883 sql_help.c:2263 msgid "default_expr" msgstr "expr_por_omisión" -#: sql_help.c:1859 sql_help.c:2277 +#: sql_help.c:1852 sql_help.c:2270 msgid "and table_constraint is:" msgstr "y restricción_de_tabla es:" -#: sql_help.c:1891 +#: sql_help.c:1884 msgid "rettype" msgstr "tipo_ret" -#: sql_help.c:1893 +#: sql_help.c:1886 msgid "column_type" msgstr "tipo_columna" -#: sql_help.c:1901 +#: sql_help.c:1894 msgid "definition" msgstr "definición" -#: sql_help.c:1902 +#: sql_help.c:1895 msgid "obj_file" msgstr "archivo_obj" -#: sql_help.c:1903 +#: sql_help.c:1896 msgid "link_symbol" msgstr "símbolo_enlace" -#: sql_help.c:1904 +#: sql_help.c:1897 msgid "attribute" msgstr "atributo" -#: sql_help.c:1938 sql_help.c:2103 sql_help.c:2551 +#: sql_help.c:1931 sql_help.c:2096 sql_help.c:2544 msgid "uid" msgstr "uid" -#: sql_help.c:1952 +#: sql_help.c:1945 msgid "method" msgstr "método" -#: sql_help.c:1956 sql_help.c:2302 sql_help.c:3208 +#: sql_help.c:1949 sql_help.c:2295 sql_help.c:3201 msgid "opclass" msgstr "clase_de_ops" -#: sql_help.c:1960 sql_help.c:2288 +#: sql_help.c:1953 sql_help.c:2281 msgid "predicate" msgstr "predicado" -#: sql_help.c:1972 +#: sql_help.c:1965 msgid "call_handler" msgstr "manejador_de_llamada" -#: sql_help.c:1973 +#: sql_help.c:1966 msgid "inline_handler" msgstr "manejador_en_línea" -#: sql_help.c:1974 +#: sql_help.c:1967 msgid "valfunction" msgstr "función_val" -#: sql_help.c:2010 +#: sql_help.c:2003 msgid "com_op" msgstr "op_conm" -#: sql_help.c:2011 +#: sql_help.c:2004 msgid "neg_op" msgstr "op_neg" -#: sql_help.c:2029 +#: sql_help.c:2022 msgid "family_name" msgstr "nombre_familia" -#: sql_help.c:2040 +#: sql_help.c:2033 msgid "storage_type" msgstr "tipo_almacenamiento" -#: sql_help.c:2120 sql_help.c:2436 sql_help.c:2613 sql_help.c:3218 -#: sql_help.c:3633 sql_help.c:3635 sql_help.c:3723 sql_help.c:3725 -#: sql_help.c:3872 sql_help.c:3874 sql_help.c:3977 sql_help.c:4066 -#: sql_help.c:4068 +#: sql_help.c:2113 sql_help.c:2429 sql_help.c:2606 sql_help.c:3211 +#: sql_help.c:3626 sql_help.c:3628 sql_help.c:3716 sql_help.c:3718 +#: sql_help.c:3865 sql_help.c:3867 sql_help.c:3970 sql_help.c:4059 +#: sql_help.c:4061 msgid "condition" msgstr "condición" -#: sql_help.c:2124 sql_help.c:2439 +#: sql_help.c:2117 sql_help.c:2432 msgid "where event can be one of:" msgstr "donde evento puede ser una de:" -#: sql_help.c:2143 sql_help.c:2145 +#: sql_help.c:2136 sql_help.c:2138 msgid "schema_element" msgstr "elemento_de_esquema" -#: sql_help.c:2179 +#: sql_help.c:2172 msgid "server_type" msgstr "tipo_de_servidor" -#: sql_help.c:2180 +#: sql_help.c:2173 msgid "server_version" msgstr "versión_de_servidor" -#: sql_help.c:2181 sql_help.c:3128 sql_help.c:3460 +#: sql_help.c:2174 sql_help.c:3121 sql_help.c:3453 msgid "fdw_name" msgstr "nombre_fdw" -#: sql_help.c:2253 +#: sql_help.c:2246 msgid "source_table" msgstr "tabla_origen" -#: sql_help.c:2254 +#: sql_help.c:2247 msgid "like_option" msgstr "opción_de_like" -#: sql_help.c:2271 sql_help.c:2272 sql_help.c:2281 sql_help.c:2283 -#: sql_help.c:2287 +#: sql_help.c:2264 sql_help.c:2265 sql_help.c:2274 sql_help.c:2276 +#: sql_help.c:2280 msgid "index_parameters" msgstr "parámetros_de_índice" -#: sql_help.c:2273 sql_help.c:2290 +#: sql_help.c:2266 sql_help.c:2283 msgid "reftable" msgstr "tabla_ref" -#: sql_help.c:2274 sql_help.c:2291 +#: sql_help.c:2267 sql_help.c:2284 msgid "refcolumn" msgstr "columna_ref" -#: sql_help.c:2285 +#: sql_help.c:2278 msgid "exclude_element" msgstr "elemento_de_exclusión" -#: sql_help.c:2286 sql_help.c:3640 sql_help.c:3730 sql_help.c:3879 -#: sql_help.c:4008 sql_help.c:4073 +#: sql_help.c:2279 sql_help.c:3633 sql_help.c:3723 sql_help.c:3872 +#: sql_help.c:4001 sql_help.c:4066 msgid "operator" msgstr "operador" -#: sql_help.c:2294 +#: sql_help.c:2287 msgid "and like_option is:" msgstr "y opción_de_like es:" -#: sql_help.c:2295 +#: sql_help.c:2288 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:2299 +#: sql_help.c:2292 msgid "exclude_element in an EXCLUDE constraint is:" msgstr "elemento_de_exclusión en una restricción EXCLUDE es:" -#: sql_help.c:2334 +#: sql_help.c:2327 msgid "directory" msgstr "directorio" -#: sql_help.c:2348 +#: sql_help.c:2341 msgid "parser_name" msgstr "nombre_de_parser" -#: sql_help.c:2349 +#: sql_help.c:2342 msgid "source_config" msgstr "config_origen" -#: sql_help.c:2378 +#: sql_help.c:2371 msgid "start_function" msgstr "función_inicio" -#: sql_help.c:2379 +#: sql_help.c:2372 msgid "gettoken_function" msgstr "función_gettoken" -#: sql_help.c:2380 +#: sql_help.c:2373 msgid "end_function" msgstr "función_fin" -#: sql_help.c:2381 +#: sql_help.c:2374 msgid "lextypes_function" msgstr "función_lextypes" -#: sql_help.c:2382 +#: sql_help.c:2375 msgid "headline_function" msgstr "función_headline" -#: sql_help.c:2394 +#: sql_help.c:2387 msgid "init_function" msgstr "función_init" -#: sql_help.c:2395 +#: sql_help.c:2388 msgid "lexize_function" msgstr "función_lexize" -#: sql_help.c:2408 +#: sql_help.c:2401 msgid "from_sql_function_name" msgstr "nombre_de_función_from" -#: sql_help.c:2410 +#: sql_help.c:2403 msgid "to_sql_function_name" msgstr "nombre_de_función_to" -#: sql_help.c:2435 +#: sql_help.c:2428 msgid "referenced_table_name" msgstr "nombre_tabla_referenciada" -#: sql_help.c:2438 +#: sql_help.c:2431 msgid "arguments" msgstr "argumentos" -#: sql_help.c:2488 sql_help.c:3568 +#: sql_help.c:2481 sql_help.c:3561 msgid "label" msgstr "etiqueta" -#: sql_help.c:2490 +#: sql_help.c:2483 msgid "subtype" msgstr "subtipo" -#: sql_help.c:2491 +#: sql_help.c:2484 msgid "subtype_operator_class" msgstr "clase_de_operador_del_subtipo" -#: sql_help.c:2493 +#: sql_help.c:2486 msgid "canonical_function" msgstr "función_canónica" -#: sql_help.c:2494 +#: sql_help.c:2487 msgid "subtype_diff_function" msgstr "función_diff_del_subtipo" -#: sql_help.c:2496 +#: sql_help.c:2489 msgid "input_function" msgstr "función_entrada" -#: sql_help.c:2497 +#: sql_help.c:2490 msgid "output_function" msgstr "función_salida" -#: sql_help.c:2498 +#: sql_help.c:2491 msgid "receive_function" msgstr "función_receive" -#: sql_help.c:2499 +#: sql_help.c:2492 msgid "send_function" msgstr "función_send" -#: sql_help.c:2500 +#: sql_help.c:2493 msgid "type_modifier_input_function" msgstr "función_entrada_del_modificador_de_tipo" -#: sql_help.c:2501 +#: sql_help.c:2494 msgid "type_modifier_output_function" msgstr "función_salida_del_modificador_de_tipo" -#: sql_help.c:2502 +#: sql_help.c:2495 msgid "analyze_function" msgstr "función_analyze" -#: sql_help.c:2503 +#: sql_help.c:2496 msgid "internallength" msgstr "largo_interno" -#: sql_help.c:2504 +#: sql_help.c:2497 msgid "alignment" msgstr "alineamiento" -#: sql_help.c:2505 +#: sql_help.c:2498 msgid "storage" msgstr "almacenamiento" -#: sql_help.c:2506 +#: sql_help.c:2499 msgid "like_type" msgstr "como_tipo" -#: sql_help.c:2507 +#: sql_help.c:2500 msgid "category" msgstr "categoría" -#: sql_help.c:2508 +#: sql_help.c:2501 msgid "preferred" msgstr "preferido" -#: sql_help.c:2509 +#: sql_help.c:2502 msgid "default" msgstr "valor_por_omisión" -#: sql_help.c:2510 +#: sql_help.c:2503 msgid "element" msgstr "elemento" -#: sql_help.c:2511 +#: sql_help.c:2504 msgid "delimiter" msgstr "delimitador" -#: sql_help.c:2512 +#: sql_help.c:2505 msgid "collatable" msgstr "ordenable" -#: sql_help.c:2609 sql_help.c:3194 sql_help.c:3628 sql_help.c:3717 -#: sql_help.c:3867 sql_help.c:3967 sql_help.c:4061 +#: sql_help.c:2602 sql_help.c:3187 sql_help.c:3621 sql_help.c:3710 +#: sql_help.c:3860 sql_help.c:3960 sql_help.c:4054 msgid "with_query" msgstr "consulta_with" -#: sql_help.c:2611 sql_help.c:3196 sql_help.c:3647 sql_help.c:3653 -#: sql_help.c:3656 sql_help.c:3660 sql_help.c:3664 sql_help.c:3672 -#: sql_help.c:3886 sql_help.c:3892 sql_help.c:3895 sql_help.c:3899 -#: sql_help.c:3903 sql_help.c:3911 sql_help.c:3969 sql_help.c:4080 -#: sql_help.c:4086 sql_help.c:4089 sql_help.c:4093 sql_help.c:4097 -#: sql_help.c:4105 +#: sql_help.c:2604 sql_help.c:3189 sql_help.c:3640 sql_help.c:3646 +#: sql_help.c:3649 sql_help.c:3653 sql_help.c:3657 sql_help.c:3665 +#: sql_help.c:3879 sql_help.c:3885 sql_help.c:3888 sql_help.c:3892 +#: sql_help.c:3896 sql_help.c:3904 sql_help.c:3962 sql_help.c:4073 +#: sql_help.c:4079 sql_help.c:4082 sql_help.c:4086 sql_help.c:4090 +#: sql_help.c:4098 msgid "alias" msgstr "alias" -#: sql_help.c:2612 +#: sql_help.c:2605 msgid "using_list" msgstr "lista_using" -#: sql_help.c:2614 sql_help.c:3035 sql_help.c:3275 sql_help.c:3978 +#: sql_help.c:2607 sql_help.c:3028 sql_help.c:3268 sql_help.c:3971 msgid "cursor_name" msgstr "nombre_de_cursor" -#: sql_help.c:2615 sql_help.c:3202 sql_help.c:3979 +#: sql_help.c:2608 sql_help.c:3195 sql_help.c:3972 msgid "output_expression" msgstr "expresión_de_salida" -#: sql_help.c:2616 sql_help.c:3203 sql_help.c:3631 sql_help.c:3720 -#: sql_help.c:3870 sql_help.c:3980 sql_help.c:4064 +#: sql_help.c:2609 sql_help.c:3196 sql_help.c:3624 sql_help.c:3713 +#: sql_help.c:3863 sql_help.c:3973 sql_help.c:4057 msgid "output_name" msgstr "nombre_de_salida" -#: sql_help.c:2632 +#: sql_help.c:2625 msgid "code" msgstr "código" -#: sql_help.c:2983 +#: sql_help.c:2976 msgid "parameter" msgstr "parámetro" -#: sql_help.c:3002 sql_help.c:3003 sql_help.c:3300 +#: sql_help.c:2995 sql_help.c:2996 sql_help.c:3293 msgid "statement" msgstr "sentencia" -#: sql_help.c:3034 sql_help.c:3274 +#: sql_help.c:3027 sql_help.c:3267 msgid "direction" msgstr "dirección" -#: sql_help.c:3036 sql_help.c:3276 +#: sql_help.c:3029 sql_help.c:3269 msgid "where direction can be empty or one of:" msgstr "donde dirección puede ser vacío o uno de:" -#: sql_help.c:3037 sql_help.c:3038 sql_help.c:3039 sql_help.c:3040 -#: sql_help.c:3041 sql_help.c:3277 sql_help.c:3278 sql_help.c:3279 -#: sql_help.c:3280 sql_help.c:3281 sql_help.c:3641 sql_help.c:3643 -#: sql_help.c:3731 sql_help.c:3733 sql_help.c:3880 sql_help.c:3882 -#: sql_help.c:4009 sql_help.c:4011 sql_help.c:4074 sql_help.c:4076 +#: sql_help.c:3030 sql_help.c:3031 sql_help.c:3032 sql_help.c:3033 +#: sql_help.c:3034 sql_help.c:3270 sql_help.c:3271 sql_help.c:3272 +#: sql_help.c:3273 sql_help.c:3274 sql_help.c:3634 sql_help.c:3636 +#: sql_help.c:3724 sql_help.c:3726 sql_help.c:3873 sql_help.c:3875 +#: sql_help.c:4002 sql_help.c:4004 sql_help.c:4067 sql_help.c:4069 msgid "count" msgstr "cantidad" -#: sql_help.c:3121 sql_help.c:3453 +#: sql_help.c:3114 sql_help.c:3446 msgid "sequence_name" msgstr "nombre_secuencia" -#: sql_help.c:3134 sql_help.c:3466 +#: sql_help.c:3127 sql_help.c:3459 msgid "arg_name" msgstr "nombre_arg" -#: sql_help.c:3135 sql_help.c:3467 +#: sql_help.c:3128 sql_help.c:3460 msgid "arg_type" msgstr "tipo_arg" -#: sql_help.c:3140 sql_help.c:3472 +#: sql_help.c:3133 sql_help.c:3465 msgid "loid" msgstr "loid" -#: sql_help.c:3163 +#: sql_help.c:3156 msgid "remote_schema" msgstr "schema_remoto" -#: sql_help.c:3166 +#: sql_help.c:3159 msgid "local_schema" msgstr "schema_local" -#: sql_help.c:3200 +#: sql_help.c:3193 msgid "conflict_target" msgstr "destino_de_conflict" -#: sql_help.c:3201 +#: sql_help.c:3194 msgid "conflict_action" msgstr "acción_de_conflict" -#: sql_help.c:3204 +#: sql_help.c:3197 msgid "where conflict_target can be one of:" msgstr "donde destino_de_conflict puede ser uno de:" -#: sql_help.c:3205 -#, fuzzy -#| msgid "new_column_name" +#: sql_help.c:3198 msgid "index_column_name" -msgstr "nuevo_nombre_de_columna" +msgstr "nombre_de_columna_de_índice" -#: sql_help.c:3206 -#, fuzzy -#| msgid "using_expression" +#: sql_help.c:3199 msgid "index_expression" -msgstr "expresión_using" +msgstr "expresión_de_índice" -#: sql_help.c:3209 +#: sql_help.c:3202 msgid "index_predicate" msgstr "predicado_de_índice" -#: sql_help.c:3211 +#: sql_help.c:3204 msgid "and conflict_action is one of:" msgstr "donde acción_de_conflict es una de:" -#: sql_help.c:3217 sql_help.c:3975 +#: sql_help.c:3210 sql_help.c:3968 msgid "sub-SELECT" msgstr "sub-SELECT" -#: sql_help.c:3226 sql_help.c:3289 sql_help.c:3951 +#: sql_help.c:3219 sql_help.c:3282 sql_help.c:3944 msgid "channel" msgstr "canal" -#: sql_help.c:3248 +#: sql_help.c:3241 msgid "lockmode" msgstr "modo_bloqueo" -#: sql_help.c:3249 +#: sql_help.c:3242 msgid "where lockmode is one of:" msgstr "donde modo_bloqueo es uno de:" -#: sql_help.c:3290 +#: sql_help.c:3283 msgid "payload" msgstr "carga" -#: sql_help.c:3317 +#: sql_help.c:3310 msgid "old_role" msgstr "rol_antiguo" -#: sql_help.c:3318 +#: sql_help.c:3311 msgid "new_role" msgstr "rol_nuevo" -#: sql_help.c:3343 sql_help.c:3504 sql_help.c:3512 +#: sql_help.c:3336 sql_help.c:3497 sql_help.c:3505 msgid "savepoint_name" msgstr "nombre_de_savepoint" -#: sql_help.c:3545 +#: sql_help.c:3538 msgid "provider" msgstr "proveedor" -#: sql_help.c:3632 sql_help.c:3674 sql_help.c:3676 sql_help.c:3722 -#: sql_help.c:3871 sql_help.c:3913 sql_help.c:3915 sql_help.c:4065 -#: sql_help.c:4107 sql_help.c:4109 +#: sql_help.c:3625 sql_help.c:3667 sql_help.c:3669 sql_help.c:3715 +#: sql_help.c:3864 sql_help.c:3906 sql_help.c:3908 sql_help.c:4058 +#: sql_help.c:4100 sql_help.c:4102 msgid "from_item" msgstr "item_de_from" -#: sql_help.c:3634 sql_help.c:3686 sql_help.c:3873 sql_help.c:3925 -#: sql_help.c:4067 sql_help.c:4119 +#: sql_help.c:3627 sql_help.c:3679 sql_help.c:3866 sql_help.c:3918 +#: sql_help.c:4060 sql_help.c:4112 msgid "grouping_element" msgstr "elemento_agrupante" -#: sql_help.c:3636 sql_help.c:3726 sql_help.c:3875 sql_help.c:4069 +#: sql_help.c:3629 sql_help.c:3719 sql_help.c:3868 sql_help.c:4062 msgid "window_name" msgstr "nombre_de_ventana" -#: sql_help.c:3637 sql_help.c:3727 sql_help.c:3876 sql_help.c:4070 +#: sql_help.c:3630 sql_help.c:3720 sql_help.c:3869 sql_help.c:4063 msgid "window_definition" msgstr "definición_de_ventana" -#: sql_help.c:3638 sql_help.c:3652 sql_help.c:3690 sql_help.c:3728 -#: sql_help.c:3877 sql_help.c:3891 sql_help.c:3929 sql_help.c:4071 -#: sql_help.c:4085 sql_help.c:4123 +#: sql_help.c:3631 sql_help.c:3645 sql_help.c:3683 sql_help.c:3721 +#: sql_help.c:3870 sql_help.c:3884 sql_help.c:3922 sql_help.c:4064 +#: sql_help.c:4078 sql_help.c:4116 msgid "select" msgstr "select" -#: sql_help.c:3645 sql_help.c:3884 sql_help.c:4078 +#: sql_help.c:3638 sql_help.c:3877 sql_help.c:4071 msgid "where from_item can be one of:" msgstr "donde item_de_from puede ser uno de:" -#: sql_help.c:3648 sql_help.c:3654 sql_help.c:3657 sql_help.c:3661 -#: sql_help.c:3673 sql_help.c:3887 sql_help.c:3893 sql_help.c:3896 -#: sql_help.c:3900 sql_help.c:3912 sql_help.c:4081 sql_help.c:4087 -#: sql_help.c:4090 sql_help.c:4094 sql_help.c:4106 +#: sql_help.c:3641 sql_help.c:3647 sql_help.c:3650 sql_help.c:3654 +#: sql_help.c:3666 sql_help.c:3880 sql_help.c:3886 sql_help.c:3889 +#: sql_help.c:3893 sql_help.c:3905 sql_help.c:4074 sql_help.c:4080 +#: sql_help.c:4083 sql_help.c:4087 sql_help.c:4099 msgid "column_alias" msgstr "alias_de_columna" -#: sql_help.c:3649 sql_help.c:3888 sql_help.c:4082 +#: sql_help.c:3642 sql_help.c:3881 sql_help.c:4075 msgid "sampling_method" msgstr "método_de_sampleo" -#: sql_help.c:3650 sql_help.c:3659 sql_help.c:3663 sql_help.c:3667 -#: sql_help.c:3670 sql_help.c:3889 sql_help.c:3898 sql_help.c:3902 -#: sql_help.c:3906 sql_help.c:3909 sql_help.c:4083 sql_help.c:4092 -#: sql_help.c:4096 sql_help.c:4100 sql_help.c:4103 +#: sql_help.c:3643 sql_help.c:3652 sql_help.c:3656 sql_help.c:3660 +#: sql_help.c:3663 sql_help.c:3882 sql_help.c:3891 sql_help.c:3895 +#: sql_help.c:3899 sql_help.c:3902 sql_help.c:4076 sql_help.c:4085 +#: sql_help.c:4089 sql_help.c:4093 sql_help.c:4096 msgid "argument" msgstr "argumento" -#: sql_help.c:3651 sql_help.c:3890 sql_help.c:4084 +#: sql_help.c:3644 sql_help.c:3883 sql_help.c:4077 msgid "seed" msgstr "semilla" -#: sql_help.c:3655 sql_help.c:3688 sql_help.c:3894 sql_help.c:3927 -#: sql_help.c:4088 sql_help.c:4121 +#: sql_help.c:3648 sql_help.c:3681 sql_help.c:3887 sql_help.c:3920 +#: sql_help.c:4081 sql_help.c:4114 msgid "with_query_name" msgstr "nombre_consulta_with" -#: sql_help.c:3665 sql_help.c:3668 sql_help.c:3671 sql_help.c:3904 -#: sql_help.c:3907 sql_help.c:3910 sql_help.c:4098 sql_help.c:4101 -#: sql_help.c:4104 +#: sql_help.c:3658 sql_help.c:3661 sql_help.c:3664 sql_help.c:3897 +#: sql_help.c:3900 sql_help.c:3903 sql_help.c:4091 sql_help.c:4094 +#: sql_help.c:4097 msgid "column_definition" msgstr "definición_de_columna" -#: sql_help.c:3675 sql_help.c:3914 sql_help.c:4108 +#: sql_help.c:3668 sql_help.c:3907 sql_help.c:4101 msgid "join_type" msgstr "tipo_de_join" -#: sql_help.c:3677 sql_help.c:3916 sql_help.c:4110 +#: sql_help.c:3670 sql_help.c:3909 sql_help.c:4103 msgid "join_condition" msgstr "condición_de_join" -#: sql_help.c:3678 sql_help.c:3917 sql_help.c:4111 +#: sql_help.c:3671 sql_help.c:3910 sql_help.c:4104 msgid "join_column" msgstr "columna_de_join" -#: sql_help.c:3679 sql_help.c:3918 sql_help.c:4112 +#: sql_help.c:3672 sql_help.c:3911 sql_help.c:4105 msgid "and grouping_element can be one of:" msgstr "donde elemento_agrupante puede ser una de:" -#: sql_help.c:3687 sql_help.c:3926 sql_help.c:4120 +#: sql_help.c:3680 sql_help.c:3919 sql_help.c:4113 msgid "and with_query is:" msgstr "y consulta_with es:" -#: sql_help.c:3691 sql_help.c:3930 sql_help.c:4124 +#: sql_help.c:3684 sql_help.c:3923 sql_help.c:4117 msgid "values" msgstr "valores" -#: sql_help.c:3692 sql_help.c:3931 sql_help.c:4125 +#: sql_help.c:3685 sql_help.c:3924 sql_help.c:4118 msgid "insert" msgstr "insert" -#: sql_help.c:3693 sql_help.c:3932 sql_help.c:4126 +#: sql_help.c:3686 sql_help.c:3925 sql_help.c:4119 msgid "update" msgstr "update" -#: sql_help.c:3694 sql_help.c:3933 sql_help.c:4127 +#: sql_help.c:3687 sql_help.c:3926 sql_help.c:4120 msgid "delete" msgstr "delete" -#: sql_help.c:3721 +#: sql_help.c:3714 msgid "new_table" msgstr "nueva_tabla" -#: sql_help.c:3746 +#: sql_help.c:3739 msgid "timezone" msgstr "huso_horario" -#: sql_help.c:3791 +#: sql_help.c:3784 msgid "snapshot_id" msgstr "id_de_snapshot" -#: sql_help.c:3976 +#: sql_help.c:3969 msgid "from_list" msgstr "lista_from" -#: sql_help.c:4007 +#: sql_help.c:4000 msgid "sort_expression" msgstr "expresión_orden" -#: sql_help.c:4134 sql_help.c:4874 +#: sql_help.c:4127 sql_help.c:4867 msgid "abort the current transaction" msgstr "aborta la transacción en curso" -#: sql_help.c:4139 +#: sql_help.c:4132 msgid "change the definition of an aggregate function" msgstr "cambia la definición de una función de agregación" -#: sql_help.c:4144 +#: sql_help.c:4137 msgid "change the definition of a collation" msgstr "cambia la definición de un ordenamiento" -#: sql_help.c:4149 +#: sql_help.c:4142 msgid "change the definition of a conversion" msgstr "cambia la definición de una conversión" -#: sql_help.c:4154 +#: sql_help.c:4147 msgid "change a database" msgstr "cambia una base de datos" -#: sql_help.c:4159 +#: sql_help.c:4152 msgid "define default access privileges" msgstr "define privilegios de acceso por omisión" -#: sql_help.c:4164 +#: sql_help.c:4157 msgid "change the definition of a domain" msgstr "cambia la definición de un dominio" -#: sql_help.c:4169 +#: sql_help.c:4162 msgid "change the definition of an event trigger" msgstr "cambia la definición de un disparador por evento" -#: sql_help.c:4174 +#: sql_help.c:4167 msgid "change the definition of an extension" msgstr "cambia la definición de una extensión" -#: sql_help.c:4179 +#: sql_help.c:4172 msgid "change the definition of a foreign-data wrapper" msgstr "cambia la definición de un conector de datos externos" -#: sql_help.c:4184 +#: sql_help.c:4177 msgid "change the definition of a foreign table" msgstr "cambia la definición de una tabla foránea" -#: sql_help.c:4189 +#: sql_help.c:4182 msgid "change the definition of a function" msgstr "cambia la definición de una función" -#: sql_help.c:4194 +#: sql_help.c:4187 msgid "change role name or membership" msgstr "cambiar nombre del rol o membresía" -#: sql_help.c:4199 +#: sql_help.c:4192 msgid "change the definition of an index" msgstr "cambia la definición de un índice" -#: sql_help.c:4204 +#: sql_help.c:4197 msgid "change the definition of a procedural language" msgstr "cambia la definición de un lenguaje procedural" -#: sql_help.c:4209 +#: sql_help.c:4202 msgid "change the definition of a large object" msgstr "cambia la definición de un objeto grande" -#: sql_help.c:4214 +#: sql_help.c:4207 msgid "change the definition of a materialized view" msgstr "cambia la definición de una vista materializada" -#: sql_help.c:4219 +#: sql_help.c:4212 msgid "change the definition of an operator" msgstr "cambia la definición de un operador" -#: sql_help.c:4224 +#: sql_help.c:4217 msgid "change the definition of an operator class" msgstr "cambia la definición de una clase de operadores" -#: sql_help.c:4229 +#: sql_help.c:4222 msgid "change the definition of an operator family" msgstr "cambia la definición de una familia de operadores" -#: sql_help.c:4234 -#, fuzzy -#| msgid "change the definition of a policy" +#: sql_help.c:4227 msgid "change the definition of a row level security policy" -msgstr "cambia la definición de una política" +msgstr "cambia la definición de una política de seguridad de registros" -#: sql_help.c:4239 sql_help.c:4309 +#: sql_help.c:4232 sql_help.c:4302 msgid "change a database role" msgstr "cambia un rol de la base de datos" -#: sql_help.c:4244 +#: sql_help.c:4237 msgid "change the definition of a rule" msgstr "cambia la definición de una regla" -#: sql_help.c:4249 +#: sql_help.c:4242 msgid "change the definition of a schema" msgstr "cambia la definición de un esquema" -#: sql_help.c:4254 +#: sql_help.c:4247 msgid "change the definition of a sequence generator" msgstr "cambia la definición de un generador secuencial" -#: sql_help.c:4259 +#: sql_help.c:4252 msgid "change the definition of a foreign server" msgstr "cambia la definición de un servidor foráneo" -#: sql_help.c:4264 +#: sql_help.c:4257 msgid "change a server configuration parameter" msgstr "cambia un parámetro de configuración del servidor" -#: sql_help.c:4269 +#: sql_help.c:4262 msgid "change the definition of a table" msgstr "cambia la definición de una tabla" -#: sql_help.c:4274 +#: sql_help.c:4267 msgid "change the definition of a tablespace" msgstr "cambia la definición de un tablespace" -#: sql_help.c:4279 +#: sql_help.c:4272 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:4284 +#: sql_help.c:4277 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:4289 +#: sql_help.c:4282 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:4294 +#: sql_help.c:4287 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:4299 +#: sql_help.c:4292 msgid "change the definition of a trigger" msgstr "cambia la definición de un disparador" -#: sql_help.c:4304 +#: sql_help.c:4297 msgid "change the definition of a type" msgstr "cambia la definición de un tipo" -#: sql_help.c:4314 +#: sql_help.c:4307 msgid "change the definition of a user mapping" msgstr "cambia la definición de un mapeo de usuario" -#: sql_help.c:4319 +#: sql_help.c:4312 msgid "change the definition of a view" msgstr "cambia la definición de una vista" -#: sql_help.c:4324 +#: sql_help.c:4317 msgid "collect statistics about a database" msgstr "recolecta estadísticas sobre una base de datos" -#: sql_help.c:4329 sql_help.c:4939 +#: sql_help.c:4322 sql_help.c:4932 msgid "start a transaction block" msgstr "inicia un bloque de transacción" -#: sql_help.c:4334 +#: sql_help.c:4327 msgid "force a transaction log checkpoint" msgstr "fuerza un checkpoint del registro de transacciones" -#: sql_help.c:4339 +#: sql_help.c:4332 msgid "close a cursor" msgstr "cierra un cursor" -#: sql_help.c:4344 +#: sql_help.c:4337 msgid "cluster a table according to an index" msgstr "reordena una tabla siguiendo un índice" -#: sql_help.c:4349 +#: sql_help.c:4342 msgid "define or change the comment of an object" msgstr "define o cambia un comentario sobre un objeto" -#: sql_help.c:4354 sql_help.c:4774 +#: sql_help.c:4347 sql_help.c:4767 msgid "commit the current transaction" msgstr "compromete la transacción en curso" -#: sql_help.c:4359 +#: sql_help.c:4352 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:4364 +#: sql_help.c:4357 msgid "copy data between a file and a table" msgstr "copia datos entre un archivo y una tabla" -#: sql_help.c:4369 -#, fuzzy -#| msgid "define a new cast" +#: sql_help.c:4362 msgid "define a new access method" -msgstr "define una nueva conversión de tipo" +msgstr "define un nuevo método de acceso" -#: sql_help.c:4374 +#: sql_help.c:4367 msgid "define a new aggregate function" msgstr "define una nueva función de agregación" -#: sql_help.c:4379 +#: sql_help.c:4372 msgid "define a new cast" msgstr "define una nueva conversión de tipo" -#: sql_help.c:4384 +#: sql_help.c:4377 msgid "define a new collation" msgstr "define un nuevo ordenamiento" -#: sql_help.c:4389 +#: sql_help.c:4382 msgid "define a new encoding conversion" msgstr "define una nueva conversión de codificación" -#: sql_help.c:4394 +#: sql_help.c:4387 msgid "create a new database" msgstr "crea una nueva base de datos" -#: sql_help.c:4399 +#: sql_help.c:4392 msgid "define a new domain" msgstr "define un nuevo dominio" -#: sql_help.c:4404 +#: sql_help.c:4397 msgid "define a new event trigger" msgstr "define un nuevo disparador por evento" -#: sql_help.c:4409 +#: sql_help.c:4402 msgid "install an extension" msgstr "instala una extensión" -#: sql_help.c:4414 +#: sql_help.c:4407 msgid "define a new foreign-data wrapper" msgstr "define un nuevo conector de datos externos" -#: sql_help.c:4419 +#: sql_help.c:4412 msgid "define a new foreign table" msgstr "define una nueva tabla foránea" -#: sql_help.c:4424 +#: sql_help.c:4417 msgid "define a new function" msgstr "define una nueva función" -#: sql_help.c:4429 sql_help.c:4469 sql_help.c:4544 +#: sql_help.c:4422 sql_help.c:4462 sql_help.c:4537 msgid "define a new database role" msgstr "define un nuevo rol de la base de datos" -#: sql_help.c:4434 +#: sql_help.c:4427 msgid "define a new index" msgstr "define un nuevo índice" -#: sql_help.c:4439 +#: sql_help.c:4432 msgid "define a new procedural language" msgstr "define un nuevo lenguaje procedural" -#: sql_help.c:4444 +#: sql_help.c:4437 msgid "define a new materialized view" msgstr "define una nueva vista materializada" -#: sql_help.c:4449 +#: sql_help.c:4442 msgid "define a new operator" msgstr "define un nuevo operador" -#: sql_help.c:4454 +#: sql_help.c:4447 msgid "define a new operator class" msgstr "define una nueva clase de operadores" -#: sql_help.c:4459 +#: sql_help.c:4452 msgid "define a new operator family" msgstr "define una nueva familia de operadores" -#: sql_help.c:4464 -#, fuzzy -#| msgid "define a new policy for a table" +#: sql_help.c:4457 msgid "define a new row level security policy for a table" -msgstr "define una nueva política para una tabla" +msgstr "define una nueva política de seguridad de registros para una tabla" -#: sql_help.c:4474 +#: sql_help.c:4467 msgid "define a new rewrite rule" msgstr "define una nueva regla de reescritura" -#: sql_help.c:4479 +#: sql_help.c:4472 msgid "define a new schema" msgstr "define un nuevo schema" -#: sql_help.c:4484 +#: sql_help.c:4477 msgid "define a new sequence generator" msgstr "define un nuevo generador secuencial" -#: sql_help.c:4489 +#: sql_help.c:4482 msgid "define a new foreign server" msgstr "define un nuevo servidor foráneo" -#: sql_help.c:4494 +#: sql_help.c:4487 msgid "define a new table" msgstr "define una nueva tabla" -#: sql_help.c:4499 sql_help.c:4904 +#: sql_help.c:4492 sql_help.c:4897 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:4504 +#: sql_help.c:4497 msgid "define a new tablespace" msgstr "define un nuevo tablespace" -#: sql_help.c:4509 +#: sql_help.c:4502 msgid "define a new text search configuration" msgstr "define una nueva configuración de búsqueda en texto" -#: sql_help.c:4514 +#: sql_help.c:4507 msgid "define a new text search dictionary" msgstr "define un nuevo diccionario de búsqueda en texto" -#: sql_help.c:4519 +#: sql_help.c:4512 msgid "define a new text search parser" msgstr "define un nuevo analizador de búsqueda en texto" -#: sql_help.c:4524 +#: sql_help.c:4517 msgid "define a new text search template" msgstr "define una nueva plantilla de búsqueda en texto" -#: sql_help.c:4529 +#: sql_help.c:4522 msgid "define a new transform" msgstr "define una nueva transformación" -#: sql_help.c:4534 +#: sql_help.c:4527 msgid "define a new trigger" msgstr "define un nuevo disparador" -#: sql_help.c:4539 +#: sql_help.c:4532 msgid "define a new data type" msgstr "define un nuevo tipo de datos" -#: sql_help.c:4549 +#: sql_help.c:4542 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:4554 +#: sql_help.c:4547 msgid "define a new view" msgstr "define una nueva vista" -#: sql_help.c:4559 +#: sql_help.c:4552 msgid "deallocate a prepared statement" msgstr "elimina una sentencia preparada" -#: sql_help.c:4564 +#: sql_help.c:4557 msgid "define a cursor" msgstr "define un nuevo cursor" -#: sql_help.c:4569 +#: sql_help.c:4562 msgid "delete rows of a table" msgstr "elimina filas de una tabla" -#: sql_help.c:4574 +#: sql_help.c:4567 msgid "discard session state" msgstr "descartar datos de la sesión" -#: sql_help.c:4579 +#: sql_help.c:4572 msgid "execute an anonymous code block" msgstr "ejecutar un bloque anónimo de código" -#: sql_help.c:4584 -#, fuzzy -#| msgid "remove a cast" +#: sql_help.c:4577 msgid "remove an access method" -msgstr "elimina una conversión de tipo" +msgstr "elimina un método de acceso" -#: sql_help.c:4589 +#: sql_help.c:4582 msgid "remove an aggregate function" msgstr "elimina una función de agregación" -#: sql_help.c:4594 +#: sql_help.c:4587 msgid "remove a cast" msgstr "elimina una conversión de tipo" -#: sql_help.c:4599 +#: sql_help.c:4592 msgid "remove a collation" msgstr "elimina un ordenamiento" -#: sql_help.c:4604 +#: sql_help.c:4597 msgid "remove a conversion" msgstr "elimina una conversión de codificación" -#: sql_help.c:4609 +#: sql_help.c:4602 msgid "remove a database" msgstr "elimina una base de datos" -#: sql_help.c:4614 +#: sql_help.c:4607 msgid "remove a domain" msgstr "elimina un dominio" -#: sql_help.c:4619 +#: sql_help.c:4612 msgid "remove an event trigger" msgstr "elimina un disparador por evento" -#: sql_help.c:4624 +#: sql_help.c:4617 msgid "remove an extension" msgstr "elimina una extensión" -#: sql_help.c:4629 +#: sql_help.c:4622 msgid "remove a foreign-data wrapper" msgstr "elimina un conector de datos externos" -#: sql_help.c:4634 +#: sql_help.c:4627 msgid "remove a foreign table" msgstr "elimina una tabla foránea" -#: sql_help.c:4639 +#: sql_help.c:4632 msgid "remove a function" msgstr "elimina una función" -#: sql_help.c:4644 sql_help.c:4689 sql_help.c:4759 +#: sql_help.c:4637 sql_help.c:4682 sql_help.c:4752 msgid "remove a database role" msgstr "elimina un rol de base de datos" -#: sql_help.c:4649 +#: sql_help.c:4642 msgid "remove an index" msgstr "elimina un índice" -#: sql_help.c:4654 +#: sql_help.c:4647 msgid "remove a procedural language" msgstr "elimina un lenguaje procedural" -#: sql_help.c:4659 +#: sql_help.c:4652 msgid "remove a materialized view" msgstr "elimina una vista materializada" -#: sql_help.c:4664 +#: sql_help.c:4657 msgid "remove an operator" msgstr "elimina un operador" -#: sql_help.c:4669 +#: sql_help.c:4662 msgid "remove an operator class" msgstr "elimina una clase de operadores" -#: sql_help.c:4674 +#: sql_help.c:4667 msgid "remove an operator family" msgstr "elimina una familia de operadores" -#: sql_help.c:4679 +#: sql_help.c:4672 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:4684 -#, fuzzy -#| msgid "remove a policy from a table" +#: sql_help.c:4677 msgid "remove a row level security policy from a table" -msgstr "elimina una política de una tabla" +msgstr "elimina una política de seguridad de registros de una tabla" -#: sql_help.c:4694 +#: sql_help.c:4687 msgid "remove a rewrite rule" msgstr "elimina una regla de reescritura" -#: sql_help.c:4699 +#: sql_help.c:4692 msgid "remove a schema" msgstr "elimina un schema" -#: sql_help.c:4704 +#: sql_help.c:4697 msgid "remove a sequence" msgstr "elimina un generador secuencial" -#: sql_help.c:4709 +#: sql_help.c:4702 msgid "remove a foreign server descriptor" msgstr "elimina un descriptor de servidor foráneo" -#: sql_help.c:4714 +#: sql_help.c:4707 msgid "remove a table" msgstr "elimina una tabla" -#: sql_help.c:4719 +#: sql_help.c:4712 msgid "remove a tablespace" msgstr "elimina un tablespace" -#: sql_help.c:4724 +#: sql_help.c:4717 msgid "remove a text search configuration" msgstr "elimina una configuración de búsqueda en texto" -#: sql_help.c:4729 +#: sql_help.c:4722 msgid "remove a text search dictionary" msgstr "elimina un diccionario de búsqueda en texto" -#: sql_help.c:4734 +#: sql_help.c:4727 msgid "remove a text search parser" msgstr "elimina un analizador de búsqueda en texto" -#: sql_help.c:4739 +#: sql_help.c:4732 msgid "remove a text search template" msgstr "elimina una plantilla de búsqueda en texto" -#: sql_help.c:4744 +#: sql_help.c:4737 msgid "remove a transform" msgstr "elimina una transformación" -#: sql_help.c:4749 +#: sql_help.c:4742 msgid "remove a trigger" msgstr "elimina un disparador" -#: sql_help.c:4754 +#: sql_help.c:4747 msgid "remove a data type" msgstr "elimina un tipo de datos" -#: sql_help.c:4764 +#: sql_help.c:4757 msgid "remove a user mapping for a foreign server" msgstr "elimina un mapeo de usuario para un servidor remoto" -#: sql_help.c:4769 +#: sql_help.c:4762 msgid "remove a view" msgstr "elimina una vista" -#: sql_help.c:4779 +#: sql_help.c:4772 msgid "execute a prepared statement" msgstr "ejecuta una sentencia preparada" -#: sql_help.c:4784 +#: sql_help.c:4777 msgid "show the execution plan of a statement" msgstr "muestra el plan de ejecución de una sentencia" -#: sql_help.c:4789 +#: sql_help.c:4782 msgid "retrieve rows from a query using a cursor" msgstr "recupera filas de una consulta usando un cursor" -#: sql_help.c:4794 +#: sql_help.c:4787 msgid "define access privileges" msgstr "define privilegios de acceso" -#: sql_help.c:4799 +#: sql_help.c:4792 msgid "import table definitions from a foreign server" msgstr "importa definiciones de tablas desde un servidor foráneo" -#: sql_help.c:4804 +#: sql_help.c:4797 msgid "create new rows in a table" msgstr "crea nuevas filas en una tabla" -#: sql_help.c:4809 +#: sql_help.c:4802 msgid "listen for a notification" msgstr "escucha notificaciones" -#: sql_help.c:4814 +#: sql_help.c:4807 msgid "load a shared library file" msgstr "carga un archivo de biblioteca compartida" -#: sql_help.c:4819 +#: sql_help.c:4812 msgid "lock a table" msgstr "bloquea una tabla" -#: sql_help.c:4824 +#: sql_help.c:4817 msgid "position a cursor" msgstr "reposiciona un cursor" -#: sql_help.c:4829 +#: sql_help.c:4822 msgid "generate a notification" msgstr "genera una notificación" -#: sql_help.c:4834 +#: sql_help.c:4827 msgid "prepare a statement for execution" msgstr "prepara una sentencia para ejecución" -#: sql_help.c:4839 +#: sql_help.c:4832 msgid "prepare the current transaction for two-phase commit" msgstr "prepara la transacción actual para two-phase commit" -#: sql_help.c:4844 +#: sql_help.c:4837 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:4849 +#: sql_help.c:4842 msgid "replace the contents of a materialized view" msgstr "reemplaza los contenidos de una vista materializada" -#: sql_help.c:4854 +#: sql_help.c:4847 msgid "rebuild indexes" msgstr "reconstruye índices" -#: sql_help.c:4859 +#: sql_help.c:4852 msgid "destroy a previously defined savepoint" msgstr "destruye un savepoint previamente definido" -#: sql_help.c:4864 +#: sql_help.c:4857 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:4869 +#: sql_help.c:4862 msgid "remove access privileges" msgstr "revoca privilegios de acceso" -#: sql_help.c:4879 +#: sql_help.c:4872 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:4884 +#: sql_help.c:4877 msgid "roll back to a savepoint" msgstr "descartar hacia un savepoint" -#: sql_help.c:4889 +#: sql_help.c:4882 msgid "define a new savepoint within the current transaction" msgstr "define un nuevo savepoint en la transacción en curso" -#: sql_help.c:4894 +#: sql_help.c:4887 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:4899 sql_help.c:4944 sql_help.c:4974 +#: sql_help.c:4892 sql_help.c:4937 sql_help.c:4967 msgid "retrieve rows from a table or view" msgstr "recupera filas desde una tabla o vista" -#: sql_help.c:4909 +#: sql_help.c:4902 msgid "change a run-time parameter" msgstr "cambia un parámetro de configuración" -#: sql_help.c:4914 +#: sql_help.c:4907 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:4919 +#: sql_help.c:4912 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:4924 +#: sql_help.c:4917 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:4929 +#: sql_help.c:4922 msgid "set the characteristics of the current transaction" msgstr "define las características de la transacción en curso" -#: sql_help.c:4934 +#: sql_help.c:4927 msgid "show the value of a run-time parameter" msgstr "muestra el valor de un parámetro de configuración" -#: sql_help.c:4949 +#: sql_help.c:4942 msgid "empty a table or set of tables" msgstr "vacía una tabla o conjunto de tablas" -#: sql_help.c:4954 +#: sql_help.c:4947 msgid "stop listening for a notification" msgstr "deja de escuchar una notificación" -#: sql_help.c:4959 +#: sql_help.c:4952 msgid "update rows of a table" msgstr "actualiza filas de una tabla" -#: sql_help.c:4964 +#: sql_help.c:4957 msgid "garbage-collect and optionally analyze a database" msgstr "recolecta basura y opcionalmente estadísticas sobre una base de datos" -#: sql_help.c:4969 +#: sql_help.c:4962 msgid "compute a set of rows" msgstr "calcula un conjunto de registros" @@ -5357,7 +5350,7 @@ msgstr "%s: no se pudo encontrar el ejecutable propio\n" msgid "unrecognized value \"%s\" for \"%s\"; assuming \"%s\"\n" msgstr "valor «%s» no reconocido para «%s»; asumiendo «%s»\n" -#: tab-complete.c:3682 +#: tab-complete.c:3742 #, c-format msgid "" "tab completion query failed: %s\n" @@ -5367,31 +5360,3 @@ msgstr "" "la consulta para completación por tabulador falló: %s\n" "La consulta era:\n" "%s\n" - -#~ msgid "SSL connection (unknown cipher)\n" -#~ msgstr "conexión SSL (cifrado desconocido)\n" - -#~ msgid "(No rows)\n" -#~ msgstr "(Sin filas)\n" - -#~ msgid "expression_index" -#~ msgstr "expresión_índice" - -#~ msgid "column_name_index" -#~ msgstr "nombre_de_columna_en_índice" - -#~ msgid " unicode_column_linestyle\n" -#~ msgstr " unicode_column_linestyle\n" - -#~ msgid " unicode_border_linestyle\n" -#~ msgstr " unicode_border_linestyle\n" - -#~ msgid "" -#~ "\n" -#~ "Display influencing variables:\n" -#~ msgstr "" -#~ "\n" -#~ "Variables que influencian el despliegue:\n" - -#~ msgid "Watch every %lds\t%s" -#~ msgstr "Ejecución cada %lds\t%s" diff --git a/src/bin/psql/po/fr.po b/src/bin/psql/po/fr.po index e83a011b59..de5db3b0b1 100644 --- a/src/bin/psql/po/fr.po +++ b/src/bin/psql/po/fr.po @@ -1,7 +1,7 @@ # translation of psql.po to fr_fr # french message translation file for psql # -# Use these quotes: « %s » +# Use these quotes: « %s » # Peter Eisentraut , 2001. # Guillaume Lelarge , 2003-2009. # @@ -9,58 +9,58 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-23 20:13+0000\n" -"PO-Revision-Date: 2016-09-24 18:22+0200\n" +"POT-Creation-Date: 2017-06-30 16:23+0000\n" +"PO-Revision-Date: 2017-07-02 17:13+0200\n" "Last-Translator: Guillaume Lelarge \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-15\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 1.8.7\n" +"X-Generator: Poedit 1.8.12\n" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, c-format msgid "could not identify current directory: %s" -msgstr "n'a pas pu identifier le répertoire courant : %s" +msgstr "n'a pas pu identifier le répertoire courant : %s" #: ../../common/exec.c:146 #, c-format msgid "invalid binary \"%s\"" -msgstr "binaire « %s » invalide" +msgstr "binaire « %s » invalide" #: ../../common/exec.c:195 #, c-format msgid "could not read binary \"%s\"" -msgstr "n'a pas pu lire le binaire « %s »" +msgstr "n'a pas pu lire le binaire « %s »" #: ../../common/exec.c:202 #, c-format msgid "could not find a \"%s\" to execute" -msgstr "n'a pas pu trouver un « %s » à exécuter" +msgstr "n'a pas pu trouver un « %s » à exécuter" #: ../../common/exec.c:257 ../../common/exec.c:293 #, c-format msgid "could not change directory to \"%s\": %s" -msgstr "n'a pas pu changer le répertoire par « %s » : %s" +msgstr "n'a pas pu changer le répertoire par « %s » : %s" #: ../../common/exec.c:272 #, c-format msgid "could not read symbolic link \"%s\"" -msgstr "n'a pas pu lire le lien symbolique « %s »" +msgstr "n'a pas pu lire le lien symbolique « %s »" #: ../../common/exec.c:523 #, c-format msgid "pclose failed: %s" -msgstr "échec de pclose : %s" +msgstr "échec de pclose : %s" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 #: ../../common/fe_memutils.c:98 command.c:342 input.c:227 mainloop.c:80 #: mainloop.c:261 #, c-format msgid "out of memory\n" -msgstr "mémoire épuisée\n" +msgstr "mémoire épuisée\n" #: ../../common/fe_memutils.c:92 #, c-format @@ -70,7 +70,7 @@ msgstr "ne peut pas dupliquer un pointeur nul (erreur interne)\n" #: ../../common/username.c:45 #, 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" +msgstr "n'a pas pu trouver l'identifiant réel %ld de l'utilisateur : %s" #: ../../common/username.c:47 command.c:299 msgid "user does not exist" @@ -79,12 +79,12 @@ msgstr "l'utilisateur n'existe pas" #: ../../common/username.c:62 #, c-format msgid "user name lookup failure: error code %lu" -msgstr "échec de la recherche du nom d'utilisateur : code erreur %lu" +msgstr "échec de la recherche du nom d'utilisateur : code erreur %lu" #: ../../common/wait_error.c:47 #, c-format msgid "command not executable" -msgstr "commande non exécutable" +msgstr "commande non exécutable" #: ../../common/wait_error.c:51 #, c-format @@ -94,27 +94,27 @@ msgstr "commande introuvable" #: ../../common/wait_error.c:56 #, c-format msgid "child process exited with exit code %d" -msgstr "le processus fils a quitté avec le code de sortie %d" +msgstr "le processus fils a quitté avec le code de sortie %d" #: ../../common/wait_error.c:63 #, c-format msgid "child process was terminated by exception 0x%X" -msgstr "le processus fils a été terminé par l'exception 0x%X" +msgstr "le processus fils a été terminé par l'exception 0x%X" #: ../../common/wait_error.c:73 #, c-format msgid "child process was terminated by signal %s" -msgstr "le processus fils a été terminé par le signal %s" +msgstr "le processus fils a été terminé par le signal %s" #: ../../common/wait_error.c:77 #, c-format msgid "child process was terminated by signal %d" -msgstr "le processus fils a été terminé par le signal %d" +msgstr "le processus fils a été terminé par le signal %d" #: ../../common/wait_error.c:82 #, c-format msgid "child process exited with unrecognized status %d" -msgstr "le processus fils a quitté avec un statut %d non reconnu" +msgstr "le processus fils a quitté avec un statut %d non reconnu" #: ../../fe_utils/print.c:354 #, c-format @@ -123,26 +123,26 @@ msgid_plural "(%lu rows)" msgstr[0] "(%lu ligne)" msgstr[1] "(%lu lignes)" -#: ../../fe_utils/print.c:2906 +#: ../../fe_utils/print.c:2914 #, c-format msgid "Interrupted\n" msgstr "Interrompu\n" -#: ../../fe_utils/print.c:2970 +#: ../../fe_utils/print.c:2978 #, 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" +"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:3010 +#: ../../fe_utils/print.c:3018 #, 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" +"cellules %d est dépassé.\n" -#: ../../fe_utils/print.c:3259 +#: ../../fe_utils/print.c:3267 #, c-format msgid "invalid output format (internal error): %d" msgstr "format de sortie invalide (erreur interne) : %d" @@ -150,12 +150,12 @@ msgstr "format de sortie invalide (erreur interne) : %d" #: ../../fe_utils/psqlscan.l:713 #, c-format msgid "skipping recursive expansion of variable \"%s\"\n" -msgstr "ignore l'expansion récursive de la variable « %s »\n" +msgstr "ignore l'expansion récursive de la variable « %s »\n" #: command.c:129 #, c-format msgid "Invalid command \\%s. Try \\? for help.\n" -msgstr "Commande \\%s invalide. Essayez \\? pour l'aide-mémoire.\n" +msgstr "Commande \\%s invalide. Essayez \\? pour l'aide-mémoire.\n" #: command.c:131 #, c-format @@ -165,47 +165,47 @@ msgstr "commande \\%s invalide\n" #: command.c:142 #, c-format msgid "\\%s: extra argument \"%s\" ignored\n" -msgstr "\\%s : argument « %s » supplémentaire ignoré\n" +msgstr "\\%s : argument « %s » supplémentaire ignoré\n" #: command.c:297 #, c-format msgid "could not get home directory for user ID %ld: %s\n" -msgstr "n'a pas pu obtenir le répertoire principal pour l'identifiant d'utilisateur %ld : %s\n" +msgstr "n'a pas pu obtenir le répertoire principal pour l'identifiant d'utilisateur %ld : %s\n" #: command.c:315 #, c-format msgid "\\%s: could not change directory to \"%s\": %s\n" -msgstr "\\%s : n'a pas pu accéder au répertoire « %s » : %s\n" +msgstr "\\%s : n'a pas pu accéder au répertoire « %s » : %s\n" #: command.c:330 common.c:553 common.c:611 common.c:1144 #, c-format msgid "You are currently not connected to a database.\n" -msgstr "Vous n'êtes pas connecté à une base de données.\n" +msgstr "Vous n'êtes pas connecté à une base de données.\n" #: command.c:355 #, 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" +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:358 #, 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" +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:574 command.c:647 command.c:746 command.c:1584 #, c-format msgid "no query buffer\n" -msgstr "aucun tampon de requête\n" +msgstr "aucun tampon de requête\n" #: command.c:607 command.c:3547 #, c-format msgid "invalid line number: %s\n" -msgstr "numéro de ligne invalide : %s\n" +msgstr "numéro de ligne invalide : %s\n" #: command.c:640 #, c-format msgid "The server (version %s) does not support editing function source.\n" -msgstr "Le serveur (version %s) ne supporte pas l'édition du code de la fonction.\n" +msgstr "Le serveur (version %s) ne supporte pas l'édition du code de la fonction.\n" #: command.c:721 command.c:792 msgid "No changes" @@ -214,15 +214,15 @@ msgstr "Aucun changement" #: command.c:739 #, c-format msgid "The server (version %s) does not support editing view definitions.\n" -msgstr "Le serveur (version %s) ne supporte pas l'édition des définitions de vue.\n" +msgstr "Le serveur (version %s) ne supporte pas l'édition des définitions de vue.\n" #: command.c:846 #, c-format msgid "%s: invalid encoding name or conversion procedure not found\n" -msgstr "%s : nom d'encodage invalide ou procédure de conversion introuvable\n" +msgstr "%s : nom d'encodage invalide ou procédure de conversion introuvable\n" #: command.c:871 command.c:1962 command.c:3649 common.c:153 common.c:200 -#: common.c:497 common.c:1190 common.c:1218 common.c:1319 copy.c:489 copy.c:699 +#: common.c:497 common.c:1190 common.c:1218 common.c:1319 copy.c:489 copy.c:709 #: large_obj.c:156 large_obj.c:191 large_obj.c:253 #, c-format msgid "%s" @@ -230,11 +230,11 @@ msgstr "%s" #: command.c:875 msgid "out of memory" -msgstr "mémoire épuisée" +msgstr "mémoire épuisée" #: command.c:878 msgid "There is no previous error." -msgstr "Il n'y a pas d'erreur précédente." +msgstr "Il n'y a pas d'erreur précédente." #: command.c:972 command.c:1022 command.c:1036 command.c:1053 command.c:1160 #: command.c:1324 command.c:1564 command.c:1595 @@ -244,7 +244,7 @@ msgstr "\\%s : argument requis manquant\n" #: command.c:1085 msgid "Query buffer is empty." -msgstr "Le tampon de requête est vide." +msgstr "Le tampon de requête est vide." #: command.c:1095 msgid "Enter new password: " @@ -252,7 +252,7 @@ msgstr "Saisissez le nouveau mot de passe : " #: command.c:1096 msgid "Enter it again: " -msgstr "Saisissez-le à nouveau : " +msgstr "Saisissez-le à nouveau : " #: command.c:1100 #, c-format @@ -262,7 +262,7 @@ msgstr "Les mots de passe ne sont pas identiques.\n" #: command.c:1118 #, c-format msgid "Password encryption failed.\n" -msgstr "Échec du chiffrement du mot de passe.\n" +msgstr "Échec du chiffrement du mot de passe.\n" #: command.c:1189 command.c:1305 command.c:1569 #, c-format @@ -271,17 +271,17 @@ msgstr "\\%s : erreur lors de l'initialisation de la variable\n" #: command.c:1252 msgid "Query buffer reset (cleared)." -msgstr "Le tampon de requête a été effacé." +msgstr "Le tampon de requête a été effacé." #: command.c:1264 #, c-format msgid "Wrote history to file \"%s\".\n" -msgstr "Historique sauvegardé dans le fichier « %s ».\n" +msgstr "Historique sauvegardé dans le fichier « %s ».\n" #: command.c:1329 #, c-format msgid "\\%s: environment variable name must not contain \"=\"\n" -msgstr "\\%s : le nom de la variable d'environnement ne doit pas contenir « = »\n" +msgstr "\\%s : le nom de la variable d'environnement ne doit pas contenir « = »\n" #: command.c:1373 #, c-format @@ -296,7 +296,7 @@ msgstr "le nom de la fonction est requis\n" #: command.c:1455 #, c-format msgid "The server (version %s) does not support showing view definitions.\n" -msgstr "Le serveur (version %s) ne supporte pas l'affichage des définitions de vues.\n" +msgstr "Le serveur (version %s) ne supporte pas l'affichage des définitions de vues.\n" #: command.c:1462 #, c-format @@ -305,11 +305,11 @@ msgstr "le nom de la vue est requis\n" #: command.c:1549 msgid "Timing is on." -msgstr "Chronométrage activé." +msgstr "Chronométrage activé." #: command.c:1551 msgid "Timing is off." -msgstr "Chronométrage désactivé." +msgstr "Chronométrage désactivé." #: command.c:1613 command.c:1633 command.c:2311 command.c:2314 command.c:2317 #: command.c:2323 command.c:2325 command.c:2333 command.c:2343 command.c:2352 @@ -338,13 +338,13 @@ msgstr "Mot de passe pour l'utilisateur %s : " #, c-format msgid "All connection parameters must be supplied because no database connection exists\n" msgstr "" -"Tous les paramètres de connexions doivent être fournis car il n'y a pas de connexion\n" -"à une base de données existante.\n" +"Tous les paramètres de connexions doivent être fournis car il n'y a pas de connexion\n" +"à une base de données existante.\n" #: command.c:1966 #, c-format msgid "Previous connection kept\n" -msgstr "Connexion précédente conservée\n" +msgstr "Connexion précédente conservée\n" #: command.c:1970 #, c-format @@ -354,17 +354,17 @@ msgstr "\\connect : %s" #: command.c:2006 #, 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" +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:2009 #, 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" +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:2013 #, 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" +msgstr "Vous êtes maintenant connecté à la base de données « %s » en tant qu'utilisateur « %s ».\n" #: command.c:2046 #, c-format @@ -378,7 +378,7 @@ msgid "" " 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" +" Certaines fonctionnalités de psql pourraient ne pas fonctionner.\n" #: command.c:2091 #, c-format @@ -391,11 +391,11 @@ msgstr "inconnu" #: command.c:2095 help.c:46 msgid "off" -msgstr "désactivé" +msgstr "désactivé" #: command.c:2095 help.c:46 msgid "on" -msgstr "activé" +msgstr "activé" #: command.c:2115 #, c-format @@ -404,64 +404,64 @@ msgid "" " 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" +"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:2200 #, c-format msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number\n" msgstr "" -"la variable d'environnement EDITOR_LINENUMBER_SWITCH doit être configurée\n" -"pour spécifier un numéro de ligne\n" +"la variable d'environnement EDITOR_LINENUMBER_SWITCH doit être configurée\n" +"pour spécifier un numéro de ligne\n" #: command.c:2229 #, c-format msgid "could not start editor \"%s\"\n" -msgstr "n'a pas pu exécuter l'éditeur « %s »\n" +msgstr "n'a pas pu exécuter l'éditeur « %s »\n" #: command.c:2231 #, c-format msgid "could not start /bin/sh\n" -msgstr "n'a pas pu exécuter /bin/sh\n" +msgstr "n'a pas pu exécuter /bin/sh\n" #: command.c:2269 #, c-format msgid "could not locate temporary directory: %s\n" -msgstr "n'a pas pu localiser le répertoire temporaire : %s\n" +msgstr "n'a pas pu localiser le répertoire temporaire : %s\n" #: command.c:2296 #, c-format msgid "could not open temporary file \"%s\": %s\n" -msgstr "n'a pas pu ouvrir le fichier temporaire « %s » : %s\n" +msgstr "n'a pas pu ouvrir le fichier temporaire « %s » : %s\n" #: command.c:2570 #, c-format msgid "\\pset: allowed formats are unaligned, aligned, wrapped, html, asciidoc, latex, latex-longtable, troff-ms\n" msgstr "" -"\\pset : les formats autorisés sont unaligned, aligned, wrapped, html, asciidoc, latex,\n" +"\\pset : les formats autorisés sont unaligned, aligned, wrapped, html, asciidoc, latex,\n" "latex-longtable, troff-ms\n" #: command.c:2589 #, c-format msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" -msgstr "\\pset: les styles de lignes autorisés sont ascii, old-ascii, unicode\n" +msgstr "\\pset: les styles de lignes autorisés sont ascii, old-ascii, unicode\n" #: command.c:2605 #, c-format msgid "\\pset: allowed Unicode border line styles are single, double\n" -msgstr "\\pset : les styles autorisés de ligne de bordure Unicode sont single, double\n" +msgstr "\\pset : les styles autorisés de ligne de bordure Unicode sont single, double\n" #: command.c:2620 #, c-format msgid "\\pset: allowed Unicode column line styles are single, double\n" -msgstr "\\pset : les styles autorisés pour la ligne de colonne Unicode sont single, double\n" +msgstr "\\pset : les styles autorisés pour la ligne de colonne Unicode sont single, double\n" #: command.c:2635 #, c-format msgid "\\pset: allowed Unicode header line styles are single, double\n" -msgstr "\\pset : les styles autorisés pour la ligne d'en-tête Unicode sont single, double\n" +msgstr "\\pset : les styles autorisés pour la ligne d'en-tête Unicode sont single, double\n" #: command.c:2787 command.c:2966 #, c-format @@ -476,7 +476,7 @@ msgstr "Le style de bordure est %d.\n" #: command.c:2811 #, c-format msgid "Target width is unset.\n" -msgstr "La largeur cible n'est pas configuré.\n" +msgstr "La largeur cible n'est pas configuré.\n" #: command.c:2813 #, c-format @@ -486,37 +486,37 @@ msgstr "La largeur cible est %d.\n" #: command.c:2820 #, c-format msgid "Expanded display is on.\n" -msgstr "Affichage étendu activé.\n" +msgstr "Affichage étendu activé.\n" #: command.c:2822 #, c-format msgid "Expanded display is used automatically.\n" -msgstr "L'affichage étendu est utilisé automatiquement.\n" +msgstr "L'affichage étendu est utilisé automatiquement.\n" #: command.c:2824 #, c-format msgid "Expanded display is off.\n" -msgstr "Affichage étendu désactivé.\n" +msgstr "Affichage étendu désactivé.\n" #: command.c:2831 command.c:2839 #, c-format msgid "Field separator is zero byte.\n" -msgstr "Le séparateur de champs est l'octet zéro.\n" +msgstr "Le séparateur de champs est l'octet zéro.\n" #: command.c:2833 #, c-format msgid "Field separator is \"%s\".\n" -msgstr "Le séparateur de champs est « %s ».\n" +msgstr "Le séparateur de champs est « %s ».\n" #: command.c:2846 #, c-format msgid "Default footer is on.\n" -msgstr "Le bas de page pas défaut est activé.\n" +msgstr "Le bas de page pas défaut est activé.\n" #: command.c:2848 #, c-format msgid "Default footer is off.\n" -msgstr "Le bas de page par défaut est désactivé.\n" +msgstr "Le bas de page par défaut est désactivé.\n" #: command.c:2854 #, c-format @@ -531,109 +531,109 @@ msgstr "Le style de ligne est %s.\n" #: command.c:2867 #, c-format msgid "Null display is \"%s\".\n" -msgstr "L'affichage de null est « %s ».\n" +msgstr "L'affichage de null est « %s ».\n" #: command.c:2875 #, 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" +msgstr "L'affichage de la sortie numérique adaptée à la locale est activé.\n" #: command.c:2877 #, 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" +msgstr "L'affichage de la sortie numérique adaptée à la locale est désactivé.\n" #: command.c:2884 #, c-format msgid "Pager is used for long output.\n" -msgstr "Le paginateur est utilisé pour les affichages longs.\n" +msgstr "Le paginateur est utilisé pour les affichages longs.\n" #: command.c:2886 #, c-format msgid "Pager is always used.\n" -msgstr "Le paginateur est toujours utilisé.\n" +msgstr "Le paginateur est toujours utilisé.\n" #: command.c:2888 #, c-format msgid "Pager usage is off.\n" -msgstr "L'utilisation du paginateur est désactivé.\n" +msgstr "L'utilisation du paginateur est désactivé.\n" #: command.c:2894 #, 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" +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:2904 command.c:2914 #, c-format msgid "Record separator is zero byte.\n" -msgstr "Le séparateur d'enregistrements est l'octet zéro.\n" +msgstr "Le séparateur d'enregistrements est l'octet zéro.\n" #: command.c:2906 #, c-format msgid "Record separator is .\n" -msgstr "Le séparateur d'enregistrement est .\n" +msgstr "Le séparateur d'enregistrement est .\n" #: command.c:2908 #, c-format msgid "Record separator is \"%s\".\n" -msgstr "Le séparateur d'enregistrements est « %s ».\n" +msgstr "Le séparateur d'enregistrements est « %s ».\n" #: command.c:2921 #, c-format msgid "Table attributes are \"%s\".\n" -msgstr "Les attributs de la table sont « %s ».\n" +msgstr "Les attributs de la table sont « %s ».\n" #: command.c:2924 #, c-format msgid "Table attributes unset.\n" -msgstr "Les attributs de la table ne sont pas définis.\n" +msgstr "Les attributs de la table ne sont pas définis.\n" #: command.c:2931 #, c-format msgid "Title is \"%s\".\n" -msgstr "Le titre est « %s ».\n" +msgstr "Le titre est « %s ».\n" #: command.c:2933 #, c-format msgid "Title is unset.\n" -msgstr "Le titre n'est pas défini.\n" +msgstr "Le titre n'est pas défini.\n" #: command.c:2940 #, c-format msgid "Tuples only is on.\n" -msgstr "L'affichage des tuples seuls est activé.\n" +msgstr "L'affichage des tuples seuls est activé.\n" #: command.c:2942 #, c-format msgid "Tuples only is off.\n" -msgstr "L'affichage des tuples seuls est désactivé.\n" +msgstr "L'affichage des tuples seuls est désactivé.\n" #: command.c:2948 #, c-format msgid "Unicode border line style is \"%s\".\n" -msgstr "Le style de bordure Unicode est « %s ».\n" +msgstr "Le style de bordure Unicode est « %s ».\n" #: command.c:2954 #, c-format msgid "Unicode column line style is \"%s\".\n" -msgstr "Le style de ligne Unicode est « %s ».\n" +msgstr "Le style de ligne Unicode est « %s ».\n" #: command.c:2960 #, c-format msgid "Unicode header line style is \"%s\".\n" -msgstr "Le style d'en-tête Unicode est « %s ».\n" +msgstr "Le style d'en-tête Unicode est « %s ».\n" #: command.c:3120 #, c-format msgid "\\!: failed\n" -msgstr "\\! : échec\n" +msgstr "\\! : échec\n" #: command.c:3145 common.c:659 #, c-format msgid "\\watch cannot be used with an empty query\n" -msgstr "\\watch ne peut pas être utilisé avec une requête vide\n" +msgstr "\\watch ne peut pas être utilisé avec une requête vide\n" #: command.c:3186 #, c-format @@ -653,7 +653,7 @@ msgid "" "**************************\n" "\n" msgstr "" -"******** REQUÊTE *********\n" +"******** REQUÊTE *********\n" "%s\n" "**************************\n" "\n" @@ -661,7 +661,7 @@ msgstr "" #: command.c:3442 #, c-format msgid "\"%s.%s\" is not a view\n" -msgstr "« %s.%s » n'est pas une vue\n" +msgstr "« %s.%s » n'est pas une vue\n" #: command.c:3458 #, c-format @@ -676,22 +676,22 @@ msgstr "ne peut mettre entre guillemets sans connexion active\n" #: common.c:371 #, c-format msgid "connection to server was lost\n" -msgstr "la connexion au serveur a été perdue\n" +msgstr "la connexion au serveur a été perdue\n" #: common.c:375 #, c-format msgid "The connection to the server was lost. Attempting reset: " -msgstr "La connexion au serveur a été perdue. Tentative de réinitialisation : " +msgstr "La connexion au serveur a été perdue. Tentative de réinitialisation : " #: common.c:380 #, c-format msgid "Failed.\n" -msgstr "Échec.\n" +msgstr "Échec.\n" #: common.c:387 #, c-format msgid "Succeeded.\n" -msgstr "Succès.\n" +msgstr "Succès.\n" #: common.c:487 common.c:936 common.c:1108 #, c-format @@ -701,12 +701,12 @@ msgstr "PQresultStatus inattendu : %d\n" #: common.c:666 #, c-format msgid "\\watch cannot be used with COPY\n" -msgstr "\\watch ne peut pas être utilisé avec COPY\n" +msgstr "\\watch ne peut pas être utilisé avec COPY\n" #: common.c:671 #, c-format msgid "unexpected result status for \\watch\n" -msgstr "statut résultat inattendu pour \\watch\n" +msgstr "statut résultat inattendu pour \\watch\n" #: common.c:682 common.c:1335 #, c-format @@ -717,30 +717,30 @@ msgstr "Temps : %.3f ms\n" #, 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" +"Notification asynchrone « %s » reçue avec le contenu « %s » en provenance du\n" "processus serveur de PID %d.\n" #: common.c:703 #, 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" +"Notification asynchrone « %s » reçue en provenance du processus serveur de\n" "PID %d.\n" #: common.c:761 #, c-format msgid "no rows returned for \\gset\n" -msgstr "aucune ligne retournée pour \\gset\n" +msgstr "aucune ligne retournée pour \\gset\n" #: common.c:766 #, c-format msgid "more than one row returned for \\gset\n" -msgstr "plus d'une ligne retournée pour \\gset\n" +msgstr "plus d'une ligne retournée pour \\gset\n" #: common.c:792 #, c-format msgid "could not set variable \"%s\"\n" -msgstr "n'a pas pu initialiser la variable « %s »\n" +msgstr "n'a pas pu initialiser la variable « %s »\n" #: common.c:1153 #, c-format @@ -749,9 +749,9 @@ msgid "" "%s\n" "***(press return to proceed or enter x and return to cancel)********************\n" msgstr "" -"***(Mode étape par étape: vérifiez la commande)*********************************\n" +"***(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" +"***(appuyez sur entrée pour l'exécuter ou tapez x puis entrée pour annuler)***\n" #: common.c:1208 #, c-format @@ -768,7 +768,7 @@ msgstr "INSTRUCTION : %s\n" #: common.c:1307 #, c-format msgid "unexpected transaction status (%d)\n" -msgstr "état de la transaction inattendu (%d)\n" +msgstr "état de la transaction inattendu (%d)\n" #: copy.c:99 #, c-format @@ -778,27 +778,27 @@ msgstr "\\copy : arguments requis\n" #: copy.c:254 #, c-format msgid "\\copy: parse error at \"%s\"\n" -msgstr "\\copy : erreur d'analyse sur « %s »\n" +msgstr "\\copy : erreur d'analyse sur « %s »\n" #: copy.c:256 #, c-format msgid "\\copy: parse error at end of line\n" -msgstr "\\copy : erreur d'analyse à la fin de la ligne\n" +msgstr "\\copy : erreur d'analyse à la fin de la ligne\n" #: copy.c:329 #, c-format msgid "could not execute command \"%s\": %s\n" -msgstr "n'a pas pu exécuter la commande « %s » : %s\n" +msgstr "n'a pas pu exécuter la commande « %s » : %s\n" #: copy.c:345 #, c-format msgid "could not stat file \"%s\": %s\n" -msgstr "n'a pas pu tester le fichier « %s » : %s\n" +msgstr "n'a pas pu tester le fichier « %s » : %s\n" #: copy.c:349 #, c-format msgid "%s: cannot copy from/to a directory\n" -msgstr "%s : ne peut pas copier à partir de/vers un répertoire\n" +msgstr "%s : ne peut pas copier à partir de/vers un répertoire\n" #: copy.c:386 #, c-format @@ -808,79 +808,79 @@ msgstr "n'a pas pu fermer le fichier pipe vers la commande externe : %s\n" #: copy.c:452 copy.c:463 #, c-format msgid "could not write COPY data: %s\n" -msgstr "n'a pas pu écrire les données du COPY : %s\n" +msgstr "n'a pas pu écrire les données du COPY : %s\n" #: copy.c:470 #, c-format msgid "COPY data transfer failed: %s" -msgstr "Échec du transfert de données COPY : %s" +msgstr "Échec du transfert de données COPY : %s" #: copy.c:531 msgid "canceled by user" -msgstr "annulé par l'utilisateur" +msgstr "annulé par l'utilisateur" #: copy.c:542 msgid "" "Enter data to be copied followed by a newline.\n" -"End with a backslash and a period on a line by itself." +"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." +"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:671 msgid "aborted because of read failure" -msgstr "annulé du fait d'une erreur de lecture" +msgstr "annulé du fait d'une erreur de lecture" -#: copy.c:695 +#: copy.c:705 msgid "trying to exit copy mode" msgstr "tente de sortir du mode copy" #: crosstabview.c:125 #, c-format msgid "\\crosstabview: statement did not return a result set\n" -msgstr "\\crosstabview : la commande n'a pas retourné d'ensemble de résultats\n" +msgstr "\\crosstabview : la commande n'a pas retourné d'ensemble de résultats\n" #: crosstabview.c:131 #, c-format msgid "\\crosstabview: query must return at least three columns\n" -msgstr "\\crosstabview : la requête doit renvoyer au moins trois colonnes\n" +msgstr "\\crosstabview : la requête doit renvoyer au moins trois colonnes\n" #: crosstabview.c:158 #, c-format msgid "\\crosstabview: vertical and horizontal headers must be different columns\n" -msgstr "\\crosstabview : les entêtes horizontales et vertivales doivent être des colonnes dofférentes\n" +msgstr "\\crosstabview : les entêtes horizontales et vertivales doivent être des colonnes dofférentes\n" #: crosstabview.c:174 #, c-format msgid "\\crosstabview: data column must be specified when query returns more than three columns\n" -msgstr "\\crosstabview : la colonne de données doit être spécifiée quand la requête retourne plus de trois colonnes\n" +msgstr "\\crosstabview : la colonne de données doit être spécifiée quand la requête retourne plus de trois colonnes\n" #: crosstabview.c:230 #, c-format msgid "\\crosstabview: maximum number of columns (%d) exceeded\n" -msgstr "\\crosstabview : nombre maximum de colonnes (%d) dépassé\n" +msgstr "\\crosstabview : nombre maximum de colonnes (%d) dépassé\n" -#: crosstabview.c:398 +#: crosstabview.c:399 #, c-format msgid "\\crosstabview: query result contains multiple data values for row \"%s\", column \"%s\"\n" -msgstr "\\crosstabview : le résultat de la requête contient plusieurs valeurs de données pour la ligne « %s », colonne « %s »\n" +msgstr "\\crosstabview : le résultat de la requête contient plusieurs valeurs de données pour la ligne « %s », colonne « %s »\n" -#: crosstabview.c:646 +#: crosstabview.c:647 #, c-format msgid "\\crosstabview: column number %d is out of range 1..%d\n" -msgstr "\\crosstabview : le numéro de colonne %d est en dehors des limites 1..%d\n" +msgstr "\\crosstabview : le numéro de colonne %d est en dehors des limites 1..%d\n" -#: crosstabview.c:671 +#: crosstabview.c:672 #, c-format msgid "\\crosstabview: ambiguous column name: \"%s\"\n" msgstr "" -"\\crosstabview : nom de colonne ambigu : « %s »\n" +"\\crosstabview : nom de colonne ambigu : « %s »\n" "\n" -#: crosstabview.c:679 +#: crosstabview.c:680 #, c-format msgid "\\crosstabview: column name not found: \"%s\"\n" -msgstr "\\crosstabview : nom de colonne non trouvé : « %s »\n" +msgstr "\\crosstabview : nom de colonne non trouvé : « %s »\n" #: describe.c:71 describe.c:340 describe.c:597 describe.c:727 describe.c:870 #: describe.c:990 describe.c:1060 describe.c:3035 describe.c:3240 @@ -888,7 +888,7 @@ msgstr "\\crosstabview : nom de colonne non trouv #: describe.c:4025 describe.c:4036 describe.c:4098 describe.c:4518 #: describe.c:4601 msgid "Schema" -msgstr "Schéma" +msgstr "Schéma" #: describe.c:72 describe.c:160 describe.c:226 describe.c:234 describe.c:341 #: describe.c:598 describe.c:728 describe.c:789 describe.c:871 describe.c:1061 @@ -901,12 +901,12 @@ msgstr "Nom" #: describe.c:73 describe.c:353 describe.c:399 describe.c:416 msgid "Result data type" -msgstr "Type de données du résultat" +msgstr "Type de données du résultat" #: describe.c:81 describe.c:94 describe.c:98 describe.c:354 describe.c:400 #: describe.c:417 msgid "Argument data types" -msgstr "Type de données des paramètres" +msgstr "Type de données des paramètres" #: describe.c:105 describe.c:170 describe.c:257 describe.c:462 describe.c:646 #: describe.c:743 describe.c:814 describe.c:1063 describe.c:1676 @@ -921,12 +921,12 @@ msgstr "Description" #: describe.c:123 msgid "List of aggregate functions" -msgstr "Liste des fonctions d'agrégation" +msgstr "Liste des fonctions d'agrégation" #: describe.c:147 #, c-format msgid "The server (version %s) does not support access methods.\n" -msgstr "Le serveur (version %s) ne supporte pas les méthodes d'accès.\n" +msgstr "Le serveur (version %s) ne supporte pas les méthodes d'accès.\n" #: describe.c:161 msgid "Index" @@ -944,7 +944,7 @@ msgstr "Gestionnaire" #: describe.c:188 msgid "List of access methods" -msgstr "Liste des méthodes d'accès" +msgstr "Liste des méthodes d'accès" #: describe.c:213 #, c-format @@ -955,7 +955,7 @@ msgstr "Le serveur (version %s) ne supporte pas les tablespaces.\n" #: describe.c:989 describe.c:3045 describe.c:3166 describe.c:3412 #: describe.c:3644 describe.c:4292 describe.c:4376 large_obj.c:288 msgid "Owner" -msgstr "Propriétaire" +msgstr "Propriétaire" #: describe.c:228 describe.c:236 msgid "Location" @@ -981,7 +981,7 @@ msgstr "\\df prends seulement [antwS+] comme options\n" #: describe.c:322 #, c-format msgid "\\df does not take a \"w\" option with server version %s\n" -msgstr "\\df ne prend pas l'option « w » pour un serveur en version %s.\n" +msgstr "\\df ne prend pas l'option « w » pour un serveur en version %s.\n" #. translator: "agg" is short for "aggregate" #: describe.c:356 describe.c:402 describe.c:419 @@ -1014,7 +1014,7 @@ msgstr "volatile" #: describe.c:435 msgid "Volatility" -msgstr "Volatibilité" +msgstr "Volatibilité" #: describe.c:443 msgid "restricted" @@ -1030,7 +1030,7 @@ msgstr "unsafe" #: describe.c:446 msgid "Parallel" -msgstr "Parallèle" +msgstr "Parallèle" #: describe.c:451 msgid "definer" @@ -1042,7 +1042,7 @@ msgstr "invoker" #: describe.c:453 msgid "Security" -msgstr "Sécurité" +msgstr "Sécurité" #: describe.c:460 msgid "Language" @@ -1062,11 +1062,11 @@ msgstr "Nom interne" #: describe.c:630 msgid "Elements" -msgstr "Éléments" +msgstr "Éléments" #: describe.c:686 msgid "List of data types" -msgstr "Liste des types de données" +msgstr "Liste des types de données" #: describe.c:729 msgid "Left arg type" @@ -1078,7 +1078,7 @@ msgstr "Type de l'arg. droit" #: describe.c:731 msgid "Result type" -msgstr "Type du résultat" +msgstr "Type du résultat" #: describe.c:736 describe.c:3482 describe.c:3855 msgid "Function" @@ -1086,7 +1086,7 @@ msgstr "Fonction" #: describe.c:761 msgid "List of operators" -msgstr "Liste des opérateurs" +msgstr "Liste des opérateurs" #: describe.c:791 msgid "Encoding" @@ -1106,7 +1106,7 @@ msgstr "Tablespace" #: describe.c:832 msgid "List of databases" -msgstr "Liste des bases de données" +msgstr "Liste des bases de données" #: describe.c:872 describe.c:992 describe.c:3037 msgid "table" @@ -1118,11 +1118,11 @@ msgstr "vue" #: describe.c:874 describe.c:3039 msgid "materialized view" -msgstr "vue matérialisée" +msgstr "vue matérialisée" #: describe.c:875 describe.c:994 describe.c:3041 msgid "sequence" -msgstr "séquence" +msgstr "séquence" #: describe.c:876 describe.c:3043 msgid "foreign table" @@ -1130,7 +1130,7 @@ msgstr "table distante" #: describe.c:888 msgid "Column privileges" -msgstr "Droits d'accès à la colonne" +msgstr "Droits d'accès à la colonne" #: describe.c:919 msgid "Policies" @@ -1138,12 +1138,12 @@ msgstr "Politiques" #: describe.c:945 describe.c:4749 describe.c:4753 msgid "Access privileges" -msgstr "Droits d'accès" +msgstr "Droits d'accès" #: describe.c:976 #, c-format msgid "The server (version %s) does not support altering default privileges.\n" -msgstr "Le serveur (version %s) ne supporte pas la modification des droits par défaut.\n" +msgstr "Le serveur (version %s) ne supporte pas la modification des droits par défaut.\n" #: describe.c:996 msgid "function" @@ -1155,7 +1155,7 @@ msgstr "type" #: describe.c:1022 msgid "Default access privileges" -msgstr "Droits d'accès par défaut" +msgstr "Droits d'accès par défaut" #: describe.c:1062 msgid "Object" @@ -1171,15 +1171,15 @@ msgstr "contrainte de domaine" #: describe.c:1126 msgid "operator class" -msgstr "classe d'opérateur" +msgstr "classe d'opérateur" #: describe.c:1155 msgid "operator family" -msgstr "famille d'opérateur" +msgstr "famille d'opérateur" #: describe.c:1177 msgid "rule" -msgstr "règle" +msgstr "règle" #: describe.c:1219 msgid "Object descriptions" @@ -1188,72 +1188,72 @@ msgstr "Descriptions des objets" #: describe.c:1273 #, c-format msgid "Did not find any relation named \"%s\".\n" -msgstr "Aucune relation nommée « %s » n'a été trouvée.\n" +msgstr "Aucune relation nommée « %s » n'a été trouvée.\n" #: describe.c:1483 #, c-format msgid "Did not find any relation with OID %s.\n" -msgstr "Aucune relation avec l'OID « %s » n'a été trouvée.\n" +msgstr "Aucune relation avec l'OID « %s » n'a été trouvée.\n" #: describe.c:1589 #, c-format msgid "Unlogged table \"%s.%s\"" -msgstr "Table non tracée « %s.%s »" +msgstr "Table non tracée « %s.%s »" #: describe.c:1592 #, c-format msgid "Table \"%s.%s\"" -msgstr "Table « %s.%s »" +msgstr "Table « %s.%s »" #: describe.c:1596 #, c-format msgid "View \"%s.%s\"" -msgstr "Vue « %s.%s »" +msgstr "Vue « %s.%s »" #: describe.c:1601 #, c-format msgid "Unlogged materialized view \"%s.%s\"" -msgstr "Vue matérialisée non journalisée « %s.%s »" +msgstr "Vue matérialisée non journalisée « %s.%s »" #: describe.c:1604 #, c-format msgid "Materialized view \"%s.%s\"" -msgstr "Vue matérialisée « %s.%s »" +msgstr "Vue matérialisée « %s.%s »" #: describe.c:1608 #, c-format msgid "Sequence \"%s.%s\"" -msgstr "Séquence « %s.%s »" +msgstr "Séquence « %s.%s »" #: describe.c:1613 #, c-format msgid "Unlogged index \"%s.%s\"" -msgstr "Index non tracé « %s.%s »" +msgstr "Index non tracé « %s.%s »" #: describe.c:1616 #, c-format msgid "Index \"%s.%s\"" -msgstr "Index « %s.%s »" +msgstr "Index « %s.%s »" #: describe.c:1621 #, c-format msgid "Special relation \"%s.%s\"" -msgstr "Relation spéciale « %s.%s »" +msgstr "Relation spéciale « %s.%s »" #: describe.c:1625 #, c-format msgid "TOAST table \"%s.%s\"" -msgstr "Table TOAST « %s.%s »" +msgstr "Table TOAST « %s.%s »" #: describe.c:1629 #, c-format msgid "Composite type \"%s.%s\"" -msgstr "Type composé « %s.%s »" +msgstr "Type composé « %s.%s »" #: describe.c:1633 #, c-format msgid "Foreign table \"%s.%s\"" -msgstr "Table distante « %s.%s »" +msgstr "Table distante « %s.%s »" #: describe.c:1644 msgid "Column" @@ -1269,7 +1269,7 @@ msgstr "Valeur" #: describe.c:1661 msgid "Definition" -msgstr "Définition" +msgstr "Définition" #: describe.c:1664 describe.c:4312 describe.c:4396 describe.c:4467 #: describe.c:4531 @@ -1297,11 +1297,11 @@ msgstr "non NULL" #: describe.c:1739 #, c-format msgid "default %s" -msgstr "Par défaut, %s" +msgstr "Par défaut, %s" #: describe.c:1854 msgid "primary key, " -msgstr "clé primaire, " +msgstr "clé primaire, " #: describe.c:1856 msgid "unique, " @@ -1310,12 +1310,12 @@ msgstr "unique, " #: describe.c:1862 #, c-format msgid "for table \"%s.%s\"" -msgstr "pour la table « %s.%s »" +msgstr "pour la table « %s.%s »" #: describe.c:1866 #, c-format msgid ", predicate (%s)" -msgstr ", prédicat (%s)" +msgstr ", prédicat (%s)" #: describe.c:1869 msgid ", clustered" @@ -1327,20 +1327,20 @@ msgstr ", invalide" #: describe.c:1875 msgid ", deferrable" -msgstr ", déferrable" +msgstr ", déferrable" #: describe.c:1878 msgid ", initially deferred" -msgstr ", initialement déferré" +msgstr ", initialement déferré" #: describe.c:1881 msgid ", replica identity" -msgstr ", identité réplica" +msgstr ", identité réplica" #: describe.c:1916 #, c-format msgid "Owned by: %s" -msgstr "Propriétaire : %s" +msgstr "Propriétaire : %s" #: describe.c:1976 msgid "Indexes:" @@ -1348,15 +1348,15 @@ msgstr "Index :" #: describe.c:2060 msgid "Check constraints:" -msgstr "Contraintes de vérification :" +msgstr "Contraintes de vérification :" #: describe.c:2091 msgid "Foreign-key constraints:" -msgstr "Contraintes de clés étrangères :" +msgstr "Contraintes de clés étrangères :" #: describe.c:2122 msgid "Referenced by:" -msgstr "Référencé par :" +msgstr "Référencé par :" #: describe.c:2167 msgid "Policies:" @@ -1364,39 +1364,39 @@ msgstr "Politiques :" #: describe.c:2170 msgid "Policies (forced row security enabled):" -msgstr "Politiques (mode sécurité de ligne activé en forcé) :" +msgstr "Politiques (mode sécurité de ligne activé en forcé) :" #: describe.c:2173 msgid "Policies (row security enabled): (none)" -msgstr "Politiques (mode sécurité de ligne activé) : (aucune)" +msgstr "Politiques (mode sécurité de ligne activé) : (aucune)" #: describe.c:2176 msgid "Policies (forced row security enabled): (none)" -msgstr "Politiques (mode sécurité de ligne activé en forcé) : (aucune)" +msgstr "Politiques (mode sécurité de ligne activé en forcé) : (aucune)" #: describe.c:2179 msgid "Policies (row security disabled):" -msgstr "Politiques (mode sécurité de ligne désactivé) :" +msgstr "Politiques (mode sécurité de ligne désactivé) :" #: describe.c:2279 describe.c:2329 msgid "Rules:" -msgstr "Règles :" +msgstr "Règles :" #: describe.c:2282 msgid "Disabled rules:" -msgstr "Règles désactivées :" +msgstr "Règles désactivées :" #: describe.c:2285 msgid "Rules firing always:" -msgstr "Règles toujous activées :" +msgstr "Règles toujous activées :" #: describe.c:2288 msgid "Rules firing on replica only:" -msgstr "Règles activées uniquement sur le réplica :" +msgstr "Règles activées uniquement sur le réplica :" #: describe.c:2312 msgid "View definition:" -msgstr "Définition de la vue :" +msgstr "Définition de la vue :" #: describe.c:2447 msgid "Triggers:" @@ -1404,27 +1404,37 @@ msgstr "Triggers :" #: describe.c:2451 msgid "Disabled user triggers:" -msgstr "Triggers utilisateurs désactivés :" +msgstr "Triggers utilisateurs désactivés :" #: describe.c:2453 msgid "Disabled triggers:" -msgstr "Triggers désactivés :" +msgstr "Triggers désactivés :" #: describe.c:2456 msgid "Disabled internal triggers:" -msgstr "Triggers internes désactivés :" +msgstr "Triggers internes désactivés :" #: describe.c:2459 msgid "Triggers firing always:" -msgstr "Triggers toujours activés :" +msgstr "Triggers toujours activés :" #: describe.c:2462 msgid "Triggers firing on replica only:" -msgstr "Triggers activés uniquement sur le réplica :" +msgstr "Triggers activés uniquement sur le réplica :" + +#: describe.c:2519 +#, c-format +msgid "Server: %s" +msgstr "Serveur : %s" + +#: describe.c:2527 +#, c-format +msgid "FDW Options: (%s)" +msgstr "Options FDW : (%s)" #: describe.c:2541 msgid "Inherits" -msgstr "Hérite de" +msgstr "Hérite de" #: describe.c:2580 #, c-format @@ -1442,7 +1452,7 @@ msgstr "Table de type : %s" #: describe.c:2623 msgid "Replica Identity" -msgstr "Identité de réplicat" +msgstr "Identité de réplicat" #: describe.c:2636 msgid "Has OIDs: yes" @@ -1451,22 +1461,22 @@ msgstr "Contient des OID : oui" #: describe.c:2724 #, c-format msgid "Tablespace: \"%s\"" -msgstr "Tablespace : « %s »" +msgstr "Tablespace : « %s »" #. translator: before this string there's an index description like #. '"foo_pkey" PRIMARY KEY, btree (a)' #: describe.c:2736 #, c-format msgid ", tablespace \"%s\"" -msgstr ", tablespace « %s »" +msgstr ", tablespace « %s »" #: describe.c:2829 msgid "List of roles" -msgstr "Liste des rôles" +msgstr "Liste des rôles" #: describe.c:2831 msgid "Role name" -msgstr "Nom du rôle" +msgstr "Nom du rôle" #: describe.c:2832 msgid "Attributes" @@ -1482,15 +1492,15 @@ msgstr "Superutilisateur" #: describe.c:2847 msgid "No inheritance" -msgstr "Pas d'héritage" +msgstr "Pas d'héritage" #: describe.c:2850 msgid "Create role" -msgstr "Créer un rôle" +msgstr "Créer un rôle" #: describe.c:2853 msgid "Create DB" -msgstr "Créer une base" +msgstr "Créer une base" #: describe.c:2856 msgid "Cannot login" @@ -1498,7 +1508,7 @@ msgstr "Ne peut pas se connecter" #: describe.c:2860 msgid "Replication" -msgstr "Réplication" +msgstr "Réplication" #: describe.c:2864 msgid "Bypass RLS" @@ -1517,38 +1527,38 @@ msgstr[1] "%d connexions" #: describe.c:2885 msgid "Password valid until " -msgstr "Mot de passe valide jusqu'à " +msgstr "Mot de passe valide jusqu'à " #: describe.c:2941 msgid "Role" -msgstr "Rôle" +msgstr "Rôle" #: describe.c:2942 msgid "Database" -msgstr "Base de données" +msgstr "Base de données" #: describe.c:2943 msgid "Settings" -msgstr "Réglages" +msgstr "Réglages" #: describe.c:2953 #, c-format 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" +msgstr "Pas de supprot des paramètres rôle par base de données pour la version de ce serveur.\n" #: describe.c:2964 #, c-format msgid "No matching settings found.\n" -msgstr "Aucun paramètre correspondant trouvé.\n" +msgstr "Aucun paramètre correspondant trouvé.\n" #: describe.c:2966 #, c-format msgid "No settings found.\n" -msgstr "Aucun paramètre trouvé.\n" +msgstr "Aucun paramètre trouvé.\n" #: describe.c:2971 msgid "List of settings" -msgstr "Liste des paramètres" +msgstr "Liste des paramètres" #: describe.c:3040 msgid "index" @@ -1556,7 +1566,7 @@ msgstr "index" #: describe.c:3042 msgid "special" -msgstr "spécial" +msgstr "spécial" #: describe.c:3050 describe.c:4519 msgid "Table" @@ -1565,12 +1575,12 @@ msgstr "Table" #: describe.c:3126 #, c-format msgid "No matching relations found.\n" -msgstr "Aucune relation correspondante trouvée.\n" +msgstr "Aucune relation correspondante trouvée.\n" #: describe.c:3128 #, c-format msgid "No relations found.\n" -msgstr "Aucune relation trouvée.\n" +msgstr "Aucune relation trouvée.\n" #: describe.c:3133 msgid "List of relations" @@ -1606,7 +1616,7 @@ msgstr "Modificateur" #: describe.c:3256 msgid "Check" -msgstr "Vérification" +msgstr "Vérification" #: describe.c:3298 msgid "List of domains" @@ -1630,7 +1640,7 @@ msgstr "oui" #: describe.c:3335 msgid "Default?" -msgstr "Par défaut ?" +msgstr "Par défaut ?" #: describe.c:3372 msgid "List of conversions" @@ -1638,15 +1648,15 @@ msgstr "Liste des conversions" #: describe.c:3411 msgid "Event" -msgstr "Événement" +msgstr "Événement" #: describe.c:3413 msgid "enabled" -msgstr "activé" +msgstr "activé" #: describe.c:3414 msgid "replica" -msgstr "réplicat" +msgstr "réplicat" #: describe.c:3415 msgid "always" @@ -1654,15 +1664,15 @@ msgstr "toujours" #: describe.c:3416 msgid "disabled" -msgstr "désactivé" +msgstr "désactivé" #: describe.c:3417 msgid "Enabled" -msgstr "Activé" +msgstr "Activé" #: describe.c:3418 msgid "Procedure" -msgstr "Procédure" +msgstr "Procédure" #: describe.c:3419 msgid "Tags" @@ -1670,7 +1680,7 @@ msgstr "Tags" #: describe.c:3438 msgid "List of event triggers" -msgstr "Liste des triggers sur évènement" +msgstr "Liste des triggers sur évènement" #: describe.c:3480 msgid "Source type" @@ -1682,7 +1692,7 @@ msgstr "Type cible" #: describe.c:3484 msgid "in assignment" -msgstr "assigné" +msgstr "assigné" #: describe.c:3486 msgid "Implicit?" @@ -1703,7 +1713,7 @@ msgstr "Liste des collationnements" #: describe.c:3675 msgid "List of schemas" -msgstr "Liste des schémas" +msgstr "Liste des schémas" #: describe.c:3700 describe.c:3938 describe.c:4009 describe.c:4080 #, c-format @@ -1717,15 +1727,15 @@ msgstr "Liste des analyseurs de la recherche de texte" #: describe.c:3778 #, c-format msgid "Did not find any text search parser named \"%s\".\n" -msgstr "Aucun analyseur de la recherche de texte nommé « %s » n'a été trouvé.\n" +msgstr "Aucun analyseur de la recherche de texte nommé « %s » n'a été trouvé.\n" #: describe.c:3853 msgid "Start parse" -msgstr "Début de l'analyse" +msgstr "Début de l'analyse" #: describe.c:3854 msgid "Method" -msgstr "Méthode" +msgstr "Méthode" #: describe.c:3858 msgid "Get next token" @@ -1737,7 +1747,7 @@ msgstr "Fin de l'analyse" #: describe.c:3862 msgid "Get headline" -msgstr "Obtenir l'en-tête" +msgstr "Obtenir l'en-tête" #: describe.c:3864 msgid "Get token types" @@ -1746,12 +1756,12 @@ msgstr "Obtenir les types de jeton" #: describe.c:3874 #, c-format msgid "Text search parser \"%s.%s\"" -msgstr "Analyseur « %s.%s » de la recherche de texte" +msgstr "Analyseur « %s.%s » de la recherche de texte" #: describe.c:3876 #, c-format msgid "Text search parser \"%s\"" -msgstr "Analyseur « %s » de la recherche de texte" +msgstr "Analyseur « %s » de la recherche de texte" #: describe.c:3895 msgid "Token name" @@ -1760,16 +1770,16 @@ msgstr "Nom du jeton" #: describe.c:3906 #, c-format msgid "Token types for parser \"%s.%s\"" -msgstr "Types de jeton pour l'analyseur « %s.%s »" +msgstr "Types de jeton pour l'analyseur « %s.%s »" #: describe.c:3908 #, c-format msgid "Token types for parser \"%s\"" -msgstr "Types de jeton pour l'analyseur « %s »" +msgstr "Types de jeton pour l'analyseur « %s »" #: describe.c:3961 msgid "Template" -msgstr "Modèle" +msgstr "Modèle" #: describe.c:3962 msgid "Init options" @@ -1789,7 +1799,7 @@ msgstr "Lexize" #: describe.c:4055 msgid "List of text search templates" -msgstr "Liste des modèles de la recherche de texte" +msgstr "Liste des modèles de la recherche de texte" #: describe.c:4115 msgid "List of text search configurations" @@ -1798,7 +1808,7 @@ msgstr "Liste des configurations de la recherche de texte" #: describe.c:4159 #, c-format msgid "Did not find any text search configuration named \"%s\".\n" -msgstr "Aucune configuration de la recherche de texte nommée « %s » n'a été trouvée.\n" +msgstr "Aucune configuration de la recherche de texte nommée « %s » n'a été trouvée.\n" #: describe.c:4225 msgid "Token" @@ -1811,12 +1821,12 @@ msgstr "Dictionnaires" #: describe.c:4237 #, c-format msgid "Text search configuration \"%s.%s\"" -msgstr "Configuration « %s.%s » de la recherche de texte" +msgstr "Configuration « %s.%s » de la recherche de texte" #: describe.c:4240 #, c-format msgid "Text search configuration \"%s\"" -msgstr "Configuration « %s » de la recherche de texte" +msgstr "Configuration « %s » de la recherche de texte" #: describe.c:4244 #, c-format @@ -1825,7 +1835,7 @@ msgid "" "Parser: \"%s.%s\"" msgstr "" "\n" -"Analyseur : « %s.%s »" +"Analyseur : « %s.%s »" #: describe.c:4247 #, c-format @@ -1834,16 +1844,16 @@ msgid "" "Parser: \"%s\"" msgstr "" "\n" -"Analyseur : « %s »" +"Analyseur : « %s »" #: describe.c:4281 #, c-format msgid "The server (version %s) does not support foreign-data wrappers.\n" -msgstr "Le serveur (version %s) ne supporte pas les wrappers de données distantes.\n" +msgstr "Le serveur (version %s) ne supporte pas les wrappers de données distantes.\n" #: describe.c:4339 msgid "List of foreign-data wrappers" -msgstr "Liste des wrappers de données distantes" +msgstr "Liste des wrappers de données distantes" #: describe.c:4364 #, c-format @@ -1852,7 +1862,7 @@ msgstr "Le serveur (version %s) ne supporte pas les serveurs distants.\n" #: describe.c:4377 msgid "Foreign-data wrapper" -msgstr "Wrapper des données distantes" +msgstr "Wrapper des données distantes" #: describe.c:4395 describe.c:4600 msgid "Version" @@ -1895,17 +1905,17 @@ msgstr "Le serveur (version %s) ne supporte pas les extensions.\n" #: describe.c:4617 msgid "List of installed extensions" -msgstr "Liste des extensions installées" +msgstr "Liste des extensions installées" #: describe.c:4670 #, c-format msgid "Did not find any extension named \"%s\".\n" -msgstr "N'a trouvé aucune extension nommée « %s ».\n" +msgstr "N'a trouvé aucune extension nommée « %s ».\n" #: describe.c:4673 #, c-format msgid "Did not find any extensions.\n" -msgstr "N'a trouvé aucune extension.\n" +msgstr "N'a trouvé aucune extension.\n" #: describe.c:4717 msgid "Object Description" @@ -1914,7 +1924,7 @@ msgstr "Description d'un objet" #: describe.c:4726 #, c-format msgid "Objects in extension \"%s\"" -msgstr "Objets dans l'extension « %s »" +msgstr "Objets dans l'extension « %s »" #: help.c:63 #, c-format @@ -1947,34 +1957,34 @@ msgstr "" #: help.c:78 #, c-format msgid "General options:\n" -msgstr "Options générales :\n" +msgstr "Options générales :\n" #: help.c:83 #, c-format msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n" msgstr "" " -c, --command=COMMANDE\n" -" exécute une commande unique (SQL ou interne), puis quitte\n" +" exécute une commande unique (SQL ou interne), puis quitte\n" #: help.c:84 #, c-format msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" msgstr "" " -d, --dbname=NOM_BASE\n" -" indique le nom de la base de données à laquelle se\n" -" connecter (par défaut : « %s »)\n" +" indique le nom de la base de données à laquelle se\n" +" connecter (par défaut : « %s »)\n" #: help.c:85 #, c-format msgid " -f, --file=FILENAME execute commands from file, then exit\n" msgstr "" " -f, --file=FICHIER\n" -" exécute les commandes du fichier, puis quitte\n" +" exécute les commandes du fichier, puis quitte\n" #: help.c:86 #, c-format msgid " -l, --list list available databases, then exit\n" -msgstr " -l, --list affiche les bases de données disponibles, puis quitte\n" +msgstr " -l, --list affiche les bases de données disponibles, puis quitte\n" #: help.c:87 #, c-format @@ -1995,7 +2005,7 @@ msgstr " -V, --version affiche la version puis quitte\n" #: help.c:91 #, c-format msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" -msgstr " -X, --no-psqlrc ne lit pas le fichier de démarrage (~/.psqlrc)\n" +msgstr " -X, --no-psqlrc ne lit pas le fichier de démarrage (~/.psqlrc)\n" #: help.c:92 #, c-format @@ -2003,8 +2013,8 @@ msgid "" " -1 (\"one\"), --single-transaction\n" " execute as a single transaction (if non-interactive)\n" msgstr "" -" -1 (« un »), --single-transaction\n" -" exécute dans une transaction unique (si non intéractif)\n" +" -1 (« un »), --single-transaction\n" +" exécute dans une transaction unique (si non intéractif)\n" #: help.c:94 #, c-format @@ -2014,12 +2024,12 @@ msgstr " -?, --help[=options] affiche cette aide et quitte\n" #: help.c:95 #, c-format msgid " --help=commands list backslash commands, then exit\n" -msgstr " --help=commandes liste les méta-commandes, puis quitte\n" +msgstr " --help=commandes liste les méta-commandes, puis quitte\n" #: help.c:96 #, c-format msgid " --help=variables list special variables, then exit\n" -msgstr " --help=variables liste les variables spéciales, puis quitte\n" +msgstr " --help=variables liste les variables spéciales, puis quitte\n" #: help.c:98 #, c-format @@ -2028,7 +2038,7 @@ msgid "" "Input and output options:\n" msgstr "" "\n" -"Options d'entrée/sortie :\n" +"Options d'entrée/sortie :\n" #: help.c:99 #, c-format @@ -2038,21 +2048,21 @@ msgstr " -a, --echo-all affiche les lignes du script\n" #: help.c:100 #, c-format msgid " -b, --echo-errors echo failed commands\n" -msgstr " -b, --echo-errors affiche les commandes échouées\n" +msgstr " -b, --echo-errors affiche les commandes échouées\n" #: help.c:101 #, c-format msgid " -e, --echo-queries echo commands sent to server\n" msgstr "" " -e, --echo-queries\n" -" affiche les commandes envoyées au serveur\n" +" affiche les commandes envoyées au serveur\n" #: help.c:102 #, c-format msgid " -E, --echo-hidden display queries that internal commands generate\n" msgstr "" " -E, --echo-hidden\n" -" affiche les requêtes engendrées par les commandes internes\n" +" affiche les requêtes engendrées par les commandes internes\n" #: help.c:103 #, c-format @@ -2066,7 +2076,7 @@ msgstr "" msgid " -n, --no-readline disable enhanced command line editing (readline)\n" msgstr "" " -n, --no-readline\n" -" désactive l'édition avancée de la ligne de commande\n" +" désactive l'édition avancée de la ligne de commande\n" " (readline)\n" #: help.c:105 @@ -2074,23 +2084,23 @@ msgstr "" msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" msgstr "" " -o, --output=FICHIER\n" -" écrit les résultats des requêtes dans un fichier (ou\n" +" écrit les résultats des requêtes dans un fichier (ou\n" " |tube)\n" #: help.c:106 #, c-format msgid " -q, --quiet run quietly (no messages, only query output)\n" msgstr "" -" -q, --quiet s'exécute silencieusement (pas de messages, uniquement le\n" -" résultat des requêtes)\n" +" -q, --quiet s'exécute silencieusement (pas de messages, uniquement le\n" +" résultat des requêtes)\n" #: help.c:107 #, c-format msgid " -s, --single-step single-step mode (confirm each query)\n" msgstr "" " -s, --single-step\n" -" active le mode étape par étape (confirmation pour chaque\n" -" requête)\n" +" active le mode étape par étape (confirmation pour chaque\n" +" requête)\n" #: help.c:108 #, c-format @@ -2113,7 +2123,7 @@ msgstr "" #, c-format msgid " -A, --no-align unaligned table output mode\n" msgstr "" -" -A, --no-align active le mode d'affichage non aligné des tables (-P\n" +" -A, --no-align active le mode d'affichage non aligné des tables (-P\n" " format=unaligned)\n" #: help.c:112 @@ -2123,8 +2133,8 @@ msgid "" " 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" +" séparateur de champs pour un affichage non aligné\n" +" (par défaut : « %s »)\n" #: help.c:115 #, c-format @@ -2136,7 +2146,7 @@ msgstr " -H, --html active le mode d'affichage HTML des tables (-P msgid " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n" msgstr "" " -P, --pset=VAR[=ARG]\n" -" initialise l'option d'impression VAR à ARG (voir la\n" +" initialise l'option d'impression VAR à ARG (voir la\n" " commande \\pset)\n" #: help.c:117 @@ -2146,8 +2156,8 @@ msgid "" " record separator for unaligned output (default: newline)\n" msgstr "" " -R, --record-separator=CHAINE\n" -" séparateur d'enregistrements pour un affichage non aligné\n" -" (par défaut : saut de ligne)\n" +" séparateur d'enregistrements pour un affichage non aligné\n" +" (par défaut : saut de ligne)\n" #: help.c:119 #, c-format @@ -2167,7 +2177,7 @@ msgstr "" #: help.c:121 #, c-format msgid " -x, --expanded turn on expanded table output\n" -msgstr " -x, --expanded active l'affichage étendu des tables (-P expanded)\n" +msgstr " -x, --expanded active l'affichage étendu des tables (-P expanded)\n" #: help.c:122 #, c-format @@ -2176,8 +2186,8 @@ msgid "" " set field separator for unaligned output to zero byte\n" msgstr "" " -z, --field-separator-zero\n" -" initialise le séparateur de champs pour un affichage non\n" -" aligné à l'octet zéro\n" +" initialise le séparateur de champs pour un affichage non\n" +" aligné à l'octet zéro\n" #: help.c:124 #, c-format @@ -2186,8 +2196,8 @@ msgid "" " set record separator for unaligned output to zero byte\n" msgstr "" " -0, --record-separator-zero\n" -" initialise le séparateur d'enregistrements pour un affichage\n" -" non aligné à l'octet zéro\n" +" initialise le séparateur d'enregistrements pour un affichage\n" +" non aligné à l'octet zéro\n" #: help.c:127 #, c-format @@ -2202,8 +2212,8 @@ msgstr "" #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n" msgstr "" -" -h, --host=HOTE nom d'hôte du serveur de la base de données ou répertoire\n" -" de la socket (par défaut : %s)\n" +" -h, --host=HOTE nom d'hôte du serveur de la base de données ou répertoire\n" +" de la socket (par défaut : %s)\n" #: help.c:131 msgid "local socket" @@ -2213,16 +2223,16 @@ msgstr "socket locale" #, 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" +" -p, --port=PORT port du serveur de la base de données (par défaut :\n" +" « %s »)\n" #: help.c:140 #, c-format msgid " -U, --username=USERNAME database user name (default: \"%s\")\n" msgstr "" " -U, --username=NOM\n" -" nom d'utilisateur de la base de données (par défaut :\n" -" « %s »)\n" +" nom d'utilisateur de la base de données (par défaut :\n" +" « %s »)\n" #: help.c:141 #, c-format @@ -2248,20 +2258,20 @@ msgid "" "\n" msgstr "" "\n" -"Pour en savoir davantage, saisissez « \\? » (pour les commandes internes) ou\n" -"« \\help » (pour les commandes SQL) dans psql, ou consultez la section psql\n" +"Pour en savoir davantage, saisissez « \\? » (pour les commandes internes) ou\n" +"« \\help » (pour les commandes SQL) dans psql, ou consultez la section psql\n" "de la documentation de PostgreSQL.\n" "\n" #: help.c:147 #, c-format msgid "Report bugs to .\n" -msgstr "Rapportez les bogues à .\n" +msgstr "Rapportez les bogues à .\n" #: help.c:173 #, c-format msgid "General\n" -msgstr "Général\n" +msgstr "Général\n" #: help.c:174 #, c-format @@ -2273,24 +2283,24 @@ msgstr "" #: help.c:175 #, c-format msgid " \\errverbose show most recent error message at maximum verbosity\n" -msgstr " \\errverbose affiche le message d'erreur le plus récent avec une verbosité maximale\n" +msgstr " \\errverbose affiche le message d'erreur le plus récent avec une verbosité maximale\n" #: help.c:176 #, c-format 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" +" \\g [FICHIER] ou ; envoie le tampon de requêtes au serveur (et les\n" +" résultats au fichier ou |tube)\n" #: help.c:177 #, c-format msgid " \\gexec execute query, then execute each value in its result\n" -msgstr " \\gexec exécute la requête et exécute chaque valeur du résultat\n" +msgstr " \\gexec exécute la requête et exécute chaque valeur du résultat\n" #: help.c:178 #, c-format msgid " \\gset [PREFIX] execute query and store results in psql variables\n" -msgstr " \\gset [PRÉFIXE] exécute la requête et stocke les résultats dans des variables psql\n" +msgstr " \\gset [PRÉFIXE] exécute la requête et stocke les résultats dans des variables psql\n" #: help.c:179 #, c-format @@ -2300,12 +2310,12 @@ msgstr " \\q quitte psql\n" #: help.c:180 #, c-format msgid " \\crosstabview [COLUMNS] execute query and display results in crosstab\n" -msgstr " \\crosstabview [COLUMNS] exécute la requête et affiche le résultat dans un tableau croisé\n" +msgstr " \\crosstabview [COLUMNS] exécute la requête et affiche le résultat dans un tableau croisé\n" #: help.c:181 #, c-format msgid " \\watch [SEC] execute query every SEC seconds\n" -msgstr " \\watch [SEC] exécute la requête toutes les SEC secondes\n" +msgstr " \\watch [SEC] exécute la requête toutes les SEC secondes\n" #: help.c:184 #, c-format @@ -2315,7 +2325,7 @@ msgstr "Aide\n" #: help.c:186 #, c-format msgid " \\? [commands] show help on backslash commands\n" -msgstr " \\? [commandes] affiche l'aide sur les métacommandes\n" +msgstr " \\? [commandes] affiche l'aide sur les métacommandes\n" #: help.c:187 #, c-format @@ -2325,50 +2335,50 @@ msgstr " \\? options affiche l'aide sur les options en ligne de com #: help.c:188 #, c-format msgid " \\? variables show help on special variables\n" -msgstr " \\? variables affiche l'aide sur les variables spéciales\n" +msgstr " \\? variables affiche l'aide sur les variables spéciales\n" #: help.c:189 #, c-format msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n" msgstr "" -" \\h [NOM] aide-mémoire pour les commandes SQL, * pour toutes\n" +" \\h [NOM] aide-mémoire pour les commandes SQL, * pour toutes\n" " les commandes\n" #: help.c:192 #, c-format msgid "Query Buffer\n" -msgstr "Tampon de requête\n" +msgstr "Tampon de requête\n" #: help.c:193 #, c-format msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n" msgstr "" -" \\e [FICHIER] [LIGNE] édite le tampon de requête ou le fichier avec un\n" -" éditeur externe\n" +" \\e [FICHIER] [LIGNE] édite le tampon de requête ou le fichier avec un\n" +" éditeur externe\n" #: help.c:194 #, c-format msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" msgstr "" -" \\ef [FONCTION [LIGNE]] édite la définition de fonction avec un éditeur\n" +" \\ef [FONCTION [LIGNE]] édite la définition de fonction avec un éditeur\n" " externe\n" #: help.c:195 #, c-format msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n" msgstr "" -" \\ev [VUE [LIGNE]] édite la définition de vue avec un éditeur\n" +" \\ev [VUE [LIGNE]] édite la définition de vue avec un éditeur\n" " externe\n" #: help.c:196 #, c-format msgid " \\p show the contents of the query buffer\n" -msgstr " \\p affiche le contenu du tampon de requête\n" +msgstr " \\p affiche le contenu du tampon de requête\n" #: help.c:197 #, c-format msgid " \\r reset (clear) the query buffer\n" -msgstr " \\r efface le tampon de requêtes\n" +msgstr " \\r efface le tampon de requêtes\n" #: help.c:199 #, c-format @@ -2381,51 +2391,51 @@ msgstr "" #, c-format msgid " \\w FILE write query buffer to file\n" msgstr "" -" \\w [FICHIER] écrit le contenu du tampon de requêtes dans un\n" +" \\w [FICHIER] écrit le contenu du tampon de requêtes dans un\n" " fichier\n" #: help.c:204 #, c-format msgid "Input/Output\n" -msgstr "Entrée/Sortie\n" +msgstr "Entrée/Sortie\n" #: help.c:205 #, c-format msgid " \\copy ... perform SQL COPY with data stream to the client host\n" msgstr "" -" \\copy ... exécute SQL COPY avec le flux de données dirigé vers\n" -" l'hôte client\n" +" \\copy ... exécute SQL COPY avec le flux de données dirigé vers\n" +" l'hôte client\n" #: help.c:206 #, c-format msgid " \\echo [STRING] write string to standard output\n" -msgstr " \\echo [TEXTE] écrit un texte sur la sortie standard\n" +msgstr " \\echo [TEXTE] écrit un texte sur la sortie standard\n" #: help.c:207 #, c-format msgid " \\i FILE execute commands from file\n" -msgstr " \\i FICHIER exécute les commandes du fichier\n" +msgstr " \\i FICHIER exécute les commandes du fichier\n" #: help.c:208 #, c-format msgid " \\ir FILE as \\i, but relative to location of current script\n" msgstr "" -" \\ir FICHIER identique à \\i, mais relatif à l'emplacement du script\n" +" \\ir FICHIER identique à \\i, mais relatif à l'emplacement du script\n" " ou un |tube\n" #: help.c:209 #, c-format msgid " \\o [FILE] send all query results to file or |pipe\n" msgstr "" -" \\o [FICHIER] envoie les résultats de la requête vers un fichier\n" +" \\o [FICHIER] envoie les résultats de la requête vers un fichier\n" " ou un |tube\n" #: help.c:210 #, c-format msgid " \\qecho [STRING] write string to query output stream (see \\o)\n" msgstr "" -" \\qecho [TEXTE] écrit un texte sur la sortie des résultats des\n" -" requêtes (voir \\o)\n" +" \\qecho [TEXTE] écrit un texte sur la sortie des résultats des\n" +" requêtes (voir \\o)\n" #: help.c:213 #, c-format @@ -2435,81 +2445,81 @@ msgstr "Informations\n" #: help.c:214 #, c-format msgid " (options: S = show system objects, + = additional detail)\n" -msgstr " (options : S = affiche les objets systèmes, + = informations supplémentaires)\n" +msgstr " (options : S = affiche les objets systèmes, + = informations supplémentaires)\n" #: help.c:215 #, c-format msgid " \\d[S+] list tables, views, and sequences\n" -msgstr " \\d[S+] affiche la liste des tables, vues et séquences\n" +msgstr " \\d[S+] affiche la liste des tables, vues et séquences\n" #: help.c:216 #, c-format msgid " \\d[S+] NAME describe table, view, sequence, or index\n" msgstr "" " \\d[S+] NOM affiche la description de la table, de la vue,\n" -" de la séquence ou de l'index\n" +" de la séquence ou de l'index\n" #: help.c:217 #, c-format msgid " \\da[S] [PATTERN] list aggregates\n" -msgstr " \\da[S] [MODÈLE] affiche les aggrégats\n" +msgstr " \\da[S] [MODÈLE] affiche les aggrégats\n" #: help.c:218 #, c-format msgid " \\dA[+] [PATTERN] list access methods\n" -msgstr " \\dA[+] [MODÈLE] affiche la liste des méthodes d'accès\n" +msgstr " \\dA[+] [MODÈLE] affiche la liste des méthodes d'accès\n" #: help.c:219 #, c-format msgid " \\db[+] [PATTERN] list tablespaces\n" -msgstr " \\db[+] [MODÈLE] affiche la liste des tablespaces\n" +msgstr " \\db[+] [MODÈLE] affiche la liste des tablespaces\n" #: help.c:220 #, c-format msgid " \\dc[S+] [PATTERN] list conversions\n" -msgstr " \\dc[S+] [MODÈLE] affiche la liste des conversions\n" +msgstr " \\dc[S+] [MODÈLE] affiche la liste des conversions\n" #: help.c:221 #, c-format msgid " \\dC[+] [PATTERN] list casts\n" -msgstr " \\dC[+] [MODÈLE] affiche la liste des transtypages\n" +msgstr " \\dC[+] [MODÈLE] affiche la liste des transtypages\n" #: help.c:222 #, c-format msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n" msgstr "" -" \\dd[S] [MODÈLE] affiche les commentaires des objets dont le commentaire\n" -" n'est affiché nul part ailleurs\n" +" \\dd[S] [MODÈLE] affiche les commentaires des objets dont le commentaire\n" +" n'est affiché nul part ailleurs\n" #: help.c:223 #, c-format msgid " \\ddp [PATTERN] list default privileges\n" -msgstr " \\ddp [MODÈLE] affiche les droits par défaut\n" +msgstr " \\ddp [MODÈLE] affiche les droits par défaut\n" #: help.c:224 #, c-format msgid " \\dD[S+] [PATTERN] list domains\n" -msgstr " \\dD[S+] [MODÈLE] affiche la liste des domaines\n" +msgstr " \\dD[S+] [MODÈLE] affiche la liste des domaines\n" #: help.c:225 #, c-format msgid " \\det[+] [PATTERN] list foreign tables\n" -msgstr " \\det[+] [MODÈLE] affiche la liste des tables distantes\n" +msgstr " \\det[+] [MODÈLE] affiche la liste des tables distantes\n" #: help.c:226 #, c-format msgid " \\des[+] [PATTERN] list foreign servers\n" -msgstr " \\des[+] [MODÈLE] affiche la liste des serveurs distants\n" +msgstr " \\des[+] [MODÈLE] affiche la liste des serveurs distants\n" #: help.c:227 #, c-format msgid " \\deu[+] [PATTERN] list user mappings\n" -msgstr " \\deu[+] [MODÈLE] affiche la liste des correspondances utilisateurs\n" +msgstr " \\deu[+] [MODÈLE] affiche la liste des correspondances utilisateurs\n" #: help.c:228 #, c-format msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" -msgstr " \\dew[+] [MODÈLE] affiche la liste des wrappers de données distantes\n" +msgstr " \\dew[+] [MODÈLE] affiche la liste des wrappers de données distantes\n" #: help.c:229 #, c-format @@ -2522,143 +2532,143 @@ msgstr "" #, c-format msgid " \\dF[+] [PATTERN] list text search configurations\n" msgstr "" -" \\dF[+] [MODÈLE] affiche la liste des configurations de la recherche\n" +" \\dF[+] [MODÈLE] affiche la liste des configurations de la recherche\n" " plein texte\n" #: help.c:231 #, c-format msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" msgstr "" -" \\dFd[+] [MODÈLE] affiche la liste des dictionnaires de la recherche de\n" +" \\dFd[+] [MODÈLE] affiche la liste des dictionnaires de la recherche de\n" " texte\n" #: help.c:232 #, c-format msgid " \\dFp[+] [PATTERN] list text search parsers\n" msgstr "" -" \\dFp[+] [MODÈLE] affiche la liste des analyseurs de la recherche de\n" +" \\dFp[+] [MODÈLE] affiche la liste des analyseurs de la recherche de\n" " texte\n" #: help.c:233 #, c-format msgid " \\dFt[+] [PATTERN] list text search templates\n" msgstr "" -" \\dFt[+] [MODÈLE] affiche la liste des modèles de la recherche de\n" +" \\dFt[+] [MODÈLE] affiche la liste des modèles de la recherche de\n" " texte\n" #: help.c:234 #, c-format msgid " \\dg[S+] [PATTERN] list roles\n" -msgstr " \\dg[S+] [MODÈLE] affiche la liste des rôles (utilisateurs)\n" +msgstr " \\dg[S+] [MODÈLE] affiche la liste des rôles (utilisateurs)\n" #: help.c:235 #, c-format msgid " \\di[S+] [PATTERN] list indexes\n" -msgstr " \\di[S+] [MODÈLE] affiche la liste des index\n" +msgstr " \\di[S+] [MODÈLE] affiche la liste des index\n" #: help.c:236 #, c-format msgid " \\dl list large objects, same as \\lo_list\n" msgstr "" -" \\dl affiche la liste des « Large Objects », identique à\n" +" \\dl affiche la liste des « Large Objects », identique à\n" " \\lo_list\n" #: help.c:237 #, c-format msgid " \\dL[S+] [PATTERN] list procedural languages\n" -msgstr " \\dL[S+] [MODÈLE] affiche la liste des langages procéduraux\n" +msgstr " \\dL[S+] [MODÈLE] affiche la liste des langages procéduraux\n" #: help.c:238 #, c-format msgid " \\dm[S+] [PATTERN] list materialized views\n" -msgstr " \\dm[S+] [MODÈLE] affiche la liste des vues matérialisées\n" +msgstr " \\dm[S+] [MODÈLE] affiche la liste des vues matérialisées\n" #: help.c:239 #, c-format msgid " \\dn[S+] [PATTERN] list schemas\n" -msgstr " \\dn[S+] [MODÈLE] affiche la liste des schémas\n" +msgstr " \\dn[S+] [MODÈLE] affiche la liste des schémas\n" #: help.c:240 #, c-format msgid " \\do[S] [PATTERN] list operators\n" -msgstr " \\do[S] [MODÈLE] affiche la liste des opérateurs\n" +msgstr " \\do[S] [MODÈLE] affiche la liste des opérateurs\n" #: help.c:241 #, c-format msgid " \\dO[S+] [PATTERN] list collations\n" -msgstr " \\dO[S+] [MODÈLE] affiche la liste des collationnements\n" +msgstr " \\dO[S+] [MODÈLE] affiche la liste des collationnements\n" #: help.c:242 #, c-format msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n" msgstr "" -" \\dp [MODÈLE] affiche la liste des droits d'accès aux tables,\n" -" vues, séquences\n" +" \\dp [MODÈLE] affiche la liste des droits d'accès aux tables,\n" +" vues, séquences\n" #: help.c:243 #, c-format msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n" -msgstr " \\drds [MODEL1 [MODEL2]] liste la configuration utilisateur par base de données\n" +msgstr " \\drds [MODEL1 [MODEL2]] liste la configuration utilisateur par base de données\n" #: help.c:244 #, c-format msgid " \\ds[S+] [PATTERN] list sequences\n" -msgstr " \\ds[S+] [MODÈLE] affiche la liste des séquences\n" +msgstr " \\ds[S+] [MODÈLE] affiche la liste des séquences\n" #: help.c:245 #, c-format msgid " \\dt[S+] [PATTERN] list tables\n" -msgstr " \\dt[S+] [MODÈLE] affiche la liste des tables\n" +msgstr " \\dt[S+] [MODÈLE] affiche la liste des tables\n" #: help.c:246 #, c-format msgid " \\dT[S+] [PATTERN] list data types\n" -msgstr " \\dT[S+] [MODÈLE] affiche la liste des types de données\n" +msgstr " \\dT[S+] [MODÈLE] affiche la liste des types de données\n" #: help.c:247 #, c-format msgid " \\du[S+] [PATTERN] list roles\n" -msgstr " \\du[S+] [MODÈLE] affiche la liste des rôles (utilisateurs)\n" +msgstr " \\du[S+] [MODÈLE] affiche la liste des rôles (utilisateurs)\n" #: help.c:248 #, c-format msgid " \\dv[S+] [PATTERN] list views\n" -msgstr " \\dv[S+] [MODÈLE] affiche la liste des vues\n" +msgstr " \\dv[S+] [MODÈLE] affiche la liste des vues\n" #: help.c:249 #, c-format msgid " \\dE[S+] [PATTERN] list foreign tables\n" -msgstr " \\dE[S+] [MODÈLE] affiche la liste des tables distantes\n" +msgstr " \\dE[S+] [MODÈLE] affiche la liste des tables distantes\n" #: help.c:250 #, c-format msgid " \\dx[+] [PATTERN] list extensions\n" -msgstr " \\dx[+] [MODÈLE] affiche la liste des extensions\n" +msgstr " \\dx[+] [MODÈLE] affiche la liste des extensions\n" #: help.c:251 #, c-format msgid " \\dy [PATTERN] list event triggers\n" -msgstr " \\dy [MODÈLE] affiche les triggers sur évènement\n" +msgstr " \\dy [MODÈLE] affiche les triggers sur évènement\n" #: help.c:252 #, c-format msgid " \\l[+] [PATTERN] list databases\n" -msgstr " \\l[+] [MODÈLE] affiche la liste des bases de données\n" +msgstr " \\l[+] [MODÈLE] affiche la liste des bases de données\n" #: help.c:253 #, c-format msgid " \\sf[+] FUNCNAME show a function's definition\n" -msgstr " \\sf[+] [FONCTION] édite la définition d'une fonction\n" +msgstr " \\sf[+] [FONCTION] édite la définition d'une fonction\n" #: help.c:254 #, c-format msgid " \\sv[+] VIEWNAME show a view's definition\n" -msgstr " \\sv [FONCTION] édite la définition d'une vue\n" +msgstr " \\sv [FONCTION] édite la définition d'une vue\n" #: help.c:255 #, c-format msgid " \\z [PATTERN] same as \\dp\n" -msgstr " \\z [MODÈLE] identique à \\dp\n" +msgstr " \\z [MODÈLE] identique à \\dp\n" #: help.c:258 #, c-format @@ -2669,22 +2679,22 @@ msgstr "Formatage\n" #, c-format msgid " \\a toggle between unaligned and aligned output mode\n" msgstr "" -" \\a bascule entre les modes de sortie alignée et non\n" -" alignée\n" +" \\a bascule entre les modes de sortie alignée et non\n" +" alignée\n" #: help.c:260 #, c-format msgid " \\C [STRING] set table title, or unset if none\n" msgstr "" -" \\C [CHAÎNE] initialise le titre d'une table, ou le désactive en\n" +" \\C [CHAÃŽNE] initialise le titre d'une table, ou le désactive en\n" " l'absence d'argument\n" #: help.c:261 #, c-format msgid " \\f [STRING] show or set field separator for unaligned query output\n" msgstr "" -" \\f [CHAÎNE] affiche ou initialise le séparateur de champ pour\n" -" une sortie non alignée des requêtes\n" +" \\f [CHAÃŽNE] affiche ou initialise le séparateur de champ pour\n" +" une sortie non alignée des requêtes\n" #: help.c:262 #, c-format @@ -2699,7 +2709,7 @@ msgid "" " numericlocale|recordsep|recordsep_zero|tuples_only|title|tableattr|pager|\n" " unicode_border_linestyle|unicode_column_linestyle|unicode_header_linestyle})\n" msgstr "" -" \\pset [NOM [VALEUR]] règle l'affichage de la table\n" +" \\pset [NOM [VALEUR]] règle l'affichage de la table\n" " (NOM := {format|border|expanded|fieldsep|fieldsep_zero|footer|null|\n" " numericlocale|recordsep|recordsep_zero|tuples_only|title|tableattr|pager|\n" " unicode_border_linestyle|unicode_column_linestyle|unicode_header_linestyle})\n" @@ -2713,13 +2723,13 @@ msgstr " \\t affiche uniquement les lignes (actuellement %s)\ #, c-format msgid " \\T [STRING] set HTML
tag attributes, or unset if none\n" msgstr "" -" \\T [CHAÎNE] initialise les attributs HTML de la balise
,\n" +" \\T [CHAÃŽNE] initialise les attributs HTML de la balise
,\n" " ou l'annule en l'absence d'argument\n" #: help.c:271 #, 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" +msgstr " \\x [on|off|auto] bascule l'affichage étendu (actuellement %s)\n" #: help.c:275 #, c-format @@ -2733,8 +2743,8 @@ msgid "" " connect to new database (currently \"%s\")\n" msgstr "" " \\c[onnect] {[NOM_BASE|- UTILISATEUR|- HOTE|- PORT|-] | conninfo}\n" -" se connecte à une autre base de données\n" -" (actuellement « %s »)\n" +" se connecte à une autre base de données\n" +" (actuellement « %s »)\n" #: help.c:281 #, c-format @@ -2743,7 +2753,7 @@ msgid "" " connect to new database (currently no connection)\n" msgstr "" " \\c[onnect] {[NOM_BASE|- UTILISATEUR|- HOTE|- PORT|-] | conninfo}\n" -" se connecte à une nouvelle base de données\n" +" se connecte à une nouvelle base de données\n" " (aucune connexion actuellement)\n" #: help.c:283 @@ -2756,7 +2766,7 @@ msgstr " \\encoding [ENCODAGE] affiche ou initialise l'encodage du client\n" 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" +" modifie de façon sécurisé le mot de passe d'un\n" " utilisateur\n" #: help.c:285 @@ -2767,30 +2777,30 @@ msgstr " \\conninfo affiche des informations sur la connexion en cou #: help.c:288 #, c-format msgid "Operating System\n" -msgstr "Système d'exploitation\n" +msgstr "Système d'exploitation\n" #: help.c:289 #, c-format msgid " \\cd [DIR] change the current working directory\n" -msgstr " \\cd [RÉPERTOIRE] change de répertoire de travail\n" +msgstr " \\cd [RÉPERTOIRE] change de répertoire de travail\n" #: help.c:290 #, c-format msgid " \\setenv NAME [VALUE] set or unset environment variable\n" -msgstr " \\setenv NOM [VALEUR] (dés)initialise une variable d'environnement\n" +msgstr " \\setenv NOM [VALEUR] (dés)initialise une variable d'environnement\n" #: help.c:291 #, 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" +" \\timing [on|off] bascule l'activation du chronométrage des commandes\n" " (actuellement %s)\n" #: help.c:293 #, c-format msgid " \\! [COMMAND] execute command in shell or start interactive shell\n" msgstr "" -" \\! [COMMANDE] exécute la commande dans un shell ou exécute un\n" +" \\! [COMMANDE] exécute la commande dans un shell ou exécute un\n" " shell interactif\n" #: help.c:296 @@ -2802,7 +2812,7 @@ msgstr "Variables\n" #, c-format msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" msgstr "" -" \\prompt [TEXTE] NOM demande à l'utilisateur de configurer la variable\n" +" \\prompt [TEXTE] NOM demande à l'utilisateur de configurer la variable\n" " interne\n" #: help.c:298 @@ -2810,17 +2820,17 @@ msgstr "" 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" +" toutes en l'absence de paramètre\n" #: help.c:299 #, c-format msgid " \\unset NAME unset (delete) internal variable\n" -msgstr " \\unset NOM désactive (supprime) la variable interne\n" +msgstr " \\unset NOM désactive (supprime) la variable interne\n" #: help.c:302 #, c-format msgid "Large Objects\n" -msgstr "« Large objects »\n" +msgstr "« Large objects »\n" #: help.c:303 #, c-format @@ -2834,7 +2844,7 @@ msgstr "" " \\lo_import FICHIER [COMMENTAIRE]\n" " \\lo_list\n" " \\lo_unlink OIDLOB\n" -" opérations sur les « Large Objects »\n" +" opérations sur les « Large Objects »\n" #: help.c:330 #, c-format @@ -2842,7 +2852,7 @@ msgid "" "List of specially treated variables\n" "\n" msgstr "" -"Liste des variables traitées spécialement\n" +"Liste des variables traitées spécialement\n" "\n" #: help.c:332 @@ -2864,7 +2874,7 @@ msgstr "" #: help.c:336 #, c-format msgid " AUTOCOMMIT if set, successful SQL commands are automatically committed\n" -msgstr " AUTOCOMMIT si activé, les commandes SQL réussies sont automatiquement validées\n" +msgstr " AUTOCOMMIT si activé, les commandes SQL réussies sont automatiquement validées\n" #: help.c:337 #, c-format @@ -2872,13 +2882,13 @@ msgid "" " COMP_KEYWORD_CASE determines the case used to complete SQL key words\n" " [lower, upper, preserve-lower, preserve-upper]\n" msgstr "" -" COMP_KEYWORD_CASE détermine la casse utilisée pour compléter les mots clés SQL\n" +" COMP_KEYWORD_CASE détermine la casse utilisée pour compléter les mots clés SQL\n" " [lower, upper, preserve-lower, preserve-upper]\n" #: help.c:339 #, c-format msgid " DBNAME the currently connected database name\n" -msgstr " DBNAME le nom de base de données actuel\n" +msgstr " DBNAME le nom de base de données actuel\n" #: help.c:340 #, c-format @@ -2886,7 +2896,7 @@ msgid "" " ECHO controls what input is written to standard output\n" " [all, errors, none, queries]\n" msgstr "" -" ECHO contrôle ce qui est envoyé sur la sortie standard\n" +" ECHO contrôle ce qui est envoyé sur la sortie standard\n" " [all, errors, none, queries]\n" #: help.c:342 @@ -2895,13 +2905,13 @@ msgid "" " ECHO_HIDDEN if set, display internal queries executed by backslash commands;\n" " if set to \"noexec\", just show without execution\n" msgstr "" -" ECHO_HIDDEN si activé, affiche les requêtes internes exécutées par les méta-commandes ;\n" -" si configuré à « noexec », affiche les requêtes mais ne les exécute pas\n" +" ECHO_HIDDEN si activé, affiche les requêtes internes exécutées par les méta-commandes ;\n" +" si configuré à « noexec », affiche les requêtes mais ne les exécute pas\n" #: help.c:344 #, c-format msgid " ENCODING current client character set encoding\n" -msgstr " ENCODING encodage du jeu de caractères client\n" +msgstr " ENCODING encodage du jeu de caractères client\n" #: help.c:345 #, c-format @@ -2909,48 +2919,48 @@ msgid "" " FETCH_COUNT the number of result rows to fetch and display at a time\n" " (default: 0=unlimited)\n" msgstr "" -" FETCH_COUNT le nombre de lignes résultats à récupérer et à afficher à la fois\n" -" (par défaut 0 pour illimité)\n" +" FETCH_COUNT le nombre de lignes résultats à récupérer et à afficher à la fois\n" +" (par défaut 0 pour illimité)\n" #: help.c:347 #, c-format msgid " HISTCONTROL controls command history [ignorespace, ignoredups, ignoreboth]\n" -msgstr " HISTCONTROL contrôle l'historique des commandes [ignorespace, ignoredups, ignoreboth]\n" +msgstr " HISTCONTROL contrôle l'historique des commandes [ignorespace, ignoredups, ignoreboth]\n" #: help.c:348 #, c-format msgid " HISTFILE file name used to store the command history\n" -msgstr " HISTFILE nom du fichier utilisé pour stocker l'historique des commandes\n" +msgstr " HISTFILE nom du fichier utilisé pour stocker l'historique des commandes\n" #: help.c:349 #, c-format msgid " HISTSIZE the number of commands to store in the command history\n" -msgstr " HISTSIZE le nombre de commandes à stocker dans l'historique de commandes\n" +msgstr " HISTSIZE le nombre de commandes à stocker dans l'historique de commandes\n" #: help.c:350 #, c-format msgid " HOST the currently connected database server host\n" -msgstr " HOST l'hôte de la base de données\n" +msgstr " HOST l'hôte de la base de données\n" #: help.c:351 #, c-format msgid " IGNOREEOF if unset, sending an EOF to interactive session terminates application\n" -msgstr " IGNOREEOF si non configuré, envoyer un EOF à une session interactive fait quitter l'application\n" +msgstr " IGNOREEOF si non configuré, envoyer un EOF à une session interactive fait quitter l'application\n" #: help.c:352 #, c-format msgid " LASTOID value of the last affected OID\n" -msgstr " LASTOID valeur du dernier OID affecté\n" +msgstr " LASTOID valeur du dernier OID affecté\n" #: help.c:353 #, c-format msgid " ON_ERROR_ROLLBACK if set, an error doesn't stop a transaction (uses implicit savepoints)\n" -msgstr " ON_ERROR_ROLLBACK si activé, une erreur n'arrête pas une transaction (utilise des savepoints implicites)\n" +msgstr " ON_ERROR_ROLLBACK si activé, une erreur n'arrête pas une transaction (utilise des savepoints implicites)\n" #: help.c:354 #, c-format msgid " ON_ERROR_STOP stop batch execution after error\n" -msgstr " ON_ERROR_STOP arrête l'exécution d'un batch après une erreur\n" +msgstr " ON_ERROR_STOP arrête l'exécution d'un batch après une erreur\n" #: help.c:355 #, c-format @@ -2960,47 +2970,47 @@ msgstr " PORT port du server pour la connexion actuelle\n" #: help.c:356 #, c-format msgid " PROMPT1 specifies the standard psql prompt\n" -msgstr " PROMPT1 spécifie l'invite standard de psql\n" +msgstr " PROMPT1 spécifie l'invite standard de psql\n" #: help.c:357 #, c-format msgid " PROMPT2 specifies the prompt used when a statement continues from a previous line\n" -msgstr " PROMPT2 spécifie l'invite utilisé quand une requête continue après la ligne courante\n" +msgstr " PROMPT2 spécifie l'invite utilisé quand une requête continue après la ligne courante\n" #: help.c:358 #, c-format msgid " PROMPT3 specifies the prompt used during COPY ... FROM STDIN\n" -msgstr " PROMPT3 spécifie l'invite utilisée lors d'un COPY ... FROM STDIN\n" +msgstr " PROMPT3 spécifie l'invite utilisée lors d'un COPY ... FROM STDIN\n" #: help.c:359 #, c-format msgid " QUIET run quietly (same as -q option)\n" -msgstr " QUIET s'exécute en silence (identique à l'option -q)\n" +msgstr " QUIET s'exécute en silence (identique à l'option -q)\n" #: help.c:360 #, c-format msgid " SHOW_CONTEXT controls display of message context fields [never, errors, always]\n" -msgstr " SHOW_CONTEXT contrôle l'affichage des champs de contexte du message [never, errors, always]\n" +msgstr " SHOW_CONTEXT contrôle l'affichage des champs de contexte du message [never, errors, always]\n" #: help.c:361 #, c-format msgid " SINGLELINE end of line terminates SQL command mode (same as -S option)\n" -msgstr " SINGLELINE une fin de ligne termine le mode de commande SQL (identique à l'option -S)\n" +msgstr " SINGLELINE une fin de ligne termine le mode de commande SQL (identique à l'option -S)\n" #: help.c:362 #, c-format msgid " SINGLESTEP single-step mode (same as -s option)\n" -msgstr " SINGLESTEP mode pas à pas (identique à l'option -s)\n" +msgstr " SINGLESTEP mode pas à pas (identique à l'option -s)\n" #: help.c:363 #, c-format msgid " USER the currently connected database user\n" -msgstr " USER l'utilisateur actuellement connecté\n" +msgstr " USER l'utilisateur actuellement connecté\n" #: help.c:364 #, c-format msgid " VERBOSITY controls verbosity of error reports [default, verbose, terse]\n" -msgstr " VERBOSITY contrôle la verbosité des rapports d'erreurs [default, verbose, terse]\n" +msgstr " VERBOSITY contrôle la verbosité des rapports d'erreurs [default, verbose, terse]\n" #: help.c:366 #, c-format @@ -3009,7 +3019,7 @@ msgid "" "Display settings:\n" msgstr "" "\n" -"Paramètres d'affichage :\n" +"Paramètres d'affichage :\n" #: help.c:368 #, c-format @@ -3030,29 +3040,29 @@ msgstr " border style de bordure (nombre)\n" #: help.c:371 #, c-format msgid " columns target width for the wrapped format\n" -msgstr " columns largeur cible pour le format encadré\n" +msgstr " columns largeur cible pour le format encadré\n" #: help.c:372 #, c-format msgid " expanded (or x) expanded output [on, off, auto]\n" -msgstr " expanded (or x) sortie étendue [on, off, auto]\n" +msgstr " expanded (or x) sortie étendue [on, off, auto]\n" #: help.c:373 #, c-format msgid " fieldsep field separator for unaligned output (default \"%s\")\n" -msgstr " fieldsep champ séparateur pour l'affichage non aligné (par défaut « %s »)\n" +msgstr " fieldsep champ séparateur pour l'affichage non aligné (par défaut « %s »)\n" #: help.c:374 #, c-format msgid " fieldsep_zero set field separator for unaligned output to zero byte\n" msgstr "" -" fieldsep_zero configure le séparateur de champ pour l'affichage non\\n\n" -" aligné à l'octet zéro\n" +" fieldsep_zero configure le séparateur de champ pour l'affichage non\\n\n" +" aligné à l'octet zéro\n" #: help.c:375 #, c-format msgid " footer enable or disable display of the table footer [on, off]\n" -msgstr " footer active ou désactive l'affiche du bas de tableau [on, off]\n" +msgstr " footer active ou désactive l'affiche du bas de tableau [on, off]\n" #: help.c:376 #, c-format @@ -3067,7 +3077,7 @@ msgstr " linestyle configure l'affichage des lignes de bordure [ascii, #: help.c:378 #, c-format msgid " null set the string to be printed in place of a null value\n" -msgstr " null configure la chaîne à afficher à la place d'une valeur NULL\n" +msgstr " null configure la chaîne à afficher à la place d'une valeur NULL\n" #: help.c:379 #, c-format @@ -3075,25 +3085,25 @@ msgid "" " numericlocale enable or disable display of a locale-specific character to separate\n" " groups of digits [on, off]\n" msgstr "" -" numericlocale active ou désactive l'affichage d'un caractère spécigique à la locale pour séparer\n" +" numericlocale active ou désactive l'affichage d'un caractère spécigique à la locale pour séparer\n" " des groupes de chiffres [on, off]\n" #: help.c:381 #, c-format msgid " pager control when an external pager is used [yes, no, always]\n" -msgstr " pager contrôle quand un paginateur externe est utilisé [yes, no, always]\n" +msgstr " pager contrôle quand un paginateur externe est utilisé [yes, no, always]\n" #: help.c:382 #, c-format msgid " recordsep record (line) separator for unaligned output\n" -msgstr " recordsep enregistre le séparateur de ligne pour les affichages non alignés\n" +msgstr " recordsep enregistre le séparateur de ligne pour les affichages non alignés\n" #: help.c:383 #, c-format msgid " recordsep_zero set record separator for unaligned output to zero byte\n" msgstr "" -" recordsep_zero initialise le séparateur d'enregistrements pour un affichage\n" -" non aligné à l'octet zéro\n" +" recordsep_zero initialise le séparateur d'enregistrements pour un affichage\n" +" non aligné à l'octet zéro\n" "\n" #: help.c:384 @@ -3103,17 +3113,17 @@ msgid "" " column widths for left-aligned data types in latex-longtable format\n" msgstr "" " tableattr (or T) 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 format latex-longtable\n" +" proportionnelles de colonnes pour les types de données alignés à gauche dans le format latex-longtable\n" #: help.c:386 #, c-format msgid " title set the table title for any subsequently printed tables\n" -msgstr " title configure le titre de la table pour toute table affichée\n" +msgstr " title configure le titre de la table pour toute table affichée\n" #: help.c:387 #, c-format msgid " tuples_only if set, only actual table data is shown\n" -msgstr " tuples_only si activé, seules les données de la table sont affichées\n" +msgstr " tuples_only si activé, seules les données de la table sont affichées\n" #: help.c:388 #, c-format @@ -3164,7 +3174,7 @@ msgstr "" #: help.c:402 #, c-format msgid " COLUMNS number of columns for wrapped format\n" -msgstr " COLUMNS nombre de colonnes pour le format encadré\n" +msgstr " COLUMNS nombre de colonnes pour le format encadré\n" #: help.c:403 #, c-format @@ -3174,32 +3184,32 @@ msgstr " PAGER nom du paginateur externe\n" #: help.c:404 #, c-format msgid " PGAPPNAME same as the application_name connection parameter\n" -msgstr " PGAPPNAME identique au paramètre de connexion application_name\n" +msgstr " PGAPPNAME identique au paramètre de connexion application_name\n" #: help.c:405 #, c-format msgid " PGDATABASE same as the dbname connection parameter\n" -msgstr " PGDATABASE identique au paramètre de connexion dbname\n" +msgstr " PGDATABASE identique au paramètre de connexion dbname\n" #: help.c:406 #, c-format msgid " PGHOST same as the host connection parameter\n" -msgstr " PGHOST identique au paramètre de connexion host\n" +msgstr " PGHOST identique au paramètre de connexion host\n" #: help.c:407 #, c-format msgid " PGPORT same as the port connection parameter\n" -msgstr " PGPORT identique au paramètre de connexion port\n" +msgstr " PGPORT identique au paramètre de connexion port\n" #: help.c:408 #, c-format msgid " PGUSER same as the user connection parameter\n" -msgstr " PGUSER identique au paramètre de connexion user\n" +msgstr " PGUSER identique au paramètre de connexion user\n" #: help.c:409 #, c-format msgid " PGPASSWORD connection password (not recommended)\n" -msgstr " PGPASSWORD mot de passe de connexion (non recommendé)\n" +msgstr " PGPASSWORD mot de passe de connexion (non recommendé)\n" #: help.c:410 #, c-format @@ -3213,7 +3223,7 @@ msgid "" " 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" +" éditeur utilisé par les commandes \\e, \\ef et \\ev\n" #: help.c:413 #, c-format @@ -3222,7 +3232,7 @@ msgid "" " 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" +" comment spécifier un numéro de ligne lors de l'appel de l'éditeur\n" #: help.c:415 #, c-format @@ -3237,16 +3247,16 @@ msgstr " PSQLRC autre emplacement pour le fichier .psqlrc de l'util #: help.c:417 #, c-format msgid " SHELL shell used by the \\! command\n" -msgstr " SHELL shell utilisé par la commande \\!\n" +msgstr " SHELL shell utilisé par la commande \\!\n" #: help.c:418 #, c-format msgid " TMPDIR directory for temporary files\n" -msgstr " TMPDIR répertoire pour les fichiers temporaires\n" +msgstr " TMPDIR répertoire pour les fichiers temporaires\n" #: help.c:461 msgid "Available help:\n" -msgstr "Aide-mémoire disponible :\n" +msgstr "Aide-mémoire disponible :\n" #: help.c:545 #, c-format @@ -3269,38 +3279,38 @@ 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" +"Aucun aide-mémoire disponible pour « %s ».\n" +"Essayez \\h sans arguments pour afficher les aide-mémoires disponibles.\n" #: input.c:216 #, c-format msgid "could not read from input file: %s\n" -msgstr "n'a pas pu lire à partir du fichier en entrée : %s\n" +msgstr "n'a pas pu lire à partir du fichier en entrée : %s\n" #: input.c:471 input.c:510 #, c-format msgid "could not save history to file \"%s\": %s\n" -msgstr "n'a pas pu sauvegarder l'historique dans le fichier « %s » : %s\n" +msgstr "n'a pas pu sauvegarder l'historique dans le fichier « %s » : %s\n" #: input.c:530 #, c-format msgid "history is not supported by this installation\n" -msgstr "l'historique n'est pas supportée par cette installation\n" +msgstr "l'historique n'est pas supportée par cette installation\n" #: large_obj.c:64 #, c-format msgid "%s: not connected to a database\n" -msgstr "%s : non connecté à une base de données\n" +msgstr "%s : non connecté à une base de données\n" #: large_obj.c:83 #, c-format msgid "%s: current transaction is aborted\n" -msgstr "%s : la transaction en cours est abandonnée\n" +msgstr "%s : la transaction en cours est abandonnée\n" #: large_obj.c:86 #, c-format msgid "%s: unknown transaction status\n" -msgstr "%s : état de la transaction inconnu\n" +msgstr "%s : état de la transaction inconnu\n" #: large_obj.c:287 large_obj.c:298 msgid "ID" @@ -3308,20 +3318,20 @@ msgstr "ID" #: large_obj.c:308 msgid "Large objects" -msgstr "« Large objects »" +msgstr "« Large objects »" #: mainloop.c:168 #, c-format msgid "Use \"\\q\" to leave %s.\n" -msgstr "Saisissez « \\q » pour quitter %s.\n" +msgstr "Saisissez « \\q » pour quitter %s.\n" #: mainloop.c:190 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" +"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:210 msgid "You are using psql, the command-line interface to PostgreSQL." @@ -3338,20 +3348,20 @@ msgid "" 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" +" \\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" #: psqlscanslash.l:584 #, c-format msgid "unterminated quoted string\n" -msgstr "chaîne entre guillemets non terminée\n" +msgstr "chaîne entre guillemets non terminée\n" #: psqlscanslash.l:738 #, c-format msgid "%s: out of memory\n" -msgstr "%s : mémoire épuisée\n" +msgstr "%s : mémoire épuisée\n" #: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:64 sql_help.c:66 #: sql_help.c:68 sql_help.c:79 sql_help.c:81 sql_help.c:83 sql_help.c:109 @@ -3359,12 +3369,12 @@ msgstr "%s : m #: sql_help.c:126 sql_help.c:128 sql_help.c:221 sql_help.c:223 sql_help.c:224 #: sql_help.c:226 sql_help.c:228 sql_help.c:231 sql_help.c:233 sql_help.c:235 #: sql_help.c:237 sql_help.c:249 sql_help.c:250 sql_help.c:251 sql_help.c:253 -#: sql_help.c:299 sql_help.c:301 sql_help.c:303 sql_help.c:305 sql_help.c:365 -#: sql_help.c:370 sql_help.c:372 sql_help.c:415 sql_help.c:417 sql_help.c:420 -#: sql_help.c:422 sql_help.c:489 sql_help.c:494 sql_help.c:499 sql_help.c:504 -#: sql_help.c:509 sql_help.c:558 sql_help.c:560 sql_help.c:562 sql_help.c:564 -#: sql_help.c:567 sql_help.c:569 sql_help.c:580 sql_help.c:582 sql_help.c:624 -#: sql_help.c:626 sql_help.c:628 sql_help.c:631 sql_help.c:633 sql_help.c:635 +#: sql_help.c:300 sql_help.c:302 sql_help.c:304 sql_help.c:306 sql_help.c:367 +#: sql_help.c:372 sql_help.c:374 sql_help.c:417 sql_help.c:419 sql_help.c:422 +#: sql_help.c:424 sql_help.c:491 sql_help.c:496 sql_help.c:501 sql_help.c:506 +#: sql_help.c:511 sql_help.c:560 sql_help.c:562 sql_help.c:564 sql_help.c:566 +#: sql_help.c:569 sql_help.c:571 sql_help.c:582 sql_help.c:584 sql_help.c:625 +#: sql_help.c:627 sql_help.c:629 sql_help.c:632 sql_help.c:634 sql_help.c:636 #: sql_help.c:669 sql_help.c:673 sql_help.c:677 sql_help.c:696 sql_help.c:699 #: sql_help.c:702 sql_help.c:731 sql_help.c:743 sql_help.c:751 sql_help.c:754 #: sql_help.c:757 sql_help.c:772 sql_help.c:775 sql_help.c:819 sql_help.c:842 @@ -3404,14 +3414,14 @@ msgstr "%s : m msgid "name" msgstr "nom" -#: sql_help.c:37 sql_help.c:40 sql_help.c:43 sql_help.c:309 sql_help.c:1405 +#: sql_help.c:37 sql_help.c:40 sql_help.c:43 sql_help.c:311 sql_help.c:1405 #: sql_help.c:2644 sql_help.c:3539 msgid "aggregate_signature" -msgstr "signature_agrégat" +msgstr "signature_agrégat" #: sql_help.c:38 sql_help.c:65 sql_help.c:80 sql_help.c:116 sql_help.c:236 -#: sql_help.c:254 sql_help.c:373 sql_help.c:421 sql_help.c:498 sql_help.c:544 -#: sql_help.c:559 sql_help.c:581 sql_help.c:632 sql_help.c:698 sql_help.c:753 +#: sql_help.c:254 sql_help.c:375 sql_help.c:423 sql_help.c:500 sql_help.c:546 +#: sql_help.c:561 sql_help.c:583 sql_help.c:633 sql_help.c:698 sql_help.c:753 #: sql_help.c:774 sql_help.c:820 sql_help.c:844 sql_help.c:854 sql_help.c:884 #: sql_help.c:904 sql_help.c:996 sql_help.c:1061 sql_help.c:1104 #: sql_help.c:1125 sql_help.c:1139 sql_help.c:1151 sql_help.c:1164 @@ -3420,28 +3430,28 @@ msgid "new_name" msgstr "nouveau_nom" #: sql_help.c:41 sql_help.c:67 sql_help.c:82 sql_help.c:118 sql_help.c:234 -#: sql_help.c:252 sql_help.c:371 sql_help.c:457 sql_help.c:503 sql_help.c:583 -#: sql_help.c:592 sql_help.c:651 sql_help.c:672 sql_help.c:701 sql_help.c:756 +#: sql_help.c:252 sql_help.c:373 sql_help.c:459 sql_help.c:505 sql_help.c:585 +#: sql_help.c:594 sql_help.c:652 sql_help.c:672 sql_help.c:701 sql_help.c:756 #: sql_help.c:856 sql_help.c:882 sql_help.c:902 sql_help.c:1045 sql_help.c:1063 #: sql_help.c:1106 sql_help.c:1127 sql_help.c:1189 sql_help.c:1291 #: sql_help.c:2322 msgid "new_owner" -msgstr "nouveau_propriétaire" +msgstr "nouveau_propriétaire" -#: sql_help.c:44 sql_help.c:69 sql_help.c:84 sql_help.c:238 sql_help.c:302 -#: sql_help.c:423 sql_help.c:508 sql_help.c:634 sql_help.c:676 sql_help.c:704 +#: sql_help.c:44 sql_help.c:69 sql_help.c:84 sql_help.c:238 sql_help.c:303 +#: sql_help.c:425 sql_help.c:510 sql_help.c:635 sql_help.c:676 sql_help.c:704 #: sql_help.c:759 sql_help.c:886 sql_help.c:998 sql_help.c:1108 sql_help.c:1129 #: sql_help.c:1141 sql_help.c:1153 sql_help.c:1196 sql_help.c:1295 msgid "new_schema" -msgstr "nouveau_schéma" +msgstr "nouveau_schéma" #: sql_help.c:45 sql_help.c:1458 sql_help.c:2645 sql_help.c:3558 msgid "where aggregate_signature is:" -msgstr "où signature_agrégat est :" +msgstr "où signature_agrégat est :" -#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:319 sql_help.c:344 -#: sql_help.c:347 sql_help.c:350 sql_help.c:490 sql_help.c:495 sql_help.c:500 -#: sql_help.c:505 sql_help.c:510 sql_help.c:1423 sql_help.c:1459 +#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:321 sql_help.c:346 +#: sql_help.c:349 sql_help.c:352 sql_help.c:492 sql_help.c:497 sql_help.c:502 +#: sql_help.c:507 sql_help.c:512 sql_help.c:1423 sql_help.c:1459 #: sql_help.c:1462 sql_help.c:1465 sql_help.c:1609 sql_help.c:1628 #: sql_help.c:1631 sql_help.c:1876 sql_help.c:2646 sql_help.c:2649 #: sql_help.c:2652 sql_help.c:2737 sql_help.c:3122 sql_help.c:3454 @@ -3449,26 +3459,26 @@ msgstr "o msgid "argmode" msgstr "mode_argument" -#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:320 sql_help.c:345 -#: sql_help.c:348 sql_help.c:351 sql_help.c:491 sql_help.c:496 sql_help.c:501 -#: sql_help.c:506 sql_help.c:511 sql_help.c:1424 sql_help.c:1460 +#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:322 sql_help.c:347 +#: sql_help.c:350 sql_help.c:353 sql_help.c:493 sql_help.c:498 sql_help.c:503 +#: sql_help.c:508 sql_help.c:513 sql_help.c:1424 sql_help.c:1460 #: sql_help.c:1463 sql_help.c:1466 sql_help.c:1610 sql_help.c:1629 #: sql_help.c:1632 sql_help.c:1877 sql_help.c:2647 sql_help.c:2650 #: sql_help.c:2653 sql_help.c:2738 sql_help.c:3546 sql_help.c:3560 #: sql_help.c:3563 sql_help.c:3566 msgid "argname" -msgstr "nom_agrégat" +msgstr "nom_agrégat" -#: sql_help.c:48 sql_help.c:51 sql_help.c:54 sql_help.c:321 sql_help.c:346 -#: sql_help.c:349 sql_help.c:352 sql_help.c:492 sql_help.c:497 sql_help.c:502 -#: sql_help.c:507 sql_help.c:512 sql_help.c:1425 sql_help.c:1461 +#: sql_help.c:48 sql_help.c:51 sql_help.c:54 sql_help.c:323 sql_help.c:348 +#: sql_help.c:351 sql_help.c:354 sql_help.c:494 sql_help.c:499 sql_help.c:504 +#: sql_help.c:509 sql_help.c:514 sql_help.c:1425 sql_help.c:1461 #: sql_help.c:1464 sql_help.c:1467 sql_help.c:1878 sql_help.c:2648 #: sql_help.c:2651 sql_help.c:2654 sql_help.c:2739 sql_help.c:3547 #: sql_help.c:3561 sql_help.c:3564 sql_help.c:3567 msgid "argtype" msgstr "type_argument" -#: sql_help.c:110 sql_help.c:368 sql_help.c:446 sql_help.c:458 sql_help.c:814 +#: sql_help.c:110 sql_help.c:370 sql_help.c:448 sql_help.c:460 sql_help.c:814 #: sql_help.c:899 sql_help.c:1122 sql_help.c:1242 sql_help.c:1270 #: sql_help.c:1515 sql_help.c:1521 sql_help.c:1803 sql_help.c:1835 #: sql_help.c:1842 sql_help.c:1918 sql_help.c:2082 sql_help.c:2171 @@ -3480,7 +3490,7 @@ msgstr "option" #: sql_help.c:111 sql_help.c:815 sql_help.c:1243 sql_help.c:1919 #: sql_help.c:2083 sql_help.c:2531 msgid "where option can be:" -msgstr "où option peut être :" +msgstr "où option peut être :" #: sql_help.c:112 sql_help.c:1735 msgid "allowconn" @@ -3495,20 +3505,19 @@ msgstr "limite_de_connexion" msgid "istemplate" msgstr "istemplate" -#: sql_help.c:120 sql_help.c:571 sql_help.c:637 sql_help.c:652 sql_help.c:1001 -#: sql_help.c:1038 +#: sql_help.c:120 sql_help.c:573 sql_help.c:638 sql_help.c:1001 sql_help.c:1038 msgid "new_tablespace" msgstr "nouveau_tablespace" -#: sql_help.c:122 sql_help.c:125 sql_help.c:127 sql_help.c:517 sql_help.c:519 -#: sql_help.c:520 sql_help.c:823 sql_help.c:827 sql_help.c:830 sql_help.c:915 +#: sql_help.c:122 sql_help.c:125 sql_help.c:127 sql_help.c:519 sql_help.c:521 +#: sql_help.c:522 sql_help.c:823 sql_help.c:827 sql_help.c:830 sql_help.c:915 #: sql_help.c:918 sql_help.c:1250 sql_help.c:1253 sql_help.c:1255 #: sql_help.c:1887 sql_help.c:3341 sql_help.c:3732 msgid "configuration_parameter" -msgstr "paramètre_configuration" +msgstr "paramètre_configuration" -#: sql_help.c:123 sql_help.c:369 sql_help.c:441 sql_help.c:447 sql_help.c:459 -#: sql_help.c:518 sql_help.c:566 sql_help.c:643 sql_help.c:649 sql_help.c:824 +#: sql_help.c:123 sql_help.c:371 sql_help.c:443 sql_help.c:449 sql_help.c:461 +#: sql_help.c:520 sql_help.c:568 sql_help.c:644 sql_help.c:650 sql_help.c:824 #: sql_help.c:900 sql_help.c:916 sql_help.c:917 sql_help.c:1020 sql_help.c:1040 #: sql_help.c:1066 sql_help.c:1123 sql_help.c:1251 sql_help.c:1271 #: sql_help.c:1804 sql_help.c:1836 sql_help.c:1843 sql_help.c:1888 @@ -3521,13 +3530,13 @@ msgstr "valeur" #: sql_help.c:185 msgid "target_role" -msgstr "rôle_cible" +msgstr "rôle_cible" #: sql_help.c:186 sql_help.c:1787 sql_help.c:2130 sql_help.c:2135 #: sql_help.c:3104 sql_help.c:3111 sql_help.c:3125 sql_help.c:3131 #: sql_help.c:3436 sql_help.c:3443 sql_help.c:3457 sql_help.c:3463 msgid "schema_name" -msgstr "nom_schéma" +msgstr "nom_schéma" #: sql_help.c:187 msgid "abbreviated_grant_or_revoke" @@ -3535,11 +3544,11 @@ msgstr "grant_ou_revoke_raccourci" #: sql_help.c:188 msgid "where abbreviated_grant_or_revoke is one of:" -msgstr "où abbreviated_grant_or_revoke fait partie de :" +msgstr "où abbreviated_grant_or_revoke fait partie de :" #: sql_help.c:189 sql_help.c:190 sql_help.c:191 sql_help.c:192 sql_help.c:193 -#: sql_help.c:194 sql_help.c:195 sql_help.c:196 sql_help.c:542 sql_help.c:570 -#: sql_help.c:636 sql_help.c:777 sql_help.c:834 sql_help.c:1000 sql_help.c:1258 +#: sql_help.c:194 sql_help.c:195 sql_help.c:196 sql_help.c:544 sql_help.c:572 +#: sql_help.c:637 sql_help.c:777 sql_help.c:834 sql_help.c:1000 sql_help.c:1258 #: sql_help.c:1922 sql_help.c:1923 sql_help.c:1924 sql_help.c:1925 #: sql_help.c:1926 sql_help.c:2052 sql_help.c:2087 sql_help.c:2088 #: sql_help.c:2089 sql_help.c:2090 sql_help.c:2091 sql_help.c:2535 @@ -3550,9 +3559,9 @@ msgstr "o #: sql_help.c:3462 sql_help.c:3464 sql_help.c:3466 sql_help.c:3468 #: sql_help.c:3469 sql_help.c:3470 sql_help.c:3753 msgid "role_name" -msgstr "nom_rôle" +msgstr "nom_rôle" -#: sql_help.c:222 sql_help.c:434 sql_help.c:1011 sql_help.c:1013 +#: sql_help.c:222 sql_help.c:436 sql_help.c:1011 sql_help.c:1013 #: sql_help.c:1287 sql_help.c:1756 sql_help.c:1760 sql_help.c:1846 #: sql_help.c:1850 sql_help.c:1943 sql_help.c:2258 sql_help.c:2268 #: sql_help.c:2290 sql_help.c:3187 sql_help.c:3202 sql_help.c:3204 @@ -3572,7 +3581,7 @@ msgstr "expression" msgid "domain_constraint" msgstr "contrainte_domaine" -#: sql_help.c:227 sql_help.c:229 sql_help.c:232 sql_help.c:449 sql_help.c:450 +#: sql_help.c:227 sql_help.c:229 sql_help.c:232 sql_help.c:451 sql_help.c:452 #: sql_help.c:993 sql_help.c:1026 sql_help.c:1027 sql_help.c:1028 #: sql_help.c:1048 sql_help.c:1411 sql_help.c:1413 sql_help.c:1759 #: sql_help.c:1845 sql_help.c:1849 sql_help.c:2257 sql_help.c:2267 @@ -3584,50 +3593,50 @@ msgstr "nom_contrainte" msgid "new_constraint_name" msgstr "nouvelle_nom_contrainte" -#: sql_help.c:300 sql_help.c:898 +#: sql_help.c:301 sql_help.c:898 msgid "new_version" msgstr "nouvelle_version" -#: sql_help.c:304 sql_help.c:306 +#: sql_help.c:305 sql_help.c:307 msgid "member_object" msgstr "objet_membre" -#: sql_help.c:307 +#: sql_help.c:308 msgid "where member_object is:" -msgstr "où objet_membre fait partie de :" +msgstr "où objet_membre fait partie de :" + +#: sql_help.c:309 sql_help.c:314 sql_help.c:315 sql_help.c:316 sql_help.c:317 +#: sql_help.c:318 sql_help.c:319 sql_help.c:324 sql_help.c:328 sql_help.c:330 +#: sql_help.c:332 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:339 sql_help.c:340 sql_help.c:343 +#: sql_help.c:344 sql_help.c:1403 sql_help.c:1408 sql_help.c:1415 +#: sql_help.c:1416 sql_help.c:1417 sql_help.c:1418 sql_help.c:1419 +#: sql_help.c:1420 sql_help.c:1421 sql_help.c:1426 sql_help.c:1428 +#: sql_help.c:1432 sql_help.c:1434 sql_help.c:1438 sql_help.c:1439 +#: sql_help.c:1442 sql_help.c:1443 sql_help.c:1444 sql_help.c:1445 +#: sql_help.c:1446 sql_help.c:1447 sql_help.c:1448 sql_help.c:1449 +#: sql_help.c:1450 sql_help.c:1455 sql_help.c:1456 sql_help.c:3535 +#: sql_help.c:3540 sql_help.c:3541 sql_help.c:3542 sql_help.c:3543 +#: sql_help.c:3549 sql_help.c:3550 sql_help.c:3551 sql_help.c:3552 +#: sql_help.c:3553 sql_help.c:3554 sql_help.c:3555 sql_help.c:3556 +msgid "object_name" +msgstr "nom_objet" -#: sql_help.c:308 sql_help.c:1404 sql_help.c:3538 +#: sql_help.c:310 sql_help.c:1404 sql_help.c:3538 msgid "aggregate_name" -msgstr "nom_agrégat" +msgstr "nom_agrégat" -#: sql_help.c:310 sql_help.c:1406 sql_help.c:1674 sql_help.c:1678 +#: sql_help.c:312 sql_help.c:1406 sql_help.c:1674 sql_help.c:1678 #: sql_help.c:1680 sql_help.c:2662 msgid "source_type" msgstr "type_source" -#: sql_help.c:311 sql_help.c:1407 sql_help.c:1675 sql_help.c:1679 +#: sql_help.c:313 sql_help.c:1407 sql_help.c:1675 sql_help.c:1679 #: sql_help.c:1681 sql_help.c:2663 msgid "target_type" msgstr "type_cible" -#: sql_help.c:312 sql_help.c:313 sql_help.c:314 sql_help.c:315 sql_help.c:316 -#: sql_help.c:317 sql_help.c:322 sql_help.c:326 sql_help.c:328 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:336 sql_help.c:337 sql_help.c:338 sql_help.c:341 sql_help.c:342 -#: sql_help.c:1403 sql_help.c:1408 sql_help.c:1415 sql_help.c:1416 -#: sql_help.c:1417 sql_help.c:1418 sql_help.c:1419 sql_help.c:1420 -#: sql_help.c:1421 sql_help.c:1426 sql_help.c:1428 sql_help.c:1432 -#: sql_help.c:1434 sql_help.c:1438 sql_help.c:1439 sql_help.c:1442 -#: sql_help.c:1443 sql_help.c:1444 sql_help.c:1445 sql_help.c:1446 -#: sql_help.c:1447 sql_help.c:1448 sql_help.c:1449 sql_help.c:1450 -#: sql_help.c:1455 sql_help.c:1456 sql_help.c:3535 sql_help.c:3540 -#: sql_help.c:3541 sql_help.c:3542 sql_help.c:3543 sql_help.c:3549 -#: sql_help.c:3550 sql_help.c:3551 sql_help.c:3552 sql_help.c:3553 -#: sql_help.c:3554 sql_help.c:3555 sql_help.c:3556 -msgid "object_name" -msgstr "nom_objet" - -#: sql_help.c:318 sql_help.c:741 sql_help.c:1422 sql_help.c:1676 +#: sql_help.c:320 sql_help.c:741 sql_help.c:1422 sql_help.c:1676 #: sql_help.c:1711 sql_help.c:1774 sql_help.c:1996 sql_help.c:2027 #: sql_help.c:2426 sql_help.c:3121 sql_help.c:3453 sql_help.c:3544 #: sql_help.c:3647 sql_help.c:3651 sql_help.c:3655 sql_help.c:3658 @@ -3636,59 +3645,59 @@ msgstr "nom_objet" msgid "function_name" msgstr "nom_fonction" -#: sql_help.c:323 sql_help.c:734 sql_help.c:1429 sql_help.c:2020 +#: sql_help.c:325 sql_help.c:734 sql_help.c:1429 sql_help.c:2020 msgid "operator_name" -msgstr "nom_opérateur" +msgstr "nom_opérateur" -#: sql_help.c:324 sql_help.c:670 sql_help.c:674 sql_help.c:678 sql_help.c:1430 +#: sql_help.c:326 sql_help.c:670 sql_help.c:674 sql_help.c:678 sql_help.c:1430 #: sql_help.c:1997 sql_help.c:2780 msgid "left_type" msgstr "type_argument_gauche" -#: sql_help.c:325 sql_help.c:671 sql_help.c:675 sql_help.c:679 sql_help.c:1431 +#: sql_help.c:327 sql_help.c:671 sql_help.c:675 sql_help.c:679 sql_help.c:1431 #: sql_help.c:1998 sql_help.c:2781 msgid "right_type" msgstr "type_argument_droit" -#: sql_help.c:327 sql_help.c:329 sql_help.c:697 sql_help.c:700 sql_help.c:703 +#: sql_help.c:329 sql_help.c:331 sql_help.c:697 sql_help.c:700 sql_help.c:703 #: sql_help.c:732 sql_help.c:744 sql_help.c:752 sql_help.c:755 sql_help.c:758 #: sql_help.c:1433 sql_help.c:1435 sql_help.c:2017 sql_help.c:2038 #: sql_help.c:2273 sql_help.c:2790 sql_help.c:2799 msgid "index_method" -msgstr "méthode_indexage" +msgstr "méthode_indexage" -#: sql_help.c:339 sql_help.c:1044 sql_help.c:1451 sql_help.c:1884 +#: sql_help.c:341 sql_help.c:1044 sql_help.c:1451 sql_help.c:1884 #: sql_help.c:2249 sql_help.c:2395 sql_help.c:2913 sql_help.c:3135 #: sql_help.c:3467 msgid "type_name" msgstr "nom_type" -#: sql_help.c:340 sql_help.c:1452 sql_help.c:1883 sql_help.c:2396 +#: sql_help.c:342 sql_help.c:1452 sql_help.c:1883 sql_help.c:2396 #: sql_help.c:2620 sql_help.c:2914 sql_help.c:3127 sql_help.c:3459 msgid "lang_name" msgstr "nom_langage" -#: sql_help.c:343 +#: sql_help.c:345 msgid "and aggregate_signature is:" -msgstr "et signature_agrégat est :" +msgstr "et signature_agrégat est :" -#: sql_help.c:366 sql_help.c:1546 sql_help.c:1801 +#: sql_help.c:368 sql_help.c:1546 sql_help.c:1801 msgid "handler_function" msgstr "fonction_gestionnaire" -#: sql_help.c:367 sql_help.c:1802 +#: sql_help.c:369 sql_help.c:1802 msgid "validator_function" msgstr "fonction_validateur" -#: sql_help.c:416 sql_help.c:493 sql_help.c:625 sql_help.c:988 sql_help.c:1187 +#: sql_help.c:418 sql_help.c:495 sql_help.c:626 sql_help.c:988 sql_help.c:1187 #: sql_help.c:2264 sql_help.c:2265 sql_help.c:2281 sql_help.c:2282 msgid "action" msgstr "action" -#: sql_help.c:418 sql_help.c:425 sql_help.c:429 sql_help.c:430 sql_help.c:433 -#: sql_help.c:435 sql_help.c:436 sql_help.c:437 sql_help.c:439 sql_help.c:442 -#: sql_help.c:444 sql_help.c:445 sql_help.c:629 sql_help.c:639 sql_help.c:641 -#: sql_help.c:644 sql_help.c:646 sql_help.c:880 sql_help.c:990 sql_help.c:1003 +#: sql_help.c:420 sql_help.c:427 sql_help.c:431 sql_help.c:432 sql_help.c:435 +#: sql_help.c:437 sql_help.c:438 sql_help.c:439 sql_help.c:441 sql_help.c:444 +#: sql_help.c:446 sql_help.c:447 sql_help.c:630 sql_help.c:640 sql_help.c:642 +#: sql_help.c:645 sql_help.c:647 sql_help.c:880 sql_help.c:990 sql_help.c:1003 #: sql_help.c:1007 sql_help.c:1008 sql_help.c:1012 sql_help.c:1014 #: sql_help.c:1015 sql_help.c:1016 sql_help.c:1018 sql_help.c:1021 #: sql_help.c:1023 sql_help.c:1286 sql_help.c:1289 sql_help.c:1309 @@ -3705,69 +3714,69 @@ msgstr "action" msgid "column_name" msgstr "nom_colonne" -#: sql_help.c:419 sql_help.c:630 sql_help.c:991 +#: sql_help.c:421 sql_help.c:631 sql_help.c:991 msgid "new_column_name" msgstr "nouvelle_nom_colonne" -#: sql_help.c:424 sql_help.c:514 sql_help.c:638 sql_help.c:1002 sql_help.c:1200 +#: sql_help.c:426 sql_help.c:516 sql_help.c:639 sql_help.c:1002 sql_help.c:1200 msgid "where action is one of:" -msgstr "où action fait partie de :" +msgstr "où action fait partie de :" -#: sql_help.c:426 sql_help.c:431 sql_help.c:1004 sql_help.c:1009 +#: sql_help.c:428 sql_help.c:433 sql_help.c:1004 sql_help.c:1009 #: sql_help.c:1202 sql_help.c:1206 sql_help.c:1754 sql_help.c:1834 #: sql_help.c:2016 sql_help.c:2238 sql_help.c:2474 sql_help.c:3288 msgid "data_type" -msgstr "type_données" +msgstr "type_données" -#: sql_help.c:427 sql_help.c:432 sql_help.c:1005 sql_help.c:1010 +#: sql_help.c:429 sql_help.c:434 sql_help.c:1005 sql_help.c:1010 #: sql_help.c:1203 sql_help.c:1207 sql_help.c:1755 sql_help.c:1837 #: sql_help.c:1944 sql_help.c:2239 sql_help.c:2475 sql_help.c:2481 #: sql_help.c:3196 msgid "collation" msgstr "collationnement" -#: sql_help.c:428 sql_help.c:1006 sql_help.c:1838 sql_help.c:2240 +#: sql_help.c:430 sql_help.c:1006 sql_help.c:1838 sql_help.c:2240 #: sql_help.c:2251 msgid "column_constraint" msgstr "contrainte_colonne" -#: sql_help.c:438 sql_help.c:640 sql_help.c:1017 +#: sql_help.c:440 sql_help.c:641 sql_help.c:1017 msgid "integer" msgstr "entier" -#: sql_help.c:440 sql_help.c:443 sql_help.c:642 sql_help.c:645 sql_help.c:1019 +#: sql_help.c:442 sql_help.c:445 sql_help.c:643 sql_help.c:646 sql_help.c:1019 #: sql_help.c:1022 msgid "attribute_option" msgstr "option_attribut" -#: sql_help.c:448 sql_help.c:1024 sql_help.c:1839 sql_help.c:2241 +#: sql_help.c:450 sql_help.c:1024 sql_help.c:1839 sql_help.c:2241 #: sql_help.c:2252 msgid "table_constraint" msgstr "contrainte_table" -#: sql_help.c:451 sql_help.c:452 sql_help.c:453 sql_help.c:454 sql_help.c:1029 +#: sql_help.c:453 sql_help.c:454 sql_help.c:455 sql_help.c:456 sql_help.c:1029 #: sql_help.c:1030 sql_help.c:1031 sql_help.c:1032 sql_help.c:1453 msgid "trigger_name" msgstr "nom_trigger" -#: sql_help.c:455 sql_help.c:456 sql_help.c:1042 sql_help.c:1043 +#: sql_help.c:457 sql_help.c:458 sql_help.c:1042 sql_help.c:1043 #: sql_help.c:1840 sql_help.c:2244 msgid "parent_table" msgstr "table_parent" -#: sql_help.c:513 sql_help.c:563 sql_help.c:627 sql_help.c:1167 sql_help.c:1786 +#: sql_help.c:515 sql_help.c:565 sql_help.c:628 sql_help.c:1167 sql_help.c:1786 msgid "extension_name" msgstr "nom_extension" -#: sql_help.c:515 sql_help.c:1885 +#: sql_help.c:517 sql_help.c:1885 msgid "execution_cost" -msgstr "coût_exécution" +msgstr "coût_exécution" -#: sql_help.c:516 sql_help.c:1886 +#: sql_help.c:518 sql_help.c:1886 msgid "result_rows" -msgstr "lignes_de_résultat" +msgstr "lignes_de_résultat" -#: sql_help.c:537 sql_help.c:539 sql_help.c:813 sql_help.c:821 sql_help.c:825 +#: sql_help.c:539 sql_help.c:541 sql_help.c:813 sql_help.c:821 sql_help.c:825 #: sql_help.c:828 sql_help.c:831 sql_help.c:1241 sql_help.c:1249 #: sql_help.c:1252 sql_help.c:1254 sql_help.c:1256 sql_help.c:2131 #: sql_help.c:2133 sql_help.c:2136 sql_help.c:2137 sql_help.c:3105 @@ -3777,37 +3786,37 @@ msgstr "lignes_de_r msgid "role_specification" msgstr "specification_role" -#: sql_help.c:538 sql_help.c:540 sql_help.c:1268 sql_help.c:1729 +#: sql_help.c:540 sql_help.c:542 sql_help.c:1268 sql_help.c:1729 #: sql_help.c:2139 sql_help.c:2550 sql_help.c:2947 sql_help.c:3763 msgid "user_name" msgstr "nom_utilisateur" -#: sql_help.c:541 sql_help.c:833 sql_help.c:1257 sql_help.c:2138 +#: sql_help.c:543 sql_help.c:833 sql_help.c:1257 sql_help.c:2138 #: sql_help.c:3137 msgid "where role_specification can be:" -msgstr "où specification_role peut être :" +msgstr "où specification_role peut être :" -#: sql_help.c:543 +#: sql_help.c:545 msgid "group_name" msgstr "nom_groupe" -#: sql_help.c:561 sql_help.c:1734 sql_help.c:1948 sql_help.c:1980 +#: sql_help.c:563 sql_help.c:1734 sql_help.c:1948 sql_help.c:1980 #: sql_help.c:2247 sql_help.c:2255 sql_help.c:2287 sql_help.c:2309 #: sql_help.c:2321 sql_help.c:3133 sql_help.c:3465 msgid "tablespace_name" msgstr "nom_tablespace" -#: sql_help.c:565 sql_help.c:568 sql_help.c:648 sql_help.c:650 sql_help.c:1039 +#: sql_help.c:567 sql_help.c:570 sql_help.c:649 sql_help.c:651 sql_help.c:1039 #: sql_help.c:1041 sql_help.c:1946 sql_help.c:1978 sql_help.c:2245 #: sql_help.c:2253 sql_help.c:2285 sql_help.c:2307 msgid "storage_parameter" -msgstr "paramètre_stockage" +msgstr "paramètre_stockage" -#: sql_help.c:591 sql_help.c:1427 sql_help.c:3548 +#: sql_help.c:593 sql_help.c:1427 sql_help.c:3548 msgid "large_object_oid" msgstr "oid_large_object" -#: sql_help.c:647 sql_help.c:1037 sql_help.c:1046 sql_help.c:1049 +#: sql_help.c:648 sql_help.c:1037 sql_help.c:1046 sql_help.c:1049 #: sql_help.c:1349 msgid "index_name" msgstr "nom_index" @@ -3822,7 +3831,7 @@ msgstr "join_proc" #: sql_help.c:733 sql_help.c:745 sql_help.c:2019 msgid "strategy_number" -msgstr "numéro_de_stratégie" +msgstr "numéro_de_stratégie" #: sql_help.c:735 sql_help.c:736 sql_help.c:739 sql_help.c:740 sql_help.c:746 #: sql_help.c:747 sql_help.c:749 sql_help.c:750 sql_help.c:2021 sql_help.c:2022 @@ -3836,7 +3845,7 @@ msgstr "nom_famille_tri" #: sql_help.c:738 sql_help.c:748 sql_help.c:2024 msgid "support_number" -msgstr "numéro_de_support" +msgstr "numéro_de_support" #: sql_help.c:742 sql_help.c:1677 sql_help.c:2028 sql_help.c:2398 #: sql_help.c:2400 @@ -3879,11 +3888,11 @@ msgstr "horodatage" #: sql_help.c:822 sql_help.c:826 sql_help.c:829 sql_help.c:832 sql_help.c:3113 #: sql_help.c:3445 msgid "database_name" -msgstr "nom_base_de_donnée" +msgstr "nom_base_de_donnée" #: sql_help.c:873 sql_help.c:2151 msgid "increment" -msgstr "incrément" +msgstr "incrément" #: sql_help.c:874 sql_help.c:2152 msgid "minvalue" @@ -3896,11 +3905,11 @@ msgstr "valeur_max" #: sql_help.c:876 sql_help.c:2154 sql_help.c:3631 sql_help.c:3721 #: sql_help.c:3870 sql_help.c:3999 sql_help.c:4064 msgid "start" -msgstr "début" +msgstr "début" #: sql_help.c:877 msgid "restart" -msgstr "nouveau_début" +msgstr "nouveau_début" #: sql_help.c:878 sql_help.c:2155 msgid "cache" @@ -3912,7 +3921,7 @@ msgstr "contrainte_table_utilisant_index" #: sql_help.c:1033 sql_help.c:1034 sql_help.c:1035 sql_help.c:1036 msgid "rewrite_rule_name" -msgstr "nom_règle_réécriture" +msgstr "nom_règle_réécriture" #: sql_help.c:1047 msgid "and table_constraint_using_index is:" @@ -3974,7 +3983,7 @@ msgstr "mode_transaction" #: sql_help.c:1324 sql_help.c:3782 sql_help.c:3806 msgid "where transaction_mode is one of:" -msgstr "où mode_transaction fait partie de :" +msgstr "où mode_transaction fait partie de :" #: sql_help.c:1409 msgid "relation_name" @@ -3990,7 +3999,7 @@ msgstr "nom_politique" #: sql_help.c:1440 msgid "rule_name" -msgstr "nom_règle" +msgstr "nom_règle" #: sql_help.c:1457 msgid "text" @@ -4012,11 +4021,11 @@ msgstr "commande" #: sql_help.c:1518 sql_help.c:1981 sql_help.c:2310 sql_help.c:2568 #: sql_help.c:2586 sql_help.c:3188 msgid "query" -msgstr "requête" +msgstr "requête" #: sql_help.c:1522 sql_help.c:2993 msgid "where option can be one of:" -msgstr "où option fait partie de :" +msgstr "où option fait partie de :" #: sql_help.c:1523 msgid "format_name" @@ -4029,19 +4038,19 @@ msgstr "boolean" #: sql_help.c:1526 msgid "delimiter_character" -msgstr "caractère_délimiteur" +msgstr "caractère_délimiteur" #: sql_help.c:1527 msgid "null_string" -msgstr "chaîne_null" +msgstr "chaîne_null" #: sql_help.c:1529 msgid "quote_character" -msgstr "caractère_guillemet" +msgstr "caractère_guillemet" #: sql_help.c:1530 msgid "escape_character" -msgstr "chaîne_d_échappement" +msgstr "chaîne_d_échappement" #: sql_help.c:1534 msgid "encoding_name" @@ -4053,7 +4062,7 @@ msgstr "access_method_type" #: sql_help.c:1611 sql_help.c:1630 sql_help.c:1633 msgid "arg_data_type" -msgstr "type_données_arg" +msgstr "type_données_arg" #: sql_help.c:1612 sql_help.c:1634 sql_help.c:1642 msgid "sfunc" @@ -4061,11 +4070,11 @@ msgstr "sfunc" #: sql_help.c:1613 sql_help.c:1635 sql_help.c:1643 msgid "state_data_type" -msgstr "type_de_données_statut" +msgstr "type_de_données_statut" #: sql_help.c:1614 sql_help.c:1636 sql_help.c:1644 msgid "state_data_size" -msgstr "taille_de_données_statut" +msgstr "taille_de_données_statut" #: sql_help.c:1615 sql_help.c:1637 sql_help.c:1645 msgid "ffunc" @@ -4097,11 +4106,11 @@ msgstr "minvfunc" #: sql_help.c:1622 sql_help.c:1652 msgid "mstate_data_type" -msgstr "m_type_de_données_statut" +msgstr "m_type_de_données_statut" #: sql_help.c:1623 sql_help.c:1653 msgid "mstate_data_size" -msgstr "m_taille_de_données_statut" +msgstr "m_taille_de_données_statut" #: sql_help.c:1624 sql_help.c:1654 msgid "mffunc" @@ -4113,7 +4122,7 @@ msgstr "m_condition_initiale" #: sql_help.c:1626 sql_help.c:1656 msgid "sort_operator" -msgstr "opérateur_de_tri" +msgstr "opérateur_de_tri" #: sql_help.c:1639 msgid "or the old syntax" @@ -4149,7 +4158,7 @@ msgstr "encodage_destination" #: sql_help.c:1730 sql_help.c:2350 msgid "template" -msgstr "modèle" +msgstr "modèle" #: sql_help.c:1731 msgid "encoding" @@ -4161,11 +4170,11 @@ msgstr "contrainte" #: sql_help.c:1758 msgid "where constraint is:" -msgstr "où la contrainte est :" +msgstr "où la contrainte est :" #: sql_help.c:1772 sql_help.c:2107 sql_help.c:2422 msgid "event" -msgstr "événement" +msgstr "événement" #: sql_help.c:1773 msgid "filter_variable" @@ -4181,11 +4190,11 @@ msgstr "ancienne_version" #: sql_help.c:1844 sql_help.c:2256 msgid "where column_constraint is:" -msgstr "où contrainte_colonne est :" +msgstr "où contrainte_colonne est :" #: sql_help.c:1847 sql_help.c:1879 sql_help.c:2259 msgid "default_expr" -msgstr "expression_par_défaut" +msgstr "expression_par_défaut" #: sql_help.c:1848 sql_help.c:2266 msgid "and table_constraint is:" @@ -4201,7 +4210,7 @@ msgstr "type_colonne" #: sql_help.c:1890 msgid "definition" -msgstr "définition" +msgstr "définition" #: sql_help.c:1891 msgid "obj_file" @@ -4221,15 +4230,15 @@ msgstr "uid" #: sql_help.c:1941 msgid "method" -msgstr "méthode" +msgstr "méthode" #: sql_help.c:1945 sql_help.c:2291 sql_help.c:3197 msgid "opclass" -msgstr "classe_d_opérateur" +msgstr "classe_d_opérateur" #: sql_help.c:1949 sql_help.c:2277 msgid "predicate" -msgstr "prédicat" +msgstr "prédicat" #: sql_help.c:1961 msgid "call_handler" @@ -4268,11 +4277,11 @@ msgstr "condition" #: sql_help.c:2113 sql_help.c:2428 msgid "where event can be one of:" -msgstr "où événement fait partie de :" +msgstr "où événement fait partie de :" #: sql_help.c:2132 sql_help.c:2134 msgid "schema_element" -msgstr "élément_schéma" +msgstr "élément_schéma" #: sql_help.c:2168 msgid "server_type" @@ -4297,24 +4306,24 @@ msgstr "option_like" #: sql_help.c:2260 sql_help.c:2261 sql_help.c:2270 sql_help.c:2272 #: sql_help.c:2276 msgid "index_parameters" -msgstr "paramètres_index" +msgstr "paramètres_index" #: sql_help.c:2262 sql_help.c:2279 msgid "reftable" -msgstr "table_référence" +msgstr "table_référence" #: sql_help.c:2263 sql_help.c:2280 msgid "refcolumn" -msgstr "colonne_référence" +msgstr "colonne_référence" #: sql_help.c:2274 msgid "exclude_element" -msgstr "élément_exclusion" +msgstr "élément_exclusion" #: sql_help.c:2275 sql_help.c:3629 sql_help.c:3719 sql_help.c:3868 #: sql_help.c:3997 sql_help.c:4062 msgid "operator" -msgstr "opérateur" +msgstr "opérateur" #: sql_help.c:2283 msgid "and like_option is:" @@ -4322,15 +4331,15 @@ msgstr "et option_like est :" #: sql_help.c:2284 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 :" +msgstr "dans les contraintes UNIQUE, PRIMARY KEY et EXCLUDE, les paramètres_index sont :" #: sql_help.c:2288 msgid "exclude_element in an EXCLUDE constraint is:" -msgstr "élément_exclusion dans une contrainte EXCLUDE est :" +msgstr "élément_exclusion dans une contrainte EXCLUDE est :" #: sql_help.c:2323 msgid "directory" -msgstr "répertoire" +msgstr "répertoire" #: sql_help.c:2337 msgid "parser_name" @@ -4378,7 +4387,7 @@ msgstr "nom_fonction_to_sql" #: sql_help.c:2424 msgid "referenced_table_name" -msgstr "nom_table_référencée" +msgstr "nom_table_référencée" #: sql_help.c:2427 msgid "arguments" @@ -4394,7 +4403,7 @@ msgstr "sous_type" #: sql_help.c:2480 msgid "subtype_operator_class" -msgstr "classe_opérateur_sous_type" +msgstr "classe_opérateur_sous_type" #: sql_help.c:2482 msgid "canonical_function" @@ -4422,7 +4431,7 @@ msgstr "fonction_send" #: sql_help.c:2489 msgid "type_modifier_input_function" -msgstr "fonction_en_entrée_modificateur_type" +msgstr "fonction_en_entrée_modificateur_type" #: sql_help.c:2490 msgid "type_modifier_output_function" @@ -4450,23 +4459,23 @@ msgstr "type_like" #: sql_help.c:2496 msgid "category" -msgstr "catégorie" +msgstr "catégorie" #: sql_help.c:2497 msgid "preferred" -msgstr "préféré" +msgstr "préféré" #: sql_help.c:2498 msgid "default" -msgstr "par défaut" +msgstr "par défaut" #: sql_help.c:2499 msgid "element" -msgstr "élément" +msgstr "élément" #: sql_help.c:2500 msgid "delimiter" -msgstr "délimiteur" +msgstr "délimiteur" #: sql_help.c:2501 msgid "collatable" @@ -4475,7 +4484,7 @@ msgstr "collationnable" #: sql_help.c:2598 sql_help.c:3183 sql_help.c:3617 sql_help.c:3706 #: sql_help.c:3856 sql_help.c:3956 sql_help.c:4050 msgid "with_query" -msgstr "requête_with" +msgstr "requête_with" #: sql_help.c:2600 sql_help.c:3185 sql_help.c:3636 sql_help.c:3642 #: sql_help.c:3645 sql_help.c:3649 sql_help.c:3653 sql_help.c:3661 @@ -4509,7 +4518,7 @@ msgstr "code" #: sql_help.c:2972 msgid "parameter" -msgstr "paramètre" +msgstr "paramètre" #: sql_help.c:2991 sql_help.c:2992 sql_help.c:3289 msgid "statement" @@ -4521,7 +4530,7 @@ msgstr "direction" #: sql_help.c:3025 sql_help.c:3265 msgid "where direction can be empty or one of:" -msgstr "où direction peut être vide ou faire partie de :" +msgstr "où direction peut être vide ou faire partie de :" #: sql_help.c:3026 sql_help.c:3027 sql_help.c:3028 sql_help.c:3029 #: sql_help.c:3030 sql_help.c:3266 sql_help.c:3267 sql_help.c:3268 @@ -4533,7 +4542,7 @@ msgstr "nombre" #: sql_help.c:3110 sql_help.c:3442 msgid "sequence_name" -msgstr "nom_séquence" +msgstr "nom_séquence" #: sql_help.c:3123 sql_help.c:3455 msgid "arg_name" @@ -4553,7 +4562,7 @@ msgstr "schema_distant" #: sql_help.c:3155 msgid "local_schema" -msgstr "schéma_local" +msgstr "schéma_local" #: sql_help.c:3189 msgid "conflict_target" @@ -4565,7 +4574,7 @@ msgstr "action_conflit" #: sql_help.c:3193 msgid "where conflict_target can be one of:" -msgstr "où cible_conflit fait partie de :" +msgstr "où cible_conflit fait partie de :" #: sql_help.c:3194 msgid "index_column_name" @@ -4577,11 +4586,11 @@ msgstr "index_expression" #: sql_help.c:3198 msgid "index_predicate" -msgstr "index_prédicat" +msgstr "index_prédicat" #: sql_help.c:3200 msgid "and conflict_action is one of:" -msgstr "où action_conflit fait partie de :" +msgstr "où action_conflit fait partie de :" #: sql_help.c:3206 sql_help.c:3964 msgid "sub-SELECT" @@ -4597,7 +4606,7 @@ msgstr "mode_de_verrou" #: sql_help.c:3238 msgid "where lockmode is one of:" -msgstr "où mode_de_verrou fait partie de :" +msgstr "où mode_de_verrou fait partie de :" #: sql_help.c:3279 msgid "payload" @@ -4605,11 +4614,11 @@ msgstr "contenu" #: sql_help.c:3306 msgid "old_role" -msgstr "ancien_rôle" +msgstr "ancien_rôle" #: sql_help.c:3307 msgid "new_role" -msgstr "nouveau_rôle" +msgstr "nouveau_rôle" #: sql_help.c:3332 sql_help.c:3493 sql_help.c:3501 msgid "savepoint_name" @@ -4623,7 +4632,7 @@ msgstr "fournisseur" #: sql_help.c:3860 sql_help.c:3902 sql_help.c:3904 sql_help.c:4054 #: sql_help.c:4096 sql_help.c:4098 msgid "from_item" -msgstr "élément_from" +msgstr "élément_from" #: sql_help.c:3623 sql_help.c:3675 sql_help.c:3862 sql_help.c:3914 #: sql_help.c:4056 sql_help.c:4108 @@ -4636,17 +4645,17 @@ msgstr "nom_window" #: sql_help.c:3626 sql_help.c:3716 sql_help.c:3865 sql_help.c:4059 msgid "window_definition" -msgstr "définition_window" +msgstr "définition_window" #: sql_help.c:3627 sql_help.c:3641 sql_help.c:3679 sql_help.c:3717 #: sql_help.c:3866 sql_help.c:3880 sql_help.c:3918 sql_help.c:4060 #: sql_help.c:4074 sql_help.c:4112 msgid "select" -msgstr "sélection" +msgstr "sélection" #: sql_help.c:3634 sql_help.c:3873 sql_help.c:4067 msgid "where from_item can be one of:" -msgstr "où élément_from fait partie de :" +msgstr "où élément_from fait partie de :" #: sql_help.c:3637 sql_help.c:3643 sql_help.c:3646 sql_help.c:3650 #: sql_help.c:3662 sql_help.c:3876 sql_help.c:3882 sql_help.c:3885 @@ -4657,7 +4666,7 @@ msgstr "alias_colonne" #: sql_help.c:3638 sql_help.c:3877 sql_help.c:4071 msgid "sampling_method" -msgstr "méthode_echantillonnage" +msgstr "méthode_echantillonnage" #: sql_help.c:3639 sql_help.c:3648 sql_help.c:3652 sql_help.c:3656 #: sql_help.c:3659 sql_help.c:3878 sql_help.c:3887 sql_help.c:3891 @@ -4673,13 +4682,13 @@ msgstr "graine" #: sql_help.c:3644 sql_help.c:3677 sql_help.c:3883 sql_help.c:3916 #: sql_help.c:4077 sql_help.c:4110 msgid "with_query_name" -msgstr "nom_requête_with" +msgstr "nom_requête_with" #: sql_help.c:3654 sql_help.c:3657 sql_help.c:3660 sql_help.c:3893 #: sql_help.c:3896 sql_help.c:3899 sql_help.c:4087 sql_help.c:4090 #: sql_help.c:4093 msgid "column_definition" -msgstr "définition_colonne" +msgstr "définition_colonne" #: sql_help.c:3664 sql_help.c:3903 sql_help.c:4097 msgid "join_type" @@ -4695,11 +4704,11 @@ msgstr "colonne_de_jointure" #: sql_help.c:3668 sql_help.c:3907 sql_help.c:4101 msgid "and grouping_element can be one of:" -msgstr "où element_regroupement fait partie de :" +msgstr "où element_regroupement fait partie de :" #: sql_help.c:3676 sql_help.c:3915 sql_help.c:4109 msgid "and with_query is:" -msgstr "et requête_with est :" +msgstr "et requête_with est :" #: sql_help.c:3680 sql_help.c:3919 sql_help.c:4113 msgid "values" @@ -4743,47 +4752,47 @@ msgstr "abandonner la transaction en cours" #: sql_help.c:4128 msgid "change the definition of an aggregate function" -msgstr "modifier la définition d'une fonction d'agrégation" +msgstr "modifier la définition d'une fonction d'agrégation" #: sql_help.c:4133 msgid "change the definition of a collation" -msgstr "modifier la définition d'un collationnement" +msgstr "modifier la définition d'un collationnement" #: sql_help.c:4138 msgid "change the definition of a conversion" -msgstr "modifier la définition d'une conversion" +msgstr "modifier la définition d'une conversion" #: sql_help.c:4143 msgid "change a database" -msgstr "modifier une base de données" +msgstr "modifier une base de données" #: sql_help.c:4148 msgid "define default access privileges" -msgstr "définir les droits d'accès par défaut" +msgstr "définir les droits d'accès par défaut" #: sql_help.c:4153 msgid "change the definition of a domain" -msgstr "modifier la définition d'un domaine" +msgstr "modifier la définition d'un domaine" #: sql_help.c:4158 msgid "change the definition of an event trigger" -msgstr "modifier la définition d'un trigger sur évènement" +msgstr "modifier la définition d'un trigger sur évènement" #: sql_help.c:4163 msgid "change the definition of an extension" -msgstr "modifier la définition d'une extension" +msgstr "modifier la définition d'une extension" #: sql_help.c:4168 msgid "change the definition of a foreign-data wrapper" -msgstr "modifier la définition d'un wrapper de données distantes" +msgstr "modifier la définition d'un wrapper de données distantes" #: sql_help.c:4173 msgid "change the definition of a foreign table" -msgstr "modifier la définition d'une table distante" +msgstr "modifier la définition d'une table distante" #: sql_help.c:4178 msgid "change the definition of a function" -msgstr "modifier la définition d'une fonction" +msgstr "modifier la définition d'une fonction" #: sql_help.c:4183 msgid "change role name or membership" @@ -4791,111 +4800,111 @@ msgstr "modifier le nom d'un groupe ou la liste des ses membres" #: sql_help.c:4188 msgid "change the definition of an index" -msgstr "modifier la définition d'un index" +msgstr "modifier la définition d'un index" #: sql_help.c:4193 msgid "change the definition of a procedural language" -msgstr "modifier la définition d'un langage procédural" +msgstr "modifier la définition d'un langage procédural" #: sql_help.c:4198 msgid "change the definition of a large object" -msgstr "modifier la définition d'un « Large Object »" +msgstr "modifier la définition d'un « Large Object »" #: sql_help.c:4203 msgid "change the definition of a materialized view" -msgstr "modifier la définition d'une vue matérialisée" +msgstr "modifier la définition d'une vue matérialisée" #: sql_help.c:4208 msgid "change the definition of an operator" -msgstr "modifier la définition d'un opérateur" +msgstr "modifier la définition d'un opérateur" #: sql_help.c:4213 msgid "change the definition of an operator class" -msgstr "modifier la définition d'une classe d'opérateurs" +msgstr "modifier la définition d'une classe d'opérateurs" #: sql_help.c:4218 msgid "change the definition of an operator family" -msgstr "modifier la définition d'une famille d'opérateur" +msgstr "modifier la définition d'une famille d'opérateur" #: sql_help.c:4223 msgid "change the definition of a row level security policy" -msgstr "modifier la définition d'une politique de sécurité au niveau ligne" +msgstr "modifier la définition d'une politique de sécurité au niveau ligne" #: sql_help.c:4228 sql_help.c:4298 msgid "change a database role" -msgstr "modifier un rôle" +msgstr "modifier un rôle" #: sql_help.c:4233 msgid "change the definition of a rule" -msgstr "modifier la définition d'une règle" +msgstr "modifier la définition d'une règle" #: sql_help.c:4238 msgid "change the definition of a schema" -msgstr "modifier la définition d'un schéma" +msgstr "modifier la définition d'un schéma" #: sql_help.c:4243 msgid "change the definition of a sequence generator" -msgstr "modifier la définition d'un générateur de séquence" +msgstr "modifier la définition d'un générateur de séquence" #: sql_help.c:4248 msgid "change the definition of a foreign server" -msgstr "modifier la définition d'un serveur distant" +msgstr "modifier la définition d'un serveur distant" #: sql_help.c:4253 msgid "change a server configuration parameter" -msgstr "modifie un paramètre de configuration du serveur" +msgstr "modifie un paramètre de configuration du serveur" #: sql_help.c:4258 msgid "change the definition of a table" -msgstr "modifier la définition d'une table" +msgstr "modifier la définition d'une table" #: sql_help.c:4263 msgid "change the definition of a tablespace" -msgstr "modifier la définition d'un tablespace" +msgstr "modifier la définition d'un tablespace" #: sql_help.c:4268 msgid "change the definition of a text search configuration" -msgstr "modifier la définition d'une configuration de la recherche de texte" +msgstr "modifier la définition d'une configuration de la recherche de texte" #: sql_help.c:4273 msgid "change the definition of a text search dictionary" -msgstr "modifier la définition d'un dictionnaire de la recherche de texte" +msgstr "modifier la définition d'un dictionnaire de la recherche de texte" #: sql_help.c:4278 msgid "change the definition of a text search parser" -msgstr "modifier la définition d'un analyseur de la recherche de texte" +msgstr "modifier la définition d'un analyseur de la recherche de texte" #: sql_help.c:4283 msgid "change the definition of a text search template" -msgstr "modifier la définition d'un modèle de la recherche de texte" +msgstr "modifier la définition d'un modèle de la recherche de texte" #: sql_help.c:4288 msgid "change the definition of a trigger" -msgstr "modifier la définition d'un trigger" +msgstr "modifier la définition d'un trigger" #: sql_help.c:4293 msgid "change the definition of a type" -msgstr "modifier la définition d'un type" +msgstr "modifier la définition d'un type" #: sql_help.c:4303 msgid "change the definition of a user mapping" -msgstr "modifier la définition d'une correspondance d'utilisateur" +msgstr "modifier la définition d'une correspondance d'utilisateur" #: sql_help.c:4308 msgid "change the definition of a view" -msgstr "modifier la définition d'une vue" +msgstr "modifier la définition d'une vue" #: sql_help.c:4313 msgid "collect statistics about a database" -msgstr "acquérir des statistiques concernant la base de données" +msgstr "acquérir des statistiques concernant la base de données" #: sql_help.c:4318 sql_help.c:4928 msgid "start a transaction block" -msgstr "débuter un bloc de transaction" +msgstr "débuter un bloc de transaction" #: sql_help.c:4323 msgid "force a transaction log checkpoint" -msgstr "forcer un point de vérification des journaux de transaction" +msgstr "forcer un point de vérification des journaux de transaction" #: sql_help.c:4328 msgid "close a cursor" @@ -4903,11 +4912,11 @@ msgstr "fermer un curseur" #: sql_help.c:4333 msgid "cluster a table according to an index" -msgstr "réorganiser (cluster) une table en fonction d'un index" +msgstr "réorganiser (cluster) une table en fonction d'un index" #: sql_help.c:4338 msgid "define or change the comment of an object" -msgstr "définir ou modifier les commentaires d'un objet" +msgstr "définir ou modifier les commentaires d'un objet" #: sql_help.c:4343 sql_help.c:4763 msgid "commit the current transaction" @@ -4916,44 +4925,44 @@ msgstr "valider la transaction en cours" #: sql_help.c:4348 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" +"valider une transaction précédemment préparée pour une validation en deux\n" "phases" #: sql_help.c:4353 msgid "copy data between a file and a table" -msgstr "copier des données entre un fichier et une table" +msgstr "copier des données entre un fichier et une table" #: sql_help.c:4358 msgid "define a new access method" -msgstr "définir une nouvelle méthode d'accès" +msgstr "définir une nouvelle méthode d'accès" #: sql_help.c:4363 msgid "define a new aggregate function" -msgstr "définir une nouvelle fonction d'agrégation" +msgstr "définir une nouvelle fonction d'agrégation" #: sql_help.c:4368 msgid "define a new cast" -msgstr "définir un nouveau transtypage" +msgstr "définir un nouveau transtypage" #: sql_help.c:4373 msgid "define a new collation" -msgstr "définir un nouveau collationnement" +msgstr "définir un nouveau collationnement" #: sql_help.c:4378 msgid "define a new encoding conversion" -msgstr "définir une nouvelle conversion d'encodage" +msgstr "définir une nouvelle conversion d'encodage" #: sql_help.c:4383 msgid "create a new database" -msgstr "créer une nouvelle base de données" +msgstr "créer une nouvelle base de données" #: sql_help.c:4388 msgid "define a new domain" -msgstr "définir un nouveau domaine" +msgstr "définir un nouveau domaine" #: sql_help.c:4393 msgid "define a new event trigger" -msgstr "définir un nouveau trigger sur évènement" +msgstr "définir un nouveau trigger sur évènement" #: sql_help.c:4398 msgid "install an extension" @@ -4961,119 +4970,119 @@ msgstr "installer une extension" #: sql_help.c:4403 msgid "define a new foreign-data wrapper" -msgstr "définir un nouveau wrapper de données distantes" +msgstr "définir un nouveau wrapper de données distantes" #: sql_help.c:4408 msgid "define a new foreign table" -msgstr "définir une nouvelle table distante" +msgstr "définir une nouvelle table distante" #: sql_help.c:4413 msgid "define a new function" -msgstr "définir une nouvelle fonction" +msgstr "définir une nouvelle fonction" #: sql_help.c:4418 sql_help.c:4458 sql_help.c:4533 msgid "define a new database role" -msgstr "définir un nouveau rôle" +msgstr "définir un nouveau rôle" #: sql_help.c:4423 msgid "define a new index" -msgstr "définir un nouvel index" +msgstr "définir un nouvel index" #: sql_help.c:4428 msgid "define a new procedural language" -msgstr "définir un nouveau langage de procédures" +msgstr "définir un nouveau langage de procédures" #: sql_help.c:4433 msgid "define a new materialized view" -msgstr "définir une nouvelle vue matérialisée" +msgstr "définir une nouvelle vue matérialisée" #: sql_help.c:4438 msgid "define a new operator" -msgstr "définir un nouvel opérateur" +msgstr "définir un nouvel opérateur" #: sql_help.c:4443 msgid "define a new operator class" -msgstr "définir une nouvelle classe d'opérateur" +msgstr "définir une nouvelle classe d'opérateur" #: sql_help.c:4448 msgid "define a new operator family" -msgstr "définir une nouvelle famille d'opérateur" +msgstr "définir une nouvelle famille d'opérateur" #: sql_help.c:4453 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" +msgstr "définir une nouvelle politique de sécurité au niveau ligne pour une table" #: sql_help.c:4463 msgid "define a new rewrite rule" -msgstr "définir une nouvelle règle de réécriture" +msgstr "définir une nouvelle règle de réécriture" #: sql_help.c:4468 msgid "define a new schema" -msgstr "définir un nouveau schéma" +msgstr "définir un nouveau schéma" #: sql_help.c:4473 msgid "define a new sequence generator" -msgstr "définir un nouveau générateur de séquence" +msgstr "définir un nouveau générateur de séquence" #: sql_help.c:4478 msgid "define a new foreign server" -msgstr "définir un nouveau serveur distant" +msgstr "définir un nouveau serveur distant" #: sql_help.c:4483 msgid "define a new table" -msgstr "définir une nouvelle table" +msgstr "définir une nouvelle table" #: sql_help.c:4488 sql_help.c:4893 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" +msgstr "définir une nouvelle table à partir des résultats d'une requête" #: sql_help.c:4493 msgid "define a new tablespace" -msgstr "définir un nouveau tablespace" +msgstr "définir un nouveau tablespace" #: sql_help.c:4498 msgid "define a new text search configuration" -msgstr "définir une nouvelle configuration de la recherche de texte" +msgstr "définir une nouvelle configuration de la recherche de texte" #: sql_help.c:4503 msgid "define a new text search dictionary" -msgstr "définir un nouveau dictionnaire de la recherche de texte" +msgstr "définir un nouveau dictionnaire de la recherche de texte" #: sql_help.c:4508 msgid "define a new text search parser" -msgstr "définir un nouvel analyseur de la recherche de texte" +msgstr "définir un nouvel analyseur de la recherche de texte" #: sql_help.c:4513 msgid "define a new text search template" -msgstr "définir un nouveau modèle de la recherche de texte" +msgstr "définir un nouveau modèle de la recherche de texte" #: sql_help.c:4518 msgid "define a new transform" -msgstr "définir une nouvelle transformation" +msgstr "définir une nouvelle transformation" #: sql_help.c:4523 msgid "define a new trigger" -msgstr "définir un nouveau trigger" +msgstr "définir un nouveau trigger" #: sql_help.c:4528 msgid "define a new data type" -msgstr "définir un nouveau type de données" +msgstr "définir un nouveau type de données" #: sql_help.c:4538 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" +msgstr "définit une nouvelle correspondance d'un utilisateur vers un serveur distant" #: sql_help.c:4543 msgid "define a new view" -msgstr "définir une nouvelle vue" +msgstr "définir une nouvelle vue" #: sql_help.c:4548 msgid "deallocate a prepared statement" -msgstr "désallouer une instruction préparée" +msgstr "désallouer une instruction préparée" #: sql_help.c:4553 msgid "define a cursor" -msgstr "définir un curseur" +msgstr "définir un curseur" #: sql_help.c:4558 msgid "delete rows of a table" @@ -5081,19 +5090,19 @@ msgstr "supprimer des lignes d'une table" #: sql_help.c:4563 msgid "discard session state" -msgstr "annuler l'état de la session" +msgstr "annuler l'état de la session" #: sql_help.c:4568 msgid "execute an anonymous code block" -msgstr "exécute un bloc de code anonyme" +msgstr "exécute un bloc de code anonyme" #: sql_help.c:4573 msgid "remove an access method" -msgstr "supprimer une méthode d'accès" +msgstr "supprimer une méthode d'accès" #: sql_help.c:4578 msgid "remove an aggregate function" -msgstr "supprimer une fonction d'agrégation" +msgstr "supprimer une fonction d'agrégation" #: sql_help.c:4583 msgid "remove a cast" @@ -5109,7 +5118,7 @@ msgstr "supprimer une conversion" #: sql_help.c:4598 msgid "remove a database" -msgstr "supprimer une base de données" +msgstr "supprimer une base de données" #: sql_help.c:4603 msgid "remove a domain" @@ -5117,7 +5126,7 @@ msgstr "supprimer un domaine" #: sql_help.c:4608 msgid "remove an event trigger" -msgstr "supprimer un trigger sur évènement" +msgstr "supprimer un trigger sur évènement" #: sql_help.c:4613 msgid "remove an extension" @@ -5125,7 +5134,7 @@ msgstr "supprimer une extension" #: sql_help.c:4618 msgid "remove a foreign-data wrapper" -msgstr "supprimer un wrapper de données distantes" +msgstr "supprimer un wrapper de données distantes" #: sql_help.c:4623 msgid "remove a foreign table" @@ -5137,7 +5146,7 @@ msgstr "supprimer une fonction" #: sql_help.c:4633 sql_help.c:4678 sql_help.c:4748 msgid "remove a database role" -msgstr "supprimer un rôle de la base de données" +msgstr "supprimer un rôle de la base de données" #: sql_help.c:4638 msgid "remove an index" @@ -5145,43 +5154,43 @@ msgstr "supprimer un index" #: sql_help.c:4643 msgid "remove a procedural language" -msgstr "supprimer un langage procédural" +msgstr "supprimer un langage procédural" #: sql_help.c:4648 msgid "remove a materialized view" -msgstr "supprimer une vue matérialisée" +msgstr "supprimer une vue matérialisée" #: sql_help.c:4653 msgid "remove an operator" -msgstr "supprimer un opérateur" +msgstr "supprimer un opérateur" #: sql_help.c:4658 msgid "remove an operator class" -msgstr "supprimer une classe d'opérateur" +msgstr "supprimer une classe d'opérateur" #: sql_help.c:4663 msgid "remove an operator family" -msgstr "supprimer une famille d'opérateur" +msgstr "supprimer une famille d'opérateur" #: sql_help.c:4668 msgid "remove database objects owned by a database role" -msgstr "supprimer les objets appartenant à un rôle" +msgstr "supprimer les objets appartenant à un rôle" #: sql_help.c:4673 msgid "remove a row level security policy from a table" -msgstr "supprimer une nouvelle politique de sécurité au niveau ligne pour une table" +msgstr "supprimer une nouvelle politique de sécurité au niveau ligne pour une table" #: sql_help.c:4683 msgid "remove a rewrite rule" -msgstr "supprimer une règle de réécriture" +msgstr "supprimer une règle de réécriture" #: sql_help.c:4688 msgid "remove a schema" -msgstr "supprimer un schéma" +msgstr "supprimer un schéma" #: sql_help.c:4693 msgid "remove a sequence" -msgstr "supprimer une séquence" +msgstr "supprimer une séquence" #: sql_help.c:4698 msgid "remove a foreign server descriptor" @@ -5209,7 +5218,7 @@ msgstr "supprimer un analyseur de la recherche de texte" #: sql_help.c:4728 msgid "remove a text search template" -msgstr "supprimer un modèle de la recherche de texte" +msgstr "supprimer un modèle de la recherche de texte" #: sql_help.c:4733 msgid "remove a transform" @@ -5221,7 +5230,7 @@ msgstr "supprimer un trigger" #: sql_help.c:4743 msgid "remove a data type" -msgstr "supprimer un type de données" +msgstr "supprimer un type de données" #: sql_help.c:4753 msgid "remove a user mapping for a foreign server" @@ -5233,35 +5242,35 @@ msgstr "supprimer une vue" #: sql_help.c:4768 msgid "execute a prepared statement" -msgstr "exécuter une instruction préparée" +msgstr "exécuter une instruction préparée" #: sql_help.c:4773 msgid "show the execution plan of a statement" -msgstr "afficher le plan d'exécution d'une instruction" +msgstr "afficher le plan d'exécution d'une instruction" #: sql_help.c:4778 msgid "retrieve rows from a query using a cursor" -msgstr "extraire certaines lignes d'une requête à l'aide d'un curseur" +msgstr "extraire certaines lignes d'une requête à l'aide d'un curseur" #: sql_help.c:4783 msgid "define access privileges" -msgstr "définir des privilèges d'accès" +msgstr "définir des privilèges d'accès" #: sql_help.c:4788 msgid "import table definitions from a foreign server" -msgstr "importer la définition d'une table à partir d'un serveur distant" +msgstr "importer la définition d'une table à partir d'un serveur distant" #: sql_help.c:4793 msgid "create new rows in a table" -msgstr "créer de nouvelles lignes dans une table" +msgstr "créer de nouvelles lignes dans une table" #: sql_help.c:4798 msgid "listen for a notification" -msgstr "se mettre à l'écoute d'une notification" +msgstr "se mettre à l'écoute d'une notification" #: sql_help.c:4803 msgid "load a shared library file" -msgstr "charger un fichier de bibliothèque partagée" +msgstr "charger un fichier de bibliothèque partagée" #: sql_help.c:4808 msgid "lock a table" @@ -5277,19 +5286,19 @@ msgstr "engendrer une notification" #: sql_help.c:4823 msgid "prepare a statement for execution" -msgstr "préparer une instruction pour exécution" +msgstr "préparer une instruction pour exécution" #: sql_help.c:4828 msgid "prepare the current transaction for two-phase commit" -msgstr "préparer la transaction en cours pour une validation en deux phases" +msgstr "préparer la transaction en cours pour une validation en deux phases" #: sql_help.c:4833 msgid "change the ownership of database objects owned by a database role" -msgstr "changer le propriétaire des objets d'un rôle" +msgstr "changer le propriétaire des objets d'un rôle" #: sql_help.c:4838 msgid "replace the contents of a materialized view" -msgstr "remplacer le contenu d'une vue matérialisée" +msgstr "remplacer le contenu d'une vue matérialisée" #: sql_help.c:4843 msgid "rebuild indexes" @@ -5297,20 +5306,20 @@ msgstr "reconstruire des index" #: sql_help.c:4848 msgid "destroy a previously defined savepoint" -msgstr "détruire un point de retournement précédemment défini" +msgstr "détruire un point de retournement précédemment défini" #: sql_help.c:4853 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" +msgstr "réinitialiser un paramètre d'exécution à sa valeur par défaut" #: sql_help.c:4858 msgid "remove access privileges" -msgstr "supprimer des privilèges d'accès" +msgstr "supprimer des privilèges d'accès" #: sql_help.c:4868 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" +"annuler une transaction précédemment préparée pour une validation en deux\n" "phases" #: sql_help.c:4873 @@ -5319,11 +5328,11 @@ msgstr "annuler jusqu'au point de retournement" #: sql_help.c:4878 msgid "define a new savepoint within the current transaction" -msgstr "définir un nouveau point de retournement pour la transaction en cours" +msgstr "définir un nouveau point de retournement pour la transaction en cours" #: sql_help.c:4883 msgid "define or change a security label applied to an object" -msgstr "définir ou modifier un label de sécurité à un objet" +msgstr "définir ou modifier un label de sécurité à un objet" #: sql_help.c:4888 sql_help.c:4933 sql_help.c:4963 msgid "retrieve rows from a table or view" @@ -5331,29 +5340,29 @@ msgstr "extraire des lignes d'une table ou d'une vue" #: sql_help.c:4898 msgid "change a run-time parameter" -msgstr "modifier un paramètre d'exécution" +msgstr "modifier un paramètre d'exécution" #: sql_help.c:4903 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" +msgstr "définir le moment de la vérification des contraintes pour la transaction en cours" #: sql_help.c:4908 msgid "set the current user identifier of the current session" -msgstr "définir l'identifiant actuel de l'utilisateur de la session courante" +msgstr "définir l'identifiant actuel de l'utilisateur de la session courante" #: sql_help.c:4913 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" +"définir l'identifiant de l'utilisateur de session et l'identifiant actuel de\n" "l'utilisateur de la session courante" #: sql_help.c:4918 msgid "set the characteristics of the current transaction" -msgstr "définir les caractéristiques de la transaction en cours" +msgstr "définir les caractéristiques de la transaction en cours" #: sql_help.c:4923 msgid "show the value of a run-time parameter" -msgstr "afficher la valeur d'un paramètre d'exécution" +msgstr "afficher la valeur d'un paramètre d'exécution" #: sql_help.c:4938 msgid "empty a table or set of tables" @@ -5361,7 +5370,7 @@ msgstr "vider une table ou un ensemble de tables" #: sql_help.c:4943 msgid "stop listening for a notification" -msgstr "arrêter l'écoute d'une notification" +msgstr "arrêter l'écoute d'une notification" #: sql_help.c:4948 msgid "update rows of a table" @@ -5369,7 +5378,7 @@ msgstr "actualiser les lignes d'une table" #: sql_help.c:4953 msgid "garbage-collect and optionally analyze a database" -msgstr "compacter et optionnellement analyser une base de données" +msgstr "compacter et optionnellement analyser une base de données" #: sql_help.c:4958 msgid "compute a set of rows" @@ -5378,12 +5387,12 @@ msgstr "calculer un ensemble de lignes" #: startup.c:189 #, c-format msgid "%s: -1 can only be used in non-interactive mode\n" -msgstr "%s p: -1 peut seulement être utilisé dans un mode non intéractif\n" +msgstr "%s p: -1 peut seulement être utilisé dans un mode non intéractif\n" #: startup.c:289 #, c-format msgid "%s: could not open log file \"%s\": %s\n" -msgstr "%s : n'a pas pu ouvrir le journal applicatif « %s » : %s\n" +msgstr "%s : n'a pas pu ouvrir le journal applicatif « %s » : %s\n" #: startup.c:389 #, c-format @@ -5391,956 +5400,852 @@ msgid "" "Type \"help\" for help.\n" "\n" msgstr "" -"Saisissez « help » pour l'aide.\n" +"Saisissez « help » pour l'aide.\n" "\n" #: startup.c:538 #, c-format msgid "%s: could not set printing parameter \"%s\"\n" -msgstr "%s : n'a pas pu configurer le paramètre d'impression « %s »\n" +msgstr "%s : n'a pas pu configurer le paramètre d'impression « %s »\n" #: startup.c:578 #, c-format msgid "%s: could not delete variable \"%s\"\n" -msgstr "%s : n'a pas pu effacer la variable « %s »\n" +msgstr "%s : n'a pas pu effacer la variable « %s »\n" #: startup.c:588 #, c-format msgid "%s: could not set variable \"%s\"\n" -msgstr "%s : n'a pas pu initialiser la variable « %s »\n" +msgstr "%s : n'a pas pu initialiser la variable « %s »\n" #: startup.c:648 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Essayez « %s --help » pour plus d'informations.\n" +msgstr "Essayez « %s --help » pour plus d'informations.\n" #: startup.c:665 #, c-format msgid "%s: warning: extra command-line argument \"%s\" ignored\n" -msgstr "%s : attention : option supplémentaire « %s » ignorée\n" +msgstr "%s : attention : option supplémentaire « %s » ignorée\n" #: startup.c:714 #, c-format msgid "%s: could not find own program executable\n" -msgstr "%s : n'a pas pu trouver son propre exécutable\n" +msgstr "%s : n'a pas pu trouver son propre exécutable\n" #: startup.c:836 startup.c:883 startup.c:904 startup.c:941 startup.c:963 #: variables.c:121 #, c-format msgid "unrecognized value \"%s\" for \"%s\"; assuming \"%s\"\n" -msgstr "valeur « %s » non reconnue pour « %s » ; suppose « %s »\n" +msgstr "valeur « %s » non reconnue pour « %s » ; suppose « %s »\n" -#: tab-complete.c:3704 +#: tab-complete.c:3744 #, c-format msgid "" "tab completion query failed: %s\n" "Query was:\n" "%s\n" msgstr "" -"la complétion de la requête a échoué : %s\n" -"La requête était :\n" +"la complétion de la requête a échoué : %s\n" +"La requête était :\n" "%s\n" -#~ msgid "Watch every %lds\t%s" -#~ msgstr "Vérifier chaque %lds\t%s" - -#~ msgid "Showing locale-adjusted numeric output." -#~ msgstr "Affichage de la sortie numérique adaptée à la locale." - -#~ msgid "Showing only tuples." -#~ msgstr "Affichage des tuples seuls." - -#~ msgid "could not get current user name: %s\n" -#~ msgstr "n'a pas pu obtenir le nom d'utilisateur courant : %s\n" +#~ msgid "serialtype" +#~ msgstr "serialtype" -#~ msgid "agg_name" -#~ msgstr "nom_d_agrégat" +#~ msgid "SSL connection (unknown cipher)\n" +#~ msgstr "Connexion SSL (chiffrement inconnu)\n" -#~ msgid "agg_type" -#~ msgstr "type_aggrégat" +#~ msgid " -?, --help show this help, then exit\n" +#~ msgstr " -?, --help affiche cette aide puis quitte\n" -#~ msgid "input_data_type" -#~ msgstr "type_de_données_en_entrée" +#~ msgid "(No rows)\n" +#~ msgstr "(Aucune ligne)\n" -#~ msgid "could not change directory to \"%s\"" -#~ msgstr "n'a pas pu accéder au répertoire « %s »" +#~ msgid "ALTER VIEW name RENAME TO newname" +#~ msgstr "ALTER VIEW nom RENAME TO nouveau_nom" -#~ 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 " \"%s\"" +#~ msgstr " « %s »" -#~ msgid " \\l[+] list all databases\n" -#~ msgstr " \\l[+] affiche la liste des bases de données\n" +#~ msgid "?%c? \"%s.%s\"" +#~ msgstr "?%c? « %s.%s »" -#~ msgid "\\%s: error\n" -#~ msgstr "\\%s : erreur\n" +#~ msgid "Access privileges for database \"%s\"" +#~ msgstr "Droits d'accès pour la base de données « %s »" -#~ msgid "\\copy: %s" -#~ msgstr "\\copy : %s" +#~ 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 "\\copy: unexpected response (%d)\n" -#~ msgstr "\\copy : réponse inattendue (%d)\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 " --help show this help, then exit\n" -#~ msgstr " --help affiche cette aide, puis quitte\n" +#~ msgid "" +#~ "Welcome to %s %s (server %s), the PostgreSQL interactive terminal.\n" +#~ "\n" +#~ msgstr "" +#~ "Bienvenue dans %s %s (serveur %s), l'interface interactive de PostgreSQL.\n" +#~ "\n" -#~ msgid " --version output version information, then exit\n" -#~ msgstr " --version affiche la version, puis quitte\n" +#~ msgid "Copy, Large Object\n" +#~ msgstr "Copie, « Large Object »\n" -#~ msgid "contains support for command-line editing" -#~ msgstr "contient une gestion avancée de la ligne de commande" +#~ 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 "data type" -#~ msgstr "type de données" +#~ 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 "column" -#~ msgstr "colonne" +#~ 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 "new_column" -#~ msgstr "nouvelle_colonne" +#~ 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 "tablespace" -#~ msgstr "tablespace" +#~ 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 " on host \"%s\"" -#~ msgstr " sur l'hôte « %s »" +#~ 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 " at port \"%s\"" -#~ msgstr " sur le port « %s »" +#~ 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 " as user \"%s\"" -#~ msgstr " comme utilisateur « %s »" +#~ 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 "define a new constraint trigger" -#~ msgstr "définir une nouvelle contrainte de déclenchement" +#~ 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 "Exclusion constraints:" -#~ msgstr "Contraintes d'exclusion :" +#~ msgid "(1 row)" +#~ msgid_plural "(%lu rows)" +#~ msgstr[0] "(1 ligne)" +#~ msgstr[1] "(%lu lignes)" -#~ msgid "rolename" -#~ msgstr "nom_rôle" +#~ msgid " \"%s\" IN %s %s" +#~ msgstr " \"%s\" DANS %s %s" -#~ msgid "number" -#~ msgstr "numéro" +#~ msgid "" +#~ "VALUES ( expression [, ...] ) [, ...]\n" +#~ " [ ORDER BY sort_expression [ ASC | DESC | USING operator ] [, ...] ]\n" +#~ " [ LIMIT { count | ALL } ]\n" +#~ " [ OFFSET start [ ROW | ROWS ] ]\n" +#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]" +#~ msgstr "" +#~ "VALUES ( expression [, ...] ) [, ...]\n" +#~ " [ ORDER BY expression_tri [ ASC | DESC | USING opérateur ] [, ...] ]\n" +#~ " [ LIMIT { total | ALL } ]\n" +#~ " [ OFFSET début [ ROW | ROWS ] ]\n" +#~ " [ FETCH { FIRST | NEXT } [ total ] { ROW | ROWS } ONLY ]" -#~ msgid "ABORT [ WORK | TRANSACTION ]" -#~ msgstr "ABORT [ WORK | TRANSACTION ]" +#~ msgid "" +#~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]\n" +#~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]" +#~ msgstr "" +#~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]\n" +#~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table [ (colonne [, ...] ) ] ]" #~ msgid "" -#~ "ALTER AGGREGATE name ( type [ , ... ] ) RENAME TO new_name\n" -#~ "ALTER AGGREGATE name ( type [ , ... ] ) OWNER TO new_owner\n" -#~ "ALTER AGGREGATE name ( type [ , ... ] ) SET SCHEMA new_schema" +#~ "UPDATE [ ONLY ] table [ [ AS ] alias ]\n" +#~ " SET { column = { expression | DEFAULT } |\n" +#~ " ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...]\n" +#~ " [ FROM fromlist ]\n" +#~ " [ WHERE condition | WHERE CURRENT OF cursor_name ]\n" +#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" #~ msgstr "" -#~ "ALTER AGGREGATE nom ( type [ , ... ] ) RENAME TO nouveau_nom\n" -#~ "ALTER AGGREGATE nom ( type [ , ... ] ) OWNER TO nouveau_propriétaire\n" -#~ "ALTER AGGREGATE nom ( type [ , ... ] ) SET SCHEMA nouveau_schéma" +#~ "UPDATE [ ONLY ] table [ [ AS ] alias ]\n" +#~ " SET { colonne = { expression | DEFAULT } |\n" +#~ " ( colonne [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...]\n" +#~ " [ FROM liste_from ]\n" +#~ " [ WHERE condition | WHERE CURRENT OF nom_curseur ]\n" +#~ " [ RETURNING * | expression_sortie [ [ AS ] nom_sortie ] [, ...] ]" + +#~ msgid "UNLISTEN { name | * }" +#~ msgstr "UNLISTEN { nom | * }" #~ msgid "" -#~ "ALTER CONVERSION name RENAME TO newname\n" -#~ "ALTER CONVERSION name OWNER TO newowner" +#~ "TRUNCATE [ TABLE ] [ ONLY ] name [, ... ]\n" +#~ " [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]" #~ msgstr "" -#~ "ALTER CONVERSION nom RENAME TO nouveau_nom\n" -#~ "ALTER CONVERSION nom OWNER TO nouveau_propriétaire" +#~ "TRUNCATE [ TABLE ] [ ONLY ] nom [, ... ]\n" +#~ " [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]" #~ msgid "" -#~ "ALTER DATABASE name [ [ WITH ] option [ ... ] ]\n" -#~ "\n" -#~ "where option can be:\n" -#~ "\n" -#~ " CONNECTION LIMIT connlimit\n" -#~ "\n" -#~ "ALTER DATABASE name RENAME TO newname\n" -#~ "\n" -#~ "ALTER DATABASE name OWNER TO new_owner\n" +#~ "START TRANSACTION [ transaction_mode [, ...] ]\n" #~ "\n" -#~ "ALTER DATABASE name SET TABLESPACE new_tablespace\n" +#~ "where transaction_mode is one of:\n" #~ "\n" -#~ "ALTER DATABASE name SET configuration_parameter { TO | = } { value | DEFAULT }\n" -#~ "ALTER DATABASE name SET configuration_parameter FROM CURRENT\n" -#~ "ALTER DATABASE name RESET configuration_parameter\n" -#~ "ALTER DATABASE name RESET ALL" +#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n" +#~ " READ WRITE | READ ONLY" #~ msgstr "" -#~ "ALTER DATABASE nom [ [ WITH ] option [ ... ] ]\n" +#~ "START TRANSACTION [ mode_transaction [, ...] ]\n" #~ "\n" -#~ "où option peut être:\n" +#~ "où mode_transaction peut être :\n" #~ "\n" -#~ " CONNECTION LIMIT limite_connexion\n" +#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ |\n" +#~ " READ COMMITTED | READ UNCOMMITTED }\n" +#~ " READ WRITE | READ ONLY" + +#~ msgid "" +#~ "SHOW name\n" +#~ "SHOW ALL" +#~ msgstr "" +#~ "SHOW nom\n" +#~ "SHOW ALL" + +#~ msgid "" +#~ "SET TRANSACTION transaction_mode [, ...]\n" +#~ "SET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode [, ...]\n" #~ "\n" -#~ "ALTER DATABASE nom RENAME TO nouveau_nom\n" +#~ "where transaction_mode is one of:\n" #~ "\n" -#~ "ALTER DATABASE nom OWNER TO nouveau_propriétaire\n" +#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n" +#~ " READ WRITE | READ ONLY" +#~ msgstr "" +#~ "SET TRANSACTION mode_transaction [, ...]\n" +#~ "SET SESSION CHARACTERISTICS AS TRANSACTION mode_transaction [, ...]\n" #~ "\n" -#~ "ALTER DATABASE nom SET TABLESPACE nouveau_tablespace\n" +#~ "où mode_transaction peut être :\n" #~ "\n" -#~ "ALTER DATABASE nom SET paramètre_configuration { TO | = } { valeur | DEFAULT }\n" -#~ "ALTER DATABASE nom SET paramètre_configuration FROM CURRENT\n" -#~ "ALTER DATABASE nom RESET paramètre_configuration\n" -#~ "ALTER DATABASE nom RESET ALL" +#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ |\n" +#~ " READ COMMITTED | READ UNCOMMITTED }\n" +#~ " READ WRITE | READ ONLY" #~ msgid "" -#~ "ALTER DOMAIN name\n" -#~ " { SET DEFAULT expression | DROP DEFAULT }\n" -#~ "ALTER DOMAIN name\n" -#~ " { SET | DROP } NOT NULL\n" -#~ "ALTER DOMAIN name\n" -#~ " ADD domain_constraint\n" -#~ "ALTER DOMAIN name\n" -#~ " DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n" -#~ "ALTER DOMAIN name\n" -#~ " OWNER TO new_owner \n" -#~ "ALTER DOMAIN name\n" -#~ " SET SCHEMA new_schema" +#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION username\n" +#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT\n" +#~ "RESET SESSION AUTHORIZATION" #~ msgstr "" -#~ "ALTER DOMAIN nom\n" -#~ " { SET DEFAULT expression | DROP DEFAULT }\n" -#~ "ALTER DOMAIN nom\n" -#~ " { SET | DROP } NOT NULL\n" -#~ "ALTER DOMAIN nom\n" -#~ " ADD contrainte_domaine\n" -#~ "ALTER DOMAIN nom\n" -#~ " DROP CONSTRAINT nom_contrainte [ RESTRICT | CASCADE ]\n" -#~ "ALTER DOMAIN nom\n" -#~ " OWNER TO nouveau_propriétaire \n" -#~ "ALTER DOMAIN nom\n" -#~ " SET SCHEMA nouveau_schéma" +#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION nom_utilisateur\n" +#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT\n" +#~ "RESET SESSION AUTHORIZATION" #~ msgid "" -#~ "ALTER FOREIGN DATA WRAPPER name\n" -#~ " [ VALIDATOR valfunction | NO VALIDATOR ]\n" -#~ " [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ]) ]\n" -#~ "ALTER FOREIGN DATA WRAPPER name OWNER TO new_owner" +#~ "SET [ SESSION | LOCAL ] ROLE rolename\n" +#~ "SET [ SESSION | LOCAL ] ROLE NONE\n" +#~ "RESET ROLE" #~ msgstr "" -#~ "ALTER FOREIGN DATA WRAPPER nom\n" -#~ " [ VALIDATOR fonction_validation | NO VALIDATOR ]\n" -#~ " [ OPTIONS ( [ ADD | SET | DROP ] option ['valeur'] [, ... ]) ]\n" -#~ "ALTER FOREIGN DATA WRAPPER nom OWNER TO nouveau_propriétaire" +#~ "SET [ SESSION | LOCAL ] ROLE nom_rôle\n" +#~ "SET [ SESSION | LOCAL ] ROLE NONE\n" +#~ "RESET ROLE" + +#~ msgid "SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }" +#~ msgstr "SET CONSTRAINTS { ALL | nom [, ...] } { DEFERRED | IMMEDIATE }" #~ msgid "" -#~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -#~ " action [ ... ] [ RESTRICT ]\n" -#~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -#~ " RENAME TO new_name\n" -#~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -#~ " OWNER TO new_owner\n" -#~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -#~ " SET SCHEMA new_schema\n" -#~ "\n" -#~ "where action is one of:\n" -#~ "\n" -#~ " CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" -#~ " IMMUTABLE | STABLE | VOLATILE\n" -#~ " [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" -#~ " COST execution_cost\n" -#~ " ROWS result_rows\n" -#~ " SET configuration_parameter { TO | = } { value | DEFAULT }\n" -#~ " SET configuration_parameter FROM CURRENT\n" -#~ " RESET configuration_parameter\n" -#~ " RESET ALL" -#~ msgstr "" -#~ "ALTER FUNCTION nom ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] )\n" -#~ " action [, ... ] [ RESTRICT ]\n" -#~ "ALTER FUNCTION nom ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] )\n" -#~ " RENAME TO nouveau_nom\n" -#~ "ALTER FUNCTION nom ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] )\n" -#~ " OWNER TO nouveau_proprietaire\n" -#~ "ALTER FUNCTION nom ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] )\n" -#~ " SET SCHEMA nouveau_schema\n" -#~ "\n" -#~ "où action peut être :\n" -#~ "\n" -#~ " CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" -#~ " IMMUTABLE | STABLE | VOLATILE\n" -#~ " [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" -#~ " COST cout_execution\n" -#~ " ROWS lignes_resultats\n" -#~ " SET paramètre { TO | = } { valeur | DEFAULT }\n" -#~ " SET paramètre FROM CURRENT\n" -#~ " RESET paramètre\n" -#~ " RESET ALL" - -#~ msgid "" -#~ "ALTER GROUP groupname ADD USER username [, ... ]\n" -#~ "ALTER GROUP groupname DROP USER username [, ... ]\n" -#~ "\n" -#~ "ALTER GROUP groupname RENAME TO newname" -#~ msgstr "" -#~ "ALTER GROUP nom_groupe ADD USER nom_utilisateur [, ... ]\n" -#~ "ALTER GROUP nom_groupe DROP USER nom_utilisateur [, ... ]\n" -#~ "\n" -#~ "ALTER GROUP nom_groupe RENAME TO nouveau_nom" - -#~ msgid "" -#~ "ALTER INDEX name RENAME TO new_name\n" -#~ "ALTER INDEX name SET TABLESPACE tablespace_name\n" -#~ "ALTER INDEX name SET ( storage_parameter = value [, ... ] )\n" -#~ "ALTER INDEX name RESET ( storage_parameter [, ... ] )" -#~ msgstr "" -#~ "ALTER INDEX nom RENAME TO nouveau_nom\n" -#~ "ALTER INDEX nom SET TABLESPACE nom_tablespace\n" -#~ "ALTER INDEX nom SET ( paramètre_stockage = valeur [, ... ] )\n" -#~ "ALTER INDEX nom RESET ( paramètre_stockage [, ... ] )" - -#~ msgid "" -#~ "ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO newname\n" -#~ "ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO new_owner" -#~ msgstr "" -#~ "ALTER [ PROCEDURAL ] LANGUAGE nom RENAME TO nouveau_nom\n" -#~ "ALTER [ PROCEDURAL ] LANGUAGE nom OWNER TO nouveau_propriétaire" - -#~ msgid "ALTER OPERATOR name ( { lefttype | NONE } , { righttype | NONE } ) OWNER TO newowner" -#~ msgstr "" -#~ "ALTER OPERATOR nom ( { lefttype | NONE } , { righttype | NONE } )\n" -#~ " OWNER TO nouveau_propriétaire" - -#~ msgid "" -#~ "ALTER OPERATOR CLASS name USING index_method RENAME TO newname\n" -#~ "ALTER OPERATOR CLASS name USING index_method OWNER TO newowner" +#~ "SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | 'value' | DEFAULT }\n" +#~ "SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }" #~ msgstr "" -#~ "ALTER OPERATOR CLASS nom USING méthode_indexation\n" -#~ " RENAME TO nouveau_nom\n" -#~ "ALTER OPERATOR CLASS nom USING méthode_indexation\n" -#~ " OWNER TO nouveau_propriétaire" +#~ "SET [ SESSION | LOCAL ] paramètre { TO | = } { valeur | 'valeur' | DEFAULT }\n" +#~ "SET [ SESSION | LOCAL ] TIME ZONE { zone_horaire | LOCAL | DEFAULT }" #~ msgid "" -#~ "ALTER OPERATOR FAMILY name USING index_method ADD\n" -#~ " { OPERATOR strategy_number operator_name ( op_type, op_type )\n" -#~ " | FUNCTION support_number [ ( op_type [ , op_type ] ) ] funcname ( argument_type [, ...] )\n" -#~ " } [, ... ]\n" -#~ "ALTER OPERATOR FAMILY name USING index_method DROP\n" -#~ " { OPERATOR strategy_number ( op_type [ , op_type ] )\n" -#~ " | FUNCTION support_number ( op_type [ , op_type ] )\n" -#~ " } [, ... ]\n" -#~ "ALTER OPERATOR FAMILY name USING index_method RENAME TO newname\n" -#~ "ALTER OPERATOR FAMILY name USING index_method OWNER TO newowner" +#~ "[ WITH [ RECURSIVE ] with_query [, ...] ]\n" +#~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" +#~ " * | expression [ [ AS ] output_name ] [, ...]\n" +#~ " INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table\n" +#~ " [ FROM from_item [, ...] ]\n" +#~ " [ WHERE condition ]\n" +#~ " [ GROUP BY expression [, ...] ]\n" +#~ " [ HAVING condition [, ...] ]\n" +#~ " [ WINDOW window_name AS ( window_definition ) [, ...] ]\n" +#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" +#~ " [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]\n" +#~ " [ LIMIT { count | ALL } ]\n" +#~ " [ OFFSET start [ ROW | ROWS ] ]\n" +#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n" +#~ " [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]" #~ msgstr "" -#~ "ALTER OPERATOR FAMILY nom USING méthode_indexage ADD\n" -#~ " { OPERATOR numéro_stratégie nom_opérateur ( type_op, type_op ) \n" -#~ " | FUNCTION numéro_support [ ( type_op [ , type_op ] ) ]\n" -#~ " nom_fonction ( type_argument [, ...] )\n" -#~ " } [, ... ]\n" -#~ "ALTER OPERATOR FAMILY nom USING méthode_indexage DROP\n" -#~ " { OPERATOR numéro_stratégie ( type_op [ , type_op ] )\n" -#~ " | FUNCTION numéro_support ( type_op [ , type_op ] )\n" -#~ " } [, ... ]\n" -#~ "ALTER OPERATOR FAMILY nom USING méthode_indexage\n" -#~ " RENAME TO nouveau_nom\n" -#~ "ALTER OPERATOR FAMILY nom USING méthode_indexage\n" -#~ " OWNER TO nouveau_propriétaire" +#~ "[ WITH [ RECURSIVE ] requête_with [, ...] ]\n" +#~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" +#~ " * | expression [ [ AS ] nom_sortie ] [, ...]\n" +#~ " INTO [ TEMPORARY | TEMP ] [ TABLE ] nouvelle_table\n" +#~ " [ FROM élément_from [, ...] ]\n" +#~ " [ WHERE condition ]\n" +#~ " [ GROUP BY expression [, ...] ]\n" +#~ " [ HAVING condition [, ...] ]\n" +#~ " [ WINDOW nom_window AS ( définition_window ) [, ...] ]\n" +#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" +#~ " [ ORDER BY expression [ ASC | DESC | USING opérateur ] [ NULLS { FIRST | LAST } ] [, ...] ]\n" +#~ " [ LIMIT { total | ALL } ]\n" +#~ " [ OFFSET début [ ROW | ROWS ] ]\n" +#~ " [ FETCH { FIRST | NEXT } [ total ] { ROW | ROWS } ONLY ]\n" +#~ " [ FOR { UPDATE | SHARE } [ OF nom_table [, ...] ] [ NOWAIT ] [...] ]" #~ msgid "" -#~ "ALTER ROLE name [ [ WITH ] option [ ... ] ]\n" +#~ "[ WITH [ RECURSIVE ] with_query [, ...] ]\n" +#~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" +#~ " * | expression [ [ AS ] output_name ] [, ...]\n" +#~ " [ FROM from_item [, ...] ]\n" +#~ " [ WHERE condition ]\n" +#~ " [ GROUP BY expression [, ...] ]\n" +#~ " [ HAVING condition [, ...] ]\n" +#~ " [ WINDOW window_name AS ( window_definition ) [, ...] ]\n" +#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" +#~ " [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]\n" +#~ " [ LIMIT { count | ALL } ]\n" +#~ " [ OFFSET start [ ROW | ROWS ] ]\n" +#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n" +#~ " [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]\n" #~ "\n" -#~ "where option can be:\n" -#~ " \n" -#~ " SUPERUSER | NOSUPERUSER\n" -#~ " | CREATEDB | NOCREATEDB\n" -#~ " | CREATEROLE | NOCREATEROLE\n" -#~ " | CREATEUSER | NOCREATEUSER\n" -#~ " | INHERIT | NOINHERIT\n" -#~ " | LOGIN | NOLOGIN\n" -#~ " | CONNECTION LIMIT connlimit\n" -#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -#~ " | VALID UNTIL 'timestamp' \n" +#~ "where from_item can be one of:\n" #~ "\n" -#~ "ALTER ROLE name RENAME TO newname\n" +#~ " [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]\n" +#~ " ( select ) [ AS ] alias [ ( column_alias [, ...] ) ]\n" +#~ " with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]\n" +#~ " function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias [, ...] | column_definition [, ...] ) ]\n" +#~ " function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] )\n" +#~ " from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]\n" #~ "\n" -#~ "ALTER ROLE name SET configuration_parameter { TO | = } { value | DEFAULT }\n" -#~ "ALTER ROLE name SET configuration_parameter FROM CURRENT\n" -#~ "ALTER ROLE name RESET configuration_parameter\n" -#~ "ALTER ROLE name RESET ALL" +#~ "and with_query is:\n" +#~ "\n" +#~ " with_query_name [ ( column_name [, ...] ) ] AS ( select )\n" +#~ "\n" +#~ "TABLE { [ ONLY ] table_name [ * ] | with_query_name }" #~ msgstr "" -#~ "ALTER ROLE nom [ [ WITH ] option [ ... ] ]\n" +#~ "[ WITH [ RECURSIVE ] requête_with [, ...] ]\n" +#~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" +#~ " * | expression [ [ AS ] nom_sortie ] [, ...]\n" +#~ " [ FROM élément_from [, ...] ]\n" +#~ " [ WHERE condition ]\n" +#~ " [ GROUP BY expression [, ...] ]\n" +#~ " [ HAVING condition [, ...] ]\n" +#~ " [ WINDOW nom_window AS ( définition_window ) [, ...] ]\n" +#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" +#~ " [ ORDER BY expression [ ASC | DESC | USING opérateur ] [ NULLS { FIRST | LAST } ] [, ...] ]\n" +#~ " [ LIMIT { total | ALL } ]\n" +#~ " [ OFFSET début [ ROW | ROWS ] ]\n" +#~ " [ FETCH { FIRST | NEXT } [ total ] { ROW | ROWS } ONLY ]\n" +#~ " [ FOR { UPDATE | SHARE } [ OF nom_table [, ...] ] [ NOWAIT ] [...] ]\n" #~ "\n" -#~ "où option peut être :\n" -#~ " \n" -#~ " SUPERUSER | NOSUPERUSER\n" -#~ " | CREATEDB | NOCREATEDB\n" -#~ " | CREATEROLE | NOCREATEROLE\n" -#~ " | CREATEUSER | NOCREATEUSER\n" -#~ " | INHERIT | NOINHERIT\n" -#~ " | LOGIN | NOLOGIN\n" -#~ " | CONNECTION LIMIT limite_connexions\n" -#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'mot de passe'\n" -#~ " | VALID UNTIL 'timestamp' \n" +#~ "avec élément_from faisant parti de :\n" #~ "\n" -#~ "ALTER ROLE nom RENAME TO nouveau_nom\n" +#~ " [ ONLY ] nom_table [ * ] [ [ AS ] alias [ ( alias_colonne [, ...] ) ] ]\n" +#~ " ( select ) [ AS ] alias [ ( alias_colonne [, ...] ) ]\n" +#~ " nom_requête_with [ [ AS ] alias [ ( alias_colonne [, ...] ) ] ]\n" +#~ " nom_fonction ( [ argument [, ...] ] ) [ AS ] alias [ ( alias_colonne [, ...] | définition_colonne [, ...] ) ]\n" +#~ " nom_fonction ( [ argument [, ...] ] ) AS ( définition_colonne [, ...] )\n" +#~ " élément_from [ NATURAL ] type_jointure élément_from [ ON condition_jointure | USING ( colonne_jointure [, ...] ) ]\n" #~ "\n" -#~ "ALTER ROLE nom SET paramètre { TO | = } { valeur | DEFAULT }\n" -#~ "ALTER ROLE name SET paramètre FROM CURRENT\n" -#~ "ALTER ROLE nom RESET paramètre\n" -#~ "ALTER ROLE name RESET ALL" +#~ "et requête_with est:\n" +#~ "\n" +#~ " nom_requête_with [ ( nom_colonne [, ...] ) ] AS ( select )\n" +#~ "\n" +#~ "TABLE { [ ONLY ] nom_table [ * ] | nom_requête_with }" -#~ msgid "" -#~ "ALTER SCHEMA name RENAME TO newname\n" -#~ "ALTER SCHEMA name OWNER TO newowner" -#~ msgstr "" -#~ "ALTER SCHEMA nom RENAME TO nouveau_nom\n" -#~ "ALTER SCHEMA nom OWNER TO nouveau_propriétaire" +#~ msgid "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_name" +#~ msgstr "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] nom_retour" -#~ msgid "" -#~ "ALTER SEQUENCE name [ INCREMENT [ BY ] increment ]\n" -#~ " [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]\n" -#~ " [ START [ WITH ] start ]\n" -#~ " [ RESTART [ [ WITH ] restart ] ]\n" -#~ " [ CACHE cache ] [ [ NO ] CYCLE ]\n" -#~ " [ OWNED BY { table.column | NONE } ]\n" -#~ "ALTER SEQUENCE name OWNER TO new_owner\n" -#~ "ALTER SEQUENCE name RENAME TO new_name\n" -#~ "ALTER SEQUENCE name SET SCHEMA new_schema" -#~ msgstr "" -#~ "ALTER SEQUENCE nom [ INCREMENT [ BY ] incrément ]\n" -#~ " [ MINVALUE valeur_min | NO MINVALUE ] [ MAXVALUE valeur_max | NO MAXVALUE ]\n" -#~ " [ START [ WITH ] valeur_début ]\n" -#~ " [ RESTART [ [ WITH ] valeur_redémarrage ] ]\n" -#~ " [ CACHE cache ] [ [ NO ] CYCLE ]\n" -#~ " [ OWNED BY { table.colonne | NONE } ]\n" -#~ "ALTER SEQUENCE nom OWNER TO new_propriétaire\n" -#~ "ALTER SEQUENCE nom RENAME TO new_nom\n" -#~ "ALTER SEQUENCE nom SET SCHEMA new_schéma" +#~ msgid "ROLLBACK PREPARED transaction_id" +#~ msgstr "ROLLBACK PREPARED id_transaction" -#~ msgid "" -#~ "ALTER SERVER servername [ VERSION 'newversion' ]\n" -#~ " [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] ) ]\n" -#~ "ALTER SERVER servername OWNER TO new_owner" -#~ msgstr "" -#~ "ALTER SERVER nom [ VERSION 'nouvelleversion' ]\n" -#~ " [ OPTIONS ( [ ADD | SET | DROP ] option ['valeur'] [, ... ] ) ]\n" -#~ "ALTER SERVER nom OWNER TO nouveau_propriétaire" +#~ msgid "ROLLBACK [ WORK | TRANSACTION ]" +#~ msgstr "ROLLBACK [ WORK | TRANSACTION ]" #~ msgid "" -#~ "ALTER TABLE [ ONLY ] name [ * ]\n" -#~ " action [, ... ]\n" -#~ "ALTER TABLE [ ONLY ] name [ * ]\n" -#~ " RENAME [ COLUMN ] column TO new_column\n" -#~ "ALTER TABLE name\n" -#~ " RENAME TO new_name\n" -#~ "ALTER TABLE name\n" -#~ " SET SCHEMA new_schema\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n" +#~ " [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON [ TABLE ] tablename [, ...]\n" +#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" #~ "\n" -#~ "where action is one of:\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { { SELECT | INSERT | UPDATE | REFERENCES } ( column [, ...] )\n" +#~ " [,...] | ALL [ PRIVILEGES ] ( column [, ...] ) }\n" +#~ " ON [ TABLE ] tablename [, ...]\n" +#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" #~ "\n" -#~ " ADD [ COLUMN ] column type [ column_constraint [ ... ] ]\n" -#~ " DROP [ COLUMN ] column [ RESTRICT | CASCADE ]\n" -#~ " ALTER [ COLUMN ] column [ SET DATA ] TYPE type [ USING expression ]\n" -#~ " ALTER [ COLUMN ] column SET DEFAULT expression\n" -#~ " ALTER [ COLUMN ] column DROP DEFAULT\n" -#~ " ALTER [ COLUMN ] column { SET | DROP } NOT NULL\n" -#~ " ALTER [ COLUMN ] column SET STATISTICS integer\n" -#~ " ALTER [ COLUMN ] column SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }\n" -#~ " ADD table_constraint\n" -#~ " DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n" -#~ " DISABLE TRIGGER [ trigger_name | ALL | USER ]\n" -#~ " ENABLE TRIGGER [ trigger_name | ALL | USER ]\n" -#~ " ENABLE REPLICA TRIGGER trigger_name\n" -#~ " ENABLE ALWAYS TRIGGER trigger_name\n" -#~ " DISABLE RULE rewrite_rule_name\n" -#~ " ENABLE RULE rewrite_rule_name\n" -#~ " ENABLE REPLICA RULE rewrite_rule_name\n" -#~ " ENABLE ALWAYS RULE rewrite_rule_name\n" -#~ " CLUSTER ON index_name\n" -#~ " SET WITHOUT CLUSTER\n" -#~ " SET WITH OIDS\n" -#~ " SET WITHOUT OIDS\n" -#~ " SET ( storage_parameter = value [, ... ] )\n" -#~ " RESET ( storage_parameter [, ... ] )\n" -#~ " INHERIT parent_table\n" -#~ " NO INHERIT parent_table\n" -#~ " OWNER TO new_owner\n" -#~ " SET TABLESPACE new_tablespace" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { { USAGE | SELECT | UPDATE }\n" +#~ " [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON SEQUENCE sequencename [, ...]\n" +#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON DATABASE dbname [, ...]\n" +#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON FOREIGN DATA WRAPPER fdwname [, ...]\n" +#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON FOREIGN SERVER servername [, ...]\n" +#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { EXECUTE | ALL [ PRIVILEGES ] }\n" +#~ " ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [, ...]\n" +#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON LANGUAGE langname [, ...]\n" +#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON SCHEMA schemaname [, ...]\n" +#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { CREATE | ALL [ PRIVILEGES ] }\n" +#~ " ON TABLESPACE tablespacename [, ...]\n" +#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ ADMIN OPTION FOR ]\n" +#~ " role [, ...] FROM rolename [, ...]\n" +#~ " [ CASCADE | RESTRICT ]" #~ msgstr "" -#~ "ALTER TABLE [ ONLY ] nom [ * ]\n" -#~ " action [, ... ]\n" -#~ "ALTER TABLE [ ONLY ] nom [ * ]\n" -#~ " RENAME [ COLUMN ] colonne TO nouvelle_colonne\n" -#~ "ALTER TABLE nom\n" -#~ " RENAME TO nouveau_nom\n" -#~ "ALTER TABLE nom\n" -#~ " SET SCHEMA nouveau_schema\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n" +#~ " [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON [ TABLE ] nom_table [, ...]\n" +#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" #~ "\n" -#~ "où action peut être :\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { { SELECT | INSERT | UPDATE | REFERENCES } ( colonne [, ...] )\n" +#~ " [,...] | ALL [ PRIVILEGES ] ( colonne [, ...] ) }\n" +#~ " ON [ TABLE ] nom_table [, ...]\n" +#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" #~ "\n" -#~ " ADD [ COLUMN ] colonne type [ contrainte_colonne [ ... ] ]\n" -#~ " DROP [ COLUMN ] colonne [ RESTRICT | CASCADE ]\n" -#~ " ALTER [ COLUMN ] colonne [ SET DATA ] TYPE type [ USING expression ]\n" -#~ " ALTER [ COLUMN ] colonne SET DEFAULT expression\n" -#~ " ALTER [ COLUMN ] colonne DROP DEFAULT\n" -#~ " ALTER [ COLUMN ] colonne { SET | DROP } NOT NULL\n" -#~ " ALTER [ COLUMN ] colonne SET STATISTICS entier\n" -#~ " ALTER [ COLUMN ] colonne SET STORAGE\n" -#~ " { PLAIN | EXTERNAL | EXTENDED | MAIN }\n" -#~ " ADD contrainte_table\n" -#~ " DROP CONSTRAINT nom_contrainte [ RESTRICT | CASCADE ]\n" -#~ " DISABLE TRIGGER [ nom_trigger | ALL | USER ]\n" -#~ " ENABLE TRIGGER [ nom_trigger | ALL | USER ]\n" -#~ " ENABLE REPLICA TRIGGER nom_trigger\n" -#~ " ENABLE ALWAYS TRIGGER nom_trigger\n" -#~ " DISABLE RULE nom_règle_réécriture\n" -#~ " ENABLE RULE nom_règle_réécriture\n" -#~ " ENABLE REPLICA RULE nom_règle_réécriture\n" -#~ " ENABLE ALWAYS RULE nom_règle_réécriture\n" -#~ " CLUSTER ON nom_index\n" -#~ " SET WITHOUT CLUSTER\n" -#~ " SET WITH OIDS\n" -#~ " SET WITHOUT OIDS\n" -#~ " SET ( paramètre_stockage = valeur [, ... ] )\n" -#~ " RESET ( paramètre_stockage [, ... ] )\n" -#~ " INHERIT table_parent\n" -#~ " NO INHERIT table_parent\n" -#~ " OWNER TO nouveau_propriétaire\n" -#~ " SET TABLESPACE nouveau_tablespace" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { { USAGE | SELECT | UPDATE }\n" +#~ " [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON SEQUENCE nom_séquence [, ...]\n" +#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON DATABASE nom_base [, ...]\n" +#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON FOREIGN DATA WRAPPER nom_fdw [, ...]\n" +#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON FOREIGN SERVER nom_serveur [, ...]\n" +#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { EXECUTE | ALL [ PRIVILEGES ] }\n" +#~ " ON FUNCTION nom_fonction ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] ) [, ...]\n" +#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON LANGUAGE nom_langage [, ...]\n" +#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON SCHEMA nom_schéma [, ...]\n" +#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { CREATE | ALL [ PRIVILEGES ] }\n" +#~ " ON TABLESPACE nom_tablespace [, ...]\n" +#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ ADMIN OPTION FOR ]\n" +#~ " role [, ...] FROM nom_rôle [, ...]\n" +#~ " [ CASCADE | RESTRICT ]" -#~ msgid "" -#~ "ALTER TABLESPACE name RENAME TO newname\n" -#~ "ALTER TABLESPACE name OWNER TO newowner" -#~ msgstr "" -#~ "ALTER TABLESPACE nom RENAME TO nouveau_nom\n" -#~ "ALTER TABLESPACE nom OWNER TO nouveau_propriétaire" +#~ msgid "RELEASE [ SAVEPOINT ] savepoint_name" +#~ msgstr "RELEASE [ SAVEPOINT ] nom_retour" -#~ msgid "" -#~ "ALTER TEXT SEARCH CONFIGURATION name\n" -#~ " ADD MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]\n" -#~ "ALTER TEXT SEARCH CONFIGURATION name\n" -#~ " ALTER MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]\n" -#~ "ALTER TEXT SEARCH CONFIGURATION name\n" -#~ " ALTER MAPPING REPLACE old_dictionary WITH new_dictionary\n" -#~ "ALTER TEXT SEARCH CONFIGURATION name\n" -#~ " ALTER MAPPING FOR token_type [, ... ] REPLACE old_dictionary WITH new_dictionary\n" -#~ "ALTER TEXT SEARCH CONFIGURATION name\n" -#~ " DROP MAPPING [ IF EXISTS ] FOR token_type [, ... ]\n" -#~ "ALTER TEXT SEARCH CONFIGURATION name RENAME TO newname\n" -#~ "ALTER TEXT SEARCH CONFIGURATION name OWNER TO newowner" -#~ msgstr "" -#~ "ALTER TEXT SEARCH CONFIGURATION nom\n" -#~ " ADD MAPPING FOR type_jeton [, ... ] WITH nom_dictionnaire [, ... ]\n" -#~ "ALTER TEXT SEARCH CONFIGURATION nom\n" -#~ " ALTER MAPPING FOR type_jeton [, ... ] WITH nom_dictionnaire [, ... ]\n" -#~ "ALTER TEXT SEARCH CONFIGURATION nom\n" -#~ " ALTER MAPPING REPLACE ancien_dictionnaire WITH nouveau_dictionnaire\n" -#~ "ALTER TEXT SEARCH CONFIGURATION nom\n" -#~ " ALTER MAPPING FOR type_jeton [, ... ]\n" -#~ " REPLACE ancien_dictionnaire WITH nouveau_dictionnaire\n" -#~ "ALTER TEXT SEARCH CONFIGURATION nom\n" -#~ " DROP MAPPING [ IF EXISTS ] FOR type_jeton [, ... ]\n" -#~ "ALTER TEXT SEARCH CONFIGURATION nom RENAME TO nouveau_nom\n" -#~ "ALTER TEXT SEARCH CONFIGURATION nom OWNER TO nouveau_propriétaire" +#~ msgid "REINDEX { INDEX | TABLE | DATABASE | SYSTEM } name [ FORCE ]" +#~ msgstr "REINDEX { INDEX | TABLE | DATABASE | SYSTEM } nom [ FORCE ]" -#~ msgid "" -#~ "ALTER TEXT SEARCH DICTIONARY name (\n" -#~ " option [ = value ] [, ... ]\n" -#~ ")\n" -#~ "ALTER TEXT SEARCH DICTIONARY name RENAME TO newname\n" -#~ "ALTER TEXT SEARCH DICTIONARY name OWNER TO newowner" -#~ msgstr "" -#~ "ALTER TEXT SEARCH DICTIONARY nom (\n" -#~ " option [ = valeur ] [, ... ]\n" -#~ ")\n" -#~ "ALTER TEXT SEARCH DICTIONARY nom RENAME TO nouveau_nom\n" -#~ "ALTER TEXT SEARCH DICTIONARY nom OWNER TO nouveau_propriétaire" +#~ msgid "REASSIGN OWNED BY old_role [, ...] TO new_role" +#~ msgstr "REASSIGN OWNED BY ancien_role [, ...] TO nouveau_role" -#~ msgid "ALTER TEXT SEARCH PARSER name RENAME TO newname" -#~ msgstr "ALTER TEXT SEARCH PARSER nom RENAME TO nouveau_nom" +#~ msgid "PREPARE TRANSACTION transaction_id" +#~ msgstr "PREPARE TRANSACTION id_transaction" -#~ msgid "ALTER TEXT SEARCH TEMPLATE name RENAME TO newname" -#~ msgstr "ALTER TEXT SEARCH TEMPLATE nom RENAME TO nouveau_nom" +#~ msgid "PREPARE name [ ( datatype [, ...] ) ] AS statement" +#~ msgstr "PREPARE nom_plan [ ( type_données [, ...] ) ] AS instruction" -#~ msgid "ALTER TRIGGER name ON table RENAME TO newname" -#~ msgstr "ALTER TRIGGER nom ON table RENAME TO nouveau_nom" +#~ msgid "NOTIFY name" +#~ msgstr "NOTIFY nom" -#~ msgid "" -#~ "ALTER TYPE name RENAME TO new_name\n" -#~ "ALTER TYPE name OWNER TO new_owner \n" -#~ "ALTER TYPE name SET SCHEMA new_schema" -#~ msgstr "" -#~ "ALTER TYPE nom RENAME TO nouveau_nom\n" -#~ "ALTER TYPE nom OWNER TO nouveau_propriétaire\n" -#~ "ALTER TYPE nom SET SCHEMA nouveau_schéma" +#~ msgid "MOVE [ direction { FROM | IN } ] cursorname" +#~ msgstr "MOVE [ direction { FROM | IN } ] nom_de_curseur" #~ msgid "" -#~ "ALTER USER name [ [ WITH ] option [ ... ] ]\n" -#~ "\n" -#~ "where option can be:\n" -#~ " \n" -#~ " SUPERUSER | NOSUPERUSER\n" -#~ " | CREATEDB | NOCREATEDB\n" -#~ " | CREATEROLE | NOCREATEROLE\n" -#~ " | CREATEUSER | NOCREATEUSER\n" -#~ " | INHERIT | NOINHERIT\n" -#~ " | LOGIN | NOLOGIN\n" -#~ " | CONNECTION LIMIT connlimit\n" -#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -#~ " | VALID UNTIL 'timestamp' \n" +#~ "LOCK [ TABLE ] [ ONLY ] name [, ...] [ IN lockmode MODE ] [ NOWAIT ]\n" #~ "\n" -#~ "ALTER USER name RENAME TO newname\n" +#~ "where lockmode is one of:\n" #~ "\n" -#~ "ALTER USER name SET configuration_parameter { TO | = } { value | DEFAULT }\n" -#~ "ALTER USER name SET configuration_parameter FROM CURRENT\n" -#~ "ALTER USER name RESET configuration_parameter\n" -#~ "ALTER USER name RESET ALL" +#~ " ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n" +#~ " | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE" #~ msgstr "" -#~ "ALTER USER nom [ [ WITH ] option [ ... ] ]\n" -#~ "\n" -#~ "où option peut être :\n" -#~ " \n" -#~ " SUPERUSER | NOSUPERUSER\n" -#~ " | CREATEDB | NOCREATEDB\n" -#~ " | CREATEROLE | NOCREATEROLE\n" -#~ " | CREATEUSER | NOCREATEUSER\n" -#~ " | INHERIT | NOINHERIT\n" -#~ " | LOGIN | NOLOGIN\n" -#~ " | CONNECTION LIMIT limite_connexion\n" -#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'motdepasse'\n" -#~ " | VALID UNTIL 'timestamp' \n" +#~ "LOCK [ TABLE ] [ ONLY ] nom [, ...] [ IN mode_verrouillage MODE ] [ NOWAIT ]\n" #~ "\n" -#~ "ALTER USER nom RENAME TO nouveau_nom\n" +#~ "avec mode_verrouillage parmi :\n" #~ "\n" -#~ "ALTER USER nom SET paramètre { TO | = } { valeur | DEFAULT }\n" -#~ "ALTER USER name SET paramètre FROM CURRENT\n" -#~ "ALTER USER nom RESET paramètre\n" -#~ "ALTER USER name RESET ALL" +#~ " ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n" +#~ " | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE" -#~ msgid "" -#~ "ALTER USER MAPPING FOR { username | USER | CURRENT_USER | PUBLIC }\n" -#~ " SERVER servername\n" -#~ " OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] )" -#~ msgstr "" -#~ "ALTER USER MAPPING FOR { nom_utilisateur | USER | CURRENT_USER | PUBLIC }\n" -#~ " SERVER nom_serveur\n" -#~ " OPTIONS ( [ ADD | SET | DROP ] option ['valeur'] [, ... ] )" +#~ msgid "LOAD 'filename'" +#~ msgstr "LOAD 'nom_de_fichier'" + +#~ msgid "LISTEN name" +#~ msgstr "LISTEN nom" #~ msgid "" -#~ "ALTER VIEW name ALTER [ COLUMN ] column SET DEFAULT expression\n" -#~ "ALTER VIEW name ALTER [ COLUMN ] column DROP DEFAULT\n" -#~ "ALTER VIEW name OWNER TO new_owner\n" -#~ "ALTER VIEW name RENAME TO new_name\n" -#~ "ALTER VIEW name SET SCHEMA new_schema" +#~ "INSERT INTO table [ ( column [, ...] ) ]\n" +#~ " { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }\n" +#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" #~ msgstr "" -#~ "ALTER VIEW nom ALTER [ COLUMN ] colonne SET DEFAULT expression\n" -#~ "ALTER VIEW nom ALTER [ COLUMN ] colonne DROP DEFAULT\n" -#~ "ALTER VIEW nom OWNER TO nouveau_propriétaire\n" -#~ "ALTER VIEW nom RENAME TO nouveau_nom\n" -#~ "ALTER VIEW nom SET SCHEMA nouveau_schéma" - -#~ msgid "ANALYZE [ VERBOSE ] [ table [ ( column [, ...] ) ] ]" -#~ msgstr "ANALYZE [ VERBOSE ] [ table [ ( colonne [, ...] ) ] ]" +#~ "INSERT INTO table [ ( colonne [, ...] ) ]\n" +#~ " { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | requête }\n" +#~ " [ RETURNING * | expression_sortie [ [ AS ] nom_sortie ] [, ...] ]" #~ msgid "" -#~ "BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]\n" +#~ "GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n" +#~ " [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON [ TABLE ] tablename [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" #~ "\n" -#~ "where transaction_mode is one of:\n" +#~ "GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( column [, ...] )\n" +#~ " [,...] | ALL [ PRIVILEGES ] ( column [, ...] ) }\n" +#~ " ON [ TABLE ] tablename [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" #~ "\n" -#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n" -#~ " READ WRITE | READ ONLY" -#~ msgstr "" -#~ "BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]\n" +#~ "GRANT { { USAGE | SELECT | UPDATE }\n" +#~ " [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON SEQUENCE sequencename [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" #~ "\n" -#~ "où transaction_mode peut être :\n" +#~ "GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON DATABASE dbname [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" #~ "\n" -#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ |\n" -#~ " READ COMMITTED | READ UNCOMMITTED }\n" -#~ " READ WRITE | READ ONLY" - -#~ msgid "CHECKPOINT" -#~ msgstr "CHECKPOINT" - -#~ msgid "CLOSE { name | ALL }" -#~ msgstr "CLOSE { nom | ALL }" - -#~ msgid "" -#~ "CLUSTER [VERBOSE] tablename [ USING indexname ]\n" -#~ "CLUSTER [VERBOSE]" -#~ msgstr "" -#~ "CLUSTER [VERBOSE] nom_table [ USING nom_index ]\n" -#~ "CLUSTER [VERBOSE]" - -#~ msgid "" -#~ "COMMENT ON\n" -#~ "{\n" -#~ " TABLE object_name |\n" -#~ " COLUMN table_name.column_name |\n" -#~ " AGGREGATE agg_name (agg_type [, ...] ) |\n" -#~ " CAST (sourcetype AS targettype) |\n" -#~ " CONSTRAINT constraint_name ON table_name |\n" -#~ " CONVERSION object_name |\n" -#~ " DATABASE object_name |\n" -#~ " DOMAIN object_name |\n" -#~ " FUNCTION func_name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) |\n" -#~ " INDEX object_name |\n" -#~ " LARGE OBJECT large_object_oid |\n" -#~ " OPERATOR op (leftoperand_type, rightoperand_type) |\n" -#~ " OPERATOR CLASS object_name USING index_method |\n" -#~ " OPERATOR FAMILY object_name USING index_method |\n" -#~ " [ PROCEDURAL ] LANGUAGE object_name |\n" -#~ " ROLE object_name |\n" -#~ " RULE rule_name ON table_name |\n" -#~ " SCHEMA object_name |\n" -#~ " SEQUENCE object_name |\n" -#~ " TABLESPACE object_name |\n" -#~ " TEXT SEARCH CONFIGURATION object_name |\n" -#~ " TEXT SEARCH DICTIONARY object_name |\n" -#~ " TEXT SEARCH PARSER object_name |\n" -#~ " TEXT SEARCH TEMPLATE object_name |\n" -#~ " TRIGGER trigger_name ON table_name |\n" -#~ " TYPE object_name |\n" -#~ " VIEW object_name\n" -#~ "} IS 'text'" -#~ msgstr "" -#~ "COMMENT ON\n" -#~ "{\n" -#~ " TABLE nom_objet |\n" -#~ " COLUMN nom_table.nom_colonne |\n" -#~ " AGGREGATE nom_agg (type_agg [, ...] ) |\n" -#~ " CAST (type_source AS type_cible) |\n" -#~ " CONSTRAINT nom_contrainte ON nom_table |\n" -#~ " CONVERSION nom_objet |\n" -#~ " DATABASE nom_objet |\n" -#~ " DOMAIN nom_objet |\n" -#~ " FUNCTION nom_fonction ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] ) |\n" -#~ " INDEX nom_objet |\n" -#~ " LARGE OBJECT oid_LO |\n" -#~ " OPERATOR op (type_operande_gauche, type_operande_droit) |\n" -#~ " OPERATOR CLASS nom_objet USING methode_indexage |\n" -#~ " OPERATOR FAMILY nom_objet USING methode_indexage |\n" -#~ " [ PROCEDURAL ] LANGUAGE nom_objet |\n" -#~ " ROLE nom_objet |\n" -#~ " RULE nom_regle ON nom_table |\n" -#~ " SCHEMA nom_objet |\n" -#~ " SEQUENCE nom_objet |\n" -#~ " TABLESPACE nom_objet |\n" -#~ " TEXT SEARCH CONFIGURATION nom_objet |\n" -#~ " TEXT SEARCH DICTIONARY nom_objet |\n" -#~ " TEXT SEARCH PARSER nom_objet |\n" -#~ " TEXT SEARCH TEMPLATE nom_objet |\n" -#~ " TRIGGER nom_trigger ON nom_objet |\n" -#~ " TYPE nom_objet |\n" -#~ " VIEW nom_objet\n" -#~ "} IS 'text'" - -#~ msgid "COMMIT [ WORK | TRANSACTION ]" -#~ msgstr "COMMIT [ WORK | TRANSACTION ]" - -#~ msgid "COMMIT PREPARED transaction_id" -#~ msgstr "COMMIT PREPARED id_transaction" - -#~ msgid "" -#~ "COPY tablename [ ( column [, ...] ) ]\n" -#~ " FROM { 'filename' | STDIN }\n" -#~ " [ [ WITH ] \n" -#~ " [ BINARY ]\n" -#~ " [ OIDS ]\n" -#~ " [ DELIMITER [ AS ] 'delimiter' ]\n" -#~ " [ NULL [ AS ] 'null string' ]\n" -#~ " [ CSV [ HEADER ]\n" -#~ " [ QUOTE [ AS ] 'quote' ] \n" -#~ " [ ESCAPE [ AS ] 'escape' ]\n" -#~ " [ FORCE NOT NULL column [, ...] ]\n" +#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON FOREIGN DATA WRAPPER fdwname [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" #~ "\n" -#~ "COPY { tablename [ ( column [, ...] ) ] | ( query ) }\n" -#~ " TO { 'filename' | STDOUT }\n" -#~ " [ [ WITH ] \n" -#~ " [ BINARY ]\n" -#~ " [ OIDS ]\n" -#~ " [ DELIMITER [ AS ] 'delimiter' ]\n" -#~ " [ NULL [ AS ] 'null string' ]\n" -#~ " [ CSV [ HEADER ]\n" -#~ " [ QUOTE [ AS ] 'quote' ] \n" -#~ " [ ESCAPE [ AS ] 'escape' ]\n" -#~ " [ FORCE QUOTE column [, ...] ]" -#~ msgstr "" -#~ "COPY nom_table [ ( colonne [, ...] ) ]\n" -#~ " FROM { 'nom_fichier' | STDIN }\n" -#~ " [ [ WITH ] \n" -#~ " [ BINARY ]\n" -#~ " [ OIDS ]\n" -#~ " [ DELIMITER [ AS ] 'délimiteur' ]\n" -#~ " [ NULL [ AS ] 'chaîne null' ]\n" -#~ " [ CSV [ HEADER ]\n" -#~ " [ QUOTE [ AS ] 'guillemet' ] \n" -#~ " [ ESCAPE [ AS ] 'échappement' ]\n" -#~ " [ FORCE NOT NULL colonne [, ...] ]\n" +#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON FOREIGN SERVER servername [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" #~ "\n" -#~ "COPY { nom_table [ ( colonne [, ...] ) ] | ( requête ) }\n" -#~ " TO { 'nom_fichier' | STDOUT }\n" -#~ " [ [ WITH ] \n" -#~ " [ BINARY ]\n" -#~ " [ OIDS ]\n" -#~ " [ DELIMITER [ AS ] 'délimiteur' ]\n" -#~ " [ NULL [ AS ] 'chaîne null' ]\n" -#~ " [ CSV [ HEADER ]\n" -#~ " [ QUOTE [ AS ] 'guillemet' ] \n" -#~ " [ ESCAPE [ AS ] 'échappement' ]\n" -#~ " [ FORCE QUOTE colonne [, ...] ]" - -#~ msgid "" -#~ "CREATE AGGREGATE name ( input_data_type [ , ... ] ) (\n" -#~ " SFUNC = sfunc,\n" -#~ " STYPE = state_data_type\n" -#~ " [ , FINALFUNC = ffunc ]\n" -#~ " [ , INITCOND = initial_condition ]\n" -#~ " [ , SORTOP = sort_operator ]\n" -#~ ")\n" +#~ "GRANT { EXECUTE | ALL [ PRIVILEGES ] }\n" +#~ " ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" #~ "\n" -#~ "or the old syntax\n" +#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON LANGUAGE langname [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" #~ "\n" -#~ "CREATE AGGREGATE name (\n" -#~ " BASETYPE = base_type,\n" -#~ " SFUNC = sfunc,\n" -#~ " STYPE = state_data_type\n" -#~ " [ , FINALFUNC = ffunc ]\n" -#~ " [ , INITCOND = initial_condition ]\n" -#~ " [ , SORTOP = sort_operator ]\n" -#~ ")" +#~ "GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON SCHEMA schemaname [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { CREATE | ALL [ PRIVILEGES ] }\n" +#~ " ON TABLESPACE tablespacename [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT role [, ...] TO rolename [, ...] [ WITH ADMIN OPTION ]" #~ msgstr "" -#~ "CREATE AGGREGATE nom ( type_données_en_entrée [ , ... ] ) (\n" -#~ " SFUNC = sfonction,\n" -#~ " STYPE = type_données_état\n" -#~ " [ , FINALFUNC = fonction_f ]\n" -#~ " [ , INITCOND = condition_initiale ]\n" -#~ " [ , SORTOP = opérateur_tri ]\n" -#~ ")\n" +#~ "GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n" +#~ " [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON [ TABLE ] nom_table [, ...]\n" +#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" #~ "\n" -#~ "ou l'ancienne syntaxe\n" +#~ "GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( colonne [, ...] )\n" +#~ " [,...] | ALL [ PRIVILEGES ] ( colonne [, ...] ) }\n" +#~ " ON [ TABLE ] nom_table [, ...]\n" +#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" #~ "\n" -#~ "CREATE AGGREGATE nom (\n" -#~ " BASETYPE = type_base,\n" -#~ " SFUNC = fonction_s,\n" -#~ " STYPE = type_données_état\n" -#~ " [ , FINALFUNC = fonction_f ]\n" -#~ " [ , INITCOND = condition_initiale ]\n" -#~ " [ , SORTOP = opérateur_tri ]\n" -#~ ")" - -#~ msgid "" -#~ "CREATE CAST (sourcetype AS targettype)\n" -#~ " WITH FUNCTION funcname (argtypes)\n" -#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n" +#~ "GRANT { { USAGE | SELECT | UPDATE }\n" +#~ " [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON SEQUENCE nom_séquence [, ...]\n" +#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" #~ "\n" -#~ "CREATE CAST (sourcetype AS targettype)\n" -#~ " WITHOUT FUNCTION\n" -#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n" +#~ "GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON DATABASE nom_base [, ...]\n" +#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" #~ "\n" -#~ "CREATE CAST (sourcetype AS targettype)\n" -#~ " WITH INOUT\n" -#~ " [ AS ASSIGNMENT | AS IMPLICIT ]" -#~ msgstr "" -#~ "CREATE CAST (type_source AS type_cible)\n" -#~ " WITH FUNCTION nom_fonction (type_argument)\n" -#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n" +#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON FOREIGN DATA WRAPPER nomfdw [, ...]\n" +#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" #~ "\n" -#~ "CREATE CAST (type_source AS type_cible)\n" -#~ " WITHOUT FUNCTION\n" -#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n" +#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON FOREIGN SERVER nom_serveur [, ...]\n" +#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" #~ "\n" -#~ "CREATE CAST (type_source AS type_cible)\n" -#~ " WITH INOUT\n" -#~ " [ AS ASSIGNMENT | AS IMPLICIT ]" - -#~ msgid "" -#~ "CREATE CONSTRAINT TRIGGER name\n" -#~ " AFTER event [ OR ... ]\n" -#~ " ON table_name\n" -#~ " [ FROM referenced_table_name ]\n" -#~ " { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } }\n" -#~ " FOR EACH ROW\n" -#~ " EXECUTE PROCEDURE funcname ( arguments )" -#~ msgstr "" -#~ "CREATE CONSTRAINT TRIGGER nom\n" -#~ " AFTER événement [ OR ... ]\n" -#~ " ON table\n" -#~ " [ FROM table_référencée ]\n" -#~ " { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } }\n" -#~ " FOR EACH ROW\n" -#~ " EXECUTE PROCEDURE nom_fonction ( arguments )" +#~ "GRANT { EXECUTE | ALL [ PRIVILEGES ] }\n" +#~ " ON FUNCTION nom_fonction ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] ) [, ...]\n" +#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON LANGUAGE nom_langage [, ...]\n" +#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON SCHEMA nom_schéma [, ...]\n" +#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { CREATE | ALL [ PRIVILEGES ] }\n" +#~ " ON TABLESPACE nom_tablespace [, ...]\n" +#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT rôle [, ...] TO nom_rôle [, ...] [ WITH ADMIN OPTION ]" #~ msgid "" -#~ "CREATE [ DEFAULT ] CONVERSION name\n" -#~ " FOR source_encoding TO dest_encoding FROM funcname" +#~ "FETCH [ direction { FROM | IN } ] cursorname\n" +#~ "\n" +#~ "where direction can be empty or one of:\n" +#~ "\n" +#~ " NEXT\n" +#~ " PRIOR\n" +#~ " FIRST\n" +#~ " LAST\n" +#~ " ABSOLUTE count\n" +#~ " RELATIVE count\n" +#~ " count\n" +#~ " ALL\n" +#~ " FORWARD\n" +#~ " FORWARD count\n" +#~ " FORWARD ALL\n" +#~ " BACKWARD\n" +#~ " BACKWARD count\n" +#~ " BACKWARD ALL" #~ msgstr "" -#~ "CREATE [DEFAULT] CONVERSION nom\n" -#~ " FOR codage_source TO codage_cible FROM nom_fonction" +#~ "FETCH [ direction { FROM | IN } ] nom_curseur\n" +#~ "\n" +#~ "sans préciser de direction ou en choissant une des directions suivantes :\n" +#~ "\n" +#~ " NEXT\n" +#~ " PRIOR\n" +#~ " FIRST\n" +#~ " LAST\n" +#~ " ABSOLUTE nombre\n" +#~ " RELATIVE nombre\n" +#~ " count\n" +#~ " ALL\n" +#~ " FORWARD\n" +#~ " FORWARD nombre\n" +#~ " FORWARD ALL\n" +#~ " BACKWARD\n" +#~ " BACKWARD nombre\n" +#~ " BACKWARD ALL" + +#~ msgid "EXPLAIN [ ANALYZE ] [ VERBOSE ] statement" +#~ msgstr "EXPLAIN [ ANALYZE ] [ VERBOSE ] instruction" + +#~ msgid "EXECUTE name [ ( parameter [, ...] ) ]" +#~ msgstr "EXECUTE nom_plan [ ( paramètre [, ...] ) ]" + +#~ msgid "END [ WORK | TRANSACTION ]" +#~ msgstr "END [ WORK | TRANSACTION ]" + +#~ msgid "DROP VIEW [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" +#~ msgstr "DROP VIEW [IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" + +#~ msgid "DROP USER MAPPING [ IF EXISTS ] FOR { username | USER | CURRENT_USER | PUBLIC } SERVER servername" +#~ msgstr "DROP USER MAPPING [ IF EXISTS ] FOR { nomutilisateur | USER | CURRENT_USER | PUBLIC } SERVER nomserveur" + +#~ msgid "DROP USER [ IF EXISTS ] name [, ...]" +#~ msgstr "DROP USER [IF EXISTS ] nom [, ...]" + +#~ msgid "DROP TYPE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" +#~ msgstr "DROP TYPE [IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" + +#~ msgid "DROP TRIGGER [ IF EXISTS ] name ON table [ CASCADE | RESTRICT ]" +#~ msgstr "DROP TRIGGER [IF EXISTS ] nom ON table [ CASCADE | RESTRICT ]" + +#~ msgid "DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] name [ CASCADE | RESTRICT ]" +#~ msgstr "DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" + +#~ msgid "DROP TEXT SEARCH PARSER [ IF EXISTS ] name [ CASCADE | RESTRICT ]" +#~ msgstr "DROP TEXT SEARCH PARSER [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" + +#~ msgid "DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] name [ CASCADE | RESTRICT ]" +#~ msgstr "DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" + +#~ msgid "DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] name [ CASCADE | RESTRICT ]" +#~ msgstr "DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" + +#~ msgid "DROP TABLESPACE [ IF EXISTS ] tablespacename" +#~ msgstr "DROP TABLESPACE [IF EXISTS ] nom_tablespace" + +#~ msgid "DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" +#~ msgstr "DROP TABLE [IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" + +#~ msgid "DROP SERVER [ IF EXISTS ] servername [ CASCADE | RESTRICT ]" +#~ msgstr "DROP SERVER [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" + +#~ msgid "DROP SEQUENCE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" +#~ msgstr "DROP SEQUENCE [IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" + +#~ msgid "DROP SCHEMA [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" +#~ msgstr "DROP SCHEMA [IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" + +#~ msgid "DROP RULE [ IF EXISTS ] name ON relation [ CASCADE | RESTRICT ]" +#~ msgstr "DROP RULE [IF EXISTS ] nom ON relation [ CASCADE | RESTRICT ]" + +#~ msgid "DROP ROLE [ IF EXISTS ] name [, ...]" +#~ msgstr "DROP ROLE [IF EXISTS ] nom [, ...]" + +#~ msgid "DROP OWNED BY name [, ...] [ CASCADE | RESTRICT ]" +#~ msgstr "DROP OWNED BY nom [, ...] [ CASCADE | RESTRICT ]" + +#~ msgid "DROP OPERATOR FAMILY [ IF EXISTS ] name USING index_method [ CASCADE | RESTRICT ]" +#~ msgstr "" +#~ "DROP OPERATOR FAMILY [IF EXISTS ] nom\n" +#~ " USING méthode_indexage [ CASCADE | RESTRICT ]" + +#~ msgid "DROP OPERATOR CLASS [ IF EXISTS ] name USING index_method [ CASCADE | RESTRICT ]" +#~ msgstr "" +#~ "DROP OPERATOR CLASS [IF EXISTS ] nom\n" +#~ " USING méthode_indexage [ CASCADE | RESTRICT ]" + +#~ msgid "DROP OPERATOR [ IF EXISTS ] name ( { lefttype | NONE } , { righttype | NONE } ) [ CASCADE | RESTRICT ]" +#~ msgstr "" +#~ "DROP OPERATOR [IF EXISTS ] nom\n" +#~ " ( { type_gauche | NONE } , { type_droit | NONE } )\n" +#~ " [ CASCADE | RESTRICT ]" + +#~ msgid "DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] name [ CASCADE | RESTRICT ]" +#~ msgstr "DROP [ PROCEDURAL ] LANGUAGE [IF EXISTS ] nom [ CASCADE | RESTRICT ]" + +#~ msgid "DROP INDEX [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" +#~ msgstr "DROP INDEX [IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" + +#~ msgid "DROP GROUP [ IF EXISTS ] name [, ...]" +#~ msgstr "DROP GROUP [IF EXISTS ] nom [, ...]" #~ msgid "" -#~ "CREATE DATABASE name\n" -#~ " [ [ WITH ] [ OWNER [=] dbowner ]\n" -#~ " [ TEMPLATE [=] template ]\n" -#~ " [ ENCODING [=] encoding ]\n" -#~ " [ LC_COLLATE [=] lc_collate ]\n" -#~ " [ LC_CTYPE [=] lc_ctype ]\n" -#~ " [ TABLESPACE [=] tablespace ]\n" -#~ " [ CONNECTION LIMIT [=] connlimit ] ]" +#~ "DROP FUNCTION [ IF EXISTS ] name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" +#~ " [ CASCADE | RESTRICT ]" #~ msgstr "" -#~ "CREATE DATABASE nom\n" -#~ " [ [ WITH ] [ OWNER [=] nom_propriétaire ]\n" -#~ " [ TEMPLATE [=] modèle ]\n" -#~ " [ ENCODING [=] encodage ]\n" -#~ " [ LC_COLLATE [=] tri_caract ]\n" -#~ " [ LC_CTYPE [=] type_caract ]\n" -#~ " [ TABLESPACE [=] tablespace ]\n" -#~ " [ CONNECTION LIMIT [=] limite_connexion ] ]" +#~ "DROP FUNCTION [IF EXISTS ] nom\n" +#~ " ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] )\n" +#~ " [ CASCADE | RESTRICT ]" + +#~ msgid "DROP FOREIGN DATA WRAPPER [ IF EXISTS ] name [ CASCADE | RESTRICT ]" +#~ msgstr "DROP FOREIGN DATA WRAPPER [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" + +#~ msgid "DROP DOMAIN [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" +#~ msgstr "DROP DOMAIN [ IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" + +#~ msgid "DROP DATABASE [ IF EXISTS ] name" +#~ msgstr "DROP DATABASE [ IF EXISTS ] nom" + +#~ msgid "DROP CONVERSION [ IF EXISTS ] name [ CASCADE | RESTRICT ]" +#~ msgstr "DROP CONVERSION [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" + +#~ msgid "DROP CAST [ IF EXISTS ] (sourcetype AS targettype) [ CASCADE | RESTRICT ]" +#~ msgstr "DROP CAST [ IF EXISTS ] (type_source AS type_cible) [ CASCADE | RESTRICT ]" + +#~ msgid "DROP AGGREGATE [ IF EXISTS ] name ( type [ , ... ] ) [ CASCADE | RESTRICT ]" +#~ msgstr "DROP AGGREGATE [ IF EXISTS ] nom ( type [ , ... ] ) [ CASCADE | RESTRICT ]" + +#~ msgid "DISCARD { ALL | PLANS | TEMPORARY | TEMP }" +#~ msgstr "DISCARD { ALL | PLANS | TEMPORARY | TEMP }" #~ msgid "" -#~ "CREATE DOMAIN name [ AS ] data_type\n" -#~ " [ DEFAULT expression ]\n" -#~ " [ constraint [ ... ] ]\n" -#~ "\n" -#~ "where constraint is:\n" -#~ "\n" -#~ "[ CONSTRAINT constraint_name ]\n" -#~ "{ NOT NULL | NULL | CHECK (expression) }" +#~ "DELETE FROM [ ONLY ] table [ [ AS ] alias ]\n" +#~ " [ USING usinglist ]\n" +#~ " [ WHERE condition | WHERE CURRENT OF cursor_name ]\n" +#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" #~ msgstr "" -#~ "CREATE DOMAIN nom [AS] type_données\n" -#~ " [ DEFAULT expression ]\n" -#~ " [ contrainte [ ... ] ]\n" -#~ "\n" -#~ "avec comme contrainte :\n" -#~ "\n" -#~ "[ CONSTRAINT nom_contrainte ]\n" -#~ "{ NOT NULL | NULL | CHECK (expression) }" +#~ "DELETE FROM [ ONLY ] table [ [ AS ] alias ]\n" +#~ " [ USING liste_using ]\n" +#~ " [ WHERE condition | WHERE CURRENT OF nom_curseur ]\n" +#~ " [ RETURNING * | expression_sortie [ [ AS ] nom_sortie ] [, ...] ]" #~ msgid "" -#~ "CREATE FOREIGN DATA WRAPPER name\n" -#~ " [ VALIDATOR valfunction | NO VALIDATOR ]\n" -#~ " [ OPTIONS ( option 'value' [, ... ] ) ]" +#~ "DECLARE name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]\n" +#~ " CURSOR [ { WITH | WITHOUT } HOLD ] FOR query" #~ msgstr "" -#~ "CREATE FOREIGN DATA WRAPPER nom\n" -#~ " [ VALIDATOR fonction_validation | NO VALIDATOR ]\n" -#~ " [ OPTIONS ( option 'valeur' [, ... ] ) ]" +#~ "DECLARE nom [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]\n" +#~ " CURSOR [ { WITH | WITHOUT } HOLD ] FOR requête" + +#~ msgid "DEALLOCATE [ PREPARE ] { name | ALL }" +#~ msgstr "DEALLOCATE [ PREPARE ] { nom_plan | ALL }" #~ msgid "" -#~ "CREATE [ OR REPLACE ] FUNCTION\n" -#~ " name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } defexpr ] [, ...] ] )\n" -#~ " [ RETURNS rettype\n" -#~ " | RETURNS TABLE ( colname coltype [, ...] ) ]\n" -#~ " { LANGUAGE langname\n" -#~ " | WINDOW\n" -#~ " | IMMUTABLE | STABLE | VOLATILE\n" -#~ " | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" -#~ " | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" -#~ " | COST execution_cost\n" -#~ " | ROWS result_rows\n" -#~ " | SET configuration_parameter { TO value | = value | FROM CURRENT }\n" -#~ " | AS 'definition'\n" -#~ " | AS 'obj_file', 'link_symbol'\n" -#~ " } ...\n" -#~ " [ WITH ( attribute [, ...] ) ]" +#~ "CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name [, ...] ) ]\n" +#~ " AS query" #~ msgstr "" -#~ "CREATE [ OR REPLACE ] FUNCTION\n" -#~ " nom ( [ [ mode_arg ] [ nom_arg ] type_arg [ { DEFAULT | = } expr_par_défaut ] [, ...] ] )\n" -#~ " [ RETURNS type_ret\n" -#~ " | RETURNS TABLE ( nom_colonne type_colonne [, ...] ) ]\n" -#~ " { LANGUAGE nom_lang\n" -#~ " | WINDOW\n" -#~ " | IMMUTABLE | STABLE | VOLATILE\n" -#~ " | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" -#~ " | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" -#~ " | COST coût_exécution\n" -#~ " | ROWS lignes_résultats\n" -#~ " | SET paramètre_configuration { TO valeur | = valeur | FROM CURRENT }\n" -#~ " | AS 'définition'\n" -#~ " | AS 'fichier_obj', 'symbôle_lien'\n" -#~ " } ...\n" -#~ " [ WITH ( attribut [, ...] ) ]" +#~ "CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW nom\n" +#~ " [ ( nom_colonne [, ...] ) ]\n" +#~ " AS requête" #~ msgid "" -#~ "CREATE GROUP name [ [ WITH ] option [ ... ] ]\n" +#~ "CREATE USER MAPPING FOR { username | USER | CURRENT_USER | PUBLIC }\n" +#~ " SERVER servername\n" +#~ " [ OPTIONS ( option 'value' [ , ... ] ) ]" +#~ msgstr "" +#~ "CREATE USER MAPPING FOR { nomutilisateur | USER | CURRENT_USER | PUBLIC }\n" +#~ " SERVER nomserveur\n" +#~ " [ OPTIONS ( option 'valeur' [ , ... ] ) ]" + +#~ msgid "" +#~ "CREATE USER name [ [ WITH ] option [ ... ] ]\n" #~ "\n" #~ "where option can be:\n" #~ " \n" @@ -6350,6 +6255,7 @@ msgstr "" #~ " | CREATEUSER | NOCREATEUSER\n" #~ " | INHERIT | NOINHERIT\n" #~ " | LOGIN | NOLOGIN\n" +#~ " | CONNECTION LIMIT connlimit\n" #~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" #~ " | VALID UNTIL 'timestamp' \n" #~ " | IN ROLE rolename [, ...]\n" @@ -6359,9 +6265,9 @@ msgstr "" #~ " | USER rolename [, ...]\n" #~ " | SYSID uid" #~ msgstr "" -#~ "CREATE GROUP nom [ [ WITH ] option [ ... ] ]\n" +#~ "CREATE USER nom [ [ WITH ] option [ ... ] ]\n" #~ "\n" -#~ "où option peut être :\n" +#~ "où option peut être :\n" #~ " \n" #~ " SUPERUSER | NOSUPERUSER\n" #~ " | CREATEDB | NOCREATEDB\n" @@ -6369,155 +6275,152 @@ msgstr "" #~ " | CREATEUSER | NOCREATEUSER\n" #~ " | INHERIT | NOINHERIT\n" #~ " | LOGIN | NOLOGIN\n" +#~ " | CONNECTION LIMIT limite_connexion\n" #~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'motdepasse'\n" #~ " | VALID UNTIL 'timestamp' \n" -#~ " | IN ROLE nom_rôle [, ...]\n" -#~ " | IN GROUP nom_rôle [, ...]\n" -#~ " | ROLE nom_rôle [, ...]\n" -#~ " | ADMIN nom_rôle [, ...]\n" -#~ " | USER nom_rôle [, ...]\n" +#~ " | IN ROLE nom_rôle [, ...]\n" +#~ " | IN GROUP nom_rôle [, ...]\n" +#~ " | ROLE nom_rôle [, ...]\n" +#~ " | ADMIN nom_rôle [, ...]\n" +#~ " | USER nom_rôle [, ...]\n" #~ " | SYSID uid" #~ msgid "" -#~ "CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] name ON table [ USING method ]\n" -#~ " ( { column | ( expression ) } [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )\n" -#~ " [ WITH ( storage_parameter = value [, ... ] ) ]\n" -#~ " [ TABLESPACE tablespace ]\n" -#~ " [ WHERE predicate ]" +#~ "CREATE TYPE name AS\n" +#~ " ( attribute_name data_type [, ... ] )\n" +#~ "\n" +#~ "CREATE TYPE name AS ENUM\n" +#~ " ( 'label' [, ... ] )\n" +#~ "\n" +#~ "CREATE TYPE name (\n" +#~ " INPUT = input_function,\n" +#~ " OUTPUT = output_function\n" +#~ " [ , RECEIVE = receive_function ]\n" +#~ " [ , SEND = send_function ]\n" +#~ " [ , TYPMOD_IN = type_modifier_input_function ]\n" +#~ " [ , TYPMOD_OUT = type_modifier_output_function ]\n" +#~ " [ , ANALYZE = analyze_function ]\n" +#~ " [ , INTERNALLENGTH = { internallength | VARIABLE } ]\n" +#~ " [ , PASSEDBYVALUE ]\n" +#~ " [ , ALIGNMENT = alignment ]\n" +#~ " [ , STORAGE = storage ]\n" +#~ " [ , LIKE = like_type ]\n" +#~ " [ , CATEGORY = category ]\n" +#~ " [ , PREFERRED = preferred ]\n" +#~ " [ , DEFAULT = default ]\n" +#~ " [ , ELEMENT = element ]\n" +#~ " [ , DELIMITER = delimiter ]\n" +#~ ")\n" +#~ "\n" +#~ "CREATE TYPE name" #~ msgstr "" -#~ "CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] nom ON table [ USING methode ]\n" -#~ " ( { colonne | ( expression ) } [ classe_operateur ]\n" -#~ " [ ASC | DESC ]\n" -#~ " [ NULLS { FIRST | LAST } ] [, ...] )\n" -#~ " [ WITH ( parametre_stockage = valeur [, ... ] ) ]\n" -#~ " [ TABLESPACE tablespace ]\n" -#~ " [ WHERE predicat ]" +#~ "CREATE TYPE nom AS\n" +#~ " ( nom_attribut type_donnee [, ... ] )\n" +#~ "\n" +#~ "CREATE TYPE nom AS ENUM\n" +#~ " ( 'label' [, ... ] )\n" +#~ "\n" +#~ "CREATE TYPE nom (\n" +#~ " INPUT = fonction_entrée,\n" +#~ " OUTPUT = fonction_sortie\n" +#~ " [ , RECEIVE = fonction_réception ]\n" +#~ " [ , SEND = fonction_envoi ]\n" +#~ " [ , TYPMOD_IN = fonction_entrée_modif_type ]\n" +#~ " [ , TYPMOD_OUT = fonction_sortie_modif_type ]\n" +#~ " [ , ANALYZE = fonction_analyse ]\n" +#~ " [ , INTERNALLENGTH = { longueur_interne | VARIABLE } ]\n" +#~ " [ , PASSEDBYVALUE ]\n" +#~ " [ , ALIGNMENT = alignement ]\n" +#~ " [ , STORAGE = stockage ]\n" +#~ " [ , LIKE = type_like ]\n" +#~ " [ , CATEGORY = catégorie ]\n" +#~ " [ , PREFERRED = préféré ]\n" +#~ " [ , DEFAULT = valeur_par_défaut ]\n" +#~ " [ , ELEMENT = élément ]\n" +#~ " [ , DELIMITER = délimiteur ]\n" +#~ ")\n" +#~ "\n" +#~ "CREATE TYPE nom" #~ msgid "" -#~ "CREATE [ PROCEDURAL ] LANGUAGE name\n" -#~ "CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name\n" -#~ " HANDLER call_handler [ VALIDATOR valfunction ]" +#~ "CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] }\n" +#~ " ON table [ FOR [ EACH ] { ROW | STATEMENT } ]\n" +#~ " EXECUTE PROCEDURE funcname ( arguments )" #~ msgstr "" -#~ "CREATE [ PROCEDURAL ] LANGUAGE nom\n" -#~ "CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE nom\n" -#~ " HANDLER gestionnaire_appels [ VALIDATOR fonction_val ]" +#~ "CREATE TRIGGER nom { BEFORE | AFTER } { événement [ OR ... ] }\n" +#~ " ON table [ FOR [ EACH ] { ROW | STATEMENT } ]\n" +#~ " EXECUTE PROCEDURE nom_fonction ( arguments )" #~ msgid "" -#~ "CREATE OPERATOR name (\n" -#~ " PROCEDURE = funcname\n" -#~ " [, LEFTARG = lefttype ] [, RIGHTARG = righttype ]\n" -#~ " [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ]\n" -#~ " [, RESTRICT = res_proc ] [, JOIN = join_proc ]\n" -#~ " [, HASHES ] [, MERGES ]\n" +#~ "CREATE TEXT SEARCH TEMPLATE name (\n" +#~ " [ INIT = init_function , ]\n" +#~ " LEXIZE = lexize_function\n" #~ ")" #~ msgstr "" -#~ "CREATE OPERATOR nom (\n" -#~ " PROCEDURE = nom_fonction\n" -#~ " [, LEFTARG = type_gauche ] [, RIGHTARG = type_droit ]\n" -#~ " [, COMMUTATOR = op_com ] [, NEGATOR = op_neg ]\n" -#~ " [, RESTRICT = proc_res ] [, JOIN = proc_join ]\n" -#~ " [, HASHES ] [, MERGES ]\n" +#~ "CREATE TEXT SEARCH TEMPLATE nom (\n" +#~ " [ INIT = fonction_init , ]\n" +#~ " LEXIZE = fonction_lexize\n" #~ ")" #~ msgid "" -#~ "CREATE OPERATOR CLASS name [ DEFAULT ] FOR TYPE data_type\n" -#~ " USING index_method [ FAMILY family_name ] AS\n" -#~ " { OPERATOR strategy_number operator_name [ ( op_type, op_type ) ]\n" -#~ " | FUNCTION support_number [ ( op_type [ , op_type ] ) ] funcname ( argument_type [, ...] )\n" -#~ " | STORAGE storage_type\n" -#~ " } [, ... ]" -#~ msgstr "" -#~ "CREATE OPERATOR CLASS nom [ DEFAULT ] FOR TYPE type_donnée\n" -#~ " USING méthode_indexage [ FAMILY nom_famille ] AS\n" -#~ " { OPERATOR numéro_stratégie nom_operateur [ ( op_type, op_type ) ]\n" -#~ " | FUNCTION numéro_support [ ( type_op [ , type_op ] ) ]\n" -#~ " nom_fonction ( type_argument [, ...] )\n" -#~ " | STORAGE type_stockage\n" -#~ " } [, ... ]" - -#~ msgid "CREATE OPERATOR FAMILY name USING index_method" -#~ msgstr "CREATE OPERATOR FAMILY nom USING methode_indexage" - -#~ msgid "" -#~ "CREATE ROLE name [ [ WITH ] option [ ... ] ]\n" -#~ "\n" -#~ "where option can be:\n" -#~ " \n" -#~ " SUPERUSER | NOSUPERUSER\n" -#~ " | CREATEDB | NOCREATEDB\n" -#~ " | CREATEROLE | NOCREATEROLE\n" -#~ " | CREATEUSER | NOCREATEUSER\n" -#~ " | INHERIT | NOINHERIT\n" -#~ " | LOGIN | NOLOGIN\n" -#~ " | CONNECTION LIMIT connlimit\n" -#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -#~ " | VALID UNTIL 'timestamp' \n" -#~ " | IN ROLE rolename [, ...]\n" -#~ " | IN GROUP rolename [, ...]\n" -#~ " | ROLE rolename [, ...]\n" -#~ " | ADMIN rolename [, ...]\n" -#~ " | USER rolename [, ...]\n" -#~ " | SYSID uid" +#~ "CREATE TEXT SEARCH PARSER name (\n" +#~ " START = start_function ,\n" +#~ " GETTOKEN = gettoken_function ,\n" +#~ " END = end_function ,\n" +#~ " LEXTYPES = lextypes_function\n" +#~ " [, HEADLINE = headline_function ]\n" +#~ ")" #~ msgstr "" -#~ "CREATE ROLE nom [ [ WITH ] option [ ... ] ]\n" -#~ "\n" -#~ "où option peut être :\n" -#~ " \n" -#~ " SUPERUSER | NOSUPERUSER\n" -#~ " | CREATEDB | NOCREATEDB\n" -#~ " | CREATEROLE | NOCREATEROLE\n" -#~ " | CREATEUSER | NOCREATEUSER\n" -#~ " | INHERIT | NOINHERIT\n" -#~ " | LOGIN | NOLOGIN\n" -#~ " | CONNECTION LIMIT limite_connexion\n" -#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'motdepasse'\n" -#~ " | VALID UNTIL 'timestamp' \n" -#~ " | IN ROLE nom_rôle [, ...]\n" -#~ " | IN GROUP nom_rôle [, ...]\n" -#~ " | ROLE nom_rôle [, ...]\n" -#~ " | ADMIN nom_rôle [, ...]\n" -#~ " | USER nom_rôle [, ...]\n" -#~ " | SYSID uid" +#~ "CREATE TEXT SEARCH PARSER nom (\n" +#~ " START = fonction_debut ,\n" +#~ " GETTOKEN = fonction_jeton ,\n" +#~ " END = fonction_fin ,\n" +#~ " LEXTYPES = fonction_typeslexem\n" +#~ " [, HEADLINE = fonction_entete ]\n" +#~ ")" #~ msgid "" -#~ "CREATE [ OR REPLACE ] RULE name AS ON event\n" -#~ " TO table [ WHERE condition ]\n" -#~ " DO [ ALSO | INSTEAD ] { NOTHING | command | ( command ; command ... ) }" +#~ "CREATE TEXT SEARCH DICTIONARY name (\n" +#~ " TEMPLATE = template\n" +#~ " [, option = value [, ... ]]\n" +#~ ")" #~ msgstr "" -#~ "CREATE [ OR REPLACE ] RULE nom AS ON événement\n" -#~ " TO table [ WHERE condition ]\n" -#~ " DO [ ALSO | INSTEAD ] { NOTHING | commande | ( commande ; commande ... ) }" +#~ "CREATE TEXT SEARCH DICTIONARY nom (\n" +#~ " TEMPLATE = modèle\n" +#~ " [, option = valeur [, ... ]]\n" +#~ ")" #~ msgid "" -#~ "CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [ ... ] ]\n" -#~ "CREATE SCHEMA AUTHORIZATION username [ schema_element [ ... ] ]" +#~ "CREATE TEXT SEARCH CONFIGURATION name (\n" +#~ " PARSER = parser_name |\n" +#~ " COPY = source_config\n" +#~ ")" #~ msgstr "" -#~ "CREATE SCHEMA nom_schema [ AUTHORIZATION nom_utilisateur ]\n" -#~ " [ element_schema [ ... ] ]\n" -#~ "CREATE SCHEMA AUTHORIZATION nom_utilisateur [ element_schema [ ... ] ]" +#~ "CREATE TEXT SEARCH CONFIGURATION nom (\n" +#~ " PARSER = nom_analyseur |\n" +#~ " COPY = config_source\n" +#~ ")" -#~ msgid "" -#~ "CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ]\n" -#~ " [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]\n" -#~ " [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]\n" -#~ " [ OWNED BY { table.column | NONE } ]" +#~ msgid "CREATE TABLESPACE tablespacename [ OWNER username ] LOCATION 'directory'" #~ msgstr "" -#~ "CREATE [ TEMPORARY | TEMP ] SEQUENCE nom [ INCREMENT [ BY ] incrémentation ]\n" -#~ " [ MINVALUE valeur_mini | NO MINVALUE ]\n" -#~ " [ MAXVALUE valeur_maxi | NO MAXVALUE ]\n" -#~ " [ START [ WITH ] valeur_départ ]\n" -#~ " [ CACHE en_cache ]\n" -#~ " [ [ NO ] CYCLE ]\n" -#~ " [ OWNED BY { table.colonne | NONE } ]" +#~ "CREATE TABLESPACE nom_tablespace [ OWNER nom_utilisateur ]\n" +#~ " LOCATION 'répertoire'" #~ msgid "" -#~ "CREATE SERVER servername [ TYPE 'servertype' ] [ VERSION 'serverversion' ]\n" -#~ " FOREIGN DATA WRAPPER fdwname\n" -#~ " [ OPTIONS ( option 'value' [, ... ] ) ]" +#~ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name\n" +#~ " [ (column_name [, ...] ) ]\n" +#~ " [ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]\n" +#~ " [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n" +#~ " [ TABLESPACE tablespace ]\n" +#~ " AS query\n" +#~ " [ WITH [ NO ] DATA ]" #~ msgstr "" -#~ "CREATE SERVER nom [ TYPE 'typeserveur' ] [ VERSION 'versionserveur' ]\n" -#~ " FOREIGN DATA WRAPPER nomfdw\n" -#~ " [ OPTIONS ( option 'valeur' [, ... ] ) ]" +#~ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE nom_table\n" +#~ " [ (nom_colonne [, ...] ) ]\n" +#~ " [ WITH ( paramètre_stockage [= valeur] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]\n" +#~ " [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n" +#~ " [ TABLESPACE tablespace ]\n" +#~ " AS requête [ WITH [ NO ] DATA ]" #~ msgid "" #~ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name ( [\n" @@ -6559,7 +6462,7 @@ msgstr "" #~ "[ USING INDEX TABLESPACE tablespace ]" #~ msgstr "" #~ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE nom_table ( [\n" -#~ " { nom_colonne type_données [ DEFAULT expr_par_défaut ]\n" +#~ " { nom_colonne type_données [ DEFAULT expr_par_défaut ]\n" #~ " [ contrainte_colonne [ ... ] ]\n" #~ " | contrainte_table\n" #~ " | LIKE table_parent [ { INCLUDING | EXCLUDING }\n" @@ -6567,181 +6470,185 @@ msgstr "" #~ " [, ... ]\n" #~ "] )\n" #~ "[ INHERITS ( table_parent [, ... ] ) ]\n" -#~ "[ WITH ( paramètre_stockage [= valeur] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]\n" +#~ "[ WITH ( paramètre_stockage [= valeur] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]\n" #~ "[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n" #~ "[ TABLESPACE tablespace ]\n" #~ "\n" -#~ "où colonne_contrainte peut être :\n" +#~ "où colonne_contrainte peut être :\n" #~ "\n" #~ "[ CONSTRAINT nom_contrainte ]\n" #~ "{ NOT NULL | \n" #~ " NULL | \n" -#~ " UNIQUE paramètres_index |\n" -#~ " PRIMARY KEY paramètres_index |\n" +#~ " UNIQUE paramètres_index |\n" +#~ " PRIMARY KEY paramètres_index |\n" #~ " CHECK (expression) |\n" -#~ " REFERENCES table_référée [ ( colonne_referrée ) ]\n" +#~ " REFERENCES table_référée [ ( colonne_referrée ) ]\n" #~ " [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]\n" #~ " [ ON DELETE action ] [ ON UPDATE action ] }\n" #~ "[ DEFERRABLE | NOT DEFERRABLE ]\n" #~ "[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n" #~ "\n" -#~ "et contrainte_table peut être :\n" +#~ "et contrainte_table peut être :\n" #~ "\n" #~ "[ CONSTRAINT nom_contrainte ]\n" -#~ "{ UNIQUE ( nom_colonne [, ... ] ) paramètres_index |\n" -#~ " PRIMARY KEY ( nom_colonne [, ... ] ) paramètres_index |\n" +#~ "{ UNIQUE ( nom_colonne [, ... ] ) paramètres_index |\n" +#~ " PRIMARY KEY ( nom_colonne [, ... ] ) paramètres_index |\n" #~ " CHECK ( expression ) |\n" #~ " FOREIGN KEY ( nom_colonne [, ... ] ) REFERENCES\n" -#~ " table_référée [ ( colonne_référée [, ... ] ) ]\n" +#~ " table_référée [ ( colonne_référée [, ... ] ) ]\n" #~ " [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]\n" #~ " [ ON DELETE action ] [ ON UPDATE action ] }\n" #~ "[ DEFERRABLE | NOT DEFERRABLE ]\n" #~ "[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n" #~ "\n" -#~ "les paramètres_index dans les contraintes UNIQUE et PRIMARY KEY sont :\n" +#~ "les paramètres_index dans les contraintes UNIQUE et PRIMARY KEY sont :\n" #~ "\n" -#~ "[ WITH ( paramètre_stockage [= valeur] [, ... ] ) ]\n" +#~ "[ WITH ( paramètre_stockage [= valeur] [, ... ] ) ]\n" #~ "[ USING INDEX TABLESPACE espace_logique ]" #~ msgid "" -#~ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name\n" -#~ " [ (column_name [, ...] ) ]\n" -#~ " [ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]\n" -#~ " [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n" -#~ " [ TABLESPACE tablespace ]\n" -#~ " AS query\n" -#~ " [ WITH [ NO ] DATA ]" -#~ msgstr "" -#~ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE nom_table\n" -#~ " [ (nom_colonne [, ...] ) ]\n" -#~ " [ WITH ( paramètre_stockage [= valeur] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]\n" -#~ " [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n" -#~ " [ TABLESPACE tablespace ]\n" -#~ " AS requête [ WITH [ NO ] DATA ]" - -#~ msgid "CREATE TABLESPACE tablespacename [ OWNER username ] LOCATION 'directory'" +#~ "CREATE SERVER servername [ TYPE 'servertype' ] [ VERSION 'serverversion' ]\n" +#~ " FOREIGN DATA WRAPPER fdwname\n" +#~ " [ OPTIONS ( option 'value' [, ... ] ) ]" #~ msgstr "" -#~ "CREATE TABLESPACE nom_tablespace [ OWNER nom_utilisateur ]\n" -#~ " LOCATION 'répertoire'" +#~ "CREATE SERVER nom [ TYPE 'typeserveur' ] [ VERSION 'versionserveur' ]\n" +#~ " FOREIGN DATA WRAPPER nomfdw\n" +#~ " [ OPTIONS ( option 'valeur' [, ... ] ) ]" #~ msgid "" -#~ "CREATE TEXT SEARCH CONFIGURATION name (\n" -#~ " PARSER = parser_name |\n" -#~ " COPY = source_config\n" -#~ ")" +#~ "CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ]\n" +#~ " [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]\n" +#~ " [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]\n" +#~ " [ OWNED BY { table.column | NONE } ]" #~ msgstr "" -#~ "CREATE TEXT SEARCH CONFIGURATION nom (\n" -#~ " PARSER = nom_analyseur |\n" -#~ " COPY = config_source\n" -#~ ")" +#~ "CREATE [ TEMPORARY | TEMP ] SEQUENCE nom [ INCREMENT [ BY ] incrémentation ]\n" +#~ " [ MINVALUE valeur_mini | NO MINVALUE ]\n" +#~ " [ MAXVALUE valeur_maxi | NO MAXVALUE ]\n" +#~ " [ START [ WITH ] valeur_départ ]\n" +#~ " [ CACHE en_cache ]\n" +#~ " [ [ NO ] CYCLE ]\n" +#~ " [ OWNED BY { table.colonne | NONE } ]" #~ msgid "" -#~ "CREATE TEXT SEARCH DICTIONARY name (\n" -#~ " TEMPLATE = template\n" -#~ " [, option = value [, ... ]]\n" -#~ ")" +#~ "CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [ ... ] ]\n" +#~ "CREATE SCHEMA AUTHORIZATION username [ schema_element [ ... ] ]" #~ msgstr "" -#~ "CREATE TEXT SEARCH DICTIONARY nom (\n" -#~ " TEMPLATE = modèle\n" -#~ " [, option = valeur [, ... ]]\n" -#~ ")" +#~ "CREATE SCHEMA nom_schema [ AUTHORIZATION nom_utilisateur ]\n" +#~ " [ element_schema [ ... ] ]\n" +#~ "CREATE SCHEMA AUTHORIZATION nom_utilisateur [ element_schema [ ... ] ]" #~ msgid "" -#~ "CREATE TEXT SEARCH PARSER name (\n" -#~ " START = start_function ,\n" -#~ " GETTOKEN = gettoken_function ,\n" -#~ " END = end_function ,\n" -#~ " LEXTYPES = lextypes_function\n" -#~ " [, HEADLINE = headline_function ]\n" -#~ ")" +#~ "CREATE [ OR REPLACE ] RULE name AS ON event\n" +#~ " TO table [ WHERE condition ]\n" +#~ " DO [ ALSO | INSTEAD ] { NOTHING | command | ( command ; command ... ) }" #~ msgstr "" -#~ "CREATE TEXT SEARCH PARSER nom (\n" -#~ " START = fonction_debut ,\n" -#~ " GETTOKEN = fonction_jeton ,\n" -#~ " END = fonction_fin ,\n" -#~ " LEXTYPES = fonction_typeslexem\n" -#~ " [, HEADLINE = fonction_entete ]\n" -#~ ")" +#~ "CREATE [ OR REPLACE ] RULE nom AS ON événement\n" +#~ " TO table [ WHERE condition ]\n" +#~ " DO [ ALSO | INSTEAD ] { NOTHING | commande | ( commande ; commande ... ) }" #~ msgid "" -#~ "CREATE TEXT SEARCH TEMPLATE name (\n" -#~ " [ INIT = init_function , ]\n" -#~ " LEXIZE = lexize_function\n" +#~ "CREATE ROLE name [ [ WITH ] option [ ... ] ]\n" +#~ "\n" +#~ "where option can be:\n" +#~ " \n" +#~ " SUPERUSER | NOSUPERUSER\n" +#~ " | CREATEDB | NOCREATEDB\n" +#~ " | CREATEROLE | NOCREATEROLE\n" +#~ " | CREATEUSER | NOCREATEUSER\n" +#~ " | INHERIT | NOINHERIT\n" +#~ " | LOGIN | NOLOGIN\n" +#~ " | CONNECTION LIMIT connlimit\n" +#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" +#~ " | VALID UNTIL 'timestamp' \n" +#~ " | IN ROLE rolename [, ...]\n" +#~ " | IN GROUP rolename [, ...]\n" +#~ " | ROLE rolename [, ...]\n" +#~ " | ADMIN rolename [, ...]\n" +#~ " | USER rolename [, ...]\n" +#~ " | SYSID uid" +#~ msgstr "" +#~ "CREATE ROLE nom [ [ WITH ] option [ ... ] ]\n" +#~ "\n" +#~ "où option peut être :\n" +#~ " \n" +#~ " SUPERUSER | NOSUPERUSER\n" +#~ " | CREATEDB | NOCREATEDB\n" +#~ " | CREATEROLE | NOCREATEROLE\n" +#~ " | CREATEUSER | NOCREATEUSER\n" +#~ " | INHERIT | NOINHERIT\n" +#~ " | LOGIN | NOLOGIN\n" +#~ " | CONNECTION LIMIT limite_connexion\n" +#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'motdepasse'\n" +#~ " | VALID UNTIL 'timestamp' \n" +#~ " | IN ROLE nom_rôle [, ...]\n" +#~ " | IN GROUP nom_rôle [, ...]\n" +#~ " | ROLE nom_rôle [, ...]\n" +#~ " | ADMIN nom_rôle [, ...]\n" +#~ " | USER nom_rôle [, ...]\n" +#~ " | SYSID uid" + +#~ msgid "CREATE OPERATOR FAMILY name USING index_method" +#~ msgstr "CREATE OPERATOR FAMILY nom USING methode_indexage" + +#~ msgid "" +#~ "CREATE OPERATOR CLASS name [ DEFAULT ] FOR TYPE data_type\n" +#~ " USING index_method [ FAMILY family_name ] AS\n" +#~ " { OPERATOR strategy_number operator_name [ ( op_type, op_type ) ]\n" +#~ " | FUNCTION support_number [ ( op_type [ , op_type ] ) ] funcname ( argument_type [, ...] )\n" +#~ " | STORAGE storage_type\n" +#~ " } [, ... ]" +#~ msgstr "" +#~ "CREATE OPERATOR CLASS nom [ DEFAULT ] FOR TYPE type_donnée\n" +#~ " USING méthode_indexage [ FAMILY nom_famille ] AS\n" +#~ " { OPERATOR numéro_stratégie nom_operateur [ ( op_type, op_type ) ]\n" +#~ " | FUNCTION numéro_support [ ( type_op [ , type_op ] ) ]\n" +#~ " nom_fonction ( type_argument [, ...] )\n" +#~ " | STORAGE type_stockage\n" +#~ " } [, ... ]" + +#~ msgid "" +#~ "CREATE OPERATOR name (\n" +#~ " PROCEDURE = funcname\n" +#~ " [, LEFTARG = lefttype ] [, RIGHTARG = righttype ]\n" +#~ " [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ]\n" +#~ " [, RESTRICT = res_proc ] [, JOIN = join_proc ]\n" +#~ " [, HASHES ] [, MERGES ]\n" #~ ")" #~ msgstr "" -#~ "CREATE TEXT SEARCH TEMPLATE nom (\n" -#~ " [ INIT = fonction_init , ]\n" -#~ " LEXIZE = fonction_lexize\n" +#~ "CREATE OPERATOR nom (\n" +#~ " PROCEDURE = nom_fonction\n" +#~ " [, LEFTARG = type_gauche ] [, RIGHTARG = type_droit ]\n" +#~ " [, COMMUTATOR = op_com ] [, NEGATOR = op_neg ]\n" +#~ " [, RESTRICT = proc_res ] [, JOIN = proc_join ]\n" +#~ " [, HASHES ] [, MERGES ]\n" #~ ")" #~ msgid "" -#~ "CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] }\n" -#~ " ON table [ FOR [ EACH ] { ROW | STATEMENT } ]\n" -#~ " EXECUTE PROCEDURE funcname ( arguments )" +#~ "CREATE [ PROCEDURAL ] LANGUAGE name\n" +#~ "CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name\n" +#~ " HANDLER call_handler [ VALIDATOR valfunction ]" #~ msgstr "" -#~ "CREATE TRIGGER nom { BEFORE | AFTER } { événement [ OR ... ] }\n" -#~ " ON table [ FOR [ EACH ] { ROW | STATEMENT } ]\n" -#~ " EXECUTE PROCEDURE nom_fonction ( arguments )" +#~ "CREATE [ PROCEDURAL ] LANGUAGE nom\n" +#~ "CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE nom\n" +#~ " HANDLER gestionnaire_appels [ VALIDATOR fonction_val ]" #~ msgid "" -#~ "CREATE TYPE name AS\n" -#~ " ( attribute_name data_type [, ... ] )\n" -#~ "\n" -#~ "CREATE TYPE name AS ENUM\n" -#~ " ( 'label' [, ... ] )\n" -#~ "\n" -#~ "CREATE TYPE name (\n" -#~ " INPUT = input_function,\n" -#~ " OUTPUT = output_function\n" -#~ " [ , RECEIVE = receive_function ]\n" -#~ " [ , SEND = send_function ]\n" -#~ " [ , TYPMOD_IN = type_modifier_input_function ]\n" -#~ " [ , TYPMOD_OUT = type_modifier_output_function ]\n" -#~ " [ , ANALYZE = analyze_function ]\n" -#~ " [ , INTERNALLENGTH = { internallength | VARIABLE } ]\n" -#~ " [ , PASSEDBYVALUE ]\n" -#~ " [ , ALIGNMENT = alignment ]\n" -#~ " [ , STORAGE = storage ]\n" -#~ " [ , LIKE = like_type ]\n" -#~ " [ , CATEGORY = category ]\n" -#~ " [ , PREFERRED = preferred ]\n" -#~ " [ , DEFAULT = default ]\n" -#~ " [ , ELEMENT = element ]\n" -#~ " [ , DELIMITER = delimiter ]\n" -#~ ")\n" -#~ "\n" -#~ "CREATE TYPE name" +#~ "CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] name ON table [ USING method ]\n" +#~ " ( { column | ( expression ) } [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )\n" +#~ " [ WITH ( storage_parameter = value [, ... ] ) ]\n" +#~ " [ TABLESPACE tablespace ]\n" +#~ " [ WHERE predicate ]" #~ msgstr "" -#~ "CREATE TYPE nom AS\n" -#~ " ( nom_attribut type_donnee [, ... ] )\n" -#~ "\n" -#~ "CREATE TYPE nom AS ENUM\n" -#~ " ( 'label' [, ... ] )\n" -#~ "\n" -#~ "CREATE TYPE nom (\n" -#~ " INPUT = fonction_entrée,\n" -#~ " OUTPUT = fonction_sortie\n" -#~ " [ , RECEIVE = fonction_réception ]\n" -#~ " [ , SEND = fonction_envoi ]\n" -#~ " [ , TYPMOD_IN = fonction_entrée_modif_type ]\n" -#~ " [ , TYPMOD_OUT = fonction_sortie_modif_type ]\n" -#~ " [ , ANALYZE = fonction_analyse ]\n" -#~ " [ , INTERNALLENGTH = { longueur_interne | VARIABLE } ]\n" -#~ " [ , PASSEDBYVALUE ]\n" -#~ " [ , ALIGNMENT = alignement ]\n" -#~ " [ , STORAGE = stockage ]\n" -#~ " [ , LIKE = type_like ]\n" -#~ " [ , CATEGORY = catégorie ]\n" -#~ " [ , PREFERRED = préféré ]\n" -#~ " [ , DEFAULT = valeur_par_défaut ]\n" -#~ " [ , ELEMENT = élément ]\n" -#~ " [ , DELIMITER = délimiteur ]\n" -#~ ")\n" -#~ "\n" -#~ "CREATE TYPE nom" +#~ "CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] nom ON table [ USING methode ]\n" +#~ " ( { colonne | ( expression ) } [ classe_operateur ]\n" +#~ " [ ASC | DESC ]\n" +#~ " [ NULLS { FIRST | LAST } ] [, ...] )\n" +#~ " [ WITH ( parametre_stockage = valeur [, ... ] ) ]\n" +#~ " [ TABLESPACE tablespace ]\n" +#~ " [ WHERE predicat ]" #~ msgid "" -#~ "CREATE USER name [ [ WITH ] option [ ... ] ]\n" +#~ "CREATE GROUP name [ [ WITH ] option [ ... ] ]\n" #~ "\n" #~ "where option can be:\n" #~ " \n" @@ -6751,7 +6658,6 @@ msgstr "" #~ " | CREATEUSER | NOCREATEUSER\n" #~ " | INHERIT | NOINHERIT\n" #~ " | LOGIN | NOLOGIN\n" -#~ " | CONNECTION LIMIT connlimit\n" #~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" #~ " | VALID UNTIL 'timestamp' \n" #~ " | IN ROLE rolename [, ...]\n" @@ -6761,9 +6667,9 @@ msgstr "" #~ " | USER rolename [, ...]\n" #~ " | SYSID uid" #~ msgstr "" -#~ "CREATE USER nom [ [ WITH ] option [ ... ] ]\n" +#~ "CREATE GROUP nom [ [ WITH ] option [ ... ] ]\n" #~ "\n" -#~ "où option peut être :\n" +#~ "où option peut être :\n" #~ " \n" #~ " SUPERUSER | NOSUPERUSER\n" #~ " | CREATEDB | NOCREATEDB\n" @@ -6771,806 +6677,909 @@ msgstr "" #~ " | CREATEUSER | NOCREATEUSER\n" #~ " | INHERIT | NOINHERIT\n" #~ " | LOGIN | NOLOGIN\n" -#~ " | CONNECTION LIMIT limite_connexion\n" #~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'motdepasse'\n" #~ " | VALID UNTIL 'timestamp' \n" -#~ " | IN ROLE nom_rôle [, ...]\n" -#~ " | IN GROUP nom_rôle [, ...]\n" -#~ " | ROLE nom_rôle [, ...]\n" -#~ " | ADMIN nom_rôle [, ...]\n" -#~ " | USER nom_rôle [, ...]\n" +#~ " | IN ROLE nom_rôle [, ...]\n" +#~ " | IN GROUP nom_rôle [, ...]\n" +#~ " | ROLE nom_rôle [, ...]\n" +#~ " | ADMIN nom_rôle [, ...]\n" +#~ " | USER nom_rôle [, ...]\n" #~ " | SYSID uid" #~ msgid "" -#~ "CREATE USER MAPPING FOR { username | USER | CURRENT_USER | PUBLIC }\n" -#~ " SERVER servername\n" -#~ " [ OPTIONS ( option 'value' [ , ... ] ) ]" +#~ "CREATE [ OR REPLACE ] FUNCTION\n" +#~ " name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } defexpr ] [, ...] ] )\n" +#~ " [ RETURNS rettype\n" +#~ " | RETURNS TABLE ( colname coltype [, ...] ) ]\n" +#~ " { LANGUAGE langname\n" +#~ " | WINDOW\n" +#~ " | IMMUTABLE | STABLE | VOLATILE\n" +#~ " | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" +#~ " | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" +#~ " | COST execution_cost\n" +#~ " | ROWS result_rows\n" +#~ " | SET configuration_parameter { TO value | = value | FROM CURRENT }\n" +#~ " | AS 'definition'\n" +#~ " | AS 'obj_file', 'link_symbol'\n" +#~ " } ...\n" +#~ " [ WITH ( attribute [, ...] ) ]" #~ msgstr "" -#~ "CREATE USER MAPPING FOR { nomutilisateur | USER | CURRENT_USER | PUBLIC }\n" -#~ " SERVER nomserveur\n" -#~ " [ OPTIONS ( option 'valeur' [ , ... ] ) ]" +#~ "CREATE [ OR REPLACE ] FUNCTION\n" +#~ " nom ( [ [ mode_arg ] [ nom_arg ] type_arg [ { DEFAULT | = } expr_par_défaut ] [, ...] ] )\n" +#~ " [ RETURNS type_ret\n" +#~ " | RETURNS TABLE ( nom_colonne type_colonne [, ...] ) ]\n" +#~ " { LANGUAGE nom_lang\n" +#~ " | WINDOW\n" +#~ " | IMMUTABLE | STABLE | VOLATILE\n" +#~ " | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" +#~ " | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" +#~ " | COST coût_exécution\n" +#~ " | ROWS lignes_résultats\n" +#~ " | SET paramètre_configuration { TO valeur | = valeur | FROM CURRENT }\n" +#~ " | AS 'définition'\n" +#~ " | AS 'fichier_obj', 'symbôle_lien'\n" +#~ " } ...\n" +#~ " [ WITH ( attribut [, ...] ) ]" #~ msgid "" -#~ "CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name [, ...] ) ]\n" -#~ " AS query" +#~ "CREATE FOREIGN DATA WRAPPER name\n" +#~ " [ VALIDATOR valfunction | NO VALIDATOR ]\n" +#~ " [ OPTIONS ( option 'value' [, ... ] ) ]" #~ msgstr "" -#~ "CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW nom\n" -#~ " [ ( nom_colonne [, ...] ) ]\n" -#~ " AS requête" - -#~ msgid "DEALLOCATE [ PREPARE ] { name | ALL }" -#~ msgstr "DEALLOCATE [ PREPARE ] { nom_plan | ALL }" +#~ "CREATE FOREIGN DATA WRAPPER nom\n" +#~ " [ VALIDATOR fonction_validation | NO VALIDATOR ]\n" +#~ " [ OPTIONS ( option 'valeur' [, ... ] ) ]" #~ msgid "" -#~ "DECLARE name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]\n" -#~ " CURSOR [ { WITH | WITHOUT } HOLD ] FOR query" +#~ "CREATE DOMAIN name [ AS ] data_type\n" +#~ " [ DEFAULT expression ]\n" +#~ " [ constraint [ ... ] ]\n" +#~ "\n" +#~ "where constraint is:\n" +#~ "\n" +#~ "[ CONSTRAINT constraint_name ]\n" +#~ "{ NOT NULL | NULL | CHECK (expression) }" #~ msgstr "" -#~ "DECLARE nom [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]\n" -#~ " CURSOR [ { WITH | WITHOUT } HOLD ] FOR requête" +#~ "CREATE DOMAIN nom [AS] type_données\n" +#~ " [ DEFAULT expression ]\n" +#~ " [ contrainte [ ... ] ]\n" +#~ "\n" +#~ "avec comme contrainte :\n" +#~ "\n" +#~ "[ CONSTRAINT nom_contrainte ]\n" +#~ "{ NOT NULL | NULL | CHECK (expression) }" #~ msgid "" -#~ "DELETE FROM [ ONLY ] table [ [ AS ] alias ]\n" -#~ " [ USING usinglist ]\n" -#~ " [ WHERE condition | WHERE CURRENT OF cursor_name ]\n" -#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" +#~ "CREATE DATABASE name\n" +#~ " [ [ WITH ] [ OWNER [=] dbowner ]\n" +#~ " [ TEMPLATE [=] template ]\n" +#~ " [ ENCODING [=] encoding ]\n" +#~ " [ LC_COLLATE [=] lc_collate ]\n" +#~ " [ LC_CTYPE [=] lc_ctype ]\n" +#~ " [ TABLESPACE [=] tablespace ]\n" +#~ " [ CONNECTION LIMIT [=] connlimit ] ]" #~ msgstr "" -#~ "DELETE FROM [ ONLY ] table [ [ AS ] alias ]\n" -#~ " [ USING liste_using ]\n" -#~ " [ WHERE condition | WHERE CURRENT OF nom_curseur ]\n" -#~ " [ RETURNING * | expression_sortie [ [ AS ] nom_sortie ] [, ...] ]" - -#~ msgid "DISCARD { ALL | PLANS | TEMPORARY | TEMP }" -#~ msgstr "DISCARD { ALL | PLANS | TEMPORARY | TEMP }" +#~ "CREATE DATABASE nom\n" +#~ " [ [ WITH ] [ OWNER [=] nom_propriétaire ]\n" +#~ " [ TEMPLATE [=] modèle ]\n" +#~ " [ ENCODING [=] encodage ]\n" +#~ " [ LC_COLLATE [=] tri_caract ]\n" +#~ " [ LC_CTYPE [=] type_caract ]\n" +#~ " [ TABLESPACE [=] tablespace ]\n" +#~ " [ CONNECTION LIMIT [=] limite_connexion ] ]" -#~ msgid "DROP AGGREGATE [ IF EXISTS ] name ( type [ , ... ] ) [ CASCADE | RESTRICT ]" -#~ msgstr "DROP AGGREGATE [ IF EXISTS ] nom ( type [ , ... ] ) [ CASCADE | RESTRICT ]" - -#~ msgid "DROP CAST [ IF EXISTS ] (sourcetype AS targettype) [ CASCADE | RESTRICT ]" -#~ msgstr "DROP CAST [ IF EXISTS ] (type_source AS type_cible) [ CASCADE | RESTRICT ]" - -#~ msgid "DROP CONVERSION [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -#~ msgstr "DROP CONVERSION [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" - -#~ msgid "DROP DATABASE [ IF EXISTS ] name" -#~ msgstr "DROP DATABASE [ IF EXISTS ] nom" - -#~ msgid "DROP DOMAIN [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -#~ msgstr "DROP DOMAIN [ IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" - -#~ msgid "DROP FOREIGN DATA WRAPPER [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -#~ msgstr "DROP FOREIGN DATA WRAPPER [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" +#~ msgid "" +#~ "CREATE [ DEFAULT ] CONVERSION name\n" +#~ " FOR source_encoding TO dest_encoding FROM funcname" +#~ msgstr "" +#~ "CREATE [DEFAULT] CONVERSION nom\n" +#~ " FOR codage_source TO codage_cible FROM nom_fonction" #~ msgid "" -#~ "DROP FUNCTION [ IF EXISTS ] name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -#~ " [ CASCADE | RESTRICT ]" +#~ "CREATE CONSTRAINT TRIGGER name\n" +#~ " AFTER event [ OR ... ]\n" +#~ " ON table_name\n" +#~ " [ FROM referenced_table_name ]\n" +#~ " { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } }\n" +#~ " FOR EACH ROW\n" +#~ " EXECUTE PROCEDURE funcname ( arguments )" #~ msgstr "" -#~ "DROP FUNCTION [IF EXISTS ] nom\n" -#~ " ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] )\n" -#~ " [ CASCADE | RESTRICT ]" - -#~ msgid "DROP GROUP [ IF EXISTS ] name [, ...]" -#~ msgstr "DROP GROUP [IF EXISTS ] nom [, ...]" - -#~ msgid "DROP INDEX [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -#~ msgstr "DROP INDEX [IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" - -#~ msgid "DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -#~ msgstr "DROP [ PROCEDURAL ] LANGUAGE [IF EXISTS ] nom [ CASCADE | RESTRICT ]" +#~ "CREATE CONSTRAINT TRIGGER nom\n" +#~ " AFTER événement [ OR ... ]\n" +#~ " ON table\n" +#~ " [ FROM table_référencée ]\n" +#~ " { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } }\n" +#~ " FOR EACH ROW\n" +#~ " EXECUTE PROCEDURE nom_fonction ( arguments )" -#~ msgid "DROP OPERATOR [ IF EXISTS ] name ( { lefttype | NONE } , { righttype | NONE } ) [ CASCADE | RESTRICT ]" +#~ msgid "" +#~ "CREATE CAST (sourcetype AS targettype)\n" +#~ " WITH FUNCTION funcname (argtypes)\n" +#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n" +#~ "\n" +#~ "CREATE CAST (sourcetype AS targettype)\n" +#~ " WITHOUT FUNCTION\n" +#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n" +#~ "\n" +#~ "CREATE CAST (sourcetype AS targettype)\n" +#~ " WITH INOUT\n" +#~ " [ AS ASSIGNMENT | AS IMPLICIT ]" #~ msgstr "" -#~ "DROP OPERATOR [IF EXISTS ] nom\n" -#~ " ( { type_gauche | NONE } , { type_droit | NONE } )\n" -#~ " [ CASCADE | RESTRICT ]" +#~ "CREATE CAST (type_source AS type_cible)\n" +#~ " WITH FUNCTION nom_fonction (type_argument)\n" +#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n" +#~ "\n" +#~ "CREATE CAST (type_source AS type_cible)\n" +#~ " WITHOUT FUNCTION\n" +#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n" +#~ "\n" +#~ "CREATE CAST (type_source AS type_cible)\n" +#~ " WITH INOUT\n" +#~ " [ AS ASSIGNMENT | AS IMPLICIT ]" -#~ msgid "DROP OPERATOR CLASS [ IF EXISTS ] name USING index_method [ CASCADE | RESTRICT ]" +#~ msgid "" +#~ "CREATE AGGREGATE name ( input_data_type [ , ... ] ) (\n" +#~ " SFUNC = sfunc,\n" +#~ " STYPE = state_data_type\n" +#~ " [ , FINALFUNC = ffunc ]\n" +#~ " [ , INITCOND = initial_condition ]\n" +#~ " [ , SORTOP = sort_operator ]\n" +#~ ")\n" +#~ "\n" +#~ "or the old syntax\n" +#~ "\n" +#~ "CREATE AGGREGATE name (\n" +#~ " BASETYPE = base_type,\n" +#~ " SFUNC = sfunc,\n" +#~ " STYPE = state_data_type\n" +#~ " [ , FINALFUNC = ffunc ]\n" +#~ " [ , INITCOND = initial_condition ]\n" +#~ " [ , SORTOP = sort_operator ]\n" +#~ ")" #~ msgstr "" -#~ "DROP OPERATOR CLASS [IF EXISTS ] nom\n" -#~ " USING méthode_indexage [ CASCADE | RESTRICT ]" +#~ "CREATE AGGREGATE nom ( type_données_en_entrée [ , ... ] ) (\n" +#~ " SFUNC = sfonction,\n" +#~ " STYPE = type_données_état\n" +#~ " [ , FINALFUNC = fonction_f ]\n" +#~ " [ , INITCOND = condition_initiale ]\n" +#~ " [ , SORTOP = opérateur_tri ]\n" +#~ ")\n" +#~ "\n" +#~ "ou l'ancienne syntaxe\n" +#~ "\n" +#~ "CREATE AGGREGATE nom (\n" +#~ " BASETYPE = type_base,\n" +#~ " SFUNC = fonction_s,\n" +#~ " STYPE = type_données_état\n" +#~ " [ , FINALFUNC = fonction_f ]\n" +#~ " [ , INITCOND = condition_initiale ]\n" +#~ " [ , SORTOP = opérateur_tri ]\n" +#~ ")" -#~ msgid "DROP OPERATOR FAMILY [ IF EXISTS ] name USING index_method [ CASCADE | RESTRICT ]" +#~ msgid "" +#~ "COPY tablename [ ( column [, ...] ) ]\n" +#~ " FROM { 'filename' | STDIN }\n" +#~ " [ [ WITH ] \n" +#~ " [ BINARY ]\n" +#~ " [ OIDS ]\n" +#~ " [ DELIMITER [ AS ] 'delimiter' ]\n" +#~ " [ NULL [ AS ] 'null string' ]\n" +#~ " [ CSV [ HEADER ]\n" +#~ " [ QUOTE [ AS ] 'quote' ] \n" +#~ " [ ESCAPE [ AS ] 'escape' ]\n" +#~ " [ FORCE NOT NULL column [, ...] ]\n" +#~ "\n" +#~ "COPY { tablename [ ( column [, ...] ) ] | ( query ) }\n" +#~ " TO { 'filename' | STDOUT }\n" +#~ " [ [ WITH ] \n" +#~ " [ BINARY ]\n" +#~ " [ OIDS ]\n" +#~ " [ DELIMITER [ AS ] 'delimiter' ]\n" +#~ " [ NULL [ AS ] 'null string' ]\n" +#~ " [ CSV [ HEADER ]\n" +#~ " [ QUOTE [ AS ] 'quote' ] \n" +#~ " [ ESCAPE [ AS ] 'escape' ]\n" +#~ " [ FORCE QUOTE column [, ...] ]" #~ msgstr "" -#~ "DROP OPERATOR FAMILY [IF EXISTS ] nom\n" -#~ " USING méthode_indexage [ CASCADE | RESTRICT ]" - -#~ msgid "DROP OWNED BY name [, ...] [ CASCADE | RESTRICT ]" -#~ msgstr "DROP OWNED BY nom [, ...] [ CASCADE | RESTRICT ]" - -#~ msgid "DROP ROLE [ IF EXISTS ] name [, ...]" -#~ msgstr "DROP ROLE [IF EXISTS ] nom [, ...]" - -#~ msgid "DROP RULE [ IF EXISTS ] name ON relation [ CASCADE | RESTRICT ]" -#~ msgstr "DROP RULE [IF EXISTS ] nom ON relation [ CASCADE | RESTRICT ]" - -#~ msgid "DROP SCHEMA [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -#~ msgstr "DROP SCHEMA [IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" - -#~ msgid "DROP SEQUENCE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -#~ msgstr "DROP SEQUENCE [IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" - -#~ msgid "DROP SERVER [ IF EXISTS ] servername [ CASCADE | RESTRICT ]" -#~ msgstr "DROP SERVER [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" - -#~ msgid "DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -#~ msgstr "DROP TABLE [IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" - -#~ msgid "DROP TABLESPACE [ IF EXISTS ] tablespacename" -#~ msgstr "DROP TABLESPACE [IF EXISTS ] nom_tablespace" - -#~ msgid "DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -#~ msgstr "DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" - -#~ msgid "DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -#~ msgstr "DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" - -#~ msgid "DROP TEXT SEARCH PARSER [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -#~ msgstr "DROP TEXT SEARCH PARSER [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" - -#~ msgid "DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -#~ msgstr "DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" - -#~ msgid "DROP TRIGGER [ IF EXISTS ] name ON table [ CASCADE | RESTRICT ]" -#~ msgstr "DROP TRIGGER [IF EXISTS ] nom ON table [ CASCADE | RESTRICT ]" - -#~ msgid "DROP TYPE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -#~ msgstr "DROP TYPE [IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" +#~ "COPY nom_table [ ( colonne [, ...] ) ]\n" +#~ " FROM { 'nom_fichier' | STDIN }\n" +#~ " [ [ WITH ] \n" +#~ " [ BINARY ]\n" +#~ " [ OIDS ]\n" +#~ " [ DELIMITER [ AS ] 'délimiteur' ]\n" +#~ " [ NULL [ AS ] 'chaîne null' ]\n" +#~ " [ CSV [ HEADER ]\n" +#~ " [ QUOTE [ AS ] 'guillemet' ] \n" +#~ " [ ESCAPE [ AS ] 'échappement' ]\n" +#~ " [ FORCE NOT NULL colonne [, ...] ]\n" +#~ "\n" +#~ "COPY { nom_table [ ( colonne [, ...] ) ] | ( requête ) }\n" +#~ " TO { 'nom_fichier' | STDOUT }\n" +#~ " [ [ WITH ] \n" +#~ " [ BINARY ]\n" +#~ " [ OIDS ]\n" +#~ " [ DELIMITER [ AS ] 'délimiteur' ]\n" +#~ " [ NULL [ AS ] 'chaîne null' ]\n" +#~ " [ CSV [ HEADER ]\n" +#~ " [ QUOTE [ AS ] 'guillemet' ] \n" +#~ " [ ESCAPE [ AS ] 'échappement' ]\n" +#~ " [ FORCE QUOTE colonne [, ...] ]" -#~ msgid "DROP USER [ IF EXISTS ] name [, ...]" -#~ msgstr "DROP USER [IF EXISTS ] nom [, ...]" +#~ msgid "COMMIT PREPARED transaction_id" +#~ msgstr "COMMIT PREPARED id_transaction" -#~ msgid "DROP USER MAPPING [ IF EXISTS ] FOR { username | USER | CURRENT_USER | PUBLIC } SERVER servername" -#~ msgstr "DROP USER MAPPING [ IF EXISTS ] FOR { nomutilisateur | USER | CURRENT_USER | PUBLIC } SERVER nomserveur" +#~ msgid "COMMIT [ WORK | TRANSACTION ]" +#~ msgstr "COMMIT [ WORK | TRANSACTION ]" -#~ msgid "DROP VIEW [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -#~ msgstr "DROP VIEW [IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" +#~ msgid "" +#~ "COMMENT ON\n" +#~ "{\n" +#~ " TABLE object_name |\n" +#~ " COLUMN table_name.column_name |\n" +#~ " AGGREGATE agg_name (agg_type [, ...] ) |\n" +#~ " CAST (sourcetype AS targettype) |\n" +#~ " CONSTRAINT constraint_name ON table_name |\n" +#~ " CONVERSION object_name |\n" +#~ " DATABASE object_name |\n" +#~ " DOMAIN object_name |\n" +#~ " FUNCTION func_name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) |\n" +#~ " INDEX object_name |\n" +#~ " LARGE OBJECT large_object_oid |\n" +#~ " OPERATOR op (leftoperand_type, rightoperand_type) |\n" +#~ " OPERATOR CLASS object_name USING index_method |\n" +#~ " OPERATOR FAMILY object_name USING index_method |\n" +#~ " [ PROCEDURAL ] LANGUAGE object_name |\n" +#~ " ROLE object_name |\n" +#~ " RULE rule_name ON table_name |\n" +#~ " SCHEMA object_name |\n" +#~ " SEQUENCE object_name |\n" +#~ " TABLESPACE object_name |\n" +#~ " TEXT SEARCH CONFIGURATION object_name |\n" +#~ " TEXT SEARCH DICTIONARY object_name |\n" +#~ " TEXT SEARCH PARSER object_name |\n" +#~ " TEXT SEARCH TEMPLATE object_name |\n" +#~ " TRIGGER trigger_name ON table_name |\n" +#~ " TYPE object_name |\n" +#~ " VIEW object_name\n" +#~ "} IS 'text'" +#~ msgstr "" +#~ "COMMENT ON\n" +#~ "{\n" +#~ " TABLE nom_objet |\n" +#~ " COLUMN nom_table.nom_colonne |\n" +#~ " AGGREGATE nom_agg (type_agg [, ...] ) |\n" +#~ " CAST (type_source AS type_cible) |\n" +#~ " CONSTRAINT nom_contrainte ON nom_table |\n" +#~ " CONVERSION nom_objet |\n" +#~ " DATABASE nom_objet |\n" +#~ " DOMAIN nom_objet |\n" +#~ " FUNCTION nom_fonction ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] ) |\n" +#~ " INDEX nom_objet |\n" +#~ " LARGE OBJECT oid_LO |\n" +#~ " OPERATOR op (type_operande_gauche, type_operande_droit) |\n" +#~ " OPERATOR CLASS nom_objet USING methode_indexage |\n" +#~ " OPERATOR FAMILY nom_objet USING methode_indexage |\n" +#~ " [ PROCEDURAL ] LANGUAGE nom_objet |\n" +#~ " ROLE nom_objet |\n" +#~ " RULE nom_regle ON nom_table |\n" +#~ " SCHEMA nom_objet |\n" +#~ " SEQUENCE nom_objet |\n" +#~ " TABLESPACE nom_objet |\n" +#~ " TEXT SEARCH CONFIGURATION nom_objet |\n" +#~ " TEXT SEARCH DICTIONARY nom_objet |\n" +#~ " TEXT SEARCH PARSER nom_objet |\n" +#~ " TEXT SEARCH TEMPLATE nom_objet |\n" +#~ " TRIGGER nom_trigger ON nom_objet |\n" +#~ " TYPE nom_objet |\n" +#~ " VIEW nom_objet\n" +#~ "} IS 'text'" -#~ msgid "END [ WORK | TRANSACTION ]" -#~ msgstr "END [ WORK | TRANSACTION ]" +#~ msgid "" +#~ "CLUSTER [VERBOSE] tablename [ USING indexname ]\n" +#~ "CLUSTER [VERBOSE]" +#~ msgstr "" +#~ "CLUSTER [VERBOSE] nom_table [ USING nom_index ]\n" +#~ "CLUSTER [VERBOSE]" -#~ msgid "EXECUTE name [ ( parameter [, ...] ) ]" -#~ msgstr "EXECUTE nom_plan [ ( paramètre [, ...] ) ]" +#~ msgid "CLOSE { name | ALL }" +#~ msgstr "CLOSE { nom | ALL }" -#~ msgid "EXPLAIN [ ANALYZE ] [ VERBOSE ] statement" -#~ msgstr "EXPLAIN [ ANALYZE ] [ VERBOSE ] instruction" +#~ msgid "CHECKPOINT" +#~ msgstr "CHECKPOINT" #~ msgid "" -#~ "FETCH [ direction { FROM | IN } ] cursorname\n" +#~ "BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]\n" #~ "\n" -#~ "where direction can be empty or one of:\n" +#~ "where transaction_mode is one of:\n" #~ "\n" -#~ " NEXT\n" -#~ " PRIOR\n" -#~ " FIRST\n" -#~ " LAST\n" -#~ " ABSOLUTE count\n" -#~ " RELATIVE count\n" -#~ " count\n" -#~ " ALL\n" -#~ " FORWARD\n" -#~ " FORWARD count\n" -#~ " FORWARD ALL\n" -#~ " BACKWARD\n" -#~ " BACKWARD count\n" -#~ " BACKWARD ALL" +#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n" +#~ " READ WRITE | READ ONLY" #~ msgstr "" -#~ "FETCH [ direction { FROM | IN } ] nom_curseur\n" +#~ "BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]\n" #~ "\n" -#~ "sans préciser de direction ou en choissant une des directions suivantes :\n" +#~ "où transaction_mode peut être :\n" #~ "\n" -#~ " NEXT\n" -#~ " PRIOR\n" -#~ " FIRST\n" -#~ " LAST\n" -#~ " ABSOLUTE nombre\n" -#~ " RELATIVE nombre\n" -#~ " count\n" -#~ " ALL\n" -#~ " FORWARD\n" -#~ " FORWARD nombre\n" -#~ " FORWARD ALL\n" -#~ " BACKWARD\n" -#~ " BACKWARD nombre\n" -#~ " BACKWARD ALL" +#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ |\n" +#~ " READ COMMITTED | READ UNCOMMITTED }\n" +#~ " READ WRITE | READ ONLY" + +#~ msgid "ANALYZE [ VERBOSE ] [ table [ ( column [, ...] ) ] ]" +#~ msgstr "ANALYZE [ VERBOSE ] [ table [ ( colonne [, ...] ) ] ]" #~ msgid "" -#~ "GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n" -#~ " [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON [ TABLE ] tablename [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( column [, ...] )\n" -#~ " [,...] | ALL [ PRIVILEGES ] ( column [, ...] ) }\n" -#~ " ON [ TABLE ] tablename [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { { USAGE | SELECT | UPDATE }\n" -#~ " [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON SEQUENCE sequencename [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON DATABASE dbname [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON FOREIGN DATA WRAPPER fdwname [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON FOREIGN SERVER servername [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { EXECUTE | ALL [ PRIVILEGES ] }\n" -#~ " ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON LANGUAGE langname [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON SCHEMA schemaname [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { CREATE | ALL [ PRIVILEGES ] }\n" -#~ " ON TABLESPACE tablespacename [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT role [, ...] TO rolename [, ...] [ WITH ADMIN OPTION ]" -#~ msgstr "" -#~ "GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n" -#~ " [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON [ TABLE ] nom_table [, ...]\n" -#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( colonne [, ...] )\n" -#~ " [,...] | ALL [ PRIVILEGES ] ( colonne [, ...] ) }\n" -#~ " ON [ TABLE ] nom_table [, ...]\n" -#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { { USAGE | SELECT | UPDATE }\n" -#~ " [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON SEQUENCE nom_séquence [, ...]\n" -#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON DATABASE nom_base [, ...]\n" -#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON FOREIGN DATA WRAPPER nomfdw [, ...]\n" -#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON FOREIGN SERVER nom_serveur [, ...]\n" -#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { EXECUTE | ALL [ PRIVILEGES ] }\n" -#~ " ON FUNCTION nom_fonction ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] ) [, ...]\n" -#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON LANGUAGE nom_langage [, ...]\n" -#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON SCHEMA nom_schéma [, ...]\n" -#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { CREATE | ALL [ PRIVILEGES ] }\n" -#~ " ON TABLESPACE nom_tablespace [, ...]\n" -#~ " TO { [ GROUP ] nom_rôle | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT rôle [, ...] TO nom_rôle [, ...] [ WITH ADMIN OPTION ]" +#~ "ALTER VIEW name ALTER [ COLUMN ] column SET DEFAULT expression\n" +#~ "ALTER VIEW name ALTER [ COLUMN ] column DROP DEFAULT\n" +#~ "ALTER VIEW name OWNER TO new_owner\n" +#~ "ALTER VIEW name RENAME TO new_name\n" +#~ "ALTER VIEW name SET SCHEMA new_schema" +#~ msgstr "" +#~ "ALTER VIEW nom ALTER [ COLUMN ] colonne SET DEFAULT expression\n" +#~ "ALTER VIEW nom ALTER [ COLUMN ] colonne DROP DEFAULT\n" +#~ "ALTER VIEW nom OWNER TO nouveau_propriétaire\n" +#~ "ALTER VIEW nom RENAME TO nouveau_nom\n" +#~ "ALTER VIEW nom SET SCHEMA nouveau_schéma" #~ msgid "" -#~ "INSERT INTO table [ ( column [, ...] ) ]\n" -#~ " { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }\n" -#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" +#~ "ALTER USER MAPPING FOR { username | USER | CURRENT_USER | PUBLIC }\n" +#~ " SERVER servername\n" +#~ " OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] )" #~ msgstr "" -#~ "INSERT INTO table [ ( colonne [, ...] ) ]\n" -#~ " { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | requête }\n" -#~ " [ RETURNING * | expression_sortie [ [ AS ] nom_sortie ] [, ...] ]" - -#~ msgid "LISTEN name" -#~ msgstr "LISTEN nom" - -#~ msgid "LOAD 'filename'" -#~ msgstr "LOAD 'nom_de_fichier'" +#~ "ALTER USER MAPPING FOR { nom_utilisateur | USER | CURRENT_USER | PUBLIC }\n" +#~ " SERVER nom_serveur\n" +#~ " OPTIONS ( [ ADD | SET | DROP ] option ['valeur'] [, ... ] )" #~ msgid "" -#~ "LOCK [ TABLE ] [ ONLY ] name [, ...] [ IN lockmode MODE ] [ NOWAIT ]\n" +#~ "ALTER USER name [ [ WITH ] option [ ... ] ]\n" #~ "\n" -#~ "where lockmode is one of:\n" +#~ "where option can be:\n" +#~ " \n" +#~ " SUPERUSER | NOSUPERUSER\n" +#~ " | CREATEDB | NOCREATEDB\n" +#~ " | CREATEROLE | NOCREATEROLE\n" +#~ " | CREATEUSER | NOCREATEUSER\n" +#~ " | INHERIT | NOINHERIT\n" +#~ " | LOGIN | NOLOGIN\n" +#~ " | CONNECTION LIMIT connlimit\n" +#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" +#~ " | VALID UNTIL 'timestamp' \n" #~ "\n" -#~ " ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n" -#~ " | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE" +#~ "ALTER USER name RENAME TO newname\n" +#~ "\n" +#~ "ALTER USER name SET configuration_parameter { TO | = } { value | DEFAULT }\n" +#~ "ALTER USER name SET configuration_parameter FROM CURRENT\n" +#~ "ALTER USER name RESET configuration_parameter\n" +#~ "ALTER USER name RESET ALL" #~ msgstr "" -#~ "LOCK [ TABLE ] [ ONLY ] nom [, ...] [ IN mode_verrouillage MODE ] [ NOWAIT ]\n" +#~ "ALTER USER nom [ [ WITH ] option [ ... ] ]\n" #~ "\n" -#~ "avec mode_verrouillage parmi :\n" +#~ "où option peut être :\n" +#~ " \n" +#~ " SUPERUSER | NOSUPERUSER\n" +#~ " | CREATEDB | NOCREATEDB\n" +#~ " | CREATEROLE | NOCREATEROLE\n" +#~ " | CREATEUSER | NOCREATEUSER\n" +#~ " | INHERIT | NOINHERIT\n" +#~ " | LOGIN | NOLOGIN\n" +#~ " | CONNECTION LIMIT limite_connexion\n" +#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'motdepasse'\n" +#~ " | VALID UNTIL 'timestamp' \n" #~ "\n" -#~ " ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n" -#~ " | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE" - -#~ msgid "MOVE [ direction { FROM | IN } ] cursorname" -#~ msgstr "MOVE [ direction { FROM | IN } ] nom_de_curseur" +#~ "ALTER USER nom RENAME TO nouveau_nom\n" +#~ "\n" +#~ "ALTER USER nom SET paramètre { TO | = } { valeur | DEFAULT }\n" +#~ "ALTER USER name SET paramètre FROM CURRENT\n" +#~ "ALTER USER nom RESET paramètre\n" +#~ "ALTER USER name RESET ALL" -#~ msgid "NOTIFY name" -#~ msgstr "NOTIFY nom" +#~ msgid "" +#~ "ALTER TYPE name RENAME TO new_name\n" +#~ "ALTER TYPE name OWNER TO new_owner \n" +#~ "ALTER TYPE name SET SCHEMA new_schema" +#~ msgstr "" +#~ "ALTER TYPE nom RENAME TO nouveau_nom\n" +#~ "ALTER TYPE nom OWNER TO nouveau_propriétaire\n" +#~ "ALTER TYPE nom SET SCHEMA nouveau_schéma" -#~ msgid "PREPARE name [ ( datatype [, ...] ) ] AS statement" -#~ msgstr "PREPARE nom_plan [ ( type_données [, ...] ) ] AS instruction" +#~ msgid "ALTER TRIGGER name ON table RENAME TO newname" +#~ msgstr "ALTER TRIGGER nom ON table RENAME TO nouveau_nom" -#~ msgid "PREPARE TRANSACTION transaction_id" -#~ msgstr "PREPARE TRANSACTION id_transaction" +#~ msgid "ALTER TEXT SEARCH TEMPLATE name RENAME TO newname" +#~ msgstr "ALTER TEXT SEARCH TEMPLATE nom RENAME TO nouveau_nom" -#~ msgid "REASSIGN OWNED BY old_role [, ...] TO new_role" -#~ msgstr "REASSIGN OWNED BY ancien_role [, ...] TO nouveau_role" +#~ msgid "ALTER TEXT SEARCH PARSER name RENAME TO newname" +#~ msgstr "ALTER TEXT SEARCH PARSER nom RENAME TO nouveau_nom" -#~ msgid "REINDEX { INDEX | TABLE | DATABASE | SYSTEM } name [ FORCE ]" -#~ msgstr "REINDEX { INDEX | TABLE | DATABASE | SYSTEM } nom [ FORCE ]" +#~ msgid "" +#~ "ALTER TEXT SEARCH DICTIONARY name (\n" +#~ " option [ = value ] [, ... ]\n" +#~ ")\n" +#~ "ALTER TEXT SEARCH DICTIONARY name RENAME TO newname\n" +#~ "ALTER TEXT SEARCH DICTIONARY name OWNER TO newowner" +#~ msgstr "" +#~ "ALTER TEXT SEARCH DICTIONARY nom (\n" +#~ " option [ = valeur ] [, ... ]\n" +#~ ")\n" +#~ "ALTER TEXT SEARCH DICTIONARY nom RENAME TO nouveau_nom\n" +#~ "ALTER TEXT SEARCH DICTIONARY nom OWNER TO nouveau_propriétaire" -#~ msgid "RELEASE [ SAVEPOINT ] savepoint_name" -#~ msgstr "RELEASE [ SAVEPOINT ] nom_retour" +#~ msgid "" +#~ "ALTER TEXT SEARCH CONFIGURATION name\n" +#~ " ADD MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]\n" +#~ "ALTER TEXT SEARCH CONFIGURATION name\n" +#~ " ALTER MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]\n" +#~ "ALTER TEXT SEARCH CONFIGURATION name\n" +#~ " ALTER MAPPING REPLACE old_dictionary WITH new_dictionary\n" +#~ "ALTER TEXT SEARCH CONFIGURATION name\n" +#~ " ALTER MAPPING FOR token_type [, ... ] REPLACE old_dictionary WITH new_dictionary\n" +#~ "ALTER TEXT SEARCH CONFIGURATION name\n" +#~ " DROP MAPPING [ IF EXISTS ] FOR token_type [, ... ]\n" +#~ "ALTER TEXT SEARCH CONFIGURATION name RENAME TO newname\n" +#~ "ALTER TEXT SEARCH CONFIGURATION name OWNER TO newowner" +#~ msgstr "" +#~ "ALTER TEXT SEARCH CONFIGURATION nom\n" +#~ " ADD MAPPING FOR type_jeton [, ... ] WITH nom_dictionnaire [, ... ]\n" +#~ "ALTER TEXT SEARCH CONFIGURATION nom\n" +#~ " ALTER MAPPING FOR type_jeton [, ... ] WITH nom_dictionnaire [, ... ]\n" +#~ "ALTER TEXT SEARCH CONFIGURATION nom\n" +#~ " ALTER MAPPING REPLACE ancien_dictionnaire WITH nouveau_dictionnaire\n" +#~ "ALTER TEXT SEARCH CONFIGURATION nom\n" +#~ " ALTER MAPPING FOR type_jeton [, ... ]\n" +#~ " REPLACE ancien_dictionnaire WITH nouveau_dictionnaire\n" +#~ "ALTER TEXT SEARCH CONFIGURATION nom\n" +#~ " DROP MAPPING [ IF EXISTS ] FOR type_jeton [, ... ]\n" +#~ "ALTER TEXT SEARCH CONFIGURATION nom RENAME TO nouveau_nom\n" +#~ "ALTER TEXT SEARCH CONFIGURATION nom OWNER TO nouveau_propriétaire" #~ msgid "" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n" -#~ " [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON [ TABLE ] tablename [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { { SELECT | INSERT | UPDATE | REFERENCES } ( column [, ...] )\n" -#~ " [,...] | ALL [ PRIVILEGES ] ( column [, ...] ) }\n" -#~ " ON [ TABLE ] tablename [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { { USAGE | SELECT | UPDATE }\n" -#~ " [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON SEQUENCE sequencename [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON DATABASE dbname [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON FOREIGN DATA WRAPPER fdwname [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON FOREIGN SERVER servername [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { EXECUTE | ALL [ PRIVILEGES ] }\n" -#~ " ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON LANGUAGE langname [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON SCHEMA schemaname [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { CREATE | ALL [ PRIVILEGES ] }\n" -#~ " ON TABLESPACE tablespacename [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ ADMIN OPTION FOR ]\n" -#~ " role [, ...] FROM rolename [, ...]\n" -#~ " [ CASCADE | RESTRICT ]" +#~ "ALTER TABLESPACE name RENAME TO newname\n" +#~ "ALTER TABLESPACE name OWNER TO newowner" #~ msgstr "" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n" -#~ " [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON [ TABLE ] nom_table [, ...]\n" -#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { { SELECT | INSERT | UPDATE | REFERENCES } ( colonne [, ...] )\n" -#~ " [,...] | ALL [ PRIVILEGES ] ( colonne [, ...] ) }\n" -#~ " ON [ TABLE ] nom_table [, ...]\n" -#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { { USAGE | SELECT | UPDATE }\n" -#~ " [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON SEQUENCE nom_séquence [, ...]\n" -#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON DATABASE nom_base [, ...]\n" -#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON FOREIGN DATA WRAPPER nom_fdw [, ...]\n" -#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON FOREIGN SERVER nom_serveur [, ...]\n" -#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { EXECUTE | ALL [ PRIVILEGES ] }\n" -#~ " ON FUNCTION nom_fonction ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] ) [, ...]\n" -#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" +#~ "ALTER TABLESPACE nom RENAME TO nouveau_nom\n" +#~ "ALTER TABLESPACE nom OWNER TO nouveau_propriétaire" + +#~ msgid "" +#~ "ALTER TABLE [ ONLY ] name [ * ]\n" +#~ " action [, ... ]\n" +#~ "ALTER TABLE [ ONLY ] name [ * ]\n" +#~ " RENAME [ COLUMN ] column TO new_column\n" +#~ "ALTER TABLE name\n" +#~ " RENAME TO new_name\n" +#~ "ALTER TABLE name\n" +#~ " SET SCHEMA new_schema\n" #~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON LANGUAGE nom_langage [, ...]\n" -#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" +#~ "where action is one of:\n" #~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON SCHEMA nom_schéma [, ...]\n" -#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" +#~ " ADD [ COLUMN ] column type [ column_constraint [ ... ] ]\n" +#~ " DROP [ COLUMN ] column [ RESTRICT | CASCADE ]\n" +#~ " ALTER [ COLUMN ] column [ SET DATA ] TYPE type [ USING expression ]\n" +#~ " ALTER [ COLUMN ] column SET DEFAULT expression\n" +#~ " ALTER [ COLUMN ] column DROP DEFAULT\n" +#~ " ALTER [ COLUMN ] column { SET | DROP } NOT NULL\n" +#~ " ALTER [ COLUMN ] column SET STATISTICS integer\n" +#~ " ALTER [ COLUMN ] column SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }\n" +#~ " ADD table_constraint\n" +#~ " DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n" +#~ " DISABLE TRIGGER [ trigger_name | ALL | USER ]\n" +#~ " ENABLE TRIGGER [ trigger_name | ALL | USER ]\n" +#~ " ENABLE REPLICA TRIGGER trigger_name\n" +#~ " ENABLE ALWAYS TRIGGER trigger_name\n" +#~ " DISABLE RULE rewrite_rule_name\n" +#~ " ENABLE RULE rewrite_rule_name\n" +#~ " ENABLE REPLICA RULE rewrite_rule_name\n" +#~ " ENABLE ALWAYS RULE rewrite_rule_name\n" +#~ " CLUSTER ON index_name\n" +#~ " SET WITHOUT CLUSTER\n" +#~ " SET WITH OIDS\n" +#~ " SET WITHOUT OIDS\n" +#~ " SET ( storage_parameter = value [, ... ] )\n" +#~ " RESET ( storage_parameter [, ... ] )\n" +#~ " INHERIT parent_table\n" +#~ " NO INHERIT parent_table\n" +#~ " OWNER TO new_owner\n" +#~ " SET TABLESPACE new_tablespace" +#~ msgstr "" +#~ "ALTER TABLE [ ONLY ] nom [ * ]\n" +#~ " action [, ... ]\n" +#~ "ALTER TABLE [ ONLY ] nom [ * ]\n" +#~ " RENAME [ COLUMN ] colonne TO nouvelle_colonne\n" +#~ "ALTER TABLE nom\n" +#~ " RENAME TO nouveau_nom\n" +#~ "ALTER TABLE nom\n" +#~ " SET SCHEMA nouveau_schema\n" #~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { CREATE | ALL [ PRIVILEGES ] }\n" -#~ " ON TABLESPACE nom_tablespace [, ...]\n" -#~ " FROM { [ GROUP ] nom_rôle | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" +#~ "où action peut être :\n" #~ "\n" -#~ "REVOKE [ ADMIN OPTION FOR ]\n" -#~ " role [, ...] FROM nom_rôle [, ...]\n" -#~ " [ CASCADE | RESTRICT ]" +#~ " ADD [ COLUMN ] colonne type [ contrainte_colonne [ ... ] ]\n" +#~ " DROP [ COLUMN ] colonne [ RESTRICT | CASCADE ]\n" +#~ " ALTER [ COLUMN ] colonne [ SET DATA ] TYPE type [ USING expression ]\n" +#~ " ALTER [ COLUMN ] colonne SET DEFAULT expression\n" +#~ " ALTER [ COLUMN ] colonne DROP DEFAULT\n" +#~ " ALTER [ COLUMN ] colonne { SET | DROP } NOT NULL\n" +#~ " ALTER [ COLUMN ] colonne SET STATISTICS entier\n" +#~ " ALTER [ COLUMN ] colonne SET STORAGE\n" +#~ " { PLAIN | EXTERNAL | EXTENDED | MAIN }\n" +#~ " ADD contrainte_table\n" +#~ " DROP CONSTRAINT nom_contrainte [ RESTRICT | CASCADE ]\n" +#~ " DISABLE TRIGGER [ nom_trigger | ALL | USER ]\n" +#~ " ENABLE TRIGGER [ nom_trigger | ALL | USER ]\n" +#~ " ENABLE REPLICA TRIGGER nom_trigger\n" +#~ " ENABLE ALWAYS TRIGGER nom_trigger\n" +#~ " DISABLE RULE nom_règle_réécriture\n" +#~ " ENABLE RULE nom_règle_réécriture\n" +#~ " ENABLE REPLICA RULE nom_règle_réécriture\n" +#~ " ENABLE ALWAYS RULE nom_règle_réécriture\n" +#~ " CLUSTER ON nom_index\n" +#~ " SET WITHOUT CLUSTER\n" +#~ " SET WITH OIDS\n" +#~ " SET WITHOUT OIDS\n" +#~ " SET ( paramètre_stockage = valeur [, ... ] )\n" +#~ " RESET ( paramètre_stockage [, ... ] )\n" +#~ " INHERIT table_parent\n" +#~ " NO INHERIT table_parent\n" +#~ " OWNER TO nouveau_propriétaire\n" +#~ " SET TABLESPACE nouveau_tablespace" -#~ msgid "ROLLBACK [ WORK | TRANSACTION ]" -#~ msgstr "ROLLBACK [ WORK | TRANSACTION ]" +#~ msgid "" +#~ "ALTER SERVER servername [ VERSION 'newversion' ]\n" +#~ " [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] ) ]\n" +#~ "ALTER SERVER servername OWNER TO new_owner" +#~ msgstr "" +#~ "ALTER SERVER nom [ VERSION 'nouvelleversion' ]\n" +#~ " [ OPTIONS ( [ ADD | SET | DROP ] option ['valeur'] [, ... ] ) ]\n" +#~ "ALTER SERVER nom OWNER TO nouveau_propriétaire" -#~ msgid "ROLLBACK PREPARED transaction_id" -#~ msgstr "ROLLBACK PREPARED id_transaction" +#~ msgid "" +#~ "ALTER SEQUENCE name [ INCREMENT [ BY ] increment ]\n" +#~ " [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]\n" +#~ " [ START [ WITH ] start ]\n" +#~ " [ RESTART [ [ WITH ] restart ] ]\n" +#~ " [ CACHE cache ] [ [ NO ] CYCLE ]\n" +#~ " [ OWNED BY { table.column | NONE } ]\n" +#~ "ALTER SEQUENCE name OWNER TO new_owner\n" +#~ "ALTER SEQUENCE name RENAME TO new_name\n" +#~ "ALTER SEQUENCE name SET SCHEMA new_schema" +#~ msgstr "" +#~ "ALTER SEQUENCE nom [ INCREMENT [ BY ] incrément ]\n" +#~ " [ MINVALUE valeur_min | NO MINVALUE ] [ MAXVALUE valeur_max | NO MAXVALUE ]\n" +#~ " [ START [ WITH ] valeur_début ]\n" +#~ " [ RESTART [ [ WITH ] valeur_redémarrage ] ]\n" +#~ " [ CACHE cache ] [ [ NO ] CYCLE ]\n" +#~ " [ OWNED BY { table.colonne | NONE } ]\n" +#~ "ALTER SEQUENCE nom OWNER TO new_propriétaire\n" +#~ "ALTER SEQUENCE nom RENAME TO new_nom\n" +#~ "ALTER SEQUENCE nom SET SCHEMA new_schéma" -#~ msgid "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_name" -#~ msgstr "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] nom_retour" +#~ msgid "" +#~ "ALTER SCHEMA name RENAME TO newname\n" +#~ "ALTER SCHEMA name OWNER TO newowner" +#~ msgstr "" +#~ "ALTER SCHEMA nom RENAME TO nouveau_nom\n" +#~ "ALTER SCHEMA nom OWNER TO nouveau_propriétaire" #~ msgid "" -#~ "[ WITH [ RECURSIVE ] with_query [, ...] ]\n" -#~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" -#~ " * | expression [ [ AS ] output_name ] [, ...]\n" -#~ " [ FROM from_item [, ...] ]\n" -#~ " [ WHERE condition ]\n" -#~ " [ GROUP BY expression [, ...] ]\n" -#~ " [ HAVING condition [, ...] ]\n" -#~ " [ WINDOW window_name AS ( window_definition ) [, ...] ]\n" -#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" -#~ " [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]\n" -#~ " [ LIMIT { count | ALL } ]\n" -#~ " [ OFFSET start [ ROW | ROWS ] ]\n" -#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n" -#~ " [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]\n" -#~ "\n" -#~ "where from_item can be one of:\n" -#~ "\n" -#~ " [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]\n" -#~ " ( select ) [ AS ] alias [ ( column_alias [, ...] ) ]\n" -#~ " with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]\n" -#~ " function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias [, ...] | column_definition [, ...] ) ]\n" -#~ " function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] )\n" -#~ " from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]\n" +#~ "ALTER ROLE name [ [ WITH ] option [ ... ] ]\n" #~ "\n" -#~ "and with_query is:\n" +#~ "where option can be:\n" +#~ " \n" +#~ " SUPERUSER | NOSUPERUSER\n" +#~ " | CREATEDB | NOCREATEDB\n" +#~ " | CREATEROLE | NOCREATEROLE\n" +#~ " | CREATEUSER | NOCREATEUSER\n" +#~ " | INHERIT | NOINHERIT\n" +#~ " | LOGIN | NOLOGIN\n" +#~ " | CONNECTION LIMIT connlimit\n" +#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" +#~ " | VALID UNTIL 'timestamp' \n" #~ "\n" -#~ " with_query_name [ ( column_name [, ...] ) ] AS ( select )\n" +#~ "ALTER ROLE name RENAME TO newname\n" #~ "\n" -#~ "TABLE { [ ONLY ] table_name [ * ] | with_query_name }" +#~ "ALTER ROLE name SET configuration_parameter { TO | = } { value | DEFAULT }\n" +#~ "ALTER ROLE name SET configuration_parameter FROM CURRENT\n" +#~ "ALTER ROLE name RESET configuration_parameter\n" +#~ "ALTER ROLE name RESET ALL" #~ msgstr "" -#~ "[ WITH [ RECURSIVE ] requête_with [, ...] ]\n" -#~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" -#~ " * | expression [ [ AS ] nom_sortie ] [, ...]\n" -#~ " [ FROM élément_from [, ...] ]\n" -#~ " [ WHERE condition ]\n" -#~ " [ GROUP BY expression [, ...] ]\n" -#~ " [ HAVING condition [, ...] ]\n" -#~ " [ WINDOW nom_window AS ( définition_window ) [, ...] ]\n" -#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" -#~ " [ ORDER BY expression [ ASC | DESC | USING opérateur ] [ NULLS { FIRST | LAST } ] [, ...] ]\n" -#~ " [ LIMIT { total | ALL } ]\n" -#~ " [ OFFSET début [ ROW | ROWS ] ]\n" -#~ " [ FETCH { FIRST | NEXT } [ total ] { ROW | ROWS } ONLY ]\n" -#~ " [ FOR { UPDATE | SHARE } [ OF nom_table [, ...] ] [ NOWAIT ] [...] ]\n" -#~ "\n" -#~ "avec élément_from faisant parti de :\n" -#~ "\n" -#~ " [ ONLY ] nom_table [ * ] [ [ AS ] alias [ ( alias_colonne [, ...] ) ] ]\n" -#~ " ( select ) [ AS ] alias [ ( alias_colonne [, ...] ) ]\n" -#~ " nom_requête_with [ [ AS ] alias [ ( alias_colonne [, ...] ) ] ]\n" -#~ " nom_fonction ( [ argument [, ...] ] ) [ AS ] alias [ ( alias_colonne [, ...] | définition_colonne [, ...] ) ]\n" -#~ " nom_fonction ( [ argument [, ...] ] ) AS ( définition_colonne [, ...] )\n" -#~ " élément_from [ NATURAL ] type_jointure élément_from [ ON condition_jointure | USING ( colonne_jointure [, ...] ) ]\n" +#~ "ALTER ROLE nom [ [ WITH ] option [ ... ] ]\n" #~ "\n" -#~ "et requête_with est:\n" +#~ "où option peut être :\n" +#~ " \n" +#~ " SUPERUSER | NOSUPERUSER\n" +#~ " | CREATEDB | NOCREATEDB\n" +#~ " | CREATEROLE | NOCREATEROLE\n" +#~ " | CREATEUSER | NOCREATEUSER\n" +#~ " | INHERIT | NOINHERIT\n" +#~ " | LOGIN | NOLOGIN\n" +#~ " | CONNECTION LIMIT limite_connexions\n" +#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'mot de passe'\n" +#~ " | VALID UNTIL 'timestamp' \n" #~ "\n" -#~ " nom_requête_with [ ( nom_colonne [, ...] ) ] AS ( select )\n" +#~ "ALTER ROLE nom RENAME TO nouveau_nom\n" #~ "\n" -#~ "TABLE { [ ONLY ] nom_table [ * ] | nom_requête_with }" +#~ "ALTER ROLE nom SET paramètre { TO | = } { valeur | DEFAULT }\n" +#~ "ALTER ROLE name SET paramètre FROM CURRENT\n" +#~ "ALTER ROLE nom RESET paramètre\n" +#~ "ALTER ROLE name RESET ALL" #~ msgid "" -#~ "[ WITH [ RECURSIVE ] with_query [, ...] ]\n" -#~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" -#~ " * | expression [ [ AS ] output_name ] [, ...]\n" -#~ " INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table\n" -#~ " [ FROM from_item [, ...] ]\n" -#~ " [ WHERE condition ]\n" -#~ " [ GROUP BY expression [, ...] ]\n" -#~ " [ HAVING condition [, ...] ]\n" -#~ " [ WINDOW window_name AS ( window_definition ) [, ...] ]\n" -#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" -#~ " [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]\n" -#~ " [ LIMIT { count | ALL } ]\n" -#~ " [ OFFSET start [ ROW | ROWS ] ]\n" -#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n" -#~ " [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]" +#~ "ALTER OPERATOR FAMILY name USING index_method ADD\n" +#~ " { OPERATOR strategy_number operator_name ( op_type, op_type )\n" +#~ " | FUNCTION support_number [ ( op_type [ , op_type ] ) ] funcname ( argument_type [, ...] )\n" +#~ " } [, ... ]\n" +#~ "ALTER OPERATOR FAMILY name USING index_method DROP\n" +#~ " { OPERATOR strategy_number ( op_type [ , op_type ] )\n" +#~ " | FUNCTION support_number ( op_type [ , op_type ] )\n" +#~ " } [, ... ]\n" +#~ "ALTER OPERATOR FAMILY name USING index_method RENAME TO newname\n" +#~ "ALTER OPERATOR FAMILY name USING index_method OWNER TO newowner" #~ msgstr "" -#~ "[ WITH [ RECURSIVE ] requête_with [, ...] ]\n" -#~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" -#~ " * | expression [ [ AS ] nom_sortie ] [, ...]\n" -#~ " INTO [ TEMPORARY | TEMP ] [ TABLE ] nouvelle_table\n" -#~ " [ FROM élément_from [, ...] ]\n" -#~ " [ WHERE condition ]\n" -#~ " [ GROUP BY expression [, ...] ]\n" -#~ " [ HAVING condition [, ...] ]\n" -#~ " [ WINDOW nom_window AS ( définition_window ) [, ...] ]\n" -#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" -#~ " [ ORDER BY expression [ ASC | DESC | USING opérateur ] [ NULLS { FIRST | LAST } ] [, ...] ]\n" -#~ " [ LIMIT { total | ALL } ]\n" -#~ " [ OFFSET début [ ROW | ROWS ] ]\n" -#~ " [ FETCH { FIRST | NEXT } [ total ] { ROW | ROWS } ONLY ]\n" -#~ " [ FOR { UPDATE | SHARE } [ OF nom_table [, ...] ] [ NOWAIT ] [...] ]" +#~ "ALTER OPERATOR FAMILY nom USING méthode_indexage ADD\n" +#~ " { OPERATOR numéro_stratégie nom_opérateur ( type_op, type_op ) \n" +#~ " | FUNCTION numéro_support [ ( type_op [ , type_op ] ) ]\n" +#~ " nom_fonction ( type_argument [, ...] )\n" +#~ " } [, ... ]\n" +#~ "ALTER OPERATOR FAMILY nom USING méthode_indexage DROP\n" +#~ " { OPERATOR numéro_stratégie ( type_op [ , type_op ] )\n" +#~ " | FUNCTION numéro_support ( type_op [ , type_op ] )\n" +#~ " } [, ... ]\n" +#~ "ALTER OPERATOR FAMILY nom USING méthode_indexage\n" +#~ " RENAME TO nouveau_nom\n" +#~ "ALTER OPERATOR FAMILY nom USING méthode_indexage\n" +#~ " OWNER TO nouveau_propriétaire" #~ msgid "" -#~ "SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | 'value' | DEFAULT }\n" -#~ "SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }" +#~ "ALTER OPERATOR CLASS name USING index_method RENAME TO newname\n" +#~ "ALTER OPERATOR CLASS name USING index_method OWNER TO newowner" +#~ msgstr "" +#~ "ALTER OPERATOR CLASS nom USING méthode_indexation\n" +#~ " RENAME TO nouveau_nom\n" +#~ "ALTER OPERATOR CLASS nom USING méthode_indexation\n" +#~ " OWNER TO nouveau_propriétaire" + +#~ msgid "ALTER OPERATOR name ( { lefttype | NONE } , { righttype | NONE } ) OWNER TO newowner" +#~ msgstr "" +#~ "ALTER OPERATOR nom ( { lefttype | NONE } , { righttype | NONE } )\n" +#~ " OWNER TO nouveau_propriétaire" + +#~ msgid "" +#~ "ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO newname\n" +#~ "ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO new_owner" +#~ msgstr "" +#~ "ALTER [ PROCEDURAL ] LANGUAGE nom RENAME TO nouveau_nom\n" +#~ "ALTER [ PROCEDURAL ] LANGUAGE nom OWNER TO nouveau_propriétaire" + +#~ msgid "" +#~ "ALTER INDEX name RENAME TO new_name\n" +#~ "ALTER INDEX name SET TABLESPACE tablespace_name\n" +#~ "ALTER INDEX name SET ( storage_parameter = value [, ... ] )\n" +#~ "ALTER INDEX name RESET ( storage_parameter [, ... ] )" +#~ msgstr "" +#~ "ALTER INDEX nom RENAME TO nouveau_nom\n" +#~ "ALTER INDEX nom SET TABLESPACE nom_tablespace\n" +#~ "ALTER INDEX nom SET ( paramètre_stockage = valeur [, ... ] )\n" +#~ "ALTER INDEX nom RESET ( paramètre_stockage [, ... ] )" + +#~ msgid "" +#~ "ALTER GROUP groupname ADD USER username [, ... ]\n" +#~ "ALTER GROUP groupname DROP USER username [, ... ]\n" +#~ "\n" +#~ "ALTER GROUP groupname RENAME TO newname" +#~ msgstr "" +#~ "ALTER GROUP nom_groupe ADD USER nom_utilisateur [, ... ]\n" +#~ "ALTER GROUP nom_groupe DROP USER nom_utilisateur [, ... ]\n" +#~ "\n" +#~ "ALTER GROUP nom_groupe RENAME TO nouveau_nom" + +#~ msgid "" +#~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" +#~ " action [ ... ] [ RESTRICT ]\n" +#~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" +#~ " RENAME TO new_name\n" +#~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" +#~ " OWNER TO new_owner\n" +#~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" +#~ " SET SCHEMA new_schema\n" +#~ "\n" +#~ "where action is one of:\n" +#~ "\n" +#~ " CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" +#~ " IMMUTABLE | STABLE | VOLATILE\n" +#~ " [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" +#~ " COST execution_cost\n" +#~ " ROWS result_rows\n" +#~ " SET configuration_parameter { TO | = } { value | DEFAULT }\n" +#~ " SET configuration_parameter FROM CURRENT\n" +#~ " RESET configuration_parameter\n" +#~ " RESET ALL" #~ msgstr "" -#~ "SET [ SESSION | LOCAL ] paramètre { TO | = } { valeur | 'valeur' | DEFAULT }\n" -#~ "SET [ SESSION | LOCAL ] TIME ZONE { zone_horaire | LOCAL | DEFAULT }" - -#~ msgid "SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }" -#~ msgstr "SET CONSTRAINTS { ALL | nom [, ...] } { DEFERRED | IMMEDIATE }" +#~ "ALTER FUNCTION nom ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] )\n" +#~ " action [, ... ] [ RESTRICT ]\n" +#~ "ALTER FUNCTION nom ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] )\n" +#~ " RENAME TO nouveau_nom\n" +#~ "ALTER FUNCTION nom ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] )\n" +#~ " OWNER TO nouveau_proprietaire\n" +#~ "ALTER FUNCTION nom ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] )\n" +#~ " SET SCHEMA nouveau_schema\n" +#~ "\n" +#~ "où action peut être :\n" +#~ "\n" +#~ " CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" +#~ " IMMUTABLE | STABLE | VOLATILE\n" +#~ " [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" +#~ " COST cout_execution\n" +#~ " ROWS lignes_resultats\n" +#~ " SET paramètre { TO | = } { valeur | DEFAULT }\n" +#~ " SET paramètre FROM CURRENT\n" +#~ " RESET paramètre\n" +#~ " RESET ALL" #~ msgid "" -#~ "SET [ SESSION | LOCAL ] ROLE rolename\n" -#~ "SET [ SESSION | LOCAL ] ROLE NONE\n" -#~ "RESET ROLE" +#~ "ALTER FOREIGN DATA WRAPPER name\n" +#~ " [ VALIDATOR valfunction | NO VALIDATOR ]\n" +#~ " [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ]) ]\n" +#~ "ALTER FOREIGN DATA WRAPPER name OWNER TO new_owner" #~ msgstr "" -#~ "SET [ SESSION | LOCAL ] ROLE nom_rôle\n" -#~ "SET [ SESSION | LOCAL ] ROLE NONE\n" -#~ "RESET ROLE" +#~ "ALTER FOREIGN DATA WRAPPER nom\n" +#~ " [ VALIDATOR fonction_validation | NO VALIDATOR ]\n" +#~ " [ OPTIONS ( [ ADD | SET | DROP ] option ['valeur'] [, ... ]) ]\n" +#~ "ALTER FOREIGN DATA WRAPPER nom OWNER TO nouveau_propriétaire" #~ msgid "" -#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION username\n" -#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT\n" -#~ "RESET SESSION AUTHORIZATION" +#~ "ALTER DOMAIN name\n" +#~ " { SET DEFAULT expression | DROP DEFAULT }\n" +#~ "ALTER DOMAIN name\n" +#~ " { SET | DROP } NOT NULL\n" +#~ "ALTER DOMAIN name\n" +#~ " ADD domain_constraint\n" +#~ "ALTER DOMAIN name\n" +#~ " DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n" +#~ "ALTER DOMAIN name\n" +#~ " OWNER TO new_owner \n" +#~ "ALTER DOMAIN name\n" +#~ " SET SCHEMA new_schema" #~ msgstr "" -#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION nom_utilisateur\n" -#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT\n" -#~ "RESET SESSION AUTHORIZATION" +#~ "ALTER DOMAIN nom\n" +#~ " { SET DEFAULT expression | DROP DEFAULT }\n" +#~ "ALTER DOMAIN nom\n" +#~ " { SET | DROP } NOT NULL\n" +#~ "ALTER DOMAIN nom\n" +#~ " ADD contrainte_domaine\n" +#~ "ALTER DOMAIN nom\n" +#~ " DROP CONSTRAINT nom_contrainte [ RESTRICT | CASCADE ]\n" +#~ "ALTER DOMAIN nom\n" +#~ " OWNER TO nouveau_propriétaire \n" +#~ "ALTER DOMAIN nom\n" +#~ " SET SCHEMA nouveau_schéma" #~ msgid "" -#~ "SET TRANSACTION transaction_mode [, ...]\n" -#~ "SET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode [, ...]\n" +#~ "ALTER DATABASE name [ [ WITH ] option [ ... ] ]\n" #~ "\n" -#~ "where transaction_mode is one of:\n" +#~ "where option can be:\n" #~ "\n" -#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n" -#~ " READ WRITE | READ ONLY" -#~ msgstr "" -#~ "SET TRANSACTION mode_transaction [, ...]\n" -#~ "SET SESSION CHARACTERISTICS AS TRANSACTION mode_transaction [, ...]\n" +#~ " CONNECTION LIMIT connlimit\n" #~ "\n" -#~ "où mode_transaction peut être :\n" +#~ "ALTER DATABASE name RENAME TO newname\n" #~ "\n" -#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ |\n" -#~ " READ COMMITTED | READ UNCOMMITTED }\n" -#~ " READ WRITE | READ ONLY" - -#~ msgid "" -#~ "SHOW name\n" -#~ "SHOW ALL" -#~ msgstr "" -#~ "SHOW nom\n" -#~ "SHOW ALL" - -#~ msgid "" -#~ "START TRANSACTION [ transaction_mode [, ...] ]\n" +#~ "ALTER DATABASE name OWNER TO new_owner\n" #~ "\n" -#~ "where transaction_mode is one of:\n" +#~ "ALTER DATABASE name SET TABLESPACE new_tablespace\n" #~ "\n" -#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n" -#~ " READ WRITE | READ ONLY" +#~ "ALTER DATABASE name SET configuration_parameter { TO | = } { value | DEFAULT }\n" +#~ "ALTER DATABASE name SET configuration_parameter FROM CURRENT\n" +#~ "ALTER DATABASE name RESET configuration_parameter\n" +#~ "ALTER DATABASE name RESET ALL" #~ msgstr "" -#~ "START TRANSACTION [ mode_transaction [, ...] ]\n" +#~ "ALTER DATABASE nom [ [ WITH ] option [ ... ] ]\n" #~ "\n" -#~ "où mode_transaction peut être :\n" +#~ "où option peut être:\n" #~ "\n" -#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ |\n" -#~ " READ COMMITTED | READ UNCOMMITTED }\n" -#~ " READ WRITE | READ ONLY" +#~ " CONNECTION LIMIT limite_connexion\n" +#~ "\n" +#~ "ALTER DATABASE nom RENAME TO nouveau_nom\n" +#~ "\n" +#~ "ALTER DATABASE nom OWNER TO nouveau_propriétaire\n" +#~ "\n" +#~ "ALTER DATABASE nom SET TABLESPACE nouveau_tablespace\n" +#~ "\n" +#~ "ALTER DATABASE nom SET paramètre_configuration { TO | = } { valeur | DEFAULT }\n" +#~ "ALTER DATABASE nom SET paramètre_configuration FROM CURRENT\n" +#~ "ALTER DATABASE nom RESET paramètre_configuration\n" +#~ "ALTER DATABASE nom RESET ALL" #~ msgid "" -#~ "TRUNCATE [ TABLE ] [ ONLY ] name [, ... ]\n" -#~ " [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]" +#~ "ALTER CONVERSION name RENAME TO newname\n" +#~ "ALTER CONVERSION name OWNER TO newowner" #~ msgstr "" -#~ "TRUNCATE [ TABLE ] [ ONLY ] nom [, ... ]\n" -#~ " [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]" - -#~ msgid "UNLISTEN { name | * }" -#~ msgstr "UNLISTEN { nom | * }" +#~ "ALTER CONVERSION nom RENAME TO nouveau_nom\n" +#~ "ALTER CONVERSION nom OWNER TO nouveau_propriétaire" #~ msgid "" -#~ "UPDATE [ ONLY ] table [ [ AS ] alias ]\n" -#~ " SET { column = { expression | DEFAULT } |\n" -#~ " ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...]\n" -#~ " [ FROM fromlist ]\n" -#~ " [ WHERE condition | WHERE CURRENT OF cursor_name ]\n" -#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" +#~ "ALTER AGGREGATE name ( type [ , ... ] ) RENAME TO new_name\n" +#~ "ALTER AGGREGATE name ( type [ , ... ] ) OWNER TO new_owner\n" +#~ "ALTER AGGREGATE name ( type [ , ... ] ) SET SCHEMA new_schema" #~ msgstr "" -#~ "UPDATE [ ONLY ] table [ [ AS ] alias ]\n" -#~ " SET { colonne = { expression | DEFAULT } |\n" -#~ " ( colonne [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...]\n" -#~ " [ FROM liste_from ]\n" -#~ " [ WHERE condition | WHERE CURRENT OF nom_curseur ]\n" -#~ " [ RETURNING * | expression_sortie [ [ AS ] nom_sortie ] [, ...] ]" +#~ "ALTER AGGREGATE nom ( type [ , ... ] ) RENAME TO nouveau_nom\n" +#~ "ALTER AGGREGATE nom ( type [ , ... ] ) OWNER TO nouveau_propriétaire\n" +#~ "ALTER AGGREGATE nom ( type [ , ... ] ) SET SCHEMA nouveau_schéma" -#~ msgid "" -#~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]\n" -#~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]" -#~ msgstr "" -#~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]\n" -#~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table [ (colonne [, ...] ) ] ]" +#~ msgid "ABORT [ WORK | TRANSACTION ]" +#~ msgstr "ABORT [ WORK | TRANSACTION ]" -#~ msgid "" -#~ "VALUES ( expression [, ...] ) [, ...]\n" -#~ " [ ORDER BY sort_expression [ ASC | DESC | USING operator ] [, ...] ]\n" -#~ " [ LIMIT { count | ALL } ]\n" -#~ " [ OFFSET start [ ROW | ROWS ] ]\n" -#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]" -#~ msgstr "" -#~ "VALUES ( expression [, ...] ) [, ...]\n" -#~ " [ ORDER BY expression_tri [ ASC | DESC | USING opérateur ] [, ...] ]\n" -#~ " [ LIMIT { total | ALL } ]\n" -#~ " [ OFFSET début [ ROW | ROWS ] ]\n" -#~ " [ FETCH { FIRST | NEXT } [ total ] { ROW | ROWS } ONLY ]" +#~ msgid "number" +#~ msgstr "numéro" -#~ msgid " \"%s\" IN %s %s" -#~ msgstr " \"%s\" DANS %s %s" +#~ msgid "rolename" +#~ msgstr "nom_rôle" -#~ msgid "(1 row)" -#~ msgid_plural "(%lu rows)" -#~ msgstr[0] "(1 ligne)" -#~ msgstr[1] "(%lu lignes)" +#~ msgid "Exclusion constraints:" +#~ msgstr "Contraintes d'exclusion :" -#~ 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 "define a new constraint trigger" +#~ msgstr "définir une nouvelle contrainte de déclenchement" -#~ 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 " as user \"%s\"" +#~ msgstr " comme utilisateur « %s »" -#~ 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 " at port \"%s\"" +#~ msgstr " sur le port « %s »" -#~ 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 " on host \"%s\"" +#~ msgstr " sur l'hôte « %s »" -#~ 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 "tablespace" +#~ msgstr "tablespace" -#~ 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 "new_column" +#~ msgstr "nouvelle_colonne" -#~ 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 "column" +#~ msgstr "colonne" -#~ 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 "data type" +#~ msgstr "type de données" -#~ 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 "contains support for command-line editing" +#~ msgstr "contient une gestion avancée de la ligne de commande" -#~ msgid "Copy, Large Object\n" -#~ msgstr "Copie, « Large Object »\n" +#~ msgid " --version output version information, then exit\n" +#~ msgstr " --version affiche la version, puis quitte\n" -#~ msgid "" -#~ "Welcome to %s %s (server %s), the PostgreSQL interactive terminal.\n" -#~ "\n" -#~ msgstr "" -#~ "Bienvenue dans %s %s (serveur %s), l'interface interactive de PostgreSQL.\n" -#~ "\n" +#~ msgid " --help show this help, then exit\n" +#~ msgstr " --help affiche cette aide, puis quitte\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 "\\copy: unexpected response (%d)\n" +#~ msgstr "\\copy : réponse inattendue (%d)\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 "\\copy: %s" +#~ msgstr "\\copy : %s" -#~ msgid "Access privileges for database \"%s\"" -#~ msgstr "Droits d'accès pour la base de données « %s »" +#~ msgid "\\%s: error\n" +#~ msgstr "\\%s : erreur\n" -#~ msgid "?%c? \"%s.%s\"" -#~ msgstr "?%c? « %s.%s »" +#~ msgid " \\l[+] list all databases\n" +#~ msgstr " \\l[+] affiche la liste des bases de données\n" -#~ msgid " \"%s\"" -#~ msgstr " « %s »" +#~ msgid "%s: pg_strdup: cannot duplicate null pointer (internal error)\n" +#~ msgstr "%s : pg_strdup : ne peut pas dupliquer le pointeur null (erreur interne)\n" -#~ msgid "ALTER VIEW name RENAME TO newname" -#~ msgstr "ALTER VIEW nom RENAME TO nouveau_nom" +#~ msgid "could not change directory to \"%s\"" +#~ msgstr "n'a pas pu accéder au répertoire « %s »" -#~ msgid "(No rows)\n" -#~ msgstr "(Aucune ligne)\n" +#~ msgid "input_data_type" +#~ msgstr "type_de_données_en_entrée" -#~ msgid " -?, --help show this help, then exit\n" -#~ msgstr " -?, --help affiche cette aide puis quitte\n" +#~ msgid "agg_type" +#~ msgstr "type_aggrégat" -#~ msgid "SSL connection (unknown cipher)\n" -#~ msgstr "Connexion SSL (chiffrement inconnu)\n" +#~ msgid "agg_name" +#~ msgstr "nom_d_agrégat" -#~ msgid "serialtype" -#~ msgstr "serialtype" +#~ msgid "could not get current user name: %s\n" +#~ msgstr "n'a pas pu obtenir le nom d'utilisateur courant : %s\n" + +#~ msgid "Showing only tuples." +#~ msgstr "Affichage des tuples seuls." + +#~ msgid "Showing locale-adjusted numeric output." +#~ msgstr "Affichage de la sortie numérique adaptée à la locale." + +#~ msgid "Watch every %lds\t%s" +#~ msgstr "Vérifier chaque %lds\t%s" diff --git a/src/bin/psql/po/it.po b/src/bin/psql/po/it.po index da0d24af27..b0583fb315 100644 --- a/src/bin/psql/po/it.po +++ b/src/bin/psql/po/it.po @@ -24,8 +24,8 @@ msgid "" msgstr "" "Project-Id-Version: psql (PostgreSQL) 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-04-17 00:14+0000\n" -"PO-Revision-Date: 2016-04-17 20:39+0100\n" +"POT-Creation-Date: 2017-05-22 15:43+0000\n" +"PO-Revision-Date: 2017-05-29 22:06+0100\n" "Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" "Language: it\n" @@ -34,7 +34,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-SourceCharset: utf-8\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.8.7.1\n" #: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 #, c-format @@ -72,7 +72,7 @@ msgid "pclose failed: %s" msgstr "pclose fallita: %s" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 -#: ../../common/fe_memutils.c:98 command.c:330 input.c:227 mainloop.c:80 +#: ../../common/fe_memutils.c:98 command.c:342 input.c:227 mainloop.c:80 #: mainloop.c:261 #, c-format msgid "out of memory\n" @@ -88,7 +88,7 @@ msgstr "impossibile duplicare il puntatore nullo (errore interno)\n" msgid "could not look up effective user ID %ld: %s" msgstr "ID utente effettivo %ld non trovato: %s" -#: ../../common/username.c:47 command.c:287 +#: ../../common/username.c:47 command.c:299 msgid "user does not exist" msgstr "l'utente non esiste" @@ -139,22 +139,22 @@ msgid_plural "(%lu rows)" msgstr[0] "(%lu riga)" msgstr[1] "(%lu righe)" -#: ../../fe_utils/print.c:2906 +#: ../../fe_utils/print.c:2914 #, c-format msgid "Interrupted\n" msgstr "Interrotto\n" -#: ../../fe_utils/print.c:2970 +#: ../../fe_utils/print.c:2978 #, 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:3010 +#: ../../fe_utils/print.c:3018 #, 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:3259 +#: ../../fe_utils/print.c:3267 #, c-format msgid "invalid output format (internal error): %d" msgstr "il formato di output non è valido (errore interno): %d" @@ -164,250 +164,250 @@ msgstr "il formato di output non è valido (errore interno): %d" msgid "skipping recursive expansion of variable \"%s\"\n" msgstr "espansione ricorsiva della variabile \"%s\" evitata\n" -#: command.c:128 +#: command.c:129 #, c-format msgid "Invalid command \\%s. Try \\? for help.\n" msgstr "Comando errato \\%s. Prova \\? per la guida.\n" -#: command.c:130 +#: command.c:131 #, c-format msgid "invalid command \\%s\n" msgstr "comando errato \\%s\n" -#: command.c:141 +#: command.c:142 #, c-format msgid "\\%s: extra argument \"%s\" ignored\n" msgstr "\\%s: parametro in eccesso \"%s\" ignorato\n" -#: command.c:285 +#: command.c:297 #, c-format msgid "could not get home directory for user ID %ld: %s\n" msgstr "directory home non trovata per l'ID utente %ld: %s\n" -#: command.c:303 +#: command.c:315 #, c-format msgid "\\%s: could not change directory to \"%s\": %s\n" msgstr "\\%s: spostamento della directory a \"%s\" fallito: %s\n" -#: command.c:318 common.c:548 common.c:606 common.c:1139 +#: command.c:330 common.c:553 common.c:611 common.c:1144 #, c-format msgid "You are currently not connected to a database.\n" msgstr "Al momento non sei connesso ad un database.\n" -#: command.c:343 +#: command.c:355 #, 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:346 +#: command.c:358 #, 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:559 command.c:629 command.c:725 command.c:1557 +#: command.c:574 command.c:647 command.c:746 command.c:1584 #, c-format msgid "no query buffer\n" msgstr "Nessun buffer query\n" -#: command.c:592 command.c:3408 +#: command.c:607 command.c:3547 #, c-format msgid "invalid line number: %s\n" msgstr "numero di riga non valido: \"%s\"\n" -#: command.c:623 +#: command.c:640 #, c-format -msgid "The server (version %d.%d) does not support editing function source.\n" -msgstr "Il server (versione %d.%d) non supporta la modifica dei sorgenti delle funzioni.\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" -#: command.c:703 command.c:771 +#: command.c:721 command.c:792 msgid "No changes" msgstr "Nessuna modifica" -#: command.c:719 +#: command.c:739 #, c-format -msgid "The server (version %d.%d) does not support editing view definitions.\n" -msgstr "Il server (versione %d.%d) non supporta la modifica della definizione delle viste.\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" -#: command.c:825 +#: command.c:846 #, c-format msgid "%s: invalid encoding name or conversion procedure not found\n" msgstr "%s: nome codifica errato oppure non esiste una procedura di conversione\n" -#: command.c:850 command.c:1897 command.c:3510 common.c:152 common.c:199 -#: common.c:492 common.c:1185 common.c:1210 common.c:1311 copy.c:489 -#: copy.c:699 large_obj.c:156 large_obj.c:191 large_obj.c:253 +#: command.c:871 command.c:1962 command.c:3649 common.c:153 common.c:200 +#: common.c:497 common.c:1190 common.c:1218 common.c:1319 copy.c:489 copy.c:709 +#: large_obj.c:156 large_obj.c:191 large_obj.c:253 #, c-format msgid "%s" msgstr "%s" -#: command.c:854 +#: command.c:875 msgid "out of memory" msgstr "memoria esaurita" -#: command.c:857 -msgid "There was no previous error." +#: command.c:878 +msgid "There is no previous error." msgstr "Non c'è un errore precedente." -#: command.c:951 command.c:1001 command.c:1015 command.c:1032 command.c:1139 -#: command.c:1303 command.c:1537 command.c:1568 +#: command.c:972 command.c:1022 command.c:1036 command.c:1053 command.c:1160 +#: command.c:1324 command.c:1564 command.c:1595 #, c-format msgid "\\%s: missing required argument\n" msgstr "\\%s: parametro richiesto mancante\n" -#: command.c:1064 +#: command.c:1085 msgid "Query buffer is empty." msgstr "Il buffer query è vuoto." -#: command.c:1074 +#: command.c:1095 msgid "Enter new password: " msgstr "Inserire la nuova password: " -#: command.c:1075 +#: command.c:1096 msgid "Enter it again: " msgstr "Conferma password: " -#: command.c:1079 +#: command.c:1100 #, c-format msgid "Passwords didn't match.\n" msgstr "Le password non corrispondono.\n" -#: command.c:1097 +#: command.c:1118 #, c-format msgid "Password encryption failed.\n" msgstr "Criptazione password fallita.\n" -#: command.c:1168 command.c:1284 command.c:1542 +#: command.c:1189 command.c:1305 command.c:1569 #, c-format msgid "\\%s: error while setting variable\n" msgstr "\\%s: errore durante l'assegnamento della variabile\n" -#: command.c:1231 +#: command.c:1252 msgid "Query buffer reset (cleared)." msgstr "Buffer query resettato (svuotato)." -#: command.c:1243 +#: command.c:1264 #, c-format msgid "Wrote history to file \"%s\".\n" msgstr "Storia scritta nel file \"%s\".\n" -#: command.c:1308 +#: command.c:1329 #, c-format msgid "\\%s: environment variable name must not contain \"=\"\n" msgstr "\\%s: il nome della variabile d'ambiente non deve contenere \"=\"\n" -#: command.c:1350 +#: command.c:1373 #, c-format -msgid "The server (version %d.%d) does not support showing function source.\n" -msgstr "Il server (versione %d.%d) non supporta mostrare i sorgenti delle funzioni.\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" -#: command.c:1356 +#: command.c:1380 #, c-format msgid "function name is required\n" msgstr "il nome della funzione è richiesto\n" -#: command.c:1429 +#: command.c:1455 #, c-format -msgid "The server (version %d.%d) does not support showing view definitions.\n" -msgstr "Il server (versione %d.%d) non supporta la visualizzazione della definizione delle viste.\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" -#: command.c:1435 +#: command.c:1462 #, c-format msgid "view name is required\n" msgstr "il nome della vista è richiesto\n" -#: command.c:1522 +#: command.c:1549 msgid "Timing is on." msgstr "Controllo tempo attivato" -#: command.c:1524 +#: command.c:1551 msgid "Timing is off." msgstr "Controllo tempo disattivato." -#: command.c:1586 command.c:1606 command.c:2240 command.c:2243 command.c:2246 -#: command.c:2252 command.c:2254 command.c:2262 command.c:2272 command.c:2281 -#: command.c:2295 command.c:2312 command.c:2370 common.c:67 copy.c:332 -#: copy.c:392 copy.c:405 psqlscanslash.l:692 psqlscanslash.l:703 -#: psqlscanslash.l:713 +#: command.c:1613 command.c:1633 command.c:2311 command.c:2314 command.c:2317 +#: command.c:2323 command.c:2325 command.c:2333 command.c:2343 command.c:2352 +#: command.c:2366 command.c:2383 command.c:2441 common.c:68 copy.c:332 +#: copy.c:392 copy.c:405 psqlscanslash.l:711 psqlscanslash.l:722 +#: psqlscanslash.l:732 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" -#: command.c:1700 +#: command.c:1727 #, c-format msgid "+ opt(%d) = |%s|\n" msgstr "+ opt(%d) = |%s|\n" -#: command.c:1726 startup.c:207 +#: command.c:1753 startup.c:207 msgid "Password: " msgstr "Password: " -#: command.c:1731 startup.c:209 +#: command.c:1758 startup.c:209 #, c-format msgid "Password for user %s: " msgstr "Inserisci la password per l'utente %s: " -#: command.c:1778 +#: command.c:1809 #, c-format msgid "All connection parameters must be supplied because no database connection exists\n" msgstr "Tutti i parametri di connessione devono essere forniti perché non esiste alcuna connessione di database\n" -#: command.c:1901 +#: command.c:1966 #, c-format msgid "Previous connection kept\n" msgstr "Connessione precedente mantenuta\n" -#: command.c:1905 +#: command.c:1970 #, c-format msgid "\\connect: %s" msgstr "\\connect: %s" -#: command.c:1937 +#: command.c:2006 #, 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:1940 +#: command.c:2009 #, 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:1944 +#: command.c:2013 #, 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:1978 +#: command.c:2046 #, c-format msgid "%s (%s, server %s)\n" msgstr "%s (%s, server %s)\n" -#: command.c:1986 +#: command.c:2054 #, c-format msgid "" -"WARNING: %s major version %d.%d, server major version %d.%d.\n" +"WARNING: %s major version %s, server major version %s.\n" " Some psql features might not work.\n" msgstr "" -"ATTENZIONE: versione maggiore %s %d.%d, versione maggiore server %d.%d.\n" -" Alcune caratteristiche di psql potrebbero non funzionare.\n" +"ATTENZIONE: versione maggiore %s %s, versione maggiore server %s.\n" +" Alcune caratteristiche di psql potrebbero non funzionare.\n" -#: command.c:2020 +#: command.c:2091 #, c-format msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n" msgstr "connessione SSL (protocollo: %s, cifrario: %s, bit: %s, compressione: %s)\n" -#: command.c:2021 command.c:2022 command.c:2023 +#: command.c:2092 command.c:2093 command.c:2094 msgid "unknown" msgstr "sconosciuto" -#: command.c:2024 help.c:46 +#: command.c:2095 help.c:46 msgid "off" msgstr "disattivato" -#: command.c:2024 help.c:46 +#: command.c:2095 help.c:46 msgid "on" msgstr "attivato" -#: command.c:2044 +#: command.c:2115 #, c-format msgid "" "WARNING: Console code page (%u) differs from Windows code page (%u)\n" @@ -419,239 +419,239 @@ msgstr "" " funzionare correttamente. Vedi le pagine di riferimento\n" " psql \"Note per utenti Windows\" per i dettagli.\n" -#: command.c:2129 +#: command.c:2200 #, c-format msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number\n" msgstr "la variabile di ambiente PSQL_EDITOR_LINENUMBER_ARG deve specificare un numero di riga\n" -#: command.c:2158 +#: command.c:2229 #, c-format msgid "could not start editor \"%s\"\n" msgstr "avvio dell'editor \"%s\" fallito\n" -#: command.c:2160 +#: command.c:2231 #, c-format msgid "could not start /bin/sh\n" msgstr "avvio di /bin/sh fallito\n" -#: command.c:2198 +#: command.c:2269 #, c-format msgid "could not locate temporary directory: %s\n" msgstr "directory temporanea non trovata: %s\n" -#: command.c:2225 +#: command.c:2296 #, c-format msgid "could not open temporary file \"%s\": %s\n" msgstr "apertura del file temporaneo \"%s\" fallita: %s\n" -#: command.c:2499 +#: command.c:2570 #, c-format msgid "\\pset: allowed formats are unaligned, aligned, wrapped, html, asciidoc, latex, latex-longtable, troff-ms\n" msgstr "\\pset: i formati consentiti sono unaligned, aligned, wrapped, html, asciidoc, latex, latex-longtable, troff-ms\n" -#: command.c:2518 +#: command.c:2589 #, c-format msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" msgstr "\\pset: gli stili di linea permessi sono ascii, old-ascii, unicode\n" -#: command.c:2534 +#: command.c:2605 #, c-format msgid "\\pset: allowed Unicode border line styles are single, double\n" msgstr "\\pset: gli stili riga Unicode dei bordi consentiti sono single, double\n" -#: command.c:2549 +#: command.c:2620 #, c-format msgid "\\pset: allowed Unicode column line styles are single, double\n" msgstr "\\pset: gli stili riga Unicode delle colonne consentiti sono single, double\n" -#: command.c:2564 +#: command.c:2635 #, c-format msgid "\\pset: allowed Unicode header line styles are single, double\n" msgstr "\\pset: gli stili riga Unicode delle intestazioni consentiti sono single, double\n" -#: command.c:2716 command.c:2895 +#: command.c:2787 command.c:2966 #, c-format msgid "\\pset: unknown option: %s\n" msgstr "\\pset: opzione sconosciuta: %s\n" -#: command.c:2734 +#: command.c:2805 #, c-format msgid "Border style is %d.\n" msgstr "Lo stile del bordo è %d.\n" -#: command.c:2740 +#: command.c:2811 #, c-format msgid "Target width is unset.\n" msgstr "La lunghezza di destinazione non è impostata.\n" -#: command.c:2742 +#: command.c:2813 #, c-format msgid "Target width is %d.\n" msgstr "La larghezza di destinazione è %d.\n" -#: command.c:2749 +#: command.c:2820 #, c-format msgid "Expanded display is on.\n" msgstr "La visualizzazione espansa è attiva.\n" -#: command.c:2751 +#: command.c:2822 #, c-format msgid "Expanded display is used automatically.\n" msgstr "La visualizzazione espansa è usata automaticamente.\n" -#: command.c:2753 +#: command.c:2824 #, c-format msgid "Expanded display is off.\n" msgstr "La visualizzazione espansa è disattivata.\n" -#: command.c:2760 command.c:2768 +#: command.c:2831 command.c:2839 #, c-format msgid "Field separator is zero byte.\n" msgstr "Il separatore di campo è il byte zero.\n" -#: command.c:2762 +#: command.c:2833 #, c-format msgid "Field separator is \"%s\".\n" msgstr "Il separatore di campo è \"%s\".\n" -#: command.c:2775 +#: command.c:2846 #, c-format msgid "Default footer is on.\n" msgstr "Il piè di pagina di default è attivo.\n" -#: command.c:2777 +#: command.c:2848 #, c-format msgid "Default footer is off.\n" msgstr "Il piè di pagina di default è disattivato.\n" -#: command.c:2783 +#: command.c:2854 #, c-format msgid "Output format is %s.\n" msgstr "Il formato di output è %s.\n" -#: command.c:2789 +#: command.c:2860 #, c-format msgid "Line style is %s.\n" msgstr "Lo stile della linea è %s.\n" -#: command.c:2796 +#: command.c:2867 #, c-format msgid "Null display is \"%s\".\n" msgstr "La visualizzazione dei null è \"%s\".\n" -#: command.c:2804 +#: command.c:2875 #, c-format msgid "Locale-adjusted numeric output is on.\n" msgstr "La correzione dell'output numerico secondo il locale è attiva.\n" -#: command.c:2806 +#: command.c:2877 #, c-format msgid "Locale-adjusted numeric output is off.\n" msgstr "La correzione dell'output numerico secondo il locale è disattivata.\n" -#: command.c:2813 +#: command.c:2884 #, c-format msgid "Pager is used for long output.\n" msgstr "Usa la paginazione per risultati estesi.\n" -#: command.c:2815 +#: command.c:2886 #, c-format msgid "Pager is always used.\n" msgstr "Paginazione sempre attiva.\n" -#: command.c:2817 +#: command.c:2888 #, c-format msgid "Pager usage is off.\n" msgstr "Paginazione disattivata.\n" -#: command.c:2823 +#: command.c:2894 #, 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:2833 command.c:2843 +#: command.c:2904 command.c:2914 #, c-format msgid "Record separator is zero byte.\n" msgstr "Il separatore di record è il byte zero.\n" -#: command.c:2835 +#: command.c:2906 #, c-format msgid "Record separator is .\n" msgstr "Il separatore di record è .\n" -#: command.c:2837 +#: command.c:2908 #, c-format msgid "Record separator is \"%s\".\n" msgstr "Il separatore di record è \"%s\".\n" -#: command.c:2850 +#: command.c:2921 #, c-format msgid "Table attributes are \"%s\".\n" msgstr "Gli attributi di tabella sono \"%s\".\n" -#: command.c:2853 +#: command.c:2924 #, c-format msgid "Table attributes unset.\n" msgstr "Gli attributi di tabella non sono specificati.\n" -#: command.c:2860 +#: command.c:2931 #, c-format msgid "Title is \"%s\".\n" msgstr "Il titolo è \"%s\".\n" -#: command.c:2862 +#: command.c:2933 #, c-format msgid "Title is unset.\n" msgstr "Il titolo non è assegnato.\n" -#: command.c:2869 +#: command.c:2940 #, c-format msgid "Tuples only is on.\n" msgstr "La visualizzazione dei soli dati è attiva.\n" -#: command.c:2871 +#: command.c:2942 #, c-format msgid "Tuples only is off.\n" msgstr "La visualizzazione dei soli dati è disattivata.\n" -#: command.c:2877 +#: command.c:2948 #, c-format msgid "Unicode border line style is \"%s\".\n" msgstr "Lo stile riga Unicode dei bordi è \"%s\".\n" -#: command.c:2883 +#: command.c:2954 #, c-format msgid "Unicode column line style is \"%s\".\n" msgstr "Lo stile riga Unicode delle colonne è \"%s\".\n" -#: command.c:2889 +#: command.c:2960 #, c-format msgid "Unicode header line style is \"%s\".\n" msgstr "Lo stile riga Unicode delle intestazioni è \"%s\".\n" -#: command.c:3049 +#: command.c:3120 #, c-format msgid "\\!: failed\n" msgstr "\\!: fallita\n" -#: command.c:3073 common.c:654 +#: command.c:3145 common.c:659 #, c-format msgid "\\watch cannot be used with an empty query\n" msgstr "\\watch non può essere usato con una query vuota\n" -#: command.c:3110 +#: command.c:3186 #, c-format msgid "%s\t%s (every %gs)\n" msgstr "%s\t%s (ogni %gs)\n" -#: command.c:3113 +#: command.c:3189 #, c-format msgid "%s (every %gs)\n" msgstr "%s (ogni %gs)\n" -#: command.c:3167 command.c:3174 common.c:554 common.c:561 common.c:1168 +#: command.c:3243 command.c:3250 common.c:559 common.c:566 common.c:1173 #, c-format msgid "" "********* QUERY **********\n" @@ -664,82 +664,87 @@ msgstr "" "**************************\n" "\n" -#: command.c:3325 +#: command.c:3442 #, c-format -msgid "%s.%s is not a view\n" -msgstr "%s.%s non è una vista\n" +msgid "\"%s.%s\" is not a view\n" +msgstr "\"%s.%s\" non è una vista\n" -#: common.c:137 +#: command.c:3458 #, c-format -msgid "can't escape without active connection\n" +msgid "could not parse reloptions array\n" +msgstr "interpretazione dell'array reloptions fallita\n" + +#: common.c:138 +#, c-format +msgid "cannot escape without active connection\n" msgstr "non è possibile effettuare l'escape senza una connessione attiva\n" -#: common.c:366 +#: common.c:371 #, c-format msgid "connection to server was lost\n" msgstr "connessione al server persa\n" -#: common.c:370 +#: common.c:375 #, c-format msgid "The connection to the server was lost. Attempting reset: " msgstr "Connessione al server persa. Tentativo di reset: " -#: common.c:375 +#: common.c:380 #, c-format msgid "Failed.\n" msgstr "Fallito.\n" -#: common.c:382 +#: common.c:387 #, c-format msgid "Succeeded.\n" msgstr "Riuscito.\n" -#: common.c:482 common.c:931 common.c:1103 +#: common.c:487 common.c:936 common.c:1108 #, c-format msgid "unexpected PQresultStatus: %d\n" msgstr "PQresultStatus imprevisto: %d\n" -#: common.c:661 +#: common.c:666 #, c-format msgid "\\watch cannot be used with COPY\n" msgstr "\\watch non può essere usato con COPY\n" -#: common.c:666 +#: common.c:671 #, c-format msgid "unexpected result status for \\watch\n" msgstr "risultato imprevisto per \\watch\n" -#: common.c:677 common.c:1327 +#: common.c:682 common.c:1335 #, c-format msgid "Time: %.3f ms\n" msgstr "Tempo: %.3f ms\n" -#: common.c:695 +#: common.c:700 #, 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:698 +#: common.c:703 #, 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:756 +#: common.c:761 #, c-format msgid "no rows returned for \\gset\n" msgstr "nessuna riga restituita per \\gset\n" -#: common.c:761 +#: common.c:766 #, c-format msgid "more than one row returned for \\gset\n" msgstr "più di una riga restituita per \\gset\n" -#: common.c:787 +#: common.c:792 #, c-format msgid "could not set variable \"%s\"\n" msgstr "impostazione della variabile \"%s\" fallita\n" -#: common.c:1148 +#: common.c:1153 #, c-format msgid "" "***(Single step mode: verify command)*******************************************\n" @@ -750,17 +755,17 @@ msgstr "" "%s\n" "***(premi invio per procedere oppure digita x ed invio per annullare)***********\n" -#: common.c:1201 +#: common.c:1208 #, c-format -msgid "The server (version %d.%d) does not support savepoints for ON_ERROR_ROLLBACK.\n" -msgstr "Questa versione (%d.%d) del server non supporta savepoint per ON_ERROR_ROLLBACK..\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" -#: common.c:1256 +#: common.c:1264 #, c-format msgid "STATEMENT: %s\n" msgstr "COMANDO: %s\n" -#: common.c:1299 +#: common.c:1307 #, c-format msgid "unexpected transaction status (%d)\n" msgstr "stato della transazione imprevisto (%d)\n" @@ -817,53 +822,98 @@ msgstr "annullata dall'utente" #: copy.c:542 msgid "" "Enter data to be copied followed by a newline.\n" -"End with a backslash and a period on a line by itself." +"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." +"Terminare con un backslash ed un punto su una singola riga, o un segnale EOF." #: copy.c:671 msgid "aborted because of read failure" msgstr "interrotto a causa di lettura non riuscita" -#: copy.c:695 +#: copy.c:705 msgid "trying to exit copy mode" msgstr "tentativo di uscita dalla modalità copy" -#: describe.c:71 describe.c:264 describe.c:496 describe.c:626 describe.c:769 -#: describe.c:886 describe.c:956 describe.c:2931 describe.c:3136 -#: describe.c:3226 describe.c:3471 describe.c:3608 describe.c:3837 -#: describe.c:3909 describe.c:3920 describe.c:3979 describe.c:4387 -#: describe.c:4467 +#: crosstabview.c:125 +#, c-format +msgid "\\crosstabview: statement did not return a result set\n" +msgstr "\\crosstabview: l'istruzione non ha restituito dati\n" + +#: crosstabview.c:131 +#, c-format +msgid "\\crosstabview: query must return at least three columns\n" +msgstr "\\crosstabview: la query deve restituire almeno tre colonne\n" + +#: crosstabview.c:158 +#, c-format +msgid "\\crosstabview: vertical and horizontal headers must be different columns\n" +msgstr "\\crosstabview: le intestazioni verticali ed orizzontali devono essere in colonne diverse\n" + +#: crosstabview.c:174 +#, c-format +msgid "\\crosstabview: data column must be specified when query returns more than three columns\n" +msgstr "\\crosstabview: la colonna dei dati deve essere specificata quando la query restituisce più di tre colonne\n" + +#: crosstabview.c:230 +#, c-format +msgid "\\crosstabview: maximum number of columns (%d) exceeded\n" +msgstr "\\crosstabview: numero massimo di colonne (%d) superato\n" + +#: crosstabview.c:399 +#, c-format +msgid "\\crosstabview: query result contains multiple data values for row \"%s\", column \"%s\"\n" +msgstr "\\crosstabview: i risultati della query contengono più di un valore per la riga \"%s\", colonna \"%s\"\n" + +#: crosstabview.c:647 +#, c-format +msgid "\\crosstabview: column number %d is out of range 1..%d\n" +msgstr "\\crosstabview: il numero di colonna %d è al di fuori dell'intervallo 1..%d\n" + +#: crosstabview.c:672 +#, c-format +msgid "\\crosstabview: ambiguous column name: \"%s\"\n" +msgstr "\\crosstabview: nome di colonna ambiguo: \"%s\"\n" + +#: crosstabview.c:680 +#, c-format +msgid "\\crosstabview: column name not found: \"%s\"\n" +msgstr "\\crosstabview: colonna non trovata: \"%s\"\n" + +#: describe.c:71 describe.c:340 describe.c:597 describe.c:727 describe.c:870 +#: describe.c:990 describe.c:1060 describe.c:3035 describe.c:3240 +#: describe.c:3330 describe.c:3578 describe.c:3718 describe.c:3950 +#: describe.c:4025 describe.c:4036 describe.c:4098 describe.c:4518 +#: describe.c:4601 msgid "Schema" msgstr "Schema" -#: describe.c:72 describe.c:156 describe.c:164 describe.c:265 describe.c:497 -#: describe.c:627 describe.c:688 describe.c:770 describe.c:957 describe.c:2932 -#: describe.c:3058 describe.c:3137 describe.c:3227 describe.c:3306 -#: describe.c:3472 describe.c:3536 describe.c:3609 describe.c:3838 -#: describe.c:3910 describe.c:3921 describe.c:3980 describe.c:4169 -#: describe.c:4250 describe.c:4465 +#: describe.c:72 describe.c:160 describe.c:226 describe.c:234 describe.c:341 +#: describe.c:598 describe.c:728 describe.c:789 describe.c:871 describe.c:1061 +#: describe.c:3036 describe.c:3162 describe.c:3241 describe.c:3331 +#: describe.c:3410 describe.c:3579 describe.c:3643 describe.c:3719 +#: describe.c:3951 describe.c:4026 describe.c:4037 describe.c:4099 +#: describe.c:4291 describe.c:4375 describe.c:4599 msgid "Name" msgstr "Nome" -#: describe.c:73 describe.c:277 describe.c:323 describe.c:340 +#: describe.c:73 describe.c:353 describe.c:399 describe.c:416 msgid "Result data type" msgstr "Tipo dato del risultato" -#: describe.c:81 describe.c:94 describe.c:98 describe.c:278 describe.c:324 -#: describe.c:341 +#: describe.c:81 describe.c:94 describe.c:98 describe.c:354 describe.c:400 +#: describe.c:417 msgid "Argument data types" msgstr "Tipo dato dei parametri" -#: describe.c:105 describe.c:187 describe.c:370 describe.c:545 describe.c:642 -#: describe.c:713 describe.c:959 describe.c:1572 describe.c:2732 -#: describe.c:2965 describe.c:3089 describe.c:3163 describe.c:3236 -#: describe.c:3319 describe.c:3387 describe.c:3479 describe.c:3545 -#: describe.c:3610 describe.c:3746 describe.c:3786 describe.c:3854 -#: describe.c:3913 describe.c:3922 describe.c:3981 describe.c:4195 -#: describe.c:4272 describe.c:4401 describe.c:4468 large_obj.c:289 -#: large_obj.c:299 +#: describe.c:105 describe.c:170 describe.c:257 describe.c:462 describe.c:646 +#: describe.c:743 describe.c:814 describe.c:1063 describe.c:1676 +#: describe.c:2836 describe.c:3069 describe.c:3193 describe.c:3267 +#: describe.c:3340 describe.c:3423 describe.c:3491 describe.c:3586 +#: describe.c:3652 describe.c:3720 describe.c:3856 describe.c:3896 +#: describe.c:3967 describe.c:4029 describe.c:4038 describe.c:4100 +#: describe.c:4317 describe.c:4397 describe.c:4532 describe.c:4602 +#: large_obj.c:289 large_obj.c:299 msgid "Description" msgstr "Descrizione" @@ -871,869 +921,912 @@ msgstr "Descrizione" msgid "List of aggregate functions" msgstr "Lista delle funzione aggregate" -#: describe.c:144 +#: describe.c:147 #, c-format -msgid "The server (version %d.%d) does not support tablespaces.\n" -msgstr "Il server (versione %d.%d) non supporta i tablespace.\n" +msgid "The server (version %s) does not support access methods.\n" +msgstr "Il server (versione %s) non supporta metodi di accesso.\n" + +#: describe.c:161 +msgid "Index" +msgstr "Indice" -#: describe.c:157 describe.c:165 describe.c:367 describe.c:535 describe.c:689 -#: describe.c:885 describe.c:2941 describe.c:3062 describe.c:3308 -#: describe.c:3537 describe.c:4170 describe.c:4251 large_obj.c:288 +#: describe.c:162 describe.c:360 describe.c:405 describe.c:422 describe.c:877 +#: describe.c:999 describe.c:1645 describe.c:3044 describe.c:3242 +#: describe.c:4394 +msgid "Type" +msgstr "Tipo" + +#: describe.c:169 describe.c:4296 +msgid "Handler" +msgstr "Handler" + +#: describe.c:188 +msgid "List of access methods" +msgstr "Lista dei metodi di accesso" + +#: describe.c:213 +#, c-format +msgid "The server (version %s) does not support tablespaces.\n" +msgstr "Il server (versione %s) non supporta i tablespace.\n" + +#: describe.c:227 describe.c:235 describe.c:450 describe.c:636 describe.c:790 +#: describe.c:989 describe.c:3045 describe.c:3166 describe.c:3412 +#: describe.c:3644 describe.c:4292 describe.c:4376 large_obj.c:288 msgid "Owner" msgstr "Proprietario" -#: describe.c:158 describe.c:166 +#: describe.c:228 describe.c:236 msgid "Location" msgstr "Posizione" -#: describe.c:177 describe.c:2543 +#: describe.c:247 describe.c:2647 msgid "Options" msgstr "Opzioni" -#: describe.c:182 describe.c:508 describe.c:705 describe.c:2957 -#: describe.c:2961 +#: describe.c:252 describe.c:609 describe.c:806 describe.c:3061 describe.c:3065 msgid "Size" msgstr "Dimensione" -#: describe.c:204 +#: describe.c:274 msgid "List of tablespaces" msgstr "Lista dei tablespace" -#: describe.c:241 +#: describe.c:314 #, c-format msgid "\\df only takes [antwS+] as options\n" msgstr "\\df accetta come opzione solo [antwS+]\n" -#: describe.c:247 +#: describe.c:322 #, c-format -msgid "\\df does not take a \"w\" option with server version %d.%d\n" -msgstr "\\df non accetta un'opzione \"w\" con la versione del server %d.%d\n" +msgid "\\df does not take a \"w\" option with server version %s\n" +msgstr "\\df non accetta un'opzione \"w\" con il server in versione %s\n" #. translator: "agg" is short for "aggregate" -#: describe.c:280 describe.c:326 describe.c:343 +#: describe.c:356 describe.c:402 describe.c:419 msgid "agg" msgstr "aggr" -#: describe.c:281 +#: describe.c:357 msgid "window" msgstr "finestra" -#: describe.c:282 describe.c:327 describe.c:344 describe.c:1093 +#: describe.c:358 describe.c:403 describe.c:420 describe.c:1197 msgid "trigger" msgstr "trigger" -#: describe.c:283 describe.c:328 describe.c:345 +#: describe.c:359 describe.c:404 describe.c:421 msgid "normal" msgstr "normale" -#: describe.c:284 describe.c:329 describe.c:346 describe.c:776 describe.c:895 -#: describe.c:1541 describe.c:2940 describe.c:3138 describe.c:4269 -msgid "Type" -msgstr "Tipo" - -#: describe.c:360 -msgid "definer" -msgstr "definitore" - -#: describe.c:361 -msgid "invoker" -msgstr "invocatore" - -#: describe.c:362 -msgid "Security" -msgstr "Sicurezza" - -#: describe.c:363 +#: describe.c:432 msgid "immutable" msgstr "immutabile" -#: describe.c:364 +#: describe.c:433 msgid "stable" msgstr "stabile" -#: describe.c:365 +#: describe.c:434 msgid "volatile" msgstr "volatile" -#: describe.c:366 +#: describe.c:435 msgid "Volatility" msgstr "Volatilità" -#: describe.c:368 +#: describe.c:443 +msgid "restricted" +msgstr "ristretta" + +#: describe.c:444 +msgid "safe" +msgstr "sicura" + +#: describe.c:445 +msgid "unsafe" +msgstr "non sicura" + +#: describe.c:446 +msgid "Parallel" +msgstr "Parallela" + +#: describe.c:451 +msgid "definer" +msgstr "definitore" + +#: describe.c:452 +msgid "invoker" +msgstr "invocatore" + +#: describe.c:453 +msgid "Security" +msgstr "Sicurezza" + +#: describe.c:460 msgid "Language" msgstr "Linguaggio" -#: describe.c:369 +#: describe.c:461 msgid "Source code" msgstr "Codice sorgente" -#: describe.c:467 +#: describe.c:560 msgid "List of functions" msgstr "Lista delle funzioni" -#: describe.c:507 +#: describe.c:608 msgid "Internal name" msgstr "Nome interno" -#: describe.c:529 +#: describe.c:630 msgid "Elements" msgstr "Elementi" -#: describe.c:585 +#: describe.c:686 msgid "List of data types" msgstr "Lista dei tipi di dati" -#: describe.c:628 +#: describe.c:729 msgid "Left arg type" msgstr "Argomento sinistro" -#: describe.c:629 +#: describe.c:730 msgid "Right arg type" msgstr "Argomento destro" -#: describe.c:630 +#: describe.c:731 msgid "Result type" msgstr "Tipo di risultato" -#: describe.c:635 describe.c:3378 describe.c:3745 +#: describe.c:736 describe.c:3482 describe.c:3855 msgid "Function" msgstr "Funzione" -#: describe.c:660 +#: describe.c:761 msgid "List of operators" msgstr "Lista degli operatori" -#: describe.c:690 +#: describe.c:791 msgid "Encoding" msgstr "Codifica" -#: describe.c:695 describe.c:3473 +#: describe.c:796 describe.c:3580 msgid "Collate" msgstr "Ordinamento" -#: describe.c:696 describe.c:3474 +#: describe.c:797 describe.c:3581 msgid "Ctype" msgstr "Ctype" -#: describe.c:709 +#: describe.c:810 msgid "Tablespace" msgstr "Tablespace" -#: describe.c:731 +#: describe.c:832 msgid "List of databases" msgstr "Lista dei database" -#: describe.c:771 describe.c:888 describe.c:2933 +#: describe.c:872 describe.c:992 describe.c:3037 msgid "table" msgstr "tabella" -#: describe.c:772 describe.c:2934 +#: describe.c:873 describe.c:3038 msgid "view" msgstr "vista" -#: describe.c:773 describe.c:2935 +#: describe.c:874 describe.c:3039 msgid "materialized view" msgstr "vista materializzata" -#: describe.c:774 describe.c:890 describe.c:2937 +#: describe.c:875 describe.c:994 describe.c:3041 msgid "sequence" msgstr "sequenza" -#: describe.c:775 describe.c:2939 +#: describe.c:876 describe.c:3043 msgid "foreign table" msgstr "tabella esterna" -#: describe.c:787 +#: describe.c:888 msgid "Column privileges" msgstr "Privilegi di colonna" -#: describe.c:818 +#: describe.c:919 msgid "Policies" msgstr "Regole di sicurezza" -#: describe.c:844 describe.c:4612 describe.c:4616 +#: describe.c:945 describe.c:4749 describe.c:4753 msgid "Access privileges" msgstr "Privilegi di accesso" -#: describe.c:873 +#: describe.c:976 #, c-format -msgid "The server (version %d.%d) does not support altering default privileges.\n" -msgstr "Il server (versione %d.%d) non supporta la modifica dei privilegi di default.\n" +msgid "The server (version %s) does not support altering default privileges.\n" +msgstr "Il server (versione %s) non supporta la modifica dei privilegi di default.\n" -#: describe.c:892 +#: describe.c:996 msgid "function" msgstr "funzione" -#: describe.c:894 +#: describe.c:998 msgid "type" msgstr "tipo" -#: describe.c:918 +#: describe.c:1022 msgid "Default access privileges" msgstr "Privilegi di accesso di default" -#: describe.c:958 +#: describe.c:1062 msgid "Object" msgstr "Oggetto" -#: describe.c:972 +#: describe.c:1076 msgid "table constraint" msgstr "vincolo di tabella" -#: describe.c:994 +#: describe.c:1098 msgid "domain constraint" msgstr "vincolo di dominio" -#: describe.c:1022 +#: describe.c:1126 msgid "operator class" msgstr "classe operatori" -#: describe.c:1051 +#: describe.c:1155 msgid "operator family" msgstr "famiglia operatori" -#: describe.c:1073 +#: describe.c:1177 msgid "rule" msgstr "regola" -#: describe.c:1115 +#: describe.c:1219 msgid "Object descriptions" msgstr "Descrizioni oggetti" -#: describe.c:1169 +#: describe.c:1273 #, c-format msgid "Did not find any relation named \"%s\".\n" msgstr "Non ho trovato alcuna relazione di nome \"%s\".\n" -#: describe.c:1379 +#: describe.c:1483 #, c-format msgid "Did not find any relation with OID %s.\n" msgstr "Non ho trovato nessuna relazione con OID %s.\n" -#: describe.c:1485 +#: describe.c:1589 #, c-format msgid "Unlogged table \"%s.%s\"" msgstr "Tabella non loggata \"%s.%s\"" -#: describe.c:1488 +#: describe.c:1592 #, c-format msgid "Table \"%s.%s\"" msgstr "Tabella \"%s.%s\"" -#: describe.c:1492 +#: describe.c:1596 #, c-format msgid "View \"%s.%s\"" msgstr "Vista \"%s.%s\"" -#: describe.c:1497 +#: describe.c:1601 #, c-format msgid "Unlogged materialized view \"%s.%s\"" msgstr "Vista materializzata non loggata \"%s.%s\"" -#: describe.c:1500 +#: describe.c:1604 #, c-format msgid "Materialized view \"%s.%s\"" msgstr "Vista materializzata \"%s.%s\"" -#: describe.c:1504 +#: describe.c:1608 #, c-format msgid "Sequence \"%s.%s\"" msgstr "Sequenza \"%s.%s\"" -#: describe.c:1509 +#: describe.c:1613 #, c-format msgid "Unlogged index \"%s.%s\"" msgstr "Indice non loggato \"%s.%s\"" -#: describe.c:1512 +#: describe.c:1616 #, c-format msgid "Index \"%s.%s\"" msgstr "Indice \"%s.%s\"" -#: describe.c:1517 +#: describe.c:1621 #, c-format msgid "Special relation \"%s.%s\"" msgstr "relazione speciale \"%s.%s\"" -#: describe.c:1521 +#: describe.c:1625 #, c-format msgid "TOAST table \"%s.%s\"" msgstr "Tabella TOAST \"%s.%s\"" -#: describe.c:1525 +#: describe.c:1629 #, c-format msgid "Composite type \"%s.%s\"" msgstr "Tipo composito \"%s.%s\"" -#: describe.c:1529 +#: describe.c:1633 #, c-format msgid "Foreign table \"%s.%s\"" msgstr "Tabella esterna \"%s.%s\"" -#: describe.c:1540 +#: describe.c:1644 msgid "Column" msgstr "Colonna" -#: describe.c:1549 +#: describe.c:1653 msgid "Modifiers" msgstr "Modificatori" -#: describe.c:1554 +#: describe.c:1658 msgid "Value" msgstr "Valore" -#: describe.c:1557 +#: describe.c:1661 msgid "Definition" msgstr "Definizione" -#: describe.c:1560 describe.c:4190 describe.c:4271 describe.c:4339 -#: describe.c:4400 +#: describe.c:1664 describe.c:4312 describe.c:4396 describe.c:4467 +#: describe.c:4531 msgid "FDW Options" msgstr "Opzioni FDW" -#: describe.c:1564 +#: describe.c:1668 msgid "Storage" msgstr "Memorizzazione" -#: describe.c:1567 +#: describe.c:1671 msgid "Stats target" msgstr "Dest. stat." -#: describe.c:1617 +#: describe.c:1721 #, c-format msgid "collate %s" msgstr "ordinamento %s" -#: describe.c:1625 +#: describe.c:1729 msgid "not null" msgstr "non null" #. translator: default values of column definitions -#: describe.c:1635 +#: describe.c:1739 #, c-format msgid "default %s" msgstr "preimpostato %s" -#: describe.c:1750 +#: describe.c:1854 msgid "primary key, " msgstr "chiave primaria, " -#: describe.c:1752 +#: describe.c:1856 msgid "unique, " msgstr "univoco, " -#: describe.c:1758 +#: describe.c:1862 #, c-format msgid "for table \"%s.%s\"" msgstr "per la tabella \"%s.%s\"" -#: describe.c:1762 +#: describe.c:1866 #, c-format msgid ", predicate (%s)" msgstr ", predicato (%s)" -#: describe.c:1765 +#: describe.c:1869 msgid ", clustered" msgstr ", raggruppato" -#: describe.c:1768 +#: describe.c:1872 msgid ", invalid" msgstr ", non valido" -#: describe.c:1771 +#: describe.c:1875 msgid ", deferrable" msgstr ", deferibile" -#: describe.c:1774 +#: describe.c:1878 msgid ", initially deferred" msgstr ", inizialmente deferito" -#: describe.c:1777 +#: describe.c:1881 msgid ", replica identity" msgstr ", identità di replica" -#: describe.c:1812 +#: describe.c:1916 #, c-format msgid "Owned by: %s" msgstr "Proprietario: %s" -#: describe.c:1872 +#: describe.c:1976 msgid "Indexes:" msgstr "Indici:" -#: describe.c:1956 +#: describe.c:2060 msgid "Check constraints:" msgstr "Vincoli di controllo:" -#: describe.c:1987 +#: describe.c:2091 msgid "Foreign-key constraints:" msgstr "Vincoli di integrità referenziale" -#: describe.c:2018 +#: describe.c:2122 msgid "Referenced by:" msgstr "Referenziato da:" -#: describe.c:2063 +#: describe.c:2167 msgid "Policies:" msgstr "Regole di sicurezza:" -#: describe.c:2066 +#: describe.c:2170 msgid "Policies (forced row security enabled):" msgstr "Regole (sicurezza per riga forzata abilitata):" -#: describe.c:2069 +#: describe.c:2173 msgid "Policies (row security enabled): (none)" msgstr "Regole (sicurezza per riga abilitata): (nessuna)" -#: describe.c:2072 +#: describe.c:2176 msgid "Policies (forced row security enabled): (none)" msgstr "Regole (sicurezza per riga forzata abilitata): (nessuna)" -#: describe.c:2075 +#: describe.c:2179 msgid "Policies (row security disabled):" msgstr "Regole (sicurezza per riga disabilitata):" -#: describe.c:2175 describe.c:2225 +#: describe.c:2279 describe.c:2329 msgid "Rules:" msgstr "Regole:" -#: describe.c:2178 +#: describe.c:2282 msgid "Disabled rules:" msgstr "Regole disabilitate:" -#: describe.c:2181 +#: describe.c:2285 msgid "Rules firing always:" msgstr "Regole sempre abilitate:" -#: describe.c:2184 +#: describe.c:2288 msgid "Rules firing on replica only:" msgstr "Regole abilitate solo su replica:" -#: describe.c:2208 +#: describe.c:2312 msgid "View definition:" msgstr "Definizione vista:" -#: describe.c:2343 +#: describe.c:2447 msgid "Triggers:" msgstr "Trigger:" -#: describe.c:2347 +#: describe.c:2451 msgid "Disabled user triggers:" msgstr "Trigger utente disabilitati:" -#: describe.c:2349 +#: describe.c:2453 msgid "Disabled triggers:" msgstr "Trigger disabilitati:" -#: describe.c:2352 +#: describe.c:2456 msgid "Disabled internal triggers:" msgstr "Trigger interni disabilitati:" -#: describe.c:2355 +#: describe.c:2459 msgid "Triggers firing always:" msgstr "Trigger sempre abilitati:" -#: describe.c:2358 +#: describe.c:2462 msgid "Triggers firing on replica only:" msgstr "Trigger abilitati solo su replica." -#: describe.c:2437 +#: describe.c:2519 +#, c-format +msgid "Server: %s" +msgstr "Server: %s" + +#: describe.c:2527 +#, c-format +msgid "FDW Options: (%s)" +msgstr "Opzioni FDW: (%s)" + +#: describe.c:2541 msgid "Inherits" msgstr "Eredita" -#: describe.c:2476 +#: describe.c:2580 #, 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:2483 +#: describe.c:2587 msgid "Child tables" msgstr "Tabelle figlio" -#: describe.c:2505 +#: describe.c:2609 #, c-format msgid "Typed table of type: %s" msgstr "Tabella di tipo: %s" -#: describe.c:2519 +#: describe.c:2623 msgid "Replica Identity" msgstr "Identità di replica" -#: describe.c:2532 +#: describe.c:2636 msgid "Has OIDs: yes" msgstr "Ha OID: sì" -#: describe.c:2620 +#: describe.c:2724 #, 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:2632 +#: describe.c:2736 #, c-format msgid ", tablespace \"%s\"" msgstr ", tablespace \"%s\"" -#: describe.c:2725 +#: describe.c:2829 msgid "List of roles" msgstr "Lista dei ruoli" -#: describe.c:2727 +#: describe.c:2831 msgid "Role name" msgstr "Nome ruolo" -#: describe.c:2728 +#: describe.c:2832 msgid "Attributes" msgstr "Attributi" -#: describe.c:2729 +#: describe.c:2833 msgid "Member of" msgstr "Membro di" -#: describe.c:2740 +#: describe.c:2844 msgid "Superuser" msgstr "Superutente" -#: describe.c:2743 +#: describe.c:2847 msgid "No inheritance" msgstr "Nessuna ereditarietà" -#: describe.c:2746 +#: describe.c:2850 msgid "Create role" msgstr "Crea ruoli" -#: describe.c:2749 +#: describe.c:2853 msgid "Create DB" msgstr "Crea DB" -#: describe.c:2752 +#: describe.c:2856 msgid "Cannot login" msgstr "Login non possibile" -#: describe.c:2756 +#: describe.c:2860 msgid "Replication" msgstr "Replica" -#: describe.c:2760 +#: describe.c:2864 msgid "Bypass RLS" msgstr "Scavalca RLS" -#: describe.c:2769 +#: describe.c:2873 msgid "No connections" msgstr "Niente connessioni" -#: describe.c:2771 +#: describe.c:2875 #, c-format msgid "%d connection" msgid_plural "%d connections" msgstr[0] "%d connessione" msgstr[1] "%d connessioni" -#: describe.c:2781 +#: describe.c:2885 msgid "Password valid until " msgstr "Password valida fino a " -#: describe.c:2837 +#: describe.c:2941 msgid "Role" msgstr "Ruolo" -#: describe.c:2838 +#: describe.c:2942 msgid "Database" msgstr "Database" -#: describe.c:2839 +#: describe.c:2943 msgid "Settings" msgstr "Impostazioni" -#: describe.c:2849 +#: describe.c:2953 #, c-format msgid "No per-database role settings support in this server version.\n" msgstr "Questa versione del server non supporta l'impostazione dei ruoli per database.\n" -#: describe.c:2860 +#: describe.c:2964 #, c-format msgid "No matching settings found.\n" msgstr "Nessuna impostazione corrispondente trovata.\n" -#: describe.c:2862 +#: describe.c:2966 #, c-format msgid "No settings found.\n" msgstr "Nessuna impostazione trovata.\n" -#: describe.c:2867 +#: describe.c:2971 msgid "List of settings" msgstr "Lista delle impostazioni" -#: describe.c:2936 +#: describe.c:3040 msgid "index" msgstr "indice" -#: describe.c:2938 +#: describe.c:3042 msgid "special" msgstr "speciale" -#: describe.c:2946 describe.c:4388 +#: describe.c:3050 describe.c:4519 msgid "Table" msgstr "Tabella" -#: describe.c:3022 +#: describe.c:3126 #, c-format msgid "No matching relations found.\n" msgstr "Nessuna relazione corrispondente trovata.\n" -#: describe.c:3024 +#: describe.c:3128 #, c-format msgid "No relations found.\n" msgstr "Nessuna relazione trovata.\n" -#: describe.c:3029 +#: describe.c:3133 msgid "List of relations" msgstr "Lista delle relazioni" -#: describe.c:3066 +#: describe.c:3170 msgid "Trusted" msgstr "Fidato" -#: describe.c:3074 +#: describe.c:3178 msgid "Internal Language" msgstr "Linguaggio interno" -#: describe.c:3075 +#: describe.c:3179 msgid "Call Handler" msgstr "Gestore Chiamate" -#: describe.c:3076 describe.c:4177 +#: describe.c:3180 describe.c:4299 msgid "Validator" msgstr "Validatore" -#: describe.c:3079 +#: describe.c:3183 msgid "Inline Handler" msgstr "Handler Inline" -#: describe.c:3107 +#: describe.c:3211 msgid "List of languages" msgstr "Lista dei linguaggi" -#: describe.c:3151 +#: describe.c:3255 msgid "Modifier" msgstr "Modificatore" -#: describe.c:3152 +#: describe.c:3256 msgid "Check" msgstr "Controllo" -#: describe.c:3194 +#: describe.c:3298 msgid "List of domains" msgstr "Lista dei domini" -#: describe.c:3228 +#: describe.c:3332 msgid "Source" msgstr "Sorgente" -#: describe.c:3229 +#: describe.c:3333 msgid "Destination" msgstr "Destinazione" -#: describe.c:3230 describe.c:3379 +#: describe.c:3334 describe.c:3483 msgid "no" msgstr "no" -#: describe.c:3230 describe.c:3381 +#: describe.c:3334 describe.c:3485 msgid "yes" msgstr "sì" -#: describe.c:3231 +#: describe.c:3335 msgid "Default?" msgstr "Predefinito?" -#: describe.c:3268 +#: describe.c:3372 msgid "List of conversions" msgstr "Lista delle conversioni" -#: describe.c:3307 +#: describe.c:3411 msgid "Event" msgstr "Evento" -#: describe.c:3309 +#: describe.c:3413 msgid "enabled" msgstr "abilitato" -#: describe.c:3310 +#: describe.c:3414 msgid "replica" msgstr "replica" -#: describe.c:3311 +#: describe.c:3415 msgid "always" msgstr "sempre" -#: describe.c:3312 +#: describe.c:3416 msgid "disabled" msgstr "disabilitato" -#: describe.c:3313 +#: describe.c:3417 msgid "Enabled" msgstr "Abilitato" -#: describe.c:3314 +#: describe.c:3418 msgid "Procedure" msgstr "Procedura" -#: describe.c:3315 +#: describe.c:3419 msgid "Tags" msgstr "Tag" -#: describe.c:3334 +#: describe.c:3438 msgid "List of event triggers" msgstr "Lista di trigger di evento" -#: describe.c:3376 +#: describe.c:3480 msgid "Source type" msgstr "Tipo di partenza" -#: describe.c:3377 +#: describe.c:3481 msgid "Target type" msgstr "Tipo di arrivo" -#: describe.c:3380 +#: describe.c:3484 msgid "in assignment" msgstr "in assegnazione" -#: describe.c:3382 +#: describe.c:3486 msgid "Implicit?" msgstr "Implicito?" -#: describe.c:3433 +#: describe.c:3537 msgid "List of casts" msgstr "Lista delle conversioni di tipo" -#: describe.c:3459 +#: describe.c:3565 #, c-format -msgid "The server (version %d.%d) does not support collations.\n" -msgstr "Il server (versione %d.%d) non supporta gli ordinamenti.\n" +msgid "The server (version %s) does not support collations.\n" +msgstr "Il server (versione %s) non supporta gli ordinamenti.\n" -#: describe.c:3509 +#: describe.c:3616 msgid "List of collations" msgstr "Lista degli ordinamenti" -#: describe.c:3568 +#: describe.c:3675 msgid "List of schemas" msgstr "Lista degli schemi" -#: describe.c:3591 describe.c:3826 describe.c:3894 describe.c:3962 +#: describe.c:3700 describe.c:3938 describe.c:4009 describe.c:4080 #, c-format -msgid "The server (version %d.%d) does not support full text search.\n" -msgstr "Il server (versione %d.%d) non supporta la ricerca full text.\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" -#: describe.c:3625 +#: describe.c:3735 msgid "List of text search parsers" msgstr "Lista degli analizzatori di ricerca resto" -#: describe.c:3668 +#: describe.c:3778 #, c-format msgid "Did not find any text search parser named \"%s\".\n" msgstr "Non ho trovato alcun analizzatore di ricerca testo chiamato \"%s\".\n" -#: describe.c:3743 +#: describe.c:3853 msgid "Start parse" msgstr "Inizio analisi" -#: describe.c:3744 +#: describe.c:3854 msgid "Method" msgstr "Metodo" -#: describe.c:3748 +#: describe.c:3858 msgid "Get next token" msgstr "Ottiene il token successivo" -#: describe.c:3750 +#: describe.c:3860 msgid "End parse" msgstr "Fine analisi" -#: describe.c:3752 +#: describe.c:3862 msgid "Get headline" msgstr "Ottiene intestazione" -#: describe.c:3754 +#: describe.c:3864 msgid "Get token types" msgstr "Ottieni i tipi token" -#: describe.c:3764 +#: describe.c:3874 #, c-format msgid "Text search parser \"%s.%s\"" msgstr "Analizzatore di ricerca teso \"%s.%s\"" -#: describe.c:3766 +#: describe.c:3876 #, c-format msgid "Text search parser \"%s\"" msgstr "Analizzatore di ricerca testo \"%s\"" -#: describe.c:3785 +#: describe.c:3895 msgid "Token name" msgstr "Nome token" -#: describe.c:3796 +#: describe.c:3906 #, c-format msgid "Token types for parser \"%s.%s\"" msgstr "Tipi token per l'analizzatore \"%s.%s\"" -#: describe.c:3798 +#: describe.c:3908 #, c-format msgid "Token types for parser \"%s\"" msgstr "Tipi token per l'analizzatore \"%s\"" -#: describe.c:3848 +#: describe.c:3961 msgid "Template" msgstr "Modello" -#: describe.c:3849 +#: describe.c:3962 msgid "Init options" msgstr "Opzioni iniziali:" -#: describe.c:3871 +#: describe.c:3984 msgid "List of text search dictionaries" msgstr "Lista dei dizionari di ricerca testo" -#: describe.c:3911 +#: describe.c:4027 msgid "Init" msgstr "Init" -#: describe.c:3912 +#: describe.c:4028 msgid "Lexize" msgstr "Lexize" -#: describe.c:3939 +#: describe.c:4055 msgid "List of text search templates" msgstr "Lista dei modelli di ricerca testo" -#: describe.c:3996 +#: describe.c:4115 msgid "List of text search configurations" msgstr "Lista delle configurazioni di ricerca testo" -#: describe.c:4040 +#: describe.c:4159 #, c-format msgid "Did not find any text search configuration named \"%s\".\n" msgstr "Non trovata alcuna configurazione di ricerca testo chiamata \"%s\".\n" -#: describe.c:4106 +#: describe.c:4225 msgid "Token" msgstr "Token" -#: describe.c:4107 +#: describe.c:4226 msgid "Dictionaries" msgstr "Dizionari" -#: describe.c:4118 +#: describe.c:4237 #, c-format msgid "Text search configuration \"%s.%s\"" msgstr "Configurazione di ricerca testo \"%s.%s\"" -#: describe.c:4121 +#: describe.c:4240 #, c-format msgid "Text search configuration \"%s\"" msgstr "Configurazione di ricerca testo \"%s\"" -#: describe.c:4125 +#: describe.c:4244 #, c-format msgid "" "\n" @@ -1742,7 +1835,7 @@ msgstr "" "\n" "Analizzatore \"%s.%s\"" -#: describe.c:4128 +#: describe.c:4247 #, c-format msgid "" "\n" @@ -1751,86 +1844,82 @@ msgstr "" "\n" "Analizzatore: \"%s\"" -#: describe.c:4160 +#: describe.c:4281 #, c-format -msgid "The server (version %d.%d) does not support foreign-data wrappers.\n" -msgstr "Il server (versione %d.%d) non supporta i wrapper di dati esterni.\n" - -#: describe.c:4174 -msgid "Handler" -msgstr "Handler" +msgid "The server (version %s) does not support foreign-data wrappers.\n" +msgstr "Il server (versione %s) non supporta i wrapper di dati esterni.\n" -#: describe.c:4217 +#: describe.c:4339 msgid "List of foreign-data wrappers" msgstr "Lista dei wrapper di dati esterni" -#: describe.c:4240 +#: describe.c:4364 #, c-format -msgid "The server (version %d.%d) does not support foreign servers.\n" -msgstr "Il server (versione %d.%d) non supporta server esterni.\n" +msgid "The server (version %s) does not support foreign servers.\n" +msgstr "Il server (versione %s) non supporta server esterni.\n" -#: describe.c:4252 +#: describe.c:4377 msgid "Foreign-data wrapper" msgstr "Wrapper per dati esterni" -#: describe.c:4270 describe.c:4466 +#: describe.c:4395 describe.c:4600 msgid "Version" msgstr "Versione" -#: describe.c:4296 +#: describe.c:4421 msgid "List of foreign servers" msgstr "Lista dei server esterni" -#: describe.c:4319 +#: describe.c:4446 #, c-format -msgid "The server (version %d.%d) does not support user mappings.\n" -msgstr "IL server (versione %d.%d) non supporta la mappatura di utenti.\n" +msgid "The server (version %s) does not support user mappings.\n" +msgstr "Il server (versione %s) non supporta la mappatura di utenti.\n" -#: describe.c:4328 describe.c:4389 +#: describe.c:4456 describe.c:4520 msgid "Server" msgstr "Server" -#: describe.c:4329 +#: describe.c:4457 msgid "User name" msgstr "Nome utente" -#: describe.c:4354 +#: describe.c:4482 msgid "List of user mappings" msgstr "Lista delle mappature degli utenti" -#: describe.c:4377 +#: describe.c:4507 #, c-format -msgid "The server (version %d.%d) does not support foreign tables.\n" -msgstr "Il server (versione %d.%d) non supporta tabelle esterne.\n" +msgid "The server (version %s) does not support foreign tables.\n" +msgstr "Il server (versione %s) non supporta tabelle esterne.\n" -#: describe.c:4429 +#: describe.c:4560 msgid "List of foreign tables" msgstr "Lista delle tabelle esterne" -#: describe.c:4452 describe.c:4506 +#: describe.c:4585 describe.c:4642 #, c-format -msgid "The server (version %d.%d) does not support extensions.\n" -msgstr "Il server (versione %d.%d) non supporta le estensioni.\n" +msgid "The server (version %s) does not support extensions.\n" +msgstr "Il server (versione %s) non supporta le estensioni.\n" -#: describe.c:4483 +#: describe.c:4617 msgid "List of installed extensions" msgstr "Lista delle estensioni installate" -#: describe.c:4533 +#: describe.c:4670 #, c-format msgid "Did not find any extension named \"%s\".\n" msgstr "Non ho trovato alcuna estensione nominata \"%s\".\n" -#: describe.c:4536 +#: describe.c:4673 #, c-format msgid "Did not find any extensions.\n" msgstr "Non ho trovato alcuna estensione.\n" -#: describe.c:4580 +#: describe.c:4717 msgid "Object Description" msgstr "Descrizione Oggetto" -#: describe.c:4589 +#: describe.c:4726 #, c-format msgid "Objects in extension \"%s\"" msgstr "Oggetti nell'estensione \"%s\"" @@ -1849,7 +1938,7 @@ msgstr "" "psql è il terminale interattivo per PostgreSQL.\n" "\n" -#: help.c:75 help.c:332 help.c:366 help.c:393 +#: help.c:75 help.c:333 help.c:367 help.c:394 #, c-format msgid "Usage:\n" msgstr "Utilizzo:\n" @@ -2335,221 +2424,226 @@ msgstr " \\da[S] [MODELLO] elenca le funzioni di aggregazione\n" #: help.c:218 #, c-format +msgid " \\dA[+] [PATTERN] list access methods\n" +msgstr " \\dA[+] [MODELLO] elenca i metodi di accesso\n" + +#: help.c:219 +#, c-format msgid " \\db[+] [PATTERN] list tablespaces\n" msgstr " \\db[+] [MODELLO] elenca i tablespace\n" -#: help.c:219 +#: help.c:220 #, c-format msgid " \\dc[S+] [PATTERN] list conversions\n" msgstr " \\dc[S+] [MODELLO] elenca le conversioni di codifica\n" -#: help.c:220 +#: help.c:221 #, c-format msgid " \\dC[+] [PATTERN] list casts\n" msgstr " \\dC[+] [MODELLO] elenca le conversioni di tipo\n" -#: help.c:221 +#: help.c:222 #, c-format msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n" msgstr " \\dd[S] [MODELLO] mostra la descrizione di oggetti non elencati altrove\n" -#: help.c:222 +#: help.c:223 #, c-format msgid " \\ddp [PATTERN] list default privileges\n" msgstr " \\ddp [MODELLO] elenca i privilegi predefiniti\n" -#: help.c:223 +#: help.c:224 #, c-format msgid " \\dD[S+] [PATTERN] list domains\n" msgstr " \\dD[S+] [MODELLO] elenca i domini\n" -#: help.c:224 +#: help.c:225 #, c-format msgid " \\det[+] [PATTERN] list foreign tables\n" msgstr " \\det[+] [MODELLO] elenca le tabelle esterne\n" -#: help.c:225 +#: help.c:226 #, c-format msgid " \\des[+] [PATTERN] list foreign servers\n" msgstr " \\des[+] [MODELLO] elenca i server esterni\n" -#: help.c:226 +#: help.c:227 #, c-format msgid " \\deu[+] [PATTERN] list user mappings\n" msgstr " \\deu[+] [MODELLO] elenca le mappature degli utenti\n" -#: help.c:227 +#: help.c:228 #, c-format msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" msgstr " \\dew[+] [MODELLO] elenca i wrapper di dati esterni\n" -#: help.c:228 +#: help.c:229 #, c-format msgid " \\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions\n" msgstr " \\df[antw][S+] [MOD] elenca le funzioni [solo aggr/normali/trigger/finestra]\n" -#: help.c:229 +#: help.c:230 #, c-format msgid " \\dF[+] [PATTERN] list text search configurations\n" msgstr " \\dF[+] [MODELLO] elenca le configurazioni di ricerca testo\n" -#: help.c:230 +#: help.c:231 #, c-format msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" msgstr " \\dFd[+] [MODELLO] elenca i dizionari di ricerca testo\n" -#: help.c:231 +#: help.c:232 #, c-format msgid " \\dFp[+] [PATTERN] list text search parsers\n" msgstr " \\dFp[+] [MODELLO] elenca gli analizzatori di ricerca testo\n" -#: help.c:232 +#: help.c:233 #, c-format msgid " \\dFt[+] [PATTERN] list text search templates\n" msgstr " \\dFt[+] [MODELLO] elenca i modelli di ricerca di testo\n" -#: help.c:233 +#: help.c:234 #, c-format msgid " \\dg[S+] [PATTERN] list roles\n" msgstr " \\dg[S+] [MODELLO] elenca i ruoli\n" -#: help.c:234 +#: help.c:235 #, c-format msgid " \\di[S+] [PATTERN] list indexes\n" msgstr " \\di[S+] [MODELLO] elenca gli indici\n" -#: help.c:235 +#: help.c:236 #, c-format msgid " \\dl list large objects, same as \\lo_list\n" msgstr " \\dl elenca i large object, stesso risultato di \\lo_list\n" -#: help.c:236 +#: help.c:237 #, c-format msgid " \\dL[S+] [PATTERN] list procedural languages\n" msgstr " \\dL[S+] [MODELLO] elenca i linguaggi procedurali\n" -#: help.c:237 +#: help.c:238 #, c-format msgid " \\dm[S+] [PATTERN] list materialized views\n" msgstr " \\dm[S+] [PATTERN] elenca le viste materializzate\n" -#: help.c:238 +#: help.c:239 #, c-format msgid " \\dn[S+] [PATTERN] list schemas\n" msgstr " \\dn[S+] [MODELLO] elenca gli schemi\n" -#: help.c:239 +#: help.c:240 #, c-format msgid " \\do[S] [PATTERN] list operators\n" msgstr " \\do[S] [MODELLO] elenca gli operatori\n" -#: help.c:240 +#: help.c:241 #, c-format msgid " \\dO[S+] [PATTERN] list collations\n" msgstr " \\dO[S+] [MODELLO] elenca gli ordinamenti\n" -#: help.c:241 +#: help.c:242 #, c-format msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n" msgstr "" " \\dp [MODELLO] elenca i permessi di accesso alla tabella, vista\n" " o sequenza\n" -#: help.c:242 +#: help.c:243 #, c-format msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n" msgstr " \\drds [MOD1 [MOD2]] elenca le impostazioni dei ruoli per database\n" -#: help.c:243 +#: help.c:244 #, c-format msgid " \\ds[S+] [PATTERN] list sequences\n" msgstr " \\ds[S+] [MODELLO] elenca le sequenze\n" -#: help.c:244 +#: help.c:245 #, c-format msgid " \\dt[S+] [PATTERN] list tables\n" msgstr " \\dt[S+] [MODELLO] elenca le tabelle\n" -#: help.c:245 +#: help.c:246 #, c-format msgid " \\dT[S+] [PATTERN] list data types\n" msgstr " \\dT[S+] [MODELLO] elenca i tipi di dato\n" -#: help.c:246 +#: help.c:247 #, c-format msgid " \\du[S+] [PATTERN] list roles\n" msgstr " \\du[S+] [MODELLO] elenca i ruoli\n" -#: help.c:247 +#: help.c:248 #, c-format msgid " \\dv[S+] [PATTERN] list views\n" msgstr " \\dv[S+] [MODELLO] elenca le viste\n" -#: help.c:248 +#: help.c:249 #, c-format msgid " \\dE[S+] [PATTERN] list foreign tables\n" msgstr " \\dE[S+] [MODELLO] elenca le tabelle esterne\n" -#: help.c:249 +#: help.c:250 #, c-format msgid " \\dx[+] [PATTERN] list extensions\n" msgstr " \\dx[+] [MODELLO] elenca le estensioni\n" -#: help.c:250 +#: help.c:251 #, c-format msgid " \\dy [PATTERN] list event triggers\n" msgstr " \\dy [PATTERN] elenca i trigger di evento\n" -#: help.c:251 +#: help.c:252 #, c-format msgid " \\l[+] [PATTERN] list databases\n" msgstr " \\l[+] [PATTERN] elenca i database\n" -#: help.c:252 +#: help.c:253 #, c-format msgid " \\sf[+] FUNCNAME show a function's definition\n" msgstr " \\sf[+] FUNZIONE mostra la definizione di una funzione\n" -#: help.c:253 +#: help.c:254 #, c-format msgid " \\sv[+] VIEWNAME show a view's definition\n" msgstr " \\sv[+] VISTA mostra la definizione di una vista\n" -#: help.c:254 +#: help.c:255 #, c-format msgid " \\z [PATTERN] same as \\dp\n" msgstr " \\z [MODELLO] uguale a \\dp\n" -#: help.c:257 +#: help.c:258 #, c-format msgid "Formatting\n" msgstr "Formattazione\n" -#: help.c:258 +#: help.c:259 #, c-format msgid " \\a toggle between unaligned and aligned output mode\n" msgstr " \\a alterna tra modalità di output allineata e disallineata\n" -#: help.c:259 +#: help.c:260 #, c-format msgid " \\C [STRING] set table title, or unset if none\n" msgstr "" " \\C [STRINGA] imposta nome tabella oppure elimina se la stringa\n" " non è specificata\n" -#: help.c:260 +#: help.c:261 #, c-format msgid " \\f [STRING] show or set field separator for unaligned query output\n" msgstr "" " \\f [STRINGA] mostra o imposta il separatore di campo per l'output\n" " query disallineato\n" -#: help.c:261 +#: help.c:262 #, c-format msgid " \\H toggle HTML output mode (currently %s)\n" msgstr " \\H cambia modalità HTML (attualmente %s)\n" -#: help.c:263 +#: help.c:264 #, c-format msgid "" " \\pset [NAME [VALUE]] set table output option\n" @@ -2562,31 +2656,31 @@ msgstr "" " numericlocale|recordsep|recordsep_zero|tuples_only|title|tableattr|pager|\n" " unicode_border_linestyle|unicode_column_linestyle|unicode_header_linestyle})\n" -#: help.c:267 +#: help.c:268 #, 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:269 +#: help.c:270 #, c-format 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:270 +#: help.c:271 #, 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:274 +#: help.c:275 #, c-format msgid "Connection\n" msgstr "Connessione\n" -#: help.c:276 +#: help.c:277 #, c-format msgid "" " \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" @@ -2595,7 +2689,7 @@ msgstr "" " \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" " connetti ad un nuovo database (attualmente \"%s\")\n" -#: help.c:280 +#: help.c:281 #, c-format msgid "" " \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" @@ -2604,78 +2698,78 @@ msgstr "" " \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" " connetti ad un nuovo database (nessuna connessione attiva)\n" -#: help.c:282 +#: help.c:283 #, c-format msgid " \\encoding [ENCODING] show or set client encoding\n" msgstr " \\encoding [CODIFICA] mostra o imposta la codifica del client\n" -#: help.c:283 +#: help.c:284 #, c-format msgid " \\password [USERNAME] securely change the password for a user\n" msgstr " \\password [UTENTE] cambia la password per un utente in sicurezza\n" -#: help.c:284 +#: help.c:285 #, c-format msgid " \\conninfo display information about current connection\n" msgstr " \\conninfo mostra le informazioni su la connessione corrente\n" -#: help.c:287 +#: help.c:288 #, c-format msgid "Operating System\n" msgstr "Sistema operativo\n" -#: help.c:288 +#: help.c:289 #, c-format msgid " \\cd [DIR] change the current working directory\n" msgstr " \\cd [DIRECTORY] cambia la directory di lavoro\n" -#: help.c:289 +#: help.c:290 #, c-format msgid " \\setenv NAME [VALUE] set or unset environment variable\n" msgstr " \\setenv NOME [VALORE] imposta o elimina una variabile d'ambiente\n" -#: help.c:290 +#: help.c:291 #, 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:292 +#: help.c:293 #, c-format msgid " \\! [COMMAND] execute command in shell or start interactive shell\n" msgstr "" " \\! [COMANDO] esegui un comando in una shell oppure avvia una shell\n" " interattiva\n" -#: help.c:295 +#: help.c:296 #, c-format msgid "Variables\n" msgstr "Variabili\n" -#: help.c:296 +#: help.c:297 #, c-format msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" msgstr " \\prompt [TESTO] NOME richiedi all'utente di impostare una variabile interna\n" -#: help.c:297 +#: help.c:298 #, c-format msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n" msgstr "" " \\set [NOME [VALORE]] imposta una variabile interna, oppure mostrale tutte\n" " se non sono specificati parametri\n" -#: help.c:298 +#: help.c:299 #, c-format msgid " \\unset NAME unset (delete) internal variable\n" msgstr " \\unset NOME cancella una variabile interna\n" -#: help.c:301 +#: help.c:302 #, c-format msgid "Large Objects\n" msgstr "Large Object\n" -#: help.c:302 +#: help.c:303 #, c-format msgid "" " \\lo_export LOBOID FILE\n" @@ -2688,7 +2782,7 @@ msgstr "" " \\lo_list\n" " \\lo_unlink LOBOID operazioni sui large object\n" -#: help.c:329 +#: help.c:330 #, c-format msgid "" "List of specially treated variables\n" @@ -2697,12 +2791,12 @@ msgstr "" "Lista delle variabili speciali\n" "\n" -#: help.c:331 +#: help.c:332 #, c-format msgid "psql variables:\n" msgstr "variabili psql:\n" -#: help.c:333 +#: help.c:334 #, c-format msgid "" " psql --set=NAME=VALUE\n" @@ -2713,12 +2807,12 @@ msgstr "" " oppure \\set NOME VALORE dentro psql\n" "\n" -#: help.c:335 +#: help.c:336 #, c-format msgid " AUTOCOMMIT if set, successful SQL commands are automatically committed\n" msgstr " AUTOCOMMIT se impostato, i comandi SQL riusciti sono salvati automaticamente\n" -#: help.c:336 +#: help.c:337 #, c-format msgid "" " COMP_KEYWORD_CASE determines the case used to complete SQL key words\n" @@ -2727,12 +2821,12 @@ msgstr "" " COMP_KEYWORD_CASE determina il caso usato per completare le parole chiave SQL\n" " [lower, upper, preserve-lower, preserve-upper]\n" -#: help.c:338 +#: help.c:339 #, c-format msgid " DBNAME the currently connected database name\n" msgstr " DBNAME il nome del database attualmente connesso\n" -#: help.c:339 +#: help.c:340 #, c-format msgid "" " ECHO controls what input is written to standard output\n" @@ -2741,7 +2835,7 @@ msgstr "" " ECHO controlla quale input è scritto su stardard output\n" " [all, errors, none, queries]\n" -#: help.c:341 +#: help.c:342 #, c-format msgid "" " ECHO_HIDDEN if set, display internal queries executed by backslash commands;\n" @@ -2750,12 +2844,12 @@ msgstr "" " ECHO_HIDDEN se impostato, mostra le query interne dei comandi backslash;\n" " se impostato a \"noexec\", mostrale solo senza eseguirle\n" -#: help.c:343 +#: help.c:344 #, c-format msgid " ENCODING current client character set encoding\n" msgstr " ENCODING codifica del set di caratteri del client corrente\n" -#: help.c:344 +#: help.c:345 #, c-format msgid "" " FETCH_COUNT the number of result rows to fetch and display at a time\n" @@ -2764,97 +2858,97 @@ msgstr "" " FETCH_COUNT il numero di righe del risultato da leggere e mostrare pr volta\n" " (default: 0=tutte)\n" -#: help.c:346 +#: help.c:347 #, c-format msgid " HISTCONTROL controls command history [ignorespace, ignoredups, ignoreboth]\n" msgstr " HISTCONTROL controlla la storia dei comandi [ignorespace, ignoredups, ignoreboth]\n" -#: help.c:347 +#: help.c:348 #, c-format msgid " HISTFILE file name used to store the command history\n" msgstr " HISTFILE nome del file usato per memorizzare la storia dei comandi\n" -#: help.c:348 +#: help.c:349 #, c-format msgid " HISTSIZE the number of commands to store in the command history\n" msgstr " HISTSIZE il numero di comandi da memorizzare nella storia dei comandi\n" -#: help.c:349 +#: help.c:350 #, c-format msgid " HOST the currently connected database server host\n" msgstr " HOST l'host del server del database attualmente connesso\n" -#: help.c:350 +#: help.c:351 #, c-format msgid " IGNOREEOF if unset, sending an EOF to interactive session terminates application\n" msgstr " IGNOREEOF se non impostato, invare un EOF alla sessione interattiva termina l'applicazione\n" -#: help.c:351 +#: help.c:352 #, c-format msgid " LASTOID value of the last affected OID\n" msgstr " LASTOID valore dell'ultimo OID interessato\n" -#: help.c:352 +#: help.c:353 #, c-format msgid " ON_ERROR_ROLLBACK if set, an error doesn't stop a transaction (uses implicit savepoints)\n" msgstr " ON_ERROR_ROLLBACK se impostato, un errore non termina una transazione (usa punti di salvataggio impliciti)\n" -#: help.c:353 +#: help.c:354 #, c-format msgid " ON_ERROR_STOP stop batch execution after error\n" msgstr " ON_ERROR_STOP termina l'esecuzione batch dopo un errore\n" -#: help.c:354 +#: help.c:355 #, c-format msgid " PORT server port of the current connection\n" msgstr " PORT porta del server attualmente connesso\n" -#: help.c:355 +#: help.c:356 #, c-format msgid " PROMPT1 specifies the standard psql prompt\n" msgstr " PROMPT1 specifica il prompt psql standard\n" -#: help.c:356 +#: help.c:357 #, c-format msgid " PROMPT2 specifies the prompt used when a statement continues from a previous line\n" msgstr " PROMPT2 specifica il prompt usato quando un'istruzione continua da una riga precedente\n" -#: help.c:357 +#: help.c:358 #, c-format msgid " PROMPT3 specifies the prompt used during COPY ... FROM STDIN\n" msgstr " PROMPT3 specifica il prompt usato in COPY ... FROM STDIN\n" -#: help.c:358 +#: help.c:359 #, c-format msgid " QUIET run quietly (same as -q option)\n" msgstr " QUIET esegui silenziosamente (come con l'opzione -q)\n" -#: help.c:359 +#: help.c:360 #, c-format msgid " SHOW_CONTEXT controls display of message context fields [never, errors, always]\n" msgstr " SHOW_CONTEXT controlla la visualizzazione dei campi di contesto dei messaggi [never, errors, always]\n" -#: help.c:360 +#: help.c:361 #, c-format msgid " SINGLELINE end of line terminates SQL command mode (same as -S option)\n" msgstr " SINGLELINE la fine riga termina i comandi SQL (come con l'opzione -S)\n" -#: help.c:361 +#: help.c:362 #, c-format msgid " SINGLESTEP single-step mode (same as -s option)\n" msgstr " SINGLESTEP modalità passo singolo (come con l'opzione -s)\n" -#: help.c:362 +#: help.c:363 #, c-format msgid " USER the currently connected database user\n" msgstr " USER l'utente database attualmente connesso\n" -#: help.c:363 +#: help.c:364 #, c-format msgid " VERBOSITY controls verbosity of error reports [default, verbose, terse]\n" msgstr " VERBOSITY controlla la loquacità della visualizzazione degli errori [default, verbose, terse]\n" -#: help.c:365 +#: help.c:366 #, c-format msgid "" "\n" @@ -2863,7 +2957,7 @@ msgstr "" "\n" "Impostazioni di visualizzazione:\n" -#: help.c:367 +#: help.c:368 #, c-format msgid "" " psql --pset=NAME[=VALUE]\n" @@ -2874,36 +2968,31 @@ msgstr "" " oppure \\pset NOME [VALORE] dentro psql\n" "\n" -#: help.c:369 +#: help.c:370 #, c-format msgid " border border style (number)\n" msgstr " border stile bordo (numero)\n" -#: help.c:370 +#: help.c:371 #, c-format msgid " columns target width for the wrapped format\n" msgstr " columns larghezza destinazione per il formato wrapped\n" -#: help.c:371 +#: help.c:372 #, c-format msgid " expanded (or x) expanded output [on, off, auto]\n" msgstr " expanded (o x) output espanso [on, off, auto]\n" -#: help.c:372 +#: help.c:373 #, c-format msgid " fieldsep field separator for unaligned output (default \"%s\")\n" msgstr " fieldsep separatore di campo per l'output non allineato (default \"%s\")\n" -#: help.c:373 +#: help.c:374 #, c-format msgid " fieldsep_zero set field separator for unaligned output to zero byte\n" msgstr " fieldsep_zero imposta il separatore di campo per l'output non allineato al byte zero\n" -#: help.c:374 -#, c-format -msgid " format set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n" -msgstr " format imposta il formato di output [unaligned, aligned, wrapped, html, asciidoc, ...]\n" - #: help.c:375 #, c-format msgid " footer enable or disable display of the table footer [on, off]\n" @@ -2911,15 +3000,20 @@ msgstr " footer abilita o disabilita la visualizzazione del piè di #: help.c:376 #, c-format +msgid " format set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n" +msgstr " format imposta il formato di output [unaligned, aligned, wrapped, html, asciidoc, ...]\n" + +#: help.c:377 +#, c-format msgid " linestyle set the border line drawing style [ascii, old-ascii, unicode]\n" msgstr " linestyle imposta lo stile di disegno delle righe dei bordi [ascii, old-ascii, unicode]\n" -#: help.c:377 +#: help.c:378 #, c-format msgid " null set the string to be printed in place of a null value\n" msgstr " null imposta la stringa da visualizzare al posto dei valori null\n" -#: help.c:378 +#: help.c:379 #, c-format msgid "" " numericlocale enable or disable display of a locale-specific character to separate\n" @@ -2928,22 +3022,22 @@ msgstr "" " numericlocale abilita o disabilita i caratteri specifici per il locale per separare\n" " i gruppi di cifre [on, off]\n" -#: help.c:380 +#: help.c:381 #, c-format msgid " pager control when an external pager is used [yes, no, always]\n" msgstr " pager controlla quando usare la paginazione esterna [yes, no, always]\n" -#: help.c:381 +#: help.c:382 #, c-format msgid " recordsep record (line) separator for unaligned output\n" msgstr " recordsep separatore di record (riga) per l'output non allineato\n" -#: help.c:382 +#: help.c:383 #, c-format msgid " recordsep_zero set record separator for unaligned output to zero byte\n" msgstr " recordsep_zero imposta il separatore di campo per l'output non allineato al byte zero\n" -#: help.c:383 +#: help.c:384 #, c-format msgid "" " tableattr (or T) specify attributes for table tag in html format or proportional\n" @@ -2953,17 +3047,17 @@ msgstr "" " larghezza colonna proporzionale dei dati allineati a sinistra\n" " in formato latex-longtable\n" -#: help.c:385 +#: help.c:386 #, c-format msgid " title set the table title for any subsequently printed tables\n" msgstr " title imposta il titolo della tabella per ogni tabella stampata in seguto\n" -#: help.c:386 +#: help.c:387 #, c-format msgid " tuples_only if set, only actual table data is shown\n" msgstr " tuples_only se impostato, mostra solo i dati della tabella\n" -#: help.c:387 +#: help.c:388 #, c-format msgid "" " unicode_border_linestyle\n" @@ -2976,7 +3070,7 @@ msgstr "" " unicode_header_linestyle\n" " imposta lo stile di disegno delle righe Unicode [single, double]\n" -#: help.c:392 +#: help.c:393 #, c-format msgid "" "\n" @@ -2985,7 +3079,7 @@ msgstr "" "\n" "Variabili d'ambiente:\n" -#: help.c:396 +#: help.c:397 #, c-format msgid "" " NAME=VALUE [NAME=VALUE] psql ...\n" @@ -2996,7 +3090,7 @@ msgstr "" " oppure \\setenv NOME [VALORE] dentro psql\n" "\n" -#: help.c:398 +#: help.c:399 #, c-format msgid "" " set NAME=VALUE\n" @@ -3009,52 +3103,52 @@ msgstr "" " oppure \\setenv NOME [VALORE] dentro psql\n" "\n" -#: help.c:401 +#: help.c:402 #, c-format msgid " COLUMNS number of columns for wrapped format\n" msgstr " COLUMNS numero di colonne per il formato wrapped\n" -#: help.c:402 +#: help.c:403 #, c-format msgid " PAGER name of external pager program\n" msgstr " PAGER nome del programma di paginazione esterno\n" -#: help.c:403 +#: help.c:404 #, c-format msgid " PGAPPNAME same as the application_name connection parameter\n" msgstr " PGAPPNAME come il parametro di connessione application_name\n" -#: help.c:404 +#: help.c:405 #, c-format msgid " PGDATABASE same as the dbname connection parameter\n" msgstr " PGDATABASE come il parametro di connessione dbname\n" -#: help.c:405 +#: help.c:406 #, c-format msgid " PGHOST same as the host connection parameter\n" msgstr " PGHOST come il parametro di connessione host\n" -#: help.c:406 +#: help.c:407 #, c-format msgid " PGPORT same as the port connection parameter\n" msgstr " PGPORT come il parametro di connessione port\n" -#: help.c:407 +#: help.c:408 #, c-format msgid " PGUSER same as the user connection parameter\n" msgstr " PGUSER come il parametro di connessione user\n" -#: help.c:408 +#: help.c:409 #, c-format msgid " PGPASSWORD connection password (not recommended)\n" msgstr " PGPASSWORD password di connessione (uso non raccomandato)\n" -#: help.c:409 +#: help.c:410 #, c-format msgid " PGPASSFILE password file name\n" msgstr " PGPASSFILE nome del file delle password\n" -#: help.c:410 +#: help.c:411 #, c-format msgid "" " PSQL_EDITOR, EDITOR, VISUAL\n" @@ -3063,7 +3157,7 @@ msgstr "" " PSQL_EDITOR, EDITOR, VISUAL\n" " editor usato dai comandi \\e, \\ef, \\ev\n" -#: help.c:412 +#: help.c:413 #, c-format msgid "" " PSQL_EDITOR_LINENUMBER_ARG\n" @@ -3072,31 +3166,31 @@ msgstr "" " PSQL_EDITOR_LINENUMBER_ARG\n" " come specificare un numero di riga quando si invoca l'editor\n" -#: help.c:414 +#: help.c:415 #, c-format msgid " PSQL_HISTORY alternative location for the command history file\n" msgstr " PSQL_HISTORY posizione alternativa del file della storia dei comandi\n" -#: help.c:415 +#: help.c:416 #, c-format msgid " PSQLRC alternative location for the user's .psqlrc file\n" msgstr " PSQLRC posizione alternativa del file .psqlrc dell'utente\n" -#: help.c:416 +#: help.c:417 #, c-format msgid " SHELL shell used by the \\! command\n" msgstr " SHELL shell usata dal comando \\!\n" -#: help.c:417 +#: help.c:418 #, c-format msgid " TMPDIR directory for temporary files\n" msgstr " TMPDIR directory per i file temporanei\n" -#: help.c:460 +#: help.c:461 msgid "Available help:\n" msgstr "Aiuti disponibili:\n" -#: help.c:544 +#: help.c:545 #, c-format msgid "" "Command: %s\n" @@ -3111,7 +3205,7 @@ msgstr "" "%s\n" "\n" -#: help.c:560 +#: help.c:561 #, c-format msgid "" "No help available for \"%s\".\n" @@ -3190,12 +3284,12 @@ msgstr "" " \\g o termina con punto e virgola per eseguire la query\n" " \\q per uscire\n" -#: psqlscanslash.l:611 +#: psqlscanslash.l:584 #, c-format msgid "unterminated quoted string\n" msgstr "stringa tra virgolette non terminata\n" -#: psqlscanslash.l:719 +#: psqlscanslash.l:738 #, c-format msgid "%s: out of memory\n" msgstr "%s: memoria esaurita\n" @@ -3206,12 +3300,12 @@ msgstr "%s: memoria esaurita\n" #: sql_help.c:126 sql_help.c:128 sql_help.c:221 sql_help.c:223 sql_help.c:224 #: sql_help.c:226 sql_help.c:228 sql_help.c:231 sql_help.c:233 sql_help.c:235 #: sql_help.c:237 sql_help.c:249 sql_help.c:250 sql_help.c:251 sql_help.c:253 -#: sql_help.c:299 sql_help.c:301 sql_help.c:303 sql_help.c:305 sql_help.c:365 -#: sql_help.c:370 sql_help.c:372 sql_help.c:415 sql_help.c:417 sql_help.c:420 -#: sql_help.c:422 sql_help.c:489 sql_help.c:494 sql_help.c:499 sql_help.c:504 -#: sql_help.c:509 sql_help.c:558 sql_help.c:560 sql_help.c:562 sql_help.c:564 -#: sql_help.c:567 sql_help.c:569 sql_help.c:580 sql_help.c:582 sql_help.c:624 -#: sql_help.c:626 sql_help.c:628 sql_help.c:631 sql_help.c:633 sql_help.c:635 +#: sql_help.c:300 sql_help.c:302 sql_help.c:304 sql_help.c:306 sql_help.c:367 +#: sql_help.c:372 sql_help.c:374 sql_help.c:417 sql_help.c:419 sql_help.c:422 +#: sql_help.c:424 sql_help.c:491 sql_help.c:496 sql_help.c:501 sql_help.c:506 +#: sql_help.c:511 sql_help.c:560 sql_help.c:562 sql_help.c:564 sql_help.c:566 +#: sql_help.c:569 sql_help.c:571 sql_help.c:582 sql_help.c:584 sql_help.c:625 +#: sql_help.c:627 sql_help.c:629 sql_help.c:632 sql_help.c:634 sql_help.c:636 #: sql_help.c:669 sql_help.c:673 sql_help.c:677 sql_help.c:696 sql_help.c:699 #: sql_help.c:702 sql_help.c:731 sql_help.c:743 sql_help.c:751 sql_help.c:754 #: sql_help.c:757 sql_help.c:772 sql_help.c:775 sql_help.c:819 sql_help.c:842 @@ -3227,38 +3321,38 @@ msgstr "%s: memoria esaurita\n" #: sql_help.c:1190 sql_help.c:1193 sql_help.c:1195 sql_help.c:1197 #: sql_help.c:1247 sql_help.c:1285 sql_help.c:1288 sql_help.c:1290 #: sql_help.c:1292 sql_help.c:1294 sql_help.c:1296 sql_help.c:1299 -#: sql_help.c:1339 sql_help.c:1542 sql_help.c:1613 sql_help.c:1633 -#: sql_help.c:1650 sql_help.c:1705 sql_help.c:1709 sql_help.c:1719 -#: sql_help.c:1739 sql_help.c:1764 sql_help.c:1782 sql_help.c:1811 -#: sql_help.c:1886 sql_help.c:1928 sql_help.c:1950 sql_help.c:1970 -#: sql_help.c:1971 sql_help.c:2006 sql_help.c:2026 sql_help.c:2048 -#: sql_help.c:2061 sql_help.c:2092 sql_help.c:2117 sql_help.c:2161 -#: sql_help.c:2347 sql_help.c:2360 sql_help.c:2377 sql_help.c:2393 -#: sql_help.c:2432 sql_help.c:2483 sql_help.c:2487 sql_help.c:2489 -#: sql_help.c:2495 sql_help.c:2513 sql_help.c:2540 sql_help.c:2575 -#: sql_help.c:2587 sql_help.c:2596 sql_help.c:2640 sql_help.c:2654 -#: sql_help.c:2682 sql_help.c:2690 sql_help.c:2698 sql_help.c:2706 -#: sql_help.c:2714 sql_help.c:2722 sql_help.c:2730 sql_help.c:2738 -#: sql_help.c:2747 sql_help.c:2758 sql_help.c:2766 sql_help.c:2774 -#: sql_help.c:2782 sql_help.c:2790 sql_help.c:2800 sql_help.c:2809 -#: sql_help.c:2818 sql_help.c:2826 sql_help.c:2835 sql_help.c:2843 -#: sql_help.c:2852 sql_help.c:2860 sql_help.c:2868 sql_help.c:2876 -#: sql_help.c:2884 sql_help.c:2892 sql_help.c:2900 sql_help.c:2908 -#: sql_help.c:2916 sql_help.c:2933 sql_help.c:2942 sql_help.c:2950 -#: sql_help.c:2967 sql_help.c:2982 sql_help.c:3247 sql_help.c:3298 -#: sql_help.c:3327 sql_help.c:3335 sql_help.c:3754 sql_help.c:3802 -#: sql_help.c:3943 +#: sql_help.c:1339 sql_help.c:1544 sql_help.c:1608 sql_help.c:1627 +#: sql_help.c:1640 sql_help.c:1694 sql_help.c:1698 sql_help.c:1708 +#: sql_help.c:1728 sql_help.c:1753 sql_help.c:1771 sql_help.c:1800 +#: sql_help.c:1875 sql_help.c:1917 sql_help.c:1939 sql_help.c:1959 +#: sql_help.c:1960 sql_help.c:1995 sql_help.c:2015 sql_help.c:2037 +#: sql_help.c:2050 sql_help.c:2081 sql_help.c:2106 sql_help.c:2150 +#: sql_help.c:2336 sql_help.c:2349 sql_help.c:2366 sql_help.c:2382 +#: sql_help.c:2421 sql_help.c:2472 sql_help.c:2476 sql_help.c:2478 +#: sql_help.c:2484 sql_help.c:2502 sql_help.c:2529 sql_help.c:2564 +#: sql_help.c:2576 sql_help.c:2585 sql_help.c:2629 sql_help.c:2643 +#: sql_help.c:2671 sql_help.c:2679 sql_help.c:2687 sql_help.c:2695 +#: sql_help.c:2703 sql_help.c:2711 sql_help.c:2719 sql_help.c:2727 +#: sql_help.c:2736 sql_help.c:2747 sql_help.c:2755 sql_help.c:2763 +#: sql_help.c:2771 sql_help.c:2779 sql_help.c:2789 sql_help.c:2798 +#: sql_help.c:2807 sql_help.c:2815 sql_help.c:2824 sql_help.c:2832 +#: sql_help.c:2841 sql_help.c:2849 sql_help.c:2857 sql_help.c:2865 +#: sql_help.c:2873 sql_help.c:2881 sql_help.c:2889 sql_help.c:2897 +#: sql_help.c:2905 sql_help.c:2922 sql_help.c:2931 sql_help.c:2939 +#: sql_help.c:2956 sql_help.c:2971 sql_help.c:3236 sql_help.c:3287 +#: sql_help.c:3316 sql_help.c:3324 sql_help.c:3743 sql_help.c:3791 +#: sql_help.c:3932 msgid "name" msgstr "nome" -#: sql_help.c:37 sql_help.c:40 sql_help.c:43 sql_help.c:309 sql_help.c:1403 -#: sql_help.c:2655 sql_help.c:3550 +#: sql_help.c:37 sql_help.c:40 sql_help.c:43 sql_help.c:311 sql_help.c:1405 +#: sql_help.c:2644 sql_help.c:3539 msgid "aggregate_signature" msgstr "signature_aggregato" #: sql_help.c:38 sql_help.c:65 sql_help.c:80 sql_help.c:116 sql_help.c:236 -#: sql_help.c:254 sql_help.c:373 sql_help.c:421 sql_help.c:498 sql_help.c:544 -#: sql_help.c:559 sql_help.c:581 sql_help.c:632 sql_help.c:698 sql_help.c:753 +#: sql_help.c:254 sql_help.c:375 sql_help.c:423 sql_help.c:500 sql_help.c:546 +#: sql_help.c:561 sql_help.c:583 sql_help.c:633 sql_help.c:698 sql_help.c:753 #: sql_help.c:774 sql_help.c:820 sql_help.c:844 sql_help.c:854 sql_help.c:884 #: sql_help.c:904 sql_help.c:996 sql_help.c:1061 sql_help.c:1104 #: sql_help.c:1125 sql_help.c:1139 sql_help.c:1151 sql_help.c:1164 @@ -3267,103 +3361,101 @@ msgid "new_name" msgstr "nuovo_nome" #: sql_help.c:41 sql_help.c:67 sql_help.c:82 sql_help.c:118 sql_help.c:234 -#: sql_help.c:252 sql_help.c:371 sql_help.c:457 sql_help.c:503 sql_help.c:583 -#: sql_help.c:592 sql_help.c:651 sql_help.c:672 sql_help.c:701 sql_help.c:756 -#: sql_help.c:856 sql_help.c:882 sql_help.c:902 sql_help.c:1045 -#: sql_help.c:1063 sql_help.c:1106 sql_help.c:1127 sql_help.c:1189 -#: sql_help.c:1291 sql_help.c:2333 +#: sql_help.c:252 sql_help.c:373 sql_help.c:459 sql_help.c:505 sql_help.c:585 +#: sql_help.c:594 sql_help.c:652 sql_help.c:672 sql_help.c:701 sql_help.c:756 +#: sql_help.c:856 sql_help.c:882 sql_help.c:902 sql_help.c:1045 sql_help.c:1063 +#: sql_help.c:1106 sql_help.c:1127 sql_help.c:1189 sql_help.c:1291 +#: sql_help.c:2322 msgid "new_owner" msgstr "nuovo_proprietario" -#: sql_help.c:44 sql_help.c:69 sql_help.c:84 sql_help.c:238 sql_help.c:302 -#: sql_help.c:423 sql_help.c:508 sql_help.c:634 sql_help.c:676 sql_help.c:704 -#: sql_help.c:759 sql_help.c:886 sql_help.c:998 sql_help.c:1108 -#: sql_help.c:1129 sql_help.c:1141 sql_help.c:1153 sql_help.c:1196 -#: sql_help.c:1295 +#: sql_help.c:44 sql_help.c:69 sql_help.c:84 sql_help.c:238 sql_help.c:303 +#: sql_help.c:425 sql_help.c:510 sql_help.c:635 sql_help.c:676 sql_help.c:704 +#: sql_help.c:759 sql_help.c:886 sql_help.c:998 sql_help.c:1108 sql_help.c:1129 +#: sql_help.c:1141 sql_help.c:1153 sql_help.c:1196 sql_help.c:1295 msgid "new_schema" msgstr "nuovo_schema" -#: sql_help.c:45 sql_help.c:1456 sql_help.c:2656 sql_help.c:3569 +#: sql_help.c:45 sql_help.c:1458 sql_help.c:2645 sql_help.c:3558 msgid "where aggregate_signature is:" msgstr "dove signature_aggregato è:" -#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:319 sql_help.c:344 -#: sql_help.c:347 sql_help.c:350 sql_help.c:490 sql_help.c:495 sql_help.c:500 -#: sql_help.c:505 sql_help.c:510 sql_help.c:1421 sql_help.c:1457 -#: sql_help.c:1460 sql_help.c:1463 sql_help.c:1614 sql_help.c:1634 -#: sql_help.c:1637 sql_help.c:1887 sql_help.c:2657 sql_help.c:2660 -#: sql_help.c:2663 sql_help.c:2748 sql_help.c:3133 sql_help.c:3465 -#: sql_help.c:3556 sql_help.c:3570 sql_help.c:3573 sql_help.c:3576 +#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:321 sql_help.c:346 +#: sql_help.c:349 sql_help.c:352 sql_help.c:492 sql_help.c:497 sql_help.c:502 +#: sql_help.c:507 sql_help.c:512 sql_help.c:1423 sql_help.c:1459 +#: sql_help.c:1462 sql_help.c:1465 sql_help.c:1609 sql_help.c:1628 +#: sql_help.c:1631 sql_help.c:1876 sql_help.c:2646 sql_help.c:2649 +#: sql_help.c:2652 sql_help.c:2737 sql_help.c:3122 sql_help.c:3454 +#: sql_help.c:3545 sql_help.c:3559 sql_help.c:3562 sql_help.c:3565 msgid "argmode" msgstr "modo_arg" -#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:320 sql_help.c:345 -#: sql_help.c:348 sql_help.c:351 sql_help.c:491 sql_help.c:496 sql_help.c:501 -#: sql_help.c:506 sql_help.c:511 sql_help.c:1422 sql_help.c:1458 -#: sql_help.c:1461 sql_help.c:1464 sql_help.c:1615 sql_help.c:1635 -#: sql_help.c:1638 sql_help.c:1888 sql_help.c:2658 sql_help.c:2661 -#: sql_help.c:2664 sql_help.c:2749 sql_help.c:3557 sql_help.c:3571 -#: sql_help.c:3574 sql_help.c:3577 +#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:322 sql_help.c:347 +#: sql_help.c:350 sql_help.c:353 sql_help.c:493 sql_help.c:498 sql_help.c:503 +#: sql_help.c:508 sql_help.c:513 sql_help.c:1424 sql_help.c:1460 +#: sql_help.c:1463 sql_help.c:1466 sql_help.c:1610 sql_help.c:1629 +#: sql_help.c:1632 sql_help.c:1877 sql_help.c:2647 sql_help.c:2650 +#: sql_help.c:2653 sql_help.c:2738 sql_help.c:3546 sql_help.c:3560 +#: sql_help.c:3563 sql_help.c:3566 msgid "argname" msgstr "nome_arg" -#: sql_help.c:48 sql_help.c:51 sql_help.c:54 sql_help.c:321 sql_help.c:346 -#: sql_help.c:349 sql_help.c:352 sql_help.c:492 sql_help.c:497 sql_help.c:502 -#: sql_help.c:507 sql_help.c:512 sql_help.c:1423 sql_help.c:1459 -#: sql_help.c:1462 sql_help.c:1465 sql_help.c:1889 sql_help.c:2659 -#: sql_help.c:2662 sql_help.c:2665 sql_help.c:2750 sql_help.c:3558 -#: sql_help.c:3572 sql_help.c:3575 sql_help.c:3578 +#: sql_help.c:48 sql_help.c:51 sql_help.c:54 sql_help.c:323 sql_help.c:348 +#: sql_help.c:351 sql_help.c:354 sql_help.c:494 sql_help.c:499 sql_help.c:504 +#: sql_help.c:509 sql_help.c:514 sql_help.c:1425 sql_help.c:1461 +#: sql_help.c:1464 sql_help.c:1467 sql_help.c:1878 sql_help.c:2648 +#: sql_help.c:2651 sql_help.c:2654 sql_help.c:2739 sql_help.c:3547 +#: sql_help.c:3561 sql_help.c:3564 sql_help.c:3567 msgid "argtype" msgstr "tipo_arg" -#: sql_help.c:110 sql_help.c:368 sql_help.c:446 sql_help.c:458 sql_help.c:814 +#: sql_help.c:110 sql_help.c:370 sql_help.c:448 sql_help.c:460 sql_help.c:814 #: sql_help.c:899 sql_help.c:1122 sql_help.c:1242 sql_help.c:1270 -#: sql_help.c:1513 sql_help.c:1519 sql_help.c:1814 sql_help.c:1846 -#: sql_help.c:1853 sql_help.c:1929 sql_help.c:2093 sql_help.c:2182 -#: sql_help.c:2362 sql_help.c:2541 sql_help.c:2563 sql_help.c:3001 -#: sql_help.c:3167 +#: sql_help.c:1515 sql_help.c:1521 sql_help.c:1803 sql_help.c:1835 +#: sql_help.c:1842 sql_help.c:1918 sql_help.c:2082 sql_help.c:2171 +#: sql_help.c:2351 sql_help.c:2530 sql_help.c:2552 sql_help.c:2990 +#: sql_help.c:3156 msgid "option" msgstr "opzione" -#: sql_help.c:111 sql_help.c:815 sql_help.c:1243 sql_help.c:1930 -#: sql_help.c:2094 sql_help.c:2542 +#: sql_help.c:111 sql_help.c:815 sql_help.c:1243 sql_help.c:1919 +#: sql_help.c:2083 sql_help.c:2531 msgid "where option can be:" msgstr "dove opzione può essere:" -#: sql_help.c:112 sql_help.c:1746 +#: sql_help.c:112 sql_help.c:1735 msgid "allowconn" msgstr "permetti_conn" -#: sql_help.c:113 sql_help.c:816 sql_help.c:1244 sql_help.c:1747 -#: sql_help.c:2095 sql_help.c:2543 +#: sql_help.c:113 sql_help.c:816 sql_help.c:1244 sql_help.c:1736 +#: sql_help.c:2084 sql_help.c:2532 msgid "connlimit" msgstr "limite_conn" -#: sql_help.c:114 sql_help.c:1748 +#: sql_help.c:114 sql_help.c:1737 msgid "istemplate" msgstr "è_template" -#: sql_help.c:120 sql_help.c:571 sql_help.c:637 sql_help.c:652 sql_help.c:1001 -#: sql_help.c:1038 +#: sql_help.c:120 sql_help.c:573 sql_help.c:638 sql_help.c:1001 sql_help.c:1038 msgid "new_tablespace" msgstr "nuovo_tablespace" -#: sql_help.c:122 sql_help.c:125 sql_help.c:127 sql_help.c:517 sql_help.c:519 -#: sql_help.c:520 sql_help.c:823 sql_help.c:827 sql_help.c:830 sql_help.c:915 +#: sql_help.c:122 sql_help.c:125 sql_help.c:127 sql_help.c:519 sql_help.c:521 +#: sql_help.c:522 sql_help.c:823 sql_help.c:827 sql_help.c:830 sql_help.c:915 #: sql_help.c:918 sql_help.c:1250 sql_help.c:1253 sql_help.c:1255 -#: sql_help.c:1898 sql_help.c:3352 sql_help.c:3743 +#: sql_help.c:1887 sql_help.c:3341 sql_help.c:3732 msgid "configuration_parameter" msgstr "parametro_config" -#: sql_help.c:123 sql_help.c:369 sql_help.c:441 sql_help.c:447 sql_help.c:459 -#: sql_help.c:518 sql_help.c:566 sql_help.c:643 sql_help.c:649 sql_help.c:824 -#: sql_help.c:900 sql_help.c:916 sql_help.c:917 sql_help.c:1020 -#: sql_help.c:1040 sql_help.c:1066 sql_help.c:1123 sql_help.c:1251 -#: sql_help.c:1271 sql_help.c:1815 sql_help.c:1847 sql_help.c:1854 -#: sql_help.c:1899 sql_help.c:1900 sql_help.c:1958 sql_help.c:1990 -#: sql_help.c:2183 sql_help.c:2257 sql_help.c:2265 sql_help.c:2297 -#: sql_help.c:2319 sql_help.c:2336 sql_help.c:2363 sql_help.c:2564 -#: sql_help.c:3168 sql_help.c:3744 sql_help.c:3745 +#: sql_help.c:123 sql_help.c:371 sql_help.c:443 sql_help.c:449 sql_help.c:461 +#: sql_help.c:520 sql_help.c:568 sql_help.c:644 sql_help.c:650 sql_help.c:824 +#: sql_help.c:900 sql_help.c:916 sql_help.c:917 sql_help.c:1020 sql_help.c:1040 +#: sql_help.c:1066 sql_help.c:1123 sql_help.c:1251 sql_help.c:1271 +#: sql_help.c:1804 sql_help.c:1836 sql_help.c:1843 sql_help.c:1888 +#: sql_help.c:1889 sql_help.c:1947 sql_help.c:1979 sql_help.c:2172 +#: sql_help.c:2246 sql_help.c:2254 sql_help.c:2286 sql_help.c:2308 +#: sql_help.c:2325 sql_help.c:2352 sql_help.c:2553 sql_help.c:3157 +#: sql_help.c:3733 sql_help.c:3734 msgid "value" msgstr "valore" @@ -3371,9 +3463,9 @@ msgstr "valore" msgid "target_role" msgstr "ruolo_destinazione" -#: sql_help.c:186 sql_help.c:1798 sql_help.c:2141 sql_help.c:2146 -#: sql_help.c:3115 sql_help.c:3122 sql_help.c:3136 sql_help.c:3142 -#: sql_help.c:3447 sql_help.c:3454 sql_help.c:3468 sql_help.c:3474 +#: sql_help.c:186 sql_help.c:1787 sql_help.c:2130 sql_help.c:2135 +#: sql_help.c:3104 sql_help.c:3111 sql_help.c:3125 sql_help.c:3131 +#: sql_help.c:3436 sql_help.c:3443 sql_help.c:3457 sql_help.c:3463 msgid "schema_name" msgstr "nome_schema" @@ -3386,33 +3478,33 @@ msgid "where abbreviated_grant_or_revoke is one of:" msgstr "dove grant_o_revoke_abbreviato è uno di:" #: sql_help.c:189 sql_help.c:190 sql_help.c:191 sql_help.c:192 sql_help.c:193 -#: sql_help.c:194 sql_help.c:195 sql_help.c:196 sql_help.c:542 sql_help.c:570 -#: sql_help.c:636 sql_help.c:777 sql_help.c:834 sql_help.c:1000 -#: sql_help.c:1258 sql_help.c:1933 sql_help.c:1934 sql_help.c:1935 -#: sql_help.c:1936 sql_help.c:1937 sql_help.c:2063 sql_help.c:2098 -#: sql_help.c:2099 sql_help.c:2100 sql_help.c:2101 sql_help.c:2102 -#: sql_help.c:2546 sql_help.c:2547 sql_help.c:2548 sql_help.c:2549 -#: sql_help.c:2550 sql_help.c:3149 sql_help.c:3150 sql_help.c:3151 -#: sql_help.c:3448 sql_help.c:3452 sql_help.c:3455 sql_help.c:3457 -#: sql_help.c:3459 sql_help.c:3461 sql_help.c:3463 sql_help.c:3469 -#: sql_help.c:3471 sql_help.c:3473 sql_help.c:3475 sql_help.c:3477 -#: sql_help.c:3479 sql_help.c:3480 sql_help.c:3481 sql_help.c:3764 +#: sql_help.c:194 sql_help.c:195 sql_help.c:196 sql_help.c:544 sql_help.c:572 +#: sql_help.c:637 sql_help.c:777 sql_help.c:834 sql_help.c:1000 sql_help.c:1258 +#: sql_help.c:1922 sql_help.c:1923 sql_help.c:1924 sql_help.c:1925 +#: sql_help.c:1926 sql_help.c:2052 sql_help.c:2087 sql_help.c:2088 +#: sql_help.c:2089 sql_help.c:2090 sql_help.c:2091 sql_help.c:2535 +#: sql_help.c:2536 sql_help.c:2537 sql_help.c:2538 sql_help.c:2539 +#: sql_help.c:3138 sql_help.c:3139 sql_help.c:3140 sql_help.c:3437 +#: sql_help.c:3441 sql_help.c:3444 sql_help.c:3446 sql_help.c:3448 +#: sql_help.c:3450 sql_help.c:3452 sql_help.c:3458 sql_help.c:3460 +#: sql_help.c:3462 sql_help.c:3464 sql_help.c:3466 sql_help.c:3468 +#: sql_help.c:3469 sql_help.c:3470 sql_help.c:3753 msgid "role_name" msgstr "nome_ruolo" -#: sql_help.c:222 sql_help.c:434 sql_help.c:1011 sql_help.c:1013 -#: sql_help.c:1287 sql_help.c:1767 sql_help.c:1771 sql_help.c:1857 -#: sql_help.c:1861 sql_help.c:1954 sql_help.c:2269 sql_help.c:2279 -#: sql_help.c:2301 sql_help.c:3198 sql_help.c:3213 sql_help.c:3215 -#: sql_help.c:3629 sql_help.c:3630 sql_help.c:3639 sql_help.c:3680 -#: sql_help.c:3681 sql_help.c:3682 sql_help.c:3683 sql_help.c:3684 -#: sql_help.c:3685 sql_help.c:3718 sql_help.c:3719 sql_help.c:3724 -#: sql_help.c:3729 sql_help.c:3868 sql_help.c:3869 sql_help.c:3878 -#: sql_help.c:3919 sql_help.c:3920 sql_help.c:3921 sql_help.c:3922 -#: sql_help.c:3923 sql_help.c:3924 sql_help.c:3971 sql_help.c:3973 -#: sql_help.c:4006 sql_help.c:4062 sql_help.c:4063 sql_help.c:4072 -#: sql_help.c:4113 sql_help.c:4114 sql_help.c:4115 sql_help.c:4116 -#: sql_help.c:4117 sql_help.c:4118 +#: sql_help.c:222 sql_help.c:436 sql_help.c:1011 sql_help.c:1013 +#: sql_help.c:1287 sql_help.c:1756 sql_help.c:1760 sql_help.c:1846 +#: sql_help.c:1850 sql_help.c:1943 sql_help.c:2258 sql_help.c:2268 +#: sql_help.c:2290 sql_help.c:3187 sql_help.c:3202 sql_help.c:3204 +#: sql_help.c:3618 sql_help.c:3619 sql_help.c:3628 sql_help.c:3669 +#: sql_help.c:3670 sql_help.c:3671 sql_help.c:3672 sql_help.c:3673 +#: sql_help.c:3674 sql_help.c:3707 sql_help.c:3708 sql_help.c:3713 +#: sql_help.c:3718 sql_help.c:3857 sql_help.c:3858 sql_help.c:3867 +#: sql_help.c:3908 sql_help.c:3909 sql_help.c:3910 sql_help.c:3911 +#: sql_help.c:3912 sql_help.c:3913 sql_help.c:3960 sql_help.c:3962 +#: sql_help.c:3995 sql_help.c:4051 sql_help.c:4052 sql_help.c:4061 +#: sql_help.c:4102 sql_help.c:4103 sql_help.c:4104 sql_help.c:4105 +#: sql_help.c:4106 sql_help.c:4107 msgid "expression" msgstr "espressione" @@ -3420,11 +3512,11 @@ msgstr "espressione" msgid "domain_constraint" msgstr "vincolo_di_dominio" -#: sql_help.c:227 sql_help.c:229 sql_help.c:232 sql_help.c:449 sql_help.c:450 +#: sql_help.c:227 sql_help.c:229 sql_help.c:232 sql_help.c:451 sql_help.c:452 #: sql_help.c:993 sql_help.c:1026 sql_help.c:1027 sql_help.c:1028 -#: sql_help.c:1048 sql_help.c:1409 sql_help.c:1411 sql_help.c:1770 -#: sql_help.c:1856 sql_help.c:1860 sql_help.c:2268 sql_help.c:2278 -#: sql_help.c:3210 +#: sql_help.c:1048 sql_help.c:1411 sql_help.c:1413 sql_help.c:1759 +#: sql_help.c:1845 sql_help.c:1849 sql_help.c:2257 sql_help.c:2267 +#: sql_help.c:3199 msgid "constraint_name" msgstr "nome_vincolo" @@ -3432,319 +3524,317 @@ msgstr "nome_vincolo" msgid "new_constraint_name" msgstr "nuovo_nome_vincolo" -#: sql_help.c:300 sql_help.c:898 +#: sql_help.c:301 sql_help.c:898 msgid "new_version" msgstr "nuova_versione" -#: sql_help.c:304 sql_help.c:306 +#: sql_help.c:305 sql_help.c:307 msgid "member_object" msgstr "oggetto_membro" -#: sql_help.c:307 +#: sql_help.c:308 msgid "where member_object is:" msgstr "dove oggetto_membro è:" -#: sql_help.c:308 sql_help.c:1402 sql_help.c:3549 +#: sql_help.c:309 sql_help.c:314 sql_help.c:315 sql_help.c:316 sql_help.c:317 +#: sql_help.c:318 sql_help.c:319 sql_help.c:324 sql_help.c:328 sql_help.c:330 +#: sql_help.c:332 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:339 sql_help.c:340 sql_help.c:343 +#: sql_help.c:344 sql_help.c:1403 sql_help.c:1408 sql_help.c:1415 +#: sql_help.c:1416 sql_help.c:1417 sql_help.c:1418 sql_help.c:1419 +#: sql_help.c:1420 sql_help.c:1421 sql_help.c:1426 sql_help.c:1428 +#: sql_help.c:1432 sql_help.c:1434 sql_help.c:1438 sql_help.c:1439 +#: sql_help.c:1442 sql_help.c:1443 sql_help.c:1444 sql_help.c:1445 +#: sql_help.c:1446 sql_help.c:1447 sql_help.c:1448 sql_help.c:1449 +#: sql_help.c:1450 sql_help.c:1455 sql_help.c:1456 sql_help.c:3535 +#: sql_help.c:3540 sql_help.c:3541 sql_help.c:3542 sql_help.c:3543 +#: sql_help.c:3549 sql_help.c:3550 sql_help.c:3551 sql_help.c:3552 +#: sql_help.c:3553 sql_help.c:3554 sql_help.c:3555 sql_help.c:3556 +msgid "object_name" +msgstr "nome_oggetto" + +#: sql_help.c:310 sql_help.c:1404 sql_help.c:3538 msgid "aggregate_name" msgstr "nome_aggregato" -#: sql_help.c:310 sql_help.c:1404 sql_help.c:1685 sql_help.c:1689 -#: sql_help.c:1691 sql_help.c:2673 +#: sql_help.c:312 sql_help.c:1406 sql_help.c:1674 sql_help.c:1678 +#: sql_help.c:1680 sql_help.c:2662 msgid "source_type" msgstr "tipo_sorgente" -#: sql_help.c:311 sql_help.c:1405 sql_help.c:1686 sql_help.c:1690 -#: sql_help.c:1692 sql_help.c:2674 +#: sql_help.c:313 sql_help.c:1407 sql_help.c:1675 sql_help.c:1679 +#: sql_help.c:1681 sql_help.c:2663 msgid "target_type" msgstr "tipo_destinazione" -#: sql_help.c:312 sql_help.c:313 sql_help.c:314 sql_help.c:315 sql_help.c:316 -#: sql_help.c:317 sql_help.c:322 sql_help.c:326 sql_help.c:328 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:336 sql_help.c:337 sql_help.c:338 sql_help.c:341 sql_help.c:342 -#: sql_help.c:1406 sql_help.c:1413 sql_help.c:1414 sql_help.c:1415 -#: sql_help.c:1416 sql_help.c:1417 sql_help.c:1418 sql_help.c:1419 -#: sql_help.c:1424 sql_help.c:1426 sql_help.c:1430 sql_help.c:1432 -#: sql_help.c:1436 sql_help.c:1437 sql_help.c:1440 sql_help.c:1441 -#: sql_help.c:1442 sql_help.c:1443 sql_help.c:1444 sql_help.c:1445 -#: sql_help.c:1446 sql_help.c:1447 sql_help.c:1448 sql_help.c:1453 -#: sql_help.c:1454 sql_help.c:3546 sql_help.c:3551 sql_help.c:3552 -#: sql_help.c:3553 sql_help.c:3554 sql_help.c:3560 sql_help.c:3561 -#: sql_help.c:3562 sql_help.c:3563 sql_help.c:3564 sql_help.c:3565 -#: sql_help.c:3566 sql_help.c:3567 -msgid "object_name" -msgstr "nome_oggetto" - -#: sql_help.c:318 sql_help.c:741 sql_help.c:1420 sql_help.c:1687 -#: sql_help.c:1722 sql_help.c:1785 sql_help.c:2007 sql_help.c:2038 -#: sql_help.c:2437 sql_help.c:3132 sql_help.c:3464 sql_help.c:3555 -#: sql_help.c:3658 sql_help.c:3662 sql_help.c:3666 sql_help.c:3669 -#: sql_help.c:3897 sql_help.c:3901 sql_help.c:3905 sql_help.c:3908 -#: sql_help.c:4091 sql_help.c:4095 sql_help.c:4099 sql_help.c:4102 +#: sql_help.c:320 sql_help.c:741 sql_help.c:1422 sql_help.c:1676 +#: sql_help.c:1711 sql_help.c:1774 sql_help.c:1996 sql_help.c:2027 +#: sql_help.c:2426 sql_help.c:3121 sql_help.c:3453 sql_help.c:3544 +#: sql_help.c:3647 sql_help.c:3651 sql_help.c:3655 sql_help.c:3658 +#: sql_help.c:3886 sql_help.c:3890 sql_help.c:3894 sql_help.c:3897 +#: sql_help.c:4080 sql_help.c:4084 sql_help.c:4088 sql_help.c:4091 msgid "function_name" msgstr "nome_funzione" -#: sql_help.c:323 sql_help.c:734 sql_help.c:1427 sql_help.c:2031 +#: sql_help.c:325 sql_help.c:734 sql_help.c:1429 sql_help.c:2020 msgid "operator_name" msgstr "nome_operatore" -#: sql_help.c:324 sql_help.c:670 sql_help.c:674 sql_help.c:678 sql_help.c:1428 -#: sql_help.c:2008 sql_help.c:2791 +#: sql_help.c:326 sql_help.c:670 sql_help.c:674 sql_help.c:678 sql_help.c:1430 +#: sql_help.c:1997 sql_help.c:2780 msgid "left_type" msgstr "tipo_sx" -#: sql_help.c:325 sql_help.c:671 sql_help.c:675 sql_help.c:679 sql_help.c:1429 -#: sql_help.c:2009 sql_help.c:2792 +#: sql_help.c:327 sql_help.c:671 sql_help.c:675 sql_help.c:679 sql_help.c:1431 +#: sql_help.c:1998 sql_help.c:2781 msgid "right_type" msgstr "tipo_dx" -#: sql_help.c:327 sql_help.c:329 sql_help.c:697 sql_help.c:700 sql_help.c:703 +#: sql_help.c:329 sql_help.c:331 sql_help.c:697 sql_help.c:700 sql_help.c:703 #: sql_help.c:732 sql_help.c:744 sql_help.c:752 sql_help.c:755 sql_help.c:758 -#: sql_help.c:1431 sql_help.c:1433 sql_help.c:2028 sql_help.c:2049 -#: sql_help.c:2284 sql_help.c:2801 sql_help.c:2810 +#: sql_help.c:1433 sql_help.c:1435 sql_help.c:2017 sql_help.c:2038 +#: sql_help.c:2273 sql_help.c:2790 sql_help.c:2799 msgid "index_method" msgstr "metodo_indice" -#: sql_help.c:339 sql_help.c:1044 sql_help.c:1449 sql_help.c:1895 -#: sql_help.c:2260 sql_help.c:2406 sql_help.c:2924 sql_help.c:3146 -#: sql_help.c:3478 +#: sql_help.c:341 sql_help.c:1044 sql_help.c:1451 sql_help.c:1884 +#: sql_help.c:2249 sql_help.c:2395 sql_help.c:2913 sql_help.c:3135 +#: sql_help.c:3467 msgid "type_name" msgstr "nome_di_tipo" -#: sql_help.c:340 sql_help.c:1450 sql_help.c:1894 sql_help.c:2407 -#: sql_help.c:2631 sql_help.c:2925 sql_help.c:3138 sql_help.c:3470 +#: sql_help.c:342 sql_help.c:1452 sql_help.c:1883 sql_help.c:2396 +#: sql_help.c:2620 sql_help.c:2914 sql_help.c:3127 sql_help.c:3459 msgid "lang_name" msgstr "nome_linguaggio" -#: sql_help.c:343 +#: sql_help.c:345 msgid "and aggregate_signature is:" msgstr "e signature_aggregato è:" -#: sql_help.c:366 sql_help.c:1544 sql_help.c:1812 +#: sql_help.c:368 sql_help.c:1546 sql_help.c:1801 msgid "handler_function" msgstr "funzione_handler" -#: sql_help.c:367 sql_help.c:1813 +#: sql_help.c:369 sql_help.c:1802 msgid "validator_function" msgstr "funzione_validazione" -#: sql_help.c:416 sql_help.c:493 sql_help.c:625 sql_help.c:988 sql_help.c:1187 -#: sql_help.c:2275 sql_help.c:2276 sql_help.c:2292 sql_help.c:2293 +#: sql_help.c:418 sql_help.c:495 sql_help.c:626 sql_help.c:988 sql_help.c:1187 +#: sql_help.c:2264 sql_help.c:2265 sql_help.c:2281 sql_help.c:2282 msgid "action" msgstr "azione" -#: sql_help.c:418 sql_help.c:425 sql_help.c:429 sql_help.c:430 sql_help.c:433 -#: sql_help.c:435 sql_help.c:436 sql_help.c:437 sql_help.c:439 sql_help.c:442 -#: sql_help.c:444 sql_help.c:445 sql_help.c:629 sql_help.c:639 sql_help.c:641 -#: sql_help.c:644 sql_help.c:646 sql_help.c:880 sql_help.c:990 sql_help.c:1003 +#: sql_help.c:420 sql_help.c:427 sql_help.c:431 sql_help.c:432 sql_help.c:435 +#: sql_help.c:437 sql_help.c:438 sql_help.c:439 sql_help.c:441 sql_help.c:444 +#: sql_help.c:446 sql_help.c:447 sql_help.c:630 sql_help.c:640 sql_help.c:642 +#: sql_help.c:645 sql_help.c:647 sql_help.c:880 sql_help.c:990 sql_help.c:1003 #: sql_help.c:1007 sql_help.c:1008 sql_help.c:1012 sql_help.c:1014 #: sql_help.c:1015 sql_help.c:1016 sql_help.c:1018 sql_help.c:1021 #: sql_help.c:1023 sql_help.c:1286 sql_help.c:1289 sql_help.c:1309 -#: sql_help.c:1408 sql_help.c:1510 sql_help.c:1515 sql_help.c:1529 -#: sql_help.c:1530 sql_help.c:1531 sql_help.c:1844 sql_help.c:1892 -#: sql_help.c:1953 sql_help.c:1988 sql_help.c:2168 sql_help.c:2248 -#: sql_help.c:2261 sql_help.c:2280 sql_help.c:2282 sql_help.c:2289 -#: sql_help.c:2300 sql_help.c:2317 sql_help.c:2440 sql_help.c:2576 -#: sql_help.c:3117 sql_help.c:3118 sql_help.c:3197 sql_help.c:3212 -#: sql_help.c:3214 sql_help.c:3216 sql_help.c:3449 sql_help.c:3450 -#: sql_help.c:3548 sql_help.c:3689 sql_help.c:3928 sql_help.c:3970 -#: sql_help.c:3972 sql_help.c:3974 sql_help.c:3991 sql_help.c:3994 -#: sql_help.c:4122 +#: sql_help.c:1410 sql_help.c:1512 sql_help.c:1517 sql_help.c:1531 +#: sql_help.c:1532 sql_help.c:1533 sql_help.c:1833 sql_help.c:1881 +#: sql_help.c:1942 sql_help.c:1977 sql_help.c:2157 sql_help.c:2237 +#: sql_help.c:2250 sql_help.c:2269 sql_help.c:2271 sql_help.c:2278 +#: sql_help.c:2289 sql_help.c:2306 sql_help.c:2429 sql_help.c:2565 +#: sql_help.c:3106 sql_help.c:3107 sql_help.c:3186 sql_help.c:3201 +#: sql_help.c:3203 sql_help.c:3205 sql_help.c:3438 sql_help.c:3439 +#: sql_help.c:3537 sql_help.c:3678 sql_help.c:3917 sql_help.c:3959 +#: sql_help.c:3961 sql_help.c:3963 sql_help.c:3980 sql_help.c:3983 +#: sql_help.c:4111 msgid "column_name" msgstr "nome_colonna" -#: sql_help.c:419 sql_help.c:630 sql_help.c:991 +#: sql_help.c:421 sql_help.c:631 sql_help.c:991 msgid "new_column_name" msgstr "nuovo_nome_colonna" -#: sql_help.c:424 sql_help.c:514 sql_help.c:638 sql_help.c:1002 -#: sql_help.c:1200 +#: sql_help.c:426 sql_help.c:516 sql_help.c:639 sql_help.c:1002 sql_help.c:1200 msgid "where action is one of:" msgstr "dove azione è una di:" -#: sql_help.c:426 sql_help.c:431 sql_help.c:1004 sql_help.c:1009 -#: sql_help.c:1202 sql_help.c:1206 sql_help.c:1765 sql_help.c:1845 -#: sql_help.c:2027 sql_help.c:2249 sql_help.c:2485 sql_help.c:3299 +#: sql_help.c:428 sql_help.c:433 sql_help.c:1004 sql_help.c:1009 +#: sql_help.c:1202 sql_help.c:1206 sql_help.c:1754 sql_help.c:1834 +#: sql_help.c:2016 sql_help.c:2238 sql_help.c:2474 sql_help.c:3288 msgid "data_type" msgstr "tipo_di_dato" -#: sql_help.c:427 sql_help.c:432 sql_help.c:1005 sql_help.c:1010 -#: sql_help.c:1203 sql_help.c:1207 sql_help.c:1766 sql_help.c:1848 -#: sql_help.c:1955 sql_help.c:2250 sql_help.c:2486 sql_help.c:2492 -#: sql_help.c:3207 +#: sql_help.c:429 sql_help.c:434 sql_help.c:1005 sql_help.c:1010 +#: sql_help.c:1203 sql_help.c:1207 sql_help.c:1755 sql_help.c:1837 +#: sql_help.c:1944 sql_help.c:2239 sql_help.c:2475 sql_help.c:2481 +#: sql_help.c:3196 msgid "collation" msgstr "ordinamento" -#: sql_help.c:428 sql_help.c:1006 sql_help.c:1849 sql_help.c:2251 -#: sql_help.c:2262 +#: sql_help.c:430 sql_help.c:1006 sql_help.c:1838 sql_help.c:2240 +#: sql_help.c:2251 msgid "column_constraint" msgstr "vincolo_di_colonna" -#: sql_help.c:438 sql_help.c:640 sql_help.c:1017 +#: sql_help.c:440 sql_help.c:641 sql_help.c:1017 msgid "integer" msgstr "intero" -#: sql_help.c:440 sql_help.c:443 sql_help.c:642 sql_help.c:645 sql_help.c:1019 +#: sql_help.c:442 sql_help.c:445 sql_help.c:643 sql_help.c:646 sql_help.c:1019 #: sql_help.c:1022 msgid "attribute_option" msgstr "opzione_attributo" -#: sql_help.c:448 sql_help.c:1024 sql_help.c:1850 sql_help.c:2252 -#: sql_help.c:2263 +#: sql_help.c:450 sql_help.c:1024 sql_help.c:1839 sql_help.c:2241 +#: sql_help.c:2252 msgid "table_constraint" msgstr "vincoli_di_tabella" -#: sql_help.c:451 sql_help.c:452 sql_help.c:453 sql_help.c:454 sql_help.c:1029 -#: sql_help.c:1030 sql_help.c:1031 sql_help.c:1032 sql_help.c:1451 +#: sql_help.c:453 sql_help.c:454 sql_help.c:455 sql_help.c:456 sql_help.c:1029 +#: sql_help.c:1030 sql_help.c:1031 sql_help.c:1032 sql_help.c:1453 msgid "trigger_name" msgstr "nome_trigger" -#: sql_help.c:455 sql_help.c:456 sql_help.c:1042 sql_help.c:1043 -#: sql_help.c:1851 sql_help.c:2255 +#: sql_help.c:457 sql_help.c:458 sql_help.c:1042 sql_help.c:1043 +#: sql_help.c:1840 sql_help.c:2244 msgid "parent_table" msgstr "tabella_padre" -#: sql_help.c:513 sql_help.c:563 sql_help.c:627 sql_help.c:1167 -#: sql_help.c:1797 +#: sql_help.c:515 sql_help.c:565 sql_help.c:628 sql_help.c:1167 sql_help.c:1786 msgid "extension_name" msgstr "nome_estensione" -#: sql_help.c:515 sql_help.c:1896 +#: sql_help.c:517 sql_help.c:1885 msgid "execution_cost" msgstr "costo_di_esecuzione" -#: sql_help.c:516 sql_help.c:1897 +#: sql_help.c:518 sql_help.c:1886 msgid "result_rows" msgstr "righe_risultato" -#: sql_help.c:537 sql_help.c:539 sql_help.c:813 sql_help.c:821 sql_help.c:825 +#: sql_help.c:539 sql_help.c:541 sql_help.c:813 sql_help.c:821 sql_help.c:825 #: sql_help.c:828 sql_help.c:831 sql_help.c:1241 sql_help.c:1249 -#: sql_help.c:1252 sql_help.c:1254 sql_help.c:1256 sql_help.c:2142 -#: sql_help.c:2144 sql_help.c:2147 sql_help.c:2148 sql_help.c:3116 -#: sql_help.c:3120 sql_help.c:3123 sql_help.c:3125 sql_help.c:3127 -#: sql_help.c:3129 sql_help.c:3131 sql_help.c:3137 sql_help.c:3139 -#: sql_help.c:3141 sql_help.c:3143 sql_help.c:3145 sql_help.c:3147 +#: sql_help.c:1252 sql_help.c:1254 sql_help.c:1256 sql_help.c:2131 +#: sql_help.c:2133 sql_help.c:2136 sql_help.c:2137 sql_help.c:3105 +#: sql_help.c:3109 sql_help.c:3112 sql_help.c:3114 sql_help.c:3116 +#: sql_help.c:3118 sql_help.c:3120 sql_help.c:3126 sql_help.c:3128 +#: sql_help.c:3130 sql_help.c:3132 sql_help.c:3134 sql_help.c:3136 msgid "role_specification" msgstr "specifica_ruolo" -#: sql_help.c:538 sql_help.c:540 sql_help.c:1268 sql_help.c:1740 -#: sql_help.c:2150 sql_help.c:2561 sql_help.c:2958 sql_help.c:3774 +#: sql_help.c:540 sql_help.c:542 sql_help.c:1268 sql_help.c:1729 +#: sql_help.c:2139 sql_help.c:2550 sql_help.c:2947 sql_help.c:3763 msgid "user_name" msgstr "nome_utente" -#: sql_help.c:541 sql_help.c:833 sql_help.c:1257 sql_help.c:2149 -#: sql_help.c:3148 +#: sql_help.c:543 sql_help.c:833 sql_help.c:1257 sql_help.c:2138 +#: sql_help.c:3137 msgid "where role_specification can be:" msgstr "dove specifica_ruolo può essere:" -#: sql_help.c:543 +#: sql_help.c:545 msgid "group_name" msgstr "nome_gruppo" -#: sql_help.c:561 sql_help.c:1745 sql_help.c:1959 sql_help.c:1991 -#: sql_help.c:2258 sql_help.c:2266 sql_help.c:2298 sql_help.c:2320 -#: sql_help.c:2332 sql_help.c:3144 sql_help.c:3476 +#: sql_help.c:563 sql_help.c:1734 sql_help.c:1948 sql_help.c:1980 +#: sql_help.c:2247 sql_help.c:2255 sql_help.c:2287 sql_help.c:2309 +#: sql_help.c:2321 sql_help.c:3133 sql_help.c:3465 msgid "tablespace_name" msgstr "nome_tablespace" -#: sql_help.c:565 sql_help.c:568 sql_help.c:648 sql_help.c:650 sql_help.c:1039 -#: sql_help.c:1041 sql_help.c:1957 sql_help.c:1989 sql_help.c:2256 -#: sql_help.c:2264 sql_help.c:2296 sql_help.c:2318 +#: sql_help.c:567 sql_help.c:570 sql_help.c:649 sql_help.c:651 sql_help.c:1039 +#: sql_help.c:1041 sql_help.c:1946 sql_help.c:1978 sql_help.c:2245 +#: sql_help.c:2253 sql_help.c:2285 sql_help.c:2307 msgid "storage_parameter" msgstr "parametro_di_memorizzazione" -#: sql_help.c:591 sql_help.c:1425 sql_help.c:3559 +#: sql_help.c:593 sql_help.c:1427 sql_help.c:3548 msgid "large_object_oid" msgstr "oid_large_object" -#: sql_help.c:647 sql_help.c:1037 sql_help.c:1046 sql_help.c:1049 +#: sql_help.c:648 sql_help.c:1037 sql_help.c:1046 sql_help.c:1049 #: sql_help.c:1349 msgid "index_name" msgstr "nome_indice" -#: sql_help.c:680 sql_help.c:2012 +#: sql_help.c:680 sql_help.c:2001 msgid "res_proc" msgstr "res_proc" -#: sql_help.c:681 sql_help.c:2013 +#: sql_help.c:681 sql_help.c:2002 msgid "join_proc" msgstr "proc_join" -#: sql_help.c:733 sql_help.c:745 sql_help.c:2030 +#: sql_help.c:733 sql_help.c:745 sql_help.c:2019 msgid "strategy_number" msgstr "strategia_num" #: sql_help.c:735 sql_help.c:736 sql_help.c:739 sql_help.c:740 sql_help.c:746 -#: sql_help.c:747 sql_help.c:749 sql_help.c:750 sql_help.c:2032 -#: sql_help.c:2033 sql_help.c:2036 sql_help.c:2037 +#: sql_help.c:747 sql_help.c:749 sql_help.c:750 sql_help.c:2021 sql_help.c:2022 +#: sql_help.c:2025 sql_help.c:2026 msgid "op_type" msgstr "tipo_op" -#: sql_help.c:737 sql_help.c:2034 +#: sql_help.c:737 sql_help.c:2023 msgid "sort_family_name" msgstr "nome_famiglia_sort" -#: sql_help.c:738 sql_help.c:748 sql_help.c:2035 +#: sql_help.c:738 sql_help.c:748 sql_help.c:2024 msgid "support_number" msgstr "num_supporto" -#: sql_help.c:742 sql_help.c:1688 sql_help.c:2039 sql_help.c:2409 -#: sql_help.c:2411 +#: sql_help.c:742 sql_help.c:1677 sql_help.c:2028 sql_help.c:2398 +#: sql_help.c:2400 msgid "argument_type" msgstr "tipo_argomento" #: sql_help.c:773 sql_help.c:776 sql_help.c:843 sql_help.c:879 sql_help.c:1163 -#: sql_help.c:1166 sql_help.c:1308 sql_help.c:1348 sql_help.c:1410 -#: sql_help.c:1435 sql_help.c:1439 sql_help.c:1452 sql_help.c:1509 -#: sql_help.c:1514 sql_help.c:1843 sql_help.c:1951 sql_help.c:1987 -#: sql_help.c:2062 sql_help.c:2119 sql_help.c:2167 sql_help.c:2247 -#: sql_help.c:2259 sql_help.c:2316 sql_help.c:2434 sql_help.c:2610 -#: sql_help.c:2827 sql_help.c:2844 sql_help.c:2934 sql_help.c:3114 -#: sql_help.c:3119 sql_help.c:3164 sql_help.c:3195 sql_help.c:3446 -#: sql_help.c:3451 sql_help.c:3547 sql_help.c:3644 sql_help.c:3646 -#: sql_help.c:3695 sql_help.c:3734 sql_help.c:3883 sql_help.c:3885 -#: sql_help.c:3934 sql_help.c:3968 sql_help.c:3990 sql_help.c:3992 -#: sql_help.c:3993 sql_help.c:4077 sql_help.c:4079 sql_help.c:4128 +#: sql_help.c:1166 sql_help.c:1308 sql_help.c:1348 sql_help.c:1412 +#: sql_help.c:1437 sql_help.c:1441 sql_help.c:1454 sql_help.c:1511 +#: sql_help.c:1516 sql_help.c:1832 sql_help.c:1940 sql_help.c:1976 +#: sql_help.c:2051 sql_help.c:2108 sql_help.c:2156 sql_help.c:2236 +#: sql_help.c:2248 sql_help.c:2305 sql_help.c:2423 sql_help.c:2599 +#: sql_help.c:2816 sql_help.c:2833 sql_help.c:2923 sql_help.c:3103 +#: sql_help.c:3108 sql_help.c:3153 sql_help.c:3184 sql_help.c:3435 +#: sql_help.c:3440 sql_help.c:3536 sql_help.c:3633 sql_help.c:3635 +#: sql_help.c:3684 sql_help.c:3723 sql_help.c:3872 sql_help.c:3874 +#: sql_help.c:3923 sql_help.c:3957 sql_help.c:3979 sql_help.c:3981 +#: sql_help.c:3982 sql_help.c:4066 sql_help.c:4068 sql_help.c:4117 msgid "table_name" msgstr "nome_tabella" -#: sql_help.c:778 sql_help.c:2064 +#: sql_help.c:778 sql_help.c:2053 msgid "using_expression" msgstr "espressione_using" -#: sql_help.c:779 sql_help.c:2065 +#: sql_help.c:779 sql_help.c:2054 msgid "check_expression" msgstr "espressione_check" -#: sql_help.c:817 sql_help.c:1245 sql_help.c:1931 sql_help.c:2096 -#: sql_help.c:2544 +#: sql_help.c:817 sql_help.c:1245 sql_help.c:1920 sql_help.c:2085 +#: sql_help.c:2533 msgid "password" msgstr "password" -#: sql_help.c:818 sql_help.c:1246 sql_help.c:1932 sql_help.c:2097 -#: sql_help.c:2545 +#: sql_help.c:818 sql_help.c:1246 sql_help.c:1921 sql_help.c:2086 +#: sql_help.c:2534 msgid "timestamp" msgstr "timestamp" -#: sql_help.c:822 sql_help.c:826 sql_help.c:829 sql_help.c:832 sql_help.c:3124 -#: sql_help.c:3456 +#: sql_help.c:822 sql_help.c:826 sql_help.c:829 sql_help.c:832 sql_help.c:3113 +#: sql_help.c:3445 msgid "database_name" msgstr "nome_database" -#: sql_help.c:873 sql_help.c:2162 +#: sql_help.c:873 sql_help.c:2151 msgid "increment" msgstr "incremento" -#: sql_help.c:874 sql_help.c:2163 +#: sql_help.c:874 sql_help.c:2152 msgid "minvalue" msgstr "valoremin" -#: sql_help.c:875 sql_help.c:2164 +#: sql_help.c:875 sql_help.c:2153 msgid "maxvalue" msgstr "valoremax" -#: sql_help.c:876 sql_help.c:2165 sql_help.c:3642 sql_help.c:3732 -#: sql_help.c:3881 sql_help.c:4010 sql_help.c:4075 +#: sql_help.c:876 sql_help.c:2154 sql_help.c:3631 sql_help.c:3721 +#: sql_help.c:3870 sql_help.c:3999 sql_help.c:4064 msgid "start" msgstr "inizio" @@ -3752,7 +3842,7 @@ msgstr "inizio" msgid "restart" msgstr "riavvio" -#: sql_help.c:878 sql_help.c:2166 +#: sql_help.c:878 sql_help.c:2155 msgid "cache" msgstr "cache" @@ -3768,7 +3858,7 @@ msgstr "nome_regola_di_riscrittura" msgid "and table_constraint_using_index is:" msgstr "e vincolo_di_tabella_con_indice è:" -#: sql_help.c:1065 sql_help.c:1068 sql_help.c:2335 +#: sql_help.c:1065 sql_help.c:1068 sql_help.c:2324 msgid "tablespace_option" msgstr "opzione_tablespace" @@ -3789,7 +3879,7 @@ msgid "new_dictionary" msgstr "nuovo_dizionario" #: sql_help.c:1191 sql_help.c:1201 sql_help.c:1204 sql_help.c:1205 -#: sql_help.c:2484 +#: sql_help.c:2473 msgid "attribute_name" msgstr "nome_attributo" @@ -3805,1421 +3895,1417 @@ msgstr "nuovo_valore_enum" msgid "existing_enum_value" msgstr "valore_enum_esistente" -#: sql_help.c:1269 sql_help.c:1852 sql_help.c:2178 sql_help.c:2562 -#: sql_help.c:2959 sql_help.c:3130 sql_help.c:3165 sql_help.c:3462 +#: sql_help.c:1269 sql_help.c:1841 sql_help.c:2167 sql_help.c:2551 +#: sql_help.c:2948 sql_help.c:3119 sql_help.c:3154 sql_help.c:3451 msgid "server_name" msgstr "nome_server" -#: sql_help.c:1297 sql_help.c:1300 sql_help.c:2577 +#: sql_help.c:1297 sql_help.c:1300 sql_help.c:2566 msgid "view_option_name" msgstr "nome_opzione_vista" -#: sql_help.c:1298 sql_help.c:2578 +#: sql_help.c:1298 sql_help.c:2567 msgid "view_option_value" msgstr "valore_opzione_vista" -#: sql_help.c:1323 sql_help.c:3790 sql_help.c:3792 sql_help.c:3816 +#: sql_help.c:1323 sql_help.c:3779 sql_help.c:3781 sql_help.c:3805 msgid "transaction_mode" msgstr "modalità_transazione" -#: sql_help.c:1324 sql_help.c:3793 sql_help.c:3817 +#: sql_help.c:1324 sql_help.c:3782 sql_help.c:3806 msgid "where transaction_mode is one of:" msgstr "dove modalità_transazione è una di:" -#: sql_help.c:1407 +#: sql_help.c:1409 msgid "relation_name" msgstr "nome_relazione" -#: sql_help.c:1412 sql_help.c:3126 sql_help.c:3458 +#: sql_help.c:1414 sql_help.c:3115 sql_help.c:3447 msgid "domain_name" msgstr "nome_dominio" -#: sql_help.c:1434 +#: sql_help.c:1436 msgid "policy_name" msgstr "nome_regola" -#: sql_help.c:1438 +#: sql_help.c:1440 msgid "rule_name" msgstr "nome_ruolo" -#: sql_help.c:1455 +#: sql_help.c:1457 msgid "text" msgstr "testo" -#: sql_help.c:1480 sql_help.c:3308 sql_help.c:3496 +#: sql_help.c:1482 sql_help.c:3297 sql_help.c:3485 msgid "transaction_id" msgstr "id_transazione" -#: sql_help.c:1511 sql_help.c:1517 sql_help.c:3234 +#: sql_help.c:1513 sql_help.c:1519 sql_help.c:3223 msgid "filename" msgstr "nome_file" -#: sql_help.c:1512 sql_help.c:1518 sql_help.c:2121 sql_help.c:2122 -#: sql_help.c:2123 +#: sql_help.c:1514 sql_help.c:1520 sql_help.c:2110 sql_help.c:2111 +#: sql_help.c:2112 msgid "command" msgstr "comando" -#: sql_help.c:1516 sql_help.c:1992 sql_help.c:2321 sql_help.c:2579 -#: sql_help.c:2597 sql_help.c:3199 +#: sql_help.c:1518 sql_help.c:1981 sql_help.c:2310 sql_help.c:2568 +#: sql_help.c:2586 sql_help.c:3188 msgid "query" msgstr "query" -#: sql_help.c:1520 sql_help.c:3004 +#: sql_help.c:1522 sql_help.c:2993 msgid "where option can be one of:" msgstr "dove opzione può essere una di:" -#: sql_help.c:1521 +#: sql_help.c:1523 msgid "format_name" msgstr "nome_formato" -#: sql_help.c:1522 sql_help.c:1523 sql_help.c:1526 sql_help.c:3005 -#: sql_help.c:3006 sql_help.c:3007 sql_help.c:3008 sql_help.c:3009 +#: sql_help.c:1524 sql_help.c:1525 sql_help.c:1528 sql_help.c:2994 +#: sql_help.c:2995 sql_help.c:2996 sql_help.c:2997 sql_help.c:2998 msgid "boolean" msgstr "booleano" -#: sql_help.c:1524 +#: sql_help.c:1526 msgid "delimiter_character" msgstr "carattere_delimitatore" -#: sql_help.c:1525 +#: sql_help.c:1527 msgid "null_string" msgstr "stringa_nulla" -#: sql_help.c:1527 +#: sql_help.c:1529 msgid "quote_character" msgstr "carattere_virgolette" -#: sql_help.c:1528 +#: sql_help.c:1530 msgid "escape_character" msgstr "carattere_di_escape" -#: sql_help.c:1532 +#: sql_help.c:1534 msgid "encoding_name" msgstr "nome_codifica" -#: sql_help.c:1543 +#: sql_help.c:1545 msgid "access_method_type" msgstr "tipo_metodo_accesso" -#: sql_help.c:1616 sql_help.c:1636 sql_help.c:1639 +#: sql_help.c:1611 sql_help.c:1630 sql_help.c:1633 msgid "arg_data_type" msgstr "topo_dato_argomento" -#: sql_help.c:1617 sql_help.c:1640 sql_help.c:1652 +#: sql_help.c:1612 sql_help.c:1634 sql_help.c:1642 msgid "sfunc" msgstr "sfunz" -#: sql_help.c:1618 sql_help.c:1641 sql_help.c:1653 +#: sql_help.c:1613 sql_help.c:1635 sql_help.c:1643 msgid "state_data_type" msgstr "tipo_dato_stato" -#: sql_help.c:1619 sql_help.c:1642 sql_help.c:1654 +#: sql_help.c:1614 sql_help.c:1636 sql_help.c:1644 msgid "state_data_size" msgstr "dimensione_dato_stato" -#: sql_help.c:1620 sql_help.c:1643 sql_help.c:1655 +#: sql_help.c:1615 sql_help.c:1637 sql_help.c:1645 msgid "ffunc" msgstr "ffunz" -#: sql_help.c:1621 sql_help.c:1644 sql_help.c:1656 +#: sql_help.c:1616 sql_help.c:1646 msgid "combinefunc" msgstr "funz_combine" -#: sql_help.c:1622 sql_help.c:1645 sql_help.c:1657 +#: sql_help.c:1617 sql_help.c:1647 msgid "serialfunc" msgstr "funz_serial" -#: sql_help.c:1623 sql_help.c:1646 sql_help.c:1658 +#: sql_help.c:1618 sql_help.c:1648 msgid "deserialfunc" msgstr "funz_deserial" -#: sql_help.c:1624 sql_help.c:1647 sql_help.c:1659 -msgid "serialtype" -msgstr "tipo_serial" - -#: sql_help.c:1625 sql_help.c:1648 sql_help.c:1660 +#: sql_help.c:1619 sql_help.c:1638 sql_help.c:1649 msgid "initial_condition" msgstr "condizione_iniziale" -#: sql_help.c:1626 sql_help.c:1661 +#: sql_help.c:1620 sql_help.c:1650 msgid "msfunc" msgstr "msfunz" -#: sql_help.c:1627 sql_help.c:1662 +#: sql_help.c:1621 sql_help.c:1651 msgid "minvfunc" msgstr "minvfunz" -#: sql_help.c:1628 sql_help.c:1663 +#: sql_help.c:1622 sql_help.c:1652 msgid "mstate_data_type" msgstr "tipo_dato_mstato" -#: sql_help.c:1629 sql_help.c:1664 +#: sql_help.c:1623 sql_help.c:1653 msgid "mstate_data_size" msgstr "tipo_dato_mstato" -#: sql_help.c:1630 sql_help.c:1665 +#: sql_help.c:1624 sql_help.c:1654 msgid "mffunc" msgstr "mffunz" -#: sql_help.c:1631 sql_help.c:1666 +#: sql_help.c:1625 sql_help.c:1655 msgid "minitial_condition" msgstr "condizione_minima" -#: sql_help.c:1632 sql_help.c:1667 +#: sql_help.c:1626 sql_help.c:1656 msgid "sort_operator" msgstr "operatore_di_ordinamento" -#: sql_help.c:1649 +#: sql_help.c:1639 msgid "or the old syntax" msgstr "o la vecchia sintassi" -#: sql_help.c:1651 +#: sql_help.c:1641 msgid "base_type" msgstr "tipo_base" -#: sql_help.c:1706 +#: sql_help.c:1695 msgid "locale" msgstr "locale" -#: sql_help.c:1707 sql_help.c:1743 +#: sql_help.c:1696 sql_help.c:1732 msgid "lc_collate" msgstr "lc_collate" -#: sql_help.c:1708 sql_help.c:1744 +#: sql_help.c:1697 sql_help.c:1733 msgid "lc_ctype" msgstr "lc_ctype" -#: sql_help.c:1710 +#: sql_help.c:1699 msgid "existing_collation" msgstr "ordinamento_esistente" -#: sql_help.c:1720 +#: sql_help.c:1709 msgid "source_encoding" msgstr "codifica_origine" -#: sql_help.c:1721 +#: sql_help.c:1710 msgid "dest_encoding" msgstr "codifica_destinazione" -#: sql_help.c:1741 sql_help.c:2361 +#: sql_help.c:1730 sql_help.c:2350 msgid "template" msgstr "template" -#: sql_help.c:1742 +#: sql_help.c:1731 msgid "encoding" msgstr "codifica" -#: sql_help.c:1768 +#: sql_help.c:1757 msgid "constraint" msgstr "vincolo" -#: sql_help.c:1769 +#: sql_help.c:1758 msgid "where constraint is:" msgstr "dove vincolo di è:" -#: sql_help.c:1783 sql_help.c:2118 sql_help.c:2433 +#: sql_help.c:1772 sql_help.c:2107 sql_help.c:2422 msgid "event" msgstr "evento" -#: sql_help.c:1784 +#: sql_help.c:1773 msgid "filter_variable" msgstr "valiabile_filtro" -#: sql_help.c:1799 +#: sql_help.c:1788 msgid "version" msgstr "versione" -#: sql_help.c:1800 +#: sql_help.c:1789 msgid "old_version" msgstr "vecchia_versione" -#: sql_help.c:1855 sql_help.c:2267 +#: sql_help.c:1844 sql_help.c:2256 msgid "where column_constraint is:" msgstr "dove vincolo_di_colonna è:" -#: sql_help.c:1858 sql_help.c:1890 sql_help.c:2270 +#: sql_help.c:1847 sql_help.c:1879 sql_help.c:2259 msgid "default_expr" msgstr "expr_default" -#: sql_help.c:1859 sql_help.c:2277 +#: sql_help.c:1848 sql_help.c:2266 msgid "and table_constraint is:" msgstr "e vincolo_di_tabella è:" -#: sql_help.c:1891 +#: sql_help.c:1880 msgid "rettype" msgstr "tipo_ritorno" -#: sql_help.c:1893 +#: sql_help.c:1882 msgid "column_type" msgstr "tipo_colonna" -#: sql_help.c:1901 +#: sql_help.c:1890 msgid "definition" msgstr "definizione" -#: sql_help.c:1902 +#: sql_help.c:1891 msgid "obj_file" msgstr "file_obj" -#: sql_help.c:1903 +#: sql_help.c:1892 msgid "link_symbol" msgstr "simbolo_link" -#: sql_help.c:1904 +#: sql_help.c:1893 msgid "attribute" msgstr "attributo" -#: sql_help.c:1938 sql_help.c:2103 sql_help.c:2551 +#: sql_help.c:1927 sql_help.c:2092 sql_help.c:2540 msgid "uid" msgstr "uid" -#: sql_help.c:1952 +#: sql_help.c:1941 msgid "method" msgstr "metodo" -#: sql_help.c:1956 sql_help.c:2302 sql_help.c:3208 +#: sql_help.c:1945 sql_help.c:2291 sql_help.c:3197 msgid "opclass" msgstr "classe_op" -#: sql_help.c:1960 sql_help.c:2288 +#: sql_help.c:1949 sql_help.c:2277 msgid "predicate" msgstr "predicato" -#: sql_help.c:1972 +#: sql_help.c:1961 msgid "call_handler" msgstr "handler_chiamata" -#: sql_help.c:1973 +#: sql_help.c:1962 msgid "inline_handler" msgstr "handler_inline" -#: sql_help.c:1974 +#: sql_help.c:1963 msgid "valfunction" msgstr "funzione_valid" -#: sql_help.c:2010 +#: sql_help.c:1999 msgid "com_op" msgstr "com_op" -#: sql_help.c:2011 +#: sql_help.c:2000 msgid "neg_op" msgstr "neg_op" -#: sql_help.c:2029 +#: sql_help.c:2018 msgid "family_name" msgstr "nome_famiglia" -#: sql_help.c:2040 +#: sql_help.c:2029 msgid "storage_type" msgstr "tipo_memorizzazione" -#: sql_help.c:2120 sql_help.c:2436 sql_help.c:2613 sql_help.c:3218 -#: sql_help.c:3633 sql_help.c:3635 sql_help.c:3723 sql_help.c:3725 -#: sql_help.c:3872 sql_help.c:3874 sql_help.c:3977 sql_help.c:4066 -#: sql_help.c:4068 +#: sql_help.c:2109 sql_help.c:2425 sql_help.c:2602 sql_help.c:3207 +#: sql_help.c:3622 sql_help.c:3624 sql_help.c:3712 sql_help.c:3714 +#: sql_help.c:3861 sql_help.c:3863 sql_help.c:3966 sql_help.c:4055 +#: sql_help.c:4057 msgid "condition" msgstr "condizione" -#: sql_help.c:2124 sql_help.c:2439 +#: sql_help.c:2113 sql_help.c:2428 msgid "where event can be one of:" msgstr "dove evento può essere uno di:" -#: sql_help.c:2143 sql_help.c:2145 +#: sql_help.c:2132 sql_help.c:2134 msgid "schema_element" msgstr "elemento_di_schema" -#: sql_help.c:2179 +#: sql_help.c:2168 msgid "server_type" msgstr "tipo_di_server" -#: sql_help.c:2180 +#: sql_help.c:2169 msgid "server_version" msgstr "versione_server" -#: sql_help.c:2181 sql_help.c:3128 sql_help.c:3460 +#: sql_help.c:2170 sql_help.c:3117 sql_help.c:3449 msgid "fdw_name" msgstr "nome_fdw" -#: sql_help.c:2253 +#: sql_help.c:2242 msgid "source_table" msgstr "tabella_origine" -#: sql_help.c:2254 +#: sql_help.c:2243 msgid "like_option" msgstr "opzioni_di_like" -#: sql_help.c:2271 sql_help.c:2272 sql_help.c:2281 sql_help.c:2283 -#: sql_help.c:2287 +#: sql_help.c:2260 sql_help.c:2261 sql_help.c:2270 sql_help.c:2272 +#: sql_help.c:2276 msgid "index_parameters" msgstr "parametri_di_indice" -#: sql_help.c:2273 sql_help.c:2290 +#: sql_help.c:2262 sql_help.c:2279 msgid "reftable" msgstr "tabella_ref" -#: sql_help.c:2274 sql_help.c:2291 +#: sql_help.c:2263 sql_help.c:2280 msgid "refcolumn" msgstr "colonna_ref" -#: sql_help.c:2285 +#: sql_help.c:2274 msgid "exclude_element" msgstr "elemento_di_esclusione" -#: sql_help.c:2286 sql_help.c:3640 sql_help.c:3730 sql_help.c:3879 -#: sql_help.c:4008 sql_help.c:4073 +#: sql_help.c:2275 sql_help.c:3629 sql_help.c:3719 sql_help.c:3868 +#: sql_help.c:3997 sql_help.c:4062 msgid "operator" msgstr "operatore" -#: sql_help.c:2294 +#: sql_help.c:2283 msgid "and like_option is:" msgstr "e opzione_like è:" -#: sql_help.c:2295 +#: sql_help.c:2284 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:2299 +#: sql_help.c:2288 msgid "exclude_element in an EXCLUDE constraint is:" msgstr "elemento_di_esclusione in un vincolo EXCLUDE è:" -#: sql_help.c:2334 +#: sql_help.c:2323 msgid "directory" msgstr "directory" -#: sql_help.c:2348 +#: sql_help.c:2337 msgid "parser_name" msgstr "nome_parser" -#: sql_help.c:2349 +#: sql_help.c:2338 msgid "source_config" msgstr "config_origine" -#: sql_help.c:2378 +#: sql_help.c:2367 msgid "start_function" msgstr "funzione_inizio" -#: sql_help.c:2379 +#: sql_help.c:2368 msgid "gettoken_function" msgstr "funzione_gettoken" -#: sql_help.c:2380 +#: sql_help.c:2369 msgid "end_function" msgstr "funzione_fine" -#: sql_help.c:2381 +#: sql_help.c:2370 msgid "lextypes_function" msgstr "funzione_lextypes" -#: sql_help.c:2382 +#: sql_help.c:2371 msgid "headline_function" msgstr "funzione_headline" -#: sql_help.c:2394 +#: sql_help.c:2383 msgid "init_function" msgstr "funzione_init" -#: sql_help.c:2395 +#: sql_help.c:2384 msgid "lexize_function" msgstr "funzione_lexize" -#: sql_help.c:2408 +#: sql_help.c:2397 msgid "from_sql_function_name" msgstr "nome_funzione_from_sql" -#: sql_help.c:2410 +#: sql_help.c:2399 msgid "to_sql_function_name" msgstr "nome_funzione_to_sql" -#: sql_help.c:2435 +#: sql_help.c:2424 msgid "referenced_table_name" msgstr "nome_tabella_referenziata" -#: sql_help.c:2438 +#: sql_help.c:2427 msgid "arguments" msgstr "argomenti" -#: sql_help.c:2488 sql_help.c:3568 +#: sql_help.c:2477 sql_help.c:3557 msgid "label" msgstr "etichetta" -#: sql_help.c:2490 +#: sql_help.c:2479 msgid "subtype" msgstr "sottotipo" -#: sql_help.c:2491 +#: sql_help.c:2480 msgid "subtype_operator_class" msgstr "classe_operatore_sottotipo" -#: sql_help.c:2493 +#: sql_help.c:2482 msgid "canonical_function" msgstr "funzione_canonica" -#: sql_help.c:2494 +#: sql_help.c:2483 msgid "subtype_diff_function" msgstr "funzione_diff_sottotipo" -#: sql_help.c:2496 +#: sql_help.c:2485 msgid "input_function" msgstr "funzione_input" -#: sql_help.c:2497 +#: sql_help.c:2486 msgid "output_function" msgstr "funzione_output" -#: sql_help.c:2498 +#: sql_help.c:2487 msgid "receive_function" msgstr "funzione_receive" -#: sql_help.c:2499 +#: sql_help.c:2488 msgid "send_function" msgstr "funzione_send" -#: sql_help.c:2500 +#: sql_help.c:2489 msgid "type_modifier_input_function" msgstr "funzione_input_modificatore_tipo" -#: sql_help.c:2501 +#: sql_help.c:2490 msgid "type_modifier_output_function" msgstr "funzione_output_modificatore_tipo" -#: sql_help.c:2502 +#: sql_help.c:2491 msgid "analyze_function" msgstr "funzione_analyze" -#: sql_help.c:2503 +#: sql_help.c:2492 msgid "internallength" msgstr "lunghezza_interna" -#: sql_help.c:2504 +#: sql_help.c:2493 msgid "alignment" msgstr "allineamento" -#: sql_help.c:2505 +#: sql_help.c:2494 msgid "storage" msgstr "memorizzazione" -#: sql_help.c:2506 +#: sql_help.c:2495 msgid "like_type" msgstr "tipo_like" -#: sql_help.c:2507 +#: sql_help.c:2496 msgid "category" msgstr "categoria" -#: sql_help.c:2508 +#: sql_help.c:2497 msgid "preferred" msgstr "preferito" -#: sql_help.c:2509 +#: sql_help.c:2498 msgid "default" msgstr "predefinito" -#: sql_help.c:2510 +#: sql_help.c:2499 msgid "element" msgstr "elemento" -#: sql_help.c:2511 +#: sql_help.c:2500 msgid "delimiter" msgstr "delimitatore" -#: sql_help.c:2512 +#: sql_help.c:2501 msgid "collatable" msgstr "ordinabile" -#: sql_help.c:2609 sql_help.c:3194 sql_help.c:3628 sql_help.c:3717 -#: sql_help.c:3867 sql_help.c:3967 sql_help.c:4061 +#: sql_help.c:2598 sql_help.c:3183 sql_help.c:3617 sql_help.c:3706 +#: sql_help.c:3856 sql_help.c:3956 sql_help.c:4050 msgid "with_query" msgstr "query_with" -#: sql_help.c:2611 sql_help.c:3196 sql_help.c:3647 sql_help.c:3653 -#: sql_help.c:3656 sql_help.c:3660 sql_help.c:3664 sql_help.c:3672 -#: sql_help.c:3886 sql_help.c:3892 sql_help.c:3895 sql_help.c:3899 -#: sql_help.c:3903 sql_help.c:3911 sql_help.c:3969 sql_help.c:4080 -#: sql_help.c:4086 sql_help.c:4089 sql_help.c:4093 sql_help.c:4097 -#: sql_help.c:4105 +#: sql_help.c:2600 sql_help.c:3185 sql_help.c:3636 sql_help.c:3642 +#: sql_help.c:3645 sql_help.c:3649 sql_help.c:3653 sql_help.c:3661 +#: sql_help.c:3875 sql_help.c:3881 sql_help.c:3884 sql_help.c:3888 +#: sql_help.c:3892 sql_help.c:3900 sql_help.c:3958 sql_help.c:4069 +#: sql_help.c:4075 sql_help.c:4078 sql_help.c:4082 sql_help.c:4086 +#: sql_help.c:4094 msgid "alias" msgstr "alias" -#: sql_help.c:2612 +#: sql_help.c:2601 msgid "using_list" msgstr "lista_using" -#: sql_help.c:2614 sql_help.c:3035 sql_help.c:3275 sql_help.c:3978 +#: sql_help.c:2603 sql_help.c:3024 sql_help.c:3264 sql_help.c:3967 msgid "cursor_name" msgstr "nome_cursore" -#: sql_help.c:2615 sql_help.c:3202 sql_help.c:3979 +#: sql_help.c:2604 sql_help.c:3191 sql_help.c:3968 msgid "output_expression" msgstr "espressione_output" -#: sql_help.c:2616 sql_help.c:3203 sql_help.c:3631 sql_help.c:3720 -#: sql_help.c:3870 sql_help.c:3980 sql_help.c:4064 +#: sql_help.c:2605 sql_help.c:3192 sql_help.c:3620 sql_help.c:3709 +#: sql_help.c:3859 sql_help.c:3969 sql_help.c:4053 msgid "output_name" msgstr "nome_output" -#: sql_help.c:2632 +#: sql_help.c:2621 msgid "code" msgstr "codice" -#: sql_help.c:2983 +#: sql_help.c:2972 msgid "parameter" msgstr "parametro" -#: sql_help.c:3002 sql_help.c:3003 sql_help.c:3300 +#: sql_help.c:2991 sql_help.c:2992 sql_help.c:3289 msgid "statement" msgstr "istruzione" -#: sql_help.c:3034 sql_help.c:3274 +#: sql_help.c:3023 sql_help.c:3263 msgid "direction" msgstr "direzione" -#: sql_help.c:3036 sql_help.c:3276 +#: sql_help.c:3025 sql_help.c:3265 msgid "where direction can be empty or one of:" msgstr "dove direzione può essere vuota o una di:" -#: sql_help.c:3037 sql_help.c:3038 sql_help.c:3039 sql_help.c:3040 -#: sql_help.c:3041 sql_help.c:3277 sql_help.c:3278 sql_help.c:3279 -#: sql_help.c:3280 sql_help.c:3281 sql_help.c:3641 sql_help.c:3643 -#: sql_help.c:3731 sql_help.c:3733 sql_help.c:3880 sql_help.c:3882 -#: sql_help.c:4009 sql_help.c:4011 sql_help.c:4074 sql_help.c:4076 +#: sql_help.c:3026 sql_help.c:3027 sql_help.c:3028 sql_help.c:3029 +#: sql_help.c:3030 sql_help.c:3266 sql_help.c:3267 sql_help.c:3268 +#: sql_help.c:3269 sql_help.c:3270 sql_help.c:3630 sql_help.c:3632 +#: sql_help.c:3720 sql_help.c:3722 sql_help.c:3869 sql_help.c:3871 +#: sql_help.c:3998 sql_help.c:4000 sql_help.c:4063 sql_help.c:4065 msgid "count" msgstr "conteggio" -#: sql_help.c:3121 sql_help.c:3453 +#: sql_help.c:3110 sql_help.c:3442 msgid "sequence_name" msgstr "nome_sequenza" -#: sql_help.c:3134 sql_help.c:3466 +#: sql_help.c:3123 sql_help.c:3455 msgid "arg_name" msgstr "nome_arg" -#: sql_help.c:3135 sql_help.c:3467 +#: sql_help.c:3124 sql_help.c:3456 msgid "arg_type" msgstr "tipo_arg" -#: sql_help.c:3140 sql_help.c:3472 +#: sql_help.c:3129 sql_help.c:3461 msgid "loid" msgstr "loid" -#: sql_help.c:3163 +#: sql_help.c:3152 msgid "remote_schema" msgstr "schema_remoto" -#: sql_help.c:3166 +#: sql_help.c:3155 msgid "local_schema" msgstr "schema_locale" -#: sql_help.c:3200 +#: sql_help.c:3189 msgid "conflict_target" msgstr "target_conflitto" -#: sql_help.c:3201 +#: sql_help.c:3190 msgid "conflict_action" msgstr "azione_conflitto" -#: sql_help.c:3204 +#: sql_help.c:3193 msgid "where conflict_target can be one of:" msgstr "dove target_conflitto può essere uno di:" -#: sql_help.c:3205 +#: sql_help.c:3194 msgid "index_column_name" msgstr "nome_colonna_indice" -#: sql_help.c:3206 +#: sql_help.c:3195 msgid "index_expression" msgstr "espressione_indice" -#: sql_help.c:3209 +#: sql_help.c:3198 msgid "index_predicate" msgstr "indice_predicato" -#: sql_help.c:3211 +#: sql_help.c:3200 msgid "and conflict_action is one of:" msgstr "e azione_conflitto è una di:" -#: sql_help.c:3217 sql_help.c:3975 +#: sql_help.c:3206 sql_help.c:3964 msgid "sub-SELECT" msgstr "sub-SELECT" -#: sql_help.c:3226 sql_help.c:3289 sql_help.c:3951 +#: sql_help.c:3215 sql_help.c:3278 sql_help.c:3940 msgid "channel" msgstr "canale" -#: sql_help.c:3248 +#: sql_help.c:3237 msgid "lockmode" msgstr "modalità_lock" -#: sql_help.c:3249 +#: sql_help.c:3238 msgid "where lockmode is one of:" msgstr "dove modalità_lock è una di:" -#: sql_help.c:3290 +#: sql_help.c:3279 msgid "payload" msgstr "payload" -#: sql_help.c:3317 +#: sql_help.c:3306 msgid "old_role" msgstr "vecchio_ruolo" -#: sql_help.c:3318 +#: sql_help.c:3307 msgid "new_role" msgstr "nuovo_ruolo" -#: sql_help.c:3343 sql_help.c:3504 sql_help.c:3512 +#: sql_help.c:3332 sql_help.c:3493 sql_help.c:3501 msgid "savepoint_name" msgstr "nome_punto_salvataggio" -#: sql_help.c:3545 +#: sql_help.c:3534 msgid "provider" msgstr "provider" -#: sql_help.c:3632 sql_help.c:3674 sql_help.c:3676 sql_help.c:3722 -#: sql_help.c:3871 sql_help.c:3913 sql_help.c:3915 sql_help.c:4065 -#: sql_help.c:4107 sql_help.c:4109 +#: sql_help.c:3621 sql_help.c:3663 sql_help.c:3665 sql_help.c:3711 +#: sql_help.c:3860 sql_help.c:3902 sql_help.c:3904 sql_help.c:4054 +#: sql_help.c:4096 sql_help.c:4098 msgid "from_item" msgstr "elemento_from" -#: sql_help.c:3634 sql_help.c:3686 sql_help.c:3873 sql_help.c:3925 -#: sql_help.c:4067 sql_help.c:4119 +#: sql_help.c:3623 sql_help.c:3675 sql_help.c:3862 sql_help.c:3914 +#: sql_help.c:4056 sql_help.c:4108 msgid "grouping_element" msgstr "elemento_raggruppante" -#: sql_help.c:3636 sql_help.c:3726 sql_help.c:3875 sql_help.c:4069 +#: sql_help.c:3625 sql_help.c:3715 sql_help.c:3864 sql_help.c:4058 msgid "window_name" msgstr "nome_finestra" -#: sql_help.c:3637 sql_help.c:3727 sql_help.c:3876 sql_help.c:4070 +#: sql_help.c:3626 sql_help.c:3716 sql_help.c:3865 sql_help.c:4059 msgid "window_definition" msgstr "definizione_finestra" -#: sql_help.c:3638 sql_help.c:3652 sql_help.c:3690 sql_help.c:3728 -#: sql_help.c:3877 sql_help.c:3891 sql_help.c:3929 sql_help.c:4071 -#: sql_help.c:4085 sql_help.c:4123 +#: sql_help.c:3627 sql_help.c:3641 sql_help.c:3679 sql_help.c:3717 +#: sql_help.c:3866 sql_help.c:3880 sql_help.c:3918 sql_help.c:4060 +#: sql_help.c:4074 sql_help.c:4112 msgid "select" msgstr "select" -#: sql_help.c:3645 sql_help.c:3884 sql_help.c:4078 +#: sql_help.c:3634 sql_help.c:3873 sql_help.c:4067 msgid "where from_item can be one of:" msgstr "dove from_item può essere uno di:" -#: sql_help.c:3648 sql_help.c:3654 sql_help.c:3657 sql_help.c:3661 -#: sql_help.c:3673 sql_help.c:3887 sql_help.c:3893 sql_help.c:3896 -#: sql_help.c:3900 sql_help.c:3912 sql_help.c:4081 sql_help.c:4087 -#: sql_help.c:4090 sql_help.c:4094 sql_help.c:4106 +#: sql_help.c:3637 sql_help.c:3643 sql_help.c:3646 sql_help.c:3650 +#: sql_help.c:3662 sql_help.c:3876 sql_help.c:3882 sql_help.c:3885 +#: sql_help.c:3889 sql_help.c:3901 sql_help.c:4070 sql_help.c:4076 +#: sql_help.c:4079 sql_help.c:4083 sql_help.c:4095 msgid "column_alias" msgstr "alias_colonna" -#: sql_help.c:3649 sql_help.c:3888 sql_help.c:4082 +#: sql_help.c:3638 sql_help.c:3877 sql_help.c:4071 msgid "sampling_method" msgstr "metodo_di_campionamento" -#: sql_help.c:3650 sql_help.c:3659 sql_help.c:3663 sql_help.c:3667 -#: sql_help.c:3670 sql_help.c:3889 sql_help.c:3898 sql_help.c:3902 -#: sql_help.c:3906 sql_help.c:3909 sql_help.c:4083 sql_help.c:4092 -#: sql_help.c:4096 sql_help.c:4100 sql_help.c:4103 +#: sql_help.c:3639 sql_help.c:3648 sql_help.c:3652 sql_help.c:3656 +#: sql_help.c:3659 sql_help.c:3878 sql_help.c:3887 sql_help.c:3891 +#: sql_help.c:3895 sql_help.c:3898 sql_help.c:4072 sql_help.c:4081 +#: sql_help.c:4085 sql_help.c:4089 sql_help.c:4092 msgid "argument" msgstr "argomento" -#: sql_help.c:3651 sql_help.c:3890 sql_help.c:4084 +#: sql_help.c:3640 sql_help.c:3879 sql_help.c:4073 msgid "seed" msgstr "seme" -#: sql_help.c:3655 sql_help.c:3688 sql_help.c:3894 sql_help.c:3927 -#: sql_help.c:4088 sql_help.c:4121 +#: sql_help.c:3644 sql_help.c:3677 sql_help.c:3883 sql_help.c:3916 +#: sql_help.c:4077 sql_help.c:4110 msgid "with_query_name" msgstr "nome_query_with" -#: sql_help.c:3665 sql_help.c:3668 sql_help.c:3671 sql_help.c:3904 -#: sql_help.c:3907 sql_help.c:3910 sql_help.c:4098 sql_help.c:4101 -#: sql_help.c:4104 +#: sql_help.c:3654 sql_help.c:3657 sql_help.c:3660 sql_help.c:3893 +#: sql_help.c:3896 sql_help.c:3899 sql_help.c:4087 sql_help.c:4090 +#: sql_help.c:4093 msgid "column_definition" msgstr "definizione_colonna" -#: sql_help.c:3675 sql_help.c:3914 sql_help.c:4108 +#: sql_help.c:3664 sql_help.c:3903 sql_help.c:4097 msgid "join_type" msgstr "tipo_join" -#: sql_help.c:3677 sql_help.c:3916 sql_help.c:4110 +#: sql_help.c:3666 sql_help.c:3905 sql_help.c:4099 msgid "join_condition" msgstr "condizione_join" -#: sql_help.c:3678 sql_help.c:3917 sql_help.c:4111 +#: sql_help.c:3667 sql_help.c:3906 sql_help.c:4100 msgid "join_column" msgstr "colonna_join" -#: sql_help.c:3679 sql_help.c:3918 sql_help.c:4112 +#: sql_help.c:3668 sql_help.c:3907 sql_help.c:4101 msgid "and grouping_element can be one of:" msgstr "e elemento_raggruppante può essere uno di:" -#: sql_help.c:3687 sql_help.c:3926 sql_help.c:4120 +#: sql_help.c:3676 sql_help.c:3915 sql_help.c:4109 msgid "and with_query is:" msgstr "e with_query è:" -#: sql_help.c:3691 sql_help.c:3930 sql_help.c:4124 +#: sql_help.c:3680 sql_help.c:3919 sql_help.c:4113 msgid "values" msgstr "valori" -#: sql_help.c:3692 sql_help.c:3931 sql_help.c:4125 +#: sql_help.c:3681 sql_help.c:3920 sql_help.c:4114 msgid "insert" msgstr "insert" -#: sql_help.c:3693 sql_help.c:3932 sql_help.c:4126 +#: sql_help.c:3682 sql_help.c:3921 sql_help.c:4115 msgid "update" msgstr "update" -#: sql_help.c:3694 sql_help.c:3933 sql_help.c:4127 +#: sql_help.c:3683 sql_help.c:3922 sql_help.c:4116 msgid "delete" msgstr "delete" -#: sql_help.c:3721 +#: sql_help.c:3710 msgid "new_table" msgstr "nuova_tabella" -#: sql_help.c:3746 +#: sql_help.c:3735 msgid "timezone" msgstr "timezone" -#: sql_help.c:3791 +#: sql_help.c:3780 msgid "snapshot_id" msgstr "id_snapshot" -#: sql_help.c:3976 +#: sql_help.c:3965 msgid "from_list" msgstr "lista_from" -#: sql_help.c:4007 +#: sql_help.c:3996 msgid "sort_expression" msgstr "espressione_ordinamento" -#: sql_help.c:4134 sql_help.c:4874 +#: sql_help.c:4123 sql_help.c:4863 msgid "abort the current transaction" msgstr "annulla la transazione corrente" -#: sql_help.c:4139 +#: sql_help.c:4128 msgid "change the definition of an aggregate function" msgstr "cambia la definizione di una funzione di aggregazione" -#: sql_help.c:4144 +#: sql_help.c:4133 msgid "change the definition of a collation" msgstr "cambia la definizione di un ordinamento" -#: sql_help.c:4149 +#: sql_help.c:4138 msgid "change the definition of a conversion" msgstr "cambia la definizione di una conversione" -#: sql_help.c:4154 +#: sql_help.c:4143 msgid "change a database" msgstr "cambia un database" -#: sql_help.c:4159 +#: sql_help.c:4148 msgid "define default access privileges" msgstr "definisci i privilegi di accesso di default" -#: sql_help.c:4164 +#: sql_help.c:4153 msgid "change the definition of a domain" msgstr "cambia la definizione di un dominio" -#: sql_help.c:4169 +#: sql_help.c:4158 msgid "change the definition of an event trigger" msgstr "cambia la definizione di un trigger di evento" -#: sql_help.c:4174 +#: sql_help.c:4163 msgid "change the definition of an extension" msgstr "cambia la definizione di una estensione" -#: sql_help.c:4179 +#: sql_help.c:4168 msgid "change the definition of a foreign-data wrapper" msgstr "cambia la definizione di un wrapper di dati esterni" -#: sql_help.c:4184 +#: sql_help.c:4173 msgid "change the definition of a foreign table" msgstr "cambia la definizione di una tabella esterna" -#: sql_help.c:4189 +#: sql_help.c:4178 msgid "change the definition of a function" msgstr "cambia la definizione di una funzione" -#: sql_help.c:4194 +#: sql_help.c:4183 msgid "change role name or membership" msgstr "cambia il nome del ruolo o l'appartenenza" -#: sql_help.c:4199 +#: sql_help.c:4188 msgid "change the definition of an index" msgstr "cambia la definizione di un indice" -#: sql_help.c:4204 +#: sql_help.c:4193 msgid "change the definition of a procedural language" msgstr "cambia la definizione di un linguaggio procedurale" -#: sql_help.c:4209 +#: sql_help.c:4198 msgid "change the definition of a large object" msgstr "cambia la definizione di un large object" -#: sql_help.c:4214 +#: sql_help.c:4203 msgid "change the definition of a materialized view" msgstr "cambia la definizione di una vista materializzata" -#: sql_help.c:4219 +#: sql_help.c:4208 msgid "change the definition of an operator" msgstr "cambia la definizione di un operatore" -#: sql_help.c:4224 +#: sql_help.c:4213 msgid "change the definition of an operator class" msgstr "cambia la definizione di una classe di operatori" -#: sql_help.c:4229 +#: sql_help.c:4218 msgid "change the definition of an operator family" msgstr "cambia la definizione di una famiglia di operatori" -#: sql_help.c:4234 +#: sql_help.c:4223 msgid "change the definition of a row level security policy" msgstr "cambia la definizione di una regola di sicurezza per riga" -#: sql_help.c:4239 sql_help.c:4309 +#: sql_help.c:4228 sql_help.c:4298 msgid "change a database role" msgstr "cambia un ruolo di database" -#: sql_help.c:4244 +#: sql_help.c:4233 msgid "change the definition of a rule" msgstr "cambia la definizione di una regola" -#: sql_help.c:4249 +#: sql_help.c:4238 msgid "change the definition of a schema" msgstr "cambia la definizione di uno schema" -#: sql_help.c:4254 +#: sql_help.c:4243 msgid "change the definition of a sequence generator" msgstr "cambia la definizione di un generatore di sequenza" -#: sql_help.c:4259 +#: sql_help.c:4248 msgid "change the definition of a foreign server" msgstr "cambia la definizione di un server esterno" -#: sql_help.c:4264 +#: sql_help.c:4253 msgid "change a server configuration parameter" msgstr "cambia un parametro di configurazione del server" -#: sql_help.c:4269 +#: sql_help.c:4258 msgid "change the definition of a table" msgstr "cambia la definizione di una tabella" -#: sql_help.c:4274 +#: sql_help.c:4263 msgid "change the definition of a tablespace" msgstr "cambia la definizione di un tablespace" -#: sql_help.c:4279 +#: sql_help.c:4268 msgid "change the definition of a text search configuration" msgstr "cambia la definizione di una configurazione di ricerca testo" -#: sql_help.c:4284 +#: sql_help.c:4273 msgid "change the definition of a text search dictionary" msgstr "cambia la definizione di un dizionario di ricerca testo" -#: sql_help.c:4289 +#: sql_help.c:4278 msgid "change the definition of a text search parser" msgstr "cambia la definizione di un analizzatore di ricerca testo" -#: sql_help.c:4294 +#: sql_help.c:4283 msgid "change the definition of a text search template" msgstr "cambia la definizione di un modello di ricerca testo" -#: sql_help.c:4299 +#: sql_help.c:4288 msgid "change the definition of a trigger" msgstr "cambia la definizione di un trigger" -#: sql_help.c:4304 +#: sql_help.c:4293 msgid "change the definition of a type" msgstr "cambia la definizione di un tipo di dato" -#: sql_help.c:4314 +#: sql_help.c:4303 msgid "change the definition of a user mapping" msgstr "cambia la definizione di una mappatura degli" -#: sql_help.c:4319 +#: sql_help.c:4308 msgid "change the definition of a view" msgstr "cambia la definizione di una vista" -#: sql_help.c:4324 +#: sql_help.c:4313 msgid "collect statistics about a database" msgstr "raccogli statistiche sul database" -#: sql_help.c:4329 sql_help.c:4939 +#: sql_help.c:4318 sql_help.c:4928 msgid "start a transaction block" msgstr "avvia un blocco di transazione" -#: sql_help.c:4334 +#: sql_help.c:4323 msgid "force a transaction log checkpoint" msgstr "forza un punto di controllo nel log delle transazioni" -#: sql_help.c:4339 +#: sql_help.c:4328 msgid "close a cursor" msgstr "chiudi un cursore" -#: sql_help.c:4344 +#: sql_help.c:4333 msgid "cluster a table according to an index" msgstr "raggruppa una tabella in base ad un indice" -#: sql_help.c:4349 +#: sql_help.c:4338 msgid "define or change the comment of an object" msgstr "definisci o modifica il commento di un oggetto" -#: sql_help.c:4354 sql_help.c:4774 +#: sql_help.c:4343 sql_help.c:4763 msgid "commit the current transaction" msgstr "rendi persistente la transazione corrente" -#: sql_help.c:4359 +#: sql_help.c:4348 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:4364 +#: sql_help.c:4353 msgid "copy data between a file and a table" msgstr "copia i dati tra un file ed una tabella" -#: sql_help.c:4369 +#: sql_help.c:4358 msgid "define a new access method" msgstr "definisci un nuovo metodo di accesso" -#: sql_help.c:4374 +#: sql_help.c:4363 msgid "define a new aggregate function" msgstr "definisci una nuova funzione aggregata" -#: sql_help.c:4379 +#: sql_help.c:4368 msgid "define a new cast" msgstr "definisci una nuova conversione di tipi" -#: sql_help.c:4384 +#: sql_help.c:4373 msgid "define a new collation" msgstr "definisci un nuovo ordinamento" -#: sql_help.c:4389 +#: sql_help.c:4378 msgid "define a new encoding conversion" msgstr "definisci una nuova conversione di codifica" -#: sql_help.c:4394 +#: sql_help.c:4383 msgid "create a new database" msgstr "crea un nuovo database" -#: sql_help.c:4399 +#: sql_help.c:4388 msgid "define a new domain" msgstr "definisci un nuovo dominio" -#: sql_help.c:4404 +#: sql_help.c:4393 msgid "define a new event trigger" msgstr "definisci un nuovo trigger di evento" -#: sql_help.c:4409 +#: sql_help.c:4398 msgid "install an extension" msgstr "installa un'estensione" -#: sql_help.c:4414 +#: sql_help.c:4403 msgid "define a new foreign-data wrapper" msgstr "definisci un nuovo wrapper di dati esterni" -#: sql_help.c:4419 +#: sql_help.c:4408 msgid "define a new foreign table" msgstr "definisci una nuova tabella esterna" -#: sql_help.c:4424 +#: sql_help.c:4413 msgid "define a new function" msgstr "definisci una nuova funzione" -#: sql_help.c:4429 sql_help.c:4469 sql_help.c:4544 +#: sql_help.c:4418 sql_help.c:4458 sql_help.c:4533 msgid "define a new database role" msgstr "definisci un nuovo ruolo database" -#: sql_help.c:4434 +#: sql_help.c:4423 msgid "define a new index" msgstr "crea un nuovo indice" -#: sql_help.c:4439 +#: sql_help.c:4428 msgid "define a new procedural language" msgstr "definisci un nuovo linguaggio procedurale" -#: sql_help.c:4444 +#: sql_help.c:4433 msgid "define a new materialized view" msgstr "definisci una nuova vista materializzata" -#: sql_help.c:4449 +#: sql_help.c:4438 msgid "define a new operator" msgstr "definisci un nuovo operatore" -#: sql_help.c:4454 +#: sql_help.c:4443 msgid "define a new operator class" msgstr "definisci una nuova classe di operatori" -#: sql_help.c:4459 +#: sql_help.c:4448 msgid "define a new operator family" msgstr "definisci una nuova famiglia operatore" -#: sql_help.c:4464 +#: sql_help.c:4453 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:4474 +#: sql_help.c:4463 msgid "define a new rewrite rule" msgstr "definisci una nuova regola di riscrittura" -#: sql_help.c:4479 +#: sql_help.c:4468 msgid "define a new schema" msgstr "crea un nuovo schema" -#: sql_help.c:4484 +#: sql_help.c:4473 msgid "define a new sequence generator" msgstr "definisci un nuovo generatore di sequenze" -#: sql_help.c:4489 +#: sql_help.c:4478 msgid "define a new foreign server" msgstr "definisci un nuovo server esterno" -#: sql_help.c:4494 +#: sql_help.c:4483 msgid "define a new table" msgstr "crea una nuova tabella" -#: sql_help.c:4499 sql_help.c:4904 +#: sql_help.c:4488 sql_help.c:4893 msgid "define a new table from the results of a query" msgstr "crea una nuova tabella dai risultati di una query" -#: sql_help.c:4504 +#: sql_help.c:4493 msgid "define a new tablespace" msgstr "crea un nuovo tablespace" -#: sql_help.c:4509 +#: sql_help.c:4498 msgid "define a new text search configuration" msgstr "definisci una nuova configurazione di ricerca testo" -#: sql_help.c:4514 +#: sql_help.c:4503 msgid "define a new text search dictionary" msgstr "definisci un nuovo dizionario di ricerca testo" -#: sql_help.c:4519 +#: sql_help.c:4508 msgid "define a new text search parser" msgstr "definisci un nuovo analizzatore di ricerca testo" -#: sql_help.c:4524 +#: sql_help.c:4513 msgid "define a new text search template" msgstr "definisci un nuovo modello di ricerca testo" -#: sql_help.c:4529 +#: sql_help.c:4518 msgid "define a new transform" msgstr "definisci una nuova trasformazione" -#: sql_help.c:4534 +#: sql_help.c:4523 msgid "define a new trigger" msgstr "definisci un nuovo trigger" -#: sql_help.c:4539 +#: sql_help.c:4528 msgid "define a new data type" msgstr "definisci un nuovo tipo di dato" -#: sql_help.c:4549 +#: sql_help.c:4538 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:4554 +#: sql_help.c:4543 msgid "define a new view" msgstr "definisci una nuova vista" -#: sql_help.c:4559 +#: sql_help.c:4548 msgid "deallocate a prepared statement" msgstr "dealloca una istruzione preparata" -#: sql_help.c:4564 +#: sql_help.c:4553 msgid "define a cursor" msgstr "definisci un cursore" -#: sql_help.c:4569 +#: sql_help.c:4558 msgid "delete rows of a table" msgstr "elimina le righe di una tabella" -#: sql_help.c:4574 +#: sql_help.c:4563 msgid "discard session state" msgstr "cancella lo stato della sessione" -#: sql_help.c:4579 +#: sql_help.c:4568 msgid "execute an anonymous code block" msgstr "esegui un blocco di codice anonimo" -#: sql_help.c:4584 +#: sql_help.c:4573 msgid "remove an access method" msgstr "rimuovi un metodo di accesso" -#: sql_help.c:4589 +#: sql_help.c:4578 msgid "remove an aggregate function" msgstr "elimina una funzione aggregata" -#: sql_help.c:4594 +#: sql_help.c:4583 msgid "remove a cast" msgstr "elimina una conversione di tipi" -#: sql_help.c:4599 +#: sql_help.c:4588 msgid "remove a collation" msgstr "elimina un ordinamento" -#: sql_help.c:4604 +#: sql_help.c:4593 msgid "remove a conversion" msgstr "elimina una conversione" -#: sql_help.c:4609 +#: sql_help.c:4598 msgid "remove a database" msgstr "elimina un database" -#: sql_help.c:4614 +#: sql_help.c:4603 msgid "remove a domain" msgstr "elimina un dominio" -#: sql_help.c:4619 +#: sql_help.c:4608 msgid "remove an event trigger" msgstr "elimina un trigger di evento" -#: sql_help.c:4624 +#: sql_help.c:4613 msgid "remove an extension" msgstr "elimina una estensione" -#: sql_help.c:4629 +#: sql_help.c:4618 msgid "remove a foreign-data wrapper" msgstr "elimina un wrapper di dati esterni" -#: sql_help.c:4634 +#: sql_help.c:4623 msgid "remove a foreign table" msgstr "elimina una tabella esterna" -#: sql_help.c:4639 +#: sql_help.c:4628 msgid "remove a function" msgstr "elimina una funzione" -#: sql_help.c:4644 sql_help.c:4689 sql_help.c:4759 +#: sql_help.c:4633 sql_help.c:4678 sql_help.c:4748 msgid "remove a database role" msgstr "elimina un ruolo di database" -#: sql_help.c:4649 +#: sql_help.c:4638 msgid "remove an index" msgstr "elimina un indice" -#: sql_help.c:4654 +#: sql_help.c:4643 msgid "remove a procedural language" msgstr "elimina un linguaggio procedurale" -#: sql_help.c:4659 +#: sql_help.c:4648 msgid "remove a materialized view" msgstr "elimina una vista materializzata" -#: sql_help.c:4664 +#: sql_help.c:4653 msgid "remove an operator" msgstr "elimina un operatore" -#: sql_help.c:4669 +#: sql_help.c:4658 msgid "remove an operator class" msgstr "elimina una classe di operatori" -#: sql_help.c:4674 +#: sql_help.c:4663 msgid "remove an operator family" msgstr "elimina una famiglia operatore" -#: sql_help.c:4679 +#: sql_help.c:4668 msgid "remove database objects owned by a database role" msgstr "elimina gli oggetti database di proprietà di un ruolo di database" -#: sql_help.c:4684 +#: sql_help.c:4673 msgid "remove a row level security policy from a table" msgstr "rimuovi una regola di sicurezza per riga da una tabella" -#: sql_help.c:4694 +#: sql_help.c:4683 msgid "remove a rewrite rule" msgstr "elimina una regola di riscrittura" -#: sql_help.c:4699 +#: sql_help.c:4688 msgid "remove a schema" msgstr "elimina uno schema" -#: sql_help.c:4704 +#: sql_help.c:4693 msgid "remove a sequence" msgstr "elimina una sequenza" -#: sql_help.c:4709 +#: sql_help.c:4698 msgid "remove a foreign server descriptor" msgstr "elimina una descrizione server esterno" -#: sql_help.c:4714 +#: sql_help.c:4703 msgid "remove a table" msgstr "elimina una tabella" -#: sql_help.c:4719 +#: sql_help.c:4708 msgid "remove a tablespace" msgstr "elimina un tablespace" -#: sql_help.c:4724 +#: sql_help.c:4713 msgid "remove a text search configuration" msgstr "elimina una configurazione di ricerca testo" -#: sql_help.c:4729 +#: sql_help.c:4718 msgid "remove a text search dictionary" msgstr "elimina un dizionario di ricerca testo" -#: sql_help.c:4734 +#: sql_help.c:4723 msgid "remove a text search parser" msgstr "elimina un analizzatore di ricerca testo" -#: sql_help.c:4739 +#: sql_help.c:4728 msgid "remove a text search template" msgstr "elimina un modello di ricerca testo" -#: sql_help.c:4744 +#: sql_help.c:4733 msgid "remove a transform" msgstr "elimina una trasformazione" -#: sql_help.c:4749 +#: sql_help.c:4738 msgid "remove a trigger" msgstr "elimina un trigger" -#: sql_help.c:4754 +#: sql_help.c:4743 msgid "remove a data type" msgstr "elimina un tipo di dato" -#: sql_help.c:4764 +#: sql_help.c:4753 msgid "remove a user mapping for a foreign server" msgstr "elimina la mappatura degli utenti per un server esterno" -#: sql_help.c:4769 +#: sql_help.c:4758 msgid "remove a view" msgstr "elimina una vista" -#: sql_help.c:4779 +#: sql_help.c:4768 msgid "execute a prepared statement" msgstr "esegui una istruzione preparata" -#: sql_help.c:4784 +#: sql_help.c:4773 msgid "show the execution plan of a statement" msgstr "mostra il piano di esecuzione di una istruzione" -#: sql_help.c:4789 +#: sql_help.c:4778 msgid "retrieve rows from a query using a cursor" msgstr "estrai delle righe da una query utilizzando un cursore" -#: sql_help.c:4794 +#: sql_help.c:4783 msgid "define access privileges" msgstr "definisci i privilegi di accesso" -#: sql_help.c:4799 +#: sql_help.c:4788 msgid "import table definitions from a foreign server" msgstr "importa le definizioni di tabella da un server remoto" -#: sql_help.c:4804 +#: sql_help.c:4793 msgid "create new rows in a table" msgstr "crea nuove righe in una tabella" -#: sql_help.c:4809 +#: sql_help.c:4798 msgid "listen for a notification" msgstr "attendi l'arrivo di notifiche" -#: sql_help.c:4814 +#: sql_help.c:4803 msgid "load a shared library file" msgstr "carica un file di libreria condivisa" -#: sql_help.c:4819 +#: sql_help.c:4808 msgid "lock a table" msgstr "blocca una tabella" -#: sql_help.c:4824 +#: sql_help.c:4813 msgid "position a cursor" msgstr "posiziona un cursore" -#: sql_help.c:4829 +#: sql_help.c:4818 msgid "generate a notification" msgstr "genera una notifica" -#: sql_help.c:4834 +#: sql_help.c:4823 msgid "prepare a statement for execution" msgstr "prepara una istruzione per l'esecuzione" -#: sql_help.c:4839 +#: sql_help.c:4828 msgid "prepare the current transaction for two-phase commit" msgstr "prepara la transazione corrente per un commit a due fasi" -#: sql_help.c:4844 +#: sql_help.c:4833 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:4849 +#: sql_help.c:4838 msgid "replace the contents of a materialized view" msgstr "sostituisci il contenuto di una vista materializzata" -#: sql_help.c:4854 +#: sql_help.c:4843 msgid "rebuild indexes" msgstr "ricostruisci indici" -#: sql_help.c:4859 +#: sql_help.c:4848 msgid "destroy a previously defined savepoint" msgstr "distruggi un punto di salvataggio precedentemente definito" -#: sql_help.c:4864 +#: sql_help.c:4853 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:4869 +#: sql_help.c:4858 msgid "remove access privileges" msgstr "elimina i privilegi di accesso" -#: sql_help.c:4879 +#: sql_help.c:4868 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:4884 +#: sql_help.c:4873 msgid "roll back to a savepoint" msgstr "annulla le modifiche fino a un punto di salvataggio" -#: sql_help.c:4889 +#: sql_help.c:4878 msgid "define a new savepoint within the current transaction" msgstr "definisci un nuovo punto di salvataggio per la transazione corrente" -#: sql_help.c:4894 +#: sql_help.c:4883 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:4899 sql_help.c:4944 sql_help.c:4974 +#: sql_help.c:4888 sql_help.c:4933 sql_help.c:4963 msgid "retrieve rows from a table or view" msgstr "estrai righe da una tabella o una vista" -#: sql_help.c:4909 +#: sql_help.c:4898 msgid "change a run-time parameter" msgstr "modifica un parametro di esecuzione" -#: sql_help.c:4914 +#: sql_help.c:4903 msgid "set constraint check timing for the current transaction" msgstr "imposta il momento del controllo dei vincoli per la transazione corrente" -#: sql_help.c:4919 +#: sql_help.c:4908 msgid "set the current user identifier of the current session" msgstr "imposta l'identificativo utente della sessione corrente" -#: sql_help.c:4924 +#: sql_help.c:4913 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:4929 +#: sql_help.c:4918 msgid "set the characteristics of the current transaction" msgstr "imposta le caratteristiche della transazione corrente" -#: sql_help.c:4934 +#: sql_help.c:4923 msgid "show the value of a run-time parameter" msgstr "mostra il valore di un parametro di esecuzione" -#: sql_help.c:4949 +#: sql_help.c:4938 msgid "empty a table or set of tables" msgstr "svuota una tabella o una lista di tabelle" -#: sql_help.c:4954 +#: sql_help.c:4943 msgid "stop listening for a notification" msgstr "termina l'attesa di notifiche" -#: sql_help.c:4959 +#: sql_help.c:4948 msgid "update rows of a table" msgstr "modifica le righe di una tabella" -#: sql_help.c:4964 +#: sql_help.c:4953 msgid "garbage-collect and optionally analyze a database" msgstr "pulisci ed eventualmente analizza il database" -#: sql_help.c:4969 +#: sql_help.c:4958 msgid "compute a set of rows" msgstr "genera una sequenza di righe" @@ -5278,7 +5364,7 @@ msgstr "%s: il proprio programma eseguibile non è stato trovato\n" msgid "unrecognized value \"%s\" for \"%s\"; assuming \"%s\"\n" msgstr "valore \"%s\" non riconosciuto per \"%s\"; interpretato come \"%s\"\n" -#: tab-complete.c:3682 +#: tab-complete.c:3744 #, c-format msgid "" "tab completion query failed: %s\n" diff --git a/src/bin/psql/po/ja.po b/src/bin/psql/po/ja.po index 309fbbdf7a..d02a3f35f4 100644 --- a/src/bin/psql/po/ja.po +++ b/src/bin/psql/po/ja.po @@ -3,11 +3,11 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.4.2\n" +"Project-Id-Version: PostgreSQL 9.6.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2015-05-23 22:59+0900\n" +"POT-Creation-Date: 2017-01-09 22:43+0000\n" "PO-Revision-Date: 2015-05-27 18:55+0900\n" -"Last-Translator: KOIZUMI Satoru \n" +"Last-Translator: Okano Naoki \n" "Language-Team: jpug-doc \n" "Language: ja\n" "MIME-Version: 1.0\n" @@ -50,14 +50,14 @@ msgstr "シンボリックリンク \"%s\" を読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸã€‚" msgid "pclose failed: %s" msgstr "pcloseãŒå¤±æ•—ã—ã¾ã—ãŸ: %s" -#: ../../common/fe_memutils.c:33 ../../common/fe_memutils.c:60 -#: ../../common/fe_memutils.c:83 command.c:321 input.c:205 mainloop.c:72 -#: mainloop.c:234 +#: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 +#: ../../common/fe_memutils.c:98 command.c:342 input.c:227 mainloop.c:80 +#: mainloop.c:261 #, c-format msgid "out of memory\n" msgstr "メモリä¸è¶³ã§ã™\n" -#: ../../common/fe_memutils.c:77 +#: ../../common/fe_memutils.c:92 #, c-format msgid "cannot duplicate null pointer (internal error)\n" msgstr "null ãƒã‚¤ãƒ³ã‚¿ã‚’複製ã§ãã¾ã›ã‚“(内部エラー)。\n" @@ -67,7 +67,7 @@ msgstr "null ãƒã‚¤ãƒ³ã‚¿ã‚’複製ã§ãã¾ã›ã‚“(内部エラー)。\n" msgid "could not look up effective user ID %ld: %s" msgstr "実効ユーザID %ld ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ: %s" -#: ../../common/username.c:47 command.c:276 +#: ../../common/username.c:47 command.c:299 msgid "user does not exist" msgstr "ユーザãŒå­˜åœ¨ã—ã¾ã›ã‚“" @@ -111,227 +111,293 @@ msgstr "å­ãƒ—ロセスãŒã‚·ã‚°ãƒŠãƒ« %d ã§çµ‚了ã•ã›ã‚‰ã‚Œã¾ã—ãŸã€‚" msgid "child process exited with unrecognized status %d" msgstr "å­ãƒ—ロセスãŒä¸æ˜ŽãªçŠ¶æ…‹%dã«ã‚ˆã‚Šçµ‚了ã—ã¾ã—ãŸã€‚" -#: command.c:117 +#: ../../fe_utils/print.c:354 +#, c-format +msgid "(%lu row)" +msgid_plural "(%lu rows)" +msgstr[0] "(%lu 行)" +msgstr[1] "(%lu 行)" + +#: ../../fe_utils/print.c:2914 +#, c-format +msgid "Interrupted\n" +msgstr "中断ã•れã¾ã—ãŸ\n" + +#: ../../fe_utils/print.c:2978 +#, c-format +msgid "Cannot add header to table content: column count of %d exceeded.\n" +msgstr "テーブルã®å†…容ã«è¦‹å‡ºã—を追加ã§ãã¾ã›ã‚“ã§ã—ãŸï¼šåˆ—æ•° %d ãŒåˆ¶é™ã‚’è¶Šãˆã¦ã„ã¾ã™ã€‚\n" + +#: ../../fe_utils/print.c:3018 +#, c-format +msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" +msgstr "テーブルã®å†…容ã«ã‚»ãƒ«ã‚’追加ã§ãã¾ã›ã‚“ã§ã—ãŸï¼šå…¨ã‚»ãƒ«æ•° %d ãŒåˆ¶é™ã‚’è¶Šãˆã¦ã„ã¾ã™ã€‚\n" + +#: ../../fe_utils/print.c:3267 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "出力フォーマットãŒç„¡åŠ¹ï¼ˆå†…éƒ¨ã‚¨ãƒ©ãƒ¼ï¼‰ï¼š%d" + +#: ../../fe_utils/psqlscan.l:713 +#, c-format +msgid "skipping recursive expansion of variable \"%s\"\n" +msgstr "変数\"%s\"ã®å†å¸°å±•開をスキップã—ã¦ã„ã¾ã™\n" + +#: command.c:129 #, c-format msgid "Invalid command \\%s. Try \\? for help.\n" msgstr "\\%sコマンドã¯ç„¡åйã§ã™ã€‚\\? ã§ãƒ˜ãƒ«ãƒ—ã‚’å‚ç…§ã—ã¦ãã ã•ã„。\n" -#: command.c:119 +#: command.c:131 #, c-format msgid "invalid command \\%s\n" msgstr "\\%sã¯ç„¡åйãªã‚³ãƒžãƒ³ãƒ‰ã§ã™\n" -#: command.c:130 +#: command.c:142 #, c-format msgid "\\%s: extra argument \"%s\" ignored\n" msgstr "\\%s: 余分ãªå¼•æ•° \"%s\" ã¯ç„¡è¦–ã•れã¾ã—ãŸã€‚\n" -#: command.c:274 +#: command.c:297 #, c-format msgid "could not get home directory for user ID %ld: %s\n" msgstr "ユーザID %ld ã®ãƒ›ãƒ¼ãƒ ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’特定ã§ãã¾ã›ã‚“: %s\n" -#: command.c:292 +#: command.c:315 #, c-format msgid "\\%s: could not change directory to \"%s\": %s\n" msgstr "\\%s: ディレクトリを \"%s\" ã«å¤‰æ›´ã§ãã¾ã›ã‚“:%s\n" -#: command.c:307 common.c:446 common.c:886 +#: command.c:330 common.c:553 common.c:611 common.c:1144 #, c-format msgid "You are currently not connected to a database.\n" msgstr "ç¾åœ¨ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã¯æŽ¥ç¶šã—ã¦ã„ã¾ã›ã‚“。\n" -#: command.c:334 +#: command.c:355 #, 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:337 +#: command.c:358 #, c-format msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n" msgstr "ホスト\"%3$s\"上ã®ãƒãƒ¼ãƒˆ\"%4$s\"ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹\"%1$s\"ã«ãƒ¦ãƒ¼ã‚¶\"%2$s\"ã§æŽ¥ç¶šã—ã¦ã„ã¾ã™\n" -#: command.c:538 command.c:608 command.c:1403 +#: command.c:574 command.c:647 command.c:746 command.c:1584 #, c-format msgid "no query buffer\n" msgstr "å•ã„åˆã‚ã›ãƒãƒƒãƒ•ã‚¡ãŒã‚りã¾ã›ã‚“。\n" -#: command.c:571 command.c:3035 +#: command.c:607 command.c:3547 #, c-format msgid "invalid line number: %s\n" msgstr "無効ãªè¡Œç•ªå·ã§ã™: %s\n" -#: command.c:602 +#: command.c:640 #, c-format -msgid "The server (version %d.%d) does not support editing function source.\n" -msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ (%d.%d) ã¯é–¢æ•°ã®ã‚½ãƒ¼ã‚¹ç·¨é›†ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“\n" +#| msgid "The server (version %d.%d) does not support editing function source.\n" +msgid "The server (version %s) does not support editing function source.\n" +msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼ (ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s) ã¯é–¢æ•°ã®ã‚½ãƒ¼ã‚¹ç·¨é›†ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" -#: command.c:682 +#: command.c:721 command.c:792 msgid "No changes" msgstr "変更ãªã—" -#: command.c:736 +#: command.c:739 +#, c-format +#| msgid "The server (version %d.%d) does not support editing function source.\n" +msgid "The server (version %s) does not support editing view definitions.\n" +msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼ (ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s) ã¯é–¢æ•°ã®ã‚½ãƒ¼ã‚¹ç·¨é›†ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" + +#: command.c:846 #, c-format msgid "%s: invalid encoding name or conversion procedure not found\n" msgstr "%s: 符å·åŒ–æ–¹å¼åãŒç„¡åйã€ã¾ãŸã¯å¤‰æ›ç”¨ãƒ—ロシージャãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n" -#: command.c:833 command.c:883 command.c:897 command.c:914 command.c:1021 -#: command.c:1180 command.c:1383 command.c:1414 +#: command.c:871 command.c:1962 command.c:3649 common.c:153 common.c:200 +#: common.c:497 common.c:1190 common.c:1218 common.c:1319 copy.c:489 +#: copy.c:699 large_obj.c:156 large_obj.c:191 large_obj.c:253 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.c:875 +msgid "out of memory" +msgstr "メモリä¸è¶³ã§ã™" + +#: command.c:878 +#| msgid "there is no parameter $%d" +msgid "There is no previous error." +msgstr "ç›´å‰ã®ã‚¨ãƒ©ãƒ¼ãŒã‚りã¾ã›ã‚“。" + +#: command.c:972 command.c:1022 command.c:1036 command.c:1053 command.c:1160 +#: command.c:1324 command.c:1564 command.c:1595 #, c-format msgid "\\%s: missing required argument\n" msgstr "\\%s: å¿…è¦ãªå¼•æ•°ãŒã‚りã¾ã›ã‚“\n" -#: command.c:946 +#: command.c:1085 msgid "Query buffer is empty." msgstr "å•ã„åˆã‚ã›ãƒãƒƒãƒ•ã‚¡ã¯ç©ºã§ã™ã€‚" -#: command.c:956 +#: command.c:1095 msgid "Enter new password: " msgstr "æ–°ã—ã„パスワード: " -#: command.c:957 +#: command.c:1096 msgid "Enter it again: " msgstr "ã‚‚ã†ä¸€åº¦å…¥åŠ›ã—ã¦ãã ã•ã„:" -#: command.c:961 +#: command.c:1100 #, c-format msgid "Passwords didn't match.\n" msgstr "パスワードãŒä¸€è‡´ã—ã¾ã›ã‚“。\n" -#: command.c:979 +#: command.c:1118 #, c-format msgid "Password encryption failed.\n" msgstr "ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ã®æš—å·åŒ–ã«å¤±æ•—ã—ã¾ã—ãŸã€‚\n" -#: command.c:1050 command.c:1161 command.c:1388 +#: command.c:1189 command.c:1305 command.c:1569 #, c-format msgid "\\%s: error while setting variable\n" msgstr "\\%s: 変数を設定ã—ã¦ã„る時ã«ã‚¨ãƒ©ãƒ¼\n" -#: command.c:1108 +#: command.c:1252 msgid "Query buffer reset (cleared)." msgstr "å•ã„åˆã‚ã›ãƒãƒƒãƒ•ã‚¡ãŒãƒªã‚»ãƒƒãƒˆï¼ˆã‚¯ãƒªã‚¢ï¼‰ã•れã¾ã—ãŸã€‚" -#: command.c:1120 +#: command.c:1264 #, c-format msgid "Wrote history to file \"%s\".\n" msgstr "ファイル\"%s\"ã«å±¥æ­´ã‚’出力ã—ã¾ã—ãŸã€‚\n" -#: command.c:1185 +#: command.c:1329 #, c-format msgid "\\%s: environment variable name must not contain \"=\"\n" msgstr "\\%s: 環境変数ã®åå‰ã«ã¯\"=\"ã‚’å«ã‚られã¾ã›ã‚“\n" -#: command.c:1227 +#: command.c:1373 #, c-format -msgid "The server (version %d.%d) does not support showing function source.\n" -msgstr "ã“ã®ã‚µãƒ¼ãƒ(ãƒãƒ¼ã‚¸ãƒ§ãƒ³%d.%d)ã¯é–¢æ•°ã‚½ãƒ¼ã‚¹ã®è¡¨ç¤ºã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" +#| msgid "The server (version %d.%d) does not support showing function source.\n" +msgid "The server (version %s) does not support showing function source.\n" +msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼ (ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s) ã¯é–¢æ•°ã‚½ãƒ¼ã‚¹ã®è¡¨ç¤ºã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" -#: command.c:1233 +#: command.c:1380 #, c-format msgid "function name is required\n" msgstr "関数åãŒå¿…è¦ã§ã™\n" -#: command.c:1368 +#: command.c:1455 +#, c-format +#| msgid "The server (version %d.%d) does not support showing function source.\n" +msgid "The server (version %s) does not support showing view definitions.\n" +msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼ (ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s) ã¯ãƒ“ュー定義ã®è¡¨ç¤ºã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" + +#: command.c:1462 +#, c-format +#| msgid "function name is required\n" +msgid "view name is required\n" +msgstr "ビューåãŒå¿…è¦ã§ã™\n" + +#: command.c:1549 msgid "Timing is on." msgstr "タイミング㯠on ã§ã™ã€‚" -#: command.c:1370 +#: command.c:1551 msgid "Timing is off." msgstr "タイミング㯠off ã§ã™ã€‚" -#: command.c:1431 command.c:1451 command.c:2072 command.c:2075 command.c:2078 -#: command.c:2084 command.c:2086 command.c:2094 command.c:2104 command.c:2113 -#: command.c:2127 command.c:2144 command.c:2203 common.c:74 copy.c:333 -#: copy.c:393 copy.c:408 psqlscan.l:1677 psqlscan.l:1688 psqlscan.l:1698 +#: command.c:1613 command.c:1633 command.c:2311 command.c:2314 command.c:2317 +#: command.c:2323 command.c:2325 command.c:2333 command.c:2343 command.c:2352 +#: command.c:2366 command.c:2383 command.c:2441 common.c:68 copy.c:332 +#: copy.c:392 copy.c:405 psqlscanslash.l:711 psqlscanslash.l:722 +#: psqlscanslash.l:732 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" -#: command.c:1530 +#: command.c:1727 #, c-format msgid "+ opt(%d) = |%s|\n" msgstr "+ opt(%d) = |%s|\n" -#: command.c:1556 startup.c:184 +#: command.c:1753 startup.c:207 msgid "Password: " msgstr "パスワード: " -#: command.c:1561 startup.c:186 +#: command.c:1758 startup.c:209 #, c-format msgid "Password for user %s: " msgstr "ユーザ %s ã®ãƒ‘スワード: " -#: command.c:1608 +#: command.c:1809 #, c-format msgid "All connection parameters must be supplied because no database connection exists\n" msgstr "データベース接続ãŒã‚りã¾ã›ã‚“ã®ã§ã™ã¹ã¦ã®æŽ¥ç¶šãƒ‘ラメータを指定ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: command.c:1725 command.c:3069 common.c:120 common.c:413 common.c:478 -#: common.c:929 common.c:954 common.c:1051 copy.c:492 copy.c:695 -#: large_obj.c:158 large_obj.c:193 large_obj.c:255 psqlscan.l:1949 -#, c-format -msgid "%s" -msgstr "%s" - -#: command.c:1729 +#: command.c:1966 #, c-format msgid "Previous connection kept\n" msgstr "以å‰ã®æŽ¥ç¶šã¯ä¿æŒã•れã¦ã„ã¾ã™ã€‚\n" -#: command.c:1733 +#: command.c:1970 #, c-format msgid "\\connect: %s" msgstr "\\connect: %s" -#: command.c:1766 +#: command.c:2006 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n" msgstr "ãƒãƒ¼ãƒˆ\"%4$s\"ã®ã‚½ã‚±ãƒƒãƒˆ\"%3$s\"経由ã§ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹\"%1$s\"ã«ãƒ¦ãƒ¼ã‚¶\"%2$s\"ã¨ã—ã¦æŽ¥ç¶šã—ã¾ã—ãŸã€‚\n" -#: command.c:1769 +#: command.c:2009 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n" msgstr "ホスト\"%3$s\"上ã®ãƒãƒ¼ãƒˆ\"%4$s\"ã§ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹\"%1$s\"ã«ãƒ¦ãƒ¼ã‚¶\"%2$s\"ã¨ã—ã¦æŽ¥ç¶šã—ã¾ã—ãŸã€‚\n" -#: command.c:1773 +#: command.c:2013 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\".\n" msgstr "データベース \"%s\" ã«ãƒ¦ãƒ¼ã‚¶\"%s\"ã¨ã—ã¦æŽ¥ç¶šã—ã¾ã—ãŸã€‚\n" -#: command.c:1807 +#: command.c:2046 #, c-format msgid "%s (%s, server %s)\n" msgstr "%s (%s, サーãƒãƒ¼ %s)\n" -#: command.c:1815 +#: command.c:2054 #, c-format +#| msgid "" +#| "WARNING: %s major version %d.%d, server major version %d.%d.\n" +#| " Some psql features might not work.\n" msgid "" -"WARNING: %s major version %d.%d, server major version %d.%d.\n" +"WARNING: %s major version %s, server major version %s.\n" " Some psql features might not work.\n" msgstr "" -"注æ„: %s メジャーãƒãƒ¼ã‚¸ãƒ§ãƒ³ %d.%d, サーãƒãƒ¼ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %d.%d.\n" +"注æ„: %s メジャーãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s, サーãƒãƒ¼ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s.\n" " psql ã®æ©Ÿèƒ½ã®ä¸­ã§ã€å‹•作ã—ãªã„ã‚‚ã®ãŒã‚ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。\n" -#: command.c:1845 +#: command.c:2091 #, c-format -msgid "SSL connection (protocol: %s, cipher: %s, bits: %d, compression: %s)\n" -msgstr "SSL接続(プロトコル: %s, æš—å·åŒ–æ–¹å¼: %s, ビット長: %d, 圧縮: %s)\n" +#| msgid "SSL connection (protocol: %s, cipher: %s, bits: %d, compression: %s)\n" +msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n" +msgstr "SSL接続(プロトコル: %s, æš—å·åŒ–æ–¹å¼: %s, ビット長: %s, 圧縮: %s)\n" -#: command.c:1847 help.c:46 +#: command.c:2092 command.c:2093 command.c:2094 +#| msgid "unknown\n" +msgid "unknown" +msgstr "unknown" + +#: command.c:2095 help.c:46 msgid "off" msgstr "オフ" -#: command.c:1847 help.c:46 +#: command.c:2095 help.c:46 msgid "on" msgstr "オン" -#: command.c:1856 -#, c-format -msgid "SSL connection (unknown cipher)\n" -msgstr "SSL 接続 (æœªå®šç¾©ã®æš—å·åŒ–æ–¹å¼)\n" - -#: command.c:1877 +#: command.c:2115 #, c-format msgid "" "WARNING: Console code page (%u) differs from Windows code page (%u)\n" @@ -344,270 +410,344 @@ msgstr "" " (ウィンドウズユーザã®ãŸã‚ã«ï¼‰ã‚’å‚ç…§ã—ã¦ãã ã•ã„。\n" "\n" -#: command.c:1961 +#: command.c:2200 #, c-format msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number\n" msgstr "行番å·ã‚’指定ã™ã‚‹ãŸã‚ã«ã¯PSQL_EDITOR_LINENUMBER_ARG変数を設定ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" -#: command.c:1990 +#: command.c:2229 #, c-format msgid "could not start editor \"%s\"\n" msgstr "エディタ \"%s\" ã‚’èµ·å‹•ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚\n" -#: command.c:1992 +#: command.c:2231 #, c-format msgid "could not start /bin/sh\n" msgstr "/bin/sh ã‚’èµ·å‹•ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚\n" -#: command.c:2030 +#: command.c:2269 #, c-format msgid "could not locate temporary directory: %s\n" msgstr "一時ディレクトリã«ç§»å‹•ã§ãã¾ã›ã‚“: %s\n" -#: command.c:2057 +#: command.c:2296 #, c-format msgid "could not open temporary file \"%s\": %s\n" msgstr "一時ファイル \"%s\" ã‚’é–‹ã‘ã¾ã›ã‚“: %s\n" -#: command.c:2325 +#: command.c:2570 #, c-format -msgid "\\pset: allowed formats are unaligned, aligned, wrapped, html, latex, troff-ms\n" -msgstr "\\pset: 有効ãªãƒ•ォーマット㯠unaligned, aligned, wrapped, html, latex, troff-ms ã§ã™ã€‚\n" +#| msgid "\\pset: allowed formats are unaligned, aligned, wrapped, html, latex, troff-ms\n" +msgid "\\pset: allowed formats are unaligned, aligned, wrapped, html, asciidoc, latex, latex-longtable, troff-ms\n" +msgstr "\\pset: 有効ãªãƒ•ォーマット㯠unaligned, aligned, wrapped, html, asciidoc, latex, latex-longtable, troff-ms ã§ã™\n" -#: command.c:2344 +#: command.c:2589 #, c-format msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" msgstr "\\pset: 有効ãªè¡Œã‚¹ã‚¿ã‚¤ãƒ«ã¯ ascii, old-ascii, unicode ã§ã™ã€‚\n" -#: command.c:2490 command.c:2641 +#: command.c:2605 +#, c-format +#| msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" +msgid "\\pset: allowed Unicode border line styles are single, double\n" +msgstr "\\pset: 有効ãªUnicodeã®å¢ƒç•Œç·šã®ã‚¹ã‚¿ã‚¤ãƒ«ã¯ single, double ã§ã™\n" + +#: command.c:2620 +#, c-format +#| msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" +msgid "\\pset: allowed Unicode column line styles are single, double\n" +msgstr "\\pset: 有効ãªUnicodeã®åˆ—ã®ç·šã®ã‚¹ã‚¿ã‚¤ãƒ«ã¯ single, double ã§ã™\n" + +#: command.c:2635 +#, c-format +#| msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" +msgid "\\pset: allowed Unicode header line styles are single, double\n" +msgstr "\\pset: 有効ãªUnicodeã®ãƒ˜ãƒƒãƒ€ã®ç·šã®ã‚¹ã‚¿ã‚¤ãƒ«ã¯ single, double ã§ã™\n" + +#: command.c:2787 command.c:2966 #, c-format msgid "\\pset: unknown option: %s\n" msgstr "\\pset: 未定義ã®ã‚ªãƒ—ション:%s\n" -#: command.c:2508 +#: command.c:2805 #, c-format msgid "Border style is %d.\n" msgstr "境界線ã®ã‚¹ã‚¿ã‚¤ãƒ«ã¯ %d ã§ã™ã€‚\n" -#: command.c:2514 +#: command.c:2811 #, c-format msgid "Target width is unset.\n" msgstr "対象幅ã¯ã‚»ãƒƒãƒˆã•れã¦ã„ã¾ã›ã‚“。\n" -#: command.c:2516 +#: command.c:2813 #, c-format msgid "Target width is %d.\n" msgstr "対象幅ã¯%dã§ã™ã€‚\n" -#: command.c:2523 +#: command.c:2820 #, c-format msgid "Expanded display is on.\n" msgstr "拡張表示㯠on ã§ã™ã€‚\n" -#: command.c:2525 +#: command.c:2822 #, c-format msgid "Expanded display is used automatically.\n" msgstr "拡張表示ãŒè‡ªå‹•çš„ã«ä½¿ç”¨ã•れã¾ã™\n" -#: command.c:2527 +#: command.c:2824 #, c-format msgid "Expanded display is off.\n" msgstr "拡張表示㯠off ã§ã™ã€‚\n" -#: command.c:2534 command.c:2542 +#: command.c:2831 command.c:2839 #, c-format msgid "Field separator is zero byte.\n" msgstr "フィールド区切り文字ã¯ã‚¼ãƒ­ãƒã‚¤ãƒˆã§ã™ã€‚\n" -#: command.c:2536 +#: command.c:2833 #, c-format msgid "Field separator is \"%s\".\n" msgstr "フィールド区切り文字㯠\"%s\" ã§ã™ã€‚\n" -#: command.c:2549 +#: command.c:2846 #, c-format msgid "Default footer is on.\n" msgstr "デフォルトã®ãƒ•ッタ㯠on ã§ã™ã€‚\n" -#: command.c:2551 +#: command.c:2848 #, c-format msgid "Default footer is off.\n" msgstr "デフォルトã®ãƒ•ッタ㯠off ã§ã™ã€‚\n" -#: command.c:2557 +#: command.c:2854 #, c-format msgid "Output format is %s.\n" msgstr "出力フォーマット㯠%s ã§ã™ã€‚\n" -#: command.c:2563 +#: command.c:2860 #, c-format msgid "Line style is %s.\n" msgstr "境界線ã®ã‚¹ã‚¿ã‚¤ãƒ«ã¯ %s ã§ã™ã€‚\n" -#: command.c:2570 +#: command.c:2867 #, c-format msgid "Null display is \"%s\".\n" msgstr "Null 表示㯠\"%s\" ã§ã™ã€‚\n" -#: command.c:2578 +#: command.c:2875 #, c-format msgid "Locale-adjusted numeric output is on.\n" msgstr "「数値出力ã®ãƒ­ã‚±ãƒ¼ãƒ«èª¿æ•´ã€ã¯ on ã§ã™ã€‚\n" -#: command.c:2580 +#: command.c:2877 #, c-format msgid "Locale-adjusted numeric output is off.\n" msgstr "「数値出力ã®ãƒ­ã‚±ãƒ¼ãƒ«èª¿æ•´ã€ã¯ off ã§ã™ã€‚\n" -#: command.c:2587 +#: command.c:2884 #, c-format msgid "Pager is used for long output.\n" msgstr "出力ãŒé•·ã„å ´åˆã¯ãƒšãƒ¼ã‚¸ãƒ£ãŒä½¿ã‚れã¾ã™ã€‚\n" -#: command.c:2589 +#: command.c:2886 #, c-format msgid "Pager is always used.\n" msgstr "常ã«ãƒšãƒ¼ã‚¸ãƒ£ãŒä½¿ã‚れã¾ã™ã€‚\n" -#: command.c:2591 +#: command.c:2888 #, c-format msgid "Pager usage is off.\n" msgstr "「ページャを使ã†ã€ã¯ off ã§ã™ã€‚\n" -#: command.c:2598 command.c:2608 +#: command.c:2894 +#, 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] "" +msgstr[1] "" + +#: command.c:2904 command.c:2914 #, c-format msgid "Record separator is zero byte.\n" msgstr "レコード区切り文字ã¯ã‚¼ãƒ­ãƒã‚¤ãƒˆã§ã™ã€‚\n" -#: command.c:2600 +#: command.c:2906 #, c-format msgid "Record separator is .\n" msgstr "レコード区切り文字㯠ã§ã™ã€‚\n" -#: command.c:2602 +#: command.c:2908 #, c-format msgid "Record separator is \"%s\".\n" msgstr "レコード区切り文字㯠\"%s\" ã§ã™ã€‚\n" -#: command.c:2615 +#: command.c:2921 #, c-format msgid "Table attributes are \"%s\".\n" msgstr "テーブル属性㯠\"%s\" ã§ã™ã€‚\n" -#: command.c:2618 +#: command.c:2924 #, c-format msgid "Table attributes unset.\n" msgstr "テーブル属性ã¯ã‚»ãƒƒãƒˆã•れã¦ã„ã¾ã›ã‚“。\n" -#: command.c:2625 +#: command.c:2931 #, c-format msgid "Title is \"%s\".\n" msgstr "タイトル㯠\"%s\" ã§ã™ã€‚\n" -#: command.c:2627 +#: command.c:2933 #, c-format msgid "Title is unset.\n" msgstr "タイトルã¯ã‚»ãƒƒãƒˆã•れã¦ã„ã¾ã›ã‚“。\n" -#: command.c:2634 +#: command.c:2940 #, c-format msgid "Tuples only is on.\n" msgstr "「タプルã®ã¿è¡¨ç¤ºã€ã¯ on ã§ã™ã€‚\n" -#: command.c:2636 +#: command.c:2942 #, c-format msgid "Tuples only is off.\n" msgstr "「タプルã®ã¿è¡¨ç¤ºã€ã¯ off ã§ã™ã€‚\n" -#: command.c:2787 +#: command.c:2948 +#, c-format +#| msgid "Border style is %d.\n" +msgid "Unicode border line style is \"%s\".\n" +msgstr "Unicodeã®å¢ƒç•Œç·šã®ã‚¹ã‚¿ã‚¤ãƒ«ã¯ \"%s\" ã§ã™ã€‚\n" + +#: command.c:2954 +#, c-format +#| msgid "Line style is %s.\n" +msgid "Unicode column line style is \"%s\".\n" +msgstr "Unicodeã®åˆ—ã®ç·šã®ã‚¹ã‚¿ã‚¤ãƒ«ã¯ \"%s\" ã§ã™ã€‚\n" + +#: command.c:2960 +#, c-format +#| msgid "Line style is %s.\n" +msgid "Unicode header line style is \"%s\".\n" +msgstr "Unicodeã®ãƒ˜ãƒƒãƒ€ã®ç·šã®ã‚¹ã‚¿ã‚¤ãƒ«ã¯ \"%s\" ã§ã™ã€‚\n" + +#: command.c:3120 #, c-format msgid "\\!: failed\n" msgstr "\\!: 失敗\n" -#: command.c:2807 command.c:2865 +#: command.c:3145 common.c:659 #, c-format msgid "\\watch cannot be used with an empty query\n" msgstr "\\watchを空ã®å•ã„åˆã‚ã›ã§ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“\n" -#: command.c:2828 +#: command.c:3186 #, c-format -msgid "Watch every %lds\t%s" -msgstr "%ld秒毎ã«ç›£è¦–ã—ã¾ã™\t%s" +#| msgid "%s (%s, server %s)\n" +msgid "%s\t%s (every %gs)\n" +msgstr "%s\t%s (%g秒毎)\n" -#: command.c:2872 +#: command.c:3189 #, c-format -msgid "\\watch cannot be used with COPY\n" -msgstr "\\watchã§ã¯COPYを使用ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“\n" +#| msgid "%s (%s, server %s)\n" +msgid "%s (every %gs)\n" +msgstr "%s (%g秒毎)\n" -#: command.c:2878 +#: command.c:3243 command.c:3250 common.c:559 common.c:566 common.c:1173 #, c-format -msgid "unexpected result status for \\watch\n" -msgstr "\\watchã«å¯¾ã™ã‚‹æƒ³å®šå¤–ã®çµæžœçŠ¶æ…‹\n" +msgid "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" +msgstr "" +"********* å•ã„åˆã‚ã› ********\n" +"%s\n" +"*****************************\n" +"\n" + +#: command.c:3442 +#, c-format +#| msgid "\"%s\" is not a view" +msgid "\"%s.%s\" is not a view\n" +msgstr "\"%s.%s\" ã¯ãƒ“ューã§ã¯ã‚りã¾ã›ã‚“\n" + +#: command.c:3458 +#, c-format +#| msgid "WARNING: could not parse proconfig array\n" +msgid "could not parse reloptions array\n" +msgstr "reloptionsé…列ã®è§£æžãŒã§ãã¾ã›ã‚“ã§ã—ãŸ\n" + +#: common.c:138 +#, c-format +#| msgid "can't escape without active connection\n" +msgid "cannot escape without active connection\n" +msgstr "æœ‰åŠ¹ãªæŽ¥ç¶šãªã—ã§ã¯ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ã§ãã¾ã›ã‚“\n" -#: common.c:287 +#: common.c:371 #, c-format msgid "connection to server was lost\n" msgstr "サーãƒãƒ¼ã¸ã®æŽ¥ç¶šãŒåˆ‡ã‚Œã¾ã—ãŸã€‚\n" -#: common.c:291 +#: common.c:375 #, c-format msgid "The connection to the server was lost. Attempting reset: " msgstr "サーãƒãƒ¼ã¸ã®æŽ¥ç¶šãŒåˆ‡ã‚Œã¾ã—ãŸã€‚リセットã—ã¦ã„ã¾ã™: " -#: common.c:296 +#: common.c:380 #, c-format msgid "Failed.\n" msgstr "失敗。\n" -#: common.c:303 +#: common.c:387 #, c-format msgid "Succeeded.\n" msgstr "æˆåŠŸã€‚\n" -#: common.c:403 common.c:683 common.c:851 +#: common.c:487 common.c:936 common.c:1108 #, c-format msgid "unexpected PQresultStatus: %d\n" msgstr "想定外ã®PQresultStatus: %d\n" -#: common.c:452 common.c:459 common.c:912 +#: common.c:666 #, c-format -msgid "" -"********* QUERY **********\n" -"%s\n" -"**************************\n" -"\n" -msgstr "" -"********* å•ã„åˆã‚ã› ********\n" -"%s\n" -"*****************************\n" -"\n" +msgid "\\watch cannot be used with COPY\n" +msgstr "\\watchã§ã¯COPYを使用ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“\n" -#: common.c:513 +#: common.c:671 +#, c-format +msgid "unexpected result status for \\watch\n" +msgstr "\\watchã«å¯¾ã™ã‚‹æƒ³å®šå¤–ã®çµæžœçŠ¶æ…‹\n" + +#: common.c:682 common.c:1335 +#, c-format +msgid "Time: %.3f ms\n" +msgstr "時間: %.3f ms\n" + +#: common.c:700 #, 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:516 +#: common.c:703 #, c-format msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n" msgstr "PID %2$d ã‚’æŒã¤ã‚µãƒ¼ãƒãƒ¼ãƒ—ロセスã‹ã‚‰éžåŒæœŸé€šçŸ¥ \"%1$s\" ã‚’å—ä¿¡ã—ã¾ã—ãŸã€‚\n" -#: common.c:578 +#: common.c:761 #, c-format msgid "no rows returned for \\gset\n" msgstr "\\gsetã«å¯¾ã—ã¦è¡ŒãŒè¿”ã•れã¾ã›ã‚“ã§ã—ãŸ\n" -#: common.c:583 +#: common.c:766 #, c-format msgid "more than one row returned for \\gset\n" msgstr "\\gsetã«å¯¾ã—ã¦è¤‡æ•°ã®è¡ŒãŒè¿”ã•れã¾ã—ãŸ\n" -#: common.c:609 +#: common.c:792 #, c-format msgid "could not set variable \"%s\"\n" msgstr "変数 \"%s\" をセットã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: common.c:894 +#: common.c:1153 #, c-format msgid "" "***(Single step mode: verify command)*******************************************\n" @@ -618,71 +758,73 @@ msgstr "" "%s\n" "***([Enter] を押ã—ã¦é€²ã‚€ã‹ã€x [Enter] ã§ã‚­ãƒ£ãƒ³ã‚»ãƒ«)**************\n" -#: common.c:945 +#: common.c:1208 #, c-format -msgid "The server (version %d.%d) does not support savepoints for ON_ERROR_ROLLBACK.\n" -msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼(ãƒãƒ¼ã‚¸ãƒ§ãƒ³%d.%d)ã§ã¯ã€ON_ERROR_ROLLBACK用ã®ã‚»ãƒ¼ãƒ–ãƒã‚¤ãƒ³ãƒˆã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" +#| msgid "The server (version %d.%d) does not support savepoints for ON_ERROR_ROLLBACK.\n" +msgid "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK.\n" +msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼ (ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s) ã§ã¯ã€ON_ERROR_ROLLBACK用ã®ã‚»ãƒ¼ãƒ–ãƒã‚¤ãƒ³ãƒˆã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" -#: common.c:1039 +#: common.c:1264 #, c-format -msgid "unexpected transaction status (%d)\n" -msgstr "想定外ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³çŠ¶æ…‹ (%d)\n" +#| msgid "STATEMENT: " +msgid "STATEMENT: %s\n" +msgstr "ステートメント: %s\n" -#: common.c:1067 +#: common.c:1307 #, c-format -msgid "Time: %.3f ms\n" -msgstr "時間: %.3f ms\n" +msgid "unexpected transaction status (%d)\n" +msgstr "想定外ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³çŠ¶æ…‹ (%d)\n" -#: copy.c:98 +#: copy.c:99 #, c-format msgid "\\copy: arguments required\n" msgstr "\\copy: 引数ãŒã‚りã¾ã›ã‚“。\n" -#: copy.c:253 +#: copy.c:254 #, c-format msgid "\\copy: parse error at \"%s\"\n" msgstr "\\copy: \"%s\" ã§ãƒ‘ースエラー発生\n" -#: copy.c:255 +#: copy.c:256 #, c-format msgid "\\copy: parse error at end of line\n" msgstr "\\copy: 行末ã§ãƒ‘ースエラー発生\n" -#: copy.c:330 +#: copy.c:329 #, c-format msgid "could not execute command \"%s\": %s\n" msgstr "コマンド\"%s\"を実行ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: copy.c:346 +#: copy.c:345 #, c-format msgid "could not stat file \"%s\": %s\n" msgstr "ファイル\"%s\"ã®statãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: copy.c:350 +#: copy.c:349 #, c-format msgid "%s: cannot copy from/to a directory\n" msgstr "%s: ディレクトリã‹ã‚‰ï¼ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¸ã®ã‚³ãƒ”ーã¯ã§ãã¾ã›ã‚“。\n" -#: copy.c:387 +#: copy.c:386 #, c-format msgid "could not close pipe to external command: %s\n" msgstr "外部コマンドã«å¯¾ã™ã‚‹ãƒ‘イプをクローズã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: copy.c:455 copy.c:466 +#: copy.c:452 copy.c:463 #, c-format msgid "could not write COPY data: %s\n" msgstr "COPY 対象データを書ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸï¼š%s\n" -#: copy.c:473 +#: copy.c:470 #, c-format msgid "COPY data transfer failed: %s" msgstr "COPY 対象データã®è»¢é€ã«å¤±æ•—ã—ã¾ã—ãŸï¼š%s" -#: copy.c:534 +#: copy.c:531 msgid "canceled by user" msgstr "ユーザã«ã‚ˆã‚Šã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•れã¾ã—ãŸ" -#: copy.c:544 +#: copy.c:542 msgid "" "Enter data to be copied followed by a newline.\n" "End with a backslash and a period on a line by itself." @@ -690,48 +832,97 @@ msgstr "" "コピーã™ã‚‹ãƒ‡ãƒ¼ã‚¿ã«ç¶šã„ã¦æ”¹è¡Œã‚’入力ã—ã¾ã™ã€‚\n" "ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥(\\)ã¨ãƒ”リオドã ã‘ã®è¡Œã§çµ‚了ã—ã¾ã™ã€‚" -#: copy.c:667 +#: copy.c:671 msgid "aborted because of read failure" msgstr "読ã¿è¾¼ã¿ã«å¤±æ•—ã—ãŸãŸã‚異常終了ã—ã¾ã—ãŸ" -#: copy.c:691 +#: copy.c:695 msgid "trying to exit copy mode" msgstr "コピーモードを終了ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚" -#: describe.c:71 describe.c:259 describe.c:491 describe.c:615 describe.c:758 -#: describe.c:844 describe.c:914 describe.c:2759 describe.c:2964 -#: describe.c:3054 describe.c:3299 describe.c:3436 describe.c:3665 -#: describe.c:3737 describe.c:3748 describe.c:3807 describe.c:4215 -#: describe.c:4294 +#: crosstabview.c:125 +#, c-format +#| msgid "command did not produce a result set" +msgid "\\crosstabview: statement did not return a result set\n" +msgstr "\\crosstabview: ステートメントã¯çµæžœã‚»ãƒƒãƒˆã‚’è¿”ã—ã¾ã›ã‚“ã§ã—ãŸ\n" + +#: crosstabview.c:131 +#, c-format +#| msgid "ts_stat query must return one tsvector column" +msgid "\\crosstabview: query must return at least three columns\n" +msgstr "\\crosstabview: å•ã„åˆã‚ã›ã¯å°‘ãªãã¨ã‚‚3ã¤ã®åˆ—ã‚’è¿”ã•ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" + +#: crosstabview.c:158 +#, c-format +msgid "\\crosstabview: vertical and horizontal headers must be different columns\n" +msgstr "\\crosstabview: 縦方å‘ã¨æ¨ªæ–¹å‘ã®ãƒ˜ãƒƒãƒ€ã¯ç•°ãªã‚‹åˆ—ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" + +#: crosstabview.c:174 +#, c-format +msgid "\\crosstabview: data column must be specified when query returns more than three columns\n" +msgstr "\\crosstabview: å•ã„åˆã‚ã›ãŒ3ã¤ã‚ˆã‚Šå¤šã列を返ã™ã¨ãã¯å‡ºåŠ›åˆ—ãŒæŒ‡å®šã•れãªã‘れã°ãªã‚Šã¾ã›ã‚“\n" + +#: crosstabview.c:230 +#, c-format +#| msgid "maximum number of committed subtransactions (%d) exceeded" +msgid "\\crosstabview: maximum number of columns (%d) exceeded\n" +msgstr "\\crosstabview: åˆ—ã®æœ€å¤§æ•° (%d) ã®åˆ¶é™ã‚’è¶Šãˆã¾ã—ãŸ\n" + +#: crosstabview.c:399 +#, c-format +msgid "\\crosstabview: query result contains multiple data values for row \"%s\", column \"%s\"\n" +msgstr "\\crosstabview: 行 \"%s\", 列 \"%s\" ã«ã¤ã„ã¦å•ã„åˆã‚ã›çµæžœãŒè¤‡æ•°ã®ãƒ‡ãƒ¼ã‚¿å€¤ã‚’å«ã‚“ã§ã„ã¾ã™\n" + +#: crosstabview.c:647 +#, c-format +#| msgid "column number %d is out of range 0..%d" +msgid "\\crosstabview: column number %d is out of range 1..%d\n" +msgstr "\\crosstabview: åˆ—ç•ªå· %d 㯠1..%d ã®ç¯„囲を超ãˆã¦ã„ã¾ã™\n" + +#: crosstabview.c:672 +#, c-format +msgid "\\crosstabview: ambiguous column name: \"%s\"\n" +msgstr "\\crosstabview: 曖昧ãªåˆ—å: \"%s\"\n" + +#: crosstabview.c:680 +#, c-format +msgid "\\crosstabview: column name not found: \"%s\"\n" +msgstr "\\crosstabview: 列åãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“: \"%s\"\n" + +#: describe.c:71 describe.c:340 describe.c:597 describe.c:727 describe.c:870 +#: describe.c:990 describe.c:1060 describe.c:3035 describe.c:3240 +#: describe.c:3330 describe.c:3578 describe.c:3718 describe.c:3950 +#: describe.c:4025 describe.c:4036 describe.c:4098 describe.c:4518 +#: describe.c:4601 msgid "Schema" msgstr "スキーマ" -#: describe.c:72 describe.c:156 describe.c:164 describe.c:260 describe.c:492 -#: describe.c:616 describe.c:677 describe.c:759 describe.c:915 describe.c:2760 -#: describe.c:2886 describe.c:2965 describe.c:3055 describe.c:3134 -#: describe.c:3300 describe.c:3364 describe.c:3437 describe.c:3666 -#: describe.c:3738 describe.c:3749 describe.c:3808 describe.c:3997 -#: describe.c:4078 describe.c:4292 +#: describe.c:72 describe.c:160 describe.c:226 describe.c:234 describe.c:341 +#: describe.c:598 describe.c:728 describe.c:789 describe.c:871 describe.c:1061 +#: describe.c:3036 describe.c:3162 describe.c:3241 describe.c:3331 +#: describe.c:3410 describe.c:3579 describe.c:3643 describe.c:3719 +#: describe.c:3951 describe.c:4026 describe.c:4037 describe.c:4099 +#: describe.c:4291 describe.c:4375 describe.c:4599 msgid "Name" msgstr "åå‰" -#: describe.c:73 describe.c:272 describe.c:318 describe.c:335 +#: describe.c:73 describe.c:353 describe.c:399 describe.c:416 msgid "Result data type" msgstr "çµæžœã®ãƒ‡ãƒ¼ã‚¿åž‹" -#: describe.c:81 describe.c:94 describe.c:98 describe.c:273 describe.c:319 -#: describe.c:336 +#: describe.c:81 describe.c:94 describe.c:98 describe.c:354 describe.c:400 +#: describe.c:417 msgid "Argument data types" msgstr "引数ã®ãƒ‡ãƒ¼ã‚¿åž‹" -#: describe.c:105 describe.c:182 describe.c:365 describe.c:534 describe.c:631 -#: describe.c:702 describe.c:917 describe.c:1486 describe.c:2564 -#: describe.c:2793 describe.c:2917 describe.c:2991 describe.c:3064 -#: describe.c:3147 describe.c:3215 describe.c:3307 describe.c:3373 -#: describe.c:3438 describe.c:3574 describe.c:3614 describe.c:3682 -#: describe.c:3741 describe.c:3750 describe.c:3809 describe.c:4023 -#: describe.c:4100 describe.c:4229 describe.c:4295 large_obj.c:291 -#: large_obj.c:301 +#: describe.c:105 describe.c:170 describe.c:257 describe.c:462 describe.c:646 +#: describe.c:743 describe.c:814 describe.c:1063 describe.c:1676 +#: describe.c:2836 describe.c:3069 describe.c:3193 describe.c:3267 +#: describe.c:3340 describe.c:3423 describe.c:3491 describe.c:3586 +#: describe.c:3652 describe.c:3720 describe.c:3856 describe.c:3896 +#: describe.c:3967 describe.c:4029 describe.c:4038 describe.c:4100 +#: describe.c:4317 describe.c:4397 describe.c:4532 describe.c:4602 +#: large_obj.c:289 large_obj.c:299 msgid "Description" msgstr "説明" @@ -739,836 +930,915 @@ msgstr "説明" msgid "List of aggregate functions" msgstr "集約関数一覧" -#: describe.c:144 +#: describe.c:147 #, c-format -msgid "The server (version %d.%d) does not support tablespaces.\n" -msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ (%d.%d) ã¯ãƒ†ãƒ¼ãƒ–ルスペースをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" +#| msgid "The server (version %d.%d) does not support tablespaces.\n" +msgid "The server (version %s) does not support access methods.\n" +msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼ (ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s) ã¯ã‚¢ã‚¯ã‚»ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" -#: describe.c:157 describe.c:165 describe.c:362 describe.c:678 describe.c:843 -#: describe.c:2769 describe.c:2890 describe.c:3136 describe.c:3365 -#: describe.c:3998 describe.c:4079 large_obj.c:290 +#: describe.c:161 +#| msgid "index" +msgid "Index" +msgstr "インデックス" + +#: describe.c:162 describe.c:360 describe.c:405 describe.c:422 describe.c:877 +#: describe.c:999 describe.c:1645 describe.c:3044 describe.c:3242 +#: describe.c:4394 +msgid "Type" +msgstr "åž‹" + +#: describe.c:169 describe.c:4296 +msgid "Handler" +msgstr "ãƒãƒ³ãƒ‰ãƒ©ãƒ¼" + +#: describe.c:188 +#| msgid "List of casts" +msgid "List of access methods" +msgstr "アクセスメソッド一覧" + +#: describe.c:213 +#, c-format +#| msgid "The server (version %d.%d) does not support tablespaces.\n" +msgid "The server (version %s) does not support tablespaces.\n" +msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼ (ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s) ã¯ãƒ†ãƒ¼ãƒ–ルスペースをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" + +#: describe.c:227 describe.c:235 describe.c:450 describe.c:636 describe.c:790 +#: describe.c:989 describe.c:3045 describe.c:3166 describe.c:3412 +#: describe.c:3644 describe.c:4292 describe.c:4376 large_obj.c:288 msgid "Owner" msgstr "所有者" -#: describe.c:158 describe.c:166 +#: describe.c:228 describe.c:236 msgid "Location" msgstr "場所" -#: describe.c:177 describe.c:2382 +#: describe.c:247 describe.c:2647 msgid "Options" msgstr "オプション" -#: describe.c:199 +#: describe.c:252 describe.c:609 describe.c:806 describe.c:3061 +#: describe.c:3065 +msgid "Size" +msgstr "サイズ" + +#: describe.c:274 msgid "List of tablespaces" msgstr "テーブルスペース一覧" -#: describe.c:236 +#: describe.c:314 #, c-format msgid "\\df only takes [antwS+] as options\n" msgstr "\\dfã¯ã‚ªãƒ—ションã¨ã—ã¦[antwS+]ã®ã¿ã‚’å–ã‚‹ã“ã¨ãŒã§ãã¾ã™\n" -#: describe.c:242 +#: describe.c:322 #, c-format -msgid "\\df does not take a \"w\" option with server version %d.%d\n" -msgstr "サーãƒãƒ¼ãƒãƒ¼ã‚¸ãƒ§ãƒ³%d.%dã§ã¯\\dfã¯\"w\"オプションをå—ã‘付ã‘ã¾ã›ã‚“\n" +#| msgid "\\df does not take a \"w\" option with server version %d.%d\n" +msgid "\\df does not take a \"w\" option with server version %s\n" +msgstr "サーãƒãƒ¼ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s ã§ã¯\\dfã¯\"w\"オプションをå—ã‘付ã‘ã¾ã›ã‚“\n" #. translator: "agg" is short for "aggregate" -#: describe.c:275 describe.c:321 describe.c:338 +#: describe.c:356 describe.c:402 describe.c:419 msgid "agg" msgstr "agg(集約)" -#: describe.c:276 +#: describe.c:357 msgid "window" msgstr "window(ウィンドウ)" -#: describe.c:277 describe.c:322 describe.c:339 describe.c:1028 +#: describe.c:358 describe.c:403 describe.c:420 describe.c:1197 msgid "trigger" msgstr "trigger(トリガ)" -#: describe.c:278 describe.c:323 describe.c:340 +#: describe.c:359 describe.c:404 describe.c:421 msgid "normal" msgstr "normal(通常)" -#: describe.c:279 describe.c:324 describe.c:341 describe.c:765 describe.c:853 -#: describe.c:1455 describe.c:2768 describe.c:2966 describe.c:4097 -msgid "Type" -msgstr "åž‹" - -#: describe.c:355 -msgid "definer" -msgstr "定義元" - -#: describe.c:356 -msgid "invoker" -msgstr "呼ã³å‡ºã—å…ƒ" - -#: describe.c:357 -msgid "Security" -msgstr "セキュリティ" - -#: describe.c:358 +#: describe.c:432 msgid "immutable" msgstr "ä¸å¤‰" -#: describe.c:359 +#: describe.c:433 msgid "stable" msgstr "安定" -#: describe.c:360 +#: describe.c:434 msgid "volatile" msgstr "æ®ç™ºæ€§" -#: describe.c:361 +#: describe.c:435 msgid "Volatility" msgstr "æ®ç™ºæ€§" -#: describe.c:363 +#: describe.c:443 +#| msgid "restart" +msgid "restricted" +msgstr "restricted (制é™)" + +#: describe.c:444 +msgid "safe" +msgstr "safe (安全)" + +#: describe.c:445 +msgid "unsafe" +msgstr "unsafe (éžå®‰å…¨)" + +#: describe.c:446 +msgid "Parallel" +msgstr "パラレル" + +#: describe.c:451 +msgid "definer" +msgstr "定義元" + +#: describe.c:452 +msgid "invoker" +msgstr "呼ã³å‡ºã—å…ƒ" + +#: describe.c:453 +msgid "Security" +msgstr "セキュリティ" + +#: describe.c:460 msgid "Language" msgstr "言語" -#: describe.c:364 +#: describe.c:461 msgid "Source code" msgstr "ソースコード" -#: describe.c:462 +#: describe.c:560 msgid "List of functions" msgstr "関数一覧" -#: describe.c:502 +#: describe.c:608 msgid "Internal name" msgstr "内部å" -#: describe.c:503 describe.c:694 describe.c:2785 describe.c:2789 -msgid "Size" -msgstr "サイズ" - -#: describe.c:524 +#: describe.c:630 msgid "Elements" msgstr "è¦ç´ " -#: describe.c:574 +#: describe.c:686 msgid "List of data types" msgstr "データ型一覧" -#: describe.c:617 +#: describe.c:729 msgid "Left arg type" msgstr "左辺ã®åž‹" -#: describe.c:618 +#: describe.c:730 msgid "Right arg type" msgstr "å³è¾ºã®åž‹" -#: describe.c:619 +#: describe.c:731 msgid "Result type" msgstr "çµæžœã®åž‹" -#: describe.c:624 describe.c:3206 describe.c:3573 +#: describe.c:736 describe.c:3482 describe.c:3855 msgid "Function" msgstr "関数" -#: describe.c:649 +#: describe.c:761 msgid "List of operators" msgstr "演算å­ä¸€è¦§" -#: describe.c:679 +#: describe.c:791 msgid "Encoding" msgstr "エンコーディング" -#: describe.c:684 describe.c:3301 +#: describe.c:796 describe.c:3580 msgid "Collate" msgstr "ç…§åˆé †åº" -#: describe.c:685 describe.c:3302 +#: describe.c:797 describe.c:3581 msgid "Ctype" msgstr "Ctype(å¤‰æ›æ¼”ç®—å­)" -#: describe.c:698 +#: describe.c:810 msgid "Tablespace" msgstr "テーブルスペース" -#: describe.c:720 +#: describe.c:832 msgid "List of databases" msgstr "データベース一覧" -#: describe.c:760 describe.c:846 describe.c:2761 +#: describe.c:872 describe.c:992 describe.c:3037 msgid "table" msgstr "テーブル" -#: describe.c:761 describe.c:2762 +#: describe.c:873 describe.c:3038 msgid "view" msgstr "ビュー" -#: describe.c:762 describe.c:2763 +#: describe.c:874 describe.c:3039 msgid "materialized view" msgstr "マテリアライズドビュー" -#: describe.c:763 describe.c:848 describe.c:2765 +#: describe.c:875 describe.c:994 describe.c:3041 msgid "sequence" msgstr "シーケンス" -#: describe.c:764 describe.c:2767 +#: describe.c:876 describe.c:3043 msgid "foreign table" msgstr "外部テーブル" -#: describe.c:776 -msgid "Column access privileges" -msgstr "列ã®ã‚¢ã‚¯ã‚»ã‚¹æ¨©é™" +#: describe.c:888 +#| msgid "Column access privileges" +msgid "Column privileges" +msgstr "åˆ—ã®æ¨©é™" -#: describe.c:802 describe.c:4439 describe.c:4443 +#: describe.c:919 +msgid "Policies" +msgstr "ãƒãƒªã‚·ãƒ¼" + +#: describe.c:945 describe.c:4749 describe.c:4753 msgid "Access privileges" msgstr "アクセス権" -#: describe.c:831 +#: describe.c:976 #, c-format -msgid "The server (version %d.%d) does not support altering default privileges.\n" -msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼(ãƒãƒ¼ã‚¸ãƒ§ãƒ³%d.%d)ã¯ä»£æ›¿ã®ãƒ‡ãƒ•ォルト権é™ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" +#| msgid "The server (version %d.%d) does not support altering default privileges.\n" +msgid "The server (version %s) does not support altering default privileges.\n" +msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼ (ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s) ã¯ä»£æ›¿ã®ãƒ‡ãƒ•ォルト権é™ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" -#: describe.c:850 +#: describe.c:996 msgid "function" msgstr "関数" -#: describe.c:852 +#: describe.c:998 msgid "type" msgstr "åž‹" -#: describe.c:876 +#: describe.c:1022 msgid "Default access privileges" msgstr "デフォルトã®ã‚¢ã‚¯ã‚»ã‚¹æ¨©é™" -#: describe.c:916 +#: describe.c:1062 msgid "Object" msgstr "オブジェクト" -#: describe.c:930 sql_help.c:1595 -msgid "constraint" -msgstr "制約" +#: describe.c:1076 +#| msgid "table_constraint" +msgid "table constraint" +msgstr "テーブル制約" -#: describe.c:957 +#: describe.c:1098 +#| msgid "domain_constraint" +msgid "domain constraint" +msgstr "ドメイン制約" + +#: describe.c:1126 msgid "operator class" msgstr "演算å­ã‚¯ãƒ©ã‚¹" -#: describe.c:986 +#: describe.c:1155 msgid "operator family" msgstr "æ¼”ç®—å­æ—" -#: describe.c:1008 +#: describe.c:1177 msgid "rule" msgstr "ルール" -#: describe.c:1050 +#: describe.c:1219 msgid "Object descriptions" msgstr "オブジェクトã®èª¬æ˜Ž" -#: describe.c:1104 +#: describe.c:1273 #, c-format msgid "Did not find any relation named \"%s\".\n" msgstr "\"%s\" ã¨ã„ã†åå‰ã®ãƒªãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n" -#: describe.c:1295 +#: describe.c:1483 #, c-format msgid "Did not find any relation with OID %s.\n" msgstr "OID %s ã‚’æŒã¤ãƒªãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n" -#: describe.c:1399 +#: describe.c:1589 #, c-format msgid "Unlogged table \"%s.%s\"" msgstr "ログをå–らãªã„テーブル \"%s.%s\"" -#: describe.c:1402 +#: describe.c:1592 #, c-format msgid "Table \"%s.%s\"" msgstr "テーブル \"%s.%s\"" -#: describe.c:1406 +#: describe.c:1596 #, c-format msgid "View \"%s.%s\"" msgstr "ビュー \"%s.%s\"" -#: describe.c:1411 +#: describe.c:1601 #, c-format msgid "Unlogged materialized view \"%s.%s\"" msgstr "ログをå–らãªã„マテリアライズドビュー \"%s.%s\"" -#: describe.c:1414 +#: describe.c:1604 #, c-format msgid "Materialized view \"%s.%s\"" msgstr "マテリアライズドビュー \"%s.%s\"" -#: describe.c:1418 +#: describe.c:1608 #, c-format msgid "Sequence \"%s.%s\"" msgstr "シーケンス \"%s.%s\"" -#: describe.c:1423 +#: describe.c:1613 #, c-format msgid "Unlogged index \"%s.%s\"" msgstr "ログをå–らãªã„インデックス \"%s.%s\"" -#: describe.c:1426 +#: describe.c:1616 #, c-format msgid "Index \"%s.%s\"" msgstr "インデックス \"%s.%s\"" -#: describe.c:1431 +#: describe.c:1621 #, c-format msgid "Special relation \"%s.%s\"" msgstr "特殊ãªãƒªãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ \"%s.%s\"" -#: describe.c:1435 +#: describe.c:1625 #, c-format msgid "TOAST table \"%s.%s\"" msgstr "TOAST テーブル \"%s.%s\"" -#: describe.c:1439 +#: describe.c:1629 #, c-format msgid "Composite type \"%s.%s\"" msgstr "複åˆåž‹ \"%s.%s\"" -#: describe.c:1443 +#: describe.c:1633 #, c-format msgid "Foreign table \"%s.%s\"" msgstr "外部テーブル \"%s.%s\"" -#: describe.c:1454 +#: describe.c:1644 msgid "Column" msgstr "列" -#: describe.c:1463 +#: describe.c:1653 msgid "Modifiers" msgstr "修飾語" -#: describe.c:1468 +#: describe.c:1658 msgid "Value" msgstr "値" -#: describe.c:1471 +#: describe.c:1661 msgid "Definition" msgstr "定義" -#: describe.c:1474 describe.c:4018 describe.c:4099 describe.c:4167 -#: describe.c:4228 +#: describe.c:1664 describe.c:4312 describe.c:4396 describe.c:4467 +#: describe.c:4531 msgid "FDW Options" msgstr "FDWオプション" -#: describe.c:1478 +#: describe.c:1668 msgid "Storage" msgstr "ストレージ" -#: describe.c:1481 +#: describe.c:1671 msgid "Stats target" msgstr "対象統計情報" -#: describe.c:1531 +#: describe.c:1721 #, c-format msgid "collate %s" msgstr "ç…§åˆé †åº %s" -#: describe.c:1539 +#: describe.c:1729 msgid "not null" msgstr "not null" #. translator: default values of column definitions -#: describe.c:1549 +#: describe.c:1739 #, c-format msgid "default %s" msgstr "default %s" -#: describe.c:1664 +#: describe.c:1854 msgid "primary key, " msgstr "プライマリキー, " -#: describe.c:1666 +#: describe.c:1856 msgid "unique, " msgstr "ユニーク, " -#: describe.c:1672 +#: describe.c:1862 #, c-format msgid "for table \"%s.%s\"" msgstr "テーブル \"%s.%s\" 用" -#: describe.c:1676 +#: describe.c:1866 #, c-format msgid ", predicate (%s)" msgstr ", 述語 (%s)" -#: describe.c:1679 +#: describe.c:1869 msgid ", clustered" msgstr ", クラスタ化済ã¿" -#: describe.c:1682 +#: describe.c:1872 msgid ", invalid" msgstr ", 無効" -#: describe.c:1685 +#: describe.c:1875 msgid ", deferrable" msgstr ", é…å»¶å¯èƒ½" -#: describe.c:1688 +#: describe.c:1878 msgid ", initially deferred" msgstr ", 最åˆã‹ã‚‰é…å»¶ã•れã¦ã„ã‚‹" -#: describe.c:1691 +#: describe.c:1881 msgid ", replica identity" msgstr "レプリカ特性" -#: describe.c:1726 +#: describe.c:1916 #, c-format msgid "Owned by: %s" msgstr "所有者: %s" -#: describe.c:1786 +#: describe.c:1976 msgid "Indexes:" msgstr "インデックス:" -#: describe.c:1870 +#: describe.c:2060 msgid "Check constraints:" msgstr "検査制約:" -#: describe.c:1901 +#: describe.c:2091 msgid "Foreign-key constraints:" msgstr "外部キー制約:" -#: describe.c:1932 +#: describe.c:2122 msgid "Referenced by:" msgstr "å‚照元:" -#: describe.c:2014 describe.c:2064 +#: describe.c:2167 +msgid "Policies:" +msgstr "ãƒãƒªã‚·ãƒ¼:" + +#: describe.c:2170 +msgid "Policies (forced row security enabled):" +msgstr "ãƒãƒªã‚·ãƒ¼ (FORCE指定ã•れãŸè¡Œã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãŒæœ‰åй):" + +#: describe.c:2173 +msgid "Policies (row security enabled): (none)" +msgstr "ãƒãƒªã‚·ãƒ¼ (è¡Œã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãŒæœ‰åй): (ãƒãƒªã‚·ãƒ¼ãŒã‚りã¾ã›ã‚“)" + +#: describe.c:2176 +msgid "Policies (forced row security enabled): (none)" +msgstr "ãƒãƒªã‚·ãƒ¼ (FORCE指定ã•れãŸè¡Œã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãŒæœ‰åй): (ãƒãƒªã‚·ãƒ¼ãŒã‚りã¾ã›ã‚“)" + +#: describe.c:2179 +msgid "Policies (row security disabled):" +msgstr "ãƒãƒªã‚·ãƒ¼ (行セキュリティãŒç„¡åй):" + +#: describe.c:2279 describe.c:2329 msgid "Rules:" msgstr "ルール:" -#: describe.c:2017 +#: describe.c:2282 msgid "Disabled rules:" msgstr "無効ã«ã•れãŸãƒ«ãƒ¼ãƒ«ï¼š" -#: describe.c:2020 +#: describe.c:2285 msgid "Rules firing always:" msgstr "常ã«ç„¡è¦–ã•れるルール" -#: describe.c:2023 +#: describe.c:2288 msgid "Rules firing on replica only:" msgstr "レプリカã§ã®ã¿ç„¡è¦–ã•れるルール" -#: describe.c:2047 +#: describe.c:2312 msgid "View definition:" msgstr "ビュー定義:" -#: describe.c:2182 +#: describe.c:2447 msgid "Triggers:" msgstr "トリガ:" -#: describe.c:2186 +#: describe.c:2451 msgid "Disabled user triggers:" msgstr "無効ã«ã•れãŸãƒ¦ãƒ¼ã‚¶ãƒˆãƒªã‚¬ï¼š" -#: describe.c:2188 +#: describe.c:2453 msgid "Disabled triggers:" msgstr "無効ã«ã•れãŸãƒˆãƒªã‚¬ï¼š" -#: describe.c:2191 +#: describe.c:2456 msgid "Disabled internal triggers:" msgstr "無効ã«ã•れãŸå†…部トリガ:" -#: describe.c:2194 +#: describe.c:2459 msgid "Triggers firing always:" msgstr "常ã«ç„¡è¦–ã•れるトリガ" -#: describe.c:2197 +#: describe.c:2462 msgid "Triggers firing on replica only:" msgstr "レプリカã§ã®ã¿ç„¡è¦–ã•れるトリガ" -#: describe.c:2276 +#: describe.c:2541 msgid "Inherits" msgstr "継承" -#: describe.c:2315 +#: describe.c:2580 #, c-format msgid "Number of child tables: %d (Use \\d+ to list them.)" msgstr "å­ãƒ†ãƒ¼ãƒ–ãƒ«ã®æ•°ï¼š%d(\\d+ ã§ä¸€è¦§è¡¨ç¤ºï¼‰" -#: describe.c:2322 +#: describe.c:2587 msgid "Child tables" msgstr "å­ãƒ†ãƒ¼ãƒ–ル" -#: describe.c:2344 +#: describe.c:2609 #, c-format msgid "Typed table of type: %s" msgstr "型付ã‘ã•れãŸãƒ†ãƒ¼ãƒ–ルã®åž‹ï¼š%s" -#: describe.c:2358 +#: describe.c:2623 msgid "Replica Identity" msgstr "レプリカ特性" -#: describe.c:2371 +#: describe.c:2636 msgid "Has OIDs: yes" msgstr "OID ã‚’æŒã¤: ã¯ã„" -#: describe.c:2460 +#: describe.c:2724 #, 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:2472 +#: describe.c:2736 #, c-format msgid ", tablespace \"%s\"" msgstr "テーブルスペース \"%s\"" -#: describe.c:2557 +#: describe.c:2829 msgid "List of roles" msgstr "ロール一覧" -#: describe.c:2559 +#: describe.c:2831 msgid "Role name" msgstr "ロールå" -#: describe.c:2560 +#: describe.c:2832 msgid "Attributes" msgstr "属性" -#: describe.c:2561 +#: describe.c:2833 msgid "Member of" msgstr "メンãƒãƒ¼" -#: describe.c:2572 +#: describe.c:2844 msgid "Superuser" msgstr "スーパーユーザ" -#: describe.c:2575 +#: describe.c:2847 msgid "No inheritance" msgstr "継承ãªã—" -#: describe.c:2578 +#: describe.c:2850 msgid "Create role" msgstr "ロールを作æˆã§ãã‚‹" -#: describe.c:2581 +#: describe.c:2853 msgid "Create DB" msgstr "DBを作æˆã§ãã‚‹" -#: describe.c:2584 +#: describe.c:2856 msgid "Cannot login" msgstr "ログインã§ããªã„" -#: describe.c:2588 +#: describe.c:2860 msgid "Replication" msgstr "レプリケーション" -#: describe.c:2597 +#: describe.c:2864 +msgid "Bypass RLS" +msgstr "行å˜ä½ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ã‚’無視" + +#: describe.c:2873 msgid "No connections" msgstr "接続ãªã—" -#: describe.c:2599 +#: describe.c:2875 #, c-format msgid "%d connection" msgid_plural "%d connections" msgstr[0] "%d å€‹ã®æŽ¥ç¶š" msgstr[1] "%d å€‹ã®æŽ¥ç¶š" -#: describe.c:2609 +#: describe.c:2885 msgid "Password valid until " msgstr "パスワード有効期é™" -#: describe.c:2665 +#: describe.c:2941 msgid "Role" msgstr "ロール" -#: describe.c:2666 +#: describe.c:2942 msgid "Database" msgstr "データベース" -#: describe.c:2667 +#: describe.c:2943 msgid "Settings" msgstr "設定" -#: describe.c:2677 +#: describe.c:2953 #, c-format msgid "No per-database role settings support in this server version.\n" msgstr "ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ã‚µãƒ¼ãƒãƒ¼ã§ã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹æ¯Žã®ãƒ­ãƒ¼ãƒ«è¨­å®šã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" -#: describe.c:2688 +#: describe.c:2964 #, c-format msgid "No matching settings found.\n" msgstr "マッãƒã™ã‚‹è¨­å®šãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n" -#: describe.c:2690 +#: describe.c:2966 #, c-format msgid "No settings found.\n" msgstr "設定ãŒã‚りã¾ã›ã‚“。\n" -#: describe.c:2695 +#: describe.c:2971 msgid "List of settings" msgstr "設定ã®ä¸€è¦§" -#: describe.c:2764 +#: describe.c:3040 msgid "index" msgstr "インデックス" -#: describe.c:2766 +#: describe.c:3042 msgid "special" msgstr "特殊" -#: describe.c:2774 describe.c:4216 +#: describe.c:3050 describe.c:4519 msgid "Table" msgstr "テーブル" -#: describe.c:2850 +#: describe.c:3126 #, c-format msgid "No matching relations found.\n" msgstr "マッãƒã™ã‚‹ãƒªãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n" -#: describe.c:2852 +#: describe.c:3128 #, c-format msgid "No relations found.\n" msgstr "リレーションãŒã‚りã¾ã›ã‚“。\n" -#: describe.c:2857 +#: describe.c:3133 msgid "List of relations" msgstr "リレーションã®ä¸€è¦§" -#: describe.c:2894 +#: describe.c:3170 msgid "Trusted" msgstr "ä¿¡é ¼?" -#: describe.c:2902 +#: describe.c:3178 msgid "Internal Language" msgstr "内部言語" -#: describe.c:2903 +#: describe.c:3179 msgid "Call Handler" msgstr "呼ã³å‡ºã—ãƒãƒ³ãƒ‰ãƒ©ãƒ¼" -#: describe.c:2904 describe.c:4005 +#: describe.c:3180 describe.c:4299 msgid "Validator" msgstr "ãƒãƒªãƒ‡ãƒ¼ã‚¿" -#: describe.c:2907 +#: describe.c:3183 msgid "Inline Handler" msgstr "インラインãƒãƒ³ãƒ‰ãƒ©ãƒ¼" -#: describe.c:2935 +#: describe.c:3211 msgid "List of languages" msgstr "言語一覧" -#: describe.c:2979 +#: describe.c:3255 msgid "Modifier" msgstr "修飾語" -#: describe.c:2980 +#: describe.c:3256 msgid "Check" msgstr "ãƒã‚§ãƒƒã‚¯" -#: describe.c:3022 +#: describe.c:3298 msgid "List of domains" msgstr "ドメイン一覧" -#: describe.c:3056 +#: describe.c:3332 msgid "Source" msgstr "ソース" -#: describe.c:3057 +#: describe.c:3333 msgid "Destination" msgstr "宛先" -#: describe.c:3058 describe.c:3207 +#: describe.c:3334 describe.c:3483 msgid "no" msgstr "no" -#: describe.c:3058 describe.c:3209 +#: describe.c:3334 describe.c:3485 msgid "yes" msgstr "yes" -#: describe.c:3059 +#: describe.c:3335 msgid "Default?" msgstr "デフォルト?" -#: describe.c:3096 +#: describe.c:3372 msgid "List of conversions" msgstr "変æ›ãƒ«ãƒ¼ãƒ«ä¸€è¦§" -#: describe.c:3135 +#: describe.c:3411 msgid "Event" msgstr "イベント" -#: describe.c:3137 +#: describe.c:3413 msgid "enabled" msgstr "有効" -#: describe.c:3138 +#: describe.c:3414 msgid "replica" msgstr "レプリカ" -#: describe.c:3139 +#: describe.c:3415 msgid "always" msgstr "常ã«" -#: describe.c:3140 +#: describe.c:3416 msgid "disabled" msgstr "無効" -#: describe.c:3141 +#: describe.c:3417 msgid "Enabled" msgstr "有効" -#: describe.c:3142 +#: describe.c:3418 msgid "Procedure" msgstr "プロシージャ" -#: describe.c:3143 +#: describe.c:3419 msgid "Tags" msgstr "ã‚¿ã‚°" -#: describe.c:3162 +#: describe.c:3438 msgid "List of event triggers" msgstr "イベントトリガã®ä¸€è¦§" -#: describe.c:3204 +#: describe.c:3480 msgid "Source type" msgstr "ソースã®åž‹" -#: describe.c:3205 +#: describe.c:3481 msgid "Target type" msgstr "ターゲットã®åž‹" -#: describe.c:3208 +#: describe.c:3484 msgid "in assignment" msgstr "代入" -#: describe.c:3210 +#: describe.c:3486 msgid "Implicit?" msgstr "æš—é»™?" -#: describe.c:3261 +#: describe.c:3537 msgid "List of casts" msgstr "キャスト一覧" -#: describe.c:3287 +#: describe.c:3565 #, c-format -msgid "The server (version %d.%d) does not support collations.\n" -msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ (%d.%d) ã¯ç…§åˆé †åºã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" +#| msgid "The server (version %d.%d) does not support collations.\n" +msgid "The server (version %s) does not support collations.\n" +msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼ (ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s) ã¯ç…§åˆé †åºã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" -#: describe.c:3337 +#: describe.c:3616 msgid "List of collations" msgstr "ç…§åˆé †åºä¸€è¦§" -#: describe.c:3396 +#: describe.c:3675 msgid "List of schemas" msgstr "スキーマ一覧" -#: describe.c:3419 describe.c:3654 describe.c:3722 describe.c:3790 +#: describe.c:3700 describe.c:3938 describe.c:4009 describe.c:4080 #, c-format -msgid "The server (version %d.%d) does not support full text search.\n" -msgstr "ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ (%d.%d) ã®ã‚µãƒ¼ãƒãƒ¼ã¯å…¨æ–‡æ¤œç´¢ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" +#| msgid "The server (version %d.%d) does not support full text search.\n" +msgid "The server (version %s) does not support full text search.\n" +msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼ (ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s) ã¯å…¨æ–‡æ¤œç´¢ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" -#: describe.c:3453 +#: describe.c:3735 msgid "List of text search parsers" msgstr "テキスト検索用パーサ一覧" -#: describe.c:3496 +#: describe.c:3778 #, c-format msgid "Did not find any text search parser named \"%s\".\n" msgstr "テキスト検索用パーサ \"%s\" ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n" -#: describe.c:3571 +#: describe.c:3853 msgid "Start parse" msgstr "パース起動" -#: describe.c:3572 +#: describe.c:3854 msgid "Method" msgstr "メソッド" -#: describe.c:3576 +#: describe.c:3858 msgid "Get next token" msgstr "次ã®ãƒˆãƒ¼ã‚¯ãƒ³ã‚’å–å¾—" -#: describe.c:3578 +#: describe.c:3860 msgid "End parse" msgstr "パース終了" -#: describe.c:3580 +#: describe.c:3862 msgid "Get headline" msgstr "見出ã—ã®å–å¾—" -#: describe.c:3582 +#: describe.c:3864 msgid "Get token types" msgstr "トークンタイプã®å–å¾—" -#: describe.c:3592 +#: describe.c:3874 #, c-format msgid "Text search parser \"%s.%s\"" msgstr "テキスト検索用パーサ \"%s.%s\"" -#: describe.c:3594 +#: describe.c:3876 #, c-format msgid "Text search parser \"%s\"" msgstr "テキスト検索用パーサ \"%s\"" -#: describe.c:3613 +#: describe.c:3895 msgid "Token name" msgstr "トークンå" -#: describe.c:3624 +#: describe.c:3906 #, c-format msgid "Token types for parser \"%s.%s\"" msgstr "パーサ \"%s.%s\" ã®ãƒˆãƒ¼ã‚¯ãƒ³ã‚¿ã‚¤ãƒ—" -#: describe.c:3626 +#: describe.c:3908 #, c-format msgid "Token types for parser \"%s\"" msgstr "パーサ \"%s\" ã®ãƒˆãƒ¼ã‚¯ãƒ³ã‚¿ã‚¤ãƒ—" -#: describe.c:3676 +#: describe.c:3961 msgid "Template" msgstr "テンプレート" -#: describe.c:3677 +#: describe.c:3962 msgid "Init options" msgstr "åˆæœŸåŒ–オプション:" -#: describe.c:3699 +#: describe.c:3984 msgid "List of text search dictionaries" msgstr "テキスト検索用辞書ã®ä¸€è¦§" -#: describe.c:3739 +#: describe.c:4027 msgid "Init" msgstr "åˆæœŸåŒ–" -#: describe.c:3740 +#: describe.c:4028 msgid "Lexize" msgstr "Lex 処ç†" -#: describe.c:3767 +#: describe.c:4055 msgid "List of text search templates" msgstr "テキスト検索用テンプレート一覧" -#: describe.c:3824 +#: describe.c:4115 msgid "List of text search configurations" msgstr "テキスト検索用設定一覧" -#: describe.c:3868 +#: describe.c:4159 #, c-format msgid "Did not find any text search configuration named \"%s\".\n" msgstr "テキスト検索用設定 \"%s\" ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n" -#: describe.c:3934 +#: describe.c:4225 msgid "Token" msgstr "トークン" -#: describe.c:3935 +#: describe.c:4226 msgid "Dictionaries" msgstr "辞書" -#: describe.c:3946 +#: describe.c:4237 #, c-format msgid "Text search configuration \"%s.%s\"" msgstr "テキスト検索用設定 \"%s.%s\"" -#: describe.c:3949 +#: describe.c:4240 #, c-format msgid "Text search configuration \"%s\"" msgstr "テキスト検索用設定 \"%s\"" -#: describe.c:3953 +#: describe.c:4244 #, c-format msgid "" "\n" @@ -1577,7 +1847,7 @@ msgstr "" "\n" "パーサ: \"%s.%s\"" -#: describe.c:3956 +#: describe.c:4247 #, c-format msgid "" "\n" @@ -1586,96 +1856,97 @@ msgstr "" "\n" "パーサ:\"%s\"" -#: describe.c:3988 +#: describe.c:4281 #, c-format -msgid "The server (version %d.%d) does not support foreign-data wrappers.\n" -msgstr "ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ (%d.%d) ã®ã‚µãƒ¼ãƒãƒ¼ã¯å¤–部データラッパーをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" +#| msgid "The server (version %d.%d) does not support foreign-data wrappers.\n" +msgid "The server (version %s) does not support foreign-data wrappers.\n" +msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼ (ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s) ã¯å¤–部データラッパーをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" -#: describe.c:4002 -msgid "Handler" -msgstr "ãƒãƒ³ãƒ‰ãƒ©ãƒ¼" - -#: describe.c:4045 +#: describe.c:4339 msgid "List of foreign-data wrappers" msgstr "外部データラッパーã®ä¸€è¦§" -#: describe.c:4068 +#: describe.c:4364 #, c-format -msgid "The server (version %d.%d) does not support foreign servers.\n" -msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼(ãƒãƒ¼ã‚¸ãƒ§ãƒ³%d.%d)ã¯å¤–部サーãƒãƒ¼ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" +#| msgid "The server (version %d.%d) does not support foreign servers.\n" +msgid "The server (version %s) does not support foreign servers.\n" +msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼ (ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s) ã¯å¤–部サーãƒãƒ¼ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" -#: describe.c:4080 +#: describe.c:4377 msgid "Foreign-data wrapper" msgstr "外部データラッパー" -#: describe.c:4098 describe.c:4293 +#: describe.c:4395 describe.c:4600 msgid "Version" msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³" -#: describe.c:4124 +#: describe.c:4421 msgid "List of foreign servers" msgstr "外部サーãƒãƒ¼ä¸€è¦§" -#: describe.c:4147 +#: describe.c:4446 #, c-format -msgid "The server (version %d.%d) does not support user mappings.\n" -msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼(ãƒãƒ¼ã‚¸ãƒ§ãƒ³%d.%d)ã¯ãƒ¦ãƒ¼ã‚¶ãƒžãƒƒãƒ—をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" +#| msgid "The server (version %d.%d) does not support user mappings.\n" +msgid "The server (version %s) does not support user mappings.\n" +msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼ (ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s) ã¯ãƒ¦ãƒ¼ã‚¶ãƒžãƒƒãƒ—をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" -#: describe.c:4156 describe.c:4217 +#: describe.c:4456 describe.c:4520 msgid "Server" msgstr "サーãƒãƒ¼" -#: describe.c:4157 +#: describe.c:4457 msgid "User name" msgstr "ユーザå" -#: describe.c:4182 +#: describe.c:4482 msgid "List of user mappings" msgstr "ユーザマッピングã®ä¸€è¦§" -#: describe.c:4205 +#: describe.c:4507 #, c-format -msgid "The server (version %d.%d) does not support foreign tables.\n" -msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼(ãƒãƒ¼ã‚¸ãƒ§ãƒ³%d.%d)ã¯å¤–部テーブルをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" +#| msgid "The server (version %d.%d) does not support foreign tables.\n" +msgid "The server (version %s) does not support foreign tables.\n" +msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼ (ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s) ã¯å¤–部テーブルをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" -#: describe.c:4256 +#: describe.c:4560 msgid "List of foreign tables" msgstr "外部テーブル一覧" -#: describe.c:4279 describe.c:4333 +#: describe.c:4585 describe.c:4642 #, c-format -msgid "The server (version %d.%d) does not support extensions.\n" -msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ (%d.%d) ã¯æ‹¡å¼µã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" +#| msgid "The server (version %d.%d) does not support extensions.\n" +msgid "The server (version %s) does not support extensions.\n" +msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼ (ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s) ã¯æ‹¡å¼µã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" -#: describe.c:4310 +#: describe.c:4617 msgid "List of installed extensions" msgstr "インストール済ã¿ã®æ‹¡å¼µã®ä¸€è¦§" -#: describe.c:4360 +#: describe.c:4670 #, c-format msgid "Did not find any extension named \"%s\".\n" msgstr "\"%s\" ã¨ã„ã†åå‰ã®æ‹¡å¼µãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n" -#: describe.c:4363 +#: describe.c:4673 #, c-format msgid "Did not find any extensions.\n" msgstr "æ‹¡å¼µãŒã¾ã£ãŸã見ã¤ã‹ã‚Šã¾ã›ã‚“。\n" -#: describe.c:4407 +#: describe.c:4717 msgid "Object Description" msgstr "オブジェクトã®èª¬æ˜Ž" -#: describe.c:4416 +#: describe.c:4726 #, c-format msgid "Objects in extension \"%s\"" msgstr "æ‹¡å¼µ\"%s\"内ã®ã‚ªãƒ–ジェクト" -#: help.c:62 +#: help.c:63 #, c-format msgid "%s\n" msgstr "%s\n" -#: help.c:67 +#: help.c:74 #, c-format msgid "" "psql is the PostgreSQL interactive terminal.\n" @@ -1684,12 +1955,12 @@ msgstr "" "psql 㯠PostgreSQL ã®ä¼šè©±åž‹ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã§ã™ã€‚\n" "\n" -#: help.c:68 +#: help.c:75 help.c:333 help.c:367 help.c:394 #, c-format msgid "Usage:\n" msgstr "使用方法:\n" -#: help.c:69 +#: help.c:76 #, c-format msgid "" " psql [OPTION]... [DBNAME [USERNAME]]\n" @@ -1698,51 +1969,56 @@ msgstr "" " psql [オプション]... [データベースå [ユーザå]]\n" "\n" -#: help.c:71 +#: help.c:78 #, c-format msgid "General options:\n" msgstr "一般的ãªã‚ªãƒ—ション:\n" -#: help.c:76 +#: help.c:83 #, c-format msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n" msgstr " -c, --command=コマンド (SQLã¾ãŸã¯å†…部ã®)å˜ä¸€ã‚³ãƒžãƒ³ãƒ‰ã‚’一ã¤ã ã‘実行ã—ã¦çµ‚了\n" -#: help.c:77 +#: help.c:84 #, c-format msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" msgstr " -d, --dbname=DBå æŽ¥ç¶šã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹åを指定(デフォルト: \"%s\")\n" -#: help.c:78 +#: help.c:85 #, c-format msgid " -f, --file=FILENAME execute commands from file, then exit\n" msgstr " -f, --file=ファイルå ファイルã‹ã‚‰ã‚³ãƒžãƒ³ãƒ‰ã‚’読ã¿è¾¼ã‚“ã§å®Ÿè¡Œå¾Œã€çµ‚了\n" -#: help.c:79 +#: help.c:86 #, c-format msgid " -l, --list list available databases, then exit\n" msgstr " -l(エル), --list 使用å¯èƒ½ãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ä¸€è¦§ã‚’表示ã—ã¦çµ‚了\n" -#: help.c:80 +#: help.c:87 #, c-format +#| msgid "" +#| " -v, --set=, --variable=NAME=VALUE\n" +#| " set psql variable NAME to VALUE\n" 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:82 +#: help.c:90 #, c-format msgid " -V, --version output version information, then exit\n" -msgstr " -V, --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã€çµ‚了ã—ã¾ã™\n" +msgstr " -V, --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã¦çµ‚了\n" -#: help.c:83 +#: help.c:91 #, c-format msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" msgstr " -X, --no-psqlrc åˆæœŸåŒ–ファイル (~/.psqlrc) を読ã¿ã“ã¾ãªã„\n" -#: help.c:84 +#: help.c:92 #, c-format msgid "" " -1 (\"one\"), --single-transaction\n" @@ -1751,12 +2027,24 @@ msgstr "" " -1(æ•°å­—ã®ï¼‘), --single-transaction\n" " å˜ä¸€ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã¨ã—ã¦å®Ÿè¡Œ(対話å¼ã§ãªã„å ´åˆ)\n" -#: help.c:86 +#: help.c:94 +#, c-format +#| msgid " -?, --help show this help, then exit\n" +msgid " -?, --help[=options] show this help, then exit\n" +msgstr " -?, --help[=options] ã“ã®ãƒ˜ãƒ«ãƒ—を表示ã—ã¦çµ‚了\n" + +#: help.c:95 #, c-format -msgid " -?, --help show this help, then exit\n" -msgstr " -?, --help ã“ã®ãƒ˜ãƒ«ãƒ—を表示ã—ã€çµ‚了ã—ã¾ã™\n" +msgid " --help=commands list backslash commands, then exit\n" +msgstr " --help=commands ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã‚³ãƒžãƒ³ãƒ‰ä¸€è¦§ã‚’表示ã—ã¦çµ‚了\n" -#: help.c:88 +#: help.c:96 +#, c-format +#| msgid " -l, --list list available databases, then exit\n" +msgid " --help=variables list special variables, then exit\n" +msgstr " --help=variables 特別ãªå¤‰æ•°ä¸€è¦§ã‚’表示ã—ã¦çµ‚了\n" + +#: help.c:98 #, c-format msgid "" "\n" @@ -1765,52 +2053,58 @@ msgstr "" "\n" "入出力オプション:\n" -#: help.c:89 +#: help.c:99 #, c-format msgid " -a, --echo-all echo all input from script\n" msgstr " -a, --echo-all スクリプトã‹ã‚‰ã®ã™ã¹ã¦ã®å…¥åŠ›ã‚’è¡¨ç¤º\n" -#: help.c:90 +#: help.c:100 +#, c-format +#| msgid " -e, --echo-queries echo commands sent to server\n" +msgid " -b, --echo-errors echo failed commands\n" +msgstr " -b, --echo-errors 失敗ã—ãŸã‚³ãƒžãƒ³ãƒ‰ã‚’表示\n" + +#: help.c:101 #, c-format msgid " -e, --echo-queries echo commands sent to server\n" msgstr " -e, --echo-queries サーãƒãƒ¼ã¸é€ä¿¡ã—ãŸã‚³ãƒžãƒ³ãƒ‰ã‚’表示\n" -#: help.c:91 +#: help.c:102 #, c-format msgid " -E, --echo-hidden display queries that internal commands generate\n" msgstr " -E, --echo-hidden 内部コマンドãŒç”Ÿæˆã—ãŸå•ã„åˆã‚ã›ã‚’表示\n" -#: help.c:92 +#: help.c:103 #, c-format msgid " -L, --log-file=FILENAME send session log to file\n" msgstr " -L, --log-file=ファイルå ã‚»ãƒƒã‚·ãƒ§ãƒ³ãƒ­ã‚°ã‚’ãƒ•ã‚¡ã‚¤ãƒ«ã«æ›¸ã込む\n" -#: help.c:93 +#: help.c:104 #, c-format msgid " -n, --no-readline disable enhanced command line editing (readline)\n" msgstr " -n, --no-readline 拡張コマンドライン編集機能(readline)を無効ã«ã™ã‚‹\n" -#: help.c:94 +#: help.c:105 #, c-format msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" msgstr " -o, --output=ファイルå å•ã„åˆã‚ã›çµæžœã‚’ファイル(ã¾ãŸã¯ |パイプ)ã«é€ã‚‹\n" -#: help.c:95 +#: help.c:106 #, c-format msgid " -q, --quiet run quietly (no messages, only query output)\n" msgstr " -q, --quiet é™ã‹ã«å®Ÿè¡Œ(メッセージãªã—ã§ã€å•ã„åˆã‚ã›ã®å‡ºåŠ›ã®ã¿)\n" -#: help.c:96 +#: help.c:107 #, c-format msgid " -s, --single-step single-step mode (confirm each query)\n" msgstr " -s, --single-step シングルステップモード(å„å•ã„åˆã‚ã›ã”ã¨ã«ç¢ºèª)\n" -#: help.c:97 +#: help.c:108 #, c-format msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n" msgstr " -S, --single-line å˜ä¸€è¡Œãƒ¢ãƒ¼ãƒ‰(行末を SQL コマンドã®çµ‚了ã¨ã¿ãªã™)\n" -#: help.c:99 +#: help.c:110 #, c-format msgid "" "\n" @@ -1819,12 +2113,12 @@ msgstr "" "\n" "出力フォーマットオプション:\n" -#: help.c:100 +#: help.c:111 #, c-format msgid " -A, --no-align unaligned table output mode\n" msgstr " -A, --no-align æ¡æƒãˆãªã—ã®ãƒ†ãƒ¼ãƒ–ル出力モード\n" -#: help.c:101 +#: help.c:112 #, c-format msgid "" " -F, --field-separator=STRING\n" @@ -1833,17 +2127,17 @@ msgstr "" " -F, --field-separator=文字列\n" " æ¡æƒãˆãªã—ã®å‡ºåŠ›ã§ã®ãƒ•ィールド区切り文字(デフォルト: \"%s\")\n" -#: help.c:104 +#: help.c:115 #, c-format msgid " -H, --html HTML table output mode\n" msgstr " -H, --html HTML テーブル出力モード\n" -#: help.c:105 +#: 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:106 +#: help.c:117 #, c-format msgid "" " -R, --record-separator=STRING\n" @@ -1852,22 +2146,22 @@ msgstr "" " -R, --record-separator=文字列\n" " æ¡æƒãˆãªã—ã®å‡ºåŠ›ã§ã®ãƒ¬ã‚³ãƒ¼ãƒ‰åŒºåˆ‡ã‚Šæ–‡å­—(デフォルト:改行)\n" -#: help.c:108 +#: help.c:119 #, c-format msgid " -t, --tuples-only print rows only\n" msgstr " -t, --tuples-only 行ã®ã¿ã‚’表示\n" -#: help.c:109 +#: help.c:120 #, c-format msgid " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n" msgstr " -T, --table-attr=TEXT HTMLテーブルã®ã‚¿ã‚°å±žæ€§ã‚’セット(width, borderç­‰)\n" -#: help.c:110 +#: help.c:121 #, c-format msgid " -x, --expanded turn on expanded table output\n" msgstr " -x, --expanded 拡張テーブル出力を有効ã«ã™ã‚‹\n" -#: help.c:111 +#: help.c:122 #, c-format msgid "" " -z, --field-separator-zero\n" @@ -1876,7 +2170,7 @@ msgstr "" " -z, --field-separator-zero\n" " æ¡æƒãˆãªã—ã®å‡ºåŠ›ã§ã®ãƒ•ィールド区切り文字をゼロãƒã‚¤ãƒˆã«è¨­å®š\n" -#: help.c:113 +#: help.c:124 #, c-format msgid "" " -0, --record-separator-zero\n" @@ -1885,7 +2179,7 @@ msgstr "" " -0, --record-separator-zero\n" " æ¡æƒãˆãªã—ã®å‡ºåŠ›ã§ã®ãƒ¬ã‚³ãƒ¼ãƒ‰åŒºåˆ‡ã‚Šæ–‡å­—をゼロãƒã‚¤ãƒˆã«è¨­å®š\n" -#: help.c:116 +#: help.c:127 #, c-format msgid "" "\n" @@ -1894,38 +2188,38 @@ msgstr "" "\n" "接続オプション:\n" -#: help.c:119 +#: help.c:130 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n" msgstr " -h, --host=ホストå データベースサーãƒãƒ¼ã®ãƒ›ã‚¹ãƒˆã¾ãŸã¯ã‚½ã‚±ãƒƒãƒˆã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª(デフォルト: \"%s\")\n" -#: help.c:120 +#: help.c:131 msgid "local socket" msgstr "ローカルソケット" -#: help.c:123 +#: help.c:134 #, c-format msgid " -p, --port=PORT database server port (default: \"%s\")\n" msgstr " -p, --port=ãƒãƒ¼ãƒˆç•ªå· データベースサーãƒãƒ¼ã®ãƒãƒ¼ãƒˆç•ªå·(デフォルト: \"%s\")\n" -#: help.c:129 +#: help.c:140 #, c-format msgid " -U, --username=USERNAME database user name (default: \"%s\")\n" msgstr " -U, --username=ユーザーå データベースã®ãƒ¦ãƒ¼ã‚¶å(デフォルト: \"%s\")\n" -#: help.c:130 +#: help.c:141 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰å…¥åŠ›ã‚’è¦æ±‚ã—ãªã„\n" -#: help.c:131 +#: help.c:142 #, c-format msgid " -W, --password force password prompt (should happen automatically)\n" msgstr "" " -W, --password パスワードプロンプトを強制表示ã™ã‚‹\n" " (本æ¥ã¯è‡ªå‹•çš„ã«è¡¨ç¤ºã•れるã¯ãšã§ã™ï¼‰\n" -#: help.c:133 +#: help.c:144 #, c-format msgid "" "\n" @@ -1940,482 +2234,977 @@ msgstr "" "セクションをå‚ç…§ã®ã“ã¨ã€‚\n" "\n" -#: help.c:136 +#: help.c:147 #, c-format msgid "Report bugs to .\n" msgstr "ä¸å…·åˆã¯ã¾ã§å ±å‘Šã—ã¦ãã ã•ã„。\n" -#: help.c:157 +#: help.c:173 #, c-format msgid "General\n" msgstr "一般\n" -#: help.c:158 +#: help.c:174 #, c-format msgid " \\copyright show PostgreSQL usage and distribution terms\n" msgstr " \\copyright PostgreSQL ã®ä½¿ã„æ–¹ã¨é…布æ¡ä»¶ã‚’表示\n" -#: help.c:159 +#: help.c:175 +#, c-format +msgid " \\errverbose show most recent error message at maximum verbosity\n" +msgstr " \\errverbose 最も最近ã®ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’最大ã®å†—é•·ã•ã§è¡¨ç¤º\n" + +#: help.c:176 #, c-format msgid " \\g [FILE] or ; execute query (and send results to file or |pipe)\n" msgstr " \\g [ファイル] ã¾ãŸã¯ ';' å•ã„åˆã‚ã›ã‚’実行(ã—ã€çµæžœã‚’ファイルã¾ãŸã¯ |パイプ ã¸æ›¸ã出ã™)\n" -#: help.c:160 +#: help.c:177 +#, c-format +#| msgid " \\gset [PREFIX] execute query and store results in psql variables\n" +msgid " \\gexec execute query, then execute each value in its result\n" +msgstr " \\gexec å•ã„åˆã‚ã›ã‚’実行ã—ã¦çµæžœã®å„値を実行\n" + +#: help.c:178 #, c-format msgid " \\gset [PREFIX] execute query and store results in psql variables\n" msgstr "\\gset [PREFIX] å•ã„åˆã‚ã›ã‚’実行ã—çµæžœã‚’psqlå¤‰æ•°ã«æ ¼ç´\n" -#: help.c:161 -#, c-format -msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n" -msgstr " \\h [åå‰] SQL ã‚³ãƒžãƒ³ãƒ‰ã®æ–‡æ³•ヘルプã€* ã§å…¨ã‚³ãƒžãƒ³ãƒ‰\n" - -#: help.c:162 +#: help.c:179 #, c-format msgid " \\q quit psql\n" msgstr " \\q psql を終了ã™ã‚‹\n" -#: help.c:163 +#: help.c:180 +#, c-format +msgid " \\crosstabview [COLUMNS] execute query and display results in crosstab\n" +msgstr " \\crosstabview [COLUMNS] å•ã„åˆã‚ã›ã‚’実行ã—ã¦ã‚¯ãƒ­ã‚¹è¡¨å½¢å¼ã§çµæžœã‚’表示\n" + +#: help.c:181 #, c-format msgid " \\watch [SEC] execute query every SEC seconds\n" msgstr " \\watch [SEC] SEC秒毎ã«å•ã„åˆã‚ã›ã‚’実行ã™ã‚‹\n" -#: help.c:166 +#: help.c:184 +#, c-format +msgid "Help\n" +msgstr "ヘルプ\n" + +#: help.c:186 +#, c-format +msgid " \\? [commands] show help on backslash commands\n" +msgstr " \\? [commands] ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã‚³ãƒžãƒ³ãƒ‰ã®ãƒ˜ãƒ«ãƒ—を表示\n" + +#: help.c:187 +#, c-format +msgid " \\? options show help on psql command-line options\n" +msgstr " \\? options psqlコマンドラインオプションã®ãƒ˜ãƒ«ãƒ—を表示\n" + +#: help.c:188 +#, c-format +msgid " \\? variables show help on special variables\n" +msgstr " \\? variables 特別ãªå¤‰æ•°ã®ãƒ˜ãƒ«ãƒ—を表示\n" + +#: help.c:189 +#, c-format +msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n" +msgstr " \\h [åå‰] SQL ã‚³ãƒžãƒ³ãƒ‰ã®æ–‡æ³•ヘルプã€* ã§å…¨ã‚³ãƒžãƒ³ãƒ‰\n" + +#: help.c:192 #, c-format msgid "Query Buffer\n" msgstr "å•ã„åˆã‚ã›ãƒãƒƒãƒ•ã‚¡\n" -#: help.c:167 +#: help.c:193 #, c-format msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n" msgstr " \\e [ファイル] [行番å·] ç¾åœ¨ã®å•ã„åˆã‚ã›ãƒãƒƒãƒ•ã‚¡(やファイル)を外部エディタã§ç·¨é›†ã™ã‚‹\n" -#: help.c:168 +#: help.c:194 #, c-format msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" msgstr " \\ef [関数å [行番å·]] 関数定義を外部エディタã§ç·¨é›†ã™ã‚‹\n" -#: help.c:169 +#: help.c:195 +#, c-format +#| msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" +msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n" +msgstr " \\ev [ビューå [行番å·]] ビュー定義を外部エディタã§ç·¨é›†ã™ã‚‹\n" + +#: help.c:196 #, c-format msgid " \\p show the contents of the query buffer\n" msgstr " \\p å•ã„åˆã‚ã›ãƒãƒƒãƒ•ã‚¡ã®å†…容を表示ã™ã‚‹\n" -#: help.c:170 +#: help.c:197 #, c-format msgid " \\r reset (clear) the query buffer\n" msgstr " \\r å•ã„åˆã‚ã›ãƒãƒƒãƒ•ァをリセット(クリア)ã™ã‚‹\n" -#: help.c:172 +#: help.c:199 #, c-format msgid " \\s [FILE] display history or save it to file\n" msgstr " \\s [ファイル] ヒストリを表示ã¾ãŸã¯ãƒ•ァイルã«ä¿å­˜ã™ã‚‹\n" -#: help.c:174 +#: help.c:201 #, c-format msgid " \\w FILE write query buffer to file\n" msgstr " \\w ファイル å•ã„åˆã‚ã›ãƒãƒƒãƒ•ã‚¡ã®å†…å®¹ã‚’ãƒ•ã‚¡ã‚¤ãƒ«ã«æ›¸ã出ã™\n" -#: help.c:177 +#: help.c:204 #, c-format msgid "Input/Output\n" msgstr "入出力\n" -#: help.c:178 +#: help.c:205 #, c-format msgid " \\copy ... perform SQL COPY with data stream to the client host\n" msgstr " \\copy ... クライアントホストã«å¯¾ã—ã€ãƒ‡ãƒ¼ã‚¿ã‚¹ãƒˆãƒªãƒ¼ãƒ ã‚’使ã£ã¦SQLコピーを行ã†\n" -#: help.c:179 +#: help.c:206 #, c-format msgid " \\echo [STRING] write string to standard output\n" msgstr " \\echo [文字列] æ–‡å­—åˆ—ã‚’æ¨™æº–å‡ºåŠ›ã«æ›¸ã出ã™\n" -#: help.c:180 +#: help.c:207 #, c-format msgid " \\i FILE execute commands from file\n" msgstr " \\i ファイル ファイルã‹ã‚‰ã‚³ãƒžãƒ³ãƒ‰ã‚’読ã¿è¾¼ã‚“ã§å®Ÿè¡Œã™ã‚‹\n" -#: help.c:181 +#: help.c:208 #, c-format msgid " \\ir FILE as \\i, but relative to location of current script\n" msgstr " \\ir ファイル \\iã¨åŒã˜ã€‚ãŸã ã—ç¾åœ¨ã®ã‚¹ã‚¯ãƒªãƒ—トã®å ´æ‰€ã‹ã‚‰ã®ç›¸å¯¾ãƒ‘ス\n" -#: help.c:182 +#: help.c:209 #, c-format msgid " \\o [FILE] send all query results to file or |pipe\n" msgstr " \\o [ファイル] ã™ã¹ã¦ã®å•ã„åˆã‚ã›ã®çµæžœã‚’ファイルã¾ãŸã¯ |パイプ ã¸é€ã‚‹\n" -#: help.c:183 +#: help.c:210 #, c-format msgid " \\qecho [STRING] write string to query output stream (see \\o)\n" msgstr " \\qecho [文字列] 文字列をå•ã„åˆã‚ã›å‡ºåŠ›ã‚¹ãƒˆãƒªãƒ¼ãƒ ã«å‡ºåŠ›(\\o ã‚’å‚ç…§)\n" -#: help.c:186 +#: help.c:213 #, c-format msgid "Informational\n" msgstr "情報\n" -#: help.c:187 +#: help.c:214 #, c-format msgid " (options: S = show system objects, + = additional detail)\n" msgstr " (修飾å­: S = システムオブジェクトを表示 + = 付加情報)\n" -#: help.c:188 +#: help.c:215 #, c-format msgid " \\d[S+] list tables, views, and sequences\n" msgstr " \\d[S+] テーブルã€ãƒ“ューã€ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:189 +#: help.c:216 #, c-format msgid " \\d[S+] NAME describe table, view, sequence, or index\n" msgstr " \\d[S+] åå‰ ãƒ†ãƒ¼ãƒ–ãƒ«ã€ãƒ“ューã€ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã€ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã®èª¬æ˜Žã‚’表示ã™ã‚‹\n" -#: help.c:190 +#: help.c:217 #, c-format msgid " \\da[S] [PATTERN] list aggregates\n" msgstr " \\da[S] [パターン] 集約関数ã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:191 +#: help.c:218 +#, c-format +#| msgid " \\dC[+] [PATTERN] list casts\n" +msgid " \\dA[+] [PATTERN] list access methods\n" +msgstr " \\dA[+] [パターン] アクセスメソッドã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" + +#: help.c:219 #, c-format msgid " \\db[+] [PATTERN] list tablespaces\n" msgstr " \\db[+] [パターン] テーブルスペースã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:192 +#: help.c:220 #, c-format msgid " \\dc[S+] [PATTERN] list conversions\n" -msgstr " \\dc[S+] [パターン] 変æ›ãƒ«ãƒ¼ãƒ«ã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" +msgstr " \\dc[S+] [パターン] 変æ›ãƒ«ãƒ¼ãƒ«ã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:193 +#: help.c:221 #, c-format msgid " \\dC[+] [PATTERN] list casts\n" -msgstr " \\dC[+] [パターン] キャストã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" +msgstr " \\dC[+] [パターン] キャストã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:194 +#: help.c:222 #, c-format msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n" msgstr " \\dd[S] [パターン] ä»–ã§ã¯è¡¨ç¤ºã•れãªã„オブジェクトã®èª¬æ˜Žã‚’表示ã™ã‚‹\n" -#: help.c:195 +#: help.c:223 #, c-format msgid " \\ddp [PATTERN] list default privileges\n" msgstr " \\ddp [パターン] デフォルト権é™ã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:196 +#: help.c:224 #, c-format msgid " \\dD[S+] [PATTERN] list domains\n" msgstr " \\dD[S+] [パターン] ドメインã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:197 +#: help.c:225 #, c-format msgid " \\det[+] [PATTERN] list foreign tables\n" msgstr " \\det[+] [パターン] 外部テーブルã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:198 +#: help.c:226 #, c-format msgid " \\des[+] [PATTERN] list foreign servers\n" msgstr " \\des[+] [パターン] 外部サーãƒãƒ¼ã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:199 +#: help.c:227 #, c-format msgid " \\deu[+] [PATTERN] list user mappings\n" msgstr " \\deu[+] [パターン] ユーザマッピングã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:200 +#: help.c:228 #, c-format msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" msgstr " \\dew[+] [パターン] 外部データラッパーã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:201 +#: help.c:229 #, c-format msgid " \\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions\n" msgstr " \\df[antw][S+] [パターン] 関数(集約/通常/トリガー/ウィンドウã®ã¿ï¼‰ã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:202 +#: help.c:230 #, c-format msgid " \\dF[+] [PATTERN] list text search configurations\n" msgstr " \\dF[+] [パターン] テキスト検索設定ã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:203 +#: help.c:231 #, c-format msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" msgstr " \\dFd[+] [パターン] テキスト検索用辞書ã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:204 +#: help.c:232 #, c-format msgid " \\dFp[+] [PATTERN] list text search parsers\n" msgstr " \\dFp[+] [パターン] テキスト検索用パーサーã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:205 +#: help.c:233 #, c-format msgid " \\dFt[+] [PATTERN] list text search templates\n" msgstr " \\dFt[+] [パターン] テキスト検索用テンプレートã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:206 +#: help.c:234 #, c-format -msgid " \\dg[+] [PATTERN] list roles\n" -msgstr " \\dg[+] [パターン] ロールã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" +#| msgid " \\dg[+] [PATTERN] list roles\n" +msgid " \\dg[S+] [PATTERN] list roles\n" +msgstr " \\dg[S+] [パターン] ロールã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:207 +#: help.c:235 #, c-format msgid " \\di[S+] [PATTERN] list indexes\n" msgstr " \\di[S+] [パターン] インデックスã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:208 +#: help.c:236 #, c-format msgid " \\dl list large objects, same as \\lo_list\n" msgstr " \\dl ラージオブジェクトã®ä¸€è¦§ã‚’表示ã™ã‚‹ã€‚\\lo_list ã¨åŒã˜ã€‚\n" -#: help.c:209 +#: help.c:237 #, c-format msgid " \\dL[S+] [PATTERN] list procedural languages\n" msgstr " \\dL[S+] [パターン] 手続ã言語ã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:210 +#: help.c:238 #, c-format msgid " \\dm[S+] [PATTERN] list materialized views\n" msgstr " \\dm[S+] [パターン] マテリアライズドビューã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:211 +#: help.c:239 #, c-format msgid " \\dn[S+] [PATTERN] list schemas\n" msgstr " \\dn[S+] [パターン] スキーマã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:212 +#: help.c:240 #, c-format msgid " \\do[S] [PATTERN] list operators\n" msgstr " \\do[S] [åå‰] 演算å­ã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:213 +#: help.c:241 #, c-format msgid " \\dO[S+] [PATTERN] list collations\n" -msgstr " \\dO[S+] [パターン] ç…§åˆé †åºã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" +msgstr " \\dO[S+] [パターン] ç…§åˆé †åºã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:214 +#: help.c:242 #, c-format msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n" msgstr " \\dp [パターン] テーブルã€ãƒ“ューã€ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã®ã‚¢ã‚¯ã‚»ã‚¹æ¨©ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:215 +#: help.c:243 #, c-format msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n" msgstr " \\drds [パターン1 [パターン2]] データベース毎ã®ãƒ­ãƒ¼ãƒ«ï¼ˆãƒ¦ãƒ¼ã‚¶ãƒ¼ï¼‰è¨­å®šã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:216 +#: help.c:244 #, c-format msgid " \\ds[S+] [PATTERN] list sequences\n" msgstr " \\ds[S+] [パターン] シーケンスã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:217 +#: help.c:245 #, c-format msgid " \\dt[S+] [PATTERN] list tables\n" msgstr " \\dt[S+] [パターン] テーブルã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:218 +#: help.c:246 #, c-format msgid " \\dT[S+] [PATTERN] list data types\n" msgstr " \\dT[S+] [パターン] データ型ã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:219 +#: help.c:247 #, c-format -msgid " \\du[+] [PATTERN] list roles\n" -msgstr " \\du[+] [パターン] ロールã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" +#| msgid " \\du[+] [PATTERN] list roles\n" +msgid " \\du[S+] [PATTERN] list roles\n" +msgstr " \\du[S+] [パターン] ロールã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:220 +#: help.c:248 #, c-format msgid " \\dv[S+] [PATTERN] list views\n" msgstr " \\dv[S+] [パターン] ビューã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:221 +#: help.c:249 #, c-format msgid " \\dE[S+] [PATTERN] list foreign tables\n" msgstr " \\dE[S+] [パターン] 外部テーブルã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:222 +#: help.c:250 #, c-format msgid " \\dx[+] [PATTERN] list extensions\n" msgstr " \\dx[+] [パターン] æ‹¡å¼µã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:223 +#: help.c:251 #, c-format msgid " \\dy [PATTERN] list event triggers\n" msgstr " \\dy [パターン] イベントトリガã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:224 +#: help.c:252 #, c-format msgid " \\l[+] [PATTERN] list databases\n" msgstr " \\l[+] [パターン] データベースã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" -#: help.c:225 +#: help.c:253 #, c-format -msgid " \\sf[+] FUNCNAME show a function's definition\n" -msgstr " \\sf[+] 関数å 関数定義を表示ã™ã‚‹\n" +#| msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] 関数å 関数定義を表示ã™ã‚‹\n" -#: help.c:226 +#: help.c:254 +#, c-format +#| msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgid " \\sv[+] VIEWNAME show a view's definition\n" +msgstr " \\sv[+] ビューå ビュー定義を表示ã™ã‚‹\n" + +#: help.c:255 #, c-format msgid " \\z [PATTERN] same as \\dp\n" msgstr " \\z [パターン] \\dp ã¨åŒã˜\n" -#: help.c:229 +#: help.c:258 #, c-format msgid "Formatting\n" msgstr "書å¼è¨­å®š\n" -#: help.c:230 +#: help.c:259 +#, c-format +msgid " \\a toggle between unaligned and aligned output mode\n" +msgstr " \\a 出力モード㮠'unaligned' / 'aligned' を切り替ãˆã‚‹\n" + +#: help.c:260 +#, c-format +msgid " \\C [STRING] set table title, or unset if none\n" +msgstr " \\C タイトル テーブルã®ã‚¿ã‚¤ãƒˆãƒ«ã‚’設定ã™ã‚‹ã€‚指定ãŒãªã‘れã°è§£é™¤\n" + +#: help.c:261 +#, c-format +msgid " \\f [STRING] show or set field separator for unaligned query output\n" +msgstr " \\f [文字列] æ¡æƒãˆã‚’行ã‚ãªã„(unaligned)å•ã„åˆã‚ã›å‡ºåŠ›ã«ãŠã‘るフィールド区切り文字を表示ã¾ãŸã¯è¨­å®š\n" + +#: help.c:262 +#, c-format +msgid " \\H toggle HTML output mode (currently %s)\n" +msgstr " \\H HTML ã®å‡ºåŠ›ãƒ¢ãƒ¼ãƒ‰ã‚’åˆ‡ã‚Šæ›¿ãˆã‚‹(ç¾åœ¨: %s)\n" + +#: help.c:264 +#, c-format +#| msgid "" +#| " \\pset [NAME [VALUE]] set table output option\n" +#| " (NAME := {format|border|expanded|fieldsep|fieldsep_zero|footer|null|\n" +#| " numericlocale|recordsep|recordsep_zero|tuples_only|title|tableattr|pager})\n" +msgid "" +" \\pset [NAME [VALUE]] set table output option\n" +" (NAME := {format|border|expanded|fieldsep|fieldsep_zero|footer|null|\n" +" numericlocale|recordsep|recordsep_zero|tuples_only|title|tableattr|pager|\n" +" unicode_border_linestyle|unicode_column_linestyle|unicode_header_linestyle})\n" +msgstr "" +" \\pset [åå‰ [値]] テーブル出力ã®ã‚ªãƒ—ションを設定ã™ã‚‹\n" +" (åå‰ := {format|border|expanded|fieldsep|fieldsep_zero|footer|null|\n" +" numericlocale|recordsep|recordsep_zero|tuples_only|title|tableattr|pager|\n" +" unicode_border_linestyle|unicode_column_linestyle|unicode_header_linestyle})\n" + +#: help.c:268 +#, c-format +msgid " \\t [on|off] show only rows (currently %s)\n" +msgstr " \\t [on|off] 行ã®ã¿ã‚’表示ã™ã‚‹ã‹ï¼Ÿ (ç¾åœ¨: %s)\n" + +#: help.c:270 +#, c-format +msgid " \\T [STRING] set HTML
tag attributes, or unset if none\n" +msgstr " \\T [文字列] HTML ã®
ã‚¿ã‚°ã®å±žæ€§ã‚’セット。引数ãŒãªã‘れã°è§£é™¤\n" + +#: help.c:271 +#, c-format +msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n" +msgstr " \\x [on|off|auto] 拡張出力ã®åˆ‡ã‚Šæ›¿ãˆ(ç¾åœ¨: %s)\n" + +#: help.c:275 +#, c-format +msgid "Connection\n" +msgstr "接続\n" + +#: help.c:277 +#, c-format +msgid "" +" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" +" connect to new database (currently \"%s\")\n" +msgstr "" +" \\c[onnect] {[DBå|- ユーザå|- ホストå|- ãƒãƒ¼ãƒˆç•ªå·|-] | conninfo}\n" +" æ–°ã—ã„ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æŽ¥ç¶šã™ã‚‹ (ç¾åœ¨: \"%s\")\n" + +#: help.c:281 +#, c-format +msgid "" +" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" +" connect to new database (currently no connection)\n" +msgstr "" +" \\c[onnect] {[DBå|- ユーザå|- ホストå|- ãƒãƒ¼ãƒˆç•ªå·|-] | conninfo}\n" +" æ–°ã—ã„ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æŽ¥ç¶šã™ã‚‹ (ç¾åœ¨: 接続無ã—)\n" + +#: help.c:283 +#, c-format +msgid " \\encoding [ENCODING] show or set client encoding\n" +msgstr "" +" \\encoding [エンコーディング]\n" +" クライアントã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’表示ã¾ãŸã¯ã‚»ãƒƒãƒˆ\n" + +#: help.c:284 +#, c-format +msgid " \\password [USERNAME] securely change the password for a user\n" +msgstr " \\password [ユーザå] ユーザã®ãƒ‘スワードを安全ã«å¤‰æ›´ã™ã‚‹\n" + +#: help.c:285 +#, c-format +msgid " \\conninfo display information about current connection\n" +msgstr " \\conninfo ç¾åœ¨ã®æŽ¥ç¶šã«é–¢ã™ã‚‹æƒ…報を表示ã™ã‚‹\n" + +#: help.c:288 +#, c-format +msgid "Operating System\n" +msgstr "オペレーティングシステム\n" + +#: help.c:289 +#, c-format +msgid " \\cd [DIR] change the current working directory\n" +msgstr " \\cd [DIR] カレントディレクトリを変更\n" + +#: help.c:290 +#, c-format +msgid " \\setenv NAME [VALUE] set or unset environment variable\n" +msgstr " \\setenv NAME [VALUE] 環境変数ã®è¨­å®šã€è¨­å®šè§£é™¤ã‚’行ã†\n" + +#: help.c:291 +#, c-format +msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" +msgstr " \\timing [on|off] コマンドã®ã‚¿ã‚¤ãƒŸãƒ³ã‚°ã‚’切り替ãˆã‚‹(ç¾åœ¨: %s)\n" + +#: help.c:293 +#, c-format +msgid " \\! [COMMAND] execute command in shell or start interactive shell\n" +msgstr " \\! [コマンド] シェルã§ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã€ã‚‚ã—ãã¯ä¼šè©±åž‹ã‚·ã‚§ãƒ«ã‚’èµ·å‹•\n" + +#: help.c:296 +#, c-format +msgid "Variables\n" +msgstr "変数\n" + +#: help.c:297 +#, c-format +msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" +msgstr " \\prompt [テキスト] 変数å ユーザã«å†…部変数をセットã™ã‚‹ã‚ˆã†ä¿ƒã™\n" + +#: help.c:298 +#, c-format +msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n" +msgstr "" +" \\set [変数å [値]]\n" +" 内部変数ã®å€¤ã‚’セット。引数ãŒãªã„å ´åˆã¯ä¸€è¦§è¡¨ç¤ºã€‚\n" + +#: help.c:299 +#, c-format +msgid " \\unset NAME unset (delete) internal variable\n" +msgstr " \\unset 変数å 内部変数を削除ã™ã‚‹\n" + +#: help.c:302 +#, c-format +msgid "Large Objects\n" +msgstr "ラージオブジェクト\n" + +#: help.c:303 +#, 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:330 +#, c-format +msgid "" +"List of specially treated variables\n" +"\n" +msgstr "" +"ç‰¹åˆ¥ã«æ‰±ã‚れる変数ã®ä¸€è¦§\n" +"\n" + +#: help.c:332 +#, c-format +#| msgid "Variables\n" +msgid "psql variables:\n" +msgstr "psql 変数:\n" + +#: help.c:334 +#, 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:336 +#, c-format +msgid " AUTOCOMMIT if set, successful SQL commands are automatically committed\n" +msgstr " AUTOCOMMIT 設定ã™ã‚‹ã¨ã€æˆåŠŸã—ãŸSQLコマンドã¯è‡ªå‹•çš„ã«ã‚³ãƒŸãƒƒãƒˆã•れる\n" + +#: help.c:337 +#, c-format +msgid "" +" COMP_KEYWORD_CASE determines the case used to complete SQL key words\n" +" [lower, upper, preserve-lower, preserve-upper]\n" +msgstr "" +" COMP_KEYWORD_CASE SQLキーワードを補完ã™ã‚‹æ™‚ã«å¤§æ–‡å­—å°æ–‡å­—ã®ã©ã¡ã‚‰ã‚’使用ã™ã‚‹ã‹æ±ºå®šã™ã‚‹\n" +" [lower, upper, preserve-lower, preserve-upper]\n" + +#: help.c:339 +#, c-format +#| msgid " -d, --dbname=NAME connect to database name\n" +msgid " DBNAME the currently connected database name\n" +msgstr " DBNAME ç¾åœ¨æŽ¥ç¶šã—ã¦ã„るデータベースå\n" + +#: help.c:340 +#, c-format +msgid "" +" ECHO controls what input is written to standard output\n" +" [all, errors, none, queries]\n" +msgstr "" +" ECHO ã©ã®å…¥åŠ›ã‚’æ¨™æº–å‡ºåŠ›ã¸å‡ºåŠ›ã™ã‚‹ã‹ã‚’制御ã™ã‚‹\n" +" [all, errors, none, queries]\n" + +#: help.c:342 +#, c-format +msgid "" +" ECHO_HIDDEN if set, display internal queries executed by backslash commands;\n" +" if set to \"noexec\", just show without execution\n" +msgstr "" +" ECHO_HIDDEN 設定ã™ã‚‹ã¨ã€ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã‚³ãƒžãƒ³ãƒ‰ã«ã‚ˆã£ã¦å®Ÿè¡Œã•れる内部å•ã„åˆã‚ã›ã‚’表示ã™ã‚‹;\n" +" \"noexec\" ã«è¨­å®šã™ã‚‹ã¨ã€å®Ÿè¡Œã›ãšã«è¡¨ç¤ºã®ã¿è¡Œã†\n" + +#: help.c:344 +#, c-format +#| msgid "Sets the client's character set encoding." +msgid " ENCODING current client character set encoding\n" +msgstr " ENCODING ç¾åœ¨ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã®æ–‡å­—セット符å·åŒ–æ–¹å¼\n" + +#: help.c:345 +#, c-format +msgid "" +" FETCH_COUNT the number of result rows to fetch and display at a time\n" +" (default: 0=unlimited)\n" +msgstr "" +" FETCH_COUNT 一度ã«ãƒ•ェッãƒã—ã¦è¡¨ç¤ºã™ã‚‹è¡Œæ•°\n" +" (デフォルト: 0=ç„¡é™)\n" + +#: help.c:347 +#, c-format +msgid " HISTCONTROL controls command history [ignorespace, ignoredups, ignoreboth]\n" +msgstr " HISTCONTROL コマンド履歴ã®åˆ¶å¾¡ [ignorespace, ignoredups, ignoreboth]\n" + +#: help.c:348 +#, c-format +msgid " HISTFILE file name used to store the command history\n" +msgstr " HISTFILE コマンド履歴を格ç´ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã•れるファイルå\n" + +#: help.c:349 +#, c-format +msgid " HISTSIZE the number of commands to store in the command history\n" +msgstr " HISTSIZE ã‚³ãƒžãƒ³ãƒ‰å±¥æ­´ã«æ ¼ç´ã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰æ•°\n" + +#: help.c:350 +#, c-format +#| msgid " -p, --port=PORT database server port\n" +msgid " HOST the currently connected database server host\n" +msgstr " HOST ç¾åœ¨æŽ¥ç¶šã—ã¦ã„るデータベースサーãƒã®ãƒ›ã‚¹ãƒˆ\n" + +#: help.c:351 +#, c-format +msgid " IGNOREEOF if unset, sending an EOF to interactive session terminates application\n" +msgstr " IGNOREEOF 未設定ã®å ´åˆã€å¯¾è©±ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«EOFã‚’é€ä¿¡ã™ã‚‹ã¨ã‚¢ãƒ—リケーションãŒçµ‚了\n" + +#: help.c:352 +#, c-format +#| msgid " -o OID set next OID\n" +msgid " LASTOID value of the last affected OID\n" +msgstr " LASTOID 最後ã«å½±éŸ¿ã‚’å—ã‘ãŸOIDã®å€¤\n" + +#: help.c:353 +#, c-format +msgid " ON_ERROR_ROLLBACK if set, an error doesn't stop a transaction (uses implicit savepoints)\n" +msgstr " ON_ERROR_ROLLBACK 設定ã™ã‚‹ã¨ã€ã‚¨ãƒ©ãƒ¼ã§ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãŒåœæ­¢ã—ãªã„ (暗黙的ã«ã‚»ãƒ¼ãƒ–ãƒã‚¤ãƒ³ãƒˆã‚’使用)\n" + +#: help.c:354 +#, c-format +msgid " ON_ERROR_STOP stop batch execution after error\n" +msgstr " ON_ERROR_STOP エラー後ã®ãƒãƒƒãƒå®Ÿè¡Œã‚’åœæ­¢\n" + +#: help.c:355 +#, c-format +#| msgid " \\conninfo display information about current connection\n" +msgid " PORT server port of the current connection\n" +msgstr " PORT ç¾åœ¨ã®æŽ¥ç¶šã®ã‚µãƒ¼ãƒã®ãƒãƒ¼ãƒˆç•ªå·\n" + +#: help.c:356 +#, c-format +msgid " PROMPT1 specifies the standard psql prompt\n" +msgstr " PROMPT1 標準psqlプロンプトを指定\n" + +#: help.c:357 +#, c-format +msgid " PROMPT2 specifies the prompt used when a statement continues from a previous line\n" +msgstr " PROMPT2 å‰ã®è¡Œã‹ã‚‰æ–‡ãŒç¶šã„ã¦ã„ã‚‹ã¨ãã«ä½¿ç”¨ã™ã‚‹ãƒ—ロンプトを指定\n" + +#: help.c:358 +#, c-format +msgid " PROMPT3 specifies the prompt used during COPY ... FROM STDIN\n" +msgstr " PROMPT3 COPY ... FROM STDIN ã®å®Ÿè¡Œä¸­ã«ä½¿ç”¨ã•れるプロンプトを指定\n" + +#: help.c:359 +#, c-format +#| msgid " -q, --quiet run quietly (no messages, only query output)\n" +msgid " QUIET run quietly (same as -q option)\n" +msgstr " QUIET é™ã‹ã«å®Ÿè¡Œ (-qオプションã¨åŒã˜)\n" + +#: help.c:360 +#, c-format +msgid " SHOW_CONTEXT controls display of message context fields [never, errors, always]\n" +msgstr " SHOW_CONTEXT メッセージコンテキストフィールドã®è¡¨ç¤ºã‚’制御 [never, errors, always]\n" + +#: help.c:361 +#, c-format +msgid " SINGLELINE end of line terminates SQL command mode (same as -S option)\n" +msgstr " SINGLELINE 行ã®çµ‚端ã§SQLコマンドモードを終了 (-Sオプションã¨åŒã˜)\n" + +#: help.c:362 +#, c-format +msgid " SINGLESTEP single-step mode (same as -s option)\n" +msgstr " SINGLESTEP シングルステップモード (-s オプションã¨åŒã˜)\n" + +#: help.c:363 +#, c-format +#| msgid " -C, --create create the target database\n" +msgid " USER the currently connected database user\n" +msgstr " USER ç¾åœ¨æŽ¥ç¶šã—ã¦ã„るデータベースユーザー\n" + +#: help.c:364 +#, c-format +msgid " VERBOSITY controls verbosity of error reports [default, verbose, terse]\n" +msgstr " VERBOSITY エラー報告ã®å†—長性を制御 [default, verbose, terse]\n" + +#: help.c:366 +#, c-format +#| msgid "List of settings" +msgid "" +"\n" +"Display settings:\n" +msgstr "" +"\n" +"設定を表示:\n" + +#: help.c:368 +#, 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:370 +#, c-format +msgid " border border style (number)\n" +msgstr " border 境界線ã®å½¢å¼ (æ•°)\n" + +#: help.c:371 +#, c-format +msgid " columns target width for the wrapped format\n" +msgstr " columns wrapped書å¼ã®å¯¾è±¡å¹…\n" + +#: help.c:372 +#, c-format +msgid " expanded (or x) expanded output [on, off, auto]\n" +msgstr " expanded (or x) 拡張表示 [on, off, auto]\n" + +#: help.c:373 +#, c-format +#| msgid "" +#| " -F, --field-separator=STRING\n" +#| " field separator for unaligned output (default: \"%s\")\n" +msgid " fieldsep field separator for unaligned output (default \"%s\")\n" +msgstr " fieldsep æ¡æƒãˆãªã—ã®å‡ºåŠ›ã§ã®ãƒ•ィールド区切り文字(デフォルト \"%s\")\n" + +#: help.c:374 +#, c-format +#| msgid "" +#| " -z, --field-separator-zero\n" +#| " set field separator for unaligned output to zero byte\n" +msgid " fieldsep_zero set field separator for unaligned output to zero byte\n" +msgstr " fieldsep_zero æ¡æƒãˆãªã—ã®å‡ºåŠ›ã§ã®ãƒ•ィールド区切り文字をゼロãƒã‚¤ãƒˆã«è¨­å®š\n" + +#: help.c:375 +#, c-format +msgid " footer enable or disable display of the table footer [on, off]\n" +msgstr " footer テーブルフッタã®è¡¨ç¤ºã‚’有効化ã¾ãŸã¯ç„¡åŠ¹åŒ– [on, off]\n" + +#: help.c:376 +#, c-format +#| msgid "\\pset: allowed formats are unaligned, aligned, wrapped, html, latex, troff-ms\n" +msgid " format set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n" +msgstr " format 出力形å¼ã‚’設定 [unaligned, aligned, wrapped, html, asciidoc, ...]\n" + +#: help.c:377 +#, c-format +#| msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" +msgid " linestyle set the border line drawing style [ascii, old-ascii, unicode]\n" +msgstr " linestyle 境界線ã®è¡¨ç¤ºå½¢å¼ã‚’設定 [ascii, old-ascii, unicode]\n" + +#: help.c:378 +#, c-format +msgid " null set the string to be printed in place of a null value\n" +msgstr " null null値ã®ä»£ã‚りã«è¡¨ç¤ºã™ã‚‹æ–‡å­—列を設定\n" + +#: help.c:379 #, c-format -msgid " \\a toggle between unaligned and aligned output mode\n" -msgstr " \\a 出力モード㮠'unaligned' / 'aligned' を切り替ãˆã‚‹\n" +msgid "" +" numericlocale enable or disable display of a locale-specific character to separate\n" +" groups of digits [on, off]\n" +msgstr "" +" numericlocale æ¡ã®ããりを分離ã™ã‚‹ãƒ­ã‚±ãƒ¼ãƒ«å›ºæœ‰ã®æ–‡å­—ã®è¡¨ç¤ºã‚’\n" +"有効化ã¾ãŸã¯ç„¡åŠ¹åŒ– [on, off]\n" -#: help.c:231 +#: help.c:381 #, c-format -msgid " \\C [STRING] set table title, or unset if none\n" -msgstr " \\C タイトル テーブルã®ã‚¿ã‚¤ãƒˆãƒ«ã‚’設定ã™ã‚‹ã€‚指定ãŒãªã‘れã°è§£é™¤\n" +msgid " pager control when an external pager is used [yes, no, always]\n" +msgstr " pager ã„ã¤å¤–部ページャãŒä½¿ç”¨ã•れるã‹åˆ¶å¾¡ [yes, no, always]\n" -#: help.c:232 +#: help.c:382 #, c-format -msgid " \\f [STRING] show or set field separator for unaligned query output\n" -msgstr " \\f [文字列] æ¡æƒãˆã‚’行ã‚ãªã„(unaligned)å•ã„åˆã‚ã›å‡ºåŠ›ã«ãŠã‘るフィールド区切り文字を表示ã¾ãŸã¯è¨­å®š\n" +#| msgid " \\f [STRING] show or set field separator for unaligned query output\n" +msgid " recordsep record (line) separator for unaligned output\n" +msgstr " recordsep æ¡æƒãˆãªã—ã®å‡ºåŠ›ã§ã®ãƒ¬ã‚³ãƒ¼ãƒ‰(行)ã®åŒºåˆ‡ã‚Šæ–‡å­—\n" -#: help.c:233 +#: help.c:383 #, c-format -msgid " \\H toggle HTML output mode (currently %s)\n" -msgstr " \\H HTML ã®å‡ºåŠ›ãƒ¢ãƒ¼ãƒ‰ã‚’åˆ‡ã‚Šæ›¿ãˆã‚‹(ç¾åœ¨: %s)\n" +#| msgid "" +#| " -0, --record-separator-zero\n" +#| " set record separator for unaligned output to zero byte\n" +msgid " recordsep_zero set record separator for unaligned output to zero byte\n" +msgstr " recordsep_zero æ¡æƒãˆãªã—ã®å‡ºåŠ›ã§ã®ãƒ¬ã‚³ãƒ¼ãƒ‰ã®åŒºåˆ‡ã‚Šæ–‡å­—をゼロãƒã‚¤ãƒˆã«è¨­å®š\n" -#: help.c:235 +#: help.c:384 #, c-format msgid "" -" \\pset [NAME [VALUE]] set table output option\n" -" (NAME := {format|border|expanded|fieldsep|fieldsep_zero|footer|null|\n" -" numericlocale|recordsep|recordsep_zero|tuples_only|title|tableattr|pager})\n" +" tableattr (or T) specify attributes for table tag in html format or proportional\n" +" column widths for left-aligned data types in latex-longtable format\n" msgstr "" -" \\pset [åå‰ [値]] テーブル出力ã®ã‚ªãƒ—ションを設定ã™ã‚‹\n" -" (åå‰ := {format|border|expanded|fieldsep|fieldsep_zero|footer|null|\n" -" numericlocale|recordsep|recordsep_zero|tuples_only|title|tableattr|pager})\n" +" tableattr (ã¾ãŸã¯ T) htmlå½¢å¼ã§ã®ãƒ†ãƒ¼ãƒ–ルタグã®å±žæ€§ã‚„\n" +" latex-longtable書å¼ã§ã®å·¦æƒãˆã•れãŸãƒ‡ãƒ¼ã‚¿åž‹ã®åˆ—å¹…ã®æ¯”率を指定\n" -#: help.c:238 +#: help.c:386 #, c-format -msgid " \\t [on|off] show only rows (currently %s)\n" -msgstr " \\t [on|off] 行ã®ã¿ã‚’表示ã™ã‚‹ã‹ï¼Ÿ (ç¾åœ¨: %s)\n" +#| msgid " \\C [STRING] set table title, or unset if none\n" +msgid " title set the table title for any subsequently printed tables\n" +msgstr " title 今後表示ã•れる全ã¦ã®ãƒ†ãƒ¼ãƒ–ル用ã«ãƒ†ãƒ¼ãƒ–ルタイトルを設定\n" -#: help.c:240 +#: help.c:387 #, c-format -msgid " \\T [STRING] set HTML
tag attributes, or unset if none\n" -msgstr " \\T [文字列] HTML ã®
ã‚¿ã‚°ã®å±žæ€§ã‚’セット。引数ãŒãªã‘れã°è§£é™¤\n" +msgid " tuples_only if set, only actual table data is shown\n" +msgstr " tuples_only 設定ã™ã‚‹ã¨ã€å®Ÿãƒ†ãƒ¼ãƒ–ルデータã®ã¿ã‚’表示\n" -#: help.c:241 +#: help.c:388 #, c-format -msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n" -msgstr " \\x [on|off|auto] 拡張出力ã®åˆ‡ã‚Šæ›¿ãˆ(ç¾åœ¨: %s)\n" +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:245 +#: help.c:393 #, c-format -msgid "Connection\n" -msgstr "接続\n" +msgid "" +"\n" +"Environment variables:\n" +msgstr "" +"\n" +"環境変数:\n" -#: help.c:247 +#: help.c:397 #, c-format msgid "" -" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" -" connect to new database (currently \"%s\")\n" +" NAME=VALUE [NAME=VALUE] psql ...\n" +" or \\setenv NAME [VALUE] inside psql\n" +"\n" msgstr "" -" \\c[onnect] {[DBå|- ユーザå|- ホストå|- ãƒãƒ¼ãƒˆç•ªå·|-] | conninfo}\n" -" æ–°ã—ã„ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æŽ¥ç¶šã™ã‚‹ (ç¾åœ¨: \"%s\")\n" +" NAME=VALUE [NAME=VALUE] psql ...\n" +" ã¾ãŸã¯ã€psqlã®ä¸­ã§ \\setenv NAME [VALUE]\n" +"\n" -#: help.c:251 +#: help.c:399 #, c-format msgid "" -" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" -" connect to new database (currently no connection)\n" +" set NAME=VALUE\n" +" psql ...\n" +" or \\setenv NAME [VALUE] inside psql\n" +"\n" msgstr "" -" \\c[onnect] {[DBå|- ユーザå|- ホストå|- ãƒãƒ¼ãƒˆç•ªå·|-] | conninfo}\n" -" æ–°ã—ã„ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æŽ¥ç¶šã™ã‚‹ (ç¾åœ¨: 接続無ã—)\n" +" set NAME=VALUE\n" +" psql ...\n" +" ã¾ãŸã¯ã€psqlã®ä¸­ã§ \\setenv NAME [VALUE]\n" +"\n" -#: help.c:253 +#: help.c:402 #, c-format -msgid " \\encoding [ENCODING] show or set client encoding\n" -msgstr "" -" \\encoding [エンコーディング]\n" -" クライアントã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚’表示ã¾ãŸã¯ã‚»ãƒƒãƒˆ\n" +msgid " COLUMNS number of columns for wrapped format\n" +msgstr " COLUMNS wrappedå½¢å¼ã®åˆ—æ•°\n" -#: help.c:254 +#: help.c:403 #, c-format -msgid " \\password [USERNAME] securely change the password for a user\n" -msgstr " \\password [ユーザå] ユーザã®ãƒ‘スワードを安全ã«å¤‰æ›´ã™ã‚‹\n" +#| msgid " -x NUM internal use\n" +msgid " PAGER name of external pager program\n" +msgstr " PAGER 外部ã®ãƒšãƒ¼ã‚¸ãƒ£ãƒ—ログラムå\n" -#: help.c:255 +#: help.c:404 #, c-format -msgid " \\conninfo display information about current connection\n" -msgstr " \\conninfo ç¾åœ¨ã®æŽ¥ç¶šã«é–¢ã™ã‚‹æƒ…報を表示ã™ã‚‹\n" +msgid " PGAPPNAME same as the application_name connection parameter\n" +msgstr " PGAPPNAME application_name接続パラメータã¨åŒã˜\n" -#: help.c:258 +#: help.c:405 #, c-format -msgid "Operating System\n" -msgstr "オペレーティングシステム\n" +msgid " PGDATABASE same as the dbname connection parameter\n" +msgstr " PGDATABASE dbname接続パラメータã¨åŒã˜\n" -#: help.c:259 +#: help.c:406 #, c-format -msgid " \\cd [DIR] change the current working directory\n" -msgstr " \\cd [DIR] カレントディレクトリを変更\n" +#| msgid " -l enable SSL connections\n" +msgid " PGHOST same as the host connection parameter\n" +msgstr " PGHOST host接続パラメータã¨åŒã˜\n" -#: help.c:260 +#: help.c:407 #, c-format -msgid " \\setenv NAME [VALUE] set or unset environment variable\n" -msgstr " \\setenv NAME [VALUE] 環境変数ã®è¨­å®šã€è¨­å®šè§£é™¤ã‚’行ã†\n" +#| msgid " -l enable SSL connections\n" +msgid " PGPORT same as the port connection parameter\n" +msgstr " PGPORT port接続パラメータã¨åŒã˜\n" -#: help.c:261 +#: help.c:408 #, c-format -msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" -msgstr " \\timing [on|off] コマンドã®ã‚¿ã‚¤ãƒŸãƒ³ã‚°ã‚’切り替ãˆã‚‹(ç¾åœ¨: %s)\n" +#| msgid " DBNAME database name (defaults to user name)\n" +msgid " PGUSER same as the user connection parameter\n" +msgstr " PGUSER user接続パラメータã¨åŒã˜\n" -#: help.c:263 +#: help.c:409 #, c-format -msgid " \\! [COMMAND] execute command in shell or start interactive shell\n" -msgstr " \\! [コマンド] シェルã§ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã€ã‚‚ã—ãã¯ä¼šè©±åž‹ã‚·ã‚§ãƒ«ã‚’èµ·å‹•\n" +msgid " PGPASSWORD connection password (not recommended)\n" +msgstr " PGPASSWORD 接続パスワード (推奨ã•れã¦ã„ã¾ã›ã‚“)\n" -#: help.c:266 +#: help.c:410 #, c-format -msgid "Variables\n" -msgstr "変数\n" +#| msgid " -f, --file=FILENAME output file name\n" +msgid " PGPASSFILE password file name\n" +msgstr " PGPASSFILE パスワードファイルå\n" -#: help.c:267 +#: help.c:411 #, c-format -msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" -msgstr " \\prompt [テキスト] 変数å ユーザã«å†…部変数をセットã™ã‚‹ã‚ˆã†ä¿ƒã™\n" +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:268 +#: help.c:413 #, c-format -msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n" +#| msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number\n" +msgid "" +" PSQL_EDITOR_LINENUMBER_ARG\n" +" how to specify a line number when invoking the editor\n" msgstr "" -" \\set [変数å [値]]\n" -" 内部変数ã®å€¤ã‚’セット。引数ãŒãªã„å ´åˆã¯ä¸€è¦§è¡¨ç¤ºã€‚\n" +" PSQL_EDITOR_LINENUMBER_ARG\n" +" エディタを呼ã³å‡ºã™ã¨ãã®è¡Œç•ªå·ã®æŒ‡å®šæ–¹æ³•\n" -#: help.c:269 +#: help.c:415 #, c-format -msgid " \\unset NAME unset (delete) internal variable\n" -msgstr " \\unset 変数å 内部変数を削除ã™ã‚‹\n" +msgid " PSQL_HISTORY alternative location for the command history file\n" +msgstr " PSQL_HISTORY コマンド履歴ファイルã®å ´æ‰€ã‚’指定\n" -#: help.c:272 +#: help.c:416 #, c-format -msgid "Large Objects\n" -msgstr "ラージオブジェクト\n" +msgid " PSQLRC alternative location for the user's .psqlrc file\n" +msgstr " PSQLRC ユーザã®.psqlrcファイルã®å ´æ‰€ã‚’指定\n" -#: help.c:273 +#: help.c:417 #, 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" +msgid " SHELL shell used by the \\! command\n" +msgstr " SHELL \\!コマンドã§ä½¿ç”¨ã•れるシェル\n" + +#: help.c:418 +#, c-format +#| msgid " -L DIRECTORY where to find the input files\n" +msgid " TMPDIR directory for temporary files\n" +msgstr " TMPDIR 一時ファイル用ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª\n" -#: help.c:320 +#: help.c:461 msgid "Available help:\n" msgstr "利用å¯èƒ½ãªãƒ˜ãƒ«ãƒ—:\n" -#: help.c:404 +#: help.c:545 #, c-format msgid "" "Command: %s\n" @@ -2430,7 +3219,7 @@ msgstr "" "%s\n" "\n" -#: help.c:420 +#: help.c:561 #, c-format msgid "" "No help available for \"%s\".\n" @@ -2439,54 +3228,62 @@ msgstr "" "\"%s\" ã«ã¤ã„ã¦ã¯ãƒ˜ãƒ«ãƒ—情報ãŒã‚りã¾ã›ã‚“。\n" "引数ãªã—ã§ \\h ã¨ã‚¿ã‚¤ãƒ—ã™ã‚‹ã¨ã€ãƒ˜ãƒ«ãƒ—ã®ä¸€è¦§ãŒè¡¨ç¤ºã•れã¾ã™ã€‚\n" -#: input.c:194 +#: input.c:216 #, c-format msgid "could not read from input file: %s\n" msgstr "入力ファイルã‹ã‚‰èª­ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: input.c:446 input.c:485 +#: input.c:471 input.c:510 #, c-format msgid "could not save history to file \"%s\": %s\n" msgstr "ファイル \"%s\" ã«ãƒ’ストリをä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: input.c:505 +#: input.c:530 #, c-format msgid "history is not supported by this installation\n" msgstr "ã“ã®ç’°å¢ƒã§ã¯ãƒ’ストリ機能をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" -#: large_obj.c:66 +#: large_obj.c:64 #, c-format msgid "%s: not connected to a database\n" msgstr "%s: ã©ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã‚‚接続ã•れã¦ã„ã¾ã›ã‚“\n" -#: large_obj.c:85 +#: large_obj.c:83 #, c-format msgid "%s: current transaction is aborted\n" msgstr "%s: トランザクションを中断ã—ã¾ã—ãŸ\n" -#: large_obj.c:88 +#: large_obj.c:86 #, c-format msgid "%s: unknown transaction status\n" msgstr "%s: トランザクションã®çŠ¶æ…‹ãŒä¸æ˜Žã§ã™ã€‚\n" -#: large_obj.c:289 large_obj.c:300 +#: large_obj.c:287 large_obj.c:298 msgid "ID" msgstr "ID" -#: large_obj.c:310 +#: large_obj.c:308 msgid "Large objects" msgstr "ラージオブジェクト" -#: mainloop.c:159 +#: mainloop.c:168 #, c-format msgid "Use \"\\q\" to leave %s.\n" msgstr "\"\\q\" ã§ %s を抜ã‘ã¾ã™ã€‚\n" -#: mainloop.c:189 +#: mainloop.c:190 +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:210 msgid "You are using psql, the command-line interface to PostgreSQL." msgstr "PostgreSQL ã¸ã®ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ãƒ»ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースã€psql ã¸ã‚ˆã†ã“ã。" -#: mainloop.c:190 +#: mainloop.c:211 #, c-format msgid "" "Type: \\copyright for distribution terms\n" @@ -2501,1912 +3298,2073 @@ msgstr "" " \\g ã¨æ‰“ã¤ã‹ã‚»ãƒŸã‚³ãƒ­ãƒ³ã§é–‰ã˜ã‚‹ã¨ã€å•ã„åˆã‚ã›ã‚’実行ã—ã¾ã™ã€‚\n" " \\q ã§çµ‚了ã—ã¾ã™ã€‚\n" -#: print.c:272 -#, c-format -msgid "(%lu row)" -msgid_plural "(%lu rows)" -msgstr[0] "(%lu 行)" -msgstr[1] "(%lu 行)" - -#: print.c:1174 -#, c-format -msgid "(No rows)\n" -msgstr "(行ãŒã‚りã¾ã›ã‚“)\n" - -#: print.c:2238 -#, c-format -msgid "Interrupted\n" -msgstr "中断ã•れã¾ã—ãŸ\n" - -#: print.c:2304 -#, c-format -msgid "Cannot add header to table content: column count of %d exceeded.\n" -msgstr "テーブルã®å†…容ã«è¦‹å‡ºã—を追加ã§ãã¾ã›ã‚“ã§ã—ãŸï¼šåˆ—æ•° %d ãŒåˆ¶é™ã‚’è¶Šãˆã¦ã„ã¾ã™ã€‚\n" - -#: print.c:2344 -#, c-format -msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" -msgstr "テーブルã®å†…容ã«ã‚»ãƒ«ã‚’追加ã§ãã¾ã›ã‚“ã§ã—ãŸï¼šå…¨ã‚»ãƒ«æ•° %d ãŒåˆ¶é™ã‚’è¶Šãˆã¦ã„ã¾ã™ã€‚\n" - -#: print.c:2570 -#, c-format -msgid "invalid output format (internal error): %d" -msgstr "出力フォーマットãŒç„¡åŠ¹ï¼ˆå†…éƒ¨ã‚¨ãƒ©ãƒ¼ï¼‰ï¼š%d" - -#: psqlscan.l:727 -#, c-format -msgid "skipping recursive expansion of variable \"%s\"\n" -msgstr "変数\"%s\"ã®å†å¸°å±•開をスキップã—ã¦ã„ã¾ã™\n" - -#: psqlscan.l:1604 +#: psqlscanslash.l:584 #, c-format msgid "unterminated quoted string\n" msgstr "文字列ã®å¼•用符ãŒé–‰ã˜ã¦ã„ã¾ã›ã‚“\n" -#: psqlscan.l:1704 +#: psqlscanslash.l:738 #, c-format msgid "%s: out of memory\n" msgstr "%s: メモリä¸è¶³ã§ã™\n" -#: psqlscan.l:1933 -#, c-format -msgid "can't escape without active connection\n" -msgstr "æœ‰åŠ¹ãªæŽ¥ç¶šãªã—ã§ã¯ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ã§ãã¾ã›ã‚“\n" - -#: sql_help.c:32 sql_help.c:35 sql_help.c:38 sql_help.c:60 sql_help.c:62 -#: sql_help.c:64 sql_help.c:75 sql_help.c:77 sql_help.c:79 sql_help.c:103 -#: sql_help.c:107 sql_help.c:109 sql_help.c:111 sql_help.c:113 sql_help.c:116 -#: sql_help.c:118 sql_help.c:120 sql_help.c:213 sql_help.c:215 sql_help.c:216 -#: sql_help.c:218 sql_help.c:220 sql_help.c:223 sql_help.c:225 sql_help.c:227 -#: sql_help.c:229 sql_help.c:241 sql_help.c:242 sql_help.c:243 sql_help.c:245 -#: sql_help.c:290 sql_help.c:292 sql_help.c:294 sql_help.c:296 sql_help.c:354 -#: sql_help.c:359 sql_help.c:361 sql_help.c:396 sql_help.c:398 sql_help.c:401 -#: sql_help.c:403 sql_help.c:460 sql_help.c:465 sql_help.c:470 sql_help.c:475 -#: sql_help.c:515 sql_help.c:517 sql_help.c:519 sql_help.c:522 sql_help.c:524 -#: sql_help.c:535 sql_help.c:537 sql_help.c:577 sql_help.c:579 sql_help.c:582 -#: sql_help.c:584 sql_help.c:586 sql_help.c:612 sql_help.c:616 sql_help.c:629 -#: sql_help.c:632 sql_help.c:635 sql_help.c:655 sql_help.c:667 sql_help.c:675 -#: sql_help.c:678 sql_help.c:681 sql_help.c:711 sql_help.c:717 sql_help.c:719 -#: sql_help.c:723 sql_help.c:726 sql_help.c:729 sql_help.c:738 sql_help.c:749 -#: sql_help.c:751 sql_help.c:768 sql_help.c:777 sql_help.c:779 sql_help.c:781 -#: sql_help.c:793 sql_help.c:797 sql_help.c:799 sql_help.c:878 sql_help.c:880 -#: sql_help.c:883 sql_help.c:886 sql_help.c:888 sql_help.c:890 sql_help.c:951 -#: sql_help.c:953 sql_help.c:955 sql_help.c:958 sql_help.c:979 sql_help.c:982 -#: sql_help.c:985 sql_help.c:988 sql_help.c:992 sql_help.c:994 sql_help.c:996 -#: sql_help.c:998 sql_help.c:1012 sql_help.c:1015 sql_help.c:1017 -#: sql_help.c:1019 sql_help.c:1029 sql_help.c:1031 sql_help.c:1041 -#: sql_help.c:1043 sql_help.c:1052 sql_help.c:1073 sql_help.c:1075 -#: sql_help.c:1077 sql_help.c:1080 sql_help.c:1082 sql_help.c:1084 -#: sql_help.c:1122 sql_help.c:1128 sql_help.c:1130 sql_help.c:1133 -#: sql_help.c:1135 sql_help.c:1137 sql_help.c:1164 sql_help.c:1167 -#: sql_help.c:1169 sql_help.c:1171 sql_help.c:1173 sql_help.c:1175 -#: sql_help.c:1178 sql_help.c:1218 sql_help.c:1456 sql_help.c:1472 -#: sql_help.c:1485 sql_help.c:1536 sql_help.c:1540 sql_help.c:1550 -#: sql_help.c:1568 sql_help.c:1591 sql_help.c:1609 sql_help.c:1637 -#: sql_help.c:1696 sql_help.c:1738 sql_help.c:1760 sql_help.c:1780 -#: sql_help.c:1781 sql_help.c:1816 sql_help.c:1836 sql_help.c:1858 -#: sql_help.c:1886 sql_help.c:1911 sql_help.c:1947 sql_help.c:2133 -#: sql_help.c:2146 sql_help.c:2163 sql_help.c:2179 sql_help.c:2202 -#: sql_help.c:2253 sql_help.c:2257 sql_help.c:2259 sql_help.c:2265 -#: sql_help.c:2283 sql_help.c:2310 sql_help.c:2345 sql_help.c:2357 -#: sql_help.c:2366 sql_help.c:2416 sql_help.c:2444 sql_help.c:2452 -#: sql_help.c:2460 sql_help.c:2468 sql_help.c:2476 sql_help.c:2484 -#: sql_help.c:2492 sql_help.c:2500 sql_help.c:2509 sql_help.c:2520 -#: sql_help.c:2528 sql_help.c:2536 sql_help.c:2544 sql_help.c:2552 -#: sql_help.c:2562 sql_help.c:2571 sql_help.c:2580 sql_help.c:2588 -#: sql_help.c:2596 sql_help.c:2605 sql_help.c:2613 sql_help.c:2621 -#: sql_help.c:2629 sql_help.c:2637 sql_help.c:2645 sql_help.c:2653 -#: sql_help.c:2661 sql_help.c:2669 sql_help.c:2677 sql_help.c:2686 -#: sql_help.c:2694 sql_help.c:2711 sql_help.c:2726 sql_help.c:2932 -#: sql_help.c:2983 sql_help.c:3011 sql_help.c:3019 sql_help.c:3417 -#: sql_help.c:3465 sql_help.c:3585 +#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:64 sql_help.c:66 +#: sql_help.c:68 sql_help.c:79 sql_help.c:81 sql_help.c:83 sql_help.c:109 +#: sql_help.c:115 sql_help.c:117 sql_help.c:119 sql_help.c:121 sql_help.c:124 +#: sql_help.c:126 sql_help.c:128 sql_help.c:221 sql_help.c:223 sql_help.c:224 +#: sql_help.c:226 sql_help.c:228 sql_help.c:231 sql_help.c:233 sql_help.c:235 +#: sql_help.c:237 sql_help.c:249 sql_help.c:250 sql_help.c:251 sql_help.c:253 +#: sql_help.c:300 sql_help.c:302 sql_help.c:304 sql_help.c:306 sql_help.c:367 +#: sql_help.c:372 sql_help.c:374 sql_help.c:417 sql_help.c:419 sql_help.c:422 +#: sql_help.c:424 sql_help.c:491 sql_help.c:496 sql_help.c:501 sql_help.c:506 +#: sql_help.c:511 sql_help.c:560 sql_help.c:562 sql_help.c:564 sql_help.c:566 +#: sql_help.c:569 sql_help.c:571 sql_help.c:582 sql_help.c:584 sql_help.c:625 +#: sql_help.c:627 sql_help.c:629 sql_help.c:632 sql_help.c:634 sql_help.c:636 +#: sql_help.c:669 sql_help.c:673 sql_help.c:677 sql_help.c:696 sql_help.c:699 +#: sql_help.c:702 sql_help.c:731 sql_help.c:743 sql_help.c:751 sql_help.c:754 +#: sql_help.c:757 sql_help.c:772 sql_help.c:775 sql_help.c:819 sql_help.c:842 +#: sql_help.c:853 sql_help.c:855 sql_help.c:872 sql_help.c:881 sql_help.c:883 +#: sql_help.c:885 sql_help.c:897 sql_help.c:901 sql_help.c:903 sql_help.c:987 +#: sql_help.c:989 sql_help.c:992 sql_help.c:995 sql_help.c:997 sql_help.c:999 +#: sql_help.c:1060 sql_help.c:1062 sql_help.c:1064 sql_help.c:1067 +#: sql_help.c:1088 sql_help.c:1091 sql_help.c:1094 sql_help.c:1097 +#: sql_help.c:1101 sql_help.c:1103 sql_help.c:1105 sql_help.c:1107 +#: sql_help.c:1121 sql_help.c:1124 sql_help.c:1126 sql_help.c:1128 +#: sql_help.c:1138 sql_help.c:1140 sql_help.c:1150 sql_help.c:1152 +#: sql_help.c:1162 sql_help.c:1165 sql_help.c:1186 sql_help.c:1188 +#: sql_help.c:1190 sql_help.c:1193 sql_help.c:1195 sql_help.c:1197 +#: sql_help.c:1247 sql_help.c:1285 sql_help.c:1288 sql_help.c:1290 +#: sql_help.c:1292 sql_help.c:1294 sql_help.c:1296 sql_help.c:1299 +#: sql_help.c:1339 sql_help.c:1544 sql_help.c:1608 sql_help.c:1627 +#: sql_help.c:1640 sql_help.c:1694 sql_help.c:1698 sql_help.c:1708 +#: sql_help.c:1728 sql_help.c:1753 sql_help.c:1771 sql_help.c:1800 +#: sql_help.c:1875 sql_help.c:1917 sql_help.c:1939 sql_help.c:1959 +#: sql_help.c:1960 sql_help.c:1995 sql_help.c:2015 sql_help.c:2037 +#: sql_help.c:2050 sql_help.c:2081 sql_help.c:2106 sql_help.c:2150 +#: sql_help.c:2336 sql_help.c:2349 sql_help.c:2366 sql_help.c:2382 +#: sql_help.c:2421 sql_help.c:2472 sql_help.c:2476 sql_help.c:2478 +#: sql_help.c:2484 sql_help.c:2502 sql_help.c:2529 sql_help.c:2564 +#: sql_help.c:2576 sql_help.c:2585 sql_help.c:2629 sql_help.c:2643 +#: sql_help.c:2671 sql_help.c:2679 sql_help.c:2687 sql_help.c:2695 +#: sql_help.c:2703 sql_help.c:2711 sql_help.c:2719 sql_help.c:2727 +#: sql_help.c:2736 sql_help.c:2747 sql_help.c:2755 sql_help.c:2763 +#: sql_help.c:2771 sql_help.c:2779 sql_help.c:2789 sql_help.c:2798 +#: sql_help.c:2807 sql_help.c:2815 sql_help.c:2824 sql_help.c:2832 +#: sql_help.c:2841 sql_help.c:2849 sql_help.c:2857 sql_help.c:2865 +#: sql_help.c:2873 sql_help.c:2881 sql_help.c:2889 sql_help.c:2897 +#: sql_help.c:2905 sql_help.c:2922 sql_help.c:2931 sql_help.c:2939 +#: sql_help.c:2956 sql_help.c:2971 sql_help.c:3236 sql_help.c:3287 +#: sql_help.c:3316 sql_help.c:3324 sql_help.c:3743 sql_help.c:3791 +#: sql_help.c:3932 msgid "name" msgstr "åå‰" -#: sql_help.c:33 sql_help.c:36 sql_help.c:39 sql_help.c:300 sql_help.c:1279 -#: sql_help.c:2417 sql_help.c:3234 +#: sql_help.c:37 sql_help.c:40 sql_help.c:43 sql_help.c:311 sql_help.c:1405 +#: sql_help.c:2644 sql_help.c:3539 msgid "aggregate_signature" msgstr "集約関数ã®å‘¼å‡ºã—情報" -#: sql_help.c:34 sql_help.c:61 sql_help.c:76 sql_help.c:108 sql_help.c:228 -#: sql_help.c:246 sql_help.c:362 sql_help.c:402 sql_help.c:469 sql_help.c:502 -#: sql_help.c:516 sql_help.c:536 sql_help.c:583 sql_help.c:631 sql_help.c:677 -#: sql_help.c:718 sql_help.c:740 sql_help.c:750 sql_help.c:780 sql_help.c:800 -#: sql_help.c:887 sql_help.c:952 sql_help.c:995 sql_help.c:1016 -#: sql_help.c:1030 sql_help.c:1042 sql_help.c:1054 sql_help.c:1081 -#: sql_help.c:1129 sql_help.c:1172 +#: sql_help.c:38 sql_help.c:65 sql_help.c:80 sql_help.c:116 sql_help.c:236 +#: sql_help.c:254 sql_help.c:375 sql_help.c:423 sql_help.c:500 sql_help.c:546 +#: sql_help.c:561 sql_help.c:583 sql_help.c:633 sql_help.c:698 sql_help.c:753 +#: sql_help.c:774 sql_help.c:820 sql_help.c:844 sql_help.c:854 sql_help.c:884 +#: sql_help.c:904 sql_help.c:996 sql_help.c:1061 sql_help.c:1104 +#: sql_help.c:1125 sql_help.c:1139 sql_help.c:1151 sql_help.c:1164 +#: sql_help.c:1194 sql_help.c:1248 sql_help.c:1293 msgid "new_name" msgstr "æ–°ã—ã„åå‰" -#: sql_help.c:37 sql_help.c:63 sql_help.c:78 sql_help.c:110 sql_help.c:226 -#: sql_help.c:244 sql_help.c:360 sql_help.c:431 sql_help.c:474 sql_help.c:538 -#: sql_help.c:547 sql_help.c:602 sql_help.c:615 sql_help.c:634 sql_help.c:680 -#: sql_help.c:752 sql_help.c:778 sql_help.c:798 sql_help.c:935 sql_help.c:954 -#: sql_help.c:997 sql_help.c:1018 sql_help.c:1076 sql_help.c:1170 +#: sql_help.c:41 sql_help.c:67 sql_help.c:82 sql_help.c:118 sql_help.c:234 +#: sql_help.c:252 sql_help.c:373 sql_help.c:459 sql_help.c:505 sql_help.c:585 +#: sql_help.c:594 sql_help.c:652 sql_help.c:672 sql_help.c:701 sql_help.c:756 +#: sql_help.c:856 sql_help.c:882 sql_help.c:902 sql_help.c:1045 +#: sql_help.c:1063 sql_help.c:1106 sql_help.c:1127 sql_help.c:1189 +#: sql_help.c:1291 sql_help.c:2322 msgid "new_owner" msgstr "æ–°ã—ã„æ‰€æœ‰è€…" -#: sql_help.c:40 sql_help.c:65 sql_help.c:80 sql_help.c:230 sql_help.c:293 -#: sql_help.c:404 sql_help.c:479 sql_help.c:585 sql_help.c:619 sql_help.c:637 -#: sql_help.c:683 sql_help.c:782 sql_help.c:889 sql_help.c:999 sql_help.c:1020 -#: sql_help.c:1032 sql_help.c:1044 sql_help.c:1083 sql_help.c:1174 +#: sql_help.c:44 sql_help.c:69 sql_help.c:84 sql_help.c:238 sql_help.c:303 +#: sql_help.c:425 sql_help.c:510 sql_help.c:635 sql_help.c:676 sql_help.c:704 +#: sql_help.c:759 sql_help.c:886 sql_help.c:998 sql_help.c:1108 +#: sql_help.c:1129 sql_help.c:1141 sql_help.c:1153 sql_help.c:1196 +#: sql_help.c:1295 msgid "new_schema" msgstr "æ–°ã—ã„スキーマ" -#: sql_help.c:41 sql_help.c:1326 sql_help.c:2418 sql_help.c:3253 +#: sql_help.c:45 sql_help.c:1458 sql_help.c:2645 sql_help.c:3558 msgid "where aggregate_signature is:" msgstr "集約関数ã®å‘¼å‡ºã—情報ã¯ä»¥ä¸‹ã®é€šã‚Šï¼š" -#: sql_help.c:42 sql_help.c:45 sql_help.c:48 sql_help.c:310 sql_help.c:333 -#: sql_help.c:336 sql_help.c:339 sql_help.c:461 sql_help.c:466 sql_help.c:471 -#: sql_help.c:476 sql_help.c:1295 sql_help.c:1327 sql_help.c:1330 -#: sql_help.c:1333 sql_help.c:1457 sql_help.c:1473 sql_help.c:1476 -#: sql_help.c:1697 sql_help.c:2419 sql_help.c:2422 sql_help.c:2425 -#: sql_help.c:2510 sql_help.c:2870 sql_help.c:3149 sql_help.c:3240 -#: sql_help.c:3254 sql_help.c:3257 sql_help.c:3260 +#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:321 sql_help.c:346 +#: sql_help.c:349 sql_help.c:352 sql_help.c:492 sql_help.c:497 sql_help.c:502 +#: sql_help.c:507 sql_help.c:512 sql_help.c:1423 sql_help.c:1459 +#: sql_help.c:1462 sql_help.c:1465 sql_help.c:1609 sql_help.c:1628 +#: sql_help.c:1631 sql_help.c:1876 sql_help.c:2646 sql_help.c:2649 +#: sql_help.c:2652 sql_help.c:2737 sql_help.c:3122 sql_help.c:3454 +#: sql_help.c:3545 sql_help.c:3559 sql_help.c:3562 sql_help.c:3565 msgid "argmode" msgstr "引数ã®ãƒ¢ãƒ¼ãƒ‰" -#: sql_help.c:43 sql_help.c:46 sql_help.c:49 sql_help.c:311 sql_help.c:334 -#: sql_help.c:337 sql_help.c:340 sql_help.c:462 sql_help.c:467 sql_help.c:472 -#: sql_help.c:477 sql_help.c:1296 sql_help.c:1328 sql_help.c:1331 -#: sql_help.c:1334 sql_help.c:1458 sql_help.c:1474 sql_help.c:1477 -#: sql_help.c:1698 sql_help.c:2420 sql_help.c:2423 sql_help.c:2426 -#: sql_help.c:2511 sql_help.c:3241 sql_help.c:3255 sql_help.c:3258 -#: sql_help.c:3261 +#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:322 sql_help.c:347 +#: sql_help.c:350 sql_help.c:353 sql_help.c:493 sql_help.c:498 sql_help.c:503 +#: sql_help.c:508 sql_help.c:513 sql_help.c:1424 sql_help.c:1460 +#: sql_help.c:1463 sql_help.c:1466 sql_help.c:1610 sql_help.c:1629 +#: sql_help.c:1632 sql_help.c:1877 sql_help.c:2647 sql_help.c:2650 +#: sql_help.c:2653 sql_help.c:2738 sql_help.c:3546 sql_help.c:3560 +#: sql_help.c:3563 sql_help.c:3566 msgid "argname" msgstr "引数å" -#: sql_help.c:44 sql_help.c:47 sql_help.c:50 sql_help.c:312 sql_help.c:335 -#: sql_help.c:338 sql_help.c:341 sql_help.c:463 sql_help.c:468 sql_help.c:473 -#: sql_help.c:478 sql_help.c:1297 sql_help.c:1329 sql_help.c:1332 -#: sql_help.c:1335 sql_help.c:1699 sql_help.c:2421 sql_help.c:2424 -#: sql_help.c:2427 sql_help.c:2512 sql_help.c:3242 sql_help.c:3256 -#: sql_help.c:3259 sql_help.c:3262 +#: sql_help.c:48 sql_help.c:51 sql_help.c:54 sql_help.c:323 sql_help.c:348 +#: sql_help.c:351 sql_help.c:354 sql_help.c:494 sql_help.c:499 sql_help.c:504 +#: sql_help.c:509 sql_help.c:514 sql_help.c:1425 sql_help.c:1461 +#: sql_help.c:1464 sql_help.c:1467 sql_help.c:1878 sql_help.c:2648 +#: sql_help.c:2651 sql_help.c:2654 sql_help.c:2739 sql_help.c:3547 +#: sql_help.c:3561 sql_help.c:3564 sql_help.c:3567 msgid "argtype" msgstr "引数ã®åž‹" -#: sql_help.c:104 sql_help.c:357 sql_help.c:425 sql_help.c:432 sql_help.c:712 -#: sql_help.c:795 sql_help.c:1013 sql_help.c:1123 sql_help.c:1149 -#: sql_help.c:1383 sql_help.c:1389 sql_help.c:1640 sql_help.c:1664 -#: sql_help.c:1669 sql_help.c:1739 sql_help.c:1887 sql_help.c:1968 -#: sql_help.c:2148 sql_help.c:2311 sql_help.c:2333 sql_help.c:2745 +#: sql_help.c:110 sql_help.c:370 sql_help.c:448 sql_help.c:460 sql_help.c:814 +#: sql_help.c:899 sql_help.c:1122 sql_help.c:1242 sql_help.c:1270 +#: sql_help.c:1515 sql_help.c:1521 sql_help.c:1803 sql_help.c:1835 +#: sql_help.c:1842 sql_help.c:1918 sql_help.c:2082 sql_help.c:2171 +#: sql_help.c:2351 sql_help.c:2530 sql_help.c:2552 sql_help.c:2990 +#: sql_help.c:3156 msgid "option" msgstr "オプション" -#: sql_help.c:105 sql_help.c:713 sql_help.c:1124 sql_help.c:1740 -#: sql_help.c:1888 sql_help.c:2312 +#: sql_help.c:111 sql_help.c:815 sql_help.c:1243 sql_help.c:1919 +#: sql_help.c:2083 sql_help.c:2531 msgid "where option can be:" msgstr "オプションã¯ä»¥ä¸‹ã®é€šã‚Šï¼š" -#: sql_help.c:106 sql_help.c:714 sql_help.c:1125 sql_help.c:1575 -#: sql_help.c:1889 sql_help.c:2313 +#: sql_help.c:112 sql_help.c:1735 +msgid "allowconn" +msgstr "接続許å¯" + +#: sql_help.c:113 sql_help.c:816 sql_help.c:1244 sql_help.c:1736 +#: sql_help.c:2084 sql_help.c:2532 msgid "connlimit" msgstr "最大接続数" -#: sql_help.c:112 sql_help.c:526 sql_help.c:588 sql_help.c:603 sql_help.c:892 -#: sql_help.c:936 +#: sql_help.c:114 sql_help.c:1737 +#| msgid "template" +msgid "istemplate" +msgstr "テンプレートã‹" + +#: sql_help.c:120 sql_help.c:573 sql_help.c:638 sql_help.c:1001 +#: sql_help.c:1038 msgid "new_tablespace" msgstr "テーブルスペース" -#: sql_help.c:114 sql_help.c:117 sql_help.c:119 sql_help.c:483 sql_help.c:485 -#: sql_help.c:486 sql_help.c:721 sql_help.c:725 sql_help.c:728 sql_help.c:811 -#: sql_help.c:814 sql_help.c:1131 sql_help.c:1134 sql_help.c:1136 -#: sql_help.c:1707 sql_help.c:3036 sql_help.c:3406 +#: sql_help.c:122 sql_help.c:125 sql_help.c:127 sql_help.c:519 sql_help.c:521 +#: sql_help.c:522 sql_help.c:823 sql_help.c:827 sql_help.c:830 sql_help.c:915 +#: sql_help.c:918 sql_help.c:1250 sql_help.c:1253 sql_help.c:1255 +#: sql_help.c:1887 sql_help.c:3341 sql_help.c:3732 msgid "configuration_parameter" msgstr "設定パラメータ" -#: sql_help.c:115 sql_help.c:358 sql_help.c:421 sql_help.c:426 sql_help.c:433 -#: sql_help.c:484 sql_help.c:521 sql_help.c:594 sql_help.c:600 sql_help.c:722 -#: sql_help.c:796 sql_help.c:812 sql_help.c:813 sql_help.c:911 sql_help.c:930 -#: sql_help.c:957 sql_help.c:1014 sql_help.c:1132 sql_help.c:1150 -#: sql_help.c:1641 sql_help.c:1665 sql_help.c:1670 sql_help.c:1708 -#: sql_help.c:1709 sql_help.c:1768 sql_help.c:1800 sql_help.c:1969 -#: sql_help.c:2043 sql_help.c:2051 sql_help.c:2083 sql_help.c:2105 -#: sql_help.c:2122 sql_help.c:2149 sql_help.c:2334 sql_help.c:3407 -#: sql_help.c:3408 +#: sql_help.c:123 sql_help.c:371 sql_help.c:443 sql_help.c:449 sql_help.c:461 +#: sql_help.c:520 sql_help.c:568 sql_help.c:644 sql_help.c:650 sql_help.c:824 +#: sql_help.c:900 sql_help.c:916 sql_help.c:917 sql_help.c:1020 +#: sql_help.c:1040 sql_help.c:1066 sql_help.c:1123 sql_help.c:1251 +#: sql_help.c:1271 sql_help.c:1804 sql_help.c:1836 sql_help.c:1843 +#: sql_help.c:1888 sql_help.c:1889 sql_help.c:1947 sql_help.c:1979 +#: sql_help.c:2172 sql_help.c:2246 sql_help.c:2254 sql_help.c:2286 +#: sql_help.c:2308 sql_help.c:2325 sql_help.c:2352 sql_help.c:2553 +#: sql_help.c:3157 sql_help.c:3733 sql_help.c:3734 msgid "value" msgstr "値" -#: sql_help.c:177 +#: sql_help.c:185 msgid "target_role" msgstr "対象ã®ãƒ­ãƒ¼ãƒ«" -#: sql_help.c:178 sql_help.c:1624 sql_help.c:1929 sql_help.c:1934 -#: sql_help.c:2852 sql_help.c:2859 sql_help.c:2873 sql_help.c:2879 -#: sql_help.c:3131 sql_help.c:3138 sql_help.c:3152 sql_help.c:3158 +#: sql_help.c:186 sql_help.c:1787 sql_help.c:2130 sql_help.c:2135 +#: sql_help.c:3104 sql_help.c:3111 sql_help.c:3125 sql_help.c:3131 +#: sql_help.c:3436 sql_help.c:3443 sql_help.c:3457 sql_help.c:3463 msgid "schema_name" msgstr "スキーマå" -#: sql_help.c:179 +#: sql_help.c:187 msgid "abbreviated_grant_or_revoke" msgstr "権é™ä»˜ä¸Žï¼å‰¥å¥ªã®çœç•¥å½¢" -#: sql_help.c:180 +#: sql_help.c:188 msgid "where abbreviated_grant_or_revoke is one of:" msgstr "権é™ä»˜ä¸Žï¼å‰¥å¥ªã®çœç•¥å½¢ã¯ä»¥ä¸‹ã®ã„ãšã‚Œã‹ï¼š" -#: sql_help.c:181 sql_help.c:182 sql_help.c:183 sql_help.c:184 sql_help.c:185 -#: sql_help.c:186 sql_help.c:187 sql_help.c:188 sql_help.c:525 sql_help.c:587 -#: sql_help.c:891 sql_help.c:1743 sql_help.c:1744 sql_help.c:1745 -#: sql_help.c:1746 sql_help.c:1747 sql_help.c:1892 sql_help.c:1893 -#: sql_help.c:1894 sql_help.c:1895 sql_help.c:1896 sql_help.c:2316 -#: sql_help.c:2317 sql_help.c:2318 sql_help.c:2319 sql_help.c:2320 -#: sql_help.c:2853 sql_help.c:2857 sql_help.c:2860 sql_help.c:2862 -#: sql_help.c:2864 sql_help.c:2866 sql_help.c:2868 sql_help.c:2874 -#: sql_help.c:2876 sql_help.c:2878 sql_help.c:2880 sql_help.c:2882 -#: sql_help.c:2884 sql_help.c:2885 sql_help.c:2886 sql_help.c:3132 -#: sql_help.c:3136 sql_help.c:3139 sql_help.c:3141 sql_help.c:3143 -#: sql_help.c:3145 sql_help.c:3147 sql_help.c:3153 sql_help.c:3155 -#: sql_help.c:3157 sql_help.c:3159 sql_help.c:3161 sql_help.c:3163 -#: sql_help.c:3164 sql_help.c:3165 sql_help.c:3427 +#: sql_help.c:189 sql_help.c:190 sql_help.c:191 sql_help.c:192 sql_help.c:193 +#: sql_help.c:194 sql_help.c:195 sql_help.c:196 sql_help.c:544 sql_help.c:572 +#: sql_help.c:637 sql_help.c:777 sql_help.c:834 sql_help.c:1000 +#: sql_help.c:1258 sql_help.c:1922 sql_help.c:1923 sql_help.c:1924 +#: sql_help.c:1925 sql_help.c:1926 sql_help.c:2052 sql_help.c:2087 +#: sql_help.c:2088 sql_help.c:2089 sql_help.c:2090 sql_help.c:2091 +#: sql_help.c:2535 sql_help.c:2536 sql_help.c:2537 sql_help.c:2538 +#: sql_help.c:2539 sql_help.c:3138 sql_help.c:3139 sql_help.c:3140 +#: sql_help.c:3437 sql_help.c:3441 sql_help.c:3444 sql_help.c:3446 +#: sql_help.c:3448 sql_help.c:3450 sql_help.c:3452 sql_help.c:3458 +#: sql_help.c:3460 sql_help.c:3462 sql_help.c:3464 sql_help.c:3466 +#: sql_help.c:3468 sql_help.c:3469 sql_help.c:3470 sql_help.c:3753 msgid "role_name" msgstr "ロールå" -#: sql_help.c:214 sql_help.c:414 sql_help.c:902 sql_help.c:904 sql_help.c:1166 -#: sql_help.c:1594 sql_help.c:1598 sql_help.c:1764 sql_help.c:2055 -#: sql_help.c:2065 sql_help.c:2087 sql_help.c:2900 sql_help.c:3303 -#: sql_help.c:3304 sql_help.c:3308 sql_help.c:3313 sql_help.c:3381 -#: sql_help.c:3382 sql_help.c:3387 sql_help.c:3392 sql_help.c:3521 -#: sql_help.c:3522 sql_help.c:3526 sql_help.c:3531 sql_help.c:3611 -#: sql_help.c:3613 sql_help.c:3644 sql_help.c:3690 sql_help.c:3691 -#: sql_help.c:3695 sql_help.c:3700 +#: sql_help.c:222 sql_help.c:436 sql_help.c:1011 sql_help.c:1013 +#: sql_help.c:1287 sql_help.c:1756 sql_help.c:1760 sql_help.c:1846 +#: sql_help.c:1850 sql_help.c:1943 sql_help.c:2258 sql_help.c:2268 +#: sql_help.c:2290 sql_help.c:3187 sql_help.c:3202 sql_help.c:3204 +#: sql_help.c:3618 sql_help.c:3619 sql_help.c:3628 sql_help.c:3669 +#: sql_help.c:3670 sql_help.c:3671 sql_help.c:3672 sql_help.c:3673 +#: sql_help.c:3674 sql_help.c:3707 sql_help.c:3708 sql_help.c:3713 +#: sql_help.c:3718 sql_help.c:3857 sql_help.c:3858 sql_help.c:3867 +#: sql_help.c:3908 sql_help.c:3909 sql_help.c:3910 sql_help.c:3911 +#: sql_help.c:3912 sql_help.c:3913 sql_help.c:3960 sql_help.c:3962 +#: sql_help.c:3995 sql_help.c:4051 sql_help.c:4052 sql_help.c:4061 +#: sql_help.c:4102 sql_help.c:4103 sql_help.c:4104 sql_help.c:4105 +#: sql_help.c:4106 sql_help.c:4107 msgid "expression" msgstr "評価å¼" -#: sql_help.c:217 +#: sql_help.c:225 msgid "domain_constraint" msgstr "ドメイン制約" -#: sql_help.c:219 sql_help.c:221 sql_help.c:224 sql_help.c:884 sql_help.c:917 -#: sql_help.c:918 sql_help.c:919 sql_help.c:939 sql_help.c:1285 -#: sql_help.c:1597 sql_help.c:1672 sql_help.c:2054 sql_help.c:2064 +#: sql_help.c:227 sql_help.c:229 sql_help.c:232 sql_help.c:451 sql_help.c:452 +#: sql_help.c:993 sql_help.c:1026 sql_help.c:1027 sql_help.c:1028 +#: sql_help.c:1048 sql_help.c:1411 sql_help.c:1413 sql_help.c:1759 +#: sql_help.c:1845 sql_help.c:1849 sql_help.c:2257 sql_help.c:2267 +#: sql_help.c:3199 msgid "constraint_name" msgstr "制約å" -#: sql_help.c:222 sql_help.c:885 +#: sql_help.c:230 sql_help.c:994 msgid "new_constraint_name" msgstr "æ–°ã—ã„制約å" -#: sql_help.c:291 sql_help.c:794 +#: sql_help.c:301 sql_help.c:898 msgid "new_version" msgstr "æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³" -#: sql_help.c:295 sql_help.c:297 +#: sql_help.c:305 sql_help.c:307 msgid "member_object" msgstr "メンãƒã‚ªãƒ–ジェクト" -#: sql_help.c:298 +#: sql_help.c:308 msgid "where member_object is:" msgstr "メンãƒã‚ªãƒ–ジェクトã¯ä»¥ä¸‹ã®é€šã‚Š:" -#: sql_help.c:299 sql_help.c:1278 sql_help.c:3233 +#: sql_help.c:309 sql_help.c:314 sql_help.c:315 sql_help.c:316 sql_help.c:317 +#: sql_help.c:318 sql_help.c:319 sql_help.c:324 sql_help.c:328 sql_help.c:330 +#: sql_help.c:332 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:339 sql_help.c:340 sql_help.c:343 +#: sql_help.c:344 sql_help.c:1403 sql_help.c:1408 sql_help.c:1415 +#: sql_help.c:1416 sql_help.c:1417 sql_help.c:1418 sql_help.c:1419 +#: sql_help.c:1420 sql_help.c:1421 sql_help.c:1426 sql_help.c:1428 +#: sql_help.c:1432 sql_help.c:1434 sql_help.c:1438 sql_help.c:1439 +#: sql_help.c:1442 sql_help.c:1443 sql_help.c:1444 sql_help.c:1445 +#: sql_help.c:1446 sql_help.c:1447 sql_help.c:1448 sql_help.c:1449 +#: sql_help.c:1450 sql_help.c:1455 sql_help.c:1456 sql_help.c:3535 +#: sql_help.c:3540 sql_help.c:3541 sql_help.c:3542 sql_help.c:3543 +#: sql_help.c:3549 sql_help.c:3550 sql_help.c:3551 sql_help.c:3552 +#: sql_help.c:3553 sql_help.c:3554 sql_help.c:3555 sql_help.c:3556 +msgid "object_name" +msgstr "オブジェクトå" + +#: sql_help.c:310 sql_help.c:1404 sql_help.c:3538 msgid "aggregate_name" msgstr "集約関数ã®åå‰" -#: sql_help.c:301 sql_help.c:1280 sql_help.c:1516 sql_help.c:1520 -#: sql_help.c:1522 sql_help.c:2435 +#: sql_help.c:312 sql_help.c:1406 sql_help.c:1674 sql_help.c:1678 +#: sql_help.c:1680 sql_help.c:2662 msgid "source_type" msgstr "ソースã®åž‹" -#: sql_help.c:302 sql_help.c:1281 sql_help.c:1517 sql_help.c:1521 -#: sql_help.c:1523 sql_help.c:2436 +#: sql_help.c:313 sql_help.c:1407 sql_help.c:1675 sql_help.c:1679 +#: sql_help.c:1681 sql_help.c:2663 msgid "target_type" msgstr "ターゲットã®åž‹" -#: sql_help.c:303 sql_help.c:304 sql_help.c:305 sql_help.c:306 sql_help.c:307 -#: sql_help.c:308 sql_help.c:313 sql_help.c:317 sql_help.c:319 sql_help.c:321 -#: sql_help.c:322 sql_help.c:323 sql_help.c:324 sql_help.c:325 sql_help.c:326 -#: sql_help.c:327 sql_help.c:328 sql_help.c:329 sql_help.c:330 sql_help.c:331 -#: sql_help.c:1282 sql_help.c:1287 sql_help.c:1288 sql_help.c:1289 -#: sql_help.c:1290 sql_help.c:1291 sql_help.c:1292 sql_help.c:1293 -#: sql_help.c:1298 sql_help.c:1300 sql_help.c:1304 sql_help.c:1306 -#: sql_help.c:1308 sql_help.c:1309 sql_help.c:1312 sql_help.c:1313 -#: sql_help.c:1314 sql_help.c:1315 sql_help.c:1316 sql_help.c:1317 -#: sql_help.c:1318 sql_help.c:1319 sql_help.c:1320 sql_help.c:1323 -#: sql_help.c:1324 sql_help.c:3230 sql_help.c:3235 sql_help.c:3236 -#: sql_help.c:3237 sql_help.c:3238 sql_help.c:3244 sql_help.c:3245 -#: sql_help.c:3246 sql_help.c:3247 sql_help.c:3248 sql_help.c:3249 -#: sql_help.c:3250 sql_help.c:3251 -msgid "object_name" -msgstr "オブジェクトå" - -#: sql_help.c:309 sql_help.c:665 sql_help.c:1294 sql_help.c:1518 -#: sql_help.c:1553 sql_help.c:1612 sql_help.c:1817 sql_help.c:1848 -#: sql_help.c:2207 sql_help.c:2869 sql_help.c:3148 sql_help.c:3239 -#: sql_help.c:3329 sql_help.c:3333 sql_help.c:3337 sql_help.c:3340 -#: sql_help.c:3547 sql_help.c:3551 sql_help.c:3555 sql_help.c:3558 -#: sql_help.c:3716 sql_help.c:3720 sql_help.c:3724 sql_help.c:3727 +#: sql_help.c:320 sql_help.c:741 sql_help.c:1422 sql_help.c:1676 +#: sql_help.c:1711 sql_help.c:1774 sql_help.c:1996 sql_help.c:2027 +#: sql_help.c:2426 sql_help.c:3121 sql_help.c:3453 sql_help.c:3544 +#: sql_help.c:3647 sql_help.c:3651 sql_help.c:3655 sql_help.c:3658 +#: sql_help.c:3886 sql_help.c:3890 sql_help.c:3894 sql_help.c:3897 +#: sql_help.c:4080 sql_help.c:4084 sql_help.c:4088 sql_help.c:4091 msgid "function_name" msgstr "関数å" -#: sql_help.c:314 sql_help.c:658 sql_help.c:1301 sql_help.c:1841 +#: sql_help.c:325 sql_help.c:734 sql_help.c:1429 sql_help.c:2020 msgid "operator_name" msgstr "演算å­å" -#: sql_help.c:315 sql_help.c:613 sql_help.c:617 sql_help.c:1302 -#: sql_help.c:1818 sql_help.c:2553 +#: sql_help.c:326 sql_help.c:670 sql_help.c:674 sql_help.c:678 sql_help.c:1430 +#: sql_help.c:1997 sql_help.c:2780 msgid "left_type" msgstr "左辺ã®åž‹" -#: sql_help.c:316 sql_help.c:614 sql_help.c:618 sql_help.c:1303 -#: sql_help.c:1819 sql_help.c:2554 +#: sql_help.c:327 sql_help.c:671 sql_help.c:675 sql_help.c:679 sql_help.c:1431 +#: sql_help.c:1998 sql_help.c:2781 msgid "right_type" msgstr "å³è¾ºã®åž‹" -#: sql_help.c:318 sql_help.c:320 sql_help.c:630 sql_help.c:633 sql_help.c:636 -#: sql_help.c:656 sql_help.c:668 sql_help.c:676 sql_help.c:679 sql_help.c:682 -#: sql_help.c:1305 sql_help.c:1307 sql_help.c:1838 sql_help.c:1859 -#: sql_help.c:2070 sql_help.c:2563 sql_help.c:2572 +#: sql_help.c:329 sql_help.c:331 sql_help.c:697 sql_help.c:700 sql_help.c:703 +#: sql_help.c:732 sql_help.c:744 sql_help.c:752 sql_help.c:755 sql_help.c:758 +#: sql_help.c:1433 sql_help.c:1435 sql_help.c:2017 sql_help.c:2038 +#: sql_help.c:2273 sql_help.c:2790 sql_help.c:2799 msgid "index_method" msgstr "インデックスメソッド" -#: sql_help.c:332 +#: sql_help.c:341 sql_help.c:1044 sql_help.c:1451 sql_help.c:1884 +#: sql_help.c:2249 sql_help.c:2395 sql_help.c:2913 sql_help.c:3135 +#: sql_help.c:3467 +msgid "type_name" +msgstr "åž‹å" + +#: sql_help.c:342 sql_help.c:1452 sql_help.c:1883 sql_help.c:2396 +#: sql_help.c:2620 sql_help.c:2914 sql_help.c:3127 sql_help.c:3459 +msgid "lang_name" +msgstr "言語" + +#: sql_help.c:345 msgid "and aggregate_signature is:" msgstr "集約関数ã®å‘¼å‡ºã—情報ã¯ä»¥ä¸‹ã®é€šã‚Š" -#: sql_help.c:355 sql_help.c:1638 +#: sql_help.c:368 sql_help.c:1546 sql_help.c:1801 msgid "handler_function" msgstr "ãƒãƒ³ãƒ‰ãƒ©é–¢æ•°" -#: sql_help.c:356 sql_help.c:1639 +#: sql_help.c:369 sql_help.c:1802 msgid "validator_function" msgstr "ãƒãƒªãƒ‡ãƒ¼ã‚¿é–¢æ•°" -#: sql_help.c:397 sql_help.c:464 sql_help.c:578 sql_help.c:879 sql_help.c:1074 -#: sql_help.c:2061 sql_help.c:2062 sql_help.c:2078 sql_help.c:2079 +#: sql_help.c:418 sql_help.c:495 sql_help.c:626 sql_help.c:988 sql_help.c:1187 +#: sql_help.c:2264 sql_help.c:2265 sql_help.c:2281 sql_help.c:2282 msgid "action" msgstr "アクション" -#: sql_help.c:399 sql_help.c:406 sql_help.c:410 sql_help.c:411 sql_help.c:413 -#: sql_help.c:415 sql_help.c:416 sql_help.c:417 sql_help.c:419 sql_help.c:422 -#: sql_help.c:424 sql_help.c:580 sql_help.c:590 sql_help.c:592 sql_help.c:595 -#: sql_help.c:597 sql_help.c:776 sql_help.c:881 sql_help.c:894 sql_help.c:898 -#: sql_help.c:899 sql_help.c:903 sql_help.c:905 sql_help.c:906 sql_help.c:907 -#: sql_help.c:909 sql_help.c:912 sql_help.c:914 sql_help.c:1165 -#: sql_help.c:1168 sql_help.c:1188 sql_help.c:1284 sql_help.c:1380 -#: sql_help.c:1385 sql_help.c:1399 sql_help.c:1400 sql_help.c:1401 -#: sql_help.c:1662 sql_help.c:1702 sql_help.c:1763 sql_help.c:1798 -#: sql_help.c:1954 sql_help.c:2034 sql_help.c:2047 sql_help.c:2066 -#: sql_help.c:2068 sql_help.c:2075 sql_help.c:2086 sql_help.c:2103 -#: sql_help.c:2210 sql_help.c:2346 sql_help.c:2854 sql_help.c:2855 -#: sql_help.c:2899 sql_help.c:3133 sql_help.c:3134 sql_help.c:3232 -#: sql_help.c:3352 sql_help.c:3570 sql_help.c:3610 sql_help.c:3612 -#: sql_help.c:3629 sql_help.c:3632 sql_help.c:3739 +#: sql_help.c:420 sql_help.c:427 sql_help.c:431 sql_help.c:432 sql_help.c:435 +#: sql_help.c:437 sql_help.c:438 sql_help.c:439 sql_help.c:441 sql_help.c:444 +#: sql_help.c:446 sql_help.c:447 sql_help.c:630 sql_help.c:640 sql_help.c:642 +#: sql_help.c:645 sql_help.c:647 sql_help.c:880 sql_help.c:990 sql_help.c:1003 +#: sql_help.c:1007 sql_help.c:1008 sql_help.c:1012 sql_help.c:1014 +#: sql_help.c:1015 sql_help.c:1016 sql_help.c:1018 sql_help.c:1021 +#: sql_help.c:1023 sql_help.c:1286 sql_help.c:1289 sql_help.c:1309 +#: sql_help.c:1410 sql_help.c:1512 sql_help.c:1517 sql_help.c:1531 +#: sql_help.c:1532 sql_help.c:1533 sql_help.c:1833 sql_help.c:1881 +#: sql_help.c:1942 sql_help.c:1977 sql_help.c:2157 sql_help.c:2237 +#: sql_help.c:2250 sql_help.c:2269 sql_help.c:2271 sql_help.c:2278 +#: sql_help.c:2289 sql_help.c:2306 sql_help.c:2429 sql_help.c:2565 +#: sql_help.c:3106 sql_help.c:3107 sql_help.c:3186 sql_help.c:3201 +#: sql_help.c:3203 sql_help.c:3205 sql_help.c:3438 sql_help.c:3439 +#: sql_help.c:3537 sql_help.c:3678 sql_help.c:3917 sql_help.c:3959 +#: sql_help.c:3961 sql_help.c:3963 sql_help.c:3980 sql_help.c:3983 +#: sql_help.c:4111 msgid "column_name" msgstr "列å" -#: sql_help.c:400 sql_help.c:581 sql_help.c:882 +#: sql_help.c:421 sql_help.c:631 sql_help.c:991 msgid "new_column_name" msgstr "æ–°ã—ã„列å" -#: sql_help.c:405 sql_help.c:480 sql_help.c:589 sql_help.c:893 sql_help.c:1087 +#: sql_help.c:426 sql_help.c:516 sql_help.c:639 sql_help.c:1002 +#: sql_help.c:1200 msgid "where action is one of:" msgstr "アクションã¯ä»¥ä¸‹ã®ã„ãšã‚Œã‹ï¼š" -#: sql_help.c:407 sql_help.c:412 sql_help.c:895 sql_help.c:900 sql_help.c:1089 -#: sql_help.c:1093 sql_help.c:1592 sql_help.c:1663 sql_help.c:1837 -#: sql_help.c:2035 sql_help.c:2255 sql_help.c:2984 +#: sql_help.c:428 sql_help.c:433 sql_help.c:1004 sql_help.c:1009 +#: sql_help.c:1202 sql_help.c:1206 sql_help.c:1754 sql_help.c:1834 +#: sql_help.c:2016 sql_help.c:2238 sql_help.c:2474 sql_help.c:3288 msgid "data_type" msgstr "データ型" -#: sql_help.c:408 sql_help.c:896 sql_help.c:901 sql_help.c:1090 -#: sql_help.c:1094 sql_help.c:1593 sql_help.c:1666 sql_help.c:1765 -#: sql_help.c:2036 sql_help.c:2256 sql_help.c:2262 +#: sql_help.c:429 sql_help.c:434 sql_help.c:1005 sql_help.c:1010 +#: sql_help.c:1203 sql_help.c:1207 sql_help.c:1755 sql_help.c:1837 +#: sql_help.c:1944 sql_help.c:2239 sql_help.c:2475 sql_help.c:2481 +#: sql_help.c:3196 msgid "collation" msgstr "ç…§åˆé †åº" -#: sql_help.c:409 sql_help.c:897 sql_help.c:1667 sql_help.c:2037 -#: sql_help.c:2048 +#: sql_help.c:430 sql_help.c:1006 sql_help.c:1838 sql_help.c:2240 +#: sql_help.c:2251 msgid "column_constraint" msgstr "列制約" -#: sql_help.c:418 sql_help.c:591 sql_help.c:908 +#: sql_help.c:440 sql_help.c:641 sql_help.c:1017 msgid "integer" msgstr "æ•´æ•°" -#: sql_help.c:420 sql_help.c:423 sql_help.c:593 sql_help.c:596 sql_help.c:910 -#: sql_help.c:913 +#: sql_help.c:442 sql_help.c:445 sql_help.c:643 sql_help.c:646 sql_help.c:1019 +#: sql_help.c:1022 msgid "attribute_option" msgstr "属性オプション" -#: sql_help.c:427 sql_help.c:428 sql_help.c:429 sql_help.c:430 sql_help.c:920 -#: sql_help.c:921 sql_help.c:922 sql_help.c:923 sql_help.c:1321 +#: sql_help.c:450 sql_help.c:1024 sql_help.c:1839 sql_help.c:2241 +#: sql_help.c:2252 +msgid "table_constraint" +msgstr "テーブル制約" + +#: sql_help.c:453 sql_help.c:454 sql_help.c:455 sql_help.c:456 sql_help.c:1029 +#: sql_help.c:1030 sql_help.c:1031 sql_help.c:1032 sql_help.c:1453 msgid "trigger_name" msgstr "トリガーå" -#: sql_help.c:481 sql_help.c:1705 +#: sql_help.c:457 sql_help.c:458 sql_help.c:1042 sql_help.c:1043 +#: sql_help.c:1840 sql_help.c:2244 +msgid "parent_table" +msgstr "親テーブル" + +#: sql_help.c:515 sql_help.c:565 sql_help.c:628 sql_help.c:1167 +#: sql_help.c:1786 +msgid "extension_name" +msgstr "æ‹¡å¼µå" + +#: sql_help.c:517 sql_help.c:1885 msgid "execution_cost" msgstr "実行コスト" -#: sql_help.c:482 sql_help.c:1706 +#: sql_help.c:518 sql_help.c:1886 msgid "result_rows" msgstr "çµæžœã®è¡Œæ•°" -#: sql_help.c:497 sql_help.c:499 sql_help.c:501 -msgid "group_name" -msgstr "グループå" - -#: sql_help.c:498 sql_help.c:500 sql_help.c:1147 sql_help.c:1569 -#: sql_help.c:1930 sql_help.c:1932 sql_help.c:1935 sql_help.c:1936 -#: sql_help.c:2119 sql_help.c:2331 sql_help.c:2702 sql_help.c:3437 +#: sql_help.c:539 sql_help.c:541 sql_help.c:813 sql_help.c:821 sql_help.c:825 +#: sql_help.c:828 sql_help.c:831 sql_help.c:1241 sql_help.c:1249 +#: sql_help.c:1252 sql_help.c:1254 sql_help.c:1256 sql_help.c:2131 +#: sql_help.c:2133 sql_help.c:2136 sql_help.c:2137 sql_help.c:3105 +#: sql_help.c:3109 sql_help.c:3112 sql_help.c:3114 sql_help.c:3116 +#: sql_help.c:3118 sql_help.c:3120 sql_help.c:3126 sql_help.c:3128 +#: sql_help.c:3130 sql_help.c:3132 sql_help.c:3134 sql_help.c:3136 +#| msgid "Replication" +msgid "role_specification" +msgstr "ãƒ­ãƒ¼ãƒ«ã®æŒ‡å®š" + +#: sql_help.c:540 sql_help.c:542 sql_help.c:1268 sql_help.c:1729 +#: sql_help.c:2139 sql_help.c:2550 sql_help.c:2947 sql_help.c:3763 msgid "user_name" msgstr "ユーザå" -#: sql_help.c:518 sql_help.c:1574 sql_help.c:1769 sql_help.c:1801 -#: sql_help.c:2044 sql_help.c:2052 sql_help.c:2084 sql_help.c:2106 -#: sql_help.c:2118 sql_help.c:2881 sql_help.c:3160 +#: sql_help.c:543 sql_help.c:833 sql_help.c:1257 sql_help.c:2138 +#: sql_help.c:3137 +#| msgid "where option can be:" +msgid "where role_specification can be:" +msgstr "ãƒ­ãƒ¼ãƒ«ã®æŒ‡å®šã¯ä»¥ä¸‹ã®é€šã‚Š:" + +#: sql_help.c:545 +msgid "group_name" +msgstr "グループå" + +#: sql_help.c:563 sql_help.c:1734 sql_help.c:1948 sql_help.c:1980 +#: sql_help.c:2247 sql_help.c:2255 sql_help.c:2287 sql_help.c:2309 +#: sql_help.c:2321 sql_help.c:3133 sql_help.c:3465 msgid "tablespace_name" msgstr "テーブルスペースå" -#: sql_help.c:520 sql_help.c:523 sql_help.c:599 sql_help.c:601 sql_help.c:929 -#: sql_help.c:931 sql_help.c:1767 sql_help.c:1799 sql_help.c:2042 -#: sql_help.c:2050 sql_help.c:2082 sql_help.c:2104 +#: sql_help.c:567 sql_help.c:570 sql_help.c:649 sql_help.c:651 sql_help.c:1039 +#: sql_help.c:1041 sql_help.c:1946 sql_help.c:1978 sql_help.c:2245 +#: sql_help.c:2253 sql_help.c:2285 sql_help.c:2307 msgid "storage_parameter" msgstr "ストレージパラメーター" -#: sql_help.c:546 sql_help.c:1299 sql_help.c:3243 +#: sql_help.c:593 sql_help.c:1427 sql_help.c:3548 msgid "large_object_oid" msgstr "ラージオブジェクトã®oid" -#: sql_help.c:598 sql_help.c:928 sql_help.c:937 sql_help.c:940 sql_help.c:1228 +#: sql_help.c:648 sql_help.c:1037 sql_help.c:1046 sql_help.c:1049 +#: sql_help.c:1349 msgid "index_name" msgstr "インデックスå" -#: sql_help.c:657 sql_help.c:669 sql_help.c:1840 +#: sql_help.c:680 sql_help.c:2001 +msgid "res_proc" +msgstr "制約手続ã" + +#: sql_help.c:681 sql_help.c:2002 +msgid "join_proc" +msgstr "JOIN手続ã" + +#: sql_help.c:733 sql_help.c:745 sql_help.c:2019 msgid "strategy_number" msgstr "ストラテジー番å·" -#: sql_help.c:659 sql_help.c:660 sql_help.c:663 sql_help.c:664 sql_help.c:670 -#: sql_help.c:671 sql_help.c:673 sql_help.c:674 sql_help.c:1842 -#: sql_help.c:1843 sql_help.c:1846 sql_help.c:1847 +#: sql_help.c:735 sql_help.c:736 sql_help.c:739 sql_help.c:740 sql_help.c:746 +#: sql_help.c:747 sql_help.c:749 sql_help.c:750 sql_help.c:2021 +#: sql_help.c:2022 sql_help.c:2025 sql_help.c:2026 msgid "op_type" msgstr "演算å­ã®åž‹" -#: sql_help.c:661 sql_help.c:1844 +#: sql_help.c:737 sql_help.c:2023 msgid "sort_family_name" msgstr "ソートファミリーå" -#: sql_help.c:662 sql_help.c:672 sql_help.c:1845 +#: sql_help.c:738 sql_help.c:748 sql_help.c:2024 msgid "support_number" msgstr "サãƒãƒ¼ãƒˆç•ªå·" -#: sql_help.c:666 sql_help.c:1519 sql_help.c:1849 +#: sql_help.c:742 sql_help.c:1677 sql_help.c:2028 sql_help.c:2398 +#: sql_help.c:2400 msgid "argument_type" msgstr "引数ã®åž‹" -#: sql_help.c:715 sql_help.c:1126 sql_help.c:1741 sql_help.c:1890 -#: sql_help.c:2314 +#: sql_help.c:773 sql_help.c:776 sql_help.c:843 sql_help.c:879 sql_help.c:1163 +#: sql_help.c:1166 sql_help.c:1308 sql_help.c:1348 sql_help.c:1412 +#: sql_help.c:1437 sql_help.c:1441 sql_help.c:1454 sql_help.c:1511 +#: sql_help.c:1516 sql_help.c:1832 sql_help.c:1940 sql_help.c:1976 +#: sql_help.c:2051 sql_help.c:2108 sql_help.c:2156 sql_help.c:2236 +#: sql_help.c:2248 sql_help.c:2305 sql_help.c:2423 sql_help.c:2599 +#: sql_help.c:2816 sql_help.c:2833 sql_help.c:2923 sql_help.c:3103 +#: sql_help.c:3108 sql_help.c:3153 sql_help.c:3184 sql_help.c:3435 +#: sql_help.c:3440 sql_help.c:3536 sql_help.c:3633 sql_help.c:3635 +#: sql_help.c:3684 sql_help.c:3723 sql_help.c:3872 sql_help.c:3874 +#: sql_help.c:3923 sql_help.c:3957 sql_help.c:3979 sql_help.c:3981 +#: sql_help.c:3982 sql_help.c:4066 sql_help.c:4068 sql_help.c:4117 +msgid "table_name" +msgstr "テーブルå" + +#: sql_help.c:778 sql_help.c:2053 +#| msgid "missing expression" +msgid "using_expression" +msgstr "USING評価å¼" + +#: sql_help.c:779 sql_help.c:2054 +#| msgid "expression" +msgid "check_expression" +msgstr "CHECK評価å¼" + +#: sql_help.c:817 sql_help.c:1245 sql_help.c:1920 sql_help.c:2085 +#: sql_help.c:2533 msgid "password" msgstr "パスワード" -#: sql_help.c:716 sql_help.c:1127 sql_help.c:1742 sql_help.c:1891 -#: sql_help.c:2315 +#: sql_help.c:818 sql_help.c:1246 sql_help.c:1921 sql_help.c:2086 +#: sql_help.c:2534 msgid "timestamp" msgstr "タイムスタンプ" -#: sql_help.c:720 sql_help.c:724 sql_help.c:727 sql_help.c:730 sql_help.c:2861 -#: sql_help.c:3140 +#: sql_help.c:822 sql_help.c:826 sql_help.c:829 sql_help.c:832 sql_help.c:3113 +#: sql_help.c:3445 msgid "database_name" msgstr "データベースå" -#: sql_help.c:739 sql_help.c:775 sql_help.c:1053 sql_help.c:1187 -#: sql_help.c:1227 sql_help.c:1286 sql_help.c:1311 sql_help.c:1322 -#: sql_help.c:1379 sql_help.c:1384 sql_help.c:1661 sql_help.c:1761 -#: sql_help.c:1797 sql_help.c:1913 sql_help.c:1953 sql_help.c:2033 -#: sql_help.c:2045 sql_help.c:2102 sql_help.c:2204 sql_help.c:2380 -#: sql_help.c:2597 sql_help.c:2678 sql_help.c:2851 sql_help.c:2856 -#: sql_help.c:2898 sql_help.c:3130 sql_help.c:3135 sql_help.c:3231 -#: sql_help.c:3318 sql_help.c:3320 sql_help.c:3358 sql_help.c:3397 -#: sql_help.c:3536 sql_help.c:3538 sql_help.c:3576 sql_help.c:3608 -#: sql_help.c:3628 sql_help.c:3630 sql_help.c:3631 sql_help.c:3705 -#: sql_help.c:3707 sql_help.c:3745 -msgid "table_name" -msgstr "テーブルå" - -#: sql_help.c:769 sql_help.c:1948 +#: sql_help.c:873 sql_help.c:2151 msgid "increment" msgstr "増分" -#: sql_help.c:770 sql_help.c:1949 +#: sql_help.c:874 sql_help.c:2152 msgid "minvalue" msgstr "最å°å€¤" -#: sql_help.c:771 sql_help.c:1950 +#: sql_help.c:875 sql_help.c:2153 msgid "maxvalue" msgstr "最大値" -#: sql_help.c:772 sql_help.c:1951 sql_help.c:3316 sql_help.c:3395 -#: sql_help.c:3534 sql_help.c:3648 sql_help.c:3703 +#: sql_help.c:876 sql_help.c:2154 sql_help.c:3631 sql_help.c:3721 +#: sql_help.c:3870 sql_help.c:3999 sql_help.c:4064 msgid "start" msgstr "開始値" -#: sql_help.c:773 +#: sql_help.c:877 msgid "restart" msgstr "å†é–‹å§‹å€¤" -#: sql_help.c:774 sql_help.c:1952 +#: sql_help.c:878 sql_help.c:2155 msgid "cache" msgstr "キャッシュ" -#: sql_help.c:915 sql_help.c:2038 sql_help.c:2049 -msgid "table_constraint" -msgstr "テーブル制約" - -#: sql_help.c:916 +#: sql_help.c:1025 msgid "table_constraint_using_index" msgstr "インデックスを使用ã™ã‚‹ãƒ†ãƒ¼ãƒ–ル制約" -#: sql_help.c:924 sql_help.c:925 sql_help.c:926 sql_help.c:927 +#: sql_help.c:1033 sql_help.c:1034 sql_help.c:1035 sql_help.c:1036 msgid "rewrite_rule_name" msgstr "æ›¸ãæ›ãˆãƒ«ãƒ¼ãƒ«å" -#: sql_help.c:932 sql_help.c:933 sql_help.c:2041 -msgid "parent_table" -msgstr "親テーブル" - -#: sql_help.c:934 sql_help.c:2046 sql_help.c:2883 sql_help.c:3162 -msgid "type_name" -msgstr "åž‹å" - -#: sql_help.c:938 +#: sql_help.c:1047 msgid "and table_constraint_using_index is:" msgstr "ã¾ãŸã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’使用ã™ã‚‹ãƒ†ãƒ¼ãƒ–ルã®åˆ¶ç´„æ¡ä»¶ã¯ä»¥ä¸‹ã®é€šã‚Š:" -#: sql_help.c:956 sql_help.c:959 sql_help.c:2121 +#: sql_help.c:1065 sql_help.c:1068 sql_help.c:2324 msgid "tablespace_option" msgstr "テーブルスペース・オプション" -#: sql_help.c:980 sql_help.c:983 sql_help.c:989 sql_help.c:993 +#: sql_help.c:1089 sql_help.c:1092 sql_help.c:1098 sql_help.c:1102 msgid "token_type" msgstr "トークンã®åž‹" -#: sql_help.c:981 sql_help.c:984 +#: sql_help.c:1090 sql_help.c:1093 msgid "dictionary_name" msgstr "辞書å" -#: sql_help.c:986 sql_help.c:990 +#: sql_help.c:1095 sql_help.c:1099 msgid "old_dictionary" msgstr "å…ƒã®è¾žæ›¸" -#: sql_help.c:987 sql_help.c:991 +#: sql_help.c:1096 sql_help.c:1100 msgid "new_dictionary" msgstr "æ–°ã—ã„辞書" -#: sql_help.c:1078 sql_help.c:1088 sql_help.c:1091 sql_help.c:1092 -#: sql_help.c:2254 +#: sql_help.c:1191 sql_help.c:1201 sql_help.c:1204 sql_help.c:1205 +#: sql_help.c:2473 msgid "attribute_name" msgstr "属性å" -#: sql_help.c:1079 +#: sql_help.c:1192 msgid "new_attribute_name" msgstr "æ–°ã—ã„属性å" -#: sql_help.c:1085 +#: sql_help.c:1198 msgid "new_enum_value" msgstr "æ–°ã—ã„列挙値" -#: sql_help.c:1086 +#: sql_help.c:1199 msgid "existing_enum_value" msgstr "既存ã®åˆ—挙値" -#: sql_help.c:1148 sql_help.c:1668 sql_help.c:1964 sql_help.c:2332 -#: sql_help.c:2703 sql_help.c:2867 sql_help.c:3146 +#: sql_help.c:1269 sql_help.c:1841 sql_help.c:2167 sql_help.c:2551 +#: sql_help.c:2948 sql_help.c:3119 sql_help.c:3154 sql_help.c:3451 msgid "server_name" msgstr "サーãƒãƒ¼å" -#: sql_help.c:1176 sql_help.c:1179 sql_help.c:2347 +#: sql_help.c:1297 sql_help.c:1300 sql_help.c:2566 msgid "view_option_name" msgstr "ビューã®ã‚ªãƒ—ションå" -#: sql_help.c:1177 sql_help.c:2348 +#: sql_help.c:1298 sql_help.c:2567 msgid "view_option_value" msgstr "ビューã®ã‚ªãƒ—ション値" -#: sql_help.c:1202 sql_help.c:3453 sql_help.c:3455 sql_help.c:3479 +#: sql_help.c:1323 sql_help.c:3779 sql_help.c:3781 sql_help.c:3805 msgid "transaction_mode" msgstr "トランザクションã®ãƒ¢ãƒ¼ãƒ‰" -#: sql_help.c:1203 sql_help.c:3456 sql_help.c:3480 +#: sql_help.c:1324 sql_help.c:3782 sql_help.c:3806 msgid "where transaction_mode is one of:" msgstr "トランザクションã®ãƒ¢ãƒ¼ãƒ‰ã¯ä»¥ä¸‹ã®ã„ãšã‚Œã‹ï¼š" -#: sql_help.c:1283 +#: sql_help.c:1409 msgid "relation_name" msgstr "æ‹¡å¼µå" -#: sql_help.c:1310 +#: sql_help.c:1414 sql_help.c:3115 sql_help.c:3447 +msgid "domain_name" +msgstr "ドメインå" + +#: sql_help.c:1436 +#| msgid "role_name" +msgid "policy_name" +msgstr "ãƒãƒªã‚·ãƒ¼å" + +#: sql_help.c:1440 msgid "rule_name" msgstr "ロールå" -#: sql_help.c:1325 +#: sql_help.c:1457 msgid "text" msgstr "テキスト" -#: sql_help.c:1350 sql_help.c:2993 sql_help.c:3180 +#: sql_help.c:1482 sql_help.c:3297 sql_help.c:3485 msgid "transaction_id" msgstr "トランザクション ID" -#: sql_help.c:1381 sql_help.c:1387 sql_help.c:2919 +#: sql_help.c:1513 sql_help.c:1519 sql_help.c:3223 msgid "filename" msgstr "ファイルå" -#: sql_help.c:1382 sql_help.c:1388 sql_help.c:1915 sql_help.c:1916 -#: sql_help.c:1917 +#: sql_help.c:1514 sql_help.c:1520 sql_help.c:2110 sql_help.c:2111 +#: sql_help.c:2112 msgid "command" msgstr "コマンド" -#: sql_help.c:1386 sql_help.c:1802 sql_help.c:2107 sql_help.c:2349 -#: sql_help.c:2367 sql_help.c:2901 +#: sql_help.c:1518 sql_help.c:1981 sql_help.c:2310 sql_help.c:2568 +#: sql_help.c:2586 sql_help.c:3188 msgid "query" msgstr "å•ã„åˆã‚ã›" -#: sql_help.c:1390 sql_help.c:2748 +#: sql_help.c:1522 sql_help.c:2993 msgid "where option can be one of:" msgstr "オプションã¯ä»¥ä¸‹ã®ã„ãšã‚Œã‹ï¼š" -#: sql_help.c:1391 +#: sql_help.c:1523 msgid "format_name" msgstr "フォーマットå" -#: sql_help.c:1392 sql_help.c:1393 sql_help.c:1396 sql_help.c:2749 -#: sql_help.c:2750 sql_help.c:2751 sql_help.c:2752 sql_help.c:2753 +#: sql_help.c:1524 sql_help.c:1525 sql_help.c:1528 sql_help.c:2994 +#: sql_help.c:2995 sql_help.c:2996 sql_help.c:2997 sql_help.c:2998 msgid "boolean" msgstr "ブール値" -#: sql_help.c:1394 +#: sql_help.c:1526 msgid "delimiter_character" msgstr "区切り文字" -#: sql_help.c:1395 +#: sql_help.c:1527 msgid "null_string" msgstr "null文字列" -#: sql_help.c:1397 +#: sql_help.c:1529 msgid "quote_character" msgstr "引用符文字" -#: sql_help.c:1398 +#: sql_help.c:1530 msgid "escape_character" msgstr "エスケープ文字" -#: sql_help.c:1402 +#: sql_help.c:1534 msgid "encoding_name" msgstr "エンコーディングå" -#: sql_help.c:1459 sql_help.c:1475 sql_help.c:1478 +#: sql_help.c:1545 +msgid "access_method_type" +msgstr "アクセスメソッド型" + +#: sql_help.c:1611 sql_help.c:1630 sql_help.c:1633 msgid "arg_data_type" msgstr "入力データ型" -#: sql_help.c:1460 sql_help.c:1479 sql_help.c:1487 +#: sql_help.c:1612 sql_help.c:1634 sql_help.c:1642 msgid "sfunc" msgstr "状態é·ç§»é–¢æ•°" -#: sql_help.c:1461 sql_help.c:1480 sql_help.c:1488 +#: sql_help.c:1613 sql_help.c:1635 sql_help.c:1643 msgid "state_data_type" msgstr "状態データã®åž‹" -#: sql_help.c:1462 sql_help.c:1481 sql_help.c:1489 +#: sql_help.c:1614 sql_help.c:1636 sql_help.c:1644 msgid "state_data_size" msgstr "状態データã®å¤§ãã•" -#: sql_help.c:1463 sql_help.c:1482 sql_help.c:1490 +#: sql_help.c:1615 sql_help.c:1637 sql_help.c:1645 msgid "ffunc" msgstr "終了関数" -#: sql_help.c:1464 sql_help.c:1483 sql_help.c:1491 +#: sql_help.c:1616 sql_help.c:1646 +#| msgid "minvfunc" +msgid "combinefunc" +msgstr "çµåˆé–¢æ•°" + +#: sql_help.c:1617 sql_help.c:1647 +#| msgid "sfunc" +msgid "serialfunc" +msgstr "シリアライズ関数" + +#: sql_help.c:1618 sql_help.c:1648 +msgid "deserialfunc" +msgstr "デシリアライズ関数" + +#: sql_help.c:1619 sql_help.c:1638 sql_help.c:1649 msgid "initial_condition" msgstr "åˆæœŸæ¡ä»¶" -#: sql_help.c:1465 sql_help.c:1492 +#: sql_help.c:1620 sql_help.c:1650 msgid "msfunc" msgstr "剿–¹çŠ¶æ…‹é·ç§»é–¢æ•°" -#: sql_help.c:1466 sql_help.c:1493 +#: sql_help.c:1621 sql_help.c:1651 msgid "minvfunc" msgstr "逆状態é·ç§»é–¢æ•°" -#: sql_help.c:1467 sql_help.c:1494 +#: sql_help.c:1622 sql_help.c:1652 msgid "mstate_data_type" msgstr "移動集約モードã§ã®çŠ¶æ…‹ãƒ‡ãƒ¼ã‚¿ã®åž‹" -#: sql_help.c:1468 sql_help.c:1495 +#: sql_help.c:1623 sql_help.c:1653 msgid "mstate_data_size" msgstr "移動集約モードã§ã®çŠ¶æ…‹ãƒ‡ãƒ¼ã‚¿ã®å¤§ãã•" -#: sql_help.c:1469 sql_help.c:1496 +#: sql_help.c:1624 sql_help.c:1654 msgid "mffunc" msgstr "移動集約モードã§ã®çµ‚了関数" -#: sql_help.c:1470 sql_help.c:1497 +#: sql_help.c:1625 sql_help.c:1655 msgid "minitial_condition" msgstr "移動集約モードã§ã®åˆæœŸæ¡ä»¶" -#: sql_help.c:1471 sql_help.c:1498 +#: sql_help.c:1626 sql_help.c:1656 msgid "sort_operator" msgstr "ソート演算å­" -#: sql_help.c:1484 +#: sql_help.c:1639 msgid "or the old syntax" msgstr "ã¾ãŸã¯å¤ã„æ§‹æ–‡" -#: sql_help.c:1486 +#: sql_help.c:1641 msgid "base_type" msgstr "基本ã®åž‹" -#: sql_help.c:1537 +#: sql_help.c:1695 msgid "locale" msgstr "ロケール" -#: sql_help.c:1538 sql_help.c:1572 +#: sql_help.c:1696 sql_help.c:1732 msgid "lc_collate" msgstr "ç…§åˆé †åº" -#: sql_help.c:1539 sql_help.c:1573 +#: sql_help.c:1697 sql_help.c:1733 msgid "lc_ctype" msgstr "Ctype(å¤‰æ›æ¼”ç®—å­)" -#: sql_help.c:1541 +#: sql_help.c:1699 msgid "existing_collation" msgstr "既存ã®ç…§åˆé †åº" -#: sql_help.c:1551 +#: sql_help.c:1709 msgid "source_encoding" msgstr "変æ›å…ƒã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°" -#: sql_help.c:1552 +#: sql_help.c:1710 msgid "dest_encoding" msgstr "変æ›å…ˆã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°" -#: sql_help.c:1570 sql_help.c:2147 +#: sql_help.c:1730 sql_help.c:2350 msgid "template" msgstr "テンプレート" -#: sql_help.c:1571 +#: sql_help.c:1731 msgid "encoding" msgstr "エンコーディング" -#: sql_help.c:1596 +#: sql_help.c:1757 +msgid "constraint" +msgstr "制約" + +#: sql_help.c:1758 msgid "where constraint is:" msgstr "制約æ¡ä»¶ï¼š" -#: sql_help.c:1610 sql_help.c:1912 sql_help.c:2203 +#: sql_help.c:1772 sql_help.c:2107 sql_help.c:2422 msgid "event" msgstr "イベント" -#: sql_help.c:1611 +#: sql_help.c:1773 msgid "filter_variable" msgstr "フィルタ変数" -#: sql_help.c:1623 -msgid "extension_name" -msgstr "æ‹¡å¼µå" - -#: sql_help.c:1625 +#: sql_help.c:1788 msgid "version" msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³" -#: sql_help.c:1626 +#: sql_help.c:1789 msgid "old_version" msgstr "å¤ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³" -#: sql_help.c:1671 sql_help.c:2053 +#: sql_help.c:1844 sql_help.c:2256 msgid "where column_constraint is:" msgstr "列制約:" -#: sql_help.c:1673 sql_help.c:1700 sql_help.c:2056 +#: sql_help.c:1847 sql_help.c:1879 sql_help.c:2259 msgid "default_expr" msgstr "デフォルトã®è©•価å¼" -#: sql_help.c:1701 +#: sql_help.c:1848 sql_help.c:2266 +msgid "and table_constraint is:" +msgstr "テーブル制約:" + +#: sql_help.c:1880 msgid "rettype" msgstr "戻り値ã®åž‹" -#: sql_help.c:1703 +#: sql_help.c:1882 msgid "column_type" msgstr "列ã®åž‹" -#: sql_help.c:1704 sql_help.c:2401 sql_help.c:2875 sql_help.c:3154 -msgid "lang_name" -msgstr "言語" - -#: sql_help.c:1710 +#: sql_help.c:1890 msgid "definition" msgstr "定義" -#: sql_help.c:1711 +#: sql_help.c:1891 msgid "obj_file" msgstr "オブジェクトファイルå" -#: sql_help.c:1712 +#: sql_help.c:1892 msgid "link_symbol" msgstr "リンクシンボル" -#: sql_help.c:1713 +#: sql_help.c:1893 msgid "attribute" msgstr "属性" -#: sql_help.c:1748 sql_help.c:1897 sql_help.c:2321 +#: sql_help.c:1927 sql_help.c:2092 sql_help.c:2540 msgid "uid" msgstr "ユーザーID" -#: sql_help.c:1762 +#: sql_help.c:1941 msgid "method" msgstr "メソッド" -#: sql_help.c:1766 sql_help.c:2088 +#: sql_help.c:1945 sql_help.c:2291 sql_help.c:3197 msgid "opclass" msgstr "演算å­ã‚¯ãƒ©ã‚¹" -#: sql_help.c:1770 sql_help.c:2074 +#: sql_help.c:1949 sql_help.c:2277 msgid "predicate" msgstr "述語" -#: sql_help.c:1782 +#: sql_help.c:1961 msgid "call_handler" msgstr "呼ã³å‡ºã—ãƒãƒ³ãƒ‰ãƒ©ãƒ¼" -#: sql_help.c:1783 +#: sql_help.c:1962 msgid "inline_handler" msgstr "インラインãƒãƒ³ãƒ‰ãƒ©ãƒ¼" -#: sql_help.c:1784 +#: sql_help.c:1963 msgid "valfunction" msgstr "ãƒãƒªãƒ‡ãƒ¼ã‚¿é–¢æ•°" -#: sql_help.c:1820 +#: sql_help.c:1999 msgid "com_op" msgstr "交æ›ç”¨æ¼”ç®—å­" -#: sql_help.c:1821 +#: sql_help.c:2000 msgid "neg_op" msgstr "å¦å®šç”¨æ¼”ç®—å­" -#: sql_help.c:1822 -msgid "res_proc" -msgstr "制約手続ã" - -#: sql_help.c:1823 -msgid "join_proc" -msgstr "JOIN手続ã" - -#: sql_help.c:1839 +#: sql_help.c:2018 msgid "family_name" msgstr "ファミリーå" -#: sql_help.c:1850 +#: sql_help.c:2029 msgid "storage_type" msgstr "ストレージã®åž‹" -#: sql_help.c:1914 sql_help.c:2206 sql_help.c:2383 sql_help.c:3307 -#: sql_help.c:3309 sql_help.c:3386 sql_help.c:3388 sql_help.c:3525 -#: sql_help.c:3527 sql_help.c:3615 sql_help.c:3694 sql_help.c:3696 +#: sql_help.c:2109 sql_help.c:2425 sql_help.c:2602 sql_help.c:3207 +#: sql_help.c:3622 sql_help.c:3624 sql_help.c:3712 sql_help.c:3714 +#: sql_help.c:3861 sql_help.c:3863 sql_help.c:3966 sql_help.c:4055 +#: sql_help.c:4057 msgid "condition" msgstr "æ¡ä»¶" -#: sql_help.c:1918 sql_help.c:2209 +#: sql_help.c:2113 sql_help.c:2428 msgid "where event can be one of:" msgstr "イベントã¯ä»¥ä¸‹ã®ã„ãšã‚Œã‹ï¼š" -#: sql_help.c:1931 sql_help.c:1933 +#: sql_help.c:2132 sql_help.c:2134 msgid "schema_element" msgstr "スキーマè¦ç´ " -#: sql_help.c:1965 +#: sql_help.c:2168 msgid "server_type" msgstr "サーãƒãƒ¼ã®ã‚¿ã‚¤ãƒ—" -#: sql_help.c:1966 +#: sql_help.c:2169 msgid "server_version" msgstr "サーãƒãƒ¼ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³" -#: sql_help.c:1967 sql_help.c:2865 sql_help.c:3144 +#: sql_help.c:2170 sql_help.c:3117 sql_help.c:3449 msgid "fdw_name" msgstr "外部データラッパー" -#: sql_help.c:2039 +#: sql_help.c:2242 msgid "source_table" msgstr "ソースã®ãƒ†ãƒ¼ãƒ–ル" -#: sql_help.c:2040 +#: sql_help.c:2243 msgid "like_option" msgstr "LIKE オプション:" -#: sql_help.c:2057 sql_help.c:2058 sql_help.c:2067 sql_help.c:2069 -#: sql_help.c:2073 +#: sql_help.c:2260 sql_help.c:2261 sql_help.c:2270 sql_help.c:2272 +#: sql_help.c:2276 msgid "index_parameters" msgstr "インデックスã®ãƒ‘ラメーター" -#: sql_help.c:2059 sql_help.c:2076 +#: sql_help.c:2262 sql_help.c:2279 msgid "reftable" msgstr "å‚照テーブル" -#: sql_help.c:2060 sql_help.c:2077 +#: sql_help.c:2263 sql_help.c:2280 msgid "refcolumn" msgstr "å‚照列" -#: sql_help.c:2063 -msgid "and table_constraint is:" -msgstr "テーブル制約:" - -#: sql_help.c:2071 +#: sql_help.c:2274 msgid "exclude_element" msgstr "排他è¦ç´ " -#: sql_help.c:2072 sql_help.c:3314 sql_help.c:3393 sql_help.c:3532 -#: sql_help.c:3646 sql_help.c:3701 +#: sql_help.c:2275 sql_help.c:3629 sql_help.c:3719 sql_help.c:3868 +#: sql_help.c:3997 sql_help.c:4062 msgid "operator" msgstr "演算å­" -#: sql_help.c:2080 +#: sql_help.c:2283 msgid "and like_option is:" msgstr "LIKE オプション:" -#: sql_help.c:2081 +#: sql_help.c:2284 msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" msgstr "UNIQUE, PRIMARY KEY, EXCLUDE ã«ãŠã‘るインデックスパラメーターã®åˆ¶ç´„æ¡ä»¶ï¼š" -#: sql_help.c:2085 +#: sql_help.c:2288 msgid "exclude_element in an EXCLUDE constraint is:" msgstr "EXCLUDE ã«ãŠã‘る排他è¦ç´ ã®åˆ¶ç´„æ¡ä»¶ï¼š" -#: sql_help.c:2120 +#: sql_help.c:2323 msgid "directory" msgstr "ディレクトリー" -#: sql_help.c:2134 +#: sql_help.c:2337 msgid "parser_name" msgstr "パーサーå" -#: sql_help.c:2135 +#: sql_help.c:2338 msgid "source_config" msgstr "ソース設定" -#: sql_help.c:2164 +#: sql_help.c:2367 msgid "start_function" msgstr "開始関数" -#: sql_help.c:2165 +#: sql_help.c:2368 msgid "gettoken_function" msgstr "トークンå–得用関数" -#: sql_help.c:2166 +#: sql_help.c:2369 msgid "end_function" msgstr "終了関数" -#: sql_help.c:2167 +#: sql_help.c:2370 msgid "lextypes_function" msgstr "LEX åž‹ã®é–¢æ•°" -#: sql_help.c:2168 +#: sql_help.c:2371 msgid "headline_function" msgstr "見出ã—関数" -#: sql_help.c:2180 +#: sql_help.c:2383 msgid "init_function" msgstr "åˆæœŸå‡¦ç†é–¢æ•°" -#: sql_help.c:2181 +#: sql_help.c:2384 msgid "lexize_function" msgstr "LEX 処ç†é–¢æ•°" -#: sql_help.c:2205 +#: sql_help.c:2397 +#| msgid "function_name" +msgid "from_sql_function_name" +msgstr "SQLã®åž‹ã‹ã‚‰å¤‰æ›ã™ã‚‹é–¢æ•°å" + +#: sql_help.c:2399 +#| msgid "function_name" +msgid "to_sql_function_name" +msgstr "SQLã®åž‹ã¸å¤‰æ›ã™ã‚‹é–¢æ•°å" + +#: sql_help.c:2424 msgid "referenced_table_name" msgstr "éžå‚照テーブルå" -#: sql_help.c:2208 +#: sql_help.c:2427 msgid "arguments" msgstr "引数" -#: sql_help.c:2258 sql_help.c:3252 +#: sql_help.c:2477 sql_help.c:3557 msgid "label" msgstr "ラベル" -#: sql_help.c:2260 +#: sql_help.c:2479 msgid "subtype" msgstr "派生元型" -#: sql_help.c:2261 +#: sql_help.c:2480 msgid "subtype_operator_class" msgstr "æ´¾ç”Ÿå…ƒåž‹ã®æ¼”ç®—å­ã‚¯ãƒ©ã‚¹" -#: sql_help.c:2263 +#: sql_help.c:2482 msgid "canonical_function" msgstr "æ­£è¦åŒ–関数" -#: sql_help.c:2264 +#: sql_help.c:2483 msgid "subtype_diff_function" msgstr "派生元型差異関数" -#: sql_help.c:2266 +#: sql_help.c:2485 msgid "input_function" msgstr "入力関数" -#: sql_help.c:2267 +#: sql_help.c:2486 msgid "output_function" msgstr "出力関数" -#: sql_help.c:2268 +#: sql_help.c:2487 msgid "receive_function" msgstr "å—信関数" -#: sql_help.c:2269 +#: sql_help.c:2488 msgid "send_function" msgstr "é€ä¿¡é–¢æ•°" -#: sql_help.c:2270 +#: sql_help.c:2489 msgid "type_modifier_input_function" msgstr "型修飾å­ã®å…¥åŠ›é–¢æ•°" -#: sql_help.c:2271 +#: sql_help.c:2490 msgid "type_modifier_output_function" msgstr "型修飾å­ã®å‡ºåŠ›é–¢æ•°" -#: sql_help.c:2272 +#: sql_help.c:2491 msgid "analyze_function" msgstr "分æžé–¢æ•°" -#: sql_help.c:2273 +#: sql_help.c:2492 msgid "internallength" msgstr "内部長" -#: sql_help.c:2274 +#: sql_help.c:2493 msgid "alignment" msgstr "アラインメント" -#: sql_help.c:2275 +#: sql_help.c:2494 msgid "storage" msgstr "ストレージ" -#: sql_help.c:2276 +#: sql_help.c:2495 msgid "like_type" msgstr "LIKEã®åž‹" -#: sql_help.c:2277 +#: sql_help.c:2496 msgid "category" msgstr "カテゴリー" -#: sql_help.c:2278 +#: sql_help.c:2497 msgid "preferred" msgstr "推奨" -#: sql_help.c:2279 +#: sql_help.c:2498 msgid "default" msgstr "デフォルト" -#: sql_help.c:2280 +#: sql_help.c:2499 msgid "element" msgstr "è¦ç´ " -#: sql_help.c:2281 +#: sql_help.c:2500 msgid "delimiter" msgstr "デリミタ" -#: sql_help.c:2282 +#: sql_help.c:2501 msgid "collatable" msgstr "ç…§åˆé †åº" -#: sql_help.c:2379 sql_help.c:2897 sql_help.c:3302 sql_help.c:3380 -#: sql_help.c:3520 sql_help.c:3607 sql_help.c:3689 +#: sql_help.c:2598 sql_help.c:3183 sql_help.c:3617 sql_help.c:3706 +#: sql_help.c:3856 sql_help.c:3956 sql_help.c:4050 msgid "with_query" msgstr "WITHå•ã„åˆã‚ã›" -#: sql_help.c:2381 sql_help.c:3321 sql_help.c:3324 sql_help.c:3327 -#: sql_help.c:3331 sql_help.c:3335 sql_help.c:3343 sql_help.c:3539 -#: sql_help.c:3542 sql_help.c:3545 sql_help.c:3549 sql_help.c:3553 -#: sql_help.c:3561 sql_help.c:3609 sql_help.c:3708 sql_help.c:3711 -#: sql_help.c:3714 sql_help.c:3718 sql_help.c:3722 sql_help.c:3730 +#: sql_help.c:2600 sql_help.c:3185 sql_help.c:3636 sql_help.c:3642 +#: sql_help.c:3645 sql_help.c:3649 sql_help.c:3653 sql_help.c:3661 +#: sql_help.c:3875 sql_help.c:3881 sql_help.c:3884 sql_help.c:3888 +#: sql_help.c:3892 sql_help.c:3900 sql_help.c:3958 sql_help.c:4069 +#: sql_help.c:4075 sql_help.c:4078 sql_help.c:4082 sql_help.c:4086 +#: sql_help.c:4094 msgid "alias" msgstr "別å" -#: sql_help.c:2382 +#: sql_help.c:2601 msgid "using_list" msgstr "USING リスト" -#: sql_help.c:2384 sql_help.c:2779 sql_help.c:2960 sql_help.c:3616 +#: sql_help.c:2603 sql_help.c:3024 sql_help.c:3264 sql_help.c:3967 msgid "cursor_name" msgstr "カーソルå" -#: sql_help.c:2385 sql_help.c:2902 sql_help.c:3617 +#: sql_help.c:2604 sql_help.c:3191 sql_help.c:3968 msgid "output_expression" msgstr "出力表ç¾" -#: sql_help.c:2386 sql_help.c:2903 sql_help.c:3305 sql_help.c:3383 -#: sql_help.c:3523 sql_help.c:3618 sql_help.c:3692 +#: sql_help.c:2605 sql_help.c:3192 sql_help.c:3620 sql_help.c:3709 +#: sql_help.c:3859 sql_help.c:3969 sql_help.c:4053 msgid "output_name" msgstr "出力å" -#: sql_help.c:2402 +#: sql_help.c:2621 msgid "code" msgstr "コード" -#: sql_help.c:2727 +#: sql_help.c:2972 msgid "parameter" msgstr "パラメータ" -#: sql_help.c:2746 sql_help.c:2747 sql_help.c:2985 +#: sql_help.c:2991 sql_help.c:2992 sql_help.c:3289 msgid "statement" msgstr "ステートメント" -#: sql_help.c:2778 sql_help.c:2959 +#: sql_help.c:3023 sql_help.c:3263 msgid "direction" msgstr "æ–¹å‘" -#: sql_help.c:2780 sql_help.c:2961 +#: sql_help.c:3025 sql_help.c:3265 msgid "where direction can be empty or one of:" msgstr "æ–¹å‘ã¯ç„¡æŒ‡å®šã‚‚ã—ãã¯ä»¥ä¸‹ã®ã„ãšã‚Œã‹ï¼š" -#: sql_help.c:2781 sql_help.c:2782 sql_help.c:2783 sql_help.c:2784 -#: sql_help.c:2785 sql_help.c:2962 sql_help.c:2963 sql_help.c:2964 -#: sql_help.c:2965 sql_help.c:2966 sql_help.c:3315 sql_help.c:3317 -#: sql_help.c:3394 sql_help.c:3396 sql_help.c:3533 sql_help.c:3535 -#: sql_help.c:3647 sql_help.c:3649 sql_help.c:3702 sql_help.c:3704 +#: sql_help.c:3026 sql_help.c:3027 sql_help.c:3028 sql_help.c:3029 +#: sql_help.c:3030 sql_help.c:3266 sql_help.c:3267 sql_help.c:3268 +#: sql_help.c:3269 sql_help.c:3270 sql_help.c:3630 sql_help.c:3632 +#: sql_help.c:3720 sql_help.c:3722 sql_help.c:3869 sql_help.c:3871 +#: sql_help.c:3998 sql_help.c:4000 sql_help.c:4063 sql_help.c:4065 msgid "count" msgstr "カウント" -#: sql_help.c:2858 sql_help.c:3137 +#: sql_help.c:3110 sql_help.c:3442 msgid "sequence_name" msgstr "シーケンスå" -#: sql_help.c:2863 sql_help.c:3142 -msgid "domain_name" -msgstr "ドメインå" - -#: sql_help.c:2871 sql_help.c:3150 +#: sql_help.c:3123 sql_help.c:3455 msgid "arg_name" msgstr "引数å" -#: sql_help.c:2872 sql_help.c:3151 +#: sql_help.c:3124 sql_help.c:3456 msgid "arg_type" msgstr "引数ã®åž‹" -#: sql_help.c:2877 sql_help.c:3156 +#: sql_help.c:3129 sql_help.c:3461 msgid "loid" msgstr "ラージオブジェクトid" -#: sql_help.c:2911 sql_help.c:2974 sql_help.c:3593 +#: sql_help.c:3152 +#| msgid "remove a schema" +msgid "remote_schema" +msgstr "リモートスキーマ" + +#: sql_help.c:3155 +#| msgid "local socket" +msgid "local_schema" +msgstr "ローカルスキーマ" + +#: sql_help.c:3189 +msgid "conflict_target" +msgstr "ç«¶åˆå¯¾è±¡" + +#: sql_help.c:3190 +#| msgid "canonical_function" +msgid "conflict_action" +msgstr "ç«¶åˆæ™‚ã®å‹•作" + +#: sql_help.c:3193 +#| msgid "where from_item can be one of:" +msgid "where conflict_target can be one of:" +msgstr "ç«¶åˆå¯¾è±¡ã¯ä»¥ä¸‹ã®ã„ãšã‚Œã‹:" + +#: sql_help.c:3194 +#| msgid "new_column_name" +msgid "index_column_name" +msgstr "インデックスã®åˆ—å" + +#: sql_help.c:3195 +#| msgid "expression" +msgid "index_expression" +msgstr "インデックスã®è©•価å¼" + +#: sql_help.c:3198 +#| msgid "predicate" +msgid "index_predicate" +msgstr "インデックスã®è¿°èªž" + +#: sql_help.c:3200 +#| msgid "where action is one of:" +msgid "and conflict_action is one of:" +msgstr "ç«¶åˆæ™‚ã®å‹•作ã¯ä»¥ä¸‹ã®ã„ãšã‚Œã‹:" + +#: sql_help.c:3206 sql_help.c:3964 +msgid "sub-SELECT" +msgstr "副å•ã„åˆã‚ã›" + +#: sql_help.c:3215 sql_help.c:3278 sql_help.c:3940 msgid "channel" msgstr "ãƒãƒ£ãƒãƒ«" -#: sql_help.c:2933 +#: sql_help.c:3237 msgid "lockmode" msgstr "ロックモード" -#: sql_help.c:2934 +#: sql_help.c:3238 msgid "where lockmode is one of:" msgstr "ロックモードã¯ä»¥ä¸‹ã®ã„ãšã‚Œã‹ï¼š" -#: sql_help.c:2975 +#: sql_help.c:3279 msgid "payload" msgstr "ペイロード" -#: sql_help.c:3001 +#: sql_help.c:3306 msgid "old_role" msgstr "å…ƒã®ãƒ­ãƒ¼ãƒ«" -#: sql_help.c:3002 +#: sql_help.c:3307 msgid "new_role" msgstr "æ–°ã—ã„ロール" -#: sql_help.c:3027 sql_help.c:3188 sql_help.c:3196 +#: sql_help.c:3332 sql_help.c:3493 sql_help.c:3501 msgid "savepoint_name" msgstr "セーブãƒã‚¤ãƒ³ãƒˆå" -#: sql_help.c:3229 +#: sql_help.c:3534 msgid "provider" msgstr "プロãƒã‚¤ãƒ€" -#: sql_help.c:3306 sql_help.c:3345 sql_help.c:3347 sql_help.c:3385 -#: sql_help.c:3524 sql_help.c:3563 sql_help.c:3565 sql_help.c:3693 -#: sql_help.c:3732 sql_help.c:3734 +#: sql_help.c:3621 sql_help.c:3663 sql_help.c:3665 sql_help.c:3711 +#: sql_help.c:3860 sql_help.c:3902 sql_help.c:3904 sql_help.c:4054 +#: sql_help.c:4096 sql_help.c:4098 msgid "from_item" msgstr "FROM é …ç›®" -#: sql_help.c:3310 sql_help.c:3389 sql_help.c:3528 sql_help.c:3697 +#: sql_help.c:3623 sql_help.c:3675 sql_help.c:3862 sql_help.c:3914 +#: sql_help.c:4056 sql_help.c:4108 +#| msgid "wrong element type" +msgid "grouping_element" +msgstr "グループ化ã®è¦ç´ " + +#: sql_help.c:3625 sql_help.c:3715 sql_help.c:3864 sql_help.c:4058 msgid "window_name" msgstr "ウィンドウå" -#: sql_help.c:3311 sql_help.c:3390 sql_help.c:3529 sql_help.c:3698 +#: sql_help.c:3626 sql_help.c:3716 sql_help.c:3865 sql_help.c:4059 msgid "window_definition" msgstr "ウィンドウ定義" -#: sql_help.c:3312 sql_help.c:3323 sql_help.c:3353 sql_help.c:3391 -#: sql_help.c:3530 sql_help.c:3541 sql_help.c:3571 sql_help.c:3699 -#: sql_help.c:3710 sql_help.c:3740 +#: sql_help.c:3627 sql_help.c:3641 sql_help.c:3679 sql_help.c:3717 +#: sql_help.c:3866 sql_help.c:3880 sql_help.c:3918 sql_help.c:4060 +#: sql_help.c:4074 sql_help.c:4112 msgid "select" msgstr "SELECTå¥" -#: sql_help.c:3319 sql_help.c:3537 sql_help.c:3706 +#: sql_help.c:3634 sql_help.c:3873 sql_help.c:4067 msgid "where from_item can be one of:" msgstr "FROMé …ç›®ã¯ä»¥ä¸‹ã®ã„ãšã‚Œã‹ï¼š" -#: sql_help.c:3322 sql_help.c:3325 sql_help.c:3328 sql_help.c:3332 -#: sql_help.c:3344 sql_help.c:3540 sql_help.c:3543 sql_help.c:3546 -#: sql_help.c:3550 sql_help.c:3562 sql_help.c:3709 sql_help.c:3712 -#: sql_help.c:3715 sql_help.c:3719 sql_help.c:3731 +#: sql_help.c:3637 sql_help.c:3643 sql_help.c:3646 sql_help.c:3650 +#: sql_help.c:3662 sql_help.c:3876 sql_help.c:3882 sql_help.c:3885 +#: sql_help.c:3889 sql_help.c:3901 sql_help.c:4070 sql_help.c:4076 +#: sql_help.c:4079 sql_help.c:4083 sql_help.c:4095 msgid "column_alias" msgstr "列ã®åˆ¥å" -#: sql_help.c:3326 sql_help.c:3351 sql_help.c:3544 sql_help.c:3569 -#: sql_help.c:3713 sql_help.c:3738 -msgid "with_query_name" -msgstr "WITHå•ã„åˆã‚ã›å" +#: sql_help.c:3638 sql_help.c:3877 sql_help.c:4071 +#| msgid "index_method" +msgid "sampling_method" +msgstr "サンプリングメソッド" -#: sql_help.c:3330 sql_help.c:3334 sql_help.c:3338 sql_help.c:3341 -#: sql_help.c:3548 sql_help.c:3552 sql_help.c:3556 sql_help.c:3559 -#: sql_help.c:3717 sql_help.c:3721 sql_help.c:3725 sql_help.c:3728 +#: sql_help.c:3639 sql_help.c:3648 sql_help.c:3652 sql_help.c:3656 +#: sql_help.c:3659 sql_help.c:3878 sql_help.c:3887 sql_help.c:3891 +#: sql_help.c:3895 sql_help.c:3898 sql_help.c:4072 sql_help.c:4081 +#: sql_help.c:4085 sql_help.c:4089 sql_help.c:4092 msgid "argument" msgstr "引数" -#: sql_help.c:3336 sql_help.c:3339 sql_help.c:3342 sql_help.c:3554 -#: sql_help.c:3557 sql_help.c:3560 sql_help.c:3723 sql_help.c:3726 -#: sql_help.c:3729 +#: sql_help.c:3640 sql_help.c:3879 sql_help.c:4073 +msgid "seed" +msgstr "シード" + +#: sql_help.c:3644 sql_help.c:3677 sql_help.c:3883 sql_help.c:3916 +#: sql_help.c:4077 sql_help.c:4110 +msgid "with_query_name" +msgstr "WITHå•ã„åˆã‚ã›å" + +#: sql_help.c:3654 sql_help.c:3657 sql_help.c:3660 sql_help.c:3893 +#: sql_help.c:3896 sql_help.c:3899 sql_help.c:4087 sql_help.c:4090 +#: sql_help.c:4093 msgid "column_definition" msgstr "列定義" -#: sql_help.c:3346 sql_help.c:3564 sql_help.c:3733 +#: sql_help.c:3664 sql_help.c:3903 sql_help.c:4097 msgid "join_type" msgstr "çµåˆç¨®é¡ž" -#: sql_help.c:3348 sql_help.c:3566 sql_help.c:3735 +#: sql_help.c:3666 sql_help.c:3905 sql_help.c:4099 msgid "join_condition" msgstr "çµåˆæ¡ä»¶" -#: sql_help.c:3349 sql_help.c:3567 sql_help.c:3736 +#: sql_help.c:3667 sql_help.c:3906 sql_help.c:4100 msgid "join_column" msgstr "çµåˆåˆ—" -#: sql_help.c:3350 sql_help.c:3568 sql_help.c:3737 +#: sql_help.c:3668 sql_help.c:3907 sql_help.c:4101 +#| msgid "where event can be one of:" +msgid "and grouping_element can be one of:" +msgstr "グループ化ã®è¦ç´ ã¯ä»¥ä¸‹ã®ã„ãšã‚Œã‹:" + +#: sql_help.c:3676 sql_help.c:3915 sql_help.c:4109 msgid "and with_query is:" msgstr "WITHå•ã„åˆã‚ã›ï¼š" -#: sql_help.c:3354 sql_help.c:3572 sql_help.c:3741 +#: sql_help.c:3680 sql_help.c:3919 sql_help.c:4113 msgid "values" msgstr "VALUESå¥" -#: sql_help.c:3355 sql_help.c:3573 sql_help.c:3742 +#: sql_help.c:3681 sql_help.c:3920 sql_help.c:4114 msgid "insert" msgstr "INSERTå¥" -#: sql_help.c:3356 sql_help.c:3574 sql_help.c:3743 +#: sql_help.c:3682 sql_help.c:3921 sql_help.c:4115 msgid "update" msgstr "UPDATEå¥" -#: sql_help.c:3357 sql_help.c:3575 sql_help.c:3744 +#: sql_help.c:3683 sql_help.c:3922 sql_help.c:4116 msgid "delete" msgstr "DELETEå¥" -#: sql_help.c:3384 +#: sql_help.c:3710 msgid "new_table" msgstr "æ–°ã—ã„テーブル" -#: sql_help.c:3409 +#: sql_help.c:3735 msgid "timezone" msgstr "タイムゾーン" -#: sql_help.c:3454 +#: sql_help.c:3780 msgid "snapshot_id" msgstr "スナップショットID" -#: sql_help.c:3614 +#: sql_help.c:3965 msgid "from_list" msgstr "FROM リスト" -#: sql_help.c:3645 +#: sql_help.c:3996 msgid "sort_expression" msgstr "ソート表ç¾" -#: sql_help.h:191 sql_help.h:891 +#: sql_help.c:4123 sql_help.c:4863 msgid "abort the current transaction" msgstr "ç¾åœ¨ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’中断ã™ã‚‹" -#: sql_help.h:196 +#: sql_help.c:4128 msgid "change the definition of an aggregate function" msgstr "集約関数ã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:201 +#: sql_help.c:4133 msgid "change the definition of a collation" msgstr "ç…§åˆé †åºã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:206 +#: sql_help.c:4138 msgid "change the definition of a conversion" msgstr "エンコーディング変æ›ãƒ«ãƒ¼ãƒ«ã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:211 +#: sql_help.c:4143 msgid "change a database" msgstr "データベースを変更ã™ã‚‹" -#: sql_help.h:216 +#: sql_help.c:4148 msgid "define default access privileges" msgstr "デフォルトã®ã‚¢ã‚¯ã‚»ã‚¹æ¨©é™ã‚’定義ã™ã‚‹" -#: sql_help.h:221 +#: sql_help.c:4153 msgid "change the definition of a domain" msgstr "ドメインã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:226 +#: sql_help.c:4158 msgid "change the definition of an event trigger" msgstr "イベントトリガã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:231 +#: sql_help.c:4163 msgid "change the definition of an extension" msgstr "æ‹¡å¼µã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:236 +#: sql_help.c:4168 msgid "change the definition of a foreign-data wrapper" msgstr "外部データラッパーã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:241 +#: sql_help.c:4173 msgid "change the definition of a foreign table" msgstr "外部テーブルã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:246 +#: sql_help.c:4178 msgid "change the definition of a function" msgstr "関数ã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:251 +#: sql_help.c:4183 msgid "change role name or membership" msgstr "ロールã®åå‰ã¾ãŸã¯ãƒ¡ãƒ³ãƒãƒ¼ã‚·ãƒƒãƒ—を変更ã™ã‚‹" -#: sql_help.h:256 +#: sql_help.c:4188 msgid "change the definition of an index" msgstr "インデックスã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:261 +#: sql_help.c:4193 msgid "change the definition of a procedural language" msgstr "手続ã言語ã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:266 +#: sql_help.c:4198 msgid "change the definition of a large object" msgstr "ラージオブジェクトã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:271 +#: sql_help.c:4203 msgid "change the definition of a materialized view" msgstr "マテリアライズドビューã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:276 +#: sql_help.c:4208 msgid "change the definition of an operator" msgstr "演算å­ã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:281 +#: sql_help.c:4213 msgid "change the definition of an operator class" msgstr "演算å­ã‚¯ãƒ©ã‚¹ã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:286 +#: sql_help.c:4218 msgid "change the definition of an operator family" msgstr "演算å­ãƒ•ァミリã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:291 sql_help.h:361 +#: sql_help.c:4223 +#| msgid "change the definition of a conversion" +msgid "change the definition of a row level security policy" +msgstr "行レベルセキュリティãƒãƒªã‚·ãƒ¼ã®å®šç¾©ã‚’変更ã™ã‚‹" + +#: sql_help.c:4228 sql_help.c:4298 msgid "change a database role" msgstr "データベースã®ãƒ­ãƒ¼ãƒ«ã‚’変更ã™ã‚‹" -#: sql_help.h:296 +#: sql_help.c:4233 msgid "change the definition of a rule" msgstr "ルールã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:301 +#: sql_help.c:4238 msgid "change the definition of a schema" msgstr "スキーマã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:306 +#: sql_help.c:4243 msgid "change the definition of a sequence generator" msgstr "シーケンスジェãƒãƒ¬ãƒ¼ã‚¿ãƒ¼ã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:311 +#: sql_help.c:4248 msgid "change the definition of a foreign server" msgstr "外部サーãƒãƒ¼ã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:316 +#: sql_help.c:4253 msgid "change a server configuration parameter" msgstr "サーãƒè¨­å®šãƒ‘ラメータを変更ã™ã‚‹" -#: sql_help.h:321 +#: sql_help.c:4258 msgid "change the definition of a table" msgstr "テーブルã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:326 +#: sql_help.c:4263 msgid "change the definition of a tablespace" msgstr "テーブルスペースã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:331 +#: sql_help.c:4268 msgid "change the definition of a text search configuration" msgstr "テキスト検索設定ã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:336 +#: sql_help.c:4273 msgid "change the definition of a text search dictionary" msgstr "テキスト検索辞書ã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:341 +#: sql_help.c:4278 msgid "change the definition of a text search parser" msgstr "テキスト検索パーサã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:346 +#: sql_help.c:4283 msgid "change the definition of a text search template" msgstr "テキスト検索テンプレートã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:351 +#: sql_help.c:4288 msgid "change the definition of a trigger" msgstr "トリガã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:356 +#: sql_help.c:4293 msgid "change the definition of a type" msgstr "åž‹ã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:366 +#: sql_help.c:4303 msgid "change the definition of a user mapping" msgstr "ユーザマッピングã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:371 +#: sql_help.c:4308 msgid "change the definition of a view" msgstr "ビューã®å®šç¾©ã‚’変更ã™ã‚‹" -#: sql_help.h:376 +#: sql_help.c:4313 msgid "collect statistics about a database" msgstr "データベースã®çµ±è¨ˆæƒ…報をåŽé›†ã™ã‚‹" -#: sql_help.h:381 sql_help.h:956 +#: sql_help.c:4318 sql_help.c:4928 msgid "start a transaction block" msgstr "トランザクションブロックを開始ã™ã‚‹" -#: sql_help.h:386 +#: sql_help.c:4323 msgid "force a transaction log checkpoint" msgstr "トランザクションログã®ãƒã‚§ãƒƒã‚¯ãƒã‚¤ãƒ³ãƒˆã‚’強制設定ã™ã‚‹" -#: sql_help.h:391 +#: sql_help.c:4328 msgid "close a cursor" msgstr "カーソルを閉ã˜ã‚‹" -#: sql_help.h:396 +#: sql_help.c:4333 msgid "cluster a table according to an index" msgstr "インデックスã«å¾“ã£ã¦ãƒ†ãƒ¼ãƒ–ルをクラスタ化ã™ã‚‹" -#: sql_help.h:401 +#: sql_help.c:4338 msgid "define or change the comment of an object" msgstr "オブジェクトã®ã‚³ãƒ¡ãƒ³ãƒˆã‚’定義ã¾ãŸã¯å¤‰æ›´ã™ã‚‹" -#: sql_help.h:406 sql_help.h:796 +#: sql_help.c:4343 sql_help.c:4763 msgid "commit the current transaction" msgstr "ç¾åœ¨ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’コミットã™ã‚‹" -#: sql_help.h:411 +#: sql_help.c:4348 msgid "commit a transaction that was earlier prepared for two-phase commit" msgstr "2フェーズコミットã®ãŸã‚ã«äº‹å‰ã«æº–å‚™ã•れãŸãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’コミットã™ã‚‹" -#: sql_help.h:416 +#: sql_help.c:4353 msgid "copy data between a file and a table" msgstr "ファイルã¨ãƒ†ãƒ¼ãƒ–ル間ã§ãƒ‡ãƒ¼ã‚¿ã‚’コピーã™ã‚‹" -#: sql_help.h:421 +#: sql_help.c:4358 +#| msgid "define a new cast" +msgid "define a new access method" +msgstr "æ–°ã—ã„アクセスメソッドを定義ã™ã‚‹" + +#: sql_help.c:4363 msgid "define a new aggregate function" msgstr "æ–°ã—ã„集約関数を定義ã™ã‚‹" -#: sql_help.h:426 +#: sql_help.c:4368 msgid "define a new cast" msgstr "æ–°ã—ã„キャストを定義ã™ã‚‹" -#: sql_help.h:431 +#: sql_help.c:4373 msgid "define a new collation" msgstr "æ–°ã—ã„ç…§åˆé †åºã‚’定義ã™ã‚‹" -#: sql_help.h:436 +#: sql_help.c:4378 msgid "define a new encoding conversion" msgstr "æ–°ã—ã„エンコーディングã®å¤‰æ›ãƒ«ãƒ¼ãƒ«ã‚’定義ã™ã‚‹" -#: sql_help.h:441 +#: sql_help.c:4383 msgid "create a new database" msgstr "æ–°ã—ã„データベースを作æˆã™ã‚‹" -#: sql_help.h:446 +#: sql_help.c:4388 msgid "define a new domain" msgstr "æ–°ã—ã„ドメインを定義ã™ã‚‹" -#: sql_help.h:451 +#: sql_help.c:4393 msgid "define a new event trigger" msgstr "æ–°ã—ã„イベントトリガを定義ã™ã‚‹" -#: sql_help.h:456 +#: sql_help.c:4398 msgid "install an extension" msgstr "拡張をインストールã™ã‚‹" -#: sql_help.h:461 +#: sql_help.c:4403 msgid "define a new foreign-data wrapper" msgstr "æ–°ã—ã„外部データラッパーを定義ã™ã‚‹" -#: sql_help.h:466 +#: sql_help.c:4408 msgid "define a new foreign table" msgstr "æ–°ã—ã„外部テーブルを定義ã™ã‚‹" -#: sql_help.h:471 +#: sql_help.c:4413 msgid "define a new function" msgstr "æ–°ã—ã„関数を定義ã™ã‚‹" -#: sql_help.h:476 sql_help.h:511 sql_help.h:581 +#: sql_help.c:4418 sql_help.c:4458 sql_help.c:4533 msgid "define a new database role" msgstr "ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®æ–°ã—ã„ロールを定義ã™ã‚‹" -#: sql_help.h:481 +#: sql_help.c:4423 msgid "define a new index" msgstr "æ–°ã—ã„インデックスを定義ã™ã‚‹" -#: sql_help.h:486 +#: sql_help.c:4428 msgid "define a new procedural language" msgstr "æ–°ã—ã„æ‰‹ç¶šã言語を定義ã™ã‚‹" -#: sql_help.h:491 +#: sql_help.c:4433 msgid "define a new materialized view" msgstr "æ–°ã—ã„マテリアライズドビューを定義ã™ã‚‹" -#: sql_help.h:496 +#: sql_help.c:4438 msgid "define a new operator" msgstr "æ–°ã—ã„æ¼”ç®—å­ã‚’定義ã™ã‚‹" -#: sql_help.h:501 +#: sql_help.c:4443 msgid "define a new operator class" msgstr "æ–°ã—ã„æ¼”ç®—å­ã‚¯ãƒ©ã‚¹ã‚’定義ã™ã‚‹" -#: sql_help.h:506 +#: sql_help.c:4448 msgid "define a new operator family" msgstr "æ–°ã—ã„æ¼”ç®—å­ãƒ•ァミリを定義ã™ã‚‹" -#: sql_help.h:516 +#: sql_help.c:4453 +msgid "define a new row level security policy for a table" +msgstr "ãƒ†ãƒ¼ãƒ–ãƒ«ã«æ–°ã—ã„行レベルセキュリティãƒãƒªã‚·ãƒ¼ã‚’定義ã™ã‚‹" + +#: sql_help.c:4463 msgid "define a new rewrite rule" msgstr "æ–°ã—ã„æ›¸ãæ›ãˆãƒ«ãƒ¼ãƒ«ã‚’定義ã™ã‚‹" -#: sql_help.h:521 +#: sql_help.c:4468 msgid "define a new schema" msgstr "æ–°ã—ã„スキーマを定義ã™ã‚‹" -#: sql_help.h:526 +#: sql_help.c:4473 msgid "define a new sequence generator" msgstr "æ–°ã—ã„シーケンスジェãƒãƒ¬ãƒ¼ã‚¿ãƒ¼ã‚’定義ã™ã‚‹" -#: sql_help.h:531 +#: sql_help.c:4478 msgid "define a new foreign server" msgstr "æ–°ã—ã„外部サーãƒãƒ¼ã‚’定義ã™ã‚‹" -#: sql_help.h:536 +#: sql_help.c:4483 msgid "define a new table" msgstr "æ–°ã—ã„テーブルを定義ã™ã‚‹" -#: sql_help.h:541 sql_help.h:921 +#: sql_help.c:4488 sql_help.c:4893 msgid "define a new table from the results of a query" msgstr "å•ã„åˆã‚ã›çµæžœã‹ã‚‰æ–°ã—ã„テーブルを生æˆã™ã‚‹" -#: sql_help.h:546 +#: sql_help.c:4493 msgid "define a new tablespace" msgstr "æ–°ã—ã„テーブルスペースを定義ã™ã‚‹" -#: sql_help.h:551 +#: sql_help.c:4498 msgid "define a new text search configuration" msgstr "æ–°ã—ã„テキスト検索設定を定義ã™ã‚‹" -#: sql_help.h:556 +#: sql_help.c:4503 msgid "define a new text search dictionary" msgstr "æ–°ã—ã„テキスト検索用辞書を定義ã™ã‚‹" -#: sql_help.h:561 +#: sql_help.c:4508 msgid "define a new text search parser" msgstr "æ–°ã—ã„テキスト検索用パーサを定義ã™ã‚‹" -#: sql_help.h:566 +#: sql_help.c:4513 msgid "define a new text search template" msgstr "æ–°ã—ã„テキスト検索テンプレートを定義ã™ã‚‹" -#: sql_help.h:571 +#: sql_help.c:4518 +#| msgid "define a new operator" +msgid "define a new transform" +msgstr "æ–°ã—ã„変æ›ã‚’定義ã™ã‚‹" + +#: sql_help.c:4523 msgid "define a new trigger" msgstr "æ–°ã—ã„トリガを定義ã™ã‚‹" -#: sql_help.h:576 +#: sql_help.c:4528 msgid "define a new data type" msgstr "æ–°ã—ã„データ型を定義ã™ã‚‹" -#: sql_help.h:586 +#: sql_help.c:4538 msgid "define a new mapping of a user to a foreign server" msgstr "外部サーãƒãƒ¼ã«å¯¾ã—ã¦ãƒ¦ãƒ¼ã‚¶ã®æ–°ã—ã„マッピングを定義ã™ã‚‹" -#: sql_help.h:591 +#: sql_help.c:4543 msgid "define a new view" msgstr "æ–°ã—ã„ビューを定義ã™ã‚‹" -#: sql_help.h:596 +#: sql_help.c:4548 msgid "deallocate a prepared statement" msgstr "プリペアドステートメントを開放ã™ã‚‹" -#: sql_help.h:601 +#: sql_help.c:4553 msgid "define a cursor" msgstr "カーソルを定義ã™ã‚‹" -#: sql_help.h:606 +#: sql_help.c:4558 msgid "delete rows of a table" msgstr "テーブルã®è¡Œã‚’削除ã™ã‚‹" -#: sql_help.h:611 +#: sql_help.c:4563 msgid "discard session state" msgstr "セッションã®çŠ¶æ…‹ã‚’ç ´æ£„ã™ã‚‹" -#: sql_help.h:616 +#: sql_help.c:4568 msgid "execute an anonymous code block" msgstr "ç„¡åコードブロックを実行ã™ã‚‹" -#: sql_help.h:621 +#: sql_help.c:4573 +#| msgid "remove a cast" +msgid "remove an access method" +msgstr "アクセスメソッドを削除ã™ã‚‹" + +#: sql_help.c:4578 msgid "remove an aggregate function" msgstr "集約関数を削除ã™ã‚‹" -#: sql_help.h:626 +#: sql_help.c:4583 msgid "remove a cast" msgstr "キャストを削除ã™ã‚‹" -#: sql_help.h:631 +#: sql_help.c:4588 msgid "remove a collation" msgstr "ç…§åˆé †åºã‚’削除ã™ã‚‹" -#: sql_help.h:636 +#: sql_help.c:4593 msgid "remove a conversion" msgstr "エンコーディング変æ›ãƒ«ãƒ¼ãƒ«ã‚’削除ã™ã‚‹" -#: sql_help.h:641 +#: sql_help.c:4598 msgid "remove a database" msgstr "データベースを削除ã™ã‚‹" -#: sql_help.h:646 +#: sql_help.c:4603 msgid "remove a domain" msgstr "ドメインを削除ã™ã‚‹" -#: sql_help.h:651 +#: sql_help.c:4608 msgid "remove an event trigger" msgstr "イベントトリガを削除ã™ã‚‹" -#: sql_help.h:656 +#: sql_help.c:4613 msgid "remove an extension" msgstr "拡張を削除ã™ã‚‹" -#: sql_help.h:661 +#: sql_help.c:4618 msgid "remove a foreign-data wrapper" msgstr "外部データラッパーを削除ã™ã‚‹" -#: sql_help.h:666 +#: sql_help.c:4623 msgid "remove a foreign table" msgstr "外部テーブルを削除ã™ã‚‹" -#: sql_help.h:671 +#: sql_help.c:4628 msgid "remove a function" msgstr "関数を削除ã™ã‚‹" -#: sql_help.h:676 sql_help.h:716 sql_help.h:781 +#: sql_help.c:4633 sql_help.c:4678 sql_help.c:4748 msgid "remove a database role" msgstr "データベースã®ãƒ­ãƒ¼ãƒ«ã‚’削除ã™ã‚‹" -#: sql_help.h:681 +#: sql_help.c:4638 msgid "remove an index" msgstr "インデックスを削除ã™ã‚‹" -#: sql_help.h:686 +#: sql_help.c:4643 msgid "remove a procedural language" msgstr "手続ã言語を削除ã™ã‚‹" -#: sql_help.h:691 +#: sql_help.c:4648 msgid "remove a materialized view" msgstr "マテリアライズドビューを削除ã™ã‚‹" -#: sql_help.h:696 +#: sql_help.c:4653 msgid "remove an operator" msgstr "演算å­ã‚’削除ã™ã‚‹" -#: sql_help.h:701 +#: sql_help.c:4658 msgid "remove an operator class" msgstr "演算å­ã‚¯ãƒ©ã‚¹ã‚’削除ã™ã‚‹" -#: sql_help.h:706 +#: sql_help.c:4663 msgid "remove an operator family" msgstr "演算å­ãƒ•ァミリを削除ã™ã‚‹" -#: sql_help.h:711 +#: sql_help.c:4668 msgid "remove database objects owned by a database role" msgstr "特定ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ­ãƒ¼ãƒ«ãŒæ‰€æœ‰ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚ªãƒ–ジェクトを削除ã™ã‚‹" -#: sql_help.h:721 +#: sql_help.c:4673 +msgid "remove a row level security policy from a table" +msgstr "テーブルã‹ã‚‰è¡Œãƒ¬ãƒ™ãƒ«ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãƒãƒªã‚·ãƒ¼ã‚’削除ã™ã‚‹" + +#: sql_help.c:4683 msgid "remove a rewrite rule" msgstr "æ›¸ãæ›ãˆãƒ«ãƒ¼ãƒ«ã‚’削除ã™ã‚‹" -#: sql_help.h:726 +#: sql_help.c:4688 msgid "remove a schema" msgstr "スキーマを削除ã™ã‚‹" -#: sql_help.h:731 +#: sql_help.c:4693 msgid "remove a sequence" msgstr "シーケンスを削除ã™ã‚‹" -#: sql_help.h:736 +#: sql_help.c:4698 msgid "remove a foreign server descriptor" msgstr "外部サーãƒãƒ¼è­˜åˆ¥å­ã‚’削除ã™ã‚‹" -#: sql_help.h:741 +#: sql_help.c:4703 msgid "remove a table" msgstr "テーブルを削除ã™ã‚‹" -#: sql_help.h:746 +#: sql_help.c:4708 msgid "remove a tablespace" msgstr "テーブルスペースを削除ã™ã‚‹" -#: sql_help.h:751 +#: sql_help.c:4713 msgid "remove a text search configuration" msgstr "テキスト検索設定を削除ã™ã‚‹" -#: sql_help.h:756 +#: sql_help.c:4718 msgid "remove a text search dictionary" msgstr "テキスト検索用辞書を削除ã™ã‚‹" -#: sql_help.h:761 +#: sql_help.c:4723 msgid "remove a text search parser" msgstr "テキスト検索用パーサを削除ã™ã‚‹" -#: sql_help.h:766 +#: sql_help.c:4728 msgid "remove a text search template" msgstr "テキスト検索用テンプレートを削除ã™ã‚‹" -#: sql_help.h:771 +#: sql_help.c:4733 +#| msgid "remove an operator" +msgid "remove a transform" +msgstr "変æ›ã‚’削除ã™ã‚‹" + +#: sql_help.c:4738 msgid "remove a trigger" msgstr "トリガを削除ã™ã‚‹" -#: sql_help.h:776 +#: sql_help.c:4743 msgid "remove a data type" msgstr "データ型を削除ã™ã‚‹" -#: sql_help.h:786 +#: sql_help.c:4753 msgid "remove a user mapping for a foreign server" msgstr "外部サーãƒãƒ¼ã®ãƒ¦ãƒ¼ã‚¶ãƒžãƒƒãƒ”ングを削除" -#: sql_help.h:791 +#: sql_help.c:4758 msgid "remove a view" msgstr "ビューを削除ã™ã‚‹" -#: sql_help.h:801 +#: sql_help.c:4768 msgid "execute a prepared statement" msgstr "プリペアドステートメントを実行ã™ã‚‹" -#: sql_help.h:806 +#: sql_help.c:4773 msgid "show the execution plan of a statement" msgstr "ステートメントã®å®Ÿè¡Œãƒ—ランを表示ã™ã‚‹" -#: sql_help.h:811 +#: sql_help.c:4778 msgid "retrieve rows from a query using a cursor" msgstr "カーソルを使ã£ã¦å•ã„åˆã‚ã›ã‹ã‚‰è¡Œã‚’å–り出ã™" -#: sql_help.h:816 +#: sql_help.c:4783 msgid "define access privileges" msgstr "アクセス権é™ã‚’定義ã™ã‚‹" -#: sql_help.h:821 +#: sql_help.c:4788 +#| msgid "change the definition of a foreign server" +msgid "import table definitions from a foreign server" +msgstr "外部サーãƒãƒ¼ã‹ã‚‰ãƒ†ãƒ¼ãƒ–ル定義をインãƒãƒ¼ãƒˆã™ã‚‹" + +#: sql_help.c:4793 msgid "create new rows in a table" msgstr "ãƒ†ãƒ¼ãƒ–ãƒ«ã«æ–°ã—ã„行を作æˆã™ã‚‹" -#: sql_help.h:826 +#: sql_help.c:4798 msgid "listen for a notification" msgstr "通知メッセージを監視ã™ã‚‹" -#: sql_help.h:831 +#: sql_help.c:4803 msgid "load a shared library file" msgstr "共有ライブラリファイルをロードã™ã‚‹" -#: sql_help.h:836 +#: sql_help.c:4808 msgid "lock a table" msgstr "テーブルをロックã™ã‚‹" -#: sql_help.h:841 +#: sql_help.c:4813 msgid "position a cursor" msgstr "カーソルをä½ç½®ä»˜ã‘ã‚‹" -#: sql_help.h:846 +#: sql_help.c:4818 msgid "generate a notification" msgstr "通知メッセージを生æˆã™ã‚‹" -#: sql_help.h:851 +#: sql_help.c:4823 msgid "prepare a statement for execution" msgstr "実行ã«å…ˆç«‹ã£ã¦ã‚¹ãƒ†ãƒ¼ãƒˆãƒ¡ãƒ³ãƒˆã‚’準備ã™ã‚‹" -#: sql_help.h:856 +#: sql_help.c:4828 msgid "prepare the current transaction for two-phase commit" msgstr "2フェーズコミット用ã«ç¾åœ¨ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’準備ã™ã‚‹" -#: sql_help.h:861 +#: sql_help.c:4833 msgid "change the ownership of database objects owned by a database role" msgstr "ã‚ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ­ãƒ¼ãƒ«ãŒæ‰€æœ‰ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ‰€æœ‰è€…を変更ã™ã‚‹" -#: sql_help.h:866 +#: sql_help.c:4838 msgid "replace the contents of a materialized view" msgstr "マテリアライズドビューã®å†…å®¹ã‚’ç½®ãæ›ãˆã‚‹" -#: sql_help.h:871 +#: sql_help.c:4843 msgid "rebuild indexes" msgstr "ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’å†æ§‹ç¯‰ã™ã‚‹" -#: sql_help.h:876 +#: sql_help.c:4848 msgid "destroy a previously defined savepoint" msgstr "å‰å›žå®šç¾©ã—ãŸã‚»ãƒ¼ãƒ–ãƒã‚¤ãƒ³ãƒˆã‚’削除ã™ã‚‹" -#: sql_help.h:881 +#: sql_help.c:4853 msgid "restore the value of a run-time parameter to the default value" msgstr "実行時パラメータã®å€¤ã‚’ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã«æˆ»ã™" -#: sql_help.h:886 +#: sql_help.c:4858 msgid "remove access privileges" msgstr "アクセス権é™ã‚’剥奪ã™ã‚‹" -#: sql_help.h:896 +#: sql_help.c:4868 msgid "cancel a transaction that was earlier prepared for two-phase commit" msgstr "2フェーズコミット用ã«äº‹å‰æº–å‚™ã•れãŸãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’キャンセルã™ã‚‹" -#: sql_help.h:901 +#: sql_help.c:4873 msgid "roll back to a savepoint" msgstr "セーブãƒã‚¤ãƒ³ãƒˆã¾ã§ãƒ­ãƒ¼ãƒ«ãƒãƒƒã‚¯ã™ã‚‹" -#: sql_help.h:906 +#: sql_help.c:4878 msgid "define a new savepoint within the current transaction" msgstr "ç¾åœ¨ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã«å¯¾ã—ã¦æ–°ã—ã„セーブãƒã‚¤ãƒ³ãƒˆã‚’定義ã™ã‚‹" -#: sql_help.h:911 +#: sql_help.c:4883 msgid "define or change a security label applied to an object" msgstr "オブジェクトã«é©ç”¨ã•れるセキュリティラベルを定義ã¾ãŸã¯å¤‰æ›´ã™ã‚‹" -#: sql_help.h:916 sql_help.h:961 sql_help.h:991 +#: sql_help.c:4888 sql_help.c:4933 sql_help.c:4963 msgid "retrieve rows from a table or view" msgstr "テーブルもã—ãã¯ãƒ“ューã‹ã‚‰è¡Œã‚’å–り出ã™" -#: sql_help.h:926 +#: sql_help.c:4898 msgid "change a run-time parameter" msgstr "実行時パラメータを変更ã™ã‚‹" -#: sql_help.h:931 +#: sql_help.c:4903 msgid "set constraint check timing for the current transaction" msgstr "ç¾åœ¨ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã«å¯¾ã—ã¦åˆ¶ç´„検査ã®ã‚¿ã‚¤ãƒŸãƒ³ã‚°ã‚’設定ã™ã‚‹" -#: sql_help.h:936 +#: sql_help.c:4908 msgid "set the current user identifier of the current session" msgstr "ç¾åœ¨ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ãŠã‘ã‚‹ç¾åœ¨ã®ãƒ¦ãƒ¼ã‚¶è­˜åˆ¥ã‚’設定ã™ã‚‹" -#: sql_help.h:941 +#: sql_help.c:4913 msgid "set the session user identifier and the current user identifier of the current session" msgstr "セッションã®ãƒ¦ãƒ¼ã‚¶è­˜åˆ¥ã€ãŠã‚ˆã³ç¾åœ¨ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ãŠã‘ã‚‹ç¾åœ¨ã®ãƒ¦ãƒ¼ã‚¶è­˜åˆ¥ã‚’設定ã™ã‚‹" -#: sql_help.h:946 +#: sql_help.c:4918 msgid "set the characteristics of the current transaction" msgstr "ç¾åœ¨ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®ç‰¹æ€§ã‚’設定ã—ã¾ã™" -#: sql_help.h:951 +#: sql_help.c:4923 msgid "show the value of a run-time parameter" msgstr "実行時パラメータã®å€¤ã‚’表示ã™ã‚‹" -#: sql_help.h:966 +#: sql_help.c:4938 msgid "empty a table or set of tables" msgstr "テーブルもã—ãã¯ãƒ†ãƒ¼ãƒ–ルã®ã‚»ãƒƒãƒˆã‚’ 0 ä»¶ã«åˆ‡ã‚Šè©°ã‚ã‚‹" -#: sql_help.h:971 +#: sql_help.c:4943 msgid "stop listening for a notification" msgstr "通知メッセージã®ç›£è¦–を中止ã™ã‚‹" -#: sql_help.h:976 +#: sql_help.c:4948 msgid "update rows of a table" msgstr "テーブルã®è¡Œã‚’æ›´æ–°ã™ã‚‹" -#: sql_help.h:981 +#: sql_help.c:4953 msgid "garbage-collect and optionally analyze a database" msgstr "ガーベジコレクションを行ã„ã€ã‚ªãƒ—ションã§ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®åˆ†æžã‚’ã—ã¾ã™" -#: sql_help.h:986 +#: sql_help.c:4958 msgid "compute a set of rows" msgstr "行セットを計算ã—ã¾ã™" -#: startup.c:166 +#: startup.c:189 #, c-format msgid "%s: -1 can only be used in non-interactive mode\n" msgstr "%s: -1ã¯å¯¾è©±å¼ãƒ¢ãƒ¼ãƒ‰ä»¥å¤–ã§ã®ã¿ä½¿ç”¨ã§ãã¾ã™\n" -#: startup.c:266 +#: startup.c:289 #, c-format msgid "%s: could not open log file \"%s\": %s\n" msgstr "%s: ログファイル \"%s\" をオープンã§ãã¾ã›ã‚“: %s\n" -#: startup.c:328 +#: startup.c:389 #, c-format msgid "" "Type \"help\" for help.\n" @@ -4415,42 +5373,43 @@ msgstr "" "\"help\" ã§ãƒ˜ãƒ«ãƒ—を表示ã—ã¾ã™.\n" "\n" -#: startup.c:471 +#: startup.c:538 #, c-format msgid "%s: could not set printing parameter \"%s\"\n" msgstr "%s: 表示用パラメータ \"%s\" をセットã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: startup.c:511 +#: startup.c:578 #, c-format msgid "%s: could not delete variable \"%s\"\n" msgstr "%s: 変数 \"%s\" を削除ã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: startup.c:521 +#: startup.c:588 #, c-format msgid "%s: could not set variable \"%s\"\n" msgstr "%s: 変数 \"%s\" をセットã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: startup.c:564 startup.c:570 +#: startup.c:648 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "詳細㯠'%s --help' ã‚’ã”らんãã ã•ã„\n" -#: startup.c:587 +#: startup.c:665 #, c-format msgid "%s: warning: extra command-line argument \"%s\" ignored\n" msgstr "%s: 警告:余分ãªã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‚ªãƒ—ション \"%s\" ã¯ç„¡è¦–ã•れã¾ã™\n" -#: startup.c:609 +#: startup.c:714 #, c-format msgid "%s: could not find own program executable\n" msgstr "%s: 実行ファイル自体ãŒã‚りã¾ã›ã‚“ã§ã—ãŸ\n" -#: startup.c:729 startup.c:776 startup.c:797 startup.c:834 variables.c:121 +#: startup.c:836 startup.c:883 startup.c:904 startup.c:941 startup.c:963 +#: variables.c:121 #, c-format msgid "unrecognized value \"%s\" for \"%s\"; assuming \"%s\"\n" msgstr "\"%2$s\" ã®ä¸æ˜Žãªå€¤ \"%1$s\"。\"%3$s\"ã¨ä»®å®šã—ã¾ã™\n" -#: tab-complete.c:4098 +#: tab-complete.c:3743 #, c-format msgid "" "tab completion query failed: %s\n" @@ -4460,3 +5419,15 @@ msgstr "" "å•ã„åˆã‚ã›ã®ã‚¿ãƒ–補完ã«å¤±æ•—: %s\n" "å•ã„åˆã‚ã›ã¯\n" "%s\n" + +#~ msgid "(No rows)\n" +#~ msgstr "(行ãŒã‚りã¾ã›ã‚“)\n" + +#~ msgid " -?, --help show this help, then exit\n" +#~ msgstr " -?, --help ã“ã®ãƒ˜ãƒ«ãƒ—を表示ã—ã€çµ‚了ã—ã¾ã™\n" + +#~ msgid "Watch every %lds\t%s" +#~ msgstr "%ld秒毎ã«ç›£è¦–ã—ã¾ã™\t%s" + +#~ msgid "SSL connection (unknown cipher)\n" +#~ msgstr "SSL 接続 (æœªå®šç¾©ã®æš—å·åŒ–æ–¹å¼)\n" diff --git a/src/bin/psql/po/ko.po b/src/bin/psql/po/ko.po new file mode 100644 index 0000000000..b355b663f6 --- /dev/null +++ b/src/bin/psql/po/ko.po @@ -0,0 +1,5447 @@ +# Korean message translation file for psql +# Ioseph Kim. , 2004. +# +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 9.6\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2016-09-26 14:02+0900\n" +"PO-Revision-Date: 2016-09-27 01:42+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" + +#: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 +#, c-format +msgid "could not identify current directory: %s" +msgstr "현재 디렉터리를 ì°¾ì„ ìˆ˜ ì—†ìŒ: %s" + +#: ../../common/exec.c:146 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "ìž˜ëª»ëœ ë°”ì´ë„ˆë¦¬ 파ì¼: \"%s\"" + +#: ../../common/exec.c:195 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "\"%s\" ë°”ì´ë„ˆë¦¬ 파ì¼ì„ ì½ì„ 수 ì—†ìŒ" + +#: ../../common/exec.c:202 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "실행할 \"%s\" íŒŒì¼ ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: ../../common/exec.c:257 ../../common/exec.c:293 +#, c-format +msgid "could not change directory to \"%s\": %s" +msgstr "\"%s\" ì´ë¦„ì˜ ë””ë ‰í„°ë¦¬ë¡œ ì´ë™í•  수 없습니다: %s" + +#: ../../common/exec.c:272 +#, c-format +msgid "could not read symbolic link \"%s\"" +msgstr "\"%s\" 실벌릭 ë§í¬ë¥¼ ì½ì„ 수 ì—†ìŒ" + +#: ../../common/exec.c:523 +#, c-format +msgid "pclose failed: %s" +msgstr "pclose 실패: %s" + +#: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 +#: ../../common/fe_memutils.c:98 command.c:342 input.c:227 mainloop.c:80 +#: mainloop.c:261 +#, c-format +msgid "out of memory\n" +msgstr "메모리 부족\n" + +#: ../../common/fe_memutils.c:92 +#, c-format +msgid "cannot duplicate null pointer (internal error)\n" +msgstr "null í¬ì¸í„°ë¥¼ 복제할 수 ì—†ìŒ(ë‚´ë¶€ 오류)\n" + +#: ../../common/username.c:45 +#, c-format +msgid "could not look up effective user ID %ld: %s" +msgstr "UID %ld 해당하는 사용ìžë¥¼ ì°¾ì„ ìˆ˜ ì—†ìŒ: %s" + +#: ../../common/username.c:47 command.c:299 +msgid "user does not exist" +msgstr "ì‚¬ìš©ìž ì—†ìŒ" + +#: ../../common/username.c:62 +#, c-format +msgid "user name lookup failure: error code %lu" +msgstr "ì‚¬ìš©ìž ì´ë¦„ 찾기 실패: 오류번호 %lu" + +#: ../../common/wait_error.c:47 +#, c-format +msgid "command not executable" +msgstr "ëª…ë ¹ì„ ì‹¤í–‰í•  수 ì—†ìŒ" + +#: ../../common/wait_error.c:51 +#, c-format +msgid "command not found" +msgstr "명령어를 ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: ../../common/wait_error.c:56 +#, c-format +msgid "child process exited with exit code %d" +msgstr "하위 프로세스가 %d 코드로 종료했ìŒ" + +#: ../../common/wait_error.c:63 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "0x%X ì˜ˆì™¸ì²˜ë¦¬ì— ì˜í•´ 하위 프로세스가 종료ë˜ì—ˆìŒ" + +#: ../../common/wait_error.c:73 +#, c-format +msgid "child process was terminated by signal %s" +msgstr "%s ì‹œê·¸ë„ ê°ì§€ë¡œ 하위 프로세스가 종료ë˜ì—ˆìŒ" + +#: ../../common/wait_error.c:77 +#, c-format +msgid "child process was terminated by signal %d" +msgstr "하위 프로세스가 %d 신호를 받고 종료ë˜ì—ˆìŒ" + +#: ../../common/wait_error.c:82 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "하위 프로세스가 알 수 없는 ìƒíƒœ(%d)로 종료ë˜ì—ˆìŒ" + +#: ../../fe_utils/print.c:354 +#, c-format +msgid "(%lu row)" +msgid_plural "(%lu rows)" +msgstr[0] "(%luê°œ í–‰)" + +#: ../../fe_utils/print.c:2906 +#, c-format +msgid "Interrupted\n" +msgstr "ì¸íŠ¸ëŸ½íŠ¸ë°œìƒ\n" + +#: ../../fe_utils/print.c:2970 +#, c-format +msgid "Cannot add header to table content: column count of %d exceeded.\n" +msgstr "í…Œì´ë¸” ë‚´ìš©ì— í—¤ë”를 추가할 수 ì—†ìŒ: ì—´ 수가 %d개를 초과했습니다.\n" + +#: ../../fe_utils/print.c:3010 +#, c-format +msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" +msgstr "í…Œì´ë¸” ë‚´ìš©ì— ì…€ì„ ì¶”ê°€í•  수 ì—†ìŒ: ì´ ì…€ 수가 %d개를 초과했습니다.\n" + +#: ../../fe_utils/print.c:3259 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "ìž˜ëª»ëœ ì¶œë ¥ í˜•ì‹ (ë‚´ë¶€ 오류): %d" + +#: command.c:129 +#, c-format +msgid "Invalid command \\%s. Try \\? for help.\n" +msgstr "ìž˜ëª»ëœ ëª…ë ¹: \\%s. ë„움ë§ì€ \\?.\n" + +#: command.c:131 +#, c-format +msgid "invalid command \\%s\n" +msgstr "ìž˜ëª»ëœ ëª…ë ¹: \\%s\n" + +#: command.c:142 +#, c-format +msgid "\\%s: extra argument \"%s\" ignored\n" +msgstr "\\%s: \"%s\" 추가 ì¸ìˆ˜ê°€ 무시ë˜ì—ˆìŒ\n" + +#: command.c:297 +#, c-format +msgid "could not get home directory for user ID %ld: %s\n" +msgstr "UID %ld 사용ìžì˜ 홈 디렉터리를 ì°¾ì„ ìˆ˜ ì—†ìŒ: %s\n" + +#: command.c:315 +#, c-format +msgid "\\%s: could not change directory to \"%s\": %s\n" +msgstr "\\%s: \"%s\" 디렉터리로 ì´ë™í•  수 ì—†ìŒ: %s\n" + +#: command.c:330 common.c:553 common.c:611 common.c:1144 +#, c-format +msgid "You are currently not connected to a database.\n" +msgstr "현재 ë°ì´í„°ë² ì´ìŠ¤ì— ì—°ê²°ë˜ì–´ìžˆì§€ 않습니다.\n" + +#: command.c:355 +#, 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:358 +#, 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:574 command.c:647 command.c:746 command.c:1584 +#, c-format +msgid "no query buffer\n" +msgstr "쿼리 버í¼ê°€ ì—†ìŒ\n" + +#: command.c:607 command.c:3547 +#, c-format +msgid "invalid line number: %s\n" +msgstr "ìž˜ëª»ëœ ì¤„ 번호: %s\n" + +#: command.c:640 +#, c-format +msgid "The server (version %s) does not support editing function source.\n" +msgstr "ì´ ì„œë²„(%s 버전)는 함수 소스 편집 ê¸°ëŠ¥ì„ ì œê³µí•˜ì§€ 않습니다.\n" + +#: command.c:721 command.c:792 +msgid "No changes" +msgstr "변경 ë‚´ìš© ì—†ìŒ" + +#: command.c:739 +#, c-format +msgid "The server (version %s) does not support editing view definitions.\n" +msgstr "ì´ ì„œë²„(%s 버전)는 ë·° ì •ì˜ íŽ¸ì§‘ ê¸°ëŠ¥ì„ ì œê³µí•˜ì§€ 않습니다.\n" + +#: command.c:846 +#, c-format +msgid "%s: invalid encoding name or conversion procedure not found\n" +msgstr "%s: 타당치 못한 ì¸ì½”딩 ì´ë¦„ ë˜ëŠ” 문ìžì…‹ 변환 프로시저 ì—†ìŒ\n" + +#: command.c:871 command.c:1962 command.c:3649 common.c:153 common.c:200 +#: common.c:497 common.c:1190 common.c:1218 common.c:1319 copy.c:489 +#: copy.c:699 large_obj.c:156 large_obj.c:191 large_obj.c:253 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.c:875 +msgid "out of memory" +msgstr "메모리 부족" + +#: command.c:878 +msgid "There is no previous error." +msgstr "ì´ì „ 오류가 없습니다." + +#: command.c:972 command.c:1022 command.c:1036 command.c:1053 command.c:1160 +#: command.c:1324 command.c:1564 command.c:1595 +#, c-format +msgid "\\%s: missing required argument\n" +msgstr "\\%s: 필요한 ì¸ìˆ˜ê°€ 빠졌ìŒ\n" + +#: command.c:1085 +msgid "Query buffer is empty." +msgstr "쿼리 버í¼ê°€ 비었ìŒ." + +#: command.c:1095 +msgid "Enter new password: " +msgstr "새 암호를 입력하세요:" + +#: command.c:1096 +msgid "Enter it again: " +msgstr "다시 입력해 주세요:" + +#: command.c:1100 +#, c-format +msgid "Passwords didn't match.\n" +msgstr "암호가 서로 틀립니다.\n" + +#: command.c:1118 +#, c-format +msgid "Password encryption failed.\n" +msgstr "암호 암호화 실패\n" + +#: command.c:1189 command.c:1305 command.c:1569 +#, c-format +msgid "\\%s: error while setting variable\n" +msgstr "\\%s: 변수 지정 실패\n" + +#: command.c:1252 +msgid "Query buffer reset (cleared)." +msgstr "쿼리 ë²„í¼ ì´ˆê¸°í™” (비웠ìŒ)." + +#: command.c:1264 +#, c-format +msgid "Wrote history to file \"%s\".\n" +msgstr "명령내역(history)ì„ \"%s\" 파ì¼ì— 기ë¡í–ˆìŠµë‹ˆë‹¤.\n" + +#: command.c:1329 +#, c-format +msgid "\\%s: environment variable name must not contain \"=\"\n" +msgstr "\\%s: OS 환경 변수 ì´ë¦„ì—는 \"=\" 문ìžê°€ 없어야 함\n" + +#: command.c:1373 +#, c-format +msgid "The server (version %s) does not support showing function source.\n" +msgstr "ì´ ì„œë²„(%s 버전)는 함수 소스 보기 ê¸°ëŠ¥ì„ ì œê³µí•˜ì§€ 않습니다.\n" + +#: command.c:1380 +#, c-format +msgid "function name is required\n" +msgstr "함수 ì´ë¦„ì´ í•„ìš”í•©ë‹ˆë‹¤\n" + +#: command.c:1455 +#, c-format +msgid "The server (version %s) does not support showing view definitions.\n" +msgstr "ì´ ì„œë²„(%s 버전)는 ë·° ì •ì˜ ë³´ê¸° ê¸°ëŠ¥ì„ ì œê³µí•˜ì§€ 않습니다.\n" + +#: command.c:1462 +#, c-format +msgid "view name is required\n" +msgstr "ë·° ì´ë¦„ì´ í•„ìš”í•©ë‹ˆë‹¤\n" + +#: command.c:1549 +msgid "Timing is on." +msgstr "작업수행시간 ë³´ìž„" + +#: command.c:1551 +msgid "Timing is off." +msgstr "작업수행시간 숨김" + +#: command.c:1613 command.c:1633 command.c:2311 command.c:2314 command.c:2317 +#: command.c:2323 command.c:2325 command.c:2333 command.c:2343 command.c:2352 +#: command.c:2366 command.c:2383 command.c:2441 common.c:68 copy.c:332 +#: copy.c:392 copy.c:405 psqlscanslash.l:711 psqlscanslash.l:722 +#: psqlscanslash.l:732 +#, c-format +msgid "%s: %s\n" +msgstr "%s: %s\n" + +#: command.c:1727 +#, c-format +msgid "+ opt(%d) = |%s|\n" +msgstr "+ opt(%d) = |%s|\n" + +#: command.c:1753 startup.c:207 +msgid "Password: " +msgstr "암호: " + +#: command.c:1758 startup.c:209 +#, c-format +msgid "Password for user %s: " +msgstr "%s 사용ìžì˜ 암호: " + +#: command.c:1809 +#, c-format +msgid "" +"All connection parameters must be supplied because no database connection " +"exists\n" +msgstr "" +"현재 ì ‘ì† ì •ë³´ê°€ 없습니다. ì ‘ì†ì„ 위한 ì—°ê²° 관련 매개변수를 지정하세요\n" + +#: command.c:1966 +#, c-format +msgid "Previous connection kept\n" +msgstr "ì´ì „ ì—°ê²°ì´ ìœ ì§€ë˜ì—ˆìŒ\n" + +#: command.c:1970 +#, c-format +msgid "\\connect: %s" +msgstr "\\ì—°ê²°: %s" + +#: command.c:2006 +#, 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:2009 +#, 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:2013 +#, c-format +msgid "You are now connected to database \"%s\" as user \"%s\".\n" +msgstr "ì ‘ì†ì •ë³´: ë°ì´í„°ë² ì´ìФ=\"%s\", 사용ìž=\"%s\".\n" + +#: command.c:2046 +#, c-format +msgid "%s (%s, server %s)\n" +msgstr "%s(%s, %s 서버)\n" + +#: command.c:2054 +#, 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:2091 +#, c-format +msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n" +msgstr "SSL ì—°ê²°ì •ë³´ (프로토콜: %s, 암호화기법: %s, 비트: %s, ì••ì¶•: %s)\n" + +#: command.c:2092 command.c:2093 command.c:2094 +msgid "unknown" +msgstr "알수없ìŒ" + +#: command.c:2095 help.c:46 +msgid "off" +msgstr "off" + +#: command.c:2095 help.c:46 +msgid "on" +msgstr "on" + +#: command.c:2115 +#, 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:2200 +#, c-format +msgid "" +"environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a " +"line number\n" +msgstr "" +"지정한 줄번호를 사용하기 위해서는 PSQL_EDITOR_LINENUMBER_ARG ì´ë¦„ì˜ OS 환경" +"변수가 설정ë˜ì–´ 있어야 합니다.\n" + +#: command.c:2229 +#, c-format +msgid "could not start editor \"%s\"\n" +msgstr "\"%s\" 문서 편집기를 실행시킬 수 ì—†ìŒ\n" + +#: command.c:2231 +#, c-format +msgid "could not start /bin/sh\n" +msgstr "/bin/sh ëª…ë ¹ì„ ì‹¤í–‰í•  수 ì—†ìŒ\n" + +#: command.c:2269 +#, c-format +msgid "could not locate temporary directory: %s\n" +msgstr "임시 디렉터리 경로를 알 수 ì—†ìŒ: %s\n" + +#: command.c:2296 +#, c-format +msgid "could not open temporary file \"%s\": %s\n" +msgstr "\"%s\" 임시 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s\n" + +#: command.c:2570 +#, c-format +msgid "" +"\\pset: allowed formats are unaligned, aligned, wrapped, html, asciidoc, " +"latex, latex-longtable, troff-ms\n" +msgstr "" +"\\pset: 허용ë˜ëŠ” 출력 형ì‹: unaligned, aligned, wrapped, html, asciidoc, " +"latex, latex-longtable, troff-ms\n" + +#: command.c:2589 +#, c-format +msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" +msgstr "\\pset: 사용할 수 있는 ì„  ëª¨ì–‘ì€ ascii, old-ascii, unicode\n" + +#: command.c:2605 +#, c-format +msgid "\\pset: allowed Unicode border line styles are single, double\n" +msgstr "\\pset: 사용할 수 있는 유니코드 í…Œë‘리 ëª¨ì–‘ì€ single, double\n" + +#: command.c:2620 +#, c-format +msgid "\\pset: allowed Unicode column line styles are single, double\n" +msgstr "\\pset: 사용할 수 있는 유니코드 칼럼 ì„  ëª¨ì–‘ì€ single, double\n" + +#: command.c:2635 +#, c-format +msgid "\\pset: allowed Unicode header line styles are single, double\n" +msgstr "\\pset: 사용할 수 있는 유니코드 í—¤ë” ì„  ëª¨ì–‘ì€ single, double\n" + +#: command.c:2787 command.c:2966 +#, c-format +msgid "\\pset: unknown option: %s\n" +msgstr "\\pset: 알 수 없는 옵션: %s\n" + +#: command.c:2805 +#, c-format +msgid "Border style is %d.\n" +msgstr "html í…Œì´ë¸”ì˜ í…Œë‘리를 %d로 지정했습니다.\n" + +#: command.c:2811 +#, c-format +msgid "Target width is unset.\n" +msgstr "ëŒ€ìƒ ë„ˆë¹„ 미지정.\n" + +#: command.c:2813 +#, c-format +msgid "Target width is %d.\n" +msgstr "ëŒ€ìƒ ë„ˆë¹„ëŠ” %d입니다.\n" + +#: command.c:2820 +#, c-format +msgid "Expanded display is on.\n" +msgstr "칼럼 단위 보기 기능 켬.\n" + +#: command.c:2822 +#, c-format +msgid "Expanded display is used automatically.\n" +msgstr "칼럼 단위 보기 ê¸°ëŠ¥ì„ ìžë™ìœ¼ë¡œ 지정 함.\n" + +#: command.c:2824 +#, c-format +msgid "Expanded display is off.\n" +msgstr "칼럼 단위 보기 기능 ë”.\n" + +#: command.c:2831 command.c:2839 +#, c-format +msgid "Field separator is zero byte.\n" +msgstr "필드 구분ìžê°€ 0 ë°”ì´íŠ¸ìž…ë‹ˆë‹¤.\n" + +#: command.c:2833 +#, c-format +msgid "Field separator is \"%s\".\n" +msgstr "필드 êµ¬ë¶„ìž \"%s\".\n" + +#: command.c:2846 +#, c-format +msgid "Default footer is on.\n" +msgstr "기본 ê¼¬ë¦¿ë§ ë³´ê¸° 기능 켬.\n" + +#: command.c:2848 +#, c-format +msgid "Default footer is off.\n" +msgstr "기본 ê¼¬ë¦¿ë§ ë³´ê¸° 기능 ë”.\n" + +#: command.c:2854 +#, c-format +msgid "Output format is %s.\n" +msgstr "현재 출력 형ì‹: %s.\n" + +#: command.c:2860 +#, c-format +msgid "Line style is %s.\n" +msgstr "ì„  모양: %s.\n" + +#: command.c:2867 +#, c-format +msgid "Null display is \"%s\".\n" +msgstr "Null ê°’ì€ \"%s\" 문ìžë¡œ ë³´ì—¬ì§.\n" + +#: command.c:2875 +#, c-format +msgid "Locale-adjusted numeric output is on.\n" +msgstr "ë¡œì¼€ì¼ ë§žì¶¤ ìˆ«ìž í‘œê¸° 기능 켬.\n" + +#: command.c:2877 +#, c-format +msgid "Locale-adjusted numeric output is off.\n" +msgstr "ë¡œì¼€ì¼ ë§žì¶¤ ìˆ«ìž í‘œê¸° 기능 ë”.\n" + +#: command.c:2884 +#, c-format +msgid "Pager is used for long output.\n" +msgstr "긴 ì¶œë ¥ì„ ìœ„í•´ 페ì´ì €ê°€ 사용ë¨.\n" + +#: command.c:2886 +#, c-format +msgid "Pager is always used.\n" +msgstr "í•­ìƒ íŽ˜ì´ì €ê°€ 사용ë¨.\n" + +#: command.c:2888 +#, c-format +msgid "Pager usage is off.\n" +msgstr "화면단위 보기 기능 ë”(ì „ì²´ ìžë£Œ ëª¨ë‘ ë³´ì—¬ì¤Œ).\n" + +#: command.c:2894 +#, 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:2904 command.c:2914 +#, c-format +msgid "Record separator is zero byte.\n" +msgstr "레코드 구분ìžê°€ 0 ë°”ì´íŠ¸ìž„.\n" + +#: command.c:2906 +#, c-format +msgid "Record separator is .\n" +msgstr "레코드 구분ìžëŠ” 줄바꿈 문ìžìž…니다.\n" + +#: command.c:2908 +#, c-format +msgid "Record separator is \"%s\".\n" +msgstr "레코드 êµ¬ë¶„ìž \"%s\".\n" + +#: command.c:2921 +#, c-format +msgid "Table attributes are \"%s\".\n" +msgstr "í…Œì´ë¸” ì†ì„±: \"%s\".\n" + +#: command.c:2924 +#, c-format +msgid "Table attributes unset.\n" +msgstr "í…Œì´ë¸” ì†ì„± ëª¨ë‘ ì§€ì›€.\n" + +#: command.c:2931 +#, c-format +msgid "Title is \"%s\".\n" +msgstr "출력 í…Œì´ë¸”ì˜ ì œëª©: \"%s\"\n" + +#: command.c:2933 +#, c-format +msgid "Title is unset.\n" +msgstr "출력 í…Œì´ë¸”ì˜ ì œëª©ì„ ì§€ì •í•˜ì§€ 않았습니다.\n" + +#: command.c:2940 +#, c-format +msgid "Tuples only is on.\n" +msgstr "ìžë£Œë§Œ 보기 기능 켬.\n" + +#: command.c:2942 +#, c-format +msgid "Tuples only is off.\n" +msgstr "ìžë£Œë§Œ 보기 기능 ë”.\n" + +#: command.c:2948 +#, c-format +msgid "Unicode border line style is \"%s\".\n" +msgstr "유니코드 í…Œë‘리 선문ìž: \"%s\".\n" + +#: command.c:2954 +#, c-format +msgid "Unicode column line style is \"%s\".\n" +msgstr "유니코드 칼럼 선문ìž: \"%s\".\n" + +#: command.c:2960 +#, c-format +msgid "Unicode header line style is \"%s\".\n" +msgstr "유니코드 í—¤ë” ì„ ë¬¸ìž: \"%s\".\n" + +#: command.c:3120 +#, c-format +msgid "\\!: failed\n" +msgstr "\\!: 실패\n" + +#: command.c:3145 common.c:659 +#, c-format +msgid "\\watch cannot be used with an empty query\n" +msgstr "\\watch 명령으로 수행할 쿼리가 없습니다.\n" + +#: command.c:3186 +#, c-format +msgid "%s\t%s (every %gs)\n" +msgstr "%s\t%s (%gì´ˆ 간격)\n" + +#: command.c:3189 +#, c-format +msgid "%s (every %gs)\n" +msgstr "%s (%gì´ˆ 간격)\n" + +#: command.c:3243 command.c:3250 common.c:559 common.c:566 common.c:1173 +#, c-format +msgid "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" +msgstr "" +"********** 쿼리 **********\n" +"%s\n" +"**************************\n" +"\n" + +#: command.c:3442 +#, c-format +msgid "\"%s.%s\" is not a view\n" +msgstr "\"%s.%s\" ë·°(view)ê°€ 아님\n" + +#: command.c:3458 +#, c-format +msgid "could not parse reloptions array\n" +msgstr "reloptions ë°°ì—´ì„ ë¶„ì„í•  수 ì—†ìŒ\n" + +#: common.c:138 +#, c-format +msgid "cannot escape without active connection\n" +msgstr "현재 ì ‘ì†í•œ ì—°ê²° ì—†ì´ëŠ” 특수문ìžì²˜ë¦¬ë¥¼ í•  수 ì—†ìŒ\n" + +#: common.c:371 +#, c-format +msgid "connection to server was lost\n" +msgstr "서버로부터 ì—°ê²°ì´ ëŠì–´ì¡ŒìŠµë‹ˆë‹¤.\n" + +#: common.c:375 +#, c-format +msgid "The connection to the server was lost. Attempting reset: " +msgstr "서버로부터 ì—°ê²°ì´ ëŠì–´ì¡ŒìŠµë‹ˆë‹¤. 다시 ì—°ê²°ì„ ì‹œë„합니다: " + +#: common.c:380 +#, c-format +msgid "Failed.\n" +msgstr "실패.\n" + +#: common.c:387 +#, c-format +msgid "Succeeded.\n" +msgstr "성공.\n" + +#: common.c:487 common.c:936 common.c:1108 +#, c-format +msgid "unexpected PQresultStatus: %d\n" +msgstr "PQresultStatus ë°˜í™˜ê°’ì´ ìž˜ëª»ë¨: %d\n" + +#: common.c:666 +#, c-format +msgid "\\watch cannot be used with COPY\n" +msgstr "\\watch 작업으로 COPY ëª…ë ¹ì€ ì‚¬ìš©í•  수 ì—†ìŒ\n" + +#: common.c:671 +#, c-format +msgid "unexpected result status for \\watch\n" +msgstr "\\watch 쿼리 결과가 비정ìƒì ìž…니다.\n" + +#: common.c:682 common.c:1335 +#, c-format +msgid "Time: %.3f ms\n" +msgstr "작업시간: %.3f ms\n" + +#: common.c:700 +#, c-format +msgid "" +"Asynchronous notification \"%s\" with payload \"%s\" received from server " +"process with PID %d.\n" +msgstr "" +"\"%s\" 비ë™ê¸° 통지를 ë°›ìŒ, 부가정보: \"%s\", 보낸 프로세스: %d.\n" + +#: common.c:703 +#, c-format +msgid "" +"Asynchronous notification \"%s\" received from server process with PID %d.\n" +msgstr "ë™ê¸°í™” 신호 \"%s\" ë°›ìŒ, 해당 서버 프로세스 PID %d.\n" + +#: common.c:761 +#, c-format +msgid "no rows returned for \\gset\n" +msgstr "\\gset 해당 ìžë£Œ ì—†ìŒ\n" + +#: common.c:766 +#, c-format +msgid "more than one row returned for \\gset\n" +msgstr "\\gset 실행 결과가 ë‹¨ì¼ ìžë£Œê°€ 아님\n" + +#: common.c:792 +#, c-format +msgid "could not set variable \"%s\"\n" +msgstr "\"%s\" 변수를 지정할 수 ì—†ìŒ\n" + +#: common.c:1153 +#, 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:1208 +#, c-format +msgid "" +"The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK.\n" +msgstr "" +"서버(%s 버전)ì—서 ON_ERROR_ROLLBACKì— ì‚¬ìš©í•  savepoint를 ì§€ì›í•˜ì§€ 않습니" +"다.\n" + +#: common.c:1264 +#, c-format +msgid "STATEMENT: %s\n" +msgstr "명령 구문: %s\n" + +#: common.c:1307 +#, c-format +msgid "unexpected transaction status (%d)\n" +msgstr "알 수 없는 트랜잭션 ìƒíƒœ (%d)\n" + +#: copy.c:99 +#, c-format +msgid "\\copy: arguments required\n" +msgstr "\\copy: ì¸ìˆ˜ê°€ 필요합니다\n" + +#: copy.c:254 +#, c-format +msgid "\\copy: parse error at \"%s\"\n" +msgstr "\\copy: 구문 오류: \"%s\"\n" + +#: copy.c:256 +#, c-format +msgid "\\copy: parse error at end of line\n" +msgstr "\\copy: 줄 ëì— êµ¬ë¬¸ 오류\n" + +#: copy.c:329 +#, c-format +msgid "could not execute command \"%s\": %s\n" +msgstr "\"%s\" ëª…ë ¹ì„ ì‹¤í–‰í•  수 ì—†ìŒ: %s\n" + +#: copy.c:345 +#, c-format +msgid "could not stat file \"%s\": %s\n" +msgstr "\"%s\" 파ì¼ì˜ ìƒíƒœê°’ì„ ì•Œ 수 ì—†ìŒ: %s\n" + +#: copy.c:349 +#, c-format +msgid "%s: cannot copy from/to a directory\n" +msgstr "%s: 디렉터리부터 ë˜ëŠ” 디렉터리로 복사할 수 ì—†ìŒ\n" + +#: copy.c:386 +#, c-format +msgid "could not close pipe to external command: %s\n" +msgstr "외부 명령으로 파ì´í”„를 ë‹«ì„ ìˆ˜ ì—†ìŒ: %s\n" + +#: copy.c:452 copy.c:463 +#, c-format +msgid "could not write COPY data: %s\n" +msgstr "COPY ìžë£Œë¥¼ 기ë¡í•  수 ì—†ìŒ: %s\n" + +#: copy.c:470 +#, c-format +msgid "COPY data transfer failed: %s" +msgstr "COPY ìžë£Œ 변환 실패: %s" + +#: copy.c:531 +msgid "canceled by user" +msgstr "사용ìžì— ì˜í•´ì„œ 취소ë¨" + +#: copy.c:542 +msgid "" +"Enter data to be copied followed by a newline.\n" +"End with a backslash and a period on a line by itself." +msgstr "" +"한 ì¤„ì— í•œ 레코드씩 ë°ì´í„°ë¥¼ 입력하고\n" +"ìžë£Œìž…ë ¥ì´ ë나면 backslash ì  (\\.) 마지막 줄 처ìŒì— 입력합니다." + +#: copy.c:671 +msgid "aborted because of read failure" +msgstr "ì½ê¸° 실패로 중지ë¨" + +#: copy.c:695 +msgid "trying to exit copy mode" +msgstr "복사 모드를 종료하는 중" + +#: crosstabview.c:125 +#, c-format +msgid "\\crosstabview: statement did not return a result set\n" +msgstr "\\crosstabview: 구문 결과가 ì§‘í•©ì„ ë°˜í™˜í•˜ì§€ 않았ìŒ\n" + +#: crosstabview.c:131 +#, c-format +msgid "\\crosstabview: query must return at least three columns\n" +msgstr "\\crosstabview: 쿼리 결과는 ì ì–´ë„ 세 ê°œì˜ ì¹¼ëŸ¼ì€ ë°˜í™˜ 해야 함\n" + +#: crosstabview.c:158 +#, c-format +msgid "" +"\\crosstabview: vertical and horizontal headers must be different columns\n" +msgstr "" +"\\crosstabview: 행과 ì—´ì˜ ì¹¼ëŸ¼ì´ ê°ê° 다른 칼럼ì´ì–´ì•¼ 함\n" + +#: crosstabview.c:174 +#, c-format +msgid "" +"\\crosstabview: data column must be specified when query returns more than " +"three columns\n" +msgstr "" +"\\crosstabview: 처리할 ì¹¼ëŸ¼ì´ ì„¸ê°œë³´ë‹¤ ë§Žì„ ë•ŒëŠ” ìžë£Œë¡œ 사용할 ì¹¼ëŸ¼ì„ ì§€ì •í•´ì•¼ 함\n" + +#: crosstabview.c:230 +#, c-format +msgid "\\crosstabview: maximum number of columns (%d) exceeded\n" +msgstr "\\crosstabview: 최대 칼럼 수 (%d) 초과\n" + +#: crosstabview.c:398 +#, c-format +msgid "" +"\\crosstabview: query result contains multiple data values for row \"%s\", " +"column \"%s\"\n" +msgstr "" +"\\crosstabview: \"%s\" 로우, \"%s\" ì¹¼ëŸ¼ì— ëŒ€í•´ 쿼리 결과는 다중값ì´ì–´ì•¼ 함\n" + +#: crosstabview.c:646 +#, c-format +msgid "\\crosstabview: column number %d is out of range 1..%d\n" +msgstr "\\crosstabview: %d 번째 ì—´ì€ 0..%d 범위를 벗어났ìŒ\n" + +#: crosstabview.c:671 +#, c-format +msgid "\\crosstabview: ambiguous column name: \"%s\"\n" +msgstr "\\crosstabview: 칼럼 ì´ë¦„ì´ ì¤‘ë³µë˜ì—ˆìŒ: \"%s\"\n" + +#: crosstabview.c:679 +#, c-format +msgid "\\crosstabview: column name not found: \"%s\"\n" +msgstr "\\crosstabview: 칼럼 ì´ë¦„ ì—†ìŒ: \"%s\"\n" + +#: describe.c:71 describe.c:340 describe.c:597 describe.c:727 describe.c:870 +#: describe.c:990 describe.c:1060 describe.c:3035 describe.c:3240 +#: describe.c:3330 describe.c:3578 describe.c:3718 describe.c:3950 +#: describe.c:4025 describe.c:4036 describe.c:4098 describe.c:4518 +#: describe.c:4601 +msgid "Schema" +msgstr "스키마" + +#: describe.c:72 describe.c:160 describe.c:226 describe.c:234 describe.c:341 +#: describe.c:598 describe.c:728 describe.c:789 describe.c:871 describe.c:1061 +#: describe.c:3036 describe.c:3162 describe.c:3241 describe.c:3331 +#: describe.c:3410 describe.c:3579 describe.c:3643 describe.c:3719 +#: describe.c:3951 describe.c:4026 describe.c:4037 describe.c:4099 +#: describe.c:4291 describe.c:4375 describe.c:4599 +msgid "Name" +msgstr "ì´ë¦„" + +#: describe.c:73 describe.c:353 describe.c:399 describe.c:416 +msgid "Result data type" +msgstr "반환 ìžë£Œí˜•" + +#: describe.c:81 describe.c:94 describe.c:98 describe.c:354 describe.c:400 +#: describe.c:417 +msgid "Argument data types" +msgstr "ì¸ìž ìžë£Œí˜•" + +#: describe.c:105 describe.c:170 describe.c:257 describe.c:462 describe.c:646 +#: describe.c:743 describe.c:814 describe.c:1063 describe.c:1676 +#: describe.c:2836 describe.c:3069 describe.c:3193 describe.c:3267 +#: describe.c:3340 describe.c:3423 describe.c:3491 describe.c:3586 +#: describe.c:3652 describe.c:3720 describe.c:3856 describe.c:3896 +#: describe.c:3967 describe.c:4029 describe.c:4038 describe.c:4100 +#: describe.c:4317 describe.c:4397 describe.c:4532 describe.c:4602 +#: large_obj.c:289 large_obj.c:299 +msgid "Description" +msgstr "설명" + +#: describe.c:123 +msgid "List of aggregate functions" +msgstr "통계 함수 목ë¡" + +#: describe.c:147 +#, c-format +msgid "The server (version %s) does not support access methods.\n" +msgstr "서버(%s 버전)ì—서 ì ‘ê·¼ ë°©ë²•ì„ ì§€ì›í•˜ì§€ 않습니다.\n" + +#: describe.c:161 +msgid "Index" +msgstr "ì¸ë±ìФ" + +#: describe.c:162 describe.c:360 describe.c:405 describe.c:422 describe.c:877 +#: describe.c:999 describe.c:1645 describe.c:3044 describe.c:3242 +#: describe.c:4394 +msgid "Type" +msgstr "종류" + +#: describe.c:169 describe.c:4296 +msgid "Handler" +msgstr "핸들러" + +#: describe.c:188 +msgid "List of access methods" +msgstr "ì ‘ê·¼ 방법 목ë¡" + +#: describe.c:213 +#, c-format +msgid "The server (version %s) does not support tablespaces.\n" +msgstr "서버(%s 버전)ì—서 í…Œì´ë¸”스페ì´ìŠ¤ë¥¼ ì§€ì›í•˜ì§€ 않습니다.\n" + +#: describe.c:227 describe.c:235 describe.c:450 describe.c:636 describe.c:790 +#: describe.c:989 describe.c:3045 describe.c:3166 describe.c:3412 +#: describe.c:3644 describe.c:4292 describe.c:4376 large_obj.c:288 +msgid "Owner" +msgstr "소유주" + +#: describe.c:228 describe.c:236 +msgid "Location" +msgstr "위치" + +#: describe.c:247 describe.c:2647 +msgid "Options" +msgstr "옵션" + +#: describe.c:252 describe.c:609 describe.c:806 describe.c:3061 +#: describe.c:3065 +msgid "Size" +msgstr "í¬ê¸°" + +#: describe.c:274 +msgid "List of tablespaces" +msgstr "í…Œì´ë¸”스페ì´ìФ 목ë¡" + +#: describe.c:314 +#, c-format +msgid "\\df only takes [antwS+] as options\n" +msgstr "\\df는 [antwS+]ë§Œ 옵션으로 사용함\n" + +#: describe.c:322 +#, c-format +msgid "\\df does not take a \"w\" option with server version %s\n" +msgstr "\\df ëª…ë ¹ì€ %s 버전 서버ì—서는 \"w\" ì˜µì…˜ì„ ì‚¬ìš©í•˜ì§€ 않ìŒ\n" + +#. translator: "agg" is short for "aggregate" +#: describe.c:356 describe.c:402 describe.c:419 +msgid "agg" +msgstr "집계" + +#: describe.c:357 +msgid "window" +msgstr "ì°½" + +#: describe.c:358 describe.c:403 describe.c:420 describe.c:1197 +msgid "trigger" +msgstr "트리거" + +#: describe.c:359 describe.c:404 describe.c:421 +msgid "normal" +msgstr "ì¼ë°˜" + +#: describe.c:432 +msgid "immutable" +msgstr "immutable" + +#: describe.c:433 +msgid "stable" +msgstr "stable" + +#: describe.c:434 +msgid "volatile" +msgstr "volatile" + +#: describe.c:435 +msgid "Volatility" +msgstr "휘발성" + +#: describe.c:443 +msgid "restricted" +msgstr "엄격함" + +#: describe.c:444 +msgid "safe" +msgstr "safe" + +#: describe.c:445 +msgid "unsafe" +msgstr "unsafe" + +#: describe.c:446 +msgid "Parallel" +msgstr "병렬처리" + +#: describe.c:451 +msgid "definer" +msgstr "definer" + +#: describe.c:452 +msgid "invoker" +msgstr "invoker" + +#: describe.c:453 +msgid "Security" +msgstr "보안" + +#: describe.c:460 +msgid "Language" +msgstr "언어" + +#: describe.c:461 +msgid "Source code" +msgstr "소스 코드" + +#: describe.c:560 +msgid "List of functions" +msgstr "함수 목ë¡" + +#: describe.c:608 +msgid "Internal name" +msgstr "ë‚´ë¶€ ì´ë¦„" + +#: describe.c:630 +msgid "Elements" +msgstr "요소" + +#: describe.c:686 +msgid "List of data types" +msgstr "ìžë£Œí˜• 목ë¡" + +#: describe.c:729 +msgid "Left arg type" +msgstr "왼쪽 ì¸ìˆ˜ ìžë£Œí˜•" + +#: describe.c:730 +msgid "Right arg type" +msgstr "오른쪽 ì¸ìˆ˜ ìžë£Œí˜•" + +#: describe.c:731 +msgid "Result type" +msgstr "반환 ìžë£Œí˜•" + +#: describe.c:736 describe.c:3482 describe.c:3855 +msgid "Function" +msgstr "함수" + +#: describe.c:761 +msgid "List of operators" +msgstr "ì—°ì‚°ìž ëª©ë¡" + +#: describe.c:791 +msgid "Encoding" +msgstr "ì¸ì½”딩" + +#: describe.c:796 describe.c:3580 +msgid "Collate" +msgstr "Collate" + +#: describe.c:797 describe.c:3581 +msgid "Ctype" +msgstr "Ctype" + +#: describe.c:810 +msgid "Tablespace" +msgstr "í…Œì´ë¸”스페ì´ìФ" + +#: describe.c:832 +msgid "List of databases" +msgstr "ë°ì´í„°ë² ì´ìФ 목ë¡" + +#: describe.c:872 describe.c:992 describe.c:3037 +msgid "table" +msgstr "í…Œì´ë¸”" + +#: describe.c:873 describe.c:3038 +msgid "view" +msgstr "ë·°(view)" + +#: describe.c:874 describe.c:3039 +msgid "materialized view" +msgstr "êµ¬ì²´í™”ëœ ë·°" + +#: describe.c:875 describe.c:994 describe.c:3041 +msgid "sequence" +msgstr "시퀀스" + +#: describe.c:876 describe.c:3043 +msgid "foreign table" +msgstr "외부 í…Œì´ë¸”" + +#: describe.c:888 +msgid "Column privileges" +msgstr "칼럼 접근권한" + +#: describe.c:919 +msgid "Policies" +msgstr "ì •ì±…" + +#: describe.c:945 describe.c:4749 describe.c:4753 +msgid "Access privileges" +msgstr "액세스 권한" + +#: describe.c:976 +#, c-format +msgid "The server (version %s) does not support altering default privileges.\n" +msgstr "ì´ ì„œë²„(%s 버전)는 기본 접근권한 변경 ê¸°ëŠ¥ì„ ì œê³µí•˜ì§€ 않습니다.\n" + +#: describe.c:996 +msgid "function" +msgstr "함수" + +#: describe.c:998 +msgid "type" +msgstr "type" + +#: describe.c:1022 +msgid "Default access privileges" +msgstr "기본 접근권한" + +#: describe.c:1062 +msgid "Object" +msgstr "개체" + +#: describe.c:1076 +msgid "table constraint" +msgstr "í…Œì´ë¸” 제약 ì¡°ê±´" + +#: describe.c:1098 +msgid "domain constraint" +msgstr "ë„ë©”ì¸ ì œì•½ì¡°ê±´" + +#: describe.c:1126 +msgid "operator class" +msgstr "ì—°ì‚°ìž í´ëž˜ìФ" + +#: describe.c:1155 +msgid "operator family" +msgstr "ì—°ì‚°ìž ë¶€ë¥˜" + +#: describe.c:1177 +msgid "rule" +msgstr "룰(rule)" + +#: describe.c:1219 +msgid "Object descriptions" +msgstr "개체 설명" + +#: describe.c:1273 +#, c-format +msgid "Did not find any relation named \"%s\".\n" +msgstr "\"%s\" ì´ë¦„ì„ ë¦´ë ˆì´ì…˜(relation) ì—†ìŒ.\n" + +#: describe.c:1483 +#, c-format +msgid "Did not find any relation with OID %s.\n" +msgstr "%s oidì˜ ì–´ë–¤ 릴레ì´ì…˜(relation)ë„ ì°¾ì„ ìˆ˜ ì—†ìŒ.\n" + +#: describe.c:1589 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "로그 미사용 í…Œì´ë¸” \"%s.%s\"" + +#: describe.c:1592 +#, c-format +msgid "Table \"%s.%s\"" +msgstr "\"%s.%s\" í…Œì´ë¸”" + +#: describe.c:1596 +#, c-format +msgid "View \"%s.%s\"" +msgstr "\"%s.%s\" ë·°(view)" + +#: describe.c:1601 +#, c-format +msgid "Unlogged materialized view \"%s.%s\"" +msgstr "트랜잭션 로그를 남기지 ì•Šì€ êµ¬ì²´í™”ëœ ë·° \"%s.%s\"" + +#: describe.c:1604 +#, c-format +msgid "Materialized view \"%s.%s\"" +msgstr "Materialized ë·° \"%s.%s\"" + +#: describe.c:1608 +#, c-format +msgid "Sequence \"%s.%s\"" +msgstr "\"%s.%s\" 시퀀스" + +#: describe.c:1613 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "\"%s.%s\" 로그 미사용 ì¸ë±ìФ" + +#: describe.c:1616 +#, c-format +msgid "Index \"%s.%s\"" +msgstr "\"%s.%s\" ì¸ë±ìФ" + +#: describe.c:1621 +#, c-format +msgid "Special relation \"%s.%s\"" +msgstr "\"%s.%s\" 특수 릴레ì´ì…˜(relation)" + +#: describe.c:1625 +#, c-format +msgid "TOAST table \"%s.%s\"" +msgstr "\"%s.%s\" TOAST í…Œì´ë¸”" + +#: describe.c:1629 +#, c-format +msgid "Composite type \"%s.%s\"" +msgstr "\"%s.%s\" 복합ìžë£Œí˜•" + +#: describe.c:1633 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "\"%s.%s\" 외부 í…Œì´ë¸”" + +#: describe.c:1644 +msgid "Column" +msgstr "필드명" + +#: describe.c:1653 +msgid "Modifiers" +msgstr "기타 ì¡°ê±´" + +#: describe.c:1658 +msgid "Value" +msgstr "ê°’" + +#: describe.c:1661 +msgid "Definition" +msgstr "ì •ì˜" + +#: describe.c:1664 describe.c:4312 describe.c:4396 describe.c:4467 +#: describe.c:4531 +msgid "FDW Options" +msgstr "FDW 옵션" + +#: describe.c:1668 +msgid "Storage" +msgstr "스토리지" + +#: describe.c:1671 +msgid "Stats target" +msgstr "통계수집량" + +#: describe.c:1721 +#, c-format +msgid "collate %s" +msgstr "collate %s" + +#: describe.c:1729 +msgid "not null" +msgstr "Null 아님" + +#. translator: default values of column definitions +#: describe.c:1739 +#, c-format +msgid "default %s" +msgstr "초기값 %s" + +#: describe.c:1854 +msgid "primary key, " +msgstr "기본키, " + +#: describe.c:1856 +msgid "unique, " +msgstr "고유, " + +#: describe.c:1862 +#, c-format +msgid "for table \"%s.%s\"" +msgstr "ì ìš©í…Œì´ë¸”: \"%s.%s\"" + +#: describe.c:1866 +#, c-format +msgid ", predicate (%s)" +msgstr ", predicate (%s)" + +#: describe.c:1869 +msgid ", clustered" +msgstr ", í´ëŸ¬ìФë¨" + +#: describe.c:1872 +msgid ", invalid" +msgstr ", 잘못ë¨" + +#: describe.c:1875 +msgid ", deferrable" +msgstr "" + +#: describe.c:1878 +msgid ", initially deferred" +msgstr "" + +#: describe.c:1881 +msgid ", replica identity" +msgstr "" + +#: describe.c:1916 +#, c-format +msgid "Owned by: %s" +msgstr "소유주: %s" + +#: describe.c:1976 +msgid "Indexes:" +msgstr "ì¸ë±ìŠ¤ë“¤:" + +#: describe.c:2060 +msgid "Check constraints:" +msgstr "ì²´í¬ ì œì•½ ì¡°ê±´:" + +#: describe.c:2091 +msgid "Foreign-key constraints:" +msgstr "참조키 제약 ì¡°ê±´:" + +#: describe.c:2122 +msgid "Referenced by:" +msgstr "다ìŒì—서 참조ë¨:" + +#: describe.c:2167 +msgid "Policies:" +msgstr "" + +#: describe.c:2170 +msgid "Policies (forced row security enabled):" +msgstr "" + +#: describe.c:2173 +msgid "Policies (row security enabled): (none)" +msgstr "" + +#: describe.c:2176 +msgid "Policies (forced row security enabled): (none)" +msgstr "" + +#: describe.c:2179 +msgid "Policies (row security disabled):" +msgstr "" + +#: describe.c:2279 describe.c:2329 +msgid "Rules:" +msgstr "룰(rule)들:" + +#: describe.c:2282 +msgid "Disabled rules:" +msgstr "ì‚¬ìš©ì¤‘ì§€ëœ ê·œì¹™:" + +#: describe.c:2285 +msgid "Rules firing always:" +msgstr "í•­ìƒ ë°œìƒí•˜ëŠ” 규칙:" + +#: describe.c:2288 +msgid "Rules firing on replica only:" +msgstr "복제본ì—서만 ë°œìƒí•˜ëŠ” 규칙:" + +#: describe.c:2312 +msgid "View definition:" +msgstr "ë·° ì •ì˜:" + +#: describe.c:2447 +msgid "Triggers:" +msgstr "트리거들:" + +#: describe.c:2451 +msgid "Disabled user triggers:" +msgstr "ì‚¬ìš©ì¤‘ì§€ëœ ì‚¬ìš©ìž íŠ¸ë¦¬ê±°:" + +#: describe.c:2453 +msgid "Disabled triggers:" +msgstr "ì‚¬ìš©ì¤‘ì§€ëœ íŠ¸ë¦¬ê±°:" + +#: describe.c:2456 +msgid "Disabled internal triggers:" +msgstr "ì‚¬ìš©ì¤‘ì§€ëœ ë‚´ë¶€ 트리거:" + +#: describe.c:2459 +msgid "Triggers firing always:" +msgstr "í•­ìƒ ë°œìƒí•˜ëŠ” 트리거:" + +#: describe.c:2462 +msgid "Triggers firing on replica only:" +msgstr "복제본ì—서만 ë°œìƒí•˜ëŠ” 트리거:" + +#: describe.c:2541 +msgid "Inherits" +msgstr "ìƒì†" + +#: describe.c:2580 +#, c-format +msgid "Number of child tables: %d (Use \\d+ to list them.)" +msgstr "하위 í…Œì´ë¸” 수: %d (\\d+ 명령으로 ë³¼ 수 있ìŒ)" + +#: describe.c:2587 +msgid "Child tables" +msgstr "하위 í…Œì´ë¸”" + +#: describe.c:2609 +#, c-format +msgid "Typed table of type: %s" +msgstr "" + +#: describe.c:2623 +msgid "Replica Identity" +msgstr "" + +#: describe.c:2636 +msgid "Has OIDs: yes" +msgstr "OID 사용: yes" + +#: describe.c:2724 +#, 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:2736 +#, c-format +msgid ", tablespace \"%s\"" +msgstr ", \"%s\" í…Œì´ë¸”스페ì´ìФ" + +#: describe.c:2829 +msgid "List of roles" +msgstr "롤 목ë¡" + +#: describe.c:2831 +msgid "Role name" +msgstr "롤 ì´ë¦„" + +#: describe.c:2832 +msgid "Attributes" +msgstr "ì†ì„±" + +#: describe.c:2833 +msgid "Member of" +msgstr "ì†Œì† ê·¸ë£¹:" + +#: describe.c:2844 +msgid "Superuser" +msgstr "슈í¼ìœ ì €" + +#: describe.c:2847 +msgid "No inheritance" +msgstr "ìƒì† ì—†ìŒ" + +#: describe.c:2850 +msgid "Create role" +msgstr "롤 만들기" + +#: describe.c:2853 +msgid "Create DB" +msgstr "DB 만들기" + +#: describe.c:2856 +msgid "Cannot login" +msgstr "로그ì¸í•  수 ì—†ìŒ" + +#: describe.c:2860 +msgid "Replication" +msgstr "복제" + +#: describe.c:2864 +msgid "Bypass RLS" +msgstr "" + +#: describe.c:2873 +msgid "No connections" +msgstr "ì—°ê²° ì—†ìŒ" + +#: describe.c:2875 +#, c-format +msgid "%d connection" +msgid_plural "%d connections" +msgstr[0] "%dê°œ ì—°ê²°" + +#: describe.c:2885 +msgid "Password valid until " +msgstr "" + +#: describe.c:2941 +msgid "Role" +msgstr "롤" + +#: describe.c:2942 +msgid "Database" +msgstr "ë°ì´í„°ë² ì´ìФ" + +#: describe.c:2943 +msgid "Settings" +msgstr "설정" + +#: describe.c:2953 +#, c-format +msgid "No per-database role settings support in this server version.\n" +msgstr "ì´ ë²„ì „ì˜ ì„œë²„ëŠ” ë°ì´í„°ë² ì´ìФ 단위 롤 ì„¤ì •ì´ ì•ˆë©ë‹ˆë‹¤.\n" + +#: describe.c:2964 +#, c-format +msgid "No matching settings found.\n" +msgstr "찾는 ì„¤ì •ì´ ì—†ìŠµë‹ˆë‹¤.\n" + +#: describe.c:2966 +#, c-format +msgid "No settings found.\n" +msgstr "설정 ì—†ìŒ.\n" + +#: describe.c:2971 +msgid "List of settings" +msgstr "설정 목ë¡" + +#: describe.c:3040 +msgid "index" +msgstr "ì¸ë±ìФ" + +#: describe.c:3042 +msgid "special" +msgstr "특수" + +#: describe.c:3050 describe.c:4519 +msgid "Table" +msgstr "í…Œì´ë¸”" + +#: describe.c:3126 +#, c-format +msgid "No matching relations found.\n" +msgstr "ê²€ìƒ‰ì¡°ê±´ì— ì¼ì¹˜í•˜ëŠ” 릴레ì´ì…˜(relation) ì—†ìŒ.\n" + +#: describe.c:3128 +#, c-format +msgid "No relations found.\n" +msgstr "릴레ì´ì…˜(relation) ì—†ìŒ.\n" + +#: describe.c:3133 +msgid "List of relations" +msgstr "릴레ì´ì…˜(relation) 목ë¡" + +#: describe.c:3170 +msgid "Trusted" +msgstr "신뢰ë¨" + +#: describe.c:3178 +msgid "Internal Language" +msgstr "ë‚´ë¶€ 언어" + +#: describe.c:3179 +msgid "Call Handler" +msgstr "호출 핸들러" + +#: describe.c:3180 describe.c:4299 +msgid "Validator" +msgstr "유효성 검사기" + +#: describe.c:3183 +msgid "Inline Handler" +msgstr "ì¸ë¼ì¸ 핸들러" + +#: describe.c:3211 +msgid "List of languages" +msgstr "언어 목ë¡" + +#: describe.c:3255 +msgid "Modifier" +msgstr "기타 ì¡°ê±´" + +#: describe.c:3256 +msgid "Check" +msgstr "ì²´í¬" + +#: describe.c:3298 +msgid "List of domains" +msgstr "ë„ë©”ì¸(domain) 목ë¡" + +#: describe.c:3332 +msgid "Source" +msgstr "소스" + +#: describe.c:3333 +msgid "Destination" +msgstr "설명" + +#: describe.c:3334 describe.c:3483 +msgid "no" +msgstr "아니오" + +#: describe.c:3334 describe.c:3485 +msgid "yes" +msgstr "예" + +#: describe.c:3335 +msgid "Default?" +msgstr "초기값?" + +#: describe.c:3372 +msgid "List of conversions" +msgstr "문ìžì½”드변환규칙(conversion) 목ë¡" + +#: describe.c:3411 +msgid "Event" +msgstr "ì´ë²¤íЏ" + +#: describe.c:3413 +msgid "enabled" +msgstr "활성화" + +#: describe.c:3414 +msgid "replica" +msgstr "" + +#: describe.c:3415 +msgid "always" +msgstr "" + +#: describe.c:3416 +msgid "disabled" +msgstr "비활성화" + +#: describe.c:3417 +msgid "Enabled" +msgstr "활성화" + +#: describe.c:3418 +msgid "Procedure" +msgstr "프로시져" + +#: describe.c:3419 +msgid "Tags" +msgstr "" + +#: describe.c:3438 +msgid "List of event triggers" +msgstr "ì´ë²¤íЏ 트리거 목ë¡" + +#: describe.c:3480 +msgid "Source type" +msgstr "Source ìžë£Œí˜•" + +#: describe.c:3481 +msgid "Target type" +msgstr "Target ìžë£Œí˜•" + +#: describe.c:3484 +msgid "in assignment" +msgstr "in assignment" + +#: describe.c:3486 +msgid "Implicit?" +msgstr "Implicit?" + +#: describe.c:3537 +msgid "List of casts" +msgstr "í˜•ë³€í™˜ìž ëª©ë¡" + +#: describe.c:3565 +#, c-format +msgid "The server (version %s) does not support collations.\n" +msgstr "ì´ ì„œë²„(%s 버전)는 ë¬¸ìž ì •ë ¬(collation) ê¸°ëŠ¥ì„ ì§€ì›í•˜ì§€ 않습니다.\n" + +#: describe.c:3616 +msgid "List of collations" +msgstr "ë¬¸ìž ì •ë ¬ 목ë¡" + +#: describe.c:3675 +msgid "List of schemas" +msgstr "스키마(schema) 목ë¡" + +#: describe.c:3700 describe.c:3938 describe.c:4009 describe.c:4080 +#, c-format +msgid "The server (version %s) does not support full text search.\n" +msgstr "ì´ ì„œë²„(%s 버전)ì—서 전문 ê²€ìƒ‰ì„ ì§€ì›í•˜ì§€ 않습니다.\n" + +#: describe.c:3735 +msgid "List of text search parsers" +msgstr "í…스트 검색 파서 목ë¡" + +#: describe.c:3778 +#, c-format +msgid "Did not find any text search parser named \"%s\".\n" +msgstr "\"%s\"(ì´)ë¼ëŠ” í…스트 검색 파서를 찾지 못했습니다.\n" + +#: describe.c:3853 +msgid "Start parse" +msgstr "구문 ë¶„ì„ ì‹œìž‘" + +#: describe.c:3854 +msgid "Method" +msgstr "방법" + +#: describe.c:3858 +msgid "Get next token" +msgstr "ë‹¤ìŒ í† í° ê°€ì ¸ì˜¤ê¸°" + +#: describe.c:3860 +msgid "End parse" +msgstr "구문 ë¶„ì„ ì¢…ë£Œ" + +#: describe.c:3862 +msgid "Get headline" +msgstr "헤드ë¼ì¸ 가져오기" + +#: describe.c:3864 +msgid "Get token types" +msgstr "í† í° í˜•ì‹ ê°€ì ¸ì˜¤ê¸°" + +#: describe.c:3874 +#, c-format +msgid "Text search parser \"%s.%s\"" +msgstr "\"%s.%s\" í…스트 검색 파서" + +#: describe.c:3876 +#, c-format +msgid "Text search parser \"%s\"" +msgstr "\"%s\" í…스트 검색 파서" + +#: describe.c:3895 +msgid "Token name" +msgstr "í† í° ì´ë¦„" + +#: describe.c:3906 +#, c-format +msgid "Token types for parser \"%s.%s\"" +msgstr "\"%s.%s\" íŒŒì„œì˜ í† í° í˜•ì‹" + +#: describe.c:3908 +#, c-format +msgid "Token types for parser \"%s\"" +msgstr "\"%s\" íŒŒì„œì˜ í† í° í˜•ì‹" + +#: describe.c:3961 +msgid "Template" +msgstr "템플릿" + +#: describe.c:3962 +msgid "Init options" +msgstr "초기화 옵션" + +#: describe.c:3984 +msgid "List of text search dictionaries" +msgstr "í…스트 검색 사전 목ë¡" + +#: describe.c:4027 +msgid "Init" +msgstr "초기화" + +#: describe.c:4028 +msgid "Lexize" +msgstr "Lexize" + +#: describe.c:4055 +msgid "List of text search templates" +msgstr "í…스트 검색 템플릿 목ë¡" + +#: describe.c:4115 +msgid "List of text search configurations" +msgstr "í…스트 검색 구성 목ë¡" + +#: describe.c:4159 +#, c-format +msgid "Did not find any text search configuration named \"%s\".\n" +msgstr "\"%s\"(ì´)ë¼ëŠ” í…스트 검색 êµ¬ì„±ì„ ì°¾ì§€ 못했습니다.\n" + +#: describe.c:4225 +msgid "Token" +msgstr "토í°" + +#: describe.c:4226 +msgid "Dictionaries" +msgstr "사전" + +#: describe.c:4237 +#, c-format +msgid "Text search configuration \"%s.%s\"" +msgstr "í…스트 검색 구성 \"%s.%s\"" + +#: describe.c:4240 +#, c-format +msgid "Text search configuration \"%s\"" +msgstr "í…스트 검색 구성 \"%s\"" + +#: describe.c:4244 +#, c-format +msgid "" +"\n" +"Parser: \"%s.%s\"" +msgstr "" +"\n" +"파서: \"%s.%s\"" + +#: describe.c:4247 +#, c-format +msgid "" +"\n" +"Parser: \"%s\"" +msgstr "" +"\n" +"파서: \"%s\"" + +#: describe.c:4281 +#, c-format +msgid "The server (version %s) does not support foreign-data wrappers.\n" +msgstr "ì´ ì„œë²„(%s 버전)ì—서 외부 ë°ì´í„° 래í¼ë¥¼ ì§€ì›í•˜ì§€ 않습니다.\n" + +#: describe.c:4339 +msgid "List of foreign-data wrappers" +msgstr "외부 ë°ì´í„° ëž˜í¼ ëª©ë¡" + +#: describe.c:4364 +#, c-format +msgid "The server (version %s) does not support foreign servers.\n" +msgstr "ì´ ì„œë²„(%s 버전)ì—서 외부 서버를 ì§€ì›í•˜ì§€ 않습니다.\n" + +#: describe.c:4377 +msgid "Foreign-data wrapper" +msgstr "외부 ë°ì´í„° 래í¼" + +#: describe.c:4395 describe.c:4600 +msgid "Version" +msgstr "버전" + +#: describe.c:4421 +msgid "List of foreign servers" +msgstr "외부 서버 목ë¡" + +#: describe.c:4446 +#, c-format +msgid "The server (version %s) does not support user mappings.\n" +msgstr "ì´ ì„œë²„(%s 버전)ì—서 ì‚¬ìš©ìž ë§¤í•‘ì„ ì§€ì›í•˜ì§€ 않습니다.\n" + +#: describe.c:4456 describe.c:4520 +msgid "Server" +msgstr "서버" + +#: describe.c:4457 +msgid "User name" +msgstr "ì‚¬ìš©ìž ì´ë¦„" + +#: describe.c:4482 +msgid "List of user mappings" +msgstr "ì‚¬ìš©ìž ë§¤í•‘ 목ë¡" + +#: describe.c:4507 +#, c-format +msgid "The server (version %s) does not support foreign tables.\n" +msgstr "ì´ ì„œë²„(%s 버전)ì—서 외부 í…Œì´ë¸”ì„ ì§€ì›í•˜ì§€ 않습니다.\n" + +#: describe.c:4560 +msgid "List of foreign tables" +msgstr "외부 í…Œì´ë¸” 목ë¡" + +#: describe.c:4585 describe.c:4642 +#, c-format +msgid "The server (version %s) does not support extensions.\n" +msgstr "ì´ ì„œë²„(%s 버전)ì—서 í™•ìž¥ê¸°ëŠ¥ì„ ì§€ì›í•˜ì§€ 않습니다.\n" + +#: describe.c:4617 +msgid "List of installed extensions" +msgstr "ì„¤ì¹˜ëœ í™•ìž¥ê¸°ëŠ¥ 목ë¡" + +#: describe.c:4670 +#, c-format +msgid "Did not find any extension named \"%s\".\n" +msgstr "\"%s\" ì´ë¦„ì˜ í™•ìž¥ 기능 ëª¨ë“ˆì„ ì°¾ì„ ìˆ˜ 없습니다.\n" + +#: describe.c:4673 +#, c-format +msgid "Did not find any extensions.\n" +msgstr "추가할 확장 기능 ëª¨ë“ˆì´ ì—†ìŒ.\n" + +#: describe.c:4717 +msgid "Object Description" +msgstr "ê°ì²´ 설명" + +#: describe.c:4726 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "\"%s\" 확장 기능 ì•ˆì— í¬í•¨ëœ ê°ì²´ë“¤" + +#: help.c:63 +#, c-format +msgid "%s\n" +msgstr "%s\n" + +#: help.c:74 +#, c-format +msgid "" +"psql is the PostgreSQL interactive terminal.\n" +"\n" +msgstr "" +"psqlì€ PostgreSQL ëŒ€í™”ì‹ í„°ë¯¸ë„입니다.\n" +"\n" + +#: help.c:75 help.c:333 help.c:367 help.c:394 +#, c-format +msgid "Usage:\n" +msgstr "사용법:\n" + +#: help.c:76 +#, c-format +msgid "" +" psql [OPTION]... [DBNAME [USERNAME]]\n" +"\n" +msgstr "" +" psql [OPTION]... [DBNAME [USERNAME]]\n" +"\n" + +#: help.c:78 +#, c-format +msgid "General options:\n" +msgstr "ì¼ë°˜ 옵션:\n" + +#: help.c:83 +#, c-format +msgid "" +" -c, --command=COMMAND run only single command (SQL or internal) and " +"exit\n" +msgstr "" +" -c, --command=COMMAND í•˜ë‚˜ì˜ ëª…ë ¹(SQL ë˜ëŠ” ë‚´ë¶€ 명령)ë§Œ 실행하고 ë냄\n" + +#: help.c:84 +#, c-format +msgid "" +" -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" +msgstr " -d, --dbname=DBNAME ì—°ê²°í•  ë°ì´í„°ë² ì´ìФ ì´ë¦„(기본 ê°’: \"%s\")\n" + +#: help.c:85 +#, c-format +msgid " -f, --file=FILENAME execute commands from file, then exit\n" +msgstr " -f, --file=FILENAME íŒŒì¼ ì•ˆì— ì§€ì •í•œ ëª…ë ¹ì„ ì‹¤í–‰í•˜ê³  ë냄\n" + +#: help.c:86 +#, c-format +msgid " -l, --list list available databases, then exit\n" +msgstr "" +" -l, --list 사용 가능한 ë°ì´í„°ë² ì´ìФ 목ë¡ì„ 표시하고 ë냄\n" + +#: help.c:87 +#, c-format +msgid "" +" -v, --set=, --variable=NAME=VALUE\n" +" set psql variable NAME to VALUE\n" +" (e.g., -v ON_ERROR_STOP=1)\n" +msgstr "" +" -v, --set=, --variable=NAME=VALUE\n" +" psql 변수 NAMEì„ VALUE로 설정\n" +" (예, -v ON_ERROR_STOP=1)\n" + +#: help.c:90 +#, c-format +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version 버전 정보를 보여주고 마침\n" + +#: help.c:91 +#, c-format +msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" +msgstr " -X, --no-psqlrc 시작 파ì¼(~/.psqlrc)ì„ ì½ì§€ 않ìŒ\n" + +#: help.c:92 +#, c-format +msgid "" +" -1 (\"one\"), --single-transaction\n" +" execute as a single transaction (if non-" +"interactive)\n" +msgstr "" +" -1 (\"one\"), --single-transaction\n" +" 명령 파ì¼ì„ í•˜ë‚˜ì˜ íŠ¸ëžœìž­ì…˜ìœ¼ë¡œ 실행\n" + +#: help.c:94 +#, c-format +msgid " -?, --help[=options] show this help, then exit\n" +msgstr " -?, --help[=options] ì´ ë„움ë§ì„ 표시하고 종료\n" + +#: help.c:95 +#, c-format +msgid " --help=commands list backslash commands, then exit\n" +msgstr "" +" --help=commands psql 내장명령어(\\문ìžë¡œ 시작하는)를 표시하고 종" +"료\n" + +#: help.c:96 +#, c-format +msgid " --help=variables list special variables, then exit\n" +msgstr "" +" --help=variables 특별 변수들 보여주고, 종료\n" + +#: help.c:98 +#, c-format +msgid "" +"\n" +"Input and output options:\n" +msgstr "" +"\n" +"입출력 옵션:\n" + +#: help.c:99 +#, c-format +msgid " -a, --echo-all echo all input from script\n" +msgstr " -a, --echo-all 스í¬ë¦½íŠ¸ì˜ ëª¨ë“  ìž…ë ¥ 표시\n" + +#: help.c:100 +#, c-format +msgid " -b, --echo-errors echo failed commands\n" +msgstr " -b, --echo-errors 실패한 명령들 출력\n" + +#: help.c:101 +#, c-format +msgid " -e, --echo-queries echo commands sent to server\n" +msgstr " -e, --echo-queries 서버로 보낸 명령 표시\n" + +#: help.c:102 +#, c-format +msgid "" +" -E, --echo-hidden display queries that internal commands generate\n" +msgstr " -E, --echo-hidden ë‚´ë¶€ ëª…ë ¹ì´ ìƒì„±í•˜ëŠ” 쿼리 표시\n" + +#: help.c:103 +#, c-format +msgid " -L, --log-file=FILENAME send session log to file\n" +msgstr " -L, --log-file=FILENAME 세션 로그를 파ì¼ë¡œ 보냄\n" + +#: help.c:104 +#, c-format +msgid "" +" -n, --no-readline disable enhanced command line editing (readline)\n" +msgstr "" +" -n, --no-readline í™•ìž¥ëœ ëª…ë ¹í–‰ 편집 ê¸°ëŠ¥ì„ ì‚¬ìš©ì¤‘ì§€í•¨(readline)\n" + +#: help.c:105 +#, c-format +msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" +msgstr " -o, --output=FILENAME 쿼리 결과를 파ì¼(ë˜ëŠ” |파ì´í”„)로 보냄\n" + +#: help.c:106 +#, c-format +msgid "" +" -q, --quiet run quietly (no messages, only query output)\n" +msgstr " -q, --quiet ìžë™ 실행(메시지 ì—†ì´ ì¿¼ë¦¬ 결과만 표시)\n" + +#: help.c:107 +#, c-format +msgid " -s, --single-step single-step mode (confirm each query)\n" +msgstr " -s, --single-step ë‹¨ë… ìˆœì°¨ 모드(ê° ì¿¼ë¦¬ 확ì¸)\n" + +#: help.c:108 +#, c-format +msgid "" +" -S, --single-line single-line mode (end of line terminates SQL " +"command)\n" +msgstr " -S, --single-line 한 줄 모드(줄 ëì—서 SQL ëª…ë ¹ì´ ì¢…ë£Œë¨)\n" + +#: help.c:110 +#, c-format +msgid "" +"\n" +"Output format options:\n" +msgstr "" +"\n" +"출력 í˜•ì‹ ì˜µì…˜:\n" + +#: help.c:111 +#, c-format +msgid " -A, --no-align unaligned table output mode\n" +msgstr " -A, --no-align ì •ë ¬ë˜ì§€ ì•Šì€ í‘œ í˜•íƒœì˜ ì¶œë ¥ 모드\n" + +#: help.c:112 +#, c-format +msgid "" +" -F, --field-separator=STRING\n" +" field separator for unaligned output (default: " +"\"%s\")\n" +msgstr "" +" -F, --field-separator=STRING\n" +" unaligned 출력용 필드 êµ¬ë¶„ìž ì„¤ì •(기본 ê°’: \"%s" +"\")\n" + +#: help.c:115 +#, c-format +msgid " -H, --html HTML table output mode\n" +msgstr " -H, --html HTML 표 형태 출력 모드\n" + +#: help.c:116 +#, c-format +msgid "" +" -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset " +"command)\n" +msgstr "" +" -P, --pset=VAR[=ARG] ì¸ì‡„ 옵션 VARì„ ARG로 설정(\\pset 명령 참조)\n" + +#: help.c:117 +#, c-format +msgid "" +" -R, --record-separator=STRING\n" +" record separator for unaligned output (default: " +"newline)\n" +msgstr "" +" -R, --record-separator=STRING\n" +" unaligned 출력용 레코드 êµ¬ë¶„ìž ì„¤ì •\n" +" (기본 ê°’: 줄바꿈 문ìž)\n" + +#: help.c:119 +#, c-format +msgid " -t, --tuples-only print rows only\n" +msgstr " -t, --tuples-only 행만 ì¸ì‡„\n" + +#: help.c:120 +#, c-format +msgid "" +" -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, " +"border)\n" +msgstr "" +" -T, --table-attr=TEXT HTML table 태그 ì†ì„± 설정(예: width, border)\n" + +#: help.c:121 +#, c-format +msgid " -x, --expanded turn on expanded table output\n" +msgstr " -x, --expanded í™•ìž¥ëœ í‘œ 형태로 출력\n" + +#: help.c:122 +#, c-format +msgid "" +" -z, --field-separator-zero\n" +" set field separator for unaligned output to zero " +"byte\n" +msgstr "" +" -z, --field-separator-zero\n" +" unaligned 출력용 필드 구분ìžë¥¼ 0 ë°”ì´íŠ¸ë¡œ 지정\n" + +#: help.c:124 +#, c-format +msgid "" +" -0, --record-separator-zero\n" +" set record separator for unaligned output to zero " +"byte\n" +msgstr "" +" -0, --record-separator-zero\n" +" unaligned 출력용 레코드 구분ìžë¥¼ 0 ë°”ì´íŠ¸ë¡œ 지정\n" + +#: help.c:127 +#, c-format +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"ì—°ê²° 옵션들:\n" + +#: help.c:130 +#, c-format +msgid "" +" -h, --host=HOSTNAME database server host or socket directory " +"(default: \"%s\")\n" +msgstr "" +" -h, --host=HOSTNAME ë°ì´í„°ë² ì´ìФ 서버 호스트 ë˜ëŠ” 소켓 디렉터리\n" +" (기본값: \"%s\")\n" + +#: help.c:131 +msgid "local socket" +msgstr "로컬 소켓" + +#: help.c:134 +#, c-format +msgid " -p, --port=PORT database server port (default: \"%s\")\n" +msgstr " -p, --port=PORT ë°ì´í„°ë² ì´ìФ 서버 í¬íЏ(기본 ê°’: \"%s\")\n" + +#: help.c:140 +#, c-format +msgid " -U, --username=USERNAME database user name (default: \"%s\")\n" +msgstr " -U, --username=USERNAME ë°ì´í„°ë² ì´ìФ ì‚¬ìš©ìž ì´ë¦„(기본 ê°’: \"%s\")\n" + +#: help.c:141 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password 암호 프롬프트 표시 안 함\n" + +#: help.c:142 +#, c-format +msgid "" +" -W, --password force password prompt (should happen " +"automatically)\n" +msgstr " -W, --password 암호 ìž…ë ¥ 프롬프트 ë³´ìž„(ìžë™ìœ¼ë¡œ 처리함)\n" + +#: help.c:144 +#, c-format +msgid "" +"\n" +"For more information, type \"\\?\" (for internal commands) or \"\\help" +"\" (for SQL\n" +"commands) from within psql, or consult the psql section in the PostgreSQL\n" +"documentation.\n" +"\n" +msgstr "" +"\n" +"ìžì„¸í•œ ë‚´ìš©ì„ ë³´ë ¤ë©´ psql ë‚´ì—서 \"\\?\"(ë‚´ë¶€ 명령) ë˜ëŠ” \"\\help\"(SQL\n" +"명령)를 입력하거나 PostgreSQL\n" +"설명서ì—서 psql ì„¹ì…˜ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.\n" +"\n" + +#: help.c:147 +#, c-format +msgid "Report bugs to .\n" +msgstr "오류보고: .\n" + +#: help.c:173 +#, c-format +msgid "General\n" +msgstr "ì¼ë°˜\n" + +#: help.c:174 +#, c-format +msgid "" +" \\copyright show PostgreSQL usage and distribution terms\n" +msgstr " \\copyright PostgreSQL 사용법 ë° ì €ìž‘ê¶Œ ì •ë³´ 표시\n" + +#: help.c:175 +#, c-format +msgid "" +" \\errverbose show most recent error message at maximum " +"verbosity\n" +msgstr "" +" \\errverbose 최대 ìžì„¸ížˆ 보기 ìƒíƒœì—서 최근 오류를 다 보여줌\n" + +#: help.c:176 +#, c-format +msgid "" +" \\g [FILE] or ; execute query (and send results to file or |pipe)\n" +msgstr "" +" \\g [FILE] ë˜ëŠ” ; 쿼리 실행(ë° ê²°ê³¼ë¥¼ íŒŒì¼ ë˜ëŠ” |파ì´í”„로 보냄)\n" + +#: help.c:177 +#, c-format +msgid "" +" \\gexec execute query, then execute each value in its " +"result\n" +msgstr "" +" \\gexec 쿼리를 실행하고, ê·¸ 결과를 ê°ê° 실행 함\n" + +#: help.c:178 +#, c-format +msgid "" +" \\gset [PREFIX] execute query and store results in psql variables\n" +msgstr " \\gset [PREFIX] 쿼리 실행 ë’¤ ê·¸ 결과를 psql 변수로 저장\n" + +#: help.c:179 +#, c-format +msgid " \\q quit psql\n" +msgstr " \\q psql 종료\n" + +#: help.c:180 +#, c-format +msgid "" +" \\crosstabview [COLUMNS] execute query and display results in crosstab\n" +msgstr "" +" \\crosstabview [칼럼들] 쿼리를 실행하고, 피봇 í…Œì´ë¸” 형태로 ìžë£Œë¥¼ 보여줌\n" + +#: help.c:181 +#, c-format +msgid " \\watch [SEC] execute query every SEC seconds\n" +msgstr " \\watch [SEC] 매 초마다 쿼리 실행\n" + +#: help.c:184 +#, c-format +msgid "Help\n" +msgstr "ë„움ë§\n" + +#: help.c:186 +#, c-format +msgid " \\? [commands] show help on backslash commands\n" +msgstr " \\? [commands] psql 역슬래시 명령어 설명\n" + +#: help.c:187 +#, c-format +msgid " \\? options show help on psql command-line options\n" +msgstr " \\? options psql 명령행 옵션 ë„ì›€ë§ ë³´ê¸°\n" + +#: help.c:188 +#, c-format +msgid " \\? variables show help on special variables\n" +msgstr " \\? variables psql 환경 설정 ë³€ìˆ˜ë“¤ì— ì„¤ëª… 보기\n" + +#: help.c:189 +#, c-format +msgid "" +" \\h [NAME] help on syntax of SQL commands, * for all " +"commands\n" +msgstr "" +" \\h [NAME] SQL 명령 구문 ë„움ë§, 모든 ëª…ë ¹ì„ í‘œì‹œí•˜ë ¤ë©´ * ìž…" +"ë ¥\n" + +#: help.c:192 +#, c-format +msgid "Query Buffer\n" +msgstr "쿼리 버í¼\n" + +#: help.c:193 +#, c-format +msgid "" +" \\e [FILE] [LINE] edit the query buffer (or file) with external " +"editor\n" +msgstr " \\e [FILE] [LINE] 외부 편집기로 쿼리 버í¼(ë˜ëŠ” 파ì¼) 편집\n" + +#: help.c:194 +#, c-format +msgid "" +" \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" +msgstr " \\ef [FUNCNAME [LINE]] 외부 편집기로 해당 함수 ë‚´ìš© 편집\n" + +#: help.c:195 +#, c-format +msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n" +msgstr " \\ev [VIEWNAME [LINE]] 외부 편집기로 해당 ë·° ì •ì˜ íŽ¸ì§‘\n" + +#: help.c:196 +#, c-format +msgid " \\p show the contents of the query buffer\n" +msgstr " \\p 쿼리 버í¼ì˜ ë‚´ìš© 표시\n" + +#: help.c:197 +#, c-format +msgid " \\r reset (clear) the query buffer\n" +msgstr " \\r 쿼리 ë²„í¼ ì´ˆê¸°í™”(ëª¨ë‘ ì§€ì›€)\n" + +#: help.c:199 +#, c-format +msgid " \\s [FILE] display history or save it to file\n" +msgstr " \\s [FILE] ê¸°ë¡ í‘œì‹œ ë˜ëŠ” 파ì¼ì— 저장\n" + +#: help.c:201 +#, c-format +msgid " \\w FILE write query buffer to file\n" +msgstr " \\w FILE 쿼리 버í¼ë¥¼ 파ì¼ì— 기ë¡\n" + +#: help.c:204 +#, c-format +msgid "Input/Output\n" +msgstr "ìž…ë ¥/출력\n" + +#: help.c:205 +#, c-format +msgid "" +" \\copy ... perform SQL COPY with data stream to the client " +"host\n" +msgstr "" +" \\copy ... í´ë¼ì´ì–¸íЏ í˜¸ìŠ¤íŠ¸ì— ìžˆëŠ” ìžë£Œë¥¼ SQL COPY 명령 실" +"í–‰\n" + +#: help.c:206 +#, c-format +msgid " \\echo [STRING] write string to standard output\n" +msgstr " \\echo [STRING] 문ìžì—´ì„ 표준 ì¶œë ¥ì— ê¸°ë¡\n" + +#: help.c:207 +#, c-format +msgid " \\i FILE execute commands from file\n" +msgstr " \\i FILE 파ì¼ì—서 명령 실행\n" + +#: help.c:208 +#, c-format +msgid "" +" \\ir FILE as \\i, but relative to location of current " +"script\n" +msgstr "" +" \\ir FILE \\i 명령과 같으나, 경로가 현재 위치 기준 ìƒëŒ€ì \n" + +#: help.c:209 +#, c-format +msgid " \\o [FILE] send all query results to file or |pipe\n" +msgstr " \\o [FILE] 모든 쿼리 결과를 íŒŒì¼ ë˜ëŠ” |파ì´í”„로 보냄\n" + +#: help.c:210 +#, c-format +msgid "" +" \\qecho [STRING] write string to query output stream (see \\o)\n" +msgstr " \\qecho [STRING] 문ìžì—´ì„ 쿼리 출력 ìŠ¤íŠ¸ë¦¼ì— ê¸°ë¡(\\o 참조)\n" + +#: help.c:213 +#, c-format +msgid "Informational\n" +msgstr "정보보기\n" + +#: help.c:214 +#, c-format +msgid " (options: S = show system objects, + = additional detail)\n" +msgstr " (옵션: S = 시스템 개체 표시, + = 추가 ìƒì„¸ ì •ë³´)\n" + +#: help.c:215 +#, c-format +msgid " \\d[S+] list tables, views, and sequences\n" +msgstr " \\d[S+] í…Œì´ë¸”, ë·° ë° ì‹œí€€ìŠ¤ 목ë¡\n" + +#: help.c:216 +#, c-format +msgid " \\d[S+] NAME describe table, view, sequence, or index\n" +msgstr " \\d[S+] NAME í…Œì´ë¸”, ë·°, 시퀀스 ë˜ëŠ” ì¸ë±ìФ 설명\n" + +#: help.c:217 +#, c-format +msgid " \\da[S] [PATTERN] list aggregates\n" +msgstr " \\da[S] [PATTERN] 집계 함수 목ë¡\n" + +#: help.c:218 +#, c-format +msgid " \\dA[+] [PATTERN] list access methods\n" +msgstr " \\dA[+] [PATTERN] ì ‘ê·¼ 방법 목ë¡\n" + +#: help.c:219 +#, c-format +msgid " \\db[+] [PATTERN] list tablespaces\n" +msgstr " \\db[+] [PATTERN] í…Œì´ë¸”스페ì´ìФ 목ë¡\n" + +#: help.c:220 +#, c-format +msgid " \\dc[S+] [PATTERN] list conversions\n" +msgstr " \\dc[S+] [PATTERN] 문ìžì…‹ ë³€í™˜ìž ëª©ë¡\n" + +#: help.c:221 +#, c-format +msgid " \\dC[+] [PATTERN] list casts\n" +msgstr " \\dC[+] [PATTERN] ìžë£Œí˜• ë³€í™˜ìž ëª©ë¡\n" + +#: help.c:222 +#, c-format +msgid "" +" \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n" +msgstr "" +" \\dd[S] [PATTERN] 다른 ê³³ì—서는 ë³¼ 수 없는 ê°ì²´ ì„¤ëª…ì„ ë³´ì—¬ì¤Œ\n" + +#: help.c:223 +#, c-format +msgid " \\ddp [PATTERN] list default privileges\n" +msgstr " \\ddp [PATTERN] 기본 접근권한 목ë¡\n" + +#: help.c:224 +#, c-format +msgid " \\dD[S+] [PATTERN] list domains\n" +msgstr " \\dD[S+] [PATTERN] ë„ë©”ì¸ ëª©ë¡\n" + +#: help.c:225 +#, c-format +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [PATTERN] 외부 í…Œì´ë¸” 목ë¡\n" + +#: help.c:226 +#, c-format +msgid " \\des[+] [PATTERN] list foreign servers\n" +msgstr " \\des[+] [PATTERN] 외부 서버 목ë¡\n" + +#: help.c:227 +#, c-format +msgid " \\deu[+] [PATTERN] list user mappings\n" +msgstr " \\deu[+] [PATTERN] ì‚¬ìš©ìž ë§¤í•‘ 목ë¡\n" + +#: help.c:228 +#, c-format +msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" +msgstr " \\dew[+] [PATTERN] 외부 ë°ì´í„° ëž˜í¼ ëª©ë¡\n" + +#: help.c:229 +#, c-format +msgid "" +" \\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions\n" +msgstr " \\df[antw][S+] [PATRN] [only agg/normal/trigger/window] 함수 목ë¡\n" + +#: help.c:230 +#, c-format +msgid " \\dF[+] [PATTERN] list text search configurations\n" +msgstr " \\dF[+] [PATTERN] í…스트 검색 구성 목ë¡\n" + +#: help.c:231 +#, c-format +msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" +msgstr " \\dFd[+] [PATTERN] í…스트 검색 사전 목ë¡\n" + +#: help.c:232 +#, c-format +msgid " \\dFp[+] [PATTERN] list text search parsers\n" +msgstr " \\dFp[+] [PATTERN] í…스트 검색 파서 목ë¡\n" + +#: help.c:233 +#, c-format +msgid " \\dFt[+] [PATTERN] list text search templates\n" +msgstr " \\dFt[+] [PATTERN] í…스트 검색 템플릿 목ë¡\n" + +#: help.c:234 +#, c-format +msgid " \\dg[S+] [PATTERN] list roles\n" +msgstr " \\dg[S+] [PATTERN] 롤 목ë¡\n" + +#: help.c:235 +#, c-format +msgid " \\di[S+] [PATTERN] list indexes\n" +msgstr " \\di[S+] [PATTERN] ì¸ë±ìФ 목ë¡\n" + +#: help.c:236 +#, c-format +msgid " \\dl list large objects, same as \\lo_list\n" +msgstr " \\dl í° ê°œì²´ 목ë¡, \\lo_list 명령과 ê°™ìŒ\n" + +#: help.c:237 +#, c-format +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [PATTERN] 프로시져 언어 목ë¡\n" + +#: help.c:238 +#, c-format +msgid " \\dm[S+] [PATTERN] list materialized views\n" +msgstr " \\dm[S+] [PATTERN] materialized ë·° 목ë¡\n" + +#: help.c:239 +#, c-format +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [PATTERN] 스키마 목ë¡\n" + +#: help.c:240 +#, c-format +msgid " \\do[S] [PATTERN] list operators\n" +msgstr " \\do[S] [PATTERN] ì—°ì‚°ìž ëª©ë¡\n" + +#: help.c:241 +#, c-format +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [PATTERN] collation 목ë¡\n" + +#: help.c:242 +#, c-format +msgid "" +" \\dp [PATTERN] list table, view, and sequence access privileges\n" +msgstr " \\dp [PATTERN] í…Œì´ë¸”, ë·° ë° ì‹œí€€ìŠ¤ 액세스 권한 목ë¡\n" + +#: help.c:243 +#, c-format +msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n" +msgstr " \\drds [PATRN1 [PATRN2]] ë°ì´í„°ë² ì´ìŠ¤ë³„ 롤 설정 목ë¡\n" + +#: help.c:244 +#, c-format +msgid " \\ds[S+] [PATTERN] list sequences\n" +msgstr " \\ds[S+] [PATTERN] 시퀀스 목ë¡\n" + +#: help.c:245 +#, c-format +msgid " \\dt[S+] [PATTERN] list tables\n" +msgstr " \\dt[S+] [PATTERN] í…Œì´ë¸” 목ë¡\n" + +#: help.c:246 +#, c-format +msgid " \\dT[S+] [PATTERN] list data types\n" +msgstr " \\dT[S+] [PATTERN] ë°ì´í„° í˜•ì‹ ëª©ë¡\n" + +#: help.c:247 +#, c-format +msgid " \\du[S+] [PATTERN] list roles\n" +msgstr " \\du[S+] [PATTERN] 롤 목ë¡\n" + +#: help.c:248 +#, c-format +msgid " \\dv[S+] [PATTERN] list views\n" +msgstr " \\dv[S+] [PATTERN] ë·° 목ë¡\n" + +#: help.c:249 +#, c-format +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [PATTERN] 외부 í…Œì´ë¸” 목ë¡\n" + +#: help.c:250 +#, c-format +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [PATTERN] 확장 모듈 목ë¡\n" + +#: help.c:251 +#, c-format +msgid " \\dy [PATTERN] list event triggers\n" +msgstr " \\dy [PATTERN] ì´ë²¤íЏ 트리거 목ë¡\n" + +#: help.c:252 +#, c-format +msgid " \\l[+] [PATTERN] list databases\n" +msgstr " \\l[+] [PATTERN] ë°ì´í„°ë² ì´ìФ 목ë¡\n" + +#: help.c:253 +#, c-format +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] 함수ì´ë¦„ 함수 ì •ì˜ ë³´ê¸°\n" + +#: help.c:254 +#, c-format +msgid " \\sv[+] VIEWNAME show a view's definition\n" +msgstr " \\sv[+] ë·°ì´ë¦„ ë·° ì •ì˜ ë³´ê¸°\n" + +#: help.c:255 +#, c-format +msgid " \\z [PATTERN] same as \\dp\n" +msgstr " \\z [PATTERN] \\dp와 ê°™ìŒ\n" + +#: help.c:258 +#, c-format +msgid "Formatting\n" +msgstr "출력 형ì‹\n" + +#: help.c:259 +#, c-format +msgid "" +" \\a toggle between unaligned and aligned output mode\n" +msgstr "" +" \\a ì •ë ¬ë˜ì§€ ì•Šì€ ì¶œë ¥ 모드와 ì •ë ¬ëœ ì¶œë ¥ 모드 전환\n" + +#: help.c:260 +#, c-format +msgid " \\C [STRING] set table title, or unset if none\n" +msgstr "" +" \\C [STRING] í…Œì´ë¸” 제목 설정 ë˜ëŠ” ê°’ì´ ì—†ëŠ” 경우 설정 안 함\n" + +#: help.c:261 +#, c-format +msgid "" +" \\f [STRING] show or set field separator for unaligned query " +"output\n" +msgstr "" +" \\f [STRING] unaligned ì¶œë ¥ì— ëŒ€í•´ 필드 êµ¬ë¶„ìž í‘œì‹œ ë˜ëŠ” 설정\n" + +#: help.c:262 +#, c-format +msgid " \\H toggle HTML output mode (currently %s)\n" +msgstr " \\H HTML 출력 모드 전환(현재 %s)\n" + +#: help.c:264 +#, c-format +msgid "" +" \\pset [NAME [VALUE]] set table output option\n" +" (NAME := {format|border|expanded|fieldsep|" +"fieldsep_zero|footer|null|\n" +" numericlocale|recordsep|recordsep_zero|tuples_only|" +"title|tableattr|pager|\n" +" unicode_border_linestyle|unicode_column_linestyle|" +"unicode_header_linestyle})\n" +msgstr "" +" \\pset [NAME [VALUE]] 표 출력 옵션\n" +" (NAME := {format|border|expanded|fieldsep|\n" +" fieldsep_zero|footer|null|numericlocale|recordsep|\n" +" recordsep_zero|tuples_only|title|tableattr|pager|\n" +" unicode_border_linestyle|unicode_column_linestyle|\n" +" unicode_header_linestyle})\n" + +#: help.c:268 +#, c-format +msgid " \\t [on|off] show only rows (currently %s)\n" +msgstr " \\t [on|off] 행만 표시(현재 %s)\n" + +#: help.c:270 +#, c-format +msgid "" +" \\T [STRING] set HTML
tag attributes, or unset if none\n" +msgstr "" +" \\T [STRING] HTML
태그 ì†ì„± 설정 ë˜ëŠ” 비었는 경우 설정 " +"안 함\n" + +#: help.c:271 +#, c-format +msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n" +msgstr " \\x [on|off|auto] í™•ìž¥ëœ ì¶œë ¥ 전환 (현재 %s)\n" + +#: help.c:275 +#, c-format +msgid "Connection\n" +msgstr "ì—°ê²°\n" + +#: help.c:277 +#, 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:281 +#, 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:283 +#, c-format +msgid " \\encoding [ENCODING] show or set client encoding\n" +msgstr " \\encoding [ENCODING] í´ë¼ì´ì–¸íЏ ì¸ì½”딩 표시 ë˜ëŠ” 설정\n" + +#: help.c:284 +#, c-format +msgid " \\password [USERNAME] securely change the password for a user\n" +msgstr " \\password [USERNAME] ì‚¬ìš©ìž ì•”í˜¸ë¥¼ 안전하게 변경\n" + +#: help.c:285 +#, c-format +msgid "" +" \\conninfo display information about current connection\n" +msgstr " \\conninfo 현재 ë°ì´í„°ë² ì´ìФ ì ‘ì† ì •ë³´ 보기\n" + +#: help.c:288 +#, c-format +msgid "Operating System\n" +msgstr "ìš´ì˜ ì²´ì œ\n" + +#: help.c:289 +#, c-format +msgid " \\cd [DIR] change the current working directory\n" +msgstr " \\cd [DIR] 현재 작업 디렉터리 변경\n" + +#: help.c:290 +#, c-format +msgid " \\setenv NAME [VALUE] set or unset environment variable\n" +msgstr " \\setenv NAME [VALUE] 환경 변수 지정 ë° í•´ì œ\n" + +#: help.c:291 +#, c-format +msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" +msgstr " \\timing [on|off] 명령 실행 시간 전환(현재 %s)\n" + +#: help.c:293 +#, c-format +msgid "" +" \\! [COMMAND] execute command in shell or start interactive " +"shell\n" +msgstr " \\! [COMMAND] ì…¸ 명령 실행 ë˜ëŠ” ëŒ€í™”ì‹ ì…¸ 시작\n" + +#: help.c:296 +#, c-format +msgid "Variables\n" +msgstr "변수\n" + +#: help.c:297 +#, c-format +msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" +msgstr "" +" \\prompt [TEXT] NAME 사용ìžì—게 ë‚´ë¶€ 변수를 설정하ë¼ëŠ” 메시지 표시\n" + +#: help.c:298 +#, c-format +msgid "" +" \\set [NAME [VALUE]] set internal variable, or list all if no " +"parameters\n" +msgstr "" +" \\set [NAME [VALUE]] ë‚´ë¶€ 변수 설정 ë˜ëŠ” 미지정 경우 모든 변수 ëª©ë¡ í‘œ" +"시\n" + +#: help.c:299 +#, c-format +msgid " \\unset NAME unset (delete) internal variable\n" +msgstr " \\unset NAME ë‚´ë¶€ 변수 설정 í•´ì œ(ì‚­ì œ)\n" + +#: help.c:302 +#, c-format +msgid "Large Objects\n" +msgstr "í° ê°œì²´\n" + +#: help.c:303 +#, c-format +msgid "" +" \\lo_export LOBOID FILE\n" +" \\lo_import FILE [COMMENT]\n" +" \\lo_list\n" +" \\lo_unlink LOBOID large object operations\n" +msgstr "" +" \\lo_export LOBOID FILE\n" +" \\lo_import FILE [COMMENT]\n" +" \\lo_list\n" +" \\lo_unlink LOBOID í° ê°œì²´ 작업\n" + +#: help.c:330 +#, c-format +msgid "" +"List of specially treated variables\n" +"\n" +msgstr "특별한 기능 설정 변수 목ë¡\n" + +#: help.c:332 +#, c-format +msgid "psql variables:\n" +msgstr "psql 변수들:\n" + +#: help.c:334 +#, 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:336 +#, c-format +msgid "" +" AUTOCOMMIT if set, successful SQL commands are automatically " +"committed\n" +msgstr " AUTOCOMMIT 지정 하면 SQL ëª…ë ¹ì´ ì„±ê³µí•˜ë©´ ìžë™ìœ¼ë¡œ 커밋\n" + +#: help.c:337 +#, c-format +msgid "" +" COMP_KEYWORD_CASE determines the case used to complete SQL key words\n" +" [lower, upper, preserve-lower, preserve-upper]\n" +msgstr "" + +#: help.c:339 +#, c-format +msgid " DBNAME the currently connected database name\n" +msgstr " DBNAME 현재 ì ‘ì†í•œ ë°ì´í„°ë² ì´ìФ ì´ë¦„\n" + +#: help.c:340 +#, c-format +msgid "" +" ECHO controls what input is written to standard output\n" +" [all, errors, none, queries]\n" +msgstr "" + +#: help.c:342 +#, c-format +msgid "" +" ECHO_HIDDEN if set, display internal queries executed by backslash " +"commands;\n" +" if set to \"noexec\", just show without execution\n" +msgstr "" + +#: help.c:344 +#, c-format +msgid " ENCODING current client character set encoding\n" +msgstr " ENCODING 현재 í´ë¼ì´ì–¸íЏ ì¸ì½”딩\n" + +#: help.c:345 +#, c-format +msgid "" +" FETCH_COUNT the number of result rows to fetch and display at a " +"time\n" +" (default: 0=unlimited)\n" +msgstr "" + +#: help.c:347 +#, c-format +msgid "" +" HISTCONTROL controls command history [ignorespace, ignoredups, " +"ignoreboth]\n" +msgstr "" + +#: help.c:348 +#, c-format +msgid " HISTFILE file name used to store the command history\n" +msgstr "" + +#: help.c:349 +#, c-format +msgid "" +" HISTSIZE the number of commands to store in the command history\n" +msgstr "" + +#: help.c:350 +#, c-format +msgid " HOST the currently connected database server host\n" +msgstr " HOST 현재 ì ‘ì†í•œ ë°ì´í„°ë² ì´ìФ 서버\n" + +#: help.c:351 +#, c-format +msgid "" +" IGNOREEOF if unset, sending an EOF to interactive session " +"terminates application\n" +msgstr "" + +#: help.c:352 +#, c-format +msgid " LASTOID value of the last affected OID\n" +msgstr " LASTOID 마지막 ì˜í–¥ ë°›ì€ OID\n" + +#: help.c:353 +#, c-format +msgid "" +" ON_ERROR_ROLLBACK if set, an error doesn't stop a transaction (uses " +"implicit savepoints)\n" +msgstr "" + +#: help.c:354 +#, c-format +msgid " ON_ERROR_STOP stop batch execution after error\n" +msgstr "" + +#: help.c:355 +#, c-format +msgid " PORT server port of the current connection\n" +msgstr " PORT 현재 ì ‘ì†í•œ 서버 í¬íЏ\n" + +#: help.c:356 +#, c-format +msgid " PROMPT1 specifies the standard psql prompt\n" +msgstr "" + +#: help.c:357 +#, c-format +msgid "" +" PROMPT2 specifies the prompt used when a statement continues " +"from a previous line\n" +msgstr "" + +#: help.c:358 +#, c-format +msgid "" +" PROMPT3 specifies the prompt used during COPY ... FROM STDIN\n" +msgstr "" + +#: help.c:359 +#, c-format +msgid " QUIET run quietly (same as -q option)\n" +msgstr " QUIET 조용히 실행 (-q 옵션과 ê°™ìŒ)\n" + +#: help.c:360 +#, c-format +msgid "" +" SHOW_CONTEXT controls display of message context fields [never, " +"errors, always]\n" +msgstr "" + +#: help.c:361 +#, c-format +msgid "" +" SINGLELINE end of line terminates SQL command mode (same as -S " +"option)\n" +msgstr "" + +#: help.c:362 +#, c-format +msgid " SINGLESTEP single-step mode (same as -s option)\n" +msgstr "" + +#: help.c:363 +#, c-format +msgid " USER the currently connected database user\n" +msgstr " USER 현재 ì ‘ì†í•œ ë°ì´í„°ë² ì´ìФ 사용ìž\n" + +#: help.c:364 +#, c-format +msgid "" +" VERBOSITY controls verbosity of error reports [default, verbose, " +"terse]\n" +msgstr "" + +#: help.c:366 +#, c-format +msgid "" +"\n" +"Display settings:\n" +msgstr "\n출력 설정들:\n" + +#: help.c:368 +#, 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:370 +#, c-format +msgid " border border style (number)\n" +msgstr " border í…Œë‘리 모양 (숫ìž)\n" + +#: help.c:371 +#, c-format +msgid " columns target width for the wrapped format\n" +msgstr " columns ì¤„ë°”ê¿ˆì„ ìœ„í•œ 너비 지정\n" + +#: help.c:372 +#, c-format +msgid " expanded (or x) expanded output [on, off, auto]\n" +msgstr " expanded (ë˜ëŠ” x) í™•ìž¥ëœ ì¶œë ¥ 전환 [on, off, auto]\n" + +#: help.c:373 +#, c-format +msgid "" +" fieldsep field separator for unaligned output (default \"%s\")\n" +msgstr "" +" fieldsep unaligned 출력용 필드 êµ¬ë¶„ìž (초기값 \"%s\"')\n" + +#: help.c:374 +#, c-format +msgid "" +" fieldsep_zero set field separator for unaligned output to zero byte\n" +msgstr "" +" fieldsep_zero unaligned 출력용 필드 구분ìžë¥¼ 0 ë°”ì´íŠ¸ë¡œ 지정\n" + +#: help.c:375 +#, c-format +msgid "" +" footer enable or disable display of the table footer [on, " +"off]\n" +msgstr " footer í…Œì´ë¸” ê¼¬ë¦¬ë§ ë³´ì´ê¸° 전환 [on, off]\n" + +#: help.c:376 +#, c-format +msgid "" +" format set output format [unaligned, aligned, wrapped, html, " +"asciidoc, ...]\n" +msgstr "" +" format 출력 ì–‘ì‹ ì§€ì • [unaligned, aligned, wrapped, html, " +"asciidoc, ...]\n" + +#: help.c:377 +#, c-format +msgid "" +" linestyle set the border line drawing style [ascii, old-ascii, " +"unicode]\n" +msgstr "" + +#: help.c:378 +#, c-format +msgid "" +" null set the string to be printed in place of a null value\n" +msgstr "" + +#: help.c:379 +#, c-format +msgid "" +" numericlocale enable or disable display of a locale-specific " +"character to separate\n" +" groups of digits [on, off]\n" +msgstr "" + +#: help.c:381 +#, c-format +msgid "" +" pager control when an external pager is used [yes, no, " +"always]\n" +msgstr "" + +#: help.c:382 +#, c-format +msgid " recordsep record (line) separator for unaligned output\n" +msgstr " recordsep unaligned 출력용 레코드(줄) 구분ìž\n" + +#: help.c:383 +#, c-format +msgid "" +" recordsep_zero set record separator for unaligned output to zero byte\n" +msgstr "" +" recordsep_zero unaligned 출력용 레코드 구분ìžë¥¼ 0 ë°”ì´íŠ¸ë¡œ 지정\n" + +#: help.c:384 +#, c-format +msgid "" +" tableattr (or T) specify attributes for table tag in html format or " +"proportional\n" +" column widths for left-aligned data types in latex-" +"longtable format\n" +msgstr "" + +#: help.c:386 +#, c-format +msgid "" +" title set the table title for any subsequently printed " +"tables\n" +msgstr " title í…Œì´ë¸” 제목 지정\n" + +#: help.c:387 +#, c-format +msgid " tuples_only if set, only actual table data is shown\n" +msgstr " tuples_only 지정ë˜ë©´, ìžë£Œë§Œ ë³´ìž„\n" + +#: help.c:388 +#, c-format +msgid "" +" unicode_border_linestyle\n" +" unicode_column_linestyle\n" +" unicode_header_linestyle\n" +" set the style of Unicode line drawing [single, double]\n" +msgstr "" +" unicode_border_linestyle\n" +" unicode_column_linestyle\n" +" unicode_header_linestyle\n" +" 유니코드 ì„  종류 [single, double]\n" + +#: help.c:393 +#, c-format +msgid "" +"\n" +"Environment variables:\n" +msgstr "" +"\n" +"OS 환경 변수들:\n" + +#: help.c:397 +#, 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:399 +#, 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:402 +#, c-format +msgid " COLUMNS number of columns for wrapped format\n" +msgstr " COLUMNS ë‹¤ìŒ ì¤„ë¡œ 넘어갈 칼럼 수\n" + +#: help.c:403 +#, c-format +msgid " PAGER name of external pager program\n" +msgstr " PAGER 페ì´ì§€ 단위 보기ì—서 사용할 프로그램\n" + +#: help.c:404 +#, c-format +msgid "" +" PGAPPNAME same as the application_name connection parameter\n" +msgstr " PGAPPNAME application_name 변수값으로 사용ë¨\n" + +#: help.c:405 +#, c-format +msgid " PGDATABASE same as the dbname connection parameter\n" +msgstr " PGDATABASE ì ‘ì†í•  ë°ì´í„°ë² ì´ìФ ì´ë¦„\n" + +#: help.c:406 +#, c-format +msgid " PGHOST same as the host connection parameter\n" +msgstr " PGHOST 서버 ì ‘ì†ìš© 호스트 ì´ë¦„\n" + +#: help.c:407 +#, c-format +msgid " PGPORT same as the port connection parameter\n" +msgstr " PGPORT 서버 ì ‘ì†ìš© í¬íЏ\n" + +#: help.c:408 +#, c-format +msgid " PGUSER same as the user connection parameter\n" +msgstr " PGUSER 서버 ì ‘ì†ìš© ë°ì´í„°ë² ì´ìФ ì‚¬ìš©ìž ì´ë¦„\n" + +#: help.c:409 +#, c-format +msgid " PGPASSWORD connection password (not recommended)\n" +msgstr " PGPASSWORD 서버 ì ‘ì† ë¹„ë°€ë²ˆí˜¸ (ë³´ì•ˆì— ì·¨ì•½í•¨)\n" + +#: help.c:410 +#, c-format +msgid " PGPASSFILE password file name\n" +msgstr " PGPASSFILE 서버 ì ‘ì†ìš© 비밀번호가 ì €ìž¥ëœ íŒŒì¼ ì´ë¦„\n" + +#: help.c:411 +#, 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:413 +#, 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:415 +#, c-format +msgid "" +" PSQL_HISTORY alternative location for the command history file\n" +msgstr " PSQL_HISTORY ì‚¬ìš©ìž .psql_history íŒŒì¼ ìž„ì˜ ì§€ì •\n" + +#: help.c:416 +#, c-format +msgid " PSQLRC alternative location for the user's .psqlrc file\n" +msgstr " PSQLRC ì‚¬ìš©ìž .psqlrc 파ì¼ì˜ ìž„ì˜ ì§€ì •\n" + +#: help.c:417 +#, c-format +msgid " SHELL shell used by the \\! command\n" +msgstr " SHELL \\! 명령ì—서 사용할 쉘\n" + +#: help.c:418 +#, c-format +msgid " TMPDIR directory for temporary files\n" +msgstr " TMPDIR 임시 파ì¼ì„ 사용할 디렉터리\n" + +#: help.c:461 +msgid "Available help:\n" +msgstr "사용 가능한 ë„움ë§:\n" + +#: help.c:545 +#, c-format +msgid "" +"Command: %s\n" +"Description: %s\n" +"Syntax:\n" +"%s\n" +"\n" +msgstr "" +"명령: %s\n" +"설명: %s\n" +"문법:\n" +"%s\n" +"\n" + +#: help.c:561 +#, 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:216 +#, c-format +msgid "could not read from input file: %s\n" +msgstr "ìž…ë ¥ 파ì¼ì„ ì½ì„ 수 ì—†ìŒ: %s\n" + +#: input.c:471 input.c:510 +#, c-format +msgid "could not save history to file \"%s\": %s\n" +msgstr "history를 \"%s\" 파ì¼ë¡œ 저장할 수 ì—†ìŒ: %s\n" + +#: input.c:530 +#, c-format +msgid "history is not supported by this installation\n" +msgstr "히스토리 ê¸°ëŠ¥ì€ ì´ ì„¤ì¹˜ë³¸ì—서는 ì§€ì›í•˜ì§€ 않ìŒ\n" + +#: large_obj.c:64 +#, c-format +msgid "%s: not connected to a database\n" +msgstr "%s: ë°ì´í„°ë² ì´ìŠ¤ì— ì—°ë˜ì–´ìžˆì§€ 않ìŒ\n" + +#: large_obj.c:83 +#, c-format +msgid "%s: current transaction is aborted\n" +msgstr "%s: 현재 트랜잭션 중지ë¨\n" + +#: large_obj.c:86 +#, c-format +msgid "%s: unknown transaction status\n" +msgstr "%s: 알 수 없는 트랜잭션 ìƒíƒœ\n" + +#: large_obj.c:287 large_obj.c:298 +msgid "ID" +msgstr "ID" + +#: large_obj.c:308 +msgid "Large objects" +msgstr "Large objects" + +#: mainloop.c:168 +#, c-format +msgid "Use \"\\q\" to leave %s.\n" +msgstr "마치려면 \"\\q\"를 입력하세요: %s\n" + +#: mainloop.c:190 +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 "" + +#: mainloop.c:210 +msgid "You are using psql, the command-line interface to PostgreSQL." +msgstr "PostgreSQLì— ëŒ€í•œ 명령행 ì¸í„°íŽ˜ì´ìŠ¤ì¸ psqlì„ ì‚¬ìš©í•˜ê³  있습니다." + +#: mainloop.c:211 +#, 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" + +#: psqlscan.l:713 +#, c-format +msgid "skipping recursive expansion of variable \"%s\"\n" +msgstr "\"%s\" ë³€ìˆ˜ì˜ ìž¬ê·€ì  í™•ìž¥ì„ ê±´ë„ˆë›°ëŠ” 중\n" + +#: psqlscanslash.l:584 +#, c-format +msgid "unterminated quoted string\n" +msgstr "ì¸ìš© 부호 ì§ ë§žì§€ 않ìŒ\n" + +#: psqlscanslash.l:738 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: 메모리 부족\n" + +#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:64 sql_help.c:66 +#: sql_help.c:68 sql_help.c:79 sql_help.c:81 sql_help.c:83 sql_help.c:109 +#: sql_help.c:115 sql_help.c:117 sql_help.c:119 sql_help.c:121 sql_help.c:124 +#: sql_help.c:126 sql_help.c:128 sql_help.c:221 sql_help.c:223 sql_help.c:224 +#: sql_help.c:226 sql_help.c:228 sql_help.c:231 sql_help.c:233 sql_help.c:235 +#: sql_help.c:237 sql_help.c:249 sql_help.c:250 sql_help.c:251 sql_help.c:253 +#: sql_help.c:299 sql_help.c:301 sql_help.c:303 sql_help.c:305 sql_help.c:365 +#: sql_help.c:370 sql_help.c:372 sql_help.c:415 sql_help.c:417 sql_help.c:420 +#: sql_help.c:422 sql_help.c:489 sql_help.c:494 sql_help.c:499 sql_help.c:504 +#: sql_help.c:509 sql_help.c:558 sql_help.c:560 sql_help.c:562 sql_help.c:564 +#: sql_help.c:567 sql_help.c:569 sql_help.c:580 sql_help.c:582 sql_help.c:624 +#: sql_help.c:626 sql_help.c:628 sql_help.c:631 sql_help.c:633 sql_help.c:635 +#: sql_help.c:669 sql_help.c:673 sql_help.c:677 sql_help.c:696 sql_help.c:699 +#: sql_help.c:702 sql_help.c:731 sql_help.c:743 sql_help.c:751 sql_help.c:754 +#: sql_help.c:757 sql_help.c:772 sql_help.c:775 sql_help.c:819 sql_help.c:842 +#: sql_help.c:853 sql_help.c:855 sql_help.c:872 sql_help.c:881 sql_help.c:883 +#: sql_help.c:885 sql_help.c:897 sql_help.c:901 sql_help.c:903 sql_help.c:987 +#: sql_help.c:989 sql_help.c:992 sql_help.c:995 sql_help.c:997 sql_help.c:999 +#: sql_help.c:1060 sql_help.c:1062 sql_help.c:1064 sql_help.c:1067 +#: sql_help.c:1088 sql_help.c:1091 sql_help.c:1094 sql_help.c:1097 +#: sql_help.c:1101 sql_help.c:1103 sql_help.c:1105 sql_help.c:1107 +#: sql_help.c:1121 sql_help.c:1124 sql_help.c:1126 sql_help.c:1128 +#: sql_help.c:1138 sql_help.c:1140 sql_help.c:1150 sql_help.c:1152 +#: sql_help.c:1162 sql_help.c:1165 sql_help.c:1186 sql_help.c:1188 +#: sql_help.c:1190 sql_help.c:1193 sql_help.c:1195 sql_help.c:1197 +#: sql_help.c:1247 sql_help.c:1285 sql_help.c:1288 sql_help.c:1290 +#: sql_help.c:1292 sql_help.c:1294 sql_help.c:1296 sql_help.c:1299 +#: sql_help.c:1339 sql_help.c:1544 sql_help.c:1608 sql_help.c:1627 +#: sql_help.c:1640 sql_help.c:1694 sql_help.c:1698 sql_help.c:1708 +#: sql_help.c:1728 sql_help.c:1753 sql_help.c:1771 sql_help.c:1800 +#: sql_help.c:1875 sql_help.c:1917 sql_help.c:1939 sql_help.c:1959 +#: sql_help.c:1960 sql_help.c:1995 sql_help.c:2015 sql_help.c:2037 +#: sql_help.c:2050 sql_help.c:2081 sql_help.c:2106 sql_help.c:2150 +#: sql_help.c:2336 sql_help.c:2349 sql_help.c:2366 sql_help.c:2382 +#: sql_help.c:2421 sql_help.c:2472 sql_help.c:2476 sql_help.c:2478 +#: sql_help.c:2484 sql_help.c:2502 sql_help.c:2529 sql_help.c:2564 +#: sql_help.c:2576 sql_help.c:2585 sql_help.c:2629 sql_help.c:2643 +#: sql_help.c:2671 sql_help.c:2679 sql_help.c:2687 sql_help.c:2695 +#: sql_help.c:2703 sql_help.c:2711 sql_help.c:2719 sql_help.c:2727 +#: sql_help.c:2736 sql_help.c:2747 sql_help.c:2755 sql_help.c:2763 +#: sql_help.c:2771 sql_help.c:2779 sql_help.c:2789 sql_help.c:2798 +#: sql_help.c:2807 sql_help.c:2815 sql_help.c:2824 sql_help.c:2832 +#: sql_help.c:2841 sql_help.c:2849 sql_help.c:2857 sql_help.c:2865 +#: sql_help.c:2873 sql_help.c:2881 sql_help.c:2889 sql_help.c:2897 +#: sql_help.c:2905 sql_help.c:2922 sql_help.c:2931 sql_help.c:2939 +#: sql_help.c:2956 sql_help.c:2971 sql_help.c:3236 sql_help.c:3287 +#: sql_help.c:3316 sql_help.c:3324 sql_help.c:3743 sql_help.c:3791 +#: sql_help.c:3932 +msgid "name" +msgstr "ì´ë¦„" + +#: sql_help.c:37 sql_help.c:40 sql_help.c:43 sql_help.c:309 sql_help.c:1405 +#: sql_help.c:2644 sql_help.c:3539 +msgid "aggregate_signature" +msgstr "집계함수_ì‹ë³„구문" + +#: sql_help.c:38 sql_help.c:65 sql_help.c:80 sql_help.c:116 sql_help.c:236 +#: sql_help.c:254 sql_help.c:373 sql_help.c:421 sql_help.c:498 sql_help.c:544 +#: sql_help.c:559 sql_help.c:581 sql_help.c:632 sql_help.c:698 sql_help.c:753 +#: sql_help.c:774 sql_help.c:820 sql_help.c:844 sql_help.c:854 sql_help.c:884 +#: sql_help.c:904 sql_help.c:996 sql_help.c:1061 sql_help.c:1104 +#: sql_help.c:1125 sql_help.c:1139 sql_help.c:1151 sql_help.c:1164 +#: sql_help.c:1194 sql_help.c:1248 sql_help.c:1293 +msgid "new_name" +msgstr "새ì´ë¦„" + +#: sql_help.c:41 sql_help.c:67 sql_help.c:82 sql_help.c:118 sql_help.c:234 +#: sql_help.c:252 sql_help.c:371 sql_help.c:457 sql_help.c:503 sql_help.c:583 +#: sql_help.c:592 sql_help.c:651 sql_help.c:672 sql_help.c:701 sql_help.c:756 +#: sql_help.c:856 sql_help.c:882 sql_help.c:902 sql_help.c:1045 +#: sql_help.c:1063 sql_help.c:1106 sql_help.c:1127 sql_help.c:1189 +#: sql_help.c:1291 sql_help.c:2322 +msgid "new_owner" +msgstr "새사용ìž" + +#: sql_help.c:44 sql_help.c:69 sql_help.c:84 sql_help.c:238 sql_help.c:302 +#: sql_help.c:423 sql_help.c:508 sql_help.c:634 sql_help.c:676 sql_help.c:704 +#: sql_help.c:759 sql_help.c:886 sql_help.c:998 sql_help.c:1108 +#: sql_help.c:1129 sql_help.c:1141 sql_help.c:1153 sql_help.c:1196 +#: sql_help.c:1295 +msgid "new_schema" +msgstr "새스키마" + +#: sql_help.c:45 sql_help.c:1458 sql_help.c:2645 sql_help.c:3558 +msgid "where aggregate_signature is:" +msgstr "집계함수_ì‹ë³„구문 사용법:" + +#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:319 sql_help.c:344 +#: sql_help.c:347 sql_help.c:350 sql_help.c:490 sql_help.c:495 sql_help.c:500 +#: sql_help.c:505 sql_help.c:510 sql_help.c:1423 sql_help.c:1459 +#: sql_help.c:1462 sql_help.c:1465 sql_help.c:1609 sql_help.c:1628 +#: sql_help.c:1631 sql_help.c:1876 sql_help.c:2646 sql_help.c:2649 +#: sql_help.c:2652 sql_help.c:2737 sql_help.c:3122 sql_help.c:3454 +#: sql_help.c:3545 sql_help.c:3559 sql_help.c:3562 sql_help.c:3565 +msgid "argmode" +msgstr "ì¸ìžëª¨ë“œ" + +#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:320 sql_help.c:345 +#: sql_help.c:348 sql_help.c:351 sql_help.c:491 sql_help.c:496 sql_help.c:501 +#: sql_help.c:506 sql_help.c:511 sql_help.c:1424 sql_help.c:1460 +#: sql_help.c:1463 sql_help.c:1466 sql_help.c:1610 sql_help.c:1629 +#: sql_help.c:1632 sql_help.c:1877 sql_help.c:2647 sql_help.c:2650 +#: sql_help.c:2653 sql_help.c:2738 sql_help.c:3546 sql_help.c:3560 +#: sql_help.c:3563 sql_help.c:3566 +msgid "argname" +msgstr "ì¸ìžì´ë¦„" + +#: sql_help.c:48 sql_help.c:51 sql_help.c:54 sql_help.c:321 sql_help.c:346 +#: sql_help.c:349 sql_help.c:352 sql_help.c:492 sql_help.c:497 sql_help.c:502 +#: sql_help.c:507 sql_help.c:512 sql_help.c:1425 sql_help.c:1461 +#: sql_help.c:1464 sql_help.c:1467 sql_help.c:1878 sql_help.c:2648 +#: sql_help.c:2651 sql_help.c:2654 sql_help.c:2739 sql_help.c:3547 +#: sql_help.c:3561 sql_help.c:3564 sql_help.c:3567 +msgid "argtype" +msgstr "ì¸ìžìžë£Œí˜•" + +#: sql_help.c:110 sql_help.c:368 sql_help.c:446 sql_help.c:458 sql_help.c:814 +#: sql_help.c:899 sql_help.c:1122 sql_help.c:1242 sql_help.c:1270 +#: sql_help.c:1515 sql_help.c:1521 sql_help.c:1803 sql_help.c:1835 +#: sql_help.c:1842 sql_help.c:1918 sql_help.c:2082 sql_help.c:2171 +#: sql_help.c:2351 sql_help.c:2530 sql_help.c:2552 sql_help.c:2990 +#: sql_help.c:3156 +msgid "option" +msgstr "옵션" + +#: sql_help.c:111 sql_help.c:815 sql_help.c:1243 sql_help.c:1919 +#: sql_help.c:2083 sql_help.c:2531 +msgid "where option can be:" +msgstr "옵션 사용법:" + +#: sql_help.c:112 sql_help.c:1735 +msgid "allowconn" +msgstr "" + +#: sql_help.c:113 sql_help.c:816 sql_help.c:1244 sql_help.c:1736 +#: sql_help.c:2084 sql_help.c:2532 +msgid "connlimit" +msgstr "" + +#: sql_help.c:114 sql_help.c:1737 +msgid "istemplate" +msgstr "true|false" + +#: sql_help.c:120 sql_help.c:571 sql_help.c:637 sql_help.c:652 sql_help.c:1001 +#: sql_help.c:1038 +msgid "new_tablespace" +msgstr "새테ì´ë¸”스페ì´ìФ" + +#: sql_help.c:122 sql_help.c:125 sql_help.c:127 sql_help.c:517 sql_help.c:519 +#: sql_help.c:520 sql_help.c:823 sql_help.c:827 sql_help.c:830 sql_help.c:915 +#: sql_help.c:918 sql_help.c:1250 sql_help.c:1253 sql_help.c:1255 +#: sql_help.c:1887 sql_help.c:3341 sql_help.c:3732 +msgid "configuration_parameter" +msgstr "환경설정_매개변수" + +#: sql_help.c:123 sql_help.c:369 sql_help.c:441 sql_help.c:447 sql_help.c:459 +#: sql_help.c:518 sql_help.c:566 sql_help.c:643 sql_help.c:649 sql_help.c:824 +#: sql_help.c:900 sql_help.c:916 sql_help.c:917 sql_help.c:1020 +#: sql_help.c:1040 sql_help.c:1066 sql_help.c:1123 sql_help.c:1251 +#: sql_help.c:1271 sql_help.c:1804 sql_help.c:1836 sql_help.c:1843 +#: sql_help.c:1888 sql_help.c:1889 sql_help.c:1947 sql_help.c:1979 +#: sql_help.c:2172 sql_help.c:2246 sql_help.c:2254 sql_help.c:2286 +#: sql_help.c:2308 sql_help.c:2325 sql_help.c:2352 sql_help.c:2553 +#: sql_help.c:3157 sql_help.c:3733 sql_help.c:3734 +msgid "value" +msgstr "ê°’" + +#: sql_help.c:185 +msgid "target_role" +msgstr "대ìƒë¡¤" + +#: sql_help.c:186 sql_help.c:1787 sql_help.c:2130 sql_help.c:2135 +#: sql_help.c:3104 sql_help.c:3111 sql_help.c:3125 sql_help.c:3131 +#: sql_help.c:3436 sql_help.c:3443 sql_help.c:3457 sql_help.c:3463 +msgid "schema_name" +msgstr "스키마ì´ë¦„" + +#: sql_help.c:187 +msgid "abbreviated_grant_or_revoke" +msgstr "" + +#: sql_help.c:188 +msgid "where abbreviated_grant_or_revoke is one of:" +msgstr "" + +#: sql_help.c:189 sql_help.c:190 sql_help.c:191 sql_help.c:192 sql_help.c:193 +#: sql_help.c:194 sql_help.c:195 sql_help.c:196 sql_help.c:542 sql_help.c:570 +#: sql_help.c:636 sql_help.c:777 sql_help.c:834 sql_help.c:1000 +#: sql_help.c:1258 sql_help.c:1922 sql_help.c:1923 sql_help.c:1924 +#: sql_help.c:1925 sql_help.c:1926 sql_help.c:2052 sql_help.c:2087 +#: sql_help.c:2088 sql_help.c:2089 sql_help.c:2090 sql_help.c:2091 +#: sql_help.c:2535 sql_help.c:2536 sql_help.c:2537 sql_help.c:2538 +#: sql_help.c:2539 sql_help.c:3138 sql_help.c:3139 sql_help.c:3140 +#: sql_help.c:3437 sql_help.c:3441 sql_help.c:3444 sql_help.c:3446 +#: sql_help.c:3448 sql_help.c:3450 sql_help.c:3452 sql_help.c:3458 +#: sql_help.c:3460 sql_help.c:3462 sql_help.c:3464 sql_help.c:3466 +#: sql_help.c:3468 sql_help.c:3469 sql_help.c:3470 sql_help.c:3753 +msgid "role_name" +msgstr "롤ì´ë¦„" + +#: sql_help.c:222 sql_help.c:434 sql_help.c:1011 sql_help.c:1013 +#: sql_help.c:1287 sql_help.c:1756 sql_help.c:1760 sql_help.c:1846 +#: sql_help.c:1850 sql_help.c:1943 sql_help.c:2258 sql_help.c:2268 +#: sql_help.c:2290 sql_help.c:3187 sql_help.c:3202 sql_help.c:3204 +#: sql_help.c:3618 sql_help.c:3619 sql_help.c:3628 sql_help.c:3669 +#: sql_help.c:3670 sql_help.c:3671 sql_help.c:3672 sql_help.c:3673 +#: sql_help.c:3674 sql_help.c:3707 sql_help.c:3708 sql_help.c:3713 +#: sql_help.c:3718 sql_help.c:3857 sql_help.c:3858 sql_help.c:3867 +#: sql_help.c:3908 sql_help.c:3909 sql_help.c:3910 sql_help.c:3911 +#: sql_help.c:3912 sql_help.c:3913 sql_help.c:3960 sql_help.c:3962 +#: sql_help.c:3995 sql_help.c:4051 sql_help.c:4052 sql_help.c:4061 +#: sql_help.c:4102 sql_help.c:4103 sql_help.c:4104 sql_help.c:4105 +#: sql_help.c:4106 sql_help.c:4107 +msgid "expression" +msgstr "표현ì‹" + +#: sql_help.c:225 +msgid "domain_constraint" +msgstr "ë„ë©”ì¸_제약조건" + +#: sql_help.c:227 sql_help.c:229 sql_help.c:232 sql_help.c:449 sql_help.c:450 +#: sql_help.c:993 sql_help.c:1026 sql_help.c:1027 sql_help.c:1028 +#: sql_help.c:1048 sql_help.c:1411 sql_help.c:1413 sql_help.c:1759 +#: sql_help.c:1845 sql_help.c:1849 sql_help.c:2257 sql_help.c:2267 +#: sql_help.c:3199 +msgid "constraint_name" +msgstr "제약조건_ì´ë¦„" + +#: sql_help.c:230 sql_help.c:994 +msgid "new_constraint_name" +msgstr "새제약조건_ì´ë¦„" + +#: sql_help.c:300 sql_help.c:898 +msgid "new_version" +msgstr "새버전" + +#: sql_help.c:304 sql_help.c:306 +msgid "member_object" +msgstr "" + +#: sql_help.c:307 +msgid "where member_object is:" +msgstr "" + +#: sql_help.c:308 sql_help.c:1404 sql_help.c:3538 +msgid "aggregate_name" +msgstr "집계함수ì´ë¦„" + +#: sql_help.c:310 sql_help.c:1406 sql_help.c:1674 sql_help.c:1678 +#: sql_help.c:1680 sql_help.c:2662 +msgid "source_type" +msgstr "기존ìžë£Œí˜•" + +#: sql_help.c:311 sql_help.c:1407 sql_help.c:1675 sql_help.c:1679 +#: sql_help.c:1681 sql_help.c:2663 +msgid "target_type" +msgstr "대ìƒìžë£Œí˜•" + +#: sql_help.c:312 sql_help.c:313 sql_help.c:314 sql_help.c:315 sql_help.c:316 +#: sql_help.c:317 sql_help.c:322 sql_help.c:326 sql_help.c:328 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:336 sql_help.c:337 sql_help.c:338 sql_help.c:341 sql_help.c:342 +#: sql_help.c:1403 sql_help.c:1408 sql_help.c:1415 sql_help.c:1416 +#: sql_help.c:1417 sql_help.c:1418 sql_help.c:1419 sql_help.c:1420 +#: sql_help.c:1421 sql_help.c:1426 sql_help.c:1428 sql_help.c:1432 +#: sql_help.c:1434 sql_help.c:1438 sql_help.c:1439 sql_help.c:1442 +#: sql_help.c:1443 sql_help.c:1444 sql_help.c:1445 sql_help.c:1446 +#: sql_help.c:1447 sql_help.c:1448 sql_help.c:1449 sql_help.c:1450 +#: sql_help.c:1455 sql_help.c:1456 sql_help.c:3535 sql_help.c:3540 +#: sql_help.c:3541 sql_help.c:3542 sql_help.c:3543 sql_help.c:3549 +#: sql_help.c:3550 sql_help.c:3551 sql_help.c:3552 sql_help.c:3553 +#: sql_help.c:3554 sql_help.c:3555 sql_help.c:3556 +msgid "object_name" +msgstr "ê°ì²´ì´ë¦„" + +#: sql_help.c:318 sql_help.c:741 sql_help.c:1422 sql_help.c:1676 +#: sql_help.c:1711 sql_help.c:1774 sql_help.c:1996 sql_help.c:2027 +#: sql_help.c:2426 sql_help.c:3121 sql_help.c:3453 sql_help.c:3544 +#: sql_help.c:3647 sql_help.c:3651 sql_help.c:3655 sql_help.c:3658 +#: sql_help.c:3886 sql_help.c:3890 sql_help.c:3894 sql_help.c:3897 +#: sql_help.c:4080 sql_help.c:4084 sql_help.c:4088 sql_help.c:4091 +msgid "function_name" +msgstr "함수ì´ë¦„" + +#: sql_help.c:323 sql_help.c:734 sql_help.c:1429 sql_help.c:2020 +msgid "operator_name" +msgstr "ì—°ì‚°ìžì´ë¦„" + +#: sql_help.c:324 sql_help.c:670 sql_help.c:674 sql_help.c:678 sql_help.c:1430 +#: sql_help.c:1997 sql_help.c:2780 +msgid "left_type" +msgstr "왼쪽ì¸ìž_ìžë£Œí˜•" + +#: sql_help.c:325 sql_help.c:671 sql_help.c:675 sql_help.c:679 sql_help.c:1431 +#: sql_help.c:1998 sql_help.c:2781 +msgid "right_type" +msgstr "오른쪽ì¸ìž_ìžë£Œí˜•" + +#: sql_help.c:327 sql_help.c:329 sql_help.c:697 sql_help.c:700 sql_help.c:703 +#: sql_help.c:732 sql_help.c:744 sql_help.c:752 sql_help.c:755 sql_help.c:758 +#: sql_help.c:1433 sql_help.c:1435 sql_help.c:2017 sql_help.c:2038 +#: sql_help.c:2273 sql_help.c:2790 sql_help.c:2799 +msgid "index_method" +msgstr "색ì¸ë°©ë²•" + +#: sql_help.c:339 sql_help.c:1044 sql_help.c:1451 sql_help.c:1884 +#: sql_help.c:2249 sql_help.c:2395 sql_help.c:2913 sql_help.c:3135 +#: sql_help.c:3467 +msgid "type_name" +msgstr "ìžë£Œí˜•ì´ë¦„" + +#: sql_help.c:340 sql_help.c:1452 sql_help.c:1883 sql_help.c:2396 +#: sql_help.c:2620 sql_help.c:2914 sql_help.c:3127 sql_help.c:3459 +msgid "lang_name" +msgstr "" + +#: sql_help.c:343 +msgid "and aggregate_signature is:" +msgstr "" + +#: sql_help.c:366 sql_help.c:1546 sql_help.c:1801 +msgid "handler_function" +msgstr "핸들러_함수" + +#: sql_help.c:367 sql_help.c:1802 +msgid "validator_function" +msgstr "유효성검사_함수" + +#: sql_help.c:416 sql_help.c:493 sql_help.c:625 sql_help.c:988 sql_help.c:1187 +#: sql_help.c:2264 sql_help.c:2265 sql_help.c:2281 sql_help.c:2282 +msgid "action" +msgstr "ë™ìž‘" + +#: sql_help.c:418 sql_help.c:425 sql_help.c:429 sql_help.c:430 sql_help.c:433 +#: sql_help.c:435 sql_help.c:436 sql_help.c:437 sql_help.c:439 sql_help.c:442 +#: sql_help.c:444 sql_help.c:445 sql_help.c:629 sql_help.c:639 sql_help.c:641 +#: sql_help.c:644 sql_help.c:646 sql_help.c:880 sql_help.c:990 sql_help.c:1003 +#: sql_help.c:1007 sql_help.c:1008 sql_help.c:1012 sql_help.c:1014 +#: sql_help.c:1015 sql_help.c:1016 sql_help.c:1018 sql_help.c:1021 +#: sql_help.c:1023 sql_help.c:1286 sql_help.c:1289 sql_help.c:1309 +#: sql_help.c:1410 sql_help.c:1512 sql_help.c:1517 sql_help.c:1531 +#: sql_help.c:1532 sql_help.c:1533 sql_help.c:1833 sql_help.c:1881 +#: sql_help.c:1942 sql_help.c:1977 sql_help.c:2157 sql_help.c:2237 +#: sql_help.c:2250 sql_help.c:2269 sql_help.c:2271 sql_help.c:2278 +#: sql_help.c:2289 sql_help.c:2306 sql_help.c:2429 sql_help.c:2565 +#: sql_help.c:3106 sql_help.c:3107 sql_help.c:3186 sql_help.c:3201 +#: sql_help.c:3203 sql_help.c:3205 sql_help.c:3438 sql_help.c:3439 +#: sql_help.c:3537 sql_help.c:3678 sql_help.c:3917 sql_help.c:3959 +#: sql_help.c:3961 sql_help.c:3963 sql_help.c:3980 sql_help.c:3983 +#: sql_help.c:4111 +msgid "column_name" +msgstr "칼럼ì´ë¦„" + +#: sql_help.c:419 sql_help.c:630 sql_help.c:991 +msgid "new_column_name" +msgstr "새칼럼ì´ë¦„" + +#: sql_help.c:424 sql_help.c:514 sql_help.c:638 sql_help.c:1002 +#: sql_help.c:1200 +msgid "where action is one of:" +msgstr "ë™ìž‘ 사용법:" + +#: sql_help.c:426 sql_help.c:431 sql_help.c:1004 sql_help.c:1009 +#: sql_help.c:1202 sql_help.c:1206 sql_help.c:1754 sql_help.c:1834 +#: sql_help.c:2016 sql_help.c:2238 sql_help.c:2474 sql_help.c:3288 +msgid "data_type" +msgstr "ìžë£Œí˜•" + +#: sql_help.c:427 sql_help.c:432 sql_help.c:1005 sql_help.c:1010 +#: sql_help.c:1203 sql_help.c:1207 sql_help.c:1755 sql_help.c:1837 +#: sql_help.c:1944 sql_help.c:2239 sql_help.c:2475 sql_help.c:2481 +#: sql_help.c:3196 +msgid "collation" +msgstr "collation" + +#: sql_help.c:428 sql_help.c:1006 sql_help.c:1838 sql_help.c:2240 +#: sql_help.c:2251 +msgid "column_constraint" +msgstr "칼럼_제약조건" + +#: sql_help.c:438 sql_help.c:640 sql_help.c:1017 +msgid "integer" +msgstr "정수" + +#: sql_help.c:440 sql_help.c:443 sql_help.c:642 sql_help.c:645 sql_help.c:1019 +#: sql_help.c:1022 +msgid "attribute_option" +msgstr "ì†ì„±_옵션" + +#: sql_help.c:448 sql_help.c:1024 sql_help.c:1839 sql_help.c:2241 +#: sql_help.c:2252 +msgid "table_constraint" +msgstr "í…Œì´ë¸”_제약조건" + +#: sql_help.c:451 sql_help.c:452 sql_help.c:453 sql_help.c:454 sql_help.c:1029 +#: sql_help.c:1030 sql_help.c:1031 sql_help.c:1032 sql_help.c:1453 +msgid "trigger_name" +msgstr "트리거ì´ë¦„" + +#: sql_help.c:455 sql_help.c:456 sql_help.c:1042 sql_help.c:1043 +#: sql_help.c:1840 sql_help.c:2244 +msgid "parent_table" +msgstr "ìƒìœ„_í…Œì´ë¸”" + +#: sql_help.c:513 sql_help.c:563 sql_help.c:627 sql_help.c:1167 +#: sql_help.c:1786 +msgid "extension_name" +msgstr "확장모듈ì´ë¦„" + +#: sql_help.c:515 sql_help.c:1885 +msgid "execution_cost" +msgstr "실행비용" + +#: sql_help.c:516 sql_help.c:1886 +msgid "result_rows" +msgstr "" + +#: sql_help.c:537 sql_help.c:539 sql_help.c:813 sql_help.c:821 sql_help.c:825 +#: sql_help.c:828 sql_help.c:831 sql_help.c:1241 sql_help.c:1249 +#: sql_help.c:1252 sql_help.c:1254 sql_help.c:1256 sql_help.c:2131 +#: sql_help.c:2133 sql_help.c:2136 sql_help.c:2137 sql_help.c:3105 +#: sql_help.c:3109 sql_help.c:3112 sql_help.c:3114 sql_help.c:3116 +#: sql_help.c:3118 sql_help.c:3120 sql_help.c:3126 sql_help.c:3128 +#: sql_help.c:3130 sql_help.c:3132 sql_help.c:3134 sql_help.c:3136 +msgid "role_specification" +msgstr "롤_명세" + +#: sql_help.c:538 sql_help.c:540 sql_help.c:1268 sql_help.c:1729 +#: sql_help.c:2139 sql_help.c:2550 sql_help.c:2947 sql_help.c:3763 +msgid "user_name" +msgstr "사용ìžì´ë¦„" + +#: sql_help.c:541 sql_help.c:833 sql_help.c:1257 sql_help.c:2138 +#: sql_help.c:3137 +msgid "where role_specification can be:" +msgstr "롤_명세 사용법:" + +#: sql_help.c:543 +msgid "group_name" +msgstr "그룹ì´ë¦„" + +#: sql_help.c:561 sql_help.c:1734 sql_help.c:1948 sql_help.c:1980 +#: sql_help.c:2247 sql_help.c:2255 sql_help.c:2287 sql_help.c:2309 +#: sql_help.c:2321 sql_help.c:3133 sql_help.c:3465 +msgid "tablespace_name" +msgstr "í…Œì´ë¸”스페ì´ìФì´ë¦„" + +#: sql_help.c:565 sql_help.c:568 sql_help.c:648 sql_help.c:650 sql_help.c:1039 +#: sql_help.c:1041 sql_help.c:1946 sql_help.c:1978 sql_help.c:2245 +#: sql_help.c:2253 sql_help.c:2285 sql_help.c:2307 +msgid "storage_parameter" +msgstr "" + +#: sql_help.c:591 sql_help.c:1427 sql_help.c:3548 +msgid "large_object_oid" +msgstr "대형_ê°ì²´_oid" + +#: sql_help.c:647 sql_help.c:1037 sql_help.c:1046 sql_help.c:1049 +#: sql_help.c:1349 +msgid "index_name" +msgstr "ì¸ë±ìФì´ë¦„" + +#: sql_help.c:680 sql_help.c:2001 +msgid "res_proc" +msgstr "" + +#: sql_help.c:681 sql_help.c:2002 +msgid "join_proc" +msgstr "" + +#: sql_help.c:733 sql_help.c:745 sql_help.c:2019 +msgid "strategy_number" +msgstr "" + +#: sql_help.c:735 sql_help.c:736 sql_help.c:739 sql_help.c:740 sql_help.c:746 +#: sql_help.c:747 sql_help.c:749 sql_help.c:750 sql_help.c:2021 +#: sql_help.c:2022 sql_help.c:2025 sql_help.c:2026 +msgid "op_type" +msgstr "ì—°ì‚°ìžìžë£Œí˜•" + +#: sql_help.c:737 sql_help.c:2023 +msgid "sort_family_name" +msgstr "" + +#: sql_help.c:738 sql_help.c:748 sql_help.c:2024 +msgid "support_number" +msgstr "" + +#: sql_help.c:742 sql_help.c:1677 sql_help.c:2028 sql_help.c:2398 +#: sql_help.c:2400 +msgid "argument_type" +msgstr "ì¸ìžìžë£Œí˜•" + +#: sql_help.c:773 sql_help.c:776 sql_help.c:843 sql_help.c:879 sql_help.c:1163 +#: sql_help.c:1166 sql_help.c:1308 sql_help.c:1348 sql_help.c:1412 +#: sql_help.c:1437 sql_help.c:1441 sql_help.c:1454 sql_help.c:1511 +#: sql_help.c:1516 sql_help.c:1832 sql_help.c:1940 sql_help.c:1976 +#: sql_help.c:2051 sql_help.c:2108 sql_help.c:2156 sql_help.c:2236 +#: sql_help.c:2248 sql_help.c:2305 sql_help.c:2423 sql_help.c:2599 +#: sql_help.c:2816 sql_help.c:2833 sql_help.c:2923 sql_help.c:3103 +#: sql_help.c:3108 sql_help.c:3153 sql_help.c:3184 sql_help.c:3435 +#: sql_help.c:3440 sql_help.c:3536 sql_help.c:3633 sql_help.c:3635 +#: sql_help.c:3684 sql_help.c:3723 sql_help.c:3872 sql_help.c:3874 +#: sql_help.c:3923 sql_help.c:3957 sql_help.c:3979 sql_help.c:3981 +#: sql_help.c:3982 sql_help.c:4066 sql_help.c:4068 sql_help.c:4117 +msgid "table_name" +msgstr "í…Œì´ë¸”ì´ë¦„" + +#: sql_help.c:778 sql_help.c:2053 +msgid "using_expression" +msgstr "" + +#: sql_help.c:779 sql_help.c:2054 +msgid "check_expression" +msgstr "" + +#: sql_help.c:817 sql_help.c:1245 sql_help.c:1920 sql_help.c:2085 +#: sql_help.c:2533 +msgid "password" +msgstr "암호" + +#: sql_help.c:818 sql_help.c:1246 sql_help.c:1921 sql_help.c:2086 +#: sql_help.c:2534 +msgid "timestamp" +msgstr "" + +#: sql_help.c:822 sql_help.c:826 sql_help.c:829 sql_help.c:832 sql_help.c:3113 +#: sql_help.c:3445 +msgid "database_name" +msgstr "ë°ì´í„°ë² ì´ìФì´ë¦„" + +#: sql_help.c:873 sql_help.c:2151 +msgid "increment" +msgstr "" + +#: sql_help.c:874 sql_help.c:2152 +msgid "minvalue" +msgstr "최소값" + +#: sql_help.c:875 sql_help.c:2153 +msgid "maxvalue" +msgstr "최대값" + +#: sql_help.c:876 sql_help.c:2154 sql_help.c:3631 sql_help.c:3721 +#: sql_help.c:3870 sql_help.c:3999 sql_help.c:4064 +msgid "start" +msgstr "시작" + +#: sql_help.c:877 +msgid "restart" +msgstr "재시작" + +#: sql_help.c:878 sql_help.c:2155 +msgid "cache" +msgstr "ìºì‰¬" + +#: sql_help.c:1025 +msgid "table_constraint_using_index" +msgstr "" + +#: sql_help.c:1033 sql_help.c:1034 sql_help.c:1035 sql_help.c:1036 +msgid "rewrite_rule_name" +msgstr "" + +#: sql_help.c:1047 +msgid "and table_constraint_using_index is:" +msgstr "" + +#: sql_help.c:1065 sql_help.c:1068 sql_help.c:2324 +msgid "tablespace_option" +msgstr "í…Œì´ë¸”스페ì´ìФ_옵션" + +#: sql_help.c:1089 sql_help.c:1092 sql_help.c:1098 sql_help.c:1102 +msgid "token_type" +msgstr "토í°_종류" + +#: sql_help.c:1090 sql_help.c:1093 +msgid "dictionary_name" +msgstr "사전ì´ë¦„" + +#: sql_help.c:1095 sql_help.c:1099 +msgid "old_dictionary" +msgstr "옛사전" + +#: sql_help.c:1096 sql_help.c:1100 +msgid "new_dictionary" +msgstr "새사전" + +#: sql_help.c:1191 sql_help.c:1201 sql_help.c:1204 sql_help.c:1205 +#: sql_help.c:2473 +msgid "attribute_name" +msgstr "ì†ì„±ì´ë¦„" + +#: sql_help.c:1192 +msgid "new_attribute_name" +msgstr "새ì†ì„±ì´ë¦„" + +#: sql_help.c:1198 +msgid "new_enum_value" +msgstr "" + +#: sql_help.c:1199 +msgid "existing_enum_value" +msgstr "" + +#: sql_help.c:1269 sql_help.c:1841 sql_help.c:2167 sql_help.c:2551 +#: sql_help.c:2948 sql_help.c:3119 sql_help.c:3154 sql_help.c:3451 +msgid "server_name" +msgstr "서버ì´ë¦„" + +#: sql_help.c:1297 sql_help.c:1300 sql_help.c:2566 +msgid "view_option_name" +msgstr "ë·°_옵션ì´ë¦„" + +#: sql_help.c:1298 sql_help.c:2567 +msgid "view_option_value" +msgstr "" + +#: sql_help.c:1323 sql_help.c:3779 sql_help.c:3781 sql_help.c:3805 +msgid "transaction_mode" +msgstr "트랜잭션모드" + +#: sql_help.c:1324 sql_help.c:3782 sql_help.c:3806 +msgid "where transaction_mode is one of:" +msgstr "트랜잭션모드 사용법:" + +#: sql_help.c:1409 +msgid "relation_name" +msgstr "릴레ì´ì…˜ì´ë¦„" + +#: sql_help.c:1414 sql_help.c:3115 sql_help.c:3447 +msgid "domain_name" +msgstr "ë„ë©”ì¸ì´ë¦„" + +#: sql_help.c:1436 +msgid "policy_name" +msgstr "ì •ì±…ì´ë¦„" + +#: sql_help.c:1440 +msgid "rule_name" +msgstr "룰ì´ë¦„" + +#: sql_help.c:1457 +msgid "text" +msgstr "" + +#: sql_help.c:1482 sql_help.c:3297 sql_help.c:3485 +msgid "transaction_id" +msgstr "" + +#: sql_help.c:1513 sql_help.c:1519 sql_help.c:3223 +msgid "filename" +msgstr "파ì¼ì´ë¦„" + +#: sql_help.c:1514 sql_help.c:1520 sql_help.c:2110 sql_help.c:2111 +#: sql_help.c:2112 +msgid "command" +msgstr "명령어" + +#: sql_help.c:1518 sql_help.c:1981 sql_help.c:2310 sql_help.c:2568 +#: sql_help.c:2586 sql_help.c:3188 +msgid "query" +msgstr "쿼리문" + +#: sql_help.c:1522 sql_help.c:2993 +msgid "where option can be one of:" +msgstr "옵션 사용법:" + +#: sql_help.c:1523 +msgid "format_name" +msgstr "입출력양ì‹ì´ë¦„" + +#: sql_help.c:1524 sql_help.c:1525 sql_help.c:1528 sql_help.c:2994 +#: sql_help.c:2995 sql_help.c:2996 sql_help.c:2997 sql_help.c:2998 +msgid "boolean" +msgstr "" + +#: sql_help.c:1526 +msgid "delimiter_character" +msgstr "구분문ìž" + +#: sql_help.c:1527 +msgid "null_string" +msgstr "ë„문ìžì—´" + +#: sql_help.c:1529 +msgid "quote_character" +msgstr "ì¸ìš©ë¶€í˜¸" + +#: sql_help.c:1530 +msgid "escape_character" +msgstr "ì´ìŠ¤ì¼€ì´í”„ 문ìž" + +#: sql_help.c:1534 +msgid "encoding_name" +msgstr "ì¸ì½”딩ì´ë¦„" + +#: sql_help.c:1545 +msgid "access_method_type" +msgstr "" + +#: sql_help.c:1611 sql_help.c:1630 sql_help.c:1633 +msgid "arg_data_type" +msgstr "ì¸ìžìžë£Œí˜•" + +#: sql_help.c:1612 sql_help.c:1634 sql_help.c:1642 +msgid "sfunc" +msgstr "" + +#: sql_help.c:1613 sql_help.c:1635 sql_help.c:1643 +msgid "state_data_type" +msgstr "" + +#: sql_help.c:1614 sql_help.c:1636 sql_help.c:1644 +msgid "state_data_size" +msgstr "" + +#: sql_help.c:1615 sql_help.c:1637 sql_help.c:1645 +msgid "ffunc" +msgstr "" + +#: sql_help.c:1616 sql_help.c:1646 +msgid "combinefunc" +msgstr "" + +#: sql_help.c:1617 sql_help.c:1647 +msgid "serialfunc" +msgstr "" + +#: sql_help.c:1618 sql_help.c:1648 +msgid "deserialfunc" +msgstr "" + +#: sql_help.c:1619 sql_help.c:1638 sql_help.c:1649 +msgid "initial_condition" +msgstr "" + +#: sql_help.c:1620 sql_help.c:1650 +msgid "msfunc" +msgstr "" + +#: sql_help.c:1621 sql_help.c:1651 +msgid "minvfunc" +msgstr "" + +#: sql_help.c:1622 sql_help.c:1652 +msgid "mstate_data_type" +msgstr "" + +#: sql_help.c:1623 sql_help.c:1653 +msgid "mstate_data_size" +msgstr "" + +#: sql_help.c:1624 sql_help.c:1654 +msgid "mffunc" +msgstr "" + +#: sql_help.c:1625 sql_help.c:1655 +msgid "minitial_condition" +msgstr "" + +#: sql_help.c:1626 sql_help.c:1656 +msgid "sort_operator" +msgstr "정렬연산ìž" + +#: sql_help.c:1639 +msgid "or the old syntax" +msgstr "" + +#: sql_help.c:1641 +msgid "base_type" +msgstr "기본ìžë£Œí˜•" + +#: sql_help.c:1695 +msgid "locale" +msgstr "로케ì¼" + +#: sql_help.c:1696 sql_help.c:1732 +msgid "lc_collate" +msgstr "" + +#: sql_help.c:1697 sql_help.c:1733 +msgid "lc_ctype" +msgstr "lc_ctype" + +#: sql_help.c:1699 +msgid "existing_collation" +msgstr "" + +#: sql_help.c:1709 +msgid "source_encoding" +msgstr "ì›ëž˜ì¸ì½”딩" + +#: sql_help.c:1710 +msgid "dest_encoding" +msgstr "대ìƒì¸ì½”딩" + +#: sql_help.c:1730 sql_help.c:2350 +msgid "template" +msgstr "템플릿" + +#: sql_help.c:1731 +msgid "encoding" +msgstr "ì¸ì½”딩" + +#: sql_help.c:1757 +msgid "constraint" +msgstr "제약조건" + +#: sql_help.c:1758 +msgid "where constraint is:" +msgstr "제약조건 사용법:" + +#: sql_help.c:1772 sql_help.c:2107 sql_help.c:2422 +msgid "event" +msgstr "ì´ë²¤íЏ" + +#: sql_help.c:1773 +msgid "filter_variable" +msgstr "" + +#: sql_help.c:1788 +msgid "version" +msgstr "버전" + +#: sql_help.c:1789 +msgid "old_version" +msgstr "옛버전" + +#: sql_help.c:1844 sql_help.c:2256 +msgid "where column_constraint is:" +msgstr "칼럼_제약조건 사용법:" + +#: sql_help.c:1847 sql_help.c:1879 sql_help.c:2259 +msgid "default_expr" +msgstr "초기값_표현ì‹" + +#: sql_help.c:1848 sql_help.c:2266 +msgid "and table_constraint is:" +msgstr "í…Œì´ë¸”_제약조건 사용법:" + +#: sql_help.c:1880 +msgid "rettype" +msgstr "" + +#: sql_help.c:1882 +msgid "column_type" +msgstr "" + +#: sql_help.c:1890 +msgid "definition" +msgstr "함수정ì˜" + +#: sql_help.c:1891 +msgid "obj_file" +msgstr "오브ì íŠ¸íŒŒì¼" + +#: sql_help.c:1892 +msgid "link_symbol" +msgstr "ì—°ê²°í• _함수명" + +#: sql_help.c:1893 +msgid "attribute" +msgstr "ì†ì„±" + +#: sql_help.c:1927 sql_help.c:2092 sql_help.c:2540 +msgid "uid" +msgstr "" + +#: sql_help.c:1941 +msgid "method" +msgstr "색ì¸ë°©ë²•" + +#: sql_help.c:1945 sql_help.c:2291 sql_help.c:3197 +msgid "opclass" +msgstr "" + +#: sql_help.c:1949 sql_help.c:2277 +msgid "predicate" +msgstr "범위한정구문" + +#: sql_help.c:1961 +msgid "call_handler" +msgstr "" + +#: sql_help.c:1962 +msgid "inline_handler" +msgstr "" + +#: sql_help.c:1963 +msgid "valfunction" +msgstr "구문검사함수" + +#: sql_help.c:1999 +msgid "com_op" +msgstr "" + +#: sql_help.c:2000 +msgid "neg_op" +msgstr "" + +#: sql_help.c:2018 +msgid "family_name" +msgstr "" + +#: sql_help.c:2029 +msgid "storage_type" +msgstr "스토리지_유형" + +#: sql_help.c:2109 sql_help.c:2425 sql_help.c:2602 sql_help.c:3207 +#: sql_help.c:3622 sql_help.c:3624 sql_help.c:3712 sql_help.c:3714 +#: sql_help.c:3861 sql_help.c:3863 sql_help.c:3966 sql_help.c:4055 +#: sql_help.c:4057 +msgid "condition" +msgstr "ì¡°ê±´" + +#: sql_help.c:2113 sql_help.c:2428 +msgid "where event can be one of:" +msgstr "ì´ë²¤íЏ 사용법:" + +#: sql_help.c:2132 sql_help.c:2134 +msgid "schema_element" +msgstr "" + +#: sql_help.c:2168 +msgid "server_type" +msgstr "서버_종류" + +#: sql_help.c:2169 +msgid "server_version" +msgstr "서버_버전" + +#: sql_help.c:2170 sql_help.c:3117 sql_help.c:3449 +msgid "fdw_name" +msgstr "" + +#: sql_help.c:2242 +msgid "source_table" +msgstr "ì›ë³¸í…Œì´ë¸”" + +#: sql_help.c:2243 +msgid "like_option" +msgstr "LIKE구문옵션" + +#: sql_help.c:2260 sql_help.c:2261 sql_help.c:2270 sql_help.c:2272 +#: sql_help.c:2276 +msgid "index_parameters" +msgstr "색ì¸ë§¤ê°œë³€ìˆ˜" + +#: sql_help.c:2262 sql_help.c:2279 +msgid "reftable" +msgstr "참조테ì´ë¸”" + +#: sql_help.c:2263 sql_help.c:2280 +msgid "refcolumn" +msgstr "참조칼럼" + +#: sql_help.c:2274 +msgid "exclude_element" +msgstr "" + +#: sql_help.c:2275 sql_help.c:3629 sql_help.c:3719 sql_help.c:3868 +#: sql_help.c:3997 sql_help.c:4062 +msgid "operator" +msgstr "ì—°ì‚°ìž" + +#: sql_help.c:2283 +msgid "and like_option is:" +msgstr "" + +#: sql_help.c:2284 +msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" +msgstr "" + +#: sql_help.c:2288 +msgid "exclude_element in an EXCLUDE constraint is:" +msgstr "" + +#: sql_help.c:2323 +msgid "directory" +msgstr "디렉터리" + +#: sql_help.c:2337 +msgid "parser_name" +msgstr "구문분ì„기_ì´ë¦„" + +#: sql_help.c:2338 +msgid "source_config" +msgstr "ì›ë³¸_설정" + +#: sql_help.c:2367 +msgid "start_function" +msgstr "시작_함수" + +#: sql_help.c:2368 +msgid "gettoken_function" +msgstr "gettoken함수" + +#: sql_help.c:2369 +msgid "end_function" +msgstr "종료_함수" + +#: sql_help.c:2370 +msgid "lextypes_function" +msgstr "lextypes함수" + +#: sql_help.c:2371 +msgid "headline_function" +msgstr "headline함수" + +#: sql_help.c:2383 +msgid "init_function" +msgstr "init함수" + +#: sql_help.c:2384 +msgid "lexize_function" +msgstr "lexize함수" + +#: sql_help.c:2397 +msgid "from_sql_function_name" +msgstr "" + +#: sql_help.c:2399 +msgid "to_sql_function_name" +msgstr "" + +#: sql_help.c:2424 +msgid "referenced_table_name" +msgstr "" + +#: sql_help.c:2427 +msgid "arguments" +msgstr "ì¸ìžë“¤" + +#: sql_help.c:2477 sql_help.c:3557 +msgid "label" +msgstr "" + +#: sql_help.c:2479 +msgid "subtype" +msgstr "" + +#: sql_help.c:2480 +msgid "subtype_operator_class" +msgstr "" + +#: sql_help.c:2482 +msgid "canonical_function" +msgstr "" + +#: sql_help.c:2483 +msgid "subtype_diff_function" +msgstr "" + +#: sql_help.c:2485 +msgid "input_function" +msgstr "입력함수" + +#: sql_help.c:2486 +msgid "output_function" +msgstr "출력함수" + +#: sql_help.c:2487 +msgid "receive_function" +msgstr "받는함수" + +#: sql_help.c:2488 +msgid "send_function" +msgstr "주는함수" + +#: sql_help.c:2489 +msgid "type_modifier_input_function" +msgstr "" + +#: sql_help.c:2490 +msgid "type_modifier_output_function" +msgstr "" + +#: sql_help.c:2491 +msgid "analyze_function" +msgstr "ë¶„ì„함수" + +#: sql_help.c:2492 +msgid "internallength" +msgstr "" + +#: sql_help.c:2493 +msgid "alignment" +msgstr "ì •ë ¬" + +#: sql_help.c:2494 +msgid "storage" +msgstr "스토리지" + +#: sql_help.c:2495 +msgid "like_type" +msgstr "" + +#: sql_help.c:2496 +msgid "category" +msgstr "" + +#: sql_help.c:2497 +msgid "preferred" +msgstr "" + +#: sql_help.c:2498 +msgid "default" +msgstr "기본값" + +#: sql_help.c:2499 +msgid "element" +msgstr "요소" + +#: sql_help.c:2500 +msgid "delimiter" +msgstr "구분ìž" + +#: sql_help.c:2501 +msgid "collatable" +msgstr "" + +#: sql_help.c:2598 sql_help.c:3183 sql_help.c:3617 sql_help.c:3706 +#: sql_help.c:3856 sql_help.c:3956 sql_help.c:4050 +msgid "with_query" +msgstr "" + +#: sql_help.c:2600 sql_help.c:3185 sql_help.c:3636 sql_help.c:3642 +#: sql_help.c:3645 sql_help.c:3649 sql_help.c:3653 sql_help.c:3661 +#: sql_help.c:3875 sql_help.c:3881 sql_help.c:3884 sql_help.c:3888 +#: sql_help.c:3892 sql_help.c:3900 sql_help.c:3958 sql_help.c:4069 +#: sql_help.c:4075 sql_help.c:4078 sql_help.c:4082 sql_help.c:4086 +#: sql_help.c:4094 +msgid "alias" +msgstr "" + +#: sql_help.c:2601 +msgid "using_list" +msgstr "" + +#: sql_help.c:2603 sql_help.c:3024 sql_help.c:3264 sql_help.c:3967 +msgid "cursor_name" +msgstr "커서ì´ë¦„" + +#: sql_help.c:2604 sql_help.c:3191 sql_help.c:3968 +msgid "output_expression" +msgstr "출력표현ì‹" + +#: sql_help.c:2605 sql_help.c:3192 sql_help.c:3620 sql_help.c:3709 +#: sql_help.c:3859 sql_help.c:3969 sql_help.c:4053 +msgid "output_name" +msgstr "" + +#: sql_help.c:2621 +msgid "code" +msgstr "" + +#: sql_help.c:2972 +msgid "parameter" +msgstr "매개변수" + +#: sql_help.c:2991 sql_help.c:2992 sql_help.c:3289 +msgid "statement" +msgstr "명령구문" + +#: sql_help.c:3023 sql_help.c:3263 +msgid "direction" +msgstr "ë°©í–¥" + +#: sql_help.c:3025 sql_help.c:3265 +msgid "where direction can be empty or one of:" +msgstr "ë°©í–¥ ìžë¦¬ëŠ” 비워ë‘거나 ë‹¤ìŒ ì¤‘ 하나:" + +#: sql_help.c:3026 sql_help.c:3027 sql_help.c:3028 sql_help.c:3029 +#: sql_help.c:3030 sql_help.c:3266 sql_help.c:3267 sql_help.c:3268 +#: sql_help.c:3269 sql_help.c:3270 sql_help.c:3630 sql_help.c:3632 +#: sql_help.c:3720 sql_help.c:3722 sql_help.c:3869 sql_help.c:3871 +#: sql_help.c:3998 sql_help.c:4000 sql_help.c:4063 sql_help.c:4065 +msgid "count" +msgstr "출력개수" + +#: sql_help.c:3110 sql_help.c:3442 +msgid "sequence_name" +msgstr "시퀀스ì´ë¦„" + +#: sql_help.c:3123 sql_help.c:3455 +msgid "arg_name" +msgstr "ì¸ìžì´ë¦„" + +#: sql_help.c:3124 sql_help.c:3456 +msgid "arg_type" +msgstr "ì¸ìžìžë£Œí˜•" + +#: sql_help.c:3129 sql_help.c:3461 +msgid "loid" +msgstr "" + +#: sql_help.c:3152 +msgid "remote_schema" +msgstr "ì›ê²©_스키마" + +#: sql_help.c:3155 +msgid "local_schema" +msgstr "로컬_스키마" + +#: sql_help.c:3189 +msgid "conflict_target" +msgstr "" + +#: sql_help.c:3190 +msgid "conflict_action" +msgstr "" + +#: sql_help.c:3193 +msgid "where conflict_target can be one of:" +msgstr "conflict_target 사용법:" + +#: sql_help.c:3194 +msgid "index_column_name" +msgstr "ì¸ë±ìŠ¤ì¹¼ëŸ¼ì´ë¦„" + +#: sql_help.c:3195 +msgid "index_expression" +msgstr "ì¸ë±ìŠ¤í‘œí˜„ì‹" + +#: sql_help.c:3198 +msgid "index_predicate" +msgstr "" + +#: sql_help.c:3200 +msgid "and conflict_action is one of:" +msgstr "conflict_action 사용법:" + +#: sql_help.c:3206 sql_help.c:3964 +msgid "sub-SELECT" +msgstr "" + +#: sql_help.c:3215 sql_help.c:3278 sql_help.c:3940 +msgid "channel" +msgstr "" + +#: sql_help.c:3237 +msgid "lockmode" +msgstr "" + +#: sql_help.c:3238 +msgid "where lockmode is one of:" +msgstr "lockmode 사용법:" + +#: sql_help.c:3279 +msgid "payload" +msgstr "" + +#: sql_help.c:3306 +msgid "old_role" +msgstr "기존롤" + +#: sql_help.c:3307 +msgid "new_role" +msgstr "새롤" + +#: sql_help.c:3332 sql_help.c:3493 sql_help.c:3501 +msgid "savepoint_name" +msgstr "savepoint_name" + +#: sql_help.c:3534 +msgid "provider" +msgstr "" + +#: sql_help.c:3621 sql_help.c:3663 sql_help.c:3665 sql_help.c:3711 +#: sql_help.c:3860 sql_help.c:3902 sql_help.c:3904 sql_help.c:4054 +#: sql_help.c:4096 sql_help.c:4098 +msgid "from_item" +msgstr "" + +#: sql_help.c:3623 sql_help.c:3675 sql_help.c:3862 sql_help.c:3914 +#: sql_help.c:4056 sql_help.c:4108 +msgid "grouping_element" +msgstr "" + +#: sql_help.c:3625 sql_help.c:3715 sql_help.c:3864 sql_help.c:4058 +msgid "window_name" +msgstr "윈ë„ìš°ì´ë¦„" + +#: sql_help.c:3626 sql_help.c:3716 sql_help.c:3865 sql_help.c:4059 +msgid "window_definition" +msgstr "ì›ë„ìš°ì •ì˜" + +#: sql_help.c:3627 sql_help.c:3641 sql_help.c:3679 sql_help.c:3717 +#: sql_help.c:3866 sql_help.c:3880 sql_help.c:3918 sql_help.c:4060 +#: sql_help.c:4074 sql_help.c:4112 +msgid "select" +msgstr "" + +#: sql_help.c:3634 sql_help.c:3873 sql_help.c:4067 +msgid "where from_item can be one of:" +msgstr "" + +#: sql_help.c:3637 sql_help.c:3643 sql_help.c:3646 sql_help.c:3650 +#: sql_help.c:3662 sql_help.c:3876 sql_help.c:3882 sql_help.c:3885 +#: sql_help.c:3889 sql_help.c:3901 sql_help.c:4070 sql_help.c:4076 +#: sql_help.c:4079 sql_help.c:4083 sql_help.c:4095 +msgid "column_alias" +msgstr "칼럼별칭" + +#: sql_help.c:3638 sql_help.c:3877 sql_help.c:4071 +msgid "sampling_method" +msgstr "표본추출방법" + +#: sql_help.c:3639 sql_help.c:3648 sql_help.c:3652 sql_help.c:3656 +#: sql_help.c:3659 sql_help.c:3878 sql_help.c:3887 sql_help.c:3891 +#: sql_help.c:3895 sql_help.c:3898 sql_help.c:4072 sql_help.c:4081 +#: sql_help.c:4085 sql_help.c:4089 sql_help.c:4092 +msgid "argument" +msgstr "ì¸ìž" + +#: sql_help.c:3640 sql_help.c:3879 sql_help.c:4073 +msgid "seed" +msgstr "" + +#: sql_help.c:3644 sql_help.c:3677 sql_help.c:3883 sql_help.c:3916 +#: sql_help.c:4077 sql_help.c:4110 +msgid "with_query_name" +msgstr "" + +#: sql_help.c:3654 sql_help.c:3657 sql_help.c:3660 sql_help.c:3893 +#: sql_help.c:3896 sql_help.c:3899 sql_help.c:4087 sql_help.c:4090 +#: sql_help.c:4093 +msgid "column_definition" +msgstr "칼럼정ì˜" + +#: sql_help.c:3664 sql_help.c:3903 sql_help.c:4097 +msgid "join_type" +msgstr "" + +#: sql_help.c:3666 sql_help.c:3905 sql_help.c:4099 +msgid "join_condition" +msgstr "" + +#: sql_help.c:3667 sql_help.c:3906 sql_help.c:4100 +msgid "join_column" +msgstr "" + +#: sql_help.c:3668 sql_help.c:3907 sql_help.c:4101 +msgid "and grouping_element can be one of:" +msgstr "" + +#: sql_help.c:3676 sql_help.c:3915 sql_help.c:4109 +msgid "and with_query is:" +msgstr "" + +#: sql_help.c:3680 sql_help.c:3919 sql_help.c:4113 +msgid "values" +msgstr "ê°’" + +#: sql_help.c:3681 sql_help.c:3920 sql_help.c:4114 +msgid "insert" +msgstr "" + +#: sql_help.c:3682 sql_help.c:3921 sql_help.c:4115 +msgid "update" +msgstr "" + +#: sql_help.c:3683 sql_help.c:3922 sql_help.c:4116 +msgid "delete" +msgstr "" + +#: sql_help.c:3710 +msgid "new_table" +msgstr "새테ì´ë¸”" + +#: sql_help.c:3735 +msgid "timezone" +msgstr "" + +#: sql_help.c:3780 +msgid "snapshot_id" +msgstr "" + +#: sql_help.c:3965 +msgid "from_list" +msgstr "" + +#: sql_help.c:3996 +msgid "sort_expression" +msgstr "" + +#: sql_help.c:4123 sql_help.c:4863 +msgid "abort the current transaction" +msgstr "현재 트랜잭션 중지함" + +#: sql_help.c:4128 +msgid "change the definition of an aggregate function" +msgstr "집계함수 ì •ë³´ 바꾸기" + +#: sql_help.c:4133 +msgid "change the definition of a collation" +msgstr "collation ì •ì˜ ë°”ê¾¸ê¸°" + +#: sql_help.c:4138 +msgid "change the definition of a conversion" +msgstr "문ìžì½”드 변환규칙(conversion) ì •ë³´ 바꾸기" + +#: sql_help.c:4143 +msgid "change a database" +msgstr "ë°ì´í„°ë² ì´ìФ 변경" + +#: sql_help.c:4148 +msgid "define default access privileges" +msgstr "기본 ì ‘ê·¼ 권한 ì •ì˜" + +#: sql_help.c:4153 +msgid "change the definition of a domain" +msgstr "ë„ë©”ì¸ ì •ë³´ 바꾸기" + +#: sql_help.c:4158 +msgid "change the definition of an event trigger" +msgstr "트리거 ì •ë³´ 바꾸기" + +#: sql_help.c:4163 +msgid "change the definition of an extension" +msgstr "확장모듈 ì •ì˜ ë°”ê¾¸ê¸°" + +#: sql_help.c:4168 +msgid "change the definition of a foreign-data wrapper" +msgstr "외부 ë°ì´í„° ëž˜í¼ ì •ì˜ ë°”ê¾¸ê¸°" + +#: sql_help.c:4173 +msgid "change the definition of a foreign table" +msgstr "외부 í…Œì´ë¸” ì •ì˜ ë°”ê¾¸ê¸°" + +#: sql_help.c:4178 +msgid "change the definition of a function" +msgstr "함수 ì •ë³´ 바꾸기" + +#: sql_help.c:4183 +msgid "change role name or membership" +msgstr "롤 ì´ë¦„ì´ë‚˜ 맴버쉽 바꾸기" + +#: sql_help.c:4188 +msgid "change the definition of an index" +msgstr "ì¸ë±ìФ ì •ì˜ ë°”ê¾¸ê¸°" + +#: sql_help.c:4193 +msgid "change the definition of a procedural language" +msgstr "procedural language ì •ë³´ 바꾸기" + +#: sql_help.c:4198 +msgid "change the definition of a large object" +msgstr "대형 ê°ì²´ ì •ì˜ ë°”ê¾¸ê¸°" + +#: sql_help.c:4203 +msgid "change the definition of a materialized view" +msgstr "materialized ë·° ì •ì˜ ë°”ê¾¸ê¸°" + +#: sql_help.c:4208 +msgid "change the definition of an operator" +msgstr "ì—°ì‚°ìž ì •ì˜ ë°”ê¾¸ê¸°" + +#: sql_help.c:4213 +msgid "change the definition of an operator class" +msgstr "ì—°ì‚°ìž í´ëž˜ìФ ì •ë³´ 바꾸기" + +#: sql_help.c:4218 +msgid "change the definition of an operator family" +msgstr "ì—°ì‚°ìž ë¶€ë¥˜ì˜ ì •ì˜ ë°”ê¾¸ê¸°" + +#: sql_help.c:4223 +msgid "change the definition of a row level security policy" +msgstr "로우 단위 보안 ì •ì±…ì˜ ì •ì˜ ë°”ê¾¸ê¸°" + +#: sql_help.c:4228 sql_help.c:4298 +msgid "change a database role" +msgstr "ë°ì´í„°ë² ì´ìФ 롤 변경" + +#: sql_help.c:4233 +msgid "change the definition of a rule" +msgstr "룰 ì •ì˜ ë°”ê¾¸ê¸°" + +#: sql_help.c:4238 +msgid "change the definition of a schema" +msgstr "스키마 ì´ë¦„ 바꾸기" + +#: sql_help.c:4243 +msgid "change the definition of a sequence generator" +msgstr "시퀀스 ì •ë³´ 바꾸기" + +#: sql_help.c:4248 +msgid "change the definition of a foreign server" +msgstr "외부 서버 ì •ì˜ ë°”ê¾¸ê¸°" + +#: sql_help.c:4253 +msgid "change a server configuration parameter" +msgstr "서버 환경 설정 매개 변수 바꾸기" + +#: sql_help.c:4258 +msgid "change the definition of a table" +msgstr "í…Œì´ë¸” ì •ë³´ 바꾸기" + +#: sql_help.c:4263 +msgid "change the definition of a tablespace" +msgstr "í…Œì´ë¸”스페ì´ìФ ì •ì˜ ë°”ê¾¸ê¸°" + +#: sql_help.c:4268 +msgid "change the definition of a text search configuration" +msgstr "í…스트 검색 구성 ì •ì˜ ë°”ê¾¸ê¸°" + +#: sql_help.c:4273 +msgid "change the definition of a text search dictionary" +msgstr "í…스트 검색 사전 ì •ì˜ ë°”ê¾¸ê¸°" + +#: sql_help.c:4278 +msgid "change the definition of a text search parser" +msgstr "í…스트 검색 파서 ì •ì˜ ë°”ê¾¸ê¸°" + +#: sql_help.c:4283 +msgid "change the definition of a text search template" +msgstr "í…스트 검색 템플릿 ì •ì˜ ë°”ê¾¸ê¸°" + +#: sql_help.c:4288 +msgid "change the definition of a trigger" +msgstr "트리거 ì •ë³´ 바꾸기" + +#: sql_help.c:4293 +msgid "change the definition of a type" +msgstr "ìžë£Œí˜• ì •ì˜ ë°”ê¾¸ê¸°" + +#: sql_help.c:4303 +msgid "change the definition of a user mapping" +msgstr "ì‚¬ìš©ìž ë§¤í•‘ ì •ì˜ ë°”ê¾¸ê¸°" + +#: sql_help.c:4308 +msgid "change the definition of a view" +msgstr "ë·° ì •ì˜ ë°”ê¾¸ê¸°" + +#: sql_help.c:4313 +msgid "collect statistics about a database" +msgstr "ë°ì´í„°ë² ì´ìФ 사용 통계 정보를 갱신함" + +#: sql_help.c:4318 sql_help.c:4928 +msgid "start a transaction block" +msgstr "트랜잭션 ë¸”ëŸ­ì„ ì‹œìž‘í•¨" + +#: sql_help.c:4323 +msgid "force a transaction log checkpoint" +msgstr "트랜잭션 로그를 강제로 checkpoint함" + +#: sql_help.c:4328 +msgid "close a cursor" +msgstr "커서 닫기" + +#: sql_help.c:4333 +msgid "cluster a table according to an index" +msgstr "지정한 ì¸ë±ìФ 기준으로 í…Œì´ë¸” ìžë£Œë¥¼ 다시 저장함" + +#: sql_help.c:4338 +msgid "define or change the comment of an object" +msgstr "해당 ê°œì²´ì˜ ì½”ë©˜íŠ¸ë¥¼ 지정하거나 수정함" + +#: sql_help.c:4343 sql_help.c:4763 +msgid "commit the current transaction" +msgstr "현재 트랜잭션 commit" + +#: sql_help.c:4348 +msgid "commit a transaction that was earlier prepared for two-phase commit" +msgstr "two-phase ì»¤ë°‹ì„ ìœ„í•´ 먼저 ì¤€ë¹„ëœ íŠ¸ëžœìž­ì…˜ì„ ì»¤ë°‹í•˜ì„¸ìš”." + +#: sql_help.c:4353 +msgid "copy data between a file and a table" +msgstr "í…Œì´ë¸”ê³¼ íŒŒì¼ ì‚¬ì´ ìžë£Œë¥¼ 복사함" + +#: sql_help.c:4358 +msgid "define a new access method" +msgstr "새 ì ‘ì† ë°©ë²• ì •ì˜" + +#: sql_help.c:4363 +msgid "define a new aggregate function" +msgstr "새 집계합수 만들기" + +#: sql_help.c:4368 +msgid "define a new cast" +msgstr "새 í˜•ë³€í™˜ìž ë§Œë“¤ê¸°" + +#: sql_help.c:4373 +msgid "define a new collation" +msgstr "새 collation 만들기" + +#: sql_help.c:4378 +msgid "define a new encoding conversion" +msgstr "새 문ìžì½”드변환규칙(conversion) 만들기" + +#: sql_help.c:4383 +msgid "create a new database" +msgstr "ë°ì´í„°ë² ì´ìФ ìƒì„±" + +#: sql_help.c:4388 +msgid "define a new domain" +msgstr "새 ë„ë©”ì¸ ë§Œë“¤ê¸°" + +#: sql_help.c:4393 +msgid "define a new event trigger" +msgstr "새 ì´ë²¤íЏ 트리거 만들기" + +#: sql_help.c:4398 +msgid "install an extension" +msgstr "" + +#: sql_help.c:4403 +msgid "define a new foreign-data wrapper" +msgstr "새 외부 ë°ì´í„° ëž˜í¼ ì •ì˜" + +#: sql_help.c:4408 +msgid "define a new foreign table" +msgstr "새 외부 í…Œì´ë¸” ì •ì˜" + +#: sql_help.c:4413 +msgid "define a new function" +msgstr "새 함수 만들기" + +#: sql_help.c:4418 sql_help.c:4458 sql_help.c:4533 +msgid "define a new database role" +msgstr "새 ë°ì´í„°ë² ì´ìФ 롤 만들기" + +#: sql_help.c:4423 +msgid "define a new index" +msgstr "새 ì¸ë±ìФ 만들기" + +#: sql_help.c:4428 +msgid "define a new procedural language" +msgstr "새 프로시주얼 언어 만들기" + +#: sql_help.c:4433 +msgid "define a new materialized view" +msgstr "새 materialized ë·° 만들기" + +#: sql_help.c:4438 +msgid "define a new operator" +msgstr "새 ì—°ì‚°ìž ë§Œë“¤ê¸°" + +#: sql_help.c:4443 +msgid "define a new operator class" +msgstr "새 ì—°ìž”ìž í´ëž˜ìФ 만들기" + +#: sql_help.c:4448 +msgid "define a new operator family" +msgstr "새 ì—°ì‚°ìž ë¶€ë¥˜ 만들기" + +#: sql_help.c:4453 +msgid "define a new row level security policy for a table" +msgstr "특정 í…Œì´ë¸”ì— ë¡œìš° 단위 보안 ì •ì±… ì •ì˜" + +#: sql_help.c:4463 +msgid "define a new rewrite rule" +msgstr "새 룰(rule) 만들기" + +#: sql_help.c:4468 +msgid "define a new schema" +msgstr "새 스키마(schema) 만들기" + +#: sql_help.c:4473 +msgid "define a new sequence generator" +msgstr "새 시퀀스 만들기" + +#: sql_help.c:4478 +msgid "define a new foreign server" +msgstr "새 외부 서버 ì •ì˜" + +#: sql_help.c:4483 +msgid "define a new table" +msgstr "새 í…Œì´ë¸” 만들기" + +#: sql_help.c:4488 sql_help.c:4893 +msgid "define a new table from the results of a query" +msgstr "쿼리 결과를 새 í…Œì´ë¸”로 만들기" + +#: sql_help.c:4493 +msgid "define a new tablespace" +msgstr "새 í…Œì´ë¸”스페ì´ìФ 만들기" + +#: sql_help.c:4498 +msgid "define a new text search configuration" +msgstr "새 í…스트 검색 구성 ì •ì˜" + +#: sql_help.c:4503 +msgid "define a new text search dictionary" +msgstr "새 í…스트 검색 사전 ì •ì˜" + +#: sql_help.c:4508 +msgid "define a new text search parser" +msgstr "새 í…스트 검색 파서 ì •ì˜" + +#: sql_help.c:4513 +msgid "define a new text search template" +msgstr "새 í…스트 검색 템플릿 ì •ì˜" + +#: sql_help.c:4518 +msgid "define a new transform" +msgstr "새 transform 만들기" + +#: sql_help.c:4523 +msgid "define a new trigger" +msgstr "새 트리거 만들기" + +#: sql_help.c:4528 +msgid "define a new data type" +msgstr "새 ìžë£Œí˜• 만들기" + +#: sql_help.c:4538 +msgid "define a new mapping of a user to a foreign server" +msgstr "사용ìžì™€ 외부 서버 ê°„ì˜ ìƒˆ 매핑 ì •ì˜" + +#: sql_help.c:4543 +msgid "define a new view" +msgstr "새 view 만들기" + +#: sql_help.c:4548 +msgid "deallocate a prepared statement" +msgstr "ì¤€ë¹„ëœ êµ¬ë¬¸(prepared statement) ì •ì˜" + +#: sql_help.c:4553 +msgid "define a cursor" +msgstr "커서 지정" + +#: sql_help.c:4558 +msgid "delete rows of a table" +msgstr "í…Œì´ë¸”ì˜ ìžë£Œ ì‚­ì œ" + +#: sql_help.c:4563 +msgid "discard session state" +msgstr "세션 ìƒíƒœ ì‚­ì œ" + +#: sql_help.c:4568 +msgid "execute an anonymous code block" +msgstr "" + +#: sql_help.c:4573 +msgid "remove an access method" +msgstr "ì ‘ê·¼ 방법 ì‚­ì œ" + +#: sql_help.c:4578 +msgid "remove an aggregate function" +msgstr "집계 함수 ì‚­ì œ" + +#: sql_help.c:4583 +msgid "remove a cast" +msgstr "í˜•ë³€í™˜ìž ì‚­ì œ" + +#: sql_help.c:4588 +msgid "remove a collation" +msgstr "collation ì‚­ì œ" + +#: sql_help.c:4593 +msgid "remove a conversion" +msgstr "문ìžì½”드 변환규칙(conversion) ì‚­ì œ" + +#: sql_help.c:4598 +msgid "remove a database" +msgstr "ë°ì´í„°ë² ì´ìФ ì‚­ì œ" + +#: sql_help.c:4603 +msgid "remove a domain" +msgstr "ë„ë©”ì¸ ì‚­ì œ" + +#: sql_help.c:4608 +msgid "remove an event trigger" +msgstr "ì´ë²¤íЏ 트리거 ì‚­ì œ" + +#: sql_help.c:4613 +msgid "remove an extension" +msgstr "확장 모듈 ì‚­ì œ" + +#: sql_help.c:4618 +msgid "remove a foreign-data wrapper" +msgstr "외부 ë°ì´í„° ëž˜í¼ ì œê±°" + +#: sql_help.c:4623 +msgid "remove a foreign table" +msgstr "외부 í…Œì´ë¸” ì‚­ì œ" + +#: sql_help.c:4628 +msgid "remove a function" +msgstr "함수 ì‚­ì œ" + +#: sql_help.c:4633 sql_help.c:4678 sql_help.c:4748 +msgid "remove a database role" +msgstr "ë°ì´í„°ë² ì´ìФ 롤 ì‚­ì œ" + +#: sql_help.c:4638 +msgid "remove an index" +msgstr "ì¸ë±ìФ ì‚­ì œ" + +#: sql_help.c:4643 +msgid "remove a procedural language" +msgstr "프로시주얼 언어 ì‚­ì œ" + +#: sql_help.c:4648 +msgid "remove a materialized view" +msgstr "materialized ë·° ì‚­ì œ" + +#: sql_help.c:4653 +msgid "remove an operator" +msgstr "ì—°ì‚°ìž ì‚­ì œ" + +#: sql_help.c:4658 +msgid "remove an operator class" +msgstr "ì—°ì‚°ìž í´ëž˜ìФ ì‚­ì œ" + +#: sql_help.c:4663 +msgid "remove an operator family" +msgstr "ì—°ì‚°ìž ë¶€ë¥˜ ì‚­ì œ" + +#: sql_help.c:4668 +msgid "remove database objects owned by a database role" +msgstr "ë°ì´í„°ë² ì´ìФ 롤로 ê¶Œí•œì´ ë¶€ì—¬ëœ ë°ì´í„°ë² ì´ìФ ê°œì²´ë“¤ì„ ì‚­ì œí•˜ì„¸ìš”" + +#: sql_help.c:4673 +msgid "remove a row level security policy from a table" +msgstr "특정 í…Œì´ë¸”ì— ì •ì˜ëœ 로우 단위 보안 ì •ì±… ì‚­ì œ" + +#: sql_help.c:4683 +msgid "remove a rewrite rule" +msgstr "룰(rule) ì‚­ì œ" + +#: sql_help.c:4688 +msgid "remove a schema" +msgstr "스키마(schema) ì‚­ì œ" + +#: sql_help.c:4693 +msgid "remove a sequence" +msgstr "시퀀스 ì‚­ì œ" + +#: sql_help.c:4698 +msgid "remove a foreign server descriptor" +msgstr "외부 서버 ì„¤ëª…ìž ì œê±°" + +#: sql_help.c:4703 +msgid "remove a table" +msgstr "í…Œì´ë¸” ì‚­ì œ" + +#: sql_help.c:4708 +msgid "remove a tablespace" +msgstr "í…Œì´ë¸”스페ì´ìФ ì‚­ì œ" + +#: sql_help.c:4713 +msgid "remove a text search configuration" +msgstr "í…스트 검색 구성 제거" + +#: sql_help.c:4718 +msgid "remove a text search dictionary" +msgstr "í…스트 검색 사전 제거" + +#: sql_help.c:4723 +msgid "remove a text search parser" +msgstr "í…스트 검색 파서 제거" + +#: sql_help.c:4728 +msgid "remove a text search template" +msgstr "í…스트 검색 템플릿 제거" + +#: sql_help.c:4733 +msgid "remove a transform" +msgstr "transform ì‚­ì œ" + +#: sql_help.c:4738 +msgid "remove a trigger" +msgstr "트리거 ì‚­ì œ" + +#: sql_help.c:4743 +msgid "remove a data type" +msgstr "ìžë£Œí˜• ì‚­ì œ" + +#: sql_help.c:4753 +msgid "remove a user mapping for a foreign server" +msgstr "외부 ì„œë²„ì— ëŒ€í•œ ì‚¬ìš©ìž ë§¤í•‘ 제거" + +#: sql_help.c:4758 +msgid "remove a view" +msgstr "ë·°(view) ì‚­ì œ" + +#: sql_help.c:4768 +msgid "execute a prepared statement" +msgstr "ì¤€ë¹„ëœ êµ¬ë¬¸(prepared statement) 실행" + +#: sql_help.c:4773 +msgid "show the execution plan of a statement" +msgstr "쿼리 ì‹¤í–‰ê³„íš ë³´ê¸°" + +#: sql_help.c:4778 +msgid "retrieve rows from a query using a cursor" +msgstr "해당 커서ì—서 ìžë£Œ 뽑기" + +#: sql_help.c:4783 +msgid "define access privileges" +msgstr "액세스 권한 지정하기" + +#: sql_help.c:4788 +msgid "import table definitions from a foreign server" +msgstr "외부 서버로부터 í…Œì´ë¸” ì •ì˜ ê°€ì ¸ì˜¤ê¸°" + +#: sql_help.c:4793 +msgid "create new rows in a table" +msgstr "í…Œì´ë¸” ìžë£Œ 삽입" + +#: sql_help.c:4798 +msgid "listen for a notification" +msgstr "특정 서버 메시지 수신함" + +#: sql_help.c:4803 +msgid "load a shared library file" +msgstr "공유 ë¼ì´ë¸ŒëŸ¬ë¦¬ íŒŒì¼ ë¡œë“œ" + +#: sql_help.c:4808 +msgid "lock a table" +msgstr "í…Œì´ë¸” 잠금" + +#: sql_help.c:4813 +msgid "position a cursor" +msgstr "커서 위치 옮기기" + +#: sql_help.c:4818 +msgid "generate a notification" +msgstr "특정 서버 메시지 ë°œìƒ" + +#: sql_help.c:4823 +msgid "prepare a statement for execution" +msgstr "ì¤€ë¹„ëœ êµ¬ë¬¸(prepared statement) 만들기" + +#: sql_help.c:4828 +msgid "prepare the current transaction for two-phase commit" +msgstr "two-phase ì»¤ë°‹ì„ ìœ„í•´ 현재 íŠ¸ëžœìž­ì…˜ì„ ì¤€ë¹„í•¨" + +#: sql_help.c:4833 +msgid "change the ownership of database objects owned by a database role" +msgstr "ë°ì´í„°ë² ì´ìФ 롤로 ê¶Œí•œì´ ë¶€ì—¬ëœ ë°ì´í„°ë² ì´ìФ ê°œì²´ë“¤ì˜ ì†Œìœ ì£¼ 바꾸기" + +#: sql_help.c:4838 +msgid "replace the contents of a materialized view" +msgstr "" + +#: sql_help.c:4843 +msgid "rebuild indexes" +msgstr "ì¸ë±ìФ 다시 만들기" + +#: sql_help.c:4848 +msgid "destroy a previously defined savepoint" +msgstr "ì´ì „ ì •ì˜ëœ savepoint를 파기함" + +#: sql_help.c:4853 +msgid "restore the value of a run-time parameter to the default value" +msgstr "실시간 환경 ë³€ìˆ˜ê°’ì„ ì´ˆê¸°ê°’ìœ¼ë¡œ 다시 지정" + +#: sql_help.c:4858 +msgid "remove access privileges" +msgstr "액세스 권한 해제하기" + +#: sql_help.c:4868 +msgid "cancel a transaction that was earlier prepared for two-phase commit" +msgstr "two-phase ì»¤ë°‹ì„ ìœ„í•´ 먼저 준비ë˜ì—ˆë˜ 트랜잭션 실행취소하기" + +#: sql_help.c:4873 +msgid "roll back to a savepoint" +msgstr "savepoint 파기하기" + +#: sql_help.c:4878 +msgid "define a new savepoint within the current transaction" +msgstr "현재 트랜잭션ì—서 새로운 savepoint 만들기" + +#: sql_help.c:4883 +msgid "define or change a security label applied to an object" +msgstr "해당 ê°œì²´ì— ë³´ì•ˆ ë¼ë²¨ì„ ì •ì˜í•˜ê±°ë‚˜ 변경" + +#: sql_help.c:4888 sql_help.c:4933 sql_help.c:4963 +msgid "retrieve rows from a table or view" +msgstr "í…Œì´ë¸”ì´ë‚˜ ë·°ì˜ ìžë£Œë¥¼ 출력" + +#: sql_help.c:4898 +msgid "change a run-time parameter" +msgstr "실시간 환경 변수값 바꾸기" + +#: sql_help.c:4903 +msgid "set constraint check timing for the current transaction" +msgstr "현재 트랜잭션ì—서 제약조건 설정" + +#: sql_help.c:4908 +msgid "set the current user identifier of the current session" +msgstr "현재 ì„¸ì…˜ì˜ í˜„ìž¬ ì‚¬ìš©ìž ì‹ë³„ìžë¥¼ 지정" + +#: sql_help.c:4913 +msgid "" +"set the session user identifier and the current user identifier of the " +"current session" +msgstr "현재 ì„¸ì…˜ì˜ ì‚¬ìš©ìž ì¸ì¦ì„ 지정함 - ì‚¬ìš©ìž ì§€ì •" + +#: sql_help.c:4918 +msgid "set the characteristics of the current transaction" +msgstr "현재 íŠ¸ëžœìž­ì…˜ì˜ ì„±ì§ˆì„ ì§€ì •í•¨" + +#: sql_help.c:4923 +msgid "show the value of a run-time parameter" +msgstr "실시간 환경 ë³€ìˆ˜ê°’ë“¤ì„ ë³´ì—¬ì¤Œ" + +#: sql_help.c:4938 +msgid "empty a table or set of tables" +msgstr "하나 ë˜ëŠ” 지정한 ì—¬ëŸ¬ê°œì˜ í…Œì´ë¸”ì—서 모든 ìžë£Œ 지움" + +#: sql_help.c:4943 +msgid "stop listening for a notification" +msgstr "특정 서버 메시지 수신 기능 ë”" + +#: sql_help.c:4948 +msgid "update rows of a table" +msgstr "í…Œì´ë¸” ìžë£Œ 갱신" + +#: sql_help.c:4953 +msgid "garbage-collect and optionally analyze a database" +msgstr "물리ì ì¸ ìžë£Œ 정리 작업 - 쓰레기값 청소" + +#: sql_help.c:4958 +msgid "compute a set of rows" +msgstr "compute a set of rows" + +#: startup.c:189 +#, c-format +msgid "%s: -1 can only be used in non-interactive mode\n" +msgstr "%s: -1 ì˜µì…˜ì€ ë¹„ëŒ€í™”í˜• 모드ì—서만 사용할 수 있ìŒ\n" + +#: startup.c:289 +#, c-format +msgid "%s: could not open log file \"%s\": %s\n" +msgstr "%s: \"%s\" 로그 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s\n" + +#: startup.c:389 +#, c-format +msgid "" +"Type \"help\" for help.\n" +"\n" +msgstr "" +"ë„움ë§ì„ 보려면 \"help\"를 입력하십시오.\n" +"\n" + +#: startup.c:538 +#, c-format +msgid "%s: could not set printing parameter \"%s\"\n" +msgstr "%s: 출력 매개 변수 \"%s\" 지정할 수 ì—†ìŒ\n" + +#: startup.c:578 +#, c-format +msgid "%s: could not delete variable \"%s\"\n" +msgstr "%s: \"%s\" 변수를 지울 수 ì—†ìŒ\n" + +#: startup.c:588 +#, c-format +msgid "%s: could not set variable \"%s\"\n" +msgstr "%s: \"%s\" 변수를 지정할 수 ì—†ìŒ\n" + +#: startup.c:648 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "ìžì„¸í•œ ë„움ë§ì€ \"%s --help\"\n" + +#: startup.c:665 +#, c-format +msgid "%s: warning: extra command-line argument \"%s\" ignored\n" +msgstr "%s: 경고: 추가 명령행 ì¸ìˆ˜ \"%s\" 무시ë¨\n" + +#: startup.c:714 +#, c-format +msgid "%s: could not find own program executable\n" +msgstr "%s: 실행 가능한 í”„ë¡œê·¸ëž¨ì„ ì°¾ì„ ìˆ˜ 없습니다\n" + +#: startup.c:836 startup.c:883 startup.c:904 startup.c:941 startup.c:963 +#: variables.c:121 +#, c-format +msgid "unrecognized value \"%s\" for \"%s\"; assuming \"%s\"\n" +msgstr "\"%s\" ê°’ì€ \"%s\" 변수값으로 사용할 수 ì—†ìŒ; \"%s\" ê°’ì„ ì‚¬ìš©í•¨\n" + +#: tab-complete.c:3704 +#, c-format +msgid "" +"tab completion query failed: %s\n" +"Query was:\n" +"%s\n" +msgstr "" +"탭 ìžë™ì™„성용 쿼리 실패: %s\n" +"사용한 쿼리:\n" +"%s\n" diff --git a/src/bin/psql/po/pt_BR.po b/src/bin/psql/po/pt_BR.po index 338b20f08a..44df4aecf3 100644 --- a/src/bin/psql/po/pt_BR.po +++ b/src/bin/psql/po/pt_BR.po @@ -1,13 +1,13 @@ # Brazilian Portuguese message translation file for psql # Copyright (C) 2009 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Euler Taveira de Oliveira , 2003-2015. +# Euler Taveira de Oliveira , 2003-2017. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.5\n" +"Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2015-09-17 22:32-0300\n" +"POT-Creation-Date: 2017-08-06 01:59-0300\n" "PO-Revision-Date: 2005-11-02 10:30-0300\n" "Last-Translator: Euler Taveira de Oliveira \n" "Language-Team: Brazilian Portuguese \n" @@ -53,8 +53,8 @@ msgid "pclose failed: %s" msgstr "pclose falhou: %s" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 -#: ../../common/fe_memutils.c:98 command.c:318 input.c:205 mainloop.c:73 -#: mainloop.c:253 +#: ../../common/fe_memutils.c:98 command.c:342 input.c:227 mainloop.c:80 +#: mainloop.c:261 #, c-format msgid "out of memory\n" msgstr "sem memória\n" @@ -69,7 +69,7 @@ msgstr "não pode duplicar ponteiro nulo (erro interno)\n" msgid "could not look up effective user ID %ld: %s" msgstr "não pôde encontrar ID de usuário efetivo %ld: %s" -#: ../../common/username.c:47 command.c:273 +#: ../../common/username.c:47 command.c:299 msgid "user does not exist" msgstr "usuário não existe" @@ -113,226 +113,282 @@ msgstr "processo filho foi terminado pelo sinal %d" msgid "child process exited with unrecognized status %d" msgstr "processo filho terminou com status desconhecido %d" -#: command.c:114 +#: ../../fe_utils/print.c:354 +#, c-format +msgid "(%lu row)" +msgid_plural "(%lu rows)" +msgstr[0] "(%lu registro)" +msgstr[1] "(%lu registros)" + +#: ../../fe_utils/print.c:2914 +#, c-format +msgid "Interrupted\n" +msgstr "Interrompido\n" + +#: ../../fe_utils/print.c:2978 +#, c-format +msgid "Cannot add header to table content: column count of %d exceeded.\n" +msgstr "Não pode adicionar cabeçalho a conteúdo de tabela: quantidade de colunas %d foi excedida.\n" + +#: ../../fe_utils/print.c:3018 +#, c-format +msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" +msgstr "Não pode adicionar célula a conteúdo de tabela: quantidade total de células %d foi excedida.\n" + +#: ../../fe_utils/print.c:3267 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "formato de saída inválido (erro interno): %d" + +#: ../../fe_utils/psqlscan.l:713 +#, c-format +msgid "skipping recursive expansion of variable \"%s\"\n" +msgstr "ignorando expansão recursiva da variável \"%s\"\n" + +#: command.c:129 #, c-format msgid "Invalid command \\%s. Try \\? for help.\n" msgstr "Comando inválido \\%s. Tente \\? para ajuda.\n" -#: command.c:116 +#: command.c:131 #, c-format msgid "invalid command \\%s\n" msgstr "comando inválido \\%s\n" -#: command.c:127 +#: command.c:142 #, c-format msgid "\\%s: extra argument \"%s\" ignored\n" msgstr "\\%s: argumento extra \"%s\" ignorado\n" -#: command.c:271 +#: command.c:297 #, c-format msgid "could not get home directory for user ID %ld: %s\n" msgstr "não pôde obter diretório base para ID de usuário %ld: %s\n" -#: command.c:289 +#: command.c:315 #, c-format msgid "\\%s: could not change directory to \"%s\": %s\n" msgstr "\\%s: não pôde mudar diretório para \"%s\": %s\n" -#: command.c:304 common.c:442 common.c:500 common.c:962 +#: command.c:330 common.c:553 common.c:611 common.c:1144 #, c-format msgid "You are currently not connected to a database.\n" msgstr "Você não está conectado ao banco de dados.\n" -#: command.c:331 +#: command.c:355 #, c-format msgid "You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n" msgstr "Você está conectado ao banco de dados \"%s\" como usuário \"%s\" via soquete em \"%s\" na porta \"%s\".\n" -#: command.c:334 +#: command.c:358 #, c-format msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n" msgstr "Você está conectado ao banco de dados \"%s\" como usuário \"%s\" na máquina \"%s\" na porta \"%s\".\n" -#: command.c:535 command.c:605 command.c:1405 +#: command.c:574 command.c:647 command.c:746 command.c:1584 #, c-format msgid "no query buffer\n" msgstr "nenhum buffer de consulta\n" -#: command.c:568 command.c:3161 +#: command.c:607 command.c:3547 #, c-format msgid "invalid line number: %s\n" msgstr "número de linha inválido: %s\n" -#: command.c:599 +#: command.c:640 #, c-format -msgid "The server (version %d.%d) does not support editing function source.\n" -msgstr "O servidor (versão %d.%d) não suporta edição do código da função.\n" +msgid "The server (version %s) does not support editing function source.\n" +msgstr "O servidor (versão %s) não suporta edição do código da função.\n" -#: command.c:679 +#: command.c:721 command.c:792 msgid "No changes" msgstr "Nenhuma alteração" -#: command.c:733 +#: command.c:739 +#, c-format +msgid "The server (version %s) does not support editing view definitions.\n" +msgstr "O servidor (versão %s) não suporta edição do código da visão.\n" + +#: command.c:846 #, c-format msgid "%s: invalid encoding name or conversion procedure not found\n" msgstr "%s: nome da codificação é inválido ou procedimento de conversão não foi encontrado\n" -#: command.c:830 command.c:880 command.c:894 command.c:911 command.c:1018 -#: command.c:1182 command.c:1385 command.c:1416 +#: command.c:871 command.c:1962 command.c:3649 common.c:153 common.c:200 +#: common.c:497 common.c:1190 common.c:1218 common.c:1319 copy.c:489 +#: copy.c:709 large_obj.c:156 large_obj.c:191 large_obj.c:253 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.c:875 +msgid "out of memory" +msgstr "sem memória" + +#: command.c:878 +msgid "There is no previous error." +msgstr "Não há erro anterior." + +#: command.c:972 command.c:1022 command.c:1036 command.c:1053 command.c:1160 +#: command.c:1324 command.c:1564 command.c:1595 #, c-format msgid "\\%s: missing required argument\n" msgstr "\\%s: faltando argumento requerido\n" -#: command.c:943 +#: command.c:1085 msgid "Query buffer is empty." msgstr "Buffer de consulta está vazio." -#: command.c:953 +#: command.c:1095 msgid "Enter new password: " msgstr "Digite nova senha: " -#: command.c:954 +#: command.c:1096 msgid "Enter it again: " msgstr "Digite-a novamente: " -#: command.c:958 +#: command.c:1100 #, c-format msgid "Passwords didn't match.\n" msgstr "Senhas não correspondem.\n" -#: command.c:976 +#: command.c:1118 #, c-format msgid "Password encryption failed.\n" msgstr "Criptografia de senha falhou.\n" -#: command.c:1047 command.c:1163 command.c:1390 +#: command.c:1189 command.c:1305 command.c:1569 #, c-format msgid "\\%s: error while setting variable\n" msgstr "\\%s: erro ao definir variável\n" -#: command.c:1110 +#: command.c:1252 msgid "Query buffer reset (cleared)." msgstr "Buffer de consulta reiniciado (limpo)." -#: command.c:1122 +#: command.c:1264 #, c-format msgid "Wrote history to file \"%s\".\n" msgstr "Histórico escrito para arquivo \"%s\".\n" -#: command.c:1187 +#: command.c:1329 #, c-format msgid "\\%s: environment variable name must not contain \"=\"\n" msgstr "\\%s: nome de variável de ambiente não deve conter \"=\"\n" -#: command.c:1229 +#: command.c:1373 #, c-format -msgid "The server (version %d.%d) does not support showing function source.\n" -msgstr "O servidor (versão %d.%d) não suporta exibição do código da função.\n" +msgid "The server (version %s) does not support showing function source.\n" +msgstr "O servidor (versão %s) não suporta exibição do código da função.\n" -#: command.c:1235 +#: command.c:1380 #, c-format msgid "function name is required\n" msgstr "nome de função é requerido\n" -#: command.c:1370 +#: command.c:1455 +#, c-format +msgid "The server (version %s) does not support showing view definitions.\n" +msgstr "O servidor (versão %s) não suporta exibição do código da visão.\n" + +#: command.c:1462 +#, c-format +msgid "view name is required\n" +msgstr "nome de visão é requerido\n" + +#: command.c:1549 msgid "Timing is on." msgstr "Tempo de execução está habilitado." -#: command.c:1372 +#: command.c:1551 msgid "Timing is off." msgstr "Tempo de execução está desabilitado." -#: command.c:1433 command.c:1453 command.c:2084 command.c:2087 command.c:2090 -#: command.c:2096 command.c:2098 command.c:2106 command.c:2116 command.c:2125 -#: command.c:2139 command.c:2156 command.c:2215 common.c:74 copy.c:333 -#: copy.c:393 copy.c:408 psqlscan.l:1700 psqlscan.l:1711 psqlscan.l:1721 +#: command.c:1613 command.c:1633 command.c:2311 command.c:2314 command.c:2317 +#: command.c:2323 command.c:2325 command.c:2333 command.c:2343 command.c:2352 +#: command.c:2366 command.c:2383 command.c:2441 common.c:68 copy.c:332 +#: copy.c:392 copy.c:405 psqlscanslash.l:711 psqlscanslash.l:722 +#: psqlscanslash.l:732 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" -#: command.c:1544 +#: command.c:1727 #, c-format msgid "+ opt(%d) = |%s|\n" msgstr "+ opt(%d) = |%s|\n" -#: command.c:1570 startup.c:195 +#: command.c:1753 startup.c:207 msgid "Password: " msgstr "Senha: " -#: command.c:1575 startup.c:197 +#: command.c:1758 startup.c:209 #, c-format msgid "Password for user %s: " msgstr "Senha para usuário %s: " -#: command.c:1622 +#: command.c:1809 #, c-format msgid "All connection parameters must be supplied because no database connection exists\n" msgstr "Todos os parâmetros de conexão devem ser fornecidos porque nenhuma conexão de banco de dados existe\n" -#: command.c:1740 command.c:3195 common.c:120 common.c:413 common.c:1005 -#: common.c:1030 common.c:1130 copy.c:492 copy.c:702 large_obj.c:156 -#: large_obj.c:191 large_obj.c:253 psqlscan.l:1972 -#, c-format -msgid "%s" -msgstr "%s" - -#: command.c:1744 +#: command.c:1966 #, c-format msgid "Previous connection kept\n" msgstr "Conexão anterior mantida\n" -#: command.c:1748 +#: command.c:1970 #, c-format msgid "\\connect: %s" msgstr "\\connect: %s" -#: command.c:1782 +#: command.c:2006 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n" msgstr "Você está conectado agora ao banco de dados \"%s\" como usuário \"%s\" via soquete em \"%s\" na porta \"%s\".\n" -#: command.c:1785 +#: command.c:2009 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n" msgstr "Você está conectado agora ao banco de dados \"%s\" como usuário \"%s\" na máquina \"%s\" na porta \"%s\".\n" -#: command.c:1789 +#: command.c:2013 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\".\n" msgstr "Você está conectado agora ao banco de dados \"%s\" como usuário \"%s\".\n" -#: command.c:1823 +#: command.c:2046 #, c-format msgid "%s (%s, server %s)\n" msgstr "%s (%s, servidor %s)\n" -#: command.c:1831 +#: command.c:2054 #, c-format msgid "" -"WARNING: %s major version %d.%d, server major version %d.%d.\n" +"WARNING: %s major version %s, server major version %s.\n" " Some psql features might not work.\n" msgstr "" -"AVISO: %s versão %d.%d, servidor versão %d.%d.\n" +"AVISO: %s versão %s, servidor versão %s.\n" " Algumas funcionalidades do psql podem não funcionar.\n" -#: command.c:1865 +#: command.c:2091 #, c-format msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n" msgstr "conexão SSL (protocolo: %s, cifra: %s, bits: %s, compressão: %s)\n" -#: command.c:1866 command.c:1867 command.c:1868 +#: command.c:2092 command.c:2093 command.c:2094 msgid "unknown" msgstr "desconhecido" -#: command.c:1869 help.c:46 +#: command.c:2095 help.c:46 msgid "off" msgstr "desabilitado" -#: command.c:1869 help.c:46 +#: command.c:2095 help.c:46 msgid "on" msgstr "habilitado" -#: command.c:1889 +#: command.c:2115 #, c-format msgid "" "WARNING: Console code page (%u) differs from Windows code page (%u)\n" @@ -343,227 +399,239 @@ msgstr "" " caracteres de 8 bits podem não funcionar corretamente. Veja página de\n" " referência do psql \"Notes for Windows users\" para obter detalhes.\n" -#: command.c:1973 +#: command.c:2200 #, c-format msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number\n" msgstr "variável de ambiente PSQL_EDITOR_LINENUMBER_ARG deve ser definida para especificar um número de linha\n" -#: command.c:2002 +#: command.c:2229 #, c-format msgid "could not start editor \"%s\"\n" msgstr "não pôde iniciar o editor \"%s\"\n" -#: command.c:2004 +#: command.c:2231 #, c-format msgid "could not start /bin/sh\n" msgstr "não pôde iniciar /bin/sh\n" -#: command.c:2042 +#: command.c:2269 #, c-format msgid "could not locate temporary directory: %s\n" msgstr "não pôde localizar diretório temporário: %s\n" -#: command.c:2069 +#: command.c:2296 #, c-format msgid "could not open temporary file \"%s\": %s\n" msgstr "não pôde abrir arquivo temporário \"%s\": %s\n" -#: command.c:2377 +#: command.c:2570 #, c-format msgid "\\pset: allowed formats are unaligned, aligned, wrapped, html, asciidoc, latex, latex-longtable, troff-ms\n" msgstr "\\pset: formatos permitidos são unaligned, aligned, wrapped, html, asciidoc, latex, latex-longtable, troff-ms\n" -#: command.c:2396 +#: command.c:2589 #, c-format msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" msgstr "\\pset: estilos de linha permitidos são ascii, old-ascii, unicode\n" -#: command.c:2410 -#, fuzzy, c-format -msgid "\\pset: allowed unicode border linestyle are single, double\n" -msgstr "\\pset: estilos de linha de borda unicode permitidos são single, double\n" +#: command.c:2605 +#, c-format +msgid "\\pset: allowed Unicode border line styles are single, double\n" +msgstr "\\pset: estilos de linha de borda Unicode permitidos são single, double\n" -#: command.c:2423 -#, fuzzy, c-format -msgid "\\pset: allowed unicode column linestyle are single, double\n" -msgstr "\\pset: estilos de linha de coluna unicode permitidos são single, double\n" +#: command.c:2620 +#, c-format +msgid "\\pset: allowed Unicode column line styles are single, double\n" +msgstr "\\pset: estilos de linha de coluna Unicode permitidos são single, double\n" -#: command.c:2436 -#, fuzzy, c-format -msgid "\\pset: allowed unicode header linestyle are single, double\n" -msgstr "\\pset: estilos de linha de cabeçalho unicode permitidos são single, double\n" +#: command.c:2635 +#, c-format +msgid "\\pset: allowed Unicode header line styles are single, double\n" +msgstr "\\pset: estilos de linha de cabeçalho Unicode permitidos são single, double\n" -#: command.c:2588 command.c:2765 +#: command.c:2787 command.c:2966 #, c-format msgid "\\pset: unknown option: %s\n" msgstr "\\pset: opção desconhecida: %s\n" -#: command.c:2606 +#: command.c:2805 #, c-format msgid "Border style is %d.\n" msgstr "Estilo de borda é %d.\n" -#: command.c:2612 +#: command.c:2811 #, c-format msgid "Target width is unset.\n" msgstr "Largura não está definida.\n" -#: command.c:2614 +#: command.c:2813 #, c-format msgid "Target width is %d.\n" msgstr "Largura é %d.\n" -#: command.c:2621 +#: command.c:2820 #, c-format msgid "Expanded display is on.\n" msgstr "Exibição expandida está habilitada.\n" -#: command.c:2623 +#: command.c:2822 #, c-format msgid "Expanded display is used automatically.\n" msgstr "Exibição expandida é utilizada automaticamente.\n" -#: command.c:2625 +#: command.c:2824 #, c-format msgid "Expanded display is off.\n" msgstr "Exibição expandida está desabilitada.\n" -#: command.c:2632 command.c:2640 +#: command.c:2831 command.c:2839 #, c-format msgid "Field separator is zero byte.\n" msgstr "Separador de campos é byte zero.\n" -#: command.c:2634 +#: command.c:2833 #, c-format msgid "Field separator is \"%s\".\n" msgstr "Separador de campos é \"%s\".\n" -#: command.c:2647 +#: command.c:2846 #, c-format msgid "Default footer is on.\n" msgstr "Rodapé padrão está habilitado.\n" -#: command.c:2649 +#: command.c:2848 #, c-format msgid "Default footer is off.\n" msgstr "Rodapé padrão está desabilitado.\n" -#: command.c:2655 +#: command.c:2854 #, c-format msgid "Output format is %s.\n" msgstr "Formato de saída é %s.\n" -#: command.c:2661 +#: command.c:2860 #, c-format msgid "Line style is %s.\n" msgstr "Estilo de linha é %s.\n" -#: command.c:2668 +#: command.c:2867 #, c-format msgid "Null display is \"%s\".\n" msgstr "Exibição nula é \"%s\".\n" -#: command.c:2676 +#: command.c:2875 #, c-format msgid "Locale-adjusted numeric output is on.\n" msgstr "Formato numérico baseado no idioma está habilitado.\n" -#: command.c:2678 +#: command.c:2877 #, c-format msgid "Locale-adjusted numeric output is off.\n" msgstr "Formato numérico baseado no idioma está desabilitado.\n" -#: command.c:2685 +#: command.c:2884 #, c-format msgid "Pager is used for long output.\n" msgstr "Paginação é usada para saída longa.\n" -#: command.c:2687 +#: command.c:2886 #, c-format msgid "Pager is always used.\n" msgstr "Paginação é sempre utilizada.\n" -#: command.c:2689 +#: command.c:2888 #, c-format msgid "Pager usage is off.\n" msgstr "Uso de paginação está desabilitado.\n" -#: command.c:2695 +#: command.c:2894 #, c-format -msgid "Pager won't be used for less than %d lines\n" -msgstr "Paginação não será utilizada para menos do que %d linhas\n" +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] "Paginação não será utilizada para menos do que %d linha.\n" +msgstr[1] "Paginação não será utilizada para menos do que %d linhas.\n" -#: command.c:2703 command.c:2713 +#: command.c:2904 command.c:2914 #, c-format msgid "Record separator is zero byte.\n" msgstr "Separador de registros é byte zero.\n" -#: command.c:2705 +#: command.c:2906 #, c-format msgid "Record separator is .\n" msgstr "Separador de registros é .\n" -#: command.c:2707 +#: command.c:2908 #, c-format msgid "Record separator is \"%s\".\n" msgstr "Separador de registros é \"%s\".\n" -#: command.c:2720 +#: command.c:2921 #, c-format msgid "Table attributes are \"%s\".\n" msgstr "Atributos de tabela são \"%s\".\n" -#: command.c:2723 +#: command.c:2924 #, c-format msgid "Table attributes unset.\n" msgstr "Atributos de tabela não estão definidos.\n" -#: command.c:2730 +#: command.c:2931 #, c-format msgid "Title is \"%s\".\n" msgstr "Título é \"%s\".\n" -#: command.c:2732 +#: command.c:2933 #, c-format msgid "Title is unset.\n" msgstr "Título não está definido.\n" -#: command.c:2739 +#: command.c:2940 #, c-format msgid "Tuples only is on.\n" msgstr "Somente tuplas está habilitado.\n" -#: command.c:2741 +#: command.c:2942 #, c-format msgid "Tuples only is off.\n" msgstr "Somente tuplas está desabilitado.\n" -#: command.c:2747 command.c:2759 -#, fuzzy, c-format -msgid "Unicode border linestyle is \"%s\".\n" -msgstr "Estilo de linha de borda unicode é \"%s\".\n" +#: command.c:2948 +#, c-format +msgid "Unicode border line style is \"%s\".\n" +msgstr "Estilo de linha de borda Unicode é \"%s\".\n" + +#: command.c:2954 +#, c-format +msgid "Unicode column line style is \"%s\".\n" +msgstr "Estilo de linha de coluna Unicode é \"%s\".\n" -#: command.c:2753 -#, fuzzy, c-format -msgid "Unicode column linestyle is \"%s\".\n" -msgstr "Estilo de linha de coluna unicode é \"%s\".\n" +#: command.c:2960 +#, c-format +msgid "Unicode header line style is \"%s\".\n" +msgstr "Estilo de linha de cabeçalho Unicode é \"%s\".\n" -#: command.c:2919 +#: command.c:3120 #, c-format msgid "\\!: failed\n" msgstr "\\!: falhou\n" -#: command.c:2939 common.c:548 +#: command.c:3145 common.c:659 #, c-format msgid "\\watch cannot be used with an empty query\n" msgstr "\\watch não pode ser utilizado com uma consulta vazia\n" -#: command.c:2960 +#: command.c:3186 +#, c-format +msgid "%s\t%s (every %gs)\n" +msgstr "%s\t%s (cada %gs)\n" + +#: command.c:3189 #, c-format -msgid "Watch every %lds\t%s" -msgstr "Observar a cada %lds\t%s" +msgid "%s (every %gs)\n" +msgstr "%s (cada %gs)\n" -#: command.c:3011 command.c:3018 common.c:448 common.c:455 common.c:988 +#: command.c:3243 command.c:3250 common.c:559 common.c:566 common.c:1173 #, c-format msgid "" "********* QUERY **********\n" @@ -576,72 +644,87 @@ msgstr "" "**************************\n" "\n" -#: common.c:287 +#: command.c:3442 +#, c-format +msgid "\"%s.%s\" is not a view\n" +msgstr "\"%s.%s\" não é uma visão\n" + +#: command.c:3458 +#, c-format +msgid "could not parse reloptions array\n" +msgstr "não pôde validar matriz reloptions\n" + +#: common.c:138 +#, c-format +msgid "cannot escape without active connection\n" +msgstr "não pode fazer escape sem uma conexão ativa\n" + +#: common.c:371 #, c-format msgid "connection to server was lost\n" msgstr "conexão com servidor foi perdida\n" -#: common.c:291 +#: common.c:375 #, c-format msgid "The connection to the server was lost. Attempting reset: " msgstr "A conexão com servidor foi perdida. Tentando reiniciar: " -#: common.c:296 +#: common.c:380 #, c-format msgid "Failed.\n" msgstr "Falhou.\n" -#: common.c:303 +#: common.c:387 #, c-format msgid "Succeeded.\n" msgstr "Sucedido.\n" -#: common.c:403 common.c:759 common.c:927 +#: common.c:487 common.c:936 common.c:1108 #, c-format msgid "unexpected PQresultStatus: %d\n" msgstr "PQresultStatus inesperado: %d\n" -#: common.c:555 +#: common.c:666 #, c-format msgid "\\watch cannot be used with COPY\n" msgstr "\\watch não pode ser utilizado com COPY\n" -#: common.c:560 +#: common.c:671 #, c-format msgid "unexpected result status for \\watch\n" msgstr "status de resultado inesperado para \\watch\n" -#: common.c:571 common.c:1146 +#: common.c:682 common.c:1335 #, c-format msgid "Time: %.3f ms\n" msgstr "Tempo: %.3f ms\n" -#: common.c:589 +#: common.c:700 #, c-format msgid "Asynchronous notification \"%s\" with payload \"%s\" received from server process with PID %d.\n" msgstr "Notificação assíncrona \"%s\" com mensagem \"%s\" recebida do processo do servidor com PID %d.\n" -#: common.c:592 +#: common.c:703 #, c-format msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n" msgstr "Notificação assíncrona \"%s\" recebida do processo do servidor com PID %d.\n" -#: common.c:654 +#: common.c:761 #, c-format msgid "no rows returned for \\gset\n" msgstr "nenhum registro foi retornado para \\gset\n" -#: common.c:659 +#: common.c:766 #, c-format msgid "more than one row returned for \\gset\n" msgstr "mais de um registro foi retornado para \\gset\n" -#: common.c:685 +#: common.c:792 #, c-format msgid "could not set variable \"%s\"\n" msgstr "não pôde definir variável \"%s\"\n" -#: common.c:970 +#: common.c:1153 #, c-format msgid "" "***(Single step mode: verify command)*******************************************\n" @@ -652,120 +735,165 @@ msgstr "" "%s\n" "***(pressione Enter para prosseguir ou digite x e Enter para cancelar)********************\n" -#: common.c:1021 +#: common.c:1208 #, c-format -msgid "The server (version %d.%d) does not support savepoints for ON_ERROR_ROLLBACK.\n" -msgstr "O servidor (versão %d.%d) não suporta pontos de salvamento para ON_ERROR_ROLLBACK.\n" +msgid "The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK.\n" +msgstr "O servidor (versão %s) não suporta pontos de salvamento para ON_ERROR_ROLLBACK.\n" -#: common.c:1075 +#: common.c:1264 #, c-format msgid "STATEMENT: %s\n" msgstr "COMANDO: %s\n" -#: common.c:1118 +#: common.c:1307 #, c-format msgid "unexpected transaction status (%d)\n" msgstr "status de transação inesperado (%d)\n" -#: copy.c:98 +#: copy.c:99 #, c-format msgid "\\copy: arguments required\n" msgstr "\\copy: argumentos são requeridos\n" -#: copy.c:253 +#: copy.c:254 #, c-format msgid "\\copy: parse error at \"%s\"\n" msgstr "\\copy: erro de análise em \"%s\"\n" -#: copy.c:255 +#: copy.c:256 #, c-format msgid "\\copy: parse error at end of line\n" msgstr "\\copy: erro de análise no fim da linha\n" -#: copy.c:330 +#: copy.c:329 #, c-format msgid "could not execute command \"%s\": %s\n" msgstr "não pôde executar comando \"%s\": %s\n" -#: copy.c:346 +#: copy.c:345 #, c-format msgid "could not stat file \"%s\": %s\n" msgstr "não pôde executar stat no arquivo \"%s\": %s\n" -#: copy.c:350 +#: copy.c:349 #, c-format msgid "%s: cannot copy from/to a directory\n" msgstr "%s: não pode copiar de/para o diretório\n" -#: copy.c:387 +#: copy.c:386 #, c-format msgid "could not close pipe to external command: %s\n" msgstr "não pôde fechar pipe para comando externo: %s\n" -#: copy.c:455 copy.c:466 +#: copy.c:452 copy.c:463 #, c-format msgid "could not write COPY data: %s\n" msgstr "não pôde escrever dados utilizando COPY: %s\n" -#: copy.c:473 +#: copy.c:470 #, c-format msgid "COPY data transfer failed: %s" msgstr "transferência de dados utilizando COPY falhou: %s" -#: copy.c:534 +#: copy.c:531 msgid "canceled by user" msgstr "cancelado pelo usuário" -#: copy.c:545 +#: copy.c:542 msgid "" "Enter data to be copied followed by a newline.\n" -"End with a backslash and a period on a line by itself." +"End with a backslash and a period on a line by itself, or an EOF signal." msgstr "" "Informe os dados a serem copiados seguido pelo caracter de nova linha.\n" -"Finalize com uma barra invertida e um ponto na linha." +"Finalize com uma barra invertida e um ponto na linha ou um sinal EOF." -#: copy.c:674 +#: copy.c:671 msgid "aborted because of read failure" msgstr "interrompido devido a falha de leitura" -#: copy.c:698 +#: copy.c:705 msgid "trying to exit copy mode" msgstr "tentando sair do modo copy" -#: describe.c:71 describe.c:264 describe.c:496 describe.c:626 describe.c:769 -#: describe.c:886 describe.c:956 describe.c:2921 describe.c:3126 -#: describe.c:3216 describe.c:3461 describe.c:3598 describe.c:3827 -#: describe.c:3899 describe.c:3910 describe.c:3969 describe.c:4377 -#: describe.c:4456 +#: crosstabview.c:125 +#, c-format +msgid "\\crosstabview: statement did not return a result set\n" +msgstr "\\crosstabview: comando não retornou um conjunto de resultados\n" + +#: crosstabview.c:131 +#, c-format +msgid "\\crosstabview: query must return at least three columns\n" +msgstr "\\crosstabview: consulta deve retornar pelo menos três colunas\n" + +#: crosstabview.c:158 +#, c-format +msgid "\\crosstabview: vertical and horizontal headers must be different columns\n" +msgstr "\\crosstabview: cabeçalhos vertical e horizontal devem ser colunas diferentes\n" + +#: crosstabview.c:174 +#, c-format +msgid "\\crosstabview: data column must be specified when query returns more than three columns\n" +msgstr "\\crosstabview: coluna de dados deve ser especificada quando consulta retornar mais de três colunas\n" + +#: crosstabview.c:230 +#, c-format +msgid "\\crosstabview: maximum number of columns (%d) exceeded\n" +msgstr "\\crosstabview: número máximo de colunas (%d) foi alcançado\n" + +#: crosstabview.c:399 +#, c-format +msgid "\\crosstabview: query result contains multiple data values for row \"%s\", column \"%s\"\n" +msgstr "\\crosstabview: resultado da consulta contém múltiplos valores de dados para registro \"%s\", coluna \"%s\"\n" + +#: crosstabview.c:647 +#, c-format +msgid "\\crosstabview: column number %d is out of range 1..%d\n" +msgstr "\\crosstabview: coluna número %d está fora do intervalo 1..%d\n" + +#: crosstabview.c:672 +#, c-format +msgid "\\crosstabview: ambiguous column name: \"%s\"\n" +msgstr "\\crosstabview: nome de coluna ambíguo: \"%s\"\n" + +#: crosstabview.c:680 +#, c-format +msgid "\\crosstabview: column name not found: \"%s\"\n" +msgstr "\\crosstabview: nome de coluna não foi encontrado: \"%s\"\n" + +#: describe.c:71 describe.c:340 describe.c:597 describe.c:727 describe.c:870 +#: describe.c:990 describe.c:1060 describe.c:3035 describe.c:3240 +#: describe.c:3330 describe.c:3578 describe.c:3718 describe.c:3950 +#: describe.c:4025 describe.c:4036 describe.c:4098 describe.c:4518 +#: describe.c:4601 msgid "Schema" msgstr "Esquema" -#: describe.c:72 describe.c:156 describe.c:164 describe.c:265 describe.c:497 -#: describe.c:627 describe.c:688 describe.c:770 describe.c:957 describe.c:2922 -#: describe.c:3048 describe.c:3127 describe.c:3217 describe.c:3296 -#: describe.c:3462 describe.c:3526 describe.c:3599 describe.c:3828 -#: describe.c:3900 describe.c:3911 describe.c:3970 describe.c:4159 -#: describe.c:4240 describe.c:4454 +#: describe.c:72 describe.c:160 describe.c:226 describe.c:234 describe.c:341 +#: describe.c:598 describe.c:728 describe.c:789 describe.c:871 describe.c:1061 +#: describe.c:3036 describe.c:3162 describe.c:3241 describe.c:3331 +#: describe.c:3410 describe.c:3579 describe.c:3643 describe.c:3719 +#: describe.c:3951 describe.c:4026 describe.c:4037 describe.c:4099 +#: describe.c:4291 describe.c:4375 describe.c:4599 msgid "Name" msgstr "Nome" -#: describe.c:73 describe.c:277 describe.c:323 describe.c:340 +#: describe.c:73 describe.c:353 describe.c:399 describe.c:416 msgid "Result data type" msgstr "Tipo de dado do resultado" -#: describe.c:81 describe.c:94 describe.c:98 describe.c:278 describe.c:324 -#: describe.c:341 +#: describe.c:81 describe.c:94 describe.c:98 describe.c:354 describe.c:400 +#: describe.c:417 msgid "Argument data types" msgstr "Tipos de dado do argumento" -#: describe.c:105 describe.c:187 describe.c:370 describe.c:545 describe.c:642 -#: describe.c:713 describe.c:959 describe.c:1570 describe.c:2722 -#: describe.c:2955 describe.c:3079 describe.c:3153 describe.c:3226 -#: describe.c:3309 describe.c:3377 describe.c:3469 describe.c:3535 -#: describe.c:3600 describe.c:3736 describe.c:3776 describe.c:3844 -#: describe.c:3903 describe.c:3912 describe.c:3971 describe.c:4185 -#: describe.c:4262 describe.c:4391 describe.c:4457 large_obj.c:289 -#: large_obj.c:299 +#: describe.c:105 describe.c:170 describe.c:257 describe.c:462 describe.c:646 +#: describe.c:743 describe.c:814 describe.c:1063 describe.c:1676 +#: describe.c:2836 describe.c:3069 describe.c:3193 describe.c:3267 +#: describe.c:3340 describe.c:3423 describe.c:3491 describe.c:3586 +#: describe.c:3652 describe.c:3720 describe.c:3856 describe.c:3896 +#: describe.c:3967 describe.c:4029 describe.c:4038 describe.c:4100 +#: describe.c:4317 describe.c:4397 describe.c:4532 describe.c:4602 +#: large_obj.c:289 large_obj.c:299 msgid "Description" msgstr "Descrição" @@ -773,863 +901,913 @@ msgstr "Descrição" msgid "List of aggregate functions" msgstr "Lista das funções de agregação" -#: describe.c:144 +#: describe.c:147 +#, c-format +msgid "The server (version %s) does not support access methods.\n" +msgstr "O servidor (versão %s) não suporta métodos de acesso.\n" + +#: describe.c:161 +msgid "Index" +msgstr "Ãndice" + +#: describe.c:162 describe.c:360 describe.c:405 describe.c:422 describe.c:877 +#: describe.c:999 describe.c:1645 describe.c:3044 describe.c:3242 +#: describe.c:4394 +msgid "Type" +msgstr "Tipo" + +#: describe.c:169 describe.c:4296 +msgid "Handler" +msgstr "Manipulador" + +#: describe.c:188 +msgid "List of access methods" +msgstr "Lista de métodos de acesso" + +#: describe.c:213 #, c-format -msgid "The server (version %d.%d) does not support tablespaces.\n" -msgstr "O servidor (versão %d.%d) não suporta tablespaces.\n" +msgid "The server (version %s) does not support tablespaces.\n" +msgstr "O servidor (versão %s) não suporta tablespaces.\n" -#: describe.c:157 describe.c:165 describe.c:367 describe.c:535 describe.c:689 -#: describe.c:885 describe.c:2931 describe.c:3052 describe.c:3298 -#: describe.c:3527 describe.c:4160 describe.c:4241 large_obj.c:288 +#: describe.c:227 describe.c:235 describe.c:450 describe.c:636 describe.c:790 +#: describe.c:989 describe.c:3045 describe.c:3166 describe.c:3412 +#: describe.c:3644 describe.c:4292 describe.c:4376 large_obj.c:288 msgid "Owner" msgstr "Dono" -#: describe.c:158 describe.c:166 +#: describe.c:228 describe.c:236 msgid "Location" msgstr "Local" -#: describe.c:177 describe.c:2535 +#: describe.c:247 describe.c:2647 msgid "Options" msgstr "Opções" -#: describe.c:182 describe.c:508 describe.c:705 describe.c:2947 -#: describe.c:2951 +#: describe.c:252 describe.c:609 describe.c:806 describe.c:3061 +#: describe.c:3065 msgid "Size" msgstr "Tamanho" -#: describe.c:204 +#: describe.c:274 msgid "List of tablespaces" msgstr "Lista das tablespaces" -#: describe.c:241 +#: describe.c:314 #, c-format msgid "\\df only takes [antwS+] as options\n" msgstr "\\df só possui as opções [antwS+]\n" -#: describe.c:247 +#: describe.c:322 #, c-format -msgid "\\df does not take a \"w\" option with server version %d.%d\n" -msgstr "\\df não possui a opção \"w\" em um servidor na versão %d.%d.\n" +msgid "\\df does not take a \"w\" option with server version %s\n" +msgstr "\\df não possui a opção \"w\" em um servidor na versão %s.\n" #. translator: "agg" is short for "aggregate" -#: describe.c:280 describe.c:326 describe.c:343 +#: describe.c:356 describe.c:402 describe.c:419 msgid "agg" msgstr "agr" -#: describe.c:281 +#: describe.c:357 msgid "window" msgstr "deslizante" -#: describe.c:282 describe.c:327 describe.c:344 describe.c:1093 +#: describe.c:358 describe.c:403 describe.c:420 describe.c:1197 msgid "trigger" msgstr "gatilho" -#: describe.c:283 describe.c:328 describe.c:345 +#: describe.c:359 describe.c:404 describe.c:421 msgid "normal" msgstr "normal" -#: describe.c:284 describe.c:329 describe.c:346 describe.c:776 describe.c:895 -#: describe.c:1539 describe.c:2930 describe.c:3128 describe.c:4259 -msgid "Type" -msgstr "Tipo" - -#: describe.c:360 -msgid "definer" -msgstr "definidor" - -#: describe.c:361 -msgid "invoker" -msgstr "invocador" - -#: describe.c:362 -msgid "Security" -msgstr "Segurança" - -#: describe.c:363 +#: describe.c:432 msgid "immutable" msgstr "imutável" -#: describe.c:364 +#: describe.c:433 msgid "stable" msgstr "estável" -#: describe.c:365 +#: describe.c:434 msgid "volatile" msgstr "volátil" -#: describe.c:366 +#: describe.c:435 msgid "Volatility" msgstr "Volatilidade" -#: describe.c:368 +#: describe.c:443 +msgid "restricted" +msgstr "restrito" + +#: describe.c:444 +msgid "safe" +msgstr "seguro" + +#: describe.c:445 +msgid "unsafe" +msgstr "inseguro" + +#: describe.c:446 +msgid "Parallel" +msgstr "Paralelismo" + +#: describe.c:451 +msgid "definer" +msgstr "definidor" + +#: describe.c:452 +msgid "invoker" +msgstr "invocador" + +#: describe.c:453 +msgid "Security" +msgstr "Segurança" + +#: describe.c:460 msgid "Language" msgstr "Linguagem" -#: describe.c:369 +#: describe.c:461 msgid "Source code" msgstr "Código fonte" -#: describe.c:467 +#: describe.c:560 msgid "List of functions" msgstr "Lista de funções" -#: describe.c:507 +#: describe.c:608 msgid "Internal name" msgstr "Nome interno" -#: describe.c:529 +#: describe.c:630 msgid "Elements" msgstr "Elementos" -#: describe.c:585 +#: describe.c:686 msgid "List of data types" msgstr "Lista de tipos de dado" -#: describe.c:628 +#: describe.c:729 msgid "Left arg type" msgstr "Tipo de argumento à esquerda" -#: describe.c:629 +#: describe.c:730 msgid "Right arg type" msgstr "Tipo de argumento à direita" -#: describe.c:630 +#: describe.c:731 msgid "Result type" msgstr "Tipo resultante" -#: describe.c:635 describe.c:3368 describe.c:3735 +#: describe.c:736 describe.c:3482 describe.c:3855 msgid "Function" msgstr "Função" -#: describe.c:660 +#: describe.c:761 msgid "List of operators" msgstr "Lista de operadores" -#: describe.c:690 +#: describe.c:791 msgid "Encoding" msgstr "Codificação" -#: describe.c:695 describe.c:3463 +#: describe.c:796 describe.c:3580 msgid "Collate" msgstr "Collate" -#: describe.c:696 describe.c:3464 +#: describe.c:797 describe.c:3581 msgid "Ctype" msgstr "Ctype" -#: describe.c:709 +#: describe.c:810 msgid "Tablespace" msgstr "Tablespace" -#: describe.c:731 +#: describe.c:832 msgid "List of databases" msgstr "Lista dos bancos de dados" -#: describe.c:771 describe.c:888 describe.c:2923 +#: describe.c:872 describe.c:992 describe.c:3037 msgid "table" msgstr "tabela" -#: describe.c:772 describe.c:2924 +#: describe.c:873 describe.c:3038 msgid "view" msgstr "visão" -#: describe.c:773 describe.c:2925 +#: describe.c:874 describe.c:3039 msgid "materialized view" msgstr "visão materializada" -#: describe.c:774 describe.c:890 describe.c:2927 +#: describe.c:875 describe.c:994 describe.c:3041 msgid "sequence" msgstr "sequência" -#: describe.c:775 describe.c:2929 +#: describe.c:876 describe.c:3043 msgid "foreign table" msgstr "tabela externa" -#: describe.c:787 -#, fuzzy -#| msgid "Column access privileges" +#: describe.c:888 msgid "Column privileges" msgstr "Privilégios de coluna" -#: describe.c:818 +#: describe.c:919 msgid "Policies" msgstr "Políticas" -#: describe.c:844 describe.c:4601 describe.c:4605 +#: describe.c:945 describe.c:4749 describe.c:4753 msgid "Access privileges" msgstr "Privilégios de acesso" -#: describe.c:873 +#: describe.c:976 #, c-format -msgid "The server (version %d.%d) does not support altering default privileges.\n" -msgstr "O servidor (versão %d.%d) não suporta alteração de privilégios padrão.\n" +msgid "The server (version %s) does not support altering default privileges.\n" +msgstr "O servidor (versão %s) não suporta alteração de privilégios padrão.\n" -#: describe.c:892 +#: describe.c:996 msgid "function" msgstr "função" -#: describe.c:894 +#: describe.c:998 msgid "type" msgstr "tipo" -#: describe.c:918 +#: describe.c:1022 msgid "Default access privileges" msgstr "Privilégios de acesso padrão" -#: describe.c:958 +#: describe.c:1062 msgid "Object" msgstr "Objeto" -#: describe.c:972 +#: describe.c:1076 msgid "table constraint" msgstr "restrição de tabela" -#: describe.c:994 +#: describe.c:1098 msgid "domain constraint" msgstr "restrição de domínio" -#: describe.c:1022 +#: describe.c:1126 msgid "operator class" msgstr "classe de operadores" -#: describe.c:1051 +#: describe.c:1155 msgid "operator family" msgstr "família de operadores" -#: describe.c:1073 +#: describe.c:1177 msgid "rule" msgstr "regra" -#: describe.c:1115 +#: describe.c:1219 msgid "Object descriptions" msgstr "Descrições dos Objetos" -#: describe.c:1169 +#: describe.c:1273 #, c-format msgid "Did not find any relation named \"%s\".\n" msgstr "Não encontrou nenhuma relação chamada \"%s\".\n" -#: describe.c:1378 +#: describe.c:1483 #, c-format msgid "Did not find any relation with OID %s.\n" msgstr "Não encontrou nenhuma relação com OID %s.\n" -#: describe.c:1483 +#: describe.c:1589 #, c-format msgid "Unlogged table \"%s.%s\"" msgstr "Tabela unlogged \"%s.%s\"" -#: describe.c:1486 +#: describe.c:1592 #, c-format msgid "Table \"%s.%s\"" msgstr "Tabela \"%s.%s\"" -#: describe.c:1490 +#: describe.c:1596 #, c-format msgid "View \"%s.%s\"" msgstr "Visão \"%s.%s\"" -#: describe.c:1495 +#: describe.c:1601 #, c-format msgid "Unlogged materialized view \"%s.%s\"" msgstr "Visão materializada unlogged \"%s.%s\"" -#: describe.c:1498 +#: describe.c:1604 #, c-format msgid "Materialized view \"%s.%s\"" msgstr "Visão materializada \"%s.%s\"" -#: describe.c:1502 +#: describe.c:1608 #, c-format msgid "Sequence \"%s.%s\"" msgstr "Sequência \"%s.%s\"" -#: describe.c:1507 +#: describe.c:1613 #, c-format msgid "Unlogged index \"%s.%s\"" msgstr "Ãndice unlogged \"%s.%s\"" -#: describe.c:1510 +#: describe.c:1616 #, c-format msgid "Index \"%s.%s\"" msgstr "Ãndice \"%s.%s\"" -#: describe.c:1515 +#: describe.c:1621 #, c-format msgid "Special relation \"%s.%s\"" msgstr "Relação especial \"%s.%s\"" -#: describe.c:1519 +#: describe.c:1625 #, c-format msgid "TOAST table \"%s.%s\"" msgstr "tabela TOAST \"%s.%s\"" -#: describe.c:1523 +#: describe.c:1629 #, c-format msgid "Composite type \"%s.%s\"" msgstr "Tipo composto \"%s.%s\"" -#: describe.c:1527 +#: describe.c:1633 #, c-format msgid "Foreign table \"%s.%s\"" msgstr "Tabela externa \"%s.%s\"" -#: describe.c:1538 +#: describe.c:1644 msgid "Column" msgstr "Coluna" -#: describe.c:1547 +#: describe.c:1653 msgid "Modifiers" msgstr "Modificadores" -#: describe.c:1552 +#: describe.c:1658 msgid "Value" msgstr "Valor" -#: describe.c:1555 +#: describe.c:1661 msgid "Definition" msgstr "Definição" -#: describe.c:1558 describe.c:4180 describe.c:4261 describe.c:4329 -#: describe.c:4390 +#: describe.c:1664 describe.c:4312 describe.c:4396 describe.c:4467 +#: describe.c:4531 msgid "FDW Options" msgstr "Opções FDW" -#: describe.c:1562 +#: describe.c:1668 msgid "Storage" msgstr "Armazenamento" -#: describe.c:1565 +#: describe.c:1671 msgid "Stats target" msgstr "Estatísticas" -#: describe.c:1615 +#: describe.c:1721 #, c-format msgid "collate %s" msgstr "collate %s" -#: describe.c:1623 +#: describe.c:1729 msgid "not null" msgstr "não nulo" #. translator: default values of column definitions -#: describe.c:1633 +#: describe.c:1739 #, c-format msgid "default %s" msgstr "valor padrão de %s" -#: describe.c:1748 +#: describe.c:1854 msgid "primary key, " msgstr "chave primária, " -#: describe.c:1750 +#: describe.c:1856 msgid "unique, " msgstr "unicidade, " -#: describe.c:1756 +#: describe.c:1862 #, c-format msgid "for table \"%s.%s\"" msgstr "para tabela \"%s.%s\"" -#: describe.c:1760 +#: describe.c:1866 #, c-format msgid ", predicate (%s)" msgstr ", predicado (%s)" -#: describe.c:1763 +#: describe.c:1869 msgid ", clustered" msgstr ", agrupada" -#: describe.c:1766 +#: describe.c:1872 msgid ", invalid" msgstr ", inválido" -#: describe.c:1769 +#: describe.c:1875 msgid ", deferrable" msgstr ", postergável" -#: describe.c:1772 +#: describe.c:1878 msgid ", initially deferred" msgstr ", inicialmente postergada" -#: describe.c:1775 +#: describe.c:1881 msgid ", replica identity" msgstr ", identidade da réplica" -#: describe.c:1810 +#: describe.c:1916 #, c-format msgid "Owned by: %s" msgstr "Dono: %s" -#: describe.c:1870 +#: describe.c:1976 msgid "Indexes:" msgstr "Ãndices:" -#: describe.c:1954 +#: describe.c:2060 msgid "Check constraints:" msgstr "Restrições de verificação:" -#: describe.c:1985 +#: describe.c:2091 msgid "Foreign-key constraints:" msgstr "Restrições de chave estrangeira:" -#: describe.c:2016 +#: describe.c:2122 msgid "Referenced by:" msgstr "Referenciada por:" -#: describe.c:2061 +#: describe.c:2167 msgid "Policies:" msgstr "Políticas:" -#: describe.c:2064 -msgid "Policies (Row Security Enabled): (None)" -msgstr "" +#: describe.c:2170 +msgid "Policies (forced row security enabled):" +msgstr "Políticas (segurança de registros forçada está habilitada):" -#: describe.c:2067 -msgid "Policies (Row Security Disabled):" -msgstr "" +#: describe.c:2173 +msgid "Policies (row security enabled): (none)" +msgstr "Políticas (segurança de registros está habilitada): (nenhum)" -#: describe.c:2167 describe.c:2217 +#: describe.c:2176 +msgid "Policies (forced row security enabled): (none)" +msgstr "Políticas (segurança de registros forçada está habilitada): (nenhum)" + +#: describe.c:2179 +msgid "Policies (row security disabled):" +msgstr "Políticas (segurança de registros está desabilitada):" + +#: describe.c:2279 describe.c:2329 msgid "Rules:" msgstr "Regras:" -#: describe.c:2170 +#: describe.c:2282 msgid "Disabled rules:" msgstr "Regras desabilitadas:" -#: describe.c:2173 +#: describe.c:2285 msgid "Rules firing always:" msgstr "Regras sempre disparadas:" -#: describe.c:2176 +#: describe.c:2288 msgid "Rules firing on replica only:" msgstr "Regras somente disparadas na réplica:" -#: describe.c:2200 +#: describe.c:2312 msgid "View definition:" msgstr "Definição da visão:" -#: describe.c:2335 +#: describe.c:2447 msgid "Triggers:" msgstr "Gatilhos:" -#: describe.c:2339 +#: describe.c:2451 msgid "Disabled user triggers:" msgstr "Gatilhos de usuário desabilitados:" -#: describe.c:2341 +#: describe.c:2453 msgid "Disabled triggers:" msgstr "Gatilhos desabilitados:" -#: describe.c:2344 +#: describe.c:2456 msgid "Disabled internal triggers:" msgstr "Gatilhos internos desabilitados:" -#: describe.c:2347 +#: describe.c:2459 msgid "Triggers firing always:" msgstr "Gatilhos sempre disparados:" -#: describe.c:2350 +#: describe.c:2462 msgid "Triggers firing on replica only:" msgstr "Gatilhos disparados somente na réplica:" -#: describe.c:2429 +#: describe.c:2519 +#, c-format +msgid "Server: %s" +msgstr "Servidor: %s" + +#: describe.c:2527 +#, c-format +msgid "FDW Options: (%s)" +msgstr "Opções FDW: (%s)" + +#: describe.c:2541 msgid "Inherits" msgstr "Heranças" -#: describe.c:2468 +#: describe.c:2580 #, c-format msgid "Number of child tables: %d (Use \\d+ to list them.)" msgstr "Número de tabelas descendentes: %d (Utilize \\d+ para listá-las.)" -#: describe.c:2475 +#: describe.c:2587 msgid "Child tables" msgstr "Tabelas descendentes" -#: describe.c:2497 +#: describe.c:2609 #, c-format msgid "Typed table of type: %s" msgstr "Tabela protótipo de tipo: %s" -#: describe.c:2511 +#: describe.c:2623 msgid "Replica Identity" msgstr "Identidade da Réplica" -#: describe.c:2524 +#: describe.c:2636 msgid "Has OIDs: yes" msgstr "Têm OIDs: sim" -#: describe.c:2613 +#: describe.c:2724 #, 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:2625 +#: describe.c:2736 #, c-format msgid ", tablespace \"%s\"" msgstr ", tablespace \"%s\"" -#: describe.c:2715 +#: describe.c:2829 msgid "List of roles" msgstr "Lista de roles" -#: describe.c:2717 +#: describe.c:2831 msgid "Role name" msgstr "Nome da role" -#: describe.c:2718 +#: describe.c:2832 msgid "Attributes" msgstr "Atributos" -#: describe.c:2719 +#: describe.c:2833 msgid "Member of" msgstr "Membro de" -#: describe.c:2730 +#: describe.c:2844 msgid "Superuser" msgstr "Super-usuário" -#: describe.c:2733 +#: describe.c:2847 msgid "No inheritance" msgstr "Nenhuma herança" -#: describe.c:2736 +#: describe.c:2850 msgid "Create role" msgstr "Cria role" -#: describe.c:2739 +#: describe.c:2853 msgid "Create DB" msgstr "Cria BD" -#: describe.c:2742 +#: describe.c:2856 msgid "Cannot login" msgstr "Não pode efetuar login" -#: describe.c:2746 +#: describe.c:2860 msgid "Replication" msgstr "Replicação" -#: describe.c:2750 +#: describe.c:2864 msgid "Bypass RLS" -msgstr "" +msgstr "Ignora RLS" -#: describe.c:2759 +#: describe.c:2873 msgid "No connections" msgstr "Nenhuma conexão" -#: describe.c:2761 +#: describe.c:2875 #, c-format msgid "%d connection" msgid_plural "%d connections" msgstr[0] "%d conexão" msgstr[1] "%d conexões" -#: describe.c:2771 +#: describe.c:2885 msgid "Password valid until " msgstr "Senha valida até " -#: describe.c:2827 +#: describe.c:2941 msgid "Role" msgstr "Role" -#: describe.c:2828 +#: describe.c:2942 msgid "Database" msgstr "Banco de Dados" -#: describe.c:2829 +#: describe.c:2943 msgid "Settings" msgstr "Definições" -#: describe.c:2839 +#: describe.c:2953 #, c-format msgid "No per-database role settings support in this server version.\n" msgstr "Nenhum suporte a configurações de roles por banco de dados nesta versão do servidor.\n" -#: describe.c:2850 +#: describe.c:2964 #, c-format msgid "No matching settings found.\n" msgstr "Nenhuma configuração correspondente foi encontrada.\n" -#: describe.c:2852 +#: describe.c:2966 #, c-format msgid "No settings found.\n" msgstr "Nenhuma configuração foi encontrada.\n" -#: describe.c:2857 +#: describe.c:2971 msgid "List of settings" msgstr "Lista de configurações" -#: describe.c:2926 +#: describe.c:3040 msgid "index" msgstr "índice" -#: describe.c:2928 +#: describe.c:3042 msgid "special" msgstr "especial" -#: describe.c:2936 describe.c:4378 +#: describe.c:3050 describe.c:4519 msgid "Table" msgstr "Tabela" -#: describe.c:3012 +#: describe.c:3126 #, c-format msgid "No matching relations found.\n" msgstr "Nenhuma relação correspondente foi encontrada.\n" -#: describe.c:3014 +#: describe.c:3128 #, c-format msgid "No relations found.\n" msgstr "Nenhuma relação foi encontrada.\n" -#: describe.c:3019 +#: describe.c:3133 msgid "List of relations" msgstr "Lista de relações" -#: describe.c:3056 +#: describe.c:3170 msgid "Trusted" msgstr "Confiável" -#: describe.c:3064 +#: describe.c:3178 msgid "Internal Language" msgstr "Linguagem Interna" -#: describe.c:3065 +#: describe.c:3179 msgid "Call Handler" msgstr "Manipulador de Chamada" -#: describe.c:3066 describe.c:4167 +#: describe.c:3180 describe.c:4299 msgid "Validator" msgstr "Validador" -#: describe.c:3069 +#: describe.c:3183 msgid "Inline Handler" msgstr "Manipulador de Código Embutido" -#: describe.c:3097 +#: describe.c:3211 msgid "List of languages" msgstr "Lista de linguagens" -#: describe.c:3141 +#: describe.c:3255 msgid "Modifier" msgstr "Modificador" -#: describe.c:3142 +#: describe.c:3256 msgid "Check" msgstr "Verificação" -#: describe.c:3184 +#: describe.c:3298 msgid "List of domains" msgstr "Lista de domínios" -#: describe.c:3218 +#: describe.c:3332 msgid "Source" msgstr "Fonte" -#: describe.c:3219 +#: describe.c:3333 msgid "Destination" msgstr "Destino" -#: describe.c:3220 describe.c:3369 +#: describe.c:3334 describe.c:3483 msgid "no" msgstr "não" -#: describe.c:3220 describe.c:3371 +#: describe.c:3334 describe.c:3485 msgid "yes" msgstr "sim" -#: describe.c:3221 +#: describe.c:3335 msgid "Default?" msgstr "Padrão?" -#: describe.c:3258 +#: describe.c:3372 msgid "List of conversions" msgstr "Lista de conversões" -#: describe.c:3297 +#: describe.c:3411 msgid "Event" msgstr "Evento" -#: describe.c:3299 +#: describe.c:3413 msgid "enabled" msgstr "habilitado" -#: describe.c:3300 +#: describe.c:3414 msgid "replica" msgstr "réplica" -#: describe.c:3301 +#: describe.c:3415 msgid "always" msgstr "sempre" -#: describe.c:3302 +#: describe.c:3416 msgid "disabled" msgstr "desabilitado" -#: describe.c:3303 +#: describe.c:3417 msgid "Enabled" msgstr "Habilitado" -#: describe.c:3304 +#: describe.c:3418 msgid "Procedure" msgstr "Procedimento" -#: describe.c:3305 +#: describe.c:3419 msgid "Tags" msgstr "Marcadores" -#: describe.c:3324 +#: describe.c:3438 msgid "List of event triggers" msgstr "Lista de gatilhos de eventos" -#: describe.c:3366 +#: describe.c:3480 msgid "Source type" msgstr "Tipo fonte" -#: describe.c:3367 +#: describe.c:3481 msgid "Target type" msgstr "Tipo alvo" -#: describe.c:3370 +#: describe.c:3484 msgid "in assignment" msgstr "em atribuição" -#: describe.c:3372 +#: describe.c:3486 msgid "Implicit?" msgstr "Implícito?" -#: describe.c:3423 +#: describe.c:3537 msgid "List of casts" msgstr "Lista de conversões de tipos" -#: describe.c:3449 +#: describe.c:3565 #, c-format -msgid "The server (version %d.%d) does not support collations.\n" -msgstr "O servidor (versão %d.%d) não suporta ordenações.\n" +msgid "The server (version %s) does not support collations.\n" +msgstr "O servidor (versão %s) não suporta ordenações (collations).\n" -#: describe.c:3499 +#: describe.c:3616 msgid "List of collations" msgstr "Lista de ordenações" -#: describe.c:3558 +#: describe.c:3675 msgid "List of schemas" msgstr "Lista de esquemas" -#: describe.c:3581 describe.c:3816 describe.c:3884 describe.c:3952 +#: describe.c:3700 describe.c:3938 describe.c:4009 describe.c:4080 #, c-format -msgid "The server (version %d.%d) does not support full text search.\n" -msgstr "O servidor (versão %d.%d) não suporta busca textual.\n" +msgid "The server (version %s) does not support full text search.\n" +msgstr "O servidor (versão %s) não suporta busca textual.\n" -#: describe.c:3615 +#: describe.c:3735 msgid "List of text search parsers" msgstr "Lista de analisadores de busca textual" -#: describe.c:3658 +#: describe.c:3778 #, c-format msgid "Did not find any text search parser named \"%s\".\n" msgstr "Não encontrou nenhum analisador de busca textual chamado \"%s\".\n" -#: describe.c:3733 +#: describe.c:3853 msgid "Start parse" msgstr "Iniciar análise" -#: describe.c:3734 +#: describe.c:3854 msgid "Method" msgstr "Método" -#: describe.c:3738 +#: describe.c:3858 msgid "Get next token" msgstr "Obter próximo elemento" -#: describe.c:3740 +#: describe.c:3860 msgid "End parse" msgstr "Terminar análise" -#: describe.c:3742 +#: describe.c:3862 msgid "Get headline" msgstr "Obter destaque" -#: describe.c:3744 +#: describe.c:3864 msgid "Get token types" msgstr "Obter tipos de elemento" -#: describe.c:3754 +#: describe.c:3874 #, c-format msgid "Text search parser \"%s.%s\"" msgstr "Analisador de busca textual \"%s.%s\"" -#: describe.c:3756 +#: describe.c:3876 #, c-format msgid "Text search parser \"%s\"" msgstr "Analisador de busca textual \"%s\"" -#: describe.c:3775 +#: describe.c:3895 msgid "Token name" msgstr "Nome do elemento" -#: describe.c:3786 +#: describe.c:3906 #, c-format msgid "Token types for parser \"%s.%s\"" msgstr "Tipos de elemento para analisador \"%s.%s\"" -#: describe.c:3788 +#: describe.c:3908 #, c-format msgid "Token types for parser \"%s\"" msgstr "Tipos de elemento para analisador \"%s\"" -#: describe.c:3838 +#: describe.c:3961 msgid "Template" msgstr "Modelo" -#: describe.c:3839 +#: describe.c:3962 msgid "Init options" msgstr "Opções de inicialização" -#: describe.c:3861 +#: describe.c:3984 msgid "List of text search dictionaries" msgstr "Lista de dicionários de busca textual" -#: describe.c:3901 +#: describe.c:4027 msgid "Init" msgstr "Inicializador" -#: describe.c:3902 +#: describe.c:4028 msgid "Lexize" msgstr "Lexize" -#: describe.c:3929 +#: describe.c:4055 msgid "List of text search templates" msgstr "Lista de modelos de busca textual" -#: describe.c:3986 +#: describe.c:4115 msgid "List of text search configurations" msgstr "Lista de configurações de busca textual" -#: describe.c:4030 +#: describe.c:4159 #, c-format msgid "Did not find any text search configuration named \"%s\".\n" msgstr "Não encontrou nenhuma configuração de busca textual chamada \"%s\".\n" -#: describe.c:4096 +#: describe.c:4225 msgid "Token" msgstr "Elemento" -#: describe.c:4097 +#: describe.c:4226 msgid "Dictionaries" msgstr "Dicionários" -#: describe.c:4108 +#: describe.c:4237 #, c-format msgid "Text search configuration \"%s.%s\"" msgstr "Configuração de busca textual \"%s.%s\"" -#: describe.c:4111 +#: describe.c:4240 #, c-format msgid "Text search configuration \"%s\"" msgstr "Configuração de busca textual \"%s\"" -#: describe.c:4115 +#: describe.c:4244 #, c-format msgid "" "\n" @@ -1638,7 +1816,7 @@ msgstr "" "\n" "Analisador: \"%s.%s\"" -#: describe.c:4118 +#: describe.c:4247 #, c-format msgid "" "\n" @@ -1647,86 +1825,82 @@ msgstr "" "\n" "Analisador: \"%s\"" -#: describe.c:4150 +#: describe.c:4281 #, c-format -msgid "The server (version %d.%d) does not support foreign-data wrappers.\n" -msgstr "O servidor (versão %d.%d) não suporta adaptadores de dados externos.\n" - -#: describe.c:4164 -msgid "Handler" -msgstr "Manipulador" +msgid "The server (version %s) does not support foreign-data wrappers.\n" +msgstr "O servidor (versão %s) não suporta adaptadores de dados externos.\n" -#: describe.c:4207 +#: describe.c:4339 msgid "List of foreign-data wrappers" msgstr "Lista de adaptadores de dados externos" -#: describe.c:4230 +#: describe.c:4364 #, c-format -msgid "The server (version %d.%d) does not support foreign servers.\n" -msgstr "O servidor (versão %d.%d) não suporta servidores externos.\n" +msgid "The server (version %s) does not support foreign servers.\n" +msgstr "O servidor (versão %s) não suporta servidores externos.\n" -#: describe.c:4242 +#: describe.c:4377 msgid "Foreign-data wrapper" msgstr "Adaptador de dados externos" -#: describe.c:4260 describe.c:4455 +#: describe.c:4395 describe.c:4600 msgid "Version" msgstr "Versão" -#: describe.c:4286 +#: describe.c:4421 msgid "List of foreign servers" msgstr "Lista de servidores externos" -#: describe.c:4309 +#: describe.c:4446 #, c-format -msgid "The server (version %d.%d) does not support user mappings.\n" -msgstr "O servidor (versão %d.%d) não suporta mapeamentos de usuários.\n" +msgid "The server (version %s) does not support user mappings.\n" +msgstr "O servidor (versão %s) não suporta mapeamentos de usuários.\n" -#: describe.c:4318 describe.c:4379 +#: describe.c:4456 describe.c:4520 msgid "Server" msgstr "Servidor" -#: describe.c:4319 +#: describe.c:4457 msgid "User name" msgstr "Nome de usuário" -#: describe.c:4344 +#: describe.c:4482 msgid "List of user mappings" msgstr "Lista de mapeamentos de usuários" -#: describe.c:4367 +#: describe.c:4507 #, c-format -msgid "The server (version %d.%d) does not support foreign tables.\n" -msgstr "O servidor (versão %d.%d) não suporta tabelas externas.\n" +msgid "The server (version %s) does not support foreign tables.\n" +msgstr "O servidor (versão %s) não suporta tabelas externas.\n" -#: describe.c:4418 +#: describe.c:4560 msgid "List of foreign tables" msgstr "Lista de tabelas externas" -#: describe.c:4441 describe.c:4495 +#: describe.c:4585 describe.c:4642 #, c-format -msgid "The server (version %d.%d) does not support extensions.\n" -msgstr "O servidor (versão %d.%d) não suporta extensões.\n" +msgid "The server (version %s) does not support extensions.\n" +msgstr "O servidor (versão %s) não suporta extensões.\n" -#: describe.c:4472 +#: describe.c:4617 msgid "List of installed extensions" msgstr "Lista de extensões instaladas" -#: describe.c:4522 +#: describe.c:4670 #, c-format msgid "Did not find any extension named \"%s\".\n" msgstr "Não encontrou nenhuma extensão chamada \"%s\".\n" -#: describe.c:4525 +#: describe.c:4673 #, c-format msgid "Did not find any extensions.\n" msgstr "Não encontrou nenhuma extensão.\n" -#: describe.c:4569 +#: describe.c:4717 msgid "Object Description" msgstr "Descrição do Objeto" -#: describe.c:4578 +#: describe.c:4726 #, c-format msgid "Objects in extension \"%s\"" msgstr "Objetos na extensão \"%s\"" @@ -1736,21 +1910,21 @@ msgstr "Objetos na extensão \"%s\"" msgid "%s\n" msgstr "%s\n" -#: help.c:70 +#: help.c:74 #, c-format msgid "" "psql is the PostgreSQL interactive terminal.\n" "\n" msgstr "" -"psql é o terminal iterativo do PostgreSQL.\n" +"psql é o terminal interativo do PostgreSQL.\n" "\n" -#: help.c:71 help.c:314 help.c:347 help.c:374 +#: help.c:75 help.c:333 help.c:367 help.c:394 #, c-format msgid "Usage:\n" msgstr "Uso:\n" -#: help.c:72 +#: help.c:76 #, c-format msgid "" " psql [OPTION]... [DBNAME [USERNAME]]\n" @@ -1759,36 +1933,33 @@ msgstr "" " psql [OPÇÃO]... [NOMEBD [USUÃRIO]]\n" "\n" -#: help.c:74 +#: help.c:78 #, c-format msgid "General options:\n" msgstr "Opções gerais:\n" -#: help.c:79 +#: help.c:83 #, c-format msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n" msgstr " -c, --command=COMANDO executa somente um comando (SQL ou interno) e termina\n" -#: help.c:80 +#: help.c:84 #, c-format msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" msgstr " -d, --dbname=NOMEBD nome do banco de dados ao qual quer se conectar (padrão: \"%s\")\n" -#: help.c:81 +#: help.c:85 #, c-format msgid " -f, --file=FILENAME execute commands from file, then exit\n" msgstr " -f, --file=ARQUIVO executa comandos de um arquivo e termina\n" -#: help.c:82 +#: help.c:86 #, c-format msgid " -l, --list list available databases, then exit\n" msgstr " -l, --list lista os bancos de dados disponíveis e termina\n" -#: help.c:83 -#, fuzzy, c-format -#| msgid "" -#| " -v, --set=, --variable=NAME=VALUE\n" -#| " set psql variable NAME to VALUE\n" +#: help.c:87 +#, c-format msgid "" " -v, --set=, --variable=NAME=VALUE\n" " set psql variable NAME to VALUE\n" @@ -1796,18 +1967,19 @@ msgid "" msgstr "" " -v, --set=, --variable=NOME=VALOR\n" " define variável do psql NOME como VALOR\n" +" (e.g., -v ON_ERROR_STOP=1)\n" -#: help.c:86 +#: help.c:90 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version mostra informação sobre a versão e termina\n" -#: help.c:87 +#: help.c:91 #, c-format msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" msgstr " -X, --no-psqlrc não lê o arquivo de inicialização (~/.psqlrc)\n" -#: help.c:88 +#: help.c:92 #, c-format msgid "" " -1 (\"one\"), --single-transaction\n" @@ -1816,24 +1988,22 @@ msgstr "" " -1 (\"um\"), --single-transaction\n" " executa como uma transação única (se não interativo)\n" -#: help.c:90 -#, fuzzy, c-format +#: help.c:94 +#, c-format msgid " -?, --help[=options] show this help, then exit\n" -msgstr " -?, --help[=opções] mostra essa ajuda e termina\n" +msgstr " -?, --help[=options] mostra essa ajuda e termina\n" -#: help.c:91 -#, fuzzy, c-format -#| msgid " -?, --help show this help, then exit\n" +#: help.c:95 +#, c-format msgid " --help=commands list backslash commands, then exit\n" -msgstr " -?, --help mostra essa ajuda e termina\n" +msgstr " -?, --help=commands mostra comandos de barra invertida e termina\n" -#: help.c:92 -#, fuzzy, c-format -#| msgid " -?, --help show this help, then exit\n" +#: help.c:96 +#, c-format msgid " --help=variables list special variables, then exit\n" -msgstr " -?, --help mostra essa ajuda e termina\n" +msgstr " -?, --help=variables mostra variáveis especiais e termina\n" -#: help.c:94 +#: help.c:98 #, c-format msgid "" "\n" @@ -1842,58 +2012,57 @@ msgstr "" "\n" "Opções de entrada e saída:\n" -#: help.c:95 +#: help.c:99 #, c-format msgid " -a, --echo-all echo all input from script\n" msgstr " -a, --echo-all mostra toda entrada do script\n" -#: help.c:96 -#, fuzzy, c-format -#| msgid " -e, --echo-queries echo commands sent to server\n" +#: help.c:100 +#, c-format msgid " -b, --echo-errors echo failed commands\n" msgstr " -b, --echo-errors mostra comandos que falharam\n" -#: help.c:97 +#: help.c:101 #, c-format msgid " -e, --echo-queries echo commands sent to server\n" msgstr " -e, --echo-queries mostra comandos enviados ao servidor\n" -#: help.c:98 +#: help.c:102 #, c-format msgid " -E, --echo-hidden display queries that internal commands generate\n" msgstr " -E, --echo-hidden mostra consultas que os comandos internos geram\n" -#: help.c:99 +#: help.c:103 #, c-format msgid " -L, --log-file=FILENAME send session log to file\n" msgstr " -L, --log-file=ARQUIVO envia log da sessão para arquivo\n" -#: help.c:100 +#: help.c:104 #, c-format msgid " -n, --no-readline disable enhanced command line editing (readline)\n" msgstr " -n, --no-readline desabilita edição de linha de comando melhorada (readline)\n" -#: help.c:101 +#: help.c:105 #, c-format msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" msgstr " -o, --output=ARQUIVO envia resultados da consulta para um arquivo (ou |pipe)\n" -#: help.c:102 +#: help.c:106 #, c-format msgid " -q, --quiet run quietly (no messages, only query output)\n" msgstr " -q, --quiet executa silenciosamente (sem mensagens, somente saída da consulta)\n" -#: help.c:103 +#: help.c:107 #, c-format msgid " -s, --single-step single-step mode (confirm each query)\n" msgstr " -s, --single-step modo passo-a-passo (confirma cada consulta)\n" -#: help.c:104 +#: help.c:108 #, c-format msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n" msgstr " -S, --single-line modo linha única (fim da linha termina o comando SQL)\n" -#: help.c:106 +#: help.c:110 #, c-format msgid "" "\n" @@ -1902,12 +2071,12 @@ msgstr "" "\n" "Opções para formato de saída:\n" -#: help.c:107 +#: help.c:111 #, c-format msgid " -A, --no-align unaligned table output mode\n" msgstr " -A, --no-align modo de saída em tabela desalinhada\n" -#: help.c:108 +#: help.c:112 #, c-format msgid "" " -F, --field-separator=STRING\n" @@ -1916,17 +2085,17 @@ msgstr "" " -F, --field-separator=SEPARADOR\n" " define separador de campos para modo de saída desalinhado (padrão: \"%s\")\n" -#: help.c:111 +#: help.c:115 #, c-format msgid " -H, --html HTML table output mode\n" msgstr " -H, --html modo de saída em tabela HTML\n" -#: help.c:112 +#: 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] define opção de exibição VAR para ARG (veja comando \\pset)\n" -#: help.c:113 +#: help.c:117 #, c-format msgid "" " -R, --record-separator=STRING\n" @@ -1935,22 +2104,22 @@ msgstr "" " -R, --record-separator=SEPARADOR\n" " define separador de registros para modo de saída desalinhado (padrão: nova linha)\n" -#: help.c:115 +#: help.c:119 #, c-format msgid " -t, --tuples-only print rows only\n" msgstr " -t, --tuples-only exibe somente registros\n" -#: help.c:116 +#: help.c:120 #, c-format msgid " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n" msgstr " -T, --table-attr=TEXTO define atributos do marcador table do HTML (i.e. width, border)\n" -#: help.c:117 +#: help.c:121 #, c-format msgid " -x, --expanded turn on expanded table output\n" msgstr " -x, --expanded habilita saída em tabela expandida\n" -#: help.c:118 +#: help.c:122 #, c-format msgid "" " -z, --field-separator-zero\n" @@ -1959,7 +2128,7 @@ msgstr "" " -z, --field-separator-zero\n" " define separador de campos para modo de saída desalinhado como byte zero\n" -#: help.c:120 +#: help.c:124 #, c-format msgid "" " -0, --record-separator-zero\n" @@ -1968,7 +2137,7 @@ msgstr "" " -0, --record-separator-zero\n" " define separador de registros para modo de saída desalinhado como byte zero\n" -#: help.c:123 +#: help.c:127 #, c-format msgid "" "\n" @@ -1977,36 +2146,36 @@ msgstr "" "\n" "Opções de conexão:\n" -#: help.c:126 +#: help.c:130 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n" msgstr " -h, --host=MÃQUINA máquina do servidor de banco de dados ou diretório do soquete (padrão: \"%s\")\n" -#: help.c:127 +#: help.c:131 msgid "local socket" msgstr "soquete local" -#: help.c:130 +#: help.c:134 #, c-format msgid " -p, --port=PORT database server port (default: \"%s\")\n" msgstr " -p, --port=PORTA porta do servidor de banco de dados (padrão: \"%s\")\n" -#: help.c:136 +#: help.c:140 #, c-format msgid " -U, --username=USERNAME database user name (default: \"%s\")\n" msgstr " -U, --username=USUÃRIO nome de usuário do banco de dados (padrão: \"%s\")\n" -#: help.c:137 +#: help.c:141 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password nunca pergunta senha\n" -#: help.c:138 +#: help.c:142 #, c-format msgid " -W, --password force password prompt (should happen automatically)\n" msgstr " -W, --password pergunta senha (pode ocorrer automaticamente)\n" -#: help.c:140 +#: help.c:144 #, c-format msgid "" "\n" @@ -2021,368 +2190,397 @@ msgstr "" "documentação do PostgreSQL.\n" "\n" -#: help.c:143 +#: help.c:147 #, c-format msgid "Report bugs to .\n" msgstr "Relate erros a .\n" -#: help.c:166 +#: help.c:173 #, c-format msgid "General\n" msgstr "Geral\n" -#: help.c:167 +#: help.c:174 #, c-format msgid " \\copyright show PostgreSQL usage and distribution terms\n" msgstr " \\copyright mostra termos de uso e distribuição do PostgreSQL\n" -#: help.c:168 +#: help.c:175 +#, c-format +msgid " \\errverbose show most recent error message at maximum verbosity\n" +msgstr " \\errverbose mostra mensagem de erro mais recente com detalhamento máximo\n" + +#: help.c:176 #, c-format msgid " \\g [FILE] or ; execute query (and send results to file or |pipe)\n" msgstr " \\g [ARQUIVO] ou ; executa consulta (e envia os resultados para arquivo ou |pipe)\n" -#: help.c:169 +#: help.c:177 +#, c-format +msgid " \\gexec execute query, then execute each value in its result\n" +msgstr " \\gexec executa consulta, em seguida, executa cada valor no seu resultado\n" + +#: help.c:178 #, c-format msgid " \\gset [PREFIX] execute query and store results in psql variables\n" msgstr " \\gset [PREFIXO] executa consulta e armazena os resultados em variáveis do psql\n" -#: help.c:170 +#: help.c:179 #, c-format msgid " \\q quit psql\n" msgstr " \\q sair do psql\n" -#: help.c:171 +#: help.c:180 +#, c-format +msgid " \\crosstabview [COLUMNS] execute query and display results in crosstab\n" +msgstr " \\crosstabview [COLUNAS] executa consulta e mostra resultados em tabela de referência cruzada\n" + +#: help.c:181 #, c-format msgid " \\watch [SEC] execute query every SEC seconds\n" msgstr " \\watch [SEG] executa consulta a cada SEG segundos\n" -#: help.c:174 +#: help.c:184 #, c-format msgid "Help\n" msgstr "Ajuda\n" -#: help.c:176 +#: help.c:186 #, c-format -msgid " \\? [commands] description of all psql backslash commands\n" -msgstr "" +msgid " \\? [commands] show help on backslash commands\n" +msgstr " \\? [commands] mostra ajuda sobre comandos de barra invertida\n" -#: help.c:177 +#: help.c:187 #, c-format -msgid " \\? options description of all psql commandline options\n" -msgstr "" +msgid " \\? options show help on psql command-line options\n" +msgstr " \\? options mostra ajuda sobre opções de linha de comando do psql\n" -#: help.c:178 -#, fuzzy, c-format -#| msgid " --sysconfdir show location of system-wide configuration files\n" -msgid " \\? variables description of all psql configuration variables\n" -msgstr " \\? variáveis descrição de todas as variáveis de configuração do psql\n" +#: help.c:188 +#, c-format +msgid " \\? variables show help on special variables\n" +msgstr " \\? variables mostra ajuda sobre variáveis especiais\n" -#: help.c:179 +#: help.c:189 #, c-format msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n" msgstr " \\h [NOME] mostra sintaxe dos comandos SQL, * para todos os comandos\n" -#: help.c:182 +#: help.c:192 #, c-format msgid "Query Buffer\n" msgstr "Buffer de consulta\n" -#: help.c:183 +#: help.c:193 #, c-format msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n" msgstr " \\e [ARQUIVO] [LINHA] edita o buffer de consulta (ou arquivo) com um editor externo\n" -#: help.c:184 +#: help.c:194 #, c-format msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" msgstr " \\ef [NOMEFUNÇÃO [LINHA]] edita a definição de função com um editor externo\n" -#: help.c:185 +#: help.c:195 +#, c-format +msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n" +msgstr " \\ev [NOMEVISÃO [LINHA]] edita a definição de visão com um editor externo\n" + +#: help.c:196 #, c-format msgid " \\p show the contents of the query buffer\n" msgstr " \\p mostra o conteúdo do buffer de consulta\n" -#: help.c:186 +#: help.c:197 #, c-format msgid " \\r reset (clear) the query buffer\n" msgstr " \\r reinicia (apaga) o buffer de consulta\n" -#: help.c:188 +#: help.c:199 #, c-format msgid " \\s [FILE] display history or save it to file\n" msgstr " \\s [ARQUIVO] mostra histórico ou grava-o em um arquivo\n" -#: help.c:190 +#: help.c:201 #, c-format msgid " \\w FILE write query buffer to file\n" msgstr " \\w [ARQUIVO] escreve o buffer de consulta para arquivo\n" -#: help.c:193 +#: help.c:204 #, c-format msgid "Input/Output\n" msgstr "Entrada/Saída\n" -#: help.c:194 +#: help.c:205 #, c-format msgid " \\copy ... perform SQL COPY with data stream to the client host\n" msgstr " \\copy ... realiza comando SQL COPY dos dados para máquina cliente\n" -#: help.c:195 +#: help.c:206 #, c-format msgid " \\echo [STRING] write string to standard output\n" -msgstr " \\echo [TEXTO] escreve cadeia de caracteres na saída padrão\n" +msgstr " \\echo [TEXTO] escreve cadeia de caracteres na saída padrão\n" -#: help.c:196 +#: help.c:207 #, c-format msgid " \\i FILE execute commands from file\n" msgstr " \\i ARQUIVO executa comandos de um arquivo\n" -#: help.c:197 +#: help.c:208 #, c-format msgid " \\ir FILE as \\i, but relative to location of current script\n" msgstr " \\ir ARQUIVO como \\i, mas relativo ao local do script atual\n" -#: help.c:198 +#: help.c:209 #, c-format msgid " \\o [FILE] send all query results to file or |pipe\n" msgstr " \\o [ARQUIVO] envia todos os resultados da consulta para arquivo ou |pipe\n" -#: help.c:199 +#: help.c:210 #, c-format msgid " \\qecho [STRING] write string to query output stream (see \\o)\n" msgstr " \\qecho [TEXTO] escreve cadeia de caracteres para saída da consulta (veja \\o)\n" -#: help.c:202 +#: help.c:213 #, c-format msgid "Informational\n" msgstr "Informativo\n" -#: help.c:203 +#: help.c:214 #, c-format msgid " (options: S = show system objects, + = additional detail)\n" msgstr " (opções: S = mostra objetos do sistema, + = detalhes)\n" -#: help.c:204 +#: help.c:215 #, c-format msgid " \\d[S+] list tables, views, and sequences\n" msgstr " \\d[S+] lista tabelas, visões e sequências\n" -#: help.c:205 +#: help.c:216 #, c-format msgid " \\d[S+] NAME describe table, view, sequence, or index\n" msgstr " \\d[S+] NOME descreve tabela, visão, sequência ou índice\n" -#: help.c:206 +#: help.c:217 #, c-format msgid " \\da[S] [PATTERN] list aggregates\n" msgstr " \\da[S] [MODELO] lista funções de agregação\n" -#: help.c:207 +#: help.c:218 +#, c-format +msgid " \\dA[+] [PATTERN] list access methods\n" +msgstr " \\dA[+] [MODELO] lista métodos de acesso\n" + +#: help.c:219 #, c-format msgid " \\db[+] [PATTERN] list tablespaces\n" msgstr " \\db[+] [MODELO] lista tablespaces\n" -#: help.c:208 +#: help.c:220 #, c-format msgid " \\dc[S+] [PATTERN] list conversions\n" msgstr " \\dc[S+] [MODELO] lista conversões\n" -#: help.c:209 +#: help.c:221 #, c-format msgid " \\dC[+] [PATTERN] list casts\n" msgstr " \\dC[+] [MODELO] lista conversões de tipos\n" -#: help.c:210 +#: help.c:222 #, c-format msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n" msgstr " \\dd[S] [MODELO] mostra comentários de objetos que não aparecem em outro lugar\n" -#: help.c:211 +#: help.c:223 #, c-format msgid " \\ddp [PATTERN] list default privileges\n" msgstr " \\ddp [MODELO] lista privilégios padrão\n" -#: help.c:212 +#: help.c:224 #, c-format msgid " \\dD[S+] [PATTERN] list domains\n" msgstr " \\dD[S+] [MODELO] lista domínios\n" -#: help.c:213 +#: help.c:225 #, c-format msgid " \\det[+] [PATTERN] list foreign tables\n" msgstr " \\det[+] [MODELO] lista tabelas externas\n" -#: help.c:214 +#: help.c:226 #, c-format msgid " \\des[+] [PATTERN] list foreign servers\n" msgstr " \\des[+] [MODELO] lista servidores externos\n" -#: help.c:215 +#: help.c:227 #, c-format msgid " \\deu[+] [PATTERN] list user mappings\n" msgstr " \\deu[+] [MODELO] lista mapeamento de usuários\n" -#: help.c:216 +#: help.c:228 #, c-format msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" msgstr " \\dew[+] [MODELO] lista adaptadores de dados externos\n" -#: help.c:217 +#: help.c:229 #, c-format msgid " \\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions\n" msgstr " \\df[antw][S+] [MODELO] lista funções [somente agr/normal/gatilho/deslizante]\n" -#: help.c:218 +#: help.c:230 #, c-format msgid " \\dF[+] [PATTERN] list text search configurations\n" msgstr " \\dF[+] [MODELO] lista configurações de busca textual\n" -#: help.c:219 +#: help.c:231 #, c-format msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" msgstr " \\dFd[+] [MODELO] lista dicionários de busca textual\n" -#: help.c:220 +#: help.c:232 #, c-format msgid " \\dFp[+] [PATTERN] list text search parsers\n" msgstr " \\dFp[+] [MODELO] lista analisadores de busca textual\n" -#: help.c:221 +#: help.c:233 #, c-format msgid " \\dFt[+] [PATTERN] list text search templates\n" msgstr " \\dFt[+] [MODELO] lista modelos de busca textual\n" -#: help.c:222 +#: help.c:234 #, c-format -msgid " \\dg[+] [PATTERN] list roles\n" -msgstr " \\dg[+] [MODELO] lista roles\n" +msgid " \\dg[S+] [PATTERN] list roles\n" +msgstr " \\dg[S+] [MODELO] lista roles\n" -#: help.c:223 +#: help.c:235 #, c-format msgid " \\di[S+] [PATTERN] list indexes\n" msgstr " \\di[S+] [MODELO] lista índices\n" -#: help.c:224 +#: help.c:236 #, c-format msgid " \\dl list large objects, same as \\lo_list\n" msgstr " \\dl lista objetos grandes, mesmo que \\lo_list\n" -#: help.c:225 +#: help.c:237 #, c-format msgid " \\dL[S+] [PATTERN] list procedural languages\n" msgstr " \\dL[S+] [MODELO] lista linguagens procedurais\n" -#: help.c:226 +#: help.c:238 #, c-format msgid " \\dm[S+] [PATTERN] list materialized views\n" msgstr " \\dm[S+] [MODELO] lista visões materializadas\n" -#: help.c:227 +#: help.c:239 #, c-format msgid " \\dn[S+] [PATTERN] list schemas\n" msgstr " \\dn[S+] [MODELO] lista esquemas\n" -#: help.c:228 +#: help.c:240 #, c-format msgid " \\do[S] [PATTERN] list operators\n" msgstr " \\do[S] [MODELO] lista operadores\n" -#: help.c:229 +#: help.c:241 #, c-format msgid " \\dO[S+] [PATTERN] list collations\n" msgstr " \\dO[S+] [MODELO] lista ordenações\n" -#: help.c:230 +#: help.c:242 #, c-format msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n" msgstr " \\dp [MODELO] lista privilégios de acesso de tabelas, visões e sequências\n" -#: help.c:231 +#: help.c:243 #, c-format msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n" -msgstr " \\drds [MOD1 [MOD2]] lista configurações de roles por banco de dados\n" +msgstr " \\drds [MOD1 [MOD2]] lista configurações de roles por banco de dados\n" -#: help.c:232 +#: help.c:244 #, c-format msgid " \\ds[S+] [PATTERN] list sequences\n" msgstr " \\ds[S+] [MODELO] lista sequências\n" -#: help.c:233 +#: help.c:245 #, c-format msgid " \\dt[S+] [PATTERN] list tables\n" msgstr " \\dt[S+] [MODELO] lista tabelas\n" -#: help.c:234 +#: help.c:246 #, c-format msgid " \\dT[S+] [PATTERN] list data types\n" msgstr " \\dT[S+] [MODELO] lista tipos de dados\n" -#: help.c:235 +#: help.c:247 #, c-format -msgid " \\du[+] [PATTERN] list roles\n" -msgstr " \\du[+] [MODELO] lista roles\n" +msgid " \\du[S+] [PATTERN] list roles\n" +msgstr " \\du[S+] [MODELO] lista roles\n" -#: help.c:236 +#: help.c:248 #, c-format msgid " \\dv[S+] [PATTERN] list views\n" msgstr " \\dv[S+] [MODELO] lista visões\n" -#: help.c:237 +#: help.c:249 #, c-format msgid " \\dE[S+] [PATTERN] list foreign tables\n" msgstr " \\dE[S+] [MODELO] lista tabelas externas\n" -#: help.c:238 +#: help.c:250 #, c-format msgid " \\dx[+] [PATTERN] list extensions\n" msgstr " \\dx[+] [MODELO] lista extensões\n" -#: help.c:239 +#: help.c:251 #, c-format msgid " \\dy [PATTERN] list event triggers\n" msgstr " \\dy [MODELO] lista gatilhos de eventos\n" -#: help.c:240 +#: help.c:252 #, c-format msgid " \\l[+] [PATTERN] list databases\n" msgstr " \\l[+] [MODELO] lista bancos de dados\n" -#: help.c:241 +#: help.c:253 #, c-format -msgid " \\sf[+] FUNCNAME show a function's definition\n" -msgstr " \\sf[+] NOMEFUNÇÃO edita a definição da função\n" +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] NOMEFUNÇÃO edita a definição da função\n" -#: help.c:242 +#: help.c:254 +#, c-format +msgid " \\sv[+] VIEWNAME show a view's definition\n" +msgstr " \\sv[+] NOMEVISÃO edita a definição da visão\n" + +#: help.c:255 #, c-format msgid " \\z [PATTERN] same as \\dp\n" msgstr " \\z [MODELO] mesmo que \\dp\n" -#: help.c:245 +#: help.c:258 #, c-format msgid "Formatting\n" msgstr "Formatação\n" -#: help.c:246 +#: help.c:259 #, c-format msgid " \\a toggle between unaligned and aligned output mode\n" msgstr " \\a alterna entre modo de saída desalinhado e alinhado\n" -#: help.c:247 +#: help.c:260 #, c-format msgid " \\C [STRING] set table title, or unset if none\n" msgstr " \\C [TEXTO] define o título da tabela, ou apaga caso nada seja especificado\n" -#: help.c:248 +#: help.c:261 #, c-format msgid " \\f [STRING] show or set field separator for unaligned query output\n" msgstr " \\f [TEXTO] mostra ou define separador de campos para saída de consulta desalinhada\n" -#: help.c:249 +#: help.c:262 #, c-format msgid " \\H toggle HTML output mode (currently %s)\n" msgstr " \\H alterna para modo de saída em HTML (atual %s)\n" -#: help.c:251 +#: help.c:264 #, c-format msgid "" " \\pset [NAME [VALUE]] set table output option\n" @@ -2390,121 +2588,115 @@ msgid "" " numericlocale|recordsep|recordsep_zero|tuples_only|title|tableattr|pager|\n" " unicode_border_linestyle|unicode_column_linestyle|unicode_header_linestyle})\n" msgstr "" -" \\pset [NOME [VALOR]] define opção de saída da tabela\n" +" \\pset [NOME [VALOR]] define opção de saída da tabela\n" " (NOME := {format|border|expanded|fieldsep|fieldsep_zero|footer|null|\n" " numericlocale|recordsep|recordsep_zero|tuples_only|title|tableattr|pager|\n" " unicode_border_linestyle|unicode_column_linestyle|unicode_header_linestyle})\n" -#: help.c:255 +#: help.c:268 #, c-format msgid " \\t [on|off] show only rows (currently %s)\n" msgstr " \\t [on|off] mostra somente registros (atual %s)\n" -#: help.c:257 +#: help.c:270 #, c-format msgid " \\T [STRING] set HTML
tag attributes, or unset if none\n" msgstr " \\T [TEXTO] define atributos do marcador HTML
ou apaga caso nada seja especificado\n" -#: help.c:258 +#: help.c:271 #, c-format msgid " \\x [on|off|auto] toggle expanded output (currently %s)\n" msgstr " \\x [on|off|auto] alterna para saída expandida (atual %s)\n" -#: help.c:262 +#: help.c:275 #, c-format msgid "Connection\n" msgstr "Conexão\n" -#: help.c:264 -#, fuzzy, c-format -#| msgid "" -#| " \\c[onnect] [DBNAME|- USER|- HOST|- PORT|-]\n" -#| " connect to new database (currently \"%s\")\n" +#: help.c:277 +#, c-format msgid "" " \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" " connect to new database (currently \"%s\")\n" msgstr "" " \\c[onnect] {[NOMEBD|- USUÃRIO|- MÃQUINA|- PORTA|-] | conninfo}\n" -" conecta a um outro banco de dados (atual \"%s\")\n" +" conecta a um novo banco de dados (atualmente \"%s\")\n" -#: help.c:268 -#, fuzzy, c-format -#| msgid "" -#| " \\c[onnect] [DBNAME|- USER|- HOST|- PORT|-]\n" -#| " connect to new database (currently no connection)\n" +#: help.c:281 +#, c-format msgid "" " \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" " connect to new database (currently no connection)\n" msgstr "" " \\c[onnect] {[NOMEBD|- USUÃRIO|- MÃQUINA|- PORTA|-] | conninfo}\n" -" conecta a um banco de dados novo (atualmente nenhuma conexão)\n" +" conecta a um novo banco de dados (atualmente nenhuma conexão)\n" -#: help.c:270 +#: help.c:283 #, c-format msgid " \\encoding [ENCODING] show or set client encoding\n" msgstr " \\encoding [CODIFICAÇÃO] mostra ou define codificação do cliente\n" -#: help.c:271 +#: help.c:284 #, c-format msgid " \\password [USERNAME] securely change the password for a user\n" msgstr " \\password [USUÃRIO] altera a senha de um usuário com segurança\n" -#: help.c:272 +#: help.c:285 #, c-format msgid " \\conninfo display information about current connection\n" msgstr " \\conninfo mostra informação sobre conexão atual\n" -#: help.c:275 +#: help.c:288 #, c-format msgid "Operating System\n" msgstr "Sistema Operacional\n" -#: help.c:276 +#: help.c:289 #, c-format msgid " \\cd [DIR] change the current working directory\n" msgstr " \\cd [DIRETÓRIO] muda o diretório de trabalho atual\n" -#: help.c:277 +#: help.c:290 #, c-format msgid " \\setenv NAME [VALUE] set or unset environment variable\n" msgstr " \\setenv NOME [VALOR] define ou apaga variável de ambiente\n" -#: help.c:278 +#: help.c:291 #, c-format msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" msgstr " \\timing [on|off] alterna para duração da execução de comandos (atualmente %s)\n" -#: help.c:280 +#: help.c:293 #, c-format msgid " \\! [COMMAND] execute command in shell or start interactive shell\n" -msgstr " \\! [COMANDO] executa comando na shell ou inicia shell iterativa\n" +msgstr " \\! [COMANDO] executa comando na shell ou inicia shell interativa\n" -#: help.c:283 +#: help.c:296 #, c-format msgid "Variables\n" msgstr "Variáveis\n" -#: help.c:284 +#: help.c:297 #, c-format msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" msgstr " \\prompt [TEXTO] NOME pergunta o usuário ao definir uma variável interna\n" -#: help.c:285 +#: help.c:298 #, c-format msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n" msgstr " \\set [NOME [VALOR]] define variável interna ou lista todos caso não tenha parâmetros\n" -#: help.c:286 +#: help.c:299 #, c-format msgid " \\unset NAME unset (delete) internal variable\n" msgstr " \\unset NOME apaga (exclui) variável interna\n" -#: help.c:289 +#: help.c:302 #, c-format msgid "Large Objects\n" msgstr "Objetos Grandes\n" -#: help.c:290 +#: help.c:303 #, c-format msgid "" " \\lo_export LOBOID FILE\n" @@ -2517,417 +2709,413 @@ msgstr "" " \\lo_list\n" " \\lo_unlink OIDLOB operações com objetos grandes\n" -#: help.c:311 +#: help.c:330 #, c-format -msgid "List of specially treated variables.\n" +msgid "" +"List of specially treated variables\n" +"\n" msgstr "" +"Lista de variáveis com tratamento especial\n" +"\n" -#: help.c:313 +#: help.c:332 #, c-format msgid "psql variables:\n" msgstr "variáveis do psql:\n" -#: help.c:315 +#: help.c:334 #, c-format msgid "" " psql --set=NAME=VALUE\n" -" or \\set NAME VALUE in interactive mode\n" +" or \\set NAME VALUE inside psql\n" "\n" msgstr "" " psql --set=NOME=VALOR\n" -" ou \\set NOME VALOR no modo interativo\n" +" ou \\set NOME VALOR no psql\n" "\n" -#: help.c:317 +#: help.c:336 #, c-format msgid " AUTOCOMMIT if set, successful SQL commands are automatically committed\n" -msgstr "" +msgstr " AUTOCOMMIT se definido, comandos SQL bem sucedidos são automaticamente efetivados\n" -#: help.c:318 +#: help.c:337 #, c-format msgid "" -" COMP_KEYWORD_CASE determine the case used to complete SQL keywords\n" +" COMP_KEYWORD_CASE determines the case used to complete SQL key words\n" " [lower, upper, preserve-lower, preserve-upper]\n" msgstr "" +" COMP_KEYWORD_CASE determina o uso de maiúsculas/minúsculas para completar palavras chave SQL\n" +" [lower, upper, preserve-lower, preserve-upper]\n" -#: help.c:320 -#, fuzzy, c-format -#| msgid " -d, --dbname=NAME connect to database name\n" +#: help.c:339 +#, c-format msgid " DBNAME the currently connected database name\n" -msgstr " -d, --dbname=NOME conecta ao banco de dados informado\n" +msgstr " NOMEBD o nome do banco de dados atualmente conectado\n" -#: help.c:321 +#: help.c:340 #, c-format msgid "" -" ECHO control what input is written to standard output\n" +" ECHO controls what input is written to standard output\n" " [all, errors, none, queries]\n" msgstr "" +" ECHO controla que entrada é escrita na saída padrão\n" +" [all, errors, none, queries]\n" -#: help.c:323 +#: help.c:342 #, c-format msgid "" -" ECHO_HIDDEN display internal queries executed by backslash commands when it is set\n" -" or with [noexec] just show without execution\n" +" ECHO_HIDDEN if set, display internal queries executed by backslash commands;\n" +" if set to \"noexec\", just show without execution\n" msgstr "" +" ECHO_HIDDEN se definido, mostra consultas internas executadas por comandos de barra invertida;\n" +" se definido para \"noexec\", apenas mostre sem executar\n" -#: help.c:325 -#, fuzzy, c-format -#| msgid "Sets the client's character set encoding." +#: help.c:344 +#, c-format msgid " ENCODING current client character set encoding\n" -msgstr "Define a codificação do conjunto de caracteres do cliente." +msgstr " ENCODING codificação do conjunto de caracteres do cliente atual\n" -#: help.c:326 +#: help.c:345 #, c-format msgid "" " FETCH_COUNT the number of result rows to fetch and display at a time\n" " (default: 0=unlimited)\n" msgstr "" +" FETCH_COUNT o número de registros a serem buscados e mostrados por vez\n" +" (padrão: 0=ilimitado)\n" -#: help.c:328 +#: help.c:347 #, c-format -msgid " HISTCONTROL control history list [ignorespace, ignoredups, ignoreboth]\n" -msgstr "" +msgid " HISTCONTROL controls command history [ignorespace, ignoredups, ignoreboth]\n" +msgstr " HISTCONTROL controla histórico de comandos [ignorespace, ignoredups, ignoreboth]\n" -#: help.c:329 +#: help.c:348 #, c-format -msgid " HISTFILE file name used to store the history list\n" -msgstr "" +msgid " HISTFILE file name used to store the command history\n" +msgstr " HISTFILE nome do arquivo utilizado para armazenar o histórico de comandos\n" -#: help.c:330 +#: help.c:349 #, c-format msgid " HISTSIZE the number of commands to store in the command history\n" -msgstr "" +msgstr " HISTSIZE o número de comandos para armazenar no histórico de comandos\n" -#: help.c:331 -#, fuzzy, c-format -#| msgid " -C, --create create the target database\n" -msgid " HOST the currently connected database server\n" -msgstr " -C, --create cria o banco de dados informado\n" +#: help.c:350 +#, c-format +msgid " HOST the currently connected database server host\n" +msgstr " HOST a máquina do servidor de banco de dados atualmente conectado\n" -#: help.c:332 +#: help.c:351 #, c-format msgid " IGNOREEOF if unset, sending an EOF to interactive session terminates application\n" -msgstr "" +msgstr " IGNOREEOF se não for definido, enviar um EOF para sessão interativa termina a aplicação\n" -#: help.c:333 -#, fuzzy, c-format -#| msgid " -o OID set next OID\n" -msgid " LASTOID the value of last affected OID\n" -msgstr " -o OID define próximo OID\n" +#: help.c:352 +#, c-format +msgid " LASTOID value of the last affected OID\n" +msgstr " LASTOID valor do último OID afetado\n" -#: help.c:334 +#: help.c:353 #, c-format -msgid " ON_ERROR_ROLLBACK if set, an error doesn't stop a transaction (uses implicit SAVEPOINTs)\n" -msgstr "" +msgid " ON_ERROR_ROLLBACK if set, an error doesn't stop a transaction (uses implicit savepoints)\n" +msgstr " ON_ERROR_ROLLBACK se definido, um erro não termina a transação (usa pontos de salvamento implícitos)\n" -#: help.c:335 +#: help.c:354 #, c-format msgid " ON_ERROR_STOP stop batch execution after error\n" -msgstr "" +msgstr " ON_ERROR_STOP termina a execução em lote após erro\n" -#: help.c:336 -#, fuzzy, c-format -#| msgid " \\conninfo display information about current connection\n" +#: help.c:355 +#, c-format msgid " PORT server port of the current connection\n" -msgstr " \\conninfo mostra informação sobre conexão atual\n" +msgstr " PORT porta do servidor da conexão atual\n" -#: help.c:337 +#: help.c:356 #, c-format -msgid " PROMPT1 specify the standard psql prompt\n" -msgstr "" +msgid " PROMPT1 specifies the standard psql prompt\n" +msgstr " PROMPT1 especifica o prompt padrão do psql\n" -#: help.c:338 +#: help.c:357 #, c-format -msgid " PROMPT2 specify the prompt used when a statement continues from a previous line\n" -msgstr "" +msgid " PROMPT2 specifies the prompt used when a statement continues from a previous line\n" +msgstr " PROMPT2 especifica o prompt utilizado quando o comando continua a partir de uma linha anterior\n" -#: help.c:339 +#: help.c:358 #, c-format -msgid " PROMPT3 specify the prompt used during COPY ... FROM STDIN\n" -msgstr "" +msgid " PROMPT3 specifies the prompt used during COPY ... FROM STDIN\n" +msgstr " PROMPT3 especifica o prompt utilizado durante COPY ... FROM STDIN\n" -#: help.c:340 -#, fuzzy, c-format -#| msgid " -q, --quiet run quietly (no messages, only query output)\n" +#: help.c:359 +#, c-format msgid " QUIET run quietly (same as -q option)\n" -msgstr " -q, --quiet executa silenciosamente (sem mensagens, somente saída da consulta)\n" +msgstr " QUIET executa silenciosamente (mesmo que a opção -q)\n" + +#: help.c:360 +#, c-format +msgid " SHOW_CONTEXT controls display of message context fields [never, errors, always]\n" +msgstr " SHOW_CONTEXT controla exibição de campos de contexto da mensagem [never, errors, always]\n" -#: help.c:341 +#: help.c:361 #, c-format msgid " SINGLELINE end of line terminates SQL command mode (same as -S option)\n" -msgstr "" +msgstr " SINGLELINE modo cujo fim da linha termina comando SQL (mesmo que a opção -S)\n" -#: help.c:342 +#: help.c:362 #, c-format msgid " SINGLESTEP single-step mode (same as -s option)\n" -msgstr "" +msgstr " SINGLESTEP modo passo-a-passo (mesmo que a opção -s)\n" -#: help.c:343 -#, fuzzy, c-format -#| msgid " -C, --create create the target database\n" +#: help.c:363 +#, c-format msgid " USER the currently connected database user\n" -msgstr " -C, --create cria o banco de dados informado\n" +msgstr " USER o usuário de banco de dados atualmente contectado\n" -#: help.c:344 +#: help.c:364 #, c-format -msgid " VERBOSITY control verbosity of error reports [default, verbose, terse]\n" -msgstr "" +msgid " VERBOSITY controls verbosity of error reports [default, verbose, terse]\n" +msgstr " VERBOSITY controla detalhamento das mensagens de erro [default, verbose, terse]\n" -#: help.c:346 +#: help.c:366 #, c-format msgid "" "\n" -"Display influencing variables:\n" +"Display settings:\n" msgstr "" +"\n" +"Exibe configurações:\n" -#: help.c:348 +#: help.c:368 #, c-format msgid "" " psql --pset=NAME[=VALUE]\n" -" or \\pset NAME [VALUE] in interactive mode\n" +" or \\pset NAME [VALUE] inside psql\n" "\n" msgstr "" +" psql --pset=NOME[=VALOR]\n" +" ou \\pset NOME [VALOR] no psql\n" +"\n" -#: help.c:350 +#: help.c:370 #, c-format msgid " border border style (number)\n" -msgstr "" +msgstr " border estilo de borda (número)\n" -#: help.c:351 +#: help.c:371 #, c-format -msgid " columns set the target width for the wrapped format\n" -msgstr "" - -#: help.c:352 -#, fuzzy, c-format -#| msgid " -x, --expanded turn on expanded table output\n" -msgid " expanded (or x) toggle expanded output\n" -msgstr " -x, --expanded habilita saída em tabela expandida\n" +msgid " columns target width for the wrapped format\n" +msgstr " columns largura para o formato de quebra automática\n" -#: help.c:353 -#, fuzzy, c-format -#| msgid "" -#| " -F, --field-separator=STRING\n" -#| " field separator for unaligned output (default: \"%s\")\n" -msgid " fieldsep field separator for unaligned output (default '|')\n" -msgstr "" -" -F, --field-separator=SEPARADOR\n" -" define separador de campos para modo de saída desalinhado (padrão: \"%s\")\n" +#: help.c:372 +#, c-format +msgid " expanded (or x) expanded output [on, off, auto]\n" +msgstr " expanded (ou x) saída em tabela expandida [on, off, auto]\n" -#: help.c:354 -#, fuzzy, c-format -#| msgid "" -#| " -z, --field-separator-zero\n" -#| " set field separator for unaligned output to zero byte\n" -msgid " fieldsep_zero set field separator in unaligned mode to zero\n" -msgstr "" -" -z, --field-separator-zero\n" -" define separador de campos para modo de saída desalinhado como byte zero\n" +#: help.c:373 +#, c-format +msgid " fieldsep field separator for unaligned output (default \"%s\")\n" +msgstr " fieldsep separador de campos para modo de saída desalinhado (padrão \"%s\")\n" -#: help.c:355 -#, fuzzy, c-format -#| msgid "\\pset: allowed formats are unaligned, aligned, wrapped, html, latex, troff-ms\n" -msgid " format set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n" -msgstr "\\pset: formatos permitidos são unaligned, aligned, wrapped, html, latex, troff-ms\n" +#: help.c:374 +#, c-format +msgid " fieldsep_zero set field separator for unaligned output to zero byte\n" +msgstr " fieldsep_zero define separador de campos para modo de saída desalinhado como byte zero\n" -#: help.c:356 +#: help.c:375 #, c-format msgid " footer enable or disable display of the table footer [on, off]\n" -msgstr "" +msgstr " footer habilita ou desabilita a exibição do rodapé da tabela [on, off]\n" -#: help.c:357 -#, fuzzy, c-format -#| msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" +#: help.c:376 +#, c-format +msgid " format set output format [unaligned, aligned, wrapped, html, asciidoc, ...]\n" +msgstr " format define formato de saída [unaligned, aligned, wrapped, html, asciidoc, ...]\n" + +#: help.c:377 +#, c-format msgid " linestyle set the border line drawing style [ascii, old-ascii, unicode]\n" -msgstr "\\pset: estilos de linha permitidos são ascii, old-ascii, unicode\n" +msgstr " linestyle define o estilo de linha da borda [ascii, old-ascii, unicode]\n" -#: help.c:358 +#: help.c:378 #, c-format msgid " null set the string to be printed in place of a null value\n" -msgstr "" +msgstr " null define a cadeia de caracteres a ser impressa no lugar do valor nulo\n" -#: help.c:359 +#: help.c:379 #, c-format msgid "" " numericlocale enable or disable display of a locale-specific character to separate\n" " groups of digits [on, off]\n" msgstr "" +" numericlocale habilita e desabilita a exibição de um caracter definido pela configuração regional\n" +" para separar grupos de dígitos [on, off]\n" -#: help.c:361 +#: help.c:381 #, c-format msgid " pager control when an external pager is used [yes, no, always]\n" -msgstr "" +msgstr " pager controla quando um paginador externo é utilizado [yes, no, always]\n" -#: help.c:362 -#, fuzzy, c-format -#| msgid "" -#| " -0, --record-separator-zero\n" -#| " set record separator for unaligned output to zero byte\n" -msgid " recordsep specify the record (line) separator to use in unaligned output format\n" -msgstr "" -" -0, --record-separator-zero\n" -" define separador de registros para modo de saída desalinhado como byte zero\n" +#: help.c:382 +#, c-format +msgid " recordsep record (line) separator for unaligned output\n" +msgstr " recordsep separador de registros para modo de saída desalinhado\n" -#: help.c:363 -#, fuzzy, c-format -#| msgid "" -#| " -0, --record-separator-zero\n" -#| " set record separator for unaligned output to zero byte\n" -msgid " recordsep_zero set the record separator to use in unaligned output format to a zero byte.\n" -msgstr "" -" -0, --record-separator-zero\n" -" define separador de registros para modo de saída desalinhado como byte zero\n" +#: help.c:383 +#, c-format +msgid " recordsep_zero set record separator for unaligned output to zero byte\n" +msgstr " recordsep_zero define separador de registros para modo de saída desalinhado como byte zero\n" -#: help.c:364 +#: help.c:384 #, c-format msgid "" " tableattr (or T) specify attributes for table tag in html format or proportional\n" -" column width of left aligned data type in latex format\n" +" column widths for left-aligned data types in latex-longtable format\n" msgstr "" +" tableattr (ou T) especifica atributos para marcador table no formato html ou larguras de\n" +" colunas proporcionais para tipos de dados alinhados à esquerda no formato latex-longtable\n" -#: help.c:366 -#, fuzzy, c-format -#| msgid " \\C [STRING] set table title, or unset if none\n" +#: help.c:386 +#, c-format msgid " title set the table title for any subsequently printed tables\n" -msgstr " \\C [TEXTO] define o título da tabela, ou apaga caso nada seja especificado\n" +msgstr " title define o título da tabela para as próximas tabelas a serem exibidas\n" -#: help.c:367 +#: help.c:387 #, c-format msgid " tuples_only if set, only actual table data is shown\n" -msgstr "" +msgstr " tuples_only se definido, somente dados da tabela atual são mostrados\n" -#: help.c:368 -#, c-format -msgid " unicode_border_linestyle\n" -msgstr "" - -#: help.c:369 -#, c-format -msgid " unicode_column_linestyle\n" -msgstr "" - -#: help.c:370 +#: help.c:388 #, 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" +" set the style of Unicode line drawing [single, double]\n" msgstr "" +" unicode_border_linestyle\n" +" unicode_column_linestyle\n" +" unicode_header_linestyle\n" +" define o estilo de linha Unicode [single, double]\n" -#: help.c:373 +#: help.c:393 #, c-format msgid "" "\n" "Environment variables:\n" msgstr "" +"\n" +"Variáveis de ambiente:\n" -#: help.c:377 +#: help.c:397 #, c-format msgid "" " NAME=VALUE [NAME=VALUE] psql ...\n" -" or \\setenv NAME [VALUE] in interactive mode\n" +" or \\setenv NAME [VALUE] inside psql\n" "\n" msgstr "" +" NOME=VALOR [NOME=VALOR] psql ...\n" +" ou \\setenv NOME [VALOR] no psql\n" +"\n" -#: help.c:379 +#: help.c:399 #, c-format msgid "" " set NAME=VALUE\n" " psql ...\n" -" or \\setenv NAME VALUE in interactive mode\n" +" or \\setenv NAME [VALUE] inside psql\n" "\n" msgstr "" +" set=NOME=VALOR\n" +" ou \\setenv NOME [VALOR] no psql\n" +"\n" -#: help.c:382 +#: help.c:402 #, c-format msgid " COLUMNS number of columns for wrapped format\n" -msgstr "" +msgstr " COLUMNS número de colunas para formato de quebra automática\n" -#: help.c:383 -#, fuzzy, c-format -#| msgid " -x NUM internal use\n" +#: help.c:403 +#, c-format msgid " PAGER name of external pager program\n" -msgstr " -x NUM uso interno\n" +msgstr " PAGER nome do programa de paginação externo\n" -#: help.c:384 +#: help.c:404 #, c-format msgid " PGAPPNAME same as the application_name connection parameter\n" -msgstr "" +msgstr " PGAPPNAME mesmo que o parâmetro de conexão application_name\n" -#: help.c:385 +#: help.c:405 #, c-format msgid " PGDATABASE same as the dbname connection parameter\n" -msgstr "" +msgstr " PGDATABASE mesmo que o parâmetro de conexão dbname\n" -#: help.c:386 -#, fuzzy, c-format -#| msgid " -l enable SSL connections\n" +#: help.c:406 +#, c-format msgid " PGHOST same as the host connection parameter\n" -msgstr " -l habilita conexões SSL\n" +msgstr " PGHOST mesmo que o parâmetro de conexão host\n" -#: help.c:387 -#, fuzzy, c-format -#| msgid " -l enable SSL connections\n" +#: help.c:407 +#, c-format msgid " PGPORT same as the port connection parameter\n" -msgstr " -l habilita conexões SSL\n" +msgstr " PGPORT mesmo que o parâmetro de conexão port\n" -#: help.c:388 -#, fuzzy, c-format -#| msgid " DBNAME database name (defaults to user name)\n" +#: help.c:408 +#, c-format msgid " PGUSER same as the user connection parameter\n" -msgstr " NOMEBD nome do banco de dados (padrão é o nome do usuário)\n" +msgstr " PGUSER mesmo que o parâmetro de conexão user\n" -#: help.c:389 +#: help.c:409 #, c-format msgid " PGPASSWORD connection password (not recommended)\n" -msgstr "" +msgstr " PGPASSWORD senha da conexão (não é recomendado)\n" -#: help.c:390 -#, fuzzy, c-format -#| msgid " -f, --file=FILENAME output file name\n" +#: help.c:410 +#, c-format msgid " PGPASSFILE password file name\n" -msgstr " -f, --file=ARQUIVO nome do arquivo de saída\n" +msgstr " PGPASSFILE nome do arquivo de senhas\n" -#: help.c:391 +#: help.c:411 #, c-format msgid "" " PSQL_EDITOR, EDITOR, VISUAL\n" -" editor used by the \\e and \\ef commands\n" +" editor used by the \\e, \\ef, and \\ev commands\n" msgstr "" +" PSQL_EDITOR, EDITOR, VISUAL\n" +" editor utilizado pelos comandos \\e, \\ef e \\ev\n" -#: help.c:393 -#, fuzzy, c-format -#| msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number\n" +#: help.c:413 +#, c-format msgid "" " PSQL_EDITOR_LINENUMBER_ARG\n" " how to specify a line number when invoking the editor\n" -msgstr "variável de ambiente PSQL_EDITOR_LINENUMBER_ARG deve ser definida para especificar um número de linha\n" +msgstr "" +" PSQL_EDITOR_LINENUMBER_ARG\n" +" como especificar um número de linha ao invocar o editor\n" -#: help.c:395 +#: help.c:415 #, c-format msgid " PSQL_HISTORY alternative location for the command history file\n" -msgstr "" +msgstr " PSQL_HISTORY local alternativo para arquivo de histórico de comandos\n" -#: help.c:396 +#: help.c:416 #, c-format msgid " PSQLRC alternative location for the user's .psqlrc file\n" -msgstr "" +msgstr " PSQLRC local alternativo para arquivo .psqlrc do usuário\n" -#: help.c:397 +#: help.c:417 #, c-format msgid " SHELL shell used by the \\! command\n" -msgstr "" +msgstr " SHELL shell utilizada pelo comando \\!\n" -#: help.c:398 -#, fuzzy, c-format -#| msgid " -L DIRECTORY where to find the input files\n" +#: help.c:418 +#, c-format msgid " TMPDIR directory for temporary files\n" -msgstr " -L DIRETÓRIO onde encontrar os arquivos de entrada\n" +msgstr " TMPDIR diretório para arquivos temporários\n" -#: help.c:441 +#: help.c:461 msgid "Available help:\n" msgstr "Ajuda disponível:\n" -#: help.c:525 +#: help.c:545 #, c-format msgid "" "Command: %s\n" @@ -2942,7 +3130,7 @@ msgstr "" "%s\n" "\n" -#: help.c:541 +#: help.c:561 #, c-format msgid "" "No help available for \"%s\".\n" @@ -2951,17 +3139,17 @@ msgstr "" "Nenhuma ajuda disponível para \"%s\".\n" "Tente \\h sem argumentos para ver a ajuda disponível.\n" -#: input.c:194 +#: input.c:216 #, c-format msgid "could not read from input file: %s\n" msgstr "não pôde ler arquivo de entrada: %s\n" -#: input.c:446 input.c:485 +#: input.c:471 input.c:510 #, c-format msgid "could not save history to file \"%s\": %s\n" msgstr "não pôde gravar histórico no arquivo \"%s\": %s\n" -#: input.c:505 +#: input.c:530 #, c-format msgid "history is not supported by this installation\n" msgstr "histórico não é suportado por esta instalação\n" @@ -2989,22 +3177,24 @@ msgstr "ID" msgid "Large objects" msgstr "Objetos grandes" -#: mainloop.c:161 +#: mainloop.c:168 #, c-format msgid "Use \"\\q\" to leave %s.\n" msgstr "Use \"\\q\" para sair do %s.\n" -#: mainloop.c:183 +#: mainloop.c:190 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 "" +"A entrada é uma cópia de segurança no formato personalizado do PostgreSQL.\n" +"Utilize o cliente de linha de comando pg_restore para restaurar essa cópia de segurança para um banco de dados.\n" -#: mainloop.c:203 +#: mainloop.c:210 msgid "You are using psql, the command-line interface to PostgreSQL." msgstr "Você está utilizando o psql, um cliente de linha de comando do PostgreSQL." -#: mainloop.c:204 +#: mainloop.c:211 #, c-format msgid "" "Type: \\copyright for distribution terms\n" @@ -3019,2102 +3209,2047 @@ msgstr "" " \\g ou terminar com ponto-e-vírgula para executar a consulta\n" " \\q para sair\n" -#: print.c:338 -#, c-format -msgid "(%lu row)" -msgid_plural "(%lu rows)" -msgstr[0] "(%lu registro)" -msgstr[1] "(%lu registros)" - -#: print.c:2795 -#, c-format -msgid "Interrupted\n" -msgstr "Interrompido\n" - -#: print.c:2861 -#, c-format -msgid "Cannot add header to table content: column count of %d exceeded.\n" -msgstr "Não pode adicionar cabeçalho a conteúdo de tabela: quantidade de colunas %d foi excedida.\n" - -#: print.c:2901 -#, c-format -msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" -msgstr "Não pode adicionar célula a conteúdo de tabela: quantidade total de células %d foi excedida.\n" - -#: print.c:3133 -#, c-format -msgid "invalid output format (internal error): %d" -msgstr "formato de saída inválido (erro interno): %d" - -#: psqlscan.l:751 -#, c-format -msgid "skipping recursive expansion of variable \"%s\"\n" -msgstr "ignorando expansão recursiva da variável \"%s\"\n" - -#: psqlscan.l:1627 +#: psqlscanslash.l:584 #, c-format msgid "unterminated quoted string\n" msgstr "cadeia de caracteres entre aspas não foi terminada\n" -#: psqlscan.l:1727 +#: psqlscanslash.l:738 #, c-format msgid "%s: out of memory\n" msgstr "%s: sem memória\n" -#: psqlscan.l:1956 -#, c-format -msgid "can't escape without active connection\n" -msgstr "não pode fazer escape sem uma conexão ativa\n" - -#: sql_help.c:33 sql_help.c:36 sql_help.c:39 sql_help.c:61 sql_help.c:63 -#: sql_help.c:65 sql_help.c:76 sql_help.c:78 sql_help.c:80 sql_help.c:106 -#: sql_help.c:112 sql_help.c:114 sql_help.c:116 sql_help.c:118 sql_help.c:121 -#: sql_help.c:123 sql_help.c:125 sql_help.c:218 sql_help.c:220 sql_help.c:221 -#: sql_help.c:223 sql_help.c:225 sql_help.c:228 sql_help.c:230 sql_help.c:232 -#: sql_help.c:234 sql_help.c:246 sql_help.c:247 sql_help.c:248 sql_help.c:250 -#: sql_help.c:296 sql_help.c:298 sql_help.c:300 sql_help.c:302 sql_help.c:362 -#: sql_help.c:367 sql_help.c:369 sql_help.c:412 sql_help.c:414 sql_help.c:417 -#: sql_help.c:419 sql_help.c:483 sql_help.c:488 sql_help.c:493 sql_help.c:498 -#: sql_help.c:546 sql_help.c:548 sql_help.c:550 sql_help.c:553 sql_help.c:555 -#: sql_help.c:566 sql_help.c:568 sql_help.c:608 sql_help.c:610 sql_help.c:613 -#: sql_help.c:615 sql_help.c:617 sql_help.c:646 sql_help.c:650 sql_help.c:668 -#: sql_help.c:671 sql_help.c:674 sql_help.c:703 sql_help.c:715 sql_help.c:723 -#: sql_help.c:726 sql_help.c:729 sql_help.c:743 sql_help.c:789 sql_help.c:812 -#: sql_help.c:823 sql_help.c:825 sql_help.c:842 sql_help.c:851 sql_help.c:853 -#: sql_help.c:855 sql_help.c:867 sql_help.c:871 sql_help.c:873 sql_help.c:955 -#: sql_help.c:957 sql_help.c:960 sql_help.c:963 sql_help.c:965 sql_help.c:967 -#: sql_help.c:1028 sql_help.c:1030 sql_help.c:1032 sql_help.c:1035 -#: sql_help.c:1056 sql_help.c:1059 sql_help.c:1062 sql_help.c:1065 -#: sql_help.c:1069 sql_help.c:1071 sql_help.c:1073 sql_help.c:1075 -#: sql_help.c:1089 sql_help.c:1092 sql_help.c:1094 sql_help.c:1096 -#: sql_help.c:1106 sql_help.c:1108 sql_help.c:1118 sql_help.c:1120 -#: sql_help.c:1129 sql_help.c:1150 sql_help.c:1152 sql_help.c:1154 -#: sql_help.c:1157 sql_help.c:1159 sql_help.c:1161 sql_help.c:1211 -#: sql_help.c:1249 sql_help.c:1252 sql_help.c:1254 sql_help.c:1256 -#: sql_help.c:1258 sql_help.c:1260 sql_help.c:1263 sql_help.c:1303 -#: sql_help.c:1550 sql_help.c:1566 sql_help.c:1579 sql_help.c:1630 -#: sql_help.c:1634 sql_help.c:1644 sql_help.c:1664 sql_help.c:1689 -#: sql_help.c:1707 sql_help.c:1735 sql_help.c:1809 sql_help.c:1852 -#: sql_help.c:1874 sql_help.c:1894 sql_help.c:1895 sql_help.c:1930 -#: sql_help.c:1950 sql_help.c:1972 sql_help.c:1985 sql_help.c:2017 -#: sql_help.c:2042 sql_help.c:2086 sql_help.c:2272 sql_help.c:2285 -#: sql_help.c:2302 sql_help.c:2318 sql_help.c:2357 sql_help.c:2408 -#: sql_help.c:2412 sql_help.c:2414 sql_help.c:2420 sql_help.c:2438 -#: sql_help.c:2465 sql_help.c:2500 sql_help.c:2512 sql_help.c:2521 -#: sql_help.c:2571 sql_help.c:2599 sql_help.c:2607 sql_help.c:2615 -#: sql_help.c:2623 sql_help.c:2631 sql_help.c:2639 sql_help.c:2647 -#: sql_help.c:2655 sql_help.c:2664 sql_help.c:2675 sql_help.c:2683 -#: sql_help.c:2691 sql_help.c:2699 sql_help.c:2707 sql_help.c:2717 -#: sql_help.c:2726 sql_help.c:2735 sql_help.c:2743 sql_help.c:2752 -#: sql_help.c:2760 sql_help.c:2769 sql_help.c:2777 sql_help.c:2785 -#: sql_help.c:2793 sql_help.c:2801 sql_help.c:2809 sql_help.c:2817 -#: sql_help.c:2825 sql_help.c:2833 sql_help.c:2850 sql_help.c:2859 -#: sql_help.c:2867 sql_help.c:2884 sql_help.c:2899 sql_help.c:3164 -#: sql_help.c:3215 sql_help.c:3244 sql_help.c:3252 sql_help.c:3671 -#: sql_help.c:3719 sql_help.c:3860 +#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:64 sql_help.c:66 +#: sql_help.c:68 sql_help.c:79 sql_help.c:81 sql_help.c:83 sql_help.c:109 +#: sql_help.c:115 sql_help.c:117 sql_help.c:119 sql_help.c:121 sql_help.c:124 +#: sql_help.c:126 sql_help.c:128 sql_help.c:221 sql_help.c:223 sql_help.c:224 +#: sql_help.c:226 sql_help.c:228 sql_help.c:231 sql_help.c:233 sql_help.c:235 +#: sql_help.c:237 sql_help.c:249 sql_help.c:250 sql_help.c:251 sql_help.c:253 +#: sql_help.c:300 sql_help.c:302 sql_help.c:304 sql_help.c:306 sql_help.c:367 +#: sql_help.c:372 sql_help.c:374 sql_help.c:417 sql_help.c:419 sql_help.c:422 +#: sql_help.c:424 sql_help.c:491 sql_help.c:496 sql_help.c:501 sql_help.c:506 +#: sql_help.c:511 sql_help.c:560 sql_help.c:562 sql_help.c:564 sql_help.c:566 +#: sql_help.c:569 sql_help.c:571 sql_help.c:582 sql_help.c:584 sql_help.c:625 +#: sql_help.c:627 sql_help.c:629 sql_help.c:632 sql_help.c:634 sql_help.c:636 +#: sql_help.c:669 sql_help.c:673 sql_help.c:677 sql_help.c:696 sql_help.c:699 +#: sql_help.c:702 sql_help.c:731 sql_help.c:743 sql_help.c:751 sql_help.c:754 +#: sql_help.c:757 sql_help.c:772 sql_help.c:775 sql_help.c:819 sql_help.c:842 +#: sql_help.c:853 sql_help.c:855 sql_help.c:872 sql_help.c:881 sql_help.c:883 +#: sql_help.c:885 sql_help.c:897 sql_help.c:901 sql_help.c:903 sql_help.c:987 +#: sql_help.c:989 sql_help.c:992 sql_help.c:995 sql_help.c:997 sql_help.c:999 +#: sql_help.c:1060 sql_help.c:1062 sql_help.c:1064 sql_help.c:1067 +#: sql_help.c:1088 sql_help.c:1091 sql_help.c:1094 sql_help.c:1097 +#: sql_help.c:1101 sql_help.c:1103 sql_help.c:1105 sql_help.c:1107 +#: sql_help.c:1121 sql_help.c:1124 sql_help.c:1126 sql_help.c:1128 +#: sql_help.c:1138 sql_help.c:1140 sql_help.c:1150 sql_help.c:1152 +#: sql_help.c:1162 sql_help.c:1165 sql_help.c:1186 sql_help.c:1188 +#: sql_help.c:1190 sql_help.c:1193 sql_help.c:1195 sql_help.c:1197 +#: sql_help.c:1247 sql_help.c:1289 sql_help.c:1292 sql_help.c:1294 +#: sql_help.c:1296 sql_help.c:1298 sql_help.c:1300 sql_help.c:1303 +#: sql_help.c:1343 sql_help.c:1548 sql_help.c:1612 sql_help.c:1631 +#: sql_help.c:1644 sql_help.c:1698 sql_help.c:1702 sql_help.c:1712 +#: sql_help.c:1732 sql_help.c:1757 sql_help.c:1775 sql_help.c:1804 +#: sql_help.c:1879 sql_help.c:1921 sql_help.c:1943 sql_help.c:1963 +#: sql_help.c:1964 sql_help.c:1999 sql_help.c:2019 sql_help.c:2041 +#: sql_help.c:2054 sql_help.c:2085 sql_help.c:2110 sql_help.c:2154 +#: sql_help.c:2340 sql_help.c:2353 sql_help.c:2370 sql_help.c:2386 +#: sql_help.c:2425 sql_help.c:2476 sql_help.c:2480 sql_help.c:2482 +#: sql_help.c:2488 sql_help.c:2506 sql_help.c:2533 sql_help.c:2568 +#: sql_help.c:2580 sql_help.c:2589 sql_help.c:2633 sql_help.c:2647 +#: sql_help.c:2675 sql_help.c:2683 sql_help.c:2691 sql_help.c:2699 +#: sql_help.c:2707 sql_help.c:2715 sql_help.c:2723 sql_help.c:2731 +#: sql_help.c:2740 sql_help.c:2751 sql_help.c:2759 sql_help.c:2767 +#: sql_help.c:2775 sql_help.c:2783 sql_help.c:2793 sql_help.c:2802 +#: sql_help.c:2811 sql_help.c:2819 sql_help.c:2828 sql_help.c:2836 +#: sql_help.c:2845 sql_help.c:2853 sql_help.c:2861 sql_help.c:2869 +#: sql_help.c:2877 sql_help.c:2885 sql_help.c:2893 sql_help.c:2901 +#: sql_help.c:2909 sql_help.c:2926 sql_help.c:2935 sql_help.c:2943 +#: sql_help.c:2960 sql_help.c:2975 sql_help.c:3240 sql_help.c:3291 +#: sql_help.c:3320 sql_help.c:3328 sql_help.c:3747 sql_help.c:3795 +#: sql_help.c:3936 msgid "name" msgstr "nome" -#: sql_help.c:34 sql_help.c:37 sql_help.c:40 sql_help.c:306 sql_help.c:1367 -#: sql_help.c:2572 sql_help.c:3467 +#: sql_help.c:37 sql_help.c:40 sql_help.c:43 sql_help.c:311 sql_help.c:1409 +#: sql_help.c:2648 sql_help.c:3543 msgid "aggregate_signature" msgstr "assinatura_agregação" -#: sql_help.c:35 sql_help.c:62 sql_help.c:77 sql_help.c:113 sql_help.c:233 -#: sql_help.c:251 sql_help.c:370 sql_help.c:418 sql_help.c:492 sql_help.c:533 -#: sql_help.c:547 sql_help.c:567 sql_help.c:614 sql_help.c:670 sql_help.c:725 -#: sql_help.c:745 sql_help.c:790 sql_help.c:814 sql_help.c:824 sql_help.c:854 -#: sql_help.c:874 sql_help.c:964 sql_help.c:1029 sql_help.c:1072 -#: sql_help.c:1093 sql_help.c:1107 sql_help.c:1119 sql_help.c:1131 -#: sql_help.c:1158 sql_help.c:1212 sql_help.c:1257 +#: sql_help.c:38 sql_help.c:65 sql_help.c:80 sql_help.c:116 sql_help.c:236 +#: sql_help.c:254 sql_help.c:375 sql_help.c:423 sql_help.c:500 sql_help.c:546 +#: sql_help.c:561 sql_help.c:583 sql_help.c:633 sql_help.c:698 sql_help.c:753 +#: sql_help.c:774 sql_help.c:820 sql_help.c:844 sql_help.c:854 sql_help.c:884 +#: sql_help.c:904 sql_help.c:996 sql_help.c:1061 sql_help.c:1104 +#: sql_help.c:1125 sql_help.c:1139 sql_help.c:1151 sql_help.c:1164 +#: sql_help.c:1194 sql_help.c:1248 sql_help.c:1297 msgid "new_name" msgstr "novo_nome" -#: sql_help.c:38 sql_help.c:64 sql_help.c:79 sql_help.c:115 sql_help.c:231 -#: sql_help.c:249 sql_help.c:368 sql_help.c:454 sql_help.c:497 sql_help.c:569 -#: sql_help.c:578 sql_help.c:633 sql_help.c:649 sql_help.c:673 sql_help.c:728 -#: sql_help.c:826 sql_help.c:852 sql_help.c:872 sql_help.c:1013 -#: sql_help.c:1031 sql_help.c:1074 sql_help.c:1095 sql_help.c:1153 -#: sql_help.c:1255 sql_help.c:2258 +#: sql_help.c:41 sql_help.c:67 sql_help.c:82 sql_help.c:118 sql_help.c:234 +#: sql_help.c:252 sql_help.c:373 sql_help.c:459 sql_help.c:505 sql_help.c:585 +#: sql_help.c:594 sql_help.c:652 sql_help.c:672 sql_help.c:701 sql_help.c:756 +#: sql_help.c:856 sql_help.c:882 sql_help.c:902 sql_help.c:1045 +#: sql_help.c:1063 sql_help.c:1106 sql_help.c:1127 sql_help.c:1189 +#: sql_help.c:1295 sql_help.c:2326 msgid "new_owner" msgstr "novo_dono" -#: sql_help.c:41 sql_help.c:66 sql_help.c:81 sql_help.c:235 sql_help.c:299 -#: sql_help.c:420 sql_help.c:502 sql_help.c:616 sql_help.c:653 sql_help.c:676 -#: sql_help.c:731 sql_help.c:856 sql_help.c:966 sql_help.c:1076 -#: sql_help.c:1097 sql_help.c:1109 sql_help.c:1121 sql_help.c:1160 -#: sql_help.c:1259 +#: sql_help.c:44 sql_help.c:69 sql_help.c:84 sql_help.c:238 sql_help.c:303 +#: sql_help.c:425 sql_help.c:510 sql_help.c:635 sql_help.c:676 sql_help.c:704 +#: sql_help.c:759 sql_help.c:886 sql_help.c:998 sql_help.c:1108 +#: sql_help.c:1129 sql_help.c:1141 sql_help.c:1153 sql_help.c:1196 +#: sql_help.c:1299 msgid "new_schema" msgstr "novo_esquema" -#: sql_help.c:42 sql_help.c:1420 sql_help.c:2573 sql_help.c:3486 +#: sql_help.c:45 sql_help.c:1462 sql_help.c:2649 sql_help.c:3562 msgid "where aggregate_signature is:" msgstr "onde assinatura_agregação é:" -#: sql_help.c:43 sql_help.c:46 sql_help.c:49 sql_help.c:316 sql_help.c:341 -#: sql_help.c:344 sql_help.c:347 sql_help.c:484 sql_help.c:489 sql_help.c:494 -#: sql_help.c:499 sql_help.c:1385 sql_help.c:1421 sql_help.c:1424 -#: sql_help.c:1427 sql_help.c:1551 sql_help.c:1567 sql_help.c:1570 -#: sql_help.c:1810 sql_help.c:2574 sql_help.c:2577 sql_help.c:2580 -#: sql_help.c:2665 sql_help.c:3050 sql_help.c:3382 sql_help.c:3473 -#: sql_help.c:3487 sql_help.c:3490 sql_help.c:3493 +#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:321 sql_help.c:346 +#: sql_help.c:349 sql_help.c:352 sql_help.c:492 sql_help.c:497 sql_help.c:502 +#: sql_help.c:507 sql_help.c:512 sql_help.c:1427 sql_help.c:1463 +#: sql_help.c:1466 sql_help.c:1469 sql_help.c:1613 sql_help.c:1632 +#: sql_help.c:1635 sql_help.c:1880 sql_help.c:2650 sql_help.c:2653 +#: sql_help.c:2656 sql_help.c:2741 sql_help.c:3126 sql_help.c:3458 +#: sql_help.c:3549 sql_help.c:3563 sql_help.c:3566 sql_help.c:3569 msgid "argmode" msgstr "modo_argumento" -#: sql_help.c:44 sql_help.c:47 sql_help.c:50 sql_help.c:317 sql_help.c:342 -#: sql_help.c:345 sql_help.c:348 sql_help.c:485 sql_help.c:490 sql_help.c:495 -#: sql_help.c:500 sql_help.c:1386 sql_help.c:1422 sql_help.c:1425 -#: sql_help.c:1428 sql_help.c:1552 sql_help.c:1568 sql_help.c:1571 -#: sql_help.c:1811 sql_help.c:2575 sql_help.c:2578 sql_help.c:2581 -#: sql_help.c:2666 sql_help.c:3474 sql_help.c:3488 sql_help.c:3491 -#: sql_help.c:3494 +#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:322 sql_help.c:347 +#: sql_help.c:350 sql_help.c:353 sql_help.c:493 sql_help.c:498 sql_help.c:503 +#: sql_help.c:508 sql_help.c:513 sql_help.c:1428 sql_help.c:1464 +#: sql_help.c:1467 sql_help.c:1470 sql_help.c:1614 sql_help.c:1633 +#: sql_help.c:1636 sql_help.c:1881 sql_help.c:2651 sql_help.c:2654 +#: sql_help.c:2657 sql_help.c:2742 sql_help.c:3550 sql_help.c:3564 +#: sql_help.c:3567 sql_help.c:3570 msgid "argname" msgstr "nome_argumento" -#: sql_help.c:45 sql_help.c:48 sql_help.c:51 sql_help.c:318 sql_help.c:343 -#: sql_help.c:346 sql_help.c:349 sql_help.c:486 sql_help.c:491 sql_help.c:496 -#: sql_help.c:501 sql_help.c:1387 sql_help.c:1423 sql_help.c:1426 -#: sql_help.c:1429 sql_help.c:1812 sql_help.c:2576 sql_help.c:2579 -#: sql_help.c:2582 sql_help.c:2667 sql_help.c:3475 sql_help.c:3489 -#: sql_help.c:3492 sql_help.c:3495 +#: sql_help.c:48 sql_help.c:51 sql_help.c:54 sql_help.c:323 sql_help.c:348 +#: sql_help.c:351 sql_help.c:354 sql_help.c:494 sql_help.c:499 sql_help.c:504 +#: sql_help.c:509 sql_help.c:514 sql_help.c:1429 sql_help.c:1465 +#: sql_help.c:1468 sql_help.c:1471 sql_help.c:1882 sql_help.c:2652 +#: sql_help.c:2655 sql_help.c:2658 sql_help.c:2743 sql_help.c:3551 +#: sql_help.c:3565 sql_help.c:3568 sql_help.c:3571 msgid "argtype" msgstr "tipo_argumento" -#: sql_help.c:107 sql_help.c:365 sql_help.c:443 sql_help.c:455 sql_help.c:784 -#: sql_help.c:869 sql_help.c:1090 sql_help.c:1206 sql_help.c:1234 -#: sql_help.c:1477 sql_help.c:1483 sql_help.c:1738 sql_help.c:1770 -#: sql_help.c:1777 sql_help.c:1853 sql_help.c:2018 sql_help.c:2107 -#: sql_help.c:2287 sql_help.c:2466 sql_help.c:2488 sql_help.c:2918 -#: sql_help.c:3084 +#: sql_help.c:110 sql_help.c:370 sql_help.c:448 sql_help.c:460 sql_help.c:814 +#: sql_help.c:899 sql_help.c:1122 sql_help.c:1242 sql_help.c:1274 +#: sql_help.c:1519 sql_help.c:1525 sql_help.c:1807 sql_help.c:1839 +#: sql_help.c:1846 sql_help.c:1922 sql_help.c:2086 sql_help.c:2175 +#: sql_help.c:2355 sql_help.c:2534 sql_help.c:2556 sql_help.c:2994 +#: sql_help.c:3160 msgid "option" msgstr "opção" -#: sql_help.c:108 sql_help.c:785 sql_help.c:1207 sql_help.c:1854 -#: sql_help.c:2019 sql_help.c:2467 +#: sql_help.c:111 sql_help.c:815 sql_help.c:1243 sql_help.c:1923 +#: sql_help.c:2087 sql_help.c:2535 msgid "where option can be:" msgstr "onde opção pode ser:" -#: sql_help.c:109 sql_help.c:1671 -#, fuzzy +#: sql_help.c:112 sql_help.c:1739 msgid "allowconn" msgstr "permite_conexão" -#: sql_help.c:110 sql_help.c:786 sql_help.c:1208 sql_help.c:1672 -#: sql_help.c:2020 sql_help.c:2468 +#: sql_help.c:113 sql_help.c:816 sql_help.c:1244 sql_help.c:1740 +#: sql_help.c:2088 sql_help.c:2536 msgid "connlimit" msgstr "limite_conexão" -#: sql_help.c:111 sql_help.c:1673 -#, fuzzy -#| msgid "template" +#: sql_help.c:114 sql_help.c:1741 msgid "istemplate" msgstr "é_modelo" -#: sql_help.c:117 sql_help.c:557 sql_help.c:619 sql_help.c:634 sql_help.c:969 -#: sql_help.c:1006 +#: sql_help.c:120 sql_help.c:573 sql_help.c:638 sql_help.c:1001 +#: sql_help.c:1038 msgid "new_tablespace" msgstr "nova_tablespace" -#: sql_help.c:119 sql_help.c:122 sql_help.c:124 sql_help.c:506 sql_help.c:508 -#: sql_help.c:509 sql_help.c:793 sql_help.c:797 sql_help.c:800 sql_help.c:885 -#: sql_help.c:888 sql_help.c:1214 sql_help.c:1217 sql_help.c:1219 -#: sql_help.c:1821 sql_help.c:3269 sql_help.c:3660 +#: sql_help.c:122 sql_help.c:125 sql_help.c:127 sql_help.c:519 sql_help.c:521 +#: sql_help.c:522 sql_help.c:823 sql_help.c:827 sql_help.c:830 sql_help.c:915 +#: sql_help.c:918 sql_help.c:1251 sql_help.c:1255 sql_help.c:1258 +#: sql_help.c:1891 sql_help.c:3345 sql_help.c:3736 msgid "configuration_parameter" msgstr "parâmetro_de_configuração" -#: sql_help.c:120 sql_help.c:366 sql_help.c:438 sql_help.c:444 sql_help.c:456 -#: sql_help.c:507 sql_help.c:552 sql_help.c:625 sql_help.c:631 sql_help.c:794 -#: sql_help.c:870 sql_help.c:886 sql_help.c:887 sql_help.c:988 sql_help.c:1008 -#: sql_help.c:1034 sql_help.c:1091 sql_help.c:1215 sql_help.c:1235 -#: sql_help.c:1739 sql_help.c:1771 sql_help.c:1778 sql_help.c:1822 -#: sql_help.c:1823 sql_help.c:1882 sql_help.c:1914 sql_help.c:2108 -#: sql_help.c:2182 sql_help.c:2190 sql_help.c:2222 sql_help.c:2244 -#: sql_help.c:2261 sql_help.c:2288 sql_help.c:2489 sql_help.c:3085 -#: sql_help.c:3661 sql_help.c:3662 +#: sql_help.c:123 sql_help.c:371 sql_help.c:443 sql_help.c:449 sql_help.c:461 +#: sql_help.c:520 sql_help.c:568 sql_help.c:644 sql_help.c:650 sql_help.c:824 +#: sql_help.c:900 sql_help.c:916 sql_help.c:917 sql_help.c:1020 +#: sql_help.c:1040 sql_help.c:1066 sql_help.c:1123 sql_help.c:1252 +#: sql_help.c:1275 sql_help.c:1808 sql_help.c:1840 sql_help.c:1847 +#: sql_help.c:1892 sql_help.c:1893 sql_help.c:1951 sql_help.c:1983 +#: sql_help.c:2176 sql_help.c:2250 sql_help.c:2258 sql_help.c:2290 +#: sql_help.c:2312 sql_help.c:2329 sql_help.c:2356 sql_help.c:2557 +#: sql_help.c:3161 sql_help.c:3737 sql_help.c:3738 msgid "value" msgstr "valor" -#: sql_help.c:182 +#: sql_help.c:185 msgid "target_role" msgstr "role_alvo" -#: sql_help.c:183 sql_help.c:1722 sql_help.c:2066 sql_help.c:2071 -#: sql_help.c:3032 sql_help.c:3039 sql_help.c:3053 sql_help.c:3059 -#: sql_help.c:3364 sql_help.c:3371 sql_help.c:3385 sql_help.c:3391 +#: sql_help.c:186 sql_help.c:1791 sql_help.c:2134 sql_help.c:2139 +#: sql_help.c:3108 sql_help.c:3115 sql_help.c:3129 sql_help.c:3135 +#: sql_help.c:3440 sql_help.c:3447 sql_help.c:3461 sql_help.c:3467 msgid "schema_name" msgstr "nome_esquema" -#: sql_help.c:184 +#: sql_help.c:187 msgid "abbreviated_grant_or_revoke" msgstr "comando_grant_ou_revoke" -#: sql_help.c:185 +#: sql_help.c:188 msgid "where abbreviated_grant_or_revoke is one of:" msgstr "onde comando_grant_ou_revoke é um dos:" -#: sql_help.c:186 sql_help.c:187 sql_help.c:188 sql_help.c:189 sql_help.c:190 -#: sql_help.c:191 sql_help.c:192 sql_help.c:193 sql_help.c:531 sql_help.c:556 -#: sql_help.c:618 sql_help.c:746 sql_help.c:804 sql_help.c:968 sql_help.c:1222 -#: sql_help.c:1857 sql_help.c:1858 sql_help.c:1859 sql_help.c:1860 -#: sql_help.c:1861 sql_help.c:1987 sql_help.c:2023 sql_help.c:2024 -#: sql_help.c:2025 sql_help.c:2026 sql_help.c:2027 sql_help.c:2471 -#: sql_help.c:2472 sql_help.c:2473 sql_help.c:2474 sql_help.c:2475 -#: sql_help.c:3066 sql_help.c:3067 sql_help.c:3068 sql_help.c:3365 -#: sql_help.c:3369 sql_help.c:3372 sql_help.c:3374 sql_help.c:3376 -#: sql_help.c:3378 sql_help.c:3380 sql_help.c:3386 sql_help.c:3388 -#: sql_help.c:3390 sql_help.c:3392 sql_help.c:3394 sql_help.c:3396 -#: sql_help.c:3397 sql_help.c:3398 sql_help.c:3681 +#: sql_help.c:189 sql_help.c:190 sql_help.c:191 sql_help.c:192 sql_help.c:193 +#: sql_help.c:194 sql_help.c:195 sql_help.c:196 sql_help.c:544 sql_help.c:572 +#: sql_help.c:637 sql_help.c:777 sql_help.c:834 sql_help.c:1000 +#: sql_help.c:1262 sql_help.c:1926 sql_help.c:1927 sql_help.c:1928 +#: sql_help.c:1929 sql_help.c:1930 sql_help.c:2056 sql_help.c:2091 +#: sql_help.c:2092 sql_help.c:2093 sql_help.c:2094 sql_help.c:2095 +#: sql_help.c:2539 sql_help.c:2540 sql_help.c:2541 sql_help.c:2542 +#: sql_help.c:2543 sql_help.c:3142 sql_help.c:3143 sql_help.c:3144 +#: sql_help.c:3441 sql_help.c:3445 sql_help.c:3448 sql_help.c:3450 +#: sql_help.c:3452 sql_help.c:3454 sql_help.c:3456 sql_help.c:3462 +#: sql_help.c:3464 sql_help.c:3466 sql_help.c:3468 sql_help.c:3470 +#: sql_help.c:3472 sql_help.c:3473 sql_help.c:3474 sql_help.c:3757 msgid "role_name" msgstr "nome_role" -#: sql_help.c:219 sql_help.c:431 sql_help.c:979 sql_help.c:981 sql_help.c:1251 -#: sql_help.c:1692 sql_help.c:1696 sql_help.c:1781 sql_help.c:1785 -#: sql_help.c:1878 sql_help.c:2194 sql_help.c:2204 sql_help.c:2226 -#: sql_help.c:3115 sql_help.c:3130 sql_help.c:3132 sql_help.c:3546 -#: sql_help.c:3547 sql_help.c:3556 sql_help.c:3597 sql_help.c:3598 -#: sql_help.c:3599 sql_help.c:3600 sql_help.c:3601 sql_help.c:3602 -#: sql_help.c:3635 sql_help.c:3636 sql_help.c:3641 sql_help.c:3646 -#: sql_help.c:3785 sql_help.c:3786 sql_help.c:3795 sql_help.c:3836 -#: sql_help.c:3837 sql_help.c:3838 sql_help.c:3839 sql_help.c:3840 -#: sql_help.c:3841 sql_help.c:3888 sql_help.c:3890 sql_help.c:3923 -#: sql_help.c:3979 sql_help.c:3980 sql_help.c:3989 sql_help.c:4030 -#: sql_help.c:4031 sql_help.c:4032 sql_help.c:4033 sql_help.c:4034 -#: sql_help.c:4035 +#: sql_help.c:222 sql_help.c:436 sql_help.c:1011 sql_help.c:1013 +#: sql_help.c:1291 sql_help.c:1760 sql_help.c:1764 sql_help.c:1850 +#: sql_help.c:1854 sql_help.c:1947 sql_help.c:2262 sql_help.c:2272 +#: sql_help.c:2294 sql_help.c:3191 sql_help.c:3206 sql_help.c:3208 +#: sql_help.c:3622 sql_help.c:3623 sql_help.c:3632 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:3711 sql_help.c:3712 sql_help.c:3717 +#: sql_help.c:3722 sql_help.c:3861 sql_help.c:3862 sql_help.c:3871 +#: sql_help.c:3912 sql_help.c:3913 sql_help.c:3914 sql_help.c:3915 +#: sql_help.c:3916 sql_help.c:3917 sql_help.c:3964 sql_help.c:3966 +#: sql_help.c:3999 sql_help.c:4055 sql_help.c:4056 sql_help.c:4065 +#: sql_help.c:4106 sql_help.c:4107 sql_help.c:4108 sql_help.c:4109 +#: sql_help.c:4110 sql_help.c:4111 msgid "expression" msgstr "expressão" -#: sql_help.c:222 +#: sql_help.c:225 msgid "domain_constraint" msgstr "restrição_domínio" -#: sql_help.c:224 sql_help.c:226 sql_help.c:229 sql_help.c:446 sql_help.c:447 -#: sql_help.c:961 sql_help.c:994 sql_help.c:995 sql_help.c:996 sql_help.c:1016 -#: sql_help.c:1373 sql_help.c:1375 sql_help.c:1695 sql_help.c:1780 -#: sql_help.c:1784 sql_help.c:2193 sql_help.c:2203 sql_help.c:3127 +#: sql_help.c:227 sql_help.c:229 sql_help.c:232 sql_help.c:451 sql_help.c:452 +#: sql_help.c:993 sql_help.c:1026 sql_help.c:1027 sql_help.c:1028 +#: sql_help.c:1048 sql_help.c:1415 sql_help.c:1417 sql_help.c:1763 +#: sql_help.c:1849 sql_help.c:1853 sql_help.c:2261 sql_help.c:2271 +#: sql_help.c:3203 msgid "constraint_name" msgstr "nome_restrição" -#: sql_help.c:227 sql_help.c:962 +#: sql_help.c:230 sql_help.c:994 msgid "new_constraint_name" msgstr "novo_nome_restrição" -#: sql_help.c:297 sql_help.c:868 +#: sql_help.c:301 sql_help.c:898 msgid "new_version" msgstr "nova_versão" -#: sql_help.c:301 sql_help.c:303 +#: sql_help.c:305 sql_help.c:307 msgid "member_object" msgstr "objeto_membro" -#: sql_help.c:304 +#: sql_help.c:308 msgid "where member_object is:" msgstr "onde objeto_membro é:" -#: sql_help.c:305 sql_help.c:1366 sql_help.c:3466 +#: sql_help.c:309 sql_help.c:314 sql_help.c:315 sql_help.c:316 sql_help.c:317 +#: sql_help.c:318 sql_help.c:319 sql_help.c:324 sql_help.c:328 sql_help.c:330 +#: sql_help.c:332 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:339 sql_help.c:340 sql_help.c:343 +#: sql_help.c:344 sql_help.c:1407 sql_help.c:1412 sql_help.c:1419 +#: sql_help.c:1420 sql_help.c:1421 sql_help.c:1422 sql_help.c:1423 +#: sql_help.c:1424 sql_help.c:1425 sql_help.c:1430 sql_help.c:1432 +#: sql_help.c:1436 sql_help.c:1438 sql_help.c:1442 sql_help.c:1443 +#: sql_help.c:1446 sql_help.c:1447 sql_help.c:1448 sql_help.c:1449 +#: sql_help.c:1450 sql_help.c:1451 sql_help.c:1452 sql_help.c:1453 +#: sql_help.c:1454 sql_help.c:1459 sql_help.c:1460 sql_help.c:3539 +#: sql_help.c:3544 sql_help.c:3545 sql_help.c:3546 sql_help.c:3547 +#: sql_help.c:3553 sql_help.c:3554 sql_help.c:3555 sql_help.c:3556 +#: sql_help.c:3557 sql_help.c:3558 sql_help.c:3559 sql_help.c:3560 +msgid "object_name" +msgstr "nome_objeto" + +#: sql_help.c:310 sql_help.c:1408 sql_help.c:3542 msgid "aggregate_name" msgstr "nome_agregação" -#: sql_help.c:307 sql_help.c:1368 sql_help.c:1610 sql_help.c:1614 -#: sql_help.c:1616 sql_help.c:2590 +#: sql_help.c:312 sql_help.c:1410 sql_help.c:1678 sql_help.c:1682 +#: sql_help.c:1684 sql_help.c:2666 msgid "source_type" msgstr "tipo_origem" -#: sql_help.c:308 sql_help.c:1369 sql_help.c:1611 sql_help.c:1615 -#: sql_help.c:1617 sql_help.c:2591 +#: sql_help.c:313 sql_help.c:1411 sql_help.c:1679 sql_help.c:1683 +#: sql_help.c:1685 sql_help.c:2667 msgid "target_type" msgstr "tipo_destino" -#: sql_help.c:309 sql_help.c:310 sql_help.c:311 sql_help.c:312 sql_help.c:313 -#: sql_help.c:314 sql_help.c:319 sql_help.c:323 sql_help.c:325 sql_help.c:327 -#: sql_help.c:328 sql_help.c:329 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:338 sql_help.c:339 -#: sql_help.c:1370 sql_help.c:1377 sql_help.c:1378 sql_help.c:1379 -#: sql_help.c:1380 sql_help.c:1381 sql_help.c:1382 sql_help.c:1383 -#: sql_help.c:1388 sql_help.c:1390 sql_help.c:1394 sql_help.c:1396 -#: sql_help.c:1400 sql_help.c:1401 sql_help.c:1404 sql_help.c:1405 -#: sql_help.c:1406 sql_help.c:1407 sql_help.c:1408 sql_help.c:1409 -#: sql_help.c:1410 sql_help.c:1411 sql_help.c:1412 sql_help.c:1417 -#: sql_help.c:1418 sql_help.c:3463 sql_help.c:3468 sql_help.c:3469 -#: sql_help.c:3470 sql_help.c:3471 sql_help.c:3477 sql_help.c:3478 -#: sql_help.c:3479 sql_help.c:3480 sql_help.c:3481 sql_help.c:3482 -#: sql_help.c:3483 sql_help.c:3484 -msgid "object_name" -msgstr "nome_objeto" - -#: sql_help.c:315 sql_help.c:713 sql_help.c:1384 sql_help.c:1612 -#: sql_help.c:1647 sql_help.c:1710 sql_help.c:1931 sql_help.c:1962 -#: sql_help.c:2362 sql_help.c:3049 sql_help.c:3381 sql_help.c:3472 -#: sql_help.c:3575 sql_help.c:3579 sql_help.c:3583 sql_help.c:3586 -#: sql_help.c:3814 sql_help.c:3818 sql_help.c:3822 sql_help.c:3825 -#: sql_help.c:4008 sql_help.c:4012 sql_help.c:4016 sql_help.c:4019 +#: sql_help.c:320 sql_help.c:741 sql_help.c:1426 sql_help.c:1680 +#: sql_help.c:1715 sql_help.c:1778 sql_help.c:2000 sql_help.c:2031 +#: sql_help.c:2430 sql_help.c:3125 sql_help.c:3457 sql_help.c:3548 +#: sql_help.c:3651 sql_help.c:3655 sql_help.c:3659 sql_help.c:3662 +#: sql_help.c:3890 sql_help.c:3894 sql_help.c:3898 sql_help.c:3901 +#: sql_help.c:4084 sql_help.c:4088 sql_help.c:4092 sql_help.c:4095 msgid "function_name" msgstr "nome_função" -#: sql_help.c:320 sql_help.c:706 sql_help.c:1391 sql_help.c:1955 +#: sql_help.c:325 sql_help.c:734 sql_help.c:1433 sql_help.c:2024 msgid "operator_name" msgstr "nome_operador" -#: sql_help.c:321 sql_help.c:647 sql_help.c:651 sql_help.c:1392 -#: sql_help.c:1932 sql_help.c:2708 +#: sql_help.c:326 sql_help.c:670 sql_help.c:674 sql_help.c:678 sql_help.c:1434 +#: sql_help.c:2001 sql_help.c:2784 msgid "left_type" msgstr "tipo_esquerda" -#: sql_help.c:322 sql_help.c:648 sql_help.c:652 sql_help.c:1393 -#: sql_help.c:1933 sql_help.c:2709 +#: sql_help.c:327 sql_help.c:671 sql_help.c:675 sql_help.c:679 sql_help.c:1435 +#: sql_help.c:2002 sql_help.c:2785 msgid "right_type" msgstr "tipo_direita" -#: sql_help.c:324 sql_help.c:326 sql_help.c:669 sql_help.c:672 sql_help.c:675 -#: sql_help.c:704 sql_help.c:716 sql_help.c:724 sql_help.c:727 sql_help.c:730 -#: sql_help.c:1395 sql_help.c:1397 sql_help.c:1952 sql_help.c:1973 -#: sql_help.c:2209 sql_help.c:2718 sql_help.c:2727 +#: sql_help.c:329 sql_help.c:331 sql_help.c:697 sql_help.c:700 sql_help.c:703 +#: sql_help.c:732 sql_help.c:744 sql_help.c:752 sql_help.c:755 sql_help.c:758 +#: sql_help.c:1437 sql_help.c:1439 sql_help.c:2021 sql_help.c:2042 +#: sql_help.c:2277 sql_help.c:2794 sql_help.c:2803 msgid "index_method" msgstr "método_índice" -#: sql_help.c:336 sql_help.c:1012 sql_help.c:1413 sql_help.c:1818 -#: sql_help.c:2185 sql_help.c:2331 sql_help.c:2841 sql_help.c:3063 -#: sql_help.c:3395 +#: sql_help.c:341 sql_help.c:1044 sql_help.c:1455 sql_help.c:1888 +#: sql_help.c:2253 sql_help.c:2399 sql_help.c:2917 sql_help.c:3139 +#: sql_help.c:3471 msgid "type_name" msgstr "nome_tipo" -#: sql_help.c:337 sql_help.c:1414 sql_help.c:1817 sql_help.c:2332 -#: sql_help.c:2556 sql_help.c:2842 sql_help.c:3055 sql_help.c:3387 +#: sql_help.c:342 sql_help.c:1456 sql_help.c:1887 sql_help.c:2400 +#: sql_help.c:2624 sql_help.c:2918 sql_help.c:3131 sql_help.c:3463 msgid "lang_name" msgstr "nome_linguagem" -#: sql_help.c:340 +#: sql_help.c:345 msgid "and aggregate_signature is:" msgstr "e assinatura_agregação é:" -#: sql_help.c:363 sql_help.c:1736 +#: sql_help.c:368 sql_help.c:1550 sql_help.c:1805 msgid "handler_function" msgstr "função_manipulação" -#: sql_help.c:364 sql_help.c:1737 +#: sql_help.c:369 sql_help.c:1806 msgid "validator_function" msgstr "função_validação" -#: sql_help.c:413 sql_help.c:487 sql_help.c:609 sql_help.c:956 sql_help.c:1151 -#: sql_help.c:2200 sql_help.c:2201 sql_help.c:2217 sql_help.c:2218 +#: sql_help.c:418 sql_help.c:495 sql_help.c:626 sql_help.c:988 sql_help.c:1187 +#: sql_help.c:2268 sql_help.c:2269 sql_help.c:2285 sql_help.c:2286 msgid "action" msgstr "ação" -#: sql_help.c:415 sql_help.c:422 sql_help.c:426 sql_help.c:427 sql_help.c:430 -#: sql_help.c:432 sql_help.c:433 sql_help.c:434 sql_help.c:436 sql_help.c:439 -#: sql_help.c:441 sql_help.c:442 sql_help.c:611 sql_help.c:621 sql_help.c:623 -#: sql_help.c:626 sql_help.c:628 sql_help.c:850 sql_help.c:958 sql_help.c:971 -#: sql_help.c:975 sql_help.c:976 sql_help.c:980 sql_help.c:982 sql_help.c:983 -#: sql_help.c:984 sql_help.c:986 sql_help.c:989 sql_help.c:991 sql_help.c:1250 -#: sql_help.c:1253 sql_help.c:1273 sql_help.c:1372 sql_help.c:1474 -#: sql_help.c:1479 sql_help.c:1493 sql_help.c:1494 sql_help.c:1495 -#: sql_help.c:1768 sql_help.c:1815 sql_help.c:1877 sql_help.c:1912 -#: sql_help.c:2093 sql_help.c:2173 sql_help.c:2186 sql_help.c:2205 -#: sql_help.c:2207 sql_help.c:2214 sql_help.c:2225 sql_help.c:2242 -#: sql_help.c:2365 sql_help.c:2501 sql_help.c:3034 sql_help.c:3035 -#: sql_help.c:3114 sql_help.c:3129 sql_help.c:3131 sql_help.c:3133 -#: sql_help.c:3366 sql_help.c:3367 sql_help.c:3465 sql_help.c:3606 -#: sql_help.c:3845 sql_help.c:3887 sql_help.c:3889 sql_help.c:3891 -#: sql_help.c:3908 sql_help.c:3911 sql_help.c:4039 +#: sql_help.c:420 sql_help.c:427 sql_help.c:431 sql_help.c:432 sql_help.c:435 +#: sql_help.c:437 sql_help.c:438 sql_help.c:439 sql_help.c:441 sql_help.c:444 +#: sql_help.c:446 sql_help.c:447 sql_help.c:630 sql_help.c:640 sql_help.c:642 +#: sql_help.c:645 sql_help.c:647 sql_help.c:880 sql_help.c:990 sql_help.c:1003 +#: sql_help.c:1007 sql_help.c:1008 sql_help.c:1012 sql_help.c:1014 +#: sql_help.c:1015 sql_help.c:1016 sql_help.c:1018 sql_help.c:1021 +#: sql_help.c:1023 sql_help.c:1290 sql_help.c:1293 sql_help.c:1313 +#: sql_help.c:1414 sql_help.c:1516 sql_help.c:1521 sql_help.c:1535 +#: sql_help.c:1536 sql_help.c:1537 sql_help.c:1837 sql_help.c:1885 +#: sql_help.c:1946 sql_help.c:1981 sql_help.c:2161 sql_help.c:2241 +#: sql_help.c:2254 sql_help.c:2273 sql_help.c:2275 sql_help.c:2282 +#: sql_help.c:2293 sql_help.c:2310 sql_help.c:2433 sql_help.c:2569 +#: sql_help.c:3110 sql_help.c:3111 sql_help.c:3190 sql_help.c:3205 +#: sql_help.c:3207 sql_help.c:3209 sql_help.c:3442 sql_help.c:3443 +#: sql_help.c:3541 sql_help.c:3682 sql_help.c:3921 sql_help.c:3963 +#: sql_help.c:3965 sql_help.c:3967 sql_help.c:3984 sql_help.c:3987 +#: sql_help.c:4115 msgid "column_name" msgstr "nome_coluna" -#: sql_help.c:416 sql_help.c:612 sql_help.c:959 +#: sql_help.c:421 sql_help.c:631 sql_help.c:991 msgid "new_column_name" msgstr "novo_nome_coluna" -#: sql_help.c:421 sql_help.c:503 sql_help.c:620 sql_help.c:970 sql_help.c:1164 +#: sql_help.c:426 sql_help.c:516 sql_help.c:639 sql_help.c:1002 +#: sql_help.c:1200 msgid "where action is one of:" msgstr "onde ação é uma das:" -#: sql_help.c:423 sql_help.c:428 sql_help.c:972 sql_help.c:977 sql_help.c:1166 -#: sql_help.c:1170 sql_help.c:1690 sql_help.c:1769 sql_help.c:1951 -#: sql_help.c:2174 sql_help.c:2410 sql_help.c:3216 +#: sql_help.c:428 sql_help.c:433 sql_help.c:1004 sql_help.c:1009 +#: sql_help.c:1202 sql_help.c:1206 sql_help.c:1758 sql_help.c:1838 +#: sql_help.c:2020 sql_help.c:2242 sql_help.c:2478 sql_help.c:3292 msgid "data_type" msgstr "tipo_de_dado" -#: sql_help.c:424 sql_help.c:429 sql_help.c:973 sql_help.c:978 sql_help.c:1167 -#: sql_help.c:1171 sql_help.c:1691 sql_help.c:1772 sql_help.c:1879 -#: sql_help.c:2175 sql_help.c:2411 sql_help.c:2417 sql_help.c:3124 +#: sql_help.c:429 sql_help.c:434 sql_help.c:1005 sql_help.c:1010 +#: sql_help.c:1203 sql_help.c:1207 sql_help.c:1759 sql_help.c:1841 +#: sql_help.c:1948 sql_help.c:2243 sql_help.c:2479 sql_help.c:2485 +#: sql_help.c:3200 msgid "collation" msgstr "ordenação" -#: sql_help.c:425 sql_help.c:974 sql_help.c:1773 sql_help.c:2176 -#: sql_help.c:2187 +#: sql_help.c:430 sql_help.c:1006 sql_help.c:1842 sql_help.c:2244 +#: sql_help.c:2255 msgid "column_constraint" msgstr "restrição_coluna" -#: sql_help.c:435 sql_help.c:622 sql_help.c:985 +#: sql_help.c:440 sql_help.c:641 sql_help.c:1017 msgid "integer" msgstr "inteiro" -#: sql_help.c:437 sql_help.c:440 sql_help.c:624 sql_help.c:627 sql_help.c:987 -#: sql_help.c:990 +#: sql_help.c:442 sql_help.c:445 sql_help.c:643 sql_help.c:646 sql_help.c:1019 +#: sql_help.c:1022 msgid "attribute_option" msgstr "opção_atributo" -#: sql_help.c:445 sql_help.c:992 sql_help.c:1774 sql_help.c:2177 -#: sql_help.c:2188 +#: sql_help.c:450 sql_help.c:1024 sql_help.c:1843 sql_help.c:2245 +#: sql_help.c:2256 msgid "table_constraint" msgstr "restrição_tabela" -#: sql_help.c:448 sql_help.c:449 sql_help.c:450 sql_help.c:451 sql_help.c:997 -#: sql_help.c:998 sql_help.c:999 sql_help.c:1000 sql_help.c:1415 +#: sql_help.c:453 sql_help.c:454 sql_help.c:455 sql_help.c:456 sql_help.c:1029 +#: sql_help.c:1030 sql_help.c:1031 sql_help.c:1032 sql_help.c:1457 msgid "trigger_name" msgstr "nome_gatilho" -#: sql_help.c:452 sql_help.c:453 sql_help.c:1010 sql_help.c:1011 -#: sql_help.c:1775 sql_help.c:2180 +#: sql_help.c:457 sql_help.c:458 sql_help.c:1042 sql_help.c:1043 +#: sql_help.c:1844 sql_help.c:2248 msgid "parent_table" msgstr "tabela_ancestral" -#: sql_help.c:504 sql_help.c:1819 +#: sql_help.c:515 sql_help.c:565 sql_help.c:628 sql_help.c:1167 +#: sql_help.c:1790 +msgid "extension_name" +msgstr "nome_extensão" + +#: sql_help.c:517 sql_help.c:1889 msgid "execution_cost" msgstr "custo_execução" -#: sql_help.c:505 sql_help.c:1820 +#: sql_help.c:518 sql_help.c:1890 msgid "result_rows" msgstr "registros_retornados" -#: sql_help.c:526 sql_help.c:528 sql_help.c:783 sql_help.c:791 sql_help.c:795 -#: sql_help.c:798 sql_help.c:801 sql_help.c:1205 sql_help.c:1213 -#: sql_help.c:1216 sql_help.c:1218 sql_help.c:1220 sql_help.c:2067 -#: sql_help.c:2069 sql_help.c:2072 sql_help.c:2073 sql_help.c:3033 -#: sql_help.c:3037 sql_help.c:3040 sql_help.c:3042 sql_help.c:3044 -#: sql_help.c:3046 sql_help.c:3048 sql_help.c:3054 sql_help.c:3056 -#: sql_help.c:3058 sql_help.c:3060 sql_help.c:3062 sql_help.c:3064 -#, fuzzy -#| msgid "Replication" +#: sql_help.c:539 sql_help.c:541 sql_help.c:813 sql_help.c:821 sql_help.c:825 +#: sql_help.c:828 sql_help.c:831 sql_help.c:1241 sql_help.c:1249 +#: sql_help.c:1253 sql_help.c:1256 sql_help.c:1259 sql_help.c:2135 +#: sql_help.c:2137 sql_help.c:2140 sql_help.c:2141 sql_help.c:3109 +#: sql_help.c:3113 sql_help.c:3116 sql_help.c:3118 sql_help.c:3120 +#: sql_help.c:3122 sql_help.c:3124 sql_help.c:3130 sql_help.c:3132 +#: sql_help.c:3134 sql_help.c:3136 sql_help.c:3138 sql_help.c:3140 msgid "role_specification" msgstr "especificação_role" -#: sql_help.c:527 sql_help.c:529 sql_help.c:1232 sql_help.c:1665 -#: sql_help.c:2075 sql_help.c:2486 sql_help.c:2875 sql_help.c:3691 +#: sql_help.c:540 sql_help.c:542 sql_help.c:1272 sql_help.c:1733 +#: sql_help.c:2143 sql_help.c:2554 sql_help.c:2951 sql_help.c:3767 msgid "user_name" msgstr "nome_usuário" -#: sql_help.c:530 sql_help.c:803 sql_help.c:1221 sql_help.c:2074 -#: sql_help.c:3065 -#, fuzzy -#| msgid "where option can be:" +#: sql_help.c:543 sql_help.c:833 sql_help.c:1261 sql_help.c:2142 +#: sql_help.c:3141 msgid "where role_specification can be:" msgstr "onde especificação_role pode ser:" -#: sql_help.c:532 +#: sql_help.c:545 msgid "group_name" msgstr "nome_grupo" -#: sql_help.c:549 sql_help.c:1670 sql_help.c:1883 sql_help.c:1915 -#: sql_help.c:2183 sql_help.c:2191 sql_help.c:2223 sql_help.c:2245 -#: sql_help.c:2257 sql_help.c:3061 sql_help.c:3393 +#: sql_help.c:563 sql_help.c:1738 sql_help.c:1952 sql_help.c:1984 +#: sql_help.c:2251 sql_help.c:2259 sql_help.c:2291 sql_help.c:2313 +#: sql_help.c:2325 sql_help.c:3137 sql_help.c:3469 msgid "tablespace_name" msgstr "nome_tablespace" -#: sql_help.c:551 sql_help.c:554 sql_help.c:630 sql_help.c:632 sql_help.c:1007 -#: sql_help.c:1009 sql_help.c:1881 sql_help.c:1913 sql_help.c:2181 -#: sql_help.c:2189 sql_help.c:2221 sql_help.c:2243 +#: sql_help.c:567 sql_help.c:570 sql_help.c:649 sql_help.c:651 sql_help.c:1039 +#: sql_help.c:1041 sql_help.c:1950 sql_help.c:1982 sql_help.c:2249 +#: sql_help.c:2257 sql_help.c:2289 sql_help.c:2311 msgid "storage_parameter" msgstr "parâmetro_armazenamento" -#: sql_help.c:577 sql_help.c:1389 sql_help.c:3476 +#: sql_help.c:593 sql_help.c:1431 sql_help.c:3552 msgid "large_object_oid" msgstr "oid_objeto_grande" -#: sql_help.c:629 sql_help.c:1005 sql_help.c:1014 sql_help.c:1017 -#: sql_help.c:1313 +#: sql_help.c:648 sql_help.c:1037 sql_help.c:1046 sql_help.c:1049 +#: sql_help.c:1353 msgid "index_name" msgstr "nome_índice" -#: sql_help.c:705 sql_help.c:717 sql_help.c:1954 +#: sql_help.c:680 sql_help.c:2005 +msgid "res_proc" +msgstr "proc_restrição" + +#: sql_help.c:681 sql_help.c:2006 +msgid "join_proc" +msgstr "proc_junção" + +#: sql_help.c:733 sql_help.c:745 sql_help.c:2023 msgid "strategy_number" msgstr "número_estratégia" -#: sql_help.c:707 sql_help.c:708 sql_help.c:711 sql_help.c:712 sql_help.c:718 -#: sql_help.c:719 sql_help.c:721 sql_help.c:722 sql_help.c:1956 -#: sql_help.c:1957 sql_help.c:1960 sql_help.c:1961 +#: sql_help.c:735 sql_help.c:736 sql_help.c:739 sql_help.c:740 sql_help.c:746 +#: sql_help.c:747 sql_help.c:749 sql_help.c:750 sql_help.c:2025 +#: sql_help.c:2026 sql_help.c:2029 sql_help.c:2030 msgid "op_type" msgstr "tipo_operador" -#: sql_help.c:709 sql_help.c:1958 +#: sql_help.c:737 sql_help.c:2027 msgid "sort_family_name" msgstr "nome_família_ordenação" -#: sql_help.c:710 sql_help.c:720 sql_help.c:1959 +#: sql_help.c:738 sql_help.c:748 sql_help.c:2028 msgid "support_number" msgstr "número_suporte" -#: sql_help.c:714 sql_help.c:1613 sql_help.c:1963 sql_help.c:2334 -#: sql_help.c:2336 +#: sql_help.c:742 sql_help.c:1681 sql_help.c:2032 sql_help.c:2402 +#: sql_help.c:2404 msgid "argument_type" msgstr "tipo_argumento" -#: sql_help.c:744 sql_help.c:813 sql_help.c:849 sql_help.c:1130 -#: sql_help.c:1272 sql_help.c:1312 sql_help.c:1374 sql_help.c:1399 -#: sql_help.c:1403 sql_help.c:1416 sql_help.c:1473 sql_help.c:1478 -#: sql_help.c:1767 sql_help.c:1875 sql_help.c:1911 sql_help.c:1986 -#: sql_help.c:2044 sql_help.c:2092 sql_help.c:2172 sql_help.c:2184 -#: sql_help.c:2241 sql_help.c:2359 sql_help.c:2535 sql_help.c:2744 -#: sql_help.c:2761 sql_help.c:2851 sql_help.c:3031 sql_help.c:3036 -#: sql_help.c:3081 sql_help.c:3112 sql_help.c:3363 sql_help.c:3368 -#: sql_help.c:3464 sql_help.c:3561 sql_help.c:3563 sql_help.c:3612 -#: sql_help.c:3651 sql_help.c:3800 sql_help.c:3802 sql_help.c:3851 -#: sql_help.c:3885 sql_help.c:3907 sql_help.c:3909 sql_help.c:3910 -#: sql_help.c:3994 sql_help.c:3996 sql_help.c:4045 +#: sql_help.c:773 sql_help.c:776 sql_help.c:843 sql_help.c:879 sql_help.c:1163 +#: sql_help.c:1166 sql_help.c:1312 sql_help.c:1352 sql_help.c:1416 +#: sql_help.c:1441 sql_help.c:1445 sql_help.c:1458 sql_help.c:1515 +#: sql_help.c:1520 sql_help.c:1836 sql_help.c:1944 sql_help.c:1980 +#: sql_help.c:2055 sql_help.c:2112 sql_help.c:2160 sql_help.c:2240 +#: sql_help.c:2252 sql_help.c:2309 sql_help.c:2427 sql_help.c:2603 +#: sql_help.c:2820 sql_help.c:2837 sql_help.c:2927 sql_help.c:3107 +#: sql_help.c:3112 sql_help.c:3157 sql_help.c:3188 sql_help.c:3439 +#: sql_help.c:3444 sql_help.c:3540 sql_help.c:3637 sql_help.c:3639 +#: sql_help.c:3688 sql_help.c:3727 sql_help.c:3876 sql_help.c:3878 +#: sql_help.c:3927 sql_help.c:3961 sql_help.c:3983 sql_help.c:3985 +#: sql_help.c:3986 sql_help.c:4070 sql_help.c:4072 sql_help.c:4121 msgid "table_name" msgstr "nome_tabela" -#: sql_help.c:747 sql_help.c:1988 -#, fuzzy -#| msgid "missing expression" +#: sql_help.c:778 sql_help.c:2057 msgid "using_expression" msgstr "expressão_using" -#: sql_help.c:748 sql_help.c:1989 -#, fuzzy -#| msgid "expression" +#: sql_help.c:779 sql_help.c:2058 msgid "check_expression" msgstr "expressão_check" -#: sql_help.c:787 sql_help.c:1209 sql_help.c:1855 sql_help.c:2021 -#: sql_help.c:2469 +#: sql_help.c:817 sql_help.c:1245 sql_help.c:1924 sql_help.c:2089 +#: sql_help.c:2537 msgid "password" msgstr "senha" -#: sql_help.c:788 sql_help.c:1210 sql_help.c:1856 sql_help.c:2022 -#: sql_help.c:2470 +#: sql_help.c:818 sql_help.c:1246 sql_help.c:1925 sql_help.c:2090 +#: sql_help.c:2538 msgid "timestamp" msgstr "tempo_absoluto" -#: sql_help.c:792 sql_help.c:796 sql_help.c:799 sql_help.c:802 sql_help.c:3041 -#: sql_help.c:3373 +#: sql_help.c:822 sql_help.c:826 sql_help.c:829 sql_help.c:832 sql_help.c:1250 +#: sql_help.c:1254 sql_help.c:1257 sql_help.c:1260 sql_help.c:3117 +#: sql_help.c:3449 msgid "database_name" msgstr "nome_banco_de_dados" -#: sql_help.c:843 sql_help.c:2087 +#: sql_help.c:873 sql_help.c:2155 msgid "increment" msgstr "incremento" -#: sql_help.c:844 sql_help.c:2088 +#: sql_help.c:874 sql_help.c:2156 msgid "minvalue" msgstr "valor_mínimo" -#: sql_help.c:845 sql_help.c:2089 +#: sql_help.c:875 sql_help.c:2157 msgid "maxvalue" msgstr "valor_máximo" -#: sql_help.c:846 sql_help.c:2090 sql_help.c:3559 sql_help.c:3649 -#: sql_help.c:3798 sql_help.c:3927 sql_help.c:3992 +#: sql_help.c:876 sql_help.c:2158 sql_help.c:3635 sql_help.c:3725 +#: sql_help.c:3874 sql_help.c:4003 sql_help.c:4068 msgid "start" msgstr "início" -#: sql_help.c:847 +#: sql_help.c:877 msgid "restart" msgstr "reinício" -#: sql_help.c:848 sql_help.c:2091 +#: sql_help.c:878 sql_help.c:2159 msgid "cache" msgstr "cache" -#: sql_help.c:993 +#: sql_help.c:1025 msgid "table_constraint_using_index" msgstr "restrição_tabela_utilizando_índice" -#: sql_help.c:1001 sql_help.c:1002 sql_help.c:1003 sql_help.c:1004 +#: sql_help.c:1033 sql_help.c:1034 sql_help.c:1035 sql_help.c:1036 msgid "rewrite_rule_name" msgstr "nome_regra_reescrita" -#: sql_help.c:1015 +#: sql_help.c:1047 msgid "and table_constraint_using_index is:" msgstr "e restrição_tabela_utilizando_índice é:" -#: sql_help.c:1033 sql_help.c:1036 sql_help.c:2260 +#: sql_help.c:1065 sql_help.c:1068 sql_help.c:2328 msgid "tablespace_option" msgstr "opção_tablespace" -#: sql_help.c:1057 sql_help.c:1060 sql_help.c:1066 sql_help.c:1070 +#: sql_help.c:1089 sql_help.c:1092 sql_help.c:1098 sql_help.c:1102 msgid "token_type" msgstr "tipo_elemento" -#: sql_help.c:1058 sql_help.c:1061 +#: sql_help.c:1090 sql_help.c:1093 msgid "dictionary_name" msgstr "nome_dicionário" -#: sql_help.c:1063 sql_help.c:1067 +#: sql_help.c:1095 sql_help.c:1099 msgid "old_dictionary" msgstr "dicionário_antigo" -#: sql_help.c:1064 sql_help.c:1068 +#: sql_help.c:1096 sql_help.c:1100 msgid "new_dictionary" msgstr "novo_dicionário" -#: sql_help.c:1155 sql_help.c:1165 sql_help.c:1168 sql_help.c:1169 -#: sql_help.c:2409 +#: sql_help.c:1191 sql_help.c:1201 sql_help.c:1204 sql_help.c:1205 +#: sql_help.c:2477 msgid "attribute_name" msgstr "nome_atributo" -#: sql_help.c:1156 +#: sql_help.c:1192 msgid "new_attribute_name" msgstr "novo_nome_atributo" -#: sql_help.c:1162 +#: sql_help.c:1198 msgid "new_enum_value" msgstr "novo_valor_enum" -#: sql_help.c:1163 +#: sql_help.c:1199 msgid "existing_enum_value" msgstr "valor_enum_existente" -#: sql_help.c:1233 sql_help.c:1776 sql_help.c:2103 sql_help.c:2487 -#: sql_help.c:2876 sql_help.c:3047 sql_help.c:3082 sql_help.c:3379 +#: sql_help.c:1273 sql_help.c:1845 sql_help.c:2171 sql_help.c:2555 +#: sql_help.c:2952 sql_help.c:3123 sql_help.c:3158 sql_help.c:3455 msgid "server_name" msgstr "nome_servidor" -#: sql_help.c:1261 sql_help.c:1264 sql_help.c:2502 +#: sql_help.c:1301 sql_help.c:1304 sql_help.c:2570 msgid "view_option_name" msgstr "nome_opção_visão" -#: sql_help.c:1262 sql_help.c:2503 +#: sql_help.c:1302 sql_help.c:2571 msgid "view_option_value" msgstr "valor_opção_visão" -#: sql_help.c:1287 sql_help.c:3707 sql_help.c:3709 sql_help.c:3733 +#: sql_help.c:1327 sql_help.c:3783 sql_help.c:3785 sql_help.c:3809 msgid "transaction_mode" msgstr "modo_transação" -#: sql_help.c:1288 sql_help.c:3710 sql_help.c:3734 +#: sql_help.c:1328 sql_help.c:3786 sql_help.c:3810 msgid "where transaction_mode is one of:" msgstr "onde modo_transação é um dos:" -#: sql_help.c:1371 +#: sql_help.c:1413 msgid "relation_name" msgstr "nome_relação" -#: sql_help.c:1376 sql_help.c:3043 sql_help.c:3375 +#: sql_help.c:1418 sql_help.c:3119 sql_help.c:3451 msgid "domain_name" msgstr "nome_domínio" -#: sql_help.c:1398 -#, fuzzy -#| msgid "role_name" +#: sql_help.c:1440 msgid "policy_name" -msgstr "nome_role" +msgstr "nome_política" -#: sql_help.c:1402 +#: sql_help.c:1444 msgid "rule_name" msgstr "nome_regra" -#: sql_help.c:1419 +#: sql_help.c:1461 msgid "text" msgstr "texto" -#: sql_help.c:1444 sql_help.c:3225 sql_help.c:3413 +#: sql_help.c:1486 sql_help.c:3301 sql_help.c:3489 msgid "transaction_id" msgstr "id_transação" -#: sql_help.c:1475 sql_help.c:1481 sql_help.c:3151 +#: sql_help.c:1517 sql_help.c:1523 sql_help.c:3227 msgid "filename" msgstr "arquivo" -#: sql_help.c:1476 sql_help.c:1482 sql_help.c:2046 sql_help.c:2047 -#: sql_help.c:2048 +#: sql_help.c:1518 sql_help.c:1524 sql_help.c:2114 sql_help.c:2115 +#: sql_help.c:2116 msgid "command" msgstr "comando" -#: sql_help.c:1480 sql_help.c:1916 sql_help.c:2246 sql_help.c:2504 -#: sql_help.c:2522 sql_help.c:3116 +#: sql_help.c:1522 sql_help.c:1985 sql_help.c:2314 sql_help.c:2572 +#: sql_help.c:2590 sql_help.c:3192 msgid "query" msgstr "consulta" -#: sql_help.c:1484 sql_help.c:2921 +#: sql_help.c:1526 sql_help.c:2997 msgid "where option can be one of:" msgstr "onde opção pode ser um das:" -#: sql_help.c:1485 +#: sql_help.c:1527 msgid "format_name" msgstr "nome_formato" -#: sql_help.c:1486 sql_help.c:1487 sql_help.c:1490 sql_help.c:2922 -#: sql_help.c:2923 sql_help.c:2924 sql_help.c:2925 sql_help.c:2926 +#: sql_help.c:1528 sql_help.c:1529 sql_help.c:1532 sql_help.c:2998 +#: sql_help.c:2999 sql_help.c:3000 sql_help.c:3001 sql_help.c:3002 msgid "boolean" msgstr "booleano" -#: sql_help.c:1488 +#: sql_help.c:1530 msgid "delimiter_character" msgstr "caracter_delimitador" -#: sql_help.c:1489 +#: sql_help.c:1531 msgid "null_string" msgstr "cadeia_nula" -#: sql_help.c:1491 +#: sql_help.c:1533 msgid "quote_character" msgstr "caracter_separador" -#: sql_help.c:1492 +#: sql_help.c:1534 msgid "escape_character" msgstr "caracter_escape" -#: sql_help.c:1496 +#: sql_help.c:1538 msgid "encoding_name" msgstr "nome_codificação" -#: sql_help.c:1553 sql_help.c:1569 sql_help.c:1572 +#: sql_help.c:1549 +msgid "access_method_type" +msgstr "tipo_método_acesso" + +#: sql_help.c:1615 sql_help.c:1634 sql_help.c:1637 msgid "arg_data_type" msgstr "tipo_de_dado_arg" -#: sql_help.c:1554 sql_help.c:1573 sql_help.c:1581 +#: sql_help.c:1616 sql_help.c:1638 sql_help.c:1646 msgid "sfunc" msgstr "função_trans_estado" -#: sql_help.c:1555 sql_help.c:1574 sql_help.c:1582 +#: sql_help.c:1617 sql_help.c:1639 sql_help.c:1647 msgid "state_data_type" msgstr "tipo_de_dado_estado" -#: sql_help.c:1556 sql_help.c:1575 sql_help.c:1583 +#: sql_help.c:1618 sql_help.c:1640 sql_help.c:1648 msgid "state_data_size" msgstr "tamanho_de_dado_estado" -#: sql_help.c:1557 sql_help.c:1576 sql_help.c:1584 +#: sql_help.c:1619 sql_help.c:1641 sql_help.c:1649 msgid "ffunc" msgstr "função_final" -#: sql_help.c:1558 sql_help.c:1577 sql_help.c:1585 +#: sql_help.c:1620 sql_help.c:1650 +msgid "combinefunc" +msgstr "função_combine" + +#: sql_help.c:1621 sql_help.c:1651 +msgid "serialfunc" +msgstr "função_serial" + +#: sql_help.c:1622 sql_help.c:1652 +msgid "deserialfunc" +msgstr "função_deserial" + +#: sql_help.c:1623 sql_help.c:1642 sql_help.c:1653 msgid "initial_condition" msgstr "condição_inicial" -#: sql_help.c:1559 sql_help.c:1586 +#: sql_help.c:1624 sql_help.c:1654 msgid "msfunc" msgstr "função_mestado" -#: sql_help.c:1560 sql_help.c:1587 +#: sql_help.c:1625 sql_help.c:1655 msgid "minvfunc" msgstr "função_minv" -#: sql_help.c:1561 sql_help.c:1588 +#: sql_help.c:1626 sql_help.c:1656 msgid "mstate_data_type" msgstr "tipo_de_dado_mestado" -#: sql_help.c:1562 sql_help.c:1589 +#: sql_help.c:1627 sql_help.c:1657 msgid "mstate_data_size" msgstr "tamanho_de_dado_mestado" -#: sql_help.c:1563 sql_help.c:1590 +#: sql_help.c:1628 sql_help.c:1658 msgid "mffunc" msgstr "função_mfinal" -#: sql_help.c:1564 sql_help.c:1591 +#: sql_help.c:1629 sql_help.c:1659 msgid "minitial_condition" msgstr "condição_minicial" -#: sql_help.c:1565 sql_help.c:1592 +#: sql_help.c:1630 sql_help.c:1660 msgid "sort_operator" msgstr "operador_ordenação" -#: sql_help.c:1578 +#: sql_help.c:1643 msgid "or the old syntax" msgstr "ou a sintaxe antiga" -#: sql_help.c:1580 +#: sql_help.c:1645 msgid "base_type" msgstr "tipo_base" -#: sql_help.c:1631 +#: sql_help.c:1699 msgid "locale" msgstr "configuração regional" -#: sql_help.c:1632 sql_help.c:1668 +#: sql_help.c:1700 sql_help.c:1736 msgid "lc_collate" msgstr "lc_collate" -#: sql_help.c:1633 sql_help.c:1669 +#: sql_help.c:1701 sql_help.c:1737 msgid "lc_ctype" msgstr "lc_ctype" -#: sql_help.c:1635 +#: sql_help.c:1703 msgid "existing_collation" msgstr "ordenação_existente" -#: sql_help.c:1645 +#: sql_help.c:1713 msgid "source_encoding" msgstr "codificação_origem" -#: sql_help.c:1646 +#: sql_help.c:1714 msgid "dest_encoding" msgstr "codificação_destino" -#: sql_help.c:1666 sql_help.c:2286 +#: sql_help.c:1734 sql_help.c:2354 msgid "template" msgstr "modelo" -#: sql_help.c:1667 +#: sql_help.c:1735 msgid "encoding" msgstr "codificação" -#: sql_help.c:1693 +#: sql_help.c:1761 msgid "constraint" msgstr "restrição" -#: sql_help.c:1694 +#: sql_help.c:1762 msgid "where constraint is:" msgstr "onde restrição é:" -#: sql_help.c:1708 sql_help.c:2043 sql_help.c:2358 +#: sql_help.c:1776 sql_help.c:2111 sql_help.c:2426 msgid "event" msgstr "evento" -#: sql_help.c:1709 +#: sql_help.c:1777 msgid "filter_variable" msgstr "variável_filtro" -#: sql_help.c:1721 -msgid "extension_name" -msgstr "nome_extensão" - -#: sql_help.c:1723 +#: sql_help.c:1792 msgid "version" msgstr "versão" -#: sql_help.c:1724 +#: sql_help.c:1793 msgid "old_version" msgstr "versão_antiga" -#: sql_help.c:1779 sql_help.c:2192 +#: sql_help.c:1848 sql_help.c:2260 msgid "where column_constraint is:" msgstr "onde restrição_coluna é:" -#: sql_help.c:1782 sql_help.c:1813 sql_help.c:2195 +#: sql_help.c:1851 sql_help.c:1883 sql_help.c:2263 msgid "default_expr" msgstr "expressão_padrão" -#: sql_help.c:1783 sql_help.c:2202 +#: sql_help.c:1852 sql_help.c:2270 msgid "and table_constraint is:" msgstr "e restrição_tabela é:" -#: sql_help.c:1814 +#: sql_help.c:1884 msgid "rettype" msgstr "tipo_retorno" -#: sql_help.c:1816 +#: sql_help.c:1886 msgid "column_type" msgstr "tipo_coluna" -#: sql_help.c:1824 +#: sql_help.c:1894 msgid "definition" msgstr "definição" -#: sql_help.c:1825 +#: sql_help.c:1895 msgid "obj_file" msgstr "arquivo_objeto" -#: sql_help.c:1826 +#: sql_help.c:1896 msgid "link_symbol" msgstr "símbolo_ligação" -#: sql_help.c:1827 +#: sql_help.c:1897 msgid "attribute" msgstr "atributo" -#: sql_help.c:1862 sql_help.c:2028 sql_help.c:2476 +#: sql_help.c:1931 sql_help.c:2096 sql_help.c:2544 msgid "uid" msgstr "uid" -#: sql_help.c:1876 +#: sql_help.c:1945 msgid "method" msgstr "método" -#: sql_help.c:1880 sql_help.c:2227 sql_help.c:3125 +#: sql_help.c:1949 sql_help.c:2295 sql_help.c:3201 msgid "opclass" msgstr "classe_operadores" -#: sql_help.c:1884 sql_help.c:2213 +#: sql_help.c:1953 sql_help.c:2281 msgid "predicate" msgstr "predicado" -#: sql_help.c:1896 +#: sql_help.c:1965 msgid "call_handler" msgstr "manipulador_chamada" -#: sql_help.c:1897 +#: sql_help.c:1966 msgid "inline_handler" msgstr "manipulador_em_linha" -#: sql_help.c:1898 +#: sql_help.c:1967 msgid "valfunction" msgstr "função_validação" -#: sql_help.c:1934 +#: sql_help.c:2003 msgid "com_op" msgstr "operador_comutação" -#: sql_help.c:1935 +#: sql_help.c:2004 msgid "neg_op" msgstr "operador_negação" -#: sql_help.c:1936 -msgid "res_proc" -msgstr "proc_restrição" - -#: sql_help.c:1937 -msgid "join_proc" -msgstr "proc_junção" - -#: sql_help.c:1953 +#: sql_help.c:2022 msgid "family_name" msgstr "nome_família" -#: sql_help.c:1964 +#: sql_help.c:2033 msgid "storage_type" msgstr "tipo_armazenamento" -#: sql_help.c:2045 sql_help.c:2361 sql_help.c:2538 sql_help.c:3135 -#: sql_help.c:3550 sql_help.c:3552 sql_help.c:3640 sql_help.c:3642 -#: sql_help.c:3789 sql_help.c:3791 sql_help.c:3894 sql_help.c:3983 -#: sql_help.c:3985 +#: sql_help.c:2113 sql_help.c:2429 sql_help.c:2606 sql_help.c:3211 +#: sql_help.c:3626 sql_help.c:3628 sql_help.c:3716 sql_help.c:3718 +#: sql_help.c:3865 sql_help.c:3867 sql_help.c:3970 sql_help.c:4059 +#: sql_help.c:4061 msgid "condition" msgstr "condição" -#: sql_help.c:2049 sql_help.c:2364 +#: sql_help.c:2117 sql_help.c:2432 msgid "where event can be one of:" msgstr "onde evento pode ser um dos:" -#: sql_help.c:2068 sql_help.c:2070 +#: sql_help.c:2136 sql_help.c:2138 msgid "schema_element" msgstr "elemento_esquema" -#: sql_help.c:2104 +#: sql_help.c:2172 msgid "server_type" msgstr "tipo_servidor" -#: sql_help.c:2105 +#: sql_help.c:2173 msgid "server_version" msgstr "versão_servidor" -#: sql_help.c:2106 sql_help.c:3045 sql_help.c:3377 +#: sql_help.c:2174 sql_help.c:3121 sql_help.c:3453 msgid "fdw_name" msgstr "nome_fdw" -#: sql_help.c:2178 +#: sql_help.c:2246 msgid "source_table" msgstr "tabela_origem" -#: sql_help.c:2179 +#: sql_help.c:2247 msgid "like_option" msgstr "opção_like" -#: sql_help.c:2196 sql_help.c:2197 sql_help.c:2206 sql_help.c:2208 -#: sql_help.c:2212 +#: sql_help.c:2264 sql_help.c:2265 sql_help.c:2274 sql_help.c:2276 +#: sql_help.c:2280 msgid "index_parameters" msgstr "parâmetros_índice" -#: sql_help.c:2198 sql_help.c:2215 +#: sql_help.c:2266 sql_help.c:2283 msgid "reftable" msgstr "tabela_ref" -#: sql_help.c:2199 sql_help.c:2216 +#: sql_help.c:2267 sql_help.c:2284 msgid "refcolumn" msgstr "coluna_ref" -#: sql_help.c:2210 +#: sql_help.c:2278 msgid "exclude_element" msgstr "elemento_exclusão" -#: sql_help.c:2211 sql_help.c:3557 sql_help.c:3647 sql_help.c:3796 -#: sql_help.c:3925 sql_help.c:3990 +#: sql_help.c:2279 sql_help.c:3633 sql_help.c:3723 sql_help.c:3872 +#: sql_help.c:4001 sql_help.c:4066 msgid "operator" msgstr "operador" -#: sql_help.c:2219 +#: sql_help.c:2287 msgid "and like_option is:" msgstr "e opção_like é:" -#: sql_help.c:2220 +#: sql_help.c:2288 msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" msgstr "parâmetros_índice em restrições UNIQUE, PRIMARY KEY e EXCLUDE são:" -#: sql_help.c:2224 +#: sql_help.c:2292 msgid "exclude_element in an EXCLUDE constraint is:" msgstr "elemento_exclusão em uma restrição EXCLUDE é:" -#: sql_help.c:2259 +#: sql_help.c:2327 msgid "directory" msgstr "diretório" -#: sql_help.c:2273 +#: sql_help.c:2341 msgid "parser_name" msgstr "nome_analisador" -#: sql_help.c:2274 +#: sql_help.c:2342 msgid "source_config" msgstr "configuração_origem" -#: sql_help.c:2303 +#: sql_help.c:2371 msgid "start_function" msgstr "função_início" -#: sql_help.c:2304 +#: sql_help.c:2372 msgid "gettoken_function" msgstr "função_gettoken" -#: sql_help.c:2305 +#: sql_help.c:2373 msgid "end_function" msgstr "função_fim" -#: sql_help.c:2306 +#: sql_help.c:2374 msgid "lextypes_function" msgstr "função_lextypes" -#: sql_help.c:2307 +#: sql_help.c:2375 msgid "headline_function" msgstr "função_headline" -#: sql_help.c:2319 +#: sql_help.c:2387 msgid "init_function" msgstr "função_init" -#: sql_help.c:2320 +#: sql_help.c:2388 msgid "lexize_function" msgstr "função_lexize" -#: sql_help.c:2333 -#, fuzzy -#| msgid "function_name" +#: sql_help.c:2401 msgid "from_sql_function_name" -msgstr "nome_função" +msgstr "nome_função_do_sql" -#: sql_help.c:2335 -#, fuzzy -#| msgid "function_name" +#: sql_help.c:2403 msgid "to_sql_function_name" -msgstr "nome_função" +msgstr "nome_função_para_sql" -#: sql_help.c:2360 +#: sql_help.c:2428 msgid "referenced_table_name" msgstr "nome_tabela_referenciada" -#: sql_help.c:2363 +#: sql_help.c:2431 msgid "arguments" msgstr "argumentos" -#: sql_help.c:2413 sql_help.c:3485 +#: sql_help.c:2481 sql_help.c:3561 msgid "label" msgstr "rótulo" -#: sql_help.c:2415 +#: sql_help.c:2483 msgid "subtype" msgstr "subtipo" -#: sql_help.c:2416 +#: sql_help.c:2484 msgid "subtype_operator_class" msgstr "classe_operadores_subtipo" -#: sql_help.c:2418 +#: sql_help.c:2486 msgid "canonical_function" msgstr "função_canônica" -#: sql_help.c:2419 +#: sql_help.c:2487 msgid "subtype_diff_function" msgstr "função_diff_subtipo" -#: sql_help.c:2421 +#: sql_help.c:2489 msgid "input_function" msgstr "função_entrada" -#: sql_help.c:2422 +#: sql_help.c:2490 msgid "output_function" msgstr "função_saída" -#: sql_help.c:2423 +#: sql_help.c:2491 msgid "receive_function" msgstr "função_recepção" -#: sql_help.c:2424 +#: sql_help.c:2492 msgid "send_function" msgstr "função_envio" -#: sql_help.c:2425 +#: sql_help.c:2493 msgid "type_modifier_input_function" msgstr "função_entrada_modificador_tipo" -#: sql_help.c:2426 +#: sql_help.c:2494 msgid "type_modifier_output_function" msgstr "função_saída_modificador_tipo" -#: sql_help.c:2427 +#: sql_help.c:2495 msgid "analyze_function" msgstr "função_análise" -#: sql_help.c:2428 +#: sql_help.c:2496 msgid "internallength" msgstr "tamanho_interno" -#: sql_help.c:2429 +#: sql_help.c:2497 msgid "alignment" msgstr "alinhamento" -#: sql_help.c:2430 +#: sql_help.c:2498 msgid "storage" msgstr "armazenamento" -#: sql_help.c:2431 +#: sql_help.c:2499 msgid "like_type" msgstr "tipo_like" -#: sql_help.c:2432 +#: sql_help.c:2500 msgid "category" msgstr "categoria" -#: sql_help.c:2433 +#: sql_help.c:2501 msgid "preferred" msgstr "tipo_preferido" -#: sql_help.c:2434 +#: sql_help.c:2502 msgid "default" msgstr "valor_padrão" -#: sql_help.c:2435 +#: sql_help.c:2503 msgid "element" msgstr "elemento" -#: sql_help.c:2436 +#: sql_help.c:2504 msgid "delimiter" msgstr "delimitador" -#: sql_help.c:2437 +#: sql_help.c:2505 msgid "collatable" msgstr "collatable" -#: sql_help.c:2534 sql_help.c:3111 sql_help.c:3545 sql_help.c:3634 -#: sql_help.c:3784 sql_help.c:3884 sql_help.c:3978 +#: sql_help.c:2602 sql_help.c:3187 sql_help.c:3621 sql_help.c:3710 +#: sql_help.c:3860 sql_help.c:3960 sql_help.c:4054 msgid "with_query" msgstr "consulta_with" -#: sql_help.c:2536 sql_help.c:3113 sql_help.c:3564 sql_help.c:3570 -#: sql_help.c:3573 sql_help.c:3577 sql_help.c:3581 sql_help.c:3589 -#: sql_help.c:3803 sql_help.c:3809 sql_help.c:3812 sql_help.c:3816 -#: sql_help.c:3820 sql_help.c:3828 sql_help.c:3886 sql_help.c:3997 -#: sql_help.c:4003 sql_help.c:4006 sql_help.c:4010 sql_help.c:4014 -#: sql_help.c:4022 +#: sql_help.c:2604 sql_help.c:3189 sql_help.c:3640 sql_help.c:3646 +#: sql_help.c:3649 sql_help.c:3653 sql_help.c:3657 sql_help.c:3665 +#: sql_help.c:3879 sql_help.c:3885 sql_help.c:3888 sql_help.c:3892 +#: sql_help.c:3896 sql_help.c:3904 sql_help.c:3962 sql_help.c:4073 +#: sql_help.c:4079 sql_help.c:4082 sql_help.c:4086 sql_help.c:4090 +#: sql_help.c:4098 msgid "alias" msgstr "aliás" -#: sql_help.c:2537 +#: sql_help.c:2605 msgid "using_list" msgstr "lista_using" -#: sql_help.c:2539 sql_help.c:2952 sql_help.c:3192 sql_help.c:3895 +#: sql_help.c:2607 sql_help.c:3028 sql_help.c:3268 sql_help.c:3971 msgid "cursor_name" msgstr "nome_cursor" -#: sql_help.c:2540 sql_help.c:3119 sql_help.c:3896 +#: sql_help.c:2608 sql_help.c:3195 sql_help.c:3972 msgid "output_expression" msgstr "expressão_saída" -#: sql_help.c:2541 sql_help.c:3120 sql_help.c:3548 sql_help.c:3637 -#: sql_help.c:3787 sql_help.c:3897 sql_help.c:3981 +#: sql_help.c:2609 sql_help.c:3196 sql_help.c:3624 sql_help.c:3713 +#: sql_help.c:3863 sql_help.c:3973 sql_help.c:4057 msgid "output_name" msgstr "nome_saída" -#: sql_help.c:2557 +#: sql_help.c:2625 msgid "code" msgstr "código" -#: sql_help.c:2900 +#: sql_help.c:2976 msgid "parameter" msgstr "parâmetro" -#: sql_help.c:2919 sql_help.c:2920 sql_help.c:3217 +#: sql_help.c:2995 sql_help.c:2996 sql_help.c:3293 msgid "statement" msgstr "comando" -#: sql_help.c:2951 sql_help.c:3191 +#: sql_help.c:3027 sql_help.c:3267 msgid "direction" msgstr "direção" -#: sql_help.c:2953 sql_help.c:3193 +#: sql_help.c:3029 sql_help.c:3269 msgid "where direction can be empty or one of:" msgstr "onde direção pode ser vazio ou um dos:" -#: sql_help.c:2954 sql_help.c:2955 sql_help.c:2956 sql_help.c:2957 -#: sql_help.c:2958 sql_help.c:3194 sql_help.c:3195 sql_help.c:3196 -#: sql_help.c:3197 sql_help.c:3198 sql_help.c:3558 sql_help.c:3560 -#: sql_help.c:3648 sql_help.c:3650 sql_help.c:3797 sql_help.c:3799 -#: sql_help.c:3926 sql_help.c:3928 sql_help.c:3991 sql_help.c:3993 +#: sql_help.c:3030 sql_help.c:3031 sql_help.c:3032 sql_help.c:3033 +#: sql_help.c:3034 sql_help.c:3270 sql_help.c:3271 sql_help.c:3272 +#: sql_help.c:3273 sql_help.c:3274 sql_help.c:3634 sql_help.c:3636 +#: sql_help.c:3724 sql_help.c:3726 sql_help.c:3873 sql_help.c:3875 +#: sql_help.c:4002 sql_help.c:4004 sql_help.c:4067 sql_help.c:4069 msgid "count" msgstr "contador" -#: sql_help.c:3038 sql_help.c:3370 +#: sql_help.c:3114 sql_help.c:3446 msgid "sequence_name" msgstr "nome_sequência" -#: sql_help.c:3051 sql_help.c:3383 +#: sql_help.c:3127 sql_help.c:3459 msgid "arg_name" msgstr "nome_argumento" -#: sql_help.c:3052 sql_help.c:3384 +#: sql_help.c:3128 sql_help.c:3460 msgid "arg_type" msgstr "tipo_argumento" -#: sql_help.c:3057 sql_help.c:3389 +#: sql_help.c:3133 sql_help.c:3465 msgid "loid" msgstr "loid" -#: sql_help.c:3080 -#, fuzzy -#| msgid "remove a schema" +#: sql_help.c:3156 msgid "remote_schema" msgstr "esquema_remoto" -#: sql_help.c:3083 -#, fuzzy -#| msgid "local socket" +#: sql_help.c:3159 msgid "local_schema" msgstr "esquema_local" -#: sql_help.c:3117 +#: sql_help.c:3193 msgid "conflict_target" -msgstr "" +msgstr "alvo_conflito" -#: sql_help.c:3118 -#, fuzzy -#| msgid "canonical_function" +#: sql_help.c:3194 msgid "conflict_action" -msgstr "função_canônica" +msgstr "ação_conflito" -#: sql_help.c:3121 -#, fuzzy -#| msgid "where from_item can be one of:" +#: sql_help.c:3197 msgid "where conflict_target can be one of:" -msgstr "onde item_from pode ser um dos:" +msgstr "onde alvo_conflito pode ser um dos:" -#: sql_help.c:3122 -#, fuzzy -#| msgid "column_name" -msgid "column_name_index" -msgstr "nome_coluna" +#: sql_help.c:3198 +msgid "index_column_name" +msgstr "nome_coluna_índice" -#: sql_help.c:3123 -#, fuzzy -#| msgid "expression" -msgid "expression_index" -msgstr "expressão" +#: sql_help.c:3199 +msgid "index_expression" +msgstr "expressão_índice" -#: sql_help.c:3126 -#, fuzzy -#| msgid "predicate" +#: sql_help.c:3202 msgid "index_predicate" msgstr "predicado_índice" -#: sql_help.c:3128 -#, fuzzy -#| msgid "where action is one of:" +#: sql_help.c:3204 msgid "and conflict_action is one of:" -msgstr "onde ação é uma das:" +msgstr "onde ação_conflito é uma das:" -#: sql_help.c:3134 sql_help.c:3892 +#: sql_help.c:3210 sql_help.c:3968 msgid "sub-SELECT" msgstr "sub-SELECT" -#: sql_help.c:3143 sql_help.c:3206 sql_help.c:3868 +#: sql_help.c:3219 sql_help.c:3282 sql_help.c:3944 msgid "channel" msgstr "canal" -#: sql_help.c:3165 +#: sql_help.c:3241 msgid "lockmode" msgstr "modo_bloqueio" -#: sql_help.c:3166 +#: sql_help.c:3242 msgid "where lockmode is one of:" msgstr "onde modo_bloqueio é um dos:" -#: sql_help.c:3207 +#: sql_help.c:3283 msgid "payload" msgstr "informação" -#: sql_help.c:3234 +#: sql_help.c:3310 msgid "old_role" msgstr "role_antiga" -#: sql_help.c:3235 +#: sql_help.c:3311 msgid "new_role" msgstr "nova_role" -#: sql_help.c:3260 sql_help.c:3421 sql_help.c:3429 +#: sql_help.c:3336 sql_help.c:3497 sql_help.c:3505 msgid "savepoint_name" msgstr "nome_ponto_de_salvamento" -#: sql_help.c:3462 +#: sql_help.c:3538 msgid "provider" msgstr "fornecedor" -#: sql_help.c:3549 sql_help.c:3591 sql_help.c:3593 sql_help.c:3639 -#: sql_help.c:3788 sql_help.c:3830 sql_help.c:3832 sql_help.c:3982 -#: sql_help.c:4024 sql_help.c:4026 +#: sql_help.c:3625 sql_help.c:3667 sql_help.c:3669 sql_help.c:3715 +#: sql_help.c:3864 sql_help.c:3906 sql_help.c:3908 sql_help.c:4058 +#: sql_help.c:4100 sql_help.c:4102 msgid "from_item" msgstr "item_from" -#: sql_help.c:3551 sql_help.c:3603 sql_help.c:3790 sql_help.c:3842 -#: sql_help.c:3984 sql_help.c:4036 -#, fuzzy -#| msgid "wrong element type" +#: sql_help.c:3627 sql_help.c:3679 sql_help.c:3866 sql_help.c:3918 +#: sql_help.c:4060 sql_help.c:4112 msgid "grouping_element" msgstr "elemento_agrupamento" -#: sql_help.c:3553 sql_help.c:3643 sql_help.c:3792 sql_help.c:3986 +#: sql_help.c:3629 sql_help.c:3719 sql_help.c:3868 sql_help.c:4062 msgid "window_name" msgstr "nome_deslizante" -#: sql_help.c:3554 sql_help.c:3644 sql_help.c:3793 sql_help.c:3987 +#: sql_help.c:3630 sql_help.c:3720 sql_help.c:3869 sql_help.c:4063 msgid "window_definition" msgstr "definição_deslizante" -#: sql_help.c:3555 sql_help.c:3569 sql_help.c:3607 sql_help.c:3645 -#: sql_help.c:3794 sql_help.c:3808 sql_help.c:3846 sql_help.c:3988 -#: sql_help.c:4002 sql_help.c:4040 +#: sql_help.c:3631 sql_help.c:3645 sql_help.c:3683 sql_help.c:3721 +#: sql_help.c:3870 sql_help.c:3884 sql_help.c:3922 sql_help.c:4064 +#: sql_help.c:4078 sql_help.c:4116 msgid "select" msgstr "seleção" -#: sql_help.c:3562 sql_help.c:3801 sql_help.c:3995 +#: sql_help.c:3638 sql_help.c:3877 sql_help.c:4071 msgid "where from_item can be one of:" msgstr "onde item_from pode ser um dos:" -#: sql_help.c:3565 sql_help.c:3571 sql_help.c:3574 sql_help.c:3578 -#: sql_help.c:3590 sql_help.c:3804 sql_help.c:3810 sql_help.c:3813 -#: sql_help.c:3817 sql_help.c:3829 sql_help.c:3998 sql_help.c:4004 -#: sql_help.c:4007 sql_help.c:4011 sql_help.c:4023 +#: sql_help.c:3641 sql_help.c:3647 sql_help.c:3650 sql_help.c:3654 +#: sql_help.c:3666 sql_help.c:3880 sql_help.c:3886 sql_help.c:3889 +#: sql_help.c:3893 sql_help.c:3905 sql_help.c:4074 sql_help.c:4080 +#: sql_help.c:4083 sql_help.c:4087 sql_help.c:4099 msgid "column_alias" msgstr "aliás_coluna" -#: sql_help.c:3566 sql_help.c:3805 sql_help.c:3999 -#, fuzzy -#| msgid "index_method" +#: sql_help.c:3642 sql_help.c:3881 sql_help.c:4075 msgid "sampling_method" msgstr "método_amostragem" -#: sql_help.c:3567 sql_help.c:3576 sql_help.c:3580 sql_help.c:3584 -#: sql_help.c:3587 sql_help.c:3806 sql_help.c:3815 sql_help.c:3819 -#: sql_help.c:3823 sql_help.c:3826 sql_help.c:4000 sql_help.c:4009 -#: sql_help.c:4013 sql_help.c:4017 sql_help.c:4020 +#: sql_help.c:3643 sql_help.c:3652 sql_help.c:3656 sql_help.c:3660 +#: sql_help.c:3663 sql_help.c:3882 sql_help.c:3891 sql_help.c:3895 +#: sql_help.c:3899 sql_help.c:3902 sql_help.c:4076 sql_help.c:4085 +#: sql_help.c:4089 sql_help.c:4093 sql_help.c:4096 msgid "argument" msgstr "argumento" -#: sql_help.c:3568 sql_help.c:3807 sql_help.c:4001 +#: sql_help.c:3644 sql_help.c:3883 sql_help.c:4077 msgid "seed" msgstr "semente" -#: sql_help.c:3572 sql_help.c:3605 sql_help.c:3811 sql_help.c:3844 -#: sql_help.c:4005 sql_help.c:4038 +#: sql_help.c:3648 sql_help.c:3681 sql_help.c:3887 sql_help.c:3920 +#: sql_help.c:4081 sql_help.c:4114 msgid "with_query_name" msgstr "nome_consulta_with" -#: sql_help.c:3582 sql_help.c:3585 sql_help.c:3588 sql_help.c:3821 -#: sql_help.c:3824 sql_help.c:3827 sql_help.c:4015 sql_help.c:4018 -#: sql_help.c:4021 +#: sql_help.c:3658 sql_help.c:3661 sql_help.c:3664 sql_help.c:3897 +#: sql_help.c:3900 sql_help.c:3903 sql_help.c:4091 sql_help.c:4094 +#: sql_help.c:4097 msgid "column_definition" msgstr "definição_coluna" -#: sql_help.c:3592 sql_help.c:3831 sql_help.c:4025 +#: sql_help.c:3668 sql_help.c:3907 sql_help.c:4101 msgid "join_type" msgstr "tipo_junção" -#: sql_help.c:3594 sql_help.c:3833 sql_help.c:4027 +#: sql_help.c:3670 sql_help.c:3909 sql_help.c:4103 msgid "join_condition" msgstr "condição_junção" -#: sql_help.c:3595 sql_help.c:3834 sql_help.c:4028 +#: sql_help.c:3671 sql_help.c:3910 sql_help.c:4104 msgid "join_column" msgstr "coluna_junção" -#: sql_help.c:3596 sql_help.c:3835 sql_help.c:4029 -#, fuzzy -#| msgid "where event can be one of:" +#: sql_help.c:3672 sql_help.c:3911 sql_help.c:4105 msgid "and grouping_element can be one of:" msgstr "onde elemento_agrupamento pode ser um dos:" -#: sql_help.c:3604 sql_help.c:3843 sql_help.c:4037 +#: sql_help.c:3680 sql_help.c:3919 sql_help.c:4113 msgid "and with_query is:" msgstr "e consulta_with é:" -#: sql_help.c:3608 sql_help.c:3847 sql_help.c:4041 +#: sql_help.c:3684 sql_help.c:3923 sql_help.c:4117 msgid "values" msgstr "valores" -#: sql_help.c:3609 sql_help.c:3848 sql_help.c:4042 +#: sql_help.c:3685 sql_help.c:3924 sql_help.c:4118 msgid "insert" msgstr "inserção" -#: sql_help.c:3610 sql_help.c:3849 sql_help.c:4043 +#: sql_help.c:3686 sql_help.c:3925 sql_help.c:4119 msgid "update" msgstr "atualização" -#: sql_help.c:3611 sql_help.c:3850 sql_help.c:4044 +#: sql_help.c:3687 sql_help.c:3926 sql_help.c:4120 msgid "delete" msgstr "exclusão" -#: sql_help.c:3638 +#: sql_help.c:3714 msgid "new_table" msgstr "nova_tabela" -#: sql_help.c:3663 +#: sql_help.c:3739 msgid "timezone" msgstr "zona_horária" -#: sql_help.c:3708 +#: sql_help.c:3784 msgid "snapshot_id" msgstr "id_snapshot" -#: sql_help.c:3893 +#: sql_help.c:3969 msgid "from_list" msgstr "lista_from" -#: sql_help.c:3924 +#: sql_help.c:4000 msgid "sort_expression" msgstr "expressão_ordenação" -#: sql_help.h:197 sql_help.h:927 +#: sql_help.c:4127 sql_help.c:4867 msgid "abort the current transaction" msgstr "transação atual foi interrompida" -#: sql_help.h:202 +#: sql_help.c:4132 msgid "change the definition of an aggregate function" msgstr "muda a definição de uma função de agregação" -#: sql_help.h:207 +#: sql_help.c:4137 msgid "change the definition of a collation" msgstr "muda a definição de uma ordenação" -#: sql_help.h:212 +#: sql_help.c:4142 msgid "change the definition of a conversion" msgstr "muda a definição de uma conversão" -#: sql_help.h:217 +#: sql_help.c:4147 msgid "change a database" msgstr "muda o banco de dados" -#: sql_help.h:222 +#: sql_help.c:4152 msgid "define default access privileges" msgstr "define privilégios de acesso padrão" -#: sql_help.h:227 +#: sql_help.c:4157 msgid "change the definition of a domain" msgstr "muda a definição de um domínio" -#: sql_help.h:232 +#: sql_help.c:4162 msgid "change the definition of an event trigger" msgstr "muda a definição de um gatilho de eventos" -#: sql_help.h:237 +#: sql_help.c:4167 msgid "change the definition of an extension" msgstr "muda a definição de uma extensão" -#: sql_help.h:242 +#: sql_help.c:4172 msgid "change the definition of a foreign-data wrapper" msgstr "muda a definição de um adaptador de dados externos" -#: sql_help.h:247 +#: sql_help.c:4177 msgid "change the definition of a foreign table" msgstr "muda a definição de uma tabela externa" -#: sql_help.h:252 +#: sql_help.c:4182 msgid "change the definition of a function" msgstr "muda a definição de uma função" -#: sql_help.h:257 +#: sql_help.c:4187 msgid "change role name or membership" msgstr "muda nome da role ou membro" -#: sql_help.h:262 +#: sql_help.c:4192 msgid "change the definition of an index" msgstr "muda a definição de um índice" -#: sql_help.h:267 +#: sql_help.c:4197 msgid "change the definition of a procedural language" msgstr "muda a definição de uma linguagem procedural" -#: sql_help.h:272 +#: sql_help.c:4202 msgid "change the definition of a large object" msgstr "muda a definição de um objeto grande" -#: sql_help.h:277 +#: sql_help.c:4207 msgid "change the definition of a materialized view" msgstr "muda a definição de uma visão materializada" -#: sql_help.h:282 +#: sql_help.c:4212 msgid "change the definition of an operator" msgstr "muda a definição de um operador" -#: sql_help.h:287 +#: sql_help.c:4217 msgid "change the definition of an operator class" msgstr "muda a definição de uma classe de operadores" -#: sql_help.h:292 +#: sql_help.c:4222 msgid "change the definition of an operator family" msgstr "muda a definição de uma família de operadores" -#: sql_help.h:297 -#, fuzzy -msgid "change the definition of a policy" -msgstr "muda a definição de uma política" +#: sql_help.c:4227 +msgid "change the definition of a row level security policy" +msgstr "muda a definição de uma política de segurança a nível de registros" -#: sql_help.h:302 sql_help.h:372 +#: sql_help.c:4232 sql_help.c:4302 msgid "change a database role" msgstr "muda uma role do banco de dados" -#: sql_help.h:307 +#: sql_help.c:4237 msgid "change the definition of a rule" msgstr "muda a definição de uma regra" -#: sql_help.h:312 +#: sql_help.c:4242 msgid "change the definition of a schema" msgstr "muda a definição de um esquema" -#: sql_help.h:317 +#: sql_help.c:4247 msgid "change the definition of a sequence generator" msgstr "muda a definição de um gerador de sequência" -#: sql_help.h:322 +#: sql_help.c:4252 msgid "change the definition of a foreign server" msgstr "muda a definição de um servidor externo" -#: sql_help.h:327 +#: sql_help.c:4257 msgid "change a server configuration parameter" msgstr "muda um parâmetro de configuração do servidor" -#: sql_help.h:332 +#: sql_help.c:4262 msgid "change the definition of a table" msgstr "muda a definição de uma tabela" -#: sql_help.h:337 +#: sql_help.c:4267 msgid "change the definition of a tablespace" msgstr "muda a definição de uma tablespace" -#: sql_help.h:342 +#: sql_help.c:4272 msgid "change the definition of a text search configuration" msgstr "muda a definição de uma configuração de busca textual" -#: sql_help.h:347 +#: sql_help.c:4277 msgid "change the definition of a text search dictionary" msgstr "muda a definição de um dicionário de busca textual" -#: sql_help.h:352 +#: sql_help.c:4282 msgid "change the definition of a text search parser" msgstr "muda a definição de um analisador de busca textual" -#: sql_help.h:357 +#: sql_help.c:4287 msgid "change the definition of a text search template" msgstr "muda a definição de um modelo de busca textual" -#: sql_help.h:362 +#: sql_help.c:4292 msgid "change the definition of a trigger" msgstr "muda a definição de um gatilho" -#: sql_help.h:367 +#: sql_help.c:4297 msgid "change the definition of a type" msgstr "muda a definição de um tipo" -#: sql_help.h:377 +#: sql_help.c:4307 msgid "change the definition of a user mapping" msgstr "muda a definição de um mapeamento de usuários" -#: sql_help.h:382 +#: sql_help.c:4312 msgid "change the definition of a view" msgstr "muda a definição de uma visão" -#: sql_help.h:387 +#: sql_help.c:4317 msgid "collect statistics about a database" msgstr "coleta estatísticas sobre o banco de dados" -#: sql_help.h:392 sql_help.h:992 +#: sql_help.c:4322 sql_help.c:4932 msgid "start a transaction block" msgstr "inicia um bloco de transação" -#: sql_help.h:397 +#: sql_help.c:4327 msgid "force a transaction log checkpoint" msgstr "força ponto de controle no log de transação" -#: sql_help.h:402 +#: sql_help.c:4332 msgid "close a cursor" msgstr "fecha um cursor" -#: sql_help.h:407 +#: sql_help.c:4337 msgid "cluster a table according to an index" msgstr "agrupa uma tabela de acordo com um índice" -#: sql_help.h:412 +#: sql_help.c:4342 msgid "define or change the comment of an object" msgstr "define ou muda um comentário de um objeto" -#: sql_help.h:417 sql_help.h:827 +#: sql_help.c:4347 sql_help.c:4767 msgid "commit the current transaction" msgstr "efetiva a transação atual" -#: sql_help.h:422 +#: sql_help.c:4352 msgid "commit a transaction that was earlier prepared for two-phase commit" msgstr "efetiva uma transação que foi anteriormente preparada para efetivação em duas fases" -#: sql_help.h:427 +#: sql_help.c:4357 msgid "copy data between a file and a table" msgstr "copia dados de um arquivo para uma tabela" -#: sql_help.h:432 +#: sql_help.c:4362 +msgid "define a new access method" +msgstr "define um novo método de acesso" + +#: sql_help.c:4367 msgid "define a new aggregate function" msgstr "define um nova função de agregação" -#: sql_help.h:437 +#: sql_help.c:4372 msgid "define a new cast" msgstr "define uma nova conversão de tipo" -#: sql_help.h:442 +#: sql_help.c:4377 msgid "define a new collation" msgstr "define uma nova ordenação" -#: sql_help.h:447 +#: sql_help.c:4382 msgid "define a new encoding conversion" msgstr "define uma nova conversão de codificação" -#: sql_help.h:452 +#: sql_help.c:4387 msgid "create a new database" msgstr "cria um novo banco de dados" -#: sql_help.h:457 +#: sql_help.c:4392 msgid "define a new domain" msgstr "define um novo domínio" -#: sql_help.h:462 +#: sql_help.c:4397 msgid "define a new event trigger" msgstr "define um novo gatilho de eventos" -#: sql_help.h:467 +#: sql_help.c:4402 msgid "install an extension" msgstr "instala uma extensão" -#: sql_help.h:472 +#: sql_help.c:4407 msgid "define a new foreign-data wrapper" msgstr "define um novo adaptador de dados externos" -#: sql_help.h:477 +#: sql_help.c:4412 msgid "define a new foreign table" msgstr "define uma nova tabela externa" -#: sql_help.h:482 +#: sql_help.c:4417 msgid "define a new function" msgstr "define uma nova função" -#: sql_help.h:487 sql_help.h:527 sql_help.h:602 +#: sql_help.c:4422 sql_help.c:4462 sql_help.c:4537 msgid "define a new database role" msgstr "define uma nova role do banco de dados" -#: sql_help.h:492 +#: sql_help.c:4427 msgid "define a new index" msgstr "define um novo índice" -#: sql_help.h:497 +#: sql_help.c:4432 msgid "define a new procedural language" msgstr "define uma nova linguagem procedural" -#: sql_help.h:502 +#: sql_help.c:4437 msgid "define a new materialized view" msgstr "define uma nova visão materializada" -#: sql_help.h:507 +#: sql_help.c:4442 msgid "define a new operator" msgstr "define um novo operador" -#: sql_help.h:512 +#: sql_help.c:4447 msgid "define a new operator class" msgstr "define uma nova classe de operadores" -#: sql_help.h:517 +#: sql_help.c:4452 msgid "define a new operator family" msgstr "define uma nova família de operadores" -#: sql_help.h:522 -#, fuzzy -#| msgid "define a new foreign table" -msgid "define a new policy for a table" -msgstr "define uma nova política para uma tabela" +#: sql_help.c:4457 +msgid "define a new row level security policy for a table" +msgstr "define uma nova política de segurança a nível de registros para uma tabela" -#: sql_help.h:532 +#: sql_help.c:4467 msgid "define a new rewrite rule" msgstr "define uma nova regra de reescrita" -#: sql_help.h:537 +#: sql_help.c:4472 msgid "define a new schema" msgstr "define um novo esquema" -#: sql_help.h:542 +#: sql_help.c:4477 msgid "define a new sequence generator" msgstr "define um novo gerador de sequência" -#: sql_help.h:547 +#: sql_help.c:4482 msgid "define a new foreign server" msgstr "define um novo servidor externo" -#: sql_help.h:552 +#: sql_help.c:4487 msgid "define a new table" msgstr "define uma nova tabela" -#: sql_help.h:557 sql_help.h:957 +#: sql_help.c:4492 sql_help.c:4897 msgid "define a new table from the results of a query" msgstr "cria uma nova tabela a partir dos resultados de uma consulta" -#: sql_help.h:562 +#: sql_help.c:4497 msgid "define a new tablespace" msgstr "define uma nova tablespace" -#: sql_help.h:567 +#: sql_help.c:4502 msgid "define a new text search configuration" msgstr "define uma nova configuração de busca textual" -#: sql_help.h:572 +#: sql_help.c:4507 msgid "define a new text search dictionary" msgstr "define um novo dicionário de busca textual" -#: sql_help.h:577 +#: sql_help.c:4512 msgid "define a new text search parser" msgstr "define um novo analisador de busca textual" -#: sql_help.h:582 +#: sql_help.c:4517 msgid "define a new text search template" msgstr "define um novo modelo de busca textual" -#: sql_help.h:587 -#, fuzzy -#| msgid "define a new operator" +#: sql_help.c:4522 msgid "define a new transform" -msgstr "define um novo transformador" +msgstr "define uma nova transformação" -#: sql_help.h:592 +#: sql_help.c:4527 msgid "define a new trigger" msgstr "define um novo gatilho" -#: sql_help.h:597 +#: sql_help.c:4532 msgid "define a new data type" msgstr "define um novo tipo de dado" -#: sql_help.h:607 +#: sql_help.c:4542 msgid "define a new mapping of a user to a foreign server" msgstr "define um novo mapeamento de um usuário para um servidor externo" -#: sql_help.h:612 +#: sql_help.c:4547 msgid "define a new view" msgstr "define uma nova visão" -#: sql_help.h:617 +#: sql_help.c:4552 msgid "deallocate a prepared statement" msgstr "remove um comando preparado" -#: sql_help.h:622 +#: sql_help.c:4557 msgid "define a cursor" msgstr "define um cursor" -#: sql_help.h:627 +#: sql_help.c:4562 msgid "delete rows of a table" msgstr "apaga registros de uma tabela" -#: sql_help.h:632 +#: sql_help.c:4567 msgid "discard session state" msgstr "descarta estado da sessão" -#: sql_help.h:637 +#: sql_help.c:4572 msgid "execute an anonymous code block" msgstr "executa um bloco de código anônimo" -#: sql_help.h:642 +#: sql_help.c:4577 +msgid "remove an access method" +msgstr "remove um método de acesso" + +#: sql_help.c:4582 msgid "remove an aggregate function" msgstr "remove uma função de agregação" -#: sql_help.h:647 +#: sql_help.c:4587 msgid "remove a cast" msgstr "remove uma conversão de tipo" -#: sql_help.h:652 +#: sql_help.c:4592 msgid "remove a collation" msgstr "remove uma ordenação" -#: sql_help.h:657 +#: sql_help.c:4597 msgid "remove a conversion" msgstr "remove uma conversão" -#: sql_help.h:662 +#: sql_help.c:4602 msgid "remove a database" msgstr "remove um banco de dados" -#: sql_help.h:667 +#: sql_help.c:4607 msgid "remove a domain" msgstr "remove um domínio" -#: sql_help.h:672 +#: sql_help.c:4612 msgid "remove an event trigger" msgstr "remove um gatilho de eventos" -#: sql_help.h:677 +#: sql_help.c:4617 msgid "remove an extension" msgstr "remove uma extensão" -#: sql_help.h:682 +#: sql_help.c:4622 msgid "remove a foreign-data wrapper" msgstr "remove um adaptador de dados externos" -#: sql_help.h:687 +#: sql_help.c:4627 msgid "remove a foreign table" msgstr "remove uma tabela externa" -#: sql_help.h:692 +#: sql_help.c:4632 msgid "remove a function" msgstr "remove uma função" -#: sql_help.h:697 sql_help.h:742 sql_help.h:812 +#: sql_help.c:4637 sql_help.c:4682 sql_help.c:4752 msgid "remove a database role" msgstr "remove uma role do banco de dados" -#: sql_help.h:702 +#: sql_help.c:4642 msgid "remove an index" msgstr "remove um índice" -#: sql_help.h:707 +#: sql_help.c:4647 msgid "remove a procedural language" msgstr "remove uma linguagem procedural" -#: sql_help.h:712 +#: sql_help.c:4652 msgid "remove a materialized view" msgstr "remove uma visão materializada" -#: sql_help.h:717 +#: sql_help.c:4657 msgid "remove an operator" msgstr "remove um operador" -#: sql_help.h:722 +#: sql_help.c:4662 msgid "remove an operator class" msgstr "remove uma classe de operadores" -#: sql_help.h:727 +#: sql_help.c:4667 msgid "remove an operator family" msgstr "remove uma família de operadores" -#: sql_help.h:732 +#: sql_help.c:4672 msgid "remove database objects owned by a database role" msgstr "remove objetos do banco de dados cujo dono é uma role do banco de dados" -#: sql_help.h:737 -#, fuzzy -#| msgid "remove a foreign table" -msgid "remove a policy from a table" -msgstr "remove uma política de uma tabela" +#: sql_help.c:4677 +msgid "remove a row level security policy from a table" +msgstr "remove uma política de segurança a nível de registros de uma tabela" -#: sql_help.h:747 +#: sql_help.c:4687 msgid "remove a rewrite rule" msgstr "remove uma regra de reescrita" -#: sql_help.h:752 +#: sql_help.c:4692 msgid "remove a schema" msgstr "remove um esquema" -#: sql_help.h:757 +#: sql_help.c:4697 msgid "remove a sequence" msgstr "remove uma sequência" -#: sql_help.h:762 +#: sql_help.c:4702 msgid "remove a foreign server descriptor" msgstr "remove um descritor de servidor externo" -#: sql_help.h:767 +#: sql_help.c:4707 msgid "remove a table" msgstr "remove uma tabela" -#: sql_help.h:772 +#: sql_help.c:4712 msgid "remove a tablespace" msgstr "remove uma tablespace" -#: sql_help.h:777 +#: sql_help.c:4717 msgid "remove a text search configuration" msgstr "remove uma configuração de busca textual" -#: sql_help.h:782 +#: sql_help.c:4722 msgid "remove a text search dictionary" msgstr "remove um dicionário de busca textual" -#: sql_help.h:787 +#: sql_help.c:4727 msgid "remove a text search parser" msgstr "remove um analisador de busca textual" -#: sql_help.h:792 +#: sql_help.c:4732 msgid "remove a text search template" msgstr "remove um modelo de busca textual" -#: sql_help.h:797 -#, fuzzy -#| msgid "remove an operator" +#: sql_help.c:4737 msgid "remove a transform" -msgstr "remove um transformador" +msgstr "remove uma transformação" -#: sql_help.h:802 +#: sql_help.c:4742 msgid "remove a trigger" msgstr "remove um gatilho" -#: sql_help.h:807 +#: sql_help.c:4747 msgid "remove a data type" msgstr "remove um tipo de dado" -#: sql_help.h:817 +#: sql_help.c:4757 msgid "remove a user mapping for a foreign server" msgstr "remove um mapeamento de usuários para um servidor externo" -#: sql_help.h:822 +#: sql_help.c:4762 msgid "remove a view" msgstr "remove uma visão" -#: sql_help.h:832 +#: sql_help.c:4772 msgid "execute a prepared statement" msgstr "executa um comando preparado" -#: sql_help.h:837 +#: sql_help.c:4777 msgid "show the execution plan of a statement" msgstr "mostra o plano de execução de um comando" -#: sql_help.h:842 +#: sql_help.c:4782 msgid "retrieve rows from a query using a cursor" msgstr "recupera registros de uma consulta utilizando um cursor" -#: sql_help.h:847 +#: sql_help.c:4787 msgid "define access privileges" msgstr "define privilégios de acesso" -#: sql_help.h:852 -#, fuzzy -#| msgid "change the definition of a foreign server" +#: sql_help.c:4792 msgid "import table definitions from a foreign server" msgstr "importa definições de tabelas de um servidor externo" -#: sql_help.h:857 +#: sql_help.c:4797 msgid "create new rows in a table" msgstr "cria novos registros em uma tabela" -#: sql_help.h:862 +#: sql_help.c:4802 msgid "listen for a notification" msgstr "espera por uma notificação" -#: sql_help.h:867 +#: sql_help.c:4807 msgid "load a shared library file" msgstr "carrega um arquivo de biblioteca compartilhada" -#: sql_help.h:872 +#: sql_help.c:4812 msgid "lock a table" msgstr "bloqueia uma tabela" -#: sql_help.h:877 +#: sql_help.c:4817 msgid "position a cursor" msgstr "posiciona um cursor" -#: sql_help.h:882 +#: sql_help.c:4822 msgid "generate a notification" msgstr "gera uma notificação" -#: sql_help.h:887 +#: sql_help.c:4827 msgid "prepare a statement for execution" msgstr "prepara um comando para execução" -#: sql_help.h:892 +#: sql_help.c:4832 msgid "prepare the current transaction for two-phase commit" msgstr "prepara a transação atual para efetivação em duas fases" -#: sql_help.h:897 +#: sql_help.c:4837 msgid "change the ownership of database objects owned by a database role" msgstr "muda o dono dos objetos do banco de dados cujo dono é uma role do banco de dados" -#: sql_help.h:902 +#: sql_help.c:4842 msgid "replace the contents of a materialized view" msgstr "substitui o conteúdo de uma visão materializada" -#: sql_help.h:907 +#: sql_help.c:4847 msgid "rebuild indexes" msgstr "reconstrói índices" -#: sql_help.h:912 +#: sql_help.c:4852 msgid "destroy a previously defined savepoint" msgstr "destrói um ponto de salvamento definido anteriormente" -#: sql_help.h:917 +#: sql_help.c:4857 msgid "restore the value of a run-time parameter to the default value" msgstr "restaura o valor do parâmetro em tempo de execução para o valor padrão" -#: sql_help.h:922 +#: sql_help.c:4862 msgid "remove access privileges" msgstr "remove privilégios de acesso" -#: sql_help.h:932 +#: sql_help.c:4872 msgid "cancel a transaction that was earlier prepared for two-phase commit" msgstr "cancela uma transação que foi anteriormente preparada para efetivação em duas fases" -#: sql_help.h:937 +#: sql_help.c:4877 msgid "roll back to a savepoint" msgstr "desfaz modificações de um ponto de salvamento" -#: sql_help.h:942 +#: sql_help.c:4882 msgid "define a new savepoint within the current transaction" msgstr "define um novo ponto de salvamento na transação atual" -#: sql_help.h:947 +#: sql_help.c:4887 msgid "define or change a security label applied to an object" msgstr "define ou muda um rótulo de segurança aplicado a um objeto" -#: sql_help.h:952 sql_help.h:997 sql_help.h:1027 +#: sql_help.c:4892 sql_help.c:4937 sql_help.c:4967 msgid "retrieve rows from a table or view" msgstr "recupera registros de uma tabela ou visão" -#: sql_help.h:962 +#: sql_help.c:4902 msgid "change a run-time parameter" msgstr "muda um parâmetro em tempo de execução" -#: sql_help.h:967 +#: sql_help.c:4907 msgid "set constraint check timing for the current transaction" msgstr "define o momento de verificação da restrição na transação atual" -#: sql_help.h:972 +#: sql_help.c:4912 msgid "set the current user identifier of the current session" msgstr "define o identificador do usuário atual nesta sessão" -#: sql_help.h:977 +#: sql_help.c:4917 msgid "set the session user identifier and the current user identifier of the current session" msgstr "define o identificador da sessão do usuário e o identificador do usuário na sessão atual" -#: sql_help.h:982 +#: sql_help.c:4922 msgid "set the characteristics of the current transaction" msgstr "define as características da transação atual" -#: sql_help.h:987 +#: sql_help.c:4927 msgid "show the value of a run-time parameter" msgstr "mostra o valor de um parâmetro em tempo de execução" -#: sql_help.h:1002 +#: sql_help.c:4942 msgid "empty a table or set of tables" msgstr "esvazia uma tabela ou um conjunto de tabelas" -#: sql_help.h:1007 +#: sql_help.c:4947 msgid "stop listening for a notification" msgstr "para de esperar por notificação" -#: sql_help.h:1012 +#: sql_help.c:4952 msgid "update rows of a table" msgstr "atualiza registros de uma tabela" -#: sql_help.h:1017 +#: sql_help.c:4957 msgid "garbage-collect and optionally analyze a database" msgstr "coleta lixo e opcionalmente analisa um banco de dados" -#: sql_help.h:1022 +#: sql_help.c:4962 msgid "compute a set of rows" msgstr "computa um conjunto de registros" -#: startup.c:177 +#: startup.c:189 #, c-format msgid "%s: -1 can only be used in non-interactive mode\n" msgstr "%s: -1 só pode ser utilizado em modo não interativo\n" -#: startup.c:277 +#: startup.c:289 #, c-format msgid "%s: could not open log file \"%s\": %s\n" msgstr "%s: não pôde abrir arquivo de log \"%s\": %s\n" -#: startup.c:339 +#: startup.c:389 #, c-format msgid "" "Type \"help\" for help.\n" @@ -5123,42 +5258,43 @@ msgstr "" "Digite \"help\" para ajuda.\n" "\n" -#: startup.c:486 +#: startup.c:538 #, c-format msgid "%s: could not set printing parameter \"%s\"\n" msgstr "%s: não pôde definir parâmetro de exibição \"%s\"\n" -#: startup.c:526 +#: startup.c:578 #, c-format msgid "%s: could not delete variable \"%s\"\n" msgstr "%s: não pôde apagar variável \"%s\"\n" -#: startup.c:536 +#: startup.c:588 #, c-format msgid "%s: could not set variable \"%s\"\n" msgstr "%s: não pôde definir variável \"%s\"\n" -#: startup.c:596 +#: startup.c:648 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Tente \"%s --help\" para obter informações adicionais.\n" -#: startup.c:613 +#: startup.c:665 #, c-format msgid "%s: warning: extra command-line argument \"%s\" ignored\n" msgstr "%s: aviso: argumento extra de linha de comando \"%s\" ignorado\n" -#: startup.c:635 +#: startup.c:714 #, c-format msgid "%s: could not find own program executable\n" msgstr "%s: não pôde encontrar executável\n" -#: startup.c:757 startup.c:804 startup.c:825 startup.c:862 variables.c:121 +#: startup.c:836 startup.c:883 startup.c:904 startup.c:941 startup.c:963 +#: variables.c:121 #, c-format msgid "unrecognized value \"%s\" for \"%s\"; assuming \"%s\"\n" msgstr "valor desconhecido \"%s\" para \"%s\"; definindo \"%s\"\n" -#: tab-complete.c:4566 +#: tab-complete.c:3740 #, c-format msgid "" "tab completion query failed: %s\n" diff --git a/src/bin/psql/po/ru.po b/src/bin/psql/po/ru.po index f5304ec364..5283a8e198 100644 --- a/src/bin/psql/po/ru.po +++ b/src/bin/psql/po/ru.po @@ -4,14 +4,14 @@ # Serguei A. Mokhov , 2001-2005. # Oleg Bartunov , 2004-2005. # Sergey Burladyan , 2012. -# Alexander Lakhin , 2012-2016. +# Alexander Lakhin , 2012-2017. # msgid "" msgstr "" "Project-Id-Version: psql (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-20 18:13+0000\n" -"PO-Revision-Date: 2016-09-20 12:00+0300\n" +"POT-Creation-Date: 2017-08-17 17:52+0000\n" +"PO-Revision-Date: 2017-05-27 15:09+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -125,24 +125,24 @@ msgstr[0] "(%lu Ñтрока)" msgstr[1] "(%lu Ñтроки)" msgstr[2] "(%lu Ñтрок)" -#: ../../fe_utils/print.c:2906 +#: ../../fe_utils/print.c:2914 #, c-format msgid "Interrupted\n" msgstr "Прервано\n" -#: ../../fe_utils/print.c:2970 +#: ../../fe_utils/print.c:2978 #, c-format msgid "Cannot add header to table content: column count of %d exceeded.\n" msgstr "" "Ошибка Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° таблицы: превышен предел чиÑла Ñтолбцов (%d).\n" -#: ../../fe_utils/print.c:3010 +#: ../../fe_utils/print.c:3018 #, c-format msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" msgstr "" "Ошибка Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñчейки в таблицу: превышен предел чиÑла Ñчеек (%d).\n" -#: ../../fe_utils/print.c:3259 +#: ../../fe_utils/print.c:3267 #, c-format msgid "invalid output format (internal error): %d" msgstr "неверный формат вывода (внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°): %d" @@ -235,7 +235,7 @@ msgstr "" "перекодировки\n" #: command.c:871 command.c:1962 command.c:3649 common.c:153 common.c:200 -#: common.c:497 common.c:1190 common.c:1218 common.c:1319 copy.c:489 copy.c:699 +#: common.c:497 common.c:1190 common.c:1218 common.c:1319 copy.c:489 copy.c:709 #: large_obj.c:156 large_obj.c:191 large_obj.c:253 #, c-format msgid "%s" @@ -318,7 +318,7 @@ msgstr "требуетÑÑ Ð¸Ð¼Ñ Ð¿Ñ€ÐµÐ´ÑтавлениÑ\n" #: command.c:1549 msgid "Timing is on." -msgstr "Секундомер включен." +msgstr "Секундомер включён." #: command.c:1551 msgid "Timing is off." @@ -667,12 +667,12 @@ msgstr "\\watch Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ñ Ð¿ÑƒÑтым запро #: command.c:3186 #, c-format msgid "%s\t%s (every %gs)\n" -msgstr "%s\t%s (обновление: %gÑ)\n" +msgstr "%s\t%s (обновление: %g Ñ)\n" #: command.c:3189 #, c-format msgid "%s (every %gs)\n" -msgstr "%s (обновление: %gÑ)\n" +msgstr "%s (обновление: %g Ñ)\n" #: command.c:3243 command.c:3250 common.c:559 common.c:566 common.c:1173 #, c-format @@ -856,16 +856,16 @@ msgstr "отменено пользователем" #: copy.c:542 msgid "" "Enter data to be copied followed by a newline.\n" -"End with a backslash and a period on a line by itself." +"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:695 +#: copy.c:705 msgid "trying to exit copy mode" msgstr "попытка выйти из режима копированиÑ" @@ -901,7 +901,7 @@ msgstr "" msgid "\\crosstabview: maximum number of columns (%d) exceeded\n" msgstr "\\crosstabview: превышен макÑимум чиÑла Ñтолбцов (%d)\n" -#: crosstabview.c:398 +#: crosstabview.c:399 #, c-format msgid "" "\\crosstabview: query result contains multiple data values for row \"%s\", " @@ -910,17 +910,17 @@ msgstr "" "\\crosstabview: в результатах запроÑа ÑодержитÑÑ Ð½ÐµÑколько значений данных " "Ð´Ð»Ñ Ñтроки \"%s\", Ñтолбца \"%s\"\n" -#: crosstabview.c:646 +#: crosstabview.c:647 #, c-format msgid "\\crosstabview: column number %d is out of range 1..%d\n" msgstr "\\crosstabview: номер Ñтолбца %d выходит за рамки диапазона 1..%d\n" -#: crosstabview.c:671 +#: crosstabview.c:672 #, c-format msgid "\\crosstabview: ambiguous column name: \"%s\"\n" msgstr "\\crosstabview: неоднозначное Ð¸Ð¼Ñ Ñтолбца: \"%s\"\n" -#: crosstabview.c:679 +#: crosstabview.c:680 #, c-format msgid "\\crosstabview: column name not found: \"%s\"\n" msgstr "\\crosstabview: Ð¸Ð¼Ñ Ñтолбца не найдено: \"%s\"\n" @@ -1026,6 +1026,7 @@ msgstr "\\df принимает в качеÑтве параметров тол msgid "\\df does not take a \"w\" option with server version %s\n" msgstr "\\df не поддерживает параметр \"w\" Ñ Ñервером верÑии %s\n" +# well-spelled: агр #. translator: "agg" is short for "aggregate" #: describe.c:356 describe.c:402 describe.c:419 msgid "agg" @@ -1045,7 +1046,7 @@ msgstr "обычнаÑ" #: describe.c:432 msgid "immutable" -msgstr "поÑтоÑÐ½Ð½Ð°Ñ " +msgstr "поÑтоÑннаÑ" #: describe.c:433 msgid "stable" @@ -1314,6 +1315,7 @@ msgstr "Значение" msgid "Definition" msgstr "Определение" +# well-spelled: ОСД #: describe.c:1664 describe.c:4312 describe.c:4396 describe.c:4467 #: describe.c:4531 msgid "FDW Options" @@ -1428,7 +1430,7 @@ msgstr "Правила:" #: describe.c:2282 msgid "Disabled rules:" -msgstr "Отключенные правила:" +msgstr "Отключённые правила:" #: describe.c:2285 msgid "Rules firing always:" @@ -1448,15 +1450,15 @@ msgstr "Триггеры:" #: describe.c:2451 msgid "Disabled user triggers:" -msgstr "Отключенные пользовательÑкие триггеры:" +msgstr "Отключённые пользовательÑкие триггеры:" #: describe.c:2453 msgid "Disabled triggers:" -msgstr "Отключенные триггеры:" +msgstr "Отключённые триггеры:" #: describe.c:2456 msgid "Disabled internal triggers:" -msgstr "Отключенные внутренние триггеры:" +msgstr "Отключённые внутренние триггеры:" #: describe.c:2459 msgid "Triggers firing always:" @@ -1466,6 +1468,17 @@ msgstr "Триггеры, Ñрабатывающие вÑегда:" msgid "Triggers firing on replica only:" msgstr "Триггеры, Ñрабатывающие только в реплике:" +#: describe.c:2519 +#, c-format +msgid "Server: %s" +msgstr "Сервер: %s" + +# well-spelled: ОСД +#: describe.c:2527 +#, c-format +msgid "FDW Options: (%s)" +msgstr "Параметр ОСД: (%s)" + #: describe.c:2541 msgid "Inherits" msgstr "ÐаÑледует" @@ -1600,6 +1613,7 @@ msgstr "СпиÑок параметров" msgid "index" msgstr "индекÑ" +# skip-rule: capital-letter-first #: describe.c:3042 msgid "special" msgstr "Ñпец. отношение" @@ -1704,7 +1718,7 @@ msgstr "отключён" #: describe.c:3417 msgid "Enabled" -msgstr "Включен" +msgstr "Включён" #: describe.c:3418 msgid "Procedure" @@ -2309,6 +2323,7 @@ msgstr "Об ошибках Ñообщайте по адреÑу , 2001, 2009, 2010. +# Dennis Björklund , 2002, 2003, 2004, 2005, 2006, 2017. +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 9.6\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2017-08-06 05:42+0000\n" +"PO-Revision-Date: 2017-08-06 08:10+0200\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" + +#: ../../common/exec.c:127 ../../common/exec.c:241 ../../common/exec.c:284 +#, c-format +msgid "could not identify current directory: %s" +msgstr "kunde inte identifiera aktuell katalog: %s" + +#: ../../common/exec.c:146 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "ogiltig binär \"%s\"" + +#: ../../common/exec.c:195 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "kunde inte läsa binär \"%s\"" + +#: ../../common/exec.c:202 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "kunde inte hitta en \"%s\" att köra" + +#: ../../common/exec.c:257 ../../common/exec.c:293 +#, c-format +msgid "could not change directory to \"%s\": %s" +msgstr "kunde inte byta katalog till \"%s\": %s" + +#: ../../common/exec.c:272 +#, c-format +msgid "could not read symbolic link \"%s\"" +msgstr "kunde inte läsa symbolisk länk \"%s\"" + +#: ../../common/exec.c:523 +#, c-format +msgid "pclose failed: %s" +msgstr "pclose misslyckades: %s" + +#: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 +#: ../../common/fe_memutils.c:98 command.c:342 input.c:227 mainloop.c:80 +#: mainloop.c:261 +#, c-format +msgid "out of memory\n" +msgstr "slut pÃ¥ minne\n" + +#: ../../common/fe_memutils.c:92 +#, c-format +msgid "cannot duplicate null pointer (internal error)\n" +msgstr "kan inte duplicera null-pekare (internt fel)\n" + +#: ../../common/username.c:45 +#, 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:47 command.c:299 +msgid "user does not exist" +msgstr "användaren finns inte" + +#: ../../common/username.c:62 +#, c-format +msgid "user name lookup failure: error code %lu" +msgstr "misslyckad sökning efter användarnamn: felkod %lu" + +#: ../../common/wait_error.c:47 +#, c-format +msgid "command not executable" +msgstr "kommandot är inte körbart" + +#: ../../common/wait_error.c:51 +#, c-format +msgid "command not found" +msgstr "kommandot kan ej hittas" + +#: ../../common/wait_error.c:56 +#, c-format +msgid "child process exited with exit code %d" +msgstr "barnprocess avslutade med kod %d" + +#: ../../common/wait_error.c:63 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "barnprocess terminerades med avbrott 0x%X" + +#: ../../common/wait_error.c:73 +#, c-format +msgid "child process was terminated by signal %s" +msgstr "barnprocess terminerades av signal %s" + +#: ../../common/wait_error.c:77 +#, c-format +msgid "child process was terminated by signal %d" +msgstr "barnprocess terminerades av signal %d" + +#: ../../common/wait_error.c:82 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "barnprocess avslutade med okänd statuskod %d" + +#: ../../fe_utils/print.c:354 +#, c-format +msgid "(%lu row)" +msgid_plural "(%lu rows)" +msgstr[0] "(%lu rad)" +msgstr[1] "(%lu rader)" + +#: ../../fe_utils/print.c:2914 +#, c-format +msgid "Interrupted\n" +msgstr "Avbruten\n" + +#: ../../fe_utils/print.c:2978 +#, 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:3018 +#, 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:3267 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "ogiltigt utdataformat (internt fel): %d" + +#: ../../fe_utils/psqlscan.l:713 +#, c-format +msgid "skipping recursive expansion of variable \"%s\"\n" +msgstr "hoppar över rekursiv expandering av variabeln \"%s\"\n" + +#: command.c:129 +#, c-format +msgid "Invalid command \\%s. Try \\? for help.\n" +msgstr "Ogiltigt kommando \\%s. Försök med \\? för hjälp.\n" + +#: command.c:131 +#, c-format +msgid "invalid command \\%s\n" +msgstr "ogiltigt kommando \\%s\n" + +#: command.c:142 +#, c-format +msgid "\\%s: extra argument \"%s\" ignored\n" +msgstr "\\%s: extra argument \"%s\" ignorerat\n" + +#: command.c:297 +#, c-format +msgid "could not get home directory for user ID %ld: %s\n" +msgstr "kunde inte hämta hemkatalog för användar-ID %ld: %s\n" + +#: command.c:315 +#, c-format +msgid "\\%s: could not change directory to \"%s\": %s\n" +msgstr "\\%s: kunde inte byta katalog till \"%s\": %s\n" + +#: command.c:330 common.c:553 common.c:611 common.c:1144 +#, 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:355 +#, 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\" " +"vid port \"%s\".\n" + +#: command.c:358 +#, 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\" " +"via port \"%s\".\n" + +#: command.c:574 command.c:647 command.c:746 command.c:1584 +#, c-format +msgid "no query buffer\n" +msgstr "ingen frÃ¥gebuffert\n" + +#: command.c:607 command.c:3547 +#, c-format +msgid "invalid line number: %s\n" +msgstr "ogiltigt radnummer: %s\n" + +#: command.c:640 +#, c-format +msgid "The server (version %s) does not support editing function source.\n" +msgstr "Servern (version %s) stöder inte redigering av funktionskällkod.\n" + +#: command.c:721 command.c:792 +msgid "No changes" +msgstr "Inga ändringar" + +#: command.c:739 +#, c-format +msgid "The server (version %s) does not support editing view definitions.\n" +msgstr "Servern (version %s) stöder inte redigering av vydefinitioner.\n" + +#: command.c:846 +#, c-format +msgid "%s: invalid encoding name or conversion procedure not found\n" +msgstr "%s: ogiltigt kodningsnamn eller konverteringsprocedur hittades inte\n" + +#: command.c:871 command.c:1962 command.c:3649 common.c:153 common.c:200 +#: common.c:497 common.c:1190 common.c:1218 common.c:1319 copy.c:489 copy.c:709 +#: large_obj.c:156 large_obj.c:191 large_obj.c:253 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.c:875 +msgid "out of memory" +msgstr "slut pÃ¥ minne" + +#: command.c:878 +msgid "There is no previous error." +msgstr "Det finns inget tidigare fel." + +#: command.c:972 command.c:1022 command.c:1036 command.c:1053 command.c:1160 +#: command.c:1324 command.c:1564 command.c:1595 +#, c-format +msgid "\\%s: missing required argument\n" +msgstr "\\%s: obligatoriskt argument saknas\n" + +#: command.c:1085 +msgid "Query buffer is empty." +msgstr "FrÃ¥gebufferten är tom." + +#: command.c:1095 +msgid "Enter new password: " +msgstr "Mata in nytt lösenord: " + +#: command.c:1096 +msgid "Enter it again: " +msgstr "Mata in det igen: " + +#: command.c:1100 +#, c-format +msgid "Passwords didn't match.\n" +msgstr "Lösenorden stämde inte överens.\n" + +#: command.c:1118 +#, c-format +msgid "Password encryption failed.\n" +msgstr "Lösenordskryptering misslyckades.\n" + +#: command.c:1189 command.c:1305 command.c:1569 +#, c-format +msgid "\\%s: error while setting variable\n" +msgstr "\\%s: fel vid sättande av variabel\n" + +#: command.c:1252 +msgid "Query buffer reset (cleared)." +msgstr "FrÃ¥gebufferten har blivit borttagen." + +#: command.c:1264 +#, c-format +msgid "Wrote history to file \"%s\".\n" +msgstr "Skrev historiken till fil \"%s\".\n" + +#: command.c:1329 +#, c-format +msgid "\\%s: environment variable name must not contain \"=\"\n" +msgstr "\\%s: omgivningsvariabelnamn fÃ¥r ej innehÃ¥lla \"=\"\n" + +#: command.c:1373 +#, c-format +msgid "The server (version %s) does not support showing function source.\n" +msgstr "Servern (version %s) stöder inte visning av funktionskällkod.\n" + +#: command.c:1380 +#, c-format +msgid "function name is required\n" +msgstr "funktionsnamn krävs\n" + +#: command.c:1455 +#, c-format +msgid "The server (version %s) does not support showing view definitions.\n" +msgstr "Servern (version %s) stöder inte visning av vydefinitioner.\n" + +#: command.c:1462 +#, c-format +msgid "view name is required\n" +msgstr "vynamn krävs\n" + +#: command.c:1549 +msgid "Timing is on." +msgstr "Tidtagning är pÃ¥." + +#: command.c:1551 +msgid "Timing is off." +msgstr "Tidtagning är av." + +#: command.c:1613 command.c:1633 command.c:2311 command.c:2314 command.c:2317 +#: command.c:2323 command.c:2325 command.c:2333 command.c:2343 command.c:2352 +#: command.c:2366 command.c:2383 command.c:2441 common.c:68 copy.c:332 +#: copy.c:392 copy.c:405 psqlscanslash.l:711 psqlscanslash.l:722 +#: psqlscanslash.l:732 +#, c-format +msgid "%s: %s\n" +msgstr "%s: %s\n" + +#: command.c:1727 +#, c-format +msgid "+ opt(%d) = |%s|\n" +msgstr "+ opt(%d) = |%s|\n" + +#: command.c:1753 startup.c:207 +msgid "Password: " +msgstr "Lösenord: " + +#: command.c:1758 startup.c:209 +#, c-format +msgid "Password for user %s: " +msgstr "Lösenord för användare %s: " + +#: command.c:1809 +#, c-format +msgid "" +"All connection parameters must be supplied because no database connection " +"exists\n" +msgstr "" +"Alla anslutningsparametrar mÃ¥ste anges dÃ¥ ingen databasuppkoppling är gjord\n" + +#: command.c:1966 +#, c-format +msgid "Previous connection kept\n" +msgstr "FöregÃ¥ende förbindelse bevarad\n" + +#: command.c:1970 +#, c-format +msgid "\\connect: %s" +msgstr "\\connect: %s" + +#: command.c:2006 +#, 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\" vid port \"%s\".\n" + +#: command.c:2009 +#, 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\" " +"vid port \"%s\".\n" + +#: command.c:2013 +#, 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:2046 +#, c-format +msgid "%s (%s, server %s)\n" +msgstr "%s (%s, server %s)\n" + +#: command.c:2054 +#, 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:2091 +#, c-format +msgid "SSL connection (protocol: %s, cipher: %s, bits: %s, compression: %s)\n" +msgstr "" +"SSL-förbindelse (protokoll: %s, krypto: %s, bitar: %s, komprimering: %s)\n" + +#: command.c:2092 command.c:2093 command.c:2094 +msgid "unknown" +msgstr "okänd" + +#: command.c:2095 help.c:46 +msgid "off" +msgstr "av" + +#: command.c:2095 help.c:46 +msgid "on" +msgstr "pÃ¥" + +#: command.c:2115 +#, 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:2200 +#, c-format +msgid "" +"environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a " +"line number\n" +msgstr "" +"omgivningsvariabeln PSQL_EDITOR_LINENUMBER_ARG mÃ¥ste ange ett radnummer\n" + +#: command.c:2229 +#, c-format +msgid "could not start editor \"%s\"\n" +msgstr "kunde inte starta editorn \"%s\"\n" + +#: command.c:2231 +#, c-format +msgid "could not start /bin/sh\n" +msgstr "kunde inte starta /bin/sh\n" + +#: command.c:2269 +#, c-format +msgid "could not locate temporary directory: %s\n" +msgstr "kunde inte hitta temp-katalog: %s\n" + +#: command.c:2296 +#, c-format +msgid "could not open temporary file \"%s\": %s\n" +msgstr "kunde inte öppna temporär fil \"%s\": %s\n" + +#: command.c:2570 +#, c-format +msgid "" +"\\pset: allowed formats are unaligned, aligned, wrapped, html, asciidoc, " +"latex, latex-longtable, troff-ms\n" +msgstr "" +"\\pset: tillÃ¥tna format är unaligned, aligned, wrapped, html, asciidoc, " +"latex, latex-longtable, troff-ms\n" + +#: command.c:2589 +#, c-format +msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" +msgstr "\\pset: tillÃ¥tna linjestilar är ascii, old-ascii, unicode\n" + +#: command.c:2605 +#, c-format +msgid "\\pset: allowed Unicode border line styles are single, double\n" +msgstr "\\pset: tillÃ¥tna Unicode-ramstilar är single, double\n" + +#: command.c:2620 +#, c-format +msgid "\\pset: allowed Unicode column line styles are single, double\n" +msgstr "\\pset: tillÃ¥tna Unicode-kolumnlinjestilar ärsingle, double\n" + +#: command.c:2635 +#, c-format +msgid "\\pset: allowed Unicode header line styles are single, double\n" +msgstr "\\pset: tillÃ¥tna Unicode-rubriklinjestilar är single, double\n" + +#: command.c:2787 command.c:2966 +#, c-format +msgid "\\pset: unknown option: %s\n" +msgstr "\\pset: okänd parameter: %s\n" + +#: command.c:2805 +#, c-format +msgid "Border style is %d.\n" +msgstr "Ramstil är %d.\n" + +#: command.c:2811 +#, c-format +msgid "Target width is unset.\n" +msgstr "MÃ¥lvidd är inte satt.\n" + +#: command.c:2813 +#, c-format +msgid "Target width is %d.\n" +msgstr "MÃ¥lvidd är %d.\n" + +#: command.c:2820 +#, c-format +msgid "Expanded display is on.\n" +msgstr "Utökad visning är pÃ¥.\n" + +#: command.c:2822 +#, c-format +msgid "Expanded display is used automatically.\n" +msgstr "Utökad visning används automatiskt.\n" + +#: command.c:2824 +#, c-format +msgid "Expanded display is off.\n" +msgstr "Utökad visning är av.\n" + +#: command.c:2831 command.c:2839 +#, c-format +msgid "Field separator is zero byte.\n" +msgstr "Fältseparatorn är noll-byte.\n" + +#: command.c:2833 +#, c-format +msgid "Field separator is \"%s\".\n" +msgstr "Fältseparatorn är \"%s\".\n" + +#: command.c:2846 +#, c-format +msgid "Default footer is on.\n" +msgstr "Standard sidfot är pÃ¥.\n" + +#: command.c:2848 +#, c-format +msgid "Default footer is off.\n" +msgstr "Standard sidfot är av.\n" + +#: command.c:2854 +#, c-format +msgid "Output format is %s.\n" +msgstr "Utdataformatet är \"%s\".\n" + +#: command.c:2860 +#, c-format +msgid "Line style is %s.\n" +msgstr "Linjestil är %s.\n" + +#: command.c:2867 +#, c-format +msgid "Null display is \"%s\".\n" +msgstr "Null-visare är \"%s\".\n" + +#: command.c:2875 +#, c-format +msgid "Locale-adjusted numeric output is on.\n" +msgstr "Lokal-anpassad numerisk utdata är pÃ¥.\n" + +#: command.c:2877 +#, c-format +msgid "Locale-adjusted numeric output is off.\n" +msgstr "Lokal-anpassad numerisk utdata är av.\n" + +#: command.c:2884 +#, c-format +msgid "Pager is used for long output.\n" +msgstr "Siduppdelare är pÃ¥ för lÃ¥ng utdata.\n" + +#: command.c:2886 +#, c-format +msgid "Pager is always used.\n" +msgstr "Siduppdelare används alltid.\n" + +#: command.c:2888 +#, c-format +msgid "Pager usage is off.\n" +msgstr "Siduppdelare är av.\n" + +#: command.c:2894 +#, 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:2904 command.c:2914 +#, c-format +msgid "Record separator is zero byte.\n" +msgstr "Postseparatorn är noll-byte.\n" + +#: command.c:2906 +#, c-format +msgid "Record separator is .\n" +msgstr "Postseparatorn är .\n" + +#: command.c:2908 +#, c-format +msgid "Record separator is \"%s\".\n" +msgstr "Postseparatorn är \"%s\".\n" + +#: command.c:2921 +#, c-format +msgid "Table attributes are \"%s\".\n" +msgstr "Tabellattributen är \"%s\".\n" + +#: command.c:2924 +#, c-format +msgid "Table attributes unset.\n" +msgstr "Tabellattributen är ej satta.\n" + +#: command.c:2931 +#, c-format +msgid "Title is \"%s\".\n" +msgstr "Titeln är \"%s\".\n" + +#: command.c:2933 +#, c-format +msgid "Title is unset.\n" +msgstr "Titeln är inte satt.\n" + +#: command.c:2940 +#, c-format +msgid "Tuples only is on.\n" +msgstr "Visa bara tupler är pÃ¥.\n" + +#: command.c:2942 +#, c-format +msgid "Tuples only is off.\n" +msgstr "Visa bara tupler är av.\n" + +#: command.c:2948 +#, c-format +msgid "Unicode border line style is \"%s\".\n" +msgstr "Unicode-ramstil är \"%s\".\n" + +#: command.c:2954 +#, c-format +msgid "Unicode column line style is \"%s\".\n" +msgstr "Unicode-kolumnLinjestil är \"%s\".\n" + +#: command.c:2960 +#, c-format +msgid "Unicode header line style is \"%s\".\n" +msgstr "Unicode-rubriklinjestil är \"%s\".\n" + +#: command.c:3120 +#, c-format +msgid "\\!: failed\n" +msgstr "\\!: misslyckades\n" + +#: command.c:3145 common.c:659 +#, c-format +msgid "\\watch cannot be used with an empty query\n" +msgstr "\\watch kan inte användas pÃ¥ en tom frÃ¥ga\n" + +#: command.c:3186 +#, c-format +msgid "%s\t%s (every %gs)\n" +msgstr "%s\t%s (varje %gs)\n" + +#: command.c:3189 +#, c-format +msgid "%s (every %gs)\n" +msgstr "%s (varje %gs)\n" + +#: command.c:3243 command.c:3250 common.c:559 common.c:566 common.c:1173 +#, c-format +msgid "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" +msgstr "" +"********* FRÃ…GA **********\n" +"%s\n" +"**************************\n" +"\n" + +#: command.c:3442 +#, c-format +msgid "\"%s.%s\" is not a view\n" +msgstr "\"%s.%s\" är inte en vy\n" + +#: command.c:3458 +#, c-format +msgid "could not parse reloptions array\n" +msgstr "kunde inte parsa arrayen reloptions\n" + +#: common.c:138 +#, c-format +msgid "cannot escape without active connection\n" +msgstr "kan inte escape:a utan en aktiv upppkoppling\n" + +#: common.c:371 +#, c-format +msgid "connection to server was lost\n" +msgstr "förbindelsen till servern har brutits\n" + +#: common.c:375 +#, c-format +msgid "The connection to the server was lost. Attempting reset: " +msgstr "Förbindelsen till servern har brutits. Försöker starta om: " + +#: common.c:380 +#, c-format +msgid "Failed.\n" +msgstr "Misslyckades.\n" + +#: common.c:387 +#, c-format +msgid "Succeeded.\n" +msgstr "Lyckades.\n" + +#: common.c:487 common.c:936 common.c:1108 +#, c-format +msgid "unexpected PQresultStatus: %d\n" +msgstr "oväntad PQresultStatus: %d\n" + +#: common.c:666 +#, c-format +msgid "\\watch cannot be used with COPY\n" +msgstr "\\watch kan inte användas med COPY\n" + +#: common.c:671 +#, c-format +msgid "unexpected result status for \\watch\n" +msgstr "oväntat resultatstatus för \\watch\n" + +#: common.c:682 common.c:1335 +#, c-format +msgid "Time: %.3f ms\n" +msgstr "Tid: %.3f ms\n" + +#: common.c:700 +#, 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:703 +#, 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:761 +#, c-format +msgid "no rows returned for \\gset\n" +msgstr "inga rader returnerades för \\gset\n" + +#: common.c:766 +#, c-format +msgid "more than one row returned for \\gset\n" +msgstr "mer än en rad returnerades för \\gset\n" + +#: common.c:792 +#, c-format +msgid "could not set variable \"%s\"\n" +msgstr "kunde inte sätta variabeln \"%s\"\n" + +#: common.c:1153 +#, 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:1208 +#, c-format +msgid "" +"The server (version %s) does not support savepoints for ON_ERROR_ROLLBACK.\n" +msgstr "Servern (version %s) stöder inte sparpunkter för ON_ERROR_ROLLBACK.\n" + +#: common.c:1264 +#, c-format +msgid "STATEMENT: %s\n" +msgstr "SATS: %s\n" + +#: common.c:1307 +#, c-format +msgid "unexpected transaction status (%d)\n" +msgstr "oväntad transaktionsstatus (%d)\n" + +#: copy.c:99 +#, c-format +msgid "\\copy: arguments required\n" +msgstr "\\copy: argument krävs\n" + +#: copy.c:254 +#, c-format +msgid "\\copy: parse error at \"%s\"\n" +msgstr "\\copy: parsfel vid \"%s\"\n" + +#: copy.c:256 +#, c-format +msgid "\\copy: parse error at end of line\n" +msgstr "\\copy: parsfel vid radslutet\n" + +#: copy.c:329 +#, c-format +msgid "could not execute command \"%s\": %s\n" +msgstr "kunde inte utföra kommandot \"%s\": %s\n" + +#: copy.c:345 +#, c-format +msgid "could not stat file \"%s\": %s\n" +msgstr "kunde inte göra stat() pÃ¥ fil \"%s\": %s\n" + +#: copy.c:349 +#, c-format +msgid "%s: cannot copy from/to a directory\n" +msgstr "%s: kan inte kopiera frÃ¥n/till en katalog\n" + +#: copy.c:386 +#, c-format +msgid "could not close pipe to external command: %s\n" +msgstr "kunde inte stänga rör till externt komamndo: %s\n" + +#: copy.c:452 copy.c:463 +#, c-format +msgid "could not write COPY data: %s\n" +msgstr "kunde inte skriva COPY-data: %s\n" + +#: copy.c:470 +#, c-format +msgid "COPY data transfer failed: %s" +msgstr "COPY-överföring av data misslyckades: %s" + +#: copy.c:531 +msgid "canceled by user" +msgstr "avbruten av användaren" + +#: copy.c:542 +msgid "" +"Enter data to be copied followed by a newline.\n" +"End with a backslash and a period on a line by itself, or an EOF signal." +msgstr "" +"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:671 +msgid "aborted because of read failure" +msgstr "avbruten pÃ¥ grund av läsfel" + +#: copy.c:705 +msgid "trying to exit copy mode" +msgstr "försöker avsluta kopieringsläge" + +#: crosstabview.c:125 +#, c-format +msgid "\\crosstabview: statement did not return a result set\n" +msgstr "\\crosstabview: satsen returnerade ingen resultatmängd\n" + +#: crosstabview.c:131 +#, c-format +msgid "\\crosstabview: query must return at least three columns\n" +msgstr "\\crosstabview: frÃ¥gan mÃ¥ste returnera minst tre kolumner\n" + +#: crosstabview.c:158 +#, c-format +msgid "" +"\\crosstabview: vertical and horizontal headers must be different columns\n" +msgstr "" +"\\crosstabview: vertikala och horisontala rubriker mÃ¥ste vara olika " +"kolumner\n" + +#: crosstabview.c:174 +#, c-format +msgid "" +"\\crosstabview: data column must be specified when query returns more than " +"three columns\n" +msgstr "" +"\\crosstabview: datakolumn mÃ¥ste anges när frÃ¥gan returnerar mer än tre " +"kolumner\n" + +#: crosstabview.c:230 +#, c-format +msgid "\\crosstabview: maximum number of columns (%d) exceeded\n" +msgstr "\\crosstabview: maximalt antal kolumner (%d) överskridet\n" + +#: crosstabview.c:399 +#, c-format +msgid "" +"\\crosstabview: query result contains multiple data values for row \"%s\", " +"column \"%s\"\n" +msgstr "" +"\\crosstabview: frÃ¥geresultatet innehÃ¥ller multipla värden för rad \"%s\", " +"kolumn \"%s\"\n" + +#: crosstabview.c:647 +#, c-format +msgid "\\crosstabview: column number %d is out of range 1..%d\n" +msgstr "\\crosstabview: kolumnnummer %d är utanför giltigt intervall 1..%d\n" + +#: crosstabview.c:672 +#, c-format +msgid "\\crosstabview: ambiguous column name: \"%s\"\n" +msgstr "\\crosstabview: tvetydigt kolumnnamn: \"%s\"\n" + +#: crosstabview.c:680 +#, c-format +msgid "\\crosstabview: column name not found: \"%s\"\n" +msgstr "\\crosstabview: hittar ej kolumnnamn: \"%s\"\n" + +#: describe.c:71 describe.c:340 describe.c:597 describe.c:727 describe.c:870 +#: describe.c:990 describe.c:1060 describe.c:3035 describe.c:3240 +#: describe.c:3330 describe.c:3578 describe.c:3718 describe.c:3950 +#: describe.c:4025 describe.c:4036 describe.c:4098 describe.c:4518 +#: describe.c:4601 +msgid "Schema" +msgstr "Schema" + +#: describe.c:72 describe.c:160 describe.c:226 describe.c:234 describe.c:341 +#: describe.c:598 describe.c:728 describe.c:789 describe.c:871 describe.c:1061 +#: describe.c:3036 describe.c:3162 describe.c:3241 describe.c:3331 +#: describe.c:3410 describe.c:3579 describe.c:3643 describe.c:3719 +#: describe.c:3951 describe.c:4026 describe.c:4037 describe.c:4099 +#: describe.c:4291 describe.c:4375 describe.c:4599 +msgid "Name" +msgstr "Namn" + +#: describe.c:73 describe.c:353 describe.c:399 describe.c:416 +msgid "Result data type" +msgstr "Resultatdatatyp" + +#: describe.c:81 describe.c:94 describe.c:98 describe.c:354 describe.c:400 +#: describe.c:417 +msgid "Argument data types" +msgstr "Argumentdatatyp" + +#: describe.c:105 describe.c:170 describe.c:257 describe.c:462 describe.c:646 +#: describe.c:743 describe.c:814 describe.c:1063 describe.c:1676 +#: describe.c:2836 describe.c:3069 describe.c:3193 describe.c:3267 +#: describe.c:3340 describe.c:3423 describe.c:3491 describe.c:3586 +#: describe.c:3652 describe.c:3720 describe.c:3856 describe.c:3896 +#: describe.c:3967 describe.c:4029 describe.c:4038 describe.c:4100 +#: describe.c:4317 describe.c:4397 describe.c:4532 describe.c:4602 +#: large_obj.c:289 large_obj.c:299 +msgid "Description" +msgstr "Beskrivning" + +#: describe.c:123 +msgid "List of aggregate functions" +msgstr "Lista med aggregatfunktioner" + +#: describe.c:147 +#, c-format +msgid "The server (version %s) does not support access methods.\n" +msgstr "Servern (version %s) stöder inte accessmetoder.\n" + +#: describe.c:161 +msgid "Index" +msgstr "Index" + +#: describe.c:162 describe.c:360 describe.c:405 describe.c:422 describe.c:877 +#: describe.c:999 describe.c:1645 describe.c:3044 describe.c:3242 +#: describe.c:4394 +msgid "Type" +msgstr "Typ" + +#: describe.c:169 describe.c:4296 +msgid "Handler" +msgstr "Hanterare" + +#: describe.c:188 +msgid "List of access methods" +msgstr "Lista med accessmetoder" + +#: describe.c:213 +#, c-format +msgid "The server (version %s) does not support tablespaces.\n" +msgstr "Servern (version %s) stöder inte tabellutrymmen.\n" + +#: describe.c:227 describe.c:235 describe.c:450 describe.c:636 describe.c:790 +#: describe.c:989 describe.c:3045 describe.c:3166 describe.c:3412 +#: describe.c:3644 describe.c:4292 describe.c:4376 large_obj.c:288 +msgid "Owner" +msgstr "Ägare" + +#: describe.c:228 describe.c:236 +msgid "Location" +msgstr "Plats" + +#: describe.c:247 describe.c:2647 +msgid "Options" +msgstr "Alternativ" + +#: describe.c:252 describe.c:609 describe.c:806 describe.c:3061 describe.c:3065 +msgid "Size" +msgstr "Storlek" + +#: describe.c:274 +msgid "List of tablespaces" +msgstr "Lista med tabellutrymmen" + +#: describe.c:314 +#, c-format +msgid "\\df only takes [antwS+] as options\n" +msgstr "\\df tar bara [antwS+] som flaggor\n" + +#: describe.c:322 +#, c-format +msgid "\\df does not take a \"w\" option with server version %s\n" +msgstr "\\df tar inte en \"w\"-flagga med serverversion %s\n" + +#. translator: "agg" is short for "aggregate" +#: describe.c:356 describe.c:402 describe.c:419 +msgid "agg" +msgstr "agg" + +#: describe.c:357 +msgid "window" +msgstr "fönster" + +#: describe.c:358 describe.c:403 describe.c:420 describe.c:1197 +msgid "trigger" +msgstr "utlösare" + +#: describe.c:359 describe.c:404 describe.c:421 +msgid "normal" +msgstr "normal" + +#: describe.c:432 +msgid "immutable" +msgstr "oföränderlig" + +#: describe.c:433 +msgid "stable" +msgstr "stabil" + +#: describe.c:434 +msgid "volatile" +msgstr "flyktig" + +#: describe.c:435 +msgid "Volatility" +msgstr "Flyktighet" + +#: describe.c:443 +msgid "restricted" +msgstr "begränsad" + +#: describe.c:444 +msgid "safe" +msgstr "säker" + +#: describe.c:445 +msgid "unsafe" +msgstr "osäker" + +#: describe.c:446 +msgid "Parallel" +msgstr "Parallell" + +#: describe.c:451 +msgid "definer" +msgstr "definierare" + +#: describe.c:452 +msgid "invoker" +msgstr "anropare" + +#: describe.c:453 +msgid "Security" +msgstr "Säkerhet" + +#: describe.c:460 +msgid "Language" +msgstr "SprÃ¥k" + +#: describe.c:461 +msgid "Source code" +msgstr "Källkod" + +#: describe.c:560 +msgid "List of functions" +msgstr "Lista med funktioner" + +#: describe.c:608 +msgid "Internal name" +msgstr "Internt namn" + +#: describe.c:630 +msgid "Elements" +msgstr "Element" + +#: describe.c:686 +msgid "List of data types" +msgstr "Lista med datatyper" + +#: describe.c:729 +msgid "Left arg type" +msgstr "Vänster argumenttyp" + +#: describe.c:730 +msgid "Right arg type" +msgstr "Höger argumenttyp" + +#: describe.c:731 +msgid "Result type" +msgstr "Resultattyp" + +#: describe.c:736 describe.c:3482 describe.c:3855 +msgid "Function" +msgstr "Funktion" + +#: describe.c:761 +msgid "List of operators" +msgstr "Lista med operatorer" + +#: describe.c:791 +msgid "Encoding" +msgstr "Kodning" + +#: describe.c:796 describe.c:3580 +msgid "Collate" +msgstr "Jämförelse" + +#: describe.c:797 describe.c:3581 +msgid "Ctype" +msgstr "Ctype" + +#: describe.c:810 +msgid "Tablespace" +msgstr "Tabellutrymme" + +#: describe.c:832 +msgid "List of databases" +msgstr "Lista med databaser" + +#: describe.c:872 describe.c:992 describe.c:3037 +msgid "table" +msgstr "tabell" + +#: describe.c:873 describe.c:3038 +msgid "view" +msgstr "vy" + +#: describe.c:874 describe.c:3039 +msgid "materialized view" +msgstr "materialiserad vy" + +#: describe.c:875 describe.c:994 describe.c:3041 +msgid "sequence" +msgstr "sekvens" + +#: describe.c:876 describe.c:3043 +msgid "foreign table" +msgstr "främmande tabell" + +#: describe.c:888 +msgid "Column privileges" +msgstr "Kolumnrättigheter" + +#: describe.c:919 +msgid "Policies" +msgstr "Policys" + +#: describe.c:945 describe.c:4749 describe.c:4753 +msgid "Access privileges" +msgstr "Ã…tkomsträttigheter" + +#: describe.c:976 +#, c-format +msgid "The server (version %s) does not support altering default privileges.\n" +msgstr "Servern (version %s) stöder inte ändring av standardrättigheter.\n" + +#: describe.c:996 +msgid "function" +msgstr "funktion" + +#: describe.c:998 +msgid "type" +msgstr "typ" + +#: describe.c:1022 +msgid "Default access privileges" +msgstr "Standard accessrättigheter" + +#: describe.c:1062 +msgid "Object" +msgstr "Objekt" + +#: describe.c:1076 +msgid "table constraint" +msgstr "tabellvillkor" + +#: describe.c:1098 +msgid "domain constraint" +msgstr "domänvillkor" + +#: describe.c:1126 +msgid "operator class" +msgstr "operatorklass" + +#: describe.c:1155 +msgid "operator family" +msgstr "operatorfamilj" + +#: describe.c:1177 +msgid "rule" +msgstr "rule" + +#: describe.c:1219 +msgid "Object descriptions" +msgstr "Objektbeskrivningar" + +#: describe.c:1273 +#, c-format +msgid "Did not find any relation named \"%s\".\n" +msgstr "Kunde inte hitta en relation med namn \"%s\".\n" + +#: describe.c:1483 +#, c-format +msgid "Did not find any relation with OID %s.\n" +msgstr "Kunde inte hitta en relation med OID %s.\n" + +#: describe.c:1589 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "Ologgad tabell \"%s.%s\"" + +#: describe.c:1592 +#, c-format +msgid "Table \"%s.%s\"" +msgstr "Tabell \"%s.%s\"" + +#: describe.c:1596 +#, c-format +msgid "View \"%s.%s\"" +msgstr "Vy \"%s.%s\"" + +#: describe.c:1601 +#, c-format +msgid "Unlogged materialized view \"%s.%s\"" +msgstr "Ologgad materialiserad vy \"%s.%s\"" + +#: describe.c:1604 +#, c-format +msgid "Materialized view \"%s.%s\"" +msgstr "Materialiserad vy \"%s.%s\"" + +#: describe.c:1608 +#, c-format +msgid "Sequence \"%s.%s\"" +msgstr "Sekvens \"%s.%s\"" + +#: describe.c:1613 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "Ologgat index \"%s.%s\"" + +#: describe.c:1616 +#, c-format +msgid "Index \"%s.%s\"" +msgstr "Index \"%s.%s\"" + +#: describe.c:1621 +#, c-format +msgid "Special relation \"%s.%s\"" +msgstr "Särskild relation \"%s.%s\"" + +#: describe.c:1625 +#, c-format +msgid "TOAST table \"%s.%s\"" +msgstr "TOAST-tabell \"%s.%s\"" + +#: describe.c:1629 +#, c-format +msgid "Composite type \"%s.%s\"" +msgstr "Sammansatt typ \"%s.%s\"" + +#: describe.c:1633 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "Främmande tabell \"%s.%s\"" + +#: describe.c:1644 +msgid "Column" +msgstr "Kolumn" + +#: describe.c:1653 +msgid "Modifiers" +msgstr "Modifierare" + +#: describe.c:1658 +msgid "Value" +msgstr "Värde" + +#: describe.c:1661 +msgid "Definition" +msgstr "Definition" + +#: describe.c:1664 describe.c:4312 describe.c:4396 describe.c:4467 +#: describe.c:4531 +msgid "FDW Options" +msgstr "FDW-Flaggor" + +#: describe.c:1668 +msgid "Storage" +msgstr "Lagring" + +#: describe.c:1671 +msgid "Stats target" +msgstr "StatistikmÃ¥l" + +#: describe.c:1721 +#, c-format +msgid "collate %s" +msgstr "sortering %s" + +#: describe.c:1729 +msgid "not null" +msgstr "not null" + +#. translator: default values of column definitions +#: describe.c:1739 +#, c-format +msgid "default %s" +msgstr "default %s" + +#: describe.c:1854 +msgid "primary key, " +msgstr "primärnyckel, " + +#: describe.c:1856 +msgid "unique, " +msgstr "unik, " + +#: describe.c:1862 +#, c-format +msgid "for table \"%s.%s\"" +msgstr "för tabell \"%s.%s\"" + +#: describe.c:1866 +#, c-format +msgid ", predicate (%s)" +msgstr ", predikat (%s)" + +#: describe.c:1869 +msgid ", clustered" +msgstr ", klustrad" + +#: describe.c:1872 +msgid ", invalid" +msgstr ", ogiltig" + +#: describe.c:1875 +msgid ", deferrable" +msgstr ", uppskjutbar" + +#: describe.c:1878 +msgid ", initially deferred" +msgstr ", initialt uppskjuten" + +#: describe.c:1881 +msgid ", replica identity" +msgstr ", replikaidentitet" + +#: describe.c:1916 +#, c-format +msgid "Owned by: %s" +msgstr "Ägd av: %s" + +#: describe.c:1976 +msgid "Indexes:" +msgstr "Index:" + +#: describe.c:2060 +msgid "Check constraints:" +msgstr "Kontrollvillkor:" + +#: describe.c:2091 +msgid "Foreign-key constraints:" +msgstr "Främmande nyckel-villkor:" + +#: describe.c:2122 +msgid "Referenced by:" +msgstr "Refererad av:" + +#: describe.c:2167 +msgid "Policies:" +msgstr "Policys:" + +#: describe.c:2170 +msgid "Policies (forced row security enabled):" +msgstr "Policys (tvingad radsäkerhet pÃ¥slagen):" + +#: describe.c:2173 +msgid "Policies (row security enabled): (none)" +msgstr "Policys (radsäkerhet pÃ¥slagna): (ingen)" + +#: describe.c:2176 +msgid "Policies (forced row security enabled): (none)" +msgstr "Policys (tvingad radsäkerhet pÃ¥slagen): (ingen)" + +#: describe.c:2179 +msgid "Policies (row security disabled):" +msgstr "Policys (radsäkerhet avstängd):" + +#: describe.c:2279 describe.c:2329 +msgid "Rules:" +msgstr "Regler:" + +#: describe.c:2282 +msgid "Disabled rules:" +msgstr "Avstängda regler:" + +#: describe.c:2285 +msgid "Rules firing always:" +msgstr "Regler som alltid utförs:" + +#: describe.c:2288 +msgid "Rules firing on replica only:" +msgstr "Regler som utförs enbart pÃ¥ replika:" + +#: describe.c:2312 +msgid "View definition:" +msgstr "Vydefinition:" + +#: describe.c:2447 +msgid "Triggers:" +msgstr "Utlösare:" + +#: describe.c:2451 +msgid "Disabled user triggers:" +msgstr "Avstängda användarutlösare:" + +#: describe.c:2453 +msgid "Disabled triggers:" +msgstr "Avstängda utlösare:" + +#: describe.c:2456 +msgid "Disabled internal triggers:" +msgstr "Avstängda interna utlösare:" + +#: describe.c:2459 +msgid "Triggers firing always:" +msgstr "Utlösare som alltid aktiveras:" + +#: describe.c:2462 +msgid "Triggers firing on replica only:" +msgstr "Utlösare som aktiveras enbart pÃ¥ replika:" + +#: describe.c:2519 +#, c-format +msgid "Server: %s" +msgstr "Server: %s" + +#: describe.c:2527 +#, c-format +msgid "FDW Options: (%s)" +msgstr "FDW-Flaggor: (%s)" + +#: describe.c:2541 +msgid "Inherits" +msgstr "Ärver" + +#: describe.c:2580 +#, 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:2587 +msgid "Child tables" +msgstr "Barntabeller" + +#: describe.c:2609 +#, c-format +msgid "Typed table of type: %s" +msgstr "Typad tabell av typ: %s" + +#: describe.c:2623 +msgid "Replica Identity" +msgstr "Replikaidentitet" + +#: describe.c:2636 +msgid "Has OIDs: yes" +msgstr "Har OID:er: ja" + +#: describe.c:2724 +#, 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:2736 +#, c-format +msgid ", tablespace \"%s\"" +msgstr ", tabellutrymme: \"%s\"" + +#: describe.c:2829 +msgid "List of roles" +msgstr "Lista med roller" + +#: describe.c:2831 +msgid "Role name" +msgstr "Rollnamn" + +#: describe.c:2832 +msgid "Attributes" +msgstr "Attribut" + +#: describe.c:2833 +msgid "Member of" +msgstr "Medlem av" + +#: describe.c:2844 +msgid "Superuser" +msgstr "Superanvändare" + +#: describe.c:2847 +msgid "No inheritance" +msgstr "Inget arv" + +#: describe.c:2850 +msgid "Create role" +msgstr "Skapa roll" + +#: describe.c:2853 +msgid "Create DB" +msgstr "Skapa DB" + +#: describe.c:2856 +msgid "Cannot login" +msgstr "Kan inte logga in" + +#: describe.c:2860 +msgid "Replication" +msgstr "Replikering" + +#: describe.c:2864 +msgid "Bypass RLS" +msgstr "Hopp över RLS" + +#: describe.c:2873 +msgid "No connections" +msgstr "Inga uppkopplingar" + +#: describe.c:2875 +#, c-format +msgid "%d connection" +msgid_plural "%d connections" +msgstr[0] "%d uppkoppling" +msgstr[1] "%d uppkopplingar" + +#: describe.c:2885 +msgid "Password valid until " +msgstr "Lösenord giltigt till " + +#: describe.c:2941 +msgid "Role" +msgstr "Roll" + +#: describe.c:2942 +msgid "Database" +msgstr "Databas" + +#: describe.c:2943 +msgid "Settings" +msgstr "Inställningar" + +#: describe.c:2953 +#, c-format +msgid "No per-database role settings support in this server version.\n" +msgstr "Inget stöd för rollinställningar per databas i denna serverversion.\n" + +#: describe.c:2964 +#, c-format +msgid "No matching settings found.\n" +msgstr "Inga matchande inställningar funna.\n" + +#: describe.c:2966 +#, c-format +msgid "No settings found.\n" +msgstr "Inga inställningar funna.\n" + +#: describe.c:2971 +msgid "List of settings" +msgstr "Lista med inställningar" + +#: describe.c:3040 +msgid "index" +msgstr "index" + +#: describe.c:3042 +msgid "special" +msgstr "särskild" + +#: describe.c:3050 describe.c:4519 +msgid "Table" +msgstr "Tabell" + +#: describe.c:3126 +#, c-format +msgid "No matching relations found.\n" +msgstr "Inga matchande relationer funna.\n" + +#: describe.c:3128 +#, c-format +msgid "No relations found.\n" +msgstr "Inga relationer funna.\n" + +#: describe.c:3133 +msgid "List of relations" +msgstr "Lista med relationer" + +#: describe.c:3170 +msgid "Trusted" +msgstr "Tillförlitlig" + +#: describe.c:3178 +msgid "Internal Language" +msgstr "Internt sprÃ¥k" + +#: describe.c:3179 +msgid "Call Handler" +msgstr "Anropshanterare" + +#: describe.c:3180 describe.c:4299 +msgid "Validator" +msgstr "Validerare" + +#: describe.c:3183 +msgid "Inline Handler" +msgstr "Inline-hanterare" + +#: describe.c:3211 +msgid "List of languages" +msgstr "Lista med sprÃ¥k" + +#: describe.c:3255 +msgid "Modifier" +msgstr "Modifierare" + +#: describe.c:3256 +msgid "Check" +msgstr "Check" + +#: describe.c:3298 +msgid "List of domains" +msgstr "Lista med domäner" + +#: describe.c:3332 +msgid "Source" +msgstr "Källa" + +#: describe.c:3333 +msgid "Destination" +msgstr "MÃ¥l" + +#: describe.c:3334 describe.c:3483 +msgid "no" +msgstr "nej" + +#: describe.c:3334 describe.c:3485 +msgid "yes" +msgstr "ja" + +#: describe.c:3335 +msgid "Default?" +msgstr "Standard?" + +#: describe.c:3372 +msgid "List of conversions" +msgstr "Lista med konverteringar" + +#: describe.c:3411 +msgid "Event" +msgstr "Händelse" + +#: describe.c:3413 +msgid "enabled" +msgstr "pÃ¥slagen" + +#: describe.c:3414 +msgid "replica" +msgstr "replika" + +#: describe.c:3415 +msgid "always" +msgstr "alltid" + +#: describe.c:3416 +msgid "disabled" +msgstr "avstängd" + +#: describe.c:3417 +msgid "Enabled" +msgstr "PÃ¥slagen" + +#: describe.c:3418 +msgid "Procedure" +msgstr "Procedur" + +#: describe.c:3419 +msgid "Tags" +msgstr "Etiketter" + +#: describe.c:3438 +msgid "List of event triggers" +msgstr "Lista med händelseutlösare" + +#: describe.c:3480 +msgid "Source type" +msgstr "Källtyp" + +#: describe.c:3481 +msgid "Target type" +msgstr "MÃ¥ltyp" + +#: describe.c:3484 +msgid "in assignment" +msgstr "i tilldelning" + +#: describe.c:3486 +msgid "Implicit?" +msgstr "Implicit?" + +#: describe.c:3537 +msgid "List of casts" +msgstr "Lista med typomvandlingar" + +#: describe.c:3565 +#, c-format +msgid "The server (version %s) does not support collations.\n" +msgstr "Servern (version %s) stöder inte jämförelser (collations).\n" + +#: describe.c:3616 +msgid "List of collations" +msgstr "Lista med jämförelser (collations)" + +#: describe.c:3675 +msgid "List of schemas" +msgstr "Lista med scheman" + +#: describe.c:3700 describe.c:3938 describe.c:4009 describe.c:4080 +#, c-format +msgid "The server (version %s) does not support full text search.\n" +msgstr "Servern (version %s) stöder inte fulltextsökning.\n" + +#: describe.c:3735 +msgid "List of text search parsers" +msgstr "Lista med textsökparsrar" + +#: describe.c:3778 +#, c-format +msgid "Did not find any text search parser named \"%s\".\n" +msgstr "Kunde inte hitta en textsökparser med namn \"%s\".\n" + +#: describe.c:3853 +msgid "Start parse" +msgstr "Starta parsning" + +#: describe.c:3854 +msgid "Method" +msgstr "Metod" + +#: describe.c:3858 +msgid "Get next token" +msgstr "Hämta nästa symbol" + +#: describe.c:3860 +msgid "End parse" +msgstr "Avsluta parsning" + +#: describe.c:3862 +msgid "Get headline" +msgstr "Hämta rubrik" + +#: describe.c:3864 +msgid "Get token types" +msgstr "Hämta symboltyper" + +#: describe.c:3874 +#, c-format +msgid "Text search parser \"%s.%s\"" +msgstr "Textsökparser \"%s.%s\"" + +#: describe.c:3876 +#, c-format +msgid "Text search parser \"%s\"" +msgstr "Textsökparser \"%s\"" + +#: describe.c:3895 +msgid "Token name" +msgstr "Symbolnamn" + +#: describe.c:3906 +#, c-format +msgid "Token types for parser \"%s.%s\"" +msgstr "Symboltyper för parser \"%s.%s\"" + +#: describe.c:3908 +#, c-format +msgid "Token types for parser \"%s\"" +msgstr "Symboltyper för parser \"%s\"" + +#: describe.c:3961 +msgid "Template" +msgstr "Mall" + +#: describe.c:3962 +msgid "Init options" +msgstr "Initieringsalternativ" + +#: describe.c:3984 +msgid "List of text search dictionaries" +msgstr "Lista med textsökordlistor" + +#: describe.c:4027 +msgid "Init" +msgstr "Init" + +#: describe.c:4028 +msgid "Lexize" +msgstr "Symboluppdelning" + +#: describe.c:4055 +msgid "List of text search templates" +msgstr "Lista med textsökmallar" + +#: describe.c:4115 +msgid "List of text search configurations" +msgstr "Lista med textsökkonfigurationer" + +#: describe.c:4159 +#, c-format +msgid "Did not find any text search configuration named \"%s\".\n" +msgstr "Kunde inte hitta en textsökkonfiguration med namn \"%s\".\n" + +#: describe.c:4225 +msgid "Token" +msgstr "Symbol" + +#: describe.c:4226 +msgid "Dictionaries" +msgstr "Ordlistor" + +#: describe.c:4237 +#, c-format +msgid "Text search configuration \"%s.%s\"" +msgstr "Textsökkonfiguration \"%s.%s\"" + +#: describe.c:4240 +#, c-format +msgid "Text search configuration \"%s\"" +msgstr "Textsökkonfiguration \"%s\"" + +#: describe.c:4244 +#, c-format +msgid "" +"\n" +"Parser: \"%s.%s\"" +msgstr "" +"\n" +"Parser: \"%s.%s\"" + +#: describe.c:4247 +#, c-format +msgid "" +"\n" +"Parser: \"%s\"" +msgstr "" +"\n" +"Parser: \"%s\"" + +#: describe.c:4281 +#, c-format +msgid "The server (version %s) does not support foreign-data wrappers.\n" +msgstr "Servern (version %s) stöder inte främmande data-omvandlare.\n" + +#: describe.c:4339 +msgid "List of foreign-data wrappers" +msgstr "Lista med främmande data-omvandlare" + +#: describe.c:4364 +#, c-format +msgid "The server (version %s) does not support foreign servers.\n" +msgstr "Servern (version %s) stöder inte främmande servrar.\n" + +#: describe.c:4377 +msgid "Foreign-data wrapper" +msgstr "Främmande data-omvandlare" + +#: describe.c:4395 describe.c:4600 +msgid "Version" +msgstr "Version" + +#: describe.c:4421 +msgid "List of foreign servers" +msgstr "Lista med främmande servrar" + +#: describe.c:4446 +#, c-format +msgid "The server (version %s) does not support user mappings.\n" +msgstr "Servern (version %s) stöder inte användarmappningar.\n" + +#: describe.c:4456 describe.c:4520 +msgid "Server" +msgstr "Server" + +#: describe.c:4457 +msgid "User name" +msgstr "Användarnamn" + +#: describe.c:4482 +msgid "List of user mappings" +msgstr "Lista av användarmappningar" + +#: describe.c:4507 +#, c-format +msgid "The server (version %s) does not support foreign tables.\n" +msgstr "Servern (version %s) stöder inte främmande tabeller.\n" + +#: describe.c:4560 +msgid "List of foreign tables" +msgstr "Lista med främmande tabeller" + +#: describe.c:4585 describe.c:4642 +#, c-format +msgid "The server (version %s) does not support extensions.\n" +msgstr "Servern (version %s) stöder inte utökningar.\n" + +#: describe.c:4617 +msgid "List of installed extensions" +msgstr "Lista med installerade utökningar" + +#: describe.c:4670 +#, c-format +msgid "Did not find any extension named \"%s\".\n" +msgstr "Kunde inte hitta en utökning med namn \"%s\".\n" + +#: describe.c:4673 +#, c-format +msgid "Did not find any extensions.\n" +msgstr "Kunde inte hitta nÃ¥gra utökningar.\n" + +#: describe.c:4717 +msgid "Object Description" +msgstr "Objektbeskrivning" + +#: describe.c:4726 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "Objekt i utökning \"%s\"" + +#: help.c:63 +#, c-format +msgid "%s\n" +msgstr "%s\n" + +#: help.c:74 +#, c-format +msgid "" +"psql is the PostgreSQL interactive terminal.\n" +"\n" +msgstr "" +"psql är den interaktiva PostgreSQL-terminalen.\n" +"\n" + +#: help.c:75 help.c:333 help.c:367 help.c:394 +#, c-format +msgid "Usage:\n" +msgstr "Användning:\n" + +#: help.c:76 +#, c-format +msgid "" +" psql [OPTION]... [DBNAME [USERNAME]]\n" +"\n" +msgstr "" +" psql [FLAGGA]... [DBNAMN [ANVÄNDARNAMN]]\n" +"\n" + +#: help.c:78 +#, c-format +msgid "General options:\n" +msgstr "Allmänna flaggor:\n" + +#: help.c:83 +#, c-format +msgid "" +" -c, --command=COMMAND run only single command (SQL or internal) and " +"exit\n" +msgstr "" +" -c, --command=KOMMANDO kör ett kommando (SQL eller internt) och avsluta " +"sedan\n" + +#: help.c:84 +#, 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:85 +#, c-format +msgid " -f, --file=FILENAME execute commands from file, then exit\n" +msgstr " -f, --file=FILNAMN kör kommandon frÃ¥n fil och avsluta sedan\n" + +#: help.c:86 +#, c-format +msgid " -l, --list list available databases, then exit\n" +msgstr "" +" -l, --list lista befintliga databaser och avsluta sedan\n" + +#: help.c:87 +#, c-format +msgid "" +" -v, --set=, --variable=NAME=VALUE\n" +" set psql variable NAME to VALUE\n" +" (e.g., -v ON_ERROR_STOP=1)\n" +msgstr "" +" -v, --set=, --variale=NAMN=VÄRDE\n" +" sätt psql-variabel NAMN till VÄRDE\n" +" (t.ex. -v ON_ERROR_STOP=1)\n" + +#: help.c:90 +#, c-format +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version visa versionsinformation, avsluta sedan\n" + +#: help.c:91 +#, c-format +msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" +msgstr " -X, --no-psqlrc läs inte startfilen (~/.psqlrc)\n" + +#: help.c:92 +#, c-format +msgid "" +" -1 (\"one\"), --single-transaction\n" +" execute as a single transaction (if non-" +"interactive)\n" +msgstr "" +" -1 (\"ett\"), --single-transaction\n" +" kör kommandofilen som en transaktion (om icke-" +"interaktiv)\n" + +#: help.c:94 +#, c-format +msgid " -?, --help[=options] show this help, then exit\n" +msgstr " -?, --help[=alternativ] visa denna hjälp, avsluta sedan\n" + +#: help.c:95 +#, c-format +msgid " --help=commands list backslash commands, then exit\n" +msgstr " --help=commands lista bakstreck-kommandon, avsluta sedan\n" + +#: help.c:96 +#, c-format +msgid " --help=variables list special variables, then exit\n" +msgstr " --help=variabler lista speciella variabler, avsluta sedan\n" + +#: help.c:98 +#, c-format +msgid "" +"\n" +"Input and output options:\n" +msgstr "" +"\n" +"Flaggor för in-/utmatning:\n" + +#: help.c:99 +#, c-format +msgid " -a, --echo-all echo all input from script\n" +msgstr " -a, --echo-all visa all indata frÃ¥n skript\n" + +#: help.c:100 +#, c-format +msgid " -b, --echo-errors echo failed commands\n" +msgstr " -b, --echo-errors visa misslyckade kommandon\n" + +#: help.c:101 +#, c-format +msgid " -e, --echo-queries echo commands sent to server\n" +msgstr " -e, --echo-queries visa kommandon som skickas till servern\n" + +#: help.c:102 +#, c-format +msgid "" +" -E, --echo-hidden display queries that internal commands generate\n" +msgstr " -E, --echo-hidden visa frÃ¥gor som interna kommandon skapar\n" + +#: help.c:103 +#, c-format +msgid " -L, --log-file=FILENAME send session log to file\n" +msgstr " -L, --log-file=FILENAME skicka sessions-logg till fil\n" + +#: help.c:104 +#, c-format +msgid "" +" -n, --no-readline disable enhanced command line editing (readline)\n" +msgstr "" +" -n, --no-readline slÃ¥ av förbättrad kommandoradsredigering " +"(readline)\n" + +#: help.c:105 +#, c-format +msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" +msgstr " -o, --output=FILNAMN skriv frÃ¥geresultat till fil (eller |rör)\n" + +#: help.c:106 +#, c-format +msgid "" +" -q, --quiet run quietly (no messages, only query output)\n" +msgstr "" +" -q, --quiet kör tyst (inga meddelanden, endast frÃ¥geutdata)\n" + +#: help.c:107 +#, c-format +msgid " -s, --single-step single-step mode (confirm each query)\n" +msgstr " -s, --single-step stegningsläge (bekräfta varje frÃ¥ga)\n" + +#: help.c:108 +#, c-format +msgid "" +" -S, --single-line single-line mode (end of line terminates SQL " +"command)\n" +msgstr "" +" -S, --single-line enradsläge (slutet pÃ¥ raden avslutar SQL-" +"kommando)\n" + +#: help.c:110 +#, c-format +msgid "" +"\n" +"Output format options:\n" +msgstr "" +"\n" +"Flaggor för utdataformat:\n" + +#: help.c:111 +#, c-format +msgid " -A, --no-align unaligned table output mode\n" +msgstr " -A, --no-align ojusterad utskrift av tabeller\n" + +#: help.c:112 +#, c-format +msgid "" +" -F, --field-separator=STRING\n" +" field separator for unaligned output (default: " +"\"%s\")\n" +msgstr "" +" -F, --field-separator=STRÄNG\n" +" fältseparator för icke justerad utdata (standard: " +"\"%s\")\n" + +#: help.c:115 +#, c-format +msgid " -H, --html HTML table output mode\n" +msgstr " -H, --html HTML-utskrift av tabeller\n" + +#: help.c:116 +#, c-format +msgid "" +" -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset " +"command)\n" +msgstr "" +" -P, --pset=VAR[=ARG] sätt utskriftsvariabel VAR till ARG (se kommando " +"\\pset)\n" + +#: help.c:117 +#, c-format +msgid "" +" -R, --record-separator=STRING\n" +" record separator for unaligned output (default: " +"newline)\n" +msgstr "" +" -R, --record-separator=STRÄNG\n" +" sätt postseparator för icke justerad utdata " +"(standard: newline)\n" + +#: help.c:119 +#, c-format +msgid " -t, --tuples-only print rows only\n" +msgstr " -t, --tuples-only visa endast rader\n" + +#: help.c:120 +#, c-format +msgid "" +" -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, " +"border)\n" +msgstr "" +" -T, --table-attr=TEXT sätt HTML-tabellers flaggor (t.ex. width, " +"border)\n" + +#: help.c:121 +#, c-format +msgid " -x, --expanded turn on expanded table output\n" +msgstr " -x, --expanded slÃ¥ pÃ¥ utökad utsrift av tabeller\n" + +#: help.c:122 +#, c-format +msgid "" +" -z, --field-separator-zero\n" +" set field separator for unaligned output to zero " +"byte\n" +msgstr "" +" -z, --field-separator-zero\n" +" sätt fältseparator för icke justerad utdata till " +"noll-byte\n" + +#: help.c:124 +#, c-format +msgid "" +" -0, --record-separator-zero\n" +" set record separator for unaligned output to zero " +"byte\n" +msgstr "" +" -0, --record-separator=zero\n" +" sätt postseparator för icke justerad utdata till " +"noll-byte\n" + +#: help.c:127 +#, c-format +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Flaggor för anslutning:\n" + +#: help.c:130 +#, c-format +msgid "" +" -h, --host=HOSTNAME database server host or socket directory " +"(default: \"%s\")\n" +msgstr "" +" -h, --host=VÄRDNAMN databasens värdnamn eller uttagkatalog (socket)\n" +" (standard: \"%s\")\n" + +#: help.c:131 +msgid "local socket" +msgstr "lokalt uttag (socket)" + +#: help.c:134 +#, c-format +msgid " -p, --port=PORT database server port (default: \"%s\")\n" +msgstr " -p, --port=PORT databasens serverport (standard: \"%s\")\n" + +#: help.c:140 +#, c-format +msgid " -U, --username=USERNAME database user name (default: \"%s\")\n" +msgstr "" +" -U, --username=ANVNAMN användarnamn för databasen (standard: \"%s\")\n" + +#: help.c:141 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password frÃ¥ga aldrig efter lösenord\n" + +#: help.c:142 +#, c-format +msgid "" +" -W, --password force password prompt (should happen " +"automatically)\n" +msgstr " -W, --password frÃ¥ga om lösenord (borde ske automatiskt)\n" + +#: help.c:144 +#, c-format +msgid "" +"\n" +"For more information, type \"\\?\" (for internal commands) or \"\\help" +"\" (for SQL\n" +"commands) from within psql, or consult the psql section in the PostgreSQL\n" +"documentation.\n" +"\n" +msgstr "" +"\n" +"För mer information, skriv \"\\?\" (för interna kommandon) eller\n" +"\"\\help\" (för SQL-kommandon) i psql, eller läs avsnittet om psql\n" +"i PostgreSQL-dokumentationen.\n" +"\n" + +#: help.c:147 +#, c-format +msgid "Report bugs to .\n" +msgstr "Rapportera fel till .\n" + +#: help.c:173 +#, c-format +msgid "General\n" +msgstr "Allmänna\n" + +#: help.c:174 +#, c-format +msgid "" +" \\copyright show PostgreSQL usage and distribution terms\n" +msgstr " \\copyright visa PostgreSQL-upphovsrättsinformation\n" + +#: help.c:175 +#, c-format +msgid "" +" \\errverbose show most recent error message at maximum " +"verbosity\n" +msgstr "" +" \\errverbose visa senste felmeddelande vid maximal verbositet\n" + +#: help.c:176 +#, c-format +msgid "" +" \\g [FILE] or ; execute query (and send results to file or |pipe)\n" +msgstr "" +" \\g [FILNAMN] eller ; kör frÃ¥gan (och skriv resultatet till fil eller |" +"rör)\n" + +#: help.c:177 +#, c-format +msgid "" +" \\gexec execute query, then execute each value in its " +"result\n" +msgstr "" +" \\gexec kör frÃ¥ga, kör sen varje värde i resultatet\n" + +#: help.c:178 +#, c-format +msgid "" +" \\gset [PREFIX] execute query and store results in psql variables\n" +msgstr "" +" \\gset [PREFIX] kör frÃ¥gan och spara resultatet i psql-variabler\n" + +#: help.c:179 +#, c-format +msgid " \\q quit psql\n" +msgstr " \\q avsluta psql\n" + +#: help.c:180 +#, c-format +msgid "" +" \\crosstabview [COLUMNS] execute query and display results in crosstab\n" +msgstr "" +" \\crosstabview [KOLUMNER] kör frÃ¥ga och visa resultatet i en korstabell\n" + +#: help.c:181 +#, c-format +msgid " \\watch [SEC] execute query every SEC seconds\n" +msgstr " \\watch [SEK] kör frÃ¥ga var SEK sekund\n" + +#: help.c:184 +#, c-format +msgid "Help\n" +msgstr "Hjälp\n" + +#: help.c:186 +#, c-format +msgid " \\? [commands] show help on backslash commands\n" +msgstr " \\? [kommandon] visa hjälp om backstreckkommandon\n" + +#: help.c:187 +#, c-format +msgid " \\? options show help on psql command-line options\n" +msgstr " \\? options visa hjälp för psqls kommandoradflaggor\n" + +#: help.c:188 +#, c-format +msgid " \\? variables show help on special variables\n" +msgstr " \\? variables visa hjälp om speciella variabler\n" + +#: help.c:189 +#, c-format +msgid "" +" \\h [NAME] help on syntax of SQL commands, * for all " +"commands\n" +msgstr "" +" \\h [NAMN] hjälp med syntaxen för SQL-kommandon, * för alla " +"kommandon\n" + +#: help.c:192 +#, c-format +msgid "Query Buffer\n" +msgstr "FrÃ¥gebuffert\n" + +#: help.c:193 +#, c-format +msgid "" +" \\e [FILE] [LINE] edit the query buffer (or file) with external " +"editor\n" +msgstr "" +" \\e [FIL] [RAD] redigera frÃ¥gebufferten (eller filen) med extern " +"redigerare\n" + +#: help.c:194 +#, c-format +msgid "" +" \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" +msgstr "" +" \\ef [FUNKNAMN [RAD]] redigera funktionsdefinition med extern " +"redigerare\n" + +#: help.c:195 +#, c-format +msgid " \\ev [VIEWNAME [LINE]] edit view definition with external editor\n" +msgstr "" +" \\ev [FUNKNAMN [RAD]] redigera vydefinition med extern redigerare\n" + +#: help.c:196 +#, c-format +msgid " \\p show the contents of the query buffer\n" +msgstr " \\p visa innehÃ¥llet i frÃ¥gebufferten\n" + +#: help.c:197 +#, c-format +msgid " \\r reset (clear) the query buffer\n" +msgstr " \\r nollställ (radera) frÃ¥gebufferten\n" + +#: help.c:199 +#, c-format +msgid " \\s [FILE] display history or save it to file\n" +msgstr "" +" \\s [FILNAMN] visa kommandohistorien eller spara den i fil\n" + +#: help.c:201 +#, c-format +msgid " \\w FILE write query buffer to file\n" +msgstr " \\w FILNAMN skriv frÃ¥gebuffert till fil\n" + +#: help.c:204 +#, c-format +msgid "Input/Output\n" +msgstr "In-/Utmatning\n" + +#: help.c:205 +#, c-format +msgid "" +" \\copy ... perform SQL COPY with data stream to the client " +"host\n" +msgstr "" +" \\copy ... utför SQL COPY med dataström till klientvärden\n" + +#: help.c:206 +#, c-format +msgid " \\echo [STRING] write string to standard output\n" +msgstr " \\echo [TEXT] skriv text till standard ut\n" + +#: help.c:207 +#, c-format +msgid " \\i FILE execute commands from file\n" +msgstr " \\i FILNAMN kör kommandon frÃ¥n fil\n" + +#: help.c:208 +#, c-format +msgid "" +" \\ir FILE as \\i, but relative to location of current " +"script\n" +msgstr "" +" \\ir FIL som \\i, men relativt platsen för aktuellt script\n" + +#: help.c:209 +#, c-format +msgid " \\o [FILE] send all query results to file or |pipe\n" +msgstr " \\o [FIL] skicka frÃ¥geresultat till fil eller |rör\n" + +#: help.c:210 +#, c-format +msgid "" +" \\qecho [STRING] write string to query output stream (see \\o)\n" +msgstr "" +" \\qecho [TEXT] skriv text till frÃ¥geutdataströmmen (se \\o)\n" + +#: help.c:213 +#, c-format +msgid "Informational\n" +msgstr "Informationer\n" + +#: help.c:214 +#, c-format +msgid " (options: S = show system objects, + = additional detail)\n" +msgstr " (flaggor: S = lista systemobjekt, + = mer detaljer)\n" + +#: help.c:215 +#, c-format +msgid " \\d[S+] list tables, views, and sequences\n" +msgstr " \\d[S+] lista tabeller, vyer och sekvenser\n" + +#: help.c:216 +#, c-format +msgid " \\d[S+] NAME describe table, view, sequence, or index\n" +msgstr " \\d[S+] NAMN beskriv tabell, vy, sekvens eller index\n" + +#: help.c:217 +#, c-format +msgid " \\da[S] [PATTERN] list aggregates\n" +msgstr " \\da[S] [MALL] lista aggregatfunktioner\n" + +#: help.c:218 +#, c-format +msgid " \\dA[+] [PATTERN] list access methods\n" +msgstr " \\dA[+] [MALL] lista accessmetoder\n" + +#: help.c:219 +#, c-format +msgid " \\db[+] [PATTERN] list tablespaces\n" +msgstr " \\db[+] [MALL] lista tabellutrymmen\n" + +#: help.c:220 +#, c-format +msgid " \\dc[S+] [PATTERN] list conversions\n" +msgstr " \\dc[S+] [MALL] lista konverteringar\n" + +#: help.c:221 +#, c-format +msgid " \\dC[+] [PATTERN] list casts\n" +msgstr " \\dC[+] [MALL] lista typomvandlingar\n" + +#: help.c:222 +#, c-format +msgid "" +" \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n" +msgstr "" +" \\dd[S] [MALL] visa objektbeskrivning som inte visas pÃ¥ andra " +"ställen\n" + +#: help.c:223 +#, c-format +msgid " \\ddp [PATTERN] list default privileges\n" +msgstr " \\ddp [MALL] lista standardrättigheter\n" + +#: help.c:224 +#, c-format +msgid " \\dD[S+] [PATTERN] list domains\n" +msgstr " \\dD[S+] [MALL] lista domäner\n" + +#: help.c:225 +#, c-format +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [MALL] lista främmande tabeller\n" + +#: help.c:226 +#, c-format +msgid " \\des[+] [PATTERN] list foreign servers\n" +msgstr " \\des[+] [MALL] lista främmande servrar\n" + +#: help.c:227 +#, c-format +msgid " \\deu[+] [PATTERN] list user mappings\n" +msgstr " \\deu[+] [MALL] lista användarmappning\n" + +#: help.c:228 +#, c-format +msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" +msgstr " \\dew[+] [MALL] lista främmande data-omvandlare\n" + +#: help.c:229 +#, c-format +msgid "" +" \\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions\n" +msgstr "" +" \\df[antw][S+] [MALL] lista [endast agg/normala/utlösar/window] " +"funktioner\n" + +#: help.c:230 +#, c-format +msgid " \\dF[+] [PATTERN] list text search configurations\n" +msgstr " \\dF[+] [MALL] lista textsökkonfigurationer\n" + +#: help.c:231 +#, c-format +msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" +msgstr " \\dFd[+] [MALL] lista textsökordlistor\n" + +#: help.c:232 +#, c-format +msgid " \\dFp[+] [PATTERN] list text search parsers\n" +msgstr " \\dFp[+] [MALL] lista textsökparsrar\n" + +#: help.c:233 +#, c-format +msgid " \\dFt[+] [PATTERN] list text search templates\n" +msgstr " \\dFt[+] [MALL] lista textsökmallar\n" + +#: help.c:234 +#, c-format +msgid " \\dg[S+] [PATTERN] list roles\n" +msgstr " \\dg[S+] [MALL] lista roller\n" + +#: help.c:235 +#, c-format +msgid " \\di[S+] [PATTERN] list indexes\n" +msgstr " \\di[S+] [MALL] lista index\n" + +#: help.c:236 +#, c-format +msgid " \\dl list large objects, same as \\lo_list\n" +msgstr " \\dl lista stora objekt, samma som \\lo_list\n" + +#: help.c:237 +#, c-format +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [MALL] lista procedursprÃ¥k\n" + +#: help.c:238 +#, c-format +msgid " \\dm[S+] [PATTERN] list materialized views\n" +msgstr " \\dm[S+] [MALL] lista materialiserade vyer\n" + +#: help.c:239 +#, c-format +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [MALL] lista scheman\n" + +#: help.c:240 +#, c-format +msgid " \\do[S] [PATTERN] list operators\n" +msgstr " \\do[S] [MALL] lista operatorer\n" + +#: help.c:241 +#, c-format +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [MALL] lista sorteringar (collation)\n" + +#: help.c:242 +#, c-format +msgid "" +" \\dp [PATTERN] list table, view, and sequence access privileges\n" +msgstr "" +" \\dp [MALL] lista Ã¥tkomsträttigheter för tabeller, vyer och " +"sekvenser\n" + +#: help.c:243 +#, c-format +msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n" +msgstr " \\drds [MALL1 [MALL2]] lista rollinställningar per databas\n" + +#: help.c:244 +#, c-format +msgid " \\ds[S+] [PATTERN] list sequences\n" +msgstr " \\ds[S+] [MALL] lista sekvenser\n" + +#: help.c:245 +#, c-format +msgid " \\dt[S+] [PATTERN] list tables\n" +msgstr " \\dt[S+] [MALL] lista tabeller\n" + +#: help.c:246 +#, c-format +msgid " \\dT[S+] [PATTERN] list data types\n" +msgstr " \\dT[S+] [MALL] lista datatyper\n" + +#: help.c:247 +#, c-format +msgid " \\du[S+] [PATTERN] list roles\n" +msgstr " \\du[S+] [MALL] lista roller\n" + +#: help.c:248 +#, c-format +msgid " \\dv[S+] [PATTERN] list views\n" +msgstr " \\dv[S+] [MALL] lista vyer\n" + +#: help.c:249 +#, c-format +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [MALL] lista främmande tabeller\n" + +#: help.c:250 +#, c-format +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [MALL] lista utökningar\n" + +#: help.c:251 +#, c-format +msgid " \\dy [PATTERN] list event triggers\n" +msgstr " \\dy [MALL] lista händelseutlösare\n" + +#: help.c:252 +#, c-format +msgid " \\l[+] [PATTERN] list databases\n" +msgstr " \\l[+] [MALL] lista databaser\n" + +#: help.c:253 +#, c-format +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] FUNKNAMN visa en funktions definition\n" + +#: help.c:254 +#, c-format +msgid " \\sv[+] VIEWNAME show a view's definition\n" +msgstr " \\sv[+] VYNAMN visa en vys definition\n" + +#: help.c:255 +#, c-format +msgid " \\z [PATTERN] same as \\dp\n" +msgstr " \\z [MALL] samma som \\dp\n" + +#: help.c:258 +#, c-format +msgid "Formatting\n" +msgstr "Formatering\n" + +#: help.c:259 +#, c-format +msgid "" +" \\a toggle between unaligned and aligned output mode\n" +msgstr "" +" \\a byt mellan ojusterat och justerat utdataformat\n" + +#: help.c:260 +#, c-format +msgid " \\C [STRING] set table title, or unset if none\n" +msgstr " \\C [TEXT] sätt tabelltitel, eller nollställ\n" + +#: help.c:261 +#, c-format +msgid "" +" \\f [STRING] show or set field separator for unaligned query " +"output\n" +msgstr "" +" \\f [TEXT] visa eller sätt fältseparatorn för ojusterad " +"utmatning\n" + +#: help.c:262 +#, 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:264 +#, c-format +msgid "" +" \\pset [NAME [VALUE]] set table output option\n" +" (NAME := {format|border|expanded|fieldsep|" +"fieldsep_zero|footer|null|\n" +" numericlocale|recordsep|recordsep_zero|tuples_only|" +"title|tableattr|pager|\n" +" unicode_border_linestyle|unicode_column_linestyle|" +"unicode_header_linestyle})\n" +msgstr "" +" \\pset [NAMN [VÄRDE]] ssätt tabellutskriftsval\n" +" (NAMN := {format|border|expanded|fieldsep|fieldsep_zero|footer|null|\n" +" numericlocale|recordsep|recordsep_zero|tuples_only|title|tableattr|pager|\n" +" unicode_border_linestyle|unicode_column_linestyle|unicode_header_linestyle})\n" + +#: help.c:268 +#, 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:270 +#, c-format +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:271 +#, 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:275 +#, c-format +msgid "Connection\n" +msgstr "Förbindelse\n" + +#: help.c:277 +#, 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:281 +#, c-format +msgid "" +" \\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}\n" +" connect to new database (currently no connection)\n" +msgstr "" +" \\c[onnect] {[DBNAMN|- ANVÄNDARE|- VÄRD|- PORT|-] | conninfo}\n" +" koppla upp mot ny databas (för närvarande ingen " +"uppkoppling)\n" + +#: help.c:283 +#, c-format +msgid " \\encoding [ENCODING] show or set client encoding\n" +msgstr " \\encoding [KODNING] visa eller sätt klientens teckenkodning\n" + +#: help.c:284 +#, c-format +msgid " \\password [USERNAME] securely change the password for a user\n" +msgstr "" +" \\password [ANVÄNDARNAMN] byt användares lösenord pÃ¥ ett säkert sätt\n" + +#: help.c:285 +#, c-format +msgid "" +" \\conninfo display information about current connection\n" +msgstr " \\conninfo visa information om aktuell uppkoppling\n" + +#: help.c:288 +#, c-format +msgid "Operating System\n" +msgstr "Operativsystem\n" + +#: help.c:289 +#, c-format +msgid " \\cd [DIR] change the current working directory\n" +msgstr " \\cd [KATALOG] byt den aktuella katalogen\n" + +#: help.c:290 +#, c-format +msgid " \\setenv NAME [VALUE] set or unset environment variable\n" +msgstr " \\setenv NAMN [VÄRDE] sätt eller nollställ omgivningsvariabel\n" + +#: help.c:291 +#, 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:293 +#, c-format +msgid "" +" \\! [COMMAND] execute command in shell or start interactive " +"shell\n" +msgstr "" +" \\! [KOMMANDO] kör kommando i skal eller starta interaktivt skal\n" + +#: help.c:296 +#, c-format +msgid "Variables\n" +msgstr "Variabler\n" + +#: help.c:297 +#, c-format +msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" +msgstr " \\prompt [TEXT] NAMN be användaren att sätta en intern variabel\n" + +#: help.c:298 +#, c-format +msgid "" +" \\set [NAME [VALUE]] set internal variable, or list all if no " +"parameters\n" +msgstr "" +" \\set [NAMN [VÄRDE]] sätt intern variabel, eller lista alla om ingen " +"param\n" + +#: help.c:299 +#, c-format +msgid " \\unset NAME unset (delete) internal variable\n" +msgstr " \\unset NAME ta bort intern variabel\n" + +#: help.c:302 +#, c-format +msgid "Large Objects\n" +msgstr "Stora objekt\n" + +#: help.c:303 +#, c-format +msgid "" +" \\lo_export LOBOID FILE\n" +" \\lo_import FILE [COMMENT]\n" +" \\lo_list\n" +" \\lo_unlink LOBOID large object operations\n" +msgstr "" +" \\lo_export LOBOID FIL\n" +" \\lo_import FIL [KOMMENTAR]\n" +" \\lo_list\n" +" \\lo_unlink LOBOID operationer pÃ¥ stora objekt\n" + +#: help.c:330 +#, c-format +msgid "" +"List of specially treated variables\n" +"\n" +msgstr "Lista av variabler som hanteras speciellt\n" + +#: help.c:332 +#, c-format +msgid "psql variables:\n" +msgstr "psql-variabler:\n" + +#: help.c:334 +#, c-format +msgid "" +" psql --set=NAME=VALUE\n" +" or \\set NAME VALUE inside psql\n" +"\n" +msgstr "" +" psql --set=NAMN=VÄRDE\n" +" eller \\set NAMN VÄRDE inne i psql\n" +"\n" + +#: help.c:336 +#, c-format +msgid "" +" AUTOCOMMIT if set, successful SQL commands are automatically " +"committed\n" +msgstr "" +" AUTOCOMMIT om satt, efterföljande SQL-kommandon commit:as " +"automatiskt\n" + +#: help.c:337 +#, c-format +msgid "" +" COMP_KEYWORD_CASE determines the case used to complete SQL key words\n" +" [lower, upper, preserve-lower, preserve-upper]\n" +msgstr "" +" COMP_KEYWORD_CASE bestämmer skiftläge för att komplettera SQL-nyckelord\n" +" [lower, upper, preserve-lower, preserve-upper]\n" + +#: help.c:339 +#, c-format +msgid " DBNAME the currently connected database name\n" +msgstr " DBNAME den uppkopplade databasens namn\n" + +#: help.c:340 +#, c-format +msgid "" +" ECHO controls what input is written to standard output\n" +" [all, errors, none, queries]\n" +msgstr "" +" ECHO bestämmer vilken indata som skrivs till standard ut\n" +" [all, errors, none, queries]\n" + +#: help.c:342 +#, c-format +msgid "" +" ECHO_HIDDEN if set, display internal queries executed by backslash " +"commands;\n" +" if set to \"noexec\", just show without execution\n" +msgstr "" +" ECHO_HIDDEN 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:344 +#, c-format +msgid " ENCODING current client character set encoding\n" +msgstr " ENCODING aktuell teckenkodning för klient\n" + +#: help.c:345 +#, c-format +msgid "" +" FETCH_COUNT the number of result rows to fetch and display at a " +"time\n" +" (default: 0=unlimited)\n" +msgstr "" +" FETCH_COUNT antal resultatrader som hämtas och visas Ã¥t gÃ¥ngen\n" +" (standard: 0=obegränsat)\n" + +#: help.c:347 +#, c-format +msgid "" +" HISTCONTROL controls command history [ignorespace, ignoredups, " +"ignoreboth]\n" +msgstr "" +" HISTCONTROL styr kommandohistoriken [ignorespace, ignoredups, " +"ignoreboth]\n" + +#: help.c:348 +#, c-format +msgid " HISTFILE file name used to store the command history\n" +msgstr " HISTFILE filnamn för att spara kommandohistoriken i\n" + +#: help.c:349 +#, c-format +msgid "" +" HISTSIZE the number of commands to store in the command history\n" +msgstr " HISTSIZE antal kommandon att spara i kommandohistoriken\n" + +#: help.c:350 +#, c-format +msgid " HOST the currently connected database server host\n" +msgstr " HOST den uppkopplade databasens värd\n" + +#: help.c:351 +#, c-format +msgid "" +" IGNOREEOF if unset, sending an EOF to interactive session " +"terminates application\n" +msgstr " IGNOREEOF om ej satt, att skicka en EOF till en interaktiv session avslutar applikationen\n" + +#: help.c:352 +#, c-format +msgid " LASTOID value of the last affected OID\n" +msgstr " LASTOID värdet av den senast pÃ¥verkade OID\n" + +#: help.c:353 +#, c-format +msgid "" +" ON_ERROR_ROLLBACK if set, an error doesn't stop a transaction (uses " +"implicit savepoints)\n" +msgstr "" +" ON_ERROR_ROLLBACK om satt, ett fel stoppar inte en transaktion (använder " +"implicita sparpunkter)\n" + +#: help.c:354 +#, c-format +msgid " ON_ERROR_STOP stop batch execution after error\n" +msgstr " ON_ERROR_STOP avsluta batchkörning vid fel\n" + +#: help.c:355 +#, c-format +msgid " PORT server port of the current connection\n" +msgstr " PORT värdport för den aktuella uppkopplingen\n" + +#: help.c:356 +#, c-format +msgid " PROMPT1 specifies the standard psql prompt\n" +msgstr " PROMPT1 anger standardprompten för psql\n" + +#: help.c:357 +#, c-format +msgid "" +" PROMPT2 specifies the prompt used when a statement continues " +"from a previous line\n" +msgstr "" +" PROMPT2 anger den prompt som används om en sats forsätter pÃ¥ " +"efterföljande rad\n" + +#: help.c:358 +#, c-format +msgid "" +" PROMPT3 specifies the prompt used during COPY ... FROM STDIN\n" +msgstr "" +" PROMPT3 anger den prompt som används för COPY ... FROM STDIN\n" + +#: help.c:359 +#, c-format +msgid " QUIET run quietly (same as -q option)\n" +msgstr " QUIET kör tyst (samma som flaggan -q)\n" + +#: help.c:360 +#, c-format +msgid "" +" SHOW_CONTEXT controls display of message context fields [never, " +"errors, always]\n" +msgstr "" +" SHOW_CONTEXT styr visning av meddelandekontextfält [never, errors, " +"always]\n" + +#: help.c:361 +#, c-format +msgid "" +" SINGLELINE end of line terminates SQL command mode (same as -S " +"option)\n" +msgstr "" +" SINGLELINE läge där slut pÃ¥ raden avslutar SQL-kommandon (samma " +"som flaggan -S )\n" + +#: help.c:362 +#, c-format +msgid " SINGLESTEP single-step mode (same as -s option)\n" +msgstr " SINGLESTEP stegningsläge (samma som flaggan -s)\n" + +#: help.c:363 +#, c-format +msgid " USER the currently connected database user\n" +msgstr " USER den uppkopplade databasanvändaren\n" + +#: help.c:364 +#, c-format +msgid "" +" VERBOSITY controls verbosity of error reports [default, verbose, " +"terse]\n" +msgstr "" +" VERBOSITY styr verbositet för felrapporter [default, verbose, " +"terse]\n" + +#: help.c:366 +#, c-format +msgid "" +"\n" +"Display settings:\n" +msgstr "" +"\n" +"Visningsinställningar:\n" + +#: help.c:368 +#, c-format +msgid "" +" psql --pset=NAME[=VALUE]\n" +" or \\pset NAME [VALUE] inside psql\n" +"\n" +msgstr "" +" psql --pset=NAMN[=VÄRDE]\n" +" eller \\pset NAMN [VÄRDE] inne i psql\n" +"\n" + +#: help.c:370 +#, c-format +msgid " border border style (number)\n" +msgstr " border ramstil (nummer)\n" + +#: help.c:371 +#, c-format +msgid " columns target width for the wrapped format\n" +msgstr " columns mÃ¥lvidd för wrappade format\n" + +#: help.c:372 +#, c-format +msgid " expanded (or x) expanded output [on, off, auto]\n" +msgstr " expanded (eller x) expanderad utdata [on, off, auto]\n" + +#: help.c:373 +#, c-format +msgid "" +" fieldsep field separator for unaligned output (default \"%s\")\n" +msgstr "" +" fieldsep fältseparator för ej justeras utdata (standard \"%s\")\n" + +#: help.c:374 +#, c-format +msgid "" +" fieldsep_zero set field separator for unaligned output to zero byte\n" +msgstr "" +" fieldsep_zero sätt fältseparator för ej justerad utdata till noll-" +"byte\n" + +#: help.c:375 +#, c-format +msgid "" +" footer enable or disable display of the table footer [on, " +"off]\n" +msgstr " footer slÃ¥ pÃ¥/av visning av tabellfot [on, off]\n" + +#: help.c:376 +#, c-format +msgid "" +" format set output format [unaligned, aligned, wrapped, html, " +"asciidoc, ...]\n" +msgstr "" +" format sätt utdataformat [unaligned, aligned, wrapped, html, " +"asciidoc, ...]\n" + +#: help.c:377 +#, c-format +msgid "" +" linestyle set the border line drawing style [ascii, old-ascii, " +"unicode]\n" +msgstr " linestyle sätt ramlinjestil [ascii, old-ascii, unicode]\n" + +#: help.c:378 +#, c-format +msgid "" +" null set the string to be printed in place of a null value\n" +msgstr " null sätt sträng som visas istället för null-värden\n" + +#: help.c:379 +#, c-format +msgid "" +" numericlocale enable or disable display of a locale-specific " +"character to separate\n" +" groups of digits [on, off]\n" +msgstr "" +" numericlocale slÃ¥ pÃ¥/av visning av lokalspecifika tecken för " +"gruppering\n" +" av siffror [on, off]\n" + +#: help.c:381 +#, c-format +msgid "" +" pager control when an external pager is used [yes, no, " +"always]\n" +msgstr "" +" pager styr när en extern pagenerare används [yes, no, " +"always]\n" + +#: help.c:382 +#, c-format +msgid " recordsep record (line) separator for unaligned output\n" +msgstr " recordsep post (rad) separator för ej justerad utdata\n" + +#: help.c:383 +#, c-format +msgid "" +" recordsep_zero set record separator for unaligned output to zero byte\n" +msgstr "" +" recordsep_zero sätt postseparator för ej justerad utdata till noll-" +"byte\n" + +#: help.c:384 +#, c-format +msgid "" +" tableattr (or T) 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) ange attribut för tabelltaggen i html-format eller " +"proportionella\n" +" kolumnvidder för vänsterjusterade datatypet i latex-" +"longtable-format\n" + +#: help.c:386 +#, c-format +msgid "" +" title set the table title for any subsequently printed " +"tables\n" +msgstr "" +" title sätt tabelltitel för efterkommande tabellutskrifter\n" + +#: help.c:387 +#, c-format +msgid " tuples_only if set, only actual table data is shown\n" +msgstr " tuples_only om satt, bara tabelldatan visas\n" + +#: help.c:388 +#, c-format +msgid "" +" unicode_border_linestyle\n" +" unicode_column_linestyle\n" +" unicode_header_linestyle\n" +" set the style of Unicode line drawing [single, double]\n" +msgstr "" +" unicode_border_linestyle\n" +" unicode_column_linestyle\n" +" unicode_header_linestyle\n" +" sätter stilen pÃ¥ Unicode-linjer [single, double]\n" + +#: help.c:393 +#, c-format +msgid "" +"\n" +"Environment variables:\n" +msgstr "" +"\n" +"Omgivningsvariabler:\n" + +#: help.c:397 +#, c-format +msgid "" +" NAME=VALUE [NAME=VALUE] psql ...\n" +" or \\setenv NAME [VALUE] inside psql\n" +"\n" +msgstr "" +" NAMN=VÄRDE [NAMN=VÄRDE] psql ...\n" +" eller \\setenv NAMN [VÄRDE] inne psql\n" +"\n" + +#: help.c:399 +#, c-format +msgid "" +" set NAME=VALUE\n" +" psql ...\n" +" or \\setenv NAME [VALUE] inside psql\n" +"\n" +msgstr "" +" set NAMN=VÄRDE\n" +" psql ...\n" +" eller \\setenv NAMN [VÄRDE] inne i psql\n" +"\n" + +#: help.c:402 +#, c-format +msgid " COLUMNS number of columns for wrapped format\n" +msgstr " COLUMNS antal kolumner i wrappade format\n" + +#: help.c:403 +#, c-format +msgid " PAGER name of external pager program\n" +msgstr " PAGER namnet pÃ¥ den externa pageneraren\n" + +#: help.c:404 +#, c-format +msgid "" +" PGAPPNAME same as the application_name connection parameter\n" +msgstr "" +" PGAPPNAME samma som anslutningsparametern \"application_name\"\n" + +#: help.c:405 +#, c-format +msgid " PGDATABASE same as the dbname connection parameter\n" +msgstr " PGDATABASE samma som anslutningsparametern \"dbname\"\n" + +#: help.c:406 +#, c-format +msgid " PGHOST same as the host connection parameter\n" +msgstr " PGHOST samma som anslutningsparametern \"host\"\n" + +#: help.c:407 +#, c-format +msgid " PGPORT same as the port connection parameter\n" +msgstr " PGPORT samma som anslutingsparametern \"port\"\n" + +#: help.c:408 +#, c-format +msgid " PGUSER same as the user connection parameter\n" +msgstr " PGUSER samma som anslutningsparametern \"user\"\n" + +#: help.c:409 +#, c-format +msgid " PGPASSWORD connection password (not recommended)\n" +msgstr " PGPASSWORD uppkoppingens lösenord (rekommenderas inte)\n" + +#: help.c:410 +#, c-format +msgid " PGPASSFILE password file name\n" +msgstr " PGPASSFILE lösenordsfilnamn\n" + +#: help.c:411 +#, c-format +msgid "" +" PSQL_EDITOR, EDITOR, VISUAL\n" +" editor used by the \\e, \\ef, and \\ev commands\n" +msgstr "" +" PSQL_EDITOR, EDITOR, VISUAL\n" +" redigerare som används av kommanona \\e, \\ef och \\ev\n" + +#: help.c:413 +#, c-format +msgid "" +" PSQL_EDITOR_LINENUMBER_ARG\n" +" how to specify a line number when invoking the editor\n" +msgstr "" +" PSQL_EDITOR_LINENUMBER_ARG\n" +" hur radnummer anges när redigerare startas\n" + +#: help.c:415 +#, c-format +msgid "" +" PSQL_HISTORY alternative location for the command history file\n" +msgstr " PSQL_HISTORY alternativ plats för kommandohistorikfilen\n" + +#: help.c:416 +#, c-format +msgid " PSQLRC alternative location for the user's .psqlrc file\n" +msgstr "" +" PSQLRC alternativ plats för användarens \".psqlrc\"-fil\n" + +#: help.c:417 +#, c-format +msgid " SHELL shell used by the \\! command\n" +msgstr " SHELL skalet som används av kommandot \\!\n" + +#: help.c:418 +#, c-format +msgid " TMPDIR directory for temporary files\n" +msgstr " TMPDIR katalog för temporärfiler\n" + +#: help.c:461 +msgid "Available help:\n" +msgstr "Tillgänglig hjälp:\n" + +#: help.c:545 +#, c-format +msgid "" +"Command: %s\n" +"Description: %s\n" +"Syntax:\n" +"%s\n" +"\n" +msgstr "" +"Kommando: %s\n" +"Beskrivning: %s\n" +"Syntax:\n" +"%s\n" +"\n" + +#: help.c:561 +#, 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:216 +#, c-format +msgid "could not read from input file: %s\n" +msgstr "kunde inte läsa frÃ¥n infilen: %s\n" + +#: input.c:471 input.c:510 +#, c-format +msgid "could not save history to file \"%s\": %s\n" +msgstr "kunde inte skriva kommandohistorien till \"%s\": %s\n" + +#: input.c:530 +#, c-format +msgid "history is not supported by this installation\n" +msgstr "historia stöds inte av denna installationen\n" + +#: large_obj.c:64 +#, c-format +msgid "%s: not connected to a database\n" +msgstr "%s: ej uppkopplad mot en databas\n" + +#: large_obj.c:83 +#, c-format +msgid "%s: current transaction is aborted\n" +msgstr "%s: aktuell transaktion är avbruten\n" + +#: large_obj.c:86 +#, c-format +msgid "%s: unknown transaction status\n" +msgstr "%s: okänd transaktionsstatus\n" + +#: large_obj.c:287 large_obj.c:298 +msgid "ID" +msgstr "ID" + +#: large_obj.c:308 +msgid "Large objects" +msgstr "Stora objekt" + +#: mainloop.c:168 +#, c-format +msgid "Use \"\\q\" to leave %s.\n" +msgstr "Använd \"\\q\" för att lämna %s.\n" + +#: mainloop.c:190 +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:210 +msgid "You are using psql, the command-line interface to PostgreSQL." +msgstr "Du använder psql, den interaktiva PostgreSQL-terminalen." + +#: mainloop.c:211 +#, 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" + +#: psqlscanslash.l:584 +#, c-format +msgid "unterminated quoted string\n" +msgstr "icketerminerad citerat sträng\n" + +#: psqlscanslash.l:738 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: slut pÃ¥ minne\n" + +#: sql_help.c:36 sql_help.c:39 sql_help.c:42 sql_help.c:64 sql_help.c:66 +#: sql_help.c:68 sql_help.c:79 sql_help.c:81 sql_help.c:83 sql_help.c:109 +#: sql_help.c:115 sql_help.c:117 sql_help.c:119 sql_help.c:121 sql_help.c:124 +#: sql_help.c:126 sql_help.c:128 sql_help.c:221 sql_help.c:223 sql_help.c:224 +#: sql_help.c:226 sql_help.c:228 sql_help.c:231 sql_help.c:233 sql_help.c:235 +#: sql_help.c:237 sql_help.c:249 sql_help.c:250 sql_help.c:251 sql_help.c:253 +#: sql_help.c:300 sql_help.c:302 sql_help.c:304 sql_help.c:306 sql_help.c:367 +#: sql_help.c:372 sql_help.c:374 sql_help.c:417 sql_help.c:419 sql_help.c:422 +#: sql_help.c:424 sql_help.c:491 sql_help.c:496 sql_help.c:501 sql_help.c:506 +#: sql_help.c:511 sql_help.c:560 sql_help.c:562 sql_help.c:564 sql_help.c:566 +#: sql_help.c:569 sql_help.c:571 sql_help.c:582 sql_help.c:584 sql_help.c:625 +#: sql_help.c:627 sql_help.c:629 sql_help.c:632 sql_help.c:634 sql_help.c:636 +#: sql_help.c:669 sql_help.c:673 sql_help.c:677 sql_help.c:696 sql_help.c:699 +#: sql_help.c:702 sql_help.c:731 sql_help.c:743 sql_help.c:751 sql_help.c:754 +#: sql_help.c:757 sql_help.c:772 sql_help.c:775 sql_help.c:819 sql_help.c:842 +#: sql_help.c:853 sql_help.c:855 sql_help.c:872 sql_help.c:881 sql_help.c:883 +#: sql_help.c:885 sql_help.c:897 sql_help.c:901 sql_help.c:903 sql_help.c:987 +#: sql_help.c:989 sql_help.c:992 sql_help.c:995 sql_help.c:997 sql_help.c:999 +#: sql_help.c:1060 sql_help.c:1062 sql_help.c:1064 sql_help.c:1067 +#: sql_help.c:1088 sql_help.c:1091 sql_help.c:1094 sql_help.c:1097 +#: sql_help.c:1101 sql_help.c:1103 sql_help.c:1105 sql_help.c:1107 +#: sql_help.c:1121 sql_help.c:1124 sql_help.c:1126 sql_help.c:1128 +#: sql_help.c:1138 sql_help.c:1140 sql_help.c:1150 sql_help.c:1152 +#: sql_help.c:1162 sql_help.c:1165 sql_help.c:1186 sql_help.c:1188 +#: sql_help.c:1190 sql_help.c:1193 sql_help.c:1195 sql_help.c:1197 +#: sql_help.c:1247 sql_help.c:1289 sql_help.c:1292 sql_help.c:1294 +#: sql_help.c:1296 sql_help.c:1298 sql_help.c:1300 sql_help.c:1303 +#: sql_help.c:1343 sql_help.c:1548 sql_help.c:1612 sql_help.c:1631 +#: sql_help.c:1644 sql_help.c:1698 sql_help.c:1702 sql_help.c:1712 +#: sql_help.c:1732 sql_help.c:1757 sql_help.c:1775 sql_help.c:1804 +#: sql_help.c:1879 sql_help.c:1921 sql_help.c:1943 sql_help.c:1963 +#: sql_help.c:1964 sql_help.c:1999 sql_help.c:2019 sql_help.c:2041 +#: sql_help.c:2054 sql_help.c:2085 sql_help.c:2110 sql_help.c:2154 +#: sql_help.c:2340 sql_help.c:2353 sql_help.c:2370 sql_help.c:2386 +#: sql_help.c:2425 sql_help.c:2476 sql_help.c:2480 sql_help.c:2482 +#: sql_help.c:2488 sql_help.c:2506 sql_help.c:2533 sql_help.c:2568 +#: sql_help.c:2580 sql_help.c:2589 sql_help.c:2633 sql_help.c:2647 +#: sql_help.c:2675 sql_help.c:2683 sql_help.c:2691 sql_help.c:2699 +#: sql_help.c:2707 sql_help.c:2715 sql_help.c:2723 sql_help.c:2731 +#: sql_help.c:2740 sql_help.c:2751 sql_help.c:2759 sql_help.c:2767 +#: sql_help.c:2775 sql_help.c:2783 sql_help.c:2793 sql_help.c:2802 +#: sql_help.c:2811 sql_help.c:2819 sql_help.c:2828 sql_help.c:2836 +#: sql_help.c:2845 sql_help.c:2853 sql_help.c:2861 sql_help.c:2869 +#: sql_help.c:2877 sql_help.c:2885 sql_help.c:2893 sql_help.c:2901 +#: sql_help.c:2909 sql_help.c:2926 sql_help.c:2935 sql_help.c:2943 +#: sql_help.c:2960 sql_help.c:2975 sql_help.c:3240 sql_help.c:3291 +#: sql_help.c:3320 sql_help.c:3328 sql_help.c:3747 sql_help.c:3795 +#: sql_help.c:3936 +msgid "name" +msgstr "namn" + +#: sql_help.c:37 sql_help.c:40 sql_help.c:43 sql_help.c:311 sql_help.c:1409 +#: sql_help.c:2648 sql_help.c:3543 +msgid "aggregate_signature" +msgstr "aggregatsignatur" + +#: sql_help.c:38 sql_help.c:65 sql_help.c:80 sql_help.c:116 sql_help.c:236 +#: sql_help.c:254 sql_help.c:375 sql_help.c:423 sql_help.c:500 sql_help.c:546 +#: sql_help.c:561 sql_help.c:583 sql_help.c:633 sql_help.c:698 sql_help.c:753 +#: sql_help.c:774 sql_help.c:820 sql_help.c:844 sql_help.c:854 sql_help.c:884 +#: sql_help.c:904 sql_help.c:996 sql_help.c:1061 sql_help.c:1104 +#: sql_help.c:1125 sql_help.c:1139 sql_help.c:1151 sql_help.c:1164 +#: sql_help.c:1194 sql_help.c:1248 sql_help.c:1297 +msgid "new_name" +msgstr "nytt_namn" + +#: sql_help.c:41 sql_help.c:67 sql_help.c:82 sql_help.c:118 sql_help.c:234 +#: sql_help.c:252 sql_help.c:373 sql_help.c:459 sql_help.c:505 sql_help.c:585 +#: sql_help.c:594 sql_help.c:652 sql_help.c:672 sql_help.c:701 sql_help.c:756 +#: sql_help.c:856 sql_help.c:882 sql_help.c:902 sql_help.c:1045 sql_help.c:1063 +#: sql_help.c:1106 sql_help.c:1127 sql_help.c:1189 sql_help.c:1295 +#: sql_help.c:2326 +msgid "new_owner" +msgstr "ny_ägare" + +#: sql_help.c:44 sql_help.c:69 sql_help.c:84 sql_help.c:238 sql_help.c:303 +#: sql_help.c:425 sql_help.c:510 sql_help.c:635 sql_help.c:676 sql_help.c:704 +#: sql_help.c:759 sql_help.c:886 sql_help.c:998 sql_help.c:1108 sql_help.c:1129 +#: sql_help.c:1141 sql_help.c:1153 sql_help.c:1196 sql_help.c:1299 +msgid "new_schema" +msgstr "nytt_schema" + +#: sql_help.c:45 sql_help.c:1462 sql_help.c:2649 sql_help.c:3562 +msgid "where aggregate_signature is:" +msgstr "där aggregatsignatur är:" + +#: sql_help.c:46 sql_help.c:49 sql_help.c:52 sql_help.c:321 sql_help.c:346 +#: sql_help.c:349 sql_help.c:352 sql_help.c:492 sql_help.c:497 sql_help.c:502 +#: sql_help.c:507 sql_help.c:512 sql_help.c:1427 sql_help.c:1463 +#: sql_help.c:1466 sql_help.c:1469 sql_help.c:1613 sql_help.c:1632 +#: sql_help.c:1635 sql_help.c:1880 sql_help.c:2650 sql_help.c:2653 +#: sql_help.c:2656 sql_help.c:2741 sql_help.c:3126 sql_help.c:3458 +#: sql_help.c:3549 sql_help.c:3563 sql_help.c:3566 sql_help.c:3569 +msgid "argmode" +msgstr "arg_läge" + +#: sql_help.c:47 sql_help.c:50 sql_help.c:53 sql_help.c:322 sql_help.c:347 +#: sql_help.c:350 sql_help.c:353 sql_help.c:493 sql_help.c:498 sql_help.c:503 +#: sql_help.c:508 sql_help.c:513 sql_help.c:1428 sql_help.c:1464 +#: sql_help.c:1467 sql_help.c:1470 sql_help.c:1614 sql_help.c:1633 +#: sql_help.c:1636 sql_help.c:1881 sql_help.c:2651 sql_help.c:2654 +#: sql_help.c:2657 sql_help.c:2742 sql_help.c:3550 sql_help.c:3564 +#: sql_help.c:3567 sql_help.c:3570 +msgid "argname" +msgstr "arg_namn" + +#: sql_help.c:48 sql_help.c:51 sql_help.c:54 sql_help.c:323 sql_help.c:348 +#: sql_help.c:351 sql_help.c:354 sql_help.c:494 sql_help.c:499 sql_help.c:504 +#: sql_help.c:509 sql_help.c:514 sql_help.c:1429 sql_help.c:1465 +#: sql_help.c:1468 sql_help.c:1471 sql_help.c:1882 sql_help.c:2652 +#: sql_help.c:2655 sql_help.c:2658 sql_help.c:2743 sql_help.c:3551 +#: sql_help.c:3565 sql_help.c:3568 sql_help.c:3571 +msgid "argtype" +msgstr "arg_typ" + +#: sql_help.c:110 sql_help.c:370 sql_help.c:448 sql_help.c:460 sql_help.c:814 +#: sql_help.c:899 sql_help.c:1122 sql_help.c:1242 sql_help.c:1274 +#: sql_help.c:1519 sql_help.c:1525 sql_help.c:1807 sql_help.c:1839 +#: sql_help.c:1846 sql_help.c:1922 sql_help.c:2086 sql_help.c:2175 +#: sql_help.c:2355 sql_help.c:2534 sql_help.c:2556 sql_help.c:2994 +#: sql_help.c:3160 +msgid "option" +msgstr "flaggor" + +#: sql_help.c:111 sql_help.c:815 sql_help.c:1243 sql_help.c:1923 +#: sql_help.c:2087 sql_help.c:2535 +msgid "where option can be:" +msgstr "där flaggor kan vara:" + +#: sql_help.c:112 sql_help.c:1739 +msgid "allowconn" +msgstr "tillÃ¥tansl" + +#: sql_help.c:113 sql_help.c:816 sql_help.c:1244 sql_help.c:1740 +#: sql_help.c:2088 sql_help.c:2536 +msgid "connlimit" +msgstr "anslutningstak" + +#: sql_help.c:114 sql_help.c:1741 +msgid "istemplate" +msgstr "ärmall" + +#: sql_help.c:120 sql_help.c:573 sql_help.c:638 sql_help.c:1001 sql_help.c:1038 +msgid "new_tablespace" +msgstr "nytt_tabellutrymme" + +#: sql_help.c:122 sql_help.c:125 sql_help.c:127 sql_help.c:519 sql_help.c:521 +#: sql_help.c:522 sql_help.c:823 sql_help.c:827 sql_help.c:830 sql_help.c:915 +#: sql_help.c:918 sql_help.c:1251 sql_help.c:1255 sql_help.c:1258 +#: sql_help.c:1891 sql_help.c:3345 sql_help.c:3736 +msgid "configuration_parameter" +msgstr "konfigurationsparameter" + +#: sql_help.c:123 sql_help.c:371 sql_help.c:443 sql_help.c:449 sql_help.c:461 +#: sql_help.c:520 sql_help.c:568 sql_help.c:644 sql_help.c:650 sql_help.c:824 +#: sql_help.c:900 sql_help.c:916 sql_help.c:917 sql_help.c:1020 sql_help.c:1040 +#: sql_help.c:1066 sql_help.c:1123 sql_help.c:1252 sql_help.c:1275 +#: sql_help.c:1808 sql_help.c:1840 sql_help.c:1847 sql_help.c:1892 +#: sql_help.c:1893 sql_help.c:1951 sql_help.c:1983 sql_help.c:2176 +#: sql_help.c:2250 sql_help.c:2258 sql_help.c:2290 sql_help.c:2312 +#: sql_help.c:2329 sql_help.c:2356 sql_help.c:2557 sql_help.c:3161 +#: sql_help.c:3737 sql_help.c:3738 +msgid "value" +msgstr "värde" + +#: sql_help.c:185 +msgid "target_role" +msgstr "mÃ¥lroll" + +#: sql_help.c:186 sql_help.c:1791 sql_help.c:2134 sql_help.c:2139 +#: sql_help.c:3108 sql_help.c:3115 sql_help.c:3129 sql_help.c:3135 +#: sql_help.c:3440 sql_help.c:3447 sql_help.c:3461 sql_help.c:3467 +msgid "schema_name" +msgstr "schemanamn" + +#: sql_help.c:187 +msgid "abbreviated_grant_or_revoke" +msgstr "förkortad_grant_eller_revoke" + +#: sql_help.c:188 +msgid "where abbreviated_grant_or_revoke is one of:" +msgstr "där förkortad_grant_eller_revok är en av:" + +#: sql_help.c:189 sql_help.c:190 sql_help.c:191 sql_help.c:192 sql_help.c:193 +#: sql_help.c:194 sql_help.c:195 sql_help.c:196 sql_help.c:544 sql_help.c:572 +#: sql_help.c:637 sql_help.c:777 sql_help.c:834 sql_help.c:1000 sql_help.c:1262 +#: sql_help.c:1926 sql_help.c:1927 sql_help.c:1928 sql_help.c:1929 +#: sql_help.c:1930 sql_help.c:2056 sql_help.c:2091 sql_help.c:2092 +#: sql_help.c:2093 sql_help.c:2094 sql_help.c:2095 sql_help.c:2539 +#: sql_help.c:2540 sql_help.c:2541 sql_help.c:2542 sql_help.c:2543 +#: sql_help.c:3142 sql_help.c:3143 sql_help.c:3144 sql_help.c:3441 +#: sql_help.c:3445 sql_help.c:3448 sql_help.c:3450 sql_help.c:3452 +#: sql_help.c:3454 sql_help.c:3456 sql_help.c:3462 sql_help.c:3464 +#: sql_help.c:3466 sql_help.c:3468 sql_help.c:3470 sql_help.c:3472 +#: sql_help.c:3473 sql_help.c:3474 sql_help.c:3757 +msgid "role_name" +msgstr "rollnamn" + +#: sql_help.c:222 sql_help.c:436 sql_help.c:1011 sql_help.c:1013 +#: sql_help.c:1291 sql_help.c:1760 sql_help.c:1764 sql_help.c:1850 +#: sql_help.c:1854 sql_help.c:1947 sql_help.c:2262 sql_help.c:2272 +#: sql_help.c:2294 sql_help.c:3191 sql_help.c:3206 sql_help.c:3208 +#: sql_help.c:3622 sql_help.c:3623 sql_help.c:3632 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:3711 sql_help.c:3712 sql_help.c:3717 +#: sql_help.c:3722 sql_help.c:3861 sql_help.c:3862 sql_help.c:3871 +#: sql_help.c:3912 sql_help.c:3913 sql_help.c:3914 sql_help.c:3915 +#: sql_help.c:3916 sql_help.c:3917 sql_help.c:3964 sql_help.c:3966 +#: sql_help.c:3999 sql_help.c:4055 sql_help.c:4056 sql_help.c:4065 +#: sql_help.c:4106 sql_help.c:4107 sql_help.c:4108 sql_help.c:4109 +#: sql_help.c:4110 sql_help.c:4111 +msgid "expression" +msgstr "uttryck" + +#: sql_help.c:225 +msgid "domain_constraint" +msgstr "domain_villkor" + +#: sql_help.c:227 sql_help.c:229 sql_help.c:232 sql_help.c:451 sql_help.c:452 +#: sql_help.c:993 sql_help.c:1026 sql_help.c:1027 sql_help.c:1028 +#: sql_help.c:1048 sql_help.c:1415 sql_help.c:1417 sql_help.c:1763 +#: sql_help.c:1849 sql_help.c:1853 sql_help.c:2261 sql_help.c:2271 +#: sql_help.c:3203 +msgid "constraint_name" +msgstr "villkorsnamn" + +#: sql_help.c:230 sql_help.c:994 +msgid "new_constraint_name" +msgstr "nyy_villkorsnamn" + +#: sql_help.c:301 sql_help.c:898 +msgid "new_version" +msgstr "ny_version" + +#: sql_help.c:305 sql_help.c:307 +msgid "member_object" +msgstr "medlemsobjekt" + +#: sql_help.c:308 +msgid "where member_object is:" +msgstr "där medlemsobjekt är:" + +#: sql_help.c:309 sql_help.c:314 sql_help.c:315 sql_help.c:316 sql_help.c:317 +#: sql_help.c:318 sql_help.c:319 sql_help.c:324 sql_help.c:328 sql_help.c:330 +#: sql_help.c:332 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:339 sql_help.c:340 sql_help.c:343 +#: sql_help.c:344 sql_help.c:1407 sql_help.c:1412 sql_help.c:1419 +#: sql_help.c:1420 sql_help.c:1421 sql_help.c:1422 sql_help.c:1423 +#: sql_help.c:1424 sql_help.c:1425 sql_help.c:1430 sql_help.c:1432 +#: sql_help.c:1436 sql_help.c:1438 sql_help.c:1442 sql_help.c:1443 +#: sql_help.c:1446 sql_help.c:1447 sql_help.c:1448 sql_help.c:1449 +#: sql_help.c:1450 sql_help.c:1451 sql_help.c:1452 sql_help.c:1453 +#: sql_help.c:1454 sql_help.c:1459 sql_help.c:1460 sql_help.c:3539 +#: sql_help.c:3544 sql_help.c:3545 sql_help.c:3546 sql_help.c:3547 +#: sql_help.c:3553 sql_help.c:3554 sql_help.c:3555 sql_help.c:3556 +#: sql_help.c:3557 sql_help.c:3558 sql_help.c:3559 sql_help.c:3560 +msgid "object_name" +msgstr "objektnamn" + +#: sql_help.c:310 sql_help.c:1408 sql_help.c:3542 +msgid "aggregate_name" +msgstr "aggregatnamn" + +#: sql_help.c:312 sql_help.c:1410 sql_help.c:1678 sql_help.c:1682 +#: sql_help.c:1684 sql_help.c:2666 +msgid "source_type" +msgstr "källtyp" + +#: sql_help.c:313 sql_help.c:1411 sql_help.c:1679 sql_help.c:1683 +#: sql_help.c:1685 sql_help.c:2667 +msgid "target_type" +msgstr "mÃ¥ltyp" + +#: sql_help.c:320 sql_help.c:741 sql_help.c:1426 sql_help.c:1680 +#: sql_help.c:1715 sql_help.c:1778 sql_help.c:2000 sql_help.c:2031 +#: sql_help.c:2430 sql_help.c:3125 sql_help.c:3457 sql_help.c:3548 +#: sql_help.c:3651 sql_help.c:3655 sql_help.c:3659 sql_help.c:3662 +#: sql_help.c:3890 sql_help.c:3894 sql_help.c:3898 sql_help.c:3901 +#: sql_help.c:4084 sql_help.c:4088 sql_help.c:4092 sql_help.c:4095 +msgid "function_name" +msgstr "funktionsnamn" + +#: sql_help.c:325 sql_help.c:734 sql_help.c:1433 sql_help.c:2024 +msgid "operator_name" +msgstr "operatornamn" + +#: sql_help.c:326 sql_help.c:670 sql_help.c:674 sql_help.c:678 sql_help.c:1434 +#: sql_help.c:2001 sql_help.c:2784 +msgid "left_type" +msgstr "vänster_typ" + +#: sql_help.c:327 sql_help.c:671 sql_help.c:675 sql_help.c:679 sql_help.c:1435 +#: sql_help.c:2002 sql_help.c:2785 +msgid "right_type" +msgstr "höger_typ" + +#: sql_help.c:329 sql_help.c:331 sql_help.c:697 sql_help.c:700 sql_help.c:703 +#: sql_help.c:732 sql_help.c:744 sql_help.c:752 sql_help.c:755 sql_help.c:758 +#: sql_help.c:1437 sql_help.c:1439 sql_help.c:2021 sql_help.c:2042 +#: sql_help.c:2277 sql_help.c:2794 sql_help.c:2803 +msgid "index_method" +msgstr "indexmetod" + +#: sql_help.c:341 sql_help.c:1044 sql_help.c:1455 sql_help.c:1888 +#: sql_help.c:2253 sql_help.c:2399 sql_help.c:2917 sql_help.c:3139 +#: sql_help.c:3471 +msgid "type_name" +msgstr "typnamn" + +#: sql_help.c:342 sql_help.c:1456 sql_help.c:1887 sql_help.c:2400 +#: sql_help.c:2624 sql_help.c:2918 sql_help.c:3131 sql_help.c:3463 +msgid "lang_name" +msgstr "sprÃ¥knamn" + +#: sql_help.c:345 +msgid "and aggregate_signature is:" +msgstr "och aggregatsignatur är:" + +#: sql_help.c:368 sql_help.c:1550 sql_help.c:1805 +msgid "handler_function" +msgstr "hanterarfunktion" + +#: sql_help.c:369 sql_help.c:1806 +msgid "validator_function" +msgstr "valideringsfunktion" + +#: sql_help.c:418 sql_help.c:495 sql_help.c:626 sql_help.c:988 sql_help.c:1187 +#: sql_help.c:2268 sql_help.c:2269 sql_help.c:2285 sql_help.c:2286 +msgid "action" +msgstr "aktion" + +#: sql_help.c:420 sql_help.c:427 sql_help.c:431 sql_help.c:432 sql_help.c:435 +#: sql_help.c:437 sql_help.c:438 sql_help.c:439 sql_help.c:441 sql_help.c:444 +#: sql_help.c:446 sql_help.c:447 sql_help.c:630 sql_help.c:640 sql_help.c:642 +#: sql_help.c:645 sql_help.c:647 sql_help.c:880 sql_help.c:990 sql_help.c:1003 +#: sql_help.c:1007 sql_help.c:1008 sql_help.c:1012 sql_help.c:1014 +#: sql_help.c:1015 sql_help.c:1016 sql_help.c:1018 sql_help.c:1021 +#: sql_help.c:1023 sql_help.c:1290 sql_help.c:1293 sql_help.c:1313 +#: sql_help.c:1414 sql_help.c:1516 sql_help.c:1521 sql_help.c:1535 +#: sql_help.c:1536 sql_help.c:1537 sql_help.c:1837 sql_help.c:1885 +#: sql_help.c:1946 sql_help.c:1981 sql_help.c:2161 sql_help.c:2241 +#: sql_help.c:2254 sql_help.c:2273 sql_help.c:2275 sql_help.c:2282 +#: sql_help.c:2293 sql_help.c:2310 sql_help.c:2433 sql_help.c:2569 +#: sql_help.c:3110 sql_help.c:3111 sql_help.c:3190 sql_help.c:3205 +#: sql_help.c:3207 sql_help.c:3209 sql_help.c:3442 sql_help.c:3443 +#: sql_help.c:3541 sql_help.c:3682 sql_help.c:3921 sql_help.c:3963 +#: sql_help.c:3965 sql_help.c:3967 sql_help.c:3984 sql_help.c:3987 +#: sql_help.c:4115 +msgid "column_name" +msgstr "kolumnnamn" + +#: sql_help.c:421 sql_help.c:631 sql_help.c:991 +msgid "new_column_name" +msgstr "nytt_kolumnnamn" + +#: sql_help.c:426 sql_help.c:516 sql_help.c:639 sql_help.c:1002 sql_help.c:1200 +msgid "where action is one of:" +msgstr "där aktion är en av:" + +#: sql_help.c:428 sql_help.c:433 sql_help.c:1004 sql_help.c:1009 +#: sql_help.c:1202 sql_help.c:1206 sql_help.c:1758 sql_help.c:1838 +#: sql_help.c:2020 sql_help.c:2242 sql_help.c:2478 sql_help.c:3292 +msgid "data_type" +msgstr "datatyp" + +#: sql_help.c:429 sql_help.c:434 sql_help.c:1005 sql_help.c:1010 +#: sql_help.c:1203 sql_help.c:1207 sql_help.c:1759 sql_help.c:1841 +#: sql_help.c:1948 sql_help.c:2243 sql_help.c:2479 sql_help.c:2485 +#: sql_help.c:3200 +msgid "collation" +msgstr "sortering" + +#: sql_help.c:430 sql_help.c:1006 sql_help.c:1842 sql_help.c:2244 +#: sql_help.c:2255 +msgid "column_constraint" +msgstr "kolumnvillkor" + +#: sql_help.c:440 sql_help.c:641 sql_help.c:1017 +msgid "integer" +msgstr "heltal" + +#: sql_help.c:442 sql_help.c:445 sql_help.c:643 sql_help.c:646 sql_help.c:1019 +#: sql_help.c:1022 +msgid "attribute_option" +msgstr "attributalternativ" + +#: sql_help.c:450 sql_help.c:1024 sql_help.c:1843 sql_help.c:2245 +#: sql_help.c:2256 +msgid "table_constraint" +msgstr "tabellvillkor" + +#: sql_help.c:453 sql_help.c:454 sql_help.c:455 sql_help.c:456 sql_help.c:1029 +#: sql_help.c:1030 sql_help.c:1031 sql_help.c:1032 sql_help.c:1457 +msgid "trigger_name" +msgstr "utlösarnamn" + +#: sql_help.c:457 sql_help.c:458 sql_help.c:1042 sql_help.c:1043 +#: sql_help.c:1844 sql_help.c:2248 +msgid "parent_table" +msgstr "föräldertabell" + +#: sql_help.c:515 sql_help.c:565 sql_help.c:628 sql_help.c:1167 sql_help.c:1790 +msgid "extension_name" +msgstr "utökningsnamn" + +#: sql_help.c:517 sql_help.c:1889 +msgid "execution_cost" +msgstr "körkostnad" + +#: sql_help.c:518 sql_help.c:1890 +msgid "result_rows" +msgstr "resultatrader" + +#: sql_help.c:539 sql_help.c:541 sql_help.c:813 sql_help.c:821 sql_help.c:825 +#: sql_help.c:828 sql_help.c:831 sql_help.c:1241 sql_help.c:1249 +#: sql_help.c:1253 sql_help.c:1256 sql_help.c:1259 sql_help.c:2135 +#: sql_help.c:2137 sql_help.c:2140 sql_help.c:2141 sql_help.c:3109 +#: sql_help.c:3113 sql_help.c:3116 sql_help.c:3118 sql_help.c:3120 +#: sql_help.c:3122 sql_help.c:3124 sql_help.c:3130 sql_help.c:3132 +#: sql_help.c:3134 sql_help.c:3136 sql_help.c:3138 sql_help.c:3140 +msgid "role_specification" +msgstr "rollspecifikation" + +#: sql_help.c:540 sql_help.c:542 sql_help.c:1272 sql_help.c:1733 +#: sql_help.c:2143 sql_help.c:2554 sql_help.c:2951 sql_help.c:3767 +msgid "user_name" +msgstr "användarnamn" + +#: sql_help.c:543 sql_help.c:833 sql_help.c:1261 sql_help.c:2142 +#: sql_help.c:3141 +msgid "where role_specification can be:" +msgstr "där rollspecifikation kan vara:" + +#: sql_help.c:545 +msgid "group_name" +msgstr "gruppnamn" + +#: sql_help.c:563 sql_help.c:1738 sql_help.c:1952 sql_help.c:1984 +#: sql_help.c:2251 sql_help.c:2259 sql_help.c:2291 sql_help.c:2313 +#: sql_help.c:2325 sql_help.c:3137 sql_help.c:3469 +msgid "tablespace_name" +msgstr "tabellutrymmesnamn" + +#: sql_help.c:567 sql_help.c:570 sql_help.c:649 sql_help.c:651 sql_help.c:1039 +#: sql_help.c:1041 sql_help.c:1950 sql_help.c:1982 sql_help.c:2249 +#: sql_help.c:2257 sql_help.c:2289 sql_help.c:2311 +msgid "storage_parameter" +msgstr "lagringsparameter" + +#: sql_help.c:593 sql_help.c:1431 sql_help.c:3552 +msgid "large_object_oid" +msgstr "stort_objekt_oid" + +#: sql_help.c:648 sql_help.c:1037 sql_help.c:1046 sql_help.c:1049 +#: sql_help.c:1353 +msgid "index_name" +msgstr "indexnamn" + +#: sql_help.c:680 sql_help.c:2005 +msgid "res_proc" +msgstr "res_proc" + +#: sql_help.c:681 sql_help.c:2006 +msgid "join_proc" +msgstr "join_proc" + +#: sql_help.c:733 sql_help.c:745 sql_help.c:2023 +msgid "strategy_number" +msgstr "strateginummer" + +#: sql_help.c:735 sql_help.c:736 sql_help.c:739 sql_help.c:740 sql_help.c:746 +#: sql_help.c:747 sql_help.c:749 sql_help.c:750 sql_help.c:2025 sql_help.c:2026 +#: sql_help.c:2029 sql_help.c:2030 +msgid "op_type" +msgstr "op_typ" + +#: sql_help.c:737 sql_help.c:2027 +msgid "sort_family_name" +msgstr "sorteringsfamiljnamn" + +#: sql_help.c:738 sql_help.c:748 sql_help.c:2028 +msgid "support_number" +msgstr "supportnummer" + +#: sql_help.c:742 sql_help.c:1681 sql_help.c:2032 sql_help.c:2402 +#: sql_help.c:2404 +msgid "argument_type" +msgstr "argumenttyp" + +#: sql_help.c:773 sql_help.c:776 sql_help.c:843 sql_help.c:879 sql_help.c:1163 +#: sql_help.c:1166 sql_help.c:1312 sql_help.c:1352 sql_help.c:1416 +#: sql_help.c:1441 sql_help.c:1445 sql_help.c:1458 sql_help.c:1515 +#: sql_help.c:1520 sql_help.c:1836 sql_help.c:1944 sql_help.c:1980 +#: sql_help.c:2055 sql_help.c:2112 sql_help.c:2160 sql_help.c:2240 +#: sql_help.c:2252 sql_help.c:2309 sql_help.c:2427 sql_help.c:2603 +#: sql_help.c:2820 sql_help.c:2837 sql_help.c:2927 sql_help.c:3107 +#: sql_help.c:3112 sql_help.c:3157 sql_help.c:3188 sql_help.c:3439 +#: sql_help.c:3444 sql_help.c:3540 sql_help.c:3637 sql_help.c:3639 +#: sql_help.c:3688 sql_help.c:3727 sql_help.c:3876 sql_help.c:3878 +#: sql_help.c:3927 sql_help.c:3961 sql_help.c:3983 sql_help.c:3985 +#: sql_help.c:3986 sql_help.c:4070 sql_help.c:4072 sql_help.c:4121 +msgid "table_name" +msgstr "tabellnamn" + +#: sql_help.c:778 sql_help.c:2057 +msgid "using_expression" +msgstr "using-uttryck" + +#: sql_help.c:779 sql_help.c:2058 +msgid "check_expression" +msgstr "check-uttryck" + +#: sql_help.c:817 sql_help.c:1245 sql_help.c:1924 sql_help.c:2089 +#: sql_help.c:2537 +msgid "password" +msgstr "lösenord" + +#: sql_help.c:818 sql_help.c:1246 sql_help.c:1925 sql_help.c:2090 +#: sql_help.c:2538 +msgid "timestamp" +msgstr "tidsstämpel" + +#: sql_help.c:822 sql_help.c:826 sql_help.c:829 sql_help.c:832 sql_help.c:1250 +#: sql_help.c:1254 sql_help.c:1257 sql_help.c:1260 sql_help.c:3117 +#: sql_help.c:3449 +msgid "database_name" +msgstr "databasnamn" + +#: sql_help.c:873 sql_help.c:2155 +msgid "increment" +msgstr "ökningsvärde" + +#: sql_help.c:874 sql_help.c:2156 +msgid "minvalue" +msgstr "minvärde" + +#: sql_help.c:875 sql_help.c:2157 +msgid "maxvalue" +msgstr "maxvärde" + +#: sql_help.c:876 sql_help.c:2158 sql_help.c:3635 sql_help.c:3725 +#: sql_help.c:3874 sql_help.c:4003 sql_help.c:4068 +msgid "start" +msgstr "start" + +#: sql_help.c:877 +msgid "restart" +msgstr "starta om" + +#: sql_help.c:878 sql_help.c:2159 +msgid "cache" +msgstr "cache" + +#: sql_help.c:1025 +msgid "table_constraint_using_index" +msgstr "tabellvillkor_för_index" + +#: sql_help.c:1033 sql_help.c:1034 sql_help.c:1035 sql_help.c:1036 +msgid "rewrite_rule_name" +msgstr "omskrivningsregelnamn" + +#: sql_help.c:1047 +msgid "and table_constraint_using_index is:" +msgstr "och tabellvillkor_för_index är:" + +#: sql_help.c:1065 sql_help.c:1068 sql_help.c:2328 +msgid "tablespace_option" +msgstr "tabellutrymmesalternativ" + +#: sql_help.c:1089 sql_help.c:1092 sql_help.c:1098 sql_help.c:1102 +msgid "token_type" +msgstr "symboltyp" + +#: sql_help.c:1090 sql_help.c:1093 +msgid "dictionary_name" +msgstr "ordlistnamn" + +#: sql_help.c:1095 sql_help.c:1099 +msgid "old_dictionary" +msgstr "gammal_ordlista" + +#: sql_help.c:1096 sql_help.c:1100 +msgid "new_dictionary" +msgstr "ny_ordlista" + +#: sql_help.c:1191 sql_help.c:1201 sql_help.c:1204 sql_help.c:1205 +#: sql_help.c:2477 +msgid "attribute_name" +msgstr "attributnamn" + +#: sql_help.c:1192 +msgid "new_attribute_name" +msgstr "nytt_attributnamn" + +#: sql_help.c:1198 +msgid "new_enum_value" +msgstr "nytt_enumvärde" + +#: sql_help.c:1199 +msgid "existing_enum_value" +msgstr "existerande_enumvärde" + +#: sql_help.c:1273 sql_help.c:1845 sql_help.c:2171 sql_help.c:2555 +#: sql_help.c:2952 sql_help.c:3123 sql_help.c:3158 sql_help.c:3455 +msgid "server_name" +msgstr "servernamn" + +#: sql_help.c:1301 sql_help.c:1304 sql_help.c:2570 +msgid "view_option_name" +msgstr "visningsalternativnamn" + +#: sql_help.c:1302 sql_help.c:2571 +msgid "view_option_value" +msgstr "visningsalternativvärde" + +#: sql_help.c:1327 sql_help.c:3783 sql_help.c:3785 sql_help.c:3809 +msgid "transaction_mode" +msgstr "transaktionsläge" + +#: sql_help.c:1328 sql_help.c:3786 sql_help.c:3810 +msgid "where transaction_mode is one of:" +msgstr "där transaktionsläge är en av:" + +#: sql_help.c:1413 +msgid "relation_name" +msgstr "relationsnamn" + +#: sql_help.c:1418 sql_help.c:3119 sql_help.c:3451 +msgid "domain_name" +msgstr "domännamn" + +#: sql_help.c:1440 +msgid "policy_name" +msgstr "policynamn" + +#: sql_help.c:1444 +msgid "rule_name" +msgstr "regelnamn" + +#: sql_help.c:1461 +msgid "text" +msgstr "text" + +#: sql_help.c:1486 sql_help.c:3301 sql_help.c:3489 +msgid "transaction_id" +msgstr "transaktions-id" + +#: sql_help.c:1517 sql_help.c:1523 sql_help.c:3227 +msgid "filename" +msgstr "filnamn" + +#: sql_help.c:1518 sql_help.c:1524 sql_help.c:2114 sql_help.c:2115 +#: sql_help.c:2116 +msgid "command" +msgstr "kommando" + +#: sql_help.c:1522 sql_help.c:1985 sql_help.c:2314 sql_help.c:2572 +#: sql_help.c:2590 sql_help.c:3192 +msgid "query" +msgstr "frÃ¥ga" + +#: sql_help.c:1526 sql_help.c:2997 +msgid "where option can be one of:" +msgstr "där flaggor kan vara en av:" + +#: sql_help.c:1527 +msgid "format_name" +msgstr "formatnamn" + +#: sql_help.c:1528 sql_help.c:1529 sql_help.c:1532 sql_help.c:2998 +#: sql_help.c:2999 sql_help.c:3000 sql_help.c:3001 sql_help.c:3002 +msgid "boolean" +msgstr "boolean" + +#: sql_help.c:1530 +msgid "delimiter_character" +msgstr "avdelartecken" + +#: sql_help.c:1531 +msgid "null_string" +msgstr "null-sträng" + +#: sql_help.c:1533 +msgid "quote_character" +msgstr "citattecken" + +#: sql_help.c:1534 +msgid "escape_character" +msgstr "escape-tecken" + +#: sql_help.c:1538 +msgid "encoding_name" +msgstr "kodningsnamn" + +#: sql_help.c:1549 +msgid "access_method_type" +msgstr "accessmetodtyp" + +#: sql_help.c:1615 sql_help.c:1634 sql_help.c:1637 +msgid "arg_data_type" +msgstr "arg_datatyp" + +#: sql_help.c:1616 sql_help.c:1638 sql_help.c:1646 +msgid "sfunc" +msgstr "sfunc" + +#: sql_help.c:1617 sql_help.c:1639 sql_help.c:1647 +msgid "state_data_type" +msgstr "tillstÃ¥ndsdatatyp" + +#: sql_help.c:1618 sql_help.c:1640 sql_help.c:1648 +msgid "state_data_size" +msgstr "tillstÃ¥ndsdatastorlek" + +#: sql_help.c:1619 sql_help.c:1641 sql_help.c:1649 +msgid "ffunc" +msgstr "ffunc" + +#: sql_help.c:1620 sql_help.c:1650 +msgid "combinefunc" +msgstr "kombinerafunk" + +#: sql_help.c:1621 sql_help.c:1651 +msgid "serialfunc" +msgstr "serialiseringsfunk" + +#: sql_help.c:1622 sql_help.c:1652 +msgid "deserialfunc" +msgstr "deserialiseringsfunk" + +#: sql_help.c:1623 sql_help.c:1642 sql_help.c:1653 +msgid "initial_condition" +msgstr "startvärde" + +#: sql_help.c:1624 sql_help.c:1654 +msgid "msfunc" +msgstr "msfunk" + +#: sql_help.c:1625 sql_help.c:1655 +msgid "minvfunc" +msgstr "minvfunk" + +#: sql_help.c:1626 sql_help.c:1656 +msgid "mstate_data_type" +msgstr "mtillstÃ¥ndsdatatyp" + +#: sql_help.c:1627 sql_help.c:1657 +msgid "mstate_data_size" +msgstr "ntillstÃ¥ndsstorlek" + +#: sql_help.c:1628 sql_help.c:1658 +msgid "mffunc" +msgstr "mffunk" + +#: sql_help.c:1629 sql_help.c:1659 +msgid "minitial_condition" +msgstr "mstartvärde" + +#: sql_help.c:1630 sql_help.c:1660 +msgid "sort_operator" +msgstr "sorteringsoperator" + +#: sql_help.c:1643 +msgid "or the old syntax" +msgstr "eller gamla syntaxen" + +#: sql_help.c:1645 +msgid "base_type" +msgstr "bastyp" + +#: sql_help.c:1699 +msgid "locale" +msgstr "lokal" + +#: sql_help.c:1700 sql_help.c:1736 +msgid "lc_collate" +msgstr "lc_collate" + +#: sql_help.c:1701 sql_help.c:1737 +msgid "lc_ctype" +msgstr "lc_ctype" + +#: sql_help.c:1703 +msgid "existing_collation" +msgstr "existerande_sortering" + +#: sql_help.c:1713 +msgid "source_encoding" +msgstr "källkodning" + +#: sql_help.c:1714 +msgid "dest_encoding" +msgstr "mÃ¥lkodning" + +#: sql_help.c:1734 sql_help.c:2354 +msgid "template" +msgstr "mall" + +#: sql_help.c:1735 +msgid "encoding" +msgstr "kodning" + +#: sql_help.c:1761 +msgid "constraint" +msgstr "villkor" + +#: sql_help.c:1762 +msgid "where constraint is:" +msgstr "där villkor är:" + +#: sql_help.c:1776 sql_help.c:2111 sql_help.c:2426 +msgid "event" +msgstr "händelse" + +#: sql_help.c:1777 +msgid "filter_variable" +msgstr "filtervariabel" + +#: sql_help.c:1792 +msgid "version" +msgstr "version" + +#: sql_help.c:1793 +msgid "old_version" +msgstr "gammal_version" + +#: sql_help.c:1848 sql_help.c:2260 +msgid "where column_constraint is:" +msgstr "där kolumnvillkor är:" + +#: sql_help.c:1851 sql_help.c:1883 sql_help.c:2263 +msgid "default_expr" +msgstr "default_uttryck" + +#: sql_help.c:1852 sql_help.c:2270 +msgid "and table_constraint is:" +msgstr "och tabellvillkor är:" + +#: sql_help.c:1884 +msgid "rettype" +msgstr "rettyp" + +#: sql_help.c:1886 +msgid "column_type" +msgstr "kolumntyp" + +#: sql_help.c:1894 +msgid "definition" +msgstr "definition" + +#: sql_help.c:1895 +msgid "obj_file" +msgstr "obj-fil" + +#: sql_help.c:1896 +msgid "link_symbol" +msgstr "linksymbol" + +#: sql_help.c:1897 +msgid "attribute" +msgstr "attribut" + +#: sql_help.c:1931 sql_help.c:2096 sql_help.c:2544 +msgid "uid" +msgstr "uid" + +#: sql_help.c:1945 +msgid "method" +msgstr "metod" + +#: sql_help.c:1949 sql_help.c:2295 sql_help.c:3201 +msgid "opclass" +msgstr "op-klass" + +#: sql_help.c:1953 sql_help.c:2281 +msgid "predicate" +msgstr "predikat" + +#: sql_help.c:1965 +msgid "call_handler" +msgstr "anropshanterare" + +#: sql_help.c:1966 +msgid "inline_handler" +msgstr "inline-hanterare" + +#: sql_help.c:1967 +msgid "valfunction" +msgstr "val-funktion" + +#: sql_help.c:2003 +msgid "com_op" +msgstr "com_op" + +#: sql_help.c:2004 +msgid "neg_op" +msgstr "neg_op" + +#: sql_help.c:2022 +msgid "family_name" +msgstr "familjenamn" + +#: sql_help.c:2033 +msgid "storage_type" +msgstr "lagringstyp" + +#: sql_help.c:2113 sql_help.c:2429 sql_help.c:2606 sql_help.c:3211 +#: sql_help.c:3626 sql_help.c:3628 sql_help.c:3716 sql_help.c:3718 +#: sql_help.c:3865 sql_help.c:3867 sql_help.c:3970 sql_help.c:4059 +#: sql_help.c:4061 +msgid "condition" +msgstr "villkor" + +#: sql_help.c:2117 sql_help.c:2432 +msgid "where event can be one of:" +msgstr "där händelse kan vara en av:" + +#: sql_help.c:2136 sql_help.c:2138 +msgid "schema_element" +msgstr "schema-element" + +#: sql_help.c:2172 +msgid "server_type" +msgstr "servertyp" + +#: sql_help.c:2173 +msgid "server_version" +msgstr "serverversion" + +#: sql_help.c:2174 sql_help.c:3121 sql_help.c:3453 +msgid "fdw_name" +msgstr "fdw-namn" + +#: sql_help.c:2246 +msgid "source_table" +msgstr "källtabell" + +#: sql_help.c:2247 +msgid "like_option" +msgstr "like_alternativ" + +#: sql_help.c:2264 sql_help.c:2265 sql_help.c:2274 sql_help.c:2276 +#: sql_help.c:2280 +msgid "index_parameters" +msgstr "indexparametrar" + +#: sql_help.c:2266 sql_help.c:2283 +msgid "reftable" +msgstr "reftabell" + +#: sql_help.c:2267 sql_help.c:2284 +msgid "refcolumn" +msgstr "refkolumn" + +#: sql_help.c:2278 +msgid "exclude_element" +msgstr "uteslutelement" + +#: sql_help.c:2279 sql_help.c:3633 sql_help.c:3723 sql_help.c:3872 +#: sql_help.c:4001 sql_help.c:4066 +msgid "operator" +msgstr "operator" + +#: sql_help.c:2287 +msgid "and like_option is:" +msgstr "och likealternativ är:" + +#: sql_help.c:2288 +msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" +msgstr "indexparametrar i UNIQUE-, PRIMARY KEY- och EXCLUDE-villkor är:" + +#: sql_help.c:2292 +msgid "exclude_element in an EXCLUDE constraint is:" +msgstr "uteslutelement i ett EXCLUDE-villkort är:" + +#: sql_help.c:2327 +msgid "directory" +msgstr "katalog" + +#: sql_help.c:2341 +msgid "parser_name" +msgstr "parsernamn" + +#: sql_help.c:2342 +msgid "source_config" +msgstr "källkonfig" + +#: sql_help.c:2371 +msgid "start_function" +msgstr "startfunktion" + +#: sql_help.c:2372 +msgid "gettoken_function" +msgstr "gettoken_funktion" + +#: sql_help.c:2373 +msgid "end_function" +msgstr "slutfunktion" + +#: sql_help.c:2374 +msgid "lextypes_function" +msgstr "symboltypfunktion" + +#: sql_help.c:2375 +msgid "headline_function" +msgstr "rubrikfunktion" + +#: sql_help.c:2387 +msgid "init_function" +msgstr "init_funktion" + +#: sql_help.c:2388 +msgid "lexize_function" +msgstr "symboluppdelningsfunktion" + +#: sql_help.c:2401 +msgid "from_sql_function_name" +msgstr "frÃ¥n_sql_funktionsnamn" + +#: sql_help.c:2403 +msgid "to_sql_function_name" +msgstr "till_sql_funktionsnamn" + +#: sql_help.c:2428 +msgid "referenced_table_name" +msgstr "refererat_tabellnamn" + +#: sql_help.c:2431 +msgid "arguments" +msgstr "argument" + +#: sql_help.c:2481 sql_help.c:3561 +msgid "label" +msgstr "etikett" + +#: sql_help.c:2483 +msgid "subtype" +msgstr "subtyp" + +#: sql_help.c:2484 +msgid "subtype_operator_class" +msgstr "subtypoperatorklass" + +#: sql_help.c:2486 +msgid "canonical_function" +msgstr "kanonisk_funktion" + +#: sql_help.c:2487 +msgid "subtype_diff_function" +msgstr "subtyp_diff_funktion" + +#: sql_help.c:2489 +msgid "input_function" +msgstr "inmatningsfunktion" + +#: sql_help.c:2490 +msgid "output_function" +msgstr "utmatningsfunktion" + +#: sql_help.c:2491 +msgid "receive_function" +msgstr "mottagarfunktion" + +#: sql_help.c:2492 +msgid "send_function" +msgstr "sändfunktion" + +#: sql_help.c:2493 +msgid "type_modifier_input_function" +msgstr "typmodifiering_indatafunktion" + +#: sql_help.c:2494 +msgid "type_modifier_output_function" +msgstr "typmodifiering_utdatafunktion" + +#: sql_help.c:2495 +msgid "analyze_function" +msgstr "analysfunktion" + +#: sql_help.c:2496 +msgid "internallength" +msgstr "internlängd" + +#: sql_help.c:2497 +msgid "alignment" +msgstr "justering" + +#: sql_help.c:2498 +msgid "storage" +msgstr "lagring" + +#: sql_help.c:2499 +msgid "like_type" +msgstr "liketyp" + +#: sql_help.c:2500 +msgid "category" +msgstr "kategori" + +#: sql_help.c:2501 +msgid "preferred" +msgstr "föredragen" + +#: sql_help.c:2502 +msgid "default" +msgstr "standard" + +#: sql_help.c:2503 +msgid "element" +msgstr "element" + +#: sql_help.c:2504 +msgid "delimiter" +msgstr "avskiljare" + +#: sql_help.c:2505 +msgid "collatable" +msgstr "sorterbar" + +#: sql_help.c:2602 sql_help.c:3187 sql_help.c:3621 sql_help.c:3710 +#: sql_help.c:3860 sql_help.c:3960 sql_help.c:4054 +msgid "with_query" +msgstr "with_frÃ¥ga" + +#: sql_help.c:2604 sql_help.c:3189 sql_help.c:3640 sql_help.c:3646 +#: sql_help.c:3649 sql_help.c:3653 sql_help.c:3657 sql_help.c:3665 +#: sql_help.c:3879 sql_help.c:3885 sql_help.c:3888 sql_help.c:3892 +#: sql_help.c:3896 sql_help.c:3904 sql_help.c:3962 sql_help.c:4073 +#: sql_help.c:4079 sql_help.c:4082 sql_help.c:4086 sql_help.c:4090 +#: sql_help.c:4098 +msgid "alias" +msgstr "alias" + +#: sql_help.c:2605 +msgid "using_list" +msgstr "using_lista" + +#: sql_help.c:2607 sql_help.c:3028 sql_help.c:3268 sql_help.c:3971 +msgid "cursor_name" +msgstr "markörnamn" + +#: sql_help.c:2608 sql_help.c:3195 sql_help.c:3972 +msgid "output_expression" +msgstr "utdatauttryck" + +#: sql_help.c:2609 sql_help.c:3196 sql_help.c:3624 sql_help.c:3713 +#: sql_help.c:3863 sql_help.c:3973 sql_help.c:4057 +msgid "output_name" +msgstr "utdatanamn" + +#: sql_help.c:2625 +msgid "code" +msgstr "kod" + +#: sql_help.c:2976 +msgid "parameter" +msgstr "parameter" + +#: sql_help.c:2995 sql_help.c:2996 sql_help.c:3293 +msgid "statement" +msgstr "sats" + +#: sql_help.c:3027 sql_help.c:3267 +msgid "direction" +msgstr "riktning" + +#: sql_help.c:3029 sql_help.c:3269 +msgid "where direction can be empty or one of:" +msgstr "där riktning kan vara tom eller en av:" + +#: sql_help.c:3030 sql_help.c:3031 sql_help.c:3032 sql_help.c:3033 +#: sql_help.c:3034 sql_help.c:3270 sql_help.c:3271 sql_help.c:3272 +#: sql_help.c:3273 sql_help.c:3274 sql_help.c:3634 sql_help.c:3636 +#: sql_help.c:3724 sql_help.c:3726 sql_help.c:3873 sql_help.c:3875 +#: sql_help.c:4002 sql_help.c:4004 sql_help.c:4067 sql_help.c:4069 +msgid "count" +msgstr "antal" + +#: sql_help.c:3114 sql_help.c:3446 +msgid "sequence_name" +msgstr "sekvensnamn" + +#: sql_help.c:3127 sql_help.c:3459 +msgid "arg_name" +msgstr "arg_namn" + +#: sql_help.c:3128 sql_help.c:3460 +msgid "arg_type" +msgstr "arg_typ" + +#: sql_help.c:3133 sql_help.c:3465 +msgid "loid" +msgstr "loid" + +#: sql_help.c:3156 +msgid "remote_schema" +msgstr "externt_schema" + +#: sql_help.c:3159 +msgid "local_schema" +msgstr "lokalt_schema" + +#: sql_help.c:3193 +msgid "conflict_target" +msgstr "konfliktmÃ¥l" + +#: sql_help.c:3194 +msgid "conflict_action" +msgstr "konfliktaktion" + +#: sql_help.c:3197 +msgid "where conflict_target can be one of:" +msgstr "där konfliktmÃ¥l kan vara en av:" + +#: sql_help.c:3198 +msgid "index_column_name" +msgstr "indexkolumnnamn" + +#: sql_help.c:3199 +msgid "index_expression" +msgstr "indexuttryck" + +#: sql_help.c:3202 +msgid "index_predicate" +msgstr "indexpredikat" + +#: sql_help.c:3204 +msgid "and conflict_action is one of:" +msgstr "och konfliktaktion är en av:" + +#: sql_help.c:3210 sql_help.c:3968 +msgid "sub-SELECT" +msgstr "sub-SELECT" + +#: sql_help.c:3219 sql_help.c:3282 sql_help.c:3944 +msgid "channel" +msgstr "kanal" + +#: sql_help.c:3241 +msgid "lockmode" +msgstr "lÃ¥släge" + +#: sql_help.c:3242 +msgid "where lockmode is one of:" +msgstr "där lÃ¥släge är en av:" + +#: sql_help.c:3283 +msgid "payload" +msgstr "innehÃ¥ll" + +#: sql_help.c:3310 +msgid "old_role" +msgstr "gammal_roll" + +#: sql_help.c:3311 +msgid "new_role" +msgstr "ny_roll" + +#: sql_help.c:3336 sql_help.c:3497 sql_help.c:3505 +msgid "savepoint_name" +msgstr "sparpunktnamn" + +#: sql_help.c:3538 +msgid "provider" +msgstr "leverantör" + +#: sql_help.c:3625 sql_help.c:3667 sql_help.c:3669 sql_help.c:3715 +#: sql_help.c:3864 sql_help.c:3906 sql_help.c:3908 sql_help.c:4058 +#: sql_help.c:4100 sql_help.c:4102 +msgid "from_item" +msgstr "frÃ¥nval" + +#: sql_help.c:3627 sql_help.c:3679 sql_help.c:3866 sql_help.c:3918 +#: sql_help.c:4060 sql_help.c:4112 +msgid "grouping_element" +msgstr "gruperingselement" + +#: sql_help.c:3629 sql_help.c:3719 sql_help.c:3868 sql_help.c:4062 +msgid "window_name" +msgstr "fönsternamn" + +#: sql_help.c:3630 sql_help.c:3720 sql_help.c:3869 sql_help.c:4063 +msgid "window_definition" +msgstr "fönsterdefinition" + +#: sql_help.c:3631 sql_help.c:3645 sql_help.c:3683 sql_help.c:3721 +#: sql_help.c:3870 sql_help.c:3884 sql_help.c:3922 sql_help.c:4064 +#: sql_help.c:4078 sql_help.c:4116 +msgid "select" +msgstr "select" + +#: sql_help.c:3638 sql_help.c:3877 sql_help.c:4071 +msgid "where from_item can be one of:" +msgstr "där frÃ¥nval kan vara en av:" + +#: sql_help.c:3641 sql_help.c:3647 sql_help.c:3650 sql_help.c:3654 +#: sql_help.c:3666 sql_help.c:3880 sql_help.c:3886 sql_help.c:3889 +#: sql_help.c:3893 sql_help.c:3905 sql_help.c:4074 sql_help.c:4080 +#: sql_help.c:4083 sql_help.c:4087 sql_help.c:4099 +msgid "column_alias" +msgstr "kolumnalias" + +#: sql_help.c:3642 sql_help.c:3881 sql_help.c:4075 +msgid "sampling_method" +msgstr "samplingsmetod" + +#: sql_help.c:3643 sql_help.c:3652 sql_help.c:3656 sql_help.c:3660 +#: sql_help.c:3663 sql_help.c:3882 sql_help.c:3891 sql_help.c:3895 +#: sql_help.c:3899 sql_help.c:3902 sql_help.c:4076 sql_help.c:4085 +#: sql_help.c:4089 sql_help.c:4093 sql_help.c:4096 +msgid "argument" +msgstr "argument" + +#: sql_help.c:3644 sql_help.c:3883 sql_help.c:4077 +msgid "seed" +msgstr "frö" + +#: sql_help.c:3648 sql_help.c:3681 sql_help.c:3887 sql_help.c:3920 +#: sql_help.c:4081 sql_help.c:4114 +msgid "with_query_name" +msgstr "with_frÃ¥genamn" + +#: sql_help.c:3658 sql_help.c:3661 sql_help.c:3664 sql_help.c:3897 +#: sql_help.c:3900 sql_help.c:3903 sql_help.c:4091 sql_help.c:4094 +#: sql_help.c:4097 +msgid "column_definition" +msgstr "kolumndefinition" + +#: sql_help.c:3668 sql_help.c:3907 sql_help.c:4101 +msgid "join_type" +msgstr "join-typ" + +#: sql_help.c:3670 sql_help.c:3909 sql_help.c:4103 +msgid "join_condition" +msgstr "join-villkor" + +#: sql_help.c:3671 sql_help.c:3910 sql_help.c:4104 +msgid "join_column" +msgstr "join-kolumn" + +#: sql_help.c:3672 sql_help.c:3911 sql_help.c:4105 +msgid "and grouping_element can be one of:" +msgstr "och grupperingselement kan vara en av:" + +#: sql_help.c:3680 sql_help.c:3919 sql_help.c:4113 +msgid "and with_query is:" +msgstr "och with_frÃ¥ga är:" + +#: sql_help.c:3684 sql_help.c:3923 sql_help.c:4117 +msgid "values" +msgstr "värden" + +#: sql_help.c:3685 sql_help.c:3924 sql_help.c:4118 +msgid "insert" +msgstr "insert" + +#: sql_help.c:3686 sql_help.c:3925 sql_help.c:4119 +msgid "update" +msgstr "update" + +#: sql_help.c:3687 sql_help.c:3926 sql_help.c:4120 +msgid "delete" +msgstr "delete" + +#: sql_help.c:3714 +msgid "new_table" +msgstr "ny_tabell" + +#: sql_help.c:3739 +msgid "timezone" +msgstr "tidszon" + +#: sql_help.c:3784 +msgid "snapshot_id" +msgstr "snapshot_id" + +#: sql_help.c:3969 +msgid "from_list" +msgstr "frÃ¥nlista" + +#: sql_help.c:4000 +msgid "sort_expression" +msgstr "sorteringsuttryck" + +#: sql_help.c:4127 sql_help.c:4867 +msgid "abort the current transaction" +msgstr "avbryt aktuell transaktion" + +#: sql_help.c:4132 +msgid "change the definition of an aggregate function" +msgstr "ändra definitionen av en aggregatfunktion" + +#: sql_help.c:4137 +msgid "change the definition of a collation" +msgstr "ändra definitionen av en sortering" + +#: sql_help.c:4142 +msgid "change the definition of a conversion" +msgstr "ändra definitionen av en konvertering" + +#: sql_help.c:4147 +msgid "change a database" +msgstr "ändra en databas" + +#: sql_help.c:4152 +msgid "define default access privileges" +msgstr "definiera standardaccessrättigheter" + +#: sql_help.c:4157 +msgid "change the definition of a domain" +msgstr "ändra definitionen av en domän" + +#: sql_help.c:4162 +msgid "change the definition of an event trigger" +msgstr "ändra definitionen av en händelseutlösare" + +#: sql_help.c:4167 +msgid "change the definition of an extension" +msgstr "ändra definitionen av en utökning" + +#: sql_help.c:4172 +msgid "change the definition of a foreign-data wrapper" +msgstr "ändra definitionen av en främmande data-omvandlare" + +#: sql_help.c:4177 +msgid "change the definition of a foreign table" +msgstr "ändra definitionen av en främmande tabell" + +#: sql_help.c:4182 +msgid "change the definition of a function" +msgstr "ändra definitionen av en funktion" + +#: sql_help.c:4187 +msgid "change role name or membership" +msgstr "ändra rollnamn eller medlemskap" + +#: sql_help.c:4192 +msgid "change the definition of an index" +msgstr "ändra definitionen av ett index" + +#: sql_help.c:4197 +msgid "change the definition of a procedural language" +msgstr "ändra definitionen av ett procedur-sprÃ¥k" + +#: sql_help.c:4202 +msgid "change the definition of a large object" +msgstr "ändra definitionen av ett stort objekt" + +#: sql_help.c:4207 +msgid "change the definition of a materialized view" +msgstr "ändra definitionen av en materialiserad vy" + +#: sql_help.c:4212 +msgid "change the definition of an operator" +msgstr "ändra definitionen av en operator" + +#: sql_help.c:4217 +msgid "change the definition of an operator class" +msgstr "ändra definitionen av en operatorklass" + +#: sql_help.c:4222 +msgid "change the definition of an operator family" +msgstr "ändra definitionen av en operatorfamilj" + +#: sql_help.c:4227 +msgid "change the definition of a row level security policy" +msgstr "ändra definitionen av en säkerhetspolicy pÃ¥ radnivÃ¥" + +#: sql_help.c:4232 sql_help.c:4302 +msgid "change a database role" +msgstr "ändra databasroll" + +#: sql_help.c:4237 +msgid "change the definition of a rule" +msgstr "ändra definitionen av en regel" + +#: sql_help.c:4242 +msgid "change the definition of a schema" +msgstr "ändra definitionen av ett schema" + +#: sql_help.c:4247 +msgid "change the definition of a sequence generator" +msgstr "ändra definitionen av en sekvensgenerator" + +#: sql_help.c:4252 +msgid "change the definition of a foreign server" +msgstr "ändra definitionen av en främmande server" + +#: sql_help.c:4257 +msgid "change a server configuration parameter" +msgstr "ändra en servers konfigurationsparameter" + +#: sql_help.c:4262 +msgid "change the definition of a table" +msgstr "ändra definitionen av en tabell" + +#: sql_help.c:4267 +msgid "change the definition of a tablespace" +msgstr "ändra definitionen av ett tabellutrymme" + +#: sql_help.c:4272 +msgid "change the definition of a text search configuration" +msgstr "ändra definitionen av en textsökkonfiguration" + +#: sql_help.c:4277 +msgid "change the definition of a text search dictionary" +msgstr "ändra definitionen av en textsökordlista" + +#: sql_help.c:4282 +msgid "change the definition of a text search parser" +msgstr "ändra definitionen av en textsökparser" + +#: sql_help.c:4287 +msgid "change the definition of a text search template" +msgstr "ändra definitionen av en textsökmall" + +#: sql_help.c:4292 +msgid "change the definition of a trigger" +msgstr "ändra definitionen av en utlösare" + +#: sql_help.c:4297 +msgid "change the definition of a type" +msgstr "ändra definitionen av en typ" + +#: sql_help.c:4307 +msgid "change the definition of a user mapping" +msgstr "ändra definitionen av en användarmappning" + +#: sql_help.c:4312 +msgid "change the definition of a view" +msgstr "ändra definitionen av en vy" + +#: sql_help.c:4317 +msgid "collect statistics about a database" +msgstr "samla in statistik om en databas" + +#: sql_help.c:4322 sql_help.c:4932 +msgid "start a transaction block" +msgstr "starta ett transaktionsblock" + +#: sql_help.c:4327 +msgid "force a transaction log checkpoint" +msgstr "tvinga transaktionsloggen att göra en checkpoint" + +#: sql_help.c:4332 +msgid "close a cursor" +msgstr "stäng en markör" + +#: sql_help.c:4337 +msgid "cluster a table according to an index" +msgstr "klustra en tabell efter ett index" + +#: sql_help.c:4342 +msgid "define or change the comment of an object" +msgstr "definiera eller ändra en kommentar pÃ¥ ett objekt" + +#: sql_help.c:4347 sql_help.c:4767 +msgid "commit the current transaction" +msgstr "utför den aktuella transaktionen" + +#: sql_help.c:4352 +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:4357 +msgid "copy data between a file and a table" +msgstr "kopiera data mellan en fil och en tabell" + +#: sql_help.c:4362 +msgid "define a new access method" +msgstr "definiera en ny accessmetod" + +#: sql_help.c:4367 +msgid "define a new aggregate function" +msgstr "definiera en ny aggregatfunktion" + +#: sql_help.c:4372 +msgid "define a new cast" +msgstr "definiera en ny typomvandling" + +#: sql_help.c:4377 +msgid "define a new collation" +msgstr "definiera en ny sortering" + +#: sql_help.c:4382 +msgid "define a new encoding conversion" +msgstr "definiera en ny teckenkodningskonvertering" + +#: sql_help.c:4387 +msgid "create a new database" +msgstr "skapa en ny databas" + +#: sql_help.c:4392 +msgid "define a new domain" +msgstr "definiera en ny domän" + +#: sql_help.c:4397 +msgid "define a new event trigger" +msgstr "definiera en ny händelseutlösare" + +#: sql_help.c:4402 +msgid "install an extension" +msgstr "installera en utökning" + +#: sql_help.c:4407 +msgid "define a new foreign-data wrapper" +msgstr "definiera en ny främmande data-omvandlare" + +#: sql_help.c:4412 +msgid "define a new foreign table" +msgstr "definiera en ny främmande tabell" + +#: sql_help.c:4417 +msgid "define a new function" +msgstr "definiera en ny funktion" + +#: sql_help.c:4422 sql_help.c:4462 sql_help.c:4537 +msgid "define a new database role" +msgstr "definiera en ny databasroll" + +#: sql_help.c:4427 +msgid "define a new index" +msgstr "skapa ett nytt index" + +#: sql_help.c:4432 +msgid "define a new procedural language" +msgstr "definiera ett nytt procedur-sprÃ¥k" + +#: sql_help.c:4437 +msgid "define a new materialized view" +msgstr "definiera en ny materialiserad vy" + +#: sql_help.c:4442 +msgid "define a new operator" +msgstr "definiera en ny operator" + +#: sql_help.c:4447 +msgid "define a new operator class" +msgstr "definiera en ny operatorklass" + +#: sql_help.c:4452 +msgid "define a new operator family" +msgstr "definiera en ny operatorfamilj" + +#: sql_help.c:4457 +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:4467 +msgid "define a new rewrite rule" +msgstr "definiera en ny omskrivningsregel" + +#: sql_help.c:4472 +msgid "define a new schema" +msgstr "definiera ett nytt schema" + +#: sql_help.c:4477 +msgid "define a new sequence generator" +msgstr "definiera en ny sekvensgenerator" + +#: sql_help.c:4482 +msgid "define a new foreign server" +msgstr "definiera en ny främmande server" + +#: sql_help.c:4487 +msgid "define a new table" +msgstr "definiera en ny tabell" + +#: sql_help.c:4492 sql_help.c:4897 +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:4497 +msgid "define a new tablespace" +msgstr "definiera ett nytt tabellutrymme" + +#: sql_help.c:4502 +msgid "define a new text search configuration" +msgstr "definiera en ny textsökkonfiguration" + +#: sql_help.c:4507 +msgid "define a new text search dictionary" +msgstr "definiera en ny textsökordlista" + +#: sql_help.c:4512 +msgid "define a new text search parser" +msgstr "definiera en ny textsökparser" + +#: sql_help.c:4517 +msgid "define a new text search template" +msgstr "definiera en ny textsökmall" + +#: sql_help.c:4522 +msgid "define a new transform" +msgstr "definiera en ny transform" + +#: sql_help.c:4527 +msgid "define a new trigger" +msgstr "definiera en ny utlösare" + +#: sql_help.c:4532 +msgid "define a new data type" +msgstr "definiera en ny datatyp" + +#: sql_help.c:4542 +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:4547 +msgid "define a new view" +msgstr "definiera en ny vy" + +#: sql_help.c:4552 +msgid "deallocate a prepared statement" +msgstr "deallokera en förberedd sats" + +#: sql_help.c:4557 +msgid "define a cursor" +msgstr "definiera en markör" + +#: sql_help.c:4562 +msgid "delete rows of a table" +msgstr "radera rader i en tabell" + +#: sql_help.c:4567 +msgid "discard session state" +msgstr "släng sessionstillstÃ¥nd" + +#: sql_help.c:4572 +msgid "execute an anonymous code block" +msgstr "kör ett annonymt kodblock" + +#: sql_help.c:4577 +msgid "remove an access method" +msgstr "ta bort en accessmetod" + +#: sql_help.c:4582 +msgid "remove an aggregate function" +msgstr "ta bort en aggregatfunktioner" + +#: sql_help.c:4587 +msgid "remove a cast" +msgstr "ta bort en typomvandling" + +#: sql_help.c:4592 +msgid "remove a collation" +msgstr "ta bort en sortering" + +#: sql_help.c:4597 +msgid "remove a conversion" +msgstr "ta bort en konvertering" + +#: sql_help.c:4602 +msgid "remove a database" +msgstr "ta bort en databas" + +#: sql_help.c:4607 +msgid "remove a domain" +msgstr "ta bort en domän" + +#: sql_help.c:4612 +msgid "remove an event trigger" +msgstr "ta bort en händelseutlösare" + +#: sql_help.c:4617 +msgid "remove an extension" +msgstr "ta bort en utökning" + +#: sql_help.c:4622 +msgid "remove a foreign-data wrapper" +msgstr "ta bort en frammande data-omvandlare" + +#: sql_help.c:4627 +msgid "remove a foreign table" +msgstr "ta bort en främmande tabell" + +#: sql_help.c:4632 +msgid "remove a function" +msgstr "ta bort en funktion" + +#: sql_help.c:4637 sql_help.c:4682 sql_help.c:4752 +msgid "remove a database role" +msgstr "ta bort en databasroll" + +#: sql_help.c:4642 +msgid "remove an index" +msgstr "ta bort ett index" + +#: sql_help.c:4647 +msgid "remove a procedural language" +msgstr "ta bort ett procedur-sprÃ¥k" + +#: sql_help.c:4652 +msgid "remove a materialized view" +msgstr "ta bort en materialiserad vy" + +#: sql_help.c:4657 +msgid "remove an operator" +msgstr "ta bort en operator" + +#: sql_help.c:4662 +msgid "remove an operator class" +msgstr "ta bort en operatorklass" + +#: sql_help.c:4667 +msgid "remove an operator family" +msgstr "ta bort en operatorfamilj" + +#: sql_help.c:4672 +msgid "remove database objects owned by a database role" +msgstr "ta bort databasobjekt som ägs av databasroll" + +#: sql_help.c:4677 +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:4687 +msgid "remove a rewrite rule" +msgstr "ta bort en omskrivningsregel" + +#: sql_help.c:4692 +msgid "remove a schema" +msgstr "ta bort ett schema" + +#: sql_help.c:4697 +msgid "remove a sequence" +msgstr "ta bort en sekvens" + +#: sql_help.c:4702 +msgid "remove a foreign server descriptor" +msgstr "ta bort en främmande server-deskriptor" + +#: sql_help.c:4707 +msgid "remove a table" +msgstr "ta bort en tabell" + +#: sql_help.c:4712 +msgid "remove a tablespace" +msgstr "ta bort ett tabellutrymme" + +#: sql_help.c:4717 +msgid "remove a text search configuration" +msgstr "ta bort en textsökkonfiguration" + +#: sql_help.c:4722 +msgid "remove a text search dictionary" +msgstr "ta bort en textsökordlista" + +#: sql_help.c:4727 +msgid "remove a text search parser" +msgstr "ta bort en textsökparser" + +#: sql_help.c:4732 +msgid "remove a text search template" +msgstr "ta bort en textsökmall" + +#: sql_help.c:4737 +msgid "remove a transform" +msgstr "ta bort en transform" + +#: sql_help.c:4742 +msgid "remove a trigger" +msgstr "ta bort en utlösare" + +#: sql_help.c:4747 +msgid "remove a data type" +msgstr "ta bort en datatyp" + +#: sql_help.c:4757 +msgid "remove a user mapping for a foreign server" +msgstr "ta bort en användarmappning för en främmande server" + +#: sql_help.c:4762 +msgid "remove a view" +msgstr "ta bort en vy" + +#: sql_help.c:4772 +msgid "execute a prepared statement" +msgstr "utför en förberedd sats" + +#: sql_help.c:4777 +msgid "show the execution plan of a statement" +msgstr "visa körningsplanen för en sats" + +#: sql_help.c:4782 +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:4787 +msgid "define access privileges" +msgstr "definera Ã¥tkomsträttigheter" + +#: sql_help.c:4792 +msgid "import table definitions from a foreign server" +msgstr "importera tabelldefinitioner frÃ¥n en främmande server" + +#: sql_help.c:4797 +msgid "create new rows in a table" +msgstr "skapa nya rader i en tabell" + +#: sql_help.c:4802 +msgid "listen for a notification" +msgstr "lyssna efter notifiering" + +#: sql_help.c:4807 +msgid "load a shared library file" +msgstr "ladda en delad biblioteksfil (shared library)" + +#: sql_help.c:4812 +msgid "lock a table" +msgstr "lÃ¥s en tabell" + +#: sql_help.c:4817 +msgid "position a cursor" +msgstr "flytta en markör" + +#: sql_help.c:4822 +msgid "generate a notification" +msgstr "generera en notifiering" + +#: sql_help.c:4827 +msgid "prepare a statement for execution" +msgstr "förbered en sats för körning" + +#: sql_help.c:4832 +msgid "prepare the current transaction for two-phase commit" +msgstr "avbryt aktuell transaktion för tvÃ¥-fas-commit" + +#: sql_help.c:4837 +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:4842 +msgid "replace the contents of a materialized view" +msgstr "ersätt innehÃ¥llet av en materialiserad vy" + +#: sql_help.c:4847 +msgid "rebuild indexes" +msgstr "Ã¥terskapa index" + +#: sql_help.c:4852 +msgid "destroy a previously defined savepoint" +msgstr "ta bort en tidigare definierad sparpunkt" + +#: sql_help.c:4857 +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:4862 +msgid "remove access privileges" +msgstr "ta bort Ã¥tkomsträttigheter" + +#: sql_help.c:4872 +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:4877 +msgid "roll back to a savepoint" +msgstr "rulla tillbaka till sparpunkt" + +#: sql_help.c:4882 +msgid "define a new savepoint within the current transaction" +msgstr "definera en ny sparpunkt i den aktuella transaktionen" + +#: sql_help.c:4887 +msgid "define or change a security label applied to an object" +msgstr "definiera eller ändra en säkerhetsetikett pÃ¥ ett objekt" + +#: sql_help.c:4892 sql_help.c:4937 sql_help.c:4967 +msgid "retrieve rows from a table or view" +msgstr "hämta rader frÃ¥n en tabell eller vy" + +#: sql_help.c:4902 +msgid "change a run-time parameter" +msgstr "ändra en körningsparamter" + +#: sql_help.c:4907 +msgid "set constraint check timing for the current transaction" +msgstr "sätt integritetsvillkorstiming för nuvarande transaktion" + +#: sql_help.c:4912 +msgid "set the current user identifier of the current session" +msgstr "sätt användare för den aktiva sessionen" + +#: sql_help.c:4917 +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:4922 +msgid "set the characteristics of the current transaction" +msgstr "sätt inställningar för nuvarande transaktionen" + +#: sql_help.c:4927 +msgid "show the value of a run-time parameter" +msgstr "visa värde pÃ¥ en körningsparameter" + +#: sql_help.c:4942 +msgid "empty a table or set of tables" +msgstr "töm en eller flera tabeller" + +#: sql_help.c:4947 +msgid "stop listening for a notification" +msgstr "sluta att lyssna efter notifiering" + +#: sql_help.c:4952 +msgid "update rows of a table" +msgstr "uppdatera rader i en tabell" + +#: sql_help.c:4957 +msgid "garbage-collect and optionally analyze a database" +msgstr "skräpsamla och eventuellt analysera en databas" + +#: sql_help.c:4962 +msgid "compute a set of rows" +msgstr "beräkna en mängd rader" + +#: startup.c:189 +#, c-format +msgid "%s: -1 can only be used in non-interactive mode\n" +msgstr "%s: -1 kan bara användas i icke-interaktivt läge\n" + +#: startup.c:289 +#, c-format +msgid "%s: could not open log file \"%s\": %s\n" +msgstr "%s: kunde inte öppna logg-fil \"%s\": %s\n" + +#: startup.c:389 +#, c-format +msgid "" +"Type \"help\" for help.\n" +"\n" +msgstr "" +"Skriv \"help\" för hjälp.\n" +"\n" + +#: startup.c:538 +#, c-format +msgid "%s: could not set printing parameter \"%s\"\n" +msgstr "%s: kunde inte sätta utskriftsparameter \"%s\"\n" + +#: startup.c:578 +#, c-format +msgid "%s: could not delete variable \"%s\"\n" +msgstr "%s: kunde inte ta bort variabeln \"%s\"\n" + +#: startup.c:588 +#, c-format +msgid "%s: could not set variable \"%s\"\n" +msgstr "%s: kunde inte sätta variabeln \"%s\"\n" + +#: startup.c:648 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Försök med \"%s --help\" för mer information.\n" + +#: startup.c:665 +#, c-format +msgid "%s: warning: extra command-line argument \"%s\" ignored\n" +msgstr "%s: varning: extra kommandoradsargument \"%s\" ignorerad\n" + +#: startup.c:714 +#, c-format +msgid "%s: could not find own program executable\n" +msgstr "%s: kunde inte hitta det egna programmets körbara fil\n" + +#: startup.c:836 startup.c:883 startup.c:904 startup.c:941 startup.c:963 +#: variables.c:121 +#, c-format +msgid "unrecognized value \"%s\" for \"%s\"; assuming \"%s\"\n" +msgstr "okänt värde \"%s\" för \"%s\"; antar \"%s\"\n" + +#: tab-complete.c:3740 +#, c-format +msgid "" +"tab completion query failed: %s\n" +"Query was:\n" +"%s\n" +msgstr "" +"tab-kompletteringsfrÃ¥ga misslyckades: %s\n" +"FrÃ¥gan var:\n" +"%s\n" diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index 8469d9ff03..68a2ba27ae 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -628,9 +628,9 @@ static const SchemaQuery Query_for_list_of_matviews = { #define Query_for_list_of_alter_system_set_vars \ "SELECT name FROM "\ " (SELECT pg_catalog.lower(name) AS name FROM pg_catalog.pg_settings "\ -" WHERE context != 'internal') ss "\ -" WHERE substring(name,1,%d)='%s'"\ -" UNION ALL SELECT 'all' ss" +" WHERE context != 'internal' "\ +" UNION ALL SELECT 'all') ss "\ +" WHERE substring(name,1,%d)='%s'" #define Query_for_list_of_set_vars \ "SELECT name FROM "\ @@ -921,7 +921,7 @@ static const pgsql_thing_t words_after_create[] = { {"UNIQUE", NULL, NULL, THING_NO_DROP}, /* for CREATE UNIQUE INDEX ... */ {"UNLOGGED", NULL, NULL, THING_NO_DROP}, /* for CREATE UNLOGGED TABLE * ... */ - {"USER", Query_for_list_of_roles}, + {"USER", Query_for_list_of_roles " UNION SELECT 'MAPPING FOR'"}, {"USER MAPPING FOR", NULL, NULL}, {"VIEW", NULL, &Query_for_list_of_views}, {NULL} /* end of list */ @@ -1502,13 +1502,31 @@ psql_completion(const char *text, int start, int end) COMPLETE_WITH_CONST("PASSWORD"); /* ALTER DEFAULT PRIVILEGES */ else if (Matches3("ALTER", "DEFAULT", "PRIVILEGES")) - COMPLETE_WITH_LIST3("FOR ROLE", "FOR USER", "IN SCHEMA"); + COMPLETE_WITH_LIST2("FOR ROLE", "IN SCHEMA"); /* ALTER DEFAULT PRIVILEGES FOR */ else if (Matches4("ALTER", "DEFAULT", "PRIVILEGES", "FOR")) - COMPLETE_WITH_LIST2("ROLE", "USER"); - /* ALTER DEFAULT PRIVILEGES { FOR ROLE ... | IN SCHEMA ... } */ - else if (Matches6("ALTER", "DEFAULT", "PRIVILEGES", "FOR", "ROLE|USER", MatchAny) || - Matches6("ALTER", "DEFAULT", "PRIVILEGES", "IN", "SCHEMA", MatchAny)) + COMPLETE_WITH_CONST("ROLE"); + /* ALTER DEFAULT PRIVILEGES IN */ + else if (Matches4("ALTER", "DEFAULT", "PRIVILEGES", "IN")) + COMPLETE_WITH_CONST("SCHEMA"); + /* ALTER DEFAULT PRIVILEGES FOR ROLE|USER ... */ + else if (Matches6("ALTER", "DEFAULT", "PRIVILEGES", "FOR", "ROLE|USER", + MatchAny)) + COMPLETE_WITH_LIST3("GRANT", "REVOKE", "IN SCHEMA"); + /* ALTER DEFAULT PRIVILEGES IN SCHEMA ... */ + else if (Matches6("ALTER", "DEFAULT", "PRIVILEGES", "IN", "SCHEMA", + MatchAny)) + COMPLETE_WITH_LIST3("GRANT", "REVOKE", "FOR ROLE"); + /* ALTER DEFAULT PRIVILEGES IN SCHEMA ... FOR */ + else if (Matches7("ALTER", "DEFAULT", "PRIVILEGES", "IN", "SCHEMA", + MatchAny, "FOR")) + COMPLETE_WITH_CONST("ROLE"); + /* ALTER DEFAULT PRIVILEGES FOR ROLE|USER ... IN SCHEMA ... */ + /* ALTER DEFAULT PRIVILEGES IN SCHEMA ... FOR ROLE|USER ... */ + else if (Matches9("ALTER", "DEFAULT", "PRIVILEGES", "FOR", "ROLE|USER", + MatchAny, "IN", "SCHEMA", MatchAny) || + Matches9("ALTER", "DEFAULT", "PRIVILEGES", "IN", "SCHEMA", + MatchAny, "FOR", "ROLE|USER", MatchAny)) COMPLETE_WITH_LIST2("GRANT", "REVOKE"); /* ALTER DOMAIN */ else if (Matches3("ALTER", "DOMAIN", MatchAny)) @@ -1554,9 +1572,10 @@ psql_completion(const char *text, int start, int end) /* ALTER SYSTEM SET, RESET, RESET ALL */ else if (Matches2("ALTER", "SYSTEM")) COMPLETE_WITH_LIST2("SET", "RESET"); - /* ALTER SYSTEM SET|RESET */ else if (Matches3("ALTER", "SYSTEM", "SET|RESET")) COMPLETE_WITH_QUERY(Query_for_list_of_alter_system_set_vars); + else if (Matches4("ALTER", "SYSTEM", "SET", MatchAny)) + COMPLETE_WITH_CONST("TO"); /* ALTER VIEW */ else if (Matches3("ALTER", "VIEW", MatchAny)) COMPLETE_WITH_LIST4("ALTER COLUMN", "OWNER TO", "RENAME TO", @@ -1736,7 +1755,7 @@ psql_completion(const char *text, int start, int end) COMPLETE_WITH_LIST4("PLAIN", "EXTERNAL", "EXTENDED", "MAIN"); /* ALTER TABLE ALTER [COLUMN] DROP */ else if (Matches7("ALTER", "TABLE", MatchAny, "ALTER", "COLUMN", MatchAny, "DROP") || - Matches8("ALTER", "TABLE", MatchAny, "TABLE", MatchAny, "ALTER", MatchAny, "DROP")) + Matches6("ALTER", "TABLE", MatchAny, "ALTER", MatchAny, "DROP")) COMPLETE_WITH_LIST2("DEFAULT", "NOT NULL"); else if (Matches4("ALTER", "TABLE", MatchAny, "CLUSTER")) COMPLETE_WITH_CONST("ON"); @@ -2431,10 +2450,22 @@ psql_completion(const char *text, int start, int end) else if (TailMatches2("FOREIGN", "SERVER")) COMPLETE_WITH_QUERY(Query_for_list_of_servers); -/* GRANT && REVOKE --- is allowed inside CREATE SCHEMA, so use TailMatches */ +/* + * 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 (TailMatches1("GRANT|REVOKE")) - COMPLETE_WITH_QUERY(Query_for_list_of_roles + /* + * With ALTER DEFAULT PRIVILEGES, restrict completion + * to grantable privileges (can't grant roles) + */ + if (HeadMatches3("ALTER","DEFAULT","PRIVILEGES")) + COMPLETE_WITH_LIST10("SELECT", "INSERT", "UPDATE", + "DELETE", "TRUNCATE", "REFERENCES", "TRIGGER", + "EXECUTE", "USAGE", "ALL"); + else + COMPLETE_WITH_QUERY(Query_for_list_of_roles " UNION SELECT 'SELECT'" " UNION SELECT 'INSERT'" " UNION SELECT 'UPDATE'" @@ -2475,7 +2506,14 @@ psql_completion(const char *text, int start, int end) * privilege. */ else if (TailMatches3("GRANT|REVOKE", MatchAny, "ON")) - COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tsvmf, + /* + * With ALTER DEFAULT PRIVILEGES, restrict completion + * to the kinds of objects supported. + */ + if (HeadMatches3("ALTER","DEFAULT","PRIVILEGES")) + COMPLETE_WITH_LIST4("TABLES", "SEQUENCES", "FUNCTIONS", "TYPES"); + else + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tsvmf, " UNION SELECT 'ALL FUNCTIONS IN SCHEMA'" " UNION SELECT 'ALL SEQUENCES IN SCHEMA'" " UNION SELECT 'ALL TABLES IN SCHEMA'" @@ -2538,7 +2576,9 @@ psql_completion(const char *text, int start, int end) else if ((HeadMatches1("GRANT") && TailMatches1("TO")) || (HeadMatches1("REVOKE") && TailMatches1("FROM"))) COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); - + /* Complete "ALTER DEFAULT PRIVILEGES ... GRANT/REVOKE ... TO/FROM */ + else if (HeadMatches3("ALTER","DEFAULT", "PRIVILEGES") && TailMatches1("TO|FROM")) + COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles); /* Complete "GRANT/REVOKE ... ON * *" with TO/FROM */ else if (HeadMatches1("GRANT") && TailMatches3("ON", MatchAny, MatchAny)) COMPLETE_WITH_CONST("TO"); @@ -3037,19 +3077,17 @@ psql_completion(const char *text, int start, int end) } else if (TailMatchesCS1("linestyle")) COMPLETE_WITH_LIST_CS3("ascii", "old-ascii", "unicode"); + else if (TailMatchesCS1("pager")) + COMPLETE_WITH_LIST_CS3("on", "off", "always"); else if (TailMatchesCS1("unicode_border_linestyle|" "unicode_column_linestyle|" "unicode_header_linestyle")) COMPLETE_WITH_LIST_CS2("single", "double"); } else if (TailMatchesCS1("\\unset")) - { matches = complete_from_variables(text, "", "", true); - } else if (TailMatchesCS1("\\set")) - { matches = complete_from_variables(text, "", "", false); - } else if (TailMatchesCS2("\\set", MatchAny)) { if (TailMatchesCS1("AUTOCOMMIT|ON_ERROR_STOP|QUIET|" diff --git a/src/bin/scripts/Makefile b/src/bin/scripts/Makefile index c6ad4e7552..b98dbc7d30 100644 --- a/src/bin/scripts/Makefile +++ b/src/bin/scripts/Makefile @@ -19,12 +19,12 @@ include $(top_builddir)/src/Makefile.global PROGRAMS = createdb createlang createuser dropdb droplang dropuser clusterdb vacuumdb reindexdb pg_isready override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS) -LDFLAGS += -L$(top_builddir)/src/fe_utils -lpgfeutils -lpq +override LDFLAGS := -L$(top_builddir)/src/fe_utils -lpgfeutils $(libpq_pgport) $(LDFLAGS) all: $(PROGRAMS) %: %.o $(WIN32RES) - $(CC) $(CFLAGS) $^ $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + $(CC) $(CFLAGS) $^ $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) createdb: createdb.o common.o | submake-libpq submake-libpgport submake-libpgfeutils createlang: createlang.o common.o | submake-libpq submake-libpgport submake-libpgfeutils diff --git a/src/bin/scripts/po/es.po b/src/bin/scripts/po/es.po index e832fbbb5f..9909b1dc6e 100644 --- a/src/bin/scripts/po/es.po +++ b/src/bin/scripts/po/es.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: pgscripts (PostgreSQL 9.6)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-05-02 20:14+0000\n" +"POT-Creation-Date: 2017-08-27 21:52+0000\n" "PO-Revision-Date: 2016-05-25 11:14-0500\n" "Last-Translator: Carlos Chapi \n" "Language-Team: Castellano \n" @@ -55,56 +55,56 @@ msgid_plural "(%lu rows)" msgstr[0] "(%lu fila)" msgstr[1] "(%lu filas)" -#: ../../fe_utils/print.c:2906 +#: ../../fe_utils/print.c:2914 #, c-format msgid "Interrupted\n" msgstr "Interrumpido\n" -#: ../../fe_utils/print.c:2970 +#: ../../fe_utils/print.c:2978 #, 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:3010 +#: ../../fe_utils/print.c:3018 #, 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:3259 +#: ../../fe_utils/print.c:3267 #, c-format msgid "invalid output format (internal error): %d" msgstr "formato de salida no válido (error interno): %d" -#: clusterdb.c:110 clusterdb.c:129 createdb.c:119 createdb.c:138 +#: clusterdb.c:111 clusterdb.c:130 createdb.c:119 createdb.c:138 #: createlang.c:89 createlang.c:119 createlang.c:174 createuser.c:169 #: createuser.c:184 dropdb.c:94 dropdb.c:103 dropdb.c:111 droplang.c:88 #: droplang.c:118 droplang.c:174 dropuser.c:89 dropuser.c:104 dropuser.c:115 #: pg_isready.c:93 pg_isready.c:107 reindexdb.c:131 reindexdb.c:150 -#: vacuumdb.c:209 vacuumdb.c:228 +#: vacuumdb.c:211 vacuumdb.c:230 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Use «%s --help» para mayor información.\n" -#: clusterdb.c:127 createdb.c:136 createlang.c:117 createuser.c:182 +#: clusterdb.c:128 createdb.c:136 createlang.c:117 createuser.c:182 #: dropdb.c:109 droplang.c:116 dropuser.c:102 pg_isready.c:105 reindexdb.c:148 -#: vacuumdb.c:226 +#: vacuumdb.c:228 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: demasiados argumentos (el primero es «%s»)\n" -#: clusterdb.c:139 +#: clusterdb.c:140 #, c-format msgid "%s: cannot cluster all databases and a specific one at the same time\n" msgstr "" "%s: no se pueden reordenar todas las bases de datos y una de ellas\n" "en particular simultáneamente\n" -#: clusterdb.c:146 +#: clusterdb.c:147 #, c-format msgid "%s: cannot cluster specific table(s) in all databases\n" msgstr "%s: no es posible reordenar tablas específicas en todas las bases de datos\n" -#: clusterdb.c:211 +#: clusterdb.c:212 #, c-format msgid "%s: clustering of table \"%s\" in database \"%s\" failed: %s" msgstr "" @@ -112,19 +112,19 @@ msgstr "" "la base de datos «%s»:\n" "%s" -#: clusterdb.c:214 +#: clusterdb.c:215 #, c-format msgid "%s: clustering of database \"%s\" failed: %s" msgstr "" "%s: falló el reordenamiento de la base de datos «%s»:\n" "%s" -#: clusterdb.c:245 +#: clusterdb.c:248 #, c-format msgid "%s: clustering database \"%s\"\n" msgstr "%s: reordenando la base de datos «%s»\n" -#: clusterdb.c:261 +#: clusterdb.c:269 #, c-format msgid "" "%s clusters all previously clustered tables in a database.\n" @@ -134,21 +134,21 @@ msgstr "" "en una base de datos.\n" "\n" -#: clusterdb.c:262 createdb.c:252 createlang.c:236 createuser.c:349 -#: dropdb.c:155 droplang.c:237 dropuser.c:156 pg_isready.c:222 reindexdb.c:393 -#: vacuumdb.c:939 +#: clusterdb.c:270 createdb.c:252 createlang.c:236 createuser.c:349 +#: dropdb.c:155 droplang.c:237 dropuser.c:156 pg_isready.c:222 reindexdb.c:401 +#: vacuumdb.c:946 #, c-format msgid "Usage:\n" msgstr "Empleo:\n" -#: clusterdb.c:263 reindexdb.c:394 vacuumdb.c:940 +#: clusterdb.c:271 reindexdb.c:402 vacuumdb.c:947 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [OPCIÓN]... [BASE-DE-DATOS]\n" -#: clusterdb.c:264 createdb.c:254 createlang.c:238 createuser.c:351 -#: dropdb.c:157 droplang.c:239 dropuser.c:158 pg_isready.c:225 reindexdb.c:395 -#: vacuumdb.c:941 +#: clusterdb.c:272 createdb.c:254 createlang.c:238 createuser.c:351 +#: dropdb.c:157 droplang.c:239 dropuser.c:158 pg_isready.c:225 reindexdb.c:403 +#: vacuumdb.c:948 #, c-format msgid "" "\n" @@ -157,52 +157,52 @@ msgstr "" "\n" "Opciones:\n" -#: clusterdb.c:265 +#: clusterdb.c:273 #, c-format msgid " -a, --all cluster all databases\n" msgstr " -a, --all reordenar todas las bases de datos\n" -#: clusterdb.c:266 +#: clusterdb.c:274 #, c-format msgid " -d, --dbname=DBNAME database to cluster\n" msgstr " -d, --dbname=BASE base de datos a reordenar\n" -#: clusterdb.c:267 createlang.c:240 createuser.c:355 dropdb.c:158 -#: droplang.c:241 dropuser.c:159 reindexdb.c:398 +#: clusterdb.c:275 createlang.c:240 createuser.c:355 dropdb.c:158 +#: droplang.c:241 dropuser.c:159 reindexdb.c:406 #, c-format msgid " -e, --echo show the commands being sent to the server\n" msgstr " -e, --echo mostrar las órdenes a medida que se ejecutan\n" -#: clusterdb.c:268 reindexdb.c:400 +#: clusterdb.c:276 reindexdb.c:408 #, c-format msgid " -q, --quiet don't write any messages\n" msgstr " -q, --quiet no escribir ningún mensaje\n" -#: clusterdb.c:269 +#: clusterdb.c:277 #, c-format msgid " -t, --table=TABLE cluster specific table(s) only\n" msgstr " -t, --table=TABLA reordenar sólo esta(s) tabla(s)\n" -#: clusterdb.c:270 reindexdb.c:404 +#: clusterdb.c:278 reindexdb.c:412 #, c-format msgid " -v, --verbose write a lot of output\n" msgstr " -v, --verbose desplegar varios mensajes informativos\n" -#: clusterdb.c:271 createlang.c:242 createuser.c:369 dropdb.c:160 -#: droplang.c:243 dropuser.c:162 reindexdb.c:405 +#: clusterdb.c:279 createlang.c:242 createuser.c:369 dropdb.c:160 +#: droplang.c:243 dropuser.c:162 reindexdb.c:413 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version mostrar información de versión y salir\n" -#: clusterdb.c:272 createlang.c:243 createuser.c:374 dropdb.c:162 -#: droplang.c:244 dropuser.c:164 reindexdb.c:406 +#: clusterdb.c:280 createlang.c:243 createuser.c:374 dropdb.c:162 +#: droplang.c:244 dropuser.c:164 reindexdb.c:414 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help mostrar esta ayuda y salir\n" -#: clusterdb.c:273 createdb.c:265 createlang.c:244 createuser.c:375 -#: dropdb.c:163 droplang.c:245 dropuser.c:165 pg_isready.c:231 reindexdb.c:407 -#: vacuumdb.c:957 +#: clusterdb.c:281 createdb.c:265 createlang.c:244 createuser.c:375 +#: dropdb.c:163 droplang.c:245 dropuser.c:165 pg_isready.c:231 reindexdb.c:415 +#: vacuumdb.c:964 #, c-format msgid "" "\n" @@ -211,42 +211,42 @@ msgstr "" "\n" "Opciones de conexión:\n" -#: clusterdb.c:274 createlang.c:245 createuser.c:376 dropdb.c:164 -#: droplang.c:246 dropuser.c:166 reindexdb.c:408 vacuumdb.c:958 +#: clusterdb.c:282 createlang.c:245 createuser.c:376 dropdb.c:164 +#: droplang.c:246 dropuser.c:166 reindexdb.c:416 vacuumdb.c:965 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=ANFITRIÓN nombre del servidor o directorio del socket\n" -#: clusterdb.c:275 createlang.c:246 createuser.c:377 dropdb.c:165 -#: droplang.c:247 dropuser.c:167 reindexdb.c:409 vacuumdb.c:959 +#: clusterdb.c:283 createlang.c:246 createuser.c:377 dropdb.c:165 +#: droplang.c:247 dropuser.c:167 reindexdb.c:417 vacuumdb.c:966 #, c-format msgid " -p, --port=PORT database server port\n" msgstr " -p, --port=PUERTO puerto del servidor\n" -#: clusterdb.c:276 createlang.c:247 dropdb.c:166 droplang.c:248 reindexdb.c:410 -#: vacuumdb.c:960 +#: clusterdb.c:284 createlang.c:247 dropdb.c:166 droplang.c:248 reindexdb.c:418 +#: vacuumdb.c:967 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=USUARIO nombre de usuario para la conexión\n" -#: clusterdb.c:277 createlang.c:248 createuser.c:379 dropdb.c:167 -#: droplang.c:249 dropuser.c:169 reindexdb.c:411 vacuumdb.c:961 +#: clusterdb.c:285 createlang.c:248 createuser.c:379 dropdb.c:167 +#: droplang.c:249 dropuser.c:169 reindexdb.c:419 vacuumdb.c:968 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password nunca pedir contraseña\n" -#: clusterdb.c:278 createlang.c:249 createuser.c:380 dropdb.c:168 -#: droplang.c:250 dropuser.c:170 reindexdb.c:412 vacuumdb.c:962 +#: clusterdb.c:286 createlang.c:249 createuser.c:380 dropdb.c:168 +#: droplang.c:250 dropuser.c:170 reindexdb.c:420 vacuumdb.c:969 #, c-format msgid " -W, --password force password prompt\n" msgstr " -W, --password forzar la petición de contraseña\n" -#: clusterdb.c:279 dropdb.c:169 reindexdb.c:413 vacuumdb.c:963 +#: clusterdb.c:287 dropdb.c:169 reindexdb.c:421 vacuumdb.c:970 #, c-format msgid " --maintenance-db=DBNAME alternate maintenance database\n" msgstr " --maintenance-db=BASE base de datos de mantención alternativa\n" -#: clusterdb.c:280 +#: clusterdb.c:288 #, c-format msgid "" "\n" @@ -255,9 +255,9 @@ msgstr "" "\n" "Lea la descripción de la orden CLUSTER de SQL para obtener mayores detalles.\n" -#: clusterdb.c:281 createdb.c:273 createlang.c:250 createuser.c:381 -#: dropdb.c:170 droplang.c:251 dropuser.c:171 pg_isready.c:236 reindexdb.c:415 -#: vacuumdb.c:965 +#: clusterdb.c:289 createdb.c:273 createlang.c:250 createuser.c:381 +#: dropdb.c:170 droplang.c:251 dropuser.c:171 pg_isready.c:236 reindexdb.c:423 +#: vacuumdb.c:972 #, c-format msgid "" "\n" @@ -480,7 +480,7 @@ msgstr "Lenguajes Procedurales" msgid "%s: missing required argument language name\n" msgstr "%s: falta el nombre de lenguaje requerido\n" -#: createlang.c:197 +#: createlang.c:196 #, c-format msgid "%s: language \"%s\" is already installed in database \"%s\"\n" msgstr "%s: el lenguaje «%s» ya está instalado en la base de datos «%s»\n" @@ -721,7 +721,7 @@ msgstr " -i, --interactive preguntar antes de eliminar\n" msgid " --if-exists don't report error if database doesn't exist\n" msgstr " --if-exists no reportar error si la base de datos no existe\n" -#: droplang.c:203 +#: droplang.c:202 #, c-format msgid "%s: language \"%s\" is not installed in database \"%s\"\n" msgstr "%s: el lenguaje «%s» no está instalado en la base de datos «%s»\n" @@ -959,17 +959,17 @@ msgstr "%s: falló la reindexación del esquema «%s» en la base de datos «%s msgid "%s: reindexing of database \"%s\" failed: %s" msgstr "%s: falló la reindexación de la base de datos «%s»: %s" -#: reindexdb.c:347 +#: reindexdb.c:349 #, c-format msgid "%s: reindexing database \"%s\"\n" msgstr "%s: reindexando la base de datos «%s»\n" -#: reindexdb.c:380 +#: reindexdb.c:388 #, c-format msgid "%s: reindexing of system catalogs failed: %s" msgstr "%s: falló la reindexación de los catálogos del sistema: %s" -#: reindexdb.c:392 +#: reindexdb.c:400 #, c-format msgid "" "%s reindexes a PostgreSQL database.\n" @@ -978,37 +978,37 @@ msgstr "" "%s reindexa una base de datos PostgreSQL.\n" "\n" -#: reindexdb.c:396 +#: reindexdb.c:404 #, c-format msgid " -a, --all reindex all databases\n" msgstr " -a, --all reindexar todas las bases de datos\n" -#: reindexdb.c:397 +#: reindexdb.c:405 #, c-format msgid " -d, --dbname=DBNAME database to reindex\n" msgstr " -d, --dbname=DBNAME base de datos a reindexar\n" -#: reindexdb.c:399 +#: reindexdb.c:407 #, c-format msgid " -i, --index=INDEX recreate specific index(es) only\n" msgstr " -i, --index=INDEX recrear sólo este o estos índice(s)\n" -#: reindexdb.c:401 +#: reindexdb.c:409 #, c-format msgid " -s, --system reindex system catalogs\n" msgstr " -s, --system reindexa los catálogos del sistema\n" -#: reindexdb.c:402 +#: reindexdb.c:410 #, c-format msgid " -S, --schema=SCHEMA reindex specific schema(s) only\n" msgstr " -S, --schema=ESQUEMA reindexar sólo este o estos esquemas\n" -#: reindexdb.c:403 +#: reindexdb.c:411 #, c-format msgid " -t, --table=TABLE reindex specific table(s) only\n" msgstr " -t, --table=TABLE reindexar sólo esta(s) tabla(s)\n" -#: reindexdb.c:414 +#: reindexdb.c:422 #, c-format msgid "" "\n" @@ -1017,79 +1017,79 @@ msgstr "" "\n" "Lea la descripción de la orden REINDEX de SQL para obtener mayores detalles.\n" -#: vacuumdb.c:191 +#: vacuumdb.c:193 #, c-format msgid "%s: number of parallel jobs must be at least 1\n" msgstr "%s: número de trabajos en paralelo debe ser al menos 1\n" -#: vacuumdb.c:197 +#: vacuumdb.c:199 #, c-format msgid "%s: too many parallel jobs requested (maximum: %d)\n" msgstr "%s: demasiados trabajos paralelos solicitados (máximo: %d)\n" -#: vacuumdb.c:236 vacuumdb.c:242 +#: vacuumdb.c:238 vacuumdb.c:244 #, c-format msgid "%s: cannot use the \"%s\" option when performing only analyze\n" msgstr "" "%s: no se puede usar la opción «%s» cuando se está sólo\n" "actualizando estadísticas\n" -#: vacuumdb.c:259 +#: vacuumdb.c:261 #, c-format msgid "%s: cannot vacuum all databases and a specific one at the same time\n" msgstr "" "%s: no se pueden limpiar todas las bases de datos y una de ellas\n" "en particular simultáneamente\n" -#: vacuumdb.c:265 +#: vacuumdb.c:267 #, c-format msgid "%s: cannot vacuum specific table(s) in all databases\n" msgstr "" "%s: no es posible limpiar tablas específicas en todas\n" "las bases de datos\n" -#: vacuumdb.c:351 +#: vacuumdb.c:353 msgid "Generating minimal optimizer statistics (1 target)" msgstr "Generando estadísticas mínimas para el optimizador (tamaño = 1)" -#: vacuumdb.c:352 +#: vacuumdb.c:354 msgid "Generating medium optimizer statistics (10 targets)" msgstr "Generando estadísticas medias para el optimizador (tamaño = 10)" -#: vacuumdb.c:353 +#: vacuumdb.c:355 msgid "Generating default (full) optimizer statistics" msgstr "Generando estadísticas predeterminadas (completas) para el optimizador" -#: vacuumdb.c:362 +#: vacuumdb.c:367 #, c-format msgid "%s: processing database \"%s\": %s\n" msgstr "%s: procesando la base de datos «%s»: %s\n" -#: vacuumdb.c:365 +#: vacuumdb.c:370 #, c-format msgid "%s: vacuuming database \"%s\"\n" msgstr "%s: limpiando la base de datos «%s»\n" -#: vacuumdb.c:695 +#: vacuumdb.c:702 #, c-format msgid "%s: vacuuming of table \"%s\" in database \"%s\" failed: %s" msgstr "" "%s: falló la limpieza de la tabla «%s» en la base de datos «%s»:\n" "%s" -#: vacuumdb.c:698 vacuumdb.c:815 +#: vacuumdb.c:705 vacuumdb.c:822 #, c-format msgid "%s: vacuuming of database \"%s\" failed: %s" msgstr "" "%s: falló la limpieza de la base de datos «%s»:\n" "%s" -#: vacuumdb.c:929 +#: vacuumdb.c:936 #, c-format msgid "%s: invalid socket: %s" msgstr "%s: el socket no es válido: %s" -#: vacuumdb.c:938 +#: vacuumdb.c:945 #, c-format msgid "" "%s cleans and analyzes a PostgreSQL database.\n" @@ -1098,71 +1098,71 @@ msgstr "" "%s limpia (VACUUM) y analiza una base de datos PostgreSQL.\n" "\n" -#: vacuumdb.c:942 +#: vacuumdb.c:949 #, c-format msgid " -a, --all vacuum all databases\n" msgstr " -a, --all limpia todas las bases de datos\n" -#: vacuumdb.c:943 +#: vacuumdb.c:950 #, c-format msgid " -d, --dbname=DBNAME database to vacuum\n" msgstr " -d, --dbname=BASE base de datos a limpiar\n" -#: vacuumdb.c:944 +#: vacuumdb.c:951 #, c-format msgid " -e, --echo show the commands being sent to the server\n" msgstr " -e, --echo mostrar las órdenes enviadas al servidor\n" -#: vacuumdb.c:945 +#: vacuumdb.c:952 #, c-format msgid " -f, --full do full vacuuming\n" msgstr " -f, --full usar «vacuum full»\n" -#: vacuumdb.c:946 +#: vacuumdb.c:953 #, c-format msgid " -F, --freeze freeze row transaction information\n" msgstr " -F, --freeze usar «vacuum freeze»\n" -#: vacuumdb.c:947 +#: vacuumdb.c:954 #, c-format msgid " -j, --jobs=NUM use this many concurrent connections to vacuum\n" msgstr " -j, --jobs=NUM usar esta cantidad de conexiones concurrentes\n" -#: vacuumdb.c:948 +#: vacuumdb.c:955 #, c-format msgid " -q, --quiet don't write any messages\n" msgstr " -q, --quiet no desplegar mensajes\n" -#: vacuumdb.c:949 +#: vacuumdb.c:956 #, c-format msgid " -t, --table='TABLE[(COLUMNS)]' vacuum specific table(s) only\n" msgstr "" " -t, --table='TABLA[(COLUMNAS)]'\n" " limpiar sólo esta(s) tabla(s)\n" -#: vacuumdb.c:950 +#: vacuumdb.c:957 #, c-format msgid " -v, --verbose write a lot of output\n" msgstr " -v, --verbose desplegar varios mensajes informativos\n" -#: vacuumdb.c:951 +#: vacuumdb.c:958 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version mostrar información de versión y salir\n" -#: vacuumdb.c:952 +#: vacuumdb.c:959 #, c-format msgid " -z, --analyze update optimizer statistics\n" msgstr " -z, --analyze actualizar las estadísticas del optimizador\n" -#: vacuumdb.c:953 +#: vacuumdb.c:960 #, c-format msgid " -Z, --analyze-only only update optimizer statistics; no vacuum\n" msgstr "" " -Z, --analyze-only sólo actualizar las estadísticas del optimizador;\n" " no hacer vacuum\n" -#: vacuumdb.c:954 +#: vacuumdb.c:961 #, c-format msgid "" " --analyze-in-stages only update optimizer statistics, in multiple\n" @@ -1172,12 +1172,12 @@ msgstr "" " en múltiples etapas para resultados más rápidos;\n" " no hacer vacuum\n" -#: vacuumdb.c:956 +#: vacuumdb.c:963 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help mostrar esta ayuda y salir\n" -#: vacuumdb.c:964 +#: vacuumdb.c:971 #, c-format msgid "" "\n" diff --git a/src/bin/scripts/po/fr.po b/src/bin/scripts/po/fr.po index 5357015389..3f45d8e364 100644 --- a/src/bin/scripts/po/fr.po +++ b/src/bin/scripts/po/fr.po @@ -1,10 +1,10 @@ # translation of pgscripts.po to fr_fr # french message translation file for pgscripts # -# Use these quotes: « %s » +# Use these quotes: « %s » # # Guillaume Lelarge , 2004-2009. -# Stéphane Schildknecht , 2009. +# Stéphane Schildknecht , 2009. msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" @@ -15,7 +15,7 @@ msgstr "" "Language-Team: PostgreSQLfr \n" "Language: fr\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.8.7.1\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" @@ -24,7 +24,7 @@ msgstr "" #: ../../common/fe_memutils.c:98 #, c-format msgid "out of memory\n" -msgstr "mémoire épuisée\n" +msgstr "mémoire épuisée\n" #: ../../common/fe_memutils.c:92 #, c-format @@ -34,7 +34,7 @@ msgstr "ne peut pas dupliquer un pointeur nul (erreur interne)\n" #: ../../common/username.c:45 #, 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" +msgstr "n'a pas pu trouver l'identifiant réel %ld de l'utilisateur : %s" #: ../../common/username.c:47 msgid "user does not exist" @@ -43,7 +43,7 @@ msgstr "l'utilisateur n'existe pas" #: ../../common/username.c:62 #, c-format msgid "user name lookup failure: error code %lu" -msgstr "échec lors de la recherche du nom d'utilisateur : code erreur %lu" +msgstr "échec lors de la recherche du nom d'utilisateur : code erreur %lu" #: ../../fe_utils/print.c:354 #, c-format @@ -61,15 +61,15 @@ msgstr "Interrompu\n" #, 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" +"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:3010 #, 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" +"cellules %d est dépassé.\n" #: ../../fe_utils/print.c:3259 #, c-format @@ -84,45 +84,45 @@ msgstr "format de sortie invalide (erreur interne) : %d" #: vacuumdb.c:209 vacuumdb.c:228 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Essayer « %s --help » pour plus d'informations.\n" +msgstr "Essayer « %s --help » pour plus d'informations.\n" #: clusterdb.c:127 createdb.c:136 createlang.c:117 createuser.c:182 #: dropdb.c:109 droplang.c:116 dropuser.c:102 pg_isready.c:105 reindexdb.c:148 #: vacuumdb.c:226 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" -msgstr "%s : trop d'arguments en ligne de commande (le premier étant « %s »)\n" +msgstr "%s : trop d'arguments en ligne de commande (le premier étant « %s »)\n" #: clusterdb.c:139 #, c-format msgid "%s: cannot cluster all databases and a specific one at the same time\n" msgstr "" -"%s : ne réorganise pas à la fois toutes les bases de données et une base\n" -"spécifique via la commande CLUSTER\n" +"%s : ne réorganise pas à la fois toutes les bases de données et une base\n" +"spécifique via la commande CLUSTER\n" #: clusterdb.c:146 #, c-format msgid "%s: cannot cluster specific table(s) in all databases\n" -msgstr "%s : impossible de réorganiser la(les) table(s) spécifique(s) dans toutes les bases de données\n" +msgstr "%s : impossible de réorganiser la(les) table(s) spécifique(s) dans toutes les bases de données\n" #: clusterdb.c:211 #, c-format msgid "%s: clustering of table \"%s\" in database \"%s\" failed: %s" msgstr "" -"%s : la réorganisation de la table « %s » de la base de données « %s » avec\n" -"la commande CLUSTER a échoué : %s" +"%s : la réorganisation de la table « %s » de la base de données « %s » avec\n" +"la commande CLUSTER a échoué : %s" #: clusterdb.c:214 #, c-format msgid "%s: clustering of database \"%s\" failed: %s" msgstr "" -"%s : la réorganisation de la base de données « %s » via la commande\n" -"CLUSTER a échoué : %s" +"%s : la réorganisation de la base de données « %s » via la commande\n" +"CLUSTER a échoué : %s" #: clusterdb.c:245 #, c-format msgid "%s: clustering database \"%s\"\n" -msgstr "%s : réorganisation de la base de données « %s » via la commande CLUSTER\n" +msgstr "%s : réorganisation de la base de données « %s » via la commande CLUSTER\n" #: clusterdb.c:261 #, c-format @@ -130,8 +130,8 @@ msgid "" "%s clusters all previously clustered tables in a database.\n" "\n" msgstr "" -"%s réorganise toutes les tables précédemment réorganisées au sein d'une base\n" -"de données via la commande CLUSTER.\n" +"%s réorganise toutes les tables précédemment réorganisées au sein d'une base\n" +"de données via la commande CLUSTER.\n" "\n" #: clusterdb.c:262 createdb.c:252 createlang.c:236 createuser.c:349 @@ -160,28 +160,28 @@ msgstr "" #: clusterdb.c:265 #, c-format msgid " -a, --all cluster all databases\n" -msgstr " -a, --all réorganise toutes les bases de données\n" +msgstr " -a, --all réorganise toutes les bases de données\n" #: clusterdb.c:266 #, c-format msgid " -d, --dbname=DBNAME database to cluster\n" -msgstr " -d, --dbname=NOMBASE base de données à réorganiser\n" +msgstr " -d, --dbname=NOMBASE base de données à réorganiser\n" #: clusterdb.c:267 createlang.c:240 createuser.c:355 dropdb.c:158 #: droplang.c:241 dropuser.c:159 reindexdb.c:398 #, c-format msgid " -e, --echo show the commands being sent to the server\n" -msgstr " -e, --echo affiche les commandes envoyées au serveur\n" +msgstr " -e, --echo affiche les commandes envoyées au serveur\n" #: clusterdb.c:268 reindexdb.c:400 #, c-format msgid " -q, --quiet don't write any messages\n" -msgstr " -q, --quiet n'écrit aucun message\n" +msgstr " -q, --quiet n'écrit aucun message\n" #: clusterdb.c:269 #, c-format msgid " -t, --table=TABLE cluster specific table(s) only\n" -msgstr " -t, --table=TABLE réorganise uniquement cette(ces) table(s)\n" +msgstr " -t, --table=TABLE réorganise uniquement cette(ces) table(s)\n" #: clusterdb.c:270 reindexdb.c:404 #, c-format @@ -216,14 +216,14 @@ msgstr "" #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" -" -h, --host=HOTE hôte du serveur de bases de données ou\n" -" répertoire des sockets\n" +" -h, --host=HOTE hôte du serveur de bases de données ou\n" +" répertoire des sockets\n" #: clusterdb.c:275 createlang.c:246 createuser.c:377 dropdb.c:165 #: droplang.c:247 dropuser.c:167 reindexdb.c:409 vacuumdb.c:959 #, c-format msgid " -p, --port=PORT database server port\n" -msgstr " -p, --port=PORT port du serveur de bases de données\n" +msgstr " -p, --port=PORT port du serveur de bases de données\n" #: clusterdb.c:276 createlang.c:247 dropdb.c:166 droplang.c:248 reindexdb.c:410 #: vacuumdb.c:960 @@ -235,7 +235,7 @@ msgstr " -U, --username=NOMUTILISATEUR nom d'utilisateur pour la connexion\n" #: droplang.c:249 dropuser.c:169 reindexdb.c:411 vacuumdb.c:961 #, c-format msgid " -w, --no-password never prompt for password\n" -msgstr " -w, --no-password empêche la demande d'un mot de passe\n" +msgstr " -w, --no-password empêche la demande d'un mot de passe\n" #: clusterdb.c:278 createlang.c:249 createuser.c:380 dropdb.c:168 #: droplang.c:250 dropuser.c:170 reindexdb.c:412 vacuumdb.c:962 @@ -246,7 +246,7 @@ msgstr " -W, --password force la demande d'un mot de passe\n" #: clusterdb.c:279 dropdb.c:169 reindexdb.c:413 vacuumdb.c:963 #, c-format msgid " --maintenance-db=DBNAME alternate maintenance database\n" -msgstr " --maintenance-db=NOM_BASE indique une autre base par défaut\n" +msgstr " --maintenance-db=NOM_BASE indique une autre base par défaut\n" #: clusterdb.c:280 #, c-format @@ -255,7 +255,7 @@ msgid "" "Read the description of the SQL command CLUSTER for details.\n" msgstr "" "\n" -"Lire la description de la commande SQL CLUSTER pour de plus amples détails.\n" +"Lire la description de la commande SQL CLUSTER pour de plus amples détails.\n" #: clusterdb.c:281 createdb.c:273 createlang.c:250 createuser.c:381 #: dropdb.c:170 droplang.c:251 dropuser.c:171 pg_isready.c:236 reindexdb.c:415 @@ -266,7 +266,7 @@ msgid "" "Report bugs to .\n" msgstr "" "\n" -"Rapporter les bogues à .\n" +"Rapporter les bogues à .\n" #: common.c:82 common.c:128 msgid "Password: " @@ -275,22 +275,22 @@ msgstr "Mot de passe : " #: common.c:113 #, c-format msgid "%s: could not connect to database %s: out of memory\n" -msgstr "%s : n'a pas pu se connecter à la base de données %s : plus de mémoire\n" +msgstr "%s : n'a pas pu se connecter à la base de données %s : plus de mémoire\n" #: common.c:141 #, c-format msgid "%s: could not connect to database %s: %s" -msgstr "%s : n'a pas pu se connecter à la base de données %s : %s" +msgstr "%s : n'a pas pu se connecter à la base de données %s : %s" #: common.c:190 common.c:218 #, c-format msgid "%s: query failed: %s" -msgstr "%s : échec de la requête : %s" +msgstr "%s : échec de la requête : %s" #: common.c:192 common.c:220 #, c-format msgid "%s: query was: %s\n" -msgstr "%s : la requête était : %s\n" +msgstr "%s : la requête était : %s\n" #. translator: abbreviation for "yes" #: common.c:261 @@ -312,42 +312,42 @@ msgstr "%s (%s/%s) " #: common.c:294 #, c-format msgid "Please answer \"%s\" or \"%s\".\n" -msgstr "Merci de répondre « %s » ou « %s ».\n" +msgstr "Merci de répondre « %s » ou « %s ».\n" #: common.c:373 common.c:410 #, c-format msgid "Cancel request sent\n" -msgstr "Requête d'annulation envoyée\n" +msgstr "Requête d'annulation envoyée\n" #: common.c:376 common.c:414 #, c-format msgid "Could not send cancel request: %s" -msgstr "N'a pas pu envoyer la requête d'annulation : %s" +msgstr "N'a pas pu envoyer la requête d'annulation : %s" #: createdb.c:146 #, c-format msgid "%s: only one of --locale and --lc-ctype can be specified\n" -msgstr "%s : une seule des options --locale et --lc-ctype peut être indiquée\n" +msgstr "%s : une seule des options --locale et --lc-ctype peut être indiquée\n" #: createdb.c:152 #, c-format msgid "%s: only one of --locale and --lc-collate can be specified\n" -msgstr "%s : une seule des options --locale et --lc-collate peut être indiquée\n" +msgstr "%s : une seule des options --locale et --lc-collate peut être indiquée\n" #: createdb.c:164 #, c-format msgid "%s: \"%s\" is not a valid encoding name\n" -msgstr "%s : « %s » n'est pas un nom d'encodage valide\n" +msgstr "%s : « %s » n'est pas un nom d'encodage valide\n" #: createdb.c:213 #, c-format msgid "%s: database creation failed: %s" -msgstr "%s : la création de la base de données a échoué : %s" +msgstr "%s : la création de la base de données a échoué : %s" #: createdb.c:233 #, c-format msgid "%s: comment creation failed (database was created): %s" -msgstr "%s: l'ajout du commentaire a échoué (la base de données a été créée) : %s" +msgstr "%s: l'ajout du commentaire a échoué (la base de données a été créée) : %s" #: createdb.c:251 #, c-format @@ -355,7 +355,7 @@ msgid "" "%s creates a PostgreSQL database.\n" "\n" msgstr "" -"%s crée une base de données PostgreSQL.\n" +"%s crée une base de données PostgreSQL.\n" "\n" #: createdb.c:253 @@ -366,46 +366,46 @@ msgstr " %s [OPTION]... [NOMBASE] [DESCRIPTION]\n" #: createdb.c:255 #, c-format msgid " -D, --tablespace=TABLESPACE default tablespace for the database\n" -msgstr " -D, --tablespace=TABLESPACE tablespace par défaut de la base de données\n" +msgstr " -D, --tablespace=TABLESPACE tablespace par défaut de la base de données\n" #: createdb.c:256 #, c-format msgid " -e, --echo show the commands being sent to the server\n" -msgstr " -e, --echo affiche les commandes envoyées au serveur\n" +msgstr " -e, --echo affiche les commandes envoyées au serveur\n" #: createdb.c:257 #, c-format msgid " -E, --encoding=ENCODING encoding for the database\n" -msgstr " -E, --encoding=ENC encodage de la base de données\n" +msgstr " -E, --encoding=ENC encodage de la base de données\n" #: createdb.c:258 #, c-format msgid " -l, --locale=LOCALE locale settings for the database\n" msgstr "" -" -l, --locale=LOCALE paramètre de la locale pour la base de\n" -" données\n" +" -l, --locale=LOCALE paramètre de la locale pour la base de\n" +" données\n" #: createdb.c:259 #, c-format msgid " --lc-collate=LOCALE LC_COLLATE setting for the database\n" -msgstr " --lc-collate=LOCALE paramètre LC_COLLATE pour la base de données\n" +msgstr " --lc-collate=LOCALE paramètre LC_COLLATE pour la base de données\n" #: createdb.c:260 #, c-format msgid " --lc-ctype=LOCALE LC_CTYPE setting for the database\n" -msgstr " --lc-ctype=LOCALE paramètre LC_CTYPE pour la base de données\n" +msgstr " --lc-ctype=LOCALE paramètre LC_CTYPE pour la base de données\n" #: createdb.c:261 #, c-format msgid " -O, --owner=OWNER database user to own the new database\n" msgstr "" -" -O, --owner=PROPRIÉTAIRE nom du propriétaire de la nouvelle base de\n" -" données\n" +" -O, --owner=PROPRIÉTAIRE nom du propriétaire de la nouvelle base de\n" +" données\n" #: createdb.c:262 #, c-format msgid " -T, --template=TEMPLATE template database to copy\n" -msgstr " -T, --template=MODÈLE base de données modèle à copier\n" +msgstr " -T, --template=MODÈLE base de données modèle à copier\n" #: createdb.c:263 #, c-format @@ -421,13 +421,13 @@ msgstr " -?, --help affiche cette aide puis quitte\n" #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" -" -h, --host=HOTE hôte du serveur de bases de données\n" -" ou répertoire des sockets\n" +" -h, --host=HOTE hôte du serveur de bases de données\n" +" ou répertoire des sockets\n" #: createdb.c:267 #, c-format msgid " -p, --port=PORT database server port\n" -msgstr " -p, --port=PORT port du serveur de bases de données\n" +msgstr " -p, --port=PORT port du serveur de bases de données\n" #: createdb.c:268 #, c-format @@ -437,7 +437,7 @@ msgstr " -U, --username=NOMUTILISATEUR nom d'utilisateur pour la connexion\n" #: createdb.c:269 #, c-format msgid " -w, --no-password never prompt for password\n" -msgstr " -w, --no-password empêche la demande d'un mot de passe\n" +msgstr " -w, --no-password empêche la demande d'un mot de passe\n" #: createdb.c:270 #, c-format @@ -447,7 +447,7 @@ msgstr " -W, --password force la demande d'un mot de passe\n" #: createdb.c:271 #, c-format msgid " --maintenance-db=DBNAME alternate maintenance database\n" -msgstr " --maintenance-db=NOM_BASE indique une autre base par défaut\n" +msgstr " --maintenance-db=NOM_BASE indique une autre base par défaut\n" #: createdb.c:272 #, c-format @@ -456,7 +456,7 @@ msgid "" "By default, a database with the same name as the current user is created.\n" msgstr "" "\n" -"Par défaut, la base de donnée créée porte le nom de l'utilisateur courant.\n" +"Par défaut, la base de donnée créée porte le nom de l'utilisateur courant.\n" #: createlang.c:149 droplang.c:148 msgid "Name" @@ -476,7 +476,7 @@ msgstr "De confiance (trusted) ?" #: createlang.c:160 droplang.c:159 msgid "Procedural Languages" -msgstr "Langages procéduraux" +msgstr "Langages procéduraux" #: createlang.c:173 droplang.c:172 #, c-format @@ -486,12 +486,12 @@ msgstr "%s : argument nom du langage requis mais manquant\n" #: createlang.c:197 #, c-format msgid "%s: language \"%s\" is already installed in database \"%s\"\n" -msgstr "%s : le langage « %s » est déjà installé sur la base de données « %s »\n" +msgstr "%s : le langage « %s » est déjà installé sur la base de données « %s »\n" #: createlang.c:219 #, c-format msgid "%s: language installation failed: %s" -msgstr "%s : l'installation du langage a échoué : %s" +msgstr "%s : l'installation du langage a échoué : %s" #: createlang.c:235 #, c-format @@ -499,7 +499,7 @@ msgid "" "%s installs a procedural language into a PostgreSQL database.\n" "\n" msgstr "" -"%s installe un langage de procédures dans une base de données PostgreSQL.\n" +"%s installe un langage de procédures dans une base de données PostgreSQL.\n" "\n" #: createlang.c:237 droplang.c:238 @@ -516,16 +516,16 @@ msgstr " -d, --dbname=NOMBASE base sur laquelle installer le langage\ #, c-format msgid " -l, --list show a list of currently installed languages\n" msgstr "" -" -l, --list affiche la liste des langages déjà\n" -" installés\n" +" -l, --list affiche la liste des langages déjà\n" +" installés\n" #: createuser.c:191 msgid "Enter name of role to add: " -msgstr "Saisir le nom du rôle à ajouter : " +msgstr "Saisir le nom du rôle à ajouter : " #: createuser.c:206 msgid "Enter password for new role: " -msgstr "Saisir le mot de passe pour le nouveau rôle : " +msgstr "Saisir le mot de passe pour le nouveau rôle : " #: createuser.c:207 msgid "Enter it again: " @@ -538,25 +538,25 @@ msgstr "Les mots de passe ne sont pas identiques.\n" #: createuser.c:219 msgid "Shall the new role be a superuser?" -msgstr "Le nouveau rôle est-il super-utilisateur ?" +msgstr "Le nouveau rôle est-il super-utilisateur ?" #: createuser.c:234 msgid "Shall the new role be allowed to create databases?" -msgstr "Le nouveau rôle est-il autorisé à créer des bases de données ?" +msgstr "Le nouveau rôle est-il autorisé à créer des bases de données ?" #: createuser.c:242 msgid "Shall the new role be allowed to create more new roles?" -msgstr "Le nouveau rôle est-il autorisé à créer de nouveaux rôles ?" +msgstr "Le nouveau rôle est-il autorisé à créer de nouveaux rôles ?" #: createuser.c:276 #, c-format msgid "Password encryption failed.\n" -msgstr "Échec du chiffrement du mot de passe.\n" +msgstr "Échec du chiffrement du mot de passe.\n" #: createuser.c:333 #, c-format msgid "%s: creation of new role failed: %s" -msgstr "%s : la création du nouvel rôle a échoué : %s" +msgstr "%s : la création du nouvel rôle a échoué : %s" #: createuser.c:348 #, c-format @@ -564,7 +564,7 @@ msgid "" "%s creates a new PostgreSQL role.\n" "\n" msgstr "" -"%s crée un nouvel rôle PostgreSQL.\n" +"%s crée un nouvel rôle PostgreSQL.\n" "\n" #: createuser.c:350 dropuser.c:157 @@ -576,32 +576,32 @@ msgstr " %s [OPTION]... [NOMROLE]\n" #, c-format msgid " -c, --connection-limit=N connection limit for role (default: no limit)\n" msgstr "" -" -c, --connection-limit=N nombre maximal de connexions pour le rôle\n" -" (par défaut sans limite)\n" +" -c, --connection-limit=N nombre maximal de connexions pour le rôle\n" +" (par défaut sans limite)\n" #: createuser.c:353 #, c-format msgid " -d, --createdb role can create new databases\n" msgstr "" -" -d, --createdb l'utilisateur peut créer des bases de\n" -" données\n" +" -d, --createdb l'utilisateur peut créer des bases de\n" +" données\n" #: createuser.c:354 #, c-format msgid " -D, --no-createdb role cannot create databases (default)\n" msgstr "" -" -D, --no-createdb le rôle ne peut pas créer de bases de\n" -" données (par défaut)\n" +" -D, --no-createdb le rôle ne peut pas créer de bases de\n" +" données (par défaut)\n" #: createuser.c:356 #, c-format msgid " -E, --encrypted encrypt stored password\n" -msgstr " -E, --encrypted chiffre le mot de passe stocké\n" +msgstr " -E, --encrypted chiffre le mot de passe stocké\n" #: createuser.c:357 #, c-format msgid " -g, --role=ROLE new role will be a member of this role\n" -msgstr " -g, --role=ROLE le nouveau rôle sera un membre de ce rôle\n" +msgstr " -g, --role=ROLE le nouveau rôle sera un membre de ce rôle\n" #: createuser.c:358 #, c-format @@ -609,53 +609,53 @@ msgid "" " -i, --inherit role inherits privileges of roles it is a\n" " member of (default)\n" msgstr "" -" -i, --inherit le rôle hérite des droits des rôles dont il\n" -" est membre (par défaut)\n" +" -i, --inherit le rôle hérite des droits des rôles dont il\n" +" est membre (par défaut)\n" #: createuser.c:360 #, c-format msgid " -I, --no-inherit role does not inherit privileges\n" -msgstr " -I, --no-inherit le rôle n'hérite pas des droits\n" +msgstr " -I, --no-inherit le rôle n'hérite pas des droits\n" #: createuser.c:361 #, c-format msgid " -l, --login role can login (default)\n" -msgstr " -l, --login le rôle peut se connecter (par défaut)\n" +msgstr " -l, --login le rôle peut se connecter (par défaut)\n" #: createuser.c:362 #, c-format msgid " -L, --no-login role cannot login\n" -msgstr " -L, --no-login le rôle ne peut pas se connecter\n" +msgstr " -L, --no-login le rôle ne peut pas se connecter\n" #: createuser.c:363 #, c-format msgid " -N, --unencrypted do not encrypt stored password\n" -msgstr " -N, --unencrypted ne chiffre pas le mot de passe stocké\n" +msgstr " -N, --unencrypted ne chiffre pas le mot de passe stocké\n" #: createuser.c:364 #, c-format msgid " -P, --pwprompt assign a password to new role\n" -msgstr " -P, --pwprompt affecte un mot de passe au nouveau rôle\n" +msgstr " -P, --pwprompt affecte un mot de passe au nouveau rôle\n" #: createuser.c:365 #, c-format msgid " -r, --createrole role can create new roles\n" -msgstr " -r, --createrole le rôle peut créer des rôles\n" +msgstr " -r, --createrole le rôle peut créer des rôles\n" #: createuser.c:366 #, c-format msgid " -R, --no-createrole role cannot create roles (default)\n" -msgstr " -R, --no-createrole le rôle ne peut pas créer de rôles (par défaut)\n" +msgstr " -R, --no-createrole le rôle ne peut pas créer de rôles (par défaut)\n" #: createuser.c:367 #, c-format msgid " -s, --superuser role will be superuser\n" -msgstr " -s, --superuser le rôle est super-utilisateur\n" +msgstr " -s, --superuser le rôle est super-utilisateur\n" #: createuser.c:368 #, c-format msgid " -S, --no-superuser role will not be superuser (default)\n" -msgstr " -S, --no-superuser le rôle ne sera pas super-utilisateur (par défaut)\n" +msgstr " -S, --no-superuser le rôle ne sera pas super-utilisateur (par défaut)\n" #: createuser.c:370 #, c-format @@ -663,48 +663,48 @@ msgid "" " --interactive prompt for missing role name and attributes rather\n" " than using defaults\n" msgstr "" -" --interactive demande le nom du rôle et les attributs\n" -" plutôt qu'utiliser des valeurs par défaut\n" +" --interactive demande le nom du rôle et les attributs\n" +" plutôt qu'utiliser des valeurs par défaut\n" #: createuser.c:372 #, c-format msgid " --replication role can initiate replication\n" msgstr "" -" --replication le rôle peut initier une connexion de\n" -" réplication\n" +" --replication le rôle peut initier une connexion de\n" +" réplication\n" #: createuser.c:373 #, c-format msgid " --no-replication role cannot initiate replication\n" msgstr "" -" --no-replication le rôle ne peut pas initier de connexion de\n" -" réplication\n" +" --no-replication le rôle ne peut pas initier de connexion de\n" +" réplication\n" #: createuser.c:378 #, c-format msgid " -U, --username=USERNAME user name to connect as (not the one to create)\n" msgstr "" " -U, --username=NOMUTILISATEUR nom de l'utilisateur pour la connexion (pas\n" -" celui à créer)\n" +" celui à créer)\n" #: dropdb.c:102 #, c-format msgid "%s: missing required argument database name\n" -msgstr "%s : argument nom de la base de données requis mais manquant\n" +msgstr "%s : argument nom de la base de données requis mais manquant\n" #: dropdb.c:117 #, c-format msgid "Database \"%s\" will be permanently removed.\n" -msgstr "La base de données « %s » sera définitivement supprimée.\n" +msgstr "La base de données « %s » sera définitivement supprimée.\n" #: dropdb.c:118 dropuser.c:123 msgid "Are you sure?" -msgstr "Êtes-vous sûr ?" +msgstr "Êtes-vous sûr ?" #: dropdb.c:139 #, c-format msgid "%s: database removal failed: %s" -msgstr "%s: la suppression de la base de données a échoué : %s" +msgstr "%s: la suppression de la base de données a échoué : %s" #: dropdb.c:154 #, c-format @@ -712,7 +712,7 @@ msgid "" "%s removes a PostgreSQL database.\n" "\n" msgstr "" -"%s supprime une base de données PostgreSQL.\n" +"%s supprime une base de données PostgreSQL.\n" "\n" #: dropdb.c:156 @@ -737,12 +737,12 @@ msgstr "" #: droplang.c:203 #, c-format msgid "%s: language \"%s\" is not installed in database \"%s\"\n" -msgstr "%s : le langage « %s » n'est pas installé dans la base de données « %s »\n" +msgstr "%s : le langage « %s » n'est pas installé dans la base de données « %s »\n" #: droplang.c:221 #, c-format msgid "%s: language removal failed: %s" -msgstr "%s : la suppression du langage a échoué : %s" +msgstr "%s : la suppression du langage a échoué : %s" #: droplang.c:236 #, c-format @@ -750,34 +750,34 @@ msgid "" "%s removes a procedural language from a database.\n" "\n" msgstr "" -"%s supprime un langage procédural d'une base de données.\n" +"%s supprime un langage procédural d'une base de données.\n" "\n" #: droplang.c:240 #, c-format msgid " -d, --dbname=DBNAME database from which to remove the language\n" msgstr "" -" -d, --dbname=NOMBASE base de données à partir de laquelle\n" +" -d, --dbname=NOMBASE base de données à partir de laquelle\n" " supprimer le langage\n" #: dropuser.c:111 msgid "Enter name of role to drop: " -msgstr "Saisir le nom du rôle à supprimer : " +msgstr "Saisir le nom du rôle à supprimer : " #: dropuser.c:114 #, c-format msgid "%s: missing required argument role name\n" -msgstr "%s : argument nom du rôle requis mais manquant\n" +msgstr "%s : argument nom du rôle requis mais manquant\n" #: dropuser.c:122 #, c-format msgid "Role \"%s\" will be permanently removed.\n" -msgstr "Le rôle « %s » sera définitivement supprimé.\n" +msgstr "Le rôle « %s » sera définitivement supprimé.\n" #: dropuser.c:140 #, c-format msgid "%s: removal of role \"%s\" failed: %s" -msgstr "%s : la suppression du rôle « %s » a échoué : %s" +msgstr "%s : la suppression du rôle « %s » a échoué : %s" #: dropuser.c:155 #, c-format @@ -785,7 +785,7 @@ msgid "" "%s removes a PostgreSQL role.\n" "\n" msgstr "" -"%s supprime un rôle PostgreSQL.\n" +"%s supprime un rôle PostgreSQL.\n" "\n" #: dropuser.c:160 @@ -795,8 +795,8 @@ msgid "" " role name if not specified\n" msgstr "" " -i, --interactive demande confirmation avant de supprimer quoi que\n" -" ce soit, et demande le nom du rôle s'il n'est pas\n" -" indiqué\n" +" ce soit, et demande le nom du rôle s'il n'est pas\n" +" indiqué\n" #: dropuser.c:163 #, c-format @@ -810,7 +810,7 @@ msgstr "" msgid " -U, --username=USERNAME user name to connect as (not the one to drop)\n" msgstr "" " -U, --username=NOMUTILISATEUR nom de l'utilisateur pour la connexion (pas\n" -" celui à supprimer)\n" +" celui à supprimer)\n" #: pg_isready.c:142 #, c-format @@ -820,7 +820,7 @@ msgstr "%s : %s" #: pg_isready.c:150 #, c-format msgid "%s: could not fetch default options\n" -msgstr "%s : n'a pas pu récupérer les options par défaut\n" +msgstr "%s : n'a pas pu récupérer les options par défaut\n" #: pg_isready.c:199 #, c-format @@ -835,7 +835,7 @@ msgstr "rejet des connexions\n" #: pg_isready.c:205 #, c-format msgid "no response\n" -msgstr "pas de réponse\n" +msgstr "pas de réponse\n" #: pg_isready.c:208 #, c-format @@ -853,7 +853,7 @@ msgid "" "%s issues a connection check to a PostgreSQL database.\n" "\n" msgstr "" -"%s produitun test de connexion à une base de données PostgreSQL.\n" +"%s produitun test de connexion à une base de données PostgreSQL.\n" "\n" #: pg_isready.c:223 @@ -864,12 +864,12 @@ msgstr " %s [OPTION]...\n" #: pg_isready.c:226 #, c-format msgid " -d, --dbname=DBNAME database name\n" -msgstr " -d, --dbname=NOMBASE base de données\n" +msgstr " -d, --dbname=NOMBASE base de données\n" #: pg_isready.c:227 #, c-format msgid " -q, --quiet run quietly\n" -msgstr " -q, --quiet s'exécute sans affichage\n" +msgstr " -q, --quiet s'exécute sans affichage\n" #: pg_isready.c:228 #, c-format @@ -885,20 +885,20 @@ msgstr " -?, --help affiche cette aide puis quitte\n" #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" -" -h, --host=NOMHÔTE hôte du serveur de bases de données ou\n" -" répertoire des sockets\n" +" -h, --host=NOMHÔTE hôte du serveur de bases de données ou\n" +" répertoire des sockets\n" #: pg_isready.c:233 #, c-format msgid " -p, --port=PORT database server port\n" -msgstr " -p, --port=PORT port du serveur de bases de données\n" +msgstr " -p, --port=PORT port du serveur de bases de données\n" #: pg_isready.c:234 #, c-format msgid " -t, --timeout=SECS seconds to wait when attempting connection, 0 disables (default: %s)\n" msgstr "" -" -t, --timeout=SECS durée en secondes à attendre lors d'une tentative de connexion\n" -" 0 pour désactiver (défaut: %s)\n" +" -t, --timeout=SECS durée en secondes à attendre lors d'une tentative de connexion\n" +" 0 pour désactiver (défaut: %s)\n" #: pg_isready.c:235 #, c-format @@ -909,89 +909,89 @@ msgstr " -U, --username=NOMUTILISATEUR nom d'utilisateur pour la connexion\n" #, c-format msgid "%s: cannot reindex all databases and a specific one at the same time\n" msgstr "" -"%s : ne peut pas réindexer toutes les bases de données et une base\n" -"spécifique en même temps\n" +"%s : ne peut pas réindexer toutes les bases de données et une base\n" +"spécifique en même temps\n" #: reindexdb.c:165 #, c-format msgid "%s: cannot reindex all databases and system catalogs at the same time\n" msgstr "" -"%s : ne peut pas réindexer toutes les bases de données et les catalogues\n" -"système en même temps\n" +"%s : ne peut pas réindexer toutes les bases de données et les catalogues\n" +"système en même temps\n" #: reindexdb.c:170 #, c-format msgid "%s: cannot reindex specific schema(s) in all databases\n" msgstr "" -"%s : ne peut pas réindexer un (des) schéma(s) spécifique(s) dans toutes\n" -"les bases de données\n" +"%s : ne peut pas réindexer un (des) schéma(s) spécifique(s) dans toutes\n" +"les bases de données\n" #: reindexdb.c:175 #, c-format msgid "%s: cannot reindex specific table(s) in all databases\n" msgstr "" -"%s : ne peut pas réindexer une (des) table(s) spécifique(s) dans toutes\n" -"les bases de données\n" +"%s : ne peut pas réindexer une (des) table(s) spécifique(s) dans toutes\n" +"les bases de données\n" #: reindexdb.c:180 #, c-format msgid "%s: cannot reindex specific index(es) in all databases\n" msgstr "" -"%s : ne peut pas réindexer un (des) index spécifique(s) dans toutes les\n" -"bases de données\n" +"%s : ne peut pas réindexer un (des) index spécifique(s) dans toutes les\n" +"bases de données\n" #: reindexdb.c:191 #, c-format msgid "%s: cannot reindex specific schema(s) and system catalogs at the same time\n" -msgstr "%s : ne peut pas réindexer une (des) schéma(s) spécifique(s) et les catalogues système en même temps\n" +msgstr "%s : ne peut pas réindexer une (des) schéma(s) spécifique(s) et les catalogues système en même temps\n" #: reindexdb.c:196 #, c-format msgid "%s: cannot reindex specific table(s) and system catalogs at the same time\n" -msgstr "%s : ne peut pas réindexer une (des) table(s) spécifique(s) etles catalogues système en même temps\n" +msgstr "%s : ne peut pas réindexer une (des) table(s) spécifique(s) etles catalogues système en même temps\n" #: reindexdb.c:201 #, c-format msgid "%s: cannot reindex specific index(es) and system catalogs at the same time\n" msgstr "" -"%s : ne peut pas réindexer un (des) index spécifique(s) et\n" -"les catalogues système en même temps\n" +"%s : ne peut pas réindexer un (des) index spécifique(s) et\n" +"les catalogues système en même temps\n" #: reindexdb.c:307 #, c-format msgid "%s: reindexing of table \"%s\" in database \"%s\" failed: %s" msgstr "" -"%s : la réindexation de la table « %s » dans la base de données « %s » a\n" -"échoué : %s" +"%s : la réindexation de la table « %s » dans la base de données « %s » a\n" +"échoué : %s" #: reindexdb.c:310 #, c-format msgid "%s: reindexing of index \"%s\" in database \"%s\" failed: %s" msgstr "" -"%s : la réindexation de l'index « %s » dans la base de données « %s » a\n" -"échoué : %s" +"%s : la réindexation de l'index « %s » dans la base de données « %s » a\n" +"échoué : %s" #: reindexdb.c:313 #, c-format msgid "%s: reindexing of schema \"%s\" in database \"%s\" failed: %s" msgstr "" -"%s : la réindexation du schéma « %s » dans la base de données « %s » a\n" -"échoué : %s" +"%s : la réindexation du schéma « %s » dans la base de données « %s » a\n" +"échoué : %s" #: reindexdb.c:316 #, c-format msgid "%s: reindexing of database \"%s\" failed: %s" -msgstr "%s : la réindexation de la base de données « %s » a échoué : %s" +msgstr "%s : la réindexation de la base de données « %s » a échoué : %s" #: reindexdb.c:347 #, c-format msgid "%s: reindexing database \"%s\"\n" -msgstr "%s : réindexation de la base de données « %s »\n" +msgstr "%s : réindexation de la base de données « %s »\n" #: reindexdb.c:380 #, c-format msgid "%s: reindexing of system catalogs failed: %s" -msgstr "%s : la réindexation des catalogues système a échoué : %s" +msgstr "%s : la réindexation des catalogues système a échoué : %s" #: reindexdb.c:392 #, c-format @@ -999,38 +999,38 @@ msgid "" "%s reindexes a PostgreSQL database.\n" "\n" msgstr "" -"%s réindexe une base de données PostgreSQL.\n" +"%s réindexe une base de données PostgreSQL.\n" "\n" #: reindexdb.c:396 #, c-format msgid " -a, --all reindex all databases\n" -msgstr " -a, --all réindexe toutes les bases de données\n" +msgstr " -a, --all réindexe toutes les bases de données\n" #: reindexdb.c:397 #, c-format msgid " -d, --dbname=DBNAME database to reindex\n" -msgstr " -d, --dbname=NOMBASE base de données à réindexer\n" +msgstr " -d, --dbname=NOMBASE base de données à réindexer\n" #: reindexdb.c:399 #, c-format msgid " -i, --index=INDEX recreate specific index(es) only\n" -msgstr " -i, --index=INDEX recrée uniquement cet (ces) index\n" +msgstr " -i, --index=INDEX recrée uniquement cet (ces) index\n" #: reindexdb.c:401 #, c-format msgid " -s, --system reindex system catalogs\n" -msgstr " -s, --system réindexe les catalogues système\n" +msgstr " -s, --system réindexe les catalogues système\n" #: reindexdb.c:402 #, c-format msgid " -S, --schema=SCHEMA reindex specific schema(s) only\n" -msgstr " -S, --schema=SCHEMA réindexe seulement le(s) schéma(s) indiqué(s)\n" +msgstr " -S, --schema=SCHEMA réindexe seulement le(s) schéma(s) indiqué(s)\n" #: reindexdb.c:403 #, c-format msgid " -t, --table=TABLE reindex specific table(s) only\n" -msgstr " -t, --table=TABLE réindexe uniquement cette (ces) table(s)\n" +msgstr " -t, --table=TABLE réindexe uniquement cette (ces) table(s)\n" #: reindexdb.c:414 #, c-format @@ -1044,65 +1044,65 @@ msgstr "" #: vacuumdb.c:191 #, c-format msgid "%s: number of parallel jobs must be at least 1\n" -msgstr "%s : le nombre maximum de jobs en parallèle doit être au moins de 1\n" +msgstr "%s : le nombre maximum de jobs en parallèle doit être au moins de 1\n" #: vacuumdb.c:197 #, c-format msgid "%s: too many parallel jobs requested (maximum: %d)\n" -msgstr "%s : trop de jobs en parallèle demandés (maximum %d)\n" +msgstr "%s : trop de jobs en parallèle demandés (maximum %d)\n" #: vacuumdb.c:236 vacuumdb.c:242 #, c-format msgid "%s: cannot use the \"%s\" option when performing only analyze\n" -msgstr "%s : ne peut utiliser l'option « %s » lors de l'exécution d'un ANALYZE seul\n" +msgstr "%s : ne peut utiliser l'option « %s » lors de l'exécution d'un ANALYZE seul\n" #: vacuumdb.c:259 #, c-format msgid "%s: cannot vacuum all databases and a specific one at the same time\n" msgstr "" -"%s : ne peut pas exécuter VACUUM sur toutes les bases de données et sur une\n" -"base spécifique en même temps\n" +"%s : ne peut pas exécuter VACUUM sur toutes les bases de données et sur une\n" +"base spécifique en même temps\n" #: vacuumdb.c:265 #, c-format msgid "%s: cannot vacuum specific table(s) in all databases\n" msgstr "" -"%s : ne peut pas exécuter VACUUM sur une(des) table(s) spécifique(s)\n" -"dans toutes les bases de données\n" +"%s : ne peut pas exécuter VACUUM sur une(des) table(s) spécifique(s)\n" +"dans toutes les bases de données\n" #: vacuumdb.c:351 msgid "Generating minimal optimizer statistics (1 target)" -msgstr "Génération de statistiques minimales pour l'optimiseur (une cible)" +msgstr "Génération de statistiques minimales pour l'optimiseur (une cible)" #: vacuumdb.c:352 msgid "Generating medium optimizer statistics (10 targets)" -msgstr "Génération de statistiques moyennes pour l'optimiseur (dix cibles)" +msgstr "Génération de statistiques moyennes pour l'optimiseur (dix cibles)" #: vacuumdb.c:353 msgid "Generating default (full) optimizer statistics" -msgstr "Génération de statistiques complètes pour l'optimiseur" +msgstr "Génération de statistiques complètes pour l'optimiseur" #: vacuumdb.c:362 #, c-format msgid "%s: processing database \"%s\": %s\n" -msgstr "%s : traitement de la base de données « %s » %s\n" +msgstr "%s : traitement de la base de données « %s » %s\n" #: vacuumdb.c:365 #, c-format msgid "%s: vacuuming database \"%s\"\n" -msgstr "%s : exécution de VACUUM sur la base de données « %s »\n" +msgstr "%s : exécution de VACUUM sur la base de données « %s »\n" #: vacuumdb.c:695 #, c-format msgid "%s: vacuuming of table \"%s\" in database \"%s\" failed: %s" msgstr "" -"%s : l'exécution de VACUUM sur la table « %s » dans la base de données\n" -"« %s » a échoué : %s" +"%s : l'exécution de VACUUM sur la table « %s » dans la base de données\n" +"« %s » a échoué : %s" #: vacuumdb.c:698 vacuumdb.c:815 #, c-format msgid "%s: vacuuming of database \"%s\" failed: %s" -msgstr "%s : l'exécution de VACUUM sur la base de données « %s » a échoué : %s" +msgstr "%s : l'exécution de VACUUM sur la base de données « %s » a échoué : %s" #: vacuumdb.c:929 #, c-format @@ -1115,36 +1115,36 @@ msgid "" "%s cleans and analyzes a PostgreSQL database.\n" "\n" msgstr "" -"%s nettoie et analyse une base de données PostgreSQL.\n" +"%s nettoie et analyse une base de données PostgreSQL.\n" "\n" #: vacuumdb.c:942 #, c-format msgid " -a, --all vacuum all databases\n" msgstr "" -" -a, --all exécute VACUUM sur toutes les bases de\n" -" données\n" +" -a, --all exécute VACUUM sur toutes les bases de\n" +" données\n" #: vacuumdb.c:943 #, c-format msgid " -d, --dbname=DBNAME database to vacuum\n" -msgstr " -d, --dbname=NOMBASE exécute VACUUM sur cette base de données\n" +msgstr " -d, --dbname=NOMBASE exécute VACUUM sur cette base de données\n" #: vacuumdb.c:944 #, c-format msgid " -e, --echo show the commands being sent to the server\n" -msgstr " -e, --echo affiche les commandes envoyées au serveur\n" +msgstr " -e, --echo affiche les commandes envoyées au serveur\n" #: vacuumdb.c:945 #, c-format msgid " -f, --full do full vacuuming\n" -msgstr " -f, --full exécute VACUUM en mode FULL\n" +msgstr " -f, --full exécute VACUUM en mode FULL\n" #: vacuumdb.c:946 #, c-format msgid " -F, --freeze freeze row transaction information\n" msgstr "" -" -F, --freeze gèle les informations de transactions des\n" +" -F, --freeze gèle les informations de transactions des\n" " lignes\n" #: vacuumdb.c:947 @@ -1157,12 +1157,12 @@ msgstr "" #: vacuumdb.c:948 #, c-format msgid " -q, --quiet don't write any messages\n" -msgstr " -q, --quiet n'écrit aucun message\n" +msgstr " -q, --quiet n'écrit aucun message\n" #: vacuumdb.c:949 #, c-format msgid " -t, --table='TABLE[(COLUMNS)]' vacuum specific table(s) only\n" -msgstr " -t, --table='TABLE[(COLONNES)]' exécute VACUUM sur cette (ces) tables\n" +msgstr " -t, --table='TABLE[(COLONNES)]' exécute VACUUM sur cette (ces) tables\n" #: vacuumdb.c:950 #, c-format @@ -1177,13 +1177,13 @@ msgstr " -V, --version affiche la version puis quitte\n" #: vacuumdb.c:952 #, c-format msgid " -z, --analyze update optimizer statistics\n" -msgstr " -z, --analyze met à jour les statistiques de l'optimiseur\n" +msgstr " -z, --analyze met à jour les statistiques de l'optimiseur\n" #: vacuumdb.c:953 #, c-format msgid " -Z, --analyze-only only update optimizer statistics; no vacuum\n" msgstr "" -" -Z, --analyze-only met seulement à jour les statistiques de\n" +" -Z, --analyze-only met seulement à jour les statistiques de\n" " l'optimiseur ; pas de VACUUM\n" #: vacuumdb.c:954 @@ -1192,9 +1192,9 @@ msgid "" " --analyze-in-stages only update optimizer statistics, in multiple\n" " stages for faster results; no vacuum\n" msgstr "" -" --analyze-in-stages met seulement à jour les statistiques de\n" -" l'optimiseur, en plusieurs étapes pour de\n" -" meilleurs résultats ; pas de VACUUM\n" +" --analyze-in-stages met seulement à jour les statistiques de\n" +" l'optimiseur, en plusieurs étapes pour de\n" +" meilleurs résultats ; pas de VACUUM\n" #: vacuumdb.c:956 #, c-format @@ -1212,11 +1212,11 @@ msgstr "" #~ msgid "%s: cannot use the \"freeze\" option when performing only analyze\n" #~ msgstr "" -#~ "%s : ne peut utiliser l'option « freeze » lors de l'exécution d'un ANALYZE\n" +#~ "%s : ne peut utiliser l'option « freeze » lors de l'exécution d'un ANALYZE\n" #~ "seul\n" #~ msgid "%s: out of memory\n" -#~ msgstr "%s : mémoire épuisée\n" +#~ msgstr "%s : mémoire épuisée\n" #~ msgid "pg_strdup: cannot duplicate null pointer (internal error)\n" #~ msgstr "pg_strdup : ne peut pas dupliquer un pointeur nul (erreur interne)\n" @@ -1239,13 +1239,13 @@ msgstr "" #~ "be prompted interactively.\n" #~ msgstr "" #~ "\n" -#~ "Si une des options -d, -D, -r, -R, -s, -S et NOMROLE n'est pas précisée,\n" -#~ "elle sera demandée interactivement.\n" +#~ "Si une des options -d, -D, -r, -R, -s, -S et NOMROLE n'est pas précisée,\n" +#~ "elle sera demandée interactivement.\n" #~ msgid "%s: still %s functions declared in language \"%s\"; language not removed\n" #~ msgstr "" -#~ "%s : il existe encore %s fonctions déclarées dans le langage « %s » ;\n" -#~ "langage non supprimé\n" +#~ "%s : il existe encore %s fonctions déclarées dans le langage « %s » ;\n" +#~ "langage non supprimé\n" #~ msgid " --help show this help, then exit\n" #~ msgstr " --help affiche cette aide et quitte\n" @@ -1254,7 +1254,7 @@ msgstr "" #~ msgstr " --version affiche la version et quitte\n" #~ msgid "%s: could not get current user name: %s\n" -#~ msgstr "%s : n'a pas pu récupérer le nom de l'utilisateur actuel : %s\n" +#~ msgstr "%s : n'a pas pu récupérer le nom de l'utilisateur actuel : %s\n" #~ msgid "%s: could not obtain information about current user: %s\n" #~ msgstr "%s : n'a pas pu obtenir les informations concernant l'utilisateur actuel : %s\n" diff --git a/src/bin/scripts/po/ja.po b/src/bin/scripts/po/ja.po index 6b977647a5..d673020e5a 100644 --- a/src/bin/scripts/po/ja.po +++ b/src/bin/scripts/po/ja.po @@ -3,94 +3,134 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0 beta 3\n" +"Project-Id-Version: PostgreSQL 9.6.3\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2013-08-18 12:35+0900\n" +"POT-Creation-Date: 2017-04-04 09:37+0900\n" "PO-Revision-Date: 2013-08-18 17:27+0900\n" -"Last-Translator: HOTTA Michihide \n" +"Last-Translator: Daisuke Higuchi \n" "Language-Team: jpug-doc \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" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" -#: ../../common/fe_memutils.c:33 ../../common/fe_memutils.c:60 -#: ../../common/fe_memutils.c:83 +#: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 +#: ../../common/fe_memutils.c:98 #, c-format msgid "out of memory\n" msgstr "メモリä¸è¶³ã§ã™\n" -#: ../../common/fe_memutils.c:77 +#: ../../common/fe_memutils.c:92 #, c-format msgid "cannot duplicate null pointer (internal error)\n" msgstr "null ãƒã‚¤ãƒ³ã‚¿ã‚’複製ã§ãã¾ã›ã‚“(内部エラー)。\n" -#: clusterdb.c:110 clusterdb.c:129 createdb.c:119 createdb.c:138 -#: createlang.c:89 createlang.c:119 createlang.c:172 createuser.c:163 -#: createuser.c:178 dropdb.c:94 dropdb.c:103 dropdb.c:111 droplang.c:88 -#: droplang.c:118 droplang.c:172 dropuser.c:89 dropuser.c:104 dropuser.c:115 -#: pg_isready.c:92 pg_isready.c:106 reindexdb.c:120 reindexdb.c:139 -#: vacuumdb.c:134 vacuumdb.c:154 +#: ../../common/username.c:45 +#, c-format +msgid "could not look up effective user ID %ld: %s" +msgstr "実行ユーザID %ld ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ: %s" + +#: ../../common/username.c:47 +msgid "user does not exist" +msgstr "ユーザãŒå­˜åœ¨ã—ã¾ã›ã‚“" + +#: ../../common/username.c:62 +#, c-format +msgid "user name lookup failure: error code %lu" +msgstr "ユーザåã®æ¤œç´¢ã«å¤±æ•—: エラーコード %lu" + +#: ../../fe_utils/print.c:354 +#, c-format +msgid "(%lu row)" +msgid_plural "(%lu rows)" +msgstr[0] "(%lu 行)" +msgstr[1] "(%lu 行)" + +#: ../../fe_utils/print.c:2914 +#, c-format +msgid "Interrupted\n" +msgstr "中断ã•れã¾ã—ãŸ\n" + +#: ../../fe_utils/print.c:2978 +#, c-format +msgid "Cannot add header to table content: column count of %d exceeded.\n" +msgstr "テーブルã®å†…容ã«è¦‹å‡ºã—を追加ã§ãã¾ã›ã‚“ã§ã—ãŸï¼šåˆ—æ•° %d ãŒåˆ¶é™ã‚’è¶Šãˆã¦ã„ã¾ã™ã€‚\n" + +#: ../../fe_utils/print.c:3018 +#, c-format +msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" +msgstr "テーブルã®å†…容ã«ã‚»ãƒ«ã‚’追加ã§ãã¾ã›ã‚“ã§ã—ãŸï¼šå…¨ã‚»ãƒ«æ•° %d ãŒåˆ¶é™ã‚’è¶Šãˆã¦ã„ã¾ã™ã€‚\n" + +#: ../../fe_utils/print.c:3267 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "出力フォーマットãŒç„¡åŠ¹ï¼ˆå†…éƒ¨ã‚¨ãƒ©ãƒ¼ï¼‰ï¼š%d" + +#: clusterdb.c:111 clusterdb.c:130 createdb.c:119 createdb.c:138 +#: createlang.c:89 createlang.c:119 createlang.c:174 createuser.c:169 +#: createuser.c:184 dropdb.c:94 dropdb.c:103 dropdb.c:111 droplang.c:88 +#: droplang.c:118 droplang.c:174 dropuser.c:89 dropuser.c:104 dropuser.c:115 +#: pg_isready.c:93 pg_isready.c:107 reindexdb.c:131 reindexdb.c:150 +#: vacuumdb.c:211 vacuumdb.c:230 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "詳細ã¯\"%s --help\"を実行ã—ã¦ãã ã•ã„。\n" -#: clusterdb.c:127 createdb.c:136 createlang.c:117 createuser.c:176 -#: dropdb.c:109 droplang.c:116 dropuser.c:102 pg_isready.c:104 reindexdb.c:137 -#: vacuumdb.c:152 +#: clusterdb.c:128 createdb.c:136 createlang.c:117 createuser.c:182 +#: dropdb.c:109 droplang.c:116 dropuser.c:102 pg_isready.c:105 reindexdb.c:148 +#: vacuumdb.c:228 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: コマンドライン引数ãŒå¤šã™ãŽã¾ã™ã€‚(å§‹ã‚ã¯\"%s\")\n" -#: clusterdb.c:139 +#: clusterdb.c:140 #, c-format msgid "%s: cannot cluster all databases and a specific one at the same time\n" msgstr "%s: 全データベースã¨ç‰¹å®šã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’åŒæ™‚ã«ã‚¯ãƒ©ã‚¹ã‚¿åŒ–ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“\n" -#: clusterdb.c:146 +#: clusterdb.c:147 #, c-format -#| msgid "%s: cannot cluster a specific table in all databases\n" msgid "%s: cannot cluster specific table(s) in all databases\n" msgstr "%s: ã™ã¹ã¦ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã§ã¯ç‰¹å®šã®ãƒ†ãƒ¼ãƒ–ルをクラスタ化ã§ãã¾ã›ã‚“\n" -#: clusterdb.c:211 +#: clusterdb.c:212 #, c-format msgid "%s: clustering of table \"%s\" in database \"%s\" failed: %s" msgstr "%1$s: データベース\"%3$s\"ã§ãƒ†ãƒ¼ãƒ–ル\"%2$s\"ã®ã‚¯ãƒ©ã‚¹ã‚¿åŒ–ã«å¤±æ•—ã—ã¾ã—ãŸ: %4$s" -#: clusterdb.c:214 +#: clusterdb.c:215 #, c-format msgid "%s: clustering of database \"%s\" failed: %s" msgstr "%s: データベース\"%s\"ã®ã‚¯ãƒ©ã‚¹ã‚¿åŒ–ã«å¤±æ•—ã—ã¾ã—ãŸ: %s" -#: clusterdb.c:245 +#: clusterdb.c:248 #, c-format msgid "%s: clustering database \"%s\"\n" msgstr "%s: データベース\"%s\"をクラスタ化ã—ã¦ã„ã¾ã™\n" -#: clusterdb.c:261 +#: clusterdb.c:269 #, c-format msgid "" "%s clusters all previously clustered tables in a database.\n" "\n" msgstr "%sã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã§äº‹å‰ã«ã‚¯ãƒ©ã‚¹ã‚¿åŒ–ã•れã¦ã„ã‚‹ã™ã¹ã¦ã®ãƒ†ãƒ¼ãƒ–ルをクラスタ化ã—ã¾ã™\n" -#: clusterdb.c:262 createdb.c:252 createlang.c:234 createuser.c:329 -#: dropdb.c:155 droplang.c:235 dropuser.c:156 pg_isready.c:210 reindexdb.c:342 -#: vacuumdb.c:358 +#: clusterdb.c:270 createdb.c:252 createlang.c:236 createuser.c:349 +#: dropdb.c:155 droplang.c:237 dropuser.c:156 pg_isready.c:222 reindexdb.c:401 +#: vacuumdb.c:946 #, c-format msgid "Usage:\n" msgstr "使用方法:\n" -#: clusterdb.c:263 reindexdb.c:343 vacuumdb.c:359 +#: clusterdb.c:271 reindexdb.c:402 vacuumdb.c:947 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [オプション]... [データベースå]\n" -#: clusterdb.c:264 createdb.c:254 createlang.c:236 createuser.c:331 -#: dropdb.c:157 droplang.c:237 dropuser.c:158 pg_isready.c:213 reindexdb.c:344 -#: vacuumdb.c:360 +#: clusterdb.c:272 createdb.c:254 createlang.c:238 createuser.c:351 +#: dropdb.c:157 droplang.c:239 dropuser.c:158 pg_isready.c:225 reindexdb.c:403 +#: vacuumdb.c:948 #, c-format msgid "" "\n" @@ -99,53 +139,52 @@ msgstr "" "\n" "オプション:\n" -#: clusterdb.c:265 +#: clusterdb.c:273 #, c-format msgid " -a, --all cluster all databases\n" msgstr " -a, --all ã™ã¹ã¦ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’クラスタ化ã™ã‚‹\n" -#: clusterdb.c:266 +#: clusterdb.c:274 #, c-format msgid " -d, --dbname=DBNAME database to cluster\n" msgstr " -d, --dbname=データベースå クラスタ化ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹\n" -#: clusterdb.c:267 createlang.c:238 createuser.c:335 dropdb.c:158 -#: droplang.c:239 dropuser.c:159 reindexdb.c:347 +#: clusterdb.c:275 createlang.c:240 createuser.c:355 dropdb.c:158 +#: droplang.c:241 dropuser.c:159 reindexdb.c:406 #, c-format msgid " -e, --echo show the commands being sent to the server\n" msgstr " -e, --echo サーãƒã¸é€ä¿¡ã•れã¦ã„るコマンドを表示\n" -#: clusterdb.c:268 reindexdb.c:349 +#: clusterdb.c:276 reindexdb.c:408 #, c-format msgid " -q, --quiet don't write any messages\n" msgstr " -q, --quiet メッセージを何も出力ã—ãªã„\n" -#: clusterdb.c:269 +#: clusterdb.c:277 #, c-format -#| msgid " -t, --table=TABLE cluster specific table only\n" msgid " -t, --table=TABLE cluster specific table(s) only\n" msgstr " -t, --table=ãƒ†ãƒ¼ãƒ–ãƒ«å æŒ‡å®šã—ãŸãƒ†ãƒ¼ãƒ–ル(複数å¯)ã®ã¿ã‚’クラスタ化ã™ã‚‹\n" -#: clusterdb.c:270 +#: clusterdb.c:278 reindexdb.c:412 #, c-format msgid " -v, --verbose write a lot of output\n" msgstr " -v, --verbose (多ãã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’出力ã™ã‚‹ï¼‰å†—長モード\n" -#: clusterdb.c:271 createlang.c:240 createuser.c:348 dropdb.c:160 -#: droplang.c:241 dropuser.c:162 reindexdb.c:352 +#: clusterdb.c:279 createlang.c:242 createuser.c:369 dropdb.c:160 +#: droplang.c:243 dropuser.c:162 reindexdb.c:413 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã€çµ‚了ã—ã¾ã™\n" -#: clusterdb.c:272 createlang.c:241 createuser.c:353 dropdb.c:162 -#: droplang.c:242 dropuser.c:164 reindexdb.c:353 +#: clusterdb.c:280 createlang.c:243 createuser.c:374 dropdb.c:162 +#: droplang.c:244 dropuser.c:164 reindexdb.c:414 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help ã“ã®ãƒ˜ãƒ«ãƒ—を表示ã—ã€çµ‚了ã—ã¾ã™\n" -#: clusterdb.c:273 createdb.c:265 createlang.c:242 createuser.c:354 -#: dropdb.c:163 droplang.c:243 dropuser.c:165 pg_isready.c:219 reindexdb.c:354 -#: vacuumdb.c:373 +#: clusterdb.c:281 createdb.c:265 createlang.c:244 createuser.c:375 +#: dropdb.c:163 droplang.c:245 dropuser.c:165 pg_isready.c:231 reindexdb.c:415 +#: vacuumdb.c:964 #, c-format msgid "" "\n" @@ -154,42 +193,42 @@ msgstr "" "\n" "接続オプション:\n" -#: clusterdb.c:274 createlang.c:243 createuser.c:355 dropdb.c:164 -#: droplang.c:244 dropuser.c:166 reindexdb.c:355 vacuumdb.c:374 +#: clusterdb.c:282 createlang.c:245 createuser.c:376 dropdb.c:164 +#: droplang.c:246 dropuser.c:166 reindexdb.c:416 vacuumdb.c:965 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=ホストå データベースサーãƒã®ãƒ›ã‚¹ãƒˆã¾ãŸã¯ã‚½ã‚±ãƒƒãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª\n" -#: clusterdb.c:275 createlang.c:244 createuser.c:356 dropdb.c:165 -#: droplang.c:245 dropuser.c:167 reindexdb.c:356 vacuumdb.c:375 +#: clusterdb.c:283 createlang.c:246 createuser.c:377 dropdb.c:165 +#: droplang.c:247 dropuser.c:167 reindexdb.c:417 vacuumdb.c:966 #, c-format msgid " -p, --port=PORT database server port\n" msgstr " -p, --port=ãƒãƒ¼ãƒˆç•ªå· データベースサーãƒã®ãƒãƒ¼ãƒˆç•ªå·\n" -#: clusterdb.c:276 createlang.c:245 dropdb.c:166 droplang.c:246 -#: reindexdb.c:357 vacuumdb.c:376 +#: clusterdb.c:284 createlang.c:247 dropdb.c:166 droplang.c:248 +#: reindexdb.c:418 vacuumdb.c:967 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=ユーザå ã“ã®ãƒ¦ãƒ¼ã‚¶åã§æŽ¥ç¶šã™ã‚‹\n" -#: clusterdb.c:277 createlang.c:246 createuser.c:358 dropdb.c:167 -#: droplang.c:247 dropuser.c:169 reindexdb.c:358 vacuumdb.c:377 +#: clusterdb.c:285 createlang.c:248 createuser.c:379 dropdb.c:167 +#: droplang.c:249 dropuser.c:169 reindexdb.c:419 vacuumdb.c:968 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰å…¥åŠ›ã‚’è¦æ±‚ã—ãªã„\n" -#: clusterdb.c:278 createlang.c:247 createuser.c:359 dropdb.c:168 -#: droplang.c:248 dropuser.c:170 reindexdb.c:359 vacuumdb.c:378 +#: clusterdb.c:286 createlang.c:249 createuser.c:380 dropdb.c:168 +#: droplang.c:250 dropuser.c:170 reindexdb.c:420 vacuumdb.c:969 #, c-format msgid " -W, --password force password prompt\n" msgstr " -W, --password パスワードプロンプトを強制表示ã™ã‚‹\n" -#: clusterdb.c:279 dropdb.c:169 reindexdb.c:360 vacuumdb.c:379 +#: clusterdb.c:287 dropdb.c:169 reindexdb.c:421 vacuumdb.c:970 #, c-format msgid " --maintenance-db=DBNAME alternate maintenance database\n" msgstr " --maintenance-db=DBNAME 別ã®ä¿å®ˆç”¨ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’指定ã™ã‚‹\n" -#: clusterdb.c:280 +#: clusterdb.c:288 #, c-format msgid "" "\n" @@ -198,9 +237,9 @@ msgstr "" "\n" "詳細㯠SQL コマンド㮠CLUSTER ã®èª¬æ˜Žã‚’å‚ç…§ã—ã¦ãã ã•ã„。\n" -#: clusterdb.c:281 createdb.c:273 createlang.c:248 createuser.c:360 -#: dropdb.c:170 droplang.c:249 dropuser.c:171 pg_isready.c:224 reindexdb.c:362 -#: vacuumdb.c:381 +#: clusterdb.c:289 createdb.c:273 createlang.c:250 createuser.c:381 +#: dropdb.c:170 droplang.c:251 dropuser.c:171 pg_isready.c:236 reindexdb.c:423 +#: vacuumdb.c:972 #, c-format msgid "" "\n" @@ -209,68 +248,58 @@ msgstr "" "\n" "ä¸å…·åˆã¯ã¾ã§å ±å‘Šã—ã¦ãã ã•ã„。\n" -#: common.c:44 -#, c-format -msgid "%s: could not obtain information about current user: %s\n" -msgstr "%s: ç¾åœ¨ã®ãƒ¦ãƒ¼ã‚¶ã«é–¢ã™ã‚‹æƒ…報をå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" - -#: common.c:55 -#, c-format -msgid "%s: could not get current user name: %s\n" -msgstr "%s: ç¾åœ¨ã®ãƒ¦ãƒ¼ã‚¶åã‚’å–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" - -#: common.c:102 common.c:148 +#: common.c:82 common.c:128 msgid "Password: " msgstr "パスワード: " -#: common.c:137 +#: common.c:113 #, c-format -msgid "%s: could not connect to database %s\n" -msgstr "%s: データベース %s ã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸ\n" +msgid "%s: could not connect to database %s: out of memory\n" +msgstr "%s: データベース %s ã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸ: メモリä¸è¶³ã§ã™\n" -#: common.c:164 +#: common.c:141 #, c-format msgid "%s: could not connect to database %s: %s" msgstr "%s: データベース %s ã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" -#: common.c:213 common.c:241 +#: common.c:190 common.c:218 #, c-format msgid "%s: query failed: %s" msgstr "%s: å•ã„åˆã‚ã›ãŒå¤±æ•—ã—ã¾ã—ãŸ: %s" -#: common.c:215 common.c:243 +#: common.c:192 common.c:220 #, c-format msgid "%s: query was: %s\n" msgstr "%s: å•ã„åˆã‚ã›: %s\n" #. translator: abbreviation for "yes" -#: common.c:284 +#: common.c:261 msgid "y" msgstr "y" #. translator: abbreviation for "no" -#: common.c:286 +#: common.c:263 msgid "n" msgstr "n" #. translator: This is a question followed by the translated options for #. "yes" and "no". -#: common.c:296 +#: common.c:273 #, c-format msgid "%s (%s/%s) " msgstr "%s (%s/%s)" -#: common.c:317 +#: common.c:294 #, c-format msgid "Please answer \"%s\" or \"%s\".\n" msgstr " \"%s\" ã¾ãŸã¯ \"%s\" ã«ç­”ãˆã¦ãã ã•ã„\n" -#: common.c:395 common.c:428 +#: common.c:373 common.c:410 #, c-format msgid "Cancel request sent\n" msgstr "ã‚­ãƒ£ãƒ³ã‚»ãƒ«è¦æ±‚ã‚’é€ä¿¡ã—ã¾ã—ãŸ\n" -#: common.c:397 common.c:430 +#: common.c:376 common.c:414 #, c-format msgid "Could not send cancel request: %s" msgstr "ã‚­ãƒ£ãƒ³ã‚»ãƒ«è¦æ±‚ã‚’é€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" @@ -423,22 +452,22 @@ msgstr "Trusted?" msgid "Procedural Languages" msgstr "手続ã言語" -#: createlang.c:171 droplang.c:170 +#: createlang.c:173 droplang.c:172 #, c-format msgid "%s: missing required argument language name\n" msgstr "%s: 言語å引数ãŒä¸è¶³ã—ã¦ã„ã¾ã™ã€‚\n" -#: createlang.c:195 +#: createlang.c:196 #, c-format msgid "%s: language \"%s\" is already installed in database \"%s\"\n" msgstr "%s: 言語\"%s\"データベース\"%s\"内ã«ã™ã§ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã¾ã™\n" -#: createlang.c:217 +#: createlang.c:219 #, c-format msgid "%s: language installation failed: %s" msgstr "%s: 言語ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã«å¤±æ•—ã—ã¾ã—ãŸ: %s" -#: createlang.c:233 +#: createlang.c:235 #, c-format msgid "" "%s installs a procedural language into a PostgreSQL database.\n" @@ -447,162 +476,169 @@ msgstr "" "\"%s ã¯PostgreSQLãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æ‰‹ç¶šã言語をインストールã—ã¾ã™ã€‚\n" "\n" -#: createlang.c:235 droplang.c:236 +#: createlang.c:237 droplang.c:238 #, c-format msgid " %s [OPTION]... LANGNAME [DBNAME]\n" msgstr " %s [オプション]... 言語å [データベースå]\n" -#: createlang.c:237 +#: createlang.c:239 #, c-format msgid " -d, --dbname=DBNAME database to install language in\n" msgstr " -d, --dbname=データベースå 言語をインストールã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å\n" -#: createlang.c:239 droplang.c:240 +#: createlang.c:241 droplang.c:242 #, c-format msgid " -l, --list show a list of currently installed languages\n" msgstr " -l, --list ç¾åœ¨ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã®è¨€èªžä¸€è¦§ã‚’表示ã—ã¾ã™\n" -#: createuser.c:185 +#: createuser.c:191 msgid "Enter name of role to add: " msgstr "追加ã—ãŸã„ロールåを入力:" -#: createuser.c:200 +#: createuser.c:206 msgid "Enter password for new role: " msgstr "æ–°ã—ã„ロールã®ãŸã‚ã®ãƒ‘スワード: " -#: createuser.c:201 +#: createuser.c:207 msgid "Enter it again: " msgstr "ã‚‚ã†ä¸€åº¦å…¥åŠ›ã—ã¦ãã ã•ã„:" -#: createuser.c:204 +#: createuser.c:210 #, c-format msgid "Passwords didn't match.\n" msgstr "パスワードãŒãƒžãƒƒãƒã—ã¾ã›ã‚“。\n" -#: createuser.c:213 +#: createuser.c:219 msgid "Shall the new role be a superuser?" msgstr "æ–°ã—ã„ロールをスーパーユーザã«ã—ã¾ã™ã‹ï¼Ÿ" -#: createuser.c:228 +#: createuser.c:234 msgid "Shall the new role be allowed to create databases?" msgstr "æ–°ã—ã„ロールã«å¯¾ã—ã¦ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’作æˆã™ã‚‹æ¨©é™ã‚’与ãˆã¾ã™ã‹ï¼Ÿ" -#: createuser.c:236 +#: createuser.c:242 msgid "Shall the new role be allowed to create more new roles?" msgstr "æ–°ã—ã„ロールã«å¯¾ã—ã¦åˆ¥ã®ãƒ­ãƒ¼ãƒ«ã‚’作æˆã™ã‚‹æ¨©é™ã‚’与ãˆã¾ã™ã‹ï¼Ÿ" -#: createuser.c:270 +#: createuser.c:276 #, c-format msgid "Password encryption failed.\n" msgstr "ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ã®æš—å·åŒ–ã«å¤±æ•—ã—ã¾ã—ãŸã€‚\n" -#: createuser.c:313 +#: createuser.c:333 #, c-format msgid "%s: creation of new role failed: %s" msgstr "%s: æ–°ã—ã„ロールã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸ: %s" -#: createuser.c:328 +#: createuser.c:348 #, c-format msgid "" "%s creates a new PostgreSQL role.\n" "\n" -msgstr "%sã¯æ–°ã—ã„PostgreSQLロールを作æˆã—ã¾ã™\n\n" +msgstr "" +"%sã¯æ–°ã—ã„PostgreSQLロールを作æˆã—ã¾ã™\n" +"\n" -#: createuser.c:330 dropuser.c:157 +#: createuser.c:350 dropuser.c:157 #, c-format msgid " %s [OPTION]... [ROLENAME]\n" msgstr " %s [オプション]... [ロールå]\n" -#: createuser.c:332 +#: createuser.c:352 #, c-format msgid " -c, --connection-limit=N connection limit for role (default: no limit)\n" msgstr " -c, --connection-limit=N ã“ã®ãƒ­ãƒ¼ãƒ«ã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³æ•°ã®åˆ¶é™ï¼ˆãƒ‡ãƒ•ォルト:制é™ãªã—)\n" -#: createuser.c:333 +#: createuser.c:353 #, c-format msgid " -d, --createdb role can create new databases\n" msgstr " -d, --createdb ãƒ­ãƒ¼ãƒ«ã¯æ–°ã—ã„データベースを作æˆã§ãã¾ã™\n" -#: createuser.c:334 +#: createuser.c:354 #, c-format msgid " -D, --no-createdb role cannot create databases (default)\n" msgstr " -D, --no-createdb ãƒ­ãƒ¼ãƒ«ã¯æ–°ã—ã„データベースを作æˆã§ãã¾ã›ã‚“(デフォルト)\n" -#: createuser.c:336 +#: createuser.c:356 #, c-format msgid " -E, --encrypted encrypt stored password\n" msgstr " -E, --encrypted パスワードを暗å·åŒ–ã—ã¦ä¿å­˜ã™ã‚‹\n" -#: createuser.c:337 +#: createuser.c:357 +#, c-format +msgid " -g, --role=ROLE new role will be a member of this role\n" +msgstr " -g, --role=ROLE æ–°ã—ã„ロールã¯ã“ã®ãƒ­ãƒ¼ãƒ«ã®ãƒ¡ãƒ³ãƒãƒ¼ã«ãªã‚‹\n" + +#: createuser.c:358 #, c-format msgid "" " -i, --inherit role inherits privileges of roles it is a\n" " member of (default)\n" msgstr " -i, --inherit ã“ã®ãƒ­ãƒ¼ãƒ«ã®ãƒ¡ãƒ³ãƒãƒ¼ã«ã‚‚権é™ã‚’継承ã™ã‚‹ï¼ˆãƒ‡ãƒ•ォルト)\n" -#: createuser.c:339 +#: createuser.c:360 #, c-format msgid " -I, --no-inherit role does not inherit privileges\n" msgstr " -I, --no-inherit 権é™(grant/revoke)をダンプã—ã¾ã›ã‚“\n" -#: createuser.c:340 +#: createuser.c:361 #, c-format msgid " -l, --login role can login (default)\n" msgstr " -l, --login ロールã¯ãƒ­ã‚°ã‚¤ãƒ³å¯èƒ½ï¼ˆãƒ‡ãƒ•ォルト)\n" -#: createuser.c:341 +#: createuser.c:362 #, c-format msgid " -L, --no-login role cannot login\n" msgstr " -L, --no-login ロールã¯ãƒ­ã‚°ã‚¤ãƒ³ä¸å¯\n" -#: createuser.c:342 +#: createuser.c:363 #, c-format msgid " -N, --unencrypted do not encrypt stored password\n" msgstr " -N, --unencrypted パスワードを暗å·åŒ–ã›ãšã«ä¿å­˜ã™ã‚‹\n" -#: createuser.c:343 +#: createuser.c:364 #, c-format msgid " -P, --pwprompt assign a password to new role\n" msgstr " -P, --pwprompt æ–°ã—ã„ロールã«å¯¾ã—ã¦ãƒ‘スワードを割り当ã¦ã‚‹\n" -#: createuser.c:344 +#: createuser.c:365 #, c-format msgid " -r, --createrole role can create new roles\n" msgstr " -r, --createrole ロールã¯åˆ¥ã®ãƒ­ãƒ¼ãƒ«ã‚’作æˆã§ãã‚‹\n" -#: createuser.c:345 +#: createuser.c:366 #, c-format msgid " -R, --no-createrole role cannot create roles (default)\n" msgstr " -R, --no-createrole ロールã¯åˆ¥ã®ãƒ­ãƒ¼ãƒ«ã‚’作æˆã§ããªã„(デフォルト)\n" -#: createuser.c:346 +#: createuser.c:367 #, c-format msgid " -s, --superuser role will be superuser\n" msgstr " -s, --superuser ロールã¯ã‚¹ãƒ¼ãƒ‘ーユーザã«ãªã‚‹\n" -#: createuser.c:347 +#: createuser.c:368 #, c-format msgid " -S, --no-superuser role will not be superuser (default)\n" msgstr " -S, --no-superuser ロールã¯ã‚¹ãƒ¼ãƒ‘ーユーザã«ãªã‚Œãªã„(デフォルト)\n" -#: createuser.c:349 +#: createuser.c:370 #, c-format msgid "" " --interactive prompt for missing role name and attributes rather\n" " than using defaults\n" msgstr " --interactive デフォルトã§ã¯ãªã未入力ã®ãƒ­ãƒ¼ãƒ«åや属性ã®å…¥åŠ›ã‚’ä¿ƒã™\n" -#: createuser.c:351 +#: createuser.c:372 #, c-format msgid " --replication role can initiate replication\n" msgstr " --replication ロールã¯ãƒ¬ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚’åˆæœŸåŒ–ã§ãã‚‹\n" -#: createuser.c:352 +#: createuser.c:373 #, c-format msgid " --no-replication role cannot initiate replication\n" msgstr " --no-replication ロールã¯ãƒ¬ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚’åˆæœŸåŒ–ã§ããªã„\n" -#: createuser.c:357 +#: createuser.c:378 #, c-format msgid " -U, --username=USERNAME user name to connect as (not the one to create)\n" msgstr " -U, --username=ユーザå ã“ã®ãƒ¦ãƒ¼ã‚¶ã¨ã—ã¦æŽ¥ç¶šï¼ˆä½œæˆå¯¾è±¡ãƒ¦ãƒ¼ã‚¶ã§ã¯ã‚りã¾ã›ã‚“)\n" @@ -650,24 +686,24 @@ msgstr " -i, --interactive 何ã‹ã‚’削除ã™ã‚‹å‰ã«è­¦å‘Šã™ã‚‹\n" msgid " --if-exists don't report error if database doesn't exist\n" msgstr " --if-exists データベースãŒå­˜åœ¨ã—ãªã„å ´åˆã«ã‚¨ãƒ©ãƒ¼ã‚’報告ã—ãªã„\n" -#: droplang.c:201 +#: droplang.c:202 #, c-format msgid "%s: language \"%s\" is not installed in database \"%s\"\n" msgstr "%s: 言語\"%s\"ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹\"%s\"ã«ã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã¾ã›ã‚“\n" -#: droplang.c:219 +#: droplang.c:221 #, c-format msgid "%s: language removal failed: %s" msgstr "%s: 言語ã®å‰Šé™¤ã«å¤±æ•—ã—ã¾ã—ãŸ: %s" -#: droplang.c:234 +#: droplang.c:236 #, c-format msgid "" "%s removes a procedural language from a database.\n" "\n" msgstr "%s ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‹ã‚‰æ‰‹ç¶šã言語を削除ã—ã¾ã™\n" -#: droplang.c:238 +#: droplang.c:240 #, c-format msgid " -d, --dbname=DBNAME database from which to remove the language\n" msgstr " -d, --dbname=データベースå 言語を削除ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å\n" @@ -712,144 +748,173 @@ msgstr "" #: dropuser.c:163 #, c-format msgid " --if-exists don't report error if user doesn't exist\n" -msgstr " --if-exists ãƒ¦ãƒ¼ã‚¶ãŒæŒ‡å®šã—ãªã„å ´åˆã«ã‚¨ãƒ©ãƒ¼ã‚’報告ã—ãªã„\n" +msgstr " --if-exists ユーザãŒå­˜åœ¨ã—ãªã„å ´åˆã«ã‚¨ãƒ©ãƒ¼ã‚’報告ã—ãªã„\n" #: dropuser.c:168 #, c-format msgid " -U, --username=USERNAME user name to connect as (not the one to drop)\n" msgstr " -U, --username=ユーザå ã“ã®ãƒ¦ãƒ¼ã‚¶ã¨ã—ã¦æŽ¥ç¶šï¼ˆå‰Šé™¤å¯¾è±¡ãƒ¦ãƒ¼ã‚¶ã§ã¯ã‚りã¾ã›ã‚“)\n" -#: pg_isready.c:138 +#: pg_isready.c:142 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: pg_isready.c:146 +#: pg_isready.c:150 #, c-format -#| msgid "could not set default_with_oids: %s" msgid "%s: could not fetch default options\n" msgstr "%s: デフォルトã®ã‚ªãƒ—ションをå–り出ã™ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pg_isready.c:209 +#: pg_isready.c:199 +#, c-format +msgid "accepting connections\n" +msgstr "接続をå—ã‘付ã‘ã¦ã„ã¾ã™\n" + +#: pg_isready.c:202 +#, c-format +msgid "rejecting connections\n" +msgstr "接続を拒絶ã—ã¦ã„ã¾ã™\n" + +#: pg_isready.c:205 +#, c-format +msgid "no response\n" +msgstr "レスãƒãƒ³ã‚¹ãŒã‚りã¾ã›ã‚“\n" + +#: pg_isready.c:208 +#, c-format +msgid "no attempt\n" +msgstr "施行ãŒã‚りã¾ã›ã‚“\n" + +#: pg_isready.c:211 +#, c-format +msgid "unknown\n" +msgstr "unknown\n" + +#: pg_isready.c:221 #, c-format -#| msgid "" -#| "%s creates a PostgreSQL database.\n" -#| "\n" msgid "" "%s issues a connection check to a PostgreSQL database.\n" "\n" -msgstr "%sã¯PostgreSQLデータベースã«å¯¾ã—ã¦æŽ¥ç¶šæ¤œæŸ»ã‚’ç™ºè¡Œã—ã¾ã™\n\n" +msgstr "" +"%sã¯PostgreSQLデータベースã«å¯¾ã—ã¦æŽ¥ç¶šæ¤œæŸ»ã‚’ç™ºè¡Œã—ã¾ã™\n" +"\n" -#: pg_isready.c:211 +#: pg_isready.c:223 #, c-format msgid " %s [OPTION]...\n" msgstr " %s [OPTION]...\n" -#: pg_isready.c:214 +#: pg_isready.c:226 #, c-format -#| msgid " -d, --dbname=DBNAME database to dump\n" msgid " -d, --dbname=DBNAME database name\n" msgstr " -d, --dbname=データベースå データベースå\n" -#: pg_isready.c:215 +#: pg_isready.c:227 #, c-format -#| msgid " -q, --quiet don't write any messages\n" msgid " -q, --quiet run quietly\n" msgstr " -q, --quiet メッセージを出力ã›ãšã«å®Ÿè¡Œã™ã‚‹\n" -#: pg_isready.c:216 +#: pg_isready.c:228 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã€çµ‚了ã—ã¾ã™\n" -#: pg_isready.c:217 +#: pg_isready.c:229 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help ã“ã®ãƒ˜ãƒ«ãƒ—を表示ã—ã€çµ‚了ã—ã¾ã™\n" -#: pg_isready.c:220 +#: pg_isready.c:232 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=HOSTNAME データベースサーãƒã®ãƒ›ã‚¹ãƒˆã¾ãŸã¯ã‚½ã‚±ãƒƒãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã™\n" -#: pg_isready.c:221 +#: pg_isready.c:233 #, c-format -#| msgid " -p, --port=PORT database server port\n" msgid " -p, --port=PORT database server port\n" msgstr " -p, --port=ãƒãƒ¼ãƒˆç•ªå· データベースサーãƒã®ãƒãƒ¼ãƒˆç•ªå·\n" -#: pg_isready.c:222 +#: pg_isready.c:234 #, c-format -#| msgid " -t, --timeout=SECS seconds to wait when using -w option\n" msgid " -t, --timeout=SECS seconds to wait when attempting connection, 0 disables (default: %s)\n" msgstr " -t, --timeout=SECS 接続試行時ã«å¾…機ã™ã‚‹ç§’数。ゼロã¯ç„¡åйã«ã—ã¾ã™ï¼ˆãƒ‡ãƒ•ォルト: %s)\n" -#: pg_isready.c:223 +#: pg_isready.c:235 #, c-format -#| msgid " -U, --username=USERNAME user name to connect as\n" msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=ユーザå ã“ã®ãƒ¦ãƒ¼ã‚¶åã§æŽ¥ç¶šã™ã‚‹\n" -#: reindexdb.c:149 +#: reindexdb.c:160 #, c-format msgid "%s: cannot reindex all databases and a specific one at the same time\n" msgstr "%s: 全データベースã¨ç‰¹å®šã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’åŒæ™‚ã«å†ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åŒ–ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“\n" -#: reindexdb.c:154 +#: reindexdb.c:165 #, c-format msgid "%s: cannot reindex all databases and system catalogs at the same time\n" msgstr "%s: 全データベースã¨ã‚·ã‚¹ãƒ†ãƒ ã‚«ã‚¿ãƒ­ã‚°ã®ä¸¡æ–¹ã‚’åŒæ™‚ã«å†ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åŒ–ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“\n" -#: reindexdb.c:159 +#: reindexdb.c:170 +#, c-format +msgid "%s: cannot reindex specific schema(s) in all databases\n" +msgstr "%s: 全データベースã«ãŠã‘る特定ã®ã‚¹ã‚­ãƒ¼ãƒžã‚’å†ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åŒ–ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“\n" + +#: reindexdb.c:175 #, c-format -#| msgid "%s: cannot reindex a specific table in all databases\n" msgid "%s: cannot reindex specific table(s) in all databases\n" msgstr "%s: 全データベースã«ãŠã‘る特定ã®ãƒ†ãƒ¼ãƒ–ルをå†ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åŒ–ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“\n" -#: reindexdb.c:164 +#: reindexdb.c:180 #, c-format -#| msgid "%s: cannot reindex a specific index in all databases\n" msgid "%s: cannot reindex specific index(es) in all databases\n" msgstr "%s: 全データベースã«ãŠã‘る特定ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’å†ä½œæˆã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“\n" -#: reindexdb.c:175 +#: reindexdb.c:191 +#, c-format +msgid "%s: cannot reindex specific schema(s) and system catalogs at the same time\n" +msgstr "%s: 特定ã®ã‚¹ã‚­ãƒ¼ãƒžã¨ã‚·ã‚¹ãƒ†ãƒ ã‚«ã‚¿ãƒ­ã‚°ã®ä¸¡æ–¹ã‚’åŒæ™‚ã«å†ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åŒ–ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“\n" + +#: reindexdb.c:196 #, c-format -#| msgid "%s: cannot reindex a specific table and system catalogs at the same time\n" msgid "%s: cannot reindex specific table(s) and system catalogs at the same time\n" msgstr "%s: 特定ã®ãƒ†ãƒ¼ãƒ–ルã¨ã‚·ã‚¹ãƒ†ãƒ ã‚«ã‚¿ãƒ­ã‚°ã®ä¸¡æ–¹ã‚’åŒæ™‚ã«å†ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åŒ–ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“\n" -#: reindexdb.c:180 +#: reindexdb.c:201 #, c-format -#| msgid "%s: cannot reindex a specific index and system catalogs at the same time\n" msgid "%s: cannot reindex specific index(es) and system catalogs at the same time\n" msgstr "%s: 特定ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã¨ã‚·ã‚¹ãƒ†ãƒ ã‚«ã‚¿ãƒ­ã‚°ã®ä¸¡æ–¹ã‚’åŒæ™‚ã«å†ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åŒ–ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“\n" -#: reindexdb.c:264 +#: reindexdb.c:307 #, c-format msgid "%s: reindexing of table \"%s\" in database \"%s\" failed: %s" msgstr "%1$s: データベース\"%2$s\"中ã«ã‚るテーブル\"%3$s\"ã®å†ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åŒ–ã«å¤±æ•—ã—ã¾ã—ãŸ: %4$s" -#: reindexdb.c:267 +#: reindexdb.c:310 #, c-format msgid "%s: reindexing of index \"%s\" in database \"%s\" failed: %s" msgstr "%1$s: データベース\"%2$s\"中ã«ã‚るインデックス\"%3$s\"ã®å†ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸ: %4$s" -#: reindexdb.c:270 +#: reindexdb.c:313 +#, c-format +msgid "%s: reindexing of schema \"%s\" in database \"%s\" failed: %s" +msgstr "%1$s: データベース\"%2$s\"中ã«ã‚るスキーマ\"%3$s\"ã®å†ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åŒ–ã«å¤±æ•—ã—ã¾ã—ãŸ: %4$s" + +#: reindexdb.c:316 #, c-format msgid "%s: reindexing of database \"%s\" failed: %s" msgstr "%s: データベース\"%s\"ã®å†ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åŒ–ã«å¤±æ•—ã—ã¾ã—ãŸ: %s" -#: reindexdb.c:301 +#: reindexdb.c:349 #, c-format msgid "%s: reindexing database \"%s\"\n" msgstr "%s: データベース\"%s\"ã‚’å†ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åŒ–ã—ã¦ã„ã¾ã™\n" -#: reindexdb.c:329 +#: reindexdb.c:388 #, c-format msgid "%s: reindexing of system catalogs failed: %s" msgstr "%s: システムカタログã®å†ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åŒ–ã«å¤±æ•—ã—ã¾ã—ãŸ: %s" -#: reindexdb.c:341 +#: reindexdb.c:400 #, c-format msgid "" "%s reindexes a PostgreSQL database.\n" @@ -858,34 +923,37 @@ msgstr "" "%sã¯PostgreSQLデータベースをå†ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åŒ–ã—ã¾ã™ã€‚\n" "\n" -#: reindexdb.c:345 +#: reindexdb.c:404 #, c-format msgid " -a, --all reindex all databases\n" msgstr " -a, --all 全データベースをå†ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åŒ–ã—ã¾ã™\n" -#: reindexdb.c:346 +#: reindexdb.c:405 #, c-format msgid " -d, --dbname=DBNAME database to reindex\n" msgstr " -d, --dbname=データベースå å†ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åŒ–データベースå\n" -#: reindexdb.c:348 +#: reindexdb.c:407 #, c-format -#| msgid " -i, --index=INDEX recreate specific index only\n" msgid " -i, --index=INDEX recreate specific index(es) only\n" msgstr " -i, --index=ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹å æŒ‡å®šã—ãŸã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹(複数å¯)ã®ã¿ã‚’å†ä½œæˆã—ã¾ã™\n" -#: reindexdb.c:350 +#: reindexdb.c:409 #, c-format msgid " -s, --system reindex system catalogs\n" msgstr " -s, --system システムカタログをå†ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åŒ–ã—ã¾ã™\n" -#: reindexdb.c:351 +#: reindexdb.c:410 +#, c-format +msgid " -S, --schema=SCHEMA reindex specific schema(s) only\n" +msgstr " -S, --schema=SCHEMA 指定ã—ãŸã‚¹ã‚­ãƒ¼ãƒžï¼ˆè¤‡æ•°åŒ–)ã®ã¿ã‚’å†ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åŒ–ã—ã¾ã™\n" + +#: reindexdb.c:411 #, c-format -#| msgid " -t, --table=TABLE reindex specific table only\n" msgid " -t, --table=TABLE reindex specific table(s) only\n" msgstr " -t, --table=ãƒ†ãƒ¼ãƒ–ãƒ«å æŒ‡å®šã—ãŸãƒ†ãƒ¼ãƒ–ル(複数å¯ï¼‰ã®ã¿ã‚’å†ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åŒ–ã—ã¾ã™\n" -#: reindexdb.c:361 +#: reindexdb.c:422 #, c-format msgid "" "\n" @@ -894,111 +962,150 @@ msgstr "" "\n" "詳細㯠SQL コマンド REINDEX ã«é–¢ã™ã‚‹èª¬æ˜Žã‚’å‚ç…§ã—ã¦ãã ã•ã„。\n" -#: vacuumdb.c:162 +#: vacuumdb.c:193 +#, c-format +msgid "%s: number of parallel jobs must be at least 1\n" +msgstr "%s: ä¸¦è¡Œã‚¸ãƒ§ãƒ–ã®æ•°ã¯å°‘ãªãã¨ã‚‚1ã§ã™\n" + +#: vacuumdb.c:199 #, c-format -msgid "%s: cannot use the \"full\" option when performing only analyze\n" -msgstr "%s: analyze ã®ã¿ã‚’実行ã™ã‚‹å ´åˆ \"full\" ã¯ä½¿ãˆã¾ã›ã‚“\n" +msgid "%s: too many parallel jobs requested (maximum: %d)\n" +msgstr "%s: è¦æ±‚ã•れãŸä¸¦åˆ—ジョブãŒå¤šã™ãŽã¾ã™ (最大: %d)\n" -#: vacuumdb.c:168 +#: vacuumdb.c:238 vacuumdb.c:244 #, c-format -msgid "%s: cannot use the \"freeze\" option when performing only analyze\n" -msgstr "%s: analyze ã®ã¿ã‚’実行ã™ã‚‹å ´åˆ \"freeze\" ã¯ä½¿ãˆã¾ã›ã‚“\n" +msgid "%s: cannot use the \"%s\" option when performing only analyze\n" +msgstr "%s: analyze ã®ã¿ã‚’実行ã™ã‚‹å ´åˆ \"%s\" ã¯ä½¿ãˆã¾ã›ã‚“\n" -#: vacuumdb.c:181 +#: vacuumdb.c:261 #, c-format msgid "%s: cannot vacuum all databases and a specific one at the same time\n" msgstr "%s: 全データベースã¨ç‰¹å®šã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’åŒæ™‚ã« vacuum ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“\n" -#: vacuumdb.c:187 +#: vacuumdb.c:267 #, c-format -#| msgid "%s: cannot vacuum a specific table in all databases\n" msgid "%s: cannot vacuum specific table(s) in all databases\n" msgstr "%s: 全データベースã®ã†ã¡ç‰¹å®šã®ãƒ†ãƒ¼ãƒ–ルを vacuum ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“\n" -#: vacuumdb.c:306 +#: vacuumdb.c:353 +msgid "Generating minimal optimizer statistics (1 target)" +msgstr "最é©åŒ–ã®ãŸã‚ã®æƒ…報を最å°é™ç”Ÿæˆã—ã¾ã™ (1対象)" + +#: vacuumdb.c:354 +msgid "Generating medium optimizer statistics (10 targets)" +msgstr "最é©åŒ–ã®ãŸã‚ã®æƒ…報を複数生æˆã—ã¾ã™ (10対象)" + +#: vacuumdb.c:355 +msgid "Generating default (full) optimizer statistics" +msgstr "最é©åŒ–ã®ãŸã‚ã®æƒ…報をデフォルト数(å…¨ã¦)生æˆã—ã¾ã™" + +#: vacuumdb.c:367 +#, c-format +msgid "%s: processing database \"%s\": %s\n" +msgstr "%s: データベース\"%s\"ã®å‡¦ç†ä¸­ã§ã™: %s\n" + +#: vacuumdb.c:370 +#, c-format +msgid "%s: vacuuming database \"%s\"\n" +msgstr "%s: データベース\"%s\"ã‚’ vacuum ã—ã¦ã„ã¾ã™\n" + +#: vacuumdb.c:702 #, c-format msgid "%s: vacuuming of table \"%s\" in database \"%s\" failed: %s" msgstr "%1$s: データベース \"%3$s\" ã§ãƒ†ãƒ¼ãƒ–ル\"%2$sã® vacuum ã«å¤±æ•—ã—ã¾ã—ãŸï¼š%4$ss" -#: vacuumdb.c:309 +#: vacuumdb.c:705 vacuumdb.c:822 #, c-format msgid "%s: vacuuming of database \"%s\" failed: %s" msgstr "%s: データベース\"%s\"ã® vacuum ã«å¤±æ•—ã—ã¾ã—ãŸ: %s" -#: vacuumdb.c:341 +#: vacuumdb.c:936 #, c-format -msgid "%s: vacuuming database \"%s\"\n" -msgstr "%s: データベース\"%s\"ã‚’ vacuum ã—ã¦ã„ã¾ã™\n" +msgid "%s: invalid socket: %s" +msgstr "%s: 無効ãªã‚½ã‚±ãƒƒãƒˆã§ã™: %s" -#: vacuumdb.c:357 +#: vacuumdb.c:945 #, c-format msgid "" "%s cleans and analyzes a PostgreSQL database.\n" "\n" msgstr "%sã¯PostgreSQLデータベースを clean ãŠã‚ˆã³ analyse ã—ã¾ã™ã€‚\n" -#: vacuumdb.c:361 +#: vacuumdb.c:949 #, c-format msgid " -a, --all vacuum all databases\n" msgstr " -a, --all 全データベースを vacuum ã—ã¾ã™\n" -#: vacuumdb.c:362 +#: vacuumdb.c:950 #, c-format msgid " -d, --dbname=DBNAME database to vacuum\n" msgstr " -d, --dbname=データベースå vacuum ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å\n" -#: vacuumdb.c:363 +#: vacuumdb.c:951 #, c-format msgid " -e, --echo show the commands being sent to the server\n" msgstr " -e, --echo サーãƒã«é€ã‚‰ã‚Œã‚‹ã‚³ãƒžãƒ³ãƒ‰ã‚’表示ã—ã¾ã™\n" -#: vacuumdb.c:364 +#: vacuumdb.c:952 #, c-format msgid " -f, --full do full vacuuming\n" msgstr " -f, --full full vacuum を行ãªã„ã¾ã™\n" -#: vacuumdb.c:365 +#: vacuumdb.c:953 #, c-format msgid " -F, --freeze freeze row transaction information\n" msgstr " -F, --freeze 行トランザクション情報を更新ã›ãšã«ä¿æŒã—ã¾ã™\n" -#: vacuumdb.c:366 +#: vacuumdb.c:954 +#, c-format +msgid " -j, --jobs=NUM use this many concurrent connections to vacuum\n" +msgstr " -j, --jobs=NUM ãƒã‚­ãƒ¥ãƒ¼ãƒ æ™‚ã«æŒ‡å®šã—ãŸåŒæ™‚接続数を使用\n" + +#: vacuumdb.c:955 #, c-format msgid " -q, --quiet don't write any messages\n" msgstr " -q, --quiet メッセージを出力ã—ã¾ã›ã‚“\n" -#: vacuumdb.c:367 +#: vacuumdb.c:956 #, c-format -#| msgid " -t, --table='TABLE[(COLUMNS)]' vacuum specific table only\n" msgid " -t, --table='TABLE[(COLUMNS)]' vacuum specific table(s) only\n" msgstr " -t, --table='TABLE[(COLUMNS)]' 指定ã—ãŸãƒ†ãƒ¼ãƒ–ル(複数å¯)ã®ã¿ã‚’ vacuum ã—ã¾ã™\n" -#: vacuumdb.c:368 +#: vacuumdb.c:957 #, c-format msgid " -v, --verbose write a lot of output\n" msgstr " -v, --verbose 多ãã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’出力ã—ã¾ã™\n" -#: vacuumdb.c:369 +#: vacuumdb.c:958 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã€çµ‚了ã—ã¾ã™\n" -#: vacuumdb.c:370 +#: vacuumdb.c:959 #, c-format msgid " -z, --analyze update optimizer statistics\n" msgstr " -z, --analyze 最é©åŒ–ã®ãŸã‚ã®æƒ…報を更新ã—ã¾ã™\n" -#: vacuumdb.c:371 +#: vacuumdb.c:960 #, c-format -msgid " -Z, --analyze-only only update optimizer statistics\n" -msgstr " -Z, --analyze-only 最é©åŒ–ã®ãŸã‚ã®æƒ…å ±ã ã‘ã‚’æ›´æ–°ã—ã¾ã™\n" +msgid " -Z, --analyze-only only update optimizer statistics; no vacuum\n" +msgstr " -Z, --analyze-only 最é©åŒ–ã®ãŸã‚ã®æƒ…å ±ã ã‘ã‚’æ›´æ–°ã—ã¾ã™; ãƒã‚­ãƒ¥ãƒ¼ãƒ ã¯ã‚りã¾ã›ã‚“\n" -#: vacuumdb.c:372 +#: vacuumdb.c:961 +#, c-format +msgid "" +" --analyze-in-stages only update optimizer statistics, in multiple\n" +" stages for faster results; no vacuum\n" +msgstr "" +" --analyze-in-stages オプティマイザã®çµ±è¨ˆæƒ…å ±ã®æ›´æ–°ã®ã¿ã‚’行ã„ã¾ã™ã€‚高速ã«çµæžœã‚’å¾—ã‚‹ãŸã‚ã«\n" +" 複数回実行ã—ã¾ã™; ãƒã‚­ãƒ¥ãƒ¼ãƒ ã‚’行ã„ã¾ã›ã‚“\n" + +#: vacuumdb.c:963 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help ã“ã®ãƒ˜ãƒ«ãƒ—を表示ã—ã€çµ‚了ã—ã¾ã™\n" -#: vacuumdb.c:380 +#: vacuumdb.c:971 #, c-format msgid "" "\n" @@ -1007,37 +1114,3 @@ msgstr "" "\n" "詳細㯠SQL コマンド㮠VACUUM ã®èª¬æ˜Žã‚’å‚ç…§ã—ã¦ãã ã•ã„。\n" -#~ msgid "%s: still %s functions declared in language \"%s\"; language not removed\n" -#~ msgstr "%s: ã¾ã é–¢æ•°%sãŒè¨€èªž\"%s\"内ã§å®£è¨€ã•れã¦ã„ã¾ã™ã€‚言語ã¯å‰Šé™¤ã•れã¾ã›ã‚“\n" - -#~ msgid " --version output version information, then exit\n" -#~ msgstr " --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã¦çµ‚了\n" - -#~ msgid "%s: out of memory\n" -#~ msgstr "%s: メモリä¸è¶³ã§ã™\n" - -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help ヘルプを表示ã—ã¦çµ‚了ã—ã¾ã™\n" - -#~ msgid "" -#~ "\n" -#~ "If one of -d, -D, -r, -R, -s, -S, and ROLENAME is not specified, you will\n" -#~ "be prompted interactively.\n" -#~ msgstr "" -#~ "\n" -#~ "-d, -D, -r, -R, -s, -S ã§ãƒ­ãƒ¼ãƒ«åãŒæŒ‡å®šã•れãªã„å ´åˆã€ãƒ­ãƒ¼ãƒ«åã‚’ãã®å ´ã§å…¥åŠ›ã§ãã¾ã™\n" - -#~ msgid " --version output version information, then exit\n" -#~ msgstr " --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã¦çµ‚了ã—ã¾ã™\n" - -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help ヘルプを表示ã—ã¦çµ‚了\n" - -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help ヘルプを表示ã—ã¦çµ‚了ã—ã¾ã™\n" - -#~ msgid "pg_strdup: cannot duplicate null pointer (internal error)\n" -#~ msgstr "pg_strdup: null ãƒã‚¤ãƒ³ã‚¿ã‚’複製ã§ãã¾ã›ã‚“(内部エラー)。\n" - -#~ msgid " --version output version information, then exit\n" -#~ msgstr " --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã¦çµ‚了ã—ã¾ã™\n" diff --git a/src/bin/scripts/po/ko.po b/src/bin/scripts/po/ko.po index a3ff92ec4f..a688749d04 100644 --- a/src/bin/scripts/po/ko.po +++ b/src/bin/scripts/po/ko.po @@ -3,16 +3,16 @@ # msgid "" msgstr "" -"Project-Id-Version: pgscripts (PostgreSQL 9.5)\n" +"Project-Id-Version: pgscripts (PostgreSQL 9.6)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2015-12-21 09:47+0900\n" -"PO-Revision-Date: 2015-12-28 18:09+0900\n" +"POT-Creation-Date: 2016-09-26 14:02+0900\n" +"PO-Revision-Date: 2016-09-26 19:04+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" -"Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../../common/fe_memutils.c:35 ../../common/fe_memutils.c:75 @@ -40,49 +40,75 @@ msgstr "ì‚¬ìš©ìž ì—†ìŒ" msgid "user name lookup failure: error code %lu" msgstr "ì‚¬ìš©ìž ì´ë¦„ 찾기 실패: 오류번호 %lu" -#: clusterdb.c:110 clusterdb.c:129 createdb.c:119 createdb.c:138 -#: createlang.c:89 createlang.c:119 createlang.c:174 createuser.c:168 -#: createuser.c:183 dropdb.c:94 dropdb.c:103 dropdb.c:111 droplang.c:88 +#: ../../fe_utils/print.c:354 +#, c-format +msgid "(%lu row)" +msgid_plural "(%lu rows)" +msgstr[0] "(%luê°œ í–‰)" + +#: ../../fe_utils/print.c:2906 +#, c-format +msgid "Interrupted\n" +msgstr "ì¸íŠ¸ëŸ½íŠ¸ë°œìƒ\n" + +#: ../../fe_utils/print.c:2970 +#, c-format +msgid "Cannot add header to table content: column count of %d exceeded.\n" +msgstr "í…Œì´ë¸” ë‚´ìš©ì— í—¤ë”를 추가할 수 ì—†ìŒ: ì—´ 수가 %d개를 초과했습니다.\n" + +#: ../../fe_utils/print.c:3010 +#, c-format +msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" +msgstr "í…Œì´ë¸” ë‚´ìš©ì— ì…€ì„ ì¶”ê°€í•  수 ì—†ìŒ: ì´ ì…€ 수가 %d개를 초과했습니다.\n" + +#: ../../fe_utils/print.c:3259 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "ìž˜ëª»ëœ ì¶œë ¥ í˜•ì‹ (ë‚´ë¶€ 오류): %d" + +#: clusterdb.c:111 clusterdb.c:130 createdb.c:119 createdb.c:138 +#: createlang.c:89 createlang.c:119 createlang.c:174 createuser.c:169 +#: createuser.c:184 dropdb.c:94 dropdb.c:103 dropdb.c:111 droplang.c:88 #: droplang.c:118 droplang.c:174 dropuser.c:89 dropuser.c:104 dropuser.c:115 -#: pg_isready.c:93 pg_isready.c:107 reindexdb.c:130 reindexdb.c:149 -#: vacuumdb.c:209 vacuumdb.c:228 +#: pg_isready.c:93 pg_isready.c:107 reindexdb.c:131 reindexdb.c:150 +#: vacuumdb.c:207 vacuumdb.c:226 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "보다 ìžì„¸í•œ ì‚¬ìš©ë²•ì€ \"%s --help\"\n" -#: clusterdb.c:127 createdb.c:136 createlang.c:117 createuser.c:181 -#: dropdb.c:109 droplang.c:116 dropuser.c:102 pg_isready.c:105 reindexdb.c:147 -#: vacuumdb.c:226 +#: clusterdb.c:128 createdb.c:136 createlang.c:117 createuser.c:182 +#: dropdb.c:109 droplang.c:116 dropuser.c:102 pg_isready.c:105 reindexdb.c:148 +#: vacuumdb.c:224 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: 너무 ë§Žì€ ëª…ë ¹í–‰ ì¸ìˆ˜ë“¤ (시작 \"%s\")\n" -#: clusterdb.c:139 +#: clusterdb.c:140 #, c-format msgid "%s: cannot cluster all databases and a specific one at the same time\n" msgstr "%s: 모든 DB 작업과 특정 DB ìž‘ì—…ì€ ë™ì‹œì— í•  수 없습니다.\n" -#: clusterdb.c:146 +#: clusterdb.c:147 #, c-format msgid "%s: cannot cluster specific table(s) in all databases\n" msgstr "%s: 모든 DB를 대ìƒìœ¼ë¡œ 특정 í…Œì´ë¸”ë“¤ì„ í´ëŸ¬ìŠ¤í„°í•  수 ì—†ìŒ\n" -#: clusterdb.c:211 +#: clusterdb.c:212 #, c-format msgid "%s: clustering of table \"%s\" in database \"%s\" failed: %s" msgstr "%s: \"%s\" í…Œì´ë¸”(해당DB: \"%s\") í´ëŸ¬ìŠ¤í„° 작업 실패: %s" -#: clusterdb.c:214 +#: clusterdb.c:215 #, c-format msgid "%s: clustering of database \"%s\" failed: %s" msgstr "%s: \"%s\" ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„° 실패: %s" -#: clusterdb.c:245 +#: clusterdb.c:248 #, c-format msgid "%s: clustering database \"%s\"\n" msgstr "%s: \"%s\" ë°ì´í„°ë² ì´ìФ í´ëŸ¬ìŠ¤í„° 작업 중\n" -#: clusterdb.c:261 +#: clusterdb.c:269 #, c-format msgid "" "%s clusters all previously clustered tables in a database.\n" @@ -92,21 +118,21 @@ msgstr "" "다시 í´ëŸ¬ìŠ¤í„° ìž‘ì—…ì„ í•©ë‹ˆë‹¤.\n" "\n" -#: clusterdb.c:262 createdb.c:252 createlang.c:236 createuser.c:348 -#: dropdb.c:155 droplang.c:237 dropuser.c:156 pg_isready.c:222 reindexdb.c:392 -#: vacuumdb.c:975 +#: clusterdb.c:270 createdb.c:252 createlang.c:236 createuser.c:349 +#: dropdb.c:155 droplang.c:237 dropuser.c:156 pg_isready.c:222 reindexdb.c:401 +#: vacuumdb.c:942 #, c-format msgid "Usage:\n" msgstr "사용법:\n" -#: clusterdb.c:263 reindexdb.c:393 vacuumdb.c:976 +#: clusterdb.c:271 reindexdb.c:402 vacuumdb.c:943 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [옵션]... [DBì´ë¦„]\n" -#: clusterdb.c:264 createdb.c:254 createlang.c:238 createuser.c:350 -#: dropdb.c:157 droplang.c:239 dropuser.c:158 pg_isready.c:225 reindexdb.c:394 -#: vacuumdb.c:977 +#: clusterdb.c:272 createdb.c:254 createlang.c:238 createuser.c:351 +#: dropdb.c:157 droplang.c:239 dropuser.c:158 pg_isready.c:225 reindexdb.c:403 +#: vacuumdb.c:944 #, c-format msgid "" "\n" @@ -115,53 +141,53 @@ msgstr "" "\n" "옵션들:\n" -#: clusterdb.c:265 +#: clusterdb.c:273 #, c-format msgid " -a, --all cluster all databases\n" msgstr " -a, --all 모든 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 대ìƒìœ¼ë¡œ\n" -#: clusterdb.c:266 +#: clusterdb.c:274 #, c-format msgid " -d, --dbname=DBNAME database to cluster\n" msgstr " -d, --dbname=DBNAME í´ëŸ¬ìŠ¤í„° 작업할 DB\n" -#: clusterdb.c:267 createlang.c:240 createuser.c:354 dropdb.c:158 -#: droplang.c:241 dropuser.c:159 reindexdb.c:397 +#: clusterdb.c:275 createlang.c:240 createuser.c:355 dropdb.c:158 +#: droplang.c:241 dropuser.c:159 reindexdb.c:406 #, c-format msgid "" " -e, --echo show the commands being sent to the server\n" msgstr " -e, --echo 서버로 보내는 작업 ëª…ë ¹ì„ ë³´ì—¬ì¤Œ\n" -#: clusterdb.c:268 reindexdb.c:399 +#: clusterdb.c:276 reindexdb.c:408 #, c-format msgid " -q, --quiet don't write any messages\n" msgstr " -q, --quiet 어떠한 ë©”ì‹œì§€ë„ ë³´ì—¬ì£¼ì§€ 않ìŒ\n" -#: clusterdb.c:269 +#: clusterdb.c:277 #, c-format msgid " -t, --table=TABLE cluster specific table(s) only\n" msgstr " -t, --table=TABLE 지정한 í…Œì´ë¸”들만 í´ëŸ¬ìŠ¤í„°\n" -#: clusterdb.c:270 reindexdb.c:403 +#: clusterdb.c:278 reindexdb.c:412 #, c-format msgid " -v, --verbose write a lot of output\n" msgstr " -v, --verbose ë§Žì€ ì¶œë ¥ 작성\n" -#: clusterdb.c:271 createlang.c:242 createuser.c:368 dropdb.c:160 -#: droplang.c:243 dropuser.c:162 reindexdb.c:404 +#: clusterdb.c:279 createlang.c:242 createuser.c:369 dropdb.c:160 +#: droplang.c:243 dropuser.c:162 reindexdb.c:413 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version 버전 정보를 보여주고 마침\n" -#: clusterdb.c:272 createlang.c:243 createuser.c:373 dropdb.c:162 -#: droplang.c:244 dropuser.c:164 reindexdb.c:405 +#: clusterdb.c:280 createlang.c:243 createuser.c:374 dropdb.c:162 +#: droplang.c:244 dropuser.c:164 reindexdb.c:414 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help ì´ ë„움ë§ì„ 보여주고 마침\n" -#: clusterdb.c:273 createdb.c:265 createlang.c:244 createuser.c:374 -#: dropdb.c:163 droplang.c:245 dropuser.c:165 pg_isready.c:231 reindexdb.c:406 -#: vacuumdb.c:993 +#: clusterdb.c:281 createdb.c:265 createlang.c:244 createuser.c:375 +#: dropdb.c:163 droplang.c:245 dropuser.c:165 pg_isready.c:231 reindexdb.c:415 +#: vacuumdb.c:960 #, c-format msgid "" "\n" @@ -170,43 +196,43 @@ msgstr "" "\n" "ì—°ê²° 옵션들:\n" -#: clusterdb.c:274 createlang.c:245 createuser.c:375 dropdb.c:164 -#: droplang.c:246 dropuser.c:166 reindexdb.c:407 vacuumdb.c:994 +#: clusterdb.c:282 createlang.c:245 createuser.c:376 dropdb.c:164 +#: droplang.c:246 dropuser.c:166 reindexdb.c:416 vacuumdb.c:961 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" " -h, --host=HOSTNAME ë°ì´í„°ë² ì´ìФ 서버 호스트 ë˜ëŠ” 소켓 디렉터리\n" -#: clusterdb.c:275 createlang.c:246 createuser.c:376 dropdb.c:165 -#: droplang.c:247 dropuser.c:167 reindexdb.c:408 vacuumdb.c:995 +#: clusterdb.c:283 createlang.c:246 createuser.c:377 dropdb.c:165 +#: droplang.c:247 dropuser.c:167 reindexdb.c:417 vacuumdb.c:962 #, c-format msgid " -p, --port=PORT database server port\n" msgstr " -p, --port=PORT ë°ì´í„°ë² ì´ìФ 서버 í¬íЏ\n" -#: clusterdb.c:276 createlang.c:247 dropdb.c:166 droplang.c:248 -#: reindexdb.c:409 vacuumdb.c:996 +#: clusterdb.c:284 createlang.c:247 dropdb.c:166 droplang.c:248 +#: reindexdb.c:418 vacuumdb.c:963 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=USERNAME ì ‘ì†í•  사용ìžì´ë¦„\n" -#: clusterdb.c:277 createlang.c:248 createuser.c:378 dropdb.c:167 -#: droplang.c:249 dropuser.c:169 reindexdb.c:410 vacuumdb.c:997 +#: clusterdb.c:285 createlang.c:248 createuser.c:379 dropdb.c:167 +#: droplang.c:249 dropuser.c:169 reindexdb.c:419 vacuumdb.c:964 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password 암호 프롬프트 표시 안 함\n" -#: clusterdb.c:278 createlang.c:249 createuser.c:379 dropdb.c:168 -#: droplang.c:250 dropuser.c:170 reindexdb.c:411 vacuumdb.c:998 +#: clusterdb.c:286 createlang.c:249 createuser.c:380 dropdb.c:168 +#: droplang.c:250 dropuser.c:170 reindexdb.c:420 vacuumdb.c:965 #, c-format msgid " -W, --password force password prompt\n" msgstr " -W, --password 암호 프롬프트 표시함\n" -#: clusterdb.c:279 dropdb.c:169 reindexdb.c:412 vacuumdb.c:999 +#: clusterdb.c:287 dropdb.c:169 reindexdb.c:421 vacuumdb.c:966 #, c-format msgid " --maintenance-db=DBNAME alternate maintenance database\n" msgstr " --maintenance-db=DBNAME 대체용 관리 ëŒ€ìƒ ë°ì´í„°ë² ì´ìФ\n" -#: clusterdb.c:280 +#: clusterdb.c:288 #, c-format msgid "" "\n" @@ -215,9 +241,9 @@ msgstr "" "\n" "보다 ìžì„¸í•œ ë‚´ìš©ì€ CLUSTER SQL 명령어 설명서를 참조하십시오.\n" -#: clusterdb.c:281 createdb.c:273 createlang.c:250 createuser.c:380 -#: dropdb.c:170 droplang.c:251 dropuser.c:171 pg_isready.c:236 reindexdb.c:414 -#: vacuumdb.c:1001 +#: clusterdb.c:289 createdb.c:273 createlang.c:250 createuser.c:381 +#: dropdb.c:170 droplang.c:251 dropuser.c:171 pg_isready.c:236 reindexdb.c:423 +#: vacuumdb.c:968 #, c-format msgid "" "\n" @@ -226,58 +252,58 @@ msgstr "" "\n" "오류보고: .\n" -#: common.c:73 common.c:123 +#: common.c:82 common.c:128 msgid "Password: " msgstr "암호:" -#: common.c:105 +#: common.c:113 #, c-format msgid "%s: could not connect to database %s: out of memory\n" msgstr "%s: %s ë°ì´í„°ë² ì´ìŠ¤ì— ì—°ê²° í•  수 ì—†ìŒ: 메모리 부족\n" -#: common.c:139 +#: common.c:141 #, c-format msgid "%s: could not connect to database %s: %s" msgstr "%s: %s ë°ì´í„°ë² ì´ìŠ¤ì— ì—°ê²° í•  수 ì—†ìŒ: %s" -#: common.c:188 common.c:216 +#: common.c:190 common.c:218 #, c-format msgid "%s: query failed: %s" msgstr "%s: 쿼리 실패: %s" -#: common.c:190 common.c:218 +#: common.c:192 common.c:220 #, c-format msgid "%s: query was: %s\n" msgstr "%s: ì‚¬ìš©ëœ ì¿¼ë¦¬: %s\n" #. translator: abbreviation for "yes" -#: common.c:259 +#: common.c:261 msgid "y" msgstr "y" #. translator: abbreviation for "no" -#: common.c:261 +#: common.c:263 msgid "n" msgstr "n" #. translator: This is a question followed by the translated options for #. "yes" and "no". -#: common.c:271 +#: common.c:273 #, c-format msgid "%s (%s/%s) " msgstr "%s (%s/%s) " -#: common.c:292 +#: common.c:294 #, c-format msgid "Please answer \"%s\" or \"%s\".\n" msgstr "\"%s\" ë˜ëŠ” \"%s\" ë§Œ 허용합니다.\n" -#: common.c:371 common.c:408 +#: common.c:373 common.c:410 #, c-format msgid "Cancel request sent\n" msgstr "취소 ìš”ì²­ì„ ì „ì†¡í•¨\n" -#: common.c:374 common.c:412 +#: common.c:376 common.c:414 #, c-format msgid "Could not send cancel request: %s" msgstr "취소 ìš”ì²­ì„ ì „ì†¡í•  수 ì—†ìŒ: %s" @@ -440,7 +466,7 @@ msgstr "프로시쥬얼 언어들" msgid "%s: missing required argument language name\n" msgstr "%s: 필수 항목ì¸, 언어 ì´ë¦„ì„ ì§€ì •í•  ì¸ìˆ˜ê°€ 빠졌습니다\n" -#: createlang.c:197 +#: createlang.c:196 #, c-format msgid "%s: language \"%s\" is already installed in database \"%s\"\n" msgstr "%s: \"%s\" 언어는 ì´ë¯¸ \"%s\" ë°ì´í„°ë² ì´ìŠ¤ì— ì„¤ì¹˜ë˜ì–´ 있습니다.\n" @@ -475,46 +501,46 @@ msgid "" " -l, --list show a list of currently installed languages\n" msgstr " -l, --list 현재 설치 ë˜ì–´ìžˆëŠ” ì–¸ì–´ë“¤ì„ ë³´ì—¬ì¤Œ\n" -#: createuser.c:190 +#: createuser.c:191 msgid "Enter name of role to add: " msgstr "추가할 새 롤(role)ì´ë¦„: " -#: createuser.c:205 +#: createuser.c:206 msgid "Enter password for new role: " msgstr "새 ë¡¤ì˜ ì•”í˜¸: " -#: createuser.c:206 +#: createuser.c:207 msgid "Enter it again: " msgstr "암호 확ì¸: " -#: createuser.c:209 +#: createuser.c:210 #, c-format msgid "Passwords didn't match.\n" msgstr "암호가 서로 틀림.\n" -#: createuser.c:218 +#: createuser.c:219 msgid "Shall the new role be a superuser?" msgstr "새 ë¡¤ì„ superuser 권한으로 지정할까요?" -#: createuser.c:233 +#: createuser.c:234 msgid "Shall the new role be allowed to create databases?" msgstr "ì´ ìƒˆ 롤ì—게 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 만들 수 있는 ê¶Œí• ì„ ì¤„ê¹Œìš”?" -#: createuser.c:241 +#: createuser.c:242 msgid "Shall the new role be allowed to create more new roles?" msgstr "ì´ ìƒˆ 롤ì—게 ë˜ ë‹¤ë¥¸ ë¡¤ì„ ë§Œë“¤ 수 있는 ê¶Œí•œì„ ì¤„ê¹Œìš”?" -#: createuser.c:275 +#: createuser.c:276 #, c-format msgid "Password encryption failed.\n" msgstr "암호 암호화 실패.\n" -#: createuser.c:332 +#: createuser.c:333 #, c-format msgid "%s: creation of new role failed: %s" msgstr "%s: 새 롤 만들기 실패: %s" -#: createuser.c:347 +#: createuser.c:348 #, c-format msgid "" "%s creates a new PostgreSQL role.\n" @@ -523,38 +549,39 @@ msgstr "" "%s í”„ë¡œê·¸ëž¨ì€ PostgreSQL ë¡¤ì„ ë§Œë“­ë‹ˆë‹¤.\n" "\n" -#: createuser.c:349 dropuser.c:157 +#: createuser.c:350 dropuser.c:157 #, c-format msgid " %s [OPTION]... [ROLENAME]\n" msgstr " %s [옵션]... [롤ì´ë¦„]\n" -#: createuser.c:351 +#: createuser.c:352 #, c-format msgid "" " -c, --connection-limit=N connection limit for role (default: no limit)\n" msgstr " -c, --connection-limit=N ì—°ê²° 제한 수 (초기값: 무제한)\n" -#: createuser.c:352 +#: createuser.c:353 #, c-format msgid " -d, --createdb role can create new databases\n" msgstr " -d, --createdb 새 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 만들 수 있ìŒ\n" -#: createuser.c:353 +#: createuser.c:354 #, c-format msgid " -D, --no-createdb role cannot create databases (default)\n" -msgstr " -D, --no-createdb ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 만들 수 있는 권한 ì—†ìŒ (초기값)\n" +msgstr "" +" -D, --no-createdb ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 만들 수 있는 권한 ì—†ìŒ (초기값)\n" -#: createuser.c:355 +#: createuser.c:356 #, c-format msgid " -E, --encrypted encrypt stored password\n" msgstr " -E, --encrypted ì•”í˜¸í™”ëœ ì•”í˜¸ 사용\n" -#: createuser.c:356 +#: createuser.c:357 #, c-format msgid " -g, --role=ROLE new role will be a member of this role\n" msgstr " -g, --role=ROLE 만들어지는 ë¡¤ì´ ì´ ë¡¤ì˜ êµ¬ì„±ì›ì´ ë¨\n" -#: createuser.c:357 +#: createuser.c:358 #, c-format msgid "" " -i, --inherit role inherits privileges of roles it is a\n" @@ -563,52 +590,52 @@ msgstr "" " -i, --inherit ë¡¤ì˜ ê¶Œí•œì„ ìƒì†í•  수 있ìŒ\n" " (초기값)\n" -#: createuser.c:359 +#: createuser.c:360 #, c-format msgid " -I, --no-inherit role does not inherit privileges\n" msgstr " -I, --no-inherit ì´ ë¡¤ì˜ ê¶Œí•œì„ ìƒì†í•  수 ì—†ìŒ\n" -#: createuser.c:360 +#: createuser.c:361 #, c-format msgid " -l, --login role can login (default)\n" msgstr " -l, --login ë¡œê·¸ì¸ í—ˆìš© (초기값)\n" -#: createuser.c:361 +#: createuser.c:362 #, c-format msgid " -L, --no-login role cannot login\n" msgstr " -L, --no-login ë¡œê·¸ì¸ í•  수 ì—†ìŒ\n" -#: createuser.c:362 +#: createuser.c:363 #, c-format msgid " -N, --unencrypted do not encrypt stored password\n" msgstr " -N, --unencrypted 암호화 ë˜ì§€ ì•Šì€ ì•”í˜¸ 사용\n" -#: createuser.c:363 +#: createuser.c:364 #, c-format msgid " -P, --pwprompt assign a password to new role\n" msgstr " -P, --pwprompt 새 ë¡¤ì˜ ì•”í˜¸ 지정\n" -#: createuser.c:364 +#: createuser.c:365 #, c-format msgid " -r, --createrole role can create new roles\n" msgstr " -r, --createrole 새 ë¡¤ì„ ë§Œë“¤ 수 있ìŒ\n" -#: createuser.c:365 +#: createuser.c:366 #, c-format msgid " -R, --no-createrole role cannot create roles (default)\n" msgstr " -R, --no-createrole 롤 만들 수 있는 권한 ì—†ìŒ (초기값)\n" -#: createuser.c:366 +#: createuser.c:367 #, c-format msgid " -s, --superuser role will be superuser\n" msgstr " -s, --superuser superuser 권한으로 지정\n" -#: createuser.c:367 +#: createuser.c:368 #, c-format msgid " -S, --no-superuser role will not be superuser (default)\n" msgstr " -S, --no-superuser 슈í¼ìœ ì € 권한 ì—†ìŒ (초기값)\n" -#: createuser.c:369 +#: createuser.c:370 #, c-format msgid "" " --interactive prompt for missing role name and attributes " @@ -618,17 +645,17 @@ msgstr "" " --interactive 롤 ì´ë¦„ê³¼ ì†ì„±ì„ ì´ˆê¸°ê°’ì„ ì“°ì§€ 않고\n" " ê°ê° ì§ì ‘ ìž…ë ¥ ì„ íƒ í•¨\n" -#: createuser.c:371 +#: createuser.c:372 #, c-format msgid " --replication role can initiate replication\n" msgstr " --replication 복제 기능 ì´ìš©í•  수 있는 롤\n" -#: createuser.c:372 +#: createuser.c:373 #, c-format msgid " --no-replication role cannot initiate replication\n" msgstr " --no-replication 복제 ê¸°ëŠ¥ì„ ì´ìš©í•  수 ì—†ìŒ\n" -#: createuser.c:377 +#: createuser.c:378 #, c-format msgid "" " -U, --username=USERNAME user name to connect as (not the one to create)\n" @@ -681,7 +708,7 @@ msgid "" msgstr "" " --if-exists 해당 ë°ì´í„°ë² ì´ìŠ¤ê°€ ì—†ì–´ë„ ì˜¤ë¥˜ë¥¼ 보고하지 않ìŒ\n" -#: droplang.c:203 +#: droplang.c:202 #, c-format msgid "%s: language \"%s\" is not installed in database \"%s\"\n" msgstr "%s: \"%s\" 언어는 \"%s\" ë°ì´í„°ë² ì´ìŠ¤ì— ì„¤ì¹˜ ë˜ì–´ìžˆì§€ 않습니다\n" @@ -777,12 +804,12 @@ msgstr "ì ‘ì†ì„ 거절하는 중\n" #: pg_isready.c:205 #, c-format msgid "no response\n" -msgstr "" +msgstr "ì‘답 ì—†ìŒ\n" #: pg_isready.c:208 #, c-format msgid "no attempt\n" -msgstr "" +msgstr "ì‹œë„ ì—†ìŒ\n" #: pg_isready.c:211 #, c-format @@ -836,103 +863,103 @@ msgstr " -p, --port=PORT ë°ì´í„°ë² ì´ìФ 서버 í¬íЏ\n" #: pg_isready.c:234 #, c-format -msgid "" -" -t, --timeout=SECS seconds to wait when attempting connection, 0 " -"disables (default: %s)\n" +msgid " -t, --timeout=SECS seconds to wait when attempting connection, " +"0 disables (default: %s)\n" msgstr "" +" -t, --timeout=ì´ˆ ì—°ê²° 제한 시간, 0 무제한 (초기값: %s)\n" #: pg_isready.c:235 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=USERNAME ì ‘ì†í•  사용ìžì´ë¦„\n" -#: reindexdb.c:159 +#: reindexdb.c:160 #, c-format msgid "%s: cannot reindex all databases and a specific one at the same time\n" msgstr "" "%s: 모든 ë°ì´í„°ë² ì´ìФ ìž¬ìƒ‰ì¸ ìž‘ì—…ê³¼ 특정 ë°ì´í„°ë² ì´ìФ ìž¬ìƒ‰ì¸ ìž‘ì—…ì€ ë™ì‹œì— ì§„" "행할 수 없습니다\n" -#: reindexdb.c:164 +#: reindexdb.c:165 #, c-format msgid "%s: cannot reindex all databases and system catalogs at the same time\n" msgstr "" "%s: 모든 ë°ì´í„°ë² ì´ìФ ìž¬ìƒ‰ì¸ ìž‘ì—…ê³¼ 시스템 카탈로그 ìž¬ìƒ‰ì¸ ìž‘ì—…ì€ ë™ì‹œì— ì§„í–‰" "í•  수 없습니다\n" -#: reindexdb.c:169 +#: reindexdb.c:170 #, c-format msgid "%s: cannot reindex specific schema(s) in all databases\n" msgstr "" -"%s: 모든 ë°ì´í„°ë² ì´ìФ ìž¬ìƒ‰ì¸ ìž‘ì—…ì—서 특정 ìŠ¤í‚¤ë§ˆë“¤ì˜ ìž¬ìƒ‰ì¸ ìž‘ì—…ì„ ì§€ì •í•  수 " -"없습니다\n" +"%s: 모든 ë°ì´í„°ë² ì´ìФ ìž¬ìƒ‰ì¸ ìž‘ì—…ì—서 특정 ìŠ¤í‚¤ë§ˆë“¤ì˜ ìž¬ìƒ‰ì¸ ìž‘ì—…ì„ ì§€ì •í•  " +"수 없습니다\n" -#: reindexdb.c:174 +#: reindexdb.c:175 #, c-format msgid "%s: cannot reindex specific table(s) in all databases\n" msgstr "" "%s: 모든 ë°ì´í„°ë² ì´ìФ ìž¬ìƒ‰ì¸ ìž‘ì—…ì—서 특정 í…Œì´ë¸”ì˜ ìž¬ìƒ‰ì¸ ìž‘ì—…ì„ ì§€ì •í•  수 " "없습니다\n" -#: reindexdb.c:179 +#: reindexdb.c:180 #, c-format msgid "%s: cannot reindex specific index(es) in all databases\n" msgstr "" "%s: 모든 ë°ì´í„°ë² ì´ìФ ìž¬ìƒ‰ì¸ ìž‘ì—…ì—서 특정 ì¸ë±ìФ ìž¬ìƒ‰ì¸ ìž‘ì—…ì„ ì§€ì •í•  수 ì—†" "습니다\n" -#: reindexdb.c:190 +#: reindexdb.c:191 #, c-format msgid "" "%s: cannot reindex specific schema(s) and system catalogs at the same time\n" msgstr "" "%s: 특정 스키마와 시스템 카탈로그 ìž¬ìƒ‰ì¸ ìž‘ì—…ì€ ë™ì‹œì— 진행할 수 없습니다\n" -#: reindexdb.c:195 +#: reindexdb.c:196 #, c-format msgid "" "%s: cannot reindex specific table(s) and system catalogs at the same time\n" msgstr "" "%s: 특정 í…Œì´ë¸”ê³¼ 시스템 카탈로그 ìž¬ìƒ‰ì¸ ìž‘ì—…ì€ ë™ì‹œì— 진행할 수 없습니다\n" -#: reindexdb.c:200 +#: reindexdb.c:201 #, c-format msgid "" "%s: cannot reindex specific index(es) and system catalogs at the same time\n" msgstr "" "%s: 특정 ì¸ë±ìŠ¤ì™€ 시스템 카탈로그 ìž¬ìƒ‰ì¸ ìž‘ì—…ì€ ë™ì‹œì— 진행할 수 없습니다\n" -#: reindexdb.c:306 +#: reindexdb.c:307 #, c-format msgid "%s: reindexing of table \"%s\" in database \"%s\" failed: %s" msgstr "%s: \"%s\" í…Œì´ë¸”(해당DB: \"%s\") ìž¬ìƒ‰ì¸ ìž‘ì—… 실패: %s" -#: reindexdb.c:309 +#: reindexdb.c:310 #, c-format msgid "%s: reindexing of index \"%s\" in database \"%s\" failed: %s" msgstr "%s: \"%s\" ì¸ë±ìФ(해당DB: \"%s\") ìž¬ìƒ‰ì¸ ìž‘ì—… 실패: %s" -#: reindexdb.c:312 +#: reindexdb.c:313 #, c-format msgid "%s: reindexing of schema \"%s\" in database \"%s\" failed: %s" msgstr "%s: \"%s\" 스키마(해당DB: \"%s\") ìž¬ìƒ‰ì¸ ìž‘ì—… 실패: %s" -#: reindexdb.c:315 +#: reindexdb.c:316 #, c-format msgid "%s: reindexing of database \"%s\" failed: %s" msgstr "%s: \"%s\" ë°ì´í„°ë² ì´ìФ ìž¬ìƒ‰ì¸ ìž‘ì—… 실패: %s" -#: reindexdb.c:346 +#: reindexdb.c:349 #, c-format msgid "%s: reindexing database \"%s\"\n" msgstr "%s: \"%s\" ë°ì´í„°ë² ì´ìФ ìž¬ìƒ‰ì¸ ìž‘ì—… 중\n" -#: reindexdb.c:379 +#: reindexdb.c:388 #, c-format msgid "%s: reindexing of system catalogs failed: %s" msgstr "%s: 시스템 카탈로그 ìž¬ìƒ‰ì¸ ìž‘ì—… 실패: %s" -#: reindexdb.c:391 +#: reindexdb.c:400 #, c-format msgid "" "%s reindexes a PostgreSQL database.\n" @@ -941,37 +968,37 @@ msgstr "" "%s í”„ë¡œê·¸ëž¨ì€ PostgreSQL ë°ì´í„°ë² ì´ìФ ìž¬ìƒ‰ì¸ ìž‘ì—…ì„ í•©ë‹ˆë‹¤.\n" "\n" -#: reindexdb.c:395 +#: reindexdb.c:404 #, c-format msgid " -a, --all reindex all databases\n" msgstr " -a, --all 모든 ë°ì´í„°ë² ì´ìФ 재색ì¸\n" -#: reindexdb.c:396 +#: reindexdb.c:405 #, c-format msgid " -d, --dbname=DBNAME database to reindex\n" msgstr " -d, --dbname=DBNAME 지정한 ë°ì´í„°ë² ì´ìŠ¤ì˜ ìž¬ìƒ‰ì¸ ìž‘ì—…\n" -#: reindexdb.c:398 +#: reindexdb.c:407 #, c-format msgid " -i, --index=INDEX recreate specific index(es) only\n" msgstr " -i, --index=INDEX 지정한 ì¸ë±ìŠ¤ë“¤ë§Œ 다시 만듬\n" -#: reindexdb.c:400 +#: reindexdb.c:409 #, c-format msgid " -s, --system reindex system catalogs\n" msgstr " -s, --system 시스템 카탈로그 재색ì¸\n" -#: reindexdb.c:401 +#: reindexdb.c:410 #, c-format msgid " -S, --schema=SCHEMA reindex specific schema(s) only\n" msgstr " -S, --schema=SCHEMA 지정한 스키마들 ìžë£Œë§Œ ë¤í”„\n" -#: reindexdb.c:402 +#: reindexdb.c:411 #, c-format msgid " -t, --table=TABLE reindex specific table(s) only\n" msgstr " -t, --table=TABLE 지정한 í…Œì´ë¸”들만 ìž¬ìƒ‰ì¸ ìž‘ì—…\n" -#: reindexdb.c:413 +#: reindexdb.c:422 #, c-format msgid "" "\n" @@ -980,66 +1007,71 @@ msgstr "" "\n" "보다 ìžì„¸í•œ ë‚´ìš©ì€ REINDEX SQL 명령어 설명서를 참조하십시오.\n" -#: vacuumdb.c:191 +#: vacuumdb.c:189 #, c-format msgid "%s: number of parallel jobs must be at least 1\n" msgstr "%s: 병렬 작업 숫ìžëŠ” 최소 1ì´ì–´ì•¼ 함\n" -#: vacuumdb.c:197 +#: vacuumdb.c:195 #, c-format msgid "%s: too many parallel jobs requested (maximum: %d)\n" -msgstr "" +msgstr "%s: 너무 ë§Žì€ ë³‘ë ¬ 작업 요청 (최대: %d)\n" -#: vacuumdb.c:236 vacuumdb.c:242 +#: vacuumdb.c:234 vacuumdb.c:240 #, c-format msgid "%s: cannot use the \"%s\" option when performing only analyze\n" -msgstr "" +msgstr "%s: 통계 수집 ì „ìš© 작업ì—서는 \"%s\" ì˜µì…˜ì„ ì‚¬ìš©í•  수 ì—†ìŒ\n" -#: vacuumdb.c:259 +#: vacuumdb.c:257 #, c-format msgid "%s: cannot vacuum all databases and a specific one at the same time\n" msgstr "" "%s: -a ì˜µì…˜ì´ ìžˆì„ ê²½ìš°ëŠ” 한 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 대ìƒìœ¼ë¡œ ìž‘ì—…ì„ ì§„í–‰í•  수 없습니" "다.\n" -#: vacuumdb.c:265 +#: vacuumdb.c:263 #, c-format msgid "%s: cannot vacuum specific table(s) in all databases\n" msgstr "%s: 모든 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 대ìƒìœ¼ë¡œ 특정 í…Œì´ë¸”ë“¤ì„ ì²­ì†Œí•  수는 ì—†ìŒ\n" -#: vacuumdb.c:363 +#: vacuumdb.c:349 msgid "Generating minimal optimizer statistics (1 target)" -msgstr "" +msgstr "최소 최ì í™” 통계 수집 수행 중 (1% 대ìƒ)" -#: vacuumdb.c:364 +#: vacuumdb.c:350 msgid "Generating medium optimizer statistics (10 targets)" -msgstr "" +msgstr "ì¼ë°˜ 최ì í™” 통계 수집 수행 중 (10% 대ìƒ)" -#: vacuumdb.c:365 +#: vacuumdb.c:351 msgid "Generating default (full) optimizer statistics" -msgstr "" +msgstr "최대 최ì í™” 통계 수집 수행중 (모든 ìžë£Œ 대ìƒ)" -#: vacuumdb.c:374 +#: vacuumdb.c:363 #, c-format msgid "%s: processing database \"%s\": %s\n" msgstr "%s: \"%s\" ë°ì´í„°ë² ì´ìФ 작업 중: %s\n" -#: vacuumdb.c:377 +#: vacuumdb.c:366 #, c-format msgid "%s: vacuuming database \"%s\"\n" msgstr "%s: \"%s\" ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 청소 중\n" -#: vacuumdb.c:738 +#: vacuumdb.c:698 #, c-format msgid "%s: vacuuming of table \"%s\" in database \"%s\" failed: %s" msgstr "%s: \"%s\" í…Œì´ë¸” (해당 DB: \"%s\") 청소하기 실패: %s" -#: vacuumdb.c:741 vacuumdb.c:858 +#: vacuumdb.c:701 vacuumdb.c:818 #, c-format msgid "%s: vacuuming of database \"%s\" failed: %s" msgstr "%s: \"%s\" ë°ì´í„°ë² ì´ìФ 청소하기 실패: %s" -#: vacuumdb.c:974 +#: vacuumdb.c:932 +#, c-format +msgid "%s: invalid socket: %s" +msgstr "%s: ìž˜ëª»ëœ ì†Œì¼“: %s" + +#: vacuumdb.c:941 #, c-format msgid "" "%s cleans and analyzes a PostgreSQL database.\n" @@ -1049,34 +1081,34 @@ msgstr "" "퀴리 최ì í™”ê¸°ì˜ ì°¸ê³  ìžë£Œë¥¼ 갱신합니다.\n" "\n" -#: vacuumdb.c:978 +#: vacuumdb.c:945 #, c-format msgid " -a, --all vacuum all databases\n" msgstr " -a, --all 모든 ë°ì´í„°ë² ì´ìФ 청소\n" -#: vacuumdb.c:979 +#: vacuumdb.c:946 #, c-format msgid " -d, --dbname=DBNAME database to vacuum\n" msgstr " -d, --dbname=DBNAME DBNAME ë°ì´í„°ë² ì´ìФ 청소\n" -#: vacuumdb.c:980 +#: vacuumdb.c:947 #, c-format msgid "" " -e, --echo show the commands being sent to the " "server\n" msgstr " -e, --echo 서버로 보내는 ëª…ë ¹ë“¤ì„ ë³´ì—¬ì¤Œ\n" -#: vacuumdb.c:981 +#: vacuumdb.c:948 #, c-format msgid " -f, --full do full vacuuming\n" msgstr " -f, --full 대청소\n" -#: vacuumdb.c:982 +#: vacuumdb.c:949 #, c-format msgid " -F, --freeze freeze row transaction information\n" msgstr " -F, --freeze í–‰ 트랜잭션 ì •ë³´ ë™ê²°\n" -#: vacuumdb.c:983 +#: vacuumdb.c:950 #, c-format msgid "" " -j, --jobs=NUM use this many concurrent connections to " @@ -1084,55 +1116,57 @@ msgid "" msgstr "" " -j, --jobs=NUM 청소 ìž‘ì—…ì„ ì—¬ëŸ¬ê°œì˜ ì—°ê²°ë¡œ ë™ì‹œì— 작업함\n" -#: vacuumdb.c:984 +#: vacuumdb.c:951 #, c-format msgid " -q, --quiet don't write any messages\n" msgstr " -q, --quiet 어떠한 ë©”ì‹œì§€ë„ ë³´ì—¬ì£¼ì§€ 않ìŒ\n" -#: vacuumdb.c:985 +#: vacuumdb.c:952 #, c-format msgid " -t, --table='TABLE[(COLUMNS)]' vacuum specific table(s) only\n" msgstr " -t, --table='TABLE[(COLUMNS)]' 지정한 특정 í…Œì´ë¸”들만 청소\n" -#: vacuumdb.c:986 +#: vacuumdb.c:953 #, c-format msgid " -v, --verbose write a lot of output\n" msgstr " -v, --verbose ìž‘ì—…ë‚´ì—­ì˜ ìžì„¸í•œ 출력\n" -#: vacuumdb.c:987 +#: vacuumdb.c:954 #, c-format msgid "" " -V, --version output version information, then exit\n" -msgstr "" -" -V, --version 버전 정보를 보여주고 마침\n" +msgstr " -V, --version 버전 정보를 보여주고 마침\n" -#: vacuumdb.c:988 +#: vacuumdb.c:955 #, c-format msgid " -z, --analyze update optimizer statistics\n" msgstr " -z, --analyze 쿼리최ì í™” 통계 정보를 갱신함\n" -#: vacuumdb.c:989 +#: vacuumdb.c:956 #, c-format msgid "" " -Z, --analyze-only only update optimizer statistics; no " "vacuum\n" msgstr "" -" -Z, --analyze-only 청소 작업 ì—†ì´ ì¿¼ë¦¬ìµœì í™” 통계 ì •ë³´ë§Œ 갱신함\n" +" -Z, --analyze-only 청소 작업 ì—†ì´ ì¿¼ë¦¬ìµœì í™” 통계 ì •ë³´ë§Œ 갱신" +"함\n" -#: vacuumdb.c:990 +#: vacuumdb.c:957 #, c-format msgid "" " --analyze-in-stages only update optimizer statistics, in " "multiple\n" " stages for faster results; no vacuum\n" msgstr "" +" --analyze-in-stages 보다 빠른 결과를 위해 다중 스테ì´ì§€ì—서" +" 최ì í™” 통계치만 갱신함;청소 안함\n" -#: vacuumdb.c:992 +#: vacuumdb.c:959 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help ì´ ë„움ë§ì„ 표시하고 종료\n" -#: vacuumdb.c:1000 +#: vacuumdb.c:967 #, c-format msgid "" "\n" @@ -1140,4 +1174,3 @@ msgid "" msgstr "" "\n" "보다 ìžì„¸í•œ ë‚´ìš©ì€ VACUUM SQL 명령어 설명서를 참조하십시오.\n" - diff --git a/src/bin/scripts/po/ru.po b/src/bin/scripts/po/ru.po index 3e162776b2..d8a146482d 100644 --- a/src/bin/scripts/po/ru.po +++ b/src/bin/scripts/po/ru.po @@ -3,14 +3,14 @@ # This file is distributed under the same license as the PostgreSQL package. # Serguei A. Mokhov, , 2003-2004. # Oleg Bartunov , 2004. -# Alexander Lakhin , 2012-2016. +# Alexander Lakhin , 2012-2017. # msgid "" msgstr "" "Project-Id-Version: pgscripts (PostgreSQL current)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-09-20 18:14+0000\n" -"PO-Revision-Date: 2016-09-20 12:00+0300\n" +"POT-Creation-Date: 2017-02-01 23:13+0000\n" +"PO-Revision-Date: 2016-11-24 14:26+0300\n" "Last-Translator: Alexander Lakhin \n" "Language-Team: Russian \n" "Language: ru\n" @@ -53,26 +53,26 @@ msgstr[0] "(%lu Ñтрока)" msgstr[1] "(%lu Ñтроки)" msgstr[2] "(%lu Ñтрок)" -#: ../../fe_utils/print.c:2906 +#: ../../fe_utils/print.c:2914 #, c-format msgid "Interrupted\n" msgstr "Прерывание\n" -#: ../../fe_utils/print.c:2970 +#: ../../fe_utils/print.c:2978 #, c-format msgid "Cannot add header to table content: column count of %d exceeded.\n" msgstr "" "Добавить заголовок к Ñодержимому таблицы нельзÑ: чиÑло Ñтолбцов превышает " "%d.\n" -#: ../../fe_utils/print.c:3010 +#: ../../fe_utils/print.c:3018 #, c-format msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" msgstr "" "Добавить Ñчейку к Ñодержимому таблицы нельзÑ: общее чиÑло Ñчеек превышает " "%d.\n" -#: ../../fe_utils/print.c:3259 +#: ../../fe_utils/print.c:3267 #, c-format msgid "invalid output format (internal error): %d" msgstr "неверный формат вывода (внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°): %d" @@ -82,14 +82,14 @@ msgstr "неверный формат вывода (внутреннÑÑ Ð¾ÑˆÐ¸ #: createuser.c:184 dropdb.c:94 dropdb.c:103 dropdb.c:111 droplang.c:88 #: droplang.c:118 droplang.c:174 dropuser.c:89 dropuser.c:104 dropuser.c:115 #: pg_isready.c:93 pg_isready.c:107 reindexdb.c:131 reindexdb.c:150 -#: vacuumdb.c:207 vacuumdb.c:226 +#: vacuumdb.c:211 vacuumdb.c:230 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Ð”Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации попробуйте \"%s --help\".\n" #: clusterdb.c:128 createdb.c:136 createlang.c:117 createuser.c:182 #: dropdb.c:109 droplang.c:116 dropuser.c:102 pg_isready.c:105 reindexdb.c:148 -#: vacuumdb.c:224 +#: vacuumdb.c:228 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: Ñлишком много аргументов командной Ñтроки (первый: \"%s\")\n" @@ -102,7 +102,7 @@ msgstr "%s: Ð½ÐµÐ»ÑŒÐ·Ñ ÐºÐ»Ð°Ñтеризовать вÑе базы и одн #: clusterdb.c:147 #, c-format msgid "%s: cannot cluster specific table(s) in all databases\n" -msgstr "%s: Ð½ÐµÐ»ÑŒÐ·Ñ ÐºÐ»Ð°Ñтеризовать указанную таблицу(Ñ‹) во вÑех базах\n" +msgstr "%s: Ð½ÐµÐ»ÑŒÐ·Ñ ÐºÐ»Ð°Ñтеризовать указанную таблицу(Ñ‹) во вÑех базах\n" #: clusterdb.c:212 #, c-format @@ -130,19 +130,19 @@ msgstr "" #: clusterdb.c:270 createdb.c:252 createlang.c:236 createuser.c:349 #: dropdb.c:155 droplang.c:237 dropuser.c:156 pg_isready.c:222 reindexdb.c:401 -#: vacuumdb.c:942 +#: vacuumdb.c:946 #, c-format msgid "Usage:\n" msgstr "ИÑпользование:\n" -#: clusterdb.c:271 reindexdb.c:402 vacuumdb.c:943 +#: clusterdb.c:271 reindexdb.c:402 vacuumdb.c:947 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [ПÐРÐМЕТР]... [ИМЯ_БД]\n" #: clusterdb.c:272 createdb.c:254 createlang.c:238 createuser.c:351 #: dropdb.c:157 droplang.c:239 dropuser.c:158 pg_isready.c:225 reindexdb.c:403 -#: vacuumdb.c:944 +#: vacuumdb.c:948 #, c-format msgid "" "\n" @@ -198,7 +198,7 @@ msgstr " -?, --help показать Ñту Ñправку и в #: clusterdb.c:281 createdb.c:265 createlang.c:244 createuser.c:375 #: dropdb.c:163 droplang.c:245 dropuser.c:165 pg_isready.c:231 reindexdb.c:415 -#: vacuumdb.c:960 +#: vacuumdb.c:964 #, c-format msgid "" "\n" @@ -208,38 +208,38 @@ msgstr "" "Параметры подключениÑ:\n" #: clusterdb.c:282 createlang.c:245 createuser.c:376 dropdb.c:164 -#: droplang.c:246 dropuser.c:166 reindexdb.c:416 vacuumdb.c:961 +#: droplang.c:246 dropuser.c:166 reindexdb.c:416 vacuumdb.c:965 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" " -h, --host=ИМЯ Ð¸Ð¼Ñ Ñервера баз данных или каталог Ñокетов\n" #: clusterdb.c:283 createlang.c:246 createuser.c:377 dropdb.c:165 -#: droplang.c:247 dropuser.c:167 reindexdb.c:417 vacuumdb.c:962 +#: droplang.c:247 dropuser.c:167 reindexdb.c:417 vacuumdb.c:966 #, c-format msgid " -p, --port=PORT database server port\n" msgstr " -p, --port=ПОРТ порт Ñервера баз данных\n" #: clusterdb.c:284 createlang.c:247 dropdb.c:166 droplang.c:248 reindexdb.c:418 -#: vacuumdb.c:963 +#: vacuumdb.c:967 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr "" " -U, --username=ИМЯ Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº Ñерверу\n" #: clusterdb.c:285 createlang.c:248 createuser.c:379 dropdb.c:167 -#: droplang.c:249 dropuser.c:169 reindexdb.c:419 vacuumdb.c:964 +#: droplang.c:249 dropuser.c:169 reindexdb.c:419 vacuumdb.c:968 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password не запрашивать пароль\n" #: clusterdb.c:286 createlang.c:249 createuser.c:380 dropdb.c:168 -#: droplang.c:250 dropuser.c:170 reindexdb.c:420 vacuumdb.c:965 +#: droplang.c:250 dropuser.c:170 reindexdb.c:420 vacuumdb.c:969 #, c-format msgid " -W, --password force password prompt\n" msgstr " -W, --password запроÑить пароль\n" -#: clusterdb.c:287 dropdb.c:169 reindexdb.c:421 vacuumdb.c:966 +#: clusterdb.c:287 dropdb.c:169 reindexdb.c:421 vacuumdb.c:970 #, c-format msgid " --maintenance-db=DBNAME alternate maintenance database\n" msgstr " --maintenance-db=ИМЯ_БД выбор другой обÑлуживаемой базы данных\n" @@ -255,7 +255,7 @@ msgstr "" #: clusterdb.c:289 createdb.c:273 createlang.c:250 createuser.c:381 #: dropdb.c:170 droplang.c:251 dropuser.c:171 pg_isready.c:236 reindexdb.c:423 -#: vacuumdb.c:968 +#: vacuumdb.c:972 #, c-format msgid "" "\n" @@ -359,6 +359,7 @@ msgstr "" msgid " %s [OPTION]... [DBNAME] [DESCRIPTION]\n" msgstr " %s [ПÐРÐМЕТР]... [ИМЯ_БД] [ОПИСÐÐИЕ]\n" +# well-spelled: ПРОСТР #: createdb.c:255 #, c-format msgid " -D, --tablespace=TABLESPACE default tablespace for the database\n" @@ -1037,70 +1038,70 @@ msgstr "" "\n" "Подробнее о переиндекÑации вы можете узнать в опиÑании SQL-команды REINDEX.\n" -#: vacuumdb.c:189 +#: vacuumdb.c:193 #, c-format msgid "%s: number of parallel jobs must be at least 1\n" msgstr "%s: чиÑло параллельных заданий должно быть не меньше 1\n" -#: vacuumdb.c:195 +#: vacuumdb.c:199 #, c-format msgid "%s: too many parallel jobs requested (maximum: %d)\n" msgstr "%s: запрошено Ñлишком много параллельных заданий (при макÑимуме: %d)\n" -#: vacuumdb.c:234 vacuumdb.c:240 +#: vacuumdb.c:238 vacuumdb.c:244 #, c-format msgid "%s: cannot use the \"%s\" option when performing only analyze\n" msgstr "" "%s: при выполнении только анализа Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать параметр \"%s\"\n" -#: vacuumdb.c:257 +#: vacuumdb.c:261 #, c-format msgid "%s: cannot vacuum all databases and a specific one at the same time\n" msgstr "%s: Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‡Ð¸Ñтить вÑе базы данных и одну конкретную одновременно\n" -#: vacuumdb.c:263 +#: vacuumdb.c:267 #, c-format msgid "%s: cannot vacuum specific table(s) in all databases\n" msgstr "%s: Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‡Ð¸Ñтить одну указанную таблицу(Ñ‹) во вÑех базах\n" -#: vacuumdb.c:349 +#: vacuumdb.c:353 msgid "Generating minimal optimizer statistics (1 target)" msgstr "ВычиÑление минимальной ÑтатиÑтики Ð´Ð»Ñ Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ‚Ð¾Ñ€Ð° (1 запиÑÑŒ)" -#: vacuumdb.c:350 +#: vacuumdb.c:354 msgid "Generating medium optimizer statistics (10 targets)" msgstr "ВычиÑление Ñредней ÑтатиÑтики Ð´Ð»Ñ Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ‚Ð¾Ñ€Ð° (10 запиÑей)" -#: vacuumdb.c:351 +#: vacuumdb.c:355 msgid "Generating default (full) optimizer statistics" msgstr "ВычиÑление Ñтандартной (полной) ÑтатиÑтики Ð´Ð»Ñ Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ‚Ð¾Ñ€Ð°" -#: vacuumdb.c:363 +#: vacuumdb.c:367 #, c-format msgid "%s: processing database \"%s\": %s\n" msgstr "%s: обработка базы данных \"%s\": %s\n" -#: vacuumdb.c:366 +#: vacuumdb.c:370 #, c-format msgid "%s: vacuuming database \"%s\"\n" msgstr "%s: очиÑтка базы данных \"%s\"\n" -#: vacuumdb.c:698 +#: vacuumdb.c:702 #, c-format msgid "%s: vacuuming of table \"%s\" in database \"%s\" failed: %s" msgstr "%s: очиÑтить таблицу \"%s\" в базе \"%s\" не удалоÑÑŒ: %s" -#: vacuumdb.c:701 vacuumdb.c:818 +#: vacuumdb.c:705 vacuumdb.c:822 #, c-format msgid "%s: vacuuming of database \"%s\" failed: %s" msgstr "%s: очиÑтить базу данных \"%s\" не удалоÑÑŒ: %s" -#: vacuumdb.c:932 +#: vacuumdb.c:936 #, c-format msgid "%s: invalid socket: %s" msgstr "%s: неверный Ñокет: %s" -#: vacuumdb.c:941 +#: vacuumdb.c:945 #, c-format msgid "" "%s cleans and analyzes a PostgreSQL database.\n" @@ -1109,17 +1110,17 @@ msgstr "" "%s очищает и анализирует базу данных PostgreSQL.\n" "\n" -#: vacuumdb.c:945 +#: vacuumdb.c:949 #, c-format msgid " -a, --all vacuum all databases\n" msgstr " -a, --all очиÑтить вÑе базы данных\n" -#: vacuumdb.c:946 +#: vacuumdb.c:950 #, c-format msgid " -d, --dbname=DBNAME database to vacuum\n" msgstr " -d, --dbname=ИМЯ_БД очиÑтить указанную базу данных\n" -#: vacuumdb.c:947 +#: vacuumdb.c:951 #, c-format msgid "" " -e, --echo show the commands being sent to the " @@ -1127,19 +1128,19 @@ msgid "" msgstr "" " -e, --echo отображать команды, отправлÑемые Ñерверу\n" -#: vacuumdb.c:948 +#: vacuumdb.c:952 #, c-format msgid " -f, --full do full vacuuming\n" msgstr " -f, --full произвеÑти полную очиÑтку\n" -#: vacuumdb.c:949 +#: vacuumdb.c:953 #, c-format msgid " -F, --freeze freeze row transaction information\n" msgstr "" " -F, --freeze заморозить информацию о транзакциÑÑ… в " "Ñтроках\n" -#: vacuumdb.c:950 +#: vacuumdb.c:954 #, c-format msgid "" " -j, --jobs=NUM use this many concurrent connections to " @@ -1148,34 +1149,34 @@ msgstr "" " -j, --jobs=ЧИСЛО запуÑкать Ð´Ð»Ñ Ð¾Ñ‡Ð¸Ñтки заданное чиÑло " "заданий\n" -#: vacuumdb.c:951 +#: vacuumdb.c:955 #, c-format msgid " -q, --quiet don't write any messages\n" msgstr " -q, --quiet не выводить ÑообщениÑ\n" -#: vacuumdb.c:952 +#: vacuumdb.c:956 #, c-format msgid " -t, --table='TABLE[(COLUMNS)]' vacuum specific table(s) only\n" msgstr "" " -t, --table='ТÐБЛ[(СТОЛБЦЫ)]' очиÑтить только указанную таблицу(Ñ‹)\n" -#: vacuumdb.c:953 +#: vacuumdb.c:957 #, c-format msgid " -v, --verbose write a lot of output\n" msgstr " -v, --verbose выводить иÑчерпывающие ÑообщениÑ\n" -#: vacuumdb.c:954 +#: vacuumdb.c:958 #, c-format msgid "" " -V, --version output version information, then exit\n" msgstr " -V, --version показать верÑию и выйти\n" -#: vacuumdb.c:955 +#: vacuumdb.c:959 #, c-format msgid " -z, --analyze update optimizer statistics\n" msgstr " -z, --analyze обновить ÑтатиÑтику оптимизатора\n" -#: vacuumdb.c:956 +#: vacuumdb.c:960 #, c-format msgid "" " -Z, --analyze-only only update optimizer statistics; no " @@ -1184,7 +1185,7 @@ msgstr "" " -Z, --analyze-only только обновить ÑтатиÑтику оптимизатора,\n" " не очищать БД\n" -#: vacuumdb.c:957 +#: vacuumdb.c:961 #, c-format msgid "" " --analyze-in-stages only update optimizer statistics, in " @@ -1196,12 +1197,12 @@ msgstr "" " (в неÑколько проходов Ð´Ð»Ñ Ð±Ð¾Ð»ÑŒÑˆÐµÐ¹ " "ÑкороÑти), без очиÑтки\n" -#: vacuumdb.c:959 +#: vacuumdb.c:963 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help показать Ñту Ñправку и выйти\n" -#: vacuumdb.c:967 +#: vacuumdb.c:971 #, c-format msgid "" "\n" diff --git a/src/bin/scripts/vacuumdb.c b/src/bin/scripts/vacuumdb.c index 32cb0fca2f..b85c3088b3 100644 --- a/src/bin/scripts/vacuumdb.c +++ b/src/bin/scripts/vacuumdb.c @@ -854,7 +854,7 @@ DisconnectDatabase(ParallelSlot *slot) if ((cancel = PQgetCancel(slot->connection))) { - PQcancel(cancel, errbuf, sizeof(errbuf)); + (void) PQcancel(cancel, errbuf, sizeof(errbuf)); PQfreeCancel(cancel); } } diff --git a/src/fe_utils/print.c b/src/fe_utils/print.c index 1ec74f1790..daa23d1955 100644 --- a/src/fe_utils/print.c +++ b/src/fe_utils/print.c @@ -2874,10 +2874,18 @@ PageOutput(int lines, const printTableOpt *topt) pagerprog = getenv("PAGER"); if (!pagerprog) pagerprog = DEFAULT_PAGER; + else + { + /* if PAGER is empty or all-white-space, don't use pager */ + if (strspn(pagerprog, " \t\r\n") == strlen(pagerprog)) + return stdout; + } disable_sigpipe_trap(); pagerpipe = popen(pagerprog, "w"); if (pagerpipe) return pagerpipe; + /* if popen fails, silently proceed without pager */ + restore_sigpipe_trap(); } } diff --git a/src/include/access/htup_details.h b/src/include/access/htup_details.h index d7e5fad11e..dcfcffc5cb 100644 --- a/src/include/access/htup_details.h +++ b/src/include/access/htup_details.h @@ -237,8 +237,8 @@ struct HeapTupleHeaderData */ #define HEAP_LOCKED_UPGRADED(infomask) \ ( \ - ((infomask) & HEAP_XMAX_IS_MULTI) && \ - ((infomask) & HEAP_XMAX_LOCK_ONLY) && \ + ((infomask) & HEAP_XMAX_IS_MULTI) != 0 && \ + ((infomask) & HEAP_XMAX_LOCK_ONLY) != 0 && \ (((infomask) & (HEAP_XMAX_EXCL_LOCK | HEAP_XMAX_KEYSHR_LOCK)) == 0) \ ) @@ -317,7 +317,7 @@ struct HeapTupleHeaderData #define HeapTupleHeaderXminCommitted(tup) \ ( \ - (tup)->t_infomask & HEAP_XMIN_COMMITTED \ + ((tup)->t_infomask & HEAP_XMIN_COMMITTED) != 0 \ ) #define HeapTupleHeaderXminInvalid(tup) \ @@ -501,7 +501,7 @@ do { \ #define HeapTupleHeaderIsHeapOnly(tup) \ ( \ - (tup)->t_infomask2 & HEAP_ONLY_TUPLE \ + ((tup)->t_infomask2 & HEAP_ONLY_TUPLE) != 0 \ ) #define HeapTupleHeaderSetHeapOnly(tup) \ @@ -516,7 +516,7 @@ do { \ #define HeapTupleHeaderHasMatch(tup) \ ( \ - (tup)->t_infomask2 & HEAP_TUPLE_HAS_MATCH \ + ((tup)->t_infomask2 & HEAP_TUPLE_HAS_MATCH) != 0 \ ) #define HeapTupleHeaderSetMatch(tup) \ diff --git a/src/include/access/parallel.h b/src/include/access/parallel.h index 2f8f36fea4..61dbfda478 100644 --- a/src/include/access/parallel.h +++ b/src/include/access/parallel.h @@ -67,4 +67,6 @@ extern void AtEOXact_Parallel(bool isCommit); extern void AtEOSubXact_Parallel(bool isCommit, SubTransactionId mySubId); extern void ParallelWorkerReportLastRecEnd(XLogRecPtr last_xlog_end); +extern void ParallelWorkerMain(Datum main_arg); + #endif /* PARALLEL_H */ diff --git a/src/include/access/tupconvert.h b/src/include/access/tupconvert.h index 10556eec7e..a7e48eb381 100644 --- a/src/include/access/tupconvert.h +++ b/src/include/access/tupconvert.h @@ -38,6 +38,10 @@ extern TupleConversionMap *convert_tuples_by_name(TupleDesc indesc, TupleDesc outdesc, const char *msg); +extern AttrNumber *convert_tuples_by_name_map(TupleDesc indesc, + TupleDesc outdesc, + const char *msg); + extern HeapTuple do_convert_tuple(HeapTuple tuple, TupleConversionMap *map); extern void free_conversion_map(TupleConversionMap *map); diff --git a/src/include/access/tupdesc.h b/src/include/access/tupdesc.h index de18f7488c..d37be0621f 100644 --- a/src/include/access/tupdesc.h +++ b/src/include/access/tupdesc.h @@ -81,6 +81,9 @@ typedef struct tupleDesc } *TupleDesc; +/* Accessor for the i'th attribute of tupdesc. */ +#define TupleDescAttr(tupdesc, i) ((tupdesc)->attrs[(i)]) + extern TupleDesc CreateTemplateTupleDesc(int natts, bool hasoid); extern TupleDesc CreateTupleDesc(int natts, bool hasoid, diff --git a/src/include/access/twophase.h b/src/include/access/twophase.h index bab07ed187..c7159cc9ab 100644 --- a/src/include/access/twophase.h +++ b/src/include/access/twophase.h @@ -75,4 +75,6 @@ extern int GetPreparedTransactions(PreparedTransaction* pxacts); extern void SetPreparedTransactionState(char const* gid, char const* state); +extern bool GetPreparedTransactionState(char const* gid, char* state); + #endif /* TWOPHASE_H */ diff --git a/src/include/access/visibilitymap.h b/src/include/access/visibilitymap.h index 00bbd4c2d9..7a357d9d56 100644 --- a/src/include/access/visibilitymap.h +++ b/src/include/access/visibilitymap.h @@ -26,7 +26,7 @@ #define VISIBILITYMAP_ALL_VISIBLE 0x01 #define VISIBILITYMAP_ALL_FROZEN 0x02 #define VISIBILITYMAP_VALID_BITS 0x03 /* OR of all valid - * visiblitymap flags bits */ + * visibilitymap flags bits */ /* Macros for visibilitymap test */ #define VM_ALL_VISIBLE(r, b, v) \ diff --git a/src/include/access/xact.h b/src/include/access/xact.h index 07e215e213..efb5070dc5 100644 --- a/src/include/access/xact.h +++ b/src/include/access/xact.h @@ -74,7 +74,7 @@ typedef enum * apply */ } SyncCommitLevel; -/* Define the default setting for synchonous_commit */ +/* Define the default setting for synchronous_commit */ #define SYNCHRONOUS_COMMIT_ON SYNCHRONOUS_COMMIT_REMOTE_FLUSH /* Synchronous commit level */ @@ -98,6 +98,7 @@ typedef enum XACT_EVENT_PARALLEL_PRE_COMMIT, XACT_EVENT_PRE_PREPARE, XACT_EVENT_POST_PREPARE, + XACT_EVENT_PRE_COMMIT_PREPARED, XACT_EVENT_COMMIT_PREPARED, XACT_EVENT_ABORT_PREPARED, XACT_EVENT_COMMIT_COMMAND @@ -247,6 +248,7 @@ typedef struct xl_xact_twophase uint8 gidlen; char gid[GIDSIZE]; } xl_xact_twophase; + #define MinSizeOfXactTwophase offsetof(xl_xact_twophase, gid) typedef struct xl_xact_origin @@ -351,6 +353,9 @@ typedef struct xl_xact_parsed_abort TransactionId twophase_xid; /* only for 2PC */ char twophase_gid[GIDSIZE]; + + XLogRecPtr origin_lsn; + TimestampTz origin_timestamp; } xl_xact_parsed_abort; diff --git a/src/include/access/xlog.h b/src/include/access/xlog.h index 14b7f7f459..27762cdb88 100644 --- a/src/include/access/xlog.h +++ b/src/include/access/xlog.h @@ -274,8 +274,26 @@ extern void assign_max_wal_size(int newval, void *extra); extern void assign_checkpoint_completion_target(double newval, void *extra); /* - * Starting/stopping a base backup + * Routines to start, stop, and get status of a base backup. */ + +/* + * Session-level status of base backups + * + * This is used in parallel with the shared memory status to control parallel + * execution of base backup functions for a given session, be it a backend + * dedicated to replication or a normal backend connected to a database. The + * update of the session-level status happens at the same time as the shared + * memory counters to keep a consistent global and local state of the backups + * running. + */ +typedef enum SessionBackupState +{ + SESSION_BACKUP_NONE, + SESSION_BACKUP_EXCLUSIVE, + SESSION_BACKUP_NON_EXCLUSIVE +} SessionBackupState; + extern XLogRecPtr do_pg_start_backup(const char *backupidstr, bool fast, TimeLineID *starttli_p, StringInfo labelfile, DIR *tblspcdir, List **tablespaces, StringInfo tblspcmapfile, bool infotbssize, @@ -283,6 +301,7 @@ extern XLogRecPtr do_pg_start_backup(const char *backupidstr, bool fast, extern XLogRecPtr do_pg_stop_backup(char *labelfile, bool waitforarchive, TimeLineID *stoptli_p); extern void do_pg_abort_backup(void); +extern SessionBackupState get_backup_status(void); /* File path names (all relative to $PGDATA) */ #define BACKUP_LABEL_FILE "backup_label" diff --git a/src/include/access/xlog_internal.h b/src/include/access/xlog_internal.h index 0a595ccc48..5733cfb77e 100644 --- a/src/include/access/xlog_internal.h +++ b/src/include/access/xlog_internal.h @@ -96,7 +96,7 @@ typedef XLogLongPageHeaderData *XLogLongPageHeader; (dest) = (segno) * XLOG_SEG_SIZE + (offset) /* - * Compute ID and segment from an XLogRecPtr. + * Compute a segment number from an XLogRecPtr. * * For XLByteToSeg, do the computation at face value. For XLByteToPrevSeg, * a boundary byte is taken to be in the previous segment. This is suitable diff --git a/src/include/c.h b/src/include/c.h index 4ab3f8027a..179e6248c7 100644 --- a/src/include/c.h +++ b/src/include/c.h @@ -285,6 +285,8 @@ typedef long int int64; #ifndef HAVE_UINT64 typedef unsigned long int uint64; #endif +#define INT64CONST(x) (x##L) +#define UINT64CONST(x) (x##UL) #elif defined(HAVE_LONG_LONG_INT_64) /* We have working support for "long long int", use that */ @@ -294,20 +296,13 @@ typedef long long int int64; #ifndef HAVE_UINT64 typedef unsigned long long int uint64; #endif +#define INT64CONST(x) (x##LL) +#define UINT64CONST(x) (x##ULL) #else /* neither HAVE_LONG_INT_64 nor HAVE_LONG_LONG_INT_64 */ #error must have a working 64-bit integer datatype #endif -/* Decide if we need to decorate 64-bit constants */ -#ifdef HAVE_LL_CONSTANTS -#define INT64CONST(x) ((int64) x##LL) -#define UINT64CONST(x) ((uint64) x##ULL) -#else -#define INT64CONST(x) ((int64) x) -#define UINT64CONST(x) ((uint64) x) -#endif - /* snprintf format strings to use for 64-bit integers */ #define INT64_FORMAT "%" INT64_MODIFIER "d" #define UINT64_FORMAT "%" INT64_MODIFIER "u" @@ -335,11 +330,20 @@ typedef unsigned PG_INT128_TYPE uint128; #define PG_UINT16_MAX (0xFFFF) #define PG_INT32_MIN (-0x7FFFFFFF-1) #define PG_INT32_MAX (0x7FFFFFFF) -#define PG_UINT32_MAX (0xFFFFFFFF) +#define PG_UINT32_MAX (0xFFFFFFFFU) #define PG_INT64_MIN (-INT64CONST(0x7FFFFFFFFFFFFFFF) - 1) #define PG_INT64_MAX INT64CONST(0x7FFFFFFFFFFFFFFF) #define PG_UINT64_MAX UINT64CONST(0xFFFFFFFFFFFFFFFF) +/* Max value of size_t might also be missing if we don't have stdint.h */ +#ifndef SIZE_MAX +#if SIZEOF_SIZE_T == 8 +#define SIZE_MAX PG_UINT64_MAX +#else +#define SIZE_MAX PG_UINT32_MAX +#endif +#endif + /* Select timestamp representation (float8 or int64) */ #ifdef USE_INTEGER_DATETIMES #define HAVE_INT64_TIMESTAMP @@ -970,7 +974,7 @@ typedef NameData *Name; /* gettext domain name mangling */ /* - * To better support parallel installations of major PostgeSQL + * To better support parallel installations of major PostgreSQL * versions as well as parallel installations of major library soname * versions, we mangle the gettext domain name by appending those * version numbers. The coding rule ought to be that wherever the diff --git a/src/include/catalog/pg_statistic.h b/src/include/catalog/pg_statistic.h index c1a624d979..ec85702a29 100644 --- a/src/include/catalog/pg_statistic.h +++ b/src/include/catalog/pg_statistic.h @@ -275,7 +275,7 @@ typedef FormData_pg_statistic *Form_pg_statistic; * fraction of empty ranges. stavalues is a histogram of non-empty lengths, in * a format similar to STATISTIC_KIND_HISTOGRAM: it contains M (>=2) range * values that divide the column data values into M-1 bins of approximately - * equal population. The lengths are stores as float8s, as measured by the + * equal population. The lengths are stored as float8s, as measured by the * range type's subdiff function. Only non-null rows are considered. */ #define STATISTIC_KIND_RANGE_LENGTH_HISTOGRAM 6 diff --git a/src/include/common/int128.h b/src/include/common/int128.h new file mode 100644 index 0000000000..4c46e26f40 --- /dev/null +++ b/src/include/common/int128.h @@ -0,0 +1,276 @@ +/*------------------------------------------------------------------------- + * + * int128.h + * Roll-our-own 128-bit integer arithmetic. + * + * We make use of the native int128 type if there is one, otherwise + * implement things the hard way based on two int64 halves. + * + * See src/tools/testint128.c for a simple test harness for this file. + * + * Copyright (c) 2017, PostgreSQL Global Development Group + * + * src/include/common/int128.h + * + *------------------------------------------------------------------------- + */ +#ifndef INT128_H +#define INT128_H + +/* + * For testing purposes, use of native int128 can be switched on/off by + * predefining USE_NATIVE_INT128. + */ +#ifndef USE_NATIVE_INT128 +#ifdef HAVE_INT128 +#define USE_NATIVE_INT128 1 +#else +#define USE_NATIVE_INT128 0 +#endif +#endif + + +#if USE_NATIVE_INT128 + +typedef int128 INT128; + +/* + * Add an unsigned int64 value into an INT128 variable. + */ +static inline void +int128_add_uint64(INT128 *i128, uint64 v) +{ + *i128 += v; +} + +/* + * Add a signed int64 value into an INT128 variable. + */ +static inline void +int128_add_int64(INT128 *i128, int64 v) +{ + *i128 += v; +} + +/* + * Add the 128-bit product of two int64 values into an INT128 variable. + * + * XXX with a stupid compiler, this could actually be less efficient than + * the other implementation; maybe we should do it by hand always? + */ +static inline void +int128_add_int64_mul_int64(INT128 *i128, int64 x, int64 y) +{ + *i128 += (int128) x *(int128) y; +} + +/* + * Compare two INT128 values, return -1, 0, or +1. + */ +static inline int +int128_compare(INT128 x, INT128 y) +{ + if (x < y) + return -1; + if (x > y) + return 1; + return 0; +} + +/* + * Widen int64 to INT128. + */ +static inline INT128 +int64_to_int128(int64 v) +{ + return (INT128) v; +} + +/* + * Convert INT128 to int64 (losing any high-order bits). + * This also works fine for casting down to uint64. + */ +static inline int64 +int128_to_int64(INT128 val) +{ + return (int64) val; +} + +#else /* !USE_NATIVE_INT128 */ + +/* + * We lay out the INT128 structure with the same content and byte ordering + * that a native int128 type would (probably) have. This makes no difference + * for ordinary use of INT128, but allows union'ing INT128 with int128 for + * testing purposes. + */ +typedef struct +{ +#ifdef WORDS_BIGENDIAN + int64 hi; /* most significant 64 bits, including sign */ + uint64 lo; /* least significant 64 bits, without sign */ +#else + uint64 lo; /* least significant 64 bits, without sign */ + int64 hi; /* most significant 64 bits, including sign */ +#endif +} INT128; + +/* + * Add an unsigned int64 value into an INT128 variable. + */ +static inline void +int128_add_uint64(INT128 *i128, uint64 v) +{ + /* + * First add the value to the .lo part, then check to see if a carry needs + * to be propagated into the .hi part. A carry is needed if both inputs + * have high bits set, or if just one input has high bit set while the new + * .lo part doesn't. Remember that .lo part is unsigned; we cast to + * signed here just as a cheap way to check the high bit. + */ + uint64 oldlo = i128->lo; + + i128->lo += v; + if (((int64) v < 0 && (int64) oldlo < 0) || + (((int64) v < 0 || (int64) oldlo < 0) && (int64) i128->lo >= 0)) + i128->hi++; +} + +/* + * Add a signed int64 value into an INT128 variable. + */ +static inline void +int128_add_int64(INT128 *i128, int64 v) +{ + /* + * This is much like the above except that the carry logic differs for + * negative v. Ordinarily we'd need to subtract 1 from the .hi part + * (corresponding to adding the sign-extended bits of v to it); but if + * there is a carry out of the .lo part, that cancels and we do nothing. + */ + uint64 oldlo = i128->lo; + + i128->lo += v; + if (v >= 0) + { + if ((int64) oldlo < 0 && (int64) i128->lo >= 0) + i128->hi++; + } + else + { + if (!((int64) oldlo < 0 || (int64) i128->lo >= 0)) + i128->hi--; + } +} + +/* + * INT64_AU32 extracts the most significant 32 bits of int64 as int64, while + * INT64_AL32 extracts the least significant 32 bits as uint64. + */ +#define INT64_AU32(i64) ((i64) >> 32) +#define INT64_AL32(i64) ((i64) & UINT64CONST(0xFFFFFFFF)) + +/* + * Add the 128-bit product of two int64 values into an INT128 variable. + */ +static inline void +int128_add_int64_mul_int64(INT128 *i128, int64 x, int64 y) +{ + /* INT64_AU32 must use arithmetic right shift */ + StaticAssertStmt(((int64) -1 >> 1) == (int64) -1, + "arithmetic right shift is needed"); + + /*---------- + * Form the 128-bit product x * y using 64-bit arithmetic. + * Considering each 64-bit input as having 32-bit high and low parts, + * we can compute + * + * x * y = ((x.hi << 32) + x.lo) * (((y.hi << 32) + y.lo) + * = (x.hi * y.hi) << 64 + + * (x.hi * y.lo) << 32 + + * (x.lo * y.hi) << 32 + + * x.lo * y.lo + * + * Each individual product is of 32-bit terms so it won't overflow when + * computed in 64-bit arithmetic. Then we just have to shift it to the + * correct position while adding into the 128-bit result. We must also + * keep in mind that the "lo" parts must be treated as unsigned. + *---------- + */ + + /* No need to work hard if product must be zero */ + if (x != 0 && y != 0) + { + int64 x_u32 = INT64_AU32(x); + uint64 x_l32 = INT64_AL32(x); + int64 y_u32 = INT64_AU32(y); + uint64 y_l32 = INT64_AL32(y); + int64 tmp; + + /* the first term */ + i128->hi += x_u32 * y_u32; + + /* the second term: sign-extend it only if x is negative */ + tmp = x_u32 * y_l32; + if (x < 0) + i128->hi += INT64_AU32(tmp); + else + i128->hi += ((uint64) tmp) >> 32; + int128_add_uint64(i128, ((uint64) INT64_AL32(tmp)) << 32); + + /* the third term: sign-extend it only if y is negative */ + tmp = x_l32 * y_u32; + if (y < 0) + i128->hi += INT64_AU32(tmp); + else + i128->hi += ((uint64) tmp) >> 32; + int128_add_uint64(i128, ((uint64) INT64_AL32(tmp)) << 32); + + /* the fourth term: always unsigned */ + int128_add_uint64(i128, x_l32 * y_l32); + } +} + +/* + * Compare two INT128 values, return -1, 0, or +1. + */ +static inline int +int128_compare(INT128 x, INT128 y) +{ + if (x.hi < y.hi) + return -1; + if (x.hi > y.hi) + return 1; + if (x.lo < y.lo) + return -1; + if (x.lo > y.lo) + return 1; + return 0; +} + +/* + * Widen int64 to INT128. + */ +static inline INT128 +int64_to_int128(int64 v) +{ + INT128 val; + + val.lo = (uint64) v; + val.hi = (v < 0) ? -INT64CONST(1) : INT64CONST(0); + return val; +} + +/* + * Convert INT128 to int64 (losing any high-order bits). + * This also works fine for casting down to uint64. + */ +static inline int64 +int128_to_int64(INT128 val) +{ + return (int64) val.lo; +} + +#endif /* USE_NATIVE_INT128 */ + +#endif /* INT128_H */ diff --git a/src/include/executor/execParallel.h b/src/include/executor/execParallel.h index f4c6d37a11..42424d1b5c 100644 --- a/src/include/executor/execParallel.h +++ b/src/include/executor/execParallel.h @@ -36,4 +36,6 @@ extern void ExecParallelFinish(ParallelExecutorInfo *pei); extern void ExecParallelCleanup(ParallelExecutorInfo *pei); extern void ExecParallelReinitialize(ParallelExecutorInfo *pei); +extern void ParallelQueryMain(dsm_segment *seg, shm_toc *toc); + #endif /* EXECPARALLEL_H */ diff --git a/src/include/libpq/pqcomm.h b/src/include/libpq/pqcomm.h index c6bbfc2377..1d063d1248 100644 --- a/src/include/libpq/pqcomm.h +++ b/src/include/libpq/pqcomm.h @@ -172,6 +172,8 @@ extern bool Db_user_namespace; #define AUTH_REQ_GSS 7 /* GSSAPI without wrap() */ #define AUTH_REQ_GSS_CONT 8 /* Continue GSS exchanges */ #define AUTH_REQ_SSPI 9 /* SSPI negotiate without wrap() */ +#define AUTH_REQ_SASL 10 /* SASL authentication. Not supported before + * libpq version 10. */ typedef uint32 AuthRequest; diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h index 78545daece..196f3d172b 100644 --- a/src/include/miscadmin.h +++ b/src/include/miscadmin.h @@ -23,6 +23,8 @@ #ifndef MISCADMIN_H #define MISCADMIN_H +#include + #include "pgtime.h" /* for pg_time_t */ @@ -81,6 +83,7 @@ extern PGDLLIMPORT volatile bool InterruptPending; extern PGDLLIMPORT volatile bool QueryCancelPending; extern PGDLLIMPORT volatile bool ProcDiePending; extern PGDLLIMPORT volatile bool IdleInTransactionSessionTimeoutPending; +extern PGDLLIMPORT volatile sig_atomic_t ConfigReloadPending; extern volatile bool ClientConnectionLost; @@ -272,6 +275,8 @@ extern void restore_stack_base(pg_stack_base_t base); extern void check_stack_depth(void); extern bool stack_is_too_deep(void); +extern void PostgresSigHupHandler(SIGNAL_ARGS); + /* in tcop/utility.c */ extern void PreventCommandIfReadOnly(const char *cmdname); extern void PreventCommandIfParallelMode(const char *cmdname); diff --git a/src/include/nodes/execnodes.h b/src/include/nodes/execnodes.h index a4ea1b901a..0f99ef16e3 100644 --- a/src/include/nodes/execnodes.h +++ b/src/include/nodes/execnodes.h @@ -873,6 +873,7 @@ typedef struct CaseExprState ExprState *arg; /* implicit equality comparison argument */ List *args; /* the arguments (list of WHEN clauses) */ ExprState *defresult; /* the default result (ELSE clause) */ + int16 argtyplen; /* if arg is provided, its typlen */ } CaseExprState; /* ---------------- diff --git a/src/include/nodes/nodeFuncs.h b/src/include/nodes/nodeFuncs.h index 97af142929..29a5216356 100644 --- a/src/include/nodes/nodeFuncs.h +++ b/src/include/nodes/nodeFuncs.h @@ -73,8 +73,11 @@ extern Node *query_or_expression_tree_mutator(Node *node, Node *(*mutator) (), extern bool raw_expression_tree_walker(Node *node, bool (*walker) (), void *context); +extern bool raw_expression_tree_mutator(Node *node, bool (*mutator) (), + void *context); struct PlanState; extern bool planstate_tree_walker(struct PlanState *planstate, bool (*walker) (), void *context); + #endif /* NODEFUNCS_H */ diff --git a/src/include/nodes/nodes.h b/src/include/nodes/nodes.h index 6b850e4bc4..d3fdf55219 100644 --- a/src/include/nodes/nodes.h +++ b/src/include/nodes/nodes.h @@ -542,6 +542,26 @@ extern PGDLLIMPORT Node *newNodeMacroHolder; #define IsA(nodeptr,_type_) (nodeTag(nodeptr) == T_##_type_) +/* + * castNode(type, ptr) casts ptr to "type *", and if assertions are enabled, + * verifies that the node has the appropriate type (using its nodeTag()). + * + * Use an inline function when assertions are enabled, to avoid multiple + * evaluations of the ptr argument (which could e.g. be a function call). + */ +#ifdef USE_ASSERT_CHECKING +static inline Node * +castNodeImpl(NodeTag type, void *ptr) +{ + Assert(ptr == NULL || nodeTag(ptr) == type); + return (Node *) ptr; +} +#define castNode(_type_, nodeptr) ((_type_ *) castNodeImpl(T_##_type_, nodeptr)) +#else +#define castNode(_type_, nodeptr) ((_type_ *) (nodeptr)) +#endif /* USE_ASSERT_CHECKING */ + + /* ---------------------------------------------------------------- * extern declarations follow * ---------------------------------------------------------------- diff --git a/src/include/nodes/pg_list.h b/src/include/nodes/pg_list.h index 77b50ff1c7..00ab5ae968 100644 --- a/src/include/nodes/pg_list.h +++ b/src/include/nodes/pg_list.h @@ -106,26 +106,32 @@ list_length(const List *l) #define lfirst(lc) ((lc)->data.ptr_value) #define lfirst_int(lc) ((lc)->data.int_value) #define lfirst_oid(lc) ((lc)->data.oid_value) +#define lfirst_node(type,lc) castNode(type, lfirst(lc)) #define linitial(l) lfirst(list_head(l)) #define linitial_int(l) lfirst_int(list_head(l)) #define linitial_oid(l) lfirst_oid(list_head(l)) +#define linitial_node(type,l) castNode(type, linitial(l)) #define lsecond(l) lfirst(lnext(list_head(l))) #define lsecond_int(l) lfirst_int(lnext(list_head(l))) #define lsecond_oid(l) lfirst_oid(lnext(list_head(l))) +#define lsecond_node(type,l) castNode(type, lsecond(l)) #define lthird(l) lfirst(lnext(lnext(list_head(l)))) #define lthird_int(l) lfirst_int(lnext(lnext(list_head(l)))) #define lthird_oid(l) lfirst_oid(lnext(lnext(list_head(l)))) +#define lthird_node(type,l) castNode(type, lthird(l)) #define lfourth(l) lfirst(lnext(lnext(lnext(list_head(l))))) #define lfourth_int(l) lfirst_int(lnext(lnext(lnext(list_head(l))))) #define lfourth_oid(l) lfirst_oid(lnext(lnext(lnext(list_head(l))))) +#define lfourth_node(type,l) castNode(type, lfourth(l)) #define llast(l) lfirst(list_tail(l)) #define llast_int(l) lfirst_int(list_tail(l)) #define llast_oid(l) lfirst_oid(list_tail(l)) +#define llast_node(type,l) castNode(type, llast(l)) /* * Convenience macros for building fixed-length lists @@ -204,6 +210,7 @@ extern ListCell *list_nth_cell(const List *list, int n); extern void *list_nth(const List *list, int n); extern int list_nth_int(const List *list, int n); extern Oid list_nth_oid(const List *list, int n); +#define list_nth_node(type,list,n) castNode(type, list_nth(list, n)) extern bool list_member(const List *list, const void *datum); extern bool list_member_ptr(const List *list, const void *datum); diff --git a/src/include/nodes/relation.h b/src/include/nodes/relation.h index b97b700ee4..48862d93ae 100644 --- a/src/include/nodes/relation.h +++ b/src/include/nodes/relation.h @@ -1189,6 +1189,7 @@ typedef struct GatherPath Path path; Path *subpath; /* path for each worker */ bool single_copy; /* path must not be executed >1x */ + int num_workers; /* number of workers sought to help */ } GatherPath; /* diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in index 7dbfa90bf4..1e0583f7b1 100644 --- a/src/include/pg_config.h.in +++ b/src/include/pg_config.h.in @@ -333,10 +333,6 @@ /* Define to 1 if you have the `z' library (-lz). */ #undef HAVE_LIBZ -/* Define to 1 if constants of type 'long long int' should have the suffix LL. - */ -#undef HAVE_LL_CONSTANTS - /* Define to 1 if the system has the type `locale_t'. */ #undef HAVE_LOCALE_T @@ -394,6 +390,9 @@ /* Define to 1 if you have the `posix_fadvise' function. */ #undef HAVE_POSIX_FADVISE +/* Define to 1 if you have the `posix_fallocate' function. */ +#undef HAVE_POSIX_FALLOCATE + /* Define to 1 if the assembler supports PPC's LWARX mutex hint bit. */ #undef HAVE_PPC_LWARX_MUTEX_HINT diff --git a/src/include/pg_config.h.win32 b/src/include/pg_config.h.win32 index c0cf8e0d40..86a3661bb1 100644 --- a/src/include/pg_config.h.win32 +++ b/src/include/pg_config.h.win32 @@ -217,12 +217,6 @@ /* Define to 1 if you have the `z' library (-lz). */ /* #undef HAVE_LIBZ */ -/* Define to 1 if constants of type 'long long int' should have the suffix LL. - */ -#if (_MSC_VER > 1200) -#define HAVE_LL_CONSTANTS 1 -#endif - /* Define to 1 if the system has the type `locale_t'. */ #define HAVE_LOCALE_T 1 @@ -231,7 +225,7 @@ /* Define to 1 if `long long int' works and is 64 bits. */ #if (_MSC_VER > 1200) -#define HAVE_LONG_LONG_INT_64 +#define HAVE_LONG_LONG_INT_64 1 #endif /* Define to 1 if you have the `mbstowcs_l' function. */ @@ -264,6 +258,9 @@ /* Define to 1 if you have the header file. */ /* #undef HAVE_POLL_H */ +/* Define to 1 if you have the `posix_fallocate' function. */ +/* #undef HAVE_POSIX_FALLOCATE */ + /* Define to 1 if you have the `pstat' function. */ /* #undef HAVE_PSTAT */ @@ -554,10 +551,10 @@ #define PACKAGE_NAME "PostgreSQL" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "PostgreSQL 9.6.0" +#define PACKAGE_STRING "PostgreSQL 9.6.5" /* Define to the version of this package. */ -#define PACKAGE_VERSION "9.6.0" +#define PACKAGE_VERSION "9.6.5" /* Define to the name of a signed 128-bit integer type. */ #undef PG_INT128_TYPE @@ -566,10 +563,10 @@ #define PG_INT64_TYPE long long int /* PostgreSQL version as a string */ -#define PG_VERSION "9.6.0" +#define PG_VERSION "9.6.5" /* PostgreSQL version as a number */ -#define PG_VERSION_NUM 90600 +#define PG_VERSION_NUM 90605 /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "postgresql" diff --git a/src/include/pg_config_manual.h b/src/include/pg_config_manual.h index a2b2b614be..e8cdab33a4 100644 --- a/src/include/pg_config_manual.h +++ b/src/include/pg_config_manual.h @@ -147,6 +147,24 @@ #define USE_PREFETCH #endif +/* + * Default and maximum values for backend_flush_after, bgwriter_flush_after + * and checkpoint_flush_after; measured in blocks. Currently, these are + * enabled by default if sync_file_range() exists, ie, only on Linux. Perhaps + * we could also enable by default if we have mmap and msync(MS_ASYNC)? + */ +#ifdef HAVE_SYNC_FILE_RANGE +#define DEFAULT_BACKEND_FLUSH_AFTER 0 /* never enabled by default */ +#define DEFAULT_BGWRITER_FLUSH_AFTER 64 +#define DEFAULT_CHECKPOINT_FLUSH_AFTER 32 +#else +#define DEFAULT_BACKEND_FLUSH_AFTER 0 +#define DEFAULT_BGWRITER_FLUSH_AFTER 0 +#define DEFAULT_CHECKPOINT_FLUSH_AFTER 0 +#endif +/* upper limit for all three variables */ +#define WRITEBACK_MAX_PENDING_FLUSHES 256 + /* * USE_SSL code should be compiled only when compiling with an SSL * implementation. (Currently, only OpenSSL is supported, but we might add @@ -283,7 +301,7 @@ /* * Enable debugging print statements for lock-related operations. */ -/* #define LOCK_DEBUG */ +#define LOCK_DEBUG /* * Enable debugging print statements for WAL-related operations; see diff --git a/src/include/pgstat.h b/src/include/pgstat.h index dc3320d091..ff0c60b8a4 100644 --- a/src/include/pgstat.h +++ b/src/include/pgstat.h @@ -819,7 +819,7 @@ typedef struct PgBackendStatus /* * Command progress reporting. Any command which wishes can advertise * that it is running by setting st_progress_command, - * st_progress_command_target, and st_progress_command[]. + * st_progress_command_target, and st_progress_param[]. * st_progress_command_target should be the OID of the relation which the * command targets (we assume there's just one, as this is meant for * utility commands), but the meaning of each element in the diff --git a/src/include/port.h b/src/include/port.h index 455f72338c..a61e59c8f8 100644 --- a/src/include/port.h +++ b/src/include/port.h @@ -462,6 +462,11 @@ extern int pg_mkdir_p(char *path, int omode); /* port/pqsignal.c */ typedef void (*pqsigfunc) (int signo); extern pqsigfunc pqsignal(int signo, pqsigfunc func); +#ifndef WIN32 +extern pqsigfunc pqsignal_no_restart(int signo, pqsigfunc func); +#else +#define pqsignal_no_restart(signo, func) pqsignal(signo, func) +#endif /* port/quotes.c */ extern char *escape_single_quotes_ascii(const char *src); diff --git a/src/include/port/atomics/generic-gcc.h b/src/include/port/atomics/generic-gcc.h index a3abc8a1a9..4e16098739 100644 --- a/src/include/port/atomics/generic-gcc.h +++ b/src/include/port/atomics/generic-gcc.h @@ -62,12 +62,15 @@ #define PG_HAVE_ATOMIC_FLAG_SUPPORT typedef struct pg_atomic_flag { - /* some platforms only have a 8 bit wide TAS */ -#ifdef HAVE_GCC__SYNC_CHAR_TAS - volatile char value; -#else - /* but an int works on more platforms */ + /* + * If we have a choice, use int-width TAS, because that is more efficient + * and/or more reliably implemented on most non-Intel platforms. (Note + * that this code isn't used on x86[_64]; see arch-x86.h for that.) + */ +#ifdef HAVE_GCC__SYNC_INT32_TAS volatile int value; +#else + volatile char value; #endif } pg_atomic_flag; diff --git a/src/include/port/pg_bswap.h b/src/include/port/pg_bswap.h index a42f757af2..8a80cc0761 100644 --- a/src/include/port/pg_bswap.h +++ b/src/include/port/pg_bswap.h @@ -6,6 +6,7 @@ * Macros for reversing the byte order of 32-bit and 64-bit unsigned integers. * For example, 0xAABBCCDD becomes 0xDDCCBBAA. These are just wrappers for * built-in functions provided by the compiler where support exists. + * Elsewhere, beware of multiple evaluations of the arguments! * * Note that the GCC built-in functions __builtin_bswap32() and * __builtin_bswap64() are documented as accepting single arguments of type @@ -24,23 +25,23 @@ #ifdef HAVE__BUILTIN_BSWAP32 #define BSWAP32(x) __builtin_bswap32(x) #else -#define BSWAP32(x) (((x << 24) & 0xff000000) | \ - ((x << 8) & 0x00ff0000) | \ - ((x >> 8) & 0x0000ff00) | \ - ((x >> 24) & 0x000000ff)) +#define BSWAP32(x) ((((x) << 24) & 0xff000000) | \ + (((x) << 8) & 0x00ff0000) | \ + (((x) >> 8) & 0x0000ff00) | \ + (((x) >> 24) & 0x000000ff)) #endif /* HAVE__BUILTIN_BSWAP32 */ #ifdef HAVE__BUILTIN_BSWAP64 #define BSWAP64(x) __builtin_bswap64(x) #else -#define BSWAP64(x) (((x << 56) & 0xff00000000000000UL) | \ - ((x << 40) & 0x00ff000000000000UL) | \ - ((x << 24) & 0x0000ff0000000000UL) | \ - ((x << 8) & 0x000000ff00000000UL) | \ - ((x >> 8) & 0x00000000ff000000UL) | \ - ((x >> 24) & 0x0000000000ff0000UL) | \ - ((x >> 40) & 0x000000000000ff00UL) | \ - ((x >> 56) & 0x00000000000000ffUL)) +#define BSWAP64(x) ((((x) << 56) & UINT64CONST(0xff00000000000000)) | \ + (((x) << 40) & UINT64CONST(0x00ff000000000000)) | \ + (((x) << 24) & UINT64CONST(0x0000ff0000000000)) | \ + (((x) << 8) & UINT64CONST(0x000000ff00000000)) | \ + (((x) >> 8) & UINT64CONST(0x00000000ff000000)) | \ + (((x) >> 24) & UINT64CONST(0x0000000000ff0000)) | \ + (((x) >> 40) & UINT64CONST(0x000000000000ff00)) | \ + (((x) >> 56) & UINT64CONST(0x00000000000000ff))) #endif /* HAVE__BUILTIN_BSWAP64 */ /* diff --git a/src/include/replication/logical.h b/src/include/replication/logical.h index 947000e63f..0f604f9dda 100644 --- a/src/include/replication/logical.h +++ b/src/include/replication/logical.h @@ -79,6 +79,7 @@ extern void CheckLogicalDecodingRequirements(void); extern LogicalDecodingContext *CreateInitDecodingContext(char *plugin, List *output_plugin_options, + bool need_full_snapshot, XLogPageReadCB read_page, LogicalOutputPluginWriterPrepareWrite prepare_write, LogicalOutputPluginWriterWrite do_write); @@ -96,6 +97,7 @@ extern void LogicalIncreaseXminForSlot(XLogRecPtr lsn, TransactionId xmin); extern void LogicalIncreaseRestartDecodingForSlot(XLogRecPtr current_lsn, XLogRecPtr restart_lsn); extern void LogicalConfirmReceivedLocation(XLogRecPtr lsn); +extern void LogicalDecodingCaughtUp(LogicalDecodingContext *ctx); extern bool filter_by_origin_cb_wrapper(LogicalDecodingContext *ctx, RepOriginId origin_id); diff --git a/src/include/replication/output_plugin.h b/src/include/replication/output_plugin.h index 7911cc0a29..4c4c0078c2 100644 --- a/src/include/replication/output_plugin.h +++ b/src/include/replication/output_plugin.h @@ -41,43 +41,36 @@ typedef void (*LogicalOutputPluginInit) (struct OutputPluginCallbacks *cb); * "is_init" will be set to "true" if the decoding slot just got defined. When * the same slot is used from there one, it will be "false". */ -typedef void (*LogicalDecodeStartupCB) ( - struct LogicalDecodingContext *ctx, +typedef void (*LogicalDecodeStartupCB) (struct LogicalDecodingContext *ctx, OutputPluginOptions *options, - bool is_init -); + bool is_init); /* * Callback called for every (explicit or implicit) BEGIN of a successful * transaction. */ -typedef void (*LogicalDecodeBeginCB) ( - struct LogicalDecodingContext *, +typedef void (*LogicalDecodeBeginCB) (struct LogicalDecodingContext *ctx, ReorderBufferTXN *txn); /* * Callback for every individual change in a successful transaction. */ -typedef void (*LogicalDecodeChangeCB) ( - struct LogicalDecodingContext *, +typedef void (*LogicalDecodeChangeCB) (struct LogicalDecodingContext *ctx, ReorderBufferTXN *txn, Relation relation, - ReorderBufferChange *change -); + ReorderBufferChange *change); /* * Called for every (explicit or implicit) COMMIT of a successful transaction. */ -typedef void (*LogicalDecodeCommitCB) ( - struct LogicalDecodingContext *, +typedef void (*LogicalDecodeCommitCB) (struct LogicalDecodingContext *ctx, ReorderBufferTXN *txn, XLogRecPtr commit_lsn); /* * Called for the generic logical decoding messages. */ -typedef void (*LogicalDecodeMessageCB) ( - struct LogicalDecodingContext *, +typedef void (*LogicalDecodeMessageCB) (struct LogicalDecodingContext *ctx, ReorderBufferTXN *txn, XLogRecPtr message_lsn, bool transactional, @@ -88,16 +81,18 @@ typedef void (*LogicalDecodeMessageCB) ( /* * Filter changes by origin. */ -typedef bool (*LogicalDecodeFilterByOriginCB) ( - struct LogicalDecodingContext *, +typedef bool (*LogicalDecodeFilterByOriginCB) (struct LogicalDecodingContext *ctx, RepOriginId origin_id); /* * Called to shutdown an output plugin. */ -typedef void (*LogicalDecodeShutdownCB) ( - struct LogicalDecodingContext * -); +typedef void (*LogicalDecodeShutdownCB) (struct LogicalDecodingContext *ctx); + +/* + * Called when WAL sender caught up. + */ +typedef void (*LogicalDecodeCaughtUpCB) (struct LogicalDecodingContext * ctx); /* * Output plugin callbacks @@ -111,9 +106,11 @@ typedef struct OutputPluginCallbacks LogicalDecodeMessageCB message_cb; LogicalDecodeFilterByOriginCB filter_by_origin_cb; LogicalDecodeShutdownCB shutdown_cb; + LogicalDecodeCaughtUpCB caughtup_cb; } OutputPluginCallbacks; -void OutputPluginPrepareWrite(struct LogicalDecodingContext *ctx, bool last_write); -void OutputPluginWrite(struct LogicalDecodingContext *ctx, bool last_write); +/* Functions in replication/logical/logical.c */ +extern void OutputPluginPrepareWrite(struct LogicalDecodingContext *ctx, bool last_write); +extern void OutputPluginWrite(struct LogicalDecodingContext *ctx, bool last_write); #endif /* OUTPUT_PLUGIN_H */ diff --git a/src/include/replication/reorderbuffer.h b/src/include/replication/reorderbuffer.h index 1c59dbf8b7..bdd5e72eed 100644 --- a/src/include/replication/reorderbuffer.h +++ b/src/include/replication/reorderbuffer.h @@ -222,6 +222,15 @@ typedef struct ReorderBufferTXN */ uint64 nentries_mem; + /* + * Has this transaction been spilled to disk? It's not always possible to + * deduce that fact by comparing nentries with nentries_mem, because + * e.g. subtransactions of a large transaction might get serialized + * together with the parent - if they're restored to memory they'd have + * nentries_mem == nentries. + */ + bool serialized; + /* * List of ReorderBufferChange structs, including new Snapshots and new * CommandIds diff --git a/src/include/replication/snapbuild.h b/src/include/replication/snapbuild.h index a95160dffe..ae089df490 100644 --- a/src/include/replication/snapbuild.h +++ b/src/include/replication/snapbuild.h @@ -20,24 +20,30 @@ typedef enum /* * Initial state, we can't do much yet. */ - SNAPBUILD_START, + SNAPBUILD_START = -1, + + /* + * Collecting committed transactions, to build the initial catalog + * snapshot. + */ + SNAPBUILD_BUILDING_SNAPSHOT = 0, /* * We have collected enough information to decode tuples in transactions * that started after this. * * Once we reached this we start to collect changes. We cannot apply them - * yet because the might be based on transactions that were still running - * when we reached them yet. + * yet, because they might be based on transactions that were still running + * when FULL_SNAPSHOT was reached. */ - SNAPBUILD_FULL_SNAPSHOT, + SNAPBUILD_FULL_SNAPSHOT = 1, /* - * Found a point after hitting built_full_snapshot where all transactions - * that were running at that point finished. Till we reach that we hold - * off calling any commit callbacks. + * Found a point after SNAPBUILD_FULL_SNAPSHOT where all transactions that + * were running at that point finished. Till we reach that we hold off + * calling any commit callbacks. */ - SNAPBUILD_CONSISTENT + SNAPBUILD_CONSISTENT = 2 } SnapBuildState; /* forward declare so we don't have to expose the struct to the public */ @@ -54,7 +60,8 @@ struct xl_running_xacts; extern void CheckPointSnapBuild(void); extern SnapBuild *AllocateSnapshotBuilder(struct ReorderBuffer *cache, - TransactionId xmin_horizon, XLogRecPtr start_lsn); + TransactionId xmin_horizon, XLogRecPtr start_lsn, + bool need_full_snapshot); extern void FreeSnapshotBuilder(SnapBuild *cache); extern void SnapBuildSnapDecRefcount(Snapshot snap); @@ -71,9 +78,6 @@ extern bool SnapBuildXactNeedsSkip(SnapBuild *snapstate, XLogRecPtr ptr); extern void SnapBuildCommitTxn(SnapBuild *builder, XLogRecPtr lsn, TransactionId xid, int nsubxacts, TransactionId *subxacts, bool isCommit); -extern void SnapBuildAbortTxn(SnapBuild *builder, XLogRecPtr lsn, - TransactionId xid, int nsubxacts, - TransactionId *subxacts); extern bool SnapBuildProcessChange(SnapBuild *builder, TransactionId xid, XLogRecPtr lsn); extern void SnapBuildProcessNewCid(SnapBuild *builder, TransactionId xid, diff --git a/src/include/replication/walsender.h b/src/include/replication/walsender.h index de7338638e..b4dfd61378 100644 --- a/src/include/replication/walsender.h +++ b/src/include/replication/walsender.h @@ -34,6 +34,9 @@ extern void WalSndSignals(void); extern Size WalSndShmemSize(void); extern void WalSndShmemInit(void); extern void WalSndWakeup(void); +extern void WalSndInitStopping(void); +extern void WalSndWaitStopping(void); +extern void HandleWalSndInitStopping(void); extern void WalSndRqstFileReload(void); extern Datum pg_stat_get_wal_senders(PG_FUNCTION_ARGS); diff --git a/src/include/replication/walsender_private.h b/src/include/replication/walsender_private.h index 7794aa567e..188a3ce9ed 100644 --- a/src/include/replication/walsender_private.h +++ b/src/include/replication/walsender_private.h @@ -24,7 +24,8 @@ typedef enum WalSndState WALSNDSTATE_STARTUP = 0, WALSNDSTATE_BACKUP, WALSNDSTATE_CATCHUP, - WALSNDSTATE_STREAMING + WALSNDSTATE_STREAMING, + WALSNDSTATE_STOPPING } WalSndState; /* diff --git a/src/include/storage/buf_internals.h b/src/include/storage/buf_internals.h index c7da9f6ac2..ebec2dc9b0 100644 --- a/src/include/storage/buf_internals.h +++ b/src/include/storage/buf_internals.h @@ -64,8 +64,8 @@ #define BM_JUST_DIRTIED (1U << 28) /* dirtied since write started */ #define BM_PIN_COUNT_WAITER (1U << 29) /* have waiter for sole pin */ #define BM_CHECKPOINT_NEEDED (1U << 30) /* must write for checkpoint */ -#define BM_PERMANENT (1U << 31) /* permanent relation (not - * unlogged) */ +#define BM_PERMANENT (1U << 31) /* permanent buffer (not + * unlogged, or init fork) */ /* * The maximum allowed value of usage_count represents a tradeoff between * accuracy and speed of the clock-sweep buffer management algorithm. A diff --git a/src/include/storage/bufmgr.h b/src/include/storage/bufmgr.h index 7b6ba96000..554d15341b 100644 --- a/src/include/storage/bufmgr.h +++ b/src/include/storage/bufmgr.h @@ -54,17 +54,6 @@ struct WritebackContext; extern PGDLLIMPORT int NBuffers; /* in bufmgr.c */ -#define WRITEBACK_MAX_PENDING_FLUSHES 256 - -/* FIXME: Also default to on for mmap && msync(MS_ASYNC)? */ -#ifdef HAVE_SYNC_FILE_RANGE -#define DEFAULT_CHECKPOINT_FLUSH_AFTER 32 -#define DEFAULT_BGWRITER_FLUSH_AFTER 64 -#else -#define DEFAULT_CHECKPOINT_FLUSH_AFTER 0 -#define DEFAULT_BGWRITER_FLUSH_AFTER 0 -#endif /* HAVE_SYNC_FILE_RANGE */ - extern bool zero_damaged_pages; extern int bgwriter_lru_maxpages; extern double bgwriter_lru_multiplier; diff --git a/src/include/storage/latch.h b/src/include/storage/latch.h index 5179ecc0db..bce7d114af 100644 --- a/src/include/storage/latch.h +++ b/src/include/storage/latch.h @@ -133,6 +133,9 @@ typedef struct WaitEvent uint32 events; /* triggered events */ pgsocket fd; /* socket fd associated with event */ void *user_data; /* pointer provided in AddWaitEventToSet */ +#ifdef WIN32 + bool reset; /* Is reset of the event required? */ +#endif } WaitEvent; /* forward declaration to avoid exposing latch.c implementation details */ diff --git a/src/include/storage/proc.h b/src/include/storage/proc.h index 775c66a197..c44d82b90c 100644 --- a/src/include/storage/proc.h +++ b/src/include/storage/proc.h @@ -102,6 +102,8 @@ struct PGPROC Oid databaseId; /* OID of database this backend is using */ Oid roleId; /* OID of role using this backend */ + bool isBackgroundWorker; /* true if background worker. */ + /* * While in hot standby mode, shows that a conflict signal has been sent * for the current transaction. Set/cleared while holding ProcArrayLock, diff --git a/src/include/storage/procarray.h b/src/include/storage/procarray.h index dd37c0cb07..f6af33340b 100644 --- a/src/include/storage/procarray.h +++ b/src/include/storage/procarray.h @@ -55,7 +55,7 @@ extern bool TransactionIdIsInProgress(TransactionId xid); extern bool TransactionIdIsActive(TransactionId xid); extern TransactionId GetOldestXmin(Relation rel, bool ignoreVacuum); extern TransactionId GetOldestActiveTransactionId(void); -extern TransactionId GetOldestSafeDecodingTransactionId(void); +extern TransactionId GetOldestSafeDecodingTransactionId(bool catalogOnly); extern VirtualTransactionId *GetVirtualXIDsDelayingChkpt(int *nvxids); extern bool HaveVirtualXIDsDelayingChkpt(VirtualTransactionId *vxids, int nvxids); @@ -73,6 +73,7 @@ extern pid_t CancelVirtualTransaction(VirtualTransactionId vxid, ProcSignalReaso extern bool MinimumActiveBackends(int min); extern int CountDBBackends(Oid databaseid); +extern int CountDBConnections(Oid databaseid); extern void CancelDBBackends(Oid databaseid, ProcSignalReason sigmode, bool conflictPending); extern int CountUserBackends(Oid roleid); extern bool CountOtherDBBackends(Oid databaseId, diff --git a/src/include/storage/procsignal.h b/src/include/storage/procsignal.h index f67b9821f2..104f4c198e 100644 --- a/src/include/storage/procsignal.h +++ b/src/include/storage/procsignal.h @@ -32,6 +32,7 @@ typedef enum PROCSIG_CATCHUP_INTERRUPT, /* sinval catchup interrupt */ PROCSIG_NOTIFY_INTERRUPT, /* listen/notify interrupt */ PROCSIG_PARALLEL_MESSAGE, /* message from cooperating parallel backend */ + PROCSIG_WALSND_INIT_STOPPING, /* ask walsenders to prepare for shutdown */ /* Recovery conflict reasons */ PROCSIG_RECOVERY_CONFLICT_DATABASE, diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h index 7aad2de43d..64ca372c45 100644 --- a/src/include/storage/s_lock.h +++ b/src/include/storage/s_lock.h @@ -865,7 +865,7 @@ typedef LONG slock_t; #define SPIN_DELAY() spin_delay() /* If using Visual C++ on Win64, inline assembly is unavailable. - * Use a _mm_pause instrinsic instead of rep nop. + * Use a _mm_pause intrinsic instead of rep nop. */ #if defined(_WIN64) static __forceinline void diff --git a/src/include/tcop/fastpath.h b/src/include/tcop/fastpath.h index df6234be89..0aceb8807c 100644 --- a/src/include/tcop/fastpath.h +++ b/src/include/tcop/fastpath.h @@ -16,6 +16,6 @@ #include "lib/stringinfo.h" extern int GetOldFunctionMessage(StringInfo buf); -extern int HandleFunctionRequest(StringInfo msgBuf); +extern void HandleFunctionRequest(StringInfo msgBuf); #endif /* FASTPATH_H */ diff --git a/src/include/tsearch/dicts/spell.h b/src/include/tsearch/dicts/spell.h index d1df1f9f4b..cfa74a7715 100644 --- a/src/include/tsearch/dicts/spell.h +++ b/src/include/tsearch/dicts/spell.h @@ -147,7 +147,7 @@ typedef struct } CMPDAffix; /* - * Type of encoding affix flags in Hunspel dictionaries + * Type of encoding affix flags in Hunspell dictionaries */ typedef enum { diff --git a/src/include/tsearch/ts_utils.h b/src/include/tsearch/ts_utils.h index e09a9c636f..d74853b658 100644 --- a/src/include/tsearch/ts_utils.h +++ b/src/include/tsearch/ts_utils.h @@ -12,9 +12,9 @@ #ifndef _PG_TS_UTILS_H_ #define _PG_TS_UTILS_H_ -#include "tsearch/ts_type.h" -#include "tsearch/ts_public.h" #include "nodes/pg_list.h" +#include "tsearch/ts_public.h" +#include "tsearch/ts_type.h" /* * Common parse definitions for tsvector and tsquery @@ -102,34 +102,82 @@ extern void hlparsetext(Oid cfgId, HeadlineParsedText *prs, TSQuery query, extern text *generateHeadline(HeadlineParsedText *prs); /* - * Common check function for tsvector @@ tsquery + * TSQuery execution support + * + * TS_execute() executes a tsquery against data that can be represented in + * various forms. The TSExecuteCallback callback function is called to check + * whether a given primitive tsquery value is matched in the data. + */ + +/* + * struct ExecPhraseData is passed to a TSExecuteCallback function if we need + * lexeme position data (because of a phrase-match operator in the tsquery). + * The callback should fill in position data when it returns true (success). + * If it cannot return position data, it may leave "data" unchanged, but + * then the caller of TS_execute() must pass the TS_EXEC_PHRASE_NO_POS flag + * and must arrange for a later recheck with position data available. + * + * The reported lexeme positions must be sorted and unique. Callers must only + * consult the position bits of the pos array, ie, WEP_GETPOS(data->pos[i]). + * This allows the returned "pos" to point directly to the WordEntryPos + * portion of a tsvector value. If "allocated" is true then the pos array + * is palloc'd workspace and caller may free it when done. + * + * "negate" means that the pos array contains positions where the query does + * not match, rather than positions where it does. "width" is positive when + * the match is wider than one lexeme. Neither of these fields normally need + * to be touched by TSExecuteCallback functions; they are used for + * phrase-search processing within TS_execute. + * + * All fields of the ExecPhraseData struct are initially zeroed by caller. */ typedef struct ExecPhraseData { - int npos; - bool allocated; - WordEntryPos *pos; + int npos; /* number of positions reported */ + bool allocated; /* pos points to palloc'd data? */ + bool negate; /* positions are where query is NOT matched */ + WordEntryPos *pos; /* ordered, non-duplicate lexeme positions */ + int width; /* width of match in lexemes, less 1 */ } ExecPhraseData; /* - * Evaluates tsquery, flags are followe below + * Signature for TSQuery lexeme check functions + * + * arg: opaque value passed through from caller of TS_execute + * val: lexeme to test for presence of + * data: to be filled with lexeme positions; NULL if position data not needed + * + * Return TRUE if lexeme is present in data, else FALSE. If data is not + * NULL, it should be filled with lexeme positions, but function can leave + * it as zeroes if position data is not available. */ -extern bool TS_execute(QueryItem *curitem, void *checkval, uint32 flags, - bool (*chkcond) (void *, QueryOperand *, ExecPhraseData *)); +typedef bool (*TSExecuteCallback) (void *arg, QueryOperand *val, + ExecPhraseData *data); +/* + * Flag bits for TS_execute + */ #define TS_EXEC_EMPTY (0x00) /* - * if TS_EXEC_CALC_NOT is not set then NOT expression evaluated to be true, - * used in cases where NOT cannot be accurately computed (GiST) or - * it isn't important (ranking) + * If TS_EXEC_CALC_NOT is not set, then NOT expressions are automatically + * evaluated to be true. Useful in cases where NOT cannot be accurately + * computed (GiST) or it isn't important (ranking). From TS_execute's + * perspective, !CALC_NOT means that the TSExecuteCallback function might + * return false-positive indications of a lexeme's presence. */ #define TS_EXEC_CALC_NOT (0x01) /* - * Treat OP_PHRASE as OP_AND. Used when posiotional information is not - * accessible, like in consistent methods of GIN/GiST indexes + * If TS_EXEC_PHRASE_NO_POS is set, allow OP_PHRASE to be executed lossily + * in the absence of position information: a TRUE result indicates that the + * phrase might be present. Without this flag, OP_PHRASE always returns + * false if lexeme position information is not available. */ -#define TS_EXEC_PHRASE_AS_AND (0x02) +#define TS_EXEC_PHRASE_NO_POS (0x02) +/* Obsolete spelling of TS_EXEC_PHRASE_NO_POS: */ +#define TS_EXEC_PHRASE_AS_AND TS_EXEC_PHRASE_NO_POS +extern bool TS_execute(QueryItem *curitem, void *arg, uint32 flags, + TSExecuteCallback chkcond); extern bool tsquery_requires_match(QueryItem *curitem); /* @@ -195,7 +243,7 @@ extern Datum gin_tsquery_consistent_oldsig(PG_FUNCTION_ARGS); * TSQuery Utilities */ extern QueryItem *clean_NOT(QueryItem *ptr, int32 *len); -extern TSQuery cleanup_fakeval_and_phrase(TSQuery in); +extern TSQuery cleanup_tsquery_stopwords(TSQuery in); typedef struct QTNode { diff --git a/src/include/utils/acl.h b/src/include/utils/acl.h index 4cc49f0c0c..14279f79da 100644 --- a/src/include/utils/acl.h +++ b/src/include/utils/acl.h @@ -12,9 +12,17 @@ * NOTES * An ACL array is simply an array of AclItems, representing the union * of the privileges represented by the individual items. A zero-length - * array represents "no privileges". There are no assumptions about the - * ordering of the items, but we do expect that there are no two entries - * in the array with the same grantor and grantee. + * array represents "no privileges". + * + * The order of items in the array is important as client utilities (in + * particular, pg_dump, though possibly other clients) expect to be able + * to issue GRANTs in the ordering of the items in the array. The reason + * this matters is that GRANTs WITH GRANT OPTION must be before any GRANTs + * which depend on it. This happens naturally in the backend during + * operations as we update ACLs in-place, new items are appended, and + * existing entries are only removed if there's no dependency on them (no + * GRANT can been based on it, or, if there was, those GRANTs are also + * removed). * * For backward-compatibility purposes we have to allow null ACL entries * in system catalogs. A null ACL will be treated as meaning "default @@ -311,6 +319,10 @@ extern void aclcheck_error_col(AclResult aclerr, AclObjectKind objectkind, extern void aclcheck_error_type(AclResult aclerr, Oid typeOid); +extern void recordExtObjInitPriv(Oid objoid, Oid classoid); +extern void removeExtObjInitPriv(Oid objoid, Oid classoid); + + /* ownercheck routines just return true (owner) or false (not) */ extern bool pg_class_ownercheck(Oid class_oid, Oid roleid); extern bool pg_type_ownercheck(Oid type_oid, Oid roleid); diff --git a/src/include/utils/catcache.h b/src/include/utils/catcache.h index 253c7b53ed..9a21279748 100644 --- a/src/include/utils/catcache.h +++ b/src/include/utils/catcache.h @@ -162,7 +162,6 @@ typedef struct catcacheheader extern PGDLLIMPORT MemoryContext CacheMemoryContext; extern void CreateCacheMemoryContext(void); -extern void AtEOXact_CatCache(bool isCommit); extern CatCache *InitCatCache(int id, Oid reloid, Oid indexoid, int nkeys, const int *key, @@ -185,7 +184,7 @@ extern void ReleaseCatCacheList(CatCList *list); extern void ResetCatalogCaches(void); extern void CatalogCacheFlushCatalog(Oid catId); -extern void CatalogCacheIdInvalidate(int cacheId, uint32 hashValue); +extern void CatCacheInvalidate(CatCache *cache, uint32 hashValue); extern void PrepareToInvalidateCacheTuple(Relation relation, HeapTuple tuple, HeapTuple newtuple, diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h index 0bf9f21067..f035ce737b 100644 --- a/src/include/utils/guc.h +++ b/src/include/utils/guc.h @@ -252,6 +252,9 @@ extern int client_min_messages; extern int log_min_duration_statement; extern int log_temp_files; +extern int autoprepare_threshold; +extern int autoprepare_limit; + extern int temp_file_limit; extern int num_temp_buffers; diff --git a/src/include/utils/memutils.h b/src/include/utils/memutils.h index e6334a2038..5125833b6a 100644 --- a/src/include/utils/memutils.h +++ b/src/include/utils/memutils.h @@ -41,7 +41,7 @@ #define AllocSizeIsValid(size) ((Size) (size) <= MaxAllocSize) -#define MaxAllocHugeSize ((Size) -1 >> 1) /* SIZE_MAX / 2 */ +#define MaxAllocHugeSize (SIZE_MAX / 2) #define AllocHugeSizeIsValid(size) ((Size) (size) <= MaxAllocHugeSize) diff --git a/src/include/utils/rel.h b/src/include/utils/rel.h index ed14442cfe..fa15f28468 100644 --- a/src/include/utils/rel.h +++ b/src/include/utils/rel.h @@ -270,7 +270,9 @@ typedef struct StdRdOptions * from the pov of logical decoding. Note multiple eval of argument! */ #define RelationIsUsedAsCatalogTable(relation) \ - ((relation)->rd_options ? \ + ((relation)->rd_options && \ + ((relation)->rd_rel->relkind == RELKIND_RELATION || \ + (relation)->rd_rel->relkind == RELKIND_MATVIEW) ? \ ((StdRdOptions *) (relation)->rd_options)->user_catalog_table : false) /* diff --git a/src/include/utils/selfuncs.h b/src/include/utils/selfuncs.h index 8e0d317468..61233aed7a 100644 --- a/src/include/utils/selfuncs.h +++ b/src/include/utils/selfuncs.h @@ -75,6 +75,7 @@ typedef struct VariableStatData Oid atttype; /* type to pass to get_attstatsslot */ int32 atttypmod; /* typmod to pass to get_attstatsslot */ bool isunique; /* matches unique index or DISTINCT clause */ + bool acl_ok; /* result of ACL check on table or column */ } VariableStatData; #define ReleaseVariableStats(vardata) \ @@ -153,6 +154,7 @@ extern PGDLLIMPORT get_index_stats_hook_type get_index_stats_hook; extern void examine_variable(PlannerInfo *root, Node *node, int varRelid, VariableStatData *vardata); +extern bool statistic_proc_security_check(VariableStatData *vardata, Oid func_oid); extern bool get_restriction_variable(PlannerInfo *root, List *args, int varRelid, VariableStatData *vardata, Node **other, diff --git a/src/include/utils/snapmgr.h b/src/include/utils/snapmgr.h index 9e3827249e..512e2b6361 100644 --- a/src/include/utils/snapmgr.h +++ b/src/include/utils/snapmgr.h @@ -69,6 +69,7 @@ extern Snapshot GetOldestSnapshot(void); extern Snapshot GetCatalogSnapshot(Oid relid); extern Snapshot GetNonHistoricCatalogSnapshot(Oid relid); extern void InvalidateCatalogSnapshot(void); +extern void InvalidateCatalogSnapshotConditionally(void); extern void PushActiveSnapshot(Snapshot snapshot); extern void PushCopiedSnapshot(Snapshot snapshot); diff --git a/src/include/utils/syscache.h b/src/include/utils/syscache.h index 256615b671..d4ac93d958 100644 --- a/src/include/utils/syscache.h +++ b/src/include/utils/syscache.h @@ -97,6 +97,8 @@ enum SysCacheIdentifier TYPEOID, USERMAPPINGOID, USERMAPPINGUSERSERVER + +#define SysCacheSize (USERMAPPINGUSERSERVER + 1) }; extern void InitCatalogCache(void); @@ -129,6 +131,8 @@ struct catclist; extern struct catclist *SearchSysCacheList(int cacheId, int nkeys, Datum key1, Datum key2, Datum key3, Datum key4); +extern void SysCacheInvalidate(int cacheId, uint32 hashValue); + extern bool RelationInvalidatesSnapshotsOnly(Oid relid); extern bool RelationHasSysCache(Oid relid); extern bool RelationSupportsSysCache(Oid relid); diff --git a/src/include/utils/typcache.h b/src/include/utils/typcache.h index c72efcccb1..d187650ebe 100644 --- a/src/include/utils/typcache.h +++ b/src/include/utils/typcache.h @@ -131,9 +131,9 @@ typedef struct DomainConstraintRef { List *constraints; /* list of DomainConstraintState nodes */ MemoryContext refctx; /* context holding DomainConstraintRef */ + TypeCacheEntry *tcache; /* typcache entry for domain type */ /* Management data --- treat these fields as private to typcache.c */ - TypeCacheEntry *tcache; /* owning typcache entry */ DomainConstraintCache *dcc; /* current constraints, or NULL if none */ MemoryContextCallback callback; /* used to release refcount when done */ } DomainConstraintRef; diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c index a3ae92eb35..d5a463d940 100644 --- a/src/interfaces/ecpg/ecpglib/execute.c +++ b/src/interfaces/ecpg/ecpglib/execute.c @@ -2,7 +2,7 @@ /* * The aim is to get a simpler interface to the database routines. - * All the tidieous messing around with tuples is supposed to be hidden + * All the tedious messing around with tuples is supposed to be hidden * by this function. */ /* Author: Linus Tolke diff --git a/src/interfaces/ecpg/ecpglib/misc.c b/src/interfaces/ecpg/ecpglib/misc.c index a13aa0a9da..019ebe10f9 100644 --- a/src/interfaces/ecpg/ecpglib/misc.c +++ b/src/interfaces/ecpg/ecpglib/misc.c @@ -213,9 +213,15 @@ ECPGtrans(int lineno, const char *connection_name, const char *transaction) * If we got a transaction command but have no open transaction, we * have to start one, unless we are in autocommit, where the * developers have to take care themselves. However, if the command is - * a begin statement, we just execute it once. + * a begin statement, we just execute it once. And if the command is + * commit or rollback prepared, we don't execute it. */ - if (PQtransactionStatus(con->connection) == PQTRANS_IDLE && !con->autocommit && strncmp(transaction, "begin", 5) != 0 && strncmp(transaction, "start", 5) != 0) + if (PQtransactionStatus(con->connection) == PQTRANS_IDLE && + !con->autocommit && + strncmp(transaction, "begin", 5) != 0 && + strncmp(transaction, "start", 5) != 0 && + strncmp(transaction, "commit prepared", 15) != 0 && + strncmp(transaction, "rollback prepared", 17) != 0) { res = PQexec(con->connection, "begin transaction"); if (!ecpg_check_PQresult(res, lineno, con->connection, ECPG_COMPAT_PGSQL)) diff --git a/src/interfaces/ecpg/ecpglib/po/es.po b/src/interfaces/ecpg/ecpglib/po/es.po index 2e5902fb10..9e40436a58 100644 --- a/src/interfaces/ecpg/ecpglib/po/es.po +++ b/src/interfaces/ecpg/ecpglib/po/es.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: ecpglib (PostgreSQL 9.6)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-05-02 20:07+0000\n" +"POT-Creation-Date: 2017-08-27 21:47+0000\n" "PO-Revision-Date: 2016-05-03 12:17-0300\n" "Last-Translator: Emanuel Calvo Franco \n" "Language-Team: PgSQL-es-Ayuda \n" diff --git a/src/interfaces/ecpg/ecpglib/po/fr.po b/src/interfaces/ecpg/ecpglib/po/fr.po index e242b782b3..b897ec9d99 100644 --- a/src/interfaces/ecpg/ecpglib/po/fr.po +++ b/src/interfaces/ecpg/ecpglib/po/fr.po @@ -1,10 +1,10 @@ # translation of ecpglib.po to fr_fr # french message translation file for ecpglib # -# Use these quotes: « %s » +# Use these quotes: « %s » # # Guillaume Lelarge , 2009. -# Stéphane Schildknecht , 2009. +# Stéphane Schildknecht , 2009. msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" @@ -15,7 +15,7 @@ msgstr "" "Language-Team: PostgreSQLfr \n" "Language: fr\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: connect.c:226 @@ -26,22 +26,22 @@ msgstr "texte du message vide" #: connect.c:407 #: connect.c:520 msgid "" -msgstr "" +msgstr "" #: error.c:29 #, c-format msgid "no data found on line %d" -msgstr "aucune donnée trouvée sur la ligne %d" +msgstr "aucune donnée trouvée sur la ligne %d" #: error.c:39 #, c-format msgid "out of memory on line %d" -msgstr "mémoire épuisée à la ligne %d" +msgstr "mémoire épuisée à la ligne %d" #: error.c:49 #, c-format msgid "unsupported type \"%s\" on line %d" -msgstr "type « %s » non supporté sur la ligne %d" +msgstr "type « %s » non supporté sur la ligne %d" #: error.c:59 #, c-format @@ -56,34 +56,34 @@ msgstr "trop peu d'arguments sur la ligne %d" #: error.c:79 #, c-format msgid "invalid input syntax for type int: \"%s\", on line %d" -msgstr "syntaxe invalide en entrée pour le type int : « %s » sur la ligne %d" +msgstr "syntaxe invalide en entrée pour le type int : « %s » sur la ligne %d" #: error.c:89 #, c-format msgid "invalid input syntax for type unsigned int: \"%s\", on line %d" -msgstr "syntaxe invalide en entrée pour le type unisgned int : « %s » sur la ligne %d" +msgstr "syntaxe invalide en entrée pour le type unisgned int : « %s » sur la ligne %d" #: error.c:99 #, c-format msgid "invalid input syntax for floating-point type: \"%s\", on line %d" -msgstr "syntaxe invalide en entrée pour le type float : « %s » sur la ligne %d" +msgstr "syntaxe invalide en entrée pour le type float : « %s » sur la ligne %d" #: error.c:110 #, c-format msgid "invalid syntax for type boolean: \"%s\", on line %d" -msgstr "syntaxe invalide en entrée pour le type booléen : « %s » sur la ligne %d" +msgstr "syntaxe invalide en entrée pour le type booléen : « %s » sur la ligne %d" #: error.c:118 #, c-format msgid "could not convert boolean value: size mismatch, on line %d" msgstr "" -"n'a pas pu convertir la valeur booléenne : différence de taille sur la\n" +"n'a pas pu convertir la valeur booléenne : différence de taille sur la\n" "ligne %d" #: error.c:128 #, c-format msgid "empty query on line %d" -msgstr "requête vide sur la ligne %d" +msgstr "requête vide sur la ligne %d" #: error.c:138 #, c-format @@ -98,42 +98,42 @@ msgstr "la valeur n'a pas de type tableau sur la ligne %d" #: error.c:158 #, c-format msgid "data read from server is not an array on line %d" -msgstr "la donnée lue du serveur n'est pas un tableau sur la ligne %d" +msgstr "la donnée lue du serveur n'est pas un tableau sur la ligne %d" #: error.c:168 #, c-format msgid "inserting an array of variables is not supported on line %d" -msgstr "l'insertion d'un tableau de variables n'est pas supportée, sur la ligne %d" +msgstr "l'insertion d'un tableau de variables n'est pas supportée, sur la ligne %d" #: error.c:178 #, c-format msgid "connection \"%s\" does not exist on line %d" -msgstr "la connexion « %s » n'existe pas en ligne %d" +msgstr "la connexion « %s » n'existe pas en ligne %d" #: error.c:188 #, c-format msgid "not connected to connection \"%s\" on line %d" -msgstr "non connecté à la connexion « %s » en ligne %d" +msgstr "non connecté à la connexion « %s » en ligne %d" #: error.c:198 #, c-format msgid "invalid statement name \"%s\" on line %d" -msgstr "nom d'instruction « %s » invalide sur la ligne %d" +msgstr "nom d'instruction « %s » invalide sur la ligne %d" #: error.c:208 #, c-format msgid "descriptor \"%s\" not found on line %d" -msgstr "descripteur « %s » introuvable sur la ligne %d" +msgstr "descripteur « %s » introuvable sur la ligne %d" #: error.c:218 #, c-format msgid "descriptor index out of range on line %d" -msgstr "index de descripteur hors d'échelle sur la ligne %d" +msgstr "index de descripteur hors d'échelle sur la ligne %d" #: error.c:228 #, c-format msgid "unrecognized descriptor item \"%s\" on line %d" -msgstr "élément descripteur « %s » non reconnu sur la ligne %d" +msgstr "élément descripteur « %s » non reconnu sur la ligne %d" #: error.c:238 #, c-format @@ -143,7 +143,7 @@ msgstr "la variable n'est pas de type numeric sur la ligne %d" #: error.c:248 #, c-format msgid "variable does not have a character type on line %d" -msgstr "la variable n'est pas de type caractère sur la ligne %d" +msgstr "la variable n'est pas de type caractère sur la ligne %d" #: error.c:258 #, c-format @@ -153,7 +153,7 @@ msgstr "erreur dans le traitement de la transaction en ligne %d" #: error.c:268 #, c-format msgid "could not connect to database \"%s\" on line %d" -msgstr "n'a pas pu se connecter à la base de données « %s » en ligne %d" +msgstr "n'a pas pu se connecter à la base de données « %s » en ligne %d" #: error.c:278 #, c-format @@ -162,7 +162,7 @@ msgstr "erreur SQL %d en ligne %d" #: error.c:316 msgid "the connection to the server was lost" -msgstr "la connexion au serveur a été perdue" +msgstr "la connexion au serveur a été perdue" #: error.c:402 #, c-format diff --git a/src/interfaces/ecpg/ecpglib/po/ko.po b/src/interfaces/ecpg/ecpglib/po/ko.po index a02de78f9d..69bffb8e17 100644 --- a/src/interfaces/ecpg/ecpglib/po/ko.po +++ b/src/interfaces/ecpg/ecpglib/po/ko.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: ecpglib (PostgreSQL) 9.5\n" +"Project-Id-Version: ecpglib (PostgreSQL) 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2015-12-23 15:02+0900\n" -"PO-Revision-Date: 2016-01-20 21:53-0500\n" +"POT-Creation-Date: 2016-09-26 14:02+0900\n" +"PO-Revision-Date: 2016-09-26 15:37+0900\n" "Last-Translator: Ioseph Kim \n" "Language-Team: Korean \n" "Language: ko\n" @@ -26,7 +26,7 @@ msgstr "<초기값>" #: descriptor.c:833 misc.c:120 msgid "NULL" -msgstr "" +msgstr "NULL" #. translator: this string will be truncated at 149 characters expanded. #: error.c:33 @@ -195,4 +195,4 @@ msgstr "SQL 오류: %s\n" #: execute.c:1962 msgid "" -msgstr "" +msgstr "" diff --git a/src/interfaces/ecpg/ecpglib/po/ru.po b/src/interfaces/ecpg/ecpglib/po/ru.po index fcae3223b6..eb4434fd78 100644 --- a/src/interfaces/ecpg/ecpglib/po/ru.po +++ b/src/interfaces/ecpg/ecpglib/po/ru.po @@ -1,7 +1,7 @@ # Russian message translation file for ecpglib # Copyright (C) 2012-2016 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Alexander Lakhin , 2012-2016. +# Alexander Lakhin , 2012-2017. # msgid "" msgstr "" diff --git a/src/interfaces/ecpg/pgtypeslib/datetime.c b/src/interfaces/ecpg/pgtypeslib/datetime.c index 3b0855f722..7216b432d4 100644 --- a/src/interfaces/ecpg/pgtypeslib/datetime.c +++ b/src/interfaces/ecpg/pgtypeslib/datetime.c @@ -324,7 +324,7 @@ PGTYPESdate_fmt_asc(date dDate, const char *fmtstring, char *outbuf) * * function works as follows: * - first we analyze the parameters - * - if this is a special case with no delimiters, add delimters + * - if this is a special case with no delimiters, add delimiters * - find the tokens. First we look for numerical values. If we have found * less than 3 tokens, we check for the months' names and thereafter for * the abbreviations of the months' names. diff --git a/src/interfaces/ecpg/pgtypeslib/numeric.c b/src/interfaces/ecpg/pgtypeslib/numeric.c index 120794550d..a93d074de2 100644 --- a/src/interfaces/ecpg/pgtypeslib/numeric.c +++ b/src/interfaces/ecpg/pgtypeslib/numeric.c @@ -1368,11 +1368,11 @@ PGTYPESnumeric_cmp(numeric *var1, numeric *var2) { /* use cmp_abs function to calculate the result */ - /* both are positive: normal comparation with cmp_abs */ + /* both are positive: normal comparison with cmp_abs */ if (var1->sign == NUMERIC_POS && var2->sign == NUMERIC_POS) return cmp_abs(var1, var2); - /* both are negative: return the inverse of the normal comparation */ + /* both are negative: return the inverse of the normal comparison */ if (var1->sign == NUMERIC_NEG && var2->sign == NUMERIC_NEG) { /* diff --git a/src/interfaces/ecpg/preproc/descriptor.c b/src/interfaces/ecpg/preproc/descriptor.c index 9b4eb630a9..c6442c1805 100644 --- a/src/interfaces/ecpg/preproc/descriptor.c +++ b/src/interfaces/ecpg/preproc/descriptor.c @@ -58,7 +58,7 @@ ECPGnumeric_lvalue(char *name) case ECPGt_unsigned_long: case ECPGt_unsigned_long_long: case ECPGt_const: - fputs(name, yyout); + fputs(name, base_yyout); break; default: mmerror(PARSE_ERROR, ET_ERROR, "variable \"%s\" must have a numeric type", name); @@ -152,7 +152,7 @@ output_get_descr_header(char *desc_name) { struct assignment *results; - fprintf(yyout, "{ ECPGget_desc_header(__LINE__, %s, &(", desc_name); + fprintf(base_yyout, "{ ECPGget_desc_header(__LINE__, %s, &(", desc_name); for (results = assignments; results != NULL; results = results->next) { if (results->value == ECPGd_count) @@ -162,7 +162,7 @@ output_get_descr_header(char *desc_name) } drop_assignments(); - fprintf(yyout, "));\n"); + fprintf(base_yyout, "));\n"); whenever_action(3); } @@ -171,7 +171,7 @@ output_get_descr(char *desc_name, char *index) { struct assignment *results; - fprintf(yyout, "{ ECPGget_desc(__LINE__, %s, %s,", desc_name, index); + fprintf(base_yyout, "{ ECPGget_desc(__LINE__, %s, %s,", desc_name, index); for (results = assignments; results != NULL; results = results->next) { const struct variable *v = find_variable(results->variable); @@ -188,12 +188,13 @@ output_get_descr(char *desc_name, char *index) default: break; } - fprintf(yyout, "%s,", get_dtype(results->value)); - ECPGdump_a_type(yyout, v->name, v->type, v->brace_level, NULL, NULL, -1, NULL, NULL, str_zero, NULL, NULL); + fprintf(base_yyout, "%s,", get_dtype(results->value)); + ECPGdump_a_type(base_yyout, v->name, v->type, v->brace_level, + NULL, NULL, -1, NULL, NULL, str_zero, NULL, NULL); free(str_zero); } drop_assignments(); - fputs("ECPGd_EODT);\n", yyout); + fputs("ECPGd_EODT);\n", base_yyout); whenever_action(2 | 1); } @@ -203,7 +204,7 @@ output_set_descr_header(char *desc_name) { struct assignment *results; - fprintf(yyout, "{ ECPGset_desc_header(__LINE__, %s, (int)(", desc_name); + fprintf(base_yyout, "{ ECPGset_desc_header(__LINE__, %s, (int)(", desc_name); for (results = assignments; results != NULL; results = results->next) { if (results->value == ECPGd_count) @@ -213,7 +214,7 @@ output_set_descr_header(char *desc_name) } drop_assignments(); - fprintf(yyout, "));\n"); + fprintf(base_yyout, "));\n"); whenever_action(3); } @@ -264,7 +265,7 @@ output_set_descr(char *desc_name, char *index) { struct assignment *results; - fprintf(yyout, "{ ECPGset_desc(__LINE__, %s, %s,", desc_name, index); + fprintf(base_yyout, "{ ECPGset_desc(__LINE__, %s, %s,", desc_name, index); for (results = assignments; results != NULL; results = results->next) { const struct variable *v = find_variable(results->variable); @@ -297,8 +298,9 @@ output_set_descr(char *desc_name, char *index) { char *str_zero = mm_strdup("0"); - fprintf(yyout, "%s,", get_dtype(results->value)); - ECPGdump_a_type(yyout, v->name, v->type, v->brace_level, NULL, NULL, -1, NULL, NULL, str_zero, NULL, NULL); + fprintf(base_yyout, "%s,", get_dtype(results->value)); + ECPGdump_a_type(base_yyout, v->name, v->type, v->brace_level, + NULL, NULL, -1, NULL, NULL, str_zero, NULL, NULL); free(str_zero); } break; @@ -308,7 +310,7 @@ output_set_descr(char *desc_name, char *index) } } drop_assignments(); - fputs("ECPGd_EODT);\n", yyout); + fputs("ECPGd_EODT);\n", base_yyout); whenever_action(2 | 1); } diff --git a/src/interfaces/ecpg/preproc/ecpg.addons b/src/interfaces/ecpg/preproc/ecpg.addons index b3b36cf72d..ca3efadc48 100644 --- a/src/interfaces/ecpg/preproc/ecpg.addons +++ b/src/interfaces/ecpg/preproc/ecpg.addons @@ -8,7 +8,7 @@ ECPG: stmtClosePortalStmt block if (connection) mmerror(PARSE_ERROR, ET_ERROR, "AT option not allowed in CLOSE DATABASE statement"); - fprintf(yyout, "{ ECPGdisconnect(__LINE__, \"CURRENT\");"); + fprintf(base_yyout, "{ ECPGdisconnect(__LINE__, \"CURRENT\");"); whenever_action(2); free($1); break; @@ -42,14 +42,14 @@ ECPG: stmtPrepareStmt block } ECPG: stmtTransactionStmt block { - fprintf(yyout, "{ ECPGtrans(__LINE__, %s, \"%s\");", connection ? connection : "NULL", $1); + fprintf(base_yyout, "{ ECPGtrans(__LINE__, %s, \"%s\");", connection ? connection : "NULL", $1); whenever_action(2); free($1); } ECPG: stmtViewStmt rule | ECPGAllocateDescr { - fprintf(yyout,"ECPGallocate_desc(__LINE__, %s);",$1); + fprintf(base_yyout,"ECPGallocate_desc(__LINE__, %s);",$1); whenever_action(0); free($1); } @@ -58,7 +58,7 @@ ECPG: stmtViewStmt rule if (connection) mmerror(PARSE_ERROR, ET_ERROR, "AT option not allowed in CONNECT statement"); - fprintf(yyout, "{ ECPGconnect(__LINE__, %d, %s, %d); ", compat, $1, autocommit); + fprintf(base_yyout, "{ ECPGconnect(__LINE__, %d, %s, %d); ", compat, $1, autocommit); reset_variables(); whenever_action(2); free($1); @@ -69,7 +69,7 @@ ECPG: stmtViewStmt rule } | ECPGDeallocateDescr { - fprintf(yyout,"ECPGdeallocate_desc(__LINE__, %s);",$1); + fprintf(base_yyout,"ECPGdeallocate_desc(__LINE__, %s);",$1); whenever_action(0); free($1); } @@ -79,10 +79,10 @@ ECPG: stmtViewStmt rule } | ECPGDescribe { - fprintf(yyout, "{ ECPGdescribe(__LINE__, %d, %s,", compat, $1); + fprintf(base_yyout, "{ ECPGdescribe(__LINE__, %d, %s,", compat, $1); dump_variables(argsresult, 1); - fputs("ECPGt_EORT);", yyout); - fprintf(yyout, "}"); + fputs("ECPGt_EORT);", base_yyout); + fprintf(base_yyout, "}"); output_line_number(); free($1); @@ -92,7 +92,7 @@ ECPG: stmtViewStmt rule if (connection) mmerror(PARSE_ERROR, ET_ERROR, "AT option not allowed in DISCONNECT statement"); - fprintf(yyout, "{ ECPGdisconnect(__LINE__, %s);", + fprintf(base_yyout, "{ ECPGdisconnect(__LINE__, %s);", $1 ? $1 : "\"CURRENT\""); whenever_action(2); free($1); @@ -103,11 +103,11 @@ ECPG: stmtViewStmt rule const char *con = connection ? connection : "NULL"; if (strcmp($1, "all") == 0) - fprintf(yyout, "{ ECPGdeallocate_all(__LINE__, %d, %s);", compat, con); + fprintf(base_yyout, "{ ECPGdeallocate_all(__LINE__, %d, %s);", compat, con); else if ($1[0] == ':') - fprintf(yyout, "{ ECPGdeallocate(__LINE__, %d, %s, %s);", compat, con, $1+1); + fprintf(base_yyout, "{ ECPGdeallocate(__LINE__, %d, %s, %s);", compat, con, $1+1); else - fprintf(yyout, "{ ECPGdeallocate(__LINE__, %d, %s, \"%s\");", compat, con, $1); + fprintf(base_yyout, "{ ECPGdeallocate(__LINE__, %d, %s, \"%s\");", compat, con, $1); whenever_action(2); free($1); @@ -138,7 +138,7 @@ ECPG: stmtViewStmt rule } | ECPGSetAutocommit { - fprintf(yyout, "{ ECPGsetcommit(__LINE__, \"%s\", %s);", $1, connection ? connection : "NULL"); + fprintf(base_yyout, "{ ECPGsetcommit(__LINE__, \"%s\", %s);", $1, connection ? connection : "NULL"); whenever_action(2); free($1); } @@ -147,7 +147,7 @@ ECPG: stmtViewStmt rule if (connection) mmerror(PARSE_ERROR, ET_ERROR, "AT option not allowed in SET CONNECTION statement"); - fprintf(yyout, "{ ECPGsetconn(__LINE__, %s);", $1); + fprintf(base_yyout, "{ ECPGsetconn(__LINE__, %s);", $1); whenever_action(2); free($1); } @@ -169,7 +169,7 @@ ECPG: stmtViewStmt rule if (connection) mmerror(PARSE_ERROR, ET_ERROR, "AT option not allowed in TYPE statement"); - fprintf(yyout, "%s", $1); + fprintf(base_yyout, "%s", $1); free($1); output_line_number(); } diff --git a/src/interfaces/ecpg/preproc/ecpg.c b/src/interfaces/ecpg/preproc/ecpg.c index 5922603c92..047743df5f 100644 --- a/src/interfaces/ecpg/preproc/ecpg.c +++ b/src/interfaces/ecpg/preproc/ecpg.c @@ -166,11 +166,11 @@ main(int argc, char *const argv[]) case 'o': output_filename = mm_strdup(optarg); if (strcmp(output_filename, "-") == 0) - yyout = stdout; + base_yyout = stdout; else - yyout = fopen(output_filename, PG_BINARY_W); + base_yyout = fopen(output_filename, PG_BINARY_W); - if (yyout == NULL) + if (base_yyout == NULL) { fprintf(stderr, _("%s: could not open file \"%s\": %s\n"), progname, output_filename, strerror(errno)); @@ -233,7 +233,7 @@ main(int argc, char *const argv[]) break; case 'd': #ifdef YYDEBUG - yydebug = 1; + base_yydebug = 1; #else fprintf(stderr, _("%s: parser debug support (-d) not available\n"), progname); @@ -280,7 +280,7 @@ main(int argc, char *const argv[]) { input_filename = mm_alloc(strlen("stdin") + 1); strcpy(input_filename, "stdin"); - yyin = stdin; + base_yyin = stdin; } else { @@ -304,24 +304,25 @@ main(int argc, char *const argv[]) ptr2ext[4] = '\0'; } - yyin = fopen(input_filename, PG_BINARY_R); + base_yyin = fopen(input_filename, PG_BINARY_R); } if (out_option == 0) /* calculate the output name */ { if (strcmp(input_filename, "stdin") == 0) - yyout = stdout; + base_yyout = stdout; else { - output_filename = mm_strdup(input_filename); + output_filename = mm_alloc(strlen(input_filename) + 3); + strcpy(output_filename, input_filename); ptr2ext = strrchr(output_filename, '.'); /* make extension = .c resp. .h */ ptr2ext[1] = (header_mode == true) ? 'h' : 'c'; ptr2ext[2] = '\0'; - yyout = fopen(output_filename, PG_BINARY_W); - if (yyout == NULL) + base_yyout = fopen(output_filename, PG_BINARY_W); + if (base_yyout == NULL) { fprintf(stderr, _("%s: could not open file \"%s\": %s\n"), progname, output_filename, strerror(errno)); @@ -332,7 +333,7 @@ main(int argc, char *const argv[]) } } - if (yyin == NULL) + if (base_yyin == NULL) fprintf(stderr, _("%s: could not open file \"%s\": %s\n"), progname, argv[fnr], strerror(errno)); else @@ -427,23 +428,23 @@ main(int argc, char *const argv[]) /* we need several includes */ /* but not if we are in header mode */ if (regression_mode) - fprintf(yyout, "/* Processed by ecpg (regression mode) */\n"); + fprintf(base_yyout, "/* Processed by ecpg (regression mode) */\n"); else - fprintf(yyout, "/* Processed by ecpg (%d.%d.%d) */\n", MAJOR_VERSION, MINOR_VERSION, PATCHLEVEL); + fprintf(base_yyout, "/* Processed by ecpg (%d.%d.%d) */\n", MAJOR_VERSION, MINOR_VERSION, PATCHLEVEL); if (header_mode == false) { - fprintf(yyout, "/* These include files are added by the preprocessor */\n#include \n#include \n#include \n"); + fprintf(base_yyout, "/* These include files are added by the preprocessor */\n#include \n#include \n#include \n"); /* add some compatibility headers */ if (INFORMIX_MODE) - fprintf(yyout, "/* Needed for informix compatibility */\n#include \n"); + fprintf(base_yyout, "/* Needed for informix compatibility */\n#include \n"); - fprintf(yyout, "/* End of automatic include section */\n"); + fprintf(base_yyout, "/* End of automatic include section */\n"); } if (regression_mode) - fprintf(yyout, "#define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y))\n"); + fprintf(base_yyout, "#define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y))\n"); output_line_number(); @@ -458,10 +459,10 @@ main(int argc, char *const argv[]) if (!(ptr->opened)) mmerror(PARSE_ERROR, ET_WARNING, "cursor \"%s\" has been declared but not opened", ptr->name); - if (yyin != NULL && yyin != stdin) - fclose(yyin); - if (out_option == 0 && yyout != stdout) - fclose(yyout); + if (base_yyin != NULL && base_yyin != stdin) + fclose(base_yyin); + if (out_option == 0 && base_yyout != stdout) + fclose(base_yyout); /* * If there was an error, delete the output file. diff --git a/src/interfaces/ecpg/preproc/ecpg.header b/src/interfaces/ecpg/preproc/ecpg.header index f41999a86f..a52da01b1f 100644 --- a/src/interfaces/ecpg/preproc/ecpg.header +++ b/src/interfaces/ecpg/preproc/ecpg.header @@ -72,7 +72,7 @@ vmmerror(int error_code, enum errortype type, const char *error, va_list ap) /* localize the error message string */ error = _(error); - fprintf(stderr, "%s:%d: ", input_filename, yylineno); + fprintf(stderr, "%s:%d: ", input_filename, base_yylineno); switch(type) { @@ -117,10 +117,10 @@ mmfatal(int error_code, const char *error, ...) vmmerror(error_code, ET_ERROR, error, ap); va_end(ap); - if (yyin) - fclose(yyin); - if (yyout) - fclose(yyout); + if (base_yyin) + fclose(base_yyin); + if (base_yyout) + fclose(base_yyout); if (strcmp(output_filename, "-") != 0 && unlink(output_filename) != 0) fprintf(stderr, _("could not remove output file \"%s\"\n"), output_filename); @@ -195,7 +195,7 @@ make3_str(char *str1, char *str2, char *str3) static char * make_name(void) { - return mm_strdup(yytext); + return mm_strdup(base_yytext); } static char * @@ -207,7 +207,7 @@ create_questionmarks(char *name, bool array) /* In case we have a struct, we have to print as many "?" as there are attributes in the struct * An array is only allowed together with an element argument - * This is essantially only used for inserts, but using a struct as input parameter is an error anywhere else + * This is essentially only used for inserts, but using a struct as input parameter is an error anywhere else * so we don't have to worry here. */ if (p->type->type == ECPGt_struct || (array && p->type->type == ECPGt_array && p->type->u.element->type == ECPGt_struct)) @@ -352,7 +352,7 @@ adjust_outofscope_cursor_vars(struct cursor *cur) else { newvar = new_variable(cat_str(4, mm_strdup("("), - mm_strdup(ecpg_type_name(ptr->variable->type->type)), + mm_strdup(ecpg_type_name(ptr->variable->type->u.element->type)), mm_strdup(" *)(ECPGget_var("), mm_strdup(var_text)), ECPGmake_array_type(ECPGmake_simple_type(ptr->variable->type->u.element->type, diff --git a/src/interfaces/ecpg/preproc/ecpg.trailer b/src/interfaces/ecpg/preproc/ecpg.trailer index de0df7440f..d273070dab 100644 --- a/src/interfaces/ecpg/preproc/ecpg.trailer +++ b/src/interfaces/ecpg/preproc/ecpg.trailer @@ -8,14 +8,14 @@ statement: ecpgstart at stmt ';' { connection = NULL; } | ecpgstart stmt ';' | ecpgstart ECPGVarDeclaration { - fprintf(yyout, "%s", $2); + fprintf(base_yyout, "%s", $2); free($2); output_line_number(); } | ECPGDeclaration - | c_thing { fprintf(yyout, "%s", $1); free($1); } - | CPP_LINE { fprintf(yyout, "%s", $1); free($1); } - | '{' { braces_open++; fputs("{", yyout); } + | c_thing { fprintf(base_yyout, "%s", $1); free($1); } + | CPP_LINE { fprintf(base_yyout, "%s", $1); free($1); } + | '{' { braces_open++; fputs("{", base_yyout); } | '}' { remove_typedefs(braces_open); @@ -25,7 +25,7 @@ statement: ecpgstart at stmt ';' { connection = NULL; } free(current_function); current_function = NULL; } - fputs("}", yyout); + fputs("}", base_yyout); } ; @@ -355,7 +355,7 @@ ECPGExecuteImmediateStmt: EXECUTE IMMEDIATE execstring $$ = $3; }; /* - * variable decalartion outside exec sql declare block + * variable declaration outside exec sql declare block */ ECPGVarDeclaration: single_vt_declaration; @@ -380,10 +380,10 @@ ecpg_interval: opt_interval { $$ = $1; } * variable declaration inside exec sql declare block */ ECPGDeclaration: sql_startdeclare - { fputs("/* exec sql begin declare section */", yyout); } + { fputs("/* exec sql begin declare section */", base_yyout); } var_type_declarations sql_enddeclare { - fprintf(yyout, "%s/* exec sql end declare section */", $3); + fprintf(base_yyout, "%s/* exec sql end declare section */", $3); free($3); output_line_number(); } @@ -417,7 +417,7 @@ type_declaration: S_TYPEDEF { add_typedef($5, $6.index1, $6.index2, $3.type_enum, $3.type_dimension, $3.type_index, initializer, *$4 ? 1 : 0); - fprintf(yyout, "typedef %s %s %s %s;\n", $3.type_str, *$4 ? "*" : "", $5, $6.str); + fprintf(base_yyout, "typedef %s %s %s %s;\n", $3.type_str, *$4 ? "*" : "", $5, $6.str); output_line_number(); $$ = mm_strdup(""); }; @@ -707,7 +707,7 @@ struct_union_type_with_symbol: s_struct_union_symbol free(forward_name); forward_name = NULL; - /* This is essantially a typedef but needs the keyword struct/union as well. + /* This is essentially a typedef but needs the keyword struct/union as well. * So we create the typedef for each struct definition with symbol */ for (ptr = types; ptr != NULL; ptr = ptr->next) { @@ -1275,7 +1275,7 @@ descriptor_item: SQL_CARDINALITY { $$ = ECPGd_cardinality; } ; /* - * set/reset the automatic transaction mode, this needs a differnet handling + * set/reset the automatic transaction mode, this needs a different handling * as the other set commands */ ECPGSetAutocommit: SET SQL_AUTOCOMMIT '=' on_off { $$ = $4; } @@ -1287,7 +1287,7 @@ on_off: ON { $$ = mm_strdup("on"); } ; /* - * set the actual connection, this needs a differnet handling as the other + * set the actual connection, this needs a different handling as the other * set commands */ ECPGSetConnection: SET CONNECTION TO connection_object { $$ = $4; } @@ -1877,9 +1877,8 @@ Iresult: Iconst { $$ = $1; } ; execute_rest: /* EMPTY */ { $$ = EMPTY; } - | ecpg_using ecpg_into { $$ = EMPTY; } + | ecpg_using opt_ecpg_into { $$ = EMPTY; } | ecpg_into ecpg_using { $$ = EMPTY; } - | ecpg_using { $$ = EMPTY; } | ecpg_into { $$ = EMPTY; } ; @@ -1887,6 +1886,10 @@ ecpg_into: INTO into_list { $$ = EMPTY; } | into_descriptor { $$ = $1; } ; +opt_ecpg_into: /* EMPTY */ { $$ = EMPTY; } + | ecpg_into { $$ = $1; } + ; + ecpg_fetch_into: ecpg_into { $$ = $1; } | using_descriptor { @@ -1909,7 +1912,7 @@ void base_yyerror(const char *error) { /* translator: %s is typically the translation of "syntax error" */ mmerror(PARSE_ERROR, ET_ERROR, "%s at or near \"%s\"", - _(error), token_start ? token_start : yytext); + _(error), token_start ? token_start : base_yytext); } void parser_init(void) diff --git a/src/interfaces/ecpg/preproc/ecpg.type b/src/interfaces/ecpg/preproc/ecpg.type index ac6aa000ac..9497b91b9d 100644 --- a/src/interfaces/ecpg/preproc/ecpg.type +++ b/src/interfaces/ecpg/preproc/ecpg.type @@ -78,6 +78,7 @@ %type opt_bit_field %type opt_connection_name %type opt_database_name +%type opt_ecpg_into %type opt_ecpg_fetch_into %type opt_ecpg_using %type opt_initializer diff --git a/src/interfaces/ecpg/preproc/extern.h b/src/interfaces/ecpg/preproc/extern.h index f6841726e4..0ce3a6e424 100644 --- a/src/interfaces/ecpg/preproc/extern.h +++ b/src/interfaces/ecpg/preproc/extern.h @@ -35,15 +35,15 @@ extern char *descriptor_index; extern char *descriptor_name; extern char *connection; extern char *input_filename; -extern char *yytext, +extern char *base_yytext, *token_start; #ifdef YYDEBUG -extern int yydebug; +extern int base_yydebug; #endif -extern int yylineno; -extern FILE *yyin, - *yyout; +extern int base_yylineno; +extern FILE *base_yyin, + *base_yyout; extern char *output_filename; extern struct _include_path *include_paths; diff --git a/src/interfaces/ecpg/preproc/output.c b/src/interfaces/ecpg/preproc/output.c index c1ba55d517..59d5d30df4 100644 --- a/src/interfaces/ecpg/preproc/output.c +++ b/src/interfaces/ecpg/preproc/output.c @@ -11,7 +11,7 @@ output_line_number(void) { char *line = hashline_number(); - fprintf(yyout, "%s", line); + fprintf(base_yyout, "%s", line); free(line); } @@ -37,22 +37,22 @@ print_action(struct when * w) switch (w->code) { case W_SQLPRINT: - fprintf(yyout, "sqlprint();"); + fprintf(base_yyout, "sqlprint();"); break; case W_GOTO: - fprintf(yyout, "goto %s;", w->command); + fprintf(base_yyout, "goto %s;", w->command); break; case W_DO: - fprintf(yyout, "%s;", w->command); + fprintf(base_yyout, "%s;", w->command); break; case W_STOP: - fprintf(yyout, "exit (1);"); + fprintf(base_yyout, "exit (1);"); break; case W_BREAK: - fprintf(yyout, "break;"); + fprintf(base_yyout, "break;"); break; default: - fprintf(yyout, "{/* %d not implemented yet */}", w->code); + fprintf(base_yyout, "{/* %d not implemented yet */}", w->code); break; } } @@ -63,24 +63,24 @@ whenever_action(int mode) if ((mode & 1) == 1 && when_nf.code != W_NOTHING) { output_line_number(); - fprintf(yyout, "\nif (sqlca.sqlcode == ECPG_NOT_FOUND) "); + fprintf(base_yyout, "\nif (sqlca.sqlcode == ECPG_NOT_FOUND) "); print_action(&when_nf); } if (when_warn.code != W_NOTHING) { output_line_number(); - fprintf(yyout, "\nif (sqlca.sqlwarn[0] == 'W') "); + fprintf(base_yyout, "\nif (sqlca.sqlwarn[0] == 'W') "); print_action(&when_warn); } if (when_error.code != W_NOTHING) { output_line_number(); - fprintf(yyout, "\nif (sqlca.sqlcode < 0) "); + fprintf(base_yyout, "\nif (sqlca.sqlcode < 0) "); print_action(&when_error); } if ((mode & 2) == 2) - fputc('}', yyout); + fputc('}', base_yyout); output_line_number(); } @@ -91,7 +91,7 @@ hashline_number(void) /* do not print line numbers if we are in debug mode */ if (input_filename #ifdef YYDEBUG - && !yydebug + && !base_yydebug #endif ) { @@ -100,7 +100,7 @@ hashline_number(void) char *src, *dest; - sprintf(line, "\n#line %d \"", yylineno); + sprintf(line, "\n#line %d \"", base_yylineno); src = input_filename; dest = line + strlen(line); while (*src) @@ -128,27 +128,27 @@ static char *ecpg_statement_type_name[] = { void output_statement(char *stmt, int whenever_mode, enum ECPG_statement_type st) { - fprintf(yyout, "{ ECPGdo(__LINE__, %d, %d, %s, %d, ", compat, force_indicator, connection ? connection : "NULL", questionmarks); + fprintf(base_yyout, "{ ECPGdo(__LINE__, %d, %d, %s, %d, ", compat, force_indicator, connection ? connection : "NULL", questionmarks); if (st == ECPGst_execute || st == ECPGst_exec_immediate) { - fprintf(yyout, "%s, %s, ", ecpg_statement_type_name[st], stmt); + fprintf(base_yyout, "%s, %s, ", ecpg_statement_type_name[st], stmt); } else { if (st == ECPGst_prepnormal && auto_prepare) - fputs("ECPGst_prepnormal, \"", yyout); + fputs("ECPGst_prepnormal, \"", base_yyout); else - fputs("ECPGst_normal, \"", yyout); + fputs("ECPGst_normal, \"", base_yyout); output_escaped_str(stmt, false); - fputs("\", ", yyout); + fputs("\", ", base_yyout); } /* dump variables to C file */ dump_variables(argsinsert, 1); - fputs("ECPGt_EOIT, ", yyout); + fputs("ECPGt_EOIT, ", base_yyout); dump_variables(argsresult, 1); - fputs("ECPGt_EORT);", yyout); + fputs("ECPGt_EORT);", base_yyout); reset_variables(); whenever_action(whenever_mode | 2); @@ -160,11 +160,11 @@ output_statement(char *stmt, int whenever_mode, enum ECPG_statement_type st) void output_prepare_statement(char *name, char *stmt) { - fprintf(yyout, "{ ECPGprepare(__LINE__, %s, %d, ", connection ? connection : "NULL", questionmarks); + fprintf(base_yyout, "{ ECPGprepare(__LINE__, %s, %d, ", connection ? connection : "NULL", questionmarks); output_escaped_str(name, true); - fputs(", ", yyout); + fputs(", ", base_yyout); output_escaped_str(stmt, true); - fputs(");", yyout); + fputs(");", base_yyout); whenever_action(2); free(name); if (connection != NULL) @@ -178,12 +178,12 @@ output_deallocate_prepare_statement(char *name) if (strcmp(name, "all") != 0) { - fprintf(yyout, "{ ECPGdeallocate(__LINE__, %d, %s, ", compat, con); + fprintf(base_yyout, "{ ECPGdeallocate(__LINE__, %d, %s, ", compat, con); output_escaped_str(name, true); - fputs(");", yyout); + fputs(");", base_yyout); } else - fprintf(yyout, "{ ECPGdeallocate_all(__LINE__, %d, %s);", compat, con); + fprintf(base_yyout, "{ ECPGdeallocate_all(__LINE__, %d, %s);", compat, con); whenever_action(2); free(name); @@ -203,16 +203,16 @@ output_escaped_str(char *str, bool quoted) { i = 1; len--; - fputs("\"", yyout); + fputs("\"", base_yyout); } /* output this char by char as we have to filter " and \n */ for (; i < len; i++) { if (str[i] == '"') - fputs("\\\"", yyout); + fputs("\\\"", base_yyout); else if (str[i] == '\n') - fputs("\\\n", yyout); + fputs("\\\n", base_yyout); else if (str[i] == '\\') { int j = i; @@ -230,17 +230,17 @@ output_escaped_str(char *str, bool quoted) if ((str[j] != '\n') && (str[j] != '\r' || str[j + 1] != '\n')) /* not followed by a * newline */ - fputs("\\\\", yyout); + fputs("\\\\", base_yyout); } else if (str[i] == '\r' && str[i + 1] == '\n') { - fputs("\\\r\n", yyout); + fputs("\\\r\n", base_yyout); i++; } else - fputc(str[i], yyout); + fputc(str[i], base_yyout); } if (quoted && str[0] == '"' && str[len] == '"') - fputs("\"", yyout); + fputs("\"", base_yyout); } diff --git a/src/interfaces/ecpg/preproc/parse.pl b/src/interfaces/ecpg/preproc/parse.pl index cc17ea8218..6dd55fcfe4 100644 --- a/src/interfaces/ecpg/preproc/parse.pl +++ b/src/interfaces/ecpg/preproc/parse.pl @@ -98,7 +98,7 @@ 'VariableShowStmtSHOWSESSIONAUTHORIZATION' => 'SHOW SESSION AUTHORIZATION ecpg_into', 'returning_clauseRETURNINGtarget_list' => - 'RETURNING target_list ecpg_into', + 'RETURNING target_list opt_ecpg_into', 'ExecuteStmtEXECUTEnameexecute_param_clause' => 'EXECUTE prepared_name execute_param_clause execute_rest', 'ExecuteStmtCREATEOptTempTABLEcreate_as_targetASEXECUTEnameexecute_param_clause' @@ -550,7 +550,7 @@ sub dump_fields if ($len == 1) { - # Straight assignement + # Straight assignment $str = ' $$ = ' . $flds_new[0] . ';'; add_to_buffer('rules', $str); } diff --git a/src/interfaces/ecpg/preproc/parser.c b/src/interfaces/ecpg/preproc/parser.c index 40830f6226..94aee0d0de 100644 --- a/src/interfaces/ecpg/preproc/parser.c +++ b/src/interfaces/ecpg/preproc/parser.c @@ -60,7 +60,7 @@ filtered_base_yylex(void) cur_token = lookahead_token; base_yylval = lookahead_yylval; base_yylloc = lookahead_yylloc; - yytext = lookahead_yytext; + base_yytext = lookahead_yytext; *lookahead_end = lookahead_hold_char; have_lookahead = false; } @@ -93,13 +93,13 @@ filtered_base_yylex(void) * '\0' here, and will undo that when we call it again. We need to redo * it to fully revert the lookahead call for error reporting purposes. */ - lookahead_end = yytext + cur_token_length; + lookahead_end = base_yytext + cur_token_length; Assert(*lookahead_end == '\0'); /* Save and restore lexer output variables around the call */ cur_yylval = base_yylval; cur_yylloc = base_yylloc; - cur_yytext = yytext; + cur_yytext = base_yytext; /* Get next token, saving outputs into lookahead variables */ next_token = base_yylex(); @@ -107,11 +107,11 @@ filtered_base_yylex(void) lookahead_token = next_token; lookahead_yylval = base_yylval; lookahead_yylloc = base_yylloc; - lookahead_yytext = yytext; + lookahead_yytext = base_yytext; base_yylval = cur_yylval; base_yylloc = cur_yylloc; - yytext = cur_yytext; + base_yytext = cur_yytext; /* Now revert the un-truncation of the current token */ lookahead_hold_char = *lookahead_end; diff --git a/src/interfaces/ecpg/preproc/pgc.l b/src/interfaces/ecpg/preproc/pgc.l index 222049624d..07c722d1d7 100644 --- a/src/interfaces/ecpg/preproc/pgc.l +++ b/src/interfaces/ecpg/preproc/pgc.l @@ -24,19 +24,10 @@ #include "extern.h" #include "preproc.h" - -/* - * Change symbol names as expected by preproc.y. It'd be better to do this - * with %option prefix="base_yy", but that affects some other names that - * various files expect *not* to be prefixed with "base_". Cleaning it up - * is not worth the trouble right now. - */ -#define yylex base_yylex -#define yylval base_yylval } %{ -extern YYSTYPE yylval; +extern YYSTYPE base_yylval; static int xcdepth = 0; /* depth of nesting in slash-star comments */ static char *dolqstart = NULL; /* current $foo$ quote start string */ @@ -97,6 +88,7 @@ static struct _if_value %option noinput %option noyywrap %option warn +%option prefix="base_yy" %option yylineno @@ -366,7 +358,7 @@ cppinclude_next {space}*#{include_next}{space}* /* first a general line for all commands not starting with "i" */ /* and then the other commands starting with "i", we have to add these * separately because the cppline production would match on "include" too */ -cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+\/)|.)*{newline} +cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+\/)|.|\\{space}*{newline})*{newline} /* * Dollar quoted strings are totally opaque, and no escaping is done on them. @@ -451,7 +443,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+ BEGIN(SQL); if (literalbuf[strspn(literalbuf, "01") + 1] != '\0') mmerror(PARSE_ERROR, ET_ERROR, "invalid bit string literal"); - yylval.str = mm_strdup(literalbuf); + base_yylval.str = mm_strdup(literalbuf); return BCONST; } @@ -471,7 +463,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+ {quotefail} { yyless(1); BEGIN(SQL); - yylval.str = mm_strdup(literalbuf); + base_yylval.str = mm_strdup(literalbuf); return XCONST; } @@ -514,27 +506,27 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+ {quotefail} { yyless(1); BEGIN(state_before); - yylval.str = mm_strdup(literalbuf); + base_yylval.str = mm_strdup(literalbuf); return SCONST; } {quotestop} | {quotefail} { yyless(1); BEGIN(state_before); - yylval.str = mm_strdup(literalbuf); + base_yylval.str = mm_strdup(literalbuf); return ECONST; } {quotestop} | {quotefail} { yyless(1); BEGIN(state_before); - yylval.str = mm_strdup(literalbuf); + base_yylval.str = mm_strdup(literalbuf); return NCONST; } {xusstop} { addlit(yytext, yyleng); BEGIN(state_before); - yylval.str = mm_strdup(literalbuf); + base_yylval.str = mm_strdup(literalbuf); return UCONST; } {xqdouble} { addlitchar('\''); } @@ -574,8 +566,9 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+ { addlit(yytext, yyleng); free(dolqstart); + dolqstart = NULL; BEGIN(SQL); - yylval.str = mm_strdup(literalbuf); + base_yylval.str = mm_strdup(literalbuf); return DOLCONST; } else @@ -612,12 +605,12 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+ if (literallen == 0) mmerror(PARSE_ERROR, ET_ERROR, "zero-length delimited identifier"); /* The backend will truncate the identifier here. We do not as it does not change the result. */ - yylval.str = mm_strdup(literalbuf); + base_yylval.str = mm_strdup(literalbuf); return CSTRING; } {xdstop} { BEGIN(state_before); - yylval.str = mm_strdup(literalbuf); + base_yylval.str = mm_strdup(literalbuf); return CSTRING; } {xuistop} { @@ -626,7 +619,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+ mmerror(PARSE_ERROR, ET_ERROR, "zero-length delimited identifier"); /* The backend will truncate the identifier here. We do not as it does not change the result. */ addlit(yytext, yyleng); - yylval.str = mm_strdup(literalbuf); + base_yylval.str = mm_strdup(literalbuf); return UIDENT; } {xddouble} { addlitchar('"'); } @@ -725,11 +718,11 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+ return yytext[0]; } - yylval.str = mm_strdup(yytext); + base_yylval.str = mm_strdup(yytext); return Op; } {param} { - yylval.ival = atol(yytext+1); + base_yylval.ival = atol(yytext+1); return PARAM; } {integer} { @@ -746,36 +739,36 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+ ) { errno = 0; - yylval.str = mm_strdup(yytext); + base_yylval.str = mm_strdup(yytext); return FCONST; } - yylval.ival = val; + base_yylval.ival = val; return ICONST; } {ip} { - yylval.str = mm_strdup(yytext); + base_yylval.str = mm_strdup(yytext); return IP; } {decimal} { - yylval.str = mm_strdup(yytext); + base_yylval.str = mm_strdup(yytext); return FCONST; } {real} { - yylval.str = mm_strdup(yytext); + base_yylval.str = mm_strdup(yytext); return FCONST; } {realfail1} { yyless(yyleng-1); - yylval.str = mm_strdup(yytext); + base_yylval.str = mm_strdup(yytext); return FCONST; } {realfail2} { yyless(yyleng-2); - yylval.str = mm_strdup(yytext); + base_yylval.str = mm_strdup(yytext); return FCONST; } :{identifier}((("->"|\.){identifier})|(\[{array}\]))* { - yylval.str = mm_strdup(yytext+1); + base_yylval.str = mm_strdup(yytext+1); return(CVARIABLE); } {identifier} { @@ -801,7 +794,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+ * to do so; that's just another way that ecpg could get * out of step with the backend. */ - yylval.str = mm_strdup(yytext); + base_yylval.str = mm_strdup(yytext); return IDENT; } } @@ -822,11 +815,11 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+ char* endptr; errno = 0; - yylval.ival = strtoul((char *)yytext,&endptr,16); + base_yylval.ival = strtoul((char *)yytext,&endptr,16); if (*endptr != '\0' || errno == ERANGE) { errno = 0; - yylval.str = mm_strdup(yytext); + base_yylval.str = mm_strdup(yytext); return SCONST; } return ICONST; @@ -839,7 +832,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+ } else { - yylval.str = mm_strdup(yytext); + base_yylval.str = mm_strdup(yytext); return(CPP_LINE); } } @@ -851,12 +844,12 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+ } else { - yylval.str = mm_strdup(yytext); + base_yylval.str = mm_strdup(yytext); return(CPP_LINE); } } {cppline} { - yylval.str = mm_strdup(yytext); + base_yylval.str = mm_strdup(yytext); return(CPP_LINE); } {identifier} { @@ -881,7 +874,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+ return keyword->value; else { - yylval.str = mm_strdup(yytext); + base_yylval.str = mm_strdup(yytext); return IDENT; } } diff --git a/src/interfaces/ecpg/preproc/po/es.po b/src/interfaces/ecpg/preproc/po/es.po index 8b1d2ef8da..0dd41da931 100644 --- a/src/interfaces/ecpg/preproc/po/es.po +++ b/src/interfaces/ecpg/preproc/po/es.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ecpg (PostgreSQL 9.6)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2016-05-02 20:08+0000\n" -"PO-Revision-Date: 2016-05-03 12:17-0300\n" +"POT-Creation-Date: 2017-08-27 21:47+0000\n" +"PO-Revision-Date: 2017-08-28 11:37+0200\n" "Last-Translator: Ãlvaro Herrera \n" "Language: es\n" @@ -31,7 +31,7 @@ msgstr "la variable «%s» debe tener tipo numérico" msgid "descriptor \"%s\" does not exist" msgstr "no existe el descriptor «%s»" -#: descriptor.c:161 descriptor.c:212 +#: descriptor.c:161 descriptor.c:213 #, c-format msgid "descriptor header item \"%d\" does not exist" msgstr "no existe el descriptor del elemento de cabecera «%d»" @@ -46,12 +46,12 @@ msgstr "nullable es siempre 1" msgid "key_member is always 0" msgstr "key_member es siempre 0" -#: descriptor.c:279 +#: descriptor.c:280 #, c-format msgid "descriptor item \"%s\" is not implemented" msgstr "elemento del descriptor «%s» no está implementado" -#: descriptor.c:289 +#: descriptor.c:290 #, c-format msgid "descriptor item \"%s\" cannot be set" msgstr "no se puede establecer el elemento del descriptor «%s»" @@ -151,8 +151,8 @@ msgstr " -t activa el compromiso (commit) automático de transaccio #: ecpg.c:57 #, c-format -msgid " --version output version information, then exit\n" -msgstr " --version muestra información de la versión, luego sale\n" +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version muestra información de la versión, luego sale\n" #: ecpg.c:58 #, c-format @@ -179,152 +179,152 @@ msgstr "" "\n" "Reporte errores a .\n" -#: ecpg.c:143 +#: ecpg.c:139 #, c-format msgid "%s: could not locate my own executable path\n" msgstr "%s: no se pudo localizar la ruta de mi propio ejecutable\n" -#: ecpg.c:186 ecpg.c:337 ecpg.c:347 +#: ecpg.c:175 ecpg.c:327 ecpg.c:337 #, c-format msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: no se pudo abrir el archivo «%s»: %s\n" -#: ecpg.c:225 ecpg.c:238 ecpg.c:254 ecpg.c:279 +#: ecpg.c:214 ecpg.c:227 ecpg.c:243 ecpg.c:268 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Utilice «%s --help» para obtener mayor información.\n" -#: ecpg.c:249 +#: ecpg.c:238 #, c-format msgid "%s: parser debug support (-d) not available\n" msgstr "%s: la depuración del analizador (parser, -d) no está disponible)\n" -#: ecpg.c:267 +#: ecpg.c:256 #, c-format msgid "%s, the PostgreSQL embedded C preprocessor, version %d.%d.%d\n" msgstr "%s, el preprocesador de C incrustado de PostgreSQL, versión %d.%d.%d\n" -#: ecpg.c:269 +#: ecpg.c:258 #, c-format msgid "EXEC SQL INCLUDE ... search starts here:\n" msgstr "EXEC SQL INCLUDE ... la búsqueda comienza aquí:\n" -#: ecpg.c:272 +#: ecpg.c:261 #, c-format msgid "end of search list\n" msgstr "fin de la lista de búsqueda\n" -#: ecpg.c:278 +#: ecpg.c:267 #, c-format msgid "%s: no input files specified\n" msgstr "%s: no se especificaron archivos de entrada\n" -#: ecpg.c:470 +#: ecpg.c:460 #, c-format msgid "cursor \"%s\" has been declared but not opened" msgstr "el cursor «%s» fue declarado pero no abierto" -#: ecpg.c:483 preproc.y:127 +#: ecpg.c:473 preproc.y:127 #, c-format msgid "could not remove output file \"%s\"\n" msgstr "no se pudo eliminar el archivo de salida «%s»\n" -#: pgc.l:440 +#: pgc.l:432 #, c-format msgid "unterminated /* comment" msgstr "comentario /* no cerrado" -#: pgc.l:453 +#: pgc.l:445 #, c-format msgid "invalid bit string literal" msgstr "cadena de bits no válida" -#: pgc.l:462 +#: pgc.l:454 #, c-format msgid "unterminated bit string literal" msgstr "una cadena de bits está inconclusa" -#: pgc.l:478 +#: pgc.l:470 #, c-format msgid "unterminated hexadecimal string literal" msgstr "una cadena hexadecimal está inconclusa" -#: pgc.l:556 +#: pgc.l:548 #, c-format msgid "unterminated quoted string" msgstr "una cadena en comillas está inconclusa" -#: pgc.l:613 pgc.l:626 +#: pgc.l:606 pgc.l:619 #, c-format msgid "zero-length delimited identifier" msgstr "identificador delimitado de longitud cero" -#: pgc.l:634 +#: pgc.l:627 #, c-format msgid "unterminated quoted identifier" msgstr "un identificador en comillas está inconcluso" -#: pgc.l:889 +#: pgc.l:882 #, c-format msgid "nested /* ... */ comments" msgstr "comentarios /* ... */ anidados" -#: pgc.l:982 +#: pgc.l:975 #, c-format msgid "missing identifier in EXEC SQL UNDEF command" msgstr "falta un identificador en la orden EXEC SQL UNDEF" -#: pgc.l:1028 pgc.l:1042 +#: pgc.l:1021 pgc.l:1035 #, c-format msgid "missing matching \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" msgstr "falta el «EXEC SQL IFDEF» / «EXEC SQL IFNDEF»" -#: pgc.l:1031 pgc.l:1044 pgc.l:1220 +#: pgc.l:1024 pgc.l:1037 pgc.l:1213 #, c-format msgid "missing \"EXEC SQL ENDIF;\"" msgstr "falta el «EXEC SQL ENDIF;»" -#: pgc.l:1060 pgc.l:1079 +#: pgc.l:1053 pgc.l:1072 #, c-format msgid "more than one EXEC SQL ELSE" msgstr "hay más de un EXEC SQL ELSE" -#: pgc.l:1101 pgc.l:1115 +#: pgc.l:1094 pgc.l:1108 #, c-format msgid "unmatched EXEC SQL ENDIF" msgstr "EXEC SQL ENDIF sin coincidencia" -#: pgc.l:1135 +#: pgc.l:1128 #, c-format msgid "too many nested EXEC SQL IFDEF conditions" msgstr "demasiadas condiciones EXEC SQL IFDEF anidadas" -#: pgc.l:1168 +#: pgc.l:1161 #, c-format msgid "missing identifier in EXEC SQL IFDEF command" msgstr "identificador faltante en la orden EXEC SQL IFDEF" -#: pgc.l:1177 +#: pgc.l:1170 #, c-format msgid "missing identifier in EXEC SQL DEFINE command" msgstr "identificador faltante en la orden EXEC SQL DEFINE" -#: pgc.l:1210 +#: pgc.l:1203 #, c-format msgid "syntax error in EXEC SQL INCLUDE command" msgstr "error de sintaxis en orden EXEC SQL INCLUDE" -#: pgc.l:1259 +#: pgc.l:1252 #, c-format msgid "internal error: unreachable state; please report this to " msgstr "Error Interno: estado no esperado; por favor reporte a " -#: pgc.l:1383 +#: pgc.l:1376 #, c-format msgid "Error: include path \"%s/%s\" is too long on line %d, skipping\n" msgstr "Error: ruta de inclusión «%s/%s» es demasiada larga en la línea %d, omitiendo\n" -#: pgc.l:1406 +#: pgc.l:1399 #, c-format msgid "could not open include file \"%s\" on line %d" msgstr "no se pudo abrir el archivo a incluir «%s» en la línea %d" @@ -358,185 +358,185 @@ msgstr "inicializador no permitido en definición de tipo" msgid "type name \"string\" is reserved in Informix mode" msgstr "el nombre de tipo «string» está reservado en modo Informix" -#: preproc.y:546 preproc.y:14618 +#: preproc.y:546 preproc.y:14635 #, c-format msgid "type \"%s\" is already defined" msgstr "el tipo «%s» ya está definido" -#: preproc.y:570 preproc.y:15276 preproc.y:15596 variable.c:620 +#: preproc.y:570 preproc.y:15293 preproc.y:15613 variable.c:620 #, c-format msgid "multidimensional arrays for simple data types are not supported" msgstr "los arrays multidimensionales para tipos de datos simples no están soportados" -#: preproc.y:1634 +#: preproc.y:1635 #, c-format msgid "AT option not allowed in CLOSE DATABASE statement" msgstr "la opción AT no está permitida en la sentencia CLOSE DATABASE" -#: preproc.y:1849 +#: preproc.y:1850 #, c-format msgid "AT option not allowed in CONNECT statement" msgstr "la opción AT no está permitida en la sentencia CONNECT" -#: preproc.y:1883 +#: preproc.y:1884 #, c-format msgid "AT option not allowed in DISCONNECT statement" msgstr "la opción AT no está permitida en la sentencia DISCONNECT" -#: preproc.y:1938 +#: preproc.y:1939 #, c-format msgid "AT option not allowed in SET CONNECTION statement" msgstr "la opción AT no está permitida en la sentencia SET CONNECTION" -#: preproc.y:1960 +#: preproc.y:1961 #, c-format msgid "AT option not allowed in TYPE statement" msgstr "la opción AT no está permitida en la sentencia TYPE" -#: preproc.y:1969 +#: preproc.y:1970 #, c-format msgid "AT option not allowed in VAR statement" msgstr "la opción AT no está permitida en la sentencia VAR" -#: preproc.y:1976 +#: preproc.y:1977 #, c-format msgid "AT option not allowed in WHENEVER statement" msgstr "la opción AT no está permitida en la sentencia WHENEVER" -#: preproc.y:2228 preproc.y:2233 preproc.y:2349 preproc.y:3759 preproc.y:5169 -#: preproc.y:5178 preproc.y:5462 preproc.y:6898 preproc.y:8136 preproc.y:8141 -#: preproc.y:10768 preproc.y:11385 +#: preproc.y:2233 preproc.y:2238 preproc.y:2354 preproc.y:3764 preproc.y:5182 +#: preproc.y:5191 preproc.y:5475 preproc.y:6911 preproc.y:8149 preproc.y:8154 +#: preproc.y:10785 preproc.y:11402 #, c-format msgid "unsupported feature will be passed to server" msgstr "característica no soportada será pasada al servidor" -#: preproc.y:2607 +#: preproc.y:2612 #, c-format msgid "SHOW ALL is not implemented" msgstr "SHOW ALL no está implementado" -#: preproc.y:3147 +#: preproc.y:3152 #, c-format msgid "COPY FROM STDIN is not implemented" msgstr "COPY FROM STDIN no está implementado" -#: preproc.y:9027 preproc.y:14207 +#: preproc.y:9044 preproc.y:14224 #, c-format msgid "using variable \"%s\" in different declare statements is not supported" msgstr "el uso de la variable «%s» en diferentes sentencias declare no está soportado" -#: preproc.y:9029 preproc.y:14209 +#: preproc.y:9046 preproc.y:14226 #, c-format msgid "cursor \"%s\" is already defined" msgstr "el cursor «%s» ya está definido" -#: preproc.y:9459 +#: preproc.y:9476 #, c-format msgid "no longer supported LIMIT #,# syntax passed to server" msgstr "la sintaxis LIMIT #,# que ya no está soportada ha sido pasada al servidor" -#: preproc.y:9767 preproc.y:9774 +#: preproc.y:9784 preproc.y:9791 #, c-format msgid "subquery in FROM must have an alias" msgstr "las subconsultas en FROM deben tener un alias" -#: preproc.y:13937 +#: preproc.y:13954 #, c-format msgid "CREATE TABLE AS cannot specify INTO" msgstr "CREATE TABLE AS no puede especificar INTO" -#: preproc.y:13973 +#: preproc.y:13990 #, c-format msgid "expected \"@\", found \"%s\"" msgstr "se esperaba «@», se encontró «%s»" -#: preproc.y:13985 +#: preproc.y:14002 #, c-format msgid "only protocols \"tcp\" and \"unix\" and database type \"postgresql\" are supported" msgstr "sólo los protocolos «tcp» y «unix» y tipo de bases de datos «postgresql» están soportados" -#: preproc.y:13988 +#: preproc.y:14005 #, c-format msgid "expected \"://\", found \"%s\"" msgstr "se esperaba «://», se encontró «%s»" -#: preproc.y:13993 +#: preproc.y:14010 #, c-format msgid "Unix-domain sockets only work on \"localhost\" but not on \"%s\"" msgstr "los sockets de dominio unix sólo trabajan en «localhost» pero no en «%s»" -#: preproc.y:14019 +#: preproc.y:14036 #, c-format msgid "expected \"postgresql\", found \"%s\"" msgstr "se esperaba «postgresql», se encontró «%s»" -#: preproc.y:14022 +#: preproc.y:14039 #, c-format msgid "invalid connection type: %s" msgstr "tipo de conexión no válido: %s" -#: preproc.y:14031 +#: preproc.y:14048 #, c-format msgid "expected \"@\" or \"://\", found \"%s\"" msgstr "se esperaba «@» o «://», se encontró «%s»" -#: preproc.y:14106 preproc.y:14124 +#: preproc.y:14123 preproc.y:14141 #, c-format msgid "invalid data type" msgstr "tipo de dato no válido" -#: preproc.y:14135 preproc.y:14152 +#: preproc.y:14152 preproc.y:14169 #, c-format msgid "incomplete statement" msgstr "sentencia incompleta" -#: preproc.y:14138 preproc.y:14155 +#: preproc.y:14155 preproc.y:14172 #, c-format msgid "unrecognized token \"%s\"" msgstr "elemento «%s» no reconocido" -#: preproc.y:14429 +#: preproc.y:14446 #, c-format msgid "only data types numeric and decimal have precision/scale argument" msgstr "sólo los tipos de dato numeric y decimal tienen argumento de precisión/escala" -#: preproc.y:14441 +#: preproc.y:14458 #, c-format msgid "interval specification not allowed here" msgstr "la especificación de intervalo no está permitida aquí" -#: preproc.y:14593 preproc.y:14645 +#: preproc.y:14610 preproc.y:14662 #, c-format msgid "too many levels in nested structure/union definition" msgstr "demasiados niveles en la definición anidada de estructura/unión" -#: preproc.y:14784 +#: preproc.y:14801 #, c-format msgid "pointers to varchar are not implemented" msgstr "los punteros a varchar no están implementados" -#: preproc.y:14971 preproc.y:14996 +#: preproc.y:14988 preproc.y:15013 #, c-format msgid "using unsupported DESCRIBE statement" msgstr "utilizando sentencia DESCRIBE no soportada" -#: preproc.y:15243 +#: preproc.y:15260 #, c-format msgid "initializer not allowed in EXEC SQL VAR command" msgstr "inicializador no permitido en la orden EXEC SQL VAR" -#: preproc.y:15554 +#: preproc.y:15571 #, c-format msgid "arrays of indicators are not allowed on input" msgstr "no se permiten los arrays de indicadores en la entrada" -#: preproc.y:15775 +#: preproc.y:15792 #, c-format msgid "operator not allowed in variable definition" msgstr "operador no permitido en definición de variable" #. translator: %s is typically the translation of "syntax error" -#: preproc.y:15813 +#: preproc.y:15833 #, c-format msgid "%s at or near \"%s\"" msgstr "%s en o cerca de «%s»" diff --git a/src/interfaces/ecpg/preproc/po/fr.po b/src/interfaces/ecpg/preproc/po/fr.po index 22fda38a4e..3fbe325f90 100644 --- a/src/interfaces/ecpg/preproc/po/fr.po +++ b/src/interfaces/ecpg/preproc/po/fr.po @@ -1,10 +1,10 @@ # translation of ecpg.po to fr_fr # french message translation file for ecpg # -# Use these quotes: « %s » +# Use these quotes: « %s » # # Guillaume Lelarge , 2009. -# Stéphane Schildknecht , 2009. +# Stéphane Schildknecht , 2009. msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.6\n" @@ -15,7 +15,7 @@ msgstr "" "Language-Team: PostgreSQLfr \n" "Language: fr\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-15\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 1.5.4\n" @@ -23,17 +23,17 @@ msgstr "" #: descriptor.c:64 #, c-format msgid "variable \"%s\" must have a numeric type" -msgstr "la variable « %s » doit avoir un type numeric" +msgstr "la variable « %s » doit avoir un type numeric" #: descriptor.c:124 descriptor.c:146 #, c-format msgid "descriptor \"%s\" does not exist" -msgstr "le descripteur « %s » n'existe pas" +msgstr "le descripteur « %s » n'existe pas" #: descriptor.c:161 descriptor.c:212 #, c-format msgid "descriptor header item \"%d\" does not exist" -msgstr "l'élément d'en-tête du descripteur « %d » n'existe pas" +msgstr "l'élément d'en-tête du descripteur « %d » n'existe pas" #: descriptor.c:183 #, c-format @@ -48,12 +48,12 @@ msgstr "key_member vaut toujours 0" #: descriptor.c:279 #, c-format msgid "descriptor item \"%s\" is not implemented" -msgstr "l'élément du descripteur « %s » n'est pas implanté" +msgstr "l'élément du descripteur « %s » n'est pas implanté" #: descriptor.c:289 #, c-format msgid "descriptor item \"%s\" cannot be set" -msgstr "l'élément du descripteur « %s » ne peut pas être initialisé" +msgstr "l'élément du descripteur « %s » ne peut pas être initialisé" #: ecpg.c:35 #, c-format @@ -61,7 +61,7 @@ msgid "" "%s is the PostgreSQL embedded SQL preprocessor for C programs.\n" "\n" msgstr "" -"%s est le préprocesseur SQL embarqué de PostgreSQL pour les programmes C.\n" +"%s est le préprocesseur SQL embarqué de PostgreSQL pour les programmes C.\n" "\n" #: ecpg.c:37 @@ -86,7 +86,7 @@ msgid "" " -c automatically generate C code from embedded SQL code;\n" " this affects EXEC SQL TYPE\n" msgstr "" -" -c produit automatiquement le code C à partir du code SQL embarqué ;\n" +" -c produit automatiquement le code C à partir du code SQL embarqué ;\n" " ceci affecte EXEC SQL TYPE\n" #: ecpg.c:43 @@ -95,38 +95,38 @@ msgid "" " -C MODE set compatibility mode; MODE can be one of\n" " \"INFORMIX\", \"INFORMIX_SE\"\n" msgstr "" -" -C MODE configure le mode de compatibilité ; MODE peut être\n" -" « INFORMIX » ou « INFORMIX_SE »\n" +" -C MODE configure le mode de compatibilité ; MODE peut être\n" +" « INFORMIX » ou « INFORMIX_SE »\n" #: ecpg.c:46 #, c-format msgid " -d generate parser debug output\n" -msgstr " -d produit la sortie de débogage de l'analyseur\n" +msgstr " -d produit la sortie de débogage de l'analyseur\n" #: ecpg.c:48 #, c-format msgid " -D SYMBOL define SYMBOL\n" -msgstr " -D SYMBOLE définit SYMBOLE\n" +msgstr " -D SYMBOLE définit SYMBOLE\n" #: ecpg.c:49 #, c-format msgid " -h parse a header file, this option includes option \"-c\"\n" -msgstr " -h analyse un fichier d'en-tête, cette option inclut l'option « -c »\n" +msgstr " -h analyse un fichier d'en-tête, cette option inclut l'option « -c »\n" #: ecpg.c:50 #, c-format msgid " -i parse system include files as well\n" -msgstr " -i analyse en plus les fichiers d'en-tête systèmes\n" +msgstr " -i analyse en plus les fichiers d'en-tête systèmes\n" #: ecpg.c:51 #, c-format msgid " -I DIRECTORY search DIRECTORY for include files\n" -msgstr " -I RÉPERTOIRE recherche les fichiers d'en-têtes dans RÉPERTOIRE\n" +msgstr " -I RÉPERTOIRE recherche les fichiers d'en-têtes dans RÉPERTOIRE\n" #: ecpg.c:52 #, c-format msgid " -o OUTFILE write result to OUTFILE\n" -msgstr " -o FICHIER écrit le résultat dans FICHIER\n" +msgstr " -o FICHIER écrit le résultat dans FICHIER\n" #: ecpg.c:53 #, c-format @@ -134,13 +134,13 @@ msgid "" " -r OPTION specify run-time behavior; OPTION can be:\n" " \"no_indicator\", \"prepare\", \"questionmarks\"\n" msgstr "" -" -r OPTION indique le comportement à l'exécution ; OPTION peut valoir :\n" -" « no_indicator », « prepare », « questionmarks »\n" +" -r OPTION indique le comportement à l'exécution ; OPTION peut valoir :\n" +" « no_indicator », « prepare », « questionmarks »\n" #: ecpg.c:55 #, c-format msgid " --regression run in regression testing mode\n" -msgstr " --regression s'exécute en mode de tests des régressions\n" +msgstr " --regression s'exécute en mode de tests des régressions\n" #: ecpg.c:56 #, c-format @@ -165,9 +165,9 @@ msgid "" "input file name, after stripping off .pgc if present.\n" msgstr "" "\n" -"Si aucun nom de fichier en sortie n'est fourni, le nom est formaté en\n" -"ajoutant le suffixe .c au nom du fichier en entrée après avoir supprimé le\n" -"suffixe .pgc s'il est présent\n" +"Si aucun nom de fichier en sortie n'est fourni, le nom est formaté en\n" +"ajoutant le suffixe .c au nom du fichier en entrée après avoir supprimé le\n" +"suffixe .pgc s'il est présent\n" #: ecpg.c:61 #, c-format @@ -176,32 +176,32 @@ msgid "" "Report bugs to .\n" msgstr "" "\n" -"Rapporter les bogues à .\n" +"Rapporter les bogues à .\n" #: ecpg.c:139 #, c-format msgid "%s: could not locate my own executable path\n" -msgstr "%s : n'a pas pu localiser mon propre exécutable\n" +msgstr "%s : n'a pas pu localiser mon propre exécutable\n" #: ecpg.c:175 ecpg.c:326 ecpg.c:336 #, c-format msgid "%s: could not open file \"%s\": %s\n" -msgstr "%s : n'a pas pu ouvrir le fichier « %s » : %s\n" +msgstr "%s : n'a pas pu ouvrir le fichier « %s » : %s\n" #: ecpg.c:214 ecpg.c:227 ecpg.c:243 ecpg.c:268 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Essayer « %s --help » pour plus d'informations.\n" +msgstr "Essayer « %s --help » pour plus d'informations.\n" #: ecpg.c:238 #, c-format msgid "%s: parser debug support (-d) not available\n" -msgstr "%s : support de débogage de l'analyseur (-d) non disponible\n" +msgstr "%s : support de débogage de l'analyseur (-d) non disponible\n" #: ecpg.c:256 #, c-format msgid "%s, the PostgreSQL embedded C preprocessor, version %d.%d.%d\n" -msgstr "%s, le préprocesseur C embarqué de PostgreSQL, version %d.%d.%d\n" +msgstr "%s, le préprocesseur C embarqué de PostgreSQL, version %d.%d.%d\n" #: ecpg.c:258 #, c-format @@ -216,57 +216,57 @@ msgstr "fin de la liste de recherche\n" #: ecpg.c:267 #, c-format msgid "%s: no input files specified\n" -msgstr "%s : aucun fichier précisé en entrée\n" +msgstr "%s : aucun fichier précisé en entrée\n" #: ecpg.c:459 #, c-format msgid "cursor \"%s\" has been declared but not opened" -msgstr "le curseur « %s » est déclaré mais non ouvert" +msgstr "le curseur « %s » est déclaré mais non ouvert" #: ecpg.c:472 preproc.y:127 #, c-format msgid "could not remove output file \"%s\"\n" -msgstr "n'a pas pu supprimer le fichier « %s » en sortie\n" +msgstr "n'a pas pu supprimer le fichier « %s » en sortie\n" #: pgc.l:440 #, c-format msgid "unterminated /* comment" -msgstr "commentaire /* non terminé" +msgstr "commentaire /* non terminé" #: pgc.l:453 #, c-format msgid "invalid bit string literal" -msgstr "chaîne bit litéral invalide" +msgstr "chaîne bit litéral invalide" #: pgc.l:462 #, c-format msgid "unterminated bit string literal" -msgstr "chaîne bit litéral non terminée" +msgstr "chaîne bit litéral non terminée" #: pgc.l:478 #, c-format msgid "unterminated hexadecimal string literal" -msgstr "chaîne hexadécimale litéralle non terminée" +msgstr "chaîne hexadécimale litéralle non terminée" #: pgc.l:556 #, c-format msgid "unterminated quoted string" -msgstr "chaîne entre guillemets non terminée" +msgstr "chaîne entre guillemets non terminée" #: pgc.l:613 pgc.l:626 #, c-format msgid "zero-length delimited identifier" -msgstr "identifiant délimité de taille zéro" +msgstr "identifiant délimité de taille zéro" #: pgc.l:634 #, c-format msgid "unterminated quoted identifier" -msgstr "identifiant entre guillemet non terminé" +msgstr "identifiant entre guillemet non terminé" #: pgc.l:889 #, c-format msgid "nested /* ... */ comments" -msgstr "commentaires /* ... */ imbriqués" +msgstr "commentaires /* ... */ imbriqués" #: pgc.l:982 #, c-format @@ -276,12 +276,12 @@ msgstr "identifiant manquant dans la commande EXEC SQL UNDEF" #: pgc.l:1028 pgc.l:1042 #, c-format msgid "missing matching \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" -msgstr "correspondance manquante « EXEC SQL IFDEF » / « EXEC SQL IFNDEF »" +msgstr "correspondance manquante « EXEC SQL IFDEF » / « EXEC SQL IFNDEF »" #: pgc.l:1031 pgc.l:1044 pgc.l:1220 #, c-format msgid "missing \"EXEC SQL ENDIF;\"" -msgstr "« EXEC SQL ENDIF; » manquant" +msgstr "« EXEC SQL ENDIF; » manquant" #: pgc.l:1060 pgc.l:1079 #, c-format @@ -291,12 +291,12 @@ msgstr "plusieurs EXEC SQL ELSE" #: pgc.l:1101 pgc.l:1115 #, c-format msgid "unmatched EXEC SQL ENDIF" -msgstr "EXEC SQL ENDIF différent" +msgstr "EXEC SQL ENDIF différent" #: pgc.l:1135 #, c-format msgid "too many nested EXEC SQL IFDEF conditions" -msgstr "trop de conditions EXEC SQL IFDEF imbriquées" +msgstr "trop de conditions EXEC SQL IFDEF imbriquées" #: pgc.l:1168 #, c-format @@ -317,20 +317,20 @@ msgstr "erreur de syntaxe dans la commande EXEC SQL INCLUDE" #, c-format msgid "internal error: unreachable state; please report this to " msgstr "" -"erreur interne : l'état ne peut être atteint ; merci de rapporter ceci à\n" +"erreur interne : l'état ne peut être atteint ; merci de rapporter ceci à\n" "" #: pgc.l:1383 #, c-format msgid "Error: include path \"%s/%s\" is too long on line %d, skipping\n" msgstr "" -"Erreur : le chemin d'en-tête « %s/%s » est trop long sur la ligne %d,\n" -"ignoré\n" +"Erreur : le chemin d'en-tête « %s/%s » est trop long sur la ligne %d,\n" +"ignoré\n" #: pgc.l:1406 #, c-format msgid "could not open include file \"%s\" on line %d" -msgstr "n'a pas pu ouvrir le fichier d'en-tête « %s » sur la ligne %d" +msgstr "n'a pas pu ouvrir le fichier d'en-tête « %s » sur la ligne %d" #: preproc.y:31 msgid "syntax error" @@ -349,103 +349,103 @@ msgstr "ERREUR : " #: preproc.y:508 #, c-format msgid "cursor \"%s\" does not exist" -msgstr "le curseur « %s » n'existe pas" +msgstr "le curseur « %s » n'existe pas" #: preproc.y:537 #, c-format msgid "initializer not allowed in type definition" -msgstr "initialiseur non autorisé dans la définition du type" +msgstr "initialiseur non autorisé dans la définition du type" #: preproc.y:539 #, c-format msgid "type name \"string\" is reserved in Informix mode" -msgstr "le nom du type « string » est réservé dans le mode Informix" +msgstr "le nom du type « string » est réservé dans le mode Informix" #: preproc.y:546 preproc.y:14622 #, c-format msgid "type \"%s\" is already defined" -msgstr "le type « %s » est déjà défini" +msgstr "le type « %s » est déjà défini" #: preproc.y:570 preproc.y:15280 preproc.y:15600 variable.c:620 #, c-format msgid "multidimensional arrays for simple data types are not supported" msgstr "" -"les tableaux multi-dimensionnels pour les types de données simples ne sont\n" -"pas supportés" +"les tableaux multi-dimensionnels pour les types de données simples ne sont\n" +"pas supportés" #: preproc.y:1634 #, c-format msgid "AT option not allowed in CLOSE DATABASE statement" -msgstr "option AT non autorisée dans une instruction CLOSE DATABASE" +msgstr "option AT non autorisée dans une instruction CLOSE DATABASE" #: preproc.y:1849 #, c-format msgid "AT option not allowed in CONNECT statement" -msgstr "option AT non autorisée dans une instruction CONNECT" +msgstr "option AT non autorisée dans une instruction CONNECT" #: preproc.y:1883 #, c-format msgid "AT option not allowed in DISCONNECT statement" -msgstr "option AT non autorisée dans une instruction DISCONNECT" +msgstr "option AT non autorisée dans une instruction DISCONNECT" #: preproc.y:1938 #, c-format msgid "AT option not allowed in SET CONNECTION statement" -msgstr "option AT non autorisée dans une instruction SET CONNECTION" +msgstr "option AT non autorisée dans une instruction SET CONNECTION" #: preproc.y:1960 #, c-format msgid "AT option not allowed in TYPE statement" -msgstr "option AT non autorisée dans une instruction TYPE" +msgstr "option AT non autorisée dans une instruction TYPE" #: preproc.y:1969 #, c-format msgid "AT option not allowed in VAR statement" -msgstr "option AT non autorisée dans une instruction VAR" +msgstr "option AT non autorisée dans une instruction VAR" #: preproc.y:1976 #, c-format msgid "AT option not allowed in WHENEVER statement" -msgstr "option AT non autorisée dans une instruction WHENEVER" +msgstr "option AT non autorisée dans une instruction WHENEVER" #: preproc.y:2228 preproc.y:2233 preproc.y:2349 preproc.y:3759 preproc.y:5169 #: preproc.y:5178 preproc.y:5462 preproc.y:6898 preproc.y:8136 preproc.y:8141 #: preproc.y:10772 preproc.y:11389 #, c-format msgid "unsupported feature will be passed to server" -msgstr "la fonctionnalité non supportée sera passée au serveur" +msgstr "la fonctionnalité non supportée sera passée au serveur" #: preproc.y:2607 #, c-format msgid "SHOW ALL is not implemented" -msgstr "SHOW ALL n'est pas implanté" +msgstr "SHOW ALL n'est pas implanté" #: preproc.y:3147 #, c-format msgid "COPY FROM STDIN is not implemented" -msgstr "COPY FROM STDIN n'est pas implanté" +msgstr "COPY FROM STDIN n'est pas implanté" #: preproc.y:9031 preproc.y:14211 #, c-format msgid "using variable \"%s\" in different declare statements is not supported" msgstr "" -"l'utilisation de la variable « %s » dans différentes instructions de déclaration\n" -"n'est pas supportée" +"l'utilisation de la variable « %s » dans différentes instructions de déclaration\n" +"n'est pas supportée" #: preproc.y:9033 preproc.y:14213 #, c-format msgid "cursor \"%s\" is already defined" -msgstr "le curseur « %s » est déjà défini" +msgstr "le curseur « %s » est déjà défini" #: preproc.y:9463 #, c-format msgid "no longer supported LIMIT #,# syntax passed to server" -msgstr "la syntaxe obsolète LIMIT #,# a été passée au serveur" +msgstr "la syntaxe obsolète LIMIT #,# a été passée au serveur" #: preproc.y:9771 preproc.y:9778 #, c-format msgid "subquery in FROM must have an alias" -msgstr "la sous-requête du FROM doit avoir un alias" +msgstr "la sous-requête du FROM doit avoir un alias" #: preproc.y:13941 #, c-format @@ -455,29 +455,29 @@ msgstr "CREATE TABLE AS ne peut pas indiquer INTO" #: preproc.y:13977 #, c-format msgid "expected \"@\", found \"%s\"" -msgstr "« @ » attendu, « %s » trouvé" +msgstr "« @ » attendu, « %s » trouvé" #: preproc.y:13989 #, c-format msgid "only protocols \"tcp\" and \"unix\" and database type \"postgresql\" are supported" msgstr "" -"seuls les protocoles « tcp » et « unix » et les types de base de données\n" -"« postgresql » sont supportés" +"seuls les protocoles « tcp » et « unix » et les types de base de données\n" +"« postgresql » sont supportés" #: preproc.y:13992 #, c-format msgid "expected \"://\", found \"%s\"" -msgstr "« :// » attendu, « %s » trouvé" +msgstr "« :// » attendu, « %s » trouvé" #: preproc.y:13997 #, c-format msgid "Unix-domain sockets only work on \"localhost\" but not on \"%s\"" -msgstr "les sockets de domaine Unix fonctionnent seulement sur « localhost », mais pas sur « %s »" +msgstr "les sockets de domaine Unix fonctionnent seulement sur « localhost », mais pas sur « %s »" #: preproc.y:14023 #, c-format msgid "expected \"postgresql\", found \"%s\"" -msgstr "« postgresql » attendu, « %s » trouvé" +msgstr "« postgresql » attendu, « %s » trouvé" #: preproc.y:14026 #, c-format @@ -487,75 +487,75 @@ msgstr "type de connexion invalide : %s" #: preproc.y:14035 #, c-format msgid "expected \"@\" or \"://\", found \"%s\"" -msgstr "« @ » ou « :// » attendu, « %s » trouvé" +msgstr "« @ » ou « :// » attendu, « %s » trouvé" #: preproc.y:14110 preproc.y:14128 #, c-format msgid "invalid data type" -msgstr "type de données invalide" +msgstr "type de données invalide" #: preproc.y:14139 preproc.y:14156 #, c-format msgid "incomplete statement" -msgstr "instruction incomplète" +msgstr "instruction incomplète" #: preproc.y:14142 preproc.y:14159 #, c-format msgid "unrecognized token \"%s\"" -msgstr "jeton « %s » non reconnu" +msgstr "jeton « %s » non reconnu" #: preproc.y:14433 #, c-format msgid "only data types numeric and decimal have precision/scale argument" msgstr "" -"seuls les types de données numeric et decimal ont des arguments de\n" -"précision et d'échelle" +"seuls les types de données numeric et decimal ont des arguments de\n" +"précision et d'échelle" #: preproc.y:14445 #, c-format msgid "interval specification not allowed here" -msgstr "interval de spécification non autorisé ici" +msgstr "interval de spécification non autorisé ici" #: preproc.y:14597 preproc.y:14649 #, c-format msgid "too many levels in nested structure/union definition" -msgstr "trop de niveaux dans la définition de structure/union imbriquée" +msgstr "trop de niveaux dans la définition de structure/union imbriquée" #: preproc.y:14788 #, c-format msgid "pointers to varchar are not implemented" -msgstr "les pointeurs sur des chaînes de caractères (varchar) ne sont pas implantés" +msgstr "les pointeurs sur des chaînes de caractères (varchar) ne sont pas implantés" #: preproc.y:14975 preproc.y:15000 #, c-format msgid "using unsupported DESCRIBE statement" -msgstr "utilisation de l'instruction DESCRIBE non supporté" +msgstr "utilisation de l'instruction DESCRIBE non supporté" #: preproc.y:15247 #, c-format msgid "initializer not allowed in EXEC SQL VAR command" -msgstr "initialiseur non autorisé dans la commande EXEC SQL VAR" +msgstr "initialiseur non autorisé dans la commande EXEC SQL VAR" #: preproc.y:15558 #, c-format msgid "arrays of indicators are not allowed on input" -msgstr "les tableaux d'indicateurs ne sont pas autorisés en entrée" +msgstr "les tableaux d'indicateurs ne sont pas autorisés en entrée" #: preproc.y:15779 #, c-format msgid "operator not allowed in variable definition" -msgstr "opérateur non autorisé dans la définition de la variable" +msgstr "opérateur non autorisé dans la définition de la variable" #. translator: %s is typically the translation of "syntax error" #: preproc.y:15817 #, c-format msgid "%s at or near \"%s\"" -msgstr "%s sur ou près de « %s »" +msgstr "%s sur ou près de « %s »" #: type.c:18 type.c:30 #, c-format msgid "out of memory" -msgstr "mémoire épuisée" +msgstr "mémoire épuisée" #: type.c:212 type.c:664 #, c-format @@ -565,81 +565,81 @@ msgstr "code %d du type de variable non reconnu" #: type.c:261 #, c-format msgid "variable \"%s\" is hidden by a local variable of a different type" -msgstr "la variable « %s » est cachée par une variable locale d'un type différent" +msgstr "la variable « %s » est cachée par une variable locale d'un type différent" #: type.c:263 #, c-format msgid "variable \"%s\" is hidden by a local variable" -msgstr "la variable « %s » est cachée par une variable locale" +msgstr "la variable « %s » est cachée par une variable locale" #: type.c:275 #, c-format msgid "indicator variable \"%s\" is hidden by a local variable of a different type" msgstr "" -"la variable indicateur « %s » est caché par une variable locale d'un type\n" -"différent" +"la variable indicateur « %s » est caché par une variable locale d'un type\n" +"différent" #: type.c:277 #, c-format msgid "indicator variable \"%s\" is hidden by a local variable" -msgstr "la variable indicateur « %s » est cachée par une variable locale" +msgstr "la variable indicateur « %s » est cachée par une variable locale" #: type.c:285 #, c-format msgid "indicator for array/pointer has to be array/pointer" -msgstr "l'indicateur pour le tableau/pointeur doit être tableau/pointeur" +msgstr "l'indicateur pour le tableau/pointeur doit être tableau/pointeur" #: type.c:289 #, c-format msgid "nested arrays are not supported (except strings)" msgstr "" -"les tableaux imbriqués ne sont pas supportés (sauf les chaînes de\n" -"caractères)" +"les tableaux imbriqués ne sont pas supportés (sauf les chaînes de\n" +"caractères)" #: type.c:331 #, c-format msgid "indicator for struct has to be a struct" -msgstr "l'indicateur d'un struct doit être un struct" +msgstr "l'indicateur d'un struct doit être un struct" #: type.c:351 type.c:372 type.c:392 #, c-format msgid "indicator for simple data type has to be simple" -msgstr "l'indicateur d'un type de données simple doit être simple" +msgstr "l'indicateur d'un type de données simple doit être simple" #: type.c:723 #, c-format msgid "unrecognized descriptor item code %d" -msgstr "code %d de l'élément du descripteur non reconnu" +msgstr "code %d de l'élément du descripteur non reconnu" #: variable.c:89 variable.c:116 #, c-format msgid "incorrectly formed variable \"%s\"" -msgstr "variable « %s » mal formée" +msgstr "variable « %s » mal formée" #: variable.c:139 #, c-format msgid "variable \"%s\" is not a pointer" -msgstr "la variable « %s » n'est pas un pointeur" +msgstr "la variable « %s » n'est pas un pointeur" #: variable.c:142 variable.c:167 #, c-format msgid "variable \"%s\" is not a pointer to a structure or a union" -msgstr "la variable « %s » n'est pas un pointeur vers une structure ou une union" +msgstr "la variable « %s » n'est pas un pointeur vers une structure ou une union" #: variable.c:154 #, c-format msgid "variable \"%s\" is neither a structure nor a union" -msgstr "la variable « %s » n'est ni une structure ni une union" +msgstr "la variable « %s » n'est ni une structure ni une union" #: variable.c:164 #, c-format msgid "variable \"%s\" is not an array" -msgstr "la variable « %s » n'est pas un tableau" +msgstr "la variable « %s » n'est pas un tableau" #: variable.c:233 variable.c:255 #, c-format msgid "variable \"%s\" is not declared" -msgstr "la variable « %s » n'est pas déclarée" +msgstr "la variable « %s » n'est pas déclarée" #: variable.c:494 #, c-format @@ -649,33 +649,33 @@ msgstr "la variable d'indicateur doit avoir un type integer" #: variable.c:506 #, c-format msgid "unrecognized data type name \"%s\"" -msgstr "nom « %s » non reconnu pour un type de données" +msgstr "nom « %s » non reconnu pour un type de données" #: variable.c:517 variable.c:525 variable.c:542 variable.c:545 #, c-format msgid "multidimensional arrays are not supported" -msgstr "les tableaux multidimensionnels ne sont pas supportés" +msgstr "les tableaux multidimensionnels ne sont pas supportés" #: variable.c:534 #, c-format msgid "multilevel pointers (more than 2 levels) are not supported; found %d level" msgid_plural "multilevel pointers (more than 2 levels) are not supported; found %d levels" msgstr[0] "" -"les pointeurs multi-niveaux (plus de deux) ne sont pas supportés :\n" -"%d niveau trouvé" +"les pointeurs multi-niveaux (plus de deux) ne sont pas supportés :\n" +"%d niveau trouvé" msgstr[1] "" -"les pointeurs multi-niveaux (plus de deux) ne sont pas supportés :\n" -"%d niveaux trouvés" +"les pointeurs multi-niveaux (plus de deux) ne sont pas supportés :\n" +"%d niveaux trouvés" #: variable.c:539 #, c-format msgid "pointer to pointer is not supported for this data type" -msgstr "ce type de données ne supporte pas les pointeurs de pointeur" +msgstr "ce type de données ne supporte pas les pointeurs de pointeur" #: variable.c:559 #, c-format msgid "multidimensional arrays for structures are not supported" -msgstr "les tableaux multidimensionnels ne sont pas supportés pour les structures" +msgstr "les tableaux multidimensionnels ne sont pas supportés pour les structures" #~ msgid "COPY TO STDIN is not possible" #~ msgstr "COPY TO STDIN n'est pas possible" @@ -684,16 +684,16 @@ msgstr "les tableaux multidimensionnels ne sont pas support #~ msgstr "COPY FROM STDOUT n'est pas possible" #~ msgid "NEW used in query that is not in a rule" -#~ msgstr "NEW utilisé dans une requête qui n'est pas dans une règle" +#~ msgstr "NEW utilisé dans une requête qui n'est pas dans une règle" #~ msgid "OLD used in query that is not in a rule" -#~ msgstr "OLD utilisé dans une requête qui n'est pas dans une règle" +#~ msgstr "OLD utilisé dans une requête qui n'est pas dans une règle" #~ msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" -#~ msgstr "une contrainte déclarée INITIALLY DEFERRED doit être DEFERRABLE" +#~ msgstr "une contrainte déclarée INITIALLY DEFERRED doit être DEFERRABLE" #~ msgid "AT option not allowed in DEALLOCATE statement" -#~ msgstr "option AT non autorisée dans une instruction DEALLOCATE" +#~ msgstr "option AT non autorisée dans une instruction DEALLOCATE" #~ msgid " --version output version information, then exit\n" #~ msgstr " --version affiche la version et quitte\n" diff --git a/src/interfaces/ecpg/preproc/po/it.po b/src/interfaces/ecpg/preproc/po/it.po index fae3283421..b2589c5758 100644 --- a/src/interfaces/ecpg/preproc/po/it.po +++ b/src/interfaces/ecpg/preproc/po/it.po @@ -18,10 +18,10 @@ # msgid "" msgstr "" -"Project-Id-Version: ecpg (PostgreSQL) 9.4\n" +"Project-Id-Version: ecpg (PostgreSQL) 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2014-07-30 04:08+0000\n" -"PO-Revision-Date: 2014-07-30 22:37+0100\n" +"POT-Creation-Date: 2017-02-09 21:08+0000\n" +"PO-Revision-Date: 2017-04-23 03:03+0100\n" "Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" "Language: it\n" @@ -30,7 +30,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Poedit-SourceCharset: utf-8\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.8.7.1\n" #: descriptor.c:64 #, c-format @@ -42,27 +42,27 @@ msgstr "la variabile \"%s\" deve essere di tipo numerico" msgid "descriptor \"%s\" does not exist" msgstr "il descrittore \"%s\" non esiste" -#: descriptor.c:161 descriptor.c:210 +#: descriptor.c:161 descriptor.c:213 #, c-format msgid "descriptor header item \"%d\" does not exist" msgstr "la voce \"%d\" dell'header del descrittore non esiste" -#: descriptor.c:182 +#: descriptor.c:183 #, c-format msgid "nullable is always 1" msgstr "nullable è sempre 1" -#: descriptor.c:185 +#: descriptor.c:186 #, c-format msgid "key_member is always 0" msgstr "key_member è sempre 0" -#: descriptor.c:277 +#: descriptor.c:280 #, c-format msgid "descriptor item \"%s\" is not implemented" msgstr "la voce \"%s\" del descrittore non è implementata" -#: descriptor.c:287 +#: descriptor.c:290 #, c-format msgid "descriptor item \"%s\" cannot be set" msgstr "la voce \"%s\" del descrittore non può essere impostata" @@ -161,8 +161,8 @@ msgstr " -t attiva il commit automatico delle transazioni\n" #: ecpg.c:57 #, c-format -msgid " --version output version information, then exit\n" -msgstr " --version mostra informazioni sulla versione ed esci\n" +msgid " -V, --version output version information, then exit\n" +msgstr " -V --version mostra informazioni sulla versione ed esci\n" #: ecpg.c:58 #, c-format @@ -189,154 +189,154 @@ msgstr "" "\n" "Puoi segnalare eventuali bug a .\n" -#: ecpg.c:143 +#: ecpg.c:139 #, c-format msgid "%s: could not locate my own executable path\n" msgstr "%s: percorso del proprio eseguibile non trovato\n" -#: ecpg.c:186 ecpg.c:337 ecpg.c:347 +#: ecpg.c:175 ecpg.c:327 ecpg.c:337 #, c-format msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: apertura del file \"%s\" fallita: %s\n" -#: ecpg.c:225 ecpg.c:238 ecpg.c:254 ecpg.c:279 +#: ecpg.c:214 ecpg.c:227 ecpg.c:243 ecpg.c:268 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Prova \"%s --help\" per maggiori informazioni.\n" -#: ecpg.c:249 +#: ecpg.c:238 #, c-format msgid "%s: parser debug support (-d) not available\n" msgstr "%s: il supporto al debug del parser (-d) non è disponibile\n" -#: ecpg.c:267 +#: ecpg.c:256 #, c-format msgid "%s, the PostgreSQL embedded C preprocessor, version %d.%d.%d\n" msgstr "%s, preprocessore embedded C PostgreSQL, versione %d.%d.%d\n" -#: ecpg.c:269 +#: ecpg.c:258 #, c-format msgid "EXEC SQL INCLUDE ... search starts here:\n" msgstr "EXEC SQL INCLUDE ... la ricerca inizia da qui:\n" -#: ecpg.c:272 +#: ecpg.c:261 #, c-format msgid "end of search list\n" msgstr "fine della lista di ricerca\n" -#: ecpg.c:278 +#: ecpg.c:267 #, c-format msgid "%s: no input files specified\n" msgstr "%s: non è stato specificato nessun file di input\n" -#: ecpg.c:470 +#: ecpg.c:460 #, c-format msgid "cursor \"%s\" has been declared but not opened" msgstr "il cursore \"%s\" è stato dichiarato, ma non aperto" -#: ecpg.c:483 preproc.y:125 +#: ecpg.c:473 preproc.y:127 #, c-format msgid "could not remove output file \"%s\"\n" msgstr "rimozione del file di output \"%s\" fallita\n" -#: pgc.l:421 +#: pgc.l:432 #, c-format msgid "unterminated /* comment" msgstr "commento /* non terminato" # string literal sarebbe intraducubile infatti è come la stringa viene rappresentata nel linguaggio di programmazione, ma come si fa a tradurlo?.... # Secondo me "stringa letterale" -- Daniele -#: pgc.l:434 +#: pgc.l:445 #, c-format msgid "invalid bit string literal" msgstr "bit nella stringa letterale non valido" -#: pgc.l:443 +#: pgc.l:454 #, c-format msgid "unterminated bit string literal" msgstr "letterale di stringa di bit non terminato" -#: pgc.l:459 +#: pgc.l:470 #, c-format msgid "unterminated hexadecimal string literal" msgstr "letterale di stringa esadecimale non terminato" -#: pgc.l:537 +#: pgc.l:548 #, c-format msgid "unterminated quoted string" msgstr "stringa tra virgolette non terminata" -#: pgc.l:592 pgc.l:605 +#: pgc.l:605 pgc.l:618 #, c-format msgid "zero-length delimited identifier" msgstr "identificativo delimitato di lunghezza zero" -#: pgc.l:613 +#: pgc.l:626 #, c-format msgid "unterminated quoted identifier" msgstr "identificativo tra virgolette non terminato" -#: pgc.l:867 +#: pgc.l:881 #, c-format msgid "nested /* ... */ comments" msgstr "commenti /* ... */ annidati" -#: pgc.l:960 +#: pgc.l:974 #, c-format msgid "missing identifier in EXEC SQL UNDEF command" msgstr "identificativo mancante nel comando EXEC SQL UNDEF" -#: pgc.l:1006 pgc.l:1020 +#: pgc.l:1020 pgc.l:1034 #, c-format msgid "missing matching \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" msgstr "mancata corrispondenza fra \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" -#: pgc.l:1009 pgc.l:1022 pgc.l:1198 +#: pgc.l:1023 pgc.l:1036 pgc.l:1212 #, c-format msgid "missing \"EXEC SQL ENDIF;\"" msgstr "manca \"EXEC SQL ENDIF;\"" -#: pgc.l:1038 pgc.l:1057 +#: pgc.l:1052 pgc.l:1071 #, c-format msgid "more than one EXEC SQL ELSE" msgstr "più di un EXEC SQL ELSE" -#: pgc.l:1079 pgc.l:1093 +#: pgc.l:1093 pgc.l:1107 #, c-format msgid "unmatched EXEC SQL ENDIF" msgstr "EXEC SQL ENDIF non corrispondente" -#: pgc.l:1113 +#: pgc.l:1127 #, c-format msgid "too many nested EXEC SQL IFDEF conditions" msgstr "troppe condizioni EXEC SQL IFDEF annidate" -#: pgc.l:1146 +#: pgc.l:1160 #, c-format msgid "missing identifier in EXEC SQL IFDEF command" msgstr "identificativo mancante nel comando EXEC SQL IFDEF" -#: pgc.l:1155 +#: pgc.l:1169 #, c-format msgid "missing identifier in EXEC SQL DEFINE command" msgstr "identificativo mancante nel comando EXEC SQL DEFINE" -#: pgc.l:1188 +#: pgc.l:1202 #, c-format msgid "syntax error in EXEC SQL INCLUDE command" msgstr "errore di sintassi nel comando EXEC SQL INCLUDE" -#: pgc.l:1237 +#: pgc.l:1251 #, c-format msgid "internal error: unreachable state; please report this to " msgstr "errore interno: stato non raggiungibile, si prega di segnalarlo a " -#: pgc.l:1362 +#: pgc.l:1375 #, c-format msgid "Error: include path \"%s/%s\" is too long on line %d, skipping\n" msgstr "Errore: il percorso delle inclusioni \"%s/%s\" è troppo lungo alla riga %d, perciò viene saltato\n" -#: pgc.l:1385 +#: pgc.l:1398 #, c-format msgid "could not open include file \"%s\" on line %d" msgstr "apertura del file di include \"%s\" alla riga %d fallita" @@ -345,210 +345,210 @@ msgstr "apertura del file di include \"%s\" alla riga %d fallita" msgid "syntax error" msgstr "errore di sintassi" -#: preproc.y:79 +#: preproc.y:81 #, c-format msgid "WARNING: " msgstr "ATTENZIONE: " -#: preproc.y:82 +#: preproc.y:84 #, c-format msgid "ERROR: " msgstr "ERRORE: " -#: preproc.y:506 +#: preproc.y:508 #, c-format msgid "cursor \"%s\" does not exist" msgstr "il cursore \"%s\" non esiste" -#: preproc.y:535 +#: preproc.y:537 #, c-format msgid "initializer not allowed in type definition" msgstr "l'inizializzatore non è permesso nella definizione del tipo di dato" -#: preproc.y:537 +#: preproc.y:539 #, c-format msgid "type name \"string\" is reserved in Informix mode" msgstr "il nome di tipo \"string\" è riservato alla modalità Informix" -#: preproc.y:544 preproc.y:13853 +#: preproc.y:546 preproc.y:14626 #, c-format msgid "type \"%s\" is already defined" msgstr "il tipo \"%s\" è già definito" -#: preproc.y:568 preproc.y:14511 preproc.y:14832 variable.c:618 +#: preproc.y:570 preproc.y:15284 preproc.y:15604 variable.c:620 #, c-format msgid "multidimensional arrays for simple data types are not supported" msgstr "gli array multidimensionali per tipi dato semplici non sono supportati" -#: preproc.y:1577 +#: preproc.y:1634 #, c-format msgid "AT option not allowed in CLOSE DATABASE statement" msgstr "l'opzione AT non è permessa nell'istruzione CLOSE DATABASE" -#: preproc.y:1780 +#: preproc.y:1849 #, c-format msgid "AT option not allowed in CONNECT statement" msgstr "l'opzione AT non è permessa nell'istruzione CONNECT" -#: preproc.y:1814 +#: preproc.y:1883 #, c-format msgid "AT option not allowed in DISCONNECT statement" msgstr "l'opzione AT non è permessa nell'istruzione DISCONNECT" -#: preproc.y:1869 +#: preproc.y:1938 #, c-format msgid "AT option not allowed in SET CONNECTION statement" msgstr "l'opzione AT non è permessa nell'istruzione SET CONNECTION" -#: preproc.y:1891 +#: preproc.y:1960 #, c-format msgid "AT option not allowed in TYPE statement" msgstr "l'opzione AT non è permessa nell'istruzione TYPE" -#: preproc.y:1900 +#: preproc.y:1969 #, c-format msgid "AT option not allowed in VAR statement" msgstr "l'opzione AT non è permessa nell'istruzione VAR" -#: preproc.y:1907 +#: preproc.y:1976 #, c-format msgid "AT option not allowed in WHENEVER statement" msgstr "l'opzione AT non è permessa nell'istruzione WHENEVER" -#: preproc.y:2155 preproc.y:2160 preproc.y:2276 preproc.y:3614 preproc.y:4866 -#: preproc.y:4875 preproc.y:5159 preproc.y:6562 preproc.y:7683 preproc.y:7688 -#: preproc.y:10142 preproc.y:10739 +#: preproc.y:2228 preproc.y:2233 preproc.y:2349 preproc.y:3759 preproc.y:5173 +#: preproc.y:5182 preproc.y:5466 preproc.y:6902 preproc.y:8140 preproc.y:8145 +#: preproc.y:10776 preproc.y:11393 #, c-format msgid "unsupported feature will be passed to server" msgstr "al server è stata richiesta una funzionalità non supportata" -#: preproc.y:2518 +#: preproc.y:2607 #, c-format msgid "SHOW ALL is not implemented" msgstr "SHOW ALL non è implementato" -#: preproc.y:3002 +#: preproc.y:3147 #, c-format msgid "COPY FROM STDIN is not implemented" msgstr "COPY FROM STDIN non è implementato" -#: preproc.y:8520 preproc.y:13442 +#: preproc.y:9035 preproc.y:14215 #, c-format msgid "using variable \"%s\" in different declare statements is not supported" msgstr "usare la variabile \"%s\" in una diversa istruzione declare non è supportato" -#: preproc.y:8522 preproc.y:13444 +#: preproc.y:9037 preproc.y:14217 #, c-format msgid "cursor \"%s\" is already defined" msgstr "il cursore \"%s\" è già definito" -#: preproc.y:8940 +#: preproc.y:9467 #, c-format msgid "no longer supported LIMIT #,# syntax passed to server" msgstr "la sintassi LIMIT #,# passata al server non è più supportata" -#: preproc.y:9176 preproc.y:9183 +#: preproc.y:9775 preproc.y:9782 #, c-format msgid "subquery in FROM must have an alias" msgstr "la sottoquery in FROM deve avere un alias" -#: preproc.y:13172 +#: preproc.y:13945 #, c-format msgid "CREATE TABLE AS cannot specify INTO" msgstr "CREATE TABLE AS non può specificare INTO" -#: preproc.y:13208 +#: preproc.y:13981 #, c-format msgid "expected \"@\", found \"%s\"" msgstr "atteso \"@\", trovato \"%s\"" -#: preproc.y:13220 +#: preproc.y:13993 #, c-format msgid "only protocols \"tcp\" and \"unix\" and database type \"postgresql\" are supported" msgstr "soltanto i protocolli \"tcp\" e \"unix\" ed il tipo database \"postgresql\" sono supportati" -#: preproc.y:13223 +#: preproc.y:13996 #, c-format msgid "expected \"://\", found \"%s\"" msgstr "atteso \"://\", trovato \"%s\"" -#: preproc.y:13228 +#: preproc.y:14001 #, c-format msgid "Unix-domain sockets only work on \"localhost\" but not on \"%s\"" msgstr "i socket di dominio Unix funzionano solo con \"localhost\" ma non con \"%s\"" -#: preproc.y:13254 +#: preproc.y:14027 #, c-format msgid "expected \"postgresql\", found \"%s\"" msgstr "atteso \"postgresql\", trovato \"%s\"" -#: preproc.y:13257 +#: preproc.y:14030 #, c-format msgid "invalid connection type: %s" msgstr "tipo di connessione non valido: %s" -#: preproc.y:13266 +#: preproc.y:14039 #, c-format msgid "expected \"@\" or \"://\", found \"%s\"" msgstr "atteso \"@\" oppure \"://\", trovato \"%s\"" -#: preproc.y:13341 preproc.y:13359 +#: preproc.y:14114 preproc.y:14132 #, c-format msgid "invalid data type" msgstr "tipo dato non valido" -#: preproc.y:13370 preproc.y:13387 +#: preproc.y:14143 preproc.y:14160 #, c-format msgid "incomplete statement" msgstr "istruzione incompleta" -#: preproc.y:13373 preproc.y:13390 +#: preproc.y:14146 preproc.y:14163 #, c-format msgid "unrecognized token \"%s\"" msgstr "token \"%s\" sconosciuto" -#: preproc.y:13664 +#: preproc.y:14437 #, c-format msgid "only data types numeric and decimal have precision/scale argument" msgstr "solo i dati di tipo numeric e decimal hanno argomento precisione/scala" -#: preproc.y:13676 +#: preproc.y:14449 #, c-format msgid "interval specification not allowed here" msgstr "specificazione di intervallo non permessa qui" -#: preproc.y:13828 preproc.y:13880 +#: preproc.y:14601 preproc.y:14653 #, c-format msgid "too many levels in nested structure/union definition" msgstr "troppi livelli nidificati nella definizione della struttura/unione" -#: preproc.y:14019 +#: preproc.y:14792 #, c-format msgid "pointers to varchar are not implemented" msgstr "i puntatori a varchar non sono implementati" -#: preproc.y:14206 preproc.y:14231 +#: preproc.y:14979 preproc.y:15004 #, c-format msgid "using unsupported DESCRIBE statement" msgstr "si sta utilizzando una istruzione DESCRIBE non supportata" -#: preproc.y:14478 +#: preproc.y:15251 #, c-format msgid "initializer not allowed in EXEC SQL VAR command" msgstr "initializer non è permesso nel comando EXEC SQL VAR" -#: preproc.y:14790 +#: preproc.y:15562 #, c-format msgid "arrays of indicators are not allowed on input" msgstr "array di indicatori non sono permessi" -#: preproc.y:15011 +#: preproc.y:15783 #, c-format msgid "operator not allowed in variable definition" msgstr "operatore non permesso nella definizione di variabile" #. translator: %s is typically the translation of "syntax error" -#: preproc.y:15049 +#: preproc.y:15821 #, c-format msgid "%s at or near \"%s\"" msgstr "%s a o presso \"%s\"" @@ -639,34 +639,34 @@ msgstr "la variabile \"%s\" non è un array" msgid "variable \"%s\" is not declared" msgstr "la variabile \"%s\" non è stata dichiarata" -#: variable.c:492 +#: variable.c:494 #, c-format msgid "indicator variable must have an integer type" msgstr "il tipo di variabile di un indicatore deve essere intero" -#: variable.c:504 +#: variable.c:506 #, c-format msgid "unrecognized data type name \"%s\"" msgstr "tipo di dato chiamato \"%s\" è sconosciuto" -#: variable.c:515 variable.c:523 variable.c:540 variable.c:543 +#: variable.c:517 variable.c:525 variable.c:542 variable.c:545 #, c-format msgid "multidimensional arrays are not supported" msgstr "gli array multidimensionali non sono supportati" -#: variable.c:532 +#: variable.c:534 #, c-format msgid "multilevel pointers (more than 2 levels) are not supported; found %d level" msgid_plural "multilevel pointers (more than 2 levels) are not supported; found %d levels" msgstr[0] "puntatori a più livelli (più di 2) non sono supportati; trovato %d livello" msgstr[1] "puntatori a più livelli (più di 2) non sono supportati; trovati %d livelli" -#: variable.c:537 +#: variable.c:539 #, c-format msgid "pointer to pointer is not supported for this data type" msgstr "il puntatore a puntatore non è supportato per questo tipo di dato" -#: variable.c:557 +#: variable.c:559 #, c-format msgid "multidimensional arrays for structures are not supported" msgstr "gli array multidimensionali per strutture non sono supportati" diff --git a/src/interfaces/ecpg/preproc/po/ja.po b/src/interfaces/ecpg/preproc/po/ja.po index 68aa91caa4..e5abc66181 100644 --- a/src/interfaces/ecpg/preproc/po/ja.po +++ b/src/interfaces/ecpg/preproc/po/ja.po @@ -5,11 +5,11 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0 beta 3\n" +"Project-Id-Version: PostgreSQL 9.6.3 \n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2013-08-18 09:56+0900\n" -"PO-Revision-Date: 2010-07-21 18:37+0900\n" -"Last-Translator: HOTTA Michihide \n" +"POT-Creation-Date: 2017-04-03 13:17+0900\n" +"PO-Revision-Date: 2017-02-01 18:37+0900\n" +"Last-Translator: Ideriha Takeshi \n" "Language-Team: jpug-doc \n" "Language: ja\n" "MIME-Version: 1.0\n" @@ -27,27 +27,27 @@ msgstr "変数\"%s\"ã¯æ•°å€¤åž‹ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“" msgid "descriptor \"%s\" does not exist" msgstr "%s記述å­ã¯å­˜åœ¨ã—ã¾ã›ã‚“" -#: descriptor.c:161 descriptor.c:210 +#: descriptor.c:161 descriptor.c:213 #, c-format msgid "descriptor header item \"%d\" does not exist" msgstr "記述å­ãƒ˜ãƒƒãƒ€é …ç›®%dã¯å­˜åœ¨ã—ã¾ã›ã‚“" -#: descriptor.c:182 +#: descriptor.c:183 #, c-format msgid "nullable is always 1" msgstr "nullableã¯å¸¸ã«1ã§ã™" -#: descriptor.c:185 +#: descriptor.c:186 #, c-format msgid "key_member is always 0" msgstr "key_memberã¯å¸¸ã«0ã§ã™" -#: descriptor.c:277 +#: descriptor.c:280 #, c-format msgid "descriptor item \"%s\" is not implemented" msgstr "記述å­é …ç›®%sã¯å®Ÿè£…ã•れã¦ã„ã¾ã›ã‚“" -#: descriptor.c:287 +#: descriptor.c:290 #, c-format msgid "descriptor item \"%s\" cannot be set" msgstr "記述å­é …ç›®%sã¯è¨­å®šã§ãã¾ã›ã‚“" @@ -146,8 +146,8 @@ msgstr " -t トランザクションã®è‡ªå‹•コミットを有効 #: ecpg.c:57 #, c-format -msgid " --version output version information, then exit\n" -msgstr " --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を出力ã—ã€çµ‚了ã—ã¾ã™\n" +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã€çµ‚了ã—ã¾ã™\n" #: ecpg.c:58 #, c-format @@ -174,142 +174,152 @@ msgstr "" "\n" "ä¸å…·åˆã¯ã«å ±å‘Šã—ã¦ãã ã•ã„。\n" -#: ecpg.c:182 ecpg.c:333 ecpg.c:343 +#: ecpg.c:139 +#, c-format +msgid "%s: could not locate my own executable path\n" +msgstr "%s: 自身ã®å®Ÿè¡Œå¯èƒ½ãƒ‘スを見ã¤ã‘られã¾ã›ã‚“ã§ã—ãŸ\n" + +#: ecpg.c:175 ecpg.c:327 ecpg.c:337 #, c-format msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: ファイル\"%s\"をオープンã§ãã¾ã›ã‚“ã§ã—ãŸ: %s\n" -#: ecpg.c:221 ecpg.c:234 ecpg.c:250 ecpg.c:275 +#: ecpg.c:214 ecpg.c:227 ecpg.c:243 ecpg.c:268 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "詳細ã¯\"%s --help\"を実行ã—ã¦ãã ã•ã„。\n" -#: ecpg.c:245 +#: ecpg.c:238 #, c-format msgid "%s: parser debug support (-d) not available\n" msgstr "%s: パーサデãƒãƒƒã‚°ã®ã‚µãƒãƒ¼ãƒˆ(-d)を利用ã§ãã¾ã›ã‚“\n" -#: ecpg.c:263 +#: ecpg.c:256 #, c-format msgid "%s, the PostgreSQL embedded C preprocessor, version %d.%d.%d\n" msgstr "%s PostgreSQL埋込ã¿C言語プリプロセッサ ãƒãƒ¼ã‚¸ãƒ§ãƒ³%d.%d.%d\n" -#: ecpg.c:265 +#: ecpg.c:258 #, c-format msgid "EXEC SQL INCLUDE ... search starts here:\n" msgstr "EXEC SQL INCLUDE ... 検索ãŒå§‹ã¾ã‚Šã¾ã™\n" -#: ecpg.c:268 +#: ecpg.c:261 #, c-format msgid "end of search list\n" msgstr "検索リストã®çµ‚端ã§ã™\n" -#: ecpg.c:274 +#: ecpg.c:267 #, c-format msgid "%s: no input files specified\n" msgstr "%s: å…¥åŠ›ãƒ•ã‚¡ã‚¤ãƒ«ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“\n" -#: ecpg.c:466 +#: ecpg.c:460 #, c-format msgid "cursor \"%s\" has been declared but not opened" msgstr "カーソル%sã¯å®£è¨€ã•れã¾ã—ãŸãŒã€ã‚ªãƒ¼ãƒ—ンã•れã¦ã„ã¾ã›ã‚“" -#: ecpg.c:479 preproc.y:109 +#: ecpg.c:473 preproc.y:127 #, c-format msgid "could not remove output file \"%s\"\n" msgstr "出力ファイル\"%s\"を削除ã§ãã¾ã›ã‚“ã§ã—ãŸ\n" -#: pgc.l:403 +#: pgc.l:432 #, c-format msgid "unterminated /* comment" msgstr "/*コメントãŒé–‰ã˜ã¦ã„ã¾ã›ã‚“" -#: pgc.l:416 +#: pgc.l:445 #, c-format msgid "invalid bit string literal" msgstr "無効ãªãƒ“ット列リテラルã§ã™" -#: pgc.l:425 +#: pgc.l:454 #, c-format msgid "unterminated bit string literal" msgstr "ビット文字列リテラルã®çµ‚端ãŒã‚りã¾ã›ã‚“" -#: pgc.l:441 +#: pgc.l:470 #, c-format msgid "unterminated hexadecimal string literal" msgstr "16進数文字列リテラルã®çµ‚端ãŒã‚りã¾ã›ã‚“" -#: pgc.l:519 +#: pgc.l:548 #, c-format msgid "unterminated quoted string" msgstr "文字列ã®å¼•用符ãŒé–‰ã˜ã¦ã„ã¾ã›ã‚“" -#: pgc.l:574 pgc.l:587 +#: pgc.l:606 pgc.l:619 #, c-format msgid "zero-length delimited identifier" msgstr "区切りã¤ã識別å­ã®é•·ã•ãŒã‚¼ãƒ­ã§ã™" -#: pgc.l:595 +#: pgc.l:627 #, c-format msgid "unterminated quoted identifier" msgstr "識別å­ã®å¼•用符ãŒé–‰ã˜ã¦ã„ã¾ã›ã‚“" -#: pgc.l:941 +#: pgc.l:882 +#, c-format +msgid "nested /* ... */ comments" +msgstr "入れå­ã«ãªã£ãŸã‚³ãƒ¡ãƒ³ãƒˆ /* ... */ ã§ã™" + +#: pgc.l:975 #, c-format msgid "missing identifier in EXEC SQL UNDEF command" msgstr "EXEC SQL UNDEFコマンドã«ãŠã„ã¦è­˜åˆ¥å­ãŒã‚りã¾ã›ã‚“" -#: pgc.l:987 pgc.l:1001 +#: pgc.l:1021 pgc.l:1035 #, c-format msgid "missing matching \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" msgstr "対応ã™ã‚‹\"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"ãŒã‚りã¾ã›ã‚“" -#: pgc.l:990 pgc.l:1003 pgc.l:1179 +#: pgc.l:1024 pgc.l:1037 pgc.l:1213 #, c-format msgid "missing \"EXEC SQL ENDIF;\"" msgstr "\"EXEC SQL ENDIF;\"ãŒã‚りã¾ã›ã‚“" -#: pgc.l:1019 pgc.l:1038 +#: pgc.l:1053 pgc.l:1072 #, c-format msgid "more than one EXEC SQL ELSE" msgstr "1ã¤ä»¥ä¸Šã®EXEC SQL ELSE\"ãŒå­˜åœ¨ã—ã¾ã™" -#: pgc.l:1060 pgc.l:1074 +#: pgc.l:1094 pgc.l:1108 #, c-format msgid "unmatched EXEC SQL ENDIF" msgstr "EXEC SQL ENDIFã«å¯¾å¿œã™ã‚‹ã‚‚ã®ãŒã‚りã¾ã›ã‚“" -#: pgc.l:1094 +#: pgc.l:1128 #, c-format msgid "too many nested EXEC SQL IFDEF conditions" msgstr "入れå­çжã®EXEC SQL IFDEFæ¡ä»¶ãŒå¤šã™ãŽã¾ã™" -#: pgc.l:1127 +#: pgc.l:1161 #, c-format msgid "missing identifier in EXEC SQL IFDEF command" msgstr "EXEC SQL IFDEFコマンドã«ãŠã„ã¦è­˜åˆ¥å­ãŒã‚りã¾ã›ã‚“" -#: pgc.l:1136 +#: pgc.l:1170 #, c-format msgid "missing identifier in EXEC SQL DEFINE command" msgstr "EXEC SQL DEFINEコマンドã«ãŠã„ã¦è­˜åˆ¥å­ãŒã‚りã¾ã›ã‚“" -#: pgc.l:1169 +#: pgc.l:1203 #, c-format msgid "syntax error in EXEC SQL INCLUDE command" msgstr "EXEC SQL INCLUDEコマンドã«ãŠã„ã¦æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ãŒã‚りã¾ã™" -#: pgc.l:1218 +#: pgc.l:1252 #, c-format msgid "internal error: unreachable state; please report this to " msgstr "内部エラー: 到é”ã—ãªã„ã¯ãšã®çŠ¶æ…‹ã§ã™ã€‚ã¾ã§å ±å‘Šã—ã¦ãã ã•ã„" -#: pgc.l:1343 +#: pgc.l:1377 #, c-format msgid "Error: include path \"%s/%s\" is too long on line %d, skipping\n" msgstr "エラー:行番å·%3$dã®ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ‘ス\"%1$s/%2$s\"ãŒé•·ã™ãŽã¾ã™ã€‚無視ã—ã¾ã—ãŸã€‚\n" -#: pgc.l:1365 +#: pgc.l:1400 #, c-format msgid "could not open include file \"%s\" on line %d" msgstr "行番å·%2$dã®ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ•ァイル\"%1$s\"をオープンã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" @@ -323,200 +333,205 @@ msgstr "構文エラー" msgid "WARNING: " msgstr "警告: " -#: preproc.y:85 +#: preproc.y:84 #, c-format msgid "ERROR: " msgstr "エラー: " -#: preproc.y:491 +#: preproc.y:508 #, c-format msgid "cursor \"%s\" does not exist" msgstr "カーソル\"%s\"ã¯å­˜åœ¨ã—ã¾ã›ã‚“" -#: preproc.y:520 +#: preproc.y:537 #, c-format msgid "initializer not allowed in type definition" msgstr "型定義ã§ã¯ã‚¤ãƒ‹ã‚·ãƒ£ãƒ©ã‚¤ã‚¶ã¯è¨±ã•れã¾ã›ã‚“" -#: preproc.y:522 +#: preproc.y:539 #, c-format msgid "type name \"string\" is reserved in Informix mode" msgstr "åž‹å\"string\"ã¯Informixモードã§ã™ã§ã«äºˆç´„ã•れã¦ã„ã¾ã™" -#: preproc.y:529 preproc.y:13638 +#: preproc.y:546 preproc.y:14626 #, c-format msgid "type \"%s\" is already defined" msgstr "\"%s\"åž‹ã¯ã™ã§ã«å®šç¾©ã•れã¦ã„ã¾ã™" -#: preproc.y:553 preproc.y:14291 preproc.y:14612 variable.c:614 +#: preproc.y:570 preproc.y:15284 preproc.y:15604 variable.c:620 #, c-format msgid "multidimensional arrays for simple data types are not supported" msgstr "å˜ç´”ãªãƒ‡ãƒ¼ã‚¿åž‹ã®å¤šæ¬¡å…ƒé…列ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“" -#: preproc.y:1544 +#: preproc.y:1634 #, c-format msgid "AT option not allowed in CLOSE DATABASE statement" msgstr "CLOSE DATABASEæ–‡ã§ã¯ATオプションã¯è¨±ã•れã¾ã›ã‚“" -#: preproc.y:1747 +#: preproc.y:1849 #, c-format msgid "AT option not allowed in CONNECT statement" msgstr "CONNECTæ–‡ã§ã¯ATオプションã¯è¨±ã•れã¾ã›ã‚“" -#: preproc.y:1781 +#: preproc.y:1883 #, c-format msgid "AT option not allowed in DISCONNECT statement" msgstr "DISCONNECTæ–‡ã§ã¯ATオプションã¯è¨±ã•れã¾ã›ã‚“" -#: preproc.y:1836 +#: preproc.y:1938 #, c-format msgid "AT option not allowed in SET CONNECTION statement" msgstr "SET CONNECTIONæ–‡ã§ã¯ATオプションã¯è¨±ã•れã¾ã›ã‚“" -#: preproc.y:1858 +#: preproc.y:1960 #, c-format msgid "AT option not allowed in TYPE statement" msgstr "TYPEæ–‡ã§ã¯ATオプションã¯è¨±ã•れã¾ã›ã‚“" -#: preproc.y:1867 +#: preproc.y:1969 #, c-format msgid "AT option not allowed in VAR statement" msgstr "VARæ–‡ã§ã¯ATオプションã¯è¨±ã•れã¾ã›ã‚“" -#: preproc.y:1874 +#: preproc.y:1976 #, c-format msgid "AT option not allowed in WHENEVER statement" msgstr "WHENEVERæ–‡ã§ã¯ATオプションã¯è¨±ã•れã¾ã›ã‚“" -#: preproc.y:2122 preproc.y:2127 preproc.y:2242 preproc.y:3548 preproc.y:4800 -#: preproc.y:4809 preproc.y:5105 preproc.y:7552 preproc.y:7557 preproc.y:9965 -#: preproc.y:10555 +#: preproc.y:2228 preproc.y:2233 preproc.y:2349 preproc.y:3759 preproc.y:5173 +#: preproc.y:5182 preproc.y:5466 preproc.y:6902 preproc.y:8140 preproc.y:8145 +#: preproc.y:10776 preproc.y:11393 #, c-format msgid "unsupported feature will be passed to server" msgstr "サーãƒã«æœªã‚µãƒãƒ¼ãƒˆæ©Ÿèƒ½ãŒæ¸¡ã•れã¾ã™" -#: preproc.y:2484 +#: preproc.y:2607 #, c-format msgid "SHOW ALL is not implemented" msgstr "SHOW ALLã¯å®Ÿè£…ã•れã¦ã„ã¾ã›ã‚“" -#: preproc.y:2940 +#: preproc.y:3147 #, c-format msgid "COPY FROM STDIN is not implemented" msgstr "COPY FROM STDINã¯å®Ÿè£…ã•れã¦ã„ã¾ã›ã‚“" -#: preproc.y:8381 preproc.y:13227 +#: preproc.y:9035 preproc.y:14215 #, c-format msgid "using variable \"%s\" in different declare statements is not supported" msgstr "ç•°ãªã£ãŸdeclareステートメントã«ãŠã‘る変数\"%s\"ã®ä½¿ç”¨ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“" -#: preproc.y:8383 preproc.y:13229 +#: preproc.y:9037 preproc.y:14217 #, c-format msgid "cursor \"%s\" is already defined" msgstr "カーソル\"%s\"ã¯ã™ã§ã«å®šç¾©ã•れã¦ã„ã¾ã™" -#: preproc.y:8801 +#: preproc.y:9467 #, c-format msgid "no longer supported LIMIT #,# syntax passed to server" msgstr "サーãƒã«æ¸¡ã•れるLIMIT #,#æ§‹æ–‡ã¯ã‚‚ã¯ã‚„サãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“" -#: preproc.y:9045 preproc.y:9052 +#: preproc.y:9775 preproc.y:9782 #, c-format msgid "subquery in FROM must have an alias" msgstr "FROMå¥ã®å‰¯å•ã„åˆã‚ã›ã¯åˆ¥åã‚’æŒãŸãªã‘れã°ãªã‚Šã¾ã›ã‚“" -#: preproc.y:12957 +#: preproc.y:13945 #, c-format msgid "CREATE TABLE AS cannot specify INTO" msgstr "CREATE TABLE ASã¯INTOを指定ã§ãã¾ã›ã‚“" -#: preproc.y:12993 +#: preproc.y:13981 #, c-format msgid "expected \"@\", found \"%s\"" msgstr "想定ã§ã¯\"@\"ã€çµæžœã§ã¯\"%s\"" -#: preproc.y:13005 +#: preproc.y:13993 #, c-format msgid "only protocols \"tcp\" and \"unix\" and database type \"postgresql\" are supported" msgstr "プロトコルã§ã¯\"tcp\"ãŠã‚ˆã³\"unix\"ã®ã¿ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ç¨®é¡žã§ã¯\"postgresql\"ã®ã¿ãŒã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã™" -#: preproc.y:13008 +#: preproc.y:13996 #, c-format msgid "expected \"://\", found \"%s\"" msgstr "想定ã§ã¯\"://\"ã€çµæžœã§ã¯\"%s\"" -#: preproc.y:13013 +#: preproc.y:14001 #, c-format msgid "Unix-domain sockets only work on \"localhost\" but not on \"%s\"" msgstr "Unixドメインソケットã¯\"localhost\"ã§ã®ã¿ã§å‹•作ã—ã€\"%s\"ã§ã¯å‹•作ã—ã¾ã›ã‚“" -#: preproc.y:13039 +#: preproc.y:14027 #, c-format msgid "expected \"postgresql\", found \"%s\"" msgstr "想定ã§ã¯\"postgresql\"ã€çµæžœã§ã¯\"%s\"" -#: preproc.y:13042 +#: preproc.y:14030 #, c-format msgid "invalid connection type: %s" msgstr "ç„¡åŠ¹ãªæŽ¥ç¶šç¨®é¡ž: %s" -#: preproc.y:13051 +#: preproc.y:14039 #, c-format msgid "expected \"@\" or \"://\", found \"%s\"" msgstr "想定ã§ã¯\"@ã¾ãŸã¯\"\"://\"ã€çµæžœã§ã¯\"%s\"" -#: preproc.y:13126 preproc.y:13144 +#: preproc.y:14114 preproc.y:14132 #, c-format msgid "invalid data type" msgstr "無効ãªãƒ‡ãƒ¼ã‚¿åž‹" -#: preproc.y:13155 preproc.y:13172 +#: preproc.y:14143 preproc.y:14160 #, c-format msgid "incomplete statement" msgstr "ä¸å®Œå…¨ãªæ–‡" -#: preproc.y:13158 preproc.y:13175 +#: preproc.y:14146 preproc.y:14163 #, c-format msgid "unrecognized token \"%s\"" msgstr "èªè­˜ã§ããªã„トークン\"%s\"" -#: preproc.y:13449 +#: preproc.y:14437 #, c-format msgid "only data types numeric and decimal have precision/scale argument" msgstr "数値データ型ã¾ãŸã¯10進数データ型ã®ã¿ãŒç²¾åº¦/ä½å–り引数ã¨å–ã‚‹ã“ã¨ãŒã§ãã¾ã™" -#: preproc.y:13461 +#: preproc.y:14449 #, c-format msgid "interval specification not allowed here" msgstr "æ™‚é–“é–“éš”ã®æŒ‡å®šã¯ã“ã“ã§ã¯è¨±ã•れã¾ã›ã‚“" -#: preproc.y:13613 preproc.y:13665 +#: preproc.y:14601 preproc.y:14653 #, c-format msgid "too many levels in nested structure/union definition" msgstr "構造体/ユニオンã®å®šç¾©ã®å…¥ã‚Œå­ãƒ¬ãƒ™ãƒ«ãŒæ·±ã™ãŽã¾ã™" -#: preproc.y:13799 +#: preproc.y:14792 #, c-format msgid "pointers to varchar are not implemented" msgstr "varcharを指ã—示ã™ãƒã‚¤ãƒ³ã‚¿ã¯å®Ÿè£…ã•れã¦ã„ã¾ã›ã‚“" -#: preproc.y:13986 preproc.y:14011 +#: preproc.y:14979 preproc.y:15004 #, c-format msgid "using unsupported DESCRIBE statement" msgstr "未サãƒãƒ¼ãƒˆã®DESCRIBEæ–‡ã®ä½¿ç”¨" -#: preproc.y:14258 +#: preproc.y:15251 #, c-format msgid "initializer not allowed in EXEC SQL VAR command" msgstr "EXEC SQL VARコマンドã§ã¯ã‚¤ãƒ‹ã‚·ãƒ£ãƒ©ã‚¤ã‚¶ã¯è¨±ã•れã¾ã›ã‚“" -#: preproc.y:14570 +#: preproc.y:15562 #, c-format msgid "arrays of indicators are not allowed on input" msgstr "指示å­é…列ã¯å…¥åŠ›ã¨ã—ã¦è¨±ã•れã¾ã›ã‚“" +#: preproc.y:15783 +#, c-format +msgid "operator not allowed in variable definition" +msgstr "変数定義ã§ã¯æ¼”ç®—å­ã¯è¨±ã•れã¾ã›ã‚“" + #. translator: %s is typically the translation of "syntax error" -#: preproc.y:14824 +#: preproc.y:15821 #, c-format msgid "%s at or near \"%s\"" msgstr "\"%2$s\"ã¾ãŸã¯ãã®è¿‘辺ã§%1$s" @@ -526,7 +541,7 @@ msgstr "\"%2$s\"ã¾ãŸã¯ãã®è¿‘辺ã§%1$s" msgid "out of memory" msgstr "メモリä¸è¶³ã§ã™" -#: type.c:212 type.c:593 +#: type.c:212 type.c:664 #, c-format msgid "unrecognized variable type code %d" msgstr "èªè­˜ã§ããªã„変数型コード%d" @@ -561,17 +576,17 @@ msgstr "é…列/ãƒã‚¤ãƒ³ã‚¿ç”¨ã®æŒ‡ç¤ºå­ã¯é…列/ãƒã‚¤ãƒ³ã‚¿ã§ãªã‘れ㰠msgid "nested arrays are not supported (except strings)" msgstr "入れå­çжã®é…列ã¯ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“(文字列ã¯é™¤ãã¾ã™ï¼‰" -#: type.c:322 +#: type.c:331 #, c-format msgid "indicator for struct has to be a struct" msgstr "æ§‹é€ ä½“ç”¨ã®æŒ‡ç¤ºå­ã¯æ§‹é€ ä½“ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“" -#: type.c:331 type.c:339 type.c:347 +#: type.c:351 type.c:372 type.c:392 #, c-format msgid "indicator for simple data type has to be simple" msgstr "å˜ç´”ãªãƒ‡ãƒ¼ã‚¿åž‹ç”¨ã®æŒ‡ç¤ºå­ã¯å˜ç´”ãªã‚‚ã®ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“" -#: type.c:652 +#: type.c:723 #, c-format msgid "unrecognized descriptor item code %d" msgstr "èªè­˜ã§ããªã„記述å­é …目コード%dã§ã™" @@ -606,49 +621,35 @@ msgstr "変数\"%s\"ã¯é…列ã§ã¯ã‚りã¾ã›ã‚“" msgid "variable \"%s\" is not declared" msgstr "変数\"%s\"ã¯å®£è¨€ã•れã¦ã„ã¾ã›ã‚“" -#: variable.c:488 +#: variable.c:494 #, c-format msgid "indicator variable must have an integer type" msgstr "指示å­å¤‰æ•°ã¯æ•´æ•°åž‹ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“" -#: variable.c:500 +#: variable.c:506 #, c-format msgid "unrecognized data type name \"%s\"" msgstr "データ型å\"%s\"ã¯èªè­˜ã§ãã¾ã›ã‚“" -#: variable.c:511 variable.c:519 variable.c:536 variable.c:539 +#: variable.c:517 variable.c:525 variable.c:542 variable.c:545 #, c-format msgid "multidimensional arrays are not supported" msgstr "多次元é…列ã¯ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“" -#: variable.c:528 +#: variable.c:534 #, c-format msgid "multilevel pointers (more than 2 levels) are not supported; found %d level" msgid_plural "multilevel pointers (more than 2 levels) are not supported; found %d levels" msgstr[0] "複数レベルã®ãƒã‚¤ãƒ³ã‚¿ï¼ˆ2レベル以上)ã¯ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。%dレベルã‚りã¾ã™" msgstr[1] "複数レベルã®ãƒã‚¤ãƒ³ã‚¿ï¼ˆ2レベル以上)ã¯ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。%dレベルã‚りã¾ã™" -#: variable.c:533 +#: variable.c:539 #, c-format msgid "pointer to pointer is not supported for this data type" msgstr "ã“ã®ãƒ‡ãƒ¼ã‚¿åž‹ã§ã¯ã€ãƒã‚¤ãƒ³ã‚¿ã‚’指ã—示ã™ãƒã‚¤ãƒ³ã‚¿ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“" -#: variable.c:553 +#: variable.c:559 #, c-format msgid "multidimensional arrays for structures are not supported" msgstr "構造体ã®å¤šæ¬¡å…ƒé…列ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“" -#~ msgid "AT option not allowed in DEALLOCATE statement" -#~ msgstr "DEALLOCATEæ–‡ã§ã¯ATオプションã¯è¨±ã•れã¾ã›ã‚“" - -#~ msgid "COPY TO STDIN is not possible" -#~ msgstr "COPY TO STDINã¯ã§ãã¾ã›ã‚“" - -#~ msgid "COPY FROM STDOUT is not possible" -#~ msgstr "COPY FROM STDOUTã¯ã§ãã¾ã›ã‚“" - -#~ msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" -#~ msgstr "INITIALLY DEFERREDã¨å®£è¨€ã•れãŸåˆ¶ç´„ã¯DEFERRABLEã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“" - -#~ msgid " --help show this help, then exit\n" -#~ msgstr " --help ã“ã®ãƒ˜ãƒ«ãƒ—を表示ã—ã€çµ‚了ã—ã¾ã™\n" diff --git a/src/interfaces/ecpg/preproc/po/ko.po b/src/interfaces/ecpg/preproc/po/ko.po index 4f11825df8..124482f963 100644 --- a/src/interfaces/ecpg/preproc/po/ko.po +++ b/src/interfaces/ecpg/preproc/po/ko.po @@ -1,15 +1,11 @@ -# Korean message translation file for ecpg -# Copyright (C) 2010 PostgreSQL Global Development Group -# This file is distributed under the same license as the PostgreSQL package. -# msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 8.4\n" +"Project-Id-Version: PostgreSQL 9.6\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-09-09 16:34+0000\n" -"PO-Revision-Date: 2013-09-05 22:33-0400\n" -"Last-Translator: EnterpriseDB translation team \n" -"Language-Team: EnterpriseDB translation team \n" +"POT-Creation-Date: 2016-09-26 14:02+0900\n" +"PO-Revision-Date: 2016-09-26 15:33+0900\n" +"Last-Translator: Ioseph Kim \n" +"Language-Team: Korean Team \n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,30 +22,32 @@ msgstr "\"%s\" 변수는 ìˆ«ìž í˜•ì‹ì´ì–´ì•¼ 함" msgid "descriptor \"%s\" does not exist" msgstr "\"%s\" 설명ìžê°€ ì—†ìŒ" -#: descriptor.c:161 descriptor.c:210 +#: descriptor.c:161 descriptor.c:212 #, c-format msgid "descriptor header item \"%d\" does not exist" msgstr "ì„¤ëª…ìž í—¤ë” í•­ëª© \"%d\"ì´(ê°€) ì—†ìŒ" -#: descriptor.c:182 +#: descriptor.c:183 +#, c-format msgid "nullable is always 1" msgstr "null 허용 여부는 í•­ìƒ 1" -#: descriptor.c:185 +#: descriptor.c:186 +#, c-format msgid "key_member is always 0" msgstr "key_member는 í•­ìƒ 0" -#: descriptor.c:277 +#: descriptor.c:279 #, c-format msgid "descriptor item \"%s\" is not implemented" msgstr "ì„¤ëª…ìž í•­ëª© \"%s\"ì´(ê°€) 구현ë˜ì§€ 않ìŒ" -#: descriptor.c:287 +#: descriptor.c:289 #, c-format msgid "descriptor item \"%s\" cannot be set" msgstr "ì„¤ëª…ìž í•­ëª© \"%s\"ì„(를) 설정할 수 ì—†ìŒ" -#: ecpg.c:36 +#: ecpg.c:35 #, c-format msgid "" "%s is the PostgreSQL embedded SQL preprocessor for C programs.\n" @@ -58,7 +56,7 @@ msgstr "" "%sì€(는) C 프로그램용 PostgreSQL í¬í•¨ SQL 전처리기입니다.\n" "\n" -#: ecpg.c:38 +#: ecpg.c:37 #, c-format msgid "" "Usage:\n" @@ -69,12 +67,12 @@ msgstr "" " %s [OPTION]... 파ì¼...\n" "\n" -#: ecpg.c:41 +#: ecpg.c:40 #, c-format msgid "Options:\n" msgstr "옵션들:\n" -#: ecpg.c:42 +#: ecpg.c:41 #, c-format msgid "" " -c automatically generate C code from embedded SQL code;\n" @@ -83,7 +81,7 @@ msgstr "" " -c í¬í•¨ëœ SQL 코드ì—서 ìžë™ìœ¼ë¡œ C 코드를 ìƒì„±í•©ë‹ˆë‹¤.\n" " EXEC SQL TYPEì— ì˜í–¥ì„ ì¤ë‹ˆë‹¤.\n" -#: ecpg.c:44 +#: ecpg.c:43 #, c-format msgid "" " -C MODE set compatibility mode; MODE can be one of\n" @@ -93,38 +91,38 @@ msgstr "" "다.\n" " \"INFORMIX\", \"INFORMIX_SE\"\n" -#: ecpg.c:47 +#: ecpg.c:46 #, c-format msgid " -d generate parser debug output\n" msgstr " -d 파서 디버그 출력 ìƒì„±\n" -#: ecpg.c:49 +#: ecpg.c:48 #, c-format msgid " -D SYMBOL define SYMBOL\n" msgstr " -D SYMBOL SYMBOL ì •ì˜\n" -#: ecpg.c:50 +#: ecpg.c:49 #, c-format msgid "" " -h parse a header file, this option includes option \"-c\"\n" msgstr " -h í—¤ë” íŒŒì¼ êµ¬ë¬¸ ë¶„ì„. ì´ ì˜µì…˜ì€ \"-c\" 옵션 í¬í•¨\n" -#: ecpg.c:51 +#: ecpg.c:50 #, c-format msgid " -i parse system include files as well\n" msgstr " -i 시스템 í¬í•¨ 파ì¼ë„ 구문 ë¶„ì„\n" -#: ecpg.c:52 +#: ecpg.c:51 #, c-format msgid " -I DIRECTORY search DIRECTORY for include files\n" msgstr " -I DIRECTORY DIRECTORYì—서 í¬í•¨ íŒŒì¼ ê²€ìƒ‰\n" -#: ecpg.c:53 +#: ecpg.c:52 #, c-format msgid " -o OUTFILE write result to OUTFILE\n" msgstr " -o OUTFILE OUTFILEì— ê²°ê³¼ 쓰기\n" -#: ecpg.c:54 +#: ecpg.c:53 #, c-format msgid "" " -r OPTION specify run-time behavior; OPTION can be:\n" @@ -134,27 +132,27 @@ msgstr "" "다.\n" " \"no_indicator\", \"prepare\", \"questionmarks\"\n" -#: ecpg.c:56 +#: ecpg.c:55 #, c-format msgid " --regression run in regression testing mode\n" msgstr " --regression 회귀 테스트 모드ì—서 실행\n" -#: ecpg.c:57 +#: ecpg.c:56 #, c-format msgid " -t turn on autocommit of transactions\n" msgstr " -t 트랜잭션 ìžë™ 커밋 설정\n" -#: ecpg.c:58 -#, c-format -msgid " --help show this help, then exit\n" -msgstr " --help ì´ ë„움ë§ì„ 표시하고 종료\n" - -#: ecpg.c:59 +#: ecpg.c:57 #, c-format msgid " --version output version information, then exit\n" msgstr " --version 버전 정보를 출력하고 종료\n" -#: ecpg.c:60 +#: ecpg.c:58 +#, c-format +msgid " -?, --help show this help, then exit\n" +msgstr " -?, --help ì´ ë„움ë§ì„ 보여주고 마침\n" + +#: ecpg.c:59 #, c-format msgid "" "\n" @@ -165,7 +163,7 @@ msgstr "" "출력 íŒŒì¼ ì´ë¦„ì„ ì§€ì •í•˜ì§€ 않으면 ìž…ë ¥ íŒŒì¼ ì´ë¦„ì— .pgcê°€ ìžˆì„ ê²½ìš° 제거하고\n" ".c를 추가하여 ì´ë¦„ì´ ì§€ì •ë©ë‹ˆë‹¤.\n" -#: ecpg.c:62 +#: ecpg.c:61 #, c-format msgid "" "\n" @@ -174,112 +172,143 @@ msgstr "" "\n" "오류보고: .\n" -#: ecpg.c:183 ecpg.c:334 ecpg.c:344 +#: ecpg.c:143 +#, c-format +msgid "%s: could not locate my own executable path\n" +msgstr "%s: 실행 가능한 경로를 지정할 수 없습니다\n" + +#: ecpg.c:186 ecpg.c:337 ecpg.c:347 #, c-format msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: \"%s\" íŒŒì¼ ì—´ 수 ì—†ìŒ: %s\n" -#: ecpg.c:222 ecpg.c:235 ecpg.c:251 ecpg.c:276 +#: ecpg.c:225 ecpg.c:238 ecpg.c:254 ecpg.c:279 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "ìžì œí•œ ì‚¬í•­ì€ \"%s --help\" 명령으로 살펴보십시오.\n" -#: ecpg.c:246 +#: ecpg.c:249 #, c-format msgid "%s: parser debug support (-d) not available\n" msgstr "%s: 파서 디버그 ì§€ì›(-d)ì„ ì‚¬ìš©í•  수 ì—†ìŒ\n" -#: ecpg.c:264 +#: ecpg.c:267 #, c-format msgid "%s, the PostgreSQL embedded C preprocessor, version %d.%d.%d\n" msgstr "PostgreSQL í¬í•¨ C 전처리기 %sì˜ ë²„ì „ %d.%d.%d\n" -#: ecpg.c:266 +#: ecpg.c:269 #, c-format msgid "EXEC SQL INCLUDE ... search starts here:\n" msgstr "EXEC SQL INCLUDE ... 여기서 검색 시작:\n" -#: ecpg.c:269 +#: ecpg.c:272 #, c-format msgid "end of search list\n" msgstr "검색 목ë¡ì˜ ë\n" -#: ecpg.c:275 +#: ecpg.c:278 #, c-format msgid "%s: no input files specified\n" msgstr "%s: ì§€ì •ëœ ìž…ë ¥ íŒŒì¼ ì—†ìŒ\n" -#: ecpg.c:464 +#: ecpg.c:470 #, c-format msgid "cursor \"%s\" has been declared but not opened" msgstr "\"%s\" 커서가 ì„ ì–¸ë˜ì—ˆì§€ë§Œ 열리지 않ìŒ" -# # advance ë -#: pgc.l:386 +#: ecpg.c:483 preproc.y:127 +#, c-format +msgid "could not remove output file \"%s\"\n" +msgstr "출력 íŒŒì¼ \"%s\"ì„(를) 제거할 수 ì—†ìŒ\n" + +#: pgc.l:440 +#, c-format msgid "unterminated /* comment" msgstr "마무리 ì•ˆëœ /* 주ì„" -#: pgc.l:399 +#: pgc.l:453 +#, c-format msgid "invalid bit string literal" msgstr "ìž˜ëª»ëœ ë¹„íŠ¸ 문ìžì—´ 리터럴" -#: pgc.l:408 +#: pgc.l:462 +#, c-format msgid "unterminated bit string literal" msgstr "마무리 ì•ˆëœ ë¹„íŠ¸ 문ìžì—´ 문ìž" -#: pgc.l:424 +#: pgc.l:478 +#, c-format msgid "unterminated hexadecimal string literal" msgstr "마무리 ì•ˆëœ 16진수 문ìžì—´ 문ìž" -#: pgc.l:501 +#: pgc.l:556 +#, c-format msgid "unterminated quoted string" msgstr "마무리 ì•ˆëœ ë”°ì˜´í‘œ ì•ˆì˜ ë¬¸ìžì—´" -#: pgc.l:556 pgc.l:569 +#: pgc.l:613 pgc.l:626 +#, c-format msgid "zero-length delimited identifier" msgstr "길ì´ê°€ 0ì¸ êµ¬ë¶„ ì‹ë³„ìž" -#: pgc.l:577 +#: pgc.l:634 +#, c-format msgid "unterminated quoted identifier" msgstr "마무리 ì•ˆëœ ë”°ì˜´í‘œ ì•ˆì˜ ì‹ë³„ìž" -#: pgc.l:898 +#: pgc.l:889 +#, c-format +msgid "nested /* ... */ comments" +msgstr "ì¤‘ì²©ëœ /* ... */ 주ì„" + +#: pgc.l:982 +#, c-format msgid "missing identifier in EXEC SQL UNDEF command" msgstr "EXEC SQL UNDEF ëª…ë ¹ì— ì‹ë³„ìž ëˆ„ë½" -#: pgc.l:944 pgc.l:958 +#: pgc.l:1028 pgc.l:1042 +#, c-format msgid "missing matching \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" msgstr "ì¼ì¹˜í•˜ëŠ” \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\" 누ë½" -#: pgc.l:947 pgc.l:960 pgc.l:1136 +#: pgc.l:1031 pgc.l:1044 pgc.l:1220 +#, c-format msgid "missing \"EXEC SQL ENDIF;\"" msgstr "\"EXEC SQL ENDIF;\" 누ë½" -#: pgc.l:976 pgc.l:995 +#: pgc.l:1060 pgc.l:1079 +#, c-format msgid "more than one EXEC SQL ELSE" msgstr "ë‘ ê°œ ì´ìƒì˜ EXEC SQL ELSE" -#: pgc.l:1017 pgc.l:1031 +#: pgc.l:1101 pgc.l:1115 +#, c-format msgid "unmatched EXEC SQL ENDIF" msgstr "ì¼ì¹˜í•˜ì§€ 않는 EXEC SQL ENDIF" -#: pgc.l:1051 +#: pgc.l:1135 +#, c-format msgid "too many nested EXEC SQL IFDEF conditions" msgstr "ì¤‘ì²©ëœ EXEC SQL IFDEF ì¡°ê±´ì´ ë„ˆë¬´ ë§ŽìŒ" -#: pgc.l:1084 +#: pgc.l:1168 +#, c-format msgid "missing identifier in EXEC SQL IFDEF command" msgstr "EXEC SQL IFDEF ëª…ë ¹ì— ì‹ë³„ìž ëˆ„ë½" -#: pgc.l:1093 +#: pgc.l:1177 +#, c-format msgid "missing identifier in EXEC SQL DEFINE command" msgstr "EXEC SQL DEFINE ëª…ë ¹ì— ì‹ë³„ìž ëˆ„ë½" -#: pgc.l:1126 +#: pgc.l:1210 +#, c-format msgid "syntax error in EXEC SQL INCLUDE command" msgstr "EXEC SQL INCLUDE ëª…ë ¹ì— êµ¬ë¬¸ 오류 ë°œìƒ" -#: pgc.l:1175 +#: pgc.l:1259 +#, c-format msgid "" "internal error: unreachable state; please report this to " @@ -287,307 +316,348 @@ msgstr "" "ë‚´ë¶€ 오류: ì—°ê²°í•  수 없습니다. ì´ ë¬¸ì œë¥¼ 1 + - one + - + - + - + - 2 + - two + - + - + + cursor_to_xml +--------------------------------------------------------------- +
+ + + + + + -1 + + + + + + + + + + 1 + + one + + + + + + + + 2 + + two + + + + + +
+ (1 row) diff --git a/src/test/regress/expected/xmlmap_1.out b/src/test/regress/expected/xmlmap_1.out index d67ef6d3e2..f6dbf81666 100644 --- a/src/test/regress/expected/xmlmap_1.out +++ b/src/test/regress/expected/xmlmap_1.out @@ -78,7 +78,11 @@ SELECT cursor_to_xml('xc'::refcursor, 5, false, true, ''); ERROR: unsupported XML feature DETAIL: This functionality requires the server to be built with libxml support. HINT: You need to rebuild PostgreSQL using --with-libxml. -MOVE FIRST IN xc; +SELECT cursor_to_xmlschema('xc'::refcursor, false, true, ''); +ERROR: unsupported XML feature +DETAIL: This functionality requires the server to be built with libxml support. +HINT: You need to rebuild PostgreSQL using --with-libxml. +MOVE BACKWARD ALL IN xc; SELECT cursor_to_xml('xc'::refcursor, 5, true, false, ''); ERROR: unsupported XML feature DETAIL: This functionality requires the server to be built with libxml support. diff --git a/src/test/regress/input/largeobject.source b/src/test/regress/input/largeobject.source index 96d75bccfb..b7a9d052bd 100644 --- a/src/test/regress/input/largeobject.source +++ b/src/test/regress/input/largeobject.source @@ -86,10 +86,8 @@ END; SELECT lo_from_bytea(0, lo_get(loid)) AS newloid FROM lotest_stash_values \gset --- Ideally we'd put a comment on this object for pg_dump testing purposes. --- But since pg_upgrade fails to preserve large object comments, doing so --- would break pg_upgrade's regression test. --- COMMENT ON LARGE OBJECT :newloid IS 'I Wandered Lonely as a Cloud'; +-- Add a comment to it, as well, for pg_dump/pg_upgrade testing. +COMMENT ON LARGE OBJECT :newloid IS 'I Wandered Lonely as a Cloud'; -- Read out a portion BEGIN; @@ -253,6 +251,13 @@ SELECT lo_from_bytea(0, E'\\xdeadbeef') AS newloid SET bytea_output TO hex; SELECT lo_get(:newloid); +-- Create one more object that we leave behind for testing pg_dump/pg_upgrade; +-- this one intentionally has an OID in the system range +SELECT lo_create(3001); + +COMMENT ON LARGE OBJECT 3001 IS 'testing comments'; + +-- Clean up DROP TABLE lotest_stash_values; DROP ROLE regress_lo_user; diff --git a/src/test/regress/input/tablespace.source b/src/test/regress/input/tablespace.source index 041ec97400..0c4a280a94 100644 --- a/src/test/regress/input/tablespace.source +++ b/src/test/regress/input/tablespace.source @@ -44,6 +44,37 @@ CREATE INDEX foo_idx on testschema.foo(i) TABLESPACE regress_tblspace; SELECT relname, spcname FROM pg_catalog.pg_tablespace t, pg_catalog.pg_class c where c.reltablespace = t.oid AND c.relname = 'foo_idx'; +-- check that default_tablespace doesn't affect ALTER TABLE index rebuilds +CREATE TABLE testschema.test_default_tab(id bigint) TABLESPACE regress_tblspace; +INSERT INTO testschema.test_default_tab VALUES (1); +CREATE INDEX test_index1 on testschema.test_default_tab (id); +CREATE INDEX test_index2 on testschema.test_default_tab (id) TABLESPACE regress_tblspace; +\d testschema.test_index1 +\d testschema.test_index2 +-- use a custom tablespace for default_tablespace +SET default_tablespace TO regress_tblspace; +-- tablespace should not change if no rewrite +ALTER TABLE testschema.test_default_tab ALTER id TYPE bigint; +\d testschema.test_index1 +\d testschema.test_index2 +SELECT * FROM testschema.test_default_tab; +-- tablespace should not change even if there is an index rewrite +ALTER TABLE testschema.test_default_tab ALTER id TYPE int; +\d testschema.test_index1 +\d testschema.test_index2 +SELECT * FROM testschema.test_default_tab; +-- now use the default tablespace for default_tablespace +SET default_tablespace TO ''; +-- tablespace should not change if no rewrite +ALTER TABLE testschema.test_default_tab ALTER id TYPE int; +\d testschema.test_index1 +\d testschema.test_index2 +-- tablespace should not change even if there is an index rewrite +ALTER TABLE testschema.test_default_tab ALTER id TYPE bigint; +\d testschema.test_index1 +\d testschema.test_index2 +DROP TABLE testschema.test_default_tab; + -- let's try moving a table from one place to another CREATE TABLE testschema.atable AS VALUES (1), (2); CREATE UNIQUE INDEX anindex ON testschema.atable(column1); @@ -66,11 +97,18 @@ DROP TABLESPACE regress_tblspace; CREATE ROLE regress_tablespace_user1 login; CREATE ROLE regress_tablespace_user2 login; +GRANT USAGE ON SCHEMA testschema TO regress_tablespace_user2; ALTER TABLESPACE regress_tblspace OWNER TO regress_tablespace_user1; +CREATE TABLE testschema.tablespace_acl (c int); +-- new owner lacks permission to create this index from scratch +CREATE INDEX k ON testschema.tablespace_acl (c) TABLESPACE regress_tblspace; +ALTER TABLE testschema.tablespace_acl OWNER TO regress_tablespace_user2; + SET SESSION ROLE regress_tablespace_user2; CREATE TABLE tablespace_table (i int) TABLESPACE regress_tblspace; -- fail +ALTER TABLE testschema.tablespace_acl ALTER c TYPE bigint; RESET ROLE; ALTER TABLESPACE regress_tblspace RENAME TO regress_tblspace_renamed; diff --git a/src/test/regress/output/largeobject.source b/src/test/regress/output/largeobject.source index 906a24eac4..e29f5423aa 100644 --- a/src/test/regress/output/largeobject.source +++ b/src/test/regress/output/largeobject.source @@ -90,10 +90,8 @@ END; -- it's left behind to help test pg_dump. SELECT lo_from_bytea(0, lo_get(loid)) AS newloid FROM lotest_stash_values \gset --- Ideally we'd put a comment on this object for pg_dump testing purposes. --- But since pg_upgrade fails to preserve large object comments, doing so --- would break pg_upgrade's regression test. --- COMMENT ON LARGE OBJECT :newloid IS 'I Wandered Lonely as a Cloud'; +-- Add a comment to it, as well, for pg_dump/pg_upgrade testing. +COMMENT ON LARGE OBJECT :newloid IS 'I Wandered Lonely as a Cloud'; -- Read out a portion BEGIN; UPDATE lotest_stash_values SET fd=lo_open(loid, CAST(x'20000' | x'40000' AS integer)); @@ -469,5 +467,15 @@ SELECT lo_get(:newloid); \xdeadbeef (1 row) +-- Create one more object that we leave behind for testing pg_dump/pg_upgrade; +-- this one intentionally has an OID in the system range +SELECT lo_create(3001); + lo_create +----------- + 3001 +(1 row) + +COMMENT ON LARGE OBJECT 3001 IS 'testing comments'; +-- Clean up DROP TABLE lotest_stash_values; DROP ROLE regress_lo_user; diff --git a/src/test/regress/output/largeobject_1.source b/src/test/regress/output/largeobject_1.source index cec35d70d5..6fd8cbe098 100644 --- a/src/test/regress/output/largeobject_1.source +++ b/src/test/regress/output/largeobject_1.source @@ -90,10 +90,8 @@ END; -- it's left behind to help test pg_dump. SELECT lo_from_bytea(0, lo_get(loid)) AS newloid FROM lotest_stash_values \gset --- Ideally we'd put a comment on this object for pg_dump testing purposes. --- But since pg_upgrade fails to preserve large object comments, doing so --- would break pg_upgrade's regression test. --- COMMENT ON LARGE OBJECT :newloid IS 'I Wandered Lonely as a Cloud'; +-- Add a comment to it, as well, for pg_dump/pg_upgrade testing. +COMMENT ON LARGE OBJECT :newloid IS 'I Wandered Lonely as a Cloud'; -- Read out a portion BEGIN; UPDATE lotest_stash_values SET fd=lo_open(loid, CAST(x'20000' | x'40000' AS integer)); @@ -469,5 +467,15 @@ SELECT lo_get(:newloid); \xdeadbeef (1 row) +-- Create one more object that we leave behind for testing pg_dump/pg_upgrade; +-- this one intentionally has an OID in the system range +SELECT lo_create(3001); + lo_create +----------- + 3001 +(1 row) + +COMMENT ON LARGE OBJECT 3001 IS 'testing comments'; +-- Clean up DROP TABLE lotest_stash_values; DROP ROLE regress_lo_user; diff --git a/src/test/regress/output/tablespace.source b/src/test/regress/output/tablespace.source index 384f689ac1..e86cf0e3af 100644 --- a/src/test/regress/output/tablespace.source +++ b/src/test/regress/output/tablespace.source @@ -61,6 +61,111 @@ SELECT relname, spcname FROM pg_catalog.pg_tablespace t, pg_catalog.pg_class c foo_idx | regress_tblspace (1 row) +-- check that default_tablespace doesn't affect ALTER TABLE index rebuilds +CREATE TABLE testschema.test_default_tab(id bigint) TABLESPACE regress_tblspace; +INSERT INTO testschema.test_default_tab VALUES (1); +CREATE INDEX test_index1 on testschema.test_default_tab (id); +CREATE INDEX test_index2 on testschema.test_default_tab (id) TABLESPACE regress_tblspace; +\d testschema.test_index1 +Index "testschema.test_index1" + Column | Type | Definition +--------+--------+------------ + id | bigint | id +btree, for table "testschema.test_default_tab" + +\d testschema.test_index2 +Index "testschema.test_index2" + Column | Type | Definition +--------+--------+------------ + id | bigint | id +btree, for table "testschema.test_default_tab" +Tablespace: "regress_tblspace" + +-- use a custom tablespace for default_tablespace +SET default_tablespace TO regress_tblspace; +-- tablespace should not change if no rewrite +ALTER TABLE testschema.test_default_tab ALTER id TYPE bigint; +\d testschema.test_index1 +Index "testschema.test_index1" + Column | Type | Definition +--------+--------+------------ + id | bigint | id +btree, for table "testschema.test_default_tab" + +\d testschema.test_index2 +Index "testschema.test_index2" + Column | Type | Definition +--------+--------+------------ + id | bigint | id +btree, for table "testschema.test_default_tab" +Tablespace: "regress_tblspace" + +SELECT * FROM testschema.test_default_tab; + id +---- + 1 +(1 row) + +-- tablespace should not change even if there is an index rewrite +ALTER TABLE testschema.test_default_tab ALTER id TYPE int; +\d testschema.test_index1 +Index "testschema.test_index1" + Column | Type | Definition +--------+---------+------------ + id | integer | id +btree, for table "testschema.test_default_tab" + +\d testschema.test_index2 +Index "testschema.test_index2" + Column | Type | Definition +--------+---------+------------ + id | integer | id +btree, for table "testschema.test_default_tab" +Tablespace: "regress_tblspace" + +SELECT * FROM testschema.test_default_tab; + id +---- + 1 +(1 row) + +-- now use the default tablespace for default_tablespace +SET default_tablespace TO ''; +-- tablespace should not change if no rewrite +ALTER TABLE testschema.test_default_tab ALTER id TYPE int; +\d testschema.test_index1 +Index "testschema.test_index1" + Column | Type | Definition +--------+---------+------------ + id | integer | id +btree, for table "testschema.test_default_tab" + +\d testschema.test_index2 +Index "testschema.test_index2" + Column | Type | Definition +--------+---------+------------ + id | integer | id +btree, for table "testschema.test_default_tab" +Tablespace: "regress_tblspace" + +-- tablespace should not change even if there is an index rewrite +ALTER TABLE testschema.test_default_tab ALTER id TYPE bigint; +\d testschema.test_index1 +Index "testschema.test_index1" + Column | Type | Definition +--------+--------+------------ + id | bigint | id +btree, for table "testschema.test_default_tab" + +\d testschema.test_index2 +Index "testschema.test_index2" + Column | Type | Definition +--------+--------+------------ + id | bigint | id +btree, for table "testschema.test_default_tab" +Tablespace: "regress_tblspace" + +DROP TABLE testschema.test_default_tab; -- let's try moving a table from one place to another CREATE TABLE testschema.atable AS VALUES (1), (2); CREATE UNIQUE INDEX anindex ON testschema.atable(column1); @@ -87,10 +192,16 @@ DROP TABLESPACE regress_tblspace; ERROR: tablespace "regress_tblspace" is not empty CREATE ROLE regress_tablespace_user1 login; CREATE ROLE regress_tablespace_user2 login; +GRANT USAGE ON SCHEMA testschema TO regress_tablespace_user2; ALTER TABLESPACE regress_tblspace OWNER TO regress_tablespace_user1; +CREATE TABLE testschema.tablespace_acl (c int); +-- new owner lacks permission to create this index from scratch +CREATE INDEX k ON testschema.tablespace_acl (c) TABLESPACE regress_tblspace; +ALTER TABLE testschema.tablespace_acl OWNER TO regress_tablespace_user2; SET SESSION ROLE regress_tablespace_user2; CREATE TABLE tablespace_table (i int) TABLESPACE regress_tblspace; -- fail ERROR: permission denied for tablespace regress_tblspace +ALTER TABLE testschema.tablespace_acl ALTER c TYPE bigint; RESET ROLE; ALTER TABLESPACE regress_tblspace RENAME TO regress_tblspace_renamed; ALTER TABLE ALL IN TABLESPACE regress_tblspace_renamed SET TABLESPACE pg_default; @@ -101,10 +212,11 @@ NOTICE: no matching relations in tablespace "regress_tblspace_renamed" found -- Should succeed DROP TABLESPACE regress_tblspace_renamed; DROP SCHEMA testschema CASCADE; -NOTICE: drop cascades to 4 other objects +NOTICE: drop cascades to 5 other objects DETAIL: drop cascades to table testschema.foo drop cascades to table testschema.asselect drop cascades to table testschema.asexecute drop cascades to table testschema.atable +drop cascades to table testschema.tablespace_acl DROP ROLE regress_tablespace_user1; DROP ROLE regress_tablespace_user2; diff --git a/src/test/regress/sql/aggregates.sql b/src/test/regress/sql/aggregates.sql index 430ac49385..2eeb3eedbd 100644 --- a/src/test/regress/sql/aggregates.sql +++ b/src/test/regress/sql/aggregates.sql @@ -727,6 +727,9 @@ select my_avg(one),my_avg(one) from (values(1),(3)) t(one); -- aggregate state should be shared as transfn is the same for both aggs. select my_avg(one),my_sum(one) from (values(1),(3)) t(one); +-- same as previous one, but with DISTINCT, which requires sorting the input. +select my_avg(distinct one),my_sum(distinct one) from (values(1),(3),(1)) t(one); + -- shouldn't share states due to the distinctness not matching. select my_avg(distinct one),my_sum(one) from (values(1),(3)) t(one); diff --git a/src/test/regress/sql/alter_table.sql b/src/test/regress/sql/alter_table.sql index 72e65d4ee0..fe78067ae7 100644 --- a/src/test/regress/sql/alter_table.sql +++ b/src/test/regress/sql/alter_table.sql @@ -165,6 +165,26 @@ SELECT * FROM tmp_new2; DROP TABLE tmp_new; DROP TABLE tmp_new2; +-- +-- check renaming to a table's array type's autogenerated name +-- (the array type's name should get out of the way) +-- +CREATE TABLE tmp_array (id int); +CREATE TABLE tmp_array2 (id int); +SELECT typname FROM pg_type WHERE oid = 'tmp_array[]'::regtype; +SELECT typname FROM pg_type WHERE oid = 'tmp_array2[]'::regtype; +ALTER TABLE tmp_array2 RENAME TO _tmp_array; +SELECT typname FROM pg_type WHERE oid = 'tmp_array[]'::regtype; +SELECT typname FROM pg_type WHERE oid = '_tmp_array[]'::regtype; +DROP TABLE _tmp_array; +DROP TABLE tmp_array; + +-- renaming to table's own array type's name is an interesting corner case +CREATE TABLE tmp_array (id int); +SELECT typname FROM pg_type WHERE oid = 'tmp_array[]'::regtype; +ALTER TABLE tmp_array RENAME TO _tmp_array; +SELECT typname FROM pg_type WHERE oid = '_tmp_array[]'::regtype; +DROP TABLE _tmp_array; -- ALTER TABLE ... RENAME on non-table relations -- renaming indexes (FIXME: this should probably test the index's functionality) @@ -255,7 +275,7 @@ INSERT INTO tmp3 values (5,50); -- Try (and fail) to add constraint due to invalid source columns ALTER TABLE tmp3 add constraint tmpconstr foreign key(c) references tmp2 match full; --- Try (and fail) to add constraint due to invalide destination columns explicitly given +-- Try (and fail) to add constraint due to invalid destination columns explicitly given ALTER TABLE tmp3 add constraint tmpconstr foreign key(a) references tmp2(b) match full; -- Try (and fail) to add constraint due to invalid data @@ -307,6 +327,21 @@ ALTER TABLE tmp7 ADD CONSTRAINT identity CHECK (b = boo(b)); ALTER TABLE tmp3 ADD CONSTRAINT IDENTITY check (b = boo(b)) NOT VALID; ALTER TABLE tmp3 VALIDATE CONSTRAINT identity; +-- A NO INHERIT constraint should not be looked for in children during VALIDATE CONSTRAINT +create table parent_noinh_convalid (a int); +create table child_noinh_convalid () inherits (parent_noinh_convalid); +insert into parent_noinh_convalid values (1); +insert into child_noinh_convalid values (1); +alter table parent_noinh_convalid add constraint check_a_is_2 check (a = 2) no inherit not valid; +-- fail, because of the row in parent +alter table parent_noinh_convalid validate constraint check_a_is_2; +delete from only parent_noinh_convalid; +-- ok (parent itself contains no violating rows) +alter table parent_noinh_convalid validate constraint check_a_is_2; +select convalidated from pg_constraint where conrelid = 'parent_noinh_convalid'::regclass and conname = 'check_a_is_2'; +-- cleanup +drop table parent_noinh_convalid, child_noinh_convalid; + -- Try (and fail) to create constraint from tmp5(a) to tmp4(a) - unique constraint on -- tmp4 is a,b @@ -407,6 +442,39 @@ ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1, ftest2) -- As does this... ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest2, ftest1) references pktable(ptest1, ptest2); +DROP TABLE FKTABLE; +DROP TABLE PKTABLE; + +-- Test that ALTER CONSTRAINT updates trigger deferrability properly + +CREATE TEMP TABLE PKTABLE (ptest1 int primary key); +CREATE TEMP TABLE FKTABLE (ftest1 int); + +ALTER TABLE FKTABLE ADD CONSTRAINT fknd FOREIGN KEY(ftest1) REFERENCES pktable + ON DELETE CASCADE ON UPDATE NO ACTION NOT DEFERRABLE; +ALTER TABLE FKTABLE ADD CONSTRAINT fkdd FOREIGN KEY(ftest1) REFERENCES pktable + ON DELETE CASCADE ON UPDATE NO ACTION DEFERRABLE INITIALLY DEFERRED; +ALTER TABLE FKTABLE ADD CONSTRAINT fkdi FOREIGN KEY(ftest1) REFERENCES pktable + ON DELETE CASCADE ON UPDATE NO ACTION DEFERRABLE INITIALLY IMMEDIATE; + +ALTER TABLE FKTABLE ADD CONSTRAINT fknd2 FOREIGN KEY(ftest1) REFERENCES pktable + ON DELETE CASCADE ON UPDATE NO ACTION DEFERRABLE INITIALLY DEFERRED; +ALTER TABLE FKTABLE ALTER CONSTRAINT fknd2 NOT DEFERRABLE; +ALTER TABLE FKTABLE ADD CONSTRAINT fkdd2 FOREIGN KEY(ftest1) REFERENCES pktable + ON DELETE CASCADE ON UPDATE NO ACTION NOT DEFERRABLE; +ALTER TABLE FKTABLE ALTER CONSTRAINT fkdd2 DEFERRABLE INITIALLY DEFERRED; +ALTER TABLE FKTABLE ADD CONSTRAINT fkdi2 FOREIGN KEY(ftest1) REFERENCES pktable + ON DELETE CASCADE ON UPDATE NO ACTION NOT DEFERRABLE; +ALTER TABLE FKTABLE ALTER CONSTRAINT fkdi2 DEFERRABLE INITIALLY IMMEDIATE; + +SELECT conname, tgfoid::regproc, tgtype, tgdeferrable, tginitdeferred +FROM pg_trigger JOIN pg_constraint con ON con.oid = tgconstraint +WHERE tgrelid = 'pktable'::regclass +ORDER BY 1,2,3; +SELECT conname, tgfoid::regproc, tgtype, tgdeferrable, tginitdeferred +FROM pg_trigger JOIN pg_constraint con ON con.oid = tgconstraint +WHERE tgrelid = 'fktable'::regclass +ORDER BY 1,2,3; -- temp tables should go away by themselves, need not drop them. @@ -1302,6 +1370,28 @@ select relname, conname, coninhcount, conislocal, connoinherit where relname like 'test_inh_check%' and c.conrelid = r.oid order by 1, 2; +-- ALTER COLUMN TYPE with different schema in children +-- Bug at https://postgr.es/m/20170102225618.GA10071@telsasoft.com +CREATE TABLE test_type_diff (f1 int); +CREATE TABLE test_type_diff_c (extra smallint) INHERITS (test_type_diff); +ALTER TABLE test_type_diff ADD COLUMN f2 int; +INSERT INTO test_type_diff_c VALUES (1, 2, 3); +ALTER TABLE test_type_diff ALTER COLUMN f2 TYPE bigint USING f2::bigint; + +CREATE TABLE test_type_diff2 (int_two int2, int_four int4, int_eight int8); +CREATE TABLE test_type_diff2_c1 (int_four int4, int_eight int8, int_two int2); +CREATE TABLE test_type_diff2_c2 (int_eight int8, int_two int2, int_four int4); +CREATE TABLE test_type_diff2_c3 (int_two int2, int_four int4, int_eight int8); +ALTER TABLE test_type_diff2_c1 INHERIT test_type_diff2; +ALTER TABLE test_type_diff2_c2 INHERIT test_type_diff2; +ALTER TABLE test_type_diff2_c3 INHERIT test_type_diff2; +INSERT INTO test_type_diff2_c1 VALUES (1, 2, 3); +INSERT INTO test_type_diff2_c2 VALUES (4, 5, 6); +INSERT INTO test_type_diff2_c3 VALUES (7, 8, 9); +ALTER TABLE test_type_diff2 ALTER COLUMN int_four TYPE int8 USING int_four::int8; +-- whole-row references are disallowed +ALTER TABLE test_type_diff2 ALTER COLUMN int_four TYPE int4 USING (pg_column_size(test_type_diff2)); + -- check for rollback of ANALYZE corrupting table property flags (bug #11638) CREATE TABLE check_fk_presence_1 (id int PRIMARY KEY, t text); CREATE TABLE check_fk_presence_2 (id int REFERENCES check_fk_presence_1, t text); @@ -1716,6 +1806,24 @@ SELECT col_description('comment_test'::regclass, 1) as comment; SELECT indexrelid::regclass::text as index, obj_description(indexrelid, 'pg_class') as comment FROM pg_index where indrelid = 'comment_test'::regclass ORDER BY 1, 2; SELECT conname as constraint, obj_description(oid, 'pg_constraint') as comment FROM pg_constraint where conrelid = 'comment_test'::regclass ORDER BY 1, 2; +-- Check compatibility for foreign keys and comments. This is done +-- separately as rebuilding the column type of the parent leads +-- to an error and would reduce the test scope. +CREATE TABLE comment_test_child ( + id text CONSTRAINT comment_test_child_fk REFERENCES comment_test); +CREATE INDEX comment_test_child_fk ON comment_test_child(id); +COMMENT ON COLUMN comment_test_child.id IS 'Column ''id'' on comment_test_child'; +COMMENT ON INDEX comment_test_child_fk IS 'Index backing the FOREIGN KEY of comment_test_child'; +COMMENT ON CONSTRAINT comment_test_child_fk ON comment_test_child IS 'FOREIGN KEY constraint of comment_test_child'; + +-- Change column type of parent +ALTER TABLE comment_test ALTER COLUMN id SET DATA TYPE text; +ALTER TABLE comment_test ALTER COLUMN id SET DATA TYPE int USING id::integer; + +-- Comments should be intact +SELECT col_description('comment_test_child'::regclass, 1) as comment; +SELECT indexrelid::regclass::text as index, obj_description(indexrelid, 'pg_class') as comment FROM pg_index where indrelid = 'comment_test_child'::regclass ORDER BY 1, 2; +SELECT conname as constraint, obj_description(oid, 'pg_constraint') as comment FROM pg_constraint where conrelid = 'comment_test_child'::regclass ORDER BY 1, 2; -- Check that we map relation oids to filenodes and back correctly. Only -- display bad mappings so the test output doesn't change all the time. A @@ -1774,7 +1882,7 @@ CREATE UNLOGGED TABLE unlogged3(f1 SERIAL PRIMARY KEY, f2 INTEGER REFERENCES unl ALTER TABLE unlogged3 SET LOGGED; -- skip self-referencing foreign key ALTER TABLE unlogged2 SET LOGGED; -- fails because a foreign key to an unlogged table exists ALTER TABLE unlogged1 SET LOGGED; --- check relpersistence of an unlogged table after changing to permament +-- check relpersistence of an unlogged table after changing to permanent SELECT relname, relkind, relpersistence FROM pg_class WHERE relname ~ '^unlogged1' UNION ALL SELECT 'toast table', t.relkind, t.relpersistence FROM pg_class r JOIN pg_class t ON t.oid = r.reltoastrelid WHERE r.relname ~ '^unlogged1' diff --git a/src/test/regress/sql/arrays.sql b/src/test/regress/sql/arrays.sql index a2c3db1127..9de7207563 100644 --- a/src/test/regress/sql/arrays.sql +++ b/src/test/regress/sql/arrays.sql @@ -262,6 +262,15 @@ $$ LANGUAGE plpgsql; SELECT array_position('[2:4]={1,2,3}'::int[], 1); SELECT array_positions('[2:4]={1,2,3}'::int[], 1); +SELECT + array_position(ids, (1, 1)), + array_positions(ids, (1, 1)) + FROM +(VALUES + (ARRAY[(0, 0), (1, 1)]), + (ARRAY[(1, 1)]) +) AS f (ids); + -- operators SELECT a FROM arrtest WHERE b = ARRAY[[[113,142],[1,147]]]; SELECT NOT ARRAY[1.1,1.2,1.3] = ARRAY[1.1,1.2,1.3] AS "FALSE"; @@ -473,11 +482,19 @@ select array_fill(7, array[3,3],array[2,2]); select array_fill(7, array[3,3]); select array_fill('juhu'::text, array[3,3],array[2,2]); select array_fill('juhu'::text, array[3,3]); +select a, a = '{}' as is_eq, array_dims(a) + from (select array_fill(42, array[0]) as a) ss; +select a, a = '{}' as is_eq, array_dims(a) + from (select array_fill(42, '{}') as a) ss; +select a, a = '{}' as is_eq, array_dims(a) + from (select array_fill(42, '{}', '{}') as a) ss; -- raise exception select array_fill(1, null, array[2,2]); select array_fill(1, array[2,2], null); +select array_fill(1, array[2,2], '{}'); select array_fill(1, array[3,3], array[1,1,1]); select array_fill(1, array[1,2,null]); +select array_fill(1, array[[1,2],[3,4]]); select string_to_array('1|2|3', '|'); select string_to_array('1|2|3|', '|'); diff --git a/src/test/regress/sql/box.sql b/src/test/regress/sql/box.sql index 128a016963..135ac108eb 100644 --- a/src/test/regress/sql/box.sql +++ b/src/test/regress/sql/box.sql @@ -179,3 +179,50 @@ EXPLAIN (COSTS OFF) SELECT * FROM box_temp WHERE f1 ~= '(20,20),(40,40)'; RESET enable_seqscan; DROP INDEX box_spgist; + +-- +-- Test the SP-GiST index on the larger volume of data +-- +CREATE TABLE quad_box_tbl (b box); + +INSERT INTO quad_box_tbl + SELECT box(point(x * 10, y * 10), point(x * 10 + 5, y * 10 + 5)) + FROM generate_series(1, 100) x, + generate_series(1, 100) y; + +-- insert repeating data to test allTheSame +INSERT INTO quad_box_tbl + SELECT '((200, 300),(210, 310))' + FROM generate_series(1, 1000); + +INSERT INTO quad_box_tbl + VALUES + (NULL), + (NULL), + ('((-infinity,-infinity),(infinity,infinity))'), + ('((-infinity,100),(-infinity,500))'), + ('((-infinity,-infinity),(700,infinity))'); + +CREATE INDEX quad_box_tbl_idx ON quad_box_tbl USING spgist(b); + +SET enable_seqscan = OFF; +SET enable_indexscan = ON; +SET enable_bitmapscan = ON; + +SELECT count(*) FROM quad_box_tbl WHERE b << box '((100,200),(300,500))'; +SELECT count(*) FROM quad_box_tbl WHERE b &< box '((100,200),(300,500))'; +SELECT count(*) FROM quad_box_tbl WHERE b && box '((100,200),(300,500))'; +SELECT count(*) FROM quad_box_tbl WHERE b &> box '((100,200),(300,500))'; +SELECT count(*) FROM quad_box_tbl WHERE b >> box '((100,200),(300,500))'; +SELECT count(*) FROM quad_box_tbl WHERE b >> box '((100,200),(300,500))'; +SELECT count(*) FROM quad_box_tbl WHERE b <<| box '((100,200),(300,500))'; +SELECT count(*) FROM quad_box_tbl WHERE b &<| box '((100,200),(300,500))'; +SELECT count(*) FROM quad_box_tbl WHERE b |&> box '((100,200),(300,500))'; +SELECT count(*) FROM quad_box_tbl WHERE b |>> box '((100,200),(300,500))'; +SELECT count(*) FROM quad_box_tbl WHERE b @> box '((201,301),(202,303))'; +SELECT count(*) FROM quad_box_tbl WHERE b <@ box '((100,200),(300,500))'; +SELECT count(*) FROM quad_box_tbl WHERE b ~= box '((200,300),(205,305))'; + +RESET enable_seqscan; +RESET enable_indexscan; +RESET enable_bitmapscan; diff --git a/src/test/regress/sql/case.sql b/src/test/regress/sql/case.sql index c860fae258..a7ae7b4a9e 100644 --- a/src/test/regress/sql/case.sql +++ b/src/test/regress/sql/case.sql @@ -200,6 +200,34 @@ SELECT CASE volfoo('bar') WHEN 'foo'::foodomain THEN 'is foo' ELSE 'is not foo' ROLLBACK; +-- Test multiple evaluation of a CASE arg that is a read/write object (#14472) +-- Wrap this in a single transaction so the transient '=' operator doesn't +-- cause problems in concurrent sessions +BEGIN; + +CREATE DOMAIN arrdomain AS int[]; + +CREATE FUNCTION make_ad(int,int) returns arrdomain as + 'declare x arrdomain; + begin + x := array[$1,$2]; + return x; + end' language plpgsql volatile; + +CREATE FUNCTION ad_eq(arrdomain, arrdomain) returns boolean as + 'begin return array_eq($1, $2); end' language plpgsql; + +CREATE OPERATOR = (procedure = ad_eq, + leftarg = arrdomain, rightarg = arrdomain); + +SELECT CASE make_ad(1,2) + WHEN array[2,4]::arrdomain THEN 'wrong' + WHEN array[2,5]::arrdomain THEN 'still wrong' + WHEN array[1,2]::arrdomain THEN 'right' + END; + +ROLLBACK; + -- -- Clean up -- diff --git a/src/test/regress/sql/create_index.sql b/src/test/regress/sql/create_index.sql index 71f4f54cad..60780fb914 100644 --- a/src/test/regress/sql/create_index.sql +++ b/src/test/regress/sql/create_index.sql @@ -1001,7 +1001,7 @@ SELECT thousand, tenthous FROM tenk1 WHERE thousand < 2 AND tenthous IN (1001,3000) ORDER BY thousand; -RESET enable_indexscan; +RESET enable_indexonlyscan; -- -- Check elimination of constant-NULL subexpressions diff --git a/src/test/regress/sql/create_table_like.sql b/src/test/regress/sql/create_table_like.sql index 6dded1fdef..900ca804cb 100644 --- a/src/test/regress/sql/create_table_like.sql +++ b/src/test/regress/sql/create_table_like.sql @@ -131,4 +131,7 @@ CREATE TABLE like_test3 (z INTEGER, LIKE has_oid, LIKE no_oid); SELECT oid FROM like_test3; CREATE TABLE like_test4 (z INTEGER, PRIMARY KEY(oid), LIKE has_oid); SELECT oid FROM like_test4; -DROP TABLE has_oid, no_oid, like_test, like_test2, like_test3, like_test4; +CREATE TABLE like_test5 (z INTEGER, LIKE no_oid) WITH OIDS; +SELECT oid FROM like_test5; +DROP TABLE has_oid, no_oid, like_test, like_test2, like_test3, + like_test4, like_test5; diff --git a/src/test/regress/sql/create_type.sql b/src/test/regress/sql/create_type.sql index a1839ef9e7..a28303aa6a 100644 --- a/src/test/regress/sql/create_type.sql +++ b/src/test/regress/sql/create_type.sql @@ -115,6 +115,17 @@ CREATE TYPE not_existing_type (INPUT = array_in, ELEMENT = int, INTERNALLENGTH = 32); +-- Check dependency transfer of opaque functions when creating a new type +CREATE FUNCTION base_fn_in(cstring) RETURNS opaque AS 'boolin' + LANGUAGE internal IMMUTABLE STRICT; +CREATE FUNCTION base_fn_out(opaque) RETURNS opaque AS 'boolout' + LANGUAGE internal IMMUTABLE STRICT; +CREATE TYPE base_type(INPUT = base_fn_in, OUTPUT = base_fn_out); +DROP FUNCTION base_fn_in(cstring); -- error +DROP FUNCTION base_fn_out(opaque); -- error +DROP TYPE base_type; -- error +DROP TYPE base_type CASCADE; + -- Check usage of typmod with a user-defined type -- (we have borrowed numeric's typmod functions) diff --git a/src/test/regress/sql/create_view.sql b/src/test/regress/sql/create_view.sql index 8bed5a53b3..8a365749fc 100644 --- a/src/test/regress/sql/create_view.sql +++ b/src/test/regress/sql/create_view.sql @@ -224,6 +224,19 @@ SELECT relname, relkind, reloptions FROM pg_class 'mysecview3'::regclass, 'mysecview4'::regclass) ORDER BY relname; +-- This test checks that proper typmods are assigned in a multi-row VALUES + +CREATE VIEW tt1 AS + SELECT * FROM ( + VALUES + ('abc'::varchar(3), '0123456789', 42, 'abcd'::varchar(4)), + ('0123456789', 'abc'::varchar(3), 42.12, 'abc'::varchar(4)) + ) vv(a,b,c,d); +\d+ tt1 +SELECT * FROM tt1; +SELECT a::varchar(3) FROM tt1; +DROP VIEW tt1; + -- Test view decompilation in the face of relation renaming conflicts CREATE TABLE tt1 (f1 int, f2 int, f3 text); @@ -507,6 +520,38 @@ select 'foo'::text = any(array['abc','def','foo']::text[]) c1, 'foo'::text = any((select array['abc','def','foo']::text[])::text[]) c2; select pg_get_viewdef('tt19v', true); +-- check display of assorted RTE_FUNCTION expressions + +create view tt20v as +select * from + coalesce(1,2) as c, + collation for ('x'::text) col, + current_date as d, + cast(1+2 as int4) as i4, + cast(1+2 as int8) as i8; +select pg_get_viewdef('tt20v', true); + +-- corner cases with empty join conditions + +create view tt21v as +select * from tt5 natural inner join tt6; +select pg_get_viewdef('tt21v', true); + +create view tt22v as +select * from tt5 natural left join tt6; +select pg_get_viewdef('tt22v', true); + +-- check handling of views with immediately-renamed columns + +create view tt23v (col_a, col_b) as +select q1 as other_name1, q2 as other_name2 from int8_tbl +union +select 42, 43; + +select pg_get_viewdef('tt23v', true); +select pg_get_ruledef(oid, true) from pg_rewrite + where ev_class = 'tt23v'::regclass and ev_type = '1'; + -- clean up all the random objects we made above set client_min_messages = warning; DROP SCHEMA temp_view_test CASCADE; diff --git a/src/test/regress/sql/domain.sql b/src/test/regress/sql/domain.sql index 407d3efc35..0fd383e272 100644 --- a/src/test/regress/sql/domain.sql +++ b/src/test/regress/sql/domain.sql @@ -85,6 +85,7 @@ INSERT INTO domarrtest values ('{2,2}', '{{"a","b"},{"c","d"},{"e","f"}}'); INSERT INTO domarrtest values ('{2,2}', '{{"a"},{"c"}}'); INSERT INTO domarrtest values (NULL, '{{"a","b","c"},{"d","e","f"}}'); INSERT INTO domarrtest values (NULL, '{{"toolong","b","c"},{"d","e","f"}}'); +INSERT INTO domarrtest (testint4arr[1], testint4arr[3]) values (11,22); select * from domarrtest; select testint4arr[1], testchar4arr[2:2] from domarrtest; select array_dims(testint4arr), array_dims(testchar4arr) from domarrtest; @@ -100,6 +101,13 @@ COPY domarrtest FROM stdin; -- fail select * from domarrtest; +update domarrtest set + testint4arr[1] = testint4arr[1] + 1, + testint4arr[3] = testint4arr[3] - 1 +where testchar4arr is null; + +select * from domarrtest where testchar4arr is null; + drop table domarrtest; drop domain domainint4arr restrict; drop domain domainchar4arr restrict; @@ -111,6 +119,55 @@ select pg_typeof('{1,2,3}'::dia); select pg_typeof('{1,2,3}'::dia || 42); -- should be int[] not dia drop domain dia; + +-- Test domains over arrays of composite + +create type comptype as (r float8, i float8); +create domain dcomptypea as comptype[]; +create table dcomptable (d1 dcomptypea unique); + +insert into dcomptable values (array[row(1,2)]::dcomptypea); +insert into dcomptable values (array[row(3,4), row(5,6)]::comptype[]); +insert into dcomptable values (array[row(7,8)::comptype, row(9,10)::comptype]); +insert into dcomptable values (array[row(1,2)]::dcomptypea); -- fail on uniqueness +insert into dcomptable (d1[1]) values(row(9,10)); +insert into dcomptable (d1[1].r) values(11); + +select * from dcomptable; +select d1[2], d1[1].r, d1[1].i from dcomptable; +update dcomptable set d1[2] = row(d1[2].i, d1[2].r); +select * from dcomptable; +update dcomptable set d1[1].r = d1[1].r + 1 where d1[1].i > 0; +select * from dcomptable; + +alter domain dcomptypea add constraint c1 check (value[1].r <= value[1].i); +alter domain dcomptypea add constraint c2 check (value[1].r > value[1].i); -- fail + +select array[row(2,1)]::dcomptypea; -- fail +insert into dcomptable values (array[row(1,2)]::comptype[]); +insert into dcomptable values (array[row(2,1)]::comptype[]); -- fail +insert into dcomptable (d1[1].r) values(99); +insert into dcomptable (d1[1].r, d1[1].i) values(99, 100); +insert into dcomptable (d1[1].r, d1[1].i) values(100, 99); -- fail +update dcomptable set d1[1].r = d1[1].r + 1 where d1[1].i > 0; -- fail +update dcomptable set d1[1].r = d1[1].r - 1, d1[1].i = d1[1].i + 1 + where d1[1].i > 0; +select * from dcomptable; + +explain (verbose, costs off) + update dcomptable set d1[1].r = d1[1].r - 1, d1[1].i = d1[1].i + 1 + where d1[1].i > 0; +create rule silly as on delete to dcomptable do instead + update dcomptable set d1[1].r = d1[1].r - 1, d1[1].i = d1[1].i + 1 + where d1[1].i > 0; +\d+ dcomptable + +drop table dcomptable; +drop type comptype cascade; + + +-- Test not-null restrictions + create domain dnotnull varchar(15) NOT NULL; create domain dnull varchar(15); create domain dcheck varchar(15) NOT NULL CHECK (VALUE = 'a' OR VALUE = 'c' OR VALUE = 'd'); @@ -394,11 +451,28 @@ insert into ddtest2 values(row(-1)); alter domain posint add constraint c1 check(value >= 0); drop table ddtest2; +-- Likewise for domains within arrays of composite create table ddtest2(f1 ddtest1[]); insert into ddtest2 values('{(-1)}'); alter domain posint add constraint c1 check(value >= 0); drop table ddtest2; +-- Likewise for domains within domains over array of composite +create domain ddtest1d as ddtest1[]; +create table ddtest2(f1 ddtest1d); +insert into ddtest2 values('{(-1)}'); +alter domain posint add constraint c1 check(value >= 0); +drop table ddtest2; +drop domain ddtest1d; + +-- Doesn't work for ranges, either +create type rposint as range (subtype = posint); +create table ddtest2(f1 rposint); +insert into ddtest2 values('(-1,3]'); +alter domain posint add constraint c1 check(value >= 0); +drop table ddtest2; +drop type rposint; + alter domain posint add constraint c1 check(value >= 0); create domain posint2 as posint check (value % 2 = 0); diff --git a/src/test/regress/sql/foreign_data.sql b/src/test/regress/sql/foreign_data.sql index 38e1d41a5f..f3371f4fe1 100644 --- a/src/test/regress/sql/foreign_data.sql +++ b/src/test/regress/sql/foreign_data.sql @@ -481,7 +481,10 @@ CREATE SERVER s10 FOREIGN DATA WRAPPER foo; -- ERROR ALTER SERVER s9 VERSION '1.1'; GRANT USAGE ON FOREIGN SERVER s9 TO regress_test_role; CREATE USER MAPPING FOR current_user SERVER s9; +-- We use terse mode to avoid ordering issues in cascade detail output. +\set VERBOSITY terse DROP SERVER s9 CASCADE; +\set VERBOSITY default RESET ROLE; CREATE SERVER s9 FOREIGN DATA WRAPPER foo; GRANT USAGE ON FOREIGN SERVER s9 TO regress_unprivileged_role; @@ -490,7 +493,24 @@ ALTER SERVER s9 VERSION '1.2'; -- ERROR GRANT USAGE ON FOREIGN SERVER s9 TO regress_test_role; -- WARNING CREATE USER MAPPING FOR current_user SERVER s9; DROP SERVER s9 CASCADE; -- ERROR + +-- Check visibility of user mapping data +SET ROLE regress_test_role; +CREATE SERVER s10 FOREIGN DATA WRAPPER foo; +CREATE USER MAPPING FOR public SERVER s10 OPTIONS (user 'secret'); +CREATE USER MAPPING FOR regress_unprivileged_role SERVER s10 OPTIONS (user 'secret'); +-- owner of server can see some option fields +\deu+ RESET ROLE; +-- superuser can see all option fields +\deu+ +-- unprivileged user cannot see any option field +SET ROLE regress_unprivileged_role; +\deu+ +RESET ROLE; +\set VERBOSITY terse +DROP SERVER s10 CASCADE; +\set VERBOSITY default -- Triggers CREATE FUNCTION dummy_trigger() RETURNS TRIGGER AS $$ @@ -614,8 +634,10 @@ SELECT relname, conname, contype, conislocal, coninhcount, connoinherit -- child does not inherit NO INHERIT constraints \d+ pt1 \d+ ft2 +\set VERBOSITY terse DROP FOREIGN TABLE ft2; -- ERROR DROP FOREIGN TABLE ft2 CASCADE; +\set VERBOSITY default CREATE FOREIGN TABLE ft2 ( c1 integer NOT NULL, c2 text, @@ -689,12 +711,10 @@ DROP SCHEMA foreign_schema CASCADE; DROP ROLE regress_test_role; -- ERROR DROP SERVER t1 CASCADE; DROP USER MAPPING FOR regress_test_role SERVER s6; --- This test causes some order dependent cascade detail output, --- so switch to terse mode for it. \set VERBOSITY terse DROP FOREIGN DATA WRAPPER foo CASCADE; -\set VERBOSITY default DROP SERVER s8 CASCADE; +\set VERBOSITY default DROP ROLE regress_test_indirect; DROP ROLE regress_test_role; DROP ROLE regress_unprivileged_role; -- ERROR diff --git a/src/test/regress/sql/foreign_key.sql b/src/test/regress/sql/foreign_key.sql index 85c9d04d64..5f19dad03c 100644 --- a/src/test/regress/sql/foreign_key.sql +++ b/src/test/regress/sql/foreign_key.sql @@ -1019,3 +1019,39 @@ create rule r1 as on delete to t1 do delete from t2 where t2.b = old.a; explain (costs off) delete from t1 where a = 1; delete from t1 where a = 1; + +-- +-- Test deferred FK check on a tuple deleted by a rolled-back subtransaction +-- +create table pktable2(f1 int primary key); +create table fktable2(f1 int references pktable2 deferrable initially deferred); +insert into pktable2 values(1); + +begin; +insert into fktable2 values(1); +savepoint x; +delete from fktable2; +rollback to x; +commit; + +begin; +insert into fktable2 values(2); +savepoint x; +delete from fktable2; +rollback to x; +commit; -- fail + +-- +-- Test that we prevent dropping FK constraint with pending trigger events +-- +begin; +insert into fktable2 values(2); +alter table fktable2 drop constraint fktable2_f1_fkey; +commit; + +begin; +delete from pktable2 where f1 = 1; +alter table fktable2 drop constraint fktable2_f1_fkey; +commit; + +drop table pktable2, fktable2; diff --git a/src/test/regress/sql/gist.sql b/src/test/regress/sql/gist.sql index 9d4ff1e97e..49126fd466 100644 --- a/src/test/regress/sql/gist.sql +++ b/src/test/regress/sql/gist.sql @@ -69,6 +69,22 @@ order by point(0.101, 0.101) <-> p; select p from gist_tbl where p <@ box(point(0,0), point(0.5, 0.5)) order by point(0.101, 0.101) <-> p; +-- Check case with multiple rescans (bug #14641) +explain (costs off) +select p from + (values (box(point(0,0), point(0.5,0.5))), + (box(point(0.5,0.5), point(0.75,0.75))), + (box(point(0.8,0.8), point(1.0,1.0)))) as v(bb) +cross join lateral + (select p from gist_tbl where p <@ bb order by p <-> bb[0] limit 2) ss; + +select p from + (values (box(point(0,0), point(0.5,0.5))), + (box(point(0.5,0.5), point(0.75,0.75))), + (box(point(0.8,0.8), point(1.0,1.0)))) as v(bb) +cross join lateral + (select p from gist_tbl where p <@ bb order by p <-> bb[0] limit 2) ss; + drop index gist_tbl_point_index; -- Test index-only scan with box opclass diff --git a/src/test/regress/sql/indirect_toast.sql b/src/test/regress/sql/indirect_toast.sql index d502480ad3..18b6cc3a95 100644 --- a/src/test/regress/sql/indirect_toast.sql +++ b/src/test/regress/sql/indirect_toast.sql @@ -11,7 +11,7 @@ SELECT descr, substring(make_tuple_indirect(toasttest)::text, 1, 200) FROM toast -- modification without changing varlenas UPDATE toasttest SET cnt = cnt +1 RETURNING substring(toasttest::text, 1, 200); --- modification without modifying asigned value +-- modification without modifying assigned value UPDATE toasttest SET cnt = cnt +1, f1 = f1 RETURNING substring(toasttest::text, 1, 200); -- modification modifying, but effectively not changing @@ -20,7 +20,7 @@ UPDATE toasttest SET cnt = cnt +1, f1 = f1||'' RETURNING substring(toasttest::te UPDATE toasttest SET cnt = cnt +1, f1 = '-'||f1||'-' RETURNING substring(toasttest::text, 1, 200); SELECT substring(toasttest::text, 1, 200) FROM toasttest; --- check we didn't screw with main/toast tuple visiblity +-- check we didn't screw with main/toast tuple visibility VACUUM FREEZE toasttest; SELECT substring(toasttest::text, 1, 200) FROM toasttest; @@ -42,7 +42,7 @@ CREATE TRIGGER toasttest_update_indirect -- modification without changing varlenas UPDATE toasttest SET cnt = cnt +1 RETURNING substring(toasttest::text, 1, 200); --- modification without modifying asigned value +-- modification without modifying assigned value UPDATE toasttest SET cnt = cnt +1, f1 = f1 RETURNING substring(toasttest::text, 1, 200); -- modification modifying, but effectively not changing @@ -53,7 +53,7 @@ UPDATE toasttest SET cnt = cnt +1, f1 = '-'||f1||'-' RETURNING substring(toastte INSERT INTO toasttest(descr, f1, f2) VALUES('one-toasted,one-null, via indirect', repeat('1234567890',30000), NULL); SELECT substring(toasttest::text, 1, 200) FROM toasttest; --- check we didn't screw with main/toast tuple visiblity +-- check we didn't screw with main/toast tuple visibility VACUUM FREEZE toasttest; SELECT substring(toasttest::text, 1, 200) FROM toasttest; diff --git a/src/test/regress/sql/inherit.sql b/src/test/regress/sql/inherit.sql index 6b1df754a6..f4ec72856e 100644 --- a/src/test/regress/sql/inherit.sql +++ b/src/test/regress/sql/inherit.sql @@ -145,6 +145,32 @@ insert into d values('test','one','two','three'); alter table a alter column aa type integer using bit_length(aa); select * from d; +-- check that oid column is handled properly during alter table inherit +create table oid_parent (a int) with oids; + +create table oid_child () inherits (oid_parent); +select attinhcount, attislocal from pg_attribute + where attrelid = 'oid_child'::regclass and attname = 'oid'; +drop table oid_child; + +create table oid_child (a int) without oids; +alter table oid_child inherit oid_parent; -- fail +alter table oid_child set with oids; +select attinhcount, attislocal from pg_attribute + where attrelid = 'oid_child'::regclass and attname = 'oid'; +alter table oid_child inherit oid_parent; +select attinhcount, attislocal from pg_attribute + where attrelid = 'oid_child'::regclass and attname = 'oid'; +alter table oid_child set without oids; -- fail +alter table oid_parent set without oids; +select attinhcount, attislocal from pg_attribute + where attrelid = 'oid_child'::regclass and attname = 'oid'; +alter table oid_child set without oids; +select attinhcount, attislocal from pg_attribute + where attrelid = 'oid_child'::regclass and attname = 'oid'; + +drop table oid_parent cascade; + -- Test non-inheritable parent constraints create table p1(ff1 int); alter table p1 add constraint p1chk check (ff1 > 0) no inherit; @@ -157,6 +183,9 @@ create table c1 () inherits (p1); \d p1 \d c1 +-- Test that child does not override inheritable constraints of the parent +create table c2 (constraint p2chk check (ff1 > 10) no inherit) inherits (p1); --fails + drop table p1 cascade; -- Tests for casting between the rowtypes of parent and child diff --git a/src/test/regress/sql/init_privs.sql b/src/test/regress/sql/init_privs.sql index 9b4c70246e..4a31af2798 100644 --- a/src/test/regress/sql/init_privs.sql +++ b/src/test/regress/sql/init_privs.sql @@ -1,4 +1,4 @@ --- Test iniital privileges +-- Test initial privileges -- There should always be some initial privileges, set up by initdb SELECT count(*) > 0 FROM pg_init_privs; diff --git a/src/test/regress/sql/insert_conflict.sql b/src/test/regress/sql/insert_conflict.sql index 190c605562..df3a9b59b5 100644 --- a/src/test/regress/sql/insert_conflict.sql +++ b/src/test/regress/sql/insert_conflict.sql @@ -138,7 +138,7 @@ insert into insertconflicttest values (12, 'Date') on conflict (lower(fruit), ke drop index comp_key_index; -- --- Partial index tests, no inference predicate specificied +-- Partial index tests, no inference predicate specified -- create unique index part_comp_key_index on insertconflicttest(key, fruit) where key < 5; create unique index expr_part_comp_key_index on insertconflicttest(key, lower(fruit)) where key < 5; @@ -283,6 +283,24 @@ on conflict (b) where coalesce(a, 1) > 1 do nothing; drop table insertconflict; +-- +-- test insertion through view +-- + +create table insertconflict (f1 int primary key, f2 text); +create view insertconflictv as + select * from insertconflict with cascaded check option; + +insert into insertconflictv values (1,'foo') + on conflict (f1) do update set f2 = excluded.f2; +select * from insertconflict; +insert into insertconflictv values (1,'bar') + on conflict (f1) do update set f2 = excluded.f2; +select * from insertconflict; + +drop view insertconflictv; +drop table insertconflict; + -- ****************************************************************** -- * * @@ -421,3 +439,35 @@ insert into twoconstraints values(2, '((0,0),(1,2))') on conflict on constraint twoconstraints_f2_excl do nothing; -- do nothing select * from twoconstraints; drop table twoconstraints; + +-- check handling of self-conflicts at various isolation levels + +create table selfconflict (f1 int primary key, f2 int); + +begin transaction isolation level read committed; +insert into selfconflict values (1,1), (1,2) on conflict do nothing; +commit; + +begin transaction isolation level repeatable read; +insert into selfconflict values (2,1), (2,2) on conflict do nothing; +commit; + +begin transaction isolation level serializable; +insert into selfconflict values (3,1), (3,2) on conflict do nothing; +commit; + +begin transaction isolation level read committed; +insert into selfconflict values (4,1), (4,2) on conflict(f1) do update set f2 = 0; +commit; + +begin transaction isolation level repeatable read; +insert into selfconflict values (5,1), (5,2) on conflict(f1) do update set f2 = 0; +commit; + +begin transaction isolation level serializable; +insert into selfconflict values (6,1), (6,2) on conflict(f1) do update set f2 = 0; +commit; + +select * from selfconflict; + +drop table selfconflict; diff --git a/src/test/regress/sql/interval.sql b/src/test/regress/sql/interval.sql index 789c3de440..bc5537d1b9 100644 --- a/src/test/regress/sql/interval.sql +++ b/src/test/regress/sql/interval.sql @@ -59,6 +59,33 @@ SELECT '' AS fortyfive, r1.*, r2.* WHERE r1.f1 > r2.f1 ORDER BY r1.f1, r2.f1; +-- Test intervals that are large enough to overflow 64 bits in comparisons +CREATE TEMP TABLE INTERVAL_TBL_OF (f1 interval); +INSERT INTO INTERVAL_TBL_OF (f1) VALUES + ('2147483647 days 2147483647 months'), + ('2147483647 days -2147483648 months'), + ('1 year'), + ('-2147483648 days 2147483647 months'), + ('-2147483648 days -2147483648 months'); +-- these should fail as out-of-range +INSERT INTO INTERVAL_TBL_OF (f1) VALUES ('2147483648 days'); +INSERT INTO INTERVAL_TBL_OF (f1) VALUES ('-2147483649 days'); +INSERT INTO INTERVAL_TBL_OF (f1) VALUES ('2147483647 years'); +INSERT INTO INTERVAL_TBL_OF (f1) VALUES ('-2147483648 years'); + +SELECT r1.*, r2.* + FROM INTERVAL_TBL_OF r1, INTERVAL_TBL_OF r2 + WHERE r1.f1 > r2.f1 + ORDER BY r1.f1, r2.f1; + +CREATE INDEX ON INTERVAL_TBL_OF USING btree (f1); +SET enable_seqscan TO false; +EXPLAIN (COSTS OFF) +SELECT f1 FROM INTERVAL_TBL_OF r1 ORDER BY f1; +SELECT f1 FROM INTERVAL_TBL_OF r1 ORDER BY f1; +RESET enable_seqscan; + +DROP TABLE INTERVAL_TBL_OF; -- Test multiplication and division with intervals. -- Floating point arithmetic rounding errors can lead to unexpected results, @@ -196,6 +223,11 @@ SELECT interval '1 2.3456' minute to second(2); SELECT interval '1 2:03.5678' minute to second(2); SELECT interval '1 2:03:04.5678' minute to second(2); +-- test casting to restricted precision (bug #14479) +SELECT f1, f1::INTERVAL DAY TO MINUTE AS "minutes", + (f1 + INTERVAL '1 month')::INTERVAL MONTH::INTERVAL YEAR AS "years" + FROM interval_tbl; + -- test inputting and outputting SQL standard interval literals SET IntervalStyle TO sql_standard; SELECT interval '0' AS "zero", diff --git a/src/test/regress/sql/join.sql b/src/test/regress/sql/join.sql index 97bccec721..af6d6129c8 100644 --- a/src/test/regress/sql/join.sql +++ b/src/test/regress/sql/join.sql @@ -1456,7 +1456,7 @@ select * from -- select t1.uunique1 from - tenk1 t1 join tenk2 t2 on t1.two = t2.two; -- error, prefer "t1" suggestipn + tenk1 t1 join tenk2 t2 on t1.two = t2.two; -- error, prefer "t1" suggestion select t2.uunique1 from tenk1 t1 join tenk2 t2 on t1.two = t2.two; -- error, prefer "t2" suggestion select uunique1 from @@ -1730,3 +1730,31 @@ update xx1 set x2 = f1 from xx1, lateral (select * from int4_tbl where f1 = x1) delete from xx1 using (select * from int4_tbl where f1 = x1) ss; delete from xx1 using (select * from int4_tbl where f1 = xx1.x1) ss; delete from xx1 using lateral (select * from int4_tbl where f1 = x1) ss; + +-- +-- test that foreign key join estimation performs sanely for outer joins +-- + +begin; + +create table fkest (a int, b int, c int unique, primary key(a,b)); +create table fkest1 (a int, b int, primary key(a,b)); + +insert into fkest select x/10, x%10, x from generate_series(1,1000) x; +insert into fkest1 select x/10, x%10 from generate_series(1,1000) x; + +alter table fkest1 + add constraint fkest1_a_b_fkey foreign key (a,b) references fkest; + +analyze fkest; +analyze fkest1; + +explain (costs off) +select * +from fkest f + left join fkest1 f1 on f.a = f1.a and f.b = f1.b + left join fkest1 f2 on f.a = f2.a and f.b = f2.b + left join fkest1 f3 on f.a = f3.a and f.b = f3.b +where f.c = 1; + +rollback; diff --git a/src/test/regress/sql/matview.sql b/src/test/regress/sql/matview.sql index 5f3269def8..94829b9eaa 100644 --- a/src/test/regress/sql/matview.sql +++ b/src/test/regress/sql/matview.sql @@ -92,7 +92,7 @@ SELECT * FROM mvtest_tvvm; -- test diemv when the mv does not exist DROP MATERIALIZED VIEW IF EXISTS no_such_mv; --- make sure invalid comination of options is prohibited +-- make sure invalid combination of options is prohibited REFRESH MATERIALIZED VIEW CONCURRENTLY mvtest_tvmm WITH NO DATA; -- no tuple locks on materialized views @@ -122,18 +122,6 @@ SELECT relispopulated FROM pg_class WHERE oid = 'mv_test3'::regclass; DROP VIEW mvtest_vt1 CASCADE; --- test that vacuum does not make empty matview look unpopulated -CREATE TABLE mvtest_huge (i int); -INSERT INTO mvtest_huge VALUES (generate_series(1,100000)); -CREATE MATERIALIZED VIEW mvtest_hugeview AS SELECT * FROM mvtest_huge WHERE i % 2 = 0; -CREATE INDEX mvtest_hugeviewidx ON mvtest_hugeview (i); -DELETE FROM mvtest_huge; -REFRESH MATERIALIZED VIEW mvtest_hugeview; -SELECT * FROM mvtest_hugeview WHERE i < 10; -VACUUM ANALYZE mvtest_hugeview; -SELECT * FROM mvtest_hugeview WHERE i < 10; -DROP TABLE mvtest_huge CASCADE; - -- test that duplicate values on unique index prevent refresh CREATE TABLE mvtest_foo(a, b) AS VALUES(1, 10); CREATE MATERIALIZED VIEW mvtest_mv AS SELECT * FROM mvtest_foo; diff --git a/src/test/regress/sql/money.sql b/src/test/regress/sql/money.sql index 09b9476b70..f0db5fa432 100644 --- a/src/test/regress/sql/money.sql +++ b/src/test/regress/sql/money.sql @@ -57,6 +57,16 @@ DELETE FROM money_data; INSERT INTO money_data VALUES ('$123.459'); SELECT * FROM money_data; +-- rounding vs. truncation in division +SELECT '878.08'::money / 11::float8; +SELECT '878.08'::money / 11::float4; +SELECT '878.08'::money / 11::int; +SELECT '878.08'::money / 11::smallint; + +-- check for precision loss in division +SELECT '90000000000000099.00'::money / 10::int; +SELECT '90000000000000099.00'::money / 10::smallint; + -- Cast int4/int8 to money SELECT 1234567890::money; SELECT 12345678901234567::money; diff --git a/src/test/regress/sql/object_address.sql b/src/test/regress/sql/object_address.sql index 7d1f93f3b2..f65c037f71 100644 --- a/src/test/regress/sql/object_address.sql +++ b/src/test/regress/sql/object_address.sql @@ -62,6 +62,12 @@ BEGIN END; $$; +-- miscellaneous other errors +select * from pg_get_object_address('operator of access method', '{btree,integer_ops,1}', '{int4,bool}'); +select * from pg_get_object_address('operator of access method', '{btree,integer_ops,99}', '{int4,int4}'); +select * from pg_get_object_address('function of access method', '{btree,integer_ops,1}', '{int4,bool}'); +select * from pg_get_object_address('function of access method', '{btree,integer_ops,99}', '{int4,int4}'); + DO $$ DECLARE objtype text; diff --git a/src/test/regress/sql/plpgsql.sql b/src/test/regress/sql/plpgsql.sql index 776f2292ea..fa5e8debc9 100644 --- a/src/test/regress/sql/plpgsql.sql +++ b/src/test/regress/sql/plpgsql.sql @@ -1350,7 +1350,7 @@ select * from WSlot order by slotname; -- -- Install the central phone system and create the phone numbers. --- They are weired on insert to the patchfields. Again the +-- They are wired on insert to the patchfields. Again the -- triggers automatically tell the PSlots to update their -- backlink field. -- @@ -4428,3 +4428,48 @@ exception when others then null; -- do nothing end; $$; + +-- Test use of plpgsql in a domain check constraint (cf. bug #14414) + +create function plpgsql_domain_check(val int) returns boolean as $$ +begin return val > 0; end +$$ language plpgsql immutable; + +create domain plpgsql_domain as integer check(plpgsql_domain_check(value)); + +do $$ +declare v_test plpgsql_domain; +begin + v_test := 1; +end; +$$; + +do $$ +declare v_test plpgsql_domain := 1; +begin + v_test := 0; -- fail +end; +$$; + +-- Test handling of expanded array passed to a domain constraint (bug #14472) + +create function plpgsql_arr_domain_check(val int[]) returns boolean as $$ +begin return val[1] > 0; end +$$ language plpgsql immutable; + +create domain plpgsql_arr_domain as int[] check(plpgsql_arr_domain_check(value)); + +do $$ +declare v_test plpgsql_arr_domain; +begin + v_test := array[1]; + v_test := v_test || 2; +end; +$$; + +do $$ +declare v_test plpgsql_arr_domain := array[1]; +begin + v_test := 0 || v_test; -- fail +end; +$$; diff --git a/src/test/regress/sql/prepared_xacts.sql b/src/test/regress/sql/prepared_xacts.sql index dfb20a18e7..d8249a27dc 100644 --- a/src/test/regress/sql/prepared_xacts.sql +++ b/src/test/regress/sql/prepared_xacts.sql @@ -123,8 +123,7 @@ SELECT gid FROM pg_prepared_xacts; -- pxtest3 should be locked because of the pending DROP begin; -set statement_timeout to 2000; -SELECT * FROM pxtest3; +lock table pxtest3 in access share mode nowait; rollback; -- Disconnect, we will continue testing in a different backend @@ -135,8 +134,7 @@ SELECT gid FROM pg_prepared_xacts; -- pxtest3 should still be locked because of the pending DROP begin; -set statement_timeout to 2000; -SELECT * FROM pxtest3; +lock table pxtest3 in access share mode nowait; rollback; -- Commit table creation diff --git a/src/test/regress/sql/privileges.sql b/src/test/regress/sql/privileges.sql index 00dc7bd4ab..b86c145285 100644 --- a/src/test/regress/sql/privileges.sql +++ b/src/test/regress/sql/privileges.sql @@ -17,7 +17,7 @@ DROP ROLE IF EXISTS regress_user4; DROP ROLE IF EXISTS regress_user5; DROP ROLE IF EXISTS regress_user6; -SELECT lo_unlink(oid) FROM pg_largeobject_metadata; +SELECT lo_unlink(oid) FROM pg_largeobject_metadata WHERE oid >= 1000 AND oid < 3000 ORDER BY oid; RESET client_min_messages; @@ -127,6 +127,67 @@ bar true SELECT * FROM atest1; -- ok +-- test leaky-function protections in selfuncs + +-- regress_user1 will own a table and provide a view for it. +SET SESSION AUTHORIZATION regress_user1; + +CREATE TABLE atest12 as + SELECT x AS a, 10001 - x AS b FROM generate_series(1,10000) x; +CREATE INDEX ON atest12 (a); +CREATE INDEX ON atest12 (abs(a)); +VACUUM ANALYZE atest12; + +CREATE FUNCTION leak(integer,integer) RETURNS boolean + AS $$begin return $1 < $2; end$$ + LANGUAGE plpgsql immutable; +CREATE OPERATOR <<< (procedure = leak, leftarg = integer, rightarg = integer, + restrict = scalarltsel); + +-- view with leaky operator +CREATE VIEW atest12v AS + SELECT * FROM atest12 WHERE b <<< 5; +GRANT SELECT ON atest12v TO PUBLIC; + +-- This plan should use nestloop, knowing that few rows will be selected. +EXPLAIN (COSTS OFF) SELECT * FROM atest12v x, atest12v y WHERE x.a = y.b; + +-- And this one. +EXPLAIN (COSTS OFF) SELECT * FROM atest12 x, atest12 y + WHERE x.a = y.b and abs(y.a) <<< 5; + +-- Check if regress_user2 can break security. +SET SESSION AUTHORIZATION regress_user2; + +CREATE FUNCTION leak2(integer,integer) RETURNS boolean + AS $$begin raise notice 'leak % %', $1, $2; return $1 > $2; end$$ + LANGUAGE plpgsql immutable; +CREATE OPERATOR >>> (procedure = leak2, leftarg = integer, rightarg = integer, + restrict = scalargtsel); + +-- This should not show any "leak" notices before failing. +EXPLAIN (COSTS OFF) SELECT * FROM atest12 WHERE a >>> 0; + +-- This plan should use hashjoin, as it will expect many rows to be selected. +EXPLAIN (COSTS OFF) SELECT * FROM atest12v x, atest12v y WHERE x.a = y.b; + +-- Now regress_user1 grants sufficient access to regress_user2. +SET SESSION AUTHORIZATION regress_user1; +GRANT SELECT (a, b) ON atest12 TO PUBLIC; +SET SESSION AUTHORIZATION regress_user2; + +-- Now regress_user2 will also get a good row estimate. +EXPLAIN (COSTS OFF) SELECT * FROM atest12v x, atest12v y WHERE x.a = y.b; + +-- But not for this, due to lack of table-wide permissions needed +-- to make use of the expression index's statistics. +EXPLAIN (COSTS OFF) SELECT * FROM atest12 x, atest12 y + WHERE x.a = y.b and abs(y.a) <<< 5; + +-- clean up (regress_user1's objects are all dropped later) +DROP FUNCTION leak2(integer, integer) CASCADE; + + -- groups SET SESSION AUTHORIZATION regress_user3; @@ -709,6 +770,9 @@ SET SESSION AUTHORIZATION regress_user2; SELECT lo_create(2001); SELECT lo_create(2002); +SELECT loread(lo_open(1001, x'20000'::int), 32); -- allowed, for now +SELECT lowrite(lo_open(1001, x'40000'::int), 'abcd'); -- fail, wrong mode + SELECT loread(lo_open(1001, x'40000'::int), 32); SELECT loread(lo_open(1002, x'40000'::int), 32); -- to be denied SELECT loread(lo_open(1003, x'40000'::int), 32); @@ -729,7 +793,7 @@ SELECT lo_unlink(2002); \c - -- confirm ACL setting -SELECT oid, pg_get_userbyid(lomowner) ownername, lomacl FROM pg_largeobject_metadata; +SELECT oid, pg_get_userbyid(lomowner) ownername, lomacl FROM pg_largeobject_metadata WHERE oid >= 1000 AND oid < 3000 ORDER BY oid; SET SESSION AUTHORIZATION regress_user3; @@ -748,6 +812,7 @@ SET SESSION AUTHORIZATION regress_user4; SELECT loread(lo_open(1002, x'40000'::int), 32); -- to be denied SELECT lowrite(lo_open(1002, x'20000'::int), 'abcd'); -- to be denied SELECT lo_truncate(lo_open(1002, x'20000'::int), 10); -- to be denied +SELECT lo_put(1002, 1, 'abcd'); -- to be denied SELECT lo_unlink(1002); -- to be denied SELECT lo_export(1001, '/dev/null'); -- to be denied @@ -960,7 +1025,7 @@ DROP TABLE atestc; DROP TABLE atestp1; DROP TABLE atestp2; -SELECT lo_unlink(oid) FROM pg_largeobject_metadata; +SELECT lo_unlink(oid) FROM pg_largeobject_metadata WHERE oid >= 1000 AND oid < 3000 ORDER BY oid; DROP GROUP regress_group1; DROP GROUP regress_group2; diff --git a/src/test/regress/sql/psql_crosstab.sql b/src/test/regress/sql/psql_crosstab.sql index 1237e82f2d..5a4511389d 100644 --- a/src/test/regress/sql/psql_crosstab.sql +++ b/src/test/regress/sql/psql_crosstab.sql @@ -111,3 +111,14 @@ SELECT a,a,1 FROM generate_series(1,3000) AS a SELECT 1 \crosstabview DROP TABLE ctv_data; + +-- check error reporting (bug #14476) +CREATE TABLE ctv_data (x int, y int, v text); + +INSERT INTO ctv_data SELECT 1, x, '*' || x FROM generate_series(1,10) x; +SELECT * FROM ctv_data \crosstabview + +INSERT INTO ctv_data VALUES (1, 10, '*'); -- duplicate data to cause error +SELECT * FROM ctv_data \crosstabview + +DROP TABLE ctv_data; diff --git a/src/test/regress/sql/replica_identity.sql b/src/test/regress/sql/replica_identity.sql index 68824a3aa7..3d2171c733 100644 --- a/src/test/regress/sql/replica_identity.sql +++ b/src/test/regress/sql/replica_identity.sql @@ -56,7 +56,7 @@ SELECT relreplident FROM pg_class WHERE oid = 'test_replica_identity'::regclass; -- succeed, oid unique index ALTER TABLE test_replica_identity REPLICA IDENTITY USING INDEX test_replica_identity_oid_idx; --- succeed, nondeferrable unique constraint over nonullable cols +-- succeed, nondeferrable unique constraint over nonnullable cols ALTER TABLE test_replica_identity REPLICA IDENTITY USING INDEX test_replica_identity_unique_nondefer; -- succeed unique index over nonnullable cols diff --git a/src/test/regress/sql/rolenames.sql b/src/test/regress/sql/rolenames.sql index 451d9d338d..4c5706bbaa 100644 --- a/src/test/regress/sql/rolenames.sql +++ b/src/test/regress/sql/rolenames.sql @@ -176,7 +176,7 @@ ALTER USER PUBLIC SET application_name to 'BOMB'; -- error ALTER USER NONE SET application_name to 'BOMB'; -- error ALTER USER nonexistent SET application_name to 'BOMB'; -- error --- CREAETE SCHEMA +-- CREATE SCHEMA set client_min_messages to error; CREATE SCHEMA newschema1 AUTHORIZATION CURRENT_USER; CREATE SCHEMA newschema2 AUTHORIZATION "current_user"; diff --git a/src/test/regress/sql/rules.sql b/src/test/regress/sql/rules.sql index 835945f4b7..90dc9ceaf4 100644 --- a/src/test/regress/sql/rules.sql +++ b/src/test/regress/sql/rules.sql @@ -522,7 +522,7 @@ CREATE TABLE shoe_data ( shoename char(10), -- primary key sh_avail integer, -- available # of pairs slcolor char(10), -- preferred shoelace color - slminlen float, -- miminum shoelace length + slminlen float, -- minimum shoelace length slmaxlen float, -- maximum shoelace length slunit char(8) -- length unit ); diff --git a/src/test/regress/sql/stats.sql b/src/test/regress/sql/stats.sql index b3e2efa535..521dc4d6a3 100644 --- a/src/test/regress/sql/stats.sql +++ b/src/test/regress/sql/stats.sql @@ -54,9 +54,9 @@ begin FROM pg_stat_user_tables AS st, pg_class AS cl, prevstats AS pr WHERE st.relname='tenk2' AND cl.relname='tenk2'; - -- check to see if updates have been sensed + -- check to see if all updates have been sensed SELECT (n_tup_ins > 0) INTO updated3 - FROM pg_stat_user_tables WHERE relname='trunc_stats_test'; + FROM pg_stat_user_tables WHERE relname='trunc_stats_test4'; exit when updated1 and updated2 and updated3; diff --git a/src/test/regress/sql/subselect.sql b/src/test/regress/sql/subselect.sql index 2991223089..6e81ffe13f 100644 --- a/src/test/regress/sql/subselect.sql +++ b/src/test/regress/sql/subselect.sql @@ -92,6 +92,11 @@ SELECT '' AS eight, ss.f1 AS "Correlated Field", ss.f3 AS "Second Field" select q1, float8(count(*)) / (select count(*) from int8_tbl) from int8_tbl group by q1 order by q1; +-- check materialization of an initplan reference (bug #14524) +explain (verbose, costs off) +select 1 = all (select (select 1)); +select 1 = all (select (select 1)); + -- -- Check EXISTS simplification with LIMIT -- diff --git a/src/test/regress/sql/timestamptz.sql b/src/test/regress/sql/timestamptz.sql index 5573e0ed77..4e37071604 100644 --- a/src/test/regress/sql/timestamptz.sql +++ b/src/test/regress/sql/timestamptz.sql @@ -280,7 +280,7 @@ SELECT * FROM TIMESTAMPTZ_TST ORDER BY a; DROP TABLE TIMESTAMPTZ_TST; -- test timestamptz constructors -set TimeZone to 'America/Santiago'; +set TimeZone to 'America/New_York'; -- numeric timezone SELECT make_timestamptz(1973, 07, 15, 08, 15, 55.33); @@ -309,8 +309,8 @@ SELECT make_timestamptz(1881, 12, 10, 0, 0, 0, 'Europe/Paris') AT TIME ZONE 'UTC SELECT make_timestamptz(1910, 12, 24, 0, 0, 0, 'Nehwon/Lankhmar'); -- abbreviations -SELECT make_timestamptz(2008, 12, 10, 10, 10, 10, 'CLST'); -SELECT make_timestamptz(2008, 12, 10, 10, 10, 10, 'CLT'); +SELECT make_timestamptz(2008, 12, 10, 10, 10, 10, 'EST'); +SELECT make_timestamptz(2008, 12, 10, 10, 10, 10, 'EDT'); SELECT make_timestamptz(2014, 12, 10, 10, 10, 10, 'PST8PDT'); RESET TimeZone; @@ -318,8 +318,7 @@ RESET TimeZone; -- -- Test behavior with a dynamic (time-varying) timezone abbreviation. -- These tests rely on the knowledge that MSK (Europe/Moscow standard time) --- moved forwards in Mar 2011 and that VET (America/Caracas standard time) --- moved backwards in Dec 2007. +-- moved forwards in Mar 2011 and backwards again in Oct 2014. -- SET TimeZone to 'UTC'; @@ -344,23 +343,17 @@ SELECT '2011-03-27 03:00:00 MSK'::timestamptz; SELECT '2011-03-27 03:00:01 MSK'::timestamptz; SELECT '2011-03-27 04:00:00 MSK'::timestamptz; -SELECT '2007-12-09 02:00:00 America/Caracas'::timestamptz; -SELECT '2007-12-09 02:29:59 America/Caracas'::timestamptz; -SELECT '2007-12-09 02:30:00 America/Caracas'::timestamptz; -SELECT '2007-12-09 02:30:01 America/Caracas'::timestamptz; -SELECT '2007-12-09 02:59:59 America/Caracas'::timestamptz; -SELECT '2007-12-09 03:00:00 America/Caracas'::timestamptz; -SELECT '2007-12-09 03:00:01 America/Caracas'::timestamptz; -SELECT '2007-12-09 04:00:00 America/Caracas'::timestamptz; - -SELECT '2007-12-09 02:00:00 VET'::timestamptz; -SELECT '2007-12-09 02:29:59 VET'::timestamptz; -SELECT '2007-12-09 02:30:00 VET'::timestamptz; -SELECT '2007-12-09 02:30:01 VET'::timestamptz; -SELECT '2007-12-09 02:59:59 VET'::timestamptz; -SELECT '2007-12-09 03:00:00 VET'::timestamptz; -SELECT '2007-12-09 03:00:01 VET'::timestamptz; -SELECT '2007-12-09 04:00:00 VET'::timestamptz; +SELECT '2014-10-26 00:00:00 Europe/Moscow'::timestamptz; +SELECT '2014-10-26 00:59:59 Europe/Moscow'::timestamptz; +SELECT '2014-10-26 01:00:00 Europe/Moscow'::timestamptz; +SELECT '2014-10-26 01:00:01 Europe/Moscow'::timestamptz; +SELECT '2014-10-26 02:00:00 Europe/Moscow'::timestamptz; + +SELECT '2014-10-26 00:00:00 MSK'::timestamptz; +SELECT '2014-10-26 00:59:59 MSK'::timestamptz; +SELECT '2014-10-26 01:00:00 MSK'::timestamptz; +SELECT '2014-10-26 01:00:01 MSK'::timestamptz; +SELECT '2014-10-26 02:00:00 MSK'::timestamptz; SELECT '2011-03-27 00:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; SELECT '2011-03-27 01:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; @@ -382,26 +375,20 @@ SELECT '2011-03-27 03:00:00'::timestamp AT TIME ZONE 'MSK'; SELECT '2011-03-27 03:00:01'::timestamp AT TIME ZONE 'MSK'; SELECT '2011-03-27 04:00:00'::timestamp AT TIME ZONE 'MSK'; -SELECT '2007-12-09 02:00:00'::timestamp AT TIME ZONE 'America/Caracas'; -SELECT '2007-12-09 02:29:59'::timestamp AT TIME ZONE 'America/Caracas'; -SELECT '2007-12-09 02:30:00'::timestamp AT TIME ZONE 'America/Caracas'; -SELECT '2007-12-09 02:30:01'::timestamp AT TIME ZONE 'America/Caracas'; -SELECT '2007-12-09 02:59:59'::timestamp AT TIME ZONE 'America/Caracas'; -SELECT '2007-12-09 03:00:00'::timestamp AT TIME ZONE 'America/Caracas'; -SELECT '2007-12-09 03:00:01'::timestamp AT TIME ZONE 'America/Caracas'; -SELECT '2007-12-09 04:00:00'::timestamp AT TIME ZONE 'America/Caracas'; - -SELECT '2007-12-09 02:00:00'::timestamp AT TIME ZONE 'VET'; -SELECT '2007-12-09 02:29:59'::timestamp AT TIME ZONE 'VET'; -SELECT '2007-12-09 02:30:00'::timestamp AT TIME ZONE 'VET'; -SELECT '2007-12-09 02:30:01'::timestamp AT TIME ZONE 'VET'; -SELECT '2007-12-09 02:59:59'::timestamp AT TIME ZONE 'VET'; -SELECT '2007-12-09 03:00:00'::timestamp AT TIME ZONE 'VET'; -SELECT '2007-12-09 03:00:01'::timestamp AT TIME ZONE 'VET'; -SELECT '2007-12-09 04:00:00'::timestamp AT TIME ZONE 'VET'; - -SELECT make_timestamptz(2007, 12, 9, 2, 0, 0, 'VET'); -SELECT make_timestamptz(2007, 12, 9, 3, 0, 0, 'VET'); +SELECT '2014-10-26 00:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; +SELECT '2014-10-26 00:59:59'::timestamp AT TIME ZONE 'Europe/Moscow'; +SELECT '2014-10-26 01:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; +SELECT '2014-10-26 01:00:01'::timestamp AT TIME ZONE 'Europe/Moscow'; +SELECT '2014-10-26 02:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; + +SELECT '2014-10-26 00:00:00'::timestamp AT TIME ZONE 'MSK'; +SELECT '2014-10-26 00:59:59'::timestamp AT TIME ZONE 'MSK'; +SELECT '2014-10-26 01:00:00'::timestamp AT TIME ZONE 'MSK'; +SELECT '2014-10-26 01:00:01'::timestamp AT TIME ZONE 'MSK'; +SELECT '2014-10-26 02:00:00'::timestamp AT TIME ZONE 'MSK'; + +SELECT make_timestamptz(2014, 10, 26, 0, 0, 0, 'MSK'); +SELECT make_timestamptz(2014, 10, 26, 1, 0, 0, 'MSK'); SELECT to_timestamp( 0); -- 1970-01-01 00:00:00+00 SELECT to_timestamp( 946684800); -- 2000-01-01 00:00:00+00 @@ -425,15 +412,11 @@ SELECT '2011-03-26 23:00:01 UTC'::timestamptz; SELECT '2011-03-26 23:59:59 UTC'::timestamptz; SELECT '2011-03-27 00:00:00 UTC'::timestamptz; -SET TimeZone to 'America/Caracas'; - -SELECT '2007-12-09 06:00:00 UTC'::timestamptz; -SELECT '2007-12-09 06:30:00 UTC'::timestamptz; -SELECT '2007-12-09 06:59:59 UTC'::timestamptz; -SELECT '2007-12-09 07:00:00 UTC'::timestamptz; -SELECT '2007-12-09 07:00:01 UTC'::timestamptz; -SELECT '2007-12-09 07:29:59 UTC'::timestamptz; -SELECT '2007-12-09 07:30:00 UTC'::timestamptz; +SELECT '2014-10-25 21:00:00 UTC'::timestamptz; +SELECT '2014-10-25 21:59:59 UTC'::timestamptz; +SELECT '2014-10-25 22:00:00 UTC'::timestamptz; +SELECT '2014-10-25 22:00:01 UTC'::timestamptz; +SELECT '2014-10-25 23:00:00 UTC'::timestamptz; RESET TimeZone; @@ -445,13 +428,11 @@ SELECT '2011-03-26 23:00:01 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; SELECT '2011-03-26 23:59:59 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; SELECT '2011-03-27 00:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; -SELECT '2007-12-09 06:00:00 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; -SELECT '2007-12-09 06:30:00 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; -SELECT '2007-12-09 06:59:59 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; -SELECT '2007-12-09 07:00:00 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; -SELECT '2007-12-09 07:00:01 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; -SELECT '2007-12-09 07:29:59 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; -SELECT '2007-12-09 07:30:00 UTC'::timestamptz AT TIME ZONE 'America/Caracas'; +SELECT '2014-10-25 21:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; +SELECT '2014-10-25 21:59:59 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; +SELECT '2014-10-25 22:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; +SELECT '2014-10-25 22:00:01 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; +SELECT '2014-10-25 23:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; SELECT '2011-03-26 21:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; SELECT '2011-03-26 22:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; @@ -461,13 +442,11 @@ SELECT '2011-03-26 23:00:01 UTC'::timestamptz AT TIME ZONE 'MSK'; SELECT '2011-03-26 23:59:59 UTC'::timestamptz AT TIME ZONE 'MSK'; SELECT '2011-03-27 00:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; -SELECT '2007-12-09 06:00:00 UTC'::timestamptz AT TIME ZONE 'VET'; -SELECT '2007-12-09 06:30:00 UTC'::timestamptz AT TIME ZONE 'VET'; -SELECT '2007-12-09 06:59:59 UTC'::timestamptz AT TIME ZONE 'VET'; -SELECT '2007-12-09 07:00:00 UTC'::timestamptz AT TIME ZONE 'VET'; -SELECT '2007-12-09 07:00:01 UTC'::timestamptz AT TIME ZONE 'VET'; -SELECT '2007-12-09 07:29:59 UTC'::timestamptz AT TIME ZONE 'VET'; -SELECT '2007-12-09 07:30:00 UTC'::timestamptz AT TIME ZONE 'VET'; +SELECT '2014-10-25 21:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; +SELECT '2014-10-25 21:59:59 UTC'::timestamptz AT TIME ZONE 'MSK'; +SELECT '2014-10-25 22:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; +SELECT '2014-10-25 22:00:01 UTC'::timestamptz AT TIME ZONE 'MSK'; +SELECT '2014-10-25 23:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; -- -- Test that the pg_timezone_names and pg_timezone_abbrevs views are @@ -484,3 +463,12 @@ set timezone_abbreviations = 'Australia'; select count(distinct utc_offset) >= 24 as ok from pg_timezone_abbrevs; set timezone_abbreviations = 'India'; select count(distinct utc_offset) >= 24 as ok from pg_timezone_abbrevs; + +-- +-- Test that AT TIME ZONE isn't misoptimized when using an index (bug #14504) +-- +create temp table tmptz (f1 timestamptz primary key); +insert into tmptz values ('2017-01-18 00:00+00'); +explain (costs off) +select * from tmptz where f1 at time zone 'utc' = '2017-01-18 00:00'; +select * from tmptz where f1 at time zone 'utc' = '2017-01-18 00:00'; diff --git a/src/test/regress/sql/tsdicts.sql b/src/test/regress/sql/tsdicts.sql index 4d0419e35a..a5a569e1ad 100644 --- a/src/test/regress/sql/tsdicts.sql +++ b/src/test/regress/sql/tsdicts.sql @@ -96,7 +96,7 @@ SELECT ts_lexize('hunspell_num', 'footballklubber'); SELECT ts_lexize('hunspell_num', 'ballyklubber'); SELECT ts_lexize('hunspell_num', 'footballyklubber'); --- Synonim dictionary +-- Synonym dictionary CREATE TEXT SEARCH DICTIONARY synonym ( Template=synonym, Synonyms=synonym_sample @@ -186,5 +186,5 @@ ALTER TEXT SEARCH CONFIGURATION thesaurus_tst ALTER MAPPING FOR WITH synonym, thesaurus, english_stem; SELECT to_tsvector('thesaurus_tst', 'one postgres one two one two three one'); -SELECT to_tsvector('thesaurus_tst', 'Supernovae star is very new star and usually called supernovae (abbrevation SN)'); +SELECT to_tsvector('thesaurus_tst', 'Supernovae star is very new star and usually called supernovae (abbreviation SN)'); SELECT to_tsvector('thesaurus_tst', 'Booking tickets is looking like a booking a tickets'); diff --git a/src/test/regress/sql/tsearch.sql b/src/test/regress/sql/tsearch.sql index 65eb9438d4..e4b21f8f18 100644 --- a/src/test/regress/sql/tsearch.sql +++ b/src/test/regress/sql/tsearch.sql @@ -48,10 +48,33 @@ SELECT count(*) FROM test_tsvector WHERE a @@ 'eq|yt'; SELECT count(*) FROM test_tsvector WHERE a @@ '(eq&yt)|(wr&qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ '(eq|yt)&(wr|qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*'; +SELECT count(*) FROM test_tsvector WHERE a @@ any ('{wr,qh}'); +SELECT count(*) FROM test_tsvector WHERE a @@ 'no_such_lexeme'; +SELECT count(*) FROM test_tsvector WHERE a @@ '!no_such_lexeme'; create index wowidx on test_tsvector using gist (a); SET enable_seqscan=OFF; +SET enable_indexscan=ON; +SET enable_bitmapscan=OFF; + +explain (costs off) SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh'; + +SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh'; +SELECT count(*) FROM test_tsvector WHERE a @@ 'wr&qh'; +SELECT count(*) FROM test_tsvector WHERE a @@ 'eq&yt'; +SELECT count(*) FROM test_tsvector WHERE a @@ 'eq|yt'; +SELECT count(*) FROM test_tsvector WHERE a @@ '(eq&yt)|(wr&qh)'; +SELECT count(*) FROM test_tsvector WHERE a @@ '(eq|yt)&(wr|qh)'; +SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*'; +SELECT count(*) FROM test_tsvector WHERE a @@ any ('{wr,qh}'); +SELECT count(*) FROM test_tsvector WHERE a @@ 'no_such_lexeme'; +SELECT count(*) FROM test_tsvector WHERE a @@ '!no_such_lexeme'; + +SET enable_indexscan=OFF; +SET enable_bitmapscan=ON; + +explain (costs off) SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wr&qh'; @@ -61,14 +84,21 @@ SELECT count(*) FROM test_tsvector WHERE a @@ '(eq&yt)|(wr&qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ '(eq|yt)&(wr|qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*'; SELECT count(*) FROM test_tsvector WHERE a @@ any ('{wr,qh}'); +SELECT count(*) FROM test_tsvector WHERE a @@ 'no_such_lexeme'; +SELECT count(*) FROM test_tsvector WHERE a @@ '!no_such_lexeme'; RESET enable_seqscan; +RESET enable_indexscan; +RESET enable_bitmapscan; DROP INDEX wowidx; CREATE INDEX wowidx ON test_tsvector USING gin (a); SET enable_seqscan=OFF; +-- GIN only supports bitmapscan, so no need to test plain indexscan + +explain (costs off) SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wr&qh'; @@ -78,8 +108,11 @@ SELECT count(*) FROM test_tsvector WHERE a @@ '(eq&yt)|(wr&qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ '(eq|yt)&(wr|qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*'; SELECT count(*) FROM test_tsvector WHERE a @@ any ('{wr,qh}'); +SELECT count(*) FROM test_tsvector WHERE a @@ 'no_such_lexeme'; +SELECT count(*) FROM test_tsvector WHERE a @@ '!no_such_lexeme'; RESET enable_seqscan; + INSERT INTO test_tsvector VALUES ('???', 'DFG:1A,2B,6C,10 FGH'); SELECT * FROM ts_stat('SELECT a FROM test_tsvector') ORDER BY ndoc DESC, nentry DESC, word LIMIT 10; SELECT * FROM ts_stat('SELECT a FROM test_tsvector', 'AB') ORDER BY ndoc DESC, nentry DESC, word; @@ -402,6 +435,8 @@ SELECT COUNT(*) FROM test_tsquery WHERE keyword > 'new & york'; RESET enable_seqscan; SELECT ts_rewrite('foo & bar & qq & new & york', 'new & york'::tsquery, 'big & apple | nyc | new & york & city'); +SELECT ts_rewrite(ts_rewrite('new & !york ', 'york', '!jersey'), + 'jersey', 'mexico'); SELECT ts_rewrite('moscow', 'SELECT keyword, sample FROM test_tsquery'::text ); SELECT ts_rewrite('moscow & hotel', 'SELECT keyword, sample FROM test_tsquery'::text ); @@ -416,6 +451,9 @@ SELECT ts_rewrite('1 & (2 <2> 3)', 'SELECT keyword, sample FROM test_tsquery'::t SELECT ts_rewrite('5 <-> (1 & (2 <-> 3))', 'SELECT keyword, sample FROM test_tsquery'::text ); SELECT ts_rewrite('5 <-> (6 | 8)', 'SELECT keyword, sample FROM test_tsquery'::text ); +-- Check empty substitution +SELECT ts_rewrite(to_tsquery('5 & (6 | 5)'), to_tsquery('5'), to_tsquery('')); +SELECT ts_rewrite(to_tsquery('!5'), to_tsquery('5'), to_tsquery('')); SELECT keyword FROM test_tsquery WHERE keyword @> 'new'; SELECT keyword FROM test_tsquery WHERE keyword @> 'moscow'; @@ -442,6 +480,12 @@ SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_t SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow & hotel') AS query; SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'bar & new & qq & foo & york') AS query; +SELECT ts_rewrite(tsquery_phrase('foo', 'foo'), 'foo', 'bar | baz'); +SELECT to_tsvector('foo bar') @@ + ts_rewrite(tsquery_phrase('foo', 'foo'), 'foo', 'bar | baz'); +SELECT to_tsvector('bar baz') @@ + ts_rewrite(tsquery_phrase('foo', 'foo'), 'foo', 'bar | baz'); + RESET enable_seqscan; --test GUC diff --git a/src/test/regress/sql/tstypes.sql b/src/test/regress/sql/tstypes.sql index 9ea93a2993..0a40ec9350 100644 --- a/src/test/regress/sql/tstypes.sql +++ b/src/test/regress/sql/tstypes.sql @@ -64,34 +64,6 @@ SELECT 'a & !!b'::tsquery; SELECT '!!a & b'::tsquery; SELECT '!!a & !!b'::tsquery; --- phrase transformation -SELECT 'a <-> (b|c)'::tsquery; -SELECT '(a|b) <-> c'::tsquery; -SELECT '(a|b) <-> (d|c)'::tsquery; - -SELECT 'a <-> (b&c)'::tsquery; -SELECT '(a&b) <-> c'::tsquery; -SELECT '(a&b) <-> (d&c)'::tsquery; - -SELECT 'a <-> !b'::tsquery; -SELECT '!a <-> b'::tsquery; -SELECT '!a <-> !b'::tsquery; - -SELECT 'a <-> !(b&c)'::tsquery; -SELECT 'a <-> !(b|c)'::tsquery; -SELECT '!(a&b) <-> c'::tsquery; -SELECT '!(a|b) <-> c'::tsquery; - -SELECT '(!a|b) <-> c'::tsquery; -SELECT '(!a&b) <-> c'::tsquery; -SELECT 'c <-> (!a|b)'::tsquery; -SELECT 'c <-> (!a&b)'::tsquery; - -SELECT '(a|b) <-> !c'::tsquery; -SELECT '(a&b) <-> !c'::tsquery; -SELECT '!c <-> (a|b)'::tsquery; -SELECT '!c <-> (a&b)'::tsquery; - --comparisons SELECT 'a' < 'b & c'::tsquery as "true"; SELECT 'a' > 'b & c'::tsquery as "false"; @@ -146,10 +118,35 @@ SELECT to_tsvector('simple', '1 2 11 3') @@ '1:* <-> 3' AS "true"; SELECT to_tsvector('simple', '1 2 3 4') @@ '1 <-> 2 <-> 3' AS "true"; SELECT to_tsvector('simple', '1 2 3 4') @@ '(1 <-> 2) <-> 3' AS "true"; -SELECT to_tsvector('simple', '1 2 3 4') @@ '1 <-> (2 <-> 3)' AS "false"; -SELECT to_tsvector('simple', '1 2 3 4') @@ '1 <2> (2 <-> 3)' AS "true"; +SELECT to_tsvector('simple', '1 2 3 4') @@ '1 <-> (2 <-> 3)' AS "true"; +SELECT to_tsvector('simple', '1 2 3 4') @@ '1 <2> (2 <-> 3)' AS "false"; SELECT to_tsvector('simple', '1 2 1 2 3 4') @@ '(1 <-> 2) <-> 3' AS "true"; SELECT to_tsvector('simple', '1 2 1 2 3 4') @@ '1 <-> 2 <-> 3' AS "true"; +-- without position data, phrase search does not match +SELECT strip(to_tsvector('simple', '1 2 3 4')) @@ '1 <-> 2 <-> 3' AS "false"; + +select to_tsvector('simple', 'q x q y') @@ 'q <-> (x & y)' AS "false"; +select to_tsvector('simple', 'q x') @@ 'q <-> (x | y <-> z)' AS "true"; +select to_tsvector('simple', 'q y') @@ 'q <-> (x | y <-> z)' AS "false"; +select to_tsvector('simple', 'q y z') @@ 'q <-> (x | y <-> z)' AS "true"; +select to_tsvector('simple', 'q y x') @@ 'q <-> (x | y <-> z)' AS "false"; +select to_tsvector('simple', 'q x y') @@ 'q <-> (x | y <-> z)' AS "true"; +select to_tsvector('simple', 'q x') @@ '(x | y <-> z) <-> q' AS "false"; +select to_tsvector('simple', 'x q') @@ '(x | y <-> z) <-> q' AS "true"; +select to_tsvector('simple', 'x y q') @@ '(x | y <-> z) <-> q' AS "false"; +select to_tsvector('simple', 'x y z') @@ '(x | y <-> z) <-> q' AS "false"; +select to_tsvector('simple', 'x y z q') @@ '(x | y <-> z) <-> q' AS "true"; +select to_tsvector('simple', 'y z q') @@ '(x | y <-> z) <-> q' AS "true"; +select to_tsvector('simple', 'y y q') @@ '(x | y <-> z) <-> q' AS "false"; +select to_tsvector('simple', 'y y q') @@ '(!x | y <-> z) <-> q' AS "true"; +select to_tsvector('simple', 'x y q') @@ '(!x | y <-> z) <-> q' AS "true"; +select to_tsvector('simple', 'y y q') @@ '(x | y <-> !z) <-> q' AS "true"; +select to_tsvector('simple', 'x q') @@ '(x | y <-> !z) <-> q' AS "true"; +select to_tsvector('simple', 'x q') @@ '(!x | y <-> z) <-> q' AS "false"; +select to_tsvector('simple', 'z q') @@ '(!x | y <-> z) <-> q' AS "true"; +select to_tsvector('simple', 'x y q y') @@ '!x <-> y' AS "true"; +select to_tsvector('simple', 'x y q y') @@ '!foo' AS "true"; +select to_tsvector('simple', '') @@ '!foo' AS "true"; --ranking SELECT ts_rank(' a:1 s:2C d g'::tsvector, 'a | s'); @@ -193,6 +190,7 @@ SELECT 'a:1 b:3'::tsvector @@ 'a <0> b'::tsquery AS "false"; SELECT 'a:1 b:3'::tsvector @@ 'a <1> b'::tsquery AS "false"; SELECT 'a:1 b:3'::tsvector @@ 'a <2> b'::tsquery AS "true"; SELECT 'a:1 b:3'::tsvector @@ 'a <3> b'::tsquery AS "false"; +SELECT 'a:1 b:3'::tsvector @@ 'a <0> a:*'::tsquery AS "true"; -- tsvector editing operations diff --git a/src/test/regress/sql/union.sql b/src/test/regress/sql/union.sql index 9ff1551e5d..7baacba6d6 100644 --- a/src/test/regress/sql/union.sql +++ b/src/test/regress/sql/union.sql @@ -111,6 +111,12 @@ SELECT q1 FROM int8_tbl EXCEPT ALL SELECT DISTINCT q2 FROM int8_tbl; SELECT q1 FROM int8_tbl EXCEPT ALL SELECT q1 FROM int8_tbl FOR NO KEY UPDATE; +-- nested cases +(SELECT 1,2,3 UNION SELECT 4,5,6) INTERSECT SELECT 4,5,6; +(SELECT 1,2,3 UNION SELECT 4,5,6 ORDER BY 1,2) INTERSECT SELECT 4,5,6; +(SELECT 1,2,3 UNION SELECT 4,5,6) EXCEPT SELECT 4,5,6; +(SELECT 1,2,3 UNION SELECT 4,5,6 ORDER BY 1,2) EXCEPT SELECT 4,5,6; + -- -- Mixed types -- diff --git a/src/test/regress/sql/updatable_views.sql b/src/test/regress/sql/updatable_views.sql index 03c3f9d35e..868b22ae56 100644 --- a/src/test/regress/sql/updatable_views.sql +++ b/src/test/regress/sql/updatable_views.sql @@ -1098,3 +1098,17 @@ DROP VIEW v2; DROP VIEW v1; DROP TABLE t2; DROP TABLE t1; + +-- +-- Test CREATE OR REPLACE VIEW turning a non-updatable view into an +-- auto-updatable view and adding check options in a single step +-- +CREATE TABLE t1 (a int, b text); +CREATE VIEW v1 AS SELECT null::int AS a; +CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1 WHERE a > 0 WITH CHECK OPTION; + +INSERT INTO v1 VALUES (1, 'ok'); -- ok +INSERT INTO v1 VALUES (-1, 'invalid'); -- should fail + +DROP VIEW v1; +DROP TABLE t1; diff --git a/src/test/regress/sql/update.sql b/src/test/regress/sql/update.sql index 5637c68acf..e0cf5d12a9 100644 --- a/src/test/regress/sql/update.sql +++ b/src/test/regress/sql/update.sql @@ -40,6 +40,10 @@ UPDATE update_test SET a=v.i FROM (VALUES(100, 20)) AS v(i, j) SELECT * FROM update_test; +-- fail, wrong data type: +UPDATE update_test SET a = v.* FROM (VALUES(100, 20)) AS v(i, j) + WHERE update_test.b = v.j; + -- -- Test multiple-set-clause syntax -- @@ -70,6 +74,11 @@ UPDATE update_test SET (b,a) = (select a+1,b from update_test); UPDATE update_test SET (b,a) = (select a+1,b from update_test where a = 1000) WHERE a = 11; SELECT * FROM update_test; +-- these should work, but don't yet: +UPDATE update_test SET (a,b) = (v.*) FROM (VALUES(21, 100)) AS v(i, j) + WHERE update_test.a = v.i; +UPDATE update_test SET (a,b) = ROW(v.*) FROM (VALUES(21, 101)) AS v(i, j) + WHERE update_test.a = v.i; -- if an alias for the target table is specified, don't allow references -- to the original table name diff --git a/src/test/regress/sql/vacuum.sql b/src/test/regress/sql/vacuum.sql index 7b819f654d..0d35da9987 100644 --- a/src/test/regress/sql/vacuum.sql +++ b/src/test/regress/sql/vacuum.sql @@ -62,5 +62,9 @@ VACUUM FULL vactst; VACUUM (DISABLE_PAGE_SKIPPING) vaccluster; +-- check behavior with duplicate column mentions +VACUUM ANALYZE vaccluster(i,i); +ANALYZE vaccluster(i,i); + DROP TABLE vaccluster; DROP TABLE vactst; diff --git a/src/test/regress/sql/xmlmap.sql b/src/test/regress/sql/xmlmap.sql index 8f8d680813..fde1b9eb59 100644 --- a/src/test/regress/sql/xmlmap.sql +++ b/src/test/regress/sql/xmlmap.sql @@ -30,7 +30,8 @@ SELECT query_to_xml_and_xmlschema('SELECT * FROM testxmlschema.test1', true, tru DECLARE xc CURSOR WITH HOLD FOR SELECT * FROM testxmlschema.test1 ORDER BY 1, 2; SELECT cursor_to_xml('xc'::refcursor, 5, false, true, ''); -MOVE FIRST IN xc; +SELECT cursor_to_xmlschema('xc'::refcursor, false, true, ''); +MOVE BACKWARD ALL IN xc; SELECT cursor_to_xml('xc'::refcursor, 5, true, false, ''); SELECT cursor_to_xmlschema('xc'::refcursor, true, false, ''); diff --git a/src/test/ssl/ServerSetup.pm b/src/test/ssl/ServerSetup.pm index d312880f8b..08b686215b 100644 --- a/src/test/ssl/ServerSetup.pm +++ b/src/test/ssl/ServerSetup.pm @@ -7,7 +7,7 @@ # - ssl/root+client_ca.crt as the CA root for validating client certs. # - reject non-SSL connections # - a database called trustdb that lets anyone in -# - another database called certdb that uses certificate authentiction, ie. +# - another database called certdb that uses certificate authentication, ie. # the client must present a valid certificate signed by the client CA # - two users, called ssltestuser and anotheruser. # diff --git a/src/test/ssl/ssl/.gitignore b/src/test/ssl/ssl/.gitignore index 8feb8643ff..10b74f0848 100644 --- a/src/test/ssl/ssl/.gitignore +++ b/src/test/ssl/ssl/.gitignore @@ -1,2 +1,3 @@ -*.old -new_certs_dir +/*.old +/new_certs_dir/ +/client_tmp.key diff --git a/src/test/ssl/t/001_ssltests.pl b/src/test/ssl/t/001_ssltests.pl index dc8e064b25..598a5fe07a 100644 --- a/src/test/ssl/t/001_ssltests.pl +++ b/src/test/ssl/t/001_ssltests.pl @@ -66,10 +66,10 @@ sub test_connect_fails ok(!$result, "$connstr (should fail)"); } -# The client's private key must not be world-readable. Git doesn't track -# permissions (except for the executable bit), so they might be wrong after -# a checkout. -chmod 0600, "ssl/client.key"; +# The client's private key must not be world-readable, so take a copy +# of the key stored in the code tree and update its permissions. +copy("ssl/client.key", "ssl/client_tmp.key"); +chmod 0600, "ssl/client_tmp.key"; #### Part 0. Set up the server. @@ -229,11 +229,11 @@ sub test_connect_fails # correct client cert test_connect_ok( - "user=ssltestuser sslcert=ssl/client.crt sslkey=ssl/client.key"); + "user=ssltestuser sslcert=ssl/client.crt sslkey=ssl/client_tmp.key"); # client cert belonging to another user test_connect_fails( - "user=anotheruser sslcert=ssl/client.crt sslkey=ssl/client.key"); + "user=anotheruser sslcert=ssl/client.crt sslkey=ssl/client_tmp.key"); # revoked client cert test_connect_fails( @@ -243,7 +243,10 @@ sub test_connect_fails # intermediate client_ca.crt is provided by client, and isn't in server's ssl_ca_file switch_server_cert($node, 'server-cn-only', 'root_ca'); $common_connstr = -"user=ssltestuser dbname=certdb sslkey=ssl/client.key sslrootcert=ssl/root+server_ca.crt hostaddr=$SERVERHOSTADDR"; +"user=ssltestuser dbname=certdb sslkey=ssl/client_tmp.key sslrootcert=ssl/root+server_ca.crt hostaddr=$SERVERHOSTADDR"; test_connect_ok("sslmode=require sslcert=ssl/client+client_ca.crt"); test_connect_fails("sslmode=require sslcert=ssl/client.crt"); + +# clean up +unlink "ssl/client_tmp.key"; diff --git a/src/timezone/README b/src/timezone/README index f2f80c7176..912e0c1b39 100644 --- a/src/timezone/README +++ b/src/timezone/README @@ -50,7 +50,7 @@ match properly on the old version. Time Zone code ============== -The code in this directory is currently synced with tzcode release 2016c. +The code in this directory is currently synced with tzcode release 2017b. There are many cosmetic (and not so cosmetic) differences from the original tzcode library, but diffs in the upstream version should usually be propagated to our version. Here are some notes about that. @@ -79,6 +79,9 @@ other exposed names. slightly modified the API of the former, in part because it now relies on our own pg_open_tzfile() rather than opening files for itself. +* tzparse() is adjusted to cache the result of loading the TZDEFRULES +zone, so that that's not repeated more than once per process. + * There's a fair amount of code we don't need and have removed, including all the nonstandard optional APIs. We have also added a few functions of our own at the bottom of localtime.c. diff --git a/src/timezone/data/africa b/src/timezone/data/africa index 50f29d5dd5..dcc20b9b1c 100644 --- a/src/timezone/data/africa +++ b/src/timezone/data/africa @@ -6,15 +6,15 @@ # tz@iana.org for general use in the future). For more, please see # the file CONTRIBUTING in the tz distribution. -# From Paul Eggert (2014-10-31): +# From Paul Eggert (2017-02-20): # # Unless otherwise specified, the source for data through 1990 is: # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition), # San Diego: ACS Publications, Inc. (2003). # Unfortunately this book contains many errors and cites no sources. # -# Gwillim Law writes that a good source -# for recent time zone data is the International Air Transport +# Many years ago Gwillim Law wrote that a good source +# for time zone data was the International Air Transport # Association's Standard Schedules Information Manual (IATA SSIM), # published semiannually. Law sent in several helpful summaries # of the IATA's data after 1990. Except where otherwise noted, @@ -31,39 +31,33 @@ # A reliable and entertaining source about time zones is # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997). # +# European-style abbreviations are commonly used along the Mediterranean. +# For sub-Saharan Africa abbreviations were less standardized. # Previous editions of this database used WAT, CAT, SAT, and EAT -# for +0:00 through +3:00, respectively, -# but Mark R V Murray reports that -# 'SAST' is the official abbreviation for +2:00 in the country of South Africa, -# 'CAT' is commonly used for +2:00 in countries north of South Africa, and -# 'WAT' is probably the best name for +1:00, as the common phrase for +# for UT +00 through +03, respectively, +# but in 1997 Mark R V Murray reported that +# 'SAST' is the official abbreviation for +02 in the country of South Africa, +# 'CAT' is commonly used for +02 in countries north of South Africa, and +# 'WAT' is probably the best name for +01, as the common phrase for # the area that includes Nigeria is "West Africa". -# He has heard of "Western Sahara Time" for +0:00 but can find no reference. -# -# To make things confusing, 'WAT' seems to have been used for -1:00 long ago; -# I'd guess that this was because people needed _some_ name for -1:00, -# and at the time, far west Africa was the only major land area in -1:00. -# This usage is now obsolete, as the last use of -1:00 on the African -# mainland seems to have been 1976 in Western Sahara. -# -# To summarize, the following abbreviations seem to have some currency: -# -1:00 WAT West Africa Time (no longer used) -# 0:00 GMT Greenwich Mean Time -# 2:00 CAT Central Africa Time -# 2:00 SAST South Africa Standard Time -# and Murray suggests the following abbreviation: -# 1:00 WAT West Africa Time -# I realize that this leads to 'WAT' being used for both -1:00 and 1:00 -# for times before 1976, but this is the best I can think of -# until we get more information. +# +# To summarize, the following abbreviations seemed to have some currency: +# +00 GMT Greenwich Mean Time +# +02 CAT Central Africa Time +# +02 SAST South Africa Standard Time +# and Murray suggested the following abbreviation: +# +01 WAT West Africa Time +# Murray's suggestion seems to have caught on in news reports and the like. +# I vaguely recall 'WAT' also being used for -01 in the past but +# cannot now come up with solid citations. # # I invented the following abbreviations; corrections are welcome! -# 2:00 WAST West Africa Summer Time -# 2:30 BEAT British East Africa Time (no longer used) -# 2:45 BEAUT British East Africa Unified Time (no longer used) -# 3:00 CAST Central Africa Summer Time (no longer used) -# 3:00 SAST South Africa Summer Time (no longer used) -# 3:00 EAT East Africa Time +# +02 WAST West Africa Summer Time +# +03 CAST Central Africa Summer Time (no longer used) +# +03 SAST South Africa Summer Time (no longer used) +# +03 EAT East Africa Time +# 'EAT' also seems to have caught on; the others are rare but are paired +# with better-attested non-DST abbreviations. # Algeria # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S @@ -119,19 +113,19 @@ Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 15 0:01 # Cameroon # See Africa/Lagos. -# Cape Verde +# Cape Verde / Cabo Verde # -# Shanks gives 1907 for the transition to CVT. +# Shanks gives 1907 for the transition to +02. # Perhaps the 1911-05-26 Portuguese decree -# http://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf +# https://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf # merely made it official? # # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Atlantic/Cape_Verde -1:34:04 - LMT 1907 # Praia - -2:00 - CVT 1942 Sep - -2:00 1:00 CVST 1945 Oct 15 - -2:00 - CVT 1975 Nov 25 2:00 - -1:00 - CVT + -2:00 - -02 1942 Sep + -2:00 1:00 -01 1945 Oct 15 + -2:00 - -02 1975 Nov 25 2:00 + -1:00 - -01 # Central African Republic # See Africa/Lagos. @@ -388,7 +382,7 @@ Rule Ghana 1920 1942 - Sep 1 0:00 0:20 GHST Rule Ghana 1920 1942 - Dec 31 0:00 0 GMT # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Accra -0:00:52 - LMT 1918 - 0:00 Ghana %s + 0:00 Ghana GMT/+0020 # Guinea # See Africa/Abidjan. @@ -397,20 +391,20 @@ Zone Africa/Accra -0:00:52 - LMT 1918 # # Shanks gives 1911-05-26 for the transition to WAT, # evidently confusing the date of the Portuguese decree -# http://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf +# https://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf # with the date that it took effect, namely 1912-01-01. # # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Bissau -1:02:20 - LMT 1912 Jan 1 - -1:00 - WAT 1975 + -1:00 - -01 1975 0:00 - GMT # Kenya # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Nairobi 2:27:16 - LMT 1928 Jul 3:00 - EAT 1930 - 2:30 - BEAT 1940 - 2:45 - BEAUT 1960 + 2:30 - +0230 1940 + 2:45 - +0245 1960 3:00 - EAT Link Africa/Nairobi Africa/Addis_Ababa # Ethiopia Link Africa/Nairobi Africa/Asmara # Eritrea @@ -426,18 +420,25 @@ Link Africa/Nairobi Indian/Mayotte # See Africa/Johannesburg. # Liberia -# From Paul Eggert (2006-03-22): -# In 1972 Liberia was the last country to switch -# from a UTC offset that was not a multiple of 15 or 20 minutes. -# Howse reports that it was in honor of their president's birthday. -# Shank & Pottenger report the date as May 1, whereas Howse reports Jan; -# go with Shanks & Pottenger. -# For Liberia before 1972, Shanks & Pottenger report -0:44, whereas Howse and -# Whitman each report -0:44:30; go with the more precise figure. +# +# From Paul Eggert (2017-03-02): +# +# The Nautical Almanac for the Year 1970, p 264, is the source for -0:44:30. +# +# In 1972 Liberia was the last country to switch from a UTC offset +# that was not a multiple of 15 or 20 minutes. The 1972 change was on +# 1972-01-07, according to an entry dated 1972-01-04 on p 330 of: +# Presidential Papers: First year of the administration of +# President William R. Tolbert, Jr., July 23, 1971-July 31, 1972. +# Monrovia: Executive Mansion. +# +# Use the abbreviation "MMT" before 1972, as the more-accurate numeric +# abbreviation "-004430" would be one byte over the POSIX limit. +# # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Monrovia -0:43:08 - LMT 1882 -0:43:08 - MMT 1919 Mar # Monrovia Mean Time - -0:44:30 - LRT 1972 May # Liberia Time + -0:44:30 - MMT 1972 Jan 7 # approximately MMT 0:00 - GMT ############################################################################### @@ -464,7 +465,7 @@ Zone Africa/Monrovia -0:43:08 - LMT 1882 # http://www.libyaherald.com/2013/10/24/correction-no-time-change-tomorrow/ # # From Paul Eggert (2013-10-25): -# For now, assume they're reverting to the pre-2012 rules of permanent UTC+2. +# For now, assume they're reverting to the pre-2012 rules of permanent UT +02. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Libya 1951 only - Oct 14 2:00 1:00 S @@ -596,7 +597,7 @@ Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 S Rule Mauritius 2009 only - Mar lastSun 2:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis - 4:00 Mauritius MU%sT # Mauritius Time + 4:00 Mauritius +04/+05 # Agalega Is, Rodriguez # no information; probably like Indian/Mauritius @@ -915,14 +916,14 @@ Zone Africa/Casablanca -0:30:20 - LMT 1913 Oct 26 # since most of it was then controlled by Morocco. Zone Africa/El_Aaiun -0:52:48 - LMT 1934 Jan # El Aaiún - -1:00 - WAT 1976 Apr 14 + -1:00 - -01 1976 Apr 14 0:00 Morocco WE%sT # Mozambique # # Shanks gives 1903-03-01 for the transition to CAT. # Perhaps the 1911-05-26 Portuguese decree -# http://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf +# https://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf # merely made it official? # # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -949,16 +950,19 @@ Link Africa/Maputo Africa/Lusaka # Zambia # the country are close to 40 minutes earlier in sunrise than the rest # of the country. # -# From Paul Eggert (2007-03-31): -# Apparently the Caprivi Strip informally observes Botswana time, but -# we have no details. In the meantime people there can use Africa/Gaborone. +# From Paul Eggert (2017-02-22): +# Although the Zambezi Region (formerly known as Caprivi) informally +# observes Botswana time, we have no details about historical practice. +# In the meantime people there can use Africa/Gaborone. +# See: Immanuel S. The Namibian. 2017-02-23. +# http://www.namibian.com.na/51480/read/Time-change-divides-lawmakers # RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Namibia 1994 max - Sep Sun>=1 2:00 1:00 S Rule Namibia 1995 max - Apr Sun>=1 2:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8 - 1:30 - SWAT 1903 Mar # SW Africa Time + 1:30 - +0130 1903 Mar 2:00 - SAST 1942 Sep 20 2:00 2:00 1:00 SAST 1943 Mar 21 2:00 2:00 - SAST 1990 Mar 21 # independence @@ -985,7 +989,7 @@ Link Africa/Lagos Africa/Porto-Novo # Benin # Réunion # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Indian/Reunion 3:41:52 - LMT 1911 Jun # Saint-Denis - 4:00 - RET # Réunion Time + 4:00 - +04 # # Crozet Islands also observes Réunion time; see the 'antarctica' file. # @@ -1020,7 +1024,7 @@ Zone Indian/Reunion 3:41:52 - LMT 1911 Jun # Saint-Denis # Seychelles # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Indian/Mahe 3:41:48 - LMT 1906 Jun # Victoria - 4:00 - SCT # Seychelles Time + 4:00 - +04 # From Paul Eggert (2001-05-30): # Aldabra, Farquhar, and Desroches, originally dependencies of the # Seychelles, were transferred to the British Indian Ocean Territory diff --git a/src/timezone/data/antarctica b/src/timezone/data/antarctica index a537832954..3332d66842 100644 --- a/src/timezone/data/antarctica +++ b/src/timezone/data/antarctica @@ -10,9 +10,7 @@ # http://www.spri.cam.ac.uk/bob/periant.htm # for information. # Unless otherwise specified, we have no time zone information. -# -# Except for the French entries, -# I made up all time zone abbreviations mentioned here; corrections welcome! + # FORMAT is '-00' and GMTOFF is 0 for locations while uninhabited. # Argentina - year-round bases @@ -29,7 +27,7 @@ # previously sealers and scientific personnel wintered # Margaret Turner reports # http://web.archive.org/web/20021204222245/http://www.dstc.qut.edu.au/DST/marg/daylight.html -# (1999-09-30) that they're UTC+5, with no DST; +# (1999-09-30) that they're UT +05, with no DST; # presumably this is when they have visitors. # # year-round bases @@ -66,25 +64,29 @@ # Background: # http://www.timeanddate.com/news/time/antartica-time-changes-2010.html +# From Steffen Thorsen (2016-10-28): +# Australian Antarctica Division informed us that Casey changed time +# zone to UTC+11 in "the morning of 22nd October 2016". + # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Antarctica/Casey 0 - -00 1969 - 8:00 - AWST 2009 Oct 18 2:00 - # Australian Western Std Time - 11:00 - CAST 2010 Mar 5 2:00 # Casey Time - 8:00 - AWST 2011 Oct 28 2:00 - 11:00 - CAST 2012 Feb 21 17:00u - 8:00 - AWST + 8:00 - +08 2009 Oct 18 2:00 + 11:00 - +11 2010 Mar 5 2:00 + 8:00 - +08 2011 Oct 28 2:00 + 11:00 - +11 2012 Feb 21 17:00u + 8:00 - +08 2016 Oct 22 + 11:00 - +11 Zone Antarctica/Davis 0 - -00 1957 Jan 13 - 7:00 - DAVT 1964 Nov # Davis Time + 7:00 - +07 1964 Nov 0 - -00 1969 Feb - 7:00 - DAVT 2009 Oct 18 2:00 - 5:00 - DAVT 2010 Mar 10 20:00u - 7:00 - DAVT 2011 Oct 28 2:00 - 5:00 - DAVT 2012 Feb 21 20:00u - 7:00 - DAVT + 7:00 - +07 2009 Oct 18 2:00 + 5:00 - +05 2010 Mar 10 20:00u + 7:00 - +07 2011 Oct 28 2:00 + 5:00 - +05 2012 Feb 21 20:00u + 7:00 - +07 Zone Antarctica/Mawson 0 - -00 1954 Feb 13 - 6:00 - MAWT 2009 Oct 18 2:00 # Mawson Time - 5:00 - MAWT + 6:00 - +06 2009 Oct 18 2:00 + 5:00 - +05 # References: # Casey Weather (1998-02-26) # http://www.antdiv.gov.au/aad/exop/sfo/casey/casey_aws.html @@ -108,7 +110,8 @@ Zone Antarctica/Mawson 0 - -00 1954 Feb 13 # O'Higgins, Antarctic Peninsula, -6319-05704, since 1948-02 # Prat, -6230-05941 # Villa Las Estrellas (a town), around the Frei base, since 1984-04-09 -# These locations have always used Santiago time; use TZ='America/Santiago'. +# These locations employ Region of Magallanes time; use +# TZ='America/Punta_Arenas'. # China - year-round bases # Great Wall, King George Island, -6213-05858, since 1985-02-20 @@ -138,7 +141,7 @@ Zone Antarctica/Mawson 0 - -00 1954 Feb 13 # # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Indian/Kerguelen 0 - -00 1950 # Port-aux-Français - 5:00 - TFT # ISO code TF Time + 5:00 - +05 # # year-round base in the main continent # Dumont d'Urville, ÃŽle des Pétrels, -6640+14001, since 1956-11 @@ -149,9 +152,9 @@ Zone Indian/Kerguelen 0 - -00 1950 # Port-aux-Français # # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Antarctica/DumontDUrville 0 - -00 1947 - 10:00 - PMT 1952 Jan 14 # Port-Martin Time + 10:00 - +10 1952 Jan 14 0 - -00 1956 Nov - 10:00 - DDUT # Dumont-d'Urville Time + 10:00 - +10 # France & Italy - year-round base # Concordia, -750600+1232000, since 2005 @@ -177,7 +180,7 @@ Zone Antarctica/DumontDUrville 0 - -00 1947 # station of Japan, it's appropriate for the principal location. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Antarctica/Syowa 0 - -00 1957 Jan 29 - 3:00 - SYOT # Syowa Time + 3:00 - +03 # See: # NIPR Antarctic Research Activities (1999-08-17) # http://www.nipr.ac.jp/english/ara01.html @@ -214,17 +217,17 @@ Zone Antarctica/Syowa 0 - -00 1957 Jan 29 # correct, but they should be quite close to the actual dates. # # From Paul Eggert (2014-03-21): -# The CET-switching Troll rules require zic from tzcode 2014b or later, so as +# The CET-switching Troll rules require zic from tz 2014b or later, so as # suggested by Bengt-Inge Larsson comment them out for now, and approximate # with only UTC and CEST. Uncomment them when 2014b is more prevalent. # # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -#Rule Troll 2005 max - Mar 1 1:00u 1:00 CET -Rule Troll 2005 max - Mar lastSun 1:00u 2:00 CEST -#Rule Troll 2005 max - Oct lastSun 1:00u 1:00 CET -#Rule Troll 2004 max - Nov 7 1:00u 0:00 UTC +#Rule Troll 2005 max - Mar 1 1:00u 1:00 +01 +Rule Troll 2005 max - Mar lastSun 1:00u 2:00 +02 +#Rule Troll 2005 max - Oct lastSun 1:00u 1:00 +01 +#Rule Troll 2004 max - Nov 7 1:00u 0:00 +00 # Remove the following line when uncommenting the above '#Rule' lines. -Rule Troll 2004 max - Oct lastSun 1:00u 0:00 UTC +Rule Troll 2004 max - Oct lastSun 1:00u 0:00 +00 # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Antarctica/Troll 0 - -00 2005 Feb 12 0:00 Troll %s @@ -265,10 +268,10 @@ Zone Antarctica/Troll 0 - -00 2005 Feb 12 # changes during the year and does not necessarily correspond to mean # solar noon. So the Vostok time might have been whatever the clocks # happened to be during their visit. So we still don't really know what time -# it is at Vostok. But we'll guess UTC+6. +# it is at Vostok. But we'll guess +06. # Zone Antarctica/Vostok 0 - -00 1957 Dec 16 - 6:00 - VOST # Vostok time + 6:00 - +06 # S Africa - year-round bases # Marion Island, -4653+03752 @@ -301,7 +304,7 @@ Zone Antarctica/Vostok 0 - -00 1957 Dec 16 # # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Antarctica/Rothera 0 - -00 1976 Dec 1 - -3:00 - ROTT # Rothera time + -3:00 - -03 # Uruguay - year round base # Artigas, King George Island, -621104-0585107 diff --git a/src/timezone/data/asia b/src/timezone/data/asia index 533e2186d2..35774c6d7e 100644 --- a/src/timezone/data/asia +++ b/src/timezone/data/asia @@ -6,15 +6,15 @@ # tz@iana.org for general use in the future). For more, please see # the file CONTRIBUTING in the tz distribution. -# From Paul Eggert (2015-08-08): +# From Paul Eggert (2017-01-13): # # Unless otherwise specified, the source for data through 1990 is: # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition), # San Diego: ACS Publications, Inc. (2003). # Unfortunately this book contains many errors and cites no sources. # -# Gwillim Law writes that a good source -# for recent time zone data is the International Air Transport +# Many years ago Gwillim Law wrote that a good source +# for time zone data was the International Air Transport # Association's Standard Schedules Information Manual (IATA SSIM), # published semiannually. Law sent in several helpful summaries # of the IATA's data after 1990. Except where otherwise noted, @@ -35,29 +35,24 @@ # A reliable and entertaining source about time zones is # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997). # -# I invented the abbreviations marked '*' in the following table; -# the rest are from earlier versions of this file, or from other sources. -# Corrections are welcome! +# The following alphabetic abbreviations appear in these tables: # std dst # LMT Local Mean Time # 2:00 EET EEST Eastern European Time # 2:00 IST IDT Israel -# 3:00 AST ADT Arabia* -# 3:30 IRST IRDT Iran* -# 4:00 GST Gulf* # 5:30 IST India -# 7:00 ICT Indochina, most times and locations* # 7:00 WIB west Indonesia (Waktu Indonesia Barat) # 8:00 WITA central Indonesia (Waktu Indonesia Tengah) # 8:00 CST China -# 8:00 IDT Indochina, 1943-45, 1947-55, 1960-75 (some locations)* -# 8:00 JWST Western Standard Time (Japan, 1896/1937)* -# 8:30 KST KDT Korea when at +0830* -# 9:00 JCST Central Standard Time (Japan, 1896/1937) +# 8:30 KST KDT Korea when at +0830 # 9:00 WIT east Indonesia (Waktu Indonesia Timur) # 9:00 JST JDT Japan # 9:00 KST KDT Korea when at +09 # 9:30 ACST Australian Central Standard Time +# Otherwise, these tables typically use numeric abbreviations like +03 +# and +0330 for integer hour and minute UTC offsets. Although earlier +# editions invented alphabetic time zone abbreviations for every +# offset, this did not reflect common practice. # # See the 'europe' file for Russia and Turkey in Asia. @@ -65,7 +60,7 @@ # Incorporates data for Singapore from Robert Elz' asia 1.1, as well as # additional information from Tom Yap, Sun Microsystems Intercontinental # Technical Support (including a page from the Official Airline Guide - -# Worldwide Edition). The names for time zones are guesses. +# Worldwide Edition). ############################################################################### @@ -86,8 +81,8 @@ Rule RussiaAsia 1996 2011 - Oct lastSun 2:00s 0 - # Afghanistan # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Kabul 4:36:48 - LMT 1890 - 4:00 - AFT 1945 - 4:30 - AFT + 4:00 - +04 1945 + 4:30 - +0430 # Armenia # From Paul Eggert (2006-03-22): @@ -116,13 +111,11 @@ Zone Asia/Kabul 4:36:48 - LMT 1890 # http://www.worldtimezone.com/dst_news/dst_news_armenia03.html # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Yerevan 2:58:00 - LMT 1924 May 2 - 3:00 - YERT 1957 Mar # Yerevan Time - 4:00 RussiaAsia YER%sT 1991 Mar 31 2:00s - 3:00 1:00 YERST 1991 Sep 23 # independence - 3:00 RussiaAsia AM%sT 1995 Sep 24 2:00s - 4:00 - AMT 1997 - 4:00 RussiaAsia AM%sT 2012 Feb 9 - 4:00 - AMT + 3:00 - +03 1957 Mar + 4:00 RussiaAsia +04/+05 1991 Mar 31 2:00s + 3:00 RussiaAsia +03/+04 1995 Sep 24 2:00s + 4:00 - +04 1997 + 4:00 RussiaAsia +04/+05 # Azerbaijan @@ -143,13 +136,12 @@ Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 S Rule Azer 1997 2015 - Oct lastSun 5:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Baku 3:19:24 - LMT 1924 May 2 - 3:00 - BAKT 1957 Mar # Baku Time - 4:00 RussiaAsia BAK%sT 1991 Mar 31 2:00s - 3:00 1:00 BAKST 1991 Aug 30 # independence - 3:00 RussiaAsia AZ%sT 1992 Sep lastSun 2:00s - 4:00 - AZT 1996 # Azerbaijan Time - 4:00 EUAsia AZ%sT 1997 - 4:00 Azer AZ%sT + 3:00 - +03 1957 Mar + 4:00 RussiaAsia +04/+05 1991 Mar 31 2:00s + 3:00 RussiaAsia +03/+04 1992 Sep lastSun 2:00s + 4:00 - +04 1996 + 4:00 EUAsia +04/+05 1997 + 4:00 Azer +04/+05 # Bahrain # See Asia/Qatar. @@ -233,18 +225,17 @@ Rule Dhaka 2009 only - Dec 31 24:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Dhaka 6:01:40 - LMT 1890 5:53:20 - HMT 1941 Oct # Howrah Mean Time? - 6:30 - BURT 1942 May 15 # Burma Time - 5:30 - IST 1942 Sep - 6:30 - BURT 1951 Sep 30 - 6:00 - DACT 1971 Mar 26 # Dacca Time - 6:00 - BDT 2009 - 6:00 Dhaka BD%sT + 6:30 - +0630 1942 May 15 + 5:30 - +0530 1942 Sep + 6:30 - +0630 1951 Sep 30 + 6:00 - +06 2009 + 6:00 Dhaka +06/+07 # Bhutan # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Thimphu 5:58:36 - LMT 1947 Aug 15 # or Thimbu - 5:30 - IST 1987 Oct - 6:00 - BTT # Bhutan Time + 5:30 - +0530 1987 Oct + 6:00 - +06 # British Indian Ocean Territory # Whitman and the 1995 CIA time zone map say 5:00, but the @@ -254,25 +245,25 @@ Zone Asia/Thimphu 5:58:36 - LMT 1947 Aug 15 # or Thimbu # then contained the Chagos Archipelago). # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Indian/Chagos 4:49:40 - LMT 1907 - 5:00 - IOT 1996 # BIOT Time - 6:00 - IOT + 5:00 - +05 1996 + 6:00 - +06 # Brunei # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Brunei 7:39:40 - LMT 1926 Mar # Bandar Seri Begawan - 7:30 - BNT 1933 - 8:00 - BNT + 7:30 - +0730 1933 + 8:00 - +08 # Burma / Myanmar # Milne says 6:24:40 was the meridian of the time ball observatory at Rangoon. # Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone Asia/Rangoon 6:24:40 - LMT 1880 # or Yangon +Zone Asia/Yangon 6:24:40 - LMT 1880 # or Rangoon 6:24:40 - RMT 1920 # Rangoon Mean Time? - 6:30 - BURT 1942 May # Burma Time - 9:00 - JST 1945 May 3 - 6:30 - MMT # Myanmar Time + 6:30 - +0630 1942 May + 9:00 - +09 1945 May 3 + 6:30 - +0630 # Cambodia # See Asia/Bangkok. @@ -335,7 +326,7 @@ Rule PRC 1987 1991 - Apr Sun>=10 0:00 1:00 D # (could be true), for the moment I am assuming that those two # counties are mistakes in the astro.com data. -# From Paul Eggert (2014-06-30): +# From Paul Eggert (2017-01-05): # Alois Treindl kindly sent me translations of the following two sources: # # (1) @@ -383,7 +374,7 @@ Rule PRC 1987 1991 - Apr Sun>=10 0:00 1:00 D # Lewiston (ME) Daily Sun (1939-05-29), p 17, said "Even the time is # different - the occupied districts going by Tokyo time, an hour # ahead of that prevailing in the rest of Shanghai." Guess that the -# Xujiahui Observatory was under French control and stuck with UT+8. +# Xujiahui Observatory was under French control and stuck with UT +08. # # In earlier versions of this file, China had many separate Zone entries, but # this was based on what were apparently incorrect data in Shanks & Pottenger. @@ -392,29 +383,27 @@ Rule PRC 1987 1991 - Apr Sun>=10 0:00 1:00 D # Proposed in 1918 and theoretically in effect until 1949 (although in practice # mainly observed in coastal areas), the five zones were: # -# Changbai Time ("Long-white Time", Long-white = Heilongjiang area) UT+8.5 -# Asia/Harbin (currently a link to Asia/Shanghai) +# Changbai Time ("Long-white Time", Long-white = Heilongjiang area) UT +08:30 +# Now part of Asia/Shanghai; its pre-1970 times are not recorded here. # Heilongjiang (except Mohe county), Jilin # -# Zhongyuan Time ("Central plain Time") UT+8 -# Asia/Shanghai +# Zhongyuan Time ("Central plain Time") UT +08 +# Now part of Asia/Shanghai. # most of China -# This currently represents most other zones as well, -# as apparently these regions have been the same since 1970. # Milne gives 8:05:43.2 for Xujiahui Observatory time; round to nearest. -# Guo says Shanghai switched to UT+8 "from the end of the 19th century". +# Guo says Shanghai switched to UT +08 "from the end of the 19th century". # -# Long-shu Time (probably due to Long and Shu being two names of that area) UT+7 -# Asia/Chongqing (currently a link to Asia/Shanghai) +# Long-shu Time (probably as Long and Shu were two names of the area) UT +07 +# Now part of Asia/Shanghai; its pre-1970 times are not recorded here. # Guangxi, Guizhou, Hainan, Ningxia, Sichuan, Shaanxi, and Yunnan; -# most of Gansu; west Inner Mongolia; west Qinghai; and the Guangdong +# most of Gansu; west Inner Mongolia; east Qinghai; and the Guangdong # counties Deqing, Enping, Kaiping, Luoding, Taishan, Xinxing, # Yangchun, Yangjiang, Yu'nan, and Yunfu. # -# Xin-zang Time ("Xinjiang-Tibet Time") UT+6 -# Asia/Urumqi -# This currently represents Kunlun Time as well, -# as apparently the two regions have been the same since 1970. +# Xin-zang Time ("Xinjiang-Tibet Time") UT +06 +# This region is now part of either Asia/Urumqi or Asia/Shanghai with +# current boundaries uncertain; times before 1970 for areas that +# disagree with Ürümqi or Shanghai are not recorded here. # The Gansu counties Aksay, Anxi, Dunhuang, Subei; west Qinghai; # the Guangdong counties Xuwen, Haikang, Suixi, Lianjiang, # Zhanjiang, Wuchuan, Huazhou, Gaozhou, Maoming, Dianbai, and Xinyi; @@ -424,8 +413,8 @@ Rule PRC 1987 1991 - Apr Sun>=10 0:00 1:00 D # Shihezi, Changji, Yanqi, Heshuo, Tuokexun, Tulufan, Shanshan, Hami, # Fukang, Kuitun, Kumukuli, Miquan, Qitai, and Turfan. # -# Kunlun Time UT+5.5 -# Asia/Kashgar (currently a link to Asia/Urumqi) +# Kunlun Time UT +05:30 +# This region is now in the same status as Xin-zang Time (see above). # West Tibet, including Pulan, Aheqi, Shufu, Shule; # West Xinjiang, including Aksu, Atushi, Yining, Hetian, Cele, Luopu, Nileke, # Zhaosu, Tekesi, Gongliu, Chabuchaer, Huocheng, Bole, Pishan, Suiding, @@ -440,7 +429,7 @@ Rule PRC 1987 1991 - Apr Sun>=10 0:00 1:00 D # # On the other hand, ethnic Uyghurs, who make up about half the # population of Xinjiang, typically use "Xinjiang time" which is two -# hours behind Beijing time, or UTC +0600. The government of the Xinjiang +# hours behind Beijing time, or UT +06. The government of the Xinjiang # Uyghur Autonomous Region, (XAUR, or just Xinjiang for short) as well as # local governments such as the Ürümqi city government use both times in # publications, referring to what is popularly called Xinjiang time as @@ -496,8 +485,8 @@ Rule PRC 1987 1991 - Apr Sun>=10 0:00 1:00 D # having the same time as Beijing. # From Paul Eggert (2014-06-30): -# In the early days of the PRC, Tibet was given its own time zone (UT+6) but -# this was withdrawn in 1959 and never reinstated; see Tubten Khétsun, +# In the early days of the PRC, Tibet was given its own time zone (UT +06) +# but this was withdrawn in 1959 and never reinstated; see Tubten Khétsun, # Memories of life in Lhasa under Chinese Rule, Columbia U Press, ISBN # 978-0231142861 (2008), translator's introduction by Matthew Akester, p x. # As this is before our 1970 cutoff, Tibet doesn't need a separate zone. @@ -511,12 +500,12 @@ Rule PRC 1987 1991 - Apr Sun>=10 0:00 1:00 D # Republics, the Soviet Union, the Kuomintang, and the People's Republic of # China, and tracking down all these organizations' timekeeping rules would be # quite a trick. Approximate this lost history by a transition from LMT to -# XJT at the start of 1928, the year of accession of the warlord Jin Shuren, +# UT +06 at the start of 1928, the year of accession of the warlord Jin Shuren, # which happens to be the date given by Shanks & Pottenger (no doubt as a -# guess) as the transition from LMT. Ignore the usage of UT+8 before -# 1986-02-01 under the theory that the transition date to UT+8 is unknown and +# guess) as the transition from LMT. Ignore the usage of +08 before +# 1986-02-01 under the theory that the transition date to +08 is unknown and # that the sort of users who prefer Asia/Urumqi now typically ignored the -# UT+8 mandate back then. +# +08 mandate back then. # Zone NAME GMTOFF RULES FORMAT [UNTIL] # Beijing time, used throughout China; represented by Shanghai. @@ -526,7 +515,7 @@ Zone Asia/Shanghai 8:05:43 - LMT 1901 # Xinjiang time, used by many in western China; represented by Ürümqi / Ürümchi # / Wulumuqi. (Please use Asia/Shanghai if you prefer Beijing time.) Zone Asia/Urumqi 5:50:20 - LMT 1928 - 6:00 - XJT + 6:00 - +06 # Hong Kong (Xianggang) @@ -721,7 +710,7 @@ Zone Asia/Hong_Kong 7:36:42 - LMT 1904 Oct 30 # be found from historical government announcement database. # From Paul Eggert (2014-07-03): -# As per Yu-Cheng Chuang, say that Taiwan was at UT+9 from 1937-10-01 +# As per Yu-Cheng Chuang, say that Taiwan was at UT +09 from 1937-10-01 # until 1945-09-21 at 01:00, overriding Shanks & Pottenger. # Likewise, use Yu-Cheng Chuang's data for DST in Taiwan. @@ -745,38 +734,47 @@ Rule Taiwan 1979 only - Oct 1 0:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] # Taipei or Taibei or T'ai-pei Zone Asia/Taipei 8:06:00 - LMT 1896 Jan 1 - 8:00 - JWST 1937 Oct 1 + 8:00 - CST 1937 Oct 1 9:00 - JST 1945 Sep 21 1:00 8:00 Taiwan C%sT # Macau (Macao, Aomen) # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Macau 1961 1962 - Mar Sun>=16 3:30 1:00 S -Rule Macau 1961 1964 - Nov Sun>=1 3:30 0 - -Rule Macau 1963 only - Mar Sun>=16 0:00 1:00 S -Rule Macau 1964 only - Mar Sun>=16 3:30 1:00 S -Rule Macau 1965 only - Mar Sun>=16 0:00 1:00 S -Rule Macau 1965 only - Oct 31 0:00 0 - -Rule Macau 1966 1971 - Apr Sun>=16 3:30 1:00 S -Rule Macau 1966 1971 - Oct Sun>=16 3:30 0 - -Rule Macau 1972 1974 - Apr Sun>=15 0:00 1:00 S -Rule Macau 1972 1973 - Oct Sun>=15 0:00 0 - -Rule Macau 1974 1977 - Oct Sun>=15 3:30 0 - -Rule Macau 1975 1977 - Apr Sun>=15 3:30 1:00 S -Rule Macau 1978 1980 - Apr Sun>=15 0:00 1:00 S -Rule Macau 1978 1980 - Oct Sun>=15 0:00 0 - +Rule Macau 1961 1962 - Mar Sun>=16 3:30 1:00 D +Rule Macau 1961 1964 - Nov Sun>=1 3:30 0 S +Rule Macau 1963 only - Mar Sun>=16 0:00 1:00 D +Rule Macau 1964 only - Mar Sun>=16 3:30 1:00 D +Rule Macau 1965 only - Mar Sun>=16 0:00 1:00 D +Rule Macau 1965 only - Oct 31 0:00 0 S +Rule Macau 1966 1971 - Apr Sun>=16 3:30 1:00 D +Rule Macau 1966 1971 - Oct Sun>=16 3:30 0 S +Rule Macau 1972 1974 - Apr Sun>=15 0:00 1:00 D +Rule Macau 1972 1973 - Oct Sun>=15 0:00 0 S +Rule Macau 1974 1977 - Oct Sun>=15 3:30 0 S +Rule Macau 1975 1977 - Apr Sun>=15 3:30 1:00 D +Rule Macau 1978 1980 - Apr Sun>=15 0:00 1:00 D +Rule Macau 1978 1980 - Oct Sun>=15 0:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Macau 7:34:20 - LMT 1912 Jan 1 - 8:00 Macau MO%sT 1999 Dec 20 # return to China - 8:00 PRC C%sT + 8:00 Macau C%sT ############################################################################### # Cyprus -# + # Milne says the Eastern Telegraph Company used 2:14:00. Stick with LMT. +# IATA SSIM (1998-09) has Cyprus using EU rules for the first time. + +# From Paul Eggert (2016-09-09): +# Yesterday's Cyprus Mail reports that Northern Cyprus followed Turkey's +# lead and switched from +02/+03 to +03 year-round. +# http://cyprus-mail.com/2016/09/08/two-time-zones-cyprus-turkey-will-not-turn-clocks-back-next-month/ # +# From Even Scharning (2016-10-31): +# Looks like the time zone split in Cyprus went through last night. +# http://cyprus-mail.com/2016/10/30/cyprus-new-division-two-time-zones-now-reality/ + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Cyprus 1975 only - Apr 13 0:00 1:00 S Rule Cyprus 1975 only - Oct 12 0:00 0 - @@ -791,7 +789,10 @@ Rule Cyprus 1981 1998 - Mar lastSun 0:00 1:00 S Zone Asia/Nicosia 2:13:28 - LMT 1921 Nov 14 2:00 Cyprus EE%sT 1998 Sep 2:00 EUAsia EE%sT -# IATA SSIM (1998-09) has Cyprus using EU rules for the first time. +Zone Asia/Famagusta 2:15:48 - LMT 1921 Nov 14 + 2:00 Cyprus EE%sT 1998 Sep + 2:00 EUAsia EE%sT 2016 Sep 8 + 3:00 - +03 # Classically, Cyprus belongs to Asia; e.g. see Herodotus, Histories, I.72. # However, for various reasons many users expect to find it under Europe. @@ -835,16 +836,15 @@ Link Asia/Nicosia Europe/Nicosia # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Tbilisi 2:59:11 - LMT 1880 2:59:11 - TBMT 1924 May 2 # Tbilisi Mean Time - 3:00 - TBIT 1957 Mar # Tbilisi Time - 4:00 RussiaAsia TBI%sT 1991 Mar 31 2:00s - 3:00 1:00 TBIST 1991 Apr 9 # independence - 3:00 RussiaAsia GE%sT 1992 # Georgia Time - 3:00 E-EurAsia GE%sT 1994 Sep lastSun - 4:00 E-EurAsia GE%sT 1996 Oct lastSun - 4:00 1:00 GEST 1997 Mar lastSun - 4:00 E-EurAsia GE%sT 2004 Jun 27 - 3:00 RussiaAsia GE%sT 2005 Mar lastSun 2:00 - 4:00 - GET + 3:00 - +03 1957 Mar + 4:00 RussiaAsia +04/+05 1991 Mar 31 2:00s + 3:00 RussiaAsia +03/+04 1992 + 3:00 E-EurAsia +03/+04 1994 Sep lastSun + 4:00 E-EurAsia +04/+05 1996 Oct lastSun + 4:00 1:00 +05 1997 Mar lastSun + 4:00 E-EurAsia +04/+05 2004 Jun 27 + 3:00 RussiaAsia +03/+04 2005 Mar lastSun 2:00 + 4:00 - +04 # East Timor @@ -872,11 +872,10 @@ Zone Asia/Tbilisi 2:59:11 - LMT 1880 # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Dili 8:22:20 - LMT 1912 Jan 1 - 8:00 - TLT 1942 Feb 21 23:00 # E Timor Time - 9:00 - JST 1945 Sep 23 - 9:00 - TLT 1976 May 3 - 8:00 - WITA 2000 Sep 17 0:00 - 9:00 - TLT + 8:00 - +08 1942 Feb 21 23:00 + 9:00 - +09 1976 May 3 + 8:00 - +08 2000 Sep 17 0:00 + 9:00 - +09 # India @@ -891,9 +890,9 @@ Zone Asia/Dili 8:22:20 - LMT 1912 Jan 1 # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Kolkata 5:53:28 - LMT 1880 # Kolkata 5:53:20 - HMT 1941 Oct # Howrah Mean Time? - 6:30 - BURT 1942 May 15 # Burma Time + 6:30 - +0630 1942 May 15 5:30 - IST 1942 Sep - 5:30 1:00 IST 1945 Oct 15 + 5:30 1:00 +0630 1945 Oct 15 5:30 - IST # The following are like Asia/Kolkata: # Andaman Is @@ -921,7 +920,7 @@ Zone Asia/Kolkata 5:53:28 - LMT 1880 # Kolkata # These would be the earliest possible times for a change. # Régimes horaires pour le monde entier, by Henri Le Corre, (Éditions # Traditionnelles, 1987, Paris) says that Java and Madura switched -# from JST to UTC+07:30 on 1945-09-23, and gives 1944-09-01 for Jayapura +# from UT +09 to +07:30 on 1945-09-23, and gives 1944-09-01 for Jayapura # (Hollandia). For now, assume all Indonesian locations other than Jayapura # switched on 1945-09-23. # @@ -932,11 +931,11 @@ Zone Asia/Kolkata 5:53:28 - LMT 1880 # Kolkata # summary published by the Time and Frequency Laboratory of the # Research Center for Calibration, Instrumentation and Metrology, # Indonesia, (2006-09-29). -# The abbreviations are: +# The time zone abbreviations and UT offsets are: # -# WIB - UTC+7 - Waktu Indonesia Barat (Indonesia western time) -# WITA - UTC+8 - Waktu Indonesia Tengah (Indonesia central time) -# WIT - UTC+9 - Waktu Indonesia Timur (Indonesia eastern time) +# WIB - +07 - Waktu Indonesia Barat (Indonesia western time) +# WITA - +08 - Waktu Indonesia Tengah (Indonesia central time) +# WIT - +09 - Waktu Indonesia Timur (Indonesia eastern time) # # Zone NAME GMTOFF RULES FORMAT [UNTIL] # Java, Sumatra @@ -944,33 +943,33 @@ Zone Asia/Jakarta 7:07:12 - LMT 1867 Aug 10 # Shanks & Pottenger say the next transition was at 1924 Jan 1 0:13, # but this must be a typo. 7:07:12 - BMT 1923 Dec 31 23:47:12 # Batavia - 7:20 - JAVT 1932 Nov # Java Time - 7:30 - WIB 1942 Mar 23 - 9:00 - JST 1945 Sep 23 - 7:30 - WIB 1948 May - 8:00 - WIB 1950 May - 7:30 - WIB 1964 + 7:20 - +0720 1932 Nov + 7:30 - +0730 1942 Mar 23 + 9:00 - +09 1945 Sep 23 + 7:30 - +0730 1948 May + 8:00 - +08 1950 May + 7:30 - +0730 1964 7:00 - WIB # west and central Borneo Zone Asia/Pontianak 7:17:20 - LMT 1908 May 7:17:20 - PMT 1932 Nov # Pontianak MT - 7:30 - WIB 1942 Jan 29 - 9:00 - JST 1945 Sep 23 - 7:30 - WIB 1948 May - 8:00 - WIB 1950 May - 7:30 - WIB 1964 + 7:30 - +0730 1942 Jan 29 + 9:00 - +09 1945 Sep 23 + 7:30 - +0730 1948 May + 8:00 - +08 1950 May + 7:30 - +0730 1964 8:00 - WITA 1988 Jan 1 7:00 - WIB # Sulawesi, Lesser Sundas, east and south Borneo Zone Asia/Makassar 7:57:36 - LMT 1920 7:57:36 - MMT 1932 Nov # Macassar MT - 8:00 - WITA 1942 Feb 9 - 9:00 - JST 1945 Sep 23 + 8:00 - +08 1942 Feb 9 + 9:00 - +09 1945 Sep 23 8:00 - WITA # Maluku Islands, West Papua, Papua Zone Asia/Jayapura 9:22:48 - LMT 1932 Nov - 9:00 - WIT 1944 Sep 1 - 9:30 - ACST 1964 + 9:00 - +09 1944 Sep 1 + 9:30 - +0930 1964 9:00 - WIT # Iran @@ -1002,8 +1001,6 @@ Zone Asia/Jayapura 9:22:48 - LMT 1932 Nov # for at least the last 5 years. Before that, for a few years, the # date used was the first Thursday night of Farvardin and the last # Thursday night of Shahrivar, but I can't give exact dates.... -# I have also changed the abbreviations to what is considered correct -# here in Iran, IRST for regular time and IRDT for daylight saving time. # # From Roozbeh Pournader (2005-04-05): # The text of the Iranian law, in effect since 1925, clearly mentions @@ -1110,9 +1107,9 @@ Rule Iran 2036 max - Sep 21 0:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Tehran 3:25:44 - LMT 1916 3:25:44 - TMT 1946 # Tehran Mean Time - 3:30 - IRST 1977 Nov - 4:00 Iran IR%sT 1979 - 3:30 Iran IR%sT + 3:30 - +0330 1977 Nov + 4:00 Iran +04/+05 1979 + 3:30 Iran +0330/+0430 # Iraq @@ -1155,8 +1152,8 @@ Rule Iraq 1991 2007 - Oct 1 3:00s 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Baghdad 2:57:40 - LMT 1890 2:57:36 - BMT 1918 # Baghdad Mean Time? - 3:00 - AST 1982 May - 3:00 Iraq A%sT + 3:00 - +03 1982 May + 3:00 Iraq +03/+04 ############################################################################### @@ -1455,8 +1452,6 @@ Rule Japan 1950 1951 - May Sun>=1 2:00 1:00 D # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Tokyo 9:18:59 - LMT 1887 Dec 31 15:00u - 9:00 - JST 1896 Jan 1 - 9:00 - JCST 1937 Oct 1 9:00 Japan J%sT # Since 1938, all Japanese possessions have been like Asia/Tokyo. @@ -1574,12 +1569,12 @@ Zone Asia/Amman 2:23:44 - LMT 1931 # was "blended" with the Central zone. Therefore, Kazakhstan now has # two time zones, and difference between them is one hour. The zone # closer to UTC is the former Western zone (probably still called the -# same), encompassing four provinces in the west: Aqtobe, Atyrau, -# Mangghystau, and West Kazakhstan. The other zone encompasses +# same), encompassing four provinces in the west: Aqtöbe, AtyraÅ«, +# MangghystaÅ«, and West Kazakhstan. The other zone encompasses # everything else.... I guess that would make Kazakhstan time zones # de jure UTC+5 and UTC+6 respectively. -# From Stepan Golosunov (2016-03-27) ([*] means see later comments below): +# From Stepan Golosunov (2016-03-27): # Review of the linked documents from http://adilet.zan.kz/ # produced the following data for post-1991 Kazakhstan: # @@ -1625,7 +1620,7 @@ Zone Asia/Amman 2:23:44 - LMT 1931 # # This implies that on 1991-03-31 Asia/Oral remained on +04/+05 while # the rest of Kazakhstan switched from +06/+07 to +05/06 or from +05/06 -# to +04/+05. It's unclear how Kzyl-Orda oblast moved into the fifth +# to +04/+05. It's unclear how Qyzylorda oblast moved into the fifth # time belt. (By switching from +04/+05 to +05/+06 on 1991-09-29?) ... # # 1. Act of the Cabinet of Ministers of the Republic of Kazakhstan @@ -1638,25 +1633,25 @@ Zone Asia/Amman 2:23:44 - LMT 1931 # on the whole territory of Kazakhstan 1 hour forward on 1992-01-19 at # 2:00, specified DST rules. It acknowledged that Kazakhstan was # located in the fourth and the fifth time belts and specified the -# border between them to be located east of Kustanay and Aktyubinsk -# oblasts (notably including Turgai and Kzyl-Orda oblasts into the fifth +# border between them to be located east of Qostanay and Aktyubinsk +# oblasts (notably including Turgai and Qyzylorda oblasts into the fifth # time belt). # # This means switch on 1992-01-19 at 2:00 from +04/+05 to +05/+06 for -# Asia/Aqtau, Asia/Aqtobe, Asia/Oral, Atyrau and Kustanay oblasts; from -# +05/+06 to +06/+07 for Asia/Almaty and Asia/Qyzylorda (and Arkalyk) [*].... +# Asia/Aqtau, Asia/Aqtobe, Asia/Oral, AtyraÅ« and Qostanay oblasts; from +# +05/+06 to +06/+07 for Asia/Almaty and Asia/Qyzylorda (and Arkalyk).... # # 2. Act of the Cabinet of Ministers of the Republic of Kazakhstan # from 1992-03-27 No. 284 # http://adilet.zan.kz/rus/docs/P920000284_ -# cancels extra hour ("decree time") for Uralsk and Kzyl-Orda oblasts +# cancels extra hour ("decree time") for Uralsk and Qyzylorda oblasts # since the last Sunday of March 1992, while keeping them in the fourth # and the fifth time belts respectively. # # 3. Order of the Prime Minister of the Republic of Kazakhstan # from 1994-09-23 No. 384 # http://adilet.zan.kz/rus/docs/R940000384_ -# cancels the extra hour ("decree time") on the territory of Mangystau +# cancels the extra hour ("decree time") on the territory of MangghystaÅ« # oblast since the last Sunday of September 1994 (saying that time on # the territory would correspond to the third time belt as a # result).... @@ -1670,14 +1665,11 @@ Zone Asia/Amman 2:23:44 - LMT 1931 # 5. Act of the Government of the Republic of Kazakhstan # from 1999-03-26 No. 305 # http://adilet.zan.kz/rus/docs/P990000305_ -# cancels the extra hour ("decree time") for Atyrau oblast since the +# cancels the extra hour ("decree time") for AtyraÅ« oblast since the # last Sunday of March 1999 while retaining the oblast in the fourth # time belt. # -# This means change from +05/+06 to +04/+05. -# -# There is no zone for Atyrau currently (listed under Asia/Aqtau in -# zone1970.tab).[*] +# This means change from +05/+06 to +04/+05.... # # 6. Act of the Government of the Republic of Kazakhstan # from 2000-11-23 No. 1749 @@ -1687,10 +1679,10 @@ Zone Asia/Amman 2:23:44 - LMT 1931 # The only changes I noticed are in definition of the border between the # fourth and the fifth time belts. They account for changes in spelling # and administrative division (splitting of Turgai oblast in 1997 -# probably changed time in territories incorporated into Kostanay oblast -# (including Arkalyk) from +06/+07 to +05/+06) and move Kyzylorda oblast +# probably changed time in territories incorporated into Qostanay oblast +# (including Arkalyk) from +06/+07 to +05/+06) and move Qyzylorda oblast # from being in the fifth time belt and not using decree time into the -# fourth time belt (no change in practice).[*] +# fourth time belt (no change in practice). # # 7. Act of the Government of the Republic of Kazakhstan # from 2003-12-29 No. 1342 @@ -1700,7 +1692,7 @@ Zone Asia/Amman 2:23:44 - LMT 1931 # 8. Act of the Government of the Republic of Kazakhstan # from 2004-07-20 No. 775 # http://adilet.zan.kz/rus/archive/docs/P040000775_/20.07.2004 -# modified the 2000-11-23 act to move Kostanay and Kyzylorda oblasts into +# modified the 2000-11-23 act to move Qostanay and Qyzylorda oblasts into # the fifth time belt and add Aktobe oblast to the list of regions not # using extra hour ("decree time"), leaving Kazakhstan with only 2 time # zones (+04/+05 and +06/+07). The changes were to be implemented @@ -1712,14 +1704,14 @@ Zone Asia/Amman 2:23:44 - LMT 1931 # http://adilet.zan.kz/rus/docs/P040001059_ # modified the 2000-11-23 act to remove exceptions from the "decree time" # (leaving Kazakhstan in +05/+06 and +06/+07 zones), amended the -# 2004-07-20 act to implement changes for Atyrau, West Kazakhstan, -# Kostanay, Kyzylorda and Mangystau oblasts by not moving clocks -# during the 2014 transition to "winter" time. +# 2004-07-20 act to implement changes for AtyraÅ«, West Kazakhstan, +# Qostanay, Qyzylorda and MangghystaÅ« oblasts by not moving clocks +# during the 2004 transition to "winter" time. # -# This means transition from +04/+05 to +05/+06 for Atyrau oblast (no +# This means transition from +04/+05 to +05/+06 for AtyraÅ« oblast (no # zone currently), Asia/Oral, Asia/Aqtau and transition from +05/+06 to -# +06/+07 for Kostanay oblast (Kostanay and Arkalyk, no zones currently) -# and Asia/Qyzylorda on 2004-10-31 at 3:00....[*] +# +06/+07 for Qostanay oblast (Qostanay and Arkalyk, no zones currently) +# and Asia/Qyzylorda on 2004-10-31 at 3:00.... # # 10. Act of the Government of the Republic of Kazakhstan # from 2005-03-15 No. 231 @@ -1735,14 +1727,25 @@ Zone Asia/Amman 2:23:44 - LMT 1931 # Kazakh 1992-01-13 act appears to provide the same rules and 1992-03-27 # act was to be enacted on the last Sunday of March 1992. -# From Paul Eggert (2016-04-15): -# The tables below should reflect Stepan Golosunov's remarks above, -# except for the items marked "[*]" which I haven't gotten to yet. -# It looks like we will need new zones Asia/Atyrau and Asia/Qostanay -# to handle changes from 1992 through 2004 that we did not previously -# know about. - +# From Stepan Golosunov (2016-11-08): +# Turgai reorganization should affect only southern part of Qostanay +# oblast. Which should probably be separated into Asia/Arkalyk zone. +# (There were also 1970, 1988 and 1990 Turgai oblast reorganizations +# according to wikipedia.) # +# [For Qostanay] http://www.ng.kz/gazeta/195/hranit/ +# suggests that clocks were to be moved 40 minutes backwards on +# 1920-01-01 to the fourth time belt. But I do not understand +# how that could happen.... +# +# [For Atyrau and Oral] 1919 decree +# (http://www.worldtimezone.com/dst_news/dst_news_russia-1919-02-08.html +# and in Byalokoz) lists Ural river (plus 10 versts on its left bank) in +# the third time belt (before 1930 this means +03). + +# From Paul Eggert (2016-12-06): +# The tables below reflect Golosunov's remarks, with exceptions as noted. + # Zone NAME GMTOFF RULES FORMAT [UNTIL] # # Almaty (formerly Alma-Ata), representing most locations in Kazakhstan @@ -1755,6 +1758,8 @@ Zone Asia/Almaty 5:07:48 - LMT 1924 May 2 # or Alma-Ata 6:00 RussiaAsia +06/+07 2004 Oct 31 2:00s 6:00 - +06 # Qyzylorda (aka Kyzylorda, Kizilorda, Kzyl-Orda, etc.) (KZ-KZY) +# This currently includes Qostanay (aka Kostanay, Kustanay) (KZ-KUS); +# see comments below. Zone Asia/Qyzylorda 4:21:52 - LMT 1924 May 2 4:00 - +04 1930 Jun 21 5:00 - +05 1981 Apr 1 @@ -1766,7 +1771,21 @@ Zone Asia/Qyzylorda 4:21:52 - LMT 1924 May 2 6:00 RussiaAsia +06/+07 1992 Mar 29 2:00s 5:00 RussiaAsia +05/+06 2004 Oct 31 2:00s 6:00 - +06 -# Aqtobe (aka Aktobe, formerly Aktyubinsk) (KZ-AKT) +# The following zone is like Asia/Qyzylorda except for being one +# hour earlier from 1991-09-29 to 1992-03-29. The 1991/2 rules for +# Qostanay are unclear partly because of the 1997 Turgai +# reorganization, so this zone is commented out for now. +#Zone Asia/Qostanay 4:14:20 - LMT 1924 May 2 +# 4:00 - +04 1930 Jun 21 +# 5:00 - +05 1981 Apr 1 +# 5:00 1:00 +06 1981 Oct 1 +# 6:00 - +06 1982 Apr 1 +# 5:00 RussiaAsia +05/+06 1991 Mar 31 2:00s +# 4:00 RussiaAsia +04/+05 1992 Jan 19 2:00s +# 5:00 RussiaAsia +05/+06 2004 Oct 31 2:00s +# 6:00 - +06 +# +# Aqtöbe (aka Aktobe, formerly Aktyubinsk) (KZ-AKT) Zone Asia/Aqtobe 3:48:40 - LMT 1924 May 2 4:00 - +04 1930 Jun 21 5:00 - +05 1981 Apr 1 @@ -1776,14 +1795,11 @@ Zone Asia/Aqtobe 3:48:40 - LMT 1924 May 2 4:00 RussiaAsia +04/+05 1992 Jan 19 2:00s 5:00 RussiaAsia +05/+06 2004 Oct 31 2:00s 5:00 - +05 -# Qostanay (KZ-KUS) - -# Mangghystau (KZ-MAN) +# MangghystaÅ« (KZ-MAN) # Aqtau was not founded until 1963, but it represents an inhabited region, # so include time stamps before 1963. Zone Asia/Aqtau 3:21:04 - LMT 1924 May 2 4:00 - +04 1930 Jun 21 - 5:00 - +05 1963 5:00 - +05 1981 Oct 1 6:00 - +06 1982 Apr 1 5:00 RussiaAsia +05/+06 1991 Mar 31 2:00s @@ -1791,12 +1807,22 @@ Zone Asia/Aqtau 3:21:04 - LMT 1924 May 2 5:00 RussiaAsia +05/+06 1994 Sep 25 2:00s 4:00 RussiaAsia +04/+05 2004 Oct 31 2:00s 5:00 - +05 - +# AtyraÅ« (KZ-ATY) is like MangghystaÅ« except it switched from +# +04/+05 to +05/+06 in spring 1999, not fall 1994. +Zone Asia/Atyrau 3:27:44 - LMT 1924 May 2 + 3:00 - +03 1930 Jun 21 + 5:00 - +05 1981 Oct 1 + 6:00 - +06 1982 Apr 1 + 5:00 RussiaAsia +05/+06 1991 Mar 31 2:00s + 4:00 RussiaAsia +04/+05 1992 Jan 19 2:00s + 5:00 RussiaAsia +05/+06 1999 Mar 28 2:00s + 4:00 RussiaAsia +04/+05 2004 Oct 31 2:00s + 5:00 - +05 # West Kazakhstan (KZ-ZAP) # From Paul Eggert (2016-03-18): # The 1989 transition is from USSR act No. 227 (1989-03-14). Zone Asia/Oral 3:25:24 - LMT 1924 May 2 # or Ural'sk - 4:00 - +04 1930 Jun 21 + 3:00 - +03 1930 Jun 21 5:00 - +05 1981 Apr 1 5:00 1:00 +06 1981 Oct 1 6:00 - +06 1982 Apr 1 @@ -1825,11 +1851,11 @@ Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 S Rule Kyrgyz 1997 2004 - Oct lastSun 2:30 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Bishkek 4:58:24 - LMT 1924 May 2 - 5:00 - FRUT 1930 Jun 21 # Frunze Time - 6:00 RussiaAsia FRU%sT 1991 Mar 31 2:00s - 5:00 1:00 FRUST 1991 Aug 31 2:00 # independence - 5:00 Kyrgyz KG%sT 2005 Aug 12 # Kyrgyzstan Time - 6:00 - KGT + 5:00 - +05 1930 Jun 21 + 6:00 RussiaAsia +06/+07 1991 Mar 31 2:00s + 5:00 RussiaAsia +05/+06 1991 Aug 31 2:00 + 5:00 Kyrgyz +05/+06 2005 Aug 12 + 6:00 - +06 ############################################################################### @@ -1868,25 +1894,24 @@ Rule ROK 1957 1960 - Sep Sun>=18 0:00 0 S Rule ROK 1987 1988 - May Sun>=8 2:00 1:00 D Rule ROK 1987 1988 - Oct Sun>=8 3:00 0 S -# From Paul Eggert (2014-10-30): +# From Paul Eggert (2016-08-23): # The Korean Wikipedia entry gives the following sources for UT offsets: # -# 1908: Official Journal Article No. 3994 (Edict No. 5) +# 1908: Official Journal Article No. 3994 (decree No. 5) # 1912: Governor-General of Korea Official Gazette Issue No. 367 # (Announcement No. 338) # 1954: Presidential Decree No. 876 (1954-03-17) # 1961: Law No. 676 (1961-08-07) -# 1987: Law No. 3919 (1986-12-31) # -# The Wikipedia entry also has confusing information about a change -# to UT+9 in April 1910, but then what would be the point of the later change -# to UT+9 on 1912-01-01? Omit the 1910 change for now. +# (Another source "1987: Law No. 3919 (1986-12-31)" was in the 2014-10-30 +# edition of the Korean Wikipedia entry.) # # I guessed that time zone abbreviations through 1945 followed the same # rules as discussed under Taiwan, with nominal switches from JST to KST # when the respective cities were taken over by the Allies after WWII. # -# For Pyongyang we have no information; guess no changes since World War II. +# For Pyongyang, guess no changes from World War II until 2015, as we +# have no information otherwise. # From Steffen Thorsen (2015-08-07): # According to many news sources, North Korea is going to change to @@ -1903,14 +1928,12 @@ Rule ROK 1987 1988 - Oct Sun>=8 3:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Seoul 8:27:52 - LMT 1908 Apr 1 8:30 - KST 1912 Jan 1 - 9:00 - JCST 1937 Oct 1 9:00 - JST 1945 Sep 8 9:00 - KST 1954 Mar 21 8:30 ROK K%sT 1961 Aug 10 9:00 ROK K%sT Zone Asia/Pyongyang 8:23:00 - LMT 1908 Apr 1 8:30 - KST 1912 Jan 1 - 9:00 - JCST 1937 Oct 1 9:00 - JST 1945 Aug 24 9:00 - KST 2015 Aug 15 00:00 8:30 - KST @@ -1965,30 +1988,29 @@ Rule NBorneo 1935 1941 - Dec 14 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Kuala_Lumpur 6:46:46 - LMT 1901 Jan 1 6:55:25 - SMT 1905 Jun 1 # Singapore M.T. - 7:00 - MALT 1933 Jan 1 # Malaya Time - 7:00 0:20 MALST 1936 Jan 1 - 7:20 - MALT 1941 Sep 1 - 7:30 - MALT 1942 Feb 16 - 9:00 - JST 1945 Sep 12 - 7:30 - MALT 1982 Jan 1 - 8:00 - MYT # Malaysia Time + 7:00 - +07 1933 Jan 1 + 7:00 0:20 +0720 1936 Jan 1 + 7:20 - +0720 1941 Sep 1 + 7:30 - +0730 1942 Feb 16 + 9:00 - +09 1945 Sep 12 + 7:30 - +0730 1982 Jan 1 + 8:00 - +08 # Sabah & Sarawak # From Paul Eggert (2014-08-12): # The data entries here are mostly from Shanks & Pottenger, but the 1942, 1945 # and 1982 transition dates are from Mok Ly Yng. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Kuching 7:21:20 - LMT 1926 Mar - 7:30 - BORT 1933 # Borneo Time - 8:00 NBorneo BOR%sT 1942 Feb 16 - 9:00 - JST 1945 Sep 12 - 8:00 - BORT 1982 Jan 1 - 8:00 - MYT + 7:30 - +0730 1933 + 8:00 NBorneo +08/+0820 1942 Feb 16 + 9:00 - +09 1945 Sep 12 + 8:00 - +08 # Maldives # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Indian/Maldives 4:54:00 - LMT 1880 # Male 4:54:00 - MMT 1960 # Male Mean Time - 5:00 - MVT # Maldives Time + 5:00 - +05 # Mongolia @@ -2046,7 +2068,7 @@ Zone Indian/Maldives 4:54:00 - LMT 1880 # Male # Bill Bonnet (2005-05-19) reports that the US Embassy in Ulaanbaatar says # there is only one time zone and that DST is observed, citing Microsoft # Windows XP as the source. Risto Nykänen (2005-05-16) reports that -# travelmongolia.org says there are two time zones (UTC+7, UTC+8) with no DST. +# travelmongolia.org says there are two time zones (UT +07, +08) with no DST. # Oscar van Vlijmen (2005-05-20) reports that the Mongolian Embassy in # Washington, DC says there are two time zones, with DST observed. # He also found @@ -2115,37 +2137,41 @@ Rule Mongol 1983 only - Oct 1 0:00 0 - # correction of 02:00 (in the previous edition) not being done correctly # in the latest edition; so ignore it for now. +# From Ganbold Tsagaankhuu (2017-02-09): +# Mongolian Government meeting has concluded today to cancel daylight +# saving time adoption in Mongolia. Source: http://zasag.mn/news/view/16192 + Rule Mongol 1985 1998 - Mar lastSun 0:00 1:00 S Rule Mongol 1984 1998 - Sep lastSun 0:00 0 - # IATA SSIM (1999-09) says Mongolia no longer observes DST. Rule Mongol 2001 only - Apr lastSat 2:00 1:00 S Rule Mongol 2001 2006 - Sep lastSat 2:00 0 - Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 S -Rule Mongol 2015 max - Mar lastSat 2:00 1:00 S -Rule Mongol 2015 max - Sep lastSat 0:00 0 - +Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 S +Rule Mongol 2015 2016 - Sep lastSat 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] # Hovd, a.k.a. Chovd, Dund-Us, Dzhargalant, Khovd, Jirgalanta Zone Asia/Hovd 6:06:36 - LMT 1905 Aug - 6:00 - HOVT 1978 # Hovd Time - 7:00 Mongol HOV%sT + 6:00 - +06 1978 + 7:00 Mongol +07/+08 # Ulaanbaatar, a.k.a. Ulan Bataar, Ulan Bator, Urga Zone Asia/Ulaanbaatar 7:07:32 - LMT 1905 Aug - 7:00 - ULAT 1978 # Ulaanbaatar Time - 8:00 Mongol ULA%sT + 7:00 - +07 1978 + 8:00 Mongol +08/+09 # Choibalsan, a.k.a. Bajan Tümen, Bajan Tumen, Chojbalsan, # Choybalsan, Sanbejse, Tchoibalsan Zone Asia/Choibalsan 7:38:00 - LMT 1905 Aug - 7:00 - ULAT 1978 - 8:00 - ULAT 1983 Apr - 9:00 Mongol CHO%sT 2008 Mar 31 # Choibalsan Time - 8:00 Mongol CHO%sT + 7:00 - +07 1978 + 8:00 - +08 1983 Apr + 9:00 Mongol +09/+10 2008 Mar 31 + 8:00 Mongol +08/+09 # Nepal # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Kathmandu 5:41:16 - LMT 1920 - 5:30 - IST 1986 - 5:45 - NPT # Nepal Time + 5:30 - +0530 1986 + 5:45 - +0545 # Oman # See Asia/Dubai. @@ -2294,10 +2320,10 @@ Rule Pakistan 2009 only - Apr 15 0:00 1:00 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Karachi 4:28:12 - LMT 1907 - 5:30 - IST 1942 Sep - 5:30 1:00 IST 1945 Oct 15 - 5:30 - IST 1951 Sep 30 - 5:00 - KART 1971 Mar 26 # Karachi Time + 5:30 - +0530 1942 Sep + 5:30 1:00 +0630 1945 Oct 15 + 5:30 - +0530 1951 Sep 30 + 5:00 - +05 1971 Mar 26 5:00 Pakistan PK%sT # Pakistan Time # Palestine @@ -2549,11 +2575,6 @@ Zone Asia/Karachi 4:28:12 - LMT 1907 # From Paul Eggert (2015-03-03): # http://www.timeanddate.com/time/change/west-bank/ramallah?year=2014 # says that the fall 2014 transition was Oct 23 at 24:00. -# For future dates, guess the last Friday in March at 24:00 through -# the first Friday on or after October 21 at 00:00. This is consistent with -# the predictions in today's editions of the following URLs: -# http://www.timeanddate.com/time/change/gaza-strip/gaza -# http://www.timeanddate.com/time/change/west-bank/hebron # From Hannah Kreitem (2016-03-09): # http://www.palestinecabinet.gov.ps/WebSite/ar/ViewDetails?ID=31728 @@ -2563,7 +2584,21 @@ Zone Asia/Karachi 4:28:12 - LMT 1907 # # From Paul Eggert (2016-03-12): # Predict spring transitions on March's last Saturday at 01:00 from now on. -# Leave fall predictions alone for now. + +# From Sharef Mustafa (2016-10-19): +# [T]he Palestinian cabinet decision (Mar 8th 2016) published on +# http://www.palestinecabinet.gov.ps/WebSite/Upload/Decree/GOV_17/16032016134830.pdf +# states that summer time will end on Oct 29th at 01:00. +# +# From Tim Parenti (2016-10-19): +# Predict fall transitions on October's last Saturday at 01:00 from now on. +# This is consistent with the 2016 transition as well as our spring +# predictions. +# +# From Paul Eggert (2016-10-19): +# It's also consistent with predictions in the following URLs today: +# http://www.timeanddate.com/time/change/gaza-strip/gaza +# http://www.timeanddate.com/time/change/west-bank/hebron # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule EgyptAsia 1957 only - May 10 0:00 1:00 S @@ -2592,13 +2627,14 @@ Rule Palestine 2011 only - Sep 30 0:00 0 - Rule Palestine 2012 2014 - Mar lastThu 24:00 1:00 S Rule Palestine 2012 only - Sep 21 1:00 0 - Rule Palestine 2013 only - Sep Fri>=21 0:00 0 - -Rule Palestine 2014 max - Oct Fri>=21 0:00 0 - +Rule Palestine 2014 2015 - Oct Fri>=21 0:00 0 - Rule Palestine 2015 only - Mar lastFri 24:00 1:00 S Rule Palestine 2016 max - Mar lastSat 1:00 1:00 S +Rule Palestine 2016 max - Oct lastSat 1:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Gaza 2:17:52 - LMT 1900 Oct - 2:00 Zion EET 1948 May 15 + 2:00 Zion EET/EEST 1948 May 15 2:00 EgyptAsia EE%sT 1967 Jun 5 2:00 Zion I%sT 1996 2:00 Jordan EE%sT 1999 @@ -2611,7 +2647,7 @@ Zone Asia/Gaza 2:17:52 - LMT 1900 Oct 2:00 Palestine EE%sT Zone Asia/Hebron 2:20:23 - LMT 1900 Oct - 2:00 Zion EET 1948 May 15 + 2:00 Zion EET/EEST 1948 May 15 2:00 EgyptAsia EE%sT 1967 Jun 5 2:00 Zion I%sT 1996 2:00 Jordan EE%sT 1999 @@ -2652,15 +2688,15 @@ Rule Phil 1978 only - Sep 21 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Manila -15:56:00 - LMT 1844 Dec 31 8:04:00 - LMT 1899 May 11 - 8:00 Phil PH%sT 1942 May - 9:00 - JST 1944 Nov - 8:00 Phil PH%sT + 8:00 Phil +08/+09 1942 May + 9:00 - +09 1944 Nov + 8:00 Phil +08/+09 # Qatar # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Qatar 3:26:08 - LMT 1920 # Al Dawhah / Doha - 4:00 - GST 1972 Jun - 3:00 - AST + 4:00 - +04 1972 Jun + 3:00 - +03 Link Asia/Qatar Asia/Bahrain # Saudi Arabia @@ -2682,12 +2718,12 @@ Link Asia/Qatar Asia/Bahrain # earlier date. # # Shanks & Pottenger also state that until 1968-05-01 Saudi Arabia had two -# time zones; the other zone, at UTC+4, was in the far eastern part of +# time zones; the other zone, at UT +04, was in the far eastern part of # the country. Ignore this, as it's before our 1970 cutoff. # # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Riyadh 3:06:52 - LMT 1947 Mar 14 - 3:00 - AST + 3:00 - +03 Link Asia/Riyadh Asia/Aden # Yemen Link Asia/Riyadh Asia/Kuwait @@ -2697,14 +2733,13 @@ Link Asia/Riyadh Asia/Kuwait # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Singapore 6:55:25 - LMT 1901 Jan 1 6:55:25 - SMT 1905 Jun 1 # Singapore M.T. - 7:00 - MALT 1933 Jan 1 # Malaya Time - 7:00 0:20 MALST 1936 Jan 1 - 7:20 - MALT 1941 Sep 1 - 7:30 - MALT 1942 Feb 16 - 9:00 - JST 1945 Sep 12 - 7:30 - MALT 1965 Aug 9 # independence - 7:30 - SGT 1982 Jan 1 # Singapore Time - 8:00 - SGT + 7:00 - +07 1933 Jan 1 + 7:00 0:20 +0720 1936 Jan 1 + 7:20 - +0720 1941 Sep 1 + 7:30 - +0730 1942 Feb 16 + 9:00 - +09 1945 Sep 12 + 7:30 - +0730 1982 Jan 1 + 8:00 - +08 # Spratly Is # no information @@ -2744,45 +2779,31 @@ Zone Asia/Singapore 6:55:25 - LMT 1901 Jan 1 # People who live in regions under Tamil control can use [TZ='Asia/Kolkata'], # as that zone has agreed with the Tamil areas since our cutoff date of 1970. -# From K Sethu (2006-04-25): -# I think the abbreviation LKT originated from the world of computers at -# the time of or subsequent to the time zone changes by SL Government -# twice in 1996 and probably SL Government or its standardization -# agencies never declared an abbreviation as a national standard. -# -# I recollect before the recent change the government announcements -# mentioning it as simply changing Sri Lanka Standard Time or Sri Lanka -# Time and no mention was made about the abbreviation. -# -# If we look at Sri Lanka Department of Government's "Official News -# Website of Sri Lanka" ... http://www.news.lk/ we can see that they -# use SLT as abbreviation in time stamp at the beginning of each news -# item.... -# -# Within Sri Lanka I think LKT is well known among computer users and -# administrators. In my opinion SLT may not be a good choice because the -# nation's largest telcom / internet operator Sri Lanka Telcom is well -# known by that abbreviation - simply as SLT (there IP domains are -# slt.lk and sltnet.lk). -# -# But if indeed our government has adopted SLT as standard abbreviation -# (that we have not known so far) then it is better that it be used for -# all computers. - -# From Paul Eggert (2006-04-25): -# One possibility is that we wait for a bit for the dust to settle down -# and then see what people actually say in practice. +# From Sadika Sumanapala (2016-10-19): +# According to http://www.sltime.org (maintained by Measurement Units, +# Standards & Services Department, Sri Lanka) abbreviation for Sri Lanka +# standard time is SLST. +# +# From Paul Eggert (2016-10-18): +# "SLST" seems to be reasonably recent and rarely-used outside time +# zone nerd sources. I searched Google News and found three uses of +# it in the International Business Times of India in February and +# March of this year when discussing cricket match times, but nothing +# since then (though there has been a lot of cricket) and nothing in +# other English-language news sources. Our old abbreviation "LKT" is +# even worse. For now, let's use a numeric abbreviation; we can +# switch to "SLST" if it catches on. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Colombo 5:19:24 - LMT 1880 5:19:32 - MMT 1906 # Moratuwa Mean Time - 5:30 - IST 1942 Jan 5 - 5:30 0:30 IHST 1942 Sep - 5:30 1:00 IST 1945 Oct 16 2:00 - 5:30 - IST 1996 May 25 0:00 - 6:30 - LKT 1996 Oct 26 0:30 - 6:00 - LKT 2006 Apr 15 0:30 - 5:30 - IST + 5:30 - +0530 1942 Jan 5 + 5:30 0:30 +06 1942 Sep + 5:30 1:00 +0630 1945 Oct 16 2:00 + 5:30 - +0530 1996 May 25 0:00 + 6:30 - +0630 1996 Oct 26 0:30 + 6:00 - +06 2006 Apr 15 0:30 + 5:30 - +0530 # Syria # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S @@ -2951,16 +2972,16 @@ Zone Asia/Damascus 2:25:12 - LMT 1920 # Dimashq # From Shanks & Pottenger. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Dushanbe 4:35:12 - LMT 1924 May 2 - 5:00 - DUST 1930 Jun 21 # Dushanbe Time - 6:00 RussiaAsia DUS%sT 1991 Mar 31 2:00s - 5:00 1:00 DUSST 1991 Sep 9 2:00s - 5:00 - TJT # Tajikistan Time + 5:00 - +05 1930 Jun 21 + 6:00 RussiaAsia +06/+07 1991 Mar 31 2:00s + 5:00 1:00 +05/+06 1991 Sep 9 2:00s + 5:00 - +05 # Thailand # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Bangkok 6:42:04 - LMT 1880 6:42:04 - BMT 1920 Apr # Bangkok Mean Time - 7:00 - ICT + 7:00 - +07 Link Asia/Bangkok Asia/Phnom_Penh # Cambodia Link Asia/Bangkok Asia/Vientiane # Laos @@ -2968,36 +2989,33 @@ Link Asia/Bangkok Asia/Vientiane # Laos # From Shanks & Pottenger. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Ashgabat 3:53:32 - LMT 1924 May 2 # or Ashkhabad - 4:00 - ASHT 1930 Jun 21 # Ashkhabad Time - 5:00 RussiaAsia ASH%sT 1991 Mar 31 2:00 - 4:00 RussiaAsia ASH%sT 1991 Oct 27 # independence - 4:00 RussiaAsia TM%sT 1992 Jan 19 2:00 - 5:00 - TMT + 4:00 - +04 1930 Jun 21 + 5:00 RussiaAsia +05/+06 1991 Mar 31 2:00 + 4:00 RussiaAsia +04/+05 1992 Jan 19 2:00 + 5:00 - +05 # United Arab Emirates # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Dubai 3:41:12 - LMT 1920 - 4:00 - GST + 4:00 - +04 Link Asia/Dubai Asia/Muscat # Oman # Uzbekistan # Byalokoz 1919 says Uzbekistan was 4:27:53. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Samarkand 4:27:53 - LMT 1924 May 2 - 4:00 - SAMT 1930 Jun 21 # Samarkand Time - 5:00 - SAMT 1981 Apr 1 - 5:00 1:00 SAMST 1981 Oct 1 - 6:00 - TAST 1982 Apr 1 # Tashkent Time - 5:00 RussiaAsia SAM%sT 1991 Sep 1 # independence - 5:00 RussiaAsia UZ%sT 1992 - 5:00 - UZT + 4:00 - +04 1930 Jun 21 + 5:00 - +05 1981 Apr 1 + 5:00 1:00 +06 1981 Oct 1 + 6:00 - +06 1982 Apr 1 + 5:00 RussiaAsia +05/+06 1992 + 5:00 - +05 # Milne says Tashkent was 4:37:10.8; round to nearest. Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2 - 5:00 - TAST 1930 Jun 21 # Tashkent Time - 6:00 RussiaAsia TAS%sT 1991 Mar 31 2:00 - 5:00 RussiaAsia TAS%sT 1991 Sep 1 # independence - 5:00 RussiaAsia UZ%sT 1992 - 5:00 - UZT + 5:00 - +05 1930 Jun 21 + 6:00 RussiaAsia +06/+07 1991 Mar 31 2:00 + 5:00 RussiaAsia +05/+06 1992 + 5:00 - +05 # Vietnam @@ -3052,15 +3070,15 @@ Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2 # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Ho_Chi_Minh 7:06:40 - LMT 1906 Jul 1 - 7:06:30 - PLMT 1911 May 1 - 7:00 - ICT 1942 Dec 31 23:00 - 8:00 - IDT 1945 Mar 14 23:00 - 9:00 - JST 1945 Sep 2 - 7:00 - ICT 1947 Apr 1 - 8:00 - IDT 1955 Jul 1 - 7:00 - ICT 1959 Dec 31 23:00 - 8:00 - IDT 1975 Jun 13 - 7:00 - ICT + 7:06:30 - PLMT 1911 May 1 # Phù Liá»…n MT + 7:00 - +07 1942 Dec 31 23:00 + 8:00 - +08 1945 Mar 14 23:00 + 9:00 - +09 1945 Sep 2 + 7:00 - +07 1947 Apr 1 + 8:00 - +08 1955 Jul 1 + 7:00 - +07 1959 Dec 31 23:00 + 8:00 - +08 1975 Jun 13 + 7:00 - +07 # Yemen # See Asia/Riyadh. diff --git a/src/timezone/data/australasia b/src/timezone/data/australasia index 0b33f67ed4..d389ae134a 100644 --- a/src/timezone/data/australasia +++ b/src/timezone/data/australasia @@ -44,8 +44,8 @@ Zone Australia/Perth 7:43:24 - LMT 1895 Dec 8:00 Aus AW%sT 1943 Jul 8:00 AW AW%sT Zone Australia/Eucla 8:35:28 - LMT 1895 Dec - 8:45 Aus ACW%sT 1943 Jul - 8:45 AW ACW%sT + 8:45 Aus +0845/+0945 1943 Jul + 8:45 AW +0845/+0945 # Queensland # @@ -212,7 +212,8 @@ Rule LH 2008 max - Apr Sun>=1 2:00 0 S Rule LH 2008 max - Oct Sun>=1 2:00 0:30 D Zone Australia/Lord_Howe 10:36:20 - LMT 1895 Feb 10:00 - AEST 1981 Mar - 10:30 LH LH%sT + 10:30 LH +1030/+1130 1985 Jul + 10:30 LH +1030/+11 # Australian miscellany # @@ -250,19 +251,19 @@ Zone Antarctica/Macquarie 0 - -00 1899 Nov 0 - -00 1948 Mar 25 10:00 Aus AE%sT 1967 10:00 AT AE%sT 2010 Apr 4 3:00 - 11:00 - MIST # Macquarie I Standard Time + 11:00 - +11 # Christmas # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Indian/Christmas 7:02:52 - LMT 1895 Feb - 7:00 - CXT # Christmas Island Time + 7:00 - +07 # Cocos (Keeling) Is # These islands were ruled by the Ross family from about 1830 to 1978. # We don't know when standard time was introduced; for now, we guess 1900. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Indian/Cocos 6:27:40 - LMT 1900 - 6:30 - CCT # Cocos Islands Time + 6:30 - +0630 # Fiji @@ -350,7 +351,13 @@ Zone Indian/Cocos 6:27:40 - LMT 1900 # commencing at 2.00 am on Sunday 1st November, 2015 and ending at # 3.00 am on Sunday 17th January, 2016. -# From Paul Eggert (2015-09-01): +# From Raymond Kumar (2016-10-04): +# http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVING-STARTS-ON-6th-NOVEMBER,-2016.aspx +# "Fiji's daylight savings will begin on Sunday, 6 November 2016, when +# clocks go forward an hour at 2am to 3am.... Daylight Saving will +# end at 3.00am on Sunday 15th January 2017." + +# From Paul Eggert (2016-10-03): # For now, guess DST from 02:00 the first Sunday in November to # 03:00 the third Sunday in January. Although ad hoc, it matches # transitions since late 2014 and seems more likely to match future @@ -369,16 +376,16 @@ Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 S Rule Fiji 2015 max - Jan Sun>=15 3:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva - 12:00 Fiji FJ%sT # Fiji Time + 12:00 Fiji +12/+13 # French Polynesia # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Gambier -8:59:48 - LMT 1912 Oct # Rikitea - -9:00 - GAMT # Gambier Time + -9:00 - -09 Zone Pacific/Marquesas -9:18:00 - LMT 1912 Oct - -9:30 - MART # Marquesas Time + -9:30 - -0930 Zone Pacific/Tahiti -9:58:16 - LMT 1912 Oct # Papeete - -10:00 - TAHT # Tahiti Time + -10:00 - -10 # Clipperton (near North America) is administered from French Polynesia; # it is uninhabited. @@ -393,15 +400,15 @@ Link Pacific/Guam Pacific/Saipan # N Mariana Is # Kiribati # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Tarawa 11:32:04 - LMT 1901 # Bairiki - 12:00 - GILT # Gilbert Is Time + 12:00 - +12 Zone Pacific/Enderbury -11:24:20 - LMT 1901 - -12:00 - PHOT 1979 Oct # Phoenix Is Time - -11:00 - PHOT 1995 - 13:00 - PHOT + -12:00 - -12 1979 Oct + -11:00 - -11 1995 + 13:00 - +13 Zone Pacific/Kiritimati -10:29:20 - LMT 1901 - -10:40 - LINT 1979 Oct # Line Is Time - -10:00 - LINT 1995 - 14:00 - LINT + -10:40 - -1040 1979 Oct + -10:00 - -10 1995 + 14:00 - +14 # N Mariana Is # See Pacific/Guam. @@ -409,31 +416,31 @@ Zone Pacific/Kiritimati -10:29:20 - LMT 1901 # Marshall Is # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Majuro 11:24:48 - LMT 1901 - 11:00 - MHT 1969 Oct # Marshall Islands Time - 12:00 - MHT + 11:00 - +11 1969 Oct + 12:00 - +12 Zone Pacific/Kwajalein 11:09:20 - LMT 1901 - 11:00 - MHT 1969 Oct - -12:00 - KWAT 1993 Aug 20 # Kwajalein Time - 12:00 - MHT + 11:00 - +11 1969 Oct + -12:00 - -12 1993 Aug 20 + 12:00 - +12 # Micronesia # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Chuuk 10:07:08 - LMT 1901 - 10:00 - CHUT # Chuuk Time + 10:00 - +10 Zone Pacific/Pohnpei 10:32:52 - LMT 1901 # Kolonia - 11:00 - PONT # Pohnpei Time + 11:00 - +11 Zone Pacific/Kosrae 10:51:56 - LMT 1901 - 11:00 - KOST 1969 Oct # Kosrae Time - 12:00 - KOST 1999 - 11:00 - KOST + 11:00 - +11 1969 Oct + 12:00 - +12 1999 + 11:00 - +11 # Nauru # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Nauru 11:07:40 - LMT 1921 Jan 15 # Uaobe - 11:30 - NRT 1942 Mar 15 # Nauru Time - 9:00 - JST 1944 Aug 15 - 11:30 - NRT 1979 May - 12:00 - NRT + 11:30 - +1130 1942 Mar 15 + 9:00 - +09 1944 Aug 15 + 11:30 - +1130 1979 May + 12:00 - +12 # New Caledonia # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S @@ -444,7 +451,7 @@ Rule NC 1996 only - Dec 1 2:00s 1:00 S Rule NC 1997 only - Mar 2 2:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Noumea 11:05:48 - LMT 1912 Jan 13 # Nouméa - 11:00 NC NC%sT + 11:00 NC +11/+12 ############################################################################### @@ -485,8 +492,8 @@ Zone Pacific/Auckland 11:39:04 - LMT 1868 Nov 2 11:30 NZ NZ%sT 1946 Jan 1 12:00 NZ NZ%sT Zone Pacific/Chatham 12:13:48 - LMT 1868 Nov 2 - 12:15 - CHAST 1946 Jan 1 - 12:45 Chatham CHA%sT + 12:15 - +1215 1946 Jan 1 + 12:45 Chatham +1245/+1345 Link Pacific/Auckland Antarctica/McMurdo @@ -508,8 +515,8 @@ Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 - Rule Cook 1979 1990 - Oct lastSun 0:00 0:30 HS # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Rarotonga -10:39:04 - LMT 1901 # Avarua - -10:30 - CKT 1978 Nov 12 # Cook Is Time - -10:00 Cook CK%sT + -10:30 - -1030 1978 Nov 12 + -10:00 Cook -10/-0930 ############################################################################### @@ -517,35 +524,35 @@ Zone Pacific/Rarotonga -10:39:04 - LMT 1901 # Avarua # Niue # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Niue -11:19:40 - LMT 1901 # Alofi - -11:20 - NUT 1951 # Niue Time - -11:30 - NUT 1978 Oct 1 - -11:00 - NUT + -11:20 - -1120 1951 + -11:30 - -1130 1978 Oct 1 + -11:00 - -11 # Norfolk # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Norfolk 11:11:52 - LMT 1901 # Kingston - 11:12 - NMT 1951 # Norfolk Mean Time - 11:30 - NFT 1974 Oct 27 02:00 # Norfolk T. - 11:30 1:00 NFST 1975 Mar 2 02:00 - 11:30 - NFT 2015 Oct 4 02:00 - 11:00 - NFT + 11:12 - +1112 1951 + 11:30 - +1130 1974 Oct 27 02:00 + 11:30 1:00 +1230 1975 Mar 2 02:00 + 11:30 - +1130 2015 Oct 4 02:00 + 11:00 - +11 # Palau (Belau) # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Palau 8:57:56 - LMT 1901 # Koror - 9:00 - PWT # Palau Time + 9:00 - +09 # Papua New Guinea # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Port_Moresby 9:48:40 - LMT 1880 9:48:32 - PMMT 1895 # Port Moresby Mean Time - 10:00 - PGT # Papua New Guinea Time + 10:00 - +10 # # From Paul Eggert (2014-10-13): # Base the Bougainville entry on the Arawa-Kieta region, which appears to have # the most people even though it was devastated in the Bougainville Civil War. # -# Although Shanks gives 1942-03-15 / 1943-11-01 for JST, these dates +# Although Shanks gives 1942-03-15 / 1943-11-01 for UT +09, these dates # are apparently rough guesswork from the starts of military campaigns. # The World War II entries below are instead based on Arawa-Kieta. # The Japanese occupied Kieta in July 1942, @@ -553,29 +560,27 @@ Zone Pacific/Port_Moresby 9:48:40 - LMT 1880 # http://pwencycl.kgbudge.com/B/o/Bougainville.htm # and seem to have controlled it until their 1945-08-21 surrender. # -# The Autonomous Region of Bougainville plans to switch from UTC+10 to UTC+11 -# on 2014-12-28 at 02:00. They call UTC+11 "Bougainville Standard Time"; -# abbreviate this as BST. See: +# The Autonomous Region of Bougainville switched from UT +10 to +11 +# on 2014-12-28 at 02:00. They call +11 "Bougainville Standard Time". +# See: # http://www.bougainville24.com/bougainville-issues/bougainville-gets-own-timezone/ # Zone Pacific/Bougainville 10:22:16 - LMT 1880 9:48:32 - PMMT 1895 - 10:00 - PGT 1942 Jul - 9:00 - JST 1945 Aug 21 - 10:00 - PGT 2014 Dec 28 2:00 - 11:00 - BST + 10:00 - +10 1942 Jul + 9:00 - +09 1945 Aug 21 + 10:00 - +10 2014 Dec 28 2:00 + 11:00 - +11 # Pitcairn # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Pitcairn -8:40:20 - LMT 1901 # Adamstown - -8:30 - PNT 1998 Apr 27 0:00 - -8:00 - PST # Pitcairn Standard Time + -8:30 - -0830 1998 Apr 27 0:00 + -8:00 - -08 # American Samoa Zone Pacific/Pago_Pago 12:37:12 - LMT 1879 Jul 5 -11:22:48 - LMT 1911 - -11:00 - NST 1967 Apr # N=Nome - -11:00 - BST 1983 Nov 30 # B=Bering -11:00 - SST # S=Samoa Link Pacific/Pago_Pago Pacific/Midway # in US minor outlying islands @@ -620,7 +625,7 @@ Link Pacific/Pago_Pago Pacific/Midway # in US minor outlying islands # From Paul Eggert (2014-06-27): # The International Date Line Act 2011 # http://www.parliament.gov.ws/images/ACTS/International_Date_Line_Act__2011_-_Eng.pdf -# changed Samoa from UTC-11 to UTC+13, effective "12 o'clock midnight, on +# changed Samoa from UT -11 to +13, effective "12 o'clock midnight, on # Thursday 29th December 2011". The International Date Line was adjusted # accordingly. @@ -656,17 +661,17 @@ Rule WS 2012 max - Sep lastSun 3:00 1 D # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Apia 12:33:04 - LMT 1879 Jul 5 -11:26:56 - LMT 1911 - -11:30 - WSST 1950 - -11:00 WS S%sT 2011 Dec 29 24:00 # S=Samoa - 13:00 WS WS%sT + -11:30 - -1130 1950 + -11:00 WS -11/-10 2011 Dec 29 24:00 + 13:00 WS +13/+14 # Solomon Is # excludes Bougainville, for which see Papua New Guinea # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Guadalcanal 10:39:48 - LMT 1912 Oct # Honiara - 11:00 - SBT # Solomon Is Time + 11:00 - +11 -# Tokelau Is +# Tokelau # # From Gwillim Law (2011-12-29) # A correspondent informed me that Tokelau, like Samoa, will be skipping @@ -687,8 +692,8 @@ Zone Pacific/Guadalcanal 10:39:48 - LMT 1912 Oct # Honiara # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Fakaofo -11:24:56 - LMT 1901 - -11:00 - TKT 2011 Dec 30 # Tokelau Time - 13:00 - TKT + -11:00 - -11 2011 Dec 30 + 13:00 - +13 # Tonga # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S @@ -696,16 +701,18 @@ Rule Tonga 1999 only - Oct 7 2:00s 1:00 S Rule Tonga 2000 only - Mar 19 2:00s 0 - Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 S Rule Tonga 2001 2002 - Jan lastSun 2:00 0 - +Rule Tonga 2016 max - Nov Sun>=1 2:00 1:00 S +Rule Tonga 2017 max - Jan Sun>=15 3:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Tongatapu 12:19:20 - LMT 1901 - 12:20 - TOT 1941 # Tonga Time - 13:00 - TOT 1999 - 13:00 Tonga TO%sT + 12:20 - +1220 1941 + 13:00 - +13 1999 + 13:00 Tonga +13/+14 # Tuvalu # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Funafuti 11:56:52 - LMT 1901 - 12:00 - TVT # Tuvalu Time + 12:00 - +12 # US minor outlying islands @@ -715,7 +722,7 @@ Zone Pacific/Funafuti 11:56:52 - LMT 1901 # 1886-1891; Baker was similar but exact dates are not known. # Inhabited by civilians 1935-1942; U.S. military bases 1943-1944; # uninhabited thereafter. -# Howland observed Hawaii Standard Time (UT-10:30) in 1937; +# Howland observed Hawaii Standard Time (UT -10:30) in 1937; # see page 206 of Elgen M. Long and Marie K. Long, # Amelia Earhart: the Mystery Solved, Simon & Schuster (2000). # So most likely Howland and Baker observed Hawaii Time from 1935 @@ -729,10 +736,11 @@ Zone Pacific/Funafuti 11:56:52 - LMT 1901 # Johnston # -# From Paul Eggert (2014-03-11): +# From Paul Eggert (2017-02-10): # Sometimes Johnston kept Hawaii time, and sometimes it was an hour behind. # Details are uncertain. We have no data for Johnston after 1970, so -# treat it like Hawaii for now. +# treat it like Hawaii for now. Since Johnston is now uninhabited, +# its link to Pacific/Honolulu is in the 'backward' file. # # In his memoirs of June 6th to October 4, 1945 # (2005), Herbert C. Bach writes, @@ -752,8 +760,6 @@ Zone Pacific/Funafuti 11:56:52 - LMT 1901 # See the table on page 4 where he lists GMT and local times for the tests; a # footnote for the JI tests reads that local time is "JI time = Hawaii Time # Minus One Hour". -# -# See 'northamerica' for Pacific/Johnston. # Kingman # uninhabited @@ -767,7 +773,7 @@ Zone Pacific/Funafuti 11:56:52 - LMT 1901 # Wake # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Wake 11:06:28 - LMT 1901 - 12:00 - WAKT # Wake Time + 12:00 - +12 # Vanuatu @@ -780,12 +786,12 @@ Rule Vanuatu 1992 1993 - Jan Sun>=23 0:00 0 - Rule Vanuatu 1992 only - Oct Sun>=23 0:00 1:00 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila - 11:00 Vanuatu VU%sT # Vanuatu Time + 11:00 Vanuatu +11/+12 # Wallis and Futuna # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Wallis 12:15:20 - LMT 1901 - 12:00 - WFT # Wallis & Futuna Time + 12:00 - +12 ############################################################################### @@ -796,15 +802,15 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # tz@iana.org for general use in the future). For more, please see # the file CONTRIBUTING in the tz distribution. -# From Paul Eggert (2014-10-31): +# From Paul Eggert (2017-02-10): # # Unless otherwise specified, the source for data through 1990 is: # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition), # San Diego: ACS Publications, Inc. (2003). # Unfortunately this book contains many errors and cites no sources. # -# Gwillim Law writes that a good source -# for recent time zone data is the International Air Transport +# Many years ago Gwillim Law wrote that a good source +# for time zone data was the International Air Transport # Association's Standard Schedules Information Manual (IATA SSIM), # published semiannually. Law sent in several helpful summaries # of the IATA's data after 1990. Except where otherwise noted, @@ -821,28 +827,19 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # A reliable and entertaining source about time zones is # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997). # -# I invented the abbreviations marked '*' in the following table; -# the rest are from earlier versions of this file, or from other sources. +# The following abbreviations are from other sources. # Corrections are welcome! # std dst # LMT Local Mean Time # 8:00 AWST AWDT Western Australia -# 8:45 ACWST ACWDT Central Western Australia* -# 9:00 JST Japan # 9:30 ACST ACDT Central Australia # 10:00 AEST AEDT Eastern Australia +# 10:00 GST Guam through 2000 # 10:00 ChST Chamorro -# 10:30 LHST LHDT Lord Howe* -# 11:00 BST Bougainville* # 11:30 NZMT NZST New Zealand through 1945 # 12:00 NZST NZDT New Zealand 1946-present -# 12:15 CHAST Chatham through 1945* -# 12:45 CHAST CHADT Chatham 1946-present* -# 13:00 WSST WSDT (western) Samoa 2011-present* -# -11:30 WSST Western Samoa through 1950* # -11:00 SST Samoa # -10:00 HST Hawaii -# - 8:00 PST Pitcairn* # # See the 'northamerica' file for Hawaii. # See the 'southamerica' file for Easter I and the Galápagos Is. @@ -1473,7 +1470,7 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # Zealand time. I understand that is the time they keep locally, anyhow." # For now, assume this practice goes back to the introduction of standard time # in New Zealand, as this would make Chatham Islands time almost exactly match -# LMT back when New Zealand was at UTC+11:30; also, assume Chatham Islands did +# LMT back when New Zealand was at UT +11:30; also, assume Chatham Islands did # not observe New Zealand's prewar DST. ############################################################################### @@ -1529,7 +1526,7 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # For now, we assume the Ladrones switched at the same time as the Philippines; # see Asia/Manila. -# US Public Law 106-564 (2000-12-23) made UTC+10 the official standard time, +# US Public Law 106-564 (2000-12-23) made UT +10 the official standard time, # under the name "Chamorro Standard Time". There is no official abbreviation, # but Congressman Robert A. Underwood, author of the bill that became law, # wrote in a press release (2000-12-27) that he will seek the use of "ChST". @@ -1541,15 +1538,15 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # "I am certain, having lived there for the past decade, that 'Truk' # (now properly known as Chuuk) ... is in the time zone GMT+10." # -# Shanks & Pottenger write that Truk switched from UTC+10 to UTC+11 +# Shanks & Pottenger write that Truk switched from UT +10 to +11 # on 1978-10-01; ignore this for now. # From Paul Eggert (1999-10-29): # The Federated States of Micronesia Visitors Board writes in # The Federated States of Micronesia - Visitor Information (1999-01-26) # http://www.fsmgov.org/info/clocks.html -# that Truk and Yap are UTC+10, and Ponape and Kosrae are UTC+11. -# We don't know when Kosrae switched from UTC+12; assume January 1 for now. +# that Truk and Yap are UT +10, and Ponape and Kosrae are +11. +# We don't know when Kosrae switched from +12; assume January 1 for now. # Midway @@ -1615,11 +1612,11 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # ordaining - by a masterpiece of diplomatic flattery - that # the Fourth of July should be celebrated twice in that year." -# Although Shanks & Pottenger says they both switched to UTC-11:30 -# in 1911, and to UTC-11 in 1950. many earlier sources give UTC-11 +# Although Shanks & Pottenger says they both switched to UT -11:30 +# in 1911, and to -11 in 1950. many earlier sources give -11 # for American Samoa, e.g., the US National Bureau of Standards # circular "Standard Time Throughout the World", 1932. -# Assume American Samoa switched to UTC-11 in 1911, not 1950, +# Assume American Samoa switched to -11 in 1911, not 1950, # and that after 1950 they agreed until (western) Samoa skipped a # day in 2011. Assume also that the Samoas follow the US and New # Zealand's "ST"/"DT" style of daylight-saving abbreviations. @@ -1706,9 +1703,17 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # of January the standard time in the Kingdom shall be moved backward by one # hour to 1:00am. -# From Pulu 'Anau (2002-11-05): +# From Pulu Ê»Anau (2002-11-05): # The law was for 3 years, supposedly to get renewed. It wasn't. +# From Pulu Ê»Anau (2016-10-27): +# http://mic.gov.to/news-today/press-releases/6375-daylight-saving-set-to-run-from-6-november-2016-to-15-january-2017 +# Cannot find anyone who knows the rules, has seen the duration or has seen +# the cabinet decision, but it appears we are following Fiji's rule set. +# +# From Tim Parenti (2016-10-26): +# Assume Tonga will observe DST from the first Sunday in November at 02:00 +# through the third Sunday in January at 03:00, like Fiji, for now. # Wake diff --git a/src/timezone/data/backward b/src/timezone/data/backward index aab237a5e2..09f2a31b68 100644 --- a/src/timezone/data/backward +++ b/src/timezone/data/backward @@ -36,6 +36,7 @@ Link Asia/Shanghai Asia/Harbin Link Asia/Urumqi Asia/Kashgar Link Asia/Kathmandu Asia/Katmandu Link Asia/Macau Asia/Macao +Link Asia/Yangon Asia/Rangoon Link Asia/Ho_Chi_Minh Asia/Saigon Link Asia/Jerusalem Asia/Tel_Aviv Link Asia/Thimphu Asia/Thimbu @@ -95,6 +96,7 @@ Link Pacific/Auckland NZ Link Pacific/Chatham NZ-CHAT Link America/Denver Navajo Link Asia/Shanghai PRC +Link Pacific/Honolulu Pacific/Johnston Link Pacific/Pohnpei Pacific/Ponape Link Pacific/Pago_Pago Pacific/Samoa Link Pacific/Chuuk Pacific/Truk diff --git a/src/timezone/data/backzone b/src/timezone/data/backzone index 13dc8d4d13..9ce78316c2 100644 --- a/src/timezone/data/backzone +++ b/src/timezone/data/backzone @@ -65,7 +65,7 @@ Link Africa/Asmara Africa/Asmera # Mali (southern) Zone Africa/Bamako -0:32:00 - LMT 1912 0:00 - GMT 1934 Feb 26 - -1:00 - WAT 1960 Jun 20 + -1:00 - -01 1960 Jun 20 0:00 - GMT # Central African Republic @@ -75,7 +75,7 @@ Zone Africa/Bangui 1:14:20 - LMT 1912 # Gambia Zone Africa/Banjul -1:06:36 - LMT 1912 -1:06:36 - BMT 1935 # Banjul Mean Time - -1:00 - WAT 1964 + -1:00 - -01 1964 0:00 - GMT # Malawi @@ -93,18 +93,18 @@ Zone Africa/Bujumbura 1:57:28 - LMT 1890 # Guinea Zone Africa/Conakry -0:54:52 - LMT 1912 0:00 - GMT 1934 Feb 26 - -1:00 - WAT 1960 + -1:00 - -01 1960 0:00 - GMT # Senegal Zone Africa/Dakar -1:09:44 - LMT 1912 - -1:00 - WAT 1941 Jun + -1:00 - -01 1941 Jun 0:00 - GMT # Tanzania Zone Africa/Dar_es_Salaam 2:37:08 - LMT 1931 3:00 - EAT 1948 - 2:45 - BEAUT 1961 + 2:45 - +0245 1961 3:00 - EAT # Djibouti @@ -122,14 +122,14 @@ Zone Africa/Douala 0:38:48 - LMT 1912 # The International Hydrographic Bulletin, 1932-33, p 63 says that # Sierra Leone would advance its clocks by 20 minutes on 1933-10-01. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule SL 1935 1942 - Jun 1 0:00 0:40 SLST -Rule SL 1935 1942 - Oct 1 0:00 0 WAT -Rule SL 1957 1962 - Jun 1 0:00 1:00 SLST +Rule SL 1935 1942 - Jun 1 0:00 0:40 -0020 +Rule SL 1935 1942 - Oct 1 0:00 0 -01 +Rule SL 1957 1962 - Jun 1 0:00 1:00 +01 Rule SL 1957 1962 - Sep 1 0:00 0 GMT Zone Africa/Freetown -0:53:00 - LMT 1882 -0:53:00 - FMT 1913 Jun # Freetown Mean Time -1:00 SL %s 1957 - 0:00 SL %s + 0:00 SL GMT/+01 # Botswana # From Paul Eggert (2013-02-21): @@ -153,8 +153,8 @@ Zone Africa/Juba 2:06:24 - LMT 1931 # Uganda Zone Africa/Kampala 2:09:40 - LMT 1928 Jul 3:00 - EAT 1930 - 2:30 - BEAT 1948 - 2:45 - BEAUT 1957 + 2:30 - +0230 1948 + 2:45 - +0245 1957 3:00 - EAT # Rwanda @@ -177,11 +177,11 @@ Zone Africa/Lome 0:04:52 - LMT 1893 # # Shanks gives 1911-05-26 for the transition to WAT, # evidently confusing the date of the Portuguese decree -# http://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf +# https://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf # with the date that it took effect, namely 1912-01-01. # Zone Africa/Luanda 0:52:56 - LMT 1892 - 0:52:04 - AOT 1912 Jan 1 # Angola Time + 0:52:04 - +005204 1912 Jan 1 1:00 - WAT # Democratic Republic of the Congo (east) @@ -194,9 +194,9 @@ Zone Africa/Lusaka 1:53:08 - LMT 1903 Mar # Equatorial Guinea # -# Although Shanks says that Malabo switched from UTC to UTC+1 on 1963-12-15, +# Although Shanks says that Malabo switched from UT +00 to +01 on 1963-12-15, # a Google Books search says that London Calling, Issues 432-465 (1948), p 19, -# says that Spanish Guinea was at GMT+1 back then. The Shanks data entries +# says that Spanish Guinea was at +01 back then. The Shanks data entries # are most likely wrong, but we have nothing better; use them here for now. # Zone Africa/Malabo 0:35:08 - LMT 1912 @@ -216,19 +216,19 @@ Zone Africa/Mbabane 2:04:24 - LMT 1903 Mar # Somalia Zone Africa/Mogadishu 3:01:28 - LMT 1893 Nov 3:00 - EAT 1931 - 2:30 - BEAT 1957 + 2:30 - +0230 1957 3:00 - EAT # Niger Zone Africa/Niamey 0:08:28 - LMT 1912 - -1:00 - WAT 1934 Feb 26 + -1:00 - -01 1934 Feb 26 0:00 - GMT 1960 1:00 - WAT # Mauritania Zone Africa/Nouakchott -1:03:48 - LMT 1912 0:00 - GMT 1934 Feb 26 - -1:00 - WAT 1960 Nov 28 + -1:00 - -01 1960 Nov 28 0:00 - GMT # Burkina Faso @@ -264,19 +264,19 @@ Zone America/Antigua -4:07:12 - LMT 1912 Mar 2 # The name "Comodoro Rivadavia" exceeds the 14-byte POSIX limit. Zone America/Argentina/ComodRivadavia -4:30:00 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May - -4:00 - ART 1930 Dec - -4:00 Arg AR%sT 1969 Oct 5 - -3:00 Arg AR%sT 1991 Mar 3 - -4:00 - WART 1991 Oct 20 - -3:00 Arg AR%sT 1999 Oct 3 - -4:00 Arg AR%sT 2000 Mar 3 - -3:00 - ART 2004 Jun 1 - -4:00 - WART 2004 Jun 20 - -3:00 - ART + -4:00 - -04 1930 Dec + -4:00 Arg -04/-03 1969 Oct 5 + -3:00 Arg -03/-02 1991 Mar 3 + -4:00 - -04 1991 Oct 20 + -3:00 Arg -03/-02 1999 Oct 3 + -4:00 Arg -04/-03 2000 Mar 3 + -3:00 - -03 2004 Jun 1 + -4:00 - -04 2004 Jun 20 + -3:00 - -03 # Aruba Zone America/Aruba -4:40:24 - LMT 1912 Feb 12 # Oranjestad - -4:30 - ANT 1965 # Netherlands Antilles Time + -4:30 - -0430 1965 -4:00 - AST # Cayman Is @@ -365,12 +365,12 @@ Zone America/Montserrat -4:08:52 - LMT 1911 Jul 1 0:01 # Cork Hill # Formosa (FM), La Pampa (LP), Chubut (CH) Zone America/Rosario -4:02:40 - LMT 1894 Nov -4:16:44 - CMT 1920 May - -4:00 - ART 1930 Dec - -4:00 Arg AR%sT 1969 Oct 5 - -3:00 Arg AR%sT 1991 Jul - -3:00 - ART 1999 Oct 3 0:00 - -4:00 Arg AR%sT 2000 Mar 3 0:00 - -3:00 - ART + -4:00 - -04 1930 Dec + -4:00 Arg -04/-03 1969 Oct 5 + -3:00 Arg -03/-02 1991 Jul + -3:00 - -03 1999 Oct 3 0:00 + -4:00 Arg -04/-03 2000 Mar 3 0:00 + -3:00 - -03 # St Kitts-Nevis Zone America/St_Kitts -4:10:52 - LMT 1912 Mar 2 # Basseterre @@ -403,12 +403,12 @@ Link Antarctica/McMurdo Antarctica/South_Pole # Milne says 2:59:54 was the meridian of the saluting battery at Aden, # and that Yemen was at 1:55:56, the meridian of the Hagia Sophia. Zone Asia/Aden 2:59:54 - LMT 1950 - 3:00 - AST + 3:00 - +03 # Bahrain Zone Asia/Bahrain 3:22:20 - LMT 1920 # Manamah - 4:00 - GST 1972 Jun - 3:00 - AST + 4:00 - +04 1972 Jun + 3:00 - +03 # India # @@ -431,7 +431,7 @@ Zone Asia/Bahrain 3:22:20 - LMT 1920 # Manamah # counties Deqing, Enping, Kaiping, Luoding, Taishan, Xinxing, # Yangchun, Yangjiang, Yu'nan, and Yunfu. Zone Asia/Chongqing 7:06:20 - LMT 1928 # or Chungking - 7:00 - LONT 1980 May # Long-shu Time + 7:00 - +07 1980 May 8:00 PRC C%sT Link Asia/Chongqing Asia/Chungking @@ -442,61 +442,61 @@ Link Asia/Chongqing Asia/Chungking # October 1954, with exact date and time unspecified. Zone Asia/Hanoi 7:03:24 - LMT 1906 Jul 1 7:06:30 - PLMT 1911 May 1 - 7:00 - ICT 1942 Dec 31 23:00 - 8:00 - IDT 1945 Mar 14 23:00 - 9:00 - JST 1945 Sep 2 - 7:00 - ICT 1947 Apr 1 - 8:00 - IDT 1954 Oct - 7:00 - ICT + 7:00 - +07 1942 Dec 31 23:00 + 8:00 - +08 1945 Mar 14 23:00 + 9:00 - +09 1945 Sep 2 + 7:00 - +07 1947 Apr 1 + 8:00 - +08 1954 Oct + 7:00 - +07 # China # Changbai Time ("Long-white Time", Long-white = Heilongjiang area) # Heilongjiang (except Mohe county), Jilin Zone Asia/Harbin 8:26:44 - LMT 1928 # or Haerbin - 8:30 - CHAT 1932 Mar # Changbai Time + 8:30 - +0830 1932 Mar 8:00 - CST 1940 - 9:00 - CHAT 1966 May - 8:30 - CHAT 1980 May + 9:00 - +09 1966 May + 8:30 - +0830 1980 May 8:00 PRC C%sT # far west China Zone Asia/Kashgar 5:03:56 - LMT 1928 # or Kashi or Kaxgar - 5:30 - KAST 1940 # Kashgar Time - 5:00 - KAST 1980 May + 5:30 - +0530 1940 + 5:00 - +05 1980 May 8:00 PRC C%sT # Kuwait Zone Asia/Kuwait 3:11:56 - LMT 1950 - 3:00 - AST + 3:00 - +03 # Oman # Milne says 3:54:24 was the meridian of the Muscat Tidal Observatory. Zone Asia/Muscat 3:54:24 - LMT 1920 - 4:00 - GST + 4:00 - +04 # India # From Paul Eggert (2014-08-11), after a heads-up from Stephen Colebourne: # According to a Portuguese decree (1911-05-26) -# http://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf -# Portuguese India switched to GMT+5 on 1912-01-01. +# https://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf +# Portuguese India switched to UT +05 on 1912-01-01. #Zone Asia/Panaji [not enough info to complete] # Cambodia # From Paul Eggert (2014-10-11): # See Asia/Ho_Chi_Minh for the source for most of this data. Also, guess -# (1) Cambodia reverted to UT+7 on 1945-09-02, when Vietnam did, and -# (2) they also reverted to UT+7 on 1953-11-09, the date of independence. +# (1) Cambodia reverted to UT +07 on 1945-09-02, when Vietnam did, and +# (2) they also reverted to +07 on 1953-11-09, the date of independence. # These guesses are probably wrong but they're better than guessing no # transitions there. Zone Asia/Phnom_Penh 6:59:40 - LMT 1906 Jul 1 7:06:30 - PLMT 1911 May 1 - 7:00 - ICT 1942 Dec 31 23:00 - 8:00 - IDT 1945 Mar 14 23:00 - 9:00 - JST 1945 Sep 2 - 7:00 - ICT 1947 Apr 1 - 8:00 - IDT 1953 Nov 9 - 7:00 - ICT + 7:00 - +07 1942 Dec 31 23:00 + 8:00 - +08 1945 Mar 14 23:00 + 9:00 - +09 1945 Sep 2 + 7:00 - +07 1947 Apr 1 + 8:00 - +08 1953 Nov 9 + 7:00 - +07 # Israel Zone Asia/Tel_Aviv 2:19:04 - LMT 1880 @@ -506,21 +506,21 @@ Zone Asia/Tel_Aviv 2:19:04 - LMT 1880 # Laos # From Paul Eggert (2014-10-11): # See Asia/Ho_Chi_Minh for the source for most of this data. -# Trần's book says that Laos reverted to UT+7 on 1955-04-15. -# Also, guess that Laos reverted to UT+7 on 1945-09-02, when Vietnam did; +# Trần's book says that Laos reverted to UT +07 on 1955-04-15. +# Also, guess that Laos reverted to +07 on 1945-09-02, when Vietnam did; # this is probably wrong but it's better than guessing no transition. Zone Asia/Vientiane 6:50:24 - LMT 1906 Jul 1 7:06:30 - PLMT 1911 May 1 - 7:00 - ICT 1942 Dec 31 23:00 - 8:00 - IDT 1945 Mar 14 23:00 - 9:00 - JST 1945 Sep 2 - 7:00 - ICT 1947 Apr 1 - 8:00 - IDT 1955 Apr 15 - 7:00 - ICT + 7:00 - +07 1942 Dec 31 23:00 + 8:00 - +08 1945 Mar 14 23:00 + 9:00 - +09 1945 Sep 2 + 7:00 - +07 1947 Apr 1 + 8:00 - +08 1955 Apr 15 + 7:00 - +07 # Jan Mayen # From Whitman: -Zone Atlantic/Jan_Mayen -1:00 - EGT +Zone Atlantic/Jan_Mayen -1:00 - -01 # St Helena Zone Atlantic/St_Helena -0:22:48 - LMT 1890 # Jamestown @@ -663,15 +663,13 @@ Zone Pacific/Johnston -10:00 - HST # " 3:00P Ar. MIDWAY ISLAND . . . . . . . . . M.L.T. Lv. 6:00A " # Zone Pacific/Midway -11:49:28 - LMT 1901 - -11:00 - NST 1956 Jun 3 - -11:00 1:00 NDT 1956 Sep 2 - -11:00 - NST 1967 Apr # N=Nome - -11:00 - BST 1983 Nov 30 # B=Bering - -11:00 - SST # S=Samoa + -11:00 - -11 1956 Jun 3 + -11:00 1:00 -10 1956 Sep 2 + -11:00 - -11 # N Mariana Is Zone Pacific/Saipan -14:17:00 - LMT 1844 Dec 31 9:43:00 - LMT 1901 - 9:00 - MPT 1969 Oct # N Mariana Is Time - 10:00 - MPT 2000 Dec 23 + 9:00 - +09 1969 Oct + 10:00 - +10 2000 Dec 23 10:00 - ChST # Chamorro Standard Time diff --git a/src/timezone/data/etcetera b/src/timezone/data/etcetera index c2e25328d5..f5fa4c94b4 100644 --- a/src/timezone/data/etcetera +++ b/src/timezone/data/etcetera @@ -8,6 +8,13 @@ # need now for the entries that are not on UTC are for ships at sea # that cannot use POSIX TZ settings. +# Starting with POSIX 1003.1-2001, the entries below are all +# unnecessary as settings for the TZ environment variable. E.g., +# instead of TZ='Etc/GMT+4' one can use the POSIX setting TZ='<-04>+4'. +# +# Do not use a POSIX TZ setting like TZ='GMT+4', which is four hours +# behind GMT but uses the completely misleading abbreviation "GMT". + Zone Etc/GMT 0 - GMT Zone Etc/UTC 0 - UTC Zone Etc/UCT 0 - UCT @@ -26,23 +33,13 @@ Link Etc/GMT Etc/GMT-0 Link Etc/GMT Etc/GMT+0 Link Etc/GMT Etc/GMT0 -# We use POSIX-style signs in the Zone names and the output abbreviations, +# Be consistent with POSIX TZ settings in the Zone names, # even though this is the opposite of what many people expect. # POSIX has positive signs west of Greenwich, but many people expect # positive signs east of Greenwich. For example, TZ='Etc/GMT+4' uses -# the abbreviation "GMT+4" and corresponds to 4 hours behind UT +# the abbreviation "-04" and corresponds to 4 hours behind UT # (i.e. west of Greenwich) even though many people would expect it to # mean 4 hours ahead of UT (i.e. east of Greenwich). -# -# In the draft 5 of POSIX 1003.1-200x, the angle bracket notation allows for -# TZ='+4'; if you want time zone abbreviations conforming to -# ISO 8601 you can use TZ='<-0400>+4'. Thus the commonly-expected -# offset is kept within the angle bracket (and is used for display) -# while the POSIX sign is kept outside the angle bracket (and is used -# for calculation). -# -# Do not use a TZ setting like TZ='GMT+4', which is four hours behind -# GMT but uses the completely misleading abbreviation "GMT". # Earlier incarnations of this package were not POSIX-compliant, # and had lines such as @@ -51,30 +48,31 @@ Link Etc/GMT Etc/GMT0 # way does a # zic -l GMT-12 # so we moved the names into the Etc subdirectory. +# Also, the time zone abbreviations are now compatible with %z. -Zone Etc/GMT-14 14 - GMT-14 # 14 hours ahead of GMT -Zone Etc/GMT-13 13 - GMT-13 -Zone Etc/GMT-12 12 - GMT-12 -Zone Etc/GMT-11 11 - GMT-11 -Zone Etc/GMT-10 10 - GMT-10 -Zone Etc/GMT-9 9 - GMT-9 -Zone Etc/GMT-8 8 - GMT-8 -Zone Etc/GMT-7 7 - GMT-7 -Zone Etc/GMT-6 6 - GMT-6 -Zone Etc/GMT-5 5 - GMT-5 -Zone Etc/GMT-4 4 - GMT-4 -Zone Etc/GMT-3 3 - GMT-3 -Zone Etc/GMT-2 2 - GMT-2 -Zone Etc/GMT-1 1 - GMT-1 -Zone Etc/GMT+1 -1 - GMT+1 -Zone Etc/GMT+2 -2 - GMT+2 -Zone Etc/GMT+3 -3 - GMT+3 -Zone Etc/GMT+4 -4 - GMT+4 -Zone Etc/GMT+5 -5 - GMT+5 -Zone Etc/GMT+6 -6 - GMT+6 -Zone Etc/GMT+7 -7 - GMT+7 -Zone Etc/GMT+8 -8 - GMT+8 -Zone Etc/GMT+9 -9 - GMT+9 -Zone Etc/GMT+10 -10 - GMT+10 -Zone Etc/GMT+11 -11 - GMT+11 -Zone Etc/GMT+12 -12 - GMT+12 +Zone Etc/GMT-14 14 - +14 +Zone Etc/GMT-13 13 - +13 +Zone Etc/GMT-12 12 - +12 +Zone Etc/GMT-11 11 - +11 +Zone Etc/GMT-10 10 - +10 +Zone Etc/GMT-9 9 - +09 +Zone Etc/GMT-8 8 - +08 +Zone Etc/GMT-7 7 - +07 +Zone Etc/GMT-6 6 - +06 +Zone Etc/GMT-5 5 - +05 +Zone Etc/GMT-4 4 - +04 +Zone Etc/GMT-3 3 - +03 +Zone Etc/GMT-2 2 - +02 +Zone Etc/GMT-1 1 - +01 +Zone Etc/GMT+1 -1 - -01 +Zone Etc/GMT+2 -2 - -02 +Zone Etc/GMT+3 -3 - -03 +Zone Etc/GMT+4 -4 - -04 +Zone Etc/GMT+5 -5 - -05 +Zone Etc/GMT+6 -6 - -06 +Zone Etc/GMT+7 -7 - -07 +Zone Etc/GMT+8 -8 - -08 +Zone Etc/GMT+9 -9 - -09 +Zone Etc/GMT+10 -10 - -10 +Zone Etc/GMT+11 -11 - -11 +Zone Etc/GMT+12 -12 - -12 diff --git a/src/timezone/data/europe b/src/timezone/data/europe index cd3a0883d8..558b9f168f 100644 --- a/src/timezone/data/europe +++ b/src/timezone/data/europe @@ -6,15 +6,15 @@ # tz@iana.org for general use in the future). For more, please see # the file CONTRIBUTING in the tz distribution. -# From Paul Eggert (2014-10-31): +# From Paul Eggert (2017-02-10): # # Unless otherwise specified, the source for data through 1990 is: # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition), # San Diego: ACS Publications, Inc. (2003). # Unfortunately this book contains many errors and cites no sources. # -# Gwillim Law writes that a good source -# for recent time zone data is the International Air Transport +# Many years ago Gwillim Law wrote that a good source +# for time zone data was the International Air Transport # Association's Standard Schedules Information Manual (IATA SSIM), # published semiannually. Law sent in several helpful summaries # of the IATA's data after 1990. Except where otherwise noted, @@ -56,27 +56,23 @@ # History of Summer Time # # (1998-09-21, in Portuguese) - # # I invented the abbreviations marked '*' in the following table; -# the rest are from earlier versions of this file, or from other sources. -# Corrections are welcome! -# std dst 2dst -# LMT Local Mean Time -# -4:00 AST ADT Atlantic -# -3:00 WGT WGST Western Greenland* -# -1:00 EGT EGST Eastern Greenland* -# 0:00 GMT BST BDST Greenwich, British Summer -# 0:00 GMT IST Greenwich, Irish Summer -# 0:00 WET WEST WEMT Western Europe -# 0:19:32.13 AMT NST Amsterdam, Netherlands Summer (1835-1937)* -# 0:20 NET NEST Netherlands (1937-1940)* -# 1:00 BST British Standard (1968-1971) -# 1:00 CET CEST CEMT Central Europe -# 1:00:14 SET Swedish (1879-1899)* -# 2:00 EET EEST Eastern Europe -# 3:00 FET Further-eastern Europe (2011-2014)* -# 3:00 MSK MSD MSM* Minsk, Moscow +# the rest are variants of the "xMT" pattern for a city's mean time, +# or are from other sources. Corrections are welcome! +# std dst 2dst +# LMT Local Mean Time +# -4:00 AST ADT Atlantic +# 0:00 GMT BST BDST Greenwich, British Summer +# 0:00 GMT IST Greenwich, Irish Summer +# 0:00 WET WEST WEMT Western Europe +# 0:19:32.13 AMT* NST* Amsterdam, Netherlands Summer (1835-1937) +# 1:00 BST British Standard (1968-1971) +# 1:00 CET CEST CEMT Central Europe +# 1:00:14 SET Swedish (1879-1899) +# 1:36:34 RMT* LST* Riga, Latvian Summer (1880-1926)* +# 2:00 EET EEST Eastern Europe +# 3:00 MSK MSD MDST* Moscow # From Peter Ilieve (1994-12-04), # The original six [EU members]: Belgium, France, (West) Germany, Italy, @@ -476,7 +472,7 @@ Link Europe/London Europe/Isle_of_Man # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2 - -0:25:21 - DMT 1916 May 21 2:00 + -0:25:21 - DMT 1916 May 21 2:00 # Dublin MT -0:25:21 1:00 IST 1916 Oct 1 2:00s 0:00 GB-Eire %s 1921 Dec 6 # independence 0:00 GB-Eire GMT/IST 1940 Feb 25 2:00 @@ -583,16 +579,33 @@ Rule E-Eur 1979 1995 - Sep lastSun 0:00 0 - Rule E-Eur 1981 max - Mar lastSun 0:00 1:00 S Rule E-Eur 1996 max - Oct lastSun 0:00 0 - + +# Daylight saving time for Russia and the Soviet Union +# +# The 1917-1921 decree URLs are from Alexander Belopolsky (2016-08-23). + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Russia 1917 only - Jul 1 23:00 1:00 MST # Moscow Summer Time +# +# Decree No. 142 (1917-12-22) http://istmat.info/node/28137 Rule Russia 1917 only - Dec 28 0:00 0 MMT # Moscow Mean Time +# +# Decree No. 497 (1918-05-30) http://istmat.info/node/30001 Rule Russia 1918 only - May 31 22:00 2:00 MDST # Moscow Double Summer Time Rule Russia 1918 only - Sep 16 1:00 1:00 MST +# +# Decree No. 258 (1919-05-29) http://istmat.info/node/37949 Rule Russia 1919 only - May 31 23:00 2:00 MDST -Rule Russia 1919 only - Jul 1 2:00 1:00 MSD +# +Rule Russia 1919 only - Jul 1 0:00u 1:00 MSD Rule Russia 1919 only - Aug 16 0:00 0 MSK +# +# Decree No. 63 (1921-02-03) http://istmat.info/node/45840 Rule Russia 1921 only - Feb 14 23:00 1:00 MSD -Rule Russia 1921 only - Mar 20 23:00 2:00 MSM # Midsummer +# +# Decree No. 121 (1921-03-07) http://istmat.info/node/45949 +Rule Russia 1921 only - Mar 20 23:00 2:00 +05 +# Rule Russia 1921 only - Sep 1 0:00 1:00 MSD Rule Russia 1921 only - Oct 1 0:00 0 - # Act No. 925 of the Council of Ministers of the USSR (1980-10-24): @@ -775,8 +788,6 @@ Zone Europe/Vienna 1:05:21 - LMT 1893 Apr # From Alexander Bokovoy (2014-10-09): # Belarussian government decided against changing to winter time.... # http://eng.belta.by/all_news/society/Belarus-decides-against-adjusting-time-in-Russias-wake_i_76335.html -# From Paul Eggert (2014-10-08): -# Hence Belarus can share time zone abbreviations with Moscow again. # # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Minsk 1:50:16 - LMT 1880 @@ -787,8 +798,7 @@ Zone Europe/Minsk 1:50:16 - LMT 1880 3:00 Russia MSK/MSD 1990 3:00 - MSK 1991 Mar 31 2:00s 2:00 Russia EE%sT 2011 Mar 27 2:00s - 3:00 - FET 2014 Oct 26 1:00s - 3:00 - MSK + 3:00 - +03 # Belgium # @@ -888,7 +898,7 @@ Zone Europe/Sofia 1:33:16 - LMT 1880 # Cyprus # Please see the 'asia' file for Asia/Nicosia. -# Czech Republic +# Czech Republic / Czechia # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Czech 1945 only - Apr 8 2:00s 1:00 S Rule Czech 1945 only - Nov 18 2:00s 0 - @@ -1051,16 +1061,16 @@ Rule Thule 2007 max - Nov Sun>=1 2:00 0 S # # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28 - -3:00 - WGT 1980 Apr 6 2:00 - -3:00 EU WG%sT 1996 + -3:00 - -03 1980 Apr 6 2:00 + -3:00 EU -03/-02 1996 0:00 - GMT Zone America/Scoresbysund -1:27:52 - LMT 1916 Jul 28 # Ittoqqortoormiit - -2:00 - CGT 1980 Apr 6 2:00 - -2:00 C-Eur CG%sT 1981 Mar 29 - -1:00 EU EG%sT + -2:00 - -02 1980 Apr 6 2:00 + -2:00 C-Eur -02/-01 1981 Mar 29 + -1:00 EU -01/+00 Zone America/Godthab -3:26:56 - LMT 1916 Jul 28 # Nuuk - -3:00 - WGT 1980 Apr 6 2:00 - -3:00 EU WG%sT + -3:00 - -03 1980 Apr 6 2:00 + -3:00 EU -03/-02 Zone America/Thule -4:35:08 - LMT 1916 Jul 28 # Pituffik air base -4:00 Thule A%sT @@ -1296,7 +1306,7 @@ Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15 0:01 # http://www.parlament-berlin.de/pds-fraktion.nsf/727459127c8b66ee8525662300459099/defc77cb784f180ac1256c2b0030274b/$FILE/bersarint.pdf # says that Bersarin issued an order to use Moscow time on May 20. # However, Moscow did not observe daylight saving in 1945, so -# this was equivalent to CEMT (GMT+3), not GMT+4. +# this was equivalent to UT +03, not +04. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S @@ -1475,7 +1485,7 @@ Rule Iceland 1950 1966 - Oct Sun>=22 1:00s 0 - Rule Iceland 1967 only - Oct 29 1:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Atlantic/Reykjavik -1:28 - LMT 1908 - -1:00 Iceland IS%sT 1968 Apr 7 1:00s + -1:00 Iceland -01/+00 1968 Apr 7 1:00s 0:00 - GMT # Italy @@ -1487,73 +1497,84 @@ Zone Atlantic/Reykjavik -1:28 - LMT 1908 # But these events all occurred before the 1970 cutoff, # so record only the time in Rome. # -# From Paul Eggert (2006-03-22): -# For Italian DST we have three sources: Shanks & Pottenger, Whitman, and -# F. Pollastri -# Day-light Saving Time in Italy (2006-02-03) -# http://toi.iriti.cnr.it/uk/ienitlt.html -# ('FP' below), taken from an Italian National Electrotechnical Institute -# publication. When the three sources disagree, guess who's right, as follows: -# -# year FP Shanks&P. (S) Whitman (W) Go with: -# 1916 06-03 06-03 24:00 06-03 00:00 FP & W -# 09-30 09-30 24:00 09-30 01:00 FP; guess 24:00s -# 1917 04-01 03-31 24:00 03-31 00:00 FP & S -# 09-30 09-29 24:00 09-30 01:00 FP & W -# 1918 03-09 03-09 24:00 03-09 00:00 FP & S -# 10-06 10-05 24:00 10-06 01:00 FP & W -# 1919 03-01 03-01 24:00 03-01 00:00 FP & S -# 10-04 10-04 24:00 10-04 01:00 FP; guess 24:00s -# 1920 03-20 03-20 24:00 03-20 00:00 FP & S -# 09-18 09-18 24:00 10-01 01:00 FP; guess 24:00s -# 1944 04-02 04-03 02:00 S (see C-Eur) -# 09-16 10-02 03:00 FP; guess 24:00s -# 1945 09-14 09-16 24:00 FP; guess 24:00s -# 1970 05-21 05-31 00:00 S -# 09-20 09-27 00:00 S +# From Michael Deckers (2016-10-24): +# http://www.ac-ilsestante.it/MERIDIANE/ora_legale quotes a law of 1893-08-10 +# ... [translated as] "The preceding dispositions will enter into +# force at the instant at which, according to the time specified in +# the 1st article, the 1st of November 1893 will begin...." +# +# From Pierpaolo Bernardi (2016-10-20): +# The authoritative source for time in Italy is the national metrological +# institute, which has a summary page of historical DST data at +# http://www.inrim.it/res/tf/ora_legale_i.shtml +# (2016-10-24): +# http://www.renzobaldini.it/le-ore-legali-in-italia/ +# has still different data for 1944. It divides Italy in two, as +# there were effectively two governments at the time, north of Gothic +# Line German controlled territory, official government RSI, and south +# of the Gothic Line, controlled by allied armies. +# +# From Brian Inglis (2016-10-23): +# Viceregal LEGISLATIVE DECREE. 14 September 1944, no. 219. +# Restoration of Standard Time. (044U0219) (OJ 62 of 30.9.1944) ... +# Given the R. law decreed on 1944-03-29, no. 92, by which standard time is +# advanced to sixty minutes later starting at hour two on 1944-04-02; ... +# Starting at hour three on the date 1944-09-17 standard time will be resumed. +# +# From Paul Eggert (2016-10-27): +# Go with INRiM for DST rules, except as corrected by Inglis for 1944 +# for the Kingdom of Italy. This is consistent with Renzo Baldini. +# Model Rome's occupation by using using C-Eur rules from 1943-09-10 +# to 1944-06-04; although Rome was an open city during this period, it +# was effectively controlled by Germany. # # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Italy 1916 only - Jun 3 0:00s 1:00 S -Rule Italy 1916 only - Oct 1 0:00s 0 - -Rule Italy 1917 only - Apr 1 0:00s 1:00 S -Rule Italy 1917 only - Sep 30 0:00s 0 - -Rule Italy 1918 only - Mar 10 0:00s 1:00 S -Rule Italy 1918 1919 - Oct Sun>=1 0:00s 0 - -Rule Italy 1919 only - Mar 2 0:00s 1:00 S -Rule Italy 1920 only - Mar 21 0:00s 1:00 S -Rule Italy 1920 only - Sep 19 0:00s 0 - -Rule Italy 1940 only - Jun 15 0:00s 1:00 S -Rule Italy 1944 only - Sep 17 0:00s 0 - -Rule Italy 1945 only - Apr 2 2:00 1:00 S -Rule Italy 1945 only - Sep 15 0:00s 0 - -Rule Italy 1946 only - Mar 17 2:00s 1:00 S -Rule Italy 1946 only - Oct 6 2:00s 0 - -Rule Italy 1947 only - Mar 16 0:00s 1:00 S -Rule Italy 1947 only - Oct 5 0:00s 0 - -Rule Italy 1948 only - Feb 29 2:00s 1:00 S -Rule Italy 1948 only - Oct 3 2:00s 0 - -Rule Italy 1966 1968 - May Sun>=22 0:00 1:00 S -Rule Italy 1966 1969 - Sep Sun>=22 0:00 0 - -Rule Italy 1969 only - Jun 1 0:00 1:00 S -Rule Italy 1970 only - May 31 0:00 1:00 S -Rule Italy 1970 only - Sep lastSun 0:00 0 - -Rule Italy 1971 1972 - May Sun>=22 0:00 1:00 S -Rule Italy 1971 only - Sep lastSun 1:00 0 - -Rule Italy 1972 only - Oct 1 0:00 0 - -Rule Italy 1973 only - Jun 3 0:00 1:00 S -Rule Italy 1973 1974 - Sep lastSun 0:00 0 - -Rule Italy 1974 only - May 26 0:00 1:00 S -Rule Italy 1975 only - Jun 1 0:00s 1:00 S -Rule Italy 1975 1977 - Sep lastSun 0:00s 0 - -Rule Italy 1976 only - May 30 0:00s 1:00 S -Rule Italy 1977 1979 - May Sun>=22 0:00s 1:00 S -Rule Italy 1978 only - Oct 1 0:00s 0 - -Rule Italy 1979 only - Sep 30 0:00s 0 - +Rule Italy 1916 only - Jun 3 24:00 1:00 S +Rule Italy 1916 1917 - Sep 30 24:00 0 - +Rule Italy 1917 only - Mar 31 24:00 1:00 S +Rule Italy 1918 only - Mar 9 24:00 1:00 S +Rule Italy 1918 only - Oct 6 24:00 0 - +Rule Italy 1919 only - Mar 1 24:00 1:00 S +Rule Italy 1919 only - Oct 4 24:00 0 - +Rule Italy 1920 only - Mar 20 24:00 1:00 S +Rule Italy 1920 only - Sep 18 24:00 0 - +Rule Italy 1940 only - Jun 14 24:00 1:00 S +Rule Italy 1942 only - Nov 2 2:00s 0 - +Rule Italy 1943 only - Mar 29 2:00s 1:00 S +Rule Italy 1943 only - Oct 4 2:00s 0 - +Rule Italy 1944 only - Apr 2 2:00s 1:00 S +Rule Italy 1944 only - Sep 17 2:00s 0 - +Rule Italy 1945 only - Apr 2 2:00 1:00 S +Rule Italy 1945 only - Sep 15 1:00 0 - +Rule Italy 1946 only - Mar 17 2:00s 1:00 S +Rule Italy 1946 only - Oct 6 2:00s 0 - +Rule Italy 1947 only - Mar 16 0:00s 1:00 S +Rule Italy 1947 only - Oct 5 0:00s 0 - +Rule Italy 1948 only - Feb 29 2:00s 1:00 S +Rule Italy 1948 only - Oct 3 2:00s 0 - +Rule Italy 1966 1968 - May Sun>=22 0:00s 1:00 S +Rule Italy 1966 only - Sep 24 24:00 0 - +Rule Italy 1967 1969 - Sep Sun>=22 0:00s 0 - +Rule Italy 1969 only - Jun 1 0:00s 1:00 S +Rule Italy 1970 only - May 31 0:00s 1:00 S +Rule Italy 1970 only - Sep lastSun 0:00s 0 - +Rule Italy 1971 1972 - May Sun>=22 0:00s 1:00 S +Rule Italy 1971 only - Sep lastSun 0:00s 0 - +Rule Italy 1972 only - Oct 1 0:00s 0 - +Rule Italy 1973 only - Jun 3 0:00s 1:00 S +Rule Italy 1973 1974 - Sep lastSun 0:00s 0 - +Rule Italy 1974 only - May 26 0:00s 1:00 S +Rule Italy 1975 only - Jun 1 0:00s 1:00 S +Rule Italy 1975 1977 - Sep lastSun 0:00s 0 - +Rule Italy 1976 only - May 30 0:00s 1:00 S +Rule Italy 1977 1979 - May Sun>=22 0:00s 1:00 S +Rule Italy 1978 only - Oct 1 0:00s 0 - +Rule Italy 1979 only - Sep 30 0:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Rome 0:49:56 - LMT 1866 Sep 22 - 0:49:56 - RMT 1893 Nov 1 0:00s # Rome Mean - 1:00 Italy CE%sT 1942 Nov 2 2:00s - 1:00 C-Eur CE%sT 1944 Jul + 0:49:56 - RMT 1893 Oct 31 23:49:56 # Rome Mean + 1:00 Italy CE%sT 1943 Sep 10 + 1:00 C-Eur CE%sT 1944 Jun 4 1:00 Italy CE%sT 1980 1:00 EU CE%sT @@ -1752,6 +1773,10 @@ Zone Europe/Luxembourg 0:24:36 - LMT 1904 Jun # See Europe/Belgrade. # Malta +# +# From Paul Eggert (2016-10-21): +# Assume 1900-1972 was like Rome, overriding Shanks. +# # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Malta 1973 only - Mar 31 0:00s 1:00 S Rule Malta 1973 only - Sep 29 0:00s 0 - @@ -1762,8 +1787,6 @@ Rule Malta 1975 1980 - Sep Sun>=15 2:00 0 - Rule Malta 1980 only - Mar 31 2:00 1:00 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Malta 0:58:04 - LMT 1893 Nov 2 0:00s # Valletta - 1:00 Italy CE%sT 1942 Nov 2 2:00s - 1:00 C-Eur CE%sT 1945 Apr 2 2:00s 1:00 Italy CE%sT 1973 Mar 31 1:00 Malta CE%sT 1981 1:00 EU CE%sT @@ -1895,7 +1918,7 @@ Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15 # Amsterdam mean time. # The data entries before 1945 are taken from -# http://www.phys.uu.nl/~vgent/wettijd/wettijd.htm +# http://www.staff.science.uu.nl/~gent0113/wettijd/wettijd.htm # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Neth 1916 only - May 1 0:00 1:00 NST # Netherlands Summer Time @@ -1926,7 +1949,7 @@ Rule Neth 1945 only - Sep 16 2:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Amsterdam 0:19:32 - LMT 1835 0:19:32 Neth %s 1937 Jul 1 - 0:20 Neth NE%sT 1940 May 16 0:00 # Dutch Time + 0:20 Neth +0020/+0120 1940 May 16 0:00 1:00 C-Eur CE%sT 1945 Apr 2 2:00 1:00 Neth CE%sT 1977 1:00 EU CE%sT @@ -2143,16 +2166,34 @@ Zone Europe/Lisbon -0:36:45 - LMT 1884 0:00 W-Eur WE%sT 1992 Sep 27 1:00s 1:00 EU CE%sT 1996 Mar 31 1:00u 0:00 EU WE%sT +# This Zone can be simplified once we assume zic %z. Zone Atlantic/Azores -1:42:40 - LMT 1884 # Ponta Delgada -1:54:32 - HMT 1912 Jan 1 # Horta Mean Time - -2:00 Port AZO%sT 1966 Apr 3 2:00 # Azores Time - -1:00 Port AZO%sT 1983 Sep 25 1:00s - -1:00 W-Eur AZO%sT 1992 Sep 27 1:00s + -2:00 Port -02/-01 1942 Apr 25 22:00s + -2:00 Port +00 1942 Aug 15 22:00s + -2:00 Port -02/-01 1943 Apr 17 22:00s + -2:00 Port +00 1943 Aug 28 22:00s + -2:00 Port -02/-01 1944 Apr 22 22:00s + -2:00 Port +00 1944 Aug 26 22:00s + -2:00 Port -02/-01 1945 Apr 21 22:00s + -2:00 Port +00 1945 Aug 25 22:00s + -2:00 Port -02/-01 1966 Apr 3 2:00 + -1:00 Port -01/+00 1983 Sep 25 1:00s + -1:00 W-Eur -01/+00 1992 Sep 27 1:00s 0:00 EU WE%sT 1993 Mar 28 1:00u - -1:00 EU AZO%sT + -1:00 EU -01/+00 +# This Zone can be simplified once we assume zic %z. Zone Atlantic/Madeira -1:07:36 - LMT 1884 # Funchal -1:07:36 - FMT 1912 Jan 1 # Funchal Mean Time - -1:00 Port MAD%sT 1966 Apr 3 2:00 # Madeira Time + -1:00 Port -01/+00 1942 Apr 25 22:00s + -1:00 Port +01 1942 Aug 15 22:00s + -1:00 Port -01/+00 1943 Apr 17 22:00s + -1:00 Port +01 1943 Aug 28 22:00s + -1:00 Port -01/+00 1944 Apr 22 22:00s + -1:00 Port +01 1944 Aug 26 22:00s + -1:00 Port -01/+00 1945 Apr 21 22:00s + -1:00 Port +01 1945 Aug 25 22:00s + -1:00 Port -01/+00 1966 Apr 3 2:00 0:00 Port WE%sT 1983 Sep 25 1:00s 0:00 EU WE%sT @@ -2260,7 +2301,6 @@ Zone Europe/Bucharest 1:44:24 - LMT 1891 Oct # http://www.worldtimezone.com/dst_news/dst_news_russia-map-2014-07.html # From Paul Eggert (2006-03-22): -# Except for Moscow after 1919-07-01, I invented the time zone abbreviations. # Moscow time zone abbreviations after 1919-07-01, and Moscow rules after 1991, # are from Andrey A. Chernov. The rest is from Shanks & Pottenger, # except we follow Chernov's report that 1992 DST transitions were Sat @@ -2336,7 +2376,7 @@ Zone Europe/Kaliningrad 1:22:00 - LMT 1893 Apr 2:00 Poland CE%sT 1946 3:00 Russia MSK/MSD 1989 Mar 26 2:00s 2:00 Russia EE%sT 2011 Mar 27 2:00s - 3:00 - FET 2014 Oct 26 2:00s + 3:00 - +03 2014 Oct 26 2:00s 2:00 - EET @@ -2389,6 +2429,16 @@ Zone Europe/Kaliningrad 1:22:00 - LMT 1893 Apr # 78 RU-SPE Saint Petersburg # 83 RU-NEN Nenets Autonomous Okrug +# From Paul Eggert (2016-08-23): +# The Soviets switched to UT-based time in 1919. Decree No. 59 +# (1919-02-08) http://istmat.info/node/35567 established UT-based time +# zones, and Decree No. 147 (1919-03-29) http://istmat.info/node/35854 +# specified a transition date of 1919-07-01, apparently at 00:00 UT. +# No doubt only the Soviet-controlled regions switched on that date; +# later transitions to UT-based time in other parts of Russia are +# taken from what appear to be guesses by Shanks. +# (Thanks to Alexander Belopolsky for pointers to the decrees.) + # From Stepan Golosunov (2016-03-07): # 11. Regions-violators, 1981-1982. # Wikipedia refers to @@ -2430,7 +2480,7 @@ Zone Europe/Kaliningrad 1:22:00 - LMT 1893 Apr # attributes the 1982 changes to the Act of the Council of Ministers # of the USSR No. 126 from 18.02.1982. 1980-925.txt also adds # Udmurtia to the list of affected territories and lists Khatangsky -# district separately from Taymyr Autonomous Okurg. Probably erroneously. +# district separately from Taymyr Autonomous Okrug. Probably erroneously. # # The affected territories are currently listed under Europe/Moscow, # Asia/Yekaterinburg and Asia/Krasnoyarsk. @@ -2490,7 +2540,7 @@ Zone Europe/Kaliningrad 1:22:00 - LMT 1893 Apr Zone Europe/Moscow 2:30:17 - LMT 1880 2:30:17 - MMT 1916 Jul 3 # Moscow Mean Time - 2:31:19 Russia %s 1919 Jul 1 2:00 + 2:31:19 Russia %s 1919 Jul 1 0:00u 3:00 Russia %s 1921 Oct 3:00 Russia MSK/MSD 1922 Oct 2:00 - EET 1930 Jun 21 @@ -2501,10 +2551,8 @@ Zone Europe/Moscow 2:30:17 - LMT 1880 3:00 - MSK -# From Tim Parenti (2014-07-03): -# Europe/Simferopol covers... -# ** **** Crimea, Republic of -# ** **** Sevastopol +# From Paul Eggert (2016-12-06): +# Europe/Simferopol covers Crimea. Zone Europe/Simferopol 2:16:24 - LMT 1880 2:16 - SMT 1924 May 2 # Simferopol Mean T @@ -2566,29 +2614,48 @@ Zone Europe/Astrakhan 3:12:12 - LMT 1924 May 3:00 - +03 2016 Mar 27 2:00s 4:00 - +04 -# From Paul Eggert (2016-03-18): +# From Paul Eggert (2016-11-11): # Europe/Volgograd covers: # 34 RU-VGG Volgograd Oblast -# 64 RU-SAR Saratov Oblast # The 1988 transition is from USSR act No. 5 (1988-01-04). Zone Europe/Volgograd 2:57:40 - LMT 1920 Jan 3 - 3:00 - TSAT 1925 Apr 6 # Tsaritsyn Time - 3:00 - STAT 1930 Jun 21 # Stalingrad Time - 4:00 - STAT 1961 Nov 11 - 4:00 Russia VOL%sT 1988 Mar 27 2:00s # Volgograd T - 3:00 Russia VOL%sT 1991 Mar 31 2:00s - 4:00 - VOLT 1992 Mar 29 2:00s - 3:00 Russia MSK/MSD 2011 Mar 27 2:00s - 4:00 - MSK 2014 Oct 26 2:00s - 3:00 - MSK + 3:00 - +03 1930 Jun 21 + 4:00 - +04 1961 Nov 11 + 4:00 Russia +04/+05 1988 Mar 27 2:00s + 3:00 Russia +03/+04 1991 Mar 31 2:00s + 4:00 - +04 1992 Mar 29 2:00s + 3:00 Russia +03/+04 2011 Mar 27 2:00s + 4:00 - +04 2014 Oct 26 2:00s + 3:00 - +03 + +# From Paul Eggert (2016-11-11): +# Europe/Saratov covers: +# 64 RU-SAR Saratov Oblast + +# From Yuri Konotopov (2016-11-11): +# Dec 4, 2016 02:00 UTC+3.... Saratov Region's local time will be ... UTC+4. +# From Stepan Golosunov (2016-11-11): +# ... Byalokoz listed Saratov on 03:04:18. +# From Stepan Golosunov (2016-11-22): +# http://publication.pravo.gov.ru/Document/View/0001201611220031 + +Zone Europe/Saratov 3:04:18 - LMT 1919 Jul 1 0:00u + 3:00 - +03 1930 Jun 21 + 4:00 Russia +04/+05 1988 Mar 27 2:00s + 3:00 Russia +03/+04 1991 Mar 31 2:00s + 4:00 - +04 1992 Mar 29 2:00s + 3:00 Russia +03/+04 2011 Mar 27 2:00s + 4:00 - +04 2014 Oct 26 2:00s + 3:00 - +03 2016 Dec 4 2:00s + 4:00 - +04 # From Paul Eggert (2016-03-18): # Europe/Kirov covers: # 43 RU-KIR Kirov Oblast # The 1989 transition is from USSR act No. 227 (1989-03-14). # -Zone Europe/Kirov 3:18:48 - LMT 1919 Jul 1 2:00 +Zone Europe/Kirov 3:18:48 - LMT 1919 Jul 1 0:00u 3:00 - +03 1930 Jun 21 4:00 Russia +04/+05 1989 Mar 26 2:00s 3:00 Russia +03/+04 1991 Mar 31 2:00s @@ -2606,16 +2673,16 @@ Zone Europe/Kirov 3:18:48 - LMT 1919 Jul 1 2:00 # Byalokoz 1919 says Samara was 3:20:20. # The 1989 transition is from USSR act No. 227 (1989-03-14). -Zone Europe/Samara 3:20:20 - LMT 1919 Jul 1 2:00 - 3:00 - SAMT 1930 Jun 21 # Samara Time - 4:00 - SAMT 1935 Jan 27 - 4:00 Russia KUY%sT 1989 Mar 26 2:00s # Kuybyshev - 3:00 Russia MSK/MSD 1991 Mar 31 2:00s - 2:00 Russia EE%sT 1991 Sep 29 2:00s - 3:00 - SAMT 1991 Oct 20 3:00 - 4:00 Russia SAM%sT 2010 Mar 28 2:00s - 3:00 Russia SAM%sT 2011 Mar 27 2:00s - 4:00 - SAMT +Zone Europe/Samara 3:20:20 - LMT 1919 Jul 1 0:00u + 3:00 - +03 1930 Jun 21 + 4:00 - +04 1935 Jan 27 + 4:00 Russia +04/+05 1989 Mar 26 2:00s + 3:00 Russia +03/+04 1991 Mar 31 2:00s + 2:00 Russia +02/+03 1991 Sep 29 2:00s + 3:00 - +03 1991 Oct 20 3:00 + 4:00 Russia +04/+05 2010 Mar 28 2:00s + 3:00 Russia +03/+04 2011 Mar 27 2:00s + 4:00 - +04 # From Paul Eggert (2016-03-18): # Europe/Ulyanovsk covers: @@ -2630,7 +2697,7 @@ Zone Europe/Samara 3:20:20 - LMT 1919 Jul 1 2:00 # From Matt Johnson (2016-03-09): # http://publication.pravo.gov.ru/Document/View/0001201603090051 -Zone Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 2:00 +Zone Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 0:00u 3:00 - +03 1930 Jun 21 4:00 Russia +04/+05 1989 Mar 26 2:00s 3:00 Russia +03/+04 1991 Mar 31 2:00s @@ -2662,12 +2729,12 @@ Zone Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 2:00 Zone Asia/Yekaterinburg 4:02:33 - LMT 1916 Jul 3 3:45:05 - PMT 1919 Jul 15 4:00 - 4:00 - SVET 1930 Jun 21 # Sverdlovsk Time - 5:00 Russia SVE%sT 1991 Mar 31 2:00s - 4:00 Russia SVE%sT 1992 Jan 19 2:00s - 5:00 Russia YEK%sT 2011 Mar 27 2:00s - 6:00 - YEKT 2014 Oct 26 2:00s - 5:00 - YEKT + 4:00 - +04 1930 Jun 21 + 5:00 Russia +05/+06 1991 Mar 31 2:00s + 4:00 Russia +04/+05 1992 Jan 19 2:00s + 5:00 Russia +05/+06 2011 Mar 27 2:00s + 6:00 - +06 2014 Oct 26 2:00s + 5:00 - +05 # From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25): @@ -2677,12 +2744,12 @@ Zone Asia/Yekaterinburg 4:02:33 - LMT 1916 Jul 3 # Byalokoz 1919 says Omsk was 4:53:30. Zone Asia/Omsk 4:53:30 - LMT 1919 Nov 14 - 5:00 - OMST 1930 Jun 21 # Omsk Time - 6:00 Russia OMS%sT 1991 Mar 31 2:00s - 5:00 Russia OMS%sT 1992 Jan 19 2:00s - 6:00 Russia OMS%sT 2011 Mar 27 2:00s - 7:00 - OMST 2014 Oct 26 2:00s - 6:00 - OMST + 5:00 - +05 1930 Jun 21 + 6:00 Russia +06/+07 1991 Mar 31 2:00s + 5:00 Russia +05/+06 1992 Jan 19 2:00s + 6:00 Russia +06/+07 2011 Mar 27 2:00s + 7:00 - +07 2014 Oct 26 2:00s + 6:00 - +06 # From Paul Eggert (2016-02-22): # Asia/Barnaul covers: @@ -2762,7 +2829,7 @@ Zone Asia/Novosibirsk 5:31:40 - LMT 1919 Dec 14 6:00 # Note that time belts (numbered from 2 (Moscow) to 12 according to their # GMT/UTC offset and having too many exceptions like regions formally # belonging to one belt but using time from another) were replaced -# with time zones in 2011 with different numberings (there was a +# with time zones in 2011 with different numbering (there was a # 2-hour gap between second and third zones in 2011-2014). # From Stepan Golosunov (2016-04-12): @@ -2845,12 +2912,12 @@ Zone Asia/Novokuznetsk 5:48:48 - LMT 1924 May 1 # Byalokoz 1919 says Krasnoyarsk was 6:11:26. Zone Asia/Krasnoyarsk 6:11:26 - LMT 1920 Jan 6 - 6:00 - KRAT 1930 Jun 21 # Krasnoyarsk Time - 7:00 Russia KRA%sT 1991 Mar 31 2:00s - 6:00 Russia KRA%sT 1992 Jan 19 2:00s - 7:00 Russia KRA%sT 2011 Mar 27 2:00s - 8:00 - KRAT 2014 Oct 26 2:00s - 7:00 - KRAT + 6:00 - +06 1930 Jun 21 + 7:00 Russia +07/+08 1991 Mar 31 2:00s + 6:00 Russia +06/+07 1992 Jan 19 2:00s + 7:00 Russia +07/+08 2011 Mar 27 2:00s + 8:00 - +08 2014 Oct 26 2:00s + 7:00 - +07 # From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25): @@ -2867,12 +2934,12 @@ Zone Asia/Krasnoyarsk 6:11:26 - LMT 1920 Jan 6 Zone Asia/Irkutsk 6:57:05 - LMT 1880 6:57:05 - IMT 1920 Jan 25 # Irkutsk Mean Time - 7:00 - IRKT 1930 Jun 21 # Irkutsk Time - 8:00 Russia IRK%sT 1991 Mar 31 2:00s - 7:00 Russia IRK%sT 1992 Jan 19 2:00s - 8:00 Russia IRK%sT 2011 Mar 27 2:00s - 9:00 - IRKT 2014 Oct 26 2:00s - 8:00 - IRKT + 7:00 - +07 1930 Jun 21 + 8:00 Russia +08/+09 1991 Mar 31 2:00s + 7:00 Russia +07/+08 1992 Jan 19 2:00s + 8:00 Russia +08/+09 2011 Mar 27 2:00s + 9:00 - +09 2014 Oct 26 2:00s + 8:00 - +08 # From Tim Parenti (2014-07-06): @@ -2889,13 +2956,13 @@ Zone Asia/Irkutsk 6:57:05 - LMT 1880 # http://publication.pravo.gov.ru/Document/View/0001201512300107 Zone Asia/Chita 7:33:52 - LMT 1919 Dec 15 - 8:00 - YAKT 1930 Jun 21 # Yakutsk Time - 9:00 Russia YAK%sT 1991 Mar 31 2:00s - 8:00 Russia YAK%sT 1992 Jan 19 2:00s - 9:00 Russia YAK%sT 2011 Mar 27 2:00s - 10:00 - YAKT 2014 Oct 26 2:00s - 8:00 - IRKT 2016 Mar 27 2:00 - 9:00 - YAKT + 8:00 - +08 1930 Jun 21 + 9:00 Russia +09/+10 1991 Mar 31 2:00s + 8:00 Russia +08/+09 1992 Jan 19 2:00s + 9:00 Russia +09/+10 2011 Mar 27 2:00s + 10:00 - +10 2014 Oct 26 2:00s + 8:00 - +08 2016 Mar 27 2:00 + 9:00 - +09 # From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2009-11-29): @@ -2935,12 +3002,12 @@ Zone Asia/Chita 7:33:52 - LMT 1919 Dec 15 # Byalokoz 1919 says Yakutsk was 8:38:58. Zone Asia/Yakutsk 8:38:58 - LMT 1919 Dec 15 - 8:00 - YAKT 1930 Jun 21 # Yakutsk Time - 9:00 Russia YAK%sT 1991 Mar 31 2:00s - 8:00 Russia YAK%sT 1992 Jan 19 2:00s - 9:00 Russia YAK%sT 2011 Mar 27 2:00s - 10:00 - YAKT 2014 Oct 26 2:00s - 9:00 - YAKT + 8:00 - +08 1930 Jun 21 + 9:00 Russia +09/+10 1991 Mar 31 2:00s + 8:00 Russia +08/+09 1992 Jan 19 2:00s + 9:00 Russia +09/+10 2011 Mar 27 2:00s + 10:00 - +10 2014 Oct 26 2:00s + 9:00 - +09 # From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2009-11-29): @@ -2958,12 +3025,12 @@ Zone Asia/Yakutsk 8:38:58 - LMT 1919 Dec 15 # Go with Byalokoz. Zone Asia/Vladivostok 8:47:31 - LMT 1922 Nov 15 - 9:00 - VLAT 1930 Jun 21 # Vladivostok Time - 10:00 Russia VLA%sT 1991 Mar 31 2:00s - 9:00 Russia VLA%sT 1992 Jan 19 2:00s - 10:00 Russia VLA%sT 2011 Mar 27 2:00s - 11:00 - VLAT 2014 Oct 26 2:00s - 10:00 - VLAT + 9:00 - +09 1930 Jun 21 + 10:00 Russia +10/+11 1991 Mar 31 2:00s + 9:00 Russia +09/+10 1992 Jan 19 2:00s + 10:00 Russia +10/+11 2011 Mar 27 2:00s + 11:00 - +11 2014 Oct 26 2:00s + 10:00 - +10 # From Tim Parenti (2014-07-03): @@ -2981,14 +3048,14 @@ Zone Asia/Vladivostok 8:47:31 - LMT 1922 Nov 15 # This transition is no doubt wrong, but we have no better info. Zone Asia/Khandyga 9:02:13 - LMT 1919 Dec 15 - 8:00 - YAKT 1930 Jun 21 # Yakutsk Time - 9:00 Russia YAK%sT 1991 Mar 31 2:00s - 8:00 Russia YAK%sT 1992 Jan 19 2:00s - 9:00 Russia YAK%sT 2004 - 10:00 Russia VLA%sT 2011 Mar 27 2:00s - 11:00 - VLAT 2011 Sep 13 0:00s # Decree 725? - 10:00 - YAKT 2014 Oct 26 2:00s - 9:00 - YAKT + 8:00 - +08 1930 Jun 21 + 9:00 Russia +09/+10 1991 Mar 31 2:00s + 8:00 Russia +08/+09 1992 Jan 19 2:00s + 9:00 Russia +09/+10 2004 + 10:00 Russia +10/+11 2011 Mar 27 2:00s + 11:00 - +11 2011 Sep 13 0:00s # Decree 725? + 10:00 - +10 2014 Oct 26 2:00s + 9:00 - +09 # From Tim Parenti (2014-07-03): @@ -3004,15 +3071,14 @@ Zone Asia/Khandyga 9:02:13 - LMT 1919 Dec 15 # The Zone name should be Asia/Yuzhno-Sakhalinsk, but that's too long. Zone Asia/Sakhalin 9:30:48 - LMT 1905 Aug 23 - 9:00 - JCST 1937 Oct 1 - 9:00 - JST 1945 Aug 25 - 11:00 Russia SAK%sT 1991 Mar 31 2:00s # Sakhalin T - 10:00 Russia SAK%sT 1992 Jan 19 2:00s - 11:00 Russia SAK%sT 1997 Mar lastSun 2:00s - 10:00 Russia SAK%sT 2011 Mar 27 2:00s - 11:00 - SAKT 2014 Oct 26 2:00s - 10:00 - SAKT 2016 Mar 27 2:00s - 11:00 - SAKT + 9:00 - +09 1945 Aug 25 + 11:00 Russia +11/+12 1991 Mar 31 2:00s # Sakhalin T + 10:00 Russia +10/+11 1992 Jan 19 2:00s + 11:00 Russia +11/+12 1997 Mar lastSun 2:00s + 10:00 Russia +10/+11 2011 Mar 27 2:00s + 11:00 - +11 2014 Oct 26 2:00s + 10:00 - +10 2016 Mar 27 2:00s + 11:00 - +11 # From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2009-11-29): @@ -3035,13 +3101,13 @@ Zone Asia/Sakhalin 9:30:48 - LMT 1905 Aug 23 # http://publication.pravo.gov.ru/Document/View/0001201604050038 Zone Asia/Magadan 10:03:12 - LMT 1924 May 2 - 10:00 - MAGT 1930 Jun 21 # Magadan Time - 11:00 Russia MAG%sT 1991 Mar 31 2:00s - 10:00 Russia MAG%sT 1992 Jan 19 2:00s - 11:00 Russia MAG%sT 2011 Mar 27 2:00s - 12:00 - MAGT 2014 Oct 26 2:00s - 10:00 - MAGT 2016 Apr 24 2:00s - 11:00 - MAGT + 10:00 - +10 1930 Jun 21 # Magadan Time + 11:00 Russia +11/+12 1991 Mar 31 2:00s + 10:00 Russia +10/+11 1992 Jan 19 2:00s + 11:00 Russia +11/+12 2011 Mar 27 2:00s + 12:00 - +12 2014 Oct 26 2:00s + 10:00 - +10 2016 Apr 24 2:00s + 11:00 - +11 # From Tim Parenti (2014-07-06): @@ -3084,17 +3150,14 @@ Zone Asia/Magadan 10:03:12 - LMT 1924 May 2 # in Russian.) In addition, Srednekolymsk appears to be a much older # settlement and the population of Zyryanka seems to be declining. # Go with Srednekolymsk. -# -# Since Magadan Oblast moves to UTC+10 on 2014-10-26, we cannot keep using MAGT -# as the abbreviation. Use SRET instead. Zone Asia/Srednekolymsk 10:14:52 - LMT 1924 May 2 - 10:00 - MAGT 1930 Jun 21 # Magadan Time - 11:00 Russia MAG%sT 1991 Mar 31 2:00s - 10:00 Russia MAG%sT 1992 Jan 19 2:00s - 11:00 Russia MAG%sT 2011 Mar 27 2:00s - 12:00 - MAGT 2014 Oct 26 2:00s - 11:00 - SRET # Srednekolymsk Time + 10:00 - +10 1930 Jun 21 + 11:00 Russia +11/+12 1991 Mar 31 2:00s + 10:00 Russia +10/+11 1992 Jan 19 2:00s + 11:00 Russia +11/+12 2011 Mar 27 2:00s + 12:00 - +12 2014 Oct 26 2:00s + 11:00 - +11 # From Tim Parenti (2014-07-03): @@ -3112,14 +3175,14 @@ Zone Asia/Srednekolymsk 10:14:52 - LMT 1924 May 2 # UTC+12 since at least then, too. Zone Asia/Ust-Nera 9:32:54 - LMT 1919 Dec 15 - 8:00 - YAKT 1930 Jun 21 # Yakutsk Time - 9:00 Russia YAKT 1981 Apr 1 - 11:00 Russia MAG%sT 1991 Mar 31 2:00s - 10:00 Russia MAG%sT 1992 Jan 19 2:00s - 11:00 Russia MAG%sT 2011 Mar 27 2:00s - 12:00 - MAGT 2011 Sep 13 0:00s # Decree 725? - 11:00 - VLAT 2014 Oct 26 2:00s - 10:00 - VLAT + 8:00 - +08 1930 Jun 21 + 9:00 Russia +09/+10 1981 Apr 1 + 11:00 Russia +11/+12 1991 Mar 31 2:00s + 10:00 Russia +10/+11 1992 Jan 19 2:00s + 11:00 Russia +11/+12 2011 Mar 27 2:00s + 12:00 - +12 2011 Sep 13 0:00s # Decree 725? + 11:00 - +11 2014 Oct 26 2:00s + 10:00 - +10 # From Tim Parenti (2014-07-03), per Oscar van Vlijmen (2001-08-25): @@ -3132,12 +3195,12 @@ Zone Asia/Ust-Nera 9:32:54 - LMT 1919 Dec 15 # The Zone name should be Asia/Petropavlovsk-Kamchatski or perhaps # Asia/Petropavlovsk-Kamchatsky, but these are too long. Zone Asia/Kamchatka 10:34:36 - LMT 1922 Nov 10 - 11:00 - PETT 1930 Jun 21 # P-K Time - 12:00 Russia PET%sT 1991 Mar 31 2:00s - 11:00 Russia PET%sT 1992 Jan 19 2:00s - 12:00 Russia PET%sT 2010 Mar 28 2:00s - 11:00 Russia PET%sT 2011 Mar 27 2:00s - 12:00 - PETT + 11:00 - +11 1930 Jun 21 + 12:00 Russia +12/+13 1991 Mar 31 2:00s + 11:00 Russia +11/+12 1992 Jan 19 2:00s + 12:00 Russia +12/+13 2010 Mar 28 2:00s + 11:00 Russia +11/+12 2011 Mar 27 2:00s + 12:00 - +12 # From Tim Parenti (2014-07-03): @@ -3145,13 +3208,13 @@ Zone Asia/Kamchatka 10:34:36 - LMT 1922 Nov 10 # 87 RU-CHU Chukotka Autonomous Okrug Zone Asia/Anadyr 11:49:56 - LMT 1924 May 2 - 12:00 - ANAT 1930 Jun 21 # Anadyr Time - 13:00 Russia ANA%sT 1982 Apr 1 0:00s - 12:00 Russia ANA%sT 1991 Mar 31 2:00s - 11:00 Russia ANA%sT 1992 Jan 19 2:00s - 12:00 Russia ANA%sT 2010 Mar 28 2:00s - 11:00 Russia ANA%sT 2011 Mar 27 2:00s - 12:00 - ANAT + 12:00 - +12 1930 Jun 21 + 13:00 Russia +13/+14 1982 Apr 1 0:00s + 12:00 Russia +12/+13 1991 Mar 31 2:00s + 11:00 Russia +11/+12 1992 Jan 19 2:00s + 12:00 Russia +12/+13 2010 Mar 28 2:00s + 11:00 Russia +11/+12 2011 Mar 27 2:00s + 12:00 - +12 # San Marino @@ -3182,46 +3245,77 @@ Link Europe/Prague Europe/Bratislava # See Europe/Belgrade. # Spain +# +# From Paul Eggert (2016-12-14): +# +# The source for Europe/Madrid before 2013 is: +# Planesas P. La hora oficial en España y sus cambios. +# Anuario del Observatorio Astronómico de Madrid (2013, in Spanish). +# http://astronomia.ign.es/rknowsys-theme/images/webAstro/paginas/documentos/Anuario/lahoraoficialenespana.pdf +# As this source says that historical time in the Canaries is obscure, +# and it does not discuss Ceuta, stick with Shanks for now for that data. +# +# In the 1918 and 1919 fallback transitions in Spain, the clock for +# the hour-longer day officially kept going after midnight, so that +# the repeated instances of that day's 00:00 hour were 24 hours apart, +# with a fallback transition from the second occurrence of 00:59... to +# the next day's 00:00. Our data format cannot represent this +# directly, and instead repeats the first hour of the next day, with a +# fallback transition from the next day's 00:59... to 00:00. + +# From Michael Deckers (2016-12-15): +# The Royal Decree of 1900-06-26 quoted by Planesas, online at +# https://www.boe.es/datos/pdfs/BOE//1900/209/A00383-00384.pdf +# says in its article 5 (my translation): +# These dispositions will enter into force beginning with the +# instant at which, according to the time indicated in article 1, +# the 1st day of January of 1901 will begin. + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -# For 1917-1919 Whitman gives Apr Sat>=1 - Oct Sat>=1; -# go with Shanks & Pottenger. -Rule Spain 1917 only - May 5 23:00s 1:00 S -Rule Spain 1917 1919 - Oct 6 23:00s 0 - -Rule Spain 1918 only - Apr 15 23:00s 1:00 S -Rule Spain 1919 only - Apr 5 23:00s 1:00 S -# Whitman gives 1921 Feb 28 - Oct 14; go with Shanks & Pottenger. -Rule Spain 1924 only - Apr 16 23:00s 1:00 S -# Whitman gives 1924 Oct 14; go with Shanks & Pottenger. -Rule Spain 1924 only - Oct 4 23:00s 0 - -Rule Spain 1926 only - Apr 17 23:00s 1:00 S -# Whitman says no DST in 1929; go with Shanks & Pottenger. -Rule Spain 1926 1929 - Oct Sat>=1 23:00s 0 - -Rule Spain 1927 only - Apr 9 23:00s 1:00 S -Rule Spain 1928 only - Apr 14 23:00s 1:00 S -Rule Spain 1929 only - Apr 20 23:00s 1:00 S -# Whitman gives 1937 Jun 16, 1938 Apr 16, 1940 Apr 13; -# go with Shanks & Pottenger. -Rule Spain 1937 only - May 22 23:00s 1:00 S -Rule Spain 1937 1939 - Oct Sat>=1 23:00s 0 - -Rule Spain 1938 only - Mar 22 23:00s 1:00 S -Rule Spain 1939 only - Apr 15 23:00s 1:00 S -Rule Spain 1940 only - Mar 16 23:00s 1:00 S -# Whitman says no DST 1942-1945; go with Shanks & Pottenger. -Rule Spain 1942 only - May 2 22:00s 2:00 M # Midsummer -Rule Spain 1942 only - Sep 1 22:00s 1:00 S -Rule Spain 1943 1946 - Apr Sat>=13 22:00s 2:00 M -Rule Spain 1943 only - Oct 3 22:00s 1:00 S -Rule Spain 1944 only - Oct 10 22:00s 1:00 S -Rule Spain 1945 only - Sep 30 1:00 1:00 S -Rule Spain 1946 only - Sep 30 0:00 0 - +Rule Spain 1918 only - Apr 15 23:00 1:00 S +Rule Spain 1918 1919 - Oct 6 24:00s 0 - +Rule Spain 1919 only - Apr 6 23:00 1:00 S +Rule Spain 1924 only - Apr 16 23:00 1:00 S +Rule Spain 1924 only - Oct 4 24:00s 0 - +Rule Spain 1926 only - Apr 17 23:00 1:00 S +Rule Spain 1926 1929 - Oct Sat>=1 24:00s 0 - +Rule Spain 1927 only - Apr 9 23:00 1:00 S +Rule Spain 1928 only - Apr 15 0:00 1:00 S +Rule Spain 1929 only - Apr 20 23:00 1:00 S +# Republican Spain during the civil war; it controlled Madrid until 1939-03-28. +Rule Spain 1937 only - Jun 16 23:00 1:00 S +Rule Spain 1937 only - Oct 2 24:00s 0 - +Rule Spain 1938 only - Apr 2 23:00 1:00 S +Rule Spain 1938 only - Apr 30 23:00 2:00 M +Rule Spain 1938 only - Oct 2 24:00 1:00 S +# The following rules are for unified Spain again. +# +# Planesas does not say what happened in Madrid between its fall on +# 1939-03-28 and the Nationalist spring-forward transition on +# 1939-04-15. For lack of better info, assume Madrid's clocks did not +# change during that period. +# +# The first rule is commented out, as it is redundant for Republican Spain. +#Rule Spain 1939 only - Apr 15 23:00 1:00 S +Rule Spain 1939 only - Oct 7 24:00s 0 - +Rule Spain 1942 only - May 2 23:00 1:00 S +Rule Spain 1942 only - Sep 1 1:00 0 - +Rule Spain 1943 1946 - Apr Sat>=13 23:00 1:00 S +Rule Spain 1943 1944 - Oct Sun>=1 1:00 0 - +Rule Spain 1945 1946 - Sep lastSun 1:00 0 - Rule Spain 1949 only - Apr 30 23:00 1:00 S -Rule Spain 1949 only - Sep 30 1:00 0 - -Rule Spain 1974 1975 - Apr Sat>=13 23:00 1:00 S +Rule Spain 1949 only - Oct 2 1:00 0 - +Rule Spain 1974 1975 - Apr Sat>=12 23:00 1:00 S Rule Spain 1974 1975 - Oct Sun>=1 1:00 0 - Rule Spain 1976 only - Mar 27 23:00 1:00 S Rule Spain 1976 1977 - Sep lastSun 1:00 0 - -Rule Spain 1977 1978 - Apr 2 23:00 1:00 S -Rule Spain 1978 only - Oct 1 1:00 0 - +Rule Spain 1977 only - Apr 2 23:00 1:00 S +Rule Spain 1978 only - Apr 2 2:00s 1:00 S +Rule Spain 1978 only - Oct 1 2:00s 0 - +# Nationalist Spain during the civil war +#Rule NatSpain 1937 only - May 22 23:00 1:00 S +#Rule NatSpain 1937 1938 - Oct Sat>=1 24:00s 0 - +#Rule NatSpain 1938 only - Mar 26 23:00 1:00 S # The following rules are copied from Morocco from 1967 through 1978. Rule SpainAfrica 1967 only - Jun 3 12:00 1:00 S Rule SpainAfrica 1967 only - Oct 1 0:00 0 - @@ -3233,11 +3327,11 @@ Rule SpainAfrica 1977 only - Sep 28 0:00 0 - Rule SpainAfrica 1978 only - Jun 1 0:00 1:00 S Rule SpainAfrica 1978 only - Aug 4 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone Europe/Madrid -0:14:44 - LMT 1901 Jan 1 0:00s - 0:00 Spain WE%sT 1946 Sep 30 +Zone Europe/Madrid -0:14:44 - LMT 1900 Dec 31 23:45:16 + 0:00 Spain WE%sT 1940 Mar 16 23:00 1:00 Spain CE%sT 1979 1:00 EU CE%sT -Zone Africa/Ceuta -0:21:16 - LMT 1901 +Zone Africa/Ceuta -0:21:16 - LMT 1900 Dec 31 23:38:44 0:00 - WET 1918 May 6 23:00 0:00 1:00 WEST 1918 Oct 7 23:00 0:00 - WET 1924 @@ -3246,7 +3340,7 @@ Zone Africa/Ceuta -0:21:16 - LMT 1901 1:00 - CET 1986 1:00 EU CE%sT Zone Atlantic/Canary -1:01:36 - LMT 1922 Mar # Las Palmas de Gran C. - -1:00 - CANT 1946 Sep 30 1:00 # Canaries T + -1:00 - -01 1946 Sep 30 1:00 0:00 - WET 1980 Apr 6 0:00s 0:00 1:00 WEST 1980 Sep 28 1:00u 0:00 EU WE%sT @@ -3410,22 +3504,24 @@ Zone Europe/Zurich 0:34:08 - LMT 1853 Jul 16 # See above comment. # Turkey -# From Amar Devegowda (2007-01-03): -# The time zone rules for Istanbul, Turkey have not been changed for years now. -# ... The latest rules are available at: -# http://www.timeanddate.com/worldclock/timezone.html?n=107 -# From Steffen Thorsen (2007-01-03): -# I have been able to find press records back to 1996 which all say that -# DST started 01:00 local time and end at 02:00 local time. I am not sure -# what happened before that. One example for each year from 1996 to 2001: -# http://newspot.byegm.gov.tr/arsiv/1996/21/N4.htm -# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING97/03/97X03X25.TXT -# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING98/03/98X03X02.HTM -# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING99/10/99X10X26.HTM#%2016 -# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING2000/03/00X03X06.HTM#%2021 -# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING2001/03/23x03x01.HTM#%2027 -# From Paul Eggert (2007-01-03): -# Prefer the above source to Shanks & Pottenger for time stamps after 1990. +# From Kıvanç Yazan (2016-09-25): +# 1) For 1986-2006, DST started at 01:00 local and ended at 02:00 local, with +# no exceptions. +# 2) 1994's lastSun was overridden with Mar 20 ... +# Here are official papers: +# http://www.resmigazete.gov.tr/arsiv/19032.pdf - page 2 for 1986 +# http://www.resmigazete.gov.tr/arsiv/19400.pdf - page 4 for 1987 +# http://www.resmigazete.gov.tr/arsiv/19752.pdf - page 15 for 1988 +# http://www.resmigazete.gov.tr/arsiv/20102.pdf - page 6 for 1989 +# http://www.resmigazete.gov.tr/arsiv/20464.pdf - page 1 for 1990 - 1992 +# http://www.resmigazete.gov.tr/arsiv/21531.pdf - page 15 for 1993 - 1995 +# http://www.resmigazete.gov.tr/arsiv/21879.pdf - page 1 for overriding 1994 +# http://www.resmigazete.gov.tr/arsiv/22588.pdf - page 1 for 1996, 1997 +# http://www.resmigazete.gov.tr/arsiv/23286.pdf - page 10 for 1998 - 2000 +# http://www.resmigazete.gov.tr/eskiler/2001/03/20010324.htm#2 - for 2001 +# http://www.resmigazete.gov.tr/eskiler/2002/03/20020316.htm#2 - for 2002-2006 +# From Paul Eggert (2016-09-25): +# Prefer the above sources to Shanks & Pottenger for time stamps after 1985. # From Steffen Thorsen (2007-03-09): # Starting 2007 though, it seems that they are adopting EU's 1:00 UTC @@ -3472,6 +3568,14 @@ Zone Europe/Zurich 0:34:08 - LMT 1853 Jul 16 # See above comment. # Engineered Standard Time," said Twitter user @aysekarahasan. # http://www.bbc.com/news/world-europe-34631326 +# From Burak AYDIN (2016-09-08): +# Turkey will stay in Daylight Saving Time even in winter.... +# http://www.resmigazete.gov.tr/eskiler/2016/09/20160908-2.pdf +# +# From Paul Eggert (2016-09-07): +# The change is permanent, so this is the new standard time in Turkey. +# It takes effect today, which is not much notice. + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Turkey 1916 only - May 1 0:00 1:00 S Rule Turkey 1916 only - Oct 1 0:00 0 - @@ -3526,16 +3630,16 @@ Rule Turkey 1983 only - Jul 31 0:00 1:00 S Rule Turkey 1983 only - Oct 2 0:00 0 - Rule Turkey 1985 only - Apr 20 0:00 1:00 S Rule Turkey 1985 only - Sep 28 0:00 0 - -Rule Turkey 1986 1990 - Mar lastSun 2:00s 1:00 S -Rule Turkey 1986 1990 - Sep lastSun 2:00s 0 - -Rule Turkey 1991 2006 - Mar lastSun 1:00s 1:00 S -Rule Turkey 1991 1995 - Sep lastSun 1:00s 0 - +Rule Turkey 1986 1993 - Mar lastSun 1:00s 1:00 S +Rule Turkey 1986 1995 - Sep lastSun 1:00s 0 - +Rule Turkey 1994 only - Mar 20 1:00s 1:00 S +Rule Turkey 1995 2006 - Mar lastSun 1:00s 1:00 S Rule Turkey 1996 2006 - Oct lastSun 1:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Istanbul 1:55:52 - LMT 1880 1:56:56 - IMT 1910 Oct # Istanbul Mean Time? 2:00 Turkey EE%sT 1978 Oct 15 - 3:00 Turkey TR%sT 1985 Apr 20 # Turkey Time + 3:00 Turkey +03/+04 1985 Apr 20 2:00 Turkey EE%sT 2007 2:00 EU EE%sT 2011 Mar 27 1:00u 2:00 - EET 2011 Mar 28 1:00u @@ -3543,7 +3647,8 @@ Zone Europe/Istanbul 1:55:52 - LMT 1880 2:00 - EET 2014 Mar 31 1:00u 2:00 EU EE%sT 2015 Oct 25 1:00u 2:00 1:00 EEST 2015 Nov 8 1:00u - 2:00 EU EE%sT + 2:00 EU EE%sT 2016 Sep 7 + 3:00 - +03 Link Europe/Istanbul Asia/Istanbul # Istanbul is in both continents. # Ukraine @@ -3648,7 +3753,7 @@ Zone Europe/Uzhgorod 1:29:12 - LMT 1890 Oct # spelling, except omit the apostrophe as it is not allowed in # portable Posix file names. Zone Europe/Zaporozhye 2:20:40 - LMT 1880 - 2:20 - CUT 1924 May 2 # Central Ukraine T + 2:20 - +0220 1924 May 2 2:00 - EET 1930 Jun 21 3:00 - MSK 1941 Aug 25 1:00 C-Eur CE%sT 1943 Oct 25 diff --git a/src/timezone/data/factory b/src/timezone/data/factory index 4304f7cf7b..75fa4a11c3 100644 --- a/src/timezone/data/factory +++ b/src/timezone/data/factory @@ -1,9 +1,10 @@ # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. -# For companies who don't want to put time zone specification in -# their installation procedures. When users run date, they'll get the message. -# Also useful for the "comp.sources" version. +# For distributors who don't want to put time zone specification in +# their installation procedures. Users that run 'date' will get the +# time zone abbreviation "-00", indicating that the actual time zone +# is unknown. # Zone NAME GMTOFF RULES FORMAT -Zone Factory 0 - "Local time zone must be set--see zic manual page" +Zone Factory 0 - -00 diff --git a/src/timezone/data/northamerica b/src/timezone/data/northamerica index 6256f970a8..6ede9dcd96 100644 --- a/src/timezone/data/northamerica +++ b/src/timezone/data/northamerica @@ -24,8 +24,32 @@ # was the result of his proposals at the Convention of Railroad Trunk Lines # in New York City (1869-10). His 1870 proposal was based on Washington, DC, # but in 1872-05 he moved the proposed origin to Greenwich. -# His proposal was adopted by the railroads on 1883-11-18 at 12:00, -# and the most of the country soon followed suit. + +# From Paul Eggert (2016-09-21): +# Dowd's proposal left many details unresolved, such as where to draw +# lines between time zones. The key individual who made time zones +# work in the US was William Frederick Allen - railway engineer, +# managing editor of the Travelers' Guide, and secretary of the +# General Time Convention, a railway standardization group. Allen +# spent months in dialogs with scientific and railway leaders, +# developed a workable plan to institute time zones, and presented it +# to the General Time Convention on 1883-04-11, saying that his plan +# meant "local time would be practically abolished" - a plus for +# railway scheduling. By the next convention on 1883-10-11 nearly all +# railroads had agreed and it took effect on 1883-11-18 at 12:00. +# That Sunday was called the "day of two noons", as the eastern parts +# of the new zones observed noon twice. Allen witnessed the +# transition in New York City, writing: +# +# I heard the bells of St. Paul's strike on the old time. Four +# minutes later, obedient to the electrical signal from the Naval +# Observatory ... the time-ball made its rapid descent, the chimes +# of old Trinity rang twelve measured strokes, and local time was +# abandoned, probably forever. +# +# Most of the US soon followed suit. See: +# Bartky IR. The adoption of standard time. Technol Cult 1989 Jan;30(1):25-56. +# http://dx.doi.org/10.2307/3105430 # From Paul Eggert (2005-04-16): # That 1883 transition occurred at 12:00 new time, not at 12:00 old time. @@ -154,22 +178,6 @@ Zone CST6CDT -6:00 US C%sT Zone MST7MDT -7:00 US M%sT Zone PST8PDT -8:00 US P%sT -# From Bob Devine (1988-01-28): -# ...Alaska (and Hawaii) had the timezone names changed in 1967. -# old new -# Pacific Standard Time(PST) -same- -# Yukon Standard Time(YST) -same- -# Central Alaska S.T. (CAT) Alaska-Hawaii St[an]dard Time (AHST) -# Nome Standard Time (NT) Bering Standard Time (BST) -# -# ...Alaska's timezone lines were redrawn in 1983 to give only 2 tz. -# The YST zone now covers nearly all of the state, AHST just part -# of the Aleutian islands. No DST. - -# From Paul Eggert (1995-12-19): -# The tables below use 'NST', not 'NT', for Nome Standard Time. -# I invented 'CAWT' for Central Alaska War Time. - # From U. S. Naval Observatory (1989-01-19): # USA EASTERN 5 H BEHIND UTC NEW YORK, WASHINGTON # USA EASTERN 4 H BEHIND UTC APR 3 - OCT 30 @@ -226,6 +234,21 @@ Zone PST8PDT -8:00 US P%sT # Samoa standard time # The law doesn't give abbreviations. # +# From Paul Eggert (2016-12-19): +# Here are URLs for the 1918 and 1966 legislation: +# http://uscode.house.gov/statviewer.htm?volume=40&page=451 +# http://uscode.house.gov/statviewer.htm?volume=80&page=108 +# Although the 1918 names were officially "United States Standard +# Eastern Time" and similarly for "Central", "Mountain", "Pacific", +# and "Alaska", in practice "Standard" was placed just before "Time", +# as codified in 1966. In practice, Alaska time was abbreviated "AST" +# before 1968. Summarizing the 1967 name changes: +# 1918 names 1967 names +# -08 Standard Pacific Time (PST) Pacific standard time (PST) +# -09 (unofficial) Yukon (YST) Yukon standard time (YST) +# -10 Standard Alaska Time (AST) Alaska-Hawaii standard time (AHST) +# -11 (unofficial) Nome (NST) Bering standard time (BST) +# # From Paul Eggert (2000-01-08), following a heads-up from Rives McDow: # Public law 106-564 (2000-12-23) introduced ... "Chamorro Standard Time" # for time in Guam and the Northern Marianas. See the file "australasia". @@ -281,6 +304,15 @@ Zone PST8PDT -8:00 US P%sT # Roberts, city administrator in Phenix City. as saying "We are in the Central # time zone, but we do go by the Eastern time zone because so many people work # in Columbus." +# +# From Paul Eggert (2017-02-22): +# Four cities are involved. The two not mentioned above are Smiths Station +# and Valley. Barbara Brooks, Valley's assistant treasurer, heard it started +# because West Point Pepperell textile mills were in Alabama while the +# corporate office was in Georgia, and residents voted to keep Eastern +# time even after the mills closed. See: Kazek K. Did you know which +# Alabama towns are in a different time zone? al.com 2017-02-06. +# http://www.al.com/living/index.ssf/2017/02/do_you_know_which_alabama_town.html # From Paul Eggert (2014-09-06): # Monthly Notices of the Royal Astronomical Society 44, 4 (1884-02-08), 208 @@ -413,11 +445,42 @@ Zone America/Denver -6:59:56 - LMT 1883 Nov 18 12:00:04 # north of the Salmon River, and the towns of Burgdorf and Warren), # Nevada (except West Wendover), Oregon (except the northern 3/4 of # Malheur county), and Washington + +# From Paul Eggert (2016-08-20): +# In early February 1948, in response to California's electricity shortage, +# PG&E changed power frequency from 60 to 59.5 Hz during daylight hours, +# causing electric clocks to lose six minutes per day. (This did not change +# legal time, and is not part of the data here.) See: +# Ross SA. An energy crisis from the past: Northern California in 1948. +# Working Paper No. 8, Institute of Governmental Studies, UC Berkeley, +# 1973-11. http://escholarship.org/uc/item/8x22k30c +# +# In another measure to save electricity, DST was instituted from 1948-03-14 +# at 02:01 to 1949-01-16 at 02:00, with the governor having the option to move +# the fallback transition earlier. See pages 3-4 of: +# http://clerk.assembly.ca.gov/sites/clerk.assembly.ca.gov/files/archive/Statutes/1948/48Vol1_Chapters.pdf +# +# In response: +# +# Governor Warren received a torrent of objecting mail, and it is not too much +# to speculate that the objections to Daylight Saving Time were one important +# factor in the defeat of the Dewey-Warren Presidential ticket in California. +# -- Ross, p 25 +# +# On December 8 the governor exercised the option, setting the date to January 1 +# (LA Times 1948-12-09). The transition time was 02:00 (LA Times 1949-01-01). +# +# Despite the controversy, in 1949 California voters approved Proposition 12, +# which established DST from April's last Sunday at 01:00 until September's +# last Sunday at 02:00. This was amended by 1962's Proposition 6, which changed +# the fall-back date to October's last Sunday. See: +# http://repository.uchastings.edu/cgi/viewcontent.cgi?article=1501&context=ca_ballot_props +# http://repository.uchastings.edu/cgi/viewcontent.cgi?article=1636&context=ca_ballot_props # # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER -Rule CA 1948 only - Mar 14 2:00 1:00 D +Rule CA 1948 only - Mar 14 2:01 1:00 D Rule CA 1949 only - Jan 1 2:00 0 S -Rule CA 1950 1966 - Apr lastSun 2:00 1:00 D +Rule CA 1950 1966 - Apr lastSun 1:00 1:00 D Rule CA 1950 1961 - Sep lastSun 2:00 0 S Rule CA 1962 1966 - Oct lastSun 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -427,7 +490,7 @@ Zone America/Los_Angeles -7:52:58 - LMT 1883 Nov 18 12:07:02 -8:00 US P%sT # Alaska -# AK%sT is the modern abbreviation for -9:00 per USNO. +# AK%sT is the modern abbreviation for -09 per USNO. # # From Paul Eggert (2001-05-30): # Howse writes that Alaska switched from the Julian to the Gregorian calendar, @@ -533,10 +596,8 @@ Zone America/Yakutat 14:41:05 - LMT 1867 Oct 18 -9:00 US AK%sT Zone America/Anchorage 14:00:24 - LMT 1867 Oct 18 -9:59:36 - LMT 1900 Aug 20 12:00 - -10:00 - CAT 1942 - -10:00 US CAT/CAWT 1945 Aug 14 23:00u - -10:00 US CAT/CAPT 1946 # Peace - -10:00 - CAT 1967 Apr + -10:00 - AST 1942 + -10:00 US A%sT 1967 Apr -10:00 - AHST 1969 -10:00 US AH%sT 1983 Oct 30 2:00 -9:00 US Y%sT 1983 Nov 30 @@ -625,7 +686,6 @@ Zone Pacific/Honolulu -10:31:26 - LMT 1896 Jan 13 12:00 -10:30 1:00 HDT 1945 Sep 30 2:00 -10:30 - HST 1947 Jun 8 2:00 -10:00 - HST -Link Pacific/Honolulu Pacific/Johnston # Now we turn to US areas that have diverged from the consensus since 1970. @@ -1013,15 +1073,15 @@ Zone America/Menominee -5:50:27 - LMT 1885 Sep 18 12:00 ################################################################################ -# From Paul Eggert (2014-10-31): +# From Paul Eggert (2017-02-10): # # Unless otherwise specified, the source for data through 1990 is: # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition), # San Diego: ACS Publications, Inc. (2003). # Unfortunately this book contains many errors and cites no sources. # -# Gwillim Law writes that a good source -# for recent time zone data is the International Air Transport +# Many years ago Gwillim Law wrote that a good source +# for time zone data was the International Air Transport # Association's Standard Schedules Information Manual (IATA SSIM), # published semiannually. Law sent in several helpful summaries # of the IATA's data after 1990. Except where otherwise noted, @@ -2679,15 +2739,15 @@ Zone America/Barbados -3:58:29 - LMT 1924 # Bridgetown # Belize # Whitman entirely disagrees with Shanks; go with Shanks & Pottenger. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Belize 1918 1942 - Oct Sun>=2 0:00 0:30 HD -Rule Belize 1919 1943 - Feb Sun>=9 0:00 0 S -Rule Belize 1973 only - Dec 5 0:00 1:00 D -Rule Belize 1974 only - Feb 9 0:00 0 S -Rule Belize 1982 only - Dec 18 0:00 1:00 D -Rule Belize 1983 only - Feb 12 0:00 0 S +Rule Belize 1918 1942 - Oct Sun>=2 0:00 0:30 -0530 +Rule Belize 1919 1943 - Feb Sun>=9 0:00 0 CST +Rule Belize 1973 only - Dec 5 0:00 1:00 CDT +Rule Belize 1974 only - Feb 9 0:00 0 CST +Rule Belize 1982 only - Dec 18 0:00 1:00 CDT +Rule Belize 1983 only - Feb 12 0:00 0 CST # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Belize -5:52:48 - LMT 1912 Apr - -6:00 Belize C%sT + -6:00 Belize %s # Bermuda @@ -2959,16 +3019,16 @@ Zone America/Havana -5:29:28 - LMT 1890 # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule DR 1966 only - Oct 30 0:00 1:00 D -Rule DR 1967 only - Feb 28 0:00 0 S -Rule DR 1969 1973 - Oct lastSun 0:00 0:30 HD -Rule DR 1970 only - Feb 21 0:00 0 S -Rule DR 1971 only - Jan 20 0:00 0 S -Rule DR 1972 1974 - Jan 21 0:00 0 S +Rule DR 1966 only - Oct 30 0:00 1:00 EDT +Rule DR 1967 only - Feb 28 0:00 0 EST +Rule DR 1969 1973 - Oct lastSun 0:00 0:30 -0430 +Rule DR 1970 only - Feb 21 0:00 0 EST +Rule DR 1971 only - Jan 20 0:00 0 EST +Rule DR 1972 1974 - Jan 21 0:00 0 EST # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Santo_Domingo -4:39:36 - LMT 1890 -4:40 - SDMT 1933 Apr 1 12:00 # S. Dom. MT - -5:00 DR E%sT 1974 Oct 27 + -5:00 DR %s 1974 Oct 27 -4:00 - AST 2000 Oct 29 2:00 -5:00 US E%sT 2000 Dec 3 1:00 -4:00 - AST @@ -3079,6 +3139,12 @@ Zone America/Guatemala -6:02:04 - LMT 1918 Oct 5 # http://www.vantbefinfo.com/changement-dheure-pas-pour-haiti/ # http://news.anmwe.com/haiti-lheure-nationale-ne-sera-ni-avancee-ni-reculee-cette-annee/ +# From Steffen Thorsen (2017-03-12): +# We have received 4 mails from different people telling that Haiti +# has started DST again today, and this source seems to confirm that, +# I have not been able to find a more authoritative source: +# https://www.haitilibre.com/en/news-20319-haiti-notices-time-change-in-haiti.html + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Haiti 1983 only - May 8 0:00 1:00 D Rule Haiti 1984 1987 - Apr lastSun 0:00 1:00 D @@ -3091,6 +3157,8 @@ Rule Haiti 2005 2006 - Apr Sun>=1 0:00 1:00 D Rule Haiti 2005 2006 - Oct lastSun 0:00 0 S Rule Haiti 2012 2015 - Mar Sun>=8 2:00 1:00 D Rule Haiti 2012 2015 - Nov Sun>=1 2:00 0 S +Rule Haiti 2017 max - Mar Sun>=8 2:00 1:00 D +Rule Haiti 2017 max - Nov Sun>=1 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Port-au-Prince -4:49:20 - LMT 1890 -4:49 - PPMT 1917 Jan 24 12:00 # P-a-P MT @@ -3258,8 +3326,8 @@ Zone America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12:00 # San Juan # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Miquelon -3:44:40 - LMT 1911 May 15 # St Pierre -4:00 - AST 1980 May - -3:00 - PMST 1987 # Pierre & Miquelon Time - -3:00 Canada PM%sT + -3:00 - -03 1987 + -3:00 Canada -03/-02 # St Vincent and the Grenadines # See America/Port_of_Spain. @@ -3281,7 +3349,7 @@ Zone America/Miquelon -3:44:40 - LMT 1911 May 15 # St Pierre # indicating that the normal ET rules are followed. # # From Paul Eggert (2014-08-19): -# The 2014-08-13 Cabinet meeting decided to stay on UTC-4 year-round. See: +# The 2014-08-13 Cabinet meeting decided to stay on UT -04 year-round. See: # http://tcweeklynews.com/daylight-savings-time-to-be-maintained-p5353-127.htm # Model this as a switch from EST/EDT to AST ... # From Chris Walton (2014-11-04): diff --git a/src/timezone/data/southamerica b/src/timezone/data/southamerica index 1c38f63d1c..6038c3b65c 100644 --- a/src/timezone/data/southamerica +++ b/src/timezone/data/southamerica @@ -6,15 +6,15 @@ # tz@iana.org for general use in the future). For more, please see # the file CONTRIBUTING in the tz distribution. -# From Paul Eggert (2014-10-31): +# From Paul Eggert (2016-12-05): # # Unless otherwise specified, the source for data through 1990 is: # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition), # San Diego: ACS Publications, Inc. (2003). # Unfortunately this book contains many errors and cites no sources. # -# Gwillim Law writes that a good source -# for recent time zone data is the International Air Transport +# Many years ago Gwillim Law wrote that a good source +# for time zone data was the International Air Transport # Association's Standard Schedules Information Manual (IATA SSIM), # published semiannually. Law sent in several helpful summaries # of the IATA's data after 1990. Except where otherwise noted, @@ -24,32 +24,10 @@ # Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94. # http://www.jstor.org/stable/1774359 # -# Earlier editions of these tables used the North American style (e.g. ARST and -# ARDT for Argentine Standard and Daylight Time), but the following quote -# suggests that it's better to use European style (e.g. ART and ARST). -# I suggest the use of _Summer time_ instead of the more cumbersome -# _daylight-saving time_. _Summer time_ seems to be in general use -# in Europe and South America. -# -- E O Cutler, _New York Times_ (1937-02-14), quoted in -# H L Mencken, _The American Language: Supplement I_ (1960), p 466 -# -# Earlier editions of these tables also used the North American style -# for time zones in Brazil, but this was incorrect, as Brazilians say -# "summer time". Reinaldo Goulart, a São Paulo businessman active in -# the railroad sector, writes (1999-07-06): -# The subject of time zones is currently a matter of discussion/debate in -# Brazil. Let's say that "the Brasília time" is considered the -# "official time" because Brasília is the capital city. -# The other three time zones are called "Brasília time "minus one" or -# "plus one" or "plus two". As far as I know there is no such -# name/designation as "Eastern Time" or "Central Time". -# So I invented the following (English-language) abbreviations for now. -# Corrections are welcome! -# std dst -# -2:00 FNT FNST Fernando de Noronha -# -3:00 BRT BRST Brasília -# -4:00 AMT AMST Amazon -# -5:00 ACT ACST Acre +# These tables use numeric abbreviations like -03 and -0330 for +# integer hour and minute UTC offsets. Although earlier editions used +# alphabetic time zone abbreviations, these abbreviations were +# invented and did not reflect common practice. ############################################################################### @@ -384,12 +362,6 @@ Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 S # # So I guess a new set of rules, besides "Arg", must be made and the last # America/Argentina/San_Luis entries should change to use these... -# -# I'm enclosing a patch that does what I say... regretfully, the San Luis -# timezone must be called "WART/WARST" even when most of the time (like, -# right now) WARST == ART... that is, since last Sunday, all the country -# is using UTC-3, but in my patch, San Luis calls it "WARST" and the rest -# of the country calls it "ART". # ... # From Alexander Krivenyshev (2010-04-09): @@ -410,9 +382,9 @@ Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 S # stuck on Summer daylight savings time even though the summer is over. # From Paul Eggert (2013-09-05): -# Perhaps San Luis operates on the legal fiction that it is at UTC-4 +# Perhaps San Luis operates on the legal fiction that it is at -04 # with perpetual summer time, but ordinary usage typically seems to -# just say it's at UTC-3; see, for example, +# just say it's at -03; see, for example, # http://es.wikipedia.org/wiki/Hora_oficial_argentina # We've documented similar situations as being plain changes to # standard time, so let's do that here too. This does not change UTC @@ -428,11 +400,11 @@ Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 S # Buenos Aires (BA), Capital Federal (CF), Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May # Córdoba Mean Time - -4:00 - ART 1930 Dec - -4:00 Arg AR%sT 1969 Oct 5 - -3:00 Arg AR%sT 1999 Oct 3 - -4:00 Arg AR%sT 2000 Mar 3 - -3:00 Arg AR%sT + -4:00 - -04 1930 Dec + -4:00 Arg -04/-03 1969 Oct 5 + -3:00 Arg -03/-02 1999 Oct 3 + -4:00 Arg -04/-03 2000 Mar 3 + -3:00 Arg -03/-02 # # Córdoba (CB), Santa Fe (SF), Entre Ríos (ER), Corrientes (CN), Misiones (MN), # Chaco (CC), Formosa (FM), Santiago del Estero (SE) @@ -446,113 +418,113 @@ Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31 # Zone America/Argentina/Cordoba -4:16:48 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May - -4:00 - ART 1930 Dec - -4:00 Arg AR%sT 1969 Oct 5 - -3:00 Arg AR%sT 1991 Mar 3 - -4:00 - WART 1991 Oct 20 - -3:00 Arg AR%sT 1999 Oct 3 - -4:00 Arg AR%sT 2000 Mar 3 - -3:00 Arg AR%sT + -4:00 - -04 1930 Dec + -4:00 Arg -04/-03 1969 Oct 5 + -3:00 Arg -03/-02 1991 Mar 3 + -4:00 - -04 1991 Oct 20 + -3:00 Arg -03/-02 1999 Oct 3 + -4:00 Arg -04/-03 2000 Mar 3 + -3:00 Arg -03/-02 # # Salta (SA), La Pampa (LP), Neuquén (NQ), Rio Negro (RN) Zone America/Argentina/Salta -4:21:40 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May - -4:00 - ART 1930 Dec - -4:00 Arg AR%sT 1969 Oct 5 - -3:00 Arg AR%sT 1991 Mar 3 - -4:00 - WART 1991 Oct 20 - -3:00 Arg AR%sT 1999 Oct 3 - -4:00 Arg AR%sT 2000 Mar 3 - -3:00 Arg AR%sT 2008 Oct 18 - -3:00 - ART + -4:00 - -04 1930 Dec + -4:00 Arg -04/-03 1969 Oct 5 + -3:00 Arg -03/-02 1991 Mar 3 + -4:00 - -04 1991 Oct 20 + -3:00 Arg -03/-02 1999 Oct 3 + -4:00 Arg -04/-03 2000 Mar 3 + -3:00 Arg -03/-02 2008 Oct 18 + -3:00 - -03 # # Tucumán (TM) Zone America/Argentina/Tucuman -4:20:52 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May - -4:00 - ART 1930 Dec - -4:00 Arg AR%sT 1969 Oct 5 - -3:00 Arg AR%sT 1991 Mar 3 - -4:00 - WART 1991 Oct 20 - -3:00 Arg AR%sT 1999 Oct 3 - -4:00 Arg AR%sT 2000 Mar 3 - -3:00 - ART 2004 Jun 1 - -4:00 - WART 2004 Jun 13 - -3:00 Arg AR%sT + -4:00 - -04 1930 Dec + -4:00 Arg -04/-03 1969 Oct 5 + -3:00 Arg -03/-02 1991 Mar 3 + -4:00 - -04 1991 Oct 20 + -3:00 Arg -03/-02 1999 Oct 3 + -4:00 Arg -04/-03 2000 Mar 3 + -3:00 - -03 2004 Jun 1 + -4:00 - -04 2004 Jun 13 + -3:00 Arg -03/-02 # # La Rioja (LR) Zone America/Argentina/La_Rioja -4:27:24 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May - -4:00 - ART 1930 Dec - -4:00 Arg AR%sT 1969 Oct 5 - -3:00 Arg AR%sT 1991 Mar 1 - -4:00 - WART 1991 May 7 - -3:00 Arg AR%sT 1999 Oct 3 - -4:00 Arg AR%sT 2000 Mar 3 - -3:00 - ART 2004 Jun 1 - -4:00 - WART 2004 Jun 20 - -3:00 Arg AR%sT 2008 Oct 18 - -3:00 - ART + -4:00 - -04 1930 Dec + -4:00 Arg -04/-03 1969 Oct 5 + -3:00 Arg -03/-02 1991 Mar 1 + -4:00 - -04 1991 May 7 + -3:00 Arg -03/-02 1999 Oct 3 + -4:00 Arg -04/-03 2000 Mar 3 + -3:00 - -03 2004 Jun 1 + -4:00 - -04 2004 Jun 20 + -3:00 Arg -03/-02 2008 Oct 18 + -3:00 - -03 # # San Juan (SJ) Zone America/Argentina/San_Juan -4:34:04 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May - -4:00 - ART 1930 Dec - -4:00 Arg AR%sT 1969 Oct 5 - -3:00 Arg AR%sT 1991 Mar 1 - -4:00 - WART 1991 May 7 - -3:00 Arg AR%sT 1999 Oct 3 - -4:00 Arg AR%sT 2000 Mar 3 - -3:00 - ART 2004 May 31 - -4:00 - WART 2004 Jul 25 - -3:00 Arg AR%sT 2008 Oct 18 - -3:00 - ART + -4:00 - -04 1930 Dec + -4:00 Arg -04/-03 1969 Oct 5 + -3:00 Arg -03/-02 1991 Mar 1 + -4:00 - -04 1991 May 7 + -3:00 Arg -03/-02 1999 Oct 3 + -4:00 Arg -04/-03 2000 Mar 3 + -3:00 - -03 2004 May 31 + -4:00 - -04 2004 Jul 25 + -3:00 Arg -03/-02 2008 Oct 18 + -3:00 - -03 # # Jujuy (JY) Zone America/Argentina/Jujuy -4:21:12 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May - -4:00 - ART 1930 Dec - -4:00 Arg AR%sT 1969 Oct 5 - -3:00 Arg AR%sT 1990 Mar 4 - -4:00 - WART 1990 Oct 28 - -4:00 1:00 WARST 1991 Mar 17 - -4:00 - WART 1991 Oct 6 - -3:00 1:00 ARST 1992 - -3:00 Arg AR%sT 1999 Oct 3 - -4:00 Arg AR%sT 2000 Mar 3 - -3:00 Arg AR%sT 2008 Oct 18 - -3:00 - ART + -4:00 - -04 1930 Dec + -4:00 Arg -04/-03 1969 Oct 5 + -3:00 Arg -03/-02 1990 Mar 4 + -4:00 - -04 1990 Oct 28 + -4:00 1:00 -03 1991 Mar 17 + -4:00 - -04 1991 Oct 6 + -3:00 1:00 -02 1992 + -3:00 Arg -03/-02 1999 Oct 3 + -4:00 Arg -04/-03 2000 Mar 3 + -3:00 Arg -03/-02 2008 Oct 18 + -3:00 - -03 # # Catamarca (CT), Chubut (CH) Zone America/Argentina/Catamarca -4:23:08 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May - -4:00 - ART 1930 Dec - -4:00 Arg AR%sT 1969 Oct 5 - -3:00 Arg AR%sT 1991 Mar 3 - -4:00 - WART 1991 Oct 20 - -3:00 Arg AR%sT 1999 Oct 3 - -4:00 Arg AR%sT 2000 Mar 3 - -3:00 - ART 2004 Jun 1 - -4:00 - WART 2004 Jun 20 - -3:00 Arg AR%sT 2008 Oct 18 - -3:00 - ART + -4:00 - -04 1930 Dec + -4:00 Arg -04/-03 1969 Oct 5 + -3:00 Arg -03/-02 1991 Mar 3 + -4:00 - -04 1991 Oct 20 + -3:00 Arg -03/-02 1999 Oct 3 + -4:00 Arg -04/-03 2000 Mar 3 + -3:00 - -03 2004 Jun 1 + -4:00 - -04 2004 Jun 20 + -3:00 Arg -03/-02 2008 Oct 18 + -3:00 - -03 # # Mendoza (MZ) Zone America/Argentina/Mendoza -4:35:16 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May - -4:00 - ART 1930 Dec - -4:00 Arg AR%sT 1969 Oct 5 - -3:00 Arg AR%sT 1990 Mar 4 - -4:00 - WART 1990 Oct 15 - -4:00 1:00 WARST 1991 Mar 1 - -4:00 - WART 1991 Oct 15 - -4:00 1:00 WARST 1992 Mar 1 - -4:00 - WART 1992 Oct 18 - -3:00 Arg AR%sT 1999 Oct 3 - -4:00 Arg AR%sT 2000 Mar 3 - -3:00 - ART 2004 May 23 - -4:00 - WART 2004 Sep 26 - -3:00 Arg AR%sT 2008 Oct 18 - -3:00 - ART + -4:00 - -04 1930 Dec + -4:00 Arg -04/-03 1969 Oct 5 + -3:00 Arg -03/-02 1990 Mar 4 + -4:00 - -04 1990 Oct 15 + -4:00 1:00 -03 1991 Mar 1 + -4:00 - -04 1991 Oct 15 + -4:00 1:00 -03 1992 Mar 1 + -4:00 - -04 1992 Oct 18 + -3:00 Arg -03/-02 1999 Oct 3 + -4:00 Arg -04/-03 2000 Mar 3 + -3:00 - -03 2004 May 23 + -4:00 - -04 2004 Sep 26 + -3:00 Arg -03/-02 2008 Oct 18 + -3:00 - -03 # # San Luis (SL) @@ -561,44 +533,44 @@ Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 S Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May - -4:00 - ART 1930 Dec - -4:00 Arg AR%sT 1969 Oct 5 - -3:00 Arg AR%sT 1990 - -3:00 1:00 ARST 1990 Mar 14 - -4:00 - WART 1990 Oct 15 - -4:00 1:00 WARST 1991 Mar 1 - -4:00 - WART 1991 Jun 1 - -3:00 - ART 1999 Oct 3 - -4:00 1:00 WARST 2000 Mar 3 - -3:00 - ART 2004 May 31 - -4:00 - WART 2004 Jul 25 - -3:00 Arg AR%sT 2008 Jan 21 - -4:00 SanLuis WAR%sT 2009 Oct 11 - -3:00 - ART + -4:00 - -04 1930 Dec + -4:00 Arg -04/-03 1969 Oct 5 + -3:00 Arg -03/-02 1990 + -3:00 1:00 -02 1990 Mar 14 + -4:00 - -04 1990 Oct 15 + -4:00 1:00 -03 1991 Mar 1 + -4:00 - -04 1991 Jun 1 + -3:00 - -03 1999 Oct 3 + -4:00 1:00 -03 2000 Mar 3 + -3:00 - -03 2004 May 31 + -4:00 - -04 2004 Jul 25 + -3:00 Arg -03/-02 2008 Jan 21 + -4:00 SanLuis -04/-03 2009 Oct 11 + -3:00 - -03 # # Santa Cruz (SC) Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31 - -4:16:48 - CMT 1920 May # Córdoba Mean Time - -4:00 - ART 1930 Dec - -4:00 Arg AR%sT 1969 Oct 5 - -3:00 Arg AR%sT 1999 Oct 3 - -4:00 Arg AR%sT 2000 Mar 3 - -3:00 - ART 2004 Jun 1 - -4:00 - WART 2004 Jun 20 - -3:00 Arg AR%sT 2008 Oct 18 - -3:00 - ART + -4:16:48 - CMT 1920 May + -4:00 - -04 1930 Dec + -4:00 Arg -04/-03 1969 Oct 5 + -3:00 Arg -03/-02 1999 Oct 3 + -4:00 Arg -04/-03 2000 Mar 3 + -3:00 - -03 2004 Jun 1 + -4:00 - -04 2004 Jun 20 + -3:00 Arg -03/-02 2008 Oct 18 + -3:00 - -03 # # Tierra del Fuego, Antártida e Islas del Atlántico Sur (TF) Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31 - -4:16:48 - CMT 1920 May # Córdoba Mean Time - -4:00 - ART 1930 Dec - -4:00 Arg AR%sT 1969 Oct 5 - -3:00 Arg AR%sT 1999 Oct 3 - -4:00 Arg AR%sT 2000 Mar 3 - -3:00 - ART 2004 May 30 - -4:00 - WART 2004 Jun 20 - -3:00 Arg AR%sT 2008 Oct 18 - -3:00 - ART + -4:16:48 - CMT 1920 May + -4:00 - -04 1930 Dec + -4:00 Arg -04/-03 1969 Oct 5 + -3:00 Arg -03/-02 1999 Oct 3 + -4:00 Arg -04/-03 2000 Mar 3 + -3:00 - -03 2004 May 30 + -4:00 - -04 2004 Jun 20 + -3:00 Arg -03/-02 2008 Oct 18 + -3:00 - -03 # Aruba Link America/Curacao America/Aruba @@ -608,7 +580,7 @@ Link America/Curacao America/Aruba Zone America/La_Paz -4:32:36 - LMT 1890 -4:32:36 - CMT 1931 Oct 15 # Calamarca MT -4:32:36 1:00 BOST 1932 Mar 21 # Bolivia ST - -4:00 - BOT # Bolivia Time + -4:00 - -04 # Brazil @@ -960,12 +932,12 @@ Rule Brazil 2038 max - Feb Sun>=15 0:00 0 - # # Fernando de Noronha (administratively part of PE) Zone America/Noronha -2:09:40 - LMT 1914 - -2:00 Brazil FN%sT 1990 Sep 17 - -2:00 - FNT 1999 Sep 30 - -2:00 Brazil FN%sT 2000 Oct 15 - -2:00 - FNT 2001 Sep 13 - -2:00 Brazil FN%sT 2002 Oct 1 - -2:00 - FNT + -2:00 Brazil -02/-01 1990 Sep 17 + -2:00 - -02 1999 Sep 30 + -2:00 Brazil -02/-01 2000 Oct 15 + -2:00 - -02 2001 Sep 13 + -2:00 Brazil -02/-01 2002 Oct 1 + -2:00 - -02 # Other Atlantic islands have no permanent settlement. # These include Trindade and Martim Vaz (administratively part of ES), # Rocas Atoll (RN), and the St Peter and St Paul Archipelago (PE). @@ -978,119 +950,119 @@ Zone America/Noronha -2:09:40 - LMT 1914 # In the north a very small part from the river Javary (now Jari I guess, # the border with Amapá) to the Amazon, then to the Xingu. Zone America/Belem -3:13:56 - LMT 1914 - -3:00 Brazil BR%sT 1988 Sep 12 - -3:00 - BRT + -3:00 Brazil -03/-02 1988 Sep 12 + -3:00 - -03 # # west Pará (PA) # West Pará includes Altamira, Óbidos, Prainha, Oriximiná, and Santarém. Zone America/Santarem -3:38:48 - LMT 1914 - -4:00 Brazil AM%sT 1988 Sep 12 - -4:00 - AMT 2008 Jun 24 0:00 - -3:00 - BRT + -4:00 Brazil -04/-03 1988 Sep 12 + -4:00 - -04 2008 Jun 24 0:00 + -3:00 - -03 # # Maranhão (MA), Piauí (PI), Ceará (CE), Rio Grande do Norte (RN), # Paraíba (PB) Zone America/Fortaleza -2:34:00 - LMT 1914 - -3:00 Brazil BR%sT 1990 Sep 17 - -3:00 - BRT 1999 Sep 30 - -3:00 Brazil BR%sT 2000 Oct 22 - -3:00 - BRT 2001 Sep 13 - -3:00 Brazil BR%sT 2002 Oct 1 - -3:00 - BRT + -3:00 Brazil -03/-02 1990 Sep 17 + -3:00 - -03 1999 Sep 30 + -3:00 Brazil -03/-02 2000 Oct 22 + -3:00 - -03 2001 Sep 13 + -3:00 Brazil -03/-02 2002 Oct 1 + -3:00 - -03 # # Pernambuco (PE) (except Atlantic islands) Zone America/Recife -2:19:36 - LMT 1914 - -3:00 Brazil BR%sT 1990 Sep 17 - -3:00 - BRT 1999 Sep 30 - -3:00 Brazil BR%sT 2000 Oct 15 - -3:00 - BRT 2001 Sep 13 - -3:00 Brazil BR%sT 2002 Oct 1 - -3:00 - BRT + -3:00 Brazil -03/-02 1990 Sep 17 + -3:00 - -03 1999 Sep 30 + -3:00 Brazil -03/-02 2000 Oct 15 + -3:00 - -03 2001 Sep 13 + -3:00 Brazil -03/-02 2002 Oct 1 + -3:00 - -03 # # Tocantins (TO) Zone America/Araguaina -3:12:48 - LMT 1914 - -3:00 Brazil BR%sT 1990 Sep 17 - -3:00 - BRT 1995 Sep 14 - -3:00 Brazil BR%sT 2003 Sep 24 - -3:00 - BRT 2012 Oct 21 - -3:00 Brazil BR%sT 2013 Sep - -3:00 - BRT + -3:00 Brazil -03/-02 1990 Sep 17 + -3:00 - -03 1995 Sep 14 + -3:00 Brazil -03/-02 2003 Sep 24 + -3:00 - -03 2012 Oct 21 + -3:00 Brazil -03/-02 2013 Sep + -3:00 - -03 # # Alagoas (AL), Sergipe (SE) Zone America/Maceio -2:22:52 - LMT 1914 - -3:00 Brazil BR%sT 1990 Sep 17 - -3:00 - BRT 1995 Oct 13 - -3:00 Brazil BR%sT 1996 Sep 4 - -3:00 - BRT 1999 Sep 30 - -3:00 Brazil BR%sT 2000 Oct 22 - -3:00 - BRT 2001 Sep 13 - -3:00 Brazil BR%sT 2002 Oct 1 - -3:00 - BRT + -3:00 Brazil -03/-02 1990 Sep 17 + -3:00 - -03 1995 Oct 13 + -3:00 Brazil -03/-02 1996 Sep 4 + -3:00 - -03 1999 Sep 30 + -3:00 Brazil -03/-02 2000 Oct 22 + -3:00 - -03 2001 Sep 13 + -3:00 Brazil -03/-02 2002 Oct 1 + -3:00 - -03 # # Bahia (BA) # There are too many Salvadors elsewhere, so use America/Bahia instead # of America/Salvador. Zone America/Bahia -2:34:04 - LMT 1914 - -3:00 Brazil BR%sT 2003 Sep 24 - -3:00 - BRT 2011 Oct 16 - -3:00 Brazil BR%sT 2012 Oct 21 - -3:00 - BRT + -3:00 Brazil -03/-02 2003 Sep 24 + -3:00 - -03 2011 Oct 16 + -3:00 Brazil -03/-02 2012 Oct 21 + -3:00 - -03 # # Goiás (GO), Distrito Federal (DF), Minas Gerais (MG), # Espírito Santo (ES), Rio de Janeiro (RJ), São Paulo (SP), Paraná (PR), # Santa Catarina (SC), Rio Grande do Sul (RS) Zone America/Sao_Paulo -3:06:28 - LMT 1914 - -3:00 Brazil BR%sT 1963 Oct 23 0:00 - -3:00 1:00 BRST 1964 - -3:00 Brazil BR%sT + -3:00 Brazil -03/-02 1963 Oct 23 0:00 + -3:00 1:00 -02 1964 + -3:00 Brazil -03/-02 # # Mato Grosso do Sul (MS) Zone America/Campo_Grande -3:38:28 - LMT 1914 - -4:00 Brazil AM%sT + -4:00 Brazil -04/-03 # # Mato Grosso (MT) Zone America/Cuiaba -3:44:20 - LMT 1914 - -4:00 Brazil AM%sT 2003 Sep 24 - -4:00 - AMT 2004 Oct 1 - -4:00 Brazil AM%sT + -4:00 Brazil -04/-03 2003 Sep 24 + -4:00 - -04 2004 Oct 1 + -4:00 Brazil -04/-03 # # Rondônia (RO) Zone America/Porto_Velho -4:15:36 - LMT 1914 - -4:00 Brazil AM%sT 1988 Sep 12 - -4:00 - AMT + -4:00 Brazil -04/-03 1988 Sep 12 + -4:00 - -04 # # Roraima (RR) Zone America/Boa_Vista -4:02:40 - LMT 1914 - -4:00 Brazil AM%sT 1988 Sep 12 - -4:00 - AMT 1999 Sep 30 - -4:00 Brazil AM%sT 2000 Oct 15 - -4:00 - AMT + -4:00 Brazil -04/-03 1988 Sep 12 + -4:00 - -04 1999 Sep 30 + -4:00 Brazil -04/-03 2000 Oct 15 + -4:00 - -04 # # east Amazonas (AM): Boca do Acre, Jutaí, Manaus, Floriano Peixoto # The great circle line from Tabatinga to Porto Acre divides # east from west Amazonas. Zone America/Manaus -4:00:04 - LMT 1914 - -4:00 Brazil AM%sT 1988 Sep 12 - -4:00 - AMT 1993 Sep 28 - -4:00 Brazil AM%sT 1994 Sep 22 - -4:00 - AMT + -4:00 Brazil -04/-03 1988 Sep 12 + -4:00 - -04 1993 Sep 28 + -4:00 Brazil -04/-03 1994 Sep 22 + -4:00 - -04 # # west Amazonas (AM): Atalaia do Norte, Boca do Maoco, Benjamin Constant, # Eirunepé, Envira, Ipixuna Zone America/Eirunepe -4:39:28 - LMT 1914 - -5:00 Brazil AC%sT 1988 Sep 12 - -5:00 - ACT 1993 Sep 28 - -5:00 Brazil AC%sT 1994 Sep 22 - -5:00 - ACT 2008 Jun 24 0:00 - -4:00 - AMT 2013 Nov 10 - -5:00 - ACT + -5:00 Brazil -05/-04 1988 Sep 12 + -5:00 - -05 1993 Sep 28 + -5:00 Brazil -05/-04 1994 Sep 22 + -5:00 - -05 2008 Jun 24 0:00 + -4:00 - -04 2013 Nov 10 + -5:00 - -05 # # Acre (AC) Zone America/Rio_Branco -4:31:12 - LMT 1914 - -5:00 Brazil AC%sT 1988 Sep 12 - -5:00 - ACT 2008 Jun 24 0:00 - -4:00 - AMT 2013 Nov 10 - -5:00 - ACT + -5:00 Brazil -05/-04 1988 Sep 12 + -5:00 - -05 2008 Jun 24 0:00 + -4:00 - -04 2013 Nov 10 + -5:00 - -05 # Chile @@ -1235,6 +1207,18 @@ Zone America/Rio_Branco -4:31:12 - LMT 1914 # to mean 24:00 mainland time, not 24:00 local time, so that Easter # Island is always two hours behind the mainland. +# From Juan Correa (2016-12-04): +# Magallanes region ... will keep DST (UTC -3) all year round.... +# http://www.soychile.cl/Santiago/Sociedad/2016/12/04/433428/Bachelet-firmo-el-decreto-para-establecer-un-horario-unico-para-la-Region-de-Magallanes.aspx +# +# From Deborah Goldsmith (2017-01-19): +# http://www.diariooficial.interior.gob.cl/publicaciones/2017/01/17/41660/01/1169626.pdf +# From Paul Eggert (2017-01-19): +# The above says the Magallanes change expires 2019-05-11 at 24:00, +# so in theory, they will revert to -04/-03 after that, which means +# they will switch from -03 to -04 one hour after Santiago does that day. +# For now, assume that they will not revert. + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Chile 1927 1931 - Sep 1 0:00 1:00 S Rule Chile 1928 1932 - Apr 1 0:00 0 - @@ -1275,22 +1259,35 @@ Rule Chile 2016 max - Aug Sun>=9 4:00u 1:00 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Santiago -4:42:46 - LMT 1890 -4:42:46 - SMT 1910 Jan 10 # Santiago Mean Time - -5:00 - CLT 1916 Jul 1 # Chile Time + -5:00 - -05 1916 Jul 1 -4:42:46 - SMT 1918 Sep 10 - -4:00 - CLT 1919 Jul 1 + -4:00 - -04 1919 Jul 1 -4:42:46 - SMT 1927 Sep 1 - -5:00 Chile CL%sT 1932 Sep 1 - -4:00 - CLT 1942 Jun 1 - -5:00 - CLT 1942 Aug 1 - -4:00 - CLT 1946 Jul 15 - -4:00 1:00 CLST 1946 Sep 1 # central Chile - -4:00 - CLT 1947 Apr 1 - -5:00 - CLT 1947 May 21 23:00 - -4:00 Chile CL%sT + -5:00 Chile -05/-04 1932 Sep 1 + -4:00 - -04 1942 Jun 1 + -5:00 - -05 1942 Aug 1 + -4:00 - -04 1946 Jul 15 + -4:00 1:00 -03 1946 Sep 1 # central Chile + -4:00 - -04 1947 Apr 1 + -5:00 - -05 1947 May 21 23:00 + -4:00 Chile -04/-03 +Zone America/Punta_Arenas -4:43:40 - LMT 1890 + -4:42:46 - SMT 1910 Jan 10 + -5:00 - -05 1916 Jul 1 + -4:42:46 - SMT 1918 Sep 10 + -4:00 - -04 1919 Jul 1 + -4:42:46 - SMT 1927 Sep 1 + -5:00 Chile -05/-04 1932 Sep 1 + -4:00 - -04 1942 Jun 1 + -5:00 - -05 1942 Aug 1 + -4:00 - -04 1947 Apr 1 + -5:00 - -05 1947 May 21 23:00 + -4:00 Chile -04/-03 2016 Dec 4 + -3:00 - -03 Zone Pacific/Easter -7:17:28 - LMT 1890 -7:17:28 - EMT 1932 Sep # Easter Mean Time - -7:00 Chile EAS%sT 1982 Mar 14 3:00u # Easter Time - -6:00 Chile EAS%sT + -7:00 Chile -07/-06 1982 Mar 14 3:00u # Easter Time + -6:00 Chile -06/-05 # # Salas y Gómez Island is uninhabited. # Other Chilean locations, including Juan Fernández Is, Desventuradas Is, @@ -1310,9 +1307,10 @@ Zone Pacific/Easter -7:17:28 - LMT 1890 # # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Antarctica/Palmer 0 - -00 1965 - -4:00 Arg AR%sT 1969 Oct 5 - -3:00 Arg AR%sT 1982 May - -4:00 Chile CL%sT + -4:00 Arg -04/-03 1969 Oct 5 + -3:00 Arg -03/-02 1982 May + -4:00 Chile -04/-03 2016 Dec 4 + -3:00 - -03 # Colombia @@ -1325,7 +1323,7 @@ Rule CO 1993 only - Apr 4 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Bogota -4:56:16 - LMT 1884 Mar 13 -4:56:16 - BMT 1914 Nov 23 # Bogotá Mean Time - -5:00 CO CO%sT # Colombia Time + -5:00 CO -05/-04 # Malpelo, Providencia, San Andres # no information; probably like America/Bogota @@ -1349,7 +1347,7 @@ Zone America/Bogota -4:56:16 - LMT 1884 Mar 13 # # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Curacao -4:35:47 - LMT 1912 Feb 12 # Willemstad - -4:30 - ANT 1965 # Netherlands Antilles Time + -4:30 - -0430 1965 -4:00 - AST # From Arthur David Olson (2011-06-15): @@ -1364,19 +1362,32 @@ Link America/Curacao America/Kralendijk # Caribbean Netherlands # # Milne says the Central and South American Telegraph Company used -5:24:15. # -# From Paul Eggert (2007-03-04): -# Apparently Ecuador had a failed experiment with DST in 1992. -# (2007-02-27) and -# (2006-11-06) both -# talk about "hora Sixto". Leave this alone for now, as we have no data. +# From Alois Treindl (2016-12-15): +# http://www.elcomercio.com/actualidad/hora-sixto-1993.html +# ... Whether the law applied also to Galápagos, I do not know. +# From Paul Eggert (2016-12-15): +# http://www.elcomercio.com/afull/modificacion-husohorario-ecuador-presidentes-decreto.html +# This says President Sixto Durán Ballén signed decree No. 285, which +# established DST from 1992-11-28 to 1993-02-05; it does not give transition +# times. The people called it "hora de Sixto" ("Sixto hour"). The change did +# not go over well; a popular song "Qué hora es" by Jaime Guevara had lyrics +# that included "Amanecía en mitad de la noche, los guaguas iban a clase sin +# sol" ("It was dawning in the middle of the night, the buses went to class +# without sun"). Although Ballén's campaign slogan was "Ni un paso atrás" +# (Not one step back), the clocks went back in 1993 and the experiment was not +# repeated. For now, assume transitions were at 00:00 local time country-wide. +# +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule Ecuador 1992 only - Nov 28 0:00 1:00 S +Rule Ecuador 1993 only - Feb 5 0:00 0 - # # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Guayaquil -5:19:20 - LMT 1890 -5:14:00 - QMT 1931 # Quito Mean Time - -5:00 - ECT # Ecuador Time + -5:00 Ecuador -05/-04 Zone Pacific/Galapagos -5:58:24 - LMT 1931 # Puerto Baquerizo Moreno - -5:00 - ECT 1986 - -6:00 - GALT # Galápagos Time + -5:00 - -05 1986 + -6:00 Ecuador -06/-05 # Falklands @@ -1476,25 +1487,24 @@ Rule Falk 2001 2010 - Sep Sun>=1 2:00 1:00 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Atlantic/Stanley -3:51:24 - LMT 1890 -3:51:24 - SMT 1912 Mar 12 # Stanley Mean Time - -4:00 Falk FK%sT 1983 May # Falkland Is Time - -3:00 Falk FK%sT 1985 Sep 15 - -4:00 Falk FK%sT 2010 Sep 5 2:00 - -3:00 - FKST + -4:00 Falk -04/-03 1983 May + -3:00 Falk -03/-02 1985 Sep 15 + -4:00 Falk -04/-03 2010 Sep 5 2:00 + -3:00 - -03 # French Guiana # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Cayenne -3:29:20 - LMT 1911 Jul - -4:00 - GFT 1967 Oct # French Guiana Time - -3:00 - GFT + -4:00 - -04 1967 Oct + -3:00 - -03 # Guyana # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Guyana -3:52:40 - LMT 1915 Mar # Georgetown - -3:45 - GBGT 1966 May 26 # Br Guiana Time - -3:45 - GYT 1975 Jul 31 # Guyana Time - -3:00 - GYT 1991 + -3:45 - -0345 1975 Jul 31 + -3:00 - -03 1991 # IATA SSIM (1996-06) says -4:00. Assume a 1991 switch. - -4:00 - GYT + -4:00 - -04 # Paraguay # @@ -1586,9 +1596,9 @@ Rule Para 2013 max - Mar Sun>=22 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Asuncion -3:50:40 - LMT 1890 -3:50:40 - AMT 1931 Oct 10 # Asunción Mean Time - -4:00 - PYT 1972 Oct # Paraguay Time - -3:00 - PYT 1974 Apr - -4:00 Para PY%sT + -4:00 - -04 1972 Oct + -3:00 - -03 1974 Apr + -4:00 Para -04/-03 # Peru # @@ -1615,12 +1625,12 @@ Rule Peru 1994 only - Apr 1 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Lima -5:08:12 - LMT 1890 -5:08:36 - LMT 1908 Jul 28 # Lima Mean Time? - -5:00 Peru PE%sT # Peru Time + -5:00 Peru -05/-04 # South Georgia # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Atlantic/South_Georgia -2:26:08 - LMT 1890 # Grytviken - -2:00 - GST # South Georgia Time + -2:00 - -02 # South Sandwich Is # uninhabited; scientific personnel have wintered @@ -1630,9 +1640,8 @@ Zone Atlantic/South_Georgia -2:26:08 - LMT 1890 # Grytviken Zone America/Paramaribo -3:40:40 - LMT 1911 -3:40:52 - PMT 1935 # Paramaribo Mean Time -3:40:36 - PMT 1945 Oct # The capital moved? - -3:30 - NEGT 1975 Nov 20 # Dutch Guiana Time - -3:30 - SRT 1984 Oct # Suriname Time - -3:00 - SRT + -3:30 - -0330 1984 Oct + -3:00 - -03 # Trinidad and Tobago # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -1735,11 +1744,16 @@ Rule Uruguay 2006 only - Mar 12 2:00 0 - # [dated 2015-06-29; repeals Decree 311/006 dated 2006-09-04] Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 S Rule Uruguay 2007 2015 - Mar Sun>=8 2:00 0 - -# Zone NAME GMTOFF RULES FORMAT [UNTIL] + +# This Zone can be simplified once we assume zic %z. Zone America/Montevideo -3:44:44 - LMT 1898 Jun 28 -3:44:44 - MMT 1920 May 1 # Montevideo MT - -3:30 Uruguay UY%sT 1942 Dec 14 # Uruguay Time - -3:00 Uruguay UY%sT + -3:30 Uruguay -0330/-03 1942 Dec 14 + -3:00 Uruguay -03/-02 1968 + -3:00 Uruguay -03/-0230 1971 + -3:00 Uruguay -03/-02 1974 + -3:00 Uruguay -03/-0230 1974 Dec 22 + -3:00 Uruguay -03/-02 # Venezuela # @@ -1773,7 +1787,7 @@ Zone America/Montevideo -3:44:44 - LMT 1898 Jun 28 # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Caracas -4:27:44 - LMT 1890 -4:27:40 - CMT 1912 Feb 12 # Caracas Mean Time? - -4:30 - VET 1965 Jan 1 0:00 # Venezuela T. - -4:00 - VET 2007 Dec 9 3:00 - -4:30 - VET 2016 May 1 2:30 - -4:00 - VET + -4:30 - -0430 1965 Jan 1 0:00 + -4:00 - -04 2007 Dec 9 3:00 + -4:30 - -0430 2016 May 1 2:30 + -4:00 - -04 diff --git a/src/timezone/known_abbrevs.txt b/src/timezone/known_abbrevs.txt index 015f4c90ba..eb48069d87 100644 --- a/src/timezone/known_abbrevs.txt +++ b/src/timezone/known_abbrevs.txt @@ -1,213 +1,105 @@ ++00 0 ++00 0 D ++01 3600 ++02 7200 ++02 7200 D +03 10800 ++0330 12600 +04 14400 ++0430 16200 ++0430 16200 D +05 18000 ++0530 19800 ++0545 20700 +06 21600 ++0630 23400 +07 25200 ++08 28800 ++0845 31500 ++09 32400 ++10 36000 ++1030 37800 ++11 39600 ++11 39600 D ++12 43200 ++1245 45900 ++13 46800 ++13 46800 D ++1345 49500 D ++14 50400 ++14 50400 D +-00 0 +-01 -3600 +-02 -7200 +-02 -7200 D +-03 -10800 +-03 -10800 D +-04 -14400 +-05 -18000 +-05 -18000 D +-06 -21600 +-07 -25200 +-08 -28800 +-09 -32400 +-0930 -34200 +-10 -36000 +-11 -39600 +-12 -43200 ACDT 37800 D ACST 34200 -ACT -18000 -ACWST 31500 ADT -10800 D AEDT 39600 D AEST 36000 -AFT 16200 AKDT -28800 D AKST -32400 -AMST -10800 D -AMT -14400 -AMT 14400 -ANAT 43200 -ART -10800 AST -14400 -AST 10800 AWST 28800 -AZOST 0 D -AZOT -3600 -AZT 14400 -BDT 21600 -BNT 28800 -BOT -14400 -BRST -7200 D -BRT -10800 BST 3600 D -BST 39600 -BTT 21600 CAT 7200 -CCT 23400 CDT -14400 D CDT -18000 D CEST 7200 D CET 3600 -CHADT 49500 D -CHAST 45900 -CHOST 32400 D -CHOT 28800 -CHUT 36000 -CKT -36000 -CLST -10800 D -CLT -14400 -COT -18000 CST -18000 CST -21600 CST 28800 -CVT -3600 -CXT 25200 ChST 36000 -DAVT 25200 -DDUT 36000 -EASST -18000 D -EAST -21600 EAT 10800 -ECT -18000 EDT -14400 D EEST 10800 D EET 7200 -EGST 0 D -EGT -3600 EST -18000 -FJST 46800 D -FJT 43200 -FKST -10800 -FNT -7200 -GALT -21600 -GAMT -32400 -GET 14400 -GFT -10800 -GILT 43200 GMT 0 -GMT+1 -3600 -GMT+10 -36000 -GMT+11 -39600 -GMT+12 -43200 -GMT+2 -7200 -GMT+3 -10800 -GMT+4 -14400 -GMT+5 -18000 -GMT+6 -21600 -GMT+7 -25200 -GMT+8 -28800 -GMT+9 -32400 -GMT-1 3600 -GMT-10 36000 -GMT-11 39600 -GMT-12 43200 -GMT-13 46800 -GMT-14 50400 -GMT-2 7200 -GMT-3 10800 -GMT-4 14400 -GMT-5 18000 -GMT-6 21600 -GMT-7 25200 -GMT-8 28800 -GMT-9 32400 -GST -7200 -GST 14400 -GYT -14400 HDT -32400 D HKT 28800 -HOVST 28800 D -HOVT 25200 HST -36000 -ICT 25200 IDT 10800 D -IOT 21600 -IRDT 16200 D -IRKT 28800 -IRST 12600 IST 19800 IST 3600 D IST 7200 JST 32400 -KGT 21600 -KOST 39600 -KRAT 25200 KST 30600 KST 32400 -LHDT 39600 D -LHST 37800 -LINT 50400 -MAGT 39600 -MART -34200 -MAWT 18000 MDT -21600 D MEST 7200 D MET 3600 -MHT 43200 -MIST 39600 -MMT 23400 MSK 10800 MST -25200 -MUT 14400 -MVT 18000 -MYT 28800 -NCT 39600 NDT -9000 D -NFT 39600 -NPT 20700 -NRT 43200 NST -12600 -NUT -39600 NZDT 46800 D NZST 43200 -OMST 21600 PDT -25200 D -PET -18000 -PETT 43200 -PGT 36000 -PHOT 46800 -PHT 28800 PKT 18000 -PMDT -7200 D -PMST -10800 -PONT 39600 PST -28800 -PWT 32400 -PYST -10800 D -PYT -14400 -RET 14400 -ROTT -10800 -SAKT 39600 -SAMT 14400 SAST 7200 -SBT 39600 -SCT 14400 -SGT 28800 -SRET 39600 -SRT -10800 SST -39600 -SYOT 10800 -TAHT -36000 -TFT 18000 -TJT 18000 -TKT 46800 -TLT 32400 -TMT 18000 -TOT 46800 -TVT 43200 UCT 0 -ULAST 32400 D -ULAT 28800 UTC 0 -UYT -10800 -UZT 18000 -VET -14400 -VLAT 36000 -VOST 21600 -VUT 39600 -WAKT 43200 WAST 7200 D WAT 3600 WEST 3600 D WET 0 -WFT 43200 -WGST -7200 D -WGT -10800 WIB 25200 WIT 32400 WITA 28800 -WSDT 50400 D -WSST 46800 -XJT 21600 -YAKT 32400 -YEKT 18000 diff --git a/src/timezone/localtime.c b/src/timezone/localtime.c index a14215d6bd..d946e882aa 100644 --- a/src/timezone/localtime.c +++ b/src/timezone/localtime.c @@ -17,23 +17,24 @@ #include #include "datatype/timestamp.h" -#include "private.h" #include "pgtz.h" + +#include "private.h" #include "tzfile.h" #ifndef WILDABBR /* * Someone might make incorrect use of a time zone abbreviation: - * 1. They might reference tzname[0] before calling tzset (explicitly + * 1. They might reference tzname[0] before calling tzset (explicitly * or implicitly). - * 2. They might reference tzname[1] before calling tzset (explicitly + * 2. They might reference tzname[1] before calling tzset (explicitly * or implicitly). - * 3. They might reference tzname[1] after setting to a time zone + * 3. They might reference tzname[1] after setting to a time zone * in which Daylight Saving Time is never observed. - * 4. They might reference tzname[0] after setting to a time zone + * 4. They might reference tzname[0] after setting to a time zone * in which Standard Time is never observed. - * 5. They might reference tm.TM_ZONE after calling offtime. + * 5. They might reference tm.TM_ZONE after calling offtime. * What's best to do in the above cases is open to debate; * for now, we just set things up so that in any of the five cases * WILDABBR is used. Another possibility: initialize tzname[0] to the @@ -43,24 +44,27 @@ * that tzname[0] has the "normal" length of three characters). */ #define WILDABBR " " -#endif /* !defined WILDABBR */ +#endif /* !defined WILDABBR */ static const char wildabbr[] = WILDABBR; static const char gmt[] = "GMT"; -/* The minimum and maximum finite time values. This assumes no padding. */ -static const pg_time_t time_t_min = MINVAL(pg_time_t, TYPE_BIT(pg_time_t)); -static const pg_time_t time_t_max = MAXVAL(pg_time_t, TYPE_BIT(pg_time_t)); +/* + * PG: We cache the result of trying to load the TZDEFRULES zone here. + * tzdefrules_loaded is 0 if not tried yet, +1 if good, -1 if failed. + */ +static struct state tzdefrules_s; +static int tzdefrules_loaded = 0; /* * The DST rules to use if TZ has no rules and we can't load TZDEFRULES. - * We default to US rules as of 1999-08-17. + * Default to US rules as of 2017-05-07. * POSIX 1003.1 section 8.1.1 says that the default DST rules are * implementation dependent; for historical reasons, US rules are a * common default. */ -#define TZDEFRULESTRING ",M4.1.0,M10.5.0" +#define TZDEFRULESTRING ",M3.2.0,M11.1.0" /* structs ttinfo, lsinfo, state have been moved to pgtz.h */ @@ -104,7 +108,7 @@ static struct pg_tm tm; /* Initialize *S to a value based on GMTOFF, ISDST, and ABBRIND. */ static void -init_ttinfo(struct ttinfo * s, int32 gmtoff, bool isdst, int abbrind) +init_ttinfo(struct ttinfo *s, int32 gmtoff, bool isdst, int abbrind) { s->tt_gmtoff = gmtoff; s->tt_isdst = isdst; @@ -181,16 +185,14 @@ union input_buffer /* The entire buffer. */ char buf[2 * sizeof(struct tzhead) + 2 * sizeof(struct state) - + 4 * TZ_MAX_TIMES]; + + 4 * TZ_MAX_TIMES]; }; /* Local storage needed for 'tzloadbody'. */ union local_storage { - /* We don't need the "fullname" member */ - /* The results of analyzing the file's contents after it is opened. */ - struct + struct file_analysis { /* The input buffer. */ union input_buffer u; @@ -198,6 +200,8 @@ union local_storage /* A temporary state used for parsing a TZ string in the file. */ struct state st; } u; + + /* We don't need the "fullname" member */ }; /* Load tz data from the file named NAME into *SP. Read extended @@ -207,8 +211,8 @@ union local_storage * given name is stored there (the buffer must be > TZ_STRLEN_MAX bytes!). */ static int -tzloadbody(char const * name, char *canonname, struct state * sp, bool doextend, - union local_storage * lsp) +tzloadbody(char const *name, char *canonname, struct state *sp, bool doextend, + union local_storage *lsp) { int i; int fid; @@ -247,6 +251,8 @@ tzloadbody(char const * name, char *canonname, struct state * sp, bool doextend, { int32 ttisstdcnt = detzcode(up->tzhead.tzh_ttisstdcnt); int32 ttisgmtcnt = detzcode(up->tzhead.tzh_ttisgmtcnt); + int64 prevtr = 0; + int32 prevcorr = 0; int32 leapcnt = detzcode(up->tzhead.tzh_leapcnt); int32 timecnt = detzcode(up->tzhead.tzh_timecnt); int32 typecnt = detzcode(up->tzhead.tzh_typecnt); @@ -262,7 +268,7 @@ tzloadbody(char const * name, char *canonname, struct state * sp, bool doextend, return EINVAL; if (nread < (tzheadsize /* struct tzhead */ - + timecnt * stored /* ats */ + + timecnt * stored /* ats */ + timecnt /* types */ + typecnt * 6 /* ttinfos */ + charcnt /* chars */ @@ -277,8 +283,8 @@ tzloadbody(char const * name, char *canonname, struct state * sp, bool doextend, /* * Read transitions, discarding those out of pg_time_t range. But - * pretend the last transition before time_t_min occurred at - * time_t_min. + * pretend the last transition before TIME_T_MIN occurred at + * TIME_T_MIN. */ timecnt = 0; for (i = 0; i < sp->timecnt; ++i) @@ -286,12 +292,12 @@ tzloadbody(char const * name, char *canonname, struct state * sp, bool doextend, int64 at = stored == 4 ? detzcode(p) : detzcode64(p); - sp->types[i] = at <= time_t_max; + sp->types[i] = at <= TIME_T_MAX; if (sp->types[i]) { pg_time_t attime - = ((TYPE_SIGNED(pg_time_t) ? at < time_t_min : at < 0) - ? time_t_min : at); + = ((TYPE_SIGNED(pg_time_t) ? at < TIME_T_MIN : at < 0) + ? TIME_T_MIN : at); if (timecnt && attime <= sp->ats[timecnt - 1]) { @@ -346,20 +352,22 @@ tzloadbody(char const * name, char *canonname, struct state * sp, bool doextend, int32 corr = detzcode(p + stored); p += stored + 4; - if (tr <= time_t_max) + /* Leap seconds cannot occur before the Epoch. */ + if (tr < 0) + return EINVAL; + if (tr <= TIME_T_MAX) { - pg_time_t trans - = ((TYPE_SIGNED(pg_time_t) ? tr < time_t_min : tr < 0) - ? time_t_min : tr); - - if (leapcnt && trans <= sp->lsis[leapcnt - 1].ls_trans) - { - if (trans < sp->lsis[leapcnt - 1].ls_trans) - return EINVAL; - leapcnt--; - } - sp->lsis[leapcnt].ls_trans = trans; - sp->lsis[leapcnt].ls_corr = corr; + /* + * Leap seconds cannot occur more than once per UTC month, and + * UTC months are at least 28 days long (minus 1 second for a + * negative leap second). Each leap second's correction must + * differ from the previous one's by 1 second. + */ + if (tr - prevtr < 28 * SECSPERDAY - 1 + || (corr != prevcorr - 1 && corr != prevcorr + 1)) + return EINVAL; + sp->lsis[leapcnt].ls_trans = prevtr = tr; + sp->lsis[leapcnt].ls_corr = prevcorr = corr; leapcnt++; } } @@ -414,10 +422,10 @@ tzloadbody(char const * name, char *canonname, struct state * sp, bool doextend, { /* * Attempt to reuse existing abbreviations. Without this, - * America/Anchorage would stop working after 2037 when - * TZ_MAX_CHARS is 50, as sp->charcnt equals 42 (for LMT CAT CAWT - * CAPT AHST AHDT YST AKDT AKST) and ts->charcnt equals 10 (for - * AKST AKDT). Reusing means sp->charcnt can stay 42 in this + * America/Anchorage would be right on the edge after 2037 when + * TZ_MAX_CHARS is 50, as sp->charcnt equals 40 (for LMT AST AWT + * APT AHST AHDT YST AKDT AKST) and ts->charcnt equals 10 (for + * AKST AKDT). Reusing means sp->charcnt can stay 40 in this * example. */ int gotabbr = 0; @@ -451,6 +459,17 @@ tzloadbody(char const * name, char *canonname, struct state * sp, bool doextend, if (gotabbr == 2) { sp->charcnt = charcnt; + + /* + * Ignore any trailing, no-op transitions generated by zic as + * they don't help here and can run afoul of bugs in zic 2016j + * or earlier. + */ + while (1 < sp->timecnt + && (sp->types[sp->timecnt - 1] + == sp->types[sp->timecnt - 2])) + sp->timecnt--; + for (i = 0; i < ts->timecnt; i++) if (sp->ats[sp->timecnt - 1] < ts->ats[i]) break; @@ -489,7 +508,7 @@ tzloadbody(char const * name, char *canonname, struct state * sp, bool doextend, } /* - * If type 0 is is unused in transitions, it's the type to use for early + * If type 0 is unused in transitions, it's the type to use for early * times. */ for (i = 0; i < sp->timecnt; ++i) @@ -534,7 +553,7 @@ tzloadbody(char const * name, char *canonname, struct state * sp, bool doextend, * given name is stored there (the buffer must be > TZ_STRLEN_MAX bytes!). */ int -tzload(const char *name, char *canonname, struct state * sp, bool doextend) +tzload(const char *name, char *canonname, struct state *sp, bool doextend) { union local_storage *lsp = malloc(sizeof *lsp); @@ -550,7 +569,7 @@ tzload(const char *name, char *canonname, struct state * sp, bool doextend) } static bool -typesequiv(const struct state * sp, int a, int b) +typesequiv(const struct state *sp, int a, int b) { bool result; @@ -718,7 +737,7 @@ getoffset(const char *strp, int32 *offsetp) * Otherwise, return a pointer to the first character not part of the rule. */ static const char * -getrule(const char *strp, struct rule * rulep) +getrule(const char *strp, struct rule *rulep) { if (*strp == 'J') { @@ -769,7 +788,7 @@ getrule(const char *strp, struct rule * rulep) strp = getoffset(strp, &rulep->r_time); } else - rulep->r_time = 2 * SECSPERHOUR; /* default = 2:00:00 */ + rulep->r_time = 2 * SECSPERHOUR; /* default = 2:00:00 */ return strp; } @@ -778,7 +797,7 @@ getrule(const char *strp, struct rule * rulep) * effect, calculate the year-relative time that rule takes effect. */ static int32 -transtime(int year, const struct rule * rulep, +transtime(int year, const struct rule *rulep, int32 offset) { bool leapyear; @@ -875,7 +894,7 @@ transtime(int year, const struct rule * rulep, * Returns true on success, false on failure. */ bool -tzparse(const char *name, struct state * sp, bool lastditch) +tzparse(const char *name, struct state *sp, bool lastditch) { const char *stdname; const char *dstname = NULL; @@ -902,7 +921,7 @@ tzparse(const char *name, struct state * sp, bool lastditch) stdlen = (sizeof sp->chars) - 1; charcnt = stdlen + 1; stdoffset = 0; - sp->goback = sp->goahead = false; /* simulate failed tzload() */ + sp->goback = sp->goahead = false; /* simulate failed tzload() */ load_ok = false; } else @@ -930,7 +949,21 @@ tzparse(const char *name, struct state * sp, bool lastditch) charcnt = stdlen + 1; if (sizeof sp->chars < charcnt) return false; - load_ok = tzload(TZDEFRULES, NULL, sp, false) == 0; + + /* + * This bit also differs from the IANA code, which doesn't make any + * attempt to avoid repetitive loadings of the TZDEFRULES zone. + */ + if (tzdefrules_loaded == 0) + { + if (tzload(TZDEFRULES, NULL, &tzdefrules_s, false) == 0) + tzdefrules_loaded = 1; + else + tzdefrules_loaded = -1; + } + load_ok = (tzdefrules_loaded > 0); + if (load_ok) + memcpy(sp, &tzdefrules_s, sizeof(struct state)); } if (!load_ok) sp->leapcnt = 0; /* so, we're off a little */ @@ -974,6 +1007,8 @@ tzparse(const char *name, struct state * sp, bool lastditch) int yearlim; int timecnt; pg_time_t janfirst; + int32 janoffset = 0; + int yearbeg; ++name; if ((name = getrule(name, &start)) == NULL) @@ -994,8 +1029,23 @@ tzparse(const char *name, struct state * sp, bool lastditch) sp->defaulttype = 0; timecnt = 0; janfirst = 0; - yearlim = EPOCH_YEAR + YEARSPERREPEAT; - for (year = EPOCH_YEAR; year < yearlim; year++) + yearbeg = EPOCH_YEAR; + + do + { + int32 yearsecs + = year_lengths[isleap(yearbeg - 1)] * SECSPERDAY; + + yearbeg--; + if (increment_overflow_time(&janfirst, -yearsecs)) + { + janoffset = -yearsecs; + break; + } + } while (EPOCH_YEAR - YEARSPERREPEAT / 2 < yearbeg); + + yearlim = yearbeg + YEARSPERREPEAT + 1; + for (year = yearbeg; year < yearlim; year++) { int32 starttime = transtime(year, &start, stdoffset), @@ -1020,24 +1070,34 @@ tzparse(const char *name, struct state * sp, bool lastditch) { if (TZ_MAX_TIMES - 2 < timecnt) break; - yearlim = year + YEARSPERREPEAT + 1; sp->ats[timecnt] = janfirst; - if (increment_overflow_time - (&sp->ats[timecnt], starttime)) - break; - sp->types[timecnt++] = reversed; + if (!increment_overflow_time + (&sp->ats[timecnt], + janoffset + starttime)) + sp->types[timecnt++] = reversed; + else if (janoffset) + sp->defaulttype = reversed; sp->ats[timecnt] = janfirst; - if (increment_overflow_time - (&sp->ats[timecnt], endtime)) - break; - sp->types[timecnt++] = !reversed; + if (!increment_overflow_time + (&sp->ats[timecnt], + janoffset + endtime)) + { + sp->types[timecnt++] = !reversed; + yearlim = year + YEARSPERREPEAT + 1; + } + else if (janoffset) + sp->defaulttype = !reversed; } - if (increment_overflow_time(&janfirst, yearsecs)) + if (increment_overflow_time + (&janfirst, janoffset + yearsecs)) break; + janoffset = 0; } sp->timecnt = timecnt; if (!timecnt) sp->typecnt = 1; /* Perpetual DST. */ + else if (YEARSPERREPEAT < year - yearbeg) + sp->goback = sp->goahead = true; } else { @@ -1157,7 +1217,7 @@ tzparse(const char *name, struct state * sp, bool lastditch) } static void -gmtload(struct state * sp) +gmtload(struct state *sp) { if (tzload(gmt, NULL, sp, true) != 0) tzparse(gmt, sp, true); @@ -1171,8 +1231,8 @@ gmtload(struct state * sp) * but it *is* desirable.) */ static struct pg_tm * -localsub(struct state const * sp, pg_time_t const * timep, - struct pg_tm * tmp) +localsub(struct state const *sp, pg_time_t const *timep, + struct pg_tm *tmp) { const struct ttinfo *ttisp; int i; @@ -1263,7 +1323,7 @@ pg_localtime(const pg_time_t *timep, const pg_tz *tz) * Except we have a private "struct state" for GMT, so no sp is passed in. */ static struct pg_tm * -gmtsub(pg_time_t const * timep, int32 offset, struct pg_tm * tmp) +gmtsub(pg_time_t const *timep, int32 offset, struct pg_tm *tmp) { struct pg_tm *result; @@ -1280,9 +1340,8 @@ gmtsub(pg_time_t const * timep, int32 offset, struct pg_tm * tmp) result = timesub(timep, offset, gmtptr, tmp); /* - * Could get fancy here and deliver something such as "UT+xxxx" or - * "UT-xxxx" if offset is non-zero, but this is no time for a treasure - * hunt. + * Could get fancy here and deliver something such as "+xx" or "-xx" if + * offset is non-zero, but this is no time for a treasure hunt. */ if (offset != 0) tmp->tm_zone = wildabbr; @@ -1302,16 +1361,23 @@ pg_gmtime(const pg_time_t *timep) * Return the number of leap years through the end of the given year * where, to make the math easy, the answer for year zero is defined as zero. */ +static int +leaps_thru_end_of_nonneg(int y) +{ + return y / 4 - y / 100 + y / 400; +} + static int leaps_thru_end_of(const int y) { - return (y >= 0) ? (y / 4 - y / 100 + y / 400) : - -(leaps_thru_end_of(-(y + 1)) + 1); + return (y < 0 + ? -1 - leaps_thru_end_of_nonneg(-1 - y) + : leaps_thru_end_of_nonneg(y)); } static struct pg_tm * timesub(const pg_time_t *timep, int32 offset, - const struct state * sp, struct pg_tm * tmp) + const struct state *sp, struct pg_tm *tmp) { const struct lsinfo *lp; pg_time_t tdays; @@ -1331,22 +1397,9 @@ timesub(const pg_time_t *timep, int32 offset, lp = &sp->lsis[i]; if (*timep >= lp->ls_trans) { - if (*timep == lp->ls_trans) - { - hit = ((i == 0 && lp->ls_corr > 0) || - lp->ls_corr > sp->lsis[i - 1].ls_corr); - if (hit) - while (i > 0 && - sp->lsis[i].ls_trans == - sp->lsis[i - 1].ls_trans + 1 && - sp->lsis[i].ls_corr == - sp->lsis[i - 1].ls_corr + 1) - { - ++hit; - --i; - } - } corr = lp->ls_corr; + hit = (*timep == lp->ls_trans + && (i == 0 ? 0 : lp[-1].ls_corr) < corr); break; } } @@ -1470,13 +1523,13 @@ increment_overflow_time(pg_time_t *tp, int32 j) { /*---------- * This is like - * 'if (! (time_t_min <= *tp + j && *tp + j <= time_t_max)) ...', + * 'if (! (TIME_T_MIN <= *tp + j && *tp + j <= TIME_T_MAX)) ...', * except that it does the right thing even if *tp + j would overflow. *---------- */ if (!(j < 0 - ? (TYPE_SIGNED(pg_time_t) ? time_t_min - j <= *tp : -1 - j < *tp) - : *tp <= time_t_max - j)) + ? (TYPE_SIGNED(pg_time_t) ? TIME_T_MIN - j <= *tp : -1 - j < *tp) + : *tp <= TIME_T_MAX - j)) return true; *tp += j; return false; diff --git a/src/timezone/pgtz.c b/src/timezone/pgtz.c index 4fa3d0da89..fbfadfa6f8 100644 --- a/src/timezone/pgtz.c +++ b/src/timezone/pgtz.c @@ -17,6 +17,7 @@ #include #include +#include "datatype/timestamp.h" #include "miscadmin.h" #include "pgtz.h" #include "storage/fd.h" @@ -79,12 +80,38 @@ pg_open_tzfile(const char *name, char *canonname) int fullnamelen; int orignamelen; + /* Initialize fullname with base name of tzdata directory */ + strlcpy(fullname, pg_TZDIR(), sizeof(fullname)); + orignamelen = fullnamelen = strlen(fullname); + + if (fullnamelen + 1 + strlen(name) >= MAXPGPATH) + return -1; /* not gonna fit */ + + /* + * If the caller doesn't need the canonical spelling, first just try to + * open the name as-is. This can be expected to succeed if the given name + * is already case-correct, or if the filesystem is case-insensitive; and + * we don't need to distinguish those situations if we aren't tasked with + * reporting the canonical spelling. + */ + if (canonname == NULL) + { + int result; + + fullname[fullnamelen] = '/'; + /* test above ensured this will fit: */ + strcpy(fullname + fullnamelen + 1, name); + result = open(fullname, O_RDONLY | PG_BINARY, 0); + if (result >= 0) + return result; + /* If that didn't work, fall through to do it the hard way */ + fullname[fullnamelen] = '\0'; + } + /* * Loop to split the given name into directory levels; for each level, * search using scan_directory_ci(). */ - strlcpy(fullname, pg_TZDIR(), sizeof(fullname)); - orignamelen = fullnamelen = strlen(fullname); fname = name; for (;;) { @@ -96,8 +123,6 @@ pg_open_tzfile(const char *name, char *canonname) fnamelen = slashptr - fname; else fnamelen = strlen(fname); - if (fullnamelen + 1 + fnamelen >= MAXPGPATH) - return -1; /* not gonna fit */ if (!scan_directory_ci(fullname, fname, fnamelen, fullname + fullnamelen + 1, MAXPGPATH - fullnamelen - 1)) @@ -308,14 +333,14 @@ pg_tzset_offset(long gmtoffset) char tzname[128]; snprintf(offsetstr, sizeof(offsetstr), - "%02ld", absoffset / SECSPERHOUR); - absoffset %= SECSPERHOUR; + "%02ld", absoffset / SECS_PER_HOUR); + absoffset %= SECS_PER_HOUR; if (absoffset != 0) { snprintf(offsetstr + strlen(offsetstr), sizeof(offsetstr) - strlen(offsetstr), - ":%02ld", absoffset / SECSPERMIN); - absoffset %= SECSPERMIN; + ":%02ld", absoffset / SECS_PER_MINUTE); + absoffset %= SECS_PER_MINUTE; if (absoffset != 0) snprintf(offsetstr + strlen(offsetstr), sizeof(offsetstr) - strlen(offsetstr), @@ -412,7 +437,7 @@ pg_tzenumerate_next(pg_tzenum *dir) while (dir->depth >= 0) { struct dirent *direntry; - char fullname[MAXPGPATH]; + char fullname[MAXPGPATH * 2]; struct stat statbuf; direntry = ReadDir(dir->dirdesc[dir->depth], dir->dirname[dir->depth]); @@ -429,7 +454,7 @@ pg_tzenumerate_next(pg_tzenum *dir) if (direntry->d_name[0] == '.') continue; - snprintf(fullname, MAXPGPATH, "%s/%s", + snprintf(fullname, sizeof(fullname), "%s/%s", dir->dirname[dir->depth], direntry->d_name); if (stat(fullname, &statbuf) != 0) ereport(ERROR, @@ -457,10 +482,11 @@ pg_tzenumerate_next(pg_tzenum *dir) /* * Load this timezone using tzload() not pg_tzset(), so we don't fill - * the cache + * the cache. Also, don't ask for the canonical spelling: we already + * know it, and pg_open_tzfile's way of finding it out is pretty + * inefficient. */ - if (tzload(fullname + dir->baselen, dir->tz.TZname, &dir->tz.state, - true) != 0) + if (tzload(fullname + dir->baselen, NULL, &dir->tz.state, true) != 0) { /* Zone could not be loaded, ignore it */ continue; @@ -472,6 +498,10 @@ pg_tzenumerate_next(pg_tzenum *dir) continue; } + /* OK, return the canonical zone name spelling. */ + strlcpy(dir->tz.TZname, fullname + dir->baselen, + sizeof(dir->tz.TZname)); + /* Timezone loaded OK. */ return &dir->tz; } diff --git a/src/timezone/private.h b/src/timezone/private.h index 8480d38961..701112ec5b 100644 --- a/src/timezone/private.h +++ b/src/timezone/private.h @@ -23,6 +23,7 @@ #include "pgtime.h" +/* This string was in the Factory zone through version 2016f. */ #define GRANDPARENTED "Local time zone must be set--see zic manual page" /* @@ -37,43 +38,16 @@ #define EOVERFLOW EINVAL #endif -#ifndef WIFEXITED -#define WIFEXITED(status) (((status) & 0xff) == 0) -#endif /* !defined WIFEXITED */ -#ifndef WEXITSTATUS -#define WEXITSTATUS(status) (((status) >> 8) & 0xff) -#endif /* !defined WEXITSTATUS */ - /* Unlike 's isdigit, this also works if c < 0 | c > UCHAR_MAX. */ #define is_digit(c) ((unsigned)(c) - '0' <= 9) -#ifndef SIZE_MAX -#define SIZE_MAX ((size_t) -1) -#endif - -/* - * SunOS 4.1.1 libraries lack remove. - */ - -#ifndef remove -extern int unlink(const char *filename); - -#define remove unlink -#endif /* !defined remove */ - /* * Finally, some convenience items. */ -#ifndef TYPE_BIT #define TYPE_BIT(type) (sizeof (type) * CHAR_BIT) -#endif /* !defined TYPE_BIT */ - -#ifndef TYPE_SIGNED #define TYPE_SIGNED(type) (((type) -1) < 0) -#endif /* !defined TYPE_SIGNED */ - #define TWOS_COMPLEMENT(t) ((t) ~ (t) 0 < 0) /* @@ -87,7 +61,10 @@ extern int unlink(const char *filename); #define MINVAL(t, b) \ ((t) (TYPE_SIGNED(t) ? - TWOS_COMPLEMENT(t) - MAXVAL(t, b) : 0)) -#ifndef INT_STRLEN_MAXIMUM +/* The extreme time values, assuming no padding. */ +#define TIME_T_MIN MINVAL(pg_time_t, TYPE_BIT(pg_time_t)) +#define TIME_T_MAX MAXVAL(pg_time_t, TYPE_BIT(pg_time_t)) + /* * 302 / 1000 is log10(2.0) rounded up. * Subtract one for the sign bit if the type is signed; @@ -97,34 +74,79 @@ extern int unlink(const char *filename); #define INT_STRLEN_MAXIMUM(type) \ ((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + \ 1 + TYPE_SIGNED(type)) -#endif /* !defined INT_STRLEN_MAXIMUM */ /* * INITIALIZE(x) */ -#define INITIALIZE(x) ((x) = 0) +#define INITIALIZE(x) ((x) = 0) #undef _ #define _(msgid) (msgid) -#ifndef YEARSPERREPEAT +/* Handy macros that are independent of tzfile implementation. */ + #define YEARSPERREPEAT 400 /* years before a Gregorian repeat */ -#endif /* !defined YEARSPERREPEAT */ + +#define SECSPERMIN 60 +#define MINSPERHOUR 60 +#define HOURSPERDAY 24 +#define DAYSPERWEEK 7 +#define DAYSPERNYEAR 365 +#define DAYSPERLYEAR 366 +#define SECSPERHOUR (SECSPERMIN * MINSPERHOUR) +#define SECSPERDAY ((int32) SECSPERHOUR * HOURSPERDAY) +#define MONSPERYEAR 12 + +#define TM_SUNDAY 0 +#define TM_MONDAY 1 +#define TM_TUESDAY 2 +#define TM_WEDNESDAY 3 +#define TM_THURSDAY 4 +#define TM_FRIDAY 5 +#define TM_SATURDAY 6 + +#define TM_JANUARY 0 +#define TM_FEBRUARY 1 +#define TM_MARCH 2 +#define TM_APRIL 3 +#define TM_MAY 4 +#define TM_JUNE 5 +#define TM_JULY 6 +#define TM_AUGUST 7 +#define TM_SEPTEMBER 8 +#define TM_OCTOBER 9 +#define TM_NOVEMBER 10 +#define TM_DECEMBER 11 + +#define TM_YEAR_BASE 1900 + +#define EPOCH_YEAR 1970 +#define EPOCH_WDAY TM_THURSDAY + +#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0)) /* - * The Gregorian year averages 365.2425 days, which is 31556952 seconds. + * Since everything in isleap is modulo 400 (or a factor of 400), we know that + * isleap(y) == isleap(y % 400) + * and so + * isleap(a + b) == isleap((a + b) % 400) + * or + * isleap(a + b) == isleap(a % 400 + b % 400) + * This is true even if % means modulo rather than Fortran remainder + * (which is allowed by C89 but not by C99 or later). + * We use this to avoid addition overflow problems. */ -#ifndef AVGSECSPERYEAR -#define AVGSECSPERYEAR 31556952L -#endif /* !defined AVGSECSPERYEAR */ +#define isleap_sum(a, b) isleap((a) % 400 + (b) % 400) -#ifndef SECSPERREPEAT -#define SECSPERREPEAT ((int64) YEARSPERREPEAT * (int64) AVGSECSPERYEAR) -#endif /* !defined SECSPERREPEAT */ -#ifndef SECSPERREPEAT_BITS +/* + * The Gregorian year averages 365.2425 days, which is 31556952 seconds. + */ + +#define AVGSECSPERYEAR 31556952L +#define SECSPERREPEAT \ + ((int64) YEARSPERREPEAT * (int64) AVGSECSPERYEAR) #define SECSPERREPEAT_BITS 34 /* ceil(log2(SECSPERREPEAT)) */ -#endif /* !defined SECSPERREPEAT_BITS */ -#endif /* !defined PRIVATE_H */ +#endif /* !defined PRIVATE_H */ diff --git a/src/timezone/strftime.c b/src/timezone/strftime.c index 5630619321..e1c6483443 100644 --- a/src/timezone/strftime.c +++ b/src/timezone/strftime.c @@ -1,4 +1,4 @@ -/* Convert a broken-down time stamp to a string. */ +/* Convert a broken-down timestamp to a string. */ /* * Copyright 1989 The Regents of the University of California. @@ -41,10 +41,8 @@ #include "postgres.h" #include -#include #include "private.h" -#include "tzfile.h" struct lc_time_T @@ -84,17 +82,17 @@ static const struct lc_time_T C_time_locale = { /* * x_fmt * - * C99 requires this format. Using just numbers (as here) makes Quakers - * happier; it's also compatible with SVR4. + * C99 and later require this format. Using just numbers (as here) makes + * Quakers happier; it's also compatible with SVR4. */ "%m/%d/%y", /* * c_fmt * - * C99 requires this format. Previously this code used "%D %X", but we now - * conform to C99. Note that "%a %b %d %H:%M:%S %Y" is used by Solaris - * 2.3. + * C99 and later require this format. Previously this code used "%D %X", + * but we now conform to C99. Note that "%a %b %d %H:%M:%S %Y" is used by + * Solaris 2.3. */ "%a %b %e %T %Y", @@ -108,27 +106,26 @@ static const struct lc_time_T C_time_locale = { "%a %b %e %H:%M:%S %Z %Y" }; +enum warn +{ + IN_NONE, IN_SOME, IN_THIS, IN_ALL +}; + static char *_add(const char *, char *, const char *); static char *_conv(int, const char *, char *, const char *); -static char *_fmt(const char *, const struct pg_tm *, char *, - const char *, int *); +static char *_fmt(const char *, const struct pg_tm *, char *, const char *, + enum warn *); static char *_yconv(int, int, bool, bool, char *, const char *); -#define IN_NONE 0 -#define IN_SOME 1 -#define IN_THIS 2 -#define IN_ALL 3 - size_t pg_strftime(char *s, size_t maxsize, const char *format, - const struct pg_tm * t) + const struct pg_tm *t) { char *p; - int warn; + enum warn warn = IN_NONE; - warn = IN_NONE; - p = _fmt(((format == NULL) ? "%c" : format), t, s, s + maxsize, &warn); + p = _fmt(format, t, s, s + maxsize, &warn); if (p == s + maxsize) return 0; *p = '\0'; @@ -136,8 +133,8 @@ pg_strftime(char *s, size_t maxsize, const char *format, } static char * -_fmt(const char *format, const struct pg_tm * t, char *pt, const char *ptlim, - int *warnp) +_fmt(const char *format, const struct pg_tm *t, char *pt, + const char *ptlim, enum warn *warnp) { for (; *format; ++format) { @@ -186,7 +183,7 @@ _fmt(const char *format, const struct pg_tm * t, char *pt, const char *ptlim, continue; case 'c': { - int warn2 = IN_SOME; + enum warn warn2 = IN_SOME; pt = _fmt(Locale->c_fmt, t, pt, ptlim, &warn2); if (warn2 == IN_ALL) @@ -205,9 +202,9 @@ _fmt(const char *format, const struct pg_tm * t, char *pt, const char *ptlim, case 'O': /* - * C99 locale modifiers. The sequences %Ec %EC %Ex %EX - * %Ey %EY %Od %oe %OH %OI %Om %OM %OS %Ou %OU %OV %Ow - * %OW %Oy are supposed to provide alternate + * Locale modifiers of C99 and later. The sequences %Ec + * %EC %Ex %EX %Ey %EY %Od %oe %OH %OI %Om %OM %OS %Ou %OU + * %OV %Ow %OW %Oy are supposed to provide alternate * representations. */ goto label; @@ -247,7 +244,7 @@ _fmt(const char *format, const struct pg_tm * t, char *pt, const char *ptlim, */ pt = _add("kitchen sink", pt, ptlim); continue; -#endif /* defined KITCHEN_SINK */ +#endif /* defined KITCHEN_SINK */ case 'l': /* @@ -419,7 +416,7 @@ _fmt(const char *format, const struct pg_tm * t, char *pt, const char *ptlim, continue; case 'x': { - int warn2 = IN_SOME; + enum warn warn2 = IN_SOME; pt = _fmt(Locale->x_fmt, t, pt, ptlim, &warn2); if (warn2 == IN_ALL) @@ -444,19 +441,26 @@ _fmt(const char *format, const struct pg_tm * t, char *pt, const char *ptlim, pt = _add(t->tm_zone, pt, ptlim); /* - * C99 says that %Z must be replaced by the empty string - * if the time zone is not determinable. + * C99 and later say that %Z must be replaced by the empty + * string if the time zone is not determinable. */ continue; case 'z': { long diff; char const *sign; + bool negative; if (t->tm_isdst < 0) continue; diff = t->tm_gmtoff; - if (diff < 0) + negative = diff < 0; + if (diff == 0) + { + if (t->tm_zone != NULL) + negative = t->tm_zone[0] == '-'; + } + if (negative) { sign = "-"; diff = -diff; diff --git a/src/timezone/tzfile.h b/src/timezone/tzfile.h index 32d237b827..2843833e49 100644 --- a/src/timezone/tzfile.h +++ b/src/timezone/tzfile.h @@ -34,9 +34,9 @@ struct tzhead { char tzh_magic[4]; /* TZ_MAGIC */ char tzh_version[1]; /* '\0' or '2' or '3' as of 2013 */ - char tzh_reserved[15]; /* reserved; must be zero */ - char tzh_ttisgmtcnt[4]; /* coded number of trans. time flags */ - char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */ + char tzh_reserved[15]; /* reserved; must be zero */ + char tzh_ttisgmtcnt[4]; /* coded number of trans. time flags */ + char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */ char tzh_leapcnt[4]; /* coded number of leap seconds */ char tzh_timecnt[4]; /* coded number of transition times */ char tzh_typecnt[4]; /* coded number of local time types */ @@ -100,56 +100,4 @@ struct tzhead #define TZ_MAX_LEAPS 50 /* Maximum number of leap second corrections */ -#define SECSPERMIN 60 -#define MINSPERHOUR 60 -#define HOURSPERDAY 24 -#define DAYSPERWEEK 7 -#define DAYSPERNYEAR 365 -#define DAYSPERLYEAR 366 -#define SECSPERHOUR (SECSPERMIN * MINSPERHOUR) -#define SECSPERDAY ((int32) SECSPERHOUR * HOURSPERDAY) -#define MONSPERYEAR 12 - -#define TM_SUNDAY 0 -#define TM_MONDAY 1 -#define TM_TUESDAY 2 -#define TM_WEDNESDAY 3 -#define TM_THURSDAY 4 -#define TM_FRIDAY 5 -#define TM_SATURDAY 6 - -#define TM_JANUARY 0 -#define TM_FEBRUARY 1 -#define TM_MARCH 2 -#define TM_APRIL 3 -#define TM_MAY 4 -#define TM_JUNE 5 -#define TM_JULY 6 -#define TM_AUGUST 7 -#define TM_SEPTEMBER 8 -#define TM_OCTOBER 9 -#define TM_NOVEMBER 10 -#define TM_DECEMBER 11 - -#define TM_YEAR_BASE 1900 - -#define EPOCH_YEAR 1970 -#define EPOCH_WDAY TM_THURSDAY - -#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0)) - -/* - * Since everything in isleap is modulo 400 (or a factor of 400), we know that - * isleap(y) == isleap(y % 400) - * and so - * isleap(a + b) == isleap((a + b) % 400) - * or - * isleap(a + b) == isleap(a % 400 + b % 400) - * This is true even if % means modulo rather than Fortran remainder - * (which is allowed by C89 but not C99). - * We use this to avoid addition overflow problems. - */ - -#define isleap_sum(a, b) isleap((a) % 400 + (b) % 400) - -#endif /* !defined TZFILE_H */ +#endif /* !defined TZFILE_H */ diff --git a/src/timezone/tznames/America.txt b/src/timezone/tznames/America.txt index f00834e987..1c5eb1f8c5 100644 --- a/src/timezone/tznames/America.txt +++ b/src/timezone/tznames/America.txt @@ -9,9 +9,7 @@ # Acre time is sometimes called Acre Standard Time (AST) which leads to a # conflict with AST (see below at AST) -ACT -18000 # Acre Time - # (America/Eirunepe) - # (America/Rio_Branco) +ACT -18000 # Acre Time (obsolete) # CONFLICT! ACST is not unique # Other timezones: # - ACST: Australian Central Standard Time @@ -35,30 +33,13 @@ AKST -32400 # Alaska Standard Time # CONFLICT! AMST is not unique # Other timezones: # - AMST: Armenia Summer Time (Asia) -AMST -10800 D # Amazon Summer Time - # (America/Campo_Grande) - # (America/Cuiaba) +AMST -10800 D # Amazon Summer Time (obsolete) # CONFLICT! AMT is not unique # Other timezones: # - AMT: Armenia Time (Asia) -AMT -14400 # Amazon Time - # (America/Boa_Vista) - # (America/Campo_Grande) - # (America/Cuiaba) - # (America/Manaus) - # (America/Porto_Velho) -ART America/Argentina/Buenos_Aires # Argentina Time - # (America/Argentina/Buenos_Aires) - # (America/Argentina/Cordoba) - # (America/Argentina/Tucuman) - # (America/Argentina/La_Rioja) - # (America/Argentina/San_Juan) - # (America/Argentina/Jujuy) - # (America/Argentina/Catamarca) - # (America/Argentina/Mendoza) - # (America/Argentina/Rio_Gallegos) - # (America/Argentina/Ushuaia) -ARST America/Argentina/Buenos_Aires # Argentina Summer Time +AMT -14400 # Amazon Time (obsolete) +ART America/Argentina/Buenos_Aires # Argentina Time (obsolete) +ARST America/Argentina/Buenos_Aires # Argentina Summer Time (obsolete) # CONFLICT! AST is not unique # Other timezones: # - AST: Arabic Standard Time (Asia) @@ -90,19 +71,10 @@ AST -14400 # Atlantic Standard Time # (America/Thule) # (America/Tortola) # (Atlantic/Bermuda) -BOT -14400 # Bolivia Time - # (America/La_Paz) +BOT -14400 # Bolivia Time (obsolete) BRA -10800 # Brazil Time (not in IANA database) -BRST -7200 D # Brasil Summer Time - # (America/Sao_Paulo) -BRT -10800 # Brasil Time - # (America/Araguaina) - # (America/Bahia) - # (America/Belem) - # (America/Fortaleza) - # (America/Maceio) - # (America/Recife) - # (America/Sao_Paulo) +BRST -7200 D # Brasil Summer Time (obsolete) +BRT -10800 # Brasil Time (obsolete) # CONFLICT! CDT is not unique # Other timezones: # - CDT: Central Daylight Time (America) @@ -125,13 +97,9 @@ CDT -18000 D # Central Daylight Time # (America/Rainy_River) # (America/Rankin_Inlet) # (America/Winnipeg) -CLST -10800 D # Chile Summer Time - # (America/Santiago) - # (Antarctica/Palmer) -CLT America/Santiago # Chile Time - # (America/Santiago) - # (Antarctica/Palmer) -COT -18000 # Columbia Time (not in IANA database) +CLST -10800 D # Chile Summer Time (obsolete) +CLT America/Santiago # Chile Time (obsolete) +COT -18000 # Columbia Time (obsolete) # CONFLICT! CST is not unique # Other timezones: # - CST: Central Standard Time (Australia) @@ -156,9 +124,7 @@ CST -21600 # Central Standard Time (America) # (America/Regina) # (America/Swift_Current) # (America/Winnipeg) -ECT -18000 # Ecuador Time - # Eastern Caribbean Time - # (America/Guayaquil) +ECT -18000 # Ecuador Time (obsolete) EDT -14400 D # Eastern Daylight Saving Time # (America/Detroit) # (America/Grand_Turk) @@ -176,10 +142,8 @@ EDT -14400 D # Eastern Daylight Saving Time # (America/Pangnirtung) # (America/Thunder_Bay) # (America/Toronto) -EGST 0 D # East Greenland Summer Time - # (America/Scoresbysund) -EGT -3600 # East Greenland Time (Svalbard & Jan Mayen) - # (America/Scoresbysund) +EGST 0 D # East Greenland Summer Time (obsolete) +EGT -3600 # East Greenland Time (Svalbard & Jan Mayen) (obsolete) # CONFLICT! EST is not unique # Other timezones: # - EST: Eastern Standard Time (Australia) @@ -205,12 +169,9 @@ EST -18000 # Eastern Standard Time (America) # (America/Pangnirtung) # (America/Thunder_Bay) # (America/Toronto) -FNT -7200 # Fernando de Noronha Time - # (America/Noronha) -FNST -3600 D # Fernando de Noronha Summer Time (not in IANA database) - # (America/Noronha) -GFT -10800 # French Guiana Time - # (America/Cayenne) +FNT -7200 # Fernando de Noronha Time (obsolete) +FNST -3600 D # Fernando de Noronha Summer Time (obsolete) +GFT -10800 # French Guiana Time (obsolete) GMT 0 # Greenwich Mean Time # (Africa/Abidjan) # (Africa/Bamako) @@ -229,8 +190,7 @@ GMT 0 # Greenwich Mean Time # (Etc/GMT) # (Europe/Dublin) # (Europe/London) -GYT America/Guyana # Guyana Time - # (America/Guyana) +GYT America/Guyana # Guyana Time (obsolete) HADT -32400 D # Hawaii-Aleutian Daylight Time (obsolete abbreviation) # (America/Adak) HAST -36000 # Hawaii-Aleutian Standard Time (obsolete abbreviation) @@ -274,11 +234,9 @@ PDT -25200 D # Pacific Daylight Time # (America/Tijuana) # (America/Vancouver) # (America/Whitehorse) -PET -18000 # Peru Time (not in IANA database) -PMDT -7200 D # Pierre & Miquelon Daylight Time - # (America/Miquelon) -PMST -10800 # Pierre & Miquelon Standard Time - # (America/Miquelon) +PET -18000 # Peru Time (obsolete) +PMDT -7200 D # Pierre & Miquelon Daylight Time (obsolete) +PMST -10800 # Pierre & Miquelon Standard Time (obsolete) PST -28800 # Pacific Standard Time # (America/Dawson) # (America/Los_Angeles) @@ -286,19 +244,11 @@ PST -28800 # Pacific Standard Time # (America/Vancouver) # (America/Whitehorse) # (Pacific/Pitcairn) -PYST -10800 D # Paraguay Summer Time - # (America/Asuncion) -PYT America/Asuncion # Paraguay Time - # (America/Asuncion) -SRT America/Paramaribo # Suriname Time - # (America/Paramaribo) +PYST -10800 D # Paraguay Summer Time (obsolete) +PYT America/Asuncion # Paraguay Time (obsolete) +SRT America/Paramaribo # Suriname Time (obsolete) UYST -7200 D # Uruguay Summer Time (obsolete) - # (America/Montevideo) -UYT -10800 # Uruguay Time - # (America/Montevideo) -VET America/Caracas # Venezuela Time - # (America/Caracas) -WGST -7200 D # Western Greenland Summer Time - # (America/Godthab) -WGT -10800 # West Greenland Time - # (America/Godthab) +UYT -10800 # Uruguay Time (obsolete) +VET America/Caracas # Venezuela Time (obsolete) +WGST -7200 D # Western Greenland Summer Time (obsolete) +WGT -10800 # West Greenland Time (obsolete) diff --git a/src/timezone/tznames/Antarctica.txt b/src/timezone/tznames/Antarctica.txt index 942e81993a..709f6c023b 100644 --- a/src/timezone/tznames/Antarctica.txt +++ b/src/timezone/tznames/Antarctica.txt @@ -10,29 +10,18 @@ AWST 28800 # Australian Western Standard Time # (Antarctica/Casey) # (Australia/Perth) -CLST -10800 D # Chile Summer Time - # (America/Santiago) - # (Antarctica/Palmer) -CLT America/Santiago # Chile Time - # (America/Santiago) - # (Antarctica/Palmer) -DAVT Antarctica/Davis # Davis Time (Antarctica) - # (Antarctica/Davis) -DDUT 36000 # Dumont-d`Urville Time (Antarctica) - # (Antarctica/DumontDUrville) -MAWT Antarctica/Mawson # Mawson Time (Antarctica) - # (Antarctica/Mawson) -MIST 39600 # Macquarie Island Time - # (Antarctica/Macquarie) +CLST -10800 D # Chile Summer Time (obsolete) +CLT America/Santiago # Chile Time (obsolete) +DAVT Antarctica/Davis # Davis Time (Antarctica) (obsolete) +DDUT 36000 # Dumont-d`Urville Time (Antarctica) (obsolete) +MAWT Antarctica/Mawson # Mawson Time (Antarctica) (obsolete) +MIST 39600 # Macquarie Island Time (obsolete) NZDT 46800 D # New Zealand Daylight Time # (Antarctica/McMurdo) # (Pacific/Auckland) NZST 43200 # New Zealand Standard Time # (Antarctica/McMurdo) # (Pacific/Auckland) -ROTT -10800 # Rothera Time - # (Antarctica/Rothera) -SYOT 10800 # Syowa Time - # (Antarctica/Syowa) -VOST 21600 # Vostok time - # (Antarctica/Vostok) +ROTT -10800 # Rothera Time (obsolete) +SYOT 10800 # Syowa Time (obsolete) +VOST 21600 # Vostok time (obsolete) diff --git a/src/timezone/tznames/Asia.txt b/src/timezone/tznames/Asia.txt index f17dbfe9f2..4e365b0028 100644 --- a/src/timezone/tznames/Asia.txt +++ b/src/timezone/tznames/Asia.txt @@ -7,23 +7,19 @@ # src/timezone/tznames/Asia.txt # -AFT 16200 # Afghanistan Time - # (Asia/Kabul) +AFT 16200 # Afghanistan Time (obsolete) ALMST 25200 D # Alma-Ata Summer Time (obsolete) ALMT 21600 # Alma-Ata Time (obsolete) # CONFLICT! AMST is not unique # Other timezones: # - AMST: Amazon Summer Time (America) -AMST Asia/Yerevan # Armenia Summer Time - # (Asia/Yerevan) +AMST Asia/Yerevan # Armenia Summer Time (obsolete) # CONFLICT! AMT is not unique # Other timezones: # - AMT: Amazon Time (America) -AMT Asia/Yerevan # Armenia Time - # (Asia/Yerevan) +AMT Asia/Yerevan # Armenia Time (obsolete) ANAST Asia/Anadyr # Anadyr Summer Time (obsolete) -ANAT Asia/Anadyr # Anadyr Time - # (Asia/Anadyr) +ANAT Asia/Anadyr # Anadyr Time (obsolete) AQTST Asia/Aqtau # Aqtau Summer Time (obsolete) AQTT Asia/Aqtau # Aqtau Time (obsolete) # CONFLICT! AST is not unique @@ -34,28 +30,16 @@ AQTT Asia/Aqtau # Aqtau Time (obsolete) # - AST: Antigua Standard Time (America) same offset as Atlantic Standard Time # - AST: Antilles Standard Time (America) same offset as Atlantic Standard Time # - AST: Al Manamah Standard Time (Asia) same offset as Arabia Standard Time -AST 10800 # Arabia Standard Time - # (Asia/Aden) - # (Asia/Baghdad) - # (Asia/Bahrain) - # (Asia/Kuwait) - # (Asia/Qatar) - # (Asia/Riyadh) +AST 10800 # Arabia Standard Time (obsolete) AZST Asia/Baku # Azerbaijan Summer Time (obsolete) -AZT Asia/Baku # Azerbaijan Time - # (Asia/Baku) -BDT 21600 # Bangladesh Time - # (Asia/Dhaka) -BNT 28800 # Brunei Darussalam Time - # (Asia/Brunei) +AZT Asia/Baku # Azerbaijan Time (obsolete) +BDT 21600 # Bangladesh Time (obsolete) +BNT 28800 # Brunei Darussalam Time (obsolete) BORT 28800 # Borneo Time (Indonesia) (not in IANA database) -BTT 21600 # Bhutan Time - # (Asia/Thimphu) +BTT 21600 # Bhutan Time (obsolete) CCT 28800 # China Coastal Time (not in IANA database) -CHOST Asia/Choibalsan # Choibalsan Summer Time - # (Asia/Choibalsan) -CHOT Asia/Choibalsan # Choibalsan Time - # (Asia/Choibalsan) +CHOST Asia/Choibalsan # Choibalsan Summer Time (obsolete) +CHOT Asia/Choibalsan # Choibalsan Time (obsolete) CIT 28800 # Central Indonesia Time (obsolete, WITA is now preferred) # CONFLICT! CST is not unique # Other timezones: @@ -115,33 +99,22 @@ EET 7200 # East-Egypt Time # (Europe/Zaporozhye) EIT 32400 # East Indonesia Time (obsolete, WIT is now preferred) GEST Asia/Tbilisi # Georgia Summer Time (obsolete) -GET Asia/Tbilisi # Georgia Time - # (Asia/Tbilisi) +GET Asia/Tbilisi # Georgia Time (obsolete) # CONFLICT! GST is not unique # Other timezones: # - GST: South Georgia Time (Atlantic) -GST 14400 # Gulf Standard Time - # (Asia/Dubai) - # (Asia/Muscat) -HKT 28800 # Hong Kong Time (not in IANA database) -HOVST 28800 D # Hovd Summer Time - # (Asia/Hovd) -HOVT Asia/Hovd # Hovd Time - # (Asia/Hovd) -ICT 25200 # Indochina Time - # (Asia/Bangkok) - # (Asia/Phnom_Penh) - # (Asia/Saigon) - # (Asia/Vientiane) +GST 14400 # Gulf Standard Time (obsolete) +HKT 28800 # Hong Kong Time + # (Asia/Hong_Kong) +HOVST 28800 D # Hovd Summer Time (obsolete) +HOVT Asia/Hovd # Hovd Time (obsolete) +ICT 25200 # Indochina Time (obsolete) IDT 10800 D # Israel Daylight Time # (Asia/Jerusalem) -IRDT Asia/Tehran # Iran Daylight Time - # (Asia/Tehran) +IRDT Asia/Tehran # Iran Daylight Time (obsolete) IRKST Asia/Irkutsk # Irkutsk Summer Time (obsolete) -IRKT Asia/Irkutsk # Irkutsk Time - # (Asia/Irkutsk) -IRST Asia/Tehran # Iran Standard Time - # (Asia/Tehran) +IRKT Asia/Irkutsk # Irkutsk Time (obsolete) +IRST Asia/Tehran # Iran Standard Time (obsolete) IRT 12600 # Iran Time (not in IANA database) # CONFLICT! IST is not unique # Other timezones: @@ -160,68 +133,45 @@ JST 32400 # Japan Standard Time # (Asia/Tokyo) KDT 36000 D # Korean Daylight Time (not in IANA database) KGST 21600 D # Kyrgyzstan Summer Time (obsolete) -KGT Asia/Bishkek # Kyrgyzstan Time - # (Asia/Bishkek) +KGT Asia/Bishkek # Kyrgyzstan Time (obsolete) KRAST Asia/Krasnoyarsk # Krasnoyarsk Summer Time (obsolete) -KRAT Asia/Krasnoyarsk # Krasnoyarsk Time - # (Asia/Krasnoyarsk) +KRAT Asia/Krasnoyarsk # Krasnoyarsk Time (obsolete) KST Asia/Pyongyang # Korean Standard Time # (Asia/Pyongyang) KST 32400 # Korean Standard Time # (Asia/Seoul) LKT Asia/Colombo # Lanka Time (obsolete) MAGST Asia/Magadan # Magadan Summer Time (obsolete) -MAGT Asia/Magadan # Magadan Time - # (Asia/Magadan) -MMT 23400 # Myanmar Time - # (Asia/Rangoon) -MYT 28800 # Malaysia Time - # (Asia/Kuala_Lumpur) - # (Asia/Kuching) +MAGT Asia/Magadan # Magadan Time (obsolete) +MMT 23400 # Myanmar Time (obsolete) +MYT 28800 # Malaysia Time (obsolete) NOVST Asia/Novosibirsk # Novosibirsk Summer Time (obsolete) NOVT Asia/Novosibirsk # Novosibirsk Time (obsolete) -NPT 20700 # Nepal Time - # (Asia/Katmandu) +NPT 20700 # Nepal Time (obsolete) OMSST Asia/Omsk # Omsk Summer Time (obsolete) -OMST Asia/Omsk # Omsk Time - # (Asia/Omsk) +OMST Asia/Omsk # Omsk Time (obsolete) ORAT Asia/Oral # Oral Time (obsolete) PETST Asia/Kamchatka # Petropavlovsk-Kamchatski Summer Time (obsolete) -PETT Asia/Kamchatka # Petropavlovsk-Kamchatski Time - # (Asia/Kamchatka) -PHT 28800 # Philippine Time - # (Asia/Manila) +PETT Asia/Kamchatka # Petropavlovsk-Kamchatski Time (obsolete) +PHT 28800 # Philippine Time (obsolete) PKT 18000 # Pakistan Time # (Asia/Karachi) PKST 21600 D # Pakistan Summer Time # (Asia/Karachi) QYZT 21600 # Kizilorda Time (obsolete) SAKST Asia/Sakhalin # Sakhalin Summer Time (obsolete) -SAKT Asia/Sakhalin # Sakhalin Time - # (Asia/Sakhalin) -SGT Asia/Singapore # Singapore Time - # (Asia/Singapore) -SRET 39600 # Srednekolymsk Time - # (Asia/Srednekolymsk) -TJT 18000 # Tajikistan Time - # (Asia/Dushanbe) -TLT 32400 # East Timor Time - # (Asia/Dili) -TMT Asia/Ashgabat # Turkmenistan Time - # (Asia/Ashgabat) -ULAST 32400 D # Ulan Bator Summer Time - # (Asia/Ulaanbaatar) -ULAT Asia/Ulaanbaatar # Ulan Bator Time - # (Asia/Ulaanbaatar) -UZST 21600 D # Uzbekistan Summer Time - # (Asia/Samarkand) - # (Asia/Tashkent) -UZT 18000 # Uzbekistan Time - # (Asia/Samarkand) - # (Asia/Tashkent) +SAKT Asia/Sakhalin # Sakhalin Time (obsolete) +SGT Asia/Singapore # Singapore Time (obsolete) +SRET 39600 # Srednekolymsk Time (obsolete) +TJT 18000 # Tajikistan Time (obsolete) +TLT 32400 # East Timor Time (obsolete) +TMT Asia/Ashgabat # Turkmenistan Time (obsolete) +ULAST 32400 D # Ulan Bator Summer Time (obsolete) +ULAT Asia/Ulaanbaatar # Ulan Bator Time (obsolete) +UZST 21600 D # Uzbekistan Summer Time (obsolete) +UZT 18000 # Uzbekistan Time (obsolete) VLAST Asia/Vladivostok # Vladivostok Summer Time (obsolete) -VLAT Asia/Vladivostok # Vladivostok Time - # (Asia/Vladivostok) +VLAT Asia/Vladivostok # Vladivostok Time (obsolete) WIB 25200 # Waktu Indonesia Barat # (Asia/Jakarta) # (Asia/Pontianak) @@ -229,11 +179,8 @@ WIT 32400 # Waktu Indonesia Timur (caution: this used to mean 25200) # (Asia/Jayapura) WITA 28800 # Waktu Indonesia Tengah # (Asia/Makassar) -XJT 21600 # Xinjiang Time - # (Asia/Urumqi) +XJT 21600 # Xinjiang Time (obsolete) YAKST Asia/Yakutsk # Yakutsk Summer Time (obsolete) -YAKT Asia/Yakutsk # Yakutsk Time - # (Asia/Yakutsk) +YAKT Asia/Yakutsk # Yakutsk Time (obsolete) YEKST 21600 D # Yekaterinburg Summer Time (obsolete) -YEKT Asia/Yekaterinburg # Yekaterinburg Time - # (Asia/Yekaterinburg) +YEKT Asia/Yekaterinburg # Yekaterinburg Time (obsolete) diff --git a/src/timezone/tznames/Atlantic.txt b/src/timezone/tznames/Atlantic.txt index 1d34d1ed4b..4e036cdda5 100644 --- a/src/timezone/tznames/Atlantic.txt +++ b/src/timezone/tznames/Atlantic.txt @@ -44,14 +44,10 @@ AST -14400 # Atlantic Standard Time # (America/Thule) # (America/Tortola) # (Atlantic/Bermuda) -AZOST 0 D # Azores Summer Time - # (Atlantic/Azores) -AZOT -3600 # Azores Time - # (Atlantic/Azores) -CVT Atlantic/Cape_Verde # Cape Verde Time - # (Atlantic/Cape_Verde) -FKST Atlantic/Stanley # Falkland Islands Summer/Standard Time - # (Atlantic/Stanley) +AZOST 0 D # Azores Summer Time (obsolete) +AZOT -3600 # Azores Time (obsolete) +CVT Atlantic/Cape_Verde # Cape Verde Time (obsolete) +FKST Atlantic/Stanley # Falkland Islands Summer/Standard Time (obsolete) FKT Atlantic/Stanley # Falkland Islands Time (obsolete) GMT 0 # Greenwich Mean Time # (Africa/Abidjan) @@ -74,8 +70,7 @@ GMT 0 # Greenwich Mean Time # CONFLICT! GST is not unique # Other timezones: # - GST: Gulf Standard Time (Asia) -GST -7200 # South Georgia Time (Atlantic) - # (Atlantic/South_Georgia) +GST -7200 # South Georgia Time (Atlantic) (obsolete) WEST 3600 D # Western Europe Summer Time # (Atlantic/Canary) # (Atlantic/Faeroe) diff --git a/src/timezone/tznames/Australia.txt b/src/timezone/tznames/Australia.txt index 9751c3deb1..01629de72a 100644 --- a/src/timezone/tznames/Australia.txt +++ b/src/timezone/tznames/Australia.txt @@ -16,8 +16,7 @@ ACST 34200 # Australian Central Standard Time # (Australia/Adelaide) # (Australia/Broken_Hill) # (Australia/Darwin) -ACWST 31500 # Australian Central Western Standard Time - # (Australia/Eucla) +ACWST 31500 # Australian Central Western Standard Time (obsolete) AESST 39600 D # Australia Eastern Summer Standard Time (not in IANA database) AEDT 39600 D # Australian Eastern Daylight Time # (Australia/Brisbane) @@ -53,10 +52,8 @@ EAST 36000 # East Australian Standard Time (not in IANA database) # Other timezones: # - EST: Eastern Standard Time (America) EST 36000 # Eastern Standard Time (not in IANA database) -LHDT Australia/Lord_Howe # Lord Howe Daylight Time - # (Australia/Lord_Howe) -LHST 37800 # Lord Howe Standard Time - # (Australia/Lord_Howe) +LHDT Australia/Lord_Howe # Lord Howe Daylight Time (obsolete) +LHST 37800 # Lord Howe Standard Time (obsolete) LIGT 36000 # Melbourne, Australia (not in IANA database) NZT 43200 # New Zealand Time (not in IANA database) SADT 37800 D # South Australian Daylight-Saving Time (not in IANA database) diff --git a/src/timezone/tznames/Default b/src/timezone/tznames/Default index 7644e264b0..80eb1b1290 100644 --- a/src/timezone/tznames/Default +++ b/src/timezone/tznames/Default @@ -41,9 +41,7 @@ WAT 3600 # West Africa Time # Acre time is sometimes called Acre Standard Time (AST) which leads to a # conflict with AST (see below at AST) -ACT -18000 # Acre Time - # (America/Eirunepe) - # (America/Rio_Branco) +ACT -18000 # Acre Time (obsolete) AKDT -28800 D # Alaska Daylight Time # (America/Anchorage) # (America/Juneau) @@ -54,32 +52,13 @@ AKST -32400 # Alaska Standard Time # (America/Juneau) # (America/Nome) # (America/Yakutat) -ART America/Argentina/Buenos_Aires # Argentina Time - # (America/Argentina/Buenos_Aires) - # (America/Argentina/Cordoba) - # (America/Argentina/Tucuman) - # (America/Argentina/La_Rioja) - # (America/Argentina/San_Juan) - # (America/Argentina/Jujuy) - # (America/Argentina/Catamarca) - # (America/Argentina/Mendoza) - # (America/Argentina/Rio_Gallegos) - # (America/Argentina/Ushuaia) -ARST America/Argentina/Buenos_Aires # Argentina Summer Time -BOT -14400 # Bolivia Time - # (America/La_Paz) +ART America/Argentina/Buenos_Aires # Argentina Time (obsolete) +ARST America/Argentina/Buenos_Aires # Argentina Summer Time (obsolete) +BOT -14400 # Bolivia Time (obsolete) BRA -10800 # Brazil Time (not in IANA database) -BRST -7200 D # Brasil Summer Time - # (America/Sao_Paulo) -BRT -10800 # Brasil Time - # (America/Araguaina) - # (America/Bahia) - # (America/Belem) - # (America/Fortaleza) - # (America/Maceio) - # (America/Recife) - # (America/Sao_Paulo) -COT -18000 # Columbia Time (not in IANA database) +BRST -7200 D # Brasil Summer Time (obsolete) +BRT -10800 # Brasil Time (obsolete) +COT -18000 # Columbia Time (obsolete) # CONFLICT! CDT is not unique # Other timezones: # - CDT: Mexico Central Daylight Time (America) @@ -95,12 +74,8 @@ CDT -18000 D # Central Daylight Time # (America/Rainy_River) # (America/Rankin_Inlet) # (America/Winnipeg) -CLST -10800 D # Chile Summer Time - # (America/Santiago) - # (Antarctica/Palmer) -CLT America/Santiago # Chile Time - # (America/Santiago) - # (Antarctica/Palmer) +CLST -10800 D # Chile Summer Time (obsolete) +CLT America/Santiago # Chile Time (obsolete) # CONFLICT! CST is not unique # Other timezones: # - CST: Central Standard Time (Australia) @@ -135,10 +110,8 @@ EDT -14400 D # Eastern Daylight Saving Time # (America/Pangnirtung) # (America/Thunder_Bay) # (America/Toronto) -EGST 0 D # East Greenland Summer Time - # (America/Scoresbysund) -EGT -3600 # East Greenland Time (Svalbard & Jan Mayen) - # (America/Scoresbysund) +EGST 0 D # East Greenland Summer Time (obsolete) +EGT -3600 # East Greenland Time (Svalbard & Jan Mayen) (obsolete) # CONFLICT! EST is not unique # Other timezones: # - EST: Eastern Standard Time (Australia) @@ -164,14 +137,10 @@ EST -18000 # Eastern Standard Time (America) # (America/Pangnirtung) # (America/Thunder_Bay) # (America/Toronto) -FNT -7200 # Fernando de Noronha Time - # (America/Noronha) -FNST -3600 D # Fernando de Noronha Summer Time (not in IANA database) - # (America/Noronha) -GFT -10800 # French Guiana Time - # (America/Cayenne) -GYT America/Guyana # Guyana Time - # (America/Guyana) +FNT -7200 # Fernando de Noronha Time (obsolete) +FNST -3600 D # Fernando de Noronha Summer Time (obsolete) +GFT -10800 # French Guiana Time (obsolete) +GYT America/Guyana # Guyana Time (obsolete) MDT -21600 D # Mexico Mountain Daylight Time # Mountain Daylight Time # (America/Boise) @@ -197,19 +166,21 @@ MST -25200 # Mexico Mountain Standard Time # (America/Yellowknife) NDT -9000 D # Newfoundland Daylight Time # (America/St_Johns) +# CONFLICT! NFT is not unique +# Other timezones: +# - NFT: Norfolk Time (Pacific) +NFT -12600 # Newfoundland Time (not in IANA database) NST -12600 # Newfoundland Standard Time # (America/St_Johns) -PET -18000 # Peru Time (not in IANA database) +PET -18000 # Peru Time (obsolete) PDT -25200 D # Pacific Daylight Time # (America/Dawson) # (America/Los_Angeles) # (America/Tijuana) # (America/Vancouver) # (America/Whitehorse) -PMDT -7200 D # Pierre & Miquelon Daylight Time - # (America/Miquelon) -PMST -10800 # Pierre & Miquelon Standard Time - # (America/Miquelon) +PMDT -7200 D # Pierre & Miquelon Daylight Time (obsolete) +PMST -10800 # Pierre & Miquelon Standard Time (obsolete) PST -28800 # Pacific Standard Time # (America/Dawson) # (America/Los_Angeles) @@ -217,76 +188,51 @@ PST -28800 # Pacific Standard Time # (America/Vancouver) # (America/Whitehorse) # (Pacific/Pitcairn) -PYST -10800 D # Paraguay Summer Time - # (America/Asuncion) -PYT America/Asuncion # Paraguay Time - # (America/Asuncion) +PYST -10800 D # Paraguay Summer Time (obsolete) +PYT America/Asuncion # Paraguay Time (obsolete) UYST -7200 D # Uruguay Summer Time (obsolete) - # (America/Montevideo) -UYT -10800 # Uruguay Time - # (America/Montevideo) -VET America/Caracas # Venezuela Time - # (America/Caracas) -WGST -7200 D # Western Greenland Summer Time - # (America/Godthab) -WGT -10800 # West Greenland Time - # (America/Godthab) +UYT -10800 # Uruguay Time (obsolete) +VET America/Caracas # Venezuela Time (obsolete) +WGST -7200 D # Western Greenland Summer Time (obsolete) +WGT -10800 # West Greenland Time (obsolete) #################### ANTARCTICA #################### -DAVT Antarctica/Davis # Davis Time (Antarctica) - # (Antarctica/Davis) -DDUT 36000 # Dumont-d'Urville Time (Antarctica) - # (Antarctica/DumontDUrville) - # (Antarctica/Palmer) - # (America/Santiago) -MAWT Antarctica/Mawson # Mawson Time (Antarctica) - # (Antarctica/Mawson) +DAVT Antarctica/Davis # Davis Time (Antarctica) (obsolete) +DDUT 36000 # Dumont-d'Urville Time (Antarctica) (obsolete) +MAWT Antarctica/Mawson # Mawson Time (Antarctica) (obsolete) #################### ASIA #################### -AFT 16200 # Afghanistan Time - # (Asia/Kabul) +AFT 16200 # Afghanistan Time (obsolete) ALMT 21600 # Alma-Ata Time (obsolete) ALMST 25200 D # Alma-Ata Summer Time (obsolete) # CONFLICT! AMST is not unique # Other timezones: # - AMST: Amazon Summer Time (America) -AMST Asia/Yerevan # Armenia Summer Time - # (Asia/Yerevan) +AMST Asia/Yerevan # Armenia Summer Time (obsolete) # CONFLICT! AMT is not unique # Other timezones: -# - AMT: Amazon Time (America) -AMT Asia/Yerevan # Armenia Time - # (Asia/Yerevan) +# - AMT: Armenia Time (Asia) +AMT -14400 # Amazon Time (obsolete) ANAST Asia/Anadyr # Anadyr Summer Time (obsolete) -ANAT Asia/Anadyr # Anadyr Time - # (Asia/Anadyr) +ANAT Asia/Anadyr # Anadyr Time (obsolete) AZST Asia/Baku # Azerbaijan Summer Time (obsolete) -AZT Asia/Baku # Azerbaijan Time - # (Asia/Baku) -BDT 21600 # Bangladesh Time - # (Asia/Dhaka) -BNT 28800 # Brunei Darussalam Time - # (Asia/Brunei) +AZT Asia/Baku # Azerbaijan Time (obsolete) +BDT 21600 # Bangladesh Time (obsolete) +BNT 28800 # Brunei Darussalam Time (obsolete) BORT 28800 # Borneo Time (Indonesia) (not in IANA database) -BTT 21600 # Bhutan Time - # (Asia/Thimphu) +BTT 21600 # Bhutan Time (obsolete) CCT 28800 # China Coastal Time (not in IANA database) GEST Asia/Tbilisi # Georgia Summer Time (obsolete) -GET Asia/Tbilisi # Georgia Time - # (Asia/Tbilisi) -HKT 28800 # Hong Kong Time (not in IANA database) -ICT 25200 # Indochina Time - # (Asia/Bangkok) - # (Asia/Phnom_Penh) - # (Asia/Saigon) - # (Asia/Vientiane) +GET Asia/Tbilisi # Georgia Time (obsolete) +HKT 28800 # Hong Kong Time + # (Asia/Hong_Kong) +ICT 25200 # Indochina Time (obsolete) IDT 10800 D # Israel Daylight Time # (Asia/Jerusalem) IRKST Asia/Irkutsk # Irkutsk Summer Time (obsolete) -IRKT Asia/Irkutsk # Irkutsk Time - # (Asia/Irkutsk) +IRKT Asia/Irkutsk # Irkutsk Time (obsolete) IRT 12600 # Iran Time (not in IANA database) # CONFLICT! IST is not unique # Other timezones: @@ -299,65 +245,42 @@ JST 32400 # Japan Standard Time # (Asia/Tokyo) KDT 36000 D # Korean Daylight Time (not in IANA database) KGST 21600 D # Kyrgyzstan Summer Time (obsolete) -KGT Asia/Bishkek # Kyrgyzstan Time - # (Asia/Bishkek) +KGT Asia/Bishkek # Kyrgyzstan Time (obsolete) KRAST Asia/Krasnoyarsk # Krasnoyarsk Summer Time (obsolete) -KRAT Asia/Krasnoyarsk # Krasnoyarsk Time - # (Asia/Krasnoyarsk) +KRAT Asia/Krasnoyarsk # Krasnoyarsk Time (obsolete) KST 32400 # Korean Standard Time # (Asia/Seoul) LKT Asia/Colombo # Lanka Time (obsolete) MAGST Asia/Magadan # Magadan Summer Time (obsolete) -MAGT Asia/Magadan # Magadan Time - # (Asia/Magadan) -MMT 23400 # Myanmar Time - # (Asia/Rangoon) -MYT 28800 # Malaysia Time - # (Asia/Kuala_Lumpur) - # (Asia/Kuching) +MAGT Asia/Magadan # Magadan Time (obsolete) +MMT 23400 # Myanmar Time (obsolete) +MYT 28800 # Malaysia Time (obsolete) NOVST Asia/Novosibirsk # Novosibirsk Summer Time (obsolete) NOVT Asia/Novosibirsk # Novosibirsk Time (obsolete) -NPT 20700 # Nepal Time - # (Asia/Katmandu) +NPT 20700 # Nepal Time (obsolete) OMSST Asia/Omsk # Omsk Summer Time (obsolete) -OMST Asia/Omsk # Omsk Time - # (Asia/Omsk) +OMST Asia/Omsk # Omsk Time (obsolete) PETST Asia/Kamchatka # Petropavlovsk-Kamchatski Summer Time (obsolete) -PETT Asia/Kamchatka # Petropavlovsk-Kamchatski Time - # (Asia/Kamchatka) -PHT 28800 # Philippine Time - # (Asia/Manila) +PETT Asia/Kamchatka # Petropavlovsk-Kamchatski Time (obsolete) +PHT 28800 # Philippine Time (obsolete) PKT 18000 # Pakistan Time # (Asia/Karachi) PKST 21600 D # Pakistan Summer Time # (Asia/Karachi) -SGT Asia/Singapore # Singapore Time - # (Asia/Singapore) -TJT 18000 # Tajikistan Time - # (Asia/Dushanbe) -TMT Asia/Ashgabat # Turkmenistan Time - # (Asia/Ashgabat) -ULAST 32400 D # Ulan Bator Summer Time - # (Asia/Ulaanbaatar) -ULAT Asia/Ulaanbaatar # Ulan Bator Time - # (Asia/Ulaanbaatar) -UZST 21600 D # Uzbekistan Summer Time - # (Asia/Samarkand) - # (Asia/Tashkent) -UZT 18000 # Uzbekistan Time - # (Asia/Samarkand) - # (Asia/Tashkent) +SGT Asia/Singapore # Singapore Time (obsolete) +TJT 18000 # Tajikistan Time (obsolete) +TMT Asia/Ashgabat # Turkmenistan Time (obsolete) +ULAST 32400 D # Ulan Bator Summer Time (obsolete) +ULAT Asia/Ulaanbaatar # Ulan Bator Time (obsolete) +UZST 21600 D # Uzbekistan Summer Time (obsolete) +UZT 18000 # Uzbekistan Time (obsolete) VLAST Asia/Vladivostok # Vladivostok Summer Time (obsolete) -VLAT Asia/Vladivostok # Vladivostok Time - # (Asia/Vladivostok) -XJT 21600 # Xinjiang Time - # (Asia/Urumqi) +VLAT Asia/Vladivostok # Vladivostok Time (obsolete) +XJT 21600 # Xinjiang Time (obsolete) YAKST Asia/Yakutsk # Yakutsk Summer Time (obsolete) -YAKT Asia/Yakutsk # Yakutsk Time - # (Asia/Yakutsk) +YAKT Asia/Yakutsk # Yakutsk Time (obsolete) YEKST 21600 D # Yekaterinburg Summer Time (obsolete) -YEKT Asia/Yekaterinburg # Yekaterinburg Time - # (Asia/Yekaterinburg) +YEKT Asia/Yekaterinburg # Yekaterinburg Time (obsolete) #################### ATLANTIC #################### @@ -398,12 +321,9 @@ AST -14400 # Atlantic Standard Time # (America/Thule) # (America/Tortola) # (Atlantic/Bermuda) -AZOST 0 D # Azores Summer Time - # (Atlantic/Azores) -AZOT -3600 # Azores Time - # (Atlantic/Azores) -FKST Atlantic/Stanley # Falkland Islands Summer/Standard Time - # (Atlantic/Stanley) +AZOST 0 D # Azores Summer Time (obsolete) +AZOT -3600 # Azores Time (obsolete) +FKST Atlantic/Stanley # Falkland Islands Summer/Standard Time (obsolete) FKT Atlantic/Stanley # Falkland Islands Time (obsolete) #################### AUSTRALIA #################### @@ -417,8 +337,7 @@ ACST 34200 # Australian Central Standard Time # (Australia/Adelaide) # (Australia/Broken_Hill) # (Australia/Darwin) -ACWST 31500 # Australian Central Western Standard Time - # (Australia/Eucla) +ACWST 31500 # Australian Central Western Standard Time (obsolete) AESST 39600 D # Australian Eastern Summer Standard Time (not in IANA database) AEDT 39600 D # Australian Eastern Daylight Time # (Australia/Brisbane) @@ -439,10 +358,8 @@ AWST 28800 # Australian Western Standard Time # (Australia/Perth) CADT 37800 D # Central Australia Daylight-Saving Time (not in IANA database) CAST 34200 # Central Australia Standard Time (not in IANA database) -LHDT Australia/Lord_Howe # Lord Howe Daylight Time - # (Australia/Lord_Howe) -LHST 37800 # Lord Howe Standard Time - # (Australia/Lord_Howe) +LHDT Australia/Lord_Howe # Lord Howe Daylight Time (obsolete) +LHST 37800 # Lord Howe Standard Time (obsolete) LIGT 36000 # Melbourne, Australia (not in IANA database) NZT 43200 # New Zealand Time (not in IANA database) SADT 37800 D # South Australian Daylight-Saving Time (not in IANA database) @@ -631,10 +548,15 @@ EETDST 10800 D # East-Egypt Summertime FET 10800 # Further-eastern European Time (obsolete) # (Europe/Kaliningrad) # (Europe/Minsk) -MEST 7200 D # Middle Europe Summer Time (not in IANA database) -MET 3600 # Middle Europe Time (not in IANA database) +MEST 7200 D # Middle Europe Summer Time + # (MET) +MESZ 7200 D # Mitteleuropaeische Sommerzeit (German) + # (attested in IANA comments though not their code) +MET 3600 # Middle Europe Time + # (MET) METDST 7200 D # Middle Europe Summer Time (not in IANA database) -MEZ 3600 # Mitteleuropaeische Zeit (German) (not in IANA database) +MEZ 3600 # Mitteleuropaeische Zeit (German) + # (attested in IANA comments though not their code) MSD 14400 D # Moscow Daylight Time (obsolete) MSK Europe/Moscow # Moscow Time # (Europe/Moscow) @@ -655,94 +577,53 @@ WETDST 3600 D # Western Europe Summer Time #################### INDIAN #################### -CXT 25200 # Christmas Island Time (Indian Ocean) - # (Indian/Christmas) -IOT Indian/Chagos # British Indian Ocean Territory (Chagos) - # (Indian/Chagos) -MUT 14400 # Mauritius Island Time - # (Indian/Mauritius) -MUST 18000 D # Mauritius Island Summer Time - # (Indian/Mauritius) -MVT 18000 # Maldives Island Time - # (Indian/Maldives) -RET 14400 # Reunion Time - # (Indian/Reunion) -SCT 14400 # Seychelles Time - # (Indian/Mahe) -TFT 18000 # Kerguelen Time - # (Indian/Kerguelen) +CXT 25200 # Christmas Island Time (Indian Ocean) (obsolete) +IOT Indian/Chagos # British Indian Ocean Territory (Chagos) (obsolete) +MUT 14400 # Mauritius Island Time (obsolete) +MUST 18000 D # Mauritius Island Summer Time (obsolete) +MVT 18000 # Maldives Island Time (obsolete) +RET 14400 # Reunion Time (obsolete) +SCT 14400 # Seychelles Time (obsolete) +TFT 18000 # Kerguelen Time (obsolete) #################### PACIFIC #################### -CHADT 49500 D # Chatham Daylight Time (New Zealand) - # (Pacific/Chatham) -CHAST 45900 # Chatham Standard Time (New Zealand) - # (Pacific/Chatham) -CHUT 36000 # Chuuk Time - # (Pacific/Chuuk) -CKT Pacific/Rarotonga # Cook Islands Time - # (Pacific/Rarotonga) -EASST Pacific/Easter # Easter Island Summer Time - # (Pacific/Easter) -EAST Pacific/Easter # Easter Island Time (Chile) - # (Pacific/Easter) -FJST 46800 D # Fiji Summer Time - # (Pacific/Fiji) -FJT 43200 # Fiji Time - # (Pacific/Fiji) -GALT -21600 # Galapagos Time - # (Pacific/Galapagos) -GAMT -32400 # Gambier Time - # (Pacific/Gambier) -GILT 43200 # Gilbert Islands Time - # (Pacific/Tarawa) +CHADT 49500 D # Chatham Daylight Time (New Zealand) (obsolete) +CHAST 45900 # Chatham Standard Time (New Zealand) (obsolete) +CHUT 36000 # Chuuk Time (obsolete) +CKT Pacific/Rarotonga # Cook Islands Time (obsolete) +EASST Pacific/Easter # Easter Island Summer Time (obsolete) +EAST Pacific/Easter # Easter Island Time (Chile) (obsolete) +FJST 46800 D # Fiji Summer Time (obsolete) +FJT 43200 # Fiji Time (obsolete) +GALT -21600 # Galapagos Time (obsolete) +GAMT -32400 # Gambier Time (obsolete) +GILT 43200 # Gilbert Islands Time (obsolete) HST -36000 # Hawaiian Standard Time # (Pacific/Honolulu) # (Pacific/Johnston) -KOST Pacific/Kosrae # Kosrae Time - # (Pacific/Kosrae) -LINT Pacific/Kiritimati # Line Islands Time (Kiribati) - # (Pacific/Kiritimati) -MART -34200 # Marquesas Time - # (Pacific/Marquesas) -MHT 43200 # Kwajalein Time - # (Pacific/Kwajalein) - # (Pacific/Majuro) +KOST Pacific/Kosrae # Kosrae Time (obsolete) +LINT Pacific/Kiritimati # Line Islands Time (Kiribati) (obsolete) +MART -34200 # Marquesas Time (obsolete) +MHT 43200 # Kwajalein Time (obsolete) MPT 36000 # North Mariana Islands Time (not in IANA database) -# CONFLICT! NFT is not unique -# Other timezones: -# - NFT: Norfolk Time (Pacific) -NFT -12600 # Newfoundland Time (not in IANA database) -NUT Pacific/Niue # Niue Time - # (Pacific/Niue) +NUT Pacific/Niue # Niue Time (obsolete) NZDT 46800 D # New Zealand Daylight Time # (Antarctica/McMurdo) # (Pacific/Auckland) NZST 43200 # New Zealand Standard Time # (Antarctica/McMurdo) # (Pacific/Auckland) -PGT 36000 # Papua New Guinea Time - # (Pacific/Port_Moresby) -PHOT Pacific/Enderbury # Phoenix Islands Time (Kiribati) - # (Pacific/Enderbury) -PONT 39600 # Ponape Time (Micronesia) - # (Pacific/Ponape) -PWT 32400 # Palau Time - # (Pacific/Palau) -TAHT -36000 # Tahiti Time (IANA database says "TAHT", other sources "THAT") - # (Pacific/Tahiti) -TKT Pacific/Fakaofo # Tokelau Time - # (Pacific/Fakaofo) -TOT 46800 # Tonga Time - # (Pacific/Tongatapu) -TRUT 36000 # Truk Time (IANA database used to say "TRUT", other sources say "TRUK") - # (Pacific/Truk) -TVT 43200 # Tuvalu Time - # (Pacific/Funafuti) -VUT 39600 # Vanuata Time - # (Pacific/Efate) -WAKT 43200 # Wake Time - # (Pacific/Wake) -WFT 43200 # Wallis and Futuna Time - # (Pacific/Wallis) +PGT 36000 # Papua New Guinea Time (obsolete) +PHOT Pacific/Enderbury # Phoenix Islands Time (Kiribati) (obsolete) +PONT 39600 # Ponape Time (Micronesia) (obsolete) +PWT 32400 # Palau Time (obsolete) +TAHT -36000 # Tahiti Time (obsolete) +TKT Pacific/Fakaofo # Tokelau Time (obsolete) +TOT 46800 # Tonga Time (obsolete) +TRUT 36000 # Truk Time (obsolete) +TVT 43200 # Tuvalu Time (obsolete) +VUT 39600 # Vanuata Time (obsolete) +WAKT 43200 # Wake Time (obsolete) +WFT 43200 # Wallis and Futuna Time (obsolete) YAPT 36000 # Yap Time (Micronesia) (not in IANA database) diff --git a/src/timezone/tznames/Europe.txt b/src/timezone/tznames/Europe.txt index 5d6a594ab5..0cb49f156b 100644 --- a/src/timezone/tznames/Europe.txt +++ b/src/timezone/tznames/Europe.txt @@ -182,17 +182,21 @@ GMT 0 # Greenwich Mean Time # - IST: Israel Standard Time (Asia) IST 3600 D # Irish Summer Time # (Europe/Dublin) -MEST 7200 D # Middle Europe Summer Time (not in IANA database) -MET 3600 # Middle Europe Time (not in IANA database) +MEST 7200 D # Middle Europe Summer Time + # (MET) +MESZ 7200 D # Mitteleuropäische Sommerzeit (German) + # (attested in IANA comments though not their code) +MET 3600 # Middle Europe Time + # (MET) METDST 7200 D # Middle Europe Summer Time (not in IANA database) -MEZ 3600 # Mitteleuropäische Zeit (German) (not in IANA database) +MEZ 3600 # Mitteleuropäische Zeit (German) + # (attested in IANA comments though not their code) MSD 14400 D # Moscow Daylight Time (obsolete) MSK Europe/Moscow # Moscow Time # (Europe/Moscow) # (Europe/Volgograd) SAMST Europe/Samara # Samara Summer Time (obsolete) -SAMT Europe/Samara # Samara Time - # (Europe/Samara) +SAMT Europe/Samara # Samara Time (obsolete) VOLT Europe/Volgograd # Volgograd Time (obsolete) WEST 3600 D # Western Europe Summer Time # (Africa/Casablanca) diff --git a/src/timezone/tznames/Indian.txt b/src/timezone/tznames/Indian.txt index 634660075f..8e6fe6094c 100644 --- a/src/timezone/tznames/Indian.txt +++ b/src/timezone/tznames/Indian.txt @@ -7,10 +7,8 @@ # src/timezone/tznames/Indian.txt # -CCT 23400 # Cocos Islands Time (Indian Ocean) - # (Indian/Cocos) -CXT 25200 # Christmas Island Time (Indian Ocean) - # (Indian/Christmas) +CCT 23400 # Cocos Islands Time (Indian Ocean) (obsolete) +CXT 25200 # Christmas Island Time (Indian Ocean) (obsolete) EAT 10800 # East Africa Time # (Africa/Addis_Ababa) # (Africa/Asmera) @@ -23,17 +21,10 @@ EAT 10800 # East Africa Time # (Indian/Antananarivo) # (Indian/Comoro) # (Indian/Mayotte) -IOT Indian/Chagos # British Indian Ocean Territory (Chagos) - # (Indian/Chagos) -MUT 14400 # Mauritius Island Time - # (Indian/Mauritius) -MUST 18000 D # Mauritius Island Summer Time - # (Indian/Mauritius) -MVT 18000 # Maldives Island Time - # (Indian/Maldives) -RET 14400 # Reunion Time - # (Indian/Reunion) -SCT 14400 # Seychelles Time - # (Indian/Mahe) -TFT 18000 # Kerguelen Time - # (Indian/Kerguelen) +IOT Indian/Chagos # British Indian Ocean Territory (Chagos) (obsolete) +MUT 14400 # Mauritius Island Time (obsolete) +MUST 18000 D # Mauritius Island Summer Time (obsolete) +MVT 18000 # Maldives Island Time (obsolete) +RET 14400 # Reunion Time (obsolete) +SCT 14400 # Seychelles Time (obsolete) +TFT 18000 # Kerguelen Time (obsolete) diff --git a/src/timezone/tznames/Pacific.txt b/src/timezone/tznames/Pacific.txt index 85c9991298..c86248bbc7 100644 --- a/src/timezone/tznames/Pacific.txt +++ b/src/timezone/tznames/Pacific.txt @@ -10,72 +10,48 @@ # CONFLICT! BST is not unique # Other timezones: # - BST: British Summer Time -BST 39600 # Bougainville Standard Time (Papua New Guinea) - # (Pacific/Bougainville) -CHADT 49500 D # Chatham Daylight Time (New Zealand) - # (Pacific/Chatham) -CHAST 45900 # Chatham Standard Time (New Zealand) - # (Pacific/Chatham) +BST 39600 # Bougainville Standard Time (Papua New Guinea) (obsolete) +CHADT 49500 D # Chatham Daylight Time (New Zealand) (obsolete) +CHAST 45900 # Chatham Standard Time (New Zealand) (obsolete) ChST 36000 # Chamorro Standard Time (lower case "h" is as in IANA database) # (Pacific/Guam) # (Pacific/Saipan) -CHUT 36000 # Chuuk Time - # (Pacific/Chuuk) -CKT Pacific/Rarotonga # Cook Islands Time - # (Pacific/Rarotonga) -EASST Pacific/Easter # Easter Island Summer Time - # (Pacific/Easter) +CHUT 36000 # Chuuk Time (obsolete) +CKT Pacific/Rarotonga # Cook Islands Time (obsolete) +EASST Pacific/Easter # Easter Island Summer Time (obsolete) # CONFLICT! EAST is not unique # Other timezones: # - EAST: East Australian Standard Time (Australia) -EAST Pacific/Easter # Easter Island Time (Chile) - # (Pacific/Easter) -FJST 46800 D # Fiji Summer Time (caution: this used to mean -46800) - # (Pacific/Fiji) -FJT 43200 # Fiji Time (caution: this used to mean -43200) - # (Pacific/Fiji) -GALT -21600 # Galapagos Time - # (Pacific/Galapagos) -GAMT -32400 # Gambier Time - # (Pacific/Gambier) -GILT 43200 # Gilbert Islands Time - # (Pacific/Tarawa) +EAST Pacific/Easter # Easter Island Time (Chile) (obsolete) +FJST 46800 D # Fiji Summer Time (caution: this used to mean -46800) (obsolete) +FJT 43200 # Fiji Time (caution: this used to mean -43200) (obsolete) +GALT -21600 # Galapagos Time (obsolete) +GAMT -32400 # Gambier Time (obsolete) +GILT 43200 # Gilbert Islands Time (obsolete) HST -36000 # Hawaiian Standard Time # (Pacific/Honolulu) # (Pacific/Johnston) -KOST Pacific/Kosrae # Kosrae Time - # (Pacific/Kosrae) -LINT Pacific/Kiritimati # Line Islands Time (Kiribati) - # (Pacific/Kiritimati) -MART -34200 # Marquesas Time - # (Pacific/Marquesas) -MHT 43200 # Kwajalein Time - # (Pacific/Kwajalein) - # (Pacific/Majuro) +KOST Pacific/Kosrae # Kosrae Time (obsolete) +LINT Pacific/Kiritimati # Line Islands Time (Kiribati) (obsolete) +MART -34200 # Marquesas Time (obsolete) +MHT 43200 # Kwajalein Time (obsolete) MPT 36000 # North Mariana Islands Time (not in IANA database) -NCT 39600 # New Caledonia Time - # (Pacific/Noumea) +NCT 39600 # New Caledonia Time (obsolete) # CONFLICT! NFT is not unique # Other timezones: # - NFT: Newfoundland Time (America) -NFT Pacific/Norfolk # Norfolk Time - # (Pacific/Norfolk) -NRT Pacific/Nauru # Nauru Time - # (Pacific/Nauru) -NUT Pacific/Niue # Niue Time - # (Pacific/Niue) +NFT Pacific/Norfolk # Norfolk Time (obsolete) +NRT Pacific/Nauru # Nauru Time (obsolete) +NUT Pacific/Niue # Niue Time (obsolete) NZDT 46800 D # New Zealand Daylight Time # (Antarctica/McMurdo) # (Pacific/Auckland) NZST 43200 # New Zealand Standard Time # (Antarctica/McMurdo) # (Pacific/Auckland) -PGT 36000 # Papua New Guinea Time - # (Pacific/Port_Moresby) -PHOT Pacific/Enderbury # Phoenix Islands Time (Kiribati) - # (Pacific/Enderbury) -PONT 39600 # Ponape Time (Micronesia) - # (Pacific/Ponape) +PGT 36000 # Papua New Guinea Time (obsolete) +PHOT Pacific/Enderbury # Phoenix Islands Time (Kiribati) (obsolete) +PONT 39600 # Ponape Time (Micronesia) (obsolete) PST -28800 # Pacific Standard Time # (America/Dawson) # (America/Los_Angeles) @@ -83,33 +59,21 @@ PST -28800 # Pacific Standard Time # (America/Vancouver) # (America/Whitehorse) # (Pacific/Pitcairn) -PWT 32400 # Palau Time - # (Pacific/Palau) -SBT 39600 # Solomon Islands Time - # (Pacific/Guadalcanal) +PWT 32400 # Palau Time (obsolete) +SBT 39600 # Solomon Islands Time (obsolete) SST -39600 # South Sumatran Time # (Pacific/Midway) # (Pacific/Pago_Pago) -TAHT -36000 # Tahiti Time (IANA database says "TAHT", other sources "THAT") - # (Pacific/Tahiti) -TKT Pacific/Fakaofo # Tokelau Time - # (Pacific/Fakaofo) -TOT 46800 # Tonga Time - # (Pacific/Tongatapu) -TRUT 36000 # Truk Time (IANA database used to say "TRUT", other sources say "TRUK") - # (Pacific/Truk) -TVT 43200 # Tuvalu Time - # (Pacific/Funafuti) -VUT 39600 # Vanuata Time - # (Pacific/Efate) -WAKT 43200 # Wake Time - # (Pacific/Wake) -WFT 43200 # Wallis and Futuna Time - # (Pacific/Wallis) -WSDT 50400 D # West Samoa Daylight Time - # (Pacific/Apia) -WSST 46800 # West Samoa Standard Time - # (Pacific/Apia) +TAHT -36000 # Tahiti Time (obsolete) +TKT Pacific/Fakaofo # Tokelau Time (obsolete) +TOT 46800 # Tonga Time (obsolete) +TRUT 36000 # Truk Time (obsolete) +TVT 43200 # Tuvalu Time (obsolete) +VUT 39600 # Vanuata Time (obsolete) +WAKT 43200 # Wake Time (obsolete) +WFT 43200 # Wallis and Futuna Time (obsolete) +WSDT 50400 D # West Samoa Daylight Time (obsolete) +WSST 46800 # West Samoa Standard Time (obsolete) # CONFLICT! WST is not unique # Other timezones: # - WST: Western Standard Time (Australia) diff --git a/src/timezone/tznames/README b/src/timezone/tznames/README index c80caa3786..0058770d19 100644 --- a/src/timezone/tznames/README +++ b/src/timezone/tznames/README @@ -29,6 +29,12 @@ see the `Australia' and `India' files. The files named Africa.txt, etc, are not intended to be used directly as time zone abbreviation files. They contain reference definitions of time zone abbreviations that can be copied into a custom abbreviation file as needed. -Note that these files (*.txt) are already a subset of the IANA timezone -database files: we tried to list only those time zone abbreviations that -(according to the IANA timezone database) appear to be still in use. +These files contain most of the time zone abbreviations that were shown +in the IANA timezone database circa 2010. + +However, it turns out that many of these abbreviations had simply been +invented by the IANA timezone group, and do not have currency in real-world +use. The IANA group have changed their policy about that, and now prefer to +use numeric UTC offsets whenever there's not an abbreviation with known +real-world popularity. A lot of these abbreviations therefore no longer +appear in the IANA data, and so are marked "obsolete" in these data files. diff --git a/src/timezone/zic.c b/src/timezone/zic.c index b546a17372..db119265c3 100644 --- a/src/timezone/zic.c +++ b/src/timezone/zic.c @@ -8,7 +8,7 @@ #include "postgres_fe.h" -#include +#include #include #include @@ -26,7 +26,7 @@ typedef int64 zic_t; #ifndef ZIC_MAX_ABBR_LEN_WO_WARN #define ZIC_MAX_ABBR_LEN_WO_WARN 6 -#endif /* !defined ZIC_MAX_ABBR_LEN_WO_WARN */ +#endif /* !defined ZIC_MAX_ABBR_LEN_WO_WARN */ #ifndef WIN32 #ifdef S_IRUSR @@ -35,11 +35,27 @@ typedef int64 zic_t; #define MKDIR_UMASK 0755 #endif #endif +#ifndef AT_SYMLINK_FOLLOW +#define linkat(fromdir, from, todir, to, flag) \ + (itssymlink(from) ? (errno = ENOTSUP, -1) : link(from, to)) +#endif + +/* The maximum ptrdiff_t value, for pre-C99 platforms. */ +#ifndef PTRDIFF_MAX +static ptrdiff_t const PTRDIFF_MAX = MAXVAL(ptrdiff_t, TYPE_BIT(ptrdiff_t)); +#endif + +/* + * The type for line numbers. In Postgres, use %d to format them; upstream + * uses PRIdMAX but we prefer not to rely on that, not least because it + * results in platform-dependent strings to be translated. + */ +typedef int lineno_t; struct rule { const char *r_filename; - int r_linenum; + lineno_t r_linenum; const char *r_name; zic_t r_loyear; /* for example, 1986 */ @@ -61,7 +77,7 @@ struct rule zic_t r_stdoff; /* offset from standard time */ const char *r_abbrvar; /* variable part of abbreviation */ - int r_todo; /* a rule to do (used in outzone) */ + bool r_todo; /* a rule to do (used in outzone) */ zic_t r_temp; /* used in outzone */ }; @@ -69,14 +85,14 @@ struct rule * r_dycode r_dayofmonth r_wday */ -#define DC_DOM 0 /* 1..31 */ /* unused */ -#define DC_DOWGEQ 1 /* 1..31 */ /* 0..6 (Sun..Sat) */ -#define DC_DOWLEQ 2 /* 1..31 */ /* 0..6 (Sun..Sat) */ +#define DC_DOM 0 /* 1..31 */ /* unused */ +#define DC_DOWGEQ 1 /* 1..31 */ /* 0..6 (Sun..Sat) */ +#define DC_DOWLEQ 2 /* 1..31 */ /* 0..6 (Sun..Sat) */ struct zone { const char *z_filename; - int z_linenum; + lineno_t z_linenum; const char *z_name; zic_t z_gmtoff; @@ -87,7 +103,7 @@ struct zone zic_t z_stdoff; struct rule *z_rules; - int z_nrules; + ptrdiff_t z_nrules; struct rule z_untilrule; zic_t z_untiltime; @@ -105,7 +121,7 @@ static int addtype(zic_t, char const *, bool, bool, bool); static void leapadd(zic_t, bool, int, int); static void adjleap(void); static void associate(void); -static void dolink(const char *fromfield, const char *tofield); +static void dolink(const char *, const char *, bool); static char **getfields(char *buf); static zic_t gethms(const char *string, const char *errstring, bool); @@ -116,26 +132,36 @@ static void inrule(char **fields, int nfields); static bool inzcont(char **fields, int nfields); static bool inzone(char **fields, int nfields); static bool inzsub(char **, int, bool); -static int itsdir(const char *name); +static bool itsdir(char const *); +static bool itssymlink(char const *); static bool is_alpha(char a); static char lowerit(char); -static bool mkdirs(char *); +static void mkdirs(char const *, bool); static void newabbr(const char *abbr); static zic_t oadd(zic_t t1, zic_t t2); -static void outzone(const struct zone * zp, int ntzones); -static zic_t rpytime(const struct rule * rp, zic_t wantedy); -static void rulesub(struct rule * rp, +static void outzone(const struct zone *zp, ptrdiff_t ntzones); +static zic_t rpytime(const struct rule *rp, zic_t wantedy); +static void rulesub(struct rule *rp, const char *loyearp, const char *hiyearp, const char *typep, const char *monthp, const char *dayp, const char *timep); static zic_t tadd(zic_t t1, zic_t t2); -static bool yearistype(int year, const char *type); +static bool yearistype(zic_t year, const char *type); /* Bound on length of what %z can expand to. */ enum { PERCENT_Z_LEN_BOUND = sizeof "+995959" - 1}; +/* If true, work around a bug in Qt 5.6.1 and earlier, which mishandles + tz binary files whose POSIX-TZ-style strings contain '<'; see + QTBUG-53071 . This + workaround will no longer be needed when Qt 5.6.1 and earlier are + obsolete, say in the year 2021. */ +enum +{ +WORK_AROUND_QTBUG_53071 = true}; + static int charcnt; static bool errors; static bool warnings; @@ -144,7 +170,7 @@ static int leapcnt; static bool leapseen; static zic_t leapminyear; static zic_t leapmaxyear; -static int linenum; +static lineno_t linenum; static int max_abbrvar_len = PERCENT_Z_LEN_BOUND; static int max_format_len; static zic_t max_year; @@ -153,10 +179,10 @@ static bool noise; static bool print_abbrevs; static zic_t print_cutoff; static const char *rfilename; -static int rlinenum; +static lineno_t rlinenum; static const char *progname; -static int timecnt; -static int timecnt_alloc; +static ptrdiff_t timecnt; +static ptrdiff_t timecnt_alloc; static int typecnt; /* @@ -241,24 +267,24 @@ static int typecnt; #define YR_ONLY 2 static struct rule *rules; -static int nrules; /* number of rules */ -static int nrules_alloc; +static ptrdiff_t nrules; /* number of rules */ +static ptrdiff_t nrules_alloc; static struct zone *zones; -static int nzones; /* number of zones */ -static int nzones_alloc; +static ptrdiff_t nzones; /* number of zones */ +static ptrdiff_t nzones_alloc; struct link { const char *l_filename; - int l_linenum; + lineno_t l_linenum; const char *l_from; const char *l_to; }; static struct link *links; -static int nlinks; -static int nlinks_alloc; +static ptrdiff_t nlinks; +static ptrdiff_t nlinks_alloc; struct lookup { @@ -267,12 +293,15 @@ struct lookup }; static struct lookup const *byword(const char *string, - const struct lookup * lp); + const struct lookup *lp); -static struct lookup const line_codes[] = { +static struct lookup const zi_line_codes[] = { {"Rule", LC_RULE}, {"Zone", LC_ZONE}, {"Link", LC_LINK}, + {NULL, 0} +}; +static struct lookup const leap_line_codes[] = { {"Leap", LC_LEAP}, {NULL, 0} }; @@ -346,8 +375,9 @@ static const int len_years[2] = { static struct attype { zic_t at; + bool dontmerge; unsigned char type; -} *attypes; +} *attypes; static zic_t gmtoffs[TZ_MAX_TYPES]; static char isdsts[TZ_MAX_TYPES]; static unsigned char abbrinds[TZ_MAX_TYPES]; @@ -398,23 +428,24 @@ erealloc(void *ptr, size_t size) } static char * -ecpyalloc(char const * str) +ecpyalloc(char const *str) { return memcheck(strdup(str)); } static void * -growalloc(void *ptr, size_t itemsize, int nitems, int *nitems_alloc) +growalloc(void *ptr, size_t itemsize, ptrdiff_t nitems, ptrdiff_t *nitems_alloc) { if (nitems < *nitems_alloc) return ptr; else { - int amax = INT_MAX < SIZE_MAX ? INT_MAX : SIZE_MAX; + ptrdiff_t nitems_max = PTRDIFF_MAX - WORK_AROUND_QTBUG_53071; + ptrdiff_t amax = nitems_max < SIZE_MAX ? nitems_max : SIZE_MAX; if ((amax - 1) / 3 * 2 < *nitems_alloc) - memory_exhausted(_("int overflow")); - *nitems_alloc = *nitems_alloc + (*nitems_alloc >> 1) + 1; + memory_exhausted(_("integer overflow")); + *nitems_alloc += (*nitems_alloc >> 1) + 1; return erealloc(ptr, size_product(*nitems_alloc, itemsize)); } } @@ -424,7 +455,7 @@ growalloc(void *ptr, size_t itemsize, int nitems, int *nitems_alloc) */ static void -eats(const char *name, int num, const char *rname, int rnum) +eats(char const *name, lineno_t num, char const *rname, lineno_t rnum) { filename = name; linenum = num; @@ -433,7 +464,7 @@ eats(const char *name, int num, const char *rname, int rnum) } static void -eat(const char *name, int num) +eat(char const *name, lineno_t num) { eats(name, num, NULL, -1); } @@ -478,17 +509,17 @@ warning(const char *string,...) } static void -close_file(FILE *stream, char const * name) +close_file(FILE *stream, char const *dir, char const *name) { char const *e = (ferror(stream) ? _("I/O error") : fclose(stream) != 0 ? strerror(errno) : NULL); if (e) { - fprintf(stderr, "%s: ", progname); - if (name) - fprintf(stderr, "%s: ", name); - fprintf(stderr, "%s\n", e); + fprintf(stderr, "%s: %s%s%s%s%s\n", progname, + dir ? dir : "", dir ? "/" : "", + name ? name : "", name ? ": " : "", + e); exit(EXIT_FAILURE); } } @@ -503,10 +534,34 @@ usage(FILE *stream, int status) "Report bugs to %s.\n"), progname, progname, PACKAGE_BUGREPORT); if (status == EXIT_SUCCESS) - close_file(stream, NULL); + close_file(stream, NULL, NULL); exit(status); } +/* Change the working directory to DIR, possibly creating DIR and its + ancestors. After this is done, all files are accessed with names + relative to DIR. */ +static void +change_directory(char const *dir) +{ + if (chdir(dir) != 0) + { + int chdir_errno = errno; + + if (chdir_errno == ENOENT) + { + mkdirs(dir, false); + chdir_errno = chdir(dir) == 0 ? 0 : errno; + } + if (chdir_errno != 0) + { + fprintf(stderr, _("%s: Can't chdir to %s: %s\n"), + progname, dir, strerror(chdir_errno)); + exit(EXIT_FAILURE); + } + } +} + static const char *psxrules; static const char *lcltime; static const char *directory; @@ -514,15 +569,16 @@ static const char *leapsec; static const char *yitcommand; int -main(int argc, char *argv[]) +main(int argc, char **argv) { - int i; - int j; - int c; + int c, + k; + ptrdiff_t i, + j; #ifndef WIN32 umask(umask(S_IWGRP | S_IWOTH) | (S_IWGRP | S_IWOTH)); -#endif /* !WIN32 */ +#endif progname = argv[0]; if (TYPE_BIT(zic_t) <64) { @@ -530,14 +586,14 @@ main(int argc, char *argv[]) _("wild compilation-time specification of zic_t")); return EXIT_FAILURE; } - for (i = 1; i < argc; ++i) - if (strcmp(argv[i], "--version") == 0) + for (k = 1; k < argc; k++) + if (strcmp(argv[k], "--version") == 0) { printf("zic %s\n", PG_VERSION); - close_file(stdout, NULL); + close_file(stdout, NULL, NULL); return EXIT_SUCCESS; } - else if (strcmp(argv[i], "--help") == 0) + else if (strcmp(argv[k], "--help") == 0) { usage(stdout, EXIT_SUCCESS); } @@ -581,7 +637,10 @@ main(int argc, char *argv[]) break; case 'y': if (yitcommand == NULL) + { + warning(_("-y is obsolescent")); yitcommand = strdup(optarg); + } else { fprintf(stderr, @@ -625,11 +684,12 @@ main(int argc, char *argv[]) adjleap(); } - for (i = optind; i < argc; ++i) - infile(argv[i]); + for (k = optind; k < argc; k++) + infile(argv[k]); if (errors) return EXIT_FAILURE; associate(); + change_directory(directory); for (i = 0; i < nzones; i = j) { /* @@ -646,7 +706,7 @@ main(int argc, char *argv[]) for (i = 0; i < nlinks; ++i) { eat(links[i].l_filename, links[i].l_linenum); - dolink(links[i].l_from, links[i].l_to); + dolink(links[i].l_from, links[i].l_to, false); if (noise) for (j = 0; j < nlinks; ++j) if (strcmp(links[i].l_to, @@ -656,12 +716,12 @@ main(int argc, char *argv[]) if (lcltime != NULL) { eat(_("command line"), 1); - dolink(lcltime, TZDEFAULT); + dolink(lcltime, TZDEFAULT, true); } if (psxrules != NULL) { eat(_("command line"), 1); - dolink(psxrules, TZDEFRULES); + dolink(psxrules, TZDEFRULES, true); } if (warnings && (ferror(stderr) || fclose(stderr) != 0)) return EXIT_FAILURE; @@ -669,13 +729,13 @@ main(int argc, char *argv[]) } static bool -componentcheck(char const * name, char const * component, - char const * component_end) +componentcheck(char const *name, char const *component, + char const *component_end) { enum { component_len_max = 14}; - size_t component_len = component_end - component; + ptrdiff_t component_len = component_end - component; if (component_len == 0) { @@ -693,8 +753,10 @@ componentcheck(char const * name, char const * component, if (0 < component_len && component_len <= 2 && component[0] == '.' && component_end[-1] == '.') { + int len = component_len; + error(_("file name '%s' contains '%.*s' component"), - name, (int) component_len, component); + name, len, component); return false; } if (noise) @@ -751,131 +813,160 @@ namecheck(const char *name) return componentcheck(name, component, cp); } +/* + * Create symlink contents suitable for symlinking FROM to TO, as a + * freshly allocated string. FROM should be a relative file name, and + * is relative to the global variable DIRECTORY. TO can be either + * relative or absolute. + */ +#ifdef HAVE_SYMLINK static char * -relname(char const * dir, char const * base) +relname(char const *from, char const *to) +{ + size_t i, + taillen, + dotdotetcsize; + size_t dir_len = 0, + dotdots = 0, + linksize = SIZE_MAX; + char const *f = from; + char *result = NULL; + + if (*to == '/') + { + /* Make F absolute too. */ + size_t len = strlen(directory); + bool needslash = len && directory[len - 1] != '/'; + + linksize = len + needslash + strlen(from) + 1; + f = result = emalloc(linksize); + strcpy(result, directory); + result[len] = '/'; + strcpy(result + len + needslash, from); + } + for (i = 0; f[i] && f[i] == to[i]; i++) + if (f[i] == '/') + dir_len = i + 1; + for (; to[i]; i++) + dotdots += to[i] == '/' && to[i - 1] != '/'; + taillen = strlen(f + dir_len); + dotdotetcsize = 3 * dotdots + taillen + 1; + if (dotdotetcsize <= linksize) + { + if (!result) + result = emalloc(dotdotetcsize); + for (i = 0; i < dotdots; i++) + memcpy(result + 3 * i, "../", 3); + memmove(result + 3 * dotdots, f + dir_len, taillen + 1); + } + return result; +} +#endif /* HAVE_SYMLINK */ + +/* Hard link FROM to TO, following any symbolic links. + Return 0 if successful, an error number otherwise. */ +static int +hardlinkerr(char const *from, char const *to) { - if (*base == '/') - return ecpyalloc(base); - else - { - size_t dir_len = strlen(dir); - bool needs_slash = dir_len && dir[dir_len - 1] != '/'; - char *result = emalloc(dir_len + needs_slash + strlen(base) + 1); + int r = linkat(AT_FDCWD, from, AT_FDCWD, to, AT_SYMLINK_FOLLOW); - result[dir_len] = '/'; - strcpy(result + dir_len + needs_slash, base); - return memcpy(result, dir, dir_len); - } + return r == 0 ? 0 : errno; } static void -dolink(char const * fromfield, char const * tofield) +dolink(char const *fromfield, char const *tofield, bool staysymlink) { - char *fromname; - char *toname; - int fromisdir; - - fromname = relname(directory, fromfield); - toname = relname(directory, tofield); + bool todirs_made = false; + int link_errno; /* * We get to be careful here since there's a fair chance of root running * us. */ - fromisdir = itsdir(fromname); - if (fromisdir) + if (itsdir(fromfield)) + { + fprintf(stderr, _("%s: link from %s/%s failed: %s\n"), + progname, directory, fromfield, strerror(EPERM)); + exit(EXIT_FAILURE); + } + if (staysymlink) + staysymlink = itssymlink(tofield); + if (remove(tofield) == 0) + todirs_made = true; + else if (errno != ENOENT) { - char const *e = strerror(fromisdir < 0 ? errno : EPERM); + char const *e = strerror(errno); - fprintf(stderr, _("%s: link from %s failed: %s"), - progname, fromname, e); + fprintf(stderr, _("%s: Can't remove %s/%s: %s\n"), + progname, directory, tofield, e); exit(EXIT_FAILURE); } - if (link(fromname, toname) != 0) + link_errno = staysymlink ? ENOTSUP : hardlinkerr(fromfield, tofield); + if (link_errno == ENOENT && !todirs_made) { - int link_errno = errno; - bool retry_if_link_supported = false; + mkdirs(tofield, true); + todirs_made = true; + link_errno = hardlinkerr(fromfield, tofield); + } + if (link_errno != 0) + { +#ifdef HAVE_SYMLINK + bool absolute = *fromfield == '/'; + char *linkalloc = absolute ? NULL : relname(fromfield, tofield); + char const *contents = absolute ? fromfield : linkalloc; + int symlink_errno = symlink(contents, tofield) == 0 ? 0 : errno; - if (link_errno == ENOENT || link_errno == ENOTSUP) + if (symlink_errno == ENOENT && !todirs_made) { - if (!mkdirs(toname)) - exit(EXIT_FAILURE); - retry_if_link_supported = true; + mkdirs(tofield, true); + symlink_errno = symlink(contents, tofield) == 0 ? 0 : errno; } - if ((link_errno == EEXIST || link_errno == ENOTSUP) - && itsdir(toname) == 0 - && (remove(toname) == 0 || errno == ENOENT)) - retry_if_link_supported = true; - if (retry_if_link_supported && link_errno != ENOTSUP) - link_errno = link(fromname, toname) == 0 ? 0 : errno; - if (link_errno != 0) + free(linkalloc); + if (symlink_errno == 0) { -#ifdef HAVE_SYMLINK - const char *s = fromfield; - const char *t; - char *p; - size_t dotdots = 0; - char *symlinkcontents; - int symlink_result; - - do - t = s; - while ((s = strchr(s, '/')) - && strncmp(fromfield, tofield, ++s - fromfield) == 0); - - for (s = tofield + (t - fromfield); *s; s++) - dotdots += *s == '/'; - symlinkcontents = emalloc(3 * dotdots + strlen(t) + 1); - for (p = symlinkcontents; dotdots-- != 0; p += 3) - memcpy(p, "../", 3); - strcpy(p, t); - symlink_result = symlink(symlinkcontents, toname); - free(symlinkcontents); - if (symlink_result == 0) + if (link_errno != ENOTSUP) + warning(_("symbolic link used because hard link failed: %s"), + strerror(link_errno)); + } + else +#endif /* HAVE_SYMLINK */ + { + FILE *fp, + *tp; + int c; + + fp = fopen(fromfield, "rb"); + if (!fp) { - if (link_errno != ENOTSUP) - warning(_("symbolic link used because hard link failed: %s"), - strerror(link_errno)); + char const *e = strerror(errno); + + fprintf(stderr, _("%s: Can't read %s/%s: %s\n"), + progname, directory, fromfield, e); + exit(EXIT_FAILURE); } - else -#endif /* HAVE_SYMLINK */ + tp = fopen(tofield, "wb"); + if (!tp) { - FILE *fp, - *tp; - int c; - - fp = fopen(fromname, "rb"); - if (!fp) - { - const char *e = strerror(errno); - - fprintf(stderr, - _("%s: Can't read %s: %s\n"), - progname, fromname, e); - exit(EXIT_FAILURE); - } - tp = fopen(toname, "wb"); - if (!tp) - { - const char *e = strerror(errno); + char const *e = strerror(errno); - fprintf(stderr, - _("%s: Can't create %s: %s\n"), - progname, toname, e); - exit(EXIT_FAILURE); - } - while ((c = getc(fp)) != EOF) - putc(c, tp); - close_file(fp, fromname); - close_file(tp, toname); - if (link_errno != ENOTSUP) - warning(_("copy used because hard link failed: %s"), - strerror(link_errno)); + fprintf(stderr, _("%s: Can't create %s/%s: %s\n"), + progname, directory, tofield, e); + exit(EXIT_FAILURE); } + while ((c = getc(fp)) != EOF) + putc(c, tp); + close_file(fp, directory, fromfield); + close_file(tp, directory, tofield); + if (link_errno != ENOTSUP) + warning(_("copy used because hard link failed: %s"), + strerror(link_errno)); +#ifdef HAVE_SYMLINK + else if (symlink_errno != ENOTSUP) + warning(_("copy used because symbolic link failed: %s"), + strerror(symlink_errno)); +#endif } } - free(fromname); - free(toname); } #define TIME_T_BITS_IN_FILE 64 @@ -888,10 +979,6 @@ static zic_t const max_time = MAXVAL(zic_t, TIME_T_BITS_IN_FILE); * rounded downward to the negation of a power of two that is * comfortably outside the error bounds. * - * zic does not output time stamps before this, partly because they - * are physically suspect, and partly because GNOME mishandles them; see - * GNOME bug 730332 . - * * For the time of the Big Bang, see: * * Ade PAR, Aghanim N, Armitage-Caplan C et al. Planck 2013 results. @@ -913,28 +1000,58 @@ static zic_t const max_time = MAXVAL(zic_t, TIME_T_BITS_IN_FILE); #define BIG_BANG (- (((zic_t) 1) << 59)) #endif -static const zic_t big_bang_time = BIG_BANG; +/* If true, work around GNOME bug 730332 + + by refusing to output time stamps before BIG_BANG. + Such time stamps are physically suspect anyway. -/* Return 1 if NAME is a directory, 0 if it's something else, -1 if trouble. */ -static int -itsdir(char const * name) + The GNOME bug is scheduled to be fixed in GNOME 3.22, and if so + this workaround will no longer be needed when GNOME 3.21 and + earlier are obsolete, say in the year 2021. */ +enum +{ +WORK_AROUND_GNOME_BUG_730332 = true}; + +static const zic_t early_time = (WORK_AROUND_GNOME_BUG_730332 + ? BIG_BANG + : MINVAL(zic_t, TIME_T_BITS_IN_FILE)); + +/* Return true if NAME is a directory. */ +static bool +itsdir(char const *name) { struct stat st; int res = stat(name, &st); - #ifdef S_ISDIR if (res == 0) return S_ISDIR(st.st_mode) != 0; #endif if (res == 0 || errno == EOVERFLOW) { - char *nameslashdot = relname(name, "."); - bool dir = stat(nameslashdot, &st) == 0 || errno == EOVERFLOW; + size_t n = strlen(name); + char *nameslashdot = emalloc(n + 3); + bool dir; + memcpy(nameslashdot, name, n); + strcpy(&nameslashdot[n], &"/."[!(n && name[n - 1] != '/')]); + dir = stat(nameslashdot, &st) == 0 || errno == EOVERFLOW; free(nameslashdot); return dir; } - return -1; + return false; +} + +/* Return true if NAME is a symbolic link. */ +static bool +itssymlink(char const *name) +{ +#ifdef HAVE_SYMLINK + char c; + + return 0 <= readlink(name, &c, 1); +#else + return false; +#endif } /* @@ -957,10 +1074,10 @@ associate(void) { struct zone *zp; struct rule *rp; - int base, + ptrdiff_t i, + j, + base, out; - int i, - j; if (nrules != 0) { @@ -1047,7 +1164,7 @@ infile(const char *name) const struct lookup *lp; int nfields; bool wantcont; - int num; + lineno_t num; char buf[BUFSIZ]; if (strcmp(name, "-") == 0) @@ -1094,11 +1211,14 @@ infile(const char *name) wantcont = inzcont(fields, nfields); else { + struct lookup const *line_codes + = name == leapsec ? leap_line_codes : zi_line_codes; + lp = byword(fields[0], line_codes); if (lp == NULL) error(_("input line of unknown type")); else - switch ((int) (lp->l_value)) + switch (lp->l_value) { case LC_RULE: inrule(fields, nfields); @@ -1112,12 +1232,7 @@ infile(const char *name) wantcont = false; break; case LC_LEAP: - if (name != leapsec) - warning(_("%s: Leap line in non leap" - " seconds file %s"), - progname, name); - else - inleap(fields, nfields); + inleap(fields, nfields); wantcont = false; break; default: /* "cannot happen" */ @@ -1129,7 +1244,7 @@ infile(const char *name) } free(fields); } - close_file(fp, filename); + close_file(fp, NULL, filename); if (wantcont) error(_("expected continuation line not found")); } @@ -1142,7 +1257,7 @@ infile(const char *name) * Call error with errstring and return zero on errors. */ static zic_t -gethms(char const * string, char const * errstring, bool signable) +gethms(char const *string, char const *errstring, bool signable) { /* PG: make hh be int not zic_t to avoid sscanf portability issues */ int hh; @@ -1225,7 +1340,7 @@ inrule(char **fields, int nfields) static bool inzone(char **fields, int nfields) { - int i; + ptrdiff_t i; if (nfields < ZONE_MINFIELDS || nfields > ZONE_MAXFIELDS) { @@ -1250,8 +1365,8 @@ inzone(char **fields, int nfields) if (zones[i].z_name != NULL && strcmp(zones[i].z_name, fields[ZF_NAME]) == 0) { - error( - _("duplicate zone name %s (file \"%s\", line %d)"), + error(_("duplicate zone name %s" + " (file \"%s\", line %d)"), fields[ZF_NAME], zones[i].z_filename, zones[i].z_linenum); @@ -1313,7 +1428,7 @@ inzsub(char **fields, int nfields, bool iscont) z.z_filename = filename; z.z_linenum = linenum; z.z_gmtoff = gethms(fields[i_gmtoff], _("invalid UT offset"), true); - if ((cp = strchr(fields[i_format], '%')) != 0) + if ((cp = strchr(fields[i_format], '%')) != NULL) { if ((*++cp != 's' && *cp != 'z') || strchr(cp, '%') || strchr(fields[i_format], '/')) @@ -1375,7 +1490,7 @@ inleap(char **fields, int nfields) { const char *cp; const struct lookup *lp; - int i, + zic_t i, j; /* PG: make year be int not zic_t to avoid sscanf portability issues */ @@ -1465,21 +1580,11 @@ inleap(char **fields, int nfields) positive = false; count = 1; } - else if (strcmp(cp, "--") == 0) - { - positive = false; - count = 2; - } else if (strcmp(cp, "+") == 0) { positive = true; count = 1; } - else if (strcmp(cp, "++") == 0) - { - positive = true; - count = 2; - } else { error(_("illegal CORRECTION field on Leap line")); @@ -1491,9 +1596,9 @@ inleap(char **fields, int nfields) return; } t = tadd(t, tod); - if (t < big_bang_time) + if (t < 0) { - error(_("leap second precedes Big Bang")); + error(_("leap second precedes Epoch")); return; } leapadd(t, positive, lp->l_value, count); @@ -1526,7 +1631,7 @@ inlink(char **fields, int nfields) } static void -rulesub(struct rule * rp, const char *loyearp, const char *hiyearp, +rulesub(struct rule *rp, const char *loyearp, const char *hiyearp, const char *typep, const char *monthp, const char *dayp, const char *timep) { @@ -1582,7 +1687,7 @@ rulesub(struct rule * rp, const char *loyearp, const char *hiyearp, lp = byword(cp, begin_years); rp->r_lowasnum = lp == NULL; if (!rp->r_lowasnum) - switch ((int) lp->l_value) + switch (lp->l_value) { case YR_MINIMUM: rp->r_loyear = ZIC_MIN; @@ -1607,7 +1712,7 @@ rulesub(struct rule * rp, const char *loyearp, const char *hiyearp, lp = byword(cp, end_years); rp->r_hiwasnum = lp == NULL; if (!rp->r_hiwasnum) - switch ((int) lp->l_value) + switch (lp->l_value) { case YR_MINIMUM: rp->r_hiyear = ZIC_MIN; @@ -1645,11 +1750,14 @@ rulesub(struct rule * rp, const char *loyearp, const char *hiyearp, error(_("typed single year")); return; } + warning(_("year type \"%s\" is obsolete; use \"-\" instead"), + typep); rp->r_yrtype = ecpyalloc(typep); } /* - * Day work. Accept things such as: 1 last-Sunday Sun<=20 Sun>=7 + * Day work. Accept things such as: 1 lastSunday last-Sunday + * (undocumented; warn about this) Sun<=20 Sun>=7 */ dp = ecpyalloc(dayp); if ((lp = byword(dp, lasts)) != NULL) @@ -1757,18 +1865,21 @@ static void writezone(const char *const name, const char *const string, char version) { FILE *fp; - int i, + ptrdiff_t i, j; int leapcnt32, leapi32; - int timecnt32, + ptrdiff_t timecnt32, timei32; int pass; - char *fullname; static const struct tzhead tzh0; static struct tzhead tzh; - zic_t *ats = emalloc(size_product(timecnt, sizeof *ats + 1)); - void *typesptr = ats + timecnt; + bool dir_checked = false; + zic_t one = 1; + zic_t y2038_boundary = one << 31; + ptrdiff_t nats = timecnt + WORK_AROUND_QTBUG_53071; + zic_t *ats = emalloc(size_product(nats, sizeof *ats + 1)); + void *typesptr = ats + nats; unsigned char *types = typesptr; /* @@ -1781,12 +1892,12 @@ writezone(const char *const name, const char *const string, char version) * Optimize. */ { - int fromi; - int toi; + ptrdiff_t fromi, + toi; toi = 0; fromi = 0; - while (fromi < timecnt && attypes[fromi].at < big_bang_time) + while (fromi < timecnt && attypes[fromi].at < early_time) ++fromi; for (; fromi < timecnt; ++fromi) { @@ -1799,15 +1910,24 @@ writezone(const char *const name, const char *const string, char version) attypes[fromi].type; continue; } - if (toi == 0 || - attypes[toi - 1].type != attypes[fromi].type) + if (toi == 0 + || attypes[fromi].dontmerge + || attypes[toi - 1].type != attypes[fromi].type) attypes[toi++] = attypes[fromi]; } timecnt = toi; } + if (noise && timecnt > 1200) - warning(_("pre-2014 clients may mishandle" - " more than 1200 transition times")); + { + if (timecnt > TZ_MAX_TIMES) + warning(_("reference clients mishandle" + " more than %d transition times"), + TZ_MAX_TIMES); + else + warning(_("pre-2014 clients may mishandle" + " more than 1200 transition times")); + } /* * Transfer. @@ -1818,6 +1938,20 @@ writezone(const char *const name, const char *const string, char version) types[i] = attypes[i].type; } + /* + * Work around QTBUG-53071 for time stamps less than y2038_boundary - 1, + * by inserting a no-op transition at time y2038_boundary - 1. This works + * only for timestamps before the boundary, which should be good enough in + * practice as QTBUG-53071 should be long-dead by 2038. + */ + if (WORK_AROUND_QTBUG_53071 && timecnt != 0 + && ats[timecnt - 1] < y2038_boundary - 1 && strchr(string, '<')) + { + ats[timecnt] = y2038_boundary - 1; + types[timecnt] = types[timecnt - 1]; + timecnt++; + } + /* * Correct for leap seconds. */ @@ -1862,51 +1996,59 @@ writezone(const char *const name, const char *const string, char version) --leapcnt32; ++leapi32; } - fullname = relname(directory, name); /* * Remove old file, if any, to snap links. */ - if (itsdir(fullname) == 0 && remove(fullname) != 0 && errno != ENOENT) + if (remove(name) == 0) + dir_checked = true; + else if (errno != ENOENT) { const char *e = strerror(errno); - fprintf(stderr, _("%s: Cannot remove %s: %s\n"), - progname, fullname, e); + fprintf(stderr, _("%s: Cannot remove %s/%s: %s\n"), + progname, directory, name, e); exit(EXIT_FAILURE); } - if ((fp = fopen(fullname, "wb")) == NULL) + fp = fopen(name, "wb"); + if (!fp) { - if (!mkdirs(fullname)) - exit(EXIT_FAILURE); - if ((fp = fopen(fullname, "wb")) == NULL) - { - const char *e = strerror(errno); + int fopen_errno = errno; - fprintf(stderr, _("%s: Cannot create %s: %s\n"), - progname, fullname, e); + if (fopen_errno == ENOENT && !dir_checked) + { + mkdirs(name, true); + fp = fopen(name, "wb"); + fopen_errno = errno; + } + if (!fp) + { + fprintf(stderr, _("%s: Cannot create %s/%s: %s\n"), + progname, directory, name, strerror(fopen_errno)); exit(EXIT_FAILURE); } } for (pass = 1; pass <= 2; ++pass) { - int thistimei, - thistimecnt; + ptrdiff_t thistimei, + thistimecnt, + thistimelim; int thisleapi, - thisleapcnt; - int thistimelim, + thisleapcnt, thisleaplim; int writetype[TZ_MAX_TYPES]; int typemap[TZ_MAX_TYPES]; int thistypecnt; char thischars[TZ_MAX_CHARS]; - char thischarcnt; + int thischarcnt; + bool toomanytimes; int indmap[TZ_MAX_CHARS]; if (pass == 1) { thistimei = timei32; thistimecnt = timecnt32; + toomanytimes = thistimecnt >> 31 >> 1 != 0; thisleapi = leapi32; thisleapcnt = leapcnt32; } @@ -1914,9 +2056,12 @@ writezone(const char *const name, const char *const string, char version) { thistimei = 0; thistimecnt = timecnt; + toomanytimes = thistimecnt >> 31 >> 31 >> 2 != 0; thisleapi = 0; thisleapcnt = leapcnt; } + if (toomanytimes) + error(_("too many transition times")); thistimelim = thistimei + thistimecnt; thisleaplim = thisleapi + thisleapcnt; for (i = 0; i < typecnt; ++i) @@ -1995,7 +2140,7 @@ writezone(const char *const name, const char *const string, char version) writetype[type] = true; } } -#endif /* !defined +#endif /* !defined * LEAVE_SOME_PRE_2011_SYSTEMS_IN_THE_LURCH */ thistypecnt = 0; for (i = 0; i < typecnt; ++i) @@ -2017,8 +2162,7 @@ writezone(const char *const name, const char *const string, char version) break; if (j == thischarcnt) { - strcpy(&thischars[(int) thischarcnt], - thisabbr); + strcpy(&thischars[thischarcnt], thisabbr); thischarcnt += strlen(thisabbr) + 1; } indmap[abbrinds[i]] = j; @@ -2130,9 +2274,8 @@ writezone(const char *const name, const char *const string, char version) putc(ttisgmts[i], fp); } fprintf(fp, "\n%s\n", string); - close_file(fp, fullname); + close_file(fp, directory, name); free(ats); - free(fullname); } static char const * @@ -2180,7 +2323,7 @@ abbroffset(char *buf, zic_t offset) } static size_t -doabbr(char *abbr, struct zone const * zp, char const * letters, +doabbr(char *abbr, struct zone const *zp, char const *letters, zic_t stdoff, bool doquotes) { char *cp; @@ -2266,7 +2409,7 @@ stringoffset(char *result, zic_t offset) } static int -stringrule(char *result, const struct rule * const rp, const zic_t dstoff, +stringrule(char *result, const struct rule *const rp, const zic_t dstoff, const zic_t gmtoff) { zic_t tod = rp->r_tod; @@ -2348,7 +2491,7 @@ stringrule(char *result, const struct rule * const rp, const zic_t dstoff, } static int -rule_cmp(struct rule const * a, struct rule const * b) +rule_cmp(struct rule const *a, struct rule const *b) { if (!a) return -!!b; @@ -2366,13 +2509,13 @@ enum YEAR_BY_YEAR_ZONE = 1}; static int -stringzone(char *result, const struct zone * const zpfirst, const int zonecount) +stringzone(char *result, struct zone const *zpfirst, ptrdiff_t zonecount) { const struct zone *zp; struct rule *rp; struct rule *stdrp; struct rule *dstrp; - int i; + ptrdiff_t i; const char *abbrvar; int compat = 0; int c; @@ -2501,11 +2644,11 @@ stringzone(char *result, const struct zone * const zpfirst, const int zonecount) } static void -outzone(const struct zone * zpfirst, int zonecount) +outzone(const struct zone *zpfirst, ptrdiff_t zonecount) { const struct zone *zp; struct rule *rp; - int i, + ptrdiff_t i, j; bool usestart, useuntil; @@ -2527,6 +2670,10 @@ outzone(const struct zone * zpfirst, int zonecount) int compat; bool do_extend; char version; + ptrdiff_t lastatmax = -1; + zic_t one = 1; + zic_t y2038_boundary = one << 31; + zic_t max_year0; max_abbr_len = 2 + max_format_len + max_abbrvar_len; max_envvar_len = 2 * max_abbr_len + 5 * 9; @@ -2636,12 +2783,13 @@ outzone(const struct zone * zpfirst, int zonecount) } /* - * For the benefit of older systems, generate data from 1900 through 2037. + * For the benefit of older systems, generate data from 1900 through 2038. */ if (min_year > 1900) min_year = 1900; - if (max_year < 2037) - max_year = 2037; + max_year0 = max_year; + if (max_year < 2038) + max_year = 2038; for (i = 0; i < zonecount; ++i) { /* @@ -2649,9 +2797,9 @@ outzone(const struct zone * zpfirst, int zonecount) */ stdoff = 0; zp = &zpfirst[i]; - usestart = i > 0 && (zp - 1)->z_untiltime > big_bang_time; + usestart = i > 0 && (zp - 1)->z_untiltime > early_time; useuntil = i < (zonecount - 1); - if (useuntil && zp->z_untiltime <= big_bang_time) + if (useuntil && zp->z_untiltime <= early_time) continue; gmtoff = zp->z_gmtoff; eat(zp->z_filename, zp->z_linenum); @@ -2670,7 +2818,7 @@ outzone(const struct zone * zpfirst, int zonecount) usestart = false; } else - addtt(big_bang_time, type); + addtt(early_time, type); } else for (year = min_year; year <= max_year; ++year) @@ -2691,15 +2839,21 @@ outzone(const struct zone * zpfirst, int zonecount) year <= rp->r_hiyear && yearistype(year, rp->r_yrtype); if (rp->r_todo) + { rp->r_temp = rpytime(rp, year); + rp->r_todo + = (rp->r_temp < y2038_boundary + || year <= max_year0); + } } for (;;) { - int k; + ptrdiff_t k; zic_t jtime, - ktime = 0; + ktime; zic_t offset; + INITIALIZE(ktime); if (useuntil) { /* @@ -2776,7 +2930,8 @@ outzone(const struct zone * zpfirst, int zonecount) continue; } if (*startbuf == '\0' && - startoff == oadd(zp->z_gmtoff, stdoff)) + startoff == oadd(zp->z_gmtoff, + stdoff)) { doabbr(startbuf, zp, @@ -2792,6 +2947,10 @@ outzone(const struct zone * zpfirst, int zonecount) offset = oadd(zp->z_gmtoff, rp->r_stdoff); type = addtype(offset, ab, rp->r_stdoff != 0, rp->r_todisstd, rp->r_todisgmt); + if (rp->r_hiyear == ZIC_MAX + && !(0 <= lastatmax + && ktime < attypes[lastatmax].at)) + lastatmax = timecnt; addtt(ktime, type); } } @@ -2827,6 +2986,8 @@ outzone(const struct zone * zpfirst, int zonecount) starttime = tadd(starttime, -gmtoff); } } + if (0 <= lastatmax) + attypes[lastatmax].dontmerge = true; if (do_extend) { /* @@ -2850,22 +3011,8 @@ outzone(const struct zone * zpfirst, int zonecount) lastat = &attypes[i]; if (lastat->at < rpytime(&xr, max_year - 1)) { - /* - * Create new type code for the redundant entry, to prevent it - * being optimized away. - */ - if (typecnt >= TZ_MAX_TYPES) - { - error(_("too many local time types")); - exit(EXIT_FAILURE); - } - gmtoffs[typecnt] = gmtoffs[lastat->type]; - isdsts[typecnt] = isdsts[lastat->type]; - ttisstds[typecnt] = ttisstds[lastat->type]; - ttisgmts[typecnt] = ttisgmts[lastat->type]; - abbrinds[typecnt] = abbrinds[lastat->type]; - ++typecnt; addtt(rpytime(&xr, max_year + 1), typecnt - 1); + attypes[timecnt - 1].dontmerge = true; } } writezone(zpfirst->z_name, envvar, version); @@ -2877,8 +3024,8 @@ outzone(const struct zone * zpfirst, int zonecount) static void addtt(zic_t starttime, int type) { - if (starttime <= big_bang_time || - (timecnt == 1 && attypes[0].at < big_bang_time)) + if (starttime <= early_time + || (timecnt == 1 && attypes[0].at < early_time)) { gmtoffs[0] = gmtoffs[type]; isdsts[0] = isdsts[type]; @@ -2894,12 +3041,13 @@ addtt(zic_t starttime, int type) } attypes = growalloc(attypes, sizeof *attypes, timecnt, &timecnt_alloc); attypes[timecnt].at = starttime; + attypes[timecnt].dontmerge = false; attypes[timecnt].type = type; ++timecnt; } static int -addtype(zic_t gmtoff, char const * abbr, bool isdst, bool ttisstd, bool ttisgmt) +addtype(zic_t gmtoff, char const *abbr, bool isdst, bool ttisstd, bool ttisgmt) { int i, j; @@ -2958,14 +3106,7 @@ leapadd(zic_t t, bool positive, int rolling, int count) } for (i = 0; i < leapcnt; ++i) if (t <= trans[i]) - { - if (t == trans[i]) - { - error(_("repeated leap second moment")); - exit(EXIT_FAILURE); - } break; - } do { for (j = leapcnt; j > i; --j) @@ -2986,44 +3127,73 @@ adjleap(void) { int i; zic_t last = 0; + zic_t prevtrans = 0; /* * propagate leap seconds forward */ for (i = 0; i < leapcnt; ++i) { + if (trans[i] - prevtrans < 28 * SECSPERDAY) + { + error(_("Leap seconds too close together")); + exit(EXIT_FAILURE); + } + prevtrans = trans[i]; trans[i] = tadd(trans[i], last); last = corr[i] += last; } } +static char * +shellquote(char *b, char const *s) +{ + *b++ = '\''; + while (*s) + { + if (*s == '\'') + *b++ = '\'', *b++ = '\\', *b++ = '\''; + *b++ = *s++; + } + *b++ = '\''; + return b; +} + static bool -yearistype(int year, const char *type) +yearistype(zic_t year, const char *type) { - static char *buf; + char *buf; + char *b; int result; if (type == NULL || *type == '\0') return true; - buf = erealloc(buf, 132 + strlen(yitcommand) + strlen(type)); - sprintf(buf, "%s %d %s", yitcommand, year, type); + buf = emalloc(1 + 4 * strlen(yitcommand) + 2 + + INT_STRLEN_MAXIMUM(zic_t) +2 + 4 * strlen(type) + 2); + b = shellquote(buf, yitcommand); + *b++ = ' '; + b += sprintf(b, INT64_FORMAT, year); + *b++ = ' '; + b = shellquote(b, type); + *b = '\0'; result = system(buf); if (WIFEXITED(result)) - switch (WEXITSTATUS(result)) + { + int status = WEXITSTATUS(result); + + if (status <= 1) { - case 0: - return true; - case 1: - return false; + free(buf); + return status == 0; } + } error(_("Wild result from command execution")); fprintf(stderr, _("%s: command was '%s', result was %d\n"), progname, buf, result); - for (;;) - exit(EXIT_FAILURE); + exit(EXIT_FAILURE); } -/* Is A a space character in the C locale? */ +/* Is A a space character in the C locale? */ static bool is_space(char a) { @@ -3194,8 +3364,21 @@ itsabbr(const char *abbr, const char *word) return true; } +/* Return true if ABBR is an initial prefix of WORD, ignoring ASCII case. */ + +static bool +ciprefix(char const *abbr, char const *word) +{ + do + if (!*abbr) + return true; + while (lowerit(*abbr++) == lowerit(*word++)); + + return false; +} + static const struct lookup * -byword(const char *word, const struct lookup * table) +byword(const char *word, const struct lookup *table) { const struct lookup *foundlp; const struct lookup *lp; @@ -3203,6 +3386,23 @@ byword(const char *word, const struct lookup * table) if (word == NULL || table == NULL) return NULL; + /* + * If TABLE is LASTS and the word starts with "last" followed by a + * non-'-', skip the "last" and look in WDAY_NAMES instead. Warn about any + * usage of the undocumented prefix "last-". + */ + if (table == lasts && ciprefix("last", word) && word[4]) + { + if (word[4] == '-') + warning(_("\"%s\" is undocumented; use \"last%s\" instead"), + word, word + 5); + else + { + word += 4; + table = wday_names; + } + } + /* * Look for exact match. */ @@ -3215,13 +3415,31 @@ byword(const char *word, const struct lookup * table) */ foundlp = NULL; for (lp = table; lp->l_word != NULL; ++lp) - if (itsabbr(word, lp->l_word)) + if (ciprefix(word, lp->l_word)) { if (foundlp == NULL) foundlp = lp; else return NULL; /* multiple inexact matches */ } + + /* Warn about any backward-compatibility issue with pre-2017c zic. */ + if (foundlp) + { + bool pre_2017c_match = false; + + for (lp = table; lp->l_word; lp++) + if (itsabbr(word, lp->l_word)) + { + if (pre_2017c_match) + { + warning(_("\"%s\" is ambiguous in pre-2017c zic"), word); + break; + } + pre_2017c_match = true; + } + } + return foundlp; } @@ -3254,7 +3472,7 @@ getfields(char *cp) else { error(_("Odd number of quotation marks")); - exit(1); + exit(EXIT_FAILURE); } } while (*cp && *cp != '#' && !is_space(*cp)); if (is_space(*cp)) @@ -3310,7 +3528,7 @@ tadd(zic_t t1, zic_t t2) */ static zic_t -rpytime(const struct rule * rp, zic_t wantedy) +rpytime(const struct rule *rp, zic_t wantedy) { int m, i; @@ -3402,7 +3620,7 @@ will not work with pre-2004 versions of zic")); return min_time; if (dayoff > max_time / SECSPERDAY) return max_time; - t = (zic_t) dayoff *SECSPERDAY; + t = (zic_t) dayoff * SECSPERDAY; return tadd(t, rp->r_tod); } @@ -3441,53 +3659,61 @@ newabbr(const char *string) charcnt += i; } -static bool -mkdirs(char *argname) +/* Ensure that the directories of ARGNAME exist, by making any missing + ones. If ANCESTORS, do this only for ARGNAME's ancestors; otherwise, + do it for ARGNAME too. Exit with failure if there is trouble. + Do not consider an existing non-directory to be trouble. */ +static void +mkdirs(char const *argname, bool ancestors) { char *name; char *cp; - if (argname == NULL || *argname == '\0') - return true; cp = name = ecpyalloc(argname); - while ((cp = strchr(cp + 1, '/')) != NULL) - { - *cp = '\0'; -#ifdef WIN32 - /* - * DOS drive specifier? - */ - if (is_alpha(name[0]) && name[1] == ':' && name[2] == '\0') - { - *cp = '/'; - continue; - } -#endif /* WIN32 */ + /* + * On MS-Windows systems, do not worry about drive letters or backslashes, + * as this should suffice in practice. Time zone names do not use drive + * letters and backslashes. If the -d option of zic does not name an + * already-existing directory, it can use slashes to separate the + * already-existing ancestor prefix from the to-be-created subdirectories. + */ + + /* Do not mkdir a root directory, as it must exist. */ + while (*cp == '/') + cp++; + + while (cp && ((cp = strchr(cp, '/')) || !ancestors)) + { + if (cp) + *cp = '\0'; /* * Try to create it. It's OK if creation fails because the directory * already exists, perhaps because some other process just created it. + * For simplicity do not check first whether it already exists, as + * that is checked anyway if the mkdir fails. */ if (mkdir(name, MKDIR_UMASK) != 0) { + /* + * For speed, skip itsdir if errno == EEXIST. Since mkdirs is + * called only after open fails with ENOENT on a subfile, EEXIST + * implies itsdir here. + */ int err = errno; - if (itsdir(name) <= 0) + if (err != EEXIST && !itsdir(name)) { - char const *e = strerror(err); - - warning(_("%s: Can't create directory" - " %s: %s"), - progname, name, e); - free(name); - return false; + error(_("%s: Cannot create directory %s: %s"), + progname, name, strerror(err)); + exit(EXIT_FAILURE); } } - *cp = '/'; + if (cp) + *cp++ = '/'; } free(name); - return true; } diff --git a/src/tools/findoidjoins/Makefile b/src/tools/findoidjoins/Makefile index b1785ced6b..a067b33af2 100644 --- a/src/tools/findoidjoins/Makefile +++ b/src/tools/findoidjoins/Makefile @@ -13,13 +13,14 @@ top_builddir = ../../.. include $(top_builddir)/src/Makefile.global override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS) +override LDFLAGS := $(libpq_pgport) $(LDFLAGS) OBJS= findoidjoins.o all: findoidjoins findoidjoins: findoidjoins.o | submake-libpq submake-libpgport - $(CC) $(CFLAGS) findoidjoins.o $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + $(CC) $(CFLAGS) findoidjoins.o $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) clean distclean maintainer-clean: rm -f findoidjoins$(X) $(OBJS) diff --git a/src/tools/msvc/Install.pm b/src/tools/msvc/Install.pm index e04efe6559..afb1b770e7 100644 --- a/src/tools/msvc/Install.pm +++ b/src/tools/msvc/Install.pm @@ -380,13 +380,20 @@ sub GenerateTimezoneFiles my $conf = shift; my $mf = read_file("src/timezone/Makefile"); $mf =~ s{\\\r?\n}{}g; + $mf =~ /^TZDATA\s*:?=\s*(.*)$/m || die "Could not find TZDATA line in timezone makefile\n"; my @tzfiles = split /\s+/, $1; + $mf =~ /^POSIXRULES\s*:?=\s*(.*)$/m + || die "Could not find POSIXRULES line in timezone makefile\n"; + my $posixrules = $1; + $posixrules =~ s/\s+//g; + print "Generating timezone files..."; - my @args = ("$conf/zic/zic", '-d', "$target/share/timezone"); + my @args = ("$conf/zic/zic", '-d', "$target/share/timezone", + '-p', "$posixrules"); foreach (@tzfiles) { my $tzfile = $_; diff --git a/src/tools/msvc/MSBuildProject.pm b/src/tools/msvc/MSBuildProject.pm index d7638b458e..7a287bd0bd 100644 --- a/src/tools/msvc/MSBuildProject.pm +++ b/src/tools/msvc/MSBuildProject.pm @@ -63,21 +63,16 @@ EOF EOF - # We have to use this flag on 32 bit targets because the 32bit perls - # are built with it and sometimes crash if we don't. - my $use_32bit_time_t = - $self->{platform} eq 'Win32' ? '_USE_32BIT_TIME_T;' : ''; - $self->WriteItemDefinitionGroup( $f, 'Debug', - { defs => "_DEBUG;DEBUG=1;$use_32bit_time_t", + { defs => "_DEBUG;DEBUG=1", opt => 'Disabled', strpool => 'false', runtime => 'MultiThreadedDebugDLL' }); $self->WriteItemDefinitionGroup( $f, 'Release', - { defs => "$use_32bit_time_t", + { defs => "", opt => 'Full', strpool => 'true', runtime => 'MultiThreadedDLL' }); @@ -488,4 +483,27 @@ sub new return $self; } +package VC2017Project; + +# +# Package that encapsulates a Visual C++ 2017 project file +# + +use strict; +use warnings; +use base qw(VC2012Project); + +sub new +{ + my $classname = shift; + my $self = $classname->SUPER::_new(@_); + bless($self, $classname); + + $self->{vcver} = '15.00'; + $self->{PlatformToolset} = 'v141'; + $self->{ToolsVersion} = '15.0'; + + return $self; +} + 1; diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm index fe905d3c9d..31a8294d30 100644 --- a/src/tools/msvc/Mkvcbuild.pm +++ b/src/tools/msvc/Mkvcbuild.pm @@ -194,20 +194,24 @@ sub mkvcbuild if ($solution->{options}->{tcl}) { + my $found = 0; my $pltcl = $solution->AddProject('pltcl', 'dll', 'PLs', 'src/pl/tcl'); $pltcl->AddIncludeDir($solution->{options}->{tcl} . '/include'); $pltcl->AddReference($postgres); - if (-e $solution->{options}->{tcl} . '/lib/tcl85.lib') - { - $pltcl->AddLibrary( - $solution->{options}->{tcl} . '/lib/tcl85.lib'); - } - else + + for my $tclver (qw(86t 86 85 84)) { - $pltcl->AddLibrary( - $solution->{options}->{tcl} . '/lib/tcl84.lib'); + my $tcllib = $solution->{options}->{tcl} . "/lib/tcl$tclver.lib"; + if (-e $tcllib) + { + $pltcl->AddLibrary($tcllib); + $found = 1; + last; + } } + die "Unable to find $solution->{options}->{tcl}/lib/tcl.lib" + unless $found; } $libpq = $solution->AddProject('libpq', 'dll', 'interfaces', @@ -512,7 +516,39 @@ sub mkvcbuild my $plperl = $solution->AddProject('plperl', 'dll', 'PLs', 'src/pl/plperl'); $plperl->AddIncludeDir($solution->{options}->{perl} . '/lib/CORE'); - $plperl->AddDefine('PLPERL_HAVE_UID_GID'); + + # Add defines from Perl's ccflags; see PGAC_CHECK_PERL_EMBED_CCFLAGS + my @perl_embed_ccflags; + foreach my $f (split(" ",$Config{ccflags})) + { + if ($f =~ /^-D[^_]/ || + $f =~ /^-D_USE_32BIT_TIME_T/) + { + $f =~ s/\-D//; + push(@perl_embed_ccflags, $f); + } + } + + # Perl versions before 5.13.4 don't provide -D_USE_32BIT_TIME_T + # regardless of how they were built. On 32-bit Windows, assume + # such a version was built with a pre-MSVC-2005 compiler, and + # define the symbol anyway, so that we are compatible if we're + # being built with a later MSVC version. + push(@perl_embed_ccflags, '_USE_32BIT_TIME_T') + if $solution->{platform} eq 'Win32' + && $Config{PERL_REVISION} == 5 + && ($Config{PERL_VERSION} < 13 + || ( $Config{PERL_VERSION} == 13 + && $Config{PERL_SUBVERSION} < 4)); + + # Also, a hack to prevent duplicate definitions of uid_t/gid_t + push(@perl_embed_ccflags, 'PLPERL_HAVE_UID_GID'); + + foreach my $f (@perl_embed_ccflags) + { + $plperl->AddDefine($f); + } + foreach my $xs ('SPI.xs', 'Util.xs') { (my $xsc = $xs) =~ s/\.xs/.c/; @@ -595,7 +631,11 @@ sub mkvcbuild 'hstore_plperl', 'contrib/hstore_plperl', 'plperl', 'src/pl/plperl', 'hstore', 'contrib/hstore'); - $hstore_plperl->AddDefine('PLPERL_HAVE_UID_GID'); + + foreach my $f (@perl_embed_ccflags) + { + $hstore_plperl->AddDefine($f); + } } $mf = diff --git a/src/tools/msvc/Project.pm b/src/tools/msvc/Project.pm index a4eb653c26..faf1a683f6 100644 --- a/src/tools/msvc/Project.pm +++ b/src/tools/msvc/Project.pm @@ -256,7 +256,7 @@ sub AddDir # Match rules that pull in source files from different directories, eg # pgstrcasecmp.c rint.c snprintf.c: % : $(top_srcdir)/src/port/% my $replace_re = - qr{^([^:\n\$]+\.c)\s*:\s*(?:%\s*: )?\$(\([^\)]+\))\/(.*)\/[^\/]+$}m; + qr{^([^:\n\$]+\.c)\s*:\s*(?:%\s*: )?\$(\([^\)]+\))\/(.*)\/[^\/]+\n}m; while ($mf =~ m{$replace_re}m) { my $match = $1; diff --git a/src/tools/msvc/README b/src/tools/msvc/README index b61ddb8791..48082cab90 100644 --- a/src/tools/msvc/README +++ b/src/tools/msvc/README @@ -4,7 +4,7 @@ MSVC build ========== This directory contains the tools required to build PostgreSQL using -Microsoft Visual Studio 2005 - 2011. This builds the whole backend, not just +Microsoft Visual Studio 2005 - 2017. This builds the whole backend, not just the libpq frontend library. For more information, see the documentation chapter "Installation on Windows" and the description below. @@ -92,11 +92,12 @@ These configuration arguments are passed over to Mkvcbuild::mkvcbuild (Mkvcbuild.pm) which creates the Visual Studio project and solution files. It does this by using VSObjectFactory::CreateSolution to create an object implementing the Solution interface (this could be either a VS2005Solution, -a VS2008Solution, a VS2010Solution or a VS2012Solution, all in Solution.pm, -depending on the user's build environment) and adding objects implementing -the corresponding Project interface (VC2005Project or VC2008Project from -VCBuildProject.pm or VC2010Project or VC2012Project from MSBuildProject.pm) -to it. +a VS2008Solution, a VS2010Solution or a VS2012Solution or a VS2013Solution, +or a VS2015Solution or a VS2017Solution, all in Solution.pm, depending on +the user's build environment) and adding objects implementing the corresponding +Project interface (VC2005Project or VC2008Project from VCBuildProject.pm or +VC2010Project or VC2012Project or VC2013Project or VC2015Project or VC2017Project +from MSBuildProject.pm) to it. When Solution::Save is called, the implementations of Solution and Project save their content in the appropriate format. The final step of starting the appropriate build program (msbuild or vcbuild) diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm index f07029bce1..a8fdc31530 100644 --- a/src/tools/msvc/Solution.pm +++ b/src/tools/msvc/Solution.pm @@ -419,7 +419,7 @@ s{PG_VERSION_STR "[^"]+"}{__STRINGIFY(x) #x\n#define __STRINGIFY2(z) __STRINGIFY || confess "Could not open ecpg_config.h"; print O < 1200) -#define HAVE_LONG_LONG_INT_64 +#define HAVE_LONG_LONG_INT_64 1 #define ENABLE_THREAD_SAFETY 1 EOF print O "#define USE_INTEGER_DATETIMES 1\n" @@ -523,10 +523,20 @@ sub AddProject if ($self->{options}->{openssl}) { $proj->AddIncludeDir($self->{options}->{openssl} . '\include'); - $proj->AddLibrary( - $self->{options}->{openssl} . '\lib\VC\ssleay32.lib', 1); - $proj->AddLibrary( - $self->{options}->{openssl} . '\lib\VC\libeay32.lib', 1); + if (-e "$self->{options}->{openssl}/lib/VC/ssleay32MD.lib") + { + $proj->AddLibrary( + $self->{options}->{openssl} . '\lib\VC\ssleay32.lib', 1); + $proj->AddLibrary( + $self->{options}->{openssl} . '\lib\VC\libeay32.lib', 1); + } + else + { + $proj->AddLibrary( + $self->{options}->{openssl} . '\lib\ssleay32.lib', 1); + $proj->AddLibrary( + $self->{options}->{openssl} . '\lib\libeay32.lib', 1); + } } if ($self->{options}->{nls}) { @@ -548,6 +558,7 @@ sub AddProject if ($self->{options}->{xml}) { $proj->AddIncludeDir($self->{options}->{xml} . '\include'); + $proj->AddIncludeDir($self->{options}->{xml} . '\include\libxml2'); $proj->AddLibrary($self->{options}->{xml} . '\lib\libxml2.lib'); } if ($self->{options}->{xslt}) @@ -816,6 +827,32 @@ sub new return $self; } +package VS2017Solution; + +# +# Package that encapsulates a Visual Studio 2017 solution file +# + +use Carp; +use strict; +use warnings; +use base qw(Solution); + +sub new +{ + my $classname = shift; + my $self = $classname->SUPER::_new(@_); + bless($self, $classname); + + $self->{solutionFileVersion} = '12.00'; + $self->{vcver} = '15.00'; + $self->{visualStudioName} = 'Visual Studio 2017'; + $self->{VisualStudioVersion} = '15.0.26730.3'; + $self->{MinimumVisualStudioVersion} = '10.0.40219.1'; + + return $self; +} + sub GetAdditionalHeaders { my ($self, $f) = @_; diff --git a/src/tools/msvc/VCBuildProject.pm b/src/tools/msvc/VCBuildProject.pm index a8d75d88f3..669ba1730b 100644 --- a/src/tools/msvc/VCBuildProject.pm +++ b/src/tools/msvc/VCBuildProject.pm @@ -33,15 +33,9 @@ sub WriteHeader EOF - # We have to use this flag on 32 bit targets because the 32bit perls - # are built with it and sometimes crash if we don't. - my $use_32bit_time_t = - $self->{platform} eq 'Win32' ? '_USE_32BIT_TIME_T;' : ''; - - $self->WriteConfiguration( $f, 'Debug', - { defs => "_DEBUG;DEBUG=1;$use_32bit_time_t", + { defs => "_DEBUG;DEBUG=1", wholeopt => 0, opt => 0, strpool => 'false', @@ -49,7 +43,7 @@ EOF $self->WriteConfiguration( $f, 'Release', - { defs => "$use_32bit_time_t", + { defs => "", wholeopt => 0, opt => 3, strpool => 'true', diff --git a/src/tools/msvc/VSObjectFactory.pm b/src/tools/msvc/VSObjectFactory.pm index 4190ada618..2f3480a1f6 100644 --- a/src/tools/msvc/VSObjectFactory.pm +++ b/src/tools/msvc/VSObjectFactory.pm @@ -53,8 +53,14 @@ sub CreateSolution { return new VS2015Solution(@_); } + # visual 2017 hasn't changed the nmake version to 15, so adjust the check to support it. + elsif (($visualStudioVersion ge '14.10') or ($visualStudioVersion eq '15.00')) + { + return new VS2017Solution(@_); + } else { + croak $visualStudioVersion; croak "The requested Visual Studio version is not supported."; } } @@ -92,8 +98,14 @@ sub CreateProject { return new VC2015Project(@_); } + # visual 2017 hasn't changed the nmake version to 15, so adjust the check to support it. + elsif (($visualStudioVersion ge '14.10') or ($visualStudioVersion eq '15.00')) + { + return new VC2017Project(@_); + } else { + croak $visualStudioVersion; croak "The requested Visual Studio version is not supported."; } } @@ -120,6 +132,7 @@ sub DetermineVisualStudioVersion sub _GetVisualStudioVersion { my ($major, $minor) = @_; + # visual 2017 hasn't changed the nmake version to 15, so still using the older version for comparison. if ($major > 14) { carp diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl index b4f946474f..1ec595af36 100644 --- a/src/tools/msvc/vcregress.pl +++ b/src/tools/msvc/vcregress.pl @@ -34,7 +34,7 @@ my $what = shift || ""; if ($what =~ -/^(check|installcheck|plcheck|contribcheck|modulescheck|ecpgcheck|isolationcheck|upgradecheck|bincheck|recoverycheck)$/i +/^(check|installcheck|plcheck|contribcheck|modulescheck|ecpgcheck|isolationcheck|upgradecheck|bincheck|recoverycheck|taptest)$/i ) { $what = uc $what; @@ -54,13 +54,6 @@ $ENV{PATH} = "$topdir/$Config/libpq;$ENV{PATH}"; -my $schedule = shift; -unless ($schedule) -{ - $schedule = "serial"; - $schedule = "parallel" if ($what eq 'CHECK' || $what =~ /PARALLEL/); -} - if ($ENV{PERL5LIB}) { $ENV{PERL5LIB} = "$topdir/src/tools/msvc;$ENV{PERL5LIB}"; @@ -90,13 +83,14 @@ ISOLATIONCHECK => \&isolationcheck, BINCHECK => \&bincheck, RECOVERYCHECK => \&recoverycheck, - UPGRADECHECK => \&upgradecheck,); + UPGRADECHECK => \&upgradecheck, + TAPTEST => \&taptest,); my $proc = $command{$what}; exit 3 unless $proc; -&$proc(); +&$proc(@ARGV); exit 0; @@ -104,6 +98,7 @@ sub installcheck { + my $schedule = shift || 'serial'; my @args = ( "../../../$Config/pg_regress/pg_regress", "--dlpath=.", @@ -119,6 +114,7 @@ sub installcheck sub check { + my $schedule = shift || 'parallel'; InstallTemp(); chdir "${topdir}/src/test/regress"; my @args = ( @@ -144,8 +140,8 @@ sub ecpgcheck exit $status if $status; InstallTemp(); chdir "$topdir/src/interfaces/ecpg/test"; - $schedule = "ecpg"; - my @args = ( + my $schedule = "ecpg"; + my @args = ( "../../../../$Config/pg_regress_ecpg/pg_regress_ecpg", "--bindir=", "--dbname=ecpg1_regression,ecpg2_regression", @@ -181,10 +177,19 @@ sub tap_check die "Tap tests not enabled in configuration" unless $config->{tap_tests}; + my @flags; + foreach my $arg (0 .. scalar(@_)) + { + next unless $_[$arg] =~ /^PROVE_FLAGS=(.*)/; + @flags = split(/\s+/, $1); + splice(@_,$arg,1); + last; + } + my $dir = shift; chdir $dir; - my @args = ("prove", "--verbose", "t/*.pl"); + my @args = ("prove", @flags, "t/*.pl"); # adjust the environment for just this test local %ENV = %ENV; @@ -218,6 +223,26 @@ sub bincheck exit $mstat if $mstat; } +sub taptest +{ + my $dir = shift; + my @args; + + if ($dir =~ /^PROVE_FLAGS=/) + { + push(@args, $dir); + $dir = shift; + } + + die "no tests found!" unless -d "$topdir/$dir/t"; + + push(@args,"$topdir/$dir"); + + InstallTemp(); + my $status = tap_check(@args); + exit $status if $status; +} + sub plcheck { chdir "../../pl"; @@ -515,7 +540,6 @@ sub fetchRegressOpts $m =~ s{\\\r?\n}{}g; if ($m =~ /^\s*REGRESS_OPTS\s*\+?=(.*)/m) { - # Substitute known Makefile variables, then ignore options that retain # an unhandled variable reference. Ignore anything that isn't an # option starting with "--". @@ -588,15 +612,18 @@ sub GetTests sub InstallTemp { - print "Setting up temp install\n\n"; - Install("$tmp_installdir", "all", $config); + unless ($ENV{NO_TEMP_INSTALL}) + { + print "Setting up temp install\n\n"; + Install("$tmp_installdir", "all", $config); + } $ENV{PATH} = "$tmp_installdir/bin;$ENV{PATH}"; } sub usage { print STDERR - "Usage: vcregress.pl [ ]\n\n", + "Usage: vcregress.pl [ ]\n\n", "Options for :\n", " bincheck run tests of utilities in src/bin/\n", " check deploy instance and run regression tests on it\n", @@ -607,9 +634,12 @@ sub usage " modulescheck run tests of modules in src/test/modules/\n", " plcheck run tests of PL languages\n", " recoverycheck run recovery test suite\n", + " taptest run an arbitrary TAP test set\n", " upgradecheck run tests of pg_upgrade\n", - "\nOptions for :\n", + "\nOptions for : (used by check and installcheck)\n", " serial serial mode\n", - " parallel parallel mode\n"; + " parallel parallel mode\n", + "\nOption for : for taptest\n", + " TEST_DIR (required) directory where tests reside\n"; exit(1); } diff --git a/src/tools/pgindent/README b/src/tools/pgindent/README index 8e91697bd1..8f86afc5c0 100644 --- a/src/tools/pgindent/README +++ b/src/tools/pgindent/README @@ -30,9 +30,9 @@ DOING THE INDENT RUN: 3) Download the latest typedef file from the buildfarm: - wget -O src/tools/pgindent/typedefs.list http://buildfarm.postgresql.org/cgi-bin/typedefs.pl + wget -O src/tools/pgindent/typedefs.list https://buildfarm.postgresql.org/cgi-bin/typedefs.pl - (See http://www.pgbuildfarm.org/cgi-bin/typedefs.pl?show_list for a full + (See https://www.pgbuildfarm.org/cgi-bin/typedefs.pl?show_list for a full list of typedef files, if you want to indent some back branch.) 4) Run pgindent on the C files: @@ -108,7 +108,7 @@ BSD indent We have standardized on NetBSD's indent, and renamed it pg_bsd_indent. We have fixed a few bugs which requre the NetBSD source to be patched with indent.bsd.patch patch. A fully patched version is available at -ftp://ftp.postgresql.org/pub/dev. +https://ftp.postgresql.org/pub/dev. GNU indent, version 2.2.6, has several problems, and is not recommended. These bugs become pretty major when you are doing >500k lines of code. diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent index 0d3859d029..85ce57079d 100755 --- a/src/tools/pgindent/pgindent +++ b/src/tools/pgindent/pgindent @@ -453,7 +453,7 @@ sub run_build chdir "$code_base/src/tools/pgindent"; my $typedefs_list_url = - "http://buildfarm.postgresql.org/cgi-bin/typedefs.pl"; + "https://buildfarm.postgresql.org/cgi-bin/typedefs.pl"; my $rv = getstore($typedefs_list_url, "tmp_typedefs.list"); @@ -463,7 +463,7 @@ sub run_build $ENV{PGTYPEDEFS} = abs_path('tmp_typedefs.list'); my $pg_bsd_indent_url = - "ftp://ftp.postgresql.org/pub/dev/pg_bsd_indent-" + "https://ftp.postgresql.org/pub/dev/pg_bsd_indent-" . $INDENT_VERSION . ".tar.gz";